Skip to content

Commit 31e3fe8

Browse files
committed
feedback
1 parent 3ed0ba9 commit 31e3fe8

10 files changed

Lines changed: 35 additions & 14 deletions

File tree

bun.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@
133133
},
134134
"patchedDependencies": {
135135
"@npmcli/agent@4.0.0": "patches/@npmcli%2Fagent@4.0.0.patch",
136+
"@silvia-odwyer/photon-node@0.3.4": "patches/@silvia-odwyer%2Fphoton-node@0.3.4.patch",
136137
"@standard-community/standard-openapi@0.2.9": "patches/@standard-community%2Fstandard-openapi@0.2.9.patch",
137138
"solid-js@1.9.10": "patches/solid-js@1.9.10.patch"
138139
}

packages/opencode/src/image/image.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { Config } from "@/config/config"
22
import type { MessageV2 } from "@/session/message-v2"
33
import * as Log from "@opencode-ai/core/util/log"
44
import { Context, Effect, Layer, Schema } from "effect"
5-
import fs from "fs"
65

76
const MAX_BASE64_BYTES = 4.5 * 1024 * 1024
87
const MAX_WIDTH = 2000
@@ -64,17 +63,11 @@ export const layer = Layer.effect(
6463
const loadPhoton = yield* Effect.cached(
6564
Effect.promise(async () => {
6665
const photonWasm = (await import("@silvia-odwyer/photon-node/photon_rs_bg.wasm", { with: { type: "file" } })).default
67-
const original = fs.readFileSync
68-
fs.readFileSync = ((file: fs.PathOrFileDescriptor, options?: Parameters<typeof fs.readFileSync>[1]) => {
69-
if (typeof file === "string" && file.endsWith("photon_rs_bg.wasm")) return original(photonWasm, options)
70-
return original(file, options)
71-
}) as typeof fs.readFileSync
66+
;(globalThis as typeof globalThis & { __OPENCODE_PHOTON_WASM_PATH?: string }).__OPENCODE_PHOTON_WASM_PATH = photonWasm
7267
try {
7368
return await import("@silvia-odwyer/photon-node")
7469
} catch {
7570
return null
76-
} finally {
77-
fs.readFileSync = original
7871
}
7972
}),
8073
)

packages/opencode/src/session/processor.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ export const layer: Layer.Layer<
9393
| LLM.Service
9494
| Permission.Service
9595
| Plugin.Service
96+
| Image.Service
9697
| SessionSummary.Service
9798
| SessionStatus.Service
9899
> = Layer.effect(
@@ -774,7 +775,7 @@ export const layer: Layer.Layer<
774775

775776
return Service.of({ create })
776777
}),
777-
).pipe(Layer.provide(Image.layer))
778+
)
778779

779780
export const defaultLayer = Layer.suspend(() =>
780781
layer.pipe(
@@ -786,6 +787,7 @@ export const defaultLayer = Layer.suspend(() =>
786787
Layer.provide(Plugin.defaultLayer),
787788
Layer.provide(SessionSummary.defaultLayer),
788789
Layer.provide(SessionStatus.defaultLayer),
790+
Layer.provide(Image.defaultLayer),
789791
Layer.provide(Bus.layer),
790792
Layer.provide(Config.defaultLayer),
791793
),

packages/opencode/src/session/prompt.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1774,7 +1774,7 @@ NOTE: At any point in time through this workflow you should feel free to ask the
17741774
resolvePromptParts,
17751775
})
17761776
}),
1777-
).pipe(Layer.provide(Image.layer))
1777+
)
17781778

