soloforge 1.1.44 → 1.1.46

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 (289) hide show
  1. package/README.md +3 -3
  2. package/dist/context/contracts/lifecycle_knowledge_contract.d.ts.map +1 -1
  3. package/dist/context/contracts/lifecycle_knowledge_contract.js +2 -2
  4. package/dist/context/contracts/lifecycle_knowledge_contract.js.map +1 -1
  5. package/dist/core/task_context/manager.d.ts +0 -8
  6. package/dist/core/task_context/manager.d.ts.map +1 -1
  7. package/dist/core/task_context/manager.js +1 -19
  8. package/dist/core/task_context/manager.js.map +1 -1
  9. package/dist/core/task_context/state_fact_classifier.d.ts +0 -8
  10. package/dist/core/task_context/state_fact_classifier.d.ts.map +1 -1
  11. package/dist/core/task_context/state_fact_classifier.js +0 -36
  12. package/dist/core/task_context/state_fact_classifier.js.map +1 -1
  13. package/dist/domain/contracts/design_artifact_pack.d.ts +0 -1
  14. package/dist/domain/contracts/design_artifact_pack.d.ts.map +1 -1
  15. package/dist/domain/contracts/design_artifact_pack.js +1 -4
  16. package/dist/domain/contracts/design_artifact_pack.js.map +1 -1
  17. package/dist/domain/index.d.ts +1 -1
  18. package/dist/domain/index.d.ts.map +1 -1
  19. package/dist/domain/registry.d.ts +2 -2
  20. package/dist/domain/registry.d.ts.map +1 -1
  21. package/dist/domain/types.d.ts +1 -12
  22. package/dist/domain/types.d.ts.map +1 -1
  23. package/dist/domain/types.js +3 -0
  24. package/dist/domain/types.js.map +1 -1
  25. package/dist/gate/contracts/capability_registry.d.ts.map +1 -1
  26. package/dist/gate/contracts/capability_registry.js +0 -26
  27. package/dist/gate/contracts/capability_registry.js.map +1 -1
  28. package/dist/gate/contracts/control_plane_contract.d.ts +1 -1
  29. package/dist/gate/contracts/control_plane_contract.d.ts.map +1 -1
  30. package/dist/gate/contracts/control_plane_contract.js +1 -10
  31. package/dist/gate/contracts/control_plane_contract.js.map +1 -1
  32. package/dist/gate/contracts/tool_invocation_contract_registry.d.ts +1 -0
  33. package/dist/gate/contracts/tool_invocation_contract_registry.d.ts.map +1 -1
  34. package/dist/gate/contracts/tool_invocation_contract_registry.js +1 -1
  35. package/dist/gate/contracts/tool_invocation_contract_registry.js.map +1 -1
  36. package/dist/gate/executors/executors_annotation.d.ts.map +1 -1
  37. package/dist/gate/executors/executors_annotation.js +8 -1
  38. package/dist/gate/executors/executors_annotation.js.map +1 -1
  39. package/dist/gate/executors/executors_artifact.d.ts +1 -1
  40. package/dist/gate/executors/executors_artifact.d.ts.map +1 -1
  41. package/dist/gate/executors/executors_artifact.js +18 -7
  42. package/dist/gate/executors/executors_artifact.js.map +1 -1
  43. package/dist/gate/executors/executors_deploy.d.ts.map +1 -1
  44. package/dist/gate/executors/executors_deploy.js +3 -2
  45. package/dist/gate/executors/executors_deploy.js.map +1 -1
  46. package/dist/gate/executors/executors_openapi_sync.d.ts.map +1 -1
  47. package/dist/gate/executors/executors_openapi_sync.js +15 -2
  48. package/dist/gate/executors/executors_openapi_sync.js.map +1 -1
  49. package/dist/gate/executors/executors_regex_scan.d.ts.map +1 -1
  50. package/dist/gate/executors/executors_regex_scan.js +9 -0
  51. package/dist/gate/executors/executors_regex_scan.js.map +1 -1
  52. package/dist/gate/executors/executors_trace.d.ts.map +1 -1
  53. package/dist/gate/executors/executors_trace.js +12 -2
  54. package/dist/gate/executors/executors_trace.js.map +1 -1
  55. package/dist/gate/index.d.ts +0 -2
  56. package/dist/gate/index.d.ts.map +1 -1
  57. package/dist/gate/index.js +0 -1
  58. package/dist/gate/index.js.map +1 -1
  59. package/dist/server/tools/index.d.ts.map +1 -1
  60. package/dist/server/tools/index.js +1 -3
  61. package/dist/server/tools/index.js.map +1 -1
  62. package/dist/server/tools/lazy_loaders.d.ts +0 -23
  63. package/dist/server/tools/lazy_loaders.d.ts.map +1 -1
  64. package/dist/server/tools/lazy_loaders.js +2 -33
  65. package/dist/server/tools/lazy_loaders.js.map +1 -1
  66. package/dist/server/tools/middleware.d.ts +2 -5
  67. package/dist/server/tools/middleware.d.ts.map +1 -1
  68. package/dist/server/tools/middleware.js +3 -33
  69. package/dist/server/tools/middleware.js.map +1 -1
  70. package/dist/server/tools/sf_task.d.ts.map +1 -1
  71. package/dist/server/tools/sf_task.js +9 -8
  72. package/dist/server/tools/sf_task.js.map +1 -1
  73. package/dist/server/tools/types.d.ts +0 -2
  74. package/dist/server/tools/types.d.ts.map +1 -1
  75. package/dist/types/pipeline_types.d.ts +1 -9
  76. package/dist/types/pipeline_types.d.ts.map +1 -1
  77. package/dist/verify/audit/verifier.d.ts.map +1 -1
  78. package/dist/verify/audit/verifier.js +0 -33
  79. package/dist/verify/audit/verifier.js.map +1 -1
  80. package/dist/verify/index.d.ts +1 -4
  81. package/dist/verify/index.d.ts.map +1 -1
  82. package/dist/verify/index.js +0 -3
  83. package/dist/verify/index.js.map +1 -1
  84. package/dist/verify/types.d.ts +0 -21
  85. package/dist/verify/types.d.ts.map +1 -1
  86. package/package.json +1 -1
  87. package/templates/shared//345/206/263/347/255/226/347/275/221/345/205/263.md +7 -21
  88. package/dist/context/engine/dependency_scanner.d.ts +0 -23
  89. package/dist/context/engine/dependency_scanner.d.ts.map +0 -1
  90. package/dist/context/engine/dependency_scanner.js +0 -309
  91. package/dist/context/engine/dependency_scanner.js.map +0 -1
  92. package/dist/context/engine/exploration.d.ts +0 -194
  93. package/dist/context/engine/exploration.d.ts.map +0 -1
  94. package/dist/context/engine/exploration.js +0 -712
  95. package/dist/context/engine/exploration.js.map +0 -1
  96. package/dist/context/knowledge/knowledge_acceptance_registry.d.ts +0 -42
  97. package/dist/context/knowledge/knowledge_acceptance_registry.d.ts.map +0 -1
  98. package/dist/context/knowledge/knowledge_acceptance_registry.js +0 -249
  99. package/dist/context/knowledge/knowledge_acceptance_registry.js.map +0 -1
  100. package/dist/context/knowledge/knowledge_scenario_registry.d.ts +0 -26
  101. package/dist/context/knowledge/knowledge_scenario_registry.d.ts.map +0 -1
  102. package/dist/context/knowledge/knowledge_scenario_registry.js +0 -267
  103. package/dist/context/knowledge/knowledge_scenario_registry.js.map +0 -1
  104. package/dist/context/knowledge/knowledge_sovereignty.d.ts +0 -65
  105. package/dist/context/knowledge/knowledge_sovereignty.d.ts.map +0 -1
  106. package/dist/context/knowledge/knowledge_sovereignty.js +0 -199
  107. package/dist/context/knowledge/knowledge_sovereignty.js.map +0 -1
  108. package/dist/context/team_awareness.d.ts +0 -42
  109. package/dist/context/team_awareness.d.ts.map +0 -1
  110. package/dist/context/team_awareness.js +0 -154
  111. package/dist/context/team_awareness.js.map +0 -1
  112. package/dist/context/templates/template_asset_visibility.d.ts +0 -116
  113. package/dist/context/templates/template_asset_visibility.d.ts.map +0 -1
  114. package/dist/context/templates/template_asset_visibility.js +0 -310
  115. package/dist/context/templates/template_asset_visibility.js.map +0 -1
  116. package/dist/gate/conflict_gate.d.ts +0 -53
  117. package/dist/gate/conflict_gate.d.ts.map +0 -1
  118. package/dist/gate/conflict_gate.js +0 -96
  119. package/dist/gate/conflict_gate.js.map +0 -1
  120. package/dist/gate/contracts/capability_action_advisor.d.ts +0 -34
  121. package/dist/gate/contracts/capability_action_advisor.d.ts.map +0 -1
  122. package/dist/gate/contracts/capability_action_advisor.js +0 -165
  123. package/dist/gate/contracts/capability_action_advisor.js.map +0 -1
  124. package/dist/gate/contracts/capability_state_store.d.ts +0 -121
  125. package/dist/gate/contracts/capability_state_store.d.ts.map +0 -1
  126. package/dist/gate/contracts/capability_state_store.js +0 -188
  127. package/dist/gate/contracts/capability_state_store.js.map +0 -1
  128. package/dist/gate/contracts/contract_guard.d.ts +0 -50
  129. package/dist/gate/contracts/contract_guard.d.ts.map +0 -1
  130. package/dist/gate/contracts/contract_guard.js +0 -611
  131. package/dist/gate/contracts/contract_guard.js.map +0 -1
  132. package/dist/gate/contracts/escape_report.d.ts +0 -103
  133. package/dist/gate/contracts/escape_report.d.ts.map +0 -1
  134. package/dist/gate/contracts/escape_report.js +0 -145
  135. package/dist/gate/contracts/escape_report.js.map +0 -1
  136. package/dist/gate/feasibility_checker.d.ts +0 -27
  137. package/dist/gate/feasibility_checker.d.ts.map +0 -1
  138. package/dist/gate/feasibility_checker.js +0 -114
  139. package/dist/gate/feasibility_checker.js.map +0 -1
  140. package/dist/gate/migration_guard.d.ts +0 -22
  141. package/dist/gate/migration_guard.d.ts.map +0 -1
  142. package/dist/gate/migration_guard.js +0 -277
  143. package/dist/gate/migration_guard.js.map +0 -1
  144. package/dist/gate/scope_lease.d.ts +0 -94
  145. package/dist/gate/scope_lease.d.ts.map +0 -1
  146. package/dist/gate/scope_lease.js +0 -180
  147. package/dist/gate/scope_lease.js.map +0 -1
  148. package/dist/git/git_deps.d.ts +0 -85
  149. package/dist/git/git_deps.d.ts.map +0 -1
  150. package/dist/git/git_deps.js +0 -22
  151. package/dist/git/git_deps.js.map +0 -1
  152. package/dist/git/operations.d.ts +0 -173
  153. package/dist/git/operations.d.ts.map +0 -1
  154. package/dist/git/operations.js +0 -350
  155. package/dist/git/operations.js.map +0 -1
  156. package/dist/server/tools/gate_engine.d.ts +0 -17
  157. package/dist/server/tools/gate_engine.d.ts.map +0 -1
  158. package/dist/server/tools/gate_engine.js +0 -17
  159. package/dist/server/tools/gate_engine.js.map +0 -1
  160. package/dist/server/tools/middleware/budget_check.d.ts +0 -35
  161. package/dist/server/tools/middleware/budget_check.d.ts.map +0 -1
  162. package/dist/server/tools/middleware/budget_check.js +0 -69
  163. package/dist/server/tools/middleware/budget_check.js.map +0 -1
  164. package/dist/shared/contracts/contract_registry/builtin_contracts_core.d.ts +0 -16
  165. package/dist/shared/contracts/contract_registry/builtin_contracts_core.d.ts.map +0 -1
  166. package/dist/shared/contracts/contract_registry/builtin_contracts_core.js +0 -306
  167. package/dist/shared/contracts/contract_registry/builtin_contracts_core.js.map +0 -1
  168. package/dist/shared/contracts/contract_registry/builtin_contracts_core_2.d.ts +0 -16
  169. package/dist/shared/contracts/contract_registry/builtin_contracts_core_2.d.ts.map +0 -1
  170. package/dist/shared/contracts/contract_registry/builtin_contracts_core_2.js +0 -304
  171. package/dist/shared/contracts/contract_registry/builtin_contracts_core_2.js.map +0 -1
  172. package/dist/shared/contracts/contract_registry/builtin_contracts_extended.d.ts +0 -16
  173. package/dist/shared/contracts/contract_registry/builtin_contracts_extended.d.ts.map +0 -1
  174. package/dist/shared/contracts/contract_registry/builtin_contracts_extended.js +0 -434
  175. package/dist/shared/contracts/contract_registry/builtin_contracts_extended.js.map +0 -1
  176. package/dist/shared/contracts/contract_registry/index.d.ts +0 -8
  177. package/dist/shared/contracts/contract_registry/index.d.ts.map +0 -1
  178. package/dist/shared/contracts/contract_registry/index.js +0 -7
  179. package/dist/shared/contracts/contract_registry/index.js.map +0 -1
  180. package/dist/shared/contracts/contract_registry/registry.d.ts +0 -62
  181. package/dist/shared/contracts/contract_registry/registry.d.ts.map +0 -1
  182. package/dist/shared/contracts/contract_registry/registry.js +0 -191
  183. package/dist/shared/contracts/contract_registry/registry.js.map +0 -1
  184. package/dist/shared/contracts/contract_registry/registry_internal.d.ts +0 -19
  185. package/dist/shared/contracts/contract_registry/registry_internal.d.ts.map +0 -1
  186. package/dist/shared/contracts/contract_registry/registry_internal.js +0 -54
  187. package/dist/shared/contracts/contract_registry/registry_internal.js.map +0 -1
  188. package/dist/shared/contracts/contract_registry/types.d.ts +0 -47
  189. package/dist/shared/contracts/contract_registry/types.d.ts.map +0 -1
  190. package/dist/shared/contracts/contract_registry/types.js +0 -5
  191. package/dist/shared/contracts/contract_registry/types.js.map +0 -1
  192. package/dist/shared/contracts/contract_registry/validation.d.ts +0 -25
  193. package/dist/shared/contracts/contract_registry/validation.d.ts.map +0 -1
  194. package/dist/shared/contracts/contract_registry/validation.js +0 -363
  195. package/dist/shared/contracts/contract_registry/validation.js.map +0 -1
  196. package/dist/shared/llm_gateway.d.ts +0 -186
  197. package/dist/shared/llm_gateway.d.ts.map +0 -1
  198. package/dist/shared/llm_gateway.js +0 -393
  199. package/dist/shared/llm_gateway.js.map +0 -1
  200. package/dist/verify/audit/audit_sampler.d.ts +0 -29
  201. package/dist/verify/audit/audit_sampler.d.ts.map +0 -1
  202. package/dist/verify/audit/audit_sampler.js +0 -42
  203. package/dist/verify/audit/audit_sampler.js.map +0 -1
  204. package/dist/verify/audit/debt_reporter.d.ts +0 -22
  205. package/dist/verify/audit/debt_reporter.d.ts.map +0 -1
  206. package/dist/verify/audit/debt_reporter.js +0 -107
  207. package/dist/verify/audit/debt_reporter.js.map +0 -1
  208. package/dist/verify/audit/debugger.d.ts +0 -25
  209. package/dist/verify/audit/debugger.d.ts.map +0 -1
  210. package/dist/verify/audit/debugger.js +0 -429
  211. package/dist/verify/audit/debugger.js.map +0 -1
  212. package/dist/verify/audit/degradation.d.ts +0 -62
  213. package/dist/verify/audit/degradation.d.ts.map +0 -1
  214. package/dist/verify/audit/degradation.js +0 -78
  215. package/dist/verify/audit/degradation.js.map +0 -1
  216. package/dist/verify/audit/developer_sovereignty.d.ts +0 -29
  217. package/dist/verify/audit/developer_sovereignty.d.ts.map +0 -1
  218. package/dist/verify/audit/developer_sovereignty.js +0 -137
  219. package/dist/verify/audit/developer_sovereignty.js.map +0 -1
  220. package/dist/verify/audit/failure_report.d.ts +0 -76
  221. package/dist/verify/audit/failure_report.d.ts.map +0 -1
  222. package/dist/verify/audit/failure_report.js +0 -145
  223. package/dist/verify/audit/failure_report.js.map +0 -1
  224. package/dist/verify/audit/governance_report.d.ts +0 -110
  225. package/dist/verify/audit/governance_report.d.ts.map +0 -1
  226. package/dist/verify/audit/governance_report.js +0 -194
  227. package/dist/verify/audit/governance_report.js.map +0 -1
  228. package/dist/verify/audit/mutation_audit.d.ts +0 -40
  229. package/dist/verify/audit/mutation_audit.d.ts.map +0 -1
  230. package/dist/verify/audit/mutation_audit.js +0 -154
  231. package/dist/verify/audit/mutation_audit.js.map +0 -1
  232. package/dist/verify/audit/risk_sampler.d.ts +0 -44
  233. package/dist/verify/audit/risk_sampler.d.ts.map +0 -1
  234. package/dist/verify/audit/risk_sampler.js +0 -80
  235. package/dist/verify/audit/risk_sampler.js.map +0 -1
  236. package/dist/verify/audit/runtime_safety.d.ts +0 -89
  237. package/dist/verify/audit/runtime_safety.d.ts.map +0 -1
  238. package/dist/verify/audit/runtime_safety.js +0 -209
  239. package/dist/verify/audit/runtime_safety.js.map +0 -1
  240. package/dist/verify/audit/semantic_evidence.d.ts +0 -36
  241. package/dist/verify/audit/semantic_evidence.d.ts.map +0 -1
  242. package/dist/verify/audit/semantic_evidence.js +0 -90
  243. package/dist/verify/audit/semantic_evidence.js.map +0 -1
  244. package/dist/verify/audit/test_generator.d.ts +0 -23
  245. package/dist/verify/audit/test_generator.d.ts.map +0 -1
  246. package/dist/verify/audit/test_generator.js +0 -278
  247. package/dist/verify/audit/test_generator.js.map +0 -1
  248. package/dist/verify/audit/test_quality.d.ts +0 -49
  249. package/dist/verify/audit/test_quality.d.ts.map +0 -1
  250. package/dist/verify/audit/test_quality.js +0 -684
  251. package/dist/verify/audit/test_quality.js.map +0 -1
  252. package/dist/verify/change_coordinator.d.ts +0 -45
  253. package/dist/verify/change_coordinator.d.ts.map +0 -1
  254. package/dist/verify/change_coordinator.js +0 -168
  255. package/dist/verify/change_coordinator.js.map +0 -1
  256. package/dist/verify/contracts/decision_contract.d.ts +0 -51
  257. package/dist/verify/contracts/decision_contract.d.ts.map +0 -1
  258. package/dist/verify/contracts/decision_contract.js +0 -70
  259. package/dist/verify/contracts/decision_contract.js.map +0 -1
  260. package/dist/verify/contracts/mechanism_contract_registry/contracts-audit.d.ts +0 -17
  261. package/dist/verify/contracts/mechanism_contract_registry/contracts-audit.d.ts.map +0 -1
  262. package/dist/verify/contracts/mechanism_contract_registry/contracts-audit.js +0 -428
  263. package/dist/verify/contracts/mechanism_contract_registry/contracts-audit.js.map +0 -1
  264. package/dist/verify/contracts/mechanism_contract_registry/contracts-governance.d.ts +0 -17
  265. package/dist/verify/contracts/mechanism_contract_registry/contracts-governance.d.ts.map +0 -1
  266. package/dist/verify/contracts/mechanism_contract_registry/contracts-governance.js +0 -429
  267. package/dist/verify/contracts/mechanism_contract_registry/contracts-governance.js.map +0 -1
  268. package/dist/verify/contracts/mechanism_contract_registry/contracts-pipeline.d.ts +0 -17
  269. package/dist/verify/contracts/mechanism_contract_registry/contracts-pipeline.d.ts.map +0 -1
  270. package/dist/verify/contracts/mechanism_contract_registry/contracts-pipeline.js +0 -194
  271. package/dist/verify/contracts/mechanism_contract_registry/contracts-pipeline.js.map +0 -1
  272. package/dist/verify/contracts/mechanism_contract_registry/contracts-platform.d.ts +0 -17
  273. package/dist/verify/contracts/mechanism_contract_registry/contracts-platform.d.ts.map +0 -1
  274. package/dist/verify/contracts/mechanism_contract_registry/contracts-platform.js +0 -365
  275. package/dist/verify/contracts/mechanism_contract_registry/contracts-platform.js.map +0 -1
  276. package/dist/verify/contracts/mechanism_contract_registry/index.d.ts +0 -19
  277. package/dist/verify/contracts/mechanism_contract_registry/index.d.ts.map +0 -1
  278. package/dist/verify/contracts/mechanism_contract_registry/index.js +0 -21
  279. package/dist/verify/contracts/mechanism_contract_registry/index.js.map +0 -1
  280. package/dist/verify/contracts/mechanism_contract_registry/types.d.ts +0 -33
  281. package/dist/verify/contracts/mechanism_contract_registry/types.d.ts.map +0 -1
  282. package/dist/verify/contracts/mechanism_contract_registry/types.js +0 -5
  283. package/dist/verify/contracts/mechanism_contract_registry/types.js.map +0 -1
  284. package/dist/verify/contracts/mechanism_contract_registry/validation.d.ts +0 -38
  285. package/dist/verify/contracts/mechanism_contract_registry/validation.d.ts.map +0 -1
  286. package/dist/verify/contracts/mechanism_contract_registry/validation.js +0 -136
  287. package/dist/verify/contracts/mechanism_contract_registry/validation.js.map +0 -1
  288. package/templates/shared/LLM/351/242/204/347/256/227/347/275/221/345/205/263.md +0 -54
  289. package/templates/shared//346/265/201/345/274/217/345/277/203/350/267/263.md +0 -64
