soloforge 1.2.14 → 1.2.16

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 (42) hide show
  1. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  2. package/dist/adapters/claude_code/tools.js +7 -0
  3. package/dist/adapters/claude_code/tools.js.map +1 -1
  4. package/dist/bin/soloforge.js +0 -0
  5. package/dist/engine/batch1_scenario_registry.d.ts +14 -0
  6. package/dist/engine/batch1_scenario_registry.d.ts.map +1 -1
  7. package/dist/engine/batch1_scenario_registry.js +12 -0
  8. package/dist/engine/batch1_scenario_registry.js.map +1 -1
  9. package/dist/engine/batch1_scenario_runners.d.ts.map +1 -1
  10. package/dist/engine/batch1_scenario_runners.js +9 -3
  11. package/dist/engine/batch1_scenario_runners.js.map +1 -1
  12. package/dist/engine/intent_router.d.ts +6 -6
  13. package/dist/engine/intent_router.d.ts.map +1 -1
  14. package/dist/engine/task_context.d.ts +6 -0
  15. package/dist/engine/task_context.d.ts.map +1 -1
  16. package/dist/engine/task_context.js +43 -0
  17. package/dist/engine/task_context.js.map +1 -1
  18. package/package.json +1 -1
  19. package/dist/engine/adr_recorder.d.ts +0 -13
  20. package/dist/engine/adr_recorder.d.ts.map +0 -1
  21. package/dist/engine/adr_recorder.js +0 -132
  22. package/dist/engine/adr_recorder.js.map +0 -1
  23. package/dist/engine/batch1_reality_gate.d.ts +0 -40
  24. package/dist/engine/batch1_reality_gate.d.ts.map +0 -1
  25. package/dist/engine/batch1_reality_gate.js +0 -290
  26. package/dist/engine/batch1_reality_gate.js.map +0 -1
  27. package/dist/engine/prompt_experiment.d.ts +0 -18
  28. package/dist/engine/prompt_experiment.d.ts.map +0 -1
  29. package/dist/engine/prompt_experiment.js +0 -127
  30. package/dist/engine/prompt_experiment.js.map +0 -1
  31. package/dist/engine/resilience.d.ts +0 -20
  32. package/dist/engine/resilience.d.ts.map +0 -1
  33. package/dist/engine/resilience.js +0 -210
  34. package/dist/engine/resilience.js.map +0 -1
  35. package/dist/engine/workspace_manager.d.ts +0 -29
  36. package/dist/engine/workspace_manager.d.ts.map +0 -1
  37. package/dist/engine/workspace_manager.js +0 -77
  38. package/dist/engine/workspace_manager.js.map +0 -1
  39. package/dist/utils/logger.d.ts +0 -3
  40. package/dist/utils/logger.d.ts.map +0 -1
  41. package/dist/utils/logger.js +0 -29
  42. package/dist/utils/logger.js.map +0 -1
