hackmyagent 0.13.1 → 0.14.1

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 (63) hide show
  1. package/dist/.integrity-manifest.json +1 -1
  2. package/dist/attack/payloads/index.d.ts +2 -1
  3. package/dist/attack/payloads/index.d.ts.map +1 -1
  4. package/dist/attack/payloads/index.js +5 -1
  5. package/dist/attack/payloads/index.js.map +1 -1
  6. package/dist/attack/payloads/lifecycle.d.ts +11 -0
  7. package/dist/attack/payloads/lifecycle.d.ts.map +1 -0
  8. package/dist/attack/payloads/lifecycle.js +218 -0
  9. package/dist/attack/payloads/lifecycle.js.map +1 -0
  10. package/dist/attack/scanner.d.ts.map +1 -1
  11. package/dist/attack/scanner.js +1 -0
  12. package/dist/attack/scanner.js.map +1 -1
  13. package/dist/attack/types.d.ts +1 -1
  14. package/dist/attack/types.d.ts.map +1 -1
  15. package/dist/attack/types.js +5 -0
  16. package/dist/attack/types.js.map +1 -1
  17. package/dist/cli.js +1 -0
  18. package/dist/cli.js.map +1 -1
  19. package/dist/hardening/scanner.d.ts +6 -0
  20. package/dist/hardening/scanner.d.ts.map +1 -1
  21. package/dist/hardening/scanner.js +24 -0
  22. package/dist/hardening/scanner.js.map +1 -1
  23. package/dist/hardening/security-check.d.ts +58 -0
  24. package/dist/hardening/security-check.d.ts.map +1 -1
  25. package/dist/hardening/taxonomy.d.ts.map +1 -1
  26. package/dist/hardening/taxonomy.js +44 -0
  27. package/dist/hardening/taxonomy.js.map +1 -1
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +7 -2
  31. package/dist/index.js.map +1 -1
  32. package/dist/lifecycle/assembly-scanner.d.ts +42 -0
  33. package/dist/lifecycle/assembly-scanner.d.ts.map +1 -0
  34. package/dist/lifecycle/assembly-scanner.js +515 -0
  35. package/dist/lifecycle/assembly-scanner.js.map +1 -0
  36. package/dist/lifecycle/index.d.ts +11 -0
  37. package/dist/lifecycle/index.d.ts.map +1 -0
  38. package/dist/lifecycle/index.js +15 -0
  39. package/dist/lifecycle/index.js.map +1 -0
  40. package/dist/nanomind-core/analyzers/capability-analyzer.js +10 -10
  41. package/dist/nanomind-core/analyzers/capability-analyzer.js.map +1 -1
  42. package/dist/nanomind-core/analyzers/code-analyzer.js +5 -5
  43. package/dist/nanomind-core/analyzers/code-analyzer.js.map +1 -1
  44. package/dist/nanomind-core/analyzers/credential-analyzer.js +4 -4
  45. package/dist/nanomind-core/analyzers/credential-analyzer.js.map +1 -1
  46. package/dist/nanomind-core/analyzers/governance-analyzer.js +7 -7
  47. package/dist/nanomind-core/analyzers/governance-analyzer.js.map +1 -1
  48. package/dist/nanomind-core/analyzers/prompt-analyzer.js +9 -9
  49. package/dist/nanomind-core/analyzers/prompt-analyzer.js.map +1 -1
  50. package/dist/nanomind-core/analyzers/scope-analyzer.js +4 -4
  51. package/dist/nanomind-core/analyzers/scope-analyzer.js.map +1 -1
  52. package/dist/registry/index.d.ts +1 -0
  53. package/dist/registry/index.d.ts.map +1 -1
  54. package/dist/registry/index.js +5 -1
  55. package/dist/registry/index.js.map +1 -1
  56. package/dist/registry/publish.d.ts.map +1 -1
  57. package/dist/registry/publish.js +16 -0
  58. package/dist/registry/publish.js.map +1 -1
  59. package/dist/registry/remediation.d.ts +12 -0
  60. package/dist/registry/remediation.d.ts.map +1 -0
  61. package/dist/registry/remediation.js +70 -0
  62. package/dist/registry/remediation.js.map +1 -0
  63. package/package.json +1 -1
@@ -305,6 +305,12 @@ export declare class HardeningScanner {
305
305
  * Checks system prompts that mention exec/shell but lack credential protection instructions.
306
306
  */
307
307
  private checkAgentCredentialProtection;
308
+ /**
309
+ * Stage 1: Context lifecycle assembly checks.
310
+ * Simulates how the agent assembles its system prompt from multiple components
311
+ * and detects injections that only activate post-assembly.
312
+ */
313
+ private checkContextLifecycle;
308
314
  /** Helper: recursively find files in web-served directories */
309
315
  private findWebFiles;
310
316
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/hardening/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/hardening/scanner.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,7 @@ const path = __importStar(require("path"));
44
44
  const semantic_1 = require("../semantic");
45
45
  const taxonomy_1 = require("./taxonomy");
46
46
  const skill_context_1 = require("./skill-context");
47
+ const assembly_scanner_1 = require("../lifecycle/assembly-scanner");
47
48
  const skill_capability_validator_1 = require("./skill-capability-validator");
48
49
  /**
49
50
  * Defines which checks apply to which project types
@@ -124,6 +125,8 @@ const CHECK_PROJECT_TYPES = {
124
125
  'WEBEXPOSE-': ['all'], // Sensitive files in web-served directories
125
126
  'AGENT-CRED-': ['all'], // Missing credential protection in system prompts
126
127
  'SOUL-OVERRIDE-': ['all'], // Skill content overriding SOUL.md
128
+ // Context lifecycle checks (assembly-stage analysis)
129
+ 'LIFECYCLE-': ['all'],
127
130
  };
128
131
  // Patterns for detecting exposed credentials
129
132
  // Each pattern is carefully tuned to minimize false positives
@@ -479,6 +482,9 @@ class HardeningScanner {
479
482
  findings.push(...memSanitizeFindings);
480
483
  const agentCredFindings = await this.checkAgentCredentialProtection(targetDir, shouldFix);
481
484
  findings.push(...agentCredFindings);
485
+ // Context lifecycle assembly checks (Stage 1)
486
+ const lifecycleFindings = await this.checkContextLifecycle(targetDir, options);
487
+ findings.push(...lifecycleFindings);
482
488
  } // end of standard/deep checks
483
489
  // Enrich findings with attack taxonomy mapping
484
490
  (0, taxonomy_1.enrichWithTaxonomy)(findings);
@@ -8963,6 +8969,24 @@ dist/
8963
8969
  }
8964
8970
  return findings;
8965
8971
  }
8972
+ /**
8973
+ * Stage 1: Context lifecycle assembly checks.
8974
+ * Simulates how the agent assembles its system prompt from multiple components
8975
+ * and detects injections that only activate post-assembly.
8976
+ */
8977
+ async checkContextLifecycle(targetDir, options) {
8978
+ try {
8979
+ const result = await (0, assembly_scanner_1.scanAssembly)({
8980
+ targetDir,
8981
+ onProgress: options.onProgress,
8982
+ });
8983
+ return result.findings;
8984
+ }
8985
+ catch {
8986
+ // Assembly scan failure is non-fatal
8987
+ return [];
8988
+ }
8989
+ }
8966
8990
  /** Helper: recursively find files in web-served directories */
8967
8991
  async findWebFiles(dir, extensions, depth, rootDir) {
8968
8992
  if (depth > 3)