@openclaw/copilot 2026.7.1-beta.2 → 2026.7.1-beta.5

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.
@@ -1,4 +1,4 @@
1
- import { a as resolveCopilotAuth, i as createCopilotByokAuth, n as resolveCopilotProvider, r as createCopilotByokProxy } from "./harness-B9xB4LpE.js";
1
+ import { a as resolveCopilotAuth, i as createCopilotByokAuth, n as resolveCopilotProvider, r as createCopilotByokProxy } from "./harness-BQhGzc1Z.js";
2
2
  import { applyEmbeddedAttemptToolsAllow, awaitAgentEndSideEffects, buildAgentHarnessUserInputAnswers, buildAgentHookContextChannelFields, buildEmbeddedAttemptToolRunContext, clearActiveEmbeddedRun, deliverAgentHarnessUserInputPrompt, detectAndLoadAgentHarnessPromptImages, embeddedAgentLog, extractToolErrorMessage, getModelProviderRequestTransport, getPluginToolMeta, isSubagentSessionKey, isToolResultError, resolveAgentHarnessBeforePromptBuildResult, resolveAttemptFsWorkspaceOnly, resolveAttemptSpawnWorkspaceDir, resolveBootstrapContextForRun, resolveCompactionTimeoutMs, resolveEmbeddedAttemptToolConstructionPlan, resolveModelAuthMode, resolveSandboxContext, resolveSessionAgentIds, resolveUserPath, runAgentEndSideEffects, runAgentHarnessAfterCompactionHook, runAgentHarnessAfterToolCallHook, runAgentHarnessBeforeCompactionHook, runAgentHarnessBeforeMessageWriteHook, runAgentHarnessLlmInputHook, runAgentHarnessLlmOutputHook, sanitizeToolResult, setActiveEmbeddedRun } from "openclaw/plugin-sdk/agent-harness-runtime";
3
3
  import { createHash } from "node:crypto";
4
4
  import path from "node:path";
@@ -42,9 +42,9 @@ function createInfiniteSessionConfig(options) {
42
42
  * assistant + toolResult) into the OpenClaw transcript via the same
43
43
  * plugin-sdk primitives that the codex extension uses
44
44
  * (extensions/codex/src/app-server/transcript-mirror.ts). Both writers
45
- * cooperate via idempotency-key dedupe: each mirrored entry carries a
46
- * stable `${idempotencyScope}:${identity}` key, and we skip any key
47
- * already present in the transcript on disk before appending. Both
45
+ * cooperate via idempotency-key dedupe: user entries retain a gateway
46
+ * turn key when present; other entries use `${idempotencyScope}:${identity}`.
47
+ * We skip any key already present in the transcript on disk. Both
48
48
  * attempt-execution's untagged entries (no idempotencyKey) and our
49
49
  * tagged mirror entries can coexist; attempt-execution dedupes its own
50
50
  * final-assistant append via `embeddedAssistantGapFill` content match.
