@cueai/omni-reader-mcp 1.1.2 → 1.1.3

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.
package/README.md CHANGED
@@ -33,21 +33,21 @@ Bridge 运行时只使用以下产品配置:
33
33
  始终使用已审核的精确版本,不使用隐式 `latest`:
34
34
 
35
35
  ```sh
36
- npx -y @cueai/omni-reader-mcp@1.1.2 setup
36
+ npx -y @cueai/omni-reader-mcp@1.1.3 setup
37
37
  ```
38
38
 
39
39
  交互 setup 支持 Hermes、Cursor、Claude Desktop 和通用 stdio 配置。非交互安装使用同一参数解析和写入逻辑:
40
40
 
41
41
  ```sh
42
- npx -y @cueai/omni-reader-mcp@1.1.2 setup --client hermes --allowed-root /absolute/minimum/root --yes --json
43
- npx -y @cueai/omni-reader-mcp@1.1.2 setup --client cursor --add-root /absolute/minimum/root --yes --json
44
- npx -y @cueai/omni-reader-mcp@1.1.2 setup --client claude-desktop --allowed-root /absolute/minimum/root --yes --json
42
+ npx -y @cueai/omni-reader-mcp@1.1.3 setup --client hermes --allowed-root /absolute/minimum/root --yes --json
43
+ npx -y @cueai/omni-reader-mcp@1.1.3 setup --client cursor --add-root /absolute/minimum/root --yes --json
44
+ npx -y @cueai/omni-reader-mcp@1.1.3 setup --client claude-desktop --allowed-root /absolute/minimum/root --yes --json
45
45
  ```
46
46
 
47
47
  Agent/脚本在 pty 下运行(stdin 仍是 TTY)时,用 `--headless`(别名 `--non-interactive`)显式声明非交互,无需 `--yes` 且绝不读 stdin:
48
48
 
49
49
  ```sh
50
- npx -y @cueai/omni-reader-mcp@1.1.2 setup --client cursor --allowed-root /absolute/minimum/root --headless --json
50
+ npx -y @cueai/omni-reader-mcp@1.1.3 setup --client cursor --allowed-root /absolute/minimum/root --headless --json
51
51
  ```
52
52
 
53
53
  ## 缓存与 journal 隔离
@@ -89,7 +89,14 @@ Agent 将用户提供的来源字符串直接传给 `parse(source)`:
89
89
  - `read_result`
90
90
  - `discard_result`
91
91
 
92
- 每个工具都返回 `structuredContent` 和严格 `outputSchema`。
92
+ 每个工具都返回 `structuredContent` 和严格 `outputSchema`,同时为只读取传统 MCP `content[].text` 的客户端提供等价回退:
93
+
94
+ - `parse` 完成且结果可 inline 时,text 直接返回完整 Markdown;
95
+ - processing、artifact、cleanup、cancel、expired 和 failure 状态,text 返回与 `structuredContent` 字段等价的紧凑 JSON;
96
+ - `read_result` 的 text JSON 包含本次 `result.text` 和可选 `next_cursor`,客户端必须追完所有 cursor 后再拼接正文;
97
+ - `discard_result` 的 text JSON 明确返回 `discarded`,不得仅凭调用成功宣称结果已删除。
98
+
99
+ 这使不展示 `structuredContent` 的客户端也能取得 operation/result 句柄和完整正文,同时不改变支持结构化结果的客户端契约。
93
100
 
94
101
  ## 前台、后台和进度
95
102
 
@@ -128,23 +135,23 @@ Agent 不应自动拆分、转码或上传公共站点;应请用户提供符
128
135
  ## 命令
129
136
 
130
137
  ```sh
131
- npx -y @cueai/omni-reader-mcp@1.1.2 doctor
132
- npx -y @cueai/omni-reader-mcp@1.1.2 doctor --json
133
- npx -y @cueai/omni-reader-mcp@1.1.2 clean
134
- npx -y @cueai/omni-reader-mcp@1.1.2 uninstall --yes --json
138
+ npx -y @cueai/omni-reader-mcp@1.1.3 doctor
139
+ npx -y @cueai/omni-reader-mcp@1.1.3 doctor --json
140
+ npx -y @cueai/omni-reader-mcp@1.1.3 clean
141
+ npx -y @cueai/omni-reader-mcp@1.1.3 uninstall --yes --json
135
142
  ```
136
143
 
137
144
  不带命令运行固定版本会启动 stdio MCP server:
138
145
 
139
146
  ```sh
140
- npx -y @cueai/omni-reader-mcp@1.1.2
147
+ npx -y @cueai/omni-reader-mcp@1.1.3
141
148
  ```
