@qilin-agent/client-ui-conversation 3.1.5 → 3.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.i18n.yaml +2 -2
  2. package/README.md +5 -3
  3. package/README.zh.md +5 -3
  4. package/lib/client.js +4636 -337
  5. package/lib/index.js +13 -9
  6. package/lib/types/client/contract/conversation.d.ts +10 -0
  7. package/lib/types/client/contract/draft-editor.d.ts +23 -0
  8. package/lib/types/client/contract/input.d.ts +34 -10
  9. package/lib/types/client/contract/records.d.ts +8 -3
  10. package/lib/types/client/contract/slots.d.ts +11 -2
  11. package/lib/types/client/contract/views.d.ts +2 -1
  12. package/lib/types/client/conversation/assembler.d.ts +3 -0
  13. package/lib/types/client/draft.d.ts +22 -0
  14. package/lib/types/client/index.d.ts +2 -2
  15. package/lib/types/client/input/decorations.d.ts +1 -1
  16. package/lib/types/client/input/editor/CommandChip.d.ts +13 -0
  17. package/lib/types/client/input/editor/command-chip-node.d.ts +87 -0
  18. package/lib/types/client/input/editor/command-chip-selection.d.ts +20 -0
  19. package/lib/types/client/input/editor/projection.d.ts +3 -0
  20. package/lib/types/client/input/editor/runtime.d.ts +19 -11
  21. package/lib/types/client/input/editor/text-ref.d.ts +2 -7
  22. package/lib/types/client/input/facade.d.ts +50 -17
  23. package/lib/types/client/input/hub.d.ts +2 -1
  24. package/lib/types/client/input/machine.d.ts +9 -5
  25. package/lib/types/client/locales.d.ts +2 -16
  26. package/lib/types/client/skeleton/DefaultConversationViews.d.ts +2 -2
  27. package/lib/types/client/stores.d.ts +8 -1
  28. package/lib/types/conversation-settings.d.ts +4 -0
  29. package/lib/types/index.d.ts +20 -5
  30. package/package.json +35 -35
  31. package/lib/types/client/input/editor/claim-decor.d.ts +0 -23
  32. package/lib/types/client/settings/ContentWidthRow.d.ts +0 -26
@@ -12,8 +12,8 @@ import type { Context } from '@qilin-agent/kylin';
12
12
  import type { InboxState } from '@qilin-agent/agent/types';
13
13
  import { type ObservableSnapshot, type SnapshotStore } from '@qilin-agent/client-store';
14
14
  import type { LexicalEditor } from 'lexical';
15
- import type { CommandClaim, ConsumeTokenRequest, DraftAttachmentId, InputActions, InputNotice, InputState, InputTriggerController, SessionInput, SubmitAttachment, SubmitOutcome } from '../contract/input.ts';
16
- import type { ArbitrateKey, ArbitrateOutcome, ComposerKeyboard, ReferenceInsert, TokenSpan } from '../contract/draft-editor.ts';
15
+ import type { CommandClaim, ConsumeTokenRequest, DraftAttachmentId, DraftInitializationOptions, DraftInitializationResult, InputActions, InputNotice, InputState, InputTriggerController, SessionInput, SubmitAttachment, SubmitOutcome } from '../contract/input.ts';
16
+ import type { ArbitrateKey, ArbitrateOutcome, ComposerKeyboard, DraftInput, DraftSnapshot, ReferenceInsert, TokenSpan } from '../contract/draft-editor.ts';
17
17
  import type { InputSubmitMode } from '../contract/composer-submission.ts';
18
18
  /** Popup face the shell needs (dismissal only; typed structurally to avoid a value import). */
