@proletariat/cli 0.3.112 → 0.3.114
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/dist/commands/orchestrate/index.js +11 -2
- package/dist/commands/orchestrate/index.js.map +1 -1
- package/dist/commands/pr/merge.js +44 -80
- package/dist/commands/pr/merge.js.map +1 -1
- package/dist/commands/work/start.js +30 -0
- package/dist/commands/work/start.js.map +1 -1
- package/dist/hooks/init.js +14 -1
- package/dist/hooks/init.js.map +1 -1
- package/dist/lib/events/events.d.ts +19 -0
- package/dist/lib/execution/devcontainer.js +26 -2
- package/dist/lib/execution/devcontainer.js.map +1 -1
- package/dist/lib/execution/prompt-watcher.d.ts +120 -0
- package/dist/lib/execution/prompt-watcher.js +222 -0
- package/dist/lib/execution/prompt-watcher.js.map +1 -0
- package/dist/lib/execution/runners/devcontainer-tmux.js +14 -0
- package/dist/lib/execution/runners/devcontainer-tmux.js.map +1 -1
- package/dist/lib/execution/runners/devcontainer.js +5 -1
- package/dist/lib/execution/runners/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/docker-credentials.d.ts +13 -0
- package/dist/lib/execution/runners/docker-credentials.js +55 -0
- package/dist/lib/execution/runners/docker-credentials.js.map +1 -1
- package/dist/lib/execution/runners/docker-management.d.ts +7 -0
- package/dist/lib/execution/runners/docker-management.js +38 -4
- package/dist/lib/execution/runners/docker-management.js.map +1 -1
- package/dist/lib/execution/runners/shared.d.ts +2 -2
- package/dist/lib/execution/runners/shared.js +2 -2
- package/dist/lib/execution/runners/shared.js.map +1 -1
- package/dist/lib/execution/spawner.js +31 -0
- package/dist/lib/execution/spawner.js.map +1 -1
- package/dist/lib/orchestrate/index.d.ts +1 -1
- package/dist/lib/orchestrate/index.js +1 -1
- package/dist/lib/orchestrate/index.js.map +1 -1
- package/dist/lib/orchestrate/llm-agent.d.ts +7 -0
- package/dist/lib/orchestrate/llm-agent.js +48 -1
- package/dist/lib/orchestrate/llm-agent.js.map +1 -1
- package/dist/lib/pr/index.d.ts +9 -0
- package/dist/lib/pr/index.js +46 -0
- package/dist/lib/pr/index.js.map +1 -1
- package/dist/lib/reconcile/index.d.ts +7 -2
- package/dist/lib/reconcile/index.js +130 -8
- package/dist/lib/reconcile/index.js.map +1 -1
- package/dist/lib/reconcile/types.d.ts +18 -1
- package/dist/lib/update-check.d.ts +39 -0
- package/dist/lib/update-check.js +139 -0
- package/dist/lib/update-check.js.map +1 -1
- package/oclif.manifest.json +675 -675
- package/package.json +1 -1
|
@@ -583,8 +583,32 @@ if command -v prlt &> /dev/null; then
|
|
|
583
583
|
|
|
584
584
|
if [ "$TARGET_VERSION" != "unknown" ] && [ "$CURRENT_VERSION" != "$TARGET_VERSION" ]; then
|
|
585
585
|
echo "Updating prlt from v\${CURRENT_VERSION} to v\${TARGET_VERSION} (channel: \${DESIRED_VERSION})..."
|
|
586
|
-
|
|
587
|
-
|
|
586
|
+
# PRLT-1276: Back up current install before attempting update.
|
|
587
|
+
# If the update fails, restore from backup so prlt keeps working.
|
|
588
|
+
PRLT_PKG_DIR="/home/node/.npm-global/lib/node_modules/@proletariat/cli"
|
|
589
|
+
PRLT_BACKUP_DIR="\${PRLT_PKG_DIR}.prlt-backup-\$\$"
|
|
590
|
+
if [ -d "$PRLT_PKG_DIR" ]; then
|
|
591
|
+
mv "$PRLT_PKG_DIR" "$PRLT_BACKUP_DIR" 2>/dev/null || true
|
|
592
|
+
fi
|
|
593
|
+
if npm install -g "@proletariat/cli@\${DESIRED_VERSION}" 2>&1; then
|
|
594
|
+
echo "prlt updated successfully"
|
|
595
|
+
# Clean up backup on success
|
|
596
|
+
rm -rf "$PRLT_BACKUP_DIR" 2>/dev/null || true
|
|
597
|
+
else
|
|
598
|
+
echo "Warning: prlt update failed. Restoring previous version..."
|
|
599
|
+
# Restore from backup if update failed
|
|
600
|
+
if [ -d "$PRLT_BACKUP_DIR" ]; then
|
|
601
|
+
rm -rf "$PRLT_PKG_DIR" 2>/dev/null || true
|
|
602
|
+
mv "$PRLT_BACKUP_DIR" "$PRLT_PKG_DIR" 2>/dev/null || true
|
|
603
|
+
# Re-create bin symlink if it was removed
|
|
604
|
+
if [ ! -L "/home/node/.npm-global/bin/prlt" ] && [ -f "$PRLT_PKG_DIR/bin/run.js" ]; then
|
|
605
|
+
ln -sf "../lib/node_modules/@proletariat/cli/bin/run.js" "/home/node/.npm-global/bin/prlt" 2>/dev/null || true
|
|
606
|
+
fi
|
|
607
|
+
echo "Previous version restored: prlt v\${CURRENT_VERSION}"
|
|
608
|
+
else
|
|
609
|
+
echo "Error: Could not restore previous prlt installation"
|
|
610
|
+
fi
|
|
611
|
+
fi
|
|
588
612
|
else
|
|
589
613
|
echo "prlt v\${CURRENT_VERSION} is up to date"
|
|
590
614
|
fi
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devcontainer.js","sourceRoot":"","sources":["../../../src/lib/execution/devcontainer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"devcontainer.js","sourceRoot":"","sources":["../../../src/lib/execution/devcontainer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Watcher — Auto-dismiss third-party plugin onboarding prompts
|
|
3
|
+
*
|
|
4
|
+
* Monitors tmux pane output during the first N seconds after agent spawn
|
|
5
|
+
* to detect and auto-dismiss known interactive prompts (e.g. Vercel plugin
|
|
6
|
+
* telemetry, Claude Code sensitive-file write permission).
|
|
7
|
+
*
|
|
8
|
+
* PRLT-1281: Prevents agents from getting stuck on plugin first-run dialogs.
|
|
9
|
+
*/
|
|
10
|
+
/** Policy for what to do when a prompt is matched. */
|
|
11
|
+
export type DismissAction = 'decline' | 'approve_always' | 'approve' | 'escalate';
|
|
12
|
+
/** A known prompt pattern and its auto-dismiss response. */
|
|
13
|
+
export interface PromptPattern {
|
|
14
|
+
/** Human-readable name for logging. */
|
|
15
|
+
name: string;
|
|
16
|
+
/** Required header text that must appear in the pane output. */
|
|
17
|
+
headerMatch: string;
|
|
18
|
+
/** The cursor marker that indicates an interactive menu is active. */
|
|
19
|
+
cursorMarker: string;
|
|
20
|
+
/** What action to take when matched. */
|
|
21
|
+
action: DismissAction;
|
|
22
|
+
/**
|
|
23
|
+
* The option text to select. For numbered menus, this is matched against
|
|
24
|
+
* the menu items to find the correct number key to send.
|
|
25
|
+
*/
|
|
26
|
+
preferredOption: string;
|
|
27
|
+
/**
|
|
28
|
+
* Fallback option text if preferredOption is not found in the menu.
|
|
29
|
+
* Used for "Always allow" → fallback to "Yes" scenarios.
|
|
30
|
+
*/
|
|
31
|
+
fallbackOption?: string;
|
|
32
|
+
}
|
|
33
|
+
/** Result of a prompt dismissal attempt. */
|
|
34
|
+
export interface DismissResult {
|
|
35
|
+
/** The pattern that matched. */
|
|
36
|
+
pattern: PromptPattern;
|
|
37
|
+
/** The actual text that was matched in the pane output. */
|
|
38
|
+
matchedText: string;
|
|
39
|
+
/** The answer that was sent. */
|
|
40
|
+
selectedAnswer: string;
|
|
41
|
+
/** Whether the dismissal was successful (keystroke sent without error). */
|
|
42
|
+
success: boolean;
|
|
43
|
+
/** Error message if dismissal failed. */
|
|
44
|
+
error?: string;
|
|
45
|
+
}
|
|
46
|
+
/** Result of an escalation (unknown prompt detected). */
|
|
47
|
+
export interface EscalationResult {
|
|
48
|
+
/** The pane content that triggered escalation. */
|
|
49
|
+
paneContent: string;
|
|
50
|
+
/** Why escalation was triggered. */
|
|
51
|
+
reason: string;
|
|
52
|
+
}
|
|
53
|
+
/** Callback for logging auto-dismiss events. */
|
|
54
|
+
export type DismissLogger = (result: DismissResult) => void;
|
|
55
|
+
/** Callback for escalating unknown prompts. */
|
|
56
|
+
export type EscalationHandler = (result: EscalationResult) => void;
|
|
57
|
+
/**
|
|
58
|
+
* Registry of known plugin onboarding prompts.
|
|
59
|
+
* Start narrow (exact strings) and broaden as more prompts are cataloged.
|
|
60
|
+
*/
|
|
61
|
+
export declare const KNOWN_PROMPT_PATTERNS: PromptPattern[];
|
|
62
|
+
/**
|
|
63
|
+
* Check if pane output contains a genuine interactive prompt.
|
|
64
|
+
* Requires BOTH the header text AND the cursor marker to be present,
|
|
65
|
+
* preventing false positives from normal numbered lists in output.
|
|
66
|
+
*/
|
|
67
|
+
export declare function detectPrompt(paneContent: string): {
|
|
68
|
+
pattern: PromptPattern;
|
|
69
|
+
matchedText: string;
|
|
70
|
+
} | null;
|
|
71
|
+
/**
|
|
72
|
+
* Check if pane output contains an unknown interactive prompt.
|
|
73
|
+
* An unknown prompt has the cursor marker (❯) with a numbered list
|
|
74
|
+
* but does NOT match any known pattern's header text.
|
|
75
|
+
*
|
|
76
|
+
* We look for lines that start with the cursor marker followed by a number,
|
|
77
|
+
* indicating an active numbered menu that we don't recognize.
|
|
78
|
+
*/
|
|
79
|
+
export declare function detectUnknownPrompt(paneContent: string): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Find the menu option number for a given option text.
|
|
82
|
+
* Parses numbered menu items like " 2. No thanks" and returns the number key.
|
|
83
|
+
*/
|
|
84
|
+
export declare function findMenuOptionKey(paneContent: string, optionText: string): string | null;
|
|
85
|
+
/**
|
|
86
|
+
* Determine the key to send for a given prompt pattern match.
|
|
87
|
+
* Returns the number key for the preferred (or fallback) option.
|
|
88
|
+
*/
|
|
89
|
+
export declare function resolveKeyToSend(paneContent: string, pattern: PromptPattern): {
|
|
90
|
+
key: string;
|
|
91
|
+
optionText: string;
|
|
92
|
+
} | null;
|
|
93
|
+
/**
|
|
94
|
+
* Send a menu selection keystroke to a tmux session.
|
|
95
|
+
* Sends the number key followed by Enter to select the option.
|
|
96
|
+
*/
|
|
97
|
+
export declare function sendMenuSelection(sessionId: string, key: string, containerId?: string): void;
|
|
98
|
+
export interface PromptWatcherOptions {
|
|
99
|
+
/** How long to watch for prompts (ms). Default: 60000 (60s). */
|
|
100
|
+
watchDurationMs?: number;
|
|
101
|
+
/** How often to poll pane output (ms). Default: 3000 (3s). */
|
|
102
|
+
pollIntervalMs?: number;
|
|
103
|
+
/** Number of scrollback lines to capture. Default: 50. */
|
|
104
|
+
captureLines?: number;
|
|
105
|
+
/** Container ID for container-based sessions. */
|
|
106
|
+
containerId?: string;
|
|
107
|
+
/** Callback for logging auto-dismiss events. */
|
|
108
|
+
onDismiss?: DismissLogger;
|
|
109
|
+
/** Callback for escalating unknown prompts. */
|
|
110
|
+
onEscalate?: EscalationHandler;
|
|
111
|
+
/** Logging function. */
|
|
112
|
+
log?: (msg: string) => void;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Start watching a tmux session for interactive prompts.
|
|
116
|
+
* Runs in the background (non-blocking) for the configured duration.
|
|
117
|
+
*
|
|
118
|
+
* Returns a cleanup function to stop watching early.
|
|
119
|
+
*/
|
|
120
|
+
export declare function startPromptWatcher(sessionId: string, options?: PromptWatcherOptions): () => void;
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Watcher — Auto-dismiss third-party plugin onboarding prompts
|
|
3
|
+
*
|
|
4
|
+
* Monitors tmux pane output during the first N seconds after agent spawn
|
|
5
|
+
* to detect and auto-dismiss known interactive prompts (e.g. Vercel plugin
|
|
6
|
+
* telemetry, Claude Code sensitive-file write permission).
|
|
7
|
+
*
|
|
8
|
+
* PRLT-1281: Prevents agents from getting stuck on plugin first-run dialogs.
|
|
9
|
+
*/
|
|
10
|
+
import { execSync } from 'node:child_process';
|
|
11
|
+
import { captureTmuxPane } from './session-utils.js';
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// Known Prompt Patterns
|
|
14
|
+
// =============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Registry of known plugin onboarding prompts.
|
|
17
|
+
* Start narrow (exact strings) and broaden as more prompts are cataloged.
|
|
18
|
+
*/
|
|
19
|
+
export const KNOWN_PROMPT_PATTERNS = [
|
|
20
|
+
{
|
|
21
|
+
name: 'vercel-plugin-telemetry',
|
|
22
|
+
headerMatch: 'The Vercel plugin collects anonymous usage data',
|
|
23
|
+
cursorMarker: '❯',
|
|
24
|
+
action: 'decline',
|
|
25
|
+
preferredOption: 'No thanks',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: 'claude-sensitive-file-permission',
|
|
29
|
+
headerMatch: 'Claude requested permissions to edit',
|
|
30
|
+
cursorMarker: '❯',
|
|
31
|
+
action: 'approve_always',
|
|
32
|
+
preferredOption: 'Yes, and always allow access to .claude/',
|
|
33
|
+
fallbackOption: 'Yes',
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
// =============================================================================
|
|
37
|
+
// Pattern Matching
|
|
38
|
+
// =============================================================================
|
|
39
|
+
/**
|
|
40
|
+
* Check if pane output contains a genuine interactive prompt.
|
|
41
|
+
* Requires BOTH the header text AND the cursor marker to be present,
|
|
42
|
+
* preventing false positives from normal numbered lists in output.
|
|
43
|
+
*/
|
|
44
|
+
export function detectPrompt(paneContent) {
|
|
45
|
+
for (const pattern of KNOWN_PROMPT_PATTERNS) {
|
|
46
|
+
if (paneContent.includes(pattern.headerMatch) &&
|
|
47
|
+
paneContent.includes(pattern.cursorMarker)) {
|
|
48
|
+
return { pattern, matchedText: pattern.headerMatch };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if pane output contains an unknown interactive prompt.
|
|
55
|
+
* An unknown prompt has the cursor marker (❯) with a numbered list
|
|
56
|
+
* but does NOT match any known pattern's header text.
|
|
57
|
+
*
|
|
58
|
+
* We look for lines that start with the cursor marker followed by a number,
|
|
59
|
+
* indicating an active numbered menu that we don't recognize.
|
|
60
|
+
*/
|
|
61
|
+
export function detectUnknownPrompt(paneContent) {
|
|
62
|
+
// Must have the interactive cursor marker
|
|
63
|
+
if (!paneContent.includes('❯'))
|
|
64
|
+
return false;
|
|
65
|
+
// Must have numbered menu items (e.g. "❯ 1." or " 2.")
|
|
66
|
+
const hasNumberedMenu = /❯\s+\d+\./m.test(paneContent) && /\s+\d+\.\s+\S/m.test(paneContent);
|
|
67
|
+
if (!hasNumberedMenu)
|
|
68
|
+
return false;
|
|
69
|
+
// Must NOT match any known pattern (those are handled by detectPrompt)
|
|
70
|
+
const knownMatch = detectPrompt(paneContent);
|
|
71
|
+
if (knownMatch)
|
|
72
|
+
return false;
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Find the menu option number for a given option text.
|
|
77
|
+
* Parses numbered menu items like " 2. No thanks" and returns the number key.
|
|
78
|
+
*/
|
|
79
|
+
export function findMenuOptionKey(paneContent, optionText) {
|
|
80
|
+
// Match lines like "❯ 1. Share prompts" or " 2. No thanks"
|
|
81
|
+
const menuLineRegex = /[❯\s]+(\d+)\.\s+(.+)/g;
|
|
82
|
+
let match;
|
|
83
|
+
while ((match = menuLineRegex.exec(paneContent)) !== null) {
|
|
84
|
+
const [, number, text] = match;
|
|
85
|
+
if (text.trim().toLowerCase().startsWith(optionText.toLowerCase())) {
|
|
86
|
+
return number;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Determine the key to send for a given prompt pattern match.
|
|
93
|
+
* Returns the number key for the preferred (or fallback) option.
|
|
94
|
+
*/
|
|
95
|
+
export function resolveKeyToSend(paneContent, pattern) {
|
|
96
|
+
// Try preferred option first
|
|
97
|
+
const preferredKey = findMenuOptionKey(paneContent, pattern.preferredOption);
|
|
98
|
+
if (preferredKey) {
|
|
99
|
+
return { key: preferredKey, optionText: pattern.preferredOption };
|
|
100
|
+
}
|
|
101
|
+
// Try fallback option
|
|
102
|
+
if (pattern.fallbackOption) {
|
|
103
|
+
const fallbackKey = findMenuOptionKey(paneContent, pattern.fallbackOption);
|
|
104
|
+
if (fallbackKey) {
|
|
105
|
+
return { key: fallbackKey, optionText: pattern.fallbackOption };
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
// =============================================================================
|
|
111
|
+
// Keystroke Sending
|
|
112
|
+
// =============================================================================
|
|
113
|
+
/**
|
|
114
|
+
* Send a menu selection keystroke to a tmux session.
|
|
115
|
+
* Sends the number key followed by Enter to select the option.
|
|
116
|
+
*/
|
|
117
|
+
export function sendMenuSelection(sessionId, key, containerId) {
|
|
118
|
+
const sendKeyCmd = `tmux send-keys -t "${sessionId}" "${key}"`;
|
|
119
|
+
const sendEnterCmd = `tmux send-keys -t "${sessionId}" Enter`;
|
|
120
|
+
if (containerId) {
|
|
121
|
+
execSync(`docker exec ${containerId} bash -c '${sendKeyCmd}'`, { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 10000 });
|
|
122
|
+
execSync('sleep 0.2', { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
123
|
+
execSync(`docker exec ${containerId} bash -c '${sendEnterCmd}'`, { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 10000 });
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
execSync(sendKeyCmd, {
|
|
127
|
+
encoding: 'utf-8',
|
|
128
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
129
|
+
timeout: 5000,
|
|
130
|
+
});
|
|
131
|
+
execSync('sleep 0.2', { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
132
|
+
execSync(sendEnterCmd, {
|
|
133
|
+
encoding: 'utf-8',
|
|
134
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
135
|
+
timeout: 5000,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Start watching a tmux session for interactive prompts.
|
|
141
|
+
* Runs in the background (non-blocking) for the configured duration.
|
|
142
|
+
*
|
|
143
|
+
* Returns a cleanup function to stop watching early.
|
|
144
|
+
*/
|
|
145
|
+
export function startPromptWatcher(sessionId, options = {}) {
|
|
146
|
+
const { watchDurationMs = 60_000, pollIntervalMs = 3_000, captureLines = 50, containerId, onDismiss, onEscalate, log = () => { }, } = options;
|
|
147
|
+
let stopped = false;
|
|
148
|
+
// Track patterns already handled to avoid re-sending keystrokes
|
|
149
|
+
const dismissedPatterns = new Set();
|
|
150
|
+
let escalated = false;
|
|
151
|
+
const poll = () => {
|
|
152
|
+
if (stopped)
|
|
153
|
+
return;
|
|
154
|
+
try {
|
|
155
|
+
const paneContent = captureTmuxPane(sessionId, captureLines, containerId);
|
|
156
|
+
if (!paneContent)
|
|
157
|
+
return;
|
|
158
|
+
// Check for known prompts first
|
|
159
|
+
const detection = detectPrompt(paneContent);
|
|
160
|
+
if (detection && !dismissedPatterns.has(detection.pattern.name)) {
|
|
161
|
+
const { pattern, matchedText } = detection;
|
|
162
|
+
// Resolve which key to send
|
|
163
|
+
const resolution = resolveKeyToSend(paneContent, pattern);
|
|
164
|
+
if (resolution) {
|
|
165
|
+
log(`[prompt-watcher] Auto-dismissing "${pattern.name}" with option "${resolution.optionText}"`);
|
|
166
|
+
try {
|
|
167
|
+
sendMenuSelection(sessionId, resolution.key, containerId);
|
|
168
|
+
dismissedPatterns.add(pattern.name);
|
|
169
|
+
const result = {
|
|
170
|
+
pattern,
|
|
171
|
+
matchedText,
|
|
172
|
+
selectedAnswer: resolution.optionText,
|
|
173
|
+
success: true,
|
|
174
|
+
};
|
|
175
|
+
onDismiss?.(result);
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
const result = {
|
|
179
|
+
pattern,
|
|
180
|
+
matchedText,
|
|
181
|
+
selectedAnswer: resolution.optionText,
|
|
182
|
+
success: false,
|
|
183
|
+
error: error instanceof Error ? error.message : String(error),
|
|
184
|
+
};
|
|
185
|
+
onDismiss?.(result);
|
|
186
|
+
log(`[prompt-watcher] Failed to dismiss "${pattern.name}": ${result.error}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return; // Don't check for unknown prompts in the same poll cycle
|
|
190
|
+
}
|
|
191
|
+
// Check for unknown prompts (escalate, don't auto-answer)
|
|
192
|
+
if (!escalated && detectUnknownPrompt(paneContent)) {
|
|
193
|
+
escalated = true;
|
|
194
|
+
log('[prompt-watcher] Unknown interactive prompt detected — escalating');
|
|
195
|
+
onEscalate?.({
|
|
196
|
+
paneContent,
|
|
197
|
+
reason: 'Unknown interactive prompt with numbered menu detected during startup window',
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
// Polling errors are non-fatal — session may have ended
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
// Start polling
|
|
206
|
+
const intervalId = setInterval(poll, pollIntervalMs);
|
|
207
|
+
// Run first check immediately
|
|
208
|
+
poll();
|
|
209
|
+
// Auto-stop after watch duration
|
|
210
|
+
const timeoutId = setTimeout(() => {
|
|
211
|
+
stopped = true;
|
|
212
|
+
clearInterval(intervalId);
|
|
213
|
+
log(`[prompt-watcher] Watch period ended for session "${sessionId}"`);
|
|
214
|
+
}, watchDurationMs);
|
|
215
|
+
// Return cleanup function
|
|
216
|
+
return () => {
|
|
217
|
+
stopped = true;
|
|
218
|
+
clearInterval(intervalId);
|
|
219
|
+
clearTimeout(timeoutId);
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=prompt-watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-watcher.js","sourceRoot":"","sources":["../../../src/lib/execution/prompt-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -106,6 +106,20 @@ ${containerPostExec}
|
|
|
106
106
|
catch {
|
|
107
107
|
return { success: false, error: `Failed to verify tmux session "${sessionName}" inside container.` };
|
|
108
108
|
}
|
|
109
|
+
// PRLT-1296: Early-exit detection — if Claude dies immediately (e.g., auth failure),
|
|
110
|
+
// the tmux session disappears within seconds. Wait briefly and re-check so we can
|
|
111
|
+
// report failure instead of falsely reporting 'running'.
|
|
112
|
+
await new Promise(resolve => setTimeout(resolve, 5000));
|
|
113
|
+
try {
|
|
114
|
+
execSync(`docker exec ${actualContainerId} tmux has-session -t "${sessionName}" 2>&1`, { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// Session died within 5 seconds of creation — likely auth failure or immediate crash
|
|
118
|
+
return {
|
|
119
|
+
success: false,
|
|
120
|
+
error: `Agent session "${sessionName}" exited immediately after spawn. This usually indicates an authentication failure (expired/invalid credentials) or a Claude Code startup error. Check container logs: docker logs ${actualContainerId}`,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
109
123
|
return { success: true, containerId: actualContainerId, sessionId: sessionName };
|
|
110
124
|
}
|
|
111
125
|
// Foreground mode: attach in current terminal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devcontainer-tmux.js","sourceRoot":"","sources":["../../../../src/lib/execution/runners/devcontainer-tmux.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,QAAQ,EACR,EAAE,EACF,IAAI,EACJ,EAAE,EAIF,mBAAmB,GACpB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAEL,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,aAAa,CAAA;AAEpB;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAyB,EACzB,eAAuB,EACvB,MAAuB,EACvB,cAA2B,UAAU,EACrC,WAAoB,EACpB,mBAA4B;IAE5B,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAChD,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA;IACvC,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAEjF,IAAI,CAAC;QACH,IAAI,iBAAiB,GAAG,WAAW,CAAA;QACnC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,gBAAgB,GAAG,eAAe,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;YAChF,IAAI,gBAAgB,EAAE,CAAC;gBACrB,iBAAiB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mDAAmD,EAAE,CAAA;QACvF,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC;YACH,QAAQ,CAAC,eAAe,iBAAiB,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,wIAAwI;aAChJ,CAAA;QACH,CAAC;QAED,2DAA2D;QAC3D,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACzD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAA;QAE1D,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW;YAC3C,CAAC,CAAC,oGAAoG;YACtG,CAAC,CAAC,8FAA8F,CAAA;QAElG,MAAM,eAAe,GAAG,mBAAmB;YACzC,CAAC,CAAC;;gBAEQ,mBAAmB;;;;aAItB,mBAAmB;4DAC4B,mBAAmB;;CAE9E;YACK,CAAC,CAAC,EAAE,CAAA;QAEN,MAAM,UAAU,GAAG;;;;;qBAKF,WAAW;;EAE9B,eAAe,GAAG,SAAS;EAC3B,iBAAiB;CAClB,CAAA;QACG,MAAM,UAAU,GAAG,aAAa,WAAW,KAAK,CAAA;QAChD,MAAM,WAAW,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;QAExD,4BAA4B;QAC5B,IAAI,CAAC;YACH,QAAQ,CAAC,kBAAkB,iBAAiB,mBAAmB,UAAU,gBAAgB,UAAU,GAAG,EAAE;gBACtG,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAA;QAC5H,CAAC;QAED,uEAAuE;QACvE,IAAI,CAAC;YACH,QAAQ,CAAC,eAAe,iBAAiB,yBAAyB,WAAW,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;YACzG,OAAO,CAAC,KAAK,CAAC,iDAAiD,WAAW,gBAAgB,CAAC,CAAA;YAC3F,IAAI,CAAC;gBACH,QAAQ,CAAC,eAAe,iBAAiB,0BAA0B,WAAW,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;YACvG,CAAC;YAAC,MAAM,CAAC,CAAC,oFAAoF,CAAC,CAAC;QAClG,CAAC;QAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;QAEvC,sBAAsB;QACtB,MAAM,gBAAgB,GAAG,2BAA2B,WAAW,SAAS,WAAW,WAAW,UAAU,IAAI,WAAW,uFAAuF,CAAA;QAC9M,IAAI,CAAC;YACH,QAAQ,CAAC,eAAe,iBAAiB,aAAa,gBAAgB,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QAC/F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mDAAmD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAA;QACvI,CAAC;QAED,iDAAiD;QACjD,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;YACtD,IAAI,CAAC;gBACH,QAAQ,CAAC,eAAe,iBAAiB,yBAAyB,WAAW,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;YAChJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,WAAW,qBAAqB,EAAE,CAAA;YACtG,CAAC;
|
|
1
|
+
{"version":3,"file":"devcontainer-tmux.js","sourceRoot":"","sources":["../../../../src/lib/execution/runners/devcontainer-tmux.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Delegates display mode handling to devcontainer-terminal.ts and devcontainer-tmux.ts.
|
|
6
6
|
*/
|
|
7
7
|
import { spawn, execSync, fs, path, os, resolveCodexExecutionContext, validateCodexMode, getCodexCommand, resolveToolsForSpawn, } from './shared.js';
|
|
8
|
-
import { buildSessionName, buildPrompt, getExecutorCommand, isClaudeExecutor, checkDockerDaemon, ensureDockerContainer, copyClaudeCredentials, ensureWorkflowScope, } from './shared.js';
|
|
8
|
+
import { buildSessionName, buildPrompt, getExecutorCommand, isClaudeExecutor, checkDockerDaemon, ensureDockerContainer, copyClaudeCredentials, refreshCredentialVolume, ensureWorkflowScope, } from './shared.js';
|
|
9
9
|
import { runDevcontainerInTmux } from './devcontainer-tmux.js';
|
|
10
10
|
import { runDevcontainerInTerminal } from './devcontainer-terminal.js';
|
|
11
11
|
import { writeWorkspaceManifest } from '../context.js';
|
|
@@ -173,6 +173,10 @@ export async function runDevcontainer(context, executor, config, displayMode = '
|
|
|
173
173
|
// Copy Claude credentials into agent directory so container can access them
|
|
174
174
|
if (isClaudeExecutor(executor)) {
|
|
175
175
|
copyClaudeCredentials(context.agentDir);
|
|
176
|
+
// PRLT-1296: Refresh credential volume with fresh host credentials before each spawn.
|
|
177
|
+
// OAuth tokens expire every ~24h; the volume is a snapshot that goes stale.
|
|
178
|
+
// This ensures containers always get the host's current (auto-refreshed) tokens.
|
|
179
|
+
refreshCredentialVolume();
|
|
176
180
|
}
|
|
177
181
|
// Start or reuse container using raw Docker commands
|
|
178
182
|
const containerId = ensureDockerContainer(context, config, executor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devcontainer.js","sourceRoot":"","sources":["../../../../src/lib/execution/runners/devcontainer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"devcontainer.js","sourceRoot":"","sources":["../../../../src/lib/execution/runners/devcontainer.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,19 @@ export declare function getDockerCredentialInfo(): {
|
|
|
36
36
|
expiresAt: Date;
|
|
37
37
|
subscriptionType?: string;
|
|
38
38
|
} | null;
|
|
39
|
+
/**
|
|
40
|
+
* PRLT-1296: Refresh the claude-credentials Docker volume with fresh credentials from the host.
|
|
41
|
+
*
|
|
42
|
+
* OAuth tokens expire every ~24h. The host's Claude Code auto-refreshes its tokens,
|
|
43
|
+
* but the Docker volume is a snapshot that goes stale. This copies the host's current
|
|
44
|
+
* credentials into the volume before each container spawn, ensuring fresh tokens.
|
|
45
|
+
*
|
|
46
|
+
* Creates the volume if it doesn't exist.
|
|
47
|
+
* Sets file ownership to UID 1000 (node user) so the container can read them.
|
|
48
|
+
*
|
|
49
|
+
* @returns true if credentials were refreshed successfully, false otherwise
|
|
50
|
+
*/
|
|
51
|
+
export declare function refreshCredentialVolume(): boolean;
|
|
39
52
|
/**
|
|
40
53
|
* Check if Claude Code authentication is available on the host system.
|
|
41
54
|
* Returns true if any of:
|
|
@@ -81,6 +81,61 @@ export function getDockerCredentialInfo() {
|
|
|
81
81
|
return null;
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* PRLT-1296: Refresh the claude-credentials Docker volume with fresh credentials from the host.
|
|
86
|
+
*
|
|
87
|
+
* OAuth tokens expire every ~24h. The host's Claude Code auto-refreshes its tokens,
|
|
88
|
+
* but the Docker volume is a snapshot that goes stale. This copies the host's current
|
|
89
|
+
* credentials into the volume before each container spawn, ensuring fresh tokens.
|
|
90
|
+
*
|
|
91
|
+
* Creates the volume if it doesn't exist.
|
|
92
|
+
* Sets file ownership to UID 1000 (node user) so the container can read them.
|
|
93
|
+
*
|
|
94
|
+
* @returns true if credentials were refreshed successfully, false otherwise
|
|
95
|
+
*/
|
|
96
|
+
export function refreshCredentialVolume() {
|
|
97
|
+
const homeDir = process.env.HOME || os.homedir();
|
|
98
|
+
const hostCredPath = path.join(homeDir, '.claude', '.credentials.json');
|
|
99
|
+
// Check if host has credentials to copy
|
|
100
|
+
if (!fs.existsSync(hostCredPath)) {
|
|
101
|
+
console.debug('[runners:credentials] No host credentials at ~/.claude/.credentials.json, skipping refresh');
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
// Use a temporary container to copy host credentials into the named volume.
|
|
106
|
+
// -v ~/.claude:/src:ro → mount host credentials read-only
|
|
107
|
+
// -v claude-credentials:/dest → mount the target volume
|
|
108
|
+
// cp + chown ensures node user (UID 1000) owns the file inside the container.
|
|
109
|
+
// --pull never avoids Docker Hub auth issues on locked keychains / headless environments.
|
|
110
|
+
const refreshCmd = [
|
|
111
|
+
'docker run --rm --pull never',
|
|
112
|
+
`-v "${path.join(homeDir, '.claude')}:/src:ro"`,
|
|
113
|
+
`-v "${CLAUDE_CREDENTIALS_VOLUME}:/dest"`,
|
|
114
|
+
`alpine sh -c 'cp /src/.credentials.json /dest/.credentials.json && chown 1000:1000 /dest/.credentials.json'`,
|
|
115
|
+
].join(' ');
|
|
116
|
+
execSync(refreshCmd, { stdio: 'pipe', timeout: 15000 });
|
|
117
|
+
console.debug('[runners:credentials] Refreshed credential volume with host credentials');
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
// alpine image may not be cached — try with node:22 which is already pulled for agent builds
|
|
122
|
+
try {
|
|
123
|
+
const fallbackCmd = [
|
|
124
|
+
'docker run --rm --pull never',
|
|
125
|
+
`-v "${path.join(homeDir, '.claude')}:/src:ro"`,
|
|
126
|
+
`-v "${CLAUDE_CREDENTIALS_VOLUME}:/dest"`,
|
|
127
|
+
`node:22 bash -c 'cp /src/.credentials.json /dest/.credentials.json && chown 1000:1000 /dest/.credentials.json'`,
|
|
128
|
+
].join(' ');
|
|
129
|
+
execSync(fallbackCmd, { stdio: 'pipe', timeout: 15000 });
|
|
130
|
+
console.debug('[runners:credentials] Refreshed credential volume with host credentials (node:22 fallback)');
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
console.debug('[runners:credentials] Failed to refresh credential volume:', error);
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
84
139
|
/**
|
|
85
140
|
* Check if Claude Code authentication is available on the host system.
|
|
86
141
|
* Returns true if any of:
|