Dashboard › opencode › Distillation
f2e0acc8-1879-4ea0-b908-917669a6eafb["lore_tm_v1_oWeIkIKywHmADr7I_63xap3GXO4u8nvbQTHeMH1otDg","lore_tm_v1_RSR1V9n_fYjEq0sAUq38WoAstkDgwhH256ZTfrdLgMM","lore_tm_v1_EAWBGIn7dei62pmrqBYUJlWUtZG9shEZa8ErBB7XBZI","lore_tm_v1_dC5uqmuDfMaJA3GXz-xV6m0tiBR1vBvqAjVBVa2nCnE","lore_tm_v1_L6aQNCp3mJqQ9MGkNh913HWykroM4dm22-n3gr64a2M","lore_tm_v1_Xku9xU6U-oUOXZLc-9zKpEO-SamzLcUV01UVr5Sm_8c","lore_tm_v1_gzsOGHt__fFFKWpRfJgcN4jLtljC5P7aD8Vb-Z5CAng","lore_tm_v1_kDojgdp3EjS3j7C7PDMvn0VjJMG03jfbmLrbPFEDY8g","lore_tm_v1_WAmv3jO52Pcx7PaBCA5SzaRS9M0Xoo1k9TgxogxAF3E","lore_tm_v1_e_aaKdU6sDQ7pufby8bphMb5koQdivblb0dAEmdQYLY","lore_tm_v1_rLcz45f5SZaSGcwHYv4SyOLa2C5RARQjPCVvBTufTFI"]
Date: Sep 8, 2026
/home/byk/.local/share/opencode-v2-pilot/supervisor/go.sum has exactly 7 lines and pins github.com/coreos/go-systemd/v22 v22.5.0 (h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=), its go.mod sum (h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=), github.com/godbus/dbus/v5 v5.1.0 (h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=), its go.mod sum (h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=), an additional github.com/godbus/dbus/v5 v5.0.4/go.mod entry with the same sum, and golang.org/x/sys v0.20.0 (h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=) plus its go.mod sum (h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=)./home/byk/.local/share/opencode-v2-pilot/config/opencode/package.json is private ESM configuration with runtime dependency effect: "4.0.0-rc.112" and dev dependency @types/bun: "1.2.21".Context/define-related matches across the repository, including plugin APIs under packages/plugin/src/{promise,effect,tui}, client API types under packages/client/src/{promise/generated/types.ts,effect/api/api.ts}, schema/core/sdk exports, CLI configuration, AI protocol types, desktop IPC context, and app composer/e2e types./home/byk/Code/opencode-v2-pilot/packages/plugin/src/index.ts does not exist; the package root export instead maps "." to ./src/promise/index.ts./home/byk/Code/opencode-v2-pilot/packages/plugin/src enumeration includes root files worktree.ts, storage.ts, source.ts, source.node.ts, source.bun.ts, rpc.ts, host.ts, README.md, options.ts, and app.ts; tui/ contains context.ts, solid.ts, plugin.ts, index.ts; promise/ contains worktree.ts, websearch.ts, vcs.ts, tool.ts, storage.ts, skill.ts, session.ts, rpc.ts, registration.ts, reference.ts, plugin.ts, permission.ts, mcp.ts, integration.ts, index.ts, event.ts, command.ts, catalog.ts, aisdk.ts, agent.ts, adapter.ts, types.ts, shell.ts; effect/ contains worktree.ts, websearch.ts, vcs.ts, tool.ts, storage.ts, skill.ts, session.ts, rpc.ts, registration.ts, reference.ts, plugin.ts, permission.ts, mcp.ts, integration.ts, index.ts, event.ts, command.ts, catalog.ts, aisdk.ts, agent.ts, README.md, PLAN.md, and shell.ts./home/byk/Code/opencode-v2-pilot/packages/plugin/package.json identifies @opencode/plugin version 1.18.15, ESM, MIT; scripts are test: "bun test --only-failures", typecheck: "tsgo --noEmit", and build: "tsc -p tsconfig.build.json".@opencode/plugin exports "." β "./src/promise/index.ts", "./effect" β "./src/effect/index.ts", "./host" β "./src/host.ts", "./tui" β "./src/tui/index.ts", and "./*" β "./src/*.ts"; conditional import #plugin-source maps Bun to ./src/source.bun.ts and Node/default to ./src/source.node.ts; published files are limited to dist.@opencode/plugin dependencies are @ai-sdk/provider: 3.0.8, workspace packages @opencode/ai, @opencode/client, @opencode/protocol, @opencode/schema, @opencode/util, plus catalog dependencies @standard-schema/spec, effect, and zod; optional peers are @opencode/theme: workspace:*, @opentui/core >=0.5.10, @opentui/solid >=0.5.10, and solid-js >=1.9.0.@opencode/plugin dev dependencies are workspace @opencode/theme and catalog packages @opentui/core, @opentui/solid, @tsconfig/bun, @tsconfig/node22, @types/bun, @types/node, solid-js, typescript, and @typescript/native-preview.@opencode/client/effect/api, must not redefine functions already present there, and may add only plugin-context-specific functions.bun run generate from packages/client after changing the public Protocol or Server HttpApi; generated client files must never be edited directly.sdk composes Client, Core, and Server.packages/core, packages/cli, packages/server, packages/protocol, packages/schema, and required related generated client surfaces..changeset files must not be added and the existing release workflow must be followed.v2; new branches/worktrees and pull-request targets default to v2, or origin/v2 when local v2 is unavailable; local main may not exist and diffs should use v2 or origin/v2 unless another base/target is explicitly requested.feat/ or fix/; examples are session-recovery, fix-scroll-state, and regenerate-sdk.type(scope): summary form, with valid types feat, fix, docs, chore, refactor, and test; scopes are optional and may include core, opencode, tui, app, desktop, sdk, or plugin.bun run dev:live [directory] from a development worktree, preferred over bun run dev; it discovers the elected server through opencode2 service status, obtains its credential with opencode2 service get password, and uses the dev TUI storage channel. Explicit --server warns and continues on client/server version mismatch instead of allowing an implicit managed-service replacement.packages/tui/src/feature-plugins/system/storybook, registered in index.tsx, and to render the real production component with story-local side effects; meaningful state dimensions must be exposed through keybindings listed in StoryFooter, with a reset command where combinations can become confusing.OPENCODE_STORY=<story-id> bun run dev:live; layout-relevant stories must be exercised at narrow and wide terminal sizes.theme.hue values and unrelated semantic tokens must not be repurposed. text.feedback and background.feedback are only for outcome/status feedback; formfield states are for form-control text, ordinals, and selection markers; action states are for actions.try/catch and any, using Bun APIs such as Bun.file(), relying on inference, preferring functional array methods (flatMap, filter, map) over loops, and using filter type guards to preserve downstream inference.src/config modules to follow the self-export pattern such as export * as ConfigAgent from "./agent".yield* (yield* Foo.Service).bar().import { foo as bar } or resolve as pathResolve.import("...") references such as Schema.declare<import("@opencode/plugin/effect/plugin").Plugin["effect"]>. An aliased type import such as import type { Plugin as PluginDefinition } is permitted only as a last resort for a genuine name collision and is still strongly discouraged.import * as Foo and import type * as Foo; namespace-style values must use a moduleβs own named exported namespace, for example import { Project } from "@opencode/core/project" and Project.ID.await import("./module").then(...) or (await import("./module")).value() must be avoided.const over let, ternaries or early returns over reassignment, and early returns over else.Effect only when actually effectful.Schema.UnknownFromJsonString and Schema.decodeUnknownOption over manual JSON.parse wrapped in Effect.try for untrusted JSON strings, and comments only for non-obvious constraints or surprising behavior.snake_case directly, avoiding camelCase properties with repeated explicit SQL column-name strings.packages/core, never repository root because of the do-not-run-tests-from-root guard; tests should avoid mocks and globalThis.* unless no alternative exists, exercise actual implementation, and not duplicate implementation logic.bun typecheck from package directories such as packages/core, never tsc directly.Session.prompt(...) publishes session.inbox.enqueued, whose projection inserts one durable session_inbox row before advisory SessionExecution.wake(sessionID), unless resume: false requests admit-only behavior; session.inbox.delivered consumes the inbox row and inserts the visible message in the same transaction, so session_inbox stores only unconsumed work.SessionExecution to remain process-global and Session-ID based; its local implementation owns the process-local Session coordinator and discovers placement through SessionStore plus LocationServiceMap.get(session.location) only when drain starts; no layer should take a Session ID. V2 interruption targets the active process-local ownership chain; known idle or locally unowned Session interruption is a no-op, while the public API rejects unknown Sessions.SessionRunner, model resolution, tool registry, permissions, and filesystem to remain Location-scoped; omitted Location.workspaceID means implicit-local placement and explicit workspace identity is reserved for future placement semantics.llm.stream(request) call per Physical Attempt and projected history reload before durable continuation. A logical Step may use generic pre-output retries, one full-context retry after continuation rejection, incomplete-stream continuation, or one overflow-compaction rebuild; generic retries retain the logical step number and do not consume another agent-step allowance. Orchestration must not be delegated to an in-memory tool loop.SessionRunCoordinator joins explicit same-Session resumes, coalesces prompt wakeups, and allows different Sessions concurrently. A write-ahead execution claim marks a process-local busy period for restart recovery: terminal completion/failure/user interruption releases it, while shutdown interruption/process death preserve it; startup recovery resumes claimed top-level Sessions with durable per-execution attempt accounting. The claim is not clustered ownership, fencing, or exactly-once.src/instructions; instruction producers remain with observed domains; Session owns History selection plus InstructionState and InstructionEntry persistence. InstructionDiscovery observes ambient global and upward-project instructions, and the runner explicitly composes built-ins, discovery, guidance, and entries in loadInstructions; there is no instruction registry.session.instructions.updated stores changed source keys/content hashes and may freeze rendered chronological update text; blob values live once in instruction_blob, while projected instruction_state is the normal boundary-processing source of current/initial values. Request assembly renders the epoch baseline from stored values; later frozen updates enter history as durable System messages. Completed compaction moves the instruction epoch; Session movement retains it; committed revert clears it; forks adopt the parentβs newest instruction values even if copied history ends earlier; unavailable sources retain their last value and block only the initial complete delta.bin/opencode-pty-supervisor = c5c09ece21c802868721dfc3e2610496ad9630c1b3a4c258104bc92b2bd9aca1; bin/opencode-pty-launcher = d833c859476f021565e8f425e6ee51353909060fa5f64ce629fb07d3411987dd; bin/opencode-pty-client = fb8739d98ff7882782005e04ef731b6120e8daf0719e606362a1fe620adc2cde.bin/opencode-pty-supervisor is byk:byk, mode 755, size 4,407,495, mtime 2026-09-08 06:38:38.491406077 +0000; bin/opencode-pty-launcher is byk:byk, mode 755, size 2,098,942, mtime 2026-09-08 06:38:38.512405908 +0000; bin/opencode-pty-client is byk:byk, mode 755, size 2,109,912, mtime 2026-09-08 06:38:38.524405811 +0000. All 3 are statically linked x86-64 ELF SYSV executables with debug_info and are not stripped.go1.22.2 linux/amd64. All 3 binaries report Go 1.22.2, module opencode-pty-supervisor (devel), -buildmode=exe, -compiler=gc, -trimpath=true, CGO_ENABLED=0, GOARCH=amd64, GOOS=linux, and GOAMD64=v1.opencode-pty-supervisor/cmd/supervisor includes github.com/coreos/go-systemd/v22 v22.5.0, github.com/godbus/dbus/v5 v5.1.0, and golang.org/x/sys v0.20.0 with their pinned sums; launcher path opencode-pty-supervisor/cmd/launcher and client path opencode-pty-supervisor/cmd/client each include golang.org/x/sys v0.20.0.go.mod d1d088bdd65f99056657717658d3336ae233acd2ad39fa998ebe8a773f68348e; go.sum dad6a6773121326ee41a6a081cf310444b6fcd3540f28f4b3f31de559d31726b; internal/protocol/frame.go 83ef89be747e6c1bd51ba1474307980dd4e9d4c1d17360be1c02538c990f832d; internal/protocol/frame_test.go c7c45eeaf44411bd6fe87998fce153cb8decda5df7d7e805fad9dc6f6cdfd591; internal/supervisor/auth.go 7e87448cedd42966156ecd3a17e654ccec15e11d276ccdcf014c0fa66b49a974; internal/supervisor/auth_test.go 9fc722a3e84e6a445c66a031882fc40ae6fc1f0216c21cd0e50770621bd6c7eb; internal/supervisor/server.go 6e4230fcd20b8f5cdc6d417776ba1ea0bd6032882f358352ba1fd46bd71b6589; internal/supervisor/server_test.go 7ef99b1f2cb77bf573327688d7ac734e712c4560154eee504a72203676a0285b; internal/supervisor/systemd.go 7e1c6de7d917b584e207788899d9af5a96b262a5a7b52fcf8f1196dcfc0188cf; internal/supervisor/systemd_test.go eede59ca6e0927c9ab8524b7a10cc59a32b0332250d7d45210f5c22f114ce4e1.cmd/client/main.go 9471c8c9dd2a8c00274e1e6ecc89983377c3810e2a7ad47b962df19ce6d2995b; cmd/client/main_test.go 506fe06b72e9859bdd101b2c048b63c6b866a290a1ab27311ccaff9bdd23658b; cmd/launcher/main.go c5fef296d93af561b99284f9e73bdd9569d8501f92bd34bf47a10ae2fe03f41b; cmd/launcher/main_test.go e584ce5e320bc8c9dc6c250c548bbae517fa6ecdc721a5813cd6bb148fc3b090; cmd/supervisor/main.go d7381fa5feeacacbf94cddbf36539f8544ccab9705fa4b7906207726d67c387d; opencode-pty-supervisor.service 63414c4afc3e4bad52d4738e9bfd1886a312012663dd4eb7390481cc50636239; opencode-pty.slice 5f03c865c17fbb54e2fa3a0e0c7cbf899ad4509228d1a7262aaa4ea3387b9e20; PROTOCOL.md 2a588cef62538063cbe7f3dbc27305a7e8e2511a59a86c6cec6b5b18b1b2275f; ROOT-ACCEPTANCE.md 9f70a745367e68d0f35aa14cb5048b8c83652cf10e279539ab16f25037757f1a; ../config/opencode/plugins/pty.ts f4f31124e753d11682f45aceef4c9344965de44b74b7afc4bb62968f469f52af; ../config/opencode/plugins/pty-transport.ts c8a117e96de883f01762765b21c3f2abeb09af9e22c74d5cf503b3204bb49f2d; ../opencode-v2.service c93e779848222afc2b96540f626a9f2b66a83cb38b459d25682269d1fc4b8928; ../CUTOVER.md c6e731ef91d2ba97805685ec10ebb31c3baad8021b2c9bf5b327ab456691680f.1.22.2, -trimpath, CGO_ENABLED=0, and the exact module sums in go.sum; next action is checking implementation against dependency/runtime contracts before rebuilding.