@nexrall/code-core 1.4.50 → 1.4.51
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/dist/agent/audit.d.ts +154 -0
- package/dist/agent/audit.d.ts.map +1 -0
- package/dist/agent/audit.js +199 -0
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +47 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit trail — a tamper-*visible* record of every tool call an agent makes.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS
|
|
5
|
+
*
|
|
6
|
+
* Regulated buyers (finance first, but the same applies to healthcare/legal) do
|
|
7
|
+
* not reject agents for being unintelligent — they reject them for being
|
|
8
|
+
* UNAUDITABLE. The single most common finance-side audit finding in 2026 is an
|
|
9
|
+
* AI touching business data through a service account with no record of which
|
|
10
|
+
* HUMAN initiated the work, which fails SOX's individual-attribution standard.
|
|
11
|
+
* The remedy auditors name is "dual attribution": log the machine identity AND
|
|
12
|
+
* the authenticated human, together, per action.
|
|
13
|
+
*
|
|
14
|
+
* So this module records, for every tool call: what ran, who (agent) ran it, on
|
|
15
|
+
* whose behalf (human, supplied by the host), what the arguments were, and what
|
|
16
|
+
* came back — including calls that were BLOCKED and never executed, which is
|
|
17
|
+
* exactly what a security reviewer wants to see.
|
|
18
|
+
*
|
|
19
|
+
* WHAT IT DELIBERATELY IS NOT
|
|
20
|
+
*
|
|
21
|
+
* It does not make the agent correct, and it is not a data lake: outputs are
|
|
22
|
+
* truncated to a summary. It proves what happened; domain correctness is the
|
|
23
|
+
* job of skills/sub-agent definitions, not of this file.
|
|
24
|
+
*
|
|
25
|
+
* See docs/NEXRALL_AUDIT_TRAIL_LAYER.md (in the Nexrall repo) for the full
|
|
26
|
+
* design, including why the recording point is the loop's per-round result
|
|
27
|
+
* iteration rather than the onToolUse/onToolResult callbacks (short version:
|
|
28
|
+
* those are re-emitted upward by sub-agents, so auditing them double-counts
|
|
29
|
+
* every nested call, at a rate that varies with depth).
|
|
30
|
+
*/
|
|
31
|
+
/** How the tool call ended. `blocked` = refused before execution. */
|
|
32
|
+
export type AuditOutcome = 'ok' | 'error' | 'blocked';
|
|
33
|
+
/**
|
|
34
|
+
* One immutable line of the trail.
|
|
35
|
+
*
|
|
36
|
+
* Field names are stable: downstream consumers (SIEM pipelines, auditor
|
|
37
|
+
* exports) key off them, so treat renames as breaking changes.
|
|
38
|
+
*/
|
|
39
|
+
export interface AuditRecord {
|
|
40
|
+
/** ISO-8601 UTC. */
|
|
41
|
+
ts: string;
|
|
42
|
+
/** Stable per top-level run; inherited by sub-agents so a tree shares one id. */
|
|
43
|
+
sessionId: string;
|
|
44
|
+
/**
|
|
45
|
+
* The authenticated HUMAN, supplied by the host application.
|
|
46
|
+
*
|
|
47
|
+
* Never inferred here: core only holds a bearer token, and a token is a
|
|
48
|
+
* secret that must not be written to a log. Absent when the host supplied
|
|
49
|
+
* none — deliberately NOT defaulted to "system", because a fabricated
|
|
50
|
+
* attribution is worse than a visibly missing one.
|
|
51
|
+
*/
|
|
52
|
+
userId?: string;
|
|
53
|
+
/** Agent identity: 'root' for the main agent, 'sub_N' for a sub-agent. */
|
|
54
|
+
actor: string;
|
|
55
|
+
/** 0 = main agent, 1+ = sub-agent nesting depth. */
|
|
56
|
+
depth: number;
|
|
57
|
+
/** Sub-agent type name, when this run is a typed sub-agent. */
|
|
58
|
+
agentType?: string;
|
|
59
|
+
model?: string;
|
|
60
|
+
tool: string;
|
|
61
|
+
/** Full arguments — this is what lets an auditor trace a number back to its source. */
|
|
62
|
+
input: unknown;
|
|
63
|
+
ok: boolean;
|
|
64
|
+
outcome: AuditOutcome;
|
|
65
|
+
error?: string;
|
|
66
|
+
/** Truncated: the trail records that output existed and its shape, not a copy of it. */
|
|
67
|
+
outputSummary?: string;
|
|
68
|
+
exitCode?: number;
|
|
69
|
+
workDir: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Where records go. The core ships one reference implementation (JSONL); every
|
|
73
|
+
* other destination (SIEM, customer database, hosted service) is the host's
|
|
74
|
+
* choice, which keeps transport and retention policy out of the agent loop.
|
|
75
|
+
*
|
|
76
|
+
* May be sync or async. It is never awaited on the tool path — see recordAudit.
|
|
77
|
+
*/
|
|
78
|
+
export interface AuditSink {
|
|
79
|
+
record(entry: AuditRecord): void | Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
/** Host-side configuration. Absent from options => auditing is entirely off. */
|
|
82
|
+
export interface AuditConfig {
|
|
83
|
+
sink: AuditSink;
|
|
84
|
+
/** The authenticated human this run acts for. See AuditRecord.userId. */
|
|
85
|
+
userId?: string;
|
|
86
|
+
/** Stable id for the run. Generated when omitted. */
|
|
87
|
+
sessionId?: string;
|
|
88
|
+
/**
|
|
89
|
+
* Last chance to mask or drop a record before it reaches the sink. Return
|
|
90
|
+
* null to drop it entirely.
|
|
91
|
+
*
|
|
92
|
+
* Never applied by default: silently rewriting an audit record is itself an
|
|
93
|
+
* audit problem, so the policy belongs with the host that knows its own data.
|
|
94
|
+
*/
|
|
95
|
+
redact?: (entry: AuditRecord) => AuditRecord | null;
|
|
96
|
+
}
|
|
97
|
+
/** Output is summarised, not archived — keeps the trail a trail. */
|
|
98
|
+
export declare const AUDIT_OUTPUT_LIMIT = 2000;
|
|
99
|
+
/**
|
|
100
|
+
* Classify an outcome.
|
|
101
|
+
*
|
|
102
|
+
* A blocked call is NOT the same as a failed one, and collapsing the two would
|
|
103
|
+
* hide the security-relevant half of the trail: "the agent tried to write to
|
|
104
|
+
* production and was refused" must not read as "a tool errored".
|
|
105
|
+
*
|
|
106
|
+
* Detection is by the loop's own refusal messages. If those strings change, a
|
|
107
|
+
* blocked call degrades to `error` — still recorded, still visibly not-ok, so
|
|
108
|
+
* the failure mode is a less precise label rather than a missing entry.
|
|
109
|
+
*/
|
|
110
|
+
export declare function classifyOutcome(ok: boolean, error: string | undefined): AuditOutcome;
|
|
111
|
+
export interface AuditContext {
|
|
112
|
+
config: AuditConfig;
|
|
113
|
+
sessionId: string;
|
|
114
|
+
actor: string;
|
|
115
|
+
depth: number;
|
|
116
|
+
agentType?: string;
|
|
117
|
+
model?: string;
|
|
118
|
+
workDir: string;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Build + emit one record. Fire-and-forget by design.
|
|
122
|
+
*
|
|
123
|
+
* An audit trail is a compliance artefact, not a correctness dependency: a full
|
|
124
|
+
* disk, a wedged SIEM or a buggy custom sink must not kill a run that is
|
|
125
|
+
* halfway through real work. So every sink failure — sync throw or rejected
|
|
126
|
+
* promise — is swallowed here, and the sink is never awaited (the tool round is
|
|
127
|
+
* on the latency-critical path; the Desktop app targets a ~0 ms local loop).
|
|
128
|
+
*
|
|
129
|
+
* The stricter "fail closed" policy (abort the run when the trail cannot be
|
|
130
|
+
* written) is a real requirement in some deployments but changes the loop's
|
|
131
|
+
* failure semantics, so it is intentionally not bolted on here.
|
|
132
|
+
*/
|
|
133
|
+
export declare function recordAudit(ctx: AuditContext, tool: string, input: unknown, ok: boolean, output: string | undefined, error: string | undefined, exitCode: number | undefined): void;
|
|
134
|
+
/**
|
|
135
|
+
* Append-only JSONL sink — the reference implementation.
|
|
136
|
+
*
|
|
137
|
+
* One JSON object per line, appended with `fs.appendFileSync`. Chosen over a
|
|
138
|
+
* buffered writer because an audit line that is still sitting in a buffer when
|
|
139
|
+
* the process is killed is an audit line that does not exist; appending each
|
|
140
|
+
* record keeps the on-disk trail consistent with what actually ran. Writes are
|
|
141
|
+
* small and the call site never awaits, so this does not sit on the latency path.
|
|
142
|
+
*
|
|
143
|
+
* Not a tamper-EVIDENCE claim: it makes no cryptographic guarantee. Deployments
|
|
144
|
+
* needing that should point this at WORM storage or supply their own sink.
|
|
145
|
+
* Created with mode 0600 — a trail can contain business-sensitive arguments.
|
|
146
|
+
*/
|
|
147
|
+
export declare function createJsonlAuditSink(filePath: string): AuditSink;
|
|
148
|
+
/** In-memory sink — for tests and for hosts that forward records themselves. */
|
|
149
|
+
export declare function createMemoryAuditSink(): AuditSink & {
|
|
150
|
+
records: AuditRecord[];
|
|
151
|
+
};
|
|
152
|
+
/** Stable-enough id without pulling in a uuid dependency. */
|
|
153
|
+
export declare function newAuditSessionId(): string;
|
|
154
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/agent/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAKH,qEAAqE;AACrE,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,oBAAoB;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,KAAK,EAAE,OAAO,CAAC;IACf,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAED,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,WAAW,GAAG,IAAI,CAAC;CACrD;AAED,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AAQxC;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAYpF;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,EAAE,EAAE,OAAO,EACX,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,IAAI,CAiCN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAWhE;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,IAAI,SAAS,GAAG;IAAE,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,CAQ9E;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Audit trail — a tamper-*visible* record of every tool call an agent makes.
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS EXISTS
|
|
6
|
+
*
|
|
7
|
+
* Regulated buyers (finance first, but the same applies to healthcare/legal) do
|
|
8
|
+
* not reject agents for being unintelligent — they reject them for being
|
|
9
|
+
* UNAUDITABLE. The single most common finance-side audit finding in 2026 is an
|
|
10
|
+
* AI touching business data through a service account with no record of which
|
|
11
|
+
* HUMAN initiated the work, which fails SOX's individual-attribution standard.
|
|
12
|
+
* The remedy auditors name is "dual attribution": log the machine identity AND
|
|
13
|
+
* the authenticated human, together, per action.
|
|
14
|
+
*
|
|
15
|
+
* So this module records, for every tool call: what ran, who (agent) ran it, on
|
|
16
|
+
* whose behalf (human, supplied by the host), what the arguments were, and what
|
|
17
|
+
* came back — including calls that were BLOCKED and never executed, which is
|
|
18
|
+
* exactly what a security reviewer wants to see.
|
|
19
|
+
*
|
|
20
|
+
* WHAT IT DELIBERATELY IS NOT
|
|
21
|
+
*
|
|
22
|
+
* It does not make the agent correct, and it is not a data lake: outputs are
|
|
23
|
+
* truncated to a summary. It proves what happened; domain correctness is the
|
|
24
|
+
* job of skills/sub-agent definitions, not of this file.
|
|
25
|
+
*
|
|
26
|
+
* See docs/NEXRALL_AUDIT_TRAIL_LAYER.md (in the Nexrall repo) for the full
|
|
27
|
+
* design, including why the recording point is the loop's per-round result
|
|
28
|
+
* iteration rather than the onToolUse/onToolResult callbacks (short version:
|
|
29
|
+
* those are re-emitted upward by sub-agents, so auditing them double-counts
|
|
30
|
+
* every nested call, at a rate that varies with depth).
|
|
31
|
+
*/
|
|
32
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
33
|
+
if (k2 === undefined) k2 = k;
|
|
34
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
35
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
36
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
37
|
+
}
|
|
38
|
+
Object.defineProperty(o, k2, desc);
|
|
39
|
+
}) : (function(o, m, k, k2) {
|
|
40
|
+
if (k2 === undefined) k2 = k;
|
|
41
|
+
o[k2] = m[k];
|
|
42
|
+
}));
|
|
43
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
44
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
45
|
+
}) : function(o, v) {
|
|
46
|
+
o["default"] = v;
|
|
47
|
+
});
|
|
48
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
49
|
+
var ownKeys = function(o) {
|
|
50
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
51
|
+
var ar = [];
|
|
52
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
53
|
+
return ar;
|
|
54
|
+
};
|
|
55
|
+
return ownKeys(o);
|
|
56
|
+
};
|
|
57
|
+
return function (mod) {
|
|
58
|
+
if (mod && mod.__esModule) return mod;
|
|
59
|
+
var result = {};
|
|
60
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
61
|
+
__setModuleDefault(result, mod);
|
|
62
|
+
return result;
|
|
63
|
+
};
|
|
64
|
+
})();
|
|
65
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
66
|
+
exports.AUDIT_OUTPUT_LIMIT = void 0;
|
|
67
|
+
exports.classifyOutcome = classifyOutcome;
|
|
68
|
+
exports.recordAudit = recordAudit;
|
|
69
|
+
exports.createJsonlAuditSink = createJsonlAuditSink;
|
|
70
|
+
exports.createMemoryAuditSink = createMemoryAuditSink;
|
|
71
|
+
exports.newAuditSessionId = newAuditSessionId;
|
|
72
|
+
const fs = __importStar(require("fs"));
|
|
73
|
+
const path = __importStar(require("path"));
|
|
74
|
+
/** Output is summarised, not archived — keeps the trail a trail. */
|
|
75
|
+
exports.AUDIT_OUTPUT_LIMIT = 2000;
|
|
76
|
+
function summarise(output) {
|
|
77
|
+
if (output === undefined || output === '')
|
|
78
|
+
return undefined;
|
|
79
|
+
if (output.length <= exports.AUDIT_OUTPUT_LIMIT)
|
|
80
|
+
return output;
|
|
81
|
+
return `${output.slice(0, exports.AUDIT_OUTPUT_LIMIT)}\n… [truncated ${output.length - exports.AUDIT_OUTPUT_LIMIT} chars]`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Classify an outcome.
|
|
85
|
+
*
|
|
86
|
+
* A blocked call is NOT the same as a failed one, and collapsing the two would
|
|
87
|
+
* hide the security-relevant half of the trail: "the agent tried to write to
|
|
88
|
+
* production and was refused" must not read as "a tool errored".
|
|
89
|
+
*
|
|
90
|
+
* Detection is by the loop's own refusal messages. If those strings change, a
|
|
91
|
+
* blocked call degrades to `error` — still recorded, still visibly not-ok, so
|
|
92
|
+
* the failure mode is a less precise label rather than a missing entry.
|
|
93
|
+
*/
|
|
94
|
+
function classifyOutcome(ok, error) {
|
|
95
|
+
if (ok)
|
|
96
|
+
return 'ok';
|
|
97
|
+
const e = error ?? '';
|
|
98
|
+
const blocked = e.startsWith('Permission denied') ||
|
|
99
|
+
e.includes('not allowed to use') || // ToolNotAllowedError
|
|
100
|
+
e.includes('Blocked by PreToolUse hook') ||
|
|
101
|
+
e.includes('read-only') || // plan mode refusals
|
|
102
|
+
e.includes('plan mode') ||
|
|
103
|
+
e.includes('Plan mode') ||
|
|
104
|
+
e.includes('was CUT OFF'); // truncated tool call, refused unexecuted
|
|
105
|
+
return blocked ? 'blocked' : 'error';
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Build + emit one record. Fire-and-forget by design.
|
|
109
|
+
*
|
|
110
|
+
* An audit trail is a compliance artefact, not a correctness dependency: a full
|
|
111
|
+
* disk, a wedged SIEM or a buggy custom sink must not kill a run that is
|
|
112
|
+
* halfway through real work. So every sink failure — sync throw or rejected
|
|
113
|
+
* promise — is swallowed here, and the sink is never awaited (the tool round is
|
|
114
|
+
* on the latency-critical path; the Desktop app targets a ~0 ms local loop).
|
|
115
|
+
*
|
|
116
|
+
* The stricter "fail closed" policy (abort the run when the trail cannot be
|
|
117
|
+
* written) is a real requirement in some deployments but changes the loop's
|
|
118
|
+
* failure semantics, so it is intentionally not bolted on here.
|
|
119
|
+
*/
|
|
120
|
+
function recordAudit(ctx, tool, input, ok, output, error, exitCode) {
|
|
121
|
+
try {
|
|
122
|
+
const base = {
|
|
123
|
+
ts: new Date().toISOString(),
|
|
124
|
+
sessionId: ctx.sessionId,
|
|
125
|
+
actor: ctx.actor,
|
|
126
|
+
depth: ctx.depth,
|
|
127
|
+
tool,
|
|
128
|
+
input,
|
|
129
|
+
ok,
|
|
130
|
+
outcome: classifyOutcome(ok, error),
|
|
131
|
+
workDir: ctx.workDir,
|
|
132
|
+
};
|
|
133
|
+
// Optional fields assigned conditionally so a record never carries
|
|
134
|
+
// `"userId": undefined` noise into JSONL.
|
|
135
|
+
if (ctx.config.userId !== undefined)
|
|
136
|
+
base.userId = ctx.config.userId;
|
|
137
|
+
if (ctx.agentType !== undefined)
|
|
138
|
+
base.agentType = ctx.agentType;
|
|
139
|
+
if (ctx.model !== undefined)
|
|
140
|
+
base.model = ctx.model;
|
|
141
|
+
if (error !== undefined)
|
|
142
|
+
base.error = error;
|
|
143
|
+
if (exitCode !== undefined)
|
|
144
|
+
base.exitCode = exitCode;
|
|
145
|
+
const summary = summarise(output);
|
|
146
|
+
if (summary !== undefined)
|
|
147
|
+
base.outputSummary = summary;
|
|
148
|
+
const entry = ctx.config.redact ? ctx.config.redact(base) : base;
|
|
149
|
+
if (entry === null)
|
|
150
|
+
return;
|
|
151
|
+
const maybe = ctx.config.sink.record(entry);
|
|
152
|
+
if (maybe && typeof maybe.catch === 'function') {
|
|
153
|
+
void maybe.catch(() => { });
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// Never propagate. See the doc comment above.
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Append-only JSONL sink — the reference implementation.
|
|
162
|
+
*
|
|
163
|
+
* One JSON object per line, appended with `fs.appendFileSync`. Chosen over a
|
|
164
|
+
* buffered writer because an audit line that is still sitting in a buffer when
|
|
165
|
+
* the process is killed is an audit line that does not exist; appending each
|
|
166
|
+
* record keeps the on-disk trail consistent with what actually ran. Writes are
|
|
167
|
+
* small and the call site never awaits, so this does not sit on the latency path.
|
|
168
|
+
*
|
|
169
|
+
* Not a tamper-EVIDENCE claim: it makes no cryptographic guarantee. Deployments
|
|
170
|
+
* needing that should point this at WORM storage or supply their own sink.
|
|
171
|
+
* Created with mode 0600 — a trail can contain business-sensitive arguments.
|
|
172
|
+
*/
|
|
173
|
+
function createJsonlAuditSink(filePath) {
|
|
174
|
+
let ensured = false;
|
|
175
|
+
return {
|
|
176
|
+
record(entry) {
|
|
177
|
+
if (!ensured) {
|
|
178
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
179
|
+
ensured = true;
|
|
180
|
+
}
|
|
181
|
+
fs.appendFileSync(filePath, `${JSON.stringify(entry)}\n`, { mode: 0o600 });
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/** In-memory sink — for tests and for hosts that forward records themselves. */
|
|
186
|
+
function createMemoryAuditSink() {
|
|
187
|
+
const records = [];
|
|
188
|
+
return {
|
|
189
|
+
records,
|
|
190
|
+
record(entry) {
|
|
191
|
+
records.push(entry);
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/** Stable-enough id without pulling in a uuid dependency. */
|
|
196
|
+
function newAuditSessionId() {
|
|
197
|
+
return `sess_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=audit.js.map
|
package/dist/agent/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAKP,UAAU,EACV,gBAAgB,EAChB,UAAU,EACX,MAAM,UAAU,CAAC;AAIlB,OAAO,EAA8D,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAMjI,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/loop.js
CHANGED
|
@@ -87,6 +87,7 @@ const index_1 = require("../plugins/index");
|
|
|
87
87
|
const testIntegrity_1 = require("./testIntegrity");
|
|
88
88
|
const flaky_1 = require("./flaky");
|
|
89
89
|
const claimEvidence_1 = require("./claimEvidence");
|
|
90
|
+
const audit_1 = require("./audit");
|
|
90
91
|
const memory_1 = require("./memory");
|
|
91
92
|
const safeSlice_1 = require("../util/safeSlice");
|
|
92
93
|
const fs = __importStar(require("fs"));
|
|
@@ -1448,6 +1449,12 @@ started) {
|
|
|
1448
1449
|
// takes the opposite direction on purpose (inherited, because it RESTRICTS); identity
|
|
1449
1450
|
// must not be inherited, capability must.
|
|
1450
1451
|
_agentMemory: agent && memoryScope ? { agentName: agent.name, scope: memoryScope } : undefined,
|
|
1452
|
+
// Assigned unconditionally for the same reason as _agentMemory above: a
|
|
1453
|
+
// conditional spread would leave the PARENT's type name in place, so an
|
|
1454
|
+
// untyped (general-purpose) child would be recorded in the audit trail
|
|
1455
|
+
// under its parent's agent type — a wrong attribution, which is worse in a
|
|
1456
|
+
// compliance record than an absent one.
|
|
1457
|
+
_agentTypeName: agent?.name,
|
|
1451
1458
|
// The same set `gatedPermission` enforces above, so prompt and permission agree
|
|
1452
1459
|
// by construction instead of by two people remembering to update both.
|
|
1453
1460
|
_allowedTools: allowed ?? undefined,
|
|
@@ -2403,6 +2410,36 @@ async function runAgentLoop(initialMessages, options) {
|
|
|
2403
2410
|
const hooks = loadHooks(options.workDir);
|
|
2404
2411
|
const depth = options._depth ?? 0;
|
|
2405
2412
|
const agentScope = options._agentScope ?? 'root';
|
|
2413
|
+
// ── Audit trail (opt-in) ────────────────────────────────────────────────────
|
|
2414
|
+
//
|
|
2415
|
+
// Undefined for every caller that hasn't opted in, which is what keeps this
|
|
2416
|
+
// change behaviour-neutral: `auditCtx` stays undefined and the one emit site
|
|
2417
|
+
// below is skipped entirely.
|
|
2418
|
+
//
|
|
2419
|
+
// The session id is resolved ONCE here and, when the host didn't supply one,
|
|
2420
|
+
// pushed down to sub-agents through `auditOptions` (below) rather than left to
|
|
2421
|
+
// each nested loop to generate its own. Otherwise every sub-agent would open a
|
|
2422
|
+
// NEW session id and the trail would no longer show that a delegated write and
|
|
2423
|
+
// the user request that caused it belong to the same run — which is precisely
|
|
2424
|
+
// the chain of custody the trail exists to prove.
|
|
2425
|
+
const auditCfg = options.audit
|
|
2426
|
+
? (options.audit.sessionId ? options.audit : { ...options.audit, sessionId: (0, audit_1.newAuditSessionId)() })
|
|
2427
|
+
: undefined;
|
|
2428
|
+
const auditCtx = auditCfg
|
|
2429
|
+
? {
|
|
2430
|
+
config: auditCfg,
|
|
2431
|
+
sessionId: auditCfg.sessionId,
|
|
2432
|
+
actor: agentScope,
|
|
2433
|
+
depth,
|
|
2434
|
+
agentType: options._agentTypeName,
|
|
2435
|
+
model,
|
|
2436
|
+
workDir: options.workDir,
|
|
2437
|
+
}
|
|
2438
|
+
: undefined;
|
|
2439
|
+
// Sub-agents must inherit the RESOLVED config (with the session id filled in).
|
|
2440
|
+
// Copied, never mutated in place: `options` belongs to the caller, and this
|
|
2441
|
+
// loop runs concurrently with sibling sub-agents sharing that object.
|
|
2442
|
+
const auditOptions = auditCfg && auditCfg !== options.audit ? { ...options, audit: auditCfg } : options;
|
|
2406
2443
|
// Settings are read before the agent catalogue because a `deny` rule can
|
|
2407
2444
|
// switch a sub-agent off, and an agent that may not run must not be
|
|
2408
2445
|
// advertised (see below).
|
|
@@ -3105,7 +3142,7 @@ async function runAgentLoop(initialMessages, options) {
|
|
|
3105
3142
|
// depth 0) needs its own limiter. Extracted into dispatchSubAgent so
|
|
3106
3143
|
// `@nexrall/agent`'s delegate()/spawn() drive the SAME path instead of
|
|
3107
3144
|
// reimplementing depth/budget/concurrency enforcement a second time.
|
|
3108
|
-
result = await dispatchSubAgent(input,
|
|
3145
|
+
result = await dispatchSubAgent(input, auditOptions, agentTypes);
|
|
3109
3146
|
}
|
|
3110
3147
|
else {
|
|
3111
3148
|
const pre = runToolHooks(hooks.PreToolUse, 'PreToolUse', name, input, options.workDir);
|
|
@@ -3210,6 +3247,15 @@ async function runAgentLoop(initialMessages, options) {
|
|
|
3210
3247
|
// exitCode lets the ledger tell a PASSED verification from a FAILED one
|
|
3211
3248
|
// (a `npm test` that exits non-zero is not an `error`, but it IS a fail).
|
|
3212
3249
|
ledgerRecord(ledger, block.name, block.input, ok, rawOutput ?? result.output, result.exitCode);
|
|
3250
|
+
// Audit emission rides alongside the ledger because THIS is the one place
|
|
3251
|
+
// every tool call of this loop passes exactly once, whatever happened to it:
|
|
3252
|
+
// executed, errored, permission-denied, plan-mode-refused, hook-blocked or
|
|
3253
|
+
// refused as a truncated call. Auditing onToolUse/onToolResult instead would
|
|
3254
|
+
// have double-counted every nested call, since runSubTask re-emits a child's
|
|
3255
|
+
// tool events through the parent's callbacks (see audit.ts's header).
|
|
3256
|
+
if (auditCtx) {
|
|
3257
|
+
(0, audit_1.recordAudit)(auditCtx, block.name, block.input, ok, result.output, result.error, result.exitCode);
|
|
3258
|
+
}
|
|
3213
3259
|
if (!ok)
|
|
3214
3260
|
continue; // failed calls don't count either way
|
|
3215
3261
|
if (exports.WRITE_TOOL_NAMES.has(block.name))
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export * from './agent/securityLint';
|
|
|
9
9
|
export * from './agent/crossFile';
|
|
10
10
|
export * from './agent/flaky';
|
|
11
11
|
export * from './agent/claimEvidence';
|
|
12
|
+
export * from './agent/audit';
|
|
12
13
|
export * from './agent/memory';
|
|
13
14
|
export * from './agent/skills';
|
|
14
15
|
export * from './mcp/client';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,7 @@ __exportStar(require("./agent/securityLint"), exports);
|
|
|
25
25
|
__exportStar(require("./agent/crossFile"), exports);
|
|
26
26
|
__exportStar(require("./agent/flaky"), exports);
|
|
27
27
|
__exportStar(require("./agent/claimEvidence"), exports);
|
|
28
|
+
__exportStar(require("./agent/audit"), exports);
|
|
28
29
|
__exportStar(require("./agent/memory"), exports);
|
|
29
30
|
__exportStar(require("./agent/skills"), exports);
|
|
30
31
|
__exportStar(require("./mcp/client"), exports);
|
package/dist/types.d.ts
CHANGED
|
@@ -435,6 +435,34 @@ export interface AgentLoopOptions {
|
|
|
435
435
|
_extraAgentTypes?: import('./agent/agentTypes').AgentType[];
|
|
436
436
|
/** As `_extraAgentTypes`, for `@nexrall/agent`'s `registerSkills()`. */
|
|
437
437
|
_extraSkills?: import('./agent/skills').Skill[];
|
|
438
|
+
/**
|
|
439
|
+
* Internal: the sub-agent TYPE name this run is executing as (e.g. 'reviewer'),
|
|
440
|
+
* or undefined for the main agent.
|
|
441
|
+
*
|
|
442
|
+
* Carried for the audit trail: `_agentScope` identifies the run instance
|
|
443
|
+
* ('sub_3'), which is meaningless to an auditor on its own — "which agent did
|
|
444
|
+
* this" has to name the definition that granted the capability, not just the
|
|
445
|
+
* slot number it happened to run in.
|
|
446
|
+
*/
|
|
447
|
+
_agentTypeName?: string;
|
|
448
|
+
/**
|
|
449
|
+
* Opt-in tool-call audit trail (compliance/regulated deployments).
|
|
450
|
+
*
|
|
451
|
+
* Absent — which is every existing caller — means auditing is entirely off and
|
|
452
|
+
* the loop behaves exactly as before: the added code is one `if` that is false.
|
|
453
|
+
* Supplied, it records every tool call this run makes, INCLUDING calls that were
|
|
454
|
+
* refused and never executed, to the host-provided sink.
|
|
455
|
+
*
|
|
456
|
+
* Lives at this level rather than in the SDK or the Desktop app on purpose: all
|
|
457
|
+
* of them (CLI, VS Code, SDK, Desktop) funnel through this one loop, and a
|
|
458
|
+
* guarantee implemented once per client is a guarantee that drifts apart per
|
|
459
|
+
* client — which for an audit trail means one entry path silently logging
|
|
460
|
+
* nothing. Sub-agents inherit it through the options spread in runSubTask, so a
|
|
461
|
+
* delegated call is recorded by the sub-agent's own loop, exactly once.
|
|
462
|
+
*
|
|
463
|
+
* See docs/NEXRALL_AUDIT_TRAIL_LAYER.md.
|
|
464
|
+
*/
|
|
465
|
+
audit?: import('./agent/audit').AuditConfig;
|
|
438
466
|
}
|
|
439
467
|
/**
|
|
440
468
|
* Thrown by `runAgentLoop` when a turn cannot continue (stream died, upstream
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nexrall/code-core",
|
|
3
|
-
"version": "1.4.
|
|
4
|
-
"description": "Core agent loop, tools, and extension primitives for Nexrall Code
|
|
3
|
+
"version": "1.4.51",
|
|
4
|
+
"description": "Core agent loop, tools, and extension primitives for Nexrall Code \u2014 embed an AI coding agent in any Node.js application.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Nexrall <support@nexrall.com> (https://nexrall.com)",
|
|
7
7
|
"homepage": "https://github.com/nexrall/nexrall-code#readme",
|