@cyanheads/hn-mcp-server 0.6.1 → 0.7.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.
Files changed (35) hide show
  1. package/AGENTS.md +2 -2
  2. package/CLAUDE.md +2 -2
  3. package/README.md +17 -18
  4. package/changelog/0.7.x/0.7.0.md +32 -0
  5. package/dist/mcp-server/tools/definitions/get-stories.tool.d.ts +1 -0
  6. package/dist/mcp-server/tools/definitions/get-stories.tool.d.ts.map +1 -1
  7. package/dist/mcp-server/tools/definitions/get-stories.tool.js +31 -24
  8. package/dist/mcp-server/tools/definitions/get-stories.tool.js.map +1 -1
  9. package/dist/mcp-server/tools/definitions/get-thread.tool.d.ts +3 -1
  10. package/dist/mcp-server/tools/definitions/get-thread.tool.d.ts.map +1 -1
  11. package/dist/mcp-server/tools/definitions/get-thread.tool.js +227 -277
  12. package/dist/mcp-server/tools/definitions/get-thread.tool.js.map +1 -1
  13. package/dist/mcp-server/tools/definitions/get-user.tool.d.ts +0 -1
  14. package/dist/mcp-server/tools/definitions/get-user.tool.d.ts.map +1 -1
  15. package/dist/mcp-server/tools/definitions/get-user.tool.js +27 -73
  16. package/dist/mcp-server/tools/definitions/get-user.tool.js.map +1 -1
  17. package/dist/mcp-server/tools/definitions/search-content.tool.d.ts +3 -16
  18. package/dist/mcp-server/tools/definitions/search-content.tool.d.ts.map +1 -1
  19. package/dist/mcp-server/tools/definitions/search-content.tool.js +62 -127
  20. package/dist/mcp-server/tools/definitions/search-content.tool.js.map +1 -1
  21. package/dist/mcp-server/tools/username-input.d.ts +23 -0
  22. package/dist/mcp-server/tools/username-input.d.ts.map +1 -0
  23. package/dist/mcp-server/tools/username-input.js +30 -0
  24. package/dist/mcp-server/tools/username-input.js.map +1 -0
  25. package/dist/services/hn/hn-service.d.ts +49 -8
  26. package/dist/services/hn/hn-service.d.ts.map +1 -1
  27. package/dist/services/hn/hn-service.js +55 -9
  28. package/dist/services/hn/hn-service.js.map +1 -1
  29. package/package.json +2 -2
  30. package/server.json +3 -3
  31. package/skills/hn-guide/SKILL.md +4 -4
  32. package/dist/mcp-server/tools/response-budget.d.ts +0 -111
  33. package/dist/mcp-server/tools/response-budget.d.ts.map +0 -1
  34. package/dist/mcp-server/tools/response-budget.js +0 -204
  35. package/dist/mcp-server/tools/response-budget.js.map +0 -1
@@ -5,9 +5,11 @@
5
5
  import { tool, z } from '@cyanheads/mcp-ts-core';
6
6
  import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
7
  import { escapeHighlight, escapeInline, escapeQuoted, quoteBody, } from '../markdown-escape.js';
8
- import { byteLength, cutPointer, cutToBytes, fitsBudget, largestFittingLimit, measureResponse, RESPONSE_BUDGET_TEXT, } from '../response-budget.js';
9
8
  import { servedAtCap } from '../served-at-cap.js';
9
+ import { usernameInput } from '../username-input.js';
10
10
  import { dateBoundToEpochMs, dateRangeToEpochSeconds, decodeHtmlEntities, extractDomain, getHnService, normalizeUrl, stripHtml, stripHtmlPreservingEm, } from '../../../services/hn/hn-service.js';
11
+ /** `count` when the caller omits it. */
12
+ const COUNT_DEFAULT = 10;
11
13
  /** Most hits one call serves; a larger `count` is served at this cap. */
12
14
  const COUNT_CAP = 50;
13
15
  /** Largest `count` accepted; anything above it is rejected. */
