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.
Files changed (290) hide show
  1. package/.claude/skills/agentic-jujutsu/SKILL.md +645 -0
  2. package/.claude/skills/cicd-pipeline-qe-orchestrator/README.md +2 -2
  3. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +6 -6
  4. package/CHANGELOG.md +595 -0
  5. package/README.md +117 -16
  6. package/config/constitution.schema.json +423 -0
  7. package/config/otel-collector.yaml +234 -0
  8. package/dist/App.d.ts +5 -0
  9. package/dist/App.d.ts.map +1 -0
  10. package/dist/App.js +15 -0
  11. package/dist/App.js.map +1 -0
  12. package/dist/cli/commands/constitution.d.ts +34 -0
  13. package/dist/cli/commands/constitution.d.ts.map +1 -0
  14. package/dist/cli/commands/constitution.js +679 -0
  15. package/dist/cli/commands/constitution.js.map +1 -0
  16. package/dist/cli/commands/init-claude-md-template.js +3 -3
  17. package/dist/cli/commands/init.d.ts +8 -75
  18. package/dist/cli/commands/init.d.ts.map +1 -1
  19. package/dist/cli/commands/init.js +22 -2292
  20. package/dist/cli/commands/init.js.map +1 -1
  21. package/dist/cli/commands/telemetry.d.ts +36 -0
  22. package/dist/cli/commands/telemetry.d.ts.map +1 -0
  23. package/dist/cli/commands/telemetry.js +364 -0
  24. package/dist/cli/commands/telemetry.js.map +1 -0
  25. package/dist/cli/index.js +66 -0
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/init/agents.d.ts +22 -0
  28. package/dist/cli/init/agents.d.ts.map +1 -0
  29. package/dist/cli/init/agents.js +522 -0
  30. package/dist/cli/init/agents.js.map +1 -0
  31. package/dist/cli/init/bash-wrapper.d.ts +14 -0
  32. package/dist/cli/init/bash-wrapper.d.ts.map +1 -0
  33. package/dist/cli/init/bash-wrapper.js +47 -0
  34. package/dist/cli/init/bash-wrapper.js.map +1 -0
  35. package/dist/cli/init/claude-config.d.ts +24 -0
  36. package/dist/cli/init/claude-config.d.ts.map +1 -0
  37. package/dist/cli/init/claude-config.js +275 -0
  38. package/dist/cli/init/claude-config.js.map +1 -0
  39. package/dist/cli/init/claude-md.d.ts +19 -0
  40. package/dist/cli/init/claude-md.d.ts.map +1 -0
  41. package/dist/cli/init/claude-md.js +153 -0
  42. package/dist/cli/init/claude-md.js.map +1 -0
  43. package/dist/cli/init/commands.d.ts +6 -0
  44. package/dist/cli/init/commands.d.ts.map +1 -0
  45. package/dist/cli/init/commands.js +83 -0
  46. package/dist/cli/init/commands.js.map +1 -0
  47. package/dist/cli/init/database-init.d.ts +15 -0
  48. package/dist/cli/init/database-init.d.ts.map +1 -0
  49. package/dist/cli/init/database-init.js +203 -0
  50. package/dist/cli/init/database-init.js.map +1 -0
  51. package/dist/cli/init/directory-structure.d.ts +14 -0
  52. package/dist/cli/init/directory-structure.d.ts.map +1 -0
  53. package/dist/cli/init/directory-structure.js +107 -0
  54. package/dist/cli/init/directory-structure.js.map +1 -0
  55. package/dist/cli/init/documentation.d.ts +14 -0
  56. package/dist/cli/init/documentation.d.ts.map +1 -0
  57. package/dist/cli/init/documentation.js +195 -0
  58. package/dist/cli/init/documentation.js.map +1 -0
  59. package/dist/cli/init/fleet-config.d.ts +34 -0
  60. package/dist/cli/init/fleet-config.d.ts.map +1 -0
  61. package/dist/cli/init/fleet-config.js +269 -0
  62. package/dist/cli/init/fleet-config.js.map +1 -0
  63. package/dist/cli/init/helpers.d.ts +6 -0
  64. package/dist/cli/init/helpers.d.ts.map +1 -0
  65. package/dist/cli/init/helpers.js +94 -0
  66. package/dist/cli/init/helpers.js.map +1 -0
  67. package/dist/cli/init/index.d.ts +32 -0
  68. package/dist/cli/init/index.d.ts.map +1 -0
  69. package/dist/cli/init/index.js +294 -0
  70. package/dist/cli/init/index.js.map +1 -0
  71. package/dist/cli/init/skills.d.ts +6 -0
  72. package/dist/cli/init/skills.d.ts.map +1 -0
  73. package/dist/cli/init/skills.js +138 -0
  74. package/dist/cli/init/skills.js.map +1 -0
  75. package/dist/cli/init/utils/file-utils.d.ts +74 -0
  76. package/dist/cli/init/utils/file-utils.d.ts.map +1 -0
  77. package/dist/cli/init/utils/file-utils.js +187 -0
  78. package/dist/cli/init/utils/file-utils.js.map +1 -0
  79. package/dist/cli/init/utils/index.d.ts +18 -0
  80. package/dist/cli/init/utils/index.d.ts.map +1 -0
  81. package/dist/cli/init/utils/index.js +48 -0
  82. package/dist/cli/init/utils/index.js.map +1 -0
  83. package/dist/cli/init/utils/log-utils.d.ts +47 -0
  84. package/dist/cli/init/utils/log-utils.d.ts.map +1 -0
  85. package/dist/cli/init/utils/log-utils.js +68 -0
  86. package/dist/cli/init/utils/log-utils.js.map +1 -0
  87. package/dist/cli/init/utils/path-utils.d.ts +91 -0
  88. package/dist/cli/init/utils/path-utils.d.ts.map +1 -0
  89. package/dist/cli/init/utils/path-utils.js +208 -0
  90. package/dist/cli/init/utils/path-utils.js.map +1 -0
  91. package/dist/cli/init/utils/validation-utils.d.ts +44 -0
  92. package/dist/cli/init/utils/validation-utils.d.ts.map +1 -0
  93. package/dist/cli/init/utils/validation-utils.js +68 -0
  94. package/dist/cli/init/utils/validation-utils.js.map +1 -0
  95. package/dist/cli/init/utils.d.ts +183 -0
  96. package/dist/cli/init/utils.d.ts.map +1 -0
  97. package/dist/cli/init/utils.js +354 -0
  98. package/dist/cli/init/utils.js.map +1 -0
  99. package/dist/components/Dashboard/Dashboard.d.ts +4 -0
  100. package/dist/components/Dashboard/Dashboard.d.ts.map +1 -0
  101. package/dist/components/Dashboard/Dashboard.js +148 -0
  102. package/dist/components/Dashboard/Dashboard.js.map +1 -0
  103. package/dist/components/Dashboard/DashboardHeader.d.ts +4 -0
  104. package/dist/components/Dashboard/DashboardHeader.d.ts.map +1 -0
  105. package/dist/components/Dashboard/DashboardHeader.js +138 -0
  106. package/dist/components/Dashboard/DashboardHeader.js.map +1 -0
  107. package/dist/constitution/evaluators/ast-evaluator.d.ts +42 -0
  108. package/dist/constitution/evaluators/ast-evaluator.d.ts.map +1 -0
  109. package/dist/constitution/evaluators/ast-evaluator.js +303 -0
  110. package/dist/constitution/evaluators/ast-evaluator.js.map +1 -0
  111. package/dist/constitution/evaluators/base.d.ts +144 -0
  112. package/dist/constitution/evaluators/base.d.ts.map +1 -0
  113. package/dist/constitution/evaluators/base.js +144 -0
  114. package/dist/constitution/evaluators/base.js.map +1 -0
  115. package/dist/constitution/evaluators/index.d.ts +19 -0
  116. package/dist/constitution/evaluators/index.d.ts.map +1 -0
  117. package/dist/constitution/evaluators/index.js +56 -0
  118. package/dist/constitution/evaluators/index.js.map +1 -0
  119. package/dist/constitution/evaluators/metric-evaluator.d.ts +59 -0
  120. package/dist/constitution/evaluators/metric-evaluator.d.ts.map +1 -0
  121. package/dist/constitution/evaluators/metric-evaluator.js +195 -0
  122. package/dist/constitution/evaluators/metric-evaluator.js.map +1 -0
  123. package/dist/constitution/evaluators/pattern-evaluator.d.ts +66 -0
  124. package/dist/constitution/evaluators/pattern-evaluator.d.ts.map +1 -0
  125. package/dist/constitution/evaluators/pattern-evaluator.js +221 -0
  126. package/dist/constitution/evaluators/pattern-evaluator.js.map +1 -0
  127. package/dist/constitution/evaluators/semantic-evaluator.d.ts +68 -0
  128. package/dist/constitution/evaluators/semantic-evaluator.d.ts.map +1 -0
  129. package/dist/constitution/evaluators/semantic-evaluator.js +250 -0
  130. package/dist/constitution/evaluators/semantic-evaluator.js.map +1 -0
  131. package/dist/constitution/index.d.ts +105 -0
  132. package/dist/constitution/index.d.ts.map +1 -0
  133. package/dist/constitution/index.js +207 -0
  134. package/dist/constitution/index.js.map +1 -0
  135. package/dist/constitution/loader.d.ts +141 -0
  136. package/dist/constitution/loader.d.ts.map +1 -0
  137. package/dist/constitution/loader.js +515 -0
  138. package/dist/constitution/loader.js.map +1 -0
  139. package/dist/constitution/schema.d.ts +409 -0
  140. package/dist/constitution/schema.d.ts.map +1 -0
  141. package/dist/constitution/schema.js +71 -0
  142. package/dist/constitution/schema.js.map +1 -0
  143. package/dist/contexts/DashboardContext.d.ts +41 -0
  144. package/dist/contexts/DashboardContext.d.ts.map +1 -0
  145. package/dist/contexts/DashboardContext.js +187 -0
  146. package/dist/contexts/DashboardContext.js.map +1 -0
  147. package/dist/core/memory/MemoryManagerFactory.d.ts +77 -0
  148. package/dist/core/memory/MemoryManagerFactory.d.ts.map +1 -0
  149. package/dist/core/memory/MemoryManagerFactory.js +270 -0
  150. package/dist/core/memory/MemoryManagerFactory.js.map +1 -0
  151. package/dist/core/memory/SwarmMemoryManager.d.ts +58 -0
  152. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  153. package/dist/core/memory/SwarmMemoryManager.js +375 -131
  154. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  155. package/dist/core/memory/index.d.ts +1 -0
  156. package/dist/core/memory/index.d.ts.map +1 -1
  157. package/dist/core/memory/index.js +12 -1
  158. package/dist/core/memory/index.js.map +1 -1
  159. package/dist/hooks/useKeyboardShortcuts.d.ts +12 -0
  160. package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  161. package/dist/hooks/useKeyboardShortcuts.js +69 -0
  162. package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
  163. package/dist/mcp/handlers/memory/memory-backup.js +6 -6
  164. package/dist/mcp/handlers/memory/memory-backup.js.map +1 -1
  165. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -1
  166. package/dist/mcp/handlers/phase2/Phase2Tools.js +4 -2
  167. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
  168. package/dist/mcp/server.d.ts.map +1 -1
  169. package/dist/mcp/server.js +4 -38
  170. package/dist/mcp/server.js.map +1 -1
  171. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  172. package/dist/mcp/services/AgentRegistry.js +4 -4
  173. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  174. package/dist/persistence/event-store.d.ts +162 -0
  175. package/dist/persistence/event-store.d.ts.map +1 -0
  176. package/dist/persistence/event-store.js +315 -0
  177. package/dist/persistence/event-store.js.map +1 -0
  178. package/dist/persistence/index.d.ts +145 -0
  179. package/dist/persistence/index.d.ts.map +1 -0
  180. package/dist/persistence/index.js +227 -0
  181. package/dist/persistence/index.js.map +1 -0
  182. package/dist/persistence/metrics-aggregator.d.ts +187 -0
  183. package/dist/persistence/metrics-aggregator.d.ts.map +1 -0
  184. package/dist/persistence/metrics-aggregator.js +495 -0
  185. package/dist/persistence/metrics-aggregator.js.map +1 -0
  186. package/dist/persistence/reasoning-store.d.ts +178 -0
  187. package/dist/persistence/reasoning-store.d.ts.map +1 -0
  188. package/dist/persistence/reasoning-store.js +440 -0
  189. package/dist/persistence/reasoning-store.js.map +1 -0
  190. package/dist/persistence/schema.d.ts +181 -0
  191. package/dist/persistence/schema.d.ts.map +1 -0
  192. package/dist/persistence/schema.js +186 -0
  193. package/dist/persistence/schema.js.map +1 -0
  194. package/dist/telemetry/bootstrap.d.ts +67 -0
  195. package/dist/telemetry/bootstrap.d.ts.map +1 -0
  196. package/dist/telemetry/bootstrap.js +320 -0
  197. package/dist/telemetry/bootstrap.js.map +1 -0
  198. package/dist/telemetry/index.d.ts +16 -0
  199. package/dist/telemetry/index.d.ts.map +1 -0
  200. package/dist/telemetry/index.js +84 -0
  201. package/dist/telemetry/index.js.map +1 -0
  202. package/dist/telemetry/instrumentation/agent.d.ts +158 -0
  203. package/dist/telemetry/instrumentation/agent.d.ts.map +1 -0
  204. package/dist/telemetry/instrumentation/agent.js +372 -0
  205. package/dist/telemetry/instrumentation/agent.js.map +1 -0
  206. package/dist/telemetry/instrumentation/index.d.ts +24 -0
  207. package/dist/telemetry/instrumentation/index.d.ts.map +1 -0
  208. package/dist/telemetry/instrumentation/index.js +54 -0
  209. package/dist/telemetry/instrumentation/index.js.map +1 -0
  210. package/dist/telemetry/instrumentation/memory.d.ts +313 -0
  211. package/dist/telemetry/instrumentation/memory.d.ts.map +1 -0
  212. package/dist/telemetry/instrumentation/memory.js +552 -0
  213. package/dist/telemetry/instrumentation/memory.js.map +1 -0
  214. package/dist/telemetry/instrumentation/task.d.ts +146 -0
  215. package/dist/telemetry/instrumentation/task.d.ts.map +1 -0
  216. package/dist/telemetry/instrumentation/task.js +305 -0
  217. package/dist/telemetry/instrumentation/task.js.map +1 -0
  218. package/dist/telemetry/metrics/agent-metrics.d.ts +109 -0
  219. package/dist/telemetry/metrics/agent-metrics.d.ts.map +1 -0
  220. package/dist/telemetry/metrics/agent-metrics.js +213 -0
  221. package/dist/telemetry/metrics/agent-metrics.js.map +1 -0
  222. package/dist/telemetry/metrics/collectors/cost.d.ts +246 -0
  223. package/dist/telemetry/metrics/collectors/cost.d.ts.map +1 -0
  224. package/dist/telemetry/metrics/collectors/cost.js +526 -0
  225. package/dist/telemetry/metrics/collectors/cost.js.map +1 -0
  226. package/dist/telemetry/metrics/collectors/pricing-config.d.ts +87 -0
  227. package/dist/telemetry/metrics/collectors/pricing-config.d.ts.map +1 -0
  228. package/dist/telemetry/metrics/collectors/pricing-config.js +207 -0
  229. package/dist/telemetry/metrics/collectors/pricing-config.js.map +1 -0
  230. package/dist/telemetry/metrics/index.d.ts +54 -0
  231. package/dist/telemetry/metrics/index.d.ts.map +1 -0
  232. package/dist/telemetry/metrics/index.js +116 -0
  233. package/dist/telemetry/metrics/index.js.map +1 -0
  234. package/dist/telemetry/metrics/quality-metrics.d.ts +171 -0
  235. package/dist/telemetry/metrics/quality-metrics.d.ts.map +1 -0
  236. package/dist/telemetry/metrics/quality-metrics.js +259 -0
  237. package/dist/telemetry/metrics/quality-metrics.js.map +1 -0
  238. package/dist/telemetry/metrics/system-metrics.d.ts +129 -0
  239. package/dist/telemetry/metrics/system-metrics.d.ts.map +1 -0
  240. package/dist/telemetry/metrics/system-metrics.js +380 -0
  241. package/dist/telemetry/metrics/system-metrics.js.map +1 -0
  242. package/dist/telemetry/types.d.ts +195 -0
  243. package/dist/telemetry/types.d.ts.map +1 -0
  244. package/dist/telemetry/types.js +90 -0
  245. package/dist/telemetry/types.js.map +1 -0
  246. package/dist/visualization/api/RestEndpoints.d.ts +136 -0
  247. package/dist/visualization/api/RestEndpoints.d.ts.map +1 -0
  248. package/dist/visualization/api/RestEndpoints.js +428 -0
  249. package/dist/visualization/api/RestEndpoints.js.map +1 -0
  250. package/dist/visualization/api/WebSocketServer.d.ts +165 -0
  251. package/dist/visualization/api/WebSocketServer.d.ts.map +1 -0
  252. package/dist/visualization/api/WebSocketServer.js +518 -0
  253. package/dist/visualization/api/WebSocketServer.js.map +1 -0
  254. package/dist/visualization/core/DataTransformer.d.ts +89 -0
  255. package/dist/visualization/core/DataTransformer.d.ts.map +1 -0
  256. package/dist/visualization/core/DataTransformer.js +478 -0
  257. package/dist/visualization/core/DataTransformer.js.map +1 -0
  258. package/dist/visualization/index.d.ts +92 -0
  259. package/dist/visualization/index.d.ts.map +1 -0
  260. package/dist/visualization/index.js +121 -0
  261. package/dist/visualization/index.js.map +1 -0
  262. package/dist/visualization/types.d.ts +148 -0
  263. package/dist/visualization/types.d.ts.map +1 -0
  264. package/dist/visualization/types.js +7 -0
  265. package/dist/visualization/types.js.map +1 -0
  266. package/dist/voting/consensus.d.ts +87 -0
  267. package/dist/voting/consensus.d.ts.map +1 -0
  268. package/dist/voting/consensus.js +568 -0
  269. package/dist/voting/consensus.js.map +1 -0
  270. package/dist/voting/index.d.ts +12 -0
  271. package/dist/voting/index.d.ts.map +1 -0
  272. package/dist/voting/index.js +36 -0
  273. package/dist/voting/index.js.map +1 -0
  274. package/dist/voting/orchestrator.d.ts +65 -0
  275. package/dist/voting/orchestrator.d.ts.map +1 -0
  276. package/dist/voting/orchestrator.js +306 -0
  277. package/dist/voting/orchestrator.js.map +1 -0
  278. package/dist/voting/panel-assembly.d.ts +54 -0
  279. package/dist/voting/panel-assembly.d.ts.map +1 -0
  280. package/dist/voting/panel-assembly.js +192 -0
  281. package/dist/voting/panel-assembly.js.map +1 -0
  282. package/dist/voting/protocol.d.ts +119 -0
  283. package/dist/voting/protocol.d.ts.map +1 -0
  284. package/dist/voting/protocol.js +18 -0
  285. package/dist/voting/protocol.js.map +1 -0
  286. package/dist/voting/types.d.ts +125 -0
  287. package/dist/voting/types.d.ts.map +1 -0
  288. package/dist/voting/types.js +7 -0
  289. package/dist/voting/types.js.map +1 -0
  290. 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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"}