@agentbouncr/core 0.1.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 +93 -0
- package/README.md +47 -0
- package/dist/audit/hash-chain.d.ts +39 -0
- package/dist/audit/hash-chain.d.ts.map +1 -0
- package/dist/audit/hash-chain.js +63 -0
- package/dist/audit/hash-chain.js.map +1 -0
- package/dist/audit/index.d.ts +2 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +2 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/core/condition-evaluator.d.ts +20 -0
- package/dist/core/condition-evaluator.d.ts.map +1 -0
- package/dist/core/condition-evaluator.js +85 -0
- package/dist/core/condition-evaluator.js.map +1 -0
- package/dist/core/permission-layer.d.ts +24 -0
- package/dist/core/permission-layer.d.ts.map +1 -0
- package/dist/core/permission-layer.js +58 -0
- package/dist/core/permission-layer.js.map +1 -0
- package/dist/core/policy-engine.d.ts +35 -0
- package/dist/core/policy-engine.d.ts.map +1 -0
- package/dist/core/policy-engine.js +131 -0
- package/dist/core/policy-engine.js.map +1 -0
- package/dist/core/policy-schema.d.ts +50 -0
- package/dist/core/policy-schema.d.ts.map +1 -0
- package/dist/core/policy-schema.js +59 -0
- package/dist/core/policy-schema.js.map +1 -0
- package/dist/core/tool-registry.d.ts +31 -0
- package/dist/core/tool-registry.d.ts.map +1 -0
- package/dist/core/tool-registry.js +53 -0
- package/dist/core/tool-registry.js.map +1 -0
- package/dist/detection/injection-detector.d.ts +21 -0
- package/dist/detection/injection-detector.d.ts.map +1 -0
- package/dist/detection/injection-detector.js +61 -0
- package/dist/detection/injection-detector.js.map +1 -0
- package/dist/events/event-emitter.d.ts +44 -0
- package/dist/events/event-emitter.d.ts.map +1 -0
- package/dist/events/event-emitter.js +119 -0
- package/dist/events/event-emitter.js.map +1 -0
- package/dist/importers/json-schema-converter.d.ts +16 -0
- package/dist/importers/json-schema-converter.d.ts.map +1 -0
- package/dist/importers/json-schema-converter.js +95 -0
- package/dist/importers/json-schema-converter.js.map +1 -0
- package/dist/importers/mcp-importer.d.ts +30 -0
- package/dist/importers/mcp-importer.d.ts.map +1 -0
- package/dist/importers/mcp-importer.js +45 -0
- package/dist/importers/mcp-importer.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/lifecycle/governance-middleware.d.ts +105 -0
- package/dist/lifecycle/governance-middleware.d.ts.map +1 -0
- package/dist/lifecycle/governance-middleware.js +610 -0
- package/dist/lifecycle/governance-middleware.js.map +1 -0
- package/dist/lifecycle/kill-switch.d.ts +46 -0
- package/dist/lifecycle/kill-switch.d.ts.map +1 -0
- package/dist/lifecycle/kill-switch.js +119 -0
- package/dist/lifecycle/kill-switch.js.map +1 -0
- package/dist/lifecycle/middleware-schemas.d.ts +49 -0
- package/dist/lifecycle/middleware-schemas.d.ts.map +1 -0
- package/dist/lifecycle/middleware-schemas.js +33 -0
- package/dist/lifecycle/middleware-schemas.js.map +1 -0
- package/dist/providers/vercel-ai-adapter.d.ts +42 -0
- package/dist/providers/vercel-ai-adapter.d.ts.map +1 -0
- package/dist/providers/vercel-ai-adapter.js +96 -0
- package/dist/providers/vercel-ai-adapter.js.map +1 -0
- package/dist/schema/tool-schema.d.ts +62 -0
- package/dist/schema/tool-schema.d.ts.map +1 -0
- package/dist/schema/tool-schema.js +88 -0
- package/dist/schema/tool-schema.js.map +1 -0
- package/dist/tracing/index.d.ts +6 -0
- package/dist/tracing/index.d.ts.map +1 -0
- package/dist/tracing/index.js +6 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/tracing/trace-context.d.ts +37 -0
- package/dist/tracing/trace-context.d.ts.map +1 -0
- package/dist/tracing/trace-context.js +76 -0
- package/dist/tracing/trace-context.js.map +1 -0
- package/dist/tracing/trace-provider.d.ts +43 -0
- package/dist/tracing/trace-provider.d.ts.map +1 -0
- package/dist/tracing/trace-provider.js +89 -0
- package/dist/tracing/trace-provider.js.map +1 -0
- package/dist/types/index.d.ts +248 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +20 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/external-content.d.ts +9 -0
- package/dist/utils/external-content.d.ts.map +1 -0
- package/dist/utils/external-content.js +11 -0
- package/dist/utils/external-content.js.map +1 -0
- package/dist/utils/logger.d.ts +4 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +13 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agentbouncr/core — MCP Import Adapter
|
|
3
|
+
*
|
|
4
|
+
* Converts MCP tool definitions (from tools/list response) to GovernanceTool[].
|
|
5
|
+
* MCP = Model Context Protocol — emerging standard for agent tool definitions.
|
|
6
|
+
*
|
|
7
|
+
* Import priority: MCP first.
|
|
8
|
+
*/
|
|
9
|
+
import { jsonSchemaToParameters } from './json-schema-converter.js';
|
|
10
|
+
/**
|
|
11
|
+
* Convert MCP tool definitions to GovernanceTool[].
|
|
12
|
+
*
|
|
13
|
+
* Invalid tools (missing/empty name) are skipped with a warning.
|
|
14
|
+
* Empty input returns empty array.
|
|
15
|
+
*/
|
|
16
|
+
export function importMCPTools(toolList, options) {
|
|
17
|
+
if (!Array.isArray(toolList)) {
|
|
18
|
+
options?.logger?.warn({ input: typeof toolList }, 'importMCPTools: input is not an array — returning empty');
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
const riskLevel = options?.defaultRiskLevel ?? 'medium';
|
|
22
|
+
const result = [];
|
|
23
|
+
for (const entry of toolList) {
|
|
24
|
+
if (!entry || typeof entry !== 'object') {
|
|
25
|
+
options?.logger?.warn({ entry }, 'importMCPTools: skipping non-object entry');
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (!entry.name || typeof entry.name !== 'string' || entry.name.trim().length === 0) {
|
|
29
|
+
options?.logger?.warn({ entry }, 'importMCPTools: skipping tool with missing or empty name');
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const parameters = entry.inputSchema
|
|
33
|
+
? jsonSchemaToParameters(entry.inputSchema)
|
|
34
|
+
: [];
|
|
35
|
+
result.push({
|
|
36
|
+
name: entry.name,
|
|
37
|
+
description: typeof entry.description === 'string' ? entry.description : undefined,
|
|
38
|
+
parameters,
|
|
39
|
+
riskLevel,
|
|
40
|
+
source: 'mcp',
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=mcp-importer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-importer.js","sourceRoot":"","sources":["../../src/importers/mcp-importer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAiBpE;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,QAA6B,EAC7B,OAA0B;IAE1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,QAAQ,EAAE,EAAE,yDAAyD,CAAC,CAAC;QAC7G,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,EAAE,gBAAgB,IAAI,QAAQ,CAAC;IACxD,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,2CAA2C,CAAC,CAAC;YAC9E,SAAS;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpF,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,0DAA0D,CAAC,CAAC;YAC7F,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW;YAClC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,CAAC;YAC3C,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YAClF,UAAU;YACV,SAAS;YACT,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agentbouncr/core — Agent Governance Framework
|
|
3
|
+
*
|
|
4
|
+
* The governance layer for AI agents.
|
|
5
|
+
* The agent does not decide what it may do — the system decides.
|
|
6
|
+
*/
|
|
7
|
+
export declare const VERSION = "0.1.0";
|
|
8
|
+
export { GovernanceError, type FailureCategory, type InjectionDetectionResult, type KillSwitchResult, type PermissionResult, type EvaluateRequest, type EvaluateResult, type AppliedRule, type ToolResult, type ToolExecutionContext, type AuditEvent, type AuditEventInput, type AuditFilter, type AuditChainVerificationResult, type ConditionOperator, type PolicyCondition, type Policy, type PolicyRule, type PolicyVersion, type AgentRunStatus, type AgentConfig, type AgentStatus, type TransactionClient, type DatabaseAdapter, type ToolFilter, type GovernanceEventRecord, type GovernanceEventFilter, type ApprovalStatus, type ApprovalRequest, type ApprovalRequestInput, type ApprovalFilter, type ApprovalResolution, } from './types/index.js';
|
|
9
|
+
export { governanceToolSchema, governanceToolParameterSchema, toolParameterConstraintsSchema, riskLevelSchema, toolSourceSchema, parametersToJsonSchema, type GovernanceTool, type GovernanceToolParameter, type ToolParameterConstraints, type RiskLevel, type ToolSource, } from './schema/tool-schema.js';
|
|
10
|
+
export { logger, securityLogger } from './utils/logger.js';
|
|
11
|
+
export { wrapExternalContent, INJECTION_WARNING_START, INJECTION_WARNING_END, } from './utils/external-content.js';
|
|
12
|
+
export { GovernanceEventEmitter, type GovernanceEventType, type GovernanceEvent, type GovernanceEventListener, } from './events/event-emitter.js';
|
|
13
|
+
export { detectInjection, DEFAULT_INJECTION_PATTERNS, type InjectionDetectionOptions, type InjectionPattern, } from './detection/injection-detector.js';
|
|
14
|
+
export { PermissionLayer } from './core/permission-layer.js';
|
|
15
|
+
export { evaluateCondition } from './core/condition-evaluator.js';
|
|
16
|
+
export { PolicyEngine } from './core/policy-engine.js';
|
|
17
|
+
export { policySchema, policyRuleSchema, policyConditionSchema, validatePolicy, } from './core/policy-schema.js';
|
|
18
|
+
export { ToolRegistry, type ProviderToolDefinition, } from './core/tool-registry.js';
|
|
19
|
+
export { jsonSchemaToParameters } from './importers/json-schema-converter.js';
|
|
20
|
+
export { importMCPTools, type MCPToolDefinition, type MCPImportOptions, } from './importers/mcp-importer.js';
|
|
21
|
+
export { wrapToolsWithGovernance, type AITool, type AIToolSet, type GovernanceWrapOptions, } from './providers/vercel-ai-adapter.js';
|
|
22
|
+
export { GovernanceMiddleware, type GovernanceMiddlewareOptions, } from './lifecycle/governance-middleware.js';
|
|
23
|
+
export { KillSwitchManager, type KillSwitchStatus, } from './lifecycle/kill-switch.js';
|
|
24
|
+
export { evaluateRequestSchema, agentConfigSchema, dryRunRequestSchema, } from './lifecycle/middleware-schemas.js';
|
|
25
|
+
export { TraceProvider, createTraceContext, generateTraceId, generateSpanId, isValidTraceId, isValidSpanId, parseTraceparent, type TraceContext, } from './tracing/index.js';
|
|
26
|
+
export { computeAuditHash, verifyAuditEventHash, type HashInput, } from './audit/index.js';
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,8BAA8B,EAC9B,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,uBAAuB,GAC7B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,GACtB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,GACf,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,YAAY,EACZ,KAAK,sBAAsB,GAC5B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EACL,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,uBAAuB,EACvB,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,qBAAqB,GAC3B,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agentbouncr/core — Agent Governance Framework
|
|
3
|
+
*
|
|
4
|
+
* The governance layer for AI agents.
|
|
5
|
+
* The agent does not decide what it may do — the system decides.
|
|
6
|
+
*/
|
|
7
|
+
export const VERSION = '0.1.0';
|
|
8
|
+
// Types
|
|
9
|
+
export { GovernanceError, } from './types/index.js';
|
|
10
|
+
// Canonical Tool Schema
|
|
11
|
+
export { governanceToolSchema, governanceToolParameterSchema, toolParameterConstraintsSchema, riskLevelSchema, toolSourceSchema, parametersToJsonSchema, } from './schema/tool-schema.js';
|
|
12
|
+
// Logger
|
|
13
|
+
export { logger, securityLogger } from './utils/logger.js';
|
|
14
|
+
// External Content
|
|
15
|
+
export { wrapExternalContent, INJECTION_WARNING_START, INJECTION_WARNING_END, } from './utils/external-content.js';
|
|
16
|
+
// Event System
|
|
17
|
+
export { GovernanceEventEmitter, } from './events/event-emitter.js';
|
|
18
|
+
// Injection Detection
|
|
19
|
+
export { detectInjection, DEFAULT_INJECTION_PATTERNS, } from './detection/injection-detector.js';
|
|
20
|
+
// Permission Layer
|
|
21
|
+
export { PermissionLayer } from './core/permission-layer.js';
|
|
22
|
+
// Condition Evaluator
|
|
23
|
+
export { evaluateCondition } from './core/condition-evaluator.js';
|
|
24
|
+
// Policy Engine
|
|
25
|
+
export { PolicyEngine } from './core/policy-engine.js';
|
|
26
|
+
// Policy Schema
|
|
27
|
+
export { policySchema, policyRuleSchema, policyConditionSchema, validatePolicy, } from './core/policy-schema.js';
|
|
28
|
+
// Tool Registry
|
|
29
|
+
export { ToolRegistry, } from './core/tool-registry.js';
|
|
30
|
+
// Importers
|
|
31
|
+
export { jsonSchemaToParameters } from './importers/json-schema-converter.js';
|
|
32
|
+
export { importMCPTools, } from './importers/mcp-importer.js';
|
|
33
|
+
// Provider Adapter
|
|
34
|
+
export { wrapToolsWithGovernance, } from './providers/vercel-ai-adapter.js';
|
|
35
|
+
// Lifecycle
|
|
36
|
+
export { GovernanceMiddleware, } from './lifecycle/governance-middleware.js';
|
|
37
|
+
export { KillSwitchManager, } from './lifecycle/kill-switch.js';
|
|
38
|
+
export { evaluateRequestSchema, agentConfigSchema, dryRunRequestSchema, } from './lifecycle/middleware-schemas.js';
|
|
39
|
+
// Tracing (W3C Trace Context)
|
|
40
|
+
export { TraceProvider, createTraceContext, generateTraceId, generateSpanId, isValidTraceId, isValidSpanId, parseTraceparent, } from './tracing/index.js';
|
|
41
|
+
// Audit Trail (Hash-Chain)
|
|
42
|
+
export { computeAuditHash, verifyAuditEventHash, } from './audit/index.js';
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,QAAQ;AACR,OAAO,EACL,eAAe,GAgChB,MAAM,kBAAkB,CAAC;AAE1B,wBAAwB;AACxB,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,8BAA8B,EAC9B,eAAe,EACf,gBAAgB,EAChB,sBAAsB,GAMvB,MAAM,yBAAyB,CAAC;AAEjC,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3D,mBAAmB;AACnB,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAErC,eAAe;AACf,OAAO,EACL,sBAAsB,GAIvB,MAAM,2BAA2B,CAAC;AAEnC,sBAAsB;AACtB,OAAO,EACL,eAAe,EACf,0BAA0B,GAG3B,MAAM,mCAAmC,CAAC;AAE3C,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,sBAAsB;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,GACf,MAAM,yBAAyB,CAAC;AAEjC,gBAAgB;AAChB,OAAO,EACL,YAAY,GAEb,MAAM,yBAAyB,CAAC;AAEjC,YAAY;AACZ,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EACL,cAAc,GAGf,MAAM,6BAA6B,CAAC;AAErC,mBAAmB;AACnB,OAAO,EACL,uBAAuB,GAIxB,MAAM,kCAAkC,CAAC;AAE1C,YAAY;AACZ,OAAO,EACL,oBAAoB,GAErB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,iBAAiB,GAElB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAE3C,8BAA8B;AAC9B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAE5B,2BAA2B;AAC3B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agentbouncr/core — GovernanceMiddleware
|
|
3
|
+
*
|
|
4
|
+
* Main entry point for developers.
|
|
5
|
+
* Orchestrates PolicyEngine, EventEmitter, KillSwitch, and DatabaseAdapter.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* const governance = new GovernanceMiddleware();
|
|
9
|
+
* const result = await governance.evaluate({ agentId: 'a', tool: 'x', params: {} });
|
|
10
|
+
*
|
|
11
|
+
* Zero-Config: Works without policy — defaults allow-all, logs all.
|
|
12
|
+
* Kill-Switch: emergencyStop() denies ALL evaluate() calls.
|
|
13
|
+
* Agent CRUD: registerAgent/start/stop/delete — requires DatabaseAdapter.
|
|
14
|
+
*/
|
|
15
|
+
import pino from 'pino';
|
|
16
|
+
import type { DatabaseAdapter, EvaluateRequest, EvaluateResult, Policy, PolicyVersion, AgentConfig, AgentStatus, ApprovalRequest, ApprovalFilter, ApprovalResolution } from '../types/index.js';
|
|
17
|
+
import type { KillSwitchStatus } from './kill-switch.js';
|
|
18
|
+
import { type GovernanceEventType, type GovernanceEventListener } from '../events/event-emitter.js';
|
|
19
|
+
export interface GovernanceMiddlewareOptions {
|
|
20
|
+
db?: DatabaseAdapter;
|
|
21
|
+
policy?: Policy;
|
|
22
|
+
logger?: pino.Logger;
|
|
23
|
+
approvalTimeoutSeconds?: number;
|
|
24
|
+
}
|
|
25
|
+
export declare class GovernanceMiddleware {
|
|
26
|
+
private readonly logger;
|
|
27
|
+
private readonly eventEmitter;
|
|
28
|
+
private readonly policyEngine;
|
|
29
|
+
private readonly killSwitch;
|
|
30
|
+
private readonly db?;
|
|
31
|
+
private readonly approvalTimeoutSeconds;
|
|
32
|
+
private readonly tenantId?;
|
|
33
|
+
private policy;
|
|
34
|
+
constructor(options?: GovernanceMiddlewareOptions);
|
|
35
|
+
/**
|
|
36
|
+
* Return a tenant-scoped middleware sharing EventEmitter, PolicyEngine, KillSwitch.
|
|
37
|
+
* Only the DatabaseAdapter is scoped to the given tenantId.
|
|
38
|
+
*/
|
|
39
|
+
forTenant(tenantId: string): GovernanceMiddleware;
|
|
40
|
+
/**
|
|
41
|
+
* Evaluate a tool-call request against governance policies.
|
|
42
|
+
*
|
|
43
|
+
* Flow:
|
|
44
|
+
* 1. Kill-Switch check (immediate deny if active)
|
|
45
|
+
* 2. Policy resolution: inline > DB > default allow-all
|
|
46
|
+
* 3. PolicyEngine.evaluate()
|
|
47
|
+
* 4. Event emission (tool_call.allowed / tool_call.denied)
|
|
48
|
+
*/
|
|
49
|
+
evaluate(request: EvaluateRequest): Promise<EvaluateResult>;
|
|
50
|
+
registerAgent(config: AgentConfig): Promise<string>;
|
|
51
|
+
startAgent(agentId: string): Promise<void>;
|
|
52
|
+
stopAgent(agentId: string, reason?: string): Promise<void>;
|
|
53
|
+
getAgentStatus(agentId: string): Promise<AgentStatus | null>;
|
|
54
|
+
listAgents(): Promise<AgentStatus[]>;
|
|
55
|
+
deleteAgent(agentId: string): Promise<boolean>;
|
|
56
|
+
emergencyStop(reason?: string): void;
|
|
57
|
+
resetKillSwitch(reason?: string): void;
|
|
58
|
+
isKillSwitchActive(): boolean;
|
|
59
|
+
on(type: GovernanceEventType, listener: GovernanceEventListener): void;
|
|
60
|
+
off(type: GovernanceEventType, listener: GovernanceEventListener): void;
|
|
61
|
+
getKillSwitchStatus(): KillSwitchStatus;
|
|
62
|
+
setPolicy(policy: Policy): void;
|
|
63
|
+
/**
|
|
64
|
+
* Clear the inline policy. Subsequent evaluate() calls will
|
|
65
|
+
* fall back to DB-based policy or default allow-all.
|
|
66
|
+
*/
|
|
67
|
+
clearPolicy(): void;
|
|
68
|
+
writePolicy(policy: Policy): Promise<void>;
|
|
69
|
+
listPolicies(): Promise<Policy[]>;
|
|
70
|
+
getPolicyByName(name: string): Promise<Policy | null>;
|
|
71
|
+
deletePolicy(name: string): Promise<boolean>;
|
|
72
|
+
/**
|
|
73
|
+
* Evaluate a request against an inline policy without side effects.
|
|
74
|
+
* NO kill-switch check, NO events, NO DB interaction.
|
|
75
|
+
*/
|
|
76
|
+
evaluateDryRun(request: EvaluateRequest, policy: Policy): EvaluateResult;
|
|
77
|
+
getPolicyHistory(policyName: string): Promise<PolicyVersion[]>;
|
|
78
|
+
getPolicyVersion(policyName: string, versionId: number): Promise<PolicyVersion | null>;
|
|
79
|
+
rollbackPolicy(policyName: string, versionId: number): Promise<Policy>;
|
|
80
|
+
/**
|
|
81
|
+
* Get a single approval request by ID.
|
|
82
|
+
* Implements lazy timeout: if pending and past deadline, auto-resolves to 'timeout'.
|
|
83
|
+
*/
|
|
84
|
+
getApprovalRequest(id: string): Promise<ApprovalRequest | null>;
|
|
85
|
+
/**
|
|
86
|
+
* List approval requests with optional filtering.
|
|
87
|
+
* Applies lazy timeout to all overdue pending items.
|
|
88
|
+
*/
|
|
89
|
+
listApprovalRequests(filter?: ApprovalFilter): Promise<ApprovalRequest[]>;
|
|
90
|
+
/**
|
|
91
|
+
* Resolve an approval request (approve, reject, or timeout).
|
|
92
|
+
* Uses optimistic locking — returns { resolved, approval }.
|
|
93
|
+
*/
|
|
94
|
+
resolveApproval(id: string, resolution: ApprovalResolution): Promise<{
|
|
95
|
+
resolved: boolean;
|
|
96
|
+
approval?: ApprovalRequest;
|
|
97
|
+
}>;
|
|
98
|
+
/**
|
|
99
|
+
* Handle a tool call that requires approval.
|
|
100
|
+
* Creates an approval request, emits event, returns requiresApproval result.
|
|
101
|
+
*/
|
|
102
|
+
private handleApprovalRequired;
|
|
103
|
+
private requireDb;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=governance-middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance-middleware.d.ts","sourceRoot":"","sources":["../../src/lifecycle/governance-middleware.ts"],"names":[],"mappings":"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"}
|