-
Notifications
You must be signed in to change notification settings - Fork 9
feat(chat-workflow): thread real cwd + currentBranch into system prompt (cutover Bundle A.7) #597
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
f1d0263
feat(chat-workflow): thread real cwd + currentBranch into system prom…
sweetmantech bf1e245
chore(chat-workflow): drop currentBranch handling from system prompt
sweetmantech 138ebe8
fix(chat-workflow): drop stale currentBranch arg from buildAgentSyste…
sweetmantech File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| import { describe, it, expect } from "vitest"; | ||
| import { buildAgentSystemPrompt } from "@/lib/chat/buildAgentSystemPrompt"; | ||
|
|
||
| describe("buildAgentSystemPrompt", () => { | ||
| it("emits only customInstructions when no cwd is provided", () => { | ||
| const prompt = buildAgentSystemPrompt({ customInstructions: "hello" }); | ||
| expect(prompt).toBe("hello"); | ||
| expect(prompt).not.toMatch(/Working directory/); | ||
| }); | ||
|
|
||
| it("includes an Environment section when cwd is provided", () => { | ||
| const prompt = buildAgentSystemPrompt({ cwd: "/vercel/sandbox" }); | ||
| expect(prompt).toMatch(/# Environment/); | ||
| expect(prompt).toMatch(/Working directory: \. \(workspace root\)/); | ||
| expect(prompt).toMatch(/workspace-relative paths/); | ||
| }); | ||
|
|
||
| it("appends customInstructions AFTER the environment section", () => { | ||
| const prompt = buildAgentSystemPrompt({ | ||
| cwd: "/sandbox", | ||
| customInstructions: "MARK_AT_END", | ||
| }); | ||
| const envIdx = prompt.indexOf("# Environment"); | ||
| const customIdx = prompt.indexOf("MARK_AT_END"); | ||
| expect(envIdx).toBeGreaterThanOrEqual(0); | ||
| expect(customIdx).toBeGreaterThan(envIdx); | ||
| }); | ||
|
|
||
| it("returns empty string when all options are empty", () => { | ||
| expect(buildAgentSystemPrompt({})).toBe(""); | ||
| }); | ||
| }); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| const ENVIRONMENT_SECTION = `# Environment | ||
|
|
||
| Working directory: . (workspace root) | ||
| Use workspace-relative paths for all file operations.`; | ||
|
|
||
| export type BuildAgentSystemPromptOptions = { | ||
| /** | ||
| * Sandbox working directory. Triggers inclusion of the Environment | ||
| * section. The literal value isn't exposed to the model — the | ||
| * section just signals "you're in a workspace; use relative paths" | ||
| * (mirrors open-agents). | ||
| */ | ||
| cwd?: string; | ||
| /** | ||
| * Project-specific custom instructions appended at the end of the | ||
| * prompt (api's existing `agentCustomInstructions` — assistant file | ||
| * link prompt + recoup-api skill prompt). | ||
| */ | ||
| customInstructions?: string; | ||
| }; | ||
|
|
||
| /** | ||
| * Assemble the system prompt for `runAgentStep`. Mirrors open-agents' | ||
| * `buildSystemPrompt` (`packages/agent/system-prompt.ts`) at the | ||
| * structural level — environment section → custom instructions — so | ||
| * the agent knows it's in a sandboxed workspace without having to | ||
| * run `pwd` on every prompt. | ||
| * | ||
| * Sections render only when their inputs are provided, so a request | ||
| * without sandbox context (or before sandbox boot) still produces a | ||
| * coherent (env-less) prompt. | ||
| * | ||
| * `currentBranch` handling deliberately omitted in this slim port — | ||
| * the cloud-sandbox checkpointing block in open-agents templates a | ||
| * `git push -u origin {branch}` example per session, but in api's | ||
| * deployment topology the branch is always the org repo's default | ||
| * (`main`), so the per-branch templating doesn't add value yet. Add | ||
| * back when a meaningful per-session branch lands (e.g. xx/abcdef12 | ||
| * generated branches). | ||
| */ | ||
| export function buildAgentSystemPrompt(options: BuildAgentSystemPromptOptions): string { | ||
| const parts: string[] = []; | ||
|
|
||
| if (options.cwd) { | ||
| parts.push(ENVIRONMENT_SECTION); | ||
| } | ||
|
|
||
| if (options.customInstructions) { | ||
| parts.push(options.customInstructions); | ||
| } | ||
|
|
||
| return parts.join("\n\n"); | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P3: Custom agent: Enforce Clear Code Style and Maintainability Practices
This test file exceeds the repository’s 100-line file-size cap.
Prompt for AI agents