heron-ai 0.2.2 → 0.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 (85) hide show
  1. package/dist/bin/heron.js +31 -2
  2. package/dist/bin/heron.js.map +1 -1
  3. package/dist/src/analysis/analyzer.d.ts +1 -1
  4. package/dist/src/analysis/analyzer.d.ts.map +1 -1
  5. package/dist/src/analysis/analyzer.js +120 -6
  6. package/dist/src/analysis/analyzer.js.map +1 -1
  7. package/dist/src/analysis/risk-scorer.d.ts +32 -0
  8. package/dist/src/analysis/risk-scorer.d.ts.map +1 -1
  9. package/dist/src/analysis/risk-scorer.js +134 -0
  10. package/dist/src/analysis/risk-scorer.js.map +1 -1
  11. package/dist/src/commands/diff.d.ts +17 -0
  12. package/dist/src/commands/diff.d.ts.map +1 -0
  13. package/dist/src/commands/diff.js +63 -0
  14. package/dist/src/commands/diff.js.map +1 -0
  15. package/dist/src/compliance/control-mappings.d.ts +21 -0
  16. package/dist/src/compliance/control-mappings.d.ts.map +1 -0
  17. package/dist/src/compliance/control-mappings.js +182 -0
  18. package/dist/src/compliance/control-mappings.js.map +1 -0
  19. package/dist/src/compliance/frameworks.d.ts +24 -0
  20. package/dist/src/compliance/frameworks.d.ts.map +1 -0
  21. package/dist/src/compliance/frameworks.js +55 -0
  22. package/dist/src/compliance/frameworks.js.map +1 -0
  23. package/dist/src/compliance/index.d.ts +9 -0
  24. package/dist/src/compliance/index.d.ts.map +1 -0
  25. package/dist/src/compliance/index.js +8 -0
  26. package/dist/src/compliance/index.js.map +1 -0
  27. package/dist/src/compliance/mapper.d.ts +126 -0
  28. package/dist/src/compliance/mapper.d.ts.map +1 -0
  29. package/dist/src/compliance/mapper.js +443 -0
  30. package/dist/src/compliance/mapper.js.map +1 -0
  31. package/dist/src/compliance/types.d.ts +120 -0
  32. package/dist/src/compliance/types.d.ts.map +1 -0
  33. package/dist/src/compliance/types.js +99 -0
  34. package/dist/src/compliance/types.js.map +1 -0
  35. package/dist/src/diff/differ.d.ts +9 -0
  36. package/dist/src/diff/differ.d.ts.map +1 -0
  37. package/dist/src/diff/differ.js +52 -0
  38. package/dist/src/diff/differ.js.map +1 -0
  39. package/dist/src/interview/interviewer.d.ts +2 -0
  40. package/dist/src/interview/interviewer.d.ts.map +1 -1
  41. package/dist/src/interview/interviewer.js.map +1 -1
  42. package/dist/src/interview/protocol.d.ts.map +1 -1
  43. package/dist/src/interview/protocol.js +28 -5
  44. package/dist/src/interview/protocol.js.map +1 -1
  45. package/dist/src/interview/questions.d.ts.map +1 -1
  46. package/dist/src/interview/questions.js +55 -0
  47. package/dist/src/interview/questions.js.map +1 -1
  48. package/dist/src/llm/client.d.ts +26 -1
  49. package/dist/src/llm/client.d.ts.map +1 -1
  50. package/dist/src/llm/client.js +108 -15
  51. package/dist/src/llm/client.js.map +1 -1
  52. package/dist/src/llm/prompts.d.ts +27 -1
  53. package/dist/src/llm/prompts.d.ts.map +1 -1
  54. package/dist/src/llm/prompts.js +133 -1
  55. package/dist/src/llm/prompts.js.map +1 -1
  56. package/dist/src/report/generator.d.ts +1 -7
  57. package/dist/src/report/generator.d.ts.map +1 -1
  58. package/dist/src/report/generator.js +47 -236
  59. package/dist/src/report/generator.js.map +1 -1
  60. package/dist/src/report/templates.d.ts +2 -1
  61. package/dist/src/report/templates.d.ts.map +1 -1
  62. package/dist/src/report/templates.js +436 -84
  63. package/dist/src/report/templates.js.map +1 -1
  64. package/dist/src/report/types.d.ts +34 -19
  65. package/dist/src/report/types.d.ts.map +1 -1
  66. package/dist/src/report/types.js +8 -4
  67. package/dist/src/report/types.js.map +1 -1
  68. package/dist/src/server/index.d.ts +1 -1
  69. package/dist/src/server/index.d.ts.map +1 -1
  70. package/dist/src/server/index.js +212 -55
  71. package/dist/src/server/index.js.map +1 -1
  72. package/dist/src/server/sessions.d.ts +10 -0
  73. package/dist/src/server/sessions.d.ts.map +1 -1
  74. package/dist/src/server/sessions.js +73 -9
  75. package/dist/src/server/sessions.js.map +1 -1
  76. package/dist/src/util/provided.d.ts +49 -0
  77. package/dist/src/util/provided.d.ts.map +1 -0
  78. package/dist/src/util/provided.js +83 -0
  79. package/dist/src/util/provided.js.map +1 -0
  80. package/dist/src/util/systems.d.ts +15 -0
  81. package/dist/src/util/systems.d.ts.map +1 -0
  82. package/dist/src/util/systems.js +41 -0
  83. package/dist/src/util/systems.js.map +1 -0
  84. package/package.json +1 -1
  85. package/skills/heron-audit/bin/heron-update-check +13 -4
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Typed primitives for framework-anchored risk scoring.
3
+ *
4
+ * Structure:
5
+ * types.ts — pure types + enums + MAPPING_VERSION
6
+ * frameworks.ts — framework metadata registry
7
+ * control-mappings.ts — finding → controls table
8
+ * mapper.ts — signal detection + finding → flag projection
9
+ *
10
+ * Scope (post-scope-cut 2026-04-23; + AIUC-1 added 2026-04-24; + NIST AI RMF
11
+ * restored 2026-04-24):
12
+ * - EU AI Act (consolidated — single entry with Annex III classification scope)
13
+ * - GDPR
14
+ * - ISO/IEC 42001 (currently full standard; Annex-A-only subset planned)
15
+ * - AIUC-1 (agent-native standard, pinned to Q2-2026 release 2026-04-15)
16
+ * - NIST AI RMF (US-origin voluntary risk-management framework; GOVERN/MAP/MEASURE/MANAGE)
17
+ *
18
+ * Dropped from OSS v1 (kept in git history for restoration):
19
+ * - UK GDPR / DPA 2018
20
+ * - Colorado AI Act (SB 24-205)
21
+ * - HIPAA
22
+ * - CCPA / CPRA
23
+ * - ISO/IEC 23894
24
+ * - SOC 2
25
+ * - eu-ai-act-high-risk (merged into eu-ai-act with per-control annexIII tag)
26
+ *
27
+ * Rationale: see Linear AAP-42 (scope cut) + AAP-44 (AIUC-1). NIST AI RMF was
28
+ * cut in AAP-42 but restored on user demand — it is the most widely-referenced
29
+ * voluntary AI risk-management framework in US enterprise procurement.
30
+ * Jurisdiction-specific statutes and general AI management frameworks move
31
+ * to the paid/cloud tier.
32
+ *
33
+ * Mappings are INDICATIVE — they surface which framework clauses a finding
34
+ * typically activates, not a certification that the controls are satisfied.
35
+ */
36
+ // ─── Risk categories ────────────────────────────────────────────────────────
37
+ export const RISK_CATEGORIES = [
38
+ 'privacy',
39
+ 'ip',
40
+ 'consumer-protection',
41
+ 'sector-specific',
42
+ ];
43
+ // ─── Framework tier & IDs ───────────────────────────────────────────────────
44
+ export const FRAMEWORK_TIERS = ['mandatory', 'voluntary'];
45
+ /**
46
+ * OSS v1 framework set. See file header for scope rationale.
47
+ */
48
+ export const FRAMEWORK_IDS = [
49
+ // ── Mandatory, EU-wide ───────────────────────────────────────────────────
50
+ 'eu-ai-act',
51
+ 'gdpr',
52
+ // ── Voluntary / best-practice ────────────────────────────────────────────
53
+ 'iso-42001',
54
+ 'aiuc-1',
55
+ 'nist-ai-rmf',
56
+ ];
57
+ export const JURISDICTIONS = ['EU', 'UK', 'US', 'global'];
58
+ // ─── EU AI Act classification ───────────────────────────────────────────────
59
+ /**
60
+ * EU AI Act risk classification for the audited agent.
61
+ *
62
+ * Replaces the prior two-entry split (`eu-ai-act` + `eu-ai-act-high-risk`):
63
+ * now a single framework entry carries a classification computed from the
64
+ * detected signals, and individual controls opt in or out of the high-risk
65
+ * tier via the `annexIII` flag on FrameworkControl.
66
+ */
67
+ export const EU_AI_ACT_CLASSIFICATIONS = [
68
+ 'prohibited',
69
+ 'high-risk',
70
+ 'limited',
71
+ 'minimal',
72
+ 'unclassified',
73
+ ];
74
+ // ─── Finding types ──────────────────────────────────────────────────────────
75
+ export const FINDING_TYPES = [
76
+ 'excessive-access',
77
+ 'write-risk',
78
+ 'sensitive-data',
79
+ 'scope-creep',
80
+ 'regulatory-flags',
81
+ 'risk-score',
82
+ 'decisions-about-people',
83
+ ];
84
+ // ─── Mapping metadata ───────────────────────────────────────────────────────
85
+ /**
86
+ * Version tag for the control-mapping dataset. Bump when the mapping table
87
+ * is materially updated so downstream consumers can detect staleness.
88
+ *
89
+ * History:
90
+ * aap-30.2026-04-09 — initial AAP-30 mapping (ISO 23894, NIST AI RMF, EU AI Act, GDPR, SOC 2)
91
+ * aap-31.2026-04-15 — AAP-31 restored jurisdiction-specific frameworks (Colorado AI Act, HIPAA, CCPA/CPRA, UK GDPR/DPA 2018)
92
+ * aap-42.2026-04-23 — AAP-42 scope cut: dropped 7 jurisdiction-specific / voluntary frameworks; consolidated EU AI Act split into single entry with Annex III classification
93
+ * aap-43.2026-04-24 — AAP-43 audit-quality pass: determinism, NOT_PROVIDED scrub, conditional GDPR, Annex III employment gating, overall-status label, adversarial probing
94
+ * aap-44.2026-04-24 — AAP-44 added AIUC-1 (Q2-2026 release, pinned to 2026-04-15); 16 controls across 4 finding-types; 3 new architecture signals (hasMCPOrA2A, hasSubAgents, hasCrossCustomer); per-control gatedBy filter
95
+ * nist-restore.2026-04-24 — Restored NIST AI RMF as voluntary framework (widely-referenced US-origin AI risk-management framework); GOVERN/MAP/MEASURE/MANAGE controls across 6 finding-types
96
+ */
97
+ export const MAPPING_VERSION = 'nist-restore.2026-04-24';
98
+ // build-cache-bust: 2026-04-24T00:00:00Z — NIST AI RMF restoration
99
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/compliance/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,SAAS;IACT,IAAI;IACJ,qBAAqB;IACrB,iBAAiB;CACT,CAAC;AAGX,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,WAAW,EAAE,WAAW,CAAU,CAAC;AAGnE;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,4EAA4E;IAC5E,WAAW;IACX,MAAM;IACN,4EAA4E;IAC5E,WAAW;IACX,QAAQ;IACR,aAAa;CACL,CAAC;AAGX,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAU,CAAC;AAoBnE,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,YAAY;IACZ,WAAW;IACX,SAAS;IACT,SAAS;IACT,cAAc;CACN,CAAC;AAGX,+EAA+E;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,kBAAkB;IAClB,YAAY;IACZ,gBAAgB;IAChB,aAAa;IACb,kBAAkB;IAClB,YAAY;IACZ,wBAAwB;CAChB,CAAC;AAuCX,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,yBAAkC,CAAC;AAClE,mEAAmE"}
@@ -0,0 +1,9 @@
1
+ import type { LLMClient } from '../llm/client.js';
2
+ /**
3
+ * Compare two Heron audit reports (markdown) via one LLM call and return the
4
+ * LLM's markdown diff. Retries once on sanity-check failure or thrown error.
5
+ * Throws after double failure — no silent fallback (matches `analyzer.ts`
6
+ * behavior rationale for a user-facing operation).
7
+ */
8
+ export declare function diffReports(oldReport: string, newReport: string, llmClient: LLMClient): Promise<string>;
9
+ //# sourceMappingURL=differ.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"differ.d.ts","sourceRoot":"","sources":["../../../src/diff/differ.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAOlD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,MAAM,CAAC,CAoBjB"}
@@ -0,0 +1,52 @@
1
+ import { DIFF_SYSTEM_PROMPT, buildDiffPrompt } from '../llm/prompts.js';
2
+ import * as logger from '../util/logger.js';
3
+ /** Headings that a well-formed diff must contain at least one of. */
4
+ const EXPECTED_HEADINGS = ['## Summary', '## Resolved', '## Added'];
5
+ /**
6
+ * Compare two Heron audit reports (markdown) via one LLM call and return the
7
+ * LLM's markdown diff. Retries once on sanity-check failure or thrown error.
8
+ * Throws after double failure — no silent fallback (matches `analyzer.ts`
9
+ * behavior rationale for a user-facing operation).
10
+ */
11
+ export async function diffReports(oldReport, newReport, llmClient) {
12
+ const userPrompt = buildDiffPrompt(oldReport, newReport);
13
+ // Attempt 1
14
+ let result = await tryDiff(llmClient, userPrompt);
15
+ // Attempt 2 (retry) if first failed
16
+ if (!result) {
17
+ logger.warn('First diff attempt failed sanity check, retrying...');
18
+ result = await tryDiff(llmClient, userPrompt);
19
+ }
20
+ if (!result) {
21
+ throw new Error('Diff generation failed: the LLM did not return well-formed diff markdown after two attempts. ' +
22
+ 'The reports may be empty, non-Heron, or the LLM is misbehaving.');
23
+ }
24
+ return result;
25
+ }
26
+ async function tryDiff(llmClient, userPrompt) {
27
+ try {
28
+ const response = await llmClient.chat(DIFF_SYSTEM_PROMPT, userPrompt);
29
+ const stripped = stripFences(response);
30
+ if (!passesSanityCheck(stripped))
31
+ return null;
32
+ return stripped;
33
+ }
34
+ catch (e) {
35
+ logger.warn(`Diff attempt failed: ${e instanceof Error ? e.message : String(e)}`);
36
+ return null;
37
+ }
38
+ }
39
+ /** Strip surrounding ``` or ```markdown fences, trim whitespace. */
40
+ function stripFences(text) {
41
+ let t = text.trim();
42
+ if (t.startsWith('```')) {
43
+ t = t.replace(/^```(?:markdown|md)?\n?/, '').replace(/\n?```$/, '');
44
+ }
45
+ return t.trim();
46
+ }
47
+ function passesSanityCheck(text) {
48
+ if (!text)
49
+ return false;
50
+ return EXPECTED_HEADINGS.some((h) => text.includes(h));
51
+ }
52
+ //# sourceMappingURL=differ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"differ.js","sourceRoot":"","sources":["../../../src/diff/differ.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,qEAAqE;AACrE,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,SAAiB,EACjB,SAAoB;IAEpB,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEzD,YAAY;IACZ,IAAI,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAElD,oCAAoC;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACnE,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,+FAA+F;YAC7F,iEAAiE,CACpE,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,SAAoB,EAAE,UAAkB;IAC7D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC"}
@@ -10,6 +10,8 @@ export interface InterviewSession {
10
10
  startedAt: Date;
11
11
  completedAt: Date;
12
12
  questionsAsked: number;
13
+ /** Optional session identifier — used to derive deterministic LLM seed. */
14
+ id?: string;
13
15
  }
