@connexum/ai-governance 1.0.0-beta.21 → 1.0.0-beta.22

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/cli/sync.ts"],"names":[],"mappings":"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"}
@@ -287,6 +287,27 @@ fi
287
287
  # stored in .governance.json (mode 0600). The /cluster-events route
288
288
  # validates the JWT and enforces tenant binding (Invariant 7 — body
289
289
  # orgId MUST match the token's `org` claim).
290
+ #
291
+ # F3 (CORRECTNESS 2026-06-09): per-agent runtime attribution.
292
+ # Before F3, every tool call in a project pushed under the FIRST agent's
293
+ # identity (runtime.agentId / runtime.serviceToken), regardless of which
294
+ # agent was actually running. The CLI now writes a per-agent `agents[]`
295
+ # array with { localId, agentId, serviceToken, filePath } entries.
296
+ #
297
+ # Resolution priority:
298
+ # 1. CXNI_AGENT_FILE env var (operator sets this per-agent session, e.g.
299
+ # CXNI_AGENT_FILE=".claude/agents/kai-agent.md") → look up matching
300
+ # filePath in agents[] and use that entry's agentId + serviceToken.
301
+ # 2. Fallback: runtime.agentId + runtime.serviceToken (pre-F3 behavior).
302
+ # A fallback-used advisory is written to the local audit JSONL so
303
+ # operators know per-agent attribution was not available.
304
+ #
305
+ # F4 (SECURITY 2026-06-09): serviceToken off curl argv.
306
+ # Before F4, the bearer token appeared as `-H "Authorization: Bearer $TOKEN"`
307
+ # on the curl command line, visible in `ps aux` to any local user.
308
+ # Fix: write the Authorization header to a 0600 temp file and pass it via
309
+ # `curl -H @<tmpfile>`. The tmpfile is removed immediately after curl exits
310
+ # (or in the same background shell if detached).
290
311
  PROJECT_ROOT=""
291
312
  SEARCH_DIR="$AUDIT_DIR"
292
313
  while [ "$SEARCH_DIR" != "/" ] && [ -n "$SEARCH_DIR" ]; do
@@ -300,8 +321,58 @@ done
300
321
  if [ -n "$PROJECT_ROOT" ] && command -v jq >/dev/null 2>&1 && command -v curl >/dev/null 2>&1; then
301
322
  GOV_URL="$(jq -r '.runtime.govServerUrl // empty' "$PROJECT_ROOT/.governance.json" 2>/dev/null)"
302
323
  GOV_ORG="$(jq -r '.runtime.orgId // empty' "$PROJECT_ROOT/.governance.json" 2>/dev/null)"
