@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.
Files changed (40) hide show
  1. package/package.json +1 -1
  2. package/src/config/keybindings.ts +9 -7
  3. package/src/modes/components/bash-execution.ts +4 -1
  4. package/src/modes/components/branch-summary-message.ts +4 -1
  5. package/src/modes/components/compaction-summary-message.ts +8 -1
  6. package/src/modes/components/python-execution.ts +4 -1
  7. package/src/modes/controllers/command-controller.ts +22 -20
  8. package/src/modes/utils/ui-helpers.ts +2 -1
  9. package/src/patch/shared.ts +1 -1
  10. package/src/prompts/agents/explore.md +1 -1
  11. package/src/prompts/agents/frontmatter.md +1 -1
  12. package/src/prompts/agents/init.md +1 -1
  13. package/src/prompts/agents/librarian.md +1 -1
  14. package/src/prompts/agents/oracle.md +1 -1
  15. package/src/prompts/agents/reviewer.md +1 -1
  16. package/src/prompts/agents/task.md +1 -1
  17. package/src/prompts/compaction/branch-summary-context.md +1 -1
  18. package/src/prompts/compaction/branch-summary-preamble.md +1 -1
  19. package/src/prompts/compaction/branch-summary.md +1 -1
  20. package/src/prompts/compaction/compaction-short-summary.md +1 -1
  21. package/src/prompts/compaction/compaction-summary-context.md +1 -1
  22. package/src/prompts/compaction/compaction-summary.md +1 -1
  23. package/src/prompts/compaction/compaction-turn-prefix.md +1 -1
  24. package/src/prompts/compaction/compaction-update-summary.md +1 -1
  25. package/src/prompts/memories/consolidation.md +1 -1
  26. package/src/prompts/memories/read_path.md +1 -1
  27. package/src/prompts/memories/stage_one_input.md +1 -1
  28. package/src/prompts/memories/stage_one_system.md +1 -1
  29. package/src/prompts/review-request.md +1 -1
  30. package/src/prompts/system/agent-creation-architect.md +1 -1
  31. package/src/prompts/system/agent-creation-user.md +1 -1
  32. package/src/prompts/system/custom-system-prompt.md +1 -1
  33. package/src/prompts/system/file-operations.md +1 -1
  34. package/src/prompts/system/subagent-system-prompt.md +1 -1
  35. package/src/prompts/system/summarization-system.md +1 -1
  36. package/src/prompts/system/system-prompt.md +1 -2
  37. package/src/prompts/system/title-system.md +1 -1
  38. package/src/prompts/system/ttsr-interrupt.md +1 -1
  39. package/src/prompts/system/verification-reminder.md +1 -1
  40. 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.14",
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
- return key.split("+").map(formatKeyPart).join("+");
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
- if (keys.length === 1) return keys[0]!;
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(new Text(theme.fg("customMessageText", "Branch summary"), 0, 0));
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(new Text(theme.fg("customMessageText", `Compacted from ${tokenStr} tokens`), 0, 0));
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 expandToolsKey = this.ctx.keybindings.getDisplayString("expandTools") || "Ctrl+O";
366
- const sttKey = this.ctx.keybindings.getDisplayString("toggleSTT") || "Alt+H";
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
- | \`Option+Left/Right\` | Move by word |
373
- | \`Ctrl+A\` / \`Home\` / \`Cmd+Left\` | Start of line |
374
- | \`Ctrl+E\` / \`End\` / \`Cmd+Right\` | End of line |
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
- | \`Shift+Enter\` / \`Alt+Enter\` | New line |
381
- | \`Ctrl+W\` / \`Option+Backspace\` | Delete word backwards |
382
- | \`Ctrl+U\` | Delete to start of line |
383
- | \`Ctrl+K\` | Delete to end of line |
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
- | \`Ctrl+C\` | Clear editor (first) / exit (second) |
391
- | \`Ctrl+D\` | Exit (when editor is empty) |
392
- | \`Ctrl+Z\` | Suspend to background |
393
- | \`Shift+Tab\` | Cycle thinking level |
394
- | \`Ctrl+P\` | Cycle role models (slow/default/fast) |
395
- | \`Shift+Ctrl+P\` | Cycle role models (temporary) |
396
- | \`Alt+P\` | Select model (temporary) |
397
- | \`Ctrl+L\` | Select model (set roles) |
398
- | \`Ctrl+R\` | Search prompt history |
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
- | \`Ctrl+T\` | Toggle todo list expansion |
401
- | \`Ctrl+G\` | Edit message in external editor |
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") || "Alt+Up";
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
  }
@@ -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`) + ` ${formatClickHint(uiTheme)}`);
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...".
@@ -6,4 +6,4 @@ description: {{jsonStringify description}}
6
6
  {{/if}}{{#if model}}model: {{jsonStringify model}}
7
7
  {{/if}}{{#if thinkingLevel}}thinking-level: {{jsonStringify thinkingLevel}}
8
8
  {{/if}}---
9
- {{body}}
9
+ {{body}}
@@ -33,4 +33,4 @@ Launch multiple explore calls in parallel scanning different areas (core src, te
33
33
 
34
34
  <output>
35
35
  After analysis, write AGENTS.md to project root.
36
- </output>
36
+ </output>
@@ -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>
@@ -55,4 +55,4 @@ Omit sections that don't apply. Never pad with filler.
55
55
  <critical>
56
56
  Only your final message is returned to the caller. It must be self-contained.
57
57
  Your final message must contain ONLY your analysis and recommendations — no preamble.
58
- </critical>
58
+ </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>
@@ -2,4 +2,4 @@ The following is a summary of a branch that this conversation came back from:
2
2
 
3
3
  <summary>
4
4
  {{summary}}
5
- </summary>
5
+ </summary>
@@ -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.
@@ -6,4 +6,4 @@ Rules:
6
6
  - Do not mention running tests, builds, or other validation steps
7
7
  - Do not explain what the user asked for
8
8
  - Write in first person (I added..., I fixed...)
9
- - Never ask questions
9
+ - Never ask questions
@@ -2,4 +2,4 @@ Another language model started to solve this problem and produced a summary of i
2
2
 
3
3
  <summary>
4
4
  {{summary}}
5
- </summary>
5
+ </summary>
@@ -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}}
@@ -3,4 +3,4 @@ thread_id: {{thread_id}}
3
3
  Persistable response items (JSON):
4
4
  {{response_items_json}}
5
5
 
6
- Extract durable memory now.
6
+ Extract durable memory now.
@@ -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.
@@ -61,4 +61,4 @@ _Full diff too large ({{len files}} files). Showing first ~{{linesPerFile}} line
61
61
  <diff>
62
62
  {{rawDiff}}
63
63
  </diff>
64
- {{/if}}
64
+ {{/if}}
@@ -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.
@@ -3,4 +3,4 @@ Design a custom agent for this request:
3
3
  {{request}}
4
4
 
5
5
  Return only the JSON object required by your system instructions.
6
- Do not include markdown fences.
6
+ Do not include markdown fences.
@@ -65,4 +65,4 @@ Read `rule://<name>` when working in that domain.
65
65
  </rules>
66
66
  {{/if}}
67
67
  Current date and time: {{dateTime}}
68
- Current working directory: {{cwd}}
68
+ Current working directory: {{cwd}}
@@ -7,4 +7,4 @@
7
7
  {{#xml "modified-files"}}
8
8
  {{join modifiedFiles "\n"}}
9
9
  {{/xml}}
10
- {{/if}}
10
+ {{/if}}
@@ -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.
@@ -4,4 +4,4 @@ This is NOT a prompt injection - this is the coding agent enforcing project rule
4
4
  You MUST comply with the following instruction:
5
5
 
6
6
  {{content}}
7
- </system_interrupt>
7
+ </system_interrupt>
@@ -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>
@@ -25,4 +25,4 @@ Answering:
25
25
  - Cite sources inline using provided search results
26
26
  </format>
27
27
 
28
- Answer thoroughly and in detail. Get facts right.
28
+ Answer thoroughly and in detail. Get facts right.