feat(aircoding): AirCoding V2 baseline — deterministic multi-agent architecture
Forked from OpenCode v1.17.4 with multi-agent system: - 5 agents: aircoding, scheduler, worker, architect, reviewer - Deterministic DAG scheduling engine (coordinator_tick) - Tool whitelists as hard enforcement - AirCoding validation plugin - V1 requirements: C4 docs, ADR, AGENTS.md, debug-log.md - Design documents in docs/
This commit is contained in:
48
packages/desktop/electron-builder.config.test.ts
Normal file
48
packages/desktop/electron-builder.config.test.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import { expect, test } from "bun:test"
|
||||
import type { Configuration } from "electron-builder"
|
||||
|
||||
const legacyDesktopEntry = "resources/linux/opencode-desktop.desktop"
|
||||
|
||||
const channels = [
|
||||
{ channel: "dev", appId: "ai.opencode.desktop.dev" },
|
||||
{ channel: "beta", appId: "ai.opencode.desktop.beta" },
|
||||
{ channel: "prod", appId: "ai.opencode.desktop" },
|
||||
] as const
|
||||
|
||||
for (const channel of channels) {
|
||||
test(`uses one Linux desktop identity for ${channel.channel}`, async () => {
|
||||
const previous = process.env.OPENCODE_CHANNEL
|
||||
process.env.OPENCODE_CHANNEL = channel.channel
|
||||
|
||||
const module = await import(`./electron-builder.config.ts?channel=${channel.channel}`)
|
||||
const config = module.default as Configuration
|
||||
|
||||
if (previous === undefined) delete process.env.OPENCODE_CHANNEL
|
||||
else process.env.OPENCODE_CHANNEL = previous
|
||||
|
||||
expect(config.appId).toBe(channel.appId)
|
||||
expect(config.extraMetadata?.desktopName).toBe(`${channel.appId}.desktop`)
|
||||
expect(config.linux?.executableName).toBe(channel.appId)
|
||||
expect(config.linux?.desktop?.entry?.StartupWMClass).toBe(channel.appId)
|
||||
})
|
||||
}
|
||||
|
||||
test("keeps a hidden prod launcher for old Linux pins", async () => {
|
||||
const previous = process.env.OPENCODE_CHANNEL
|
||||
process.env.OPENCODE_CHANNEL = "prod"
|
||||
|
||||
const module = await import("./electron-builder.config.ts?compat=prod")
|
||||
const config = module.default as Configuration
|
||||
|
||||
if (previous === undefined) delete process.env.OPENCODE_CHANNEL
|
||||
else process.env.OPENCODE_CHANNEL = previous
|
||||
|
||||
expect(config.deb?.fpm?.[0]).toEndWith(`${legacyDesktopEntry}=/usr/share/applications/opencode-desktop.desktop`)
|
||||
expect(config.rpm?.fpm?.[0]).toEndWith(`${legacyDesktopEntry}=/usr/share/applications/opencode-desktop.desktop`)
|
||||
|
||||
const desktop = await Bun.file(legacyDesktopEntry).text()
|
||||
expect(desktop).toContain("Exec=/opt/OpenCode/ai.opencode.desktop %U")
|
||||
expect(desktop).toContain("Icon=ai.opencode.desktop")
|
||||
expect(desktop).toContain("StartupWMClass=ai.opencode.desktop")
|
||||
expect(desktop).toContain("NoDisplay=true")
|
||||
})
|
||||
Reference in New Issue
Block a user