@wildo-ai/external-connectors-models 1.1.2 → 1.1.3
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/esm/.native.tsbuildinfo +1 -0
- package/dist/esm/core/commons.external-connectors-models.schemas.d.ts +45 -7
- package/dist/esm/core/commons.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/commons.external-connectors-models.schemas.js +42 -5
- package/dist/esm/core/commons.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/core/operation-classification.external-connectors-models.schemas.d.ts +13 -0
- package/dist/esm/core/operation-classification.external-connectors-models.schemas.d.ts.map +1 -0
- package/dist/esm/core/operation-classification.external-connectors-models.schemas.js +14 -0
- package/dist/esm/core/operation-classification.external-connectors-models.schemas.js.map +1 -0
- package/dist/esm/core/protocols.external-connectors-models.schemas.d.ts +0 -25
- package/dist/esm/core/protocols.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/protocols.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/core/security.external-connectors-models.schemas.d.ts +132 -2
- package/dist/esm/core/security.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/security.external-connectors-models.schemas.js +164 -0
- package/dist/esm/core/security.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/features/core.external-connectors-models.schemas.d.ts +0 -63
- package/dist/esm/features/core.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/features/core.external-connectors-models.schemas.js +0 -101
- package/dist/esm/features/core.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/features/email.external-connectors-models.schemas.d.ts +0 -181
- package/dist/esm/features/email.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/features/email.external-connectors-models.schemas.js +0 -34
- package/dist/esm/features/email.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/features/hooks.external-connectors-models.schemas.d.ts +0 -101
- package/dist/esm/features/hooks.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/features/hooks.external-connectors-models.schemas.js +0 -11
- package/dist/esm/features/hooks.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/features/sms.external-connectors-models.schemas.d.ts +0 -21
- package/dist/esm/features/sms.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/features/sms.external-connectors-models.schemas.js +0 -8
- package/dist/esm/features/sms.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/index.d.ts +3 -9
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +6 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/protocols/a2a.external-connectors-models.schemas.d.ts +0 -57
- package/dist/esm/protocols/a2a.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/protocols/a2a.external-connectors-models.schemas.js +0 -73
- package/dist/esm/protocols/a2a.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts +110 -3
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js +140 -1
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/billing.standard-interface.schemas.d.ts +154 -0
- package/dist/esm/protocols/billing.standard-interface.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/billing.standard-interface.schemas.js +50 -1
- package/dist/esm/protocols/billing.standard-interface.schemas.js.map +1 -1
- package/dist/esm/protocols/email.external-connectors-models.schemas.d.ts +1 -1
- package/dist/esm/protocols/email.standard-interface.schemas.d.ts +5 -5
- package/dist/esm/protocols/git.external-connectors-models.schemas.d.ts +0 -14
- package/dist/esm/protocols/git.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/protocols/git.external-connectors-models.schemas.js +0 -9
- package/dist/esm/protocols/git.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/protocols/grpc.external-connectors-models.schemas.d.ts +0 -14
- package/dist/esm/protocols/grpc.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/protocols/grpc.external-connectors-models.schemas.js +0 -9
- package/dist/esm/protocols/grpc.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.d.ts +101 -0
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.d.ts.map +1 -0
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.js +11 -0
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.js.map +1 -0
- package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts +36 -19
- package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/llm.external-connectors-models.schemas.js +90 -28
- package/dist/esm/protocols/llm.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/mcp.external-connectors-models.schemas.d.ts +0 -60
- package/dist/esm/protocols/mcp.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/protocols/mcp.external-connectors-models.schemas.js +0 -35
- package/dist/esm/protocols/mcp.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/protocols/oauth2.external-connectors-models.schemas.d.ts +2 -2
- package/dist/esm/protocols/rest-api.external-connectors-models.schemas.d.ts +1 -89
- package/dist/esm/protocols/rest-api.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/rest-api.external-connectors-models.schemas.js +1 -83
- package/dist/esm/protocols/rest-api.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts +370 -0
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts.map +1 -0
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js +89 -0
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js.map +1 -0
- package/dist/esm/protocols/saml.external-connectors-models.schemas.d.ts +0 -135
- package/dist/esm/protocols/saml.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/protocols/saml.external-connectors-models.schemas.js +0 -9
- package/dist/esm/protocols/saml.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/protocols/sms.standard-interface.schemas.d.ts +2 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { ExternalProvider_Auth_Kind } from "../core/security.external-connectors-models.schemas.js";
|
|
3
|
-
import { ExternalProvider_ExchangeProtocol_Kind, ExternalProvider_ExchangeProtocol_Status_BaseSchema } from "../core/commons.external-connectors-models.schemas.js";
|
|
4
|
-
//===============================================================
|
|
5
|
-
// A2A (Agent-to-Agent) Protocol
|
|
6
|
-
// --------
|
|
7
|
-
// Protocol for agent-to-agent communication enabling autonomous
|
|
8
|
-
// collaboration between AI agents. Supports discovery, negotiation,
|
|
9
|
-
// delegation, and coordination patterns with security and trust.
|
|
10
|
-
//===============================================================
|
|
11
|
-
export var A2A_CapabilityType;
|
|
12
|
-
(function (A2A_CapabilityType) {
|
|
13
|
-
A2A_CapabilityType["TASK_EXECUTION"] = "task_execution";
|
|
14
|
-
A2A_CapabilityType["INFORMATION_RETRIEVAL"] = "information_retrieval";
|
|
15
|
-
A2A_CapabilityType["DECISION_MAKING"] = "decision_making";
|
|
16
|
-
A2A_CapabilityType["PLANNING"] = "planning";
|
|
17
|
-
A2A_CapabilityType["MONITORING"] = "monitoring";
|
|
18
|
-
A2A_CapabilityType["COORDINATION"] = "coordination";
|
|
19
|
-
})(A2A_CapabilityType || (A2A_CapabilityType = {}));
|
|
20
|
-
export const A2A_AgentRefSchema = z.object({
|
|
21
|
-
providerRef: z.string(),
|
|
22
|
-
agentRef: z.string(),
|
|
23
|
-
});
|
|
24
|
-
export const A2A_AgentCapabilitySchema = z.object({
|
|
25
|
-
type: z.enum(A2A_CapabilityType),
|
|
26
|
-
name: z.string(),
|
|
27
|
-
description: z.string(),
|
|
28
|
-
parameters: z.record(z.string(), z.unknown()).optional(),
|
|
29
|
-
cost: z.number().optional(),
|
|
30
|
-
estimatedDuration: z.number().optional(),
|
|
31
|
-
qualityMetrics: z.record(z.string(), z.number()).optional(),
|
|
32
|
-
});
|
|
33
|
-
export const A2A_Agent_AuthKind = [
|
|
34
|
-
ExternalProvider_Auth_Kind.NONE,
|
|
35
|
-
ExternalProvider_Auth_Kind.API_KEY,
|
|
36
|
-
ExternalProvider_Auth_Kind.BEARER,
|
|
37
|
-
ExternalProvider_Auth_Kind.BASIC,
|
|
38
|
-
ExternalProvider_Auth_Kind.OAUTH2,
|
|
39
|
-
ExternalProvider_Auth_Kind.MUTUAL_TLS
|
|
40
|
-
];
|
|
41
|
-
// ------------------------------------------------------------
|
|
42
|
-
// OPERATIONS
|
|
43
|
-
// ------------------------------------------------------------
|
|
44
|
-
export var A2A_OperationKind;
|
|
45
|
-
(function (A2A_OperationKind) {
|
|
46
|
-
A2A_OperationKind["MESSAGE"] = "message";
|
|
47
|
-
A2A_OperationKind["DELEGATION"] = "delegation";
|
|
48
|
-
A2A_OperationKind["NEGOTIATION"] = "negotiation";
|
|
49
|
-
})(A2A_OperationKind || (A2A_OperationKind = {}));
|
|
50
|
-
export var A2A_MessageKind;
|
|
51
|
-
(function (A2A_MessageKind) {
|
|
52
|
-
A2A_MessageKind["REQUEST"] = "request";
|
|
53
|
-
A2A_MessageKind["RESPONSE"] = "response";
|
|
54
|
-
A2A_MessageKind["INFORMATION"] = "information";
|
|
55
|
-
A2A_MessageKind["COORDINATION"] = "coordination";
|
|
56
|
-
A2A_MessageKind["ERROR"] = "error";
|
|
57
|
-
})(A2A_MessageKind || (A2A_MessageKind = {}));
|
|
58
|
-
export var A2A_Delegation_Status;
|
|
59
|
-
(function (A2A_Delegation_Status) {
|
|
60
|
-
A2A_Delegation_Status["PENDING"] = "pending";
|
|
61
|
-
A2A_Delegation_Status["ACCEPTED"] = "accepted";
|
|
62
|
-
A2A_Delegation_Status["REJECTED"] = "rejected";
|
|
63
|
-
A2A_Delegation_Status["IN_PROGRESS"] = "in_progress";
|
|
64
|
-
A2A_Delegation_Status["COMPLETED"] = "completed";
|
|
65
|
-
A2A_Delegation_Status["FAILED"] = "failed";
|
|
66
|
-
})(A2A_Delegation_Status || (A2A_Delegation_Status = {}));
|
|
67
|
-
//===============================================================
|
|
68
|
-
// STATUS
|
|
69
|
-
//===============================================================
|
|
70
|
-
export const A2AProvider_StatusSchema = ExternalProvider_ExchangeProtocol_Status_BaseSchema.extend({
|
|
71
|
-
protocolKind: z.literal(ExternalProvider_ExchangeProtocol_Kind.A2A_CONNECTOR),
|
|
72
|
-
});
|
|
73
|
-
//# sourceMappingURL=a2a.external-connectors-models.schemas.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"a2a.external-connectors-models.schemas.js","sourceRoot":"","sources":["../../../../src/protocols/a2a.external-connectors-models.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,EAAwD,sCAAsC,EAAiG,mDAAmD,EAAE,MAAM,oDAAoD,CAAC;AAEtT,iEAAiE;AACjE,gCAAgC;AAChC,WAAW;AACX,gEAAgE;AAChE,oEAAoE;AACpE,iEAAiE;AACjE,iEAAiE;AAGjE,MAAM,CAAN,IAAY,kBAOX;AAPD,WAAY,kBAAkB;IAC5B,uDAAiC,CAAA;IACjC,qEAA+C,CAAA;IAC/C,yDAAmC,CAAA;IACnC,2CAAqB,CAAA;IACrB,+CAAyB,CAAA;IACzB,mDAA6B,CAAA;AAC/B,CAAC,EAPW,kBAAkB,KAAlB,kBAAkB,QAO7B;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC5D,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,kBAAkB,GAA0C;IACvE,0BAA0B,CAAC,IAAI;IAC/B,0BAA0B,CAAC,OAAO;IAClC,0BAA0B,CAAC,MAAM;IACjC,0BAA0B,CAAC,KAAK;IAChC,0BAA0B,CAAC,MAAM;IACjC,0BAA0B,CAAC,UAAU;CACtC,CAAC;AAOF,+DAA+D;AAC/D,aAAa;AACb,+DAA+D;AAI/D,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,8CAAyB,CAAA;IACzB,gDAA2B,CAAA;AAE7B,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AACD,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,wCAAqB,CAAA;IACrB,8CAA2B,CAAA;IAC3B,gDAA6B,CAAA;IAC7B,kCAAe,CAAA;AACjB,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AAID,MAAM,CAAN,IAAY,qBAOX;AAPD,WAAY,qBAAqB;IAC/B,4CAAmB,CAAA;IACnB,8CAAqB,CAAA;IACrB,8CAAqB,CAAA;IACrB,oDAA2B,CAAA;IAC3B,gDAAuB,CAAA;IACvB,0CAAiB,CAAA;AACnB,CAAC,EAPW,qBAAqB,KAArB,qBAAqB,QAOhC;AAGD,iEAAiE;AACjE,SAAS;AACT,iEAAiE;AAEjE,MAAM,CAAC,MAAM,wBAAwB,GAAG,mDAAmD,CAAC,MAAM,CAAC;IACjG,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,aAAa,CAAC;CAC9E,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\nimport { ExternalProvider_Auth_Kind } from \"../core/security.external-connectors-models.schemas\";\nimport { ExternalProvider_ExchangeProtocol_Configuration_Base, ExternalProvider_ExchangeProtocol_Kind, ExternalProvider_ExchangeProtocol_Profile_Base, ExternalProvider_ExchangeProtocol_Status_Base, ExternalProvider_ExchangeProtocol_Status_BaseSchema } from \"../core/commons.external-connectors-models.schemas\";\n\n//===============================================================\n// A2A (Agent-to-Agent) Protocol\n// --------\n// Protocol for agent-to-agent communication enabling autonomous\n// collaboration between AI agents. Supports discovery, negotiation,\n// delegation, and coordination patterns with security and trust.\n//===============================================================\n\n\nexport enum A2A_CapabilityType {\n TASK_EXECUTION = \"task_execution\",\n INFORMATION_RETRIEVAL = \"information_retrieval\",\n DECISION_MAKING = \"decision_making\",\n PLANNING = \"planning\",\n MONITORING = \"monitoring\",\n COORDINATION = \"coordination\",\n}\n\nexport const A2A_AgentRefSchema = z.object({\n providerRef: z.string(),\n agentRef: z.string(),\n});\n\nexport const A2A_AgentCapabilitySchema = z.object({\n type: z.enum(A2A_CapabilityType),\n name: z.string(),\n description: z.string(),\n parameters: z.record(z.string(), z.unknown()).optional(),\n cost: z.number().optional(),\n estimatedDuration: z.number().optional(),\n qualityMetrics: z.record(z.string(), z.number()).optional(),\n});\n\nexport type A2A_AgentRef = z.infer<typeof A2A_AgentRefSchema>;\nexport type A2A_AgentCapability = z.infer<typeof A2A_AgentCapabilitySchema>;\n\nexport const A2A_Agent_AuthKind: readonly ExternalProvider_Auth_Kind[] = [ \n ExternalProvider_Auth_Kind.NONE, \n ExternalProvider_Auth_Kind.API_KEY, \n ExternalProvider_Auth_Kind.BEARER, \n ExternalProvider_Auth_Kind.BASIC, \n ExternalProvider_Auth_Kind.OAUTH2, \n ExternalProvider_Auth_Kind.MUTUAL_TLS \n];\n\n\nexport type A2A_AgentProfile = ExternalProvider_ExchangeProtocol_Profile_Base;\n\nexport type A2A_Configuration = ExternalProvider_ExchangeProtocol_Configuration_Base;\n\n// ------------------------------------------------------------\n// OPERATIONS\n// ------------------------------------------------------------\n\n\n\nexport enum A2A_OperationKind {\n MESSAGE = \"message\",\n DELEGATION = \"delegation\",\n NEGOTIATION = \"negotiation\",\n \n}\nexport enum A2A_MessageKind {\n REQUEST = \"request\",\n RESPONSE = \"response\",\n INFORMATION = \"information\",\n COORDINATION = \"coordination\",\n ERROR = \"error\",\n}\n\n\n\nexport enum A2A_Delegation_Status {\n PENDING = \"pending\",\n ACCEPTED = \"accepted\",\n REJECTED = \"rejected\",\n IN_PROGRESS = \"in_progress\",\n COMPLETED = \"completed\",\n FAILED = \"failed\",\n}\n\n\n//===============================================================\n// STATUS\n//===============================================================\n\nexport const A2AProvider_StatusSchema = ExternalProvider_ExchangeProtocol_Status_BaseSchema.extend({\n protocolKind: z.literal(ExternalProvider_ExchangeProtocol_Kind.A2A_CONNECTOR),\n});\nexport type A2AProvider_Status = z.infer<typeof A2AProvider_StatusSchema>;\n"]}
|
|
@@ -63,10 +63,19 @@ export declare enum AgentClientProtocol_WorkingDirectoryPolicy {
|
|
|
63
63
|
* what lets an application say "no session started from this profile may ever
|
|
64
64
|
* skip the permission gate" independently of what any individual run requests.
|
|
65
65
|
*
|
|
66
|
-
* Ordering is meaningful and increasing: PROMPT_ALWAYS <
|
|
66
|
+
* Ordering is meaningful and increasing over all FIVE members: PROMPT_ALWAYS <
|
|
67
|
+
* AUTO_ACCEPT_READS < AUTO_ACCEPT_EDITS < AUTO_ACCEPT_READS_AND_EDITS <
|
|
67
68
|
* UNRESTRICTED. Compare through {@link agentClientProtocolPermissionCeilingRank}
|
|
68
69
|
* rather than by string, so the ordering has one definition.
|
|
70
|
+
*
|
|
71
|
+
* Read that order as a CLAMP — how much is pre-approved without a human — and never
|
|
72
|
+
* as containment. The ceilings are kind-SETS and are deliberately not nested:
|
|
73
|
+
* AUTO_ACCEPT_EDITS outranks AUTO_ACCEPT_READS and still refuses `fetch`, which is
|
|
74
|
+
* exactly why AUTO_ACCEPT_READS_AND_EDITS had to be added rather than being implied
|
|
75
|
+
* by the higher rank. Each member's own docstring states the set it admits, and the
|
|
76
|
+
* rank function carries the full argument for why containment is the wrong reading.
|
|
69
77
|
*/
|
|
78
|
+
/** @wildo_source:part:start acp.permission-ceiling facet:layer:config facet:audience:app-developer */
|
|
70
79
|
export declare enum AgentClientProtocol_PermissionCeiling {
|
|
71
80
|
/**
|
|
72
81
|
* Every permission request the agent raises must be answered by the client.
|
|
@@ -134,6 +143,7 @@ export declare enum AgentClientProtocol_PermissionCeiling {
|
|
|
134
143
|
/** No permission gate. Reserve for a disposable or isolated workspace. */
|
|
135
144
|
UNRESTRICTED = "unrestricted"
|
|
136
145
|
}
|
|
146
|
+
/** @wildo_source:part:end acp.permission-ceiling */
|
|
137
147
|
/**
|
|
138
148
|
* Increasing rank for {@link AgentClientProtocol_PermissionCeiling}; the single ordering definition.
|
|
139
149
|
*
|
|
@@ -154,6 +164,95 @@ export declare enum AgentClientProtocol_PermissionCeiling {
|
|
|
154
164
|
* the read direction should mean.
|
|
155
165
|
*/
|
|
156
166
|
export declare function agentClientProtocolPermissionCeilingRank(ceiling: AgentClientProtocol_PermissionCeiling): number;
|
|
167
|
+
/**
|
|
168
|
+
* Whether THIS agent raises `session/request_permission` before it mutates —
|
|
169
|
+
* the one property that decides whether Wildo's in-flight guards can fire at all.
|
|
170
|
+
*
|
|
171
|
+
* # Why a permission ceiling needs this to mean anything
|
|
172
|
+
*
|
|
173
|
+
* Both of Wildo's in-flight controls are enforced in the CLIENT's ANSWER to a
|
|
174
|
+
* permission request: {@link AgentClientProtocol_PermissionCeiling} decides the
|
|
175
|
+
* tool KIND, and the dispatch's location predicate decides the PATHS. Neither is
|
|
176
|
+
* a sandbox, an interposed filesystem, or a syscall filter — they are answers.
|
|
177
|
+
* So an agent that writes without asking is bound by neither, and the ceiling
|
|
178
|
+
* an application authored is a LABEL rather than a guarantee.
|
|
179
|
+
*
|
|
180
|
+
* That is not hypothetical and it is not a fault in the agents. MEASURED with
|
|
181
|
+
* `wildo acp probe`:
|
|
182
|
+
*
|
|
183
|
+
* - Codex (`@agentclientprotocol/codex-acp`, 2026-09-06) raises nothing before
|
|
184
|
+
* an in-workspace write in ANY of its three modes, including with an explicit
|
|
185
|
+
* `approval_policy = "untrusted"`. Its safety model is a SANDBOX, so an
|
|
186
|
+
* in-workspace write is safe by ITS construction and there is nothing to ask
|
|
187
|
+
* about. A different architecture, not a defect.
|
|
188
|
+
* - OpenCode (1.18.27, 2026-09-04/05) does the same under its DEFAULT
|
|
189
|
+
* configuration, and escalates correctly when pointed at a permission
|
|
190
|
+
* configuration file. So for that agent the answer is conditional on
|
|
191
|
+
* something the HOST supplies.
|
|
192
|
+
* - Claude's adapter (`@agentclientprotocol/claude-agent-acp` 0.73.0) raises,
|
|
193
|
+
* and both guards fire.
|
|
194
|
+
*
|
|
195
|
+
* # Why it is DECLARED rather than inferred, and why it is required
|
|
196
|
+
*
|
|
197
|
+
* It cannot be inferred before a run: an agent that never asks and an agent that
|
|
198
|
+
* had nothing to ask about are indistinguishable from an empty decision list, and
|
|
199
|
+
* by the time the list is empty the workspace has already been mutated. The
|
|
200
|
+
* post-run change set remains the authoritative account of what a run touched —
|
|
201
|
+
* this declaration is what lets the framework say, BEFORE the run, whether that
|
|
202
|
+
* change set is the only account there will be.
|
|
203
|
+
*
|
|
204
|
+
* The provider declares it because the provider is the party that ran the probe.
|
|
205
|
+
* It is REQUIRED on the runtime contract for the same reason `modelDelivery` is:
|
|
206
|
+
* this lane has now shipped three safety-relevant fields that were authored,
|
|
207
|
+
* documented and read by nothing (`hostConfigurationInheritance`, the model
|
|
208
|
+
* channel, the provider's inherited environment). An author who cannot ship the
|
|
209
|
+
* gap is better than one who discovers it on a dispatched run.
|
|
210
|
+
*
|
|
211
|
+
* It is a CLAIM, never an alibi. The companion still judges each completed run
|
|
212
|
+
* from that run's OWN permission decisions and change set, so an agent whose
|
|
213
|
+
* behaviour changes between versions cannot keep a stale, reassuring declaration.
|
|
214
|
+
*/
|
|
215
|
+
/** @wildo_source:part:start acp.permission-escalation facet:layer:config facet:audience:app-developer */
|
|
216
|
+
export declare enum AgentClientProtocol_PermissionEscalationBehaviour {
|
|
217
|
+
/**
|
|
218
|
+
* The agent escalates before mutating, so the ceiling and the mutation scope
|
|
219
|
+
* are both enforceable in flight. The only value under which a ceiling
|
|
220
|
+
* narrower than UNRESTRICTED means what it says.
|
|
221
|
+
*/
|
|
222
|
+
RAISES_BEFORE_MUTATION = "raises_before_mutation",
|
|
223
|
+
/**
|
|
224
|
+
* The agent escalates ONLY when the host points it at a permission
|
|
225
|
+
* configuration it does not adopt by default.
|
|
226
|
+
*
|
|
227
|
+
* The configuration is therefore not hardening — it is the condition under
|
|
228
|
+
* which the agent may be dispatched with a gate at all, and the variable that
|
|
229
|
+
* carries the pointer is named on the contract so the dispatch can CHECK that
|
|
230
|
+
* a profile supplies it instead of trusting a docstring that says it must.
|
|
231
|
+
*/
|
|
232
|
+
RAISES_ONLY_UNDER_HOST_CONFIGURATION = "raises_only_under_host_configuration",
|
|
233
|
+
/**
|
|
234
|
+
* The agent never escalates before mutating, under any configuration this
|
|
235
|
+
* framework can supply. Its own safety model is elsewhere (a sandbox), and
|
|
236
|
+
* Wildo's in-flight guards are inert for it by construction — the post-run
|
|
237
|
+
* change set is the only account of what it touched.
|
|
238
|
+
*/
|
|
239
|
+
NEVER_RAISES = "never_raises"
|
|
240
|
+
}
|
|
241
|
+
/** @wildo_source:part:end acp.permission-escalation */
|
|
242
|
+
/**
|
|
243
|
+
* Can Wildo's in-flight permission ceiling and mutation-scope predicate fire for
|
|
244
|
+
* this agent, as it will actually be started?
|
|
245
|
+
*
|
|
246
|
+
* The single definition of that question, so the dispatch's refusal, the run's
|
|
247
|
+
* recorded metadata and any operator-facing report cannot disagree about it.
|
|
248
|
+
*
|
|
249
|
+
* `escalationConfigurationSupplied` answers only the conditional member: it is
|
|
250
|
+
* whether the composed child environment will actually carry the pointer the
|
|
251
|
+
* contract names. Deliberately a parameter rather than something this function
|
|
252
|
+
* reads, because the environment is composed by the dispatch and a predicate
|
|
253
|
+
* that guessed at it would be a second, quieter answer.
|
|
254
|
+
*/
|
|
255
|
+
export declare function agentClientProtocolInFlightGuardsCanFire(behaviour: AgentClientProtocol_PermissionEscalationBehaviour, escalationConfigurationSupplied: boolean): boolean;
|
|
157
256
|
/**
|
|
158
257
|
* How much of the HOST MACHINE's agent configuration a session inherits.
|
|
159
258
|
*
|
|
@@ -170,6 +269,7 @@ export declare function agentClientProtocolPermissionCeilingRank(ceiling: AgentC
|
|
|
170
269
|
* application teaches the agent to use its framework. What it should not
|
|
171
270
|
* silently absorb is whoever happens to be logged in.
|
|
172
271
|
*/
|
|
272
|
+
/** @wildo_source:part:start acp.host-configuration-inheritance facet:layer:config facet:audience:app-developer */
|
|
173
273
|
export declare enum AgentClientProtocol_HostConfigurationInheritance {
|
|
174
274
|
/** No filesystem-sourced agent configuration. The prompt is the whole instruction. */
|
|
175
275
|
ISOLATED = "isolated",
|
|
@@ -187,12 +287,14 @@ export declare enum AgentClientProtocol_HostConfigurationInheritance {
|
|
|
187
287
|
*/
|
|
188
288
|
HOST_INHERITED = "host_inherited"
|
|
189
289
|
}
|
|
290
|
+
/** @wildo_source:part:end acp.host-configuration-inheritance */
|
|
190
291
|
/**
|
|
191
292
|
* One authored way to start an ACP agent.
|
|
192
293
|
*
|
|
193
294
|
* Mirrors the shape a provider's execution profiles have always had: the
|
|
194
295
|
* spawnable command plus the policy that decides whether it may run at all.
|
|
195
296
|
*/
|
|
297
|
+
/** @wildo_source:part:start acp.execution-profile facet:layer:config facet:audience:app-developer */
|
|
196
298
|
export declare const AgentClientProtocol_ExecutionProfileSchema: z.ZodObject<{
|
|
197
299
|
runnerHost: z.ZodDefault<z.ZodEnum<typeof AgentClientProtocol_RunnerHost>>;
|
|
198
300
|
command: z.ZodOptional<z.ZodString>;
|
|
@@ -214,6 +316,7 @@ export declare const AgentClientProtocol_ExecutionProfileSchema: z.ZodObject<{
|
|
|
214
316
|
sessionMetaExtensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
215
317
|
}, z.core.$strict>;
|
|
216
318
|
export type AgentClientProtocol_ExecutionProfile = z.infer<typeof AgentClientProtocol_ExecutionProfileSchema>;
|
|
319
|
+
/** @wildo_source:part:end acp.execution-profile */
|
|
217
320
|
/**
|
|
218
321
|
* Transport capability metadata for an ACP-speaking provider.
|
|
219
322
|
*
|
|
@@ -290,10 +393,10 @@ export declare const AgentClientProtocol_ProfileSchema: z.ZodObject<{
|
|
|
290
393
|
extraAuthParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
291
394
|
extraTokenParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
292
395
|
tokenFormat: z.ZodDefault<z.ZodEnum<{
|
|
293
|
-
|
|
396
|
+
custom: "custom";
|
|
294
397
|
bearer: "bearer";
|
|
398
|
+
token: "token";
|
|
295
399
|
oauth: "oauth";
|
|
296
|
-
custom: "custom";
|
|
297
400
|
}>>;
|
|
298
401
|
customTokenPrefix: z.ZodOptional<z.ZodString>;
|
|
299
402
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -548,6 +651,8 @@ export declare const AgentClientProtocol_ExecutionTransportMetadataSchema: z.Zod
|
|
|
548
651
|
agentName: z.ZodOptional<z.ZodString>;
|
|
549
652
|
agentVersion: z.ZodOptional<z.ZodString>;
|
|
550
653
|
sessionModeId: z.ZodOptional<z.ZodString>;
|
|
654
|
+
permissionEscalation: z.ZodOptional<z.ZodEnum<typeof AgentClientProtocol_PermissionEscalationBehaviour>>;
|
|
655
|
+
inFlightPermissionGuardsCanFire: z.ZodOptional<z.ZodBoolean>;
|
|
551
656
|
sessionId: z.ZodOptional<z.ZodString>;
|
|
552
657
|
}, z.core.$strip>;
|
|
553
658
|
export type AgentClientProtocol_ExecutionTransportMetadata = z.infer<typeof AgentClientProtocol_ExecutionTransportMetadataSchema>;
|
|
@@ -579,6 +684,8 @@ export declare const CodingAgent_OperationContext_BaseSchema: z.ZodObject<{
|
|
|
579
684
|
agentName: z.ZodOptional<z.ZodString>;
|
|
580
685
|
agentVersion: z.ZodOptional<z.ZodString>;
|
|
581
686
|
sessionModeId: z.ZodOptional<z.ZodString>;
|
|
687
|
+
permissionEscalation: z.ZodOptional<z.ZodEnum<typeof AgentClientProtocol_PermissionEscalationBehaviour>>;
|
|
688
|
+
inFlightPermissionGuardsCanFire: z.ZodOptional<z.ZodBoolean>;
|
|
582
689
|
sessionId: z.ZodOptional<z.ZodString>;
|
|
583
690
|
}, z.core.$strip>>;
|
|
584
691
|
}, z.core.$strip>;
|
package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-client-protocol.external-connectors-models.schemas.d.ts","sourceRoot":"","sources":["../../../../src/protocols/agent-client-protocol.external-connectors-models.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,yCAAyC,EAC1C,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EACL,uBAAuB,EACvB,oDAAoD,EAEpD,sCAAsC,EACtC,8CAA8C,EAG/C,MAAM,oDAAoD,CAAC;AAoC5D;;;;;;;;GAQG;AACH,oBAAY,8BAA8B;IACxC,kBAAkB,uBAAuB;CAC1C;AAED;;;;;;;;GAQG;AACH,oBAAY,4BAA4B;IACtC,oFAAoF;IACpF,IAAI,SAAS;IACb;;;;;OAKG;IACH,YAAY,iBAAiB;IAC7B,gFAAgF;IAChF,wBAAwB,6BAA6B;CACtD;AAED;;;;;;;GAOG;AACH,oBAAY,0CAA0C;IACpD,cAAc,mBAAmB;IACjC,uBAAuB,4BAA4B;CACpD;AAED
|
|
1
|
+
{"version":3,"file":"agent-client-protocol.external-connectors-models.schemas.d.ts","sourceRoot":"","sources":["../../../../src/protocols/agent-client-protocol.external-connectors-models.schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,10 +99,19 @@ export var AgentClientProtocol_WorkingDirectoryPolicy;
|
|
|
99
99
|
* what lets an application say "no session started from this profile may ever
|
|
100
100
|
* skip the permission gate" independently of what any individual run requests.
|
|
101
101
|
*
|
|
102
|
-
* Ordering is meaningful and increasing: PROMPT_ALWAYS <
|
|
102
|
+
* Ordering is meaningful and increasing over all FIVE members: PROMPT_ALWAYS <
|
|
103
|
+
* AUTO_ACCEPT_READS < AUTO_ACCEPT_EDITS < AUTO_ACCEPT_READS_AND_EDITS <
|
|
103
104
|
* UNRESTRICTED. Compare through {@link agentClientProtocolPermissionCeilingRank}
|
|
104
105
|
* rather than by string, so the ordering has one definition.
|
|
106
|
+
*
|
|
107
|
+
* Read that order as a CLAMP — how much is pre-approved without a human — and never
|
|
108
|
+
* as containment. The ceilings are kind-SETS and are deliberately not nested:
|
|
109
|
+
* AUTO_ACCEPT_EDITS outranks AUTO_ACCEPT_READS and still refuses `fetch`, which is
|
|
110
|
+
* exactly why AUTO_ACCEPT_READS_AND_EDITS had to be added rather than being implied
|
|
111
|
+
* by the higher rank. Each member's own docstring states the set it admits, and the
|
|
112
|
+
* rank function carries the full argument for why containment is the wrong reading.
|
|
105
113
|
*/
|
|
114
|
+
/** @wildo_source:part:start acp.permission-ceiling facet:layer:config facet:audience:app-developer */
|
|
106
115
|
export var AgentClientProtocol_PermissionCeiling;
|
|
107
116
|
(function (AgentClientProtocol_PermissionCeiling) {
|
|
108
117
|
/**
|
|
@@ -171,6 +180,7 @@ export var AgentClientProtocol_PermissionCeiling;
|
|
|
171
180
|
/** No permission gate. Reserve for a disposable or isolated workspace. */
|
|
172
181
|
AgentClientProtocol_PermissionCeiling["UNRESTRICTED"] = "unrestricted";
|
|
173
182
|
})(AgentClientProtocol_PermissionCeiling || (AgentClientProtocol_PermissionCeiling = {}));
|
|
183
|
+
/** @wildo_source:part:end acp.permission-ceiling */
|
|
174
184
|
/**
|
|
175
185
|
* Increasing rank for {@link AgentClientProtocol_PermissionCeiling}; the single ordering definition.
|
|
176
186
|
*
|
|
@@ -204,6 +214,105 @@ export function agentClientProtocolPermissionCeilingRank(ceiling) {
|
|
|
204
214
|
return 4;
|
|
205
215
|
}
|
|
206
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* Whether THIS agent raises `session/request_permission` before it mutates —
|
|
219
|
+
* the one property that decides whether Wildo's in-flight guards can fire at all.
|
|
220
|
+
*
|
|
221
|
+
* # Why a permission ceiling needs this to mean anything
|
|
222
|
+
*
|
|
223
|
+
* Both of Wildo's in-flight controls are enforced in the CLIENT's ANSWER to a
|
|
224
|
+
* permission request: {@link AgentClientProtocol_PermissionCeiling} decides the
|
|
225
|
+
* tool KIND, and the dispatch's location predicate decides the PATHS. Neither is
|
|
226
|
+
* a sandbox, an interposed filesystem, or a syscall filter — they are answers.
|
|
227
|
+
* So an agent that writes without asking is bound by neither, and the ceiling
|
|
228
|
+
* an application authored is a LABEL rather than a guarantee.
|
|
229
|
+
*
|
|
230
|
+
* That is not hypothetical and it is not a fault in the agents. MEASURED with
|
|
231
|
+
* `wildo acp probe`:
|
|
232
|
+
*
|
|
233
|
+
* - Codex (`@agentclientprotocol/codex-acp`, 2026-09-06) raises nothing before
|
|
234
|
+
* an in-workspace write in ANY of its three modes, including with an explicit
|
|
235
|
+
* `approval_policy = "untrusted"`. Its safety model is a SANDBOX, so an
|
|
236
|
+
* in-workspace write is safe by ITS construction and there is nothing to ask
|
|
237
|
+
* about. A different architecture, not a defect.
|
|
238
|
+
* - OpenCode (1.18.27, 2026-09-04/05) does the same under its DEFAULT
|
|
239
|
+
* configuration, and escalates correctly when pointed at a permission
|
|
240
|
+
* configuration file. So for that agent the answer is conditional on
|
|
241
|
+
* something the HOST supplies.
|
|
242
|
+
* - Claude's adapter (`@agentclientprotocol/claude-agent-acp` 0.73.0) raises,
|
|
243
|
+
* and both guards fire.
|
|
244
|
+
*
|
|
245
|
+
* # Why it is DECLARED rather than inferred, and why it is required
|
|
246
|
+
*
|
|
247
|
+
* It cannot be inferred before a run: an agent that never asks and an agent that
|
|
248
|
+
* had nothing to ask about are indistinguishable from an empty decision list, and
|
|
249
|
+
* by the time the list is empty the workspace has already been mutated. The
|
|
250
|
+
* post-run change set remains the authoritative account of what a run touched —
|
|
251
|
+
* this declaration is what lets the framework say, BEFORE the run, whether that
|
|
252
|
+
* change set is the only account there will be.
|
|
253
|
+
*
|
|
254
|
+
* The provider declares it because the provider is the party that ran the probe.
|
|
255
|
+
* It is REQUIRED on the runtime contract for the same reason `modelDelivery` is:
|
|
256
|
+
* this lane has now shipped three safety-relevant fields that were authored,
|
|
257
|
+
* documented and read by nothing (`hostConfigurationInheritance`, the model
|
|
258
|
+
* channel, the provider's inherited environment). An author who cannot ship the
|
|
259
|
+
* gap is better than one who discovers it on a dispatched run.
|
|
260
|
+
*
|
|
261
|
+
* It is a CLAIM, never an alibi. The companion still judges each completed run
|
|
262
|
+
* from that run's OWN permission decisions and change set, so an agent whose
|
|
263
|
+
* behaviour changes between versions cannot keep a stale, reassuring declaration.
|
|
264
|
+
*/
|
|
265
|
+
/** @wildo_source:part:start acp.permission-escalation facet:layer:config facet:audience:app-developer */
|
|
266
|
+
export var AgentClientProtocol_PermissionEscalationBehaviour;
|
|
267
|
+
(function (AgentClientProtocol_PermissionEscalationBehaviour) {
|
|
268
|
+
/**
|
|
269
|
+
* The agent escalates before mutating, so the ceiling and the mutation scope
|
|
270
|
+
* are both enforceable in flight. The only value under which a ceiling
|
|
271
|
+
* narrower than UNRESTRICTED means what it says.
|
|
272
|
+
*/
|
|
273
|
+
AgentClientProtocol_PermissionEscalationBehaviour["RAISES_BEFORE_MUTATION"] = "raises_before_mutation";
|
|
274
|
+
/**
|
|
275
|
+
* The agent escalates ONLY when the host points it at a permission
|
|
276
|
+
* configuration it does not adopt by default.
|
|
277
|
+
*
|
|
278
|
+
* The configuration is therefore not hardening — it is the condition under
|
|
279
|
+
* which the agent may be dispatched with a gate at all, and the variable that
|
|
280
|
+
* carries the pointer is named on the contract so the dispatch can CHECK that
|
|
281
|
+
* a profile supplies it instead of trusting a docstring that says it must.
|
|
282
|
+
*/
|
|
283
|
+
AgentClientProtocol_PermissionEscalationBehaviour["RAISES_ONLY_UNDER_HOST_CONFIGURATION"] = "raises_only_under_host_configuration";
|
|
284
|
+
/**
|
|
285
|
+
* The agent never escalates before mutating, under any configuration this
|
|
286
|
+
* framework can supply. Its own safety model is elsewhere (a sandbox), and
|
|
287
|
+
* Wildo's in-flight guards are inert for it by construction — the post-run
|
|
288
|
+
* change set is the only account of what it touched.
|
|
289
|
+
*/
|
|
290
|
+
AgentClientProtocol_PermissionEscalationBehaviour["NEVER_RAISES"] = "never_raises";
|
|
291
|
+
})(AgentClientProtocol_PermissionEscalationBehaviour || (AgentClientProtocol_PermissionEscalationBehaviour = {}));
|
|
292
|
+
/** @wildo_source:part:end acp.permission-escalation */
|
|
293
|
+
/**
|
|
294
|
+
* Can Wildo's in-flight permission ceiling and mutation-scope predicate fire for
|
|
295
|
+
* this agent, as it will actually be started?
|
|
296
|
+
*
|
|
297
|
+
* The single definition of that question, so the dispatch's refusal, the run's
|
|
298
|
+
* recorded metadata and any operator-facing report cannot disagree about it.
|
|
299
|
+
*
|
|
300
|
+
* `escalationConfigurationSupplied` answers only the conditional member: it is
|
|
301
|
+
* whether the composed child environment will actually carry the pointer the
|
|
302
|
+
* contract names. Deliberately a parameter rather than something this function
|
|
303
|
+
* reads, because the environment is composed by the dispatch and a predicate
|
|
304
|
+
* that guessed at it would be a second, quieter answer.
|
|
305
|
+
*/
|
|
306
|
+
export function agentClientProtocolInFlightGuardsCanFire(behaviour, escalationConfigurationSupplied) {
|
|
307
|
+
switch (behaviour) {
|
|
308
|
+
case AgentClientProtocol_PermissionEscalationBehaviour.RAISES_BEFORE_MUTATION:
|
|
309
|
+
return true;
|
|
310
|
+
case AgentClientProtocol_PermissionEscalationBehaviour.RAISES_ONLY_UNDER_HOST_CONFIGURATION:
|
|
311
|
+
return escalationConfigurationSupplied;
|
|
312
|
+
case AgentClientProtocol_PermissionEscalationBehaviour.NEVER_RAISES:
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
207
316
|
/**
|
|
208
317
|
* How much of the HOST MACHINE's agent configuration a session inherits.
|
|
209
318
|
*
|
|
@@ -220,6 +329,7 @@ export function agentClientProtocolPermissionCeilingRank(ceiling) {
|
|
|
220
329
|
* application teaches the agent to use its framework. What it should not
|
|
221
330
|
* silently absorb is whoever happens to be logged in.
|
|
222
331
|
*/
|
|
332
|
+
/** @wildo_source:part:start acp.host-configuration-inheritance facet:layer:config facet:audience:app-developer */
|
|
223
333
|
export var AgentClientProtocol_HostConfigurationInheritance;
|
|
224
334
|
(function (AgentClientProtocol_HostConfigurationInheritance) {
|
|
225
335
|
/** No filesystem-sourced agent configuration. The prompt is the whole instruction. */
|
|
@@ -238,12 +348,14 @@ export var AgentClientProtocol_HostConfigurationInheritance;
|
|
|
238
348
|
*/
|
|
239
349
|
AgentClientProtocol_HostConfigurationInheritance["HOST_INHERITED"] = "host_inherited";
|
|
240
350
|
})(AgentClientProtocol_HostConfigurationInheritance || (AgentClientProtocol_HostConfigurationInheritance = {}));
|
|
351
|
+
/** @wildo_source:part:end acp.host-configuration-inheritance */
|
|
241
352
|
/**
|
|
242
353
|
* One authored way to start an ACP agent.
|
|
243
354
|
*
|
|
244
355
|
* Mirrors the shape a provider's execution profiles have always had: the
|
|
245
356
|
* spawnable command plus the policy that decides whether it may run at all.
|
|
246
357
|
*/
|
|
358
|
+
/** @wildo_source:part:start acp.execution-profile facet:layer:config facet:audience:app-developer */
|
|
247
359
|
export const AgentClientProtocol_ExecutionProfileSchema = z.object({
|
|
248
360
|
runnerHost: z.enum(AgentClientProtocol_RunnerHost).default(AgentClientProtocol_RunnerHost.BACKEND_SUBPROCESS),
|
|
249
361
|
/**
|
|
@@ -396,6 +508,7 @@ export const AgentClientProtocol_ExecutionProfileSchema = z.object({
|
|
|
396
508
|
});
|
|
397
509
|
}
|
|
398
510
|
});
|
|
511
|
+
/** @wildo_source:part:end acp.execution-profile */
|
|
399
512
|
/**
|
|
400
513
|
* Transport capability metadata for an ACP-speaking provider.
|
|
401
514
|
*
|
|
@@ -663,6 +776,32 @@ export const AgentClientProtocol_ExecutionTransportMetadataSchema = z.object({
|
|
|
663
776
|
* which of the agent's modes that became.
|
|
664
777
|
*/
|
|
665
778
|
sessionModeId: z.string().optional(),
|
|
779
|
+
/**
|
|
780
|
+
* Whether the agent this run started DECLARES that it escalates before
|
|
781
|
+
* mutating, and whether Wildo's in-flight guards could therefore fire.
|
|
782
|
+
*
|
|
783
|
+
* Recorded on the run because the ceiling alone no longer explains the run:
|
|
784
|
+
* `permissionCeiling: PROMPT_ALWAYS` against an agent that never asks and
|
|
785
|
+
* against one that always asks describe two completely different runs, and
|
|
786
|
+
* nothing else in this metadata tells them apart. A later reader looking at a
|
|
787
|
+
* change set needs to know whether anything stood between the agent and it.
|
|
788
|
+
*
|
|
789
|
+
* Optional because the declaration is a provider fact and a run recorded
|
|
790
|
+
* before this field existed genuinely has no answer — absence must not read as
|
|
791
|
+
* `false`, which would assert an unbound run that may have been fully bound.
|
|
792
|
+
*/
|
|
793
|
+
permissionEscalation: z.enum(AgentClientProtocol_PermissionEscalationBehaviour).optional(),
|
|
794
|
+
/**
|
|
795
|
+
* The resolved answer for THIS run, from
|
|
796
|
+
* {@link agentClientProtocolInFlightGuardsCanFire} — the declared behaviour
|
|
797
|
+
* combined with whether the composed environment actually supplied the
|
|
798
|
+
* configuration a conditionally-escalating agent needs.
|
|
799
|
+
*
|
|
800
|
+
* Kept beside the behaviour rather than derived by each reader, because the
|
|
801
|
+
* conditional member cannot be resolved from the behaviour alone and a reader
|
|
802
|
+
* that tried would answer `true` for an agent that was dispatched unconfigured.
|
|
803
|
+
*/
|
|
804
|
+
inFlightPermissionGuardsCanFire: z.boolean().optional(),
|
|
666
805
|
/** The ACP session, retained so a later turn can resume or fork it. */
|
|
667
806
|
sessionId: z.string().optional(),
|
|
668
807
|
});
|