@profullstack/agenticjobs 0.14.1 → 0.17.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 (52) hide show
  1. package/README.md +4 -2
  2. package/dist/cli/index.js +74 -0
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/client/sync.d.ts +47 -0
  5. package/dist/client/sync.js +149 -0
  6. package/dist/client/sync.js.map +1 -0
  7. package/dist/config.d.ts +3 -1
  8. package/dist/config.js +2 -1
  9. package/dist/config.js.map +1 -1
  10. package/dist/core/browse.d.ts +23 -0
  11. package/dist/core/browse.js +227 -0
  12. package/dist/core/browse.js.map +1 -0
  13. package/dist/core/invoices.js +3 -3
  14. package/dist/core/invoices.js.map +1 -1
  15. package/dist/directory/fetch.d.ts +1 -1
  16. package/dist/markup/openprofile.d.ts +40 -0
  17. package/dist/markup/openprofile.js +171 -0
  18. package/dist/markup/openprofile.js.map +1 -0
  19. package/dist/mcp/tools.d.ts +6 -0
  20. package/dist/mcp/tools.js +43 -10
  21. package/dist/mcp/tools.js.map +1 -1
  22. package/dist/schema/pay.js +16 -2
  23. package/dist/schema/pay.js.map +1 -1
  24. package/dist/server/app.js +3 -0
  25. package/dist/server/app.js.map +1 -1
  26. package/dist/server/routes/api.js +39 -9
  27. package/dist/server/routes/api.js.map +1 -1
  28. package/dist/server/routes/discovery.js +43 -0
  29. package/dist/server/routes/discovery.js.map +1 -1
  30. package/dist/server/routes/openapi.js +19 -0
  31. package/dist/server/routes/openapi.js.map +1 -1
  32. package/dist/server/routes/pages.js +53 -4
  33. package/dist/server/routes/pages.js.map +1 -1
  34. package/dist/server/routes/settings.d.ts +22 -0
  35. package/dist/server/routes/settings.js +83 -0
  36. package/dist/server/routes/settings.js.map +1 -0
  37. package/dist/server/routes/specs.d.ts +1 -1
  38. package/dist/server/routes/specs.js +2 -1
  39. package/dist/server/routes/specs.js.map +1 -1
  40. package/dist/views/candidates.js +1 -1
  41. package/dist/views/candidates.js.map +1 -1
  42. package/dist/views/docs.js +1 -1
  43. package/dist/views/docs.js.map +1 -1
  44. package/dist/views/layout.d.ts +2 -0
  45. package/dist/views/layout.js +2 -2
  46. package/dist/views/layout.js.map +1 -1
  47. package/dist/views/me.js +1 -1
  48. package/dist/views/me.js.map +1 -1
  49. package/docs/openprofile.md +183 -0
  50. package/migrations/0017_settings_snapshots.sql +21 -0
  51. package/package.json +3 -2
  52. package/web/public/.well-known/openaccess.json +29 -0
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA6DtD,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,SAAiB,EAAE,SAAiB;IAC3D,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,gBAAgB,CAAC;IAC5F,yEAAyE;IACzE,sEAAsE;IACtE,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,IAAI,GAAG,CAAC;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,CAAgB,EAAE,CAAgB;IAC3D,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAsB,EACtB,MAAiC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;IAEpE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;IAC5F,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,GAAG,CACD,iIAAiI,CAClI,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrD,OAAO;QACL,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,2BAA2B,CAAC;QAClE,QAAQ;QACR,YAAY;QACZ,MAAM;QACN,UAAU;QACV,aAAa,EAAE,aAAa,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa;KAC3D,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,KAAyB,EAAE,QAAQ,GAAG,KAAK;IACvD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAChE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;IAChE,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,oBAAoB,IAAI,EAAE,CAAC,CAAC;IAErF,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxD,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC;IAE9D,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS;QACtC,WAAW,EACT,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE;YAC3B,+DAA+D;QACjE,IAAI;QACJ,SAAS;QACT,SAAS;QACT,YAAY,EACV,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,oDAAoD;QACtF,MAAM,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,wBAAwB,CAAC;aACtD,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;aAC1C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;aAC/B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACf,YAAY,EAAE,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;QAClE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/B,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACnC,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI;QACnD,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC;QAC3E,eAAe,EAAE,GAAG,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI;QACzD,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI;QACnD,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI;QAChD,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC;QAC3B,OAAO,EAAE,GAAG,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,IAAI,OAAO;KACvD,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAChC,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export declare class BrowseProblem extends Error {
2
+ }
3
+ export interface BrowseOptions {
4
+ /** The Obscura MCP endpoint, e.g. http://obscura.railway.internal:3000/mcp, or null for plain fetch. */
5
+ obscuraMcpUrl: string | null;
6
+ fetch?: typeof fetch;
7
+ /** Skip the private-address check, for tests against a local stub. */
8
+ allowPrivate?: boolean;
9
+ maxChars?: number;
10
+ timeoutMs?: number;
11
+ }
12
+ export interface BrowseResult {
13
+ markdown: string;
14
+ via: 'obscura' | 'fetch';
15
+ title: string | null;
16
+ }
17
+ /** Only a public http(s) page. A resume is not on localhost or inside our own network. */
18
+ export declare function assertPublicUrl(raw: string, allowPrivate?: boolean): Promise<URL>;
19
+ export declare function isPrivateAddress(address: string): boolean;
20
+ /** The page as Markdown, by whichever route is configured. */
21
+ export declare function pageToMarkdown(raw: string, options: BrowseOptions): Promise<BrowseResult>;
22
+ /** Enough of a page to be a resume draft: headings, paragraphs, lists, links, line breaks. */
23
+ export declare function htmlToMarkdown(html: string): string;
@@ -0,0 +1,227 @@
1
+ /**
2
+ * A web page as Markdown, for importing a resume from a URL.
3
+ *
4
+ * Two ways to read a page. With an Obscura MCP server configured
5
+ * (OBSCURA_MCP_URL), the page is rendered by a real browser engine, so a
6
+ * resume behind client-side rendering comes out whole, and its own
7
+ * browser_markdown tool does the conversion. Without one, the page is
8
+ * fetched and its HTML reduced to Markdown here: headings, paragraphs,
9
+ * lists, links, nothing clever. Either way the person edits the result
10
+ * before it goes anywhere; this is an import step, not a storage format.
11
+ *
12
+ * Obscura's HTTP MCP transport has no authentication of its own, so the
13
+ * server it points at must be private (a Railway internal hostname, a
14
+ * sidecar), never a public URL. This code never sends a credential to it.
15
+ */
16
+ import { lookup } from 'node:dns/promises';
17
+ import { isIP } from 'node:net';
18
+ export class BrowseProblem extends Error {
19
+ }
20
+ const MAX_CHARS = 120_000;
21
+ /** Only a public http(s) page. A resume is not on localhost or inside our own network. */
22
+ export async function assertPublicUrl(raw, allowPrivate = false) {
23
+ let url;
24
+ try {
25
+ url = new URL(raw.trim());
26
+ }
27
+ catch {
28
+ throw new BrowseProblem('That is not a URL.');
29
+ }
30
+ if (url.protocol !== 'https:' && url.protocol !== 'http:')
31
+ throw new BrowseProblem('The URL must start with https:// or http://.');
32
+ if (allowPrivate)
33
+ return url;
34
+ const host = url.hostname.replace(/^\[|\]$/g, '');
35
+ const addresses = isIP(host)
36
+ ? [host]
37
+ : await lookup(host, { all: true })
38
+ .then((rows) => rows.map((row) => row.address))
39
+ .catch(() => []);
40
+ if (addresses.length === 0)
41
+ throw new BrowseProblem(`${url.hostname} does not resolve.`);
42
+ for (const address of addresses) {
43
+ if (isPrivateAddress(address))
44
+ throw new BrowseProblem(`${url.hostname} is not a public address.`);
45
+ }
46
+ return url;
47
+ }
48
+ export function isPrivateAddress(address) {
49
+ const v4 = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/.exec(address);
50
+ if (v4 !== null) {
51
+ const [a, b] = [Number(v4[1]), Number(v4[2])];
52
+ return (a === 10 ||
53
+ a === 127 ||
54
+ a === 0 ||
55
+ (a === 169 && b === 254) ||
56
+ (a === 172 && b >= 16 && b <= 31) ||
57
+ (a === 192 && b === 168) ||
58
+ (a === 100 && b >= 64 && b <= 127));
59
+ }
60
+ const lower = address.toLowerCase();
61
+ if (lower === '::1' || lower === '::')
62
+ return true;
63
+ if (lower.startsWith('fe80:') || lower.startsWith('fc') || lower.startsWith('fd'))
64
+ return true;
65
+ // An IPv4 address hidden in an IPv6 one.
66
+ const mapped = /^::ffff:(\d+\.\d+\.\d+\.\d+)$/.exec(lower);
67
+ return mapped !== null && isPrivateAddress(mapped[1] ?? '');
68
+ }
69
+ /** The page as Markdown, by whichever route is configured. */
70
+ export async function pageToMarkdown(raw, options) {
71
+ const url = await assertPublicUrl(raw, options.allowPrivate);
72
+ const maxChars = options.maxChars ?? MAX_CHARS;
73
+ if (options.obscuraMcpUrl)
74
+ return viaObscura(url, options.obscuraMcpUrl, options.fetch ?? fetch, maxChars, options.timeoutMs ?? 45_000);
75
+ return viaFetch(url, options.fetch ?? fetch, maxChars, options.timeoutMs ?? 20_000);
76
+ }
77
+ async function viaObscura(url, mcpUrl, fetcher, maxChars, timeoutMs) {
78
+ let id = 0;
79
+ const call = async (method, params, notification = false) => {
80
+ const controller = new AbortController();
81
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
82
+ try {
83
+ const response = await fetcher(mcpUrl, {
84
+ method: 'POST',
85
+ headers: {
86
+ 'content-type': 'application/json',
87
+ accept: 'application/json, text/event-stream',
88
+ },
89
+ body: JSON.stringify({
90
+ jsonrpc: '2.0',
91
+ ...(notification ? {} : { id: ++id }),
92
+ method,
93
+ ...(params ? { params } : {}),
94
+ }),
95
+ signal: controller.signal,
96
+ });
97
+ if (notification)
98
+ return {};
99
+ if (!response.ok)
100
+ throw new BrowseProblem(`The browser service answered ${response.status}.`);
101
+ const text = await response.text();
102
+ const line = text.trim().startsWith('{')
103
+ ? text
104
+ : (text.split('\n').find((row) => row.startsWith('data:')) ?? '').slice(5);
105
+ return JSON.parse(line);
106
+ }
107
+ catch (error) {
108
+ if (error instanceof BrowseProblem)
109
+ throw error;
110
+ throw new BrowseProblem(`The browser service could not be reached: ${error.message}`);
111
+ }
112
+ finally {
113
+ clearTimeout(timer);
114
+ }
115
+ };
116
+ const textOf = (reply) => (reply.result?.content ?? [])
117
+ .map((block) => block.text ?? '')
118
+ .join('\n')
119
+ .trim();
120
+ await call('initialize', {
121
+ protocolVersion: '2025-06-18',
122
+ capabilities: {},
123
+ clientInfo: { name: 'agenticjobs', version: '0' },
124
+ });
125
+ await call('notifications/initialized', undefined, true);
126
+ const navigated = await call('tools/call', {
127
+ name: 'browser_navigate',
128
+ arguments: { url: url.toString(), waitUntil: 'load' },
129
+ });
130
+ if (navigated.error || navigated.result?.isError)
131
+ throw new BrowseProblem(`The page could not be opened: ${navigated.error?.message ?? textOf(navigated) ?? 'unknown'}`);
132
+ const title = /— "(.+)"$/.exec(textOf(navigated))?.[1] ?? null;
133
+ const page = await call('tools/call', {
134
+ name: 'browser_markdown',
135
+ arguments: { max_chars: maxChars },
136
+ });
137
+ if (page.error || page.result?.isError)
138
+ throw new BrowseProblem(`The page could not be read: ${page.error?.message ?? textOf(page)}`);
139
+ const markdown = textOf(page);
140
+ if (markdown.length < 40)
141
+ throw new BrowseProblem('The page had almost no text.');
142
+ return { markdown, via: 'obscura', title };
143
+ }
144
+ // --- plain fetch -----------------------------------------------------------
145
+ async function viaFetch(url, fetcher, maxChars, timeoutMs) {
146
+ const controller = new AbortController();
147
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
148
+ let html;
149
+ let contentType = '';
150
+ try {
151
+ const response = await fetcher(url.toString(), {
152
+ headers: {
153
+ accept: 'text/html, text/markdown, text/plain;q=0.9, */*;q=0.1',
154
+ 'user-agent': 'agenticjobs (+https://agenticjobs.work)',
155
+ },
156
+ redirect: 'follow',
157
+ signal: controller.signal,
158
+ });
159
+ if (!response.ok)
160
+ throw new BrowseProblem(`${url.hostname} answered ${response.status}.`);
161
+ contentType = response.headers.get('content-type') ?? '';
162
+ html = (await response.text()).slice(0, 4 * 1024 * 1024);
163
+ }
164
+ catch (error) {
165
+ if (error instanceof BrowseProblem)
166
+ throw error;
167
+ throw new BrowseProblem(`${url.hostname} could not be fetched: ${error.name === 'AbortError' ? 'timed out' : error.message}`);
168
+ }
169
+ finally {
170
+ clearTimeout(timer);
171
+ }
172
+ if (/text\/(markdown|plain)/.test(contentType) || !/<[a-z][\s\S]*>/i.test(html)) {
173
+ return { markdown: html.trim().slice(0, maxChars), via: 'fetch', title: null };
174
+ }
175
+ const title = /<title[^>]*>([\s\S]*?)<\/title>/i.exec(html)?.[1]?.trim() ?? null;
176
+ const markdown = htmlToMarkdown(html).slice(0, maxChars);
177
+ if (markdown.length < 40)
178
+ throw new BrowseProblem('The page had almost no text. A page that renders in the browser needs the browser service.');
179
+ return { markdown, via: 'fetch', title: title ? decode(title) : null };
180
+ }
181
+ /** Enough of a page to be a resume draft: headings, paragraphs, lists, links, line breaks. */
182
+ export function htmlToMarkdown(html) {
183
+ let s = html.replace(/<!--[\s\S]*?-->/g, '');
184
+ s = s.replace(/<(script|style|noscript|svg|template|iframe)[\s\S]*?<\/\1>/gi, '');
185
+ const main = /<main[\s\S]*?<\/main>/i.exec(s)?.[0] ??
186
+ /<article[\s\S]*?<\/article>/i.exec(s)?.[0] ??
187
+ /<body[\s\S]*?<\/body>/i.exec(s)?.[0] ??
188
+ s;
189
+ s = main.replace(/<(nav|header|footer|aside)[\s\S]*?<\/\1>/gi, '');
190
+ s = s.replace(/<h([1-6])[^>]*>([\s\S]*?)<\/h\1>/gi, (_, level, inner) => `\n\n${'#'.repeat(Number(level))} ${inline(inner)}\n\n`);
191
+ s = s.replace(/<li[^>]*>([\s\S]*?)<\/li>/gi, (_, inner) => `\n- ${inline(inner)}`);
192
+ s = s.replace(/<\/(ul|ol)>/gi, '\n\n');
193
+ s = s
194
+ .replace(/<(p|div|section|tr|blockquote|dd|dt)[^>]*>/gi, '\n')
195
+ .replace(/<\/(p|div|section|tr|blockquote|dd|dt)>/gi, '\n');
196
+ s = s.replace(/<br\s*\/?>/gi, '\n');
197
+ s = s.replace(/<(td|th)[^>]*>/gi, ' ').replace(/<\/(td|th)>/gi, ' | ');
198
+ s = inline(s);
199
+ return s
200
+ .split('\n')
201
+ .map((line) => line.replace(/[ \t]+/g, ' ').trim())
202
+ .join('\n')
203
+ .replace(/\n{3,}/g, '\n\n')
204
+ .trim();
205
+ }
206
+ function inline(fragment) {
207
+ return decode(fragment
208
+ .replace(/<a\s[^>]*href=["']([^"']+)["'][^>]*>([\s\S]*?)<\/a>/gi, (_, href, text) => {
209
+ const label = text.replace(/<[^>]+>/g, '').trim();
210
+ return label && /^https?:\/\//i.test(href) ? `[${label}](${href})` : label;
211
+ })
212
+ .replace(/<(strong|b)>([\s\S]*?)<\/\1>/gi, '**$2**')
213
+ .replace(/<(em|i)>([\s\S]*?)<\/\1>/gi, '*$2*')
214
+ .replace(/<code>([\s\S]*?)<\/code>/gi, '`$1`')
215
+ .replace(/<[^>]+>/g, ''));
216
+ }
217
+ function decode(text) {
218
+ return text
219
+ .replace(/&nbsp;/g, ' ')
220
+ .replace(/&amp;/g, '&')
221
+ .replace(/&lt;/g, '<')
222
+ .replace(/&gt;/g, '>')
223
+ .replace(/&quot;/g, '"')
224
+ .replace(/&#39;|&apos;/g, "'")
225
+ .replace(/&#(\d+);/g, (_, code) => String.fromCodePoint(Number(code)));
226
+ }
227
+ //# sourceMappingURL=browse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browse.js","sourceRoot":"","sources":["../../src/core/browse.ts"],"names":[],"mappings":"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"}
@@ -48,10 +48,10 @@ function toInvoice(row, coinpay) {
48
48
  export function parseAmount(value) {
49
49
  if (typeof value !== 'string' && typeof value !== 'number')
50
50
  return null;
51
- const raw = String(value).replace(/[$,\s]/g, '');
52
- if (!/^\d+(\.\d{1,2})?$/.test(raw))
51
+ const raw = String(value).trim();
52
+ if (!/^\$?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d{1,2})?$/.test(raw))
53
53
  return null;
54
- const amount = Number(raw);
54
+ const amount = Number(raw.replace(/[$,]/g, ''));
55
55
  if (!(amount > 0) || amount > 1_000_000)
56
56
  return null;
57
57
  return amount.toFixed(2);
@@ -1 +1 @@
1
- {"version":3,"file":"invoices.js","sourceRoot":"","sources":["../../src/core/invoices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAsB,MAAM,cAAc,CAAC;AAiD9E,MAAM,MAAM,GAAG;;sDAEuC,CAAC;AAEvD,SAAS,SAAS,CAAC,GAAe,EAAE,OAA6B;IAC/D,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE;QACvE,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EACL,GAAG,CAAC,kBAAkB,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;YACjD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC;gBACE,EAAE,EAAE,GAAG,CAAC,kBAAkB;gBAC1B,OAAO,EAAE,GAAG,CAAC,eAAe;gBAC5B,YAAY,EAAE,GAAG,CAAC,aAAa;gBAC/B,SAAS,EAAE,GAAG,CAAC,kBAAkB;gBACjC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;aAC5C;QACP,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACxE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM,GAAG,SAAS;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAa,EACb,OAA6B,EAC7B,KAMC;IAED,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,4CAA4C,CAAC;IAC1E,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,iEAAiE,CAAC;IAC9F,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAExE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,IAAI;QAClB,OAAO,sEAAsE,CAAC;IAChF,IAAI,CAAC,OAAO,CAAC,MAAM;QACjB,OAAO,0EAA0E,CAAC;IACpF,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,iHAAiH,CAAC;IAC3H,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACvD,MAAM,MAAM,GACV,MAAM,KAAK,EAAE;QACX,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAC5B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,SAAS;QACb,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IACtD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,KAAK,EAAE;YAClB,CAAC,CAAC,iCAAiC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACpF,CAAC,CAAC,eAAe,MAAM,0CAA0C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACvH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,yEAAyE,EACzE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAChC,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/B,OAAO,mCAAmC,CAAC;QAC7C,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC;oDAC8C,EAC9C,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CACnF,CAAC;QACF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QACzE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAChC;+DACyD,EACzD,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CACjD,CAAC;QACF,MAAM,MAAM,CAAC,KAAK,CAAC,uDAAuD,EAAE;YAC1E,KAAK,CAAC,QAAQ;YACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,UAAU;SAC5B,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAChB,wFAAwF,EACxF,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,CAC7D,CAAC;QACF,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAa,GAAG,MAAM,kBAAkB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QACnF,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAa,EACb,OAA6B,EAC7B,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAC7B,GAAG,MAAM,mDAAmD,EAC5D,CAAC,QAAQ,CAAC,CACX,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAa,EACb,OAA6B,EAC7B,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAC7B,GAAG,MAAM;;;2CAG8B,EACvC,CAAC,QAAQ,CAAC,CACX,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAa,EACb,OAA6B,EAC7B,SAAiB,EACjB,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAC7B,GAAG,MAAM;;;2EAG8D,EACvE,CAAC,SAAS,EAAE,QAAQ,CAAC,CACtB,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED,kDAAkD;AAClD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAa,EACb,SAAiB,EACjB,OAAe;IAEf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAC7B;0DACsD,EACtD,CAAC,SAAS,EAAE,OAAO,CAAC,CACrB,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAa,EACb,OAA6B,EAC7B,KAAgE;IAEhE,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,4CAA4C,CAAC;IAC1E,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAChF,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,kBAAkB,CAAC;IAChD,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO;QAAE,OAAO,kCAAkC,CAAC;IAClF,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,+BAA+B,CAAC;IACtE,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,6BAA6B,CAAC;IAEzE,4EAA4E;IAC5E,4DAA4D;IAC5D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC5C,IACE,MAAM,CAAC,OAAO,KAAK,IAAI;QACvB,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAClE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC;YACnC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,QAAQ;YACvB,YAAY,EAAE,OAAO,CAAC,aAAa;YACnC,WAAW,EACT,OAAO,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW;YACxF,WAAW,EAAE,GAAG,KAAK,CAAC,SAAS,UAAU,OAAO,CAAC,QAAQ,EAAE;YAC3D,mEAAmE;YACnE,cAAc,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE;YAClE,QAAQ,EAAE;gBACR,MAAM,EAAE,aAAa;gBACrB,UAAU,EAAE,OAAO,CAAC,EAAE;gBACtB,SAAS,EAAE,OAAO,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,KAAK,CAAC,OAAO;aACxB;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,cAAc;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC;QAC1D,MAAM,KAAK,CAAC;IACd,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,8CAA8C;IAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAC9B;;wCAEoC,EACpC;QACE,OAAO,CAAC,EAAE;QACV,MAAM,CAAC,EAAE;QACT,MAAM,CAAC,OAAO;QACd,MAAM,CAAC,YAAY;QACnB,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE;KACrE,CACF,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC;QAC/B,OAAO,2DAA2D,CAAC;IACrE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAa,GAAG,MAAM,kBAAkB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;AACtE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAa,EACb,OAA6B,EAC7B,OAAgB;IAEhB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IAC9F,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IAErC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;SAAM,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,CAAC,KAAK,CACd;;sEAEgE,EAChE,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CACzB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAa,GAAG,MAAM,kBAAkB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAa,EACb,KAA2E;IAE3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAC7B;;;mEAG+D,EAC/D,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CACtD,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAa,EACb,OAAgC;IAEhC,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,SAAS,GAAG,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,IAAI,SAAS,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,KAAK,KAAK,mBAAmB,IAAI,KAAK,KAAK,mBAAmB;QAAE,OAAO,SAAS,CAAC;IACrF,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"invoices.js","sourceRoot":"","sources":["../../src/core/invoices.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.14.1 (+https://agenticjobs.work)";
11
+ export declare const USER_AGENT = "agenticjobs/0.17.0 (+https://agenticjobs.work)";
12
12
  export declare class FetchProblem extends Error {
13
13
  }
14
14
  export interface FetchOptions {
@@ -0,0 +1,40 @@
1
+ /**
2
+ * OpenProfile.md, derived from a resume.
3
+ *
4
+ * A resume says what somebody has done; a profile says who and where they
5
+ * are. This board keeps only the resume, so the profile is computed from it
6
+ * on every request and never stored: the name, the identity block, the
7
+ * headline, every link the contact block and a Links section carry, and the
8
+ * skills as topics. Nothing here is typed in a second time.
9
+ *
10
+ * It is a rendering of the redacted or whole resume it is handed, so the
11
+ * same gate that keeps an address off the page for an anonymous reader keeps
12
+ * it out of this file. Pass the resume as the viewer is allowed to see it.
13
+ *
14
+ * # Name <- the resume's h1
15
+ * - **Kind**: agent <- from a Kind key, or Agents capacity
16
+ * - **Web**: https://... <- the contact block, minus the links
17
+ * - **Resume**: .../resume.md <- this board's copy
18
+ * Headline <- the resume's headline
19
+ * ## Accounts <- every http(s) link the resume carries
20
+ * ## Topics <- the skills
21
+ * ## Operator <- an "Operated by" key, for an agent
22
+ *
23
+ * The convention is docs/openprofile.md.
24
+ */
25
+ import type { OpenResume } from './resume.ts';
26
+ export interface ProfileSource {
27
+ /** The name shown in the directory, already cleaned. */
28
+ name: string;
29
+ /** The resume as the viewer may see it: redacted for an anonymous reader. */
30
+ parsed: OpenResume | null;
31
+ /** Skills, already extracted the way the directory extracts them. */
32
+ topics: string[];
33
+ /** Where this board serves the resume file. */
34
+ resumeUrl: string;
35
+ }
36
+ /**
37
+ * The profile as Markdown. The Markdown is the document; there is no other
38
+ * representation of it on this board.
39
+ */
40
+ export declare function openProfileFromResume(source: ProfileSource): string;
@@ -0,0 +1,171 @@
1
+ /**
2
+ * OpenProfile.md, derived from a resume.
3
+ *
4
+ * A resume says what somebody has done; a profile says who and where they
5
+ * are. This board keeps only the resume, so the profile is computed from it
6
+ * on every request and never stored: the name, the identity block, the
7
+ * headline, every link the contact block and a Links section carry, and the
8
+ * skills as topics. Nothing here is typed in a second time.
9
+ *
10
+ * It is a rendering of the redacted or whole resume it is handed, so the
11
+ * same gate that keeps an address off the page for an anonymous reader keeps
12
+ * it out of this file. Pass the resume as the viewer is allowed to see it.
13
+ *
14
+ * # Name <- the resume's h1
15
+ * - **Kind**: agent <- from a Kind key, or Agents capacity
16
+ * - **Web**: https://... <- the contact block, minus the links
17
+ * - **Resume**: .../resume.md <- this board's copy
18
+ * Headline <- the resume's headline
19
+ * ## Accounts <- every http(s) link the resume carries
20
+ * ## Topics <- the skills
21
+ * ## Operator <- an "Operated by" key, for an agent
22
+ *
23
+ * The convention is docs/openprofile.md.
24
+ */
25
+ /** Identity keys that carry over as written, in the order they are shown. */
26
+ const IDENTITY_KEYS = /^(kind|type|handle|web|website|site|homepage|email|e-mail|location|based|city|pronouns|timezone|time zone|languages?|avatar|photo|pay|wallet|phone|tel|mobile)$/i;
27
+ /** Keys whose value names the person answerable for an agent. */
28
+ const OPERATOR_KEYS = /^(operator|operated by|run by|owner|maintained by)$/i;
29
+ /** Keys that mean "how many of me there are". */
30
+ const AGENTS_KEYS = /^(agents|sub-agents|subagents|swarm|parallelism|capacity)$/i;
31
+ const KIND_KEYS = /^(kind|type)$/i;
32
+ /** A website key, whichever spelling the resume used. */
33
+ const WEB_KEYS = /^(web|website|site|homepage)$/i;
34
+ function isHttp(href) {
35
+ return href !== null && /^https?:\/\//i.test(href);
36
+ }
37
+ /**
38
+ * `agent`, `person` or `organization` from what the resume says about itself,
39
+ * or nothing. Nothing is a real answer: the spec says a reader reports an
40
+ * unstated kind rather than guessing one, so this file does not guess either.
41
+ */
42
+ function kindOf(contact) {
43
+ const stated = contact.find((item) => KIND_KEYS.test(item.key));
44
+ if (stated !== undefined) {
45
+ const value = stated.value.trim().toLowerCase();
46
+ if (/^(agent|bot)$/.test(value))
47
+ return 'agent';
48
+ if (/^(person|human|individual)$/.test(value))
49
+ return 'person';
50
+ if (/^(org|organization|organisation|company|team)$/.test(value))
51
+ return 'organization';
52
+ return null;
53
+ }
54
+ // A resume that says how many of it run in parallel is an agent's resume.
55
+ // Only a stated count counts; the capacity convention is explicit that an
56
+ // unstated one is not "one".
57
+ const agents = contact.find((item) => AGENTS_KEYS.test(item.key));
58
+ if (agents !== undefined && /^\s*\d+/.test(agents.value))
59
+ return 'agent';
60
+ return null;
61
+ }
62
+ /** The contact block as identity lines, without the links that become Accounts. */
63
+ function identityLines(contact, resumeUrl) {
64
+ const lines = [];
65
+ const kind = kindOf(contact);
66
+ if (kind !== null)
67
+ lines.push(`- **Kind**: ${kind}`);
68
+ for (const item of contact) {
69
+ if (KIND_KEYS.test(item.key) || OPERATOR_KEYS.test(item.key))
70
+ continue;
71
+ // A bare [GitHub](url) bullet is an account, not an identity pair.
72
+ if (item.key === item.value && isHttp(item.href))
73
+ continue;
74
+ if (item.key === 'note')
75
+ continue;
76
+ if (!IDENTITY_KEYS.test(item.key) && !AGENTS_KEYS.test(item.key) && !/^rate$/i.test(item.key)) {
77
+ // Unknown keys are kept as written; that is rule two of the convention.
78
+ lines.push(`- **${item.key}**: ${item.value}`);
79
+ continue;
80
+ }
81
+ const key = WEB_KEYS.test(item.key) ? 'Web' : item.key;
82
+ const value = WEB_KEYS.test(item.key) && isHttp(item.href) ? (item.href ?? item.value) : item.value;
83
+ lines.push(`- **${key}**: ${value}`);
84
+ }
85
+ lines.push(`- **Resume**: ${resumeUrl}`);
86
+ return lines;
87
+ }
88
+ /** Every http(s) link the resume carries, as `- [label](url)`, deduplicated. */
89
+ function accountLines(parsed) {
90
+ const seen = new Set();
91
+ const lines = [];
92
+ const add = (label, href) => {
93
+ const key = href.replace(/\/+$/, '').toLowerCase();
94
+ if (seen.has(key))
95
+ return;
96
+ seen.add(key);
97
+ lines.push(`- [${label.replace(/[[\]]/g, '')}](${href})`);
98
+ };
99
+ for (const item of parsed.contact) {
100
+ if (item.href === null || !isHttp(item.href))
101
+ continue;
102
+ // The home page is identity, not an account; it already sits under Web.
103
+ if (WEB_KEYS.test(item.key))
104
+ continue;
105
+ add(item.key, item.href);
106
+ }
107
+ const links = parsed.sections.find((section) => section.kind === 'links');
108
+ if (links !== undefined) {
109
+ for (const line of links.markdown.split('\n')) {
110
+ const bullet = line.replace(/^\s*[-*]\s+/, '').trim();
111
+ const md = /^\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)/i.exec(bullet);
112
+ if (md !== null) {
113
+ add((md[1] ?? '').trim(), md[2] ?? '');
114
+ continue;
115
+ }
116
+ const bare = /^(https?:\/\/\S+)/i.exec(bullet);
117
+ if (bare !== null) {
118
+ const href = bare[1] ?? '';
119
+ let label = href;
120
+ try {
121
+ label = new URL(href).hostname.replace(/^www\./, '');
122
+ }
123
+ catch {
124
+ // Keep the URL as its own label.
125
+ }
126
+ add(label, href);
127
+ }
128
+ }
129
+ }
130
+ return lines;
131
+ }
132
+ /** The Operator section for an agent, from an "Operated by" style key. */
133
+ function operatorLines(contact) {
134
+ const item = contact.find((entry) => OPERATOR_KEYS.test(entry.key));
135
+ if (item === undefined)
136
+ return [];
137
+ if (item.href !== null && isHttp(item.href))
138
+ return [`- **Name**: ${item.value}`, `- **Profile**: ${item.href}`];
139
+ const withEmail = /^(.*?)\s*[(<]?\s*([^\s@()<>]+@[^\s@()<>]+\.[^\s@()<>]+)\s*[)>]?\s*$/.exec(item.value);
140
+ if (withEmail !== null && (withEmail[1] ?? '').trim() !== '') {
141
+ return [`- **Name**: ${(withEmail[1] ?? '').trim()}`, `- **Email**: ${withEmail[2] ?? ''}`];
142
+ }
143
+ if (item.href !== null && item.href.startsWith('mailto:')) {
144
+ return [`- **Email**: ${item.value}`];
145
+ }
146
+ return [`- **Name**: ${item.value}`];
147
+ }
148
+ /**
149
+ * The profile as Markdown. The Markdown is the document; there is no other
150
+ * representation of it on this board.
151
+ */
152
+ export function openProfileFromResume(source) {
153
+ const contact = source.parsed?.contact ?? [];
154
+ const blocks = [`# ${source.name}`];
155
+ blocks.push(identityLines(contact, source.resumeUrl).join('\n'));
156
+ const headline = source.parsed?.headline?.replace(/\*\*|__/g, '').trim();
157
+ if (headline !== undefined && headline !== '' && !/[^\s@]+@[^\s@]+\.[^\s@]+/.test(headline)) {
158
+ blocks.push(headline);
159
+ }
160
+ const accounts = source.parsed === null ? [] : accountLines(source.parsed);
161
+ if (accounts.length > 0)
162
+ blocks.push(['## Accounts', '', ...accounts].join('\n'));
163
+ const topics = source.topics.map((topic) => topic.trim()).filter((topic) => topic !== '');
164
+ if (topics.length > 0)
165
+ blocks.push(['## Topics', '', `- ${topics.join(', ')}`].join('\n'));
166
+ const operator = operatorLines(contact);
167
+ if (operator.length > 0)
168
+ blocks.push(['## Operator', '', ...operator].join('\n'));
169
+ return `${blocks.join('\n\n')}\n`;
170
+ }
171
+ //# sourceMappingURL=openprofile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openprofile.js","sourceRoot":"","sources":["../../src/markup/openprofile.ts"],"names":[],"mappings":"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"}
@@ -22,5 +22,11 @@ export interface Caller {
22
22
  /** Whether a token is configured, so tools can say what is missing. */
23
23
  authenticated: boolean;
24
24
  }
25
+ /**
26
+ * The tools that answer with no token at all, for the OpenMCP descriptor's
27
+ * `auth.open`. Everything else calls signInFirst on a 401. Kept beside the
28
+ * list rather than derived from it, so a new tool has to say which it is.
29
+ */
30
+ export declare const OPEN_TOOLS: readonly ["search_jobs", "get_job", "get_apply_schema", "apply_to_job", "list_employers", "whoami", "search_network", "list_instances"];
25
31
  export declare const TOOLS: ToolDefinition[];
26
32
  export declare function callTool(caller: Caller, name: string, args: Record<string, unknown>): Promise<ToolResult>;