@@ -104,7 +106,10 @@ export function stripUrlPrefix(query) {
104
106
  const searchCriteria = z
105
107
  .object({
106
108
  tags: z.enum(SEARCH_TAGS).optional().describe('Content-type filter.'),
107
- author: z.string().optional().describe('Author filter — the username matched, trimmed.'),
109
+ author: z
110
+ .string()
111
+ .optional()
112
+ .describe('Author filter — the username as searched: trimmed, with one leading @ dropped.'),
108
113
  storyId: z.number().optional().describe('Discussion filter: a story or poll root id.'),
109
114
  minPoints: z.number().optional().describe('Minimum score.'),
110
115
  minComments: z.number().optional().describe('Minimum comment count.'),
@@ -127,7 +132,7 @@ const searchCriteria = z
127
132
  .describe('Hits per page sent: count as passed, or 50 when count was above that cap.'),
128
133
  view: z.enum(['full', 'compact']).describe('Projection applied to each hit.'),
129
134
  })
130
- .describe('The criteria this search ran with: each filter that was set, as sent — author trimmed, dateRange bounds as the exclusive UTC instants applied — then sort, count, and view, defaults included. Unset filters are absent. The searched query is in query.');
135
+ .describe('The criteria this search ran with: each filter that was set, as sent — author as searched (trimmed, one leading @ dropped), dateRange bounds as the exclusive UTC instants applied — then sort, count, and view, defaults included. Unset filters are absent. The searched query is in query.');
131
136
  /** A whole Unix second as ISO 8601 UTC, e.g. `2024-05-05T08:00:00Z`. */
132
137
  const isoSeconds = (seconds) => new Date(seconds * 1000).toISOString().replace('.000Z', 'Z');
133
138
  /** One trailer line for the criteria; `author`, the one free-text value, is escaped inside its quotes. */
@@ -172,16 +177,23 @@ function appliedFilters(input) {
172
177
  * that ceiling. An empty page past the end names the last valid page when
173
178
  * Algolia reports one; past the ceiling Algolia answers `nbPages: 0`, so the
174
179
  * last page is unknown and the notice resets to page 0. Only a first page with
175
- * no hits is a zero-match search, which names what to relax. After a count
176
- * above the cap, a page lever also names the count it counts in.
180
+ * no hits is a zero-match search, which names what to relax.
181
+ *
182
+ * `page` counts in pages of `count`, so every page lever names the count the
183
+ * search ran at unless that is the default — a caller who sends the lever as
184
+ * written, without count, would otherwise page at the default and repeat or
185
+ * skip hits. Raising count is offered only on page 0, where the larger page
186
+ * still starts at hit 0; on a later page it would move every page boundary.
177
187
  */
178
188
  function pageStateSentence(facts) {
179
189
  const { shown, page, totalHits, totalPages } = facts;
180
- const pageLever = (n) => `${facts.overCap ? `count: ${facts.count}, ` : ''}page: ${n}`;
190
+ const pageLever = (n) => `${facts.count === COUNT_DEFAULT ? '' : `count: ${facts.count}, `}page: ${n}`;
181
191
  if (shown > 0) {
182
192
  const total = `${facts.totalHitsExact === false ? 'about ' : ''}${totalHits}`;
183
193
  if (page + 1 < totalPages) {
184
- const raiseCount = facts.count < COUNT_CAP ? `, or raise count (max ${COUNT_CAP})` : '';
194
+ const raiseCount = page === 0 && facts.count < COUNT_CAP
195
+ ? `, or keep page: 0 and raise count (max ${COUNT_CAP})`
196
+ : '';
185
197
  return `Showing ${shown} of ${total} hits (page ${page} of ${totalPages}). Pass ${pageLever(page + 1)} for more${raiseCount}.`;
186
198
  }
187
199
  return totalHits > HIT_CEILING
@@ -190,12 +202,12 @@ function pageStateSentence(facts) {
190
202
  }
191
203
  if (page > 0) {
192
204
  if (totalPages === 0) {
193
- return `Page ${page} is past the last page Algolia serves for this search (at most 1,000 hits per search), where totalHits and totalPages read 0. Pass page: 0 to start over; if that also returns nothing, the search itself matches nothing.`;
205
+ return `Page ${page} is past the last page Algolia serves for this search (at most 1,000 hits per search), where totalHits and totalPages read 0. Pass ${pageLever(0)} to start over; if that also returns nothing, the search itself matches nothing.`;
194
206
  }
195
207
  /** With one page, the last page is page 0, so one lever covers both. */
196
208
  const lever = totalPages === 1
197
209
  ? `Pass ${pageLever(0)} for that page.`
198
- : `Pass ${pageLever(totalPages - 1)} for the last page, or page: 0 to start over.`;
210
+ : `Pass ${pageLever(totalPages - 1)} for the last page, or ${pageLever(0)} to start over.`;
199
211
  return `Page ${page} is past the last page of results (${totalHits} hits across ${totalPages} page${totalPages === 1 ? '' : 's'}). ${lever}`;
200
212
  }
201
213
  const filters = appliedFilters(facts);
@@ -241,29 +253,15 @@ function causeSentences(facts) {
241
253
  }
242
254
  return sentences;
243
255
  }
244
- /** The sentence disclosing how the page was fitted to the response budget. */
245
- function budgetSentence({ highlightsTextOmitted, cutIds }) {
246
- const budget = `To stay within the ${RESPONSE_BUDGET_TEXT}-byte response budget,`;
247
- const omitted = 'highlights.text is omitted from every hit';
248
- if (cutIds.length === 0)
249
- return `${budget} ${omitted}; matchedWords still lists the matched terms.`;
250
- const cut = `the text of ${cutIds.length === 1 ? 'hit' : 'hits'} ${cutIds.join(', ')} is cut short`;
251
- return `${budget} ${highlightsTextOmitted ? `${omitted} and ` : ''}${cut}; hn_get_thread with a cut hit's id returns its full text, and view: "compact" or a smaller count avoids the cut.`;
252
- }
253
256
  /**
254
257
  * Compose the one `notice` string every search writes. `notice` is last-wins,
255
258
  * so each source goes through here: the page-state sentence first, then the
256
- * cause sentences in input order — query, tags, author, storyId, count — then
257
- * the budget sentence for a page fitted to the response budget. None replaces
258
- * another. Undefined when nothing applies — the last page of an uncapped,
259
- * non-empty search that fit.
259
+ * cause sentences in input order — query, tags, author, storyId, count. None
260
+ * replaces another. Undefined when nothing applies — the last page of an
261
+ * uncapped, non-empty search.
260
262
  */
261
263
  export function composeSearchNotice(facts) {
262
- const sentences = [
263
- pageStateSentence(facts),
264
- ...causeSentences(facts),
265
- facts.budget && budgetSentence(facts.budget),
266
- ].filter((sentence) => sentence != null);
264
+ const sentences = [pageStateSentence(facts), ...causeSentences(facts)].filter((sentence) => sentence != null);
267
265
  return sentences.length > 0 ? sentences.join(' ') : undefined;
268
266
  }
269
267
  /**
@@ -283,26 +281,27 @@ function decodeHighlightTitle(title) {
283
281
  * (comment_text, else story_text — the order `text` reads them in; a job's
284
282
  * job_text is never highlighted) — and the deduplicated
285
283
  * union of matched words across all surfaced fields. Returns undefined when
286
- * nothing matched.
284
+ * Algolia highlighted no field and reported no matched word. That is Algolia's
285
+ * answer, not a finding about the hit: it marks every field `matchLevel: none`
286
+ * on some hits whose body holds every query term.
287
287
  *
288
288
  * Titles are not HTML, though some arrive entity-encoded (`&lt;details&gt;`,
289
289
  * `&#34;`), so the title snippet is entity-decoded between its `<em>` markers
290
290
  * and never tag-stripped. The body highlight, the whole matched body, is
291
291
  * stripped of its HTML with the markers kept.
292
292
  *
293
- * `includeBody` is false under the compact projection, and on a full page over
294
- * the response budget, both of which drop the body highlight — the field that
295
- * repeats a hit's full body text.
293
+ * `includeBody` is false under the compact projection, which drops the body
294
+ * highlight — the field that repeats a hit's full body text.
296
295
  */
297
296
  function extractHighlights(hit, includeBody) {
298
297
  const h = hit._highlightResult;
299
298
  if (!h)
300
299
  return;
301
- const matched = (v) => v != null && v.matchLevel !== 'none';
302
- const title = matched(h.title) ? h.title.value : undefined;
303
- const textHl = matched(h.comment_text)
300
+ const highlighted = (v) => v != null && v.matchLevel !== 'none';
301
+ const title = highlighted(h.title) ? h.title.value : undefined;
302
+ const textHl = highlighted(h.comment_text)
304
303
  ? h.comment_text
305
- : matched(h.story_text)
304
+ : highlighted(h.story_text)
306
305
  ? h.story_text
307
306
  : undefined;
308
307
  const text = includeBody && textHl ? stripHtmlPreservingEm(textHl.value) : undefined;
@@ -349,11 +348,7 @@ const searchHit = z
349
348
  text: z
350
349
  .string()
351
350
  .optional()
352
- .describe(`Body text, HTML stripped: a comment's text, a text post's body, or a job's description. A job description is returned but not keyword-searched or highlighted. Cut short when the page would otherwise exceed the ${RESPONSE_BUDGET_TEXT}-byte response budget, with textTruncated set. Absent when the hit has no body, and always absent under view "compact" — call hn_get_thread with this id to read it.`),
353
- textTruncated: z
354
- .boolean()
355
- .optional()
356
- .describe(`True when text is a prefix of the body, cut short to keep the page within the ${RESPONSE_BUDGET_TEXT}-byte response budget — hn_get_thread with this id returns it whole. Absent when text is whole.`),
351
+ .describe(`Body text, HTML stripped: a comment's text, a text post's body, or a job's description. A job description is returned but not keyword-searched or highlighted. Absent when the hit has no body, and always absent under view "compact" — call hn_get_thread with this id to read it.`),
357
352
  highlights: z
358
353
  .object({
359
354
  title: z
@@ -363,26 +358,26 @@ const searchHit = z
363
358
  text: z
364
359
  .string()
365
360
  .optional()
366
- .describe('The matched body in full, not a snippet (comment_text or story_text), HTML stripped, with matched terms wrapped in `<em>…</em>` — the same text as `text` plus its markers. A literal `<em>` typed into the body is indistinguishable from a marker. Absent when the body did not match, when highlightsTextOmitted is true, and always under view "compact" — matchedWords still lists what matched.'),
361
+ .describe('The matched body in full, not a snippet (comment_text or story_text), HTML stripped, with matched terms wrapped in `<em>…</em>` — the same text as `text` plus its markers. A literal `<em>` typed into the body is indistinguishable from a marker. Absent when Algolia returned no highlight for the body, which does not mean the body lacks the query terms: Algolia leaves some bodies that hold every term unhighlighted. Always absent under view "compact", where matchedWords still lists the matched terms.'),
367
362
  matchedWords: z
368
363
  .array(z.string())
369
364
  .describe('Deduplicated union of matched terms across all searchable fields (title, url, author, comment_text, story_text, story_title).'),
370
365
  })
371
366
  .optional()
372
- .describe('Algolia per-field highlight metadata showing which terms matched and where. Absent when no fields produced a match.'),
367
+ .describe('Algolia per-field highlight metadata showing which terms matched and where. Absent when Algolia returned no highlight and no matched terms for any field, which does not mean the hit lacks the query terms: Algolia leaves some hits that hold every term unhighlighted.'),
373
368
  })
374
369
  .describe('A single Algolia search hit (story, comment, poll, poll option, or job).');
375
370
  /**
376
- * Project an Algolia hit into a search hit. `text` carries its body; under
377
- * `bodyHighlight` its highlights carry the body too — the matched body in full,
378
- * with markers.
371
+ * Project an Algolia hit into a search hit. Under `includeBody`, `text`
372
+ * carries its body and its highlights carry the body too — the matched body in
373
+ * full, with markers.
379
374
  */
380
- function projectHit(hit, text, bodyHighlight) {
381
- const rawText = text ? (hit.comment_text ?? hit.story_text ?? hit.job_text) : undefined;
375
+ function projectHit(hit, includeBody) {
376
+ const rawText = includeBody ? (hit.comment_text ?? hit.story_text ?? hit.job_text) : undefined;
382
377
  const url = normalizeUrl(hit.url);
383
378
  const domain = extractDomain(url);
384
379
  const storyUrl = normalizeUrl(hit.story_url);
385
- const highlights = extractHighlights(hit, bodyHighlight);
380
+ const highlights = extractHighlights(hit, includeBody);
386
381
  const type = hitType(hit._tags);
387
382
  return {
388
383
  id: Number(hit.objectID),
@@ -409,9 +404,6 @@ const searchOutput = z.object({
409
404
  .optional()
410
405
  .describe('The query that was searched — for a URL query, without its leading scheme and www. Absent for a filter-only search.'),
411
406
  });
412
- const searchTrailer = {
413
- criteria: { render: renderCriteria },
414
- };
415
407
  /**
416
408
  * Render highlight metadata as a `> match — …` footer, surfacing each highlights
417
409
  * field separately so structured consumers and the LLM both see what matched.
@@ -429,10 +421,9 @@ function renderHighlights(hl) {
429
421
  parts.push(`body: ${hl.text}`);
430
422
  return parts.length ? `\n\n${quoteBody(`match — ${parts.join(' | ')}`)}` : '';
431
423
  }
432
- /** A hit's quoted body, and after a cut body the unquoted pointer to the whole text, a blank line apart. */
424
+ /** A hit's body, quoted on the lines under its meta line and links. */
433
425
  function renderBody(h) {
434
- const text = h.text ? `\n${quoteBody(h.text)}` : '';
435
- return h.textTruncated ? `${text}\n\n${cutPointer(h.id)}` : text;
426
+ return h.text ? `\n${quoteBody(h.text)}` : '';
436
427
  }
437
428
  /**
438
429
  * A hit's meta line: id, type, and the item a comment replies to, in the order
@@ -579,12 +570,9 @@ export const searchHn = tool('hn_search_content', {
579
570
  .enum(SEARCH_TAGS)
580
571
  .optional()
581
572
  .describe('Filter results by content type: "story", "comment", "poll", or "job", or the story subsets "ask_hn", "show_hn", and "front_page". "front_page" is the HN front page right now (about 30 stories); no filter selects stories from past front pages. The nearest proxy is "story" with dateRange and minPoints — without a query, the default relevance sort ranks by points. Omit to search all types, which also returns poll options (type "pollopt"): records with only an id, author, vote count, and date — hn_get_thread reads an option\'s text and poll.'),
582
- author: z
583
- .string()
584
- .trim()
585
- .min(1, 'blank after trimming whitespace — omit author to search all authors.')
573
+ author: usernameInput('omit author to search all authors.')
586
574
  .optional()
587
- .describe(`Filter results to a specific author — useful for finding a user's posts on a topic. Matches the HN username exactly and is case-sensitive, so a re-cased name finds nothing. Trimmed before filtering; omit the field to search all authors rather than passing a blank string.`),
575
+ .describe(`Filter results to a specific author — useful for finding a user's posts on a topic. Matches the HN username exactly and is case-sensitive, so a re-cased name finds nothing. Trimmed, and one leading @ is dropped, so "@pg" searches pg; a name that still holds whitespace is rejected as a display name. Omit the field to search all authors rather than passing a blank string.`),
588
576
  storyId: z
589
577
  .number()
590
578
  .int()
@@ -619,7 +607,7 @@ export const searchHn = tool('hn_search_content', {
619
607
  .int()
620
608
  .min(1)
621
609
  .max(COUNT_CEILING)
622
- .default(30)
610
+ .default(COUNT_DEFAULT)
623
611
  .describe(`Number of results to return, at most ${COUNT_CAP} per call. A larger value is served at ${COUNT_CAP}: the search runs at count ${COUNT_CAP} from the hit where the requested page starts, and the notice names the count and page to pass next. With page above 0, that hit (page × count) must begin a page of ${COUNT_CAP} hits.`),
624
612
  page: z
625
613
  .number()
@@ -630,7 +618,7 @@ export const searchHn = tool('hn_search_content', {
630
618
  view: z
631
619
  .enum(['full', 'compact'])
632
620
  .default('full')
633
- .describe(`How much of each hit to return. "full" includes every field, within a ${RESPONSE_BUDGET_TEXT}-byte budget on each response surface: a page over it drops highlights.text from every hit (highlightsTextOmitted), and if still over, cuts the longest text bodies to one shared length (textTruncated) — every hit stays on the page. "compact" omits the two body-text fields — \`text\` and \`highlights.text\` — which together can repeat a long comment twice per hit; everything else (id, title, url, domain, author, points, comment count, timestamp, parent story, parentId, storyUrl, title highlight, matchedWords) is unchanged. Use "compact" to scan many results, then pass a hit id to hn_get_thread to read the body you skipped.`),
621
+ .describe('How much of each hit to return. "full" includes every field. "compact" omits the two body-text fields — `text` and `highlights.text` — which together can repeat a long comment twice per hit; everything else (id, title, url, domain, author, points, comment count, timestamp, parent story, parentId, storyUrl, title highlight, matchedWords) is unchanged. Use "compact" to scan many results, then pass a hit id to hn_get_thread to read the body you skipped.'),
634
622
  }),
635
623
  output: searchOutput,
636
624
  enrichment: {
@@ -661,16 +649,14 @@ export const searchHn = tool('hn_search_content', {
661
649
  .number()
662
650
  .optional()
663
651
  .describe(`The count value served: as passed, or ${COUNT_CAP} when count was above that cap.`),
664
- highlightsTextOmitted: z
665
- .boolean()
666
- .optional()
667
- .describe(`True when highlights.text was dropped from every hit to keep this view "full" page within the ${RESPONSE_BUDGET_TEXT}-byte response budget; highlights.title and matchedWords remain. Absent otherwise.`),
668
652
  notice: z
669
653
  .string()
670
654
  .optional()
671
- .describe(`Agent guidance, one string. It opens with the page state: the next page to request while more pages remain, the 1,000-hit ceiling on the last page of a search that matches more, the last valid page when the requested page is past the end, or the filters to relax when a first page comes back empty. Notes on the inputs follow it, then, on a view "full" page fitted to the ${RESPONSE_BUDGET_TEXT}-byte response budget, a sentence naming what was omitted and the ids of hits whose text was cut. Absent when none applies.`),
655
+ .describe('Agent guidance, one string. It opens with the page state: the next page to request while more pages remain, the 1,000-hit ceiling on the last page of a search that matches more, the last valid page when the requested page is past the end, or the filters to relax when a first page comes back empty. Notes on the inputs follow it. Absent when none applies.'),
656
+ },
657
+ enrichmentTrailer: {
658
+ criteria: { render: renderCriteria },
672
659
  },
673
- enrichmentTrailer: searchTrailer,
674
660
  async handler(input, ctx) {
675
661
  const { dateRange } = input;
676
662
  if (dateRange) {
@@ -706,8 +692,7 @@ export const searchHn = tool('hn_search_content', {
706
692
  };
707
693
  const hn = getHnService();
708
694
  const result = await hn.search(params, ctx);
709
- const includeBody = input.view === 'full';
710
- const hits = result.hits.map((hit) => projectHit(hit, includeBody, includeBody));
695
+ const hits = result.hits.map((hit) => projectHit(hit, input.view === 'full'));
711
696
  ctx.log.info('Search completed', {
712
697
  query: params.query,
713
698
  hits: hits.length,
@@ -721,7 +706,7 @@ export const searchHn = tool('hn_search_content', {
721
706
  ? undefined
722
707
  : (result.exhaustive?.nbHits ?? result.exhaustiveNbHits);
723
708
  const bounds = params.dateRange ? dateRangeToEpochSeconds(params.dateRange) : {};
724
- const pageFields = {
709
+ ctx.enrich({
725
710
  criteria: {
726
711
  ...(params.tags != null && { tags: params.tags }),
727
712
  ...(params.author != null && { author: params.author }),
@@ -743,9 +728,10 @@ export const searchHn = tool('hn_search_content', {
743
728
  page,
744
729
  totalPages,
745
730
  ...(totalHits > HIT_CEILING && { reachableHits: HIT_CEILING }),
746
- };
747
- const morePages = shown > 0 && page + 1 < totalPages;
748
- const noticeFacts = {
731
+ });
732
+ if (shown > 0 && page + 1 < totalPages)
733
+ ctx.enrich.truncated({ shown, cap: params.count });
734
+ const notice = composeSearchNotice({
749
735
  ...params,
750
736
  droppedPrefix: searched?.droppedPrefix,
751
737
  shown,
@@ -754,61 +740,10 @@ export const searchHn = tool('hn_search_content', {
754
740
  totalHitsExact,
755
741
  totalPages,
756
742
  overCap,
757
- };
758
- /** The response serving `served`, with the notice and flag for how `budget` fitted it. */
759
- const respond = (served, budget) => ({
760
- output: { hits: served, ...(params.query != null && { query: params.query }) },
761
- notice: composeSearchNotice({ ...noticeFacts, budget }),
762
- highlightsTextOmitted: budget?.highlightsTextOmitted === true,
763
- });
764
- /** Both surfaces of a response as the caller receives it, enrichment and trailer included. */
765
- const measure = (response) => measureResponse({
766
- content: formatSearch(response.output),
767
- result: response.output,
768
- enrichment: {
769
- ...pageFields,
770
- ...(response.highlightsTextOmitted && { highlightsTextOmitted: true }),
771
- ...(morePages && { truncated: true, shown, cap: params.count }),
772
- ...(response.notice != null && { notice: response.notice }),
773
- },
774
- trailer: searchTrailer,
775
743
  });
776
- let response = respond(hits);
777
- if (includeBody && !fitsBudget(measure(response))) {
778
- /** Step 1: drop the body highlight, which repeats the matched body in full, from every hit. */
779
- const highlightsTextOmitted = hits.some((hit) => hit.highlights?.text != null);
780
- const lean = highlightsTextOmitted
781
- ? result.hits.map((hit) => projectHit(hit, true, false))
782
- : hits;
783
- if (highlightsTextOmitted)
784
- response = respond(lean, { highlightsTextOmitted, cutIds: [] });
785
- if (!highlightsTextOmitted || !fitsBudget(measure(response))) {
786
- /** Step 2: cut every body longer than the largest limit they can share. */
787
- const bodies = lean.map((hit) => ({ hit, bytes: hit.text ? byteLength(hit.text) : 0 }));
788
- const cutAt = (limit) => {
789
- const served = bodies.map(({ hit, bytes }) => hit.text && bytes > limit
790
- ? { ...hit, text: cutToBytes(hit.text, limit), textTruncated: true }
791
- : hit);
792
- const cutIds = served.filter((hit) => hit.textTruncated).map((hit) => hit.id);
793
- return respond(served, { highlightsTextOmitted, cutIds });
794
- };
795
- const limit = largestFittingLimit(bodies.map((body) => body.bytes), (limitBytes) => measure(cutAt(limitBytes)));
796
- response = cutAt(limit);
797
- ctx.log.info('Fitted search page to the response budget', {
798
- limitBytes: limit,
799
- cutIds: response.output.hits.filter((hit) => hit.textTruncated).map((hit) => hit.id),
800
- });
801
- }
802
- }
803
- ctx.enrich({
804
- ...pageFields,
805
- ...(response.highlightsTextOmitted && { highlightsTextOmitted: true }),
806
- });
807
- if (morePages)
808
- ctx.enrich.truncated({ shown, cap: params.count });
809
- if (response.notice)
810
- ctx.enrich.notice(response.notice);
811
- return response.output;
744
+ if (notice)
745
+ ctx.enrich.notice(notice);
746
+ return { hits, ...(params.query != null && { query: params.query }) };
812
747
  },
813
748
  format: formatSearch,
814
749
  });
@@ -1 +1 @@
1
- {"version":3,"file":"search-content.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-content.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-content.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-content.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @fileoverview Input schema for an HN account name. `hn_get_user`'s `username`
3
+ * and `hn_search_content`'s `author` both read a name the same way: trimmed,
4
+ * one leading `@` dropped, then refused when it is blank or still holds
5
+ * whitespace, which no HN username does.
6
+ * @module mcp-server/tools/username-input
7
+ */
8
+ import { z } from '@cyanheads/mcp-ts-core';
9
+ /** The rejection for a name that holds whitespace after the trim and the `@` strip — a display name, not an account name. */
10
+ export declare const USERNAME_WHITESPACE_MESSAGE = "contains whitespace \u2014 HN usernames have none; pass the account name from a by or author field, not a display name.";
11
+ /**
12
+ * An HN account name as a caller writes it. The parsed value is the name to
13
+ * look up: `@pg` and ` pg ` both read as `pg`. Only the first `@` is dropped,
14
+ * since `@@pg` has no single reading.
15
+ *
16
+ * `blankRecovery` completes the blank message with what the field's caller
17
+ * should do instead. The strip and the whitespace check run in the handler's
18
+ * parse and are absent from the advertised JSON Schema, which stays
19
+ * `{ type: 'string', minLength: 1 }`: a client validating against a pattern
20
+ * would see the raw value and refuse the padded and `@` forms accepted here.
21
+ */
22
+ export declare function usernameInput(blankRecovery: string): z.ZodString;
23
+ //# sourceMappingURL=username-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"username-input.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/username-input.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAE3C,6HAA6H;AAC7H,eAAO,MAAM,2BAA2B,4HAC8E,CAAC;AAEvH;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,eAOlD"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @fileoverview Input schema for an HN account name. `hn_get_user`'s `username`
3
+ * and `hn_search_content`'s `author` both read a name the same way: trimmed,
4
+ * one leading `@` dropped, then refused when it is blank or still holds
5
+ * whitespace, which no HN username does.
6
+ * @module mcp-server/tools/username-input
7
+ */
8
+ import { z } from '@cyanheads/mcp-ts-core';
9
+ /** The rejection for a name that holds whitespace after the trim and the `@` strip — a display name, not an account name. */
10
+ export const USERNAME_WHITESPACE_MESSAGE = 'contains whitespace — HN usernames have none; pass the account name from a by or author field, not a display name.';
11
+ /**
12
+ * An HN account name as a caller writes it. The parsed value is the name to
13
+ * look up: `@pg` and ` pg ` both read as `pg`. Only the first `@` is dropped,
14
+ * since `@@pg` has no single reading.
15
+ *
16
+ * `blankRecovery` completes the blank message with what the field's caller
17
+ * should do instead. The strip and the whitespace check run in the handler's
18
+ * parse and are absent from the advertised JSON Schema, which stays
19
+ * `{ type: 'string', minLength: 1 }`: a client validating against a pattern
20
+ * would see the raw value and refuse the padded and `@` forms accepted here.
21
+ */
22
+ export function usernameInput(blankRecovery) {
23
+ return z
24
+ .string()
25
+ .trim()
26
+ .overwrite((name) => name.replace(/^@/, ''))
27
+ .min(1, `blank after trimming whitespace and a leading @ — ${blankRecovery}`)
28
+ .refine((name) => !/\s/.test(name), USERNAME_WHITESPACE_MESSAGE);
29
+ }
30
+ //# sourceMappingURL=username-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"username-input.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/username-input.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAE3C,6HAA6H;AAC7H,MAAM,CAAC,MAAM,2BAA2B,GACtC,oHAAoH,CAAC;AAEvH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,aAAqB;IACjD,OAAO,CAAC;SACL,MAAM,EAAE;SACR,IAAI,EAAE;SACN,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,EAAE,qDAAqD,aAAa,EAAE,CAAC;SAC5E,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,2BAA2B,CAAC,CAAC;AACrE,CAAC"}
@@ -92,16 +92,57 @@ export type ItemSlot = {
92
92
  error: unknown;
93
93
  };
94
94
  /**
95
- * Settle one page of a batch for the paged tools: the live items in input
96
- * order, and the IDs whose fetch failed. Dead, deleted, and absent slots drop
97
- * out of both. When every slot failed, throws the page's dominant cause
98
- * ({@link pageFailure}), since an empty success would read as a page with
99
- * nothing on it.
95
+ * The slots of a page that answered but hold nothing to show, by kind:
96
+ * `deleted` (an item flagged both deleted and dead counts here, once),
97
+ * `dead`, and `missing` (HN answered `null`). Failed fetches are never counted.
100
98
  */
101
- export declare function settlePage(slots: readonly ItemSlot[]): {
102
- items: HnItem[];
99
+ export interface OmittedCounts {
100
+ dead: number;
101
+ deleted: number;
102
+ missing: number;
103
+ }
104
+ /** One settled page: see {@link settlePage}. */
105
+ export interface SettledPage {
106
+ /** The IDs whose fetch failed, in input order. */
103
107
  failedIds: number[];
104
- };
108
+ /** The live items, in input order: `live` without the slot indexes. */
109
+ items: HnItem[];
110
+ /**
111
+ * Each live item, in input order, with `slot`, its index in the slots
112
+ * passed: its position in the requested window, counted before anything
113
+ * dropped.
114
+ */
115
+ live: {
116
+ item: HnItem;
117
+ slot: number;
118
+ }[];
119
+ omitted: OmittedCounts;
120
+ }
121
+ /**
122
+ * Settle one page of a batch for the paged tools: the live items in input
123
+ * order with their slot indexes, the IDs whose fetch failed, and how many
124
+ * dead, deleted, and absent slots dropped out, by kind. Every slot is exactly
125
+ * one of live, omitted, or failed. When every slot failed, throws the page's
126
+ * dominant cause ({@link pageFailure}), since an empty success would read as a
127
+ * page with nothing on it.
128
+ */
129
+ export declare function settlePage(slots: readonly ItemSlot[]): SettledPage;
130
+ /**
131
+ * The words for a page's {@link OmittedCounts}: `total`, and `kinds` listing
132
+ * each nonzero kind as `{n} {kind}` in the order deleted, dead, missing, joined
133
+ * by `, ` (`2 deleted, 1 dead`). Undefined when nothing was omitted.
134
+ */
135
+ export declare function describeOmitted(omitted: OmittedCounts): {
136
+ total: number;
137
+ kinds: string;
138
+ } | undefined;
139
+ /**
140
+ * The sentence a paged tool adds when a page dropped items:
141
+ * `{total} of the {slotCount} {unit}(s) {place} {is|are} omitted: {kinds}.`
142
+ * Undefined when nothing was omitted. `unit` is singular; `place` names the
143
+ * window (`on this page`).
144
+ */
145
+ export declare function omittedSentence(omitted: OmittedCounts, slotCount: number, unit: string, place: string): string | undefined;
105
146
  /** True for the classified 429 `getJson` throws once retries are spent or the wait outlasts them. */
106
147
  export declare function isRateLimited(err: unknown): err is McpError;
107
148
  /**