@gracker/smartperfetto 1.0.15 → 1.0.17
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/agent/agents/base/baseAgent.d.ts.map +1 -1
- package/dist/agent/agents/base/baseAgent.js +5 -1
- package/dist/agent/agents/base/baseAgent.js.map +1 -1
- package/dist/agent/context/enhancedSessionContext.d.ts +5 -0
- package/dist/agent/context/enhancedSessionContext.d.ts.map +1 -1
- package/dist/agent/context/enhancedSessionContext.js +13 -0
- package/dist/agent/context/enhancedSessionContext.js.map +1 -1
- package/dist/agent/core/conclusionContract.d.ts +23 -1
- package/dist/agent/core/conclusionContract.d.ts.map +1 -1
- package/dist/agent/core/conclusionGenerator.d.ts.map +1 -1
- package/dist/agent/core/conclusionGenerator.js +223 -27
- package/dist/agent/core/conclusionGenerator.js.map +1 -1
- package/dist/agent/core/executors/directSkillExecutor.d.ts.map +1 -1
- package/dist/agent/core/executors/directSkillExecutor.js +6 -12
- package/dist/agent/core/executors/directSkillExecutor.js.map +1 -1
- package/dist/agent/core/orchestratorTypes.d.ts +6 -0
- package/dist/agent/core/orchestratorTypes.d.ts.map +1 -1
- package/dist/agent/core/orchestratorTypes.js.map +1 -1
- package/dist/agent/experts/crossDomain/moduleExpertInvoker.d.ts.map +1 -1
- package/dist/agent/experts/crossDomain/moduleExpertInvoker.js +4 -1
- package/dist/agent/experts/crossDomain/moduleExpertInvoker.js.map +1 -1
- package/dist/agent/scene/sceneStage1Runner.d.ts +1 -1
- package/dist/agent/scene/sceneStage1Runner.d.ts.map +1 -1
- package/dist/agent/scene/sceneStage1Runner.js +1 -1
- package/dist/agent/scene/sceneStage1Runner.js.map +1 -1
- package/dist/agent/scene/sceneStoryService.d.ts +1 -1
- package/dist/agent/scene/sceneStoryService.d.ts.map +1 -1
- package/dist/agent/scene/sceneStoryService.js +4 -1
- package/dist/agent/scene/sceneStoryService.js.map +1 -1
- package/dist/agent/types/agentProtocol.d.ts.map +1 -1
- package/dist/agent/types/agentProtocol.js +4 -1
- package/dist/agent/types/agentProtocol.js.map +1 -1
- package/dist/agent/types.d.ts +7 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/agentOpenAI/openAiConfig.d.ts +2 -0
- package/dist/agentOpenAI/openAiConfig.d.ts.map +1 -1
- package/dist/agentOpenAI/openAiConfig.js +3 -0
- package/dist/agentOpenAI/openAiConfig.js.map +1 -1
- package/dist/agentOpenAI/openAiRuntime.d.ts +8 -0
- package/dist/agentOpenAI/openAiRuntime.d.ts.map +1 -1
- package/dist/agentOpenAI/openAiRuntime.js +293 -58
- package/dist/agentOpenAI/openAiRuntime.js.map +1 -1
- package/dist/agentRuntime/runtimeHealth.d.ts +1 -0
- package/dist/agentRuntime/runtimeHealth.d.ts.map +1 -1
- package/dist/agentv3/artifactStore.d.ts +5 -0
- package/dist/agentv3/artifactStore.d.ts.map +1 -1
- package/dist/agentv3/artifactStore.js +3 -0
- package/dist/agentv3/artifactStore.js.map +1 -1
- package/dist/agentv3/claudeMcpServer.d.ts.map +1 -1
- package/dist/agentv3/claudeMcpServer.js +125 -86
- package/dist/agentv3/claudeMcpServer.js.map +1 -1
- package/dist/agentv3/claudeRuntime.d.ts.map +1 -1
- package/dist/agentv3/claudeRuntime.js +147 -65
- package/dist/agentv3/claudeRuntime.js.map +1 -1
- package/dist/agentv3/claudeSseBridge.d.ts +6 -0
- package/dist/agentv3/claudeSseBridge.d.ts.map +1 -1
- package/dist/agentv3/claudeSseBridge.js +1 -0
- package/dist/agentv3/claudeSseBridge.js.map +1 -1
- package/dist/agentv3/sessionStateSnapshot.d.ts +23 -0
- package/dist/agentv3/sessionStateSnapshot.d.ts.map +1 -1
- package/dist/assistant/application/agentAnalyzeSessionService.d.ts +6 -0
- package/dist/assistant/application/agentAnalyzeSessionService.d.ts.map +1 -1
- package/dist/assistant/application/agentAnalyzeSessionService.js +9 -3
- package/dist/assistant/application/agentAnalyzeSessionService.js.map +1 -1
- package/dist/assistant/application/assistantApplicationService.d.ts.map +1 -1
- package/dist/assistant/application/assistantApplicationService.js +3 -1
- package/dist/assistant/application/assistantApplicationService.js.map +1 -1
- package/dist/cli-user/commands/report.js +64 -0
- package/dist/cli-user/commands/report.js.map +1 -1
- package/dist/cli-user/io/paths.d.ts +3 -0
- package/dist/cli-user/io/paths.d.ts.map +1 -1
- package/dist/cli-user/io/paths.js +6 -0
- package/dist/cli-user/io/paths.js.map +1 -1
- package/dist/cli-user/io/sessionStore.d.ts +1 -0
- package/dist/cli-user/io/sessionStore.d.ts.map +1 -1
- package/dist/cli-user/io/sessionStore.js +5 -0
- package/dist/cli-user/io/sessionStore.js.map +1 -1
- package/dist/cli-user/repl/renderer.d.ts +8 -0
- package/dist/cli-user/repl/renderer.d.ts.map +1 -1
- package/dist/cli-user/repl/renderer.js.map +1 -1
- package/dist/cli-user/services/cliAnalyzeService.d.ts +3 -0
- package/dist/cli-user/services/cliAnalyzeService.d.ts.map +1 -1
- package/dist/cli-user/services/cliAnalyzeService.js +103 -1
- package/dist/cli-user/services/cliAnalyzeService.js.map +1 -1
- package/dist/cli-user/services/turnPersistence.d.ts +0 -10
- package/dist/cli-user/services/turnPersistence.d.ts.map +1 -1
- package/dist/cli-user/services/turnPersistence.js +62 -0
- package/dist/cli-user/services/turnPersistence.js.map +1 -1
- package/dist/routes/agentReportRoutes.d.ts +1 -0
- package/dist/routes/agentReportRoutes.d.ts.map +1 -1
- package/dist/routes/agentReportRoutes.js +13 -2
- package/dist/routes/agentReportRoutes.js.map +1 -1
- package/dist/routes/agentResumeRoutes.d.ts.map +1 -1
- package/dist/routes/agentResumeRoutes.js +51 -5
- package/dist/routes/agentResumeRoutes.js.map +1 -1
- package/dist/routes/agentRoutes.d.ts.map +1 -1
- package/dist/routes/agentRoutes.js +524 -130
- package/dist/routes/agentRoutes.js.map +1 -1
- package/dist/scripts/verifyAgentSseScrolling.js +142 -2
- package/dist/scripts/verifyAgentSseScrolling.js.map +1 -1
- package/dist/services/agentEventStore.d.ts.map +1 -1
- package/dist/services/agentEventStore.js +13 -3
- package/dist/services/agentEventStore.js.map +1 -1
- package/dist/services/agentReportData.d.ts +3 -0
- package/dist/services/agentReportData.d.ts.map +1 -1
- package/dist/services/agentReportData.js.map +1 -1
- package/dist/services/agentResultNormalizer.d.ts +15 -3
- package/dist/services/agentResultNormalizer.d.ts.map +1 -1
- package/dist/services/agentResultNormalizer.js +344 -6
- package/dist/services/agentResultNormalizer.js.map +1 -1
- package/dist/services/analysisResultSnapshotPipeline.d.ts +3 -0
- package/dist/services/analysisResultSnapshotPipeline.d.ts.map +1 -1
- package/dist/services/analysisResultSnapshotPipeline.js +3 -0
- package/dist/services/analysisResultSnapshotPipeline.js.map +1 -1
- package/dist/services/analysisResultSnapshotStore.d.ts.map +1 -1
- package/dist/services/analysisResultSnapshotStore.js +34 -2
- package/dist/services/analysisResultSnapshotStore.js.map +1 -1
- package/dist/services/enterpriseSchema.d.ts.map +1 -1
- package/dist/services/enterpriseSchema.js +11 -0
- package/dist/services/enterpriseSchema.js.map +1 -1
- package/dist/services/evidence/evidenceContractBuilder.d.ts +11 -0
- package/dist/services/evidence/evidenceContractBuilder.d.ts.map +1 -0
- package/dist/services/evidence/evidenceContractBuilder.js +546 -0
- package/dist/services/evidence/evidenceContractBuilder.js.map +1 -0
- package/dist/services/finalResultQualityGate.d.ts +18 -0
- package/dist/services/finalResultQualityGate.d.ts.map +1 -0
- package/dist/services/finalResultQualityGate.js +283 -0
- package/dist/services/finalResultQualityGate.js.map +1 -0
- package/dist/services/htmlReportGenerator.d.ts +8 -1
- package/dist/services/htmlReportGenerator.d.ts.map +1 -1
- package/dist/services/htmlReportGenerator.js +129 -42
- package/dist/services/htmlReportGenerator.js.map +1 -1
- package/dist/services/persistAgentSession.d.ts +2 -0
- package/dist/services/persistAgentSession.d.ts.map +1 -1
- package/dist/services/persistAgentSession.js +17 -1
- package/dist/services/persistAgentSession.js.map +1 -1
- package/dist/services/processIdentity/identityContractMapper.d.ts +14 -0
- package/dist/services/processIdentity/identityContractMapper.d.ts.map +1 -0
- package/dist/services/processIdentity/identityContractMapper.js +135 -0
- package/dist/services/processIdentity/identityContractMapper.js.map +1 -0
- package/dist/services/processIdentity/types.d.ts +5 -0
- package/dist/services/processIdentity/types.d.ts.map +1 -1
- package/dist/services/processIdentity/types.js.map +1 -1
- package/dist/services/skillEngine/skillExecutor.d.ts +14 -2
- package/dist/services/skillEngine/skillExecutor.d.ts.map +1 -1
- package/dist/services/skillEngine/skillExecutor.js +133 -13
- package/dist/services/skillEngine/skillExecutor.js.map +1 -1
- package/dist/services/skillEngine/types.d.ts +2 -0
- package/dist/services/skillEngine/types.d.ts.map +1 -1
- package/dist/services/verifier/claimVerificationRunner.d.ts +20 -0
- package/dist/services/verifier/claimVerificationRunner.d.ts.map +1 -0
- package/dist/services/verifier/claimVerificationRunner.js +88 -0
- package/dist/services/verifier/claimVerificationRunner.js.map +1 -0
- package/dist/services/verifier/deterministicClaimVerifier.d.ts +8 -0
- package/dist/services/verifier/deterministicClaimVerifier.d.ts.map +1 -0
- package/dist/services/verifier/deterministicClaimVerifier.js +178 -0
- package/dist/services/verifier/deterministicClaimVerifier.js.map +1 -0
- package/dist/types/claimVerification.d.ts +38 -0
- package/dist/types/claimVerification.d.ts.map +1 -0
- package/dist/types/claimVerification.js +6 -0
- package/dist/types/claimVerification.js.map +1 -0
- package/dist/types/dataContract.d.ts +32 -0
- package/dist/types/dataContract.d.ts.map +1 -1
- package/dist/types/dataContract.js +7 -0
- package/dist/types/dataContract.js.map +1 -1
- package/dist/types/evidenceContract.d.ts +100 -0
- package/dist/types/evidenceContract.d.ts.map +1 -0
- package/dist/types/evidenceContract.js +6 -0
- package/dist/types/evidenceContract.js.map +1 -0
- package/dist/types/identityContract.d.ts +57 -0
- package/dist/types/identityContract.d.ts.map +1 -0
- package/dist/types/identityContract.js +6 -0
- package/dist/types/identityContract.js.map +1 -0
- package/dist/types/multiTraceComparison.d.ts +3 -0
- package/dist/types/multiTraceComparison.d.ts.map +1 -1
- package/package.json +3 -2
- package/skills/atomic/process_identity_resolver.skill.yaml +130 -1
- package/skills/atomic/process_slice_cpu_hotspots.skill.yaml +321 -0
- package/skills/atomic/startup_slow_reasons.skill.yaml +102 -17
- package/skills/composite/startup_analysis.skill.yaml +16 -0
- package/strategies/anr.strategy.md +2 -2
- package/strategies/game.strategy.md +1 -1
- package/strategies/general.strategy.md +1 -1
- package/strategies/prompt-openai-final-report-continuation-en.template.md +12 -0
- package/strategies/prompt-openai-final-report-continuation-zh.template.md +12 -0
- package/strategies/prompt-output-format.template.md +1 -1
- package/strategies/scrolling.strategy.md +1 -0
- package/strategies/startup.strategy.md +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeRuntime.d.ts","sourceRoot":"","sources":["../../src/agentv3/claudeRuntime.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAM/E,OAAO,KAAK,EAA4B,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEjF,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAmBjE,OAAO,EAUL,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAoI,eAAe,EAAE,MAAM,SAAS,CAAC;AAM/M,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"claudeRuntime.d.ts","sourceRoot":"","sources":["../../src/agentv3/claudeRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,6 +69,7 @@ const skillNotesInjector_1 = require("./selfImprove/skillNotesInjector");
|
|
|
69
69
|
const strategyFingerprint_1 = require("./selfImprove/strategyFingerprint");
|
|
70
70
|
const claudeVerifier_1 = require("./claudeVerifier");
|
|
71
71
|
const runtimePaths_1 = require("../runtimePaths");
|
|
72
|
+
const finalResultQualityGate_1 = require("../services/finalResultQualityGate");
|
|
72
73
|
function parseQuickBudgetEnv() {
|
|
73
74
|
const v = process.env.SELF_IMPROVE_QUICK_NOTES_BUDGET;
|
|
74
75
|
if (!v)
|
|
@@ -140,6 +141,21 @@ function extractPlanPhaseIdFromToolResult(resultStr) {
|
|
|
140
141
|
}
|
|
141
142
|
return undefined;
|
|
142
143
|
}
|
|
144
|
+
function looksLikeProcessNarration(text) {
|
|
145
|
+
return /(?:我需要|我将|接下来|先重新|重新读取|继续调用|工具|tool|let me|i need to|i will|next i)/i
|
|
146
|
+
.test(text.slice(0, 500));
|
|
147
|
+
}
|
|
148
|
+
function correctionResultLooksUsable(text) {
|
|
149
|
+
const trimmed = text.trim();
|
|
150
|
+
if (trimmed.length < 100)
|
|
151
|
+
return false;
|
|
152
|
+
if ((0, finalResultQualityGate_1.looksLikePhaseSummaryFallback)(trimmed))
|
|
153
|
+
return false;
|
|
154
|
+
const hasFinalReportMarker = /(^|\n)\s*#{1,3}\s*(?:综合结论|Final Conclusion|关键证据链|Evidence|优化建议|Recommendations)(?:\s|[::]|$)/i.test(trimmed);
|
|
155
|
+
if (looksLikeProcessNarration(trimmed) && !hasFinalReportMarker)
|
|
156
|
+
return false;
|
|
157
|
+
return hasFinalReportMarker || !(0, claudeVerifier_1.isConclusionIncomplete)(trimmed);
|
|
158
|
+
}
|
|
143
159
|
const traceCompletenessProber_1 = require("./traceCompletenessProber");
|
|
144
160
|
const entityCapture_1 = require("../agent/core/entityCapture");
|
|
145
161
|
const outputLanguage_1 = require("./outputLanguage");
|
|
@@ -1222,6 +1238,7 @@ class ClaudeRuntime extends events_1.EventEmitter {
|
|
|
1222
1238
|
// Run unconditionally when enabled — plan adherence, hypothesis resolution,
|
|
1223
1239
|
// and conclusion-length checks must fire even when zero findings are extracted.
|
|
1224
1240
|
console.log(`[ClaudeRuntime] Pre-verification: conclusionText=${conclusionText.length} chars, sdkSessionId=${sdkSessionId ? 'set' : 'MISSING'}, enableVerification=${runtimeConfig.enableVerification}`);
|
|
1241
|
+
let verificationDegradedMessage;
|
|
1225
1242
|
if (runtimeConfig.enableVerification) {
|
|
1226
1243
|
const MAX_CORRECTION_ATTEMPTS = 2;
|
|
1227
1244
|
let previousErrorSignatures = new Set();
|
|
@@ -1327,12 +1344,14 @@ class ClaudeRuntime extends events_1.EventEmitter {
|
|
|
1327
1344
|
closeCorrection();
|
|
1328
1345
|
}, correctionTimeoutMs);
|
|
1329
1346
|
let correctedResult = '';
|
|
1347
|
+
const correctionAnswerBridge = (0, claudeSseBridge_1.createSseBridge)(() => undefined, this.config.outputLanguage);
|
|
1330
1348
|
try {
|
|
1331
1349
|
for await (const msg of correctionStream) {
|
|
1332
1350
|
if (correctionTimedOut)
|
|
1333
1351
|
break;
|
|
1352
|
+
correctionAnswerBridge.handleMessage(msg);
|
|
1334
1353
|
if (msg.type === 'result' && msg.subtype === 'success') {
|
|
1335
|
-
correctedResult = msg.result || '';
|
|
1354
|
+
correctedResult = msg.result || correctionAnswerBridge.getAccumulatedAnswer() || '';
|
|
1336
1355
|
rounds += msg.num_turns || 0;
|
|
1337
1356
|
}
|
|
1338
1357
|
// Bridge tool call events (agent_task_dispatched, agent_response)
|
|
@@ -1353,8 +1372,18 @@ class ClaudeRuntime extends events_1.EventEmitter {
|
|
|
1353
1372
|
// closed on every exit (success, break, throw). Idempotent.
|
|
1354
1373
|
closeCorrection();
|
|
1355
1374
|
}
|
|
1375
|
+
if (!correctionTimedOut) {
|
|
1376
|
+
correctionAnswerBridge.flushPendingAnswer();
|
|
1377
|
+
}
|
|
1378
|
+
if (!correctedResult && !correctionTimedOut) {
|
|
1379
|
+
correctedResult = correctionAnswerBridge.getAccumulatedAnswer();
|
|
1380
|
+
}
|
|
1356
1381
|
if (correctionTimedOut) {
|
|
1357
1382
|
console.warn(`[ClaudeRuntime] Correction attempt ${attempt + 1} timed out, using partial result (${correctedResult.length} chars)`);
|
|
1383
|
+
if (!correctionResultLooksUsable(correctedResult)) {
|
|
1384
|
+
correctedResult = '';
|
|
1385
|
+
verificationDegradedMessage = (0, outputLanguage_1.localize)(this.config.outputLanguage, 'Claude 修正重试超时,且没有产出可独立交付的修正报告;已保留原结论并标记为 partial。', 'Claude correction retry timed out without a deliverable corrected report; keeping the previous conclusion and marking the result partial.');
|
|
1386
|
+
}
|
|
1358
1387
|
}
|
|
1359
1388
|
// P2-G13: Compare correction quality by finding count and coverage, not text length.
|
|
1360
1389
|
// A shorter corrected conclusion with more findings is better than a longer empty one.
|
|
@@ -1433,14 +1462,66 @@ class ClaudeRuntime extends events_1.EventEmitter {
|
|
|
1433
1462
|
timestamp: Date.now(),
|
|
1434
1463
|
});
|
|
1435
1464
|
}
|
|
1465
|
+
let isRuntimePartialResult = isPartialResult;
|
|
1466
|
+
if (verificationDegradedMessage && !isRuntimePartialResult) {
|
|
1467
|
+
isRuntimePartialResult = true;
|
|
1468
|
+
terminationMessage = terminationMessage
|
|
1469
|
+
? `${terminationMessage}\n\n${verificationDegradedMessage}`
|
|
1470
|
+
: verificationDegradedMessage;
|
|
1471
|
+
conclusionText = conclusionText.trim()
|
|
1472
|
+
? (0, analysisTermination_1.prependPartialNotice)(conclusionText, verificationDegradedMessage, this.config.outputLanguage)
|
|
1473
|
+
: (0, analysisTermination_1.buildMaxTurnsFallbackConclusion)({
|
|
1474
|
+
mode: 'full',
|
|
1475
|
+
turns: rounds,
|
|
1476
|
+
maxTurns: this.config.maxTurns,
|
|
1477
|
+
outputLanguage: this.config.outputLanguage,
|
|
1478
|
+
});
|
|
1479
|
+
mergedFindings = (0, claudeFindingExtractor_1.mergeFindings)([(0, claudeFindingExtractor_1.extractFindingsFromText)(conclusionText)]);
|
|
1480
|
+
this.emitUpdate({
|
|
1481
|
+
type: 'degraded',
|
|
1482
|
+
content: {
|
|
1483
|
+
module: 'claudeRuntime',
|
|
1484
|
+
fallback: 'correction_timeout_without_deliverable_report',
|
|
1485
|
+
message: verificationDegradedMessage,
|
|
1486
|
+
partial: true,
|
|
1487
|
+
},
|
|
1488
|
+
timestamp: Date.now(),
|
|
1489
|
+
});
|
|
1490
|
+
}
|
|
1436
1491
|
if (options.codeAwareMode && options.codeAwareMode !== 'off') {
|
|
1437
1492
|
conclusionText = (0, codeAwareOutputRegistry_1.sanitizeCodeAwareText)(sessionId, conclusionText);
|
|
1438
1493
|
mergedFindings = (0, claudeFindingExtractor_1.mergeFindings)([(0, claudeFindingExtractor_1.extractFindingsFromText)(conclusionText)]);
|
|
1439
1494
|
}
|
|
1440
1495
|
const baseConfidence = this.estimateConfidence(mergedFindings);
|
|
1441
|
-
const turnConfidence =
|
|
1496
|
+
const turnConfidence = isRuntimePartialResult
|
|
1442
1497
|
? (0, analysisTermination_1.capPartialConfidence)(baseConfidence, mergedFindings.length > 0)
|
|
1443
1498
|
: baseConfidence;
|
|
1499
|
+
const finalAnalysisResult = {
|
|
1500
|
+
sessionId,
|
|
1501
|
+
success: true,
|
|
1502
|
+
findings: mergedFindings,
|
|
1503
|
+
hypotheses: (this.sessionHypotheses.get(sessionId) || []).map(h => this.toProtocolHypothesis(h)),
|
|
1504
|
+
conclusion: conclusionText,
|
|
1505
|
+
confidence: turnConfidence,
|
|
1506
|
+
rounds,
|
|
1507
|
+
totalDurationMs: Date.now() - startTime,
|
|
1508
|
+
partial: isRuntimePartialResult || undefined,
|
|
1509
|
+
terminationReason,
|
|
1510
|
+
terminationMessage,
|
|
1511
|
+
};
|
|
1512
|
+
const gateIssue = (0, finalResultQualityGate_1.applyFinalResultQualityGate)({ result: finalAnalysisResult, query });
|
|
1513
|
+
if (gateIssue) {
|
|
1514
|
+
this.emitUpdate({
|
|
1515
|
+
type: 'degraded',
|
|
1516
|
+
content: {
|
|
1517
|
+
module: 'claudeRuntime',
|
|
1518
|
+
fallback: gateIssue.code,
|
|
1519
|
+
message: gateIssue.message,
|
|
1520
|
+
partial: true,
|
|
1521
|
+
},
|
|
1522
|
+
timestamp: Date.now(),
|
|
1523
|
+
});
|
|
1524
|
+
}
|
|
1444
1525
|
ctx.sessionContext.addTurn(query, {
|
|
1445
1526
|
primaryGoal: query,
|
|
1446
1527
|
aspects: [],
|
|
@@ -1449,34 +1530,36 @@ class ClaudeRuntime extends events_1.EventEmitter {
|
|
|
1449
1530
|
followUpType: ctx.previousTurns.length > 0 ? 'extend' : 'initial',
|
|
1450
1531
|
}, {
|
|
1451
1532
|
agentId: 'claude-agent',
|
|
1452
|
-
success:
|
|
1453
|
-
findings:
|
|
1454
|
-
confidence:
|
|
1455
|
-
message:
|
|
1456
|
-
partial:
|
|
1457
|
-
terminationReason,
|
|
1458
|
-
terminationMessage,
|
|
1459
|
-
},
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1533
|
+
success: finalAnalysisResult.success,
|
|
1534
|
+
findings: finalAnalysisResult.findings,
|
|
1535
|
+
confidence: finalAnalysisResult.confidence,
|
|
1536
|
+
message: finalAnalysisResult.conclusion,
|
|
1537
|
+
partial: finalAnalysisResult.partial,
|
|
1538
|
+
terminationReason: finalAnalysisResult.terminationReason,
|
|
1539
|
+
terminationMessage: finalAnalysisResult.terminationMessage,
|
|
1540
|
+
}, finalAnalysisResult.findings);
|
|
1541
|
+
if (finalAnalysisResult.partial !== true) {
|
|
1542
|
+
ctx.sessionContext.updateWorkingMemoryFromConclusion({
|
|
1543
|
+
turnIndex: ctx.previousTurns.length,
|
|
1544
|
+
query,
|
|
1545
|
+
conclusion: finalAnalysisResult.conclusion,
|
|
1546
|
+
confidence: finalAnalysisResult.confidence,
|
|
1547
|
+
});
|
|
1548
|
+
}
|
|
1466
1549
|
// P2-2: Save analysis pattern to long-term memory (fire-and-forget)
|
|
1467
1550
|
// Note: sceneType is from the outer analyze() scope (classified before context prep)
|
|
1468
1551
|
const fullFeatures = (0, analysisPatternMemory_1.extractTraceFeatures)({
|
|
1469
1552
|
architectureType: ctx.architecture?.type,
|
|
1470
1553
|
sceneType,
|
|
1471
1554
|
packageName: options.packageName,
|
|
1472
|
-
findingTitles:
|
|
1473
|
-
findingCategories:
|
|
1555
|
+
findingTitles: finalAnalysisResult.findings.map(f => f.title),
|
|
1556
|
+
findingCategories: finalAnalysisResult.findings.map(f => f.category).filter(Boolean),
|
|
1474
1557
|
});
|
|
1475
1558
|
// Per Self-Improving v3.3 §4.4: full-path patterns now save as
|
|
1476
1559
|
// 'provisional' regardless of confidence. The state machine + 24h
|
|
1477
1560
|
// auto-confirm decides whether they earn injection weight.
|
|
1478
|
-
if (
|
|
1479
|
-
const insights = (0, analysisPatternMemory_1.extractKeyInsights)(
|
|
1561
|
+
if (finalAnalysisResult.partial !== true && finalAnalysisResult.findings.length > 0) {
|
|
1562
|
+
const insights = (0, analysisPatternMemory_1.extractKeyInsights)(finalAnalysisResult.findings, finalAnalysisResult.conclusion);
|
|
1480
1563
|
const patternExtras = {
|
|
1481
1564
|
status: 'provisional',
|
|
1482
1565
|
provenance: {
|
|
@@ -1485,7 +1568,7 @@ class ClaudeRuntime extends events_1.EventEmitter {
|
|
|
1485
1568
|
},
|
|
1486
1569
|
knowledgeScope: knowledgeScopeFromOptions(options),
|
|
1487
1570
|
};
|
|
1488
|
-
(0, analysisPatternMemory_1.saveAnalysisPattern)(fullFeatures, insights, sceneType, ctx.architecture?.type,
|
|
1571
|
+
(0, analysisPatternMemory_1.saveAnalysisPattern)(fullFeatures, insights, sceneType, ctx.architecture?.type, finalAnalysisResult.confidence, patternExtras)
|
|
1489
1572
|
.catch(err => console.warn('[ClaudeRuntime] Pattern save failed:', err.message));
|
|
1490
1573
|
// Try to promote any matching quick-path pattern that has been waiting
|
|
1491
1574
|
// for full-path verification. Best-effort — failure does not block.
|
|
@@ -1515,22 +1598,7 @@ class ClaudeRuntime extends events_1.EventEmitter {
|
|
|
1515
1598
|
})
|
|
1516
1599
|
.catch(err => console.warn('[ClaudeRuntime] Negative pattern save failed:', err.message));
|
|
1517
1600
|
}
|
|
1518
|
-
|
|
1519
|
-
// Convert agentv3 Hypothesis to agentProtocol Hypothesis format for AnalysisResult
|
|
1520
|
-
const turnHypotheses = (this.sessionHypotheses.get(sessionId) || []).map(h => this.toProtocolHypothesis(h));
|
|
1521
|
-
return {
|
|
1522
|
-
sessionId,
|
|
1523
|
-
success: true,
|
|
1524
|
-
findings: mergedFindings,
|
|
1525
|
-
hypotheses: turnHypotheses,
|
|
1526
|
-
conclusion: conclusionText,
|
|
1527
|
-
confidence: turnConfidence,
|
|
1528
|
-
rounds,
|
|
1529
|
-
totalDurationMs: Date.now() - startTime,
|
|
1530
|
-
partial: isPartialResult || undefined,
|
|
1531
|
-
terminationReason,
|
|
1532
|
-
terminationMessage,
|
|
1533
|
-
};
|
|
1601
|
+
return finalAnalysisResult;
|
|
1534
1602
|
}
|
|
1535
1603
|
catch (error) {
|
|
1536
1604
|
const rawErrorMessage = error.message || 'Unknown error';
|
|
@@ -1835,8 +1903,34 @@ class ClaudeRuntime extends events_1.EventEmitter {
|
|
|
1835
1903
|
const quickConfidence = isPartialResult
|
|
1836
1904
|
? (0, analysisTermination_1.capPartialConfidence)(quickConfidenceBase, mergedFindings.length > 0)
|
|
1837
1905
|
: quickConfidenceBase;
|
|
1838
|
-
|
|
1839
|
-
|
|
1906
|
+
const quickResult = {
|
|
1907
|
+
sessionId,
|
|
1908
|
+
success: true,
|
|
1909
|
+
findings: mergedFindings,
|
|
1910
|
+
hypotheses: [],
|
|
1911
|
+
conclusion: conclusionText,
|
|
1912
|
+
confidence: quickConfidence,
|
|
1913
|
+
rounds: quickRounds,
|
|
1914
|
+
totalDurationMs: Date.now() - startTime,
|
|
1915
|
+
partial: isPartialResult || undefined,
|
|
1916
|
+
terminationReason,
|
|
1917
|
+
terminationMessage,
|
|
1918
|
+
};
|
|
1919
|
+
const quickGateIssue = (0, finalResultQualityGate_1.applyFinalResultQualityGate)({ result: quickResult, query });
|
|
1920
|
+
if (quickGateIssue) {
|
|
1921
|
+
this.emitUpdate({
|
|
1922
|
+
type: 'degraded',
|
|
1923
|
+
content: {
|
|
1924
|
+
module: 'claudeRuntime',
|
|
1925
|
+
fallback: quickGateIssue.code,
|
|
1926
|
+
message: quickGateIssue.message,
|
|
1927
|
+
partial: true,
|
|
1928
|
+
},
|
|
1929
|
+
timestamp: Date.now(),
|
|
1930
|
+
});
|
|
1931
|
+
}
|
|
1932
|
+
if (quickResult.conclusion.length > 0 && quickResult.conclusion.length < 20) {
|
|
1933
|
+
console.warn(`[ClaudeRuntime] Quick: suspiciously short answer (${quickResult.conclusion.length} chars)`);
|
|
1840
1934
|
}
|
|
1841
1935
|
// Record turn in session context
|
|
1842
1936
|
sessionContext.addTurn(query, {
|
|
@@ -1847,27 +1941,27 @@ class ClaudeRuntime extends events_1.EventEmitter {
|
|
|
1847
1941
|
followUpType: previousTurns.length > 0 ? 'extend' : 'initial',
|
|
1848
1942
|
}, {
|
|
1849
1943
|
agentId: 'claude-agent',
|
|
1850
|
-
success:
|
|
1851
|
-
findings:
|
|
1852
|
-
confidence:
|
|
1853
|
-
message:
|
|
1854
|
-
partial:
|
|
1855
|
-
terminationReason,
|
|
1856
|
-
terminationMessage,
|
|
1857
|
-
},
|
|
1858
|
-
console.log(`[ClaudeRuntime] Quick analysis completed: ${quickRounds} rounds, ${Date.now() - startTime}ms, ${
|
|
1944
|
+
success: quickResult.success,
|
|
1945
|
+
findings: quickResult.findings,
|
|
1946
|
+
confidence: quickResult.confidence,
|
|
1947
|
+
message: quickResult.conclusion,
|
|
1948
|
+
partial: quickResult.partial,
|
|
1949
|
+
terminationReason: quickResult.terminationReason,
|
|
1950
|
+
terminationMessage: quickResult.terminationMessage,
|
|
1951
|
+
}, quickResult.findings);
|
|
1952
|
+
console.log(`[ClaudeRuntime] Quick analysis completed: ${quickRounds} rounds, ${Date.now() - startTime}ms, ${quickResult.conclusion.length} chars`);
|
|
1859
1953
|
// Quick path writes to a separate 7-day bucket — see Self-Improving v3.3 §6.
|
|
1860
1954
|
// Insights are weaker (no verifier, 10-turn budget), so they only surface
|
|
1861
1955
|
// as fallbacks at injection time. A future full-path run on similar
|
|
1862
1956
|
// features may promote the bucket entry to long-term memory.
|
|
1863
|
-
if (
|
|
1864
|
-
const insights = (0, analysisPatternMemory_1.extractKeyInsights)(
|
|
1957
|
+
if (quickResult.partial !== true && quickResult.findings.length > 0) {
|
|
1958
|
+
const insights = (0, analysisPatternMemory_1.extractKeyInsights)(quickResult.findings, quickResult.conclusion);
|
|
1865
1959
|
const quickFeatures = (0, analysisPatternMemory_1.extractTraceFeatures)({
|
|
1866
1960
|
architectureType: cachedArch?.type,
|
|
1867
1961
|
sceneType,
|
|
1868
1962
|
packageName: effectivePackageName,
|
|
1869
|
-
findingTitles:
|
|
1870
|
-
findingCategories:
|
|
1963
|
+
findingTitles: quickResult.findings.map(f => f.title),
|
|
1964
|
+
findingCategories: quickResult.findings.map(f => f.category).filter(Boolean),
|
|
1871
1965
|
});
|
|
1872
1966
|
(0, analysisPatternMemory_1.saveQuickPathPattern)(quickFeatures, insights, sceneType, cachedArch?.type, {
|
|
1873
1967
|
status: 'provisional',
|
|
@@ -1875,19 +1969,7 @@ class ClaudeRuntime extends events_1.EventEmitter {
|
|
|
1875
1969
|
knowledgeScope: knowledgeScopeFromOptions(options),
|
|
1876
1970
|
}).catch(err => console.warn('[ClaudeRuntime] Quick pattern save failed:', err.message));
|
|
1877
1971
|
}
|
|
1878
|
-
return
|
|
1879
|
-
sessionId,
|
|
1880
|
-
success: true,
|
|
1881
|
-
findings: mergedFindings,
|
|
1882
|
-
hypotheses: [],
|
|
1883
|
-
conclusion: conclusionText,
|
|
1884
|
-
confidence: quickConfidence,
|
|
1885
|
-
rounds: quickRounds,
|
|
1886
|
-
totalDurationMs: Date.now() - startTime,
|
|
1887
|
-
partial: isPartialResult || undefined,
|
|
1888
|
-
terminationReason,
|
|
1889
|
-
terminationMessage,
|
|
1890
|
-
};
|
|
1972
|
+
return quickResult;
|
|
1891
1973
|
}
|
|
1892
1974
|
catch (error) {
|
|
1893
1975
|
const rawErrorMessage = error.message || 'Unknown error';
|