Dashboard › opencode › Distillation
6b4e89e4-54d6-4168-9e5c-54f150c6ab7e["lore_tm_v1_mzp9lUiAPhj6kIv9pSC034YDW8-6_a3yBFJSmlkIxQM","lore_tm_v1_gc90kVYPoESoKglSnpBPB1GyF-aZO9nEtPsERRFVwXA","lore_tm_v1_FqGlWpzqV2ilmW0xKFQqs6tJJb9VywzEXw8H2Qvk5iM","lore_tm_v1_G4PiVsdA3E7Lf5-QwJlAlFNruHcid1nqGuHMJAfT_Ss","lore_tm_v1__5CdfKyuS24koq7B7I61e-1DFb4IpYey5vb8U0LbO0s","lore_tm_v1_WJOd9B3SytSvJQhuIHc4ptIHuj61IPTvJVKaCwVCoNI"]
Date: Sep 8, 2026
/home/byk/Code/opencode-v2-pilot and every line of the isolated plugin /home/byk/.local/share/opencode-v2-pilot/config/opencode/plugins/pty.ts; requested current file:line evidence, classification as PASS/CONCERN/MUST-FIX, and an ending of exactly MERGE or DO-NOT-MERGE.ctx.permission.assert, fixed environment, canonical/revalidated cwd, per-owner/global limits, close-based completion, awaited TERM-to-KILL cleanup, stream error handling, bounded writes, linear paged reads, and bounded grep.packages/core/src/plugin/host.ts, packages/core/test/plugin.test.ts, packages/core/test/plugin/host.ts, and packages/plugin/src/promise/adapter.ts, plus untracked packages/cli/dist-v2-pilot-final/; additional status/diff content was elided.retains Promise plugin groups for later registrations and ignores a disabled group's attempts, using plugin ID promise-plugin; its deferred ctx.command.transform adds command late, throws Error("late Promise failure"), expects plugin state status: "failed" with an error containing command.transform, and verifies command late remains undefined across repeated registration attempts.messageID: "msg_plugin_permission" and an invocation using Session.ID.make("ses_plugin"), prompt { text: "" }, and delivery "steer"./home/byk/Code/opencode-v2-pilot/services/www/src/docs/AGENTS.md, /home/byk/Code/opencode-v2-pilot/services/www/AGENTS.md, /home/byk/Code/opencode-v2-pilot/AGENTS.md, /home/byk/Code/opencode-v2-pilot/packages/desktop/AGENTS.md, /home/byk/Code/opencode-v2-pilot/packages/ui/AGENTS.md, /home/byk/Code/opencode-v2-pilot/packages/core/src/tool/AGENTS.md, /home/byk/Code/opencode-v2-pilot/packages/stats/AGENTS.md, /home/byk/Code/opencode-v2-pilot/packages/tui/AGENTS.md, /home/byk/Code/opencode-v2-pilot/packages/session-ui/AGENTS.md, /home/byk/Code/opencode-v2-pilot/packages/schema/AGENTS.md, /home/byk/Code/opencode-v2-pilot/packages/plugin/AGENTS.md, /home/byk/Code/opencode-v2-pilot/packages/ai/AGENTS.md, /home/byk/Code/opencode-v2-pilot/packages/codemode/AGENTS.md, /home/byk/Code/opencode-v2-pilot/packages/cli/AGENTS.md, /home/byk/Code/opencode-v2-pilot/packages/app/AGENTS.md, /home/byk/Code/opencode-v2-pilot/packages/app/e2e/performance/AGENTS.md, and /home/byk/Code/opencode-v2-pilot/packages/app/e2e/AGENTS.md.bun run generate from packages/client after changing the public Protocol or Server HttpApi; generated client files must not be edited directly.sdk composes Client, Core, and Server.packages/core, packages/cli, packages/server, packages/protocol, packages/schema, and related generated client surfaces when required..changeset files and use the existing release workflow.v2; new branches/worktrees default to v2 or origin/v2 if local v2 is unavailable, pull requests default to target v2, and diffs should use v2 or origin/v2 because local main may not exist.feat/ or fix/; examples are session-recovery, fix-scroll-state, and regenerate-sdk.type(scope): summary; valid types are feat, fix, docs, chore, refactor, and test, with optional scopes such as core, opencode, tui, app, desktop, sdk, or plugin.import { foo as bar } from "..." or resolve as pathResolve.import("...") references, including forms such as Schema.declare<import("@opencode/plugin/effect/plugin").Plugin["effect"]>; only a genuine name collision with no alternative permits an aliased type import such as import type { Plugin as PluginDefinition } from "...", and even then it is strongly disfavored.import * as Foo from "..." and import type * as Foo from "...".import { Project } from "@opencode/core/project", then use Project.ID.await import("./module").then((mod) => mod.value()) or (await import("./module")).value() should be avoided.bun typecheck always be run from package directories such as packages/core, never tsc directly.do-not-run-tests-from-root guard; tests must run from package directories such as packages/core.globalThis.* should not be used unless it is the only option, and implementation logic must not be duplicated into tests.try/catch and any; prefer Bun APIs, inference, functional array methods, const, early returns, and dot notation over unnecessary destructuring; avoid else; and inline single-use values to reduce variable count.yield* (yield* Foo.Service).bar().Schema.UnknownFromJsonString and Schema.decodeUnknownOption rather than manual JSON.parse wrapped in Effect.try for untrusted JSON strings, and comment only on non-obvious constraints or surprising behavior.@opencode/client/effect/api, prohibits redefining functions already present on that interface, and permits plugin domains to add only functions meaningful in plugin context.