@arvo-tools/agentic 1.1.0 → 1.2.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/dist/Agent/agentLoop.d.ts +4 -0
- package/dist/Agent/agentLoop.d.ts.map +1 -1
- package/dist/Agent/agentLoop.js +148 -56
- package/dist/Agent/agentLoop.js.map +1 -1
- package/dist/Agent/index.d.ts +39 -41
- package/dist/Agent/index.d.ts.map +1 -1
- package/dist/Agent/index.js +143 -93
- package/dist/Agent/index.js.map +1 -1
- package/dist/Agent/stream/schema.d.ts +156 -0
- package/dist/Agent/stream/schema.d.ts.map +1 -1
- package/dist/Agent/stream/schema.js +34 -0
- package/dist/Agent/stream/schema.js.map +1 -1
- package/dist/Agent/types.d.ts +128 -16
- package/dist/Agent/types.d.ts.map +1 -1
- package/dist/SimplePermissionManager/contract.d.ts +35 -0
- package/dist/SimplePermissionManager/contract.d.ts.map +1 -0
- package/dist/SimplePermissionManager/contract.js +34 -0
- package/dist/SimplePermissionManager/contract.js.map +1 -0
- package/dist/SimplePermissionManager/index.d.ts +144 -0
- package/dist/SimplePermissionManager/index.d.ts.map +1 -0
- package/dist/SimplePermissionManager/index.js +256 -0
- package/dist/SimplePermissionManager/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces.permission.manager.d.ts +191 -0
- package/dist/interfaces.permission.manager.d.ts.map +1 -0
- package/dist/interfaces.permission.manager.js +3 -0
- package/dist/interfaces.permission.manager.js.map +1 -0
- package/package.json +1 -2
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __values = (this && this.__values) || function(o) {
|
|
39
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
40
|
+
if (m) return m.call(o);
|
|
41
|
+
if (o && typeof o.length === "number") return {
|
|
42
|
+
next: function () {
|
|
43
|
+
if (o && i >= o.length) o = void 0;
|
|
44
|
+
return { value: o && o[i++], done: !o };
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.SimplePermissionManager = void 0;
|
|
51
|
+
var openinference_semantic_conventions_1 = require("@arizeai/openinference-semantic-conventions");
|
|
52
|
+
var arvo_core_1 = require("arvo-core");
|
|
53
|
+
var contract_1 = require("./contract");
|
|
54
|
+
/**
|
|
55
|
+
* Simple in-memory permission manager for development and testing.
|
|
56
|
+
*
|
|
57
|
+
* Stores permissions in a Map keyed by `${source.name}:${source.subject}`,
|
|
58
|
+
* providing workflow-scoped authorization that persists only for the lifetime
|
|
59
|
+
* of the process.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* const agent = createArvoAgent({
|
|
64
|
+
* permissionManager: new SimplePermissionManager(),
|
|
65
|
+
* handler: {
|
|
66
|
+
* '1.0.0': {
|
|
67
|
+
* permissionPolicy: async ({ services }) => [
|
|
68
|
+
* services.deleteUser.name
|
|
69
|
+
* ],
|
|
70
|
+
* // ... other config
|
|
71
|
+
* }
|
|
72
|
+
* }
|
|
73
|
+
* });
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
var SimplePermissionManager = /** @class */ (function () {
|
|
77
|
+
function SimplePermissionManager(config) {
|
|
78
|
+
this.contract = contract_1.simplePermissionContract.version('1.0.0');
|
|
79
|
+
this.permissions = new Map();
|
|
80
|
+
this.domains = config.domains;
|
|
81
|
+
}
|
|
82
|
+
SimplePermissionManager.prototype.getKey = function (source) {
|
|
83
|
+
return "".concat(source.name, ":").concat(source.subject);
|
|
84
|
+
};
|
|
85
|
+
SimplePermissionManager.prototype.get = function (source,
|
|
86
|
+
// biome-ignore lint/suspicious/noExplicitAny: Needs to be general
|
|
87
|
+
tools, config) {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
89
|
+
var _a;
|
|
90
|
+
var _this = this;
|
|
91
|
+
return __generator(this, function (_b) {
|
|
92
|
+
switch (_b.label) {
|
|
93
|
+
case 0: return [4 /*yield*/, arvo_core_1.ArvoOpenTelemetry.getInstance().startActiveSpan({
|
|
94
|
+
name: 'Permission.Check',
|
|
95
|
+
disableSpanManagement: true,
|
|
96
|
+
context: {
|
|
97
|
+
inheritFrom: 'TRACE_HEADERS',
|
|
98
|
+
traceHeaders: config.otelInfo.headers,
|
|
99
|
+
},
|
|
100
|
+
spanOptions: {
|
|
101
|
+
attributes: (_a = {},
|
|
102
|
+
_a[openinference_semantic_conventions_1.SemanticConventions.OPENINFERENCE_SPAN_KIND] = openinference_semantic_conventions_1.OpenInferenceSpanKind.GUARDRAIL,
|
|
103
|
+
_a),
|
|
104
|
+
},
|
|
105
|
+
fn: function (span) { return __awaiter(_this, void 0, void 0, function () {
|
|
106
|
+
var key, granted_1, result;
|
|
107
|
+
var _a;
|
|
108
|
+
return __generator(this, function (_b) {
|
|
109
|
+
try {
|
|
110
|
+
key = this.getKey(source);
|
|
111
|
+
granted_1 = (_a = this.permissions.get(key)) !== null && _a !== void 0 ? _a : {};
|
|
112
|
+
result = Object.fromEntries(tools.map(function (tool) { var _a; return [tool.name, (_a = granted_1[tool.name]) !== null && _a !== void 0 ? _a : false]; }));
|
|
113
|
+
span.setAttribute('tool.permission.map', JSON.stringify(result));
|
|
114
|
+
return [2 /*return*/, result];
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
(0, arvo_core_1.exceptionToSpan)(error, span);
|
|
118
|
+
throw error;
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
span.end();
|
|
122
|
+
}
|
|
123
|
+
return [2 /*return*/];
|
|
124
|
+
});
|
|
125
|
+
}); },
|
|
126
|
+
})];
|
|
127
|
+
case 1: return [2 /*return*/, _b.sent()];
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
SimplePermissionManager.prototype.set = function (source, event, config) {
|
|
133
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
134
|
+
var _a;
|
|
135
|
+
var _this = this;
|
|
136
|
+
return __generator(this, function (_b) {
|
|
137
|
+
switch (_b.label) {
|
|
138
|
+
case 0: return [4 /*yield*/, arvo_core_1.ArvoOpenTelemetry.getInstance().startActiveSpan({
|
|
139
|
+
name: 'Permission.Update',
|
|
140
|
+
disableSpanManagement: true,
|
|
141
|
+
context: {
|
|
142
|
+
inheritFrom: 'TRACE_HEADERS',
|
|
143
|
+
traceHeaders: config.otelInfo.headers,
|
|
144
|
+
},
|
|
145
|
+
spanOptions: {
|
|
146
|
+
attributes: (_a = {},
|
|
147
|
+
_a[openinference_semantic_conventions_1.SemanticConventions.OPENINFERENCE_SPAN_KIND] = openinference_semantic_conventions_1.OpenInferenceSpanKind.GUARDRAIL,
|
|
148
|
+
_a),
|
|
149
|
+
},
|
|
150
|
+
fn: function (span) { return __awaiter(_this, void 0, void 0, function () {
|
|
151
|
+
var key, granted, _a, _b, toolName, _c, _d, toolName;
|
|
152
|
+
var e_1, _e, e_2, _f;
|
|
153
|
+
var _g;
|
|
154
|
+
return __generator(this, function (_h) {
|
|
155
|
+
try {
|
|
156
|
+
key = this.getKey(source);
|
|
157
|
+
granted = (_g = this.permissions.get(key)) !== null && _g !== void 0 ? _g : {};
|
|
158
|
+
try {
|
|
159
|
+
for (_a = __values(event.data.granted), _b = _a.next(); !_b.done; _b = _a.next()) {
|
|
160
|
+
toolName = _b.value;
|
|
161
|
+
granted[toolName] = true;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
165
|
+
finally {
|
|
166
|
+
try {
|
|
167
|
+
if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
|
|
168
|
+
}
|
|
169
|
+
finally { if (e_1) throw e_1.error; }
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
for (_c = __values(event.data.denied), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
173
|
+
toolName = _d.value;
|
|
174
|
+
granted[toolName] = false;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
178
|
+
finally {
|
|
179
|
+
try {
|
|
180
|
+
if (_d && !_d.done && (_f = _c.return)) _f.call(_c);
|
|
181
|
+
}
|
|
182
|
+
finally { if (e_2) throw e_2.error; }
|
|
183
|
+
}
|
|
184
|
+
this.permissions.set(key, granted);
|
|
185
|
+
span.setAttribute('tool.permission.map', JSON.stringify(granted));
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
(0, arvo_core_1.exceptionToSpan)(error, span);
|
|
189
|
+
throw error;
|
|
190
|
+
}
|
|
191
|
+
finally {
|
|
192
|
+
span.end();
|
|
193
|
+
}
|
|
194
|
+
return [2 /*return*/];
|
|
195
|
+
});
|
|
196
|
+
}); },
|
|
197
|
+
})];
|
|
198
|
+
case 1: return [2 /*return*/, _b.sent()];
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
SimplePermissionManager.prototype.requestBuilder = function (source,
|
|
204
|
+
// biome-ignore lint/suspicious/noExplicitAny: Needs to be general
|
|
205
|
+
tools, config) {
|
|
206
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
207
|
+
var _a;
|
|
208
|
+
var _this = this;
|
|
209
|
+
return __generator(this, function (_b) {
|
|
210
|
+
switch (_b.label) {
|
|
211
|
+
case 0: return [4 /*yield*/, arvo_core_1.ArvoOpenTelemetry.getInstance().startActiveSpan({
|
|
212
|
+
name: 'Permission.Request',
|
|
213
|
+
disableSpanManagement: true,
|
|
214
|
+
context: {
|
|
215
|
+
inheritFrom: 'TRACE_HEADERS',
|
|
216
|
+
traceHeaders: config.otelInfo.headers,
|
|
217
|
+
},
|
|
218
|
+
spanOptions: {
|
|
219
|
+
attributes: (_a = {},
|
|
220
|
+
_a[openinference_semantic_conventions_1.SemanticConventions.OPENINFERENCE_SPAN_KIND] = openinference_semantic_conventions_1.OpenInferenceSpanKind.GUARDRAIL,
|
|
221
|
+
_a),
|
|
222
|
+
},
|
|
223
|
+
fn: function (span) { return __awaiter(_this, void 0, void 0, function () {
|
|
224
|
+
var request;
|
|
225
|
+
return __generator(this, function (_a) {
|
|
226
|
+
try {
|
|
227
|
+
request = {
|
|
228
|
+
agentId: source.name,
|
|
229
|
+
reason: "Agent ".concat(source.name, " is requesting permission to execute following tools"),
|
|
230
|
+
requestedTools: tools.map(function (t) { return t.name; }),
|
|
231
|
+
};
|
|
232
|
+
span.setAttribute('tool.permission.request', JSON.stringify(request));
|
|
233
|
+
return [2 /*return*/, request];
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
(0, arvo_core_1.exceptionToSpan)(error, span);
|
|
237
|
+
throw error;
|
|
238
|
+
}
|
|
239
|
+
finally {
|
|
240
|
+
span.end();
|
|
241
|
+
}
|
|
242
|
+
return [2 /*return*/];
|
|
243
|
+
});
|
|
244
|
+
}); },
|
|
245
|
+
})];
|
|
246
|
+
case 1: return [2 /*return*/, _b.sent()];
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
};
|
|
251
|
+
SimplePermissionManager.CONTRACT = contract_1.simplePermissionContract;
|
|
252
|
+
SimplePermissionManager.VERSIONED_CONTRACT = contract_1.simplePermissionContract.version('1.0.0');
|
|
253
|
+
return SimplePermissionManager;
|
|
254
|
+
}());
|
|
255
|
+
exports.SimplePermissionManager = SimplePermissionManager;
|
|
256
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/SimplePermissionManager/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -13,5 +13,6 @@ export { openaiLLMIntegration } from './Integrations/openai';
|
|
|
13
13
|
export { DEFAULT_TOOL_LIMIT_PROMPT } from './Integrations/prompts';
|
|
14
14
|
export type { AgentLLMIntegration, AgentLLMIntegrationOutput, AgentLLMIntegrationParam, } from './Integrations/types';
|
|
15
15
|
export type { IMCPClient } from './interfaces.mcp';
|
|
16
|
+
export { SimplePermissionManager } from './SimplePermissionManager';
|
|
16
17
|
export type { NonEmptyArray, OtelInfoType, PromiseAble } from './types';
|
|
17
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,EACzB,kCAAkC,EAClC,kCAAkC,EAClC,+BAA+B,EAC/B,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,YAAY,EACV,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,EACzB,kCAAkC,EAClC,kCAAkC,EAClC,+BAA+B,EAC/B,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,YAAY,EACV,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_TOOL_LIMIT_PROMPT = exports.openaiLLMIntegration = exports.MCPClient = exports.anthropicLLMIntegration = exports.createAgentTool = exports.tryParseJson = exports.setOpenInferenceUsageOutputAttr = exports.setOpenInferenceToolCallOutputAttr = exports.setOpenInferenceResponseOutputAttr = exports.setOpenInferenceInputAttr = exports.AgentStreamEventSchema = exports.AgentToolResultContentSchema = exports.AgentToolCallContentSchema = exports.AgentTextContentSchema = exports.AgentMessageSchema = exports.AgentMessageContentSchema = exports.AgentMediaContentSchema = exports.AgentDefaults = exports.createArvoAgent = void 0;
|
|
3
|
+
exports.SimplePermissionManager = exports.DEFAULT_TOOL_LIMIT_PROMPT = exports.openaiLLMIntegration = exports.MCPClient = exports.anthropicLLMIntegration = exports.createAgentTool = exports.tryParseJson = exports.setOpenInferenceUsageOutputAttr = exports.setOpenInferenceToolCallOutputAttr = exports.setOpenInferenceResponseOutputAttr = exports.setOpenInferenceInputAttr = exports.AgentStreamEventSchema = exports.AgentToolResultContentSchema = exports.AgentToolCallContentSchema = exports.AgentTextContentSchema = exports.AgentMessageSchema = exports.AgentMessageContentSchema = exports.AgentMediaContentSchema = exports.AgentDefaults = exports.createArvoAgent = void 0;
|
|
4
4
|
var Agent_1 = require("./Agent");
|
|
5
5
|
Object.defineProperty(exports, "createArvoAgent", { enumerable: true, get: function () { return Agent_1.createArvoAgent; } });
|
|
6
6
|
var AgentDefaults_1 = require("./Agent/AgentDefaults");
|
|
@@ -30,4 +30,6 @@ var openai_1 = require("./Integrations/openai");
|
|
|
30
30
|
Object.defineProperty(exports, "openaiLLMIntegration", { enumerable: true, get: function () { return openai_1.openaiLLMIntegration; } });
|
|
31
31
|
var prompts_1 = require("./Integrations/prompts");
|
|
32
32
|
Object.defineProperty(exports, "DEFAULT_TOOL_LIMIT_PROMPT", { enumerable: true, get: function () { return prompts_1.DEFAULT_TOOL_LIMIT_PROMPT; } });
|
|
33
|
+
var SimplePermissionManager_1 = require("./SimplePermissionManager");
|
|
34
|
+
Object.defineProperty(exports, "SimplePermissionManager", { enumerable: true, get: function () { return SimplePermissionManager_1.SimplePermissionManager; } });
|
|
33
35
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iCAAsD;AAAjC,wGAAA,eAAe,OAAA;AACpC,uDAAsD;AAA7C,8GAAA,aAAa,OAAA;AACtB,yCAOwB;AANtB,iHAAA,uBAAuB,OAAA;AACvB,mHAAA,yBAAyB,OAAA;AACzB,4GAAA,kBAAkB,OAAA;AAClB,gHAAA,sBAAsB,OAAA;AACtB,oHAAA,0BAA0B,OAAA;AAC1B,sHAAA,4BAA4B,OAAA;AAE9B,gDAA+D;AAAtD,gHAAA,sBAAsB,OAAA;AAkB/B,uCAMuB;AALrB,kHAAA,yBAAyB,OAAA;AACzB,2HAAA,kCAAkC,OAAA;AAClC,2HAAA,kCAAkC,OAAA;AAClC,wHAAA,+BAA+B,OAAA;AAC/B,qGAAA,YAAY,OAAA;AAEd,yCAA8C;AAArC,4GAAA,eAAe,OAAA;AAExB,sDAAmE;AAA1D,oHAAA,uBAAuB,OAAA;AAChC,sDAAqD;AAA5C,sGAAA,SAAS,OAAA;AAClB,gDAA6D;AAApD,8GAAA,oBAAoB,OAAA;AAC7B,kDAAmE;AAA1D,oHAAA,yBAAyB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iCAAsD;AAAjC,wGAAA,eAAe,OAAA;AACpC,uDAAsD;AAA7C,8GAAA,aAAa,OAAA;AACtB,yCAOwB;AANtB,iHAAA,uBAAuB,OAAA;AACvB,mHAAA,yBAAyB,OAAA;AACzB,4GAAA,kBAAkB,OAAA;AAClB,gHAAA,sBAAsB,OAAA;AACtB,oHAAA,0BAA0B,OAAA;AAC1B,sHAAA,4BAA4B,OAAA;AAE9B,gDAA+D;AAAtD,gHAAA,sBAAsB,OAAA;AAkB/B,uCAMuB;AALrB,kHAAA,yBAAyB,OAAA;AACzB,2HAAA,kCAAkC,OAAA;AAClC,2HAAA,kCAAkC,OAAA;AAClC,wHAAA,+BAA+B,OAAA;AAC/B,qGAAA,YAAY,OAAA;AAEd,yCAA8C;AAArC,4GAAA,eAAe,OAAA;AAExB,sDAAmE;AAA1D,oHAAA,uBAAuB,OAAA;AAChC,sDAAqD;AAA5C,sGAAA,SAAS,OAAA;AAClB,gDAA6D;AAApD,8GAAA,oBAAoB,OAAA;AAC7B,kDAAmE;AAA1D,oHAAA,yBAAyB,OAAA;AAOlC,qEAAoE;AAA3D,kIAAA,uBAAuB,OAAA"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import type { InferVersionedArvoContract, SimpleArvoContract, VersionedArvoContract } from 'arvo-core';
|
|
2
|
+
import type { SimpleArvoContractEmitType } from 'arvo-core/dist/ArvoContract/SimpleArvoContract/types';
|
|
3
|
+
import type { AgentToolDefinition } from './Agent/types';
|
|
4
|
+
import type { AgentInternalTool } from './AgentTool/types';
|
|
5
|
+
import type { NonEmptyArray, OtelInfoType, PromiseAble } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Contextual information identifying the agent and workflow requesting permission.
|
|
8
|
+
*
|
|
9
|
+
* Enables scoped authorization decisions where the same tool might be permitted
|
|
10
|
+
* for one agent/workflow/tenant combination but denied for another.
|
|
11
|
+
*/
|
|
12
|
+
export type PermissionManagerContext = {
|
|
13
|
+
/**
|
|
14
|
+
* The agent's identifier from the ArvoResumable handler source.
|
|
15
|
+
* Used to scope permissions by agent type (e.g., 'support.agent', 'billing.agent').
|
|
16
|
+
*/
|
|
17
|
+
name: string;
|
|
18
|
+
/**
|
|
19
|
+
* The workflow execution identifier from the originating event's subject field.
|
|
20
|
+
* Enables workflow-specific permissions where authorization applies only to
|
|
21
|
+
* a particular execution context rather than globally.
|
|
22
|
+
*/
|
|
23
|
+
subject: string;
|
|
24
|
+
/**
|
|
25
|
+
* Access control context inherited from the triggering event.
|
|
26
|
+
* Typically contains tenant, user, or role information informing permission
|
|
27
|
+
* decisions (e.g., 'tenant:acme:admin', 'user:123:readonly').
|
|
28
|
+
*/
|
|
29
|
+
accesscontrol: string | null;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Deterministic authorization layer for agent tool execution control.
|
|
33
|
+
*
|
|
34
|
+
* Provides policy-driven tool access control operating independently of LLM reasoning,
|
|
35
|
+
* ensuring security-critical decisions cannot be bypassed through prompt injection,
|
|
36
|
+
* jailbreaking, or other adversarial manipulation of the language model.
|
|
37
|
+
*
|
|
38
|
+
* @remarks
|
|
39
|
+
* **Authorization Flow:**
|
|
40
|
+
*
|
|
41
|
+
* When an agent requests tools requiring permission:
|
|
42
|
+
* 1. Agent calls `get()` to check current authorizations
|
|
43
|
+
* 2. Blocked tools trigger `requestBuilder()` to create permission request payload
|
|
44
|
+
* 3. Agent emits permission request event and suspends execution
|
|
45
|
+
* 4. External authorizer (human, policy engine, IAM) processes request
|
|
46
|
+
* 5. Authorization response arrives, agent calls `set()` to update permissions
|
|
47
|
+
* 6. Agent resumes, LLM retries tool calls with updated authorizations
|
|
48
|
+
*
|
|
49
|
+
* **Implementation Considerations:**
|
|
50
|
+
*
|
|
51
|
+
* Permission managers should be fast on the read path (hot path during tool execution)
|
|
52
|
+
* and can be slower on the write path (triggered only when authorization changes).
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const permissionContract = createSimpleArvoContract({
|
|
57
|
+
* uri: '#/permissions/tool-access',
|
|
58
|
+
* type: 'permission.tool.access',
|
|
59
|
+
* domain: 'human.interaction',
|
|
60
|
+
* versions: {
|
|
61
|
+
* '1.0.0': {
|
|
62
|
+
* accepts: z.object({
|
|
63
|
+
* agentId: z.string(),
|
|
64
|
+
* requestedTools: z.array(z.string()),
|
|
65
|
+
* reason: z.string(),
|
|
66
|
+
* workflowContext: z.string(),
|
|
67
|
+
* }),
|
|
68
|
+
* emits: z.object({
|
|
69
|
+
* granted: z.array(z.string()),
|
|
70
|
+
* denied: z.array(z.string()),
|
|
71
|
+
* expiresAt: z.string().datetime().optional(),
|
|
72
|
+
* }),
|
|
73
|
+
* },
|
|
74
|
+
* },
|
|
75
|
+
* });
|
|
76
|
+
*
|
|
77
|
+
* class ToolPermissionManager implements IPermissionManager<typeof permissionContract> {
|
|
78
|
+
* public readonly contract = permissionContract.version('1.0.0');
|
|
79
|
+
* // public readonly domains = ['human.interaction'];
|
|
80
|
+
* public readonly domains = [ArvoDomain.FROM_EVENT_CONTRACT];
|
|
81
|
+
* // Both domains are the same
|
|
82
|
+
*
|
|
83
|
+
* private permissions = new Map<string, Set<string>>();
|
|
84
|
+
*
|
|
85
|
+
* private getKey(source: PermissionManagerContext): string {
|
|
86
|
+
* return `${source.name}:${source.subject}`;
|
|
87
|
+
* }
|
|
88
|
+
*
|
|
89
|
+
* async get(source, tools) {
|
|
90
|
+
* const key = this.getKey(source);
|
|
91
|
+
* const granted = this.permissions.get(key) ?? new Set();
|
|
92
|
+
* return Object.fromEntries(
|
|
93
|
+
* tools.map(tool => [tool.name, granted.has(tool.name)])
|
|
94
|
+
* );
|
|
95
|
+
* }
|
|
96
|
+
*
|
|
97
|
+
* async set(source, event) {
|
|
98
|
+
* const key = this.getKey(source);
|
|
99
|
+
* const granted = this.permissions.get(key) ?? new Set();
|
|
100
|
+
* for (const tool of event.data.granted) {
|
|
101
|
+
* granted.add(tool);
|
|
102
|
+
* }
|
|
103
|
+
* this.permissions.set(key, granted);
|
|
104
|
+
* }
|
|
105
|
+
*
|
|
106
|
+
* async requestBuilder(source, tools) {
|
|
107
|
+
* return {
|
|
108
|
+
* agentId: source.name,
|
|
109
|
+
* requestedTools: tools.map(t => t.name),
|
|
110
|
+
* reason: `Agent requires permission: ${tools.map(t => t.name).join(', ')}`,
|
|
111
|
+
* workflowContext: source.subject,
|
|
112
|
+
* };
|
|
113
|
+
* }
|
|
114
|
+
* }
|
|
115
|
+
*
|
|
116
|
+
* const agent = createArvoAgent({
|
|
117
|
+
* permissionManager: new ToolPermissionManager(),
|
|
118
|
+
* handler: {
|
|
119
|
+
* '1.0.0': {
|
|
120
|
+
* permissionPolicy: async ({ services }) => [
|
|
121
|
+
* services.deleteUser.name,
|
|
122
|
+
* services.processRefund.name
|
|
123
|
+
* ],
|
|
124
|
+
* // ... context and output builders
|
|
125
|
+
* }
|
|
126
|
+
* }
|
|
127
|
+
* });
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
export interface IPermissionManager<T extends VersionedArvoContract<SimpleArvoContract<any, any, any>, any> = VersionedArvoContract<SimpleArvoContract<any, any, any>, any>> {
|
|
131
|
+
/**
|
|
132
|
+
* Versioned contract defining permission request/response event schemas.
|
|
133
|
+
*
|
|
134
|
+
* Follows standard Arvo contract patterns enabling versioning, validation,
|
|
135
|
+
* and routing like any service contract in the event fabric.
|
|
136
|
+
*/
|
|
137
|
+
contract: T;
|
|
138
|
+
/**
|
|
139
|
+
* Event delivery channel routing hints for permission requests.
|
|
140
|
+
*
|
|
141
|
+
* When specified, permission request events are routed to these domains
|
|
142
|
+
* (e.g., `['human.interaction']` for human approval workflows).
|
|
143
|
+
* `null` routes to the default system broker.
|
|
144
|
+
*/
|
|
145
|
+
domains: NonEmptyArray<string> | null;
|
|
146
|
+
/**
|
|
147
|
+
* Updates internal permission state with authorization response.
|
|
148
|
+
*
|
|
149
|
+
* Called when the agent receives a permission response event. Extract
|
|
150
|
+
* granted/denied permissions from the event and update internal storage
|
|
151
|
+
* scoped to the provided context.
|
|
152
|
+
*
|
|
153
|
+
* @param source - Context identifying the agent and workflow for scoped storage
|
|
154
|
+
* @param event - Authorization response matching contract's success emission schema
|
|
155
|
+
*/
|
|
156
|
+
set(source: PermissionManagerContext, event: InferVersionedArvoContract<T>['emits'][SimpleArvoContractEmitType<T['metadata']['rootType']>], config: {
|
|
157
|
+
otelInfo: OtelInfoType;
|
|
158
|
+
}): PromiseAble<void>;
|
|
159
|
+
/**
|
|
160
|
+
* Checks current authorization status for requested tools.
|
|
161
|
+
*
|
|
162
|
+
* Called in the hot path before tool execution. Should be optimized for
|
|
163
|
+
* performance for production.
|
|
164
|
+
*
|
|
165
|
+
* @param source - Context identifying the agent and workflow for permission lookup
|
|
166
|
+
* @param tools - Tool definitions to check (uses agent-oriented names from `tool.name`)
|
|
167
|
+
*
|
|
168
|
+
* @returns Map of tool names to authorization status where `true` permits execution
|
|
169
|
+
* and `false` blocks execution requiring authorization
|
|
170
|
+
*/
|
|
171
|
+
get(source: PermissionManagerContext, tools: AgentToolDefinition<VersionedArvoContract<any, any> | AgentInternalTool | null>[], config: {
|
|
172
|
+
otelInfo: OtelInfoType;
|
|
173
|
+
}): PromiseAble<Record<string, boolean>>;
|
|
174
|
+
/**
|
|
175
|
+
* Constructs permission request event payload for blocked tools.
|
|
176
|
+
*
|
|
177
|
+
* Called when tools fail authorization checks. Build a payload conforming to
|
|
178
|
+
* the contract's `accepts` schema, providing sufficient context for external
|
|
179
|
+
* authorizers (humans, policy engines, IAM services) to make informed decisions.
|
|
180
|
+
*
|
|
181
|
+
* @param source - Context identifying the agent and workflow for the request
|
|
182
|
+
* @param tools - Tool definitions requiring permission (failed `get()` check)
|
|
183
|
+
*
|
|
184
|
+
* @returns Event payload matching contract's accepts schema. Use agent-oriented
|
|
185
|
+
* tool names from `tools[i].name` for consistency with permission checks.
|
|
186
|
+
*/
|
|
187
|
+
requestBuilder(source: PermissionManagerContext, tools: AgentToolDefinition<VersionedArvoContract<any, any> | AgentInternalTool | null>[], config: {
|
|
188
|
+
otelInfo: OtelInfoType;
|
|
189
|
+
}): PromiseAble<InferVersionedArvoContract<T>['accepts']['data']>;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=interfaces.permission.manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.permission.manager.d.ts","sourceRoot":"","sources":["../src/interfaces.permission.manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sDAAsD,CAAC;AACvG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExE;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkGG;AACH,MAAM,WAAW,kBAAkB,CAEjC,CAAC,SAAS,qBAAqB,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,qBAAqB,CAE7F,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAEjC,GAAG,CACJ;IAED;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC;IAEZ;;;;;;OAMG;IACH,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAEtC;;;;;;;;;OASG;IACH,GAAG,CACD,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,0BAA0B,CACtE,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAC1B,CAAC,EACF,MAAM,EAAE;QAAE,QAAQ,EAAE,YAAY,CAAA;KAAE,GACjC,WAAW,CAAC,IAAI,CAAC,CAAC;IAErB;;;;;;;;;;;OAWG;IACH,GAAG,CACD,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,mBAAmB,CAExB,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,iBAAiB,GAAG,IAAI,CAC3D,EAAE,EACH,MAAM,EAAE;QAAE,QAAQ,EAAE,YAAY,CAAA;KAAE,GACjC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAExC;;;;;;;;;;;;OAYG;IACH,cAAc,CACZ,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,mBAAmB,CAExB,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,iBAAiB,GAAG,IAAI,CAC3D,EAAE,EACH,MAAM,EAAE;QAAE,QAAQ,EAAE,YAAY,CAAA;KAAE,GACjC,WAAW,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;CAClE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.permission.manager.js","sourceRoot":"","sources":["../src/interfaces.permission.manager.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arvo-tools/agentic",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Agentic toolset for building applications using arvo-core and arvo-event-handler",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -27,7 +27,6 @@
|
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@anthropic-ai/sdk": "^0.71.0",
|
|
29
29
|
"@arizeai/openinference-semantic-conventions": "^2.1.2",
|
|
30
|
-
"@azure/openai": "^2.0.0",
|
|
31
30
|
"@modelcontextprotocol/sdk": "^1.22.0",
|
|
32
31
|
"@opentelemetry/api": "1.9.0",
|
|
33
32
|
"arvo-core": "^3.0.19",
|