@wildo-ai/external-connectors-models 1.1.4 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/dist/esm/companion-exports.d.ts.map +1 -1
  2. package/dist/esm/core/commons.external-connectors-models.schemas.d.ts +23 -132
  3. package/dist/esm/core/commons.external-connectors-models.schemas.d.ts.map +1 -1
  4. package/dist/esm/core/commons.external-connectors-models.schemas.js +23 -31
  5. package/dist/esm/core/commons.external-connectors-models.schemas.js.map +1 -1
  6. package/dist/esm/core/operation-classification.external-connectors-models.schemas.d.ts.map +1 -1
  7. package/dist/esm/core/operation-classification.external-connectors-models.schemas.js.map +1 -1
  8. package/dist/esm/core/security.external-connectors-models.schemas.d.ts +40 -8
  9. package/dist/esm/core/security.external-connectors-models.schemas.d.ts.map +1 -1
  10. package/dist/esm/core/security.external-connectors-models.schemas.js +61 -14
  11. package/dist/esm/core/security.external-connectors-models.schemas.js.map +1 -1
  12. package/dist/esm/index.d.ts +5 -2
  13. package/dist/esm/index.d.ts.map +1 -1
  14. package/dist/esm/index.js +5 -2
  15. package/dist/esm/index.js.map +1 -1
  16. package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts +78 -163
  17. package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts.map +1 -1
  18. package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js +78 -93
  19. package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js.map +1 -1
  20. package/dist/esm/protocols/billing.standard-interface.schemas.d.ts +258 -13
  21. package/dist/esm/protocols/billing.standard-interface.schemas.d.ts.map +1 -1
  22. package/dist/esm/protocols/billing.standard-interface.schemas.js +41 -0
  23. package/dist/esm/protocols/billing.standard-interface.schemas.js.map +1 -1
  24. package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.d.ts +57 -17
  25. package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.d.ts.map +1 -1
  26. package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.js +26 -7
  27. package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.js.map +1 -1
  28. package/dist/esm/protocols/email-inbound.standard-interface.schemas.d.ts +229 -0
  29. package/dist/esm/protocols/email-inbound.standard-interface.schemas.d.ts.map +1 -0
  30. package/dist/esm/protocols/email-inbound.standard-interface.schemas.js +160 -0
  31. package/dist/esm/protocols/email-inbound.standard-interface.schemas.js.map +1 -0
  32. package/dist/esm/protocols/email.external-connectors-models.schemas.d.ts +1 -56
  33. package/dist/esm/protocols/email.external-connectors-models.schemas.d.ts.map +1 -1
  34. package/dist/esm/protocols/email.external-connectors-models.schemas.js +0 -20
  35. package/dist/esm/protocols/email.external-connectors-models.schemas.js.map +1 -1
  36. package/dist/esm/protocols/email.standard-interface.schemas.d.ts +4 -4
  37. package/dist/esm/protocols/email.standard-interface.schemas.d.ts.map +1 -1
  38. package/dist/esm/protocols/embeddings.external-connectors-models.schemas.d.ts +1 -16
  39. package/dist/esm/protocols/embeddings.external-connectors-models.schemas.d.ts.map +1 -1
  40. package/dist/esm/protocols/embeddings.external-connectors-models.schemas.js +4 -9
  41. package/dist/esm/protocols/embeddings.external-connectors-models.schemas.js.map +1 -1
  42. package/dist/esm/protocols/file-storage.standard-interface.d.ts +179 -0
  43. package/dist/esm/protocols/file-storage.standard-interface.d.ts.map +1 -0
  44. package/dist/esm/protocols/file-storage.standard-interface.js +79 -0
  45. package/dist/esm/protocols/file-storage.standard-interface.js.map +1 -0
  46. package/dist/esm/protocols/frontend.external-connectors-models.schemas.d.ts +6 -13
  47. package/dist/esm/protocols/frontend.external-connectors-models.schemas.d.ts.map +1 -1
  48. package/dist/esm/protocols/frontend.external-connectors-models.schemas.js +0 -9
  49. package/dist/esm/protocols/frontend.external-connectors-models.schemas.js.map +1 -1
  50. package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.d.ts.map +1 -1
  51. package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.js.map +1 -1
  52. package/dist/esm/protocols/hooks.external-connectors-models.schemas.d.ts +20 -16
  53. package/dist/esm/protocols/hooks.external-connectors-models.schemas.d.ts.map +1 -1
  54. package/dist/esm/protocols/hooks.external-connectors-models.schemas.js +12 -9
  55. package/dist/esm/protocols/hooks.external-connectors-models.schemas.js.map +1 -1
  56. package/dist/esm/protocols/image.external-connectors-models.schemas.d.ts +1 -18
  57. package/dist/esm/protocols/image.external-connectors-models.schemas.d.ts.map +1 -1
  58. package/dist/esm/protocols/image.external-connectors-models.schemas.js +1 -7
  59. package/dist/esm/protocols/image.external-connectors-models.schemas.js.map +1 -1
  60. package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts +100 -40
  61. package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts.map +1 -1
  62. package/dist/esm/protocols/llm.external-connectors-models.schemas.js +164 -41
  63. package/dist/esm/protocols/llm.external-connectors-models.schemas.js.map +1 -1
  64. package/dist/esm/protocols/oauth2-provider-assurance.definitions.d.ts +7 -0
  65. package/dist/esm/protocols/oauth2-provider-assurance.definitions.d.ts.map +1 -0
  66. package/dist/esm/protocols/oauth2-provider-assurance.definitions.js +36 -0
  67. package/dist/esm/protocols/oauth2-provider-assurance.definitions.js.map +1 -0
  68. package/dist/esm/protocols/oauth2-provider-assurance.schemas.d.ts +23 -0
  69. package/dist/esm/protocols/oauth2-provider-assurance.schemas.d.ts.map +1 -0
  70. package/dist/esm/protocols/oauth2-provider-assurance.schemas.js +25 -0
  71. package/dist/esm/protocols/oauth2-provider-assurance.schemas.js.map +1 -0
  72. package/dist/esm/protocols/oauth2.external-connectors-models.schemas.d.ts +0 -148
  73. package/dist/esm/protocols/oauth2.external-connectors-models.schemas.d.ts.map +1 -1
  74. package/dist/esm/protocols/oauth2.external-connectors-models.schemas.js +1 -40
  75. package/dist/esm/protocols/oauth2.external-connectors-models.schemas.js.map +1 -1
  76. package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.d.ts +39 -0
  77. package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.d.ts.map +1 -0
  78. package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.js +66 -0
  79. package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.js.map +1 -0
  80. package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts +863 -16
  81. package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts.map +1 -1
  82. package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js +703 -0
  83. package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js.map +1 -1
  84. package/dist/esm/protocols/sms.external-connectors-models.schemas.d.ts +0 -39
  85. package/dist/esm/protocols/sms.external-connectors-models.schemas.d.ts.map +1 -1
  86. package/dist/esm/protocols/sms.external-connectors-models.schemas.js +0 -13
  87. package/dist/esm/protocols/sms.external-connectors-models.schemas.js.map +1 -1
  88. package/dist/esm/protocols/sms.standard-interface.schemas.d.ts +1 -1
  89. package/dist/esm/protocols/sms.standard-interface.schemas.d.ts.map +1 -1
  90. package/dist/esm/protocols/sms.standard-interface.schemas.js.map +1 -1
  91. package/dist/tsconfig.build.tsbuildinfo +1 -1
  92. package/package.json +2 -3
  93. package/dist/esm/core/protocols.external-connectors-models.schemas.d.ts +0 -74
  94. package/dist/esm/core/protocols.external-connectors-models.schemas.d.ts.map +0 -1
  95. package/dist/esm/core/protocols.external-connectors-models.schemas.js +0 -1
  96. package/dist/esm/core/protocols.external-connectors-models.schemas.js.map +0 -1
  97. package/dist/esm/protocols/rest-api.external-connectors-models.schemas.d.ts +0 -37
  98. package/dist/esm/protocols/rest-api.external-connectors-models.schemas.d.ts.map +0 -1
  99. package/dist/esm/protocols/rest-api.external-connectors-models.schemas.js +0 -10
  100. package/dist/esm/protocols/rest-api.external-connectors-models.schemas.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { ExternalProvider_OperationContextSchema, } from "../core/operations.external-connectors-models.schemas.js";
