@dommaker/harness 0.12.16 → 0.13.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.
Files changed (52) hide show
  1. package/README.md +11 -8
  2. package/bin/harness.js +13 -2
  3. package/dist/cli/commands/check.d.ts.map +1 -1
  4. package/dist/cli/commands/check.js +35 -2
  5. package/dist/cli/commands/check.js.map +1 -1
  6. package/dist/cli/commands/constraints.d.ts +27 -0
  7. package/dist/cli/commands/constraints.d.ts.map +1 -0
  8. package/dist/cli/commands/constraints.js +78 -0
  9. package/dist/cli/commands/constraints.js.map +1 -0
  10. package/dist/cli/commands/index.d.ts +1 -0
  11. package/dist/cli/commands/index.d.ts.map +1 -1
  12. package/dist/cli/commands/index.js +4 -1
  13. package/dist/cli/commands/index.js.map +1 -1
  14. package/dist/cli/commands/init.d.ts.map +1 -1
  15. package/dist/cli/commands/init.js +102 -8
  16. package/dist/cli/commands/init.js.map +1 -1
  17. package/dist/cli/commands/sync-docs.d.ts.map +1 -1
  18. package/dist/cli/commands/sync-docs.js +13 -56
  19. package/dist/cli/commands/sync-docs.js.map +1 -1
  20. package/dist/cli/commands/validate.d.ts.map +1 -1
  21. package/dist/cli/commands/validate.js +21 -1
  22. package/dist/cli/commands/validate.js.map +1 -1
  23. package/dist/core/constraints/checker.d.ts +0 -19
  24. package/dist/core/constraints/checker.d.ts.map +1 -1
  25. package/dist/core/constraints/checker.js +17 -185
  26. package/dist/core/constraints/checker.js.map +1 -1
  27. package/dist/core/constraints/definitions.d.ts.map +1 -1
  28. package/dist/core/constraints/definitions.js +11 -0
  29. package/dist/core/constraints/definitions.js.map +1 -1
  30. package/dist/core/constraints/doc-freshness/runner.d.ts.map +1 -1
  31. package/dist/core/constraints/doc-freshness/runner.js +2 -1
  32. package/dist/core/constraints/doc-freshness/runner.js.map +1 -1
  33. package/dist/core/constraints/index.d.ts +1 -1
  34. package/dist/core/constraints/index.d.ts.map +1 -1
  35. package/dist/core/constraints/index.js +1 -2
  36. package/dist/core/constraints/index.js.map +1 -1
  37. package/dist/core/constraints/prompt-injection.d.ts +8 -5
  38. package/dist/core/constraints/prompt-injection.d.ts.map +1 -1
  39. package/dist/core/constraints/prompt-injection.js +7 -5
  40. package/dist/core/constraints/prompt-injection.js.map +1 -1
  41. package/dist/governance/executor.d.ts.map +1 -1
  42. package/dist/governance/executor.js +10 -4
  43. package/dist/governance/executor.js.map +1 -1
  44. package/dist/governance/types.d.ts +1 -1
  45. package/dist/governance/types.d.ts.map +1 -1
  46. package/dist/types/project-config.d.ts +0 -2
  47. package/dist/types/project-config.d.ts.map +1 -1
  48. package/dist/utils/detect-source-roots.d.ts +12 -0
  49. package/dist/utils/detect-source-roots.d.ts.map +1 -0
  50. package/dist/utils/detect-source-roots.js +119 -0
  51. package/dist/utils/detect-source-roots.js.map +1 -0
  52. package/package.json +2 -1
