@cueai/omni-reader-mcp 1.5.0 → 1.5.1
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 +12 -12
- package/dist/cli/agent-config.js +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/operation-manager.js +35 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -64,7 +64,7 @@ differ from the numbers above, report the live values.
|
|
|
64
64
|
Always use an audited exact version, never an implicit `latest`:
|
|
65
65
|
|
|
66
66
|
```sh
|
|
67
|
-
npx -y @cueai/omni-reader-mcp@1.5.
|
|
67
|
+
npx -y @cueai/omni-reader-mcp@1.5.1 setup
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
The interactive setup supports Hermes, Cursor, Claude Desktop, and generic stdio
|
|
@@ -72,9 +72,9 @@ configuration. Non-interactive installation uses the same argument parsing and w
|
|
|
72
72
|
logic:
|
|
73
73
|
|
|
74
74
|
```sh
|
|
75
|
-
npx -y @cueai/omni-reader-mcp@1.5.
|
|
76
|
-
npx -y @cueai/omni-reader-mcp@1.5.
|
|
77
|
-
npx -y @cueai/omni-reader-mcp@1.5.
|
|
75
|
+
npx -y @cueai/omni-reader-mcp@1.5.1 setup --client hermes --allowed-root /absolute/minimum/root --yes --json
|
|
76
|
+
npx -y @cueai/omni-reader-mcp@1.5.1 setup --client cursor --add-root /absolute/minimum/root --yes --json
|
|
77
|
+
npx -y @cueai/omni-reader-mcp@1.5.1 setup --client claude-desktop --allowed-root /absolute/minimum/root --yes --json
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
When an agent or script runs under a pty (stdin is still a TTY), declare non-interactive
|
|
@@ -82,7 +82,7 @@ mode explicitly with `--headless` (alias `--non-interactive`): no `--yes` is req
|
|
|
82
82
|
stdin is never read:
|
|
83
83
|
|
|
84
84
|
```sh
|
|
85
|
-
npx -y @cueai/omni-reader-mcp@1.5.
|
|
85
|
+
npx -y @cueai/omni-reader-mcp@1.5.1 setup --client cursor --allowed-root /absolute/minimum/root --headless --json
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
## Cache and journal isolation
|
|
@@ -221,16 +221,16 @@ satisfies the constraints.
|
|
|
221
221
|
## Commands
|
|
222
222
|
|
|
223
223
|
```sh
|
|
224
|
-
npx -y @cueai/omni-reader-mcp@1.5.
|
|
225
|
-
npx -y @cueai/omni-reader-mcp@1.5.
|
|
226
|
-
npx -y @cueai/omni-reader-mcp@1.5.
|
|
227
|
-
npx -y @cueai/omni-reader-mcp@1.5.
|
|
224
|
+
npx -y @cueai/omni-reader-mcp@1.5.1 doctor
|
|
225
|
+
npx -y @cueai/omni-reader-mcp@1.5.1 doctor --json
|
|
226
|
+
npx -y @cueai/omni-reader-mcp@1.5.1 clean
|
|
227
|
+
npx -y @cueai/omni-reader-mcp@1.5.1 uninstall --yes --json
|
|
228
228
|
```
|
|
229
229
|
|
|
230
230
|
Running the pinned version without a command starts the stdio MCP server:
|
|
231
231
|
|
|
232
232
|
```sh
|
|
233
|
-
npx -y @cueai/omni-reader-mcp@1.5.
|
|
233
|
+
npx -y @cueai/omni-reader-mcp@1.5.1
|
|
234
234
|
```
|
|
235
235
|
|
|
236
236
|
`doctor --json` returns package/npm/client adapter, Key present/absent, allowed-root
|
|
@@ -239,12 +239,12 @@ status; it never prints the Key, private source paths, or content.
|
|
|
239
239
|
|
|
240
240
|
## Uninstall and rollback
|
|
241
241
|
|
|
242
|
-
`uninstall --yes --json` removes only a trusted 1.
|
|
242
|
+
`uninstall --yes --json` removes only a trusted 1.5.0 or 1.5.1 Bridge entry; when a
|
|
243
243
|
matching trusted backup exists, it restores the original URL-only `omni-reader` entry.
|
|
244
244
|
Uninstall never deletes user source files and never silently removes unexpired local
|
|
245
245
|
results.
|
|
246
246
|
|
|
247
|
-
To roll back from 1.5.
|
|
247
|
+
To roll back from 1.5.1:
|
|
248
248
|
|
|
249
249
|
1. stop recommending or installing that version;
|
|
250
250
|
2. run `uninstall --yes --json` to restore the trusted URL-only entry;
|
package/dist/cli/agent-config.js
CHANGED
|
@@ -7,7 +7,7 @@ const PACKAGE_SPEC = `@cueai/omni-reader-mcp@${BRIDGE_RELEASE_VERSION}`;
|
|
|
7
7
|
// The release that the current version is a trusted upgrade from: uninstall and
|
|
8
8
|
// rollback recognize exactly {previous, current} and nothing else. Bump this to
|
|
9
9
|
// the version we just published when BRIDGE_RELEASE_VERSION advances.
|
|
10
|
-
const PREVIOUS_RELEASE_VERSION = "1.
|
|
10
|
+
const PREVIOUS_RELEASE_VERSION = "1.5.0";
|
|
11
11
|
const PREVIOUS_PACKAGE_SPEC = `@cueai/omni-reader-mcp@${PREVIOUS_RELEASE_VERSION}`;
|
|
12
12
|
const LEGACY_PACKAGE_SPEC = "@cueai/omni-reader-mcp";
|
|
13
13
|
const TRUSTED_EXACT_PACKAGE_SPECS = new Set([PREVIOUS_PACKAGE_SPEC, PACKAGE_SPEC]);
|
package/dist/constants.d.ts
CHANGED
|
@@ -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.5.
|
|
9
|
+
export declare const BRIDGE_RELEASE_VERSION = "1.5.1";
|
|
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.5.
|
|
9
|
+
export const BRIDGE_RELEASE_VERSION = "1.5.1";
|
|
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;
|
|
@@ -760,7 +760,10 @@ function remoteResultUpdate(result, expectedOperationId) {
|
|
|
760
760
|
operationId: result.operation_id,
|
|
761
761
|
errorCode: null,
|
|
762
762
|
parserStarted: true,
|
|
763
|
-
|
|
763
|
+
// Owner ruling: credits are deducted only on successful completion — the public
|
|
764
|
+
// billed flag mirrors the remote settlement facts (zero-charge completion is a
|
|
765
|
+
// settled fact, not an uncharged one). Never write true unconditionally.
|
|
766
|
+
billed: (result.billing?.credits_charged ?? 0) > 0,
|
|
764
767
|
contentReleased: true,
|
|
765
768
|
stage: "completed",
|
|
766
769
|
progressPercent: 100,
|
|
@@ -778,7 +781,11 @@ function remoteResultUpdate(result, expectedOperationId) {
|
|
|
778
781
|
operationId: result.operation_id,
|
|
779
782
|
errorCode: null,
|
|
780
783
|
parserStarted: true,
|
|
781
|
-
|
|
784
|
+
// The cleanup_pending wire carries no settlement fact (the closed v3/v4 contract
|
|
785
|
+
// exposes usage/billing only on released/delivered/delivery_expired terminals) —
|
|
786
|
+
// report false rather than inventing a charge; the journal allows a later
|
|
787
|
+
// false->true completion fact (assertStableTransition only blocks true->false).
|
|
788
|
+
billed: false,
|
|
782
789
|
contentReleased: result.result !== undefined,
|
|
783
790
|
stage: "cleanup_pending",
|
|
784
791
|
progressPercent: result.result === undefined ? 99 : 100,
|
|
@@ -869,7 +876,8 @@ function localResultValue(local) {
|
|
|
869
876
|
operationCreated: true,
|
|
870
877
|
fileUploaded: true,
|
|
871
878
|
parserStarted: true,
|
|
872
|
-
billed:
|
|
879
|
+
// Owner ruling: an integrity failure settled nothing — never report billed:true.
|
|
880
|
+
billed: false,
|
|
873
881
|
contentReleased: true,
|
|
874
882
|
});
|
|
875
883
|
}
|
|
@@ -996,7 +1004,8 @@ function requireBundleResult(retention) {
|
|
|
996
1004
|
operationCreated: true,
|
|
997
1005
|
fileUploaded: true,
|
|
998
1006
|
parserStarted: true,
|
|
999
|
-
billed:
|
|
1007
|
+
// Owner ruling: an integrity failure settled nothing — never report billed:true.
|
|
1008
|
+
billed: false,
|
|
1000
1009
|
contentReleased: false,
|
|
1001
1010
|
});
|
|
1002
1011
|
}
|
|
@@ -1429,12 +1438,32 @@ export function createLocalParseOperationManager(options) {
|
|
|
1429
1438
|
result: processingParse(operationId, stage, latestPercent, patch.contentReleased === true),
|
|
1430
1439
|
};
|
|
1431
1440
|
}
|
|
1441
|
+
const checkpointBilled = snapshot.patch?.billed === true;
|
|
1432
1442
|
return {
|
|
1433
1443
|
update: {
|
|
1434
1444
|
state: "FAILED",
|
|
1435
|
-
patch:
|
|
1445
|
+
patch: {
|
|
1446
|
+
...failurePatch(stable),
|
|
1447
|
+
// The ACK checkpoint may already have recorded a settled charge
|
|
1448
|
+
// (snapshot.patch at :1751 carries resultPatch's billed fact).
|
|
1449
|
+
// Never regress it — assertStableTransition blocks true->false —
|
|
1450
|
+
// the charge happened; this failure is about the local artifact,
|
|
1451
|
+
// not the settlement.
|
|
1452
|
+
billed: checkpointBilled || stable.billed,
|
|
1453
|
+
},
|
|
1454
|
+
},
|
|
1455
|
+
result: {
|
|
1456
|
+
status: "failed",
|
|
1457
|
+
error: {
|
|
1458
|
+
...stable.toJSON(),
|
|
1459
|
+
// Deliberately the checkpoint fact only (not the OR): the failed
|
|
1460
|
+
// public result reports exactly what this run settled — false
|
|
1461
|
+
// when nothing was settled (owner ruling), true when the ACK
|
|
1462
|
+
// checkpoint already recorded the charge and the failure is
|
|
1463
|
+
// about local delivery, not the settlement.
|
|
1464
|
+
billed: checkpointBilled,
|
|
1465
|
+
},
|
|
1436
1466
|
},
|
|
1437
|
-
result: { status: "failed", error: stable.toJSON() },
|
|
1438
1467
|
};
|
|
1439
1468
|
}
|
|
1440
1469
|
finally {
|