3
- import { APPLICATION_ENVIRONMENT, ExternalProvider_ExchangeProtocol_Configuration_BaseSchema, ExternalProvider_ExchangeProtocol_Kind, ExternalProvider_ExchangeProtocol_Profile_BaseSchema, ExternalProvider_ExchangeProtocol_Status_BaseSchema, } from "../core/commons.external-connectors-models.schemas.js";
3
+ import { APPLICATION_ENVIRONMENT, ExternalProvider_ExchangeProtocol_Configuration_BaseSchema, ExternalProvider_ExchangeProtocol_Kind, } from "../core/commons.external-connectors-models.schemas.js";
4
4
  //===============================================================
5
5
  // Agent Client Protocol (ACP)
6
6
  // --------
@@ -99,17 +99,9 @@ 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 over all FIVE members: PROMPT_ALWAYS <
103
- * AUTO_ACCEPT_READS < AUTO_ACCEPT_EDITS < AUTO_ACCEPT_READS_AND_EDITS <
104
- * UNRESTRICTED. Compare through {@link agentClientProtocolPermissionCeilingRank}
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.
102
+ * Policies describe admitted tool-kind sets, not nested levels. Invocation overrides
103
+ * intersect those sets with the profile: READS and EDITS have an empty intersection.
104
+ * The rank helper is a presentation ordering only and must not select authority.
113
105
  */
