@whispering233/ai-editor-tools 0.0.56 → 0.0.58

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.
@@ -0,0 +1,75 @@
1
+ // 工具参数 schema:作家文风练习域(四只读 + 三写 AI 产出,2026-10 改版)
2
+ //
3
+ // 口径见 docs/api/tool-calling.md「练习(2026-10)」与 docs/design/60-practice.md §6/§7:
4
+ // 四个只读工具按 offset / max_chars 分页(缺省与上限 = `query/manuscript.ts` 的
5
+ // `DEFAULT_TEXT_PAGE_CHARS` / `MAX_TEXT_PAGE_CHARS`,与 get_chapter_text 同一对常量);
6
+ // 提交工具的卡内层字段恒 snake_case(同 shared `practiceFeedbackSchema` / FeedbackCard)。
7
+ // 长度上限(题目 / 写作要求)由 shared 常量作 schema 约束——**描述插值 + 校验同源**,不手抄数字。
8
+ import { Type } from "@earendil-works/pi-ai";
9
+ import { MAX_PRACTICE_BRIEF_CHARS, MAX_PRACTICE_TOPIC_CHARS } from "@whispering233/ai-editor-shared";
10
+ /**
11
+ * 分页公共字段(四个只读工具共用):offset 为起始字符下标(缺省 0)、max_chars 为本次最多返回字符数
12
+ * (缺省与上限见 `query/manuscript.ts` 的两个分页常量——实现层 clamp)。
13
+ */
14
+ const textPageFields = {
15
+ offset: Type.Optional(Type.Integer({ minimum: 0 })),
16
+ max_chars: Type.Optional(Type.Integer({ minimum: 1 })),
17
+ };
18
+ /**
19
+ * 仿写侧文本分页入参(get_practice_sample 与 get_practice_draft **同形**:都读样本里的一段文本):
20
+ * sample_id 必填(ps-*)——范文与稿件都挂在样本行上。
21
+ */
22
+ export const practiceTextPageArgsSchema = Type.Object({
23
+ sample_id: Type.String(),
24
+ ...textPageFields,
25
+ }, { additionalProperties: false });
26
+ /**
27
+ * 自由练习稿分页入参(get_free_draft):piece_id 必填(pf-*)。
28
+ * 刻意不做「一个工具 + 多态 id」——两张表的语义与引用校验源不同(见 docs/api/tool-calling.md)。
29
+ */
30
+ export const freeDraftPageArgsSchema = Type.Object({
31
+ piece_id: Type.String(),
32
+ ...textPageFields,
33
+ }, { additionalProperties: false });
34
+ /** 风格说明分页入参(get_style_notes):无 id——风格说明按当前工作区的作家取(一作家一份) */
35
+ export const styleNotesPageArgsSchema = Type.Object({ ...textPageFields }, { additionalProperties: false });
36
+ /**
37
+ * 维度(点评卡的一项):维度名 + 依据/稿件特征 + 证据引用 + 可执行建议——字段与
38
+ * shared `practiceFeedbackSchema` 的 `dimensions[]` 同形(snake_case,勿转换)。
39
+ * 引用数组**可省**(省 = 无证据);落库卡恒有数组(实现层补 `[]`,读取侧形状完整)。
40
+ */
41
+ const feedbackDimensionSchema = Type.Object({
42
+ name: Type.String(),
43
+ sample_trait: Type.String(),
44
+ draft_trait: Type.String(),
45
+ sample_quotes: Type.Optional(Type.Array(Type.String())),
46
+ draft_quotes: Type.Optional(Type.Array(Type.String())),
47
+ advice: Type.String(),
48
+ }, { additionalProperties: false });
49
+ /**
50
+ * submit_style_feedback 入参:sample_id + dimensions(**上限 = shared `MAX_FEEDBACK_DIMENSIONS`**,
51
+ * 实现层校验——工具描述由该常量插值生成)+ summary(可选一句话总评)。
52
+ * **没有「示范」字段**:卡片只做诊断,没有位置放成段文字(docs/design/60-practice.md §6)。
53
+ */
54
+ export const submitStyleFeedbackArgsSchema = Type.Object({
55
+ sample_id: Type.String(),
56
+ dimensions: Type.Array(feedbackDimensionSchema),
57
+ summary: Type.Optional(Type.String()),
58
+ }, { additionalProperties: false });
59
+ /** submit_free_feedback 入参:与仿写侧**同形**,只把 sample_id 换成 piece_id(卡内层与校验口径共用) */
60
+ export const submitFreeFeedbackArgsSchema = Type.Object({
61
+ piece_id: Type.String(),
62
+ dimensions: Type.Array(feedbackDimensionSchema),
63
+ summary: Type.Optional(Type.String()),
64
+ }, { additionalProperties: false });
65
+ /**
66
+ * submit_practice_topic 入参:piece_id + topic + brief?(写 `practice_free_pieces.topic` / `brief`)。
67
+ * 两个长度上限由 shared 常量作 schema 约束(超出即参数校验失败)——描述里的数字同样由常量插值。
68
+ * **题目非空则拒写**(实现层守卫,防覆盖已出的题 / 用户已开始的练习)。
69
+ */
70
+ export const submitPracticeTopicArgsSchema = Type.Object({
71
+ piece_id: Type.String(),
72
+ topic: Type.String({ maxLength: MAX_PRACTICE_TOPIC_CHARS }),
73
+ brief: Type.Optional(Type.String({ maxLength: MAX_PRACTICE_BRIEF_CHARS })),
74
+ }, { additionalProperties: false });
75
+ //# sourceMappingURL=practice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"practice.js","sourceRoot":"","sources":["../../src/schemas/practice.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whispering233/ai-editor-tools",
3
- "version": "0.0.56",
3
+ "version": "0.0.58",
4
4
  "license": "MIT",
5
5
  "description": "AI 工具目录:工具定义 + 执行器",
6
6
  "type": "module",
@@ -26,9 +26,9 @@
26
26
  "postpack": "node ../../scripts/restore-package-json.mjs"
27
27
  },
28
28
  "dependencies": {
29
- "@earendil-works/pi-ai": "0.85.1",
30
- "@whispering233/ai-editor-db": "0.0.56",
31
- "@whispering233/ai-editor-shared": "0.0.56"
29
+ "@earendil-works/pi-ai": "1.0.4",
30
+ "@whispering233/ai-editor-db": "0.0.58",
31
+ "@whispering233/ai-editor-shared": "0.0.58"
32
32
  },
33
33
  "devDependencies": {
34
34
  "typescript": "^5.8.0"