@ycodium-ai/plugin-api 0.2.3614 → 0.2.3671

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 (39) hide show
  1. package/README.md +80 -5
  2. package/dist/conversation.d.ts +3 -1
  3. package/dist/conversation.d.ts.map +1 -1
  4. package/dist/conversation.js.map +1 -1
  5. package/dist/conversationComposerApi.d.ts +16 -13
  6. package/dist/conversationComposerApi.d.ts.map +1 -1
  7. package/dist/conversationDrafts.d.ts +6 -1
  8. package/dist/conversationDrafts.d.ts.map +1 -1
  9. package/dist/conversationHostModels.d.ts +33 -1
  10. package/dist/conversationHostModels.d.ts.map +1 -1
  11. package/dist/conversationViewProps.d.ts +0 -1
  12. package/dist/conversationViewProps.d.ts.map +1 -1
  13. package/dist/dataPorts.gen.d.ts +1102 -736
  14. package/dist/dataPorts.gen.d.ts.map +1 -1
  15. package/dist/dataPorts.gen.js.map +1 -1
  16. package/dist/executorCard.d.ts +6 -0
  17. package/dist/executorCard.d.ts.map +1 -1
  18. package/dist/executorCard.js.map +1 -1
  19. package/dist/executorSession.d.ts +10 -1
  20. package/dist/executorSession.d.ts.map +1 -1
  21. package/dist/index.d.ts +32 -4
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +31 -3
  24. package/dist/index.js.map +1 -1
  25. package/dist/modelCatalogNotice.d.ts +27 -0
  26. package/dist/modelCatalogNotice.d.ts.map +1 -0
  27. package/dist/modelCatalogNotice.js +16 -0
  28. package/dist/modelCatalogNotice.js.map +1 -0
  29. package/dist/modelChoice.d.ts +110 -0
  30. package/dist/modelChoice.d.ts.map +1 -0
  31. package/dist/modelChoice.js +198 -0
  32. package/dist/modelChoice.js.map +1 -0
  33. package/dist/modelChoiceOptions.d.ts +79 -0
  34. package/dist/modelChoiceOptions.d.ts.map +1 -0
  35. package/dist/modelChoiceOptions.js +210 -0
  36. package/dist/modelChoiceOptions.js.map +1 -0
  37. package/dist/pluginContextCommands.d.ts +14 -1
  38. package/dist/pluginContextCommands.d.ts.map +1 -1
  39. package/package.json +1 -1
