very-happy-cli 0.2.150 → 0.2.152
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-C-dhGJgd.mjs → AcpBackend-Bs3wwYbt.mjs} +2 -2
- package/dist/{AcpBackend-CXawaWWx.cjs → AcpBackend-CogiKCng.cjs} +2 -2
- package/dist/{AcpSessionManager-DKOtSqJc.mjs → AcpSessionManager-BT8PJMEm.mjs} +1 -1
- package/dist/{AcpSessionManager-TrwEZR7y.cjs → AcpSessionManager-BazkBuFo.cjs} +9 -9
- package/dist/agentGuidance-CqBn77AI.cjs +553 -0
- package/dist/agentGuidance-Daxn5Nvj.mjs +529 -0
- package/dist/{agentHome-Dm-Wjs38.mjs → agentHome-CCYfs8Ec.mjs} +3 -3
- package/dist/{agentHome-rylNIkix.cjs → agentHome-CpJjrQZc.cjs} +3 -3
- package/dist/auto-DV5emt1-.mjs +466 -0
- package/dist/auto-DncmTDvw.cjs +472 -0
- package/dist/codex/happyMcpStdioBridge.cjs +4 -2
- package/dist/codex/happyMcpStdioBridge.mjs +4 -2
- package/dist/{config-Dhu6LU0h.mjs → config-DbKpQpdL.mjs} +5 -5
- package/dist/{config-CgPu2wtS.cjs → config-DeJgSMh-.cjs} +5 -5
- package/dist/{index-CpNYvMTJ.mjs → index-BauTv2jB.mjs} +900 -72
- package/dist/{index-BsYH1sjV.mjs → index-CN7OF2cU.mjs} +5 -5
- package/dist/{index-DvfCUuDK.cjs → index-CRaJ9k2p.cjs} +5 -5
- package/dist/{index-CzpooENj.mjs → index-DahaLbu4.mjs} +19 -19
- package/dist/{index-K6mUS0jF.cjs → index-ZIW1jrYm.cjs} +941 -104
- package/dist/{index-DEVkDRas.cjs → index-imt4mC41.cjs} +19 -19
- package/dist/index.cjs +4 -4
- package/dist/index.mjs +4 -4
- package/dist/install-C1K3nrxF.mjs +114 -0
- package/dist/install-CDR3qBhs.cjs +118 -0
- package/dist/{installTerminalHooks-NIbsQ1wi.cjs → installTerminalHooks-BoDxpaBO.cjs} +5 -5
- package/dist/{installTerminalHooks-BF_tmw9V.mjs → installTerminalHooks-VvmlO6Ue.mjs} +5 -5
- package/dist/lib.cjs +3 -3
- package/dist/lib.mjs +3 -3
- package/dist/limits-BNTWyUaZ.cjs +2175 -0
- package/dist/limits-CKR_HJnO.mjs +2080 -0
- package/dist/{mcp-_TVUSg8W.cjs → mcp-CCKCKL6l.cjs} +5 -5
- package/dist/{mcp-DzydgXpf.mjs → mcp-D4dAo5BQ.mjs} +5 -5
- package/dist/{piRuntime-CSAiJk0X.cjs → piRuntime-Bn5ypbjH.cjs} +2 -2
- package/dist/{piRuntime-ACOhil6t.mjs → piRuntime-CW-XA4rz.mjs} +2 -2
- package/dist/{piTerminal-DHxGB3Ic.cjs → piTerminal-B7K75aXB.cjs} +6 -6
- package/dist/{piTerminal-BlE4vbvZ.mjs → piTerminal-BLSXK1u2.mjs} +6 -6
- package/dist/{runGemini-BMYCU16c.cjs → runGemini-Bgg1BzDK.cjs} +7 -7
- package/dist/{runGemini-D5IV1MoF.mjs → runGemini-D5N11LxO.mjs} +7 -7
- package/dist/{runOpenClaw-Qs4eFtcS.cjs → runOpenClaw-B9qWHybc.cjs} +6 -6
- package/dist/{runOpenClaw-CWPXrKMJ.mjs → runOpenClaw-CCpyKbrn.mjs} +6 -6
- package/dist/{send-Dv0km8UI.mjs → send-C44kcXz5.mjs} +21 -7
- package/dist/{send-qXWGilm8.cjs → send-wl9ei8yG.cjs} +21 -7
- package/dist/{sessions-DoULfKui.mjs → sessions-DXJEcUg6.mjs} +57 -11
- package/dist/{sessions-CpIdDhH7.cjs → sessions-Tad8elmy.cjs} +57 -11
- package/dist/{spawn-DQuOmUP7.mjs → spawn-BOlb5y1_.mjs} +142 -28
- package/dist/{spawn-DqzG1bTH.cjs → spawn-DA8WAFmm.cjs} +142 -28
- package/dist/{teams-4mhNh5cj.mjs → teams-Bs8lI887.mjs} +15 -72
- package/dist/{teams-ByEgUzsH.cjs → teams-qVLrFcdd.cjs} +13 -70
- package/dist/{todo-D7SDXL0c.cjs → todo-mCMoGjJk.cjs} +4 -23
- package/dist/{todo-C9IAUf0K.mjs → todo-nzsqGZqp.mjs} +2 -21
- package/dist/{types-D2Gkpe0N.cjs → types-CN28qJl7.cjs} +38 -813
- package/dist/{types-BD542hb1.mjs → types-xKrxbCRv.mjs} +208 -978
- package/package.json +7 -7
- package/dist/agentGuidance-Dla-BXO8.cjs +0 -267
- package/dist/agentGuidance-DrfhtVP1.mjs +0 -251
- package/dist/limits-Dyma1REp.cjs +0 -1236
- package/dist/limits-FThmm7WR.mjs +0 -1165
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var agentGuidance = require('./agentGuidance-
|
|
3
|
+
var agentGuidance = require('./agentGuidance-CqBn77AI.cjs');
|
|
4
4
|
var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
5
5
|
var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
|
|
6
6
|
var z = require('zod');
|
|
7
|
-
var index = require('./types-
|
|
8
|
-
var persistence = require('./limits-
|
|
9
|
-
var index$1 = require('./index-
|
|
7
|
+
var index = require('./types-CN28qJl7.cjs');
|
|
8
|
+
var persistence = require('./limits-BNTWyUaZ.cjs');
|
|
9
|
+
var index$1 = require('./index-ZIW1jrYm.cjs');
|
|
10
10
|
require('node:fs/promises');
|
|
11
11
|
require('node:os');
|
|
12
12
|
require('node:crypto');
|
|
@@ -18,7 +18,6 @@ require('node:fs');
|
|
|
18
18
|
require('node:path');
|
|
19
19
|
var terminalToolContext = require('./terminalToolContext-DoV9Gs7K.cjs');
|
|
20
20
|
require('node:events');
|
|
21
|
-
require('@paralleldrive/cuid2');
|
|
22
21
|
require('child_process');
|
|
23
22
|
require('util');
|
|
24
23
|
require('fs/promises');
|
|
@@ -28,6 +27,7 @@ require('cross-spawn');
|
|
|
28
27
|
require('./projectPath-ChLhdOyt.cjs');
|
|
29
28
|
require('url');
|
|
30
29
|
require('os');
|
|
30
|
+
require('@paralleldrive/cuid2');
|
|
31
31
|
require('node-pty');
|
|
32
32
|
require('fs');
|
|
33
33
|
require('node:readline');
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { r as registerTeamsTools, P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION } from './agentGuidance-
|
|
1
|
+
import { r as registerTeamsTools, P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION } from './agentGuidance-Daxn5Nvj.mjs';
|
|
2
2
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
import {
|
|
6
|
-
import { l as logger, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION,
|
|
7
|
-
import {
|
|
5
|
+
import { l as pushClipboardViaDaemon, m as pushFilePreviewViaDaemon, n as setTerminalTitleViaDaemon } from './types-xKrxbCRv.mjs';
|
|
6
|
+
import { l as logger, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, h as CLIPBOARD_MAX_BYTES } from './limits-CKR_HJnO.mjs';
|
|
7
|
+
import { v as checkPreviewPath, x as registerAssistantSessionTools } from './index-BauTv2jB.mjs';
|
|
8
8
|
import 'node:fs/promises';
|
|
9
9
|
import 'node:os';
|
|
10
10
|
import 'node:crypto';
|
|
@@ -16,7 +16,6 @@ import 'node:fs';
|
|
|
16
16
|
import 'node:path';
|
|
17
17
|
import { r as resolveMcpTerminalId } from './terminalToolContext-CFeGeaNm.mjs';
|
|
18
18
|
import 'node:events';
|
|
19
|
-
import '@paralleldrive/cuid2';
|
|
20
19
|
import 'child_process';
|
|
21
20
|
import 'util';
|
|
22
21
|
import 'fs/promises';
|
|
@@ -26,6 +25,7 @@ import 'cross-spawn';
|
|
|
26
25
|
import './projectPath-CSpqWdxp.mjs';
|
|
27
26
|
import 'url';
|
|
28
27
|
import 'os';
|
|
28
|
+
import '@paralleldrive/cuid2';
|
|
29
29
|
import 'node-pty';
|
|
30
30
|
import 'fs';
|
|
31
31
|
import 'node:readline';
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
var promises = require('node:fs/promises');
|
|
4
4
|
var node_crypto = require('node:crypto');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var persistence = require('./limits-
|
|
7
|
-
var index = require('./index-
|
|
6
|
+
var persistence = require('./limits-BNTWyUaZ.cjs');
|
|
7
|
+
var index = require('./index-ZIW1jrYm.cjs');
|
|
8
8
|
|
|
9
9
|
async function publish(path, content, mode) {
|
|
10
10
|
const temporary = `${path}.${node_crypto.randomUUID()}.new`;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { mkdir, chmod, writeFile, rename } from 'node:fs/promises';
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import { c as configuration } from './limits-
|
|
5
|
-
import { P as PI_TEAMS_EXTENSION } from './index-
|
|
4
|
+
import { c as configuration } from './limits-CKR_HJnO.mjs';
|
|
5
|
+
import { P as PI_TEAMS_EXTENSION } from './index-BauTv2jB.mjs';
|
|
6
6
|
|
|
7
7
|
async function publish(path, content, mode) {
|
|
8
8
|
const temporary = `${path}.${randomUUID()}.new`;
|
|
@@ -5,21 +5,21 @@ var node_crypto = require('node:crypto');
|
|
|
5
5
|
var node_http = require('node:http');
|
|
6
6
|
var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
7
7
|
var streamableHttp_js = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
|
|
8
|
-
var piRuntime = require('./piRuntime-
|
|
9
|
-
var mcp = require('./mcp-
|
|
10
|
-
require('./agentGuidance-
|
|
8
|
+
var piRuntime = require('./piRuntime-Bn5ypbjH.cjs');
|
|
9
|
+
var mcp = require('./mcp-CCKCKL6l.cjs');
|
|
10
|
+
require('./agentGuidance-CqBn77AI.cjs');
|
|
11
11
|
require('node:fs/promises');
|
|
12
12
|
require('node:os');
|
|
13
13
|
require('zod');
|
|
14
|
-
require('./limits-
|
|
14
|
+
require('./limits-BNTWyUaZ.cjs');
|
|
15
15
|
require('axios');
|
|
16
16
|
require('tweetnacl');
|
|
17
17
|
require('socket.io-client');
|
|
18
|
-
require('./types-
|
|
18
|
+
require('./types-CN28qJl7.cjs');
|
|
19
19
|
require('node:fs');
|
|
20
20
|
require('node:path');
|
|
21
21
|
var terminalToolContext = require('./terminalToolContext-DoV9Gs7K.cjs');
|
|
22
|
-
require('./index-
|
|
22
|
+
require('./index-ZIW1jrYm.cjs');
|
|
23
23
|
require('chalk');
|
|
24
24
|
require('cross-spawn');
|
|
25
25
|
require('node:readline');
|
|
@@ -3,21 +3,21 @@ import { randomUUID } from 'node:crypto';
|
|
|
3
3
|
import { createServer } from 'node:http';
|
|
4
4
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
5
5
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
6
|
-
import { p as preparePiTeamsRuntime } from './piRuntime-
|
|
7
|
-
import { registerMcpTools } from './mcp-
|
|
8
|
-
import './agentGuidance-
|
|
6
|
+
import { p as preparePiTeamsRuntime } from './piRuntime-CW-XA4rz.mjs';
|
|
7
|
+
import { registerMcpTools } from './mcp-D4dAo5BQ.mjs';
|
|
8
|
+
import './agentGuidance-Daxn5Nvj.mjs';
|
|
9
9
|
import 'node:fs/promises';
|
|
10
10
|
import 'node:os';
|
|
11
11
|
import 'zod';
|
|
12
|
-
import './limits-
|
|
12
|
+
import './limits-CKR_HJnO.mjs';
|
|
13
13
|
import 'axios';
|
|
14
14
|
import 'tweetnacl';
|
|
15
15
|
import 'socket.io-client';
|
|
16
|
-
import './types-
|
|
16
|
+
import './types-xKrxbCRv.mjs';
|
|
17
17
|
import 'node:fs';
|
|
18
18
|
import 'node:path';
|
|
19
19
|
import { r as resolveMcpTerminalId } from './terminalToolContext-CFeGeaNm.mjs';
|
|
20
|
-
import './index-
|
|
20
|
+
import './index-BauTv2jB.mjs';
|
|
21
21
|
import 'chalk';
|
|
22
22
|
import 'cross-spawn';
|
|
23
23
|
import 'node:readline';
|
|
@@ -4,17 +4,16 @@ 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 index$1 = require('./types-
|
|
8
|
-
var persistence = require('./limits-
|
|
9
|
-
var index = require('./index-
|
|
7
|
+
var index$1 = require('./types-CN28qJl7.cjs');
|
|
8
|
+
var persistence = require('./limits-BNTWyUaZ.cjs');
|
|
9
|
+
var index = require('./index-ZIW1jrYm.cjs');
|
|
10
10
|
var projectPath = require('./projectPath-ChLhdOyt.cjs');
|
|
11
|
-
var AcpBackend = require('./AcpBackend-
|
|
12
|
-
var config = require('./config-
|
|
11
|
+
var AcpBackend = require('./AcpBackend-CogiKCng.cjs');
|
|
12
|
+
var config = require('./config-DeJgSMh-.cjs');
|
|
13
13
|
require('axios');
|
|
14
14
|
require('node:events');
|
|
15
15
|
require('socket.io-client');
|
|
16
16
|
require('zod');
|
|
17
|
-
require('@paralleldrive/cuid2');
|
|
18
17
|
require('child_process');
|
|
19
18
|
require('util');
|
|
20
19
|
require('fs/promises');
|
|
@@ -22,6 +21,7 @@ require('crypto');
|
|
|
22
21
|
require('path');
|
|
23
22
|
require('cross-spawn');
|
|
24
23
|
require('os');
|
|
24
|
+
require('@paralleldrive/cuid2');
|
|
25
25
|
require('node:fs/promises');
|
|
26
26
|
require('node:os');
|
|
27
27
|
require('node:child_process');
|
|
@@ -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-CqBn77AI.cjs');
|
|
38
38
|
require('@anthropic-ai/claude-agent-sdk');
|
|
39
39
|
require('ps-list');
|
|
40
40
|
require('tmp');
|
|
@@ -2,17 +2,16 @@ 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, r as readSettings,
|
|
7
|
-
import {
|
|
5
|
+
import { o as connectionState, A as ApiClient, t as errorLogMetadata, q as notifyDaemonSessionStarted, u as contentLogMetadata } from './types-xKrxbCRv.mjs';
|
|
6
|
+
import { l as logger, r as readSettings, j as encodeBase64 } from './limits-CKR_HJnO.mjs';
|
|
7
|
+
import { X as GEMINI_API_KEY_ENV, Y as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, R as BasePermissionHandler, Z as BaseReasoningProcessor, z as initialMachineMetadata, B as createSessionMetadata, C as setupOfflineReconnection, F as MessageQueue2, H as hashObject, _ as MessageBuffer, $ as CHANGE_TITLE_INSTRUCTION, L as registerKillSessionHandler, I as startHappyServer } from './index-BauTv2jB.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-Bs3wwYbt.mjs';
|
|
10
|
+
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-DbKpQpdL.mjs';
|
|
11
11
|
import 'axios';
|
|
12
12
|
import 'node:events';
|
|
13
13
|
import 'socket.io-client';
|
|
14
14
|
import 'zod';
|
|
15
|
-
import '@paralleldrive/cuid2';
|
|
16
15
|
import 'child_process';
|
|
17
16
|
import 'util';
|
|
18
17
|
import 'fs/promises';
|
|
@@ -20,6 +19,7 @@ import 'crypto';
|
|
|
20
19
|
import 'path';
|
|
21
20
|
import 'cross-spawn';
|
|
22
21
|
import 'os';
|
|
22
|
+
import '@paralleldrive/cuid2';
|
|
23
23
|
import 'node:fs/promises';
|
|
24
24
|
import 'node:os';
|
|
25
25
|
import 'node:child_process';
|
|
@@ -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-Daxn5Nvj.mjs';
|
|
36
36
|
import '@anthropic-ai/claude-agent-sdk';
|
|
37
37
|
import 'ps-list';
|
|
38
38
|
import 'tmp';
|
|
@@ -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 index = require('./types-
|
|
9
|
-
var AcpSessionManager = require('./AcpSessionManager-
|
|
10
|
-
var persistence = require('./limits-
|
|
11
|
-
var index$1 = require('./index-
|
|
8
|
+
var index = require('./types-CN28qJl7.cjs');
|
|
9
|
+
var AcpSessionManager = require('./AcpSessionManager-BazkBuFo.cjs');
|
|
10
|
+
var persistence = require('./limits-BNTWyUaZ.cjs');
|
|
11
|
+
var index$1 = require('./index-ZIW1jrYm.cjs');
|
|
12
12
|
var WebSocket = require('ws');
|
|
13
13
|
var ed = require('@noble/ed25519');
|
|
14
14
|
var sha2_js = require('@noble/hashes/sha2.js');
|
|
@@ -16,7 +16,6 @@ require('axios');
|
|
|
16
16
|
require('node:events');
|
|
17
17
|
require('socket.io-client');
|
|
18
18
|
require('zod');
|
|
19
|
-
require('@paralleldrive/cuid2');
|
|
20
19
|
require('child_process');
|
|
21
20
|
require('util');
|
|
22
21
|
require('fs/promises');
|
|
@@ -26,6 +25,7 @@ require('cross-spawn');
|
|
|
26
25
|
require('./projectPath-ChLhdOyt.cjs');
|
|
27
26
|
require('url');
|
|
28
27
|
require('os');
|
|
28
|
+
require('@paralleldrive/cuid2');
|
|
29
29
|
require('node:fs/promises');
|
|
30
30
|
require('node-pty');
|
|
31
31
|
require('fs');
|
|
@@ -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-CqBn77AI.cjs');
|
|
39
39
|
require('ink');
|
|
40
40
|
require('react');
|
|
41
41
|
require('@anthropic-ai/claude-agent-sdk');
|
|
@@ -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 {
|
|
9
|
-
import {
|
|
6
|
+
import { t as errorLogMetadata, u as contentLogMetadata, o as connectionState, A as ApiClient, q as notifyDaemonSessionStarted } from './types-xKrxbCRv.mjs';
|
|
7
|
+
import { A as AcpSessionManager } from './AcpSessionManager-BT8PJMEm.mjs';
|
|
8
|
+
import { m as ensurePrivateDirectorySync, n as hardenPrivateFileSync, w as writePrivateFileSync, r as readSettings, j as encodeBase64, l as logger, c as configuration } from './limits-CKR_HJnO.mjs';
|
|
9
|
+
import { z as initialMachineMetadata, B as createSessionMetadata, C as setupOfflineReconnection, F as MessageQueue2, L as registerKillSessionHandler } from './index-BauTv2jB.mjs';
|
|
10
10
|
import WebSocket from 'ws';
|
|
11
11
|
import * as ed from '@noble/ed25519';
|
|
12
12
|
import { sha512 } from '@noble/hashes/sha2.js';
|
|
@@ -14,7 +14,6 @@ import 'axios';
|
|
|
14
14
|
import 'node:events';
|
|
15
15
|
import 'socket.io-client';
|
|
16
16
|
import 'zod';
|
|
17
|
-
import '@paralleldrive/cuid2';
|
|
18
17
|
import 'child_process';
|
|
19
18
|
import 'util';
|
|
20
19
|
import 'fs/promises';
|
|
@@ -24,6 +23,7 @@ import 'cross-spawn';
|
|
|
24
23
|
import './projectPath-CSpqWdxp.mjs';
|
|
25
24
|
import 'url';
|
|
26
25
|
import 'os';
|
|
26
|
+
import '@paralleldrive/cuid2';
|
|
27
27
|
import 'node:fs/promises';
|
|
28
28
|
import 'node-pty';
|
|
29
29
|
import 'fs';
|
|
@@ -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-Daxn5Nvj.mjs';
|
|
37
37
|
import 'ink';
|
|
38
38
|
import 'react';
|
|
39
39
|
import '@anthropic-ai/claude-agent-sdk';
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
-
import { d as readPersistedSessions, c as configuration } from './limits-
|
|
5
|
-
import {
|
|
4
|
+
import { d as readPersistedSessions, c as configuration } from './limits-CKR_HJnO.mjs';
|
|
5
|
+
import { d as sendUserMessage, e as sessionWebUrl } from './index-BauTv2jB.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 '
|
|
12
|
+
import '@paralleldrive/cuid2';
|
|
13
|
+
import './types-xKrxbCRv.mjs';
|
|
13
14
|
import 'axios';
|
|
14
15
|
import 'node:events';
|
|
15
16
|
import 'socket.io-client';
|
|
16
|
-
import '@paralleldrive/cuid2';
|
|
17
17
|
import 'child_process';
|
|
18
18
|
import 'util';
|
|
19
19
|
import 'fs/promises';
|
|
@@ -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-Daxn5Nvj.mjs';
|
|
33
33
|
import 'ink';
|
|
34
34
|
import 'react';
|
|
35
35
|
import '@anthropic-ai/claude-agent-sdk';
|
|
@@ -63,6 +63,10 @@ function parseSendArgs(args) {
|
|
|
63
63
|
const value = args[++i];
|
|
64
64
|
if (value === void 0) throw new Error("--prompt-file requires a value");
|
|
65
65
|
options.promptFile = value;
|
|
66
|
+
} else if (arg === "--model" || arg === "-m") {
|
|
67
|
+
const value = args[++i];
|
|
68
|
+
if (value === void 0 || value.trim().length === 0) throw new Error("--model requires a value");
|
|
69
|
+
options.model = value;
|
|
66
70
|
} else if (arg === "--json") {
|
|
67
71
|
options.json = true;
|
|
68
72
|
} else if (arg === "--help" || arg === "-h") {
|
|
@@ -81,12 +85,16 @@ function printHelp() {
|
|
|
81
85
|
${chalk.bold("very-happy send")} - Send a message into an existing session (for automation)
|
|
82
86
|
|
|
83
87
|
${chalk.bold("Usage:")}
|
|
84
|
-
very-happy send --session <id> (--prompt <text> | --prompt-file <file>)
|
|
88
|
+
very-happy send --session <id> (--prompt <text> | --prompt-file <file>)
|
|
89
|
+
[--model <id>] [--json]
|
|
85
90
|
|
|
86
91
|
${chalk.bold("Options:")}
|
|
87
92
|
--session, -s <id> Target session id (required)
|
|
88
93
|
--prompt, -p <text> Message text to send
|
|
89
94
|
--prompt-file <file> Read the message from a file (UTF-8)
|
|
95
|
+
--model, -m <id> Switch the session to this model with this message
|
|
96
|
+
('default' = the machine default). Without it the
|
|
97
|
+
session keeps whatever model it is on.
|
|
90
98
|
--json Machine-readable output: {"sessionId", "url", "delivered"}
|
|
91
99
|
-h, --help Show this help
|
|
92
100
|
|
|
@@ -157,7 +165,13 @@ async function handleSendCommand(args) {
|
|
|
157
165
|
);
|
|
158
166
|
}
|
|
159
167
|
try {
|
|
160
|
-
await sendUserMessage(
|
|
168
|
+
await sendUserMessage(
|
|
169
|
+
sessionId,
|
|
170
|
+
persisted,
|
|
171
|
+
prompt,
|
|
172
|
+
"cli-send",
|
|
173
|
+
options.model !== void 0 ? { model: options.model === "default" ? null : options.model } : {}
|
|
174
|
+
);
|
|
161
175
|
} catch (error) {
|
|
162
176
|
fail(options, sessionId, `Failed to send message: ${error instanceof Error ? error.message : String(error)}`);
|
|
163
177
|
}
|
|
@@ -3,19 +3,19 @@
|
|
|
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-BNTWyUaZ.cjs');
|
|
7
|
+
var index = require('./index-ZIW1jrYm.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('
|
|
14
|
+
require('@paralleldrive/cuid2');
|
|
15
|
+
require('./types-CN28qJl7.cjs');
|
|
15
16
|
require('axios');
|
|
16
17
|
require('node:events');
|
|
17
18
|
require('socket.io-client');
|
|
18
|
-
require('@paralleldrive/cuid2');
|
|
19
19
|
require('child_process');
|
|
20
20
|
require('util');
|
|
21
21
|
require('fs/promises');
|
|
@@ -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-CqBn77AI.cjs');
|
|
35
35
|
require('ink');
|
|
36
36
|
require('react');
|
|
37
37
|
require('@anthropic-ai/claude-agent-sdk');
|
|
@@ -65,6 +65,10 @@ function parseSendArgs(args) {
|
|
|
65
65
|
const value = args[++i];
|
|
66
66
|
if (value === void 0) throw new Error("--prompt-file requires a value");
|
|
67
67
|
options.promptFile = value;
|
|
68
|
+
} else if (arg === "--model" || arg === "-m") {
|
|
69
|
+
const value = args[++i];
|
|
70
|
+
if (value === void 0 || value.trim().length === 0) throw new Error("--model requires a value");
|
|
71
|
+
options.model = value;
|
|
68
72
|
} else if (arg === "--json") {
|
|
69
73
|
options.json = true;
|
|
70
74
|
} else if (arg === "--help" || arg === "-h") {
|
|
@@ -83,12 +87,16 @@ function printHelp() {
|
|
|
83
87
|
${chalk.bold("very-happy send")} - Send a message into an existing session (for automation)
|
|
84
88
|
|
|
85
89
|
${chalk.bold("Usage:")}
|
|
86
|
-
very-happy send --session <id> (--prompt <text> | --prompt-file <file>)
|
|
90
|
+
very-happy send --session <id> (--prompt <text> | --prompt-file <file>)
|
|
91
|
+
[--model <id>] [--json]
|
|
87
92
|
|
|
88
93
|
${chalk.bold("Options:")}
|
|
89
94
|
--session, -s <id> Target session id (required)
|
|
90
95
|
--prompt, -p <text> Message text to send
|
|
91
96
|
--prompt-file <file> Read the message from a file (UTF-8)
|
|
97
|
+
--model, -m <id> Switch the session to this model with this message
|
|
98
|
+
('default' = the machine default). Without it the
|
|
99
|
+
session keeps whatever model it is on.
|
|
92
100
|
--json Machine-readable output: {"sessionId", "url", "delivered"}
|
|
93
101
|
-h, --help Show this help
|
|
94
102
|
|
|
@@ -159,7 +167,13 @@ async function handleSendCommand(args) {
|
|
|
159
167
|
);
|
|
160
168
|
}
|
|
161
169
|
try {
|
|
162
|
-
await index.sendUserMessage(
|
|
170
|
+
await index.sendUserMessage(
|
|
171
|
+
sessionId,
|
|
172
|
+
persisted,
|
|
173
|
+
prompt,
|
|
174
|
+
"cli-send",
|
|
175
|
+
options.model !== void 0 ? { model: options.model === "default" ? null : options.model } : {}
|
|
176
|
+
);
|
|
163
177
|
} catch (error) {
|
|
164
178
|
fail(options, sessionId, `Failed to send message: ${error instanceof Error ? error.message : String(error)}`);
|
|
165
179
|
}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions,
|
|
3
|
-
import { i as isValidSessionId } from './types-
|
|
2
|
+
import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions, a as listSessions, w as waitForTurnEnd, T as TurnWaitTimeoutError, r as readSessionTranscript, s as stopSession, b as resolvePermissionRequest, c as archiveSession } from './index-BauTv2jB.mjs';
|
|
3
|
+
import { i as isValidSessionId } from './types-xKrxbCRv.mjs';
|
|
4
4
|
import 'node:os';
|
|
5
5
|
import 'node:crypto';
|
|
6
|
-
import './limits-
|
|
6
|
+
import './limits-CKR_HJnO.mjs';
|
|
7
7
|
import 'node:fs/promises';
|
|
8
8
|
import 'node:fs';
|
|
9
9
|
import 'node:path';
|
|
10
10
|
import 'zod';
|
|
11
11
|
import 'tweetnacl';
|
|
12
12
|
import 'node:util';
|
|
13
|
+
import '@paralleldrive/cuid2';
|
|
13
14
|
import 'cross-spawn';
|
|
14
15
|
import 'node:readline';
|
|
15
16
|
import './projectPath-CSpqWdxp.mjs';
|
|
16
17
|
import 'path';
|
|
17
18
|
import 'url';
|
|
18
|
-
import './agentGuidance-
|
|
19
|
+
import './agentGuidance-Daxn5Nvj.mjs';
|
|
19
20
|
import 'fs/promises';
|
|
20
21
|
import 'ink';
|
|
21
22
|
import 'react';
|
|
@@ -25,7 +26,6 @@ import 'node:events';
|
|
|
25
26
|
import 'socket.io-client';
|
|
26
27
|
import 'os';
|
|
27
28
|
import 'child_process';
|
|
28
|
-
import '@paralleldrive/cuid2';
|
|
29
29
|
import 'node:child_process';
|
|
30
30
|
import 'fs';
|
|
31
31
|
import '@anthropic-ai/sandbox-runtime';
|
|
@@ -52,7 +52,7 @@ const ACTIONS_NEEDING_ID = /* @__PURE__ */ new Set(["read", "stop", "archive", "
|
|
|
52
52
|
const ACTIONS_NEEDING_REQUEST_ID = /* @__PURE__ */ new Set(["approve", "deny"]);
|
|
53
53
|
const REQUEST_ID_RE = /^[a-zA-Z0-9_.:-]{1,128}$/;
|
|
54
54
|
function defaultOptions() {
|
|
55
|
-
return { action: "help", all: false, includeArchived: false, forSession: false, json: false };
|
|
55
|
+
return { action: "help", all: false, includeArchived: false, forSession: false, full: false, answer: false, wait: false, json: false };
|
|
56
56
|
}
|
|
57
57
|
function parseSessionsArgs(args) {
|
|
58
58
|
const options = defaultOptions();
|
|
@@ -70,6 +70,18 @@ function parseSessionsArgs(args) {
|
|
|
70
70
|
options.includeArchived = true;
|
|
71
71
|
} else if (arg === "--for-session") {
|
|
72
72
|
options.forSession = true;
|
|
73
|
+
} else if (arg === "--full") {
|
|
74
|
+
options.full = true;
|
|
75
|
+
} else if (arg === "--answer") {
|
|
76
|
+
options.answer = true;
|
|
77
|
+
} else if (arg === "--wait") {
|
|
78
|
+
options.wait = true;
|
|
79
|
+
} else if (arg === "--timeout") {
|
|
80
|
+
const value = args[++i];
|
|
81
|
+
if (value === void 0) throw new Error("--timeout requires a value");
|
|
82
|
+
const parsed = Number(value);
|
|
83
|
+
if (!Number.isFinite(parsed) || parsed <= 0) throw new Error("--timeout must be a positive number of seconds");
|
|
84
|
+
options.timeoutSec = parsed;
|
|
73
85
|
} else if (arg === "--reason") {
|
|
74
86
|
const value = args[++i];
|
|
75
87
|
if (value === void 0) throw new Error("--reason requires a value");
|
|
@@ -122,6 +134,12 @@ function parseSessionsArgs(args) {
|
|
|
122
134
|
}
|
|
123
135
|
if (options.forSession && options.action !== "approve") throw new Error("--for-session only applies to `sessions approve`");
|
|
124
136
|
if (options.reason !== void 0 && options.action !== "deny") throw new Error("--reason only applies to `sessions deny`");
|
|
137
|
+
if (options.action !== "read") {
|
|
138
|
+
if (options.full) throw new Error("--full only applies to `sessions read`");
|
|
139
|
+
if (options.answer) throw new Error("--answer only applies to `sessions read`");
|
|
140
|
+
if (options.wait) throw new Error("--wait only applies to `sessions read`");
|
|
141
|
+
}
|
|
142
|
+
if (options.timeoutSec !== void 0 && !options.wait) throw new Error("--timeout only applies to `sessions read --wait`");
|
|
125
143
|
return options;
|
|
126
144
|
}
|
|
127
145
|
const SESSIONS_HELP = `
|
|
@@ -129,7 +147,8 @@ ${chalk.bold("very-happy sessions")} - Inspect and control sessions on this mach
|
|
|
129
147
|
|
|
130
148
|
${chalk.bold("Usage:")}
|
|
131
149
|
very-happy sessions list [--all [--include-archived]] [--tag <name>] [--limit <n>] [--json]
|
|
132
|
-
very-happy sessions read <id> [--limit <n>] [--
|
|
150
|
+
very-happy sessions read <id> [--limit <n>] [--full] [--answer]
|
|
151
|
+
[--wait [--timeout <s>]] [--json]
|
|
133
152
|
very-happy sessions stop <id> [--json]
|
|
134
153
|
very-happy sessions archive <id> [--json]
|
|
135
154
|
very-happy sessions approve <id> <requestId> [--for-session] [--json]
|
|
@@ -141,7 +160,9 @@ ${chalk.bold("Actions:")}
|
|
|
141
160
|
REST), attention first. Each row says whether this machine could
|
|
142
161
|
decrypt it (\`decryptable\`); rows from other machines show only
|
|
143
162
|
id / active / archived / timestamps / url.
|
|
144
|
-
read The tail of a session as a role-tagged transcript
|
|
163
|
+
read The tail of a session as a role-tagged transcript, plus where
|
|
164
|
+
the latest turn stands (\`turn\` in --json: ended, status and
|
|
165
|
+
\`answer\` = the agent's reply to the latest prompt).
|
|
145
166
|
stop SIGTERM the session's process via the local daemon.
|
|
146
167
|
archive Mark the session inactive server-side (it stays resumable).
|
|
147
168
|
approve Answer a pending permission request \`requestId\` with approve \u2014
|
|
@@ -159,6 +180,14 @@ ${chalk.bold("Options:")}
|
|
|
159
180
|
--limit <n> list: how many NOT-running / not-attention sessions to
|
|
160
181
|
include (default ${DEFAULT_RECENT_LIMIT}; running and attention rows are
|
|
161
182
|
never cut). read: how many messages (default 20, max ${MAX_READ_LIMIT}).
|
|
183
|
+
--full read only: do not truncate entries (default caps each
|
|
184
|
+
line at 500 chars).
|
|
185
|
+
--answer read only: print just the agent's reply to the latest
|
|
186
|
+
prompt (the text after its last tool call), untruncated.
|
|
187
|
+
--wait read only: block until the latest turn has ended
|
|
188
|
+
(claude / codex / pi), then read. Pairs with
|
|
189
|
+
\`spawn --prompt\` / \`send\` for "ask and collect".
|
|
190
|
+
--timeout <s> read --wait only: give up after <s> seconds (default 600).
|
|
162
191
|
--for-session approve only: approved_for_session instead of approved.
|
|
163
192
|
--reason <text> deny only: reason forwarded to the wrapper.
|
|
164
193
|
--json Machine-readable output.
|
|
@@ -174,6 +203,8 @@ ${chalk.bold("Scope:")}
|
|
|
174
203
|
the account content key \u2014 a credentials change, not a flag.
|
|
175
204
|
|
|
176
205
|
${chalk.bold("Exit codes:")}
|
|
206
|
+
2 read --wait: the turn had not ended when --timeout ran out (the
|
|
207
|
+
partial state is still printed)
|
|
177
208
|
0 success (approve/deny: the wrapper acknowledged the verdict; check
|
|
178
209
|
\`settled\` in --json to see whether the request has left the pending set)
|
|
179
210
|
1 bad arguments, unknown session, no local key, request not pending,
|
|
@@ -261,15 +292,30 @@ async function handleSessionsCommand(args) {
|
|
|
261
292
|
}
|
|
262
293
|
const sessionId = options.sessionId;
|
|
263
294
|
if (options.action === "read") {
|
|
264
|
-
|
|
295
|
+
let timedOut = false;
|
|
296
|
+
if (options.wait) {
|
|
297
|
+
try {
|
|
298
|
+
await waitForTurnEnd(sessionId, { timeoutMs: (options.timeoutSec ?? 600) * 1e3 });
|
|
299
|
+
} catch (error) {
|
|
300
|
+
if (!(error instanceof TurnWaitTimeoutError)) throw error;
|
|
301
|
+
timedOut = true;
|
|
302
|
+
console.error(chalk.yellow("Timeout:"), error.message);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
const result = await readSessionTranscript(sessionId, options.limit ?? 20, { full: options.full });
|
|
265
306
|
if (options.json) {
|
|
266
|
-
console.log(JSON.stringify(result));
|
|
307
|
+
console.log(JSON.stringify(options.answer ? { sessionId, turn: result.turn } : result));
|
|
308
|
+
} else if (options.answer) {
|
|
309
|
+
if (result.turn.answer.length > 0) console.log(result.turn.answer);
|
|
310
|
+
else console.error(chalk.dim("(the agent has not replied to the latest prompt yet)"));
|
|
267
311
|
} else {
|
|
268
312
|
console.log(formatSummaryLine(result.summary));
|
|
269
313
|
console.log(`--- last ${result.messageCount} message(s) ---`);
|
|
270
314
|
console.log(result.transcript.length > 0 ? result.transcript : "(no readable conversation content in this range)");
|
|
315
|
+
const turn = result.turn;
|
|
316
|
+
console.log(chalk.dim(`--- latest turn: ${turn.ended ? `ended (${turn.status ?? "unknown"})` : "running"}${turn.error ? ` \u2014 ${turn.error}` : ""} ---`));
|
|
271
317
|
}
|
|
272
|
-
process.exit(0);
|
|
318
|
+
process.exit(timedOut ? 2 : 0);
|
|
273
319
|
}
|
|
274
320
|
if (options.action === "stop") {
|
|
275
321
|
const stopped = await stopSession(sessionId);
|