agentic-qe 1.8.4 → 1.9.1

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 (215) hide show
  1. package/.claude/skills/agentic-jujutsu/SKILL.md +645 -0
  2. package/CHANGELOG.md +394 -0
  3. package/README.md +86 -18
  4. package/dist/App.d.ts +5 -0
  5. package/dist/App.d.ts.map +1 -0
  6. package/dist/App.js +15 -0
  7. package/dist/App.js.map +1 -0
  8. package/dist/cli/commands/constitution.d.ts +34 -0
  9. package/dist/cli/commands/constitution.d.ts.map +1 -0
  10. package/dist/cli/commands/constitution.js +679 -0
  11. package/dist/cli/commands/constitution.js.map +1 -0
  12. package/dist/cli/commands/init.d.ts +8 -75
  13. package/dist/cli/commands/init.d.ts.map +1 -1
  14. package/dist/cli/commands/init.js +22 -2292
  15. package/dist/cli/commands/init.js.map +1 -1
  16. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  17. package/dist/cli/commands/learn/index.js +3 -4
  18. package/dist/cli/commands/learn/index.js.map +1 -1
  19. package/dist/cli/commands/telemetry.d.ts +36 -0
  20. package/dist/cli/commands/telemetry.d.ts.map +1 -0
  21. package/dist/cli/commands/telemetry.js +364 -0
  22. package/dist/cli/commands/telemetry.js.map +1 -0
  23. package/dist/cli/index.js +66 -0
  24. package/dist/cli/index.js.map +1 -1
  25. package/dist/cli/init/agents.d.ts +22 -0
  26. package/dist/cli/init/agents.d.ts.map +1 -0
  27. package/dist/cli/init/agents.js +522 -0
  28. package/dist/cli/init/agents.js.map +1 -0
  29. package/dist/cli/init/bash-wrapper.d.ts +14 -0
  30. package/dist/cli/init/bash-wrapper.d.ts.map +1 -0
  31. package/dist/cli/init/bash-wrapper.js +47 -0
  32. package/dist/cli/init/bash-wrapper.js.map +1 -0
  33. package/dist/cli/init/claude-config.d.ts +24 -0
  34. package/dist/cli/init/claude-config.d.ts.map +1 -0
  35. package/dist/cli/init/claude-config.js +275 -0
  36. package/dist/cli/init/claude-config.js.map +1 -0
  37. package/dist/cli/init/claude-md.d.ts +19 -0
  38. package/dist/cli/init/claude-md.d.ts.map +1 -0
  39. package/dist/cli/init/claude-md.js +153 -0
  40. package/dist/cli/init/claude-md.js.map +1 -0
  41. package/dist/cli/init/commands.d.ts +6 -0
  42. package/dist/cli/init/commands.d.ts.map +1 -0
  43. package/dist/cli/init/commands.js +83 -0
  44. package/dist/cli/init/commands.js.map +1 -0
  45. package/dist/cli/init/database-init.d.ts +15 -0
  46. package/dist/cli/init/database-init.d.ts.map +1 -0
  47. package/dist/cli/init/database-init.js +203 -0
  48. package/dist/cli/init/database-init.js.map +1 -0
  49. package/dist/cli/init/directory-structure.d.ts +14 -0
  50. package/dist/cli/init/directory-structure.d.ts.map +1 -0
  51. package/dist/cli/init/directory-structure.js +91 -0
  52. package/dist/cli/init/directory-structure.js.map +1 -0
  53. package/dist/cli/init/documentation.d.ts +14 -0
  54. package/dist/cli/init/documentation.d.ts.map +1 -0
  55. package/dist/cli/init/documentation.js +195 -0
  56. package/dist/cli/init/documentation.js.map +1 -0
  57. package/dist/cli/init/fleet-config.d.ts +34 -0
  58. package/dist/cli/init/fleet-config.d.ts.map +1 -0
  59. package/dist/cli/init/fleet-config.js +269 -0
  60. package/dist/cli/init/fleet-config.js.map +1 -0
  61. package/dist/cli/init/helpers.d.ts +6 -0
  62. package/dist/cli/init/helpers.d.ts.map +1 -0
  63. package/dist/cli/init/helpers.js +94 -0
  64. package/dist/cli/init/helpers.js.map +1 -0
  65. package/dist/cli/init/index.d.ts +32 -0
  66. package/dist/cli/init/index.d.ts.map +1 -0
  67. package/dist/cli/init/index.js +294 -0
  68. package/dist/cli/init/index.js.map +1 -0
  69. package/dist/cli/init/skills.d.ts +6 -0
  70. package/dist/cli/init/skills.d.ts.map +1 -0
  71. package/dist/cli/init/skills.js +138 -0
  72. package/dist/cli/init/skills.js.map +1 -0
  73. package/dist/cli/init/utils/file-utils.d.ts +74 -0
  74. package/dist/cli/init/utils/file-utils.d.ts.map +1 -0
  75. package/dist/cli/init/utils/file-utils.js +187 -0
  76. package/dist/cli/init/utils/file-utils.js.map +1 -0
  77. package/dist/cli/init/utils/index.d.ts +18 -0
  78. package/dist/cli/init/utils/index.d.ts.map +1 -0
  79. package/dist/cli/init/utils/index.js +48 -0
  80. package/dist/cli/init/utils/index.js.map +1 -0
  81. package/dist/cli/init/utils/log-utils.d.ts +47 -0
  82. package/dist/cli/init/utils/log-utils.d.ts.map +1 -0
  83. package/dist/cli/init/utils/log-utils.js +68 -0
  84. package/dist/cli/init/utils/log-utils.js.map +1 -0
  85. package/dist/cli/init/utils/path-utils.d.ts +91 -0
  86. package/dist/cli/init/utils/path-utils.d.ts.map +1 -0
  87. package/dist/cli/init/utils/path-utils.js +208 -0
  88. package/dist/cli/init/utils/path-utils.js.map +1 -0
  89. package/dist/cli/init/utils/validation-utils.d.ts +44 -0
  90. package/dist/cli/init/utils/validation-utils.d.ts.map +1 -0
  91. package/dist/cli/init/utils/validation-utils.js +68 -0
  92. package/dist/cli/init/utils/validation-utils.js.map +1 -0
  93. package/dist/cli/init/utils.d.ts +183 -0
  94. package/dist/cli/init/utils.d.ts.map +1 -0
  95. package/dist/cli/init/utils.js +354 -0
  96. package/dist/cli/init/utils.js.map +1 -0
  97. package/dist/components/Dashboard/Dashboard.d.ts +4 -0
  98. package/dist/components/Dashboard/Dashboard.d.ts.map +1 -0
  99. package/dist/components/Dashboard/Dashboard.js +148 -0
  100. package/dist/components/Dashboard/Dashboard.js.map +1 -0
  101. package/dist/components/Dashboard/DashboardHeader.d.ts +4 -0
  102. package/dist/components/Dashboard/DashboardHeader.d.ts.map +1 -0
  103. package/dist/components/Dashboard/DashboardHeader.js +138 -0
  104. package/dist/components/Dashboard/DashboardHeader.js.map +1 -0
  105. package/dist/constitution/evaluators/ast-evaluator.d.ts +42 -0
  106. package/dist/constitution/evaluators/ast-evaluator.d.ts.map +1 -0
  107. package/dist/constitution/evaluators/ast-evaluator.js +303 -0
  108. package/dist/constitution/evaluators/ast-evaluator.js.map +1 -0
  109. package/dist/constitution/evaluators/base.d.ts +144 -0
  110. package/dist/constitution/evaluators/base.d.ts.map +1 -0
  111. package/dist/constitution/evaluators/base.js +144 -0
  112. package/dist/constitution/evaluators/base.js.map +1 -0
  113. package/dist/constitution/evaluators/index.d.ts +19 -0
  114. package/dist/constitution/evaluators/index.d.ts.map +1 -0
  115. package/dist/constitution/evaluators/index.js +56 -0
  116. package/dist/constitution/evaluators/index.js.map +1 -0
  117. package/dist/constitution/evaluators/metric-evaluator.d.ts +59 -0
  118. package/dist/constitution/evaluators/metric-evaluator.d.ts.map +1 -0
  119. package/dist/constitution/evaluators/metric-evaluator.js +195 -0
  120. package/dist/constitution/evaluators/metric-evaluator.js.map +1 -0
  121. package/dist/constitution/evaluators/pattern-evaluator.d.ts +66 -0
  122. package/dist/constitution/evaluators/pattern-evaluator.d.ts.map +1 -0
  123. package/dist/constitution/evaluators/pattern-evaluator.js +221 -0
  124. package/dist/constitution/evaluators/pattern-evaluator.js.map +1 -0
  125. package/dist/constitution/evaluators/semantic-evaluator.d.ts +68 -0
  126. package/dist/constitution/evaluators/semantic-evaluator.d.ts.map +1 -0
  127. package/dist/constitution/evaluators/semantic-evaluator.js +250 -0
  128. package/dist/constitution/evaluators/semantic-evaluator.js.map +1 -0
  129. package/dist/contexts/DashboardContext.d.ts +41 -0
  130. package/dist/contexts/DashboardContext.d.ts.map +1 -0
  131. package/dist/contexts/DashboardContext.js +187 -0
  132. package/dist/contexts/DashboardContext.js.map +1 -0
  133. package/dist/core/memory/SwarmMemoryManager.d.ts +40 -0
  134. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  135. package/dist/core/memory/SwarmMemoryManager.js +291 -120
  136. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  137. package/dist/hooks/useKeyboardShortcuts.d.ts +12 -0
  138. package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  139. package/dist/hooks/useKeyboardShortcuts.js +69 -0
  140. package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
  141. package/dist/telemetry/instrumentation/agent.d.ts +158 -0
  142. package/dist/telemetry/instrumentation/agent.d.ts.map +1 -0
  143. package/dist/telemetry/instrumentation/agent.js +372 -0
  144. package/dist/telemetry/instrumentation/agent.js.map +1 -0
  145. package/dist/telemetry/instrumentation/index.d.ts +24 -0
  146. package/dist/telemetry/instrumentation/index.d.ts.map +1 -0
  147. package/dist/telemetry/instrumentation/index.js +54 -0
  148. package/dist/telemetry/instrumentation/index.js.map +1 -0
  149. package/dist/telemetry/instrumentation/memory.d.ts +313 -0
  150. package/dist/telemetry/instrumentation/memory.d.ts.map +1 -0
  151. package/dist/telemetry/instrumentation/memory.js +552 -0
  152. package/dist/telemetry/instrumentation/memory.js.map +1 -0
  153. package/dist/telemetry/instrumentation/task.d.ts +146 -0
  154. package/dist/telemetry/instrumentation/task.d.ts.map +1 -0
  155. package/dist/telemetry/instrumentation/task.js +305 -0
  156. package/dist/telemetry/instrumentation/task.js.map +1 -0
  157. package/dist/telemetry/metrics/collectors/cost.d.ts +246 -0
  158. package/dist/telemetry/metrics/collectors/cost.d.ts.map +1 -0
  159. package/dist/telemetry/metrics/collectors/cost.js +526 -0
  160. package/dist/telemetry/metrics/collectors/cost.js.map +1 -0
  161. package/dist/telemetry/metrics/collectors/pricing-config.d.ts +87 -0
  162. package/dist/telemetry/metrics/collectors/pricing-config.d.ts.map +1 -0
  163. package/dist/telemetry/metrics/collectors/pricing-config.js +207 -0
  164. package/dist/telemetry/metrics/collectors/pricing-config.js.map +1 -0
  165. package/dist/telemetry/metrics/index.d.ts +4 -1
  166. package/dist/telemetry/metrics/index.d.ts.map +1 -1
  167. package/dist/telemetry/metrics/index.js +18 -2
  168. package/dist/telemetry/metrics/index.js.map +1 -1
  169. package/dist/telemetry/types.d.ts +1 -1
  170. package/dist/telemetry/types.d.ts.map +1 -1
  171. package/dist/visualization/api/RestEndpoints.d.ts +136 -0
  172. package/dist/visualization/api/RestEndpoints.d.ts.map +1 -0
  173. package/dist/visualization/api/RestEndpoints.js +428 -0
  174. package/dist/visualization/api/RestEndpoints.js.map +1 -0
  175. package/dist/visualization/api/WebSocketServer.d.ts +165 -0
  176. package/dist/visualization/api/WebSocketServer.d.ts.map +1 -0
  177. package/dist/visualization/api/WebSocketServer.js +518 -0
  178. package/dist/visualization/api/WebSocketServer.js.map +1 -0
  179. package/dist/visualization/core/DataTransformer.d.ts +89 -0
  180. package/dist/visualization/core/DataTransformer.d.ts.map +1 -0
  181. package/dist/visualization/core/DataTransformer.js +478 -0
  182. package/dist/visualization/core/DataTransformer.js.map +1 -0
  183. package/dist/visualization/index.d.ts +92 -0
  184. package/dist/visualization/index.d.ts.map +1 -0
  185. package/dist/visualization/index.js +121 -0
  186. package/dist/visualization/index.js.map +1 -0
  187. package/dist/visualization/types.d.ts +148 -0
  188. package/dist/visualization/types.d.ts.map +1 -0
  189. package/dist/visualization/types.js +7 -0
  190. package/dist/visualization/types.js.map +1 -0
  191. package/dist/voting/consensus.d.ts +87 -0
  192. package/dist/voting/consensus.d.ts.map +1 -0
  193. package/dist/voting/consensus.js +568 -0
  194. package/dist/voting/consensus.js.map +1 -0
  195. package/dist/voting/index.d.ts +12 -0
  196. package/dist/voting/index.d.ts.map +1 -0
  197. package/dist/voting/index.js +36 -0
  198. package/dist/voting/index.js.map +1 -0
  199. package/dist/voting/orchestrator.d.ts +65 -0
  200. package/dist/voting/orchestrator.d.ts.map +1 -0
  201. package/dist/voting/orchestrator.js +306 -0
  202. package/dist/voting/orchestrator.js.map +1 -0
  203. package/dist/voting/panel-assembly.d.ts +54 -0
  204. package/dist/voting/panel-assembly.d.ts.map +1 -0
  205. package/dist/voting/panel-assembly.js +192 -0
  206. package/dist/voting/panel-assembly.js.map +1 -0
  207. package/dist/voting/protocol.d.ts +119 -0
  208. package/dist/voting/protocol.d.ts.map +1 -0
  209. package/dist/voting/protocol.js +18 -0
  210. package/dist/voting/protocol.js.map +1 -0
  211. package/dist/voting/types.d.ts +125 -0
  212. package/dist/voting/types.d.ts.map +1 -0
  213. package/dist/voting/types.js +7 -0
  214. package/dist/voting/types.js.map +1 -0
  215. package/package.json +27 -2
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ /**
3
+ * Base Evaluator Interface
4
+ *
5
+ * Defines the contract for all clause evaluators in the constitution framework.
6
+ * Evaluators analyze code/data against constitution rules and return evaluation results.
7
+ *
8
+ * @module constitution/evaluators/base
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EvaluatorFactory = exports.BaseEvaluator = void 0;
13
+ /**
14
+ * Abstract base class for evaluators
15
+ */
16
+ class BaseEvaluator {
17
+ async initialize(config) {
18
+ this.config = config;
19
+ }
20
+ async dispose() {
21
+ // Base implementation does nothing
22
+ }
23
+ /**
24
+ * Helper to compare values using operator
25
+ * @param actual - Actual value
26
+ * @param operator - Comparison operator
27
+ * @param expected - Expected value
28
+ * @returns True if comparison passes
29
+ */
30
+ compareValues(actual, operator, expected) {
31
+ switch (operator) {
32
+ case 'equals':
33
+ return actual === expected;
34
+ case 'not_equals':
35
+ return actual !== expected;
36
+ case 'greater_than':
37
+ return typeof actual === 'number' && typeof expected === 'number'
38
+ ? actual > expected
39
+ : false;
40
+ case 'less_than':
41
+ return typeof actual === 'number' && typeof expected === 'number'
42
+ ? actual < expected
43
+ : false;
44
+ case 'greater_than_or_equal':
45
+ return typeof actual === 'number' && typeof expected === 'number'
46
+ ? actual >= expected
47
+ : false;
48
+ case 'less_than_or_equal':
49
+ return typeof actual === 'number' && typeof expected === 'number'
50
+ ? actual <= expected
51
+ : false;
52
+ case 'contains':
53
+ return typeof actual === 'string' && typeof expected === 'string'
54
+ ? actual.includes(expected)
55
+ : Array.isArray(actual)
56
+ ? actual.includes(expected)
57
+ : false;
58
+ case 'not_contains':
59
+ return typeof actual === 'string' && typeof expected === 'string'
60
+ ? !actual.includes(expected)
61
+ : Array.isArray(actual)
62
+ ? !actual.includes(expected)
63
+ : true;
64
+ case 'matches':
65
+ if (typeof actual === 'string' && typeof expected === 'string') {
66
+ try {
67
+ const regex = new RegExp(expected);
68
+ return regex.test(actual);
69
+ }
70
+ catch {
71
+ return false;
72
+ }
73
+ }
74
+ return false;
75
+ case 'in':
76
+ return Array.isArray(expected)
77
+ ? expected.includes(actual)
78
+ : false;
79
+ case 'not_in':
80
+ return Array.isArray(expected)
81
+ ? !expected.includes(actual)
82
+ : true;
83
+ case 'exists':
84
+ return actual !== null && actual !== undefined;
85
+ case 'not_exists':
86
+ return actual === null || actual === undefined;
87
+ default:
88
+ return false;
89
+ }
90
+ }
91
+ /**
92
+ * Create a check result
93
+ * @param passed - Whether check passed
94
+ * @param field - Field checked
95
+ * @param actual - Actual value
96
+ * @param expected - Expected value
97
+ * @param operator - Operator used
98
+ * @param message - Optional message
99
+ * @returns Check result
100
+ */
101
+ createResult(passed, field, actual, expected, operator, message) {
102
+ return {
103
+ passed,
104
+ actualValue: actual,
105
+ expectedValue: expected,
106
+ operator,
107
+ field,
108
+ message,
109
+ };
110
+ }
111
+ }
112
+ exports.BaseEvaluator = BaseEvaluator;
113
+ /**
114
+ * Factory for creating evaluators
115
+ */
116
+ class EvaluatorFactory {
117
+ /**
118
+ * Register an evaluator type
119
+ * @param type - Check type
120
+ * @param factory - Factory function to create evaluator
121
+ */
122
+ static register(type, factory) {
123
+ this.evaluators.set(type, factory);
124
+ }
125
+ /**
126
+ * Create an evaluator for the given type
127
+ * @param type - Check type
128
+ * @returns Evaluator instance or null if not found
129
+ */
130
+ static create(type) {
131
+ const factory = this.evaluators.get(type);
132
+ return factory ? factory() : null;
133
+ }
134
+ /**
135
+ * Get all registered evaluator types
136
+ * @returns Array of check types
137
+ */
138
+ static getTypes() {
139
+ return Array.from(this.evaluators.keys());
140
+ }
141
+ }
142
+ exports.EvaluatorFactory = EvaluatorFactory;
143
+ EvaluatorFactory.evaluators = new Map();
144
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/constitution/evaluators/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Constitution Evaluators
3
+ *
4
+ * Exports all evaluator types and factory for creating evaluators.
5
+ * Provides a unified interface for evaluating constitution rules.
6
+ *
7
+ * @module constitution/evaluators
8
+ * @version 1.0.0
9
+ */
10
+ export * from './base';
11
+ export { ASTEvaluator } from './ast-evaluator';
12
+ export { MetricEvaluator } from './metric-evaluator';
13
+ export { PatternEvaluator, CustomPatternEvaluator } from './pattern-evaluator';
14
+ export { SemanticEvaluator } from './semantic-evaluator';
15
+ /**
16
+ * Register all built-in evaluators
17
+ */
18
+ export declare function registerBuiltInEvaluators(): void;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constitution/evaluators/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAQzD;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ /**
3
+ * Constitution Evaluators
4
+ *
5
+ * Exports all evaluator types and factory for creating evaluators.
6
+ * Provides a unified interface for evaluating constitution rules.
7
+ *
8
+ * @module constitution/evaluators
9
+ * @version 1.0.0
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
23
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.SemanticEvaluator = exports.CustomPatternEvaluator = exports.PatternEvaluator = exports.MetricEvaluator = exports.ASTEvaluator = void 0;
27
+ exports.registerBuiltInEvaluators = registerBuiltInEvaluators;
28
+ __exportStar(require("./base"), exports);
29
+ var ast_evaluator_1 = require("./ast-evaluator");
30
+ Object.defineProperty(exports, "ASTEvaluator", { enumerable: true, get: function () { return ast_evaluator_1.ASTEvaluator; } });
31
+ var metric_evaluator_1 = require("./metric-evaluator");
32
+ Object.defineProperty(exports, "MetricEvaluator", { enumerable: true, get: function () { return metric_evaluator_1.MetricEvaluator; } });
33
+ var pattern_evaluator_1 = require("./pattern-evaluator");
34
+ Object.defineProperty(exports, "PatternEvaluator", { enumerable: true, get: function () { return pattern_evaluator_1.PatternEvaluator; } });
35
+ Object.defineProperty(exports, "CustomPatternEvaluator", { enumerable: true, get: function () { return pattern_evaluator_1.CustomPatternEvaluator; } });
36
+ var semantic_evaluator_1 = require("./semantic-evaluator");
37
+ Object.defineProperty(exports, "SemanticEvaluator", { enumerable: true, get: function () { return semantic_evaluator_1.SemanticEvaluator; } });
38
+ const base_1 = require("./base");
39
+ const ast_evaluator_2 = require("./ast-evaluator");
40
+ const metric_evaluator_2 = require("./metric-evaluator");
41
+ const pattern_evaluator_2 = require("./pattern-evaluator");
42
+ const semantic_evaluator_2 = require("./semantic-evaluator");
43
+ /**
44
+ * Register all built-in evaluators
45
+ */
46
+ function registerBuiltInEvaluators() {
47
+ base_1.EvaluatorFactory.register('ast', () => new ast_evaluator_2.ASTEvaluator());
48
+ base_1.EvaluatorFactory.register('metric', () => new metric_evaluator_2.MetricEvaluator());
49
+ base_1.EvaluatorFactory.register('pattern', () => new pattern_evaluator_2.PatternEvaluator());
50
+ base_1.EvaluatorFactory.register('semantic', () => new semantic_evaluator_2.SemanticEvaluator());
51
+ }
52
+ /**
53
+ * Initialize evaluator factory with all built-in evaluators
54
+ */
55
+ registerBuiltInEvaluators();
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constitution/evaluators/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;AAiBH,8DAKC;AApBD,yCAAuB;AACvB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,yDAA+E;AAAtE,qHAAA,gBAAgB,OAAA;AAAE,2HAAA,sBAAsB,OAAA;AACjD,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAE1B,iCAA0C;AAC1C,mDAA+C;AAC/C,yDAAqD;AACrD,2DAAuD;AACvD,6DAAyD;AAEzD;;GAEG;AACH,SAAgB,yBAAyB;IACvC,uBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,4BAAY,EAAE,CAAC,CAAC;IAC3D,uBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,kCAAe,EAAE,CAAC,CAAC;IACjE,uBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,oCAAgB,EAAE,CAAC,CAAC;IACnE,uBAAgB,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,sCAAiB,EAAE,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,yBAAyB,EAAE,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Metric Evaluator
3
+ *
4
+ * Calculates and evaluates quantitative quality metrics.
5
+ * Supports metrics like test coverage, maintainability index, technical debt ratio.
6
+ * Can work with pre-calculated metrics or compute them on demand.
7
+ *
8
+ * @module constitution/evaluators/metric-evaluator
9
+ * @version 1.0.0
10
+ */
11
+ import type { RuleCondition } from '../schema';
12
+ import { BaseEvaluator, type CheckResult, type EvaluationContext } from './base';
13
+ /**
14
+ * Metric Evaluator for quantitative quality metrics
15
+ */
16
+ export declare class MetricEvaluator extends BaseEvaluator {
17
+ readonly type: "metric";
18
+ canHandle(condition: RuleCondition): boolean;
19
+ evaluate(condition: RuleCondition, context: EvaluationContext): Promise<CheckResult>;
20
+ /**
21
+ * Get metrics from context or calculate them
22
+ * @param context - Evaluation context
23
+ * @returns Quality metrics
24
+ */
25
+ private getMetrics;
26
+ /**
27
+ * Convert context metrics to quality metrics
28
+ * @param metrics - Context metrics
29
+ * @returns Quality metrics
30
+ */
31
+ private convertMetrics;
32
+ /**
33
+ * Calculate metrics from source code
34
+ * @param sourceCode - Source code to analyze
35
+ * @param data - Additional context data
36
+ * @returns Calculated metrics
37
+ */
38
+ private calculateMetrics;
39
+ /**
40
+ * Estimate cyclomatic complexity (simple heuristic)
41
+ * @param code - Source code
42
+ * @returns Estimated complexity
43
+ */
44
+ private estimateComplexity;
45
+ /**
46
+ * Estimate code duplication (simple heuristic)
47
+ * @param code - Source code
48
+ * @returns Estimated duplication percentage
49
+ */
50
+ private estimateDuplication;
51
+ /**
52
+ * Get metric value by field name
53
+ * @param field - Field name
54
+ * @param metrics - Calculated metrics
55
+ * @returns Metric value
56
+ */
57
+ private getMetricValue;
58
+ }
59
+ //# sourceMappingURL=metric-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric-evaluator.d.ts","sourceRoot":"","sources":["../../../src/constitution/evaluators/metric-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAwDjF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAElC,SAAS,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO;IAItC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IA0C1F;;;;OAIG;YACW,UAAU;IAexB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAmBtB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;CAkCvB"}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ /**
3
+ * Metric Evaluator
4
+ *
5
+ * Calculates and evaluates quantitative quality metrics.
6
+ * Supports metrics like test coverage, maintainability index, technical debt ratio.
7
+ * Can work with pre-calculated metrics or compute them on demand.
8
+ *
9
+ * @module constitution/evaluators/metric-evaluator
10
+ * @version 1.0.0
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.MetricEvaluator = void 0;
14
+ const base_1 = require("./base");
15
+ /**
16
+ * Fields that metric evaluator can check
17
+ */
18
+ const METRIC_FIELDS = new Set([
19
+ 'quality_score',
20
+ 'coverage',
21
+ 'maintainability_index',
22
+ 'technical_debt_ratio',
23
+ 'security_score',
24
+ 'doc_coverage',
25
+ 'duplication_percentage',
26
+ 'automation_percentage',
27
+ 'defect_detection_rate',
28
+ 'mean_time_to_detection',
29
+ 'result_variance',
30
+ 'execution_time',
31
+ 'vulnerability_count',
32
+ 'code_smell_count',
33
+ ]);
34
+ /**
35
+ * Metric Evaluator for quantitative quality metrics
36
+ */
37
+ class MetricEvaluator extends base_1.BaseEvaluator {
38
+ constructor() {
39
+ super(...arguments);
40
+ this.type = 'metric';
41
+ }
42
+ canHandle(condition) {
43
+ return METRIC_FIELDS.has(condition.field);
44
+ }
45
+ async evaluate(condition, context) {
46
+ try {
47
+ // Get metrics from context or calculate them
48
+ const metrics = await this.getMetrics(context);
49
+ // Get the requested metric value
50
+ const actualValue = this.getMetricValue(condition.field, metrics);
51
+ // Handle missing metrics
52
+ if (actualValue === undefined || actualValue === null) {
53
+ return this.createResult(false, condition.field, null, condition.value, condition.operator, `Metric '${condition.field}' not available in context`);
54
+ }
55
+ // Compare against expected value
56
+ const passed = this.compareValues(actualValue, condition.operator, condition.value);
57
+ return this.createResult(passed, condition.field, actualValue, condition.value, condition.operator);
58
+ }
59
+ catch (error) {
60
+ return this.createResult(false, condition.field, null, condition.value, condition.operator, `Metric evaluation failed: ${error instanceof Error ? error.message : String(error)}`);
61
+ }
62
+ }
63
+ /**
64
+ * Get metrics from context or calculate them
65
+ * @param context - Evaluation context
66
+ * @returns Quality metrics
67
+ */
68
+ async getMetrics(context) {
69
+ // If metrics are pre-calculated in context, use them
70
+ if (context.metrics) {
71
+ return this.convertMetrics(context.metrics);
72
+ }
73
+ // Otherwise, calculate metrics from source code
74
+ if (context.sourceCode) {
75
+ return this.calculateMetrics(context.sourceCode, context.data || {});
76
+ }
77
+ // If neither is available, return empty metrics
78
+ return {};
79
+ }
80
+ /**
81
+ * Convert context metrics to quality metrics
82
+ * @param metrics - Context metrics
83
+ * @returns Quality metrics
84
+ */
85
+ convertMetrics(metrics) {
86
+ return {
87
+ qualityScore: metrics.quality_score ?? metrics.qualityScore,
88
+ coverage: metrics.coverage,
89
+ maintainabilityIndex: metrics.maintainability_index ?? metrics.maintainabilityIndex,
90
+ technicalDebtRatio: metrics.technical_debt_ratio ?? metrics.technicalDebtRatio,
91
+ securityScore: metrics.security_score ?? metrics.securityScore,
92
+ docCoverage: metrics.doc_coverage ?? metrics.docCoverage,
93
+ duplicationPercentage: metrics.duplication_percentage ?? metrics.duplicationPercentage,
94
+ automationPercentage: metrics.automation_percentage ?? metrics.automationPercentage,
95
+ defectDetectionRate: metrics.defect_detection_rate ?? metrics.defectDetectionRate,
96
+ meanTimeToDetection: metrics.mean_time_to_detection ?? metrics.meanTimeToDetection,
97
+ resultVariance: metrics.result_variance ?? metrics.resultVariance,
98
+ executionTime: metrics.execution_time ?? metrics.executionTime,
99
+ vulnerabilityCount: metrics.vulnerability_count ?? metrics.vulnerabilityCount,
100
+ codeSmellCount: metrics.code_smell_count ?? metrics.codeSmellCount,
101
+ };
102
+ }
103
+ /**
104
+ * Calculate metrics from source code
105
+ * @param sourceCode - Source code to analyze
106
+ * @param data - Additional context data
107
+ * @returns Calculated metrics
108
+ */
109
+ calculateMetrics(sourceCode, data) {
110
+ const metrics = {};
111
+ // Calculate maintainability index
112
+ // Formula: MI = 171 - 5.2 * ln(HV) - 0.23 * CC - 16.2 * ln(LOC)
113
+ // Where: HV = Halstead Volume, CC = Cyclomatic Complexity, LOC = Lines of Code
114
+ const lines = sourceCode.split('\n').length;
115
+ const estimatedComplexity = this.estimateComplexity(sourceCode);
116
+ // Simplified maintainability index calculation
117
+ metrics.maintainabilityIndex = Math.max(0, Math.min(100, 171 - 5.2 * Math.log(lines * 10) - 0.23 * estimatedComplexity - 16.2 * Math.log(lines)));
118
+ // Calculate documentation coverage (simple heuristic: comment ratio)
119
+ const commentLines = (sourceCode.match(/\/\/.+|\/\*[\s\S]*?\*\//g) || []).length;
120
+ metrics.docCoverage = Math.min(100, (commentLines / lines) * 300); // 1 comment per 3 lines = 100%
121
+ // Calculate duplication (simple heuristic: repeated lines)
122
+ metrics.duplicationPercentage = this.estimateDuplication(sourceCode);
123
+ // Use data from context if available
124
+ if (data.coverage !== undefined)
125
+ metrics.coverage = Number(data.coverage);
126
+ if (data.securityScore !== undefined)
127
+ metrics.securityScore = Number(data.securityScore);
128
+ if (data.vulnerabilityCount !== undefined)
129
+ metrics.vulnerabilityCount = Number(data.vulnerabilityCount);
130
+ return metrics;
131
+ }
132
+ /**
133
+ * Estimate cyclomatic complexity (simple heuristic)
134
+ * @param code - Source code
135
+ * @returns Estimated complexity
136
+ */
137
+ estimateComplexity(code) {
138
+ const controlFlowKeywords = /\b(if|else|switch|case|for|while|do|catch|&&|\|\||\?)\b/g;
139
+ const matches = code.match(controlFlowKeywords);
140
+ return (matches?.length || 0) + 1;
141
+ }
142
+ /**
143
+ * Estimate code duplication (simple heuristic)
144
+ * @param code - Source code
145
+ * @returns Estimated duplication percentage
146
+ */
147
+ estimateDuplication(code) {
148
+ const lines = code.split('\n').filter(line => line.trim().length > 0);
149
+ const uniqueLines = new Set(lines);
150
+ const duplicatedLines = lines.length - uniqueLines.size;
151
+ return lines.length > 0 ? (duplicatedLines / lines.length) * 100 : 0;
152
+ }
153
+ /**
154
+ * Get metric value by field name
155
+ * @param field - Field name
156
+ * @param metrics - Calculated metrics
157
+ * @returns Metric value
158
+ */
159
+ getMetricValue(field, metrics) {
160
+ switch (field) {
161
+ case 'quality_score':
162
+ return metrics.qualityScore;
163
+ case 'coverage':
164
+ return metrics.coverage;
165
+ case 'maintainability_index':
166
+ return metrics.maintainabilityIndex;
167
+ case 'technical_debt_ratio':
168
+ return metrics.technicalDebtRatio;
169
+ case 'security_score':
170
+ return metrics.securityScore;
171
+ case 'doc_coverage':
172
+ return metrics.docCoverage;
173
+ case 'duplication_percentage':
174
+ return metrics.duplicationPercentage;
175
+ case 'automation_percentage':
176
+ return metrics.automationPercentage;
177
+ case 'defect_detection_rate':
178
+ return metrics.defectDetectionRate;
179
+ case 'mean_time_to_detection':
180
+ return metrics.meanTimeToDetection;
181
+ case 'result_variance':
182
+ return metrics.resultVariance;
183
+ case 'execution_time':
184
+ return metrics.executionTime;
185
+ case 'vulnerability_count':
186
+ return metrics.vulnerabilityCount;
187
+ case 'code_smell_count':
188
+ return metrics.codeSmellCount;
189
+ default:
190
+ return undefined;
191
+ }
192
+ }
193
+ }
194
+ exports.MetricEvaluator = MetricEvaluator;
195
+ //# sourceMappingURL=metric-evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric-evaluator.js","sourceRoot":"","sources":["../../../src/constitution/evaluators/metric-evaluator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Pattern Evaluator
3
+ *
4
+ * Uses regex patterns to detect code issues like:
5
+ * - Hardcoded secrets (API keys, passwords, tokens)
6
+ * - SQL injection vulnerabilities
7
+ * - XSS vulnerabilities
8
+ * - Other security and quality patterns
9
+ *
10
+ * @module constitution/evaluators/pattern-evaluator
11
+ * @version 1.0.0
12
+ */
13
+ import type { RuleCondition } from '../schema';
14
+ import { BaseEvaluator, type CheckResult, type EvaluationContext } from './base';
15
+ /**
16
+ * Pattern Evaluator for regex-based code analysis
17
+ */
18
+ export declare class PatternEvaluator extends BaseEvaluator {
19
+ readonly type: "pattern";
20
+ canHandle(condition: RuleCondition): boolean;
21
+ evaluate(condition: RuleCondition, context: EvaluationContext): Promise<CheckResult>;
22
+ /**
23
+ * Detect patterns in source code
24
+ * @param field - Field to check
25
+ * @param sourceCode - Source code to analyze
26
+ * @returns Array of pattern matches
27
+ */
28
+ private detectPatterns;
29
+ /**
30
+ * Get patterns for a specific field
31
+ * @param field - Field name
32
+ * @returns Array of regex patterns
33
+ */
34
+ private getPatternsForField;
35
+ /**
36
+ * Get actual value based on field type
37
+ * @param field - Field name
38
+ * @param matches - Pattern matches
39
+ * @returns Actual value for comparison
40
+ */
41
+ private getActualValue;
42
+ /**
43
+ * Get context lines around a match
44
+ * @param lines - All source lines
45
+ * @param lineIndex - Index of matched line
46
+ * @param contextLines - Number of context lines
47
+ * @returns Context string
48
+ */
49
+ private getContext;
50
+ }
51
+ /**
52
+ * Custom pattern evaluator for user-defined patterns
53
+ */
54
+ export declare class CustomPatternEvaluator extends BaseEvaluator {
55
+ readonly type: "pattern";
56
+ private customPatterns;
57
+ /**
58
+ * Register a custom pattern
59
+ * @param field - Field name
60
+ * @param patterns - Regex patterns
61
+ */
62
+ registerPattern(field: string, patterns: RegExp[]): void;
63
+ canHandle(condition: RuleCondition): boolean;
64
+ evaluate(condition: RuleCondition, context: EvaluationContext): Promise<CheckResult>;
65
+ }
66
+ //# sourceMappingURL=pattern-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-evaluator.d.ts","sourceRoot":"","sources":["../../../src/constitution/evaluators/pattern-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AA0EjF;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,aAAa;IACjD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAEnC,SAAS,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO;IAItC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAmD1F;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAwBtB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAWtB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;CAKnB;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,OAAO,CAAC,cAAc,CAA+B;IAErD;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIxD,SAAS,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO;IAItC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;CAmC3F"}