@@ -0,0 +1,198 @@
1
+ /**
2
+ * 模型选择解析器:意图 + 目录 + 偏好 → 选择器列表、当前选中、各档位的有效值、派发值与提示。
3
+ * web、mobile、会话插件、IM、MCP、团队插件与服务端准入都调这一处,不各自推断「清单算不算数」。
4
+ *
5
+ * 约束(对应 0083 的 Q1–Q6):
6
+ * - 意图只读不改:目录状态、隐藏名单、型号下架都不改写用户存的选择。
7
+ * - 目录 `unknown` 不是证据:没有意图就不点名任何型号,有意图就原样保留、照发。
8
+ * - 目录 `stale` / `failed` 当上一份成功结果用,但不据此把意图判成「不存在」;只有 `confirmed`
9
+ * 且清单非空才有「目录里没有」的结论。名片占位(`origin: "card"`)不是清单,任何状态下都不入列。
10
+ * - 已有会话永不替换型号;只有 `create` 在 `confirmed` 目录里找不到意图型号时才换成目录默认。
11
+ * - 「跟随默认」(`model: null`)只在这里解析出结果,不回写意图;已有会话用它钉住的实际型号。
12
+ * - 钉住只看会话记录,不看目录状态:选择自记录以来没变、实际型号是执行器读回的(`reported`),
13
+ * 显示与派发就都用它;目录只用来规范别名、取档位能力,对不上就按「未列出」处理(档位只读)。
14
+ * 唯一拦发送的是 `authoritative` 且 `confirmed` 的目录明确不含它。`echo` 没有独立证据,不钉。
15
+ * 输入用本文件自己的结构类型,字段名与契约对齐,插件 API 不依赖宿主包。
16
+ */
17
+ import { matchCatalogModel } from "./executor.js";
18
+ import { resolveModelOptions } from "./modelChoiceOptions.js";
19
+ export { nearestEffortLevel, resolveModelOptions } from "./modelChoiceOptions.js";
20
+ function foldSlug(raw, aliases) {
21
+ return raw !== null && aliases != null && Object.hasOwn(aliases, raw)
22
+ ? (aliases[raw] ?? raw)
23
+ : raw;
24
+ }
25
+ function nonEmpty(value) {
26
+ const trimmed = value?.trim();
27
+ return trimmed ? trimmed : null;
28
+ }
29
+ /** 在目录 slug 里找 `raw`:精确的优先于别名折叠后的,最后才按「最后一段唯一」匹配。 */
30
+ function matchSlug(raw, aliases, slugs) {
31
+ const folded = foldSlug(raw, aliases) ?? raw;
32
+ const matched = slugs.includes(raw)
33
+ ? raw
34
+ : slugs.includes(folded)
35
+ ? folded
36
+ : (matchCatalogModel(raw, slugs) ?? matchCatalogModel(folded, slugs));
37
+ return { matched, folded };
38
+ }
39
+ export function resolveModelChoice(input) {
40
+ const { catalog, preferences, purpose } = input;
41
+ const { state } = catalog;
42
+ // 名片占位(`origin: "card"`)任何状态下都不是证据:没有探测成功过的清单就不点名任何型号。
43
+ // 未确认的目录里只有用户自己声明的型号算数。
44
+ const evidence = catalog.models.filter((model) => model.origin !== "card" && (state !== "unknown" || model.origin === "custom"));
45
+ // 「目录里没有」的结论要有清单可查:成功但清单为空更可能是探测漏报,不当作每个型号都下架了。
46
+ const canConcludeAbsent = state === "confirmed" && evidence.length > 0;
47
+ const slugs = evidence.map((model) => model.slug);
48
+ const hiddenSlugs = new Set(preferences.hidden ?? []);
49
+ const isHidden = (model) => model.hidden === true || hiddenSlugs.has(model.slug);
50
+ const preferredDefault = nonEmpty(preferences.defaultModel);
51
+ const catalogDefault = () => {
52
+ if (state === "unknown")
53
+ return undefined;
54
+ if (preferredDefault !== null) {
55
+ const hit = matchSlug(preferredDefault, catalog.aliases, slugs).matched;
56
+ if (hit !== undefined)
57
+ return evidence.find((model) => model.slug === hit);
58
+ }
59
+ return evidence.find((model) => model.isDefault === true);
60
+ };
61
+ const hints = [];
62
+ const intentModel = nonEmpty(input.intent?.model);
63
+ // 会话钉住的实际型号只在选择自记录以来没变过时才算数。
64
+ const actual = purpose === "create" ? null : (input.actual ?? null);
65
+ // 比较「选的是不是同一个型号」与选型号走同一条规则:目录里精确存在的 slug 优先于别名。
66
+ const identity = (raw) => {
67
+ if (raw === null)
68
+ return null;
69
+ const { matched, folded } = matchSlug(raw, catalog.aliases, slugs);
70
+ return matched ?? folded;
71
+ };
72
+ const unchanged = actual !== null && identity(nonEmpty(actual.requested.model)) === identity(intentModel);
73
+ const reportedModel = unchanged && actual.source === "reported" ? nonEmpty(actual.model) : null;
74
+ // 显示与派发同一个型号:有读回的实际型号就用它,否则用意图。
75
+ const requested = reportedModel ?? intentModel;
76
+ const from = requested === null ? "default" : requested === intentModel ? "intent" : "actual";
77
+ let slug = null;
78
+ let entry;
79
+ let replacedFrom = null;
80
+ let unavailable = false;
81
+ if (requested !== null) {
82
+ const { matched, folded } = matchSlug(requested, catalog.aliases, slugs);
83
+ entry = evidence.find((model) => model.slug === matched);
84
+ slug = matched ?? folded;
85
+ if (entry === undefined && canConcludeAbsent) {
86
+ if (purpose === "create") {
87
+ const target = catalogDefault();
88
+ replacedFrom = slug;
89
+ hints.push({ kind: "model-replaced", from: slug, to: target?.slug ?? null });
90
+ entry = target;
91
+ slug = target?.slug ?? null;
92
+ }
93
+ else if (catalog.authoritative) {
94
+ unavailable = true;
95
+ hints.push({ kind: "model-unavailable", model: slug });
96
+ }
97
+ }
98
+ }
99
+ else {
100
+ entry = catalogDefault();
101
+ slug = entry?.slug ?? null;
102
+ if (purpose === "create" &&
103
+ canConcludeAbsent &&
104
+ preferredDefault !== null &&
105
+ matchSlug(preferredDefault, catalog.aliases, slugs).matched === undefined) {
106
+ hints.push({ kind: "model-replaced", from: preferredDefault, to: slug });
107
+ }
108
+ }
109
+ const listed = entry !== undefined;
110
+ const selected = slug === null
111
+ ? { kind: "placeholder" }
112
+ : unavailable
113
+ ? { kind: "unavailable", slug }
114
+ : {
115
+ kind: "model",
116
+ slug,
117
+ listed,
118
+ readOnlyOptions: !listed,
119
+ hidden: entry !== undefined && isHidden(entry),
120
+ from: replacedFrom !== null ? "default" : from,
121
+ unconfirmed: unchanged && actual.source === "echo",
122
+ };
123
+ const descriptors = entry?.capabilities?.optionDescriptors ?? null;
124
+ const resolvedOptions = resolveModelOptions({
125
+ model: slug,
126
+ descriptors,
127
+ stored: storedFor(input.intent, [slug, replacedFrom, intentModel, requested]),
128
+ moveEffort: replacedFrom !== null,
129
+ });
130
+ hints.push(...resolvedOptions.hints);
131
+ const dispatch = unavailable
132
+ ? { blocked: "unavailable", model: slug }
133
+ : { model: slug, options: resolvedOptions.dispatch };
134
+ return {
135
+ list: buildList(evidence, preferences, isHidden, {
136
+ slug,
137
+ entry,
138
+ // 未列出的选中行(含「不可用」)只在有名字可点时出现。
139
+ showUnlisted: slug !== null && entry === undefined,
140
+ }),
141
+ selected,
142
+ options: resolvedOptions.options,
143
+ dispatch,
144
+ hints,
145
+ };
146
+ }
147
+ /** 取按型号分记的那一份(依次试这些键),没有就用没分型号的那一份。 */
148
+ function storedFor(intent, keys) {
149
+ if (intent === null)
150
+ return [];
151
+ const byModel = intent.optionsByModel;
152
+ if (byModel !== undefined) {
153
+ for (const key of keys) {
154
+ if (key !== null && Object.hasOwn(byModel, key))
155
+ return byModel[key] ?? [];
156
+ }
157
+ }
158
+ return intent.options;
159
+ }
160
+ function buildList(evidence, preferences, isHidden, picked) {
161
+ const order = preferences.order ?? [];
162
+ const rank = (model) => {
163
+ const index = order.indexOf(model.slug);
164
+ return index === -1 ? order.length : index;
165
+ };
166
+ const ordered = evidence
167
+ .map((model, index) => ({ model, index }))
168
+ .sort((a, b) => rank(a.model) - rank(b.model) || a.index - b.index)
169
+ .map((item) => item.model);
170
+ const toRow = (model) => ({
171
+ slug: model.slug,
172
+ name: model.name,
173
+ model,
174
+ listed: true,
175
+ hidden: isHidden(model),
176
+ selected: model.slug === picked.slug,
177
+ isDefault: model.isDefault === true,
178
+ });
179
+ // 隐藏只影响「列给人挑的列表」;当前选中的永远在。
180
+ const rows = ordered.filter((model) => !isHidden(model) || model === picked.entry).map(toRow);
181
+ if (picked.showUnlisted && picked.slug !== null) {
182
+ rows.unshift({
183
+ slug: picked.slug,
184
+ name: picked.slug,
185
+ model: undefined,
186
+ listed: false,
187
+ hidden: false,
188
+ selected: true,
189
+ isDefault: false,
190
+ });
191
+ }
192
+ // 隐藏不能让列表变空。有默认时默认就是选中行,已在上面;走到这里说明没有默认可点名,留第一条。
193
+ const first = ordered[0];
194
+ if (rows.length === 0 && first !== undefined)
195
+ rows.push(toRow(first));
196
+ return rows;
197
+ }
198
+ //# sourceMappingURL=modelChoice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelChoice.js","sourceRoot":"","sources":["../src/modelChoice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import type { ModelOptionLabelKind } from "./executorModelOptions.ts";
2
+ import type { ConversationProviderOptionDescriptor, ConversationProviderOptionSelection } from "./conversationHostModels.ts";
3
+ export type ModelChoiceOptionSelection = ConversationProviderOptionSelection;
4
+ export type ModelChoiceOptionValue = ConversationProviderOptionSelection["value"];
5
+ type SelectDescriptor = Extract<ConversationProviderOptionDescriptor, {
6
+ type: "select";
7
+ }>;
8
+ type BooleanDescriptor = Extract<ConversationProviderOptionDescriptor, {
9
+ type: "boolean";
10
+ }>;
11
+ /** 目录里一个选项描述符里解析器用到的那部分字段;形状取自会话接口的描述符,不另写一份。 */
12
+ export type ModelChoiceOptionDescriptor = (Pick<SelectDescriptor, "type" | "id" | "currentValue" | "promptInjectedValues"> & {
13
+ readonly options: ReadonlyArray<Pick<SelectDescriptor["options"][number], "id" | "isDefault">>;
14
+ }) | Pick<BooleanDescriptor, "type" | "id" | "currentValue">;
15
+ /**
16
+ * - `explicit`:用户显式选过,且该型号支持;
17
+ * - `default`:没选过或选的不被支持,显示的是该型号默认;
18
+ * - `unknown`:目录没说这个型号有什么档位,存储值原样显示、原样派发。
19
+ */
20
+ export type ModelChoiceOptionSource = "explicit" | "default" | "unknown";
21
+ export interface ModelChoiceOptionState {
22
+ readonly id: string;
23
+ readonly kind: ModelOptionLabelKind | undefined;
24
+ /** 用户存的值,原样。 */
25
+ readonly stored: ModelChoiceOptionValue | undefined;
26
+ /** 界面显示与实际运行用的值。 */
27
+ readonly effective: ModelChoiceOptionValue | undefined;
28
+ readonly source: ModelChoiceOptionSource;
29
+ /** 存储值不被该型号支持时为 false;没存值或目录没说时为 true。 */
30
+ readonly supported: boolean;
31
+ /** select 描述符里可选的取值(退役的产品档已去掉);boolean 与未知时缺席。 */
32
+ readonly choices?: ReadonlyArray<string>;
33
+ }
34
+ /** 给界面与 IM 的提示;只带事实,文案由各端按自己的词表写。 */
35
+ export type ModelChoiceHint = {
36
+ readonly kind: "option-unsupported";
37
+ readonly model: string | null;
38
+ readonly optionId: string;
39
+ readonly stored: ModelChoiceOptionValue;
40
+ readonly effective: ModelChoiceOptionValue | undefined;
41
+ } | {
42
+ readonly kind: "effort-moved";
43
+ readonly model: string | null;
44
+ readonly optionId: string;
45
+ readonly from: string;
46
+ readonly to: string;
47
+ } | {
48
+ readonly kind: "model-replaced";
49
+ readonly from: string;
50
+ readonly to: string | null;
51
+ } | {
52
+ readonly kind: "model-unavailable";
53
+ readonly model: string;
54
+ };
55
+ /**
56
+ * `previous` 在 `supported` 里就原样返回,否则取最近的一档(距离相同取更强的)。
57
+ * `previous` 不是认得的档位,或 `supported` 里没有认得的档位,返回 undefined。
58
+ */
59
+ export declare function nearestEffortLevel(previous: string, supported: ReadonlyArray<string>): string | undefined;
60
+ export interface ResolvedModelOptions {
61
+ readonly options: ReadonlyArray<ModelChoiceOptionState>;
62
+ /** 只含用户显式选过、该型号支持(或目录没说)的项;这就是派发时带出去的档位。 */
63
+ readonly dispatch: ReadonlyArray<ModelChoiceOptionSelection>;
64
+ readonly hints: ReadonlyArray<ModelChoiceHint>;
65
+ }
66
+ /**
67
+ * 一个型号的档位解析。
68
+ *
69
+ * - `descriptors`:该型号在目录里的描述符;`null` = 不知道(未列出、目录没确认、能力未报)。
70
+ * - `moveEffort`:新建会话时型号被换掉的那一次,思考档的存储值不被新型号支持就挪到最近一档。
71
+ */
72
+ export declare function resolveModelOptions(input: {
73
+ readonly model: string | null;
74
+ readonly descriptors: ReadonlyArray<ModelChoiceOptionDescriptor> | null;
75
+ readonly stored: ReadonlyArray<ModelChoiceOptionSelection>;
76
+ readonly moveEffort: boolean;
77
+ }): ResolvedModelOptions;
78
+ export {};
79
+ //# sourceMappingURL=modelChoiceOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelChoiceOptions.d.ts","sourceRoot":"","sources":["../src/modelChoiceOptions.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,oBAAoB,EAAwB,MAAM,2BAA2B,CAAC;AAC5F,OAAO,KAAK,EACV,oCAAoC,EACpC,mCAAmC,EACpC,MAAM,6BAA6B,CAAC;AAErC,MAAM,MAAM,0BAA0B,GAAG,mCAAmC,CAAC;AAE7E,MAAM,MAAM,sBAAsB,GAAG,mCAAmC,CAAC,OAAO,CAAC,CAAC;AAElF,KAAK,gBAAgB,GAAG,OAAO,CAAC,oCAAoC,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAC1F,KAAK,iBAAiB,GAAG,OAAO,CAAC,oCAAoC,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAE5F,iDAAiD;AACjD,MAAM,MAAM,2BAA2B,GACnC,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,GAAG,sBAAsB,CAAC,GAAG;IACjF,QAAQ,CAAC,OAAO,EAAE,aAAa,CAC7B,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC,CAC9D,CAAC;CACH,CAAC,GACF,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;AAE5D;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAChD,gBAAgB;IAChB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACpD,oBAAoB;IACpB,QAAQ,CAAC,SAAS,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,qCAAqC;AACrC,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,sBAAsB,GAAG,SAAS,CAAC;CACxD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACtF;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAcnE;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,GAC/B,MAAM,GAAG,SAAS,CAmBpB;AAqDD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IACxD,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC;IAC7D,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;CAChD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,2BAA2B,CAAC,GAAG,IAAI,CAAC;IACxE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC;IAC3D,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B,GAAG,oBAAoB,CA+GvB"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * 模型选择解析器里「档位」那一半:一个型号的描述符 + 用户存下的值 → 每个选项的存储值、有效值、
3
+ * 来源、是否被该型号支持,以及真正该派发的那几项。
4
+ *
5
+ * 约束:
6
+ * - 存储值只读不改;换型号后新型号不认的值留在存储里,显示与派发按该型号默认(每个型号各记各的)。
7
+ * - 描述符为 `null` = 目录没说(未知),不是「没有档位」;`[]` 才是明确没有。
8
+ * - 哪个 id 是思考档只经 `modelOptionLabelKind`,不在这里再列一张名单。
9
+ */
10
+ import { knownEffortLevel, modelOptionLabelKind, reasoningEffortLevel, } from "./executorModelOptions.js";
11
+ /** 认得的思考档位由弱到强的名次;以 `ReasoningEffortLevel` 为键,档位表加了档位这里漏写就编译不过。 */
12
+ const EFFORT_RANK = {
13
+ none: 0,
14
+ minimal: 1,
15
+ low: 2,
16
+ medium: 3,
17
+ high: 4,
18
+ xhigh: 5,
19
+ max: 6,
20
+ ultra: 7,
21
+ };
22
+ /**
23
+ * `previous` 在 `supported` 里就原样返回,否则取最近的一档(距离相同取更强的)。
24
+ * `previous` 不是认得的档位,或 `supported` 里没有认得的档位,返回 undefined。
25
+ */
26
+ export function nearestEffortLevel(previous, supported) {
27
+ if (supported.includes(previous))
28
+ return previous;
29
+ const from = reasoningEffortLevel(previous);
30
+ if (from === undefined)
31
+ return undefined;
32
+ const fromRank = EFFORT_RANK[from];
33
+ let best;
34
+ for (const id of supported) {
35
+ const level = reasoningEffortLevel(id);
36
+ if (level === undefined)
37
+ continue;
38
+ const rank = EFFORT_RANK[level];
39
+ if (best === undefined ||
40
+ Math.abs(rank - fromRank) < Math.abs(best.rank - fromRank) ||
41
+ (Math.abs(rank - fromRank) === Math.abs(best.rank - fromRank) && rank > best.rank)) {
42
+ best = { id, rank };
43
+ }
44
+ }
45
+ return best?.id;
46
+ }
47
+ /** select 描述符里该显示的取值:被标成「改的是正文」的 ultrathink 是退役的产品档,不再可选。 */
48
+ function selectableChoices(descriptor) {
49
+ const retired = descriptor.promptInjectedValues?.includes("ultrathink") === true;
50
+ return descriptor.options
51
+ .map((option) => option.id)
52
+ .filter((id) => !(retired && id === "ultrathink"));
53
+ }
54
+ function descriptorDefault(descriptor, choices) {
55
+ if (descriptor.type === "boolean")
56
+ return descriptor.currentValue;
57
+ const current = descriptor.currentValue;
58
+ if (current !== undefined && acceptsValue(descriptor, choices, current))
59
+ return current;
60
+ const flagged = descriptor.options.find((option) => option.isDefault === true)?.id;
61
+ return flagged !== undefined && choices.includes(flagged) ? flagged : undefined;
62
+ }
63
+ /** 存储值能不能当该描述符的取值;空选项列表是 provider 自己的自定义档,原样放行(退役档除外)。 */
64
+ function acceptsValue(descriptor, choices, value) {
65
+ if (descriptor.type === "boolean")
66
+ return typeof value === "boolean";
67
+ if (typeof value !== "string")
68
+ return false;
69
+ if (descriptor.options.length === 0) {
70
+ return !(value === "ultrathink" && descriptor.promptInjectedValues?.includes(value) === true);
71
+ }
72
+ // 被标成「改的是正文」的取值不是真档位:选项里有也回默认,与旧的取值解析一致。
73
+ return choices.includes(value) && descriptor.promptInjectedValues?.includes(value) !== true;
74
+ }
75
+ /** 同一个 id 重复存了以第一条为准;空 id、空白值不算「选过」。 */
76
+ function storedById(stored) {
77
+ const byId = new Map();
78
+ for (const selection of stored) {
79
+ const id = selection.id.trim();
80
+ // 契约里的取值都是去过空白的;旧数据里带空白的照同样处理,别判成「不支持」。
81
+ const value = typeof selection.value === "string" ? selection.value.trim() : selection.value;
82
+ if (id === "" || value === "" || byId.has(id))
83
+ continue;
84
+ byId.set(id, value);
85
+ }
86
+ return byId;
87
+ }
88
+ /**
89
+ * 一个型号的档位解析。
90
+ *
91
+ * - `descriptors`:该型号在目录里的描述符;`null` = 不知道(未列出、目录没确认、能力未报)。
92
+ * - `moveEffort`:新建会话时型号被换掉的那一次,思考档的存储值不被新型号支持就挪到最近一档。
93
+ */
94
+ export function resolveModelOptions(input) {
95
+ const storedMap = storedById(input.stored);
96
+ const options = [];
97
+ const hints = [];
98
+ if (input.descriptors === null) {
99
+ for (const [id, value] of storedMap) {
100
+ options.push({
101
+ id,
102
+ kind: modelOptionLabelKind(id),
103
+ stored: value,
104
+ effective: value,
105
+ source: "unknown",
106
+ supported: true,
107
+ });
108
+ }
109
+ return { options, dispatch: dispatchOf(options), hints };
110
+ }
111
+ const seen = new Set();
112
+ for (const descriptor of input.descriptors) {
113
+ if (seen.has(descriptor.id))
114
+ continue;
115
+ seen.add(descriptor.id);
116
+ const kind = modelOptionLabelKind(descriptor.id);
117
+ const choices = descriptor.type === "select" ? selectableChoices(descriptor) : undefined;
118
+ const fallback = descriptorDefault(descriptor, choices ?? []);
119
+ const base = { id: descriptor.id, kind, ...(choices === undefined ? {} : { choices }) };
120
+ const value = storedMap.get(descriptor.id);
121
+ if (value === undefined) {
122
+ options.push({
123
+ ...base,
124
+ stored: undefined,
125
+ effective: fallback,
126
+ source: "default",
127
+ supported: true,
128
+ });
129
+ continue;
130
+ }
131
+ if (acceptsValue(descriptor, choices ?? [], value)) {
132
+ options.push({
133
+ ...base,
134
+ stored: value,
135
+ effective: value,
136
+ source: "explicit",
137
+ supported: true,
138
+ });
139
+ continue;
140
+ }
141
+ const moved = input.moveEffort &&
142
+ typeof value === "string" &&
143
+ knownEffortLevel(descriptor.id, value) !== undefined &&
144
+ choices !== undefined
145
+ ? nearestEffortLevel(value, choices.filter((choice) => acceptsValue(descriptor, choices, choice)))
146
+ : undefined;
147
+ if (moved !== undefined) {
148
+ hints.push({
149
+ kind: "effort-moved",
150
+ model: input.model,
151
+ optionId: descriptor.id,
152
+ from: value,
153
+ to: moved,
154
+ });
155
+ options.push({
156
+ ...base,
157
+ stored: value,
158
+ effective: moved,
159
+ source: "explicit",
160
+ supported: true,
161
+ });
162
+ continue;
163
+ }
164
+ options.push({
165
+ ...base,
166
+ stored: value,
167
+ effective: fallback,
168
+ source: "default",
169
+ supported: false,
170
+ });
171
+ hints.push({
172
+ kind: "option-unsupported",
173
+ model: input.model,
174
+ optionId: descriptor.id,
175
+ stored: value,
176
+ effective: fallback,
177
+ });
178
+ }
179
+ // 存了、但该型号根本没有这一格:存储保留,显示与派发都不带。
180
+ for (const [id, value] of storedMap) {
181
+ if (seen.has(id))
182
+ continue;
183
+ options.push({
184
+ id,
185
+ kind: modelOptionLabelKind(id),
186
+ stored: value,
187
+ effective: undefined,
188
+ source: "default",
189
+ supported: false,
190
+ });
191
+ hints.push({
192
+ kind: "option-unsupported",
193
+ model: input.model,
194
+ optionId: id,
195
+ stored: value,
196
+ effective: undefined,
197
+ });
198
+ }
199
+ return { options, dispatch: dispatchOf(options), hints };
200
+ }
201
+ function dispatchOf(options) {
202
+ const out = [];
203
+ for (const option of options) {
204
+ if (!option.supported || option.source === "default" || option.effective === undefined)
205
+ continue;
206
+ out.push({ id: option.id, value: option.effective });
207
+ }
208
+ return out;
209
+ }
210
+ //# sourceMappingURL=modelChoiceOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelChoiceOptions.js","sourceRoot":"","sources":["../src/modelChoiceOptions.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ export type PluginCommandReceipt = ThreadsCommandReceiptsGetOutput;
29
29
  /** 工作主体(人、本机 agent、远端主体):与评论提及同一个形状,指派位另可指向项目成员。 */
