@dommaker/harness 0.19.0 → 1.0.0
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/CHANGELOG.md +14 -0
- package/bin/harness.js +136 -557
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +2 -13
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/definitions.d.ts +90 -0
- package/dist/cli/commands/definitions.d.ts.map +1 -0
- package/dist/cli/commands/definitions.js +519 -0
- package/dist/cli/commands/definitions.js.map +1 -0
- package/dist/cli/commands/knowledge.js.map +1 -1
- package/dist/cli/commands/sync-docs/capabilities-syncer.d.ts +3 -25
- package/dist/cli/commands/sync-docs/capabilities-syncer.d.ts.map +1 -1
- package/dist/cli/commands/sync-docs/capabilities-syncer.js +3 -93
- package/dist/cli/commands/sync-docs/capabilities-syncer.js.map +1 -1
- package/dist/cli/commands/sync-docs/index.d.ts +1 -1
- package/dist/cli/commands/sync-docs/index.d.ts.map +1 -1
- package/dist/cli/commands/sync-docs/index.js +4 -4
- package/dist/cli/commands/sync-docs/index.js.map +1 -1
- package/dist/context/index.d.ts +1 -5
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +1 -5
- package/dist/context/index.js.map +1 -1
- package/dist/context/knowledge-injector.d.ts +3 -3
- package/dist/context/knowledge-injector.d.ts.map +1 -1
- package/dist/context/knowledge-injector.js +1 -1
- package/dist/context/session-manager.d.ts +1 -12
- package/dist/context/session-manager.d.ts.map +1 -1
- package/dist/context/session-manager.js +0 -63
- package/dist/context/session-manager.js.map +1 -1
- package/dist/context/types.d.ts +1 -39
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js +2 -15
- package/dist/context/types.js.map +1 -1
- package/dist/core/constraints/agent-prompt-renderer.d.ts +1 -1
- package/dist/core/constraints/agent-prompt-renderer.js +1 -1
- package/dist/core/constraints/capabilities-parser.d.ts +17 -2
- package/dist/core/constraints/capabilities-parser.d.ts.map +1 -1
- package/dist/core/constraints/capabilities-parser.js +84 -2
- package/dist/core/constraints/capabilities-parser.js.map +1 -1
- package/dist/core/constraints/checker.d.ts +3 -17
- package/dist/core/constraints/checker.d.ts.map +1 -1
- package/dist/core/constraints/checker.js +7 -47
- package/dist/core/constraints/checker.js.map +1 -1
- package/dist/core/constraints/definitions.d.ts +0 -7
- package/dist/core/constraints/definitions.d.ts.map +1 -1
- package/dist/core/constraints/definitions.js +1 -8
- package/dist/core/constraints/definitions.js.map +1 -1
- package/dist/core/constraints/doc-freshness/runner.d.ts +0 -2
- package/dist/core/constraints/doc-freshness/runner.d.ts.map +1 -1
- package/dist/core/constraints/doc-freshness/runner.js.map +1 -1
- package/dist/core/constraints/index.d.ts +1 -1
- package/dist/core/constraints/index.d.ts.map +1 -1
- package/dist/core/constraints/index.js +2 -3
- package/dist/core/constraints/index.js.map +1 -1
- package/dist/core/constraints/interceptor.d.ts.map +1 -1
- package/dist/core/constraints/interceptor.js +1 -5
- package/dist/core/constraints/interceptor.js.map +1 -1
- package/dist/core/effective-constraints.d.ts.map +1 -1
- package/dist/core/effective-constraints.js +0 -1
- package/dist/core/effective-constraints.js.map +1 -1
- package/dist/core/project-config-loader.d.ts.map +1 -1
- package/dist/core/project-config-loader.js +1 -8
- package/dist/core/project-config-loader.js.map +1 -1
- package/dist/dashboard/stats.d.ts.map +1 -1
- package/dist/dashboard/stats.js.map +1 -1
- package/dist/dashboard/types.d.ts +2 -2
- package/dist/dashboard/types.d.ts.map +1 -1
- package/dist/failure/constraint-handler.d.ts.map +1 -1
- package/dist/failure/constraint-handler.js +0 -2
- package/dist/failure/constraint-handler.js.map +1 -1
- package/dist/gates/acceptance.d.ts +9 -1
- package/dist/gates/acceptance.d.ts.map +1 -1
- package/dist/gates/acceptance.js +21 -0
- package/dist/gates/acceptance.js.map +1 -1
- package/dist/gates/checker-gate.d.ts +23 -0
- package/dist/gates/checker-gate.d.ts.map +1 -0
- package/dist/gates/checker-gate.js +53 -0
- package/dist/gates/checker-gate.js.map +1 -0
- package/dist/gates/command.d.ts +9 -2
- package/dist/gates/command.d.ts.map +1 -1
- package/dist/gates/command.js +10 -0
- package/dist/gates/command.js.map +1 -1
- package/dist/gates/contract.d.ts +8 -2
- package/dist/gates/contract.d.ts.map +1 -1
- package/dist/gates/contract.js +9 -0
- package/dist/gates/contract.js.map +1 -1
- package/dist/gates/decision.d.ts +17 -0
- package/dist/gates/decision.d.ts.map +1 -0
- package/dist/gates/decision.js +25 -0
- package/dist/gates/decision.js.map +1 -0
- package/dist/gates/definitions.d.ts +63 -0
- package/dist/gates/definitions.d.ts.map +1 -0
- package/dist/gates/definitions.js +160 -0
- package/dist/gates/definitions.js.map +1 -0
- package/dist/gates/effective-gates.d.ts +30 -0
- package/dist/gates/effective-gates.d.ts.map +1 -0
- package/dist/gates/effective-gates.js +85 -0
- package/dist/gates/effective-gates.js.map +1 -0
- package/dist/gates/index.d.ts +25 -1
- package/dist/gates/index.d.ts.map +1 -1
- package/dist/gates/index.js +37 -1
- package/dist/gates/index.js.map +1 -1
- package/dist/gates/performance.d.ts +8 -2
- package/dist/gates/performance.d.ts.map +1 -1
- package/dist/gates/performance.js +9 -0
- package/dist/gates/performance.js.map +1 -1
- package/dist/gates/registry.d.ts +32 -0
- package/dist/gates/registry.d.ts.map +1 -0
- package/dist/gates/registry.js +90 -0
- package/dist/gates/registry.js.map +1 -0
- package/dist/gates/review.d.ts +8 -2
- package/dist/gates/review.d.ts.map +1 -1
- package/dist/gates/review.js +9 -0
- package/dist/gates/review.js.map +1 -1
- package/dist/gates/runner.d.ts +30 -0
- package/dist/gates/runner.d.ts.map +1 -0
- package/dist/gates/runner.js +38 -0
- package/dist/gates/runner.js.map +1 -0
- package/dist/gates/security.d.ts +8 -2
- package/dist/gates/security.d.ts.map +1 -1
- package/dist/gates/security.js +9 -0
- package/dist/gates/security.js.map +1 -1
- package/dist/gates/types.d.ts +41 -1
- package/dist/gates/types.d.ts.map +1 -1
- package/dist/hooks/bootstrap.d.ts.map +1 -1
- package/dist/hooks/bootstrap.js +0 -2
- package/dist/hooks/bootstrap.js.map +1 -1
- package/dist/hooks/config.d.ts +26 -0
- package/dist/hooks/config.d.ts.map +1 -0
- package/dist/hooks/config.js +30 -0
- package/dist/hooks/config.js.map +1 -0
- package/dist/hooks/index.d.ts +2 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +4 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/registry.d.ts +18 -1
- package/dist/hooks/registry.d.ts.map +1 -1
- package/dist/hooks/registry.js +45 -0
- package/dist/hooks/registry.js.map +1 -1
- package/dist/hooks/types.d.ts +20 -0
- package/dist/hooks/types.d.ts.map +1 -1
- package/dist/index.d.ts +4 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -20
- package/dist/index.js.map +1 -1
- package/dist/knowledge/import.d.ts +2 -2
- package/dist/knowledge/import.d.ts.map +1 -1
- package/dist/knowledge/ingest.js.map +1 -1
- package/dist/knowledge/lifecycle-hooks.d.ts +2 -2
- package/dist/knowledge/lifecycle-hooks.d.ts.map +1 -1
- package/dist/knowledge/types.d.ts +5 -7
- package/dist/knowledge/types.d.ts.map +1 -1
- package/dist/knowledge/types.js +1 -1
- package/dist/knowledge/types.js.map +1 -1
- package/dist/monitoring/constraint-doctor.d.ts +4 -22
- package/dist/monitoring/constraint-doctor.d.ts.map +1 -1
- package/dist/monitoring/constraint-doctor.js +7 -94
- package/dist/monitoring/constraint-doctor.js.map +1 -1
- package/dist/presets/standard.d.ts +1 -1
- package/dist/presets/standard.d.ts.map +1 -1
- package/dist/presets/standard.js +1 -2
- package/dist/presets/standard.js.map +1 -1
- package/dist/spec/annotation-checker.d.ts.map +1 -1
- package/dist/spec/annotation-checker.js +6 -26
- package/dist/spec/annotation-checker.js.map +1 -1
- package/dist/tools/index.d.ts +0 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/types/constraint.d.ts +1 -12
- package/dist/types/constraint.d.ts.map +1 -1
- package/dist/types/constraint.js +0 -3
- package/dist/types/constraint.js.map +1 -1
- package/dist/types/project-config.d.ts +0 -2
- package/dist/types/project-config.d.ts.map +1 -1
- package/dist/utils/file-walk.d.ts +2 -2
- package/dist/utils/file-walk.js +2 -2
- package/package.json +6 -1
- package/src/CONTEXT.md +14 -0
- package/src/__tests__/checker-extra.test.ts +2 -59
- package/src/__tests__/constraint-doctor.test.ts +1 -140
- package/src/__tests__/constraint-handler.test.ts +0 -4
- package/src/__tests__/project-config-loader-extra.test.ts +0 -20
- package/src/__tests__/project-config-loader.test.ts +0 -1
- package/src/cli/commands/CONTEXT.md +15 -7
- package/src/cli/commands/__tests__/check-drift.test.ts +0 -3
- package/src/cli/commands/__tests__/check-skip-output.test.ts +0 -5
- package/src/cli/commands/__tests__/check.test.ts +7 -75
- package/src/cli/commands/__tests__/registry.test.ts +201 -0
- package/src/cli/commands/check.ts +2 -14
- package/src/cli/commands/definitions.ts +593 -0
- package/src/cli/commands/knowledge.ts +3 -3
- package/src/cli/commands/sync-docs/capabilities-syncer.ts +4 -110
- package/src/cli/commands/sync-docs/index.ts +8 -5
- package/src/context/CONTEXT.md +2 -7
- package/src/context/__tests__/session-manager.test.ts +0 -91
- package/src/context/index.ts +1 -5
- package/src/context/knowledge-injector.ts +3 -3
- package/src/context/session-manager.ts +0 -74
- package/src/context/types.ts +2 -63
- package/src/core/constraints/__tests__/interceptor.test.ts +0 -2
- package/src/core/constraints/agent-prompt-renderer.ts +1 -1
- package/src/core/constraints/capabilities-parser.ts +95 -2
- package/src/core/constraints/checker.ts +8 -53
- package/src/core/constraints/definitions.ts +0 -8
- package/src/core/constraints/doc-freshness/runner.ts +1 -2
- package/src/core/constraints/index.ts +1 -2
- package/src/core/constraints/interceptor.ts +1 -6
- package/src/core/effective-constraints.ts +0 -1
- package/src/core/project-config-loader.ts +1 -7
- package/src/dashboard/stats.ts +2 -2
- package/src/dashboard/types.ts +2 -2
- package/src/failure/constraint-handler.ts +0 -2
- package/src/gates/CONTEXT.md +16 -13
- package/src/gates/__tests__/checker-gate.test.ts +45 -0
- package/src/gates/__tests__/contract.test.ts +73 -0
- package/src/gates/__tests__/effective-gates.test.ts +82 -0
- package/src/gates/__tests__/gate-interface.test.ts +202 -0
- package/src/gates/__tests__/registry.test.ts +87 -0
- package/src/gates/__tests__/runner.test.ts +81 -0
- package/src/gates/acceptance.ts +24 -1
- package/src/gates/checker-gate.ts +54 -0
- package/src/gates/command.ts +13 -2
- package/src/gates/contract.ts +12 -2
- package/src/gates/decision.ts +27 -0
- package/src/gates/definitions.ts +207 -0
- package/src/gates/effective-gates.ts +106 -0
- package/src/gates/index.ts +38 -0
- package/src/gates/performance.ts +12 -2
- package/src/gates/registry.ts +107 -0
- package/src/gates/review.ts +12 -2
- package/src/gates/runner.ts +57 -0
- package/src/gates/security.ts +12 -2
- package/src/gates/types.ts +48 -1
- package/src/hooks/CONTEXT.md +12 -2
- package/src/hooks/__tests__/bootstrap.test.ts +0 -1
- package/src/hooks/__tests__/config.test.ts +19 -0
- package/src/hooks/__tests__/pipeline.test.ts +79 -0
- package/src/hooks/__tests__/registry.test.ts +67 -0
- package/src/hooks/bootstrap.ts +0 -2
- package/src/hooks/config.ts +29 -0
- package/src/hooks/index.ts +2 -1
- package/src/hooks/registry.ts +60 -1
- package/src/hooks/types.ts +21 -0
- package/src/index.ts +5 -22
- package/src/knowledge/import.ts +3 -3
- package/src/knowledge/ingest.ts +4 -4
- package/src/knowledge/lifecycle-hooks.ts +3 -3
- package/src/knowledge/types.ts +5 -8
- package/src/monitoring/constraint-doctor.ts +7 -106
- package/src/presets/__tests__/standard.test.ts +0 -2
- package/src/presets/standard.ts +1 -2
- package/src/spec/__tests__/annotation-checker.test.ts +9 -3
- package/src/spec/annotation-checker.ts +7 -29
- package/src/tools/CONTEXT.md +7 -14
- package/src/tools/index.ts +0 -4
- package/src/types/constraint.ts +1 -14
- package/src/types/project-config.ts +0 -3
- package/src/utils/file-walk.ts +2 -2
- package/dist/architecture/constraint-engine.d.ts +0 -67
- package/dist/architecture/constraint-engine.d.ts.map +0 -1
- package/dist/architecture/constraint-engine.js +0 -295
- package/dist/architecture/constraint-engine.js.map +0 -1
- package/dist/architecture/cross-project-checker.d.ts +0 -54
- package/dist/architecture/cross-project-checker.d.ts.map +0 -1
- package/dist/architecture/cross-project-checker.js +0 -467
- package/dist/architecture/cross-project-checker.js.map +0 -1
- package/dist/cli/commands/index.d.ts +0 -30
- package/dist/cli/commands/index.d.ts.map +0 -1
- package/dist/cli/commands/index.js +0 -91
- package/dist/cli/commands/index.js.map +0 -1
- package/dist/context/file-budget.d.ts +0 -40
- package/dist/context/file-budget.d.ts.map +0 -1
- package/dist/context/file-budget.js +0 -147
- package/dist/context/file-budget.js.map +0 -1
- package/dist/context/progressive-loader.d.ts +0 -109
- package/dist/context/progressive-loader.d.ts.map +0 -1
- package/dist/context/progressive-loader.js +0 -166
- package/dist/context/progressive-loader.js.map +0 -1
- package/dist/context/token-pipeline.d.ts +0 -55
- package/dist/context/token-pipeline.d.ts.map +0 -1
- package/dist/context/token-pipeline.js +0 -220
- package/dist/context/token-pipeline.js.map +0 -1
- package/dist/context/tool-output-budget.d.ts +0 -59
- package/dist/context/tool-output-budget.d.ts.map +0 -1
- package/dist/context/tool-output-budget.js +0 -177
- package/dist/context/tool-output-budget.js.map +0 -1
- package/dist/core/constraints/default-executors.d.ts +0 -10
- package/dist/core/constraints/default-executors.d.ts.map +0 -1
- package/dist/core/constraints/default-executors.js +0 -120
- package/dist/core/constraints/default-executors.js.map +0 -1
- package/dist/llm/adapter.d.ts +0 -36
- package/dist/llm/adapter.d.ts.map +0 -1
- package/dist/llm/adapter.js +0 -118
- package/dist/llm/adapter.js.map +0 -1
- package/dist/llm/index.d.ts +0 -3
- package/dist/llm/index.d.ts.map +0 -1
- package/dist/llm/index.js +0 -19
- package/dist/llm/index.js.map +0 -1
- package/dist/llm/types.d.ts +0 -62
- package/dist/llm/types.d.ts.map +0 -1
- package/dist/llm/types.js +0 -8
- package/dist/llm/types.js.map +0 -1
- package/dist/tools/core/index.d.ts +0 -13
- package/dist/tools/core/index.d.ts.map +0 -1
- package/dist/tools/core/index.js +0 -198
- package/dist/tools/core/index.js.map +0 -1
- package/dist/tools/loader.d.ts +0 -21
- package/dist/tools/loader.d.ts.map +0 -1
- package/dist/tools/loader.js +0 -199
- package/dist/tools/loader.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -59
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -115
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/types.d.ts +0 -38
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/types.js +0 -6
- package/dist/tools/types.js.map +0 -1
- package/src/__tests__/architecture-engine.test.ts +0 -619
- package/src/__tests__/context/progressive-loader.test.ts +0 -131
- package/src/__tests__/cross-project-checker.test.ts +0 -318
- package/src/architecture/CONTEXT.md +0 -22
- package/src/architecture/constraint-engine.ts +0 -351
- package/src/architecture/cross-project-checker.ts +0 -545
- package/src/cli/commands/index.ts +0 -30
- package/src/context/__tests__/file-budget.test.ts +0 -142
- package/src/context/__tests__/progressive-loader.test.ts +0 -264
- package/src/context/__tests__/token-pipeline.test.ts +0 -178
- package/src/context/__tests__/tool-output-budget.test.ts +0 -95
- package/src/context/file-budget.ts +0 -142
- package/src/context/progressive-loader.ts +0 -260
- package/src/context/token-pipeline.ts +0 -265
- package/src/context/tool-output-budget.ts +0 -178
- package/src/core/constraints/__tests__/default-executors.test.ts +0 -57
- package/src/core/constraints/default-executors.ts +0 -92
- package/src/llm/CONTEXT.md +0 -21
- package/src/llm/__tests__/adapter.test.ts +0 -172
- package/src/llm/adapter.ts +0 -149
- package/src/llm/index.ts +0 -2
- package/src/llm/types.ts +0 -81
- package/src/tools/__tests__/loader.test.ts +0 -252
- package/src/tools/__tests__/registry.test.ts +0 -157
- package/src/tools/core/__tests__/core.test.ts +0 -122
- package/src/tools/core/index.ts +0 -201
- package/src/tools/loader.ts +0 -216
- package/src/tools/registry.ts +0 -128
- package/src/tools/types.ts +0 -46
|
@@ -43,16 +43,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
43
43
|
exports.SessionManager = void 0;
|
|
44
44
|
const fs = __importStar(require("fs"));
|
|
45
45
|
const path = __importStar(require("path"));
|
|
46
|
-
const token_pipeline_1 = require("./token-pipeline");
|
|
47
46
|
const context_tracker_1 = require("../monitoring/context-tracker");
|
|
48
47
|
class SessionManager {
|
|
49
48
|
basePath;
|
|
50
49
|
sessions = new Map();
|
|
51
|
-
pipeline;
|
|
52
50
|
tracker;
|
|
53
51
|
constructor(basePath) {
|
|
54
52
|
this.basePath = basePath || process.cwd();
|
|
55
|
-
this.pipeline = new token_pipeline_1.TokenPipeline();
|
|
56
53
|
this.tracker = new context_tracker_1.ContextTracker(this.basePath);
|
|
57
54
|
}
|
|
58
55
|
/**
|
|
@@ -154,24 +151,6 @@ class SessionManager {
|
|
|
154
151
|
// 持久化到 JSONL
|
|
155
152
|
this.appendEvent(id, event);
|
|
156
153
|
}
|
|
157
|
-
/**
|
|
158
|
-
* 获取当前轮窗口视图(自动从磁盘加载,S2)
|
|
159
|
-
*
|
|
160
|
-
* 将 session 事件转换为 ContextSource,通过 TokenPipeline 生成 prompt
|
|
161
|
-
*/
|
|
162
|
-
getWindowView(id, budget) {
|
|
163
|
-
const handle = this.getSession(id);
|
|
164
|
-
if (!handle) {
|
|
165
|
-
throw new Error(`会话 ${id} 不存在`);
|
|
166
|
-
}
|
|
167
|
-
// 将事件转换为 ContextSource
|
|
168
|
-
const sources = this.eventsToSources(handle.events);
|
|
169
|
-
// 通过 pipeline 生成窗口视图
|
|
170
|
-
const output = this.pipeline.run({ sources, budget });
|
|
171
|
-
// 记录快照
|
|
172
|
-
this.tracker.record(output.snapshot);
|
|
173
|
-
return output;
|
|
174
|
-
}
|
|
175
154
|
/**
|
|
176
155
|
* 生成 checkpoint(自动从磁盘加载,S2)
|
|
177
156
|
*/
|
|
@@ -239,48 +218,6 @@ class SessionManager {
|
|
|
239
218
|
getTracker() {
|
|
240
219
|
return this.tracker;
|
|
241
220
|
}
|
|
242
|
-
/**
|
|
243
|
-
* 将事件转换为 ContextSource
|
|
244
|
-
*/
|
|
245
|
-
eventsToSources(events) {
|
|
246
|
-
return events.map(event => {
|
|
247
|
-
let priority;
|
|
248
|
-
let type;
|
|
249
|
-
switch (event.type) {
|
|
250
|
-
case 'system':
|
|
251
|
-
priority = 1;
|
|
252
|
-
type = 'system_prompt';
|
|
253
|
-
break;
|
|
254
|
-
case 'user_message':
|
|
255
|
-
priority = 6;
|
|
256
|
-
type = 'user_message';
|
|
257
|
-
break;
|
|
258
|
-
case 'assistant_message':
|
|
259
|
-
priority = 5;
|
|
260
|
-
type = 'session_event';
|
|
261
|
-
break;
|
|
262
|
-
case 'tool_call':
|
|
263
|
-
case 'tool_result':
|
|
264
|
-
priority = 5;
|
|
265
|
-
type = 'tool_output';
|
|
266
|
-
break;
|
|
267
|
-
case 'checkpoint':
|
|
268
|
-
priority = 4;
|
|
269
|
-
type = 'session_event';
|
|
270
|
-
break;
|
|
271
|
-
default:
|
|
272
|
-
priority = 5;
|
|
273
|
-
type = 'session_event';
|
|
274
|
-
}
|
|
275
|
-
return {
|
|
276
|
-
type,
|
|
277
|
-
id: event.id,
|
|
278
|
-
content: event.content,
|
|
279
|
-
priority,
|
|
280
|
-
metadata: event.metadata,
|
|
281
|
-
};
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
221
|
/**
|
|
285
222
|
* 生成 checkpoint 摘要
|
|
286
223
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/context/session-manager.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/context/session-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/context/types.d.ts
CHANGED
|
@@ -1,24 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 上下文管理类型定义
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Token 预算 + 会话压缩 + 会话管理 + 知识注入
|
|
5
5
|
*/
|
|
6
|
-
import type { QueryResult } from '../knowledge/types';
|
|
7
|
-
export interface FileBudgetConfig {
|
|
8
|
-
maxLines: number;
|
|
9
|
-
maxBytes: number;
|
|
10
|
-
maxTokenEstimate: number;
|
|
11
|
-
continuationHint: boolean;
|
|
12
|
-
}
|
|
13
|
-
export declare const DEFAULT_FILE_BUDGET: FileBudgetConfig;
|
|
14
|
-
export interface ToolOutputBudgetConfig {
|
|
15
|
-
maxChars: number;
|
|
16
|
-
maxTokenRatio: number;
|
|
17
|
-
previewLines: number;
|
|
18
|
-
overflowToDisk: boolean;
|
|
19
|
-
dedup: boolean;
|
|
20
|
-
}
|
|
21
|
-
export declare const DEFAULT_TOOL_OUTPUT_BUDGET: ToolOutputBudgetConfig;
|
|
22
6
|
export type CompactionLevel = 'eviction' | 'summary' | 'checkpoint';
|
|
23
7
|
export interface CompactionConfig {
|
|
24
8
|
triggerRatio: number;
|
|
@@ -43,28 +27,6 @@ export interface ContextSource {
|
|
|
43
27
|
priority: number;
|
|
44
28
|
metadata?: Record<string, any>;
|
|
45
29
|
}
|
|
46
|
-
export interface TokenBudgetAllocation {
|
|
47
|
-
total: number;
|
|
48
|
-
systemPrompt: number;
|
|
49
|
-
toolDefinitions: number;
|
|
50
|
-
knowledge: number;
|
|
51
|
-
notes: number;
|
|
52
|
-
history: number;
|
|
53
|
-
}
|
|
54
|
-
export interface PipelineInput {
|
|
55
|
-
sources: ContextSource[];
|
|
56
|
-
budget: TokenBudgetAllocation;
|
|
57
|
-
knowledge?: QueryResult;
|
|
58
|
-
}
|
|
59
|
-
export interface PipelineOutput {
|
|
60
|
-
prompt: string;
|
|
61
|
-
snapshot: ContextUsageSnapshot;
|
|
62
|
-
dropped: Array<{
|
|
63
|
-
type: string;
|
|
64
|
-
id: string;
|
|
65
|
-
reason: string;
|
|
66
|
-
}>;
|
|
67
|
-
}
|
|
68
30
|
export interface ContextUsageSnapshot {
|
|
69
31
|
timestamp: string;
|
|
70
32
|
totalTokens: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/context/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/context/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,eAAe,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,iBAAiB,GAAG,WAAW,GAAG,kBAAkB,CAAC;CACxE;AAED,eAAO,MAAM,yBAAyB,EAAE,gBAOvC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAErI,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAMD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChG,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IAC5F,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAMD,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,mBAAmB,GAAG,WAAW,GAAG,aAAa,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE5H,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
package/dist/context/types.js
CHANGED
|
@@ -2,23 +2,10 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* 上下文管理类型定义
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Token 预算 + 会话压缩 + 会话管理 + 知识注入
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.DEFAULT_COMPACTION_CONFIG =
|
|
9
|
-
exports.DEFAULT_FILE_BUDGET = {
|
|
10
|
-
maxLines: 2000,
|
|
11
|
-
maxBytes: 51200,
|
|
12
|
-
maxTokenEstimate: 8000,
|
|
13
|
-
continuationHint: true,
|
|
14
|
-
};
|
|
15
|
-
exports.DEFAULT_TOOL_OUTPUT_BUDGET = {
|
|
16
|
-
maxChars: 16000,
|
|
17
|
-
maxTokenRatio: 0.3,
|
|
18
|
-
previewLines: 50,
|
|
19
|
-
overflowToDisk: false,
|
|
20
|
-
dedup: true,
|
|
21
|
-
};
|
|
8
|
+
exports.DEFAULT_COMPACTION_CONFIG = void 0;
|
|
22
9
|
exports.DEFAULT_COMPACTION_CONFIG = {
|
|
23
10
|
triggerRatio: 0.8,
|
|
24
11
|
level: 'eviction',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/context/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/context/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAiBU,QAAA,yBAAyB,GAAqB;IACzD,YAAY,EAAE,GAAG;IACjB,KAAK,EAAE,UAAU;IACjB,qBAAqB,EAAE,IAAI;IAC3B,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;IACtB,gBAAgB,EAAE,iBAAiB;CACpC,CAAC"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* custom 追加 → scenes 过滤),与 init 注入、harness check 同一来源。
|
|
9
9
|
*
|
|
10
10
|
* 输出按层级分组:铁律 → 指导原则 → 行为提示;无 promptInjection 的约束
|
|
11
|
-
* (如 docs_freshness)不渲染。
|
|
11
|
+
* (如 docs_freshness)不渲染。
|
|
12
12
|
*/
|
|
13
13
|
import type { ConstraintTrigger } from '../../types/constraint';
|
|
14
14
|
/**
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* custom 追加 → scenes 过滤),与 init 注入、harness check 同一来源。
|
|
10
10
|
*
|
|
11
11
|
* 输出按层级分组:铁律 → 指导原则 → 行为提示;无 promptInjection 的约束
|
|
12
|
-
* (如 docs_freshness)不渲染。
|
|
12
|
+
* (如 docs_freshness)不渲染。
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.renderConstraintsByTrigger = renderConstraintsByTrigger;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CAPABILITIES.md
|
|
2
|
+
* CAPABILITIES.md 解析与能力清单计数(工单 19-B / H2 O10-R3)
|
|
3
3
|
*
|
|
4
4
|
* 此前 checker.parseCapabilitiesFiles 与 sync-docs.parseCapabilitiesFiles
|
|
5
|
-
* 各持一份正则,收敛到此处。
|
|
5
|
+
* 各持一份正则,收敛到此处。H2 起能力清单计数(checkCapabilityCounts /
|
|
6
|
+
* updateCapabilityCounts)也从 sync-docs/capabilities-syncer 收敛到此,
|
|
7
|
+
* 使本模块成为 CAPABILITIES.md 解析 + 计数唯一入口。
|
|
6
8
|
*/
|
|
7
9
|
export interface CapabilitiesParseOptions {
|
|
8
10
|
/** 是否同时收集目录条目(sync-docs 需要;checker 只做文件覆盖比对,不需要) */
|
|
@@ -35,4 +37,17 @@ export declare function isCapabilityListingFormat(content: string): boolean;
|
|
|
35
37
|
* 源码根直接下的文件聚到根(file=src/foo.ts → src/)。
|
|
36
38
|
*/
|
|
37
39
|
export declare function aggregateToSourceSubdir(root: string, file: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* 使用 FreshnessRunner 检查能力清单计数是否与代码一致(--check 模式)
|
|
42
|
+
*/
|
|
43
|
+
export declare function checkCapabilityCounts(projectPath: string): {
|
|
44
|
+
match: boolean;
|
|
45
|
+
mismatches: string[];
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* 更新 CAPABILITIES.md 中的能力清单计数(write 模式)
|
|
49
|
+
*
|
|
50
|
+
* 使用 FreshnessRunner 获取实际计数,然后 regex 替换文档计数行。
|
|
51
|
+
*/
|
|
52
|
+
export declare function updateCapabilityCounts(content: string, projectPath: string): string;
|
|
38
53
|
//# sourceMappingURL=capabilities-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities-parser.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/capabilities-parser.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"capabilities-parser.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/capabilities-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH,MAAM,WAAW,wBAAwB;IACvC,oDAAoD;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAG,MAAM,EAAE,CAqB1G;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAG,MAAM,EAAE,CAMlH;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAKlE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAO1E;AAyCD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,GAClB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAa1C;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAsBnF"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* CAPABILITIES.md
|
|
3
|
+
* CAPABILITIES.md 解析与能力清单计数(工单 19-B / H2 O10-R3)
|
|
4
4
|
*
|
|
5
5
|
* 此前 checker.parseCapabilitiesFiles 与 sync-docs.parseCapabilitiesFiles
|
|
6
|
-
* 各持一份正则,收敛到此处。
|
|
6
|
+
* 各持一份正则,收敛到此处。H2 起能力清单计数(checkCapabilityCounts /
|
|
7
|
+
* updateCapabilityCounts)也从 sync-docs/capabilities-syncer 收敛到此,
|
|
8
|
+
* 使本模块成为 CAPABILITIES.md 解析 + 计数唯一入口。
|
|
7
9
|
*/
|
|
8
10
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
11
|
if (k2 === undefined) k2 = k;
|
|
@@ -43,7 +45,11 @@ exports.parseCapabilitiesEntries = parseCapabilitiesEntries;
|
|
|
43
45
|
exports.readCapabilitiesEntries = readCapabilitiesEntries;
|
|
44
46
|
exports.isCapabilityListingFormat = isCapabilityListingFormat;
|
|
45
47
|
exports.aggregateToSourceSubdir = aggregateToSourceSubdir;
|
|
48
|
+
exports.checkCapabilityCounts = checkCapabilityCounts;
|
|
49
|
+
exports.updateCapabilityCounts = updateCapabilityCounts;
|
|
46
50
|
const fs = __importStar(require("fs"));
|
|
51
|
+
const definitions_1 = require("./definitions");
|
|
52
|
+
const runner_1 = require("./doc-freshness/runner");
|
|
47
53
|
/** 匹配表格单元格中的源码文件条目(如 `src/foo.ts`、`foo.tsx`) */
|
|
48
54
|
const FILE_CELL_REGEX = /\|\s*([^|]+?\.(?:ts|tsx|js|jsx))\s*\|/g;
|
|
49
55
|
/** 仅匹配表格第二列的文件条目(checker 的历史语义:第一列为模块名,第二列为文件) */
|
|
@@ -122,4 +128,80 @@ function aggregateToSourceSubdir(root, file) {
|
|
|
122
128
|
return prefix;
|
|
123
129
|
return prefix + rest.slice(0, idx) + '/';
|
|
124
130
|
}
|
|
131
|
+
// ── 能力清单计数 ────────────────────────────────────────────
|
|
132
|
+
/**
|
|
133
|
+
* 构建 CAPABILITIES.md 能力清单格式的检查配置
|
|
134
|
+
*/
|
|
135
|
+
function buildCapabilityChecks() {
|
|
136
|
+
return [
|
|
137
|
+
{
|
|
138
|
+
type: 'doc_regex_count',
|
|
139
|
+
doc: 'CAPABILITIES.md',
|
|
140
|
+
label: 'CLI Commands',
|
|
141
|
+
pattern: 'CLI Commands\\s*\\((\\d+)\\)',
|
|
142
|
+
// index.ts(已删 barrel)与 definitions.ts(命令注册表纯数据)不是命令实现,不计入
|
|
143
|
+
actual: { kind: 'dir_count', path: 'src/cli/commands', extension: '.ts', exclude: ['index.ts', 'definitions.ts'] },
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'doc_regex_count',
|
|
147
|
+
doc: 'CAPABILITIES.md',
|
|
148
|
+
label: 'Quality Gates',
|
|
149
|
+
pattern: 'Quality Gates?\\s*\\((\\d+)\\)',
|
|
150
|
+
actual: { kind: 'dir_count', path: 'src/gates', extension: '.ts', exclude: ['index.ts', 'types.ts'] },
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'doc_regex_count',
|
|
154
|
+
doc: 'CAPABILITIES.md',
|
|
155
|
+
label: 'Iron Laws',
|
|
156
|
+
pattern: 'Iron Laws?\\s*\\((\\d+)\\)',
|
|
157
|
+
actual: { kind: 'const_count', value: Object.keys(definitions_1.IRON_LAWS).length },
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
type: 'doc_regex_count',
|
|
161
|
+
doc: 'CAPABILITIES.md',
|
|
162
|
+
label: 'Guidelines',
|
|
163
|
+
pattern: 'Guidelines?\\s*\\((\\d+)\\)',
|
|
164
|
+
actual: { kind: 'const_count', value: Object.keys(definitions_1.GUIDELINES).length },
|
|
165
|
+
},
|
|
166
|
+
];
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* 使用 FreshnessRunner 检查能力清单计数是否与代码一致(--check 模式)
|
|
170
|
+
*/
|
|
171
|
+
function checkCapabilityCounts(projectPath) {
|
|
172
|
+
const runner = new runner_1.FreshnessRunner();
|
|
173
|
+
const checks = buildCapabilityChecks();
|
|
174
|
+
const results = runner.runAll({ checks }, projectPath);
|
|
175
|
+
const mismatches = [];
|
|
176
|
+
for (const r of results) {
|
|
177
|
+
if (!r.pass && r.message) {
|
|
178
|
+
mismatches.push(r.message);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return { match: mismatches.length === 0, mismatches };
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* 更新 CAPABILITIES.md 中的能力清单计数(write 模式)
|
|
185
|
+
*
|
|
186
|
+
* 使用 FreshnessRunner 获取实际计数,然后 regex 替换文档计数行。
|
|
187
|
+
*/
|
|
188
|
+
function updateCapabilityCounts(content, projectPath) {
|
|
189
|
+
const runner = new runner_1.FreshnessRunner();
|
|
190
|
+
const cliCount = runner.countFromDir('src/cli/commands', '.ts', ['index.ts', 'definitions.ts'], projectPath);
|
|
191
|
+
const gateCount = runner.countFromDir('src/gates', '.ts', ['index.ts', 'types.ts'], projectPath);
|
|
192
|
+
const ironCount = Object.keys(definitions_1.IRON_LAWS).length;
|
|
193
|
+
const guideCount = Object.keys(definitions_1.GUIDELINES).length;
|
|
194
|
+
const replacements = [
|
|
195
|
+
[/CLI Commands\s*\(\d+\)/, `CLI Commands (${cliCount})`],
|
|
196
|
+
[/Quality Gates?\s*\(\d+\)/, `Quality Gates (${gateCount})`],
|
|
197
|
+
[/Iron Laws?\s*\(\d+\)/, `Iron Laws (${ironCount})`],
|
|
198
|
+
[/Guidelines?\s*\(\d+\)/, `Guidelines (${guideCount})`],
|
|
199
|
+
];
|
|
200
|
+
for (const [regex, replacement] of replacements) {
|
|
201
|
+
if (regex.test(content)) {
|
|
202
|
+
content = content.replace(regex, replacement);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return content;
|
|
206
|
+
}
|
|
125
207
|
//# sourceMappingURL=capabilities-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities-parser.js","sourceRoot":"","sources":["../../../src/core/constraints/capabilities-parser.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"capabilities-parser.js","sourceRoot":"","sources":["../../../src/core/constraints/capabilities-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,8 +23,6 @@ export interface TraceRecorder {
|
|
|
23
23
|
*/
|
|
24
24
|
export declare class ConstraintChecker {
|
|
25
25
|
private static instance;
|
|
26
|
-
/** 自定义约束配置(项目级) */
|
|
27
|
-
private customConfig;
|
|
28
26
|
/** 检查结果缓存(S7:src 扫描等重复 I/O,TTL=1s 防跨测试污染) */
|
|
29
27
|
private cache;
|
|
30
28
|
/**
|
|
@@ -55,17 +53,10 @@ export declare class ConstraintChecker {
|
|
|
55
53
|
* 注入 trace 记录器(工单 15:解耦 core 对 monitoring 的值依赖)
|
|
56
54
|
*/
|
|
57
55
|
setTraceRecorder(recorder: TraceRecorder): void;
|
|
58
|
-
/**
|
|
59
|
-
* 设置项目级约束配置
|
|
60
|
-
*
|
|
61
|
-
* @deprecated 修改单例状态,多项目并发时存在污染风险。
|
|
62
|
-
* 请改用 checkConstraints() / beforeExecution() 的 customConfig 参数实现 per-request 隔离。
|
|
63
|
-
*/
|
|
64
|
-
setCustomConfig(config: MergedConstraintsConfig): void;
|
|
65
56
|
/**
|
|
66
57
|
* 获取当前的约束集合(内置 + 自定义)
|
|
67
58
|
*
|
|
68
|
-
* @param customConfig 可选,per-request
|
|
59
|
+
* @param customConfig 可选,per-request 自定义配置;不传则返回内置约束集
|
|
69
60
|
*/
|
|
70
61
|
getConstraints(customConfig?: MergedConstraintsConfig | null): {
|
|
71
62
|
ironLaws: Record<string, Constraint & {
|
|
@@ -74,9 +65,6 @@ export declare class ConstraintChecker {
|
|
|
74
65
|
guidelines: Record<string, Constraint & {
|
|
75
66
|
check: (ctx: ConstraintContext) => Promise<ConstraintResult>;
|
|
76
67
|
}>;
|
|
77
|
-
tips: Record<string, Constraint & {
|
|
78
|
-
check: (ctx: ConstraintContext) => Promise<ConstraintResult>;
|
|
79
|
-
}>;
|
|
80
68
|
prompts: Record<string, Constraint & {
|
|
81
69
|
check: (ctx: ConstraintContext) => Promise<ConstraintResult>;
|
|
82
70
|
}>;
|
|
@@ -120,22 +108,20 @@ export declare class ConstraintChecker {
|
|
|
120
108
|
findApplicableConstraints(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null): {
|
|
121
109
|
ironLaws: Constraint[];
|
|
122
110
|
guidelines: Constraint[];
|
|
123
|
-
tips: Constraint[];
|
|
124
111
|
prompts: Constraint[];
|
|
125
112
|
};
|
|
126
113
|
/**
|
|
127
|
-
*
|
|
114
|
+
* 执行约束检查
|
|
128
115
|
*
|
|
129
116
|
* - Iron Laws:检查失败立即抛出异常
|
|
130
117
|
* - Guidelines:检查失败记录警告
|
|
131
|
-
* - Tips:检查失败记录提示
|
|
132
118
|
*
|
|
133
119
|
* @param context 约束上下文
|
|
134
120
|
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
135
121
|
*/
|
|
136
122
|
checkConstraints(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null): Promise<ConstraintCheckResult>;
|
|
137
123
|
/**
|
|
138
|
-
* S11: 安全全量检查 —
|
|
124
|
+
* S11: 安全全量检查 — 全部约束检查,不抛异常
|
|
139
125
|
*
|
|
140
126
|
* 区别 checkConstraints(): Iron Law 违规收集在结果中而不是抛异常。
|
|
141
127
|
* 调用方通过 result.passed + result.warningCount 判断状态。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/checker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EAItB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAsC1E;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CACrC;AAID;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoB;IAE3C,
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,8 +56,6 @@ const NOOP_TRACE_RECORDER = { record: () => undefined };
|
|
|
56
56
|
*/
|
|
57
57
|
class ConstraintChecker {
|
|
58
58
|
static instance;
|
|
59
|
-
/** 自定义约束配置(项目级) */
|
|
60
|
-
customConfig = null;
|
|
61
59
|
/** 检查结果缓存(S7:src 扫描等重复 I/O,TTL=1s 防跨测试污染) */
|
|
62
60
|
cache = new check_cache_1.CheckCache({ ttlMs: 1000 });
|
|
63
61
|
/**
|
|
@@ -108,25 +106,16 @@ class ConstraintChecker {
|
|
|
108
106
|
setTraceRecorder(recorder) {
|
|
109
107
|
this.traceRecorder = recorder;
|
|
110
108
|
}
|
|
111
|
-
/**
|
|
112
|
-
* 设置项目级约束配置
|
|
113
|
-
*
|
|
114
|
-
* @deprecated 修改单例状态,多项目并发时存在污染风险。
|
|
115
|
-
* 请改用 checkConstraints() / beforeExecution() 的 customConfig 参数实现 per-request 隔离。
|
|
116
|
-
*/
|
|
117
|
-
setCustomConfig(config) {
|
|
118
|
-
this.customConfig = config;
|
|
119
|
-
}
|
|
120
109
|
/**
|
|
121
110
|
* 获取当前的约束集合(内置 + 自定义)
|
|
122
111
|
*
|
|
123
|
-
* @param customConfig 可选,per-request
|
|
112
|
+
* @param customConfig 可选,per-request 自定义配置;不传则返回内置约束集
|
|
124
113
|
*/
|
|
125
114
|
getConstraints(customConfig) {
|
|
126
|
-
const config = customConfig
|
|
115
|
+
const config = customConfig;
|
|
127
116
|
const source = config
|
|
128
|
-
? { ironLaws: config.ironLaws, guidelines: config.guidelines,
|
|
129
|
-
: { ironLaws: definitions_1.IRON_LAWS, guidelines: definitions_1.GUIDELINES,
|
|
117
|
+
? { ironLaws: config.ironLaws, guidelines: config.guidelines, prompts: config.prompts ?? definitions_1.PROMPTS }
|
|
118
|
+
: { ironLaws: definitions_1.IRON_LAWS, guidelines: definitions_1.GUIDELINES, prompts: definitions_1.PROMPTS };
|
|
130
119
|
// Wire unified check() method on every constraint
|
|
131
120
|
const wire = (constraints) => {
|
|
132
121
|
for (const c of Object.values(constraints)) {
|
|
@@ -137,7 +126,6 @@ class ConstraintChecker {
|
|
|
137
126
|
return {
|
|
138
127
|
ironLaws: wire(source.ironLaws),
|
|
139
128
|
guidelines: wire(source.guidelines),
|
|
140
|
-
tips: wire(source.tips),
|
|
141
129
|
prompts: wire(source.prompts),
|
|
142
130
|
};
|
|
143
131
|
}
|
|
@@ -210,7 +198,6 @@ class ConstraintChecker {
|
|
|
210
198
|
case 'guideline':
|
|
211
199
|
return 'warning';
|
|
212
200
|
case 'prompt':
|
|
213
|
-
case 'tip':
|
|
214
201
|
return 'info';
|
|
215
202
|
default:
|
|
216
203
|
return 'warning';
|
|
@@ -287,16 +274,14 @@ class ConstraintChecker {
|
|
|
287
274
|
return {
|
|
288
275
|
ironLaws: filterByTrigger(constraints.ironLaws),
|
|
289
276
|
guidelines: filterByTrigger(constraints.guidelines),
|
|
290
|
-
tips: filterByTrigger(constraints.tips),
|
|
291
277
|
prompts: filterByTrigger(constraints.prompts),
|
|
292
278
|
};
|
|
293
279
|
}
|
|
294
280
|
/**
|
|
295
|
-
*
|
|
281
|
+
* 执行约束检查
|
|
296
282
|
*
|
|
297
283
|
* - Iron Laws:检查失败立即抛出异常
|
|
298
284
|
* - Guidelines:检查失败记录警告
|
|
299
|
-
* - Tips:检查失败记录提示
|
|
300
285
|
*
|
|
301
286
|
* @param context 约束上下文
|
|
302
287
|
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
@@ -309,10 +294,8 @@ class ConstraintChecker {
|
|
|
309
294
|
const result = {
|
|
310
295
|
ironLaws: [],
|
|
311
296
|
guidelines: [],
|
|
312
|
-
tips: [],
|
|
313
297
|
passed: true,
|
|
314
298
|
warningCount: 0,
|
|
315
|
-
tipCount: 0,
|
|
316
299
|
};
|
|
317
300
|
const traceCollector = this.traceRecorder;
|
|
318
301
|
const constraints = this.getConstraints(customConfig);
|
|
@@ -339,17 +322,6 @@ class ConstraintChecker {
|
|
|
339
322
|
result.warningCount++;
|
|
340
323
|
}
|
|
341
324
|
}
|
|
342
|
-
// 3. Tips: 仅记录
|
|
343
|
-
for (const constraint of Object.values(constraints.tips)) {
|
|
344
|
-
if (!this.matchesTrigger(constraint, context))
|
|
345
|
-
continue;
|
|
346
|
-
const checkResult = await this.check(constraint, context);
|
|
347
|
-
result.tips.push(checkResult);
|
|
348
|
-
this.recordTrace(traceCollector, constraint, checkResult, context);
|
|
349
|
-
if (!checkResult.satisfied) {
|
|
350
|
-
result.tipCount++;
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
325
|
return result;
|
|
354
326
|
}
|
|
355
327
|
finally {
|
|
@@ -357,7 +329,7 @@ class ConstraintChecker {
|
|
|
357
329
|
}
|
|
358
330
|
}
|
|
359
331
|
/**
|
|
360
|
-
* S11: 安全全量检查 —
|
|
332
|
+
* S11: 安全全量检查 — 全部约束检查,不抛异常
|
|
361
333
|
*
|
|
362
334
|
* 区别 checkConstraints(): Iron Law 违规收集在结果中而不是抛异常。
|
|
363
335
|
* 调用方通过 result.passed + result.warningCount 判断状态。
|
|
@@ -370,10 +342,8 @@ class ConstraintChecker {
|
|
|
370
342
|
const result = {
|
|
371
343
|
ironLaws: [],
|
|
372
344
|
guidelines: [],
|
|
373
|
-
tips: [],
|
|
374
345
|
passed: true,
|
|
375
346
|
warningCount: 0,
|
|
376
|
-
tipCount: 0,
|
|
377
347
|
};
|
|
378
348
|
const traceCollector = this.traceRecorder;
|
|
379
349
|
const constraints = this.getConstraints(customConfig);
|
|
@@ -395,15 +365,6 @@ class ConstraintChecker {
|
|
|
395
365
|
if (!checkResult.satisfied)
|
|
396
366
|
result.warningCount++;
|
|
397
367
|
}
|
|
398
|
-
for (const constraint of Object.values(constraints.tips)) {
|
|
399
|
-
if (!this.matchesTrigger(constraint, context))
|
|
400
|
-
continue;
|
|
401
|
-
const checkResult = await this.check(constraint, context);
|
|
402
|
-
result.tips.push(checkResult);
|
|
403
|
-
this.recordTrace(traceCollector, constraint, checkResult, context);
|
|
404
|
-
if (!checkResult.satisfied)
|
|
405
|
-
result.tipCount++;
|
|
406
|
-
}
|
|
407
368
|
return result;
|
|
408
369
|
}
|
|
409
370
|
finally {
|
|
@@ -442,12 +403,11 @@ async function checkConstraint(constraintId, context) {
|
|
|
442
403
|
const constraints = checker.getConstraints();
|
|
443
404
|
const constraint = constraints.ironLaws[constraintId] ||
|
|
444
405
|
constraints.guidelines[constraintId] ||
|
|
445
|
-
constraints.tips[constraintId] ||
|
|
446
406
|
constraints.prompts[constraintId];
|
|
447
407
|
if (!constraint) {
|
|
448
408
|
return {
|
|
449
409
|
id: constraintId,
|
|
450
|
-
level: '
|
|
410
|
+
level: 'guideline',
|
|
451
411
|
satisfied: false,
|
|
452
412
|
message: `未知的约束: ${constraintId}`,
|
|
453
413
|
checkedAt: new Date(),
|