@dommaker/harness 0.6.1 → 0.7.2

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 (77) hide show
  1. package/README.md +122 -6
  2. package/bin/harness.js +30 -2
  3. package/dist/cli/commands/index.d.ts +1 -0
  4. package/dist/cli/commands/index.d.ts.map +1 -1
  5. package/dist/cli/commands/index.js +4 -1
  6. package/dist/cli/commands/index.js.map +1 -1
  7. package/dist/cli/commands/spec.d.ts +31 -0
  8. package/dist/cli/commands/spec.d.ts.map +1 -0
  9. package/dist/cli/commands/spec.js +169 -0
  10. package/dist/cli/commands/spec.js.map +1 -0
  11. package/dist/core/constraints/definitions.d.ts.map +1 -1
  12. package/dist/core/constraints/definitions.js +5 -2
  13. package/dist/core/constraints/definitions.js.map +1 -1
  14. package/dist/core/constraints/index.d.ts +2 -0
  15. package/dist/core/constraints/index.d.ts.map +1 -1
  16. package/dist/core/constraints/index.js +7 -1
  17. package/dist/core/constraints/index.js.map +1 -1
  18. package/dist/core/constraints/interceptor.d.ts +37 -0
  19. package/dist/core/constraints/interceptor.d.ts.map +1 -0
  20. package/dist/core/constraints/interceptor.js +176 -0
  21. package/dist/core/constraints/interceptor.js.map +1 -0
  22. package/dist/core/spec/index.d.ts +7 -0
  23. package/dist/core/spec/index.d.ts.map +1 -0
  24. package/dist/core/spec/index.js +23 -0
  25. package/dist/core/spec/index.js.map +1 -0
  26. package/dist/core/spec/validator.d.ts +78 -0
  27. package/dist/core/spec/validator.d.ts.map +1 -0
  28. package/dist/core/spec/validator.js +372 -0
  29. package/dist/core/spec/validator.js.map +1 -0
  30. package/dist/core/validators/passes-gate.d.ts +51 -1
  31. package/dist/core/validators/passes-gate.d.ts.map +1 -1
  32. package/dist/core/validators/passes-gate.js +90 -0
  33. package/dist/core/validators/passes-gate.js.map +1 -1
  34. package/dist/extensions/long-running/constraints.d.ts +38 -0
  35. package/dist/extensions/long-running/constraints.d.ts.map +1 -0
  36. package/dist/extensions/long-running/constraints.js +153 -0
  37. package/dist/extensions/long-running/constraints.js.map +1 -0
  38. package/dist/extensions/long-running/index.d.ts +30 -0
  39. package/dist/extensions/long-running/index.d.ts.map +1 -0
  40. package/dist/extensions/long-running/index.js +50 -0
  41. package/dist/extensions/long-running/index.js.map +1 -0
  42. package/dist/extensions/long-running/types.d.ts +154 -0
  43. package/dist/extensions/long-running/types.d.ts.map +1 -0
  44. package/dist/extensions/long-running/types.js +9 -0
  45. package/dist/extensions/long-running/types.js.map +1 -0
  46. package/dist/index.d.ts +7 -1
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +20 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/presets/index.d.ts +1 -0
  51. package/dist/presets/index.d.ts.map +1 -1
  52. package/dist/presets/index.js +6 -1
  53. package/dist/presets/index.js.map +1 -1
  54. package/dist/presets/long-running.d.ts +33 -0
  55. package/dist/presets/long-running.d.ts.map +1 -0
  56. package/dist/presets/long-running.js +52 -0
  57. package/dist/presets/long-running.js.map +1 -0
  58. package/dist/types/constraint.d.ts +1 -1
  59. package/dist/types/constraint.d.ts.map +1 -1
  60. package/dist/types/constraint.js.map +1 -1
  61. package/dist/types/enforcement.d.ts +42 -0
  62. package/dist/types/enforcement.d.ts.map +1 -0
  63. package/dist/types/enforcement.js +6 -0
  64. package/dist/types/enforcement.js.map +1 -0
  65. package/dist/types/index.d.ts +2 -0
  66. package/dist/types/index.d.ts.map +1 -1
  67. package/dist/types/index.js +4 -0
  68. package/dist/types/index.js.map +1 -1
  69. package/dist/types/passes-gate.d.ts +20 -0
  70. package/dist/types/passes-gate.d.ts.map +1 -1
  71. package/dist/types/project-config.d.ts +11 -0
  72. package/dist/types/project-config.d.ts.map +1 -1
  73. package/dist/types/spec.d.ts +85 -0
  74. package/dist/types/spec.d.ts.map +1 -0
  75. package/dist/types/spec.js +8 -0
  76. package/dist/types/spec.js.map +1 -0
  77. package/package.json +8 -7
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @dommaker/harness
2
2
 
3
- > 通用工程约束框架 - 铁律系统、检查点验证、测试门控
3
+ > 通用工程约束框架 - 铁律系统、检查点验证、测试门控、拦截器
4
4
 
5
5
  ## 简介
6
6
 
@@ -13,12 +13,11 @@
13
13
  | **铁律系统** | 16 条内置约束(4 Iron Laws + 10 Guidelines + 2 Tips) |
14
14
  | **检查点验证** | 验证工作流步骤的结果是否符合预期 |
15
15
  | **测试门控** | 禁止自评通过,必须通过真实测试 |
16
+ | **拦截器** | 抽象拦截框架,自动执行 enforcement(v0.7+) |
16
17
  | **Session 管理** | 启动检查点 + 结束状态管理 |
