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,515 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Constitution Loader - Load, validate, and manage constitutions
|
|
4
|
+
*
|
|
5
|
+
* Provides functionality to load constitution files, validate against schema,
|
|
6
|
+
* and support inheritance/composition patterns.
|
|
7
|
+
*
|
|
8
|
+
* @module constitution/loader
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.ConstitutionLoader = void 0;
|
|
49
|
+
exports.getDefaultLoader = getDefaultLoader;
|
|
50
|
+
exports.loadConstitution = loadConstitution;
|
|
51
|
+
exports.loadConstitutions = loadConstitutions;
|
|
52
|
+
exports.mergeConstitutions = mergeConstitutions;
|
|
53
|
+
exports.validateConstitution = validateConstitution;
|
|
54
|
+
exports.getConstitutionForAgent = getConstitutionForAgent;
|
|
55
|
+
exports.getBaseConstitutionsPath = getBaseConstitutionsPath;
|
|
56
|
+
exports.listAvailableConstitutions = listAvailableConstitutions;
|
|
57
|
+
const ajv_1 = __importDefault(require("ajv"));
|
|
58
|
+
const ajv_formats_1 = __importDefault(require("ajv-formats"));
|
|
59
|
+
const fs = __importStar(require("fs"));
|
|
60
|
+
const path = __importStar(require("path"));
|
|
61
|
+
// Load the JSON schema
|
|
62
|
+
const schemaPath = path.join(__dirname, '../../config/constitution.schema.json');
|
|
63
|
+
/**
|
|
64
|
+
* Constitution loader class for managing quality constitutions
|
|
65
|
+
*/
|
|
66
|
+
class ConstitutionLoader {
|
|
67
|
+
constructor() {
|
|
68
|
+
this.validateFn = null;
|
|
69
|
+
this.constitutionCache = new Map();
|
|
70
|
+
this.schemaLoaded = false;
|
|
71
|
+
this.ajv = new ajv_1.default({
|
|
72
|
+
allErrors: true,
|
|
73
|
+
strict: false,
|
|
74
|
+
validateFormats: true
|
|
75
|
+
});
|
|
76
|
+
(0, ajv_formats_1.default)(this.ajv);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Load and compile the JSON schema for validation
|
|
80
|
+
*/
|
|
81
|
+
loadSchema() {
|
|
82
|
+
if (this.schemaLoaded)
|
|
83
|
+
return;
|
|
84
|
+
try {
|
|
85
|
+
if (fs.existsSync(schemaPath)) {
|
|
86
|
+
const schemaContent = fs.readFileSync(schemaPath, 'utf-8');
|
|
87
|
+
const schema = JSON.parse(schemaContent);
|
|
88
|
+
this.validateFn = this.ajv.compile(schema);
|
|
89
|
+
this.schemaLoaded = true;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// Use inline schema validation if file not found
|
|
93
|
+
this.schemaLoaded = true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
98
|
+
throw new Error(`Failed to load constitution schema: ${errorMessage}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Load a single constitution from a file path
|
|
103
|
+
*
|
|
104
|
+
* @param filePath - Path to the constitution JSON file
|
|
105
|
+
* @param options - Loading options
|
|
106
|
+
* @returns Loaded and optionally validated constitution
|
|
107
|
+
*/
|
|
108
|
+
loadConstitution(filePath, options = {}) {
|
|
109
|
+
const { validate = true, resolveInheritance = true } = options;
|
|
110
|
+
// Check cache first
|
|
111
|
+
const absolutePath = path.resolve(filePath);
|
|
112
|
+
if (this.constitutionCache.has(absolutePath)) {
|
|
113
|
+
return this.constitutionCache.get(absolutePath);
|
|
114
|
+
}
|
|
115
|
+
// Read and parse the file
|
|
116
|
+
if (!fs.existsSync(absolutePath)) {
|
|
117
|
+
throw new Error(`Constitution file not found: ${absolutePath}`);
|
|
118
|
+
}
|
|
119
|
+
let constitution;
|
|
120
|
+
try {
|
|
121
|
+
const content = fs.readFileSync(absolutePath, 'utf-8');
|
|
122
|
+
constitution = JSON.parse(content);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
126
|
+
throw new Error(`Failed to parse constitution file ${absolutePath}: ${errorMessage}`);
|
|
127
|
+
}
|
|
128
|
+
// Validate if requested
|
|
129
|
+
if (validate) {
|
|
130
|
+
const validationResult = this.validateConstitution(constitution);
|
|
131
|
+
if (!validationResult.valid) {
|
|
132
|
+
const errorMessages = validationResult.errors
|
|
133
|
+
.map(e => ` - ${e.path}: ${e.message}`)
|
|
134
|
+
.join('\n');
|
|
135
|
+
throw new Error(`Invalid constitution in ${absolutePath}:\n${errorMessages}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Resolve inheritance if requested
|
|
139
|
+
if (resolveInheritance && constitution.metadata.inheritsFrom) {
|
|
140
|
+
const baseDir = path.dirname(absolutePath);
|
|
141
|
+
const parentPath = path.join(baseDir, `${constitution.metadata.inheritsFrom}.constitution.json`);
|
|
142
|
+
if (fs.existsSync(parentPath)) {
|
|
143
|
+
const parentConstitution = this.loadConstitution(parentPath, {
|
|
144
|
+
validate,
|
|
145
|
+
resolveInheritance: true
|
|
146
|
+
});
|
|
147
|
+
constitution = this.mergeConstitutions(parentConstitution, constitution);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Cache the result
|
|
151
|
+
this.constitutionCache.set(absolutePath, constitution);
|
|
152
|
+
return constitution;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Load all constitutions from a directory
|
|
156
|
+
*
|
|
157
|
+
* @param directory - Directory containing constitution files
|
|
158
|
+
* @param options - Loading options
|
|
159
|
+
* @returns Map of constitution ID to Constitution object
|
|
160
|
+
*/
|
|
161
|
+
loadConstitutions(directory, options = {}) {
|
|
162
|
+
const absoluteDir = path.resolve(directory);
|
|
163
|
+
if (!fs.existsSync(absoluteDir)) {
|
|
164
|
+
throw new Error(`Constitution directory not found: ${absoluteDir}`);
|
|
165
|
+
}
|
|
166
|
+
const stats = fs.statSync(absoluteDir);
|
|
167
|
+
if (!stats.isDirectory()) {
|
|
168
|
+
throw new Error(`Path is not a directory: ${absoluteDir}`);
|
|
169
|
+
}
|
|
170
|
+
const constitutions = new Map();
|
|
171
|
+
const files = fs.readdirSync(absoluteDir);
|
|
172
|
+
for (const file of files) {
|
|
173
|
+
if (file.endsWith('.constitution.json')) {
|
|
174
|
+
const filePath = path.join(absoluteDir, file);
|
|
175
|
+
try {
|
|
176
|
+
const constitution = this.loadConstitution(filePath, options);
|
|
177
|
+
constitutions.set(constitution.id, constitution);
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
181
|
+
console.warn(`Warning: Failed to load constitution from ${file}: ${errorMessage}`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return constitutions;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Merge two constitutions with inheritance support
|
|
189
|
+
*
|
|
190
|
+
* @param base - Base constitution to inherit from
|
|
191
|
+
* @param override - Constitution with overrides
|
|
192
|
+
* @param options - Merge options
|
|
193
|
+
* @returns Merged constitution
|
|
194
|
+
*/
|
|
195
|
+
mergeConstitutions(base, override, options = {}) {
|
|
196
|
+
const { arrayStrategy = 'merge', preserveMetadata = false, deepMerge = true } = options;
|
|
197
|
+
// Start with a copy of the override (it takes precedence)
|
|
198
|
+
const merged = {
|
|
199
|
+
id: override.id,
|
|
200
|
+
name: override.name,
|
|
201
|
+
version: override.version,
|
|
202
|
+
description: override.description,
|
|
203
|
+
principles: this.mergeArrays(base.principles, override.principles, 'id', arrayStrategy, deepMerge),
|
|
204
|
+
rules: this.mergeArrays(base.rules, override.rules, 'id', arrayStrategy, deepMerge),
|
|
205
|
+
metrics: this.mergeArrays(base.metrics, override.metrics, 'id', arrayStrategy, deepMerge),
|
|
206
|
+
thresholds: this.mergeArrays(base.thresholds, override.thresholds, 'id', arrayStrategy, deepMerge),
|
|
207
|
+
metadata: preserveMetadata
|
|
208
|
+
? { ...base.metadata, ...override.metadata }
|
|
209
|
+
: override.metadata
|
|
210
|
+
};
|
|
211
|
+
return merged;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Merge arrays based on strategy
|
|
215
|
+
*/
|
|
216
|
+
mergeArrays(baseArray, overrideArray, keyField, strategy, deepMerge) {
|
|
217
|
+
switch (strategy) {
|
|
218
|
+
case 'replace':
|
|
219
|
+
return [...overrideArray];
|
|
220
|
+
case 'concat':
|
|
221
|
+
return [...baseArray, ...overrideArray];
|
|
222
|
+
case 'merge':
|
|
223
|
+
default: {
|
|
224
|
+
const result = new Map();
|
|
225
|
+
// Add base items
|
|
226
|
+
for (const item of baseArray) {
|
|
227
|
+
result.set(item[keyField], item);
|
|
228
|
+
}
|
|
229
|
+
// Merge or replace with override items
|
|
230
|
+
for (const item of overrideArray) {
|
|
231
|
+
const key = item[keyField];
|
|
232
|
+
if (result.has(key) && deepMerge) {
|
|
233
|
+
const baseItem = result.get(key);
|
|
234
|
+
result.set(key, { ...baseItem, ...item });
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
result.set(key, item);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return Array.from(result.values());
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Validate a constitution against the JSON schema
|
|
246
|
+
*
|
|
247
|
+
* @param constitution - Constitution object to validate
|
|
248
|
+
* @returns Validation result with errors and warnings
|
|
249
|
+
*/
|
|
250
|
+
validateConstitution(constitution) {
|
|
251
|
+
this.loadSchema();
|
|
252
|
+
const errors = [];
|
|
253
|
+
const warnings = [];
|
|
254
|
+
// Schema validation
|
|
255
|
+
if (this.validateFn) {
|
|
256
|
+
const valid = this.validateFn(constitution);
|
|
257
|
+
if (!valid && this.validateFn.errors) {
|
|
258
|
+
for (const err of this.validateFn.errors) {
|
|
259
|
+
errors.push(this.ajvErrorToValidationError(err));
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// Additional semantic validations
|
|
264
|
+
if (typeof constitution === 'object' && constitution !== null) {
|
|
265
|
+
const c = constitution;
|
|
266
|
+
// Check for orphaned rules (rules referencing non-existent principles)
|
|
267
|
+
if (c.rules && c.principles) {
|
|
268
|
+
const principleIds = new Set(c.principles.map(p => p.id));
|
|
269
|
+
for (const rule of c.rules) {
|
|
270
|
+
if (!principleIds.has(rule.principleId)) {
|
|
271
|
+
errors.push({
|
|
272
|
+
path: `/rules/${rule.id}`,
|
|
273
|
+
message: `Rule references non-existent principle: ${rule.principleId}`,
|
|
274
|
+
code: 'ORPHANED_RULE',
|
|
275
|
+
expected: `One of: ${Array.from(principleIds).join(', ')}`,
|
|
276
|
+
actual: rule.principleId
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// Check for orphaned thresholds (thresholds referencing non-existent metrics)
|
|
282
|
+
if (c.thresholds && c.metrics) {
|
|
283
|
+
const metricIds = new Set(c.metrics.map(m => m.id));
|
|
284
|
+
for (const threshold of c.thresholds) {
|
|
285
|
+
if (!metricIds.has(threshold.metricId)) {
|
|
286
|
+
errors.push({
|
|
287
|
+
path: `/thresholds/${threshold.id}`,
|
|
288
|
+
message: `Threshold references non-existent metric: ${threshold.metricId}`,
|
|
289
|
+
code: 'ORPHANED_THRESHOLD',
|
|
290
|
+
expected: `One of: ${Array.from(metricIds).join(', ')}`,
|
|
291
|
+
actual: threshold.metricId
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// Warn about missing descriptions
|
|
297
|
+
if (c.metrics) {
|
|
298
|
+
for (const metric of c.metrics) {
|
|
299
|
+
if (!metric.description) {
|
|
300
|
+
warnings.push({
|
|
301
|
+
path: `/metrics/${metric.id}`,
|
|
302
|
+
message: 'Metric is missing a description',
|
|
303
|
+
code: 'MISSING_DESCRIPTION',
|
|
304
|
+
suggestion: 'Add a description to improve documentation'
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
// Warn about inconsistent threshold values
|
|
310
|
+
if (c.metrics) {
|
|
311
|
+
for (const metric of c.metrics) {
|
|
312
|
+
if (metric.warningThreshold !== undefined &&
|
|
313
|
+
metric.criticalThreshold !== undefined) {
|
|
314
|
+
const higherIsBetter = metric.higherIsBetter ?? true;
|
|
315
|
+
if (higherIsBetter) {
|
|
316
|
+
if (metric.warningThreshold < metric.criticalThreshold) {
|
|
317
|
+
warnings.push({
|
|
318
|
+
path: `/metrics/${metric.id}`,
|
|
319
|
+
message: 'Warning threshold should be higher than critical when higher is better',
|
|
320
|
+
code: 'INCONSISTENT_THRESHOLDS',
|
|
321
|
+
suggestion: 'Swap warning and critical threshold values'
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
if (metric.warningThreshold > metric.criticalThreshold) {
|
|
327
|
+
warnings.push({
|
|
328
|
+
path: `/metrics/${metric.id}`,
|
|
329
|
+
message: 'Warning threshold should be lower than critical when lower is better',
|
|
330
|
+
code: 'INCONSISTENT_THRESHOLDS',
|
|
331
|
+
suggestion: 'Swap warning and critical threshold values'
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return {
|
|
340
|
+
valid: errors.length === 0,
|
|
341
|
+
errors,
|
|
342
|
+
warnings
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Convert Ajv error to ValidationError
|
|
347
|
+
*/
|
|
348
|
+
ajvErrorToValidationError(error) {
|
|
349
|
+
return {
|
|
350
|
+
path: error.instancePath || '/',
|
|
351
|
+
message: error.message || 'Unknown validation error',
|
|
352
|
+
code: error.keyword.toUpperCase(),
|
|
353
|
+
expected: error.params ? JSON.stringify(error.params) : undefined
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Get constitution for a specific agent type
|
|
358
|
+
*
|
|
359
|
+
* @param agentType - Type of agent
|
|
360
|
+
* @param constitutionsDir - Directory containing constitutions
|
|
361
|
+
* @returns Constitution applicable to the agent
|
|
362
|
+
*/
|
|
363
|
+
getConstitutionForAgent(agentType, constitutionsDir) {
|
|
364
|
+
// Resolve the base directory - handles both src and dist contexts
|
|
365
|
+
let directory = constitutionsDir;
|
|
366
|
+
if (!directory) {
|
|
367
|
+
// Try dist/constitution/base first, then src/constitution/base
|
|
368
|
+
const distBase = path.join(__dirname, 'base');
|
|
369
|
+
const srcBase = path.join(__dirname, '../../src/constitution/base');
|
|
370
|
+
if (fs.existsSync(distBase)) {
|
|
371
|
+
directory = distBase;
|
|
372
|
+
}
|
|
373
|
+
else if (fs.existsSync(srcBase)) {
|
|
374
|
+
directory = srcBase;
|
|
375
|
+
}
|
|
376
|
+
else {
|
|
377
|
+
// Fall back to relative from process.cwd()
|
|
378
|
+
directory = path.join(process.cwd(), 'src/constitution/base');
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
const constitutions = this.loadConstitutions(directory);
|
|
382
|
+
// Find constitution that applies to this agent type
|
|
383
|
+
const constitutionEntries = Array.from(constitutions.entries());
|
|
384
|
+
for (const [, constitution] of constitutionEntries) {
|
|
385
|
+
const applicableTo = constitution.metadata.applicableTo;
|
|
386
|
+
if (applicableTo.includes(agentType) || applicableTo.includes('*')) {
|
|
387
|
+
// If it inherits from default, merge them
|
|
388
|
+
if (constitution.metadata.inheritsFrom === 'default') {
|
|
389
|
+
const defaultConstitution = constitutions.get('default');
|
|
390
|
+
if (defaultConstitution) {
|
|
391
|
+
return this.mergeConstitutions(defaultConstitution, constitution);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
return constitution;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
// Fall back to default constitution
|
|
398
|
+
const defaultConstitution = constitutions.get('default');
|
|
399
|
+
if (defaultConstitution) {
|
|
400
|
+
return defaultConstitution;
|
|
401
|
+
}
|
|
402
|
+
throw new Error(`No constitution found for agent type: ${agentType}`);
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Clear the constitution cache
|
|
406
|
+
*/
|
|
407
|
+
clearCache() {
|
|
408
|
+
this.constitutionCache.clear();
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Get cache statistics
|
|
412
|
+
*/
|
|
413
|
+
getCacheStats() {
|
|
414
|
+
return {
|
|
415
|
+
size: this.constitutionCache.size,
|
|
416
|
+
keys: Array.from(this.constitutionCache.keys())
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
exports.ConstitutionLoader = ConstitutionLoader;
|
|
421
|
+
// Default singleton instance
|
|
422
|
+
let defaultLoader = null;
|
|
423
|
+
/**
|
|
424
|
+
* Get the default constitution loader instance
|
|
425
|
+
*/
|
|
426
|
+
function getDefaultLoader() {
|
|
427
|
+
if (!defaultLoader) {
|
|
428
|
+
defaultLoader = new ConstitutionLoader();
|
|
429
|
+
}
|
|
430
|
+
return defaultLoader;
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Load a single constitution from file
|
|
434
|
+
* Convenience function using default loader
|
|
435
|
+
*
|
|
436
|
+
* @param filePath - Path to constitution file
|
|
437
|
+
* @param options - Loading options
|
|
438
|
+
* @returns Loaded constitution
|
|
439
|
+
*/
|
|
440
|
+
function loadConstitution(filePath, options) {
|
|
441
|
+
return getDefaultLoader().loadConstitution(filePath, options);
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Load all constitutions from directory
|
|
445
|
+
* Convenience function using default loader
|
|
446
|
+
*
|
|
447
|
+
* @param directory - Directory containing constitutions
|
|
448
|
+
* @param options - Loading options
|
|
449
|
+
* @returns Map of constitution ID to Constitution
|
|
450
|
+
*/
|
|
451
|
+
function loadConstitutions(directory, options) {
|
|
452
|
+
return getDefaultLoader().loadConstitutions(directory, options);
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Merge two constitutions
|
|
456
|
+
* Convenience function using default loader
|
|
457
|
+
*
|
|
458
|
+
* @param base - Base constitution
|
|
459
|
+
* @param override - Override constitution
|
|
460
|
+
* @param options - Merge options
|
|
461
|
+
* @returns Merged constitution
|
|
462
|
+
*/
|
|
463
|
+
function mergeConstitutions(base, override, options) {
|
|
464
|
+
return getDefaultLoader().mergeConstitutions(base, override, options);
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Validate a constitution
|
|
468
|
+
* Convenience function using default loader
|
|
469
|
+
*
|
|
470
|
+
* @param constitution - Constitution to validate
|
|
471
|
+
* @returns Validation result
|
|
472
|
+
*/
|
|
473
|
+
function validateConstitution(constitution) {
|
|
474
|
+
return getDefaultLoader().validateConstitution(constitution);
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Get constitution for agent type
|
|
478
|
+
* Convenience function using default loader
|
|
479
|
+
*
|
|
480
|
+
* @param agentType - Agent type
|
|
481
|
+
* @param constitutionsDir - Optional directory
|
|
482
|
+
* @returns Constitution for agent
|
|
483
|
+
*/
|
|
484
|
+
function getConstitutionForAgent(agentType, constitutionsDir) {
|
|
485
|
+
return getDefaultLoader().getConstitutionForAgent(agentType, constitutionsDir);
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Get the base constitutions directory path
|
|
489
|
+
*/
|
|
490
|
+
function getBaseConstitutionsPath() {
|
|
491
|
+
// Try dist/constitution/base first, then src/constitution/base
|
|
492
|
+
const distBase = path.join(__dirname, 'base');
|
|
493
|
+
const srcBase = path.join(__dirname, '../../src/constitution/base');
|
|
494
|
+
if (fs.existsSync(distBase)) {
|
|
495
|
+
return distBase;
|
|
496
|
+
}
|
|
497
|
+
else if (fs.existsSync(srcBase)) {
|
|
498
|
+
return srcBase;
|
|
499
|
+
}
|
|
500
|
+
// Fall back to relative from process.cwd()
|
|
501
|
+
return path.join(process.cwd(), 'src/constitution/base');
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* List available constitution files in the base directory
|
|
505
|
+
*/
|
|
506
|
+
function listAvailableConstitutions() {
|
|
507
|
+
const basePath = getBaseConstitutionsPath();
|
|
508
|
+
if (!fs.existsSync(basePath)) {
|
|
509
|
+
return [];
|
|
510
|
+
}
|
|
511
|
+
return fs.readdirSync(basePath)
|
|
512
|
+
.filter(f => f.endsWith('.constitution.json'))
|
|
513
|
+
.map(f => f.replace('.constitution.json', ''));
|
|
514
|
+
}
|
|
515
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/constitution/loader.ts"],"names":[],"mappings":"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"}
|