@ycodium-ai/plugin-api 0.2.2972 → 0.2.2974

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 (62) hide show
  1. package/README.md +14 -0
  2. package/dist/conversation.d.ts +15 -1587
  3. package/dist/conversation.d.ts.map +1 -1
  4. package/dist/conversation.js.map +1 -1
  5. package/dist/conversationBase.d.ts +89 -0
  6. package/dist/conversationBase.d.ts.map +1 -0
  7. package/dist/conversationBase.js +2 -0
  8. package/dist/conversationBase.js.map +1 -0
  9. package/dist/conversationComposerApi.d.ts +246 -0
  10. package/dist/conversationComposerApi.d.ts.map +1 -0
  11. package/dist/conversationComposerApi.js +2 -0
  12. package/dist/conversationComposerApi.js.map +1 -0
  13. package/dist/conversationComposerEnvironment.d.ts +71 -0
  14. package/dist/conversationComposerEnvironment.d.ts.map +1 -0
  15. package/dist/conversationComposerEnvironment.js +2 -0
  16. package/dist/conversationComposerEnvironment.js.map +1 -0
  17. package/dist/conversationComposerHandle.d.ts +80 -0
  18. package/dist/conversationComposerHandle.d.ts.map +1 -0
  19. package/dist/conversationComposerHandle.js +2 -0
  20. package/dist/conversationComposerHandle.js.map +1 -0
  21. package/dist/conversationDerive.d.ts +132 -0
  22. package/dist/conversationDerive.d.ts.map +1 -0
  23. package/dist/conversationDerive.js +2 -0
  24. package/dist/conversationDerive.js.map +1 -0
  25. package/dist/conversationDrafts.d.ts +220 -0
  26. package/dist/conversationDrafts.d.ts.map +1 -0
  27. package/dist/conversationDrafts.js +2 -0
  28. package/dist/conversationDrafts.js.map +1 -0
  29. package/dist/conversationHostModels.d.ts +378 -0
  30. package/dist/conversationHostModels.d.ts.map +1 -0
  31. package/dist/conversationHostModels.js +2 -0
  32. package/dist/conversationHostModels.js.map +1 -0
  33. package/dist/conversationRows.d.ts +96 -0
  34. package/dist/conversationRows.d.ts.map +1 -0
  35. package/dist/conversationRows.js +2 -0
  36. package/dist/conversationRows.js.map +1 -0
  37. package/dist/conversationViewProps.d.ts +366 -0
  38. package/dist/conversationViewProps.d.ts.map +1 -0
  39. package/dist/conversationViewProps.js +2 -0
  40. package/dist/conversationViewProps.js.map +1 -0
  41. package/dist/executor.d.ts +4 -6
  42. package/dist/executor.d.ts.map +1 -1
  43. package/dist/executor.js.map +1 -1
  44. package/dist/executorProcesses.d.ts +38 -0
  45. package/dist/executorProcesses.d.ts.map +1 -0
  46. package/dist/executorProcesses.js +5 -0
  47. package/dist/executorProcesses.js.map +1 -0
  48. package/dist/index.d.ts +2 -11
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/settings-actions.d.ts +25 -2
  52. package/dist/settings-actions.d.ts.map +1 -1
  53. package/dist/settings-actions.js +0 -6
  54. package/dist/settings-actions.js.map +1 -1
  55. package/dist/settings-ui.d.ts +46 -0
  56. package/dist/settings-ui.d.ts.map +1 -0
  57. package/dist/settings-ui.js +2 -0
  58. package/dist/settings-ui.js.map +1 -0
  59. package/dist/ui.d.ts +1 -0
  60. package/dist/ui.d.ts.map +1 -1
  61. package/dist/ui.js.map +1 -1
  62. package/package.json +1 -1
