very-happy-cli 0.2.118 → 0.2.120
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-Bk9b823B.mjs → AcpBackend-DiIJaJWG.mjs} +1 -1
- package/dist/{AcpBackend-p_KNJkHc.cjs → AcpBackend-tou8FQXI.cjs} +1 -1
- package/dist/{AcpSessionManager-CDvqVHKf.mjs → AcpSessionManager-CZ0Az0GG.mjs} +1 -1
- package/dist/{AcpSessionManager-B9FTbpGQ.cjs → AcpSessionManager-fF_HFB98.cjs} +1 -1
- package/dist/{config-CkUn1dI4.cjs → config-CEbOao_0.cjs} +2 -2
- package/dist/{config-CIpgmGLR.mjs → config-CGDxsTZg.mjs} +2 -2
- package/dist/{index-BXOXRblP.cjs → index-BlkIz9BQ.cjs} +73 -36
- package/dist/{index-DIXjhnV1.mjs → index-CUJ6faw1.mjs} +69 -32
- package/dist/{index-CxjX8DGz.cjs → index-CYizH-JC.cjs} +2 -2
- package/dist/{index-B6cpyG_G.mjs → index-D4_LW69g.mjs} +5 -5
- package/dist/{index-BUVQf9PI.mjs → index-DKj_0dqB.mjs} +2 -2
- package/dist/{index-BzgtwTxC.cjs → index-HKcuQ_fQ.cjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{installTerminalHooks-BAa6LaQQ.mjs → installTerminalHooks-B3EGNaJr.mjs} +2 -2
- package/dist/{installTerminalHooks-lXQa6bQU.cjs → installTerminalHooks-MWVPJDxV.cjs} +2 -2
- package/dist/lib.cjs +1 -1
- package/dist/lib.mjs +1 -1
- package/dist/{mcp-Dwc299mU.mjs → mcp-CZ1Z6AI5.mjs} +2 -2
- package/dist/{mcp-DMD7FxBI.cjs → mcp-DBKk5L6_.cjs} +2 -2
- package/dist/{runGemini-Bj4Egq7j.cjs → runGemini-BRUmjZgV.cjs} +4 -4
- package/dist/{runGemini-BaxGXE9w.mjs → runGemini-C3BCKTMp.mjs} +4 -4
- package/dist/{runOpenClaw-BwJhbIKU.mjs → runOpenClaw-DEYzcGSV.mjs} +3 -3
- package/dist/{runOpenClaw-BJhSvXYy.cjs → runOpenClaw-o1ImBlcJ.cjs} +3 -3
- package/dist/{send-BWGUkWhi.cjs → send-B9fh96vR.cjs} +2 -2
- package/dist/{send-DX13svrS.mjs → send-DFGH_-s_.mjs} +2 -2
- package/dist/{sessions-CGhpBNqn.cjs → sessions-BNyEJ2_6.cjs} +2 -2
- package/dist/{sessions-L7O3ypda.mjs → sessions-CKVfXHyi.mjs} +2 -2
- package/dist/{spawn-DPDWZdoW.mjs → spawn-B6kP4YjA.mjs} +2 -2
- package/dist/{spawn-CbY233Eg.cjs → spawn-xPV7-s4S.cjs} +2 -2
- package/dist/{types-ClvvHves.cjs → types-7ZSxm6Pi.cjs} +49 -31
- package/dist/{types-BtuOM9lw.mjs → types-Di0o0BdV.mjs} +48 -31
- package/package.json +7 -7
|
@@ -51,7 +51,7 @@ var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
|
|
|
51
51
|
var pty__namespace = /*#__PURE__*/_interopNamespaceDefault(pty);
|
|
52
52
|
|
|
53
53
|
var name = "very-happy-cli";
|
|
54
|
-
var version = "0.2.
|
|
54
|
+
var version = "0.2.120";
|
|
55
55
|
var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
|
|
56
56
|
var author = "Kirill Dubovitskiy";
|
|
57
57
|
var contributors = [
|
|
@@ -164,12 +164,12 @@ var dependencies = {
|
|
|
164
164
|
zod: "^4.0.0"
|
|
165
165
|
};
|
|
166
166
|
var optionalDependencies = {
|
|
167
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
168
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
169
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
170
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
171
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
172
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
167
|
+
"very-happy-tools-arm64-darwin": "0.2.120",
|
|
168
|
+
"very-happy-tools-x64-darwin": "0.2.120",
|
|
169
|
+
"very-happy-tools-arm64-linux": "0.2.120",
|
|
170
|
+
"very-happy-tools-x64-linux": "0.2.120",
|
|
171
|
+
"very-happy-tools-arm64-win32": "0.2.120",
|
|
172
|
+
"very-happy-tools-x64-win32": "0.2.120"
|
|
173
173
|
};
|
|
174
174
|
var devDependencies = {
|
|
175
175
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -1685,7 +1685,7 @@ class RpcHandlerManager {
|
|
|
1685
1685
|
}
|
|
1686
1686
|
}
|
|
1687
1687
|
|
|
1688
|
-
const __dirname$1 = path$1.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('types-
|
|
1688
|
+
const __dirname$1 = path$1.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('types-7ZSxm6Pi.cjs', document.baseURI).href))));
|
|
1689
1689
|
function projectPath() {
|
|
1690
1690
|
const path = path$1.resolve(__dirname$1, "..");
|
|
1691
1691
|
return path;
|
|
@@ -4472,33 +4472,43 @@ function migrateSettings(raw, fromVersion) {
|
|
|
4472
4472
|
let migrated = { ...raw };
|
|
4473
4473
|
return migrated;
|
|
4474
4474
|
}
|
|
4475
|
-
async function
|
|
4475
|
+
async function readSettingsOutcome() {
|
|
4476
4476
|
if (!node_fs.existsSync(configuration.settingsFile)) {
|
|
4477
|
-
return {
|
|
4477
|
+
return { kind: "absent" };
|
|
4478
4478
|
}
|
|
4479
4479
|
try {
|
|
4480
|
-
|
|
4481
|
-
const raw = JSON.parse(content);
|
|
4482
|
-
const schemaVersion = raw.schemaVersion ?? 1;
|
|
4483
|
-
if (schemaVersion > SUPPORTED_SCHEMA_VERSION) {
|
|
4484
|
-
logger.warn(
|
|
4485
|
-
`\u26A0\uFE0F Settings schema v${schemaVersion} > supported v${SUPPORTED_SCHEMA_VERSION}. Update happy-cli for full functionality.`
|
|
4486
|
-
);
|
|
4487
|
-
}
|
|
4488
|
-
const migrated = migrateSettings(raw, schemaVersion);
|
|
4489
|
-
if (migrated.sandboxConfig !== void 0) {
|
|
4490
|
-
try {
|
|
4491
|
-
migrated.sandboxConfig = SandboxConfigSchema.parse(migrated.sandboxConfig);
|
|
4492
|
-
} catch (error) {
|
|
4493
|
-
logger.warn(`\u26A0\uFE0F Invalid sandbox config - skipping. Error: ${error.message}`);
|
|
4494
|
-
migrated.sandboxConfig = void 0;
|
|
4495
|
-
}
|
|
4496
|
-
}
|
|
4497
|
-
return { ...defaultSettings, ...migrated };
|
|
4480
|
+
return { kind: "ok", settings: await parseSettingsFile() };
|
|
4498
4481
|
} catch (error) {
|
|
4499
|
-
|
|
4500
|
-
|
|
4482
|
+
return { kind: "unreadable", error: error?.message ?? String(error) };
|
|
4483
|
+
}
|
|
4484
|
+
}
|
|
4485
|
+
async function readSettings() {
|
|
4486
|
+
const outcome = await readSettingsOutcome();
|
|
4487
|
+
if (outcome.kind === "ok") return outcome.settings;
|
|
4488
|
+
if (outcome.kind === "unreadable") {
|
|
4489
|
+
logger.warn(`Failed to read settings: ${outcome.error}`);
|
|
4490
|
+
}
|
|
4491
|
+
return { ...defaultSettings };
|
|
4492
|
+
}
|
|
4493
|
+
async function parseSettingsFile() {
|
|
4494
|
+
const content = await promises.readFile(configuration.settingsFile, "utf8");
|
|
4495
|
+
const raw = JSON.parse(content);
|
|
4496
|
+
const schemaVersion = raw.schemaVersion ?? 1;
|
|
4497
|
+
if (schemaVersion > SUPPORTED_SCHEMA_VERSION) {
|
|
4498
|
+
logger.warn(
|
|
4499
|
+
`\u26A0\uFE0F Settings schema v${schemaVersion} > supported v${SUPPORTED_SCHEMA_VERSION}. Update happy-cli for full functionality.`
|
|
4500
|
+
);
|
|
4501
4501
|
}
|
|
4502
|
+
const migrated = migrateSettings(raw);
|
|
4503
|
+
if (migrated.sandboxConfig !== void 0) {
|
|
4504
|
+
try {
|
|
4505
|
+
migrated.sandboxConfig = SandboxConfigSchema.parse(migrated.sandboxConfig);
|
|
4506
|
+
} catch (error) {
|
|
4507
|
+
logger.warn(`\u26A0\uFE0F Invalid sandbox config - skipping. Error: ${error.message}`);
|
|
4508
|
+
migrated.sandboxConfig = void 0;
|
|
4509
|
+
}
|
|
4510
|
+
}
|
|
4511
|
+
return { ...defaultSettings, ...migrated };
|
|
4502
4512
|
}
|
|
4503
4513
|
async function writeSettings(settings) {
|
|
4504
4514
|
await ensurePrivateDirectory(configuration.happyHomeDir);
|
|
@@ -4541,7 +4551,13 @@ async function updateSettings(updater) {
|
|
|
4541
4551
|
throw new Error(`Failed to acquire settings lock after ${MAX_LOCK_ATTEMPTS * LOCK_RETRY_INTERVAL_MS / 1e3} seconds`);
|
|
4542
4552
|
}
|
|
4543
4553
|
try {
|
|
4544
|
-
const
|
|
4554
|
+
const outcome = await readSettingsOutcome();
|
|
4555
|
+
if (outcome.kind === "unreadable") {
|
|
4556
|
+
throw new Error(
|
|
4557
|
+
`Settings file ${configuration.settingsFile} exists but could not be read (${outcome.error}). Refusing to overwrite it \u2014 fix or remove the file (a removed file is recreated with defaults).`
|
|
4558
|
+
);
|
|
4559
|
+
}
|
|
4560
|
+
const current = outcome.kind === "ok" ? outcome.settings : { ...defaultSettings };
|
|
4545
4561
|
const updated = await updater(current);
|
|
4546
4562
|
await ensurePrivateDirectory(configuration.happyHomeDir);
|
|
4547
4563
|
await writePrivateFile(tmpFile, JSON.stringify(updated, null, 2));
|
|
@@ -4788,6 +4804,7 @@ var persistence = /*#__PURE__*/Object.freeze({
|
|
|
4788
4804
|
readDaemonState: readDaemonState,
|
|
4789
4805
|
readPersistedSessions: readPersistedSessions,
|
|
4790
4806
|
readSettings: readSettings,
|
|
4807
|
+
readSettingsOutcome: readSettingsOutcome,
|
|
4791
4808
|
readTrackedClaudeSessionIds: readTrackedClaudeSessionIds,
|
|
4792
4809
|
releaseDaemonLock: releaseDaemonLock,
|
|
4793
4810
|
updateSettings: updateSettings,
|
|
@@ -16720,6 +16737,7 @@ exports.readDaemonState = readDaemonState;
|
|
|
16720
16737
|
exports.readLocalHappyAgentCredentials = readLocalHappyAgentCredentials;
|
|
16721
16738
|
exports.readPersistedSessions = readPersistedSessions;
|
|
16722
16739
|
exports.readSettings = readSettings;
|
|
16740
|
+
exports.readSettingsOutcome = readSettingsOutcome;
|
|
16723
16741
|
exports.readVhTerminal = readVhTerminal;
|
|
16724
16742
|
exports.releaseDaemonLock = releaseDaemonLock;
|
|
16725
16743
|
exports.resolveCliUpdateCheckInterval = resolveCliUpdateCheckInterval;
|
|
@@ -29,7 +29,7 @@ import { SandboxManager } from '@anthropic-ai/sandbox-runtime';
|
|
|
29
29
|
import { Expo } from 'expo-server-sdk';
|
|
30
30
|
|
|
31
31
|
var name = "very-happy-cli";
|
|
32
|
-
var version = "0.2.
|
|
32
|
+
var version = "0.2.120";
|
|
33
33
|
var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
|
|
34
34
|
var author = "Kirill Dubovitskiy";
|
|
35
35
|
var contributors = [
|
|
@@ -142,12 +142,12 @@ var dependencies = {
|
|
|
142
142
|
zod: "^4.0.0"
|
|
143
143
|
};
|
|
144
144
|
var optionalDependencies = {
|
|
145
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
146
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
147
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
148
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
149
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
150
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
145
|
+
"very-happy-tools-arm64-darwin": "0.2.120",
|
|
146
|
+
"very-happy-tools-x64-darwin": "0.2.120",
|
|
147
|
+
"very-happy-tools-arm64-linux": "0.2.120",
|
|
148
|
+
"very-happy-tools-x64-linux": "0.2.120",
|
|
149
|
+
"very-happy-tools-arm64-win32": "0.2.120",
|
|
150
|
+
"very-happy-tools-x64-win32": "0.2.120"
|
|
151
151
|
};
|
|
152
152
|
var devDependencies = {
|
|
153
153
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -4450,33 +4450,43 @@ function migrateSettings(raw, fromVersion) {
|
|
|
4450
4450
|
let migrated = { ...raw };
|
|
4451
4451
|
return migrated;
|
|
4452
4452
|
}
|
|
4453
|
-
async function
|
|
4453
|
+
async function readSettingsOutcome() {
|
|
4454
4454
|
if (!existsSync(configuration.settingsFile)) {
|
|
4455
|
-
return {
|
|
4455
|
+
return { kind: "absent" };
|
|
4456
4456
|
}
|
|
4457
4457
|
try {
|
|
4458
|
-
|
|
4459
|
-
const raw = JSON.parse(content);
|
|
4460
|
-
const schemaVersion = raw.schemaVersion ?? 1;
|
|
4461
|
-
if (schemaVersion > SUPPORTED_SCHEMA_VERSION) {
|
|
4462
|
-
logger.warn(
|
|
4463
|
-
`\u26A0\uFE0F Settings schema v${schemaVersion} > supported v${SUPPORTED_SCHEMA_VERSION}. Update happy-cli for full functionality.`
|
|
4464
|
-
);
|
|
4465
|
-
}
|
|
4466
|
-
const migrated = migrateSettings(raw, schemaVersion);
|
|
4467
|
-
if (migrated.sandboxConfig !== void 0) {
|
|
4468
|
-
try {
|
|
4469
|
-
migrated.sandboxConfig = SandboxConfigSchema.parse(migrated.sandboxConfig);
|
|
4470
|
-
} catch (error) {
|
|
4471
|
-
logger.warn(`\u26A0\uFE0F Invalid sandbox config - skipping. Error: ${error.message}`);
|
|
4472
|
-
migrated.sandboxConfig = void 0;
|
|
4473
|
-
}
|
|
4474
|
-
}
|
|
4475
|
-
return { ...defaultSettings, ...migrated };
|
|
4458
|
+
return { kind: "ok", settings: await parseSettingsFile() };
|
|
4476
4459
|
} catch (error) {
|
|
4477
|
-
|
|
4478
|
-
|
|
4460
|
+
return { kind: "unreadable", error: error?.message ?? String(error) };
|
|
4461
|
+
}
|
|
4462
|
+
}
|
|
4463
|
+
async function readSettings() {
|
|
4464
|
+
const outcome = await readSettingsOutcome();
|
|
4465
|
+
if (outcome.kind === "ok") return outcome.settings;
|
|
4466
|
+
if (outcome.kind === "unreadable") {
|
|
4467
|
+
logger.warn(`Failed to read settings: ${outcome.error}`);
|
|
4468
|
+
}
|
|
4469
|
+
return { ...defaultSettings };
|
|
4470
|
+
}
|
|
4471
|
+
async function parseSettingsFile() {
|
|
4472
|
+
const content = await readFile$1(configuration.settingsFile, "utf8");
|
|
4473
|
+
const raw = JSON.parse(content);
|
|
4474
|
+
const schemaVersion = raw.schemaVersion ?? 1;
|
|
4475
|
+
if (schemaVersion > SUPPORTED_SCHEMA_VERSION) {
|
|
4476
|
+
logger.warn(
|
|
4477
|
+
`\u26A0\uFE0F Settings schema v${schemaVersion} > supported v${SUPPORTED_SCHEMA_VERSION}. Update happy-cli for full functionality.`
|
|
4478
|
+
);
|
|
4479
4479
|
}
|
|
4480
|
+
const migrated = migrateSettings(raw);
|
|
4481
|
+
if (migrated.sandboxConfig !== void 0) {
|
|
4482
|
+
try {
|
|
4483
|
+
migrated.sandboxConfig = SandboxConfigSchema.parse(migrated.sandboxConfig);
|
|
4484
|
+
} catch (error) {
|
|
4485
|
+
logger.warn(`\u26A0\uFE0F Invalid sandbox config - skipping. Error: ${error.message}`);
|
|
4486
|
+
migrated.sandboxConfig = void 0;
|
|
4487
|
+
}
|
|
4488
|
+
}
|
|
4489
|
+
return { ...defaultSettings, ...migrated };
|
|
4480
4490
|
}
|
|
4481
4491
|
async function writeSettings(settings) {
|
|
4482
4492
|
await ensurePrivateDirectory(configuration.happyHomeDir);
|
|
@@ -4519,7 +4529,13 @@ async function updateSettings(updater) {
|
|
|
4519
4529
|
throw new Error(`Failed to acquire settings lock after ${MAX_LOCK_ATTEMPTS * LOCK_RETRY_INTERVAL_MS / 1e3} seconds`);
|
|
4520
4530
|
}
|
|
4521
4531
|
try {
|
|
4522
|
-
const
|
|
4532
|
+
const outcome = await readSettingsOutcome();
|
|
4533
|
+
if (outcome.kind === "unreadable") {
|
|
4534
|
+
throw new Error(
|
|
4535
|
+
`Settings file ${configuration.settingsFile} exists but could not be read (${outcome.error}). Refusing to overwrite it \u2014 fix or remove the file (a removed file is recreated with defaults).`
|
|
4536
|
+
);
|
|
4537
|
+
}
|
|
4538
|
+
const current = outcome.kind === "ok" ? outcome.settings : { ...defaultSettings };
|
|
4523
4539
|
const updated = await updater(current);
|
|
4524
4540
|
await ensurePrivateDirectory(configuration.happyHomeDir);
|
|
4525
4541
|
await writePrivateFile(tmpFile, JSON.stringify(updated, null, 2));
|
|
@@ -4766,6 +4782,7 @@ var persistence = /*#__PURE__*/Object.freeze({
|
|
|
4766
4782
|
readDaemonState: readDaemonState,
|
|
4767
4783
|
readPersistedSessions: readPersistedSessions,
|
|
4768
4784
|
readSettings: readSettings,
|
|
4785
|
+
readSettingsOutcome: readSettingsOutcome,
|
|
4769
4786
|
readTrackedClaudeSessionIds: readTrackedClaudeSessionIds,
|
|
4770
4787
|
releaseDaemonLock: releaseDaemonLock,
|
|
4771
4788
|
updateSettings: updateSettings,
|
|
@@ -16630,4 +16647,4 @@ const RawJSONLinesSchema = z$1.discriminatedUnion("type", [
|
|
|
16630
16647
|
}).passthrough()
|
|
16631
16648
|
]);
|
|
16632
16649
|
|
|
16633
|
-
export {
|
|
16650
|
+
export { decideMirrorBinding as $, ApiClient as A, readCredentials as B, credentialRelayProblem as C, deriveLocalCliUpdateSummary as D, readSettingsOutcome as E, updateSettings as F, encodeBase64Url as G, decodeBase64 as H, InvalidateSync as I, writeCredentialsLegacy as J, writeCredentialsDataKey as K, readCredentialsForConfiguredRelay as L, MAX_CHAT_ATTACHMENT_SOURCE_BYTES as M, encrypt as N, isClaudeSessionId as O, getLocalHappyAgentCredentialPath as P, readLocalHappyAgentCredentials as Q, RawJSONLinesSchema as R, STREAM_DELTA_MAX_CHARS as S, decryptWithDataKey as T, decryptLegacy as U, compareExactVersions as V, extractCompleteLines as W, decideBackfill as X, parseTerminalHookPayload as Y, tmuxArgs as Z, scrubTmuxClientEnv as _, ApiSessionClient as a, MIRROR_BACKFILL_LINES_DEFAULT as a0, persistSession as a1, mirrorLineKey as a2, mirrorLocalId as a3, detectCLIAvailability as a4, detectResumeSupport as a5, acquireDaemonLock as a6, summarizeSpawnSessionForLog as a7, deletePersistedSessions as a8, shellescape as a9, decrypt as aa, writeDaemonState as ab, writeSettings as ac, fetchCliUpdateState as ad, resolveCliUpdateCheckInterval as ae, DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS as af, releaseDaemonLock as ag, listVhTerminals as ah, isValidTerminalId as ai, readVhTerminal as aj, sendToVhTerminal as ak, TITLE_PROMPT_PREFIX as al, BOARD_ANALYZER_PROMPT_PREFIX as am, startOfflineReconnection as an, clearCredentials as ao, clearMachineId as ap, SandboxConfigSchema as aq, CodexAppServerClient as ar, getLatestDaemonLog as as, persistence as at, api as au, createEnvelope as b, configuration as c, connectionState as d, readSettings as e, encodeBase64 as f, contentLogMetadata as g, errorLogMetadata as h, isValidSessionId as i, packageJson as j, delay as k, logger as l, ensurePrivateDirectorySync as m, hardenPrivateFileSync as n, readDaemonState as o, projectPath as p, clearDaemonState as q, readPersistedSessions as r, getProjectPath as s, initializeSandbox as t, wrapCommand as u, AsyncLock as v, writePrivateFileSync as w, ensurePrivateDirectory as x, hardenPrivateFile as y, commandOnPath as z };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "very-happy-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.120",
|
|
4
4
|
"description": "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.",
|
|
5
5
|
"author": "Kirill Dubovitskiy",
|
|
6
6
|
"contributors": [
|
|
@@ -113,12 +113,12 @@
|
|
|
113
113
|
"zod": "^4.0.0"
|
|
114
114
|
},
|
|
115
115
|
"optionalDependencies": {
|
|
116
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
117
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
118
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
119
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
120
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
121
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
116
|
+
"very-happy-tools-arm64-darwin": "0.2.120",
|
|
117
|
+
"very-happy-tools-x64-darwin": "0.2.120",
|
|
118
|
+
"very-happy-tools-arm64-linux": "0.2.120",
|
|
119
|
+
"very-happy-tools-x64-linux": "0.2.120",
|
|
120
|
+
"very-happy-tools-arm64-win32": "0.2.120",
|
|
121
|
+
"very-happy-tools-x64-win32": "0.2.120"
|
|
122
122
|
},
|
|
123
123
|
"devDependencies": {
|
|
124
124
|
"@slopus/happy-wire": "workspace:*",
|