303
- GOV_AGENT="$(jq -r '.runtime.agentId // empty' "$PROJECT_ROOT/.governance.json" 2>/dev/null)"
304
- GOV_TOKEN="$(jq -r '.runtime.serviceToken // empty' "$PROJECT_ROOT/.governance.json" 2>/dev/null)"
324
+
325
+ # F3: resolve per-agent identity from agents[] (TS-002 per-agent identity block).
326
+ # Match on CXNI_AGENT_FILE (the calling agent's file path set by the operator
327
+ # for each agent session). Fall back to runtime.* when agents[] is absent or
328
+ # no filePath match is found.
329
+ GOV_AGENT=""
330
+ GOV_TOKEN=""
331
+ _F3_ATTRIBUTION="runtime-fallback" # tracks which resolution path was taken
332
+
333
+ if [ -n "${CXNI_AGENT_FILE:-}" ] && command -v jq >/dev/null 2>&1; then
334
+ # Attempt agents[] lookup by filePath.
335
+ _AGENT_ENTRY=$(jq -c \
336
+ --arg fp "$CXNI_AGENT_FILE" \
337
+ '(.agents // []) | map(select(.filePath == $fp)) | first // empty' \
338
+ "$PROJECT_ROOT/.governance.json" 2>/dev/null || true)
339
+ if [ -n "$_AGENT_ENTRY" ]; then
340
+ GOV_AGENT=$(printf '%s' "$_AGENT_ENTRY" | jq -r '.agentId // empty' 2>/dev/null || true)
341
+ GOV_TOKEN=$(printf '%s' "$_AGENT_ENTRY" | jq -r '.serviceToken // empty' 2>/dev/null || true)
342
+ if [ -n "$GOV_AGENT" ] && [ -n "$GOV_TOKEN" ]; then
343
+ _F3_ATTRIBUTION="per-agent-agents-array"
344
+ else
345
+ GOV_AGENT=""
346
+ GOV_TOKEN=""
347
+ fi
348
+ fi
349
+ fi
350
+
351
+ # Fallback to runtime.* when per-agent lookup failed or CXNI_AGENT_FILE not set.
352
+ if [ -z "$GOV_AGENT" ] || [ -z "$GOV_TOKEN" ]; then
353
+ GOV_AGENT="$(jq -r '.runtime.agentId // empty' "$PROJECT_ROOT/.governance.json" 2>/dev/null)"
354
+ GOV_TOKEN="$(jq -r '.runtime.serviceToken // empty' "$PROJECT_ROOT/.governance.json" 2>/dev/null)"
355
+ _F3_ATTRIBUTION="runtime-fallback"
356
+
357
+ # Advisory: log the fallback so operators know per-agent attribution was not
358
+ # available. Written to the local JSONL (not sent to the server). The message
359
+ # is compact — one additional field appended to the current entry is too late
360
+ # (already written), so we write a separate advisory line instead.
361
+ if [ -n "$GOV_AGENT" ] && [ -n "${CXNI_AGENT_FILE:-}" ]; then
362
+ _FB_ENTRY=$(jq -nc \
363
+ --arg ts "$TIMESTAMP" \
364
+ --arg sid "$SESSION_ID" \
365
+ --arg agentFile "${CXNI_AGENT_FILE:-}" \
366
+ --arg fallbackAgent "$GOV_AGENT" \
367
+ '{timestamp: $ts, session: $sid, kind: "F3_ATTRIBUTION_FALLBACK",
368
+ agentFile: $agentFile, fallbackAgentId: $fallbackAgent,
369
+ detail: "CXNI_AGENT_FILE set but no matching agents[] entry; using runtime.*"}' \
370
+ 2>/dev/null || true)
371
+ if [ -n "$_FB_ENTRY" ]; then
372
+ echo "$_FB_ENTRY" >> "$AUDIT_FILE" 2>/dev/null || true
373
+ fi
374
+ fi
375
+ fi
305
376
 
306
377
  if [ -n "$GOV_URL" ] && [ -n "$GOV_ORG" ] && [ -n "$GOV_AGENT" ] && [ -n "$GOV_TOKEN" ]; then
307
378
  PUSH_BODY=$(jq -nc \
@@ -309,29 +380,56 @@ if [ -n "$PROJECT_ROOT" ] && command -v jq >/dev/null 2>&1 && command -v curl >/
309
380
  --arg org "$GOV_ORG" \
310
381
  --arg tool "${TOOL_NAME:-unknown}" \
311
382
  --arg ts "$TIMESTAMP" \
383
+ --arg attribution "$_F3_ATTRIBUTION" \
312
384
  '{
313
385
  kind: "AGENT_TOOL_OBSERVED",
314
386
  agentId: $agent,
315
387
  orgId: $org,
316
388
  tool: $tool,
317
389
  timestamp: $ts,
390
+ attribution: $attribution,
318
391
  manifest: { agentId: $agent, tools: [$tool] }
319
392
  }' 2>/dev/null)
320
393
  if [ -n "$PUSH_BODY" ]; then
394
+ # F4 (SECURITY 2026-06-09): write the Authorization header to a 0600 temp
395
+ # file so the serviceToken never appears on the curl command line (visible
396
+ # in `ps aux`). The tmpfile is created atomically and removed after the
397
+ # backgrounded curl subprocess exits. `mktemp` is portable (POSIX).
398
+ #
399
+ # CONDITION-3 (Shield 2026-06-09): register an EXIT trap in the PARENT
400
+ # shell so the tmpfile is cleaned up even if the detached subshell is
401
+ # SIGKILLed (SIGKILL cannot be caught by the subshell, so the `rm -f`
402
+ # inside the subshell would not run). The parent EXIT trap fires on any
403
+ # exit path including SIGKILL delivery to the parent (via the OS process
404
+ # reap). The variable is initialised to empty so the trap is safe to
405
+ # register before `mktemp` runs.
406
+ _AUTH_TMPFILE=""
407
+ trap 'rm -f "$_AUTH_TMPFILE" 2>/dev/null' EXIT
408
+ #
321
409
  # Fully detach the push: `setsid` (when present — Linux; absent on a
322
410
  # default macOS) puts curl in its own session/process group, and
323
411
  # `</dev/null` severs inherited stdin, so it can never be tied to the
