@openread/mcp 0.0.1-test.2 → 0.0.1-test.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/dist/cli.mjs +3 -2
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -3,6 +3,7 @@ import{createRequire as __createRequire}from"module";const require=__createRequi
|
|
|
3
3
|
if(typeof globalThis.DOMMatrix==="undefined"){globalThis.DOMMatrix=class DOMMatrix{constructor(init){const v=init||[];this.a=v[0]??1;this.b=v[1]??0;this.c=v[2]??0;this.d=v[3]??1;this.e=v[4]??0;this.f=v[5]??0;this.m11=this.a;this.m12=this.b;this.m21=this.c;this.m22=this.d;this.m41=this.e;this.m42=this.f;this.is2D=true;this.isIdentity=this.a===1&&this.b===0&&this.c===0&&this.d===1&&this.e===0&&this.f===0;}static fromMatrix(o){return new DOMMatrix([o.a,o.b,o.c,o.d,o.e,o.f]);}static fromFloat64Array(a){return new DOMMatrix(Array.from(a));}static fromFloat32Array(a){return new DOMMatrix(Array.from(a));}inverse(){return new DOMMatrix();}multiply(){return new DOMMatrix();}scale(){return new DOMMatrix();}translate(){return new DOMMatrix();}transformPoint(p){return p||{x:0,y:0};}}}
|
|
4
4
|
if(typeof globalThis.Path2D==="undefined"){globalThis.Path2D=class Path2D{constructor(){}addPath(){}closePath(){}moveTo(){}lineTo(){}bezierCurveTo(){}quadraticCurveTo(){}arc(){}arcTo(){}rect(){}}}
|
|
5
5
|
if(typeof globalThis.ImageData==="undefined"){globalThis.ImageData=class ImageData{constructor(w,h){this.width=w;this.height=h;this.data=new Uint8ClampedArray(w*h*4);}}}
|
|
6
|
+
try{const __M=require("module"),__orig=__M._resolveFilename;__M._resolveFilename=function(r,...a){if(r==="@napi-rs/canvas")return r;return __orig.call(this,r,...a)};require.cache["@napi-rs/canvas"]={id:"@napi-rs/canvas",filename:"@napi-rs/canvas",loaded:true,exports:{createCanvas:()=>({})}}}catch(e){}
|
|
6
7
|
var Z_=Object.create;var Qm=Object.defineProperty;var J_=Object.getOwnPropertyDescriptor;var eC=Object.getOwnPropertyNames;var tC=Object.getPrototypeOf,rC=Object.prototype.hasOwnProperty;var Ue=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var j=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var nC=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of eC(e))!rC.call(r,i)&&i!==t&&Qm(r,i,{get:()=>e[i],enumerable:!(n=J_(e,i))||n.enumerable});return r};var Sh=(r,e,t)=>(t=r!=null?Z_(tC(r)):{},nC(e||!r||!r.__esModule?Qm(t,"default",{value:r,enumerable:!0}):t,r));var kh=j((BF,ob)=>{"use strict";var Ps=r=>r&&typeof r.message=="string",Ch=r=>{if(!r)return;let e=r.cause;if(typeof e=="function"){let t=r.cause();return Ps(t)?t:void 0}else return Ps(e)?e:void 0},sb=(r,e)=>{if(!Ps(r))return"";let t=r.stack||"";if(e.has(r))return t+`
|
|
7
8
|
causes have become circular...`;let n=Ch(r);return n?(e.add(r),t+`
|
|
8
9
|
caused by: `+sb(n,e)):t},dC=r=>sb(r,new Set),ab=(r,e,t)=>{if(!Ps(r))return"";let n=t?"":r.message||"";if(e.has(r))return n+": ...";let i=Ch(r);if(i){e.add(r);let s=typeof r.cause=="function";return n+(s?"":": ")+ab(i,e,s)}else return n},fC=r=>ab(r,new Set);ob.exports={isErrorLike:Ps,getErrorCause:Ch,stackWithCauses:dC,messageWithCauses:fC}});var Ih=j((DF,lb)=>{"use strict";var pC=Symbol("circular-ref-tag"),Vo=Symbol("pino-raw-err-ref"),ub=Object.create({},{type:{enumerable:!0,writable:!0,value:void 0},message:{enumerable:!0,writable:!0,value:void 0},stack:{enumerable:!0,writable:!0,value:void 0},aggregateErrors:{enumerable:!0,writable:!0,value:void 0},raw:{enumerable:!1,get:function(){return this[Vo]},set:function(r){this[Vo]=r}}});Object.defineProperty(ub,Vo,{writable:!0,value:{}});lb.exports={pinoErrProto:ub,pinoErrorSymbols:{seen:pC,rawSymbol:Vo}}});var db=j((FF,hb)=>{"use strict";hb.exports=Ph;var{messageWithCauses:gC,stackWithCauses:mC,isErrorLike:cb}=kh(),{pinoErrProto:bC,pinoErrorSymbols:yC}=Ih(),{seen:Rh}=yC,{toString:vC}=Object.prototype;function Ph(r){if(!cb(r))return r;r[Rh]=void 0;let e=Object.create(bC);e.type=vC.call(r.constructor)==="[object Function]"?r.constructor.name:r.name,e.message=gC(r),e.stack=mC(r),Array.isArray(r.errors)&&(e.aggregateErrors=r.errors.map(t=>Ph(t)));for(let t in r)if(e[t]===void 0){let n=r[t];cb(n)?t!=="cause"&&!Object.prototype.hasOwnProperty.call(n,Rh)&&(e[t]=Ph(n)):e[t]=n}return delete r[Rh],e.raw=r,e}});var pb=j(($F,fb)=>{"use strict";fb.exports=qo;var{isErrorLike:Oh}=kh(),{pinoErrProto:wC,pinoErrorSymbols:xC}=Ih(),{seen:Go}=xC,{toString:SC}=Object.prototype;function qo(r){if(!Oh(r))return r;r[Go]=void 0;let e=Object.create(wC);e.type=SC.call(r.constructor)==="[object Function]"?r.constructor.name:r.name,e.message=r.message,e.stack=r.stack,Array.isArray(r.errors)&&(e.aggregateErrors=r.errors.map(t=>qo(t))),Oh(r.cause)&&!Object.prototype.hasOwnProperty.call(r.cause,Go)&&(e.cause=qo(r.cause));for(let t in r)if(e[t]===void 0){let n=r[t];Oh(n)?Object.prototype.hasOwnProperty.call(n,Go)||(e[t]=qo(n)):e[t]=n}return delete r[Go],e.raw=r,e}});var yb=j((UF,bb)=>{"use strict";bb.exports={mapHttpRequest:EC,reqSerializer:mb};var Lh=Symbol("pino-raw-req-ref"),gb=Object.create({},{id:{enumerable:!0,writable:!0,value:""},method:{enumerable:!0,writable:!0,value:""},url:{enumerable:!0,writable:!0,value:""},query:{enumerable:!0,writable:!0,value:""},params:{enumerable:!0,writable:!0,value:""},headers:{enumerable:!0,writable:!0,value:{}},remoteAddress:{enumerable:!0,writable:!0,value:""},remotePort:{enumerable:!0,writable:!0,value:""},raw:{enumerable:!1,get:function(){return this[Lh]},set:function(r){this[Lh]=r}}});Object.defineProperty(gb,Lh,{writable:!0,value:{}});function mb(r){let e=r.info||r.socket,t=Object.create(gb);if(t.id=typeof r.id=="function"?r.id():r.id||(r.info?r.info.id:void 0),t.method=r.method,r.originalUrl)t.url=r.originalUrl;else{let n=r.path;t.url=typeof n=="string"?n:r.url?r.url.path||r.url:void 0}return r.query&&(t.query=r.query),r.params&&(t.params=r.params),t.headers=r.headers,t.remoteAddress=e&&e.remoteAddress,t.remotePort=e&&e.remotePort,t.raw=r.raw||r,t}function EC(r){return{req:mb(r)}}});var Sb=j((zF,xb)=>{"use strict";xb.exports={mapHttpResponse:AC,resSerializer:wb};var Nh=Symbol("pino-raw-res-ref"),vb=Object.create({},{statusCode:{enumerable:!0,writable:!0,value:0},headers:{enumerable:!0,writable:!0,value:""},raw:{enumerable:!1,get:function(){return this[Nh]},set:function(r){this[Nh]=r}}});Object.defineProperty(vb,Nh,{writable:!0,value:{}});function wb(r){let e=Object.create(vb);return e.statusCode=r.headersSent?r.statusCode:null,e.headers=r.getHeaders?r.getHeaders():r._headers,e.raw=r,e}function AC(r){return{res:wb(r)}}});var Bh=j((jF,Eb)=>{"use strict";var Mh=db(),TC=pb(),Ko=yb(),Xo=Sb();Eb.exports={err:Mh,errWithCause:TC,mapHttpRequest:Ko.mapHttpRequest,mapHttpResponse:Xo.mapHttpResponse,req:Ko.reqSerializer,res:Xo.resSerializer,wrapErrorSerializer:function(e){return e===Mh?e:function(n){return e(Mh(n))}},wrapRequestSerializer:function(e){return e===Ko.reqSerializer?e:function(n){return e(Ko.reqSerializer(n))}},wrapResponseSerializer:function(e){return e===Xo.resSerializer?e:function(n){return e(Xo.resSerializer(n))}}}});var Dh=j((HF,Ab)=>{"use strict";function _C(r,e){return e}Ab.exports=function(){let e=Error.prepareStackTrace;Error.prepareStackTrace=_C;let t=new Error().stack;if(Error.prepareStackTrace=e,!Array.isArray(t))return;let n=t.slice(2),i=[];for(let s of n)s&&i.push(s.getFileName());return i}});var _b=j((WF,Tb)=>{"use strict";Tb.exports=CC;function CC(r={}){let{ERR_PATHS_MUST_BE_STRINGS:e=()=>"fast-redact - Paths must be (non-empty) strings",ERR_INVALID_PATH:t=n=>`fast-redact \u2013 Invalid path (${n})`}=r;return function({paths:i}){i.forEach(s=>{if(typeof s!="string")throw Error(e());try{if(/〇/.test(s))throw Error();let a=(s[0]==="["?"":".")+s.replace(/^\*/,"\u3007").replace(/\.\*/g,".\u3007").replace(/\[\*\]/g,"[\u3007]");if(/\n|\r|;/.test(a)||/\/\*/.test(a))throw Error();Function(`
|
|
@@ -226,5 +227,5 @@ ${m||" (No matches found)"}`}).join(`
|
|
|
226
227
|
===
|
|
227
228
|
|
|
228
229
|
`)}`,g=await _s({content:p,systemPrompt:pF,maxTokens:2048});if(g)return{queries:i,booksSearched:l,samplingUsed:!0,comparison:g}}return{queries:i,booksSearched:l,samplingUsed:!1,results:c}}function s_(){ke("compare_across_books","Compare how different books discuss the same topics. Provide 1-5 queries and optionally limit to specific books. With sampling: returns AI-synthesized comparison. Without sampling: returns match counts and top passages per query per book.",gF,bF)}var vF=/^orsk-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function Me(r){process.stderr.write(`[openread-mcp] ${r}
|
|
229
|
-
`)}function wF(){Me(""),Me("ERROR: OPENREAD_API_KEY environment variable is not set."),Me(""),Me("To get your API key:"),Me(" 1. Open Openread (app.openread.ai)"),Me(" 2. Go to Settings > API Keys"),Me(' 3. Click "Create API Key"'),Me(" 4. Copy the orsk-... key"),Me(""),Me("Then set it in your AI client config:"),Me(" {"),Me(' "mcpServers": {'),Me(' "openread": {'),Me(' "command": "npx",'),Me(' "args": ["-y", "@openread/mcp"],'),Me(' "env": { "OPENREAD_API_KEY": "orsk-..." }'),Me(" }"),Me(" }"),Me(" }"),Me("")}function xF(){let r=process.env.OPENREAD_API_KEY;return r||(wF(),process.exit(1)),vF.test(r)||(Me(`ERROR: Invalid API key format. Expected "orsk-{uuid}", got a ${r.length}-character string starting with "${r.slice(0,5)}..."`),process.exit(1)),r}function SF(){kT(),IT(),RT(),LT(),NT(),UT(),GT(),KT(),XT(),YT(),QT(),ZT(),t_(),n_(),s_()}async function EF(){
|
|
230
|
-
`),process.exit(0)
|
|
230
|
+
`)}function wF(){Me(""),Me("ERROR: OPENREAD_API_KEY environment variable is not set."),Me(""),Me("To get your API key:"),Me(" 1. Open Openread (app.openread.ai)"),Me(" 2. Go to Settings > API Keys"),Me(' 3. Click "Create API Key"'),Me(" 4. Copy the orsk-... key"),Me(""),Me("Then set it in your AI client config:"),Me(" {"),Me(' "mcpServers": {'),Me(' "openread": {'),Me(' "command": "npx",'),Me(' "args": ["-y", "@openread/mcp"],'),Me(' "env": { "OPENREAD_API_KEY": "orsk-..." }'),Me(" }"),Me(" }"),Me(" }"),Me("")}function xF(){let r=process.env.OPENREAD_API_KEY;return r||(wF(),process.exit(1)),vF.test(r)||(Me(`ERROR: Invalid API key format. Expected "orsk-{uuid}", got a ${r.length}-character string starting with "${r.slice(0,5)}..."`),process.exit(1)),r}function SF(){kT(),IT(),RT(),LT(),NT(),UT(),GT(),KT(),XT(),YT(),QT(),ZT(),t_(),n_(),s_()}async function EF(){(process.argv.includes("--version")||process.argv.includes("-v"))&&(process.stdout.write(`0.0.1-test.3
|
|
231
|
+
`),process.exit(0));let r=xF();Me("Starting OpenRead MCP server..."),Me("Authenticating...");let e=new Wo(r);try{await e.initialize(),Me(`Authenticated as ${e.getUserId()}`)}catch(o){o instanceof Error&&Me(`Authentication failed: ${o.message}`),process.exit(1)}let t=new uh,n=new ch(e,t),i=new hh(e.getSupabaseClient());eb({userId:e.getUserId(),bookData:i,loadBook:(o,u,l)=>n.loadBook(o,l??"epub"),requestId:"cli"}),SF();let s=gi(),a=new yF;await s.connect(a),ET({authManager:e,diskCache:t,transport:a}),Me("MCP server ready. Waiting for requests...")}var AF=typeof process<"u"&&!process.env.VITEST;AF&&EF().catch(r=>{Me(`Fatal error: ${r instanceof Error?r.message:String(r)}`),process.exit(1)});export{vF as API_KEY_PATTERN,Me as log,EF as main,wF as printSetupInstructions,SF as registerAllTools,xF as validateApiKey};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openread/mcp",
|
|
3
|
-
"version": "0.0.1-test.
|
|
3
|
+
"version": "0.0.1-test.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "MCP server for Openread - access your book library from AI assistants",
|
|
6
6
|
"keywords": ["mcp", "openread", "books", "ebook", "ai", "claude", "cursor"],
|