@@ -1,210 +0,0 @@
1
- const ALL_COMPONENTS = [
2
- "scope_controller",
3
- "secret_detection",
4
- "intent_expander",
5
- "verifier",
6
- "evolver",
7
- "code_reviewer",
8
- ];
9
- /**
10
- * Ordering from best to worst degradation level, used to determine "worst" level.
11
- */
12
- const LEVEL_SEVERITY = {
13
- full: 0,
14
- partial: 1,
15
- minimal: 2,
16
- };
17
- function worseLevel(a, b) {
18
- return LEVEL_SEVERITY[a] >= LEVEL_SEVERITY[b] ? a : b;
19
- }
20
- // ── Per-component checks ──
21
- function checkScopeController(context) {
22
- return {
23
- component: "scope_controller",
24
- level: "full",
25
- reason: "安全组件永不降级",
26
- since: context.created_at,
27
- };
28
- }
29
- function checkSecretDetection(context) {
30
- return {
31
- component: "secret_detection",
32
- level: "full",
33
- reason: "安全组件永不降级",
34
- since: context.created_at,
35
- };
36
- }
37
- function checkIntentExpander(context) {
38
- if (context.expansion?.degraded) {
39
- return {
40
- component: "intent_expander",
41
- level: "partial",
42
- reason: "未匹配到知识,使用最小 scope + 基础验收",
43
- since: context.created_at,
44
- };
45
- }
46
- return {
47
- component: "intent_expander",
48
- level: "full",
49
- reason: "正常",
50
- since: context.created_at,
51
- };
52
- }
53
- function checkVerifier(context) {
54
- const verification = context.verification;
55
- if (!verification) {
56
- return {
57
- component: "verifier",
58
- level: "full",
59
- reason: "正常",
60
- since: context.created_at,
61
- };
62
- }
63
- const hasBuild = verification.checks.build.length > 0;
64
- const hasTests = verification.checks.tests.length > 0;
65
- const hasAcceptance = (verification.checks.acceptance ?? []).length > 0;
66
- if (!hasBuild && !hasTests && !hasAcceptance) {
67
- return {
68
- component: "verifier",
69
- level: "minimal",
70
- reason: "构建命令不可用",
71
- since: context.created_at,
72
- };
73
- }
74
- if (hasBuild && !hasTests && !hasAcceptance) {
75
- return {
76
- component: "verifier",
77
- level: "partial",
78
- reason: "仅基础编译验证",
79
- since: context.created_at,
80
- };
81
- }
82
- return {
83
- component: "verifier",
84
- level: "full",
85
- reason: "正常",
86
- since: context.created_at,
87
- };
88
- }
89
- function checkEvolver(context) {
90
- const failures = context.execution?.failure_history?.length ?? 0;
91
- if (context.status === "failed") {
92
- return {
93
- component: "evolver",
94
- level: "minimal",
95
- reason: "任务失败,暂停自进化",
96
- since: context.created_at,
97
- };
98
- }
99
- if (failures > 0) {
100
- return {
101
- component: "evolver",
102
- level: "partial",
103
- reason: "存在修复循环,学习置信度降低",
104
- since: context.created_at,
105
- };
106
- }
107
- return {
108
- component: "evolver",
109
- level: "full",
110
- reason: "正常",
111
- since: context.created_at,
112
- };
113
- }
114
- function checkCodeReviewer(context) {
115
- if (context.code_review) {
116
- return {
117
- component: "code_reviewer",
118
- level: "full",
119
- reason: "正常",
120
- since: context.created_at,
121
- };
122
- }
123
- if (context.status === "done" || context.status === "failed") {
124
- return {
125
- component: "code_reviewer",
126
- level: "minimal",
127
- reason: "代码审查已跳过",
128
- since: context.created_at,
129
- };
130
- }
131
- return {
132
- component: "code_reviewer",
133
- level: "full",
134
- reason: "待执行",
135
- since: context.created_at,
136
- };
137
- }
138
- const COMPONENT_CHECKERS = {
139
- scope_controller: checkScopeController,
140
- secret_detection: checkSecretDetection,
141
- intent_expander: checkIntentExpander,
142
- verifier: checkVerifier,
143
- evolver: checkEvolver,
144
- code_reviewer: checkCodeReviewer,
145
- };
146
- // ── Public API ──
147
- /**
148
- * Analyzes a single TaskContext and returns degradation status for each component.
149
- *
150
- * This is a diagnostic function -- the actual degradation behavior is embedded
151
- * in each component. Components that must never degrade (scope_controller,
152
- * secret_detection) always return "full".
153
- */
154
- export function checkDegradation(context) {
155
- return ALL_COMPONENTS.map((component) => COMPONENT_CHECKERS[component](context));
156
- }
157
- /**
158
- * Takes multiple TaskContexts (e.g., recent tasks) and determines overall system
159
- * degradation by taking the worst level for each component across all contexts.
160
- *
161
- * Returns the aggregated component statuses and a human-readable summary in Chinese.
162
- */
163
- export function checkSystemDegradation(contexts) {
164
- if (contexts.length === 0) {
165
- return {
166
- components: [],
167
- summary: "无任务数据,无法评估系统降级状态",
168
- };
169
- }
170
- // Collect per-context results and aggregate by worst level per component.
171
- const aggregated = new Map();
172
- for (const ctx of contexts) {
173
- const statuses = checkDegradation(ctx);
174
- for (const status of statuses) {
175
- const existing = aggregated.get(status.component);
176
- if (!existing) {
177
- aggregated.set(status.component, { ...status });
178
- }
179
- else {
180
- aggregated.set(status.component, {
181
- component: status.component,
182
- level: worseLevel(existing.level, status.level),
183
- reason: status.level !== "full" ? status.reason : existing.reason,
184
- since: existing.since,
185
- });
186
- }
187
- }
188
- }
189
- const components = ALL_COMPONENTS.map((name) => aggregated.get(name));
190
- // Build Chinese summary.
191
- const degraded = components.filter((c) => c.level !== "full");
192
- let summary;
193
- if (degraded.length === 0) {
194
- summary = "所有组件运行正常,无降级";
195
- }
196
- else {
197
- const partial = degraded.filter((c) => c.level === "partial");
198
- const minimal = degraded.filter((c) => c.level === "minimal");
199
- const parts = [];
200
- if (minimal.length > 0) {
201
- parts.push(`${minimal.length} 个组件处于最低功能模式:${minimal.map((c) => c.component).join("、")}`);
202
- }
203
- if (partial.length > 0) {
204
- parts.push(`${partial.length} 个组件部分降级:${partial.map((c) => c.component).join("、")}`);
205
- }
206
- summary = parts.join(";");
207
- }
208
- return { components, summary };
209
- }
210
- //# sourceMappingURL=resilience.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resilience.js","sourceRoot":"","sources":["../../src/engine/resilience.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- import type { ProjectConfig, WorkspaceConfig } from "../types.js";
2
- /**
3
- * Build a WorkspaceConfig from a ProjectConfig.
4
- *
5
- * - If `config.repos` has entries, each repo becomes a product.
6
- * - If `config.repos` is empty but both backend and frontend scopes have
7
- * non-empty paths, two products ("backend" / "frontend") are created.
8
- * - shared_knowledge defaults to ["*"].
9
- */
10
- export declare function initWorkspace(config: ProjectConfig): WorkspaceConfig;
11
- /**
12
- * Resolve which product a file path belongs to.
13
- *
14
- * The path is normalised (forward slashes, leading "./" stripped) and then
15
- * matched against each product's `paths` array. The first matching product
16
- * name is returned, or null if none match.
17
- */
18
- export declare function resolveProduct(filePath: string, workspace: WorkspaceConfig): string | null;
19
- /**
20
- * Determine the knowledge scope for a given product.
21
- *
22
- * - "isolated": own = [product name], shared = []
23
- * - "shared": own = [product name], shared = workspace.shared_knowledge
24
- */
25
- export declare function getKnowledgeScope(product: string, workspace: WorkspaceConfig): {
26
- own: string[];
27
- shared: string[];
28
- };
29
- //# sourceMappingURL=workspace_manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace_manager.d.ts","sourceRoot":"","sources":["../../src/engine/workspace_manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAElE;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAsCpE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,eAAe,GACzB,MAAM,GAAG,IAAI,CAaf;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,eAAe,GACzB;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAQrC"}
@@ -1,77 +0,0 @@
1
- /**
2
- * Build a WorkspaceConfig from a ProjectConfig.
3
- *
4
- * - If `config.repos` has entries, each repo becomes a product.
5
- * - If `config.repos` is empty but both backend and frontend scopes have
6
- * non-empty paths, two products ("backend" / "frontend") are created.
7
- * - shared_knowledge defaults to ["*"].
8
- */
9
- export function initWorkspace(config) {
10
- const products = [];
11
- if (config.repos.length > 0) {
12
- for (const repo of config.repos) {
13
- products.push({
14
- name: repo.name,
15
- profile: config.product_profile,
16
- paths: repo.scope,
17
- knowledge_scope: "shared",
18
- });
19
- }
20
- }
21
- else if (config.scope.backend.length > 0 ||
22
- config.scope.frontend.length > 0) {
23
- if (config.scope.backend.length > 0) {
24
- products.push({
25
- name: "backend",
26
- profile: config.product_profile,
27
- paths: config.scope.backend,
28
- knowledge_scope: "shared",
29
- });
30
- }
31
- if (config.scope.frontend.length > 0) {
32
- products.push({
33
- name: "frontend",
34
- profile: config.product_profile,
35
- paths: config.scope.frontend,
36
- knowledge_scope: "shared",
37
- });
38
- }
39
- }
40
- return {
41
- products,
42
- shared_knowledge: ["*"],
43
- };
44
- }
45
- /**
46
- * Resolve which product a file path belongs to.
47
- *
48
- * The path is normalised (forward slashes, leading "./" stripped) and then
49
- * matched against each product's `paths` array. The first matching product
50
- * name is returned, or null if none match.
51
- */
52
- export function resolveProduct(filePath, workspace) {
53
- const normalised = filePath.replace(/\\/g, "/").replace(/^\.\//, "");
54
- for (const product of workspace.products) {
55
- for (const scope of product.paths) {
56
- const prefix = scope.replace(/\\/g, "/").replace(/^\.\//, "");
57
- if (normalised === prefix || normalised.startsWith(prefix + "/")) {
58
- return product.name;
59
- }
60
- }
61
- }
62
- return null;
63
- }
64
- /**
65
- * Determine the knowledge scope for a given product.
66
- *
67
- * - "isolated": own = [product name], shared = []
68
- * - "shared": own = [product name], shared = workspace.shared_knowledge
69
- */
70
- export function getKnowledgeScope(product, workspace) {
71
- const entry = workspace.products.find((p) => p.name === product);
72
- if (!entry || entry.knowledge_scope === "isolated") {
73
- return { own: [product], shared: [] };
74
- }
75
- return { own: [product], shared: workspace.shared_knowledge };
76
- }
77
- //# sourceMappingURL=workspace_manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace_manager.js","sourceRoot":"","sources":["../../src/engine/workspace_manager.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,MAAM,QAAQ,GAAgC,EAAE,CAAC;IAEjD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,MAAM,CAAC,eAAe;gBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,eAAe,EAAE,QAAQ;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,IACL,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAChC,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,MAAM,CAAC,eAAe;gBAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;gBAC3B,eAAe,EAAE,QAAQ;aAC1B,CAAC,CAAC;QACL,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,MAAM,CAAC,eAAe;gBAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;gBAC5B,eAAe,EAAE,QAAQ;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ;QACR,gBAAgB,EAAE,CAAC,GAAG,CAAC;KACxB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,SAA0B;IAE1B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAErE,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC9D,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;gBACjE,OAAO,OAAO,CAAC,IAAI,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,SAA0B;IAE1B,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAEjE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QACnD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,gBAAgB,EAAE,CAAC;AAChE,CAAC"}
@@ -1,3 +0,0 @@
1
- /** 创建具名子 logger,所有日志自动携带模块名 */
2
- export declare function createLogger(module: string): any;
3
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AA2BA,+BAA+B;AAE/B,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAEhD"}
@@ -1,29 +0,0 @@
1
- /**
2
- * SoloForge 统一日志模块 — 基于 pino 的结构化日志工厂。
3
- *
4
- * 用法:
5
- * import { createLogger } from "../utils/logger.js";
6
- * const log = createLogger("模块名");
7
- * log.info("操作完成");
8
- * log.error({ err }, "操作失败");
9
- *
10
- * 通过环境变量控制:
11
- * LOG_LEVEL=debug|info|warn|error (默认 info)
12
- * LOG_PRETTY=1 (开发时启用美观输出)
13
- */
14
- import pino from "pino";
15
- const LOG_LEVEL = process.env.LOG_LEVEL ?? "info";
16
- const LOG_PRETTY = process.env.LOG_PRETTY === "1" || process.env.NODE_ENV !== "production";
17
- const baseTransport = LOG_PRETTY
18
- ? { target: "pino-pretty", options: { colorize: true, translateTime: "SYS:HH:MM:ss.l", ignore: "pid,hostname" } }
19
- : undefined;
20
- const rootLogger = pino({
21
- level: LOG_LEVEL,
22
- ...(baseTransport ? { transport: baseTransport } : {}),
23
- });
24
- /** 创建具名子 logger,所有日志自动携带模块名 */
25
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
- export function createLogger(module) {
27
- return rootLogger.child({ module });
28
- }
29
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC;AAClD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;AAE3F,MAAM,aAAa,GAAG,UAAU;IAC9B,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE;IACjH,CAAC,CAAC,SAAS,CAAC;AAEd,MAAM,UAAU,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,SAAS;IAChB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CACvD,CAAC,CAAC;AAEH,+BAA+B;AAC/B,8DAA8D;AAC9D,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AACtC,CAAC"}