14
16
  /**
15
17
  * Runs a structured interview with a target agent.
@@ -1 +1 @@
1
- {"version":3,"file":"interviewer.d.ts","sourceRoot":"","sources":["../../../src/interview/interviewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,EAAE,IAAI,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CAyE3B"}
1
+ {"version":3,"file":"interviewer.d.ts","sourceRoot":"","sources":["../../../src/interview/interviewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,EAAE,IAAI,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CAyE3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"interviewer.js","sourceRoot":"","sources":["../../../src/interview/interviewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interviewer.js","sourceRoot":"","sources":["../../../src/interview/interviewer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/interview/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAG/E,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,YAAY,IAAI,iBAAiB,GAAG,IAAI,CAAC;IAEzC,+EAA+E;IAC/E,YAAY,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEnE,mFAAmF;IACnF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAElF,qCAAqC;IACrC,aAAa,IAAI,MAAM,EAAE,CAAC;IAE1B,yCAAyC;IACzC,UAAU,IAAI,OAAO,CAAC;IAEtB,4DAA4D;IAC5D,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAiBD,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAKlD;AAsCD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAuBlF;AA8BD,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAgED,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,SAAI,GAAG,iBAAiB,CA2HxF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAO9F"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/interview/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAS/E,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,YAAY,IAAI,iBAAiB,GAAG,IAAI,CAAC;IAEzC,+EAA+E;IAC/E,YAAY,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEnE,mFAAmF;IACnF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAElF,qCAAqC;IACrC,aAAa,IAAI,MAAM,EAAE,CAAC;IAE1B,yCAAyC;IACzC,UAAU,IAAI,OAAO,CAAC;IAEtB,4DAA4D;IAC5D,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAiBD,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAKlD;AAsCD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAuBlF;AA8BD,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAgED,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,SAAI,GAAG,iBAAiB,CAmJxF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAO9F"}
@@ -1,5 +1,5 @@
1
1
  import { getAllQuestionsSorted } from './questions.js';
2
- import { INTERVIEW_SYSTEM_PROMPT, buildFollowUpPrompt } from '../llm/prompts.js';
2
+ import { INTERVIEW_SYSTEM_PROMPT, buildFollowUpPrompt, detectAdversarialClaim, buildAdversarialProbePrompt, } from '../llm/prompts.js';
3
3
  // ─── Greeting detection ──────────────────────────────────────────────────────
4
4
  const GREETING_PATTERNS = [
5
5
  /^hi\b/i,
@@ -177,6 +177,11 @@ export function createProtocol(llmClient, maxFollowUps = 6) {
177
177
  const transcript = [];
178
178
  let globalFollowUpCount = 0;
179
179
  const followUpCountPerQuestion = new Map();
180
+ // AAP-43 P3 #10/#11: limit adversarial probes per session so the
181
+ // conversation doesn't devolve into interrogation.
182
+ let adversarialProbeCount = 0;
183
+ const MAX_ADVERSARIAL_PROBES = 2;
184
+ const probedClaimKinds = new Set();
180
185
  let repeatedAnswerCount = 0;
181
186
  // Follow-up queue
182
187
  const followUpQueue = [];
@@ -244,19 +249,37 @@ export function createProtocol(llmClient, maxFollowUps = 6) {
244
249
  const vague = isVagueAnswer(lastAnswer);
245
250
  // Find missing compliance fields across all transcript
246
251
  const missingFields = findMissingFields(transcript);
247
- // Only generate follow-up if answer was vague or compliance fields are missing
248
- if (!vague && missingFields.length === 0)
252
+ // AAP-43 P3: scan recent answers for adversarial-claim opportunities
253
+ // (HITL, narrow-scope claim, monitored, deletion policy, etc.). If
254
+ // one is detected and we haven't exhausted the per-session budget,
255
+ // prefer an adversarial probe over a generic vagueness follow-up.
256
+ const recentText = transcript.slice(-4).map((qa) => qa.answer).join(' \n ');
257
+ const adversarialClaim = adversarialProbeCount < MAX_ADVERSARIAL_PROBES
258
+ ? detectAdversarialClaim(recentText)
259
+ : null;
260
+ const isNewClaim = adversarialClaim !== null && !probedClaimKinds.has(adversarialClaim.kind);
261
+ // Only generate follow-up if answer was vague, fields are missing,
262
+ // or a new adversarial claim was detected
263
+ if (!vague && missingFields.length === 0 && !isNewClaim)
249
264
  return null;
250
265
  try {
251
- const followUpText = await llmClient.chat(INTERVIEW_SYSTEM_PROMPT, buildFollowUpPrompt(category, categoryQA, missingFields.length > 0 ? missingFields : undefined));
266
+ const prompt = isNewClaim && adversarialClaim
267
+ ? buildAdversarialProbePrompt(adversarialClaim.kind, adversarialClaim.probe, categoryQA)
268
+ : buildFollowUpPrompt(category, categoryQA, missingFields.length > 0 ? missingFields : undefined);
269
+ const followUpText = await llmClient.chat(INTERVIEW_SYSTEM_PROMPT, prompt);
252
270
  if (!followUpText.trim())
253
271
  return null;
254
272
  globalFollowUpCount++;
255
273
  if (lastCoreQ) {
256
274
  followUpCountPerQuestion.set(lastCoreQ.id, (followUpCountPerQuestion.get(lastCoreQ.id) ?? 0) + 1);
257
275
  }
276
+ if (isNewClaim && adversarialClaim) {
277
+ adversarialProbeCount++;
278
+ probedClaimKinds.add(adversarialClaim.kind);
279
+ }
280
+ const idPrefix = isNewClaim && adversarialClaim ? `probe_${adversarialClaim.kind}` : `followup_${category}`;
258
281
  const followUp = {
259
- id: `followup_${category}_${globalFollowUpCount}`,
282
+ id: `${idPrefix}_${globalFollowUpCount}`,
260
283
  category,
261
284
  text: followUpText.trim(),
262
285
  priority: 100 + globalFollowUpCount,
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/interview/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/interview/protocol.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../../src/interview/questions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,iBAAiB,EA4H7C,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,iBAAiB,EAAE,CAGxF;AAED,wBAAgB,qBAAqB,IAAI,iBAAiB,EAAE,CAE3D"}
1
+ {"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../../src/interview/questions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,iBAAiB,EAyL7C,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,iBAAiB,EAAE,CAGxF;AAED,wBAAgB,qBAAqB,IAAI,iBAAiB,EAAE,CAE3D"}
@@ -120,6 +120,61 @@ moderating user content, granting/denying access, evaluating employee performanc
120
120
  If yes, describe: what kind of decision, who is affected, and is a human involved before the final decision?`,
121
121
  priority: 10,
122
122
  },
123
+ // ── AAP-44 — AIUC-1 (Q2-2026) self-observable agent-architecture probes ──
124
+ // Each extracts only facts the agent can know about itself (identity,
125
+ // deployment topology, tools, connections, upstream providers). Org-policy
126
+ // gaps (DPA, accountability owner, annual review) are surfaced in the
127
+ // report via control notes for human reviewers, not asked of the agent.
128
+ // 11. Agent identity (NHI) — signal for A003.3 / A003.4
129
+ {
130
+ id: 'agent_identity',
131
+ category: 'access',
132
+ complianceField: 'agentIdentity',
133
+ text: `Do you have your OWN identity (a dedicated service account, non-human identity, or API key), or do you act using credentials passed in by the invoking user?
134
+ 1. If you have your own identity, what is its name or label?
135
+ 2. When you call another system, whose credentials go with that call — yours or the user's?`,
136
+ priority: 11,
137
+ },
138
+ // 12. Cross-customer isolation — signal for A005, triggers hasCrossCustomer
139
+ {
140
+ id: 'cross_customer_isolation',
141
+ category: 'data',
142
+ complianceField: 'customerIsolation',
143
+ text: `Does a single deployment of you serve more than one customer, or is each customer isolated in their own deployment?
144
+ 1. If multi-customer: when you process data for customer A, what mechanism prevents customer B from seeing it later?
145
+ 2. Do you have persistent memory, cache, or context that survives between customers' sessions?`,
146
+ priority: 12,
147
+ },
148
+ // 13. Sub-agents / tool-chaining — signal for D003 + E015.2, triggers hasSubAgents
149
+ {
150
+ id: 'sub_agents_tools',
151
+ category: 'writes',
152
+ complianceField: 'subAgentsAndTools',
153
+ text: `List every tool, function, or sub-agent you can invoke at runtime.
154
+ 1. For each one, describe what it does and when you call it.
155
+ 2. Is the set of tools fixed at deploy time, or can you discover and use new tools at runtime?`,
156
+ priority: 13,
157
+ },
158
+ // 14. MCP / A2A security — signal for B008.2, triggers hasMCPOrA2A
159
+ {
160
+ id: 'mcp_a2a_auth',
161
+ category: 'access',
162
+ complianceField: 'mcpA2aSecurity',
163
+ text: `Do you talk to any MCP servers or other AI agents (A2A) at runtime?
164
+ 1. For each connection: how do you authenticate — static token, mTLS, signed request, or something else?
165
+ 2. Do you treat responses from those servers/agents as data, or as instructions you will act on? What, if anything, would stop a compromised server from changing your behaviour?`,
166
+ priority: 14,
167
+ },
168
+ // 15. Upstream model + APIs — signal for A001 (input data policy)
169
+ {
170
+ id: 'upstream_model_and_apis',
171
+ category: 'data',
172
+ complianceField: 'upstreamProviders',
173
+ text: `Which foundation model powers your reasoning, and which third-party services or APIs do you call?
174
+ 1. For each: what kind of data do you send to it — prompts, user inputs, PII, business secrets?
175
+ 2. Do any of your responses or decisions depend on outputs from those external services?`,
176
+ priority: 15,
177
+ },
123
178
  ];
124
179
  export function getQuestionsByCategory(category) {
125
180
  return CORE_QUESTIONS.filter(q => q.category === category)
@@ -1 +1 @@
1
- {"version":3,"file":"questions.js","sourceRoot":"","sources":["../../../src/interview/questions.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB;IACjD,0DAA0D;IAC1D;QACE,EAAE,EAAE,gBAAgB;QACpB,QAAQ,EAAE,SAAS;QACnB,eAAe,EAAE,cAAc;QAC/B,IAAI,EAAE;;;;;;2EAMiE;QACvE,QAAQ,EAAE,CAAC;KACZ;IAED,mDAAmD;IACnD;QACE,EAAE,EAAE,cAAc;QAClB,QAAQ,EAAE,MAAM;QAChB,eAAe,EAAE,UAAU;QAC3B,IAAI,EAAE;;;;yGAI+F;QACrG,QAAQ,EAAE,CAAC;KACZ;IAED,4BAA4B;IAC5B;QACE,EAAE,EAAE,gBAAgB;QACpB,QAAQ,EAAE,QAAQ;QAClB,eAAe,EAAE,iBAAiB;QAClC,IAAI,EAAE;;;oEAG0D;QAChE,QAAQ,EAAE,CAAC;KACZ;IAED,iCAAiC;IACjC;QACE,EAAE,EAAE,kBAAkB;QACtB,QAAQ,EAAE,MAAM;QAChB,eAAe,EAAE,iBAAiB;QAClC,IAAI,EAAE;;;4FAGkF;QACxF,QAAQ,EAAE,CAAC;KACZ;IAED,4CAA4C;IAC5C;QACE,EAAE,EAAE,kBAAkB;QACtB,QAAQ,EAAE,QAAQ;QAClB,eAAe,EAAE,iBAAiB;QAClC,IAAI,EAAE;;;;yDAI+C;QACrD,QAAQ,EAAE,CAAC;KACZ;IAED,kBAAkB;IAClB;QACE,EAAE,EAAE,cAAc;QAClB,QAAQ,EAAE,QAAQ;QAClB,eAAe,EAAE,aAAa;QAC9B,IAAI,EAAE;;;qBAGW;QACjB,QAAQ,EAAE,CAAC;KACZ;IAED,0BAA0B;IAC1B;QACE,EAAE,EAAE,kBAAkB;QACtB,QAAQ,EAAE,WAAW;QACrB,eAAe,EAAE,oBAAoB;QACrC,IAAI,EAAE;;;sEAG4D;QAClE,QAAQ,EAAE,CAAC;KACZ;IAED,wBAAwB;IACxB;QACE,EAAE,EAAE,oBAAoB;QACxB,QAAQ,EAAE,QAAQ;QAClB,eAAe,EAAE,aAAa;QAC9B,IAAI,EAAE;;mCAEyB;QAC/B,QAAQ,EAAE,CAAC;KACZ;IAED,4BAA4B;IAC5B;QACE,EAAE,EAAE,YAAY;QAChB,QAAQ,EAAE,QAAQ;QAClB,eAAe,EAAE,gBAAgB;QACjC,IAAI,EAAE;;4FAEkF;QACxF,QAAQ,EAAE,CAAC;KACZ;IAED,oEAAoE;IACpE;QACE,EAAE,EAAE,iBAAiB;QACrB,QAAQ,EAAE,SAAS;QACnB,eAAe,EAAE,gBAAgB;QACjC,IAAI,EAAE;;;;6GAImG;QACzG,QAAQ,EAAE,EAAE;KACb;CACF,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,QAA4B;IACjE,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;SACvD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"questions.js","sourceRoot":"","sources":["../../../src/interview/questions.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,32 @@
1
1
  import type { LLMConfig } from '../config/schema.js';
2
+ export interface LLMChatOpts {
3
+ /**
4
+ * Stable integer seed for deterministic sampling. OpenAI and Gemini honor
5
+ * this; Anthropic ignores (no seed parameter as of 2026-04, greedy
6
+ * sampling at temperature=0 is the determinism guarantee instead).
7
+ */
8
+ deterministicSeed?: number;
9
+ /**
10
+ * When true, instruct the provider to return syntactically valid JSON.
11
+ * - OpenAI: sets `response_format: { type: 'json_object' }` (requires the
12
+ * prompt to contain the word "json", which our analyzer prompts do).
13
+ * - Gemini: sets `responseMimeType: 'application/json'`.
14
+ * - Anthropic: no explicit JSON mode; prompt already constrains output.
15
+ *
16
+ * Callers that parse the response as JSON (e.g. the transcript analyzer)
17
+ * should set this to `true`. Callers that expect free-form text (e.g.
18
+ * follow-up question generation) must leave it `false`.
19
+ */
20
+ jsonMode?: boolean;
21
+ }
2
22
  export interface LLMClient {
3
- chat(systemPrompt: string, userMessage: string): Promise<string>;
23
+ chat(systemPrompt: string, userMessage: string, opts?: LLMChatOpts): Promise<string>;
4
24
  }
25
+ /**
26
+ * Hash an arbitrary session identifier into a stable 31-bit positive integer
27
+ * suitable for `seed` parameters. Deterministic across runs.
28
+ */
29
+ export declare function seedFromSessionId(sessionId: string): number;
5
30
  /**
6
31
  * Create an LLM client. Resolves API key in this order:
7
32
  * 1. Explicit config.apiKey (from --llm-key flag or config file)
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/llm/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClE;AA0GD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAuD3E"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/llm/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAKD,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO3D;AAwJD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAwF3E"}