@@ -53,8 +53,6 @@ export interface ContextFilesConfig {
53
53
  export interface ChangelogConfig {
54
54
  /** 格式 */
55
55
  format?: 'keep-a-changelog' | 'conventional';
56
- /** 是否自动生成条目(sync-docs 辅助) */
57
- auto_append?: boolean;
58
56
  }
59
57
  /**
60
58
  * 文档新鲜度配置
@@ -1 +1 @@
1
- {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/types/project-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/types/project-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * detectSourceRoots — 自动检测工程源码根目录
3
+ *
4
+ * 统一所有源码目录发现逻辑:
5
+ * 1. monorepo: packages/下各包的 src 或 lib 子目录
6
+ * 2. monorepo: apps/下各应用的 src/modules 子目录
7
+ * 3. 单 repo: src/ lib/ 目录
8
+ *
9
+ * 返回相对 projectPath 的路径数组。全都不存在时返回空数组。
10
+ */
11
+ export declare function detectSourceRoots(projectPath: string): string[];
12
+ //# sourceMappingURL=detect-source-roots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-source-roots.d.ts","sourceRoot":"","sources":["../../src/utils/detect-source-roots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAyE/D"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ /**
3
+ * detectSourceRoots — 自动检测工程源码根目录
4
+ *
5
+ * 统一所有源码目录发现逻辑:
6
+ * 1. monorepo: packages/下各包的 src 或 lib 子目录
7
+ * 2. monorepo: apps/下各应用的 src/modules 子目录
8
+ * 3. 单 repo: src/ lib/ 目录
9
+ *
10
+ * 返回相对 projectPath 的路径数组。全都不存在时返回空数组。
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.detectSourceRoots = detectSourceRoots;
14
+ const fs_1 = require("fs");
15
+ const path_1 = require("path");
16
+ function detectSourceRoots(projectPath) {
17
+ const roots = [];
18
+ // 1. monorepo: packages/*
19
+ const packagesDir = (0, path_1.join)(projectPath, 'packages');
20
+ if ((0, fs_1.existsSync)(packagesDir)) {
21
+ try {
22
+ const entries = (0, fs_1.readdirSync)(packagesDir, { withFileTypes: true });
23
+ for (const entry of entries) {
24
+ if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name.startsWith('__'))
25
+ continue;
26
+ const pkgDir = (0, path_1.join)(packagesDir, entry.name);
27
+ // 检查常见的源码子目录
28
+ let hasSubDir = false;
29
+ for (const sub of ['src', 'lib']) {
30
+ const subDir = (0, path_1.join)(pkgDir, sub);
31
+ if ((0, fs_1.existsSync)(subDir) && hasSourceFiles(subDir)) {
32
+ roots.push(`packages/${entry.name}/${sub}`);
33
+ hasSubDir = true;
34
+ }
35
+ }
36
+ // 仅当无 src/lib 子目录时,包根目录才作为源码目录
37
+ if (!hasSubDir && hasSourceFiles(pkgDir)) {
38
+ roots.push(`packages/${entry.name}`);
39
+ }
40
+ }
41
+ }
42
+ catch { /* skip */ }
43
+ }
44
+ // 2. monorepo: apps/*
45
+ const appsDir = (0, path_1.join)(projectPath, 'apps');
46
+ if ((0, fs_1.existsSync)(appsDir)) {
47
+ try {
48
+ const entries = (0, fs_1.readdirSync)(appsDir, { withFileTypes: true });
49
+ for (const entry of entries) {
50
+ if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name.startsWith('__'))
51
+ continue;
52
+ const appDir = (0, path_1.join)(appsDir, entry.name);
53
+ // apps/api/src/modules/* 的子目录
54
+ const modulesDir = (0, path_1.join)(appDir, 'src', 'modules');
55
+ if ((0, fs_1.existsSync)(modulesDir)) {
56
+ try {
57
+ const modEntries = (0, fs_1.readdirSync)(modulesDir, { withFileTypes: true });
58
+ for (const mod of modEntries) {
59
+ if (!mod.isDirectory() || mod.name.startsWith('.') || mod.name.startsWith('__'))
60
+ continue;
61
+ const modPath = (0, path_1.join)(modulesDir, mod.name);
62
+ if (hasSourceFiles(modPath)) {
63
+ roots.push(`apps/${entry.name}/src/modules/${mod.name}`);
64
+ }
65
+ }
66
+ }
67
+ catch { /* skip */ }
68
+ }
69
+ // apps/xxx/src 本身
70
+ const appSrcDir = (0, path_1.join)(appDir, 'src');
71
+ if ((0, fs_1.existsSync)(appSrcDir) && hasSourceFiles(appSrcDir)) {
72
+ // 避免重复(modules 已覆盖子目录)
73
+ if (!roots.some(r => r.startsWith(`apps/${entry.name}/src/`))) {
74
+ roots.push(`apps/${entry.name}/src`);
75
+ }
76
+ }
77
+ }
78
+ }
79
+ catch { /* skip */ }
80
+ }
81
+ // 3. 单 repo: src/, lib/
82
+ for (const dir of ['src', 'lib']) {
83
+ const absDir = (0, path_1.join)(projectPath, dir);
84
+ if ((0, fs_1.existsSync)(absDir) && hasSourceFiles(absDir)) {
85
+ roots.push(dir);
86
+ }
87
+ }
88
+ return roots;
89
+ }
90
+ /**
91
+ * 检查目录(递归)中是否包含 .ts 源文件(排除 __tests__, node_modules, dist)
92
+ */
93
+ function hasSourceFiles(dir) {
94
+ try {
95
+ const entries = (0, fs_1.readdirSync)(dir, { withFileTypes: true });
96
+ for (const entry of entries) {
97
+ const name = entry.name;
98
+ if (name.startsWith('.') || name === 'node_modules' || name === 'dist')
99
+ continue;
100
+ if (name === '__tests__' || name === '__mocks__')
101
+ continue;
102
+ const fullPath = (0, path_1.join)(dir, name);
103
+ if (entry.isFile()) {
104
+ if (name.endsWith('.ts') && !name.endsWith('.d.ts')) {
105
+ return true;
106
+ }
107
+ }
108
+ else if (entry.isDirectory()) {
109
+ if (hasSourceFiles(fullPath))
110
+ return true;
111
+ }
112
+ }
113
+ }
114
+ catch {
115
+ return false;
116
+ }
117
+ return false;
118
+ }
119
+ //# sourceMappingURL=detect-source-roots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-source-roots.js","sourceRoot":"","sources":["../../src/utils/detect-source-roots.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dommaker/harness",
3
- "version": "0.12.16",
3
+ "version": "0.13.0",
4
4
  "description": "通用工程约束框架 - 铁律系统、检查点验证、测试门控、拦截器",
5
5
  "keywords": [
6
6
  "harness",
@@ -59,6 +59,7 @@
59
59
  "zod": "^3.22.4"
60
60
  },
61
61
  "devDependencies": {
62
+ "@jest/globals": "^29.7.0",
62
63
  "@types/glob": "^8.1.0",
63
64
  "@types/jest": "^29.5.0",
64
65
  "@types/js-yaml": "^4.0.9",