@kenkaiiii/ggcoder 4.3.184 → 4.3.185

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/style-packs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAc,EAAE,GAAW;IAClD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AAC3B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAuB,EAAE,GAAW;IAC1E,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,CACL,6BAA6B;QAC7B,4EAA4E;QAC5E,8DAA8D;QAC9D,GAAG,2BAA2B,MAAM;QACpC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CACnB,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,2BAA2B,GAAG;;;;;;;;;qRASiP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/style-packs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAc,EAAE,GAAW;IAClD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AAC3B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAuB,EAAE,GAAW;IAC1E,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,CACL,6BAA6B;QAC7B,wJAAwJ;QACxJ,GAAG,2BAA2B,MAAM;QACpC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CACnB,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,2BAA2B,GAAG;;;;;;;;;uJASmH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAyB5C,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAyJrE"}
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAyB5C,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAmKrE"}
@@ -21,14 +21,18 @@ export async function runInteractive(config) {
21
21
  await fs.mkdir(path.join(localGGDir, "skills"), { recursive: true });
22
22
  await fs.mkdir(path.join(localGGDir, "commands"), { recursive: true });
23
23
  await fs.mkdir(path.join(localGGDir, "agents"), { recursive: true });
24
- // Discover skills & build system prompt
24
+ // Discover skills and create tools before building the prompt so tool names are accurate.
25
25
  const skills = await discoverSkills({
26
26
  globalSkillsDir: paths.skillsDir,
27
27
  projectDir: cwd,
28
28
  });
29
- const systemPrompt = config.systemPrompt ?? (await buildSystemPrompt(cwd, skills));
30
- // Create tools
31
- const { tools, processManager } = createTools(cwd, { skills });
29
+ const { tools, processManager } = createTools(cwd, {
30
+ skills,
31
+ provider,
32
+ model,
33
+ });
34
+ const systemPrompt = config.systemPrompt ??
35
+ (await buildSystemPrompt(cwd, skills, false, undefined, tools.map((tool) => tool.name)));
32
36
  process.on("exit", () => processManager.shutdownAll());
33
37
  const authStorage = new AuthStorage(paths.authFile);
34
38
  await authStorage.load();
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAM9D;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,KAAK,EAAE,EAChB,QAAQ,CAAC,EAAE,OAAO,EAClB,gBAAgB,CAAC,EAAE,MAAM,EACzB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,EAC7B,eAAe,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC,CAuNjB"}
1
+ {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAwK9D;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,KAAK,EAAE,EAChB,QAAQ,CAAC,EAAE,OAAO,EAClB,gBAAgB,CAAC,EAAE,MAAM,EACzB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,EAC7B,eAAe,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC,CAkDjB"}
@@ -6,21 +6,14 @@ import { TOOL_PROMPT_HINTS, DEFAULT_TOOL_NAMES } from "./tools/prompt-hints.js";
6
6
  import { renderStylePacksSection } from "./core/style-packs/index.js";
7
7
  import { detectVerifyCommands, renderVerifySection } from "./core/verify-commands.js";
8
8
  const CONTEXT_FILES = ["AGENTS.md", "CLAUDE.md", ".cursorrules", "CONVENTIONS.md"];
9
- /**
10
- * Build the system prompt dynamically based on cwd and context.
11
- *
12
- * @param toolNames — if provided, the Tools section only lists these tools.
13
- * Pass `tools.map(t => t.name)` from the session so the prompt reflects
14
- * exactly what the model can call. Defaults to the full built-in set.
15
- */
16
- export async function buildSystemPrompt(cwd, skills, planMode, approvedPlanPath, toolNames, activeLanguages) {
17
- const sections = [];
18
- // 1. Identity
19
- sections.push(`You are GG Coder by Ken Kai — a coding agent that works directly in the user's codebase. ` +
9
+ const UNCACHED_MARKER = "<!-- uncached -->";
10
+ function renderIdentitySection() {
11
+ return (`You are GG Coder by Ken Kai — a coding agent that works directly in the user's codebase. ` +
20
12
  `You explore, understand, change, and verify code — completing tasks end-to-end ` +
21
13
  `rather than just suggesting edits.`);
22
- // 1b. How to Talk — governs intermediate text between tool calls AND final replies
23
- sections.push(`## How to Talk\n\n` +
14
+ }
15
+ function renderTalkSection() {
16
+ return (`## How to Talk\n\n` +
24
17
  `**Between tool calls**: one short sentence max — what you're doing next. ` +
25
18
  `No quoting tool output, no restating the problem, no thinking out loud. Think silently, then act.\n\n` +
26
19
  `**Final replies**: 1–3 sentences, hard cap 5. No preamble, no recap, no "let me know if…". ` +
@@ -31,8 +24,9 @@ export async function buildSystemPrompt(cwd, skills, planMode, approvedPlanPath,
31
24
  `Good: "Found it — forms.css global rule out-specifies mine. Fixing." [edit]\n\n` +
32
25
  `**Exceptions**: ask before destructive actions, surface real tradeoffs, admit unverified claims. ` +
33
26
  `Plan mode is exempt.`);
34
- // 2. How to Work (compressed)
35
- sections.push(`## How to Work\n\n` +
27
+ }
28
+ function renderWorkSection() {
29
+ return (`## How to Work\n\n` +
36
30
  `- **Read before \`edit\`/\`write\`.** No edit/write without a prior read this session — missed reads waste the payload.\n` +
37
31
  `- **Re-read after mutating tools.** Anything that rewrites files on disk (formatter, \`lint --fix\`, codemods, codegen, \`git checkout --\`) invalidates your cached view. Read the file again before the next \`edit\`/\`write\` — stale \`old_string\` matches fail, or worse, silently overwrite the mutation.\n` +
38
32
  `- **Compute in bash, write with \`edit\`.** When a task needs computation (word counts, regex, padding, structural validation), use bash for the computation and the \`edit\` tool to apply the result. Shelling out to \`python -c '... f.write(...)'\` or \`sed -i\` loses read-tracking, partial-apply, indent forgiveness, and actionable error messages — and a mid-script crash leaves the file in unknown state.\n` +
@@ -41,73 +35,60 @@ export async function buildSystemPrompt(cwd, skills, planMode, approvedPlanPath,
41
35
  `- **Just do it.** Routine follow-up (build, migrate, seed, re-run) is yours — don't ask.\n` +
42
36
  `- **Ask first for destructive actions**: deleting files, force-push, dropping data, killing processes, \`rm -rf\`, \`--hard\`, \`--force\`.\n` +
43
37
  `- **Investigate unexpected state** (unfamiliar files, branches, locks) — may be the user's in-progress work.\n` +
44
- `- **Precedence when rules conflict** (highest first): CLAUDE.md / AGENTS.md → existing patterns in the file/module being edited → Language Style Packs → defaults in this prompt. Apply pack conventions to new code; mirror existing patterns when extending old code. Library names in packs are illustrative — use what the project already imports.\n` +
38
+ `- **Precedence when rules conflict** (highest first): AGENTS.md / CLAUDE.md / .cursorrules / CONVENTIONS.md → existing patterns in the edited file/module → Language Style Packs → defaults in this prompt.\n` +
45
39
  `- **Verify after meaningful edits.** When a Verification section is present, run the relevant commands for the language(s) you touched. Fix failures before reporting completion.\n` +
46
40
  `- **Untracked files → \`.gitignore\`**: artifacts, configs, secrets, logs, scratch, \`.env\`, caches.\n` +
47
41
  `- **Never fake verification.** If you didn't run the check or it failed, say so. Don't invent results.`);
48
- // 2b. Plan mode
49
- if (planMode) {
50
- sections.push(`## Plan Mode (ACTIVE)\n\n` +
51
- `You are in PLAN MODE. Research and design an implementation plan before writing any code.\n\n` +
52
- `### Workflow\n` +
53
- `1. Explore: read, grep, find, ls to understand the codebase\n` +
54
- `2. Research: \`web_search\` + \`web_fetch\` for docs; \`mcp__kencode-search__searchCode\` for real code samples — literal text or RE2 regex (NOT semantic); start with \`peek: true\` for paths+counts, then drill in narrowed by \`repo\` + \`path\` (full usage in Research & Verification below)\n` +
55
- `3. Draft: write the plan to .gg/plans/<name>.md\n` +
56
- `4. Submit: call exit_plan with the plan path\n\n` +
57
- `### Rules\n` +
58
- `- bash, edit, write (except to .gg/plans/), and subagent are restricted\n` +
59
- `- Be specific: exact file paths, function names, line numbers\n` +
60
- `- Note risks and verification criteria\n\n` +
61
- `### Plan Format\n` +
62
- `Plan can have any structure, but it MUST end with a section titled exactly \`## Steps\` ` +
63
- `containing a single flat numbered list. This section is parsed by the progress widget — ` +
64
- `the ONLY source of truth for step tracking. Do NOT put numbered lists elsewhere.`);
65
- }
66
- // 2c. Approved plan — injected when a plan has been approved for implementation
67
- if (approvedPlanPath && !planMode) {
68
- let planContent = "";
69
- try {
70
- planContent = await fs.readFile(approvedPlanPath, "utf-8");
71
- }
72
- catch {
73
- // Plan file not found — skip injection
74
- }
75
- if (planContent.trim()) {
76
- sections.push(`## Approved Plan\n\n` +
77
- `Follow this plan strictly. File: ${approvedPlanPath}\n\n` +
78
- `<approved_plan>\n${planContent.trim()}\n</approved_plan>\n\n` +
79
- `- Follow step order. Don't deviate without user confirmation.\n` +
80
- `- After each step from \`## Steps\`, output \`[DONE:n]\` (e.g. \`[DONE:1]\`) to update the progress widget, then continue with step n+1 in the same turn.`);
81
- }
82
- }
83
- // 3. Research & Verification
84
- sections.push(`## Research & Verification\n\n` +
85
- `Your training data may be outdated. Do not assume verify.\n\n` +
86
- `- **Docs first**: \`web_search\` → \`web_fetch\`.\n` +
87
- `- **Real code second**: \`mcp__kencode-search__searchCode\` — literal-text or RE2-regex search across 2M+ public repos. **Not semantic.**\n` +
88
- ` - **Concept → query recipe.** If you only have a concept ("karaoke captions", "spring animation"), DO NOT search the concept. Anchor on a literal token a matching file would contain:\n` +
89
- ` 1. A library import — \`from "remotion"\`, \`import { spring }\`, \`from "@remotion/captions"\`\n` +
90
- ` 2. A known identifier/prop/hook — \`useVideoConfig\`, \`interpolate(\`, \`<Sequence\`, \`SubtitlePage\`\n` +
91
- ` 3. A unique config key — \`"defaultExport":\`, \`assetsInclude:\`\n` +
92
- ` Bad: \`karaoke word animation subtitle\` → zero hits, every time. Good: \`from "@remotion/captions"\` + \`peek: true\` → real files; then narrow with \`repo\` + \`path\` and read them.\n` +
93
- ` - **Filename + topic ≠ query.** \`Page.tsx tiktok\` won't match. Use \`path: "Page.tsx"\` + \`repo: "remotion-dev"\` + a literal token in \`query\`.\n` +
94
- ` - Filters: \`language: ["TypeScript"]\`, \`repo: "owner/name"\` (substring), \`path: "src/components/"\` (substring), \`matchCase\`, \`useRegexp\`.\n` +
95
- ` - Workflow: \`peek: true\` first → paths + match counts only (cheap triage). Then call again narrowed by \`repo\` + \`path\` for full snippets. Paginate with \`offset\`.\n` +
96
- ` - Defaults exclude tests, \`node_modules\`, vendored, build, and generated files — pass \`includeTests: true\` or \`includeVendored: true\` to widen.\n` +
97
- ` - Token budget: \`maxResults\` defaults to 10 (cap 200), \`contextLines\` defaults to 5 (range 0–20). Keep both small unless you need more.\n` +
98
- ` - RE2 regex only: no lookahead/lookbehind/backrefs; multi-line patterns need \`(?s)\` prefix.\n` +
99
- `- Applies to everything — APIs, CLI flags, configs (vite.config.ts, package.json, Dockerfile, GH Actions), shell idioms, schema shapes, error wording, conventions. Not just "unfamiliar" code.`);
100
- // 4. Code Quality
101
- sections.push(`## Code Quality\n\n` +
42
+ }
43
+ function renderPlanModeSection() {
44
+ return (`## Plan Mode (ACTIVE)\n\n` +
45
+ `You are in PLAN MODE. Research and design an implementation plan before writing any code.\n\n` +
46
+ `### Workflow\n` +
47
+ `1. Explore: read, grep, find, ls to understand the codebase\n` +
48
+ `2. Research: \`web_search\` + \`web_fetch\` for docs; \`mcp__kencode-search__searchCode\` for real code samples — literal text or RE2 regex (NOT semantic); start with \`peek: true\` for paths+counts, then drill in narrowed by \`repo\` + \`path\` (full usage in Research & Verification below)\n` +
49
+ `3. Draft: write the plan to .gg/plans/<name>.md\n` +
50
+ `4. Submit: call exit_plan with the plan path\n\n` +
51
+ `### Rules\n` +
52
+ `- bash, edit, write (except to .gg/plans/), and subagent are restricted\n` +
53
+ `- Be specific: exact file paths, function names, line numbers\n` +
54
+ `- Note risks and verification criteria\n\n` +
55
+ `### Plan Format\n` +
56
+ `Plan can have any structure, but it MUST end with a section titled exactly \`## Steps\` ` +
57
+ `containing a single flat numbered list. This section is parsed by the progress widget — ` +
58
+ `the ONLY source of truth for step tracking. Do NOT put numbered lists elsewhere.`);
59
+ }
60
+ async function renderApprovedPlanSection(approvedPlanPath, planMode) {
61
+ if (!approvedPlanPath || planMode)
62
+ return null;
63
+ const planContent = await fs.readFile(approvedPlanPath, "utf-8").catch(() => null);
64
+ if (planContent === null)
65
+ return null;
66
+ if (!planContent.trim())
67
+ return null;
68
+ return (`## Approved Plan\n\n` +
69
+ `Follow this plan strictly. File: ${approvedPlanPath}\n\n` +
70
+ `<approved_plan>\n${planContent.trim()}\n</approved_plan>\n\n` +
71
+ `- Follow step order. Don't deviate without user confirmation.\n` +
72
+ `- After each step from \`## Steps\`, output \`[DONE:n]\` (e.g. \`[DONE:1]\`) to update the progress widget, then continue with step n+1 in the same turn.`);
73
+ }
74
+ function renderResearchSection() {
75
+ return (`## Research & Verification\n\n` +
76
+ `Do not assume current APIs, CLI flags, config schema, or error wording — verify.\n\n` +
77
+ `- **Docs first**: use \`web_search\` to find authoritative pages, then \`web_fetch\` to read them.\n` +
78
+ `- **Real code second**: use \`mcp__kencode-search__searchCode\` for literal text or RE2 regex only; it is NOT semantic search. For concepts, search tokens real files contain: imports, identifiers/hooks/props, or config keys. Put filenames in \`path\`, repos/topics in \`repo\`, code tokens in \`query\`. Start with \`peek: true\`, then narrow by \`repo\` + \`path\` for snippets.\n` +
79
+ `- **Verify after edits**: run relevant checks, read failures, fix them, and never report unrun or failing checks as passing.`);
80
+ }
81
+ function renderCodeQualitySection() {
82
+ return (`## Code Quality\n\n` +
102
83
  `- Descriptive names that reveal intent. Define types before implementation.\n` +
103
84
  `- No dead code, no commented-out code. No stubs or placeholders unless asked.\n` +
104
85
  `- Handle errors at I/O, user input, and external API boundaries.\n` +
105
86
  `- Prefer existing dependencies. Don't refactor or reorganize unprompted.`);
106
- // 5. Tools — filtered by active tool set
87
+ }
88
+ function renderToolsSection(toolNames, planMode) {
107
89
  const activeTools = toolNames ?? DEFAULT_TOOL_NAMES;
108
90
  const toolLines = [];
109
91
  for (const name of activeTools) {
110
- // In plan mode, hide enter_plan (already entered); outside plan mode, hide exit_plan.
111
92
  if (planMode && name === "enter_plan")
112
93
  continue;
113
94
  if (!planMode && name === "exit_plan")
@@ -116,10 +97,9 @@ export async function buildSystemPrompt(cwd, skills, planMode, approvedPlanPath,
116
97
  if (hint)
117
98
  toolLines.push(`- **${name}**: ${hint}`);
118
99
  }
119
- if (toolLines.length > 0) {
120
- sections.push(`## Tools\n\n${toolLines.join("\n")}`);
121
- }
122
- // 6. Project context — walk from cwd to root looking for context files
100
+ return toolLines.length > 0 ? `## Tools\n\n${toolLines.join("\n")}` : null;
101
+ }
102
+ async function collectProjectContext(cwd) {
123
103
  const contextParts = [];
124
104
  let dir = cwd;
125
105
  const visited = new Set();
@@ -133,7 +113,7 @@ export async function buildSystemPrompt(cwd, skills, planMode, approvedPlanPath,
133
113
  contextParts.push(`### ${relPath}\n\n${content.trim()}`);
134
114
  }
135
115
  catch {
136
- // File doesn't exist, skip
116
+ // File doesn't exist, skip.
137
117
  }
138
118
  }
139
119
  const parent = path.dirname(dir);
@@ -141,29 +121,56 @@ export async function buildSystemPrompt(cwd, skills, planMode, approvedPlanPath,
141
121
  break;
142
122
  dir = parent;
143
123
  }
144
- if (contextParts.length > 0) {
145
- sections.push(`## Project Context\n\n` +
146
- `**Highest precedence** — the files below override anything stated earlier ` +
147
- `in this prompt (How to Talk / How to Work / Code Quality / Style Packs).\n\n` +
148
- contextParts.join("\n\n"));
149
- }
150
- // 6b. Language Style Packs injected when the language detector has
151
- // identified the project's active languages. See `core/language-detector.ts`
152
- // and the swap logic in `ui/App.tsx`.
124
+ return contextParts;
125
+ }
126
+ function renderProjectContextSection(contextParts) {
127
+ if (contextParts.length === 0)
128
+ return null;
129
+ return (`## Project Context\n\n` +
130
+ `**Highest precedence** — AGENTS.md / CLAUDE.md override Language Style Packs and all default guidance. ` +
131
+ `When these files conflict with anything else in this prompt, follow the project file.\n\n` +
132
+ contextParts.join("\n\n"));
133
+ }
134
+ function renderEnvironmentSection(cwd) {
135
+ return `## Environment\n\n- Working directory: ${cwd}\n- Platform: ${process.platform}`;
136
+ }
137
+ function renderUncachedDateSuffix() {
138
+ const today = new Date();
139
+ const day = today.getDate();
140
+ const month = today.toLocaleString("en-US", { month: "long" });
141
+ const year = today.getFullYear();
142
+ return `${UNCACHED_MARKER}\nToday's date: ${day} ${month} ${year}`;
143
+ }
144
+ /**
145
+ * Build the system prompt dynamically based on cwd and context.
146
+ *
147
+ * @param toolNames — if provided, the Tools section only lists these tools.
148
+ * Pass `tools.map(t => t.name)` from the session so the prompt reflects
149
+ * exactly what the model can call. Defaults to the full built-in set.
150
+ */
151
+ export async function buildSystemPrompt(cwd, skills, planMode, approvedPlanPath, toolNames, activeLanguages) {
152
+ const sections = [renderIdentitySection(), renderTalkSection(), renderWorkSection()];
153
+ if (planMode)
154
+ sections.push(renderPlanModeSection());
155
+ const approvedPlanSection = await renderApprovedPlanSection(approvedPlanPath, planMode);
156
+ if (approvedPlanSection)
157
+ sections.push(approvedPlanSection);
158
+ sections.push(renderResearchSection(), renderCodeQualitySection());
159
+ const toolsSection = renderToolsSection(toolNames, planMode);
160
+ if (toolsSection)
161
+ sections.push(toolsSection);
162
+ const projectContextSection = renderProjectContextSection(await collectProjectContext(cwd));
163
+ if (projectContextSection)
164
+ sections.push(projectContextSection);
153
165
  if (activeLanguages && activeLanguages.size > 0) {
154
166
  const stylePacks = renderStylePacksSection(activeLanguages, cwd);
155
167
  if (stylePacks)
156
168
  sections.push(stylePacks);
157
- // 6c. Verification — detected commands for the active languages, so the
158
- // agent can close the feedback loop after pack-influenced edits. Without
159
- // this anchor, packs are advisory; with it, the model has concrete
160
- // commands to run and verify against.
161
169
  const verifyCmds = detectVerifyCommands(cwd, activeLanguages);
162
170
  const verifySection = renderVerifySection(verifyCmds);
163
171
  if (verifySection)
164
172
  sections.push(verifySection);
165
173
  }
166
- // 7. Eyes — open improvement signals from past probe use (gated on .gg/eyes/manifest.json)
167
174
  if (isEyesActive(cwd)) {
168
175
  const open = readJournal({ status: "open", order: "desc", limit: 10 }, cwd);
169
176
  if (open.length > 0) {
@@ -173,30 +180,17 @@ export async function buildSystemPrompt(cwd, skills, planMode, approvedPlanPath,
173
180
  return `- ${date} · *${e.kind}*${probeTag}: ${e.reason}`;
174
181
  });
175
182
  sections.push(`## Eyes — Open Improvement Signals\n\n` +
176
- `These are unresolved signals from past use of this project's perception probes ` +
177
- `(\`.gg/eyes/\`). Consider whether any bear on the current work. If a missing or ` +
178
- `inadequate capability would force you to **guess, skip verification, or hand-wave**, ` +
179
- `surface the tradeoff in conversation rather than working around it silently — give the ` +
180
- `user the choice to fix the probe first.\n\n` +
183
+ `These unresolved signals from this project's perception probes (\`.gg/eyes/\`) may bear on the work. ` +
184
+ `If a missing capability would force guessing or skipped verification, surface the tradeoff instead.\n\n` +
181
185
  lines.join("\n"));
182
186
  }
183
187
  }
184
- // 9. Skills
185
188
  if (skills && skills.length > 0) {
186
189
  const skillsSection = formatSkillsForPrompt(skills);
187
- if (skillsSection) {
190
+ if (skillsSection)
188
191
  sections.push(skillsSection);
189
- }
190
192
  }
191
- // 10. Environment (static — cacheable)
192
- sections.push(`## Environment\n\n` + `- Working directory: ${cwd}\n` + `- Platform: ${process.platform}`);
193
- // Dynamic section (uncached) — separated by marker so the transform layer
194
- // can split the system prompt into cached + uncached blocks.
195
- const today = new Date();
196
- const day = today.getDate();
197
- const month = today.toLocaleString("en-US", { month: "long" });
198
- const year = today.getFullYear();
199
- sections.push(`<!-- uncached -->\nToday's date: ${day} ${month} ${year}`);
193
+ sections.push(renderEnvironmentSection(cwd), renderUncachedDateSuffix());
200
194
  return sections.join("\n\n");
201
195
  }
202
196
  //# sourceMappingURL=system-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=system-prompt.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-prompt.test.d.ts","sourceRoot":"","sources":["../src/system-prompt.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,104 @@
1
+ import fs from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { afterEach, describe, expect, it } from "vitest";
5
+ import { buildSystemPrompt } from "./system-prompt.js";
6
+ const tempDirs = [];
7
+ async function makeProject(files = {}) {
8
+ const cwd = await fs.mkdtemp(path.join(os.tmpdir(), "ggcoder-system-prompt-"));
9
+ tempDirs.push(cwd);
10
+ for (const [relativePath, content] of Object.entries(files)) {
11
+ const filePath = path.join(cwd, relativePath);
12
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
13
+ await fs.writeFile(filePath, content, "utf-8");
14
+ }
15
+ return cwd;
16
+ }
17
+ function sectionIndex(prompt, heading) {
18
+ const index = prompt.indexOf(heading);
19
+ expect(index, `${heading} should exist`).toBeGreaterThanOrEqual(0);
20
+ return index;
21
+ }
22
+ function toolsSection(prompt) {
23
+ const start = sectionIndex(prompt, "## Tools");
24
+ const rest = prompt.slice(start);
25
+ const next = rest.indexOf("\n\n## ", "## Tools".length);
26
+ return next === -1 ? rest : rest.slice(0, next);
27
+ }
28
+ afterEach(async () => {
29
+ await Promise.all(tempDirs.splice(0).map((dir) => fs.rm(dir, { recursive: true, force: true })));
30
+ });
31
+ describe("buildSystemPrompt", () => {
32
+ it("renders deterministic section order and keeps only the volatile date after the marker", async () => {
33
+ const cwd = await makeProject({
34
+ "CLAUDE.md": "Project rules win.",
35
+ "package.json": JSON.stringify({ scripts: { check: "tsc --noEmit" } }),
36
+ "tsconfig.json": "{}",
37
+ });
38
+ const prompt = await buildSystemPrompt(cwd, [{ name: "find-skills", description: "Find skills.", content: "", source: "test" }], false, undefined, ["read", "edit", "web_search", "enter_plan", "exit_plan", "skill"], new Set(["typescript"]));
39
+ expect(prompt.startsWith("You are GG Coder by Ken Kai")).toBe(true);
40
+ expect(sectionIndex(prompt, "## How to Talk")).toBeLessThan(sectionIndex(prompt, "## How to Work"));
41
+ expect(sectionIndex(prompt, "## How to Work")).toBeLessThan(sectionIndex(prompt, "## Research & Verification"));
42
+ expect(sectionIndex(prompt, "## Research & Verification")).toBeLessThan(sectionIndex(prompt, "## Code Quality"));
43
+ expect(sectionIndex(prompt, "## Code Quality")).toBeLessThan(sectionIndex(prompt, "## Tools"));
44
+ expect(sectionIndex(prompt, "## Tools")).toBeLessThan(sectionIndex(prompt, "## Project Context"));
45
+ expect(sectionIndex(prompt, "## Project Context")).toBeLessThan(sectionIndex(prompt, "## Language Style Packs"));
46
+ expect(sectionIndex(prompt, "## Language Style Packs")).toBeLessThan(sectionIndex(prompt, "## Verification"));
47
+ expect(sectionIndex(prompt, "## Verification")).toBeLessThan(sectionIndex(prompt, "## Skills"));
48
+ expect(sectionIndex(prompt, "## Skills")).toBeLessThan(sectionIndex(prompt, "## Environment"));
49
+ const marker = "<!-- uncached -->";
50
+ expect(prompt.match(new RegExp(marker, "g"))).toHaveLength(1);
51
+ const afterMarker = prompt.slice(prompt.indexOf(marker) + marker.length).trim();
52
+ expect(afterMarker).toMatch(/^Today's date: \d{1,2} [A-Za-z]+ \d{4}$/);
53
+ });
54
+ it("lists exactly available known tools and hides unavailable plan transition tools", async () => {
55
+ const cwd = await makeProject();
56
+ const normalPrompt = await buildSystemPrompt(cwd, undefined, false, undefined, [
57
+ "read",
58
+ "web_search",
59
+ "exit_plan",
60
+ "not_a_tool",
61
+ ]);
62
+ const normalTools = toolsSection(normalPrompt);
63
+ expect(normalTools).toContain("**read**");
64
+ expect(normalTools).toContain("**web_search**");
65
+ expect(normalTools).not.toContain("**exit_plan**");
66
+ expect(normalTools).not.toContain("not_a_tool");
67
+ expect(normalTools).not.toContain("**edit**");
68
+ const planPrompt = await buildSystemPrompt(cwd, undefined, true, undefined, [
69
+ "read",
70
+ "enter_plan",
71
+ "exit_plan",
72
+ ]);
73
+ const planTools = toolsSection(planPrompt);
74
+ expect(planTools).toContain("**read**");
75
+ expect(planTools).toContain("**exit_plan**");
76
+ expect(planTools).not.toContain("**enter_plan**");
77
+ });
78
+ it("places project-context precedence next to project context before style packs", async () => {
79
+ const cwd = await makeProject({
80
+ "AGENTS.md": "Use tabs for this fixture.",
81
+ "tsconfig.json": "{}",
82
+ });
83
+ const prompt = await buildSystemPrompt(cwd, undefined, false, undefined, ["read"], new Set(["typescript"]));
84
+ const projectContextIndex = sectionIndex(prompt, "## Project Context");
85
+ const precedenceIndex = prompt.indexOf("**Highest precedence**", projectContextIndex);
86
+ expect(precedenceIndex).toBeGreaterThan(projectContextIndex);
87
+ expect(precedenceIndex).toBeLessThan(sectionIndex(prompt, "### AGENTS.md"));
88
+ expect(sectionIndex(prompt, "## Project Context")).toBeLessThan(sectionIndex(prompt, "## Language Style Packs"));
89
+ expect(prompt).toContain("AGENTS.md / CLAUDE.md override Language Style Packs");
90
+ });
91
+ it("keeps kencode guidance concise while preserving literal search requirements", async () => {
92
+ const cwd = await makeProject();
93
+ const prompt = await buildSystemPrompt(cwd, undefined, false, undefined, [
94
+ "mcp__kencode-search__searchCode",
95
+ ]);
96
+ const tools = toolsSection(prompt);
97
+ expect(tools).toContain("literal text or RE2 regex");
98
+ expect(tools).toContain("NOT semantic");
99
+ expect(tools).toContain("peek: true");
100
+ expect(tools).not.toContain("zero hits, every time");
101
+ expect(tools.length).toBeLessThan(550);
102
+ });
103
+ });
104
+ //# sourceMappingURL=system-prompt.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-prompt.test.js","sourceRoot":"","sources":["../src/system-prompt.test.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,9 @@
6
6
  */
7
7
  export const TOOL_PROMPT_HINTS = {
8
8
  read: "Read file contents. Use offset/limit for large files.",
9
- write: "Create or fully rewrite a file. Must read first if it exists. Prefer edit for changes.",
10
- edit: "Surgical edits via { old_text, new_text } pairs from the read — verbatim, no paraphrasing. Partial-apply by default: re-issue ONLY listed failures, never the whole batch. Use replace_all for renames; a `...`-only line in both old/new elides a preserved middle. Read first.",
11
- bash: "Run shell commands. CWD is the project root. Set run_in_background=true for long processes. Use for COMPUTATION (word counts, regex generation, structural analysis) — but apply the result with the `edit` tool, not by writing files from a script. Shelling out to write loses read-tracking, partial-apply, indent forgiveness, and actionable failures.",
9
+ write: "Create or overwrite files; read existing files first. Prefer edit for changes.",
10
+ edit: "Apply surgical { old_text, new_text } edits from a prior read. Use exact text; retry only failed edits; replace_all for renames.",
11
+ bash: "Run shell commands from project root; use for computation and long/background processes, not direct file rewrites.",
12
12
  find: "Find files/dirs by name pattern. Faster than bash find, respects .gitignore.",
13
13
  grep: "Regex search across files. Use for usages, definitions, imports.",
14
14
  ls: "List directory contents.",
@@ -19,7 +19,7 @@ export const TOOL_PROMPT_HINTS = {
19
19
  tasks: "Manage the Ctrl+T task pane (add/list/done/remove). Only when the user explicitly asks. Do NOT auto-run.",
20
20
  subagent: "Delegate focused, isolated subtasks (research, parallel exploration).",
21
21
  skill: "Invoke a named skill for specialized instructions.",
22
- "mcp__kencode-search__searchCode": 'Literal-text or RE2-regex search across 2M+ public repos. NOT semantic. Have only a concept? Anchor on a literal token a matching file would contain — a library import (`from "remotion"`), a known identifier/hook/prop (`useVideoConfig`, `<Sequence`), or a config key. Filename + topic in `query` does NOT work — put filenames in `path`, topics in `repo`. Filters: `language: ["TypeScript"]`, `repo: "owner/name"`, `path: "src/components/"`. Workflow: `peek: true` → paths+counts; then narrow with `repo` + `path` for full snippets. Defaults exclude tests/vendored/generated — set `includeTests` or `includeVendored` to widen. RE2: no lookahead/lookbehind/backrefs; multi-line needs `(?s)`.',
22
+ "mcp__kencode-search__searchCode": "Search public GitHub code by literal text or RE2 regex; NOT semantic. Anchor concepts on imports/identifiers/config keys. Put filenames in `path`, topics in `repo`, code tokens in `query`. Start with `peek: true`, then narrow by `repo` + `path` for snippets. RE2 only; multi-line needs `(?s)`.",
23
23
  enter_plan: "Enter plan mode for read-only research + planning on complex multi-file tasks.",
24
24
  exit_plan: "Submit your plan for user review and exit plan mode.",
25
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-hints.js","sourceRoot":"","sources":["../../src/tools/prompt-hints.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,IAAI,EAAE,uDAAuD;IAC7D,KAAK,EAAE,wFAAwF;IAC/F,IAAI,EAAE,kRAAkR;IACxR,IAAI,EAAE,8VAA8V;IACpW,IAAI,EAAE,8EAA8E;IACpF,IAAI,EAAE,kEAAkE;IACxE,EAAE,EAAE,0BAA0B;IAC9B,SAAS,EAAE,oDAAoD;IAC/D,UAAU,EAAE,qDAAqD;IACjE,WAAW,EAAE,kDAAkD;IAC/D,SAAS,EAAE,kCAAkC;IAC7C,KAAK,EACH,0GAA0G;IAC5G,QAAQ,EAAE,uEAAuE;IACjF,KAAK,EAAE,oDAAoD;IAC3D,iCAAiC,EAC/B,mrBAAmrB;IACrrB,UAAU,EAAE,gFAAgF;IAC5F,SAAS,EAAE,sDAAsD;CAClE,CAAC;AAEF,oEAAoE;AACpE,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,WAAW;IACX,aAAa;IACb,WAAW;IACX,OAAO;IACP,UAAU;IACV,OAAO;IACP,iCAAiC;IACjC,YAAY;IACZ,WAAW;CACZ,CAAC"}
1
+ {"version":3,"file":"prompt-hints.js","sourceRoot":"","sources":["../../src/tools/prompt-hints.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,IAAI,EAAE,uDAAuD;IAC7D,KAAK,EAAE,gFAAgF;IACvF,IAAI,EAAE,kIAAkI;IACxI,IAAI,EAAE,oHAAoH;IAC1H,IAAI,EAAE,8EAA8E;IACpF,IAAI,EAAE,kEAAkE;IACxE,EAAE,EAAE,0BAA0B;IAC9B,SAAS,EAAE,oDAAoD;IAC/D,UAAU,EAAE,qDAAqD;IACjE,WAAW,EAAE,kDAAkD;IAC/D,SAAS,EAAE,kCAAkC;IAC7C,KAAK,EACH,0GAA0G;IAC5G,QAAQ,EAAE,uEAAuE;IACjF,KAAK,EAAE,oDAAoD;IAC3D,iCAAiC,EAC/B,uSAAuS;IACzS,UAAU,EAAE,gFAAgF;IAC5F,SAAS,EAAE,sDAAsD;CAClE,CAAC;AAEF,oEAAoE;AACpE,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,WAAW;IACX,aAAa;IACb,WAAW;IACX,OAAO;IACP,UAAU;IACV,OAAO;IACP,iCAAiC;IACjC,YAAY;IACZ,WAAW;CACZ,CAAC"}