hackmyagent 0.9.3 → 0.9.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/soul/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,qCAAsF;AAA7E,sGAAA,WAAW,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AASlE,yCAA+C;AAAtC,6GAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/soul/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,qCAAuG;AAA9F,sGAAA,WAAW,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AAAE,0GAAA,eAAe,OAAA;AAWnF,yCAA+C;AAAtC,6GAAA,gBAAgB,OAAA"}
@@ -6,7 +6,11 @@
6
6
  */
7
7
  export type AgentTier = 'BASIC' | 'TOOL-USING' | 'AGENTIC' | 'MULTI-AGENT';
8
8
  export type SoulGrade = 'A' | 'B' | 'C' | 'D' | 'F';
9
+ /** Progress-oriented maturity level (replaces punitive letter grades in display). */
10
+ export type SoulLevel = 'hardened' | 'standard' | 'developing' | 'initial' | 'not-started';
9
11
  export type ConformanceLevel = 'none' | 'essential' | 'standard' | 'hardened';
12
+ /** Agent profile determines which governance domains are relevant. */
13
+ export type AgentProfile = 'conversational' | 'code-assistant' | 'tool-agent' | 'autonomous' | 'orchestrator' | 'custom';
10
14
  export interface ControlCheck {
11
15
  id: string;
12
16
  name: string;
@@ -21,6 +25,8 @@ export interface DomainResult {
21
25
  passed: number;
22
26
  total: number;
23
27
  percentage: number;
28
+ /** True when this domain was skipped due to agent profile filtering. */
29
+ skippedByProfile?: boolean;
24
30
  }
25
31
  export interface DeepAnalysisEntry {
26
32
  controlId: string;
@@ -31,15 +37,25 @@ export interface SoulScanResult {
31
37
  file: string | null;
32
38
  fileSize: number;
33
39
  agentTier: AgentTier;
40
+ tierForced: boolean;
41
+ /** Detected or forced agent profile. */
42
+ agentProfile: AgentProfile;
43
+ profileForced: boolean;
44
+ /** Domain IDs skipped due to profile filtering. */
45
+ skippedDomains: string[];
34
46
  domains: DomainResult[];
35
47
  score: number;
48
+ /** @deprecated Use `level` instead. Kept for backward compatibility. */
36
49
  grade: SoulGrade;
50
+ /** Progress-oriented maturity level. */
51
+ level: SoulLevel;
37
52
  conformance: ConformanceLevel;
38
53
  criticalFloor: boolean;
39
54
  criticalMissing: string[];
40
55
  totalControls: number;
41
56
  totalPassed: number;
42
57
  deepAnalysisResults?: DeepAnalysisEntry[];
58
+ deepAnalysisAvailable?: boolean;
43
59
  }
44
60
  export interface HardenResult {
45
61
  file: string;
@@ -59,9 +75,13 @@ interface ControlDef {
59
75
  critical?: boolean;
60
76
  /** Which tiers must satisfy this control. Empty means all tiers. */
61
77
  tiers: AgentTier[];
78
+ /** Short remediation text that naturally contains the control's keywords. */
79
+ remediation?: string;
62
80
  }
63
81
  declare const CONTROL_DEFS: ControlDef[];
64
82
  declare const DOMAIN_ORDER: string[];
83
+ /** Domain IDs that apply to each profile. */
84
+ declare const PROFILE_DOMAINS: Record<AgentProfile, number[]>;
65
85
  export declare class SoulScanner {
66
86
  /**
67
87
  * Find the governance file in a directory.
@@ -70,23 +90,35 @@ export declare class SoulScanner {
70
90
  findGovernanceFile(targetDir: string): string | null;
71
91
  /**
72
92
  * Detect agent tier by scanning governance file content and project files.
93
+ * Respects a `<!-- soul:tier=TIER -->` marker if present (prevents tier drift).
73
94
  */
74
95
  detectTier(targetDir: string, governanceContent: string): AgentTier;
96
+ /**
97
+ * Detect agent profile from governance content.
98
+ * Respects a `<!-- soul:profile=PROFILE -->` marker if present.
99
+ */
100
+ detectProfile(governanceContent: string): AgentProfile;
75
101
  /**
76
102
  * Check if content matches any keyword for a control.
77
103
  * Case-insensitive substring match.
78
104
  */
79
- private checkControl;
105
+ checkControl(content: string, def: ControlDef): boolean;
80
106
  /**
81
107
  * LLM-powered semantic analysis for a single control.
82
108
  * Uses claude CLI first, falls back to Anthropic API.
83
109
  * Returns true if the LLM determines the content addresses the control.
84
110
  */
111
+ private isLlmAvailable;
85
112
  private analyzeControlDeep;
86
113
  /**
87
114
  * Calculate grade from score, applying critical floor if needed.
115
+ * @deprecated Use calculateLevel() for display; grade kept for backward compat.
88
116
  */
89
117
  private calculateGrade;
118
+ /**
119
+ * Calculate progress-oriented maturity level.
120
+ */
121
+ private calculateLevel;
90
122
  /**
91
123
  * Calculate conformance level based on score and critical control status.
92
124
  * none: one or more critical controls are missing
@@ -96,7 +128,7 @@ export declare class SoulScanner {
96
128
  */
97
129
  private calculateConformance;
98
130
  /**
99
- * Return the subset of controls applicable to a given agent tier.
131
+ * Return the subset of controls applicable to a given agent tier and profile.
100
132
  */
101
133
  private applicableControls;
102
134
  /**
@@ -105,14 +137,18 @@ export declare class SoulScanner {
105
137
  scanSoul(targetDir: string, options?: {
106
138
  verbose?: boolean;
107
139
  tier?: string;
140
+ profile?: string;
108
141
  deepAnalysis?: boolean;
109
142
  }): Promise<SoulScanResult>;
110
143
  /**
111
144
  * Generate or update SOUL.md with missing governance sections.
145
+ * Supports iterative hardening: if a domain heading exists but controls
146
+ * are failing, appends targeted remediation for those controls.
112
147
  */
113
148
  hardenSoul(targetDir: string, options?: {
114
149
  dryRun?: boolean;
150
+ profile?: string;
115
151
  }): Promise<HardenResult>;
116
152
  }
117
- export { CONTROL_DEFS, DOMAIN_ORDER, GOVERNANCE_FILES };
153
+ export { CONTROL_DEFS, DOMAIN_ORDER, GOVERNANCE_FILES, PROFILE_DOMAINS };
118
154
  //# sourceMappingURL=scanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/soul/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/soul/scanner.ts"],"names":[],"mappings":"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"}