30
30
  type WorkPrincipalInput = NonNullable<WorkCommentsPostInput["mentions"]>[number];
31
31
  /** 宿主会问插件的操作。只增不删:老插件登记过的名字永远还认。 */
32
- export type PluginOperationName = "server.upgrade" | "project.archive" | "work.assign" | "work.start";
32
+ export type PluginOperationName = "server.upgrade" | "project.archive" | "work.assign" | "work.start" | "work.dispatch";
33
33
  /**
34
34
  * 交给 check 的入参,按操作名分派。`server.upgrade` 带发起升级的会话;
35
35
  * `project.archive` 带即将归档的项目,拿掉这个项目在这台机器上的文件夹时问的也是它。
@@ -78,6 +78,16 @@ export type PluginOperationCheckInput<O extends PluginOperationName = PluginOper
78
78
  readonly workLineIdAfter: string | null;
79
79
  /** 回答前须用 derivedState.get({ throughSequence }) 追到此已提交序号。 */
80
80
  readonly throughSequence: number;
81
+ } : O extends "work.dispatch" ? {
82
+ readonly operation: "work.dispatch";
83
+ readonly projectId: string;
84
+ readonly workItemId: string;
85
+ /** 这件现在所在的工作线;不在任何线上是 `null`。 */
86
+ readonly workLineId: string | null;
87
+ /** 指派位上的本机 agent 成员:引擎要叫醒的就是它在这条线上的会话。 */
88
+ readonly memberId: string;
89
+ /** 回答前须用 derivedState.get({ throughSequence }) 追到此已提交序号。 */
90
+ readonly throughSequence: number;
81
91
  } : never;
