@enricai/barnacle 1.9.5 → 1.9.6
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/README.md
CHANGED
|
@@ -253,24 +253,13 @@ pnpm run recon:generate -- --site-id my-site --form-schema ./src/recon/my-form-s
|
|
|
253
253
|
- `fieldNameKeys` models two roles: the first key is a machine code (PascalCased directly), the second is a human label (run through the section-heading heuristic). Supply one key for a label-only ATS, or two for one that exposes both. Additional keys are unused.
|
|
254
254
|
- Omit `--form-schema` (or pass `none`) and ATS form-key recovery does not run — the engine hardcodes no vendor's wire format. A site whose ATS exposes a form definition must supply one to recover its option fields. See issue #57.
|
|
255
255
|
|
|
256
|
-
####
|
|
257
|
-
|
|
258
|
-
If the site asks screening questions, tell the generator which payload field answers each one — the same reasoning applies, it cannot know what your site asks:
|
|
256
|
+
#### Filtering analytics noise
|
|
259
257
|
|
|
260
258
|
| Env var | Default | Description |
|
|
261
259
|
| --- | --- | --- |
|
|
262
|
-
| `RECON_QUESTION_KEYWORDS` | `{}` | JSON object mapping a payload field name to the keywords that identify its question. A question must match **at least 2** keywords to map. |
|
|
263
260
|
| `RECON_TELEMETRY_URL_PATTERNS` | *(empty)* | Comma-separated extra URL fragments to treat as analytics noise, on top of the built-in list. Put your site's trackers here. |
|
|
264
261
|
|
|
265
|
-
|
|
266
|
-
RECON_QUESTION_KEYWORDS='{
|
|
267
|
-
"VisaSponsorship": ["visa", "sponsor"],
|
|
268
|
-
"RelatedToEmployee": ["related", "employee"],
|
|
269
|
-
"CanPerformJobFunctions":["perform", "job functions", "duties"]
|
|
270
|
-
}' pnpm run recon:generate -- --site-id my-site
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
Any question that matches no field is **logged by prompt** rather than skipped — an unmapped required question is how a generated plugin ends up submitting nothing for it. Read those warnings and either add keywords or accept that the question goes unanswered. Malformed JSON logs a warning and is treated as empty, so a typo cannot kill a recon run mid-flight.
|
|
262
|
+
Screening-question answers with coded options (dropdowns) are recovered generically: when a flow step selects an answer by its label and the site's response carries the option list (JSON-Schema `enum`/`enumNames`, or `{label,value}` option objects), the generator maps the label to the wire code and emits a `z.enum` payload field, so the caller supplies the human-readable answer.
|
|
274
263
|
|
|
275
264
|
Optionally generate the human-readable findings doc alongside:
|
|
276
265
|
|
|
@@ -39,6 +39,42 @@ import { type Capture } from "../scripts/recon-shared";
|
|
|
39
39
|
* @returns the PascalCase payload field name to splice, or null to keep literal
|
|
40
40
|
*/
|
|
41
41
|
export declare function resolveStepPayloadField(instruction: string, explicit?: string, forceNone?: boolean, vocabulary?: ReconVocabulary): string | null;
|
|
42
|
+
/**
|
|
43
|
+
* Extracts the concrete persona VALUE a flow step fills — the recon-supplied
|
|
44
|
+
* constant that appears verbatim in the captured request body — so the body
|
|
45
|
+
* emitter can bind it to `${payload.<field>}`. This is a stricter job than
|
|
46
|
+
* {@link buildStepInstructionExpr}'s browser-flow splice, which only needs *a*
|
|
47
|
+
* span to replace: here the extracted string must equal the wire value exactly,
|
|
48
|
+
* or the value-identity substitution silently misses.
|
|
49
|
+
*
|
|
50
|
+
* Two grammar facts, both verified against real ATS flows, drive the rule:
|
|
51
|
+
* 1. The possessive apostrophe in "the candidate's first name 'Reginald'"
|
|
52
|
+
* opens a false quote — a naive `/'[^']*'/` yields `s first name `, not
|
|
53
|
+
* `Reginald`. Neutralizing `\w's` → `\ws` before matching removes it.
|
|
54
|
+
* 2. A `Select`/`Choose` step names the ANSWER first, then the question
|
|
55
|
+
* ("Select 'No' for the 'sponsorship' question"), so the value is the
|
|
56
|
+
* FIRST quoted token; a `Fill`/`Enter`/`Type` step names the field label
|
|
57
|
+
* first and the value last, so it is the LAST quoted token.
|
|
58
|
+
* A `${RECON_EMAIL}` token (or the literal email `env` value) short-circuits to
|
|
59
|
+
* the env-resolved address, matching recon-browser's own env substitution.
|
|
60
|
+
*
|
|
61
|
+
* @param instruction the flow step's plain-English instruction
|
|
62
|
+
* @param env process env (or a stub) supplying `${VAR}` token values, e.g. RECON_EMAIL
|
|
63
|
+
* @returns the persona value, or null when the step carries no spliceable constant
|
|
64
|
+
*/
|
|
65
|
+
export declare function extractStepPersonaValue(instruction: string, env: NodeJS.ProcessEnv): string | null;
|
|
66
|
+
/**
|
|
67
|
+
* Builds the map from a recon persona VALUE (as it appears in the captured
|
|
68
|
+
* request body) to the `payload.<Field>` accessor that should replace it, by
|
|
69
|
+
* pairing each flow step's resolved field ({@link resolveStepPayloadField})
|
|
70
|
+
* with its extracted value ({@link extractStepPersonaValue}). This is the
|
|
71
|
+
* value→field reconciliation the browser flow and payload schema already do,
|
|
72
|
+
* finally applied to the request-body templates.
|
|
73
|
+
*
|
|
74
|
+
* Earliest step wins on a duplicate value. Site-agnostic: the field mapping
|
|
75
|
+
* lives entirely in the consumer's `--vocabulary`.
|
|
76
|
+
*/
|
|
77
|
+
export declare function harvestPersonaBindings(flowSteps: FlowStepInput[], vocabulary: ReconVocabulary, env: NodeJS.ProcessEnv): Map<string, string>;
|
|
42
78
|
interface InferOpts {
|
|
43
79
|
multipartCoerce?: boolean;
|
|
44
80
|
maxDepth?: number;
|
|
@@ -102,6 +138,20 @@ export declare function selectReturnAction<T extends {
|
|
|
102
138
|
export declare function selectEffectiveResponseBody<T extends {
|
|
103
139
|
capture: Capture;
|
|
104
140
|
}>(isSubmissionFlow: boolean, actionSteps: readonly T[], replayResponseBody: unknown): unknown;
|
|
141
|
+
/**
|
|
142
|
+
* Extracts caller-supplied job/context coordinates from the recon ENTRY URL's
|
|
143
|
+
* query string, mapping each param VALUE to a `payload.<param>` accessor. The
|
|
144
|
+
* first capture is the landing navigation, and a submission flow's job context
|
|
145
|
+
* (`?jobSeqNo=...`, `?jobId=...`) rides its query string — it belongs to the
|
|
146
|
+
* target posting, not the recon run, so it must be caller-supplied. Values
|
|
147
|
+
* below {@link MIN_STATE_VALUE_LENGTH} and cache-buster keys are skipped, since
|
|
148
|
+
* a 1–7 char value collides with arbitrary substrings elsewhere in the body.
|
|
149
|
+
*
|
|
150
|
+
* Site-agnostic: reads only the entry URL's own query keys; no site-specific
|
|
151
|
+
* param knowledge. Downstream, `interpolateStateValues`' length-descending pass
|
|
152
|
+
* composes embedded substrings (a jobId inside a longer jobSeqNo) automatically.
|
|
153
|
+
*/
|
|
154
|
+
export declare function extractEntryUrlParams(entryUrl: string): Map<string, string>;
|
|
105
155
|
interface ActionCapture {
|
|
106
156
|
capture: Capture;
|
|
107
157
|
index: number;
|
|
@@ -231,6 +281,80 @@ export declare function detectFormSchemaFieldNames(captures: Capture[], formSche
|
|
|
231
281
|
fieldOptionsMap: FieldOptionsMap;
|
|
232
282
|
allSchemaUuids: Set<string>;
|
|
233
283
|
};
|
|
284
|
+
/** A resolved dropdown answer: the wire KEY the ATS submits under, the option
|
|
285
|
+
* CODE it expects, the human LABEL the flow step named, and the full label set
|
|
286
|
+
* (used to build the caller-facing z.enum). Anchored on the wire key so the
|
|
287
|
+
* body-slot rewrite is a closed-set JSON-key match. */
|
|
288
|
+
interface SelectOptionResolution {
|
|
289
|
+
wireKey: string;
|
|
290
|
+
semanticName: string;
|
|
291
|
+
code: string;
|
|
292
|
+
label: string;
|
|
293
|
+
/** Every caller-selectable label paired with its wire code, so OPT_<Name>
|
|
294
|
+
* maps the full option set (not just the recon-answered choice). */
|
|
295
|
+
options: Array<{
|
|
296
|
+
label: string;
|
|
297
|
+
code: string;
|
|
298
|
+
}>;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Indexes the JSON-Schema `enum`/`enumNames` PARALLEL-ARRAY convention across
|
|
302
|
+
* every response body: an object carrying a string `name` plus equal-length
|
|
303
|
+
* `enum` (option codes) and `enumNames` (option labels) declares one dropdown's
|
|
304
|
+
* label→code mapping, disambiguated per-question by `name`. This is the PRIMARY
|
|
305
|
+
* label→code source for ATS demographic/eligibility dropdowns whose submitted
|
|
306
|
+
* value is an opaque code, not the label.
|
|
307
|
+
*
|
|
308
|
+
* The same `name` can appear in several captures with progressively fuller
|
|
309
|
+
* option lists (a later page reveals the "decline to answer" choice), so the
|
|
310
|
+
* entry with the MOST non-i18n labels wins rather than first-seen — the flow's
|
|
311
|
+
* answer might be the choice only the fuller list carries.
|
|
312
|
+
*
|
|
313
|
+
* Site-agnostic: `enum`/`enumNames` are generic JSON-Schema keys; the field
|
|
314
|
+
* identities are discovered from the response, never hardcoded.
|
|
315
|
+
*/
|
|
316
|
+
export declare function indexEnumEnumNamesSchemas(captures: Capture[]): Map<string, {
|
|
317
|
+
codes: string[];
|
|
318
|
+
labels: string[];
|
|
319
|
+
}>;
|
|
320
|
+
/**
|
|
321
|
+
* Indexes the `{label,value}`-shaped option-object convention: arrays of
|
|
322
|
+
* objects each carrying both a `label` and a `value` string (state/country
|
|
323
|
+
* pickers ship these). Builds a GLOBAL label→code map used as the fallback
|
|
324
|
+
* source for dropdowns whose flow step carries no `id=` hint (so the
|
|
325
|
+
* enum/enumNames index can't be keyed) — the answer label is looked up
|
|
326
|
+
* directly. First non-i18n binding wins on a duplicate label.
|
|
327
|
+
*
|
|
328
|
+
* Site-agnostic: `label`/`value` are generic option-object keys; no field name
|
|
329
|
+
* is assumed.
|
|
330
|
+
*/
|
|
331
|
+
export declare function indexLabelValueOptionCodes(captures: Capture[]): Map<string, string>;
|
|
332
|
+
/**
|
|
333
|
+
* Reconciles each flow SELECT step to a submitted option CODE so the body-slot
|
|
334
|
+
* literal (`"applyHealthCareExclusion":"5395"`) can be rewritten to a
|
|
335
|
+
* caller-driven `${OPT_<Name>[payload.<Name>]}` lookup. Real ATS bodies carry
|
|
336
|
+
* codes, not labels; the flow carries labels — this bridges them via the two
|
|
337
|
+
* generic label→code conventions ({@link indexEnumEnumNamesSchemas} primary,
|
|
338
|
+
* {@link indexLabelValueOptionCodes} fallback).
|
|
339
|
+
*
|
|
340
|
+
* The wire KEY is discovered from the step's `id=<field>` hint when present
|
|
341
|
+
* (the enum/enumNames schema is keyed by that same field name); steps without
|
|
342
|
+
* an `id=` (state/country) fall back to the vocabulary-resolved persona field
|
|
343
|
+
* lowercased, matched against the `{label,value}` map by label. A dropdown
|
|
344
|
+
* whose labels are all i18n placeholders (e.g. gender) yields no enum and is
|
|
345
|
+
* reported separately for the raw-code channel.
|
|
346
|
+
*
|
|
347
|
+
* Returns structured resolutions plus the set of i18n-only wire keys (raw-code
|
|
348
|
+
* fallbacks). Site-agnostic: field identities come from the flow's own `id=`
|
|
349
|
+
* hints and the consumer vocabulary, never a hardcoded key.
|
|
350
|
+
*/
|
|
351
|
+
export declare function buildSelectOptionResolutions(flowSteps: FlowStepInput[], captures: Capture[], vocabulary: ReconVocabulary, env: NodeJS.ProcessEnv): {
|
|
352
|
+
resolutions: SelectOptionResolution[];
|
|
353
|
+
rawCodeFields: Map<string, {
|
|
354
|
+
wireKey: string;
|
|
355
|
+
code: string;
|
|
356
|
+
}>;
|
|
357
|
+
};
|
|
234
358
|
/**
|
|
235
359
|
* Splits a raw `Set-Cookie` response-header string into `name`/`value` pairs.
|
|
236
360
|
* Captures store `responseHeaders` as a flat `Record<string, string>`
|
|
@@ -339,19 +463,12 @@ export declare function compileActionSteps(actions: ActionCapture[], stateIndex:
|
|
|
339
463
|
* sequences.
|
|
340
464
|
*/
|
|
341
465
|
export declare function collectHeaderBindings(actionSteps: ActionStep[]): HeaderProduce[];
|
|
342
|
-
/**
|
|
343
|
-
* Maps a site's screening-question prompts to the payload field that answers
|
|
344
|
-
* them, as `{ payloadField: [keyword, …] }`.
|
|
345
|
-
*
|
|
346
|
-
* Empty by default and supplied by the operator via `RECON_QUESTION_KEYWORDS`
|
|
347
|
-
* (JSON) — the engine cannot know what any site asks or what a caller's payload
|
|
348
|
-
* calls things. It previously hardcoded one product's field names, which capped
|
|
349
|
-
* discovery at those questions and silently dropped every other site's.
|
|
350
|
-
*/
|
|
351
|
-
export declare function loadQuestionPromptKeywords(): Record<string, string[]>;
|
|
352
466
|
/** Exported for unit testing — lets tests drive the multipart-upload code path directly
|
|
353
467
|
* without going through the full emitContractTs pipeline. */
|
|
354
|
-
export declare function emitMultiStepExecuteHttp(actions: ActionStep[], inputBody: unknown, errorSignals: ErrorSignals, fieldNameMap: FieldNameMap, outDiscoveredFields: Set<string>, fieldOptionsMap: FieldOptionsMap, outDiscoveredOptionFields: Set<string>, outDiscoveredRawOptionFields: Map<string, string>, outDiscoveredAdditionalBodyKeys: Map<string, "string" | "number" | "boolean">, baseUrl: string, baseUrlDerivedHeaders: Map<string, string>, tenantSubdomainHeaders: Map<string, string>,
|
|
468
|
+
export declare function emitMultiStepExecuteHttp(actions: ActionStep[], inputBody: unknown, errorSignals: ErrorSignals, fieldNameMap: FieldNameMap, outDiscoveredFields: Set<string>, fieldOptionsMap: FieldOptionsMap, outDiscoveredOptionFields: Set<string>, outDiscoveredRawOptionFields: Map<string, string>, outDiscoveredAdditionalBodyKeys: Map<string, "string" | "number" | "boolean">, baseUrl: string, baseUrlDerivedHeaders: Map<string, string>, tenantSubdomainHeaders: Map<string, string>, formSchema?: ReconFormSchema | null, personaBindings?: Map<string, string>, entryUrlParams?: Map<string, string>, shieldedUuids?: Set<string>, selectResolutions?: SelectOptionResolution[], outStructuredKeys?: Map<string, string>, rawCodeFields?: Map<string, {
|
|
469
|
+
wireKey: string;
|
|
470
|
+
code: string;
|
|
471
|
+
}>): string;
|
|
355
472
|
/** Generates a complete contract.ts source string for a plugin — exported so
|
|
356
473
|
* unit tests can drive the emitter directly without spawning the CLI. */
|
|
357
474
|
export declare function emitContractTs(opts: {
|
|
@@ -394,12 +511,17 @@ export declare function emitContractTs(opts: {
|
|
|
394
511
|
* (inputBody). Mapped to their value type. Each becomes a payload field
|
|
395
512
|
* (string → z.string(), number → z.number(), boolean → z.boolean()). */
|
|
396
513
|
discoveredAdditionalBodyKeys?: Map<string, "string" | "number" | "boolean">;
|
|
514
|
+
/** Mechanism B: top-level body keys whose value is a whole caller-supplied
|
|
515
|
+
* nested structure (arrays like experienceData/educationData, or the opaque
|
|
516
|
+
* eventData blob), mapped to the inferred Zod schema expression for that
|
|
517
|
+
* value. Each becomes a `<key>: <schema>` payload field so the caller passes
|
|
518
|
+
* its own history/analytics rather than replaying the recon sample. */
|
|
519
|
+
discoveredStructuredKeys?: Map<string, string>;
|
|
397
520
|
/** PascalCase candidate-PII field names the browser flow splices as
|
|
398
521
|
* `payload.<field>` (from resolveStepPayloadField). Each is added to the
|
|
399
522
|
* payload schema so those references typecheck. Shares the accumulator with
|
|
400
523
|
* emitBrowserFlowTs so schema and flow can never drift. */
|
|
401
524
|
payloadFieldNames?: Set<string>;
|
|
402
|
-
base64ContentHelper?: string;
|
|
403
525
|
/** Response-header/cookie-origin state bindings collected from the action
|
|
404
526
|
* sequence's produces[] (see `collectHeaderBindings`) — rendered as
|
|
405
527
|
* `createHttpClient`'s `bind` option so a value like a `Set-Cookie`-minted
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recon-generate.d.ts","sourceRoot":"","sources":["../../src/scripts/recon-generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAiBH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EACL,KAAK,OAAO,EAKb,MAAM,wBAAwB,CAAC;AA2BhC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,OAAO,EACnB,UAAU,GAAE,eAAkC,GAC7C,MAAM,GAAG,IAAI,CAoBf;AAUD,UAAU,SAAS;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,KAAK,SAAI,EACT,MAAM,SAAK,EACX,IAAI,GAAE,SAAc,GACnB,MAAM,CA+DR;AA8DD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAMjG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAMhG;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EACxE,gBAAgB,EAAE,OAAO,EACzB,WAAW,EAAE,SAAS,CAAC,EAAE,EACzB,kBAAkB,EAAE,OAAO,GAC1B,OAAO,CAGT;
|
|
1
|
+
{"version":3,"file":"recon-generate.d.ts","sourceRoot":"","sources":["../../src/scripts/recon-generate.ts"],"names":[],"mappings":"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"}
|