324
412
  # hook's lifecycle or block on a pipe. `--max-time 2` caps it regardless.
325
413
  # The local JSONL row was written above; if the push fails, the next hook
326
414
  # fire or a periodic batch sweep can replay from disk.
327
- _DETACH=""; command -v setsid >/dev/null 2>&1 && _DETACH="setsid"
328
- $_DETACH curl --silent --show-error --max-time 2 --connect-timeout 1 \
329
- --output /dev/null \
330
- -X POST "${GOV_URL%/}/api/v1/cluster-events/self-registration" \
331
- -H "Authorization: Bearer $GOV_TOKEN" \
332
- -H "Content-Type: application/json" \
333
- --data "$PUSH_BODY" </dev/null >/dev/null 2>&1 &
334
- disown 2>/dev/null || true
415
+ _AUTH_TMPFILE=$(mktemp 2>/dev/null || true)
416
+ if [ -n "$_AUTH_TMPFILE" ]; then
417
+ chmod 0600 "$_AUTH_TMPFILE" 2>/dev/null || true
418
+ printf 'Authorization: Bearer %s\n' "$GOV_TOKEN" > "$_AUTH_TMPFILE" 2>/dev/null || true
419
+
420
+ _DETACH=""; command -v setsid >/dev/null 2>&1 && _DETACH="setsid"
421
+ $_DETACH bash -c "
422
+ curl --silent --show-error --max-time 2 --connect-timeout 1 \
423
+ --output /dev/null \
424
+ -X POST '${GOV_URL%/}/api/v1/cluster-events/self-registration' \
425
+ -H '@${_AUTH_TMPFILE}' \
426
+ -H 'Content-Type: application/json' \
427
+ --data '$(printf '%s' "$PUSH_BODY" | sed "s/'/'\'''/g")' \
428
+ </dev/null >/dev/null 2>&1
429
+ rm -f '${_AUTH_TMPFILE}'
430
+ " </dev/null >/dev/null 2>&1 &
431
+ disown 2>/dev/null || true
432
+ fi
335
433
  fi
336
434
  fi
337
435
  fi
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@connexum/ai-governance",
3
- "version": "1.0.0-beta.21",
3
+ "version": "1.0.0-beta.22",
4
4
  "description": "Enterprise AI agent governance framework. Hook-based enforcement, compliance packs (SOC 2, HIPAA, GDPR, PCI DSS, DORA, EU AI Act, ISO 27001), audit trails, multi-LLM adapter architecture (Claude production today; additional providers on roadmap).",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -287,6 +287,27 @@ fi
287
287
  # stored in .governance.json (mode 0600). The /cluster-events route
288
288
  # validates the JWT and enforces tenant binding (Invariant 7 — body
289
289
  # orgId MUST match the token's `org` claim).
290
+ #
291
+ # F3 (CORRECTNESS 2026-06-09): per-agent runtime attribution.
292
+ # Before F3, every tool call in a project pushed under the FIRST agent's
293
+ # identity (runtime.agentId / runtime.serviceToken), regardless of which
294
+ # agent was actually running. The CLI now writes a per-agent `agents[]`
295
+ # array with { localId, agentId, serviceToken, filePath } entries.
296
+ #
297
+ # Resolution priority:
298
+ # 1. CXNI_AGENT_FILE env var (operator sets this per-agent session, e.g.
299
+ # CXNI_AGENT_FILE=".claude/agents/kai-agent.md") → look up matching
300
+ # filePath in agents[] and use that entry's agentId + serviceToken.
301
+ # 2. Fallback: runtime.agentId + runtime.serviceToken (pre-F3 behavior).
302
+ # A fallback-used advisory is written to the local audit JSONL so
303
+ # operators know per-agent attribution was not available.
304
+ #
305
+ # F4 (SECURITY 2026-06-09): serviceToken off curl argv.
306
+ # Before F4, the bearer token appeared as `-H "Authorization: Bearer $TOKEN"`
307
+ # on the curl command line, visible in `ps aux` to any local user.
308
+ # Fix: write the Authorization header to a 0600 temp file and pass it via
309
+ # `curl -H @<tmpfile>`. The tmpfile is removed immediately after curl exits
310
+ # (or in the same background shell if detached).
290
311
  PROJECT_ROOT=""
291
312
  SEARCH_DIR="$AUDIT_DIR"
292
313
  while [ "$SEARCH_DIR" != "/" ] && [ -n "$SEARCH_DIR" ]; do