17
18
  | **预设系统** | 提供 strict/standard/relaxed 三种预设 |
18
- | **Execution Trace** | 轻量记录约束检查,异常检测,诊断系统(v0.3+) |
19
- | **项目级自定义约束** | 扩展/覆盖内置约束,无需 fork(v0.4+) |
20
- | **智能提示** | check 后根据条件提示下一步操作(v0.6+) |
21
- | **一键流程** | harness flow 一键执行诊断+提案(v0.6+) |
19
+ | **Execution Trace** | 轻量记录约束检查,异常检测,诊断系统 |
20
+ | **项目级自定义约束** | 扩展/覆盖内置约束,无需 fork |
22
21
  | **CLI 工具** | 命令行工具执行检查 |
23
22
 
24
23
  ## 安装
@@ -98,7 +97,48 @@ jobs:
98
97
  - run: npx harness passes-gate
99
98
  ```
100
99
 
101
- ### 4. 在代码中使用
100
+ ### 5. Spec 验证
101
+
102
+ 验证架构文档、模块定义、API 定义等 Spec 文件:
103
+
104
+ ```bash
105
+ # 验证所有 Spec 文件
106
+ harness spec
107
+
108
+ # 验证暂存文件(pre-commit)
109
+ harness spec --staged
110
+
111
+ # 验证指定文件
112
+ harness spec --file ARCHITECTURE.md
113
+
114
+ # 使用自定义 Schema
115
+ harness spec --schema ./my-specs/schemas
116
+
117
+ # 列出支持的 Spec 类型
118
+ harness spec list
119
+ ```
120
+
121
+ **项目自定义 Schema**:
122
+
123
+ 项目可以定义自己的 Spec Schema,在 `src/specs/schemas/index.ts` 中导出 `validate` 函数:
124
+
125
+ ```typescript
126
+ // src/specs/schemas/index.ts
127
+ import { z } from 'zod';
128
+
129
+ export const ArchitectureSchema = z.object({
130
+ name: z.string(),
131
+ version: z.string(),
132
+ modules: z.array(z.string()),
133
+ });
134
+
135
+ export async function validate(content: string, filePath: string) {
136
+ // 解析并验证内容
137
+ // 返回 SpecValidationResult
138
+ }
139
+ ```
140
+
141
+ ### 6. 在代码中使用
102
142
 
103
143
  ```typescript
