@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.
Files changed (235) hide show
  1. package/LICENSE +663 -0
  2. package/README.md +15 -0
  3. package/dist/__tests__/context-manager.test.d.ts +6 -0
  4. package/dist/__tests__/context-manager.test.d.ts.map +1 -0
  5. package/dist/__tests__/context-manager.test.js +220 -0
  6. package/dist/__tests__/context-manager.test.js.map +1 -0
  7. package/dist/__tests__/governor.test.d.ts +6 -0
  8. package/dist/__tests__/governor.test.d.ts.map +1 -0
  9. package/dist/__tests__/governor.test.js +210 -0
  10. package/dist/__tests__/governor.test.js.map +1 -0
  11. package/dist/__tests__/model-router.test.d.ts +6 -0
  12. package/dist/__tests__/model-router.test.d.ts.map +1 -0
  13. package/dist/__tests__/model-router.test.js +329 -0
  14. package/dist/__tests__/model-router.test.js.map +1 -0
  15. package/dist/agent-logger.d.ts +384 -0
  16. package/dist/agent-logger.d.ts.map +1 -0
  17. package/dist/agent-logger.js +820 -0
  18. package/dist/agent-logger.js.map +1 -0
  19. package/dist/agent-loop.d.ts +163 -0
  20. package/dist/agent-loop.d.ts.map +1 -0
  21. package/dist/agent-loop.js +609 -0
  22. package/dist/agent-loop.js.map +1 -0
  23. package/dist/agent-modes.d.ts +85 -0
  24. package/dist/agent-modes.d.ts.map +1 -0
  25. package/dist/agent-modes.js +418 -0
  26. package/dist/agent-modes.js.map +1 -0
  27. package/dist/approval.d.ts +137 -0
  28. package/dist/approval.d.ts.map +1 -0
  29. package/dist/approval.js +299 -0
  30. package/dist/approval.js.map +1 -0
  31. package/dist/async-completion-queue.d.ts +56 -0
  32. package/dist/async-completion-queue.d.ts.map +1 -0
  33. package/dist/async-completion-queue.js +77 -0
  34. package/dist/async-completion-queue.js.map +1 -0
  35. package/dist/auto-fix.d.ts +174 -0
  36. package/dist/auto-fix.d.ts.map +1 -0
  37. package/dist/auto-fix.js +319 -0
  38. package/dist/auto-fix.js.map +1 -0
  39. package/dist/codebase-context.d.ts +396 -0
  40. package/dist/codebase-context.d.ts.map +1 -0
  41. package/dist/codebase-context.js +1260 -0
  42. package/dist/codebase-context.js.map +1 -0
  43. package/dist/conflict-resolver.d.ts +191 -0
  44. package/dist/conflict-resolver.d.ts.map +1 -0
  45. package/dist/conflict-resolver.js +524 -0
  46. package/dist/conflict-resolver.js.map +1 -0
  47. package/dist/constants.d.ts +52 -0
  48. package/dist/constants.d.ts.map +1 -0
  49. package/dist/constants.js +141 -0
  50. package/dist/constants.js.map +1 -0
  51. package/dist/context-budget.d.ts +435 -0
  52. package/dist/context-budget.d.ts.map +1 -0
  53. package/dist/context-budget.js +903 -0
  54. package/dist/context-budget.js.map +1 -0
  55. package/dist/context-compressor.d.ts +143 -0
  56. package/dist/context-compressor.d.ts.map +1 -0
  57. package/dist/context-compressor.js +511 -0
  58. package/dist/context-compressor.js.map +1 -0
  59. package/dist/context-manager.d.ts +112 -0
  60. package/dist/context-manager.d.ts.map +1 -0
  61. package/dist/context-manager.js +247 -0
  62. package/dist/context-manager.js.map +1 -0
  63. package/dist/continuous-reflection.d.ts +267 -0
  64. package/dist/continuous-reflection.d.ts.map +1 -0
  65. package/dist/continuous-reflection.js +338 -0
  66. package/dist/continuous-reflection.js.map +1 -0
  67. package/dist/cross-file-refactor.d.ts +352 -0
  68. package/dist/cross-file-refactor.d.ts.map +1 -0
  69. package/dist/cross-file-refactor.js +1544 -0
  70. package/dist/cross-file-refactor.js.map +1 -0
  71. package/dist/dag-orchestrator.d.ts +138 -0
  72. package/dist/dag-orchestrator.d.ts.map +1 -0
  73. package/dist/dag-orchestrator.js +379 -0
  74. package/dist/dag-orchestrator.js.map +1 -0
  75. package/dist/debate-orchestrator.d.ts +301 -0
  76. package/dist/debate-orchestrator.d.ts.map +1 -0
  77. package/dist/debate-orchestrator.js +719 -0
  78. package/dist/debate-orchestrator.js.map +1 -0
  79. package/dist/dependency-analyzer.d.ts +113 -0
  80. package/dist/dependency-analyzer.d.ts.map +1 -0
  81. package/dist/dependency-analyzer.js +444 -0
  82. package/dist/dependency-analyzer.js.map +1 -0
  83. package/dist/design-loop.d.ts +59 -0
  84. package/dist/design-loop.d.ts.map +1 -0
  85. package/dist/design-loop.js +344 -0
  86. package/dist/design-loop.js.map +1 -0
  87. package/dist/doc-intelligence.d.ts +383 -0
  88. package/dist/doc-intelligence.d.ts.map +1 -0
  89. package/dist/doc-intelligence.js +1307 -0
  90. package/dist/doc-intelligence.js.map +1 -0
  91. package/dist/dynamic-role-generator.d.ts +76 -0
  92. package/dist/dynamic-role-generator.d.ts.map +1 -0
  93. package/dist/dynamic-role-generator.js +194 -0
  94. package/dist/dynamic-role-generator.js.map +1 -0
  95. package/dist/errors.d.ts +69 -0
  96. package/dist/errors.d.ts.map +1 -0
  97. package/dist/errors.js +102 -0
  98. package/dist/errors.js.map +1 -0
  99. package/dist/event-bus.d.ts +159 -0
  100. package/dist/event-bus.d.ts.map +1 -0
  101. package/dist/event-bus.js +305 -0
  102. package/dist/event-bus.js.map +1 -0
  103. package/dist/execution-engine.d.ts +425 -0
  104. package/dist/execution-engine.d.ts.map +1 -0
  105. package/dist/execution-engine.js +1555 -0
  106. package/dist/execution-engine.js.map +1 -0
  107. package/dist/git-intelligence.d.ts +306 -0
  108. package/dist/git-intelligence.d.ts.map +1 -0
  109. package/dist/git-intelligence.js +1099 -0
  110. package/dist/git-intelligence.js.map +1 -0
  111. package/dist/governor.d.ts +77 -0
  112. package/dist/governor.d.ts.map +1 -0
  113. package/dist/governor.js +161 -0
  114. package/dist/governor.js.map +1 -0
  115. package/dist/hierarchical-planner.d.ts +313 -0
  116. package/dist/hierarchical-planner.d.ts.map +1 -0
  117. package/dist/hierarchical-planner.js +981 -0
  118. package/dist/hierarchical-planner.js.map +1 -0
  119. package/dist/index.d.ts +121 -0
  120. package/dist/index.d.ts.map +1 -0
  121. package/dist/index.js +123 -0
  122. package/dist/index.js.map +1 -0
  123. package/dist/intent-inference.d.ts +103 -0
  124. package/dist/intent-inference.d.ts.map +1 -0
  125. package/dist/intent-inference.js +605 -0
  126. package/dist/intent-inference.js.map +1 -0
  127. package/dist/interrupt-manager.d.ts +143 -0
  128. package/dist/interrupt-manager.d.ts.map +1 -0
  129. package/dist/interrupt-manager.js +196 -0
  130. package/dist/interrupt-manager.js.map +1 -0
  131. package/dist/kernel.d.ts +564 -0
  132. package/dist/kernel.d.ts.map +1 -0
  133. package/dist/kernel.js +1419 -0
  134. package/dist/kernel.js.map +1 -0
  135. package/dist/language-support.d.ts +232 -0
  136. package/dist/language-support.d.ts.map +1 -0
  137. package/dist/language-support.js +1134 -0
  138. package/dist/language-support.js.map +1 -0
  139. package/dist/llm-client.d.ts +82 -0
  140. package/dist/llm-client.d.ts.map +1 -0
  141. package/dist/llm-client.js +475 -0
  142. package/dist/llm-client.js.map +1 -0
  143. package/dist/mcp-client.d.ts +232 -0
  144. package/dist/mcp-client.d.ts.map +1 -0
  145. package/dist/mcp-client.js +718 -0
  146. package/dist/mcp-client.js.map +1 -0
  147. package/dist/memory-manager.d.ts +200 -0
  148. package/dist/memory-manager.d.ts.map +1 -0
  149. package/dist/memory-manager.js +568 -0
  150. package/dist/memory-manager.js.map +1 -0
  151. package/dist/memory.d.ts +87 -0
  152. package/dist/memory.d.ts.map +1 -0
  153. package/dist/memory.js +341 -0
  154. package/dist/memory.js.map +1 -0
  155. package/dist/model-router.d.ts +245 -0
  156. package/dist/model-router.d.ts.map +1 -0
  157. package/dist/model-router.js +632 -0
  158. package/dist/model-router.js.map +1 -0
  159. package/dist/parallel-executor.d.ts +125 -0
  160. package/dist/parallel-executor.d.ts.map +1 -0
  161. package/dist/parallel-executor.js +201 -0
  162. package/dist/parallel-executor.js.map +1 -0
  163. package/dist/perf-optimizer.d.ts +212 -0
  164. package/dist/perf-optimizer.d.ts.map +1 -0
  165. package/dist/perf-optimizer.js +721 -0
  166. package/dist/perf-optimizer.js.map +1 -0
  167. package/dist/persona.d.ts +305 -0
  168. package/dist/persona.d.ts.map +1 -0
  169. package/dist/persona.js +887 -0
  170. package/dist/persona.js.map +1 -0
  171. package/dist/planner.d.ts +70 -0
  172. package/dist/planner.d.ts.map +1 -0
  173. package/dist/planner.js +264 -0
  174. package/dist/planner.js.map +1 -0
  175. package/dist/qa-pipeline.d.ts +365 -0
  176. package/dist/qa-pipeline.d.ts.map +1 -0
  177. package/dist/qa-pipeline.js +1352 -0
  178. package/dist/qa-pipeline.js.map +1 -0
  179. package/dist/reasoning-adapter.d.ts +116 -0
  180. package/dist/reasoning-adapter.d.ts.map +1 -0
  181. package/dist/reasoning-adapter.js +187 -0
  182. package/dist/reasoning-adapter.js.map +1 -0
  183. package/dist/role-registry.d.ts +55 -0
  184. package/dist/role-registry.d.ts.map +1 -0
  185. package/dist/role-registry.js +192 -0
  186. package/dist/role-registry.js.map +1 -0
  187. package/dist/sandbox-tiers.d.ts +327 -0
  188. package/dist/sandbox-tiers.d.ts.map +1 -0
  189. package/dist/sandbox-tiers.js +928 -0
  190. package/dist/sandbox-tiers.js.map +1 -0
  191. package/dist/security-scanner.d.ts +222 -0
  192. package/dist/security-scanner.d.ts.map +1 -0
  193. package/dist/security-scanner.js +1129 -0
  194. package/dist/security-scanner.js.map +1 -0
  195. package/dist/security.d.ts +93 -0
  196. package/dist/security.d.ts.map +1 -0
  197. package/dist/security.js +393 -0
  198. package/dist/security.js.map +1 -0
  199. package/dist/self-reflection.d.ts +397 -0
  200. package/dist/self-reflection.d.ts.map +1 -0
  201. package/dist/self-reflection.js +908 -0
  202. package/dist/self-reflection.js.map +1 -0
  203. package/dist/session-persistence.d.ts +191 -0
  204. package/dist/session-persistence.d.ts.map +1 -0
  205. package/dist/session-persistence.js +395 -0
  206. package/dist/session-persistence.js.map +1 -0
  207. package/dist/speculative-executor.d.ts +210 -0
  208. package/dist/speculative-executor.d.ts.map +1 -0
  209. package/dist/speculative-executor.js +618 -0
  210. package/dist/speculative-executor.js.map +1 -0
  211. package/dist/state-machine.d.ts +289 -0
  212. package/dist/state-machine.d.ts.map +1 -0
  213. package/dist/state-machine.js +695 -0
  214. package/dist/state-machine.js.map +1 -0
  215. package/dist/sub-agent.d.ts +177 -0
  216. package/dist/sub-agent.d.ts.map +1 -0
  217. package/dist/sub-agent.js +303 -0
  218. package/dist/sub-agent.js.map +1 -0
  219. package/dist/system-prompt.d.ts +26 -0
  220. package/dist/system-prompt.d.ts.map +1 -0
  221. package/dist/system-prompt.js +84 -0
  222. package/dist/system-prompt.js.map +1 -0
  223. package/dist/test-intelligence.d.ts +439 -0
  224. package/dist/test-intelligence.d.ts.map +1 -0
  225. package/dist/test-intelligence.js +1165 -0
  226. package/dist/test-intelligence.js.map +1 -0
  227. package/dist/types.d.ts +632 -0
  228. package/dist/types.d.ts.map +1 -0
  229. package/dist/types.js +6 -0
  230. package/dist/types.js.map +1 -0
  231. package/dist/vector-index.d.ts +314 -0
  232. package/dist/vector-index.d.ts.map +1 -0
  233. package/dist/vector-index.js +618 -0
  234. package/dist/vector-index.js.map +1 -0
  235. 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