@@ -0,0 +1,80 @@
1
+ /**
2
+ * 输入区的 imperative handle:宿主经 ref 使用。
3
+ * 类型从 `conversation.ts` 再导出,插件照常从 `@ycodium-ai/plugin-api/conversation` 引。
4
+ *
5
+ * @module @ycodium-ai/plugin-api/conversationComposerHandle
6
+ */
7
+ import type { ConversationPluginComposerOption } from "./conversationComposerEnvironment.ts";
8
+ import type { ConversationComposerImageAttachment, ConversationComposerModelStatus, ConversationElementContextDraft, ConversationReviewCommentContext, ConversationTerminalContextDraft, ConversationTerminalContextSelection } from "./conversationDrafts.ts";
9
+ import type { ConversationModelSelection, ConversationPreviewAnnotationPayload, ConversationProviderDriverKind, ConversationServerProviderModel } from "./conversationHostModels.ts";
10
+ export interface ConversationComposerHandle {
11
+ focusAtEnd(): void;
12
+ focusAt(cursor: number): void;
13
+ addDroppedFiles(files: File[]): void;
14
+ /** 拖入的文件夹:能解析出本机路径就插成路径引用,否则提示。宿主没接线时可以不调用。 */
15
+ addDroppedFolders?(folders: File[]): void;
16
+ insertTextAtEnd(text: string, options?: {
17
+ ensureLeadingBoundary?: boolean;
18
+ }): boolean;
19
+ toggleModelPicker(): void;
20
+ /** 快捷键换权限档:座位画什么就轮什么(这只手自己的档,或宿主四档)。 */
21
+ cyclePermissionMode(direction: 1 | -1): void;
22
+ /**
23
+ * 这次发送的身份:插件动作 + 正文。
24
+ *
25
+ * **只给「等一个异步操作回来后,确认用户没改主意」用。** 发送时要先问插件把正文
26
+ * 准备好,那是一次往返;回来时用户可能已经换了插件动作或改了字,这两样任一变了
27
+ * 就得丢弃这次发送。
28
+ *
29
+ * 它是命令式的(读此刻真值),不能换成订阅——订阅拿到的是最后推送过的值,在
30
+ * React 还没重渲染时会是旧的,这个防护就废了。
31
+ *
32
+ * 要防的东西变多(比如模型也不许换)就往这里加字段,别回头去读整个发送上下文:
33
+ * 那样谁都能在 await 之后读任意状态,没人说得清哪些是真需要的。
34
+ */
35
+ readSendIdentity(): {
36
+ pluginActionId: string | null;
37
+ prompt: string;
38
+ };
39
+ readSnapshot(): {
40
+ value: string;
41
+ cursor: number;
42
+ expandedCursor: number;
43
+ terminalContextIds: string[];
44
+ };
45
+ /** 外部改写 prompt(如 onSend 后)之后重置光标 / 触发 / 高亮。 */
46
+ resetCursorState(options?: {
47
+ cursor?: number;
48
+ prompt?: string;
49
+ detectTrigger?: boolean;
50
+ }): void;
51
+ /** 从终端抽屉插入一段终端上下文。 */
52
+ addTerminalContext(selection: ConversationTerminalContextSelection): void;
53
+ /** 发送前读取 composer 的完整选择状态。 */
54
+ getSendContext(): {
55
+ prompt: string;
56
+ images: ConversationComposerImageAttachment[];
57
+ terminalContexts: ConversationTerminalContextDraft[];
58
+ elementContexts: ConversationElementContextDraft[];
59
+ previewAnnotations: ConversationPreviewAnnotationPayload[];
60
+ reviewComments: ConversationReviewCommentContext[];
61
+ selectedModelOptionsForDispatch: unknown;
62
+ selectedModelSelection: ConversationModelSelection;
63
+ selectedNativeModeId?: string;
64
+ providerAvailable: boolean;
65
+ selectedProvider: ConversationProviderDriverKind;
66
+ selectedModel: string;
67
+ /** 与输入区座位、发送闸同一处结论。不是 `known` 时 `selectedModel` 是空串,别发。 */
68
+ selectedModelStatus: ConversationComposerModelStatus;
69
+ selectedProviderModels: ReadonlyArray<ConversationServerProviderModel>;
70
+ selectedPluginAction: ConversationPluginComposerOption | null;
71
+ };
72
+ /** provider turn 开始前校验合成输入。 */
73
+ validateProviderInput(providerInput: string): boolean;
74
+ }
75
+ /**
76
+ * 同步发送读的那份上下文。子组件把读函数推到宿主的 ref 上,宿主不要经
77
+ * imperative handle 反问。await 之后核对用户有没有改主意,仍用 `readSendIdentity`。
78
+ */
79
+ export type ConversationComposerSendContextReader = ConversationComposerHandle["getSendContext"];
80
+ //# sourceMappingURL=conversationComposerHandle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationComposerHandle.d.ts","sourceRoot":"","sources":["../src/conversationComposerHandle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,sCAAsC,CAAC;AAC7F,OAAO,KAAK,EACV,mCAAmC,EACnC,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,gCAAgC,EAChC,oCAAoC,EACrC,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,0BAA0B,EAC1B,oCAAoC,EACpC,8BAA8B,EAC9B,+BAA+B,EAChC,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,0BAA0B;IACzC,UAAU,IAAI,IAAI,CAAC;IACnB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACrC,+CAA+C;IAC/C,iBAAiB,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAC1C,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;IACtF,iBAAiB,IAAI,IAAI,CAAC;IAC1B,wCAAwC;IACxC,mBAAmB,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IAC7C;;;;;;;;;;;;OAYG;IACH,gBAAgB,IAAI;QAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,YAAY,IAAI;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,kBAAkB,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;IACF,+CAA+C;IAC/C,gBAAgB,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAChG,sBAAsB;IACtB,kBAAkB,CAAC,SAAS,EAAE,oCAAoC,GAAG,IAAI,CAAC;IAC1E,8BAA8B;IAC9B,cAAc,IAAI;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,mCAAmC,EAAE,CAAC;QAC9C,gBAAgB,EAAE,gCAAgC,EAAE,CAAC;QACrD,eAAe,EAAE,+BAA+B,EAAE,CAAC;QACnD,kBAAkB,EAAE,oCAAoC,EAAE,CAAC;QAC3D,cAAc,EAAE,gCAAgC,EAAE,CAAC;QACnD,+BAA+B,EAAE,OAAO,CAAC;QACzC,sBAAsB,EAAE,0BAA0B,CAAC;QACnD,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,iBAAiB,EAAE,OAAO,CAAC;QAC3B,gBAAgB,EAAE,8BAA8B,CAAC;QACjD,aAAa,EAAE,MAAM,CAAC;QACtB,2DAA2D;QAC3D,mBAAmB,EAAE,+BAA+B,CAAC;QACrD,sBAAsB,EAAE,aAAa,CAAC,+BAA+B,CAAC,CAAC;QACvE,oBAAoB,EAAE,gCAAgC,GAAG,IAAI,CAAC;KAC/D,CAAC;IACF,+BAA+B;IAC/B,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;CACvD;AAED;;;GAGG;AACH,MAAM,MAAM,qCAAqC,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=conversationComposerHandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationComposerHandle.js","sourceRoot":"","sources":["../src/conversationComposerHandle.ts"],"names":[],"mappings":""}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * 宿主派生函数:纯函数,宿主实现;插件带本地 UI 状态调用。
3
+ * 类型从 `conversation.ts` 再导出,插件照常从 `@ycodium-ai/plugin-api/conversation` 引。
4
+ *
5
+ * @module @ycodium-ai/plugin-api/conversationDerive
6
+ */
7
+ import type { ConversationModelBadge, ConversationThreadActivity, ConversationTimelineEntry } from "./conversationBase.ts";
8
+ import type { ConversationModelSelection } from "./conversationHostModels.ts";
9
+ import type { ConversationMessageLinkText } from "./conversationMessageLinks.ts";
10
+ import type { ConversationTimelineRow, ConversationTurnGroup } from "./conversationRows.ts";
11
+ import type { ConversationWorkEntry } from "./conversationWorkEntry.ts";
12
+ export interface ConversationRowsDeriveInput {
13
+ readonly activities: readonly ConversationThreadActivity[];
14
+ readonly timelineEntries: readonly ConversationTimelineEntry[];
15
+ readonly latestTurn: ConversationLatestTurn | null;
16
+ readonly runningTurnId: string | null;
17
+ /** 插件本地展开态:用户显式展开 + 本会话自动展开(含中断保留)。 */
18
+ readonly expandedTurnIds: ReadonlySet<string>;
19
+ readonly isWorking: boolean;
20
+ readonly activeTurnStartedAt: string | null;
21
+ readonly resolveModelBadge: ((selection: ConversationModelSelection | undefined) => ConversationModelBadge | null) | undefined;
22
+ readonly pendingModelSelection: ConversationModelSelection | null | undefined;
23
+ }
24
+ /** 宿主已知轮次的行缓存键(插件持有缓存,键值对插件不透明)。 */
25
+ export type ConversationKnownTurns = ReadonlyMap<string, ConversationLatestTurn>;
26
+ export interface ConversationDerivedRows {
27
+ readonly rows: ConversationTimelineRow[];
28
+ readonly turnGroups: readonly ConversationTurnGroup[];
29
+ }
30
+ /** 最新一轮的派生输入(宿主 `TimelineLatestTurn` 的结构子集)。 */
31
+ export interface ConversationLatestTurn {
32
+ readonly turnId: string;
33
+ readonly state: string;
34
+ readonly requestedAt?: string | undefined;
35
+ readonly startedAt: string | null;
36
+ readonly completedAt: string | null;
37
+ readonly userMessageId: string | null;
38
+ readonly assistantMessageId: string | null;
39
+ readonly modelSelection?: ConversationModelSelection | undefined;
40
+ readonly waitSpans?: unknown;
41
+ }
42
+ /** 行派生缓存。`deriveGroups` 是纯函数;缓存身份归插件,跨派生复用行对象。 */
43
+ export interface ConversationRowsCache {
44
+ deriveGroups(input: ConversationRowsDeriveInput): ConversationDerivedRows;
45
+ }
46
+ /** `parseSystemNotificationText` 的结果(宿主 `ParsedSystemNotification` 的子集)。 */
47
+ export interface ConversationParsedSystemNotification {
48
+ readonly childThreadId: string;
49
+ readonly title: string;
50
+ readonly kind: "child.settled" | "child.failed" | "child.approval" | "child.stopped" | "plugin.notice" | "selfdev.resolved";
51
+ readonly requestId: string | null;
52
+ readonly summary: string;
53
+ }
54
+ /** `parseThreadHandoverText` 的结果(宿主 `ParsedThreadHandover` 的子集)。 */
55
+ export interface ConversationParsedThreadHandover {
56
+ readonly sourceThreadId: string;
57
+ readonly includedTurns: number;
58
+ readonly body: string;
59
+ }
60
+ /** `parsePresetPrefixText` 的结果(宿主 `ParsedPresetPrefix` 的子集)。 */
61
+ export interface ConversationParsedPresetPrefix {
62
+ readonly presetId: string;
63
+ readonly prefix: string;
64
+ /** 前缀块后面用户自己写的那半,可能为空。 */
65
+ readonly body: string;
66
+ }
67
+ /** 卡住提示的可读子集(宿主 `TurnStallState` 的结构子集)。 */
68
+ export interface ConversationTurnStall {
69
+ readonly reason: "childThread" | "tool" | "approval" | "userInput" | "model";
70
+ /** 最后一次有动静的时刻,插件按它自己走秒。 */
71
+ readonly since: string;
72
+ }
73
+ /** 滚动落点:视口顶对应行的 id 与相对行顶的偏移;负值保留行前留白。 */
74
+ export interface ConversationScrollAnchor {
75
+ readonly rowId: string;
76
+ readonly offsetPx: number;
77
+ }
78
+ /** 工具行的状态点取值;非工具行为 null。 */
79
+ export type ConversationWorkEntryStatus = "success" | "failed" | "running" | null;
80
+ /** 折叠工具组按动作分类的口径(宿主 `ToolGroupAction`)。 */
81
+ export type ConversationToolGroupAction = "read" | "edit" | "command" | "code-search" | "search" | "other";
82
+ export interface ConversationDeriveApi extends ConversationMessageLinkText {
83
+ /** 每个时间线实例建一份(插件侧 useRef 持有)。 */
84
+ createRowsCache(): ConversationRowsCache;
85
+ /** 滚动是否已到末尾的判定(保持与宿主一致的容差)。 */
86
+ resolveIsAtEnd(state: {
87
+ isAtEnd?: boolean | undefined;
88
+ contentLength?: number | undefined;
89
+ scroll?: number | undefined;
90
+ scrollLength?: number | undefined;
91
+ } | undefined, endInset: number): boolean | undefined;
92
+ /** 合组锚翻译:tool-group 自锚 id → 组行 id。 */
93
+ resolveToolGroupRevealRowId(rows: readonly ConversationTimelineRow[], rowId: string): string;
94
+ /** 时间线上真正摊开的轮次:用户显式展开 + 本会话自动展开(含中断保留)。 */
95
+ resolveExpandedTurnIds(persistedTurnIds: readonly string[], autoExpandedTurnIds: ReadonlySet<string>): ReadonlySet<string>;
96
+ /** 系统通知 / 会话移交 / preset 前缀文案的解析(消息行按内容切换呈现)。 */
97
+ parseSystemNotificationText(text: string): ConversationParsedSystemNotification | null;
98
+ parseThreadHandoverText(text: string): ConversationParsedThreadHandover | null;
99
+ parsePresetPrefixText(text: string): ConversationParsedPresetPrefix | null;
100
+ /** provider 重试提示文案。文案 key 归插件词表(providerRetry.*),宿主函数
101
+ * 只组模板参数。 */
102
+ providerRetryMessage(state: unknown, t: (key: string, options?: Record<string, unknown>) => string): string;
103
+ /** 助手消息复制按钮的可见性(流式中/空回复不画)。 */
104
+ resolveAssistantMessageCopyState(input: {
105
+ readonly text: string | null;
106
+ readonly showCopyButton: boolean;
107
+ readonly streaming: boolean;
108
+ }): {
109
+ readonly text: string | null;
110
+ readonly visible: boolean;
111
+ };
112
+ /** 助手正文是否保留原始换行(特定标记的正文按原样显示)。 */
113
+ shouldPreserveAssistantLineBreaks(text: string): boolean;
114
+ /** 思考/折叠回复的一行预览(与宿主同一条末行有效规则)。 */
115
+ reasoningPreviewText(text: string): string;
116
+ /** 工具行状态点(失败优先于进行中);非工具行为 null。 */
117
+ resolveWorkEntryStatus(entry: ConversationWorkEntry): ConversationWorkEntryStatus;
118
+ /** 这条工具记录按展示口径算不算失败(红字/红点/失败计数)。 */
119
+ workEntryIndicatesFailure(entry: ConversationWorkEntry): boolean;
120
+ /** 一组工具调用按动作分类(图标与计数)。 */
121
+ toolGroupAction(entry: ConversationWorkEntry): ConversationToolGroupAction;
122
+ /** 工具记录里的命令文本(结构化输入优先于回显)。 */
123
+ resolveToolCommand(entry: ConversationWorkEntry): string | undefined;
124
+ /** 参数 JSON 里的命令与 description 摘要。 */
125
+ parseToolCommandInput(input: unknown): {
126
+ readonly command?: string | undefined;
127
+ readonly description?: string | undefined;
128
+ } | null;
129
+ /** 末条助手消息是否已完整落地(shell 与明细独立到达,流式半段不算)。 */
130
+ hasSettledAssistantMessage(entries: readonly ConversationTimelineEntry[], messageId: string | null): boolean;
131
+ }
132
+ //# sourceMappingURL=conversationDerive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationDerive.d.ts","sourceRoot":"","sources":["../src/conversationDerive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=conversationDerive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationDerive.js","sourceRoot":"","sources":["../src/conversationDerive.ts"],"names":[],"mappings":""}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * 草稿、stash 与上传:穿界的宿主 store 形状。
3
+ * 类型从 `conversation.ts` 再导出,插件照常从 `@ycodium-ai/plugin-api/conversation` 引。
4
+ *
5
+ * @module @ycodium-ai/plugin-api/conversationDrafts
6
+ */
7
+ import type { ConversationPastedTextSource } from "./conversationAttachments.ts";
8
+ import type { ConversationComposerThreadTarget, ConversationModelSelection, ConversationPreviewAnnotationPayload, ConversationProviderDriverKind, ConversationProviderInstanceId, ConversationProviderInteractionMode, ConversationProviderOptionSelection, ConversationRuntimeMode, ConversationThreadId } from "./conversationHostModels.ts";
9
+ export interface ConversationComposerImageAttachment {
10
+ id: string;
11
+ name: string;
12
+ mimeType: string;
13
+ sizeBytes: number;
14
+ /** 附件类型判定(可内联图片 or 上传文件);与宿主 ChatAttachment 同构。 */
15
+ type: "image" | "file";
16
+ previewUrl: string;
17
+ file: File;
18
+ source?: ConversationPastedTextSource | undefined;
19
+ [key: string]: unknown;
20
+ }
21
+ export interface ConversationPersistedComposerImageAttachment {
22
+ id: string;
23
+ name: string;
24
+ mimeType: string;
25
+ sizeBytes: number;
26
+ dataUrl: string;
27
+ storageId?: string | undefined;
28
+ remote?: {
29
+ environmentId: string;
30
+ attachmentId: string;
31
+ } | undefined;
32
+ source?: ConversationPastedTextSource | undefined;
33
+ }
34
+ export interface ConversationTerminalContextSelection {
35
+ terminalId: string;
36
+ terminalLabel: string;
37
+ lineStart: number;
38
+ lineEnd: number;
39
+ text: string;
40
+ }
41
+ export interface ConversationTerminalContextDraft extends ConversationTerminalContextSelection {
42
+ id: string;
43
+ threadId: ConversationThreadId;
44
+ createdAt: string;
45
+ }
46
+ export interface ConversationElementContextStackFrame {
47
+ functionName: string | null;
48
+ fileName: string | null;
49
+ lineNumber: number | null;
50
+ columnNumber: number | null;
51
+ }
52
+ export interface ConversationElementContextSelection {
53
+ pageUrl: string;
54
+ pageTitle: string | null;
55
+ tagName: string;
56
+ selector: string | null;
57
+ htmlPreview: string;
58
+ componentName: string | null;
59
+ source: ConversationElementContextStackFrame | null;
60
+ styles: string;
61
+ }
62
+ export interface ConversationElementContextDraft extends ConversationElementContextSelection {
63
+ id: string;
64
+ threadId: ConversationThreadId;
65
+ pickedAt: string;
66
+ }
67
+ export interface ConversationReviewCommentContext {
68
+ readonly id: string;
69
+ readonly sectionId: string;
70
+ readonly sectionTitle: string;
71
+ readonly filePath: string;
72
+ readonly startIndex: number;
73
+ readonly endIndex: number;
74
+ readonly rangeLabel: string;
75
+ readonly text: string;
76
+ readonly diff: string;
77
+ }
78
+ export interface ConversationPromptStashEntry {
79
+ id: string;
80
+ createdAt: string;
81
+ prompt: string;
82
+ attachments: ReadonlyArray<ConversationPersistedComposerImageAttachment>;
83
+ droppedImageNames: ReadonlyArray<string>;
84
+ unreadableImageNames?: ReadonlyArray<string> | undefined;
85
+ pendingImageCount?: number | undefined;
86
+ }
87
+ /**
88
+ * 上传失败的原因码,插件按码取自己的译文。`rejected` 时 `httpStatus` 带服务器回的状态码;
89
+ * 宿主以后可能加新码,不认识的码与没给码的旧宿主一样退回 `reason`(宿主的英文诊断串)。
90
+ */
91
+ export type ConversationAttachmentUploadFailureCode = "start-failed" | "not-connected" | "rejected" | "timed-out" | "cancelled" | "failed";
92
+ export type ConversationAttachmentUploadState = {
93
+ status: "ready";
94
+ environmentId: string;
95
+ attachmentId: string;
96
+ } | {
97
+ status: "uploading";
98
+ environmentId: string;
99
+ progress: number;
100
+ previous?: unknown;
101
+ } | {
102
+ status: "failed";
103
+ environmentId: string;
104
+ reason: string;
105
+ code?: ConversationAttachmentUploadFailureCode;
106
+ httpStatus?: number;
107
+ attachmentId?: string;
108
+ };
109
+ /** 宿主 `ComposerThreadDraftState` 的结构子集:一条会话输入框里的草稿。 */
110
+ export interface ConversationComposerThreadDraft {
111
+ prompt: string;
112
+ images: ConversationComposerImageAttachment[];
113
+ nonPersistedImageIds: string[];
114
+ persistedAttachments: ConversationPersistedComposerImageAttachment[];
115
+ terminalContexts: ConversationTerminalContextDraft[];
116
+ elementContexts: ConversationElementContextDraft[];
117
+ previewAnnotations: ConversationPreviewAnnotationPayload[];
118
+ reviewComments: ConversationReviewCommentContext[];
119
+ modelSelectionByProvider: Readonly<Record<string, ConversationModelSelection | undefined>>;
120
+ nativeModeByProvider?: Readonly<Record<string, string | null | undefined>> | undefined;
121
+ activeProvider: ConversationProviderInstanceId | null;
122
+ runtimeMode: ConversationRuntimeMode | null;
123
+ interactionMode: ConversationProviderInteractionMode | null;
124
+ selectedPluginActionKey: string | null;
125
+ }
126
+ /**
127
+ * 草稿字段 + store 的 action 面(zustand 的 state 与 action 同住一个对象;hook 经
128
+ * api.draft.useStore 穿界,插件只用它取 action)。
129
+ */
130
+ export interface ConversationComposerDraftState extends ConversationComposerThreadDraft {
131
+ setPrompt(target: ConversationComposerThreadTarget, prompt: string): void;
132
+ setTerminalContexts(target: ConversationComposerThreadTarget, contexts: ConversationTerminalContextDraft[]): void;
133
+ setProviderModelOptions(target: ConversationComposerThreadTarget, provider: ConversationProviderDriverKind, nextProviderOptions: ReadonlyArray<ConversationProviderOptionSelection> | null | undefined, options?: {
134
+ instanceId?: ConversationProviderInstanceId | null | undefined;
135
+ model?: string | null | undefined;
136
+ persistSticky?: boolean;
137
+ }): void;
138
+ setNativeMode(target: ConversationComposerThreadTarget, instanceId: ConversationProviderInstanceId, nativeModeId: string | null): void;
139
+ addImage(target: ConversationComposerThreadTarget, image: ConversationComposerImageAttachment): void;
140
+ addImages(target: ConversationComposerThreadTarget, images: ConversationComposerImageAttachment[]): void;
141
+ removeImage(target: ConversationComposerThreadTarget, imageId: string): void;
142
+ insertTerminalContext(target: ConversationComposerThreadTarget, prompt: string, context: ConversationTerminalContextDraft, index: number): boolean;
143
+ removeTerminalContext(target: ConversationComposerThreadTarget, contextId: string): void;
144
+ removeElementContext(target: ConversationComposerThreadTarget, contextId: string): void;
145
+ removePreviewAnnotation(target: ConversationComposerThreadTarget, annotationId: string): void;
146
+ removeReviewComment(target: ConversationComposerThreadTarget, commentId: string): void;
147
+ clearComposerPromptAndImages(target: ConversationComposerThreadTarget): void;
148
+ }
149
+ /** 宿主 `useComposerDraftStore` 同形:zustand store hook 原样穿界。 */
150
+ export interface ConversationComposerDraftStoreHook {
151
+ <T>(selector: (state: ConversationComposerDraftState) => T): T;
152
+ getState(): ConversationComposerDraftState;
153
+ }
154
+ /**
155
+ * 输入区这只手现在拿不拿得出型号。宿主只在一处判(`resolveInstanceModelState`),
156
+ * 座位标签与发送闸都读这个结论,不要各自再判一次「有没有型号」。
157
+ */
158
+ export type ConversationComposerModelStatus =
159
+ /** 有型号:`selectedModel` 就是它。 */
160
+ "known"
161
+ /** 首探还在跑:清单不算数,等它落地,不要替这只手选一个。 */
162
+ | "probing"
163
+ /** 探测跑完了,这只手一个型号都没报。 */
164
+ | "missing";
165
+ export interface ConversationEffectiveComposerModelState {
166
+ /** `selectedModelStatus` 不是 `known` 时为空串——不会回落到别的手或全局默认型号。 */
167
+ selectedModel: string;
168
+ selectedModelStatus: ConversationComposerModelStatus;
169
+ modelOptions: Readonly<Record<string, ReadonlyArray<ConversationProviderOptionSelection> | undefined>> | null;
170
+ }
171
+ export interface ConversationPromptStashStoreState {
172
+ entries: ReadonlyArray<ConversationPromptStashEntry>;
173
+ stashEntry(entry: ConversationPromptStashEntry): {
174
+ evicted: ConversationPromptStashEntry | null;
175
+ written: boolean;
176
+ durable: boolean;
177
+ };
178
+ takeEntry(id: string): {
179
+ entry: ConversationPromptStashEntry | null;
180
+ durable: boolean;
181
+ };
182
+ finalizeEntryImages(id: string, images: {
183
+ attachments: ReadonlyArray<ConversationPersistedComposerImageAttachment>;
184
+ droppedImageNames: ReadonlyArray<string>;
185
+ unreadableImageNames: ReadonlyArray<string>;
186
+ }): {
187
+ attached: boolean;
188
+ durable: boolean;
189
+ };
190
+ }
191
+ export interface ConversationPromptStashStoreHook {
192
+ <T>(selector: (state: ConversationPromptStashStoreState) => T): T;
193
+ getState(): ConversationPromptStashStoreState;
194
+ }
195
+ export interface ConversationAttachmentUploadStoreState {
196
+ uploadsByImageId: Readonly<Record<string, ConversationAttachmentUploadState>>;
197
+ }
198
+ export interface ConversationAttachmentUploadStoreHook {
199
+ <T>(selector: (state: ConversationAttachmentUploadStoreState) => T): T;
200
+ }
201
+ export interface ConversationCompressedStashImage {
202
+ mimeType: string;
203
+ sizeBytes: number;
204
+ dataUrl: string;
205
+ }
206
+ export type ConversationCompressStashImageResult = {
207
+ ok: true;
208
+ image: ConversationCompressedStashImage;
209
+ } | {
210
+ ok: false;
211
+ reason: "too-large" | "unreadable";
212
+ };
213
+ export type ConversationCompressImageFileResult = {
214
+ ok: true;
215
+ file: File;
216
+ } | {
217
+ ok: false;
218
+ reason: "too-large" | "unreadable";
219
+ };
220
+ //# sourceMappingURL=conversationDrafts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationDrafts.d.ts","sourceRoot":"","sources":["../src/conversationDrafts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=conversationDrafts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationDrafts.js","sourceRoot":"","sources":["../src/conversationDrafts.ts"],"names":[],"mappings":""}