@sami7786/opencode-image-proxy 1.0.0 → 1.0.3

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 CHANGED
@@ -5,12 +5,12 @@ OpenCode plugin that proxies images through a vision-capable model, enabling ima
5
5
  ## Installation
6
6
 
7
7
  ### From npm
8
- Add this to opencode config (typically in : ~/.config/opencode/opencode.json)
8
+ Add this to opencode config (typically in: `~/.config/opencode/opencode.json`)
9
9
  ```json
10
10
  {
11
11
  "$schema": "https://opencode.ai/config.json",
12
12
  "plugin": [
13
- "@sami/opencode-image-proxy@latest"
13
+ "@sami7786/opencode-image-proxy@latest"
14
14
  ]
15
15
  }
16
16
  ```
@@ -25,7 +25,7 @@ All model calls use OpenCode's existing authentication - no separate API keys ne
25
25
 
26
26
  ## Configuration
27
27
 
28
- Create `~/.config/opencode/opencode-image-proxy.json`
28
+ Create `~/.config/opencode/opencode-image-proxy.json` (or `$XDG_CONFIG_HOME/opencode/opencode-image-proxy.json`)
29
29
 
30
30
  <i> To see available models, run: ```opencode models``` </i>
31
31
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAA;AA0J9D,eAAO,MAAM,oBAAoB,EAAE,MAgElC,CAAA;AAED,eAAe,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAA;AAkK9D,eAAO,MAAM,oBAAoB,EAAE,MA+DlC,CAAA;AAED,eAAe,oBAAoB,CAAA"}
package/dist/index.js CHANGED
@@ -24,36 +24,44 @@ const IMAGE_WRAPPER_SUFFIX = `]`;
24
24
  const sessionsNeedingAnalysis = new Set();
25
25
  let config = null;
26
26
  let pluginContext = null;
27
+ function isNonEmptyString(value) {
28
+ return typeof value === "string" && value.trim().length > 0;
29
+ }
27
30
  function getConfigDir() {
28
31
  const xdgConfig = process.env.XDG_CONFIG_HOME;
29
- if (xdgConfig) {
30
- return join(xdgConfig, "opencode");
31
- }
32
- return join(homedir(), ".config", "opencode");
32
+ return join(xdgConfig ?? join(homedir(), ".config"), "opencode");
33
33
  }
