@profullstack/agenticjobs 0.1.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 (206) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +219 -0
  3. package/bin/agenticjobs-mcp.mjs +2 -0
  4. package/bin/agenticjobs.mjs +2 -0
  5. package/dist/cli/args.d.ts +17 -0
  6. package/dist/cli/args.js +103 -0
  7. package/dist/cli/args.js.map +1 -0
  8. package/dist/cli/format.d.ts +15 -0
  9. package/dist/cli/format.js +24 -0
  10. package/dist/cli/format.js.map +1 -0
  11. package/dist/cli/index.d.ts +13 -0
  12. package/dist/cli/index.js +620 -0
  13. package/dist/cli/index.js.map +1 -0
  14. package/dist/cli/jobfile.d.ts +15 -0
  15. package/dist/cli/jobfile.js +94 -0
  16. package/dist/cli/jobfile.js.map +1 -0
  17. package/dist/client/client.d.ts +105 -0
  18. package/dist/client/client.js +182 -0
  19. package/dist/client/client.js.map +1 -0
  20. package/dist/client/config.d.ts +33 -0
  21. package/dist/client/config.js +92 -0
  22. package/dist/client/config.js.map +1 -0
  23. package/dist/client/fanout.d.ts +35 -0
  24. package/dist/client/fanout.js +77 -0
  25. package/dist/client/fanout.js.map +1 -0
  26. package/dist/client/index.d.ts +4 -0
  27. package/dist/client/index.js +5 -0
  28. package/dist/client/index.js.map +1 -0
  29. package/dist/client/login.d.ts +23 -0
  30. package/dist/client/login.js +45 -0
  31. package/dist/client/login.js.map +1 -0
  32. package/dist/config.d.ts +40 -0
  33. package/dist/config.js +64 -0
  34. package/dist/config.js.map +1 -0
  35. package/dist/core/applications.d.ts +67 -0
  36. package/dist/core/applications.js +187 -0
  37. package/dist/core/applications.js.map +1 -0
  38. package/dist/core/auth.d.ts +120 -0
  39. package/dist/core/auth.js +246 -0
  40. package/dist/core/auth.js.map +1 -0
  41. package/dist/core/import.d.ts +52 -0
  42. package/dist/core/import.js +311 -0
  43. package/dist/core/import.js.map +1 -0
  44. package/dist/core/jobs.d.ts +91 -0
  45. package/dist/core/jobs.js +381 -0
  46. package/dist/core/jobs.js.map +1 -0
  47. package/dist/core/orgs.d.ts +21 -0
  48. package/dist/core/orgs.js +111 -0
  49. package/dist/core/orgs.js.map +1 -0
  50. package/dist/core/resumes.d.ts +51 -0
  51. package/dist/core/resumes.js +144 -0
  52. package/dist/core/resumes.js.map +1 -0
  53. package/dist/core/zip.d.ts +17 -0
  54. package/dist/core/zip.js +77 -0
  55. package/dist/core/zip.js.map +1 -0
  56. package/dist/db/index.d.ts +3 -0
  57. package/dist/db/index.js +3 -0
  58. package/dist/db/index.js.map +1 -0
  59. package/dist/db/migrate.d.ts +15 -0
  60. package/dist/db/migrate.js +67 -0
  61. package/dist/db/migrate.js.map +1 -0
  62. package/dist/db/pool.d.ts +13 -0
  63. package/dist/db/pool.js +68 -0
  64. package/dist/db/pool.js.map +1 -0
  65. package/dist/db/seed.d.ts +9 -0
  66. package/dist/db/seed.js +120 -0
  67. package/dist/db/seed.js.map +1 -0
  68. package/dist/directory/announce.d.ts +32 -0
  69. package/dist/directory/announce.js +59 -0
  70. package/dist/directory/announce.js.map +1 -0
  71. package/dist/directory/federate.d.ts +59 -0
  72. package/dist/directory/federate.js +126 -0
  73. package/dist/directory/federate.js.map +1 -0
  74. package/dist/directory/fetch.d.ts +35 -0
  75. package/dist/directory/fetch.js +138 -0
  76. package/dist/directory/fetch.js.map +1 -0
  77. package/dist/directory/index.d.ts +4 -0
  78. package/dist/directory/index.js +5 -0
  79. package/dist/directory/index.js.map +1 -0
  80. package/dist/directory/registry.d.ts +55 -0
  81. package/dist/directory/registry.js +155 -0
  82. package/dist/directory/registry.js.map +1 -0
  83. package/dist/index.d.ts +14 -0
  84. package/dist/index.js +14 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/markup/escape.d.ts +20 -0
  87. package/dist/markup/escape.js +56 -0
  88. package/dist/markup/escape.js.map +1 -0
  89. package/dist/markup/markdown.d.ts +35 -0
  90. package/dist/markup/markdown.js +279 -0
  91. package/dist/markup/markdown.js.map +1 -0
  92. package/dist/markup/resume.d.ts +72 -0
  93. package/dist/markup/resume.js +260 -0
  94. package/dist/markup/resume.js.map +1 -0
  95. package/dist/mcp/protocol.d.ts +56 -0
  96. package/dist/mcp/protocol.js +48 -0
  97. package/dist/mcp/protocol.js.map +1 -0
  98. package/dist/mcp/server.d.ts +21 -0
  99. package/dist/mcp/server.js +73 -0
  100. package/dist/mcp/server.js.map +1 -0
  101. package/dist/mcp/stdio.d.ts +13 -0
  102. package/dist/mcp/stdio.js +85 -0
  103. package/dist/mcp/stdio.js.map +1 -0
  104. package/dist/mcp/tools.d.ts +26 -0
  105. package/dist/mcp/tools.js +351 -0
  106. package/dist/mcp/tools.js.map +1 -0
  107. package/dist/schema/index.d.ts +5 -0
  108. package/dist/schema/index.js +6 -0
  109. package/dist/schema/index.js.map +1 -0
  110. package/dist/schema/instance.d.ts +85 -0
  111. package/dist/schema/instance.js +147 -0
  112. package/dist/schema/instance.js.map +1 -0
  113. package/dist/schema/job.d.ts +151 -0
  114. package/dist/schema/job.js +73 -0
  115. package/dist/schema/job.js.map +1 -0
  116. package/dist/schema/jsonld.d.ts +18 -0
  117. package/dist/schema/jsonld.js +120 -0
  118. package/dist/schema/jsonld.js.map +1 -0
  119. package/dist/schema/query.d.ts +47 -0
  120. package/dist/schema/query.js +103 -0
  121. package/dist/schema/query.js.map +1 -0
  122. package/dist/schema/text.d.ts +27 -0
  123. package/dist/schema/text.js +117 -0
  124. package/dist/schema/text.js.map +1 -0
  125. package/dist/server/app.d.ts +13 -0
  126. package/dist/server/app.js +57 -0
  127. package/dist/server/app.js.map +1 -0
  128. package/dist/server/deps.d.ts +20 -0
  129. package/dist/server/deps.js +2 -0
  130. package/dist/server/deps.js.map +1 -0
  131. package/dist/server/middleware.d.ts +39 -0
  132. package/dist/server/middleware.js +100 -0
  133. package/dist/server/middleware.js.map +1 -0
  134. package/dist/server/routes/api.d.ts +20 -0
  135. package/dist/server/routes/api.js +584 -0
  136. package/dist/server/routes/api.js.map +1 -0
  137. package/dist/server/routes/descriptor.d.ts +11 -0
  138. package/dist/server/routes/descriptor.js +31 -0
  139. package/dist/server/routes/descriptor.js.map +1 -0
  140. package/dist/server/routes/discovery.d.ts +12 -0
  141. package/dist/server/routes/discovery.js +305 -0
  142. package/dist/server/routes/discovery.js.map +1 -0
  143. package/dist/server/routes/mcp.d.ts +19 -0
  144. package/dist/server/routes/mcp.js +85 -0
  145. package/dist/server/routes/mcp.js.map +1 -0
  146. package/dist/server/routes/openapi.d.ts +11 -0
  147. package/dist/server/routes/openapi.js +297 -0
  148. package/dist/server/routes/openapi.js.map +1 -0
  149. package/dist/server/routes/pages.d.ts +11 -0
  150. package/dist/server/routes/pages.js +445 -0
  151. package/dist/server/routes/pages.js.map +1 -0
  152. package/dist/server/routes/passkey.d.ts +20 -0
  153. package/dist/server/routes/passkey.js +198 -0
  154. package/dist/server/routes/passkey.js.map +1 -0
  155. package/dist/server/routes/specs.d.ts +10 -0
  156. package/dist/server/routes/specs.js +42 -0
  157. package/dist/server/routes/specs.js.map +1 -0
  158. package/dist/server/serve.d.ts +11 -0
  159. package/dist/server/serve.js +79 -0
  160. package/dist/server/serve.js.map +1 -0
  161. package/dist/tui/index.d.ts +13 -0
  162. package/dist/tui/index.js +266 -0
  163. package/dist/tui/index.js.map +1 -0
  164. package/dist/tui/state.d.ts +63 -0
  165. package/dist/tui/state.js +136 -0
  166. package/dist/tui/state.js.map +1 -0
  167. package/dist/tui/types.d.ts +2 -0
  168. package/dist/tui/types.js +2 -0
  169. package/dist/tui/types.js.map +1 -0
  170. package/dist/tui/views.d.ts +11 -0
  171. package/dist/tui/views.js +197 -0
  172. package/dist/tui/views.js.map +1 -0
  173. package/dist/views/auth.d.ts +21 -0
  174. package/dist/views/auth.js +5 -0
  175. package/dist/views/auth.js.map +1 -0
  176. package/dist/views/docs.d.ts +17 -0
  177. package/dist/views/docs.js +40 -0
  178. package/dist/views/docs.js.map +1 -0
  179. package/dist/views/jobs.d.ts +49 -0
  180. package/dist/views/jobs.js +44 -0
  181. package/dist/views/jobs.js.map +1 -0
  182. package/dist/views/layout.d.ts +58 -0
  183. package/dist/views/layout.js +36 -0
  184. package/dist/views/layout.js.map +1 -0
  185. package/dist/views/me.d.ts +27 -0
  186. package/dist/views/me.js +6 -0
  187. package/dist/views/me.js.map +1 -0
  188. package/dist/views/network.d.ts +21 -0
  189. package/dist/views/network.js +17 -0
  190. package/dist/views/network.js.map +1 -0
  191. package/dist/views/post.d.ts +22 -0
  192. package/dist/views/post.js +20 -0
  193. package/dist/views/post.js.map +1 -0
  194. package/docs/openjob.md +200 -0
  195. package/docs/openresume.md +143 -0
  196. package/migrations/0001_init.sql +109 -0
  197. package/migrations/0002_auth.sql +82 -0
  198. package/migrations/0003_directory.sql +27 -0
  199. package/migrations/0004_resumes.sql +63 -0
  200. package/migrations/0005_application_drafts.sql +20 -0
  201. package/package.json +92 -0
  202. package/web/public/app.css +731 -0
  203. package/web/public/app.js +173 -0
  204. package/web/public/icon.svg +5 -0
  205. package/web/public/sw.js +64 -0
  206. package/web/public/tokens.css +153 -0
