very-happy-cli 0.2.128 → 0.2.130

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.
Files changed (45) hide show
  1. package/dist/{AcpBackend-BYU6J2n0.cjs → AcpBackend-5slez7vM.cjs} +16 -4
  2. package/dist/{AcpBackend-D7987ody.mjs → AcpBackend-Co3atHW2.mjs} +16 -4
  3. package/dist/{AcpSessionManager-BwrjVZyn.mjs → AcpSessionManager-B0sD6Zi7.mjs} +1 -1
  4. package/dist/{AcpSessionManager-artXJgqb.cjs → AcpSessionManager-CxvVg8ec.cjs} +1 -1
  5. package/dist/{agentGuidance-BPGPaNlo.mjs → agentGuidance-7pJxf_3b.mjs} +1 -1
  6. package/dist/{agentGuidance-B1xYgHx6.cjs → agentGuidance-TjPzDO7d.cjs} +1 -1
  7. package/dist/codex/happyMcpStdioBridge.cjs +2 -2
  8. package/dist/codex/happyMcpStdioBridge.mjs +2 -2
  9. package/dist/{config-Dmkzs3o4.cjs → config-B4Md4FvK.cjs} +4 -4
  10. package/dist/{config-DSBE0Az0.mjs → config-BWu8j7bO.mjs} +4 -4
  11. package/dist/{index-CfM6ewd8.mjs → index-BUhcXX8R.mjs} +187 -83
  12. package/dist/{index-35FahgEU.mjs → index-C13U8MkT.mjs} +4 -4
  13. package/dist/{index-D_YVlpsW.cjs → index-C7TA3haC.cjs} +194 -86
  14. package/dist/{index-m0Dnccc_.mjs → index-CdOVizh_.mjs} +115 -32
  15. package/dist/{index-vyTJsT_R.cjs → index-DksoP9b2.cjs} +114 -31
  16. package/dist/{index-CJmXLSQc.cjs → index-Ds0aHXiU.cjs} +4 -4
  17. package/dist/index.cjs +4 -4
  18. package/dist/index.mjs +4 -4
  19. package/dist/{installTerminalHooks-C1zwiJJ2.cjs → installTerminalHooks-cNXov61F.cjs} +4 -4
  20. package/dist/{installTerminalHooks-ClrFe2fA.mjs → installTerminalHooks-kUC6I6Rn.mjs} +4 -4
  21. package/dist/lib.cjs +2 -2
  22. package/dist/lib.d.cts +7 -0
  23. package/dist/lib.d.mts +7 -0
  24. package/dist/lib.mjs +2 -2
  25. package/dist/{limits-CrwtFbi8.cjs → limits-BhK6ovLz.cjs} +7 -7
  26. package/dist/{limits-BNTLh2lw.mjs → limits-CIcZA0Bn.mjs} +7 -7
  27. package/dist/{mcp-Bc_mmJt8.cjs → mcp-CNX1qErQ.cjs} +4 -4
  28. package/dist/{mcp-BsohER5A.mjs → mcp-D5uyhbfB.mjs} +4 -4
  29. package/dist/{runGemini-B9S85Vms.mjs → runGemini-BQd3qlVY.mjs} +6 -6
  30. package/dist/{runGemini-B2GesRWm.cjs → runGemini-DvV6X_GE.cjs} +6 -6
  31. package/dist/{runOpenClaw-Byhq-B1y.mjs → runOpenClaw-BgtE2jKF.mjs} +5 -5
  32. package/dist/{runOpenClaw-DCK-R8qe.cjs → runOpenClaw-jxvPz3bo.cjs} +5 -5
  33. package/dist/{send-DQS1zNWp.mjs → send-BdhUFGTm.mjs} +4 -4
  34. package/dist/{send-CPdT1nOg.cjs → send-Di8Q32Ds.cjs} +4 -4
  35. package/dist/{sessions-DIOdWnPe.mjs → sessions-Bo2THj4y.mjs} +4 -4
  36. package/dist/{sessions-DC0IKaD9.cjs → sessions-eaAew6IP.cjs} +4 -4
  37. package/dist/{spawn-DrnCW2QK.cjs → spawn-6GfCYB5i.cjs} +4 -4
  38. package/dist/{spawn-DV4pIAHZ.mjs → spawn-CJxg1JUO.mjs} +4 -4
  39. package/dist/{teams-DlTHOiCk.mjs → teams-CHGj90rR.mjs} +4 -4
  40. package/dist/{teams-CwXEJs9I.cjs → teams-WdwFtptw.cjs} +4 -4
  41. package/dist/{todo-DrME15xq.cjs → todo-C-wktj2K.cjs} +3 -3
  42. package/dist/{todo-BwXURAbQ.mjs → todo-C8hDSNBP.mjs} +3 -3
  43. package/dist/{types-CFs8FmiY.mjs → types-B-ySoSY9.mjs} +21 -5
  44. package/dist/{types-DfatCoQL.cjs → types-QB33ckXt.cjs} +21 -5
  45. package/package.json +7 -7