82
92
  export interface PluginOperations {
83
93
  /**
@@ -95,6 +105,9 @@ export interface PluginOperations {
95
105
  * 已经由自己做着的空操作不问。入参带提交前的指派 `assignees`、提交之后的 `assigneesAfter`,以及这件提交前后所在的线 `workLineId` / `workLineIdAfter`。
96
106
  * 排在 `work.assign` 之后,两道都拒时先报指派那句。拒绝码是
97
107
  * `start-blocked`;只读、5 秒时限、失败拒绝、持久收据与重放同 `work.assign`。
108
+ * - `work.dispatch` 在引擎按看板叫醒一个本机 agent 成员之前(件派给它之后、线与成员没暂停时)问。回答
109
+ * `allowed: false` 是「这件由我的插件派」:引擎不开会话、不叫醒,`detail` 只进日志。抛错、5 秒不答、插件还在
110
+ * 启动都按认领算(引擎这次不派,下一次触发或补扫再问),所以不会两边都派。只读。
98
111
  *
99
112
  * 具名声明规则对象时用 `PluginOperationCheckInput<"server.upgrade">` 标 check 的入参。
100
113
  * 不要写 `Parameters<PluginOperations["guard"]>[0]`:泛型 O 取不到具体操作,入参会
@@ -1 +1 @@
1
- {"version":3,"file":"pluginContextCommands.d.ts","sourceRoot":"","sources":["../src/pluginContextCommands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEtF;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC;AAExC,MAAM,WAAW,cAAc,CAAC,MAAM;IACpC,uFAAuF;IACvF,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,qFAAqF;IACrF,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC;CACtF;AAED,MAAM,MAAM,oBAAoB,GAAG,+BAA+B,CAAC;AAEnE,oDAAoD;AACpD,KAAK,kBAAkB,GAAG,WAAW,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjF,oCAAoC;AACpC,MAAM,MAAM,mBAAmB,GAC3B,gBAAgB,GAChB,iBAAiB,GACjB,aAAa,GACb,YAAY,CAAC;AAEjB;;;GAGG;AACH,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,IACvF,CAAC,SAAS,gBAAgB,GACtB;IAAE,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACnE,CAAC,SAAS,iBAAiB,GACzB;IACE,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C,GACD,CAAC,SAAS,aAAa,GACrB;IACE,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/D,4DAA4D;IAC5D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC,GACD,CAAC,SAAS,YAAY,GACpB;IACE,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,sDAAsD;IACtD,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,CAAC;IACjC,uBAAuB;IACvB,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC;IACnE;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC;IACxE,kCAAkC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,4DAA4D;IAC5D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC,GACD,KAAK,CAAC;AAElB,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,mBAAmB,EAAE,KAAK,EAAE;QACrD,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;QAClC,QAAQ,CAAC,KAAK,EAAE,CACd,KAAK,EAAE,yBAAyB,CAAC,CAAC,CAAC,KAChC,OAAO,CAAC;YAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAA;SAAE,GAAG;YAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;YAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjG,KAAK,cAAc,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG;IACzD;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE;YACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;YAC3B,2BAA2B;YAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;YACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;SAClC,KAAK,OAAO,CACX;YAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAA;SAAE,GAAG;YAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;YAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAClF,CAAC;KACH,KAAK,cAAc,CAAC;CACtB,CAAC"}
1
+ {"version":3,"file":"pluginContextCommands.d.ts","sourceRoot":"","sources":["../src/pluginContextCommands.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ycodium-ai/plugin-api",
3
- "version": "0.2.3614",
3
+ "version": "0.2.3671",
4
4
  "description": "Types and definePlugin for authoring Ycodium plugins. Zero runtime dependencies.",
5
5
  "keywords": [
6
6
  "ycodium"