mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-28 09:23:08 +08:00
Add benchmark results for fast3 and fast4, implement KeepAliveLspBridge, and add tests for staged strategies
- Added new benchmark result files: compare_2026-02-09_score_fast3.json and compare_2026-02-09_score_fast4.json. - Implemented KeepAliveLspBridge to maintain a persistent LSP connection across multiple queries, improving performance. - Created unit tests for staged clustering strategies in test_staged_stage3_fast_strategies.py, ensuring correct behavior of score and dir_rr strategies.
This commit is contained in:
@@ -15,6 +15,7 @@ import {
|
||||
import { IssueHubHeader } from '@/components/issue/hub/IssueHubHeader';
|
||||
import { IssueHubTabs, type IssueTab } from '@/components/issue/hub/IssueHubTabs';
|
||||
import { IssuesPanel } from '@/components/issue/hub/IssuesPanel';
|
||||
import { IssueBoardPanel } from '@/components/issue/hub/IssueBoardPanel';
|
||||
import { QueuePanel } from '@/components/issue/hub/QueuePanel';
|
||||
import { DiscoveryPanel } from '@/components/issue/hub/DiscoveryPanel';
|
||||
import { Button } from '@/components/ui/Button';
|
||||
@@ -161,6 +162,7 @@ export function IssueHubPage() {
|
||||
const renderActionButtons = () => {
|
||||
switch (currentTab) {
|
||||
case 'issues':
|
||||
case 'board':
|
||||
return (
|
||||
<>
|
||||
<Button variant="outline" onClick={handleIssuesRefresh} disabled={isFetchingIssues}>
|
||||
@@ -212,6 +214,7 @@ export function IssueHubPage() {
|
||||
|
||||
<IssueHubTabs currentTab={currentTab} onTabChange={setCurrentTab} />
|
||||
{currentTab === 'issues' && <IssuesPanel onCreateIssue={() => setIsNewIssueOpen(true)} />}
|
||||
{currentTab === 'board' && <IssueBoardPanel />}
|
||||
{currentTab === 'queue' && <QueuePanel />}
|
||||
{currentTab === 'discovery' && <DiscoveryPanel />}
|
||||
|
||||
|
||||
@@ -1122,6 +1122,84 @@ function PromptTemplateProperties({ data, onChange }: PromptTemplatePropertiesPr
|
||||
onChange={(artifacts) => onChange({ artifacts })}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* CLI Session Routing (tmux-like) */}
|
||||
{!isSlashCommandMode && (
|
||||
<>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-foreground mb-1">
|
||||
{formatMessage({ id: 'orchestrator.propertyPanel.delivery' })}
|
||||
</label>
|
||||
<select
|
||||
value={(data.delivery as string) || 'newExecution'}
|
||||
onChange={(e) => {
|
||||
const next = e.target.value as 'newExecution' | 'sendToSession';
|
||||
const updates: Partial<PromptTemplateNodeData> = { delivery: next };
|
||||
if (next !== 'sendToSession') {
|
||||
updates.targetSessionKey = undefined;
|
||||
updates.resumeKey = undefined;
|
||||
updates.resumeStrategy = undefined;
|
||||
}
|
||||
onChange(updates);
|
||||
}}
|
||||
className="w-full h-10 px-3 rounded-md border border-border bg-background text-foreground text-sm"
|
||||
>
|
||||
<option value="newExecution">
|
||||
{formatMessage({ id: 'orchestrator.propertyPanel.options.deliveryNewExecution' })}
|
||||
</option>
|
||||
<option value="sendToSession">
|
||||
{formatMessage({ id: 'orchestrator.propertyPanel.options.deliverySendToSession' })}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{((data.delivery as string) || 'newExecution') === 'sendToSession' && (
|
||||
<>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-foreground mb-1">
|
||||
{formatMessage({ id: 'orchestrator.propertyPanel.targetSessionKey' })}
|
||||
</label>
|
||||
<Input
|
||||
value={(data.targetSessionKey as string) || ''}
|
||||
onChange={(e) => onChange({ targetSessionKey: e.target.value || undefined })}
|
||||
placeholder={formatMessage({ id: 'orchestrator.propertyPanel.targetSessionKeyPlaceholder' })}
|
||||
className="font-mono text-sm"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-foreground mb-1">
|
||||
{formatMessage({ id: 'orchestrator.propertyPanel.resumeKey' })}
|
||||
</label>
|
||||
<Input
|
||||
value={(data.resumeKey as string) || ''}
|
||||
onChange={(e) => onChange({ resumeKey: e.target.value || undefined })}
|
||||
placeholder={formatMessage({ id: 'orchestrator.propertyPanel.resumeKeyPlaceholder' })}
|
||||
className="font-mono text-sm"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-foreground mb-1">
|
||||
{formatMessage({ id: 'orchestrator.propertyPanel.resumeStrategy' })}
|
||||
</label>
|
||||
<select
|
||||
value={(data.resumeStrategy as string) || 'nativeResume'}
|
||||
onChange={(e) => onChange({ resumeStrategy: e.target.value as any })}
|
||||
className="w-full h-10 px-3 rounded-md border border-border bg-background text-foreground text-sm"
|
||||
>
|
||||
<option value="nativeResume">
|
||||
{formatMessage({ id: 'orchestrator.propertyPanel.options.resumeStrategyNative' })}
|
||||
</option>
|
||||
<option value="promptConcat">
|
||||
{formatMessage({ id: 'orchestrator.propertyPanel.options.resumeStrategyPromptConcat' })}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</CollapsibleSection>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user