@@ -300,8 +321,58 @@ done
300
321
  if [ -n "$PROJECT_ROOT" ] && command -v jq >/dev/null 2>&1 && command -v curl >/dev/null 2>&1; then
301
322
  GOV_URL="$(jq -r '.runtime.govServerUrl // empty' "$PROJECT_ROOT/.governance.json" 2>/dev/null)"
302
323
  GOV_ORG="$(jq -r '.runtime.orgId // empty' "$PROJECT_ROOT/.governance.json" 2>/dev/null)"
303
- GOV_AGENT="$(jq -r '.runtime.agentId // empty' "$PROJECT_ROOT/.governance.json" 2>/dev/null)"
304
- GOV_TOKEN="$(jq -r '.runtime.serviceToken // empty' "$PROJECT_ROOT/.governance.json" 2>/dev/null)"
324
+
325
+ # F3: resolve per-agent identity from agents[] (TS-002 per-agent identity block).
326
+ # Match on CXNI_AGENT_FILE (the calling agent's file path set by the operator
327
+ # for each agent session). Fall back to runtime.* when agents[] is absent or
328
+ # no filePath match is found.
329
+ GOV_AGENT=""
330
+ GOV_TOKEN=""
331
+ _F3_ATTRIBUTION="runtime-fallback" # tracks which resolution path was taken
332
+
333
+ if [ -n "${CXNI_AGENT_FILE:-}" ] && command -v jq >/dev/null 2>&1; then
334
+ # Attempt agents[] lookup by filePath.
335
+ _AGENT_ENTRY=$(jq -c \
336
+ --arg fp "$CXNI_AGENT_FILE" \
337
+ '(.agents // []) | map(select(.filePath == $fp)) | first // empty' \
338
+ "$PROJECT_ROOT/.governance.json" 2>/dev/null || true)
339
+ if [ -n "$_AGENT_ENTRY" ]; then
340
+ GOV_AGENT=$(printf '%s' "$_AGENT_ENTRY" | jq -r '.agentId // empty' 2>/dev/null || true)
341
+ GOV_TOKEN=$(printf '%s' "$_AGENT_ENTRY" | jq -r '.serviceToken // empty' 2>/dev/null || true)
342
+ if [ -n "$GOV_AGENT" ] && [ -n "$GOV_TOKEN" ]; then
343
+ _F3_ATTRIBUTION="per-agent-agents-array"
344
+ else
345
+ GOV_AGENT=""
346
+ GOV_TOKEN=""
347
+ fi
348
+ fi
349
+ fi
350
+
351
+ # Fallback to runtime.* when per-agent lookup failed or CXNI_AGENT_FILE not set.
352
+ if [ -z "$GOV_AGENT" ] || [ -z "$GOV_TOKEN" ]; then
353
+ GOV_AGENT="$(jq -r '.runtime.agentId // empty' "$PROJECT_ROOT/.governance.json" 2>/dev/null)"
354
+ GOV_TOKEN="$(jq -r '.runtime.serviceToken // empty' "$PROJECT_ROOT/.governance.json" 2>/dev/null)"
355
+ _F3_ATTRIBUTION="runtime-fallback"
356
+
357
+ # Advisory: log the fallback so operators know per-agent attribution was not
358
+ # available. Written to the local JSONL (not sent to the server). The message
359
+ # is compact — one additional field appended to the current entry is too late
360
+ # (already written), so we write a separate advisory line instead.
361
+ if [ -n "$GOV_AGENT" ] && [ -n "${CXNI_AGENT_FILE:-}" ]; then
362
+ _FB_ENTRY=$(jq -nc \
363
+ --arg ts "$TIMESTAMP" \
364
+ --arg sid "$SESSION_ID" \
365
+ --arg agentFile "${CXNI_AGENT_FILE:-}" \
366
+ --arg fallbackAgent "$GOV_AGENT" \
367
+ '{timestamp: $ts, session: $sid, kind: "F3_ATTRIBUTION_FALLBACK",
368
+ agentFile: $agentFile, fallbackAgentId: $fallbackAgent,
369
+ detail: "CXNI_AGENT_FILE set but no matching agents[] entry; using runtime.*"}' \
370
+ 2>/dev/null || true)
371
+ if [ -n "$_FB_ENTRY" ]; then
372
+ echo "$_FB_ENTRY" >> "$AUDIT_FILE" 2>/dev/null || true
373
+ fi
374
+ fi
375
+ fi
305
376
 