@@ -107,7 +107,8 @@ async function mirrorCopilotTranscript(params) {
107
107
  const existingIdempotencyKeys = readTranscriptIdempotencyKeys(await transcript.readEvents());
108
108
  for (const message of messages) {
109
109
  const dedupeIdentity = buildMirrorDedupeIdentity(message);
110
- const idempotencyKey = params.idempotencyScope ? `${params.idempotencyScope}:${dedupeIdentity}` : void 0;
110
+ const sourceIdempotencyKey = message.idempotencyKey;
111
+ const idempotencyKey = (message.role === "user" && typeof sourceIdempotencyKey === "string" && sourceIdempotencyKey.trim() ? sourceIdempotencyKey.trim() : void 0) ?? (params.idempotencyScope ? `${params.idempotencyScope}:${dedupeIdentity}` : void 0);
111
112
  if (idempotencyKey && existingIdempotencyKeys.has(idempotencyKey)) continue;
112
113
  const nextMessage = runAgentHarnessBeforeMessageWriteHook({
113
114
  message: {
@@ -756,7 +757,8 @@ var CopilotNativeSubagentTaskMirror = class {
756
757
  }
757
758
  const existing = this.runIdByToolCallId.get(event.data.toolCallId);
758
759
  if (existing) return existing;
759
- return `${COPILOT_NATIVE_SUBAGENT_RUN_ID_PREFIX}${agentId || event.data.toolCallId.trim()}`;
760
+ const identity = agentId || event.data.toolCallId.trim();
761
+ return `${COPILOT_NATIVE_SUBAGENT_RUN_ID_PREFIX}${identity}`;
760
762
  }
761
763
  };
762
764
  function buildCompletionSummary(event) {
@@ -847,7 +849,7 @@ function decideReplayAction(input) {
847
849
  downgradedFromResume: false
848
850
  };
849
851
  }
850
- const MISSING_SESSION_CODES = new Set([
852
+ const MISSING_SESSION_CODES = /* @__PURE__ */ new Set([
851
853
  "SESSION_NOT_FOUND",
852
854
  "session_not_found",
853
855
  "NotFound",
@@ -941,7 +943,7 @@ function computeReplayMetadata(input) {
941
943
  replaySafe: !(priorReplayInvalid || downgraded || recovered || hadPotentialSideEffects)
942
944
  };
943
945
  }
944
- const COPILOT_REPLAY_SAFE_READ_ONLY_TOOL_NAMES = new Set([
946
+ const COPILOT_REPLAY_SAFE_READ_ONLY_TOOL_NAMES = /* @__PURE__ */ new Set([
945
947
  "get",
946
948
  "file_read",
947
949
  "glob",
@@ -972,13 +974,13 @@ function isReplaySafeReadOnlyToolName(toolName) {
972
974
  }
973
975
  //#endregion
974
976
  //#region extensions/copilot/src/tool-bridge.ts
975
- const SUPPORTED_TOOL_PROVIDERS = new Set(["github-copilot"]);
976
- const BASE_COPILOT_CODING_TOOL_NAMES = new Set([
977
+ const SUPPORTED_TOOL_PROVIDERS = /* @__PURE__ */ new Set(["github-copilot"]);
978
+ const BASE_COPILOT_CODING_TOOL_NAMES = /* @__PURE__ */ new Set([
977
979
  "edit",
978
980
  "read",
979
981
  "write"
980
982
  ]);
981
- const SHELL_COPILOT_CODING_TOOL_NAMES = new Set([
983
+ const SHELL_COPILOT_CODING_TOOL_NAMES = /* @__PURE__ */ new Set([
982
984
  "apply_patch",
983
985
  "exec",
984
986
  "process"
@@ -1023,6 +1025,8 @@ async function createCopilotToolBridge(input) {
1023
1025
  executeTool: (toolParams) => executeCatalogTool(input, toolParams),
1024
1026
  forceMessageTool: shouldForceCopilotMessageTool(attemptParams),
1025
1027
  isRawModelRun: isCopilotRawModelRun(attemptParams),
1028
+ modelId: input.modelId,
1029
+ modelProvider: input.modelProvider,
1026
1030
  modelToolsEnabled: true,
1027
1031
  prompt: attemptParams.prompt,
1028
1032
  runId: attemptParams.runId,
@@ -1044,7 +1048,7 @@ async function createCopilotToolBridge(input) {
1044
1048
  }
1045
1049
  if (!Array.isArray(sourceTools)) throw new Error("[copilot-tool-bridge] createOpenClawCodingTools must return an array of tools");
1046
1050
  const allowedSourceTools = filterCopilotToolsForAllowlist(sourceTools, toolSurfaceRuntime.runtimeToolAllowlist);
1047
- const filteredTools = filterCopilotToolsForAllowlist(filterCopilotToolsForConstructionPlan(toolSurfaceRuntime.compactTools(allowedSourceTools).tools, effectiveToolPlan.codingToolConstructionPlan, { preserveToolNames: toolSurfaceRuntime.runtimeToolAllowlist }), toolSurfaceRuntime.runtimeToolAllowlist);
1051
+ const filteredTools = filterCopilotToolsForAllowlist(filterCopilotToolsForConstructionPlan(toolSurfaceRuntime.compactTools(allowedSourceTools, { localModelLeanApplied: true }).tools, effectiveToolPlan.codingToolConstructionPlan, { preserveToolNames: toolSurfaceRuntime.runtimeToolAllowlist }), toolSurfaceRuntime.runtimeToolAllowlist);
1048
1052
  const duplicateNames = findDuplicateToolNames(filteredTools);
1049
1053
  if (duplicateNames.length > 0) throw new Error(`[copilot-tool-bridge] duplicate tool names: ${duplicateNames.join(", ")}`);
1050
1054
  return {
@@ -1545,8 +1549,8 @@ function isUnsafeDisplayCodePoint(codePoint) {
1545
1549
  }
1546
1550
  //#endregion
1547
1551
  //#region extensions/copilot/src/workspace-bootstrap.ts
1548
- const COPILOT_NATIVE_PROJECT_DOC_BASENAMES = new Set(["agents.md"]);
1549
- const COPILOT_BOOTSTRAP_CONTEXT_ORDER = new Map([
1552
+ const COPILOT_NATIVE_PROJECT_DOC_BASENAMES = /* @__PURE__ */ new Set(["agents.md"]);
1553
+ const COPILOT_BOOTSTRAP_CONTEXT_ORDER = /* @__PURE__ */ new Map([
1550
1554
  ["soul.md", 10],
1551
1555
  ["identity.md", 20],
1552
1556
  ["heartbeat.md", 30],
@@ -2221,14 +2225,23 @@ async function runCopilotAttempt(params, deps) {
2221
2225
  });
2222
2226
  const syntheticUserText = readString(input.transcriptPrompt) ?? readString(input.prompt);
2223
2227
  const tailUserText = readTailUserText(messages);
2228
+ const tailUserIndex = messages.findLastIndex((message) => message.role === "user");
2229
+ const currentTurnMessages = messages.map((message, index) => {
2230
+ if (syntheticUserText !== tailUserText || index !== tailUserIndex) return message;
2231
+ return attachCopilotMirrorIdentity({
2232
+ ...message,
2233
+ idempotencyKey: `${input.runId}:user`
2234
+ }, `${input.runId}:prompt`);
2235
+ });
2224
2236
  const syntheticUser = syntheticUserText && syntheticUserText !== tailUserText ? attachCopilotMirrorIdentity({
2225
2237
  role: "user",
2226
2238
  content: syntheticUserText,
2227
- timestamp: now()
2239
+ timestamp: now(),
2240
+ idempotencyKey: `${input.runId}:user`
2228
2241
  }, `${input.runId}:prompt`) : void 0;
2229
2242
  const taggedLastAssistant = lastAssistant ? attachCopilotMirrorIdentity(lastAssistant, `${input.runId}:assistant:final`) : void 0;
2230
2243
  const messagesSnapshot = [
2231
- ...messages,
2244
+ ...currentTurnMessages,
2232
2245
  ...syntheticUser ? [syntheticUser] : [],
2233
2246
  ...taggedLastAssistant ? [taggedLastAssistant] : []
2234
2247
  ];
@@ -2376,7 +2389,7 @@ function createSessionConfig(params, sdkModelId, sdkTools, resolvedAuth, resolve
2376
2389
  };
2377
2390
  }
2378
2391
  function buildCopilotAvailableTools(sdkTools) {
2379
- return [...new Set([...sdkTools.map((tool) => tool.name), ...COPILOT_ASK_USER_AVAILABLE_TOOLS])];
2392
+ return [.../* @__PURE__ */ new Set([...sdkTools.map((tool) => tool.name), ...COPILOT_ASK_USER_AVAILABLE_TOOLS])];
2380
2393
  }
2381
2394
  async function createMessageOptions(params, context) {
2382
2395
  const attachments = createPromptImageAttachments(await resolvePromptImages(params, context));
@@ -216,6 +216,7 @@ async function createCopilotByokProxy(resolvedProvider) {
216
216
  const targetPathPrefix = trimTrailingSlash(targetBaseUrl.pathname);
217
217
  const proxyPathPrefix = `/${nonce}${targetPathPrefix}`;
218
218
  const acceptsAzureSdkPaths = providerConfig.type === "azure";
219
+ const upstreamBearerAuthorization = resolveUpstreamBearerAuthorization(providerConfig);
219
220
  const activeFetches = /* @__PURE__ */ new Set();
220
221
  const server = createServer((req, res) => {
221
222
  handleProxyRequest(req, res, {
@@ -223,7 +224,8 @@ async function createCopilotByokProxy(resolvedProvider) {
223
224
  activeFetches,
224
225
  proxyPathPrefix,
225
226
  targetBaseUrl,
226
- targetPathPrefix
227
+ targetPathPrefix,
228
+ upstreamBearerAuthorization
227
229
  });
228
230
  });
229
231
  await new Promise((resolve, reject) => {
@@ -252,6 +254,7 @@ async function createCopilotByokProxy(resolvedProvider) {
252
254
  for (const controller of activeFetches) controller.abort();
253
255
  await new Promise((resolve) => {
254
256
  server.close(() => resolve());
257
+ server.closeAllConnections();
255
258
  });
256
259
  }
257
260
  };
@@ -266,6 +269,7 @@ async function handleProxyRequest(req, res, params) {
266
269
  if (!res.writableEnded) abortUpstream();
267
270
  });
268
271
  try {
272
+ const canInjectBearerAuthorization = isNonceProtectedProxyRequest(req, params.proxyPathPrefix);
269
273
  const url = resolveTargetUrl(req, params);
270
274
  if (!url) {
271
275
  res.writeHead(404);
@@ -277,7 +281,7 @@ async function handleProxyRequest(req, res, params) {
277
281
  url: url.toString(),
278
282
  init: {
279
283
  method: req.method,
280
- headers: normalizeProxyRequestHeaders(req.headers),
284
+ headers: buildProxyRequestHeaders(req.headers, { upstreamBearerAuthorization: canInjectBearerAuthorization ? params.upstreamBearerAuthorization : void 0 }),
281
285
  signal: upstreamAbort.signal,
282
286
  ...body ? { body: toFetchBody(body) } : {}
283
287
  },
@@ -322,6 +326,10 @@ function resolveDirectTargetUrl(incomingUrl, targetBaseUrl) {
322
326
  function isAzureSdkProxyPath(pathname) {
323
327
  return pathname === "/openai" || pathname.startsWith("/openai/");
324
328
  }
329
+ function isNonceProtectedProxyRequest(req, proxyPathPrefix) {
330
+ const incomingUrl = new URL(req.url ?? "/", `http://${LOOPBACK_HOST}`);
331
+ return incomingUrl.pathname === proxyPathPrefix || incomingUrl.pathname.startsWith(`${proxyPathPrefix}/`);
332
+ }
325
333
  async function readBody(req) {
326
334
  const chunks = [];
327
335
  for await (const chunk of req) chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
@@ -342,6 +350,15 @@ function normalizeProxyRequestHeaders(headers) {
342
350
  out["accept-encoding"] = "identity";
343
351
  return out;
344
352
  }
353
+ function buildProxyRequestHeaders(headers, params) {
354
+ const out = normalizeProxyRequestHeaders(headers);
355
+ if (params.upstreamBearerAuthorization && !hasHeader(out, "authorization")) out["authorization"] = params.upstreamBearerAuthorization;
356
+ return out;
357
+ }
358
+ function resolveUpstreamBearerAuthorization(providerConfig) {
359
+ const bearerToken = providerConfig.bearerToken?.trim();
360
+ return bearerToken ? `Bearer ${bearerToken}` : void 0;
361
+ }
345
362
  function normalizeProxyResponseHeaders(headers) {
346
363
  const out = {};
347
364
  headers.forEach((value, key) => {
@@ -353,6 +370,9 @@ function normalizeHeaderValue(value) {
353
370
  if (value === void 0) return;
354
371
  return Array.isArray(value) ? value.join(", ") : String(value);
355
372
  }
373
+ function hasHeader(headers, target) {
374
+ return Object.keys(headers).some((key) => key.toLowerCase() === target);
375
+ }
356
376
  function isHopByHopHeader(key) {
357
377
  switch (key.toLowerCase()) {
358
378
  case "connection":
@@ -383,7 +403,7 @@ function trimTrailingSlash(pathname) {
383
403
  const COPILOT_BYOK_PROVIDER_ERROR = "[copilot-attempt] BYOK requires an OpenAI-compatible or Anthropic model api and a non-empty baseUrl";
384
404
  const COPILOT_BYOK_TRANSPORT_POLICY_ERROR = "[copilot-attempt] BYOK does not support OpenClaw provider request proxy, TLS, or private-network policy overrides";
385
405
  const COPILOT_BYOK_ENDPOINT_POLICY_ERROR = "[copilot-attempt] BYOK endpoint is blocked by OpenClaw SSRF policy";
386
- const CREDENTIAL_QUERY_PARAM_NAMES = new Set([
406
+ const CREDENTIAL_QUERY_PARAM_NAMES = /* @__PURE__ */ new Set([
387
407
  "accesstoken",
388
408
  "appsecret",
389
409
  "auth",
@@ -573,7 +593,7 @@ function resolveProviderHeaders(headers) {
573
593
  }
574
594
  //#endregion
575
595
  //#region extensions/copilot/harness.ts
576
- const COPILOT_PROVIDER_IDS = new Set(["github-copilot"]);
596
+ const COPILOT_PROVIDER_IDS = /* @__PURE__ */ new Set(["github-copilot"]);
577
597
  function sessionAuthFields(auth) {
578
598
  return auth.authMode === "gitHubToken" || auth.authMode === "byok" ? {
579
599
  authMode: auth.authMode,
@@ -800,7 +820,7 @@ function createCopilotAgentHarness(options) {
800
820
  async function getPool() {
801
821
  if (options?.pool) return options.pool;
802
822
  if (!poolPromise) poolPromise = (async () => {
803
- const { createCopilotClientPool } = await import("./runtime-Bo_ajDXI.js");
823
+ const { createCopilotClientPool } = await import("./runtime-C__LHHs3.js");
804
824
  createdPool = createCopilotClientPool(options?.poolOptions);
805
825
  return createdPool;
806
826
  })();
@@ -874,7 +894,7 @@ function createCopilotAgentHarness(options) {
874
894
  async runAttempt(params) {
875
895
  const attemptPromise = (async () => {
876
896
  if (disposed) throw new Error("[copilot] harness has been disposed; cannot start new attempts");
877
- const { resolvePoolAcquire, runCopilotAttempt } = await import("./attempt-DIieBZcc.js");
897
+ const { resolvePoolAcquire, runCopilotAttempt } = await import("./attempt-D6MSc00N.js");
878
898
  if (disposed) throw new Error("[copilot] harness was disposed while starting an attempt");
879
899
  const pool = await getPool();
880
900
  if (disposed) throw new Error("[copilot] harness was disposed while starting an attempt");
@@ -990,7 +1010,7 @@ function createCopilotAgentHarness(options) {
990
1010
  };
991
1011
  const tracked = trackedSessions.get(openclawSessionId);
992
1012
  const currentCompactKey = computeSessionCompactKey(params);
993
- const { resolvePoolAcquire } = await import("./attempt-DIieBZcc.js");
1013
+ const { resolvePoolAcquire } = await import("./attempt-D6MSc00N.js");
994
1014
  let resolvedPoolAcquire;
995
1015
  let currentAuth;
996
1016
  try {
package/dist/harness.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as createCopilotAgentHarness } from "./harness-B9xB4LpE.js";
1
+ import { t as createCopilotAgentHarness } from "./harness-BQhGzc1Z.js";
2
2
  export { createCopilotAgentHarness };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as createCopilotAgentHarness } from "./harness-B9xB4LpE.js";
1
+ import { t as createCopilotAgentHarness } from "./harness-BQhGzc1Z.js";
2
2
  import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
3
3
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  //#region extensions/copilot/index.ts
@@ -7,7 +7,7 @@ import { resolveStateDir } from "openclaw/plugin-sdk/state-paths";
7
7
  function resolveCopilotSdkFallbackDir(env = process.env) {
8
8
  return path.join(resolveStateDir(env), "npm-runtime", "copilot");
9
9
  }
10
- const COPILOT_SDK_SPEC = "@github/copilot-sdk@1.0.0-beta.9";
10
+ const COPILOT_SDK_SPEC = "@github/copilot-sdk@1.0.5";
11
11
  let cached;
12
12
  async function loadCopilotSdk(options = {}) {
13
13
  const useCache = options.cache !== false;
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@openclaw/copilot",
3
- "version": "2026.7.1-beta.2",
3
+ "version": "2026.7.1-beta.5",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@openclaw/copilot",
9
- "version": "2026.7.1-beta.2",
9
+ "version": "2026.7.1-beta.5",
10
10
  "dependencies": {
11
- "@github/copilot-sdk": "1.0.0-beta.9"
11
+ "@github/copilot-sdk": "1.0.5"
12
12
  }
13
13
  },
14
14
  "node_modules/@github/copilot": {
15
- "version": "1.0.55",
16
- "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.55.tgz",
17
- "integrity": "sha512-wqzI0L7krORW6jDAQPx7VnInka5BYN5yVgu+dpUK4w8xP5RgnOBa6kRoXpydj/9O1ufs0k6RKRtQjsVLp52TRw==",
15
+ "version": "1.0.68",
16
+ "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.68.tgz",
17
+ "integrity": "sha512-2VPcTlW0RAEsfeS0Ma2ICCkfXgpxy3NL7+SReR8gzvEEPiokSRf0k5JBPlgMbBEFvocSRcJ01S8KvBm84Dw+Fw==",
18
18
  "license": "SEE LICENSE IN LICENSE.md",
19
19
  "dependencies": {
20
20
  "detect-libc": "^2.1.2"
@@ -23,20 +23,20 @@
23
23
  "copilot": "npm-loader.js"
24
24
  },
25
25
  "optionalDependencies": {
26
- "@github/copilot-darwin-arm64": "1.0.55",
27
- "@github/copilot-darwin-x64": "1.0.55",
28
- "@github/copilot-linux-arm64": "1.0.55",
29
- "@github/copilot-linux-x64": "1.0.55",
30
- "@github/copilot-linuxmusl-arm64": "1.0.55",
31
- "@github/copilot-linuxmusl-x64": "1.0.55",
32
- "@github/copilot-win32-arm64": "1.0.55",
33
- "@github/copilot-win32-x64": "1.0.55"
26
+ "@github/copilot-darwin-arm64": "1.0.68",
27
+ "@github/copilot-darwin-x64": "1.0.68",
28
+ "@github/copilot-linux-arm64": "1.0.68",
29
+ "@github/copilot-linux-x64": "1.0.68",
30
+ "@github/copilot-linuxmusl-arm64": "1.0.68",
31
+ "@github/copilot-linuxmusl-x64": "1.0.68",
32
+ "@github/copilot-win32-arm64": "1.0.68",
33
+ "@github/copilot-win32-x64": "1.0.68"
34
34
  }
35
35
  },
36
36
  "node_modules/@github/copilot-darwin-arm64": {
37
- "version": "1.0.55",
38
- "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.55.tgz",
39
- "integrity": "sha512-v59pOpA7YO8j/lpDU/1E8l1Ag0hd26hIiEzTNbzqKd7tJpvhN0XTDWDCink50wXL656XIXt8lD8i8sGeD6yPfA==",
37
+ "version": "1.0.68",
38
+ "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.68.tgz",
39
+ "integrity": "sha512-0G26AL9dlrwTa5IRTxPEnkX6Kz20CuetIwXzABmWwiXYcsR9rswM/NYICR3k53TOa0zL7aqFPnl98CW7J5XbZw==",
40
40
  "cpu": [
41
41
  "arm64"
42
42
  ],
@@ -50,9 +50,9 @@
50
50
  }
51
51
  },
52
52
  "node_modules/@github/copilot-darwin-x64": {
53
- "version": "1.0.55",
54
- "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.55.tgz",
55
- "integrity": "sha512-XrJ9ent/9ogLk8yNp3TMsNVW0qTRDlkw/b34VnTgbAkJCaI3UVqaqpFn60Laa6J5mOPW0/JeKIkkva+7IJdqpQ==",
53
+ "version": "1.0.68",
54
+ "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.68.tgz",
55
+ "integrity": "sha512-RoClWH4CPH19pv5jrR0E6pBU6ljgrzL7idb7tV2pPtMYGTuwqW//XrIEE4n/5NVZmhzEiVBeq04THzOBeV493A==",
56
56
  "cpu": [
57
57
  "x64"
58
58
  ],
@@ -66,9 +66,9 @@
66
66
  }
67
67
  },
68
68
  "node_modules/@github/copilot-linux-arm64": {
69
- "version": "1.0.55",
70
- "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.55.tgz",
71
- "integrity": "sha512-5Q46Q72/l/U8KQRcBwYjzFPNXBCPG177FTmjEVOAH0qk7w58fMUDBEpnf9n1IpxYJDWQJ5BFGtLdfYgVVtkevw==",
69
+ "version": "1.0.68",
70
+ "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.68.tgz",
71
+ "integrity": "sha512-SXSOz/2xPeUM/ndKypBiQv+QGYaEM7oGytl1i+Yx4tJnOoIwLkkTmIaWUbBNn0n5DTEjUcWyDqHzxxo/42FKRQ==",
72
72
  "cpu": [
73
73
  "arm64"
74
74
  ],
@@ -82,9 +82,9 @@
82
82
  }
83
83
  },
84
84
  "node_modules/@github/copilot-linux-x64": {
85
- "version": "1.0.55",
86
- "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.55.tgz",
87
- "integrity": "sha512-KWmMCDmKJivvOyDAAe5K8r7uSlVq8aZCh20VfrVXsc4bckO6KjXY/TOagrdBNqkk5rh8v63ghBbxFdWIOvEJRA==",
85
+ "version": "1.0.68",
86
+ "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.68.tgz",
87
+ "integrity": "sha512-YdG1chniWyps7XEJ2YHUOJkcOc6BpDQZby/zOKCVdswzRXx7d3WiZ2P9lfDimBBmXXJEJ81Fqhv2ZK5eOmGlUw==",
88
88
  "cpu": [
89
89
  "x64"
90
90
  ],
@@ -98,9 +98,9 @@
98
98
  }
99
99
  },
100
100
  "node_modules/@github/copilot-linuxmusl-arm64": {
101
- "version": "1.0.55",
102
- "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.55.tgz",
103
- "integrity": "sha512-Jb5ug9Ic1pzxB2ZT1xoR8b3Ea1xnvCa4h8cBque51+TevXe6QF98vAfSUIwLe4xu+K6JKhiKEA0SD3w29Z74eA==",
101
+ "version": "1.0.68",
102
+ "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.68.tgz",
103
+ "integrity": "sha512-LTYZFOHpeLg4rCtsq3A/LMZxxRKFcCLmhnt8F7ovNYLNDJMkh3xdYanoXP0C0PO3uyUMiNJ+p5YXhZiBuo2yfw==",
104
104
  "cpu": [
105
105
  "arm64"
106
106
  ],
@@ -114,9 +114,9 @@
114
114
  }
115
115
  },
116
116
  "node_modules/@github/copilot-linuxmusl-x64": {
117
- "version": "1.0.55",
118
- "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.55.tgz",
119
- "integrity": "sha512-qMGIjHxKmW9q26EpoaNKWpmEVGyL/IM8ThVkh7yolDzv9lECFudPzT5yLX7f+VIiF6qWQlrQyzmamp7/fNQ2Zg==",
117
+ "version": "1.0.68",
118
+ "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.68.tgz",
119
+ "integrity": "sha512-oOMXZ9HPJAJaKSrXZIYuond4uOiUkK1uRhVPI3Cs74n7uEVKPWpNlTN+j/O754dnBa1+HJcuZSDMulTbnOgirg==",
120
120
  "cpu": [
121
121
  "x64"
122
122
  ],
@@ -130,23 +130,23 @@
130
130
  }
131
131
  },
132
132
  "node_modules/@github/copilot-sdk": {
133
- "version": "1.0.0-beta.9",
134
- "resolved": "https://registry.npmjs.org/@github/copilot-sdk/-/copilot-sdk-1.0.0-beta.9.tgz",
135
- "integrity": "sha512-D4yiGL4/faFCjL7bozhX7bgxt/x1wp2LZ2p9Tw+xrA5hbcLh5Be5kPen+bFA8NbVfgt1G2djDYFZlrZjXXmcBw==",
133
+ "version": "1.0.5",
134
+ "resolved": "https://registry.npmjs.org/@github/copilot-sdk/-/copilot-sdk-1.0.5.tgz",
135
+ "integrity": "sha512-N6Yk2DcpM9orYXWGBcQs5R0FdiVYrCn7UHQ206cUkfJengKYjgcd3f78BvVB6Dot3j0TvO04FnQ85K9/kbRRag==",
136
136
  "license": "MIT",
137
137
  "dependencies": {
138
- "@github/copilot": "^1.0.55-5",
138
+ "@github/copilot": "^1.0.67",
139
139
  "vscode-jsonrpc": "^8.2.1",
140
140
  "zod": "^4.3.6"
141
141
  },
142
142
  "engines": {
143
- "node": ">=20.0.0"
143
+ "node": "^20.19.0 || >=22.12.0"
144
144
  }
145
145
  },
146
146
  "node_modules/@github/copilot-win32-arm64": {
147
- "version": "1.0.55",
148
- "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.55.tgz",
149
- "integrity": "sha512-TO4EJ8it6Qki7wMKYHqGUEDYmB0EAToy+pE5++OpydB6FijyQ31+/XwjvdnEFkuB4ZgPqu/6Y8hxMKucl2+FYg==",
147
+ "version": "1.0.68",
148
+ "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.68.tgz",
149
+ "integrity": "sha512-ZDqpJMP9Y5vqwvRxnIvZrVl8ibx/P66m3JTXQuzv6pitq7rkMEuNKscZ7cjJYN4N+BCOF5++5LKw8O1WHzXAAA==",
150
150
  "cpu": [
151
151
  "arm64"
152
152
  ],
@@ -160,9 +160,9 @@
160
160
  }
161
161
  },
162
162
  "node_modules/@github/copilot-win32-x64": {
163
- "version": "1.0.55",
164
- "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.55.tgz",
165
- "integrity": "sha512-TBMiSZMz8Dhx79JeSEM+7ONGxR5NmxfiDUdySo6thVbRmjS9D8msyAP8ucTsbLBJcTFeb7vsaeObD/ujYQgDtA==",
163
+ "version": "1.0.68",
164
+ "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.68.tgz",
165
+ "integrity": "sha512-eplj/Y2B+amMLJ37oNE6G8gx85j8ucAuJz+CjzpzprNiBUq45lFL8ukGeDtaLMRvIeYAEDYdz5yUzu2XtCE7mA==",
166
166
  "cpu": [
167
167
  "x64"
168
168
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/copilot",
3
- "version": "2026.7.1-beta.2",
3
+ "version": "2026.7.1-beta.5",
4
4
  "description": "OpenClaw GitHub Copilot agent runtime plugin (registers a `github-copilot` AgentHarness backed by @github/copilot-sdk over JSON-RPC to the GitHub Copilot CLI)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,10 +8,10 @@
8
8
  },
9
9
  "type": "module",
10
10
  "dependencies": {
11
- "@github/copilot-sdk": "1.0.0-beta.9"
11
+ "@github/copilot-sdk": "1.0.5"
12
12
  },
13
13
  "devDependencies": {
14
- "@github/copilot": "1.0.55",
14
+ "@github/copilot": "1.0.68",
15
15
  "@openclaw/plugin-sdk": "workspace:*"
16
16
  },
17
17
  "openclaw": {
@@ -25,10 +25,10 @@
25
25
  "minHostVersion": ">=2026.5.28"
26
26
  },
27
27
  "compat": {
28
- "pluginApi": ">=2026.7.1-beta.2"
28
+ "pluginApi": ">=2026.7.1-beta.5"
29
29
  },
30
30
  "build": {
31
- "openclawVersion": "2026.7.1-beta.2",
31
+ "openclawVersion": "2026.7.1-beta.5",
32
32
  "bundledDist": false
33
33
  },
34
34
  "release": {
@@ -47,7 +47,7 @@
47
47
  "README.md"
48
48
  ],
49
49
  "peerDependencies": {
50
- "openclaw": ">=2026.7.1-beta.2"
50
+ "openclaw": ">=2026.7.1-beta.5"
51
51
  },
52
52
  "peerDependenciesMeta": {
53
53
  "openclaw": {