@pentoshi/clai 5.1.0 → 5.1.2

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 (150) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/MCP.md +4 -3
  3. package/REA.md +4 -0
  4. package/dist/agent/events.d.ts +4 -1
  5. package/dist/agent/evidence/tool-budgets.js +3 -3
  6. package/dist/agent/evidence/tool-budgets.js.map +1 -1
  7. package/dist/agent/subagents/tools.d.ts +1 -1
  8. package/dist/agent/turn/loop/round-request.js +1 -0
  9. package/dist/agent/turn/loop/round-request.js.map +1 -1
  10. package/dist/agent/turn/loop/stream-request.d.ts +1 -0
  11. package/dist/agent/turn/loop/stream-request.js +1 -0
  12. package/dist/agent/turn/loop/stream-request.js.map +1 -1
  13. package/dist/agent/turn/tool-watchdog.js +4 -0
  14. package/dist/agent/turn/tool-watchdog.js.map +1 -1
  15. package/dist/app/adapters/agent-event-adapter.js +2 -0
  16. package/dist/app/adapters/agent-event-adapter.js.map +1 -1
  17. package/dist/app/adapters/in-memory-clipboard-adapter.js +21 -17
  18. package/dist/app/adapters/in-memory-clipboard-adapter.js.map +1 -1
  19. package/dist/app/controllers/cancel-coordinator.d.ts +1 -0
  20. package/dist/app/controllers/cancel-coordinator.js +7 -2
  21. package/dist/app/controllers/cancel-coordinator.js.map +1 -1
  22. package/dist/app/controllers/session-controller.d.ts +3 -0
  23. package/dist/app/controllers/session-controller.js +39 -22
  24. package/dist/app/controllers/session-controller.js.map +1 -1
  25. package/dist/app/controllers/session-turn-request.d.ts +2 -1
  26. package/dist/app/controllers/session-turn-request.js +11 -3
  27. package/dist/app/controllers/session-turn-request.js.map +1 -1
  28. package/dist/app/controllers/turn-controller.d.ts +3 -0
  29. package/dist/app/controllers/turn-controller.js +23 -7
  30. package/dist/app/controllers/turn-controller.js.map +1 -1
  31. package/dist/attachments/clipboard-image.d.ts +1 -1
  32. package/dist/attachments/clipboard-image.js +70 -54
  33. package/dist/attachments/clipboard-image.js.map +1 -1
  34. package/dist/attachments/image-prepare.d.ts +2 -2
  35. package/dist/attachments/image-prepare.js +102 -303
  36. package/dist/attachments/image-prepare.js.map +1 -1
  37. package/dist/attachments/image-transcoder.d.ts +14 -0
  38. package/dist/attachments/image-transcoder.js +85 -0
  39. package/dist/attachments/image-transcoder.js.map +1 -0
  40. package/dist/attachments/labels.d.ts +6 -0
  41. package/dist/attachments/labels.js +30 -0
  42. package/dist/attachments/labels.js.map +1 -0
  43. package/dist/attachments/read-image.d.ts +1 -0
  44. package/dist/attachments/read-image.js +31 -0
  45. package/dist/attachments/read-image.js.map +1 -0
  46. package/dist/attachments/service.d.ts +2 -1
  47. package/dist/attachments/service.js +8 -5
  48. package/dist/attachments/service.js.map +1 -1
  49. package/dist/classic/app/ClassicApp.js +1 -0
  50. package/dist/classic/app/ClassicApp.js.map +1 -1
  51. package/dist/classic/app/wiring-interactions.js +1 -2
  52. package/dist/classic/app/wiring-interactions.js.map +1 -1
  53. package/dist/classic/bootstrap/start-classic.js +6 -12
  54. package/dist/classic/bootstrap/start-classic.js.map +1 -1
  55. package/dist/classic/chrome/composer-controller.d.ts +3 -4
  56. package/dist/classic/chrome/composer-controller.js +12 -51
  57. package/dist/classic/chrome/composer-controller.js.map +1 -1
  58. package/dist/classic/chrome/composer-paste.d.ts +25 -0
  59. package/dist/classic/chrome/composer-paste.js +77 -0
  60. package/dist/classic/chrome/composer-paste.js.map +1 -0
  61. package/dist/classic/chrome/context-limit-editor.js +1 -1
  62. package/dist/classic/chrome/context-limit-editor.js.map +1 -1
  63. package/dist/classic/chrome/queue-rows.js +2 -1
  64. package/dist/classic/chrome/queue-rows.js.map +1 -1
  65. package/dist/classic/chrome/status-rows.d.ts +2 -0
  66. package/dist/classic/chrome/status-rows.js +11 -21
  67. package/dist/classic/chrome/status-rows.js.map +1 -1
  68. package/dist/classic/input/cancel-ladder.d.ts +1 -0
  69. package/dist/classic/input/cancel-ladder.js +21 -23
  70. package/dist/classic/input/cancel-ladder.js.map +1 -1
  71. package/dist/index.js +1 -1
  72. package/dist/index.js.map +1 -1
  73. package/dist/llm/generation-metrics.d.ts +3 -0
  74. package/dist/llm/generation-metrics.js.map +1 -1
  75. package/dist/llm/generation-progress.d.ts +21 -0
  76. package/dist/llm/generation-progress.js +93 -0
  77. package/dist/llm/generation-progress.js.map +1 -0
  78. package/dist/llm/operation-usage.d.ts +2 -0
  79. package/dist/llm/operation-usage.js +22 -3
  80. package/dist/llm/operation-usage.js.map +1 -1
  81. package/dist/llm/routing/attempt-stream.js +2 -0
  82. package/dist/llm/routing/attempt-stream.js.map +1 -1
  83. package/dist/mcp/manager.d.ts +3 -0
  84. package/dist/mcp/manager.js +43 -51
  85. package/dist/mcp/manager.js.map +1 -1
  86. package/dist/mcp/transport-http.js +1 -1
  87. package/dist/mcp/transport-http.js.map +1 -1
  88. package/dist/mcp/transport-stdio.js +1 -1
  89. package/dist/mcp/transport-stdio.js.map +1 -1
  90. package/dist/prompts/embedded.js +1 -1
  91. package/dist/prompts/embedded.js.map +1 -1
  92. package/dist/prompts/system.agent.md +1 -1
  93. package/dist/rea/runtime.js +7 -2
  94. package/dist/rea/runtime.js.map +1 -1
  95. package/dist/rea/timeouts.d.ts +1 -0
  96. package/dist/rea/timeouts.js +19 -0
  97. package/dist/rea/timeouts.js.map +1 -0
  98. package/dist/session-runtime/start-runtime.js +6 -1
  99. package/dist/session-runtime/start-runtime.js.map +1 -1
  100. package/dist/store/history.d.ts +1 -1
  101. package/dist/store/history.js +29 -35
  102. package/dist/store/history.js.map +1 -1
  103. package/dist/tools/image.js +4 -18
  104. package/dist/tools/image.js.map +1 -1
  105. package/dist/tui-v2/app/App.js +36 -91
  106. package/dist/tui-v2/app/App.js.map +1 -1
  107. package/dist/tui-v2/bootstrap/start-tui-v2.js +6 -12
  108. package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
  109. package/dist/tui-v2/components/queue/queue-panel.js +2 -1
  110. package/dist/tui-v2/components/queue/queue-panel.js.map +1 -1
  111. package/dist/tui-v2/components/status/context-limit-chip.js +2 -2
  112. package/dist/tui-v2/components/status/context-limit-chip.js.map +1 -1
  113. package/dist/tui-v2/components/status/status-line.d.ts +0 -1
  114. package/dist/tui-v2/components/status/status-line.js +8 -8
  115. package/dist/tui-v2/components/status/status-line.js.map +1 -1
  116. package/dist/tui-v2/composer/composer-editor.js +3 -2
  117. package/dist/tui-v2/composer/composer-editor.js.map +1 -1
  118. package/dist/tui-v2/composer/composer-image-paste.d.ts +1 -20
  119. package/dist/tui-v2/composer/composer-image-paste.js +1 -76
  120. package/dist/tui-v2/composer/composer-image-paste.js.map +1 -1
  121. package/dist/tui-v2/input/escape-cancellation.d.ts +3 -3
  122. package/dist/tui-v2/input/escape-cancellation.js +4 -4
  123. package/dist/tui-v2/input/escape-cancellation.js.map +1 -1
  124. package/dist/types.d.ts +1 -0
  125. package/dist/ui/mentions/expand.d.ts +2 -2
  126. package/dist/ui/mentions/expand.js +5 -57
  127. package/dist/ui/mentions/expand.js.map +1 -1
  128. package/dist/ui/mentions.d.ts +4 -4
  129. package/dist/ui/mentions.js +21 -22
  130. package/dist/ui/mentions.js.map +1 -1
  131. package/dist/ui-core/bootstrap/shutdown-services.js +1 -0
  132. package/dist/ui-core/bootstrap/shutdown-services.js.map +1 -1
  133. package/dist/ui-core/composer/composer-image-paste.d.ts +3 -2
  134. package/dist/ui-core/composer/composer-image-paste.js +49 -46
  135. package/dist/ui-core/composer/composer-image-paste.js.map +1 -1
  136. package/dist/ui-core/composer/paste-placeholder.d.ts +3 -0
  137. package/dist/ui-core/composer/paste-placeholder.js +27 -4
  138. package/dist/ui-core/composer/paste-placeholder.js.map +1 -1
  139. package/dist/ui-core/ports/clipboard-osc52.js +3 -0
  140. package/dist/ui-core/ports/clipboard-osc52.js.map +1 -1
  141. package/dist/ui-core/rendering/context-limit.js +2 -2
  142. package/dist/ui-core/rendering/context-limit.js.map +1 -1
  143. package/dist/ui-core/rendering/footer-metrics.d.ts +6 -0
  144. package/dist/ui-core/rendering/footer-metrics.js +21 -0
  145. package/dist/ui-core/rendering/footer-metrics.js.map +1 -0
  146. package/dist/ui-core/rendering/status-segments.js +1 -1
  147. package/dist/ui-core/rendering/status-segments.js.map +1 -1
  148. package/dist/version.generated.d.ts +2 -2
  149. package/dist/version.generated.js +2 -2
  150. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  import { randomUUID } from "node:crypto";
