governance-sdk 0.5.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.
- package/LICENSE +21 -0
- package/README.md +559 -0
- package/dist/agent-identity-ed25519.d.ts +80 -0
- package/dist/agent-identity-ed25519.d.ts.map +1 -0
- package/dist/agent-identity-ed25519.js +134 -0
- package/dist/agent-identity-ed25519.js.map +1 -0
- package/dist/agent-identity.d.ts +65 -0
- package/dist/agent-identity.d.ts.map +1 -0
- package/dist/agent-identity.js +85 -0
- package/dist/agent-identity.js.map +1 -0
- package/dist/audit-integrity.d.ts +78 -0
- package/dist/audit-integrity.d.ts.map +1 -0
- package/dist/audit-integrity.js +173 -0
- package/dist/audit-integrity.js.map +1 -0
- package/dist/behavioral-scorer.d.ts +72 -0
- package/dist/behavioral-scorer.d.ts.map +1 -0
- package/dist/behavioral-scorer.js +223 -0
- package/dist/behavioral-scorer.js.map +1 -0
- package/dist/cli/init.d.ts +11 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +217 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/compliance-articles.d.ts +71 -0
- package/dist/compliance-articles.d.ts.map +1 -0
- package/dist/compliance-articles.js +201 -0
- package/dist/compliance-articles.js.map +1 -0
- package/dist/compliance.d.ts +24 -0
- package/dist/compliance.d.ts.map +1 -0
- package/dist/compliance.js +183 -0
- package/dist/compliance.js.map +1 -0
- package/dist/conditions/builtins.d.ts +17 -0
- package/dist/conditions/builtins.d.ts.map +1 -0
- package/dist/conditions/builtins.js +213 -0
- package/dist/conditions/builtins.js.map +1 -0
- package/dist/conditions/postprocess.d.ts +12 -0
- package/dist/conditions/postprocess.d.ts.map +1 -0
- package/dist/conditions/postprocess.js +33 -0
- package/dist/conditions/postprocess.js.map +1 -0
- package/dist/conditions/preprocess.d.ts +12 -0
- package/dist/conditions/preprocess.d.ts.map +1 -0
- package/dist/conditions/preprocess.js +47 -0
- package/dist/conditions/preprocess.js.map +1 -0
- package/dist/conditions/process.d.ts +14 -0
- package/dist/conditions/process.d.ts.map +1 -0
- package/dist/conditions/process.js +78 -0
- package/dist/conditions/process.js.map +1 -0
- package/dist/conditions/sensitive-patterns.d.ts +13 -0
- package/dist/conditions/sensitive-patterns.d.ts.map +1 -0
- package/dist/conditions/sensitive-patterns.js +42 -0
- package/dist/conditions/sensitive-patterns.js.map +1 -0
- package/dist/dry-run.d.ts +85 -0
- package/dist/dry-run.d.ts.map +1 -0
- package/dist/dry-run.js +132 -0
- package/dist/dry-run.js.map +1 -0
- package/dist/eval-red-team.d.ts +69 -0
- package/dist/eval-red-team.d.ts.map +1 -0
- package/dist/eval-red-team.js +205 -0
- package/dist/eval-red-team.js.map +1 -0
- package/dist/eval-scorer.d.ts +56 -0
- package/dist/eval-scorer.d.ts.map +1 -0
- package/dist/eval-scorer.js +148 -0
- package/dist/eval-scorer.js.map +1 -0
- package/dist/eval-trace.d.ts +30 -0
- package/dist/eval-trace.d.ts.map +1 -0
- package/dist/eval-trace.js +129 -0
- package/dist/eval-trace.js.map +1 -0
- package/dist/eval-types.d.ts +108 -0
- package/dist/eval-types.d.ts.map +1 -0
- package/dist/eval-types.js +14 -0
- package/dist/eval-types.js.map +1 -0
- package/dist/events.d.ts +57 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +81 -0
- package/dist/events.js.map +1 -0
- package/dist/federation-types.d.ts +58 -0
- package/dist/federation-types.d.ts.map +1 -0
- package/dist/federation-types.js +8 -0
- package/dist/federation-types.js.map +1 -0
- package/dist/federation.d.ts +42 -0
- package/dist/federation.d.ts.map +1 -0
- package/dist/federation.js +158 -0
- package/dist/federation.js.map +1 -0
- package/dist/index.d.ts +142 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +273 -0
- package/dist/index.js.map +1 -0
- package/dist/injection-benchmark.d.ts +62 -0
- package/dist/injection-benchmark.d.ts.map +1 -0
- package/dist/injection-benchmark.js +201 -0
- package/dist/injection-benchmark.js.map +1 -0
- package/dist/injection-classifier.d.ts +69 -0
- package/dist/injection-classifier.d.ts.map +1 -0
- package/dist/injection-classifier.js +98 -0
- package/dist/injection-classifier.js.map +1 -0
- package/dist/injection-detect.d.ts +59 -0
- package/dist/injection-detect.d.ts.map +1 -0
- package/dist/injection-detect.js +175 -0
- package/dist/injection-detect.js.map +1 -0
- package/dist/injection-patterns-ext.d.ts +7 -0
- package/dist/injection-patterns-ext.d.ts.map +1 -0
- package/dist/injection-patterns-ext.js +71 -0
- package/dist/injection-patterns-ext.js.map +1 -0
- package/dist/injection-patterns.d.ts +15 -0
- package/dist/injection-patterns.d.ts.map +1 -0
- package/dist/injection-patterns.js +361 -0
- package/dist/injection-patterns.js.map +1 -0
- package/dist/iso-42001-articles.d.ts +34 -0
- package/dist/iso-42001-articles.d.ts.map +1 -0
- package/dist/iso-42001-articles.js +147 -0
- package/dist/iso-42001-articles.js.map +1 -0
- package/dist/iso-42001.d.ts +18 -0
- package/dist/iso-42001.d.ts.map +1 -0
- package/dist/iso-42001.js +156 -0
- package/dist/iso-42001.js.map +1 -0
- package/dist/kill-switch.d.ts +56 -0
- package/dist/kill-switch.d.ts.map +1 -0
- package/dist/kill-switch.js +173 -0
- package/dist/kill-switch.js.map +1 -0
- package/dist/metrics.d.ts +58 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +81 -0
- package/dist/metrics.js.map +1 -0
- package/dist/monorepo-detect.d.ts +30 -0
- package/dist/monorepo-detect.d.ts.map +1 -0
- package/dist/monorepo-detect.js +107 -0
- package/dist/monorepo-detect.js.map +1 -0
- package/dist/nist-ai-rmf-articles.d.ts +40 -0
- package/dist/nist-ai-rmf-articles.d.ts.map +1 -0
- package/dist/nist-ai-rmf-articles.js +156 -0
- package/dist/nist-ai-rmf-articles.js.map +1 -0
- package/dist/nist-ai-rmf.d.ts +20 -0
- package/dist/nist-ai-rmf.d.ts.map +1 -0
- package/dist/nist-ai-rmf.js +176 -0
- package/dist/nist-ai-rmf.js.map +1 -0
- package/dist/otel-hooks.d.ts +67 -0
- package/dist/otel-hooks.d.ts.map +1 -0
- package/dist/otel-hooks.js +100 -0
- package/dist/otel-hooks.js.map +1 -0
- package/dist/owasp-agentic-articles.d.ts +42 -0
- package/dist/owasp-agentic-articles.d.ts.map +1 -0
- package/dist/owasp-agentic-articles.js +236 -0
- package/dist/owasp-agentic-articles.js.map +1 -0
- package/dist/owasp-agentic.d.ts +20 -0
- package/dist/owasp-agentic.d.ts.map +1 -0
- package/dist/owasp-agentic.js +205 -0
- package/dist/owasp-agentic.js.map +1 -0
- package/dist/plugins/a2a-types.d.ts +241 -0
- package/dist/plugins/a2a-types.d.ts.map +1 -0
- package/dist/plugins/a2a-types.js +14 -0
- package/dist/plugins/a2a-types.js.map +1 -0
- package/dist/plugins/a2a.d.ts +37 -0
- package/dist/plugins/a2a.d.ts.map +1 -0
- package/dist/plugins/a2a.js +160 -0
- package/dist/plugins/a2a.js.map +1 -0
- package/dist/plugins/anthropic-types.d.ts +188 -0
- package/dist/plugins/anthropic-types.d.ts.map +1 -0
- package/dist/plugins/anthropic-types.js +8 -0
- package/dist/plugins/anthropic-types.js.map +1 -0
- package/dist/plugins/anthropic.d.ts +32 -0
- package/dist/plugins/anthropic.d.ts.map +1 -0
- package/dist/plugins/anthropic.js +131 -0
- package/dist/plugins/anthropic.js.map +1 -0
- package/dist/plugins/autogen-types.d.ts +121 -0
- package/dist/plugins/autogen-types.d.ts.map +1 -0
- package/dist/plugins/autogen-types.js +13 -0
- package/dist/plugins/autogen-types.js.map +1 -0
- package/dist/plugins/autogen.d.ts +41 -0
- package/dist/plugins/autogen.d.ts.map +1 -0
- package/dist/plugins/autogen.js +131 -0
- package/dist/plugins/autogen.js.map +1 -0
- package/dist/plugins/bedrock-types.d.ts +246 -0
- package/dist/plugins/bedrock-types.d.ts.map +1 -0
- package/dist/plugins/bedrock-types.js +8 -0
- package/dist/plugins/bedrock-types.js.map +1 -0
- package/dist/plugins/bedrock.d.ts +43 -0
- package/dist/plugins/bedrock.d.ts.map +1 -0
- package/dist/plugins/bedrock.js +155 -0
- package/dist/plugins/bedrock.js.map +1 -0
- package/dist/plugins/cloudflare-ai-types.d.ts +85 -0
- package/dist/plugins/cloudflare-ai-types.d.ts.map +1 -0
- package/dist/plugins/cloudflare-ai-types.js +10 -0
- package/dist/plugins/cloudflare-ai-types.js.map +1 -0
- package/dist/plugins/cloudflare-ai.d.ts +32 -0
- package/dist/plugins/cloudflare-ai.d.ts.map +1 -0
- package/dist/plugins/cloudflare-ai.js +108 -0
- package/dist/plugins/cloudflare-ai.js.map +1 -0
- package/dist/plugins/composio-types.d.ts +96 -0
- package/dist/plugins/composio-types.d.ts.map +1 -0
- package/dist/plugins/composio-types.js +13 -0
- package/dist/plugins/composio-types.js.map +1 -0
- package/dist/plugins/composio.d.ts +37 -0
- package/dist/plugins/composio.d.ts.map +1 -0
- package/dist/plugins/composio.js +118 -0
- package/dist/plugins/composio.js.map +1 -0
- package/dist/plugins/crewai-types.d.ts +153 -0
- package/dist/plugins/crewai-types.d.ts.map +1 -0
- package/dist/plugins/crewai-types.js +10 -0
- package/dist/plugins/crewai-types.js.map +1 -0
- package/dist/plugins/crewai.d.ts +37 -0
- package/dist/plugins/crewai.d.ts.map +1 -0
- package/dist/plugins/crewai.js +127 -0
- package/dist/plugins/crewai.js.map +1 -0
- package/dist/plugins/deno-types.d.ts +68 -0
- package/dist/plugins/deno-types.d.ts.map +1 -0
- package/dist/plugins/deno-types.js +8 -0
- package/dist/plugins/deno-types.js.map +1 -0
- package/dist/plugins/deno.d.ts +37 -0
- package/dist/plugins/deno.d.ts.map +1 -0
- package/dist/plugins/deno.js +129 -0
- package/dist/plugins/deno.js.map +1 -0
- package/dist/plugins/e2b-types.d.ts +140 -0
- package/dist/plugins/e2b-types.d.ts.map +1 -0
- package/dist/plugins/e2b-types.js +8 -0
- package/dist/plugins/e2b-types.js.map +1 -0
- package/dist/plugins/e2b.d.ts +43 -0
- package/dist/plugins/e2b.d.ts.map +1 -0
- package/dist/plugins/e2b.js +157 -0
- package/dist/plugins/e2b.js.map +1 -0
- package/dist/plugins/genkit-types.d.ts +88 -0
- package/dist/plugins/genkit-types.d.ts.map +1 -0
- package/dist/plugins/genkit-types.js +11 -0
- package/dist/plugins/genkit-types.js.map +1 -0
- package/dist/plugins/genkit.d.ts +35 -0
- package/dist/plugins/genkit.d.ts.map +1 -0
- package/dist/plugins/genkit.js +143 -0
- package/dist/plugins/genkit.js.map +1 -0
- package/dist/plugins/langchain.d.ts +130 -0
- package/dist/plugins/langchain.d.ts.map +1 -0
- package/dist/plugins/langchain.js +172 -0
- package/dist/plugins/langchain.js.map +1 -0
- package/dist/plugins/llamaindex-types.d.ts +86 -0
- package/dist/plugins/llamaindex-types.d.ts.map +1 -0
- package/dist/plugins/llamaindex-types.js +11 -0
- package/dist/plugins/llamaindex-types.js.map +1 -0
- package/dist/plugins/llamaindex.d.ts +36 -0
- package/dist/plugins/llamaindex.d.ts.map +1 -0
- package/dist/plugins/llamaindex.js +131 -0
- package/dist/plugins/llamaindex.js.map +1 -0
- package/dist/plugins/mastra-processor-types.d.ts +126 -0
- package/dist/plugins/mastra-processor-types.d.ts.map +1 -0
- package/dist/plugins/mastra-processor-types.js +11 -0
- package/dist/plugins/mastra-processor-types.js.map +1 -0
- package/dist/plugins/mastra-processor.d.ts +32 -0
- package/dist/plugins/mastra-processor.d.ts.map +1 -0
- package/dist/plugins/mastra-processor.js +126 -0
- package/dist/plugins/mastra-processor.js.map +1 -0
- package/dist/plugins/mastra.d.ts +100 -0
- package/dist/plugins/mastra.d.ts.map +1 -0
- package/dist/plugins/mastra.js +143 -0
- package/dist/plugins/mastra.js.map +1 -0
- package/dist/plugins/mcp-annotations.d.ts +54 -0
- package/dist/plugins/mcp-annotations.d.ts.map +1 -0
- package/dist/plugins/mcp-annotations.js +110 -0
- package/dist/plugins/mcp-annotations.js.map +1 -0
- package/dist/plugins/mcp-chain-audit.d.ts +74 -0
- package/dist/plugins/mcp-chain-audit.d.ts.map +1 -0
- package/dist/plugins/mcp-chain-audit.js +134 -0
- package/dist/plugins/mcp-chain-audit.js.map +1 -0
- package/dist/plugins/mcp-trust.d.ts +59 -0
- package/dist/plugins/mcp-trust.d.ts.map +1 -0
- package/dist/plugins/mcp-trust.js +100 -0
- package/dist/plugins/mcp-trust.js.map +1 -0
- package/dist/plugins/mcp-types.d.ts +183 -0
- package/dist/plugins/mcp-types.d.ts.map +1 -0
- package/dist/plugins/mcp-types.js +12 -0
- package/dist/plugins/mcp-types.js.map +1 -0
- package/dist/plugins/mcp.d.ts +41 -0
- package/dist/plugins/mcp.d.ts.map +1 -0
- package/dist/plugins/mcp.js +228 -0
- package/dist/plugins/mcp.js.map +1 -0
- package/dist/plugins/mistral-types.d.ts +72 -0
- package/dist/plugins/mistral-types.d.ts.map +1 -0
- package/dist/plugins/mistral-types.js +8 -0
- package/dist/plugins/mistral-types.js.map +1 -0
- package/dist/plugins/mistral.d.ts +32 -0
- package/dist/plugins/mistral.d.ts.map +1 -0
- package/dist/plugins/mistral.js +133 -0
- package/dist/plugins/mistral.js.map +1 -0
- package/dist/plugins/ollama-types.d.ts +76 -0
- package/dist/plugins/ollama-types.d.ts.map +1 -0
- package/dist/plugins/ollama-types.js +8 -0
- package/dist/plugins/ollama-types.js.map +1 -0
- package/dist/plugins/ollama.d.ts +32 -0
- package/dist/plugins/ollama.d.ts.map +1 -0
- package/dist/plugins/ollama.js +130 -0
- package/dist/plugins/ollama.js.map +1 -0
- package/dist/plugins/openai-agents-types.d.ts +130 -0
- package/dist/plugins/openai-agents-types.d.ts.map +1 -0
- package/dist/plugins/openai-agents-types.js +12 -0
- package/dist/plugins/openai-agents-types.js.map +1 -0
- package/dist/plugins/openai-agents.d.ts +37 -0
- package/dist/plugins/openai-agents.d.ts.map +1 -0
- package/dist/plugins/openai-agents.js +151 -0
- package/dist/plugins/openai-agents.js.map +1 -0
- package/dist/plugins/semantic-kernel-types.d.ts +103 -0
- package/dist/plugins/semantic-kernel-types.d.ts.map +1 -0
- package/dist/plugins/semantic-kernel-types.js +13 -0
- package/dist/plugins/semantic-kernel-types.js.map +1 -0
- package/dist/plugins/semantic-kernel.d.ts +37 -0
- package/dist/plugins/semantic-kernel.d.ts.map +1 -0
- package/dist/plugins/semantic-kernel.js +149 -0
- package/dist/plugins/semantic-kernel.js.map +1 -0
- package/dist/plugins/vercel-ai.d.ts +134 -0
- package/dist/plugins/vercel-ai.d.ts.map +1 -0
- package/dist/plugins/vercel-ai.js +130 -0
- package/dist/plugins/vercel-ai.js.map +1 -0
- package/dist/policy-builder.d.ts +52 -0
- package/dist/policy-builder.d.ts.map +1 -0
- package/dist/policy-builder.js +108 -0
- package/dist/policy-builder.js.map +1 -0
- package/dist/policy-compose-presets.d.ts +18 -0
- package/dist/policy-compose-presets.d.ts.map +1 -0
- package/dist/policy-compose-presets.js +52 -0
- package/dist/policy-compose-presets.js.map +1 -0
- package/dist/policy-compose.d.ts +66 -0
- package/dist/policy-compose.d.ts.map +1 -0
- package/dist/policy-compose.js +163 -0
- package/dist/policy-compose.js.map +1 -0
- package/dist/policy-presets-extended.d.ts +35 -0
- package/dist/policy-presets-extended.d.ts.map +1 -0
- package/dist/policy-presets-extended.js +137 -0
- package/dist/policy-presets-extended.js.map +1 -0
- package/dist/policy-presets.d.ts +77 -0
- package/dist/policy-presets.d.ts.map +1 -0
- package/dist/policy-presets.js +164 -0
- package/dist/policy-presets.js.map +1 -0
- package/dist/policy-stage-defaults.d.ts +8 -0
- package/dist/policy-stage-defaults.d.ts.map +1 -0
- package/dist/policy-stage-defaults.js +34 -0
- package/dist/policy-stage-defaults.js.map +1 -0
- package/dist/policy-yaml.d.ts +23 -0
- package/dist/policy-yaml.d.ts.map +1 -0
- package/dist/policy-yaml.js +216 -0
- package/dist/policy-yaml.js.map +1 -0
- package/dist/policy.d.ts +124 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +161 -0
- package/dist/policy.js.map +1 -0
- package/dist/remote-enforce.d.ts +44 -0
- package/dist/remote-enforce.d.ts.map +1 -0
- package/dist/remote-enforce.js +99 -0
- package/dist/remote-enforce.js.map +1 -0
- package/dist/repo-patterns.d.ts +32 -0
- package/dist/repo-patterns.d.ts.map +1 -0
- package/dist/repo-patterns.js +222 -0
- package/dist/repo-patterns.js.map +1 -0
- package/dist/sandbox.d.ts +68 -0
- package/dist/sandbox.d.ts.map +1 -0
- package/dist/sandbox.js +124 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/scorer-dimensions.d.ts +10 -0
- package/dist/scorer-dimensions.d.ts.map +1 -0
- package/dist/scorer-dimensions.js +184 -0
- package/dist/scorer-dimensions.js.map +1 -0
- package/dist/scorer.d.ts +27 -0
- package/dist/scorer.d.ts.map +1 -0
- package/dist/scorer.js +138 -0
- package/dist/scorer.js.map +1 -0
- package/dist/storage-postgres-schema.d.ts +47 -0
- package/dist/storage-postgres-schema.d.ts.map +1 -0
- package/dist/storage-postgres-schema.js +134 -0
- package/dist/storage-postgres-schema.js.map +1 -0
- package/dist/storage-postgres.d.ts +41 -0
- package/dist/storage-postgres.d.ts.map +1 -0
- package/dist/storage-postgres.js +180 -0
- package/dist/storage-postgres.js.map +1 -0
- package/dist/storage.d.ts +65 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +85 -0
- package/dist/storage.js.map +1 -0
- package/dist/supply-chain-sbom.d.ts +72 -0
- package/dist/supply-chain-sbom.d.ts.map +1 -0
- package/dist/supply-chain-sbom.js +73 -0
- package/dist/supply-chain-sbom.js.map +1 -0
- package/dist/supply-chain.d.ts +61 -0
- package/dist/supply-chain.d.ts.map +1 -0
- package/dist/supply-chain.js +95 -0
- package/dist/supply-chain.js.map +1 -0
- package/dist/token-types.d.ts +77 -0
- package/dist/token-types.d.ts.map +1 -0
- package/dist/token-types.js +31 -0
- package/dist/token-types.js.map +1 -0
- package/dist/types.d.ts +71 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +361 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* governance-sdk — In-Memory Trace Collector
|
|
3
|
+
*
|
|
4
|
+
* Captures agent operation traces for eval scoring.
|
|
5
|
+
* Default implementation stores traces in memory with configurable limits.
|
|
6
|
+
* Commercial deployments replace this with a persistent backend.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { createTraceCollector } from 'governance-sdk/eval-trace';
|
|
11
|
+
*
|
|
12
|
+
* const traces = createTraceCollector({ maxTraces: 200 });
|
|
13
|
+
* const ctx = traces.startTrace('luna', 'What deals closed this week?');
|
|
14
|
+
* const spanId = ctx.addSpan({
|
|
15
|
+
* operation: 'tool_call', toolName: 'honeycomb_search',
|
|
16
|
+
* input: { query: 'deals closed this week' },
|
|
17
|
+
* output: { results: [...] }, latencyMs: 142, success: true,
|
|
18
|
+
* });
|
|
19
|
+
* const trace = ctx.end('3 deals closed this week totaling $45k');
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import type { TraceCollector } from "./eval-types.js";
|
|
23
|
+
export interface TraceCollectorConfig {
|
|
24
|
+
/** Maximum traces to keep in memory (default: 100). Oldest evicted first. */
|
|
25
|
+
maxTraces?: number;
|
|
26
|
+
/** Maximum age in ms for pending (in-flight) traces before cleanup (default: 300000 / 5 min) */
|
|
27
|
+
pendingTimeoutMs?: number;
|
|
28
|
+
}
|
|
29
|
+
export declare function createTraceCollector(config?: TraceCollectorConfig): TraceCollector;
|
|
30
|
+
//# sourceMappingURL=eval-trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-trace.d.ts","sourceRoot":"","sources":["../src/eval-trace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAGV,cAAc,EAEf,MAAM,iBAAiB,CAAC;AAIzB,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gGAAgG;IAChG,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,oBAAyB,GAAG,cAAc,CAkHtF"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* governance-sdk — In-Memory Trace Collector
|
|
3
|
+
*
|
|
4
|
+
* Captures agent operation traces for eval scoring.
|
|
5
|
+
* Default implementation stores traces in memory with configurable limits.
|
|
6
|
+
* Commercial deployments replace this with a persistent backend.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { createTraceCollector } from 'governance-sdk/eval-trace';
|
|
11
|
+
*
|
|
12
|
+
* const traces = createTraceCollector({ maxTraces: 200 });
|
|
13
|
+
* const ctx = traces.startTrace('luna', 'What deals closed this week?');
|
|
14
|
+
* const spanId = ctx.addSpan({
|
|
15
|
+
* operation: 'tool_call', toolName: 'honeycomb_search',
|
|
16
|
+
* input: { query: 'deals closed this week' },
|
|
17
|
+
* output: { results: [...] }, latencyMs: 142, success: true,
|
|
18
|
+
* });
|
|
19
|
+
* const trace = ctx.end('3 deals closed this week totaling $45k');
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
// ─── Implementation ────────────────────────────────────────────
|
|
23
|
+
export function createTraceCollector(config = {}) {
|
|
24
|
+
const maxTraces = config.maxTraces ?? 100;
|
|
25
|
+
const pendingTimeoutMs = config.pendingTimeoutMs ?? 300_000; // 5 minutes
|
|
26
|
+
/** All completed traces, keyed by agentId → traces[] */
|
|
27
|
+
const store = new Map();
|
|
28
|
+
/** In-flight traces, keyed by traceId */
|
|
29
|
+
const pending = new Map();
|
|
30
|
+
function generateId() {
|
|
31
|
+
const bytes = new Uint8Array(16);
|
|
32
|
+
if (typeof globalThis.crypto !== "undefined" && globalThis.crypto.getRandomValues) {
|
|
33
|
+
globalThis.crypto.getRandomValues(bytes);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
for (let i = 0; i < 16; i++)
|
|
37
|
+
bytes[i] = Math.floor(Math.random() * 256);
|
|
38
|
+
}
|
|
39
|
+
return Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("");
|
|
40
|
+
}
|
|
41
|
+
function evict(agentId) {
|
|
42
|
+
const traces = store.get(agentId);
|
|
43
|
+
if (!traces)
|
|
44
|
+
return;
|
|
45
|
+
while (traces.length > maxTraces) {
|
|
46
|
+
traces.shift(); // remove oldest
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** Evict pending traces that have been in-flight longer than pendingTimeoutMs */
|
|
50
|
+
function evictStalePending() {
|
|
51
|
+
const now = Date.now();
|
|
52
|
+
for (const [traceId, entry] of pending) {
|
|
53
|
+
if (now - entry.createdAt > pendingTimeoutMs) {
|
|
54
|
+
pending.delete(traceId);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
startTrace(agentId, input, metadata) {
|
|
60
|
+
evictStalePending();
|
|
61
|
+
const traceId = generateId();
|
|
62
|
+
const trace = {
|
|
63
|
+
traceId,
|
|
64
|
+
agentId,
|
|
65
|
+
spans: [],
|
|
66
|
+
startedAt: new Date().toISOString(),
|
|
67
|
+
input,
|
|
68
|
+
metadata,
|
|
69
|
+
};
|
|
70
|
+
pending.set(traceId, { trace, agentId, createdAt: Date.now() });
|
|
71
|
+
let ended = false;
|
|
72
|
+
return {
|
|
73
|
+
traceId,
|
|
74
|
+
addSpan(spanData) {
|
|
75
|
+
if (ended)
|
|
76
|
+
return ""; // silently ignore spans after end
|
|
77
|
+
const entry = pending.get(traceId);
|
|
78
|
+
if (!entry)
|
|
79
|
+
return "";
|
|
80
|
+
const spanId = generateId().slice(0, 16);
|
|
81
|
+
const span = {
|
|
82
|
+
...spanData,
|
|
83
|
+
spanId,
|
|
84
|
+
timestamp: new Date().toISOString(),
|
|
85
|
+
};
|
|
86
|
+
entry.trace.spans.push(span);
|
|
87
|
+
return spanId;
|
|
88
|
+
},
|
|
89
|
+
end(output) {
|
|
90
|
+
if (ended)
|
|
91
|
+
return trace; // idempotent — return cached trace
|
|
92
|
+
ended = true;
|
|
93
|
+
const entry = pending.get(traceId);
|
|
94
|
+
if (!entry)
|
|
95
|
+
return trace;
|
|
96
|
+
entry.trace.completedAt = new Date().toISOString();
|
|
97
|
+
if (output !== undefined)
|
|
98
|
+
entry.trace.output = output;
|
|
99
|
+
// Move from pending to store
|
|
100
|
+
pending.delete(traceId);
|
|
101
|
+
if (!store.has(entry.agentId))
|
|
102
|
+
store.set(entry.agentId, []);
|
|
103
|
+
store.get(entry.agentId).push(entry.trace);
|
|
104
|
+
evict(entry.agentId);
|
|
105
|
+
return entry.trace;
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
},
|
|
109
|
+
getTraces(agentId) {
|
|
110
|
+
return store.get(agentId) ?? [];
|
|
111
|
+
},
|
|
112
|
+
getRecentTraces(agentId, since) {
|
|
113
|
+
const traces = store.get(agentId) ?? [];
|
|
114
|
+
const sinceMs = new Date(since).getTime();
|
|
115
|
+
return traces.filter((t) => new Date(t.startedAt).getTime() >= sinceMs);
|
|
116
|
+
},
|
|
117
|
+
traceCount() {
|
|
118
|
+
let total = 0;
|
|
119
|
+
for (const traces of store.values())
|
|
120
|
+
total += traces.length;
|
|
121
|
+
return total;
|
|
122
|
+
},
|
|
123
|
+
clear() {
|
|
124
|
+
store.clear();
|
|
125
|
+
pending.clear();
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=eval-trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-trace.js","sourceRoot":"","sources":["../src/eval-trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* governance-sdk — Eval Type System
|
|
3
|
+
*
|
|
4
|
+
* Zero-dependency type definitions for the governance eval loop.
|
|
5
|
+
* Traces capture what agents do. Metrics measure quality.
|
|
6
|
+
* Results feed back into the governance score.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import type { EvalTrace, EvalResult, TraceCollector } from 'governance-sdk/eval-types';
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
/** The type of operation captured in a span. */
|
|
14
|
+
export type SpanOperation = "llm_call" | "tool_call" | "retrieval" | "generation" | "embedding" | "guard" | "custom";
|
|
15
|
+
/** A single operation within a trace. */
|
|
16
|
+
export interface EvalSpan {
|
|
17
|
+
spanId: string;
|
|
18
|
+
parentSpanId?: string;
|
|
19
|
+
operation: SpanOperation;
|
|
20
|
+
/** What went in (prompt, tool args, query, etc.) */
|
|
21
|
+
input: unknown;
|
|
22
|
+
/** What came out (completion, tool result, documents, etc.) */
|
|
23
|
+
output: unknown;
|
|
24
|
+
/** Model used (if LLM call) */
|
|
25
|
+
model?: string;
|
|
26
|
+
/** Wall-clock duration */
|
|
27
|
+
latencyMs: number;
|
|
28
|
+
/** Token usage (if LLM call) */
|
|
29
|
+
tokenUsage?: {
|
|
30
|
+
input: number;
|
|
31
|
+
output: number;
|
|
32
|
+
};
|
|
33
|
+
/** Tool name (if tool call) */
|
|
34
|
+
toolName?: string;
|
|
35
|
+
/** Whether the operation succeeded */
|
|
36
|
+
success: boolean;
|
|
37
|
+
/** Error message (if failed) */
|
|
38
|
+
error?: string;
|
|
39
|
+
/** Arbitrary metadata */
|
|
40
|
+
metadata?: Record<string, unknown>;
|
|
41
|
+
timestamp: string;
|
|
42
|
+
}
|
|
43
|
+
/** A complete trace of an agent's work unit (one request/task). */
|
|
44
|
+
export interface EvalTrace {
|
|
45
|
+
traceId: string;
|
|
46
|
+
agentId: string;
|
|
47
|
+
agentName?: string;
|
|
48
|
+
spans: EvalSpan[];
|
|
49
|
+
startedAt: string;
|
|
50
|
+
completedAt?: string;
|
|
51
|
+
/** The user/system input that triggered this trace */
|
|
52
|
+
input?: string;
|
|
53
|
+
/** The agent's final output */
|
|
54
|
+
output?: string;
|
|
55
|
+
/** Arbitrary context (task description, session ID, etc.) */
|
|
56
|
+
metadata?: Record<string, unknown>;
|
|
57
|
+
}
|
|
58
|
+
/** Standard governance eval metric names. */
|
|
59
|
+
export type GovernanceMetricName = "tool_correctness" | "output_faithfulness" | "task_completion" | "safety_compliance" | "instruction_following" | "red_team_resistance";
|
|
60
|
+
/** A single eval metric score. */
|
|
61
|
+
export interface EvalMetric {
|
|
62
|
+
/** Metric name — use GovernanceMetricName for standard metrics */
|
|
63
|
+
name: string;
|
|
64
|
+
/** Score between 0 (worst) and 1 (best) */
|
|
65
|
+
score: number;
|
|
66
|
+
/** LLM-as-judge reasoning (why this score?) */
|
|
67
|
+
reasoning?: string;
|
|
68
|
+
/** Additional metric-specific data */
|
|
69
|
+
metadata?: Record<string, unknown>;
|
|
70
|
+
}
|
|
71
|
+
/** The result of evaluating one trace. */
|
|
72
|
+
export interface EvalResult {
|
|
73
|
+
traceId: string;
|
|
74
|
+
agentId: string;
|
|
75
|
+
metrics: EvalMetric[];
|
|
76
|
+
evaluatedAt: string;
|
|
77
|
+
}
|
|
78
|
+
/** Handle returned when starting a trace — used to add spans and finish. */
|
|
79
|
+
export interface TraceContext {
|
|
80
|
+
traceId: string;
|
|
81
|
+
/** Add a span to this trace. */
|
|
82
|
+
addSpan(span: Omit<EvalSpan, "spanId" | "timestamp">): string;
|
|
83
|
+
/** Mark the trace complete. Returns the full trace. */
|
|
84
|
+
end(output?: string): EvalTrace;
|
|
85
|
+
}
|
|
86
|
+
/** Collects traces from agent operations. */
|
|
87
|
+
export interface TraceCollector {
|
|
88
|
+
/** Start a new trace for an agent action. */
|
|
89
|
+
startTrace(agentId: string, input?: string, metadata?: Record<string, unknown>): TraceContext;
|
|
90
|
+
/** Retrieve completed traces for an agent. */
|
|
91
|
+
getTraces(agentId: string): EvalTrace[];
|
|
92
|
+
/** Retrieve traces completed since a given time. */
|
|
93
|
+
getRecentTraces(agentId: string, since: string): EvalTrace[];
|
|
94
|
+
/** Total trace count (all agents). */
|
|
95
|
+
traceCount(): number;
|
|
96
|
+
/** Clear all stored traces. */
|
|
97
|
+
clear(): void;
|
|
98
|
+
}
|
|
99
|
+
/** Function that evaluates a trace and produces metrics. */
|
|
100
|
+
export type EvalMetricFn = (trace: EvalTrace) => Promise<EvalMetric[]>;
|
|
101
|
+
/** Configuration for an eval runner. */
|
|
102
|
+
export interface EvalRunnerConfig {
|
|
103
|
+
/** Metrics to evaluate (functions that score traces) */
|
|
104
|
+
metrics: EvalMetricFn[];
|
|
105
|
+
/** Sample rate: evaluate 1 in N traces (default: 1 = all) */
|
|
106
|
+
sampleRate?: number;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=eval-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-types.d.ts","sourceRoot":"","sources":["../src/eval-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* governance-sdk — Eval Type System
|
|
3
|
+
*
|
|
4
|
+
* Zero-dependency type definitions for the governance eval loop.
|
|
5
|
+
* Traces capture what agents do. Metrics measure quality.
|
|
6
|
+
* Results feed back into the governance score.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import type { EvalTrace, EvalResult, TraceCollector } from 'governance-sdk/eval-types';
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=eval-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-types.js","sourceRoot":"","sources":["../src/eval-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Governance Event Emitter
|
|
3
|
+
*
|
|
4
|
+
* Subscribe to governance events in real-time — enforcement decisions,
|
|
5
|
+
* agent registrations, kill switch activations, score changes.
|
|
6
|
+
* Essential for dashboards, monitoring, and alerting.
|
|
7
|
+
*
|
|
8
|
+
* Zero-dependency implementation using native EventTarget.
|
|
9
|
+
*/
|
|
10
|
+
export type GovernanceEventType = "enforcement" | "registration" | "kill" | "revive" | "score_change" | "policy_added" | "policy_removed" | "audit";
|
|
11
|
+
export interface GovernanceEvent {
|
|
12
|
+
type: GovernanceEventType;
|
|
13
|
+
timestamp: string;
|
|
14
|
+
agentId?: string;
|
|
15
|
+
detail: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
export type GovernanceEventHandler = (event: GovernanceEvent) => void;
|
|
18
|
+
export interface GovernanceEmitter {
|
|
19
|
+
/** Subscribe to a specific event type */
|
|
20
|
+
on: (type: GovernanceEventType, handler: GovernanceEventHandler) => void;
|
|
21
|
+
/** Subscribe to all events */
|
|
22
|
+
onAny: (handler: GovernanceEventHandler) => void;
|
|
23
|
+
/** Unsubscribe from a specific event type */
|
|
24
|
+
off: (type: GovernanceEventType, handler: GovernanceEventHandler) => void;
|
|
25
|
+
/** Unsubscribe from all events */
|
|
26
|
+
offAny: (handler: GovernanceEventHandler) => void;
|
|
27
|
+
/** Emit an event (used internally by governance hooks) */
|
|
28
|
+
emit: (event: GovernanceEvent) => void;
|
|
29
|
+
/** Get count of listeners */
|
|
30
|
+
listenerCount: (type?: GovernanceEventType) => number;
|
|
31
|
+
/** Remove all listeners */
|
|
32
|
+
removeAllListeners: () => void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a governance event emitter.
|
|
36
|
+
*
|
|
37
|
+
* Lightweight, synchronous, zero-dependency event system.
|
|
38
|
+
* Use with governance hooks to stream events to dashboards,
|
|
39
|
+
* logging systems, or alerting pipelines.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* const emitter = createGovernanceEmitter();
|
|
44
|
+
*
|
|
45
|
+
* emitter.on('enforcement', (event) => {
|
|
46
|
+
* if (event.detail.blocked) {
|
|
47
|
+
* alert(`Agent ${event.agentId} blocked!`);
|
|
48
|
+
* }
|
|
49
|
+
* });
|
|
50
|
+
*
|
|
51
|
+
* emitter.onAny((event) => {
|
|
52
|
+
* metrics.increment(`governance.${event.type}`);
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function createGovernanceEmitter(): GovernanceEmitter;
|
|
57
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,cAAc,GACd,MAAM,GACN,QAAQ,GACR,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,OAAO,CAAC;AAEZ,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;AAEtE,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,EAAE,EAAE,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACzE,8BAA8B;IAC9B,KAAK,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACjD,6CAA6C;IAC7C,GAAG,EAAE,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC1E,kCAAkC;IAClC,MAAM,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAClD,0DAA0D;IAC1D,IAAI,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACvC,6BAA6B;IAC7B,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,mBAAmB,KAAK,MAAM,CAAC;IACtD,2BAA2B;IAC3B,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAChC;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAsD3D"}
|
package/dist/events.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Governance Event Emitter
|
|
3
|
+
*
|
|
4
|
+
* Subscribe to governance events in real-time — enforcement decisions,
|
|
5
|
+
* agent registrations, kill switch activations, score changes.
|
|
6
|
+
* Essential for dashboards, monitoring, and alerting.
|
|
7
|
+
*
|
|
8
|
+
* Zero-dependency implementation using native EventTarget.
|
|
9
|
+
*/
|
|
10
|
+
// ─── Implementation ─────────────────────────────────────────────
|
|
11
|
+
/**
|
|
12
|
+
* Create a governance event emitter.
|
|
13
|
+
*
|
|
14
|
+
* Lightweight, synchronous, zero-dependency event system.
|
|
15
|
+
* Use with governance hooks to stream events to dashboards,
|
|
16
|
+
* logging systems, or alerting pipelines.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const emitter = createGovernanceEmitter();
|
|
21
|
+
*
|
|
22
|
+
* emitter.on('enforcement', (event) => {
|
|
23
|
+
* if (event.detail.blocked) {
|
|
24
|
+
* alert(`Agent ${event.agentId} blocked!`);
|
|
25
|
+
* }
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* emitter.onAny((event) => {
|
|
29
|
+
* metrics.increment(`governance.${event.type}`);
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export function createGovernanceEmitter() {
|
|
34
|
+
const listeners = new Map();
|
|
35
|
+
const anyListeners = new Set();
|
|
36
|
+
function on(type, handler) {
|
|
37
|
+
const set = listeners.get(type);
|
|
38
|
+
if (set) {
|
|
39
|
+
set.add(handler);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
listeners.set(type, new Set([handler]));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function onAny(handler) {
|
|
46
|
+
anyListeners.add(handler);
|
|
47
|
+
}
|
|
48
|
+
function off(type, handler) {
|
|
49
|
+
listeners.get(type)?.delete(handler);
|
|
50
|
+
}
|
|
51
|
+
function offAny(handler) {
|
|
52
|
+
anyListeners.delete(handler);
|
|
53
|
+
}
|
|
54
|
+
function emit(event) {
|
|
55
|
+
const typeListeners = listeners.get(event.type);
|
|
56
|
+
if (typeListeners) {
|
|
57
|
+
for (const handler of typeListeners) {
|
|
58
|
+
handler(event);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
for (const handler of anyListeners) {
|
|
62
|
+
handler(event);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function listenerCount(type) {
|
|
66
|
+
if (type) {
|
|
67
|
+
return (listeners.get(type)?.size ?? 0) + anyListeners.size;
|
|
68
|
+
}
|
|
69
|
+
let total = anyListeners.size;
|
|
70
|
+
for (const set of listeners.values()) {
|
|
71
|
+
total += set.size;
|
|
72
|
+
}
|
|
73
|
+
return total;
|
|
74
|
+
}
|
|
75
|
+
function removeAllListeners() {
|
|
76
|
+
listeners.clear();
|
|
77
|
+
anyListeners.clear();
|
|
78
|
+
}
|
|
79
|
+
return { on, onAny, off, offAny, emit, listenerCount, removeAllListeners };
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAwCH,mEAAmE;AAEnE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoD,CAAC;IAC9E,MAAM,YAAY,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEvD,SAAS,EAAE,CAAC,IAAyB,EAAE,OAA+B;QACpE,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,SAAS,KAAK,CAAC,OAA+B;QAC5C,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,SAAS,GAAG,CAAC,IAAyB,EAAE,OAA+B;QACrE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,SAAS,MAAM,CAAC,OAA+B;QAC7C,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS,IAAI,CAAC,KAAsB;QAClC,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,SAAS,aAAa,CAAC,IAA0B;QAC/C,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;QAC9D,CAAC;QACD,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC;QAC9B,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,kBAAkB;QACzB,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,YAAY,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* governance-sdk — Multi-Agent Federation Types
|
|
3
|
+
*
|
|
4
|
+
* Types for cross-boundary governance between agents governed
|
|
5
|
+
* by different governance instances.
|
|
6
|
+
*/
|
|
7
|
+
import type { PolicyRule } from "./policy.js";
|
|
8
|
+
/** Governance posture exchanged between federated agents */
|
|
9
|
+
export interface GovernancePosture {
|
|
10
|
+
agentId: string;
|
|
11
|
+
agentName: string;
|
|
12
|
+
publicKeyHex?: string;
|
|
13
|
+
compositeScore: number;
|
|
14
|
+
level: number;
|
|
15
|
+
capabilities: string[];
|
|
16
|
+
complianceFrameworks: string[];
|
|
17
|
+
policyCount: number;
|
|
18
|
+
auditIntegrity: boolean;
|
|
19
|
+
issuedAt: string;
|
|
20
|
+
expiresAt?: string;
|
|
21
|
+
signature?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Result of evaluating a remote agent's posture */
|
|
24
|
+
export interface PostureEvaluation {
|
|
25
|
+
accepted: boolean;
|
|
26
|
+
reason: string;
|
|
27
|
+
remoteScore: number;
|
|
28
|
+
localMinimumScore: number;
|
|
29
|
+
capabilityOverlap: string[];
|
|
30
|
+
}
|
|
31
|
+
/** Result of negotiating shared policies between two governance instances */
|
|
32
|
+
export interface PolicyNegotiationResult {
|
|
33
|
+
agreed: boolean;
|
|
34
|
+
sharedRules: PolicyRule[];
|
|
35
|
+
localOnlyRules: PolicyRule[];
|
|
36
|
+
remoteOnlyRules: PolicyRule[];
|
|
37
|
+
conflicts: string[];
|
|
38
|
+
}
|
|
39
|
+
/** Linked audit event connecting two governance instances */
|
|
40
|
+
export interface FederatedAuditLink {
|
|
41
|
+
localEventId: string;
|
|
42
|
+
remoteEventId: string;
|
|
43
|
+
remoteAgentId: string;
|
|
44
|
+
linkType: "send" | "receive" | "delegate" | "negotiate";
|
|
45
|
+
linkedAt: string;
|
|
46
|
+
}
|
|
47
|
+
/** Configuration for federation */
|
|
48
|
+
export interface FederationConfig {
|
|
49
|
+
/** Minimum composite score to accept a remote agent (default: 40) */
|
|
50
|
+
minimumRemoteScore?: number;
|
|
51
|
+
/** Required compliance frameworks (remote must have at least one) */
|
|
52
|
+
requiredCompliance?: string[];
|
|
53
|
+
/** Maximum negotiated rule count (default: 50) */
|
|
54
|
+
maxNegotiatedRules?: number;
|
|
55
|
+
/** Whether to require signed postures (default: false) */
|
|
56
|
+
requireSignedPosture?: boolean;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=federation-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"federation-types.d.ts","sourceRoot":"","sources":["../src/federation-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,6EAA6E;AAC7E,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,6DAA6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IACxD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kDAAkD;IAClD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"federation-types.js","sourceRoot":"","sources":["../src/federation-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* governance-sdk — Multi-Agent Federation Protocol
|
|
3
|
+
*
|
|
4
|
+
* Cross-boundary governance for multi-agent systems.
|
|
5
|
+
* Enables agents governed by different instances to exchange postures,
|
|
6
|
+
* negotiate shared policies, and link audit trails.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { createFederation } from 'governance-sdk/federation';
|
|
11
|
+
*
|
|
12
|
+
* const federation = createFederation(localGovernance, { minimumRemoteScore: 50 });
|
|
13
|
+
*
|
|
14
|
+
* // Exchange postures before inter-agent communication
|
|
15
|
+
* const localPosture = await federation.createPosture('agent-1');
|
|
16
|
+
* const evaluation = federation.evaluatePosture(remotePosture);
|
|
17
|
+
* if (!evaluation.accepted) throw new Error(evaluation.reason);
|
|
18
|
+
*
|
|
19
|
+
* // Negotiate shared policies
|
|
20
|
+
* const negotiation = federation.negotiatePolicies(remoteRules);
|
|
21
|
+
*
|
|
22
|
+
* // Link audit events across boundaries
|
|
23
|
+
* federation.linkAudit('local-event-123', 'remote-event-456', 'remote-agent-id');
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
import type { GovernanceInstance } from "./index.js";
|
|
27
|
+
import type { GovernancePosture, PostureEvaluation, PolicyNegotiationResult, FederatedAuditLink, FederationConfig } from "./federation-types.js";
|
|
28
|
+
import type { PolicyRule } from "./policy.js";
|
|
29
|
+
export type { GovernancePosture, PostureEvaluation, PolicyNegotiationResult, FederatedAuditLink, FederationConfig, } from "./federation-types.js";
|
|
30
|
+
export declare function createFederation(governance: GovernanceInstance, config?: FederationConfig): {
|
|
31
|
+
/** Create a governance posture for a local agent to share with remote agents */
|
|
32
|
+
createPosture(agentId: string): Promise<GovernancePosture>;
|
|
33
|
+
/** Evaluate a remote agent's posture against local requirements */
|
|
34
|
+
evaluatePosture(remote: GovernancePosture): PostureEvaluation;
|
|
35
|
+
/** Negotiate shared policies between local and remote governance */
|
|
36
|
+
negotiatePolicies(remoteRules: PolicyRule[]): PolicyNegotiationResult;
|
|
37
|
+
/** Link a local audit event to a remote audit event */
|
|
38
|
+
linkAudit(localEventId: string, remoteEventId: string, remoteAgentId: string, linkType?: FederatedAuditLink["linkType"]): FederatedAuditLink;
|
|
39
|
+
/** Get all federated audit links */
|
|
40
|
+
getAuditLinks(remoteAgentId?: string): FederatedAuditLink[];
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=federation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../src/federation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAI/B,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,GAAE,gBAAqB;IAW1F,gFAAgF;2BACnD,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmBhE,mEAAmE;4BAC3C,iBAAiB,GAAG,iBAAiB;IAqC7D,oEAAoE;mCACrC,UAAU,EAAE,GAAG,uBAAuB;IAuCrE,uDAAuD;4BAC/B,MAAM,iBAAiB,MAAM,iBAAiB,MAAM,aAAY,kBAAkB,CAAC,UAAU,CAAC,GAAY,kBAAkB;IAYpJ,oCAAoC;kCACN,MAAM,GAAG,kBAAkB,EAAE;EAK9D"}
|