agent-passport-system 1.34.0 → 1.36.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 (55) hide show
  1. package/dist/src/adapters/a2a.d.ts +52 -0
  2. package/dist/src/adapters/a2a.d.ts.map +1 -1
  3. package/dist/src/adapters/a2a.js +88 -0
  4. package/dist/src/adapters/a2a.js.map +1 -1
  5. package/dist/src/adapters/crewai.d.ts +37 -0
  6. package/dist/src/adapters/crewai.d.ts.map +1 -1
  7. package/dist/src/adapters/crewai.js +75 -0
  8. package/dist/src/adapters/crewai.js.map +1 -1
  9. package/dist/src/adapters/ibac-cedar.d.ts +24 -0
  10. package/dist/src/adapters/ibac-cedar.d.ts.map +1 -0
  11. package/dist/src/adapters/ibac-cedar.js +76 -0
  12. package/dist/src/adapters/ibac-cedar.js.map +1 -0
  13. package/dist/src/adapters/ibac.d.ts +77 -0
  14. package/dist/src/adapters/ibac.d.ts.map +1 -0
  15. package/dist/src/adapters/ibac.js +117 -0
  16. package/dist/src/adapters/ibac.js.map +1 -0
  17. package/dist/src/adapters/langchain.d.ts +32 -0
  18. package/dist/src/adapters/langchain.d.ts.map +1 -1
  19. package/dist/src/adapters/langchain.js +73 -0
  20. package/dist/src/adapters/langchain.js.map +1 -1
  21. package/dist/src/adapters/mcp.d.ts +45 -0
  22. package/dist/src/adapters/mcp.d.ts.map +1 -0
  23. package/dist/src/adapters/mcp.js +84 -0
  24. package/dist/src/adapters/mcp.js.map +1 -0
  25. package/dist/src/core/evaluation-context.d.ts +23 -0
  26. package/dist/src/core/evaluation-context.d.ts.map +1 -0
  27. package/dist/src/core/evaluation-context.js +100 -0
  28. package/dist/src/core/evaluation-context.js.map +1 -0
  29. package/dist/src/core/recovery.d.ts +40 -0
  30. package/dist/src/core/recovery.d.ts.map +1 -0
  31. package/dist/src/core/recovery.js +128 -0
  32. package/dist/src/core/recovery.js.map +1 -0
  33. package/dist/src/index.d.ts +17 -0
  34. package/dist/src/index.d.ts.map +1 -1
  35. package/dist/src/index.js +13 -0
  36. package/dist/src/index.js.map +1 -1
  37. package/dist/src/types/attestation.d.ts +22 -0
  38. package/dist/src/types/attestation.d.ts.map +1 -1
  39. package/dist/src/types/health.d.ts +37 -0
  40. package/dist/src/types/health.d.ts.map +1 -0
  41. package/dist/src/types/health.js +18 -0
  42. package/dist/src/types/health.js.map +1 -0
  43. package/dist/src/types/recovery.d.ts +82 -0
  44. package/dist/src/types/recovery.d.ts.map +1 -0
  45. package/dist/src/types/recovery.js +12 -0
  46. package/dist/src/types/recovery.js.map +1 -0
  47. package/dist/src/v2/bridge.d.ts +2 -0
  48. package/dist/src/v2/bridge.d.ts.map +1 -1
  49. package/dist/src/v2/bridge.js +14 -0
  50. package/dist/src/v2/bridge.js.map +1 -1
  51. package/dist/src/v2/index.d.ts +1 -1
  52. package/dist/src/v2/index.d.ts.map +1 -1
  53. package/dist/src/v2/types.d.ts +7 -0
  54. package/dist/src/v2/types.d.ts.map +1 -1
  55. package/package.json +3 -2
@@ -27,4 +27,56 @@ export interface A2AGovernance {
27
27
  hook: GovernanceHook;
28
28
  }
29
29
  export declare function createA2AGovernance(config: GovernanceHookConfig): A2AGovernance;