2
- import { execFileSync, spawnSync } from "node:child_process";
3
- import { existsSync, mkdirSync, readFileSync, rmSync, statSync, writeFileSync, } from "node:fs";
2
+ import { execFile } from "node:child_process";
3
+ import { mkdir, open, rm, stat, writeFile } from "node:fs/promises";
4
+ import { promisify } from "node:util";
4
5
  import { platform } from "node:os";
5
6
  import { join } from "node:path";
6
7
  import { safeCwd } from "../os/cwd.js";
@@ -9,33 +10,35 @@ import { detectModelImageMediaType, formatByteSize, } from "./image-content.js";
9
10
  const CAPTURE_TIMEOUT_MS = 4_000;
10
11
  const MAX_CAPTURE_BYTES = 67_108_864;
11
12
  const MAX_CAPTURE_BUFFER = MAX_CAPTURE_BYTES + 1;
12
- function captureCommand(command, args) {
13
- const result = spawnSync(command, args, {
14
- encoding: null,
15
- maxBuffer: MAX_CAPTURE_BUFFER,
16
- stdio: ["ignore", "pipe", "ignore"],
17
- timeout: CAPTURE_TIMEOUT_MS,
18
- });
19
- if (result.status !== 0 ||
20
- !Buffer.isBuffer(result.stdout) ||
21
- result.stdout.length === 0) {
13
+ const execute = promisify(execFile);
14
+ const exists = (path) => stat(path).then((info) => info.isFile(), () => false);
15
+ async function captureCommand(command, args) {
16
+ try {
17
+ const { stdout } = await execute(command, args, {
18
+ encoding: "buffer",
19
+ maxBuffer: MAX_CAPTURE_BUFFER,
20
+ timeout: CAPTURE_TIMEOUT_MS,
21
+ windowsHide: true,
22
+ });
23
+ return stdout.length > 0 ? stdout : undefined;
24
+ }
25
+ catch {
22
26
  return undefined;
23
27
  }
24
- return result.stdout;
25
28
  }
26
- function captureLinuxPng() {
29
+ async function captureLinuxPng() {
27
30
  const attempts = [
28
31
  ["wl-paste", ["--no-newline", "--type", "image/png"]],
29
32
  ["xclip", ["-selection", "clipboard", "-t", "image/png", "-o"]],
30
33
  ];
31
34
  for (const [command, args] of attempts) {
32
- const bytes = captureCommand(command, args);
35
+ const bytes = await captureCommand(command, args);
33
36
  if (bytes && detectModelImageMediaType(bytes) === "image/png")
34
37
  return bytes;
35
38
  }
36
39
  return undefined;
37
40
  }
38
- function writeMacClipboardFormat(destination, clipboardClass) {
41
+ async function writeMacClipboardFormat(destination, clipboardClass) {
39
42
  const script = [
40
43
  "on run argv",
41
44
  "set destinationPath to item 1 of argv",
@@ -59,38 +62,38 @@ function writeMacClipboardFormat(destination, clipboardClass) {
59
62
  "end run",
60
63
  ].join("\n");
61
64
  try {
62
- const output = execFileSync("osascript", ["-e", script, destination], {
65
+ const { stdout } = await execute("osascript", ["-e", script, destination], {
63
66
  encoding: "utf8",
64
- stdio: ["ignore", "pipe", "ignore"],
65
67
  timeout: CAPTURE_TIMEOUT_MS,
66
- }).trim();
67
- return output !== "NO_IMAGE" && existsSync(destination);
68
+ maxBuffer: 4096,
69
+ });
70
+ return stdout.trim() !== "NO_IMAGE" && await exists(destination);
68
71
  }
69
72
  catch {
70
73
  return false;
71
74
  }
72
75
  }
73
- function captureMacPng(destination) {
74
- if (writeMacClipboardFormat(destination, "PNGf"))
76
+ async function captureMacPng(destination) {
77
+ if (await writeMacClipboardFormat(destination, "PNGf"))
75
78
  return true;
76
79
  const tiffPath = `${destination}.tiff`;
77
- if (!writeMacClipboardFormat(tiffPath, "TIFF"))
78
- return false;
79
80
  try {
80
- execFileSync("sips", ["-s", "format", "png", tiffPath, "--out", destination], {
81
- stdio: "ignore",
81
+ if (!(await writeMacClipboardFormat(tiffPath, "TIFF")))
82
+ return false;
83
+ await execute("sips", ["-s", "format", "png", tiffPath, "--out", destination], {
82
84
  timeout: CAPTURE_TIMEOUT_MS,
85
+ maxBuffer: 4096,
83
86
  });
84
- return existsSync(destination);
87
+ return await exists(destination);
85
88
  }
86
89
  catch {
87
90
  return false;
88
91
  }
89
92
  finally {
90
- rmSync(tiffPath, { force: true });
93
+ await rm(tiffPath, { force: true });
91
94
  }
92
95
  }
93
- function captureWindowsPng(destination) {
96
+ async function captureWindowsPng(destination) {
94
97
  const script = [
95
98
  "Add-Type -AssemblyName System.Windows.Forms",
96
99
  "Add-Type -AssemblyName System.Drawing",
@@ -100,31 +103,44 @@ function captureWindowsPng(destination) {
100
103
  "$image.Dispose()",
101
104
  ].join("; ");
102
105
  for (const command of ["powershell.exe", "pwsh.exe", "pwsh"]) {
103
- const result = spawnSync(command, ["-NoProfile", "-NonInteractive", "-STA", "-Command", script], {
104
- encoding: "utf8",
105
- env: { ...process.env, CLAI_CLIPBOARD_IMAGE_PATH: destination },
106
- stdio: ["ignore", "ignore", "ignore"],
107
- timeout: CAPTURE_TIMEOUT_MS,
108
- });
109
- if (result.status === 0 && existsSync(destination))
110
- return true;
106
+ try {
107
+ await execute(command, ["-NoProfile", "-NonInteractive", "-STA", "-Command", script], {
108
+ env: { ...process.env, CLAI_CLIPBOARD_IMAGE_PATH: destination },
109
+ timeout: CAPTURE_TIMEOUT_MS,
110
+ maxBuffer: 4096,
111
+ windowsHide: true,
112
+ });
113
+ if (await exists(destination))
114
+ return true;
115
+ }
116
+ catch {
117
+ continue;
118
+ }
111
119
  }
112
120
  return false;
113
121
  }
114
- function validateCapturedPng(destination) {
122
+ async function validateCapturedPng(destination) {
115
123
  try {
116
- const stat = statSync(destination);
117
- if (stat.size === 0) {
124
+ const info = await stat(destination);
125
+ if (info.size === 0) {
118
126
  return { ok: false, reason: "The clipboard does not contain an image." };
119
127
  }
120
- if (stat.size > MAX_CAPTURE_BYTES) {
128
+ if (info.size > MAX_CAPTURE_BYTES) {
121
129
  return {
122
130
  ok: false,
123
- reason: `Clipboard image is ${formatByteSize(stat.size)}, above the ${formatByteSize(MAX_CAPTURE_BYTES)} capture ceiling.`,
131
+ reason: `Clipboard image is ${formatByteSize(info.size)}, above the ${formatByteSize(MAX_CAPTURE_BYTES)} capture ceiling.`,
124
132
  };
125
133
  }
126
- const bytes = readFileSync(destination);
127
- if (detectModelImageMediaType(bytes) !== "image/png") {
134
+ const handle = await open(destination, "r");
135
+ const bytes = Buffer.alloc(64);
136
+ let bytesRead;
137
+ try {
138
+ ({ bytesRead } = await handle.read(bytes, 0, bytes.length, 0));
139
+ }
140
+ finally {
141
+ await handle.close();
142
+ }
143
+ if (detectModelImageMediaType(bytes.subarray(0, bytesRead)) !== "image/png") {
128
144
  return {
129
145
  ok: false,
130
146
  reason: "Clipboard image could not be converted to PNG.",
@@ -134,18 +150,18 @@ function validateCapturedPng(destination) {
134
150
  ok: true,
135
151
  path: destination,
136
152
  mediaType: "image/png",
137
- byteLength: stat.size,
153
+ byteLength: info.size,
138
154
  };
139
155
  }
140
156
  catch {
141
157
  return { ok: false, reason: "Clipboard image could not be read." };
142
158
  }
143
159
  }
144
- export function captureClipboardImage(baseDir = safeCwd()) {
160
+ export async function captureClipboardImage(baseDir = safeCwd()) {
145
161
  const attachmentDir = join(scratchDirFor(baseDir), "attachments");
146
162
  const destination = join(attachmentDir, `clipboard-${Date.now()}-${randomUUID().slice(0, 8)}.png`);
147
163
  try {
148
- mkdirSync(attachmentDir, { recursive: true });
164
+ await mkdir(attachmentDir, { recursive: true });
149
165
  }
150
166
  catch {
151
167
  return { ok: false, reason: "Could not create the attachment directory." };
@@ -153,13 +169,13 @@ export function captureClipboardImage(baseDir = safeCwd()) {
153
169
  let captured = false;
154
170
  const os = platform();
155
171
  if (os === "darwin") {
156
- captured = captureMacPng(destination);
172
+ captured = await captureMacPng(destination);
157
173
  }
158
174
  else if (os === "linux") {
159
- const bytes = captureLinuxPng();
175
+ const bytes = await captureLinuxPng();
160
176
  if (bytes) {
161
177
  try {
162
- writeFileSync(destination, bytes, { mode: 0o600 });
178
+ await writeFile(destination, bytes, { mode: 0o600 });
163
179
  captured = true;
164
180
  }
165
181
  catch {
@@ -168,10 +184,10 @@ export function captureClipboardImage(baseDir = safeCwd()) {
168
184
  }
169
185
  }
170
186
  else if (os === "win32") {
171
- captured = captureWindowsPng(destination);
187
+ captured = await captureWindowsPng(destination);
172
188
  }
173
189
  if (!captured) {
174
- rmSync(destination, { force: true });
190
+ await rm(destination, { force: true });
175
191
  return {
176
192
  ok: false,
177
193
  reason: os === "linux"
@@ -181,9 +197,9 @@ export function captureClipboardImage(baseDir = safeCwd()) {
181
197
  : `Image clipboard paste is not supported on ${os}.`,
182
198
  };
183
199
  }
184
- const result = validateCapturedPng(destination);
200
+ const result = await validateCapturedPng(destination);
185
201
  if (!result.ok)
186
- rmSync(destination, { force: true });
202
+ await rm(destination, { force: true });
187
203
  return result;
188
204
  }
189
205
  //# sourceMappingURL=clipboard-image.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard-image.js","sourceRoot":"","sources":["../../src/attachments/clipboard-image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clipboard-image.js","sourceRoot":"","sources":["../../src/attachments/clipboard-image.ts"],"names":[],"mappings":"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"}
@@ -18,8 +18,8 @@ export interface RejectedImage {
18
18
  readonly recoverable: boolean;
19
19
  }
20
20
  export type ImagePreparation = PreparedImage | RejectedImage;
21
- export declare function hasImageTranscoder(): boolean;
21
+ export declare function hasImageTranscoder(): Promise<boolean>;
22
22
  export declare function imageTranscoderHint(): string;
23
23
  export declare function clearImagePreparationCache(): void;
24
- export declare function prepareImageForModel(sourcePath: string, budget: ImageBudget, baseDir?: string): ImagePreparation;
24
+ export declare function prepareImageForModel(sourcePath: string, budget: ImageBudget, baseDir?: string, signal?: AbortSignal): Promise<ImagePreparation>;
25
25
  export declare function describePreparedImage(prepared: PreparedImage): string;