nusus 0.4.1 → 0.5.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 CHANGED
@@ -68,8 +68,10 @@ nusus retrieve "النية" --max-passages 3 --max-chars 2000
68
68
 
69
69
  # Page / metadata (live)
70
70
  nusus get-page --book-id 147927 --page-id 5
71
+ nusus get-pages --book-id 147927 --from 5 --to 7
71
72
  nusus get-context --book-id 147927 --page-id 5 --pages-before 1 --pages-after 1
72
73
  nusus get-book 147927
74
+ nusus find-toc "الحديث الأول" --book-id 147927 --limit 10
73
75
  nusus get-author 44
74
76
  ```
75
77
 
@@ -77,9 +79,10 @@ Default stdout is **JSONL** (one object per line, camelCase, every line has `typ
77
79
 
78
80
  | Record `type` | Commands |
79
81
  | --- | --- |
80
- | `meta` | First line of `find-books`, `find-authors`, `search`, `retrieve` |
82
+ | `meta` | First line of `find-books`, `find-authors`, `search`, `retrieve`, `get-pages`, `find-toc` |
81
83
  | `book` / `author` / `category` / `catalog` | Discovery + `get-book` / `get-author` |
82
- | `passage` | `search`, `retrieve`, `get-page`, `get-context` |
84
+ | `passage` | `search`, `retrieve`, `get-page`, `get-pages`, `get-context` |
85
+ | `toc-entry` | `find-toc` |
83
86
 
84
87
  | Exit | Meaning |
85
88
  | --- | --- |
