@profullstack/agenticjobs 0.5.0 → 0.6.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 (51) hide show
  1. package/README.md +42 -4
  2. package/dist/cli/index.js +70 -1
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/client/client.d.ts +36 -0
  5. package/dist/client/client.js +22 -0
  6. package/dist/client/client.js.map +1 -1
  7. package/dist/config.d.ts +1 -1
  8. package/dist/config.js +1 -1
  9. package/dist/core/auth.js +4 -1
  10. package/dist/core/auth.js.map +1 -1
  11. package/dist/core/markdown-media.d.ts +51 -0
  12. package/dist/core/markdown-media.js +224 -0
  13. package/dist/core/markdown-media.js.map +1 -0
  14. package/dist/core/resumes.d.ts +12 -0
  15. package/dist/core/resumes.js +19 -0
  16. package/dist/core/resumes.js.map +1 -1
  17. package/dist/core/updates.d.ts +149 -0
  18. package/dist/core/updates.js +332 -0
  19. package/dist/core/updates.js.map +1 -0
  20. package/dist/directory/fetch.d.ts +1 -1
  21. package/dist/mcp/tools.js +78 -0
  22. package/dist/mcp/tools.js.map +1 -1
  23. package/dist/server/middleware.d.ts +11 -6
  24. package/dist/server/middleware.js +12 -7
  25. package/dist/server/middleware.js.map +1 -1
  26. package/dist/server/routes/api.js +167 -0
  27. package/dist/server/routes/api.js.map +1 -1
  28. package/dist/server/routes/discovery.js +130 -11
  29. package/dist/server/routes/discovery.js.map +1 -1
  30. package/dist/server/routes/openapi.js +105 -0
  31. package/dist/server/routes/openapi.js.map +1 -1
  32. package/dist/server/routes/pages.js +208 -9
  33. package/dist/server/routes/pages.js.map +1 -1
  34. package/dist/views/candidates.d.ts +3 -0
  35. package/dist/views/candidates.js +3 -2
  36. package/dist/views/candidates.js.map +1 -1
  37. package/dist/views/jobs.d.ts +40 -1
  38. package/dist/views/jobs.js +69 -4
  39. package/dist/views/jobs.js.map +1 -1
  40. package/dist/views/layout.js +2 -2
  41. package/dist/views/layout.js.map +1 -1
  42. package/dist/views/me.d.ts +11 -0
  43. package/dist/views/me.js +5 -2
  44. package/dist/views/me.js.map +1 -1
  45. package/dist/views/updates.d.ts +80 -0
  46. package/dist/views/updates.js +49 -0
  47. package/dist/views/updates.js.map +1 -0
  48. package/migrations/0010_updates_and_follows.sql +70 -0
  49. package/package.json +17 -15
  50. package/web/public/app.css +44 -0
  51. package/web/public/sw.js +1 -1
