@proletariat/cli 0.3.68 → 0.3.70

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 (53) hide show
  1. package/dist/commands/session/health.d.ts +11 -0
  2. package/dist/commands/session/health.js +1 -1
  3. package/dist/commands/session/health.js.map +1 -1
  4. package/dist/lib/execution/runners/cloud.d.ts +16 -0
  5. package/dist/lib/execution/runners/cloud.js +88 -0
  6. package/dist/lib/execution/runners/cloud.js.map +1 -0
  7. package/dist/lib/execution/runners/devcontainer-terminal.d.ts +13 -0
  8. package/dist/lib/execution/runners/devcontainer-terminal.js +184 -0
  9. package/dist/lib/execution/runners/devcontainer-terminal.js.map +1 -0
  10. package/dist/lib/execution/runners/devcontainer-tmux.d.ts +16 -0
  11. package/dist/lib/execution/runners/devcontainer-tmux.js +270 -0
  12. package/dist/lib/execution/runners/devcontainer-tmux.js.map +1 -0
  13. package/dist/lib/execution/runners/devcontainer.d.ts +19 -0
  14. package/dist/lib/execution/runners/devcontainer.js +261 -0
  15. package/dist/lib/execution/runners/devcontainer.js.map +1 -0
  16. package/dist/lib/execution/runners/docker-credentials.d.ts +51 -0
  17. package/dist/lib/execution/runners/docker-credentials.js +175 -0
  18. package/dist/lib/execution/runners/docker-credentials.js.map +1 -0
  19. package/dist/lib/execution/runners/docker-management.d.ts +49 -0
  20. package/dist/lib/execution/runners/docker-management.js +300 -0
  21. package/dist/lib/execution/runners/docker-management.js.map +1 -0
  22. package/dist/lib/execution/runners/docker.d.ts +13 -0
  23. package/dist/lib/execution/runners/docker.js +75 -0
  24. package/dist/lib/execution/runners/docker.js.map +1 -0
  25. package/dist/lib/execution/runners/executor.d.ts +41 -0
  26. package/dist/lib/execution/runners/executor.js +108 -0
  27. package/dist/lib/execution/runners/executor.js.map +1 -0
  28. package/dist/lib/execution/runners/host.d.ts +14 -0
  29. package/dist/lib/execution/runners/host.js +437 -0
  30. package/dist/lib/execution/runners/host.js.map +1 -0
  31. package/dist/lib/execution/runners/index.d.ts +29 -0
  32. package/dist/lib/execution/runners/index.js +79 -0
  33. package/dist/lib/execution/runners/index.js.map +1 -0
  34. package/dist/lib/execution/runners/orchestrator.d.ts +30 -0
  35. package/dist/lib/execution/runners/orchestrator.js +332 -0
  36. package/dist/lib/execution/runners/orchestrator.js.map +1 -0
  37. package/dist/lib/execution/runners/prompt-builder.d.ts +12 -0
  38. package/dist/lib/execution/runners/prompt-builder.js +337 -0
  39. package/dist/lib/execution/runners/prompt-builder.js.map +1 -0
  40. package/dist/lib/execution/runners/sandbox.d.ts +34 -0
  41. package/dist/lib/execution/runners/sandbox.js +108 -0
  42. package/dist/lib/execution/runners/sandbox.js.map +1 -0
  43. package/dist/lib/execution/runners/shared.d.ts +62 -0
  44. package/dist/lib/execution/runners/shared.js +141 -0
  45. package/dist/lib/execution/runners/shared.js.map +1 -0
  46. package/dist/lib/execution/runners.d.ts +12 -272
  47. package/dist/lib/execution/runners.js +12 -3200
  48. package/dist/lib/execution/runners.js.map +1 -1
  49. package/dist/lib/external-issues/outbound-sync.d.ts +15 -0
  50. package/dist/lib/external-issues/outbound-sync.js +11 -1
  51. package/dist/lib/external-issues/outbound-sync.js.map +1 -1
  52. package/oclif.manifest.json +2334 -2334
  53. package/package.json +1 -1
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Execution Runners
3
+ *
4
+ * Dispatcher and re-exports for all execution environment runners.
5
+ * Each runner is in its own module for independent testability and maintainability.
6
+ *
7
+ * Modules:
8
+ * - shared.ts — Shared utilities (session names, credentials, docker, prompts, etc.)
9
+ * - host.ts — Host runner with tmux session persistence
10
+ * - devcontainer.ts — Docker container runner with raw Docker commands
11
+ * - docker.ts — Simple detached Docker container runner
12
+ * - orchestrator.ts — Orchestrator-in-Docker runner (sibling container pattern)
13
+ * - sandbox.ts — srt sandbox runner (wraps host runner)
14
+ * - cloud.ts — Remote execution via SSH
15
+ */
16
+ import { DEFAULT_EXECUTION_CONFIG, normalizeEnvironment, } from './shared.js';
17
+ import { ensureTmuxServerHasKeychainAccess } from './shared.js';
18
+ import { runHost } from './host.js';
19
+ import { runDevcontainer } from './devcontainer.js';
20
+ import { runDocker } from './docker.js';
21
+ import { runSandbox } from './sandbox.js';
22
+ import { runCloud } from './cloud.js';
23
+ // =============================================================================
24
+ // Runner Dispatcher
25
+ // =============================================================================
26
+ export async function runExecution(environment, context, executor, config = DEFAULT_EXECUTION_CONFIG, options) {
27
+ // Ensure context knows its execution environment
28
+ if (!context.executionEnvironment) {
29
+ context.executionEnvironment = environment;
30
+ }
31
+ // Normalize environment (maps 'vm' -> 'cloud')
32
+ const normalizedEnv = normalizeEnvironment(environment);
33
+ // Ensure tmux server has keychain access for OAuth (host/sandbox only)
34
+ // Docker uses claude-credentials volume, devcontainer runs inside container
35
+ if (normalizedEnv === 'host' || normalizedEnv === 'sandbox') {
36
+ await ensureTmuxServerHasKeychainAccess();
37
+ }
38
+ switch (normalizedEnv) {
39
+ case 'devcontainer':
40
+ return runDevcontainer(context, executor, config, options?.displayMode, options?.sessionManager);
41
+ case 'host':
42
+ return runHost(context, executor, config, options?.displayMode);
43
+ case 'sandbox':
44
+ return runSandbox(context, executor, config, options?.displayMode);
45
+ case 'docker':
46
+ return runDocker(context, executor, config);
47
+ case 'cloud':
48
+ return runCloud(context, executor, config, options?.host);
49
+ default:
50
+ return { success: false, error: `Unknown execution environment: ${environment}` };
51
+ }
52
+ }
53
+ // =============================================================================
54
+ // Re-exports — All public API from the old monolithic runners.ts
55
+ // =============================================================================
56
+ // Shared utilities
57
+ export {
58
+ // Session/title helpers
59
+ buildSessionName, buildWindowTitle, buildTmuxWindowName,
60
+ // Control mode helpers
61
+ shouldUseControlMode, buildTmuxMouseOption, buildTmuxAttachCommand, configureITermTmuxPreferences, configureITermTmuxWindowMode,
62
+ // Credential helpers
63
+ CLAUDE_CREDENTIALS_VOLUME, credentialsVolumeExists, dockerCredentialsExist, getDockerCredentialInfo, hostCredentialsExist,
64
+ // Executor helpers
65
+ getExecutorCommand, isClaudeExecutor, getExecutorDisplayName, getExecutorPackage, checkExecutorOnHost, checkExecutorInContainer, runExecutorPreflight,
66
+ // GitHub token
67
+ getGitHubToken, isGitHubTokenAvailable, checkDockerDaemon, isDockerRunning, isDevcontainerCliInstalled,
68
+ // Docker container management
69
+ getHostPrltVersion, getAgentContainerName, containerExists, isContainerRunning, getContainerId,
70
+ // Prompt building
71
+ buildPrompt, buildOrchestratorSystemPrompt, buildIntegrationCommandsSection, } from './shared.js';
72
+ // Individual runners
73
+ export { runHost } from './host.js';
74
+ export { runDevcontainer, buildDevcontainerCommand } from './devcontainer.js';
75
+ export { runDocker } from './docker.js';
76
+ export { runOrchestratorInDocker } from './orchestrator.js';
77
+ export { runSandbox, isSrtInstalled, buildSrtCommand } from './sandbox.js';
78
+ export { runCloud, runVm } from './cloud.js';
79
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/execution/runners/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Orchestrator Docker Runner (Sibling Container Pattern)
3
+ *
4
+ * Runs the orchestrator in a Docker container that can spawn sibling containers
5
+ * via the mounted Docker socket.
6
+ */
7
+ import { DisplayMode, ExecutorType, ExecutionContext, ExecutionConfig } from './shared.js';
8
+ import { RunnerResult } from './shared.js';
9
+ /**
10
+ * Run orchestrator in a Docker container using the sibling container pattern.
11
+ *
12
+ * Architecture:
13
+ * ```
14
+ * Host Docker daemon
15
+ * ├── orchestrator container (has /var/run/docker.sock mounted)
16
+ * ├── agent-1 container (spawned by orchestrator, sibling)
17
+ * ├── agent-2 container (spawned by orchestrator, sibling)
18
+ * ```
19
+ *
20
+ * The orchestrator container needs:
21
+ * - HQ directory mounted (proletariat-hq)
22
+ * - Docker socket mounted (/var/run/docker.sock) — so it can spawn agent containers as siblings
23
+ * - prlt CLI installed in the container
24
+ * - OAuth credentials for Claude Code (via Docker volume)
25
+ * - tmux for session persistence inside the container
26
+ */
27
+ export declare function runOrchestratorInDocker(context: ExecutionContext, executor: ExecutorType, config: ExecutionConfig, options?: {
28
+ displayMode?: DisplayMode;
29
+ sessionName?: string;
30
+ }): Promise<RunnerResult>;
@@ -0,0 +1,332 @@
1
+ /**
2
+ * Orchestrator Docker Runner (Sibling Container Pattern)
3
+ *
4
+ * Runs the orchestrator in a Docker container that can spawn sibling containers
5
+ * via the mounted Docker socket.
6
+ */
7
+ import { spawn, execSync, fs, path, os, generateOrchestratorDockerfile, } from './shared.js';
8
+ import { buildPrompt, checkDockerDaemon, containerExists, isContainerRunning, getContainerId, getHostPrltVersion, } from './shared.js';
9
+ /**
10
+ * Run orchestrator in a Docker container using the sibling container pattern.
11
+ *
12
+ * Architecture:
13
+ * ```
14
+ * Host Docker daemon
15
+ * ├── orchestrator container (has /var/run/docker.sock mounted)
16
+ * ├── agent-1 container (spawned by orchestrator, sibling)
17
+ * ├── agent-2 container (spawned by orchestrator, sibling)
18
+ * ```
19
+ *
20
+ * The orchestrator container needs:
21
+ * - HQ directory mounted (proletariat-hq)
22
+ * - Docker socket mounted (/var/run/docker.sock) — so it can spawn agent containers as siblings
23
+ * - prlt CLI installed in the container
24
+ * - OAuth credentials for Claude Code (via Docker volume)
25
+ * - tmux for session persistence inside the container
26
+ */
27
+ export async function runOrchestratorInDocker(context, executor, config, options) {
28
+ const displayMode = options?.displayMode || 'background';
29
+ const hqPath = context.hqPath || context.worktreePath;
30
+ const hqName = context.hqName || 'default';
31
+ const orchestratorName = context.agentName || 'main';
32
+ // Container name matches tmux session name for consistency
33
+ const containerName = `prlt-orchestrator-${(hqName).replace(/[^a-zA-Z0-9._-]/g, '-')}-${(orchestratorName).replace(/[^a-zA-Z0-9._-]/g, '-')}`;
34
+ const imageName = `prlt-orchestrator-${(hqName).replace(/[^a-zA-Z0-9._-]/g, '-')}:latest`;
35
+ try {
36
+ // Check Docker is running (TKT-081: fast detection with diagnostic info)
37
+ const dockerStatus = checkDockerDaemon();
38
+ if (!dockerStatus.available) {
39
+ return {
40
+ success: false,
41
+ error: `Docker daemon is not available. ${dockerStatus.message}`,
42
+ };
43
+ }
44
+ // Check if container already exists and is running
45
+ if (containerExists(containerName)) {
46
+ if (isContainerRunning(containerName)) {
47
+ return {
48
+ success: false,
49
+ error: `Orchestrator container "${containerName}" is already running. Use "prlt orchestrator attach" to reattach.`,
50
+ };
51
+ }
52
+ // Remove stopped container
53
+ try {
54
+ execSync(`docker rm -f ${containerName}`, { stdio: 'pipe' });
55
+ }
56
+ catch {
57
+ // Ignore removal errors
58
+ }
59
+ }
60
+ // Generate Dockerfile
61
+ const orchestratorDockerOptions = {
62
+ orchestratorName,
63
+ hqPath,
64
+ executor,
65
+ };
66
+ const dockerfileContent = generateOrchestratorDockerfile(orchestratorDockerOptions);
67
+ // Write Dockerfile to temp directory
68
+ const buildDir = path.join(hqPath, '.proletariat', 'orchestrator-docker');
69
+ fs.mkdirSync(buildDir, { recursive: true });
70
+ const dockerfilePath = path.join(buildDir, 'Dockerfile');
71
+ fs.writeFileSync(dockerfilePath, dockerfileContent);
72
+ // Build the image
73
+ const hostPrltVersion = getHostPrltVersion();
74
+ const buildArgs = {
75
+ PRLT_VERSION: hostPrltVersion || 'latest',
76
+ };
77
+ const buildArgFlags = Object.entries(buildArgs)
78
+ .map(([key, value]) => `--build-arg ${key}="${value}"`)
79
+ .join(' ');
80
+ console.debug(`[runners:orchestrator-docker] Building image: ${imageName}`);
81
+ try {
82
+ execSync(`docker build -t ${imageName} -f "${dockerfilePath}" ${buildArgFlags} "${buildDir}"`, { stdio: 'pipe' });
83
+ }
84
+ catch (buildError) {
85
+ return {
86
+ success: false,
87
+ error: `Failed to build orchestrator Docker image: ${buildError instanceof Error ? buildError.message : buildError}`,
88
+ };
89
+ }
90
+ // Build mount flags for docker run
91
+ const mounts = [
92
+ // Mount HQ directory
93
+ `-v "${hqPath}:/hq:cached"`,
94
+ // Docker socket for sibling container pattern
95
+ `-v /var/run/docker.sock:/var/run/docker.sock`,
96
+ // Claude credentials volume (shared with agent containers)
97
+ ...(executor === 'claude-code' ? ['-v "claude-credentials:/home/node/.claude"'] : []),
98
+ // Persistent bash history
99
+ '-v "claude-bash-history:/commandhistory"',
100
+ ];
101
+ // Build environment variables
102
+ const envVars = [
103
+ `-e PRLT_HQ_PATH=/hq`,
104
+ `-e PRLT_AGENT_NAME="orchestrator-${orchestratorName}"`,
105
+ `-e PRLT_HOST_PATH="${hqPath}"`,
106
+ // Pass through GitHub tokens for agent spawning
107
+ ...(process.env.GITHUB_TOKEN ? [`-e GITHUB_TOKEN="${process.env.GITHUB_TOKEN}"`] : []),
108
+ ...(process.env.GH_TOKEN ? [`-e GH_TOKEN="${process.env.GH_TOKEN}"`] : []),
109
+ // Pass ANTHROPIC_API_KEY if available (for cases where OAuth is not set up)
110
+ ...(process.env.ANTHROPIC_API_KEY ? [`-e ANTHROPIC_API_KEY="${process.env.ANTHROPIC_API_KEY}"`] : []),
111
+ ];
112
+ // Create and start container
113
+ const createCmd = [
114
+ 'docker run -d',
115
+ `--name ${containerName}`,
116
+ '--user node',
117
+ '-w /hq',
118
+ ...mounts,
119
+ ...envVars,
120
+ `--memory=${config.devcontainer.memory}`,
121
+ `--cpus=${config.devcontainer.cpus}`,
122
+ imageName,
123
+ 'sleep infinity', // Keep container running
124
+ ].join(' ');
125
+ console.debug(`[runners:orchestrator-docker] Creating container: ${createCmd}`);
126
+ execSync(createCmd, { stdio: 'pipe' });
127
+ const containerId = getContainerId(containerName);
128
+ if (!containerId) {
129
+ return {
130
+ success: false,
131
+ error: 'Failed to get container ID after creation',
132
+ };
133
+ }
134
+ // Fix Docker socket permissions inside the container
135
+ // The socket is owned by root on the host; we need the node user to access it
136
+ try {
137
+ execSync(`docker exec --user root ${containerId} chmod 666 /var/run/docker.sock`, { stdio: 'pipe' });
138
+ }
139
+ catch {
140
+ console.debug('[runners:orchestrator-docker] Failed to fix Docker socket permissions (may already be accessible)');
141
+ }
142
+ // Copy Claude Code settings to container (for bypassing prompts)
143
+ if (executor === 'claude-code') {
144
+ try {
145
+ const hostClaudeJson = path.join(os.homedir(), '.claude.json');
146
+ let settings = {};
147
+ if (fs.existsSync(hostClaudeJson)) {
148
+ try {
149
+ settings = JSON.parse(fs.readFileSync(hostClaudeJson, 'utf-8'));
150
+ }
151
+ catch {
152
+ // Use empty settings
153
+ }
154
+ }
155
+ if (config.permissionMode === 'danger') {
156
+ settings.bypassPermissionsModeAccepted = true;
157
+ }
158
+ settings.numStartups = settings.numStartups || 1;
159
+ settings.hasCompletedOnboarding = true;
160
+ settings.theme = settings.theme || 'dark';
161
+ if (!settings.tipsHistory || typeof settings.tipsHistory !== 'object') {
162
+ settings.tipsHistory = {};
163
+ }
164
+ const tips = settings.tipsHistory;
165
+ tips['new-user-warmup'] = tips['new-user-warmup'] || 1;
166
+ settings.effortCalloutDismissed = true;
167
+ if (!settings.projects || typeof settings.projects !== 'object') {
168
+ settings.projects = {};
169
+ }
170
+ const projects = settings.projects;
171
+ for (const projectPath of ['/hq', '/']) {
172
+ if (!projects[projectPath])
173
+ projects[projectPath] = {};
174
+ projects[projectPath].hasTrustDialogAccepted = true;
175
+ projects[projectPath].hasCompletedProjectOnboarding = true;
176
+ }
177
+ execSync(`docker exec -i ${containerId} bash -c 'cat > /home/node/.claude.json'`, { input: JSON.stringify(settings), stdio: ['pipe', 'pipe', 'pipe'] });
178
+ const claudeSettings = JSON.stringify({ skipDangerousModePermissionPrompt: true });
179
+ execSync(`docker exec -i ${containerId} bash -c 'mkdir -p /home/node/.claude && cat > /home/node/.claude/settings.json'`, { input: claudeSettings, stdio: ['pipe', 'pipe', 'pipe'] });
180
+ }
181
+ catch (error) {
182
+ console.debug('[runners:orchestrator-docker] Failed to copy Claude settings:', error);
183
+ }
184
+ }
185
+ // Build the prompt and write to temp file inside container
186
+ const prompt = buildPrompt(context);
187
+ const promptPath = `/tmp/orchestrator-prompt-${Date.now()}.txt`;
188
+ try {
189
+ execSync(`docker exec -i ${containerId} bash -c 'cat > ${promptPath}'`, { input: prompt, stdio: ['pipe', 'pipe', 'pipe'] });
190
+ }
191
+ catch {
192
+ return {
193
+ success: false,
194
+ error: 'Failed to write prompt to container',
195
+ };
196
+ }
197
+ // Build executor command
198
+ const skipPermissions = config.permissionMode === 'danger';
199
+ const permissionsFlag = skipPermissions ? '--dangerously-skip-permissions ' : '';
200
+ const effortFlag = skipPermissions ? '--effort high ' : '';
201
+ // TKT-053: Disable plan mode for background agents — prevents silent stalls
202
+ const disallowPlanFlag = displayMode === 'background' ? '--disallowedTools EnterPlanMode ' : '';
203
+ // PRLT-950: Use -- to separate flags from positional prompt argument.
204
+ // --disallowedTools is variadic and will consume the prompt as its second arg without --.
205
+ const executorCmd = executor === 'claude-code'
206
+ ? `claude ${permissionsFlag}${effortFlag}${disallowPlanFlag}-- "$(cat ${promptPath})"`
207
+ : `claude ${permissionsFlag}${effortFlag}-- "$(cat ${promptPath})"`;
208
+ // Build tmux session name (reuses the same name as host tmux for consistency)
209
+ const tmuxSessionName = options?.sessionName || containerName;
210
+ // Create tmux session inside container with the executor command
211
+ const tmuxCmd = `tmux new-session -d -s "${tmuxSessionName}" -n "${tmuxSessionName}" bash -c '(unset CLAUDECODE CLAUDE_CODE_ENTRYPOINT; cd /hq && ${executorCmd}); echo ""; echo "Orchestrator complete. Press Enter to close."; exec bash'`;
212
+ try {
213
+ execSync(`docker exec ${containerId} bash -c '${tmuxCmd.replace(/'/g, "'\\''")}'`, { stdio: 'pipe' });
214
+ }
215
+ catch (tmuxError) {
216
+ // Fallback: try simpler command without subshell
217
+ console.debug('[runners:orchestrator-docker] tmux creation failed, trying simpler approach:', tmuxError);
218
+ try {
219
+ // Write a script inside the container
220
+ const scriptContent = `#!/bin/bash
221
+ cd /hq
222
+ unset CLAUDECODE CLAUDE_CODE_ENTRYPOINT
223
+ ${executor === 'claude-code' ? `claude ${permissionsFlag}${effortFlag}${disallowPlanFlag}"$(cat ${promptPath})"` : `claude "$(cat ${promptPath})"`}
224
+ echo ""
225
+ echo "Orchestrator complete. Press Enter to close."
226
+ exec bash
227
+ `;
228
+ execSync(`docker exec -i ${containerId} bash -c 'cat > /tmp/orchestrator-start.sh && chmod +x /tmp/orchestrator-start.sh'`, { input: scriptContent, stdio: ['pipe', 'pipe', 'pipe'] });
229
+ execSync(`docker exec ${containerId} tmux new-session -d -s "${tmuxSessionName}" /tmp/orchestrator-start.sh`, { stdio: 'pipe' });
230
+ }
231
+ catch (fallbackError) {
232
+ return {
233
+ success: false,
234
+ error: `Failed to create tmux session in container: ${fallbackError instanceof Error ? fallbackError.message : fallbackError}`,
235
+ };
236
+ }
237
+ }
238
+ // Handle display mode
239
+ if (displayMode === 'foreground') {
240
+ // Attach to tmux inside the container in current terminal
241
+ try {
242
+ const child = spawn('docker', ['exec', '-it', containerId, 'tmux', 'attach', '-t', tmuxSessionName], {
243
+ stdio: 'inherit',
244
+ });
245
+ await new Promise((resolve) => {
246
+ child.on('close', () => resolve());
247
+ });
248
+ }
249
+ catch {
250
+ // User detached - that's fine
251
+ }
252
+ }
253
+ else if (displayMode === 'terminal' && process.platform === 'darwin') {
254
+ // Open a new terminal tab that attaches to the container's tmux
255
+ const baseDir = path.join(hqPath, '.proletariat', 'scripts');
256
+ fs.mkdirSync(baseDir, { recursive: true });
257
+ const scriptPath = path.join(baseDir, `orch-docker-attach-${Date.now()}.sh`);
258
+ const scriptContent = `#!/bin/bash
259
+ echo -ne "\\033]0;Orchestrator (Docker)\\007"
260
+ echo -ne "\\033]1;Orchestrator (Docker)\\007"
261
+ docker exec -it ${containerId} tmux attach -t "${tmuxSessionName}"
262
+ rm -f "${scriptPath}"
263
+ exec $SHELL
264
+ `;
265
+ fs.writeFileSync(scriptPath, scriptContent, { mode: 0o755 });
266
+ const terminalApp = config.terminal.app;
267
+ try {
268
+ switch (terminalApp) {
269
+ case 'iTerm':
270
+ execSync(`osascript -e '
271
+ tell application "iTerm"
272
+ activate
273
+ tell current window
274
+ set newTab to (create tab with default profile)
275
+ tell current session of newTab
276
+ set name to "Orchestrator (Docker)"
277
+ write text "${scriptPath}"
278
+ end tell
279
+ end tell
280
+ end tell
281
+ '`);
282
+ break;
283
+ case 'Ghostty':
284
+ execSync(`osascript -e '
285
+ tell application "Ghostty"
286
+ activate
287
+ end tell
288
+ tell application "System Events"
289
+ tell process "Ghostty"
290
+ keystroke "t" using command down
291
+ delay 0.3
292
+ keystroke "${scriptPath}"
293
+ keystroke return
294
+ end tell
295
+ end tell
296
+ '`);
297
+ break;
298
+ default:
299
+ execSync(`osascript -e '
300
+ tell application "Terminal"
301
+ activate
302
+ tell application "System Events"
303
+ tell process "Terminal"
304
+ keystroke "t" using command down
305
+ end tell
306
+ end tell
307
+ delay 0.3
308
+ do script "${scriptPath}" in front window
309
+ end tell
310
+ '`);
311
+ break;
312
+ }
313
+ }
314
+ catch {
315
+ console.debug('[runners:orchestrator-docker] Failed to open terminal tab, running in background');
316
+ }
317
+ }
318
+ // 'background' display mode: container is already running, nothing more to do
319
+ return {
320
+ success: true,
321
+ containerId,
322
+ sessionId: tmuxSessionName,
323
+ };
324
+ }
325
+ catch (error) {
326
+ return {
327
+ success: false,
328
+ error: error instanceof Error ? error.message : 'Failed to start orchestrator in Docker',
329
+ };
330
+ }
331
+ }
332
+ //# sourceMappingURL=orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../../src/lib/execution/runners/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Prompt Builder
3
+ *
4
+ * Functions for building agent prompts including:
5
+ * - Integration commands for connected services
6
+ * - Orchestrator prompt (system prompt + user message)
7
+ * - Ticket prompt (action + ticket content + completion instructions)
8
+ */
9
+ import { ExecutionContext } from '../types.js';
10
+ export declare function buildIntegrationCommandsSection(connectedIntegrations?: string[]): string;
11
+ export declare function buildOrchestratorSystemPrompt(context: ExecutionContext): string;
12
+ export declare function buildPrompt(context: ExecutionContext): string;