@yuaone/core 0.9.43 → 1.0.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/dist/agent-affordance.d.ts +37 -0
- package/dist/agent-affordance.d.ts.map +1 -0
- package/dist/agent-affordance.js +139 -0
- package/dist/agent-affordance.js.map +1 -0
- package/dist/agent-decision-types.d.ts +262 -0
- package/dist/agent-decision-types.d.ts.map +1 -0
- package/dist/agent-decision-types.js +19 -0
- package/dist/agent-decision-types.js.map +1 -0
- package/dist/agent-decision.d.ts +52 -0
- package/dist/agent-decision.d.ts.map +1 -0
- package/dist/agent-decision.js +767 -0
- package/dist/agent-decision.js.map +1 -0
- package/dist/agent-loop.d.ts +37 -79
- package/dist/agent-loop.d.ts.map +1 -1
- package/dist/agent-loop.js +730 -586
- package/dist/agent-loop.js.map +1 -1
- package/dist/agent-reasoning-engine.d.ts +48 -0
- package/dist/agent-reasoning-engine.d.ts.map +1 -0
- package/dist/agent-reasoning-engine.js +544 -0
- package/dist/agent-reasoning-engine.js.map +1 -0
- package/dist/codebase-context.d.ts +3 -0
- package/dist/codebase-context.d.ts.map +1 -1
- package/dist/codebase-context.js +15 -6
- package/dist/codebase-context.js.map +1 -1
- package/dist/command-plan-compiler.d.ts +43 -0
- package/dist/command-plan-compiler.d.ts.map +1 -0
- package/dist/command-plan-compiler.js +164 -0
- package/dist/command-plan-compiler.js.map +1 -0
- package/dist/dependency-guard.d.ts +18 -0
- package/dist/dependency-guard.d.ts.map +1 -0
- package/dist/dependency-guard.js +113 -0
- package/dist/dependency-guard.js.map +1 -0
- package/dist/execution-engine.d.ts +10 -1
- package/dist/execution-engine.d.ts.map +1 -1
- package/dist/execution-engine.js +162 -8
- package/dist/execution-engine.js.map +1 -1
- package/dist/execution-receipt.d.ts +62 -0
- package/dist/execution-receipt.d.ts.map +1 -0
- package/dist/execution-receipt.js +67 -0
- package/dist/execution-receipt.js.map +1 -0
- package/dist/failure-surface-writer.d.ts +13 -0
- package/dist/failure-surface-writer.d.ts.map +1 -0
- package/dist/failure-surface-writer.js +33 -0
- package/dist/failure-surface-writer.js.map +1 -0
- package/dist/file-chunker.d.ts +26 -0
- package/dist/file-chunker.d.ts.map +1 -0
- package/dist/file-chunker.js +103 -0
- package/dist/file-chunker.js.map +1 -0
- package/dist/image-observer.d.ts +22 -0
- package/dist/image-observer.d.ts.map +1 -0
- package/dist/image-observer.js +60 -0
- package/dist/image-observer.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -1
- package/dist/judgment-rules.d.ts +44 -0
- package/dist/judgment-rules.d.ts.map +1 -0
- package/dist/judgment-rules.js +185 -0
- package/dist/judgment-rules.js.map +1 -0
- package/dist/memory-decay.d.ts +41 -0
- package/dist/memory-decay.d.ts.map +1 -0
- package/dist/memory-decay.js +62 -0
- package/dist/memory-decay.js.map +1 -0
- package/dist/memory-manager.d.ts.map +1 -1
- package/dist/memory-manager.js +30 -0
- package/dist/memory-manager.js.map +1 -1
- package/dist/model-weakness-tracker.d.ts +42 -0
- package/dist/model-weakness-tracker.d.ts.map +1 -0
- package/dist/model-weakness-tracker.js +107 -0
- package/dist/model-weakness-tracker.js.map +1 -0
- package/dist/overhead-governor.d.ts +3 -1
- package/dist/overhead-governor.d.ts.map +1 -1
- package/dist/overhead-governor.js +5 -0
- package/dist/overhead-governor.js.map +1 -1
- package/dist/patch-scope-controller.d.ts +44 -0
- package/dist/patch-scope-controller.d.ts.map +1 -0
- package/dist/patch-scope-controller.js +107 -0
- package/dist/patch-scope-controller.js.map +1 -0
- package/dist/patch-transaction.d.ts +53 -0
- package/dist/patch-transaction.d.ts.map +1 -0
- package/dist/patch-transaction.js +119 -0
- package/dist/patch-transaction.js.map +1 -0
- package/dist/pre-write-validator.d.ts +29 -0
- package/dist/pre-write-validator.d.ts.map +1 -0
- package/dist/pre-write-validator.js +97 -0
- package/dist/pre-write-validator.js.map +1 -0
- package/dist/prompt-builder.d.ts +25 -0
- package/dist/prompt-builder.d.ts.map +1 -0
- package/dist/prompt-builder.js +93 -0
- package/dist/prompt-builder.js.map +1 -0
- package/dist/prompt-envelope.d.ts +40 -0
- package/dist/prompt-envelope.d.ts.map +1 -0
- package/dist/prompt-envelope.js +16 -0
- package/dist/prompt-envelope.js.map +1 -0
- package/dist/prompt-runtime.d.ts +66 -0
- package/dist/prompt-runtime.d.ts.map +1 -0
- package/dist/prompt-runtime.js +492 -0
- package/dist/prompt-runtime.js.map +1 -0
- package/dist/repo-capability-profile.d.ts +24 -0
- package/dist/repo-capability-profile.d.ts.map +1 -0
- package/dist/repo-capability-profile.js +113 -0
- package/dist/repo-capability-profile.js.map +1 -0
- package/dist/security-gate.d.ts +39 -0
- package/dist/security-gate.d.ts.map +1 -0
- package/dist/security-gate.js +121 -0
- package/dist/security-gate.js.map +1 -0
- package/dist/self-evaluation.d.ts +22 -0
- package/dist/self-evaluation.d.ts.map +1 -0
- package/dist/self-evaluation.js +43 -0
- package/dist/self-evaluation.js.map +1 -0
- package/dist/semantic-diff-reviewer.d.ts +28 -0
- package/dist/semantic-diff-reviewer.d.ts.map +1 -0
- package/dist/semantic-diff-reviewer.js +168 -0
- package/dist/semantic-diff-reviewer.js.map +1 -0
- package/dist/stall-detector.d.ts +26 -2
- package/dist/stall-detector.d.ts.map +1 -1
- package/dist/stall-detector.js +128 -3
- package/dist/stall-detector.js.map +1 -1
- package/dist/system-core.d.ts +27 -0
- package/dist/system-core.d.ts.map +1 -0
- package/dist/system-core.js +269 -0
- package/dist/system-core.js.map +1 -0
- package/dist/system-prompt.d.ts +4 -0
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +12 -218
- package/dist/system-prompt.js.map +1 -1
- package/dist/target-file-ranker.d.ts +38 -0
- package/dist/target-file-ranker.d.ts.map +1 -0
- package/dist/target-file-ranker.js +90 -0
- package/dist/target-file-ranker.js.map +1 -0
- package/dist/task-classifier.d.ts +6 -0
- package/dist/task-classifier.d.ts.map +1 -1
- package/dist/task-classifier.js +6 -0
- package/dist/task-classifier.js.map +1 -1
- package/dist/test-impact-planner.d.ts +16 -0
- package/dist/test-impact-planner.d.ts.map +1 -0
- package/dist/test-impact-planner.js +68 -0
- package/dist/test-impact-planner.js.map +1 -0
- package/dist/tool-outcome-cache.d.ts +41 -0
- package/dist/tool-outcome-cache.d.ts.map +1 -0
- package/dist/tool-outcome-cache.js +88 -0
- package/dist/tool-outcome-cache.js.map +1 -0
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/verifier-rules.d.ts +15 -0
- package/dist/verifier-rules.d.ts.map +1 -0
- package/dist/verifier-rules.js +80 -0
- package/dist/verifier-rules.js.map +1 -0
- package/dist/workspace-mutation-policy.d.ts +28 -0
- package/dist/workspace-mutation-policy.d.ts.map +1 -0
- package/dist/workspace-mutation-policy.js +56 -0
- package/dist/workspace-mutation-policy.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module prompt-runtime
|
|
3
|
+
* @description YUAN PromptRuntime -- Decision policy compiler.
|
|
4
|
+
*
|
|
5
|
+
* Rules:
|
|
6
|
+
* 1. Consumes DecisionContext ONLY (no new decisions)
|
|
7
|
+
* 2. Produces PromptEnvelope -> delegates to PromptBuilder
|
|
8
|
+
* 3. agent-loop calls this instead of directly injecting system messages
|
|
9
|
+
*
|
|
10
|
+
* YUA reference: prompt-runtime.ts (876 lines)
|
|
11
|
+
* YUAN difference: coding agent specialized (tool budget hints, veto hints, plan context)
|
|
12
|
+
*/
|
|
13
|
+
import { section } from "./prompt-envelope.js";
|
|
14
|
+
import { getSystemCoreSections, getReinforceSections } from "./system-core.js";
|
|
15
|
+
/** 모델별 기본 예산 */
|
|
16
|
+
export const DEFAULT_TOKEN_BUDGETS = {
|
|
17
|
+
gemini: {
|
|
18
|
+
contextWindow: 32_000,
|
|
19
|
+
systemPromptRatio: 0.25, // 8K
|
|
20
|
+
conversationRatio: 0.40, // 12.8K
|
|
21
|
+
toolResultsRatio: 0.20, // 6.4K
|
|
22
|
+
outputReserveRatio: 0.15, // 4.8K
|
|
23
|
+
},
|
|
24
|
+
claude: {
|
|
25
|
+
contextWindow: 200_000,
|
|
26
|
+
systemPromptRatio: 0.15, // 30K — 큰 윈도우니까 비율 낮춰도 충분
|
|
27
|
+
conversationRatio: 0.45, // 90K
|
|
28
|
+
toolResultsRatio: 0.25, // 50K
|
|
29
|
+
outputReserveRatio: 0.15, // 30K
|
|
30
|
+
},
|
|
31
|
+
openai: {
|
|
32
|
+
contextWindow: 128_000,
|
|
33
|
+
systemPromptRatio: 0.20, // 25.6K
|
|
34
|
+
conversationRatio: 0.40, // 51.2K
|
|
35
|
+
toolResultsRatio: 0.25, // 32K
|
|
36
|
+
outputReserveRatio: 0.15, // 19.2K
|
|
37
|
+
},
|
|
38
|
+
default: {
|
|
39
|
+
contextWindow: 32_000,
|
|
40
|
+
systemPromptRatio: 0.25,
|
|
41
|
+
conversationRatio: 0.40,
|
|
42
|
+
toolResultsRatio: 0.20,
|
|
43
|
+
outputReserveRatio: 0.15,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
/** system prompt에 쓸 수 있는 최대 토큰 계산 */
|
|
47
|
+
export function getSystemPromptMaxTokens(budget) {
|
|
48
|
+
return Math.floor(budget.contextWindow * budget.systemPromptRatio);
|
|
49
|
+
}
|
|
50
|
+
// ─── Main Compiler ───
|
|
51
|
+
/**
|
|
52
|
+
* Decision + Context -> PromptEnvelope.
|
|
53
|
+
* This function is the SOLE place that decides "what goes into the prompt".
|
|
54
|
+
*
|
|
55
|
+
* PromptRuntime does NOT make new decisions -- only reads DecisionContext.
|
|
56
|
+
* PromptRuntime does NOT produce prompt strings -- only produces PromptEnvelope.
|
|
57
|
+
*/
|
|
58
|
+
export function compilePromptEnvelope(input) {
|
|
59
|
+
const { decision, promptOptions, runContext, ephemeralHints, tokenBudget } = input;
|
|
60
|
+
// 0. Token budget calculation
|
|
61
|
+
const budget = tokenBudget ?? DEFAULT_TOKEN_BUDGETS.default;
|
|
62
|
+
const maxTokens = getSystemPromptMaxTokens(budget);
|
|
63
|
+
// 1. SystemCore (immutable)
|
|
64
|
+
const systemCoreSections = getSystemCoreSections();
|
|
65
|
+
// 2. RuntimePolicy (Decision-based)
|
|
66
|
+
const runtimePolicySections = compileRuntimePolicy(decision, promptOptions);
|
|
67
|
+
// 3. Role (Decision-based)
|
|
68
|
+
const roleSections = compileRole(decision, promptOptions);
|
|
69
|
+
// 4. TaskContext (per-run)
|
|
70
|
+
const taskContextSections = compileTaskContext(decision, promptOptions, runContext);
|
|
71
|
+
// 5. Ephemeral (per-iteration)
|
|
72
|
+
const ephemeralSections = compileEphemeral(ephemeralHints);
|
|
73
|
+
// 6. Reinforce (U-curve end)
|
|
74
|
+
const reinforceSections = getReinforceSections();
|
|
75
|
+
return {
|
|
76
|
+
systemCoreSections,
|
|
77
|
+
runtimePolicySections,
|
|
78
|
+
roleSections,
|
|
79
|
+
taskContextSections,
|
|
80
|
+
ephemeralSections,
|
|
81
|
+
reinforceSections,
|
|
82
|
+
maxTokens,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
// ─── RuntimePolicy Compiler ───
|
|
86
|
+
/** Decision -> execution policy sections */
|
|
87
|
+
function compileRuntimePolicy(decision, opts) {
|
|
88
|
+
const sections = [];
|
|
89
|
+
// Execution mode (from decision or fallback)
|
|
90
|
+
const mode = decision?.core.computePolicy.modelTier === "deep" ? "DEEP"
|
|
91
|
+
: decision?.core.computePolicy.modelTier === "fast" ? "FAST"
|
|
92
|
+
: opts.executionMode ?? "NORMAL";
|
|
93
|
+
const modeRules = {
|
|
94
|
+
FAST: "Mode: FAST — Smallest correct change. Minimal verification.",
|
|
95
|
+
NORMAL: "Mode: NORMAL — Read related files. Normal build/test.",
|
|
96
|
+
DEEP: "Mode: DEEP — Full verification. Check all references.",
|
|
97
|
+
SUPERPOWER: "Mode: SUPERPOWER — Full pipeline. Self-reflection checkpoints.",
|
|
98
|
+
COMPACT: "Mode: COMPACT — Resuming session. Trust prior context.",
|
|
99
|
+
};
|
|
100
|
+
sections.push(section("execution-mode", `# Execution Mode\n${modeRules[mode] ?? modeRules.NORMAL}`, { priority: 10 }));
|
|
101
|
+
// Decision-specific policy sections
|
|
102
|
+
if (decision) {
|
|
103
|
+
// Next action contract
|
|
104
|
+
if (decision.core.nextAction === "ask_user") {
|
|
105
|
+
const c = decision.core.clarification;
|
|
106
|
+
const lines = [
|
|
107
|
+
"# Next Action: ASK USER",
|
|
108
|
+
"- You MUST ask the user for clarification before doing anything else.",
|
|
109
|
+
"- Do NOT read files. Do NOT edit files. Do NOT run commands.",
|
|
110
|
+
"- Ask your question clearly, then STOP and wait for the user's response.",
|
|
111
|
+
];
|
|
112
|
+
if (c?.reason)
|
|
113
|
+
lines.push(`- Reason: ${c.reason}`);
|
|
114
|
+
if (c?.missingFields?.length)
|
|
115
|
+
lines.push(`- Missing: ${c.missingFields.join(", ")}`);
|
|
116
|
+
if (c?.suggestedOptions?.length)
|
|
117
|
+
lines.push(`- Options: ${c.suggestedOptions.join(" | ")}`);
|
|
118
|
+
sections.push(section("next-action", lines.join("\n"), { priority: 2 })); // Very high priority, right after core
|
|
119
|
+
}
|
|
120
|
+
else if (decision.core.nextAction === "blocked_external") {
|
|
121
|
+
sections.push(section("next-action", [
|
|
122
|
+
"# Next Action",
|
|
123
|
+
"- You are blocked by an external dependency, approval gate, or missing environment capability.",
|
|
124
|
+
"- Explain the blocker clearly and stop before risky changes.",
|
|
125
|
+
].join("\n"), { priority: 4 }));
|
|
126
|
+
}
|
|
127
|
+
else if (decision.core.planRequired) {
|
|
128
|
+
sections.push(section("planning-contract", [
|
|
129
|
+
"# Planning Contract",
|
|
130
|
+
"- A plan is required for this task.",
|
|
131
|
+
"- Create or follow a bounded plan before broad edits.",
|
|
132
|
+
"- Execute step by step; do not jump straight into large changes.",
|
|
133
|
+
].join("\n"), { priority: 9 }));
|
|
134
|
+
}
|
|
135
|
+
// Tool budget hint
|
|
136
|
+
const tb = decision.core.toolBudget;
|
|
137
|
+
sections.push(section("tool-budget", [
|
|
138
|
+
"# Tool Budget",
|
|
139
|
+
`- file reads: max ${tb.maxFileReads}`,
|
|
140
|
+
`- edits: max ${tb.maxEdits}`,
|
|
141
|
+
`- shell: max ${tb.maxShellExecs}`,
|
|
142
|
+
`- tests: max ${tb.maxTestRuns}`,
|
|
143
|
+
`- searches: max ${tb.maxSearches}`,
|
|
144
|
+
"Stay within budget. If approaching limits, prioritize essential operations.",
|
|
145
|
+
].join("\n"), { priority: 12, droppable: true }));
|
|
146
|
+
// Veto hints
|
|
147
|
+
const veto = decision.core.vetoFlags;
|
|
148
|
+
const vetoHints = [];
|
|
149
|
+
if (veto.editVetoed)
|
|
150
|
+
vetoHints.push("- EDIT VETOED: Do not modify files without creating a plan first.");
|
|
151
|
+
if (veto.verifyRequired)
|
|
152
|
+
vetoHints.push("- VERIFY REQUIRED: Run build/test after every change.");
|
|
153
|
+
if (veto.finalizeBlocked)
|
|
154
|
+
vetoHints.push("- FINALIZE BLOCKED: Do not mark task complete until verification passes.");
|
|
155
|
+
if (vetoHints.length > 0) {
|
|
156
|
+
sections.push(section("veto-constraints", `# Constraints\n${vetoHints.join("\n")}`, { priority: 11 }));
|
|
157
|
+
}
|
|
158
|
+
// Verify depth hint
|
|
159
|
+
const vd = decision.core.verifyDepth;
|
|
160
|
+
if (vd !== "skip") {
|
|
161
|
+
const depthDesc = vd === "thorough"
|
|
162
|
+
? "Run full build + test suite after changes."
|
|
163
|
+
: "Quick type-check after changes.";
|
|
164
|
+
sections.push(section("verify-depth", `# Verification\nVerify depth: ${vd}. ${depthDesc}`, { priority: 13, droppable: true }));
|
|
165
|
+
}
|
|
166
|
+
// Scan breadth hint (Phase G: wire Decision.scanBreadth → prompt)
|
|
167
|
+
if (decision.core.scanBreadth === "wide") {
|
|
168
|
+
sections.push(section("scan-breadth", "# Exploration\nSearch extensively. Use grep, glob, code_search broadly. Read up to 20 related files before making changes.", { priority: 14, droppable: true }));
|
|
169
|
+
}
|
|
170
|
+
else if (decision.core.scanBreadth === "narrow") {
|
|
171
|
+
sections.push(section("scan-breadth", "# Exploration\nFocus narrowly. Read only the directly relevant file(s). Minimize exploration.", { priority: 14, droppable: true }));
|
|
172
|
+
}
|
|
173
|
+
// Sub-agent policy (only when the tool actually exists)
|
|
174
|
+
const hasSubAgentTool = opts.tools.some(t => t.name === "spawn_sub_agent");
|
|
175
|
+
if (hasSubAgentTool &&
|
|
176
|
+
decision.core.interactionMode !== "CHAT" &&
|
|
177
|
+
(decision.core.planRequired || decision.core.scanBreadth === "wide")) {
|
|
178
|
+
sections.push(section("sub-agent-policy", [
|
|
179
|
+
"# Sub-agent Policy",
|
|
180
|
+
"- Use sub-agents only for bounded, independent subtasks.",
|
|
181
|
+
"- Each sub-agent must get one clear goal, expected artifact, and stop condition.",
|
|
182
|
+
"- Use sub-agents for parallel exploration/verification, not for vague recursive delegation.",
|
|
183
|
+
"- Parent agent keeps responsibility for synthesis, verification, and completion.",
|
|
184
|
+
].join("\n"), { priority: 16, droppable: true }));
|
|
185
|
+
}
|
|
186
|
+
// Sub-agent delegation plan (Decision-specific rules when subAgentPlan is enabled)
|
|
187
|
+
if (decision.core.subAgentPlan.enabled) {
|
|
188
|
+
const sap = decision.core.subAgentPlan;
|
|
189
|
+
sections.push(section("sub-agent-rules", [
|
|
190
|
+
"# Sub-Agent Delegation",
|
|
191
|
+
`- Strategy: ${sap.strategy}`,
|
|
192
|
+
`- Max agents: ${sap.maxAgents}`,
|
|
193
|
+
`- Roles: ${sap.roles.join(", ")}`,
|
|
194
|
+
"- Spawn sub-agents for independent parallel subtasks",
|
|
195
|
+
"- Each sub-agent gets its own tool budget",
|
|
196
|
+
"- Do NOT spawn for sequential dependent tasks",
|
|
197
|
+
].join("\n"), { priority: 16, droppable: true }));
|
|
198
|
+
}
|
|
199
|
+
// Code quality policy (YUA implementationMode equivalent)
|
|
200
|
+
if (decision.core.codeQuality.isCodeTask) {
|
|
201
|
+
const cq = decision.core.codeQuality;
|
|
202
|
+
const parts = [`# Code Quality — ${cq.codeTaskType.toUpperCase()} mode`];
|
|
203
|
+
parts.push(`Primary risk: ${cq.primaryRisk}`);
|
|
204
|
+
if (cq.strictMode) {
|
|
205
|
+
parts.push("");
|
|
206
|
+
parts.push("STRICT MODE — Zero tolerance for incomplete code:");
|
|
207
|
+
parts.push("- No TODO, FIXME, HACK, XXX comments");
|
|
208
|
+
parts.push("- No stub/placeholder/empty implementations");
|
|
209
|
+
parts.push("- No 'throw new Error(\"not implemented\")'");
|
|
210
|
+
parts.push("- Every function must have a real, working implementation");
|
|
211
|
+
}
|
|
212
|
+
if (cq.constraints.length > 0) {
|
|
213
|
+
parts.push("");
|
|
214
|
+
parts.push("Constraints:");
|
|
215
|
+
for (const c of cq.constraints) {
|
|
216
|
+
parts.push(`- ${c}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
sections.push(section("code-quality", parts.join("\n"), { priority: 7 }));
|
|
220
|
+
}
|
|
221
|
+
// LeadHint
|
|
222
|
+
if (decision.core.leadHint === "HARD") {
|
|
223
|
+
sections.push(section("lead-hint", "# Direction\nProvide clear, structured guidance. Recommend specific approaches. Do not leave decisions ambiguous.", { priority: 8, droppable: true }));
|
|
224
|
+
}
|
|
225
|
+
else if (decision.core.leadHint === "SOFT") {
|
|
226
|
+
sections.push(section("lead-hint", "# Direction\nSuggest next steps gently after completing the current task.", { priority: 8, droppable: true }));
|
|
227
|
+
}
|
|
228
|
+
// ResponseHint
|
|
229
|
+
const rh = decision.core.responseHint;
|
|
230
|
+
const structureDesc = { direct_answer: "Answer directly", problem_solution: "Problem → Root cause → Fix", stepwise_explanation: "Step-by-step explanation", code_first: "Show code first, explain after" };
|
|
231
|
+
const rhParts = [`# Output Structure\n- Format: ${structureDesc[rh.structure] ?? "Answer directly"}`, `- Detail level: ${rh.expansion}`];
|
|
232
|
+
if (rh.forbid.metaComment)
|
|
233
|
+
rhParts.push("- Do NOT use meta-comments like '설명해보면', '정리하면', 'Let me explain'");
|
|
234
|
+
if (rh.forbid.apology)
|
|
235
|
+
rhParts.push("- Do NOT apologize. No '죄송합니다', 'Sorry', 'I apologize'");
|
|
236
|
+
sections.push(section("response-hint", rhParts.join("\n"), { priority: 6, droppable: true }));
|
|
237
|
+
// ToolGate
|
|
238
|
+
if (decision.core.toolGate.level === "READ_ONLY") {
|
|
239
|
+
sections.push(section("tool-gate", "# Tool Access: READ-ONLY\nDo NOT write, edit, or delete any files. Only read and analyze.", { priority: 5 }));
|
|
240
|
+
}
|
|
241
|
+
else if (decision.core.toolGate.level === "LIMITED") {
|
|
242
|
+
sections.push(section("tool-gate", `# Tool Access: LIMITED\nBlocked tools: ${decision.core.toolGate.blockedTools.join(", ")}. Verify before each write operation.`, { priority: 5 }));
|
|
243
|
+
}
|
|
244
|
+
// ResponsePressure
|
|
245
|
+
if (decision.core.pressureDecision.pressure === "ASSERTIVE") {
|
|
246
|
+
sections.push(section("pressure", "# Execution Pressure: ASSERTIVE\nPush forward decisively. Do not hesitate or over-explain. Execute and report results.", { priority: 9, droppable: true }));
|
|
247
|
+
}
|
|
248
|
+
else if (decision.core.pressureDecision.pressure === "GENTLE") {
|
|
249
|
+
sections.push(section("pressure", "# Execution Pressure: GENTLE\nBe careful and deliberate. Explain reasoning. Ask if unsure.", { priority: 9, droppable: true }));
|
|
250
|
+
}
|
|
251
|
+
// ContinuityCapsule
|
|
252
|
+
if (decision.core.continuityCapsule.enabled) {
|
|
253
|
+
const capsuleRules = decision.core.continuityCapsule.rules.map(r => `- ${r}`).join("\n");
|
|
254
|
+
sections.push(section("continuity-capsule", `# Continuation Context\n${capsuleRules}`, { priority: 3 })); // Very high priority
|
|
255
|
+
}
|
|
256
|
+
// StyleHint
|
|
257
|
+
const sh = decision.core.styleHint;
|
|
258
|
+
if (sh.formality === "casual") {
|
|
259
|
+
sections.push(section("style", "# Style: Casual\nUse informal tone. 반말 OK. Keep it relaxed.", { priority: 10, droppable: true }));
|
|
260
|
+
}
|
|
261
|
+
else if (sh.formality === "formal") {
|
|
262
|
+
sections.push(section("style", "# Style: Formal\nUse professional, polite language.", { priority: 10, droppable: true }));
|
|
263
|
+
}
|
|
264
|
+
if (sh.brevity === "terse") {
|
|
265
|
+
sections.push(section("brevity", "# Brevity: Terse\nKeep responses very short. Code over explanation.", { priority: 10, droppable: true }));
|
|
266
|
+
}
|
|
267
|
+
// Mode-specific policy sections (CHAT/HYBRID/AGENT)
|
|
268
|
+
sections.push(...compileModeSpecificPolicy(decision));
|
|
269
|
+
}
|
|
270
|
+
return sections;
|
|
271
|
+
}
|
|
272
|
+
// ─── Mode-Specific Policy ───
|
|
273
|
+
/**
|
|
274
|
+
* Compile interaction-mode-specific prompt policy sections.
|
|
275
|
+
* Translates the Decision Engine's interactionMode into natural-language
|
|
276
|
+
* instructions that shape the LLM's behavior for this turn.
|
|
277
|
+
*/
|
|
278
|
+
function compileModeSpecificPolicy(decision) {
|
|
279
|
+
const mode = decision.core.interactionMode;
|
|
280
|
+
const sections = [];
|
|
281
|
+
switch (mode) {
|
|
282
|
+
case "CHAT":
|
|
283
|
+
sections.push(section("interaction-mode", [
|
|
284
|
+
"# Mode: Conversational",
|
|
285
|
+
"- Answer questions naturally. Explain clearly.",
|
|
286
|
+
"- Use tools only when the answer needs project context.",
|
|
287
|
+
"- Keep responses concise and direct.",
|
|
288
|
+
"- Do not create plans or execution steps.",
|
|
289
|
+
].join("\n"), { priority: 8 }));
|
|
290
|
+
break;
|
|
291
|
+
case "HYBRID":
|
|
292
|
+
sections.push(section("interaction-mode", [
|
|
293
|
+
"# Mode: Hybrid",
|
|
294
|
+
"- Execute the task directly, then verify.",
|
|
295
|
+
"- Keep planning lightweight (2-3 steps max).",
|
|
296
|
+
"- Run quick verification after changes.",
|
|
297
|
+
].join("\n"), { priority: 8 }));
|
|
298
|
+
break;
|
|
299
|
+
case "AGENT":
|
|
300
|
+
sections.push(section("interaction-mode", [
|
|
301
|
+
"# Mode: Full Agent",
|
|
302
|
+
"- Follow the execution plan strictly.",
|
|
303
|
+
"- Verify after every significant change.",
|
|
304
|
+
"- Use all available tools within budget.",
|
|
305
|
+
"- Report progress at each milestone.",
|
|
306
|
+
].join("\n"), { priority: 8 }));
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
return sections;
|
|
310
|
+
}
|
|
311
|
+
// ─── Role Compiler ───
|
|
312
|
+
/** Decision -> role section */
|
|
313
|
+
function compileRole(_decision, opts) {
|
|
314
|
+
const role = opts.agentRole ?? "generalist";
|
|
315
|
+
if (role === "generalist")
|
|
316
|
+
return [];
|
|
317
|
+
const roleRules = {
|
|
318
|
+
planner: "Role: PLANNER — Analyze structure, create execution plan. Do not write code.",
|
|
319
|
+
coder: "Role: CODER — Write correct code changes. Follow the plan. Verify after each change.",
|
|
320
|
+
critic: "Role: CRITIC — Review changes for bugs, security, performance. Cite file+line.",
|
|
321
|
+
verifier: "Role: VERIFIER — Run build/test/lint. Report pass/fail. Do not fix.",
|
|
322
|
+
specialist: "Role: SPECIALIST — Focus on assigned domain.",
|
|
323
|
+
recovery: "Role: RECOVERY — Diagnose failure, apply conservative fix, verify.",
|
|
324
|
+
};
|
|
325
|
+
const ruleText = roleRules[role];
|
|
326
|
+
if (!ruleText)
|
|
327
|
+
return [];
|
|
328
|
+
return [section("agent-role", `# Agent Role\n${ruleText}`, { priority: 15 })];
|
|
329
|
+
}
|
|
330
|
+
// ─── TaskContext Compiler ───
|
|
331
|
+
/** Decision + Context -> task context sections */
|
|
332
|
+
function compileTaskContext(decision, opts, ctx) {
|
|
333
|
+
const sections = [];
|
|
334
|
+
// Environment
|
|
335
|
+
if (opts.environment || opts.projectPath) {
|
|
336
|
+
const parts = ["# Environment"];
|
|
337
|
+
if (opts.projectPath)
|
|
338
|
+
parts.push(`- dir: ${opts.projectPath}`);
|
|
339
|
+
if (opts.environment?.os)
|
|
340
|
+
parts.push(`- os: ${opts.environment.os}`);
|
|
341
|
+
if (opts.environment?.shell)
|
|
342
|
+
parts.push(`- shell: ${opts.environment.shell}`);
|
|
343
|
+
if (opts.environment?.nodeVersion)
|
|
344
|
+
parts.push(`- node: ${opts.environment.nodeVersion}`);
|
|
345
|
+
if (opts.environment?.gitBranch)
|
|
346
|
+
parts.push(`- branch: ${opts.environment.gitBranch}`);
|
|
347
|
+
sections.push(section("environment", parts.join("\n"), { priority: 20 }));
|
|
348
|
+
}
|
|
349
|
+
// Project structure
|
|
350
|
+
if (opts.projectStructure) {
|
|
351
|
+
const tree = opts.projectStructure.treeView.length > 2000
|
|
352
|
+
? opts.projectStructure.treeView.slice(0, 2000) + "\n..."
|
|
353
|
+
: opts.projectStructure.treeView;
|
|
354
|
+
sections.push(section("project", [
|
|
355
|
+
"# Project",
|
|
356
|
+
`- lang: ${opts.projectStructure.primaryLanguage}, framework: ${opts.projectStructure.framework}`,
|
|
357
|
+
"```",
|
|
358
|
+
tree,
|
|
359
|
+
"```",
|
|
360
|
+
].join("\n"), { priority: 21, droppable: true }));
|
|
361
|
+
}
|
|
362
|
+
// YUAN.md
|
|
363
|
+
if (opts.yuanMdContent) {
|
|
364
|
+
let content = opts.yuanMdContent;
|
|
365
|
+
if (content.length > 6000)
|
|
366
|
+
content = content.slice(0, 6000) + "\n[...truncated]";
|
|
367
|
+
sections.push(section("yuan-md", `# Project Memory (YUAN.md)\n${content}`, { priority: 22, droppable: true }));
|
|
368
|
+
}
|
|
369
|
+
// Tools
|
|
370
|
+
if (opts.tools.length > 0) {
|
|
371
|
+
sections.push(section("tools", buildToolSectionCompact(opts.tools, opts.activeToolNames), { priority: 25 }));
|
|
372
|
+
}
|
|
373
|
+
// Skills / strategies / experience / additional rules
|
|
374
|
+
if (opts.activeSkills?.length) {
|
|
375
|
+
sections.push(section("active-skills", `# Active Skills\n${opts.activeSkills.map(s => `- ${s.skillName}: ${s.summary}`).join("\n")}`, { priority: 23, droppable: true }));
|
|
376
|
+
}
|
|
377
|
+
if (opts.activeStrategies?.length) {
|
|
378
|
+
sections.push(section("active-strategies", `# Active Strategies\n${opts.activeStrategies.map(s => `- ${s.name}: ${s.description}`).join("\n")}`, { priority: 24, droppable: true }));
|
|
379
|
+
}
|
|
380
|
+
if (opts.experienceHints?.length) {
|
|
381
|
+
sections.push(section("experience-hints", `# Experience\n${opts.experienceHints.map(h => `- ${h}`).join("\n")}`, { priority: 26, droppable: true }));
|
|
382
|
+
}
|
|
383
|
+
if (opts.additionalRules?.length) {
|
|
384
|
+
sections.push(section("additional-rules", `# Additional Rules\n${opts.additionalRules.map(r => `- ${r}`).join("\n")}`, { priority: 27, droppable: true }));
|
|
385
|
+
}
|
|
386
|
+
// Per-run context sections (from runContext)
|
|
387
|
+
if (ctx?.memoryContext) {
|
|
388
|
+
sections.push(section("memory", `# Memory\n${ctx.memoryContext}`, { priority: 30, droppable: true }));
|
|
389
|
+
}
|
|
390
|
+
if (ctx?.personaSection) {
|
|
391
|
+
sections.push(section("persona", ctx.personaSection, { priority: 31, droppable: true }));
|
|
392
|
+
}
|
|
393
|
+
if (ctx?.reflexionGuidance) {
|
|
394
|
+
sections.push(section("reflexion", ctx.reflexionGuidance, { priority: 32, droppable: true }));
|
|
395
|
+
}
|
|
396
|
+
if (ctx?.taskMemory) {
|
|
397
|
+
sections.push(section("task-memory", ctx.taskMemory, { priority: 33, droppable: true }));
|
|
398
|
+
}
|
|
399
|
+
if (ctx?.ragContext) {
|
|
400
|
+
sections.push(section("rag", `# RAG Context\n${ctx.ragContext}`, { priority: 34, droppable: true }));
|
|
401
|
+
}
|
|
402
|
+
if (ctx?.playbookHint) {
|
|
403
|
+
sections.push(section("playbook", ctx.playbookHint, { priority: 35, droppable: true }));
|
|
404
|
+
}
|
|
405
|
+
if (ctx?.worldStateSection) {
|
|
406
|
+
sections.push(section("world-state", ctx.worldStateSection, { priority: 36, droppable: true }));
|
|
407
|
+
}
|
|
408
|
+
if (ctx?.weaknessContext) {
|
|
409
|
+
sections.push(section("weakness", ctx.weaknessContext, { priority: 37, droppable: true }));
|
|
410
|
+
}
|
|
411
|
+
if (ctx?.learnedSkills) {
|
|
412
|
+
sections.push(section("learned-skills", ctx.learnedSkills, { priority: 38, droppable: true }));
|
|
413
|
+
}
|
|
414
|
+
if (ctx?.pluginSkills) {
|
|
415
|
+
sections.push(section("plugin-skills", ctx.pluginSkills, { priority: 39, droppable: true }));
|
|
416
|
+
}
|
|
417
|
+
// Decision-based context
|
|
418
|
+
if (decision) {
|
|
419
|
+
const r = decision.core.reasoning;
|
|
420
|
+
sections.push(section("decision-hint", [
|
|
421
|
+
"# Task Analysis",
|
|
422
|
+
`- intent: ${r.intent} (${decision.core.reasoning.complexity})`,
|
|
423
|
+
`- stage: ${r.taskStage}`,
|
|
424
|
+
`- plan: ${decision.core.planRequired ? "required" : "not needed"}`,
|
|
425
|
+
`- next: ${r.nextAnchors.join(" \u2192 ")}`,
|
|
426
|
+
].join("\n"), { priority: 28 }));
|
|
427
|
+
// MicroPlan
|
|
428
|
+
if (decision.core.microPlan?.length) {
|
|
429
|
+
sections.push(section("micro-plan", `# Execution Steps\n${decision.core.microPlan.map((s, i) => `${i + 1}. ${s}`).join("\n")}`, { priority: 29 }));
|
|
430
|
+
}
|
|
431
|
+
// Continuation context (QA fix: wire unused continuation field)
|
|
432
|
+
if (decision.core.continuation.isContinuation) {
|
|
433
|
+
const c = decision.core.continuation;
|
|
434
|
+
const parts = ["# Continuation Context", `- Continuing from previous task (score: ${c.continuityScore.toFixed(2)})`];
|
|
435
|
+
if (c.carryover.prevIntent)
|
|
436
|
+
parts.push(`- Previous intent: ${c.carryover.prevIntent}`);
|
|
437
|
+
if (c.carryover.modifiedFiles.length > 0)
|
|
438
|
+
parts.push(`- Previously modified: ${c.carryover.modifiedFiles.join(", ")}`);
|
|
439
|
+
if (c.carryover.failedAttempts.length > 0)
|
|
440
|
+
parts.push(`- Previous failures: ${c.carryover.failedAttempts.join(", ")}`);
|
|
441
|
+
sections.push(section("continuation", parts.join("\n"), { priority: 27, droppable: true }));
|
|
442
|
+
}
|
|
443
|
+
// Persona hint (Phase I+ SSOT)
|
|
444
|
+
if (decision.core.personaHint) {
|
|
445
|
+
const ph = decision.core.personaHint;
|
|
446
|
+
const toneDesc = {
|
|
447
|
+
casual: "Use casual, conversational tone. Short sentences. 반말 OK.",
|
|
448
|
+
professional: "Use clear, professional tone.",
|
|
449
|
+
technical: "Use precise technical language. Include specifics.",
|
|
450
|
+
friendly: "Be friendly and approachable. Explain clearly.",
|
|
451
|
+
};
|
|
452
|
+
sections.push(section("persona-hint", `# Communication Style\n${toneDesc[ph.tone]}`, { priority: 9, droppable: true }));
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
return sections;
|
|
456
|
+
}
|
|
457
|
+
// ─── Ephemeral Compiler ───
|
|
458
|
+
/** Ephemeral hints -> sections (max 7 hints, max 3000 tokens total) */
|
|
459
|
+
function compileEphemeral(hints) {
|
|
460
|
+
if (!hints?.length)
|
|
461
|
+
return [];
|
|
462
|
+
const MAX_HINTS = 7;
|
|
463
|
+
const MAX_TOKENS = 3000;
|
|
464
|
+
let tokenCount = 0;
|
|
465
|
+
const sections = [];
|
|
466
|
+
for (const hint of hints.slice(0, MAX_HINTS)) {
|
|
467
|
+
const tokens = Math.ceil(hint.length / 3.5);
|
|
468
|
+
if (tokenCount + tokens > MAX_TOKENS)
|
|
469
|
+
break;
|
|
470
|
+
tokenCount += tokens;
|
|
471
|
+
sections.push(section(`ephemeral-${sections.length}`, hint, { priority: 60, droppable: true }));
|
|
472
|
+
}
|
|
473
|
+
return sections;
|
|
474
|
+
}
|
|
475
|
+
// ─── Helpers ───
|
|
476
|
+
/** Compact tool section builder */
|
|
477
|
+
function buildToolSectionCompact(tools, activeNames) {
|
|
478
|
+
const activeSet = new Set(activeNames ?? []);
|
|
479
|
+
const visible = activeNames?.length
|
|
480
|
+
? tools.filter(t => activeSet.has(t.name))
|
|
481
|
+
: tools;
|
|
482
|
+
const list = visible.map(t => `- **${t.name}**: ${t.description}`).join("\n");
|
|
483
|
+
const focus = activeNames?.length
|
|
484
|
+
? `## Active tool subset\n${activeNames.map(n => `- ${n}`).join("\n")}\n\n`
|
|
485
|
+
: "";
|
|
486
|
+
const hasSubAgent = visible.some(t => t.name === "spawn_sub_agent");
|
|
487
|
+
const suffix = hasSubAgent
|
|
488
|
+
? "\n\n- spawn_sub_agent is available for bounded independent subtasks only."
|
|
489
|
+
: "";
|
|
490
|
+
return `# Tools\n${focus}${list}${suffix}`;
|
|
491
|
+
}
|
|
492
|
+
//# sourceMappingURL=prompt-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-runtime.js","sourceRoot":"","sources":["../src/prompt-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module repo-capability-profile
|
|
3
|
+
* @description One-time scan of repository capabilities.
|
|
4
|
+
* Detects: package manager, build tool, test framework, monorepo, language, generated paths.
|
|
5
|
+
* Cached in .yuan/cache/repo-capability-profile.json.
|
|
6
|
+
* NO LLM, filesystem-based detection.
|
|
7
|
+
*/
|
|
8
|
+
export interface RepoCapabilityProfile {
|
|
9
|
+
repoType: "monorepo" | "single" | "library" | "cli" | "fullstack";
|
|
10
|
+
packages: string[];
|
|
11
|
+
packageManager: "pnpm" | "npm" | "yarn" | "bun" | "unknown";
|
|
12
|
+
buildTool: "tsc" | "webpack" | "vite" | "esbuild" | "rollup" | "unknown";
|
|
13
|
+
testFramework: "jest" | "vitest" | "mocha" | "node:test" | "pytest" | "unknown";
|
|
14
|
+
primaryLanguage: string;
|
|
15
|
+
hasStrictMode: boolean;
|
|
16
|
+
generatedPaths: string[];
|
|
17
|
+
protectedFiles: string[];
|
|
18
|
+
buildSpeed: "fast" | "normal" | "slow";
|
|
19
|
+
testSpeed: "fast" | "normal" | "slow";
|
|
20
|
+
scannedAt: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function scanRepoCapability(projectPath: string): RepoCapabilityProfile;
|
|
23
|
+
export declare function loadOrScanProfile(projectPath: string): RepoCapabilityProfile;
|
|
24
|
+
//# sourceMappingURL=repo-capability-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-capability-profile.d.ts","sourceRoot":"","sources":["../src/repo-capability-profile.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;IAClE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAC5D,SAAS,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzE,aAAa,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IAChF,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,qBAAqB,CAiF7E;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,qBAAqB,CAiB5E"}
|