104
144
  import {
@@ -130,6 +170,82 @@ const cleaner = new CleanStateManager();
130
170
  const cleanResult = await cleaner.onSessionEnd(workDir, sessionInfo);
131
171
  ```
132
172
 
173
+ ### 5. 使用拦截器(v0.7+)
174
+
175
+ 拦截器自动执行 enforcement,无需手动调用检查 API:
176
+
177
+ ```typescript
178
+ import {
179
+ interceptor,
180
+ registerExecutor,
181
+ interceptOperation,
182
+ claimOperation,
183
+ type EnforcementExecutor,
184
+ type ConstraintContext,
185
+ } from '@dommaker/harness';
186
+
187
+ // 1. 注册执行器(使用者实现具体逻辑)
188
+ registerExecutor('verify-completion', {
189
+ description: '验证完成声明:运行测试命令',
190
+ supportedParams: ['command', 'timeout'],
191
+ async execute(context) {
192
+ // 使用者自定义验证逻辑
193
+ const result = await exec('npm test', { cwd: context.projectPath });
194
+ return {
195
+ passed: result.success,
196
+ evidence: result.stdout,
197
+ };
198
+ },
199
+ });
200
+
201
+ // 2. 在关键操作前拦截
202
+ try {
203
+ // 拦截 task_completion_claim 操作
204
+ // 自动查找适用的约束并执行对应的 enforcement
205
+ await claimOperation('task_completion_claim', {
206
+ operation: 'task_completion_claim',
207
+ projectPath: '/path/to/project',
208
+ sessionId: 'session-123',
209
+ });
210
+
211
+ // 拦截通过,可以宣布完成
212
+ await announceCompletion();
213
+ } catch (e) {
214
+ // 拦截失败,铁律违规
215
+ console.error('必须先验证才能完成');
216
+ }
217
+
218
+ // 3. 查询拦截结果(不抛异常)
219
+ const result = await interceptOperation('task_completion_claim', context);
220
+ if (result.passed) {
221
+ console.log('✅ 通过拦截');
222
+ } else {
223
+ console.log('❌ 约束违规:', result.violations);
224
+ }
225
+ ```
226
+
227
+ **拦截器 vs 手动检查**:
228
+
229
+ | 方式 | 特点 |
230
+ |------|------|
231
+ | 手动检查 | `checkConstraints()` 需要手动调用 API |
232
+ | 拦截器 | 自动执行 enforcement,抽象框架,使用者实现逻辑 |
233
+
234
+ **内置 enforcement IDs**:
235
+
236
+ | enforcement | 说明 |
237
+ |-------------|------|
238
+ | verify-completion | 验证完成声明:运行测试 |
239
+ | verify-e2e | 验证端到端测试 |
240
+ | debug-systematic | 系统性调试检查 |
241
+ | reuse-first | 复用优先检查 |
242
+ | update-capabilities | CAPABILITIES.md 同步检查 |
243
+ | tdd-cycle | TDD 循环检查 |
244
+ | passes-gate | 测试门控 |
245
+ | checkpoint-required | 检查点必须通过 |
246
+ | check-coverage | 覆盖率检查 |
247
+ | require-discussion | 设计决策讨论检查 |
248
+
133
249
  ## 内置约束(16 条)
134
250
 
135
251
  | ID | 规则 | 层级 | 严重性 |
package/bin/harness.js CHANGED
@@ -18,7 +18,9 @@ const {
18
18
  diagnoseCommand,
19
19
  proposeCommand,
20
20
  status,
21
- flow
21
+ flow,
22
+ specValidate,
23
+ listSpecTypes
22
24
  } = require('../dist/cli/commands/index');
23
25
 
24
26
  const program = new Command();
@@ -26,7 +28,7 @@ const program = new Command();
26
28
  program
27
29
  .name('harness')
28
30
  .description('通用工程约束框架 - 铁律系统、检查点验证、测试门控、执行追踪')
29
- .version('0.3.0');
31
+ .version('0.7.0');
30
32
 
31
33
  // ========================================
32
34
  // harness check
@@ -230,5 +232,31 @@ program
230
232
  });
231
233
  });
232
234
 
235
+ // ========================================
236
+ // harness spec
237
+ // ========================================
238
+ program
239
+ .command('spec [subcommand]')
240
+ .description('Spec 验证命令')
241
+ .option('-s, --schema <path>', 'Schema 路径(项目定义)')
242
+ .option('--staged', '只验证暂存文件', false)
243
+ .option('-f, --file <path>', '验证指定文件')
244
+ .option('-p, --project-path <path>', '项目路径')
245
+ .option('-v, --verbose', '详细输出', false)
246
+ .action(async (subcommand, options, command) => {
247
+ if (subcommand === 'list') {
248
+ listSpecTypes();
249
+ } else {
250
+ // 默认执行 validate
251
+ await specValidate({
252
+ schema: options.schema,
253
+ staged: options.staged,
254
+ file: options.file || (subcommand && !subcommand.startsWith('-') ? subcommand : undefined),
255
+ projectPath: options.projectPath,
256
+ verbose: options.verbose,
257
+ });
258
+ }
259
+ });
260
+
233
261
  // 解析命令行参数
234
262
  program.parse();
@@ -11,4 +11,5 @@ export { diagnoseCommand } from './diagnose';
11
11
  export { proposeCommand } from './propose';
12
12
  export { status, type StatusOptions } from './status';
13
13
  export { flow, type FlowOptions } from './flow';
14
+ export { specValidate, listSpecTypes, type SpecValidateOptions } from './spec';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,QAAQ,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * CLI 命令导出
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.flow = exports.status = exports.proposeCommand = exports.diagnoseCommand = exports.tracesCommand = exports.report = exports.init = exports.checkCoverage = exports.runPassesGate = exports.createExampleCheckpoint = exports.validate = exports.listLaws = exports.check = void 0;
6
+ exports.listSpecTypes = exports.specValidate = exports.flow = exports.status = exports.proposeCommand = exports.diagnoseCommand = exports.tracesCommand = exports.report = exports.init = exports.checkCoverage = exports.runPassesGate = exports.createExampleCheckpoint = exports.validate = exports.listLaws = exports.check = void 0;
7
7
  var check_1 = require("./check");
8
8
  Object.defineProperty(exports, "check", { enumerable: true, get: function () { return check_1.check; } });
9
9
  Object.defineProperty(exports, "listLaws", { enumerable: true, get: function () { return check_1.listLaws; } });
@@ -27,4 +27,7 @@ var status_1 = require("./status");
27
27
  Object.defineProperty(exports, "status", { enumerable: true, get: function () { return status_1.status; } });
28
28
  var flow_1 = require("./flow");
29
29
  Object.defineProperty(exports, "flow", { enumerable: true, get: function () { return flow_1.flow; } });
30
+ var spec_1 = require("./spec");
31
+ Object.defineProperty(exports, "specValidate", { enumerable: true, get: function () { return spec_1.specValidate; } });
32
+ Object.defineProperty(exports, "listSpecTypes", { enumerable: true, get: function () { return spec_1.listSpecTypes; } });
30
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iCAA6D;AAApD,8FAAA,KAAK,OAAA;AAAE,iGAAA,QAAQ,OAAA;AACxB,uCAAqF;AAA5E,oGAAA,QAAQ,OAAA;AAAE,mHAAA,uBAAuB,OAAA;AAC1C,6CAAqF;AAA5E,4GAAA,aAAa,OAAA;AAAE,4GAAA,aAAa,OAAA;AACrC,+BAAgD;AAAvC,4FAAA,IAAI,OAAA;AACb,mCAAsD;AAA7C,gGAAA,MAAM,OAAA;AACf,mCAAyC;AAAhC,uGAAA,aAAa,OAAA;AACtB,uCAA6C;AAApC,2GAAA,eAAe,OAAA;AACxB,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AACvB,mCAAsD;AAA7C,gGAAA,MAAM,OAAA;AACf,+BAAgD;AAAvC,4FAAA,IAAI,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iCAA6D;AAApD,8FAAA,KAAK,OAAA;AAAE,iGAAA,QAAQ,OAAA;AACxB,uCAAqF;AAA5E,oGAAA,QAAQ,OAAA;AAAE,mHAAA,uBAAuB,OAAA;AAC1C,6CAAqF;AAA5E,4GAAA,aAAa,OAAA;AAAE,4GAAA,aAAa,OAAA;AACrC,+BAAgD;AAAvC,4FAAA,IAAI,OAAA;AACb,mCAAsD;AAA7C,gGAAA,MAAM,OAAA;AACf,mCAAyC;AAAhC,uGAAA,aAAa,OAAA;AACtB,uCAA6C;AAApC,2GAAA,eAAe,OAAA;AACxB,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AACvB,mCAAsD;AAA7C,gGAAA,MAAM,OAAA;AACf,+BAAgD;AAAvC,4FAAA,IAAI,OAAA;AACb,+BAA+E;AAAtE,oGAAA,YAAY,OAAA;AAAE,qGAAA,aAAa,OAAA"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * harness spec validate 命令
3
+ *
4
+ * 验证 Spec 文件格式
5
+ *
6
+ * 设计原则:
7
+ * - 框架不包含具体 Schema 定义
8
+ * - 项目需要定义自己的 Spec Schema
9
+ * - 支持动态加载项目的 Schema
10
+ */
11
+ export interface SpecValidateOptions {
12
+ /** Schema 路径(项目定义) */
13
+ schema?: string;
14
+ /** 只验证暂存文件 */
15
+ staged?: boolean;
16
+ /** 验证指定文件 */
17
+ file?: string;
18
+ /** 项目路径 */
19
+ projectPath?: string;
20
+ /** 详细输出 */
21
+ verbose?: boolean;
22
+ }
23
+ /**
24
+ * 执行 Spec 验证
25
+ */
26
+ export declare function specValidate(options: SpecValidateOptions): Promise<void>;
27
+ /**
28
+ * 列出支持的 Spec 类型
29
+ */
30
+ export declare function listSpecTypes(): void;
31
+ //# sourceMappingURL=spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,MAAM,WAAW,mBAAmB;IAClC,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC9E;AA2ED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CASpC"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * harness spec validate 命令
4
+ *
5
+ * 验证 Spec 文件格式
6
+ *
7
+ * 设计原则:
8
+ * - 框架不包含具体 Schema 定义
9
+ * - 项目需要定义自己的 Spec Schema
10
+ * - 支持动态加载项目的 Schema
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ var __importDefault = (this && this.__importDefault) || function (mod) {
46
+ return (mod && mod.__esModule) ? mod : { "default": mod };
47
+ };
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.specValidate = specValidate;
50
+ exports.listSpecTypes = listSpecTypes;
51
+ const chalk_1 = __importDefault(require("chalk"));
52
+ const path = __importStar(require("path"));
53
+ const validator_1 = require("../../core/spec/validator");
54
+ /**
55
+ * 执行 Spec 验证
56
+ */
57
+ async function specValidate(options) {
58
+ console.log(chalk_1.default.blue('📋 验证 Spec 文件...'));
59
+ const projectPath = options.projectPath || process.cwd();
60
+ const validator = validator_1.SpecValidator.getInstance();
61
+ // 设置 Schema 路径
62
+ if (options.schema) {
63
+ const absoluteSchemaPath = path.resolve(projectPath, options.schema);
64
+ validator.setConfig({ schemaPath: absoluteSchemaPath });
65
+ console.log(chalk_1.default.gray(`Schema 路径: ${absoluteSchemaPath}`));
66
+ }
67
+ let result;
68
+ // 单文件验证
69
+ if (options.file) {
70
+ const absoluteFilePath = path.resolve(projectPath, options.file);
71
+ console.log(chalk_1.default.gray(`验证文件: ${absoluteFilePath}`));
72
+ result = await validator.validateFile(absoluteFilePath);
73
+ printSingleResult(result, options.verbose);
74
+ return;
75
+ }
76
+ // 批量验证
77
+ console.log(chalk_1.default.gray(`项目路径: ${projectPath}`));
78
+ console.log(chalk_1.default.gray(`仅暂存: ${options.staged ? '是' : '否'}`));
79
+ console.log();
80
+ result = await (0, validator_1.validateAllSpecs)(projectPath, options.staged);
81
+ // 打印结果
82
+ printBatchResult(result, options.verbose);
83
+ // 根据失败级别决定退出码
84
+ if (!options.staged && result.failed > 0) {
85
+ process.exitCode = 1;
86
+ }
87
+ }
88
+ /**
89
+ * 打印单个文件验证结果
90
+ */
91
+ function printSingleResult(result, verbose) {
92
+ if (result.valid) {
93
+ console.log(chalk_1.default.green(`✅ ${result.file} 验证通过`));
94
+ }
95
+ else {
96
+ console.log(chalk_1.default.red(`❌ ${result.file} 验证失败`));
97
+ }
98
+ if (result.errors.length > 0) {
99
+ console.log();
100
+ console.log(chalk_1.default.red('错误:'));
101
+ for (const error of result.errors) {
102
+ console.log(chalk_1.default.red(` - ${error.path ? error.path + ': ' : ''}${error.message}`));
103
+ }
104
+ }
105
+ if (result.warnings.length > 0) {
106
+ console.log();
107
+ console.log(chalk_1.default.yellow('警告:'));
108
+ for (const warning of result.warnings) {
109
+ console.log(chalk_1.default.yellow(` - ${warning.path ? warning.path + ': ' : ''}${warning.message}`));
110
+ }
111
+ }
112
+ if (verbose && result.metrics) {
113
+ console.log();
114
+ console.log(chalk_1.default.gray('指标:'));
115
+ for (const [key, value] of Object.entries(result.metrics)) {
116
+ console.log(chalk_1.default.gray(` - ${key}: ${value}`));
117
+ }
118
+ }
119
+ }
120
+ /**
121
+ * 打印批量验证结果
122
+ */
123
+ function printBatchResult(result, verbose) {
124
+ // 汇总
125
+ console.log(chalk_1.default.bold('验证结果:'));
126
+ console.log(chalk_1.default.gray(` 总文件数: ${result.total}`));
127
+ console.log(chalk_1.default.green(` 通过: ${result.passed}`));
128
+ console.log(chalk_1.default.red(` 失败: ${result.failed}`));
129
+ console.log(chalk_1.default.yellow(` 警告: ${result.warnings}`));
130
+ console.log();
131
+ // 详细结果
132
+ if (verbose || result.failed > 0) {
133
+ for (const r of result.results) {
134
+ if (!r.valid || verbose) {
135
+ printSingleResult(r, verbose);
136
+ console.log();
137
+ }
138
+ }
139
+ }
140
+ // 成功提示
141
+ if (result.failed === 0 && result.total > 0) {
142
+ console.log(chalk_1.default.green('✅ 所有 Spec 文件验证通过'));
143
+ }
144
+ else if (result.total === 0) {
145
+ console.log(chalk_1.default.gray('没有找到 Spec 文件,跳过验证'));
146
+ console.log();
147
+ console.log(chalk_1.default.gray('提示: Spec 文件包括:'));
148
+ console.log(chalk_1.default.gray(' - ARCHITECTURE.md'));
149
+ console.log(chalk_1.default.gray(' - specs/ 目录下的 .yml/.yaml 文件'));
150
+ console.log();
151
+ console.log(chalk_1.default.gray('要定义自己的 Schema,请在项目中创建:'));
152
+ console.log(chalk_1.default.gray(' src/specs/schemas/index.ts'));
153
+ console.log(chalk_1.default.gray(' 导出 validate 函数'));
154
+ }
155
+ }
156
+ /**
157
+ * 列出支持的 Spec 类型
158
+ */
159
+ function listSpecTypes() {
160
+ console.log(chalk_1.default.blue('📋 支持的 Spec 类型:'));
161
+ console.log();
162
+ console.log(' architecture - ARCHITECTURE.md 架构文档');
163
+ console.log(' module - 模块定义(specs/modules/*.yml)');
164
+ console.log(' api - API 定义(specs/apis/*.yml)');
165
+ console.log(' custom - 自定义 Spec');
166
+ console.log();
167
+ console.log(chalk_1.default.gray('提示: 项目可以定义自己的 Schema 进行验证'));
168
+ }
169
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/cli/commands/spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAQ/D,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAkEhD,CAAC;AAQF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA6QjD,CAAC;AAQF,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA+C3C,CAAC;AAMF;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,UAAU,EAAE,CAMhD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,EAAE,CAKjF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEhE;AAMD;;GAEG;AACH,wBAAgB,UAAU,IAAI,UAAU,EAAE,CAEzC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,EAAE,CAE1E;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEzD;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,UAAU,OAAO,GAAG,SAAS,GAAG,MAAM,KAAG,UAAU,EAMvF,CAAC"}
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAQ/D,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAkEhD,CAAC;AAQF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAgRjD,CAAC;AAQF,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA+C3C,CAAC;AAMF;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,UAAU,EAAE,CAMhD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,EAAE,CAKjF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEhE;AAMD;;GAEG;AACH,wBAAgB,UAAU,IAAI,UAAU,EAAE,CAEzC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,EAAE,CAE1E;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEzD;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,UAAU,OAAO,GAAG,SAAS,GAAG,MAAM,KAAG,UAAU,EAMvF,CAAC"}
@@ -197,7 +197,7 @@ exports.GUIDELINES = {
197
197
  },
198
198
  /**
199
199
  * 复用检查优先
200
- * 例外:紧急情况
200
+ * 例外:紧急修复、hotfix、安全补丁
201
201
  */
202
202
  no_creation_without_reuse_check: {
203
203
  id: 'no_creation_without_reuse_check',
@@ -224,7 +224,10 @@ exports.GUIDELINES = {
224
224
  1. 直接复用现有能力
225
225
  2. 扩展现有能力
226
226
  3. 组合多个现有能力
227
- 4. 创建新能力`,
227
+ 4. 创建新能力
228
+
229
+ 例外情况下可跳过,但必须记录跳过原因。`,
230
+ exceptions: ['emergency_fix', 'hotfix', 'security_patch'],
228
231
  },
229
232
  /**
230
233
  * 功能清单同步
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../src/core/constraints/definitions.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAoaH,8CAMC;AAKD,4DAKC;AAKD,sCAEC;AASD,gCAEC;AAKD,8CAEC;AAKD,wBAEC;AAhdD,QAAQ;AACR,qDAA+D;AAAtD,mHAAA,qBAAqB,OAAA;AAE9B,2CAA2C;AAC3C,gBAAgB;AAChB,GAAG;AACH,sBAAsB;AACtB,2CAA2C;AAE9B,QAAA,SAAS,GAA+B;IACnD;;;OAGG;IACH,oBAAoB,EAAE;QACpB,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE,mCAAmC;KACjD;IAED;;;OAGG;IACH,gBAAgB,EAAE;QAChB,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,wCAAwC;QAC9C,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,uBAAuB;QAChC,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,sDAAsD;KACpE;IAED;;;OAGG;IACH,kCAAkC,EAAE;QAClC,EAAE,EAAE,oCAAoC;QACxC,IAAI,EAAE,0DAA0D;QAChE,OAAO,EAAE,oBAAoB;QAC7B,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,uBAAuB;QAChC,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,kEAAkE;KAChF;IAED;;;OAGG;IACH,sBAAsB,EAAE;QACtB,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,0CAA0C;QAChD,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE;;;;;;;;;;YAUL;KACT;CACF,CAAC;AAEF,2CAA2C;AAC3C,mBAAmB;AACnB,GAAG;AACH,wBAAwB;AACxB,2CAA2C;AAE9B,QAAA,UAAU,GAA+B;IACpD;;;OAGG;IACH,yBAAyB,EAAE;QACzB,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,iDAAiD;QACvD,OAAO,EAAE,kBAAkB;QAC3B,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE;;;;;;;;;;;;;;;4BAeW;QACxB,UAAU,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,gBAAgB,CAAC;KACpE;IAED;;;OAGG;IACH,oBAAoB,EAAE;QACpB,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,6CAA6C;QACnD,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE;;;;;;;;;;;;mBAYE;QACf,UAAU,EAAE,CAAC,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,wBAAwB,CAAC;KAC5F;IAED;;;OAGG;IACH,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,+CAA+C;QACrD,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE;;;;;;;;;;aAUJ;QACT,UAAU,EAAE,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,kBAAkB,CAAC;KAC9E;IAED;;;OAGG;IACH,uBAAuB,EAAE;QACvB,EAAE,EAAE,yBAAyB;QAC7B,IAAI,EAAE,kDAAkD;QACxD,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,qBAAqB,CAAC;QAC3E,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE;;;;;;;;;kCASiB;QAC9B,UAAU,EAAE,CAAC,sBAAsB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,sBAAsB,CAAC;KAC1G;IAED;;;OAGG;IACH,+BAA+B,EAAE;QAC/B,EAAE,EAAE,iCAAiC;QACrC,IAAI,EAAE,+CAA+C;QACrD,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE;YACP,eAAe;YACf,eAAe;YACf,mBAAmB;YACnB,iBAAiB;YACjB,kBAAkB;YAClB,qBAAqB;SACtB;QACD,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE;;;;;;;;;;;SAWR;KACN;IAED;;;OAGG;IACH,eAAe,EAAE;QACf,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,0CAA0C;QAChD,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC;QAC1F,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;;;;;;;;;;;YAWL;QACR,UAAU,EAAE,CAAC,mBAAmB,EAAE,cAAc,EAAE,0BAA0B,CAAC;KAC9E;IAED;;;OAGG;IACH,kCAAkC,EAAE;QAClC,EAAE,EAAE,oCAAoC;QACxC,IAAI,EAAE,4CAA4C;QAClD,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;;;;;;;;;;cAUH;QACV,UAAU,EAAE,CAAC,wBAAwB,EAAE,sBAAsB,EAAE,qBAAqB,CAAC;KACtF;IAED;;;OAGG;IACH,qBAAqB,EAAE;QACrB,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,uCAAuC;QAC7C,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;;;;;;;;;;OAUV;KACJ;IAED;;;OAGG;IACH,sBAAsB,EAAE;QACtB,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,sCAAsC;QAC5C,OAAO,EAAE,aAAa;QACtB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,uBAAuB;QAChC,WAAW,EAAE,gBAAgB;QAC7B,WAAW,EAAE;;;;;;;;YAQL;KACT;IAED;;;OAGG;IACH,mCAAmC,EAAE;QACnC,EAAE,EAAE,qCAAqC;QACzC,IAAI,EAAE,0DAA0D;QAChE,OAAO,EAAE,kBAAkB;QAC3B,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,qBAAqB,CAAC;QACzE,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;WAmBN;QACP,UAAU,EAAE,CAAC,sBAAsB,EAAE,eAAe,EAAE,iBAAiB,CAAC;KACzE;CACF,CAAC;AAEF,2CAA2C;AAC3C,WAAW;AACX,GAAG;AACH,eAAe;AACf,2CAA2C;AAE9B,QAAA,IAAI,GAA+B;IAC9C;;OAEG;IACH,eAAe,EAAE;QACf,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,gCAAgC;QACtC,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE;;;;;;;sBAOK;KACnB;IAED;;OAEG;IACH,2BAA2B,EAAE;QAC3B,EAAE,EAAE,6BAA6B;QACjC,IAAI,EAAE,sCAAsC;QAC5C,OAAO,EAAE,kBAAkB;QAC3B,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE;;;;;;;;;;;;;;mBAcE;KAChB;CACF,CAAC;AAEF,2CAA2C;AAC3C,OAAO;AACP,2CAA2C;AAE3C;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO;QACL,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAS,CAAC;QAC3B,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAU,CAAC;QAC5B,GAAG,MAAM,CAAC,MAAM,CAAC,YAAI,CAAC;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,OAA0B;IACjE,OAAO,iBAAiB,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;QAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/F,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,EAAU;IACtC,OAAO,iBAAS,CAAC,EAAE,CAAC,IAAI,kBAAU,CAAC,EAAE,CAAC,IAAI,YAAI,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,2CAA2C;AAC3C,UAAU;AACV,2CAA2C;AAE3C;;GAEG;AACH,SAAgB,UAAU;IACxB,OAAO,iBAAiB,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,OAA0B;IAC1D,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,EAAU;IAC/B,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACI,MAAM,oBAAoB,GAAG,CAAC,QAAsC,EAAgB,EAAE;IAC3F,SAAS;IACT,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,iBAAS,CAAC,CAAC;IAC1D,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,kBAAU,CAAC,CAAC;IAC7D,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,YAAI,CAAC,CAAC;IACpD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AANW,QAAA,oBAAoB,wBAM/B"}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../src/core/constraints/definitions.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,6 @@ export { IRON_LAWS, GUIDELINES, TIPS, getAllConstraints, findConstraintsByTrigge
5
5
  export { ConstraintChecker, checkConstraint, checkConstraints, checkBeforeExecution, constraintChecker, IronLawChecker, checkIronLaw, checkAllIronLaws, ironLawChecker, } from './checker';
6
6
  export type { ConstraintId, ConstraintLevel, ConstraintTrigger, Constraint, ConstraintResult, ConstraintContext, ConstraintCheckResult, IronLawId, IronLawSeverity, IronLawTrigger, IronLaw, IronLawResult, IronLawContext, } from '../../types/constraint';
7
7
  export { ConstraintViolationError, IronLawViolationError, } from '../../types/constraint';
8
+ export { ConstraintInterceptor, constraintInterceptor, interceptOperation, claimOperation, } from './interceptor';
9
+ export type { EnforcementId, EnforcementExecutor, EnforcementContext, EnforcementResult, InterceptionResult, } from '../../types/enforcement';
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,SAAS,EACT,UAAU,EACV,IAAI,EACJ,iBAAiB,EACjB,wBAAwB,EACxB,aAAa,EAEb,UAAU,EACV,iBAAiB,EACjB,MAAM,EACN,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EAEjB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,cAAc,GACf,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EAErB,SAAS,EACT,eAAe,EACf,cAAc,EACd,OAAO,EACP,aAAa,EACb,cAAc,GACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,wBAAwB,EAExB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,SAAS,EACT,UAAU,EACV,IAAI,EACJ,iBAAiB,EACjB,wBAAwB,EACxB,aAAa,EAEb,UAAU,EACV,iBAAiB,EACjB,MAAM,EACN,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EAEjB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,cAAc,GACf,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EAErB,SAAS,EACT,eAAe,EACf,cAAc,EACd,OAAO,EACP,aAAa,EACb,cAAc,GACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,wBAAwB,EAExB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * 约束模块入口
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.IronLawViolationError = exports.ConstraintViolationError = exports.ironLawChecker = exports.checkAllIronLaws = exports.checkIronLaw = exports.IronLawChecker = exports.constraintChecker = exports.checkBeforeExecution = exports.checkConstraints = exports.checkConstraint = exports.ConstraintChecker = exports.filterLawsBySeverity = exports.getLaw = exports.findLawsByTrigger = exports.getAllLaws = exports.getConstraint = exports.findConstraintsByTrigger = exports.getAllConstraints = exports.TIPS = exports.GUIDELINES = exports.IRON_LAWS = void 0;
6
+ exports.claimOperation = exports.interceptOperation = exports.constraintInterceptor = exports.ConstraintInterceptor = exports.IronLawViolationError = exports.ConstraintViolationError = exports.ironLawChecker = exports.checkAllIronLaws = exports.checkIronLaw = exports.IronLawChecker = exports.constraintChecker = exports.checkBeforeExecution = exports.checkConstraints = exports.checkConstraint = exports.ConstraintChecker = exports.filterLawsBySeverity = exports.getLaw = exports.findLawsByTrigger = exports.getAllLaws = exports.getConstraint = exports.findConstraintsByTrigger = exports.getAllConstraints = exports.TIPS = exports.GUIDELINES = exports.IRON_LAWS = void 0;
7
7
  // 三层约束定义
8
8
  var definitions_1 = require("./definitions");
9
9
  Object.defineProperty(exports, "IRON_LAWS", { enumerable: true, get: function () { return definitions_1.IRON_LAWS; } });
@@ -33,4 +33,10 @@ var constraint_1 = require("../../types/constraint");
33
33
  Object.defineProperty(exports, "ConstraintViolationError", { enumerable: true, get: function () { return constraint_1.ConstraintViolationError; } });
34
34
  // 向后兼容
35
35
  Object.defineProperty(exports, "IronLawViolationError", { enumerable: true, get: function () { return constraint_1.IronLawViolationError; } });
36
+ // 约束拦截器
37
+ var interceptor_1 = require("./interceptor");
38
+ Object.defineProperty(exports, "ConstraintInterceptor", { enumerable: true, get: function () { return interceptor_1.ConstraintInterceptor; } });
39
+ Object.defineProperty(exports, "constraintInterceptor", { enumerable: true, get: function () { return interceptor_1.constraintInterceptor; } });
40
+ Object.defineProperty(exports, "interceptOperation", { enumerable: true, get: function () { return interceptor_1.interceptOperation; } });
41
+ Object.defineProperty(exports, "claimOperation", { enumerable: true, get: function () { return interceptor_1.claimOperation; } });
36
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/constraints/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,SAAS;AACT,6CAYuB;AAXrB,wGAAA,SAAS,OAAA;AACT,yGAAA,UAAU,OAAA;AACV,mGAAA,IAAI,OAAA;AACJ,gHAAA,iBAAiB,OAAA;AACjB,uHAAA,wBAAwB,OAAA;AACxB,4GAAA,aAAa,OAAA;AACb,OAAO;AACP,yGAAA,UAAU,OAAA;AACV,gHAAA,iBAAiB,OAAA;AACjB,qGAAA,MAAM,OAAA;AACN,mHAAA,oBAAoB,OAAA;AAGtB,QAAQ;AACR,qCAWmB;AAVjB,4GAAA,iBAAiB,OAAA;AACjB,0GAAA,eAAe,OAAA;AACf,2GAAA,gBAAgB,OAAA;AAChB,+GAAA,oBAAoB,OAAA;AACpB,4GAAA,iBAAiB,OAAA;AACjB,OAAO;AACP,yGAAA,cAAc,OAAA;AACd,uGAAA,YAAY,OAAA;AACZ,2GAAA,gBAAgB,OAAA;AAChB,yGAAA,cAAc,OAAA;AAqBhB,qDAIgC;AAH9B,sHAAA,wBAAwB,OAAA;AACxB,OAAO;AACP,mHAAA,qBAAqB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/constraints/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,SAAS;AACT,6CAYuB;AAXrB,wGAAA,SAAS,OAAA;AACT,yGAAA,UAAU,OAAA;AACV,mGAAA,IAAI,OAAA;AACJ,gHAAA,iBAAiB,OAAA;AACjB,uHAAA,wBAAwB,OAAA;AACxB,4GAAA,aAAa,OAAA;AACb,OAAO;AACP,yGAAA,UAAU,OAAA;AACV,gHAAA,iBAAiB,OAAA;AACjB,qGAAA,MAAM,OAAA;AACN,mHAAA,oBAAoB,OAAA;AAGtB,QAAQ;AACR,qCAWmB;AAVjB,4GAAA,iBAAiB,OAAA;AACjB,0GAAA,eAAe,OAAA;AACf,2GAAA,gBAAgB,OAAA;AAChB,+GAAA,oBAAoB,OAAA;AACpB,4GAAA,iBAAiB,OAAA;AACjB,OAAO;AACP,yGAAA,cAAc,OAAA;AACd,uGAAA,YAAY,OAAA;AACZ,2GAAA,gBAAgB,OAAA;AAChB,yGAAA,cAAc,OAAA;AAqBhB,qDAIgC;AAH9B,sHAAA,wBAAwB,OAAA;AACxB,OAAO;AACP,mHAAA,qBAAqB,OAAA;AAGvB,QAAQ;AACR,6CAKuB;AAJrB,oHAAA,qBAAqB,OAAA;AACrB,oHAAA,qBAAqB,OAAA;AACrB,iHAAA,kBAAkB,OAAA;AAClB,6GAAA,cAAc,OAAA"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * ConstraintInterceptor - 约束拦截器
3
+ */
4
+ import type { ConstraintTrigger, ConstraintContext } from '../../types/constraint';
5
+ import type { EnforcementId, EnforcementExecutor, InterceptionResult } from '../../types/enforcement';
6
+ export declare class ConstraintInterceptor {
7
+ private static instance;
8
+ private executors;
9
+ private enabled;
10
+ private skipEnforcements;
11
+ private constructor();
12
+ static getInstance(): ConstraintInterceptor;
13
+ setEnabled(enabled: boolean): void;
14
+ register(enforcementId: EnforcementId, executor: EnforcementExecutor, source?: string): void;
15
+ registerBatch(registrations: Array<{
16
+ enforcementId: EnforcementId;
17
+ executor: EnforcementExecutor;
18
+ }>): void;
19
+ unregister(enforcementId: EnforcementId): boolean;
20
+ hasExecutor(enforcementId: EnforcementId): boolean;
21
+ getExecutor(enforcementId: EnforcementId): EnforcementExecutor | undefined;
22
+ getRegistrations(): {
23
+ id: EnforcementId;
24
+ executor: EnforcementExecutor;
25
+ registeredAt: Date;
26
+ source?: string;
27
+ }[];
28
+ skip(enforcementIds: EnforcementId[]): void;
29
+ clearSkips(): void;
30
+ intercept(trigger: ConstraintTrigger, context: ConstraintContext): Promise<InterceptionResult>;
31
+ claim(trigger: ConstraintTrigger, context: ConstraintContext): Promise<void>;
32
+ canProceed(trigger: ConstraintTrigger, context: ConstraintContext): Promise<boolean>;
33
+ }
34
+ export declare const constraintInterceptor: ConstraintInterceptor;
35
+ export declare function interceptOperation(trigger: ConstraintTrigger, context: ConstraintContext): Promise<InterceptionResult>;
36
+ export declare function claimOperation(trigger: ConstraintTrigger, context: ConstraintContext): Promise<void>;
37
+ //# sourceMappingURL=interceptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/interceptor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAEV,iBAAiB,EACjB,iBAAiB,EAElB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EAGnB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAKjC,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB;IAC/C,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,gBAAgB,CAAiC;IAEzD,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,qBAAqB;IAO3C,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,QAAQ,CACN,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,mBAAmB,EAC7B,MAAM,CAAC,EAAE,MAAM,GACd,IAAI;IAIP,aAAa,CACX,aAAa,EAAE,KAAK,CAAC;QACnB,aAAa,EAAE,aAAa,CAAC;QAC7B,QAAQ,EAAE,mBAAmB,CAAC;KAC/B,CAAC,GACD,IAAI;IAMP,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO;IAIjD,WAAW,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO;IAIlD,WAAW,CAAC,aAAa,EAAE,aAAa,GAAG,mBAAmB,GAAG,SAAS;IAI1E,gBAAgB,IAAI;QAAE,EAAE,EAAE,aAAa,CAAC;QAAC,QAAQ,EAAE,mBAAmB,CAAC;QAAC,YAAY,EAAE,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE;IAS/G,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,IAAI;IAM3C,UAAU,IAAI,IAAI;IAIZ,SAAS,CACb,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,kBAAkB,CAAC;IAkGxB,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5E,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAO3F;AAED,eAAO,MAAM,qBAAqB,uBAAsC,CAAC;AAEzE,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAEf"}