replicas-engine 0.1.839 → 0.1.840
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/src/{asp-host-BHBSQQSQ.js → asp-host-BVV4KSYB.js} +4 -4
- package/dist/src/{chunk-Y7XQ6LFO.js → chunk-4QKJQNRD.js} +2 -2
- package/dist/src/{chunk-EQIJP7I2.js → chunk-ELY6H3J2.js} +2 -2
- package/dist/src/{chunk-MXWXITQM.js → chunk-HGAWFOH4.js} +4 -4
- package/dist/src/{chunk-SPI2REQM.js → chunk-JVARATE2.js} +22 -2
- package/dist/src/{chunk-YP35Y7KJ.js → chunk-KIIBVJNU.js} +2 -1
- package/dist/src/{chunk-TQSA5TNU.js → chunk-MOCORZX3.js} +1 -1
- package/dist/src/command-protection-hook.js +4 -4
- package/dist/src/deepseek-command-protection-plugin.js +4 -4
- package/dist/src/headless-agent.js +2 -2
- package/dist/src/index.js +102 -15
- package/dist/src/post-tool-pr-hook.js +2 -2
- package/dist/src/relay-mcp.js +1 -1
- package/package.json +1 -1
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
getCodexAspHost,
|
|
6
6
|
restartCodexAspHost,
|
|
7
7
|
restartCodexAspHostIfRunning
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-HGAWFOH4.js";
|
|
9
|
+
import "./chunk-KIIBVJNU.js";
|
|
10
|
+
import "./chunk-ELY6H3J2.js";
|
|
11
11
|
import "./chunk-UZSNFLDQ.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-JVARATE2.js";
|
|
13
13
|
import "./chunk-VEQXQN22.js";
|
|
14
14
|
export {
|
|
15
15
|
getCodexAspHost,
|
|
@@ -3,12 +3,12 @@ import { createRequire as __createRequire } from 'node:module';
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
monolithRequest
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-KIIBVJNU.js";
|
|
7
7
|
import {
|
|
8
8
|
extractCommandProtectionCommandText,
|
|
9
9
|
findGitCommitSignals,
|
|
10
10
|
findPrMergeSignals
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-JVARATE2.js";
|
|
12
12
|
|
|
13
13
|
// src/services/command-protection-service.ts
|
|
14
14
|
var DEFAULT_COMMAND_PROTECTION_BLOCK_MESSAGE = "Blocked by Replicas command protection.";
|
|
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
|
|
|
4
4
|
import {
|
|
5
5
|
HOOK_EXEC_MAX_BUFFER_BYTES,
|
|
6
6
|
isVersionBelow
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JVARATE2.js";
|
|
8
8
|
|
|
9
9
|
// src/utils/codex-agent-env.ts
|
|
10
10
|
function buildCodexAgentEnv(source = process.env) {
|
|
@@ -241,7 +241,7 @@ var DEFAULT_CODEX_ARGS = [
|
|
|
241
241
|
var MIN_CODEX_CLI_VERSION = "0.153.3";
|
|
242
242
|
var CODEX_UPGRADE_TIMEOUT_MS = 12e4;
|
|
243
243
|
var codexCliVersionEnsured = null;
|
|
244
|
-
var ENGINE_PACKAGE_VERSION = "0.1.
|
|
244
|
+
var ENGINE_PACKAGE_VERSION = "0.1.840";
|
|
245
245
|
var INITIALIZE_METHOD = "initialize";
|
|
246
246
|
var INITIALIZED_NOTIFICATION = "initialized";
|
|
247
247
|
var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
|
|
@@ -5,13 +5,13 @@ import {
|
|
|
5
5
|
ENGINE_ENV,
|
|
6
6
|
monolithRequest,
|
|
7
7
|
setAgentCredentialSnapshot
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-KIIBVJNU.js";
|
|
9
9
|
import {
|
|
10
10
|
AppServerProcess,
|
|
11
11
|
SUBPROCESS_MAX_BUFFER,
|
|
12
12
|
buildCodexAgentEnv,
|
|
13
13
|
execFileAsync
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-ELY6H3J2.js";
|
|
15
15
|
import {
|
|
16
16
|
isRecord
|
|
17
17
|
} from "./chunk-UZSNFLDQ.js";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
createSuccessResult,
|
|
24
24
|
listOpenAICompatibleModels,
|
|
25
25
|
resolveOpenAICompatibleModelsUrl
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-JVARATE2.js";
|
|
27
27
|
|
|
28
28
|
// src/managers/codex-token-manager.ts
|
|
29
29
|
import { promises as fs } from "fs";
|
|
@@ -238,7 +238,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
|
|
|
238
238
|
const data = await response.json();
|
|
239
239
|
await this.applyCredentialsResponse(data);
|
|
240
240
|
if (restartOnChange && CODEX_AUTH_ENV_KEYS.some((key, index) => process.env[key] !== previousEnv[index])) {
|
|
241
|
-
const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-
|
|
241
|
+
const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-BVV4KSYB.js");
|
|
242
242
|
await restartCodexAspHostIfRunning2();
|
|
243
243
|
}
|
|
244
244
|
if (data.scope) {
|
|
@@ -9,6 +9,7 @@ var AGENT = {
|
|
|
9
9
|
CURSOR: "cursor",
|
|
10
10
|
DEEPSEEK: "deepseek",
|
|
11
11
|
FX: "fx",
|
|
12
|
+
GEMINI: "gemini",
|
|
12
13
|
KIMI: "kimi",
|
|
13
14
|
MUSE: "muse",
|
|
14
15
|
OPENCODE: "opencode",
|
|
@@ -45,6 +46,7 @@ var THINKING_LEVELS_BY_AGENT = {
|
|
|
45
46
|
cursor: STANDARD_THINKING_LEVELS,
|
|
46
47
|
deepseek: STANDARD_THINKING_LEVELS,
|
|
47
48
|
fx: STANDARD_THINKING_LEVELS,
|
|
49
|
+
gemini: STANDARD_THINKING_LEVELS,
|
|
48
50
|
kimi: STANDARD_THINKING_LEVELS,
|
|
49
51
|
muse: VALID_THINKING_LEVELS.filter((level) => level !== "max" && level !== "ultracode"),
|
|
50
52
|
opencode: STANDARD_THINKING_LEVELS,
|
|
@@ -76,6 +78,8 @@ function getProviderDisplayName(provider, variant = "short") {
|
|
|
76
78
|
return variant === "long" ? "DeepSeek Harness" : "DeepSeek";
|
|
77
79
|
case "fx":
|
|
78
80
|
return "fx";
|
|
81
|
+
case "gemini":
|
|
82
|
+
return "Gemini";
|
|
79
83
|
case "kimi":
|
|
80
84
|
return variant === "long" ? "Kimi Code" : "Kimi";
|
|
81
85
|
case "muse":
|
|
@@ -193,6 +197,7 @@ var DEFAULT_CHAT_TITLES = {
|
|
|
193
197
|
cursor: "Cursor",
|
|
194
198
|
deepseek: "DeepSeek Harness",
|
|
195
199
|
fx: "fx",
|
|
200
|
+
gemini: "Gemini CLI",
|
|
196
201
|
kimi: "Kimi Code",
|
|
197
202
|
muse: "Muse Code",
|
|
198
203
|
opencode: "Opencode",
|
|
@@ -230,6 +235,7 @@ var DEEPSEEK_V4_PRO_MODEL = "deepseek/deepseek-v4-pro-0813";
|
|
|
230
235
|
var DEEPSEEK_V4_FLASH_MODEL = "deepseek/deepseek-v4-flash-0731";
|
|
231
236
|
var DEFAULT_DEEPSEEK_MODEL = DEEPSEEK_V4_PRO_MODEL;
|
|
232
237
|
var DEFAULT_FX_MODEL = "zai/glm-5.2";
|
|
238
|
+
var DEFAULT_GEMINI_MODEL = "gemini-3-flash-preview";
|
|
233
239
|
var DEFAULT_KIMI_MODEL = "moonshotai/kimi-k2.6";
|
|
234
240
|
var MUSE_SPARK_1_3_MODEL = "muse-spark-1.3";
|
|
235
241
|
var DEFAULT_MUSE_MODEL = "muse-spark-1.2";
|
|
@@ -263,6 +269,7 @@ var FALLBACK_AGENT_MODEL = {
|
|
|
263
269
|
cursor: DEFAULT_CURSOR_MODEL,
|
|
264
270
|
deepseek: DEFAULT_DEEPSEEK_MODEL,
|
|
265
271
|
fx: DEFAULT_FX_MODEL,
|
|
272
|
+
gemini: DEFAULT_GEMINI_MODEL,
|
|
266
273
|
kimi: DEFAULT_KIMI_MODEL,
|
|
267
274
|
muse: DEFAULT_MUSE_MODEL,
|
|
268
275
|
opencode: DEFAULT_OPENCODE_MODEL,
|
|
@@ -360,6 +367,7 @@ var AGENT_MODELS = {
|
|
|
360
367
|
],
|
|
361
368
|
deepseek: prioritizeDeepseekModels(DEFAULT_OPENROUTER_MODELS),
|
|
362
369
|
fx: [DEFAULT_FX_MODEL],
|
|
370
|
+
gemini: [DEFAULT_GEMINI_MODEL, "gemini-3.1-pro-preview"],
|
|
363
371
|
kimi: [DEFAULT_KIMI_MODEL],
|
|
364
372
|
muse: [MUSE_SPARK_1_3_MODEL, DEFAULT_MUSE_MODEL],
|
|
365
373
|
opencode: [...DEFAULT_OPENROUTER_MODELS, ...ASTER_MODELS],
|
|
@@ -407,6 +415,8 @@ var MODEL_LABELS = {
|
|
|
407
415
|
"xiaomi/mimo-v2.5-pro": "MiMo V2.5 Pro via OpenRouter",
|
|
408
416
|
"moonshotai/kimi-k2.6": "Kimi K2.6 via OpenRouter",
|
|
409
417
|
"moonshotai/kimi-k3": "Kimi K3 via OpenRouter",
|
|
418
|
+
"gemini-3-flash-preview": "Gemini 3 Flash Preview",
|
|
419
|
+
"gemini-3.1-pro-preview": "Gemini 3.1 Pro Preview",
|
|
410
420
|
[MUSE_SPARK_1_3_MODEL]: "Muse Spark 1.3",
|
|
411
421
|
[DEFAULT_MUSE_MODEL]: "Muse Spark 1.2",
|
|
412
422
|
"meta/muse-spark-1.3": "Muse Spark 1.3 via OpenRouter",
|
|
@@ -569,6 +579,7 @@ var CREDENTIAL_TYPE = {
|
|
|
569
579
|
ASTER_API_KEY: "aster_api_key",
|
|
570
580
|
OPENROUTER_API_KEY: "openrouter_api_key",
|
|
571
581
|
AI_GATEWAY_API_KEY: "ai_gateway_api_key",
|
|
582
|
+
GEMINI_API_KEY: "gemini_api_key",
|
|
572
583
|
MUSE_OAUTH: "muse_oauth",
|
|
573
584
|
MUSE_API_KEY: "muse_api_key"
|
|
574
585
|
};
|
|
@@ -599,6 +610,9 @@ var AGENT_CREDENTIAL_METHODS_IN_ORDER = {
|
|
|
599
610
|
[AGENT.FX]: [
|
|
600
611
|
{ method: CREDENTIAL_METHOD.AI_GATEWAY, credentialType: CREDENTIAL_TYPE.AI_GATEWAY_API_KEY }
|
|
601
612
|
],
|
|
613
|
+
[AGENT.GEMINI]: [
|
|
614
|
+
{ method: CREDENTIAL_METHOD.API_KEY, credentialType: CREDENTIAL_TYPE.GEMINI_API_KEY }
|
|
615
|
+
],
|
|
602
616
|
[AGENT.KIMI]: [
|
|
603
617
|
{ method: CREDENTIAL_METHOD.AI_GATEWAY, credentialType: CREDENTIAL_TYPE.AI_GATEWAY_API_KEY }
|
|
604
618
|
],
|
|
@@ -620,10 +634,12 @@ var AGENT_CREDENTIAL_METHODS_IN_ORDER = {
|
|
|
620
634
|
function getCredentialMethodLabel(agent, method) {
|
|
621
635
|
switch (method) {
|
|
622
636
|
case CREDENTIAL_METHOD.OAUTH:
|
|
623
|
-
|
|
637
|
+
if (agent === AGENT.CODEX) return "ChatGPT account";
|
|
638
|
+
return "Claude account";
|
|
624
639
|
case CREDENTIAL_METHOD.API_KEY:
|
|
625
640
|
if (agent === AGENT.CODEX) return "OpenAI API key";
|
|
626
641
|
if (agent === AGENT.CURSOR) return "Cursor API key";
|
|
642
|
+
if (agent === AGENT.GEMINI) return "Gemini API key";
|
|
627
643
|
if (agent === AGENT.MUSE) return "Muse API key";
|
|
628
644
|
return "Anthropic API key";
|
|
629
645
|
case CREDENTIAL_METHOD.OPENAI_COMPATIBLE:
|
|
@@ -5799,6 +5815,9 @@ function parseAgentEvents(events, agentType) {
|
|
|
5799
5815
|
if (agentType === "kimi") {
|
|
5800
5816
|
return parseAcpEvents(events, "kimi");
|
|
5801
5817
|
}
|
|
5818
|
+
if (agentType === "gemini") {
|
|
5819
|
+
return parseAcpEvents(events, "gemini");
|
|
5820
|
+
}
|
|
5802
5821
|
if (agentType === "muse") {
|
|
5803
5822
|
return parseMuseEvents(events);
|
|
5804
5823
|
}
|
|
@@ -6579,7 +6598,7 @@ var SLASH_COMMANDS = [
|
|
|
6579
6598
|
command: "/plan",
|
|
6580
6599
|
description: "Switch to plan mode and optionally send a prompt.",
|
|
6581
6600
|
argumentHint: "[prompt]",
|
|
6582
|
-
providers: ["claude", "codex", "cursor", "deepseek", "fx", "kimi", "muse", "opencode", "pi", "relay"]
|
|
6601
|
+
providers: ["claude", "codex", "cursor", "deepseek", "fx", "gemini", "kimi", "muse", "opencode", "pi", "relay"]
|
|
6583
6602
|
},
|
|
6584
6603
|
{
|
|
6585
6604
|
command: "/fast",
|
|
@@ -7820,6 +7839,7 @@ export {
|
|
|
7820
7839
|
DEFAULT_OPENCODE_MODEL,
|
|
7821
7840
|
DEFAULT_DEEPSEEK_MODEL,
|
|
7822
7841
|
DEFAULT_FX_MODEL,
|
|
7842
|
+
DEFAULT_GEMINI_MODEL,
|
|
7823
7843
|
DEFAULT_KIMI_MODEL,
|
|
7824
7844
|
DEFAULT_MUSE_MODEL,
|
|
7825
7845
|
DEFAULT_PI_MODEL,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
isValidRelayBaseProvider,
|
|
16
16
|
parsePosixEnvFile,
|
|
17
17
|
readReplicasRuntimeEnv
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-JVARATE2.js";
|
|
19
19
|
|
|
20
20
|
// src/engine-env.ts
|
|
21
21
|
import { readFileSync as readFileSync2 } from "fs";
|
|
@@ -141,6 +141,7 @@ function loadEngineEnv() {
|
|
|
141
141
|
CODEX_OPENAI_AUTHORIZATION_HEADER: readEnv("CODEX_OPENAI_AUTHORIZATION_HEADER"),
|
|
142
142
|
CURSOR_API_KEY: readEnv("CURSOR_API_KEY"),
|
|
143
143
|
AI_GATEWAY_API_KEY: readEnv("AI_GATEWAY_API_KEY"),
|
|
144
|
+
GEMINI_API_KEY: readEnv("GEMINI_API_KEY"),
|
|
144
145
|
CLAUDE_CODE_USE_BEDROCK: readEnv("CLAUDE_CODE_USE_BEDROCK"),
|
|
145
146
|
AWS_ACCESS_KEY_ID: readEnv("AWS_ACCESS_KEY_ID"),
|
|
146
147
|
AWS_SECRET_ACCESS_KEY: readEnv("AWS_SECRET_ACCESS_KEY"),
|
|
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from 'node:module';
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
shouldRefreshPullRequests
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JVARATE2.js";
|
|
7
7
|
|
|
8
8
|
// src/services/post-tool-pr-notifier.ts
|
|
9
9
|
async function notifyPostToolUse(toolName, toolInput) {
|
|
@@ -3,12 +3,12 @@ import { createRequire as __createRequire } from 'node:module';
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
evaluateCommandProtection
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-4QKJQNRD.js";
|
|
7
|
+
import "./chunk-KIIBVJNU.js";
|
|
8
8
|
import {
|
|
9
9
|
isRecord
|
|
10
10
|
} from "./chunk-UZSNFLDQ.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-JVARATE2.js";
|
|
12
12
|
import "./chunk-VEQXQN22.js";
|
|
13
13
|
|
|
14
14
|
// src/command-protection-hook.ts
|
|
@@ -28,7 +28,7 @@ function writeResult(allowed, reason) {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
async function main() {
|
|
31
|
-
if (provider !== "cursor" && provider !== "kimi" && provider !== "opencode") {
|
|
31
|
+
if (provider !== "cursor" && provider !== "gemini" && provider !== "kimi" && provider !== "opencode") {
|
|
32
32
|
throw new Error("Unknown command protection hook provider.");
|
|
33
33
|
}
|
|
34
34
|
let body = "";
|
|
@@ -3,13 +3,13 @@ import { createRequire as __createRequire } from 'node:module';
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
evaluateCommandProtection
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-4QKJQNRD.js";
|
|
7
7
|
import {
|
|
8
8
|
notifyPostToolUse
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-MOCORZX3.js";
|
|
10
|
+
import "./chunk-KIIBVJNU.js";
|
|
11
11
|
import "./chunk-UZSNFLDQ.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-JVARATE2.js";
|
|
13
13
|
import "./chunk-VEQXQN22.js";
|
|
14
14
|
|
|
15
15
|
// src/deepseek-command-protection-plugin.ts
|
|
@@ -8,12 +8,12 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
AppServerProcess,
|
|
10
10
|
buildCodexAgentEnv
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-ELY6H3J2.js";
|
|
12
12
|
import {
|
|
13
13
|
AGENT,
|
|
14
14
|
getMemoryOutputSafetyViolation,
|
|
15
15
|
headlessAgentRequestSchema
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-JVARATE2.js";
|
|
17
17
|
import "./chunk-VEQXQN22.js";
|
|
18
18
|
|
|
19
19
|
// src/headless-agent.ts
|
package/dist/src/index.js
CHANGED
|
@@ -91,7 +91,7 @@ import {
|
|
|
91
91
|
evaluateCommandProtection,
|
|
92
92
|
extractToolCommand,
|
|
93
93
|
reportCommandProtectionBlock
|
|
94
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-4QKJQNRD.js";
|
|
95
95
|
import {
|
|
96
96
|
ACCOUNT_RATE_LIMITS_UPDATED_METHOD,
|
|
97
97
|
AGENT_MESSAGE_DELTA_METHOD,
|
|
@@ -131,20 +131,20 @@ import {
|
|
|
131
131
|
recordCredentialFallback,
|
|
132
132
|
recordExhaustedCredential,
|
|
133
133
|
restartCodexAspHost
|
|
134
|
-
} from "./chunk-
|
|
134
|
+
} from "./chunk-HGAWFOH4.js";
|
|
135
135
|
import {
|
|
136
136
|
ENGINE_ENV,
|
|
137
137
|
IS_WARMING_MODE,
|
|
138
138
|
monolithRequest,
|
|
139
139
|
monolithService,
|
|
140
140
|
setAgentCredentialSnapshot
|
|
141
|
-
} from "./chunk-
|
|
141
|
+
} from "./chunk-KIIBVJNU.js";
|
|
142
142
|
import {
|
|
143
143
|
AspClient,
|
|
144
144
|
SUBPROCESS_MAX_BUFFER,
|
|
145
145
|
execAsync,
|
|
146
146
|
execFileAsync
|
|
147
|
-
} from "./chunk-
|
|
147
|
+
} from "./chunk-ELY6H3J2.js";
|
|
148
148
|
import {
|
|
149
149
|
isRecord as isRecord2
|
|
150
150
|
} from "./chunk-UZSNFLDQ.js";
|
|
@@ -191,6 +191,7 @@ import {
|
|
|
191
191
|
DEFAULT_CURSOR_MODEL,
|
|
192
192
|
DEFAULT_DEEPSEEK_MODEL,
|
|
193
193
|
DEFAULT_FX_MODEL,
|
|
194
|
+
DEFAULT_GEMINI_MODEL,
|
|
194
195
|
DEFAULT_HOOK_OUTPUT_PREVIEW_CHARS,
|
|
195
196
|
DEFAULT_KIMI_MODEL,
|
|
196
197
|
DEFAULT_MUSE_MODEL,
|
|
@@ -353,7 +354,7 @@ import {
|
|
|
353
354
|
spawnRelaySubagentRequestSchema,
|
|
354
355
|
stripAgentDiagnosticErrors,
|
|
355
356
|
withTimeout
|
|
356
|
-
} from "./chunk-
|
|
357
|
+
} from "./chunk-JVARATE2.js";
|
|
357
358
|
import {
|
|
358
359
|
__commonJS,
|
|
359
360
|
__export,
|
|
@@ -9785,6 +9786,8 @@ function detectAgentAuthMethod(provider) {
|
|
|
9785
9786
|
case AGENT.FX:
|
|
9786
9787
|
case AGENT.KIMI:
|
|
9787
9788
|
return ENGINE_ENV.AI_GATEWAY_API_KEY ? "api_key" : "none";
|
|
9789
|
+
case AGENT.GEMINI:
|
|
9790
|
+
return ENGINE_ENV.GEMINI_API_KEY ? "api_key" : "none";
|
|
9788
9791
|
case AGENT.MUSE:
|
|
9789
9792
|
if (!existsSync2(MUSE_AUTH_PATH)) return "none";
|
|
9790
9793
|
if (ENGINE_ENV.REPLICAS_AGENT_CREDENTIALS.muse?.method === "api_key") return "api_key";
|
|
@@ -9882,6 +9885,7 @@ function createDefaultDetails() {
|
|
|
9882
9885
|
cursorAuthMethod: "none",
|
|
9883
9886
|
deepseekAuthMethod: "none",
|
|
9884
9887
|
fxAuthMethod: "none",
|
|
9888
|
+
geminiAuthMethod: "none",
|
|
9885
9889
|
kimiAuthMethod: "none",
|
|
9886
9890
|
museAuthMethod: "none",
|
|
9887
9891
|
opencodeAuthMethod: "none",
|
|
@@ -9928,6 +9932,7 @@ var EnvironmentDetailsService = class {
|
|
|
9928
9932
|
details.cursorAuthMethod = detectAgentAuthMethod(AGENT.CURSOR);
|
|
9929
9933
|
details.deepseekAuthMethod = detectAgentAuthMethod(AGENT.DEEPSEEK);
|
|
9930
9934
|
details.fxAuthMethod = detectAgentAuthMethod(AGENT.FX);
|
|
9935
|
+
details.geminiAuthMethod = detectAgentAuthMethod(AGENT.GEMINI);
|
|
9931
9936
|
details.kimiAuthMethod = detectAgentAuthMethod(AGENT.KIMI);
|
|
9932
9937
|
details.museAuthMethod = detectAgentAuthMethod(AGENT.MUSE);
|
|
9933
9938
|
details.opencodeAuthMethod = detectAgentAuthMethod(AGENT.OPENCODE);
|
|
@@ -14727,6 +14732,7 @@ var OPENCODE_HISTORY_DIR = join17(ENGINE_DIR2, "opencode-histories");
|
|
|
14727
14732
|
var PI_HISTORY_DIR = join17(ENGINE_DIR2, "pi-histories");
|
|
14728
14733
|
var DEEPSEEK_HISTORY_DIR = join17(ENGINE_DIR2, "deepseek-histories");
|
|
14729
14734
|
var FX_HISTORY_DIR = join17(ENGINE_DIR2, "fx-histories");
|
|
14735
|
+
var GEMINI_HISTORY_DIR = join17(ENGINE_DIR2, "gemini-histories");
|
|
14730
14736
|
var KIMI_HISTORY_DIR = join17(ENGINE_DIR2, "kimi-histories");
|
|
14731
14737
|
var MUSE_HISTORY_DIR = join17(ENGINE_DIR2, "muse-histories");
|
|
14732
14738
|
var FORKS_DIR = join17(ENGINE_DIR2, "forks");
|
|
@@ -14737,6 +14743,7 @@ var HISTORY_DIR_BY_PROVIDER = {
|
|
|
14737
14743
|
cursor: CURSOR_HISTORY_DIR,
|
|
14738
14744
|
deepseek: DEEPSEEK_HISTORY_DIR,
|
|
14739
14745
|
fx: FX_HISTORY_DIR,
|
|
14746
|
+
gemini: GEMINI_HISTORY_DIR,
|
|
14740
14747
|
kimi: KIMI_HISTORY_DIR,
|
|
14741
14748
|
muse: MUSE_HISTORY_DIR,
|
|
14742
14749
|
opencode: OPENCODE_HISTORY_DIR,
|
|
@@ -16274,6 +16281,34 @@ async function ensureCursorCommandProtectionHook() {
|
|
|
16274
16281
|
await writeFile6(path7, `${JSON.stringify({ ...config, version: 1, hooks }, null, 2)}
|
|
16275
16282
|
`, "utf8");
|
|
16276
16283
|
}
|
|
16284
|
+
async function ensureGeminiCommandProtectionHook() {
|
|
16285
|
+
const path7 = join19(ENGINE_ENV.HOME_DIR, ".gemini", "settings.json");
|
|
16286
|
+
let config = {};
|
|
16287
|
+
try {
|
|
16288
|
+
const parsed = JSON.parse(await readFile11(path7, "utf8"));
|
|
16289
|
+
if (!isRecord2(parsed)) throw new Error("Invalid Gemini hooks configuration.");
|
|
16290
|
+
config = parsed;
|
|
16291
|
+
} catch (error) {
|
|
16292
|
+
if (!(error && typeof error === "object" && "code" in error && error.code === "ENOENT")) throw error;
|
|
16293
|
+
}
|
|
16294
|
+
const hooks = isRecord2(config.hooks) ? config.hooks : {};
|
|
16295
|
+
const hook = (name, command) => ({
|
|
16296
|
+
matcher: "*",
|
|
16297
|
+
hooks: [{ name, type: "command", command, timeout: 3e4 }]
|
|
16298
|
+
});
|
|
16299
|
+
const without = (entries, name) => (Array.isArray(entries) ? entries : []).filter((entry) => !isRecord2(entry) || !Array.isArray(entry.hooks) || !entry.hooks.some((candidate) => isRecord2(candidate) && candidate.name === name));
|
|
16300
|
+
hooks.BeforeTool = [
|
|
16301
|
+
...without(hooks.BeforeTool, "replicas-command-protection"),
|
|
16302
|
+
hook("replicas-command-protection", shellCommand(hookPath, "gemini"))
|
|
16303
|
+
];
|
|
16304
|
+
hooks.AfterTool = [
|
|
16305
|
+
...without(hooks.AfterTool, "replicas-post-tool-pr-check"),
|
|
16306
|
+
hook("replicas-post-tool-pr-check", shellCommand(postToolHookPath))
|
|
16307
|
+
];
|
|
16308
|
+
await mkdir11(dirname5(path7), { recursive: true });
|
|
16309
|
+
await writeFile6(path7, `${JSON.stringify({ ...config, hooks }, null, 2)}
|
|
16310
|
+
`, "utf8");
|
|
16311
|
+
}
|
|
16277
16312
|
async function ensureKimiCommandProtectionHook() {
|
|
16278
16313
|
const path7 = join19(ENGINE_ENV.HOME_DIR, ".kimi-code", "config.toml");
|
|
16279
16314
|
const start = "# Replicas command protection hook";
|
|
@@ -17659,6 +17694,7 @@ ${request.message}` : request.message
|
|
|
17659
17694
|
prompt.push({ type: "image", mimeType: image.source.media_type, data: image.source.data });
|
|
17660
17695
|
}
|
|
17661
17696
|
const response = await context.request(methods.agent.session.prompt, { sessionId, prompt });
|
|
17697
|
+
this.onUsageUpdate(response, (/* @__PURE__ */ new Date()).toISOString());
|
|
17662
17698
|
if (pending) this.deliveredInstructions = pending;
|
|
17663
17699
|
this.recordHistoryEvent("acp-turn-complete", {
|
|
17664
17700
|
provider: this.acp.provider,
|
|
@@ -17757,6 +17793,26 @@ var FxManager = class extends AcpManager {
|
|
|
17757
17793
|
}
|
|
17758
17794
|
};
|
|
17759
17795
|
|
|
17796
|
+
// src/managers/gemini-manager.ts
|
|
17797
|
+
var GeminiManager = class extends AcpManager {
|
|
17798
|
+
constructor(options) {
|
|
17799
|
+
super({
|
|
17800
|
+
...options,
|
|
17801
|
+
acp: {
|
|
17802
|
+
provider: "gemini",
|
|
17803
|
+
command: "gemini",
|
|
17804
|
+
args: (model) => ["--acp", "--model", model],
|
|
17805
|
+
env: async () => ({
|
|
17806
|
+
GEMINI_CLI_TRUST_WORKSPACE: "true",
|
|
17807
|
+
GEMINI_TELEMETRY_ENABLED: "false"
|
|
17808
|
+
}),
|
|
17809
|
+
defaultModel: DEFAULT_GEMINI_MODEL,
|
|
17810
|
+
prepare: ensureGeminiCommandProtectionHook
|
|
17811
|
+
}
|
|
17812
|
+
});
|
|
17813
|
+
}
|
|
17814
|
+
};
|
|
17815
|
+
|
|
17760
17816
|
// src/managers/kimi-manager.ts
|
|
17761
17817
|
var KimiManager = class extends AcpManager {
|
|
17762
17818
|
constructor(options) {
|
|
@@ -60220,6 +60276,19 @@ function calculateCumulativeTokenUsageDelta(current, previous) {
|
|
|
60220
60276
|
cacheWriteInputTokens: current.cacheWriteInputTokens - previous.cacheWriteInputTokens
|
|
60221
60277
|
};
|
|
60222
60278
|
}
|
|
60279
|
+
function recordParsedTokenUsage(event, harness, parse) {
|
|
60280
|
+
if (event.type !== "usage-updated") return void 0;
|
|
60281
|
+
const usage = parse(event.payload);
|
|
60282
|
+
if (!usage) return void 0;
|
|
60283
|
+
return {
|
|
60284
|
+
records: [{
|
|
60285
|
+
...event.context,
|
|
60286
|
+
harness,
|
|
60287
|
+
...usage,
|
|
60288
|
+
occurredAt: event.occurredAt
|
|
60289
|
+
}]
|
|
60290
|
+
};
|
|
60291
|
+
}
|
|
60223
60292
|
|
|
60224
60293
|
// src/analytics/token-usage/claude/parse.ts
|
|
60225
60294
|
function isClaudeModelUsage(value) {
|
|
@@ -60547,6 +60616,29 @@ var DeepseekTokenUsageService = class {
|
|
|
60547
60616
|
}
|
|
60548
60617
|
};
|
|
60549
60618
|
|
|
60619
|
+
// src/analytics/token-usage/gemini/index.ts
|
|
60620
|
+
function parseGeminiTokenUsage(payload) {
|
|
60621
|
+
if (!isRecord(payload)) return void 0;
|
|
60622
|
+
const usage = isRecord(payload.usage) ? {
|
|
60623
|
+
inputTokens: payload.usage.inputTokens,
|
|
60624
|
+
outputTokens: payload.usage.outputTokens,
|
|
60625
|
+
cacheReadInputTokens: payload.usage.cachedReadTokens ?? 0,
|
|
60626
|
+
cacheWriteInputTokens: payload.usage.cachedWriteTokens ?? 0
|
|
60627
|
+
} : isRecord(payload._meta) && isRecord(payload._meta.quota) && isRecord(payload._meta.quota.token_count) ? {
|
|
60628
|
+
inputTokens: payload._meta.quota.token_count.input_tokens,
|
|
60629
|
+
outputTokens: payload._meta.quota.token_count.output_tokens,
|
|
60630
|
+
cacheReadInputTokens: 0,
|
|
60631
|
+
cacheWriteInputTokens: 0
|
|
60632
|
+
} : void 0;
|
|
60633
|
+
if (!isTokenUsageCounts(usage)) return void 0;
|
|
60634
|
+
return usage.inputTokens + usage.outputTokens + usage.cacheReadInputTokens + usage.cacheWriteInputTokens > 0 ? usage : void 0;
|
|
60635
|
+
}
|
|
60636
|
+
var GeminiTokenUsageService = class {
|
|
60637
|
+
record(event) {
|
|
60638
|
+
return recordParsedTokenUsage(event, AGENT.GEMINI, parseGeminiTokenUsage);
|
|
60639
|
+
}
|
|
60640
|
+
};
|
|
60641
|
+
|
|
60550
60642
|
// src/analytics/token-usage/muse/index.ts
|
|
60551
60643
|
var MuseTokenUsageService = class {
|
|
60552
60644
|
record(event) {
|
|
@@ -60582,16 +60674,7 @@ function parseOpencodeTokenUsage(payload) {
|
|
|
60582
60674
|
}
|
|
60583
60675
|
var OpencodeTokenUsageService = class {
|
|
60584
60676
|
record(event) {
|
|
60585
|
-
|
|
60586
|
-
const usage = parseOpencodeTokenUsage(event.payload);
|
|
60587
|
-
if (!usage) return void 0;
|
|
60588
|
-
const record3 = {
|
|
60589
|
-
...event.context,
|
|
60590
|
-
harness: AGENT.OPENCODE,
|
|
60591
|
-
...usage,
|
|
60592
|
-
occurredAt: event.occurredAt
|
|
60593
|
-
};
|
|
60594
|
-
return { records: [record3] };
|
|
60677
|
+
return recordParsedTokenUsage(event, AGENT.OPENCODE, parseOpencodeTokenUsage);
|
|
60595
60678
|
}
|
|
60596
60679
|
};
|
|
60597
60680
|
|
|
@@ -60635,6 +60718,8 @@ function createAgentTokenUsageService(harness) {
|
|
|
60635
60718
|
return new CursorTokenUsageService();
|
|
60636
60719
|
case AGENT.DEEPSEEK:
|
|
60637
60720
|
return new DeepseekTokenUsageService();
|
|
60721
|
+
case AGENT.GEMINI:
|
|
60722
|
+
return new GeminiTokenUsageService();
|
|
60638
60723
|
case AGENT.MUSE:
|
|
60639
60724
|
return new MuseTokenUsageService();
|
|
60640
60725
|
case AGENT.OPENCODE:
|
|
@@ -62415,6 +62500,8 @@ var ChatService = class {
|
|
|
62415
62500
|
provider = new DeepseekManager(managerOptions);
|
|
62416
62501
|
} else if (baseProvider === "fx") {
|
|
62417
62502
|
provider = new FxManager(managerOptions);
|
|
62503
|
+
} else if (baseProvider === "gemini") {
|
|
62504
|
+
provider = new GeminiManager(managerOptions);
|
|
62418
62505
|
} else if (baseProvider === "kimi") {
|
|
62419
62506
|
provider = new KimiManager(managerOptions);
|
|
62420
62507
|
} else if (baseProvider === "muse") {
|
|
@@ -3,11 +3,11 @@ import { createRequire as __createRequire } from 'node:module';
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
notifyPostToolUse
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MOCORZX3.js";
|
|
7
7
|
import {
|
|
8
8
|
isRecord
|
|
9
9
|
} from "./chunk-UZSNFLDQ.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-JVARATE2.js";
|
|
11
11
|
import "./chunk-VEQXQN22.js";
|
|
12
12
|
|
|
13
13
|
// src/post-tool-pr-hook.ts
|
package/dist/src/relay-mcp.js
CHANGED