@soleri/core 2.1.0 → 2.4.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 (207) hide show
  1. package/dist/brain/brain.d.ts +3 -1
  2. package/dist/brain/brain.d.ts.map +1 -1
  3. package/dist/brain/brain.js +60 -4
  4. package/dist/brain/brain.js.map +1 -1
  5. package/dist/brain/intelligence.d.ts +36 -1
  6. package/dist/brain/intelligence.d.ts.map +1 -1
  7. package/dist/brain/intelligence.js +119 -14
  8. package/dist/brain/intelligence.js.map +1 -1
  9. package/dist/brain/types.d.ts +32 -0
  10. package/dist/brain/types.d.ts.map +1 -1
  11. package/dist/control/identity-manager.d.ts +22 -0
  12. package/dist/control/identity-manager.d.ts.map +1 -0
  13. package/dist/control/identity-manager.js +233 -0
  14. package/dist/control/identity-manager.js.map +1 -0
  15. package/dist/control/intent-router.d.ts +32 -0
  16. package/dist/control/intent-router.d.ts.map +1 -0
  17. package/dist/control/intent-router.js +242 -0
  18. package/dist/control/intent-router.js.map +1 -0
  19. package/dist/control/types.d.ts +68 -0
  20. package/dist/control/types.d.ts.map +1 -0
  21. package/dist/control/types.js +9 -0
  22. package/dist/control/types.js.map +1 -0
  23. package/dist/curator/curator.d.ts +29 -0
  24. package/dist/curator/curator.d.ts.map +1 -1
  25. package/dist/curator/curator.js +135 -0
  26. package/dist/curator/curator.js.map +1 -1
  27. package/dist/facades/types.d.ts +1 -1
  28. package/dist/governance/governance.d.ts +42 -0
  29. package/dist/governance/governance.d.ts.map +1 -0
  30. package/dist/governance/governance.js +488 -0
  31. package/dist/governance/governance.js.map +1 -0
  32. package/dist/governance/index.d.ts +3 -0
  33. package/dist/governance/index.d.ts.map +1 -0
  34. package/dist/governance/index.js +2 -0
  35. package/dist/governance/index.js.map +1 -0
  36. package/dist/governance/types.d.ts +102 -0
  37. package/dist/governance/types.d.ts.map +1 -0
  38. package/dist/governance/types.js +3 -0
  39. package/dist/governance/types.js.map +1 -0
  40. package/dist/index.d.ts +32 -3
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +29 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/logging/logger.d.ts +37 -0
  45. package/dist/logging/logger.d.ts.map +1 -0
  46. package/dist/logging/logger.js +145 -0
  47. package/dist/logging/logger.js.map +1 -0
  48. package/dist/logging/types.d.ts +19 -0
  49. package/dist/logging/types.d.ts.map +1 -0
  50. package/dist/logging/types.js +2 -0
  51. package/dist/logging/types.js.map +1 -0
  52. package/dist/loop/loop-manager.d.ts +49 -0
  53. package/dist/loop/loop-manager.d.ts.map +1 -0
  54. package/dist/loop/loop-manager.js +105 -0
  55. package/dist/loop/loop-manager.js.map +1 -0
  56. package/dist/loop/types.d.ts +35 -0
  57. package/dist/loop/types.d.ts.map +1 -0
  58. package/dist/loop/types.js +8 -0
  59. package/dist/loop/types.js.map +1 -0
  60. package/dist/planning/gap-analysis.d.ts +29 -0
  61. package/dist/planning/gap-analysis.d.ts.map +1 -0
  62. package/dist/planning/gap-analysis.js +265 -0
  63. package/dist/planning/gap-analysis.js.map +1 -0
  64. package/dist/planning/gap-types.d.ts +29 -0
  65. package/dist/planning/gap-types.d.ts.map +1 -0
  66. package/dist/planning/gap-types.js +28 -0
  67. package/dist/planning/gap-types.js.map +1 -0
  68. package/dist/planning/planner.d.ts +150 -1
  69. package/dist/planning/planner.d.ts.map +1 -1
  70. package/dist/planning/planner.js +365 -2
  71. package/dist/planning/planner.js.map +1 -1
  72. package/dist/project/project-registry.d.ts +79 -0
  73. package/dist/project/project-registry.d.ts.map +1 -0
  74. package/dist/project/project-registry.js +276 -0
  75. package/dist/project/project-registry.js.map +1 -0
  76. package/dist/project/types.d.ts +28 -0
  77. package/dist/project/types.d.ts.map +1 -0
  78. package/dist/project/types.js +5 -0
  79. package/dist/project/types.js.map +1 -0
  80. package/dist/runtime/admin-extra-ops.d.ts +13 -0
  81. package/dist/runtime/admin-extra-ops.d.ts.map +1 -0
  82. package/dist/runtime/admin-extra-ops.js +284 -0
  83. package/dist/runtime/admin-extra-ops.js.map +1 -0
  84. package/dist/runtime/admin-ops.d.ts +15 -0
  85. package/dist/runtime/admin-ops.d.ts.map +1 -0
  86. package/dist/runtime/admin-ops.js +322 -0
  87. package/dist/runtime/admin-ops.js.map +1 -0
  88. package/dist/runtime/capture-ops.d.ts +15 -0
  89. package/dist/runtime/capture-ops.d.ts.map +1 -0
  90. package/dist/runtime/capture-ops.js +345 -0
  91. package/dist/runtime/capture-ops.js.map +1 -0
  92. package/dist/runtime/core-ops.d.ts +7 -3
  93. package/dist/runtime/core-ops.d.ts.map +1 -1
  94. package/dist/runtime/core-ops.js +474 -8
  95. package/dist/runtime/core-ops.js.map +1 -1
  96. package/dist/runtime/curator-extra-ops.d.ts +9 -0
  97. package/dist/runtime/curator-extra-ops.d.ts.map +1 -0
  98. package/dist/runtime/curator-extra-ops.js +59 -0
  99. package/dist/runtime/curator-extra-ops.js.map +1 -0
  100. package/dist/runtime/domain-ops.d.ts.map +1 -1
  101. package/dist/runtime/domain-ops.js +59 -13
  102. package/dist/runtime/domain-ops.js.map +1 -1
  103. package/dist/runtime/grading-ops.d.ts +14 -0
  104. package/dist/runtime/grading-ops.d.ts.map +1 -0
  105. package/dist/runtime/grading-ops.js +105 -0
  106. package/dist/runtime/grading-ops.js.map +1 -0
  107. package/dist/runtime/loop-ops.d.ts +13 -0
  108. package/dist/runtime/loop-ops.d.ts.map +1 -0
  109. package/dist/runtime/loop-ops.js +179 -0
  110. package/dist/runtime/loop-ops.js.map +1 -0
  111. package/dist/runtime/memory-cross-project-ops.d.ts +12 -0
  112. package/dist/runtime/memory-cross-project-ops.d.ts.map +1 -0
  113. package/dist/runtime/memory-cross-project-ops.js +165 -0
  114. package/dist/runtime/memory-cross-project-ops.js.map +1 -0
  115. package/dist/runtime/memory-extra-ops.d.ts +13 -0
  116. package/dist/runtime/memory-extra-ops.d.ts.map +1 -0
  117. package/dist/runtime/memory-extra-ops.js +173 -0
  118. package/dist/runtime/memory-extra-ops.js.map +1 -0
  119. package/dist/runtime/orchestrate-ops.d.ts +17 -0
  120. package/dist/runtime/orchestrate-ops.d.ts.map +1 -0
  121. package/dist/runtime/orchestrate-ops.js +240 -0
  122. package/dist/runtime/orchestrate-ops.js.map +1 -0
  123. package/dist/runtime/planning-extra-ops.d.ts +17 -0
  124. package/dist/runtime/planning-extra-ops.d.ts.map +1 -0
  125. package/dist/runtime/planning-extra-ops.js +300 -0
  126. package/dist/runtime/planning-extra-ops.js.map +1 -0
  127. package/dist/runtime/project-ops.d.ts +15 -0
  128. package/dist/runtime/project-ops.d.ts.map +1 -0
  129. package/dist/runtime/project-ops.js +181 -0
  130. package/dist/runtime/project-ops.js.map +1 -0
  131. package/dist/runtime/runtime.d.ts.map +1 -1
  132. package/dist/runtime/runtime.js +44 -1
  133. package/dist/runtime/runtime.js.map +1 -1
  134. package/dist/runtime/types.d.ts +21 -0
  135. package/dist/runtime/types.d.ts.map +1 -1
  136. package/dist/runtime/vault-extra-ops.d.ts +9 -0
  137. package/dist/runtime/vault-extra-ops.d.ts.map +1 -0
  138. package/dist/runtime/vault-extra-ops.js +195 -0
  139. package/dist/runtime/vault-extra-ops.js.map +1 -0
  140. package/dist/telemetry/telemetry.d.ts +48 -0
  141. package/dist/telemetry/telemetry.d.ts.map +1 -0
  142. package/dist/telemetry/telemetry.js +87 -0
  143. package/dist/telemetry/telemetry.js.map +1 -0
  144. package/dist/vault/vault.d.ts +94 -0
  145. package/dist/vault/vault.d.ts.map +1 -1
  146. package/dist/vault/vault.js +340 -1
  147. package/dist/vault/vault.js.map +1 -1
  148. package/package.json +1 -1
  149. package/src/__tests__/admin-extra-ops.test.ts +420 -0
  150. package/src/__tests__/admin-ops.test.ts +271 -0
  151. package/src/__tests__/brain-intelligence.test.ts +205 -0
  152. package/src/__tests__/brain.test.ts +131 -0
  153. package/src/__tests__/capture-ops.test.ts +509 -0
  154. package/src/__tests__/core-ops.test.ts +266 -2
  155. package/src/__tests__/curator-extra-ops.test.ts +359 -0
  156. package/src/__tests__/domain-ops.test.ts +66 -0
  157. package/src/__tests__/governance.test.ts +522 -0
  158. package/src/__tests__/grading-ops.test.ts +340 -0
  159. package/src/__tests__/identity-manager.test.ts +243 -0
  160. package/src/__tests__/intent-router.test.ts +222 -0
  161. package/src/__tests__/logger.test.ts +200 -0
  162. package/src/__tests__/loop-ops.test.ts +398 -0
  163. package/src/__tests__/memory-cross-project-ops.test.ts +246 -0
  164. package/src/__tests__/memory-extra-ops.test.ts +352 -0
  165. package/src/__tests__/orchestrate-ops.test.ts +284 -0
  166. package/src/__tests__/planner.test.ts +331 -0
  167. package/src/__tests__/planning-extra-ops.test.ts +548 -0
  168. package/src/__tests__/project-ops.test.ts +367 -0
  169. package/src/__tests__/vault-extra-ops.test.ts +407 -0
  170. package/src/brain/brain.ts +114 -7
  171. package/src/brain/intelligence.ts +179 -10
  172. package/src/brain/types.ts +38 -0
  173. package/src/control/identity-manager.ts +354 -0
  174. package/src/control/intent-router.ts +326 -0
  175. package/src/control/types.ts +102 -0
  176. package/src/curator/curator.ts +213 -0
  177. package/src/governance/governance.ts +698 -0
  178. package/src/governance/index.ts +18 -0
  179. package/src/governance/types.ts +111 -0
  180. package/src/index.ts +102 -2
  181. package/src/logging/logger.ts +154 -0
  182. package/src/logging/types.ts +21 -0
  183. package/src/loop/loop-manager.ts +130 -0
  184. package/src/loop/types.ts +44 -0
  185. package/src/planning/gap-analysis.ts +506 -0
  186. package/src/planning/gap-types.ts +58 -0
  187. package/src/planning/planner.ts +478 -2
  188. package/src/project/project-registry.ts +358 -0
  189. package/src/project/types.ts +31 -0
  190. package/src/runtime/admin-extra-ops.ts +307 -0
  191. package/src/runtime/admin-ops.ts +329 -0
  192. package/src/runtime/capture-ops.ts +385 -0
  193. package/src/runtime/core-ops.ts +535 -7
  194. package/src/runtime/curator-extra-ops.ts +71 -0
  195. package/src/runtime/domain-ops.ts +65 -13
  196. package/src/runtime/grading-ops.ts +121 -0
  197. package/src/runtime/loop-ops.ts +194 -0
  198. package/src/runtime/memory-cross-project-ops.ts +192 -0
  199. package/src/runtime/memory-extra-ops.ts +186 -0
  200. package/src/runtime/orchestrate-ops.ts +272 -0
  201. package/src/runtime/planning-extra-ops.ts +327 -0
  202. package/src/runtime/project-ops.ts +196 -0
  203. package/src/runtime/runtime.ts +49 -1
  204. package/src/runtime/types.ts +21 -0
  205. package/src/runtime/vault-extra-ops.ts +225 -0
  206. package/src/telemetry/telemetry.ts +118 -0
  207. package/src/vault/vault.ts +412 -1
