very-happy-cli 0.2.152 → 0.2.153
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-CogiKCng.cjs → AcpBackend-DSt8nTYm.cjs} +2 -2
- package/dist/{AcpBackend-Bs3wwYbt.mjs → AcpBackend-YDGv4E-g.mjs} +2 -2
- package/dist/{AcpSessionManager-BT8PJMEm.mjs → AcpSessionManager-Cxf5HQX1.mjs} +1 -1
- package/dist/{AcpSessionManager-BazkBuFo.cjs → AcpSessionManager-uov6I9C8.cjs} +1 -1
- package/dist/{agentGuidance-CqBn77AI.cjs → agentGuidance-BM4kMNyr.cjs} +1 -1
- package/dist/{agentGuidance-Daxn5Nvj.mjs → agentGuidance-C8unGWp7.mjs} +1 -1
- package/dist/{agentHome-CpJjrQZc.cjs → agentHome-BJ7bde35.cjs} +3 -3
- package/dist/{agentHome-CCYfs8Ec.mjs → agentHome-D68Xh2ae.mjs} +3 -3
- package/dist/{auto-DncmTDvw.cjs → auto-C-90ojIH.cjs} +7 -7
- package/dist/{auto-DV5emt1-.mjs → auto-CcXxfqkC.mjs} +7 -7
- package/dist/codex/happyMcpStdioBridge.cjs +2 -2
- package/dist/codex/happyMcpStdioBridge.mjs +2 -2
- package/dist/{config-DbKpQpdL.mjs → config-CHJ189UJ.mjs} +5 -5
- package/dist/{config-DeJgSMh-.cjs → config-D23kF0_u.cjs} +5 -5
- package/dist/{index-CN7OF2cU.mjs → index-BXA9fxbK.mjs} +5 -5
- package/dist/{index-BauTv2jB.mjs → index-BacwoXzs.mjs} +61 -41
- package/dist/{index-DahaLbu4.mjs → index-BgYZGODP.mjs} +9 -9
- package/dist/{index-CRaJ9k2p.cjs → index-D49WvbDT.cjs} +5 -5
- package/dist/{index-imt4mC41.cjs → index-DEOVn46R.cjs} +9 -9
- package/dist/{index-ZIW1jrYm.cjs → index-DHrwHxHf.cjs} +83 -62
- package/dist/index.cjs +5 -5
- package/dist/index.mjs +5 -5
- package/dist/{install-CDR3qBhs.cjs → install-BiOXBnnS.cjs} +1 -1
- package/dist/{install-C1K3nrxF.mjs → install-Ca7_Z3bV.mjs} +1 -1
- package/dist/{installPiTools-C-Lxv4Bt.mjs → installPiTools-Cj7yU9Fc.mjs} +2 -1
- package/dist/{installPiTools-BKnXjrVu.cjs → installPiTools-DuZ6jZvX.cjs} +3 -2
- package/dist/{installTerminalHooks-BoDxpaBO.cjs → installTerminalHooks-BF0kL0ae.cjs} +7 -7
- package/dist/{installTerminalHooks-VvmlO6Ue.mjs → installTerminalHooks-Bpl32K75.mjs} +6 -6
- package/dist/lib.cjs +3 -3
- package/dist/lib.mjs +3 -3
- package/dist/{limits-CKR_HJnO.mjs → limits-BtAuKRl2.mjs} +7 -7
- package/dist/{limits-BNTWyUaZ.cjs → limits-DY_sFA3J.cjs} +7 -7
- package/dist/{mcp-D4dAo5BQ.mjs → mcp-DQkmk4VV.mjs} +14 -7
- package/dist/{mcp-CCKCKL6l.cjs → mcp-JpqI2POW.cjs} +14 -6
- package/dist/piExtension.d.mts +4 -1
- package/dist/piExtension.mjs +24 -1
- package/dist/{piRuntime-CW-XA4rz.mjs → piRuntime-DBpe12NN.mjs} +2 -2
- package/dist/{piRuntime-Bn5ypbjH.cjs → piRuntime-DRbbeQ72.cjs} +2 -2
- package/dist/{piTerminal-BLSXK1u2.mjs → piTerminal-BoHvPEZ_.mjs} +8 -7
- package/dist/{piTerminal-B7K75aXB.cjs → piTerminal-qdJ9KZVL.cjs} +8 -7
- package/dist/{runGemini-Bgg1BzDK.cjs → runGemini-CtOEFvhf.cjs} +8 -8
- package/dist/{runGemini-D5N11LxO.mjs → runGemini-YqH7a-7O.mjs} +7 -7
- package/dist/{runOpenClaw-CCpyKbrn.mjs → runOpenClaw-DSSyFQBb.mjs} +6 -6
- package/dist/{runOpenClaw-B9qWHybc.cjs → runOpenClaw-DoqZXBvL.cjs} +6 -6
- package/dist/{send-wl9ei8yG.cjs → send-9075kHZP.cjs} +5 -5
- package/dist/{send-C44kcXz5.mjs → send-Cs-RwqNf.mjs} +5 -5
- package/dist/{sessions-DXJEcUg6.mjs → sessions-iBnYzVUK.mjs} +5 -5
- package/dist/{sessions-Tad8elmy.cjs → sessions-qULzUzlI.cjs} +5 -5
- package/dist/{spawn-BOlb5y1_.mjs → spawn-C6fRkedx.mjs} +5 -5
- package/dist/{spawn-DA8WAFmm.cjs → spawn-od9V23cc.cjs} +5 -5
- package/dist/{teams-Bs8lI887.mjs → teams-CkrWQ4uM.mjs} +6 -6
- package/dist/{teams-qVLrFcdd.cjs → teams-CrCzU-AV.cjs} +6 -6
- package/dist/terminalTitleSuggest-DKgX3osW.mjs +38 -0
- package/dist/terminalTitleSuggest-Dji8I0Jy.cjs +45 -0
- package/dist/{todo-mCMoGjJk.cjs → todo-BCT_ZPuV.cjs} +2 -2
- package/dist/{todo-nzsqGZqp.mjs → todo-aCZmSt27.mjs} +2 -2
- package/dist/{types-xKrxbCRv.mjs → types-BvqOVUOW.mjs} +11 -6
- package/dist/{types-CN28qJl7.cjs → types-CUCU7Vw8.cjs} +13 -8
- package/package.json +7 -7
- package/dist/projectPath-CSpqWdxp.mjs +0 -10
- package/dist/projectPath-ChLhdOyt.cjs +0 -13
|
@@ -3,8 +3,8 @@
|
|
|
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-DY_sFA3J.cjs');
|
|
7
|
+
var index = require('./index-DHrwHxHf.cjs');
|
|
8
8
|
require('node:fs/promises');
|
|
9
9
|
require('node:os');
|
|
10
10
|
require('zod');
|
|
@@ -12,7 +12,7 @@ require('node:crypto');
|
|
|
12
12
|
require('tweetnacl');
|
|
13
13
|
require('node:util');
|
|
14
14
|
require('@paralleldrive/cuid2');
|
|
15
|
-
require('./types-
|
|
15
|
+
require('./types-CUCU7Vw8.cjs');
|
|
16
16
|
require('axios');
|
|
17
17
|
require('node:events');
|
|
18
18
|
require('socket.io-client');
|
|
@@ -22,7 +22,7 @@ require('fs/promises');
|
|
|
22
22
|
require('crypto');
|
|
23
23
|
require('path');
|
|
24
24
|
require('cross-spawn');
|
|
25
|
-
require('./
|
|
25
|
+
require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
26
26
|
require('url');
|
|
27
27
|
require('os');
|
|
28
28
|
require('node:child_process');
|
|
@@ -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-BM4kMNyr.cjs');
|
|
35
35
|
require('ink');
|
|
36
36
|
require('react');
|
|
37
37
|
require('@anthropic-ai/claude-agent-sdk');
|
|
@@ -1,8 +1,8 @@
|
|
|
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 { d as sendUserMessage, e as sessionWebUrl } from './index-
|
|
4
|
+
import { d as readPersistedSessions, c as configuration } from './limits-BtAuKRl2.mjs';
|
|
5
|
+
import { d as sendUserMessage, e as sessionWebUrl } from './index-BacwoXzs.mjs';
|
|
6
6
|
import 'node:fs/promises';
|
|
7
7
|
import 'node:os';
|
|
8
8
|
import 'zod';
|
|
@@ -10,7 +10,7 @@ import 'node:crypto';
|
|
|
10
10
|
import 'tweetnacl';
|
|
11
11
|
import 'node:util';
|
|
12
12
|
import '@paralleldrive/cuid2';
|
|
13
|
-
import './types-
|
|
13
|
+
import './types-BvqOVUOW.mjs';
|
|
14
14
|
import 'axios';
|
|
15
15
|
import 'node:events';
|
|
16
16
|
import 'socket.io-client';
|
|
@@ -20,7 +20,7 @@ import 'fs/promises';
|
|
|
20
20
|
import 'crypto';
|
|
21
21
|
import 'path';
|
|
22
22
|
import 'cross-spawn';
|
|
23
|
-
import './
|
|
23
|
+
import './terminalTitleSuggest-DKgX3osW.mjs';
|
|
24
24
|
import 'url';
|
|
25
25
|
import 'os';
|
|
26
26
|
import 'node:child_process';
|
|
@@ -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-C8unGWp7.mjs';
|
|
33
33
|
import 'ink';
|
|
34
34
|
import 'react';
|
|
35
35
|
import '@anthropic-ai/claude-agent-sdk';
|
|
@@ -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, a as listSessions, w as waitForTurnEnd, T as TurnWaitTimeoutError, r as readSessionTranscript, s as stopSession, b as resolvePermissionRequest, c 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, a as listSessions, w as waitForTurnEnd, T as TurnWaitTimeoutError, r as readSessionTranscript, s as stopSession, b as resolvePermissionRequest, c as archiveSession } from './index-BacwoXzs.mjs';
|
|
3
|
+
import { i as isValidSessionId } from './types-BvqOVUOW.mjs';
|
|
4
4
|
import 'node:os';
|
|
5
5
|
import 'node:crypto';
|
|
6
|
-
import './limits-
|
|
6
|
+
import './limits-BtAuKRl2.mjs';
|
|
7
7
|
import 'node:fs/promises';
|
|
8
8
|
import 'node:fs';
|
|
9
9
|
import 'node:path';
|
|
@@ -13,10 +13,10 @@ import 'node:util';
|
|
|
13
13
|
import '@paralleldrive/cuid2';
|
|
14
14
|
import 'cross-spawn';
|
|
15
15
|
import 'node:readline';
|
|
16
|
-
import './
|
|
16
|
+
import './terminalTitleSuggest-DKgX3osW.mjs';
|
|
17
17
|
import 'path';
|
|
18
18
|
import 'url';
|
|
19
|
-
import './agentGuidance-
|
|
19
|
+
import './agentGuidance-C8unGWp7.mjs';
|
|
20
20
|
import 'fs/promises';
|
|
21
21
|
import 'ink';
|
|
22
22
|
import 'react';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
|
-
var index = require('./index-
|
|
5
|
-
var index$1 = require('./types-
|
|
4
|
+
var index = require('./index-DHrwHxHf.cjs');
|
|
5
|
+
var index$1 = require('./types-CUCU7Vw8.cjs');
|
|
6
6
|
require('node:os');
|
|
7
7
|
require('node:crypto');
|
|
8
|
-
require('./limits-
|
|
8
|
+
require('./limits-DY_sFA3J.cjs');
|
|
9
9
|
require('node:fs/promises');
|
|
10
10
|
require('node:fs');
|
|
11
11
|
require('node:path');
|
|
@@ -15,10 +15,10 @@ require('node:util');
|
|
|
15
15
|
require('@paralleldrive/cuid2');
|
|
16
16
|
require('cross-spawn');
|
|
17
17
|
require('node:readline');
|
|
18
|
-
require('./
|
|
18
|
+
require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
19
19
|
require('path');
|
|
20
20
|
require('url');
|
|
21
|
-
require('./agentGuidance-
|
|
21
|
+
require('./agentGuidance-BM4kMNyr.cjs');
|
|
22
22
|
require('fs/promises');
|
|
23
23
|
require('ink');
|
|
24
24
|
require('react');
|
|
@@ -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 { f as forkSession, g as getProjectPath, F as ForkSourceMissingError, C as CodexAppServerClient, h as forkCodexThread, j as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession, k as stopDaemonSession } from './types-
|
|
5
|
-
import { d as readPersistedSessions, l as logger } from './limits-
|
|
6
|
-
import { k as readSessionMetadata, m as resolveSpawnPermissionMode, e as sessionWebUrl, n as resolveFirstMessageMeta, o as isValidSpawnOrigin, i as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES, S as SPAWN_AGENTS, u as waitForSessionKey, d as sendUserMessage } from './index-
|
|
4
|
+
import { f as forkSession, g as getProjectPath, F as ForkSourceMissingError, C as CodexAppServerClient, h as forkCodexThread, j as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession, k as stopDaemonSession } from './types-BvqOVUOW.mjs';
|
|
5
|
+
import { d as readPersistedSessions, l as logger } from './limits-BtAuKRl2.mjs';
|
|
6
|
+
import { k as readSessionMetadata, m as resolveSpawnPermissionMode, e as sessionWebUrl, n as resolveFirstMessageMeta, o as isValidSpawnOrigin, i as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES, S as SPAWN_AGENTS, u as waitForSessionKey, d as sendUserMessage } from './index-BacwoXzs.mjs';
|
|
7
7
|
import 'axios';
|
|
8
8
|
import 'node:events';
|
|
9
9
|
import 'socket.io-client';
|
|
@@ -15,7 +15,7 @@ import 'fs/promises';
|
|
|
15
15
|
import 'crypto';
|
|
16
16
|
import 'path';
|
|
17
17
|
import 'cross-spawn';
|
|
18
|
-
import './
|
|
18
|
+
import './terminalTitleSuggest-DKgX3osW.mjs';
|
|
19
19
|
import 'url';
|
|
20
20
|
import 'os';
|
|
21
21
|
import '@paralleldrive/cuid2';
|
|
@@ -29,7 +29,7 @@ import 'node:readline';
|
|
|
29
29
|
import '@anthropic-ai/sandbox-runtime';
|
|
30
30
|
import 'expo-server-sdk';
|
|
31
31
|
import 'node:util';
|
|
32
|
-
import './agentGuidance-
|
|
32
|
+
import './agentGuidance-C8unGWp7.mjs';
|
|
33
33
|
import 'ink';
|
|
34
34
|
import 'react';
|
|
35
35
|
import '@anthropic-ai/claude-agent-sdk';
|
|
@@ -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 index$1 = require('./types-
|
|
7
|
-
var persistence = require('./limits-
|
|
8
|
-
var index = require('./index-
|
|
6
|
+
var index$1 = require('./types-CUCU7Vw8.cjs');
|
|
7
|
+
var persistence = require('./limits-DY_sFA3J.cjs');
|
|
8
|
+
var index = require('./index-DHrwHxHf.cjs');
|
|
9
9
|
require('axios');
|
|
10
10
|
require('node:events');
|
|
11
11
|
require('socket.io-client');
|
|
@@ -17,7 +17,7 @@ require('fs/promises');
|
|
|
17
17
|
require('crypto');
|
|
18
18
|
require('path');
|
|
19
19
|
require('cross-spawn');
|
|
20
|
-
require('./
|
|
20
|
+
require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
21
21
|
require('url');
|
|
22
22
|
require('os');
|
|
23
23
|
require('@paralleldrive/cuid2');
|
|
@@ -31,7 +31,7 @@ require('node:readline');
|
|
|
31
31
|
require('@anthropic-ai/sandbox-runtime');
|
|
32
32
|
require('expo-server-sdk');
|
|
33
33
|
require('node:util');
|
|
34
|
-
require('./agentGuidance-
|
|
34
|
+
require('./agentGuidance-BM4kMNyr.cjs');
|
|
35
35
|
require('ink');
|
|
36
36
|
require('react');
|
|
37
37
|
require('@anthropic-ai/claude-agent-sdk');
|
|
@@ -2,17 +2,17 @@ import { homedir } from 'node:os';
|
|
|
2
2
|
import { readFile } from 'node:fs/promises';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { randomUUID } from 'node:crypto';
|
|
5
|
-
import { g as teamRequest, h as createTeamsClient } from './agentGuidance-
|
|
6
|
-
import { f as readCredentialsForConfiguredRelay } from './limits-
|
|
7
|
-
import { a as installTeamSkill, i as installAutomationSkill } from './install-
|
|
5
|
+
import { g as teamRequest, h as createTeamsClient } from './agentGuidance-C8unGWp7.mjs';
|
|
6
|
+
import { f as readCredentialsForConfiguredRelay } from './limits-BtAuKRl2.mjs';
|
|
7
|
+
import { a as installTeamSkill, i as installAutomationSkill } from './install-Ca7_Z3bV.mjs';
|
|
8
8
|
import 'node:fs';
|
|
9
9
|
import 'node:path';
|
|
10
10
|
import 'tweetnacl';
|
|
11
11
|
import 'chalk';
|
|
12
12
|
import 'node:util';
|
|
13
13
|
import '@paralleldrive/cuid2';
|
|
14
|
-
import './index-
|
|
15
|
-
import './types-
|
|
14
|
+
import './index-BacwoXzs.mjs';
|
|
15
|
+
import './types-BvqOVUOW.mjs';
|
|
16
16
|
import 'axios';
|
|
17
17
|
import 'node:events';
|
|
18
18
|
import 'socket.io-client';
|
|
@@ -22,7 +22,7 @@ import 'fs/promises';
|
|
|
22
22
|
import 'crypto';
|
|
23
23
|
import 'path';
|
|
24
24
|
import 'cross-spawn';
|
|
25
|
-
import './
|
|
25
|
+
import './terminalTitleSuggest-DKgX3osW.mjs';
|
|
26
26
|
import 'url';
|
|
27
27
|
import 'os';
|
|
28
28
|
import 'node:child_process';
|
|
@@ -4,17 +4,17 @@ 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-
|
|
9
|
-
var install = require('./install-
|
|
7
|
+
var agentGuidance = require('./agentGuidance-BM4kMNyr.cjs');
|
|
8
|
+
var persistence = require('./limits-DY_sFA3J.cjs');
|
|
9
|
+
var install = require('./install-BiOXBnnS.cjs');
|
|
10
10
|
require('node:fs');
|
|
11
11
|
require('node:path');
|
|
12
12
|
require('tweetnacl');
|
|
13
13
|
require('chalk');
|
|
14
14
|
require('node:util');
|
|
15
15
|
require('@paralleldrive/cuid2');
|
|
16
|
-
require('./index-
|
|
17
|
-
require('./types-
|
|
16
|
+
require('./index-DHrwHxHf.cjs');
|
|
17
|
+
require('./types-CUCU7Vw8.cjs');
|
|
18
18
|
require('axios');
|
|
19
19
|
require('node:events');
|
|
20
20
|
require('socket.io-client');
|
|
@@ -24,7 +24,7 @@ require('fs/promises');
|
|
|
24
24
|
require('crypto');
|
|
25
25
|
require('path');
|
|
26
26
|
require('cross-spawn');
|
|
27
|
-
require('./
|
|
27
|
+
require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
28
28
|
require('url');
|
|
29
29
|
require('os');
|
|
30
30
|
require('node:child_process');
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { dirname, resolve } from 'path';
|
|
2
|
+
import { fileURLToPath } from 'url';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
|
|
5
|
+
const __dirname$1 = dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
function projectPath() {
|
|
7
|
+
const path = resolve(__dirname$1, "..");
|
|
8
|
+
return path;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const TERMINAL_TITLE_SUGGEST_METHOD = "very-happy/terminal-title-suggest";
|
|
12
|
+
const TerminalTitleSuggestRequestSchema = z.object({
|
|
13
|
+
method: z.literal(TERMINAL_TITLE_SUGGEST_METHOD),
|
|
14
|
+
params: z.object({
|
|
15
|
+
/** The user's first prompt; the bridge samples its head (buildPrompt). */
|
|
16
|
+
prompt: z.string().min(1).max(2e4)
|
|
17
|
+
})
|
|
18
|
+
});
|
|
19
|
+
const TerminalTitleSuggestResultSchema = z.object({
|
|
20
|
+
/** Sanitized title, or null when nothing usable came back (keep the old title). */
|
|
21
|
+
title: z.string().nullable()
|
|
22
|
+
});
|
|
23
|
+
function baseName(cwd) {
|
|
24
|
+
const trimmed = cwd.replace(/[\\/]+$/, "");
|
|
25
|
+
const idx = Math.max(trimmed.lastIndexOf("/"), trimmed.lastIndexOf("\\"));
|
|
26
|
+
return idx >= 0 ? trimmed.slice(idx + 1) : trimmed;
|
|
27
|
+
}
|
|
28
|
+
function piSessionNameFromTitle(title, cwd) {
|
|
29
|
+
const m = /^(?:π|pi) - (.+)$/u.exec(title);
|
|
30
|
+
if (!m || !cwd) return void 0;
|
|
31
|
+
const suffix = ` - ${baseName(cwd)}`;
|
|
32
|
+
const rest = m[1];
|
|
33
|
+
if (!rest.endsWith(suffix)) return void 0;
|
|
34
|
+
const name = rest.slice(0, -suffix.length).trim();
|
|
35
|
+
return name || void 0;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { TERMINAL_TITLE_SUGGEST_METHOD as T, TerminalTitleSuggestResultSchema as a, TerminalTitleSuggestRequestSchema as b, piSessionNameFromTitle as c, projectPath as p };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var path = require('path');
|
|
4
|
+
var url = require('url');
|
|
5
|
+
var z = require('zod');
|
|
6
|
+
|
|
7
|
+
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
8
|
+
const __dirname$1 = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('terminalTitleSuggest-Dji8I0Jy.cjs', document.baseURI).href))));
|
|
9
|
+
function projectPath() {
|
|
10
|
+
const path$1 = path.resolve(__dirname$1, "..");
|
|
11
|
+
return path$1;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const TERMINAL_TITLE_SUGGEST_METHOD = "very-happy/terminal-title-suggest";
|
|
15
|
+
const TerminalTitleSuggestRequestSchema = z.z.object({
|
|
16
|
+
method: z.z.literal(TERMINAL_TITLE_SUGGEST_METHOD),
|
|
17
|
+
params: z.z.object({
|
|
18
|
+
/** The user's first prompt; the bridge samples its head (buildPrompt). */
|
|
19
|
+
prompt: z.z.string().min(1).max(2e4)
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
const TerminalTitleSuggestResultSchema = z.z.object({
|
|
23
|
+
/** Sanitized title, or null when nothing usable came back (keep the old title). */
|
|
24
|
+
title: z.z.string().nullable()
|
|
25
|
+
});
|
|
26
|
+
function baseName(cwd) {
|
|
27
|
+
const trimmed = cwd.replace(/[\\/]+$/, "");
|
|
28
|
+
const idx = Math.max(trimmed.lastIndexOf("/"), trimmed.lastIndexOf("\\"));
|
|
29
|
+
return idx >= 0 ? trimmed.slice(idx + 1) : trimmed;
|
|
30
|
+
}
|
|
31
|
+
function piSessionNameFromTitle(title, cwd) {
|
|
32
|
+
const m = /^(?:π|pi) - (.+)$/u.exec(title);
|
|
33
|
+
if (!m || !cwd) return void 0;
|
|
34
|
+
const suffix = ` - ${baseName(cwd)}`;
|
|
35
|
+
const rest = m[1];
|
|
36
|
+
if (!rest.endsWith(suffix)) return void 0;
|
|
37
|
+
const name = rest.slice(0, -suffix.length).trim();
|
|
38
|
+
return name || void 0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
exports.TERMINAL_TITLE_SUGGEST_METHOD = TERMINAL_TITLE_SUGGEST_METHOD;
|
|
42
|
+
exports.TerminalTitleSuggestRequestSchema = TerminalTitleSuggestRequestSchema;
|
|
43
|
+
exports.TerminalTitleSuggestResultSchema = TerminalTitleSuggestResultSchema;
|
|
44
|
+
exports.piSessionNameFromTitle = piSessionNameFromTitle;
|
|
45
|
+
exports.projectPath = projectPath;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var persistence = require('./limits-
|
|
4
|
-
var agentGuidance = require('./agentGuidance-
|
|
3
|
+
var persistence = require('./limits-DY_sFA3J.cjs');
|
|
4
|
+
var agentGuidance = require('./agentGuidance-BM4kMNyr.cjs');
|
|
5
5
|
require('node:fs/promises');
|
|
6
6
|
require('node:fs');
|
|
7
7
|
require('node:os');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { f as readCredentialsForConfiguredRelay, g as createBuiltinTodoClient, c as configuration, B as BUILTIN_TODO_SKILL } from './limits-
|
|
2
|
-
import { f as readTeamScope, t as teamScopePath } from './agentGuidance-
|
|
1
|
+
import { f as readCredentialsForConfiguredRelay, g as createBuiltinTodoClient, c as configuration, B as BUILTIN_TODO_SKILL } from './limits-BtAuKRl2.mjs';
|
|
2
|
+
import { f as readTeamScope, t as teamScopePath } from './agentGuidance-C8unGWp7.mjs';
|
|
3
3
|
import 'node:fs/promises';
|
|
4
4
|
import 'node:fs';
|
|
5
5
|
import 'node:os';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
-
import { y as AgentVersionsSchema, l as logger, j as encodeBase64, z as encrypt, D as decrypt, E as decodeBase64, c as configuration, e as createEnvelope, s as streamKeyOf, F as readDaemonState, G as clearDaemonState, R as ReleaseDrainNoticeSchema, H as decryptBlob, I as RelayAssignmentResponseSchema, J as prepareClipboardText, K as prepareClipboardHistoryText, r as readSettings, d as readPersistedSessions, L as credentialRelayProblem, p as packageJson, M as RelayCandidatesResponseSchema, N as readTrackedClaudeSessionIds, O as readTrackedCodexThreadIds, P as libsodiumEncryptForPublicKey, Q as libsodiumPublicKeyFromSecretKey, S as getRandomBytes, T as redactLogValue } from './limits-
|
|
2
|
+
import { y as AgentVersionsSchema, l as logger, j as encodeBase64, z as encrypt, D as decrypt, E as decodeBase64, c as configuration, e as createEnvelope, s as streamKeyOf, F as readDaemonState, G as clearDaemonState, R as ReleaseDrainNoticeSchema, H as decryptBlob, I as RelayAssignmentResponseSchema, J as prepareClipboardText, K as prepareClipboardHistoryText, r as readSettings, d as readPersistedSessions, L as credentialRelayProblem, p as packageJson, M as RelayCandidatesResponseSchema, N as readTrackedClaudeSessionIds, O as readTrackedCodexThreadIds, P as libsodiumEncryptForPublicKey, Q as libsodiumPublicKeyFromSecretKey, S as getRandomBytes, T as redactLogValue } from './limits-BtAuKRl2.mjs';
|
|
3
3
|
import { EventEmitter } from 'node:events';
|
|
4
4
|
import { io } from 'socket.io-client';
|
|
5
5
|
import { z } from 'zod';
|
|
@@ -10,7 +10,7 @@ import { mkdir, writeFile, appendFile, stat, rename, unlink, readdir, readFile }
|
|
|
10
10
|
import { randomUUID, createHash } from 'crypto';
|
|
11
11
|
import { resolve, join, sep } from 'path';
|
|
12
12
|
import { spawn } from 'cross-spawn';
|
|
13
|
-
import { p as projectPath } from './
|
|
13
|
+
import { p as projectPath, c as piSessionNameFromTitle } from './terminalTitleSuggest-DKgX3osW.mjs';
|
|
14
14
|
import os, { platform } from 'os';
|
|
15
15
|
import { createId } from '@paralleldrive/cuid2';
|
|
16
16
|
import { stat as stat$1, readdir as readdir$1, lstat, open, copyFile, unlink as unlink$1, readFile as readFile$1, rename as rename$1, writeFile as writeFile$1 } from 'node:fs/promises';
|
|
@@ -9889,10 +9889,15 @@ function hostListSignature(items) {
|
|
|
9889
9889
|
const SHELL_COMMANDS = /* @__PURE__ */ new Set(["zsh", "bash", "fish", "sh", "dash", "ksh", "tcsh", "csh"]);
|
|
9890
9890
|
const TITLE_MAX_CHARS = 60;
|
|
9891
9891
|
const JUNK_TITLES = /* @__PURE__ */ new Set(["tmux", "claude", "node", ...SHELL_COMMANDS]);
|
|
9892
|
-
function deriveAutoTitle(paneTitle, hostname) {
|
|
9892
|
+
function deriveAutoTitle(paneTitle, hostname, cwd) {
|
|
9893
9893
|
if (typeof paneTitle !== "string") return void 0;
|
|
9894
9894
|
const t = paneTitle.replace(/^[^\p{L}\p{N}]+/u, "").replace(/\s+/g, " ").trim();
|
|
9895
9895
|
if (!t) return void 0;
|
|
9896
|
+
const piName = piSessionNameFromTitle(t, cwd);
|
|
9897
|
+
if (piName) {
|
|
9898
|
+
const chars2 = Array.from(piName);
|
|
9899
|
+
return chars2.length > TITLE_MAX_CHARS ? chars2.slice(0, TITLE_MAX_CHARS).join("") : piName;
|
|
9900
|
+
}
|
|
9896
9901
|
const lower = t.toLowerCase();
|
|
9897
9902
|
const host = (hostname || "").toLowerCase();
|
|
9898
9903
|
const shortHost = host.split(".")[0];
|
|
@@ -11322,7 +11327,7 @@ class WebTerminalManager {
|
|
|
11322
11327
|
const created = new TerminalSession(id, { kind: "pty", pty: proc }, void 0, cols, rows);
|
|
11323
11328
|
created.direct = { cwd, createdAt: Date.now() };
|
|
11324
11329
|
created.onTitleChange((title) => {
|
|
11325
|
-
if (created.direct && !created.direct.manual) created.direct.title = deriveAutoTitle(title, os$1.hostname());
|
|
11330
|
+
if (created.direct && !created.direct.manual) created.direct.title = deriveAutoTitle(title, os$1.hostname(), created.direct.cwd);
|
|
11326
11331
|
});
|
|
11327
11332
|
created.onOutputChunk = (chunk) => {
|
|
11328
11333
|
this.emit("terminal-output", { terminalId: id, data: chunk.data, seq: chunk.seq });
|
|
@@ -11788,7 +11793,7 @@ class WebTerminalManager {
|
|
|
11788
11793
|
if (!s || !s.name.startsWith("vh-")) continue;
|
|
11789
11794
|
const id = s.name.slice(3);
|
|
11790
11795
|
let title = s.vhTitle;
|
|
11791
|
-
const auto = deriveAutoTitle(s.paneTitle, hostname);
|
|
11796
|
+
const auto = deriveAutoTitle(s.paneTitle, hostname, s.cwd);
|
|
11792
11797
|
if (auto && !s.manual && auto !== title) {
|
|
11793
11798
|
try {
|
|
11794
11799
|
const w = spawnSync(
|
|
@@ -12046,7 +12051,7 @@ function parseVhTerminals(stdout, hostname = os$1.hostname()) {
|
|
|
12046
12051
|
if (!s || !s.name.startsWith("vh-")) continue;
|
|
12047
12052
|
out.push({
|
|
12048
12053
|
id: s.name.slice(3),
|
|
12049
|
-
title: s.vhTitle ?? deriveAutoTitle(s.paneTitle, hostname),
|
|
12054
|
+
title: s.vhTitle ?? deriveAutoTitle(s.paneTitle, hostname, s.cwd),
|
|
12050
12055
|
cwd: s.cwd,
|
|
12051
12056
|
createdAt: s.created,
|
|
12052
12057
|
activityAt: s.activity
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var axios = require('axios');
|
|
4
|
-
var persistence = require('./limits-
|
|
4
|
+
var persistence = require('./limits-DY_sFA3J.cjs');
|
|
5
5
|
var node_events = require('node:events');
|
|
6
6
|
var socket_ioClient = require('socket.io-client');
|
|
7
7
|
var z = require('zod');
|
|
@@ -12,7 +12,7 @@ var fs = require('fs/promises');
|
|
|
12
12
|
var crypto = require('crypto');
|
|
13
13
|
var path = require('path');
|
|
14
14
|
var spawn = require('cross-spawn');
|
|
15
|
-
var
|
|
15
|
+
var terminalTitleSuggest = require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
16
16
|
var os = require('os');
|
|
17
17
|
var cuid2 = require('@paralleldrive/cuid2');
|
|
18
18
|
var promises = require('node:fs/promises');
|
|
@@ -652,7 +652,7 @@ async function answerSocketRequest(ack, run, onDrop) {
|
|
|
652
652
|
}
|
|
653
653
|
|
|
654
654
|
function run$1(args, options) {
|
|
655
|
-
const RUNNER_PATH = path.resolve(path.join(
|
|
655
|
+
const RUNNER_PATH = path.resolve(path.join(terminalTitleSuggest.projectPath(), "scripts", "ripgrep_launcher.cjs"));
|
|
656
656
|
return new Promise((resolve2, reject) => {
|
|
657
657
|
const child = spawn.spawn("node", [RUNNER_PATH, JSON.stringify(args)], {
|
|
658
658
|
stdio: ["pipe", "pipe", "pipe"],
|
|
@@ -683,7 +683,7 @@ function run$1(args, options) {
|
|
|
683
683
|
function getBinaryPath() {
|
|
684
684
|
const platformName = os.platform();
|
|
685
685
|
const binaryName = platformName === "win32" ? "difft.exe" : "difft";
|
|
686
|
-
return path.resolve(path.join(
|
|
686
|
+
return path.resolve(path.join(terminalTitleSuggest.projectPath(), "tools", "unpacked", binaryName));
|
|
687
687
|
}
|
|
688
688
|
function run(args, options) {
|
|
689
689
|
const binaryPath = getBinaryPath();
|
|
@@ -9910,10 +9910,15 @@ function hostListSignature(items) {
|
|
|
9910
9910
|
const SHELL_COMMANDS = /* @__PURE__ */ new Set(["zsh", "bash", "fish", "sh", "dash", "ksh", "tcsh", "csh"]);
|
|
9911
9911
|
const TITLE_MAX_CHARS = 60;
|
|
9912
9912
|
const JUNK_TITLES = /* @__PURE__ */ new Set(["tmux", "claude", "node", ...SHELL_COMMANDS]);
|
|
9913
|
-
function deriveAutoTitle(paneTitle, hostname) {
|
|
9913
|
+
function deriveAutoTitle(paneTitle, hostname, cwd) {
|
|
9914
9914
|
if (typeof paneTitle !== "string") return void 0;
|
|
9915
9915
|
const t = paneTitle.replace(/^[^\p{L}\p{N}]+/u, "").replace(/\s+/g, " ").trim();
|
|
9916
9916
|
if (!t) return void 0;
|
|
9917
|
+
const piName = terminalTitleSuggest.piSessionNameFromTitle(t, cwd);
|
|
9918
|
+
if (piName) {
|
|
9919
|
+
const chars2 = Array.from(piName);
|
|
9920
|
+
return chars2.length > TITLE_MAX_CHARS ? chars2.slice(0, TITLE_MAX_CHARS).join("") : piName;
|
|
9921
|
+
}
|
|
9917
9922
|
const lower = t.toLowerCase();
|
|
9918
9923
|
const host = (hostname || "").toLowerCase();
|
|
9919
9924
|
const shortHost = host.split(".")[0];
|
|
@@ -11343,7 +11348,7 @@ class WebTerminalManager {
|
|
|
11343
11348
|
const created = new TerminalSession(id, { kind: "pty", pty: proc }, void 0, cols, rows);
|
|
11344
11349
|
created.direct = { cwd, createdAt: Date.now() };
|
|
11345
11350
|
created.onTitleChange((title) => {
|
|
11346
|
-
if (created.direct && !created.direct.manual) created.direct.title = deriveAutoTitle(title, os$1.hostname());
|
|
11351
|
+
if (created.direct && !created.direct.manual) created.direct.title = deriveAutoTitle(title, os$1.hostname(), created.direct.cwd);
|
|
11347
11352
|
});
|
|
11348
11353
|
created.onOutputChunk = (chunk) => {
|
|
11349
11354
|
this.emit("terminal-output", { terminalId: id, data: chunk.data, seq: chunk.seq });
|
|
@@ -11809,7 +11814,7 @@ class WebTerminalManager {
|
|
|
11809
11814
|
if (!s || !s.name.startsWith("vh-")) continue;
|
|
11810
11815
|
const id = s.name.slice(3);
|
|
11811
11816
|
let title = s.vhTitle;
|
|
11812
|
-
const auto = deriveAutoTitle(s.paneTitle, hostname);
|
|
11817
|
+
const auto = deriveAutoTitle(s.paneTitle, hostname, s.cwd);
|
|
11813
11818
|
if (auto && !s.manual && auto !== title) {
|
|
11814
11819
|
try {
|
|
11815
11820
|
const w = node_child_process.spawnSync(
|
|
@@ -12067,7 +12072,7 @@ function parseVhTerminals(stdout, hostname = os$1.hostname()) {
|
|
|
12067
12072
|
if (!s || !s.name.startsWith("vh-")) continue;
|
|
12068
12073
|
out.push({
|
|
12069
12074
|
id: s.name.slice(3),
|
|
12070
|
-
title: s.vhTitle ?? deriveAutoTitle(s.paneTitle, hostname),
|
|
12075
|
+
title: s.vhTitle ?? deriveAutoTitle(s.paneTitle, hostname, s.cwd),
|
|
12071
12076
|
cwd: s.cwd,
|
|
12072
12077
|
createdAt: s.created,
|
|
12073
12078
|
activityAt: s.activity
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "very-happy-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.153",
|
|
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": [
|
|
@@ -117,12 +117,12 @@
|
|
|
117
117
|
"zod": "^4.0.0"
|
|
118
118
|
},
|
|
119
119
|
"optionalDependencies": {
|
|
120
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
121
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
122
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
123
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
124
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
125
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
120
|
+
"very-happy-tools-arm64-darwin": "0.2.153",
|
|
121
|
+
"very-happy-tools-x64-darwin": "0.2.153",
|
|
122
|
+
"very-happy-tools-arm64-linux": "0.2.153",
|
|
123
|
+
"very-happy-tools-x64-linux": "0.2.153",
|
|
124
|
+
"very-happy-tools-arm64-win32": "0.2.153",
|
|
125
|
+
"very-happy-tools-x64-win32": "0.2.153"
|
|
126
126
|
},
|
|
127
127
|
"devDependencies": {
|
|
128
128
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { dirname, resolve } from 'path';
|
|
2
|
-
import { fileURLToPath } from 'url';
|
|
3
|
-
|
|
4
|
-
const __dirname$1 = dirname(fileURLToPath(import.meta.url));
|
|
5
|
-
function projectPath() {
|
|
6
|
-
const path = resolve(__dirname$1, "..");
|
|
7
|
-
return path;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export { projectPath as p };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var path = require('path');
|
|
4
|
-
var url = require('url');
|
|
5
|
-
|
|
6
|
-
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
7
|
-
const __dirname$1 = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('projectPath-ChLhdOyt.cjs', document.baseURI).href))));
|
|
8
|
-
function projectPath() {
|
|
9
|
-
const path$1 = path.resolve(__dirname$1, "..");
|
|
10
|
-
return path$1;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
exports.projectPath = projectPath;
|