deepline 0.3.372 → 0.3.373
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundling-sources/sdk/src/release.ts +1 -1
- package/dist/bundling-sources/shared_libs/plays/email-status.ts +95 -0
- package/dist/bundling-sources/shared_libs/plays/extractor-targets.ts +14 -0
- package/dist/bundling-sources/shared_libs/plays/field-catalog.ts +253 -0
- package/dist/bundling-sources/shared_libs/plays/tool-result-types.ts +2 -0
- package/dist/cli/{auth-ODSACXLF.mjs → auth-7BMCDCRH.mjs} +4 -4
- package/dist/cli/auth-BWCNRUG3.js +33 -0
- package/dist/cli/{billing-4ERXY2DZ.js → billing-GKI7B4JF.js} +73 -73
- package/dist/cli/{billing-OPIOZLAN.mjs → billing-RZEHHMPU.mjs} +4 -4
- package/dist/cli/{chunk-E5UD3JDQ.js → chunk-3VN4FTE3.js} +289 -5
- package/dist/cli/{chunk-BVUGPOU3.mjs → chunk-6JCVL7CE.mjs} +2 -2
- package/dist/cli/{chunk-RJ7JJMQO.js → chunk-BM47AKUZ.js} +266 -254
- package/dist/cli/{chunk-DM5QUZJR.js → chunk-CLEB5KUZ.js} +1 -1
- package/dist/cli/{chunk-AQFA7HMN.js → chunk-D2CZ4Y5G.js} +15 -15
- package/dist/cli/{chunk-3GK3SH3G.mjs → chunk-E6BZWURC.mjs} +200 -13
- package/dist/cli/{chunk-RUYZAREB.js → chunk-E7MGPPM5.js} +9 -9
- package/dist/cli/{chunk-DONL233W.mjs → chunk-ECA6NQYL.mjs} +4 -4
- package/dist/cli/{chunk-GZQKUFM5.js → chunk-EYXSAB7O.js} +26 -26
- package/dist/cli/{chunk-MIMV5LTU.mjs → chunk-HNLXC5BP.mjs} +1 -1
- package/dist/cli/{chunk-6MDAGRZP.js → chunk-IHQQNWU4.js} +2 -2
- package/dist/cli/{chunk-FGHRRJ3D.mjs → chunk-IUYKSTWB.mjs} +1 -1
- package/dist/cli/{chunk-VVFH745L.js → chunk-JHUMUIU6.js} +6 -6
- package/dist/cli/{chunk-BFLPCGOR.mjs → chunk-JP2YA3AV.mjs} +1 -1
- package/dist/cli/{chunk-ML2ZY7YD.js → chunk-ND4BVWWZ.js} +4 -4
- package/dist/cli/{chunk-EFJL5FCU.js → chunk-NVZAZGHA.js} +8 -8
- package/dist/cli/{chunk-IUWPC5K6.js → chunk-ORBVXCTL.js} +50 -50
- package/dist/cli/{chunk-JAERLCMH.mjs → chunk-P5JPGZNI.mjs} +1 -1
- package/dist/cli/{chunk-KC2YOJTU.mjs → chunk-PZ26EKNC.mjs} +319 -115
- package/dist/cli/{chunk-U3W7E5WT.mjs → chunk-QSV76EMO.mjs} +27 -15
- package/dist/cli/{chunk-4LIUZ4QR.mjs → chunk-R6TPSZLN.mjs} +2 -2
- package/dist/cli/{chunk-N5TPMNTT.js → chunk-S5OTS6H5.js} +8 -8
- package/dist/cli/{chunk-XSPAI6MF.mjs → chunk-TB73PXE3.mjs} +2 -2
- package/dist/cli/{chunk-D6O3NJHX.js → chunk-W3H422KP.js} +60 -60
- package/dist/cli/{chunk-WJWO74MM.js → chunk-XJYUQBHY.js} +390 -186
- package/dist/cli/{chunk-3CTB7V5F.mjs → chunk-XMME4SCK.mjs} +2 -2
- package/dist/cli/{chunk-2RC5JQ3C.mjs → chunk-Y32GUTEN.mjs} +1 -1
- package/dist/cli/{chunk-JB6ERQUV.mjs → chunk-Y6VOGHF2.mjs} +284 -0
- package/dist/cli/{chunk-5HYD3GMS.mjs → chunk-YHHY2YHK.mjs} +3 -3
- package/dist/cli/{chunk-2JRRXXTA.js → chunk-YPVTQRUM.js} +201 -14
- package/dist/cli/{client-KF2J754U.mjs → client-FO6LMHT4.mjs} +3 -3
- package/dist/cli/client-KAWK7FJR.js +20 -0
- package/dist/cli/{csv-UL3MCD5D.mjs → csv-3FNCVMWA.mjs} +3 -3
- package/dist/cli/{csv-UJ3M7NFP.js → csv-NFQYQWWO.js} +12 -12
- package/dist/cli/{db-444XYOTV.js → db-CTLGRV3X.js} +29 -29
- package/dist/cli/{db-SIOWA63T.mjs → db-VA7HULGR.mjs} +4 -4
- package/dist/cli/{describe-GI5GHAKO.mjs → describe-GXGRMP2M.mjs} +46 -17
- package/dist/cli/{describe-RRBESS3S.js → describe-IUHOEPKY.js} +61 -32
- package/dist/cli/{executions-ERXZUOL5.js → executions-DSK3HRPU.js} +6 -6
- package/dist/cli/{executions-4YDP6BXI.mjs → executions-OZQDZQIK.mjs} +4 -4
- package/dist/cli/{feedback-3M7D7DZQ.js → feedback-KTMLMWKV.js} +7 -7
- package/dist/cli/{feedback-CPWQL5LU.mjs → feedback-ZOY7R4JD.mjs} +3 -3
- package/dist/cli/git-5P5FLEUC.js +23 -0
- package/dist/cli/{git-XN6C3TJZ.mjs → git-FIOI4IA2.mjs} +4 -4
- package/dist/cli/index.js +81 -81
- package/dist/cli/index.mjs +32 -32
- package/dist/cli/{legacy-noops-KXQ6TFFL.mjs → legacy-noops-KQZWSABN.mjs} +4 -4
- package/dist/cli/{legacy-noops-5XDGOFWH.js → legacy-noops-WXAYRQMQ.js} +7 -7
- package/dist/cli/{monitors-KH22PDOC.js → monitors-LPUCHRNJ.js} +85 -85
- package/dist/cli/{monitors-33IU5JR6.mjs → monitors-VHNWIF4V.mjs} +4 -4
- package/dist/cli/{org-X4NSLQG5.js → org-GWHWBCMD.js} +64 -64
- package/dist/cli/{org-MHYMWUEP.mjs → org-UW7NPGEY.mjs} +4 -4
- package/dist/cli/play-EVBIC7Z5.js +155 -0
- package/dist/cli/{play-LCZKHKW2.mjs → play-FNM2E66T.mjs} +8 -8
- package/dist/cli/{providers-J6LWCF5R.js → providers-6D6R3PWX.js} +7 -7
- package/dist/cli/{providers-L5FJTSEA.mjs → providers-XAZMYDWS.mjs} +4 -4
- package/dist/cli/{quickstart-OOPFA4MX.js → quickstart-HBUWBVH6.js} +5 -5
- package/dist/cli/{quickstart-NE3BTWGL.mjs → quickstart-OK65PGZL.mjs} +3 -3
- package/dist/cli/search-6ZY2XWP2.js +26 -0
- package/dist/cli/{search-DBXOEOIE.mjs → search-XY6JOTS2.mjs} +5 -5
- package/dist/cli/{secrets-WPMU7UBD.js → secrets-6CYCPK7T.js} +13 -13
- package/dist/cli/{secrets-U2MLWZH2.mjs → secrets-W2LDLU2W.mjs} +4 -4
- package/dist/cli/{sessions-YYZ3UJDS.js → sessions-GOYEKNTJ.js} +5 -5
- package/dist/cli/{sessions-WYNC4AUE.mjs → sessions-JAX7PGXU.mjs} +4 -4
- package/dist/cli/{settings-FQZSHFC6.mjs → settings-OACUQOCM.mjs} +7 -7
- package/dist/cli/{settings-WQDFX3X6.js → settings-QMFYFCT7.js} +74 -74
- package/dist/cli/{setup-JKYJT35S.mjs → setup-2KA5TZBZ.mjs} +6 -6
- package/dist/cli/{setup-DKYVNDTM.js → setup-36VOOGVA.js} +41 -41
- package/dist/cli/skills-6GPIEPTP.js +28 -0
- package/dist/cli/{skills-VHVCJJJY.mjs → skills-QY4BX5ZX.mjs} +4 -4
- package/dist/cli/tools-RTECP4WT.js +40 -0
- package/dist/cli/{tools-E23PU7KM.mjs → tools-UCB2QRVC.mjs} +8 -8
- package/dist/cli/{update-4A4VU6CW.mjs → update-327MHUO4.mjs} +6 -6
- package/dist/cli/update-WR65EHBN.js +28 -0
- package/dist/cli/{workflow-WB2USWAA.js → workflow-G7BU54KW.js} +15 -15
- package/dist/cli/{workflow-2ZR2ECTG.mjs → workflow-HJN4GA5A.mjs} +5 -5
- package/dist/{client-Cw0e2Uec.d.mts → client-Cn-txrXv.d.mts} +1 -1
- package/dist/{client-CwdiawoG.d.ts → client-fPoIN-3V.d.ts} +1 -1
- package/dist/{compiler-manifest-DgdW0q0b.d.mts → compiler-manifest-CY2v8ab0.d.mts} +2 -0
- package/dist/{compiler-manifest-DgdW0q0b.d.ts → compiler-manifest-CY2v8ab0.d.ts} +2 -0
- package/dist/{index-C3nQQTI-.d.mts → index-B9fBZH1g.d.mts} +1 -1
- package/dist/{index-CEYQAfS0.d.ts → index-BZ6uzZJl.d.ts} +1 -1
- package/dist/index.d.mts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +79 -249
- package/dist/index.mjs +10 -180
- package/dist/install-integrity.json +85 -84
- package/dist/plays/bundle-play-file.d.mts +3 -3
- package/dist/plays/bundle-play-file.d.ts +3 -3
- package/dist/plays/run-request.d.mts +2 -2
- package/dist/plays/run-request.d.ts +2 -2
- package/dist/release.d.mts +1 -1
- package/dist/release.d.ts +1 -1
- package/dist/release.js +2 -2
- package/dist/release.mjs +1 -1
- package/package.json +1 -1
- package/dist/cli/auth-4SXMV3CD.js +0 -33
- package/dist/cli/client-UUNLXOHF.js +0 -20
- package/dist/cli/git-ITSCNUVB.js +0 -23
- package/dist/cli/play-4QRPOBWW.js +0 -155
- package/dist/cli/search-UGQDBP76.js +0 -26
- package/dist/cli/skills-VBQMXDAX.js +0 -28
- package/dist/cli/tools-ACEJZMJD.js +0 -40
- package/dist/cli/update-V5KMYHVE.js +0 -28
|
@@ -200,7 +200,7 @@ export const SDK_RELEASE = {
|
|
|
200
200
|
// getters keep their established compatibility behavior.
|
|
201
201
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
202
202
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
203
|
-
version: '0.3.
|
|
203
|
+
version: '0.3.373',
|
|
204
204
|
updateSummary:
|
|
205
205
|
'Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.',
|
|
206
206
|
packageCapabilities: {
|
|
@@ -53,6 +53,101 @@ export type EmailStatus = {
|
|
|
53
53
|
};
|
|
54
54
|
};
|
|
55
55
|
|
|
56
|
+
const nullable = (type: string) => ({ type: [type, 'null'] });
|
|
57
|
+
const oneOf = (values: readonly string[]) => ({ type: 'string', enum: values });
|
|
58
|
+
|
|
59
|
+
/** `EmailStatus` as a JSON schema, for describing it where TypeScript types are not at hand. */
|
|
60
|
+
export const EMAIL_STATUS_JSON_SCHEMA = {
|
|
61
|
+
type: 'object',
|
|
62
|
+
required: [
|
|
63
|
+
'verdict',
|
|
64
|
+
'status',
|
|
65
|
+
'verified',
|
|
66
|
+
'confidence',
|
|
67
|
+
'reasons',
|
|
68
|
+
'signals',
|
|
69
|
+
'provider',
|
|
70
|
+
],
|
|
71
|
+
properties: {
|
|
72
|
+
verdict: oneOf([
|
|
73
|
+
'send',
|
|
74
|
+
'send_with_caution',
|
|
75
|
+
'verify_next',
|
|
76
|
+
'hold',
|
|
77
|
+
'drop',
|
|
78
|
+
] satisfies EmailStatusVerdict[]),
|
|
79
|
+
status: oneOf([
|
|
80
|
+
'valid',
|
|
81
|
+
'invalid',
|
|
82
|
+
'catch_all',
|
|
83
|
+
'valid_catch_all',
|
|
84
|
+
'unknown',
|
|
85
|
+
'do_not_mail',
|
|
86
|
+
'spamtrap',
|
|
87
|
+
'abuse',
|
|
88
|
+
'disposable',
|
|
89
|
+
] satisfies EmailStatusValue[]),
|
|
90
|
+
verified: { type: 'boolean' },
|
|
91
|
+
confidence: nullable('number'),
|
|
92
|
+
reasons: { type: 'array', items: { type: 'string' } },
|
|
93
|
+
signals: {
|
|
94
|
+
type: 'object',
|
|
95
|
+
required: [
|
|
96
|
+
'catch_all',
|
|
97
|
+
'deliverability',
|
|
98
|
+
'mx_class',
|
|
99
|
+
'mx_provider',
|
|
100
|
+
'mx_record',
|
|
101
|
+
'fraud_score',
|
|
102
|
+
'disposable',
|
|
103
|
+
'role_based',
|
|
104
|
+
'free_email',
|
|
105
|
+
'abuse',
|
|
106
|
+
'spamtrap',
|
|
107
|
+
'suspect',
|
|
108
|
+
'valid',
|
|
109
|
+
] satisfies Array<keyof EmailStatus['signals']>,
|
|
110
|
+
properties: {
|
|
111
|
+
catch_all: nullable('boolean'),
|
|
112
|
+
deliverability: oneOf([
|
|
113
|
+
'high',
|
|
114
|
+
'medium',
|
|
115
|
+
'low',
|
|
116
|
+
'unknown',
|
|
117
|
+
] satisfies EmailDeliverability[]),
|
|
118
|
+
mx_class: oneOf([
|
|
119
|
+
'consumer_mailbox',
|
|
120
|
+
'workspace_mailbox',
|
|
121
|
+
'security_gateway',
|
|
122
|
+
'on_prem',
|
|
123
|
+
'unknown',
|
|
124
|
+
] satisfies EmailMxClass[]),
|
|
125
|
+
mx_provider: nullable('string'),
|
|
126
|
+
mx_record: nullable('string'),
|
|
127
|
+
fraud_score: nullable('number'),
|
|
128
|
+
disposable: nullable('boolean'),
|
|
129
|
+
role_based: nullable('boolean'),
|
|
130
|
+
free_email: nullable('boolean'),
|
|
131
|
+
abuse: nullable('boolean'),
|
|
132
|
+
spamtrap: nullable('boolean'),
|
|
133
|
+
suspect: nullable('boolean'),
|
|
134
|
+
valid: nullable('boolean'),
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
provider: {
|
|
138
|
+
type: 'object',
|
|
139
|
+
required: ['name', 'raw_status', 'raw_score'] satisfies Array<
|
|
140
|
+
keyof EmailStatus['provider']
|
|
141
|
+
>,
|
|
142
|
+
properties: {
|
|
143
|
+
name: { type: 'string' },
|
|
144
|
+
raw_status: { type: ['string', 'boolean', 'number', 'null'] },
|
|
145
|
+
raw_score: nullable('number'),
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
} as const;
|
|
150
|
+
|
|
56
151
|
export type EmailStatusMapEntry = {
|
|
57
152
|
status: EmailStatusValue;
|
|
58
153
|
verdict?: EmailStatusVerdict;
|
|
@@ -18,6 +18,20 @@ export type JobChangeGetterValue = {
|
|
|
18
18
|
new_title: string | null;
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
+
/** `JobChangeGetterValue` as a JSON schema. */
|
|
22
|
+
export const JOB_CHANGE_JSON_SCHEMA = {
|
|
23
|
+
type: 'object',
|
|
24
|
+
required: ['status', 'date', 'new_company', 'new_title'] satisfies Array<
|
|
25
|
+
keyof JobChangeGetterValue
|
|
26
|
+
>,
|
|
27
|
+
properties: {
|
|
28
|
+
status: { type: 'string', enum: JOB_CHANGE_STATUS_VALUES },
|
|
29
|
+
date: { type: ['string', 'null'] },
|
|
30
|
+
new_company: { type: ['string', 'null'] },
|
|
31
|
+
new_title: { type: ['string', 'null'] },
|
|
32
|
+
},
|
|
33
|
+
} as const;
|
|
34
|
+
|
|
21
35
|
export const PHONE_STATUS_VALUES = ['valid', 'invalid', 'unknown'] as const;
|
|
22
36
|
|
|
23
37
|
export type PhoneStatus = (typeof PHONE_STATUS_VALUES)[number];
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import type { DeeplineExtractorTarget } from './extractor-targets';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The catalog of things a tool or play can take or return about a person or
|
|
5
|
+
* a company, named by what they are instead of by what a provider calls them.
|
|
6
|
+
*
|
|
7
|
+
* An id is a dotted path that always ends in a leaf:
|
|
8
|
+
*
|
|
9
|
+
* person.email.value any email for the person
|
|
10
|
+
* person.email.work.value their work email
|
|
11
|
+
* person.email.work.validated whether that work email was validated
|
|
12
|
+
*
|
|
13
|
+
* It reads `<entity>.<group>[.<kind>].<leaf>`. A group is one thing about the
|
|
14
|
+
* entity (an email). A leaf is one fact about that thing (its value, whether
|
|
15
|
+
* it was validated). A kind narrows which one is meant (work, personal). No
|
|
16
|
+
* id is both a field and a parent of fields, so `person.email` alone is never
|
|
17
|
+
* a field; the plain value is `person.email.value`.
|
|
18
|
+
*
|
|
19
|
+
* A kind is a narrowing, so a field with a kind also answers for the same
|
|
20
|
+
* field without it: a tool that returns `person.email.work.value` satisfies a
|
|
21
|
+
* request for `person.email.value`. A tool that cannot tell which kind it has
|
|
22
|
+
* declares the id without one.
|
|
23
|
+
*
|
|
24
|
+
* This is an addition. Existing short names (`email`, `name`) keep working;
|
|
25
|
+
* `EXTRACTOR_TARGET_FIELDS` records what each can mean.
|
|
26
|
+
*/
|
|
27
|
+
type Leaf = { type: string; description: string };
|
|
28
|
+
|
|
29
|
+
type Group = {
|
|
30
|
+
description: string;
|
|
31
|
+
leaves: Record<string, Leaf>;
|
|
32
|
+
/** Narrowings of this group. Each has every leaf the group has. */
|
|
33
|
+
kinds?: Record<string, string>;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const value = (description: string): Leaf => ({ type: 'string', description });
|
|
37
|
+
|
|
38
|
+
const SOURCE: Leaf = {
|
|
39
|
+
type: 'string',
|
|
40
|
+
description: 'The provider or step that found it.',
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export const FIELD_CATALOG = {
|
|
44
|
+
person: {
|
|
45
|
+
name: {
|
|
46
|
+
description: "The person's name.",
|
|
47
|
+
leaves: {
|
|
48
|
+
value: value('Full name.'),
|
|
49
|
+
first: value('First (given) name.'),
|
|
50
|
+
last: value('Last (family) name.'),
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
email: {
|
|
54
|
+
description: 'An email address for the person.',
|
|
55
|
+
leaves: {
|
|
56
|
+
value: value('The address.'),
|
|
57
|
+
validated: {
|
|
58
|
+
type: 'boolean',
|
|
59
|
+
description: 'Whether the address passed validation.',
|
|
60
|
+
},
|
|
61
|
+
status: {
|
|
62
|
+
type: 'EmailStatus',
|
|
63
|
+
description: 'The validation verdict and its signals.',
|
|
64
|
+
},
|
|
65
|
+
source: SOURCE,
|
|
66
|
+
},
|
|
67
|
+
kinds: {
|
|
68
|
+
work: 'At their employer.',
|
|
69
|
+
personal: 'Their own, not tied to an employer.',
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
phone: {
|
|
73
|
+
description: 'A phone number for the person.',
|
|
74
|
+
leaves: {
|
|
75
|
+
value: value('The number.'),
|
|
76
|
+
validated: {
|
|
77
|
+
type: 'boolean',
|
|
78
|
+
description: 'Whether the number passed validation.',
|
|
79
|
+
},
|
|
80
|
+
status: {
|
|
81
|
+
type: '"valid" | "invalid" | "unknown"',
|
|
82
|
+
description: 'The validation verdict.',
|
|
83
|
+
},
|
|
84
|
+
line_type: value('Mobile, landline, VoIP and so on.'),
|
|
85
|
+
carrier: value('The carrier serving the number.'),
|
|
86
|
+
source: SOURCE,
|
|
87
|
+
},
|
|
88
|
+
kinds: {
|
|
89
|
+
mobile: 'Their mobile.',
|
|
90
|
+
work: 'A direct line at their employer.',
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
linkedin: {
|
|
94
|
+
description: "The person's LinkedIn profile.",
|
|
95
|
+
leaves: { url: value('The profile URL.') },
|
|
96
|
+
},
|
|
97
|
+
job: {
|
|
98
|
+
description: "The person's current role.",
|
|
99
|
+
leaves: {
|
|
100
|
+
title: value('Job title.'),
|
|
101
|
+
change: {
|
|
102
|
+
type: 'JobChange',
|
|
103
|
+
description: 'Whether they changed jobs, and to what.',
|
|
104
|
+
},
|
|
105
|
+
change_status: {
|
|
106
|
+
type: 'JobChangeStatus',
|
|
107
|
+
description: 'The job-change verdict alone.',
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
record: {
|
|
112
|
+
description: "A provider's own record of the person.",
|
|
113
|
+
leaves: { id: value("The provider's id for the person.") },
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
company: {
|
|
117
|
+
name: {
|
|
118
|
+
description: "The company's name.",
|
|
119
|
+
leaves: { value: value('The name.') },
|
|
120
|
+
kinds: { legal: 'As registered with a government.' },
|
|
121
|
+
},
|
|
122
|
+
domain: {
|
|
123
|
+
description: "The company's web domain.",
|
|
124
|
+
leaves: { value: value('The bare domain, such as example.com.') },
|
|
125
|
+
},
|
|
126
|
+
website: {
|
|
127
|
+
description: "The company's website.",
|
|
128
|
+
leaves: { url: value('The site URL.') },
|
|
129
|
+
},
|
|
130
|
+
linkedin: {
|
|
131
|
+
description: "The company's LinkedIn page.",
|
|
132
|
+
leaves: { url: value('The page URL.') },
|
|
133
|
+
},
|
|
134
|
+
phone: {
|
|
135
|
+
description: 'A phone number for the company.',
|
|
136
|
+
leaves: { value: value('The number.') },
|
|
137
|
+
},
|
|
138
|
+
industry: {
|
|
139
|
+
description: 'The industry the company is in.',
|
|
140
|
+
leaves: { value: value('The industry.') },
|
|
141
|
+
},
|
|
142
|
+
record: {
|
|
143
|
+
description: "A provider's own record of the company.",
|
|
144
|
+
leaves: { id: value("The provider's id for the company.") },
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
} as const satisfies Record<string, Record<string, Group>>;
|
|
148
|
+
|
|
149
|
+
export type FieldEntity = keyof typeof FIELD_CATALOG;
|
|
150
|
+
|
|
151
|
+
export type CatalogField = Leaf & {
|
|
152
|
+
id: string;
|
|
153
|
+
entity: FieldEntity;
|
|
154
|
+
group: string;
|
|
155
|
+
kind?: string;
|
|
156
|
+
leaf: string;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
/** Every field in the catalog, with and without each kind. */
|
|
160
|
+
export function catalogFields(): CatalogField[] {
|
|
161
|
+
return Object.entries(FIELD_CATALOG).flatMap(([entity, groups]) =>
|
|
162
|
+
Object.entries<Group>(groups).flatMap(([group, definition]) =>
|
|
163
|
+
[undefined, ...Object.keys(definition.kinds ?? {})].flatMap((kind) =>
|
|
164
|
+
Object.entries(definition.leaves).map(([leaf, described]) => ({
|
|
165
|
+
...described,
|
|
166
|
+
id: [entity, group, kind, leaf].filter(Boolean).join('.'),
|
|
167
|
+
entity: entity as FieldEntity,
|
|
168
|
+
group,
|
|
169
|
+
...(kind ? { kind } : {}),
|
|
170
|
+
leaf,
|
|
171
|
+
})),
|
|
172
|
+
),
|
|
173
|
+
),
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
const FIELDS_BY_ID = new Map(catalogFields().map((field) => [field.id, field]));
|
|
178
|
+
|
|
179
|
+
export function catalogField(id: string): CatalogField | undefined {
|
|
180
|
+
return FIELDS_BY_ID.get(id);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/** The same field without its kind, or null when it has none to drop. */
|
|
184
|
+
export function generalField(id: string): string | null {
|
|
185
|
+
const field = FIELDS_BY_ID.get(id);
|
|
186
|
+
return field?.kind ? [field.entity, field.group, field.leaf].join('.') : null;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/** Whether a tool returning `offered` gives a caller what `wanted` asks for. */
|
|
190
|
+
export function fieldSatisfies(offered: string, wanted: string): boolean {
|
|
191
|
+
return offered === wanted || generalField(offered) === wanted;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* What each existing short output name can mean, as the general field: a tool
|
|
196
|
+
* may also declare any narrowing of one (`email` as `person.email.work.value`).
|
|
197
|
+
* One entry means the name means that everywhere unless a tool narrows it.
|
|
198
|
+
* Several mean it depends on the tool, which has to say. None means the name
|
|
199
|
+
* is used for things outside the catalog and stays a per-tool name.
|
|
200
|
+
*/
|
|
201
|
+
export const EXTRACTOR_TARGET_FIELDS: Record<
|
|
202
|
+
DeeplineExtractorTarget,
|
|
203
|
+
readonly string[]
|
|
204
|
+
> = {
|
|
205
|
+
email: ['person.email.value'],
|
|
206
|
+
personal_email: ['person.email.personal.value'],
|
|
207
|
+
email_status: ['person.email.status'],
|
|
208
|
+
phone: ['person.phone.value', 'company.phone.value'],
|
|
209
|
+
phone_status: ['person.phone.status'],
|
|
210
|
+
first_name: ['person.name.first'],
|
|
211
|
+
last_name: ['person.name.last'],
|
|
212
|
+
full_name: ['person.name.value'],
|
|
213
|
+
// Also used for a list name, a channel title and a search suggestion.
|
|
214
|
+
name: ['person.name.value', 'company.name.value'],
|
|
215
|
+
linkedin: ['person.linkedin.url', 'company.linkedin.url'],
|
|
216
|
+
linkedin_url: ['person.linkedin.url'],
|
|
217
|
+
title: ['person.job.title'],
|
|
218
|
+
job_change: ['person.job.change'],
|
|
219
|
+
job_change_status: ['person.job.change_status'],
|
|
220
|
+
company: ['company.name.value'],
|
|
221
|
+
company_name: ['company.name.value'],
|
|
222
|
+
organization_name: ['company.name.value'],
|
|
223
|
+
company_domain: ['company.domain.value'],
|
|
224
|
+
domain: ['company.domain.value'],
|
|
225
|
+
company_website: ['company.website.url'],
|
|
226
|
+
// Also used for a podcast URL.
|
|
227
|
+
website: ['company.website.url'],
|
|
228
|
+
company_linkedin_url: ['company.linkedin.url'],
|
|
229
|
+
industry: ['company.industry.value'],
|
|
230
|
+
id: ['person.record.id', 'company.record.id'],
|
|
231
|
+
// Used for unrelated provider statuses; none is a catalog field.
|
|
232
|
+
status: [],
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* The catalog field a short name stands for on one tool: what the tool
|
|
237
|
+
* declares, or else the name's one meaning. Undefined when the name is
|
|
238
|
+
* ambiguous and the tool has not said, or when what it said is not something
|
|
239
|
+
* the name can mean.
|
|
240
|
+
*/
|
|
241
|
+
export function fieldOfName(
|
|
242
|
+
name: string,
|
|
243
|
+
declared?: string,
|
|
244
|
+
): string | undefined {
|
|
245
|
+
const meanings: readonly string[] =
|
|
246
|
+
EXTRACTOR_TARGET_FIELDS[name as DeeplineExtractorTarget] ?? [];
|
|
247
|
+
if (declared === undefined) {
|
|
248
|
+
return meanings.length === 1 ? meanings[0] : undefined;
|
|
249
|
+
}
|
|
250
|
+
return meanings.some((meaning) => fieldSatisfies(declared, meaning))
|
|
251
|
+
? declared
|
|
252
|
+
: undefined;
|
|
253
|
+
}
|
|
@@ -55,6 +55,8 @@ export type ToolResultListMetadata = {
|
|
|
55
55
|
|
|
56
56
|
export type ToolResultExtractorDescriptor = {
|
|
57
57
|
paths: readonly string[];
|
|
58
|
+
/** The field catalog id this output is on this tool, when it declares one. */
|
|
59
|
+
means?: string;
|
|
58
60
|
transforms?: readonly string[];
|
|
59
61
|
enum?: readonly string[];
|
|
60
62
|
overrides?: readonly ToolResultExtractorOverride[];
|
|
@@ -10,12 +10,12 @@ import {
|
|
|
10
10
|
registerAuthCommands,
|
|
11
11
|
reportSetupCompleted,
|
|
12
12
|
resolvePendingAuthClaimForResume
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-XMME4SCK.mjs";
|
|
14
|
+
import "./chunk-HNLXC5BP.mjs";
|
|
15
|
+
import "./chunk-IUYKSTWB.mjs";
|
|
16
16
|
import "./chunk-DLIRSHV6.mjs";
|
|
17
17
|
import "./chunk-NXGCO4JB.mjs";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-P5JPGZNI.mjs";
|
|
19
19
|
import "./chunk-WZYKRD7T.mjs";
|
|
20
20
|
import "./chunk-KRD6H754.mjs";
|
|
21
21
|
export {
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
var _chunkORBVXCTLjs = require('./chunk-ORBVXCTL.js');
|
|
14
|
+
require('./chunk-JHUMUIU6.js');
|
|
15
|
+
require('./chunk-ND4BVWWZ.js');
|
|
16
|
+
require('./chunk-XNYIZMNQ.js');
|
|
17
|
+
require('./chunk-7P5AA3SN.js');
|
|
18
|
+
require('./chunk-CLEB5KUZ.js');
|
|
19
|
+
require('./chunk-OG64RBAC.js');
|
|
20
|
+
require('./chunk-COGTRVWW.js');
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
exports.EXIT_WORKSPACE_MISMATCH = _chunkORBVXCTLjs.EXIT_WORKSPACE_MISMATCH; exports.authStatusLine = _chunkORBVXCTLjs.authStatusLine; exports.clearPendingClaim = _chunkORBVXCTLjs.clearPendingClaim; exports.clearSatisfiedPendingClaim = _chunkORBVXCTLjs.clearSatisfiedPendingClaim; exports.handleRegister = _chunkORBVXCTLjs.handleRegister; exports.handleStatus = _chunkORBVXCTLjs.handleStatus; exports.handleWait = _chunkORBVXCTLjs.handleWait; exports.readPendingAuthClaim = _chunkORBVXCTLjs.readPendingAuthClaim; exports.registerAuthCommands = _chunkORBVXCTLjs.registerAuthCommands; exports.reportSetupCompleted = _chunkORBVXCTLjs.reportSetupCompleted; exports.resolvePendingAuthClaimForResume = _chunkORBVXCTLjs.resolvePendingAuthClaimForResume;
|