114
106
  /** @wildo_source:part:start acp.permission-ceiling facet:layer:config facet:audience:app-developer */
115
107
  export var AgentClientProtocol_PermissionCeiling;
@@ -208,23 +200,11 @@ export var AgentClientProtocol_PermissionCeiling;
208
200
  })(AgentClientProtocol_PermissionCeiling || (AgentClientProtocol_PermissionCeiling = {}));
209
201
  /** @wildo_source:part:end acp.permission-ceiling */
210
202
  /**
211
- * Increasing rank for {@link AgentClientProtocol_PermissionCeiling}; the single ordering definition.
212
- *
213
- * ## It is a CLAMP order, not a subset lattice — and that distinction is load-bearing
214
- *
215
- * Rank answers one question: how much is pre-approved without a human. It is used to LOWER a
216
- * request that asks for more autonomy than its profile allows, never to reason about which
217
- * permissions contain which.
203
+ * Stable presentation order for {@link AgentClientProtocol_PermissionCeiling}.
218
204
  *
219
- * The sets are deliberately NOT nested. {@link AgentClientProtocol_PermissionCeiling.AUTO_ACCEPT_EDITS}
220
- * (rank 2) admits the mutating kinds and still refuses `fetch`, while
221
- * {@link AgentClientProtocol_PermissionCeiling.AUTO_ACCEPT_READS} (rank 1) admits `fetch` and refuses
222
- * every mutating kind. Reading rank as containment would say the higher ceiling must also admit
223
- * `fetch` — and making that true would hand every coding agent network access as a side effect of
224
- * building a research lane. That is a change to the coding lane's posture and it needs its own
225
- * evidence, not a corollary. Clamping still behaves correctly: a coding profile lowered to
226
- * AUTO_ACCEPT_READS may fetch and may not edit, which is exactly what asking for less autonomy in
227
- * the read direction should mean.
205
+ * Never use this rank to authorize or clamp a request. READS and EDITS admit disjoint
206
+ * tool-kind sets; choosing the numerically lower one can grant operations forbidden
207
+ * by the profile. Dispatch computes their intersection instead.
228
208
  */
229
209
  export function agentClientProtocolPermissionCeilingRank(ceiling) {
230
210
  switch (ceiling) {
@@ -240,17 +220,57 @@ export function agentClientProtocolPermissionCeilingRank(ceiling) {
240
220
  return 4;
241
221
  }
242
222
  }
223
+ /**
224
+ * How a coding agent's host-login status command reports "signed in".
225
+ *
226
+ * An ACP agent that is not signed in still completes `initialize` and `session/new`; it fails the
227
+ * first `session/prompt` (Claude's adapter 0.81.1: JSON-RPC `-32000 Authentication required`,
228
+ * reproduced 2026-09-25). So the handshake proves nothing about the login, and a real prompt spends
229
+ * a turn. Every agent's own CLI can answer without either — `claude auth status --json`,
230
+ * `codex login status`, `opencode auth list` — but each answers in its own way, which is this enum.
231
+ */
232
+ export var AgentClientProtocol_HostLoginSignal;
233
+ (function (AgentClientProtocol_HostLoginSignal) {
234
+ /** Signed in exactly when the status command exits 0. */
235
+ AgentClientProtocol_HostLoginSignal["EXIT_CODE_ZERO"] = "exit_code_zero";
236
+ /** Signed in when the command prints JSON whose named field is `true`. */
237
+ AgentClientProtocol_HostLoginSignal["JSON_BOOLEAN_FIELD"] = "json_boolean_field";
238
+ /** Signed in when the command exits 0 and its output does NOT match a pattern (e.g. `0 credentials`). */
239
+ AgentClientProtocol_HostLoginSignal["OUTPUT_EXCLUDES"] = "output_excludes";
240
+ })(AgentClientProtocol_HostLoginSignal || (AgentClientProtocol_HostLoginSignal = {}));
241
+ /**
242
+ * What a host-login probe found for one coding agent.
243
+ *
244
+ * Four states, because the remedies differ: NOT_INSTALLED needs an install, SIGNED_OUT a login, and
245
+ * UNKNOWN (the status command ran and its answer could not be read, or timed out) must never be
246
+ * reported as either — reading it as SIGNED_IN dispatches a run that fails mid-turn, reading it as
247
+ * SIGNED_OUT sends a signed-in operator to log in again.
248
+ */
249
+ export var CodingAgentHostLoginState;
250
+ (function (CodingAgentHostLoginState) {
251
+ CodingAgentHostLoginState["SIGNED_IN"] = "signed_in";
252
+ CodingAgentHostLoginState["SIGNED_OUT"] = "signed_out";
253
+ CodingAgentHostLoginState["NOT_INSTALLED"] = "not_installed";
254
+ CodingAgentHostLoginState["UNKNOWN"] = "unknown";
255
+ })(CodingAgentHostLoginState || (CodingAgentHostLoginState = {}));
256
+ /**
257
+ * How a dispatch refused because the coding agent's operator is not signed in begins — thrown by the
258
+ * engine before an ACP session opens, and recognised by the companion as the HOST's failure (not the
259
+ * task's), so a signed-out host does not spend a task's attempt budget. One constant for both sides.
260
+ */
261
+ export const CODING_AGENT_NOT_SIGNED_IN_MESSAGE_PREFIX = 'The coding agent is not signed in on this host';
243
262
  /**
244
263
  * Whether THIS agent raises `session/request_permission` before it mutates —
245
264
  * the one property that decides whether Wildo's in-flight guards can fire at all.
246
265
  *
247
266
  * # Why a permission ceiling needs this to mean anything
248
267
  *
249
- * Both of Wildo's in-flight controls are enforced in the CLIENT's ANSWER to a
268
+ * For agent-owned I/O, Wildo's in-flight controls are enforced in the CLIENT's ANSWER to a
250
269
  * permission request: {@link AgentClientProtocol_PermissionCeiling} decides the
251
270
  * tool KIND, and the dispatch's location predicate decides the PATHS. Neither is
252
271
  * a sandbox, an interposed filesystem, or a syscall filter — they are answers.
253
- * So an agent that writes without asking is bound by neither, and the ceiling
272
+ * Client-hosted writes independently check both controls. An agent doing its OWN I/O
273
+ * without asking is bound by neither, and the ceiling
254
274
  * an application authored is a LABEL rather than a guarantee.
255
275
  *
256
276
  * That is not hypothetical and it is not a fault in the agents. MEASURED with
@@ -610,51 +630,6 @@ export const AgentClientProtocol_ExecutionProfileSchema = z.object({
610
630
  }
611
631
  });
612
632
  /** @wildo_source:part:end acp.execution-profile */
613
- /**
614
- * Transport capability metadata for an ACP-speaking provider.
615
- *
616
- * Note how little is declared here compared with a one-shot CLI contract, and
617
- * why: ACP agents advertise their own capabilities, session modes and available
618
- * commands during `initialize` and `session/new`. Re-declaring any of that in
619
- * authored configuration would create a second source of truth that drifts the
620
- * first time the agent is upgraded. What remains is what the HOST must know
621
- * before it opens a connection.
622
- */
623
- export const AgentClientProtocol_ProfileSchema = ExternalProvider_ExchangeProtocol_Profile_BaseSchema.extend({
624
- supportedRunnerHosts: z.array(z.enum(AgentClientProtocol_RunnerHost)).default([
625
- AgentClientProtocol_RunnerHost.BACKEND_SUBPROCESS,
626
- ]),
627
- /**
628
- * The ACP major versions this provider is known to speak.
629
- *
630
- * ACP negotiates a single integer at `initialize`: the client offers its
631
- * latest, the agent answers with that or its own. This list is what the
632
- * runner is willing to accept in that answer — an agent that returns anything
633
- * else is refused rather than spoken to hopefully.
634
- */
635
- supportedProtocolVersions: z.array(z.number().int().positive()).min(1).default([1]),
636
- /**
637
- * The semantic operations this transport can execute truthfully.
638
- *
639
- * Kept as strings to avoid a circular runtime import with the operation
640
- * family that consumes this protocol — the same reason the CLI contract this
641
- * replaces did so.
642
- */
643
- supportedOperationKeys: z.array(z.string().min(1)).min(1),
644
- /**
645
- * The semantic models valid on this transport.
646
- *
647
- * The agent also advertises its own model options per session; this list is
648
- * the authored subset an application is willing to select from, and it is
649
- * what a requested model is validated against before a session is opened.
650
- */
651
- supportedModels: z.array(z.string().min(1)).min(1),
652
- supportedAuthModes: z.array(z.enum(AgentClientProtocol_AuthMode)).default([
653
- AgentClientProtocol_AuthMode.NONE,
654
- AgentClientProtocol_AuthMode.HOST_MANAGED,
655
- AgentClientProtocol_AuthMode.SECRET_REF_ENV_INJECTION,
656
- ]),
657
- });
658
633
  export const AgentClientProtocol_ConfigurationSchema = ExternalProvider_ExchangeProtocol_Configuration_BaseSchema.extend({
659
634
  defaultExecutionProfileRef: z.string().optional(),
660
635
  executionProfiles: z.record(z.string(), AgentClientProtocol_ExecutionProfileSchema),
@@ -667,20 +642,6 @@ export const AgentClientProtocol_ConfigurationSchema = ExternalProvider_Exchange
667
642
  });
668
643
  }