30
+ import type { Delegation, SignedPassport } from '../types/passport.js';
31
+ export interface A2AAgentCardV2 {
32
+ name: string;
33
+ description?: string;
34
+ url?: string;
35
+ provider?: {
36
+ organization: string;
37
+ url?: string;
38
+ };
39
+ version?: string;
40
+ capabilities?: {
41
+ streaming?: boolean;
42
+ pushNotifications?: boolean;
43
+ stateTransitionHistory?: boolean;
44
+ };
45
+ skills?: Array<{
46
+ id: string;
47
+ name: string;
48
+ description?: string;
49
+ inputModes?: string[];
50
+ outputModes?: string[];
51
+ }>;
52
+ securitySchemes?: Record<string, unknown>;
53
+ security?: unknown[];
54
+ defaultInputModes?: string[];
55
+ defaultOutputModes?: string[];
56
+ extensions?: {
57
+ aps_trust?: unknown;
58
+ [k: string]: unknown;
59
+ };
60
+ }
61
+ /** Convert APS passport to A2A Agent Card */
62
+ export declare function passportToA2ACard(passport: SignedPassport, opts?: {
63
+ delegation?: Delegation;
64
+ url?: string;
65
+ skills?: A2AAgentCardV2['skills'];
66
+ capabilities?: A2AAgentCardV2['capabilities'];
67
+ }): A2AAgentCardV2;
68
+ /** Convert A2A Agent Card to APS passport metadata */
69
+ export declare function a2aCardToPassportMeta(card: A2AAgentCardV2): {
70
+ agentId: string;
71
+ metadata: Record<string, unknown>;
72
+ };
73
+ /** Verify an A2A agent has valid APS identity */
74
+ export declare function verifyA2AIdentity(card: A2AAgentCardV2, passport: SignedPassport): {
75
+ valid: boolean;
76
+ errors: string[];
77
+ };
78
+ /** Extract delegation scope from A2A skills */
79
+ export declare function a2aSkillsToScope(skills?: A2AAgentCardV2['skills']): string[];
80
+ /** Embed APS trust signal in Agent Card extensions */
81
+ export declare function embedA2ATrustSignal(card: A2AAgentCardV2, passport: SignedPassport, trustEndpoint?: string): A2AAgentCardV2;
30
82
  //# sourceMappingURL=a2a.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../../../src/adapters/a2a.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAoB,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEnD,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,YAAY,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,MAAM,EAAE,CAAA;IAC9C,8BAA8B;IAC9B,cAAc,EAAE,CACd,UAAU,EAAE,YAAY,EACxB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAC5B,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,iBAAiB,CAAC;QAAC,UAAU,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAA;IAC3F,8BAA8B;IAC9B,iBAAiB,EAAE,CACjB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAC5B,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,iBAAiB,CAAC;QAAC,UAAU,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAA;IAC3F,eAAe,EAAE,MAAM,iBAAiB,EAAE,CAAA;IAC1C,IAAI,EAAE,cAAc,CAAA;CACrB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,aAAa,CAmD/E"}
1
+ {"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../../../src/adapters/a2a.ts"],"names":[],"mappings":"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"}
@@ -50,4 +50,92 @@ export function createA2AGovernance(config) {
50
50
  hook,
51
51
  };
52
52
  }