@@ -38,6 +38,7 @@ export declare const createTurathClient: (options?: TurathClientOptions) => {
38
38
  search: (query: string, options?: TurathSearchOptions) => Promise<SearchPage>;
39
39
  searchAll: (query: string, options?: Omit<TurathSearchOptions, "page">) => AsyncGenerator<Passage>;
40
40
  getContext: (source: Passage, options?: ContextOptions) => Promise<Passage>;
41
+ getContextByPage: (bookId: TurathId, pageId: TurathId, options?: ContextOptions) => Promise<Passage>;
41
42
  retrieve: (query: string, options?: RetrieveOptions) => Promise<RetrievedContext>;
42
43
  formatCitation: (source: CitationSource) => string;
43
44
  getLocator: (source: CitationSource) => import("../models.js").SourceLocator;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/turath/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EACJ,OAAO,EAEP,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,QAAQ,EACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAA6D,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAWhH,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAEtD,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG;IACjD,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AA0BnD,eAAO,MAAM,kBAAkB,GAAI,UAAS,mBAAwB;;;;;0BAG/B,QAAQ,eAAc,cAAc;sBAOxC,QAAQ,eAAc,cAAc,KAAQ,OAAO,CAAC,IAAI,CAAC;sBAKzD,QAAQ,UAAU,QAAQ,eAAc,cAAc,KAAQ,OAAO,CAAC,OAAO,CAAC;uBASnG,QAAQ,SACT;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,eACvB,cAAc,KACzB,OAAO,CAAC,OAAO,EAAE,CAAC;oBAWQ,MAAM,YAAW,mBAAmB,KAAQ,OAAO,CAAC,UAAU,CAAC;uBA2BlD,MAAM,YAAW,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,KAAQ,cAAc,CAAC,OAAO,CAAC;yBAgBzF,OAAO,YAAW,cAAc,KAAQ,OAAO,CAAC,OAAO,CAAC;sBAuB3D,MAAM,YAAW,eAAe,KAAQ,OAAO,CAAC,gBAAgB,CAAC;6BAuDrE,cAAc;yBAClB,cAAc;2BACZ,cAAc;CAExC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/turath/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EACJ,OAAO,EAEP,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,QAAQ,EACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAA6D,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAWhH,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAEtD,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG;IACjD,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AA6BnD,eAAO,MAAM,kBAAkB,GAAI,UAAS,mBAAwB;;;;;0BAG/B,QAAQ,eAAc,cAAc;sBAOxC,QAAQ,eAAc,cAAc,KAAQ,OAAO,CAAC,IAAI,CAAC;sBAKzD,QAAQ,UAAU,QAAQ,eAAc,cAAc,KAAQ,OAAO,CAAC,OAAO,CAAC;uBA6BnG,QAAQ,SACT;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,eACvB,cAAc,KACzB,OAAO,CAAC,OAAO,EAAE,CAAC;oBASQ,MAAM,YAAW,mBAAmB,KAAQ,OAAO,CAAC,UAAU,CAAC;uBA2BlD,MAAM,YAAW,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,KAAQ,cAAc,CAAC,OAAO,CAAC;yBAmDzF,OAAO,YAAW,cAAc,KAAQ,OAAO,CAAC,OAAO,CAAC;+BAiBhF,QAAQ,UACR,QAAQ,YACP,cAAc,KACtB,OAAO,CAAC,OAAO,CAAC;sBAWY,MAAM,YAAW,eAAe,KAAQ,OAAO,CAAC,gBAAgB,CAAC;6BAwDrE,cAAc;yBAClB,cAAc;2BACZ,cAAc;CAExC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -25,6 +25,8 @@ const only = (values, name) => {
25
25
  return id(values[0], name);
26
26
  };
27
27
  const emptyObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && Object.keys(value).length === 0;
28
+ /** Parallel page fetches for multi-page context; bounded for large ranges. */
29
+ const PAGE_FETCH_CONCURRENCY = 6;
28
30
  export const createTurathClient = (options = {}) => {
29
31
  const request = createTransport(options);
30
32
  const getAuthor = async (authorId, { signal } = {}) => {
@@ -46,15 +48,30 @@ export const createTurathClient = (options = {}) => {
46
48
  throw new NususError("NOT_FOUND", `Book ${book}, page ${page} not found`);
47
49
  return normalizePage(raw, book);
48
50
  };
51
+ const fetchPagesConcurrent = async (book, pageNumbers, signal) => {
52
+ if (!pageNumbers.length)
53
+ return [];
54
+ const results = new Array(pageNumbers.length);
55
+ let cursor = 0;
56
+ const worker = async () => {
57
+ while (cursor < pageNumbers.length) {
58
+ const index = cursor;
59
+ cursor += 1;
60
+ results[index] = await getPage(book, pageNumbers[index], { signal });
61
+ }
62
+ };
63
+ const workers = Math.min(PAGE_FETCH_CONCURRENCY, pageNumbers.length);
64
+ await Promise.all(Array.from({ length: workers }, worker));
65
+ return results;
66
+ };
49
67
  const getPages = async (bookId, range, { signal } = {}) => {
50
68
  integer(range.from, "from", 1);
51
69
  integer(range.to, "to", range.from);
52
- // ponytail: sequential page fetches; add bounded concurrency if large ranges get slow (Phase 3)
53
- const pages = [];
54
- for (let page = range.from; page <= range.to; page += 1) {
55
- pages.push(await getPage(bookId, page, { signal }));
56
- }
57
- return pages;
70
+ const book = id(bookId, "book id");
71
+ const pageNumbers = [];
72
+ for (let page = range.from; page <= range.to; page += 1)
73
+ pageNumbers.push(page);
74
+ return fetchPagesConcurrent(book, pageNumbers, signal);
58
75
  };
59
76
  const search = async (query, options = {}) => {
60
77
  if (!query.trim())
@@ -95,23 +112,26 @@ export const createTurathClient = (options = {}) => {
95
112
  page += 1;
96
113
  }
97
114
  };
98
- const getContext = async (source, options = {}) => {
99
- const center = source.location.internalPage;
100
- if (center === undefined)
101
- throw new NususError("INVALID_ARGUMENT", "passage has no internal page");
102
- integer(center, "internal page", 1);
103
- const before = integer(options.pagesBefore ?? 1, "pagesBefore");
104
- const after = integer(options.pagesAfter ?? 1, "pagesAfter");
105
- const pages = [];
106
- for (let page = Math.max(1, center - before); page <= center + after; page += 1) {
115
+ const fetchPageRange = async (book, from, to, center, signal) => {
116
+ const pageNumbers = [];
117
+ for (let page = from; page <= to; page += 1)
118
+ pageNumbers.push(page);
119
+ const fetched = await Promise.all(pageNumbers.map(async (page) => {
107
120
  try {
108
- pages.push(await getPage(source.book.id, page, { signal: options.signal }));
121
+ return { page, passage: await getPage(book, page, { signal }) };
109
122
  }
110
123
  catch (error) {
111
124
  if (!(error instanceof NususError) || error.code !== "NOT_FOUND" || page === center)
112
125
  throw error;
126
+ return undefined;
113
127
  }
114
- }
128
+ }));
129
+ return fetched
130
+ .filter((entry) => entry !== undefined)
131
+ .sort((a, b) => a.page - b.page)
132
+ .map((entry) => entry.passage);
133
+ };
134
+ const buildContextPassage = (source, pages) => {
115
135
  const headings = [...new Set(pages.flatMap((page) => page.headings))];
116
136
  return decoratePassage({
117
137
  ...source,
@@ -120,6 +140,27 @@ export const createTurathClient = (options = {}) => {
120
140
  raw: pages.map((page) => page.raw),
121
141
  });
122
142
  };
143
+ const getContext = async (source, options = {}) => {
144
+ const center = source.location.internalPage;
145
+ if (center === undefined)
146
+ throw new NususError("INVALID_ARGUMENT", "passage has no internal page");
147
+ integer(center, "internal page", 1);
148
+ const before = integer(options.pagesBefore ?? 1, "pagesBefore");
149
+ const after = integer(options.pagesAfter ?? 1, "pagesAfter");
150
+ const pages = await fetchPageRange(source.book.id, Math.max(1, center - before), center + after, center, options.signal);
151
+ return buildContextPassage(source, pages);
152
+ };
153
+ const getContextByPage = async (bookId, pageId, options = {}) => {
154
+ const book = id(bookId, "book id");
155
+ const center = integer(Number(id(pageId, "page id")), "page id", 1);
156
+ const before = integer(options.pagesBefore ?? 1, "pagesBefore");
157
+ const after = integer(options.pagesAfter ?? 1, "pagesAfter");
158
+ const pages = await fetchPageRange(book, Math.max(1, center - before), center + after, center, options.signal);
159
+ const centerPage = pages.find((page) => page.location.internalPage === center);
160
+ if (!centerPage)
161
+ throw new NususError("NOT_FOUND", `Book ${book}, page ${center} not found`);
162
+ return buildContextPassage(centerPage, pages);
163
+ };
123
164
  const retrieve = async (query, options = {}) => {
124
165
  const maxPassages = integer(options.maxPassages ?? 5, "maxPassages", 1);
125
166
  const maxChars = integer(options.maxCharsPerPassage ?? 4_000, "maxCharsPerPassage", 1);
@@ -173,6 +214,7 @@ export const createTurathClient = (options = {}) => {
173
214
  search,
174
215
  searchAll,
175
216
  getContext,
217
+ getContextByPage,
176
218
  retrieve,
177
219
  formatCitation: (source) => formatCitation(source),
178
220
  getLocator: (source) => getLocator(source),
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/turath/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/turath/client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nusus",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "TypeScript SDK and agent CLI for searching and citing classical Islamic and Arabic texts via Turath",
5
5
  "keywords": [
6
6
  "turath",
@@ -11,6 +11,7 @@ import { NususError } from "../dist/errors.js";
11
11
  const DEFAULT_TIMEOUT = 15_000;
12
12
  const MAX_TIMEOUT = 600_000;
13
13
  const MAX_FILTER_IDS = 50;
14
+ const MAX_PAGE_SPAN = 20;
14
15
  const VERSION = createRequire(import.meta.url)(join(dirname(fileURLToPath(import.meta.url)), "../package.json")).version;
15
16
 
16
17
  const EXIT = {
@@ -94,6 +95,11 @@ const writeText = (record) => {
94
95
  `passage\t${record.book?.id ?? "?"}\t${record.citation ?? ""}\t${record.url ?? ""}\t${preview(record.text)}\n`,
95
96
  );
96
97
  break;
98
+ case "toc-entry":
99
+ process.stdout.write(
100
+ `toc-entry\t${record.bookId ?? "?"}\t${record.page ?? ""}\t${record.level ?? ""}\t${record.title}\n`,
101
+ );
102
+ break;
97
103
  default:
98
104
  process.stdout.write(`${record.type}\t${JSON.stringify(record)}\n`);
99
105
  }
@@ -494,8 +500,7 @@ const COMMANDS = {
494
500
  const pageId = parsePositiveId(requireFlag(flags, "page-id"), "page-id");
495
501
  const pagesBefore = parseIntFlag(flags["pages-before"], "pages-before", { def: 1, min: 0, max: 3 });
496
502
  const pagesAfter = parseIntFlag(flags["pages-after"], "pages-after", { def: 1, min: 0, max: 3 });
497
- const center = await turath.getPage(bookId, pageId);
498
- const ctx = await turath.getContext(center, { pagesBefore, pagesAfter });
503
+ const ctx = await turath.getContextByPage(bookId, pageId, { pagesBefore, pagesAfter });
499
504
  emit(format, toPassageRecord(ctx));
500
505
  },
501
506
  },
@@ -519,6 +524,69 @@ const COMMANDS = {
519
524
  emit(format, toAuthorRecord(author));
520
525
  },
521
526
  },
527
+ "get-pages": {
528
+ help: `nusus get-pages --book-id <id> --from <n> --to <m>
529
+ Fetch a contiguous internal page range (max span ${MAX_PAGE_SPAN}).
530
+ Emits meta then one passage per page.
531
+ page numbers are Turath internal pages, not printed pages.`,
532
+ flags: [...GLOBAL_FLAGS, "book-id", "from", "to"],
533
+ run: async ({ turath, format, positionals, flags }) => {
534
+ if (positionals.length) usage("get-pages takes --book-id, --from, and --to flags only");
535
+ const bookId = parsePositiveId(requireFlag(flags, "book-id"), "book-id");
536
+ const from = parseIntFlag(flags.from, "from", { min: 1 });
537
+ const to = parseIntFlag(flags.to, "to", { min: from });
538
+ if (to - from + 1 > MAX_PAGE_SPAN) {
539
+ usage(`page span must be at most ${MAX_PAGE_SPAN} (got ${to - from + 1})`);
540
+ }
541
+ const pages = await turath.getPages(bookId, { from, to });
542
+ emit(format, {
543
+ type: "meta",
544
+ command: "get-pages",
545
+ bookId,
546
+ from,
547
+ to,
548
+ returned: pages.length,
549
+ });
550
+ for (const page of pages) emit(format, toPassageRecord(page));
551
+ },
552
+ },
553
+ "find-toc": {
554
+ help: `nusus find-toc <query> --book-id <id> [--limit N]
555
+ Filter a book's TOC headings by substring match on title (no stemming).
556
+ --limit default 20, max 100`,
557
+ flags: [...GLOBAL_FLAGS, "book-id", "limit"],
558
+ run: async ({ turath, format, positionals, flags }) => {
559
+ const query = takeQuery(positionals);
560
+ const bookId = parsePositiveId(requireFlag(flags, "book-id"), "book-id");
561
+ const limit = parseIntFlag(flags.limit, "limit", { def: 20, min: 1, max: 100 });
562
+ const book = await turath.getBook(bookId);
563
+ const toc = book.toc ?? [];
564
+ const needle = String(query);
565
+ const matches = [];
566
+ for (const entry of toc) {
567
+ if (!entry.title.includes(needle)) continue;
568
+ matches.push(entry);
569
+ if (matches.length >= limit) break;
570
+ }
571
+ emit(format, {
572
+ type: "meta",
573
+ command: "find-toc",
574
+ query,
575
+ bookId,
576
+ limit,
577
+ returned: matches.length,
578
+ });
579
+ for (const entry of matches) {
580
+ emit(format, {
581
+ type: "toc-entry",
582
+ bookId,
583
+ title: entry.title,
584
+ ...(entry.level !== undefined && { level: entry.level }),
585
+ ...(entry.page !== undefined && { page: entry.page }),
586
+ });
587
+ }
588
+ },
589
+ },
522
590
  };
523
591
 
524
592
  const GLOBAL_HELP = `nusus <command> [args] [options]
@@ -531,8 +599,10 @@ Commands:
531
599
  search <query> Live Turath search (JSONL meta + passages)
532
600
  retrieve <query> Live retrieve with citations/locators
533
601
  get-page Fetch one internal page
602
+ get-pages Fetch a contiguous internal page range
534
603
  get-context Fetch page plus surrounding pages
535
604
  get-book <book-id> Book metadata + TOC
605
+ find-toc <query> Filter book TOC by title substring
536
606
  get-author <author-id> Author metadata
537
607
 
538
608
  Global options: