@opentabs-dev/opentabs-plugin-hack2hire 0.0.109

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 (73) hide show
  1. package/README.md +64 -0
  2. package/dist/adapter.iife.js +15864 -0
  3. package/dist/adapter.iife.js.map +7 -0
  4. package/dist/hack2hire-api.d.ts +18 -0
  5. package/dist/hack2hire-api.d.ts.map +1 -0
  6. package/dist/hack2hire-api.js +72 -0
  7. package/dist/hack2hire-api.js.map +1 -0
  8. package/dist/index.d.ts +14 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +54 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/tools/get-comment.d.ts +31 -0
  13. package/dist/tools/get-comment.d.ts.map +1 -0
  14. package/dist/tools/get-comment.js +21 -0
  15. package/dist/tools/get-comment.js.map +1 -0
  16. package/dist/tools/get-company-question-stats.d.ts +16 -0
  17. package/dist/tools/get-company-question-stats.d.ts.map +1 -0
  18. package/dist/tools/get-company-question-stats.js +34 -0
  19. package/dist/tools/get-company-question-stats.js.map +1 -0
  20. package/dist/tools/get-completed-question-count.d.ts +14 -0
  21. package/dist/tools/get-completed-question-count.d.ts.map +1 -0
  22. package/dist/tools/get-completed-question-count.js +35 -0
  23. package/dist/tools/get-completed-question-count.js.map +1 -0
  24. package/dist/tools/get-current-user.d.ts +15 -0
  25. package/dist/tools/get-current-user.d.ts.map +1 -0
  26. package/dist/tools/get-current-user.js +19 -0
  27. package/dist/tools/get-current-user.js.map +1 -0
  28. package/dist/tools/get-question-neighbors.d.ts +55 -0
  29. package/dist/tools/get-question-neighbors.d.ts.map +1 -0
  30. package/dist/tools/get-question-neighbors.js +42 -0
  31. package/dist/tools/get-question-neighbors.js.map +1 -0
  32. package/dist/tools/get-question.d.ts +27 -0
  33. package/dist/tools/get-question.d.ts.map +1 -0
  34. package/dist/tools/get-question.js +21 -0
  35. package/dist/tools/get-question.js.map +1 -0
  36. package/dist/tools/get-subscription.d.ts +14 -0
  37. package/dist/tools/get-subscription.d.ts.map +1 -0
  38. package/dist/tools/get-subscription.js +19 -0
  39. package/dist/tools/get-subscription.js.map +1 -0
  40. package/dist/tools/list-comment-replies.d.ts +32 -0
  41. package/dist/tools/list-comment-replies.d.ts.map +1 -0
  42. package/dist/tools/list-comment-replies.js +33 -0
  43. package/dist/tools/list-comment-replies.js.map +1 -0
  44. package/dist/tools/list-companies.d.ts +11 -0
  45. package/dist/tools/list-companies.d.ts.map +1 -0
  46. package/dist/tools/list-companies.js +21 -0
  47. package/dist/tools/list-companies.js.map +1 -0
  48. package/dist/tools/list-my-bookmarks.d.ts +24 -0
  49. package/dist/tools/list-my-bookmarks.d.ts.map +1 -0
  50. package/dist/tools/list-my-bookmarks.js +40 -0
  51. package/dist/tools/list-my-bookmarks.js.map +1 -0
  52. package/dist/tools/list-my-visits.d.ts +26 -0
  53. package/dist/tools/list-my-visits.d.ts.map +1 -0
  54. package/dist/tools/list-my-visits.js +40 -0
  55. package/dist/tools/list-my-visits.js.map +1 -0
  56. package/dist/tools/list-question-coding-problems.d.ts +10 -0
  57. package/dist/tools/list-question-coding-problems.d.ts.map +1 -0
  58. package/dist/tools/list-question-coding-problems.js +25 -0
  59. package/dist/tools/list-question-coding-problems.js.map +1 -0
  60. package/dist/tools/list-question-comments.d.ts +33 -0
  61. package/dist/tools/list-question-comments.d.ts.map +1 -0
  62. package/dist/tools/list-question-comments.js +45 -0
  63. package/dist/tools/list-question-comments.js.map +1 -0
  64. package/dist/tools/list-questions.d.ts +50 -0
  65. package/dist/tools/list-questions.d.ts.map +1 -0
  66. package/dist/tools/list-questions.js +71 -0
  67. package/dist/tools/list-questions.js.map +1 -0
  68. package/dist/tools/schemas.d.ts +438 -0
  69. package/dist/tools/schemas.d.ts.map +1 -0
  70. package/dist/tools/schemas.js +282 -0
  71. package/dist/tools/schemas.js.map +1 -0
  72. package/dist/tools.json +1823 -0
  73. package/package.json +68 -0
