agentic-qe 1.8.3 → 1.9.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/.claude/skills/agentic-jujutsu/SKILL.md +645 -0
- package/.claude/skills/cicd-pipeline-qe-orchestrator/README.md +2 -2
- package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +6 -6
- package/CHANGELOG.md +595 -0
- package/README.md +117 -16
- package/config/constitution.schema.json +423 -0
- package/config/otel-collector.yaml +234 -0
- package/dist/App.d.ts +5 -0
- package/dist/App.d.ts.map +1 -0
- package/dist/App.js +15 -0
- package/dist/App.js.map +1 -0
- package/dist/cli/commands/constitution.d.ts +34 -0
- package/dist/cli/commands/constitution.d.ts.map +1 -0
- package/dist/cli/commands/constitution.js +679 -0
- package/dist/cli/commands/constitution.js.map +1 -0
- package/dist/cli/commands/init-claude-md-template.js +3 -3
- package/dist/cli/commands/init.d.ts +8 -75
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +22 -2292
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/telemetry.d.ts +36 -0
- package/dist/cli/commands/telemetry.d.ts.map +1 -0
- package/dist/cli/commands/telemetry.js +364 -0
- package/dist/cli/commands/telemetry.js.map +1 -0
- package/dist/cli/index.js +66 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/agents.d.ts +22 -0
- package/dist/cli/init/agents.d.ts.map +1 -0
- package/dist/cli/init/agents.js +522 -0
- package/dist/cli/init/agents.js.map +1 -0
- package/dist/cli/init/bash-wrapper.d.ts +14 -0
- package/dist/cli/init/bash-wrapper.d.ts.map +1 -0
- package/dist/cli/init/bash-wrapper.js +47 -0
- package/dist/cli/init/bash-wrapper.js.map +1 -0
- package/dist/cli/init/claude-config.d.ts +24 -0
- package/dist/cli/init/claude-config.d.ts.map +1 -0
- package/dist/cli/init/claude-config.js +275 -0
- package/dist/cli/init/claude-config.js.map +1 -0
- package/dist/cli/init/claude-md.d.ts +19 -0
- package/dist/cli/init/claude-md.d.ts.map +1 -0
- package/dist/cli/init/claude-md.js +153 -0
- package/dist/cli/init/claude-md.js.map +1 -0
- package/dist/cli/init/commands.d.ts +6 -0
- package/dist/cli/init/commands.d.ts.map +1 -0
- package/dist/cli/init/commands.js +83 -0
- package/dist/cli/init/commands.js.map +1 -0
- package/dist/cli/init/database-init.d.ts +15 -0
- package/dist/cli/init/database-init.d.ts.map +1 -0
- package/dist/cli/init/database-init.js +203 -0
- package/dist/cli/init/database-init.js.map +1 -0
- package/dist/cli/init/directory-structure.d.ts +14 -0
- package/dist/cli/init/directory-structure.d.ts.map +1 -0
- package/dist/cli/init/directory-structure.js +107 -0
- package/dist/cli/init/directory-structure.js.map +1 -0
- package/dist/cli/init/documentation.d.ts +14 -0
- package/dist/cli/init/documentation.d.ts.map +1 -0
- package/dist/cli/init/documentation.js +195 -0
- package/dist/cli/init/documentation.js.map +1 -0
- package/dist/cli/init/fleet-config.d.ts +34 -0
- package/dist/cli/init/fleet-config.d.ts.map +1 -0
- package/dist/cli/init/fleet-config.js +269 -0
- package/dist/cli/init/fleet-config.js.map +1 -0
- package/dist/cli/init/helpers.d.ts +6 -0
- package/dist/cli/init/helpers.d.ts.map +1 -0
- package/dist/cli/init/helpers.js +94 -0
- package/dist/cli/init/helpers.js.map +1 -0
- package/dist/cli/init/index.d.ts +32 -0
- package/dist/cli/init/index.d.ts.map +1 -0
- package/dist/cli/init/index.js +294 -0
- package/dist/cli/init/index.js.map +1 -0
- package/dist/cli/init/skills.d.ts +6 -0
- package/dist/cli/init/skills.d.ts.map +1 -0
- package/dist/cli/init/skills.js +138 -0
- package/dist/cli/init/skills.js.map +1 -0
- package/dist/cli/init/utils/file-utils.d.ts +74 -0
- package/dist/cli/init/utils/file-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/file-utils.js +187 -0
- package/dist/cli/init/utils/file-utils.js.map +1 -0
- package/dist/cli/init/utils/index.d.ts +18 -0
- package/dist/cli/init/utils/index.d.ts.map +1 -0
- package/dist/cli/init/utils/index.js +48 -0
- package/dist/cli/init/utils/index.js.map +1 -0
- package/dist/cli/init/utils/log-utils.d.ts +47 -0
- package/dist/cli/init/utils/log-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/log-utils.js +68 -0
- package/dist/cli/init/utils/log-utils.js.map +1 -0
- package/dist/cli/init/utils/path-utils.d.ts +91 -0
- package/dist/cli/init/utils/path-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/path-utils.js +208 -0
- package/dist/cli/init/utils/path-utils.js.map +1 -0
- package/dist/cli/init/utils/validation-utils.d.ts +44 -0
- package/dist/cli/init/utils/validation-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/validation-utils.js +68 -0
- package/dist/cli/init/utils/validation-utils.js.map +1 -0
- package/dist/cli/init/utils.d.ts +183 -0
- package/dist/cli/init/utils.d.ts.map +1 -0
- package/dist/cli/init/utils.js +354 -0
- package/dist/cli/init/utils.js.map +1 -0
- package/dist/components/Dashboard/Dashboard.d.ts +4 -0
- package/dist/components/Dashboard/Dashboard.d.ts.map +1 -0
- package/dist/components/Dashboard/Dashboard.js +148 -0
- package/dist/components/Dashboard/Dashboard.js.map +1 -0
- package/dist/components/Dashboard/DashboardHeader.d.ts +4 -0
- package/dist/components/Dashboard/DashboardHeader.d.ts.map +1 -0
- package/dist/components/Dashboard/DashboardHeader.js +138 -0
- package/dist/components/Dashboard/DashboardHeader.js.map +1 -0
- package/dist/constitution/evaluators/ast-evaluator.d.ts +42 -0
- package/dist/constitution/evaluators/ast-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/ast-evaluator.js +303 -0
- package/dist/constitution/evaluators/ast-evaluator.js.map +1 -0
- package/dist/constitution/evaluators/base.d.ts +144 -0
- package/dist/constitution/evaluators/base.d.ts.map +1 -0
- package/dist/constitution/evaluators/base.js +144 -0
- package/dist/constitution/evaluators/base.js.map +1 -0
- package/dist/constitution/evaluators/index.d.ts +19 -0
- package/dist/constitution/evaluators/index.d.ts.map +1 -0
- package/dist/constitution/evaluators/index.js +56 -0
- package/dist/constitution/evaluators/index.js.map +1 -0
- package/dist/constitution/evaluators/metric-evaluator.d.ts +59 -0
- package/dist/constitution/evaluators/metric-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/metric-evaluator.js +195 -0
- package/dist/constitution/evaluators/metric-evaluator.js.map +1 -0
- package/dist/constitution/evaluators/pattern-evaluator.d.ts +66 -0
- package/dist/constitution/evaluators/pattern-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/pattern-evaluator.js +221 -0
- package/dist/constitution/evaluators/pattern-evaluator.js.map +1 -0
- package/dist/constitution/evaluators/semantic-evaluator.d.ts +68 -0
- package/dist/constitution/evaluators/semantic-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/semantic-evaluator.js +250 -0
- package/dist/constitution/evaluators/semantic-evaluator.js.map +1 -0
- package/dist/constitution/index.d.ts +105 -0
- package/dist/constitution/index.d.ts.map +1 -0
- package/dist/constitution/index.js +207 -0
- package/dist/constitution/index.js.map +1 -0
- package/dist/constitution/loader.d.ts +141 -0
- package/dist/constitution/loader.d.ts.map +1 -0
- package/dist/constitution/loader.js +515 -0
- package/dist/constitution/loader.js.map +1 -0
- package/dist/constitution/schema.d.ts +409 -0
- package/dist/constitution/schema.d.ts.map +1 -0
- package/dist/constitution/schema.js +71 -0
- package/dist/constitution/schema.js.map +1 -0
- package/dist/contexts/DashboardContext.d.ts +41 -0
- package/dist/contexts/DashboardContext.d.ts.map +1 -0
- package/dist/contexts/DashboardContext.js +187 -0
- package/dist/contexts/DashboardContext.js.map +1 -0
- package/dist/core/memory/MemoryManagerFactory.d.ts +77 -0
- package/dist/core/memory/MemoryManagerFactory.d.ts.map +1 -0
- package/dist/core/memory/MemoryManagerFactory.js +270 -0
- package/dist/core/memory/MemoryManagerFactory.js.map +1 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts +58 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +375 -131
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/memory/index.d.ts +1 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +12 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/hooks/useKeyboardShortcuts.d.ts +12 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/hooks/useKeyboardShortcuts.js +69 -0
- package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/mcp/handlers/memory/memory-backup.js +6 -6
- package/dist/mcp/handlers/memory/memory-backup.js.map +1 -1
- package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -1
- package/dist/mcp/handlers/phase2/Phase2Tools.js +4 -2
- package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +4 -38
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +4 -4
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/persistence/event-store.d.ts +162 -0
- package/dist/persistence/event-store.d.ts.map +1 -0
- package/dist/persistence/event-store.js +315 -0
- package/dist/persistence/event-store.js.map +1 -0
- package/dist/persistence/index.d.ts +145 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +227 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/metrics-aggregator.d.ts +187 -0
- package/dist/persistence/metrics-aggregator.d.ts.map +1 -0
- package/dist/persistence/metrics-aggregator.js +495 -0
- package/dist/persistence/metrics-aggregator.js.map +1 -0
- package/dist/persistence/reasoning-store.d.ts +178 -0
- package/dist/persistence/reasoning-store.d.ts.map +1 -0
- package/dist/persistence/reasoning-store.js +440 -0
- package/dist/persistence/reasoning-store.js.map +1 -0
- package/dist/persistence/schema.d.ts +181 -0
- package/dist/persistence/schema.d.ts.map +1 -0
- package/dist/persistence/schema.js +186 -0
- package/dist/persistence/schema.js.map +1 -0
- package/dist/telemetry/bootstrap.d.ts +67 -0
- package/dist/telemetry/bootstrap.d.ts.map +1 -0
- package/dist/telemetry/bootstrap.js +320 -0
- package/dist/telemetry/bootstrap.js.map +1 -0
- package/dist/telemetry/index.d.ts +16 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +84 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/instrumentation/agent.d.ts +158 -0
- package/dist/telemetry/instrumentation/agent.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/agent.js +372 -0
- package/dist/telemetry/instrumentation/agent.js.map +1 -0
- package/dist/telemetry/instrumentation/index.d.ts +24 -0
- package/dist/telemetry/instrumentation/index.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/index.js +54 -0
- package/dist/telemetry/instrumentation/index.js.map +1 -0
- package/dist/telemetry/instrumentation/memory.d.ts +313 -0
- package/dist/telemetry/instrumentation/memory.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/memory.js +552 -0
- package/dist/telemetry/instrumentation/memory.js.map +1 -0
- package/dist/telemetry/instrumentation/task.d.ts +146 -0
- package/dist/telemetry/instrumentation/task.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/task.js +305 -0
- package/dist/telemetry/instrumentation/task.js.map +1 -0
- package/dist/telemetry/metrics/agent-metrics.d.ts +109 -0
- package/dist/telemetry/metrics/agent-metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics/agent-metrics.js +213 -0
- package/dist/telemetry/metrics/agent-metrics.js.map +1 -0
- package/dist/telemetry/metrics/collectors/cost.d.ts +246 -0
- package/dist/telemetry/metrics/collectors/cost.d.ts.map +1 -0
- package/dist/telemetry/metrics/collectors/cost.js +526 -0
- package/dist/telemetry/metrics/collectors/cost.js.map +1 -0
- package/dist/telemetry/metrics/collectors/pricing-config.d.ts +87 -0
- package/dist/telemetry/metrics/collectors/pricing-config.d.ts.map +1 -0
- package/dist/telemetry/metrics/collectors/pricing-config.js +207 -0
- package/dist/telemetry/metrics/collectors/pricing-config.js.map +1 -0
- package/dist/telemetry/metrics/index.d.ts +54 -0
- package/dist/telemetry/metrics/index.d.ts.map +1 -0
- package/dist/telemetry/metrics/index.js +116 -0
- package/dist/telemetry/metrics/index.js.map +1 -0
- package/dist/telemetry/metrics/quality-metrics.d.ts +171 -0
- package/dist/telemetry/metrics/quality-metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics/quality-metrics.js +259 -0
- package/dist/telemetry/metrics/quality-metrics.js.map +1 -0
- package/dist/telemetry/metrics/system-metrics.d.ts +129 -0
- package/dist/telemetry/metrics/system-metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics/system-metrics.js +380 -0
- package/dist/telemetry/metrics/system-metrics.js.map +1 -0
- package/dist/telemetry/types.d.ts +195 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +90 -0
- package/dist/telemetry/types.js.map +1 -0
- package/dist/visualization/api/RestEndpoints.d.ts +136 -0
- package/dist/visualization/api/RestEndpoints.d.ts.map +1 -0
- package/dist/visualization/api/RestEndpoints.js +428 -0
- package/dist/visualization/api/RestEndpoints.js.map +1 -0
- package/dist/visualization/api/WebSocketServer.d.ts +165 -0
- package/dist/visualization/api/WebSocketServer.d.ts.map +1 -0
- package/dist/visualization/api/WebSocketServer.js +518 -0
- package/dist/visualization/api/WebSocketServer.js.map +1 -0
- package/dist/visualization/core/DataTransformer.d.ts +89 -0
- package/dist/visualization/core/DataTransformer.d.ts.map +1 -0
- package/dist/visualization/core/DataTransformer.js +478 -0
- package/dist/visualization/core/DataTransformer.js.map +1 -0
- package/dist/visualization/index.d.ts +92 -0
- package/dist/visualization/index.d.ts.map +1 -0
- package/dist/visualization/index.js +121 -0
- package/dist/visualization/index.js.map +1 -0
- package/dist/visualization/types.d.ts +148 -0
- package/dist/visualization/types.d.ts.map +1 -0
- package/dist/visualization/types.js +7 -0
- package/dist/visualization/types.js.map +1 -0
- package/dist/voting/consensus.d.ts +87 -0
- package/dist/voting/consensus.d.ts.map +1 -0
- package/dist/voting/consensus.js +568 -0
- package/dist/voting/consensus.js.map +1 -0
- package/dist/voting/index.d.ts +12 -0
- package/dist/voting/index.d.ts.map +1 -0
- package/dist/voting/index.js +36 -0
- package/dist/voting/index.js.map +1 -0
- package/dist/voting/orchestrator.d.ts +65 -0
- package/dist/voting/orchestrator.d.ts.map +1 -0
- package/dist/voting/orchestrator.js +306 -0
- package/dist/voting/orchestrator.js.map +1 -0
- package/dist/voting/panel-assembly.d.ts +54 -0
- package/dist/voting/panel-assembly.d.ts.map +1 -0
- package/dist/voting/panel-assembly.js +192 -0
- package/dist/voting/panel-assembly.js.map +1 -0
- package/dist/voting/protocol.d.ts +119 -0
- package/dist/voting/protocol.d.ts.map +1 -0
- package/dist/voting/protocol.js +18 -0
- package/dist/voting/protocol.js.map +1 -0
- package/dist/voting/types.d.ts +125 -0
- package/dist/voting/types.d.ts.map +1 -0
- package/dist/voting/types.js +7 -0
- package/dist/voting/types.js.map +1 -0
- package/package.json +43 -2
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.DashboardHeader = void 0;
|
|
37
|
+
const react_1 = __importStar(require("react"));
|
|
38
|
+
const DashboardContext_1 = require("../../contexts/DashboardContext");
|
|
39
|
+
require("./DashboardHeader.css");
|
|
40
|
+
const DashboardHeader = () => {
|
|
41
|
+
const { filters, updateFilters, resetFilters, wsConnected, exportData, refreshData, notifications, } = (0, DashboardContext_1.useDashboard)();
|
|
42
|
+
const [sessions, setSessions] = (0, react_1.useState)([]);
|
|
43
|
+
const [agents, setAgents] = (0, react_1.useState)([]);
|
|
44
|
+
const [showFilters, setShowFilters] = (0, react_1.useState)(false);
|
|
45
|
+
const [showNotifications, setShowNotifications] = (0, react_1.useState)(false);
|
|
46
|
+
// Mock data - in real app, fetch from API
|
|
47
|
+
(0, react_1.useEffect)(() => {
|
|
48
|
+
setSessions([
|
|
49
|
+
{ id: 'session-1', name: 'Test Run #1', startTime: new Date('2025-11-21T10:00:00') },
|
|
50
|
+
{ id: 'session-2', name: 'Test Run #2', startTime: new Date('2025-11-21T11:00:00') },
|
|
51
|
+
{ id: 'session-3', name: 'Test Run #3', startTime: new Date('2025-11-21T12:00:00') },
|
|
52
|
+
]);
|
|
53
|
+
setAgents(['test-generator', 'coverage-analyzer', 'performance-tester', 'security-scanner']);
|
|
54
|
+
}, []);
|
|
55
|
+
const unreadCount = notifications.filter((n) => !n.read).length;
|
|
56
|
+
const handleTimeRangeChange = (range) => {
|
|
57
|
+
const now = new Date();
|
|
58
|
+
let start = null;
|
|
59
|
+
switch (range) {
|
|
60
|
+
case 'today':
|
|
61
|
+
start = new Date(now.setHours(0, 0, 0, 0));
|
|
62
|
+
break;
|
|
63
|
+
case 'week':
|
|
64
|
+
start = new Date(now.setDate(now.getDate() - 7));
|
|
65
|
+
break;
|
|
66
|
+
case 'month':
|
|
67
|
+
start = new Date(now.setMonth(now.getMonth() - 1));
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
updateFilters({
|
|
71
|
+
timeRange: { start, end: new Date() },
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
const toggleAgent = (agent) => {
|
|
75
|
+
const currentAgents = filters.agents;
|
|
76
|
+
const newAgents = currentAgents.includes(agent)
|
|
77
|
+
? currentAgents.filter((a) => a !== agent)
|
|
78
|
+
: [...currentAgents, agent];
|
|
79
|
+
updateFilters({ agents: newAgents });
|
|
80
|
+
};
|
|
81
|
+
return (react_1.default.createElement("header", { className: "dashboard-header" },
|
|
82
|
+
react_1.default.createElement("div", { className: "header-left" },
|
|
83
|
+
react_1.default.createElement("h1", null, "AQE Dashboard"),
|
|
84
|
+
react_1.default.createElement("div", { className: `ws-status ${wsConnected ? 'connected' : 'disconnected'}` },
|
|
85
|
+
react_1.default.createElement("span", { className: "status-indicator" }),
|
|
86
|
+
react_1.default.createElement("span", { className: "status-text" }, wsConnected ? 'Connected' : 'Disconnected'))),
|
|
87
|
+
react_1.default.createElement("div", { className: "header-center" },
|
|
88
|
+
react_1.default.createElement("div", { className: "filter-group" },
|
|
89
|
+
react_1.default.createElement("label", null, "Session:"),
|
|
90
|
+
react_1.default.createElement("select", { value: filters.sessionId || '', onChange: (e) => updateFilters({ sessionId: e.target.value || null }), className: "filter-select" },
|
|
91
|
+
react_1.default.createElement("option", { value: "" }, "All Sessions"),
|
|
92
|
+
sessions.map((session) => (react_1.default.createElement("option", { key: session.id, value: session.id }, session.name))))),
|
|
93
|
+
react_1.default.createElement("div", { className: "filter-group" },
|
|
94
|
+
react_1.default.createElement("label", null, "Time Range:"),
|
|
95
|
+
react_1.default.createElement("select", { onChange: (e) => handleTimeRangeChange(e.target.value), className: "filter-select" },
|
|
96
|
+
react_1.default.createElement("option", { value: "" }, "All Time"),
|
|
97
|
+
react_1.default.createElement("option", { value: "today" }, "Today"),
|
|
98
|
+
react_1.default.createElement("option", { value: "week" }, "Last 7 Days"),
|
|
99
|
+
react_1.default.createElement("option", { value: "month" }, "Last 30 Days"),
|
|
100
|
+
react_1.default.createElement("option", { value: "custom" }, "Custom Range"))),
|
|
101
|
+
react_1.default.createElement("button", { className: "filter-toggle-btn", onClick: () => setShowFilters(!showFilters), title: "Toggle Filters (Ctrl+F)" },
|
|
102
|
+
react_1.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "currentColor" },
|
|
103
|
+
react_1.default.createElement("path", { d: "M3 4h14M6 8h8M8 12h4M10 16h0", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })),
|
|
104
|
+
"Filters")),
|
|
105
|
+
react_1.default.createElement("div", { className: "header-right" },
|
|
106
|
+
react_1.default.createElement("div", { className: "notification-container" },
|
|
107
|
+
react_1.default.createElement("button", { className: "notification-btn", onClick: () => setShowNotifications(!showNotifications) },
|
|
108
|
+
react_1.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "currentColor" },
|
|
109
|
+
react_1.default.createElement("path", { d: "M10 2a6 6 0 016 6v3.586l1.707 1.707A1 1 0 0117 15h-4a3 3 0 01-6 0H3a1 1 0 01-.707-1.707L4 11.586V8a6 6 0 016-6z" })),
|
|
110
|
+
unreadCount > 0 && react_1.default.createElement("span", { className: "notification-badge" }, unreadCount)),
|
|
111
|
+
showNotifications && (react_1.default.createElement("div", { className: "notification-dropdown" },
|
|
112
|
+
react_1.default.createElement("div", { className: "notification-header" },
|
|
113
|
+
react_1.default.createElement("h3", null, "Notifications"),
|
|
114
|
+
react_1.default.createElement("button", { onClick: () => setShowNotifications(false) }, "\u2715")),
|
|
115
|
+
react_1.default.createElement("div", { className: "notification-list" }, notifications.length === 0 ? (react_1.default.createElement("div", { className: "notification-empty" }, "No notifications")) : (notifications.slice(0, 10).map((notif) => (react_1.default.createElement("div", { key: notif.id, className: `notification-item ${notif.type} ${notif.read ? 'read' : 'unread'}` },
|
|
116
|
+
react_1.default.createElement("div", { className: "notification-content" },
|
|
117
|
+
react_1.default.createElement("strong", null, notif.title),
|
|
118
|
+
react_1.default.createElement("p", null, notif.message),
|
|
119
|
+
react_1.default.createElement("span", { className: "notification-time" }, notif.timestamp.toLocaleTimeString())))))))))),
|
|
120
|
+
react_1.default.createElement("button", { className: "action-btn", onClick: refreshData, title: "Refresh Data (Ctrl+R)" },
|
|
121
|
+
react_1.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "currentColor" },
|
|
122
|
+
react_1.default.createElement("path", { d: "M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z" })),
|
|
123
|
+
"Refresh"),
|
|
124
|
+
react_1.default.createElement("button", { className: "action-btn", onClick: exportData, title: "Export Data (Ctrl+E)" },
|
|
125
|
+
react_1.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "currentColor" },
|
|
126
|
+
react_1.default.createElement("path", { d: "M3 17a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm3.293-7.707a1 1 0 011.414 0L9 10.586V3a1 1 0 112 0v7.586l1.293-1.293a1 1 0 111.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z" })),
|
|
127
|
+
"Export"),
|
|
128
|
+
react_1.default.createElement("button", { className: "action-btn secondary", onClick: resetFilters, title: "Reset Filters" }, "Reset")),
|
|
129
|
+
showFilters && (react_1.default.createElement("div", { className: "filters-panel" },
|
|
130
|
+
react_1.default.createElement("h3", null, "Agent Filter"),
|
|
131
|
+
react_1.default.createElement("div", { className: "agent-checkboxes" }, agents.map((agent) => (react_1.default.createElement("label", { key: agent, className: "agent-checkbox" },
|
|
132
|
+
react_1.default.createElement("input", { type: "checkbox", checked: filters.agents.includes(agent), onChange: () => toggleAgent(agent) }),
|
|
133
|
+
react_1.default.createElement("span", null, agent))))),
|
|
134
|
+
react_1.default.createElement("h3", null, "Search"),
|
|
135
|
+
react_1.default.createElement("input", { type: "text", placeholder: "Search events, metrics...", value: filters.searchTerm, onChange: (e) => updateFilters({ searchTerm: e.target.value }), className: "search-input" })))));
|
|
136
|
+
};
|
|
137
|
+
exports.DashboardHeader = DashboardHeader;
|
|
138
|
+
//# sourceMappingURL=DashboardHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardHeader.js","sourceRoot":"","sources":["../../../src/components/Dashboard/DashboardHeader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AST Evaluator
|
|
3
|
+
*
|
|
4
|
+
* Analyzes code structure using Abstract Syntax Tree parsing.
|
|
5
|
+
* Calculates metrics like cyclomatic complexity, function length, cognitive complexity.
|
|
6
|
+
* Uses @babel/parser for JavaScript/TypeScript analysis.
|
|
7
|
+
*
|
|
8
|
+
* @module constitution/evaluators/ast-evaluator
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
import type { RuleCondition } from '../schema';
|
|
12
|
+
import { BaseEvaluator, type CheckResult, type EvaluationContext } from './base';
|
|
13
|
+
/**
|
|
14
|
+
* AST Evaluator for structural code analysis
|
|
15
|
+
*/
|
|
16
|
+
export declare class ASTEvaluator extends BaseEvaluator {
|
|
17
|
+
readonly type: "ast";
|
|
18
|
+
canHandle(condition: RuleCondition): boolean;
|
|
19
|
+
evaluate(condition: RuleCondition, context: EvaluationContext): Promise<CheckResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Parse source code to AST
|
|
22
|
+
* @param code - Source code
|
|
23
|
+
* @param language - Programming language
|
|
24
|
+
* @returns Parsed AST
|
|
25
|
+
*/
|
|
26
|
+
private parseCode;
|
|
27
|
+
/**
|
|
28
|
+
* Calculate AST metrics
|
|
29
|
+
* @param ast - Parsed AST
|
|
30
|
+
* @param sourceCode - Original source code
|
|
31
|
+
* @returns Calculated metrics
|
|
32
|
+
*/
|
|
33
|
+
private calculateMetrics;
|
|
34
|
+
/**
|
|
35
|
+
* Get metric value by field name
|
|
36
|
+
* @param field - Field name
|
|
37
|
+
* @param metrics - Calculated metrics
|
|
38
|
+
* @returns Metric value
|
|
39
|
+
*/
|
|
40
|
+
private getMetricValue;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=ast-evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-evaluator.d.ts","sourceRoot":"","sources":["../../../src/constitution/evaluators/ast-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAoCjF;;GAEG;AACH,qBAAa,YAAa,SAAQ,aAAa;IAC7C,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAE/B,SAAS,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO;IAItC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IA4C1F;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAmBjB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAgExB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;CAqBvB"}
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AST Evaluator
|
|
4
|
+
*
|
|
5
|
+
* Analyzes code structure using Abstract Syntax Tree parsing.
|
|
6
|
+
* Calculates metrics like cyclomatic complexity, function length, cognitive complexity.
|
|
7
|
+
* Uses @babel/parser for JavaScript/TypeScript analysis.
|
|
8
|
+
*
|
|
9
|
+
* @module constitution/evaluators/ast-evaluator
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.ASTEvaluator = void 0;
|
|
17
|
+
const parser_1 = require("@babel/parser");
|
|
18
|
+
const traverse_1 = __importDefault(require("@babel/traverse"));
|
|
19
|
+
const base_1 = require("./base");
|
|
20
|
+
/**
|
|
21
|
+
* Fields that AST evaluator can check
|
|
22
|
+
*/
|
|
23
|
+
const AST_FIELDS = new Set([
|
|
24
|
+
'cyclomatic_complexity',
|
|
25
|
+
'cognitive_complexity',
|
|
26
|
+
'function_lines',
|
|
27
|
+
'file_lines',
|
|
28
|
+
'function_count',
|
|
29
|
+
'max_nesting_depth',
|
|
30
|
+
'parameter_count',
|
|
31
|
+
'nesting_depth',
|
|
32
|
+
]);
|
|
33
|
+
/**
|
|
34
|
+
* AST Evaluator for structural code analysis
|
|
35
|
+
*/
|
|
36
|
+
class ASTEvaluator extends base_1.BaseEvaluator {
|
|
37
|
+
constructor() {
|
|
38
|
+
super(...arguments);
|
|
39
|
+
this.type = 'ast';
|
|
40
|
+
}
|
|
41
|
+
canHandle(condition) {
|
|
42
|
+
return AST_FIELDS.has(condition.field);
|
|
43
|
+
}
|
|
44
|
+
async evaluate(condition, context) {
|
|
45
|
+
if (!context.sourceCode) {
|
|
46
|
+
return this.createResult(false, condition.field, null, condition.value, condition.operator, 'No source code provided for AST analysis');
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
// Parse source code to AST
|
|
50
|
+
const ast = this.parseCode(context.sourceCode, context.language);
|
|
51
|
+
// Calculate metrics
|
|
52
|
+
const metrics = this.calculateMetrics(ast, context.sourceCode);
|
|
53
|
+
// Get the requested metric value
|
|
54
|
+
const actualValue = this.getMetricValue(condition.field, metrics);
|
|
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, `AST analysis failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Parse source code to AST
|
|
65
|
+
* @param code - Source code
|
|
66
|
+
* @param language - Programming language
|
|
67
|
+
* @returns Parsed AST
|
|
68
|
+
*/
|
|
69
|
+
parseCode(code, language = 'typescript') {
|
|
70
|
+
const isTypeScript = language === 'typescript' || language === 'tsx';
|
|
71
|
+
return (0, parser_1.parse)(code, {
|
|
72
|
+
sourceType: 'module',
|
|
73
|
+
plugins: [
|
|
74
|
+
'jsx',
|
|
75
|
+
...(isTypeScript ? ['typescript'] : []),
|
|
76
|
+
'decorators-legacy',
|
|
77
|
+
'classProperties',
|
|
78
|
+
'objectRestSpread',
|
|
79
|
+
'asyncGenerators',
|
|
80
|
+
'dynamicImport',
|
|
81
|
+
'optionalChaining',
|
|
82
|
+
'nullishCoalescingOperator',
|
|
83
|
+
],
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Calculate AST metrics
|
|
88
|
+
* @param ast - Parsed AST
|
|
89
|
+
* @param sourceCode - Original source code
|
|
90
|
+
* @returns Calculated metrics
|
|
91
|
+
*/
|
|
92
|
+
calculateMetrics(ast, sourceCode) {
|
|
93
|
+
const metrics = {
|
|
94
|
+
cyclomaticComplexity: 1,
|
|
95
|
+
cognitiveComplexity: 0,
|
|
96
|
+
functionLines: 0,
|
|
97
|
+
fileLines: sourceCode.split('\n').length,
|
|
98
|
+
functionCount: 0,
|
|
99
|
+
maxNestingDepth: 0,
|
|
100
|
+
parameterCount: 0,
|
|
101
|
+
};
|
|
102
|
+
let currentNestingDepth = 0;
|
|
103
|
+
let maxFunctionLines = 0;
|
|
104
|
+
let maxCyclomaticComplexity = 1;
|
|
105
|
+
let maxCognitiveComplexity = 0;
|
|
106
|
+
let maxParameterCount = 0;
|
|
107
|
+
(0, traverse_1.default)(ast, {
|
|
108
|
+
Function: {
|
|
109
|
+
enter(path) {
|
|
110
|
+
metrics.functionCount++;
|
|
111
|
+
currentNestingDepth++;
|
|
112
|
+
// Calculate function length
|
|
113
|
+
const { start, end } = path.node.loc || { start: { line: 0 }, end: { line: 0 } };
|
|
114
|
+
const functionLines = end.line - start.line + 1;
|
|
115
|
+
maxFunctionLines = Math.max(maxFunctionLines, functionLines);
|
|
116
|
+
// Calculate cyclomatic complexity for this function
|
|
117
|
+
const complexity = calculateCyclomaticComplexity(path);
|
|
118
|
+
maxCyclomaticComplexity = Math.max(maxCyclomaticComplexity, complexity);
|
|
119
|
+
// Calculate cognitive complexity for this function
|
|
120
|
+
const cognitiveComplexity = calculateCognitiveComplexity(path);
|
|
121
|
+
maxCognitiveComplexity = Math.max(maxCognitiveComplexity, cognitiveComplexity);
|
|
122
|
+
// Count parameters
|
|
123
|
+
const paramCount = path.node.params.length;
|
|
124
|
+
maxParameterCount = Math.max(maxParameterCount, paramCount);
|
|
125
|
+
},
|
|
126
|
+
exit() {
|
|
127
|
+
currentNestingDepth--;
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
BlockStatement: {
|
|
131
|
+
enter() {
|
|
132
|
+
currentNestingDepth++;
|
|
133
|
+
metrics.maxNestingDepth = Math.max(metrics.maxNestingDepth, currentNestingDepth);
|
|
134
|
+
},
|
|
135
|
+
exit() {
|
|
136
|
+
currentNestingDepth--;
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
});
|
|
140
|
+
metrics.functionLines = maxFunctionLines;
|
|
141
|
+
metrics.cyclomaticComplexity = maxCyclomaticComplexity;
|
|
142
|
+
metrics.cognitiveComplexity = maxCognitiveComplexity;
|
|
143
|
+
metrics.parameterCount = maxParameterCount;
|
|
144
|
+
return metrics;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get metric value by field name
|
|
148
|
+
* @param field - Field name
|
|
149
|
+
* @param metrics - Calculated metrics
|
|
150
|
+
* @returns Metric value
|
|
151
|
+
*/
|
|
152
|
+
getMetricValue(field, metrics) {
|
|
153
|
+
switch (field) {
|
|
154
|
+
case 'cyclomatic_complexity':
|
|
155
|
+
return metrics.cyclomaticComplexity;
|
|
156
|
+
case 'cognitive_complexity':
|
|
157
|
+
return metrics.cognitiveComplexity;
|
|
158
|
+
case 'function_lines':
|
|
159
|
+
return metrics.functionLines;
|
|
160
|
+
case 'file_lines':
|
|
161
|
+
return metrics.fileLines;
|
|
162
|
+
case 'function_count':
|
|
163
|
+
return metrics.functionCount;
|
|
164
|
+
case 'max_nesting_depth':
|
|
165
|
+
case 'nesting_depth':
|
|
166
|
+
return metrics.maxNestingDepth;
|
|
167
|
+
case 'parameter_count':
|
|
168
|
+
return metrics.parameterCount;
|
|
169
|
+
default:
|
|
170
|
+
return 0;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.ASTEvaluator = ASTEvaluator;
|
|
175
|
+
/**
|
|
176
|
+
* Calculate cyclomatic complexity for a function
|
|
177
|
+
* @param path - Function AST path
|
|
178
|
+
* @returns Cyclomatic complexity
|
|
179
|
+
*/
|
|
180
|
+
function calculateCyclomaticComplexity(path) {
|
|
181
|
+
let complexity = 1; // Start at 1
|
|
182
|
+
path.traverse({
|
|
183
|
+
IfStatement() { complexity++; },
|
|
184
|
+
ConditionalExpression() { complexity++; },
|
|
185
|
+
LogicalExpression(logicalPath) {
|
|
186
|
+
if (logicalPath.node.operator === '||' || logicalPath.node.operator === '&&') {
|
|
187
|
+
complexity++;
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
ForStatement() { complexity++; },
|
|
191
|
+
ForInStatement() { complexity++; },
|
|
192
|
+
ForOfStatement() { complexity++; },
|
|
193
|
+
WhileStatement() { complexity++; },
|
|
194
|
+
DoWhileStatement() { complexity++; },
|
|
195
|
+
SwitchCase(casePath) {
|
|
196
|
+
if (casePath.node.test !== null) { // Don't count default case
|
|
197
|
+
complexity++;
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
CatchClause() { complexity++; },
|
|
201
|
+
});
|
|
202
|
+
return complexity;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Calculate cognitive complexity for a function
|
|
206
|
+
* Cognitive complexity penalizes nested control structures more heavily
|
|
207
|
+
* @param path - Function AST path
|
|
208
|
+
* @returns Cognitive complexity
|
|
209
|
+
*/
|
|
210
|
+
function calculateCognitiveComplexity(path) {
|
|
211
|
+
let complexity = 0;
|
|
212
|
+
let nestingLevel = 0;
|
|
213
|
+
path.traverse({
|
|
214
|
+
IfStatement: {
|
|
215
|
+
enter() {
|
|
216
|
+
complexity += 1 + nestingLevel;
|
|
217
|
+
nestingLevel++;
|
|
218
|
+
},
|
|
219
|
+
exit() {
|
|
220
|
+
nestingLevel--;
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
ConditionalExpression: {
|
|
224
|
+
enter() {
|
|
225
|
+
complexity += 1 + nestingLevel;
|
|
226
|
+
nestingLevel++;
|
|
227
|
+
},
|
|
228
|
+
exit() {
|
|
229
|
+
nestingLevel--;
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
SwitchStatement: {
|
|
233
|
+
enter() {
|
|
234
|
+
complexity += 1 + nestingLevel;
|
|
235
|
+
nestingLevel++;
|
|
236
|
+
},
|
|
237
|
+
exit() {
|
|
238
|
+
nestingLevel--;
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
ForStatement: {
|
|
242
|
+
enter() {
|
|
243
|
+
complexity += 1 + nestingLevel;
|
|
244
|
+
nestingLevel++;
|
|
245
|
+
},
|
|
246
|
+
exit() {
|
|
247
|
+
nestingLevel--;
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
ForInStatement: {
|
|
251
|
+
enter() {
|
|
252
|
+
complexity += 1 + nestingLevel;
|
|
253
|
+
nestingLevel++;
|
|
254
|
+
},
|
|
255
|
+
exit() {
|
|
256
|
+
nestingLevel--;
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
ForOfStatement: {
|
|
260
|
+
enter() {
|
|
261
|
+
complexity += 1 + nestingLevel;
|
|
262
|
+
nestingLevel++;
|
|
263
|
+
},
|
|
264
|
+
exit() {
|
|
265
|
+
nestingLevel--;
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
WhileStatement: {
|
|
269
|
+
enter() {
|
|
270
|
+
complexity += 1 + nestingLevel;
|
|
271
|
+
nestingLevel++;
|
|
272
|
+
},
|
|
273
|
+
exit() {
|
|
274
|
+
nestingLevel--;
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
DoWhileStatement: {
|
|
278
|
+
enter() {
|
|
279
|
+
complexity += 1 + nestingLevel;
|
|
280
|
+
nestingLevel++;
|
|
281
|
+
},
|
|
282
|
+
exit() {
|
|
283
|
+
nestingLevel--;
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
CatchClause: {
|
|
287
|
+
enter() {
|
|
288
|
+
complexity += 1 + nestingLevel;
|
|
289
|
+
nestingLevel++;
|
|
290
|
+
},
|
|
291
|
+
exit() {
|
|
292
|
+
nestingLevel--;
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
LogicalExpression(logicalPath) {
|
|
296
|
+
if (logicalPath.node.operator === '&&' || logicalPath.node.operator === '||') {
|
|
297
|
+
complexity += 1;
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
});
|
|
301
|
+
return complexity;
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=ast-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-evaluator.js","sourceRoot":"","sources":["../../../src/constitution/evaluators/ast-evaluator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;AAEH,0CAAwD;AACxD,+DAA0D;AAG1D,iCAAiF;AAsBjF;;GAEG;AACH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,uBAAuB;IACvB,sBAAsB;IACtB,gBAAgB;IAChB,YAAY;IACZ,gBAAgB;IAChB,mBAAmB;IACnB,iBAAiB;IACjB,eAAe;CAChB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAa,YAAa,SAAQ,oBAAa;IAA/C;;QACW,SAAI,GAAG,KAAc,CAAC;IA4KjC,CAAC;IA1KC,SAAS,CAAC,SAAwB;QAChC,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAwB,EAAE,OAA0B;QACjE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,YAAY,CACtB,KAAK,EACL,SAAS,CAAC,KAAK,EACf,IAAI,EACJ,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,QAAQ,EAClB,0CAA0C,CAC3C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,2BAA2B;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEjE,oBAAoB;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAE/D,iCAAiC;YACjC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAElE,iCAAiC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YAEpF,OAAO,IAAI,CAAC,YAAY,CACtB,MAAM,EACN,SAAS,CAAC,KAAK,EACf,WAAW,EACX,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,QAAQ,CACnB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,YAAY,CACtB,KAAK,EACL,SAAS,CAAC,KAAK,EACf,IAAI,EACJ,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,QAAQ,EAClB,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACjF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,SAAS,CAAC,IAAY,EAAE,WAAmB,YAAY;QAC7D,MAAM,YAAY,GAAG,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,KAAK,CAAC;QAErE,OAAO,IAAA,cAAK,EAAC,IAAI,EAAE;YACjB,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE;gBACP,KAAK;gBACL,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,mBAAmB;gBACnB,iBAAiB;gBACjB,kBAAkB;gBAClB,iBAAiB;gBACjB,eAAe;gBACf,kBAAkB;gBAClB,2BAA2B;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACK,gBAAgB,CAAC,GAAwB,EAAE,UAAkB;QACnE,MAAM,OAAO,GAAe;YAC1B,oBAAoB,EAAE,CAAC;YACvB,mBAAmB,EAAE,CAAC;YACtB,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;YACxC,aAAa,EAAE,CAAC;YAChB,eAAe,EAAE,CAAC;YAClB,cAAc,EAAE,CAAC;SAClB,CAAC;QAEF,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,uBAAuB,GAAG,CAAC,CAAC;QAChC,IAAI,sBAAsB,GAAG,CAAC,CAAC;QAC/B,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,IAAA,kBAAQ,EAAC,GAAG,EAAE;YACZ,QAAQ,EAAE;gBACR,KAAK,CAAC,IAA0B;oBAC9B,OAAO,CAAC,aAAa,EAAE,CAAC;oBACxB,mBAAmB,EAAE,CAAC;oBAEtB,4BAA4B;oBAC5B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBACjF,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;oBAChD,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;oBAE7D,oDAAoD;oBACpD,MAAM,UAAU,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;oBACvD,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC;oBAExE,mDAAmD;oBACnD,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;oBAC/D,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;oBAE/E,mBAAmB;oBACnB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;oBAC3C,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;gBAC9D,CAAC;gBACD,IAAI;oBACF,mBAAmB,EAAE,CAAC;gBACxB,CAAC;aACF;YAED,cAAc,EAAE;gBACd,KAAK;oBACH,mBAAmB,EAAE,CAAC;oBACtB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;gBACnF,CAAC;gBACD,IAAI;oBACF,mBAAmB,EAAE,CAAC;gBACxB,CAAC;aACF;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,aAAa,GAAG,gBAAgB,CAAC;QACzC,OAAO,CAAC,oBAAoB,GAAG,uBAAuB,CAAC;QACvD,OAAO,CAAC,mBAAmB,GAAG,sBAAsB,CAAC;QACrD,OAAO,CAAC,cAAc,GAAG,iBAAiB,CAAC;QAE3C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,KAAa,EAAE,OAAmB;QACvD,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,uBAAuB;gBAC1B,OAAO,OAAO,CAAC,oBAAoB,CAAC;YACtC,KAAK,sBAAsB;gBACzB,OAAO,OAAO,CAAC,mBAAmB,CAAC;YACrC,KAAK,gBAAgB;gBACnB,OAAO,OAAO,CAAC,aAAa,CAAC;YAC/B,KAAK,YAAY;gBACf,OAAO,OAAO,CAAC,SAAS,CAAC;YAC3B,KAAK,gBAAgB;gBACnB,OAAO,OAAO,CAAC,aAAa,CAAC;YAC/B,KAAK,mBAAmB,CAAC;YACzB,KAAK,eAAe;gBAClB,OAAO,OAAO,CAAC,eAAe,CAAC;YACjC,KAAK,iBAAiB;gBACpB,OAAO,OAAO,CAAC,cAAc,CAAC;YAChC;gBACE,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;CACF;AA7KD,oCA6KC;AAED;;;;GAIG;AACH,SAAS,6BAA6B,CAAC,IAA0B;IAC/D,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,aAAa;IAEjC,IAAI,CAAC,QAAQ,CAAC;QACZ,WAAW,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/B,qBAAqB,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;QACzC,iBAAiB,CAAC,WAAW;YAC3B,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC7E,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QACD,YAAY,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;QAChC,cAAc,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;QAClC,cAAc,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;QAClC,cAAc,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;QAClC,gBAAgB,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;QACpC,UAAU,CAAC,QAAQ;YACjB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,2BAA2B;gBAC5D,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QACD,WAAW,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;KAChC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,SAAS,4BAA4B,CAAC,IAA0B;IAC9D,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,IAAI,CAAC,QAAQ,CAAC;QACZ,WAAW,EAAE;YACX,KAAK;gBACH,UAAU,IAAI,CAAC,GAAG,YAAY,CAAC;gBAC/B,YAAY,EAAE,CAAC;YACjB,CAAC;YACD,IAAI;gBACF,YAAY,EAAE,CAAC;YACjB,CAAC;SACF;QAED,qBAAqB,EAAE;YACrB,KAAK;gBACH,UAAU,IAAI,CAAC,GAAG,YAAY,CAAC;gBAC/B,YAAY,EAAE,CAAC;YACjB,CAAC;YACD,IAAI;gBACF,YAAY,EAAE,CAAC;YACjB,CAAC;SACF;QAED,eAAe,EAAE;YACf,KAAK;gBACH,UAAU,IAAI,CAAC,GAAG,YAAY,CAAC;gBAC/B,YAAY,EAAE,CAAC;YACjB,CAAC;YACD,IAAI;gBACF,YAAY,EAAE,CAAC;YACjB,CAAC;SACF;QAED,YAAY,EAAE;YACZ,KAAK;gBACH,UAAU,IAAI,CAAC,GAAG,YAAY,CAAC;gBAC/B,YAAY,EAAE,CAAC;YACjB,CAAC;YACD,IAAI;gBACF,YAAY,EAAE,CAAC;YACjB,CAAC;SACF;QAED,cAAc,EAAE;YACd,KAAK;gBACH,UAAU,IAAI,CAAC,GAAG,YAAY,CAAC;gBAC/B,YAAY,EAAE,CAAC;YACjB,CAAC;YACD,IAAI;gBACF,YAAY,EAAE,CAAC;YACjB,CAAC;SACF;QAED,cAAc,EAAE;YACd,KAAK;gBACH,UAAU,IAAI,CAAC,GAAG,YAAY,CAAC;gBAC/B,YAAY,EAAE,CAAC;YACjB,CAAC;YACD,IAAI;gBACF,YAAY,EAAE,CAAC;YACjB,CAAC;SACF;QAED,cAAc,EAAE;YACd,KAAK;gBACH,UAAU,IAAI,CAAC,GAAG,YAAY,CAAC;gBAC/B,YAAY,EAAE,CAAC;YACjB,CAAC;YACD,IAAI;gBACF,YAAY,EAAE,CAAC;YACjB,CAAC;SACF;QAED,gBAAgB,EAAE;YAChB,KAAK;gBACH,UAAU,IAAI,CAAC,GAAG,YAAY,CAAC;gBAC/B,YAAY,EAAE,CAAC;YACjB,CAAC;YACD,IAAI;gBACF,YAAY,EAAE,CAAC;YACjB,CAAC;SACF;QAED,WAAW,EAAE;YACX,KAAK;gBACH,UAAU,IAAI,CAAC,GAAG,YAAY,CAAC;gBAC/B,YAAY,EAAE,CAAC;YACjB,CAAC;YACD,IAAI;gBACF,YAAY,EAAE,CAAC;YACjB,CAAC;SACF;QAED,iBAAiB,CAAC,WAAW;YAC3B,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC7E,UAAU,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Evaluator Interface
|
|
3
|
+
*
|
|
4
|
+
* Defines the contract for all clause evaluators in the constitution framework.
|
|
5
|
+
* Evaluators analyze code/data against constitution rules and return evaluation results.
|
|
6
|
+
*
|
|
7
|
+
* @module constitution/evaluators/base
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { RuleCondition, ConditionOperator } from '../schema';
|
|
11
|
+
/**
|
|
12
|
+
* Check types supported by evaluators
|
|
13
|
+
*/
|
|
14
|
+
export type CheckType = 'ast' | 'metric' | 'pattern' | 'semantic';
|
|
15
|
+
/**
|
|
16
|
+
* Evaluation context providing data for checks
|
|
17
|
+
*/
|
|
18
|
+
export interface EvaluationContext {
|
|
19
|
+
/** Source code to evaluate */
|
|
20
|
+
sourceCode?: string;
|
|
21
|
+
/** File path being evaluated */
|
|
22
|
+
filePath?: string;
|
|
23
|
+
/** Programming language */
|
|
24
|
+
language?: string;
|
|
25
|
+
/** Pre-calculated metrics */
|
|
26
|
+
metrics?: Record<string, number>;
|
|
27
|
+
/** Additional context data */
|
|
28
|
+
data?: Record<string, unknown>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Result of a single check evaluation
|
|
32
|
+
*/
|
|
33
|
+
export interface CheckResult {
|
|
34
|
+
/** Whether the check passed */
|
|
35
|
+
passed: boolean;
|
|
36
|
+
/** Actual value found */
|
|
37
|
+
actualValue: unknown;
|
|
38
|
+
/** Expected value from condition */
|
|
39
|
+
expectedValue: unknown;
|
|
40
|
+
/** Operator used for comparison */
|
|
41
|
+
operator: ConditionOperator;
|
|
42
|
+
/** Field that was checked */
|
|
43
|
+
field: string;
|
|
44
|
+
/** Optional message */
|
|
45
|
+
message?: string;
|
|
46
|
+
/** Additional metadata */
|
|
47
|
+
metadata?: Record<string, unknown>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Configuration for an evaluator
|
|
51
|
+
*/
|
|
52
|
+
export interface EvaluatorConfig {
|
|
53
|
+
/** Evaluator type */
|
|
54
|
+
type: CheckType;
|
|
55
|
+
/** Enabled state */
|
|
56
|
+
enabled?: boolean;
|
|
57
|
+
/** Timeout in milliseconds */
|
|
58
|
+
timeout?: number;
|
|
59
|
+
/** Custom configuration */
|
|
60
|
+
options?: Record<string, unknown>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Base evaluator interface
|
|
64
|
+
*/
|
|
65
|
+
export interface IEvaluator {
|
|
66
|
+
/** Evaluator type */
|
|
67
|
+
readonly type: CheckType;
|
|
68
|
+
/**
|
|
69
|
+
* Check if this evaluator can handle the given condition
|
|
70
|
+
* @param condition - Rule condition to check
|
|
71
|
+
* @returns True if evaluator can handle this condition
|
|
72
|
+
*/
|
|
73
|
+
canHandle(condition: RuleCondition): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Evaluate a condition against the context
|
|
76
|
+
* @param condition - Rule condition to evaluate
|
|
77
|
+
* @param context - Evaluation context with source code/data
|
|
78
|
+
* @returns Check result
|
|
79
|
+
*/
|
|
80
|
+
evaluate(condition: RuleCondition, context: EvaluationContext): Promise<CheckResult>;
|
|
81
|
+
/**
|
|
82
|
+
* Initialize the evaluator with configuration
|
|
83
|
+
* @param config - Evaluator configuration
|
|
84
|
+
*/
|
|
85
|
+
initialize?(config: EvaluatorConfig): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Clean up resources
|
|
88
|
+
*/
|
|
89
|
+
dispose?(): Promise<void>;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Abstract base class for evaluators
|
|
93
|
+
*/
|
|
94
|
+
export declare abstract class BaseEvaluator implements IEvaluator {
|
|
95
|
+
abstract readonly type: CheckType;
|
|
96
|
+
protected config?: EvaluatorConfig;
|
|
97
|
+
abstract canHandle(condition: RuleCondition): boolean;
|
|
98
|
+
abstract evaluate(condition: RuleCondition, context: EvaluationContext): Promise<CheckResult>;
|
|
99
|
+
initialize(config: EvaluatorConfig): Promise<void>;
|
|
100
|
+
dispose(): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Helper to compare values using operator
|
|
103
|
+
* @param actual - Actual value
|
|
104
|
+
* @param operator - Comparison operator
|
|
105
|
+
* @param expected - Expected value
|
|
106
|
+
* @returns True if comparison passes
|
|
107
|
+
*/
|
|
108
|
+
protected compareValues(actual: unknown, operator: ConditionOperator, expected: unknown): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Create a check result
|
|
111
|
+
* @param passed - Whether check passed
|
|
112
|
+
* @param field - Field checked
|
|
113
|
+
* @param actual - Actual value
|
|
114
|
+
* @param expected - Expected value
|
|
115
|
+
* @param operator - Operator used
|
|
116
|
+
* @param message - Optional message
|
|
117
|
+
* @returns Check result
|
|
118
|
+
*/
|
|
119
|
+
protected createResult(passed: boolean, field: string, actual: unknown, expected: unknown, operator: ConditionOperator, message?: string): CheckResult;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Factory for creating evaluators
|
|
123
|
+
*/
|
|
124
|
+
export declare class EvaluatorFactory {
|
|
125
|
+
private static evaluators;
|
|
126
|
+
/**
|
|
127
|
+
* Register an evaluator type
|
|
128
|
+
* @param type - Check type
|
|
129
|
+
* @param factory - Factory function to create evaluator
|
|
130
|
+
*/
|
|
131
|
+
static register(type: CheckType, factory: () => IEvaluator): void;
|
|
132
|
+
/**
|
|
133
|
+
* Create an evaluator for the given type
|
|
134
|
+
* @param type - Check type
|
|
135
|
+
* @returns Evaluator instance or null if not found
|
|
136
|
+
*/
|
|
137
|
+
static create(type: CheckType): IEvaluator | null;
|
|
138
|
+
/**
|
|
139
|
+
* Get all registered evaluator types
|
|
140
|
+
* @returns Array of check types
|
|
141
|
+
*/
|
|
142
|
+
static getTypes(): CheckType[];
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/constitution/evaluators/base.ts"],"names":[],"mappings":"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"}
|