Auto sync connectai
This commit is contained in:
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"result": "Final report with inconsistencies. This should be long enough to pass validation.",
|
||||
"createdAt": 1779179392149,
|
||||
"createdAt": 1779182243899,
|
||||
"modelVersion": "unknown"
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"result": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.",
|
||||
"createdAt": 1779179392147,
|
||||
"createdAt": 1779182243896,
|
||||
"modelVersion": "unknown"
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"result": "Detailed Execution Plan: 1. Research 2. Analyze 3. Write report with high quality.",
|
||||
"createdAt": 1779179392144,
|
||||
"createdAt": 1779182243894,
|
||||
"modelVersion": "unknown"
|
||||
}
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"result": "---\nid: stress_conflict_1779179392129\ndate: 2026-05-19T08:29:52.151Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\nFinal report with inconsistencies. This should be long enough to pass validation.\n\nFinal report with inconsistencies. This should be long enough to pass validation.\n\n---\n## 💡 Astra의 선제적 제안 (Proactive Next Actions)\nFinal report with inconsistencies. This should be long enough to pass validation.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `60/100` | ⚠️ Medium |\n| **Fallbacks Used** | `0` | ✅ None |\n| **Auto Retries** | `0` | ✅ Stable |\n| **Deduplication** | `0` | Standard |\n| **Processing Time** | `0.0s` | ✅ Fast |\n\n### 🔍 Decision Audit Trail\n- **[PLANNER]** 전략 수립 중... (14ms)\n- **[RESEARCHER]** 핵심 정보 수집 및 분석 중... (2ms)\n- **[WRITER]** 최종 리포트 작성 및 편집 중... (3ms)\n",
|
||||
"createdAt": 1779179392151,
|
||||
"result": "---\nid: stress_conflict_1779182243877\ndate: 2026-05-19T09:17:23.900Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\nFinal report with inconsistencies. This should be long enough to pass validation.\n\nFinal report with inconsistencies. This should be long enough to pass validation.\n\n---\n## 💡 Astra의 선제적 제안 (Proactive Next Actions)\nFinal report with inconsistencies. This should be long enough to pass validation.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `60/100` | ⚠️ Medium |\n| **Fallbacks Used** | `0` | ✅ None |\n| **Auto Retries** | `0` | ✅ Stable |\n| **Deduplication** | `0` | Standard |\n| **Processing Time** | `0.0s` | ✅ Fast |\n\n### 🔍 Decision Audit Trail\n- **[PLANNER]** 전략 수립 중... (16ms)\n- **[RESEARCHER]** 핵심 정보 수집 및 분석 중... (2ms)\n- **[WRITER]** 최종 리포트 작성 및 편집 중... (3ms)\n",
|
||||
"createdAt": 1779182243901,
|
||||
"modelVersion": "unknown"
|
||||
}
|
||||
+9
-9
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"missionId": "stress_conflict_1779179392129",
|
||||
"missionId": "stress_conflict_1779182243877",
|
||||
"status": "completed",
|
||||
"startTime": "2026-05-19T08:29:52.129Z",
|
||||
"totalElapsedMs": 23,
|
||||
"startTime": "2026-05-19T09:17:23.877Z",
|
||||
"totalElapsedMs": 24,
|
||||
"results": {
|
||||
"planner": "Detailed Execution Plan: 1. Research 2. Analyze 3. Write report with high quality.",
|
||||
"researcher": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.",
|
||||
@@ -16,30 +16,30 @@
|
||||
{
|
||||
"from": "idle",
|
||||
"to": "planner",
|
||||
"durationMs": 14,
|
||||
"durationMs": 16,
|
||||
"message": "전략 수립 중...",
|
||||
"ts": "2026-05-19T08:29:52.143Z"
|
||||
"ts": "2026-05-19T09:17:23.893Z"
|
||||
},
|
||||
{
|
||||
"from": "planner",
|
||||
"to": "researcher",
|
||||
"durationMs": 2,
|
||||
"message": "핵심 정보 수집 및 분석 중...",
|
||||
"ts": "2026-05-19T08:29:52.145Z"
|
||||
"ts": "2026-05-19T09:17:23.895Z"
|
||||
},
|
||||
{
|
||||
"from": "researcher",
|
||||
"to": "writer",
|
||||
"durationMs": 3,
|
||||
"message": "최종 리포트 작성 및 편집 중...",
|
||||
"ts": "2026-05-19T08:29:52.148Z"
|
||||
"ts": "2026-05-19T09:17:23.898Z"
|
||||
},
|
||||
{
|
||||
"from": "writer",
|
||||
"to": "completed",
|
||||
"durationMs": 4,
|
||||
"durationMs": 3,
|
||||
"message": "미션 완료",
|
||||
"ts": "2026-05-19T08:29:52.152Z"
|
||||
"ts": "2026-05-19T09:17:23.901Z"
|
||||
}
|
||||
],
|
||||
"resilienceMetrics": {
|
||||
@@ -1,5 +1,15 @@
|
||||
# Astra Patch Notes
|
||||
|
||||
## v2.2.32 (2026-05-19)
|
||||
### 🔬 Datacollect Radio: 슬래시 명령 진단 로깅 강화
|
||||
- **OutputChannel(Astra)에 단계별 trace 추가:** `[SLASH] prompt received`, `[SLASH] handleSlashCommand start/finished/error` 라인을 logInfo로 출력. "/benchmark 입력했는데 아무 응답 없음" 같은 보고가 들어왔을 때 어디서 막혔는지 (분기 진입 여부 / webview 부재 / bridge 호출 실패) 즉시 판별 가능.
|
||||
- **webview 부재 시 즉시 사용자 알림:** `provider._view`가 undefined면 chunk 메시지가 silently drop되어 사용자가 무한 로딩으로 보였습니다. 이제 그 경우 VS Code notification으로 *"채팅 webview가 활성 상태가 아닙니다"* 안내.
|
||||
- **신규 패키징:** `astra-2.2.32.vsix` 패키지로 배포합니다.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
## v2.2.30 (2026-05-19)
|
||||
### 🔓 Datacollect Radio: 슬래시 명령 후 채팅 input 자동 해제
|
||||
- **슬래시 명령(`/research`, `/benchmark`, `/youtube`, `/blog`) 종료 시 `streamEnd` 신호 누락 수정.** Astra 채팅 input은 streamEnd 메시지로 잠금이 풀리는데, 우리 slashRouter는 일반 LLM streamer를 우회해 bridge를 직접 호출하므로 자동으로 신호가 안 가던 상태. 사용자가 `/benchmark`를 입력하면 결과가 채팅에 표시돼도 input이 영원히 잠긴 채 무한 로딩으로 보였습니다.
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
"name": "astra",
|
||||
"displayName": "Astra",
|
||||
"description": "The personal intelligence layer for Antigravity and VS Code. A private cognitive partner for deep project context, memory, and proactive strategic decision-making.",
|
||||
"version": "2.2.30",
|
||||
"version": "2.2.32",
|
||||
"publisher": "g1nation",
|
||||
"license": "MIT",
|
||||
"icon": "assets/icon.png",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import * as vscode from 'vscode';
|
||||
import { logInfo } from '../../utils';
|
||||
import { bridgeFetch, getBridgeBaseUrl } from './bridgeClient';
|
||||
|
||||
/**
|
||||
@@ -53,6 +54,7 @@ export async function handleSlashCommand(
|
||||
const head = (spaceIdx === -1 ? trimmed : trimmed.slice(0, spaceIdx)).toLowerCase() as SlashCommand;
|
||||
const arg = spaceIdx === -1 ? '' : trimmed.slice(spaceIdx + 1).trim();
|
||||
|
||||
logInfo(`[SLASH] handleSlashCommand start head=${head} arg="${arg.slice(0, 60)}" bridge=${getBridgeBaseUrl()}`);
|
||||
chunk(view, `\n\n**📻 Datacollect Radio** · \`${head}\` · bridge=\`${getBridgeBaseUrl()}\`\n\n`);
|
||||
|
||||
try {
|
||||
@@ -64,11 +66,13 @@ export async function handleSlashCommand(
|
||||
}
|
||||
return true;
|
||||
} catch (e: any) {
|
||||
logInfo(`[SLASH] handleSlashCommand error head=${head}: ${e?.message || String(e)}`);
|
||||
chunk(view, `\n\n> ❌ **에러**: ${e?.message || String(e)}\n`);
|
||||
return true;
|
||||
} finally {
|
||||
// input 잠금 해제 — slashRouter 진입했으면 어떤 경로든 반드시 통과.
|
||||
view?.postMessage({ type: 'streamEnd' });
|
||||
logInfo(`[SLASH] handleSlashCommand finished head=${head} streamEnd posted`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,10 +22,26 @@ export async function handleChatMessage(provider: SidebarChatProvider, data: any
|
||||
// 사용자가 채팅에서 `/research`, `/benchmark`, `/youtube`, `/blog` 같은
|
||||
// 슬래시 명령을 보내면 Datacollect bridge(3002)로 위임. 회사 모드/일반
|
||||
// chat 분기보다 먼저 잡아 LLM 토큰을 쓰지 않고 직접 처리한다.
|
||||
//
|
||||
// 진단 logging: "/benchmark 입력했는데 아무 답변도 안 옴" 같은 보고가
|
||||
// 들어왔을 때, OutputChannel(Astra)에 단계별 trace가 남으면 어디서
|
||||
// 막혔는지 (분기 진입 / view 부재 / bridge 호출 실패) 즉시 판별 가능.
|
||||
if (typeof data.value === 'string') {
|
||||
const { isSlashCommand, handleSlashCommand } = await import('../features/datacollect/slashRouter');
|
||||
if (isSlashCommand(data.value)) {
|
||||
await handleSlashCommand(data.value, provider._view?.webview);
|
||||
const matched = isSlashCommand(data.value);
|
||||
logInfo(`[SLASH] prompt received: ${JSON.stringify(data.value).slice(0, 100)} matched=${matched} hasView=${!!provider._view}`);
|
||||
if (matched) {
|
||||
if (!provider._view?.webview) {
|
||||
// webview가 비활성/닫힘 상태면 chunk가 silently drop되므로
|
||||
// 사용자가 아무 응답도 못 본다. notification으로 즉시 surface.
|
||||
const msg = '📻 Datacollect Radio: 채팅 webview가 활성 상태가 아닙니다. Astra 사이드바를 한 번 열고 다시 시도해 주세요.';
|
||||
await vscode.window.showWarningMessage(msg);
|
||||
logInfo(`[SLASH] webview not available — aborting`);
|
||||
return true;
|
||||
}
|
||||
logInfo(`[SLASH] handleSlashCommand entering`);
|
||||
await handleSlashCommand(data.value, provider._view.webview);
|
||||
logInfo(`[SLASH] handleSlashCommand returned`);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user