@rangerchaz/aimem 0.1.5 → 0.2.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/README.md +589 -432
- package/dist/cli/commands/guardrails.d.ts +3 -0
- package/dist/cli/commands/guardrails.d.ts.map +1 -0
- package/dist/cli/commands/guardrails.js +340 -0
- package/dist/cli/commands/guardrails.js.map +1 -0
- package/dist/cli/commands/reindex.d.ts +7 -0
- package/dist/cli/commands/reindex.d.ts.map +1 -0
- package/dist/cli/commands/reindex.js +117 -0
- package/dist/cli/commands/reindex.js.map +1 -0
- package/dist/cli/index.js +15 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/db/index.d.ts +30 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +192 -1
- package/dist/db/index.js.map +1 -1
- package/dist/db/schema.d.ts +1 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +54 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/guardrails/analyzer.d.ts +20 -0
- package/dist/guardrails/analyzer.d.ts.map +1 -0
- package/dist/guardrails/analyzer.js +329 -0
- package/dist/guardrails/analyzer.js.map +1 -0
- package/dist/guardrails/calculator.d.ts +46 -0
- package/dist/guardrails/calculator.d.ts.map +1 -0
- package/dist/guardrails/calculator.js +97 -0
- package/dist/guardrails/calculator.js.map +1 -0
- package/dist/guardrails/enforcer.d.ts +28 -0
- package/dist/guardrails/enforcer.d.ts.map +1 -0
- package/dist/guardrails/enforcer.js +153 -0
- package/dist/guardrails/enforcer.js.map +1 -0
- package/dist/guardrails/index.d.ts +12 -0
- package/dist/guardrails/index.d.ts.map +1 -0
- package/dist/guardrails/index.js +17 -0
- package/dist/guardrails/index.js.map +1 -0
- package/dist/guardrails/linter-import.d.ts +31 -0
- package/dist/guardrails/linter-import.d.ts.map +1 -0
- package/dist/guardrails/linter-import.js +547 -0
- package/dist/guardrails/linter-import.js.map +1 -0
- package/dist/guardrails/responder.d.ts +28 -0
- package/dist/guardrails/responder.d.ts.map +1 -0
- package/dist/guardrails/responder.js +98 -0
- package/dist/guardrails/responder.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +409 -10
- package/dist/mcp/server.js.map +1 -1
- package/dist/types/index.d.ts +58 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +56 -56
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Violation Checker / Enforcer
|
|
3
|
+
*
|
|
4
|
+
* Checks if proposed actions violate any guardrails.
|
|
5
|
+
*/
|
|
6
|
+
import { getProjectGuardrails, getOrCreateProjectDik, getGuardrailHistory, insertGuardrailEvent, incrementDikCounter, getGuardrailEvent, } from '../db/index.js';
|
|
7
|
+
import { calculateDik } from './calculator.js';
|
|
8
|
+
import { generateCombinedResponse } from './responder.js';
|
|
9
|
+
/**
|
|
10
|
+
* Check if an action violates any guardrails.
|
|
11
|
+
*
|
|
12
|
+
* This does keyword/pattern matching against the action text.
|
|
13
|
+
* For more sophisticated matching, the analyzer should pre-tag
|
|
14
|
+
* guardrails with keywords.
|
|
15
|
+
*/
|
|
16
|
+
export function checkGuardrails(projectId, action, context) {
|
|
17
|
+
const guardrails = getProjectGuardrails(projectId, { activeOnly: true });
|
|
18
|
+
const dikData = getOrCreateProjectDik(projectId);
|
|
19
|
+
const dikLevel = calculateDik(dikData);
|
|
20
|
+
const violations = [];
|
|
21
|
+
const violationHistories = [];
|
|
22
|
+
const actionLower = action.toLowerCase();
|
|
23
|
+
const contextLower = context?.toLowerCase() || '';
|
|
24
|
+
const combined = actionLower + ' ' + contextLower;
|
|
25
|
+
for (const guardrail of guardrails) {
|
|
26
|
+
if (matchesGuardrail(combined, guardrail)) {
|
|
27
|
+
const violation = {
|
|
28
|
+
id: guardrail.id,
|
|
29
|
+
rule: guardrail.rule,
|
|
30
|
+
category: guardrail.category,
|
|
31
|
+
severity: guardrail.severity,
|
|
32
|
+
rationale: guardrail.rationale,
|
|
33
|
+
};
|
|
34
|
+
violations.push(violation);
|
|
35
|
+
const history = getGuardrailHistory(guardrail.id);
|
|
36
|
+
violationHistories.push({
|
|
37
|
+
violation,
|
|
38
|
+
history: {
|
|
39
|
+
previousOverrides: history.overrides,
|
|
40
|
+
wasVindicated: history.vindicated,
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
// Log the trigger event
|
|
44
|
+
insertGuardrailEvent(guardrail.id, 'triggered', action.slice(0, 500), // Truncate for storage
|
|
45
|
+
null, dikLevel);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Increment conversation count
|
|
49
|
+
incrementDikCounter(projectId, 'conversations');
|
|
50
|
+
// Generate response
|
|
51
|
+
const response = generateCombinedResponse(violationHistories, dikLevel);
|
|
52
|
+
return {
|
|
53
|
+
violations,
|
|
54
|
+
dik_level: dikLevel,
|
|
55
|
+
response,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Check if the action text matches a guardrail.
|
|
60
|
+
*
|
|
61
|
+
* This uses simple keyword matching. Rules can contain:
|
|
62
|
+
* - Exact phrases to look for
|
|
63
|
+
* - Category-specific patterns
|
|
64
|
+
*/
|
|
65
|
+
function matchesGuardrail(text, guardrail) {
|
|
66
|
+
// Extract keywords from the rule
|
|
67
|
+
const keywords = extractKeywords(guardrail.rule, guardrail.category);
|
|
68
|
+
// Check if any keyword matches
|
|
69
|
+
for (const keyword of keywords) {
|
|
70
|
+
if (text.includes(keyword.toLowerCase())) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Extract keywords from a rule for matching.
|
|
78
|
+
*/
|
|
79
|
+
function extractKeywords(rule, category) {
|
|
80
|
+
const keywords = [];
|
|
81
|
+
// Extract quoted phrases
|
|
82
|
+
const quotedMatches = rule.match(/"[^"]+"/g) || [];
|
|
83
|
+
for (const match of quotedMatches) {
|
|
84
|
+
keywords.push(match.slice(1, -1)); // Remove quotes
|
|
85
|
+
}
|
|
86
|
+
// Extract backtick-wrapped code
|
|
87
|
+
const codeMatches = rule.match(/`[^`]+`/g) || [];
|
|
88
|
+
for (const match of codeMatches) {
|
|
89
|
+
keywords.push(match.slice(1, -1)); // Remove backticks
|
|
90
|
+
}
|
|
91
|
+
// Category-specific keyword extraction
|
|
92
|
+
switch (category) {
|
|
93
|
+
case 'naming':
|
|
94
|
+
// Look for case patterns mentioned
|
|
95
|
+
if (rule.includes('snake_case'))
|
|
96
|
+
keywords.push('snake_case');
|
|
97
|
+
if (rule.includes('camelCase'))
|
|
98
|
+
keywords.push('camelCase');
|
|
99
|
+
if (rule.includes('PascalCase'))
|
|
100
|
+
keywords.push('PascalCase');
|
|
101
|
+
if (rule.includes('kebab-case'))
|
|
102
|
+
keywords.push('kebab-case');
|
|
103
|
+
break;
|
|
104
|
+
case 'architecture':
|
|
105
|
+
// Look for path patterns
|
|
106
|
+
const pathMatches = rule.match(/\/[a-zA-Z_-]+\//g) || [];
|
|
107
|
+
keywords.push(...pathMatches);
|
|
108
|
+
break;
|
|
109
|
+
case 'security':
|
|
110
|
+
// Common security keywords
|
|
111
|
+
if (rule.toLowerCase().includes('auth'))
|
|
112
|
+
keywords.push('password', 'token', 'secret', 'credential');
|
|
113
|
+
if (rule.toLowerCase().includes('sanitiz'))
|
|
114
|
+
keywords.push('sanitize', 'escape', 'validate');
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
return keywords;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Record that a user accepted a triggered guardrail.
|
|
121
|
+
*/
|
|
122
|
+
export function acceptGuardrail(guardrailId, projectId) {
|
|
123
|
+
const dikData = getOrCreateProjectDik(projectId);
|
|
124
|
+
const dikLevel = calculateDik(dikData);
|
|
125
|
+
insertGuardrailEvent(guardrailId, 'accepted', null, null, dikLevel);
|
|
126
|
+
incrementDikCounter(projectId, 'corrections_made');
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Record that a user overrode a triggered guardrail.
|
|
130
|
+
*/
|
|
131
|
+
export function overrideGuardrail(guardrailId, projectId, reason) {
|
|
132
|
+
const dikData = getOrCreateProjectDik(projectId);
|
|
133
|
+
const dikLevel = calculateDik(dikData);
|
|
134
|
+
const event = insertGuardrailEvent(guardrailId, 'overridden', reason, null, dikLevel);
|
|
135
|
+
return event.id;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Mark an override as vindicated (user regretted it).
|
|
139
|
+
* This is gold for DIK.
|
|
140
|
+
*/
|
|
141
|
+
export function vindicateOverride(eventId, projectId) {
|
|
142
|
+
const dikData = getOrCreateProjectDik(projectId);
|
|
143
|
+
// Get the event to find the guardrail
|
|
144
|
+
const event = getGuardrailEvent(eventId);
|
|
145
|
+
if (event && event.event_type === 'overridden') {
|
|
146
|
+
insertGuardrailEvent(event.guardrail_id, 'vindicated', null, null, calculateDik(dikData));
|
|
147
|
+
incrementDikCounter(projectId, 'overrides_regretted');
|
|
148
|
+
}
|
|
149
|
+
// Recalculate and return new DIK level
|
|
150
|
+
const updatedDik = getOrCreateProjectDik(projectId);
|
|
151
|
+
return calculateDik(updatedDik);
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=enforcer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enforcer.js","sourceRoot":"","sources":["../../src/guardrails/enforcer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guardrails Module - DIK (Digital Interface Knowledge)
|
|
3
|
+
*
|
|
4
|
+
* A rules enforcement system that earns authority over time.
|
|
5
|
+
* The AI doesn't just remember - it has opinions, and those opinions are earned.
|
|
6
|
+
*/
|
|
7
|
+
export { calculateDik, getDikBreakdown, getDikTier, describeDikLevel, getPersonalityInjection, type DikBreakdown, } from './calculator.js';
|
|
8
|
+
export { analyzeProject, saveProposedRules, } from './analyzer.js';
|
|
9
|
+
export { checkGuardrails, acceptGuardrail, overrideGuardrail, vindicateOverride, } from './enforcer.js';
|
|
10
|
+
export { generateResponse, generateCombinedResponse, formatSeverityPrefix, } from './responder.js';
|
|
11
|
+
export { importLinterRules, type LinterConfig, type ImportedRule, } from './linter-import.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guardrails/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,uBAAuB,EACvB,KAAK,YAAY,GAClB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guardrails Module - DIK (Digital Interface Knowledge)
|
|
3
|
+
*
|
|
4
|
+
* A rules enforcement system that earns authority over time.
|
|
5
|
+
* The AI doesn't just remember - it has opinions, and those opinions are earned.
|
|
6
|
+
*/
|
|
7
|
+
// Calculator exports
|
|
8
|
+
export { calculateDik, getDikBreakdown, getDikTier, describeDikLevel, getPersonalityInjection, } from './calculator.js';
|
|
9
|
+
// Analyzer exports
|
|
10
|
+
export { analyzeProject, saveProposedRules, } from './analyzer.js';
|
|
11
|
+
// Enforcer exports
|
|
12
|
+
export { checkGuardrails, acceptGuardrail, overrideGuardrail, vindicateOverride, } from './enforcer.js';
|
|
13
|
+
// Responder exports
|
|
14
|
+
export { generateResponse, generateCombinedResponse, formatSeverityPrefix, } from './responder.js';
|
|
15
|
+
// Linter import exports
|
|
16
|
+
export { importLinterRules, } from './linter-import.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guardrails/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qBAAqB;AACrB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,uBAAuB,GAExB,MAAM,iBAAiB,CAAC;AAEzB,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,wBAAwB;AACxB,OAAO,EACL,iBAAiB,GAGlB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Linter Import
|
|
3
|
+
*
|
|
4
|
+
* Imports rules from existing linter configurations and converts them to guardrails.
|
|
5
|
+
* Supports: ESLint, RuboCop, Ruff/Black/isort (pyproject.toml), Prettier
|
|
6
|
+
*/
|
|
7
|
+
import type { Guardrail, GuardrailCategory } from '../types/index.js';
|
|
8
|
+
export interface LinterConfig {
|
|
9
|
+
type: string;
|
|
10
|
+
path: string;
|
|
11
|
+
rules: ImportedRule[];
|
|
12
|
+
}
|
|
13
|
+
export interface ImportedRule {
|
|
14
|
+
category: GuardrailCategory;
|
|
15
|
+
rule: string;
|
|
16
|
+
rationale: string;
|
|
17
|
+
source: string;
|
|
18
|
+
}
|
|
19
|
+
interface ImportResult {
|
|
20
|
+
configs: LinterConfig[];
|
|
21
|
+
totalRules: number;
|
|
22
|
+
saved: Guardrail[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Scan project for linter configs and import rules.
|
|
26
|
+
*/
|
|
27
|
+
export declare function importLinterRules(projectId: number, projectPath: string, options?: {
|
|
28
|
+
dryRun?: boolean;
|
|
29
|
+
}): ImportResult;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=linter-import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linter-import.d.ts","sourceRoot":"","sources":["../../src/guardrails/linter-import.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,YAAY,CA6Cd"}
|