@cyanheads/hn-mcp-server 0.5.11 → 0.5.13
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/CLAUDE.md +59 -12
- package/Dockerfile +11 -7
- package/LICENSE +1 -1
- package/README.md +7 -5
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +1 -0
- package/dist/config/server-config.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-stories.tool.d.ts +35 -5
- package/dist/mcp-server/tools/definitions/get-stories.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-stories.tool.js +39 -0
- package/dist/mcp-server/tools/definitions/get-stories.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-thread.tool.d.ts +29 -0
- package/dist/mcp-server/tools/definitions/get-thread.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-thread.tool.js +48 -3
- package/dist/mcp-server/tools/definitions/get-thread.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-user.tool.d.ts +31 -0
- package/dist/mcp-server/tools/definitions/get-user.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-user.tool.js +72 -16
- package/dist/mcp-server/tools/definitions/get-user.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-content.tool.d.ts +39 -5
- package/dist/mcp-server/tools/definitions/search-content.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-content.tool.js +69 -14
- package/dist/mcp-server/tools/definitions/search-content.tool.js.map +1 -1
- package/dist/services/hn/hn-service.d.ts +12 -1
- package/dist/services/hn/hn-service.d.ts.map +1 -1
- package/dist/services/hn/hn-service.js +101 -32
- package/dist/services/hn/hn-service.js.map +1 -1
- package/package.json +11 -10
- package/server.json +5 -5
|
@@ -8,6 +8,7 @@ export declare const getUser: import("@cyanheads/mcp-ts-core").ToolDefinition<z.
|
|
|
8
8
|
username: z.ZodString;
|
|
9
9
|
includeSubmissions: z.ZodDefault<z.ZodBoolean>;
|
|
10
10
|
submissionCount: z.ZodDefault<z.ZodNumber>;
|
|
11
|
+
submissionOffset: z.ZodDefault<z.ZodNumber>;
|
|
11
12
|
}, z.core.$strip>, z.ZodObject<{
|
|
12
13
|
user: z.ZodObject<{
|
|
13
14
|
id: z.ZodString;
|
|
@@ -31,7 +32,37 @@ export declare const getUser: import("@cyanheads/mcp-ts-core").ToolDefinition<z.
|
|
|
31
32
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
32
33
|
readonly when: "HN reports no user account exists for the given username.";
|
|
33
34
|
readonly recovery: "Verify the username spelling — HN usernames are case-sensitive.";
|
|
35
|
+
}, {
|
|
36
|
+
readonly reason: "upstream_rejected";
|
|
37
|
+
readonly code: JsonRpcErrorCode.InvalidParams;
|
|
38
|
+
readonly when: "The HN API answered with a 4xx status other than 429 — it rejected the request as built, which a username outside HN’s charset can cause.";
|
|
39
|
+
readonly recovery: "Check the input values against this schema; the same input fails identically.";
|
|
40
|
+
}, {
|
|
41
|
+
readonly reason: "upstream_rate_limited";
|
|
42
|
+
readonly code: JsonRpcErrorCode.RateLimited;
|
|
43
|
+
readonly when: "The HN API answered with HTTP 429.";
|
|
44
|
+
readonly recovery: "Wait several seconds before retrying, and call this tool less often.";
|
|
45
|
+
readonly retryable: true;
|
|
46
|
+
}, {
|
|
47
|
+
readonly reason: "upstream_unavailable";
|
|
48
|
+
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
49
|
+
readonly when: "The HN API answered with a 5xx status.";
|
|
50
|
+
readonly recovery: "Retry after a short delay; no input change helps while the upstream is down.";
|
|
51
|
+
readonly retryable: true;
|
|
52
|
+
}, {
|
|
53
|
+
readonly reason: "upstream_html";
|
|
54
|
+
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
55
|
+
readonly when: "The HN API served an HTML error page with a 200 status, which it does under rate limiting or maintenance.";
|
|
56
|
+
readonly recovery: "Retry after a brief delay; the upstream is throttling or in maintenance.";
|
|
57
|
+
readonly retryable: true;
|
|
58
|
+
}, {
|
|
59
|
+
readonly reason: "upstream_malformed";
|
|
60
|
+
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
61
|
+
readonly when: "The HN API answered with a 200 status and a body that is not JSON.";
|
|
62
|
+
readonly recovery: "Retry after a brief delay; no input change helps while the upstream serves this.";
|
|
63
|
+
readonly retryable: true;
|
|
34
64
|
}], {
|
|
65
|
+
readonly submissionOffset: z.ZodOptional<z.ZodNumber>;
|
|
35
66
|
readonly truncated: z.ZodOptional<z.ZodBoolean>;
|
|
36
67
|
readonly shown: z.ZodOptional<z.ZodNumber>;
|
|
37
68
|
readonly cap: z.ZodOptional<z.ZodNumber>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-user.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-user.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAQjE,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"get-user.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-user.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAQjE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkOlB,CAAC"}
|
|
@@ -15,19 +15,64 @@ export const getUser = tool('hn_get_user', {
|
|
|
15
15
|
when: 'HN reports no user account exists for the given username.',
|
|
16
16
|
recovery: 'Verify the username spelling — HN usernames are case-sensitive.',
|
|
17
17
|
},
|
|
18
|
+
{
|
|
19
|
+
reason: 'upstream_rejected',
|
|
20
|
+
code: JsonRpcErrorCode.InvalidParams,
|
|
21
|
+
when: 'The HN API answered with a 4xx status other than 429 — it rejected the request as built, which a username outside HN’s charset can cause.',
|
|
22
|
+
recovery: 'Check the input values against this schema; the same input fails identically.',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
reason: 'upstream_rate_limited',
|
|
26
|
+
code: JsonRpcErrorCode.RateLimited,
|
|
27
|
+
when: 'The HN API answered with HTTP 429.',
|
|
28
|
+
recovery: 'Wait several seconds before retrying, and call this tool less often.',
|
|
29
|
+
retryable: true,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
reason: 'upstream_unavailable',
|
|
33
|
+
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
34
|
+
when: 'The HN API answered with a 5xx status.',
|
|
35
|
+
recovery: 'Retry after a short delay; no input change helps while the upstream is down.',
|
|
36
|
+
retryable: true,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
reason: 'upstream_html',
|
|
40
|
+
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
41
|
+
when: 'The HN API served an HTML error page with a 200 status, which it does under rate limiting or maintenance.',
|
|
42
|
+
recovery: 'Retry after a brief delay; the upstream is throttling or in maintenance.',
|
|
43
|
+
retryable: true,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
reason: 'upstream_malformed',
|
|
47
|
+
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
48
|
+
when: 'The HN API answered with a 200 status and a body that is not JSON.',
|
|
49
|
+
recovery: 'Retry after a brief delay; no input change helps while the upstream serves this.',
|
|
50
|
+
retryable: true,
|
|
51
|
+
},
|
|
18
52
|
],
|
|
19
53
|
input: z.object({
|
|
20
|
-
username: z
|
|
54
|
+
username: z
|
|
55
|
+
.string()
|
|
56
|
+
.trim()
|
|
57
|
+
.min(1)
|
|
58
|
+
.describe('HN username. Case-sensitive. Trimmed; blank or whitespace-only input is rejected.'),
|
|
21
59
|
includeSubmissions: z
|
|
22
60
|
.boolean()
|
|
23
61
|
.default(false)
|
|
24
62
|
.describe("Resolve the user's most recent submissions into full items. Without this, only the submission count is available."),
|
|
25
63
|
submissionCount: z
|
|
26
64
|
.number()
|
|
65
|
+
.int()
|
|
27
66
|
.min(1)
|
|
28
67
|
.max(50)
|
|
29
68
|
.default(10)
|
|
30
|
-
.describe('
|
|
69
|
+
.describe('Page size — how many submissions to resolve per call. Only used when includeSubmissions is true.'),
|
|
70
|
+
submissionOffset: z
|
|
71
|
+
.number()
|
|
72
|
+
.int()
|
|
73
|
+
.min(0)
|
|
74
|
+
.default(0)
|
|
75
|
+
.describe('How many submissions to skip before resolving, counting back from the most recent. Use with submissionCount to page through a long history: request offset 0, then offset submissionCount, and so on. The enrichment block echoes submissionOffset and, when more remain, the offset to send next. Only used when includeSubmissions is true.'),
|
|
31
76
|
}),
|
|
32
77
|
output: z.object({
|
|
33
78
|
user: z
|
|
@@ -53,19 +98,20 @@ export const getUser = tool('hn_get_user', {
|
|
|
53
98
|
})
|
|
54
99
|
.describe('A single submission by the user (story, comment, job, or poll).'))
|
|
55
100
|
.optional()
|
|
56
|
-
.describe('
|
|
101
|
+
.describe('One page of submissions, most recent first, starting at submissionOffset. Absent when includeSubmissions is false or the user has never submitted. Empty when the page holds no live items — either the offset is past the end, or every item in the window was deleted or flagged.'),
|
|
57
102
|
}),
|
|
58
103
|
enrichment: {
|
|
59
|
-
|
|
60
|
-
.
|
|
104
|
+
submissionOffset: z
|
|
105
|
+
.number()
|
|
61
106
|
.optional()
|
|
62
|
-
.describe('
|
|
107
|
+
.describe('The offset this page started at. Absent when includeSubmissions is false or the user has never submitted.'),
|
|
108
|
+
truncated: z.boolean().optional().describe('True when submissions remain beyond this page.'),
|
|
63
109
|
shown: z.number().optional().describe('Number of submissions returned.'),
|
|
64
110
|
cap: z.number().optional().describe('The submissionCount cap that was applied.'),
|
|
65
111
|
notice: z
|
|
66
112
|
.string()
|
|
67
113
|
.optional()
|
|
68
|
-
.describe('Pagination
|
|
114
|
+
.describe('Pagination context — which window of the history this page covers and the submissionOffset to send next, or a warning that the offset is past the end. Absent when the page reaches the end of the history, or when no submissions were resolved.'),
|
|
69
115
|
},
|
|
70
116
|
async handler(input, ctx) {
|
|
71
117
|
const hn = getHnService();
|
|
@@ -83,8 +129,10 @@ export const getUser = tool('hn_get_user', {
|
|
|
83
129
|
about: user.about ? stripHtml(user.about) : undefined,
|
|
84
130
|
totalSubmissions: user.submitted?.length ?? 0,
|
|
85
131
|
};
|
|
132
|
+
const offset = input.submissionOffset;
|
|
133
|
+
const pageEnd = offset + input.submissionCount;
|
|
86
134
|
const submissions = input.includeSubmissions && user.submitted?.length
|
|
87
|
-
? filterLiveItems(await hn.fetchItems(user.submitted.slice(
|
|
135
|
+
? filterLiveItems(await hn.fetchItems(user.submitted.slice(offset, pageEnd), ctx)).map((item) => ({
|
|
88
136
|
id: item.id,
|
|
89
137
|
type: item.type,
|
|
90
138
|
title: item.title ? stripHtml(item.title) : undefined,
|
|
@@ -95,13 +143,21 @@ export const getUser = tool('hn_get_user', {
|
|
|
95
143
|
descendants: item.descendants,
|
|
96
144
|
}))
|
|
97
145
|
: undefined;
|
|
98
|
-
ctx.log.info('Fetched user', {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
146
|
+
ctx.log.info('Fetched user', {
|
|
147
|
+
username: input.username,
|
|
148
|
+
offset,
|
|
149
|
+
submissions: submissions?.length,
|
|
150
|
+
});
|
|
151
|
+
if (submissions) {
|
|
152
|
+
const total = profile.totalSubmissions;
|
|
153
|
+
ctx.enrich({ submissionOffset: offset });
|
|
154
|
+
if (offset >= total) {
|
|
155
|
+
ctx.enrich.notice(`submissionOffset ${offset} is past the end of ${total.toLocaleString()} submissions. Valid offsets are 0 to ${total - 1}.`);
|
|
156
|
+
}
|
|
157
|
+
else if (pageEnd < total) {
|
|
158
|
+
ctx.enrich.truncated({ shown: submissions.length, cap: input.submissionCount });
|
|
159
|
+
ctx.enrich.notice(`Showing ${submissions.length} live item${submissions.length === 1 ? '' : 's'} from positions ${(offset + 1).toLocaleString()}–${pageEnd.toLocaleString()} of ${total.toLocaleString()} submissions. Set submissionOffset to ${pageEnd} for the next page.`);
|
|
160
|
+
}
|
|
105
161
|
}
|
|
106
162
|
return { user: profile, submissions };
|
|
107
163
|
},
|
|
@@ -118,7 +174,7 @@ export const getUser = tool('hn_get_user', {
|
|
|
118
174
|
if (user.about)
|
|
119
175
|
lines.push(`\n${user.about}`);
|
|
120
176
|
if (result.submissions?.length) {
|
|
121
|
-
lines.push('\n###
|
|
177
|
+
lines.push('\n### Submissions');
|
|
122
178
|
for (const s of result.submissions) {
|
|
123
179
|
const title = s.title || `[${s.type}]`;
|
|
124
180
|
const date = s.time
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-user.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-user.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EACL,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,MAAM,6BAA6B,CAAC;AAErC,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;IACzC,WAAW,EACT,kHAAkH;IACpH,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;IACnC,MAAM,EAAE;QACN;YACE,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,2DAA2D;YACjE,QAAQ,EAAE,iEAAiE;SAC5E;
|
|
1
|
+
{"version":3,"file":"get-user.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-user.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,19 +3,20 @@
|
|
|
3
3
|
* @module mcp-server/tools/definitions/search-content.tool
|
|
4
4
|
*/
|
|
5
5
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
6
|
+
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
6
7
|
export declare const searchHn: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
|
|
7
8
|
query: z.ZodString;
|
|
8
9
|
tags: z.ZodOptional<z.ZodEnum<{
|
|
9
|
-
story: "story";
|
|
10
|
-
comment: "comment";
|
|
11
10
|
ask_hn: "ask_hn";
|
|
12
|
-
|
|
11
|
+
comment: "comment";
|
|
13
12
|
front_page: "front_page";
|
|
13
|
+
show_hn: "show_hn";
|
|
14
|
+
story: "story";
|
|
14
15
|
}>>;
|
|
15
16
|
author: z.ZodOptional<z.ZodString>;
|
|
16
17
|
sort: z.ZodDefault<z.ZodEnum<{
|
|
17
|
-
relevance: "relevance";
|
|
18
18
|
date: "date";
|
|
19
|
+
relevance: "relevance";
|
|
19
20
|
}>>;
|
|
20
21
|
dateRange: z.ZodOptional<z.ZodObject<{
|
|
21
22
|
start: z.ZodOptional<z.ZodString>;
|
|
@@ -24,6 +25,10 @@ export declare const searchHn: import("@cyanheads/mcp-ts-core").ToolDefinition<z
|
|
|
24
25
|
minPoints: z.ZodOptional<z.ZodNumber>;
|
|
25
26
|
count: z.ZodDefault<z.ZodNumber>;
|
|
26
27
|
page: z.ZodDefault<z.ZodNumber>;
|
|
28
|
+
view: z.ZodDefault<z.ZodEnum<{
|
|
29
|
+
compact: "compact";
|
|
30
|
+
full: "full";
|
|
31
|
+
}>>;
|
|
27
32
|
}, z.core.$strip>, z.ZodObject<{
|
|
28
33
|
hits: z.ZodArray<z.ZodObject<{
|
|
29
34
|
id: z.ZodNumber;
|
|
@@ -44,7 +49,36 @@ export declare const searchHn: import("@cyanheads/mcp-ts-core").ToolDefinition<z
|
|
|
44
49
|
}, z.core.$strip>>;
|
|
45
50
|
}, z.core.$strip>>;
|
|
46
51
|
query: z.ZodString;
|
|
47
|
-
}, z.core.$strip>,
|
|
52
|
+
}, z.core.$strip>, readonly [{
|
|
53
|
+
readonly reason: "upstream_rejected";
|
|
54
|
+
readonly code: JsonRpcErrorCode.InvalidParams;
|
|
55
|
+
readonly when: "Algolia answered with a 4xx status other than 429 — it rejected the request as built.";
|
|
56
|
+
readonly recovery: "Check the input values against this schema; the same input fails identically.";
|
|
57
|
+
}, {
|
|
58
|
+
readonly reason: "upstream_rate_limited";
|
|
59
|
+
readonly code: JsonRpcErrorCode.RateLimited;
|
|
60
|
+
readonly when: "Algolia answered with HTTP 429.";
|
|
61
|
+
readonly recovery: "Wait several seconds before retrying, and call this tool less often.";
|
|
62
|
+
readonly retryable: true;
|
|
63
|
+
}, {
|
|
64
|
+
readonly reason: "upstream_unavailable";
|
|
65
|
+
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
66
|
+
readonly when: "Algolia answered with a 5xx status.";
|
|
67
|
+
readonly recovery: "Retry after a short delay; no input change helps while the upstream is down.";
|
|
68
|
+
readonly retryable: true;
|
|
69
|
+
}, {
|
|
70
|
+
readonly reason: "upstream_html";
|
|
71
|
+
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
72
|
+
readonly when: "Algolia served an HTML error page with a 200 status, which it does under rate limiting or maintenance.";
|
|
73
|
+
readonly recovery: "Retry after a brief delay; the upstream is throttling or in maintenance.";
|
|
74
|
+
readonly retryable: true;
|
|
75
|
+
}, {
|
|
76
|
+
readonly reason: "upstream_malformed";
|
|
77
|
+
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
78
|
+
readonly when: "Algolia answered with a 200 status and a body that is not JSON.";
|
|
79
|
+
readonly recovery: "Retry after a brief delay; no input change helps while the upstream serves this.";
|
|
80
|
+
readonly retryable: true;
|
|
81
|
+
}], {
|
|
48
82
|
readonly totalHits: z.ZodNumber;
|
|
49
83
|
readonly page: z.ZodNumber;
|
|
50
84
|
readonly totalPages: z.ZodNumber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-content.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-content.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"search-content.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-content.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA8CjE,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoSnB,CAAC"}
|
|
@@ -3,14 +3,18 @@
|
|
|
3
3
|
* @module mcp-server/tools/definitions/search-content.tool
|
|
4
4
|
*/
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
|
+
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
6
7
|
import { extractDomain, getHnService, normalizeUrl, stripHtml, stripHtmlPreservingEm, } from '../../../services/hn/hn-service.js';
|
|
7
8
|
/**
|
|
8
9
|
* Project Algolia's `_highlightResult` into a flat snippet object: the title
|
|
9
10
|
* snippet, the body snippet (preferring comment_text over story_text to match
|
|
10
11
|
* the `text` mapping), and the deduplicated union of matched words across all
|
|
11
12
|
* surfaced fields. Returns undefined when nothing matched.
|
|
13
|
+
*
|
|
14
|
+
* `includeBody` is false under the compact projection, which drops the body
|
|
15
|
+
* snippet — the field that duplicates a hit's full comment text.
|
|
12
16
|
*/
|
|
13
|
-
function extractHighlights(hit) {
|
|
17
|
+
function extractHighlights(hit, includeBody) {
|
|
14
18
|
const h = hit._highlightResult;
|
|
15
19
|
if (!h)
|
|
16
20
|
return;
|
|
@@ -21,31 +25,72 @@ function extractHighlights(hit) {
|
|
|
21
25
|
: matched(h.story_text)
|
|
22
26
|
? h.story_text
|
|
23
27
|
: undefined;
|
|
28
|
+
const text = includeBody && textHl ? stripHtmlPreservingEm(textHl.value) : undefined;
|
|
24
29
|
const fields = [h.title, h.url, h.author, h.comment_text, h.story_text, h.story_title];
|
|
25
30
|
const matchedWords = Array.from(new Set(fields.flatMap((f) => f?.matchedWords ?? [])));
|
|
26
|
-
if (title == null &&
|
|
31
|
+
if (title == null && text == null && matchedWords.length === 0)
|
|
27
32
|
return;
|
|
28
33
|
return {
|
|
29
34
|
...(title != null && { title: stripHtmlPreservingEm(title) }),
|
|
30
|
-
...(
|
|
35
|
+
...(text != null && { text }),
|
|
31
36
|
matchedWords,
|
|
32
37
|
};
|
|
33
38
|
}
|
|
34
39
|
export const searchHn = tool('hn_search_content', {
|
|
35
40
|
description: 'Search Hacker News stories and comments via Algolia. Filterable by content type, author, date range, and minimum points.',
|
|
36
41
|
annotations: { readOnlyHint: true },
|
|
42
|
+
errors: [
|
|
43
|
+
{
|
|
44
|
+
reason: 'upstream_rejected',
|
|
45
|
+
code: JsonRpcErrorCode.InvalidParams,
|
|
46
|
+
when: 'Algolia answered with a 4xx status other than 429 — it rejected the request as built.',
|
|
47
|
+
recovery: 'Check the input values against this schema; the same input fails identically.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
reason: 'upstream_rate_limited',
|
|
51
|
+
code: JsonRpcErrorCode.RateLimited,
|
|
52
|
+
when: 'Algolia answered with HTTP 429.',
|
|
53
|
+
recovery: 'Wait several seconds before retrying, and call this tool less often.',
|
|
54
|
+
retryable: true,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
reason: 'upstream_unavailable',
|
|
58
|
+
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
59
|
+
when: 'Algolia answered with a 5xx status.',
|
|
60
|
+
recovery: 'Retry after a short delay; no input change helps while the upstream is down.',
|
|
61
|
+
retryable: true,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
reason: 'upstream_html',
|
|
65
|
+
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
66
|
+
when: 'Algolia served an HTML error page with a 200 status, which it does under rate limiting or maintenance.',
|
|
67
|
+
recovery: 'Retry after a brief delay; the upstream is throttling or in maintenance.',
|
|
68
|
+
retryable: true,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
reason: 'upstream_malformed',
|
|
72
|
+
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
73
|
+
when: 'Algolia answered with a 200 status and a body that is not JSON.',
|
|
74
|
+
recovery: 'Retry after a brief delay; no input change helps while the upstream serves this.',
|
|
75
|
+
retryable: true,
|
|
76
|
+
},
|
|
77
|
+
],
|
|
37
78
|
input: z.object({
|
|
38
79
|
query: z
|
|
39
80
|
.string()
|
|
40
|
-
.
|
|
81
|
+
.trim()
|
|
82
|
+
.min(1)
|
|
83
|
+
.describe('Search terms. Supports simple keywords — Algolia handles stemming and relevance. Trimmed before searching; blank or whitespace-only input is rejected.'),
|
|
41
84
|
tags: z
|
|
42
85
|
.enum(['story', 'comment', 'ask_hn', 'show_hn', 'front_page'])
|
|
43
86
|
.optional()
|
|
44
87
|
.describe(`Filter results by content type. Omit to search all types.`),
|
|
45
88
|
author: z
|
|
46
89
|
.string()
|
|
90
|
+
.trim()
|
|
91
|
+
.min(1)
|
|
47
92
|
.optional()
|
|
48
|
-
.describe(`Filter results to a specific author. Useful for finding a user's posts on a topic (hn_get_user only shows recent submissions).`),
|
|
93
|
+
.describe(`Filter results to a specific author. Useful for finding a user's posts on a topic (hn_get_user only shows recent submissions). Trimmed before filtering; omit the field to search all authors rather than passing a blank string.`),
|
|
49
94
|
sort: z
|
|
50
95
|
.enum(['relevance', 'date'])
|
|
51
96
|
.default('relevance')
|
|
@@ -67,11 +112,16 @@ export const searchHn = tool('hn_search_content', {
|
|
|
67
112
|
.describe('Filter to a date window. Useful for finding discussions about recent events.'),
|
|
68
113
|
minPoints: z
|
|
69
114
|
.number()
|
|
115
|
+
.int()
|
|
70
116
|
.min(0)
|
|
71
117
|
.optional()
|
|
72
118
|
.describe('Minimum score/points. Filters out low-engagement content.'),
|
|
73
|
-
count: z.number().min(1).max(50).default(30).describe('Number of results to return.'),
|
|
74
|
-
page: z.number().min(0).default(0).describe('Page number for pagination (0-indexed).'),
|
|
119
|
+
count: z.number().int().min(1).max(50).default(30).describe('Number of results to return.'),
|
|
120
|
+
page: z.number().int().min(0).default(0).describe('Page number for pagination (0-indexed).'),
|
|
121
|
+
view: z
|
|
122
|
+
.enum(['full', 'compact'])
|
|
123
|
+
.default('full')
|
|
124
|
+
.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, 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.'),
|
|
75
125
|
}),
|
|
76
126
|
output: z.object({
|
|
77
127
|
hits: z
|
|
@@ -96,7 +146,10 @@ export const searchHn = tool('hn_search_content', {
|
|
|
96
146
|
.number()
|
|
97
147
|
.optional()
|
|
98
148
|
.describe('Parent story ID for comment hits; equals `id` for story hits.'),
|
|
99
|
-
text: z
|
|
149
|
+
text: z
|
|
150
|
+
.string()
|
|
151
|
+
.optional()
|
|
152
|
+
.describe('Comment or story body text (HTML stripped). Absent when the hit has no body, and always absent under view "compact" — call hn_get_thread with this id to read it.'),
|
|
100
153
|
highlights: z
|
|
101
154
|
.object({
|
|
102
155
|
title: z
|
|
@@ -106,7 +159,7 @@ export const searchHn = tool('hn_search_content', {
|
|
|
106
159
|
text: z
|
|
107
160
|
.string()
|
|
108
161
|
.optional()
|
|
109
|
-
.describe('Body snippet (comment_text or story_text) with matched terms wrapped in `<em>…</em>`. Absent when the body did not match.'),
|
|
162
|
+
.describe('Body snippet (comment_text or story_text) with matched terms wrapped in `<em>…</em>`. Absent when the body did not match, and always absent under view "compact" — matchedWords still lists what matched.'),
|
|
110
163
|
matchedWords: z
|
|
111
164
|
.array(z.string())
|
|
112
165
|
.describe('Deduplicated union of matched terms across all searchable fields (title, url, author, comment_text, story_text, story_title).'),
|
|
@@ -121,7 +174,9 @@ export const searchHn = tool('hn_search_content', {
|
|
|
121
174
|
enrichment: {
|
|
122
175
|
totalHits: z.number().describe('Total matching results across all pages.'),
|
|
123
176
|
page: z.number().describe('Current page number (0-indexed).'),
|
|
124
|
-
totalPages: z
|
|
177
|
+
totalPages: z
|
|
178
|
+
.number()
|
|
179
|
+
.describe('Number of pages Algolia will actually serve for this query. Not derived from totalHits — broad queries report a totalHits far larger than the reachable page range, so paginate against this value.'),
|
|
125
180
|
truncated: z
|
|
126
181
|
.boolean()
|
|
127
182
|
.optional()
|
|
@@ -136,11 +191,12 @@ export const searchHn = tool('hn_search_content', {
|
|
|
136
191
|
async handler(input, ctx) {
|
|
137
192
|
const hn = getHnService();
|
|
138
193
|
const result = await hn.search(input, ctx);
|
|
194
|
+
const includeBody = input.view === 'full';
|
|
139
195
|
const hits = result.hits.map((hit) => {
|
|
140
|
-
const rawText = hit.comment_text ?? hit.story_text;
|
|
196
|
+
const rawText = includeBody ? (hit.comment_text ?? hit.story_text) : undefined;
|
|
141
197
|
const url = normalizeUrl(hit.url);
|
|
142
198
|
const domain = extractDomain(url);
|
|
143
|
-
const highlights = extractHighlights(hit);
|
|
199
|
+
const highlights = extractHighlights(hit, includeBody);
|
|
144
200
|
return {
|
|
145
201
|
id: Number(hit.objectID),
|
|
146
202
|
title: hit.title ?? undefined,
|
|
@@ -161,8 +217,7 @@ export const searchHn = tool('hn_search_content', {
|
|
|
161
217
|
hits: hits.length,
|
|
162
218
|
totalHits: result.nbHits,
|
|
163
219
|
});
|
|
164
|
-
|
|
165
|
-
ctx.enrich({ totalHits: result.nbHits, page: result.page, totalPages });
|
|
220
|
+
ctx.enrich({ totalHits: result.nbHits, page: result.page, totalPages: result.nbPages });
|
|
166
221
|
if (hits.length === input.count && result.nbHits > input.count) {
|
|
167
222
|
ctx.enrich.truncated({ shown: hits.length, cap: input.count });
|
|
168
223
|
}
|
|
@@ -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":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAGrC;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,GAAe,EAAE,WAAoB;IAC9D,MAAM,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO;IAEf,MAAM,OAAO,GAAG,CAAC,CAAoC,EAA8B,EAAE,CACnF,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC;IAEvC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;QACpC,CAAC,CAAC,CAAC,CAAC,YAAY;QAChB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;YACrB,CAAC,CAAC,CAAC,CAAC,UAAU;YACd,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,IAAI,GAAG,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAErF,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;IACvF,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvF,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEvE,OAAO;QACL,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;QAC7B,YAAY;KACb,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE;IAChD,WAAW,EACT,0HAA0H;IAC5H,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;IACnC,MAAM,EAAE;QACN;YACE,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,gBAAgB,CAAC,aAAa;YACpC,IAAI,EAAE,uFAAuF;YAC7F,QAAQ,EAAE,+EAA+E;SAC1F;QACD;YACE,MAAM,EAAE,uBAAuB;YAC/B,IAAI,EAAE,gBAAgB,CAAC,WAAW;YAClC,IAAI,EAAE,iCAAiC;YACvC,QAAQ,EAAE,sEAAsE;YAChF,SAAS,EAAE,IAAI;SAChB;QACD;YACE,MAAM,EAAE,sBAAsB;YAC9B,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;YACzC,IAAI,EAAE,qCAAqC;YAC3C,QAAQ,EAAE,8EAA8E;YACxF,SAAS,EAAE,IAAI;SAChB;QACD;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;YACzC,IAAI,EAAE,wGAAwG;YAC9G,QAAQ,EAAE,0EAA0E;YACpF,SAAS,EAAE,IAAI;SAChB;QACD;YACE,MAAM,EAAE,oBAAoB;YAC5B,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;YACzC,IAAI,EAAE,iEAAiE;YACvE,QAAQ,EAAE,kFAAkF;YAC5F,SAAS,EAAE,IAAI;SAChB;KACF;IACD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,wJAAwJ,CACzJ;QACH,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;aAC7D,QAAQ,EAAE;aACV,QAAQ,CAAC,2DAA2D,CAAC;QACxE,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CACP,mOAAmO,CACpO;QACH,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;aAC3B,OAAO,CAAC,WAAW,CAAC;aACpB,QAAQ,CAAC,uEAAuE,CAAC;QACpF,SAAS,EAAE,CAAC;aACT,MAAM,CAAC;YACN,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,mCAAmC,CAAC;iBAChF,QAAQ,EAAE;iBACV,QAAQ,CAAC,yDAAyD,CAAC;YACtE,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,mCAAmC,CAAC;iBAChF,QAAQ,EAAE;iBACV,QAAQ,CAAC,wDAAwD,CAAC;SACtE,CAAC;aACD,QAAQ,EAAE;aACV,QAAQ,CAAC,8EAA8E,CAAC;QAC3F,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CAAC,2DAA2D,CAAC;QACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC3F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QAC5F,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;aACzB,OAAO,CAAC,MAAM,CAAC;aACf,QAAQ,CACP,obAAob,CACrb;KACJ,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC;aACJ,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;YACtF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAC3E,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACzD,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,8HAA8H,CAC/H;YACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC/C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACxD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC7D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YAC3D,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;YAChE,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,+DAA+D,CAAC;YAC5E,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,mKAAmK,CACpK;YACH,UAAU,EAAE,CAAC;iBACV,MAAM,CAAC;gBACN,KAAK,EAAE,CAAC;qBACL,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CACP,gGAAgG,CACjG;gBACH,IAAI,EAAE,CAAC;qBACJ,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CACP,2MAA2M,CAC5M;gBACH,YAAY,EAAE,CAAC;qBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;qBACjB,QAAQ,CACP,+HAA+H,CAChI;aACJ,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CACP,qHAAqH,CACtH;SACJ,CAAC;aACD,QAAQ,CAAC,iDAAiD,CAAC,CAC/D;aACA,QAAQ,CAAC,sCAAsC,CAAC;QACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KAC3D,CAAC;IAEF,UAAU,EAAE;QACV,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAC1E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC7D,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,CACP,qMAAqM,CACtM;QACH,SAAS,EAAE,CAAC;aACT,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,2DAA2D,CAAC;QACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QACjE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACtE,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,8HAA8H,CAC/H;KACJ;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAE3C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;QAE1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/E,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACvD,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACxB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;gBAC7B,GAAG;gBACH,MAAM;gBACN,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS;gBAC/B,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;gBAC1C,SAAS,EAAE,GAAG,CAAC,UAAU;gBACzB,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;gBACxC,OAAO,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;gBAClC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;gBAC3D,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,CAAC;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC/B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,SAAS,EAAE,MAAM,CAAC,MAAM;SACzB,CAAC,CAAC;QAEH,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACxF,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/D,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,KAAK,CAAC,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvD,IAAI,KAAK,CAAC,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;gBAC3B,CAAC,CAAC,iDAAiD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBACxE,CAAC,CAAC,0CAA0C,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,iBAAiB,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,iKAAiK;QACjK,MAAM,gBAAgB,GAAG,CAAC,EAIzB,EAAE,EAAE;YACH,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,EAAE,CAAC,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,CAAC,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5C,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/E,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAClC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACZ,6IAA6I;gBAC7I,MAAM,SAAS,GACb,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU;oBACvD,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,IAAI,GAAG,EAAE;oBACzD,CAAC,CAAC,EAAE,CAAC;gBACT,MAAM,IAAI,GAAG;oBACX,MAAM,CAAC,CAAC,EAAE,EAAE;oBACZ,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI;oBAC3C,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,WAAW,CAAC,CAAC,CAAC,IAAI;oBAC1D,CAAC,CAAC,SAAS;iBACZ;qBACE,MAAM,CAAC,OAAO,CAAC;qBACf,IAAI,CAAC,KAAK,CAAC,CAAC;gBACf,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,MAAM,KAAK,IAAI,GAAG,SAAS,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;YAC9E,CAAC;YACD,8CAA8C;YAC9C,MAAM,IAAI,GAAG;gBACX,MAAM,CAAC,CAAC,EAAE,EAAE;gBACZ,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI;gBAC3C,CAAC,CAAC,SAAS;aACZ;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,KAAK,CAAC,CAAC;YACf,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,OAAO,mBAAmB,CAAC,CAAC,UAAU,IAAI,SAAS,eAAe,CAAC,CAAC,OAAO,IAAI,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;QACjH,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,KAAK,oBAAoB,CAAC;QACvD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACjF,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -26,9 +26,20 @@ export declare function filterLiveItems(items: (HnItem | null)[]): HnItem[];
|
|
|
26
26
|
export declare class HnService {
|
|
27
27
|
private readonly concurrencyLimit;
|
|
28
28
|
constructor(concurrencyLimit: number);
|
|
29
|
+
/**
|
|
30
|
+
* GET a JSON document from an upstream, with retries around the full
|
|
31
|
+
* fetch-and-parse pipeline and both failure shapes — non-2xx status and
|
|
32
|
+
* HTML-instead-of-JSON — classified onto a contract reason.
|
|
33
|
+
*/
|
|
34
|
+
private getJson;
|
|
29
35
|
/** Fetch a single item by ID. Returns null when HN reports the item is missing. */
|
|
30
36
|
fetchItem(id: number, ctx: Context): Promise<HnItem | null>;
|
|
31
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* Fetch a user profile by username. Returns null when the user does not exist.
|
|
39
|
+
* The username is percent-encoded as a single path segment — an unencoded
|
|
40
|
+
* value containing `/` or dot-segments would otherwise escape the `/user/`
|
|
41
|
+
* route and resolve to a different Firebase resource.
|
|
42
|
+
*/
|
|
32
43
|
fetchUser(username: string, ctx: Context): Promise<HnUser | null>;
|
|
33
44
|
/** Fetch a feed's ID array. Throws on upstream failure after retries. */
|
|
34
45
|
fetchFeed(type: HnFeedType, ctx: Context): Promise<number[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hn-service.d.ts","sourceRoot":"","sources":["../../../src/services/hn/hn-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAKtD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAsC9E,8CAA8C;AAC9C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAyB9C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOzE;AAED,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAElE;
|
|
1
|
+
{"version":3,"file":"hn-service.d.ts","sourceRoot":"","sources":["../../../src/services/hn/hn-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAKtD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAsC9E,8CAA8C;AAC9C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAyB9C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOzE;AAED,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAElE;AA8GD,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,YAAY,gBAAgB,EAAE,MAAM,EAEnC;IAED;;;;OAIG;IACH,OAAO,CAAC,OAAO;IAkBf,mFAAmF;IACnF,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE1D;IAED;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOhE;IAED,yEAAyE;IACzE,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG3D;IAED;;;;OAIG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAyBxE;IAED,uEAAuE;IACvE,MAAM,CACJ,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;QAC3B,SAAS,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAAE,GAAG,SAAS,CAAC;QACjF,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,EACD,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,eAAe,CAAC,CA4B1B;CACF;AAQD,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,wBAAgB,YAAY,IAAI,SAAS,CAGxC"}
|