34
- function loadConfig() {
35
- const configPath = join(getConfigDir(), "opencode-image-proxy.json");
36
- const defaultConfig = {
34
+ function getDefaultConfig() {
35
+ return {
37
36
  imageIncapableModels: DEFAULT_IMAGE_INCAPABLE_MODELS,
38
- imageReaderModel: { providerID: "github-copilot", modelID: "gpt-5-mini" },
37
+ imageReaderModel: { providerID: "opencode", modelID: "kimi-k2.5-free" },
39
38
  analysisPrompt: DEFAULT_ANALYSIS_PROMPT,
40
39
  };
40
+ }
41
+ function normalizeStringArray(value, fallback) {
42
+ const raw = Array.isArray(value) ? value : fallback;
43
+ return raw.filter(isNonEmptyString).map((entry) => entry.trim());
44
+ }
45
+ function normalizeReaderModel(value, fallback) {
46
+ if (!value || typeof value !== "object")
47
+ return fallback;
48
+ const candidate = value;
49
+ const providerID = isNonEmptyString(candidate.providerID) ? candidate.providerID.trim() : fallback.providerID;
50
+ const modelID = isNonEmptyString(candidate.modelID) ? candidate.modelID.trim() : fallback.modelID;
51
+ return { providerID, modelID };
52
+ }
53
+ function loadConfig() {
54
+ const configPath = join(getConfigDir(), "opencode-image-proxy.json");
55
+ const defaultConfig = getDefaultConfig();
41
56
  if (!existsSync(configPath)) {
42
57
  return defaultConfig;
43
58
  }
44
59
  try {
45
60
  const userConfig = JSON.parse(readFileSync(configPath, "utf-8"));
46
61
  return {
47
- imageIncapableModels: Array.isArray(userConfig.imageIncapableModels)
48
- ? userConfig.imageIncapableModels.filter((m) => typeof m === "string")
49
- : DEFAULT_IMAGE_INCAPABLE_MODELS,
50
- imageReaderModel: userConfig.imageReaderModel
51
- ? {
52
- providerID: userConfig.imageReaderModel.providerID ?? defaultConfig.imageReaderModel.providerID,
53
- modelID: userConfig.imageReaderModel.modelID ?? defaultConfig.imageReaderModel.modelID,
54
- }
55
- : defaultConfig.imageReaderModel,
56
- analysisPrompt: typeof userConfig.analysisPrompt === "string" ? userConfig.analysisPrompt : DEFAULT_ANALYSIS_PROMPT,
62
+ imageIncapableModels: normalizeStringArray(userConfig.imageIncapableModels, defaultConfig.imageIncapableModels),
63
+ imageReaderModel: normalizeReaderModel(userConfig.imageReaderModel, defaultConfig.imageReaderModel),
64
+ analysisPrompt: isNonEmptyString(userConfig.analysisPrompt) ? userConfig.analysisPrompt : defaultConfig.analysisPrompt,
57
65
  };
58
66
  }
59
67
  catch {
@@ -65,24 +73,17 @@ function isImageIncapableModel(providerID, modelID) {
65
73
  return false;
66
74
  return (config ??= loadConfig()).imageIncapableModels.includes(`${providerID}/${modelID}`);
67
75
  }
68
- function decodeDataUrl(url) {
69
- const match = url.match(/^data:([^;,]+)(?:;[^,]+)?;base64,(.+)$/);
70
- if (!match)
71
- return null;
72
- try {
73
- const data = Buffer.from(match[2], "base64");
74
- return data.length ? { data, mime: match[1].toLowerCase() } : null;
75
- }
76
- catch {
77
- return null;
78
- }
76
+ function getMimeFromDataUrl(url) {
77
+ const match = url.match(/^data:([^;,]+)(?:;[^,]+)?;base64,/);
78
+ return match ? match[1].toLowerCase() : null;
79
79
  }
80
- async function analyzeImageViaOpencode(imageDataUrl, filename) {
80
+ async function analyzeImageViaOpencode(imageDataUrl, filename, mime) {
81
81
  if (!pluginContext) {
82
82
  return "[Image analysis failed: plugin context not initialized]";
83
83
  }
84
84
  const cfg = config ??= loadConfig();
85
85
  const { client } = pluginContext;
86
+ const resolvedMime = mime ?? getMimeFromDataUrl(imageDataUrl) ?? "image/png";
86
87
  try {
87
88
  const session = await client.session.create({});
88
89
  if (!session.data) {
@@ -95,15 +96,12 @@ async function analyzeImageViaOpencode(imageDataUrl, filename) {
95
96
  model: cfg.imageReaderModel,
96
97
  system: cfg.analysisPrompt,
97
98
  parts: [
98
- {
99
- type: "text",
100
- text: "What do you see in this image?",
101
- },
99
+ { type: "text", text: "What do you see in this image?" },
102
100
  {
103
101
  type: "file",
104
102
  url: imageDataUrl,
105
103
  filename: filename ?? "image.png",
106
- mime: "image/png",
104
+ mime: resolvedMime,
107
105
  },
108
106
  ],
109
107
  },
@@ -112,8 +110,7 @@ async function analyzeImageViaOpencode(imageDataUrl, filename) {
112
110
  if (!response.data) {
113
111
  return "[Image analysis failed: no response from vision model]";
114
112
  }
115
- const parts = response.data.parts ?? [];
116
- const textParts = parts.filter((p) => p.type === "text" && p.text);
113
+ const textParts = (response.data.parts ?? []).filter((p) => p.type === "text" && p.text);
117
114
  if (textParts.length === 0) {
118
115
  return "[Image analysis failed: no text in response]";
119
116
  }
@@ -156,15 +153,12 @@ export const OpencodeVisionPlugin = async (ctx) => {
156
153
  return;
157
154
  const imageAnalysisPromises = [];
158
155
  for (let i = 0; i < msg.parts.length; i++) {
159
- const p = msg.parts[i];
160
- if (p.type === "file" && p.mime?.startsWith("image/") && p.url) {
161
- const index = i;
162
- const filename = p.filename;
163
- const imageUrl = p.url;
164
- imageAnalysisPromises.push(analyzeImageViaOpencode(imageUrl, filename).then((analysis) => ({
165
- index,
156
+ const part = msg.parts[i];
157
+ if (part.type === "file" && part.mime?.startsWith("image/") && part.url) {
158
+ imageAnalysisPromises.push(analyzeImageViaOpencode(part.url, part.filename, part.mime).then((analysis) => ({
159
+ index: i,
166
160
  analysis,
167
- filename,
161
+ filename: part.filename,
168
162
  })));
169
163
  }
170
164
  }
@@ -172,13 +166,12 @@ export const OpencodeVisionPlugin = async (ctx) => {
172
166
  return;
173
167
  const results = await Promise.all(imageAnalysisPromises);
174
168
  for (const { index, analysis, filename } of results) {
175
- const p = msg.parts[index];
176
- const displayName = filename ?? `image.${p.mime?.split("/")[1] ?? "bin"}`;
177
- const textPart = {
169
+ const part = msg.parts[index];
170
+ const displayName = filename ?? `image.${part.mime?.split("/")[1] ?? "bin"}`;
171
+ msg.parts[index] = {
178
172
  type: "text",
179
173
  text: `${IMAGE_WRAPPER_PREFIX}${displayName}${IMAGE_WRAPPER_SUFFIX}\n${analysis}`,
180
174
  };
181
- msg.parts[index] = textPart;
182
175
  }
183
176
  },
184
177
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sami7786/opencode-image-proxy",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
4
  "description": "OpenCode plugin that proxies images through a vision-capable model, enabling image-incapable models to \"see\"",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",