autosnippet 3.2.7 → 3.2.9

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.
Files changed (147) hide show
  1. package/bin/cli.js +13 -5
  2. package/dashboard/dist/assets/index-BTAsOZv2.js +128 -0
  3. package/dashboard/dist/assets/index-C_72Ct98.css +1 -0
  4. package/dashboard/dist/index.html +2 -2
  5. package/lib/cli/AiScanService.js +26 -29
  6. package/lib/cli/SetupService.js +1 -1
  7. package/lib/core/AstAnalyzer.js +27 -5
  8. package/lib/core/analysis/CallEdgeResolver.js +402 -0
  9. package/lib/core/analysis/CallGraphAnalyzer.js +367 -0
  10. package/lib/core/analysis/CallSiteExtractor.js +629 -0
  11. package/lib/core/analysis/DataFlowInferrer.js +57 -0
  12. package/lib/core/analysis/ImportPathResolver.js +189 -0
  13. package/lib/core/analysis/ImportRecord.js +105 -0
  14. package/lib/core/analysis/SymbolTableBuilder.js +211 -0
  15. package/lib/core/ast/ProjectGraph.js +8 -0
  16. package/lib/core/ast/lang-dart.js +352 -5
  17. package/lib/core/ast/lang-go.js +212 -10
  18. package/lib/core/ast/lang-java.js +205 -1
  19. package/lib/core/ast/lang-kotlin.js +330 -1
  20. package/lib/core/ast/lang-python.js +31 -2
  21. package/lib/core/ast/lang-rust.js +284 -3
  22. package/lib/core/ast/lang-swift.js +180 -1
  23. package/lib/core/ast/lang-typescript.js +290 -1
  24. package/lib/core/discovery/index.js +2 -2
  25. package/lib/external/ai/AiProvider.js +66 -172
  26. package/lib/external/ai/providers/GoogleGeminiProvider.js +23 -1
  27. package/lib/external/mcp/McpServer.js +1 -0
  28. package/lib/external/mcp/handlers/bootstrap/BootstrapSession.js +1 -1
  29. package/lib/external/mcp/handlers/bootstrap/ExternalSubmissionTracker.js +3 -3
  30. package/lib/external/mcp/handlers/bootstrap/MissionBriefingBuilder.js +22 -1
  31. package/lib/external/mcp/handlers/bootstrap/pipeline/IncrementalBootstrap.js +1 -1
  32. package/lib/external/mcp/handlers/bootstrap/pipeline/dimension-configs.js +2 -1
  33. package/lib/external/mcp/handlers/bootstrap/pipeline/dimension-context.js +8 -8
  34. package/lib/external/mcp/handlers/bootstrap/pipeline/noAiFallback.js +1 -1
  35. package/lib/external/mcp/handlers/bootstrap/pipeline/orchestrator.js +311 -162
  36. package/lib/external/mcp/handlers/bootstrap/shared/bootstrap-phases.js +102 -7
  37. package/lib/external/mcp/handlers/bootstrap/shared/dimension-sop.js +1 -1
  38. package/lib/external/mcp/handlers/bootstrap-external.js +9 -2
  39. package/lib/external/mcp/handlers/bootstrap-internal.js +19 -8
  40. package/lib/external/mcp/handlers/consolidated.js +9 -0
  41. package/lib/external/mcp/handlers/dimension-complete-external.js +6 -6
  42. package/lib/external/mcp/handlers/guard.js +3 -3
  43. package/lib/external/mcp/handlers/structure.js +62 -0
  44. package/lib/external/mcp/handlers/wiki-external.js +66 -3
  45. package/lib/external/mcp/tools.js +36 -1
  46. package/lib/http/HttpServer.js +1 -1
  47. package/lib/http/middleware/requestLogger.js +1 -0
  48. package/lib/http/routes/ai.js +240 -35
  49. package/lib/http/routes/candidates.js +2 -3
  50. package/lib/http/routes/extract.js +13 -11
  51. package/lib/http/routes/modules.js +2 -2
  52. package/lib/http/routes/recipes.js +9 -5
  53. package/lib/http/routes/remote.js +149 -270
  54. package/lib/http/routes/violations.js +0 -54
  55. package/lib/http/utils/sse-sessions.js +1 -1
  56. package/lib/infrastructure/logging/Logger.js +5 -4
  57. package/lib/infrastructure/monitoring/PerformanceMonitor.js +3 -2
  58. package/lib/injection/ServiceContainer.js +70 -28
  59. package/lib/platform/ScreenCaptureService.js +177 -0
  60. package/lib/platform/ios/index.js +2 -2
  61. package/lib/platform/ios/routes/spm.js +2 -2
  62. package/lib/platform/ios/spm/PackageSwiftParser.js +14 -3
  63. package/lib/platform/ios/spm/SpmDiscoverer.js +123 -17
  64. package/lib/platform/ios/spm/{SpmService.js → SpmHelper.js} +43 -675
  65. package/lib/platform/ios/xcode/XcodeWriteUtils.js +1 -1
  66. package/lib/service/agent/AgentEventBus.js +207 -0
  67. package/lib/service/agent/AgentFactory.js +490 -0
  68. package/lib/service/agent/AgentMessage.js +240 -0
  69. package/lib/service/agent/AgentRouter.js +228 -0
  70. package/lib/service/agent/AgentRuntime.js +1016 -0
  71. package/lib/service/agent/AgentState.js +217 -0
  72. package/lib/service/agent/IntentClassifier.js +331 -0
  73. package/lib/service/agent/LarkTransport.js +389 -0
  74. package/lib/service/agent/capabilities.js +408 -0
  75. package/lib/service/{chat → agent/context}/ContextWindow.js +37 -12
  76. package/lib/service/{chat → agent/context}/ExplorationTracker.js +77 -22
  77. package/lib/service/{chat → agent/core}/ChatAgentPrompts.js +14 -2
  78. package/lib/service/agent/core/LoopContext.js +170 -0
  79. package/lib/service/agent/core/MessageAdapter.js +223 -0
  80. package/lib/service/agent/core/ToolExecutionPipeline.js +376 -0
  81. package/lib/service/{chat → agent/domain}/ChatAgentTasks.js +19 -98
  82. package/lib/service/{chat → agent/domain}/EpisodicConsolidator.js +7 -7
  83. package/lib/service/{chat → agent/domain}/EvidenceCollector.js +4 -2
  84. package/lib/service/{chat/AnalystAgent.js → agent/domain/insight-analyst.js} +37 -172
  85. package/lib/service/{chat/HandoffProtocol.js → agent/domain/insight-gate.js} +91 -123
  86. package/lib/service/agent/domain/insight-producer.js +267 -0
  87. package/lib/service/agent/domain/scan-prompts.js +105 -0
  88. package/lib/service/agent/forced-summary.js +266 -0
  89. package/lib/service/agent/index.js +91 -0
  90. package/lib/service/{chat → agent}/memory/ActiveContext.js +3 -1
  91. package/lib/service/{chat → agent}/memory/MemoryCoordinator.js +7 -7
  92. package/lib/service/{chat/ProjectSemanticMemory.js → agent/memory/PersistentMemory.js} +359 -89
  93. package/lib/service/{chat → agent}/memory/SessionStore.js +5 -4
  94. package/lib/service/{chat → agent}/memory/index.js +1 -1
  95. package/lib/service/agent/policies.js +442 -0
  96. package/lib/service/agent/presets.js +303 -0
  97. package/lib/service/agent/strategies.js +717 -0
  98. package/lib/service/{chat → agent/tools}/ToolRegistry.js +3 -3
  99. package/lib/service/agent/tools/ai-analysis.js +75 -0
  100. package/lib/service/{chat → agent}/tools/ast-graph.js +229 -32
  101. package/lib/service/{chat → agent}/tools/composite.js +2 -1
  102. package/lib/service/{chat → agent}/tools/guard.js +1 -121
  103. package/lib/service/{chat → agent}/tools/index.js +33 -22
  104. package/lib/service/{chat → agent}/tools/infrastructure.js +6 -1
  105. package/lib/service/agent/tools/knowledge-graph.js +112 -0
  106. package/lib/service/agent/tools/scan-recipe.js +189 -0
  107. package/lib/service/agent/tools/system-interaction.js +476 -0
  108. package/lib/service/automation/DirectiveDetector.js +0 -1
  109. package/lib/service/automation/FileWatcher.js +0 -8
  110. package/lib/service/automation/handlers/CreateHandler.js +7 -3
  111. package/lib/service/automation/handlers/DraftHandler.js +7 -6
  112. package/lib/service/cursor/CursorDeliveryPipeline.js +167 -1
  113. package/lib/service/knowledge/CodeEntityGraph.js +327 -2
  114. package/lib/service/knowledge/KnowledgeService.js +5 -1
  115. package/lib/service/module/ModuleService.js +49 -73
  116. package/lib/service/skills/SignalCollector.js +26 -19
  117. package/lib/service/snippet/codecs/VSCodeCodec.js +1 -1
  118. package/lib/service/wiki/WikiGenerator.js +1 -1
  119. package/lib/shared/FieldSpec.js +1 -1
  120. package/lib/shared/PathGuard.js +1 -1
  121. package/lib/shared/StyleGuide.js +1 -1
  122. package/package.json +4 -1
  123. package/resources/native-ui/screenshot.swift +228 -0
  124. package/dashboard/dist/assets/index-BaGY7kJI.css +0 -1
  125. package/dashboard/dist/assets/index-DfHY_3ln.js +0 -128
  126. package/lib/core/discovery/SpmDiscoverer.js +0 -5
  127. package/lib/external/mcp/handlers/bootstrap/pipeline/EpisodicMemory.js +0 -749
  128. package/lib/external/mcp/handlers/bootstrap/pipeline/ToolResultCache.js +0 -277
  129. package/lib/http/routes/spm.js +0 -5
  130. package/lib/infrastructure/external/XcodeAutomation.js +0 -15
  131. package/lib/service/chat/ChatAgent.js +0 -1602
  132. package/lib/service/chat/Memory.js +0 -161
  133. package/lib/service/chat/ProducerAgent.js +0 -431
  134. package/lib/service/chat/ReasoningTrace.js +0 -523
  135. package/lib/service/chat/TaskPipeline.js +0 -357
  136. package/lib/service/chat/WorkingMemory.js +0 -357
  137. package/lib/service/chat/memory/PersistentMemory.js +0 -450
  138. package/lib/service/chat/tools/ai-analysis.js +0 -267
  139. package/lib/service/chat/tools/knowledge-graph.js +0 -234
  140. package/lib/service/chat/tools.js +0 -18
  141. package/lib/service/snippet/PlaceholderConverter.js +0 -5
  142. package/lib/service/snippet/codecs/XcodeCodec.js +0 -5
  143. /package/lib/service/{chat → agent}/ConversationStore.js +0 -0
  144. /package/lib/service/{chat → agent}/tools/_shared.js +0 -0
  145. /package/lib/service/{chat → agent}/tools/lifecycle.js +0 -0
  146. /package/lib/service/{chat → agent}/tools/project-access.js +0 -0
  147. /package/lib/service/{chat → agent}/tools/query.js +0 -0
