rubien-mcp-server 0.2.0 → 0.3.0
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 +25 -12
- package/dist/cli.js +11 -18
- package/dist/cli.js.map +1 -1
- package/dist/schemas.js +42 -19
- package/dist/schemas.js.map +1 -1
- package/dist/server.js +1 -1
- package/dist/tools/citations.js +3 -3
- package/dist/tools/io.js +3 -31
- package/dist/tools/io.js.map +1 -1
- package/dist/tools/pdf.js +5 -5
- package/dist/tools/pdf.js.map +1 -1
- package/dist/tools/properties.js +75 -144
- package/dist/tools/properties.js.map +1 -1
- package/dist/tools/read.js +2 -2
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/references.js +114 -41
- package/dist/tools/references.js.map +1 -1
- package/dist/tools/sync.js +1 -1
- package/dist/tools/sync.js.map +1 -1
- package/dist/tools/views.js +17 -34
- package/dist/tools/views.js.map +1 -1
- package/dist/versionGuard.js +7 -5
- package/dist/versionGuard.js.map +1 -1
- package/package.json +15 -4
package/dist/tools/references.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { flagsFromOptions, runCliAsTool } from "../toolHelpers.js";
|
|
3
3
|
export function registerReferenceTools(server) {
|
|
4
|
-
server.registerTool("
|
|
4
|
+
server.registerTool("rubien_search_references", {
|
|
5
5
|
title: "Full-text search",
|
|
6
6
|
description: "Full-text search across the Rubien library. By default searches all 12 indexed FTS columns (title, authors, abstract, notes, journal, doi, publisher, isbn, issn, institution, webContent, siteName). Use `in` to constrain to specific columns — e.g. `in: ['title','abstract']` for topic searches that should ignore notes/web content. Use `op: 'or'` when looking for any of several alternative terms instead of all of them. Returns an array of ReferenceDTO.",
|
|
7
7
|
inputSchema: {
|
|
@@ -40,13 +40,15 @@ export function registerReferenceTools(server) {
|
|
|
40
40
|
"--op": op,
|
|
41
41
|
}),
|
|
42
42
|
]));
|
|
43
|
-
server.registerTool("
|
|
43
|
+
server.registerTool("rubien_list_references", {
|
|
44
44
|
title: "List references",
|
|
45
|
-
description: "List references with filters and sorting. Returns ReferenceDTO[]. Use this for 'most recent', 'by author', 'by year range' queries.",
|
|
45
|
+
description: "List references with filters and sorting, or run a saved view. Returns ReferenceDTO[]. Use this for 'most recent', 'by author', 'by year range' queries. Pass `view` (a saved-view id from rubien_list_views) to run that view's persisted filter/sort config instead — `view` is mutually exclusive with the inline filter/sort params (limit/offset still apply).",
|
|
46
46
|
inputSchema: {
|
|
47
47
|
limit: z.number().int().nonnegative().optional()
|
|
48
48
|
.describe("Maximum results (0 = all)"),
|
|
49
49
|
offset: z.number().int().nonnegative().optional().describe("Skip first N"),
|
|
50
|
+
view: z.number().int().optional()
|
|
51
|
+
.describe("Saved view ID — rows filtered/sorted by that view. Mutually exclusive with the inline filter/sort params below. Discover ids via rubien_list_views."),
|
|
50
52
|
tag: z.number().int().optional().describe("Filter by tag ID"),
|
|
51
53
|
author: z.string().optional().describe("Filter by author name (fuzzy)"),
|
|
52
54
|
yearFrom: z.number().int().optional(),
|
|
@@ -56,8 +58,9 @@ export function registerReferenceTools(server) {
|
|
|
56
58
|
hasPdf: z.boolean().optional(),
|
|
57
59
|
keyword: z.string().optional().describe("Keyword across title/abstract/notes"),
|
|
58
60
|
readingStatus: z
|
|
59
|
-
.
|
|
60
|
-
.optional()
|
|
61
|
+
.string()
|
|
62
|
+
.optional()
|
|
63
|
+
.describe("Filter by reading status. Validated live against the user-extensible Status options (case-sensitive) — see rubien_list_properties for the current set."),
|
|
61
64
|
sortBy: z
|
|
62
65
|
.enum(["year", "dateAdded", "title"])
|
|
63
66
|
.optional(),
|
|
@@ -69,6 +72,7 @@ export function registerReferenceTools(server) {
|
|
|
69
72
|
...flagsFromOptions({
|
|
70
73
|
"--limit": args.limit,
|
|
71
74
|
"--offset": args.offset,
|
|
75
|
+
"--view": args.view,
|
|
72
76
|
"--tag": args.tag,
|
|
73
77
|
"--author": args.author,
|
|
74
78
|
"--year-from": args.yearFrom,
|
|
@@ -82,7 +86,7 @@ export function registerReferenceTools(server) {
|
|
|
82
86
|
"--asc": args.asc,
|
|
83
87
|
}),
|
|
84
88
|
]));
|
|
85
|
-
server.registerTool("
|
|
89
|
+
server.registerTool("rubien_get_reference", {
|
|
86
90
|
title: "Get reference by ID",
|
|
87
91
|
description: "Fetch a single reference by ID. Returns ReferenceDTO.",
|
|
88
92
|
inputSchema: {
|
|
@@ -90,52 +94,93 @@ export function registerReferenceTools(server) {
|
|
|
90
94
|
},
|
|
91
95
|
annotations: { readOnlyHint: true },
|
|
92
96
|
}, async ({ id }) => runCliAsTool(["get", String(id)]));
|
|
93
|
-
server.registerTool("
|
|
94
|
-
title: "
|
|
95
|
-
description: "Create
|
|
97
|
+
server.registerTool("rubien_create_reference", {
|
|
98
|
+
title: "Create reference (one door: locator, BibTeX, or title)",
|
|
99
|
+
description: "Create reference(s) — one door for every input. Pass exactly one of: `source` (ANY locator — DOI / arXiv / PMID / PMCID / ISBN, paper URL, PDF/Markdown file URL, local file path, or folder path; the CLI routes it), `bibtex` (inline BibTeX, can hold multiple entries), or `title` (minimal manual row). May return MULTIPLE items (multi-entry BibTeX, folders) and may return `status: 'existing'` instead of creating — the input matched an existing row (deduped by normalized DOI / PMID / PMCID / ISBN / URL / ISSN+title+year) and non-empty incoming fields were folded into it. Output envelope: `{ items: [{ reference?, status: 'created'|'existing'|'queued'|'failed', intakeId?, input, pdfDownload?, error? }], summary: {created, existing, queued, failed}, diagnostics? }`. Routing notes: an existing local path wins over an identifier-shaped string (escape a DOI as https://doi.org/…); a registered-host .pdf URL resolves metadata AND attaches the PDF (implied downloadPdf); an unregistered .pdf/.md URL is downloaded and imported directly. To fetch a PDF for a reference that already exists, use rubien_download_pdf instead.",
|
|
96
100
|
inputSchema: {
|
|
97
|
-
|
|
98
|
-
value: z
|
|
101
|
+
source: z
|
|
99
102
|
.string()
|
|
100
|
-
.
|
|
103
|
+
.optional()
|
|
104
|
+
.describe("Any locator: identifier (DOI/arXiv/PMID/PMCID/ISBN), paper URL, PDF/Markdown file URL, absolute file path, or folder path. Stdin ('-') is not supported over MCP."),
|
|
105
|
+
bibtex: z
|
|
106
|
+
.string()
|
|
107
|
+
.optional()
|
|
108
|
+
.describe("Inline BibTeX source (can hold multiple entries; persists per entry, continuing past entry failures)"),
|
|
109
|
+
title: z.string().optional().describe("Title for a minimal manual entry"),
|
|
101
110
|
downloadPdf: z
|
|
102
111
|
.boolean()
|
|
103
112
|
.optional()
|
|
104
|
-
.describe("
|
|
113
|
+
.describe("Resolver routes only (identifier / paper-URL source). true = fetch the open-access PDF after resolution; false = explicitly skip (overrides the implied fetch on registered .pdf URLs); absent = the router decides. The reference is saved even if the fetch fails. Adds up to ~3min."),
|
|
114
|
+
format: z
|
|
115
|
+
.enum(["bib", "ris", "md"])
|
|
116
|
+
.optional()
|
|
117
|
+
.describe("File/stdin routes only: format hint; disambiguates a folder holding both .bib and .md."),
|
|
118
|
+
property: z
|
|
119
|
+
.string()
|
|
120
|
+
.optional()
|
|
121
|
+
.describe("Folder route only: property to stamp on every imported reference (default: Tags)"),
|
|
122
|
+
value: z
|
|
123
|
+
.string()
|
|
124
|
+
.optional()
|
|
125
|
+
.describe("Folder route only: value to stamp on `property` (default: folder basename)"),
|
|
105
126
|
},
|
|
106
127
|
annotations: { readOnlyHint: false, destructiveHint: false },
|
|
107
|
-
}, async ({
|
|
108
|
-
|
|
128
|
+
}, async ({ source, bibtex, title, downloadPdf, format, property, value }) => {
|
|
129
|
+
const inputs = [source, bibtex, title].filter((v) => v !== undefined);
|
|
130
|
+
if (inputs.length !== 1) {
|
|
109
131
|
return {
|
|
110
132
|
content: [
|
|
111
133
|
{
|
|
112
134
|
type: "text",
|
|
113
135
|
text: JSON.stringify({
|
|
114
|
-
error: "
|
|
136
|
+
error: "provide exactly one of source / bibtex / title",
|
|
115
137
|
}),
|
|
116
138
|
},
|
|
117
139
|
],
|
|
118
140
|
isError: true,
|
|
119
141
|
};
|
|
120
142
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
143
|
+
// Trim before comparing: the CLI trims the source, so a bare " - "
|
|
144
|
+
// would otherwise slip past this guard and reach stdin routing (which
|
|
145
|
+
// hangs over MCP — the wrapper closes the child's stdin).
|
|
146
|
+
if (source?.trim() === "-") {
|
|
147
|
+
return {
|
|
148
|
+
content: [
|
|
149
|
+
{
|
|
150
|
+
type: "text",
|
|
151
|
+
text: JSON.stringify({
|
|
152
|
+
error: "stdin ('-') is not supported over MCP — pass a file path, URL, or identifier, or invoke rubien-cli directly",
|
|
153
|
+
}),
|
|
154
|
+
},
|
|
155
|
+
],
|
|
156
|
+
isError: true,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
const args = ["add"];
|
|
160
|
+
if (source !== undefined)
|
|
161
|
+
args.push("--source", source);
|
|
162
|
+
if (bibtex !== undefined)
|
|
163
|
+
args.push("--bibtex", bibtex);
|
|
164
|
+
if (title !== undefined)
|
|
165
|
+
args.push("--title", title);
|
|
166
|
+
// Tri-state: absent = router decides; the inversion pair makes
|
|
167
|
+
// "explicitly false" representable (overrides implied fetch).
|
|
168
|
+
if (downloadPdf === true)
|
|
128
169
|
args.push("--download-pdf");
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
170
|
+
else if (downloadPdf === false)
|
|
171
|
+
args.push("--no-download-pdf");
|
|
172
|
+
args.push(...flagsFromOptions({
|
|
173
|
+
"--format": format,
|
|
174
|
+
"--property": property,
|
|
175
|
+
"--value": value,
|
|
176
|
+
}));
|
|
177
|
+
// Route-independent 300s: a thin wrapper can't pick per-route before
|
|
178
|
+
// the CLI routes (max of identity-add 120-300s and import 180s).
|
|
179
|
+
return runCliAsTool(args, { timeoutMs: 300_000 });
|
|
135
180
|
});
|
|
136
|
-
server.registerTool("
|
|
137
|
-
title: "Update reference fields",
|
|
138
|
-
description: "Modify
|
|
181
|
+
server.registerTool("rubien_update_reference", {
|
|
182
|
+
title: "Update reference fields and property cells",
|
|
183
|
+
description: "Modify an existing reference: metadata fields (pass only what changes), `clearFields` to null fields out, and/or `properties` — a cell payload editing built-in and custom property values in ONE atomic call. Payload keys are property names (exact, case-sensitive) or ids (digit-only strings); values: scalar = replace, array = replace multiSelect set, {add:[…], remove:[…]} = incremental multiSelect edit (idempotent), null = clear. For the built-in Tags property, values are stringified tag ids. This edits the VALUES on this reference — to create/rename/delete the choices themselves (options/tags), use rubien_create_option / rubien_update_option / rubien_delete_option. Unknown keys, read-only built-ins (Last Read, Read Count), and type mismatches fail the whole call with a structured error — nothing is partially applied.",
|
|
139
184
|
inputSchema: {
|
|
140
185
|
id: z.number().int(),
|
|
141
186
|
title: z.string().optional(),
|
|
@@ -156,12 +201,29 @@ export function registerReferenceTools(server) {
|
|
|
156
201
|
language: z.string().optional(),
|
|
157
202
|
edition: z.string().optional(),
|
|
158
203
|
readingStatus: z
|
|
159
|
-
.
|
|
160
|
-
.optional()
|
|
161
|
-
|
|
162
|
-
|
|
204
|
+
.string()
|
|
205
|
+
.optional()
|
|
206
|
+
.describe("New reading status. Validated live against the user-extensible Status options (case-sensitive)."),
|
|
207
|
+
clearFields: z.array(z.string()).optional()
|
|
208
|
+
.describe("Field names to clear (set to NULL)."),
|
|
209
|
+
properties: z
|
|
210
|
+
.record(z.union([
|
|
211
|
+
z.string(),
|
|
212
|
+
z.number(),
|
|
213
|
+
z.boolean(),
|
|
214
|
+
z.null(),
|
|
215
|
+
z.array(z.string()),
|
|
216
|
+
z
|
|
217
|
+
.object({
|
|
218
|
+
add: z.array(z.string()).optional(),
|
|
219
|
+
remove: z.array(z.string()).optional(),
|
|
220
|
+
})
|
|
221
|
+
.strict(),
|
|
222
|
+
]))
|
|
223
|
+
.optional()
|
|
224
|
+
.describe("Property-cell edits keyed by property name or id: scalar/array = replace, {add/remove} = incremental multiSelect edit, null = clear. Example: {\"Status\": \"Reading\", \"Tags\": {\"add\": [\"12\"]}, \"7\": [\"ml\", \"nlp\"], \"Themes\": null}"),
|
|
163
225
|
},
|
|
164
|
-
annotations: { destructiveHint: true },
|
|
226
|
+
annotations: { readOnlyHint: false, destructiveHint: true },
|
|
165
227
|
}, async (args) => {
|
|
166
228
|
const flags = flagsFromOptions({
|
|
167
229
|
"--title": args.title,
|
|
@@ -183,13 +245,20 @@ export function registerReferenceTools(server) {
|
|
|
183
245
|
"--edition": args.edition,
|
|
184
246
|
"--reading-status": args.readingStatus,
|
|
185
247
|
});
|
|
186
|
-
if (args.
|
|
187
|
-
for (const f of args.
|
|
248
|
+
if (args.clearFields) {
|
|
249
|
+
for (const f of args.clearFields)
|
|
188
250
|
flags.push("--clear-field", f);
|
|
189
251
|
}
|
|
252
|
+
// Forward even an empty `{}`: the CLI routes any `--properties` through
|
|
253
|
+
// the unified applyReferenceEdit no-op path (writes nothing when the
|
|
254
|
+
// payload is empty), whereas dropping it would fall to the legacy
|
|
255
|
+
// update that unconditionally saves + notifies.
|
|
256
|
+
if (args.properties !== undefined) {
|
|
257
|
+
flags.push("--properties", JSON.stringify(args.properties));
|
|
258
|
+
}
|
|
190
259
|
return runCliAsTool(["update", String(args.id), ...flags]);
|
|
191
260
|
});
|
|
192
|
-
server.registerTool("
|
|
261
|
+
server.registerTool("rubien_delete_reference", {
|
|
193
262
|
title: "Delete references",
|
|
194
263
|
description: "Permanently delete references by ID. Accepts one or many IDs. Returns { deleted: 'id1,id2,...' }.",
|
|
195
264
|
inputSchema: {
|
|
@@ -198,7 +267,11 @@ export function registerReferenceTools(server) {
|
|
|
198
267
|
.min(1)
|
|
199
268
|
.describe("One or more reference IDs to delete"),
|
|
200
269
|
},
|
|
201
|
-
annotations: {
|
|
270
|
+
annotations: {
|
|
271
|
+
readOnlyHint: false,
|
|
272
|
+
destructiveHint: true,
|
|
273
|
+
idempotentHint: false,
|
|
274
|
+
},
|
|
202
275
|
},
|
|
203
276
|
// Always passes --force: the MCP client's permission layer is the user
|
|
204
277
|
// confirmation point for destructive tools, not the CLI's TTY prompt.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/tools/references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,
|
|
1
|
+
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/tools/references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,ucAAuc;QACzc,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YACnE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;iBACnD,QAAQ,CAAC,8BAA8B,CAAC;YAC3C,EAAE,EAAE,CAAC;iBACF,KAAK,CACJ,CAAC,CAAC,IAAI,CAAC;gBACL,OAAO;gBACP,UAAU;gBACV,OAAO;gBACP,SAAS;gBACT,SAAS;gBACT,KAAK;gBACL,WAAW;gBACX,MAAM;gBACN,MAAM;gBACN,aAAa;gBACb,YAAY;gBACZ,UAAU;aACX,CAAC,CACH;iBACA,QAAQ,EAAE;iBACV,QAAQ,CACP,kEAAkE,CACnE;YACH,EAAE,EAAE,CAAC;iBACF,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBACnB,QAAQ,EAAE;iBACV,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAC3C,YAAY,CAAC;QACX,QAAQ;QACR,KAAK;QACL,GAAG,gBAAgB,CAAC;YAClB,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YACxE,MAAM,EAAE,EAAE;SACX,CAAC;KACH,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,qWAAqW;QACvW,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;iBAC7C,QAAQ,CAAC,2BAA2B,CAAC;YACxC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC1E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;iBAC9B,QAAQ,CAAC,qJAAqJ,CAAC;YAClK,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC7D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YACvE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACzE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YAC9E,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAC9E,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,wJAAwJ,CACzJ;YACH,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;iBACpC,QAAQ,EAAE;YACb,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;SAC/E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CACb,YAAY,CAAC;QACX,MAAM;QACN,GAAG,gBAAgB,CAAC;YAClB,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,OAAO,EAAE,IAAI,CAAC,GAAG;YACjB,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,aAAa,EAAE,IAAI,CAAC,QAAQ;YAC5B,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,WAAW,EAAE,IAAI,CAAC,OAAO;YACzB,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,WAAW,EAAE,IAAI,CAAC,OAAO;YACzB,kBAAkB,EAAE,IAAI,CAAC,aAAa;YACtC,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,OAAO,EAAE,IAAI,CAAC,GAAG;SAClB,CAAC;KACH,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,uDAAuD;QACpE,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;SAC9C;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CACpD,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,KAAK,EAAE,wDAAwD;QAC/D,WAAW,EACT,omCAAomC;QACtmC,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,mKAAmK,CACpK;YACH,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sGAAsG,CAAC;YACnH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACzE,WAAW,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,wRAAwR,CACzR;YACH,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CACP,wFAAwF,CACzF;YACH,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,kFAAkF,CAAC;YAC/F,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,4EAA4E,CAAC;SAC1F;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;QACxE,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QACtE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,gDAAgD;yBACxD,CAAC;qBACH;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QACD,mEAAmE;QACnE,sEAAsE;QACtE,0DAA0D;QAC1D,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EACH,6GAA6G;yBAChH,CAAC;qBACH;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAa,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACrD,+DAA+D;QAC/D,8DAA8D;QAC9D,IAAI,WAAW,KAAK,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACjD,IAAI,WAAW,KAAK,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CACP,GAAG,gBAAgB,CAAC;YAClB,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,QAAQ;YACtB,SAAS,EAAE,KAAK;SACjB,CAAC,CACH,CAAC;QACF,qEAAqE;QACrE,iEAAiE;QACjE,OAAO,YAAY,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,KAAK,EAAE,4CAA4C;QACnD,WAAW,EACT,6zBAA6zB;QAC/zB,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;YACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC1B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC9B,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,iGAAiG,CAClG;YACH,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;iBACxC,QAAQ,CAAC,qCAAqC,CAAC;YAClD,UAAU,EAAE,CAAC;iBACV,MAAM,CACL,CAAC,CAAC,KAAK,CAAC;gBACN,CAAC,CAAC,MAAM,EAAE;gBACV,CAAC,CAAC,MAAM,EAAE;gBACV,CAAC,CAAC,OAAO,EAAE;gBACX,CAAC,CAAC,IAAI,EAAE;gBACR,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACnB,CAAC;qBACE,MAAM,CAAC;oBACN,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;oBACnC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;iBACvC,CAAC;qBACD,MAAM,EAAE;aACZ,CAAC,CACH;iBACA,QAAQ,EAAE;iBACV,QAAQ,CACP,oPAAoP,CACrP;SACJ;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,gBAAgB,CAAC;YAC7B,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,WAAW,EAAE,IAAI,CAAC,OAAO;YACzB,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,WAAW,EAAE,IAAI,CAAC,OAAO;YACzB,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,OAAO,EAAE,IAAI,CAAC,GAAG;YACjB,OAAO,EAAE,IAAI,CAAC,GAAG;YACjB,YAAY,EAAE,IAAI,CAAC,QAAQ;YAC3B,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,aAAa,EAAE,IAAI,CAAC,SAAS;YAC7B,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,YAAY,EAAE,IAAI,CAAC,QAAQ;YAC3B,WAAW,EAAE,IAAI,CAAC,OAAO;YACzB,kBAAkB,EAAE,IAAI,CAAC,aAAa;SACvC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW;gBAAE,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,wEAAwE;QACxE,qEAAqE;QACrE,kEAAkE;QAClE,gDAAgD;QAChD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,YAAY,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,mGAAmG;QACrG,WAAW,EAAE;YACX,GAAG,EAAE,CAAC;iBACH,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;iBACvB,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,qCAAqC,CAAC;SACnD;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,KAAK;SACtB;KACF;IACD,uEAAuE;IACvE,sEAAsE;IACtE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAChB,YAAY,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpE,CAAC;AACJ,CAAC"}
|
package/dist/tools/sync.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { runCliAsTool } from "../toolHelpers.js";
|
|
2
2
|
export function registerSyncTools(server) {
|
|
3
|
-
server.registerTool("
|
|
3
|
+
server.registerTool("rubien_get_sync_status", {
|
|
4
4
|
title: "CloudKit sync status",
|
|
5
5
|
description: "Report the current CloudKit sync state without starting the engine. Shows entitlement presence, iCloud account availability, dirty counts per entity type, tombstones, and engine state snapshot.",
|
|
6
6
|
inputSchema: {},
|
package/dist/tools/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/tools/sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/tools/sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,mMAAmM;QACrM,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAC7C,CAAC;AACJ,CAAC"}
|
package/dist/tools/views.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { flagsFromOptions, runCliAsTool } from "../toolHelpers.js";
|
|
3
3
|
export function registerViewTools(server) {
|
|
4
|
-
server.registerTool("
|
|
4
|
+
server.registerTool("rubien_list_views", {
|
|
5
5
|
title: "List saved views",
|
|
6
|
-
description: "List saved database views (persisted filter/sort/group configurations). Returns DatabaseViewDTO[].",
|
|
6
|
+
description: "List saved database views (persisted filter/sort/group configurations). Returns DatabaseViewDTO[]. To run a view (get its matching references), pass its id as `view` to rubien_list_references.",
|
|
7
7
|
inputSchema: {},
|
|
8
8
|
annotations: { readOnlyHint: true },
|
|
9
9
|
}, async () => runCliAsTool(["views"]));
|
|
10
|
-
server.registerTool("
|
|
10
|
+
server.registerTool("rubien_create_view", {
|
|
11
11
|
title: "Create saved view",
|
|
12
|
-
description: "Create a new saved view. filters / sorts / groupBy must be valid JSON matching the view configuration schema (mirrors what the GUI editor produces). Use
|
|
12
|
+
description: "Create a new saved view. filters / sorts / groupBy must be valid JSON matching the view configuration schema (mirrors what the GUI editor produces). Use rubien_list_views first to see the shape.",
|
|
13
13
|
inputSchema: {
|
|
14
14
|
name: z.string(),
|
|
15
15
|
filters: z
|
|
@@ -25,6 +25,7 @@ export function registerViewTools(server) {
|
|
|
25
25
|
.optional()
|
|
26
26
|
.describe("JSON string: GroupConfig"),
|
|
27
27
|
},
|
|
28
|
+
annotations: { readOnlyHint: false, destructiveHint: false },
|
|
28
29
|
}, async ({ name, filters, sorts, groupBy }) => runCliAsTool([
|
|
29
30
|
"views",
|
|
30
31
|
"--create",
|
|
@@ -35,44 +36,26 @@ export function registerViewTools(server) {
|
|
|
35
36
|
"--group-by": groupBy,
|
|
36
37
|
}),
|
|
37
38
|
]));
|
|
38
|
-
server.registerTool("
|
|
39
|
-
title: "
|
|
40
|
-
description: "Remove a saved view by ID.",
|
|
41
|
-
inputSchema: { id: z.number().int() },
|
|
42
|
-
annotations: { destructiveHint: true },
|
|
43
|
-
}, async ({ id }) => runCliAsTool(["views", "--delete", "--id", String(id)]));
|
|
44
|
-
server.registerTool("rubien_views_rename", {
|
|
45
|
-
title: "Rename saved view",
|
|
39
|
+
server.registerTool("rubien_update_view", {
|
|
40
|
+
title: "Update saved view (rename)",
|
|
46
41
|
description: "Change a saved view's name.",
|
|
47
42
|
inputSchema: { id: z.number().int(), name: z.string() },
|
|
43
|
+
annotations: { readOnlyHint: false, destructiveHint: false },
|
|
48
44
|
}, async ({ id, name }) => runCliAsTool([
|
|
49
45
|
"views",
|
|
50
46
|
"--rename",
|
|
51
|
-
"--id",
|
|
52
47
|
String(id),
|
|
53
48
|
"--name",
|
|
54
49
|
name,
|
|
55
50
|
]));
|
|
56
|
-
server.registerTool("
|
|
57
|
-
title: "
|
|
58
|
-
description: "
|
|
59
|
-
inputSchema: {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
.max(1000)
|
|
66
|
-
.optional()
|
|
67
|
-
.describe("Result cap (default 100)"),
|
|
68
|
-
},
|
|
69
|
-
annotations: { readOnlyHint: true },
|
|
70
|
-
}, async ({ id, limit }) => runCliAsTool([
|
|
71
|
-
"views",
|
|
72
|
-
"--query",
|
|
73
|
-
"--id",
|
|
74
|
-
String(id),
|
|
75
|
-
...flagsFromOptions({ "--limit": limit }),
|
|
76
|
-
]));
|
|
51
|
+
server.registerTool("rubien_delete_view", {
|
|
52
|
+
title: "Delete saved view",
|
|
53
|
+
description: "Remove a saved view by ID.",
|
|
54
|
+
inputSchema: { id: z.number().int() },
|
|
55
|
+
annotations: { readOnlyHint: false, destructiveHint: true },
|
|
56
|
+
},
|
|
57
|
+
// NB: `--delete` takes the id as its value (`views --delete <id>`) — the
|
|
58
|
+
// 0.2.0 wrapper's `--delete --id <id>` form never parsed.
|
|
59
|
+
async ({ id }) => runCliAsTool(["views", "--delete", String(id)]));
|
|
77
60
|
}
|
|
78
61
|
//# sourceMappingURL=views.js.map
|
package/dist/tools/views.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/tools/views.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/tools/views.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,kMAAkM;QACpM,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CACpC,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,oMAAoM;QACtM,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,2BAA2B,CAAC;YACxC,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yBAAyB,CAAC;YACtC,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0BAA0B,CAAC;SACxC;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAC1C,YAAY,CACV;QACE,OAAO;QACP,UAAU;QACV,GAAG,gBAAgB,CAAC;YAClB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,OAAO;YACpB,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,OAAO;SACtB,CAAC;KACH,CACF,CACJ,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,6BAA6B;QAC1C,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;QACvD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CACrB,YAAY,CAAC;QACX,OAAO;QACP,UAAU;QACV,MAAM,CAAC,EAAE,CAAC;QACV,QAAQ;QACR,IAAI;KACL,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,4BAA4B;QACzC,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;QACrC,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD,yEAAyE;IACzE,0DAA0D;IAC1D,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CACf,YAAY,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAClD,CAAC;AACJ,CAAC"}
|
package/dist/versionGuard.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The minimum rubien-cli build this server requires. Equals the
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* The minimum rubien-cli build this server requires. Equals the build that
|
|
3
|
+
* shipped the unified {op}_{target} surface (add --source one-door, update
|
|
4
|
+
* --properties, properties --update/--update-option, list --view) that the
|
|
5
|
+
* 0.3.0 catalog shells out to. Bump only when a future server release
|
|
6
|
+
* genuinely needs a newer CLI feature; the released CLI's build must always
|
|
7
|
+
* be >= this value.
|
|
6
8
|
*/
|
|
7
|
-
export const MIN_CLI_BUILD =
|
|
9
|
+
export const MIN_CLI_BUILD = 26;
|
|
8
10
|
const RELEASES = "https://github.com/devzhk/Rubien-releases/releases";
|
|
9
11
|
/** Pure decision: is the discovered CLI new enough? `info` is null when the
|
|
10
12
|
* CLI has no `version` subcommand (i.e. predates this mechanism). */
|
package/dist/versionGuard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionGuard.js","sourceRoot":"","sources":["../src/versionGuard.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"versionGuard.js","sourceRoot":"","sources":["../src/versionGuard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAYhC,MAAM,QAAQ,GAAG,oDAAoD,CAAC;AAEtE;sEACsE;AACtE,MAAM,UAAU,kBAAkB,CAChC,IAAuB,EACvB,QAAgB;IAEhB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EACL,yDAAyD;gBACzD,oDAAoD;gBACpD,+DAA+D,QAAQ,WAAW;SACrF,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;QAC1B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EACL,oDAAoD,IAAI,CAAC,KAAK,IAAI;gBAClE,kCAAkC,QAAQ,IAAI;gBAC9C,+DAA+D,QAAQ,WAAW;SACrF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rubien-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "MCP server wrapping rubien-cli so Claude Code and claude.ai can manage the Rubien reference library.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "devzhk",
|
|
7
7
|
"homepage": "https://github.com/devzhk/Rubien-releases#readme",
|
|
8
|
-
"repository": {
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/devzhk/Rubien-releases.git"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/devzhk/Rubien-releases/issues"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"mcp",
|
|
17
|
+
"model-context-protocol",
|
|
18
|
+
"rubien",
|
|
19
|
+
"reference-manager",
|
|
20
|
+
"citations"
|
|
21
|
+
],
|
|
11
22
|
"type": "module",
|
|
12
23
|
"bin": {
|
|
13
24
|
"rubien-mcp-server": "dist/index.js"
|