@executioncontrolprotocol/runtime 0.3.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/engine/context-loader.d.ts +31 -0
- package/dist/engine/context-loader.d.ts.map +1 -0
- package/dist/engine/context-loader.js +90 -0
- package/dist/engine/context-loader.js.map +1 -0
- package/dist/engine/index.d.ts +6 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +6 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/runner.d.ts +92 -0
- package/dist/engine/runner.d.ts.map +1 -0
- package/dist/engine/runner.js +852 -0
- package/dist/engine/runner.js.map +1 -0
- package/dist/engine/schema-validator.d.ts +32 -0
- package/dist/engine/schema-validator.d.ts.map +1 -0
- package/dist/engine/schema-validator.js +69 -0
- package/dist/engine/schema-validator.js.map +1 -0
- package/dist/engine/system-config-loader.d.ts +39 -0
- package/dist/engine/system-config-loader.d.ts.map +1 -0
- package/dist/engine/system-config-loader.js +80 -0
- package/dist/engine/system-config-loader.js.map +1 -0
- package/dist/engine/types.d.ts +324 -0
- package/dist/engine/types.d.ts.map +1 -0
- package/dist/engine/types.js +10 -0
- package/dist/engine/types.js.map +1 -0
- package/dist/evals/index.d.ts +3 -0
- package/dist/evals/index.d.ts.map +1 -0
- package/dist/evals/index.js +3 -0
- package/dist/evals/index.js.map +1 -0
- package/dist/evals/scorer.d.ts +23 -0
- package/dist/evals/scorer.d.ts.map +1 -0
- package/dist/evals/scorer.js +133 -0
- package/dist/evals/scorer.js.map +1 -0
- package/dist/evals/types.d.ts +128 -0
- package/dist/evals/types.d.ts.map +1 -0
- package/dist/evals/types.js +11 -0
- package/dist/evals/types.js.map +1 -0
- package/dist/extensions/builtin.d.ts +44 -0
- package/dist/extensions/builtin.d.ts.map +1 -0
- package/dist/extensions/builtin.js +66 -0
- package/dist/extensions/builtin.js.map +1 -0
- package/dist/extensions/index.d.ts +4 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +4 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/progress-loggers/file-logger.d.ts +27 -0
- package/dist/extensions/progress-loggers/file-logger.d.ts.map +1 -0
- package/dist/extensions/progress-loggers/file-logger.js +54 -0
- package/dist/extensions/progress-loggers/file-logger.js.map +1 -0
- package/dist/extensions/registry.d.ts +74 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/extensions/registry.js +126 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/types.d.ts +78 -0
- package/dist/extensions/types.d.ts.map +1 -0
- package/dist/extensions/types.js +7 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/mounts/hydrator.d.ts +46 -0
- package/dist/mounts/hydrator.d.ts.map +1 -0
- package/dist/mounts/hydrator.js +142 -0
- package/dist/mounts/hydrator.js.map +1 -0
- package/dist/mounts/index.d.ts +4 -0
- package/dist/mounts/index.d.ts.map +1 -0
- package/dist/mounts/index.js +4 -0
- package/dist/mounts/index.js.map +1 -0
- package/dist/mounts/interpolation.d.ts +33 -0
- package/dist/mounts/interpolation.d.ts.map +1 -0
- package/dist/mounts/interpolation.js +59 -0
- package/dist/mounts/interpolation.js.map +1 -0
- package/dist/mounts/types.d.ts +80 -0
- package/dist/mounts/types.d.ts.map +1 -0
- package/dist/mounts/types.js +10 -0
- package/dist/mounts/types.js.map +1 -0
- package/dist/policies/enforcer.d.ts +23 -0
- package/dist/policies/enforcer.d.ts.map +1 -0
- package/dist/policies/enforcer.js +111 -0
- package/dist/policies/enforcer.js.map +1 -0
- package/dist/policies/index.d.ts +3 -0
- package/dist/policies/index.d.ts.map +1 -0
- package/dist/policies/index.js +3 -0
- package/dist/policies/index.js.map +1 -0
- package/dist/policies/types.d.ts +87 -0
- package/dist/policies/types.d.ts.map +1 -0
- package/dist/policies/types.js +11 -0
- package/dist/policies/types.js.map +1 -0
- package/dist/protocols/a2a/a2a-transport.d.ts +40 -0
- package/dist/protocols/a2a/a2a-transport.d.ts.map +1 -0
- package/dist/protocols/a2a/a2a-transport.js +212 -0
- package/dist/protocols/a2a/a2a-transport.js.map +1 -0
- package/dist/protocols/a2a/index.d.ts +3 -0
- package/dist/protocols/a2a/index.d.ts.map +1 -0
- package/dist/protocols/a2a/index.js +2 -0
- package/dist/protocols/a2a/index.js.map +1 -0
- package/dist/protocols/agent-transport.d.ts +101 -0
- package/dist/protocols/agent-transport.d.ts.map +1 -0
- package/dist/protocols/agent-transport.js +11 -0
- package/dist/protocols/agent-transport.js.map +1 -0
- package/dist/protocols/index.d.ts +5 -0
- package/dist/protocols/index.d.ts.map +1 -0
- package/dist/protocols/index.js +5 -0
- package/dist/protocols/index.js.map +1 -0
- package/dist/protocols/mcp/index.d.ts +2 -0
- package/dist/protocols/mcp/index.d.ts.map +1 -0
- package/dist/protocols/mcp/index.js +2 -0
- package/dist/protocols/mcp/index.js.map +1 -0
- package/dist/protocols/mcp/mcp-tool-invoker.d.ts +30 -0
- package/dist/protocols/mcp/mcp-tool-invoker.d.ts.map +1 -0
- package/dist/protocols/mcp/mcp-tool-invoker.js +121 -0
- package/dist/protocols/mcp/mcp-tool-invoker.js.map +1 -0
- package/dist/protocols/tool-invoker.d.ts +91 -0
- package/dist/protocols/tool-invoker.d.ts.map +1 -0
- package/dist/protocols/tool-invoker.js +11 -0
- package/dist/protocols/tool-invoker.js.map +1 -0
- package/dist/providers/index.d.ts +4 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +4 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/model-provider.d.ts +132 -0
- package/dist/providers/model-provider.d.ts.map +1 -0
- package/dist/providers/model-provider.js +10 -0
- package/dist/providers/model-provider.js.map +1 -0
- package/dist/providers/ollama/index.d.ts +3 -0
- package/dist/providers/ollama/index.d.ts.map +1 -0
- package/dist/providers/ollama/index.js +2 -0
- package/dist/providers/ollama/index.js.map +1 -0
- package/dist/providers/ollama/ollama-provider.d.ts +41 -0
- package/dist/providers/ollama/ollama-provider.d.ts.map +1 -0
- package/dist/providers/ollama/ollama-provider.js +113 -0
- package/dist/providers/ollama/ollama-provider.js.map +1 -0
- package/dist/providers/openai/index.d.ts +3 -0
- package/dist/providers/openai/index.d.ts.map +1 -0
- package/dist/providers/openai/index.js +2 -0
- package/dist/providers/openai/index.js.map +1 -0
- package/dist/providers/openai/openai-provider.d.ts +41 -0
- package/dist/providers/openai/openai-provider.d.ts.map +1 -0
- package/dist/providers/openai/openai-provider.js +150 -0
- package/dist/providers/openai/openai-provider.js.map +1 -0
- package/dist/testing/cassette.d.ts +88 -0
- package/dist/testing/cassette.d.ts.map +1 -0
- package/dist/testing/cassette.js +123 -0
- package/dist/testing/cassette.js.map +1 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +5 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-agent-transport.d.ts +49 -0
- package/dist/testing/mock-agent-transport.d.ts.map +1 -0
- package/dist/testing/mock-agent-transport.js +71 -0
- package/dist/testing/mock-agent-transport.js.map +1 -0
- package/dist/testing/mock-model-provider.d.ts +69 -0
- package/dist/testing/mock-model-provider.d.ts.map +1 -0
- package/dist/testing/mock-model-provider.js +92 -0
- package/dist/testing/mock-model-provider.js.map +1 -0
- package/dist/testing/mock-tool-invoker.d.ts +65 -0
- package/dist/testing/mock-tool-invoker.d.ts.map +1 -0
- package/dist/testing/mock-tool-invoker.js +85 -0
- package/dist/testing/mock-tool-invoker.js.map +1 -0
- package/dist/tracing/collector.d.ts +75 -0
- package/dist/tracing/collector.d.ts.map +1 -0
- package/dist/tracing/collector.js +106 -0
- package/dist/tracing/collector.js.map +1 -0
- package/dist/tracing/exporters/console.d.ts +17 -0
- package/dist/tracing/exporters/console.d.ts.map +1 -0
- package/dist/tracing/exporters/console.js +76 -0
- package/dist/tracing/exporters/console.js.map +1 -0
- package/dist/tracing/exporters/index.d.ts +4 -0
- package/dist/tracing/exporters/index.d.ts.map +1 -0
- package/dist/tracing/exporters/index.js +3 -0
- package/dist/tracing/exporters/index.js.map +1 -0
- package/dist/tracing/exporters/json-file.d.ts +30 -0
- package/dist/tracing/exporters/json-file.d.ts.map +1 -0
- package/dist/tracing/exporters/json-file.js +28 -0
- package/dist/tracing/exporters/json-file.js.map +1 -0
- package/dist/tracing/formatter.d.ts +16 -0
- package/dist/tracing/formatter.d.ts.map +1 -0
- package/dist/tracing/formatter.js +81 -0
- package/dist/tracing/formatter.js.map +1 -0
- package/dist/tracing/graph.d.ts +17 -0
- package/dist/tracing/graph.d.ts.map +1 -0
- package/dist/tracing/graph.js +116 -0
- package/dist/tracing/graph.js.map +1 -0
- package/dist/tracing/index.d.ts +6 -0
- package/dist/tracing/index.d.ts.map +1 -0
- package/dist/tracing/index.js +6 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/tracing/types.d.ts +124 -0
- package/dist/tracing/types.d.ts.map +1 -0
- package/dist/tracing/types.js +11 -0
- package/dist/tracing/types.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the staged mount hydration system.
|
|
3
|
+
*
|
|
4
|
+
* Mounts retrieve data from external tool servers in three stages
|
|
5
|
+
* (seed → focus → deep) to avoid blowing up the context window.
|
|
6
|
+
*
|
|
7
|
+
* @category Mounts
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mounts/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default policy enforcer implementation.
|
|
3
|
+
*
|
|
4
|
+
* Enforces tool access controls, budget limits, and write barriers
|
|
5
|
+
* as declared in an executor's {@link Policies} definition.
|
|
6
|
+
*
|
|
7
|
+
* @category Policies
|
|
8
|
+
*/
|
|
9
|
+
import type { Policies } from "@executioncontrolprotocol/spec";
|
|
10
|
+
import type { PolicyEnforcer } from "./types.js";
|
|
11
|
+
/**
|
|
12
|
+
* Creates a {@link PolicyEnforcer} from an executor's declared policies.
|
|
13
|
+
*
|
|
14
|
+
* The enforcer is stateless — it evaluates each check against the
|
|
15
|
+
* executor's policy declaration and the current budget usage.
|
|
16
|
+
*
|
|
17
|
+
* @param policies - The executor's declared policies.
|
|
18
|
+
* @returns A policy enforcer bound to those policies.
|
|
19
|
+
*
|
|
20
|
+
* @category Policies
|
|
21
|
+
*/
|
|
22
|
+
export declare function createPolicyEnforcer(policies: Policies): PolicyEnforcer;
|
|
23
|
+
//# sourceMappingURL=enforcer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enforcer.d.ts","sourceRoot":"","sources":["../../src/policies/enforcer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAEvE"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default policy enforcer implementation.
|
|
3
|
+
*
|
|
4
|
+
* Enforces tool access controls, budget limits, and write barriers
|
|
5
|
+
* as declared in an executor's {@link Policies} definition.
|
|
6
|
+
*
|
|
7
|
+
* @category Policies
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Creates a {@link PolicyEnforcer} from an executor's declared policies.
|
|
11
|
+
*
|
|
12
|
+
* The enforcer is stateless — it evaluates each check against the
|
|
13
|
+
* executor's policy declaration and the current budget usage.
|
|
14
|
+
*
|
|
15
|
+
* @param policies - The executor's declared policies.
|
|
16
|
+
* @returns A policy enforcer bound to those policies.
|
|
17
|
+
*
|
|
18
|
+
* @category Policies
|
|
19
|
+
*/
|
|
20
|
+
export function createPolicyEnforcer(policies) {
|
|
21
|
+
return new DefaultPolicyEnforcer(policies);
|
|
22
|
+
}
|
|
23
|
+
class DefaultPolicyEnforcer {
|
|
24
|
+
policies;
|
|
25
|
+
constructor(policies) {
|
|
26
|
+
this.policies = policies;
|
|
27
|
+
}
|
|
28
|
+
checkToolAccess(toolName) {
|
|
29
|
+
const access = this.policies.toolAccess;
|
|
30
|
+
if (!access) {
|
|
31
|
+
return { allowed: true };
|
|
32
|
+
}
|
|
33
|
+
if (access.default === "deny") {
|
|
34
|
+
const allowed = access.allow ?? [];
|
|
35
|
+
if (allowed.includes(toolName)) {
|
|
36
|
+
return { allowed: true };
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
allowed: false,
|
|
40
|
+
reason: `Tool "${toolName}" is not in the allow list (default: deny).`,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (access.default === "allow") {
|
|
44
|
+
const denied = access.deny ?? [];
|
|
45
|
+
if (denied.includes(toolName)) {
|
|
46
|
+
return {
|
|
47
|
+
allowed: false,
|
|
48
|
+
reason: `Tool "${toolName}" is explicitly denied.`,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return { allowed: true };
|
|
52
|
+
}
|
|
53
|
+
return { allowed: true };
|
|
54
|
+
}
|
|
55
|
+
checkBudget(usage) {
|
|
56
|
+
const budgets = this.policies.budgets;
|
|
57
|
+
if (!budgets) {
|
|
58
|
+
return { withinBudget: true };
|
|
59
|
+
}
|
|
60
|
+
if (budgets.maxToolCalls !== undefined && usage.toolCalls >= budgets.maxToolCalls) {
|
|
61
|
+
return {
|
|
62
|
+
withinBudget: false,
|
|
63
|
+
exceededLimit: "tool-calls",
|
|
64
|
+
message: `Tool call limit exceeded: ${usage.toolCalls} >= ${budgets.maxToolCalls}`,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
if (budgets.maxRuntimeSeconds !== undefined &&
|
|
68
|
+
usage.runtimeSeconds >= budgets.maxRuntimeSeconds) {
|
|
69
|
+
return {
|
|
70
|
+
withinBudget: false,
|
|
71
|
+
exceededLimit: "runtime-seconds",
|
|
72
|
+
message: `Runtime limit exceeded: ${usage.runtimeSeconds}s >= ${budgets.maxRuntimeSeconds}s`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
return { withinBudget: true };
|
|
76
|
+
}
|
|
77
|
+
checkWrite(toolName) {
|
|
78
|
+
const controls = this.policies.writeControls;
|
|
79
|
+
if (!controls) {
|
|
80
|
+
return { allowed: true, requiresApproval: false };
|
|
81
|
+
}
|
|
82
|
+
switch (controls.mode) {
|
|
83
|
+
case "forbid":
|
|
84
|
+
return {
|
|
85
|
+
allowed: false,
|
|
86
|
+
requiresApproval: false,
|
|
87
|
+
reason: `Write operations are forbidden for this executor.`,
|
|
88
|
+
};
|
|
89
|
+
case "propose-only": {
|
|
90
|
+
const needsApproval = controls.requireApprovalFor ?? [];
|
|
91
|
+
if (needsApproval.includes(toolName)) {
|
|
92
|
+
return {
|
|
93
|
+
allowed: false,
|
|
94
|
+
requiresApproval: true,
|
|
95
|
+
reason: `Tool "${toolName}" requires approval before execution.`,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
allowed: false,
|
|
100
|
+
requiresApproval: true,
|
|
101
|
+
reason: `Write operations require approval (mode: propose-only).`,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
case "execute-if-allowed":
|
|
105
|
+
return { allowed: true, requiresApproval: false };
|
|
106
|
+
default:
|
|
107
|
+
return { allowed: true, requiresApproval: false };
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=enforcer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enforcer.js","sourceRoot":"","sources":["../../src/policies/enforcer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/policies/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/policies/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the policy enforcement system.
|
|
3
|
+
*
|
|
4
|
+
* Policies are checked at the executor level before every tool call
|
|
5
|
+
* and throughout the executor's runtime to enforce budgets, tool
|
|
6
|
+
* access controls, and write barriers.
|
|
7
|
+
*
|
|
8
|
+
* @category Policies
|
|
9
|
+
*/
|
|
10
|
+
import type { Policies } from "@executioncontrolprotocol/spec";
|
|
11
|
+
import type { BudgetUsage } from "../engine/types.js";
|
|
12
|
+
/**
|
|
13
|
+
* The result of checking whether a tool call is allowed.
|
|
14
|
+
*
|
|
15
|
+
* @category Policies
|
|
16
|
+
*/
|
|
17
|
+
export interface ToolAccessDecision {
|
|
18
|
+
/** Whether the tool call is permitted. */
|
|
19
|
+
allowed: boolean;
|
|
20
|
+
/** If denied, the reason. */
|
|
21
|
+
reason?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The result of checking whether budget limits have been exceeded.
|
|
25
|
+
*
|
|
26
|
+
* @category Policies
|
|
27
|
+
*/
|
|
28
|
+
export interface BudgetCheckResult {
|
|
29
|
+
/** Whether the executor is still within budget. */
|
|
30
|
+
withinBudget: boolean;
|
|
31
|
+
/** Which limit was exceeded, if any. */
|
|
32
|
+
exceededLimit?: "tool-calls" | "runtime-seconds";
|
|
33
|
+
/** Human-readable message. */
|
|
34
|
+
message?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The result of checking whether a write operation is allowed.
|
|
38
|
+
*
|
|
39
|
+
* @category Policies
|
|
40
|
+
*/
|
|
41
|
+
export interface WriteDecision {
|
|
42
|
+
/** Whether the write is permitted. */
|
|
43
|
+
allowed: boolean;
|
|
44
|
+
/** Whether the write requires human approval. */
|
|
45
|
+
requiresApproval: boolean;
|
|
46
|
+
/** If denied or requiring approval, the reason. */
|
|
47
|
+
reason?: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Interface for the policy enforcement service.
|
|
51
|
+
*
|
|
52
|
+
* Created per-executor with the executor's declared policies.
|
|
53
|
+
*
|
|
54
|
+
* @category Policies
|
|
55
|
+
*/
|
|
56
|
+
export interface PolicyEnforcer {
|
|
57
|
+
/**
|
|
58
|
+
* Check whether a specific tool call is allowed by the executor's
|
|
59
|
+
* tool access policy.
|
|
60
|
+
*
|
|
61
|
+
* @param toolName - The fully-qualified tool name (e.g. `"jira:issues.search"`).
|
|
62
|
+
* @returns The access decision.
|
|
63
|
+
*/
|
|
64
|
+
checkToolAccess(toolName: string): ToolAccessDecision;
|
|
65
|
+
/**
|
|
66
|
+
* Check whether the executor is still within its budget limits.
|
|
67
|
+
*
|
|
68
|
+
* @param usage - The current budget consumption.
|
|
69
|
+
* @returns Whether the executor is within budget.
|
|
70
|
+
*/
|
|
71
|
+
checkBudget(usage: BudgetUsage): BudgetCheckResult;
|
|
72
|
+
/**
|
|
73
|
+
* Check whether a write operation is allowed.
|
|
74
|
+
*
|
|
75
|
+
* @param toolName - The tool that would perform the write.
|
|
76
|
+
* @returns The write decision.
|
|
77
|
+
*/
|
|
78
|
+
checkWrite(toolName: string): WriteDecision;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Factory function type for creating a {@link PolicyEnforcer} from
|
|
82
|
+
* an executor's declared policies.
|
|
83
|
+
*
|
|
84
|
+
* @category Policies
|
|
85
|
+
*/
|
|
86
|
+
export type PolicyEnforcerFactory = (policies: Policies) => PolicyEnforcer;
|
|
87
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/policies/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IAEjB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAC;IAEtB,wCAAwC;IACxC,aAAa,CAAC,EAAE,YAAY,GAAG,iBAAiB,CAAC;IAEjD,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IAEjB,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAC;IAE1B,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAAC;IAEtD;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,iBAAiB,CAAC;IAEnD;;;;;OAKG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAAC;CAC7C;AAED;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK,cAAc,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the policy enforcement system.
|
|
3
|
+
*
|
|
4
|
+
* Policies are checked at the executor level before every tool call
|
|
5
|
+
* and throughout the executor's runtime to enforce budgets, tool
|
|
6
|
+
* access controls, and write barriers.
|
|
7
|
+
*
|
|
8
|
+
* @category Policies
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/policies/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A implementation of the {@link AgentTransport} interface.
|
|
3
|
+
*
|
|
4
|
+
* Uses the official `@a2a-js/sdk` to communicate with remote
|
|
5
|
+
* A2A-compliant agents. Each specialist executor maps to a remote
|
|
6
|
+
* agent endpoint.
|
|
7
|
+
*
|
|
8
|
+
* @category Protocols
|
|
9
|
+
*/
|
|
10
|
+
import type { AgentTransport, AgentRef, AgentCapabilities, DelegatedTask, DelegationResult } from "../agent-transport.js";
|
|
11
|
+
/**
|
|
12
|
+
* Options for the A2A agent transport.
|
|
13
|
+
*
|
|
14
|
+
* @category Protocols
|
|
15
|
+
*/
|
|
16
|
+
export interface A2ATransportConfig {
|
|
17
|
+
/** Timeout in ms for sendMessage calls. Defaults to 60_000. */
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A2A-backed agent transport for delegating tasks to specialist executors.
|
|
22
|
+
*
|
|
23
|
+
* @category Protocols
|
|
24
|
+
*/
|
|
25
|
+
export declare class A2AAgentTransport implements AgentTransport {
|
|
26
|
+
readonly name = "a2a";
|
|
27
|
+
private agents;
|
|
28
|
+
private factory;
|
|
29
|
+
private timeoutMs;
|
|
30
|
+
constructor(config?: A2ATransportConfig);
|
|
31
|
+
capabilities(agent: AgentRef): Promise<AgentCapabilities>;
|
|
32
|
+
delegate(agent: AgentRef, task: DelegatedTask): Promise<DelegationResult>;
|
|
33
|
+
close(): Promise<void>;
|
|
34
|
+
private ensureConnected;
|
|
35
|
+
private pollForCompletion;
|
|
36
|
+
private extractStatusMessage;
|
|
37
|
+
private extractOutput;
|
|
38
|
+
private extractPartsOutput;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=a2a-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a-transport.d.ts","sourceRoot":"","sources":["../../../src/protocols/a2a/a2a-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAE/B;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,QAAQ,CAAC,IAAI,SAAS;IAEtB,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,GAAE,kBAAuB;IAIrC,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoBzD,QAAQ,CACZ,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,gBAAgB,CAAC;IAkFtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAId,eAAe;YAUf,iBAAiB;IA4C/B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,kBAAkB;CAoB3B"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A implementation of the {@link AgentTransport} interface.
|
|
3
|
+
*
|
|
4
|
+
* Uses the official `@a2a-js/sdk` to communicate with remote
|
|
5
|
+
* A2A-compliant agents. Each specialist executor maps to a remote
|
|
6
|
+
* agent endpoint.
|
|
7
|
+
*
|
|
8
|
+
* @category Protocols
|
|
9
|
+
*/
|
|
10
|
+
import { ClientFactory, } from "@a2a-js/sdk/client";
|
|
11
|
+
/**
|
|
12
|
+
* A2A-backed agent transport for delegating tasks to specialist executors.
|
|
13
|
+
*
|
|
14
|
+
* @category Protocols
|
|
15
|
+
*/
|
|
16
|
+
export class A2AAgentTransport {
|
|
17
|
+
name = "a2a";
|
|
18
|
+
agents = new Map();
|
|
19
|
+
factory = new ClientFactory();
|
|
20
|
+
timeoutMs;
|
|
21
|
+
constructor(config = {}) {
|
|
22
|
+
this.timeoutMs = config.timeoutMs ?? 60_000;
|
|
23
|
+
}
|
|
24
|
+
async capabilities(agent) {
|
|
25
|
+
const connected = await this.ensureConnected(agent);
|
|
26
|
+
const transport = connected.client.transport;
|
|
27
|
+
try {
|
|
28
|
+
const card = await transport.getExtendedAgentCard();
|
|
29
|
+
return {
|
|
30
|
+
name: card.name ?? agent.name,
|
|
31
|
+
skills: (card.skills ?? []).map((s) => s.name ?? s.id ?? "unknown"),
|
|
32
|
+
supportsStreaming: card.capabilities?.streaming ?? false,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return {
|
|
37
|
+
name: agent.name,
|
|
38
|
+
skills: [],
|
|
39
|
+
supportsStreaming: false,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async delegate(agent, task) {
|
|
44
|
+
const connected = await this.ensureConnected(agent);
|
|
45
|
+
const transport = connected.client.transport;
|
|
46
|
+
const messageContent = JSON.stringify({
|
|
47
|
+
executorName: task.executorName,
|
|
48
|
+
task: task.task,
|
|
49
|
+
context: task.context,
|
|
50
|
+
hints: task.hints,
|
|
51
|
+
});
|
|
52
|
+
try {
|
|
53
|
+
const result = await transport.sendMessage({
|
|
54
|
+
message: {
|
|
55
|
+
kind: "message",
|
|
56
|
+
role: "user",
|
|
57
|
+
parts: [{ kind: "text", text: messageContent }],
|
|
58
|
+
messageId: task.id,
|
|
59
|
+
},
|
|
60
|
+
configuration: {
|
|
61
|
+
blocking: true,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
if ("status" in result && result.status) {
|
|
65
|
+
const taskResult = result;
|
|
66
|
+
if (taskResult.status.state === "completed") {
|
|
67
|
+
const output = this.extractOutput(taskResult);
|
|
68
|
+
return {
|
|
69
|
+
taskId: task.id,
|
|
70
|
+
executorName: task.executorName,
|
|
71
|
+
output,
|
|
72
|
+
success: true,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
if (taskResult.status.state === "failed") {
|
|
76
|
+
return {
|
|
77
|
+
taskId: task.id,
|
|
78
|
+
executorName: task.executorName,
|
|
79
|
+
output: {},
|
|
80
|
+
success: false,
|
|
81
|
+
error: this.extractStatusMessage(taskResult.status) ?? "Task failed",
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return await this.pollForCompletion(transport, taskResult.id ?? task.id, task);
|
|
85
|
+
}
|
|
86
|
+
if ("parts" in result) {
|
|
87
|
+
const output = this.extractPartsOutput(result.parts ?? []);
|
|
88
|
+
return {
|
|
89
|
+
taskId: task.id,
|
|
90
|
+
executorName: task.executorName,
|
|
91
|
+
output,
|
|
92
|
+
success: true,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
taskId: task.id,
|
|
97
|
+
executorName: task.executorName,
|
|
98
|
+
output: {},
|
|
99
|
+
success: false,
|
|
100
|
+
error: "Unexpected response format from A2A agent",
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
return {
|
|
105
|
+
taskId: task.id,
|
|
106
|
+
executorName: task.executorName,
|
|
107
|
+
output: {},
|
|
108
|
+
success: false,
|
|
109
|
+
error: err instanceof Error ? err.message : String(err),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async close() {
|
|
114
|
+
this.agents.clear();
|
|
115
|
+
}
|
|
116
|
+
async ensureConnected(agent) {
|
|
117
|
+
const existing = this.agents.get(agent.name);
|
|
118
|
+
if (existing)
|
|
119
|
+
return existing;
|
|
120
|
+
const client = await this.factory.createFromUrl(agent.endpoint);
|
|
121
|
+
const connected = { client, ref: agent };
|
|
122
|
+
this.agents.set(agent.name, connected);
|
|
123
|
+
return connected;
|
|
124
|
+
}
|
|
125
|
+
async pollForCompletion(transport, taskId, task) {
|
|
126
|
+
const deadline = Date.now() + this.timeoutMs;
|
|
127
|
+
const pollInterval = 1000;
|
|
128
|
+
while (Date.now() < deadline) {
|
|
129
|
+
await new Promise((r) => setTimeout(r, pollInterval));
|
|
130
|
+
const taskState = await transport.getTask({ id: taskId });
|
|
131
|
+
if ("status" in taskState && taskState.status) {
|
|
132
|
+
if (taskState.status.state === "completed") {
|
|
133
|
+
return {
|
|
134
|
+
taskId: task.id,
|
|
135
|
+
executorName: task.executorName,
|
|
136
|
+
output: this.extractOutput(taskState),
|
|
137
|
+
success: true,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
if (taskState.status.state === "failed") {
|
|
141
|
+
return {
|
|
142
|
+
taskId: task.id,
|
|
143
|
+
executorName: task.executorName,
|
|
144
|
+
output: {},
|
|
145
|
+
success: false,
|
|
146
|
+
error: this.extractStatusMessage(taskState.status) ?? "Task failed",
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
taskId: task.id,
|
|
153
|
+
executorName: task.executorName,
|
|
154
|
+
output: {},
|
|
155
|
+
success: false,
|
|
156
|
+
error: `Task timed out after ${this.timeoutMs}ms`,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
160
|
+
extractStatusMessage(status) {
|
|
161
|
+
if (!status?.message)
|
|
162
|
+
return undefined;
|
|
163
|
+
const msg = status.message;
|
|
164
|
+
if (typeof msg === "string")
|
|
165
|
+
return msg;
|
|
166
|
+
if (msg.parts) {
|
|
167
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
168
|
+
return msg.parts.filter((p) => p.kind === "text").map((p) => p.text).join(" ");
|
|
169
|
+
}
|
|
170
|
+
return String(msg);
|
|
171
|
+
}
|
|
172
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
173
|
+
extractOutput(taskResult) {
|
|
174
|
+
const artifacts = taskResult.artifacts ?? [];
|
|
175
|
+
if (artifacts.length > 0) {
|
|
176
|
+
const parts = artifacts.flatMap(
|
|
177
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
178
|
+
(a) => a.parts ?? []);
|
|
179
|
+
return this.extractPartsOutput(parts);
|
|
180
|
+
}
|
|
181
|
+
const history = taskResult.history ?? [];
|
|
182
|
+
if (history.length > 0) {
|
|
183
|
+
const lastMsg = history[history.length - 1];
|
|
184
|
+
if (lastMsg?.parts) {
|
|
185
|
+
return this.extractPartsOutput(lastMsg.parts);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return {};
|
|
189
|
+
}
|
|
190
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
191
|
+
extractPartsOutput(parts) {
|
|
192
|
+
const textParts = parts
|
|
193
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
194
|
+
.filter((p) => p.kind === "text" && p.text)
|
|
195
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
196
|
+
.map((p) => p.text);
|
|
197
|
+
if (textParts.length === 0)
|
|
198
|
+
return {};
|
|
199
|
+
const combined = textParts.join("\n");
|
|
200
|
+
try {
|
|
201
|
+
const parsed = JSON.parse(combined);
|
|
202
|
+
if (typeof parsed === "object" && parsed !== null) {
|
|
203
|
+
return parsed;
|
|
204
|
+
}
|
|
205
|
+
return { result: parsed };
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return { result: combined };
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=a2a-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a-transport.js","sourceRoot":"","sources":["../../../src/protocols/a2a/a2a-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/protocols/a2a/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/protocols/a2a/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|