17791779
export const defaultLayer = Layer.suspend(() =>
17801780
layer.pipe(
@@ -1796,6 +1796,7 @@ export const defaultLayer = Layer.suspend(() =>
17961796
Layer.provide(Session.defaultLayer),
17971797
Layer.provide(SessionRevert.defaultLayer),
17981798
Layer.provide(SessionSummary.defaultLayer),
1799+
Layer.provide(Image.defaultLayer),
17991800
Layer.provide(
18001801
Layer.mergeAll(
18011802
Agent.defaultLayer,

packages/opencode/test/session/compaction.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import * as Stream from "effect/Stream"
55
import z from "zod"
66
import { Bus } from "../../src/bus"
77
import { Config } from "@/config/config"
8+
import { Image } from "@/image/image"
89
import { Agent } from "../../src/agent/agent"
910
import { LLM } from "../../src/session/llm"
1011
import { SessionCompaction } from "../../src/session/compaction"
@@ -278,7 +279,7 @@ function llm() {
278279
function liveRuntime(layer: Layer.Layer<LLM.Service>, provider = ProviderTest.fake(), config = Config.defaultLayer) {
279280
const bus = Bus.layer
280281
const status = SessionStatus.layer.pipe(Layer.provide(bus))
281-
const processor = SessionProcessorModule.SessionProcessor.layer.pipe(Layer.provide(summary))
282+
const processor = SessionProcessorModule.SessionProcessor.layer.pipe(Layer.provide(summary), Layer.provide(Image.defaultLayer))
282283
return ManagedRuntime.make(
283284
Layer.mergeAll(SessionCompaction.layer.pipe(Layer.provide(processor)), processor, bus, status).pipe(
284285
Layer.provide(provider.layer),

packages/opencode/test/session/processor-effect.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import type { Agent } from "../../src/agent/agent"
66
import { Agent as AgentSvc } from "../../src/agent/agent"
77
import { Bus } from "../../src/bus"
88
import { Config } from "@/config/config"
9+
import { Image } from "@/image/image"
910
import { Permission } from "../../src/permission"
1011
import { Plugin } from "../../src/plugin"
1112
import { Provider } from "@/provider/provider"
@@ -168,7 +169,7 @@ const deps = Layer.mergeAll(
168169
).pipe(Layer.provideMerge(infra))
169170
const env = Layer.mergeAll(
170171
TestLLMServer.layer,
171-
SessionProcessor.layer.pipe(Layer.provide(summary), Layer.provideMerge(deps)),
172+
SessionProcessor.layer.pipe(Layer.provide(summary), Layer.provide(Image.defaultLayer), Layer.provideMerge(deps)),
172173
)
173174

174175
const it = testEffect(env)

packages/opencode/test/session/prompt.test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { Plugin } from "../../src/plugin"
1616
import { Provider as ProviderSvc } from "@/provider/provider"
1717
import { Env } from "../../src/env"
1818
import { Git } from "../../src/git"
19+
import { Image } from "../../src/image/image"
1920
import { ModelID, ProviderID } from "../../src/provider/schema"
2021
import { Question } from "../../src/question"
2122
import { Todo } from "../../src/session/todo"
@@ -187,12 +188,13 @@ function makeHttp() {
187188
Layer.provideMerge(deps),
188189
)
189190
const trunc = Truncate.layer.pipe(Layer.provideMerge(deps))
190-
const proc = SessionProcessor.layer.pipe(Layer.provide(summary), Layer.provideMerge(deps))
191+
const proc = SessionProcessor.layer.pipe(Layer.provide(summary), Layer.provide(Image.defaultLayer), Layer.provideMerge(deps))
191192
const compact = SessionCompaction.layer.pipe(Layer.provideMerge(proc), Layer.provideMerge(deps))
192193
return Layer.mergeAll(
193194
TestLLMServer.layer,
194195
SessionPrompt.layer.pipe(
195196
Layer.provide(SessionRevert.defaultLayer),
197+
Layer.provide(Image.defaultLayer),
196198
Layer.provide(summary),
197199
Layer.provideMerge(run),
198200
Layer.provideMerge(compact),

packages/opencode/test/session/snapshot-tool-race.test.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import { Plugin } from "../../src/plugin"
4141
import { Provider as ProviderSvc } from "@/provider/provider"
4242
import { Env } from "../../src/env"
4343
import { Question } from "../../src/question"
44+
import { Image } from "../../src/image/image"
4445
import { Skill } from "../../src/skill"
4546
import { SystemPrompt } from "../../src/session/system"
4647
import { Todo } from "../../src/session/todo"
@@ -137,13 +138,18 @@ function makeHttp() {
137138
Layer.provideMerge(deps),
138139
)
139140
const trunc = Truncate.layer.pipe(Layer.provideMerge(deps))
140-
const proc = SessionProcessor.layer.pipe(Layer.provide(SessionSummary.defaultLayer), Layer.provideMerge(deps))
141+
const proc = SessionProcessor.layer.pipe(
142+
Layer.provide(SessionSummary.defaultLayer),
143+
Layer.provide(Image.defaultLayer),
144+
Layer.provideMerge(deps),
145+
)
141146
const compact = SessionCompaction.layer.pipe(Layer.provideMerge(proc), Layer.provideMerge(deps))
142147
return Layer.mergeAll(
143148
TestLLMServer.layer,
144149
SessionSummary.defaultLayer,
145150
SessionPrompt.layer.pipe(
146151
Layer.provide(SessionRevert.defaultLayer),
152+
Layer.provide(Image.defaultLayer),
147153
Layer.provide(SessionSummary.defaultLayer),
148154
Layer.provideMerge(run),
149155
Layer.provideMerge(compact),
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/photon_rs.js b/photon_rs.js
2+
index 8f4144d..b83e9a9 100644
3+
--- a/photon_rs.js
4+
+++ b/photon_rs.js
5+
@@ -4509,7 +4509,7 @@ module.exports.__wbindgen_init_externref_table = function() {
6+
;
7+
};
8+
9+
-const path = require('path').join(__dirname, 'photon_rs_bg.wasm');
10+
+const path = globalThis.__OPENCODE_PHOTON_WASM_PATH || require('path').join(__dirname, 'photon_rs_bg.wasm');
11+
const bytes = require('fs').readFileSync(path);
12+
13+
const wasmModule = new WebAssembly.Module(bytes);

0 commit comments

Comments
 (0)