@stylewx/service 0.1.1 → 0.1.2

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.
@@ -1,12 +1,24 @@
1
1
  /**
2
- * AI 优化文章正文(供本地编辑器「AI 优化」按钮使用)。
2
+ * AI 优化文章正文(供本地编辑器「AI 优化」使用)。
3
3
  * 用 LLM 在不改变事实与主旨的前提下改进标题、结构与文风,返回优化后的 Markdown。
4
+ * 支持:
5
+ * - prompt:额外自定义优化要求(可选);
6
+ * - selection:{ start, end } 只优化该片段(可选),其余部分原样返回(由调用方拼回)。
4
7
  * 需要配置 LLM 环境变量;缺 LLM 时抛出清晰错误。
5
8
  */
6
9
  import type { LlmClient } from './llm.js';
7
10
  export interface OptimizeResult {
8
- /** 优化后的完整 Markdown 正文。 */
11
+ /** 优化后的 Markdown。若只优化片段,则是优化后的该片段本身。 */
9
12
  markdown: string;
10
13
  }
11
- export declare function optimizeArticle(markdown: string, llm: LlmClient): Promise<OptimizeResult>;
14
+ export interface OptimizeOptions {
15
+ /** 用户自定义优化要求(可选)。 */
16
+ prompt?: string;
17
+ /** 只优化 markdown 中 [start, end) 这段;缺省则优化整篇。 */
18
+ selection?: {
19
+ start: number;
20
+ end: number;
21
+ };
22
+ }
23
+ export declare function optimizeArticle(markdown: string, llm: LlmClient, options?: OptimizeOptions): Promise<OptimizeResult>;
12
24
  //# sourceMappingURL=optimize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"optimize.d.ts","sourceRoot":"","sources":["../src/optimize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,UAAU,CAAA;AAGrD,MAAM,WAAW,cAAc;IAC7B,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAWD,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAU/F"}
1
+ {"version":3,"file":"optimize.d.ts","sourceRoot":"","sources":["../src/optimize.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,UAAU,CAAA;AAGrD,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3C;AAmBD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,SAAS,EACd,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAsBzB"}
package/dist/optimize.js CHANGED
@@ -7,13 +7,32 @@ const SYSTEM_PROMPT = [
7
7
  '4. 保留所有 Markdown 语法(列表、引用、表格、代码块、加粗、斜体、高亮等)与结构。',
8
8
  '只输出优化后的完整 Markdown 正文本身,不要任何解释、前言,也不要额外用三反引号把整篇包起来。',
9
9
  ].join('\n');
10
- export async function optimizeArticle(markdown, llm) {
11
- if (!markdown.trim()) {
12
- throw serviceError('missing_content', '缺少文章正文。', '请先在编辑器里输入 Markdown 内容,再点「AI 优化」。');
10
+ const FRAGMENT_SYSTEM = [
11
+ '你是公众号文章优化助手。请只优化下面这一小段文章片段:',
12
+ '1. 保持原意与事实不变,只让语句更通顺、删掉啰嗦表达;',
13
+ '2. 保留片段里所有的 Markdown 语法(加粗/斜体/列表/链接/引用等)与结构;',
14
+ '3. 不要展开、不要新增与原文无关的内容,也不要在开头补标题。',
15
+ '只输出优化后的这一小段本身,不要任何解释、前言,也不要用三反引号把它包起来。',
16
+ ].join('\n');
17
+ export async function optimizeArticle(markdown, llm, options = {}) {
18
+ const { prompt, selection } = options;
19
+ const sel = selection && Number.isInteger(selection.start) && Number.isInteger(selection.end) && selection.end > selection.start
20
+ ? selection
21
+ : undefined;
22
+ const target = sel ? markdown.slice(sel.start, sel.end) : markdown;
23
+ if (!target.trim()) {
24
+ throw serviceError('missing_content', '缺少要优化的内容。', '请先输入 Markdown,或选中要优化的片段。');
13
25
  }
26
+ const user = [];
27
+ if (prompt && prompt.trim())
28
+ user.push('【本次优化要求】\n' + prompt.trim());
29
+ if (sel)
30
+ user.push('【待优化的片段(只调优这一小段)】\n' + target);
31
+ else
32
+ user.push(target);
14
33
  const messages = [
15
- { role: 'system', content: SYSTEM_PROMPT },
16
- { role: 'user', content: markdown },
34
+ { role: 'system', content: sel ? FRAGMENT_SYSTEM : SYSTEM_PROMPT },
35
+ { role: 'user', content: user.join('\n\n') },
17
36
  ];
18
37
  const out = await llm.completeText(messages, { temperature: 0.7 });
19
38
  return { markdown: out.trim() };
@@ -1 +1 @@
1
- {"version":3,"file":"optimize.js","sourceRoot":"","sources":["../src/optimize.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAO1C,MAAM,aAAa,GAAG;IACpB,gDAAgD;IAChD,gCAAgC;IAChC,wBAAwB;IACxB,oBAAoB;IACpB,iDAAiD;IACjD,qDAAqD;CACtD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,GAAc;IACpE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACrB,MAAM,YAAY,CAAC,iBAAiB,EAAE,SAAS,EAAE,kCAAkC,CAAC,CAAA;IACtF,CAAC;IACD,MAAM,QAAQ,GAAiB;QAC7B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE;QAC1C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;KACpC,CAAA;IACD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAA;IAClE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAA;AACjC,CAAC"}
1
+ {"version":3,"file":"optimize.js","sourceRoot":"","sources":["../src/optimize.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAc1C,MAAM,aAAa,GAAG;IACpB,gDAAgD;IAChD,gCAAgC;IAChC,wBAAwB;IACxB,oBAAoB;IACpB,iDAAiD;IACjD,qDAAqD;CACtD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ,MAAM,eAAe,GAAG;IACtB,6BAA6B;IAC7B,8BAA8B;IAC9B,8CAA8C;IAC9C,iCAAiC;IACjC,wCAAwC;CACzC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,GAAc,EACd,UAA2B,EAAE;IAE7B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IACrC,MAAM,GAAG,GACP,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK;QAClH,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS,CAAA;IACf,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IAClE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACnB,MAAM,YAAY,CAAC,iBAAiB,EAAE,WAAW,EAAE,0BAA0B,CAAC,CAAA;IAChF,CAAC;IAED,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACpE,IAAI,GAAG;QAAE,IAAI,CAAC,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,CAAA;;QAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEtB,MAAM,QAAQ,GAAiB;QAC7B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,EAAE;QAClE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;KAC7C,CAAA;IACD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAA;IAClE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAA;AACjC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stylewx/service",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "stylewx shared service layer: composes core/theme/validator/publisher/preview into the 6 high-level operations reused by both MCP Server and REST API.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -17,11 +17,11 @@
17
17
  "sideEffects": false,
18
18
  "dependencies": {
19
19
  "zod": "^4.0.0",
20
- "@stylewx/preview": "0.1.1",
21
- "@stylewx/core": "0.1.1",
22
- "@stylewx/theme": "0.1.1",
23
- "@stylewx/publisher": "0.1.1",
24
- "@stylewx/validator": "0.1.1"
20
+ "@stylewx/core": "0.1.2",
21
+ "@stylewx/preview": "0.1.2",
22
+ "@stylewx/publisher": "0.1.2",
23
+ "@stylewx/theme": "0.1.2",
24
+ "@stylewx/validator": "0.1.2"
25
25
  },
26
26
  "publishConfig": {
27
27
  "access": "public"