142
149
 
143
150
  `doctor --json` 返回 package/npm/client adapter、Key present/absent、allowed-root 安全状态、endpoint compatibility、artifact、cache mode、onboarding 和 reload 状态;不会输出 Key、私有来源路径或内容。
144
151
 
145
152
  ## 卸载与回滚
146
153
 
147
- `uninstall --yes --json` 只删除当前受信的 1.1.2 Bridge entry;存在匹配的可信备份时恢复原 URL-only `omni-reader` entry。卸载不会删除用户源文件,也不会静默删除未过期的本地结果。
154
+ `uninstall --yes --json` 只删除当前受信的 1.1.3 Bridge entry;存在匹配的可信备份时恢复原 URL-only `omni-reader` entry。卸载不会删除用户源文件,也不会静默删除未过期的本地结果。
148
155
 
149
156
  需要回滚 1.1.1 时:
150
157
 
@@ -6,7 +6,7 @@ export declare const CUBE_GRANT_PROTOCOL_VERSION = "omni.parse_grant.v1";
6
6
  export declare const GRANTED_STREAM_PROTOCOL_VERSION = "omni.granted_parse_stream.v1";
7
7
  export declare const DEFAULT_CUBE_BASE_URL = "https://mcp.cuecue.cn";
8
8
  export declare const DEFAULT_IIIS_GRANTED_BASE_URL = "https://cubefile.ai.iiis.co:9443/omni/granted/";
9
- export declare const BRIDGE_RELEASE_VERSION = "1.1.2";
9
+ export declare const BRIDGE_RELEASE_VERSION = "1.1.3";
10
10
  export declare const REMOTE_OMNI_MCP_URL = "https://mcp.cuecue.cn/api/omni-reader/mcp/";
11
11
  export declare const FOREGROUND_BUDGET_MS = 15000;
12
12
  export declare const STATUS_LONG_POLL_MAX_MS = 20000;
package/dist/constants.js CHANGED
@@ -6,7 +6,7 @@ export const CUBE_GRANT_PROTOCOL_VERSION = "omni.parse_grant.v1";
6
6
  export const GRANTED_STREAM_PROTOCOL_VERSION = "omni.granted_parse_stream.v1";
7
7
  export const DEFAULT_CUBE_BASE_URL = "https://mcp.cuecue.cn";
8
8
  export const DEFAULT_IIIS_GRANTED_BASE_URL = "https://cubefile.ai.iiis.co:9443/omni/granted/";
9
- export const BRIDGE_RELEASE_VERSION = "1.1.2";
9
+ export const BRIDGE_RELEASE_VERSION = "1.1.3";
10
10
  export const REMOTE_OMNI_MCP_URL = "https://mcp.cuecue.cn/api/omni-reader/mcp/";
11
11
  export const FOREGROUND_BUDGET_MS = 15_000;
12
12
  export const STATUS_LONG_POLL_MAX_MS = 20_000;
@@ -210,26 +210,24 @@ export const discardResultToolOutputSchema = z
210
210
  error: stableErrorSchema.optional(),
211
211
  })
212
212
  .strict();
213
- function summarizeForTextFallback(value) {
214
- if (value.status === "failed") {
215
- const error = value.error;
216
- return `Omni failed: ${typeof error?.code === "string" ? error.code : "UNKNOWN"}.`;
213
+ function textFallback(value) {
214
+ if (value.status === "completed") {
215
+ const result = value.result;
216
+ if (result !== null
217
+ && typeof result === "object"
218
+ && !Array.isArray(result)
219
+ && result.kind === "inline"
220
+ && typeof result.text === "string") {
221
+ return result.text;
222
+ }
217
223
  }
218
- if (value.status === "processing")
219
- return "Omni processing.";
220
- if (value.status === "cleanup_pending")
221
- return "Omni cleanup pending.";
222
- if (value.status === "canceled")
223
- return "Omni canceled.";
224
- if (value.status === "expired")
225
- return "Omni result expired.";
226
- return "Omni completed.";
224
+ return JSON.stringify(value);
227
225
  }
228
226
  export function structuredResult(schema, value) {
229
227
  const structuredContent = schema.parse(value);
230
228
  return {
231
229
  ...(structuredContent.status === "failed" ? { isError: true } : {}),
232
230
  structuredContent,
233
- content: [{ type: "text", text: summarizeForTextFallback(structuredContent) }],
231
+ content: [{ type: "text", text: textFallback(structuredContent) }],
234
232
  };
235
233
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cueai/omni-reader-mcp",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
4
4
  "description": "Local stdio MCP bridge for direct Omni document parsing",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",