@@ -0,0 +1,332 @@
1
+ /**
2
+ * Updates, and following the people who post them.
3
+ *
4
+ * A short post from an employer or a candidate: we shipped this, we are hiring
5
+ * two more, I finished a contract and I am free in March. It is the thing a
6
+ * job board is missing between "posted a job" and silence, and the reason to
7
+ * follow anybody here.
8
+ *
9
+ * The whole design question is how not to become a spam feed, and the answer
10
+ * is that posting is expensive on purpose:
11
+ *
12
+ * - You post as an employer you belong to, or as yourself. There is no third
13
+ * option, so every update has a page behind it that can be read and judged.
14
+ * - Five a day, and no two the same. The rate limit is per author, in the
15
+ * database, so it holds however the update arrived.
16
+ * - 600 characters, one link. Long enough for news, short enough that nobody
17
+ * tries to publish an article here.
18
+ * - The body is text. Not Markdown, not HTML: the link is a column, so the
19
+ * one thing worth linking is already structured and nothing has to be
20
+ * sanitised out of prose.
21
+ */
22
+ import { clean } from "../schema/text.js";
23
+ import { publishable } from "../schema/instance.js";
24
+ /** The most an update can say. */
25
+ export const BODY_MAX = 600;
26
+ /**
27
+ * The least. A three-word post with a link is an ad, and the floor is the
28
+ * cheapest thing that discourages one.
29
+ */
30
+ export const BODY_MIN = 12;
31
+ /** Per author, per day. */
32
+ export const DAILY_LIMIT = 5;
33
+ /**
34
+ * The author, resolved for display.
35
+ *
36
+ * A candidate with no published resume has no page to link to, so the slug is
37
+ * null and the name still renders. Their email is never the fallback name: an
38
+ * update is public, and publishing one should not publish an address.
39
+ */
40
+ function authorOf(row) {
41
+ if (row.org_id !== null) {
42
+ return { kind: 'employer', slug: row.org_slug, name: row.org_name ?? 'An employer' };
43
+ }
44
+ const name = (row.user_name ?? '').trim();
45
+ return { kind: 'candidate', slug: row.public_slug, name: name === '' ? 'A candidate' : name };
46
+ }
47
+ function toUpdate(row) {
48
+ return {
49
+ id: row.id,
50
+ body: row.body,
51
+ link: row.link,
52
+ createdAt: row.created_at,
53
+ author: authorOf(row),
54
+ };
55
+ }
56
+ /**
57
+ * One join, used by every listing.
58
+ *
59
+ * A candidate's page is their public resume, so the slug comes from the
60
+ * resume they chose to list rather than from a second profile table. The
61
+ * `visibility` test is what keeps an update from linking to a private one.
62
+ *
63
+ * The source is a parameter because an insert reads back through the same
64
+ * join, and a data-modifying CTE is NOT visible to the rest of its own
65
+ * statement: `select ... from updates` beside `insert into updates` sees the
66
+ * snapshot from before the insert and comes back empty. The row has to be
67
+ * read out of the CTE itself.
68
+ */
69
+ function selectFrom(source) {
70
+ return `
71
+ select u.id, u.body, u.link, u.created_at,
72
+ u.org_id, o.slug as org_slug, o.name as org_name,
73
+ u.user_id, p.name as user_name,
74
+ (select r.public_slug from resumes r
75
+ where r.user_id = u.user_id and r.public_slug is not null
76
+ and r.visibility = 'public'
77
+ order by r.updated_at desc limit 1) as public_slug
78
+ from ${source} u
79
+ left join organisations o on o.id = u.org_id
80
+ left join users p on p.id = u.user_id`;
81
+ }
82
+ const SELECT = selectFrom('updates');
83
+ /**
84
+ * A link an update is allowed to carry.
85
+ *
86
+ * The host rules are the directory's, because the question is the same one:
87
+ * can somebody else's browser actually go there. `publishable` keeps only an
88
+ * origin, so it is used as the test and the full URL is what is stored; a
89
+ * link to a blog post is the normal case and stripping its path would make
90
+ * the field useless.
91
+ */
92
+ export function normaliseLink(value) {
93
+ const raw = clean(value, 500);
94
+ if (raw === '')
95
+ return null;
96
+ const withScheme = raw.includes('://') ? raw : `https://${raw}`;
97
+ if (publishable(withScheme) === null)
98
+ return null;
99
+ const url = new URL(withScheme);
100
+ // Credentials in a URL are for a fetcher, never for a link somebody clicks.
101
+ url.username = '';
102
+ url.password = '';
103
+ return url.toString();
104
+ }
105
+ /**
106
+ * Post an update.
107
+ *
108
+ * Returns the update, or a sentence explaining why not. Every caller here is
109
+ * either a person looking at a form or a model reading an error body, and
110
+ * both can act on a sentence.
111
+ */
112
+ export async function postUpdate(pool, authorId, target, input) {
113
+ const body = clean(input.body, BODY_MAX, { multiline: true });
114
+ if (body.length < BODY_MIN) {
115
+ return `An update needs at least ${BODY_MIN} characters. Say what happened.`;
116
+ }
117
+ const link = normaliseLink(input.link);
118
+ if (link === null && clean(input.link, 500) !== '') {
119
+ return 'That link is not a public http(s) URL, so nobody else could open it.';
120
+ }
121
+ // The author has to be allowed to post as this target. An org post needs
122
+ // membership; a candidate post can only ever be your own.
123
+ if (target.kind === 'employer') {
124
+ const member = await pool.query(`select 1 from memberships where user_id = $1 and org_id = $2`, [
125
+ authorId,
126
+ target.orgId,
127
+ ]);
128
+ if (member.rows.length === 0)
129
+ return 'You do not post for that employer.';
130
+ }
131
+ else if (target.userId !== authorId) {
132
+ return 'You can only post updates as yourself.';
133
+ }
134
+ const column = target.kind === 'employer' ? 'org_id' : 'user_id';
135
+ const owner = target.kind === 'employer' ? target.orgId : target.userId;
136
+ // The rate limit and the duplicate check are one round trip, and both are
137
+ // asked of the AUTHOR rather than of the target: posting the same thing to
138
+ // four employers you belong to is the spam this is here to stop.
139
+ const recent = await pool.query(`select count(*) filter (where created_at > now() - interval '24 hours') as today,
140
+ count(*) filter (where body = $2 and created_at > now() - interval '30 days') as same
141
+ from updates where author_id = $1`, [authorId, body]);
142
+ const today = Number(recent.rows[0]?.today ?? 0);
143
+ const same = Number(recent.rows[0]?.same ?? 0);
144
+ if (today >= DAILY_LIMIT) {
145
+ return `That is ${DAILY_LIMIT} updates today, which is the limit. Tomorrow.`;
146
+ }
147
+ if (same > 0)
148
+ return 'You already posted that. Say something else, or link it again later.';
149
+ const created = await pool.query(`with inserted as (
150
+ insert into updates (${column}, author_id, body, link)
151
+ values ($1, $2, $3, $4)
152
+ returning id, body, link, created_at, org_id, user_id
153
+ )
154
+ ${selectFrom('inserted')}`, [owner, authorId, body, link]);
155
+ const row = created.rows[0];
156
+ if (row === undefined)
157
+ throw new Error('update insert returned no row');
158
+ return toUpdate(row);
159
+ }
160
+ function cap(limit) {
161
+ return Math.min(200, Math.max(1, Math.trunc(limit)));
162
+ }
163
+ /** Everything anybody posted, newest first. The board's news page. */
164
+ export async function listUpdates(pool, limit = 50) {
165
+ const result = await pool.query(`${SELECT} order by u.created_at desc limit $1`, [cap(limit)]);
166
+ return result.rows.map(toUpdate);
167
+ }
168
+ export async function listUpdatesFor(pool, target, limit = 20) {
169
+ const column = target.kind === 'employer' ? 'u.org_id' : 'u.user_id';
170
+ const owner = target.kind === 'employer' ? target.orgId : target.userId;
171
+ const result = await pool.query(`${SELECT} where ${column} = $1 order by u.created_at desc limit $2`, [owner, cap(limit)]);
172
+ return result.rows.map(toUpdate);
173
+ }
174
+ /**
175
+ * The updates from everyone one person follows.
176
+ *
177
+ * This is the only reason follows exist, so it is one query rather than a
178
+ * list of ids fetched and then looped over.
179
+ */
180
+ export async function listFollowedUpdates(pool, followerId, limit = 50) {
181
+ const result = await pool.query(`${SELECT}
182
+ where exists (
183
+ select 1 from follows f
184
+ where f.follower_id = $1
185
+ and ((f.org_id is not null and f.org_id = u.org_id)
186
+ or (f.user_id is not null and f.user_id = u.user_id))
187
+ )
188
+ order by u.created_at desc limit $2`, [followerId, cap(limit)]);
189
+ return result.rows.map(toUpdate);
190
+ }
191
+ /**
192
+ * Delete an update.
193
+ *
194
+ * Whoever wrote it, or anybody who posts for that employer: a person who
195
+ * leaves a company should not leave a post nobody there can take down.
196
+ */
197
+ export async function deleteUpdate(pool, viewerId, id) {
198
+ const result = await pool.query(`delete from updates u
199
+ where u.id = $1
200
+ and (u.author_id = $2
201
+ or (u.org_id is not null and exists (
202
+ select 1 from memberships m
203
+ where m.org_id = u.org_id and m.user_id = $2)))`, [id, viewerId]);
204
+ return (result.rowCount ?? 0) > 0;
205
+ }
206
+ // --- following ----------------------------------------------------------
207
+ /**
208
+ * Follow. Following twice is following once.
209
+ *
210
+ * The unique index does the work, so a double-submitted form and a retried
211
+ * API call are both no-ops rather than an error the caller has to read.
212
+ */
213
+ export async function follow(pool, followerId, target) {
214
+ const column = target.kind === 'employer' ? 'org_id' : 'user_id';
215
+ const owner = target.kind === 'employer' ? target.orgId : target.userId;
216
+ if (target.kind === 'candidate' && target.userId === followerId)
217
+ return false;
218
+ await pool.query(`insert into follows (follower_id, ${column}) values ($1, $2)
219
+ on conflict do nothing`, [followerId, owner]);
220
+ return true;
221
+ }
222
+ export async function unfollow(pool, followerId, target) {
223
+ const column = target.kind === 'employer' ? 'org_id' : 'user_id';
224
+ const owner = target.kind === 'employer' ? target.orgId : target.userId;
225
+ await pool.query(`delete from follows where follower_id = $1 and ${column} = $2`, [
226
+ followerId,
227
+ owner,
228
+ ]);
229
+ }
230
+ export async function isFollowing(pool, followerId, target) {
231
+ const column = target.kind === 'employer' ? 'org_id' : 'user_id';
232
+ const owner = target.kind === 'employer' ? target.orgId : target.userId;
233
+ const result = await pool.query(`select 1 from follows where follower_id = $1 and ${column} = $2`, [followerId, owner]);
234
+ return result.rows.length > 0;
235
+ }
236
+ export async function followerCount(pool, target) {
237
+ const column = target.kind === 'employer' ? 'org_id' : 'user_id';
238
+ const owner = target.kind === 'employer' ? target.orgId : target.userId;
239
+ const result = await pool.query(`select count(*) as count from follows where ${column} = $1`, [owner]);
240
+ return Number(result.rows[0]?.count ?? 0);
241
+ }
242
+ /** Who one person follows, for their own dashboard. */
243
+ export async function listFollowing(pool, followerId) {
244
+ const result = await pool.query(`select 'employer'::text as kind, o.slug, o.name, f.created_at as since
245
+ from follows f join organisations o on o.id = f.org_id
246
+ where f.follower_id = $1
247
+ union all
248
+ select 'candidate'::text as kind,
249
+ (select r.public_slug from resumes r
250
+ where r.user_id = f.user_id and r.public_slug is not null
251
+ and r.visibility = 'public'
252
+ order by r.updated_at desc limit 1) as slug,
253
+ p.name, f.created_at as since
254
+ from follows f join users p on p.id = f.user_id
255
+ where f.follower_id = $1
256
+ order by since desc`, [followerId]);
257
+ return result.rows.map((row) => ({
258
+ kind: row.kind,
259
+ slug: row.slug,
260
+ name: (row.name ?? '').trim() === '' ? 'Someone' : row.name.trim(),
261
+ since: row.since,
262
+ }));
263
+ }
264
+ export async function scopeFrom(pool, params) {
265
+ const org = (params.get('org') ?? '').trim();
266
+ const candidate = (params.get('candidate') ?? '').trim();
267
+ if (org !== '') {
268
+ const row = await pool.query(`select id, name from organisations where slug = $1`, [org]);
269
+ const found = row.rows[0];
270
+ if (found === undefined)
271
+ return { kind: 'unknown', slug: org };
272
+ return {
273
+ kind: 'author',
274
+ target: { kind: 'employer', orgId: found.id },
275
+ author: 'employer',
276
+ slug: org,
277
+ name: found.name,
278
+ };
279
+ }
280
+ if (candidate !== '') {
281
+ const userId = await userForCandidate(pool, candidate);
282
+ if (userId === null)
283
+ return { kind: 'unknown', slug: candidate };
284
+ const row = await pool.query(`select name from users where id = $1`, [
285
+ userId,
286
+ ]);
287
+ const name = (row.rows[0]?.name ?? '').trim();
288
+ return {
289
+ kind: 'author',
290
+ target: { kind: 'candidate', userId },
291
+ author: 'candidate',
292
+ slug: candidate,
293
+ name: name === '' ? 'A candidate' : name,
294
+ };
295
+ }
296
+ return { kind: 'all' };
297
+ }
298
+ /** The updates a scope describes. An unknown author has none, not all. */
299
+ export async function listScoped(pool, scope, limit = 50) {
300
+ if (scope.kind === 'unknown')
301
+ return [];
302
+ if (scope.kind === 'author')
303
+ return listUpdatesFor(pool, scope.target, limit);
304
+ return listUpdates(pool, limit);
305
+ }
306
+ /**
307
+ * The page a person's own updates would appear on, if they have one.
308
+ *
309
+ * Posting as yourself requires a listed resume. It is the cheapest useful
310
+ * gate: an update whose author has no page is an anonymous post, and an
311
+ * account made this morning has nothing to lose by spamming from one.
312
+ */
313
+ export async function candidateSlugFor(pool, userId) {
314
+ const result = await pool.query(`select public_slug from resumes
315
+ where user_id = $1 and public_slug is not null and visibility = 'public'
316
+ order by updated_at desc limit 1`, [userId]);
317
+ return result.rows[0]?.public_slug ?? null;
318
+ }
319
+ /**
320
+ * The user behind a public resume slug.
321
+ *
322
+ * Following a candidate follows the person, not the document, so a resume
323
+ * rewritten or replaced does not drop their followers.
324
+ */
325
+ export async function userForCandidate(pool, slug) {
326
+ // Matches what /candidates/:slug actually serves, so a page a person can
327
+ // open is a page they can follow.
328
+ const result = await pool.query(`select user_id from resumes
329
+ where public_slug = $1 and visibility in ('link', 'public') limit 1`, [slug]);
330
+ return result.rows[0]?.user_id ?? null;
331
+ }
332
+ //# sourceMappingURL=updates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updates.js","sourceRoot":"","sources":["../../src/core/updates.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * response says about where it came from.
9
9
  */
