happy-imou-cloud 2.0.3 → 2.0.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/{BaseReasoningProcessor-_wxlqKB8.cjs → BaseReasoningProcessor-DPVZIJ4n.cjs} +2 -2
- package/dist/{BaseReasoningProcessor-B37yOHxo.mjs → BaseReasoningProcessor-bFVTvf3Q.mjs} +2 -2
- package/dist/{api-D9dIR956.cjs → api-DaqnNHfl.cjs} +4 -2
- package/dist/{api-DpQIC-DJ.mjs → api-DoHt-HyL.mjs} +4 -2
- package/dist/{command-CdXv1zNF.cjs → command-D9-hmqVq.cjs} +3 -3
- package/dist/{command-DRqrBuHM.mjs → command-Dl9SrMnv.mjs} +3 -3
- package/dist/{index-CriPm_z9.mjs → index-C5wR2qKT.mjs} +359 -70
- package/dist/{index-LYPXVO_L.cjs → index-Dc92gnxM.cjs} +361 -72
- package/dist/index.cjs +3 -3
- package/dist/index.mjs +3 -3
- package/dist/lib.cjs +1 -1
- package/dist/lib.mjs +1 -1
- package/dist/{persistence-PzKU0QCa.cjs → persistence-D6Y0604_.cjs} +1 -1
- package/dist/{persistence-CqgPgbzN.mjs → persistence-QqeBvUxX.mjs} +1 -1
- package/dist/{registerKillSessionHandler-BDBPoQSA.cjs → registerKillSessionHandler-C6yXr8ky.cjs} +2 -2
- package/dist/{registerKillSessionHandler-C3M_-4Zg.mjs → registerKillSessionHandler-CC9zGBPE.mjs} +2 -2
- package/dist/{runClaude-D6Pdkevn.mjs → runClaude-CZ8gxaJL.mjs} +4 -4
- package/dist/{runClaude-IeRSC5qX.cjs → runClaude-gHKFB1UG.cjs} +5 -5
- package/dist/{runCodex-WRmgSK6L.cjs → runCodex-CdjzG1N7.cjs} +113 -25
- package/dist/{runCodex-CsfUU1Wb.mjs → runCodex-DT7g4MPm.mjs} +111 -26
- package/dist/{runGemini-CrH3dQ0Y.mjs → runGemini-CmY5386l.mjs} +55 -21
- package/dist/{runGemini-qBh6zs5G.cjs → runGemini-DxjvRmOc.cjs} +55 -21
- package/package.json +2 -1
package/dist/index.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
require('chalk');
|
|
4
|
-
require('./api-
|
|
5
|
-
require('./persistence-
|
|
4
|
+
require('./api-DaqnNHfl.cjs');
|
|
5
|
+
require('./persistence-D6Y0604_.cjs');
|
|
6
6
|
require('zod');
|
|
7
|
-
require('./index-
|
|
7
|
+
require('./index-Dc92gnxM.cjs');
|
|
8
8
|
require('node:child_process');
|
|
9
9
|
require('node:fs');
|
|
10
10
|
require('@agentclientprotocol/sdk');
|
package/dist/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import 'chalk';
|
|
2
|
-
import './api-
|
|
3
|
-
import './persistence-
|
|
2
|
+
import './api-DoHt-HyL.mjs';
|
|
3
|
+
import './persistence-QqeBvUxX.mjs';
|
|
4
4
|
import 'zod';
|
|
5
|
-
import './index-
|
|
5
|
+
import './index-C5wR2qKT.mjs';
|
|
6
6
|
import 'node:child_process';
|
|
7
7
|
import 'node:fs';
|
|
8
8
|
import '@agentclientprotocol/sdk';
|
package/dist/lib.cjs
CHANGED
package/dist/lib.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as ApiClient, a as ApiSessionClient, c as configuration, l as logger } from './api-
|
|
1
|
+
export { A as ApiClient, a as ApiSessionClient, c as configuration, l as logger } from './api-DoHt-HyL.mjs';
|
|
2
2
|
export { R as RawJSONLinesSchema } from './types-CiliQpqS.mjs';
|
|
3
3
|
import 'axios';
|
|
4
4
|
import 'chalk';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var promises = require('node:fs/promises');
|
|
4
4
|
var node_fs = require('node:fs');
|
|
5
5
|
var node_path = require('node:path');
|
|
6
|
-
var api = require('./api-
|
|
6
|
+
var api = require('./api-DaqnNHfl.cjs');
|
|
7
7
|
var z = require('zod');
|
|
8
8
|
require('axios');
|
|
9
9
|
require('chalk');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFile, unlink, mkdir, open, stat, writeFile, rename } from 'node:fs/promises';
|
|
2
2
|
import { existsSync, unlinkSync, writeFileSync, readdirSync, readFileSync, constants } from 'node:fs';
|
|
3
3
|
import { join, dirname } from 'node:path';
|
|
4
|
-
import { c as configuration, l as logger, e as encodeBase64 } from './api-
|
|
4
|
+
import { c as configuration, l as logger, e as encodeBase64 } from './api-DoHt-HyL.mjs';
|
|
5
5
|
import * as z from 'zod';
|
|
6
6
|
import 'axios';
|
|
7
7
|
import 'chalk';
|
package/dist/{registerKillSessionHandler-BDBPoQSA.cjs → registerKillSessionHandler-C6yXr8ky.cjs}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
4
|
-
var api = require('./api-
|
|
3
|
+
var index = require('./index-Dc92gnxM.cjs');
|
|
4
|
+
var api = require('./api-DaqnNHfl.cjs');
|
|
5
5
|
var crypto = require('crypto');
|
|
6
6
|
require('axios');
|
|
7
7
|
require('node:events');
|
package/dist/{registerKillSessionHandler-C3M_-4Zg.mjs → registerKillSessionHandler-CC9zGBPE.mjs}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { f as formatDisplayMessage } from './index-
|
|
2
|
-
import { l as logger } from './api-
|
|
1
|
+
import { f as formatDisplayMessage } from './index-C5wR2qKT.mjs';
|
|
2
|
+
import { l as logger } from './api-DoHt-HyL.mjs';
|
|
3
3
|
import { createHash } from 'crypto';
|
|
4
4
|
import 'axios';
|
|
5
5
|
import 'node:events';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import os, { homedir } from 'node:os';
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
|
-
import { l as logger, d as backoff, f as delay, g as AsyncLock, c as configuration, b as connectionState, A as ApiClient, p as packageJson, i as isAuthenticationRequiredError, s as startOfflineReconnection } from './api-
|
|
4
|
-
import { e as getProjectPath, h as claudeLocal, E as ExitCodeError, j as isBun, k as trimIdent, l as claudeCheckSession, p as projectPath, m as getEnvironmentInfo, i as initialMachineMetadata, b as stopCaffeinate, n as notifyDaemonSessionStarted, o as startCaffeinate } from './index-
|
|
3
|
+
import { l as logger, d as backoff, f as delay, g as AsyncLock, c as configuration, b as connectionState, A as ApiClient, p as packageJson, i as isAuthenticationRequiredError, s as startOfflineReconnection } from './api-DoHt-HyL.mjs';
|
|
4
|
+
import { e as getProjectPath, h as claudeLocal, E as ExitCodeError, j as isBun, k as trimIdent, l as claudeCheckSession, p as projectPath, m as getEnvironmentInfo, i as initialMachineMetadata, b as stopCaffeinate, n as notifyDaemonSessionStarted, o as startCaffeinate } from './index-C5wR2qKT.mjs';
|
|
5
5
|
import { R as RawJSONLinesSchema } from './types-CiliQpqS.mjs';
|
|
6
6
|
import { dirname, basename, join, resolve } from 'node:path';
|
|
7
7
|
import { readFile } from 'node:fs/promises';
|
|
8
8
|
import { stat, watch, access } from 'fs/promises';
|
|
9
9
|
import { useStdout, useInput, Box, Text, render } from 'ink';
|
|
10
|
-
import { a as MessageBuffer, M as MessageQueue2, h as hashObject, r as registerKillSessionHandler } from './registerKillSessionHandler-
|
|
10
|
+
import { a as MessageBuffer, M as MessageQueue2, h as hashObject, r as registerKillSessionHandler } from './registerKillSessionHandler-CC9zGBPE.mjs';
|
|
11
11
|
import React, { useState, useRef, useEffect, useCallback } from 'react';
|
|
12
12
|
import { execSync, spawn } from 'node:child_process';
|
|
13
13
|
import { createInterface } from 'node:readline';
|
|
@@ -20,7 +20,7 @@ import 'tweetnacl';
|
|
|
20
20
|
import 'expo-server-sdk';
|
|
21
21
|
import 'chalk';
|
|
22
22
|
import { isDeepStrictEqual } from 'node:util';
|
|
23
|
-
import { readSettings } from './persistence-
|
|
23
|
+
import { readSettings } from './persistence-QqeBvUxX.mjs';
|
|
24
24
|
import { createServer } from 'node:http';
|
|
25
25
|
import 'fs';
|
|
26
26
|
import 'zod';
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
var os = require('node:os');
|
|
4
4
|
var node_crypto = require('node:crypto');
|
|
5
|
-
var api = require('./api-
|
|
6
|
-
var index = require('./index-
|
|
5
|
+
var api = require('./api-DaqnNHfl.cjs');
|
|
6
|
+
var index = require('./index-Dc92gnxM.cjs');
|
|
7
7
|
var types = require('./types-DVk3crez.cjs');
|
|
8
8
|
var node_path = require('node:path');
|
|
9
9
|
var promises = require('node:fs/promises');
|
|
10
10
|
var fs = require('fs/promises');
|
|
11
11
|
var ink = require('ink');
|
|
12
|
-
var registerKillSessionHandler = require('./registerKillSessionHandler-
|
|
12
|
+
var registerKillSessionHandler = require('./registerKillSessionHandler-C6yXr8ky.cjs');
|
|
13
13
|
var React = require('react');
|
|
14
14
|
var node_child_process = require('node:child_process');
|
|
15
15
|
var node_readline = require('node:readline');
|
|
@@ -22,7 +22,7 @@ require('tweetnacl');
|
|
|
22
22
|
require('expo-server-sdk');
|
|
23
23
|
require('chalk');
|
|
24
24
|
var node_util = require('node:util');
|
|
25
|
-
var persistence = require('./persistence-
|
|
25
|
+
var persistence = require('./persistence-D6Y0604_.cjs');
|
|
26
26
|
var node_http = require('node:http');
|
|
27
27
|
require('fs');
|
|
28
28
|
require('zod');
|
|
@@ -937,7 +937,7 @@ class AbortError extends Error {
|
|
|
937
937
|
}
|
|
938
938
|
}
|
|
939
939
|
|
|
940
|
-
const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('runClaude-
|
|
940
|
+
const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('runClaude-gHKFB1UG.cjs', document.baseURI).href)));
|
|
941
941
|
const __dirname$1 = node_path.join(__filename$1, "..");
|
|
942
942
|
function getGlobalClaudeVersion() {
|
|
943
943
|
try {
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var node_crypto = require('node:crypto');
|
|
4
|
-
var api = require('./api-
|
|
5
|
-
var persistence = require('./persistence-
|
|
6
|
-
var index = require('./index-
|
|
7
|
-
var BaseReasoningProcessor = require('./BaseReasoningProcessor-
|
|
8
|
-
var registerKillSessionHandler = require('./registerKillSessionHandler-
|
|
4
|
+
var api = require('./api-DaqnNHfl.cjs');
|
|
5
|
+
var persistence = require('./persistence-D6Y0604_.cjs');
|
|
6
|
+
var index = require('./index-Dc92gnxM.cjs');
|
|
7
|
+
var BaseReasoningProcessor = require('./BaseReasoningProcessor-DPVZIJ4n.cjs');
|
|
8
|
+
var registerKillSessionHandler = require('./registerKillSessionHandler-C6yXr8ky.cjs');
|
|
9
9
|
var React = require('react');
|
|
10
10
|
var ink = require('ink');
|
|
11
|
+
var happyProtocol = require('happy-protocol');
|
|
11
12
|
require('axios');
|
|
12
13
|
require('chalk');
|
|
13
14
|
require('fs');
|
|
@@ -738,7 +739,8 @@ function normalizeCodexBackendError(error) {
|
|
|
738
739
|
const text = index.formatDisplayMessage(error).trim();
|
|
739
740
|
const stderrText = record ? index.formatDisplayMessage(record.stderr).trim() : "";
|
|
740
741
|
const detailText = record ? index.formatDisplayMessage(record.detail).trim() : "";
|
|
741
|
-
const
|
|
742
|
+
const dataText = record ? index.formatDisplayMessage(record.data).trim() : "";
|
|
743
|
+
const searchableText = [text, stderrText, detailText, dataText].filter(Boolean).join("\n");
|
|
742
744
|
const prefix = typeof error === "object" && error !== null ? [
|
|
743
745
|
record?.code !== void 0 && record?.code !== null ? `[code=${String(record.code)}]` : "",
|
|
744
746
|
record?.status !== void 0 && record?.status !== null ? `[status=${String(record.status)}]` : ""
|
|
@@ -751,6 +753,9 @@ function normalizeCodexBackendError(error) {
|
|
|
751
753
|
const hint = "The configured Codex ACP command does not speak the ACP protocol. Make sure HAPPY_CODEX_ACP_BIN points to codex-acp, not the codex CLI.";
|
|
752
754
|
return prefix ? `${prefix} ${hint}` : hint;
|
|
753
755
|
}
|
|
756
|
+
if (typeof record?.message === "string" && record.message.trim().toLowerCase() === "internal error" && dataText) {
|
|
757
|
+
return prefix ? `${prefix} ${dataText}` : dataText;
|
|
758
|
+
}
|
|
754
759
|
if (error instanceof Error && text) {
|
|
755
760
|
return text;
|
|
756
761
|
}
|
|
@@ -870,6 +875,14 @@ async function codexRemoteLauncher(session) {
|
|
|
870
875
|
messageBuffer.addMessage(message, "status");
|
|
871
876
|
session.runtimeSession.sendSessionEvent({ type: "message", message });
|
|
872
877
|
};
|
|
878
|
+
const emitUserVisibleErrorMessage = (message) => {
|
|
879
|
+
emitStatusMessage(message);
|
|
880
|
+
session.runtimeSession.sendCodexMessage({
|
|
881
|
+
type: "message",
|
|
882
|
+
message,
|
|
883
|
+
id: node_crypto.randomUUID()
|
|
884
|
+
});
|
|
885
|
+
};
|
|
873
886
|
const queueHistoryInjectionForRestart = (reason) => {
|
|
874
887
|
messageBuffer.addMessage("\u2550".repeat(40), "status");
|
|
875
888
|
if (conversationHistory.hasHistory()) {
|
|
@@ -940,21 +953,28 @@ async function codexRemoteLauncher(session) {
|
|
|
940
953
|
}
|
|
941
954
|
case "tool-call": {
|
|
942
955
|
const toolArgs = msg.args ? index.truncateDisplayMessage(msg.args, 100) : "";
|
|
956
|
+
const canonicalToolName = happyProtocol.resolveCanonicalToolNameV2(msg.toolName);
|
|
943
957
|
messageBuffer.addMessage(
|
|
944
958
|
`Executing: ${msg.toolName}${toolArgs ? ` ${toolArgs}` : ""}`,
|
|
945
959
|
"tool"
|
|
946
960
|
);
|
|
947
961
|
session.runtimeSession.sendCodexMessage({
|
|
948
962
|
type: "tool-call",
|
|
949
|
-
name:
|
|
963
|
+
name: canonicalToolName,
|
|
950
964
|
callId: msg.callId,
|
|
951
|
-
input: msg.args,
|
|
965
|
+
input: happyProtocol.attachToolHappierMetaV2(msg.args, {
|
|
966
|
+
v: 2,
|
|
967
|
+
protocol: "acp",
|
|
968
|
+
provider: "codex",
|
|
969
|
+
rawToolName: msg.toolName,
|
|
970
|
+
canonicalToolName
|
|
971
|
+
}),
|
|
952
972
|
id: node_crypto.randomUUID()
|
|
953
973
|
});
|
|
954
974
|
return;
|
|
955
975
|
}
|
|
956
976
|
case "tool-result": {
|
|
957
|
-
const isError =
|
|
977
|
+
const isError = happyProtocol.inferToolResultError(msg.result);
|
|
958
978
|
const resultText = index.truncateDisplayMessage(msg.result, 200) || (isError ? "Unknown error" : "");
|
|
959
979
|
messageBuffer.addMessage(
|
|
960
980
|
`${isError ? "Error:" : "Result:"} ${resultText}`.trim(),
|
|
@@ -963,8 +983,15 @@ async function codexRemoteLauncher(session) {
|
|
|
963
983
|
session.runtimeSession.sendCodexMessage({
|
|
964
984
|
type: "tool-call-result",
|
|
965
985
|
callId: msg.callId,
|
|
966
|
-
output: msg.result,
|
|
967
|
-
|
|
986
|
+
output: happyProtocol.attachToolHappierMetaV2(msg.result, {
|
|
987
|
+
v: 2,
|
|
988
|
+
protocol: "acp",
|
|
989
|
+
provider: "codex",
|
|
990
|
+
rawToolName: msg.toolName,
|
|
991
|
+
canonicalToolName: happyProtocol.resolveCanonicalToolNameV2(msg.toolName)
|
|
992
|
+
}),
|
|
993
|
+
id: node_crypto.randomUUID(),
|
|
994
|
+
isError
|
|
968
995
|
});
|
|
969
996
|
return;
|
|
970
997
|
}
|
|
@@ -985,7 +1012,7 @@ async function codexRemoteLauncher(session) {
|
|
|
985
1012
|
session.runtimeSession.sendCodexMessage({
|
|
986
1013
|
type: "terminal-output",
|
|
987
1014
|
data: terminalOutput,
|
|
988
|
-
callId: node_crypto.randomUUID()
|
|
1015
|
+
callId: msg.callId ?? node_crypto.randomUUID()
|
|
989
1016
|
});
|
|
990
1017
|
return;
|
|
991
1018
|
}
|
|
@@ -1003,11 +1030,19 @@ async function codexRemoteLauncher(session) {
|
|
|
1003
1030
|
case "exec-approval-request": {
|
|
1004
1031
|
const { call_id, type, ...inputs } = msg;
|
|
1005
1032
|
messageBuffer.addMessage(`Exec approval requested: ${call_id}`, "tool");
|
|
1033
|
+
const rawToolName = "CodexBash";
|
|
1034
|
+
const canonicalToolName = happyProtocol.resolveCanonicalToolNameV2(rawToolName);
|
|
1006
1035
|
session.runtimeSession.sendCodexMessage({
|
|
1007
1036
|
type: "tool-call",
|
|
1008
|
-
name:
|
|
1037
|
+
name: canonicalToolName,
|
|
1009
1038
|
callId: call_id,
|
|
1010
|
-
input: inputs,
|
|
1039
|
+
input: happyProtocol.attachToolHappierMetaV2(inputs, {
|
|
1040
|
+
v: 2,
|
|
1041
|
+
protocol: "acp",
|
|
1042
|
+
provider: "codex",
|
|
1043
|
+
rawToolName,
|
|
1044
|
+
canonicalToolName
|
|
1045
|
+
}),
|
|
1011
1046
|
id: node_crypto.randomUUID()
|
|
1012
1047
|
});
|
|
1013
1048
|
return;
|
|
@@ -1016,14 +1051,22 @@ async function codexRemoteLauncher(session) {
|
|
|
1016
1051
|
const changeCount = Object.keys(msg.changes || {}).length;
|
|
1017
1052
|
const filesMsg = changeCount === 1 ? "1 file" : `${changeCount} files`;
|
|
1018
1053
|
messageBuffer.addMessage(`Modifying ${filesMsg}...`, "tool");
|
|
1054
|
+
const rawToolName = "CodexPatch";
|
|
1055
|
+
const canonicalToolName = happyProtocol.resolveCanonicalToolNameV2(rawToolName);
|
|
1019
1056
|
session.runtimeSession.sendCodexMessage({
|
|
1020
1057
|
type: "tool-call",
|
|
1021
|
-
name:
|
|
1058
|
+
name: canonicalToolName,
|
|
1022
1059
|
callId: msg.call_id,
|
|
1023
|
-
input: {
|
|
1060
|
+
input: happyProtocol.attachToolHappierMetaV2({
|
|
1024
1061
|
auto_approved: msg.auto_approved,
|
|
1025
1062
|
changes: msg.changes
|
|
1026
|
-
},
|
|
1063
|
+
}, {
|
|
1064
|
+
v: 2,
|
|
1065
|
+
protocol: "acp",
|
|
1066
|
+
provider: "codex",
|
|
1067
|
+
rawToolName,
|
|
1068
|
+
canonicalToolName
|
|
1069
|
+
}),
|
|
1027
1070
|
id: node_crypto.randomUUID()
|
|
1028
1071
|
});
|
|
1029
1072
|
return;
|
|
@@ -1037,12 +1080,19 @@ async function codexRemoteLauncher(session) {
|
|
|
1037
1080
|
session.runtimeSession.sendCodexMessage({
|
|
1038
1081
|
type: "tool-call-result",
|
|
1039
1082
|
callId: msg.call_id,
|
|
1040
|
-
output: {
|
|
1083
|
+
output: happyProtocol.attachToolHappierMetaV2({
|
|
1041
1084
|
stdout: msg.stdout,
|
|
1042
1085
|
stderr: msg.stderr,
|
|
1043
1086
|
success: msg.success
|
|
1044
|
-
},
|
|
1045
|
-
|
|
1087
|
+
}, {
|
|
1088
|
+
v: 2,
|
|
1089
|
+
protocol: "acp",
|
|
1090
|
+
provider: "codex",
|
|
1091
|
+
rawToolName: "CodexPatch",
|
|
1092
|
+
canonicalToolName: happyProtocol.resolveCanonicalToolNameV2("CodexPatch")
|
|
1093
|
+
}),
|
|
1094
|
+
id: node_crypto.randomUUID(),
|
|
1095
|
+
isError: !msg.success
|
|
1046
1096
|
});
|
|
1047
1097
|
return;
|
|
1048
1098
|
}
|
|
@@ -1255,7 +1305,7 @@ async function codexRemoteLauncher(session) {
|
|
|
1255
1305
|
emitStatusMessage("Aborted by user");
|
|
1256
1306
|
} else {
|
|
1257
1307
|
const errorMessage = normalizeCodexBackendError(error);
|
|
1258
|
-
|
|
1308
|
+
emitUserVisibleErrorMessage(errorMessage);
|
|
1259
1309
|
if (conversationHistory.hasHistory()) {
|
|
1260
1310
|
shouldInjectHistoryOnNextSession = true;
|
|
1261
1311
|
}
|
|
@@ -1364,10 +1414,39 @@ async function syncControlledByUserState(sessionClient, controlledByUser) {
|
|
|
1364
1414
|
function shouldSupersedeCodexPendingInteractions(opts) {
|
|
1365
1415
|
return true;
|
|
1366
1416
|
}
|
|
1417
|
+
function resolveInitialCodexPermissionMode(opts) {
|
|
1418
|
+
if (opts.permissionMode) {
|
|
1419
|
+
return opts.permissionMode;
|
|
1420
|
+
}
|
|
1421
|
+
const startingMode = opts.startingMode ?? (opts.startedBy === "daemon" ? "remote" : "local");
|
|
1422
|
+
if (opts.startedBy === "daemon" && startingMode === "remote") {
|
|
1423
|
+
return "yolo";
|
|
1424
|
+
}
|
|
1425
|
+
return void 0;
|
|
1426
|
+
}
|
|
1427
|
+
function resolveQueuedCodexPermissionMode(opts) {
|
|
1428
|
+
if (opts.preserveCurrentOnDefault && opts.messagePermissionMode === "default" && opts.currentPermissionMode) {
|
|
1429
|
+
return opts.currentPermissionMode;
|
|
1430
|
+
}
|
|
1431
|
+
return opts.messagePermissionMode ?? opts.currentPermissionMode ?? "default";
|
|
1432
|
+
}
|
|
1433
|
+
function resolveIncomingCodexPermissionMode(opts) {
|
|
1434
|
+
const resolvedPermissionMode = resolveQueuedCodexPermissionMode(opts);
|
|
1435
|
+
return {
|
|
1436
|
+
resolvedPermissionMode,
|
|
1437
|
+
nextCurrentPermissionMode: resolvedPermissionMode
|
|
1438
|
+
};
|
|
1439
|
+
}
|
|
1367
1440
|
async function runCodex(opts) {
|
|
1368
1441
|
const sessionTag = node_crypto.randomUUID();
|
|
1369
1442
|
api.connectionState.setBackend("Codex");
|
|
1370
1443
|
const requestedStartingMode = opts.startingMode ?? (opts.startedBy === "daemon" ? "remote" : "local");
|
|
1444
|
+
const initialPermissionMode = resolveInitialCodexPermissionMode({
|
|
1445
|
+
permissionMode: opts.permissionMode,
|
|
1446
|
+
startedBy: opts.startedBy,
|
|
1447
|
+
startingMode: requestedStartingMode
|
|
1448
|
+
});
|
|
1449
|
+
const preserveCurrentPermissionModeForRemoteDefault = opts.startedBy === "daemon" && requestedStartingMode === "remote";
|
|
1371
1450
|
if (opts.startedBy === "daemon" && requestedStartingMode === "local") {
|
|
1372
1451
|
throw new Error("Daemon-spawned Codex sessions cannot use local mode.");
|
|
1373
1452
|
}
|
|
@@ -1422,14 +1501,20 @@ async function runCodex(opts) {
|
|
|
1422
1501
|
}
|
|
1423
1502
|
}
|
|
1424
1503
|
const messageQueue = new registerKillSessionHandler.MessageQueue2(getCodexExecutionFingerprint);
|
|
1425
|
-
let currentPermissionMode;
|
|
1504
|
+
let currentPermissionMode = initialPermissionMode;
|
|
1426
1505
|
let currentModel;
|
|
1427
1506
|
sessionClient.onUserMessage((message) => {
|
|
1428
|
-
|
|
1507
|
+
const previousPermissionMode = currentPermissionMode;
|
|
1508
|
+
let messagePermissionMode = previousPermissionMode;
|
|
1429
1509
|
if (message.meta?.permissionMode) {
|
|
1430
1510
|
messagePermissionMode = message.meta.permissionMode;
|
|
1431
|
-
currentPermissionMode = messagePermissionMode;
|
|
1432
1511
|
}
|
|
1512
|
+
const permissionResolution = resolveIncomingCodexPermissionMode({
|
|
1513
|
+
messagePermissionMode,
|
|
1514
|
+
currentPermissionMode: previousPermissionMode,
|
|
1515
|
+
preserveCurrentOnDefault: preserveCurrentPermissionModeForRemoteDefault
|
|
1516
|
+
});
|
|
1517
|
+
currentPermissionMode = permissionResolution.nextCurrentPermissionMode;
|
|
1433
1518
|
let messageModel = currentModel;
|
|
1434
1519
|
if (message.meta?.hasOwnProperty("model")) {
|
|
1435
1520
|
messageModel = message.meta.model || void 0;
|
|
@@ -1443,7 +1528,7 @@ async function runCodex(opts) {
|
|
|
1443
1528
|
codexSession?.supersedePendingInteractions(BaseReasoningProcessor.INTERACTION_SUPERSEDED_ERROR);
|
|
1444
1529
|
}
|
|
1445
1530
|
messageQueue.push(message.content.text, {
|
|
1446
|
-
permissionMode:
|
|
1531
|
+
permissionMode: permissionResolution.resolvedPermissionMode,
|
|
1447
1532
|
model: messageModel
|
|
1448
1533
|
});
|
|
1449
1534
|
});
|
|
@@ -1477,6 +1562,9 @@ async function runCodex(opts) {
|
|
|
1477
1562
|
}
|
|
1478
1563
|
}
|
|
1479
1564
|
|
|
1565
|
+
exports.resolveIncomingCodexPermissionMode = resolveIncomingCodexPermissionMode;
|
|
1566
|
+
exports.resolveInitialCodexPermissionMode = resolveInitialCodexPermissionMode;
|
|
1567
|
+
exports.resolveQueuedCodexPermissionMode = resolveQueuedCodexPermissionMode;
|
|
1480
1568
|
exports.runCodex = runCodex;
|
|
1481
1569
|
exports.shouldSupersedeCodexPendingInteractions = shouldSupersedeCodexPendingInteractions;
|
|
1482
1570
|
exports.supportsAgentStateUpdateEvents = supportsAgentStateUpdateEvents;
|