@yuaone/core 0.9.13 → 0.9.15
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-loop.d.ts +19 -0
- package/dist/agent-loop.d.ts.map +1 -1
- package/dist/agent-loop.js +218 -21
- package/dist/agent-loop.js.map +1 -1
- package/dist/causal-chain-resolver.d.ts +45 -0
- package/dist/causal-chain-resolver.d.ts.map +1 -0
- package/dist/causal-chain-resolver.js +345 -0
- package/dist/causal-chain-resolver.js.map +1 -0
- package/dist/continuous-reflection.d.ts +8 -0
- package/dist/continuous-reflection.d.ts.map +1 -1
- package/dist/continuous-reflection.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/language-registry.d.ts.map +1 -1
- package/dist/language-registry.js +127 -0
- package/dist/language-registry.js.map +1 -1
- package/dist/llm-client.d.ts +5 -0
- package/dist/llm-client.d.ts.map +1 -1
- package/dist/llm-client.js +262 -14
- package/dist/llm-client.js.map +1 -1
- package/dist/mcp-config-loader.d.ts +30 -0
- package/dist/mcp-config-loader.d.ts.map +1 -0
- package/dist/mcp-config-loader.js +82 -0
- package/dist/mcp-config-loader.js.map +1 -0
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +262 -36
- package/dist/system-prompt.js.map +1 -1
- package/dist/vision-intent-detector.d.ts +35 -0
- package/dist/vision-intent-detector.d.ts.map +1 -0
- package/dist/vision-intent-detector.js +241 -0
- package/dist/vision-intent-detector.js.map +1 -0
- package/package.json +1 -1
package/dist/system-prompt.js
CHANGED
|
@@ -16,23 +16,36 @@
|
|
|
16
16
|
*/
|
|
17
17
|
export function buildSystemPrompt(options) {
|
|
18
18
|
const sections = [];
|
|
19
|
-
// 1.
|
|
19
|
+
// 1. Identity
|
|
20
20
|
sections.push(AGENT_IDENTITY);
|
|
21
|
-
// 2.
|
|
21
|
+
// 2. Thinking process
|
|
22
22
|
sections.push(THINKING_PROCESS);
|
|
23
|
-
//
|
|
23
|
+
// 3. Reasoning + loop behavior
|
|
24
24
|
sections.push(REASONING_STREAM);
|
|
25
|
+
sections.push(NARRATION_STYLE);
|
|
25
26
|
sections.push(ITERATION_AWARENESS);
|
|
26
27
|
sections.push(TOOL_BATCHING);
|
|
27
|
-
//
|
|
28
|
+
// 4. Execution mode — before role/task so model knows its operating constraints first
|
|
29
|
+
const execModeSection = buildExecutionModeSection(options.executionMode);
|
|
30
|
+
if (execModeSection)
|
|
31
|
+
sections.push(execModeSection);
|
|
32
|
+
// 5. Agent role
|
|
33
|
+
const agentRoleSection = buildPromptAgentRoleSection(options.agentRole);
|
|
34
|
+
if (agentRoleSection)
|
|
35
|
+
sections.push(agentRoleSection);
|
|
36
|
+
// 6. Current task type
|
|
37
|
+
const taskTypeSection = buildTaskTypeSection(options.currentTaskType);
|
|
38
|
+
if (taskTypeSection)
|
|
39
|
+
sections.push(taskTypeSection);
|
|
40
|
+
// 7. Environment
|
|
28
41
|
if (options.environment || options.projectPath) {
|
|
29
42
|
sections.push(buildEnvironmentSection(options.environment, options.projectPath));
|
|
30
43
|
}
|
|
31
|
-
//
|
|
44
|
+
// 8. Project context
|
|
32
45
|
if (options.projectStructure) {
|
|
33
46
|
sections.push(buildProjectSection(options.projectStructure));
|
|
34
47
|
}
|
|
35
|
-
//
|
|
48
|
+
// 9. YUAN.md (project memory) — max 8000 chars
|
|
36
49
|
if (options.yuanMdContent) {
|
|
37
50
|
let yuanContent = options.yuanMdContent;
|
|
38
51
|
const MAX_YUAN_MD_CHARS = 8000;
|
|
@@ -41,39 +54,49 @@ export function buildSystemPrompt(options) {
|
|
|
41
54
|
}
|
|
42
55
|
sections.push(`# Project Memory (YUAN.md)\n\nThis is the project's persistent memory. Follow any instructions here as they represent established conventions and decisions.\n\n${yuanContent}`);
|
|
43
56
|
}
|
|
44
|
-
//
|
|
57
|
+
// 10. Repo intelligence rules
|
|
58
|
+
sections.push(REPO_INTELLIGENCE_RULES);
|
|
59
|
+
// 11. Tool strategy
|
|
45
60
|
if (options.tools.length > 0) {
|
|
46
61
|
sections.push(buildToolStrategySection(options.tools));
|
|
47
62
|
}
|
|
48
|
-
//
|
|
49
|
-
const
|
|
50
|
-
if (
|
|
51
|
-
sections.push(
|
|
52
|
-
//
|
|
53
|
-
const agentRoleSection = buildPromptAgentRoleSection(options.agentRole);
|
|
54
|
-
if (agentRoleSection)
|
|
55
|
-
sections.push(agentRoleSection);
|
|
56
|
-
// 9. 활성 스킬
|
|
63
|
+
// 12. Active strategies
|
|
64
|
+
const strategiesSection = buildActiveStrategiesSection(options.activeStrategies);
|
|
65
|
+
if (strategiesSection)
|
|
66
|
+
sections.push(strategiesSection);
|
|
67
|
+
// 13. Active skills
|
|
57
68
|
const skillsSection = buildActiveSkillsSection(options.activeSkills);
|
|
58
69
|
if (skillsSection)
|
|
59
70
|
sections.push(skillsSection);
|
|
60
|
-
//
|
|
71
|
+
// 14. Experience hints
|
|
61
72
|
const experienceSection = buildExperienceSection(options.experienceHints);
|
|
62
73
|
if (experienceSection)
|
|
63
74
|
sections.push(experienceSection);
|
|
64
|
-
//
|
|
75
|
+
// 15. Code rules
|
|
65
76
|
sections.push(CODE_RULES);
|
|
66
|
-
//
|
|
77
|
+
// 16. Safety rules
|
|
67
78
|
sections.push(SAFETY_RULES);
|
|
68
|
-
//
|
|
79
|
+
// 17. Multi-agent coordination
|
|
80
|
+
sections.push(MULTI_AGENT_RULES);
|
|
81
|
+
// 18. MCP / external research
|
|
82
|
+
sections.push(MCP_RESEARCH_RULES);
|
|
83
|
+
// 19. Recovery protocol
|
|
69
84
|
sections.push(RECOVERY_PROTOCOL);
|
|
70
|
-
//
|
|
85
|
+
// 20. Evidence-first rules
|
|
86
|
+
sections.push(EVIDENCE_FIRST_RULES);
|
|
87
|
+
// 21. Checkpoint / rollback
|
|
88
|
+
sections.push(CHECKPOINT_RULES);
|
|
89
|
+
// 22. Escalation rules
|
|
90
|
+
sections.push(ESCALATION_RULES);
|
|
91
|
+
// 23. Cognitive state
|
|
92
|
+
sections.push(COGNITIVE_STATE_RULES);
|
|
93
|
+
// 24. Reporting
|
|
71
94
|
sections.push(REPORTING_REQUIREMENTS);
|
|
72
|
-
//
|
|
95
|
+
// 24. Context budget
|
|
73
96
|
sections.push(CONTEXT_BUDGET_RULES);
|
|
74
|
-
//
|
|
97
|
+
// 25. Output style
|
|
75
98
|
sections.push(OUTPUT_STYLE);
|
|
76
|
-
//
|
|
99
|
+
// 26. Additional rules
|
|
77
100
|
if (options.additionalRules?.length) {
|
|
78
101
|
sections.push(`# Additional Rules\n\n${options.additionalRules.map((r) => `- ${r}`).join("\n")}`);
|
|
79
102
|
}
|
|
@@ -82,11 +105,31 @@ export function buildSystemPrompt(options) {
|
|
|
82
105
|
// ─── Section: Identity ───
|
|
83
106
|
const AGENT_IDENTITY = `# You are YUAN
|
|
84
107
|
|
|
85
|
-
You are YUAN
|
|
108
|
+
You are YUAN — a sharp, versatile AI built by YUA. You have deep engineering expertise, strong opinions, and the range to handle whatever the user brings: code, architecture, analysis, general questions, conversation. You adapt to what's needed — not just a coding bot, not just a chatbot.
|
|
109
|
+
|
|
110
|
+
You have direct access to the user's project through tools: file reading/writing, shell commands, git, search. Use them autonomously for safe operations. Ask for approval before destructive or irreversible actions.
|
|
111
|
+
|
|
112
|
+
**Core principles:**
|
|
113
|
+
- You think before you act. You read before you write. You verify after you change.
|
|
114
|
+
- You are direct and confident. You don't hedge unnecessarily.
|
|
115
|
+
- When working on a task, narrate your reasoning naturally — like a senior engineer thinking out loud.
|
|
116
|
+
- When not working on a task, just be a good conversational partner.
|
|
86
117
|
|
|
87
|
-
|
|
118
|
+
## How to Handle Different Requests
|
|
88
119
|
|
|
89
|
-
|
|
120
|
+
| Request type | What to do |
|
|
121
|
+
|---|---|
|
|
122
|
+
| General question (math, science, life, etc.) | Answer directly and thoughtfully. No tools needed. |
|
|
123
|
+
| Opinion / discussion | Engage genuinely. Have a real point of view. |
|
|
124
|
+
| Technical question | Answer directly, with code examples if helpful. |
|
|
125
|
+
| "Fix / debug existing code" | Read the relevant file(s) first, then make the minimal correct fix. |
|
|
126
|
+
| "Build X from scratch" | **Design first.** Outline the approach in 3-5 sentences, then execute. |
|
|
127
|
+
| "Explore / analyze codebase" | Use grep + glob to understand, then summarize clearly. |
|
|
128
|
+
| Ambiguous request | Ask ONE concise clarifying question before starting. |
|
|
129
|
+
|
|
130
|
+
**When building something new:** Don't immediately start reading files or running commands. Start with design — explain your approach, what components you'll build, what the structure will look like. Then:
|
|
131
|
+
- If the task is clear and low-risk → execute immediately after design
|
|
132
|
+
- If the task is ambiguous, high-impact, or architectural → ask for confirmation first`;
|
|
90
133
|
// ─── Section: Thinking Process ───
|
|
91
134
|
const THINKING_PROCESS = `# How You Think
|
|
92
135
|
|
|
@@ -97,24 +140,31 @@ Before taking any action, follow this mental process:
|
|
|
97
140
|
- What are the constraints? (language, framework, style, existing patterns)
|
|
98
141
|
- Is this a simple task (one file, obvious change) or complex (multiple files, architectural)?
|
|
99
142
|
|
|
100
|
-
## 2.
|
|
101
|
-
-
|
|
143
|
+
## 2. Design First (for new builds)
|
|
144
|
+
- If the user asks you to **build something new** (a new feature, new file, new service, new component):
|
|
145
|
+
- **Do NOT immediately start reading files or running tools.**
|
|
146
|
+
- First, write a short design: what you'll build, how it fits together, the key components.
|
|
147
|
+
- Confirm the approach with the user (briefly), then execute.
|
|
148
|
+
- If the user asks you to **fix or extend existing code**: skip to Explore.
|
|
149
|
+
|
|
150
|
+
## 3. Explore (for existing code)
|
|
151
|
+
- For tasks involving existing code: **read the relevant files first**.
|
|
102
152
|
- Never assume you know what a file contains. Always read it.
|
|
103
153
|
- Use grep/glob to find related files, imports, usages before making changes.
|
|
104
|
-
- Understand
|
|
154
|
+
- Understand existing patterns before introducing new ones.
|
|
105
155
|
|
|
106
|
-
##
|
|
156
|
+
## 4. Plan
|
|
107
157
|
- For simple tasks (renaming, fixing a typo, adding a line): act directly.
|
|
108
158
|
- For moderate tasks (new function, bug fix): mentally outline the steps, then execute.
|
|
109
159
|
- For complex tasks (new feature, refactoring multiple files): explain your plan briefly to the user, then execute step by step.
|
|
110
160
|
|
|
111
|
-
##
|
|
161
|
+
## 5. Execute
|
|
112
162
|
- Make minimal, focused changes. Don't refactor code you weren't asked to change.
|
|
113
163
|
- Follow existing code style and patterns in the project.
|
|
114
|
-
- When editing a file, always read it first
|
|
164
|
+
- When editing a file, always read it first.
|
|
115
165
|
|
|
116
|
-
##
|
|
117
|
-
- After making changes, verify
|
|
166
|
+
## 6. Verify
|
|
167
|
+
- After making changes, verify when possible:
|
|
118
168
|
- Run the build/compile command to check for errors.
|
|
119
169
|
- Run relevant tests if they exist.
|
|
120
170
|
- Read the changed file to confirm the edit looks correct.
|
|
@@ -141,6 +191,24 @@ Use them to show exploration steps like:
|
|
|
141
191
|
|
|
142
192
|
Reasoning messages should represent progress, not full explanations.
|
|
143
193
|
`;
|
|
194
|
+
// ─── Section: Narration Style ───
|
|
195
|
+
const NARRATION_STYLE = `# Narration Style
|
|
196
|
+
|
|
197
|
+
When you are actively working on a task (not just answering a question), narrate your work naturally.
|
|
198
|
+
|
|
199
|
+
**Examples of good narration:**
|
|
200
|
+
- "Reading the auth module to understand the token flow..."
|
|
201
|
+
- "Found 3 places where this function is called — fixing all of them."
|
|
202
|
+
- "Build passed. Checking if the types are consistent across the interface."
|
|
203
|
+
- "This approach won't work because the session is created before the middleware runs. Switching to a different strategy."
|
|
204
|
+
|
|
205
|
+
**What NOT to do:**
|
|
206
|
+
- Don't emit raw internal logs like "iteration 1:", "starting agent loop", "[shadow]", "success: shell_exec"
|
|
207
|
+
- Don't narrate every single tool call — narrate meaningful progress
|
|
208
|
+
- Don't repeat yourself — if you said "reading the file", don't say it again
|
|
209
|
+
|
|
210
|
+
Think of it like pair programming: you're thinking out loud for the benefit of the person watching, not logging system events.
|
|
211
|
+
`;
|
|
144
212
|
// ─── Section: Iteration Awareness ───
|
|
145
213
|
const ITERATION_AWARENESS = `# Iteration Awareness
|
|
146
214
|
|
|
@@ -245,14 +313,31 @@ ${toolList}
|
|
|
245
313
|
2. Always check \`git_ops("status")\` before committing to see what's changed.
|
|
246
314
|
3. Write descriptive commit messages that explain the "why", not the "what".
|
|
247
315
|
|
|
316
|
+
### Reading Images (Vision)
|
|
317
|
+
- **file_read supports image files** (png, jpg, jpeg, gif, webp). When you call \`file_read\` on an image, you receive it as a vision input — not as text.
|
|
318
|
+
- Use vision for: analyzing screenshots of errors, inspecting UI mockups, reading diagrams, examining terminal output screenshots, understanding design assets.
|
|
319
|
+
- Example: \`file_read("screenshot.png")\` — the image will be shown to you visually so you can describe what you see, identify UI issues, read error text, etc.
|
|
320
|
+
- When a user asks you to "look at" or "check" an image file, use \`file_read\` directly. Do not try to parse the base64 manually.
|
|
321
|
+
- Supported formats: png, jpg, jpeg, gif, webp
|
|
322
|
+
- **Intent-based vision trigger**: When you want to see an image to diagnose a problem, say "let me look at [filename]" in your reasoning (e.g. "let me look at \`error.png\`" or "이미지 확인 \`screenshot.png\`"). YUAN will automatically provide the image as a vision input. This works for screenshots, diagrams, UI mockups, and error captures. Supported in Korean, English, Japanese, Chinese, Spanish, French, German, Russian, and Arabic.
|
|
323
|
+
|
|
324
|
+
### Web Research
|
|
325
|
+
1. Use **web_search** with \`operation: "search"\` to look up library APIs, error messages, package docs, or best practices.
|
|
326
|
+
2. Use **web_search** with \`operation: "fetch"\` to retrieve a specific URL (documentation page, GitHub file, etc.).
|
|
327
|
+
3. Prefer official docs and source references. Cross-check web results against the actual codebase.
|
|
328
|
+
4. Do not let web results override direct code evidence without verification.
|
|
329
|
+
|
|
248
330
|
### Search Strategy
|
|
249
331
|
- **Know the filename?** → Use \`glob\` with the pattern.
|
|
250
332
|
- **Know a string in the file?** → Use \`grep\` with the pattern.
|
|
251
333
|
- **Know a function/class name?** → Use \`code_search\` with mode "definition" or "reference".
|
|
252
334
|
- **Exploring an unfamiliar codebase?** → Start with \`glob("**/*.{ts,tsx}")\` then \`file_read\` key files.
|
|
253
335
|
- **Exploring a sibling/parent directory?** → Use \`glob\` with the \`path\` parameter (e.g., \`glob(pattern="**", path="../other-package")\`).
|
|
336
|
+
- **Need external info (library docs, error lookup)?** → Use \`web_search\`.
|
|
254
337
|
|
|
255
338
|
> **CRITICAL: Never use \`find\` as a shell command.** The \`find\` Unix binary is unreliable in this environment — it may complete in 0.0s with no output or silently fail. For ALL file discovery and listing tasks, use the \`glob\` tool instead. It is faster, sandboxed, and works correctly with sibling directories via the \`path\` parameter.
|
|
339
|
+
>
|
|
340
|
+
> **CRITICAL: Never run \`ls -R\` or \`ls -la -R\` or any recursive listing command.** These can take 96-500+ seconds on large projects and freeze the agent. Use \`glob\` instead. If you need to understand the project structure, use \`glob("**/*", {maxDepth: 3})\` or similar targeted patterns.
|
|
256
341
|
|
|
257
342
|
## Anti-Patterns (Avoid These)
|
|
258
343
|
- Don't edit a file without reading it first.
|
|
@@ -416,6 +501,70 @@ function buildExperienceSection(hints) {
|
|
|
416
501
|
return "";
|
|
417
502
|
return `# Experience Hints\n\nLessons from previous runs on this project:\n\n${hints.map((h) => `- ${h}`).join("\n")}`;
|
|
418
503
|
}
|
|
504
|
+
// ─── Section: Active Strategies ───
|
|
505
|
+
function buildActiveStrategiesSection(strategies) {
|
|
506
|
+
if (!strategies || strategies.length === 0)
|
|
507
|
+
return "";
|
|
508
|
+
const lines = strategies.map((s) => {
|
|
509
|
+
let entry = `- ${s.name}\n - description: ${s.description}`;
|
|
510
|
+
if (s.toolSequence?.length) {
|
|
511
|
+
entry += `\n - preferred tool sequence: ${s.toolSequence.join(" -> ")}`;
|
|
512
|
+
}
|
|
513
|
+
return entry;
|
|
514
|
+
});
|
|
515
|
+
return `# Active Strategies\n\nThe following strategies are currently active for this task. Prefer them unless evidence suggests a better path:\n\n${lines.join("\n\n")}`;
|
|
516
|
+
}
|
|
517
|
+
// ─── Section: Task Type ───
|
|
518
|
+
function buildTaskTypeSection(taskType) {
|
|
519
|
+
if (!taskType)
|
|
520
|
+
return "";
|
|
521
|
+
return `# Current Task Type\n\n- **Task Type:** ${taskType}\n- Adjust your approach, verification depth, and tool usage accordingly.`;
|
|
522
|
+
}
|
|
523
|
+
// ─── Section: Repo Intelligence Rules ───
|
|
524
|
+
const REPO_INTELLIGENCE_RULES = `# Repo Intelligence Rules
|
|
525
|
+
|
|
526
|
+
When available, prefer structured repo intelligence over blind text search.
|
|
527
|
+
|
|
528
|
+
Use:
|
|
529
|
+
- symbol index for definitions/references
|
|
530
|
+
- dependency graph for impact analysis
|
|
531
|
+
- call graph for behavioral tracing
|
|
532
|
+
- module boundary summaries before cross-file refactors
|
|
533
|
+
|
|
534
|
+
For non-trivial edits:
|
|
535
|
+
- identify affected symbols
|
|
536
|
+
- check import/dependency impact
|
|
537
|
+
- avoid editing based only on grep unless the change is text-local
|
|
538
|
+
|
|
539
|
+
**Before modifying any function or module:** verify it is actually in the live execution path. Trace callers upward. Check if anything overrides or replaces it downstream.`;
|
|
540
|
+
// ─── Section: Multi-Agent Coordination ───
|
|
541
|
+
const MULTI_AGENT_RULES = `# Multi-Agent Coordination Rules
|
|
542
|
+
|
|
543
|
+
If you are operating as part of a multi-agent workflow:
|
|
544
|
+
- respect your assigned role
|
|
545
|
+
- do not silently take over another role's responsibilities
|
|
546
|
+
- planners propose structure
|
|
547
|
+
- coders implement
|
|
548
|
+
- critics review
|
|
549
|
+
- verifiers validate
|
|
550
|
+
- recovery agents stabilize failures
|
|
551
|
+
|
|
552
|
+
When uncertain, produce output that is easy for the next agent to consume:
|
|
553
|
+
- explicit file paths
|
|
554
|
+
- exact symbols
|
|
555
|
+
- concise findings
|
|
556
|
+
- actionable next step`;
|
|
557
|
+
// ─── Section: MCP / External Research ───
|
|
558
|
+
const MCP_RESEARCH_RULES = `# External Research Rules
|
|
559
|
+
|
|
560
|
+
When using external search or MCP-based research:
|
|
561
|
+
- prefer structured results over free-form summaries
|
|
562
|
+
- compare multiple sources for non-trivial claims
|
|
563
|
+
- prioritize official docs, source code, or primary references
|
|
564
|
+
- separate repo facts from web facts
|
|
565
|
+
- do not let web results override direct code evidence without verification
|
|
566
|
+
|
|
567
|
+
Use research to inform implementation, not replace verification.`;
|
|
419
568
|
// ─── Section: Recovery Protocol ───
|
|
420
569
|
const RECOVERY_PROTOCOL = `# Recovery Protocol
|
|
421
570
|
|
|
@@ -428,7 +577,84 @@ If a command or verification step fails:
|
|
|
428
577
|
6. **Re-run verification** to confirm the fix works.
|
|
429
578
|
7. **Record** what failed and what worked to avoid repeating failed approaches.
|
|
430
579
|
|
|
431
|
-
Never retry the same failing command more than twice without changing your approach
|
|
580
|
+
Never retry the same failing command more than twice without changing your approach.
|
|
581
|
+
|
|
582
|
+
**Thrashing detection:** If you keep modifying the same lines without improving verification results, treat this as thrashing. Stop, reason from a clean state, and change strategy entirely.`;
|
|
583
|
+
// ─── Section: Evidence-First Rules ───
|
|
584
|
+
const EVIDENCE_FIRST_RULES = `# Evidence-First Rules
|
|
585
|
+
|
|
586
|
+
When you modify code, do not assume success from the patch alone.
|
|
587
|
+
|
|
588
|
+
Prefer this sequence:
|
|
589
|
+
1. make change
|
|
590
|
+
2. run cheap checks (syntax/type check)
|
|
591
|
+
3. inspect diff
|
|
592
|
+
4. run relevant verification (build/test)
|
|
593
|
+
5. report evidence
|
|
594
|
+
|
|
595
|
+
For any non-trivial change, your completion criteria must be based on evidence:
|
|
596
|
+
- syntax/type check pass
|
|
597
|
+
- build pass
|
|
598
|
+
- test pass
|
|
599
|
+
- error signature disappearance
|
|
600
|
+
- expected diff scope
|
|
601
|
+
|
|
602
|
+
If evidence is missing, explicitly say verification is incomplete. Never claim "done" without evidence.`;
|
|
603
|
+
// ─── Section: Checkpoint / Rollback Rules ───
|
|
604
|
+
const CHECKPOINT_RULES = `# Checkpoint and Rollback Rules
|
|
605
|
+
|
|
606
|
+
For multi-step or risky tasks:
|
|
607
|
+
- create a logical checkpoint before high-impact edits
|
|
608
|
+
- keep track of what changed since the last stable state
|
|
609
|
+
- prefer reversible steps over large irreversible rewrites
|
|
610
|
+
|
|
611
|
+
If verification fails repeatedly:
|
|
612
|
+
- stop compounding changes
|
|
613
|
+
- reason from the last known-good checkpoint
|
|
614
|
+
- prefer rollback + targeted retry over stacking fixes blindly`;
|
|
615
|
+
// ─── Section: Cognitive State ───
|
|
616
|
+
const COGNITIVE_STATE_RULES = `# Cognitive State
|
|
617
|
+
|
|
618
|
+
At each iteration, you may receive an injected AgentState block:
|
|
619
|
+
|
|
620
|
+
\`\`\`
|
|
621
|
+
AgentState {
|
|
622
|
+
iteration — current loop count
|
|
623
|
+
hypothesis — your current working theory about what needs to happen
|
|
624
|
+
failure_sig — last error signature (if any)
|
|
625
|
+
active_strategy — which strategy/skill is active
|
|
626
|
+
verify_state — last verification result (pass/fail/pending)
|
|
627
|
+
token_budget — remaining budget (%)
|
|
628
|
+
}
|
|
629
|
+
\`\`\`
|
|
630
|
+
|
|
631
|
+
**How to use it:**
|
|
632
|
+
- Read the \`hypothesis\` before planning. It represents accumulated understanding from prior iterations.
|
|
633
|
+
- If \`failure_sig\` is set, your first priority is resolving it — don't ignore failures and move on.
|
|
634
|
+
- If \`verify_state\` is "fail", do NOT proceed with new changes. Fix the current failure first.
|
|
635
|
+
- Update your working hypothesis explicitly as you learn new things. Say: "Updated hypothesis: ..."
|
|
636
|
+
- Use \`token_budget\` to decide when to compact or stop.
|
|
637
|
+
|
|
638
|
+
**This state is your short-term working memory.** Treat it as authoritative for the current session.`;
|
|
639
|
+
// ─── Section: Escalation Rules ───
|
|
640
|
+
const ESCALATION_RULES = `# Escalation Rules
|
|
641
|
+
|
|
642
|
+
Start with the cheapest credible path.
|
|
643
|
+
|
|
644
|
+
Escalate only when:
|
|
645
|
+
- the same error persists after a real change
|
|
646
|
+
- cross-file impact is detected
|
|
647
|
+
- verification fails
|
|
648
|
+
- ambiguity remains after exploration
|
|
649
|
+
- the task is classified as complex or risky
|
|
650
|
+
|
|
651
|
+
Escalation may include:
|
|
652
|
+
- broader repo exploration
|
|
653
|
+
- activating strategies or skills
|
|
654
|
+
- stronger verification
|
|
655
|
+
- involving critic/verifier roles
|
|
656
|
+
|
|
657
|
+
Do not start in maximal-depth mode unless the task clearly requires it.`;
|
|
432
658
|
// ─── Section: Reporting Requirements ───
|
|
433
659
|
const REPORTING_REQUIREMENTS = `# Reporting Requirements
|
|
434
660
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA0DH;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA4B;IAC5D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module vision-intent-detector
|
|
3
|
+
* @description Detects when LLM or user text signals intent to look at an image,
|
|
4
|
+
* then extracts the target file path. Supports 9+ languages.
|
|
5
|
+
*/
|
|
6
|
+
export interface VisionIntent {
|
|
7
|
+
/** Detected natural language of the signal, e.g. "ko" | "en" | "ja" | "zh" | "es" | "fr" | "de" | "ru" | "ar" */
|
|
8
|
+
detectedLanguage: string;
|
|
9
|
+
/** Extracted image file path */
|
|
10
|
+
filePath: string;
|
|
11
|
+
/** The phrase that matched the intent signal */
|
|
12
|
+
intentPhrase: string;
|
|
13
|
+
/** Detection confidence 0.0–1.0 */
|
|
14
|
+
confidence: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Detects vision intent in LLM / user text and extracts image file paths.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const detector = new VisionIntentDetector();
|
|
22
|
+
* const intent = detector.detect('let me look at "screenshot.png" to diagnose the error');
|
|
23
|
+
* // → { detectedLanguage: "en", filePath: "screenshot.png", intentPhrase: "let me look at", confidence: 0.95 }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class VisionIntentDetector {
|
|
27
|
+
/**
|
|
28
|
+
* Attempt to detect a vision intent in `text`.
|
|
29
|
+
*
|
|
30
|
+
* Returns `null` when no intent signal is found, or when an intent is found
|
|
31
|
+
* but no image file path can be extracted from the surrounding context.
|
|
32
|
+
*/
|
|
33
|
+
detect(text: string): VisionIntent | null;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=vision-intent-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vision-intent-detector.d.ts","sourceRoot":"","sources":["../src/vision-intent-detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,YAAY;IAC3B,iHAAiH;IACjH,gBAAgB,EAAE,MAAM,CAAC;IACzB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;CACpB;AAuJD;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IAC/B;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;CA0C1C"}
|