Skip to content

Commit d26ac05

Browse files
committed
fix: restore missing RuntimeFlags from upstream (disableLspDownload, skipMigrations, disableClaudeCodePrompt)
1 parent 6eb8fa0 commit d26ac05

3 files changed

Lines changed: 75 additions & 15 deletions

File tree

packages/core/src/flag/flag.ts

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ function truthy(key: string) {
66
}
77

88
const OPENCODE_EXPERIMENTAL = truthy("OPENCODE_EXPERIMENTAL")
9-
const OPENCODE_DISABLE_CLAUDE_CODE = truthy("OPENCODE_DISABLE_CLAUDE_CODE")
109
const copy = process.env["OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT"]
1110

1211
export const Flag = {
@@ -23,20 +22,14 @@ export const Flag = {
2322
OPENCODE_DISABLE_TERMINAL_TITLE: truthy("OPENCODE_DISABLE_TERMINAL_TITLE"),
2423
OPENCODE_SHOW_TTFD: truthy("OPENCODE_SHOW_TTFD"),
2524
OPENCODE_PERMISSION: process.env["OPENCODE_PERMISSION"],
26-
OPENCODE_DISABLE_DEFAULT_PLUGINS: truthy("OPENCODE_DISABLE_DEFAULT_PLUGINS"),
27-
OPENCODE_DISABLE_LSP_DOWNLOAD: truthy("OPENCODE_DISABLE_LSP_DOWNLOAD"),
2825
OPENCODE_DISABLE_AUTOCOMPACT: truthy("OPENCODE_DISABLE_AUTOCOMPACT"),
2926
OPENCODE_DISABLE_MODELS_FETCH: truthy("OPENCODE_DISABLE_MODELS_FETCH"),
3027
OPENCODE_DISABLE_MOUSE: truthy("OPENCODE_DISABLE_MOUSE"),
31-
OPENCODE_DISABLE_CLAUDE_CODE,
32-
OPENCODE_DISABLE_CLAUDE_CODE_PROMPT: OPENCODE_DISABLE_CLAUDE_CODE || truthy("OPENCODE_DISABLE_CLAUDE_CODE_PROMPT"),
3328
OPENCODE_FAKE_VCS: process.env["OPENCODE_FAKE_VCS"],
3429
OPENCODE_SERVER_PASSWORD: process.env["OPENCODE_SERVER_PASSWORD"],
3530
OPENCODE_SERVER_USERNAME: process.env["OPENCODE_SERVER_USERNAME"],
36-
OPENCODE_ENABLE_QUESTION_TOOL: truthy("OPENCODE_ENABLE_QUESTION_TOOL"),
3731

3832
// Experimental
39-
OPENCODE_EXPERIMENTAL,
4033
OPENCODE_EXPERIMENTAL_FILEWATCHER: Config.boolean("OPENCODE_EXPERIMENTAL_FILEWATCHER").pipe(
4134
Config.withDefault(false),
4235
),
@@ -45,20 +38,12 @@ export const Flag = {
4538
),
4639
OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT:
4740
copy === undefined ? process.platform === "win32" : truthy("OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT"),
48-
OPENCODE_ENABLE_EXA: truthy("OPENCODE_ENABLE_EXA") || OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_EXA"),
49-
OPENCODE_EXPERIMENTAL_LSP_TOOL: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_LSP_TOOL"),
50-
OPENCODE_EXPERIMENTAL_PLAN_MODE: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_PLAN_MODE"),
51-
OPENCODE_EXPERIMENTAL_SCOUT: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_SCOUT"),
52-
OPENCODE_ENABLE_PARALLEL: truthy("OPENCODE_ENABLE_PARALLEL") || truthy("OPENCODE_EXPERIMENTAL_PARALLEL"),
5341
OPENCODE_MODELS_URL: process.env["OPENCODE_MODELS_URL"],
5442
OPENCODE_MODELS_PATH: process.env["OPENCODE_MODELS_PATH"],
5543
OPENCODE_DB: process.env["OPENCODE_DB"],
56-
OPENCODE_SKIP_MIGRATIONS: truthy("OPENCODE_SKIP_MIGRATIONS"),
57-
OPENCODE_STRICT_CONFIG_DEPS: truthy("OPENCODE_STRICT_CONFIG_DEPS"),
5844

5945
OPENCODE_WORKSPACE_ID: process.env["OPENCODE_WORKSPACE_ID"],
6046
OPENCODE_EXPERIMENTAL_WORKSPACES: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_WORKSPACES"),
61-
OPENCODE_EXPERIMENTAL_EVENT_SYSTEM: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_EVENT_SYSTEM"),
6247
OPENCODE_EXPERIMENTAL_SESSION_SWITCHING: OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_SESSION_SWITCHING"),
6348

6449
// Evaluated at access time (not module load) because tests, the CLI, and

packages/opencode/src/effect/runtime-flags.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ export class Service extends ConfigService.Service<Service>()("@opencode/Runtime
1818
disableChannelDb: bool("OPENCODE_DISABLE_CHANNEL_DB"),
1919
disableEmbeddedWebUi: bool("OPENCODE_DISABLE_EMBEDDED_WEB_UI"),
2020
disableExternalSkills: bool("OPENCODE_DISABLE_EXTERNAL_SKILLS"),
21+
disableLspDownload: bool("OPENCODE_DISABLE_LSP_DOWNLOAD"),
22+
skipMigrations: bool("OPENCODE_SKIP_MIGRATIONS"),
23+
disableClaudeCodePrompt: Config.all({
24+
broad: bool("OPENCODE_DISABLE_CLAUDE_CODE"),
25+
direct: bool("OPENCODE_DISABLE_CLAUDE_CODE_PROMPT"),
26+
}).pipe(Config.map((flags) => flags.broad || flags.direct)),
2127
disableClaudeCodeSkills: Config.all({
2228
broad: bool("OPENCODE_DISABLE_CLAUDE_CODE"),
2329
direct: bool("OPENCODE_DISABLE_CLAUDE_CODE_SKILLS"),

packages/opencode/test/effect/runtime-flags.test.ts

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ describe("RuntimeFlags", () => {
2828
OPENCODE_AUTO_SHARE: "true",
2929
OPENCODE_DISABLE_EMBEDDED_WEB_UI: "true",
3030
OPENCODE_DISABLE_EXTERNAL_SKILLS: "true",
31+
OPENCODE_DISABLE_LSP_DOWNLOAD: "true",
32+
OPENCODE_SKIP_MIGRATIONS: "true",
3133
OPENCODE_EXPERIMENTAL: "true",
3234
OPENCODE_ENABLE_EXA: "true",
3335
OPENCODE_ENABLE_PARALLEL: "true",
@@ -44,6 +46,9 @@ describe("RuntimeFlags", () => {
4446
expect(flags.disableChannelDb).toBe(true)
4547
expect(flags.disableEmbeddedWebUi).toBe(true)
4648
expect(flags.disableExternalSkills).toBe(true)
49+
expect(flags.disableLspDownload).toBe(true)
50+
expect(flags.skipMigrations).toBe(true)
51+
expect(flags.disableClaudeCodePrompt).toBe(false)
4752
expect(flags.enableExa).toBe(true)
4853
expect(flags.enableParallel).toBe(true)
4954
expect(flags.enableExperimentalModels).toBe(true)
@@ -87,6 +92,9 @@ describe("RuntimeFlags", () => {
8792
expect(flags.disableChannelDb).toBe(false)
8893
expect(flags.disableEmbeddedWebUi).toBe(false)
8994
expect(flags.disableExternalSkills).toBe(false)
95+
expect(flags.disableLspDownload).toBe(false)
96+
expect(flags.skipMigrations).toBe(false)
97+
expect(flags.disableClaudeCodePrompt).toBe(false)
9098
expect(flags.disableClaudeCodeSkills).toBe(false)
9199
expect(flags.enableExa).toBe(false)
92100
expect(flags.experimentalIconDiscovery).toBe(false)
@@ -122,6 +130,62 @@ describe("RuntimeFlags", () => {
122130
}),
123131
)
124132

133+
it.effect("disableLspDownload defaults to false", () =>
134+
Effect.gen(function* () {
135+
const flags = yield* readFlags.pipe(Effect.provide(fromConfig({})))
136+
137+
expect(flags.disableLspDownload).toBe(false)
138+
}),
139+
)
140+
141+
it.effect("disableLspDownload reads OPENCODE_DISABLE_LSP_DOWNLOAD", () =>
142+
Effect.gen(function* () {
143+
const flags = yield* readFlags.pipe(Effect.provide(fromConfig({ OPENCODE_DISABLE_LSP_DOWNLOAD: "true" })))
144+
145+
expect(flags.disableLspDownload).toBe(true)
146+
}),
147+
)
148+
149+
it.effect("skipMigrations defaults to false", () =>
150+
Effect.gen(function* () {
151+
const flags = yield* readFlags.pipe(Effect.provide(fromConfig({})))
152+
153+
expect(flags.skipMigrations).toBe(false)
154+
}),
155+
)
156+
157+
it.effect("skipMigrations reads OPENCODE_SKIP_MIGRATIONS", () =>
158+
Effect.gen(function* () {
159+
const flags = yield* readFlags.pipe(Effect.provide(fromConfig({ OPENCODE_SKIP_MIGRATIONS: "true" })))
160+
161+
expect(flags.skipMigrations).toBe(true)
162+
}),
163+
)
164+
165+
it.effect("disableClaudeCodePrompt defaults to false", () =>
166+
Effect.gen(function* () {
167+
const flags = yield* readFlags.pipe(Effect.provide(fromConfig({})))
168+
169+
expect(flags.disableClaudeCodePrompt).toBe(false)
170+
}),
171+
)
172+
173+
it.effect("disableClaudeCodePrompt reads OPENCODE_DISABLE_CLAUDE_CODE_PROMPT", () =>
174+
Effect.gen(function* () {
175+
const flags = yield* readFlags.pipe(Effect.provide(fromConfig({ OPENCODE_DISABLE_CLAUDE_CODE_PROMPT: "true" })))
176+
177+
expect(flags.disableClaudeCodePrompt).toBe(true)
178+
}),
179+
)
180+
181+
it.effect("disableClaudeCodePrompt inherits OPENCODE_DISABLE_CLAUDE_CODE", () =>
182+
Effect.gen(function* () {
183+
const flags = yield* readFlags.pipe(Effect.provide(fromConfig({ OPENCODE_DISABLE_CLAUDE_CODE: "true" })))
184+
185+
expect(flags.disableClaudeCodePrompt).toBe(true)
186+
}),
187+
)
188+
125189
it.effect("experimentalIconDiscovery reads OPENCODE_EXPERIMENTAL_ICON_DISCOVERY", () =>
126190
Effect.gen(function* () {
127191
const flags = yield* readFlags.pipe(Effect.provide(fromConfig({ OPENCODE_EXPERIMENTAL_ICON_DISCOVERY: "true" })))
@@ -242,6 +306,8 @@ describe("RuntimeFlags", () => {
242306
OPENCODE_PURE: "true",
243307
OPENCODE_DISABLE_DEFAULT_PLUGINS: "true",
244308
OPENCODE_DISABLE_EXTERNAL_SKILLS: "true",
309+
OPENCODE_DISABLE_LSP_DOWNLOAD: "true",
310+
OPENCODE_SKIP_MIGRATIONS: "true",
245311
OPENCODE_EXPERIMENTAL: "true",
246312
OPENCODE_ENABLE_EXA: "true",
247313
OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS: "1234",
@@ -256,6 +322,9 @@ describe("RuntimeFlags", () => {
256322
expect(flags.disableChannelDb).toBe(false)
257323
expect(flags.disableEmbeddedWebUi).toBe(false)
258324
expect(flags.disableExternalSkills).toBe(false)
325+
expect(flags.disableLspDownload).toBe(false)
326+
expect(flags.skipMigrations).toBe(false)
327+
expect(flags.disableClaudeCodePrompt).toBe(false)
259328
expect(flags.disableClaudeCodeSkills).toBe(false)
260329
expect(flags.enableExa).toBe(false)
261330
expect(flags.experimentalIconDiscovery).toBe(false)

0 commit comments

Comments
 (0)