@vorionsys/a3i 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.
Files changed (166) hide show
  1. package/LICENSE +190 -0
  2. package/dist/api/handlers.d.ts +231 -0
  3. package/dist/api/handlers.d.ts.map +1 -0
  4. package/dist/api/handlers.js +279 -0
  5. package/dist/api/handlers.js.map +1 -0
  6. package/dist/api/index.d.ts +24 -0
  7. package/dist/api/index.d.ts.map +1 -0
  8. package/dist/api/index.js +27 -0
  9. package/dist/api/index.js.map +1 -0
  10. package/dist/api/middleware.d.ts +106 -0
  11. package/dist/api/middleware.d.ts.map +1 -0
  12. package/dist/api/middleware.js +186 -0
  13. package/dist/api/middleware.js.map +1 -0
  14. package/dist/api/routes.d.ts +41 -0
  15. package/dist/api/routes.d.ts.map +1 -0
  16. package/dist/api/routes.js +91 -0
  17. package/dist/api/routes.js.map +1 -0
  18. package/dist/authorization/constraints.d.ts +75 -0
  19. package/dist/authorization/constraints.d.ts.map +1 -0
  20. package/dist/authorization/constraints.js +302 -0
  21. package/dist/authorization/constraints.js.map +1 -0
  22. package/dist/authorization/decision.d.ts +98 -0
  23. package/dist/authorization/decision.d.ts.map +1 -0
  24. package/dist/authorization/decision.js +202 -0
  25. package/dist/authorization/decision.js.map +1 -0
  26. package/dist/authorization/engine.d.ts +141 -0
  27. package/dist/authorization/engine.d.ts.map +1 -0
  28. package/dist/authorization/engine.js +339 -0
  29. package/dist/authorization/engine.js.map +1 -0
  30. package/dist/authorization/index.d.ts +10 -0
  31. package/dist/authorization/index.d.ts.map +1 -0
  32. package/dist/authorization/index.js +13 -0
  33. package/dist/authorization/index.js.map +1 -0
  34. package/dist/banding/band-calculator.d.ts +137 -0
  35. package/dist/banding/band-calculator.d.ts.map +1 -0
  36. package/dist/banding/band-calculator.js +252 -0
  37. package/dist/banding/band-calculator.js.map +1 -0
  38. package/dist/banding/bands.d.ts +56 -0
  39. package/dist/banding/bands.d.ts.map +1 -0
  40. package/dist/banding/bands.js +200 -0
  41. package/dist/banding/bands.js.map +1 -0
  42. package/dist/banding/hysteresis.d.ts +64 -0
  43. package/dist/banding/hysteresis.d.ts.map +1 -0
  44. package/dist/banding/hysteresis.js +143 -0
  45. package/dist/banding/hysteresis.js.map +1 -0
  46. package/dist/banding/index.d.ts +10 -0
  47. package/dist/banding/index.d.ts.map +1 -0
  48. package/dist/banding/index.js +10 -0
  49. package/dist/banding/index.js.map +1 -0
  50. package/dist/canary/canary-service.d.ts +123 -0
  51. package/dist/canary/canary-service.d.ts.map +1 -0
  52. package/dist/canary/canary-service.js +353 -0
  53. package/dist/canary/canary-service.js.map +1 -0
  54. package/dist/canary/index.d.ts +12 -0
  55. package/dist/canary/index.d.ts.map +1 -0
  56. package/dist/canary/index.js +14 -0
  57. package/dist/canary/index.js.map +1 -0
  58. package/dist/canary/probe-library.d.ts +43 -0
  59. package/dist/canary/probe-library.d.ts.map +1 -0
  60. package/dist/canary/probe-library.js +655 -0
  61. package/dist/canary/probe-library.js.map +1 -0
  62. package/dist/execution/engine.d.ts +120 -0
  63. package/dist/execution/engine.d.ts.map +1 -0
  64. package/dist/execution/engine.js +220 -0
  65. package/dist/execution/engine.js.map +1 -0
  66. package/dist/execution/index.d.ts +7 -0
  67. package/dist/execution/index.d.ts.map +1 -0
  68. package/dist/execution/index.js +7 -0
  69. package/dist/execution/index.js.map +1 -0
  70. package/dist/gate/index.d.ts +12 -0
  71. package/dist/gate/index.d.ts.map +1 -0
  72. package/dist/gate/index.js +14 -0
  73. package/dist/gate/index.js.map +1 -0
  74. package/dist/gate/pre-action-gate.d.ts +87 -0
  75. package/dist/gate/pre-action-gate.d.ts.map +1 -0
  76. package/dist/gate/pre-action-gate.js +286 -0
  77. package/dist/gate/pre-action-gate.js.map +1 -0
  78. package/dist/gate/risk-classifier.d.ts +43 -0
  79. package/dist/gate/risk-classifier.d.ts.map +1 -0
  80. package/dist/gate/risk-classifier.js +157 -0
  81. package/dist/gate/risk-classifier.js.map +1 -0
  82. package/dist/hooks/executor.d.ts +56 -0
  83. package/dist/hooks/executor.d.ts.map +1 -0
  84. package/dist/hooks/executor.js +217 -0
  85. package/dist/hooks/executor.js.map +1 -0
  86. package/dist/hooks/index.d.ts +45 -0
  87. package/dist/hooks/index.d.ts.map +1 -0
  88. package/dist/hooks/index.js +49 -0
  89. package/dist/hooks/index.js.map +1 -0
  90. package/dist/hooks/manager.d.ts +156 -0
  91. package/dist/hooks/manager.d.ts.map +1 -0
  92. package/dist/hooks/manager.js +267 -0
  93. package/dist/hooks/manager.js.map +1 -0
  94. package/dist/hooks/registry.d.ts +130 -0
  95. package/dist/hooks/registry.d.ts.map +1 -0
  96. package/dist/hooks/registry.js +238 -0
  97. package/dist/hooks/registry.js.map +1 -0
  98. package/dist/hooks/types.d.ts +226 -0
  99. package/dist/hooks/types.d.ts.map +1 -0
  100. package/dist/hooks/types.js +41 -0
  101. package/dist/hooks/types.js.map +1 -0
  102. package/dist/index.d.ts +20 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +31 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/observation/attestation.d.ts +102 -0
  107. package/dist/observation/attestation.d.ts.map +1 -0
  108. package/dist/observation/attestation.js +127 -0
  109. package/dist/observation/attestation.js.map +1 -0
  110. package/dist/observation/ceilings.d.ts +60 -0
  111. package/dist/observation/ceilings.d.ts.map +1 -0
  112. package/dist/observation/ceilings.js +110 -0
  113. package/dist/observation/ceilings.js.map +1 -0
  114. package/dist/observation/index.d.ts +11 -0
  115. package/dist/observation/index.d.ts.map +1 -0
  116. package/dist/observation/index.js +14 -0
  117. package/dist/observation/index.js.map +1 -0
  118. package/dist/observation/tiers.d.ts +96 -0
  119. package/dist/observation/tiers.d.ts.map +1 -0
  120. package/dist/observation/tiers.js +225 -0
  121. package/dist/observation/tiers.js.map +1 -0
  122. package/dist/orchestrator/index.d.ts +8 -0
  123. package/dist/orchestrator/index.d.ts.map +1 -0
  124. package/dist/orchestrator/index.js +8 -0
  125. package/dist/orchestrator/index.js.map +1 -0
  126. package/dist/orchestrator/orchestrator.d.ts +225 -0
  127. package/dist/orchestrator/orchestrator.d.ts.map +1 -0
  128. package/dist/orchestrator/orchestrator.js +302 -0
  129. package/dist/orchestrator/orchestrator.js.map +1 -0
  130. package/dist/orchestrator/proof-plane-adapter.d.ts +80 -0
  131. package/dist/orchestrator/proof-plane-adapter.d.ts.map +1 -0
  132. package/dist/orchestrator/proof-plane-adapter.js +78 -0
  133. package/dist/orchestrator/proof-plane-adapter.js.map +1 -0
  134. package/dist/trust/calculator.d.ts +60 -0
  135. package/dist/trust/calculator.d.ts.map +1 -0
  136. package/dist/trust/calculator.js +163 -0
  137. package/dist/trust/calculator.js.map +1 -0
  138. package/dist/trust/dimensions.d.ts +133 -0
  139. package/dist/trust/dimensions.d.ts.map +1 -0
  140. package/dist/trust/dimensions.js +257 -0
  141. package/dist/trust/dimensions.js.map +1 -0
  142. package/dist/trust/index.d.ts +14 -0
  143. package/dist/trust/index.d.ts.map +1 -0
  144. package/dist/trust/index.js +25 -0
  145. package/dist/trust/index.js.map +1 -0
  146. package/dist/trust/profile-service.d.ts +179 -0
  147. package/dist/trust/profile-service.d.ts.map +1 -0
  148. package/dist/trust/profile-service.js +378 -0
  149. package/dist/trust/profile-service.js.map +1 -0
  150. package/dist/trust/profile-store.d.ts +122 -0
  151. package/dist/trust/profile-store.d.ts.map +1 -0
  152. package/dist/trust/profile-store.js +132 -0
  153. package/dist/trust/profile-store.js.map +1 -0
  154. package/dist/trust/trust-calculator.d.ts +111 -0
  155. package/dist/trust/trust-calculator.d.ts.map +1 -0
  156. package/dist/trust/trust-calculator.js +271 -0
  157. package/dist/trust/trust-calculator.js.map +1 -0
  158. package/dist/trust/trust-dynamics.d.ts +152 -0
  159. package/dist/trust/trust-dynamics.d.ts.map +1 -0
  160. package/dist/trust/trust-dynamics.js +302 -0
  161. package/dist/trust/trust-dynamics.js.map +1 -0
  162. package/dist/trust/weights.d.ts +57 -0
  163. package/dist/trust/weights.d.ts.map +1 -0
  164. package/dist/trust/weights.js +75 -0
  165. package/dist/trust/weights.js.map +1 -0
  166. package/package.json +81 -0
