Skip to content

feat(linkedin): add finite contact-add pass package - #847

Open
JerryLingjieMei wants to merge 1 commit into
dataelement:mainfrom
JerryLingjieMei:feat/linkedin-contact-add
Open

JerryLingjieMei wants to merge 1 commit into
dataelement:mainfrom
JerryLingjieMei:feat/linkedin-contact-add

Conversation

@JerryLingjieMei

Copy link
Copy Markdown

What

Adds packages/dsh-linkedin-contacts, a standalone CLI that owns the saved LinkedIn contact-add queue: deduplicated ledger, identity review, and connection requests verified in the destination UI.

Why in the repo

The queue was produced by an external Codex heartbeat and had no durable home. This package gives it a maintained implementation, tests and a documented policy. It is not a host plugin — no dsh.client entry, no slot registration, and the renderer never loads it.

Personal data

The queue, action ledger and vCard baseline stay under ~/.dsh/automations/linkedin-contact-add/ (mode 0600) and are never committed. Nothing in the package hard-codes a person, profile URL or machine path; the ledger path is a flag or DSH_LINKEDIN_LEDGER.

Implementation

  • ledger.mjs — queue selection, atomic checkpointing, duplicate merging, and the identity policy (assessCandidate).
  • chrome.mjs — CDP client over Node's built-in WebSocket, attaching to the already signed-in Chrome via DevToolsActivePort. No runtime dependencies, no cookie copying.
  • linkedin.mjs — search parsing, profile state, and the Connect → Send without a note → verify Pending sequence.
  • cli.mjs — status, scan (review only), run (review + send).

A name alone never confirms a person: confirmation needs an organization match, at least two mutual connections, or a previously verified profile. Rows already invited are never selected again.

Verification

./node_modules/.bin/vitest run test/linkedin-contacts-ledger.test.mjs
# 11 passed

Dry runs against a copy of the real ledger classified 1st-degree contacts as existing_connection, a 9-mutual contact as confirmed, and name-only matches as held_ambiguous.

Adds packages/dsh-linkedin-contacts, a standalone CLI that owns the saved
LinkedIn contact-add queue: deduplicated ledger, identity review against
LinkedIn, and connection requests verified in the destination UI.

Personal data stays outside the repository under the DSH home. The CDP
client uses Node's built-in WebSocket against the running Chrome, so the
package has no runtime dependencies and no host-plugin surface.

Replaces the Codex heartbeat of the same name, which is now paused.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant