@agentclientprotocol/claude-agent-acp 0.100.1-preview.1 → 0.100.1-preview.2

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.
@@ -45,8 +45,9 @@ type InitializeSessionModeParams = {
45
45
  * The permission mode a new Claude query starts in.
46
46
  *
47
47
  * An explicit mode wins. A resume or a load continues in the mode of the last
48
- * user record of the transcript. If that mode is unknown or not available now,
49
- * for example bypass, the session starts in `defaultMode` of the settings.
48
+ * user record of the transcript. If that mode is unknown or absent from the
49
+ * session's mode catalog, use an available `defaultMode` from settings, or
50
+ * `default` when that setting is unavailable too.
50
51
  */
51
52
  export declare function resolveInitialPermissionMode(sources: {
52
53
  explicit?: PermissionMode;
@@ -83,7 +84,6 @@ export declare class SessionModeManager<S extends SessionMode> {
83
84
  private isAutoUnavailable;
84
85
  private isAvailable;
85
86
  private parseMode;
86
- private buildAvailableModes;
87
87
  private trySyncMode;
88
88
  }
89
89
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"session-mode.d.ts","sourceRoot":"","sources":["../src/session-mode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-mode.d.ts","sourceRoot":"","sources":["../src/session-mode.ts"],"names":[],"mappings":"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"}
@@ -16,8 +16,9 @@ const AUTO_MODE_FALLBACK_NOTICE = {
16
16
  * The permission mode a new Claude query starts in.
17
17
  *
18
18
  * An explicit mode wins. A resume or a load continues in the mode of the last
19
- * user record of the transcript. If that mode is unknown or not available now,
20
- * for example bypass, the session starts in `defaultMode` of the settings.
19
+ * user record of the transcript. If that mode is unknown or absent from the
20
+ * session's mode catalog, use an available `defaultMode` from settings, or
21
+ * `default` when that setting is unavailable too.
21
22
  */
22
23
  export function resolveInitialPermissionMode(sources, logger, allowBypass) {
23
24
  if (sources.explicit !== undefined) {
@@ -26,12 +27,19 @@ export function resolveInitialPermissionMode(sources, logger, allowBypass) {
26
27
  if (sources.resumed !== undefined) {
27
28
  let rejected = false;
28
29
  const mode = resolvePermissionMode(sources.resumed, { error: () => (rejected = true) }, allowBypass);
29
- if (!rejected)
30
+ if (!rejected && buildAvailableModes(allowBypass).some((available) => available.id === mode)) {
30
31
  return mode;
32
+ }
31
33
  logger.error(`Ignoring permission mode "${sources.resumed}" of the resumed transcript: ` +
32
34
  `not available in this session.`);
33
35
  }
34
- return resolvePermissionMode(sources.defaultMode, logger, allowBypass);
36
+ const configuredMode = resolvePermissionMode(sources.defaultMode, logger, allowBypass);
37
+ // A rejected transcript mode falls back only to a mode this session can offer.
38
+ if (sources.resumed !== undefined &&
39
+ !buildAvailableModes(allowBypass).some((available) => available.id === configuredMode)) {
40
+ return "default";
41
+ }
42
+ return configuredMode;
35
43
  }
36
44
  /** Owns session-mode policy and the ACP/SDK synchronization it requires. */
37
45
  export class SessionModeManager {
@@ -40,7 +48,7 @@ export class SessionModeManager {
40
48
  this.options = options;
41
49
  }
42
50
  async initialize({ query, requestedMode, currentModelInfo, currentModelId, allowBypass, }) {
43
- const availableModes = this.buildAvailableModes(allowBypass);
51
+ const availableModes = buildAvailableModes(allowBypass, this.options.airClient?.() ?? false);
44
52
  let effectiveMode = requestedMode;
45
53
  let autoModeFallbackWarningPending = false;
46
54
  if (effectiveMode === "auto" &&
@@ -223,49 +231,6 @@ export class SessionModeManager {
223
231
  throw RequestError.invalidParams(undefined, `Invalid Mode: ${modeId}`);
224
232
  }
225
233
  }
226
- buildAvailableModes(allowBypass) {
227
- // Only AIR gets the mode kind.
228
- const air = this.options.airClient?.() ?? false;
229
- const kind = (value) => {
230
- const meta = airOnlyMeta(air, AIR_KIND_KEY, value);
231
- return meta ? { _meta: meta } : {};
232
- };
233
- const modes = [
234
- {
235
- id: "default",
236
- name: "Manual",
237
- description: "Always ask before making changes",
238
- ...kind("standard"),
239
- },
240
- {
241
- id: "acceptEdits",
242
- name: "Accept edits",
243
- description: "Automatically accept all file edits",
244
- ...kind("standard"),
245
- },
246
- {
247
- id: "plan",
248
- name: "Plan",
249
- description: "Create a plan before making changes",
250
- ...kind("plan"),
251
- },
252
- {
253
- id: "auto",
254
- name: "Auto",
255
- description: "Claude handles permission decisions",
256
- ...kind("auto_review"),
257
- },
258
- ];
259
- if (allowBypass) {
260
- modes.push({
261
- id: "bypassPermissions",
262
- name: "Bypass permissions",
263
- description: "Accepts all permissions",
264
- ...kind("full_access"),
265
- });
266
- }
267
- return modes;
268
- }
269
234
  async trySyncMode(query, mode, errorMessage) {
270
235
  try {
271
236
  await query.setPermissionMode(mode);
@@ -275,3 +240,45 @@ export class SessionModeManager {
275
240
  }
276
241
  }
277
242
  }
243
+ function buildAvailableModes(allowBypass, air = false) {
244
+ // Only AIR gets the mode kind.
245
+ const kind = (value) => {
246
+ const meta = airOnlyMeta(air, AIR_KIND_KEY, value);
247
+ return meta ? { _meta: meta } : {};
248
+ };
249
+ const modes = [
250
+ {
251
+ id: "default",
252
+ name: "Manual",
253
+ description: "Always ask before making changes",
254
+ ...kind("standard"),
255
+ },
256
+ {
257
+ id: "acceptEdits",
258
+ name: "Accept edits",
259
+ description: "Automatically accept all file edits",
260
+ ...kind("standard"),
261
+ },
262
+ {
263
+ id: "plan",
264
+ name: "Plan",
265
+ description: "Create a plan before making changes",
266
+ ...kind("plan"),
267
+ },
268
+ {
269
+ id: "auto",
270
+ name: "Auto",
271
+ description: "Claude handles permission decisions",
272
+ ...kind("auto_review"),
273
+ },
274
+ ];
275
+ if (allowBypass) {
276
+ modes.push({
277
+ id: "bypassPermissions",
278
+ name: "Bypass permissions",
279
+ description: "Accepts all permissions",
280
+ ...kind("full_access"),
281
+ });
282
+ }
283
+ return modes;
284
+ }
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.100.1-preview.1",
6
+ "version": "0.100.1-preview.2",
7
7
  "description": "An ACP-compatible coding agent powered by the Claude Agent SDK (TypeScript)",
8
8
  "main": "dist/lib.js",
9
9
  "types": "dist/lib.d.ts",