Dashboard › opencode › Distillation
f3a43809-db06-4a82-94d4-6adfbd1001eb["lore_tm_v1_9_cNWlMK2VszHWvuVCMDWS5YtgP4TlplVLmjA7q3Rbw","lore_tm_v1_DA72J1Ye4Vj2-nI3p1-OpKpaAc3FNG02JgOyZwE992Y","lore_tm_v1_zjDmhcDdQoa2gzs8P-8bovTRgmOhgA7G-vwPVIrrF9I","lore_tm_v1_Ir5QM79xY_PDpnyz_ekeE-hrebx7cAxbqSe5ZCBpvns","lore_tm_v1_G5tNW1FxdotU4uzM-OS_oCTPWbZvA7PWA-G1oaJ97bk","lore_tm_v1_e02Ax8tjYsZtByu2-qT4dPqOlMmCiaEGohunAGDxneM"]
/home/byk/Code/opencode-lore-v2/packages/core/script/build.ts:1-18 documents 2 publishable ESM targets: dist/node/index.js using node:sqlite and dist/bun/index.js using bun:sqlite; esbuild resolves #db/driver with conditions: ["node"] or conditions: ["bun"]; declarations are emitted separately by tsc; and the Node/tsx build does not require Bun./home/byk/Code/opencode-lore-v2/packages/core/script/build.ts:25-31 derives packageDir as packages/core, removes the entire previous dist recursively with force, and recreates it to prevent stale files entering published tarballs./home/byk/Code/opencode-lore-v2/packages/core/script/build.ts:33-63 bundles pure-JS dependencies such as remark, mdast-*, uuidv7, and zod, while preserving exactly 5 external patterns/packages: node:*, bun:*, onnxruntime-node, sharp, and sqlite-vec. sqlite-vec must remain external so getLoadablePath() resolves its platform optional dependency and native vec0.{so,dylib,dll} rather than silently degrading vector search./home/byk/Code/opencode-lore-v2/packages/core/script/build.ts:54-63 common esbuild options are bundle: true, format: "esm", target: "esnext", sourcemap: true, logLevel: "info", and legalComments: "inline"./home/byk/Code/opencode-lore-v2/packages/core/script/build.ts:65-108 defines buildTarget(target: "node" | "bun") with conditions: [target] and platform: "node" for both targets. Each target independently bundles exactly 3 entry points: src/index.ts → dist/{target}/index.js, src/embedding-worker.ts → dist/{target}/embedding-worker.js, and src/vector-worker.ts → dist/{target}/vector-worker.js; the worker files are standalone bundles loaded through new Worker(url)./home/byk/Code/opencode-lore-v2/packages/core/script/build.ts:110-131 builds Node and Bun concurrently via Promise.all([buildTarget("node"), buildTarget("bun")]), runs tsc -p tsconfig.build.json from packages/core, then, when dist/types/index.d.ts exists, recursively copies the complete dist/types tree into both dist/node and dist/bun so declaration re-exports resolve./home/byk/Code/opencode-v2-pilot/packages/core/src/plugin/promise.ts has exactly 2 exports: namespace export PluginPromise from ./promise.js, and named export fromPromise from @opencode/plugin/promise/adapter./home/byk/Code/opencode-lore-v2/packages/opencode/node_modules/@opencode/plugin/dist/promise/adapter.js:5-42 caches compiled endpoints in a WeakMap, defines ReturnedRpcError carrying type and data, and implements makeStreams() so each async iterator tracks a close callback, responds to optional abort signals, closes when iteration ends/errors, removes its abort listener, and is finalized when the plugin unloads./home/byk/Code/opencode-lore-v2/packages/opencode/node_modules/@opencode/plugin/dist/promise/adapter.js:43-100 implements Promise RPC adaptation: client methods run local Effect methods with optional abort signals; event subscriptions expose async iterators and events.on() returns an aborting unsubscribe function; register() wraps Promise handlers in Effect.tryPromise; context.error(type, message, data) is represented through ReturnedRpcError; and registrations expose Promise-based dispose() and events.emit()./home/byk/Code/opencode-lore-v2/packages/opencode/node_modules/@opencode/plugin/dist/promise/adapter.js:106-141 implements compileEndpoint(endpoint) with WeakMap memoization, rejects more than 1 payload schema or more than 1 success schema using Unsupported API schema cardinality: ${endpoint.identifier}, decodes params/query/headers/payload schemas, defaults success to HttpApiSchema.NoContent, unwraps a sole { data: ... } success property when applicable, and stores decode functions, output encoder, and noContent./home/byk/Code/opencode-lore-v2/packages/opencode/node_modules/@opencode/plugin/dist/promise/adapter.js:143-195 documents and implements fromPromise(plugin) as an adapter into the existing Effect-only runtime. It preserves plugin id, dynamically imports ClientApi and OpenCodeEvent, captures the Effect context, ties async setup registrations to plugin scope, normalizes API input through a JSON encode/decode round trip before endpoint decoding, returns undefined for no-content endpoints, and schema-encodes other results./home/byk/Code/opencode-lore-v2/packages/opencode/node_modules/@opencode/plugin/dist/promise/adapter.js:157-172 resolves endpoint groups for exactly 15 domains: 1. server.agent, 2. server.command, 3. server.experimental, 4. server.generate, 5. server.integration, 6. server.mcp, 7. server.model, 8. server.plugin, 9. server.permission, 10. server.provider, 11. server.reference, 12. server.session, 13. server.skill, 14. server.vcs, 15. server.websearch, plus server.worktree./home/byk/Code/opencode-lore-v2/packages/opencode/node_modules/@opencode/plugin/dist/promise/adapter.js:199-432 constructs the Promise plugin context with adapters for app, location, options, agent, aisdk, catalog, command, event, experimental.terminal, generate, integration, mcp, permission, plugin, reference, rpc, skill, storage, tool, vcs, websearch, worktree, session, and shell./home/byk/Code/opencode-lore-v2/packages/opencode/node_modules/@opencode/plugin/dist/promise/adapter.js:224-236 adapts command definitions by wrapping execute() in Effect.tryPromise, and exposes events by schema-encoding each event as OpenCodeEvent before returning it through the stream adapter./home/byk/Code/opencode-lore-v2/packages/opencode/node_modules/@opencode/plugin/dist/promise/adapter.js:245-297 adapts integration list/get, key connection, OAuth connect/status/complete/cancel, command connect/status/cancel, transforms, reload, and connection active/resolve. Integration authorization callbacks distinguish mode === "auto" callbacks with no code from callbacks receiving code, and optional credential refresh is Promise-wrapped./home/byk/Code/opencode-lore-v2/packages/opencode/node_modules/@opencode/plugin/dist/promise/adapter.js:323-357 directly Promise-wraps storage get, set, remove, and scan; tool transforms convert Effect executors to Promise executors for list/get, convert Promise executors back to Effects for add/update, preserve output and options during updates, and Promise-wrap tool hooks./home/byk/Code/opencode-lore-v2/packages/opencode/node_modules/@opencode/plugin/dist/promise/adapter.js:358-412 adapts VCS methods get, base, branches, status, and diff, with VCS transforms wrapping provider info, optional base, branches, status, and diff using abort-aware attempt(); similarly, web-search provider execution and worktree create/remove/list operations are abort-aware./home/byk/Code/opencode-lore-v2/packages/opencode/node_modules/@opencode/plugin/dist/promise/adapter.js:413-432 adapts exactly 13 session operations: 1. create, 2. get, 3. switchAgent, 4. switchModel, 5. prompt, 6. generate, 7. command, 8. synthetic, 9. interrupt, 10. rename, 11. move, 12. wait, 13. context; it also adapts session and shell hooks./home/byk/Code/opencode-lore-v2/packages/opencode/node_modules/@opencode/plugin/dist/promise/adapter.js:433-443 manages plugin.setup(context2) with Effect.acquireRelease; an optional returned cleanup function runs on release. attempt() maps Promise rejection causes directly into the Effect error channel, while executePromiseTool() adapts tool progress updates through Effect.runPromise(context.progress(update))./home/byk/Code/opencode-v2-pilot/packages/core/src/plugin/hooks.ts:13-30 defines hook domains aisdk, session, permission, shell, and tool. All failure channels are never except tool, which uses ToolFailures; the comment specifies only tool execute.before may fail, with Tool.Error rejecting the call before execution./home/byk/Code/opencode-v2-pilot/packages/core/src/plugin/hooks.ts:35-39 defines eventProviderID(event), which returns event.model.providerID only when the nested values are non-null objects and providerID is a string; otherwise it returns undefined./home/byk/Code/opencode-v2-pilot/packages/core/src/plugin/hooks.ts:42-59 exposes a hook service interface with has(domain, name, providerID?), scoped register(domain, name, callback, options?), and trigger(domain, name, event), where trigger returns the same event after callbacks./home/byk/Code/opencode-v2-pilot/packages/core/src/plugin/hooks.ts:61-110 identifies the service as @opencode/PluginHooks; stores ordered callback arrays in a Map keyed as ${domain}.${String(name)}; makes disposal idempotent; registers disposal as a scope finalizer; executes matching callbacks sequentially; filters provider-specific hooks against event.model.providerID; and makes has() true for either a provider-agnostic entry or one matching the supplied providerID./home/byk/Code/opencode-v2-pilot/packages/core/src/plugin/hooks.ts:112 exports node = makeLocationNode({ service: Service, layer, deps: [] }).gitRemote, x-lore-project, or x-lore-git-remote across /home/byk/Code/opencode-lore-v2/packages/gateway/src/translate/types.ts, synthetic-tools.ts, pipeline.ts, session-metadata.ts, api.ts, cli/data.ts, and config.ts./home/byk/Code/opencode-lore-v2/packages/gateway/src/translate/types.ts includes optional gitRemote?: string at line 540 and recognizes headers "x-lore-project" and "x-lore-git-remote" at lines 799-800./home/byk/Code/opencode-lore-v2/packages/gateway/src/synthetic-tools.ts:534-615 includes optional gitRemote?: string; comments state resolution from git config or [remote "origin"] only yields gitRemote; resolved raw URLs are passed through normalizeRemoteUrl()./home/byk/Code/opencode-lore-v2/packages/gateway/src/pipeline.ts propagates gitRemote through project creation/adoption, session state, path resolution, project moves, provisional-project reattribution, request setup, and trusted adoption. It prefers result.gitRemote ?? sessionState.gitRemote, stores newly discovered remotes in session state, and uses marker-derived project paths when x-lore-project is absent./home/byk/Code/opencode-lore-v2/packages/gateway/src/api.ts:107-109 reads the git_remote URL query parameter and resolves a project with resolveProjectByRemoteOrPath(gitRemote, pathParam)./home/byk/Code/opencode-lore-v2/packages/gateway/src/cli/data.ts prints project git remotes, obtains them with getGitRemote(projectPath), normalizes them with normalizeRemoteUrl(), and sends body.git_remote = normalizeRemoteUrl(gitRemote) ?? gitRemote when present./home/byk/Code/opencode-lore-v2/packages/gateway/src/config.ts:1178-1320 carries optional gitRemote through project-path inference, extracts it using extractGitRemoteHeader(headers), allows inferred/header project paths to include it, reads raw headers["x-lore-git-remote"], and separately reads headers["x-lore-project"].