19
19
  export interface PopupDismissFace {
@@ -72,11 +72,16 @@ export declare class SessionInputShell implements SessionInput {
72
72
  private rev;
73
73
  private readonly unregister;
74
74
  private noticeSeq;
75
- private lastMirroredDraft;
75
+ private lastPublishedDraft;
76
+ private draftSnapshotCache;
76
77
  private attachmentIds;
77
78
  private disposed;
78
- /** Draft persistence mirror (Conversation store write; receives the clipboard projection). */
79
- private mirrorFn;
79
+ /** Conversation store writer for the current semantic document. */
80
+ private persistDraft;
81
+ /** A restored draft's command token waiting for the trigger pipeline, with the revision its restore produced. */
82
+ private pendingCommand;
83
+ /** The in-flight claim resolution for a restored command chip. */
84
+ private commandRestore;
80
85
  /** The mounted composer's file-picker opener (scoped pick-files event target). */
81
86
  private filePicker;
82
87
  /** Default sends retained until admission settles or scope disposal releases their attachments. */
@@ -91,15 +96,40 @@ export declare class SessionInputShell implements SessionInput {
91
96
  private readonly attachmentFlights;
92
97
  private readonly unsubscribeInbox;
93
98
  constructor(deps: SessionInputDeps);
94
- /** Re-project, run the claim watch, publish, and feed trigger tracking after every editor commit. */
99
+ /** Re-project, sync the claim with the leading command chip, publish, and feed trigger tracking after every editor commit. */
95
100
  private onEditorUpdate;
96
101
  /**
97
102
  * Replace the whole draft (persisted-draft seed and programmatic writes).
98
103
  * Placeholder-sanitized; newlines split paragraphs; the caret lands at the
99
104
  * end. Merged into history so a seed is not an undoable step of its own.
100
- * @param text - the full next draft.
105
+ * @param text - plain text or the complete semantic document.
101
106
  */
102
- setDraft(text: string): void;
107
+ setDraft(text: DraftInput): void;
108
+ /**
109
+ * Reconnect optional catalog notifications and resume a pending command
110
+ * chip restore without waiting for another edit.
111
+ */
112
+ refreshLexiconSubscription(): void;
113
+ /**
114
+ * Rebuild the command chip a restored draft carried once the trigger
115
+ * pipeline can resolve its claim. The rebuild applies only at the revision
116
+ * the restore produced: an edit made while the claim resolves keeps the
117
+ * literal token, which Enter still adjudicates as the command.
118
+ */
119
+ private restoreCommand;
120
+ /** Drop a pending or in-flight command chip restore. */
121
+ private cancelCommandRestore;
122
+ /** Current semantic document, stable until its content revision changes. */
123
+ get draftSnapshot(): DraftSnapshot;
124
+ /** Persist the latest document without changing the editor or binding a writer. */
125
+ persistCurrentDraft(): void;
126
+ /**
127
+ * Apply one new-task request to this already-initialized input model.
128
+ * @param options - replacement content and explicit permission to clear existing text.
129
+ * @returns whether text changed, was preserved, or submission prevented editing.
130
+ */
131
+ requestDraftInitialization(options: DraftInitializationOptions): DraftInitializationResult;
132
+ private draftInitializationBlocked;
103
133
  /** Append ordered attachment ids unless an admission transaction is locked. */
104
134
  addAttachments(ids: readonly DraftAttachmentId[]): boolean;
105
135
  /**
@@ -182,6 +212,14 @@ export declare class SessionInputShell implements SessionInput {
182
212
  * @returns whether the edit applied (phase, span CAS, and leading guard passed).
183
213
  */
184
214
  beginCommand(claim: CommandClaim, span: TokenSpan): boolean;
215
+ /**
216
+ * Replace [0, span.end) with the command chip and enter claimed.
217
+ * @param claim - the command claim the chip anchors.
218
+ * @param span - pick-time span snapshot (detect coordinates).
219
+ * @param mergeHistory - merge the edit into the previous history entry.
220
+ * @returns whether the edit applied.
221
+ */
222
+ private applyClaim;
185
223
  /**
186
224
  * Apply one reference insertion (scoped insert-reference event listener
187
225
  * body): the editor replaces the span with one chip node, followed by a
@@ -234,14 +272,11 @@ export declare class SessionInputShell implements SessionInput {
234
272
  /** Read the live input state (guard derivation reads here). */
235
273
  get snapshot(): InputState;
236
274
  /**
237
- * Bind the draft persistence mirror (Conversation store write). Adopt-on-bind: the
238
- * store draft may hold a persisted value from a previous mount; the caller
239
- * seeds it via setDraft BEFORE binding, and afterwards every editor-adopted
240
- * draft mirrors out.
241
- * @param write - store draft write.
275
+ * Bind the Conversation store writer without importing or saving content.
276
+ * @param write - semantic draft writer; persistCurrentDraft flushes the initial value.
242
277
  * @returns the unbind disposer.
243
278
  */
244
- bindMirror(write: (text: string) => void): () => void;
279
+ bindDraftPersistence(write: (draft: DraftSnapshot) => void): () => void;
245
280
  /**
246
281
  * Bind the mounted composer's file action and live intake availability.
247
282
  * @param picker - availability query and native file-dialog opener.
@@ -258,9 +293,7 @@ export declare class SessionInputShell implements SessionInput {
258
293
  * @returns whether the opener was called.
259
294
  */
260
295
  pickFiles(): boolean;
261
- /** The claim token the decoration transform styles; null while unclaimed. */
262
- private activeClaimToken;
263
- /** Dispatch + execute, refreshing the claim decoration when the styled token flips. */
296
+ /** Dispatch one machine event and execute its effects. */
264
297
  private dispatchRun;
265
298
  private run;
266
299
  private execute;
@@ -11,7 +11,7 @@ import type { Context } from '@qilin-agent/kylin';
11
11
  import type { SessionBinding } from '@qilin-agent/api-session-controller/client';
12
12
  import type { SessionId } from '@qilin-agent/session/types';
13
13
  import type { TranslateNS } from '@qilin-agent/client-locale/client';
14
- import type { InputTriggerController, SessionInputResolver, SessionInput } from '../contract/input.ts';
14
+ import type { DraftInitializationOptions, DraftInitializationResult, InputTriggerController, SessionInputResolver, SessionInput } from '../contract/input.ts';
15
15
  import type { ComposerKeyboard } from '../contract/draft-editor.ts';
16
16
  import { SessionInputShell } from './facade.ts';
17
17
  /** Session-addressed input facade registry (SessionInputResolver face + composer-layer extras). */
@@ -30,6 +30,7 @@ export declare class InputHub implements SessionInputResolver {
30
30
  * @returns the resident per-session facade.
31
31
  */
32
32
  for(actx: Context): SessionInput;
33
+ requestDraftInitialization(binding: SessionBinding, options: DraftInitializationOptions): DraftInitializationResult;
33
34
  /**
34
35
  * Resident shell for one session binding — the provide-channel entry
35
36
  * (called during scope materialization, BEFORE the scope record is
@@ -20,10 +20,14 @@ export declare class SubmitMachine {
20
20
  * @returns effects for the SessionInput shell, in execution order.
21
21
  */
22
22
  dispatch(ev: InputEvent): readonly InputEffect[];
23
- /** The complete command name retains its claim with or without the argument separator. */
24
- private onDraftChanged;
25
- /** The editor applied a claim-token replacement; busy phases refuse another claim. */
26
- private onClaim;
23
+ /**
24
+ * Outside a transaction the claim follows the document's leading command
25
+ * chip: deleting or displacing the chip releases it, and a history restore
26
+ * of the chip re-enters claimed. The claim event applies the same rule to a
27
+ * chip the editor just inserted, before its update commits; busy phases
28
+ * refuse both.
29
+ */
30
+ private followCommand;
27
31
  /** Mint an attempt and controller without assigning its lifecycle owner. */
28
32
  private mintAttempt;
29
33
  /** Mint the frozen command/adjudication attempt. */
@@ -35,7 +39,7 @@ export declare class SubmitMachine {
35
39
  private onEnter;
36
40
  private onAdjudicated;
37
41
  private onAdjudicationFailed;
38
- /** Claimed command settlement retains the frozen transaction semantics. */
42
+ /** Claimed command settlement; after a failure the claim follows the leading command chip again. */
39
43
  private onSubmitSettled;
40
44
  /** Settle one ordinary send independently of current phase and other detached sends. */
41
45
  private onSinkSettled;
@@ -65,14 +65,6 @@ export declare const zh: {
65
65
  'settings.enter.description': string;
66
66
  'settings.enter.queue': string;
67
67
  'settings.enter.steer': string;
68
- 'settings.width.title': string;
69
- 'settings.width.description': string;
70
- 'settings.width.adaptive': string;
71
- 'settings.width.unit': string;
72
- 'settings.width.increase': string;
73
- 'settings.width.decrease': string;
74
- 'settings.width.customize': string;
75
- 'settings.width.reset': string;
76
68
  'hero.headline': string;
77
69
  'hero.tagline': string;
78
70
  'hero.greeting.morning': string;
@@ -110,6 +102,7 @@ export declare const zh: {
110
102
  'row.stopped': string;
111
103
  'row.input': string;
112
104
  'row.output': string;
105
+ 'row.commandArguments': string;
113
106
  'row.inspect': string;
114
107
  'tool.title.search': string;
115
108
  'tool.title.read': string;
@@ -450,14 +443,6 @@ export declare const en: {
450
443
  'settings.enter.description': string;
451
444
  'settings.enter.queue': string;
452
445
  'settings.enter.steer': string;
453
- 'settings.width.title': string;
454
- 'settings.width.description': string;
455
- 'settings.width.adaptive': string;
456
- 'settings.width.unit': string;
457
- 'settings.width.increase': string;
458
- 'settings.width.decrease': string;
459
- 'settings.width.customize': string;
460
- 'settings.width.reset': string;
461
446
  'hero.headline': string;
462
447
  'hero.tagline': string;
463
448
  'hero.greeting.morning': string;
@@ -495,6 +480,7 @@ export declare const en: {
495
480
  'row.stopped': string;
496
481
  'row.input': string;
497
482
  'row.output': string;
483
+ 'row.commandArguments': string;
498
484
  'row.inspect': string;
499
485
  'tool.title.search': string;
500
486
  'tool.title.read': string;
@@ -1,9 +1,9 @@
1
1
  import type { ConversationSessionSlotProps } from '../contract/slots.ts';
2
2
  /**
3
3
  * Renders the active Session view inside the resident scrollport and keeps
4
- * the input draft mirrored while blank Hero chrome is visible.
4
+ * the input draft persisted while blank Hero chrome is visible.
5
5
  * @param props - Strict Session input/store, view ledger, and render shares.
6
6
  * @returns the active view area, or null while the Session remains blank.
7
7
  */
8
- export declare function DefaultConversationViews({ view, useSession, useConversation, useConversationViews, useInput, inputActions, useStore, actions, renderSlot, bindDraftMirror, openView, }: ConversationSessionSlotProps): import("react").JSX.Element | null;
8
+ export declare function DefaultConversationViews({ view, useSession, useConversation, useConversationViews, inputActions, useStore, actions, renderSlot, bindDraftPersistence, openView, }: ConversationSessionSlotProps): import("react").JSX.Element | null;
9
9
  //# sourceMappingURL=DefaultConversationViews.d.ts.map
@@ -2,9 +2,10 @@
2
2
  import { type EngineStoreHandle } from '@qilin-agent/client-store';
3
3
  import type { SessionId } from '@qilin-agent/session/types';
4
4
  import type { ConversationStoreState } from './contract/views.ts';
5
+ import type { DraftInput, DraftSnapshot } from './contract/draft-editor.ts';
5
6
  /** Declared write set for the Conversation shell. */
6
7
  type ConversationActions = {
7
- setDraft: (draft: ConversationStoreState, text: string) => void;
8
+ setDraft: (draft: ConversationStoreState, text: DraftInput) => void;
8
9
  setView: (draft: ConversationStoreState, view: string) => void;
9
10
  openView: (draft: ConversationStoreState, view: string, focus: string) => void;
10
11
  completeViewRequest: (draft: ConversationStoreState) => void;
@@ -14,6 +15,12 @@ type ConversationActions = {
14
15
  * @returns the store handle.
15
16
  */
16
17
  export declare function createConversationStore(): EngineStoreHandle<ConversationStoreState, ConversationActions>;
18
+ /**
19
+ * Read a Session's draft before its input source is published to React.
20
+ * @param sessionId - Session-scoped persistence suffix.
21
+ * @returns saved semantic content, or an empty document when storage is absent or invalid.
22
+ */
23
+ export declare function readConversationDraft(sessionId: SessionId): DraftSnapshot;
17
24
  /**
18
25
  * Read the persisted View preference before the Slot store is materialized.
19
26
  * @param sessionId - Session-scoped persistence suffix.
@@ -34,5 +34,9 @@ export interface ConversationSettings {
34
34
  contentWidth: number;
35
35
  }
36
36
  /** Durable conversation schema; also the wire envelope the browser scope validates against. */
37
+ export declare const ConversationSettingsFields: {
38
+ busyEnter: z<"queue" | "steer", "queue" | "steer", "defined">;
39
+ contentWidth: z<number, number, "defined">;
40
+ };
37
41
  export declare const ConversationSettingsSchema: z<ConversationSettings>;
38
42
  //# sourceMappingURL=conversation-settings.d.ts.map
@@ -1,9 +1,24 @@
1
- /** Host registration for browser conversation preferences. */
2
- import type { Context } from '@qilin-agent/kylin';
1
+ import type { Volatile, Context } from '@qilin-agent/kylin';
2
+ import type { BusyEnterBehavior } from './conversation-settings.ts';
3
+ import z from '@qilin-agent/schemastery';
3
4
  export { BUSY_ENTER_BEHAVIORS, BUSY_ENTER_FIELD, CONVERSATION_SETTINGS_NAMESPACE, CONTENT_WIDTH_ADAPTIVE, CONTENT_WIDTH_FIELD, CONTENT_WIDTH_MAX, CONTENT_WIDTH_MIN, CONTENT_WIDTH_STEP, DEFAULT_BUSY_ENTER_BEHAVIOR, DEFAULT_CONTENT_WIDTH, type BusyEnterBehavior, type ConversationSettings, } from './conversation-settings.ts';
4
- /**
5
- * Register the durable conversation section when a settings provider exists.
6
- * @param ctx - Host context whose optional settings service owns the section.
5
+ /** Runtime preferences projected to the browser. */
6
+ export interface Config {
7
+ /** Enter key behavior while a turn is running. */
8
+ busyEnter: Volatile<BusyEnterBehavior>;
9
+ /** Transcript content width in px, or 0 for the layout's adaptive clamp. */
10
+ contentWidth: Volatile<number>;
11
+ }
12
+ /** Live preferences projected to the browser. */
13
+ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
14
+ busyEnter: z<"queue" | "steer", "queue" | "steer", "volatile-defined">;
15
+ contentWidth: z<number, number, "volatile-defined">;
16
+ }>>, Schemastery.ObjectT<NoInfer<{
17
+ busyEnter: z<"queue" | "steer", "queue" | "steer", "volatile-defined">;
18
+ contentWidth: z<number, number, "volatile-defined">;
19
+ }>>, "plain">;
20
+ /** Host preferences are consumed through the configuration form projection.
21
+ * @param ctx Plugin context used for optional settings presentation.
7
22
  */
8
23
  export declare function apply(ctx: Context): void;
9
24
  //# sourceMappingURL=index.d.ts.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@qilin-agent/client-ui-conversation",
3
3
  "description": "Target-neutral Conversation assembly, shell, composer, queue, and view navigation",
4
- "version": "3.1.5",
4
+ "version": "3.1.6",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -46,10 +46,10 @@
46
46
  },
47
47
  "license": "MIT",
48
48
  "dependencies": {
49
- "@qilin-agent/schemastery": "~3.18.3"
49
+ "@qilin-agent/schemastery": "~3.18.5"
50
50
  },
51
51
  "peerDependencies": {
52
- "@qilin-agent/kylin": "~4.0.3"
52
+ "@qilin-agent/kylin": "~4.0.5"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@lexical/headless": "^0.49.0",
@@ -64,38 +64,38 @@
64
64
  "react": "^18.2.0",
65
65
  "react-dom": "^18.2.0",
66
66
  "zod": "^4.4.3",
67
- "@qilin-agent/api-remotes": "3.1.5",
68
- "@qilin-agent/agent": "3.1.5",
69
- "@qilin-agent/api-session-controller": "3.1.5",
70
- "@qilin-agent/attachment": "3.1.5",
71
- "@qilin-agent/api-workspace-controller": "3.1.5",
72
- "@qilin-agent/brand": "3.1.5",
73
- "@qilin-agent/client-locale": "3.1.5",
74
- "@qilin-agent/client-shortcuts": "3.1.5",
75
- "@qilin-agent/client-file-upload": "3.1.5",
76
- "@qilin-agent/client-store": "3.1.5",
77
- "@qilin-agent/client-test-runtime": "3.1.5",
78
- "@qilin-agent/client-ui-layout": "3.1.5",
79
- "@qilin-agent/client-ui-primitives": "3.1.5",
80
- "@qilin-agent/client-ui-renderer": "3.1.5",
81
- "@qilin-agent/client-ui-session": "3.1.5",
82
- "@qilin-agent/client-ui-settings": "3.1.5",
83
- "@qilin-agent/client-ui-slots": "3.1.5",
84
- "@qilin-agent/client-ui-workspace": "3.1.5",
85
- "@qilin-agent/commands": "3.1.5",
86
- "@qilin-agent/goal": "3.1.5",
87
- "@qilin-agent/kylin": "~4.0.3",
88
- "@qilin-agent/llm": "3.1.5",
89
- "@qilin-agent/plan-mode": "3.1.5",
90
- "@qilin-agent/session": "3.1.5",
91
- "@qilin-agent/settings": "3.1.5",
92
- "@qilin-agent/llm-retry": "3.1.5",
93
- "@qilin-agent/token-meter": "3.1.5",
94
- "@qilin-agent/tool-todo": "3.1.5",
95
- "@qilin-agent/util-crypto": "3.1.5",
96
- "@qilin-agent/util-workspace-path": "3.1.5",
97
- "@qilin-agent/workspace": "3.1.5",
98
- "@qilin-agent/util-values": "3.1.5"
67
+ "@qilin-agent/agent": "3.1.6",
68
+ "@qilin-agent/api-remotes": "3.1.6",
69
+ "@qilin-agent/api-session-controller": "3.1.6",
70
+ "@qilin-agent/api-workspace-controller": "3.1.6",
71
+ "@qilin-agent/attachment": "3.1.6",
72
+ "@qilin-agent/brand": "3.1.6",
73
+ "@qilin-agent/client-locale": "3.1.6",
74
+ "@qilin-agent/client-file-upload": "3.1.6",
75
+ "@qilin-agent/client-shortcuts": "3.1.6",
76
+ "@qilin-agent/client-store": "3.1.6",
77
+ "@qilin-agent/client-ui-layout": "3.1.6",
78
+ "@qilin-agent/client-test-runtime": "3.1.6",
79
+ "@qilin-agent/client-ui-primitives": "3.1.6",
80
+ "@qilin-agent/client-ui-renderer": "3.1.6",
81
+ "@qilin-agent/client-ui-session": "3.1.6",
82
+ "@qilin-agent/client-ui-workspace": "3.1.6",
83
+ "@qilin-agent/client-ui-slots": "3.1.6",
84
+ "@qilin-agent/commands": "3.1.6",
85
+ "@qilin-agent/goal": "3.1.6",
86
+ "@qilin-agent/kylin": "~4.0.5",
87
+ "@qilin-agent/client-ui-settings": "3.1.6",
88
+ "@qilin-agent/llm": "3.1.6",
89
+ "@qilin-agent/session": "3.1.6",
90
+ "@qilin-agent/settings": "3.1.6",
91
+ "@qilin-agent/llm-retry": "3.1.6",
92
+ "@qilin-agent/plan-mode": "3.1.6",
93
+ "@qilin-agent/util-values": "3.1.6",
94
+ "@qilin-agent/util-crypto": "3.1.6",
95
+ "@qilin-agent/tool-todo": "3.1.6",
96
+ "@qilin-agent/token-meter": "3.1.6",
97
+ "@qilin-agent/util-workspace-path": "3.1.6",
98
+ "@qilin-agent/workspace": "3.1.6"
99
99
  },
100
100
  "files": [
101
101
  "lib/index.js",
@@ -1,23 +0,0 @@
1
- /**
2
- * Claim-token highlight: while a command claim holds, the draft's leading
3
- * token renders in the warn color. A TextNode transform keeps the token in
4
- * its own styled node (splitting when typing merges text into it), and the
5
- * shell nudges the first leaf dirty when the claim flips so entering and
6
- * leaving claimed restyles without a text edit.
7
- */
8
- import type { LexicalEditor } from 'lexical';
9
- /**
10
- * Register the claim-token styling transform.
11
- * @param editor - the shell-owned editor.
12
- * @param activeToken - live claim token accessor; null while unclaimed.
13
- * @returns the unregister disposer.
14
- */
15
- export declare function registerClaimDecoration(editor: LexicalEditor, activeToken: () => string | null): () => void;
16
- /**
17
- * Nudge the token seat dirty so the transform restyles after a claim flip
18
- * (claims change phase without a text edit; transforms only run on dirty
19
- * nodes).
20
- * @param editor - the shell-owned editor.
21
- */
22
- export declare function refreshClaimDecoration(editor: LexicalEditor): void;
23
- //# sourceMappingURL=claim-decor.d.ts.map
@@ -1,26 +0,0 @@
1
- /**
2
- * General Settings row for the transcript content width. The pill carries the
3
- * persisted width — the word for the adaptive column clamp, otherwise the px
4
- * value — and steps it by CONTENT_WIDTH_STEP. Reverting to the clamp is an
5
- * explicit action, never a stepper bound.
6
- */
7
- import type { SnapshotStore } from '@qilin-agent/client-store';
8
- import type { InjectFace, PropsLocale, PropsRuntime } from '@qilin-agent/client-ui-slots';
9
- /** Registration-side preference face. */
10
- export interface ContentWidthRowInjected {
11
- hooks: {
12
- /** Persisted transcript width bound as useContentWidth. */
13
- contentWidth: SnapshotStore<number>;
14
- };
15
- /** Persist a width, or {@link CONTENT_WIDTH_ADAPTIVE} to return to the adaptive clamp. */
16
- setContentWidth: (px: number) => void;
17
- }
18
- /** Full Settings-row props. */
19
- export type ContentWidthRowProps = PropsRuntime<'settings.general.item'> & PropsLocale<'conversation'> & InjectFace<ContentWidthRowInjected>;
20
- /**
21
- * Render the transcript width row.
22
- * @param props - composed Settings slot props.
23
- * @returns the preference row.
24
- */
25
- export declare function ContentWidthRow({ t, useContentWidth, setContentWidth }: ContentWidthRowProps): import("react").JSX.Element;
26
- //# sourceMappingURL=ContentWidthRow.d.ts.map