@nghyane/arcane 0.1.14 → 0.1.16
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/package.json +1 -1
- package/src/config/keybindings.ts +9 -7
- package/src/modes/components/bash-execution.ts +4 -1
- package/src/modes/components/branch-summary-message.ts +4 -1
- package/src/modes/components/compaction-summary-message.ts +8 -1
- package/src/modes/components/python-execution.ts +4 -1
- package/src/modes/controllers/command-controller.ts +22 -20
- package/src/modes/utils/ui-helpers.ts +2 -1
- package/src/patch/shared.ts +1 -1
- package/src/prompts/agents/explore.md +1 -1
- package/src/prompts/agents/frontmatter.md +1 -1
- package/src/prompts/agents/init.md +1 -1
- package/src/prompts/agents/librarian.md +1 -1
- package/src/prompts/agents/oracle.md +1 -1
- package/src/prompts/agents/reviewer.md +1 -1
- package/src/prompts/agents/task.md +1 -1
- package/src/prompts/compaction/branch-summary-context.md +1 -1
- package/src/prompts/compaction/branch-summary-preamble.md +1 -1
- package/src/prompts/compaction/branch-summary.md +1 -1
- package/src/prompts/compaction/compaction-short-summary.md +1 -1
- package/src/prompts/compaction/compaction-summary-context.md +1 -1
- package/src/prompts/compaction/compaction-summary.md +1 -1
- package/src/prompts/compaction/compaction-turn-prefix.md +1 -1
- package/src/prompts/compaction/compaction-update-summary.md +1 -1
- package/src/prompts/memories/consolidation.md +1 -1
- package/src/prompts/memories/read_path.md +1 -1
- package/src/prompts/memories/stage_one_input.md +1 -1
- package/src/prompts/memories/stage_one_system.md +1 -1
- package/src/prompts/review-request.md +1 -1
- package/src/prompts/system/agent-creation-architect.md +1 -1
- package/src/prompts/system/agent-creation-user.md +1 -1
- package/src/prompts/system/custom-system-prompt.md +1 -1
- package/src/prompts/system/file-operations.md +1 -1
- package/src/prompts/system/subagent-system-prompt.md +1 -1
- package/src/prompts/system/summarization-system.md +1 -1
- package/src/prompts/system/system-prompt.md +1 -2
- package/src/prompts/system/title-system.md +1 -1
- package/src/prompts/system/ttsr-interrupt.md +1 -1
- package/src/prompts/system/verification-reminder.md +1 -1
- package/src/prompts/system/web-search.md +1 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@nghyane/arcane",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.16",
|
|
5
5
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
6
6
|
"homepage": "https://github.com/nghyane/arcane",
|
|
7
7
|
"author": "Can Bölük",
|
|
@@ -116,10 +116,12 @@ function isAppAction(action: string): action is AppAction {
|
|
|
116
116
|
/**
|
|
117
117
|
* Key hint formatting utilities for UI labels.
|
|
118
118
|
*/
|
|
119
|
+
const IS_MACOS = process.platform === "darwin";
|
|
120
|
+
|
|
119
121
|
const MODIFIER_LABELS: Record<string, string> = {
|
|
120
|
-
ctrl: "Ctrl",
|
|
121
|
-
shift: "Shift",
|
|
122
|
-
alt: "Alt",
|
|
122
|
+
ctrl: IS_MACOS ? "⌃" : "Ctrl",
|
|
123
|
+
shift: IS_MACOS ? "⇧" : "Shift",
|
|
124
|
+
alt: IS_MACOS ? "⌥" : "Alt",
|
|
123
125
|
};
|
|
124
126
|
|
|
125
127
|
const KEY_LABELS: Record<string, string> = {
|
|
@@ -154,7 +156,8 @@ function formatKeyPart(part: string): string {
|
|
|
154
156
|
}
|
|
155
157
|
|
|
156
158
|
export function formatKeyHint(key: KeyId): string {
|
|
157
|
-
|
|
159
|
+
const parts = key.split("+").map(formatKeyPart);
|
|
160
|
+
return IS_MACOS ? parts.join("") : parts.join("+");
|
|
158
161
|
}
|
|
159
162
|
|
|
160
163
|
export function formatKeyHints(keys: KeyId | KeyId[]): string {
|
|
@@ -253,13 +256,12 @@ export class KeybindingsManager {
|
|
|
253
256
|
}
|
|
254
257
|
|
|
255
258
|
/**
|
|
256
|
-
* Get display string for an action.
|
|
259
|
+
* Get display string for an action, formatted for the current platform.
|
|
257
260
|
*/
|
|
258
261
|
getDisplayString(action: AppAction): string {
|
|
259
262
|
const keys = this.getKeys(action);
|
|
260
263
|
if (keys.length === 0) return "";
|
|
261
|
-
|
|
262
|
-
return keys.join("/");
|
|
264
|
+
return formatKeyHints(keys);
|
|
263
265
|
}
|
|
264
266
|
|
|
265
267
|
/**
|
|
@@ -8,7 +8,7 @@ import { Container, Loader, Spacer, Text, type TUI } from "@nghyane/arcane-tui";
|
|
|
8
8
|
import { getSymbolTheme, theme } from "../../theme/theme";
|
|
9
9
|
import type { TruncationMeta } from "../../tools/output-meta";
|
|
10
10
|
import { renderStatusLine } from "../../tui/status-line";
|
|
11
|
-
import { formatCount, replaceTabs } from "../../ui/render-utils";
|
|
11
|
+
import { formatClickHint, formatCount, replaceTabs } from "../../ui/render-utils";
|
|
12
12
|
|
|
13
13
|
const TAIL_LINES = 4;
|
|
14
14
|
const MAX_DISPLAY_LINE_CHARS = 4000;
|
|
@@ -127,6 +127,9 @@ export class BashExecutionComponent extends Container {
|
|
|
127
127
|
if (this.#truncation) {
|
|
128
128
|
bodyLines.push(theme.fg("warning", "output truncated"));
|
|
129
129
|
}
|
|
130
|
+
if (!showAll && skipped > 0) {
|
|
131
|
+
bodyLines.push(formatClickHint(theme));
|
|
132
|
+
}
|
|
130
133
|
}
|
|
131
134
|
|
|
132
135
|
this.#bodyText.setText(bodyLines.length > 0 ? bodyLines.join("\n") : "");
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Container, LeftBorderBox, Markdown, Spacer, Text } from "@nghyane/arcane-tui";
|
|
2
2
|
import type { BranchSummaryMessage } from "../../session/messages";
|
|
3
3
|
import { getMarkdownTheme, theme } from "../../theme/theme";
|
|
4
|
+
import { formatClickHint } from "../../ui/render-utils";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Component that renders a branch summary message with collapsed/expanded state.
|
|
@@ -42,7 +43,9 @@ export class BranchSummaryMessageComponent extends Container {
|
|
|
42
43
|
}),
|
|
43
44
|
);
|
|
44
45
|
} else {
|
|
45
|
-
this.#box.addChild(
|
|
46
|
+
this.#box.addChild(
|
|
47
|
+
new Text(`${theme.fg("customMessageText", "Branch summary")} ${formatClickHint(theme)}`, 0, 0),
|
|
48
|
+
);
|
|
46
49
|
}
|
|
47
50
|
}
|
|
48
51
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Container, LeftBorderBox, Markdown, Spacer, Text } from "@nghyane/arcane-tui";
|
|
2
2
|
import type { CompactionSummaryMessage } from "../../session/messages";
|
|
3
3
|
import { getMarkdownTheme, theme } from "../../theme/theme";
|
|
4
|
+
import { formatClickHint } from "../../ui/render-utils";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Component that renders a compaction message with collapsed/expanded state.
|
|
@@ -43,7 +44,13 @@ export class CompactionSummaryMessageComponent extends Container {
|
|
|
43
44
|
}),
|
|
44
45
|
);
|
|
45
46
|
} else {
|
|
46
|
-
this.#box.addChild(
|
|
47
|
+
this.#box.addChild(
|
|
48
|
+
new Text(
|
|
49
|
+
`${theme.fg("customMessageText", `Compacted from ${tokenStr} tokens`)} ${formatClickHint(theme)}`,
|
|
50
|
+
0,
|
|
51
|
+
0,
|
|
52
|
+
),
|
|
53
|
+
);
|
|
47
54
|
if (this.message.shortSummary) {
|
|
48
55
|
this.#box.addChild(new Text(theme.fg("customMessageText", this.message.shortSummary), 0, 1));
|
|
49
56
|
}
|
|
@@ -8,7 +8,7 @@ import { Container, Loader, Spacer, Text, type TUI } from "@nghyane/arcane-tui";
|
|
|
8
8
|
import { getSymbolTheme, theme } from "../../theme/theme";
|
|
9
9
|
import type { TruncationMeta } from "../../tools/output-meta";
|
|
10
10
|
import { renderStatusLine } from "../../tui/status-line";
|
|
11
|
-
import { formatCount, replaceTabs } from "../../ui/render-utils";
|
|
11
|
+
import { formatClickHint, formatCount, replaceTabs } from "../../ui/render-utils";
|
|
12
12
|
|
|
13
13
|
const TAIL_LINES = 4;
|
|
14
14
|
const MAX_DISPLAY_LINE_CHARS = 4000;
|
|
@@ -127,6 +127,9 @@ export class PythonExecutionComponent extends Container {
|
|
|
127
127
|
if (this.#truncation) {
|
|
128
128
|
bodyLines.push(theme.fg("warning", "output truncated"));
|
|
129
129
|
}
|
|
130
|
+
if (!showAll && skipped > 0) {
|
|
131
|
+
bodyLines.push(formatClickHint(theme));
|
|
132
|
+
}
|
|
130
133
|
}
|
|
131
134
|
|
|
132
135
|
this.#bodyText.setText(bodyLines.length > 0 ? bodyLines.join("\n") : "");
|
|
@@ -14,6 +14,7 @@ import { Snowflake } from "@nghyane/arcane-utils";
|
|
|
14
14
|
import { setProjectDir } from "@nghyane/arcane-utils/dirs";
|
|
15
15
|
import { $ } from "bun";
|
|
16
16
|
import { reset as resetCapabilities } from "../../capability";
|
|
17
|
+
import { formatKeyHint, type KeyId } from "../../config/keybindings";
|
|
17
18
|
import { loadCustomShare } from "../../export/custom-share";
|
|
18
19
|
import type { CompactOptions } from "../../extensibility/extensions/types";
|
|
19
20
|
import { getGatewayStatus } from "../../ipy/gateway-coordinator";
|
|
@@ -362,43 +363,44 @@ export class CommandController {
|
|
|
362
363
|
}
|
|
363
364
|
|
|
364
365
|
handleHotkeysCommand(): void {
|
|
365
|
-
const
|
|
366
|
-
const
|
|
366
|
+
const k = (id: string) => formatKeyHint(id as KeyId);
|
|
367
|
+
const expandToolsKey = this.ctx.keybindings.getDisplayString("expandTools") || k("ctrl+o");
|
|
368
|
+
const sttKey = this.ctx.keybindings.getDisplayString("toggleSTT") || k("alt+h");
|
|
367
369
|
const hotkeys = `
|
|
368
370
|
**Navigation**
|
|
369
371
|
| Key | Action |
|
|
370
372
|
|-----|--------|
|
|
371
373
|
| \`Arrow keys\` | Move cursor / browse history (Up when empty) |
|
|
372
|
-
|
|
|
373
|
-
|
|
|
374
|
-
|
|
|
374
|
+
| \`${k("alt+left")}/${k("alt+right")}\` | Move by word |
|
|
375
|
+
| \`${k("ctrl+a")}\` / \`Home\` | Start of line |
|
|
376
|
+
| \`${k("ctrl+e")}\` / \`End\` | End of line |
|
|
375
377
|
|
|
376
378
|
**Editing**
|
|
377
379
|
| Key | Action |
|
|
378
380
|
|-----|--------|
|
|
379
381
|
| \`Enter\` | Send message |
|
|
380
|
-
|
|
|
381
|
-
|
|
|
382
|
-
|
|
|
383
|
-
|
|
|
382
|
+
| \`${k("shift+enter")}\` / \`${k("alt+enter")}\` | New line |
|
|
383
|
+
| \`${k("ctrl+w")}\` / \`${k("alt+backspace")}\` | Delete word backwards |
|
|
384
|
+
| \`${k("ctrl+u")}\` | Delete to start of line |
|
|
385
|
+
| \`${k("ctrl+k")}\` | Delete to end of line |
|
|
384
386
|
|
|
385
387
|
**Other**
|
|
386
388
|
| Key | Action |
|
|
387
389
|
|-----|--------|
|
|
388
390
|
| \`Tab\` | Path completion / accept autocomplete |
|
|
389
391
|
| \`Escape\` | Cancel autocomplete / abort streaming |
|
|
390
|
-
|
|
|
391
|
-
|
|
|
392
|
-
|
|
|
393
|
-
|
|
|
394
|
-
|
|
|
395
|
-
|
|
|
396
|
-
|
|
|
397
|
-
|
|
|
398
|
-
|
|
|
392
|
+
| \`${k("ctrl+c")}\` | Clear editor (first) / exit (second) |
|
|
393
|
+
| \`${k("ctrl+d")}\` | Exit (when editor is empty) |
|
|
394
|
+
| \`${k("ctrl+z")}\` | Suspend to background |
|
|
395
|
+
| \`${k("shift+tab")}\` | Cycle thinking level |
|
|
396
|
+
| \`${k("ctrl+p")}\` | Cycle role models (slow/default/fast) |
|
|
397
|
+
| \`${k("shift+ctrl+p")}\` | Cycle role models (temporary) |
|
|
398
|
+
| \`${k("alt+p")}\` | Select model (temporary) |
|
|
399
|
+
| \`${k("ctrl+l")}\` | Select model (set roles) |
|
|
400
|
+
| \`${k("ctrl+r")}\` | Search prompt history |
|
|
399
401
|
| \`${expandToolsKey}\` | Toggle tool output expansion |
|
|
400
|
-
|
|
|
401
|
-
|
|
|
402
|
+
| \`${k("ctrl+t")}\` | Toggle todo list expansion |
|
|
403
|
+
| \`${k("ctrl+g")}\` | Edit message in external editor |
|
|
402
404
|
| \`${sttKey}\` | Toggle speech-to-text recording |
|
|
403
405
|
| \`/\` | Slash commands |
|
|
404
406
|
| \`!\` | Run bash command |
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AgentMessage } from "@nghyane/arcane-agent";
|
|
2
2
|
import type { AssistantMessage, Message } from "@nghyane/arcane-ai";
|
|
3
3
|
import { Spacer, Text, TruncatedText } from "@nghyane/arcane-tui";
|
|
4
|
+
import { formatKeyHint, type KeyId } from "../../config/keybindings";
|
|
4
5
|
import { settings } from "../../config/settings";
|
|
5
6
|
import { AssistantMessageComponent } from "../../modes/components/assistant-message";
|
|
6
7
|
import { BashExecutionComponent } from "../../modes/components/bash-execution";
|
|
@@ -385,7 +386,7 @@ export class UiHelpers {
|
|
|
385
386
|
const queuedText = theme.fg("dim", `${entry.label}: ${entry.message}`);
|
|
386
387
|
this.ctx.pendingMessagesContainer.addChild(new TruncatedText(queuedText, 1, 0));
|
|
387
388
|
}
|
|
388
|
-
const dequeueKey = this.ctx.keybindings.getDisplayString("dequeue") || "
|
|
389
|
+
const dequeueKey = this.ctx.keybindings.getDisplayString("dequeue") || formatKeyHint("alt+up" as KeyId);
|
|
389
390
|
const hintText = theme.fg("dim", `${theme.tree.hook} ${dequeueKey} to edit`);
|
|
390
391
|
this.ctx.pendingMessagesContainer.addChild(new TruncatedText(hintText, 1, 0));
|
|
391
392
|
}
|
package/src/patch/shared.ts
CHANGED
|
@@ -315,7 +315,7 @@ export const editToolRenderer = {
|
|
|
315
315
|
}
|
|
316
316
|
if (!expanded && diffLines.length > maxLines) {
|
|
317
317
|
const remaining = diffLines.length - maxLines;
|
|
318
|
-
treeBody.push(uiTheme.fg("dim", `… ${remaining} more lines`)
|
|
318
|
+
treeBody.push(`${uiTheme.fg("dim", `… ${remaining} more lines`)} ${formatClickHint(uiTheme)}`);
|
|
319
319
|
}
|
|
320
320
|
|
|
321
321
|
// Diagnostics
|
|
@@ -30,4 +30,4 @@ Before searching, decompose the query into:
|
|
|
30
30
|
- Format each file as: `[relativePath#L{start}-L{end}](file://{absolutePath}#L{start}-L{end})`
|
|
31
31
|
- **Use generous line ranges**: Extend ranges to capture complete logical units (full functions, classes, blocks). Add 5-10 lines buffer.
|
|
32
32
|
|
|
33
|
-
Your final message must contain ONLY the search results — no preamble like "I'll search for...".
|
|
33
|
+
Your final message must contain ONLY the search results — no preamble like "I'll search for...".
|
|
@@ -59,4 +59,4 @@ Be comprehensive and direct. No filler.
|
|
|
59
59
|
Only your final message is returned to the caller. It must be self-contained with all findings, paths, and explanations. Do not reference tool names or intermediate steps — present conclusions directly. Your final message must contain ONLY the information found — no preamble.
|
|
60
60
|
|
|
61
61
|
Use "fluent" linking — embed file/PR/commit references in natural noun phrases, not raw URLs. Example: The [`handleAuth` function](file:///path/to/auth.ts#L42) validates tokens.
|
|
62
|
-
</critical>
|
|
62
|
+
</critical>
|
|
@@ -33,4 +33,4 @@ Final verdict:
|
|
|
33
33
|
<critical>
|
|
34
34
|
Only your last message is returned. It must be self-contained — all findings and verdict in one response. Your final message must contain ONLY the review findings — no preamble.
|
|
35
35
|
Every finding must be patch-anchored and evidence-backed.
|
|
36
|
-
</critical>
|
|
36
|
+
</critical>
|
|
@@ -19,4 +19,4 @@ Do the task end to end. Don’t hand back half-baked work.
|
|
|
19
19
|
- When done, write a concise summary of what you did as your final response. This is your output.
|
|
20
20
|
- Use tools to get feedback on your generated code. Run diagnostics and type checks. If build/test commands aren’t known, find them in the environment.
|
|
21
21
|
- Follow the main agent’s instructions and AGENTS.md conventions.
|
|
22
|
-
</directives>
|
|
22
|
+
</directives>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
The user explored a different conversation branch before returning here.
|
|
2
|
-
Summary of that exploration:
|
|
2
|
+
Summary of that exploration:
|
|
@@ -30,4 +30,4 @@ Use EXACT format:
|
|
|
30
30
|
## Next Steps
|
|
31
31
|
1. [What should happen next to continue]
|
|
32
32
|
|
|
33
|
-
Prioritize recent work over older context. Keep sections concise. Preserve exact file paths, function names, error messages.
|
|
33
|
+
Prioritize recent work over older context. Keep sections concise. Preserve exact file paths, function names, error messages.
|
|
@@ -38,4 +38,4 @@ Use this format (sections can be omitted if not applicable):
|
|
|
38
38
|
|
|
39
39
|
Output only structured summary; no extra text.
|
|
40
40
|
|
|
41
|
-
Prioritize recent context over older context — the last 2-3 turns are most likely to contain the active work state. Preserve exact file paths, function names, error messages, and relevant tool outputs. Include repository state changes (branch, uncommitted changes) if mentioned.
|
|
41
|
+
Prioritize recent context over older context — the last 2-3 turns are most likely to contain the active work state. Preserve exact file paths, function names, error messages, and relevant tool outputs. Include repository state changes (branch, uncommitted changes) if mentioned.
|
|
@@ -14,4 +14,4 @@ Summarize the prefix to provide context for the retained suffix:
|
|
|
14
14
|
|
|
15
15
|
Output only the structured summary. No extra text.
|
|
16
16
|
|
|
17
|
-
Be concise. Preserve exact file paths, function names, error messages, and relevant tool outputs or command results if they appear. Focus on what's needed to understand the kept suffix.
|
|
17
|
+
Be concise. Preserve exact file paths, function names, error messages, and relevant tool outputs or command results if they appear. Focus on what's needed to understand the kept suffix.
|
|
@@ -42,4 +42,4 @@ Use this format (omit sections if not applicable):
|
|
|
42
42
|
|
|
43
43
|
Output only structured summary; no extra text.
|
|
44
44
|
|
|
45
|
-
Keep sections concise. Preserve relevant tool outputs/command results. Include repository state changes (branch, uncommitted changes) if mentioned.
|
|
45
|
+
Keep sections concise. Preserve relevant tool outputs/command results. Include repository state changes (branch, uncommitted changes) if mentioned.
|
|
@@ -27,4 +27,4 @@ Requirements:
|
|
|
27
27
|
- scripts/templates/examples are optional. When present, each entry writes to skills/<name>/<bucket>/<path>.
|
|
28
28
|
- Only include files worth keeping long-term; omit stale assets so they are pruned.
|
|
29
29
|
- Preserve useful prior themes; remove stale or contradictory guidance.
|
|
30
|
-
- Keep memory advisory: current repository state wins.
|
|
30
|
+
- Keep memory advisory: current repository state wins.
|
|
@@ -8,4 +8,4 @@ Operational rules:
|
|
|
8
8
|
5) Conflict workflow: if memory disagrees with repo state or user instruction, prefer repo/user, treat memory as stale, proceed with corrected behavior, then update/regenerate memory artifacts through normal execution.
|
|
9
9
|
6) Escalate confidence only after repository verification; memory alone is never sufficient proof.
|
|
10
10
|
Memory summary:
|
|
11
|
-
{{memory_summary}}
|
|
11
|
+
{{memory_summary}}
|
|
@@ -18,4 +18,4 @@ Rules:
|
|
|
18
18
|
- rollout_summary: compact synopsis of what future runs should remember.
|
|
19
19
|
- rollout_slug: short lowercase slug (letters/numbers/_), or null.
|
|
20
20
|
- raw_memory: detailed durable memory blocks with enough context to reuse.
|
|
21
|
-
- If no durable signal exists, return empty strings for rollout_summary/raw_memory and null rollout_slug.
|
|
21
|
+
- If no durable signal exists, return empty strings for rollout_summary/raw_memory and null rollout_slug.
|
|
@@ -62,4 +62,4 @@ Key principles for your system prompts:
|
|
|
62
62
|
- Make the agent proactive in seeking clarification when needed
|
|
63
63
|
- Build in quality assurance and self-correction mechanisms
|
|
64
64
|
|
|
65
|
-
Remember: The agents you create should be autonomous experts capable of handling their designated tasks with minimal additional guidance. Your system prompts are their complete operational manual.
|
|
65
|
+
Remember: The agents you create should be autonomous experts capable of handling their designated tasks with minimal additional guidance. Your system prompts are their complete operational manual.
|
|
@@ -16,4 +16,4 @@ For additional parent conversation context, check {{contextFile}} (`tail -100` o
|
|
|
16
16
|
- Do NOT abort due to uncertainty or missing info that can be obtained via tools or repo context. Use find/grep/read first, then proceed with reasonable defaults if multiple options are acceptable.
|
|
17
17
|
- Aborting is only acceptable when truly blocked after exhausting tools and reasonable attempts. If you abort, include what you tried and the exact blocker in the result.
|
|
18
18
|
- Keep going until request is fully fulfilled. This matters.
|
|
19
|
-
</critical>
|
|
19
|
+
</critical>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
You are a context summarization assistant. Your task is to read a conversation between a user and an AI coding assistant, then produce a structured summary following the exact format specified.
|
|
2
2
|
|
|
3
|
-
Do NOT continue the conversation. Do NOT respond to any questions in the conversation. ONLY output the structured summary.
|
|
3
|
+
Do NOT continue the conversation. Do NOT respond to any questions in the conversation. ONLY output the structured summary.
|
|
@@ -22,7 +22,6 @@ Balance initiative with predictability:
|
|
|
22
22
|
{{#list environment prefix="- " join="\n"}}{{label}}: {{value}}{{/list}}
|
|
23
23
|
</environment>
|
|
24
24
|
|
|
25
|
-
|
|
26
25
|
## Tool Usage
|
|
27
26
|
- Use specialized tools instead of Bash for file operations.
|
|
28
27
|
- Prefer doing work directly — you retain full context and produce better results.
|
|
@@ -280,4 +279,4 @@ Current date: {{date}}
|
|
|
280
279
|
{{/each}}
|
|
281
280
|
</output_style>
|
|
282
281
|
|
|
283
|
-
{{appendSystemPrompt}}
|
|
282
|
+
{{appendSystemPrompt}}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
Generate a very short title (3-6 words) for a coding session based on the user's first message. The title should capture the main task or topic.
|
|
2
|
-
Output ONLY the title, nothing else. No quotes, no punctuation at the end.
|
|
2
|
+
Output ONLY the title, nothing else. No quotes, no punctuation at the end.
|
|
@@ -3,4 +3,4 @@ You modified files in this turn but did not run verification.
|
|
|
3
3
|
Run the project's verification commands (format, typecheck, lint) and fix any errors you introduced.
|
|
4
4
|
Do not consider the task complete until verification passes.
|
|
5
5
|
(Reminder {{attempt}}/{{maxAttempts}})
|
|
6
|
-
</system_reminder>
|
|
6
|
+
</system_reminder>
|