@@ -32,8 +32,8 @@ export declare const facadeInputSchema: z.ZodObject<{
32
32
  op: z.ZodString;
33
33
  params: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
34
34
  }, "strip", z.ZodTypeAny, {
35
- params: Record<string, unknown>;
36
35
  op: string;
36
+ params: Record<string, unknown>;
37
37
  }, {
38
38
  op: string;
39
39
  params?: Record<string, unknown> | undefined;
@@ -0,0 +1,42 @@
1
+ import type { Vault } from '../vault/vault.js';
2
+ import type { PolicyType, PolicyPreset, VaultPolicy, QuotaStatus, PolicyDecision, BatchDecision, PolicyAuditEntry, Proposal, ProposalStats, GovernanceDashboard } from './types.js';
3
+ export declare class Governance {
4
+ private vault;
5
+ constructor(vault: Vault);
6
+ private initializeTables;
7
+ getPolicy(projectPath: string): VaultPolicy;
8
+ setPolicy(projectPath: string, policyType: PolicyType, config: Record<string, unknown>, changedBy?: string): void;
9
+ applyPreset(projectPath: string, preset: PolicyPreset, changedBy?: string): void;
10
+ getQuotaStatus(projectPath: string): QuotaStatus;
11
+ getAuditTrail(projectPath: string, limit?: number): PolicyAuditEntry[];
12
+ evaluateCapture(projectPath: string, entry: {
13
+ type: string;
14
+ category: string;
15
+ title?: string;
16
+ }): PolicyDecision;
17
+ evaluateBatch(projectPath: string, entries: Array<{
18
+ type: string;
19
+ category: string;
20
+ title?: string;
21
+ }>): BatchDecision[];
22
+ private logEvaluation;
23
+ propose(projectPath: string, entryData: {
24
+ entryId?: string;
25
+ title: string;
26
+ type: string;
27
+ category: string;
28
+ data?: Record<string, unknown>;
29
+ }, source?: string): number;
30
+ approveProposal(proposalId: number, decidedBy?: string): Proposal | null;
31
+ rejectProposal(proposalId: number, decidedBy?: string, note?: string): Proposal | null;
32
+ modifyProposal(proposalId: number, modifications: Record<string, unknown>, decidedBy?: string): Proposal | null;
33
+ listPendingProposals(projectPath?: string, limit?: number): Proposal[];
34
+ getProposalStats(projectPath?: string): ProposalStats;
35
+ expireStaleProposals(maxAgeDays?: number): number;
36
+ getDashboard(projectPath: string): GovernanceDashboard;
37
+ private countPending;
38
+ private captureFromProposal;
39
+ private resolveProposal;
40
+ private getProposalById;
41
+ }
42
+ //# sourceMappingURL=governance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/governance/governance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EAIZ,WAAW,EACX,WAAW,EACX,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,QAAQ,EAER,aAAa,EACb,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAyDpB,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAQ;gBAET,KAAK,EAAE,KAAK;IAOxB,OAAO,CAAC,gBAAgB;IAiExB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW;IAwB3C,SAAS,CACP,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IAuBP,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAwBhF,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW;IAsChD,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE;IA6BtE,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACxD,cAAc;IAkEjB,aAAa,CACX,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACjE,aAAa,EAAE;IASlB,OAAO,CAAC,aAAa;IA4BrB,OAAO,CACL,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,EACD,MAAM,CAAC,EAAE,MAAM,GACd,MAAM;IAmBT,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAOxE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAItF,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,SAAS,CAAC,EAAE,MAAM,GACjB,QAAQ,GAAG,IAAI;IAyBlB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE;IAgBtE,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa;IAsErD,oBAAoB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAgBjD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB;IAsCtD,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,eAAe;CAOxB"}
@@ -0,0 +1,488 @@
1
+ const POLICY_PRESETS = {
2
+ strict: {
3
+ quotas: {
4
+ maxEntriesTotal: 200,
5
+ maxEntriesPerCategory: 50,
6
+ maxEntriesPerType: 100,
7
+ warnAtPercent: 70,
8
+ },
9
+ retention: { archiveAfterDays: 30, minHitsToKeep: 5, deleteArchivedAfterDays: 90 },
10
+ autoCapture: { enabled: true, requireReview: true, maxPendingProposals: 10, autoExpireDays: 7 },
11
+ },
12
+ moderate: {
13
+ quotas: {
14
+ maxEntriesTotal: 500,
15
+ maxEntriesPerCategory: 150,
16
+ maxEntriesPerType: 250,
17
+ warnAtPercent: 80,
18
+ },
19
+ retention: { archiveAfterDays: 90, minHitsToKeep: 2, deleteArchivedAfterDays: 180 },
20
+ autoCapture: {
21
+ enabled: true,
22
+ requireReview: false,
23
+ maxPendingProposals: 25,
24
+ autoExpireDays: 14,
25
+ },
26
+ },
27
+ permissive: {
28
+ quotas: {
29
+ maxEntriesTotal: 2000,
30
+ maxEntriesPerCategory: 500,
31
+ maxEntriesPerType: 1000,
32
+ warnAtPercent: 90,
33
+ },
34
+ retention: { archiveAfterDays: 365, minHitsToKeep: 0, deleteArchivedAfterDays: 730 },
35
+ autoCapture: {
36
+ enabled: true,
37
+ requireReview: false,
38
+ maxPendingProposals: 100,
39
+ autoExpireDays: 30,
40
+ },
41
+ },
42
+ };
43
+ const DEFAULT_PRESET = 'moderate';
44
+ // ─── Governance Class ───────────────────────────────────────────────
45
+ export class Governance {
46
+ vault;
47
+ constructor(vault) {
48
+ this.vault = vault;
49
+ this.initializeTables();
50
+ }
51
+ // ─── Schema ─────────────────────────────────────────────────────
52
+ initializeTables() {
53
+ const db = this.vault.getDb();
54
+ db.exec(`
55
+ CREATE TABLE IF NOT EXISTS vault_policies (
56
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
57
+ project_path TEXT NOT NULL,
58
+ policy_type TEXT NOT NULL CHECK(policy_type IN ('quota', 'retention', 'auto-capture')),
59
+ config TEXT NOT NULL,
60
+ enabled INTEGER DEFAULT 1,
61
+ created_at INTEGER NOT NULL DEFAULT (unixepoch()),
62
+ updated_at INTEGER NOT NULL DEFAULT (unixepoch()),
63
+ UNIQUE(project_path, policy_type)
64
+ );
65
+
66
+ CREATE TABLE IF NOT EXISTS vault_proposals (
67
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
68
+ project_path TEXT NOT NULL,
69
+ entry_id TEXT,
70
+ title TEXT NOT NULL,
71
+ type TEXT NOT NULL,
72
+ category TEXT NOT NULL,
73
+ proposed_data TEXT NOT NULL,
74
+ status TEXT NOT NULL DEFAULT 'pending'
75
+ CHECK(status IN ('pending', 'approved', 'rejected', 'modified', 'expired')),
76
+ proposed_at INTEGER NOT NULL DEFAULT (unixepoch()),
77
+ decided_at INTEGER,
78
+ decided_by TEXT,
79
+ modification_note TEXT,
80
+ source TEXT DEFAULT 'auto-capture'
81
+ );
82
+
83
+ CREATE TABLE IF NOT EXISTS vault_policy_evaluations (
84
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
85
+ project_path TEXT NOT NULL,
86
+ entry_type TEXT NOT NULL,
87
+ entry_category TEXT NOT NULL,
88
+ entry_title TEXT,
89
+ action TEXT NOT NULL,
90
+ reason TEXT,
91
+ quota_total INTEGER,
92
+ quota_max INTEGER,
93
+ proposal_id INTEGER,
94
+ evaluated_at INTEGER NOT NULL DEFAULT (unixepoch())
95
+ );
96
+
97
+ CREATE TABLE IF NOT EXISTS vault_policy_changes (
98
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
99
+ project_path TEXT NOT NULL,
100
+ policy_type TEXT NOT NULL,
101
+ old_config TEXT,
102
+ new_config TEXT NOT NULL,
103
+ changed_by TEXT,
104
+ changed_at INTEGER NOT NULL DEFAULT (unixepoch())
105
+ );
106
+
107
+ CREATE INDEX IF NOT EXISTS idx_vault_policies_project ON vault_policies(project_path);
108
+ CREATE INDEX IF NOT EXISTS idx_vault_proposals_project ON vault_proposals(project_path);
109
+ CREATE INDEX IF NOT EXISTS idx_vault_proposals_status ON vault_proposals(status);
110
+ CREATE INDEX IF NOT EXISTS idx_vault_evaluations_project ON vault_policy_evaluations(project_path);
111
+ CREATE INDEX IF NOT EXISTS idx_vault_evaluations_action ON vault_policy_evaluations(action);
112
+ `);
113
+ }
114
+ // ─── Policy CRUD ────────────────────────────────────────────────
115
+ getPolicy(projectPath) {
116
+ const db = this.vault.getDb();
117
+ const defaults = POLICY_PRESETS[DEFAULT_PRESET];
118
+ const rows = db
119
+ .prepare('SELECT policy_type, config FROM vault_policies WHERE project_path = ? AND enabled = 1')
120
+ .all(projectPath);
121
+ let quotas = defaults.quotas;
122
+ let retention = defaults.retention;
123
+ let autoCapture = defaults.autoCapture;
124
+ for (const row of rows) {
125
+ const parsed = JSON.parse(row.config);
126
+ if (row.policy_type === 'quota')
127
+ quotas = parsed;
128
+ else if (row.policy_type === 'retention')
129
+ retention = parsed;
130
+ else if (row.policy_type === 'auto-capture')
131
+ autoCapture = parsed;
132
+ }
133
+ return { projectPath, quotas, retention, autoCapture };
134
+ }
135
+ setPolicy(projectPath, policyType, config, changedBy) {
136
+ const db = this.vault.getDb();
137
+ // Get old config for audit trail
138
+ const existing = db
139
+ .prepare('SELECT config FROM vault_policies WHERE project_path = ? AND policy_type = ?')
140
+ .get(projectPath, policyType);
141
+ const oldConfig = existing ? existing.config : null;
142
+ // UPSERT policy
143
+ db.prepare(`INSERT INTO vault_policies (project_path, policy_type, config, updated_at)
144
+ VALUES (?, ?, ?, unixepoch())
145
+ ON CONFLICT(project_path, policy_type)
146
+ DO UPDATE SET config = excluded.config, updated_at = excluded.updated_at`).run(projectPath, policyType, JSON.stringify(config));
147
+ // Audit trail
148
+ db.prepare('INSERT INTO vault_policy_changes (project_path, policy_type, old_config, new_config, changed_by) VALUES (?, ?, ?, ?, ?)').run(projectPath, policyType, oldConfig, JSON.stringify(config), changedBy ?? null);
149
+ }
150
+ applyPreset(projectPath, preset, changedBy) {
151
+ const config = POLICY_PRESETS[preset];
152
+ if (!config)
153
+ throw new Error(`Unknown preset: ${preset}`);
154
+ this.setPolicy(projectPath, 'quota', config.quotas, changedBy);
155
+ this.setPolicy(projectPath, 'retention', config.retention, changedBy);
156
+ this.setPolicy(projectPath, 'auto-capture', config.autoCapture, changedBy);
157
+ }
158
+ getQuotaStatus(projectPath) {
159
+ const policy = this.getPolicy(projectPath);
160
+ const db = this.vault.getDb();
161
+ const totalRow = db.prepare('SELECT COUNT(*) as count FROM entries').get();
162
+ const total = totalRow.count;
163
+ // Count by domain (used as category proxy)
164
+ const categoryRows = db
165
+ .prepare('SELECT domain, COUNT(*) as count FROM entries GROUP BY domain')
166
+ .all();
167
+ const byCategory = {};
168
+ for (const row of categoryRows) {
169
+ byCategory[row.domain] = row.count;
170
+ }
171
+ // Count by type
172
+ const typeRows = db
173
+ .prepare('SELECT type, COUNT(*) as count FROM entries GROUP BY type')
174
+ .all();
175
+ const byType = {};
176
+ for (const row of typeRows) {
177
+ byType[row.type] = row.count;
178
+ }
179
+ const warnAtPercent = policy.quotas.warnAtPercent;
180
+ const isWarning = total >= (policy.quotas.maxEntriesTotal * warnAtPercent) / 100;
181
+ return {
182
+ total,
183
+ maxTotal: policy.quotas.maxEntriesTotal,
184
+ byCategory,
185
+ byType,
186
+ warnAtPercent,
187
+ isWarning,
188
+ };
189
+ }
190
+ getAuditTrail(projectPath, limit) {
191
+ const db = this.vault.getDb();
192
+ const rows = db
193
+ .prepare('SELECT id, project_path, policy_type, old_config, new_config, changed_by, changed_at FROM vault_policy_changes WHERE project_path = ? ORDER BY changed_at DESC LIMIT ?')
194
+ .all(projectPath, limit ?? 50);
195
+ return rows.map((row) => ({
196
+ id: row.id,
197
+ projectPath: row.project_path,
198
+ policyType: row.policy_type,
199
+ oldConfig: row.old_config ? JSON.parse(row.old_config) : null,
200
+ newConfig: JSON.parse(row.new_config),
201
+ changedBy: row.changed_by,
202
+ changedAt: row.changed_at,
203
+ }));
204
+ }
205
+ // ─── Evaluation ─────────────────────────────────────────────────
206
+ evaluateCapture(projectPath, entry) {
207
+ const policy = this.getPolicy(projectPath);
208
+ const quotaStatus = this.getQuotaStatus(projectPath);
209
+ let decision;
210
+ // 1. Auto-capture disabled → reject
211
+ if (!policy.autoCapture.enabled) {
212
+ decision = {
213
+ allowed: false,
214
+ action: 'reject',
215
+ reason: 'Auto-capture is disabled',
216
+ quotaStatus,
217
+ };
218
+ }
219
+ // 2. Require review → propose (if pending < max)
220
+ else if (policy.autoCapture.requireReview) {
221
+ const pendingCount = this.countPending(projectPath);
222
+ if (pendingCount >= policy.autoCapture.maxPendingProposals) {
223
+ decision = {
224
+ allowed: false,
225
+ action: 'reject',
226
+ reason: `Too many pending proposals (${pendingCount}/${policy.autoCapture.maxPendingProposals})`,
227
+ quotaStatus,
228
+ };
229
+ }
230
+ else {
231
+ decision = { allowed: false, action: 'propose', reason: 'Review required', quotaStatus };
232
+ }
233
+ }
234
+ // 3. Total quota exceeded → reject
235
+ else if (quotaStatus.total >= policy.quotas.maxEntriesTotal) {
236
+ decision = {
237
+ allowed: false,
238
+ action: 'reject',
239
+ reason: `Total quota exceeded (${quotaStatus.total}/${policy.quotas.maxEntriesTotal})`,
240
+ quotaStatus,
241
+ };
242
+ }
243
+ // 4. Per-category quota exceeded → quarantine
244
+ else if ((quotaStatus.byCategory[entry.category] ?? 0) >= policy.quotas.maxEntriesPerCategory) {
245
+ decision = {
246
+ allowed: false,
247
+ action: 'quarantine',
248
+ reason: `Category quota exceeded for "${entry.category}"`,
249
+ quotaStatus,
250
+ };
251
+ }
252
+ // 5. Per-type quota exceeded → quarantine
253
+ else if ((quotaStatus.byType[entry.type] ?? 0) >= policy.quotas.maxEntriesPerType) {
254
+ decision = {
255
+ allowed: false,
256
+ action: 'quarantine',
257
+ reason: `Type quota exceeded for "${entry.type}"`,
258
+ quotaStatus,
259
+ };
260
+ }
261
+ // 6. All clear → capture
262
+ else {
263
+ decision = { allowed: true, action: 'capture', quotaStatus };
264
+ }
265
+ // Log evaluation (fire-and-forget)
266
+ this.logEvaluation(projectPath, entry, decision);
267
+ return decision;
268
+ }
269
+ evaluateBatch(projectPath, entries) {
270
+ const results = [];
271
+ for (const entry of entries) {
272
+ const decision = this.evaluateCapture(projectPath, entry);
273
+ results.push({ entry, decision });
274
+ }
275
+ return results;
276
+ }
277
+ logEvaluation(projectPath, entry, decision) {
278
+ try {
279
+ const db = this.vault.getDb();
280
+ db.prepare(`INSERT INTO vault_policy_evaluations
281
+ (project_path, entry_type, entry_category, entry_title, action, reason, quota_total, quota_max)
282
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(projectPath, entry.type, entry.category, entry.title ?? null, decision.action, decision.reason ?? null, decision.quotaStatus?.total ?? null, decision.quotaStatus?.maxTotal ?? null);
283
+ }
284
+ catch {
285
+ // Fire-and-forget — don't fail capture because of evaluation logging
286
+ }
287
+ }
288
+ // ─── Proposals ──────────────────────────────────────────────────
289
+ propose(projectPath, entryData, source) {
290
+ const db = this.vault.getDb();
291
+ const result = db
292
+ .prepare(`INSERT INTO vault_proposals (project_path, entry_id, title, type, category, proposed_data, source)
293
+ VALUES (?, ?, ?, ?, ?, ?, ?)`)
294
+ .run(projectPath, entryData.entryId ?? null, entryData.title, entryData.type, entryData.category, JSON.stringify(entryData.data ?? {}), source ?? 'auto-capture');
295
+ return Number(result.lastInsertRowid);
296
+ }
297
+ approveProposal(proposalId, decidedBy) {
298
+ const proposal = this.resolveProposal(proposalId, 'approved', decidedBy);
299
+ if (!proposal)
300
+ return null;
301
+ this.captureFromProposal(proposal);
302
+ return proposal;
303
+ }
304
+ rejectProposal(proposalId, decidedBy, note) {
305
+ return this.resolveProposal(proposalId, 'rejected', decidedBy, note);
306
+ }
307
+ modifyProposal(proposalId, modifications, decidedBy) {
308
+ const db = this.vault.getDb();
309
+ const existing = this.getProposalById(proposalId);
310
+ if (!existing || existing.status !== 'pending')
311
+ return null;
312
+ // Merge modifications into proposed data
313
+ const merged = { ...existing.proposedData, ...modifications };
314
+ db.prepare(`UPDATE vault_proposals
315
+ SET status = 'modified', proposed_data = ?, decided_at = unixepoch(),
316
+ decided_by = ?, modification_note = ?
317
+ WHERE id = ?`).run(JSON.stringify(merged), decidedBy ?? null, `Modified fields: ${Object.keys(modifications).join(', ')}`, proposalId);
318
+ const proposal = this.getProposalById(proposalId);
319
+ if (proposal)
320
+ this.captureFromProposal(proposal);
321
+ return proposal;
322
+ }
323
+ listPendingProposals(projectPath, limit) {
324
+ const db = this.vault.getDb();
325
+ if (projectPath) {
326
+ const rows = db
327
+ .prepare('SELECT * FROM vault_proposals WHERE project_path = ? AND status = ? ORDER BY proposed_at DESC LIMIT ?')
328
+ .all(projectPath, 'pending', limit ?? 50);
329
+ return rows.map(mapProposal);
330
+ }
331
+ const rows = db
332
+ .prepare('SELECT * FROM vault_proposals WHERE status = ? ORDER BY proposed_at DESC LIMIT ?')
333
+ .all('pending', limit ?? 50);
334
+ return rows.map(mapProposal);
335
+ }
336
+ getProposalStats(projectPath) {
337
+ const db = this.vault.getDb();
338
+ const whereClause = projectPath ? 'WHERE project_path = ?' : '';
339
+ const params = projectPath ? [projectPath] : [];
340
+ const statusRows = db
341
+ .prepare(`SELECT status, COUNT(*) as count FROM vault_proposals ${whereClause} GROUP BY status`)
342
+ .all(...params);
343
+ const stats = {
344
+ total: 0,
345
+ pending: 0,
346
+ approved: 0,
347
+ rejected: 0,
348
+ modified: 0,
349
+ expired: 0,
350
+ acceptanceRate: 0,
351
+ byCategory: {},
352
+ };
353
+ for (const row of statusRows) {
354
+ stats.total += row.count;
355
+ switch (row.status) {
356
+ case 'pending':
357
+ stats.pending = row.count;
358
+ break;
359
+ case 'approved':
360
+ stats.approved = row.count;
361
+ break;
362
+ case 'rejected':
363
+ stats.rejected = row.count;
364
+ break;
365
+ case 'modified':
366
+ stats.modified = row.count;
367
+ break;
368
+ case 'expired':
369
+ stats.expired = row.count;
370
+ break;
371
+ }
372
+ }
373
+ const decided = stats.approved + stats.modified + stats.rejected;
374
+ stats.acceptanceRate = decided > 0 ? (stats.approved + stats.modified) / decided : 0;
375
+ // Category breakdown
376
+ const catRows = db
377
+ .prepare(`SELECT category, status, COUNT(*) as count FROM vault_proposals ${whereClause} GROUP BY category, status`)
378
+ .all(...params);
379
+ for (const row of catRows) {
380
+ if (!stats.byCategory[row.category]) {
381
+ stats.byCategory[row.category] = { total: 0, accepted: 0, rate: 0 };
382
+ }
383
+ stats.byCategory[row.category].total += row.count;
384
+ if (row.status === 'approved' || row.status === 'modified') {
385
+ stats.byCategory[row.category].accepted += row.count;
386
+ }
387
+ }
388
+ for (const cat of Object.values(stats.byCategory)) {
389
+ cat.rate = cat.total > 0 ? cat.accepted / cat.total : 0;
390
+ }
391
+ return stats;
392
+ }
393
+ expireStaleProposals(maxAgeDays) {
394
+ const db = this.vault.getDb();
395
+ const days = maxAgeDays ?? 14;
396
+ const cutoff = Math.floor(Date.now() / 1000) - days * 86400;
397
+ const result = db
398
+ .prepare("UPDATE vault_proposals SET status = 'expired', decided_at = unixepoch() WHERE status = 'pending' AND proposed_at < ?")
399
+ .run(cutoff);
400
+ return result.changes;
401
+ }
402
+ // ─── Dashboard ──────────────────────────────────────────────────
403
+ getDashboard(projectPath) {
404
+ const policy = this.getPolicy(projectPath);
405
+ const quotaStatus = this.getQuotaStatus(projectPath);
406
+ const proposalStats = this.getProposalStats(projectPath);
407
+ // Evaluation trend — count by action in last 7 days
408
+ const db = this.vault.getDb();
409
+ const sevenDaysAgo = Math.floor(Date.now() / 1000) - 7 * 86400;
410
+ const trendRows = db
411
+ .prepare('SELECT action, COUNT(*) as count FROM vault_policy_evaluations WHERE project_path = ? AND evaluated_at > ? GROUP BY action')
412
+ .all(projectPath, sevenDaysAgo);
413
+ const evaluationTrend = {};
414
+ for (const row of trendRows) {
415
+ evaluationTrend[row.action] = row.count;
416
+ }
417
+ return {
418
+ vaultSize: quotaStatus.total,
419
+ quotaPercent: quotaStatus.maxTotal > 0 ? Math.round((quotaStatus.total / quotaStatus.maxTotal) * 100) : 0,
420
+ quotaStatus,
421
+ pendingProposals: proposalStats.pending,
422
+ acceptanceRate: proposalStats.acceptanceRate,
423
+ evaluationTrend,
424
+ policySummary: {
425
+ maxEntries: policy.quotas.maxEntriesTotal,
426
+ requireReview: policy.autoCapture.requireReview,
427
+ archiveAfterDays: policy.retention.archiveAfterDays,
428
+ autoExpireDays: policy.autoCapture.autoExpireDays,
429
+ },
430
+ };
431
+ }
432
+ // ─── Private Helpers ────────────────────────────────────────────
433
+ countPending(projectPath) {
434
+ const db = this.vault.getDb();
435
+ const row = db
436
+ .prepare("SELECT COUNT(*) as count FROM vault_proposals WHERE project_path = ? AND status = 'pending'")
437
+ .get(projectPath);
438
+ return row.count;
439
+ }
440
+ captureFromProposal(proposal) {
441
+ const data = proposal.proposedData;
442
+ const entryId = proposal.entryId ?? `proposal-${proposal.id}`;
443
+ this.vault.add({
444
+ id: entryId,
445
+ type: proposal.type ?? 'pattern',
446
+ domain: proposal.category,
447
+ title: proposal.title,
448
+ severity: data.severity ?? 'warning',
449
+ description: data.description ?? proposal.title,
450
+ context: data.context,
451
+ example: data.example,
452
+ counterExample: data.counterExample,
453
+ why: data.why,
454
+ tags: data.tags ?? [],
455
+ });
456
+ }
457
+ resolveProposal(proposalId, status, decidedBy, note) {
458
+ const db = this.vault.getDb();
459
+ const existing = this.getProposalById(proposalId);
460
+ if (!existing || existing.status !== 'pending')
461
+ return null;
462
+ db.prepare('UPDATE vault_proposals SET status = ?, decided_at = unixepoch(), decided_by = ?, modification_note = ? WHERE id = ?').run(status, decidedBy ?? null, note ?? null, proposalId);
463
+ return this.getProposalById(proposalId);
464
+ }
465
+ getProposalById(id) {
466
+ const db = this.vault.getDb();
467
+ const row = db.prepare('SELECT * FROM vault_proposals WHERE id = ?').get(id);
468
+ return row ? mapProposal(row) : null;
469
+ }
470
+ }
471
+ function mapProposal(row) {
472
+ return {
473
+ id: row.id,
474
+ projectPath: row.project_path,
475
+ entryId: row.entry_id,
476
+ title: row.title,
477
+ type: row.type,
478
+ category: row.category,
479
+ proposedData: JSON.parse(row.proposed_data),
480
+ status: row.status,
481
+ proposedAt: row.proposed_at,
482
+ decidedAt: row.decided_at,
483
+ decidedBy: row.decided_by,
484
+ modificationNote: row.modification_note,
485
+ source: row.source,
486
+ };
487
+ }
488
+ //# sourceMappingURL=governance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/governance/governance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { Governance } from './governance.js';
2
+ export type { PolicyType, PolicyPreset, PolicyAction, QuotaPolicy, RetentionPolicy, AutoCapturePolicy, VaultPolicy, QuotaStatus, PolicyDecision, BatchDecision, PolicyAuditEntry, ProposalStatus, Proposal, ProposalStats, GovernanceDashboard, } from './types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/governance/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Governance } from './governance.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/governance/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}