symphony-github 0.1.0
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/LICENSE +201 -0
- package/README.md +341 -0
- package/config.example.yaml +101 -0
- package/dist/agents/launcher.d.ts +24 -0
- package/dist/agents/launcher.d.ts.map +1 -0
- package/dist/agents/launcher.js +152 -0
- package/dist/agents/launcher.js.map +1 -0
- package/dist/agents/registry.d.ts +10 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/registry.js +324 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/runner.d.ts +58 -0
- package/dist/agents/runner.d.ts.map +1 -0
- package/dist/agents/runner.js +1190 -0
- package/dist/agents/runner.js.map +1 -0
- package/dist/app.d.ts +11 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +829 -0
- package/dist/app.js.map +1 -0
- package/dist/components/ActivityView.d.ts +9 -0
- package/dist/components/ActivityView.d.ts.map +1 -0
- package/dist/components/ActivityView.js +73 -0
- package/dist/components/ActivityView.js.map +1 -0
- package/dist/components/Header.d.ts +12 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +44 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/IssueList.d.ts +10 -0
- package/dist/components/IssueList.d.ts.map +1 -0
- package/dist/components/IssueList.js +119 -0
- package/dist/components/IssueList.js.map +1 -0
- package/dist/components/Onboarding.d.ts +26 -0
- package/dist/components/Onboarding.d.ts.map +1 -0
- package/dist/components/Onboarding.js +948 -0
- package/dist/components/Onboarding.js.map +1 -0
- package/dist/components/PaneView.d.ts +9 -0
- package/dist/components/PaneView.d.ts.map +1 -0
- package/dist/components/PaneView.js +74 -0
- package/dist/components/PaneView.js.map +1 -0
- package/dist/components/StartupRecoveryView.d.ts +13 -0
- package/dist/components/StartupRecoveryView.d.ts.map +1 -0
- package/dist/components/StartupRecoveryView.js +85 -0
- package/dist/components/StartupRecoveryView.js.map +1 -0
- package/dist/components/StatusBar.d.ts +9 -0
- package/dist/components/StatusBar.d.ts.map +1 -0
- package/dist/components/StatusBar.js +70 -0
- package/dist/components/StatusBar.js.map +1 -0
- package/dist/components/TableView.d.ts +8 -0
- package/dist/components/TableView.d.ts.map +1 -0
- package/dist/components/TableView.js +87 -0
- package/dist/components/TableView.js.map +1 -0
- package/dist/config/index.d.ts +18 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +357 -0
- package/dist/config/index.js.map +1 -0
- package/dist/git/merge.d.ts +23 -0
- package/dist/git/merge.d.ts.map +1 -0
- package/dist/git/merge.js +131 -0
- package/dist/git/merge.js.map +1 -0
- package/dist/git/utils.d.ts +34 -0
- package/dist/git/utils.d.ts.map +1 -0
- package/dist/git/utils.js +214 -0
- package/dist/git/utils.js.map +1 -0
- package/dist/git/worktree.d.ts +23 -0
- package/dist/git/worktree.d.ts.map +1 -0
- package/dist/git/worktree.js +116 -0
- package/dist/git/worktree.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +225 -0
- package/dist/index.js.map +1 -0
- package/dist/paths.d.ts +21 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +59 -0
- package/dist/paths.js.map +1 -0
- package/dist/runModes.d.ts +7 -0
- package/dist/runModes.d.ts.map +1 -0
- package/dist/runModes.js +36 -0
- package/dist/runModes.js.map +1 -0
- package/dist/services/daemon.d.ts +85 -0
- package/dist/services/daemon.d.ts.map +1 -0
- package/dist/services/daemon.js +836 -0
- package/dist/services/daemon.js.map +1 -0
- package/dist/services/github.d.ts +101 -0
- package/dist/services/github.d.ts.map +1 -0
- package/dist/services/github.js +367 -0
- package/dist/services/github.js.map +1 -0
- package/dist/services/githubProgressReporter.d.ts +33 -0
- package/dist/services/githubProgressReporter.d.ts.map +1 -0
- package/dist/services/githubProgressReporter.js +272 -0
- package/dist/services/githubProgressReporter.js.map +1 -0
- package/dist/services/runtime.d.ts +43 -0
- package/dist/services/runtime.d.ts.map +1 -0
- package/dist/services/runtime.js +126 -0
- package/dist/services/runtime.js.map +1 -0
- package/dist/services/state.d.ts +43 -0
- package/dist/services/state.d.ts.map +1 -0
- package/dist/services/state.js +176 -0
- package/dist/services/state.js.map +1 -0
- package/dist/services/tmux.d.ts +50 -0
- package/dist/services/tmux.d.ts.map +1 -0
- package/dist/services/tmux.js +157 -0
- package/dist/services/tmux.js.map +1 -0
- package/dist/swarm/backlog.d.ts +25 -0
- package/dist/swarm/backlog.d.ts.map +1 -0
- package/dist/swarm/backlog.js +83 -0
- package/dist/swarm/backlog.js.map +1 -0
- package/dist/swarm/config.d.ts +14 -0
- package/dist/swarm/config.d.ts.map +1 -0
- package/dist/swarm/config.js +112 -0
- package/dist/swarm/config.js.map +1 -0
- package/dist/swarm/dependencies.d.ts +36 -0
- package/dist/swarm/dependencies.d.ts.map +1 -0
- package/dist/swarm/dependencies.js +141 -0
- package/dist/swarm/dependencies.js.map +1 -0
- package/dist/swarm/director.d.ts +67 -0
- package/dist/swarm/director.d.ts.map +1 -0
- package/dist/swarm/director.js +358 -0
- package/dist/swarm/director.js.map +1 -0
- package/dist/swarm/directorPrompt.d.ts +15 -0
- package/dist/swarm/directorPrompt.d.ts.map +1 -0
- package/dist/swarm/directorPrompt.js +60 -0
- package/dist/swarm/directorPrompt.js.map +1 -0
- package/dist/swarm/index.d.ts +7 -0
- package/dist/swarm/index.d.ts.map +1 -0
- package/dist/swarm/index.js +6 -0
- package/dist/swarm/index.js.map +1 -0
- package/dist/swarm/proposals.d.ts +29 -0
- package/dist/swarm/proposals.d.ts.map +1 -0
- package/dist/swarm/proposals.js +141 -0
- package/dist/swarm/proposals.js.map +1 -0
- package/dist/swarm/types.d.ts +65 -0
- package/dist/swarm/types.d.ts.map +1 -0
- package/dist/swarm/types.js +3 -0
- package/dist/swarm/types.js.map +1 -0
- package/dist/theme.d.ts +64 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +161 -0
- package/dist/theme.js.map +1 -0
- package/dist/triggers/index.d.ts +17 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +124 -0
- package/dist/triggers/index.js.map +1 -0
- package/dist/types.d.ts +327 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/duplicateDetection.d.ts +14 -0
- package/dist/utils/duplicateDetection.d.ts.map +1 -0
- package/dist/utils/duplicateDetection.js +45 -0
- package/dist/utils/duplicateDetection.js.map +1 -0
- package/dist/utils/shell.d.ts +46 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +79 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/slug.d.ts +13 -0
- package/dist/utils/slug.d.ts.map +1 -0
- package/dist/utils/slug.js +32 -0
- package/dist/utils/slug.js.map +1 -0
- package/dist/version.d.ts +28 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +105 -0
- package/dist/version.js.map +1 -0
- package/examples/run-claude.example.sh +11 -0
- package/examples/run-codex.example.sh +11 -0
- package/package.json +68 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
2
|
+
import { join, resolve, dirname } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { TmuxService } from '../services/tmux.js';
|
|
5
|
+
import { buildInitialPromptCommand, isAgentName } from './registry.js';
|
|
6
|
+
import { findMentionedAgent } from '../triggers/index.js';
|
|
7
|
+
import { proposalsDirPath } from '../swarm/config.js';
|
|
8
|
+
/**
|
|
9
|
+
* Resolve which agent should handle an issue.
|
|
10
|
+
* Ported from symphony Python's agents.py.
|
|
11
|
+
*/
|
|
12
|
+
export function resolveAgent(issue, comments, repo, settings) {
|
|
13
|
+
// Check mention-based routing
|
|
14
|
+
const routedAgentName = findMentionedAgent(issue, comments, settings.routing.mention_map);
|
|
15
|
+
const agentName = routedAgentName || getDefaultAgent(repo, settings);
|
|
16
|
+
const agentConfig = settings.agents[agentName];
|
|
17
|
+
if (!agentConfig) {
|
|
18
|
+
throw new Error(`Agent "${agentName}" not found in config`);
|
|
19
|
+
}
|
|
20
|
+
// Apply repo-level overrides
|
|
21
|
+
const repoSettings = settings.repos.find(r => r.repo === repo);
|
|
22
|
+
const overrides = repoSettings?.agent_overrides?.[agentName] || {};
|
|
23
|
+
return {
|
|
24
|
+
name: agentName,
|
|
25
|
+
provider: agentConfig.provider,
|
|
26
|
+
model: overrides.model || agentConfig.model,
|
|
27
|
+
thinking: agentConfig.thinking,
|
|
28
|
+
create_pr: overrides.create_pr || agentConfig.create_pr,
|
|
29
|
+
push: overrides.push ?? agentConfig.push,
|
|
30
|
+
timeout_min: overrides.timeout_min || agentConfig.timeout_min,
|
|
31
|
+
env: agentConfig.env || {},
|
|
32
|
+
command: agentConfig.command,
|
|
33
|
+
permission_mode: agentConfig.permission_mode || '',
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function getDefaultAgent(repo, settings) {
|
|
37
|
+
const repoSettings = settings.repos.find(r => r.repo === repo);
|
|
38
|
+
return repoSettings?.default_agent || settings.default_agent;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Build the prompt for an agent given an issue.
|
|
42
|
+
*/
|
|
43
|
+
export function buildPrompt(issue, repo, _mode, options) {
|
|
44
|
+
const parts = [
|
|
45
|
+
`You are working on GitHub issue #${issue.number} in ${repo}.`,
|
|
46
|
+
`Title: ${issue.title}`,
|
|
47
|
+
'',
|
|
48
|
+
'Issue description:',
|
|
49
|
+
issue.body || '(no description)',
|
|
50
|
+
'',
|
|
51
|
+
`Labels: ${issue.labels.map(l => l.name).join(', ') || 'none'}`,
|
|
52
|
+
'',
|
|
53
|
+
'Please analyze this issue and implement the necessary changes.',
|
|
54
|
+
'When you are done, commit your changes with a clear commit message referencing the issue.',
|
|
55
|
+
'',
|
|
56
|
+
'You have full autonomy to make changes, run tests, and commit.',
|
|
57
|
+
];
|
|
58
|
+
if (options?.swarmEnabled) {
|
|
59
|
+
parts.push('', '## Issue Proposals (Swarm Mode)', '', 'If you discover bugs, missing functionality, or improvements that are OUT OF SCOPE', 'for the current issue, you can propose new issues for other agents to work on.', 'Run the following command to submit a proposal:', '', ' $SYMPHONY_PROPOSE_BIN --title "Short title" --body "Detailed description" --type bug --urgency blocker', '', 'Options:', ' --type: bug | improvement | task', ' --urgency: blocker (pauses current issue) | high | normal | low', ' --labels: comma-separated extra labels', '', 'Only propose issues for genuinely separate concerns. Do NOT propose issues for', 'work that is part of solving the current issue.');
|
|
60
|
+
}
|
|
61
|
+
return parts.join('\n');
|
|
62
|
+
}
|
|
63
|
+
export function buildAgentPromptCommand(agent, prompt) {
|
|
64
|
+
if (agent.command) {
|
|
65
|
+
return agent.command;
|
|
66
|
+
}
|
|
67
|
+
if (agent.provider === 'claude' || agent.provider === 'codex') {
|
|
68
|
+
const agentName = agent.provider;
|
|
69
|
+
if (isAgentName(agentName)) {
|
|
70
|
+
return buildInitialPromptCommand(agentName, prompt, agent.permission_mode);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return `${agent.provider} "${prompt.replace(/"/g, '\\"')}"`;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Write context files (.symphony/) into the worktree.
|
|
77
|
+
*/
|
|
78
|
+
export function writeContextFiles(worktreePath, issue, comments, repo) {
|
|
79
|
+
const symphonyDir = join(worktreePath, '.symphony');
|
|
80
|
+
if (!existsSync(symphonyDir))
|
|
81
|
+
mkdirSync(symphonyDir, { recursive: true });
|
|
82
|
+
// Write issue JSON
|
|
83
|
+
writeFileSync(join(symphonyDir, 'issue.json'), JSON.stringify(issue, null, 2));
|
|
84
|
+
// Write context markdown
|
|
85
|
+
const recentComments = comments.slice(-10);
|
|
86
|
+
const contextParts = [
|
|
87
|
+
`# Issue #${issue.number}: ${issue.title}`,
|
|
88
|
+
'',
|
|
89
|
+
`**Repo:** ${repo}`,
|
|
90
|
+
`**Author:** ${issue.user.login}`,
|
|
91
|
+
`**Labels:** ${issue.labels.map(l => l.name).join(', ') || 'none'}`,
|
|
92
|
+
`**Created:** ${issue.created_at}`,
|
|
93
|
+
`**URL:** ${issue.html_url}`,
|
|
94
|
+
'',
|
|
95
|
+
'## Description',
|
|
96
|
+
'',
|
|
97
|
+
issue.body || '(no description)',
|
|
98
|
+
'',
|
|
99
|
+
];
|
|
100
|
+
if (recentComments.length > 0) {
|
|
101
|
+
contextParts.push('## Recent Comments', '');
|
|
102
|
+
for (const comment of recentComments) {
|
|
103
|
+
contextParts.push(`### ${comment.user.login} (${comment.created_at})`, '', comment.body, '');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
writeFileSync(join(symphonyDir, 'context.md'), contextParts.join('\n'));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Launch an agent in a tmux pane for a given issue.
|
|
110
|
+
*/
|
|
111
|
+
export async function launchAgentInPane(paneId, request, options) {
|
|
112
|
+
const tmux = TmuxService.getInstance();
|
|
113
|
+
const agent = request.agent;
|
|
114
|
+
// Set environment variables
|
|
115
|
+
const envCmds = [
|
|
116
|
+
`export SYMPHONY_REPO="${request.repo}"`,
|
|
117
|
+
`export SYMPHONY_ISSUE_NUMBER="${request.issue.number}"`,
|
|
118
|
+
`export SYMPHONY_ISSUE_URL="${request.issue.html_url}"`,
|
|
119
|
+
`export SYMPHONY_WORKTREE="${request.worktree_path}"`,
|
|
120
|
+
`export SYMPHONY_BRANCH="${request.branch}"`,
|
|
121
|
+
`export SYMPHONY_CONTEXT_FILE="${request.worktree_path}/.symphony/context.md"`,
|
|
122
|
+
`export SYMPHONY_RUN_ID="${request.run_id}"`,
|
|
123
|
+
`export SYMPHONY_RUN_DIR="${request.run_dir}"`,
|
|
124
|
+
`export SYMPHONY_AGENT="${agent.name}"`,
|
|
125
|
+
`export SYMPHONY_AGENT_PROVIDER="${agent.provider}"`,
|
|
126
|
+
];
|
|
127
|
+
// Swarm mode: inject proposal env vars
|
|
128
|
+
if (options?.swarmEnabled) {
|
|
129
|
+
const proposeBin = resolve(dirname(fileURLToPath(import.meta.url)), '..', '..', 'bin', 'symphony-propose');
|
|
130
|
+
envCmds.push(`export SYMPHONY_PROPOSE_DIR="${proposalsDirPath()}"`, `export SYMPHONY_PROPOSE_BIN="${proposeBin}"`);
|
|
131
|
+
}
|
|
132
|
+
// Add custom env vars from agent config
|
|
133
|
+
for (const [key, val] of Object.entries(agent.env)) {
|
|
134
|
+
envCmds.push(`export ${key}="${val}"`);
|
|
135
|
+
}
|
|
136
|
+
// cd to worktree
|
|
137
|
+
await tmux.sendShellCommand(paneId, `cd "${request.worktree_path}"`);
|
|
138
|
+
await sleep(200);
|
|
139
|
+
// Set env vars
|
|
140
|
+
for (const envCmd of envCmds) {
|
|
141
|
+
await tmux.sendShellCommand(paneId, envCmd);
|
|
142
|
+
}
|
|
143
|
+
await sleep(200);
|
|
144
|
+
// Build and send agent command
|
|
145
|
+
const prompt = buildPrompt(request.issue, request.repo, request.mode, { swarmEnabled: options?.swarmEnabled });
|
|
146
|
+
const command = buildAgentPromptCommand(agent, prompt);
|
|
147
|
+
await tmux.sendShellCommand(paneId, command);
|
|
148
|
+
}
|
|
149
|
+
function sleep(ms) {
|
|
150
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=launcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/agents/launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AgentName, AgentRegistryEntry, PermissionMode } from '../types.js';
|
|
2
|
+
export { AGENT_IDS } from '../types.js';
|
|
3
|
+
export type { AgentName, PermissionMode } from '../types.js';
|
|
4
|
+
export declare const AGENT_REGISTRY: Readonly<Record<AgentName, AgentRegistryEntry>>;
|
|
5
|
+
export declare function isAgentName(value: string): value is AgentName;
|
|
6
|
+
export declare function getPermissionFlags(agent: AgentName, permissionMode: PermissionMode | undefined): string;
|
|
7
|
+
export declare function buildAgentCommand(agent: AgentName, permissionMode: PermissionMode | undefined): string;
|
|
8
|
+
export declare function buildInitialPromptCommand(agent: AgentName, prompt: string, permissionMode: PermissionMode | undefined): string;
|
|
9
|
+
export declare function buildResumeCommand(agent: AgentName, permissionMode: PermissionMode | undefined): string | undefined;
|
|
10
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAAE,kBAAkB,EAAE,cAAc,EAC9C,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7D,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,CA8P1E,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,CAE7D;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAChB,cAAc,EAAE,cAAc,GAAG,SAAS,GACzC,MAAM,CAIR;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,EAChB,cAAc,EAAE,cAAc,GAAG,SAAS,GACzC,MAAM,CAKR;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,GAAG,SAAS,GACzC,MAAM,CA8BR;AAqBD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAChB,cAAc,EAAE,cAAc,GAAG,SAAS,GACzC,MAAM,GAAG,SAAS,CASpB"}
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
// Re-export from types for convenience
|
|
2
|
+
export { AGENT_IDS } from '../types.js';
|
|
3
|
+
const HOME = process.env.HOME || '';
|
|
4
|
+
const homePath = (suffix) => HOME ? [`${HOME}/${suffix}`] : [];
|
|
5
|
+
export const AGENT_REGISTRY = {
|
|
6
|
+
claude: {
|
|
7
|
+
id: 'claude',
|
|
8
|
+
name: 'Claude Code',
|
|
9
|
+
shortLabel: 'cc',
|
|
10
|
+
description: 'Anthropic Claude Code CLI',
|
|
11
|
+
slugSuffix: 'claude-code',
|
|
12
|
+
installTestCommand: 'command -v claude 2>/dev/null || which claude 2>/dev/null',
|
|
13
|
+
commonPaths: [
|
|
14
|
+
...homePath('.claude/local/claude'),
|
|
15
|
+
...homePath('.local/bin/claude'),
|
|
16
|
+
'/usr/local/bin/claude',
|
|
17
|
+
'/opt/homebrew/bin/claude',
|
|
18
|
+
'/usr/bin/claude',
|
|
19
|
+
...homePath('bin/claude'),
|
|
20
|
+
],
|
|
21
|
+
promptCommand: 'claude',
|
|
22
|
+
promptTransport: 'positional',
|
|
23
|
+
permissionFlags: {
|
|
24
|
+
plan: '--permission-mode plan',
|
|
25
|
+
acceptEdits: '--permission-mode acceptEdits',
|
|
26
|
+
bypassPermissions: '--dangerously-skip-permissions',
|
|
27
|
+
},
|
|
28
|
+
defaultEnabled: true,
|
|
29
|
+
resumeCommandTemplate: 'claude --continue{permissions}',
|
|
30
|
+
},
|
|
31
|
+
opencode: {
|
|
32
|
+
id: 'opencode',
|
|
33
|
+
name: 'OpenCode',
|
|
34
|
+
shortLabel: 'oc',
|
|
35
|
+
description: 'OpenCode CLI',
|
|
36
|
+
slugSuffix: 'opencode',
|
|
37
|
+
installTestCommand: 'command -v opencode 2>/dev/null || which opencode 2>/dev/null',
|
|
38
|
+
commonPaths: [
|
|
39
|
+
'/opt/homebrew/bin/opencode',
|
|
40
|
+
'/usr/local/bin/opencode',
|
|
41
|
+
...homePath('.local/bin/opencode'),
|
|
42
|
+
...homePath('bin/opencode'),
|
|
43
|
+
],
|
|
44
|
+
promptCommand: 'opencode',
|
|
45
|
+
promptTransport: 'option',
|
|
46
|
+
promptOption: '--prompt',
|
|
47
|
+
permissionFlags: {},
|
|
48
|
+
defaultEnabled: true,
|
|
49
|
+
},
|
|
50
|
+
codex: {
|
|
51
|
+
id: 'codex',
|
|
52
|
+
name: 'Codex',
|
|
53
|
+
shortLabel: 'cx',
|
|
54
|
+
description: 'OpenAI Codex CLI',
|
|
55
|
+
slugSuffix: 'codex',
|
|
56
|
+
installTestCommand: 'command -v codex 2>/dev/null || which codex 2>/dev/null',
|
|
57
|
+
commonPaths: [
|
|
58
|
+
'/usr/local/bin/codex',
|
|
59
|
+
'/opt/homebrew/bin/codex',
|
|
60
|
+
...homePath('.local/bin/codex'),
|
|
61
|
+
...homePath('bin/codex'),
|
|
62
|
+
...homePath('.npm-global/bin/codex'),
|
|
63
|
+
],
|
|
64
|
+
promptCommand: 'codex',
|
|
65
|
+
promptTransport: 'positional',
|
|
66
|
+
permissionFlags: {
|
|
67
|
+
acceptEdits: '--full-auto',
|
|
68
|
+
bypassPermissions: '--dangerously-bypass-approvals-and-sandbox',
|
|
69
|
+
},
|
|
70
|
+
defaultEnabled: true,
|
|
71
|
+
resumeCommandTemplate: 'codex resume --last{permissions}',
|
|
72
|
+
},
|
|
73
|
+
cline: {
|
|
74
|
+
id: 'cline',
|
|
75
|
+
name: 'Cline CLI',
|
|
76
|
+
shortLabel: 'cl',
|
|
77
|
+
description: 'Cline terminal coding agent',
|
|
78
|
+
slugSuffix: 'cline',
|
|
79
|
+
installTestCommand: 'command -v cline 2>/dev/null || which cline 2>/dev/null',
|
|
80
|
+
commonPaths: [
|
|
81
|
+
'/usr/local/bin/cline',
|
|
82
|
+
'/opt/homebrew/bin/cline',
|
|
83
|
+
...homePath('.local/bin/cline'),
|
|
84
|
+
...homePath('bin/cline'),
|
|
85
|
+
],
|
|
86
|
+
promptCommand: 'cline',
|
|
87
|
+
promptTransport: 'send-keys',
|
|
88
|
+
sendKeysPostPasteDelayMs: 120,
|
|
89
|
+
sendKeysReadyDelayMs: 2500,
|
|
90
|
+
permissionFlags: {
|
|
91
|
+
plan: '--plan',
|
|
92
|
+
acceptEdits: '--act',
|
|
93
|
+
bypassPermissions: '--act --yolo',
|
|
94
|
+
},
|
|
95
|
+
defaultEnabled: false,
|
|
96
|
+
},
|
|
97
|
+
gemini: {
|
|
98
|
+
id: 'gemini',
|
|
99
|
+
name: 'Gemini CLI',
|
|
100
|
+
shortLabel: 'gm',
|
|
101
|
+
description: 'Google Gemini CLI',
|
|
102
|
+
slugSuffix: 'gemini',
|
|
103
|
+
installTestCommand: 'command -v gemini 2>/dev/null || which gemini 2>/dev/null',
|
|
104
|
+
commonPaths: [
|
|
105
|
+
'/usr/local/bin/gemini',
|
|
106
|
+
'/opt/homebrew/bin/gemini',
|
|
107
|
+
...homePath('.local/bin/gemini'),
|
|
108
|
+
...homePath('bin/gemini'),
|
|
109
|
+
...homePath('.npm-global/bin/gemini'),
|
|
110
|
+
],
|
|
111
|
+
promptCommand: 'gemini',
|
|
112
|
+
promptTransport: 'option',
|
|
113
|
+
promptOption: '--prompt-interactive',
|
|
114
|
+
permissionFlags: {
|
|
115
|
+
plan: '--approval-mode plan',
|
|
116
|
+
acceptEdits: '--approval-mode auto_edit',
|
|
117
|
+
bypassPermissions: '--approval-mode yolo',
|
|
118
|
+
},
|
|
119
|
+
defaultEnabled: false,
|
|
120
|
+
resumeCommandTemplate: 'gemini --resume latest{permissions}',
|
|
121
|
+
},
|
|
122
|
+
qwen: {
|
|
123
|
+
id: 'qwen',
|
|
124
|
+
name: 'Qwen CLI',
|
|
125
|
+
shortLabel: 'qn',
|
|
126
|
+
description: 'Qwen Code CLI',
|
|
127
|
+
slugSuffix: 'qwen',
|
|
128
|
+
installTestCommand: 'command -v qwen 2>/dev/null || which qwen 2>/dev/null',
|
|
129
|
+
commonPaths: [
|
|
130
|
+
'/usr/local/bin/qwen',
|
|
131
|
+
'/opt/homebrew/bin/qwen',
|
|
132
|
+
...homePath('.local/bin/qwen'),
|
|
133
|
+
...homePath('bin/qwen'),
|
|
134
|
+
...homePath('.npm-global/bin/qwen'),
|
|
135
|
+
],
|
|
136
|
+
promptCommand: 'qwen',
|
|
137
|
+
promptTransport: 'option',
|
|
138
|
+
promptOption: '-i',
|
|
139
|
+
permissionFlags: {
|
|
140
|
+
plan: '--approval-mode plan',
|
|
141
|
+
acceptEdits: '--approval-mode auto-edit',
|
|
142
|
+
bypassPermissions: '--approval-mode yolo',
|
|
143
|
+
},
|
|
144
|
+
defaultEnabled: false,
|
|
145
|
+
resumeCommandTemplate: 'qwen --continue{permissions}',
|
|
146
|
+
},
|
|
147
|
+
amp: {
|
|
148
|
+
id: 'amp',
|
|
149
|
+
name: 'Amp CLI',
|
|
150
|
+
shortLabel: 'ap',
|
|
151
|
+
description: 'Sourcegraph Amp CLI',
|
|
152
|
+
slugSuffix: 'amp',
|
|
153
|
+
installTestCommand: 'command -v amp 2>/dev/null || which amp 2>/dev/null',
|
|
154
|
+
commonPaths: [
|
|
155
|
+
'/usr/local/bin/amp',
|
|
156
|
+
'/opt/homebrew/bin/amp',
|
|
157
|
+
...homePath('.local/bin/amp'),
|
|
158
|
+
...homePath('bin/amp'),
|
|
159
|
+
...homePath('.npm-global/bin/amp'),
|
|
160
|
+
],
|
|
161
|
+
promptCommand: 'amp',
|
|
162
|
+
promptTransport: 'stdin',
|
|
163
|
+
permissionFlags: {
|
|
164
|
+
bypassPermissions: '--dangerously-allow-all',
|
|
165
|
+
},
|
|
166
|
+
defaultEnabled: false,
|
|
167
|
+
},
|
|
168
|
+
pi: {
|
|
169
|
+
id: 'pi',
|
|
170
|
+
name: 'pi CLI',
|
|
171
|
+
shortLabel: 'pi',
|
|
172
|
+
description: 'pi coding agent CLI',
|
|
173
|
+
slugSuffix: 'pi',
|
|
174
|
+
installTestCommand: 'command -v pi 2>/dev/null || which pi 2>/dev/null',
|
|
175
|
+
commonPaths: [
|
|
176
|
+
'/usr/local/bin/pi',
|
|
177
|
+
'/opt/homebrew/bin/pi',
|
|
178
|
+
...homePath('.local/bin/pi'),
|
|
179
|
+
...homePath('bin/pi'),
|
|
180
|
+
...homePath('.npm-global/bin/pi'),
|
|
181
|
+
],
|
|
182
|
+
promptCommand: 'pi',
|
|
183
|
+
promptTransport: 'positional',
|
|
184
|
+
permissionFlags: {
|
|
185
|
+
plan: '--tools read,grep,find,ls',
|
|
186
|
+
},
|
|
187
|
+
defaultEnabled: false,
|
|
188
|
+
resumeCommandTemplate: 'pi --continue{permissions}',
|
|
189
|
+
},
|
|
190
|
+
cursor: {
|
|
191
|
+
id: 'cursor',
|
|
192
|
+
name: 'Cursor CLI',
|
|
193
|
+
shortLabel: 'cr',
|
|
194
|
+
description: 'Cursor agent CLI',
|
|
195
|
+
slugSuffix: 'cursor',
|
|
196
|
+
installTestCommand: 'command -v cursor-agent 2>/dev/null || which cursor-agent 2>/dev/null',
|
|
197
|
+
commonPaths: [
|
|
198
|
+
...homePath('.cursor/bin/cursor-agent'),
|
|
199
|
+
'/usr/local/bin/cursor-agent',
|
|
200
|
+
'/opt/homebrew/bin/cursor-agent',
|
|
201
|
+
...homePath('.local/bin/cursor-agent'),
|
|
202
|
+
...homePath('bin/cursor-agent'),
|
|
203
|
+
],
|
|
204
|
+
promptCommand: 'cursor-agent',
|
|
205
|
+
promptTransport: 'positional',
|
|
206
|
+
permissionFlags: {},
|
|
207
|
+
defaultEnabled: false,
|
|
208
|
+
},
|
|
209
|
+
copilot: {
|
|
210
|
+
id: 'copilot',
|
|
211
|
+
name: 'Copilot CLI',
|
|
212
|
+
shortLabel: 'co',
|
|
213
|
+
description: 'GitHub Copilot CLI',
|
|
214
|
+
slugSuffix: 'copilot',
|
|
215
|
+
installTestCommand: 'command -v copilot 2>/dev/null || which copilot 2>/dev/null',
|
|
216
|
+
commonPaths: [
|
|
217
|
+
'/usr/local/bin/copilot',
|
|
218
|
+
'/opt/homebrew/bin/copilot',
|
|
219
|
+
...homePath('.local/bin/copilot'),
|
|
220
|
+
...homePath('bin/copilot'),
|
|
221
|
+
...homePath('.npm-global/bin/copilot'),
|
|
222
|
+
],
|
|
223
|
+
promptCommand: 'copilot',
|
|
224
|
+
promptTransport: 'option',
|
|
225
|
+
promptOption: '-i',
|
|
226
|
+
permissionFlags: {
|
|
227
|
+
acceptEdits: '--allow-tool write',
|
|
228
|
+
bypassPermissions: '--allow-all',
|
|
229
|
+
},
|
|
230
|
+
defaultEnabled: false,
|
|
231
|
+
resumeCommandTemplate: 'copilot --continue{permissions}',
|
|
232
|
+
},
|
|
233
|
+
crush: {
|
|
234
|
+
id: 'crush',
|
|
235
|
+
name: 'Crush CLI',
|
|
236
|
+
shortLabel: 'cs',
|
|
237
|
+
description: 'Charmbracelet Crush CLI',
|
|
238
|
+
slugSuffix: 'crush',
|
|
239
|
+
installTestCommand: 'command -v crush 2>/dev/null || which crush 2>/dev/null',
|
|
240
|
+
commonPaths: [
|
|
241
|
+
'/usr/local/bin/crush',
|
|
242
|
+
'/opt/homebrew/bin/crush',
|
|
243
|
+
...homePath('.local/bin/crush'),
|
|
244
|
+
...homePath('bin/crush'),
|
|
245
|
+
...homePath('.npm-global/bin/crush'),
|
|
246
|
+
],
|
|
247
|
+
promptCommand: 'crush run',
|
|
248
|
+
noPromptCommand: 'crush',
|
|
249
|
+
promptTransport: 'send-keys',
|
|
250
|
+
sendKeysPrePrompt: ['Escape', 'Tab'],
|
|
251
|
+
sendKeysSubmit: ['Enter'],
|
|
252
|
+
sendKeysPostPasteDelayMs: 200,
|
|
253
|
+
sendKeysReadyDelayMs: 1200,
|
|
254
|
+
permissionFlags: {
|
|
255
|
+
bypassPermissions: '--yolo',
|
|
256
|
+
},
|
|
257
|
+
defaultEnabled: false,
|
|
258
|
+
},
|
|
259
|
+
};
|
|
260
|
+
export function isAgentName(value) {
|
|
261
|
+
return (['claude', 'opencode', 'codex', 'cline', 'gemini', 'qwen', 'amp', 'pi', 'cursor', 'copilot', 'crush'].includes(value));
|
|
262
|
+
}
|
|
263
|
+
export function getPermissionFlags(agent, permissionMode) {
|
|
264
|
+
const mode = permissionMode || '';
|
|
265
|
+
if (mode === '')
|
|
266
|
+
return '';
|
|
267
|
+
return AGENT_REGISTRY[agent].permissionFlags[mode] || '';
|
|
268
|
+
}
|
|
269
|
+
export function buildAgentCommand(agent, permissionMode) {
|
|
270
|
+
const def = AGENT_REGISTRY[agent];
|
|
271
|
+
const base = def.noPromptCommand || def.promptCommand;
|
|
272
|
+
const flags = getPermissionFlags(agent, permissionMode);
|
|
273
|
+
return flags ? `${base} ${flags}` : base;
|
|
274
|
+
}
|
|
275
|
+
export function buildInitialPromptCommand(agent, prompt, permissionMode) {
|
|
276
|
+
if (agent === 'codex') {
|
|
277
|
+
return buildCodexExecCommand(prompt, permissionMode);
|
|
278
|
+
}
|
|
279
|
+
const def = AGENT_REGISTRY[agent];
|
|
280
|
+
if (def.promptTransport === 'send-keys') {
|
|
281
|
+
return buildAgentCommand(agent, permissionMode);
|
|
282
|
+
}
|
|
283
|
+
const flags = getPermissionFlags(agent, permissionMode);
|
|
284
|
+
const base = flags ? `${def.promptCommand} ${flags}` : def.promptCommand;
|
|
285
|
+
// Escape prompt for shell
|
|
286
|
+
const escaped = prompt
|
|
287
|
+
.replace(/\\/g, '\\\\')
|
|
288
|
+
.replace(/"/g, '\\"')
|
|
289
|
+
.replace(/`/g, '\\`')
|
|
290
|
+
.replace(/\$/g, '\\$');
|
|
291
|
+
if (def.promptTransport === 'stdin') {
|
|
292
|
+
return `printf '%s\\n' "${escaped}" | ${base}`;
|
|
293
|
+
}
|
|
294
|
+
if (def.promptTransport === 'option' && def.promptOption) {
|
|
295
|
+
return `${base} ${def.promptOption} "${escaped}"`;
|
|
296
|
+
}
|
|
297
|
+
// positional
|
|
298
|
+
return `${base} "${escaped}"`;
|
|
299
|
+
}
|
|
300
|
+
function buildCodexExecCommand(prompt, permissionMode) {
|
|
301
|
+
const escaped = prompt
|
|
302
|
+
.replace(/\\/g, '\\\\')
|
|
303
|
+
.replace(/"/g, '\\"')
|
|
304
|
+
.replace(/`/g, '\\`')
|
|
305
|
+
.replace(/\$/g, '\\$');
|
|
306
|
+
const flags = permissionMode === 'bypassPermissions'
|
|
307
|
+
? ' --dangerously-bypass-approvals-and-sandbox'
|
|
308
|
+
: permissionMode === 'acceptEdits'
|
|
309
|
+
? ' --full-auto'
|
|
310
|
+
: '';
|
|
311
|
+
return `printf '%s\\n' "${escaped}" | codex exec${flags} -`;
|
|
312
|
+
}
|
|
313
|
+
export function buildResumeCommand(agent, permissionMode) {
|
|
314
|
+
const template = AGENT_REGISTRY[agent].resumeCommandTemplate;
|
|
315
|
+
if (!template)
|
|
316
|
+
return undefined;
|
|
317
|
+
const flags = getPermissionFlags(agent, permissionMode);
|
|
318
|
+
const suffix = flags ? ` ${flags}` : '';
|
|
319
|
+
if (template.includes('{permissions}')) {
|
|
320
|
+
return template.replace('{permissions}', suffix);
|
|
321
|
+
}
|
|
322
|
+
return flags ? `${template} ${flags}` : template;
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { RuntimeStore } from '../services/runtime.js';
|
|
2
|
+
import type { GitHubIssue, GitHubComment, Settings, RunnerResult, RunMode, RunStatusCheck, SymphonyPane } from '../types.js';
|
|
3
|
+
type RunnerProgressListener = (pane: SymphonyPane) => void | Promise<void>;
|
|
4
|
+
/**
|
|
5
|
+
* Execute a full agent run for an issue.
|
|
6
|
+
* Ported from symphony Python's runner.py + daemon.py.
|
|
7
|
+
*/
|
|
8
|
+
export declare class AgentRunner {
|
|
9
|
+
private runtime;
|
|
10
|
+
private github;
|
|
11
|
+
private tmux;
|
|
12
|
+
private settings;
|
|
13
|
+
private onProgress?;
|
|
14
|
+
constructor(settings: Settings, runtime: RuntimeStore, onProgress?: RunnerProgressListener);
|
|
15
|
+
/**
|
|
16
|
+
* Set up and launch an agent run, returning the pane info.
|
|
17
|
+
*/
|
|
18
|
+
startRun(repo: string, issue: GitHubIssue, comments: GitHubComment[], sessionName: string, mode: RunMode): Promise<{
|
|
19
|
+
pane: SymphonyPane;
|
|
20
|
+
runId: string;
|
|
21
|
+
}>;
|
|
22
|
+
/**
|
|
23
|
+
* Inspect a run and classify whether it is still working, needs review,
|
|
24
|
+
* needs attention, or has fully completed.
|
|
25
|
+
*/
|
|
26
|
+
checkRunStatus(pane: SymphonyPane): Promise<RunStatusCheck>;
|
|
27
|
+
requestAgentExit(pane: SymphonyPane): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Handle post-run actions (push, PR, labels, comments).
|
|
30
|
+
*/
|
|
31
|
+
handleRunCompletion(pane: SymphonyPane, result: RunnerResult): Promise<void>;
|
|
32
|
+
private inspectWorktreeState;
|
|
33
|
+
private buildSuccessResult;
|
|
34
|
+
private recordAutomationProgress;
|
|
35
|
+
private handleAutomaticCompletion;
|
|
36
|
+
private attemptAutomaticMerge;
|
|
37
|
+
private resolveAutomergeConflicts;
|
|
38
|
+
private runAgentPromptInWorktree;
|
|
39
|
+
private runPromptInExistingPane;
|
|
40
|
+
private createAutomationPane;
|
|
41
|
+
private waitForAgentPromptCompletion;
|
|
42
|
+
private waitForExistingAgentPromptTurn;
|
|
43
|
+
private buildConflictResolutionPrompt;
|
|
44
|
+
private hasAgentPrompt;
|
|
45
|
+
private buildAgentEnvironment;
|
|
46
|
+
private finalizePendingChanges;
|
|
47
|
+
private getResolvedAgentForPane;
|
|
48
|
+
private waitForPrState;
|
|
49
|
+
private waitForPrResolution;
|
|
50
|
+
private validateNoMergeMarkers;
|
|
51
|
+
private removeSymphonyArtifacts;
|
|
52
|
+
private syncLocalCheckouts;
|
|
53
|
+
private findLocalCheckoutCandidates;
|
|
54
|
+
private syncCheckout;
|
|
55
|
+
private cleanupRunArtifacts;
|
|
56
|
+
}
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAsBtD,OAAO,KAAK,EACV,WAAW,EAAE,aAAa,EAAiB,QAAQ,EACvC,YAAY,EAAE,OAAO,EAAa,cAAc,EAAE,YAAY,EAC3E,MAAM,aAAa,CAAC;AA6DrB,KAAK,sBAAsB,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3E;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAyB;gBAEhC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,sBAAsB;IAQ1F;;OAEG;IACG,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,aAAa,EAAE,EACzB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAkGjD;;;OAGG;IACG,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IAyH3D,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD;;OAEG;IACG,mBAAmB,CACvB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC;YAiFF,oBAAoB;IAkBlC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,wBAAwB;YAyBlB,yBAAyB;YA0JzB,qBAAqB;YAkKrB,yBAAyB;YAkJzB,wBAAwB;YAgDxB,uBAAuB;YAYvB,oBAAoB;YAgBpB,4BAA4B;YA0D5B,8BAA8B;IA8D5C,OAAO,CAAC,6BAA6B;IA6BrC,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,qBAAqB;YAiBf,sBAAsB;IAsCpC,OAAO,CAAC,uBAAuB;YAmBjB,cAAc;YAiBd,mBAAmB;YAoBnB,sBAAsB;IAepC,OAAO,CAAC,uBAAuB;YAOjB,kBAAkB;YAwClB,2BAA2B;YA4D3B,YAAY;YA2BZ,mBAAmB;CAmBlC"}
|