306
377
  if [ -n "$GOV_URL" ] && [ -n "$GOV_ORG" ] && [ -n "$GOV_AGENT" ] && [ -n "$GOV_TOKEN" ]; then
307
378
  PUSH_BODY=$(jq -nc \
@@ -309,29 +380,56 @@ if [ -n "$PROJECT_ROOT" ] && command -v jq >/dev/null 2>&1 && command -v curl >/
309
380
  --arg org "$GOV_ORG" \
310
381
  --arg tool "${TOOL_NAME:-unknown}" \
311
382
  --arg ts "$TIMESTAMP" \
383
+ --arg attribution "$_F3_ATTRIBUTION" \
312
384
  '{
313
385
  kind: "AGENT_TOOL_OBSERVED",
314
386
  agentId: $agent,
315
387
  orgId: $org,
316
388
  tool: $tool,
317
389
  timestamp: $ts,
390
+ attribution: $attribution,
318
391
  manifest: { agentId: $agent, tools: [$tool] }
319
392
  }' 2>/dev/null)
320
393
  if [ -n "$PUSH_BODY" ]; then
394
+ # F4 (SECURITY 2026-06-09): write the Authorization header to a 0600 temp
395
+ # file so the serviceToken never appears on the curl command line (visible
396
+ # in `ps aux`). The tmpfile is created atomically and removed after the
397
+ # backgrounded curl subprocess exits. `mktemp` is portable (POSIX).
398
+ #
399
+ # CONDITION-3 (Shield 2026-06-09): register an EXIT trap in the PARENT
400
+ # shell so the tmpfile is cleaned up even if the detached subshell is
401
+ # SIGKILLed (SIGKILL cannot be caught by the subshell, so the `rm -f`
402
+ # inside the subshell would not run). The parent EXIT trap fires on any
403
+ # exit path including SIGKILL delivery to the parent (via the OS process
404
+ # reap). The variable is initialised to empty so the trap is safe to
405
+ # register before `mktemp` runs.
406
+ _AUTH_TMPFILE=""
407
+ trap 'rm -f "$_AUTH_TMPFILE" 2>/dev/null' EXIT
408
+ #
321
409
  # Fully detach the push: `setsid` (when present — Linux; absent on a
322
410
  # default macOS) puts curl in its own session/process group, and
323
411
  # `</dev/null` severs inherited stdin, so it can never be tied to the
324
412
  # hook's lifecycle or block on a pipe. `--max-time 2` caps it regardless.
325
413
  # The local JSONL row was written above; if the push fails, the next hook
326
414
  # fire or a periodic batch sweep can replay from disk.
327
- _DETACH=""; command -v setsid >/dev/null 2>&1 && _DETACH="setsid"
328
- $_DETACH curl --silent --show-error --max-time 2 --connect-timeout 1 \
329
- --output /dev/null \
330
- -X POST "${GOV_URL%/}/api/v1/cluster-events/self-registration" \
331
- -H "Authorization: Bearer $GOV_TOKEN" \
332
- -H "Content-Type: application/json" \
333
- --data "$PUSH_BODY" </dev/null >/dev/null 2>&1 &
334
- disown 2>/dev/null || true
415
+ _AUTH_TMPFILE=$(mktemp 2>/dev/null || true)
416
+ if [ -n "$_AUTH_TMPFILE" ]; then
417
+ chmod 0600 "$_AUTH_TMPFILE" 2>/dev/null || true
418
+ printf 'Authorization: Bearer %s\n' "$GOV_TOKEN" > "$_AUTH_TMPFILE" 2>/dev/null || true
419
+
420
+ _DETACH=""; command -v setsid >/dev/null 2>&1 && _DETACH="setsid"
421
+ $_DETACH bash -c "
422
+ curl --silent --show-error --max-time 2 --connect-timeout 1 \
423
+ --output /dev/null \
424
+ -X POST '${GOV_URL%/}/api/v1/cluster-events/self-registration' \
425
+ -H '@${_AUTH_TMPFILE}' \
426
+ -H 'Content-Type: application/json' \
427
+ --data '$(printf '%s' "$PUSH_BODY" | sed "s/'/'\'''/g")' \
428
+ </dev/null >/dev/null 2>&1
429
+ rm -f '${_AUTH_TMPFILE}'
430
+ " </dev/null >/dev/null 2>&1 &
431
+ disown 2>/dev/null || true
432
+ fi
335
433
  fi
336
434
  fi
337
435
  fi