@alisaitteke/photoshop-mcp 0.1.7 → 1.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.
- package/README.md +55 -0
- package/dist/api/extendscript.d.ts +12 -2
- package/dist/api/extendscript.d.ts.map +1 -1
- package/dist/api/extendscript.js +76 -9
- package/dist/api/extendscript.js.map +1 -1
- package/dist/api/photoshop-api.js +20 -3
- package/dist/api/photoshop-api.js.map +1 -1
- package/dist/platform/macos-executor.d.ts.map +1 -1
- package/dist/platform/macos-executor.js +3 -2
- package/dist/platform/macos-executor.js.map +1 -1
- package/dist/ui/agent.d.ts +44 -0
- package/dist/ui/agent.d.ts.map +1 -0
- package/dist/ui/agent.js +198 -0
- package/dist/ui/agent.js.map +1 -0
- package/dist/ui/cli.d.ts +3 -0
- package/dist/ui/cli.d.ts.map +1 -0
- package/dist/ui/cli.js +96 -0
- package/dist/ui/cli.js.map +1 -0
- package/dist/ui/config.d.ts +16 -0
- package/dist/ui/config.d.ts.map +1 -0
- package/dist/ui/config.js +45 -0
- package/dist/ui/config.js.map +1 -0
- package/dist/ui/providers/anthropic.d.ts +3 -0
- package/dist/ui/providers/anthropic.d.ts.map +1 -0
- package/dist/ui/providers/anthropic.js +72 -0
- package/dist/ui/providers/anthropic.js.map +1 -0
- package/dist/ui/providers/google.d.ts +3 -0
- package/dist/ui/providers/google.d.ts.map +1 -0
- package/dist/ui/providers/google.js +71 -0
- package/dist/ui/providers/google.js.map +1 -0
- package/dist/ui/providers/openai.d.ts +3 -0
- package/dist/ui/providers/openai.d.ts.map +1 -0
- package/dist/ui/providers/openai.js +71 -0
- package/dist/ui/providers/openai.js.map +1 -0
- package/dist/ui/providers/openrouter.d.ts +3 -0
- package/dist/ui/providers/openrouter.d.ts.map +1 -0
- package/dist/ui/providers/openrouter.js +82 -0
- package/dist/ui/providers/openrouter.js.map +1 -0
- package/dist/ui/providers/registry.d.ts +6 -0
- package/dist/ui/providers/registry.d.ts.map +1 -0
- package/dist/ui/providers/registry.js +17 -0
- package/dist/ui/providers/registry.js.map +1 -0
- package/dist/ui/providers/types.d.ts +40 -0
- package/dist/ui/providers/types.d.ts.map +1 -0
- package/dist/ui/providers/types.js +2 -0
- package/dist/ui/providers/types.js.map +1 -0
- package/dist/ui/server.d.ts +10 -0
- package/dist/ui/server.d.ts.map +1 -0
- package/dist/ui/server.js +337 -0
- package/dist/ui/server.js.map +1 -0
- package/dist/ui/store/chats.d.ts +53 -0
- package/dist/ui/store/chats.d.ts.map +1 -0
- package/dist/ui/store/chats.js +89 -0
- package/dist/ui/store/chats.js.map +1 -0
- package/dist/ui/store/db.d.ts +6 -0
- package/dist/ui/store/db.d.ts.map +1 -0
- package/dist/ui/store/db.js +59 -0
- package/dist/ui/store/db.js.map +1 -0
- package/dist/ui/store/kv.d.ts +4 -0
- package/dist/ui/store/kv.d.ts.map +1 -0
- package/dist/ui/store/kv.js +24 -0
- package/dist/ui/store/kv.js.map +1 -0
- package/package.json +42 -6
- package/web/dist/assets/index-Kxyfap9w.js +138 -0
- package/web/dist/assets/index-Th6OF4IB.css +1 -0
- package/web/dist/assets/source-sans-3-latin-wght-normal-BqRLTx4X.woff2 +0 -0
- package/web/dist/index.html +15 -0
- package/web/dist/ps-logo-icon.svg +6 -0
- package/.prettierrc +0 -9
- package/server.json +0 -21
package/README.md
CHANGED
|
@@ -8,6 +8,61 @@
|
|
|
8
8
|
|
|
9
9
|
A Model Context Protocol (MCP) server that enables AI assistants like Claude and Cursor to control Adobe Photoshop programmatically. This allows you to create designs, manipulate images, and automate Photoshop workflows through natural language commands while working in your IDE.
|
|
10
10
|
|
|
11
|
+
## 🖥️ Standalone UI (no IDE required)
|
|
12
|
+
|
|
13
|
+
Don't want to wire this into Claude Desktop or Cursor? The same package ships a
|
|
14
|
+
fully local web UI that lets you chat with an AI model and drive Photoshop
|
|
15
|
+
through this MCP server underneath.
|
|
16
|
+
|
|
17
|
+

