Explorar o código

fix(plugin): retain legacy kv api shape

Dax Raad hai 1 mes
pai
achega
9db5073eab

+ 9 - 0
packages/plugin/src/tui.ts

@@ -358,6 +358,13 @@ export type TuiTheme = {
   readonly ready: boolean
 }
 
+/** @deprecated Persistent TUI KV storage is not supported in V2. */
+export type TuiKV = {
+  get: <Value = unknown>(key: string, fallback?: Value) => Value
+  set: (key: string, value: unknown) => void
+  readonly ready: boolean
+}
+
 export type TuiState = {
   readonly ready: boolean
   readonly config: SdkConfig
@@ -623,6 +630,8 @@ export type TuiPluginApi = {
     dialog: TuiDialogStack
   }
   readonly tuiConfig: Frozen<TuiConfigView>
+  /** @deprecated Persistent TUI KV storage is not supported in V2. */
+  kv: TuiKV
   state: TuiState
   theme: TuiTheme
   client: OpencodeClient

+ 3 - 0
packages/tui/src/attention.ts

@@ -5,6 +5,7 @@ import type {
   TuiAttentionNotifyResult,
   TuiAttentionNotifySkipReason,
   TuiAttentionWhen,
+  TuiKV,
   TuiAttentionSoundName,
   TuiAttentionSoundPack,
   TuiAttentionSoundPackInfo,
@@ -113,6 +114,8 @@ export function createTuiAttention(input: {
   renderer: AttentionRenderer
   config: Pick<Config.Resolved, "attention">
   update?: Config.Interface["update"]
+  /** @deprecated Ignored. Sound-pack persistence uses CLI config. */
+  kv?: TuiKV
   audio?: Pick<typeof TuiAudio, "loadSoundFile" | "play">
 }): TuiAttentionHost {
   let focus: FocusState = "unknown"

+ 8 - 0
packages/tui/src/plugin/adapters.tsx

@@ -289,6 +289,14 @@ export function createTuiApiAdapters(input: Input): Omit<TuiPluginApi, "lifecycl
     get tuiConfig() {
       return input.tuiConfig
     },
+    kv: {
+      get(_key, fallback) {
+        if (fallback === undefined) throw new Error("Persistent TUI KV storage is not supported")
+        return fallback
+      },
+      set() {},
+      ready: true,
+    },
     state: stateApi(input.sync, input.data),
     get client() {
       return input.sdk.client