669
644
  });
670
- export const AgentClientProtocol_StatusSchema = ExternalProvider_ExchangeProtocol_Status_BaseSchema.extend({
671
- protocolKind: z.literal(ExternalProvider_ExchangeProtocol_Kind.AGENT_CLIENT_PROTOCOL),
672
- /** The version actually agreed at the last `initialize`, when one succeeded. */
673
- negotiatedProtocolVersion: z.number().int().positive().optional(),
674
- /**
675
- * The agent's self-reported identity from its last `initialize` response.
676
- *
677
- * Recorded because the agent is an independently released dependency: when a
678
- * run starts behaving differently, "which build answered" is the first
679
- * question, and it is not answerable from anything Wildo authored.
680
- */
681
- observedAgentName: z.string().optional(),
682
- observedAgentVersion: z.string().optional(),
683
- });
684
645
  //===============================================================
685
646
  // Coding-agent operation family
686
647
  // --------
@@ -806,7 +767,13 @@ export const CodingAgent_SessionSuspensionSchema = z.strictObject({
806
767
  * context — a degradation the caller should surface, not hide.
807
768
  */
808
769
  resumable: z.boolean(),
809
- /** When the parked child process will be closed (ISO timestamp). */
770
+ /**
771
+ * An INFORMATIONAL freshness bound for the question (ISO timestamp), surfaced to the operator —
772
+ * never a reaping deadline. No child process is held open while a run is parked (see
773
+ * `awaitingInputTtlMs`), so there is nothing that closes at this instant. It said "when the parked
774
+ * child process will be closed" until 2026-09-24, contradicting the contract above it, and a host
775
+ * read it that way and aborted answerable questions at boot (#1533).
776
+ */
810
777
  parkedUntil: z.string().optional(),
811
778
  });