|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx -p @alisaitteke/photoshop-mcp photoshop-mcp-ui
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
That's it. A local server starts on `127.0.0.1` (random free port) and your
|
|
24
|
+
default browser opens the chat UI automatically.
|
|
25
|
+
|
|
26
|
+
### Supported providers
|
|
27
|
+
|
|
28
|
+
Pick any of the following on first launch — bring your own API key:
|
|
29
|
+
|
|
30
|
+
| Provider | Models | Get a key |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| **Anthropic** | Claude Sonnet / Opus / Haiku | [console.anthropic.com](https://console.anthropic.com/settings/keys) |
|
|
33
|
+
| **OpenAI** | GPT-5, GPT-4.1, o-series | [platform.openai.com](https://platform.openai.com/api-keys) |
|
|
34
|
+
| **Google** | Gemini 2.5 Pro / Flash / Flash-Lite | [aistudio.google.com](https://aistudio.google.com/apikey) |
|
|
35
|
+
| **OpenRouter** | 100+ models from any provider | [openrouter.ai](https://openrouter.ai/keys) |
|
|
36
|
+
|
|
37
|
+
### What happens on first launch
|
|
38
|
+
|
|
39
|
+
1. Pick a provider and paste your API key.
|
|
40
|
+
2. The key is validated against the provider, then stored locally at
|
|
41
|
+
`~/.photoshop-mcp/data.db` (SQLite, `chmod 600`). It never leaves your
|
|
42
|
+
machine.
|
|
43
|
+
3. Type natural-language prompts. The UI streams the model's reply, runs
|
|
44
|
+
Photoshop tool calls in real time, and renders each tool call as an
|
|
45
|
+
inspectable card (input + result).
|
|
46
|
+
4. Switch provider or model anytime from the model selector — chats, costs and
|
|
47
|
+
tool history are persisted across sessions.
|
|
48
|
+
|
|
49
|
+
### CLI flags
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
photoshop-mcp-ui [--port 5174] [--host 127.0.0.1] [--no-open]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Notes
|
|
56
|
+
|
|
57
|
+
- The agent is restricted to Photoshop MCP tools only — built-in shell, file
|
|
58
|
+
and web tools are disabled.
|
|
59
|
+
- Tech stack: Vue 3 + Tailwind v4 + [shadcn-vue](https://www.shadcn-vue.com/)
|
|
60
|
+
on the frontend; [Hono](https://hono.dev/) + the [Vercel AI SDK](https://sdk.vercel.ai/)
|
|
61
|
+
on the backend. The agent loop talks to this same Photoshop MCP server over
|
|
62
|
+
STDIO — same code path as the IDE integration.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
11
66
|
## Example Prompts
|
|
12
67
|
|
|
13
68
|
Below are example prompts you can use with AI assistants (Claude, Cursor, etc.) when this MCP server is configured:
|
|
@@ -55,7 +55,12 @@ export declare const ExtendScriptSnippets: {
|
|
|
55
55
|
*/
|
|
56
56
|
deleteLayer: () => string;
|
|
57
57
|
/**
|
|
58
|
-
* Fill layer with color
|
|
58
|
+
* Fill the active layer with a solid RGB color.
|
|
59
|
+
*
|
|
60
|
+
* ArtLayer has no fillPath() method (that exists on PathItem only).
|
|
61
|
+
* The correct approach is Selection.fill(): preserve any existing
|
|
62
|
+
* selection, otherwise select the whole canvas, fill, then deselect.
|
|
63
|
+
* Background / fully-locked layers cannot be filled, so fail clearly.
|
|
59
64
|
*/
|
|
60
65
|
fillLayer: (red: number, green: number, blue: number) => string;
|
|
61
66
|
/**
|
|
@@ -139,7 +144,12 @@ export declare const ExtendScriptSnippets: {
|
|
|
139
144
|
*/
|
|
140
145
|
adjustBrightnessContrast: (brightness: number, contrast: number) => string;
|
|
141
146
|
/**
|
|
142
|
-
* Adjust hue and
|
|
147
|
+
* Adjust hue, saturation and lightness on the active layer.
|
|
148
|
+
*
|
|
149
|
+
* ArtLayer has no DOM method for Hue/Saturation - adjustColorBalance()
|
|
150
|
+
* is for Color Balance (cyan/red, magenta/green, yellow/blue) and would
|
|
151
|
+
* throw here. The correct path is the "HStr" Action Descriptor which
|
|
152
|
+
* matches the Image > Adjustments > Hue/Saturation menu command.
|
|
143
153
|
*/
|
|
144
154
|
adjustHueSaturation: (hue: number, saturation: number, lightness: number) => string;
|
|
145
155
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendscript.d.ts","sourceRoot":"","sources":["../../src/api/extendscript.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"extendscript.d.ts","sourceRoot":"","sources":["../../src/api/extendscript.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;IAC/B;;OAEG;;IASH;;OAEG;yBACkB,MAAM,UAAU,MAAM;IAW3C;;OAEG;;IAYH;;OAEG;4BACqB,MAAM;IAwB9B;;OAEG;2BACoB,MAAM;IAwC7B;;OAEG;0BACmB,MAAM;IAe5B;;OAEG;sBACe,MAAM;IAYxB;;OAEG;uBACgB,MAAM;IAazB;;OAEG;sBACe,MAAM;IAYxB;;OAEG;;IAUH;;OAEG;sBACe,MAAM;IAkBxB;;OAEG;;IAaH;;;;;;;OAOG;qBACc,MAAM,SAAS,MAAM,QAAQ,MAAM;IAyCpD;;OAEG;yBACkB,MAAM,UAAU,MAAM;IAiB3C;;OAEG;;IA4BH;;OAEG;wBACiB,MAAM;IAc1B;;OAEG;;IA8DH;;OAEG;+BACwB,MAAM;IAoBjC;;OAEG;wBACiB,MAAM,UAAU,MAAM;IAoB1C;;OAEG;2BACoB,MAAM;IAmB7B;;OAEG;+BACwB,MAAM;IAqBjC;;OAEG;mCAC4B,MAAM;IAqBrC;;OAEG;kCAC2B,OAAO;IAerC;;OAEG;6BACsB,OAAO;IAehC;;OAEG;2BACoB,MAAM;IAgB7B;;OAEG;+BACwB,MAAM;IAgBjC;;OAEG;;IAaH;;OAEG;;IAaH;;OAEG;gCACyB,MAAM;IA+BlC;;OAEG;+BACwB,MAAM,UAAU,MAAM,aAAa,MAAM;IAyBpE;;OAEG;4BACqB,MAAM,gBAAgB,MAAM,iBAAiB,OAAO;IA0B5E;;OAEG;6BACsB,MAAM,UAAU,MAAM;IAwB/C;;OAEG;2CACoC,MAAM,YAAY,MAAM;IAoB/D;;;;;;;OAOG;+BACwB,MAAM,cAAc,MAAM,aAAa,MAAM;IAsCxE;;OAEG;;IAmBH;;OAEG;;IAmBH;;OAEG;;IAmBH;;OAEG;;IAmBH;;OAEG;yBACkB,MAAM,OAAO,MAAM,SAAS,MAAM,UAAU,MAAM;IAgBvE;;OAEG;4BACqB,MAAM,aAAa,MAAM;IAmBjD;;OAEG;wBACiB,MAAM,SAAS,MAAM,QAAQ,MAAM;IAqBvD;;OAEG;kCAC2B,MAAM;IAiBpC;;OAEG;iCAC0B,MAAM;IAiBnC;;OAEG;4BACqB,MAAM,OAAO,MAAM,SAAS,MAAM,UAAU,MAAM;IAe1E;;OAEG;;IAaH;;OAEG;;IAaH;;OAEG;;IAaH;;OAEG;;IAqBH;;OAEG;;IAmBH;;OAEG;;IAmBH;;OAEG;6BACsB,MAAM,iBAAiB,MAAM;IAStD;;OAEG;gCACyB,MAAM;IAIlC;;OAEG;;IAwBH;;OAEG;;IAwCH;;OAEG;;IAwCH;;OAEG;;IAoCH;;OAEG;2CACoC,MAAM,YAAY,MAAM;IAiD/D;;OAEG;;IAuBH;;OAEG;;IAuBH;;OAEG;;IAuCH;;OAEG;;CAsCJ,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUzD"}
|
package/dist/api/extendscript.js
CHANGED
|
@@ -27,7 +27,14 @@ function getContextInfo() {
|
|
|
27
27
|
resolution: doc.resolution,
|
|
28
28
|
colorMode: String(doc.mode),
|
|
29
29
|
layerCount: doc.layers.length,
|
|
30
|
-
hasSelection:
|
|
30
|
+
hasSelection: (function () {
|
|
31
|
+
try {
|
|
32
|
+
return !!(doc.selection && doc.selection.bounds);
|
|
33
|
+
} catch (e) {
|
|
34
|
+
// ExtendScript throws "No such element" when there is no active selection
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
})()
|
|
31
38
|
};
|
|
32
39
|
|
|
33
40
|
if (doc.activeLayer) {
|
|
@@ -274,19 +281,52 @@ export const ExtendScriptSnippets = {
|
|
|
274
281
|
throw new Error('No active layer');
|
|
275
282
|
`,
|
|
276
283
|
/**
|
|
277
|
-
* Fill layer with color
|
|
284
|
+
* Fill the active layer with a solid RGB color.
|
|
285
|
+
*
|
|
286
|
+
* ArtLayer has no fillPath() method (that exists on PathItem only).
|
|
287
|
+
* The correct approach is Selection.fill(): preserve any existing
|
|
288
|
+
* selection, otherwise select the whole canvas, fill, then deselect.
|
|
289
|
+
* Background / fully-locked layers cannot be filled, so fail clearly.
|
|
278
290
|
*/
|
|
279
291
|
fillLayer: (red, green, blue) => `
|
|
280
292
|
if (app.documents.length === 0) {
|
|
281
293
|
throw new Error('No active document');
|
|
282
294
|
}
|
|
283
295
|
var doc = app.activeDocument;
|
|
296
|
+
var layer = doc.activeLayer;
|
|
297
|
+
|
|
298
|
+
if (layer.allLocked) {
|
|
299
|
+
throw new Error('Cannot fill a fully locked layer: ' + layer.name);
|
|
300
|
+
}
|
|
301
|
+
if (layer.kind === LayerKind.TEXT) {
|
|
302
|
+
throw new Error('Cannot fill a text layer. Rasterize it first.');
|
|
303
|
+
}
|
|
304
|
+
|
|
284
305
|
var color = new SolidColor();
|
|
285
306
|
color.rgb.red = ${red};
|
|
286
307
|
color.rgb.green = ${green};
|
|
287
308
|
color.rgb.blue = ${blue};
|
|
288
|
-
|
|
289
|
-
|
|
309
|
+
|
|
310
|
+
var hadSelection = false;
|
|
311
|
+
try {
|
|
312
|
+
hadSelection = doc.selection.bounds != null;
|
|
313
|
+
} catch (e) {
|
|
314
|
+
hadSelection = false;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
if (!hadSelection) {
|
|
318
|
+
doc.selection.selectAll();
|
|
319
|
+
}
|
|
320
|
+
doc.selection.fill(color);
|
|
321
|
+
if (!hadSelection) {
|
|
322
|
+
doc.selection.deselect();
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
return {
|
|
326
|
+
filled: true,
|
|
327
|
+
layerName: layer.name,
|
|
328
|
+
color: { red: ${red}, green: ${green}, blue: ${blue} }
|
|
329
|
+
};
|
|
290
330
|
`,
|
|
291
331
|
/**
|
|
292
332
|
* Resize image
|
|
@@ -761,17 +801,44 @@ export const ExtendScriptSnippets = {
|
|
|
761
801
|
};
|
|
762
802
|
`,
|
|
763
803
|
/**
|
|
764
|
-
* Adjust hue and
|
|
804
|
+
* Adjust hue, saturation and lightness on the active layer.
|
|
805
|
+
*
|
|
806
|
+
* ArtLayer has no DOM method for Hue/Saturation - adjustColorBalance()
|
|
807
|
+
* is for Color Balance (cyan/red, magenta/green, yellow/blue) and would
|
|
808
|
+
* throw here. The correct path is the "HStr" Action Descriptor which
|
|
809
|
+
* matches the Image > Adjustments > Hue/Saturation menu command.
|
|
765
810
|
*/
|
|
766
811
|
adjustHueSaturation: (hue, saturation, lightness) => `
|
|
812
|
+
${helperFunctions}
|
|
813
|
+
|
|
767
814
|
if (app.documents.length === 0) {
|
|
768
815
|
throw new Error('No active document');
|
|
769
816
|
}
|
|
770
817
|
var layer = app.activeDocument.activeLayer;
|
|
771
|
-
|
|
772
|
-
layer.
|
|
773
|
-
|
|
774
|
-
|
|
818
|
+
|
|
819
|
+
if (layer.kind === LayerKind.TEXT || layer.kind === LayerKind.SMARTOBJECT) {
|
|
820
|
+
layer.rasterize(RasterizeType.ENTIRELAYER);
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
var desc = new ActionDescriptor();
|
|
824
|
+
desc.putEnumerated(
|
|
825
|
+
sTID('presetKind'),
|
|
826
|
+
sTID('presetKindType'),
|
|
827
|
+
sTID('presetKindCustom')
|
|
828
|
+
);
|
|
829
|
+
desc.putBoolean(cTID('Clrz'), false);
|
|
830
|
+
|
|
831
|
+
var adjustments = new ActionList();
|
|
832
|
+
var adjustment = new ActionDescriptor();
|
|
833
|
+
adjustment.putInteger(cTID('H '), ${hue});
|
|
834
|
+
adjustment.putInteger(cTID('Strt'), ${saturation});
|
|
835
|
+
adjustment.putInteger(cTID('Lght'), ${lightness});
|
|
836
|
+
adjustments.putObject(cTID('Hsrt'), adjustment);
|
|
837
|
+
desc.putList(cTID('Adjs'), adjustments);
|
|
838
|
+
|
|
839
|
+
executeAction(cTID('HStr'), desc, DialogModes.NO);
|
|
840
|
+
|
|
841
|
+
return {
|
|
775
842
|
adjustment: 'Hue/Saturation',
|
|
776
843
|
hue: ${hue},
|
|
777
844
|
saturation: ${saturation},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendscript.js","sourceRoot":"","sources":["../../src/api/extendscript.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,eAAe,GAAG;;;CAGvB,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAG
|
|
1
|
+
{"version":3,"file":"extendscript.js","sourceRoot":"","sources":["../../src/api/extendscript.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,21 +62,38 @@ class ExtendScriptPhotoshopAPI {
|
|
|
62
62
|
return await this.connection.executeScript(wrappedScript);
|
|
63
63
|
}
|
|
64
64
|
wrapInErrorHandling(script) {
|
|
65
|
-
// ExtendScript
|
|
66
|
-
//
|
|
65
|
+
// ExtendScript has no JSON object, so the result is serialized via
|
|
66
|
+
// toSource()/String(). Errors are surfaced with an "ERROR:" prefix
|
|
67
|
+
// that platform executors translate back into thrown Errors.
|
|
68
|
+
//
|
|
69
|
+
// Ruler and type units are temporarily forced to pixels/points so that
|
|
70
|
+
// every DOM API that accepts plain numbers (translate, textItem.size,
|
|
71
|
+
// textItem.position, doc.crop bounds, etc.) behaves consistently
|
|
72
|
+
// regardless of the user's Photoshop preferences. The user's original
|
|
73
|
+
// preferences are restored in the finally block.
|
|
67
74
|
return `
|
|
68
75
|
(function() {
|
|
76
|
+
var __originalRulerUnits = null;
|
|
77
|
+
var __originalTypeUnits = null;
|
|
78
|
+
try { __originalRulerUnits = app.preferences.rulerUnits; } catch (e) {}
|
|
79
|
+
try { __originalTypeUnits = app.preferences.typeUnits; } catch (e) {}
|
|
80
|
+
|
|
69
81
|
try {
|
|
82
|
+
try { app.preferences.rulerUnits = Units.PIXELS; } catch (e) {}
|
|
83
|
+
try { app.preferences.typeUnits = TypeUnits.POINTS; } catch (e) {}
|
|
84
|
+
|
|
70
85
|
var result = (function() {
|
|
71
86
|
${script}
|
|
72
87
|
})();
|
|
73
|
-
// Convert result to string for transport
|
|
74
88
|
if (typeof result === 'object' && result !== null) {
|
|
75
89
|
return result.toSource ? result.toSource() : String(result);
|
|
76
90
|
}
|
|
77
91
|
return String(result);
|
|
78
92
|
} catch (error) {
|
|
79
93
|
return 'ERROR: ' + (error.message || String(error));
|
|
94
|
+
} finally {
|
|
95
|
+
try { if (__originalRulerUnits !== null) app.preferences.rulerUnits = __originalRulerUnits; } catch (e) {}
|
|
96
|
+
try { if (__originalTypeUnits !== null) app.preferences.typeUnits = __originalTypeUnits; } catch (e) {}
|
|
80
97
|
}
|
|
81
98
|
})();
|
|
82
99
|
`.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"photoshop-api.js","sourceRoot":"","sources":["../../src/api/photoshop-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAiB5C,MAAM,OAAO,mBAAmB;IACtB,MAAM,CAAS;IACf,UAAU,CAAsB;IAExC,YAAY,UAA+B;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;QAEhD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QAED,8CAA8C;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,OAAO,8BAA8B,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAElF,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,OAAe;QACtC,oFAAoF;QACpF,uEAAuE;QACvE,gEAAgE;QAEhE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,6CAA6C,CAAC,CAAC;QAC1G,OAAO,cAAc,CAAC;IACxB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,eAAe;IACX,UAAU,CAAsB;IAExC,YAAY,UAA+B;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,wDAAwD;QACxD,4BAA4B;QAC5B,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;GAEG;AACH,MAAM,wBAAwB;IACpB,UAAU,CAAsB;IAExC,YAAY,UAA+B;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,gCAAgC;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACvD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC;IAEO,mBAAmB,CAAC,MAAc;QACxC,
|
|
1
|
+
{"version":3,"file":"photoshop-api.js","sourceRoot":"","sources":["../../src/api/photoshop-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAiB5C,MAAM,OAAO,mBAAmB;IACtB,MAAM,CAAS;IACf,UAAU,CAAsB;IAExC,YAAY,UAA+B;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;QAEhD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QAED,8CAA8C;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,OAAO,8BAA8B,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAElF,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,OAAe;QACtC,oFAAoF;QACpF,uEAAuE;QACvE,gEAAgE;QAEhE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,6CAA6C,CAAC,CAAC;QAC1G,OAAO,cAAc,CAAC;IACxB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,eAAe;IACX,UAAU,CAAsB;IAExC,YAAY,UAA+B;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,wDAAwD;QACxD,4BAA4B;QAC5B,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;GAEG;AACH,MAAM,wBAAwB;IACpB,UAAU,CAAsB;IAExC,YAAY,UAA+B;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,gCAAgC;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACvD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC;IAEO,mBAAmB,CAAC,MAAc;QACxC,mEAAmE;QACnE,mEAAmE;QACnE,6DAA6D;QAC7D,EAAE;QACF,uEAAuE;QACvE,sEAAsE;QACtE,iEAAiE;QACjE,sEAAsE;QACtE,iDAAiD;QACjD,OAAO;;;;;;;;;;;;QAYH,MAAM;;;;;;;;;;;;;KAaT,CAAC,IAAI,EAAE,CAAC;IACX,CAAC;IAED,UAAU;QACR,OAAO,cAAc,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"macos-executor.d.ts","sourceRoot":"","sources":["../../src/platform/macos-executor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAkC;;IAMjD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK3B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC;YAuB1D,YAAY;YAqBZ,aAAa;IAmC3B,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"macos-executor.d.ts","sourceRoot":"","sources":["../../src/platform/macos-executor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAkC;;IAMjD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK3B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC;YAuB1D,YAAY;YAqBZ,aAAa;IAmC3B,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,WAAW;IAcb,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUtC,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB3D;;;OAGG;IACG,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBhE"}
|
|
@@ -99,12 +99,13 @@ end tell`;
|
|
|
99
99
|
}
|
|
100
100
|
parseResult(output) {
|
|
101
101
|
const trimmed = output.trim();
|
|
102
|
-
|
|
102
|
+
if (trimmed.startsWith('ERROR:')) {
|
|
103
|
+
throw new Error(trimmed.substring(6).trim());
|
|
104
|
+
}
|
|
103
105
|
try {
|
|
104
106
|
return JSON.parse(trimmed);
|
|
105
107
|
}
|
|
106
108
|
catch {
|
|
107
|
-
// Return as string if not JSON
|
|
108
109
|
return trimmed;
|
|
109
110
|
}
|
|
110
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"macos-executor.js","sourceRoot":"","sources":["../../src/platform/macos-executor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"macos-executor.js","sourceRoot":"","sources":["../../src/platform/macos-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type LanguageModelUsage, type ModelMessage } from 'ai';
|
|
2
|
+
import type { ModelPricing, ProviderAdapter, UsageCost } from './providers/registry.js';
|
|
3
|
+
export interface ToolCallPersist {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
input: unknown;
|
|
7
|
+
result?: {
|
|
8
|
+
ok: boolean;
|
|
9
|
+
content: string;
|
|
10
|
+
};
|
|
11
|
+
status: 'pending' | 'success' | 'error';
|
|
12
|
+
}
|
|
13
|
+
export interface AssistantBuffer {
|
|
14
|
+
text: string;
|
|
15
|
+
toolCalls: ToolCallPersist[];
|
|
16
|
+
}
|
|
17
|
+
export interface RunChatStreamEvent {
|
|
18
|
+
type: 'text-delta' | 'tool-call' | 'tool-result' | 'finish' | 'error';
|
|
19
|
+
payload: unknown;
|
|
20
|
+
}
|
|
21
|
+
export interface RunChatFinishInfo {
|
|
22
|
+
usage: LanguageModelUsage;
|
|
23
|
+
cost?: UsageCost;
|
|
24
|
+
}
|
|
25
|
+
export interface RunChatOptions {
|
|
26
|
+
prompt: string;
|
|
27
|
+
history: ModelMessage[];
|
|
28
|
+
provider: ProviderAdapter;
|
|
29
|
+
apiKey: string;
|
|
30
|
+
modelId: string;
|
|
31
|
+
abortSignal: AbortSignal;
|
|
32
|
+
onAssistantBuffer?: (buf: AssistantBuffer) => void;
|
|
33
|
+
onFinish?: (info: RunChatFinishInfo) => void;
|
|
34
|
+
}
|
|
35
|
+
export declare const PHOTOSHOP_SYSTEM_PROMPT: string;
|
|
36
|
+
export declare function runChat(opts: RunChatOptions): AsyncGenerator<RunChatStreamEvent>;
|
|
37
|
+
export declare function computeCost(usage: LanguageModelUsage, pricing: ModelPricing): UsageCost;
|
|
38
|
+
export declare function buildHistory(messages: Array<{
|
|
39
|
+
role: 'user' | 'assistant';
|
|
40
|
+
content: {
|
|
41
|
+
text: string;
|
|
42
|
+
};
|
|
43
|
+
}>): ModelMessage[];
|
|
44
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/ui/agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,IAAI,CAAC;AAGzF,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAYxF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC9C;AAED,eAAO,MAAM,uBAAuB,QAc5B,CAAC;AAET,wBAAuB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,kBAAkB,CAAC,CA0GvF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,CAyBvF;AA6BD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,GACzE,YAAY,EAAE,CAWhB"}
|
package/dist/ui/agent.js
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { createMCPClient } from '@ai-sdk/mcp';
|
|
2
|
+
import { Experimental_StdioMCPTransport } from '@ai-sdk/mcp/mcp-stdio';
|
|
3
|
+
import { stepCountIs, streamText } from 'ai';
|
|
4
|
+
import { dirname, resolve } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = dirname(__filename);
|
|
8
|
+
// In production (`dist/ui/agent.js`) we point at the compiled `dist/index.js`.
|
|
9
|
+
// In development (`tsx watch src/ui/cli.ts`) the source `.ts` is loaded directly,
|
|
10
|
+
// so we resolve the TS entry and spawn it through Node's tsx loader.
|
|
11
|
+
const IS_DEV_SOURCE = __filename.endsWith('.ts');
|
|
12
|
+
const PHOTOSHOP_MCP_ENTRY = IS_DEV_SOURCE
|
|
13
|
+
? resolve(__dirname, '..', 'index.ts')
|
|
14
|
+
: resolve(__dirname, '..', 'index.js');
|
|
15
|
+
export const PHOTOSHOP_SYSTEM_PROMPT = `
|
|
16
|
+
You are an assistant that controls Adobe Photoshop on the user's machine through
|
|
17
|
+
the "photoshop" MCP server. Use the photoshop_* tools to fulfill the user's
|
|
18
|
+
request: open documents, manage layers, place images, apply filters, write text,
|
|
19
|
+
save files, and so on.
|
|
20
|
+
|
|
21
|
+
Guidelines:
|
|
22
|
+
- Start with photoshop_ping when you are unsure whether Photoshop is reachable.
|
|
23
|
+
- Prefer single, well-scoped tool calls instead of long combined operations.
|
|
24
|
+
- After meaningful state changes, briefly describe in plain language what you did.
|
|
25
|
+
- If a tool call fails, surface the error to the user and ask for confirmation
|
|
26
|
+
before retrying or trying an alternative.
|
|
27
|
+
- Only Photoshop MCP tools are available. Do not attempt shell, filesystem,
|
|
28
|
+
web, or general coding operations; respond in natural language instead.
|
|
29
|
+
`.trim();
|
|
30
|
+
export async function* runChat(opts) {
|
|
31
|
+
let mcp;
|
|
32
|
+
const buffer = { text: '', toolCalls: [] };
|
|
33
|
+
try {
|
|
34
|
+
const spawnArgs = IS_DEV_SOURCE
|
|
35
|
+
? ['--import', 'tsx', PHOTOSHOP_MCP_ENTRY]
|
|
36
|
+
: [PHOTOSHOP_MCP_ENTRY];
|
|
37
|
+
mcp = await createMCPClient({
|
|
38
|
+
transport: new Experimental_StdioMCPTransport({
|
|
39
|
+
command: process.execPath,
|
|
40
|
+
args: spawnArgs,
|
|
41
|
+
env: { ...sanitizedEnv(), LOG_LEVEL: process.env.LOG_LEVEL ?? '2' },
|
|
42
|
+
}),
|
|
43
|
+
});
|
|
44
|
+
const tools = await mcp.tools();
|
|
45
|
+
const result = streamText({
|
|
46
|
+
model: opts.provider.getLanguageModel({
|
|
47
|
+
apiKey: opts.apiKey,
|
|
48
|
+
modelId: opts.modelId,
|
|
49
|
+
}),
|
|
50
|
+
tools,
|
|
51
|
+
system: PHOTOSHOP_SYSTEM_PROMPT,
|
|
52
|
+
messages: [...opts.history, { role: 'user', content: opts.prompt }],
|
|
53
|
+
stopWhen: stepCountIs(20),
|
|
54
|
+
abortSignal: opts.abortSignal,
|
|
55
|
+
});
|
|
56
|
+
for await (const part of result.fullStream) {
|
|
57
|
+
switch (part.type) {
|
|
58
|
+
case 'text-delta': {
|
|
59
|
+
buffer.text += part.text;
|
|
60
|
+
yield { type: 'text-delta', payload: { text: part.text } };
|
|
61
|
+
opts.onAssistantBuffer?.(buffer);
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
case 'tool-call': {
|
|
65
|
+
const tc = {
|
|
66
|
+
id: part.toolCallId,
|
|
67
|
+
name: part.toolName,
|
|
68
|
+
input: part.input,
|
|
69
|
+
status: 'pending',
|
|
70
|
+
};
|
|
71
|
+
buffer.toolCalls.push(tc);
|
|
72
|
+
yield {
|
|
73
|
+
type: 'tool-call',
|
|
74
|
+
payload: { id: tc.id, name: tc.name, input: tc.input },
|
|
75
|
+
};
|
|
76
|
+
opts.onAssistantBuffer?.(buffer);
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
case 'tool-result': {
|
|
80
|
+
const tc = buffer.toolCalls.find((c) => c.id === part.toolCallId);
|
|
81
|
+
const text = stringifyToolOutput(part.output);
|
|
82
|
+
if (tc) {
|
|
83
|
+
tc.result = { ok: true, content: text };
|
|
84
|
+
tc.status = 'success';
|
|
85
|
+
}
|
|
86
|
+
yield {
|
|
87
|
+
type: 'tool-result',
|
|
88
|
+
payload: { id: part.toolCallId, ok: true, content: text },
|
|
89
|
+
};
|
|
90
|
+
opts.onAssistantBuffer?.(buffer);
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
case 'tool-error': {
|
|
94
|
+
const tc = buffer.toolCalls.find((c) => c.id === part.toolCallId);
|
|
95
|
+
const text = part.error?.message ?? String(part.error);
|
|
96
|
+
if (tc) {
|
|
97
|
+
tc.result = { ok: false, content: text };
|
|
98
|
+
tc.status = 'error';
|
|
99
|
+
}
|
|
100
|
+
yield {
|
|
101
|
+
type: 'tool-result',
|
|
102
|
+
payload: { id: part.toolCallId, ok: false, content: text },
|
|
103
|
+
};
|
|
104
|
+
opts.onAssistantBuffer?.(buffer);
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
case 'finish': {
|
|
108
|
+
const usage = part.totalUsage;
|
|
109
|
+
const pricing = opts.provider.getModelPricing(opts.modelId);
|
|
110
|
+
const cost = pricing ? computeCost(usage, pricing) : undefined;
|
|
111
|
+
opts.onFinish?.({ usage, cost });
|
|
112
|
+
yield {
|
|
113
|
+
type: 'finish',
|
|
114
|
+
payload: { finishReason: part.finishReason, usage, cost },
|
|
115
|
+
};
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
case 'error': {
|
|
119
|
+
yield {
|
|
120
|
+
type: 'error',
|
|
121
|
+
payload: { message: part.error?.message ?? String(part.error) },
|
|
122
|
+
};
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
default:
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
finally {
|
|
131
|
+
if (mcp)
|
|
132
|
+
await mcp.close().catch(() => undefined);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
export function computeCost(usage, pricing) {
|
|
136
|
+
const cacheRead = usage.inputTokenDetails?.cacheReadTokens ?? 0;
|
|
137
|
+
const cacheWrite = usage.inputTokenDetails?.cacheWriteTokens ?? 0;
|
|
138
|
+
// Prefer the explicit non-cache count when the provider reports it; otherwise
|
|
139
|
+
// derive it from the total minus cache buckets so we don't double-bill.
|
|
140
|
+
const totalInput = usage.inputTokens ?? 0;
|
|
141
|
+
const noCache = usage.inputTokenDetails?.noCacheTokens ??
|
|
142
|
+
Math.max(0, totalInput - cacheRead - cacheWrite);
|
|
143
|
+
const output = usage.outputTokens ?? 0;
|
|
144
|
+
const inputUsd = (noCache / 1_000_000) * pricing.inputUsdPerMTok;
|
|
145
|
+
const outputUsd = (output / 1_000_000) * pricing.outputUsdPerMTok;
|
|
146
|
+
const cachedReadUsd = (cacheRead / 1_000_000) * (pricing.cachedInputUsdPerMTok ?? pricing.inputUsdPerMTok);
|
|
147
|
+
const cachedWriteUsd = (cacheWrite / 1_000_000) * (pricing.cachedWriteUsdPerMTok ?? pricing.inputUsdPerMTok);
|
|
148
|
+
return {
|
|
149
|
+
totalUsd: inputUsd + outputUsd + cachedReadUsd + cachedWriteUsd,
|
|
150
|
+
inputUsd,
|
|
151
|
+
outputUsd,
|
|
152
|
+
cachedReadUsd,
|
|
153
|
+
cachedWriteUsd,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function stringifyToolOutput(output) {
|
|
157
|
+
if (output == null)
|
|
158
|
+
return '';
|
|
159
|
+
if (typeof output === 'string')
|
|
160
|
+
return output;
|
|
161
|
+
if (typeof output === 'object' && output !== null && 'content' in output) {
|
|
162
|
+
const content = output.content;
|
|
163
|
+
if (Array.isArray(content)) {
|
|
164
|
+
return content
|
|
165
|
+
.map((c) => (typeof c === 'string' ? c : c?.text ?? ''))
|
|
166
|
+
.filter(Boolean)
|
|
167
|
+
.join('\n');
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
171
|
+
return JSON.stringify(output);
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return String(output);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
function sanitizedEnv() {
|
|
178
|
+
const out = {};
|
|
179
|
+
for (const [k, v] of Object.entries(process.env)) {
|
|
180
|
+
if (typeof v === 'string')
|
|
181
|
+
out[k] = v;
|
|
182
|
+
}
|
|
183
|
+
return out;
|
|
184
|
+
}
|
|
185
|
+
export function buildHistory(messages) {
|
|
186
|
+
// Persisted history is rebuilt as plain text turns. Tool-call traces are
|
|
187
|
+
// intentionally not replayed, since their results are already reflected in
|
|
188
|
+
// the assistant's prior response text and re-issuing them would duplicate work.
|
|
189
|
+
const history = [];
|
|
190
|
+
for (const m of messages) {
|
|
191
|
+
const text = m.content.text?.trim();
|
|
192
|
+
if (!text)
|
|
193
|
+
continue;
|
|
194
|
+
history.push({ role: m.role, content: text });
|
|
195
|
+
}
|
|
196
|
+
return history;
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/ui/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/ui/cli.ts"],"names":[],"mappings":""}
|