@@ -1,154 +0,0 @@
1
- /**
2
- * Team Awareness — 模块模块。
3
- *
4
- * 职责边界:
5
- * - 负责:TeamAwarenessInput 等 模块职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:上层模块按需调用
9
- * 调用谁:index、git_deps、index_manager、logger
10
- *
11
- * 数据流:输入 → TeamAwarenessInput 处理 → 输出
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- import { debug } from "../shared/logger.js";
15
- /**
16
- * 获取完整的团队态势信息,包括活动流、成员工作负载、过期分支和知识更新。
17
- * @param input - 团队态势感知输入参数
18
- * @returns 团队状态结果,包含活动流、成员工作量、过期分支、知识更新和中文摘要
19
- */
20
- export async function getTeamStatus(input) {
21
- debug("team_awareness", "getTeamStatus() 开始执行");
22
- const { projectPath, gitOps, knowledgeIndex } = input;
23
- const since = input.since ?? defaultSince();
24
- const result = {
25
- activity_feed: [],
26
- member_workloads: [],
27
- recent_knowledge: [],
28
- stale_branches: [],
29
- summary: "",
30
- };
31
- // 1. 获取活动流(近 50 条提交记录)
32
- try {
33
- const log = await gitOps.getLog(projectPath, { since, maxCount: 50 });
34
- result.activity_feed = log.map((entry) => ({
35
- author: entry.author,
36
- date: entry.date,
37
- message: entry.message,
38
- short_hash: entry.shortHash,
39
- files_changed: 0, // 单从日志无法获取变更文件数
40
- }));
41
- }
42
- catch (e) {
43
- debug("team_awareness", "读取团队活动流失败", e);
44
- }
45
- // 2. 按成员统计工作负载(提交数、活跃文件、最后活跃时间)
46
- try {
47
- const shortlog = await gitOps.getShortlog(projectPath, since);
48
- for (const { author, count } of shortlog) {
49
- try {
50
- const authorLog = await gitOps.getLog(projectPath, { author, since, maxCount: 20 });
51
- const activeFiles = extractFilesFromMessages(authorLog.map((e) => e.message));
52
- result.member_workloads.push({
53
- author,
54
- commit_count: count,
55
- active_files: activeFiles,
56
- last_active: authorLog.length > 0 ? authorLog[0].date : "",
57
- });
58
- }
59
- catch (e) {
60
- debug("team_awareness", "读取成员提交记录失败", e);
61
- }
62
- }
63
- }
64
- catch (e) {
65
- debug("team_awareness", "读取成员工作负载失败", e);
66
- }
67
- // 3. 检测过期分支(超过 30 天无新提交的分支)
68
- // 待办: getLog 没有 branch/ref 参数,无法按分支查询日志
69
- // path 过滤会将 branch.name 当作文件路径处理,结果不准确
70
- // 正确修复需在 GitOperations.getLog 中添加 `ref` 选项
71
- // 或直接使用 `git log <branch> -1 --format=%aI` 命令
72
- try {
73
- const branches = await gitOps.listBranches(projectPath);
74
- for (const branch of branches) {
75
- if (branch.isCurrent)
76
- continue; // 跳过当前分支
77
- try {
78
- const branchLog = await gitOps.getLog(projectPath, { maxCount: 1, path: branch.name });
79
- if (branchLog.length > 0) {
80
- const lastDate = new Date(branchLog[0].date);
81
- const daysSince = (Date.now() - lastDate.getTime()) / (1000 * 60 * 60 * 24);
82
- // 分支超过 30 天无新提交视为过期
83
- if (daysSince > 30) {
84
- result.stale_branches.push({
85
- name: branch.name,
86
- last_commit_date: branchLog[0].date,
87
- });
88
- }
89
- }
90
- }
91
- catch (e) {
92
- debug("team_awareness", "读取分支日志失败", e);
93
- }
94
- }
95
- }
96
- catch (e) {
97
- debug("team_awareness", "检测过期分支失败", e);
98
- }
99
- // 4. 获取近期知识条目更新(需提供知识索引)
100
- if (knowledgeIndex) {
101
- try {
102
- const allEntries = knowledgeIndex.getAllEntries();
103
- const sinceDate = new Date(since);
104
- // 合并全局和项目级知识条目,筛选在时间范围内且有 active 状态的条目
105
- const combined = [...allEntries.global, ...allEntries.project, ...allEntries.builtin];
106
- result.recent_knowledge = combined
107
- .filter((e) => e.status === "active" && new Date(e.updated_at) >= sinceDate)
108
- .map((e) => ({ name: e.name, type: e.type, updated: e.updated_at }));
109
- }
110
- catch (e) {
111
- debug("team_awareness", "读取近期知识更新失败", e);
112
- }
113
- }
114
- // 5. 生成中文摘要
115
- const parts = [];
116
- if (result.member_workloads.length > 0) {
117
- parts.push(`${result.member_workloads.length} 名活跃成员`);
118
- }
119
- if (result.stale_branches.length > 0) {
120
- parts.push(`${result.stale_branches.length} 个过期分支`);
121
- }
122
- if (result.recent_knowledge.length > 0) {
123
- parts.push(`${result.recent_knowledge.length} 条知识更新`);
124
- }
125
- result.summary = parts.length > 0 ? parts.join(",") : "暂无团队活动";
126
- return result;
127
- }
128
- /**
129
- * 计算默认的起始日期:当前时间往前推 7 天。
130
- * @returns YYYY-MM-DD 格式的日期字符串
131
- */
132
- function defaultSince() {
133
- const d = new Date();
134
- d.setDate(d.getDate() - 7);
135
- return d.toISOString().split("T")[0];
136
- }
137
- /**
138
- * 从提交消息中提取文件路径。使用正则匹配常见编程语言的文件扩展名。
139
- * @param messages - 提交消息列表
140
- * @returns 提取到的去重文件路径列表(最多 10 个)
141
- */
142
- function extractFilesFromMessages(messages) {
143
- const files = new Set();
144
- for (const msg of messages) {
145
- // 匹配常见源码文件扩展名
146
- const matches = msg.matchAll(/[\w/.-]+\.(java|ts|tsx|js|jsx|py|go|rs)/g);
147
- for (const m of matches) {
148
- files.add(m[0]);
149
- }
150
- }
151
- // 限制返回数量,避免列表过长
152
- return [...files].slice(0, 10);
153
- }
154
- //# sourceMappingURL=team_awareness.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"team_awareness.js","sourceRoot":"","sources":["../../src/context/team_awareness.ts"],"names":[],"mappings":"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"}
@@ -1,116 +0,0 @@
1
- /**
2
- * Template Asset Visibility — 模板层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:AssetVisibility 等 模板层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:模板初始化、资产注册、同步
9
- * 调用谁:node:fs、node:path、template_asset_contract_registry
10
- *
11
- * 数据流:模板文件 → 资产注册 → 消费验证 → 输出
12
- * 持久化:读写本地文件(详见代码内路径)
13
- */
14
- export type AssetVisibility = "user_project" | "soloforge_internal" | "adapter_runtime_only" | "scaffold_only" | "global_pattern";
15
- export type RuntimeVisibility = "injectable" | "index_only" | "internal_only" | "scaffold_only";
16
- export type EvidenceRole = "template_guidance" | "project_source_file" | "classification";
17
- export type LifecycleStatus = "active" | "deprecated" | "replaced_by" | "internal_only" | "quarantined";
18
- export interface AssetVisibilityMeta {
19
- asset_id: string;
20
- asset_visibility: AssetVisibility;
21
- sync_to_user_project: boolean;
22
- sync_target: "project_knowledge" | "global_patterns" | "none";
23
- runtime_visibility: RuntimeVisibility;
24
- evidence_role: EvidenceRole;
25
- user_visible: boolean;
26
- owner_mechanism_id: string;
27
- applicable_stages: string[];
28
- applicable_tech_stack: string[];
29
- source: "builtin" | "user_project" | "organization" | "generated";
30
- lifecycle_status: LifecycleStatus;
31
- }
32
- export interface VisibilityConflictResult {
33
- has_conflict: boolean;
34
- path_inference: AssetVisibility;
35
- frontmatter_declaration: AssetVisibility | null;
36
- content_keywords: AssetVisibility | null;
37
- resolution: "resolved" | "awaiting_user_confirmation" | "hard_fail";
38
- message: string;
39
- }
40
- export interface AssetVisibilityReport {
41
- total_assets: number;
42
- user_project_assets: number;
43
- soloforge_internal_assets: number;
44
- adapter_runtime_only_assets: number;
45
- scaffold_only_assets: number;
46
- global_pattern_assets: number;
47
- missing_metadata: number;
48
- visibility_conflicts: number;
49
- leaked_internal_assets: number;
50
- internal_term_violations: number;
51
- scaffold_variable_gaps: number;
52
- }
53
- export interface SyncFilterResult {
54
- copied: string[];
55
- skipped: string[];
56
- internal: string[];
57
- quarantined: string[];
58
- }
59
- /**
60
- * 判断资产是否为内部资产 — 由权威合同注册表驱动。
61
- * 合同缺失时 fail-closed: 不视为内部也不视为可发布,由调用方决定阻断策略。
62
- */
63
- export declare function isInherentlyInternal(assetPath: string): boolean;
64
- export declare function inferVisibilityFromPath(assetPath: string): {
65
- visibility: AssetVisibility;
66
- runtime: RuntimeVisibility;
67
- };
68
- /**
69
- * 内容关键词推断可见性。
70
- */
71
- export declare function inferVisibilityFromContent(content: string): AssetVisibility | null;
72
- /**
73
- * 从 frontmatter 解析显式可见性声明。
74
- */
75
- export declare function parseFrontmatterVisibility(content: string): AssetVisibility | null;
76
- /**
77
- * 可见性冲突检测 — 路径推断、frontmatter 和内容关键词三方对账。
78
- */
79
- export declare function detectVisibilityConflict(assetPath: string, content: string): VisibilityConflictResult;
80
- /**
81
- * 用户可见资产内部术语污染扫描。
82
- */
83
- export declare function scanInternalTerms(content: string): string[];
84
- /**
85
- * 按可见性过滤同步资产。
86
- */
87
- export declare function filterAssetsForUserProject(assets: AssetVisibilityMeta[]): AssetVisibilityMeta[];
88
- /**
89
- * 同步过滤 — 决定哪些资产应该复制到用户项目。
90
- */
91
- export declare function filterSyncAssets(assetPaths: string[], templateRoot: string): SyncFilterResult;
92
- /**
93
- * 可见性门禁 — 所有入口统一裁决。
94
- */
95
- export declare function checkAssetVisibilityGate(meta: AssetVisibilityMeta, route: string): boolean;
96
- /**
97
- * 按技术栈过滤 — review_rules 必须匹配技术栈。
98
- */
99
- export declare function filterByTechStack(assets: AssetVisibilityMeta[], techStack: string[]): AssetVisibilityMeta[];
100
- /**
101
- * 脚手架资产检查 — 只能由脚手架机制消费。
102
- */
103
- export declare function isScaffoldAsset(assetPath: string): boolean;
104
- /**
105
- * 包内路径检查 — scaffold 不依赖 process.cwd()/templates。
106
- */
107
- export declare function isPackageInternalPath(absPath: string, packageRoot: string): boolean;
108
- /**
109
- * 审计模板可见性。
110
- */
111
- export declare function auditTemplateVisibility(assets: AssetVisibilityMeta[]): AssetVisibilityReport;
112
- /**
113
- * 全量可见性审计 — 由权威合同注册表驱动。
114
- */
115
- export declare function auditAllTemplateAssets(templateRoot: string): AssetVisibilityReport;
116
- //# sourceMappingURL=template_asset_visibility.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"template_asset_visibility.d.ts","sourceRoot":"","sources":["../../../src/context/templates/template_asset_visibility.ts"],"names":[],"mappings":"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"}
@@ -1,310 +0,0 @@
1
- /**
2
- * Template Asset Visibility — 模板层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:AssetVisibility 等 模板层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:模板初始化、资产注册、同步
9
- * 调用谁:node:fs、node:path、template_asset_contract_registry
10
- *
11
- * 数据流:模板文件 → 资产注册 → 消费验证 → 输出
12
- * 持久化:读写本地文件(详见代码内路径)
13
- */
14
- import fs from "node:fs";
15
- import path from "node:path";
16
- // ── 内部资产识别 — 由权威合同注册表驱动 ──
17
- // 不再使用 denylist 猜测;改用 template_asset_contract_registry 的 asset_visibility 字段
18
- import { getContractByPath, getContractDecision, listTemplateAssetContracts } from "../../domain/asset_registry/template_asset_contract_registry.js";
19
- // 旧 denylist 已移除 — 全部由权威合同注册表驱动
20
- // ── 用户可见资产内部术语扫描规则 ──
21
- const INTERNAL_TERM_PATTERNS = [
22
- /\bBatch\d*\b/i,
23
- /\bvalidate-release\b/i,
24
- /\bvalidate-batch\b/i,
25
- /\bReleaseFix\b/i,
26
- /SoloForge Audit:\s*PASS/i,
27
- /掘地三尺/,
28
- /三重否定/,
29
- /变异防造假/,
30
- /\bMechanism Contract Registry\b/i,
31
- /\bConsumable Asset Registry\b/i,
32
- /\bsf_work\b/i,
33
- ];
34
- // ── 内容关键词 → 可见性推断 ──
35
- const CONTENT_VISIBILITY_KEYWORDS = [
36
- {
37
- patterns: [/\bBatch\d*\b/i, /\bvalidate-release\b/i, /\b新问题回归门\b/, /\b注册表基础设施\b/],
38
- visibility: "soloforge_internal",
39
- },
40
- {
41
- patterns: [/\bsf_work\b.*\bsf_gate\b.*\bsf_work\b/, /@sf-hard-rule/, /adapter_runtime/],
42
- visibility: "adapter_runtime_only",
43
- },
44
- ];
45
- // ── 目录默认策略 ──
46
- // ── 诊断用目录默认值 — 仅用于 inferVisibilityFromPath 的诊断输出,不作为正式门禁依据 ──
47
- const DIAGNOSTIC_DIRECTORY_DEFAULTS = {
48
- "templates/guides": { visibility: "soloforge_internal", runtime: "internal_only" },
49
- "templates/scaffolds": { visibility: "scaffold_only", runtime: "scaffold_only" },
50
- };
51
- // ── 核心函数 ──
52
- /**
53
- * 判断资产是否为内部资产 — 由权威合同注册表驱动。
54
- * 合同缺失时 fail-closed: 不视为内部也不视为可发布,由调用方决定阻断策略。
55
- */
56
- export function isInherentlyInternal(assetPath) {
57
- const normalized = assetPath.replace(/\\/g, "/");
58
- const contract = getContractByPath(normalized);
59
- if (contract) {
60
- return contract.asset_visibility === "soloforge_internal" ||
61
- contract.asset_visibility === "scaffold_only";
62
- }
63
- // 合同缺失 → fail-closed,不再猜测
64
- return false;
65
- }
66
- export function inferVisibilityFromPath(assetPath) {
67
- const normalized = assetPath.replace(/\\/g, "/");
68
- // 目录前缀匹配(仅诊断用途)
69
- for (const [dir, policy] of Object.entries(DIAGNOSTIC_DIRECTORY_DEFAULTS)) {
70
- if (!dir.includes(".md") && normalized.includes(dir))
71
- return policy;
72
- }
73
- return { visibility: "user_project", runtime: "injectable" };
74
- }
75
- /**
76
- * 内容关键词推断可见性。
77
- */
78
- export function inferVisibilityFromContent(content) {
79
- for (const rule of CONTENT_VISIBILITY_KEYWORDS) {
80
- if (rule.patterns.some((p) => p.test(content))) {
81
- return rule.visibility;
82
- }
83
- }
84
- return null;
85
- }
86
- /**
87
- * 从 frontmatter 解析显式可见性声明。
88
- */
89
- export function parseFrontmatterVisibility(content) {
90
- const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
91
- if (!fmMatch)
92
- return null;
93
- const fm = fmMatch[1];
94
- const visMatch = fm.match(/asset_visibility:\s*["']?(\w+)["']?/);
95
- if (visMatch) {
96
- const value = visMatch[1];
97
- if (["user_project", "soloforge_internal", "adapter_runtime_only", "scaffold_only", "global_pattern"].includes(value)) {
98
- return value;
99
- }
100
- }
101
- return null;
102
- }
103
- /**
104
- * 可见性冲突检测 — 路径推断、frontmatter 和内容关键词三方对账。
105
- */
106
- export function detectVisibilityConflict(assetPath, content) {
107
- // 优先使用合同注册表的权威可见性
108
- const normalized = assetPath.replace(/\\/g, "/");
109
- const contract = getContractByPath(normalized);
110
- const contractVisibility = contract?.asset_visibility ?? null;
111
- const pathInference = contractVisibility ?? inferVisibilityFromPath(assetPath).visibility;
112
- const frontmatterDeclaration = parseFrontmatterVisibility(content);
113
- const contentKeywords = inferVisibilityFromContent(content);
114
- const inferences = [pathInference, frontmatterDeclaration, contentKeywords].filter((v) => v !== null);
115
- const uniqueInferences = new Set(inferences);
116
- if (uniqueInferences.size <= 1) {
117
- return {
118
- has_conflict: false,
119
- path_inference: pathInference,
120
- frontmatter_declaration: frontmatterDeclaration,
121
- content_keywords: contentKeywords,
122
- resolution: "resolved",
123
- message: "可见性推断一致",
124
- };
125
- }
126
- // 冲突消解: 内部优先级最高
127
- const hasInternal = inferences.includes("soloforge_internal");
128
- const resolvedVisibility = hasInternal ? "soloforge_internal" : pathInference;
129
- const needsConfirmation = frontmatterDeclaration !== null && frontmatterDeclaration !== resolvedVisibility;
130
- return {
131
- has_conflict: true,
132
- path_inference: pathInference,
133
- frontmatter_declaration: frontmatterDeclaration,
134
- content_keywords: contentKeywords,
135
- resolution: needsConfirmation ? "awaiting_user_confirmation" : "hard_fail",
136
- message: needsConfirmation
137
- ? `可见性冲突: frontmatter 声明 ${frontmatterDeclaration},但路径/内容推断为 ${resolvedVisibility},需用户确认`
138
- : `可见性硬冲突: 路径=${pathInference}, frontmatter=${frontmatterDeclaration}, 内容=${contentKeywords}`,
139
- };
140
- }
141
- /**
142
- * 用户可见资产内部术语污染扫描。
143
- */
144
- export function scanInternalTerms(content) {
145
- const violations = [];
146
- for (const pattern of INTERNAL_TERM_PATTERNS) {
147
- const match = content.match(pattern);
148
- if (match) {
149
- violations.push(match[0]);
150
- }
151
- }
152
- return violations;
153
- }
154
- /**
155
- * 按可见性过滤同步资产。
156
- */
157
- export function filterAssetsForUserProject(assets) {
158
- return assets.filter((a) => a.sync_to_user_project && (a.asset_visibility === "user_project" || a.asset_visibility === "global_pattern"));
159
- }
160
- /**
161
- * 同步过滤 — 决定哪些资产应该复制到用户项目。
162
- */
163
- export function filterSyncAssets(assetPaths, templateRoot) {
164
- const result = { copied: [], skipped: [], internal: [], quarantined: [] };
165
- for (const relPath of assetPaths) {
166
- const absPath = path.join(templateRoot, relPath);
167
- if (!fs.existsSync(absPath)) {
168
- result.skipped.push(relPath);
169
- continue;
170
- }
171
- const normalized = relPath.replace(/\\/g, "/");
172
- // 合同门禁: getContractDecision 统一裁决
173
- const decision = getContractDecision(normalized);
174
- if (decision.decision === "unregistered") {
175
- result.quarantined.push(relPath);
176
- continue;
177
- }
178
- if (decision.decision === "denied") {
179
- result.internal.push(relPath);
180
- continue;
181
- }
182
- const content = fs.readFileSync(absPath, "utf-8");
183
- // 冲突检测(诊断保留)
184
- const conflict = detectVisibilityConflict(normalized, content);
185
- if (conflict.has_conflict && conflict.resolution === "hard_fail") {
186
- result.quarantined.push(relPath);
187
- continue;
188
- }
189
- // global_pattern 特殊处理
190
- if (decision.contract?.asset_visibility === "global_pattern") {
191
- result.skipped.push(relPath); // global patterns 走独立路径
192
- continue;
193
- }
194
- // 需要同步且被允许的资产
195
- if (decision.contract?.sync_to_user_project) {
196
- result.copied.push(relPath);
197
- }
198
- else {
199
- result.skipped.push(relPath);
200
- }
201
- }
202
- return result;
203
- }
204
- /**
205
- * 可见性门禁 — 所有入口统一裁决。
206
- */
207
- export function checkAssetVisibilityGate(meta, route) {
208
- // 合同门禁优先: getContractDecision 统一裁决
209
- const decision = getContractDecision(meta.asset_id.includes("/") ? meta.asset_id : "");
210
- if (meta.asset_id && decision.decision !== "allowed" && decision.decision !== "unregistered")
211
- return false;
212
- if (meta.asset_visibility === "soloforge_internal" || meta.asset_visibility === "scaffold_only")
213
- return false;
214
- if (meta.runtime_visibility === "internal_only")
215
- return false;
216
- if (meta.applicable_stages.length > 0 && !meta.applicable_stages.includes(route))
217
- return false;
218
- return true;
219
- }
220
- /**
221
- * 按技术栈过滤 — review_rules 必须匹配技术栈。
222
- */
223
- export function filterByTechStack(assets, techStack) {
224
- return assets.filter((a) => {
225
- if (a.applicable_tech_stack.length === 0)
226
- return true; // 通用规则
227
- return a.applicable_tech_stack.some((t) => techStack.includes(t));
228
- });
229
- }
230
- /**
231
- * 脚手架资产检查 — 只能由脚手架机制消费。
232
- */
233
- export function isScaffoldAsset(assetPath) {
234
- return assetPath.replace(/\\/g, "/").includes("templates/scaffolds/");
235
- }
236
- /**
237
- * 包内路径检查 — scaffold 不依赖 process.cwd()/templates。
238
- */
239
- export function isPackageInternalPath(absPath, packageRoot) {
240
- return absPath.startsWith(packageRoot);
241
- }
242
- /**
243
- * 审计模板可见性。
244
- */
245
- export function auditTemplateVisibility(assets) {
246
- const report = {
247
- total_assets: assets.length,
248
- user_project_assets: 0,
249
- soloforge_internal_assets: 0,
250
- adapter_runtime_only_assets: 0,
251
- scaffold_only_assets: 0,
252
- global_pattern_assets: 0,
253
- missing_metadata: 0,
254
- visibility_conflicts: 0,
255
- leaked_internal_assets: 0,
256
- internal_term_violations: 0,
257
- scaffold_variable_gaps: 0,
258
- };
259
- for (const a of assets) {
260
- switch (a.asset_visibility) {
261
- case "user_project":
262
- report.user_project_assets++;
263
- break;
264
- case "soloforge_internal":
265
- report.soloforge_internal_assets++;
266
- break;
267
- case "adapter_runtime_only":
268
- report.adapter_runtime_only_assets++;
269
- break;
270
- case "scaffold_only":
271
- report.scaffold_only_assets++;
272
- break;
273
- case "global_pattern":
274
- report.global_pattern_assets++;
275
- break;
276
- }
277
- if (!a.asset_id || !a.owner_mechanism_id)
278
- report.missing_metadata++;
279
- }
280
- return report;
281
- }
282
- /**
283
- * 全量可见性审计 — 由权威合同注册表驱动。
284
- */
285
- export function auditAllTemplateAssets(templateRoot) {
286
- const assets = [];
287
- if (!fs.existsSync(templateRoot)) {
288
- return auditTemplateVisibility(assets);
289
- }
290
- // 使用权威合同注册表作为单一数据源
291
- const contracts = listTemplateAssetContracts();
292
- for (const contract of contracts) {
293
- assets.push({
294
- asset_id: contract.asset_id,
295
- asset_visibility: contract.asset_visibility,
296
- sync_to_user_project: contract.sync_to_user_project,
297
- sync_target: contract.sync_target,
298
- runtime_visibility: contract.runtime_visibility,
299
- evidence_role: contract.evidence_role,
300
- user_visible: contract.user_visible,
301
- owner_mechanism_id: contract.owner_mechanism_id,
302
- applicable_stages: contract.applicable_stages,
303
- applicable_tech_stack: contract.applicable_tech_stack,
304
- source: "builtin",
305
- lifecycle_status: contract.lifecycle_status,
306
- });
307
- }
308
- return auditTemplateVisibility(assets);
309
- }
310
- //# sourceMappingURL=template_asset_visibility.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"template_asset_visibility.js","sourceRoot":"","sources":["../../../src/context/templates/template_asset_visibility.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Conflict Gate — 管线层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:GateSeverity 等 管线层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:状态机、工具层
9
- * 调用谁:diff_ownership_store、scope_lease、logger
10
- *
11
- * 数据流:用户意图 → 解析/扩展 → 执行 → 输出
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- import type { DiffOwnershipStore, ConflictReport } from "./diff_ownership_store.js";
15
- import type { ScopeLeaseStore, LeaseConflict } from "./scope_lease.js";
16
- export type GateSeverity = "advisory";
17
- export type RecommendedAction = "proceed" | "confirm_recommended" | "escalate";
18
- export interface ConflictGateEntry {
19
- source: "cas" | "lease";
20
- severity: GateSeverity;
21
- file_path: string;
22
- message: string;
23
- detail: ConflictReport | LeaseConflict;
24
- }
25
- export interface ConflictGateResult {
26
- file_path: string;
27
- has_conflict: boolean;
28
- entries: ConflictGateEntry[];
29
- recommended_action: RecommendedAction;
30
- summary: string;
31
- confirmed_at: string | null;
32
- }
33
- export declare class ConflictGate {
34
- private diffOwnership;
35
- private scopeLease;
36
- constructor(diffOwnership: DiffOwnershipStore, scopeLease: ScopeLeaseStore);
37
- /**
38
- * 写前统一检查 CAS + 租约冲突。
39
- *
40
- * @param taskId - 任务 ID
41
- * @param filePath - 待写入文件路径
42
- * @returns 冲突检测结果
43
- */
44
- preWriteGate(taskId: string, filePath: string): ConflictGateResult;
45
- /**
46
- * 标记冲突结果为已确认。
47
- *
48
- * @param result - 冲突检测结果
49
- * @returns 更新确认时间后的结果
50
- */
51
- markConfirmed(result: ConflictGateResult): ConflictGateResult;
52
- }
53
- //# sourceMappingURL=conflict_gate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conflict_gate.d.ts","sourceRoot":"","sources":["../../src/gate/conflict_gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGvE,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC;AACtC,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,qBAAqB,GAAG,UAAU,CAAC;AAE/E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,GAAG,aAAa,CAAC;CACxC;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,UAAU,CAAkB;gBAExB,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,eAAe;IAK1E;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IAgDlE;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,kBAAkB;CAO9D"}