very-happy-cli 0.2.143 → 0.2.144
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/{AcpBackend-LEgn9vol.mjs → AcpBackend-DLsPpWnc.mjs} +2 -2
- package/dist/{AcpBackend-B8oehrfU.cjs → AcpBackend-DssrjZDS.cjs} +30 -30
- package/dist/{AcpSessionManager-Yfbs5bi2.mjs → AcpSessionManager-1pAH8SdV.mjs} +1 -1
- package/dist/{AcpSessionManager-BomdfyhZ.cjs → AcpSessionManager-DkBV80Rr.cjs} +9 -9
- package/dist/{agentGuidance-BU4hxm8M.mjs → agentGuidance-CupQ9Lve.mjs} +1 -1
- package/dist/{agentGuidance-CJSl54ua.cjs → agentGuidance-D1PDVswF.cjs} +1 -1
- package/dist/agentHome-BaSxP7lQ.mjs +107 -0
- package/dist/agentHome-uf1zs2Fi.cjs +113 -0
- package/dist/codex/happyMcpStdioBridge.cjs +2 -2
- package/dist/codex/happyMcpStdioBridge.mjs +2 -2
- package/dist/{config-euZ_K5Lo.mjs → config-CxHoQo52.mjs} +4 -4
- package/dist/{config-CfqWoHmO.cjs → config-kx4y9oAI.cjs} +4 -4
- package/dist/{index-BREtikhm.cjs → index-DIoSNgtt.cjs} +4 -4
- package/dist/{index-DoiG88oX.mjs → index-Diu81aSC.mjs} +69 -24
- package/dist/{index-C510dSUn.cjs → index-Dn0JMM8l.cjs} +242 -197
- package/dist/{index-Bj68y6ee.cjs → index-Dox9iD5R.cjs} +31 -31
- package/dist/{index-PM_SsRpw.mjs → index-DxEaiVzX.mjs} +4 -4
- package/dist/{index-ZOMC8Gzn.mjs → index-J6a8OHS6.mjs} +8 -8
- package/dist/index.cjs +4 -4
- package/dist/index.mjs +4 -4
- package/dist/{installTerminalHooks-BGVQqbgq.mjs → installTerminalHooks-BBMGk3q5.mjs} +4 -4
- package/dist/{installTerminalHooks-C_jraM1j.cjs → installTerminalHooks-De7_iOOC.cjs} +4 -4
- package/dist/lib.cjs +5 -5
- package/dist/lib.mjs +2 -2
- package/dist/{limits-B3oVgqBJ.cjs → limits-C_Sklt--.cjs} +7 -7
- package/dist/{limits-uABU-yq3.mjs → limits-DxArdmkZ.mjs} +8 -8
- package/dist/{mcp-CfbTQXyh.mjs → mcp-C1oNnlw5.mjs} +4 -4
- package/dist/{mcp-G-3lL_KH.cjs → mcp-xyb8dYIQ.cjs} +9 -9
- package/dist/{piRuntime-CWE-1W-y.cjs → piRuntime-3Vbdgv6X.cjs} +2 -2
- package/dist/{piRuntime-BE6iYQwU.mjs → piRuntime-CzJdE4z4.mjs} +2 -2
- package/dist/{piTerminal-Dyc_9pGP.cjs → piTerminal-BFpwVGWr.cjs} +6 -6
- package/dist/{piTerminal-rqKn1_Zy.mjs → piTerminal-Do2GiKMN.mjs} +6 -6
- package/dist/{runGemini-C6qMFzcn.cjs → runGemini-CCdGxTF2.cjs} +24 -24
- package/dist/{runGemini-BMlXIaTL.mjs → runGemini-De5NRMT9.mjs} +6 -6
- package/dist/{runOpenClaw-CoO5Vp3S.mjs → runOpenClaw-C2t4DRyi.mjs} +5 -5
- package/dist/{runOpenClaw-C2_aCP7v.cjs → runOpenClaw-CRMUfrWk.cjs} +26 -26
- package/dist/{send-DGVwmB-p.cjs → send-BA1Dgpgn.cjs} +4 -4
- package/dist/{send-CBrJylJc.mjs → send-l6Rj09c0.mjs} +4 -4
- package/dist/{sessions-DyQXMN-8.cjs → sessions-CtVcoXvG.cjs} +5 -5
- package/dist/{sessions-DbLubh2N.mjs → sessions-MWLDqQk-.mjs} +4 -4
- package/dist/{spawn-DIyFOn3W.cjs → spawn-Be4nsNuQ.cjs} +6 -6
- package/dist/{spawn-wkkxEGdF.mjs → spawn-DKWR-6Qc.mjs} +4 -4
- package/dist/{teams-QOkGFjkJ.cjs → teams-CcjjNLi8.cjs} +4 -4
- package/dist/{teams-BTyVFK3P.mjs → teams-DMf9GNGE.mjs} +4 -4
- package/dist/{todo-DoLkqdBe.mjs → todo-BEXZRm1A.mjs} +3 -3
- package/dist/{todo-Du6pjwx_.cjs → todo-EffYAnre.cjs} +5 -5
- package/dist/{types-BG4gFjLL.mjs → types-D6YKR7wo.mjs} +321 -11
- package/dist/{types-6__wqmmP.cjs → types-DZ5c-9f3.cjs} +328 -9
- package/package.json +7 -7
|
@@ -4,12 +4,12 @@ var ink = require('ink');
|
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var node_crypto = require('node:crypto');
|
|
6
6
|
var path = require('node:path');
|
|
7
|
-
var
|
|
8
|
-
var persistence = require('./limits-
|
|
9
|
-
var index = require('./index-
|
|
7
|
+
var index$1 = require('./types-DZ5c-9f3.cjs');
|
|
8
|
+
var persistence = require('./limits-C_Sklt--.cjs');
|
|
9
|
+
var index = require('./index-Dn0JMM8l.cjs');
|
|
10
10
|
var projectPath = require('./projectPath-ChLhdOyt.cjs');
|
|
11
|
-
var AcpBackend = require('./AcpBackend-
|
|
12
|
-
var config = require('./config-
|
|
11
|
+
var AcpBackend = require('./AcpBackend-DssrjZDS.cjs');
|
|
12
|
+
var config = require('./config-kx4y9oAI.cjs');
|
|
13
13
|
require('axios');
|
|
14
14
|
require('node:events');
|
|
15
15
|
require('socket.io-client');
|
|
@@ -34,7 +34,7 @@ require('@anthropic-ai/sandbox-runtime');
|
|
|
34
34
|
require('expo-server-sdk');
|
|
35
35
|
require('chalk');
|
|
36
36
|
require('node:util');
|
|
37
|
-
require('./agentGuidance-
|
|
37
|
+
require('./agentGuidance-D1PDVswF.cjs');
|
|
38
38
|
require('@anthropic-ai/claude-agent-sdk');
|
|
39
39
|
require('ps-list');
|
|
40
40
|
require('tmp');
|
|
@@ -861,8 +861,8 @@ ${formattedMessages}
|
|
|
861
861
|
|
|
862
862
|
async function runGemini(opts) {
|
|
863
863
|
const sessionTag = node_crypto.randomUUID();
|
|
864
|
-
|
|
865
|
-
const api
|
|
864
|
+
index$1.connectionState.setBackend("Gemini");
|
|
865
|
+
const api = await index$1.ApiClient.create(opts.credentials);
|
|
866
866
|
const settings = await persistence.readSettings();
|
|
867
867
|
const machineId = settings?.machineId;
|
|
868
868
|
const sandboxConfig = settings?.sandboxConfig;
|
|
@@ -871,14 +871,14 @@ async function runGemini(opts) {
|
|
|
871
871
|
process.exit(1);
|
|
872
872
|
}
|
|
873
873
|
persistence.logger.debug(`Using machineId: ${machineId}`);
|
|
874
|
-
await api
|
|
874
|
+
await api.getOrCreateMachine({
|
|
875
875
|
machineId,
|
|
876
876
|
metadata: index.initialMachineMetadata
|
|
877
877
|
});
|
|
878
878
|
let cloudToken = void 0;
|
|
879
879
|
let currentUserEmail = void 0;
|
|
880
880
|
try {
|
|
881
|
-
const vendorToken = await api
|
|
881
|
+
const vendorToken = await api.getVendorToken("gemini");
|
|
882
882
|
if (vendorToken?.oauth?.access_token) {
|
|
883
883
|
cloudToken = vendorToken.oauth.access_token;
|
|
884
884
|
persistence.logger.debug("[Gemini] Using OAuth token from Happy cloud");
|
|
@@ -898,7 +898,7 @@ async function runGemini(opts) {
|
|
|
898
898
|
}
|
|
899
899
|
}
|
|
900
900
|
} catch (error) {
|
|
901
|
-
persistence.logger.debug("[Gemini] Failed to fetch cloud token:",
|
|
901
|
+
persistence.logger.debug("[Gemini] Failed to fetch cloud token:", index$1.errorLogMetadata(error));
|
|
902
902
|
}
|
|
903
903
|
const { state, metadata } = index.createSessionMetadata({
|
|
904
904
|
flavor: "gemini",
|
|
@@ -906,7 +906,7 @@ async function runGemini(opts) {
|
|
|
906
906
|
startedBy: opts.startedBy,
|
|
907
907
|
sandbox: sandboxConfig
|
|
908
908
|
});
|
|
909
|
-
const response = await api
|
|
909
|
+
const response = await api.getOrCreateSession({ tag: sessionTag, metadata, state });
|
|
910
910
|
let session;
|
|
911
911
|
let permissionHandler;
|
|
912
912
|
let isProcessingMessage = false;
|
|
@@ -922,7 +922,7 @@ async function runGemini(opts) {
|
|
|
922
922
|
}
|
|
923
923
|
};
|
|
924
924
|
const { session: initialSession, reconnectionHandle } = index.setupOfflineReconnection({
|
|
925
|
-
api
|
|
925
|
+
api,
|
|
926
926
|
sessionTag,
|
|
927
927
|
metadata,
|
|
928
928
|
state,
|
|
@@ -943,7 +943,7 @@ async function runGemini(opts) {
|
|
|
943
943
|
if (response) {
|
|
944
944
|
try {
|
|
945
945
|
persistence.logger.debug(`[START] Reporting session ${response.id} to daemon`);
|
|
946
|
-
const result = await
|
|
946
|
+
const result = await index$1.notifyDaemonSessionStarted(response.id, metadata, {
|
|
947
947
|
encryptionKey: persistence.encodeBase64(response.encryptionKey),
|
|
948
948
|
encryptionVariant: response.encryptionVariant,
|
|
949
949
|
seq: response.seq,
|
|
@@ -1029,7 +1029,7 @@ async function runGemini(opts) {
|
|
|
1029
1029
|
const sendReady = () => {
|
|
1030
1030
|
session.sendSessionEvent({ type: "ready" });
|
|
1031
1031
|
try {
|
|
1032
|
-
api
|
|
1032
|
+
api.push().sendSessionNotification({
|
|
1033
1033
|
kind: "done",
|
|
1034
1034
|
metadata: session.getMetadata(),
|
|
1035
1035
|
data: {
|
|
@@ -1212,10 +1212,10 @@ async function runGemini(opts) {
|
|
|
1212
1212
|
case "status":
|
|
1213
1213
|
const statusDetail = msg.detail ? typeof msg.detail === "object" ? JSON.stringify(msg.detail) : String(msg.detail) : "";
|
|
1214
1214
|
persistence.logger.debug(`[gemini] Status changed: ${msg.status}`, {
|
|
1215
|
-
detail:
|
|
1215
|
+
detail: index$1.contentLogMetadata(statusDetail)
|
|
1216
1216
|
});
|
|
1217
1217
|
if (msg.status === "error") {
|
|
1218
|
-
persistence.logger.debug("[gemini] Error status received:",
|
|
1218
|
+
persistence.logger.debug("[gemini] Error status received:", index$1.contentLogMetadata(statusDetail));
|
|
1219
1219
|
session.sendAgentMessage("gemini", {
|
|
1220
1220
|
type: "turn_aborted",
|
|
1221
1221
|
id: node_crypto.randomUUID()
|
|
@@ -1267,7 +1267,7 @@ Guide: https://goo.gle/gemini-cli-auth-docs#workspace-gca`;
|
|
|
1267
1267
|
const isInvestigationTool = msg.toolName === "codebase_investigator" || typeof msg.toolName === "string" && msg.toolName.includes("investigator");
|
|
1268
1268
|
persistence.logger.debug(`[gemini] \u{1F527} Tool call received: ${msg.toolName} (${msg.callId})${isInvestigationTool ? " [INVESTIGATION]" : ""}`);
|
|
1269
1269
|
if (isInvestigationTool && msg.args && typeof msg.args === "object" && "objective" in msg.args) {
|
|
1270
|
-
persistence.logger.debug("[gemini] Investigation objective received:",
|
|
1270
|
+
persistence.logger.debug("[gemini] Investigation objective received:", index$1.contentLogMetadata(msg.args.objective));
|
|
1271
1271
|
}
|
|
1272
1272
|
messageBuffer.addMessage(`Executing: ${msg.toolName}${toolArgs ? ` ${toolArgs}${toolArgs.length >= 100 ? "..." : ""}` : ""}`, "tool");
|
|
1273
1273
|
session.sendAgentMessage("gemini", {
|
|
@@ -1293,7 +1293,7 @@ Guide: https://goo.gle/gemini-cli-auth-docs#workspace-gca`;
|
|
|
1293
1293
|
}
|
|
1294
1294
|
if (isError) {
|
|
1295
1295
|
const errorMsg = msg.result.error || "Tool call failed";
|
|
1296
|
-
persistence.logger.debug("[gemini] Tool call error received:",
|
|
1296
|
+
persistence.logger.debug("[gemini] Tool call error received:", index$1.contentLogMetadata(errorMsg));
|
|
1297
1297
|
messageBuffer.addMessage(`Error: ${errorMsg}`, "status");
|
|
1298
1298
|
} else {
|
|
1299
1299
|
if (resultSize > 1e3) {
|
|
@@ -1411,7 +1411,7 @@ Guide: https://goo.gle/gemini-cli-auth-docs#workspace-gca`;
|
|
|
1411
1411
|
const thinkingText = thinkingPayload && typeof thinkingPayload === "object" && "text" in thinkingPayload ? String(thinkingPayload.text || "") : "";
|
|
1412
1412
|
if (thinkingText) {
|
|
1413
1413
|
reasoningProcessor.processChunk(thinkingText);
|
|
1414
|
-
persistence.logger.debug("[gemini] Thinking chunk received:",
|
|
1414
|
+
persistence.logger.debug("[gemini] Thinking chunk received:", index$1.contentLogMetadata(thinkingText));
|
|
1415
1415
|
if (!thinkingText.startsWith("**")) {
|
|
1416
1416
|
const thinkingPreview = thinkingText.substring(0, 100);
|
|
1417
1417
|
messageBuffer.updateLastMessage(`[Thinking] ${thinkingPreview}...`, "system");
|
|
@@ -1550,7 +1550,7 @@ Guide: https://goo.gle/gemini-cli-auth-docs#workspace-gca`;
|
|
|
1550
1550
|
promptToSend = historyContext + promptToSend;
|
|
1551
1551
|
persistence.logger.debug(`[gemini] Injected conversation history context (${historyContext.length} chars)`);
|
|
1552
1552
|
}
|
|
1553
|
-
persistence.logger.debug("[gemini] Sending prompt to Gemini:",
|
|
1553
|
+
persistence.logger.debug("[gemini] Sending prompt to Gemini:", index$1.contentLogMetadata(promptToSend));
|
|
1554
1554
|
const MAX_RETRIES = 3;
|
|
1555
1555
|
const RETRY_DELAY_MS = 2e3;
|
|
1556
1556
|
let lastError = null;
|
|
@@ -1585,7 +1585,7 @@ Guide: https://goo.gle/gemini-cli-auth-docs#workspace-gca`;
|
|
|
1585
1585
|
const isInternalError = errorCode === -32603;
|
|
1586
1586
|
const isRetryable = isEmptyResponseError || isInternalError;
|
|
1587
1587
|
if (isRetryable && attempt < MAX_RETRIES) {
|
|
1588
|
-
persistence.logger.debug(`[gemini] Retryable error on attempt ${attempt}/${MAX_RETRIES}:`,
|
|
1588
|
+
persistence.logger.debug(`[gemini] Retryable error on attempt ${attempt}/${MAX_RETRIES}:`, index$1.contentLogMetadata(errorDetails));
|
|
1589
1589
|
messageBuffer.addMessage(`Gemini returned empty response, retrying (${attempt}/${MAX_RETRIES})...`, "status");
|
|
1590
1590
|
await new Promise((resolve2) => setTimeout(resolve2, RETRY_DELAY_MS * attempt));
|
|
1591
1591
|
continue;
|
|
@@ -1600,7 +1600,7 @@ Guide: https://goo.gle/gemini-cli-auth-docs#workspace-gca`;
|
|
|
1600
1600
|
first = false;
|
|
1601
1601
|
}
|
|
1602
1602
|
} catch (error) {
|
|
1603
|
-
persistence.logger.debug("[gemini] Error in gemini session:",
|
|
1603
|
+
persistence.logger.debug("[gemini] Error in gemini session:", index$1.errorLogMetadata(error));
|
|
1604
1604
|
const isAbortError = error instanceof Error && error.name === "AbortError";
|
|
1605
1605
|
if (isAbortError) {
|
|
1606
1606
|
messageBuffer.addMessage("Aborted by user", "status");
|
|
@@ -1668,7 +1668,7 @@ Guide: https://goo.gle/gemini-cli-auth-docs#workspace-gca`;
|
|
|
1668
1668
|
id: node_crypto.randomUUID(),
|
|
1669
1669
|
...options.length > 0 && { options }
|
|
1670
1670
|
};
|
|
1671
|
-
persistence.logger.debug("[gemini] Sending complete message to mobile:",
|
|
1671
|
+
persistence.logger.debug("[gemini] Sending complete message to mobile:", index$1.contentLogMetadata(finalMessageText));
|
|
1672
1672
|
session.sendAgentMessage("gemini", messagePayload);
|
|
1673
1673
|
accumulatedResponse = "";
|
|
1674
1674
|
isResponseInProgress = false;
|
|
@@ -2,12 +2,12 @@ import { useStdout, useInput, Box, Text, render } from 'ink';
|
|
|
2
2
|
import React, { useState, useRef, useEffect, useCallback } from 'react';
|
|
3
3
|
import { randomUUID } from 'node:crypto';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
-
import {
|
|
6
|
-
import { l as logger,
|
|
7
|
-
import { K as GEMINI_API_KEY_ENV, L as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, E as BasePermissionHandler, N as BaseReasoningProcessor, k as initialMachineMetadata, m as createSessionMetadata, n as setupOfflineReconnection, p as MessageQueue2, u as hashObject, O as MessageBuffer, Q as CHANGE_TITLE_INSTRUCTION, y as registerKillSessionHandler, v as startHappyServer } from './index-
|
|
5
|
+
import { m as connectionState, A as ApiClient, q as errorLogMetadata, n as notifyDaemonSessionStarted, t as contentLogMetadata } from './types-D6YKR7wo.mjs';
|
|
6
|
+
import { l as logger, r as readSettings, g as encodeBase64 } from './limits-DxArdmkZ.mjs';
|
|
7
|
+
import { K as GEMINI_API_KEY_ENV, L as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, E as BasePermissionHandler, N as BaseReasoningProcessor, k as initialMachineMetadata, m as createSessionMetadata, n as setupOfflineReconnection, p as MessageQueue2, u as hashObject, O as MessageBuffer, Q as CHANGE_TITLE_INSTRUCTION, y as registerKillSessionHandler, v as startHappyServer } from './index-Diu81aSC.mjs';
|
|
8
8
|
import { p as projectPath } from './projectPath-CSpqWdxp.mjs';
|
|
9
|
-
import { A as AcpBackend } from './AcpBackend-
|
|
10
|
-
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-
|
|
9
|
+
import { A as AcpBackend } from './AcpBackend-DLsPpWnc.mjs';
|
|
10
|
+
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-CxHoQo52.mjs';
|
|
11
11
|
import 'axios';
|
|
12
12
|
import 'node:events';
|
|
13
13
|
import 'socket.io-client';
|
|
@@ -32,7 +32,7 @@ import '@anthropic-ai/sandbox-runtime';
|
|
|
32
32
|
import 'expo-server-sdk';
|
|
33
33
|
import 'chalk';
|
|
34
34
|
import 'node:util';
|
|
35
|
-
import './agentGuidance-
|
|
35
|
+
import './agentGuidance-CupQ9Lve.mjs';
|
|
36
36
|
import '@anthropic-ai/claude-agent-sdk';
|
|
37
37
|
import 'ps-list';
|
|
38
38
|
import 'tmp';
|
|
@@ -3,10 +3,10 @@ import { execFileSync } from 'node:child_process';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import { existsSync, readFileSync } from 'node:fs';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
|
-
import {
|
|
7
|
-
import { A as AcpSessionManager } from './AcpSessionManager-
|
|
8
|
-
import { h as ensurePrivateDirectorySync, i as hardenPrivateFileSync, w as writePrivateFileSync,
|
|
9
|
-
import { k as initialMachineMetadata, m as createSessionMetadata, n as setupOfflineReconnection, p as MessageQueue2, y as registerKillSessionHandler } from './index-
|
|
6
|
+
import { q as errorLogMetadata, t as contentLogMetadata, m as connectionState, A as ApiClient, n as notifyDaemonSessionStarted } from './types-D6YKR7wo.mjs';
|
|
7
|
+
import { A as AcpSessionManager } from './AcpSessionManager-1pAH8SdV.mjs';
|
|
8
|
+
import { h as ensurePrivateDirectorySync, i as hardenPrivateFileSync, w as writePrivateFileSync, r as readSettings, g as encodeBase64, l as logger, c as configuration } from './limits-DxArdmkZ.mjs';
|
|
9
|
+
import { k as initialMachineMetadata, m as createSessionMetadata, n as setupOfflineReconnection, p as MessageQueue2, y as registerKillSessionHandler } from './index-Diu81aSC.mjs';
|
|
10
10
|
import WebSocket from 'ws';
|
|
11
11
|
import * as ed from '@noble/ed25519';
|
|
12
12
|
import { sha512 } from '@noble/hashes/sha2.js';
|
|
@@ -33,7 +33,7 @@ import '@anthropic-ai/sandbox-runtime';
|
|
|
33
33
|
import 'expo-server-sdk';
|
|
34
34
|
import 'chalk';
|
|
35
35
|
import 'node:util';
|
|
36
|
-
import './agentGuidance-
|
|
36
|
+
import './agentGuidance-CupQ9Lve.mjs';
|
|
37
37
|
import 'ink';
|
|
38
38
|
import 'react';
|
|
39
39
|
import '@anthropic-ai/claude-agent-sdk';
|
|
@@ -5,10 +5,10 @@ var node_child_process = require('node:child_process');
|
|
|
5
5
|
var os = require('node:os');
|
|
6
6
|
var node_fs = require('node:fs');
|
|
7
7
|
var path = require('node:path');
|
|
8
|
-
var
|
|
9
|
-
var AcpSessionManager = require('./AcpSessionManager-
|
|
10
|
-
var persistence = require('./limits-
|
|
11
|
-
var index = require('./index-
|
|
8
|
+
var index = require('./types-DZ5c-9f3.cjs');
|
|
9
|
+
var AcpSessionManager = require('./AcpSessionManager-DkBV80Rr.cjs');
|
|
10
|
+
var persistence = require('./limits-C_Sklt--.cjs');
|
|
11
|
+
var index$1 = require('./index-Dn0JMM8l.cjs');
|
|
12
12
|
var WebSocket = require('ws');
|
|
13
13
|
var ed = require('@noble/ed25519');
|
|
14
14
|
var sha2_js = require('@noble/hashes/sha2.js');
|
|
@@ -35,7 +35,7 @@ require('@anthropic-ai/sandbox-runtime');
|
|
|
35
35
|
require('expo-server-sdk');
|
|
36
36
|
require('chalk');
|
|
37
37
|
require('node:util');
|
|
38
|
-
require('./agentGuidance-
|
|
38
|
+
require('./agentGuidance-D1PDVswF.cjs');
|
|
39
39
|
require('ink');
|
|
40
40
|
require('react');
|
|
41
41
|
require('@anthropic-ai/claude-agent-sdk');
|
|
@@ -368,7 +368,7 @@ class OpenClawSocket {
|
|
|
368
368
|
try {
|
|
369
369
|
this.ws = new WebSocket(url);
|
|
370
370
|
} catch (err) {
|
|
371
|
-
this.options.log(`Failed to create WebSocket: ${JSON.stringify(
|
|
371
|
+
this.options.log(`Failed to create WebSocket: ${JSON.stringify(index.errorLogMetadata(err))}`);
|
|
372
372
|
this.updateStatus("error", "Failed to create connection");
|
|
373
373
|
this.scheduleReconnect();
|
|
374
374
|
return;
|
|
@@ -380,7 +380,7 @@ class OpenClawSocket {
|
|
|
380
380
|
this.handleMessage(data.toString());
|
|
381
381
|
});
|
|
382
382
|
this.ws.on("error", (err) => {
|
|
383
|
-
this.options.log(`WebSocket error: ${JSON.stringify(
|
|
383
|
+
this.options.log(`WebSocket error: ${JSON.stringify(index.errorLogMetadata(err))}`);
|
|
384
384
|
if (this.status === "connecting") {
|
|
385
385
|
this.updateStatus("error", "Connection failed");
|
|
386
386
|
}
|
|
@@ -473,7 +473,7 @@ class OpenClawSocket {
|
|
|
473
473
|
this.options.log(`Connected: ${JSON.stringify({ hasServerHost: Boolean(this.serverHost), hasMainSession: Boolean(this.mainSessionKey) })}`);
|
|
474
474
|
} catch (error) {
|
|
475
475
|
const errorMsg = error instanceof Error ? error.message : "";
|
|
476
|
-
this.options.log(`Connect failed: ${JSON.stringify(
|
|
476
|
+
this.options.log(`Connect failed: ${JSON.stringify(index.errorLogMetadata(error))}`);
|
|
477
477
|
if (errorMsg.includes("NOT_PAIRED")) {
|
|
478
478
|
const match = errorMsg.match(/requestId['":\s]+([a-f0-9-]+)/i);
|
|
479
479
|
this.pairingRequestId = match?.[1] ?? null;
|
|
@@ -493,7 +493,7 @@ class OpenClawSocket {
|
|
|
493
493
|
try {
|
|
494
494
|
frame = JSON.parse(data);
|
|
495
495
|
} catch {
|
|
496
|
-
this.options.log(`Invalid JSON: ${JSON.stringify(
|
|
496
|
+
this.options.log(`Invalid JSON: ${JSON.stringify(index.contentLogMetadata(data))}`);
|
|
497
497
|
return;
|
|
498
498
|
}
|
|
499
499
|
if (frame.type === "res") {
|
|
@@ -824,7 +824,7 @@ function resolveGatewayConfig(opts) {
|
|
|
824
824
|
async function runOpenClaw(opts) {
|
|
825
825
|
const verbose = opts.verbose === true;
|
|
826
826
|
const sessionTag = node_crypto.randomUUID();
|
|
827
|
-
|
|
827
|
+
index.connectionState.setBackend("openclaw");
|
|
828
828
|
const gatewayConfig = resolveGatewayConfig(opts);
|
|
829
829
|
const log = (msg) => {
|
|
830
830
|
persistence.logger.debug(`[openclaw] ${msg}`);
|
|
@@ -833,27 +833,27 @@ async function runOpenClaw(opts) {
|
|
|
833
833
|
}
|
|
834
834
|
};
|
|
835
835
|
log("Resolved configured gateway");
|
|
836
|
-
const api
|
|
836
|
+
const api = await index.ApiClient.create(opts.credentials);
|
|
837
837
|
const settings = await persistence.readSettings();
|
|
838
838
|
if (!settings?.machineId) {
|
|
839
839
|
throw new Error("No machine ID found in settings");
|
|
840
840
|
}
|
|
841
|
-
await api
|
|
841
|
+
await api.getOrCreateMachine({
|
|
842
842
|
machineId: settings.machineId,
|
|
843
|
-
metadata: index.initialMachineMetadata
|
|
843
|
+
metadata: index$1.initialMachineMetadata
|
|
844
844
|
});
|
|
845
|
-
const { state, metadata } = index.createSessionMetadata({
|
|
845
|
+
const { state, metadata } = index$1.createSessionMetadata({
|
|
846
846
|
flavor: "openclaw",
|
|
847
847
|
machineId: settings.machineId,
|
|
848
848
|
startedBy: opts.startedBy
|
|
849
849
|
});
|
|
850
|
-
const response = await api
|
|
850
|
+
const response = await api.getOrCreateSession({ tag: sessionTag, metadata, state });
|
|
851
851
|
if (response) {
|
|
852
852
|
log(`Happy Session ID: ${response.id}`);
|
|
853
853
|
}
|
|
854
854
|
let session;
|
|
855
|
-
const { session: initialSession, reconnectionHandle } = index.setupOfflineReconnection({
|
|
856
|
-
api
|
|
855
|
+
const { session: initialSession, reconnectionHandle } = index$1.setupOfflineReconnection({
|
|
856
|
+
api,
|
|
857
857
|
sessionTag,
|
|
858
858
|
metadata,
|
|
859
859
|
state,
|
|
@@ -865,7 +865,7 @@ async function runOpenClaw(opts) {
|
|
|
865
865
|
session = initialSession;
|
|
866
866
|
if (response) {
|
|
867
867
|
try {
|
|
868
|
-
await
|
|
868
|
+
await index.notifyDaemonSessionStarted(response.id, metadata, {
|
|
869
869
|
encryptionKey: persistence.encodeBase64(response.encryptionKey),
|
|
870
870
|
encryptionVariant: response.encryptionVariant,
|
|
871
871
|
seq: response.seq,
|
|
@@ -877,7 +877,7 @@ async function runOpenClaw(opts) {
|
|
|
877
877
|
}
|
|
878
878
|
}
|
|
879
879
|
const sessionManager = new AcpSessionManager.AcpSessionManager();
|
|
880
|
-
const messageQueue = new index.MessageQueue2(() => "");
|
|
880
|
+
const messageQueue = new index$1.MessageQueue2(() => "");
|
|
881
881
|
let shouldExit = false;
|
|
882
882
|
let abortController = new AbortController();
|
|
883
883
|
let pendingTurn = null;
|
|
@@ -914,7 +914,7 @@ async function runOpenClaw(opts) {
|
|
|
914
914
|
});
|
|
915
915
|
const onBackendMessage = (msg) => {
|
|
916
916
|
if (verbose) {
|
|
917
|
-
log(`Backend message: ${JSON.stringify(
|
|
917
|
+
log(`Backend message: ${JSON.stringify(index.contentLogMetadata(msg))}`);
|
|
918
918
|
}
|
|
919
919
|
if (msg.type === "status" && inTurn) {
|
|
920
920
|
const nextThinking = msg.status === "running";
|
|
@@ -927,7 +927,7 @@ async function runOpenClaw(opts) {
|
|
|
927
927
|
}
|
|
928
928
|
}
|
|
929
929
|
if (msg.type === "status" && (msg.status === "error" || msg.status === "stopped")) {
|
|
930
|
-
log(`Backend ${msg.status}: ${JSON.stringify(
|
|
930
|
+
log(`Backend ${msg.status}: ${JSON.stringify(index.contentLogMetadata(msg.detail))}`);
|
|
931
931
|
shouldExit = true;
|
|
932
932
|
messageQueue.close();
|
|
933
933
|
clearPendingTurn(new Error(`OpenClaw backend ${msg.status}`));
|
|
@@ -954,7 +954,7 @@ async function runOpenClaw(opts) {
|
|
|
954
954
|
await backend.cancel(sessionKey);
|
|
955
955
|
}
|
|
956
956
|
} catch (error) {
|
|
957
|
-
persistence.logger.debug("[openclaw] Abort failed:",
|
|
957
|
+
persistence.logger.debug("[openclaw] Abort failed:", index.errorLogMetadata(error));
|
|
958
958
|
}
|
|
959
959
|
inTurn = false;
|
|
960
960
|
thinking = false;
|
|
@@ -967,7 +967,7 @@ async function runOpenClaw(opts) {
|
|
|
967
967
|
session.rpcHandlerManager.registerHandler("openclaw-retry-pairing", async () => {
|
|
968
968
|
backend.retryConnect();
|
|
969
969
|
});
|
|
970
|
-
index.registerKillSessionHandler(session.rpcHandlerManager, async () => {
|
|
970
|
+
index$1.registerKillSessionHandler(session.rpcHandlerManager, async () => {
|
|
971
971
|
shouldExit = true;
|
|
972
972
|
messageQueue.close();
|
|
973
973
|
clearPendingTurn(new Error("Session terminated"));
|
|
@@ -984,7 +984,7 @@ async function runOpenClaw(opts) {
|
|
|
984
984
|
if (waitSignal.aborted) continue;
|
|
985
985
|
break;
|
|
986
986
|
}
|
|
987
|
-
log(`Incoming prompt: ${JSON.stringify(
|
|
987
|
+
log(`Incoming prompt: ${JSON.stringify(index.contentLogMetadata(batch.message))}`);
|
|
988
988
|
inTurn = true;
|
|
989
989
|
sendEnvelopes(sessionManager.startTurn());
|
|
990
990
|
const turnEnded = waitForTurnEnd();
|
|
@@ -993,14 +993,14 @@ async function runOpenClaw(opts) {
|
|
|
993
993
|
await turnEnded;
|
|
994
994
|
sendEnvelopes(sessionManager.endTurn("completed"));
|
|
995
995
|
} catch (error) {
|
|
996
|
-
log(`Turn ended: ${JSON.stringify(
|
|
996
|
+
log(`Turn ended: ${JSON.stringify(index.errorLogMetadata(error))}`);
|
|
997
997
|
sendEnvelopes(sessionManager.endTurn("failed"));
|
|
998
998
|
}
|
|
999
999
|
try {
|
|
1000
1000
|
const usage = await backend.getUsageSnapshot();
|
|
1001
1001
|
if (usage) session.sendAgentUsageSnapshot("openclaw", usage);
|
|
1002
1002
|
} catch (error) {
|
|
1003
|
-
persistence.logger.debug("[openclaw] Failed to report usage:",
|
|
1003
|
+
persistence.logger.debug("[openclaw] Failed to report usage:", index.errorLogMetadata(error));
|
|
1004
1004
|
}
|
|
1005
1005
|
inTurn = false;
|
|
1006
1006
|
thinking = false;
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
4
|
var node_fs = require('node:fs');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var persistence = require('./limits-
|
|
7
|
-
var index = require('./index-
|
|
6
|
+
var persistence = require('./limits-C_Sklt--.cjs');
|
|
7
|
+
var index = require('./index-Dn0JMM8l.cjs');
|
|
8
8
|
require('node:fs/promises');
|
|
9
9
|
require('node:os');
|
|
10
10
|
require('zod');
|
|
11
11
|
require('node:crypto');
|
|
12
12
|
require('tweetnacl');
|
|
13
13
|
require('node:util');
|
|
14
|
-
require('./types-
|
|
14
|
+
require('./types-DZ5c-9f3.cjs');
|
|
15
15
|
require('axios');
|
|
16
16
|
require('node:events');
|
|
17
17
|
require('socket.io-client');
|
|
@@ -31,7 +31,7 @@ require('fs');
|
|
|
31
31
|
require('node:readline');
|
|
32
32
|
require('@anthropic-ai/sandbox-runtime');
|
|
33
33
|
require('expo-server-sdk');
|
|
34
|
-
require('./agentGuidance-
|
|
34
|
+
require('./agentGuidance-D1PDVswF.cjs');
|
|
35
35
|
require('ink');
|
|
36
36
|
require('react');
|
|
37
37
|
require('@anthropic-ai/claude-agent-sdk');
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
-
import {
|
|
5
|
-
import { b as sendUserMessage, s as sessionWebUrl } from './index-
|
|
4
|
+
import { d as readPersistedSessions, c as configuration } from './limits-DxArdmkZ.mjs';
|
|
5
|
+
import { b as sendUserMessage, s as sessionWebUrl } from './index-Diu81aSC.mjs';
|
|
6
6
|
import 'node:fs/promises';
|
|
7
7
|
import 'node:os';
|
|
8
8
|
import 'zod';
|
|
9
9
|
import 'node:crypto';
|
|
10
10
|
import 'tweetnacl';
|
|
11
11
|
import 'node:util';
|
|
12
|
-
import './types-
|
|
12
|
+
import './types-D6YKR7wo.mjs';
|
|
13
13
|
import 'axios';
|
|
14
14
|
import 'node:events';
|
|
15
15
|
import 'socket.io-client';
|
|
@@ -29,7 +29,7 @@ import 'fs';
|
|
|
29
29
|
import 'node:readline';
|
|
30
30
|
import '@anthropic-ai/sandbox-runtime';
|
|
31
31
|
import 'expo-server-sdk';
|
|
32
|
-
import './agentGuidance-
|
|
32
|
+
import './agentGuidance-CupQ9Lve.mjs';
|
|
33
33
|
import 'ink';
|
|
34
34
|
import 'react';
|
|
35
35
|
import '@anthropic-ai/claude-agent-sdk';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
|
-
var index = require('./index-
|
|
5
|
-
var
|
|
4
|
+
var index = require('./index-Dn0JMM8l.cjs');
|
|
5
|
+
var index$1 = require('./types-DZ5c-9f3.cjs');
|
|
6
6
|
require('node:os');
|
|
7
7
|
require('node:crypto');
|
|
8
|
-
require('./limits-
|
|
8
|
+
require('./limits-C_Sklt--.cjs');
|
|
9
9
|
require('node:fs/promises');
|
|
10
10
|
require('node:fs');
|
|
11
11
|
require('node:path');
|
|
@@ -17,7 +17,7 @@ require('node:readline');
|
|
|
17
17
|
require('./projectPath-ChLhdOyt.cjs');
|
|
18
18
|
require('path');
|
|
19
19
|
require('url');
|
|
20
|
-
require('./agentGuidance-
|
|
20
|
+
require('./agentGuidance-D1PDVswF.cjs');
|
|
21
21
|
require('fs/promises');
|
|
22
22
|
require('ink');
|
|
23
23
|
require('react');
|
|
@@ -106,7 +106,7 @@ function parseSessionsArgs(args) {
|
|
|
106
106
|
if (ACTIONS_NEEDING_ID.has(options.action)) {
|
|
107
107
|
const id = positionals[0];
|
|
108
108
|
if (id === void 0) throw new Error(`${options.action} requires a session id`);
|
|
109
|
-
if (!
|
|
109
|
+
if (!index$1.isValidSessionId(id)) throw new Error(`Invalid session id: ${id}`);
|
|
110
110
|
options.sessionId = id;
|
|
111
111
|
}
|
|
112
112
|
if (ACTIONS_NEEDING_REQUEST_ID.has(options.action)) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions, c as listSessions, r as readSessionTranscript, d as stopSession, e as resolvePermissionRequest, f as archiveSession } from './index-
|
|
3
|
-
import { i as isValidSessionId } from './types-
|
|
2
|
+
import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions, c as listSessions, r as readSessionTranscript, d as stopSession, e as resolvePermissionRequest, f as archiveSession } from './index-Diu81aSC.mjs';
|
|
3
|
+
import { i as isValidSessionId } from './types-D6YKR7wo.mjs';
|
|
4
4
|
import 'node:os';
|
|
5
5
|
import 'node:crypto';
|
|
6
|
-
import './limits-
|
|
6
|
+
import './limits-DxArdmkZ.mjs';
|
|
7
7
|
import 'node:fs/promises';
|
|
8
8
|
import 'node:fs';
|
|
9
9
|
import 'node:path';
|
|
@@ -15,7 +15,7 @@ import 'node:readline';
|
|
|
15
15
|
import './projectPath-CSpqWdxp.mjs';
|
|
16
16
|
import 'path';
|
|
17
17
|
import 'url';
|
|
18
|
-
import './agentGuidance-
|
|
18
|
+
import './agentGuidance-CupQ9Lve.mjs';
|
|
19
19
|
import 'fs/promises';
|
|
20
20
|
import 'ink';
|
|
21
21
|
import 'react';
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
4
|
var node_fs = require('node:fs');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var
|
|
7
|
-
var index = require('./index-
|
|
8
|
-
var persistence = require('./limits-
|
|
6
|
+
var index$1 = require('./types-DZ5c-9f3.cjs');
|
|
7
|
+
var index = require('./index-Dn0JMM8l.cjs');
|
|
8
|
+
var persistence = require('./limits-C_Sklt--.cjs');
|
|
9
9
|
require('axios');
|
|
10
10
|
require('node:events');
|
|
11
11
|
require('socket.io-client');
|
|
@@ -30,7 +30,7 @@ require('tweetnacl');
|
|
|
30
30
|
require('node:readline');
|
|
31
31
|
require('@anthropic-ai/sandbox-runtime');
|
|
32
32
|
require('expo-server-sdk');
|
|
33
|
-
require('./agentGuidance-
|
|
33
|
+
require('./agentGuidance-D1PDVswF.cjs');
|
|
34
34
|
require('ink');
|
|
35
35
|
require('react');
|
|
36
36
|
require('@anthropic-ai/claude-agent-sdk');
|
|
@@ -197,13 +197,13 @@ async function handleSpawnCommand(args) {
|
|
|
197
197
|
console.error(chalk.red("Error:"), `Directory does not exist: ${directory}`);
|
|
198
198
|
process.exit(1);
|
|
199
199
|
}
|
|
200
|
-
if (!await
|
|
200
|
+
if (!await index$1.checkIfDaemonRunningAndCleanupStaleState()) {
|
|
201
201
|
console.error(chalk.red("Error:"), "Happy daemon is not running on this machine.");
|
|
202
202
|
console.error(`Start it with ${chalk.cyan("very-happy daemon start")} and retry.`);
|
|
203
203
|
process.exit(1);
|
|
204
204
|
}
|
|
205
205
|
persistence.logger.debug(`[SPAWN CMD] Spawning session in ${directory}`);
|
|
206
|
-
const result = await
|
|
206
|
+
const result = await index$1.spawnDaemonSession(directory, void 0, {
|
|
207
207
|
spawnedBy: options.spawnedBy,
|
|
208
208
|
permissionMode: options.permissionMode,
|
|
209
209
|
agent: options.agent,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { readFileSync, statSync } from 'node:fs';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
-
import { c as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession } from './types-
|
|
5
|
-
import { s as sessionWebUrl, i as isValidSpawnOrigin, a as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES, S as SPAWN_AGENTS, w as waitForSessionKey, b as sendUserMessage } from './index-
|
|
6
|
-
import { l as logger } from './limits-
|
|
4
|
+
import { c as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession } from './types-D6YKR7wo.mjs';
|
|
5
|
+
import { s as sessionWebUrl, i as isValidSpawnOrigin, a as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES, S as SPAWN_AGENTS, w as waitForSessionKey, b as sendUserMessage } from './index-Diu81aSC.mjs';
|
|
6
|
+
import { l as logger } from './limits-DxArdmkZ.mjs';
|
|
7
7
|
import 'axios';
|
|
8
8
|
import 'node:events';
|
|
9
9
|
import 'socket.io-client';
|
|
@@ -28,7 +28,7 @@ import 'tweetnacl';
|
|
|
28
28
|
import 'node:readline';
|
|
29
29
|
import '@anthropic-ai/sandbox-runtime';
|
|
30
30
|
import 'expo-server-sdk';
|
|
31
|
-
import './agentGuidance-
|
|
31
|
+
import './agentGuidance-CupQ9Lve.mjs';
|
|
32
32
|
import 'ink';
|
|
33
33
|
import 'react';
|
|
34
34
|
import '@anthropic-ai/claude-agent-sdk';
|
|
@@ -4,15 +4,15 @@ var os = require('node:os');
|
|
|
4
4
|
var promises = require('node:fs/promises');
|
|
5
5
|
var z = require('zod');
|
|
6
6
|
var node_crypto = require('node:crypto');
|
|
7
|
-
var agentGuidance = require('./agentGuidance-
|
|
8
|
-
var persistence = require('./limits-
|
|
7
|
+
var agentGuidance = require('./agentGuidance-D1PDVswF.cjs');
|
|
8
|
+
var persistence = require('./limits-C_Sklt--.cjs');
|
|
9
9
|
var path = require('node:path');
|
|
10
|
-
var index = require('./index-
|
|
10
|
+
var index = require('./index-Dn0JMM8l.cjs');
|
|
11
11
|
require('node:fs');
|
|
12
12
|
require('tweetnacl');
|
|
13
13
|
require('chalk');
|
|
14
14
|
require('node:util');
|
|
15
|
-
require('./types-
|
|
15
|
+
require('./types-DZ5c-9f3.cjs');
|
|
16
16
|
require('axios');
|
|
17
17
|
require('node:events');
|
|
18
18
|
require('socket.io-client');
|
|
@@ -2,15 +2,15 @@ import { homedir } from 'node:os';
|
|
|
2
2
|
import { unlink, rmdir, mkdir, lstat, readFile, writeFile, rename } from 'node:fs/promises';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { createHash, randomUUID } from 'node:crypto';
|
|
5
|
-
import { d as teamRequest, e as createTeamsClient } from './agentGuidance-
|
|
6
|
-
import {
|
|
5
|
+
import { d as teamRequest, e as createTeamsClient } from './agentGuidance-CupQ9Lve.mjs';
|
|
6
|
+
import { e as readCredentialsForConfiguredRelay } from './limits-DxArdmkZ.mjs';
|
|
7
7
|
import { join, resolve, dirname } from 'node:path';
|
|
8
|
-
import { J as TEAM_SKILL } from './index-
|
|
8
|
+
import { J as TEAM_SKILL } from './index-Diu81aSC.mjs';
|
|
9
9
|
import 'node:fs';
|
|
10
10
|
import 'tweetnacl';
|
|
11
11
|
import 'chalk';
|
|
12
12
|
import 'node:util';
|
|
13
|
-
import './types-
|
|
13
|
+
import './types-D6YKR7wo.mjs';
|
|
14
14
|
import 'axios';
|
|
15
15
|
import 'node:events';
|
|
16
16
|
import 'socket.io-client';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { c as readTeamScope, t as teamScopePath } from './agentGuidance-
|
|
1
|
+
import { e as readCredentialsForConfiguredRelay, c as configuration } from './limits-DxArdmkZ.mjs';
|
|
2
|
+
import { h as createBuiltinTodoClient, B as BUILTIN_TODO_SKILL } from './types-D6YKR7wo.mjs';
|
|
3
|
+
import { c as readTeamScope, t as teamScopePath } from './agentGuidance-CupQ9Lve.mjs';
|
|
4
4
|
import 'node:fs/promises';
|
|
5
5
|
import 'node:fs';
|
|
6
6
|
import 'node:os';
|