@@ -0,0 +1,91 @@
1
+ /**
2
+ * AutoSnippet Agent 模块 — 统一出口
3
+ *
4
+ * @module service/agent
5
+ *
6
+ * 统一架构: ONE Runtime, 多种配置
7
+ *
8
+ * ┌──────── Transport ────────┐
9
+ * │ HTTP│Lark│CLI│MCP│... │ ← 渠道适配 (AgentMessage)
10
+ * └──────────┬────────────────┘
11
+ * │
12
+ * ┌──────────▼────────────────┐
13
+ * │ AgentRouter │ ← 意图 → Preset
14
+ * └──────────┬────────────────┘
15
+ * │
16
+ * ┌──────────▼────────────────┐
17
+ * │ AgentFactory │ ← Preset + DI → Runtime
18
+ * └──────────┬────────────────┘
19
+ * │
20
+ * ┌──────────▼────────────────────────────────────────┐
21
+ * │ AgentRuntime │
22
+ * │ │
23
+ * │ ┌──────────┐ ┌───────────┐ ┌────────────────┐ │
24
+ * │ │Capability│ │ Strategy │ │ Policy │ │
25
+ * │ │ 技能模块 │ │ 执行策略 │ │ 约束引擎 │ │
26
+ * │ ├──────────┤ ├───────────┤ ├────────────────┤ │
27
+ * │ │• 对话 │ │• Single │ │• Budget 预算 │ │
28
+ * │ │• 代码分析│ │• Pipeline │ │• Safety 安全 │ │
29
+ * │ │• 知识生产│ │• FanOut │ │• Quality 质量 │ │
30
+ * │ │• 系统交互│ │• Adaptive │ │ │ │
31
+ * │ └──────────┘ └───────────┘ └────────────────┘ │
32
+ * │ │
33
+ * │ ┌─────────────────────────────────────────┐ │
34
+ * │ │ ReAct Loop (Thought→Action→Observe) │ │
35
+ * │ └─────────────────────────────────────────┘ │
36
+ * └───────────────────────────────────────────────────┘
37
+ * │
38
+ * ┌──────────▼────────────────┐
39
+ * │ AgentState + EventBus │ ← 状态机 + 事件通信
40
+ * └──────────────────────────-┘
41
+ *
42
+ * Preset 配置表:
43
+ * | Preset | Capabilities | Strategy | Policies |
44
+ * |--------------|----------------------|-------------|------------------|
45
+ * | chat | Conv + Analysis | Single | Budget(8轮) |
46
+ * | bootstrap | Analysis + Knowledge | FanOut+Pipe | Budget+Quality |
47
+ * | scan | Analysis + Knowledge | Pipeline | Budget+Quality |
48
+ * | remote-exec | Conv+Analysis+System | Single | Budget+Safety |
49
+ */
50
+
51
+ // ── Infrastructure ──
52
+ export { AgentState, AgentPhase } from './AgentState.js';
53
+ export { AgentEventBus, AgentEvents } from './AgentEventBus.js';
54
+ export { AgentMessage, Channel } from './AgentMessage.js';
55
+
56
+ // ── Core ──
57
+ export { AgentRuntime } from './AgentRuntime.js';
58
+ export { AgentRouter, PresetName } from './AgentRouter.js';
59
+ export { AgentFactory } from './AgentFactory.js';
60
+
61
+ // ── Capabilities ──
62
+ export {
63
+ Capability,
64
+ Conversation,
65
+ CodeAnalysis,
66
+ KnowledgeProduction,
67
+ SystemInteraction,
68
+ CapabilityRegistry,
69
+ } from './capabilities.js';
70
+
71
+ // ── Strategies ──
72
+ export {
73
+ Strategy,
74
+ SingleStrategy,
75
+ PipelineStrategy,
76
+ FanOutStrategy,
77
+ AdaptiveStrategy,
78
+ StrategyRegistry,
79
+ } from './strategies.js';
80
+
81
+ // ── Policies ──
82
+ export {
83
+ Policy,
84
+ BudgetPolicy,
85
+ SafetyPolicy,
86
+ QualityGatePolicy,
87
+ PolicyEngine,
88
+ } from './policies.js';
89
+
90
+ // ── Presets ──
91
+ export { PRESETS, getPreset, resolveStrategy } from './presets.js';
@@ -322,9 +322,11 @@ export class ActiveContext {
322
322
  * @param {number} [round=0] - 当前轮次
323
323
  */
324
324
  noteKeyFinding(finding, evidence = '', importance = 5, round = 0) {
325
+ // P0 Fix: 防御性保证 evidence 是 string (AI 可能传入 array/object)
326
+ const safeEvidence = typeof evidence === 'string' ? evidence : Array.isArray(evidence) ? evidence.join(', ') : evidence ? String(evidence) : '';
325
327
  this.#scratchpad.push({
326
328
  finding,
327
- evidence,
329
+ evidence: safeEvidence,
328
330
  importance: Math.min(10, Math.max(1, importance)),
329
331
  round,
330
332
  });
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * 生命周期:
11
11
  * - Bootstrap 模式: 会话级 (orchestrator 创建, 贯穿所有维度)