@@ -0,0 +1,41 @@
1
+ /**
2
+ * API Routes - Route definitions for A3I HTTP API
3
+ */
4
+ import { Hono } from 'hono';
5
+ import { type ApiKeyConfig, type RateLimitConfig, type CorsConfig } from './middleware.js';
6
+ import { type HandlerContext } from './handlers.js';
7
+ /**
8
+ * API configuration options
9
+ */
10
+ export interface ApiConfig {
11
+ /** API key configuration */
12
+ apiKey?: Partial<ApiKeyConfig>;
13
+ /** Rate limiting configuration */
14
+ rateLimit?: RateLimitConfig;
15
+ /** CORS configuration */
16
+ cors?: CorsConfig;
17
+ /** Maximum request body size in bytes */
18
+ maxBodySize?: number;
19
+ /** Handler context with services */
20
+ context?: Partial<HandlerContext>;
21
+ /** Base path for all routes (default: /api/v1) */
22
+ basePath?: string;
23
+ }
24
+ /**
25
+ * Default API configuration
26
+ */
27
+ export declare const DEFAULT_API_CONFIG: Required<ApiConfig>;
28
+ /**
29
+ * Create the A3I API application
30
+ */
31
+ export declare function createApi(config?: ApiConfig): Hono;
32
+ /**
33
+ * Create API with handler context (for testing)
34
+ */
35
+ export declare function createApiWithContext(context: HandlerContext, config?: Omit<ApiConfig, 'context'>): Hono;
36
+ /**
37
+ * Export types for consumers
38
+ */
39
+ export type { HandlerContext };
40
+ export { createHandlers, type Handlers } from './handlers.js';
41
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAQL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,kCAAkC;IAClC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,yBAAyB;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,SAAS,CAkBlD,CAAC;AAEF;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,GAAE,SAAc,GAAG,IAAI,CA6DtD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,cAAc,EACvB,MAAM,GAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAM,GACtC,IAAI,CAEN;AAED;;GAEG;AACH,YAAY,EAAE,cAAc,EAAE,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * API Routes - Route definitions for A3I HTTP API
3
+ */
4
+ import { Hono } from 'hono';
5
+ import { apiKeyAuth, timing, requestId, errorHandler, rateLimit, cors, bodyLimit, } from './middleware.js';
6
+ import { createHandlers } from './handlers.js';
7
+ import { TrustProfileService } from '../trust/profile-service.js';
8
+ import { AuthorizationEngine } from '../authorization/engine.js';
9
+ /**
10
+ * Default API configuration
11
+ */
12
+ export const DEFAULT_API_CONFIG = {
13
+ apiKey: {
14
+ headerName: 'X-API-Key',
15
+ validKeys: new Set(['development-key']),
16
+ allowUnauthenticated: true,
17
+ },
18
+ rateLimit: {
19
+ limit: 100,
20
+ windowMs: 60000, // 1 minute
21
+ },
22
+ cors: {
23
+ origin: '*',
24
+ methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
25
+ credentials: false,
26
+ },
27
+ maxBodySize: 1024 * 1024, // 1MB
28
+ context: {},
29
+ basePath: '/api/v1',
30
+ };
31
+ /**
32
+ * Create the A3I API application
33
+ */
34
+ export function createApi(config = {}) {
35
+ const mergedConfig = {
36
+ ...DEFAULT_API_CONFIG,
37
+ ...config,
38
+ apiKey: { ...DEFAULT_API_CONFIG.apiKey, ...config.apiKey },
39
+ cors: { ...DEFAULT_API_CONFIG.cors, ...config.cors },
40
+ };
41
+ // Create services if not provided
42
+ const profileService = config.context?.profileService ?? new TrustProfileService();
43
+ const authEngine = config.context?.authEngine ?? new AuthorizationEngine({ profileService });
44
+ const context = {
45
+ profileService,
46
+ authEngine,
47
+ };
48
+ const handlers = createHandlers(context);
49
+ const app = new Hono();
50
+ // Apply global middleware
51
+ app.use('*', cors(mergedConfig.cors));
52
+ app.use('*', timing);
53
+ app.use('*', requestId);
54
+ app.use('*', errorHandler);
55
+ app.use('*', bodyLimit(mergedConfig.maxBodySize));
56
+ app.use('*', rateLimit(mergedConfig.rateLimit));
57
+ app.use('*', apiKeyAuth(mergedConfig.apiKey));
58
+ const basePath = mergedConfig.basePath;
59
+ // Health check (no auth required)
60
+ app.get(`${basePath}/health`, handlers.health);
61
+ // Service info
62
+ app.get(`${basePath}/info`, handlers.info);
63
+ // Authorization endpoint
64
+ app.post(`${basePath}/authorize`, handlers.authorize);
65
+ // Trust profile endpoints
66
+ app.get(`${basePath}/trust`, handlers.listTrustProfiles);
67
+ app.get(`${basePath}/trust/:agentId`, handlers.getTrustProfile);
68
+ app.get(`${basePath}/trust/:agentId/history`, handlers.getTrustHistory);
69
+ app.post(`${basePath}/trust/calculate`, handlers.calculateTrust);
70
+ app.delete(`${basePath}/trust/:agentId`, handlers.deleteTrustProfile);
71
+ // Band configuration
72
+ app.get(`${basePath}/bands`, handlers.getBands);
73
+ // 404 handler
74
+ app.notFound((c) => {
75
+ return c.json({
76
+ error: {
77
+ code: 'NOT_FOUND',
78
+ message: `Route ${c.req.method} ${c.req.path} not found`,
79
+ },
80
+ }, 404);
81
+ });
82
+ return app;
83
+ }
84
+ /**
85
+ * Create API with handler context (for testing)
86
+ */
87
+ export function createApiWithContext(context, config = {}) {
88
+ return createApi({ ...config, context });
89
+ }
90
+ export { createHandlers } from './handlers.js';
91
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Constraint Generation - Generate decision constraints based on trust level
3
+ *
4
+ * Constraints define what an agent can do when a request is permitted.
5
+ * Higher trust levels get more permissive constraints.
6
+ */
7
+ import { TrustBand, ApprovalType, ActionType, DataSensitivity, type DecisionConstraints, type ApprovalRequirement, type RateLimit, type Intent } from '@vorionsys/contracts';
8
+ /**
9
+ * Constraint preset for a trust band
10
+ */
11
+ export interface ConstraintPreset {
12
+ /** Default allowed tools at this band */
13
+ defaultTools: string[];
14
+ /** Default data scopes at this band */
15
+ defaultDataScopes: string[];
16
+ /** Default rate limits */
17
+ defaultRateLimits: RateLimit[];
18
+ /** Maximum execution time in ms */
19
+ maxExecutionTimeMs: number;
20
+ /** Maximum retry attempts */
21
+ maxRetries: number;
22
+ /** Whether reversibility is required */
23
+ reversibilityRequired: boolean;
24
+ }
25
+ /**
26
+ * Default constraint presets by trust band
27
+ */
28
+ export declare const BAND_CONSTRAINT_PRESETS: Record<TrustBand, ConstraintPreset>;
29
+ /**
30
+ * Approval requirements by action risk level
31
+ */
32
+ export interface ApprovalPolicy {
33
+ /** Minimum trust band that bypasses this approval */
34
+ bypassBand: TrustBand;
35
+ /** Approval type required below bypass band */
36
+ approvalType: ApprovalType;
37
+ /** Who needs to approve */
38
+ approverRole: string;
39
+ /** Timeout for approval in ms */
40
+ timeoutMs: number;
41
+ /** Reason message */
42
+ reason: string;
43
+ }
44
+ /**
45
+ * Default approval policies
46
+ */
47
+ export declare const DEFAULT_APPROVAL_POLICIES: Record<string, ApprovalPolicy>;
48
+ /**
49
+ * Options for constraint generation
50
+ */
51
+ export interface ConstraintGenerationOptions {
52
+ /** Override default tools */
53
+ allowedTools?: string[];
54
+ /** Override default data scopes */
55
+ dataScopes?: string[];
56
+ /** Override rate limits */
57
+ rateLimits?: RateLimit[];
58
+ /** Additional approval requirements */
59
+ additionalApprovals?: ApprovalRequirement[];
60
+ /** Custom resource quotas */
61
+ resourceQuotas?: Record<string, number>;
62
+ }
63
+ /**
64
+ * Generate constraints for a decision based on trust band and intent
65
+ */
66
+ export declare function generateConstraints(band: TrustBand, intent: Intent, options?: ConstraintGenerationOptions): DecisionConstraints;
67
+ /**
68
+ * Check if constraints allow an action
69
+ */
70
+ export declare function constraintsPermit(constraints: DecisionConstraints, actionType: ActionType, dataSensitivity: DataSensitivity): boolean;
71
+ /**
72
+ * Merge two sets of constraints (more restrictive wins)
73
+ */
74
+ export declare function mergeConstraints(a: DecisionConstraints, b: DecisionConstraints): DecisionConstraints;
75
+ //# sourceMappingURL=constraints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraints.d.ts","sourceRoot":"","sources":["../../src/authorization/constraints.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,SAAS,EACT,YAAY,EACZ,UAAU,EACV,eAAe,EAEf,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,MAAM,EACZ,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,uCAAuC;IACvC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,0BAA0B;IAC1B,iBAAiB,EAAE,SAAS,EAAE,CAAC;IAC/B,mCAAmC;IACnC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAiEvE,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,UAAU,EAAE,SAAS,CAAC;IACtB,+CAA+C;IAC/C,YAAY,EAAE,YAAY,CAAC;IAC3B,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CA6BpE,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,uCAAuC;IACvC,mBAAmB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC5C,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,2BAAgC,GACxC,mBAAmB,CAiCrB;AA8ID;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,GAC/B,OAAO,CAyBT;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,mBAAmB,EACtB,CAAC,EAAE,mBAAmB,GACrB,mBAAmB,CAgBrB"}
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Constraint Generation - Generate decision constraints based on trust level
3
+ *
4
+ * Constraints define what an agent can do when a request is permitted.
5
+ * Higher trust levels get more permissive constraints.
6
+ */
7
+ import { TrustBand, ApprovalType, ActionType, DataSensitivity, Reversibility, } from '@vorionsys/contracts';
8
+ /**
9
+ * Default constraint presets by trust band
10
+ */
11
+ export const BAND_CONSTRAINT_PRESETS = {
12
+ [TrustBand.T0_SANDBOX]: {
13
+ defaultTools: [],
14
+ defaultDataScopes: [],
15
+ defaultRateLimits: [{ resource: 'requests', limit: 0, windowSeconds: 60 }],
16
+ maxExecutionTimeMs: 0,
17
+ maxRetries: 0,
18
+ reversibilityRequired: true,
19
+ },
20
+ [TrustBand.T1_OBSERVED]: {
21
+ defaultTools: ['read_public'],
22
+ defaultDataScopes: ['public'],
23
+ defaultRateLimits: [{ resource: 'requests', limit: 10, windowSeconds: 60 }],
24
+ maxExecutionTimeMs: 5000,
25
+ maxRetries: 1,
26
+ reversibilityRequired: true,
27
+ },
28
+ [TrustBand.T2_PROVISIONAL]: {
29
+ defaultTools: ['read_public', 'read_internal', 'write_reversible'],
30
+ defaultDataScopes: ['public', 'internal'],
31
+ defaultRateLimits: [{ resource: 'requests', limit: 50, windowSeconds: 60 }],
32
+ maxExecutionTimeMs: 30000,
33
+ maxRetries: 2,
34
+ reversibilityRequired: true,
35
+ },
36
+ [TrustBand.T3_MONITORED]: {
37
+ defaultTools: ['read_public', 'read_internal', 'write_reversible', 'write_irreversible', 'execute_sandboxed'],
38
+ defaultDataScopes: ['public', 'internal', 'confidential'],
39
+ defaultRateLimits: [{ resource: 'requests', limit: 200, windowSeconds: 60 }],
40
+ maxExecutionTimeMs: 60000,
41
+ maxRetries: 3,
42
+ reversibilityRequired: false,
43
+ },
44
+ [TrustBand.T4_STANDARD]: {
45
+ defaultTools: ['read_public', 'read_internal', 'write_reversible', 'write_irreversible', 'execute_sandboxed', 'execute_production', 'communicate_internal', 'communicate_external'],
46
+ defaultDataScopes: ['public', 'internal', 'confidential', 'restricted'],
47
+ defaultRateLimits: [{ resource: 'requests', limit: 1000, windowSeconds: 60 }],
48
+ maxExecutionTimeMs: 300000,
49
+ maxRetries: 5,
50
+ reversibilityRequired: false,
51
+ },
52
+ [TrustBand.T5_TRUSTED]: {
53
+ defaultTools: ['*'],
54
+ defaultDataScopes: ['*'],
55
+ defaultRateLimits: [{ resource: 'requests', limit: 5000, windowSeconds: 60 }],
56
+ maxExecutionTimeMs: 600000,
57
+ maxRetries: 7,
58
+ reversibilityRequired: false,
59
+ },
60
+ [TrustBand.T6_CERTIFIED]: {
61
+ defaultTools: ['*'],
62
+ defaultDataScopes: ['*'],
63
+ defaultRateLimits: [{ resource: 'requests', limit: 10000, windowSeconds: 60 }],
64
+ maxExecutionTimeMs: 0, // No limit
65
+ maxRetries: 10,
66
+ reversibilityRequired: false,
67
+ },
68
+ [TrustBand.T7_AUTONOMOUS]: {
69
+ defaultTools: ['*'],
70
+ defaultDataScopes: ['*'],
71
+ defaultRateLimits: [], // No limits
72
+ maxExecutionTimeMs: 0, // No limit
73
+ maxRetries: 10,
74
+ reversibilityRequired: false,
75
+ },
76
+ };
77
+ /**
78
+ * Default approval policies
79
+ */
80
+ export const DEFAULT_APPROVAL_POLICIES = {
81
+ irreversible_action: {
82
+ bypassBand: TrustBand.T3_MONITORED,
83
+ approvalType: ApprovalType.HUMAN_REVIEW,
84
+ approverRole: 'supervisor',
85
+ timeoutMs: 300000,
86
+ reason: 'Irreversible action requires human approval at this trust level',
87
+ },
88
+ restricted_data: {
89
+ bypassBand: TrustBand.T4_STANDARD,
90
+ approvalType: ApprovalType.MULTI_PARTY,
91
+ approverRole: 'data_owner',
92
+ timeoutMs: 600000,
93
+ reason: 'Access to restricted data requires multi-party approval',
94
+ },
95
+ external_communication: {
96
+ bypassBand: TrustBand.T3_MONITORED,
97
+ approvalType: ApprovalType.AUTOMATED_CHECK,
98
+ approverRole: 'system',
99
+ timeoutMs: 5000,
100
+ reason: 'External communication requires verification',
101
+ },
102
+ production_execution: {
103
+ bypassBand: TrustBand.T3_MONITORED,
104
+ approvalType: ApprovalType.HUMAN_REVIEW,
105
+ approverRole: 'operator',
106
+ timeoutMs: 300000,
107
+ reason: 'Production execution requires operator approval',
108
+ },
109
+ };
110
+ /**
111
+ * Generate constraints for a decision based on trust band and intent
112
+ */
113
+ export function generateConstraints(band, intent, options = {}) {
114
+ const preset = BAND_CONSTRAINT_PRESETS[band];
115
+ // Determine required approvals
116
+ const requiredApprovals = determineApprovals(band, intent);
117
+ if (options.additionalApprovals) {
118
+ requiredApprovals.push(...options.additionalApprovals);
119
+ }
120
+ // Determine allowed tools
121
+ let allowedTools = options.allowedTools ?? [...preset.defaultTools];
122
+ allowedTools = filterToolsByIntent(allowedTools, intent);
123
+ // Determine data scopes
124
+ let dataScopes = options.dataScopes ?? [...preset.defaultDataScopes];
125
+ dataScopes = filterScopesByIntent(dataScopes, intent);
126
+ // Determine rate limits
127
+ const rateLimits = options.rateLimits ?? [...preset.defaultRateLimits];
128
+ // Determine reversibility requirement
129
+ const reversibilityRequired = determineReversibilityRequired(band, intent, preset);
130
+ return {
131
+ requiredApprovals,
132
+ allowedTools,
133
+ dataScopes,
134
+ rateLimits,
135
+ reversibilityRequired,
136
+ maxExecutionTimeMs: preset.maxExecutionTimeMs || undefined,
137
+ maxRetries: preset.maxRetries || undefined,
138
+ resourceQuotas: options.resourceQuotas,
139
+ };
140
+ }
141
+ /**
142
+ * Determine what approvals are required based on band and intent
143
+ */
144
+ function determineApprovals(band, intent) {
145
+ const approvals = [];
146
+ // Check for irreversible actions
147
+ if (intent.reversibility === Reversibility.IRREVERSIBLE) {
148
+ const policy = DEFAULT_APPROVAL_POLICIES.irreversible_action;
149
+ if (band < policy.bypassBand) {
150
+ approvals.push({
151
+ type: policy.approvalType,
152
+ approver: policy.approverRole,
153
+ timeoutMs: policy.timeoutMs,
154
+ reason: policy.reason,
155
+ });
156
+ }
157
+ }
158
+ // Check for restricted data
159
+ if (intent.dataSensitivity === DataSensitivity.RESTRICTED) {
160
+ const policy = DEFAULT_APPROVAL_POLICIES.restricted_data;
161
+ if (band < policy.bypassBand) {
162
+ approvals.push({
163
+ type: policy.approvalType,
164
+ approver: policy.approverRole,
165
+ timeoutMs: policy.timeoutMs,
166
+ reason: policy.reason,
167
+ });
168
+ }
169
+ }
170
+ // Check for external communication
171
+ if (intent.actionType === ActionType.COMMUNICATE && intent.context?.metadata?.external) {
172
+ const policy = DEFAULT_APPROVAL_POLICIES.external_communication;
173
+ if (band < policy.bypassBand) {
174
+ approvals.push({
175
+ type: policy.approvalType,
176
+ approver: policy.approverRole,
177
+ timeoutMs: policy.timeoutMs,
178
+ reason: policy.reason,
179
+ });
180
+ }
181
+ }
182
+ // Check for production execution
183
+ if (intent.actionType === ActionType.EXECUTE &&
184
+ intent.context?.environment === 'production') {
185
+ const policy = DEFAULT_APPROVAL_POLICIES.production_execution;
186
+ if (band < policy.bypassBand) {
187
+ approvals.push({
188
+ type: policy.approvalType,
189
+ approver: policy.approverRole,
190
+ timeoutMs: policy.timeoutMs,
191
+ reason: policy.reason,
192
+ });
193
+ }
194
+ }
195
+ return approvals;
196
+ }
197
+ /**
198
+ * Filter tools based on intent action type
199
+ */
200
+ function filterToolsByIntent(tools, intent) {
201
+ // Allow all if wildcard
202
+ if (tools.includes('*')) {
203
+ return ['*'];
204
+ }
205
+ // Filter based on action type
206
+ switch (intent.actionType) {
207
+ case ActionType.READ:
208
+ return tools.filter((t) => t.startsWith('read_'));
209
+ case ActionType.WRITE:
210
+ return tools.filter((t) => t.startsWith('write_') || t.startsWith('read_'));
211
+ case ActionType.DELETE:
212
+ return tools.filter((t) => t.startsWith('write_') || t.startsWith('delete_') || t.startsWith('read_'));
213
+ case ActionType.EXECUTE:
214
+ return tools.filter((t) => t.startsWith('execute_') || t.startsWith('read_'));
215
+ case ActionType.COMMUNICATE:
216
+ return tools.filter((t) => t.startsWith('communicate_') || t.startsWith('read_'));
217
+ case ActionType.TRANSFER:
218
+ return tools.filter((t) => t.startsWith('transfer_') || t.startsWith('read_'));
219
+ default:
220
+ return tools;
221
+ }
222
+ }
223
+ /**
224
+ * Filter data scopes based on intent sensitivity
225
+ */
226
+ function filterScopesByIntent(scopes, intent) {
227
+ // Allow all if wildcard
228
+ if (scopes.includes('*')) {
229
+ return ['*'];
230
+ }
231
+ const sensitivityOrder = [
232
+ DataSensitivity.PUBLIC,
233
+ DataSensitivity.INTERNAL,
234
+ DataSensitivity.CONFIDENTIAL,
235
+ DataSensitivity.RESTRICTED,
236
+ ];
237
+ const scopeOrder = ['public', 'internal', 'confidential', 'restricted'];
238
+ const intentLevel = sensitivityOrder.indexOf(intent.dataSensitivity);
239
+ if (intentLevel === -1)
240
+ return scopes;
241
+ // Filter to scopes at or below the intent's sensitivity
242
+ return scopes.filter((scope) => {
243
+ const scopeLevel = scopeOrder.indexOf(scope);
244
+ return scopeLevel !== -1 && scopeLevel <= intentLevel;
245
+ });
246
+ }
247
+ /**
248
+ * Determine if reversibility is required
249
+ */
250
+ function determineReversibilityRequired(band, intent, preset) {
251
+ // If intent is already reversible, no requirement needed
252
+ if (intent.reversibility === Reversibility.REVERSIBLE) {
253
+ return false;
254
+ }
255
+ // Higher trust bands don't require reversibility
256
+ if (band >= TrustBand.T3_MONITORED) {
257
+ return false;
258
+ }
259
+ return preset.reversibilityRequired;
260
+ }
261
+ /**
262
+ * Check if constraints allow an action
263
+ */
264
+ export function constraintsPermit(constraints, actionType, dataSensitivity) {
265
+ // Check if tools allow the action type
266
+ const toolPrefix = actionType.toLowerCase();
267
+ const hasMatchingTool = constraints.allowedTools.includes('*') ||
268
+ constraints.allowedTools.some((t) => t.startsWith(toolPrefix) || t.startsWith('read_'));
269
+ if (!hasMatchingTool) {
270
+ return false;
271
+ }
272
+ // Check data scope
273
+ const sensitivityToScope = {
274
+ [DataSensitivity.PUBLIC]: 'public',
275
+ [DataSensitivity.INTERNAL]: 'internal',
276
+ [DataSensitivity.CONFIDENTIAL]: 'confidential',
277
+ [DataSensitivity.RESTRICTED]: 'restricted',
278
+ };
279
+ const requiredScope = sensitivityToScope[dataSensitivity];
280
+ const hasScopeAccess = constraints.dataScopes.includes('*') ||
281
+ constraints.dataScopes.includes(requiredScope);
282
+ return hasScopeAccess;
283
+ }
284
+ /**
285
+ * Merge two sets of constraints (more restrictive wins)
286
+ */
287
+ export function mergeConstraints(a, b) {
288
+ return {
289
+ requiredApprovals: [...a.requiredApprovals, ...b.requiredApprovals],
290
+ allowedTools: a.allowedTools.filter((t) => b.allowedTools.includes(t) || t === '*'),
291
+ dataScopes: a.dataScopes.filter((s) => b.dataScopes.includes(s) || s === '*'),
292
+ rateLimits: [...a.rateLimits, ...b.rateLimits],
293
+ reversibilityRequired: a.reversibilityRequired || b.reversibilityRequired,
294
+ maxExecutionTimeMs: a.maxExecutionTimeMs && b.maxExecutionTimeMs
295
+ ? Math.min(a.maxExecutionTimeMs, b.maxExecutionTimeMs)
296
+ : a.maxExecutionTimeMs ?? b.maxExecutionTimeMs,
297
+ maxRetries: a.maxRetries !== undefined && b.maxRetries !== undefined
298
+ ? Math.min(a.maxRetries, b.maxRetries)
299
+ : a.maxRetries ?? b.maxRetries,
300
+ };
301
+ }
302
+ //# sourceMappingURL=constraints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraints.js","sourceRoot":"","sources":["../../src/authorization/constraints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Decision Builder - Construct authorization decisions
3
+ *
4
+ * Provides utilities for creating Decision objects with proper
5
+ * validation and structure.
6
+ */
7
+ import { TrustBand, DenialReason, type Decision, type DecisionConstraints, type Intent, type TrustProfile } from '@vorionsys/contracts';
8
+ /**
9
+ * Options for building a decision
10
+ */
11
+ export interface DecisionBuildOptions {
12
+ /** Override decision ID */
13
+ decisionId?: string;
14
+ /** Policy set that was used */
15
+ policySetId?: string;
16
+ /** Decision validity duration in ms (default: 5 minutes) */
17
+ validityDurationMs?: number;
18
+ /** Current time for calculation */
19
+ now?: Date;
20
+ }
21
+ /**
22
+ * Result of a permit decision
23
+ */
24
+ export interface PermitResult {
25
+ type: 'permit';
26
+ reasoning: string[];
27
+ constraints: DecisionConstraints;
28
+ }
29
+ /**
30
+ * Result of a deny decision
31
+ */
32
+ export interface DenyResult {
33
+ type: 'deny';
34
+ reason: DenialReason;
35
+ reasoning: string[];
36
+ remediations?: string[];
37
+ }
38
+ /**
39
+ * Union type for authorization results
40
+ */
41
+ export type AuthorizationResult = PermitResult | DenyResult;
42
+ /**
43
+ * Build a permit decision
44
+ */
45
+ export declare function buildPermitDecision(intent: Intent, profile: TrustProfile, constraints: DecisionConstraints, reasoning: string[], options?: DecisionBuildOptions): Decision;
46
+ /**
47
+ * Build a deny decision
48
+ */
49
+ export declare function buildDenyDecision(intent: Intent, profile: TrustProfile | null, _reason: DenialReason, // Reserved for future denialReason field in Decision
50
+ reasoning: string[], options?: DecisionBuildOptions): Decision;
51
+ /**
52
+ * Get remediation suggestions for a denial reason
53
+ */
54
+ export declare function getRemediations(reason: DenialReason, _context?: Record<string, unknown>): string[];
55
+ /**
56
+ * Determine the denial reason based on evaluation context
57
+ */
58
+ export declare function determineDenialReason(profile: TrustProfile | null, _intent: Intent, // Reserved for future intent-specific denial logic
59
+ minRequiredBand: TrustBand, checks: {
60
+ intentExpired?: boolean;
61
+ rateLimitExceeded?: boolean;
62
+ resourceRestricted?: boolean;
63
+ policyViolation?: boolean;
64
+ contextMismatch?: boolean;
65
+ }): DenialReason;
66
+ /**
67
+ * Create decision summary for logging
68
+ */
69
+ export declare function summarizeDecision(decision: Decision): string;
70
+ /**
71
+ * Check if a decision is still valid
72
+ */
73
+ export declare function isDecisionValid(decision: Decision, now?: Date): boolean;
74
+ /**
75
+ * Decision builder class for fluent API
76
+ */
77
+ export declare class DecisionBuilder {
78
+ private intent;
79
+ private profile;
80
+ private permitted;
81
+ private constraints;
82
+ private reasoning;
83
+ private denialReason;
84
+ private options;
85
+ constructor(intent: Intent);
86
+ withProfile(profile: TrustProfile): this;
87
+ permit(): this;
88
+ deny(reason: DenialReason): this;
89
+ withConstraints(constraints: DecisionConstraints): this;
90
+ addReasoning(...reasons: string[]): this;
91
+ withOptions(options: DecisionBuildOptions): this;
92
+ build(): Decision;
93
+ /**
94
+ * Static factory for creating builders
95
+ */
96
+ static for(intent: Intent): DecisionBuilder;
97
+ }
98
+ //# sourceMappingURL=decision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../../src/authorization/decision.ts"],"names":[],"mappings":"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"}