812
779
  /**
@@ -945,8 +912,8 @@ export const CodingAgent_RunTaskInputSchema = z.object({
945
912
  /**
946
913
  * The autonomy this particular run asks for.
947
914
  *
948
- * CLAMPED, never honoured blindly: the runner takes the lower of this and the
949
- * execution profile's `permissionCeiling`. Absent means the profile's ceiling
915
+ * INTERSECTED, never honoured blindly: dispatch admits only tool kinds shared by
916
+ * this policy and the execution profile's `permissionCeiling`. Absent means the profile's ceiling
950
917
  * — which is itself the safe default — so omitting it can never widen
951
918
  * authority, only leave it where the profile put it.
952
919
  */
@@ -967,7 +934,8 @@ export const CodingAgent_RunTaskOutputSchema = z.object({
967
934
  finalMessage: z.string(),
968
935
  stopReason: z.enum(CodingAgent_StopReason),
969
936
  /**
970
- * Absolute paths the agent REPORTED touching, from its tool-call stream.
937
+ * Absolute paths the agent REPORTED writing, from its tool-call stream: the locations of its `edit`,
938
+ * `delete` and `move` tool calls, never those of a read or a search (#1805).
971
939
  *
972
940
  * A claim, not a record. An agent reports what its own tooling surfaces, and
973
941
  * nothing prevents it writing a file it never mentions — measured against
@@ -1094,4 +1062,21 @@ providerConfigurations) {
1094
1062
  }
1095
1063
  return { destinations, profilesWithoutDestinations };
1096
1064
  }
1065
+ /**
1066
+ * The ACP tool kinds that WRITE the workspace (#1805) — the one source for "is this tool call a write?".
1067
+ *
1068
+ * A concurrent coding run claims a file only on evidence it wrote it: a writing tool call's locations, or an
1069
+ * ALLOWED permission request for a writing tool. A read or a search reports locations too, and claiming those
1070
+ * committed files a run only read under its name.
1071
+ *
1072
+ * semantic-literal-boundary: ACP's `ToolKind` is the protocol's open string vocabulary, translated here.
1073
+ * spec-cite: ACP v2 schema, `ToolKind` = "read" | "edit" | "delete" | "move" | "search" | "execute" | "think" | "fetch" | "switch_mode" | "other" (types.gen.d.ts, @agentclientprotocol/sdk; protocol docs "Tool Calls — Creating").
1074
+ * `execute` is left out: a shell command may write, but the locations it reports are what it was pointed
1075
+ * at, not what it wrote, and a run that wrote through its shell is exactly the case claims cannot see.
1076
+ */
1077
+ export const ACP_WRITING_TOOL_KINDS = new Set(['edit', 'delete', 'move']);
1078
+ /** Whether an ACP tool kind writes the workspace; an absent kind is no evidence that it does. */
1079
+ export function isWritingAcpToolKind(kind) {
1080
+ return kind !== undefined && ACP_WRITING_TOOL_KINDS.has(kind);
1081
+ }
1097
1082
  //# sourceMappingURL=agent-client-protocol.external-connectors-models.schemas.js.map