53
+ // ══════════════════════════════════════
54
+ // v2: Direct passport ↔ Agent Card bridge (IBAC pattern)
55
+ // ══════════════════════════════════════
56
+ import { verifyPassport } from '../verification/verify.js';
57
+ /** Convert APS passport to A2A Agent Card */
58
+ export function passportToA2ACard(passport, opts) {
59
+ const p = passport.passport;
60
+ const card = {
61
+ name: p.agentName || p.agentId,
62
+ description: p.mission,
63
+ url: opts?.url,
64
+ version: '1.0',
65
+ capabilities: opts?.capabilities || {},
66
+ securitySchemes: {
67
+ aps_ed25519: {
68
+ type: 'ed25519',
69
+ publicKey: p.publicKey,
70
+ agentId: p.agentId,
71
+ },
72
+ },
73
+ };
74
+ // Map delegation scope to skills
75
+ if (opts?.skills) {
76
+ card.skills = opts.skills;
77
+ }
78
+ else if (opts?.delegation) {
79
+ card.skills = opts.delegation.scope.map(s => ({
80
+ id: s,
81
+ name: s.replace(/:/g, ' ').replace(/\b\w/g, c => c.toUpperCase()),
82
+ }));
83
+ }
84
+ if (p.ownerAlias) {
85
+ card.provider = { organization: p.ownerAlias };
86
+ }
87
+ return card;
88
+ }
89
+ /** Convert A2A Agent Card to APS passport metadata */
90
+ export function a2aCardToPassportMeta(card) {
91
+ return {
92
+ agentId: card.name.toLowerCase().replace(/[^a-z0-9-]/g, '-'),
93
+ metadata: {
94
+ a2a_name: card.name,
95
+ a2a_description: card.description,
96
+ a2a_url: card.url,
97
+ a2a_provider: card.provider,
98
+ a2a_version: card.version,
99
+ a2a_capabilities: card.capabilities,
100
+ a2a_skill_count: card.skills?.length || 0,
101
+ },
102
+ };
103
+ }
104
+ /** Verify an A2A agent has valid APS identity */
105
+ export function verifyA2AIdentity(card, passport) {
106
+ const errors = [];
107
+ const pc = verifyPassport(passport);
108
+ if (!pc.valid)
109
+ errors.push(...pc.errors);
110
+ const p = passport.passport;
111
+ if (card.name !== p.agentName && card.name !== p.agentId) {
112
+ errors.push(`Card name "${card.name}" does not match passport agentName "${p.agentName}" or agentId "${p.agentId}"`);
113
+ }
114
+ const schemePubKey = card.securitySchemes?.aps_ed25519?.publicKey;
115
+ if (schemePubKey && schemePubKey !== p.publicKey) {
116
+ errors.push('Card security scheme publicKey does not match passport publicKey');
117
+ }
118
+ return { valid: errors.length === 0, errors };
119
+ }
120
+ /** Extract delegation scope from A2A skills */
121
+ export function a2aSkillsToScope(skills) {
122
+ if (!skills || skills.length === 0)
123
+ return [];
124
+ return skills.map(s => `a2a:${s.id}`);
125
+ }
126
+ /** Embed APS trust signal in Agent Card extensions */
127
+ export function embedA2ATrustSignal(card, passport, trustEndpoint) {
128
+ return {
129
+ ...card,
130
+ extensions: {
131
+ ...card.extensions,
132
+ aps_trust: {
133
+ agentId: passport.passport.agentId,
134
+ publicKey: passport.passport.publicKey,
135
+ trustEndpoint: trustEndpoint || `https://gateway.aeoess.com/api/v1/public/trust/${passport.passport.agentId}`,
136
+ protocol: 'agent-passport-system',
137
+ },
138
+ },
139
+ };
140
+ }
53
141
  //# sourceMappingURL=a2a.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"a2a.js","sourceRoot":"","sources":["../../../src/adapters/a2a.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAuBrD,MAAM,UAAU,mBAAmB,CAAC,MAA4B;IAC9D,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAA;IAEvC,MAAM,YAAY,GAAG,CAAC,IAAkB,EAAY,EAAE;QACpD,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC9D,IAAI,IAAI,CAAC,YAAY,EAAE,iBAAiB;YAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACjE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QACxD,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,EAC1B,UAAwB,EACxB,eAAuB,EACvB,OAA+B,EAC/B,EAAE;QACF,MAAM,MAAM,GAAqB;YAC/B,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,UAAU,CAAC,GAAG;YACtB,aAAa,EAAE,kBAAkB;YACjC,QAAQ,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;SAC/E,CAAA;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,KAAK,EAC7B,SAAiB,EACjB,eAAuB,EACvB,OAA+B,EAC/B,EAAE;QACF,MAAM,MAAM,GAAqB;YAC/B,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,kBAAkB;YACjC,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;SACrE,CAAA;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC,CAAA;IAED,OAAO;QACL,YAAY;QACZ,cAAc;QACd,iBAAiB;QACjB,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE;QACzC,IAAI;KACL,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"a2a.js","sourceRoot":"","sources":["../../../src/adapters/a2a.ts"],"names":[],"mappings":"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"}
