@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.
- package/dist/{attempt-DIieBZcc.js → attempt-D6MSc00N.js} +30 -17
- package/dist/{harness-B9xB4LpE.js → harness-BQhGzc1Z.js} +27 -7
- package/dist/harness.js +1 -1
- package/dist/index.js +1 -1
- package/dist/{runtime-Bo_ajDXI.js → runtime-C__LHHs3.js} +1 -1
- package/npm-shrinkwrap.json +43 -43
- package/package.json +6 -6
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as resolveCopilotAuth, i as createCopilotByokAuth, n as resolveCopilotProvider, r as createCopilotByokProxy } from "./harness-
|
|
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:
|
|
46
|
-
*
|
|
47
|
-
* already present in the transcript on disk
|
|
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
|
|
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
|
-
|
|
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
|
-
...
|
|
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 [
|
|
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:
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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.
|
|
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;
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/copilot",
|
|
3
|
-
"version": "2026.7.1-beta.
|
|
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.
|
|
9
|
+
"version": "2026.7.1-beta.5",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@github/copilot-sdk": "1.0.
|
|
11
|
+
"@github/copilot-sdk": "1.0.5"
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"node_modules/@github/copilot": {
|
|
15
|
-
"version": "1.0.
|
|
16
|
-
"resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.
|
|
17
|
-
"integrity": "sha512-
|
|
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.
|
|
27
|
-
"@github/copilot-darwin-x64": "1.0.
|
|
28
|
-
"@github/copilot-linux-arm64": "1.0.
|
|
29
|
-
"@github/copilot-linux-x64": "1.0.
|
|
30
|
-
"@github/copilot-linuxmusl-arm64": "1.0.
|
|
31
|
-
"@github/copilot-linuxmusl-x64": "1.0.
|
|
32
|
-
"@github/copilot-win32-arm64": "1.0.
|
|
33
|
-
"@github/copilot-win32-x64": "1.0.
|
|
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.
|
|
38
|
-
"resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.
|
|
39
|
-
"integrity": "sha512-
|
|
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.
|
|
54
|
-
"resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.
|
|
55
|
-
"integrity": "sha512-
|
|
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.
|
|
70
|
-
"resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.
|
|
71
|
-
"integrity": "sha512-
|
|
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.
|
|
86
|
-
"resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.
|
|
87
|
-
"integrity": "sha512-
|
|
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.
|
|
102
|
-
"resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.
|
|
103
|
-
"integrity": "sha512-
|
|
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.
|
|
118
|
-
"resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.
|
|
119
|
-
"integrity": "sha512-
|
|
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.
|
|
134
|
-
"resolved": "https://registry.npmjs.org/@github/copilot-sdk/-/copilot-sdk-1.0.
|
|
135
|
-
"integrity": "sha512-
|
|
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.
|
|
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": "
|
|
143
|
+
"node": "^20.19.0 || >=22.12.0"
|
|
144
144
|
}
|
|
145
145
|
},
|
|
146
146
|
"node_modules/@github/copilot-win32-arm64": {
|
|
147
|
-
"version": "1.0.
|
|
148
|
-
"resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.
|
|
149
|
-
"integrity": "sha512-
|
|
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.
|
|
164
|
-
"resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.
|
|
165
|
-
"integrity": "sha512-
|
|
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.
|
|
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.
|
|
11
|
+
"@github/copilot-sdk": "1.0.5"
|
|
12
12
|
},
|
|
13
13
|
"devDependencies": {
|
|
14
|
-
"@github/copilot": "1.0.
|
|
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.
|
|
28
|
+
"pluginApi": ">=2026.7.1-beta.5"
|
|
29
29
|
},
|
|
30
30
|
"build": {
|
|
31
|
-
"openclawVersion": "2026.7.1-beta.
|
|
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.
|
|
50
|
+
"openclaw": ">=2026.7.1-beta.5"
|
|
51
51
|
},
|
|
52
52
|
"peerDependenciesMeta": {
|
|
53
53
|
"openclaw": {
|