@@ -0,0 +1,297 @@
1
+ /**
2
+ * The OpenAPI document, written by hand.
3
+ *
4
+ * Hand-written because it is read by people and by models deciding what this
5
+ * board can do, and a generated one describes the router rather than the
6
+ * board. test/api.test.ts walks every documented GET against the real routes,
7
+ * so a path that drifts out of this file fails the suite rather than quietly
8
+ * lying to whoever reads it.
9
+ */
10
+ export function openApiDocument(config) {
11
+ const job = { $ref: '#/components/schemas/Job' };
12
+ return {
13
+ openapi: '3.1.0',
14
+ info: {
15
+ title: `${config.boardName} API`,
16
+ version: config.version,
17
+ summary: 'An agent-friendly job board. Its own listings, never scraped.',
18
+ description: [
19
+ 'Every listing on this board was posted to it. Nothing here is scraped',
20
+ 'from anywhere else, so a job you find has an employer behind it who',
21
+ 'chose to be here.',
22
+ '',
23
+ 'Reads need no credentials. To apply, GET the apply-schema for a job and',
24
+ 'POST the answers back; the schema tells you the exact fields and whether',
25
+ 'the employer wants agent-written applications disclosed.',
26
+ '',
27
+ 'Resumes are Markdown, in the OpenResume.md convention. Send one inline as',
28
+ '`resume`, or reference one you have saved.',
29
+ ].join('\n'),
30
+ license: { name: 'MIT', identifier: 'MIT' },
31
+ },
32
+ servers: [{ url: config.publicUrl }],
33
+ tags: [
34
+ { name: 'jobs', description: 'Search, read and post listings.' },
35
+ { name: 'apply', description: 'The application flow an agent can complete.' },
36
+ { name: 'resumes', description: 'Markdown resumes, created and edited over the API.' },
37
+ { name: 'auth', description: 'Device flow for terminals, magic links for browsers.' },
38
+ { name: 'federation', description: 'The directory of instances, and search across them.' },
39
+ ],
40
+ paths: {
41
+ '/api/v1/jobs': {
42
+ get: {
43
+ tags: ['jobs'],
44
+ summary: 'Search this board.',
45
+ parameters: [
46
+ param('q', 'Full text over title, description, tags and stack.'),
47
+ param('employmentType', 'full-time, part-time, contract, internship, temporary'),
48
+ param('workplace', 'remote, hybrid, onsite'),
49
+ param('seniority', 'intern, junior, mid, senior, staff, principal, lead'),
50
+ param('agentPolicy', 'welcome, disclose, human-only'),
51
+ param('tag', 'Repeatable. Matches tags and stack.'),
52
+ param('salaryMin', 'Minimum, compared against the top of each range.', 'integer'),
53
+ param('org', 'Employer slug.'),
54
+ param('sort', 'recent, relevant, salary'),
55
+ param('limit', '1-100, default 25', 'integer'),
56
+ param('offset', 'default 0', 'integer'),
57
+ ],
58
+ responses: {
59
+ 200: page('A page of jobs.', job),
60
+ },
61
+ },
62
+ post: {
63
+ tags: ['jobs'],
64
+ summary: 'Post a job. Creates a draft unless publish is true.',
65
+ security: [{ bearer: [] }],
66
+ responses: { 201: ok('The job as stored.'), 401: err(), 403: err() },
67
+ },
68
+ },
69
+ '/api/v1/jobs/{slug}': {
70
+ get: {
71
+ tags: ['jobs'],
72
+ summary: 'One job, with its description rendered and its JSON-LD.',
73
+ parameters: [pathParam('slug')],
74
+ responses: { 200: ok('The job.'), 404: err() },
75
+ },
76
+ },
77
+ '/api/v1/jobs/{slug}/apply-schema': {
78
+ get: {
79
+ tags: ['apply'],
80
+ summary: 'The fields to fill in, and where to send them.',
81
+ description: 'Start here. The response says whether this employer takes applications on the board at all, what the fields are, and whether an agent-written application has to say so.',
82
+ parameters: [pathParam('slug')],
83
+ responses: { 200: ok('The application schema.'), 404: err() },
84
+ },
85
+ },
86
+ '/api/v1/jobs/{slug}/apply': {
87
+ post: {
88
+ tags: ['apply'],
89
+ summary: 'Apply.',
90
+ parameters: [pathParam('slug')],
91
+ responses: { 201: ok('Accepted.'), 400: err(), 404: err(), 429: err() },
92
+ },
93
+ },
94
+ '/api/v1/jobs/{slug}/applications': {
95
+ get: {
96
+ tags: ['apply'],
97
+ summary: 'Applications to a job. Members of the employer only.',
98
+ security: [{ bearer: [] }],
99
+ parameters: [pathParam('slug')],
100
+ responses: { 200: ok('The applications.'), 401: err(), 403: err() },
101
+ },
102
+ },
103
+ '/api/v1/applications/drafts': {
104
+ get: {
105
+ tags: ['apply'],
106
+ summary: 'Applications you have prepared but not sent.',
107
+ description: 'An agent can prepare an application and leave it here; a person releases it. The mirror of a job posting starting as a draft.',
108
+ security: [{ bearer: [] }],
109
+ responses: { 200: ok('Your drafts.'), 401: err() },
110
+ },
111
+ },
112
+ '/api/v1/applications/{id}/submit': {
113
+ post: {
114
+ tags: ['apply'],
115
+ summary: 'Send a draft application.',
116
+ security: [{ bearer: [] }],
117
+ parameters: [pathParam('id')],
118
+ responses: { 200: ok('Sent.'), 401: err(), 404: err() },
119
+ },
120
+ },
121
+ '/api/v1/orgs': {
122
+ get: { tags: ['jobs'], summary: 'Employers with open listings.', responses: { 200: ok('Employers.') } },
123
+ },
124
+ '/api/v1/orgs/{slug}': {
125
+ get: {
126
+ tags: ['jobs'],
127
+ summary: 'One employer and its open listings.',
128
+ parameters: [pathParam('slug')],
129
+ responses: { 200: ok('The employer.'), 404: err() },
130
+ },
131
+ },
132
+ '/api/v1/me': {
133
+ get: {
134
+ tags: ['auth'],
135
+ summary: 'Who this token belongs to, with their employers and resumes.',
136
+ security: [{ bearer: [] }],
137
+ responses: { 200: ok('The caller.'), 401: err() },
138
+ },
139
+ },
140
+ '/api/v1/resumes': {
141
+ get: {
142
+ tags: ['resumes'],
143
+ summary: 'Your resumes.',
144
+ security: [{ bearer: [] }],
145
+ responses: { 200: ok('Resumes.'), 401: err() },
146
+ },
147
+ post: {
148
+ tags: ['resumes'],
149
+ summary: 'Create one from Markdown.',
150
+ security: [{ bearer: [] }],
151
+ responses: { 201: ok('The resume.'), 400: err(), 401: err() },
152
+ },
153
+ },
154
+ '/api/v1/resumes/{slug}': {
155
+ get: {
156
+ tags: ['resumes'],
157
+ summary: 'One resume, as Markdown and as HTML.',
158
+ security: [{ bearer: [] }],
159
+ parameters: [pathParam('slug')],
160
+ responses: { 200: ok('The resume.'), 401: err(), 404: err() },
161
+ },
162
+ },
163
+ '/api/v1/resumes/import': {
164
+ post: {
165
+ tags: ['resumes'],
166
+ summary: 'Upload a PDF, DOCX, TXT or MD and get Markdown back.',
167
+ security: [{ bearer: [] }],
168
+ responses: { 201: ok('The converted resume.'), 400: err(), 413: err() },
169
+ },
170
+ },
171
+ '/api/v1/auth/device': {
172
+ post: {
173
+ tags: ['auth'],
174
+ summary: 'Start the device flow. Returns a code a human approves in a browser.',
175
+ responses: { 200: ok('The grant.') },
176
+ },
177
+ },
178
+ '/api/v1/auth/device/poll': {
179
+ post: {
180
+ tags: ['auth'],
181
+ summary: 'Poll until approved. The token is handed over exactly once.',
182
+ responses: { 200: ok('pending, approved or expired.') },
183
+ },
184
+ },
185
+ '/api/v1/directory/instances': {
186
+ get: {
187
+ tags: ['federation'],
188
+ summary: 'Instances this directory knows about. Directories only.',
189
+ responses: { 200: ok('Instances.'), 404: err() },
190
+ },
191
+ },
192
+ '/api/v1/directory/search': {
193
+ get: {
194
+ tags: ['federation'],
195
+ summary: 'One search, every listed instance. Directories only.',
196
+ description: 'Results carry the instance they came from. An instance that fails to answer is reported in `sources` rather than silently omitted.',
197
+ responses: { 200: ok('Merged results.'), 404: err() },
198
+ },
199
+ },
200
+ '/api/v1/directory/announce': {
201
+ post: {
202
+ tags: ['federation'],
203
+ summary: 'Announce an instance. Send only its URL; the directory reads the rest itself.',
204
+ responses: { 200: ok('The listing.'), 400: err(), 403: err(), 404: err() },
205
+ },
206
+ },
207
+ '/api/v1/stats': {
208
+ get: { tags: ['jobs'], summary: 'Open and total counts for this board.', responses: { 200: ok('Counts.') } },
209
+ },
210
+ '/.well-known/agenticjobs': {
211
+ get: {
212
+ tags: ['federation'],
213
+ summary: 'This instance, described. The federation contract.',
214
+ responses: { 200: ok('The descriptor.') },
215
+ },
216
+ },
217
+ },
218
+ components: {
219
+ securitySchemes: {
220
+ bearer: { type: 'http', scheme: 'bearer', description: 'A token from the device flow.' },
221
+ },
222
+ schemas: {
223
+ Job: {
224
+ type: 'object',
225
+ required: ['id', 'slug', 'title', 'org', 'agentPolicy', 'apply'],
226
+ properties: {
227
+ id: { type: 'string', format: 'uuid' },
228
+ slug: { type: 'string' },
229
+ title: { type: 'string' },
230
+ description: { type: 'string', description: 'Markdown.' },
231
+ employmentType: { type: 'string' },
232
+ workplace: { type: 'string', enum: ['remote', 'hybrid', 'onsite'] },
233
+ seniority: { type: 'string', nullable: true },
234
+ agentPolicy: {
235
+ type: 'string',
236
+ enum: ['welcome', 'disclose', 'human-only'],
237
+ description: 'Where the employer stands on applications written with an agent. Required on every listing, because the alternative is finding out by silent rejection.',
238
+ },
239
+ apply: { type: 'object' },
240
+ tags: { type: 'array', items: { type: 'string' } },
241
+ stack: { type: 'array', items: { type: 'string' } },
242
+ },
243
+ },
244
+ },
245
+ },
246
+ };
247
+ }
248
+ function param(name, description, type = 'string') {
249
+ return { name, in: 'query', required: false, description, schema: { type } };
250
+ }
251
+ function pathParam(name) {
252
+ return { name, in: 'path', required: true, schema: { type: 'string' } };
253
+ }
254
+ function ok(description) {
255
+ return { description, content: { 'application/json': { schema: { type: 'object' } } } };
256
+ }
257
+ function page(description, items) {
258
+ return {
259
+ description,
260
+ content: {
261
+ 'application/json': {
262
+ schema: {
263
+ type: 'object',
264
+ properties: {
265
+ items: { type: 'array', items },
266
+ total: { type: 'integer' },
267
+ limit: { type: 'integer' },
268
+ offset: { type: 'integer' },
269
+ },
270
+ },
271
+ },
272
+ },
273
+ };
274
+ }
275
+ function err() {
276
+ return {
277
+ description: 'An error with a message you can act on.',
278
+ content: {
279
+ 'application/json': {
280
+ schema: {
281
+ type: 'object',
282
+ properties: {
283
+ error: {
284
+ type: 'object',
285
+ properties: {
286
+ message: { type: 'string' },
287
+ code: { type: 'string' },
288
+ fields: { type: 'array', items: { type: 'object' } },
289
+ },
290
+ },
291
+ },
292
+ },
293
+ },
294
+ },
295
+ };
296
+ }
297
+ //# sourceMappingURL=openapi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../../src/server/routes/openapi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The HTML pages.
3
+ *
4
+ * They render server-side from the same core functions the API uses, so there
5
+ * is one set of queries and one set of permission checks rather than two that
6
+ * drift. Every form works without JavaScript; the one script on the site adds
7
+ * passkeys and nothing else.
8
+ */
9
+ import { Hono } from 'hono';
10
+ import type { AppEnv } from '../deps.ts';
11
+ export declare function pageRoutes(): Hono<AppEnv>;