commandmate 0.2.1 → 0.2.3
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/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +47 -51
- package/.next/app-path-routes-manifest.json +1 -1
- package/.next/build-manifest.json +7 -7
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/config.json +3 -3
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/1.pack +0 -0
- package/.next/cache/webpack/client-production/2.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js +4 -4
- package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/page.js +2 -4
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +3 -15
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
- package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +7 -8
- package/.next/server/chunks/1287.js +4 -0
- package/.next/server/chunks/2683.js +1 -0
- package/.next/server/chunks/3348.js +1 -0
- package/.next/server/chunks/369.js +1 -0
- package/.next/server/chunks/3860.js +1 -0
- package/.next/server/chunks/4559.js +1 -0
- package/.next/server/chunks/4704.js +35 -0
- package/.next/server/chunks/5781.js +1 -0
- package/.next/server/chunks/5823.js +1 -0
- package/.next/server/chunks/5853.js +1 -0
- package/.next/server/chunks/6837.js +1 -0
- package/.next/server/chunks/7266.js +1 -0
- package/.next/server/chunks/7458.js +1 -0
- package/.next/server/chunks/7536.js +1 -1
- package/.next/server/chunks/8705.js +1 -0
- package/.next/server/chunks/8744.js +1 -0
- package/.next/server/chunks/9367.js +2 -2
- package/.next/server/chunks/9582.js +1 -0
- package/.next/server/functions-config-manifest.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/1038-3509435b68c0967e.js +1 -0
- package/.next/static/chunks/216-f18f4a9d8b04a91e.js +1 -0
- package/.next/static/chunks/2330-0299b9879f4977d2.js +1 -0
- package/.next/static/chunks/4733-db0112b08802aaa7.js +1 -0
- package/.next/static/chunks/6140-389f1951062dcf4f.js +1 -0
- package/.next/static/chunks/{816-c254f4e2406e696a.js → 816-bb41b20a51ae924a.js} +1 -1
- package/.next/static/chunks/8216-00e20326f32abd12.js +1 -0
- package/.next/static/chunks/9234-b0304101384ca079.js +3 -0
- package/.next/static/chunks/app/layout-07755491d5d57242.js +1 -0
- package/.next/static/chunks/app/page-792c0577dc44e5e5.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-ce9ac3658f2b7d91.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-9d77c6f755d08086.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/page-5d85a7e508ce36d3.js +1 -0
- package/.next/static/chunks/{webpack-4f85dcef6279c6ee.js → webpack-e6531fcf859d9451.js} +1 -1
- package/.next/static/css/4eca30cb81bc52b4.css +3 -0
- package/.next/trace +5 -5
- package/README.md +84 -82
- package/dist/server/src/config/auto-yes-config.js +53 -0
- package/dist/server/src/config/log-config.js +41 -0
- package/dist/server/src/lib/auto-yes-manager.js +6 -4
- package/dist/server/src/lib/claude-session.js +6 -0
- package/dist/server/src/lib/cli-patterns.js +41 -1
- package/dist/server/src/lib/cli-tools/codex.js +16 -3
- package/dist/server/src/lib/cli-tools/manager.js +0 -6
- package/dist/server/src/lib/log-manager.js +2 -6
- package/dist/server/src/lib/pasted-text-helper.js +58 -0
- package/dist/server/src/lib/prompt-detector.js +80 -23
- package/dist/server/src/lib/response-poller.js +30 -43
- package/package.json +2 -1
- package/.next/server/app/_not-found.html +0 -1
- package/.next/server/app/_not-found.meta +0 -6
- package/.next/server/app/_not-found.rsc +0 -10
- package/.next/server/app/index.html +0 -9
- package/.next/server/app/index.meta +0 -5
- package/.next/server/app/index.rsc +0 -8
- package/.next/server/app/worktrees/[id]/simple-terminal/page.js +0 -4
- package/.next/server/app/worktrees/[id]/simple-terminal/page.js.nft.json +0 -1
- package/.next/server/app/worktrees/[id]/simple-terminal/page_client-reference-manifest.js +0 -1
- package/.next/server/chunks/3053.js +0 -1
- package/.next/server/chunks/434.js +0 -1
- package/.next/server/chunks/4471.js +0 -2
- package/.next/server/chunks/6550.js +0 -1
- package/.next/server/chunks/8174.js +0 -23
- package/.next/server/chunks/8887.js +0 -1
- package/.next/server/pages/404.html +0 -1
- package/.next/static/chunks/2957-327e43ef4c12808f.js +0 -1
- package/.next/static/chunks/4343-ebe884a2a80eb033.js +0 -1
- package/.next/static/chunks/4851-45df4d388db5623f.js +0 -1
- package/.next/static/chunks/6568-38a33aa67d82e12b.js +0 -1
- package/.next/static/chunks/6725-f7607851b7d57eb1.js +0 -1
- package/.next/static/chunks/7648-325564a6e12a3257.js +0 -1
- package/.next/static/chunks/app/layout-4804cfba519283cf.js +0 -1
- package/.next/static/chunks/app/page-3926224c4cdf315b.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-9e5adf57cbbbdf05.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-8bd88bdc29607413.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/simple-terminal/page-16feb3e86e42f4d1.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/terminal/page-be802baffc84dbd2.js +0 -1
- package/.next/static/css/28be35e4727ae7ef.css +0 -3
- package/.next/types/app/worktrees/[id]/simple-terminal/page.ts +0 -79
- package/dist/server/src/lib/claude-poller.js +0 -341
- /package/.next/static/chunks/{2117-d845c2cd62e344a6.js → 2117-e31fa477cb500950.js} +0 -0
- /package/.next/static/chunks/app/_not-found/{page-a9d04e58c81115ec.js → page-ac4e4463b39d0cf7.js} +0 -0
- /package/.next/static/chunks/{fd9d1056-bbe86e4ae099d5cd.js → fd9d1056-cfdf4f91f13d3485.js} +0 -0
- /package/.next/static/{oUD-A998xeBoez6zsrTH3 → rppRTm2sRWa4sZE7ili8A}/_buildManifest.js +0 -0
- /package/.next/static/{oUD-A998xeBoez6zsrTH3 → rppRTm2sRWa4sZE7ili8A}/_ssgManifest.js +0 -0
|
@@ -8,6 +8,40 @@ exports.detectPrompt = detectPrompt;
|
|
|
8
8
|
exports.getAnswerInput = getAnswerInput;
|
|
9
9
|
const logger_1 = require("./logger");
|
|
10
10
|
const logger = (0, logger_1.createLogger)('prompt-detector');
|
|
11
|
+
/**
|
|
12
|
+
* Maximum number of lines to retain in rawContent.
|
|
13
|
+
* Tail lines are preserved (instruction text typically appears just before the prompt).
|
|
14
|
+
* @see truncateRawContent
|
|
15
|
+
*/
|
|
16
|
+
const RAW_CONTENT_MAX_LINES = 200;
|
|
17
|
+
/**
|
|
18
|
+
* Maximum number of characters to retain in rawContent.
|
|
19
|
+
* Tail characters are preserved.
|
|
20
|
+
* @see truncateRawContent
|
|
21
|
+
*/
|
|
22
|
+
const RAW_CONTENT_MAX_CHARS = 5000;
|
|
23
|
+
/**
|
|
24
|
+
* Truncate raw content to fit within size limits.
|
|
25
|
+
* Preserves the tail (end) of the content since instruction text
|
|
26
|
+
* typically appears just before the prompt at the end of output.
|
|
27
|
+
*
|
|
28
|
+
* Security: No regular expressions used -- no ReDoS risk. [SF-S4-002]
|
|
29
|
+
* String.split('\n') and String.slice() are literal string operations only.
|
|
30
|
+
*
|
|
31
|
+
* @param content - The content to truncate
|
|
32
|
+
* @returns Truncated content (last RAW_CONTENT_MAX_LINES lines, max RAW_CONTENT_MAX_CHARS characters)
|
|
33
|
+
*/
|
|
34
|
+
function truncateRawContent(content) {
|
|
35
|
+
const lines = content.split('\n');
|
|
36
|
+
const truncatedLines = lines.length > RAW_CONTENT_MAX_LINES
|
|
37
|
+
? lines.slice(-RAW_CONTENT_MAX_LINES)
|
|
38
|
+
: lines;
|
|
39
|
+
let result = truncatedLines.join('\n');
|
|
40
|
+
if (result.length > RAW_CONTENT_MAX_CHARS) {
|
|
41
|
+
result = result.slice(-RAW_CONTENT_MAX_CHARS);
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
11
45
|
/**
|
|
12
46
|
* Yes/no pattern definitions for data-driven matching.
|
|
13
47
|
* Each entry defines a regex pattern and its associated default option.
|
|
@@ -27,6 +61,32 @@ const YES_NO_PATTERNS = [
|
|
|
27
61
|
// (yes/no) - no default
|
|
28
62
|
{ regex: /^(.+)\s+\(yes\/no\)\s*$/m },
|
|
29
63
|
];
|
|
64
|
+
/**
|
|
65
|
+
* Creates a yes/no prompt detection result.
|
|
66
|
+
* Centralizes the repeated construction of yes_no PromptDetectionResult objects
|
|
67
|
+
* used by both YES_NO_PATTERNS matching and Approve pattern matching.
|
|
68
|
+
*
|
|
69
|
+
* @param question - The question text
|
|
70
|
+
* @param cleanContent - The clean content string
|
|
71
|
+
* @param rawContent - The raw content string (last 20 lines, trimmed)
|
|
72
|
+
* @param defaultOption - Optional default option ('yes' or 'no')
|
|
73
|
+
* @returns PromptDetectionResult with isPrompt: true and yes_no prompt data
|
|
74
|
+
*/
|
|
75
|
+
function yesNoPromptResult(question, cleanContent, rawContent, defaultOption) {
|
|
76
|
+
return {
|
|
77
|
+
isPrompt: true,
|
|
78
|
+
promptData: {
|
|
79
|
+
type: 'yes_no',
|
|
80
|
+
question,
|
|
81
|
+
options: ['yes', 'no'],
|
|
82
|
+
status: 'pending',
|
|
83
|
+
...(defaultOption !== undefined && { defaultOption }),
|
|
84
|
+
instructionText: rawContent,
|
|
85
|
+
},
|
|
86
|
+
cleanContent,
|
|
87
|
+
rawContent,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
30
90
|
/**
|
|
31
91
|
* Detect if output contains an interactive prompt
|
|
32
92
|
*
|
|
@@ -51,7 +111,8 @@ const YES_NO_PATTERNS = [
|
|
|
51
111
|
function detectPrompt(output, options) {
|
|
52
112
|
logger.debug('detectPrompt:start', { outputLength: output.length });
|
|
53
113
|
const lines = output.split('\n');
|
|
54
|
-
|
|
114
|
+
// [SF-003] [MF-S2-001] Expanded from 10 to 20 lines for rawContent coverage
|
|
115
|
+
const lastLines = lines.slice(-20).join('\n');
|
|
55
116
|
// Pattern 0: Multiple choice (numbered options with ❯ indicator)
|
|
56
117
|
// Example:
|
|
57
118
|
// Do you want to proceed?
|
|
@@ -68,21 +129,12 @@ function detectPrompt(output, options) {
|
|
|
68
129
|
return multipleChoiceResult;
|
|
69
130
|
}
|
|
70
131
|
// Patterns 1-4: Yes/no patterns (data-driven matching)
|
|
132
|
+
const trimmedLastLines = lastLines.trim();
|
|
71
133
|
for (const pattern of YES_NO_PATTERNS) {
|
|
72
134
|
const match = lastLines.match(pattern.regex);
|
|
73
135
|
if (match) {
|
|
74
136
|
const question = match[1].trim();
|
|
75
|
-
return
|
|
76
|
-
isPrompt: true,
|
|
77
|
-
promptData: {
|
|
78
|
-
type: 'yes_no',
|
|
79
|
-
question,
|
|
80
|
-
options: ['yes', 'no'],
|
|
81
|
-
status: 'pending',
|
|
82
|
-
...(pattern.defaultOption !== undefined && { defaultOption: pattern.defaultOption }),
|
|
83
|
-
},
|
|
84
|
-
cleanContent: question,
|
|
85
|
-
};
|
|
137
|
+
return yesNoPromptResult(question, question, trimmedLastLines, pattern.defaultOption);
|
|
86
138
|
}
|
|
87
139
|
}
|
|
88
140
|
// Pattern 5: Approve?
|
|
@@ -93,16 +145,7 @@ function detectPrompt(output, options) {
|
|
|
93
145
|
const content = approveMatch[1].trim();
|
|
94
146
|
// If there's content before "Approve?", include it in the question
|
|
95
147
|
const question = content ? `${content} Approve?` : 'Approve?';
|
|
96
|
-
return
|
|
97
|
-
isPrompt: true,
|
|
98
|
-
promptData: {
|
|
99
|
-
type: 'yes_no',
|
|
100
|
-
question: question,
|
|
101
|
-
options: ['yes', 'no'],
|
|
102
|
-
status: 'pending',
|
|
103
|
-
},
|
|
104
|
-
cleanContent: content || 'Approve?',
|
|
105
|
-
};
|
|
148
|
+
return yesNoPromptResult(question, content || 'Approve?', trimmedLastLines);
|
|
106
149
|
}
|
|
107
150
|
// No prompt detected
|
|
108
151
|
logger.debug('detectPrompt:complete', { isPrompt: false });
|
|
@@ -272,7 +315,7 @@ function isContinuationLine(rawLine, line) {
|
|
|
272
315
|
// the question line would be misclassified as a continuation line, causing
|
|
273
316
|
// questionEndIndex to remain -1 and Layer 5 SEC-001 to block detection.
|
|
274
317
|
const endsWithQuestion = line.endsWith('?') || line.endsWith('\uff1f');
|
|
275
|
-
const hasLeadingSpaces =
|
|
318
|
+
const hasLeadingSpaces = /^\s{2,}[^\d]/.test(rawLine) && !/^\s*\d+\./.test(rawLine) && !endsWithQuestion;
|
|
276
319
|
// Short fragment (< 5 chars, excluding question-ending lines)
|
|
277
320
|
const isShortFragment = line.length < 5 && !endsWithQuestion;
|
|
278
321
|
// Path string continuation: lines starting with / or ~, or alphanumeric-only fragments (2+ chars)
|
|
@@ -414,6 +457,18 @@ function detectMultipleChoicePrompt(output, options) {
|
|
|
414
457
|
// No clear question found - use a generic one
|
|
415
458
|
question = 'Please select an option:';
|
|
416
459
|
}
|
|
460
|
+
// Extract instruction text: full prompt block (context before question through all options/descriptions)
|
|
461
|
+
// Captures the complete AskUserQuestion block including option descriptions and navigation hints.
|
|
462
|
+
let instructionText;
|
|
463
|
+
if (questionEndIndex >= 0) {
|
|
464
|
+
const contextStart = Math.max(0, questionEndIndex - 19);
|
|
465
|
+
const blockLines = lines.slice(contextStart, effectiveEnd)
|
|
466
|
+
.map(l => l.trimEnd());
|
|
467
|
+
const joined = blockLines.join('\n').trim();
|
|
468
|
+
if (joined.length > 0) {
|
|
469
|
+
instructionText = joined;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
417
472
|
return {
|
|
418
473
|
isPrompt: true,
|
|
419
474
|
promptData: {
|
|
@@ -430,8 +485,10 @@ function detectMultipleChoicePrompt(output, options) {
|
|
|
430
485
|
};
|
|
431
486
|
}),
|
|
432
487
|
status: 'pending',
|
|
488
|
+
instructionText,
|
|
433
489
|
},
|
|
434
490
|
cleanContent: question.trim(),
|
|
491
|
+
rawContent: truncateRawContent(output.trim()), // Issue #235: complete prompt output (truncated) [MF-001]
|
|
435
492
|
};
|
|
436
493
|
}
|
|
437
494
|
/**
|
|
@@ -53,6 +53,25 @@ const MAX_POLLING_DURATION = 5 * 60 * 1000;
|
|
|
53
53
|
* @constant
|
|
54
54
|
*/
|
|
55
55
|
const RESPONSE_THINKING_TAIL_LINE_COUNT = 5;
|
|
56
|
+
/**
|
|
57
|
+
* Gemini auth/loading state indicators that should not be treated as complete responses.
|
|
58
|
+
* Braille spinner characters are shared with CLAUDE_SPINNER_CHARS in cli-patterns.ts.
|
|
59
|
+
* Extracted to module level for clarity and to avoid re-creation on each call.
|
|
60
|
+
*/
|
|
61
|
+
const GEMINI_LOADING_INDICATORS = [
|
|
62
|
+
'Waiting for auth',
|
|
63
|
+
'\u280b', '\u2819', '\u2839', '\u2838', '\u283c', '\u2834', '\u2826', '\u2827', '\u2807', '\u280f',
|
|
64
|
+
];
|
|
65
|
+
/**
|
|
66
|
+
* Creates an incomplete extraction result with empty response.
|
|
67
|
+
* Centralizes the repeated pattern of returning an in-progress/incomplete state.
|
|
68
|
+
*
|
|
69
|
+
* @param lineCount - Current line count for state tracking
|
|
70
|
+
* @returns ExtractionResult with empty response and isComplete: false
|
|
71
|
+
*/
|
|
72
|
+
function incompleteResult(lineCount) {
|
|
73
|
+
return { response: '', isComplete: false, lineCount };
|
|
74
|
+
}
|
|
56
75
|
/**
|
|
57
76
|
* Active pollers map: "worktreeId:cliToolId" -> NodeJS.Timeout
|
|
58
77
|
*/
|
|
@@ -139,6 +158,7 @@ function cleanClaudeResponse(response) {
|
|
|
139
158
|
/\?\s*for shortcuts\s*$/, // Shortcuts hint at end of line
|
|
140
159
|
/^─{10,}$/, // Separator lines
|
|
141
160
|
/^❯\s*$/, // Empty prompt lines
|
|
161
|
+
cli_patterns_1.PASTED_TEXT_PATTERN, // [Pasted text #N +XX lines] (Issue #212)
|
|
142
162
|
];
|
|
143
163
|
// Filter out UI elements and keep only the response content
|
|
144
164
|
const cleanedLines = [];
|
|
@@ -334,11 +354,7 @@ function extractResponse(output, lastCapturedLine, cliToolId) {
|
|
|
334
354
|
// Prevents false blocking when completed thinking summaries appear in the response body.
|
|
335
355
|
const responseTailLines = response.split('\n').slice(-RESPONSE_THINKING_TAIL_LINE_COUNT).join('\n');
|
|
336
356
|
if (thinkingPattern.test(responseTailLines)) {
|
|
337
|
-
return
|
|
338
|
-
response: '',
|
|
339
|
-
isComplete: false,
|
|
340
|
-
lineCount: totalLines,
|
|
341
|
-
};
|
|
357
|
+
return incompleteResult(totalLines);
|
|
342
358
|
}
|
|
343
359
|
// CRITICAL FIX: Detect and skip Claude Code startup banner/screen
|
|
344
360
|
// The startup screen contains: ASCII art logo, version info, prompt, separator
|
|
@@ -365,20 +381,12 @@ function extractResponse(output, lastCapturedLine, cliToolId) {
|
|
|
365
381
|
!/^─+$/.test(trimmed);
|
|
366
382
|
});
|
|
367
383
|
if (contentLines.length === 0) {
|
|
368
|
-
return
|
|
369
|
-
response: '',
|
|
370
|
-
isComplete: false,
|
|
371
|
-
lineCount: totalLines,
|
|
372
|
-
};
|
|
384
|
+
return incompleteResult(totalLines);
|
|
373
385
|
}
|
|
374
386
|
}
|
|
375
387
|
else if ((hasBannerArt || hasVersionInfo || hasStartupTips || hasProjectInit) && response.length < 2000) {
|
|
376
388
|
// No user prompt found, but has banner characteristics - likely initial startup
|
|
377
|
-
return
|
|
378
|
-
response: '',
|
|
379
|
-
isComplete: false,
|
|
380
|
-
lineCount: totalLines,
|
|
381
|
-
};
|
|
389
|
+
return incompleteResult(totalLines);
|
|
382
390
|
}
|
|
383
391
|
}
|
|
384
392
|
// Gemini-specific check: ensure response contains actual content (✦ marker)
|
|
@@ -387,31 +395,13 @@ function extractResponse(output, lastCapturedLine, cliToolId) {
|
|
|
387
395
|
const bannerCharCount = (response.match(/[░███]/g) || []).length;
|
|
388
396
|
const totalChars = response.length;
|
|
389
397
|
if (bannerCharCount > totalChars * 0.3) {
|
|
390
|
-
return
|
|
391
|
-
response: '',
|
|
392
|
-
isComplete: false,
|
|
393
|
-
lineCount: totalLines,
|
|
394
|
-
};
|
|
398
|
+
return incompleteResult(totalLines);
|
|
395
399
|
}
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
const LOADING_INDICATORS = [
|
|
399
|
-
'Waiting for auth',
|
|
400
|
-
'⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏',
|
|
401
|
-
];
|
|
402
|
-
if (LOADING_INDICATORS.some(indicator => response.includes(indicator))) {
|
|
403
|
-
return {
|
|
404
|
-
response: '',
|
|
405
|
-
isComplete: false,
|
|
406
|
-
lineCount: totalLines,
|
|
407
|
-
};
|
|
400
|
+
if (GEMINI_LOADING_INDICATORS.some(indicator => response.includes(indicator))) {
|
|
401
|
+
return incompleteResult(totalLines);
|
|
408
402
|
}
|
|
409
403
|
if (!response.includes('✦') && response.length < 10) {
|
|
410
|
-
return
|
|
411
|
-
response: '',
|
|
412
|
-
isComplete: false,
|
|
413
|
-
lineCount: totalLines,
|
|
414
|
-
};
|
|
404
|
+
return incompleteResult(totalLines);
|
|
415
405
|
}
|
|
416
406
|
}
|
|
417
407
|
return {
|
|
@@ -459,11 +449,7 @@ function extractResponse(output, lastCapturedLine, cliToolId) {
|
|
|
459
449
|
};
|
|
460
450
|
}
|
|
461
451
|
// Response not yet complete (or is in thinking state)
|
|
462
|
-
return
|
|
463
|
-
response: '',
|
|
464
|
-
isComplete: false,
|
|
465
|
-
lineCount: totalLines,
|
|
466
|
-
};
|
|
452
|
+
return incompleteResult(totalLines);
|
|
467
453
|
}
|
|
468
454
|
/**
|
|
469
455
|
* Check for CLI tool response once
|
|
@@ -532,7 +518,8 @@ async function checkForResponse(worktreeId, cliToolId) {
|
|
|
532
518
|
const message = (0, db_1.createMessage)(db, {
|
|
533
519
|
worktreeId,
|
|
534
520
|
role: 'assistant',
|
|
535
|
-
|
|
521
|
+
// Issue #235: rawContent優先でDB保存 (rawContent contains complete prompt output)
|
|
522
|
+
content: promptDetection.rawContent || promptDetection.cleanContent,
|
|
536
523
|
messageType: 'prompt',
|
|
537
524
|
promptData: promptDetection.promptData,
|
|
538
525
|
timestamp: new Date(),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "commandmate",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "Git worktree management with Claude CLI and tmux sessions",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
"lucide-react": "^0.554.0",
|
|
49
49
|
"mermaid": "^11.12.2",
|
|
50
50
|
"next": "^14.2.35",
|
|
51
|
+
"next-intl": "^4.8.2",
|
|
51
52
|
"postcss": "^8.5.6",
|
|
52
53
|
"react": "^18.3.0",
|
|
53
54
|
"react-dom": "^18.3.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/28be35e4727ae7ef.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-4f85dcef6279c6ee.js"/><script src="/_next/static/chunks/fd9d1056-bbe86e4ae099d5cd.js" async=""></script><script src="/_next/static/chunks/2117-d845c2cd62e344a6.js" async=""></script><script src="/_next/static/chunks/main-app-420d93e43682fee5.js" async=""></script><script src="/_next/static/chunks/816-c254f4e2406e696a.js" async=""></script><script src="/_next/static/chunks/app/layout-4804cfba519283cf.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>CommandMate</title><meta name="description" content="Git worktree management with Claude CLI and tmux sessions"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-screen bg-gray-50"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-4f85dcef6279c6ee.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/28be35e4727ae7ef.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[12846,[],\"\"]\n4:I[4707,[],\"\"]\n5:I[36423,[],\"\"]\n6:I[91795,[\"816\",\"static/chunks/816-c254f4e2406e696a.js\",\"3185\",\"static/chunks/app/layout-4804cfba519283cf.js\"],\"AppProviders\"]\nc:I[61060,[],\"\"]\n7:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n8:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n9:{\"display\":\"inline-block\"}\na:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nd:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"oUD-A998xeBoez6zsrTH3\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/28be35e4727ae7ef.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ja\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-screen bg-gray-50\",\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$7\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$8\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$9\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$a\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Lb\"],\"globalErrorComponent\":\"$c\",\"missingSlots\":\"$Wd\"}]\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"CommandMate\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Git worktree management with Claude CLI and tmux sessions\"}]]\n3:null\n"])</script></body></html>
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
2:I[4707,[],""]
|
|
2
|
-
3:I[36423,[],""]
|
|
3
|
-
4:I[91795,["816","static/chunks/816-c254f4e2406e696a.js","3185","static/chunks/app/layout-4804cfba519283cf.js"],"AppProviders"]
|
|
4
|
-
5:{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"}
|
|
5
|
-
6:{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"}
|
|
6
|
-
7:{"display":"inline-block"}
|
|
7
|
-
8:{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0}
|
|
8
|
-
0:["oUD-A998xeBoez6zsrTH3",[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["/_not-found",{"children":["__PAGE__",{},[["$L1",[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null],null],null]},[null,["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children","/_not-found","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/28be35e4727ae7ef.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ja","children":["$","body",null,{"className":"min-h-screen bg-gray-50","children":["$","$L4",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$5","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$6","children":"404"}],["$","div",null,{"style":"$7","children":["$","h2",null,{"style":"$8","children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L9",["$","meta",null,{"name":"robots","content":"noindex"}]]]]]
|
|
9
|
-
9:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"CommandMate"}],["$","meta","3",{"name":"description","content":"Git worktree management with Claude CLI and tmux sessions"}]]
|
|
10
|
-
1:null
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/28be35e4727ae7ef.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-4f85dcef6279c6ee.js"/><script src="/_next/static/chunks/fd9d1056-bbe86e4ae099d5cd.js" async=""></script><script src="/_next/static/chunks/2117-d845c2cd62e344a6.js" async=""></script><script src="/_next/static/chunks/main-app-420d93e43682fee5.js" async=""></script><script src="/_next/static/chunks/7648-325564a6e12a3257.js" async=""></script><script src="/_next/static/chunks/4343-ebe884a2a80eb033.js" async=""></script><script src="/_next/static/chunks/6725-f7607851b7d57eb1.js" async=""></script><script src="/_next/static/chunks/816-c254f4e2406e696a.js" async=""></script><script src="/_next/static/chunks/6568-38a33aa67d82e12b.js" async=""></script><script src="/_next/static/chunks/app/page-3926224c4cdf315b.js" async=""></script><script src="/_next/static/chunks/app/layout-4804cfba519283cf.js" async=""></script><title>CommandMate</title><meta name="description" content="Git worktree management with Claude CLI and tmux sessions"/><link rel="icon" href="/icon.png?32d9127ba30ee286" type="image/png" sizes="32x32"/><link rel="apple-touch-icon" href="/apple-icon.png?31a89e65aa4ac65b" type="image/png" sizes="180x180"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-screen bg-gray-50"><div data-testid="app-shell" class="h-screen flex"><aside data-testid="sidebar-container" class="
|
|
2
|
-
fixed left-0 top-0 h-full w-72
|
|
3
|
-
transform transition-transform duration-300 ease-out
|
|
4
|
-
translate-x-0
|
|
5
|
-
" style="z-index:30" role="complementary" aria-hidden="false"><nav data-testid="sidebar" aria-label="Branch navigation" class="h-full flex flex-col bg-gray-900 text-white" role="navigation"><div data-testid="sidebar-header" class="flex-shrink-0 px-4 py-4 border-b border-gray-700"><div class="flex items-center justify-between"><h2 class="text-lg font-semibold text-white">Branches</h2><div class="relative" data-testid="sort-selector"><div class="flex items-center gap-1"><button type="button" aria-expanded="false" aria-haspopup="listbox" aria-label="Sort by Updated" class=" flex items-center gap-1 px-2 py-1 rounded text-xs text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors "><svg class="w-3 h-3" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M3 4h13M3 8h9m-9 4h6m4 0l4-4m0 0l4 4m-4-4v12"></path></svg><span class="hidden sm:inline">Updated</span></button><button type="button" aria-label="Sort descending" class=" p-1 rounded text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors "><svg class="w-3 h-3" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></button></div></div></div></div><div class="flex-shrink-0 px-4 py-3 border-b border-gray-700"><input type="text" placeholder="Search branches..." class=" w-full px-3 py-2 rounded-md bg-gray-800 text-white placeholder-gray-400 border border-gray-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent " value=""/></div><div data-testid="branch-list" class="flex-1 overflow-y-auto"><div class="px-4 py-8 text-center text-gray-400">No branches available</div></div></nav></aside><main class="
|
|
6
|
-
flex-1 min-w-0 h-full overflow-hidden
|
|
7
|
-
transition-[padding] duration-300 ease-out
|
|
8
|
-
md:pl-72
|
|
9
|
-
" role="main"><div class="container-custom py-8 overflow-auto h-full"><div class="mb-8"><h1 class="mb-2">CommandMate</h1><p class="text-lg text-gray-600">Git worktree management with Claude CLI and tmux sessions</p></div><div class="mb-8"><div class="space-y-4"><div class="flex gap-2 flex-wrap"><button class="btn btn-primary btn-sm">+ Add Repository</button><button class="btn btn-secondary btn-sm">Sync All</button></div></div></div><div class="space-y-6"><div class="flex flex-col sm:flex-row gap-4 items-start sm:items-center justify-between"><div class="flex items-center gap-2 flex-wrap"><span class="badge badge-gray">0<!-- --> branches</span></div><div class="flex gap-2 w-full sm:w-auto"><button class="btn btn-secondary btn-sm opacity-50 cursor-not-allowed" disabled="">Loading...</button></div></div><div class="flex flex-col sm:flex-row gap-3"><input type="text" placeholder="Search worktrees..." class="input flex-1" value=""/></div><div class="flex gap-2 flex-wrap items-center"><button class="btn btn-primary btn-sm">All</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">📝 ToDo</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">🚧 Doing</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">✅ Done</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">Not set</button></div><div class="flex gap-2 flex-wrap"><span class="text-sm text-gray-600 self-center">Sort by:</span><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">⭐ Favorite </button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">Name </button><button class="btn btn-primary btn-sm">Updated <!-- -->↓</button></div><div class="text-center py-12"><div class="inline-block animate-spin rounded-full h-8 w-8 border-4 border-gray-300 border-t-blue-600"></div><p class="mt-4 text-gray-600">Loading worktrees...</p></div></div><div class="mt-8"><div class="space-y-4"><div class="flex items-center justify-between"><h2 class="text-xl font-semibold text-gray-900">External Apps</h2><button class="btn btn-primary btn-sm">+ Add App</button></div><div class="card p-6"><div class="flex items-center justify-center py-8"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"></div><span class="ml-3 text-gray-600">Loading apps...</span></div></div></div></div></div></main></div><script src="/_next/static/chunks/webpack-4f85dcef6279c6ee.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/28be35e4727ae7ef.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[12846,[],\"\"]\n4:I[19107,[],\"ClientPageRoot\"]\n5:I[89707,[\"7648\",\"static/chunks/7648-325564a6e12a3257.js\",\"4343\",\"static/chunks/4343-ebe884a2a80eb033.js\",\"6725\",\"static/chunks/6725-f7607851b7d57eb1.js\",\"816\",\"static/chunks/816-c254f4e2406e696a.js\",\"6568\",\"static/chunks/6568-38a33aa67d82e12b.js\",\"1931\",\"static/chunks/app/page-3926224c4cdf315b.js\"],\"default\",1]\n6:I[91795,[\"816\",\"static/chunks/816-c254f4e2406e696a.js\",\"3185\",\"static/chunks/app/layout-4804cfba519283cf.js\"],\"AppProviders\"]\n7:I[4707,[],\"\"]\n8:I[36423,[],\"\"]\na:I[61060,[],\"\"]\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"oUD-A998xeBoez6zsrTH3\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"\"],\"initialTree\":[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$L4\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$5\"}],null],null],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/28be35e4727ae7ef.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ja\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-screen bg-gray-50\",\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L9\"],\"globalErrorComponent\":\"$a\",\"missingSlots\":\"$Wb\"}]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"CommandMate\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Git worktree management with Claude CLI and tmux sessions\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/icon.png?32d9127ba30ee286\",\"type\":\"image/png\",\"sizes\":\"32x32\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?31a89e65aa4ac65b\",\"type\":\"image/png\",\"sizes\":\"180x180\"}]]\n3:null\n"])</script></body></html>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
2:I[19107,[],"ClientPageRoot"]
|
|
2
|
-
3:I[89707,["7648","static/chunks/7648-325564a6e12a3257.js","4343","static/chunks/4343-ebe884a2a80eb033.js","6725","static/chunks/6725-f7607851b7d57eb1.js","816","static/chunks/816-c254f4e2406e696a.js","6568","static/chunks/6568-38a33aa67d82e12b.js","1931","static/chunks/app/page-3926224c4cdf315b.js"],"default",1]
|
|
3
|
-
4:I[91795,["816","static/chunks/816-c254f4e2406e696a.js","3185","static/chunks/app/layout-4804cfba519283cf.js"],"AppProviders"]
|
|
4
|
-
5:I[4707,[],""]
|
|
5
|
-
6:I[36423,[],""]
|
|
6
|
-
0:["oUD-A998xeBoez6zsrTH3",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/28be35e4727ae7ef.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ja","children":["$","body",null,{"className":"min-h-screen bg-gray-50","children":["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
|
|
7
|
-
7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"CommandMate"}],["$","meta","3",{"name":"description","content":"Git worktree management with Claude CLI and tmux sessions"}],["$","link","4",{"rel":"icon","href":"/icon.png?32d9127ba30ee286","type":"image/png","sizes":"32x32"}],["$","link","5",{"rel":"apple-touch-icon","href":"/apple-icon.png?31a89e65aa4ac65b","type":"image/png","sizes":"180x180"}]]
|
|
8
|
-
1:null
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
(()=>{var e={};e.id=3791,e.ids=[3791],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},55315:e=>{"use strict";e.exports=require("path")},17360:e=>{"use strict";e.exports=require("url")},53407:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>n.a,__next_app__:()=>p,originalPathname:()=>m,pages:()=>c,routeModule:()=>h,tree:()=>d}),r(56500),r(25086),r(35866);var a=r(23191),s=r(88716),i=r(37922),n=r.n(i),l=r(95231),o={};for(let e in l)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(o[e]=()=>l[e]);r.d(t,o);let d=["",{children:["worktrees",{children:["[id]",{children:["simple-terminal",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,56500)),"/home/runner/work/CommandMate/CommandMate/src/app/worktrees/[id]/simple-terminal/page.tsx"]}]},{}]},{}]},{metadata:{icon:[async e=>(await Promise.resolve().then(r.bind(r,71150))).default(e)],apple:[async e=>(await Promise.resolve().then(r.bind(r,63601))).default(e)],openGraph:[],twitter:[],manifest:void 0}}]},{layout:[()=>Promise.resolve().then(r.bind(r,25086)),"/home/runner/work/CommandMate/CommandMate/src/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,35866,23)),"next/dist/client/components/not-found-error"],metadata:{icon:[async e=>(await Promise.resolve().then(r.bind(r,71150))).default(e)],apple:[async e=>(await Promise.resolve().then(r.bind(r,63601))).default(e)],openGraph:[],twitter:[],manifest:void 0}}],c=["/home/runner/work/CommandMate/CommandMate/src/app/worktrees/[id]/simple-terminal/page.tsx"],m="/worktrees/[id]/simple-terminal/page",p={require:r,loadChunk:()=>Promise.resolve()},h=new a.AppPageRouteModule({definition:{kind:s.x.APP_PAGE,page:"/worktrees/[id]/simple-terminal/page",pathname:"/worktrees/[id]/simple-terminal",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},32573:(e,t,r)=>{Promise.resolve().then(r.bind(r,13185))},62881:(e,t,r)=>{"use strict";r.d(t,{Z:()=>m});var a=r(17577);let s=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),i=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase()),n=e=>{let t=i(e);return t.charAt(0).toUpperCase()+t.slice(1)},l=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),o=e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0};var d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let c=(0,a.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:s,className:i="",children:n,iconNode:c,...m},p)=>(0,a.createElement)("svg",{ref:p,...d,width:t,height:t,stroke:e,strokeWidth:s?24*Number(r)/Number(t):r,className:l("lucide",i),...!n&&!o(m)&&{"aria-hidden":"true"},...m},[...c.map(([e,t])=>(0,a.createElement)(e,t)),...Array.isArray(n)?n:[n]])),m=(e,t)=>{let r=(0,a.forwardRef)(({className:r,...i},o)=>(0,a.createElement)(c,{ref:o,iconNode:t,className:l(`lucide-${s(n(e))}`,`lucide-${e}`,r),...i}));return r.displayName=n(e),r}},86333:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});let a=(0,r(62881).Z)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]])},32130:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});let a=(0,r(62881).Z)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]])},98091:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});let a=(0,r(62881).Z)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]])},13185:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>h});var a=r(10326),s=r(17577),i=r(32130),n=r(62881);let l=(0,n.Z)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]),o=(0,n.Z)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var d=r(98091);function c({worktreeId:e,cliToolId:t}){let[r,n]=(0,s.useState)(""),[c,m]=(0,s.useState)(""),[p,h]=(0,s.useState)([]),[u,x]=(0,s.useState)(-1),[g,y]=(0,s.useState)(!1),b=(0,s.useRef)(null),f=async()=>{try{let r=await fetch(`/api/worktrees/${e}/capture`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cliToolId:t})});if(r.ok){let e=await r.json();n(e.output||""),b.current&&(b.current.scrollTop=b.current.scrollHeight)}}catch(e){console.error("Failed to capture output:",e)}},w=async r=>{if(r.trim()){y(!0),h(e=>[...e,r]),x(-1);try{(await fetch(`/api/worktrees/${e}/terminal`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cliToolId:t,command:r})})).ok?(m(""),setTimeout(async()=>{await f(),y(!1)},500)):(y(!1),console.error("Failed to send command"))}catch(e){y(!1),console.error("Error sending command:",e)}}},v=async()=>{try{await fetch(`/api/worktrees/${e}/terminal`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cliToolId:t,command:"\x03"})}),setTimeout(f,500)}catch(e){console.error("Failed to send interrupt:",e)}};return(0,a.jsxs)("div",{className:"h-full flex flex-col bg-gray-900 text-gray-100",children:[a.jsx("div",{className:"flex-1 overflow-hidden",children:a.jsx("pre",{ref:b,className:"h-full p-4 font-mono text-sm overflow-auto whitespace-pre-wrap bg-black text-green-400",style:{fontFamily:'Menlo, Monaco, "Courier New", monospace',lineHeight:"1.5"},children:r||"Terminal output will appear here..."})}),(0,a.jsxs)("div",{className:"border-t border-gray-700 bg-gray-800 p-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[a.jsx(i.Z,{className:"text-gray-400",size:20}),a.jsx("input",{type:"text",value:c,onChange:e=>m(e.target.value),onKeyDown:e=>{if("Enter"===e.key)w(c);else if("ArrowUp"===e.key){if(p.length>0){let e=-1===u?p.length-1:Math.max(0,u-1);x(e),m(p[e])}}else if("ArrowDown"===e.key&&-1!==u){let e=Math.min(p.length-1,u+1);e===p.length-1?(x(-1),m("")):(x(e),m(p[e]))}},placeholder:"Enter command...",disabled:g,className:"flex-1 bg-gray-900 text-white px-3 py-2 rounded border border-gray-600 focus:border-blue-500 focus:outline-none font-mono text-sm"}),(0,a.jsxs)("button",{onClick:()=>w(c),disabled:g||!c.trim(),className:"px-4 py-2 bg-blue-600 hover:bg-blue-700 disabled:bg-gray-600 text-white rounded flex items-center gap-2",children:[a.jsx(l,{size:16}),"Send"]}),a.jsx("button",{onClick:f,className:"px-3 py-2 bg-gray-700 hover:bg-gray-600 text-white rounded",title:"Refresh output",children:a.jsx(o,{size:16})}),a.jsx("button",{onClick:v,className:"px-3 py-2 bg-red-600 hover:bg-red-700 text-white rounded",title:"Send Ctrl+C",children:"^C"}),a.jsx("button",{onClick:()=>{n("")},className:"px-3 py-2 bg-gray-700 hover:bg-gray-600 text-white rounded",title:"Clear output",children:a.jsx(d.Z,{size:16})})]}),(0,a.jsxs)("div",{className:"mt-2 flex gap-2",children:[a.jsx("button",{onClick:()=>w("ls -la"),className:"px-3 py-1 text-xs bg-gray-700 hover:bg-gray-600 text-white rounded",children:"ls -la"}),a.jsx("button",{onClick:()=>w("pwd"),className:"px-3 py-1 text-xs bg-gray-700 hover:bg-gray-600 text-white rounded",children:"pwd"}),a.jsx("button",{onClick:()=>w("git status"),className:"px-3 py-1 text-xs bg-gray-700 hover:bg-gray-600 text-white rounded",children:"git status"}),a.jsx("button",{onClick:()=>w("clear"),className:"px-3 py-1 text-xs bg-gray-700 hover:bg-gray-600 text-white rounded",children:"clear"})]}),g&&a.jsx("div",{className:"mt-2 text-xs text-gray-400",children:"Executing command..."}),p.length>0&&(0,a.jsxs)("div",{className:"mt-2 text-xs text-gray-500",children:["History: ",p.length," commands • Use ↑/↓ to navigate"]})]})]})}var m=r(86333),p=r(90434);function h({params:e}){let[t,r]=(0,s.useState)("claude");return(0,a.jsxs)("div",{className:"min-h-screen bg-gray-900",children:[a.jsx("div",{className:"bg-gray-800 border-b border-gray-700 px-6 py-4",children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[(0,a.jsxs)(p.default,{href:`/worktrees/${e.id}`,className:"flex items-center gap-2 text-gray-400 hover:text-white transition-colors",children:[a.jsx(m.Z,{size:20}),a.jsx("span",{children:"戻る"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 text-white",children:[a.jsx(i.Z,{size:24}),(0,a.jsxs)("h1",{className:"text-xl font-bold",children:["ターミナル: ",e.id]})]})]}),a.jsx("div",{className:"flex gap-2",children:[{id:"claude",name:"Claude",color:"bg-purple-600"},{id:"codex",name:"Codex",color:"bg-blue-600"},{id:"gemini",name:"Gemini",color:"bg-green-600"}].map(e=>a.jsx("button",{onClick:()=>r(e.id),className:`
|
|
2
|
-
px-4 py-2 rounded-lg transition-all font-medium
|
|
3
|
-
${t===e.id?`${e.color} text-white shadow-lg`:"bg-gray-700 text-gray-300 hover:bg-gray-600"}
|
|
4
|
-
`,children:e.name},e.id))})]})}),(0,a.jsxs)("div",{className:"container mx-auto p-6",children:[a.jsx("div",{className:"bg-gray-800 rounded-lg shadow-2xl overflow-hidden",style:{height:"70vh"},children:a.jsx(c,{worktreeId:e.id,cliToolId:t})}),(0,a.jsxs)("div",{className:"mt-4 p-4 bg-gray-800 rounded-lg text-gray-300 text-sm",children:[a.jsx("h3",{className:"font-semibold mb-2 text-white",children:"使い方:"}),(0,a.jsxs)("ul",{className:"space-y-1",children:[a.jsx("li",{children:"• コマンドを入力して Enter キーで実行"}),a.jsx("li",{children:"• ↑/↓ キーでコマンド履歴を表示"}),a.jsx("li",{children:"• ^C ボタンで実行中のコマンドを中断"}),a.jsx("li",{children:"• 自動的に3秒ごとに出力が更新されます"}),a.jsx("li",{children:"• クイックコマンドボタンで頻繁に使うコマンドを実行"})]})]})]})]})}},56500:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});let a=(0,r(68570).createProxy)(String.raw`/home/runner/work/CommandMate/CommandMate/src/app/worktrees/[id]/simple-terminal/page.tsx#default`)},63601:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var a=r(66621);let s=e=>[{type:"image/png",sizes:"180x180",url:(0,a.fillMetadataSegment)(".",e.params,"apple-icon.png")+"?31a89e65aa4ac65b"}]},71150:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var a=r(66621);let s=e=>[{type:"image/png",sizes:"32x32",url:(0,a.fillMetadataSegment)(".",e.params,"icon.png")+"?32d9127ba30ee286"}]}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),a=t.X(0,[8948,4471,6621,434,6550],()=>r(53407));module.exports=a})();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":1,"files":["../../../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/package.json","../../../../../../package.json","../../../../../package.json","../../../../chunks/434.js","../../../../chunks/4471.js","../../../../chunks/6550.js","../../../../chunks/6621.js","../../../../chunks/8948.js","../../../../webpack-runtime.js","page_client-reference-manifest.js"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/worktrees/[id]/simple-terminal/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"41868","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"79671","name":"*","chunks":[],"async":false}},"12846":{"*":{"id":"12994","name":"*","chunks":[],"async":false}},"19107":{"*":{"id":"96114","name":"*","chunks":[],"async":false}},"23103":{"*":{"id":"42772","name":"*","chunks":[],"async":false}},"36423":{"*":{"id":"84759","name":"*","chunks":[],"async":false}},"50653":{"*":{"id":"84442","name":"*","chunks":[],"async":false}},"55434":{"*":{"id":"64138","name":"*","chunks":[],"async":false}},"61060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"74622":{"*":{"id":"13185","name":"*","chunks":[],"async":false}},"89707":{"*":{"id":"54846","name":"*","chunks":[],"async":false}},"91795":{"*":{"id":"2108","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/CommandMate/CommandMate/node_modules/next/dist/client/components/app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"/home/runner/work/CommandMate/CommandMate/node_modules/next/dist/esm/client/components/app-router.js":{"id":12846,"name":"*","chunks":[],"async":false},"/home/runner/work/CommandMate/CommandMate/node_modules/next/dist/client/components/client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"/home/runner/work/CommandMate/CommandMate/node_modules/next/dist/esm/client/components/client-page.js":{"id":19107,"name":"*","chunks":[],"async":false},"/home/runner/work/CommandMate/CommandMate/node_modules/next/dist/client/components/error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"/home/runner/work/CommandMate/CommandMate/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":61060,"name":"*","chunks":[],"async":false},"/home/runner/work/CommandMate/CommandMate/node_modules/next/dist/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/home/runner/work/CommandMate/CommandMate/node_modules/next/dist/esm/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/home/runner/work/CommandMate/CommandMate/node_modules/next/dist/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/home/runner/work/CommandMate/CommandMate/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/home/runner/work/CommandMate/CommandMate/node_modules/next/dist/client/components/render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"/home/runner/work/CommandMate/CommandMate/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":36423,"name":"*","chunks":[],"async":false},"/home/runner/work/CommandMate/CommandMate/src/app/globals.css":{"id":2778,"name":"*","chunks":["816","static/chunks/816-c254f4e2406e696a.js","3185","static/chunks/app/layout-4804cfba519283cf.js"],"async":false},"/home/runner/work/CommandMate/CommandMate/src/components/providers/AppProviders.tsx":{"id":91795,"name":"*","chunks":["816","static/chunks/816-c254f4e2406e696a.js","3185","static/chunks/app/layout-4804cfba519283cf.js"],"async":false},"/home/runner/work/CommandMate/CommandMate/src/app/page.tsx":{"id":89707,"name":"*","chunks":["7648","static/chunks/7648-325564a6e12a3257.js","4343","static/chunks/4343-ebe884a2a80eb033.js","6725","static/chunks/6725-f7607851b7d57eb1.js","816","static/chunks/816-c254f4e2406e696a.js","6568","static/chunks/6568-38a33aa67d82e12b.js","1931","static/chunks/app/page-3926224c4cdf315b.js"],"async":false},"/home/runner/work/CommandMate/CommandMate/src/app/worktrees/[id]/page.tsx":{"id":23103,"name":"*","chunks":["7648","static/chunks/7648-325564a6e12a3257.js","4851","static/chunks/4851-45df4d388db5623f.js","4343","static/chunks/4343-ebe884a2a80eb033.js","2957","static/chunks/2957-327e43ef4c12808f.js","816","static/chunks/816-c254f4e2406e696a.js","6568","static/chunks/6568-38a33aa67d82e12b.js","130","static/chunks/app/worktrees/%5Bid%5D/page-8bd88bdc29607413.js"],"async":false},"/home/runner/work/CommandMate/CommandMate/src/app/worktrees/[id]/files/[...path]/page.tsx":{"id":50653,"name":"*","chunks":[],"async":false},"/home/runner/work/CommandMate/CommandMate/src/app/worktrees/[id]/simple-terminal/page.tsx":{"id":74622,"name":"*","chunks":["7648","static/chunks/7648-325564a6e12a3257.js","3791","static/chunks/app/worktrees/%5Bid%5D/simple-terminal/page-16feb3e86e42f4d1.js"],"async":false},"/home/runner/work/CommandMate/CommandMate/src/app/worktrees/[id]/terminal/page.tsx":{"id":55434,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/runner/work/CommandMate/CommandMate/src/":[],"/home/runner/work/CommandMate/CommandMate/src/app/layout":["static/css/28be35e4727ae7ef.css"],"/home/runner/work/CommandMate/CommandMate/src/app/page":[],"/home/runner/work/CommandMate/CommandMate/src/app/worktrees/[id]/page":["static/css/5eacd01f773eed7f.css"],"/home/runner/work/CommandMate/CommandMate/src/app/worktrees/[id]/simple-terminal/page":[]}}
|