@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.
- package/dist/cli/agent-dir-scanner.d.ts +32 -0
- package/dist/cli/agent-dir-scanner.d.ts.map +1 -1
- package/dist/cli/agent-dir-scanner.js +47 -0
- package/dist/cli/agent-dir-scanner.js.map +1 -1
- package/dist/cli/index.d.ts +75 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +268 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/sync.d.ts +189 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +967 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/esm/cli/agent-dir-scanner.js +47 -0
- package/dist/esm/cli/agent-dir-scanner.js.map +1 -1
- package/dist/esm/cli/index.js +267 -2
- package/dist/esm/cli/index.js.map +1 -1
- package/dist/esm/cli/sync.js +927 -0
- package/dist/esm/cli/sync.js.map +1 -0
- package/dist/hooks/audit-logger.sh +108 -10
- package/package.json +1 -1
- package/src/hooks/audit-logger.sh +108 -10
|
@@ -40,6 +40,38 @@ export interface DetectedAgent {
|
|
|
40
40
|
tools?: string[];
|
|
41
41
|
/** Declared MCP server URIs/ids from a manifest.json. Safe metadata. */
|
|
42
42
|
mcpServers?: string[];
|
|
43
|
+
/** Exact model id string from the manifest (e.g. 'claude-3-5-sonnet-20241022'). */
|
|
44
|
+
model_identifier?: string;
|
|
45
|
+
/** Declared agent version string. */
|
|
46
|
+
version?: string;
|
|
47
|
+
/** Declared business vertical (e.g. 'healthcare'). */
|
|
48
|
+
vertical?: string;
|
|
49
|
+
/** Declared egress allow-list (domain patterns). */
|
|
50
|
+
allowed_domains?: string[];
|
|
51
|
+
/** Per-tool detail when manifest tools are declared as objects. */
|
|
52
|
+
toolDetails?: Array<{
|
|
53
|
+
name: string;
|
|
54
|
+
scope?: string;
|
|
55
|
+
data_class?: string;
|
|
56
|
+
}>;
|
|
57
|
+
/** Declared concurrency bound. */
|
|
58
|
+
max_concurrent_actions?: number;
|
|
59
|
+
/**
|
|
60
|
+
* Pre-existing passport id declared in the manifest. Flows through to
|
|
61
|
+
* register-fleet's identity-reuse logic:
|
|
62
|
+
* - FORMAT-MATCHES /^[0-9a-f]{64}$/ → ADOPTED as the agent's passportId.
|
|
63
|
+
* - Does NOT match → mint fresh; bind as external_identity_references entry.
|
|
64
|
+
*/
|
|
65
|
+
passport_id?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Pre-existing registration id declared in the manifest (may also appear as
|
|
68
|
+
* `agent_id`). Flows through to register-fleet's identity-reuse logic:
|
|
69
|
+
* - FORMAT-MATCHES /^agent-[0-9a-f]{8}$/ → ADOPTED as the agentId.
|
|
70
|
+
* - Does NOT match → mint fresh; bind as external_identity_references entry.
|
|
71
|
+
*/
|
|
72
|
+
registration_id?: string;
|
|
73
|
+
/** Alias for registration_id — same adopt-vs-bind semantics. */
|
|
74
|
+
agent_id?: string;
|
|
43
75
|
}
|
|
44
76
|
/**
|
|
45
77
|
* Recursively scan `dirPath` for Python / TS / JS files that contain AI
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-dir-scanner.d.ts","sourceRoot":"","sources":["../../src/cli/agent-dir-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAM3C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;IACjD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-dir-scanner.d.ts","sourceRoot":"","sources":["../../src/cli/agent-dir-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAM3C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;IACjD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAOtB,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,mEAAmE;IACnE,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3E,kCAAkC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAmbD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,UAA6B,GACpC,aAAa,EAAE,CAIjB"}
|
|
@@ -304,6 +304,42 @@ function parseAgentManifestJson(relPath, text) {
|
|
|
304
304
|
.slice(0, 200);
|
|
305
305
|
return out.length > 0 ? out : undefined;
|
|
306
306
|
};
|
|
307
|
+
// IDENTITY-REUSE (Thomas 2026-06-09): capture declared identity fields from
|
|
308
|
+
// the manifest so they flow through to register-fleet's adopt-vs-bind logic.
|
|
309
|
+
// Bounded to 200 chars to prevent bloat; never throws (Invariant 10).
|
|
310
|
+
const safeId = (v) => {
|
|
311
|
+
const s = typeof v === 'string' ? v.trim().slice(0, 200) : '';
|
|
312
|
+
return s.length > 0 ? s : undefined;
|
|
313
|
+
};
|
|
314
|
+
// TS-008 lossless capture (ticket A2): caps mirror the server-side
|
|
315
|
+
// FleetAgentInput validation so payloads can't bloat.
|
|
316
|
+
const safeStr = (v, max) => {
|
|
317
|
+
const s = typeof v === 'string' ? v.trim().slice(0, max) : '';
|
|
318
|
+
return s.length > 0 ? s : undefined;
|
|
319
|
+
};
|
|
320
|
+
const safeCount = (v) => typeof v === 'number' && Number.isFinite(v) && v >= 0 ? Math.trunc(v) : undefined;
|
|
321
|
+
const toToolDetailList = (v) => {
|
|
322
|
+
if (!Array.isArray(v))
|
|
323
|
+
return undefined;
|
|
324
|
+
const out = [];
|
|
325
|
+
for (const item of v) {
|
|
326
|
+
if (!item || typeof item !== 'object' || Array.isArray(item))
|
|
327
|
+
continue;
|
|
328
|
+
const t = item;
|
|
329
|
+
const toolName = typeof t['name'] === 'string' ? t['name'].trim().slice(0, 200) : '';
|
|
330
|
+
if (!toolName)
|
|
331
|
+
continue;
|
|
332
|
+
const detail = { name: toolName };
|
|
333
|
+
if (typeof t['scope'] === 'string')
|
|
334
|
+
detail.scope = t['scope'].trim().slice(0, 200);
|
|
335
|
+
if (typeof t['data_class'] === 'string')
|
|
336
|
+
detail.data_class = t['data_class'].trim().slice(0, 50);
|
|
337
|
+
out.push(detail);
|
|
338
|
+
if (out.length >= 200)
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
return out.length > 0 ? out : undefined;
|
|
342
|
+
};
|
|
307
343
|
return {
|
|
308
344
|
agentId: stableId(relPath, `manifest:${name}`),
|
|
309
345
|
filePath: relPath,
|
|
@@ -317,6 +353,17 @@ function parseAgentManifestJson(relPath, text) {
|
|
|
317
353
|
fromManifest: true,
|
|
318
354
|
tools: toStringList(obj['tools']),
|
|
319
355
|
mcpServers: toStringList(obj['mcp_servers'] ?? obj['mcpServers']),
|
|
356
|
+
// TS-008 lossless capture (ticket A2)
|
|
357
|
+
model_identifier: safeStr(obj['model_identifier'], 200),
|
|
358
|
+
version: safeStr(obj['version'], 100),
|
|
359
|
+
vertical: safeStr(obj['vertical'], 100),
|
|
360
|
+
allowed_domains: toStringList(obj['allowed_domains']),
|
|
361
|
+
toolDetails: toToolDetailList(obj['tools']),
|
|
362
|
+
max_concurrent_actions: safeCount(obj['max_concurrent_actions']),
|
|
363
|
+
// Identity fields (IDENTITY-REUSE)
|
|
364
|
+
passport_id: safeId(obj['passport_id']),
|
|
365
|
+
registration_id: safeId(obj['registration_id']),
|
|
366
|
+
agent_id: safeId(obj['agent_id']),
|
|
320
367
|
};
|
|
321
368
|
}
|
|
322
369
|
function walkDir(dirPath, baseDir, results, budget, depth) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-dir-scanner.js","sourceRoot":"","sources":["../../src/cli/agent-dir-scanner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-dir-scanner.js","sourceRoot":"","sources":["../../src/cli/agent-dir-scanner.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -193,6 +193,81 @@ export declare function writeGovernanceQuickstart(projectDir: string, packs: str
|
|
|
193
193
|
* Does NOT auto-install. Returns relative path.
|
|
194
194
|
*/
|
|
195
195
|
export declare function writeGovernanceMcpSuggest(projectDir: string, tenantId?: string): string;
|
|
196
|
+
/**
|
|
197
|
+
* Per-agent identity entry written into .governance.json `agents[]`.
|
|
198
|
+
* Each entry maps a locally-scanned agent (identified by localId = DetectedAgent.agentId)
|
|
199
|
+
* to the server-issued identity returned by register-fleet.
|
|
200
|
+
*/
|
|
201
|
+
export interface PerAgentIdentityEntry {
|
|
202
|
+
/** Local scanner id — stable sha256-based 'auto-<12hex>' string. */
|
|
203
|
+
localId: string;
|
|
204
|
+
/** Server-assigned agent UUID. */
|
|
205
|
+
agentId: string;
|
|
206
|
+
/** Provisional passport id — null when PII gate blocked issuance (Invariant 2). */
|
|
207
|
+
passportId: string | null;
|
|
208
|
+
/**
|
|
209
|
+
* Per-agent JWT minted by the server with sub=agent:<agentId>.
|
|
210
|
+
* Null only when JWT_SECRET was absent server-side (advisory, Invariant 2).
|
|
211
|
+
*/
|
|
212
|
+
serviceToken: string | null;
|
|
213
|
+
/** File path (relative to agent scan root) from the local scan. */
|
|
214
|
+
filePath?: string;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Minimal shape returned in registered[] by POST /api/v1/onboarding/register-fleet
|
|
218
|
+
* after the TS-002 server-half landed (commit 74946298).
|
|
219
|
+
*/
|
|
220
|
+
export interface RegisterFleetRegisteredEntry {
|
|
221
|
+
localId?: string;
|
|
222
|
+
agentId: string;
|
|
223
|
+
passportId: string | null;
|
|
224
|
+
serviceToken: string | null;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Minimal local DetectedAgent shape needed to resolve filePath from localId.
|
|
228
|
+
* Only the two fields the identity write cares about.
|
|
229
|
+
*/
|
|
230
|
+
export interface LocalAgentRef {
|
|
231
|
+
agentId: string;
|
|
232
|
+
filePath: string;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* TS-002 CLI half — consume the registered[] list returned by register-fleet
|
|
236
|
+
* and write a per-agent identity block into the project's .governance.json.
|
|
237
|
+
*
|
|
238
|
+
* Shape written:
|
|
239
|
+
* ```json
|
|
240
|
+
* {
|
|
241
|
+
* "agents": [
|
|
242
|
+
* { "localId": "auto-...", "agentId": "srv-uuid", "passportId": "pp-...",
|
|
243
|
+
* "serviceToken": "eyJ...", "filePath": "src/agents/billing.py" }
|
|
244
|
+
* ],
|
|
245
|
+
* "runtime": {
|
|
246
|
+
* "agentId": "<first-registered-agentId>",
|
|
247
|
+
* "serviceToken": "<first-registered-serviceToken>",
|
|
248
|
+
* ...rest of existing runtime block
|
|
249
|
+
* }
|
|
250
|
+
* }
|
|
251
|
+
* ```
|
|
252
|
+
*
|
|
253
|
+
* Back-compat guarantee: runtime.agentId + runtime.serviceToken are updated to
|
|
254
|
+
* the first registered agent so the existing audit-logger.sh → /cluster-events
|
|
255
|
+
* push path (which reads these two flat fields) continues to work for the
|
|
256
|
+
* single-agent case. The per-agent `agents[]` array is the source of truth for
|
|
257
|
+
* multi-agent deployments; future per-agent attribution reads from there.
|
|
258
|
+
*
|
|
259
|
+
* Null-passport and null-serviceToken entries are written without throwing
|
|
260
|
+
* (Invariant 2 — advisory, never blocking). A null serviceToken from agent N
|
|
261
|
+
* does NOT overwrite the runtime.serviceToken that was already set.
|
|
262
|
+
*
|
|
263
|
+
* Idempotent: calling twice with the same input upserts by localId — does not
|
|
264
|
+
* duplicate entries.
|
|
265
|
+
*
|
|
266
|
+
* @param projectDir Absolute path to the directory containing .governance.json
|
|
267
|
+
* @param registered Array from register-fleet response.registered[]
|
|
268
|
+
* @param localAgents Locally scanned DetectedAgent list (used to resolve filePath by localId)
|
|
269
|
+
*/
|
|
270
|
+
export declare function writePerAgentIdentities(projectDir: string, registered: RegisterFleetRegisteredEntry[], localAgents: LocalAgentRef[]): void;
|
|
196
271
|
export declare function nonInteractiveInit(projectDir: string, opts: {
|
|
197
272
|
packs?: string;
|
|
198
273
|
license?: string;
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -64,6 +64,7 @@ exports.writeCursorGovernanceRules = writeCursorGovernanceRules;
|
|
|
64
64
|
exports.writeContinueConfig = writeContinueConfig;
|
|
65
65
|
exports.writeGovernanceQuickstart = writeGovernanceQuickstart;
|
|
66
66
|
exports.writeGovernanceMcpSuggest = writeGovernanceMcpSuggest;
|
|
67
|
+
exports.writePerAgentIdentities = writePerAgentIdentities;
|
|
67
68
|
exports.nonInteractiveInit = nonInteractiveInit;
|
|
68
69
|
exports.retentionSweep = retentionSweep;
|
|
69
70
|
exports.verifyChain = verifyChain;
|
|
@@ -1264,6 +1265,25 @@ async function interactiveInit(projectDir, opts = {}) {
|
|
|
1264
1265
|
writeVendorCodeToConfig(projectDir, '', true);
|
|
1265
1266
|
process.stdout.write('Offline mode recorded in .governance.json\n');
|
|
1266
1267
|
}
|
|
1268
|
+
// TS-010 KEY-TRUST: pin the org public key from the server into
|
|
1269
|
+
// .governance.json immediately after the config is written.
|
|
1270
|
+
// The key is fetched over authenticated TLS from the same gov-server that
|
|
1271
|
+
// issued the serviceToken. Subsequent `ai-governance sync` calls verify
|
|
1272
|
+
// bundle signatures against this pinned key (never the bundle-embedded key).
|
|
1273
|
+
// Non-fatal: advisory if unavailable (Invariant 2), but sync will fail
|
|
1274
|
+
// closed (bundle rejected) until the key is pinned.
|
|
1275
|
+
if (opts.runtime?.govServerUrl && opts.runtime?.orgId) {
|
|
1276
|
+
const { fetchAndPinOrgPublicKey } = require('./sync.js');
|
|
1277
|
+
const pinned = fetchAndPinOrgPublicKey(opts.runtime.govServerUrl, opts.runtime.orgId, configPath);
|
|
1278
|
+
if (pinned) {
|
|
1279
|
+
process.stdout.write(`Org public key pinned for offline bundle verification.\n`);
|
|
1280
|
+
}
|
|
1281
|
+
else {
|
|
1282
|
+
process.stderr.write('WARNING: could not fetch org public key for pinning. ' +
|
|
1283
|
+
'`ai-governance sync` will reject bundles until the key is pinned. ' +
|
|
1284
|
+
'Re-run `ai-governance init` when the server is reachable.\n');
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1267
1287
|
// Install hooks
|
|
1268
1288
|
const { installed, errors } = installHooks(projectDir, config);
|
|
1269
1289
|
process.stdout.write(`Hooks installed: ${installed}\n`);
|
|
@@ -1745,6 +1765,106 @@ function writeGovernanceMcpSuggest(projectDir, tenantId) {
|
|
|
1745
1765
|
].join('\n'));
|
|
1746
1766
|
return path.relative(projectDir, mcpSuggestPath);
|
|
1747
1767
|
}
|
|
1768
|
+
/**
|
|
1769
|
+
* TS-002 CLI half — consume the registered[] list returned by register-fleet
|
|
1770
|
+
* and write a per-agent identity block into the project's .governance.json.
|
|
1771
|
+
*
|
|
1772
|
+
* Shape written:
|
|
1773
|
+
* ```json
|
|
1774
|
+
* {
|
|
1775
|
+
* "agents": [
|
|
1776
|
+
* { "localId": "auto-...", "agentId": "srv-uuid", "passportId": "pp-...",
|
|
1777
|
+
* "serviceToken": "eyJ...", "filePath": "src/agents/billing.py" }
|
|
1778
|
+
* ],
|
|
1779
|
+
* "runtime": {
|
|
1780
|
+
* "agentId": "<first-registered-agentId>",
|
|
1781
|
+
* "serviceToken": "<first-registered-serviceToken>",
|
|
1782
|
+
* ...rest of existing runtime block
|
|
1783
|
+
* }
|
|
1784
|
+
* }
|
|
1785
|
+
* ```
|
|
1786
|
+
*
|
|
1787
|
+
* Back-compat guarantee: runtime.agentId + runtime.serviceToken are updated to
|
|
1788
|
+
* the first registered agent so the existing audit-logger.sh → /cluster-events
|
|
1789
|
+
* push path (which reads these two flat fields) continues to work for the
|
|
1790
|
+
* single-agent case. The per-agent `agents[]` array is the source of truth for
|
|
1791
|
+
* multi-agent deployments; future per-agent attribution reads from there.
|
|
1792
|
+
*
|
|
1793
|
+
* Null-passport and null-serviceToken entries are written without throwing
|
|
1794
|
+
* (Invariant 2 — advisory, never blocking). A null serviceToken from agent N
|
|
1795
|
+
* does NOT overwrite the runtime.serviceToken that was already set.
|
|
1796
|
+
*
|
|
1797
|
+
* Idempotent: calling twice with the same input upserts by localId — does not
|
|
1798
|
+
* duplicate entries.
|
|
1799
|
+
*
|
|
1800
|
+
* @param projectDir Absolute path to the directory containing .governance.json
|
|
1801
|
+
* @param registered Array from register-fleet response.registered[]
|
|
1802
|
+
* @param localAgents Locally scanned DetectedAgent list (used to resolve filePath by localId)
|
|
1803
|
+
*/
|
|
1804
|
+
function writePerAgentIdentities(projectDir, registered, localAgents) {
|
|
1805
|
+
if (registered.length === 0)
|
|
1806
|
+
return;
|
|
1807
|
+
const configPath = path.join(projectDir, '.governance.json');
|
|
1808
|
+
// Read existing config — must preserve all existing keys (packs, hooks, etc.)
|
|
1809
|
+
let config = {};
|
|
1810
|
+
if (fs.existsSync(configPath)) {
|
|
1811
|
+
try {
|
|
1812
|
+
config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
1813
|
+
}
|
|
1814
|
+
catch { /* fresh config — start empty */ }
|
|
1815
|
+
}
|
|
1816
|
+
// Build a quick-lookup: localId → filePath from the local scan.
|
|
1817
|
+
// For entries where localId is absent, fall back to agentId as key.
|
|
1818
|
+
const filePathByLocalId = new Map();
|
|
1819
|
+
for (const la of localAgents) {
|
|
1820
|
+
filePathByLocalId.set(la.agentId, la.filePath);
|
|
1821
|
+
}
|
|
1822
|
+
// Build the new per-agent entries.
|
|
1823
|
+
const newEntries = registered.map((r) => {
|
|
1824
|
+
const key = r.localId ?? r.agentId;
|
|
1825
|
+
return {
|
|
1826
|
+
localId: key,
|
|
1827
|
+
agentId: r.agentId,
|
|
1828
|
+
passportId: r.passportId,
|
|
1829
|
+
serviceToken: r.serviceToken,
|
|
1830
|
+
filePath: filePathByLocalId.get(key),
|
|
1831
|
+
};
|
|
1832
|
+
});
|
|
1833
|
+
// Upsert into existing agents[] (idempotent — replace by localId).
|
|
1834
|
+
const existingEntries = Array.isArray(config['agents'])
|
|
1835
|
+
? config['agents']
|
|
1836
|
+
: [];
|
|
1837
|
+
const merged = [...existingEntries];
|
|
1838
|
+
for (const entry of newEntries) {
|
|
1839
|
+
const idx = merged.findIndex((e) => e.localId === entry.localId);
|
|
1840
|
+
if (idx >= 0) {
|
|
1841
|
+
merged[idx] = entry;
|
|
1842
|
+
}
|
|
1843
|
+
else {
|
|
1844
|
+
merged.push(entry);
|
|
1845
|
+
}
|
|
1846
|
+
}
|
|
1847
|
+
config['agents'] = merged;
|
|
1848
|
+
// Back-compat: update runtime.agentId + runtime.serviceToken to the first
|
|
1849
|
+
// registered agent so the audit-logger.sh single-agent push path keeps working.
|
|
1850
|
+
// Only update runtime.serviceToken if the first agent's token is non-null
|
|
1851
|
+
// (do not overwrite a valid existing token with null).
|
|
1852
|
+
const first = newEntries[0];
|
|
1853
|
+
if (first) {
|
|
1854
|
+
const runtime = config['runtime'] ?? {};
|
|
1855
|
+
runtime['agentId'] = first.agentId;
|
|
1856
|
+
if (first.serviceToken !== null) {
|
|
1857
|
+
runtime['serviceToken'] = first.serviceToken;
|
|
1858
|
+
}
|
|
1859
|
+
config['runtime'] = runtime;
|
|
1860
|
+
}
|
|
1861
|
+
// Write atomically — mode 0o600 (service tokens are secrets, Invariant 10).
|
|
1862
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
1863
|
+
try {
|
|
1864
|
+
fs.chmodSync(configPath, 0o600);
|
|
1865
|
+
}
|
|
1866
|
+
catch { /* best-effort on Windows */ }
|
|
1867
|
+
}
|
|
1748
1868
|
// --- Non-interactive init (CI mode) ---
|
|
1749
1869
|
async function nonInteractiveInit(projectDir, opts) {
|
|
1750
1870
|
const licenseKey = opts.license || 'free';
|
|
@@ -2493,6 +2613,10 @@ Usage:
|
|
|
2493
2613
|
[--archive-dir <dir>] Archive destination (else delete)
|
|
2494
2614
|
[--dry-run] Report without acting
|
|
2495
2615
|
[--json] Machine-readable output
|
|
2616
|
+
ai-governance sync Pull server governance bundle to local .governance.json
|
|
2617
|
+
[--apply] Write changes (default: dry-run, shows diff only)
|
|
2618
|
+
[--agent <id>] Sync a specific agent only
|
|
2619
|
+
[--gov-server-url <url>] Override gov server URL
|
|
2496
2620
|
ai-governance rotate-token Rotate the runtime service token
|
|
2497
2621
|
Reads .governance.json runtime.serviceToken,
|
|
2498
2622
|
requests a fresh token from the gov-server,
|
|
@@ -2818,7 +2942,74 @@ if (isDirectRun) {
|
|
|
2818
2942
|
if (runtimeConfig?.serviceToken && runtimeConfig?.govServerUrl && detectedAgents.length > 0) {
|
|
2819
2943
|
try {
|
|
2820
2944
|
const { spawnSync } = require('node:child_process');
|
|
2945
|
+
// TS-009: capture project identity so the server can link agents to
|
|
2946
|
+
// the customer's actual project for audit roll-up in the portal.
|
|
2947
|
+
//
|
|
2948
|
+
// projectId: deterministic hash of the agent-dir absolute path.
|
|
2949
|
+
// Uses SHA-256(resolvedAgentDir) → first 16 hex chars. Stable across
|
|
2950
|
+
// re-runs on the same machine for the same project. If the customer
|
|
2951
|
+
// moves the repo, a new projectId is generated (a new project entity).
|
|
2952
|
+
//
|
|
2953
|
+
// projectName: basename of resolvedAgentDir (human-readable). If git
|
|
2954
|
+
// is available and resolvedAgentDir is inside a repo, use the repo
|
|
2955
|
+
// name (basename of the top-level). Falls back to dir basename.
|
|
2956
|
+
//
|
|
2957
|
+
// origin: git remote 'origin' URL, read locally by the CLI from the
|
|
2958
|
+
// customer's repo. The client's CLI reads its own git remote — we
|
|
2959
|
+
// NEVER scan or poll their infrastructure (Invariant 10: push-receive).
|
|
2960
|
+
// Only sent when git is available and the remote is set; never fails.
|
|
2961
|
+
//
|
|
2962
|
+
// Advisory (Invariant 2): any failure in this block produces null
|
|
2963
|
+
// values — the fleet payload is always sent and registration never
|
|
2964
|
+
// fails because of a missing project block.
|
|
2965
|
+
const captureProjectIdentity = () => {
|
|
2966
|
+
let origin;
|
|
2967
|
+
let projectName = path.basename(resolvedAgentDir);
|
|
2968
|
+
let gitRootDir;
|
|
2969
|
+
// Attempt to read git remote origin and repo name (client reads
|
|
2970
|
+
// its own git — Invariant 10 respected).
|
|
2971
|
+
try {
|
|
2972
|
+
const gitRemote = spawnSync('git', ['-C', resolvedAgentDir, 'remote', 'get-url', 'origin'], { encoding: 'utf8', timeout: 3000 });
|
|
2973
|
+
if (gitRemote.status === 0 && gitRemote.stdout) {
|
|
2974
|
+
origin = gitRemote.stdout.trim();
|
|
2975
|
+
// Derive projectName from the repo name embedded in the origin URL.
|
|
2976
|
+
// Works for both SSH (git@github.com:org/repo.git) and HTTPS
|
|
2977
|
+
// (https://github.com/org/repo.git). Strip trailing .git.
|
|
2978
|
+
const match = origin.match(/[\/:]([\w.-]+?)(?:\.git)?$/);
|
|
2979
|
+
if (match && match[1]) {
|
|
2980
|
+
projectName = match[1];
|
|
2981
|
+
}
|
|
2982
|
+
}
|
|
2983
|
+
}
|
|
2984
|
+
catch { /* git not available or not a git repo — use dir basename */ }
|
|
2985
|
+
try {
|
|
2986
|
+
// Best-effort: get the git top-level for a more stable projectId
|
|
2987
|
+
const gitRoot = spawnSync('git', ['-C', resolvedAgentDir, 'rev-parse', '--show-toplevel'], { encoding: 'utf8', timeout: 3000 });
|
|
2988
|
+
if (gitRoot.status === 0 && gitRoot.stdout) {
|
|
2989
|
+
gitRootDir = gitRoot.stdout.trim();
|
|
2990
|
+
// Override projectName with repo root basename when git is available
|
|
2991
|
+
const rootBasename = path.basename(gitRootDir);
|
|
2992
|
+
if (rootBasename)
|
|
2993
|
+
projectName = rootBasename;
|
|
2994
|
+
}
|
|
2995
|
+
}
|
|
2996
|
+
catch { /* best-effort */ }
|
|
2997
|
+
// projectId: deterministic hash of the absolute project root dir
|
|
2998
|
+
// (git root when available, otherwise resolvedAgentDir). This gives
|
|
2999
|
+
// all register-fleet runs from the same repo the same projectId.
|
|
3000
|
+
const hashInput = gitRootDir ?? resolvedAgentDir;
|
|
3001
|
+
const projectId = 'proj-' + crypto.createHash('sha256').update(hashInput).digest('hex').slice(0, 16);
|
|
3002
|
+
return { projectId, projectName, ...(origin ? { origin } : {}) };
|
|
3003
|
+
};
|
|
3004
|
+
let projectIdentity;
|
|
3005
|
+
try {
|
|
3006
|
+
projectIdentity = captureProjectIdentity();
|
|
3007
|
+
}
|
|
3008
|
+
catch {
|
|
3009
|
+
// Advisory: project identity capture failure must never block fleet registration.
|
|
3010
|
+
}
|
|
2821
3011
|
const fleetPayload = {
|
|
3012
|
+
...(projectIdentity ? { project: projectIdentity } : {}),
|
|
2822
3013
|
agents: detectedAgents.map((a) => ({
|
|
2823
3014
|
localId: a.agentId,
|
|
2824
3015
|
name: a.name ?? undefined,
|
|
@@ -2830,6 +3021,17 @@ if (isDirectRun) {
|
|
|
2830
3021
|
// so the platform's OWASP/ASI analysis grades real tool surface.
|
|
2831
3022
|
tools: a.tools && a.tools.length > 0 ? a.tools : undefined,
|
|
2832
3023
|
mcpServers: a.mcpServers && a.mcpServers.length > 0 ? a.mcpServers : undefined,
|
|
3024
|
+
// TS-008 lossless capture (ticket A2): the scanner already
|
|
3025
|
+
// parses these from manifest.json; sending them closes the
|
|
3026
|
+
// model/version/vertical/allowed_domains/toolDetails/
|
|
3027
|
+
// max_concurrent_actions = null gap on the registered agent
|
|
3028
|
+
// (server validates + persists them — FleetAgentInput).
|
|
3029
|
+
model_identifier: a.model_identifier,
|
|
3030
|
+
version: a.version,
|
|
3031
|
+
vertical: a.vertical,
|
|
3032
|
+
allowed_domains: a.allowed_domains && a.allowed_domains.length > 0 ? a.allowed_domains : undefined,
|
|
3033
|
+
toolDetails: a.toolDetails && a.toolDetails.length > 0 ? a.toolDetails : undefined,
|
|
3034
|
+
max_concurrent_actions: a.max_concurrent_actions,
|
|
2833
3035
|
})),
|
|
2834
3036
|
};
|
|
2835
3037
|
const fleetResult = spawnSync('curl', [
|
|
@@ -2848,9 +3050,39 @@ if (isDirectRun) {
|
|
|
2848
3050
|
const resp = JSON.parse(fleetResult.stdout);
|
|
2849
3051
|
if (typeof resp.registeredCount === 'number') {
|
|
2850
3052
|
fleetRegistered = true;
|
|
2851
|
-
process.stdout.write(`\n✅
|
|
3053
|
+
process.stdout.write(`\n✅ Detected ${resp.registeredCount} agent(s) on the platform` +
|
|
2852
3054
|
(resp.skippedCount ? ` (${resp.skippedCount} already registered, skipped)` : '') +
|
|
2853
|
-
` — check your dashboard.\n`
|
|
3055
|
+
` — check your dashboard.\n` +
|
|
3056
|
+
// Slice 3c/3d (Decision 4): passports + runtime tokens are issued
|
|
3057
|
+
// at payment activation, not at detection. Tell the customer that
|
|
3058
|
+
// runtime push is unavailable until they Confirm + pay, and how to
|
|
3059
|
+
// activate it afterward.
|
|
3060
|
+
` ⏳ Runtime governance push is UNAVAILABLE until you Confirm + pay in the dashboard\n` +
|
|
3061
|
+
` (detected agents are not yet activated). After you Confirm, run\n` +
|
|
3062
|
+
` \`ai-governance sync --apply\` to activate each agent's runtime push.\n`);
|
|
3063
|
+
// TS-002 CLI half: persist per-agent identities into .governance.json.
|
|
3064
|
+
// Each agent gets its own serviceToken (sub=agent:<agentId>) so future
|
|
3065
|
+
// per-agent audit pushes carry the correct identity. The runtime block
|
|
3066
|
+
// is updated to the first agent for single-agent backward-compat.
|
|
3067
|
+
// Non-fatal (Invariant 2): if this write fails governance still runs.
|
|
3068
|
+
if (Array.isArray(resp.registered) && resp.registered.length > 0) {
|
|
3069
|
+
try {
|
|
3070
|
+
const localRefs = detectedAgents.map((a) => ({
|
|
3071
|
+
agentId: a.agentId,
|
|
3072
|
+
filePath: a.filePath,
|
|
3073
|
+
}));
|
|
3074
|
+
writePerAgentIdentities(projectDir, resp.registered, localRefs);
|
|
3075
|
+
process.stdout.write(`[CLI] per-agent identities written to .governance.json ` +
|
|
3076
|
+
`(${resp.registered.length} agent(s)).\n`);
|
|
3077
|
+
}
|
|
3078
|
+
catch (identityErr) {
|
|
3079
|
+
// Non-fatal — fleet is registered on the platform; local identity
|
|
3080
|
+
// write failure must not undo that success (Invariant 2).
|
|
3081
|
+
process.stderr.write(`[CLI] per-agent identity write failed (non-fatal): ` +
|
|
3082
|
+
`${identityErr.message}. ` +
|
|
3083
|
+
`Agents are registered on the platform; re-run init to retry the write.\n`);
|
|
3084
|
+
}
|
|
3085
|
+
}
|
|
2854
3086
|
}
|
|
2855
3087
|
else if (resp.error) {
|
|
2856
3088
|
process.stderr.write(`[CLI] register-fleet: server error: ${resp.error}\n`);
|
|
@@ -2941,6 +3173,27 @@ if (isDirectRun) {
|
|
|
2941
3173
|
runtime: runtimeConfig,
|
|
2942
3174
|
agentDir: agentDirArg,
|
|
2943
3175
|
});
|
|
3176
|
+
// TS-010 KEY-TRUST: pin the org public key from the server into
|
|
3177
|
+
// .governance.json immediately after init writes the config file.
|
|
3178
|
+
// This is the trusted pinning event — the key is fetched over the same
|
|
3179
|
+
// authenticated TLS channel that issued the runtimeConfig exchange.
|
|
3180
|
+
// Subsequent `ai-governance sync` calls verify bundle signatures against
|
|
3181
|
+
// this pinned key. Non-fatal: advisory if unavailable (Invariant 2), but
|
|
3182
|
+
// sync will fail closed until the key is pinned.
|
|
3183
|
+
if (runtimeConfig?.govServerUrl && runtimeConfig?.orgId) {
|
|
3184
|
+
// fetchAndPinOrgPublicKey is imported from sync.ts
|
|
3185
|
+
const { fetchAndPinOrgPublicKey } = require('./sync.js');
|
|
3186
|
+
const configPath = path.join(projectDir, '.governance.json');
|
|
3187
|
+
const pinned = fetchAndPinOrgPublicKey(runtimeConfig.govServerUrl, runtimeConfig.orgId, configPath);
|
|
3188
|
+
if (pinned) {
|
|
3189
|
+
process.stderr.write(`[CLI] org public key pinned to .governance.json (${pinned.slice(0, 8)}...).\n`);
|
|
3190
|
+
}
|
|
3191
|
+
else {
|
|
3192
|
+
process.stderr.write('[CLI] WARNING: could not fetch org public key for pinning. ' +
|
|
3193
|
+
'`ai-governance sync` will fail closed until the key is pinned. ' +
|
|
3194
|
+
'Re-run `ai-governance init` when the server is reachable to pin the key.\n');
|
|
3195
|
+
}
|
|
3196
|
+
}
|
|
2944
3197
|
}
|
|
2945
3198
|
else if (!agentDirFlag) {
|
|
2946
3199
|
interactiveInit(projectDir, { vendorCodeFlag, offlineFlag, licenseServerUrl, runtime: runtimeConfig }).catch(err => {
|
|
@@ -3043,6 +3296,19 @@ if (isDirectRun) {
|
|
|
3043
3296
|
});
|
|
3044
3297
|
});
|
|
3045
3298
|
}
|
|
3299
|
+
else if (command === 'sync') {
|
|
3300
|
+
// TS-010: pull server governance bundle and re-materialize local .governance.json.
|
|
3301
|
+
// Safe by default — no --apply = dry-run (shows diff, writes nothing).
|
|
3302
|
+
// See src/cli/sync.ts.
|
|
3303
|
+
Promise.resolve().then(() => __importStar(require('./sync.js'))).then(({ runSyncCommand }) => {
|
|
3304
|
+
runSyncCommand(args.slice(1), projectDir).then((result) => {
|
|
3305
|
+
process.exit(result.errors > 0 ? 1 : 0);
|
|
3306
|
+
}).catch((e) => {
|
|
3307
|
+
process.stderr.write(`Error: ${e.message}\n`);
|
|
3308
|
+
process.exit(2);
|
|
3309
|
+
});
|
|
3310
|
+
});
|
|
3311
|
+
}
|
|
3046
3312
|
else if (command === 'scan') {
|
|
3047
3313
|
// A-2 (2026-05-19): customer-side OWASP Agentic Top 10 scan. Replaces
|
|
3048
3314
|
// the deprecated W-03 server-side Git-clone flow. Source code stays on
|