@@ -3,8 +3,15 @@
3
3
  var node_child_process = require('node:child_process');
4
4
  var sdk = require('@agentclientprotocol/sdk');
5
5
  var node_crypto = require('node:crypto');
6
- var persistence = require('./limits-CrwtFbi8.cjs');
7
- var api = require('./types-DfatCoQL.cjs');
6
+ var persistence = require('./limits-BhK6ovLz.cjs');
7
+ var api = require('./types-QB33ckXt.cjs');
8
+
9
+ function acpImageBlocks(attachments, supportsImages) {
10
+ return attachments.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => {
11
+ if (!supportsImages) throw new Error("This ACP agent does not support image prompts");
12
+ return { type: "image", data: Buffer.from(file.data).toString("base64"), mimeType: file.mimeType };
13
+ });
14
+ }
8
15
 
9
16
  const DEFAULT_TIMEOUTS = {
10
17
  /** Default initialization timeout: 60 seconds */
@@ -920,6 +927,7 @@ class AcpBackend {
920
927
  clearTimeout(timeoutHandle);
921
928
  timeoutHandle = null;
922
929
  }
930
+ this.supportsImagePrompt = res.agentCapabilities?.promptCapabilities?.image === true;
923
931
  return res;
924
932
  }),
925
933
  new Promise((_, reject) => {
@@ -1168,7 +1176,11 @@ class AcpBackend {
1168
1176
  // Promise resolver for waitForIdle - set when waiting for response to complete
1169
1177
  idleResolver = null;
1170
1178
  waitingForResponse = false;
1171
- async sendPrompt(sessionId, prompt) {
1179
+ supportsImagePrompt = false;
1180
+ get supportsImageAttachments() {
1181
+ return this.supportsImagePrompt;
1182
+ }
1183
+ async sendPrompt(sessionId, prompt, attachments = []) {
1172
1184
  const promptHasChangeTitle = this.options.hasChangeTitleInstruction?.(prompt) ?? false;
1173
1185
  this.toolCallCountSincePrompt = 0;
1174
1186
  this.recentPromptHadChangeTitle = promptHasChangeTitle;
@@ -1194,7 +1206,7 @@ class AcpBackend {
1194
1206
  };
1195
1207
  const promptRequest = {
1196
1208
  sessionId: this.acpSessionId,
1197
- prompt: [contentBlock]
1209
+ prompt: [contentBlock, ...acpImageBlocks(attachments, this.supportsImagePrompt)]
1198
1210
  };
1199
1211
  persistence.logger.debug("[AcpBackend] Prompt request prepared:", {
1200
1212
  sessionId: this.acpSessionId,
@@ -1,8 +1,15 @@
1
1
  import { spawn } from 'node:child_process';
2
2
  import { ndJsonStream, ClientSideConnection } from '@agentclientprotocol/sdk';
3
3
  import { randomUUID } from 'node:crypto';
4
- import { l as logger, p as packageJson } from './limits-BNTLh2lw.mjs';
5
- import { d as contentLogMetadata, e as errorLogMetadata, f as delay } from './types-CFs8FmiY.mjs';
4
+ import { l as logger, p as packageJson } from './limits-CIcZA0Bn.mjs';
5
+ import { d as contentLogMetadata, e as errorLogMetadata, h as delay } from './types-B-ySoSY9.mjs';
6
+
7
+ function acpImageBlocks(attachments, supportsImages) {
8
+ return attachments.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => {
9
+ if (!supportsImages) throw new Error("This ACP agent does not support image prompts");
10
+ return { type: "image", data: Buffer.from(file.data).toString("base64"), mimeType: file.mimeType };
11
+ });
12
+ }
6
13
 
7
14
  const DEFAULT_TIMEOUTS = {
8
15
  /** Default initialization timeout: 60 seconds */
@@ -918,6 +925,7 @@ class AcpBackend {
918
925
  clearTimeout(timeoutHandle);
919
926
  timeoutHandle = null;
920
927
  }
928
+ this.supportsImagePrompt = res.agentCapabilities?.promptCapabilities?.image === true;
921
929
  return res;
922
930
  }),
923
931
  new Promise((_, reject) => {
@@ -1166,7 +1174,11 @@ class AcpBackend {
1166
1174
  // Promise resolver for waitForIdle - set when waiting for response to complete
1167
1175
  idleResolver = null;
1168
1176
  waitingForResponse = false;
1169
- async sendPrompt(sessionId, prompt) {
1177
+ supportsImagePrompt = false;
1178
+ get supportsImageAttachments() {
1179
+ return this.supportsImagePrompt;
1180
+ }
1181
+ async sendPrompt(sessionId, prompt, attachments = []) {
1170
1182
  const promptHasChangeTitle = this.options.hasChangeTitleInstruction?.(prompt) ?? false;
1171
1183
  this.toolCallCountSincePrompt = 0;
1172
1184
  this.recentPromptHadChangeTitle = promptHasChangeTitle;
@@ -1192,7 +1204,7 @@ class AcpBackend {
1192
1204
  };
1193
1205
  const promptRequest = {
1194
1206
  sessionId: this.acpSessionId,
1195
- prompt: [contentBlock]
1207
+ prompt: [contentBlock, ...acpImageBlocks(attachments, this.supportsImagePrompt)]
1196
1208
  };
1197
1209
  logger.debug("[AcpBackend] Prompt request prepared:", {
1198
1210
  sessionId: this.acpSessionId,
@@ -1,5 +1,5 @@
1
1
  import { createId } from '@paralleldrive/cuid2';
2
- import { s as streamKeyOf, c as createEnvelope } from './types-CFs8FmiY.mjs';
2
+ import { s as streamKeyOf, c as createEnvelope } from './types-B-ySoSY9.mjs';
3
3
 
4
4
  function turnOptions(turnId, time) {
5
5
  return turnId ? { turn: turnId, time } : { time };
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var cuid2 = require('@paralleldrive/cuid2');
4
- var api = require('./types-DfatCoQL.cjs');
4
+ var api = require('./types-QB33ckXt.cjs');
5
5
 
6
6
  function turnOptions(turnId, time) {
7
7
  return turnId ? { turn: turnId, time } : { time };
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { randomUUID } from 'node:crypto';
3
- import { n as normalizeHttpEndpoint, c as configuration, g as readSettings, r as readPersistedSessions, d as readCredentialsForConfiguredRelay } from './limits-BNTLh2lw.mjs';
3
+ import { n as normalizeHttpEndpoint, c as configuration, g as readSettings, r as readPersistedSessions, d as readCredentialsForConfiguredRelay } from './limits-CIcZA0Bn.mjs';
4
4
  import { open, mkdir, rename, unlink } from 'node:fs/promises';
5
5
  import { constants } from 'node:fs';
6
6
  import { isAbsolute, join, dirname } from 'node:path';
@@ -2,7 +2,7 @@
2
2
 
3
3
  var z = require('zod');
4
4
  var node_crypto = require('node:crypto');
5
- var persistence = require('./limits-CrwtFbi8.cjs');
5
+ var persistence = require('./limits-BhK6ovLz.cjs');
6
6
  var promises = require('node:fs/promises');
7
7
  var node_fs = require('node:fs');
8
8
  var path = require('node:path');
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var agentGuidance = require('../agentGuidance-B1xYgHx6.cjs');
3
+ var agentGuidance = require('../agentGuidance-TjPzDO7d.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 index_js = require('@modelcontextprotocol/sdk/client/index.js');
7
7
  var streamableHttp_js = require('@modelcontextprotocol/sdk/client/streamableHttp.js');
8
8
  var z = require('zod');
9
- var persistence = require('../limits-CrwtFbi8.cjs');
9
+ var persistence = require('../limits-BhK6ovLz.cjs');
10
10
  require('node:crypto');
11
11
  require('node:fs/promises');
12
12
  require('node:fs');
@@ -1,10 +1,10 @@
1
- import { P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION, r as registerTeamsTools } from '../agentGuidance-BPGPaNlo.mjs';
1
+ import { P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION, r as registerTeamsTools } from '../agentGuidance-7pJxf_3b.mjs';
2
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
4
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
5
5
  import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
6
6
  import { z } from 'zod';
7
- import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION } from '../limits-BNTLh2lw.mjs';
7
+ import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION } from '../limits-CIcZA0Bn.mjs';
8
8
  import 'node:crypto';
9
9
  import 'node:fs/promises';
10
10
  import 'node:fs';
@@ -4,8 +4,8 @@ var fs = require('fs');
4
4
  var path = require('path');
5
5
  var os = require('os');
6
6
  var child_process = require('child_process');
7
- var persistence = require('./limits-CrwtFbi8.cjs');
8
- var index = require('./index-D_YVlpsW.cjs');
7
+ var persistence = require('./limits-BhK6ovLz.cjs');
8
+ var index = require('./index-C7TA3haC.cjs');
9
9
  require('node:fs/promises');
10
10
  require('node:fs');
11
11
  require('node:os');
@@ -15,7 +15,7 @@ require('node:crypto');
15
15
  require('tweetnacl');
16
16
  require('chalk');
17
17
  require('node:util');
18
- require('./types-DfatCoQL.cjs');
18
+ require('./types-QB33ckXt.cjs');
19
19
  require('axios');
20
20
  require('node:events');
21
21
  require('socket.io-client');
@@ -30,7 +30,7 @@ require('node-pty');
30
30
  require('node:readline');
31
31
  require('@anthropic-ai/sandbox-runtime');
32
32
  require('expo-server-sdk');
33
- require('./agentGuidance-B1xYgHx6.cjs');
33
+ require('./agentGuidance-TjPzDO7d.cjs');
34
34
  require('ink');
35
35
  require('react');
36
36
  require('@anthropic-ai/claude-agent-sdk');
@@ -2,8 +2,8 @@ import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
2
2
  import { join } from 'path';
3
3
  import { homedir } from 'os';
4
4
  import { execSync } from 'child_process';
5
- import { l as logger } from './limits-BNTLh2lw.mjs';
6
- import { j as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-CfM6ewd8.mjs';
5
+ import { l as logger } from './limits-CIcZA0Bn.mjs';
6
+ import { j as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-BUhcXX8R.mjs';
7
7
  import 'node:fs/promises';
8
8
  import 'node:fs';
9
9
  import 'node:os';
@@ -13,7 +13,7 @@ import 'node:crypto';
13
13
  import 'tweetnacl';
14
14
  import 'chalk';
15
15
  import 'node:util';
16
- import './types-CFs8FmiY.mjs';
16
+ import './types-B-ySoSY9.mjs';
17
17
  import 'axios';
18
18
  import 'node:events';
19
19
  import 'socket.io-client';
@@ -28,7 +28,7 @@ import 'node-pty';
28
28
  import 'node:readline';
29
29
  import '@anthropic-ai/sandbox-runtime';
30
30
  import 'expo-server-sdk';
31
- import './agentGuidance-BPGPaNlo.mjs';
31
+ import './agentGuidance-7pJxf_3b.mjs';
32
32
  import 'ink';
33
33
  import 'react';
34
34
  import '@anthropic-ai/claude-agent-sdk';