@@ -40,4 +40,41 @@ export interface CrewAIGovernance {
40
40
  * Maps CrewAI's task/tool lifecycle to APS governance.
41
41
  */
42
42
  export declare function createCrewAIGovernance(config: GovernanceHookConfig): CrewAIGovernance;
43
+ import type { Delegation, ActionReceipt, SignedPassport } from '../types/passport.js';
44
+ export interface CrewTask {
45
+ description: string;
46
+ agent: string;
47
+ tools?: string[];
48
+ expected_output?: string;
49
+ }
50
+ export interface CrewGovernanceConfig {
51
+ passport: SignedPassport;
52
+ delegation: Delegation;
53
+ privateKey: string;
54
+ onReceipt?: (r: ActionReceipt) => void;
55
+ onDenied?: (info: {
56
+ task: string;
57
+ agent: string;
58
+ reason: string;
59
+ }) => void;
60
+ }
61
+ export interface GovernedTaskResult {
62
+ output: unknown;
63
+ receipt: ActionReceipt;
64
+ toolReceipts: ActionReceipt[];
65
+ }
66
+ /** Generate scopes needed for a CrewTask */
67
+ export declare function crewTaskToScopes(task: CrewTask): string[];
68
+ /** Verify crew member has authority for task */
69
+ export declare function verifyCrewMember(agentName: string, task: CrewTask, config: CrewGovernanceConfig): {
70
+ authorized: boolean;
71
+ reason: string;
72
+ scope: string;
73
+ };
74
+ /** Wrap task execution with governance */
75
+ export declare function governCrewTask(task: CrewTask, execute: (task: CrewTask) => Promise<unknown>, config: CrewGovernanceConfig): Promise<GovernedTaskResult | {
76
+ denied: true;
77
+ reason: string;
78
+ receipt: ActionReceipt;
79
+ }>;
43
80
  //# sourceMappingURL=crewai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crewai.d.ts","sourceRoot":"","sources":["../../../src/adapters/crewai.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAoB,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,YAAY,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,iBAAiB,CAAA;IAC7D,uCAAuC;IACvC,gBAAgB,EAAE,CAAC,CAAC,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,aAAa,CAAC,EAAE,MAAM,KACnB,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,iBAAiB,CAAC;QAAC,UAAU,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAA;IAC5F,uBAAuB;IACvB,WAAW,EAAE,MAAM,iBAAiB,EAAE,CAAA;IACtC,8BAA8B;IAC9B,IAAI,EAAE,cAAc,CAAA;CACrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,GAAG,gBAAgB,CAoCrF"}
1
+ {"version":3,"file":"crewai.d.ts","sourceRoot":"","sources":["../../../src/adapters/crewai.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAoB,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,YAAY,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,iBAAiB,CAAA;IAC7D,uCAAuC;IACvC,gBAAgB,EAAE,CAAC,CAAC,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,aAAa,CAAC,EAAE,MAAM,KACnB,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,iBAAiB,CAAC;QAAC,UAAU,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAA;IAC5F,uBAAuB;IACvB,WAAW,EAAE,MAAM,iBAAiB,EAAE,CAAA;IACtC,8BAA8B;IAC9B,IAAI,EAAE,cAAc,CAAA;CACrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,GAAG,gBAAgB,CAoCrF;AAWD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErF,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,cAAc,CAAA;IACxB,UAAU,EAAE,UAAU,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAA;IACtC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CAC3E;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,aAAa,CAAA;IACtB,YAAY,EAAE,aAAa,EAAE,CAAA;CAC9B;AAmBD,4CAA4C;AAC5C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAQzD;AAED,gDAAgD;AAChD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,oBAAoB,GAC3B;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiBxD;AAED,0CAA0C;AAC1C,wBAAsB,cAAc,CAClC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,EAC7C,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,kBAAkB,GAAG;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC,CAyBxF"}
@@ -49,4 +49,79 @@ export function createCrewAIGovernance(config) {
49
49
  hook,
50
50
  };
51
51
  }
52
+ // ══════════════════════════════════════
53
+ // v2: Direct receipt-builder governance (IBAC pattern)
54
+ // ══════════════════════════════════════
55
+ import { scopeAuthorizes, verifyDelegation } from '../core/delegation.js';
56
+ import { verifyPassport } from '../verification/verify.js';
57
+ import { sign } from '../crypto/keys.js';
58
+ import { canonicalize } from '../core/canonical.js';
59
+ function buildCrewReceipt(agentId, delegationId, privateKey, target, scope, status, summary) {
60
+ const data = {
61
+ receiptId: `rcpt_crew_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 6)}`,
62
+ version: '1.1',
63
+ timestamp: new Date().toISOString(),
64
+ agentId, delegationId,
65
+ action: { type: 'crew_task', target, scopeUsed: scope },
66
+ result: { status, summary },
67
+ delegationChain: [],
68
+ };
69
+ const sig = sign(canonicalize(data), privateKey);
70
+ return { ...data, signature: sig };
71
+ }
72
+ /** Generate scopes needed for a CrewTask */
73
+ export function crewTaskToScopes(task) {
74
+ const scopes = [`crew:execute:${task.agent}`];
75
+ if (task.tools) {
76
+ for (const tool of task.tools) {
77
+ scopes.push(`tools:${tool}`);
78
+ }
79
+ }
80
+ return scopes;
81
+ }
82
+ /** Verify crew member has authority for task */
83
+ export function verifyCrewMember(agentName, task, config) {
84
+ const scopes = crewTaskToScopes(task);
85
+ const mainScope = scopes[0];
86
+ const pc = verifyPassport(config.passport);
87
+ if (!pc.valid)
88
+ return { authorized: false, reason: `Passport invalid: ${pc.errors.join(', ')}`, scope: mainScope };
89
+ const dc = verifyDelegation(config.delegation);
90
+ if (!dc.valid)
91
+ return { authorized: false, reason: `Delegation invalid: ${dc.errors.join(', ')}`, scope: mainScope };
92
+ for (const scope of scopes) {
93
+ if (!scopeAuthorizes(config.delegation.scope, scope)) {
94
+ return { authorized: false, reason: `Scope "${scope}" not covered by delegation`, scope };
95
+ }
96
+ }
97
+ return { authorized: true, reason: `All ${scopes.length} scopes authorized`, scope: mainScope };
98
+ }
99
+ /** Wrap task execution with governance */
100
+ export async function governCrewTask(task, execute, config) {
101
+ const check = verifyCrewMember(task.agent, task, config);
102
+ const { passport, delegation, privateKey } = config;
103
+ if (!check.authorized) {
104
+ if (config.onDenied)
105
+ config.onDenied({ task: task.description, agent: task.agent, reason: check.reason });
106
+ const receipt = buildCrewReceipt(passport.passport.agentId, delegation.delegationId, privateKey, task.description, check.scope, 'failure', check.reason);
107
+ if (config.onReceipt)
108
+ config.onReceipt(receipt);
109
+ return { denied: true, reason: check.reason, receipt };
110
+ }
111
+ const output = await execute(task);
112
+ // Build tool-level receipts
113
+ const toolReceipts = (task.tools || []).map(tool => {
114
+ const scope = `tools:${tool}`;
115
+ return buildCrewReceipt(passport.passport.agentId, delegation.delegationId, privateKey, tool, scope, 'success', `Tool ${tool} used during task`);
116
+ });
117
+ const mainScope = crewTaskToScopes(task).join(', ');
118
+ const receipt = buildCrewReceipt(passport.passport.agentId, delegation.delegationId, privateKey, task.description, mainScope, 'success', `Task completed with ${(task.tools || []).length} tools`);
119
+ if (config.onReceipt)
120
+ config.onReceipt(receipt);
121
+ for (const tr of toolReceipts) {
122
+ if (config.onReceipt)
123
+ config.onReceipt(tr);
124
+ }
125
+ return { output, receipt, toolReceipts };
126
+ }
52
127
  //# sourceMappingURL=crewai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crewai.js","sourceRoot":"","sources":["../../../src/adapters/crewai.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAyBrD;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAA4B;IACjE,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAA;IAEvC,MAAM,YAAY,GAAG,CAAC,MAAwB,EAAqB,EAAE;QACnE,MAAM,MAAM,GAAqB;YAC/B,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YACxC,aAAa,EAAE,cAAc;YAC7B,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;SACtE,CAAA;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAC5C,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;IAClF,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,KAAK,EAC5B,QAAgB,EAChB,MAA+B,EAC/B,OAAyB,EACzB,aAAsB,EACtB,EAAE;QACF,MAAM,MAAM,GAAqB;YAC/B,IAAI,EAAE,eAAe,QAAQ,EAAE;YAC/B,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,QAAQ,QAAQ,EAAE;YACjC,QAAQ,EAAE,MAAM;YAChB,aAAa;SACd,CAAA;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC,CAAA;IAED,OAAO;QACL,YAAY;QACZ,gBAAgB;QAChB,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE;QACrC,IAAI;KACL,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"crewai.js","sourceRoot":"","sources":["../../../src/adapters/crewai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Cedar Policy Format Bridge for IBAC
3
+ *
4
+ * Converts between Cedar-style policy strings and IBAC tuples,
5
+ * and between APS delegations and Cedar policy format.
6
+ * No external dependencies.
7
+ */
8
+ import type { Delegation } from '../types/passport.js';
9
+ import type { IBACTuple } from './ibac.js';
10
+ /**
11
+ * Parse a Cedar-style policy string into IBAC tuples.
12
+ *
13
+ * Supported format:
14
+ * permit(principal == "agent:agent-123", action == "tool:query_db", resource == "table:patients");
15
+ * permit(principal == "agent:agent-123", action == "tool:read", resource == "file:report.pdf")
16
+ * when { max_rows < 100 };
17
+ */
18
+ export declare function cedarPolicyToTuples(cedarPolicy: string): IBACTuple[];
19
+ /**
20
+ * Generate a Cedar-style policy string from an APS delegation.
21
+ * Each scope in the delegation becomes a separate permit statement.
22
+ */
23
+ export declare function delegationToCedarPolicy(delegation: Delegation): string;
24
+ //# sourceMappingURL=ibac-cedar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ibac-cedar.d.ts","sourceRoot":"","sources":["../../../src/adapters/ibac-cedar.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE1C;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,CAqCpE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAuBtE"}
@@ -0,0 +1,76 @@
1
+ // Copyright 2024-2026 Tymofii Pidlisnyi. Apache-2.0 license. See LICENSE.
2
+ /**
3
+ * Cedar Policy Format Bridge for IBAC
4
+ *
5
+ * Converts between Cedar-style policy strings and IBAC tuples,
6
+ * and between APS delegations and Cedar policy format.
7
+ * No external dependencies.
8
+ */
9
+ /**
10
+ * Parse a Cedar-style policy string into IBAC tuples.
11
+ *
12
+ * Supported format:
13
+ * permit(principal == "agent:agent-123", action == "tool:query_db", resource == "table:patients");
14
+ * permit(principal == "agent:agent-123", action == "tool:read", resource == "file:report.pdf")
15
+ * when { max_rows < 100 };
16
+ */
17
+ export function cedarPolicyToTuples(cedarPolicy) {
18
+ const tuples = [];
19
+ const lines = cedarPolicy.split(';').map(l => l.trim()).filter(Boolean);
20
+ for (const line of lines) {
21
+ const match = line.match(/permit\s*\(\s*principal\s*==\s*"([^"]+)"\s*,\s*action\s*==\s*"([^"]+)"\s*,\s*resource\s*==\s*"([^"]+)"\s*\)/);
22
+ if (!match)
23
+ continue;
24
+ const tuple = {
25
+ principal: match[1],
26
+ action: match[2],
27
+ resource: match[3],
28
+ };
29
+ // Parse optional "when { ... }" constraints
30
+ const whenMatch = line.match(/when\s*\{([^}]+)\}/);
31
+ if (whenMatch) {
32
+ const constraints = {};
33
+ const pairs = whenMatch[1].split(',').map(s => s.trim()).filter(Boolean);
34
+ for (const pair of pairs) {
35
+ const kv = pair.match(/(\w+)\s*(<|>|<=|>=|==)\s*(\S+)/);
36
+ if (kv) {
37
+ const val = isNaN(Number(kv[3])) ? kv[3].replace(/"/g, '') : Number(kv[3]);
38
+ constraints[kv[1]] = val;
39
+ }
40
+ }
41
+ if (Object.keys(constraints).length > 0) {
42
+ tuple.constraints = constraints;
43
+ }
44
+ }
45
+ tuples.push(tuple);
46
+ }
47
+ return tuples;
48
+ }
49
+ /**
50
+ * Generate a Cedar-style policy string from an APS delegation.
51
+ * Each scope in the delegation becomes a separate permit statement.
52
+ */
53
+ export function delegationToCedarPolicy(delegation) {
54
+ const principal = `agent:${delegation.delegatedTo}`;
55
+ const statements = delegation.scope.map(scope => {
56
+ // Parse scope format: "prefix:verb:resource" or "prefix:verb"
57
+ const parts = scope.split(':');
58
+ let action;
59
+ let resource;
60
+ if (parts.length >= 3) {
61
+ action = `tool:${parts[1]}`;
62
+ resource = parts.slice(2).join(':');
63
+ }
64
+ else if (parts.length === 2) {
65
+ action = `tool:${parts[1]}`;
66
+ resource = `${parts[0]}:*`;
67
+ }
68
+ else {
69
+ action = `tool:${scope}`;
70
+ resource = '*';
71
+ }
72
+ return `permit(\n principal == "${principal}",\n action == "${action}",\n resource == "${resource}"\n)`;
73
+ });
74
+ return statements.join(';\n\n') + ';';
75
+ }
76
+ //# sourceMappingURL=ibac-cedar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ibac-cedar.js","sourceRoot":"","sources":["../../../src/adapters/ibac-cedar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * IBAC Adapter — Intent-Based Access Control Bridge
3
+ *
4
+ * Bridges Ken Huang's IBAC framework (CSA MAESTRO, OWASP AIVSS, ITU ANS)
5
+ * into APS enforcement. IBAC defines the intent. APS proves it was enforced.
6
+ *
7
+ * Pipeline: Intent → Scope mapping → Delegation check → Signed receipt
8
+ */
9
+ import type { Delegation, ActionReceipt, SignedPassport } from '../types/passport.js';
10
+ export interface IBACIntent {
11
+ task: string;
12
+ subject: {
13
+ id: string;
14
+ role?: string;
15
+ };
16
+ actions: IBACAction[];
17
+ constraints?: Record<string, unknown>;
18
+ timestamp: string;
19
+ }
20
+ export interface IBACAction {
21
+ verb: string;
22
+ resource: string;
23
+ constraints?: Record<string, unknown>;
24
+ }
25
+ export interface IBACTuple {
26
+ principal: string;
27
+ action: string;
28
+ resource: string;
29
+ constraints?: Record<string, unknown>;
30
+ }
31
+ export interface IBACEvaluationResult {
32
+ intent: IBACIntent;
33
+ delegation: Delegation;
34
+ tupleResults: Array<{
35
+ tuple: IBACTuple;
36
+ authorized: boolean;
37
+ scope: string;
38
+ reason: string;
39
+ }>;
40
+ receipt: ActionReceipt;
41
+ }
42
+ /**
43
+ * Convert IBAC intent to APS delegation scope strings.
44
+ * Maps verb+resource to hierarchical scope: `prefix:resource`
45
+ */
46
+ export declare function ibacIntentToScope(intent: IBACIntent): string[];
47
+ /**
48
+ * Convert IBAC tuples to an APS delegation.
49
+ * Each tuple becomes a scope entry in the delegation.
50
+ */
51
+ export declare function ibacTuplesToDelegation(tuples: IBACTuple[], principalKey: string, agentKey: string, privateKey: string, opts?: {
52
+ expiresInHours?: number;
53
+ spendLimit?: number;
54
+ }): Delegation;
55
+ /**
56
+ * Evaluate IBAC tuples against an existing APS delegation.
57
+ * Returns per-tuple authorized/denied with reason.
58
+ */
59
+ export declare function evaluateIBACTuples(tuples: IBACTuple[], delegation: Delegation): {
60
+ tupleResults: Array<{
61
+ tuple: IBACTuple;
62
+ authorized: boolean;
63
+ scope: string;
64
+ reason: string;
65
+ }>;
66
+ };
67
+ /**
68
+ * Full pipeline: intent → scope mapping → evaluation → signed receipt.
69
+ * IBAC defines the intent. APS proves it was enforced.
70
+ */
71
+ export declare function governIBACIntent(intent: IBACIntent, config: {
72
+ passport: SignedPassport;
73
+ delegation: Delegation;
74
+ privateKey: string;
75
+ onReceipt?: (r: ActionReceipt) => void;
76
+ }): IBACEvaluationResult;
77
+ //# sourceMappingURL=ibac.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ibac.d.ts","sourceRoot":"","sources":["../../../src/adapters/ibac.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAIrF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACtC,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,UAAU,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,EAAE,KAAK,CAAC;QAClB,KAAK,EAAE,SAAS,CAAA;QAChB,UAAU,EAAE,OAAO,CAAA;QACnB,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;KACf,CAAC,CAAA;IACF,OAAO,EAAE,aAAa,CAAA;CACvB;AAcD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAM9D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EAAE,EACnB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD,UAAU,CAeZ;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EAAE,EACnB,UAAU,EAAE,UAAU,GACrB;IAAE,YAAY,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAoBnG;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE;IACN,QAAQ,EAAE,cAAc,CAAA;IACxB,UAAU,EAAE,UAAU,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAA;CACvC,GACA,oBAAoB,CA2CtB"}
@@ -0,0 +1,117 @@
1
+ // Copyright 2024-2026 Tymofii Pidlisnyi. Apache-2.0 license. See LICENSE.
2
+ /**
3
+ * IBAC Adapter — Intent-Based Access Control Bridge
4
+ *
5
+ * Bridges Ken Huang's IBAC framework (CSA MAESTRO, OWASP AIVSS, ITU ANS)
6
+ * into APS enforcement. IBAC defines the intent. APS proves it was enforced.
7
+ *
8
+ * Pipeline: Intent → Scope mapping → Delegation check → Signed receipt
9
+ */
10
+ import { createDelegation, scopeAuthorizes } from '../core/delegation.js';
11
+ import { sign } from '../crypto/keys.js';
12
+ import { canonicalize } from '../core/canonical.js';
13
+ // ── Verb → scope prefix mapping ──
14
+ const VERB_PREFIX = {
15
+ read: 'data:read',
16
+ query: 'data:read',
17
+ write: 'data:write',
18
+ send: 'comms:send',
19
+ delete: 'admin:delete',
20
+ };
21
+ // ── Core functions ──
22
+ /**
23
+ * Convert IBAC intent to APS delegation scope strings.
24
+ * Maps verb+resource to hierarchical scope: `prefix:resource`
25
+ */
26
+ export function ibacIntentToScope(intent) {
27
+ if (!intent.actions || intent.actions.length === 0)
28
+ return [];
29
+ return intent.actions.map(action => {
30
+ const prefix = VERB_PREFIX[action.verb] || `data:${action.verb}`;
31
+ return `${prefix}:${action.resource}`;
32
+ });
33
+ }
34
+ /**
35
+ * Convert IBAC tuples to an APS delegation.
36
+ * Each tuple becomes a scope entry in the delegation.
37
+ */
38
+ export function ibacTuplesToDelegation(tuples, principalKey, agentKey, privateKey, opts) {
39
+ const scope = tuples.map(t => {
40
+ const verb = t.action.replace(/^tool:/, '');
41
+ const prefix = VERB_PREFIX[verb] || `data:${verb}`;
42
+ return `${prefix}:${t.resource}`;
43
+ });
44
+ return createDelegation({
45
+ delegatedTo: agentKey,
46
+ delegatedBy: principalKey,
47
+ scope,
48
+ privateKey,
49
+ spendLimit: opts?.spendLimit,
50
+ expiresInHours: opts?.expiresInHours,
51
+ });
52
+ }
53
+ /**
54
+ * Evaluate IBAC tuples against an existing APS delegation.
55
+ * Returns per-tuple authorized/denied with reason.
56
+ */
57
+ export function evaluateIBACTuples(tuples, delegation) {
58
+ const tupleResults = tuples.map(tuple => {
59
+ const verb = tuple.action.replace(/^tool:/, '');
60
+ const prefix = VERB_PREFIX[verb] || `data:${verb}`;
61
+ const scope = `${prefix}:${tuple.resource}`;
62
+ // Check expiry
63
+ if (new Date(delegation.expiresAt) <= new Date()) {
64
+ return { tuple, authorized: false, scope, reason: 'Delegation expired' };
65
+ }
66
+ const authorized = scopeAuthorizes(delegation.scope, scope);
67
+ const reason = authorized
68
+ ? `Scope "${scope}" authorized by delegation`
69
+ : `Scope "${scope}" not covered by delegation [${delegation.scope.join(', ')}]`;
70
+ return { tuple, authorized, scope, reason };
71
+ });
72
+ return { tupleResults };
73
+ }
74
+ /**
75
+ * Full pipeline: intent → scope mapping → evaluation → signed receipt.
76
+ * IBAC defines the intent. APS proves it was enforced.
77
+ */
78
+ export function governIBACIntent(intent, config) {
79
+ // Convert intent to tuples
80
+ const tuples = intent.actions.map(action => ({
81
+ principal: `agent:${intent.subject.id}`,
82
+ action: `tool:${action.verb}`,
83
+ resource: action.resource,
84
+ constraints: action.constraints,
85
+ }));
86
+ // Evaluate
87
+ const { tupleResults } = evaluateIBACTuples(tuples, config.delegation);
88
+ const allAuthorized = tupleResults.every(r => r.authorized);
89
+ const scopesUsed = tupleResults.map(r => r.scope).join(', ');
90
+ // Build signed receipt
91
+ const receiptData = {
92
+ receiptId: `rcpt_ibac_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 6)}`,
93
+ version: '1.1',
94
+ timestamp: new Date().toISOString(),
95
+ agentId: config.passport.passport.agentId,
96
+ delegationId: config.delegation.delegationId,
97
+ action: {
98
+ type: 'ibac_evaluation',
99
+ target: intent.task,
100
+ scopeUsed: scopesUsed,
101
+ },
102
+ result: {
103
+ status: allAuthorized ? 'success' : 'failure',
104
+ summary: allAuthorized
105
+ ? `All ${tupleResults.length} IBAC tuples authorized`
106
+ : `${tupleResults.filter(r => !r.authorized).length} of ${tupleResults.length} tuples denied`,
107
+ },
108
+ delegationChain: [],
109
+ };
110
+ const canonical = canonicalize(receiptData);
111
+ const signature = sign(canonical, config.privateKey);
112
+ const receipt = { ...receiptData, signature };
113
+ if (config.onReceipt)
114
+ config.onReceipt(receipt);
115
+ return { intent, delegation: config.delegation, tupleResults, receipt };
116
+ }
117
+ //# sourceMappingURL=ibac.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ibac.js","sourceRoot":"","sources":["../../../src/adapters/ibac.ts"],"names":[],"mappings":"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"}