10
10
  import { type InstanceDescriptor } from '../schema/instance.ts';
11
- export declare const USER_AGENT = "agenticjobs/0.5.0 (+https://agenticjobs.work)";
11
+ export declare const USER_AGENT = "agenticjobs/0.6.0 (+https://agenticjobs.work)";
12
12
  export declare class FetchProblem extends Error {
13
13
  }
14
14
  export interface FetchOptions {
package/dist/mcp/tools.js CHANGED
@@ -144,6 +144,39 @@ export const TOOLS = [
144
144
  description: 'Applications to one of your listings, including each candidate resume and any agent disclosure.',
145
145
  inputSchema: object({ slug: string('The job slug.') }, ['slug']),
146
146
  },
147
+ {
148
+ name: 'read_updates',
149
+ title: 'Read updates',
150
+ description: 'Short posts from the employers and candidates on this board: hiring news, what shipped, who is free next. Everything here is from a real employer or a person with a resume, capped at five a day each. Name an employer or a candidate to read one of them, or set following to true for the ones this account follows.',
151
+ inputSchema: object({
152
+ org: string("An employer's slug."),
153
+ candidate: string("A candidate's slug."),
154
+ following: {
155
+ type: 'boolean',
156
+ description: 'Only from who this account follows. Needs a signed-in account.',
157
+ },
158
+ }),
159
+ },
160
+ {
161
+ name: 'post_update',
162
+ title: 'Post an update',
163
+ description: 'Post a short update. With org, it is from that employer and you must post for them; without it, from this account, which needs a published resume so the update has a page behind it. At most 600 characters and one link. Five a day, and the same text twice is refused - this is news, not a channel to broadcast on.',
164
+ inputSchema: object({
165
+ body: string('What happened. Plain text, at most 600 characters.'),
166
+ link: string('One public URL. Optional.'),
167
+ org: string('Post as this employer instead of as this account.'),
168
+ }, ['body']),
169
+ },
170
+ {
171
+ name: 'follow',
172
+ title: 'Follow or unfollow',
173
+ description: 'Follow an employer or a candidate so their updates appear in this account\'s feed. Set following to false to stop. Following twice is following once.',
174
+ inputSchema: object({
175
+ org: string("An employer's slug."),
176
+ candidate: string("A candidate's slug."),
177
+ following: { type: 'boolean', description: 'Defaults to true.' },
178
+ }, []),
179
+ },
147
180
  {
148
181
  name: 'search_network',
149
182
  title: 'Search every board',
@@ -307,6 +340,51 @@ export async function callTool(caller, name, args) {
307
340
  return toolError(message(response.body, 'Could not read applications.'));
308
341
  return text(JSON.stringify(response.body, null, 2), response.body);
309
342
  }
343
+ case 'read_updates': {
344
+ const path = `/api/v1/updates${query(args, ['org', 'candidate', 'following'])}`;
345
+ const response = await caller.call('GET', path);
346
+ if (response.status === 401)
347
+ return toolError(signInFirst(caller));
348
+ if (response.status !== 200)
349
+ return toolError(message(response.body, 'No such author.'));
350
+ const page = response.body;
351
+ const items = page.items ?? [];
352
+ if (items.length === 0) {
353
+ return text(`Nothing posted on ${caller.server} that matches.`, response.body);
354
+ }
355
+ return text(JSON.stringify(response.body, null, 2), response.body);
356
+ }
357
+ case 'post_update': {
358
+ const response = await caller.call('POST', '/api/v1/updates', {
359
+ body: String(args['body'] ?? ''),
360
+ ...(typeof args['link'] === 'string' && args['link'] !== '' ? { link: args['link'] } : {}),
361
+ ...(typeof args['org'] === 'string' && args['org'] !== '' ? { org: args['org'] } : {}),
362
+ });
363
+ if (response.status === 401)
364
+ return toolError(signInFirst(caller));
365
+ if (response.status !== 201) {
366
+ return toolError(message(response.body, 'The update was not posted.'));
367
+ }
368
+ const posted = response.body;
369
+ return text(`Posted. It is on ${posted.author ?? caller.server}.`, response.body);
370
+ }
371
+ case 'follow': {
372
+ const org = typeof args['org'] === 'string' ? args['org'] : '';
373
+ const candidate = typeof args['candidate'] === 'string' ? args['candidate'] : '';
374
+ if (org === '' && candidate === '') {
375
+ return toolError('Name an employer with org, or a candidate with candidate.');
376
+ }
377
+ const path = org !== ''
378
+ ? `/api/v1/orgs/${encodeURIComponent(org)}/follow`
379
+ : `/api/v1/candidates/${encodeURIComponent(candidate)}/follow`;
380
+ const wanted = args['following'] !== false;
381
+ const response = await caller.call(wanted ? 'POST' : 'DELETE', path);
382
+ if (response.status === 401)
383
+ return toolError(signInFirst(caller));
384
+ if (response.status !== 200)
385
+ return toolError(message(response.body, 'Nobody by that name.'));
386
+ return text(wanted ? 'Following.' : 'Not following.', response.body);
387
+ }
310
388
  case 'search_network': {
311
389
  const response = await caller.call('GET', `/api/v1/directory/search${query(args, ['q', 'workplace', 'agentPolicy', 'limit'])}`);
312
390
  if (response.status === 404) {
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -20,12 +20,17 @@ export declare function withViewer(deps: Deps): MiddlewareHandler<AppEnv>;
20
20
  /**
21
21
  * Security headers.
22
22
  *
23
- * The board ships no inline script and no third-party script, so the policy
24
- * can be the strict one: `script-src 'self'` covers the single progressive
25
- * enhancement file and nothing else. Styles need 'unsafe-inline' only because
26
- * a few components carry an inline `style` attribute for a computed width -
27
- * note that in CSP a style ATTRIBUTE is covered by style-src, not by
28
- * style-src-attr alone, which is a distinction that has cost time before.
23
+ * The board ships no inline script, so script-src needs no 'unsafe-inline'.
24
+ * It does ship exactly one third-party script - the CrawlProof stats tag in
25
+ * the layout - and that host has to be named here or the browser drops it with
26
+ * nothing to show for it but a console line nobody is looking at. A tracker
27
+ * that silently never runs is worse than no tracker: the numbers look like an
28
+ * audience rather than like a bug.
29
+ *
30
+ * Styles need 'unsafe-inline' only because a few components carry an inline
31
+ * `style` attribute for a computed width - note that in CSP a style ATTRIBUTE
32
+ * is covered by style-src, not by style-src-attr alone, which is a distinction
33
+ * that has cost time before.
29
34
  */
30
35
  export declare function securityHeaders(): MiddlewareHandler<AppEnv>;
31
36
  /**
@@ -37,12 +37,17 @@ export function withViewer(deps) {
37
37
  /**
38
38
  * Security headers.
39
39
  *
40
- * The board ships no inline script and no third-party script, so the policy
41
- * can be the strict one: `script-src 'self'` covers the single progressive
42
- * enhancement file and nothing else. Styles need 'unsafe-inline' only because
43
- * a few components carry an inline `style` attribute for a computed width -
44
- * note that in CSP a style ATTRIBUTE is covered by style-src, not by
45
- * style-src-attr alone, which is a distinction that has cost time before.
40
+ * The board ships no inline script, so script-src needs no 'unsafe-inline'.
41
+ * It does ship exactly one third-party script - the CrawlProof stats tag in
42
+ * the layout - and that host has to be named here or the browser drops it with
43
+ * nothing to show for it but a console line nobody is looking at. A tracker
44
+ * that silently never runs is worse than no tracker: the numbers look like an
45
+ * audience rather than like a bug.
46
+ *
47
+ * Styles need 'unsafe-inline' only because a few components carry an inline
48
+ * `style` attribute for a computed width - note that in CSP a style ATTRIBUTE
49
+ * is covered by style-src, not by style-src-attr alone, which is a distinction
50
+ * that has cost time before.
46
51
  */
47
52
  export function securityHeaders() {
48
53
  const policy = [
@@ -51,7 +56,7 @@ export function securityHeaders() {
51
56
  `form-action 'self'`,
52
57
  `frame-ancestors 'none'`,
53
58
  `object-src 'none'`,
54
- `script-src 'self'`,
59
+ `script-src 'self' https://crawlproof.com`,
55
60
  `style-src 'self' 'unsafe-inline'`,
56
61
  // Employer logos and avatars come from wherever the employer hosts them.
57
62
  // 'self' has to be listed explicitly: omitting it works in production and
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"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"}