12
- * - User Chat 模式: 实例级 (ChatAgent 构造函数创建)
12
+ * - User Chat 模式: 实例级 (AgentRuntime 创建)
13
13
  *
14
14
  * @module MemoryCoordinator
15
15
  */
@@ -53,7 +53,7 @@ const NON_CACHEABLE_TOOLS = new Set([
53
53
  'get_previous_evidence',
54
54
  ]);
55
55
 
56
- // ── 写入路由: 规则匹配模式 (from ChatAgent.#extractMemory) ──
56
+ // ── 写入路由: 规则匹配模式 ──
57
57
 
58
58
  const PREFERENCE_PATTERNS = [
59
59
  /我们(项目|团队)?(不用|不使用|禁止|避免|偏好|习惯|规范是)/,
@@ -81,7 +81,7 @@ export class MemoryCoordinator {
81
81
  #budgetAllocation;
82
82
 
83
83
  // ── Tier 3: Persistent (跨会话) ──
84
- #persistentMemory; // PersistentMemory (extends ProjectSemanticMemory)
84
+ #persistentMemory; // PersistentMemory
85
85
  #conversationLog; // ConversationStore
86
86
 
87
87
  // ── Tier 2: Session (会话级) ──
@@ -96,7 +96,7 @@ export class MemoryCoordinator {
96
96
 
97
97
  /**
98
98
  * @param {object} config
99
- * @param {object} [config.persistentMemory] — PersistentMemory / ProjectSemanticMemory 实例
99
+ * @param {object} [config.persistentMemory] — PersistentMemory 实例
100
100
  * @param {object} [config.sessionStore] — SessionStore 实例 (bootstrap 模式)
101
101
  * @param {object} [config.conversationLog] — ConversationStore 实例
102
102
  * @param {'user'|'bootstrap'} [config.mode='bootstrap']
@@ -125,7 +125,7 @@ export class MemoryCoordinator {
125
125
  // ═══════════════════════════════════════════════════════════
126
126
 
127
127
  /**
128
- * 配置总预算 (由 ChatAgent.execute 入口调用)
128
+ * 配置总预算 (由 AgentRuntime.execute 入口调用)
129
129
  * @param {object} options
130
130
  * @param {number} options.totalContextBudget — 模型总上下文 token 数
131
131
  * @param {string} [options.model]
@@ -327,7 +327,7 @@ export class MemoryCoordinator {
327
327
  }
328
328
 
329
329
  /**
330
- * 从对话中提取记忆 (迁移自 ChatAgent.#extractMemory)
330
+ * 从对话中提取记忆
331
331
  *
332
332
  * 写入路由 (WriteRouter):
333
333
  * - 规则 1: 只在 user 源触发规则匹配 (B4 fix)
@@ -520,7 +520,7 @@ export class MemoryCoordinator {
520
520
  }
521
521
 
522
522
  /**
523
- * 获取 PersistentMemory / ProjectSemanticMemory
523
+ * 获取 PersistentMemory
524
524
  * @returns {object|null}
525
525
  */
526
526
  getPersistentMemory() {