@@ -0,0 +1,282 @@
1
+ import { z } from 'zod';
2
+ // ---------------------------------------------------------------------------
3
+ // Enums and shared field constraints
4
+ // ---------------------------------------------------------------------------
5
+ export const POST_TYPES = ['ALGORITHM', 'SD', 'ML_SD', 'BLOG'];
6
+ export const STAGES = ['SCREENING', 'OA', 'ONSITE', 'PHONE'];
7
+ const difficultyDescription = 'Difficulty level — 1 (Easy), 2 (Medium), or 3 (Hard).';
8
+ // ---------------------------------------------------------------------------
9
+ // Post (interview question / article)
10
+ // ---------------------------------------------------------------------------
11
+ export const companyFrequencySchema = z
12
+ .record(z.string(), z.object({ frequency: z.number().int() }))
13
+ .describe('Map of company name to question frequency at that company.');
14
+ export const postSummarySchema = z.object({
15
+ id: z.string().describe('Post ID.'),
16
+ type: z.string().describe('Post type — ALGORITHM, SD (system design), ML_SD (ML system design), or BLOG.'),
17
+ title: z.string().describe('Post title.'),
18
+ subtitle: z.string().describe('Post subtitle (empty when not set).'),
19
+ company: companyFrequencySchema,
20
+ algorithmTags: z.array(z.string()).describe('Algorithm/topic tags such as ARRAY, GREEDY, HASH_TABLE.'),
21
+ stages: z.array(z.string()).describe('Interview stages where this question appears (SCREENING, OA, ONSITE, PHONE).'),
22
+ difficulty: z.number().int().describe(difficultyDescription),
23
+ frequency: z.number().int().describe('Aggregate report frequency across all companies.'),
24
+ isLocked: z.boolean().describe('Whether full content is gated behind a paid subscription.'),
25
+ createdDate: z.string().describe('ISO 8601 timestamp when the post was created.'),
26
+ firstPublishedDate: z.string().describe('ISO 8601 timestamp when first published, or empty if unpublished.'),
27
+ lastReportSeenDate: z
28
+ .string()
29
+ .describe('ISO 8601 timestamp of the most recent reported sighting, or empty if unknown.'),
30
+ codingQuestionIds: z
31
+ .array(z.string())
32
+ .describe('IDs of the coding questions associated with this post (used for comments and detail lookups).'),
33
+ });
34
+ export const postDetailSchema = postSummarySchema.extend({
35
+ contentPreview: z
36
+ .string()
37
+ .describe('Markdown preview of the question statement. For locked posts this is a teaser; for unlocked posts this is the full prompt.'),
38
+ topic: z.string().describe('Topic grouping label, or empty when not set.'),
39
+ estimatedReadingTimeInMinutes: z.number().int().describe('Estimated reading time in minutes, or 0 if unknown.'),
40
+ });
41
+ const mapCompany = (raw) => {
42
+ const result = {};
43
+ for (const [name, entry] of Object.entries(raw ?? {})) {
44
+ result[name] = { frequency: entry.frequency ?? 0 };
45
+ }
46
+ return result;
47
+ };
48
+ export const mapPostSummary = (p) => ({
49
+ id: p.id ?? '',
50
+ type: p.type ?? '',
51
+ title: p.title ?? '',
52
+ subtitle: p.subtitle ?? '',
53
+ company: mapCompany(p.company),
54
+ algorithmTags: p.algorithmTags ?? [],
55
+ stages: p.stages ?? [],
56
+ difficulty: p.difficulty ?? 0,
57
+ frequency: p.frequency ?? 0,
58
+ isLocked: p.isLocked ?? false,
59
+ createdDate: p.createdDate ?? '',
60
+ firstPublishedDate: p.firstPublishedDate ?? '',
61
+ lastReportSeenDate: p.lastReportSeenData?.lastReportSeenDate ?? '',
62
+ codingQuestionIds: (p.codingQuestions ?? []).map(c => c.id ?? '').filter(Boolean),
63
+ });
64
+ export const mapPostDetail = (p) => ({
65
+ ...mapPostSummary(p),
66
+ contentPreview: p.contentPreview ?? '',
67
+ topic: p.topic ?? '',
68
+ estimatedReadingTimeInMinutes: p.estimatedReadingTimeInMinutes ?? 0,
69
+ });
70
+ // ---------------------------------------------------------------------------
71
+ // Company directory
72
+ // ---------------------------------------------------------------------------
73
+ export const companyDirectoryEntrySchema = z.object({
74
+ key: z.string().describe('Lowercase canonical company key used in URL slugs (e.g., "amazon", "pinterest").'),
75
+ displayName: z.string().describe('Human-readable company name.'),
76
+ aliases: z.array(z.string()).describe('Alternative names that resolve to this company.'),
77
+ priority: z.number().int().describe('Listing priority — higher values surface first.'),
78
+ country: z.string().describe('Two-letter country code (e.g., "US"), or empty if unknown.'),
79
+ });
80
+ export const mapCompanyDirectoryEntry = (c) => ({
81
+ key: c.key ?? '',
82
+ displayName: c.displayName ?? '',
83
+ aliases: c.aliases ?? [],
84
+ priority: c.priority ?? 0,
85
+ country: c.country ?? '',
86
+ });
87
+ // ---------------------------------------------------------------------------
88
+ // Company question statistics
89
+ // ---------------------------------------------------------------------------
90
+ export const companyStatsSchema = z.object({
91
+ company: z.string().describe('Company name (uppercase, e.g., "AMAZON").'),
92
+ total: z.number().int().describe('Total questions tracked for this company.'),
93
+ postTypeRecords: z
94
+ .array(z.object({
95
+ postType: z.string().describe('Post type bucket (ALGORITHM, SD, ML_SD, BLOG).'),
96
+ count: z.number().int().describe('Number of questions in this bucket.'),
97
+ }))
98
+ .describe('Breakdown of question count by post type.'),
99
+ updatedDate: z.string().describe('ISO 8601 timestamp of the last statistics refresh.'),
100
+ });
101
+ export const mapCompanyStats = (s) => ({
102
+ company: s.company ?? '',
103
+ total: s.total ?? 0,
104
+ postTypeRecords: (s.postTypeRecords ?? []).map(r => ({
105
+ postType: r.postType ?? '',
106
+ count: r.count ?? 0,
107
+ })),
108
+ updatedDate: s.updatedDate ?? '',
109
+ });
110
+ // ---------------------------------------------------------------------------
111
+ // User profile
112
+ // ---------------------------------------------------------------------------
113
+ export const userProfileSchema = z.object({
114
+ id: z.string().describe('User ID.'),
115
+ email: z.string().describe('User email address.'),
116
+ alias: z.string().describe('Public username displayed on comments and profile pages.'),
117
+ avatar: z.string().describe('Avatar image URL, or empty if not set.'),
118
+ accountType: z.string().describe('Account ownership type — typically OWNED for self-managed accounts.'),
119
+ premiumExpiredDate: z
120
+ .string()
121
+ .describe('ISO 8601 timestamp when premium access expires, or empty for free accounts.'),
122
+ balance: z.number().describe('Account credit balance.'),
123
+ createdDate: z.string().describe('ISO 8601 timestamp when the account was created.'),
124
+ lastLoginDate: z.string().describe('ISO 8601 timestamp of the last login.'),
125
+ });
126
+ export const mapUserProfile = (u) => ({
127
+ id: u.id ?? '',
128
+ email: u.email ?? '',
129
+ alias: u.alias ?? '',
130
+ avatar: u.avatar ?? '',
131
+ accountType: u.accountType ?? '',
132
+ premiumExpiredDate: u.premiumExpiredDate ?? '',
133
+ balance: u.balance ?? 0,
134
+ createdDate: u.createdDate ?? '',
135
+ lastLoginDate: u.lastLoginDate ?? '',
136
+ });
137
+ // ---------------------------------------------------------------------------
138
+ // Subscription
139
+ // ---------------------------------------------------------------------------
140
+ export const subscriptionSchema = z.object({
141
+ id: z.string().describe('Subscription ID.'),
142
+ userId: z.string().describe('Owning user ID.'),
143
+ status: z.string().describe('Subscription status — typically ACTIVE, CANCELED, EXPIRED, PENDING, or TRIALING.'),
144
+ paymentType: z.string().describe('Payment method used (e.g., CREDIT_CARD).'),
145
+ planType: z.string().describe('Plan duration code (e.g., MONTHLY, THREE_MONTH, ANNUAL).'),
146
+ currentPeriodStart: z.string().describe('ISO 8601 timestamp marking the start of the current billing period.'),
147
+ currentPeriodEnd: z.string().describe('ISO 8601 timestamp marking the end of the current billing period.'),
148
+ price: z.number().describe('Price charged for the current period, in the plan currency.'),
149
+ });
150
+ export const mapSubscription = (s) => ({
151
+ id: s.id ?? '',
152
+ userId: s.userId ?? '',
153
+ status: s.status ?? '',
154
+ paymentType: s.paymentType ?? '',
155
+ planType: s.planType ?? '',
156
+ currentPeriodStart: s.currentPeriodStart ?? '',
157
+ currentPeriodEnd: s.currentPeriodEnd ?? '',
158
+ price: s.price ?? 0,
159
+ });
160
+ // ---------------------------------------------------------------------------
161
+ // User post records (bookmarks and visit history)
162
+ // ---------------------------------------------------------------------------
163
+ const minimalPostSchema = z.object({
164
+ id: z.string().describe('Post ID.'),
165
+ type: z.string().describe('Post type (ALGORITHM, SD, ML_SD, BLOG).'),
166
+ title: z.string().describe('Post title.'),
167
+ isLocked: z.boolean().describe('Whether the post requires a paid subscription.'),
168
+ });
169
+ export const visitRecordSchema = z.object({
170
+ id: z.string().describe('Visit record ID.'),
171
+ postId: z.string().describe('Post ID this record refers to.'),
172
+ userId: z.string().describe('Owning user ID.'),
173
+ readingStatus: z.string().describe('Reading status — NEW, READING, or COMPLETED.'),
174
+ isManualSet: z.boolean().describe('Whether the status was set manually by the user.'),
175
+ createdDate: z.string().describe('ISO 8601 timestamp when the record was created.'),
176
+ updatedDate: z.string().describe('ISO 8601 timestamp when the record was last updated.'),
177
+ post: minimalPostSchema.describe('Snapshot of the linked post.'),
178
+ });
179
+ export const bookmarkRecordSchema = z.object({
180
+ id: z.string().describe('Bookmark record ID.'),
181
+ postId: z.string().describe('Post ID that was bookmarked.'),
182
+ userId: z.string().describe('Owning user ID.'),
183
+ createdDate: z.string().describe('ISO 8601 timestamp when the bookmark was created.'),
184
+ updatedDate: z.string().describe('ISO 8601 timestamp when the bookmark was last updated.'),
185
+ post: minimalPostSchema.describe('Snapshot of the linked post.'),
186
+ });
187
+ const mapMinimalPost = (p) => ({
188
+ id: p?.id ?? '',
189
+ type: p?.type ?? '',
190
+ title: p?.title ?? '',
191
+ isLocked: p?.isLocked ?? false,
192
+ });
193
+ export const mapVisitRecord = (r) => ({
194
+ id: r.id ?? '',
195
+ postId: r.postId ?? '',
196
+ userId: r.userId ?? '',
197
+ readingStatus: r.readingStatus ?? '',
198
+ isManualSet: r.isManualSet ?? false,
199
+ createdDate: r.createdDate ?? '',
200
+ updatedDate: r.updatedDate ?? '',
201
+ post: mapMinimalPost(r.post),
202
+ });
203
+ export const mapBookmarkRecord = (r) => ({
204
+ id: r.id ?? '',
205
+ postId: r.postId ?? '',
206
+ userId: r.userId ?? '',
207
+ createdDate: r.createdDate ?? '',
208
+ updatedDate: r.updatedDate ?? '',
209
+ post: mapMinimalPost(r.post),
210
+ });
211
+ // ---------------------------------------------------------------------------
212
+ // Comments and replies
213
+ // ---------------------------------------------------------------------------
214
+ const commentUserSchema = z.object({
215
+ alias: z.string().describe('Author username.'),
216
+ avatar: z.string().describe('Author avatar URL, or empty if not set.'),
217
+ });
218
+ export const commentSchema = z.object({
219
+ id: z.string().describe('Comment ID.'),
220
+ type: z
221
+ .string()
222
+ .describe('Comment type — CODING_QUESTION (anchored to a coding question) or POST (anchored to a post).'),
223
+ title: z.string().describe('Comment title or label, or empty if not set.'),
224
+ language: z.string().describe('Programming language label for code-only comments, or empty.'),
225
+ upvoteCount: z.number().int().describe('Number of upvotes.'),
226
+ downvoteCount: z.number().int().describe('Number of downvotes.'),
227
+ voteScore: z.number().int().describe('Combined vote score (upvotes minus downvotes).'),
228
+ viewCount: z.number().int().describe('View count.'),
229
+ replyCount: z.number().int().describe('Number of replies on this comment.'),
230
+ isAnonymous: z.boolean().describe('Whether the comment was posted anonymously.'),
231
+ postId: z.string().describe('Post ID this comment is attached to, or empty.'),
232
+ codingQuestionId: z.string().describe('Coding question ID this comment is attached to, or empty.'),
233
+ user: commentUserSchema.describe('Author identity.'),
234
+ displayName: z.string().describe('Author display name as shown in the UI.'),
235
+ hasUserUpvoted: z.boolean().describe('Whether the requesting user has upvoted this comment.'),
236
+ hasUserDownvoted: z.boolean().describe('Whether the requesting user has downvoted this comment.'),
237
+ createdDate: z.string().describe('ISO 8601 timestamp when the comment was created.'),
238
+ updatedDate: z.string().describe('ISO 8601 timestamp when the comment was last updated.'),
239
+ });
240
+ export const commentDetailSchema = commentSchema.extend({
241
+ code: z
242
+ .string()
243
+ .describe('Source code body for code-snippet comments, or empty when the comment is a text discussion.'),
244
+ content: z.string().describe('Markdown text body for prose comments, or empty when the comment is a code snippet.'),
245
+ });
246
+ export const mapComment = (c) => ({
247
+ id: c.id ?? '',
248
+ type: c.type ?? '',
249
+ title: c.title ?? '',
250
+ language: c.extra?.language ?? '',
251
+ upvoteCount: c.upvoteCount ?? 0,
252
+ downvoteCount: c.downvoteCount ?? 0,
253
+ voteScore: c.voteScore ?? 0,
254
+ viewCount: c.viewCount ?? 0,
255
+ replyCount: c.replyCount ?? 0,
256
+ isAnonymous: c.isAnonymous ?? false,
257
+ postId: c.postId ?? '',
258
+ codingQuestionId: c.codingQuestionId ?? '',
259
+ user: { alias: c.user?.alias ?? '', avatar: c.user?.avatar ?? '' },
260
+ displayName: c.displayName ?? '',
261
+ hasUserUpvoted: c.hasUserUpvoted ?? false,
262
+ hasUserDownvoted: c.hasUserDownvoted ?? false,
263
+ createdDate: c.createdDate ?? '',
264
+ updatedDate: c.updatedDate ?? '',
265
+ });
266
+ export const mapCommentDetail = (c) => ({
267
+ ...mapComment(c),
268
+ code: c.code ?? '',
269
+ content: c.content ?? '',
270
+ });
271
+ // ---------------------------------------------------------------------------
272
+ // Coding questions (lightweight reference returned by /coding/filter)
273
+ // ---------------------------------------------------------------------------
274
+ export const codingQuestionRefSchema = z.object({
275
+ id: z.string().describe('Coding question ID.'),
276
+ type: z.string().describe('Coding question type (e.g., SINGLE_STEP, MULTI_STEP).'),
277
+ });
278
+ export const mapCodingQuestionRef = (q) => ({
279
+ id: q.id ?? '',
280
+ type: q.type ?? '',
281
+ });
282
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"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"}