@yuaone/core 0.8.5 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -2
- package/dist/agent-loop.d.ts +8 -0
- package/dist/agent-loop.d.ts.map +1 -1
- package/dist/agent-loop.js +34 -0
- package/dist/agent-loop.js.map +1 -1
- package/dist/dag-orchestrator.d.ts +3 -0
- package/dist/dag-orchestrator.d.ts.map +1 -1
- package/dist/dag-orchestrator.js +1 -0
- package/dist/dag-orchestrator.js.map +1 -1
- package/dist/execution-engine.d.ts.map +1 -1
- package/dist/execution-engine.js +1 -0
- package/dist/execution-engine.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/language-detector.d.ts.map +1 -1
- package/dist/language-detector.js +43 -122
- package/dist/language-detector.js.map +1 -1
- package/dist/language-registry.d.ts +45 -0
- package/dist/language-registry.d.ts.map +1 -0
- package/dist/language-registry.js +893 -0
- package/dist/language-registry.js.map +1 -0
- package/dist/llm-client.d.ts +7 -0
- package/dist/llm-client.d.ts.map +1 -1
- package/dist/llm-client.js +58 -8
- package/dist/llm-client.js.map +1 -1
- package/dist/skill-loader.d.ts +9 -16
- package/dist/skill-loader.d.ts.map +1 -1
- package/dist/skill-loader.js +116 -52
- package/dist/skill-loader.js.map +1 -1
- package/dist/skill-mode-bridge.d.ts +17 -0
- package/dist/skill-mode-bridge.d.ts.map +1 -0
- package/dist/skill-mode-bridge.js +27 -0
- package/dist/skill-mode-bridge.js.map +1 -0
- package/dist/skills/code-review.md +58 -0
- package/dist/skills/debug.md +45 -0
- package/dist/skills/languages/bash.md +74 -0
- package/dist/skills/languages/c.md +76 -0
- package/dist/skills/languages/cpp.md +75 -0
- package/dist/skills/languages/csharp.md +77 -0
- package/dist/skills/languages/cuda.md +80 -0
- package/dist/skills/languages/dart.md +75 -0
- package/dist/skills/languages/docker.md +80 -0
- package/dist/skills/languages/elixir.md +80 -0
- package/dist/skills/languages/gdscript.md +80 -0
- package/dist/skills/languages/go.md +77 -0
- package/dist/skills/languages/haskell.md +80 -0
- package/dist/skills/languages/java.md +77 -0
- package/dist/skills/languages/javascript.md +73 -0
- package/dist/skills/languages/kotlin.md +75 -0
- package/dist/skills/languages/lua.md +79 -0
- package/dist/skills/languages/php.md +73 -0
- package/dist/skills/languages/python.md +89 -0
- package/dist/skills/languages/r.md +80 -0
- package/dist/skills/languages/react.md +86 -0
- package/dist/skills/languages/ruby.md +78 -0
- package/dist/skills/languages/rust.md +77 -0
- package/dist/skills/languages/solidity.md +81 -0
- package/dist/skills/languages/sql.md +74 -0
- package/dist/skills/languages/svelte.md +74 -0
- package/dist/skills/languages/swift.md +74 -0
- package/dist/skills/languages/terraform.md +80 -0
- package/dist/skills/languages/typescript.md +110 -0
- package/dist/skills/languages/verilog.md +80 -0
- package/dist/skills/languages/vue.md +73 -0
- package/dist/skills/plan.md +49 -0
- package/dist/skills/refactor.md +46 -0
- package/dist/skills/security-scan.md +59 -0
- package/dist/skills/test-driven.md +51 -0
- package/dist/strategy-selector.d.ts +11 -0
- package/dist/strategy-selector.d.ts.map +1 -0
- package/dist/strategy-selector.js +85 -0
- package/dist/strategy-selector.js.map +1 -0
- package/dist/sub-agent.d.ts +3 -0
- package/dist/sub-agent.d.ts.map +1 -1
- package/dist/sub-agent.js +10 -0
- package/dist/sub-agent.js.map +1 -1
- package/dist/system-prompt.d.ts +2 -0
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +469 -94
- package/dist/system-prompt.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @yuaone/core
|
|
2
2
|
|
|
3
|
-
Agent runtime for YUAN coding agent.
|
|
3
|
+
Agent runtime for YUAN coding agent — skills, strategies, multi-provider LLM, tool-use loop.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
npm install @yuaone/core
|
|
@@ -18,7 +18,7 @@ const loop = createAgentLoop({
|
|
|
18
18
|
workDir: process.cwd(),
|
|
19
19
|
});
|
|
20
20
|
|
|
21
|
-
for await (const event of loop.run("refactor auth.ts to async/await")) {
|
|
21
|
+
for await (const event of loop.run("refactor auth.ts to use async/await")) {
|
|
22
22
|
if (event.kind === "agent:token") process.stdout.write(event.content);
|
|
23
23
|
if (event.kind === "agent:completed") break;
|
|
24
24
|
}
|
|
@@ -38,6 +38,77 @@ for await (const event of loop.run("refactor auth.ts to async/await")) {
|
|
|
38
38
|
| `Governor` | Safety/security scanning before tool execution |
|
|
39
39
|
| `AutoFix` | Automatic lint/type error repair |
|
|
40
40
|
| `ContextManager` | Token budget management & compaction |
|
|
41
|
+
| `TaskClassifier` | Classifies task type for targeted system prompt injection |
|
|
42
|
+
| `StrategySelector` | Selects up to 3 execution strategies per task |
|
|
43
|
+
| `SkillLoader` | Loads & scores built-in and user skills |
|
|
44
|
+
| `DAGOrchestrator` | Parallel subagent execution with dependency graph |
|
|
45
|
+
|
|
46
|
+
## Skill System
|
|
47
|
+
|
|
48
|
+
YUAN bundles **35 skills** out of the box — 6 core skills and 29 language/domain skills.
|
|
49
|
+
|
|
50
|
+
### Core Skills
|
|
51
|
+
|
|
52
|
+
| Skill | Trigger | Description |
|
|
53
|
+
|-------|---------|-------------|
|
|
54
|
+
| `debug` | auto | Reproduce → Trace → Fix → Verify |
|
|
55
|
+
| `test-driven` | auto | Red → Green → Refactor |
|
|
56
|
+
| `code-review` | auto | CRITICAL / HIGH / MEDIUM / LOW severity |
|
|
57
|
+
| `security-scan` | auto | OWASP Top 10 pattern detection |
|
|
58
|
+
| `refactor` | auto | Impact radius + minimal change |
|
|
59
|
+
| `plan` | auto | Decompose → Sequence → Risk |
|
|
60
|
+
|
|
61
|
+
### Language Skills (29 languages)
|
|
62
|
+
|
|
63
|
+
| Group | Languages |
|
|
64
|
+
|-------|-----------|
|
|
65
|
+
| Web Frontend | TypeScript, JavaScript, React, Vue, Svelte |
|
|
66
|
+
| Web Backend | Python, Ruby, PHP, Java, Kotlin, Go, Elixir |
|
|
67
|
+
| Systems | Rust, C, C++, Haskell |
|
|
68
|
+
| Mobile | Swift, Dart (Flutter), Kotlin |
|
|
69
|
+
| Scripting | Bash, Lua, R |
|
|
70
|
+
| Data Science | Python, R, SQL |
|
|
71
|
+
| Database | SQL |
|
|
72
|
+
| DevOps | Docker, Terraform, Bash |
|
|
73
|
+
| Game Dev | GDScript (Godot), C++ |
|
|
74
|
+
| Blockchain | Solidity |
|
|
75
|
+
| Embedded/GPU | CUDA, Verilog |
|
|
76
|
+
| Functional | Haskell, Elixir |
|
|
77
|
+
|
|
78
|
+
Skills are stored in `dist/skills/` and loaded automatically. User skills: `~/.yuan/skills/`. Plugin skills: `node_modules/@yuaone/plugin-*`.
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
import { SkillLoader } from "@yuaone/core";
|
|
82
|
+
|
|
83
|
+
const loader = new SkillLoader();
|
|
84
|
+
const skills = await loader.loadAll();
|
|
85
|
+
const matched = loader.score(skills, { filePaths: ["src/auth.ts"] });
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Execution Strategies
|
|
89
|
+
|
|
90
|
+
The `StrategySelector` picks up to 3 strategies per task and injects them into the system prompt. Strategies propagate to parallel subagents automatically.
|
|
91
|
+
|
|
92
|
+
| Strategy | When applied |
|
|
93
|
+
|----------|-------------|
|
|
94
|
+
| Read Before Write | Always |
|
|
95
|
+
| Test-Driven | feature, debug, refactor, test |
|
|
96
|
+
| Trace First | debug, security, performance |
|
|
97
|
+
| Impact Radius | refactor, migration (DEEP/SUPERPOWER modes) |
|
|
98
|
+
| Pattern Match First | feature, test, documentation |
|
|
99
|
+
| Minimal Change | debug, config, infra (FAST/NORMAL modes) |
|
|
100
|
+
| Verify Before Done | feature, refactor, migration, test, deploy |
|
|
101
|
+
|
|
102
|
+
## Language Registry
|
|
103
|
+
|
|
104
|
+
All 67 supported languages are defined in a single SSOT (`language-registry.ts`). Language detection, system prompt verification, and skill file linking all derive from this registry.
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
import { LANGUAGE_REGISTRY, getLanguageByExtension } from "@yuaone/core";
|
|
108
|
+
|
|
109
|
+
const lang = getLanguageByExtension(".ts"); // { id: "typescript", name: "TypeScript", ... }
|
|
110
|
+
console.log(LANGUAGE_REGISTRY.length); // 67
|
|
111
|
+
```
|
|
41
112
|
|
|
42
113
|
## Events
|
|
43
114
|
|
package/dist/agent-loop.d.ts
CHANGED
|
@@ -143,6 +143,9 @@ export declare class AgentLoop extends EventEmitter {
|
|
|
143
143
|
private readonly enableBackgroundAgents;
|
|
144
144
|
private currentToolPlan;
|
|
145
145
|
private executedToolNames;
|
|
146
|
+
private currentTaskType;
|
|
147
|
+
private readonly strategySelector;
|
|
148
|
+
private activeStrategies;
|
|
146
149
|
/** Context Budget: max 3 active skills at once */
|
|
147
150
|
private activeSkillIds;
|
|
148
151
|
private static readonly MAX_ACTIVE_SKILLS;
|
|
@@ -198,6 +201,11 @@ export declare class AgentLoop extends EventEmitter {
|
|
|
198
201
|
* Idempotent: subsequent calls are no-ops.
|
|
199
202
|
*/
|
|
200
203
|
private slowInit;
|
|
204
|
+
/**
|
|
205
|
+
* MemoryManager.learnings에서 경험 힌트를 추출한다.
|
|
206
|
+
* confidence >= 0.4인 학습만, 최대 8개, "[category] content" 형식으로 반환.
|
|
207
|
+
*/
|
|
208
|
+
private buildExperienceHints;
|
|
201
209
|
/**
|
|
202
210
|
* MemoryManager의 학습/실패 기록을 시스템 메시지로 변환.
|
|
203
211
|
*/
|
package/dist/agent-loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../src/agent-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAc3C,OAAO,KAAK,EACV,WAAW,EAEX,gBAAgB,EAChB,OAAO,EAGP,YAAY,EACZ,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAEL,KAAK,WAAW,EAGjB,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,WAAW,EACX,KAAK,aAAa,EAEnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EAAqB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../src/agent-loop.ts"],"names":[],"mappings":"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"}
|
package/dist/agent-loop.js
CHANGED
|
@@ -31,6 +31,7 @@ import { InterruptManager } from "./interrupt-manager.js";
|
|
|
31
31
|
import { YuanMemory } from "./memory.js";
|
|
32
32
|
import { MemoryManager } from "./memory-manager.js";
|
|
33
33
|
import { buildSystemPrompt } from "./system-prompt.js";
|
|
34
|
+
import { StrategySelector } from "./strategy-selector.js";
|
|
34
35
|
import { HierarchicalPlanner, } from "./hierarchical-planner.js";
|
|
35
36
|
import { TaskClassifier } from "./task-classifier.js";
|
|
36
37
|
import { PromptDefense } from "./prompt-defense.js";
|
|
@@ -163,6 +164,9 @@ export class AgentLoop extends EventEmitter {
|
|
|
163
164
|
enableBackgroundAgents;
|
|
164
165
|
currentToolPlan = null;
|
|
165
166
|
executedToolNames = [];
|
|
167
|
+
currentTaskType = undefined;
|
|
168
|
+
strategySelector = new StrategySelector();
|
|
169
|
+
activeStrategies = [];
|
|
166
170
|
/** Context Budget: max 3 active skills at once */
|
|
167
171
|
activeSkillIds = [];
|
|
168
172
|
static MAX_ACTIVE_SKILLS = 3;
|
|
@@ -349,6 +353,7 @@ export class AgentLoop extends EventEmitter {
|
|
|
349
353
|
tools: [...this.config.loop.tools],
|
|
350
354
|
projectPath,
|
|
351
355
|
environment: this.environment,
|
|
356
|
+
model: this.config.byok.model,
|
|
352
357
|
});
|
|
353
358
|
this.contextManager.replaceSystemMessage(basicPrompt);
|
|
354
359
|
debugLog("[fastInit] done — LLM ready");
|
|
@@ -785,6 +790,13 @@ export class AgentLoop extends EventEmitter {
|
|
|
785
790
|
tools: [...this.config.loop.tools, ...this.mcpToolDefinitions],
|
|
786
791
|
projectPath,
|
|
787
792
|
environment: this.environment,
|
|
793
|
+
model: this.config.byok.model,
|
|
794
|
+
// NOTE: currentTaskType is undefined on turn 1 (slowInit fires before classification).
|
|
795
|
+
// The task-type hint still reaches the LLM on turn 1 via the separate system message injection.
|
|
796
|
+
// From turn 2+ this field carries the previous turn's classification.
|
|
797
|
+
currentTaskType: this.currentTaskType,
|
|
798
|
+
experienceHints: this.buildExperienceHints(),
|
|
799
|
+
activeStrategies: this.activeStrategies.length > 0 ? this.activeStrategies : undefined,
|
|
788
800
|
});
|
|
789
801
|
let worldStateSection = "";
|
|
790
802
|
if (this.worldState) {
|
|
@@ -794,6 +806,22 @@ export class AgentLoop extends EventEmitter {
|
|
|
794
806
|
this.contextManager.replaceSystemMessage(enrichedPrompt + worldStateSection);
|
|
795
807
|
debugLog("[slowInit] DONE — context enriched for next turn");
|
|
796
808
|
}
|
|
809
|
+
/**
|
|
810
|
+
* MemoryManager.learnings에서 경험 힌트를 추출한다.
|
|
811
|
+
* confidence >= 0.4인 학습만, 최대 8개, "[category] content" 형식으로 반환.
|
|
812
|
+
*/
|
|
813
|
+
buildExperienceHints() {
|
|
814
|
+
if (!this.memoryManager)
|
|
815
|
+
return [];
|
|
816
|
+
const memory = this.memoryManager.getMemory();
|
|
817
|
+
if (!memory?.learnings?.length)
|
|
818
|
+
return [];
|
|
819
|
+
return memory.learnings
|
|
820
|
+
.filter((l) => l.confidence >= 0.4)
|
|
821
|
+
.sort((a, b) => b.confidence - a.confidence)
|
|
822
|
+
.slice(0, 8)
|
|
823
|
+
.map((l) => `[${l.category}] ${l.content}`);
|
|
824
|
+
}
|
|
797
825
|
/**
|
|
798
826
|
* MemoryManager의 학습/실패 기록을 시스템 메시지로 변환.
|
|
799
827
|
*/
|
|
@@ -963,6 +991,12 @@ export class AgentLoop extends EventEmitter {
|
|
|
963
991
|
}
|
|
964
992
|
// Task 분류 → 시스템 프롬프트에 tool sequence hint 주입
|
|
965
993
|
const classification = this.taskClassifier.classify(userMessage);
|
|
994
|
+
// Store classification type for system prompt enrichment
|
|
995
|
+
this.currentTaskType = classification.confidence >= CLASSIFICATION_CONFIDENCE_THRESHOLD
|
|
996
|
+
? classification.type
|
|
997
|
+
: undefined;
|
|
998
|
+
// Select active strategies based on task type and execution mode
|
|
999
|
+
this.activeStrategies = this.strategySelector.select(this.currentTaskType, undefined);
|
|
966
1000
|
if (classification.confidence >= CLASSIFICATION_CONFIDENCE_THRESHOLD) {
|
|
967
1001
|
const classificationHint = this.taskClassifier.formatForSystemPrompt(classification);
|
|
968
1002
|
this.contextManager.addMessage({
|