very-happy-cli 0.2.151 → 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-blE9IEod.cjs → AcpBackend-DSt8nTYm.cjs} +2 -2
- package/dist/{AcpBackend-BjTA5gUB.mjs → AcpBackend-YDGv4E-g.mjs} +2 -2
- package/dist/{AcpSessionManager-D-9mrp40.mjs → AcpSessionManager-Cxf5HQX1.mjs} +1 -1
- package/dist/{AcpSessionManager-bF8PYu_B.cjs → AcpSessionManager-uov6I9C8.cjs} +9 -9
- package/dist/agentGuidance-BM4kMNyr.cjs +553 -0
- package/dist/agentGuidance-C8unGWp7.mjs +529 -0
- package/dist/{agentHome-D6MSfwnp.cjs → agentHome-BJ7bde35.cjs} +4 -4
- package/dist/{agentHome-CeFDNzvq.mjs → agentHome-D68Xh2ae.mjs} +4 -4
- package/dist/auto-C-90ojIH.cjs +472 -0
- package/dist/auto-CcXxfqkC.mjs +466 -0
- package/dist/codex/happyMcpStdioBridge.cjs +4 -2
- package/dist/codex/happyMcpStdioBridge.mjs +4 -2
- package/dist/{config-C-A1XF62.mjs → config-CHJ189UJ.mjs} +6 -6
- package/dist/{config-Cadw1sAk.cjs → config-D23kF0_u.cjs} +6 -6
- package/dist/{index-DYQgcgL2.mjs → index-BXA9fxbK.mjs} +6 -6
- package/dist/{index-CIyjJy8D.mjs → index-BacwoXzs.mjs} +748 -55
- package/dist/{index-DEp6CmmS.mjs → index-BgYZGODP.mjs} +20 -20
- package/dist/{index-vyRqLjDv.cjs → index-D49WvbDT.cjs} +6 -6
- package/dist/{index-BKGspSWk.cjs → index-DEOVn46R.cjs} +21 -21
- package/dist/{index-CqtfRzug.cjs → index-DHrwHxHf.cjs} +805 -105
- package/dist/index.cjs +5 -5
- package/dist/index.mjs +5 -5
- package/dist/install-BiOXBnnS.cjs +118 -0
- package/dist/install-Ca7_Z3bV.mjs +114 -0
- package/dist/{installPiTools-C-Lxv4Bt.mjs → installPiTools-Cj7yU9Fc.mjs} +2 -1
- package/dist/{installPiTools-BKnXjrVu.cjs → installPiTools-DuZ6jZvX.cjs} +3 -2
- package/dist/{installTerminalHooks-Bf_adbl3.cjs → installTerminalHooks-BF0kL0ae.cjs} +8 -8
- package/dist/{installTerminalHooks-Ch_yTtEA.mjs → installTerminalHooks-Bpl32K75.mjs} +7 -7
- package/dist/lib.cjs +4 -4
- package/dist/lib.mjs +4 -4
- package/dist/limits-BtAuKRl2.mjs +2080 -0
- package/dist/limits-DY_sFA3J.cjs +2175 -0
- package/dist/{mcp-zu8n8TkR.mjs → mcp-DQkmk4VV.mjs} +15 -8
- package/dist/{mcp-CMxEZ6-0.cjs → mcp-JpqI2POW.cjs} +15 -7
- package/dist/piExtension.d.mts +4 -1
- package/dist/piExtension.mjs +24 -1
- package/dist/{piRuntime-Cu6cXZ6N.mjs → piRuntime-DBpe12NN.mjs} +2 -2
- package/dist/{piRuntime-D3ny0mVg.cjs → piRuntime-DRbbeQ72.cjs} +2 -2
- package/dist/{piTerminal-M677UP7y.mjs → piTerminal-BoHvPEZ_.mjs} +8 -7
- package/dist/{piTerminal-kDSd_r9X.cjs → piTerminal-qdJ9KZVL.cjs} +8 -7
- package/dist/{runGemini-DuwdVV1O.cjs → runGemini-CtOEFvhf.cjs} +9 -9
- package/dist/{runGemini-DvJwQVGp.mjs → runGemini-YqH7a-7O.mjs} +8 -8
- package/dist/{runOpenClaw-BG82bF18.mjs → runOpenClaw-DSSyFQBb.mjs} +7 -7
- package/dist/{runOpenClaw-BsvtCE_H.cjs → runOpenClaw-DoqZXBvL.cjs} +7 -7
- package/dist/{send-aUkjhey7.cjs → send-9075kHZP.cjs} +6 -6
- package/dist/{send-o6WM-1G8.mjs → send-Cs-RwqNf.mjs} +6 -6
- package/dist/{sessions-DlU3foY_.mjs → sessions-iBnYzVUK.mjs} +6 -6
- package/dist/{sessions-B3vP18kz.cjs → sessions-qULzUzlI.cjs} +6 -6
- package/dist/{spawn-DxHIIqhi.mjs → spawn-C6fRkedx.mjs} +7 -32
- package/dist/{spawn-DH6_p4-f.cjs → spawn-od9V23cc.cjs} +8 -33
- package/dist/{teams-DoAA_CcN.mjs → teams-CkrWQ4uM.mjs} +16 -73
- package/dist/{teams-BW8D1n3o.cjs → teams-CrCzU-AV.cjs} +14 -71
- package/dist/terminalTitleSuggest-DKgX3osW.mjs +38 -0
- package/dist/terminalTitleSuggest-Dji8I0Jy.cjs +45 -0
- package/dist/{todo-Bcc2XxGh.cjs → todo-BCT_ZPuV.cjs} +4 -23
- package/dist/{todo-BhJbG5eq.mjs → todo-aCZmSt27.mjs} +2 -21
- package/dist/{types-BN3eiipi.mjs → types-BvqOVUOW.mjs} +214 -1022
- package/dist/{types-CPubg05Z.cjs → types-CUCU7Vw8.cjs} +43 -863
- package/package.json +7 -7
- package/dist/agentGuidance-BXa9ikrZ.cjs +0 -267
- package/dist/agentGuidance-Dvo3cZMW.mjs +0 -251
- package/dist/limits-DS-bnYYp.mjs +0 -1165
- package/dist/limits-DwcY3kyi.cjs +0 -1236
- package/dist/projectPath-CSpqWdxp.mjs +0 -10
- package/dist/projectPath-ChLhdOyt.cjs +0 -13
|
@@ -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-C8unGWp7.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-BvqOVUOW.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-BtAuKRl2.mjs';
|
|
7
|
+
import { v as checkPreviewPath, x as registerAssistantSessionTools, y as suggestTitleForPrompt } from './index-BacwoXzs.mjs';
|
|
8
8
|
import 'node:fs/promises';
|
|
9
9
|
import 'node:os';
|
|
10
10
|
import 'node:crypto';
|
|
@@ -14,18 +14,17 @@ 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
|
-
import '@paralleldrive/cuid2';
|
|
20
20
|
import 'child_process';
|
|
21
21
|
import 'util';
|
|
22
22
|
import 'fs/promises';
|
|
23
23
|
import 'crypto';
|
|
24
24
|
import 'path';
|
|
25
25
|
import 'cross-spawn';
|
|
26
|
-
import './projectPath-CSpqWdxp.mjs';
|
|
27
|
-
import 'url';
|
|
28
26
|
import 'os';
|
|
27
|
+
import '@paralleldrive/cuid2';
|
|
29
28
|
import 'node-pty';
|
|
30
29
|
import 'fs';
|
|
31
30
|
import 'node:readline';
|
|
@@ -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 };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var agentGuidance = require('./agentGuidance-
|
|
3
|
+
var agentGuidance = require('./agentGuidance-BM4kMNyr.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-CUCU7Vw8.cjs');
|
|
8
|
+
var persistence = require('./limits-DY_sFA3J.cjs');
|
|
9
|
+
var index$1 = require('./index-DHrwHxHf.cjs');
|
|
10
10
|
require('node:fs/promises');
|
|
11
11
|
require('node:os');
|
|
12
12
|
require('node:crypto');
|
|
@@ -16,18 +16,17 @@ 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
|
-
require('@paralleldrive/cuid2');
|
|
22
22
|
require('child_process');
|
|
23
23
|
require('util');
|
|
24
24
|
require('fs/promises');
|
|
25
25
|
require('crypto');
|
|
26
26
|
require('path');
|
|
27
27
|
require('cross-spawn');
|
|
28
|
-
require('./projectPath-ChLhdOyt.cjs');
|
|
29
|
-
require('url');
|
|
30
28
|
require('os');
|
|
29
|
+
require('@paralleldrive/cuid2');
|
|
31
30
|
require('node-pty');
|
|
32
31
|
require('fs');
|
|
33
32
|
require('node:readline');
|
|
@@ -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;
|
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(() => {
|
|
@@ -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-BtAuKRl2.mjs';
|
|
5
|
+
import { P as PI_TEAMS_EXTENSION } from './index-BacwoXzs.mjs';
|
|
6
6
|
|
|
7
7
|
async function publish(path, content, mode) {
|
|
8
8
|
const temporary = `${path}.${randomUUID()}.new`;
|
|
@@ -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-DY_sFA3J.cjs');
|
|
7
|
+
var index = require('./index-DHrwHxHf.cjs');
|
|
8
8
|
|
|
9
9
|
async function publish(path, content, mode) {
|
|
10
10
|
const temporary = `${path}.${node_crypto.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-DBpe12NN.mjs';
|
|
7
|
+
import { registerMcpTools, registerTerminalTitleSuggest } from './mcp-DQkmk4VV.mjs';
|
|
8
|
+
import './agentGuidance-C8unGWp7.mjs';
|
|
9
9
|
import 'node:fs/promises';
|
|
10
10
|
import 'node:os';
|
|
11
11
|
import 'zod';
|
|
12
|
-
import './limits-
|
|
12
|
+
import './limits-BtAuKRl2.mjs';
|
|
13
13
|
import 'axios';
|
|
14
14
|
import 'tweetnacl';
|
|
15
15
|
import 'socket.io-client';
|
|
16
|
-
import './types-
|
|
16
|
+
import './types-BvqOVUOW.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-BacwoXzs.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-DRbbeQ72.cjs');
|
|
9
|
+
var mcp = require('./mcp-JpqI2POW.cjs');
|
|
10
|
+
require('./agentGuidance-BM4kMNyr.cjs');
|
|
11
11
|
require('node:fs/promises');
|
|
12
12
|
require('node:os');
|
|
13
13
|
require('zod');
|
|
14
|
-
require('./limits-
|
|
14
|
+
require('./limits-DY_sFA3J.cjs');
|
|
15
15
|
require('axios');
|
|
16
16
|
require('tweetnacl');
|
|
17
17
|
require('socket.io-client');
|
|
18
|
-
require('./types-
|
|
18
|
+
require('./types-CUCU7Vw8.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-DHrwHxHf.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();
|
|
@@ -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-
|
|
10
|
-
var
|
|
11
|
-
var AcpBackend = require('./AcpBackend-
|
|
12
|
-
var config = require('./config-
|
|
7
|
+
var index$1 = require('./types-CUCU7Vw8.cjs');
|
|
8
|
+
var persistence = require('./limits-DY_sFA3J.cjs');
|
|
9
|
+
var index = require('./index-DHrwHxHf.cjs');
|
|
10
|
+
var terminalTitleSuggest = require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
11
|
+
var AcpBackend = require('./AcpBackend-DSt8nTYm.cjs');
|
|
12
|
+
var config = require('./config-D23kF0_u.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-BM4kMNyr.cjs');
|
|
38
38
|
require('@anthropic-ai/claude-agent-sdk');
|
|
39
39
|
require('ps-list');
|
|
40
40
|
require('tmp');
|
|
@@ -1169,7 +1169,7 @@ async function runGemini(opts) {
|
|
|
1169
1169
|
process.stdin.setEncoding("utf8");
|
|
1170
1170
|
}
|
|
1171
1171
|
const happyServer = await index.startHappyServer(session);
|
|
1172
|
-
const bridgeCommand = path.join(
|
|
1172
|
+
const bridgeCommand = path.join(terminalTitleSuggest.projectPath(), "bin", "very-happy-mcp.mjs");
|
|
1173
1173
|
const mcpServers = {
|
|
1174
1174
|
happy: {
|
|
1175
1175
|
command: bridgeCommand,
|
|
@@ -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 {
|
|
8
|
-
import { p as projectPath } from './
|
|
9
|
-
import { A as AcpBackend } from './AcpBackend-
|
|
10
|
-
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-
|
|
5
|
+
import { o as connectionState, A as ApiClient, t as errorLogMetadata, q as notifyDaemonSessionStarted, u as contentLogMetadata } from './types-BvqOVUOW.mjs';
|
|
6
|
+
import { l as logger, r as readSettings, j as encodeBase64 } from './limits-BtAuKRl2.mjs';
|
|
7
|
+
import { Y as GEMINI_API_KEY_ENV, Z as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, U as BasePermissionHandler, _ as BaseReasoningProcessor, B as initialMachineMetadata, C as createSessionMetadata, E as setupOfflineReconnection, H as MessageQueue2, I as hashObject, $ as MessageBuffer, a0 as CHANGE_TITLE_INSTRUCTION, N as registerKillSessionHandler, J as startHappyServer } from './index-BacwoXzs.mjs';
|
|
8
|
+
import { p as projectPath } from './terminalTitleSuggest-DKgX3osW.mjs';
|
|
9
|
+
import { A as AcpBackend } from './AcpBackend-YDGv4E-g.mjs';
|
|
10
|
+
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-CHJ189UJ.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-C8unGWp7.mjs';
|
|
36
36
|
import '@anthropic-ai/claude-agent-sdk';
|
|
37
37
|
import 'ps-list';
|
|
38
38
|
import 'tmp';
|
|
@@ -3,10 +3,10 @@ import { execFileSync } from 'node:child_process';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import { existsSync, readFileSync } from 'node:fs';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
|
-
import {
|
|
7
|
-
import { A as AcpSessionManager } from './AcpSessionManager-
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
6
|
+
import { t as errorLogMetadata, u as contentLogMetadata, o as connectionState, A as ApiClient, q as notifyDaemonSessionStarted } from './types-BvqOVUOW.mjs';
|
|
7
|
+
import { A as AcpSessionManager } from './AcpSessionManager-Cxf5HQX1.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-BtAuKRl2.mjs';
|
|
9
|
+
import { B as initialMachineMetadata, C as createSessionMetadata, E as setupOfflineReconnection, H as MessageQueue2, N as registerKillSessionHandler } from './index-BacwoXzs.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,16 +14,16 @@ 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';
|
|
21
20
|
import 'crypto';
|
|
22
21
|
import 'path';
|
|
23
22
|
import 'cross-spawn';
|
|
24
|
-
import './
|
|
23
|
+
import './terminalTitleSuggest-DKgX3osW.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-C8unGWp7.mjs';
|
|
37
37
|
import 'ink';
|
|
38
38
|
import 'react';
|
|
39
39
|
import '@anthropic-ai/claude-agent-sdk';
|
|
@@ -5,10 +5,10 @@ var node_child_process = require('node:child_process');
|
|
|
5
5
|
var os = require('node:os');
|
|
6
6
|
var node_fs = require('node:fs');
|
|
7
7
|
var path = require('node:path');
|
|
8
|
-
var index = require('./types-
|
|
9
|
-
var AcpSessionManager = require('./AcpSessionManager-
|
|
10
|
-
var persistence = require('./limits-
|
|
11
|
-
var index$1 = require('./index-
|
|
8
|
+
var index = require('./types-CUCU7Vw8.cjs');
|
|
9
|
+
var AcpSessionManager = require('./AcpSessionManager-uov6I9C8.cjs');
|
|
10
|
+
var persistence = require('./limits-DY_sFA3J.cjs');
|
|
11
|
+
var index$1 = require('./index-DHrwHxHf.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,16 +16,16 @@ 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');
|
|
23
22
|
require('crypto');
|
|
24
23
|
require('path');
|
|
25
24
|
require('cross-spawn');
|
|
26
|
-
require('./
|
|
25
|
+
require('./terminalTitleSuggest-Dji8I0Jy.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-BM4kMNyr.cjs');
|
|
39
39
|
require('ink');
|
|
40
40
|
require('react');
|
|
41
41
|
require('@anthropic-ai/claude-agent-sdk');
|
|
@@ -3,26 +3,26 @@
|
|
|
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');
|
|
11
11
|
require('node:crypto');
|
|
12
12
|
require('tweetnacl');
|
|
13
13
|
require('node:util');
|
|
14
|
-
require('
|
|
14
|
+
require('@paralleldrive/cuid2');
|
|
15
|
+
require('./types-CUCU7Vw8.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');
|
|
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,26 +1,26 @@
|
|
|
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';
|
|
9
9
|
import 'node:crypto';
|
|
10
10
|
import 'tweetnacl';
|
|
11
11
|
import 'node:util';
|
|
12
|
-
import '
|
|
12
|
+
import '@paralleldrive/cuid2';
|
|
13
|
+
import './types-BvqOVUOW.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';
|
|
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,21 +1,22 @@
|
|
|
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';
|
|
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
|
-
import './
|
|
16
|
+
import './terminalTitleSuggest-DKgX3osW.mjs';
|
|
16
17
|
import 'path';
|
|
17
18
|
import 'url';
|
|
18
|
-
import './agentGuidance-
|
|
19
|
+
import './agentGuidance-C8unGWp7.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';
|