very-happy-cli 0.2.152 → 0.2.154
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-B14xNj5L.cjs} +2 -2
- package/dist/{AcpBackend-Bs3wwYbt.mjs → AcpBackend-Ckyadhf4.mjs} +2 -2
- package/dist/{AcpSessionManager-BazkBuFo.cjs → AcpSessionManager-CCHmPdrR.cjs} +1 -1
- package/dist/{AcpSessionManager-BT8PJMEm.mjs → AcpSessionManager-H8t4P-IW.mjs} +1 -1
- package/dist/{agentGuidance-CqBn77AI.cjs → agentGuidance-DUBXppv-.cjs} +2 -1
- package/dist/{agentGuidance-Daxn5Nvj.mjs → agentGuidance-TLYQxsm2.mjs} +2 -1
- package/dist/{agentHome-CCYfs8Ec.mjs → agentHome-B20RWdgE.mjs} +3 -3
- package/dist/{agentHome-CpJjrQZc.cjs → agentHome-BUsLTZnz.cjs} +3 -3
- package/dist/{auto-DV5emt1-.mjs → auto-BQnncDcs.mjs} +7 -7
- package/dist/{auto-DncmTDvw.cjs → auto-IeldARBS.cjs} +7 -7
- package/dist/codex/happyMcpStdioBridge.cjs +2 -2
- package/dist/codex/happyMcpStdioBridge.mjs +2 -2
- package/dist/{config-DbKpQpdL.mjs → config-B-ocQh5V.mjs} +5 -5
- package/dist/{config-DeJgSMh-.cjs → config-DM_xI9M6.cjs} +5 -5
- package/dist/{index-BauTv2jB.mjs → index-BELV05ko.mjs} +284 -45
- package/dist/{index-imt4mC41.cjs → index-BUxBxSxJ.cjs} +9 -9
- package/dist/{index-CN7OF2cU.mjs → index-CIx3248o.mjs} +5 -5
- package/dist/{index-DahaLbu4.mjs → index-ZKuBjvHi.mjs} +9 -9
- package/dist/{index-ZIW1jrYm.cjs → index-eCjkm8Y2.cjs} +307 -66
- package/dist/{index-CRaJ9k2p.cjs → index-okLyUzeD.cjs} +5 -5
- package/dist/index.cjs +5 -5
- package/dist/index.mjs +5 -5
- package/dist/{install-CDR3qBhs.cjs → install-BZOdxfPd.cjs} +1 -1
- package/dist/{install-C1K3nrxF.mjs → install-CoLN3whR.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-CA4OcAS7.cjs} +7 -7
- package/dist/{installTerminalHooks-VvmlO6Ue.mjs → installTerminalHooks-Dde_8t36.mjs} +6 -6
- package/dist/lib.cjs +3 -3
- package/dist/lib.mjs +3 -3
- package/dist/{limits-BNTWyUaZ.cjs → limits-CmzISka2.cjs} +7 -7
- package/dist/{limits-CKR_HJnO.mjs → limits-Dt7_unH4.mjs} +7 -7
- package/dist/{mcp-CCKCKL6l.cjs → mcp-7iDHlyCI.cjs} +14 -6
- package/dist/{mcp-D4dAo5BQ.mjs → mcp-9Ui4nQZL.mjs} +14 -7
- package/dist/piExtension.d.mts +4 -1
- package/dist/piExtension.mjs +24 -1
- package/dist/{piRuntime-Bn5ypbjH.cjs → piRuntime-BesGGPME.cjs} +2 -2
- package/dist/{piRuntime-CW-XA4rz.mjs → piRuntime-C4E4pgye.mjs} +2 -2
- package/dist/{piTerminal-BLSXK1u2.mjs → piTerminal-CCEGCQOY.mjs} +8 -7
- package/dist/{piTerminal-B7K75aXB.cjs → piTerminal-fUogwxYr.cjs} +8 -7
- package/dist/{runGemini-D5N11LxO.mjs → runGemini-BW-pEklU.mjs} +7 -7
- package/dist/{runGemini-Bgg1BzDK.cjs → runGemini-CNPGSsSK.cjs} +8 -8
- package/dist/{runOpenClaw-B9qWHybc.cjs → runOpenClaw-Bsodkg_s.cjs} +6 -6
- package/dist/{runOpenClaw-CCpyKbrn.mjs → runOpenClaw-NRB6-_jU.mjs} +6 -6
- package/dist/{send-wl9ei8yG.cjs → send-Bd00QcHC.cjs} +56 -18
- package/dist/{send-C44kcXz5.mjs → send-DYeSFg8s.mjs} +56 -19
- package/dist/{sessions-DXJEcUg6.mjs → sessions-DlPOYKLU.mjs} +5 -5
- package/dist/{sessions-Tad8elmy.cjs → sessions-RIFUoy_g.cjs} +5 -5
- package/dist/{spawn-BOlb5y1_.mjs → spawn-D1bhyHbH.mjs} +5 -5
- package/dist/{spawn-DA8WAFmm.cjs → spawn-DxrfHTF4.cjs} +5 -5
- package/dist/{teams-qVLrFcdd.cjs → teams-Cfy0VMCo.cjs} +6 -6
- package/dist/{teams-Bs8lI887.mjs → teams-pfKHpkgL.mjs} +6 -6
- package/dist/terminalTitleSuggest-DKgX3osW.mjs +38 -0
- package/dist/terminalTitleSuggest-Dji8I0Jy.cjs +45 -0
- package/dist/{todo-nzsqGZqp.mjs → todo-B2CjDg_V.mjs} +2 -2
- package/dist/{todo-mCMoGjJk.cjs → todo-B4cBFzHB.cjs} +2 -2
- package/dist/{types-CN28qJl7.cjs → types-Bd_TGr0F.cjs} +34 -10
- package/dist/{types-xKrxbCRv.mjs → types-D5RWyBE5.mjs} +32 -9
- package/package.json +7 -7
- package/dist/projectPath-CSpqWdxp.mjs +0 -10
- package/dist/projectPath-ChLhdOyt.cjs +0 -13
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-eCjkm8Y2.cjs');
|
|
4
4
|
var claudeAgentSdk = require('@anthropic-ai/claude-agent-sdk');
|
|
5
5
|
require('chalk');
|
|
6
6
|
require('node:os');
|
|
7
7
|
require('node:crypto');
|
|
8
|
-
require('./types-
|
|
8
|
+
require('./types-Bd_TGr0F.cjs');
|
|
9
9
|
require('axios');
|
|
10
|
-
require('./limits-
|
|
10
|
+
require('./limits-CmzISka2.cjs');
|
|
11
11
|
require('node:fs/promises');
|
|
12
12
|
require('node:fs');
|
|
13
13
|
require('node:path');
|
|
@@ -23,7 +23,7 @@ require('fs/promises');
|
|
|
23
23
|
require('crypto');
|
|
24
24
|
require('path');
|
|
25
25
|
require('cross-spawn');
|
|
26
|
-
require('./
|
|
26
|
+
require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
27
27
|
require('url');
|
|
28
28
|
require('os');
|
|
29
29
|
require('node:child_process');
|
|
@@ -32,7 +32,7 @@ require('fs');
|
|
|
32
32
|
require('node:readline');
|
|
33
33
|
require('@anthropic-ai/sandbox-runtime');
|
|
34
34
|
require('expo-server-sdk');
|
|
35
|
-
require('./agentGuidance-
|
|
35
|
+
require('./agentGuidance-DUBXppv-.cjs');
|
|
36
36
|
require('ink');
|
|
37
37
|
require('react');
|
|
38
38
|
require('ps-list');
|
package/dist/index.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
require('chalk');
|
|
4
|
-
require('./index-
|
|
5
|
-
require('./limits-
|
|
4
|
+
require('./index-eCjkm8Y2.cjs');
|
|
5
|
+
require('./limits-CmzISka2.cjs');
|
|
6
6
|
require('zod');
|
|
7
|
-
require('./types-
|
|
7
|
+
require('./types-Bd_TGr0F.cjs');
|
|
8
8
|
require('node:child_process');
|
|
9
9
|
require('node:os');
|
|
10
10
|
require('node:crypto');
|
|
@@ -12,10 +12,10 @@ require('cross-spawn');
|
|
|
12
12
|
require('node:path');
|
|
13
13
|
require('node:readline');
|
|
14
14
|
require('node:fs');
|
|
15
|
-
require('./
|
|
15
|
+
require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
16
16
|
require('path');
|
|
17
17
|
require('url');
|
|
18
|
-
require('./agentGuidance-
|
|
18
|
+
require('./agentGuidance-DUBXppv-.cjs');
|
|
19
19
|
require('node:fs/promises');
|
|
20
20
|
require('fs/promises');
|
|
21
21
|
require('ink');
|
package/dist/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import 'chalk';
|
|
2
|
-
import './index-
|
|
3
|
-
import './limits-
|
|
2
|
+
import './index-BELV05ko.mjs';
|
|
3
|
+
import './limits-Dt7_unH4.mjs';
|
|
4
4
|
import 'zod';
|
|
5
|
-
import './types-
|
|
5
|
+
import './types-D5RWyBE5.mjs';
|
|
6
6
|
import 'node:child_process';
|
|
7
7
|
import 'node:os';
|
|
8
8
|
import 'node:crypto';
|
|
@@ -10,10 +10,10 @@ import 'cross-spawn';
|
|
|
10
10
|
import 'node:path';
|
|
11
11
|
import 'node:readline';
|
|
12
12
|
import 'node:fs';
|
|
13
|
-
import './
|
|
13
|
+
import './terminalTitleSuggest-DKgX3osW.mjs';
|
|
14
14
|
import 'path';
|
|
15
15
|
import 'url';
|
|
16
|
-
import './agentGuidance-
|
|
16
|
+
import './agentGuidance-TLYQxsm2.mjs';
|
|
17
17
|
import 'node:fs/promises';
|
|
18
18
|
import 'fs/promises';
|
|
19
19
|
import 'ink';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var node_crypto = require('node:crypto');
|
|
4
4
|
var promises = require('node:fs/promises');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var index = require('./index-
|
|
6
|
+
var index = require('./index-eCjkm8Y2.cjs');
|
|
7
7
|
|
|
8
8
|
async function assertPrivateDestination(directory) {
|
|
9
9
|
for (let path$1 = directory; ; path$1 = path.dirname(path$1)) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createHash, randomUUID } from 'node:crypto';
|
|
2
2
|
import { unlink, rmdir, mkdir, lstat, readFile, writeFile, rename } from 'node:fs/promises';
|
|
3
3
|
import { join, resolve, dirname } from 'node:path';
|
|
4
|
-
import {
|
|
4
|
+
import { B as TEAM_SKILL } from './index-BELV05ko.mjs';
|
|
5
5
|
|
|
6
6
|
async function assertPrivateDestination(directory) {
|
|
7
7
|
for (let path = directory; ; path = dirname(path)) {
|
|
@@ -3,9 +3,10 @@ import { homedir } from 'node:os';
|
|
|
3
3
|
import { join, resolve, dirname } from 'node:path';
|
|
4
4
|
import { pathToFileURL } from 'node:url';
|
|
5
5
|
import { randomUUID } from 'node:crypto';
|
|
6
|
-
import { p as projectPath } from './
|
|
6
|
+
import { p as projectPath } from './terminalTitleSuggest-DKgX3osW.mjs';
|
|
7
7
|
import 'path';
|
|
8
8
|
import 'url';
|
|
9
|
+
import 'zod';
|
|
9
10
|
|
|
10
11
|
const HEADER = "// Managed by Very Happy: native Pi terminal tools.\n";
|
|
11
12
|
const PI_TOOLS_HELP = `very-happy install-pi-tools - enable tools in native Pi
|
|
@@ -5,9 +5,10 @@ var os = require('node:os');
|
|
|
5
5
|
var path = require('node:path');
|
|
6
6
|
var node_url = require('node:url');
|
|
7
7
|
var node_crypto = require('node:crypto');
|
|
8
|
-
var
|
|
8
|
+
var terminalTitleSuggest = require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
9
9
|
require('path');
|
|
10
10
|
require('url');
|
|
11
|
+
require('zod');
|
|
11
12
|
|
|
12
13
|
const HEADER = "// Managed by Very Happy: native Pi terminal tools.\n";
|
|
13
14
|
const PI_TOOLS_HELP = `very-happy install-pi-tools - enable tools in native Pi
|
|
@@ -51,7 +52,7 @@ async function installPiTools(remove = false) {
|
|
|
51
52
|
await promises.unlink(target);
|
|
52
53
|
return target;
|
|
53
54
|
}
|
|
54
|
-
const content = piToolsLoader(path.resolve(
|
|
55
|
+
const content = piToolsLoader(path.resolve(terminalTitleSuggest.projectPath(), "dist/piExtension.mjs"));
|
|
55
56
|
await promises.mkdir(path.dirname(target), { recursive: true, mode: 448 });
|
|
56
57
|
const temporary = `${target}.${node_crypto.randomUUID()}.new`;
|
|
57
58
|
try {
|
|
@@ -5,16 +5,16 @@ var path = require('node:path');
|
|
|
5
5
|
var os = require('node:os');
|
|
6
6
|
var node_child_process = require('node:child_process');
|
|
7
7
|
var chalk = require('chalk');
|
|
8
|
-
var
|
|
9
|
-
var index = require('./index-
|
|
8
|
+
var terminalTitleSuggest = require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
9
|
+
var index = require('./index-eCjkm8Y2.cjs');
|
|
10
10
|
require('path');
|
|
11
11
|
require('url');
|
|
12
|
+
require('zod');
|
|
12
13
|
require('node:crypto');
|
|
13
|
-
require('./types-
|
|
14
|
+
require('./types-Bd_TGr0F.cjs');
|
|
14
15
|
require('axios');
|
|
15
|
-
require('./limits-
|
|
16
|
+
require('./limits-CmzISka2.cjs');
|
|
16
17
|
require('node:fs/promises');
|
|
17
|
-
require('zod');
|
|
18
18
|
require('tweetnacl');
|
|
19
19
|
require('node:util');
|
|
20
20
|
require('@paralleldrive/cuid2');
|
|
@@ -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-DUBXppv-.cjs');
|
|
35
35
|
require('ink');
|
|
36
36
|
require('react');
|
|
37
37
|
require('@anthropic-ai/claude-agent-sdk');
|
|
@@ -153,7 +153,7 @@ function claudeSettingsPath() {
|
|
|
153
153
|
return path.join(configDir, "settings.json");
|
|
154
154
|
}
|
|
155
155
|
function terminalMirrorHookCommand() {
|
|
156
|
-
const script = path.resolve(
|
|
156
|
+
const script = path.resolve(terminalTitleSuggest.projectPath(), "scripts", TERMINAL_MIRROR_FORWARDER_BASENAME);
|
|
157
157
|
return `[ -f "${script}" ] && node "${script}" || true`;
|
|
158
158
|
}
|
|
159
159
|
async function installTerminalHooks(opts = {}) {
|
|
@@ -3,16 +3,16 @@ import { join, resolve } from 'node:path';
|
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { spawnSync } from 'node:child_process';
|
|
5
5
|
import chalk from 'chalk';
|
|
6
|
-
import { p as projectPath } from './
|
|
7
|
-
import { j as tmuxSupportsSessionEnv } from './index-
|
|
6
|
+
import { p as projectPath } from './terminalTitleSuggest-DKgX3osW.mjs';
|
|
7
|
+
import { j as tmuxSupportsSessionEnv } from './index-BELV05ko.mjs';
|
|
8
8
|
import 'path';
|
|
9
9
|
import 'url';
|
|
10
|
+
import 'zod';
|
|
10
11
|
import 'node:crypto';
|
|
11
|
-
import './types-
|
|
12
|
+
import './types-D5RWyBE5.mjs';
|
|
12
13
|
import 'axios';
|
|
13
|
-
import './limits-
|
|
14
|
+
import './limits-Dt7_unH4.mjs';
|
|
14
15
|
import 'node:fs/promises';
|
|
15
|
-
import 'zod';
|
|
16
16
|
import 'tweetnacl';
|
|
17
17
|
import 'node:util';
|
|
18
18
|
import '@paralleldrive/cuid2';
|
|
@@ -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-TLYQxsm2.mjs';
|
|
33
33
|
import 'ink';
|
|
34
34
|
import 'react';
|
|
35
35
|
import '@anthropic-ai/claude-agent-sdk';
|
package/dist/lib.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./types-
|
|
4
|
-
var persistence = require('./limits-
|
|
3
|
+
var index = require('./types-Bd_TGr0F.cjs');
|
|
4
|
+
var persistence = require('./limits-CmzISka2.cjs');
|
|
5
5
|
require('axios');
|
|
6
6
|
require('node:events');
|
|
7
7
|
require('socket.io-client');
|
|
@@ -13,7 +13,7 @@ require('fs/promises');
|
|
|
13
13
|
require('crypto');
|
|
14
14
|
require('path');
|
|
15
15
|
require('cross-spawn');
|
|
16
|
-
require('./
|
|
16
|
+
require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
17
17
|
require('url');
|
|
18
18
|
require('os');
|
|
19
19
|
require('@paralleldrive/cuid2');
|
package/dist/lib.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema } from './types-
|
|
2
|
-
export { c as configuration, l as logger } from './limits-
|
|
1
|
+
export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema } from './types-D5RWyBE5.mjs';
|
|
2
|
+
export { c as configuration, l as logger } from './limits-Dt7_unH4.mjs';
|
|
3
3
|
import 'axios';
|
|
4
4
|
import 'node:events';
|
|
5
5
|
import 'socket.io-client';
|
|
@@ -11,7 +11,7 @@ import 'fs/promises';
|
|
|
11
11
|
import 'crypto';
|
|
12
12
|
import 'path';
|
|
13
13
|
import 'cross-spawn';
|
|
14
|
-
import './
|
|
14
|
+
import './terminalTitleSuggest-DKgX3osW.mjs';
|
|
15
15
|
import 'url';
|
|
16
16
|
import 'os';
|
|
17
17
|
import '@paralleldrive/cuid2';
|
|
@@ -31,7 +31,7 @@ function _interopNamespaceDefault(e) {
|
|
|
31
31
|
var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
|
|
32
32
|
|
|
33
33
|
var name = "very-happy-cli";
|
|
34
|
-
var version = "0.2.
|
|
34
|
+
var version = "0.2.154";
|
|
35
35
|
var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
|
|
36
36
|
var author = "Kirill Dubovitskiy";
|
|
37
37
|
var contributors = [
|
|
@@ -148,12 +148,12 @@ var dependencies = {
|
|
|
148
148
|
zod: "^4.0.0"
|
|
149
149
|
};
|
|
150
150
|
var optionalDependencies = {
|
|
151
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
152
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
153
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
154
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
155
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
156
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
151
|
+
"very-happy-tools-arm64-darwin": "0.2.154",
|
|
152
|
+
"very-happy-tools-x64-darwin": "0.2.154",
|
|
153
|
+
"very-happy-tools-arm64-linux": "0.2.154",
|
|
154
|
+
"very-happy-tools-x64-linux": "0.2.154",
|
|
155
|
+
"very-happy-tools-arm64-win32": "0.2.154",
|
|
156
|
+
"very-happy-tools-x64-win32": "0.2.154"
|
|
157
157
|
};
|
|
158
158
|
var devDependencies = {
|
|
159
159
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -11,7 +11,7 @@ import { inspect } from 'node:util';
|
|
|
11
11
|
import { isCuid, createId } from '@paralleldrive/cuid2';
|
|
12
12
|
|
|
13
13
|
var name = "very-happy-cli";
|
|
14
|
-
var version = "0.2.
|
|
14
|
+
var version = "0.2.154";
|
|
15
15
|
var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
|
|
16
16
|
var author = "Kirill Dubovitskiy";
|
|
17
17
|
var contributors = [
|
|
@@ -128,12 +128,12 @@ var dependencies = {
|
|
|
128
128
|
zod: "^4.0.0"
|
|
129
129
|
};
|
|
130
130
|
var optionalDependencies = {
|
|
131
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
132
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
133
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
134
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
135
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
136
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
131
|
+
"very-happy-tools-arm64-darwin": "0.2.154",
|
|
132
|
+
"very-happy-tools-x64-darwin": "0.2.154",
|
|
133
|
+
"very-happy-tools-arm64-linux": "0.2.154",
|
|
134
|
+
"very-happy-tools-x64-linux": "0.2.154",
|
|
135
|
+
"very-happy-tools-arm64-win32": "0.2.154",
|
|
136
|
+
"very-happy-tools-x64-win32": "0.2.154"
|
|
137
137
|
};
|
|
138
138
|
var devDependencies = {
|
|
139
139
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var agentGuidance = require('./agentGuidance-
|
|
3
|
+
var agentGuidance = require('./agentGuidance-DUBXppv-.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-Bd_TGr0F.cjs');
|
|
8
|
+
var persistence = require('./limits-CmzISka2.cjs');
|
|
9
|
+
var index$1 = require('./index-eCjkm8Y2.cjs');
|
|
10
10
|
require('node:fs/promises');
|
|
11
11
|
require('node:os');
|
|
12
12
|
require('node:crypto');
|
|
@@ -16,6 +16,7 @@ require('socket.io-client');
|
|
|
16
16
|
require('node:child_process');
|
|
17
17
|
require('node:fs');
|
|
18
18
|
require('node:path');
|
|
19
|
+
var terminalTitleSuggest = require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
19
20
|
var terminalToolContext = require('./terminalToolContext-DoV9Gs7K.cjs');
|
|
20
21
|
require('node:events');
|
|
21
22
|
require('child_process');
|
|
@@ -24,8 +25,6 @@ require('fs/promises');
|
|
|
24
25
|
require('crypto');
|
|
25
26
|
require('path');
|
|
26
27
|
require('cross-spawn');
|
|
27
|
-
require('./projectPath-ChLhdOyt.cjs');
|
|
28
|
-
require('url');
|
|
29
28
|
require('os');
|
|
30
29
|
require('@paralleldrive/cuid2');
|
|
31
30
|
require('node-pty');
|
|
@@ -50,6 +49,7 @@ require('http');
|
|
|
50
49
|
require('inquirer');
|
|
51
50
|
require('node:url');
|
|
52
51
|
require('node:readline/promises');
|
|
52
|
+
require('url');
|
|
53
53
|
|
|
54
54
|
const TERMINAL_TITLE_TOOL_NAME = "change_title";
|
|
55
55
|
function resolveMcpToolSurface(env) {
|
|
@@ -58,6 +58,12 @@ function resolveMcpToolSurface(env) {
|
|
|
58
58
|
return "assistant";
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
function registerTerminalTitleSuggest(server) {
|
|
62
|
+
server.server.setRequestHandler(terminalTitleSuggest.TerminalTitleSuggestRequestSchema, async (request) => {
|
|
63
|
+
persistence.logger.debug("[MCP] terminal title suggestion requested");
|
|
64
|
+
return { title: await index$1.suggestTitleForPrompt(request.params.prompt) };
|
|
65
|
+
});
|
|
66
|
+
}
|
|
61
67
|
function registerMcpTools(server, surface, terminalId = null) {
|
|
62
68
|
server.registerTool(persistence.CLIPBOARD_TOOL_NAME, {
|
|
63
69
|
description: persistence.CLIPBOARD_TOOL_DESCRIPTION,
|
|
@@ -140,6 +146,7 @@ async function handleMcpCommand(terminalToolsOnly = false) {
|
|
|
140
146
|
const terminalId = terminalToolContext.resolveMcpTerminalId(process.env);
|
|
141
147
|
if (terminalToolsOnly && !terminalId) throw new Error("Very Happy terminal context is required");
|
|
142
148
|
registerMcpTools(server, surface, terminalId);
|
|
149
|
+
if (terminalId) registerTerminalTitleSuggest(server);
|
|
143
150
|
if (!terminalToolsOnly && process.env.HAPPY_MANAGED !== "1" && !process.env.HAPPY_MCP_URL) agentGuidance.registerTeamsTools(server, process.env.HAPPY_SESSION_ID);
|
|
144
151
|
const transport = new stdio_js.StdioServerTransport();
|
|
145
152
|
await server.connect(transport);
|
|
@@ -152,3 +159,4 @@ async function handleMcpCommand(terminalToolsOnly = false) {
|
|
|
152
159
|
|
|
153
160
|
exports.handleMcpCommand = handleMcpCommand;
|
|
154
161
|
exports.registerMcpTools = registerMcpTools;
|
|
162
|
+
exports.registerTerminalTitleSuggest = registerTerminalTitleSuggest;
|
|
@@ -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-TLYQxsm2.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 { l as pushClipboardViaDaemon, m as pushFilePreviewViaDaemon, n as setTerminalTitleViaDaemon } from './types-
|
|
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-
|
|
7
|
-
import {
|
|
5
|
+
import { l as pushClipboardViaDaemon, m as pushFilePreviewViaDaemon, n as setTerminalTitleViaDaemon } from './types-D5RWyBE5.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-Dt7_unH4.mjs';
|
|
7
|
+
import { x as checkPreviewPath, y as registerAssistantSessionTools, z as suggestTitleForPrompt } from './index-BELV05ko.mjs';
|
|
8
8
|
import 'node:fs/promises';
|
|
9
9
|
import 'node:os';
|
|
10
10
|
import 'node:crypto';
|
|
@@ -14,6 +14,7 @@ import 'socket.io-client';
|
|
|
14
14
|
import 'node:child_process';
|
|
15
15
|
import 'node:fs';
|
|
16
16
|
import 'node:path';
|
|
17
|
+
import { b as TerminalTitleSuggestRequestSchema } from './terminalTitleSuggest-DKgX3osW.mjs';
|
|
17
18
|
import { r as resolveMcpTerminalId } from './terminalToolContext-CFeGeaNm.mjs';
|
|
18
19
|
import 'node:events';
|
|
19
20
|
import 'child_process';
|
|
@@ -22,8 +23,6 @@ import 'fs/promises';
|
|
|
22
23
|
import 'crypto';
|
|
23
24
|
import 'path';
|
|
24
25
|
import 'cross-spawn';
|
|
25
|
-
import './projectPath-CSpqWdxp.mjs';
|
|
26
|
-
import 'url';
|
|
27
26
|
import 'os';
|
|
28
27
|
import '@paralleldrive/cuid2';
|
|
29
28
|
import 'node-pty';
|
|
@@ -48,6 +47,7 @@ import 'http';
|
|
|
48
47
|
import 'inquirer';
|
|
49
48
|
import 'node:url';
|
|
50
49
|
import 'node:readline/promises';
|
|
50
|
+
import 'url';
|
|
51
51
|
|
|
52
52
|
const TERMINAL_TITLE_TOOL_NAME = "change_title";
|
|
53
53
|
function resolveMcpToolSurface(env) {
|
|
@@ -56,6 +56,12 @@ function resolveMcpToolSurface(env) {
|
|
|
56
56
|
return "assistant";
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
function registerTerminalTitleSuggest(server) {
|
|
60
|
+
server.server.setRequestHandler(TerminalTitleSuggestRequestSchema, async (request) => {
|
|
61
|
+
logger.debug("[MCP] terminal title suggestion requested");
|
|
62
|
+
return { title: await suggestTitleForPrompt(request.params.prompt) };
|
|
63
|
+
});
|
|
64
|
+
}
|
|
59
65
|
function registerMcpTools(server, surface, terminalId = null) {
|
|
60
66
|
server.registerTool(CLIPBOARD_TOOL_NAME, {
|
|
61
67
|
description: CLIPBOARD_TOOL_DESCRIPTION,
|
|
@@ -138,6 +144,7 @@ async function handleMcpCommand(terminalToolsOnly = false) {
|
|
|
138
144
|
const terminalId = resolveMcpTerminalId(process.env);
|
|
139
145
|
if (terminalToolsOnly && !terminalId) throw new Error("Very Happy terminal context is required");
|
|
140
146
|
registerMcpTools(server, surface, terminalId);
|
|
147
|
+
if (terminalId) registerTerminalTitleSuggest(server);
|
|
141
148
|
if (!terminalToolsOnly && process.env.HAPPY_MANAGED !== "1" && !process.env.HAPPY_MCP_URL) registerTeamsTools(server, process.env.HAPPY_SESSION_ID);
|
|
142
149
|
const transport = new StdioServerTransport();
|
|
143
150
|
await server.connect(transport);
|
|
@@ -148,4 +155,4 @@ async function handleMcpCommand(terminalToolsOnly = false) {
|
|
|
148
155
|
});
|
|
149
156
|
}
|
|
150
157
|
|
|
151
|
-
export { handleMcpCommand, registerMcpTools };
|
|
158
|
+
export { handleMcpCommand, registerMcpTools, registerTerminalTitleSuggest };
|
package/dist/piExtension.d.mts
CHANGED
|
@@ -2,7 +2,7 @@ type PiContext = {
|
|
|
2
2
|
cwd: string;
|
|
3
3
|
};
|
|
4
4
|
type PiApi = {
|
|
5
|
-
on(event: 'session_start' | 'session_shutdown', handler: (event: unknown, ctx: PiContext) => Promise<void>): void;
|
|
5
|
+
on(event: 'session_start' | 'session_shutdown' | 'before_agent_start', handler: (event: unknown, ctx: PiContext) => Promise<void>): void;
|
|
6
6
|
registerTool(tool: {
|
|
7
7
|
name: string;
|
|
8
8
|
label: string;
|
|
@@ -10,6 +10,9 @@ type PiApi = {
|
|
|
10
10
|
parameters: unknown;
|
|
11
11
|
execute(id: string, args: Record<string, unknown>, signal?: AbortSignal): Promise<unknown>;
|
|
12
12
|
}): void;
|
|
13
|
+
/** Pi ≥0.8x session naming (`/name`); optional so an older Pi still gets the tools. */
|
|
14
|
+
getSessionName?(): string | undefined;
|
|
15
|
+
setSessionName?(name: string): void;
|
|
13
16
|
};
|
|
14
17
|
/** Auto-discovered native Pi extension. Managed launchers own their own bridge. */
|
|
15
18
|
declare function piTerminalExtension(pi: PiApi): void;
|
package/dist/piExtension.mjs
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
2
2
|
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
-
import { p as projectPath } from './
|
|
4
|
+
import { T as TERMINAL_TITLE_SUGGEST_METHOD, a as TerminalTitleSuggestResultSchema, p as projectPath } from './terminalTitleSuggest-DKgX3osW.mjs';
|
|
5
5
|
import { r as resolveMcpTerminalId } from './terminalToolContext-CFeGeaNm.mjs';
|
|
6
6
|
import 'path';
|
|
7
7
|
import 'url';
|
|
8
|
+
import 'zod';
|
|
8
9
|
|
|
10
|
+
const TITLE_SUGGEST_TIMEOUT_MS = 45e3;
|
|
9
11
|
function piTerminalExtension(pi) {
|
|
10
12
|
if (process.env.HAPPY_MCP_URL || process.env.HAPPY_TERMINAL_MCP_URL || !resolveMcpTerminalId(process.env)) return;
|
|
11
13
|
let client;
|
|
@@ -49,8 +51,12 @@ function piTerminalExtension(pi) {
|
|
|
49
51
|
});
|
|
50
52
|
return connecting;
|
|
51
53
|
}
|
|
54
|
+
let titleArmed = false;
|
|
55
|
+
let generation = 0;
|
|
52
56
|
pi.on("session_start", async (_event, ctx) => {
|
|
53
57
|
cwd = ctx.cwd;
|
|
58
|
+
generation += 1;
|
|
59
|
+
titleArmed = !!pi.setSessionName && !pi.getSessionName?.();
|
|
54
60
|
const current = await connect();
|
|
55
61
|
const available = await current.listTools({}, { timeout: 1e4 });
|
|
56
62
|
if (stopped) return;
|
|
@@ -72,6 +78,23 @@ function piTerminalExtension(pi) {
|
|
|
72
78
|
});
|
|
73
79
|
}
|
|
74
80
|
});
|
|
81
|
+
pi.on("before_agent_start", async (event) => {
|
|
82
|
+
if (!titleArmed) return;
|
|
83
|
+
const prompt = event?.prompt;
|
|
84
|
+
if (typeof prompt !== "string" || !prompt.trim()) return;
|
|
85
|
+
titleArmed = false;
|
|
86
|
+
const expected = generation;
|
|
87
|
+
void (async () => {
|
|
88
|
+
const active = await connect();
|
|
89
|
+
const result = await active.request(
|
|
90
|
+
{ method: TERMINAL_TITLE_SUGGEST_METHOD, params: { prompt } },
|
|
91
|
+
TerminalTitleSuggestResultSchema,
|
|
92
|
+
{ timeout: TITLE_SUGGEST_TIMEOUT_MS }
|
|
93
|
+
);
|
|
94
|
+
if (result.title && expected === generation && !stopped && !pi.getSessionName?.()) pi.setSessionName(result.title);
|
|
95
|
+
})().catch(() => {
|
|
96
|
+
});
|
|
97
|
+
});
|
|
75
98
|
pi.on("session_shutdown", async () => {
|
|
76
99
|
stopped = true;
|
|
77
100
|
await connecting?.catch(() => {
|
|
@@ -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-CmzISka2.cjs');
|
|
7
|
+
var index = require('./index-eCjkm8Y2.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-Dt7_unH4.mjs';
|
|
5
|
+
import { P as PI_TEAMS_EXTENSION } from './index-BELV05ko.mjs';
|
|
6
6
|
|
|
7
7
|
async function publish(path, content, mode) {
|
|
8
8
|
const temporary = `${path}.${randomUUID()}.new`;
|
|
@@ -3,25 +3,25 @@ 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-C4E4pgye.mjs';
|
|
7
|
+
import { registerMcpTools, registerTerminalTitleSuggest } from './mcp-9Ui4nQZL.mjs';
|
|
8
|
+
import './agentGuidance-TLYQxsm2.mjs';
|
|
9
9
|
import 'node:fs/promises';
|
|
10
10
|
import 'node:os';
|
|
11
11
|
import 'zod';
|
|
12
|
-
import './limits-
|
|
12
|
+
import './limits-Dt7_unH4.mjs';
|
|
13
13
|
import 'axios';
|
|
14
14
|
import 'tweetnacl';
|
|
15
15
|
import 'socket.io-client';
|
|
16
|
-
import './types-
|
|
16
|
+
import './types-D5RWyBE5.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-BELV05ko.mjs';
|
|
21
21
|
import 'chalk';
|
|
22
22
|
import 'cross-spawn';
|
|
23
23
|
import 'node:readline';
|
|
24
|
-
import './
|
|
24
|
+
import './terminalTitleSuggest-DKgX3osW.mjs';
|
|
25
25
|
import 'path';
|
|
26
26
|
import 'url';
|
|
27
27
|
import 'fs/promises';
|
|
@@ -60,6 +60,7 @@ async function startPiTerminalTools(terminalId) {
|
|
|
60
60
|
}
|
|
61
61
|
const mcp = new McpServer({ name: "Very Happy Terminal Tools", version: "1.0.0" });
|
|
62
62
|
registerMcpTools(mcp, "clipboard", terminalId);
|
|
63
|
+
registerTerminalTitleSuggest(mcp);
|
|
63
64
|
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: void 0 });
|
|
64
65
|
res.on("close", () => {
|
|
65
66
|
void transport.close();
|
|
@@ -5,25 +5,25 @@ 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-BesGGPME.cjs');
|
|
9
|
+
var mcp = require('./mcp-7iDHlyCI.cjs');
|
|
10
|
+
require('./agentGuidance-DUBXppv-.cjs');
|
|
11
11
|
require('node:fs/promises');
|
|
12
12
|
require('node:os');
|
|
13
13
|
require('zod');
|
|
14
|
-
require('./limits-
|
|
14
|
+
require('./limits-CmzISka2.cjs');
|
|
15
15
|
require('axios');
|
|
16
16
|
require('tweetnacl');
|
|
17
17
|
require('socket.io-client');
|
|
18
|
-
require('./types-
|
|
18
|
+
require('./types-Bd_TGr0F.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-eCjkm8Y2.cjs');
|
|
23
23
|
require('chalk');
|
|
24
24
|
require('cross-spawn');
|
|
25
25
|
require('node:readline');
|
|
26
|
-
require('./
|
|
26
|
+
require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
27
27
|
require('path');
|
|
28
28
|
require('url');
|
|
29
29
|
require('fs/promises');
|
|
@@ -62,6 +62,7 @@ async function startPiTerminalTools(terminalId) {
|
|
|
62
62
|
}
|
|
63
63
|
const mcp$1 = new mcp_js.McpServer({ name: "Very Happy Terminal Tools", version: "1.0.0" });
|
|
64
64
|
mcp.registerMcpTools(mcp$1, "clipboard", terminalId);
|
|
65
|
+
mcp.registerTerminalTitleSuggest(mcp$1);
|
|
65
66
|
const transport = new streamableHttp_js.StreamableHTTPServerTransport({ sessionIdGenerator: void 0 });
|
|
66
67
|
res.on("close", () => {
|
|
67
68
|
void transport.close();
|