From ac15bfe38e0550ff105bbeee0b9ea7871f90a06c Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Thu, 12 Mar 2026 18:13:44 -0500 Subject: [PATCH 001/249] feat: add vana connect cli --- README.md | 55 +++ docs/CLI-AUDIENCE-CONTRACT.md | 299 ++++++++++++ docs/CLI-BUILD-PLAN.md | 249 ++++++++++ docs/CLI-COMMAND-MODEL.md | 342 ++++++++++++++ docs/CLI-FOUNDATION-ASSESSMENT.md | 472 +++++++++++++++++++ docs/CLI-ONBOARDING-COPY.md | 390 ++++++++++++++++ docs/CLI-ONBOARDING-WORKPLAN.md | 282 ++++++++++++ docs/CLI-SDK-ARCHITECTURE.md | 276 +++++++++++ docs/CLI-SDK-UX-RESEARCH.md | 345 ++++++++++++++ docs/CLI-STATE-MODEL.md | 303 ++++++++++++ docs/CLI-USER-JOURNEYS.md | 266 +++++++++++ docs/CLI-UX-QUALITY-BAR.md | 185 ++++++++ docs/CLI-UX-SIMULATION.md | 350 ++++++++++++++ docs/CLI-V1-SPEC.md | 424 +++++++++++++++++ package.json | 24 +- pnpm-lock.yaml | 356 ++++++++++++++ runtime-assets/run-connector.cjs | 275 +++++++++++ src/cli/bin.ts | 8 + src/cli/index.ts | 741 ++++++++++++++++++++++++++++++ src/cli/main.ts | 1 + src/connectors/index.ts | 8 + src/connectors/registry.ts | 217 +++++++++ src/core/cli-types.ts | 84 ++++ src/core/index.ts | 16 + src/core/paths.ts | 38 ++ src/core/state-store.ts | 47 ++ src/personal-server/index.ts | 97 ++++ src/runtime/index.ts | 7 + src/runtime/managed-playwright.ts | 390 ++++++++++++++++ src/runtime/repo-paths.ts | 23 + test/cli/index.test.ts | 230 ++++++++++ 31 files changed, 6799 insertions(+), 1 deletion(-) create mode 100644 docs/CLI-AUDIENCE-CONTRACT.md create mode 100644 docs/CLI-BUILD-PLAN.md create mode 100644 docs/CLI-COMMAND-MODEL.md create mode 100644 docs/CLI-FOUNDATION-ASSESSMENT.md create mode 100644 docs/CLI-ONBOARDING-COPY.md create mode 100644 docs/CLI-ONBOARDING-WORKPLAN.md create mode 100644 docs/CLI-SDK-ARCHITECTURE.md create mode 100644 docs/CLI-SDK-UX-RESEARCH.md create mode 100644 docs/CLI-STATE-MODEL.md create mode 100644 docs/CLI-USER-JOURNEYS.md create mode 100644 docs/CLI-UX-QUALITY-BAR.md create mode 100644 docs/CLI-UX-SIMULATION.md create mode 100644 docs/CLI-V1-SPEC.md create mode 100644 runtime-assets/run-connector.cjs create mode 100644 src/cli/bin.ts create mode 100644 src/cli/index.ts create mode 100644 src/cli/main.ts create mode 100644 src/connectors/index.ts create mode 100644 src/connectors/registry.ts create mode 100644 src/core/cli-types.ts create mode 100644 src/core/paths.ts create mode 100644 src/core/state-store.ts create mode 100644 src/personal-server/index.ts create mode 100644 src/runtime/index.ts create mode 100644 src/runtime/managed-playwright.ts create mode 100644 src/runtime/repo-paths.ts create mode 100644 test/cli/index.test.ts diff --git a/README.md b/README.md index 035dbef7..2a63d088 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,61 @@ Then, in your dev version of DataConnect (likely built from the `main` branch) y If you prefer to integrate the SDK into an existing project, follow the steps below. +## Headless CLI + +`vana-connect` now also ships a local collection CLI for connector setup and data export flows. + +### Install + +Use the published package directly: + +```bash +pnpm dlx @opendatalabs/connect status +``` + +Or install it globally: + +```bash +pnpm add -g @opendatalabs/connect +vana status +``` + +### Commands + +```bash +vana sources +vana connect github +vana status +vana setup +``` + +### Local development + +From this repo: + +```bash +pnpm install +pnpm build +node dist/cli/bin.js status +``` + +The CLI installs its local browser runtime under `~/.dataconnect/`. + +### Programmatic runtime access + +If you are building an app surface like DataConnect Desktop or a hosted orchestration layer, use the SDK modules instead of shelling out to the CLI where possible. + +```ts +import { ManagedPlaywrightRuntime } from "@opendatalabs/connect/runtime"; +import { listAvailableSources } from "@opendatalabs/connect/connectors"; +``` + +Intended split: + +- app surfaces consume SDK/runtime APIs +- agent skills consume the CLI +- `data-connectors` remains the connector and schema source of truth + ### Installation ```bash diff --git a/docs/CLI-AUDIENCE-CONTRACT.md b/docs/CLI-AUDIENCE-CONTRACT.md new file mode 100644 index 00000000..d9372af0 --- /dev/null +++ b/docs/CLI-AUDIENCE-CONTRACT.md @@ -0,0 +1,299 @@ +# `vana-connect` CLI Audience Contract + +_As of March 12, 2026_ + +## Purpose + +This document defines what must be true for the `vana connect` CLI to serve both: + +- humans using the terminal directly +- coding agents like Codex and Claude Code + +The product should not split into two different CLIs. It should present one command model with mode behavior that works well for both audiences. + +## Core decision + +`vana connect` should use: + +- **one command grammar** +- **one underlying lifecycle** +- **multiple output and prompt modes** + +The split between audiences should happen primarily in: + +- output formatting +- prompt behavior +- verbosity +- non-interactive guarantees + +Not in top-level commands. + +## Audience 1: Humans + +### What humans need + +- commands they can guess +- clean first-run guidance +- clear trust boundaries +- visible progress +- human summaries of success +- direct explanations of failure and recovery + +### What must be true in the UX + +- the first command should work without reading extensive docs +- install/setup should be explained before any major local changes happen +- credentials should never feel like they are disappearing into a black box +- success should be summarized in plain language +- the user should always know what to do next + +### What to avoid for humans + +- raw JSON by default +- unexplained artifact paths as the main success message +- ambiguous partial matches without confirmation +- silent fallback behavior +- prompts that assume repo knowledge + +## Audience 2: Coding agents + +### What agents need + +- stable command grammar +- stable exit codes +- stable machine-readable output +- deterministic prompt behavior +- minimal token waste +- no hidden state transitions + +### What must be true in the UX + +- there must be a machine-readable mode +- stdout/stderr behavior must be predictable +- non-interactive mode must fail instead of hanging +- event types and field names should be stable +- help output and command behavior should be compact and unsurprising + +### What to avoid for agents + +- decorative output in machine mode +- forced interactive flows when a flag could suppress them +- hidden install side effects without explicit acknowledgement +- inconsistent error shapes +- long prose where structured output is possible + +## Shared requirements + +These are requirements for both audiences. + +### 1. Trust + +The CLI must make these things explicit: + +- what is being installed +- where state is stored locally +- when credentials are needed +- where data ended up + +### 2. Legibility + +The CLI must make these things easy to answer: + +- what just happened? +- what state am I in now? +- what do I do next? + +### 3. Recovery + +The CLI must make common failure modes recoverable without reading source code or repo docs. + +### 4. Composability + +The CLI must support being embedded in: + +- shell scripts +- agents +- future desktop or service wrappers + +## Proposed mode model + +This is the intended starting point for MVP. + +### Default mode + +Audience: + +- humans + +Behavior: + +- concise human-readable output +- prompts when needed +- clear next-step hints +- summarized success and failure + +### `--json` + +Audience: + +- agents +- scripts +- advanced users + +Behavior: + +- machine-readable output only +- stable event objects +- no decorative formatting + +### `--no-input` + +Audience: + +- automation +- agents in non-interactive mode + +Behavior: + +- fail if input is needed +- never block waiting for user input + +### `--yes` + +Audience: + +- automation +- users who want one-shot bootstrap + +Behavior: + +- auto-approve safe install/setup prompts + +### `--quiet` + +Audience: + +- scripts +- users who want reduced chatter + +Behavior: + +- reduce non-essential status output +- preserve important warnings/errors + +## Why `--json` is probably the key agent mode + +At least for MVP, `--json` is likely more important than an `--agent` flag. + +Why: + +- it is easier to reason about +- it matches strong prior art +- it focuses on contract shape rather than audience labeling +- it avoids creating a second quasi-interface + +An explicit `--agent` flag should only be introduced if it adds semantics that cannot be cleanly expressed through: + +- `--json` +- `--no-input` +- `--yes` +- `--quiet` + +## Output contract expectations + +### In human mode + +Success should look like: + +- source connected +- brief summary of what was collected +- whether data was ingested or only stored locally +- next step + +Failure should look like: + +- short problem statement +- one suggested fix +- whether retry is safe + +### In machine mode + +Output should: + +- use stable event types +- include stable identifiers and file paths when relevant +- clearly distinguish success, warning, and failure states +- avoid free-form chatter + +The existing `run-connector` event model is a strong starting point and should be formalized rather than replaced. + +## Command behavior principles + +### Principle 1: Same command, different presentation + +Example: + +```bash +vana connect steam +vana connect steam --json +vana connect steam --json --no-input +``` + +These should represent the same lifecycle, not different products. + +### Principle 2: Auto-do the obvious, but narrate it + +If runtime is missing, the CLI can install it as part of `connect`, but it should first explain: + +- what is missing +- what it will install +- where it will go + +### Principle 3: Never surprise automation + +If the caller asked for non-interactive behavior, the CLI must fail clearly instead of waiting for a prompt response indefinitely. + +### Principle 4: Success should be outcome-shaped + +Do not make the main success story: + +- “saved file to X” + +Prefer: + +- “connected Steam and collected your library and profile” + +Then include artifact paths as supporting detail. + +## MVP acceptance criteria by audience + +### Humans + +MVP is acceptable if: + +- they can connect one source from one command +- they understand what was installed and where +- they understand what data was collected +- they can check status later without docs + +### Agents + +MVP is acceptable if: + +- they can run one command with stable machine output +- they can detect missing setup cleanly +- they can detect when input is required +- they can distinguish local-only success from Personal Server ingest success + +## Conclusion + +The key to serving both audiences is not building two interfaces. + +It is: + +- one command model +- one lifecycle +- one explicit mode system +- one strong machine-readable contract + +If those are done well, `vana connect` can feel polished for humans and efficient for coding agents at the same time. diff --git a/docs/CLI-BUILD-PLAN.md b/docs/CLI-BUILD-PLAN.md new file mode 100644 index 00000000..9bba8913 --- /dev/null +++ b/docs/CLI-BUILD-PLAN.md @@ -0,0 +1,249 @@ +# `vana-connect` CLI Build Plan + +_As of March 12, 2026_ + +## Purpose + +This document turns the v1 spec into a concrete implementation sequence and assigns work to the right repositories. + +The goal is to move from strategy to build with minimal confusion. + +## Repo responsibilities + +### `vana-connect` + +Primary implementation home for: + +- the new shared core +- the new CLI +- the runtime orchestration SDK layer +- future monorepo structure + +Why: + +- it already has TypeScript SDK infrastructure +- it already uses `pnpm` workspaces +- it is already the public-facing `vana-connect` product repo + +Relevant files: + +- [package.json](/home/tnunamak/code/vana-connect/package.json) +- [pnpm-workspace.yaml](/home/tnunamak/code/vana-connect/pnpm-workspace.yaml) + +### `data-connectors` + +Remain the source of truth for: + +- connector scripts +- connector registry +- schemas +- current skill docs +- current bootstrap/helper scripts until migrated or wrapped + +Relevant files: + +- [registry.json](/home/tnunamak/code/data-connectors/registry.json) +- [skills/vana-connect/scripts](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts) + +### `data-connect` + +Reference implementation and integration source for: + +- Personal Server ingest behavior +- desktop app runtime assumptions +- current local execution/ingest patterns + +Relevant file: + +- [personalServerIngest.ts](/home/tnunamak/code/data-connect/src/services/personalServerIngest.ts) + +## Practical conclusion + +Build the CLI in `vana-connect`. + +Do not move connectors or the skill immediately. + +In v1, the new CLI should wrap and reuse parts of the current `data-connectors` runtime flow where sensible, while establishing cleaner package boundaries in `vana-connect`. + +## Proposed package shape in `vana-connect` + +Initial target: + +- `src/core` + - shared types, outcomes, events, errors +- `src/cli` + - command handlers, formatters, prompts +- `src/runtime` + - runtime abstraction and v1 Playwright runtime adapter +- `src/connectors` + - registry/source resolution helpers +- `src/personal-server` + - target detection and ingest helpers + +If needed later, this can become true workspace packages: + +- `packages/connect-core` +- `packages/connect-sdk` +- `packages/connect-cli` +- `packages/connect-runtime-playwright` + +For speed, v1 can start inside the existing `src/` tree and split into packages after the flow is proven. + +## Why not force workspace packages immediately + +Because the real risk is UX and command behavior, not package boundaries. + +Start with clean module boundaries inside `vana-connect`. Split into multiple publishable packages only when it helps materially. + +## Build phases + +### Phase 1: Core contracts + +Implement in `vana-connect`: + +- outcome types +- event types for `--json` +- state types +- error model +- config paths and log-path helpers + +This should be the first code layer because the CLI and SDK will both depend on it. + +### Phase 2: Runtime adapter + +Implement a v1 runtime adapter around the current Playwright-based flow. + +Scope: + +- runtime install check +- runtime setup invocation +- connector run invocation +- event normalization from current runner output +- headed fallback support preserved + +This layer can initially shell out to existing scripts in `data-connectors` / existing runner artifacts if needed. + +### Phase 3: Connector resolution + +Implement: + +- source lookup +- list command data source +- connector fetch/wrap behavior + +For v1, this can reuse existing registry and download logic rather than replacing it from scratch. + +### Phase 4: Personal Server target detection and ingest + +Implement: + +- Personal Server availability detection +- ingest attempt when target is available +- explicit local-only vs ingested outcomes + +For v1, keep this small and honest. + +### Phase 5: CLI command handlers + +Implement: + +- `vana connect ` +- `vana connect status` +- `vana connect list` +- `vana connect setup` + +Plus: + +- `--json` +- `--no-input` +- `--yes` + +### Phase 6: Human-mode polish + +Implement: + +- onboarding copy from the copy doc +- compact progress formatting +- log-path surfacing +- concise success/failure summaries + +This phase matters more than it sounds. It is where the CLI stops feeling like a wrapper. + +### Phase 7: Tests + +Add tests for: + +- command parsing +- outcome/event normalization +- `--json` output contract +- `--no-input` behavior +- local-only vs ingested outcome distinction + +Focus on contract tests first, not deep end-to-end coverage. + +## Concrete first implementation slice + +The first shippable slice should be: + +1. `vana connect steam` +2. inline setup if missing +3. connector resolution +4. run via existing runtime +5. JSON event output +6. human summary +7. `vana connect status` + +That slice is enough to validate the architecture and the first-run UX. + +## Likely technical choices in `vana-connect` + +- TypeScript +- Node runtime +- `commander` for command grammar +- `@inquirer/prompts` for interactive input +- `zod` for event/state validation +- file-backed logs under `~/.dataconnect/logs` + +These choices match the current system boundary and optimize for speed. + +## What not to build first + +Do not start with: + +- a TUI +- multi-runtime plugin marketplace +- full package splitting ceremony +- connect-all onboarding +- scheduling +- broad environment management + +Those would slow down the MVP and dilute the first-run quality bar. + +## Immediate next coding steps + +1. Create CLI/core/runtime module skeleton in `vana-connect`. +2. Add command parser and placeholder commands. +3. Implement core types and event contract. +4. Wrap current runtime/setup/connector resolution behavior. +5. Implement `vana connect ` happy path. +6. Implement `status`. +7. Add tests for the contract and modes. + +## Decision summary + +- Build in `vana-connect` +- Reuse `data-connectors` assets rather than moving them now +- Keep `data-connect` as reference for Personal Server ingest behavior +- Optimize for one excellent source-connect flow first +- Delay broader repo/package reorganization until the flow is proven + +## Conclusion + +The next work should be code in `vana-connect`, not more product exploration. + +The MVP path is: + +- thin architecture +- strong contracts +- one polished connect flow +- one honest status command diff --git a/docs/CLI-COMMAND-MODEL.md b/docs/CLI-COMMAND-MODEL.md new file mode 100644 index 00000000..34fdebbd --- /dev/null +++ b/docs/CLI-COMMAND-MODEL.md @@ -0,0 +1,342 @@ +# `vana-connect` CLI Command Model + +_As of March 12, 2026_ + +## Purpose + +This document defines the intended command surface for the first version of the `vana connect` CLI. + +It is optimized for: + +- excellent first-run onboarding +- one command model for humans and coding agents +- fast MVP delivery using existing runtime primitives +- future support for local and cloud Personal Server environments + +## Product stance + +The CLI should feel like one coherent product, not a bundle of repo scripts. + +That means: + +- public commands should be user-journey shaped +- internal scripts should remain implementation details +- the command surface should be small in v1 + +## Command namespace + +Assume the CLI command family is: + +```bash +vana connect ... +``` + +This keeps the door open for a broader `vana` command family while making “connect” the product surface for data portability. + +## MVP top-level commands + +For v1, the public surface should be limited to: + +- `vana connect ` +- `vana connect list` +- `vana connect status` +- `vana connect setup` + +Optional for v1 if it is cheap: + +- `vana connect inspect ` + +Not v1: + +- large TUI mode +- scheduling +- “connect everything” as the default first-run path +- extensive admin/config subtrees + +## Canonical first command + +The canonical first command should be: + +```bash +vana connect +``` + +Example: + +```bash +vana connect steam +``` + +Why: + +- it matches the user’s intent directly +- it reduces onboarding ceremony +- it allows the CLI to inline setup when safe +- it creates a more Vercel/`uv`-like first impression than forcing `setup` + +## Command details + +### `vana connect ` + +Primary job: + +- connect one source end-to-end + +Expected behavior: + +1. validate CLI/runtime prerequisites +2. if needed, explain and perform setup +3. fetch or resolve the connector +4. check existing auth/session state +5. run collection +6. request input if needed +7. ingest to the active Personal Server if available +8. summarize outcome + +Expected output in human mode: + +- what is happening +- what, if anything, is being installed +- whether existing session is being reused +- what data was collected +- whether data was ingested or only stored locally +- what to do next + +Expected output in machine mode: + +- stable event objects +- stable outcome state +- stable indication of whether ingest occurred + +### `vana connect list` + +Primary job: + +- show what can be connected + +Expected behavior: + +- list known/supported sources +- indicate installed/not installed +- optionally indicate previously connected + +This command should stay simple in v1. + +### `vana connect status` + +Primary job: + +- show the current health and state of the local setup + +Expected behavior: + +- report runtime installation status +- report active Personal Server target status +- report installed connectors +- report saved session presence +- report recent run outcomes +- report local-only vs ingested state when known + +This is the key trust/recovery command. + +### `vana connect setup` + +Primary job: + +- explicit bootstrap / repair / preinstall + +Expected behavior: + +- install runtime prerequisites +- verify expected artifacts exist +- explain what was installed + +Important: + +- this should exist +- but it should not be the default onboarding path + +## Optional v1 command + +### `vana connect inspect ` + +Primary job: + +- inspect detailed status for one source + +Possible output: + +- connector installed? +- session present? +- last successful run? +- last error? +- last known scopes collected? +- last result path? + +This is useful, but `status` matters more. + +## Mode model + +The mode model should be flag-based, not command-based. + +### Required flags + +- `--json` +- `--no-input` +- `--yes` + +Likely useful: + +- `--quiet` + +### Behavior expectations + +#### Human default + +- concise human-readable output +- safe prompts allowed +- progress visible +- summarized outcome + +#### `--json` + +- no decorative output +- stable machine-readable events/results + +#### `--no-input` + +- do not prompt +- fail clearly if input is required + +#### `--yes` + +- auto-approve safe setup/install confirmations + +## Environment model + +The CLI should be environment-aware from the beginning, even if v1 only supports a narrow subset. + +### Concept + +Users should think: + +- “I have a Personal Server” + +Not: + +- “I have to reason about desktop app internals vs cloud infra internals” + +### Minimal MVP environment vocabulary + +The CLI should understand: + +- active Personal Server target available or unavailable +- local-only data collection vs ingested data + +Possible future targets: + +- local desktop-bundled Personal Server +- self-hosted Personal Server +- cloud-hosted Personal Server + +For v1, do not expose a large environment-management surface. Just make sure commands and status output do not assume localhost forever. + +## State model expectations + +The command surface depends on a small number of visible states. + +### Runtime state + +- installed +- missing +- unhealthy + +### Source state + +- known +- installed +- authenticated/session-present +- needs re-auth +- run succeeded +- run failed + +### Data state + +- collected locally +- ingested to Personal Server +- ingest unavailable +- ingest failed + +These states should show up explicitly in status and machine-readable output. + +## Outcome model for `connect` + +This is important for both UX and SDK design. + +### Success classes + +- `connected_and_ingested` +- `connected_local_only` + +### Recoverable failure classes + +- `needs_input` +- `setup_required` +- `personal_server_unavailable` +- `auth_failed` +- `connector_unavailable` +- `ingest_failed` + +### Hard failure classes + +- `runtime_error` +- `invalid_connector` +- `unexpected_internal_error` + +These names do not need to be final, but the CLI should think in this shape. + +## How this maps to current primitives + +The existing scripts already provide useful internals: + +- setup bootstrap +- connector fetch +- connector run lifecycle +- validation + +The CLI should wrap those behaviors, not expose them raw. + +Rough mapping: + +- `vana connect setup` + - wraps current setup script behavior +- `vana connect ` + - wraps connector fetch + run + ingest +- `vana connect status` + - wraps local state inspection +- `vana connect list` + - wraps registry/discovery behavior + +## What to defer + +To keep MVP sharp, defer: + +- multi-step onboarding wizards +- full source marketplace UX +- scheduling and daemonization +- bulk connect-all default flow +- broad config management trees +- TUI-first interaction + +These may be useful later, but they are not necessary to create a strong first impression now. + +## Conclusion + +The MVP command surface should be intentionally small: + +- connect one source +- list sources +- inspect status +- run setup explicitly when desired + +That is enough to ship quickly while still creating a product surface that feels deliberate, modern, and extensible. diff --git a/docs/CLI-FOUNDATION-ASSESSMENT.md b/docs/CLI-FOUNDATION-ASSESSMENT.md new file mode 100644 index 00000000..b8b13ecf --- /dev/null +++ b/docs/CLI-FOUNDATION-ASSESSMENT.md @@ -0,0 +1,472 @@ +# `vana-connect` CLI Foundation Assessment + +_As of March 12, 2026_ + +## Executive summary + +The current `vana-connect` foundation is real. It is not just hand-wavy prototype text. There is a working setup path, a working runner interaction model, a working connector fetch path, a working validator, and a working output contract. + +But compared against the best prior art in CLI and SDK UX, the current state is closer to: + +- **strong internal tooling** +- **promising runtime architecture** +- **weak product shell** + +That is a good starting point for shipping an MVP quickly, because the engine is more real than the surface. The risk is not "this is fake." The risk is "if we ship this mostly as-is, it will feel improvised rather than world-class." + +## Rating summary + +Scored against the standards implied by `uv`, `gh`, Vercel CLI, Stripe DX, and the product goals in the PRD. + +| Component | Current rating | Why | +| :--------------------------- | :------------- | :-------------------------------------------------------------------------- | +| Setup flow | C+ | Functional, but reads like bootstrap ops | +| Local state model | B | Coherent and understandable, good foundation | +| Runner protocol | B+ | Strongest asset; supports both human and agent flows | +| Validator | B- | Valuable internal quality gate, not yet polished user-facing diagnostics | +| Connector discovery | C | Works, but weak discoverability and trust UX | +| Result contract | B- | Directionally good, still under-specified as a public SDK contract | +| Overall onboarding readiness | C+ | Can work, but not yet likely to create a `uv`/Vercel-level first impression | + +## What is genuinely real and reusable + +### 1. Runner protocol + +The best part of the current system is [run-connector.cjs](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/run-connector.cjs). + +What is strong: + +- explicit event types on stdout +- explicit exit codes +- machine-readable output by default +- optional human-readable output via `--pretty` +- input continuation model using files instead of forced restarts + +Relevant code: + +- usage and event framing at [run-connector.cjs:3](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/run-connector.cjs#L3) +- output contract at [run-connector.cjs:13](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/run-connector.cjs#L13) +- human-readable formatting at [run-connector.cjs:72](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/run-connector.cjs#L72) +- request-input handling at [run-connector.cjs:196](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/run-connector.cjs#L196) +- file-based continuation at [run-connector.cjs:214](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/run-connector.cjs#L214) + +Why this matters: + +- this is the core reason a single CLI can serve both humans and coding agents +- it already encodes the right architectural instinct: one lifecycle, multiple presentations + +Compared to prior art: + +- not as refined as Stripe CLI or `gh` +- but architecturally stronger than a lot of one-off CLIs because it already thinks in events, modes, and resumability + +Verdict: + +- keep this +- formalize it +- build the new CLI around it + +### 2. Local state model + +The current `~/.dataconnect/` layout is a meaningful asset. + +What is good: + +- runner location +- connector cache +- persistent browser profiles +- single obvious last-result artifact + +Relevant docs: + +- [SETUP.md](/home/tnunamak/code/data-connectors/skills/vana-connect/SETUP.md) + +Why this matters: + +- world-class CLIs make state legible +- Vercel, Supabase, and Doppler all benefit from explicit local context + +Current limitations: + +- state is documented, but not yet exposed through a coherent CLI surface +- there is no `status`, `doctor`, `inspect`, or `auth list` kind of command + +Verdict: + +- keep the state model +- make it visible and inspectable + +### 3. Validator + +The validator is more substantial than a vibe-coded placeholder. + +Relevant code: + +- report model at [validate.cjs:23](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/validate.cjs#L23) +- metadata checks at [validate.cjs:185](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/validate.cjs#L185) +- script pattern checks at [validate.cjs:227](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/validate.cjs#L227) + +Why it matters: + +- quality gates are one of the strongest things you can borrow from Stripe-style DX +- the system already has a place where correctness can accumulate + +Current limitation: + +- it is aimed primarily at connector creators, not end users +- it needs better categorization, remediation guidance, and friendlier summaries + +Verdict: + +- keep it +- evolve it into the nucleus of `doctor`, `inspect`, and trust/debug surfaces + +## What currently feels improvised + +### 1. Setup flow + +[setup.sh](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/setup.sh) is useful but nowhere near `uv` / Vercel quality. + +Relevant code: + +- bootstrap flow at [setup.sh:19](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/setup.sh#L19) +- cross-repo clone at [setup.sh:27](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/setup.sh#L27) +- dependency install at [setup.sh:35](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/setup.sh#L35) +- browser install at [setup.sh:38](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/setup.sh#L38) + +What’s weak: + +- no single packaged install artifact +- no versioned install / upgrade story +- no environment detection beyond "try it" +- no polished failure recovery +- no clear explanation of local state after install +- no post-install success verification beyond file existence + +Compared to prior art: + +- `uv` compresses install + usage into a nearly frictionless mental model +- Vercel turns first run into a guided, trustworthy workflow +- current setup feels like a repo maintenance script + +Verdict: + +- do not expose this as the final product onboarding +- it is acceptable as an internal bootstrap while a real CLI installer is built + +### 2. Connector discovery + +[fetch-connector.cjs](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/fetch-connector.cjs) works, but it is not yet a strong user-facing discovery experience. + +Relevant code: + +- raw GitHub registry fetch at [fetch-connector.cjs:24](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/fetch-connector.cjs#L24) +- partial match search at [fetch-connector.cjs:57](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/fetch-connector.cjs#L57) +- download flow at [fetch-connector.cjs:70](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/fetch-connector.cjs#L70) + +What’s weak: + +- ambiguous partial matching +- no browse/list/search UX +- no confidence signals +- no versioning or channel model +- no checksum or authenticity UX at the command surface + +Compared to prior art: + +- `gh` and Vercel make context clear before acting +- this currently behaves more like a private helper utility + +Verdict: + +- keep the logic +- replace the product surface around it + +### 3. Result contract + +The scoped result format is good enough to build on, but not fully mature. + +Strengths: + +- composable +- reasonably simple +- aligns with Personal Server storage by scope + +Weaknesses: + +- needs a tighter public contract +- unclear semantics for partial success +- unclear long-term metadata conventions +- not yet expressed as a formal SDK boundary + +Verdict: + +- keep the scoped model +- formalize types and lifecycle semantics in the SDK + +## Assessment against product goals + +### Fast to first value + +Current state: **partially met** + +Why: + +- the mechanics exist +- the journey still has too much "read docs, run setup script, fetch connector, run wrapper, understand files" + +This is not a five-minute magic experience yet. + +### Invisible once running + +Current state: **not yet met** + +Why: + +- no first-class sync/schedule story +- no polished re-auth loop +- no status surface + +### Trustworthy data + +Current state: **partially met** + +Why: + +- local-first helps +- validator helps +- but the UX does not yet make provenance, freshness, and success status legible enough + +### Composable output + +Current state: **mostly met** + +Why: + +- structured JSON exists +- scoped keys are useful +- the runner already thinks in events + +This is one of the strongest areas. + +### Graceful failure + +Current state: **mixed** + +Why: + +- the protocol has the bones +- the user-facing remediation layer is still thin + +## What `vana-com/vana-connect` changes + +Public repo reference: + +- https://github.com/vana-com/vana-connect + +As of March 12, 2026, the public `vana-connect` repo presents itself as a **Vana Connect SDK** focused on app-side session creation, grant handling, and Personal Server data access. + +What that means for this CLI work: + +- it is **not** the same thing as the local connector runner / headless scraping CLI +- but it provides a very useful future boundary + +The likely product split is: + +- **local collection runtime / CLI** + - setup + - connector install + - connect / sync / auth / inspect + - local result and Personal Server population +- **app-facing SDK** + - create sessions + - request scopes + - poll grants + - fetch granted data + +This is good news. It means the CLI does not need to absorb all SDK responsibilities. It can be excellent at collection and local orchestration while the public app SDK handles the developer integration side. + +The key caution: + +- do not let the existence of the SDK muddy the CLI’s first-run story +- the CLI should still optimize around "get my data in locally fast" + +## How to get an MVP out quickly without blowing first impression + +This is the most important practical question. + +### Core principle + +Do **not** try to make the MVP complete. + +Do make the MVP feel: + +- intentional +- trustworthy +- fast +- legible + +That is enough to leave an excellent impression even if deeper features are missing. + +### The fastest credible MVP + +Build a thin product shell over the current primitives. + +That MVP should focus only on: + +- install +- connect one source +- list available sources +- inspect local status +- re-auth / reconnect +- clear machine-readable mode + +Not on: + +- full TUI +- full scheduling +- full multi-environment sync +- advanced Personal Server operations +- long-range blockchain/token use cases + +### MVP qualities that matter disproportionately + +#### 1. One obvious first command + +Examples: + +- `vana-connect setup` +- `vana-connect connect steam` + +The user should not need to learn the internal script model. + +#### 2. One excellent happy path + +The first run should be highly polished for: + +- install if missing +- explain what will be installed +- fetch connector +- run connector +- request credentials only if needed +- summarize what was collected +- say what to do next + +One journey polished deeply beats ten half-finished commands. + +#### 3. One strong machine-readable mode + +Agents need: + +- `--json` +- stable event types +- stable exit codes +- no surprise prompts when non-interactive + +You already have much of this. Preserve it. + +#### 4. One clear trust message + +The first-run copy should make three things explicit: + +- credentials stay local +- what gets installed locally +- where the data is stored + +That alone will materially improve onboarding. + +#### 5. One basic diagnostics surface + +Even for MVP, ship a minimal: + +- `vana-connect status` + +It should answer: + +- installed or not +- connectors present +- sessions present +- last run result +- last error if known + +This is cheap and high leverage. + +## Recommended MVP line + +If speed matters, the target should be: + +### MVP v1 + +- `vana-connect setup` +- `vana-connect list` +- `vana-connect connect ` +- `vana-connect status` +- `vana-connect inspect ` or `vana-connect logs ` +- `--json` +- `--yes` +- `--no-input` + +Backed initially by the existing scripts and runtime. + +### Defer to v1.1+ + +- scheduling +- bulk connect all +- richer auth/session management +- doctor / repair +- richer sync to Personal Server +- interactive/TUI mode + +This gets you to a productized MVP quickly without pretending the system is complete. + +## Confidence: how much can we confidently initialize now? + +Quite a lot, if you are disciplined about scope. + +You can confidently initialize a world-class trajectory now by locking: + +- the first-run journey +- the command grammar +- the mode model for human vs agent +- the trust copy +- the local state visibility model + +You do **not** need to solve every future feature to do that well. + +In other words: + +- you can absolutely ship an MVP soon +- and still strongly influence whether the product later feels `uv`/Vercel-like or forever patched together + +The risk is not moving too early. The risk is exposing raw primitives before the first-run experience is designed. + +## What to keep, what to replace + +Keep: + +- runner event model +- requestInput continuation model +- local state layout +- validator core +- scoped result approach + +Replace or wrap: + +- setup bootstrap UX +- direct script-oriented command surface +- connector discovery UX +- user-facing diagnostics UX +- first-run copy and help model + +## Conclusion + +The current foundation is strong enough to justify confidence, but not strong enough to ship as a polished CLI without a product pass. + +The correct strategy is: + +- treat the current scripts and contracts as the engine +- build a thin but very intentional CLI shell for MVP +- optimize the first-run journey ruthlessly +- keep agent and human support within one command model via output and prompt modes + +That path is both the fastest route to MVP and the best route to a long-term world-class UX. diff --git a/docs/CLI-ONBOARDING-COPY.md b/docs/CLI-ONBOARDING-COPY.md new file mode 100644 index 00000000..6b3c3180 --- /dev/null +++ b/docs/CLI-ONBOARDING-COPY.md @@ -0,0 +1,390 @@ +# `vana-connect` CLI Onboarding Copy + +_As of March 12, 2026_ + +## Purpose + +This document captures the intended onboarding copy for the first version of the `vana connect` CLI. + +It is not final marketing copy. It is product copy for: + +- first-run trust +- install prompts +- auth prompts +- success summaries +- failure messages + +The goal is to make the first experience feel: + +- clear +- fast +- trustworthy +- local-first +- technically serious + +## Tone + +The CLI should sound: + +- calm +- precise +- concise + +It should not sound: + +- cute +- overly corporate +- vague +- overly verbose + +## First-run principles + +Before the CLI installs or writes anything significant, it should explain: + +- what is missing +- what it will install or create +- where it will store it +- that credentials stay local + +After success, it should explain: + +- what data was collected +- whether it was ingested to the Personal Server +- what the next useful action is + +## Canonical first-run example + +Command: + +```bash +vana connect steam +``` + +### If runtime is missing + +Suggested copy: + +```text +Vana Connect needs a local browser runtime before it can connect Steam. + +This will install: +- the connector runner +- a Chromium browser engine +- local runtime files under ~/.dataconnect/ + +Your credentials stay on this machine. Nothing is sent anywhere except the platform you’re connecting to. + +Continue? [Y/n] +``` + +### If `--yes` is present + +Suggested copy: + +```text +Installing local runtime for Vana Connect... +``` + +## Install progress copy + +Suggested copy: + +```text +Installing runner... +Installing browser engine... +Preparing local runtime... +Runtime ready. +``` + +This should stay short. It should not dump raw dependency noise unless the install fails or verbose mode is requested. + +## Connector fetch copy + +### Human mode + +Suggested copy: + +```text +Finding a connector for Steam... +Connector ready. +``` + +### If connector is not found + +Suggested copy: + +```text +No connector is available for Steam yet. +``` + +Optional next step later: + +```text +You can create one with Vana Connect tooling, but that is not part of the default connect flow. +``` + +For MVP, avoid dragging the user into connector creation unless that is the explicit task. + +## Session reuse copy + +### If a saved session may exist + +Suggested copy: + +```text +Found an existing Steam session. Trying that first... +``` + +### If re-auth is needed + +Suggested copy: + +```text +Your saved Steam session needs to be refreshed. +``` + +This should feel like a normal repair path, not a mysterious failure. + +## Auth prompt copy + +### Base trust message + +Suggested copy: + +```text +To connect Steam, Vana Connect will open a local browser session on this machine. +Your credentials stay local. +``` + +### Credentials request + +Suggested copy: + +```text +Steam needs your login details to continue. +Enter the requested fields below. +``` + +### Two-factor request + +Suggested copy: + +```text +Steam asked for a verification code. +Enter the current code to continue. +``` + +### If non-interactive mode blocks prompting + +Suggested copy: + +```text +Steam needs additional input, but prompting is disabled in --no-input mode. +Run again without --no-input, or provide the required inputs explicitly. +``` + +## Collection progress copy + +Human mode should communicate phases, not raw events. + +Suggested copy: + +```text +Connecting to Steam... +Collecting your data... +Still working... +``` + +If counts are known: + +```text +Collecting your data... +Fetched 124 items so far... +``` + +Avoid fake precision. Only show counts when they are meaningful. + +## Personal Server copy + +The CLI should speak in terms of the user’s Personal Server, not internal app architecture. + +### If Personal Server is available + +Suggested copy: + +```text +Personal Server detected. Syncing your Steam data... +``` + +### If Personal Server is unavailable + +Suggested copy: + +```text +No Personal Server is available right now, so your Steam data was saved locally. +``` + +### If ingest fails + +Suggested copy: + +```text +Your Steam data was collected, but syncing to your Personal Server did not complete. +The local result was saved successfully. +``` + +This distinction is critical. The CLI should never blur local success and ingest success. + +## Success copy + +### Best-case success + +Suggested copy: + +```text +Connected Steam. +Collected your Steam data and synced it to your Personal Server. +``` + +### Local-only success + +Suggested copy: + +```text +Connected Steam. +Collected your Steam data and saved it locally. +``` + +### Supporting detail + +After the summary, provide one concise supporting line: + +```text +Next: run `vana connect status` to inspect your current connection state. +``` + +Optional supporting detail: + +```text +Local result: ~/.dataconnect/last-result.json +``` + +Artifact paths should be supporting information, not the main success story. + +## Status copy + +Example shape for `vana connect status`: + +```text +Vana Connect status + +Runtime: installed +Personal Server: available + +Steam: connected, synced +GitHub: connected, local only +Spotify: not connected +``` + +If detail is needed, `--json` should carry the richer structure. + +## Failure copy + +### Install failed + +Suggested copy: + +```text +Vana Connect could not finish installing the local runtime. +Check your network connection and try `vana connect setup` again. +``` + +### Login failed + +Suggested copy: + +```text +Steam login did not complete. +Check your credentials and try again. +``` + +### Connector unavailable + +Suggested copy: + +```text +Vana Connect does not have a Steam connector available right now. +``` + +### Site changed / extraction failed + +Suggested copy: + +```text +Steam connected, but Vana Connect could not collect the expected data. +The site may have changed since this connector was last updated. +``` + +### Personal Server unavailable + +Suggested copy: + +```text +Your data was collected, but no Personal Server is currently available for sync. +``` + +Each failure should ideally include one clear next step, not a wall of debugging detail. + +## Machine-mode guidance + +In `--json` mode, the CLI should not emit this human copy as prose. + +Instead, it should emit structured events and outcomes corresponding to: + +- setup started / completed / failed +- connector resolved / not found +- needs input +- collection started / progressed / completed +- ingest started / completed / failed +- final outcome + +The human copy in this document exists so the default mode feels excellent. Machine mode should express the same lifecycle structurally. + +## Help copy principles + +Help output should stay compact. + +Example shape: + +```text +vana connect Connect one data source +vana connect list List supported sources +vana connect status Show local and Personal Server status +vana connect setup Install or repair local runtime +``` + +Then flags: + +```text +--json Output machine-readable JSON +--no-input Fail instead of prompting for input +--yes Approve safe setup prompts automatically +``` + +## Copy rules to preserve + +- never lead with file paths +- never imply cloud upload when only local save happened +- never imply Personal Server sync when ingest failed or was skipped +- never make credentials handling sound vague +- never over-explain common success paths + +## Conclusion + +If the command model is the skeleton, this copy is the voice. + +For MVP, the copy should make three things feel true immediately: + +- this is safe +- this is working +- I know what happened diff --git a/docs/CLI-ONBOARDING-WORKPLAN.md b/docs/CLI-ONBOARDING-WORKPLAN.md new file mode 100644 index 00000000..1dc7da74 --- /dev/null +++ b/docs/CLI-ONBOARDING-WORKPLAN.md @@ -0,0 +1,282 @@ +# `vana-connect` CLI Onboarding Workplan + +_As of March 12, 2026_ + +## Why this exists + +The current `vana-connect` flow is operationally real, but the experience is still "skill-driven" rather than "product-driven." This document defines how to approach the CLI intentionally so it can serve two audiences well: + +- humans using the terminal directly +- coding agents like Codex and Claude Code + +The goal is not to design two separate products. The goal is to design one command surface with excellent defaults, clear machine-readable behavior, and an onboarding path that reaches first value in under five minutes. + +## What we already have + +These are not small assets. They should be treated as the foundation, not throwaway prototypes. + +### Operational building blocks already present + +- one-shot setup flow in [SETUP.md](/home/tnunamak/code/data-connectors/skills/vana-connect/SETUP.md) +- connector discovery in `skills/vana-connect/scripts/fetch-connector.cjs` +- execution wrapper in `skills/vana-connect/scripts/run-connector.cjs` +- validator in `skills/vana-connect/scripts/validate.cjs` +- scaffold / schema / register scripts for connector creation +- a clear result artifact at `~/.dataconnect/last-result.json` +- a durable local state model in `~/.dataconnect/` +- a documented runner interaction model based on: + - progress events + - `requestInput` + - explicit exit codes + - file-based interactive continuation + +### Product truths already visible in the current design + +- local-first matters +- credentials staying on device matters +- connectors are failure-prone and need diagnostics +- data output needs to be composable +- onboarding success is "data collected and understandable" + +This means the hard problem is no longer "can this work?" It is "what command model and first-run flow best expresses what already works?" + +## The central design problem + +You are not designing a generic scraping CLI. You are designing a local data ingestion runtime for builders. + +That creates a dual-audience requirement: + +- humans need trust, guidance, and visibility +- agents need token-efficient commands, deterministic output, and minimal ambiguity + +The correct response is usually **one interface with two output behaviors**, not two completely separate interfaces. + +## Working thesis + +`vana-connect` should be: + +- SDK-first +- CLI-second +- interactive when useful +- scriptable by default +- local-state aware +- optimized around onboarding and repeat sync + +The CLI should expose the same underlying lifecycle to both humans and agents. The difference should mostly be in: + +- output formatting +- prompting behavior +- verbosity level +- serialization mode + +Not in command taxonomy. + +## First design decision to settle + +Before command names, settle the primary onboarding journey. + +### The ideal first-run journey + +For a new user, the CLI should answer these questions in order: + +1. What is this and why should I trust it? +2. What will it install or write locally? +3. Which sources can it connect? +4. What is the shortest path to getting my first data in? +5. Where did the data go? +6. What do I do next with it? + +If those six questions are answered cleanly, the CLI will feel much more like `uv` or Vercel. + +## The main thoughtwork we need + +This is the minimum useful sequence. Do not jump straight to command implementation. + +### 1. Define the canonical user journeys + +Write the top 3 to 5 journeys in concrete step form. + +The most important ones are: + +- first-time setup via CLI +- connect one source now +- connect all defaults +- inspect what was collected +- re-run / sync later +- recover from auth failure +- add a non-default connector + +Each journey should specify: + +- starting state +- user intent +- happy path +- failure branches +- end state + +This should be the anchor artifact for everything else. + +### 2. Define the audience contract + +Write down exactly what must be true for: + +- humans +- coding agents + +For humans, examples: + +- natural command discovery +- clear progress +- obvious trust boundaries +- helpful next steps + +For agents, examples: + +- machine-readable output +- stable field names +- deterministic exit codes +- low-token responses +- no surprise prompts in automation mode + +This avoids accidental optimization for one audience at the expense of the other. + +### 3. Define the single command grammar + +Only after the user journeys are clear should command design start. + +The command grammar should answer: + +- what are the top-level nouns or verbs? +- what is the default command? +- what is the shortest common invocation? +- where do advanced operations live? + +This is where `gh` and `uv` are good references. + +### 4. Define the mode model + +This is probably the real solution to the human/agent split. + +Instead of two CLIs, define modes such as: + +- default mode: human-friendly +- `--json`: machine-readable +- `--quiet`: minimal chatter +- `--yes`: non-interactive approval +- `--no-input`: fail instead of prompting + +Possibly also: + +- `--agent` if there is meaningful behavior beyond `--json` + +But this should only exist if it changes semantics in a useful, principled way. A dedicated `--agent` flag should not become a dumping ground for "make it weird for LLMs." + +### 5. Define onboarding states and artifacts + +Map the local state explicitly: + +- install state +- auth/session state per connector +- last run state +- result artifact locations +- logs / screenshots / debug artifacts + +Then design commands that expose this state simply. + +If users cannot answer "what has been installed, connected, and collected?" the CLI will not feel trustworthy. + +### 6. Define failure UX before polishing happy paths + +This product lives or dies on graceful failure. + +Document the primary failure classes: + +- missing setup +- connector not found +- login expired +- site changed +- anti-bot / CAPTCHA +- partial collection +- schema validation failure + +For each, define: + +- exit code +- stderr message +- suggested fix +- whether retry is safe + +## Recommended organization + +Yes, use `.md` files. Keep them small, opinionated, and decision-oriented. + +Recommended working set: + +- `skills/vana-connect/CLI-ONBOARDING-WORKPLAN.md` + - this file +- `skills/vana-connect/CLI-USER-JOURNEYS.md` + - concrete step-by-step journeys +- `skills/vana-connect/CLI-AUDIENCE-CONTRACT.md` + - human vs agent requirements +- `skills/vana-connect/CLI-COMMAND-MODEL.md` + - command grammar, modes, flags, output conventions +- `skills/vana-connect/CLI-STATE-MODEL.md` + - local artifacts, sessions, logs, result files +- `skills/vana-connect/CLI-ONBOARDING-COPY.md` + - actual first-run messages, prompts, help text, examples + +Optional later: + +- `skills/vana-connect/CLI-V1-SPEC.md` + - the implementation target after the exploratory docs settle + +## What to avoid + +Avoid these traps: + +- mapping each existing script directly into a public command surface +- designing separate human and agent CLIs +- over-indexing on distant future blockchain/token use cases +- introducing a TUI before proving it helps first-run success +- importing too much Personal Server scope before the connector flow is crisp + +Those are all likely to blur the product before the core loop is excellent. + +## Scope guidance for future context + +Some future context is useful. Too much is distracting. + +Useful now: + +- the Personal Server is the immediate downstream destination +- permissions and sync will likely matter soon +- local-first trust is central +- richer operations may come later + +Not useful for v1 onboarding design: + +- tokenization / monetization flows +- broad blockchain integration +- speculative long-range ecosystem surfaces + +The scraping-transport work Kahtaf is doing is relevant at the SDK/runtime boundary, but probably not at the CLI grammar boundary. Treat it as a future execution backend, not a reason to redesign onboarding. + +## Recommended next sequence + +1. Lock the first-run user journeys. +2. Lock the audience contract for human vs agent. +3. Design one command model that serves both. +4. Write the actual onboarding copy and help text. +5. Only then design the SDK and CLI package layout. + +That order matters. If you skip the user journeys and jump to code structure, the resulting CLI will likely mirror the current scripts instead of the user experience you want. + +## Opinionated conclusion + +The right question is not "what commands should `vana-connect` have?" + +The right first question is: + +**"What exact first-run experience should make both a human and an agent feel: this is obvious, trustworthy, fast, and composable?"** + +Once that is written down concretely, the command model becomes much easier. diff --git a/docs/CLI-SDK-ARCHITECTURE.md b/docs/CLI-SDK-ARCHITECTURE.md new file mode 100644 index 00000000..7a0bbe9a --- /dev/null +++ b/docs/CLI-SDK-ARCHITECTURE.md @@ -0,0 +1,276 @@ +# `vana-connect` CLI / SDK Architecture + +_As of March 12, 2026_ + +## Purpose + +This document defines the intended architecture for the first version of `vana-connect`, with enough structure to support: + +- a strong MVP CLI +- a shared SDK/core +- future runtime backends beyond Playwright +- future Personal Server targets beyond local desktop + +It is intentionally focused on what matters now. + +## Architectural goals + +- one product surface +- one shared core +- one CLI built on top of that core +- runtime abstraction from the start +- simple defaults in v1 + +## Product shape + +`vana-connect` should be treated as one system with layered responsibilities: + +- core types, state, and contracts +- runtime orchestration SDK +- CLI presentation layer + +This can live comfortably in a monorepo later, but the architecture should be clean regardless of repo layout. + +## Recommended package boundaries + +### `connect-core` + +Purpose: + +- shared types +- state models +- outcome models +- event schemas +- config parsing +- error types + +This package should have no scraping-backend dependency. + +### `connect-sdk` + +Purpose: + +- source resolution +- connect lifecycle orchestration +- status inspection +- Personal Server target detection +- ingest orchestration +- runtime selection + +This is the main programmatic surface the CLI should use. + +### `connect-cli` + +Purpose: + +- command grammar +- prompts +- human-readable formatting +- JSON mode output +- log-path surfacing + +The CLI should be thin. It should not own core business logic. + +### Later runtime packages + +Potential future packages: + +- `connect-runtime-playwright` +- `connect-runtime-embrowse` +- `connect-runtime-native-webview` + +These should remain internal or semi-internal at first unless there is a strong reason to expose them publicly. + +## v1 runtime architecture + +### Core principle + +The CLI/SDK should depend on a connector execution interface, not directly on Playwright-specific product semantics. + +### v1 default runtime + +The v1 runtime should be: + +- managed by Vana +- Playwright-based +- isolated by default +- headless-first +- capable of escalating to headed mode when needed + +### Why this is the right default + +- best reproducibility +- best supportability +- easiest first-run experience +- easiest to reason about local state + +## Runtime interface + +The runtime abstraction should answer: + +- can this source run? +- can this source request input? +- can this source escalate to headed mode? +- where are logs and artifacts? +- what profile strategy is active? + +Illustrative shape: + +```ts +interface ConnectorRuntime { + kind: string; + ensureInstalled(): Promise; + isInstalled(): Promise; + run(request: RunRequest): AsyncIterable; + supportsHeaded(): boolean; + supportsManagedProfiles(): boolean; +} +``` + +This is not final API design. It is the architectural boundary that matters. + +## Profile strategy + +This should be treated as a distinct concern from runtime. + +### v1 default + +- Vana-managed isolated profile + +### Why + +- avoids cross-browser lock issues +- avoids corrupting user profiles +- keeps sessions reproducible +- easier to debug and support + +### Future profile strategies + +- existing browser profile +- ephemeral isolated profile +- hardened sandbox profile + +These should be future extension points, not v1 onboarding decisions. + +## Headed vs headless + +### v1 stance + +- default: headless +- fallback: headed when required or explicitly requested + +### Why + +- some login flows require visible interaction +- anti-bot / CAPTCHA flows may need it +- preserving this capability avoids over-constraining the product + +### Product implication + +The CLI should be able to express: + +- running headless +- escalating to headed mode +- failing in `--no-input` mode when headed/manual interaction is required + +## Dependency model + +### v1 recommendation + +Do not make Playwright a user-facing peer dependency. + +The user should not have to reason about: + +- installing Playwright themselves +- matching Playwright versions +- wiring runner dependencies manually + +### Instead + +- Vana manages runtime provisioning +- setup/install flow provisions the required runtime +- CLI and SDK treat the runtime as an implementation detail + +### Why + +- peer dependencies are bad onboarding +- they leak internals into the product surface +- they make the first-run experience feel unfinished + +## Existing system compatibility + +The architecture should preserve room for: + +- current Playwright runner flow +- existing connector scripts +- current local browser-profile/session model +- future Personal Server ingest support + +It should also avoid making future compatibility impossible with: + +- alternative execution backends +- agent-driven browser environments +- hosted scraping environments + +## Personal Server architecture boundary + +The CLI and SDK should treat the Personal Server as a target environment, not a scraping runtime concern. + +That means: + +- collection runtime decides how data is extracted +- ingest layer decides how data is delivered to the active Personal Server +- status layer reports whether ingest succeeded + +This keeps the model clean as Personal Server targets evolve: + +- local desktop-bundled +- self-hosted +- cloud-hosted + +## Logging and artifact strategy + +The system should preserve full logs and artifacts even when primary output is compact. + +### v1 rule + +- compact primary output +- full logs available on disk +- stable paths surfaced when useful + +This should apply to: + +- setup +- connector runs +- validation +- ingest attempts + +This serves both humans and agents without polluting the main UX. + +## What is fixed in v1 + +- managed runtime +- Playwright-backed execution +- isolated profile by default +- headless-first behavior +- headed fallback capability + +## What is intentionally left flexible + +- alternate runtimes +- alternate profile strategies +- local vs cloud Personal Server targets +- future richer interactive surfaces + +## Conclusion + +The right v1 architecture is: + +- TypeScript-based +- core + SDK + CLI layered cleanly +- runtime-abstracted +- managed-runtime by default +- isolated-profile by default +- headless-first with headed fallback + +That gives you the fastest path to a strong MVP without trapping the product in Playwright-specific or desktop-only assumptions. diff --git a/docs/CLI-SDK-UX-RESEARCH.md b/docs/CLI-SDK-UX-RESEARCH.md new file mode 100644 index 00000000..02254e35 --- /dev/null +++ b/docs/CLI-SDK-UX-RESEARCH.md @@ -0,0 +1,345 @@ +# CLI and SDK UX Research for `vana-connect` + +_As of March 12, 2026_ + +## Goal + +This note captures current reference points for designing a strong `vana-connect` CLI around an SDK. The question is not "what can we wrap from `scripts/`?" but "what shape should a best-in-class connector CLI take in 2026?" + +There is no objective industry ranking for "greatest UX of all time," but a small set of tools are repeatedly treated as gold standards for developer experience. The most useful references for `vana-connect` cluster into three groups: + +- General-purpose developer CLIs +- SDK/API design leaders +- Agentic / interactive terminal tools + +## Shortlist + +### Best CLI references + +#### 1. GitHub CLI (`gh`) + +Why it matters: + +- Clear command grammar +- Good balance between interactive use and scripting +- Consistent flags and help output +- Strong machine-readable output via `--json` +- Extensible without becoming confusing + +What to learn: + +- Top-level nouns and verbs are easy to predict +- Commands work both interactively and non-interactively +- The CLI never feels trapped in one mode + +Sources: + +- https://cli.github.com/manual/ +- https://cli.github.com/manual/gh_pr_status +- https://docs.github.com/en/github-cli/github-cli/using-github-cli-extensions + +#### 2. `uv` + +Why it matters: + +- Probably the clearest recent benchmark for fast, low-friction CLI design +- Single-binary feel +- Extremely good defaults +- Minimal conceptual overhead +- Strong "just run the thing" ergonomics + +What to learn: + +- Speed is UX +- Reduce ceremony +- Prefer commands users can guess before reading docs +- Compress common workflows into short, memorable commands + +Sources: + +- https://docs.astral.sh/uv/ +- https://docs.astral.sh/uv/guides/tools/ +- https://docs.astral.sh/uv/concepts/tools/ + +#### 3. Vercel CLI + +Why it matters: + +- Excellent onboarding flow +- Strong local-to-cloud workflow +- Good project linking model +- Very polished auth, env, deploy, and logs UX + +What to learn: + +- Make first run feel guided +- Model explicit project/account linkage +- Make it obvious what context the user is operating in + +Sources: + +- https://vercel.com/docs/cli +- https://vercel.com/docs/cli/link +- https://vercel.com/docs/projects/deploy-from-cli + +#### 4. Fly CLI (`flyctl`) + +Why it matters: + +- Strong app lifecycle UX +- Good examples of scaffolding, provisioning, deploy, inspect, and operate loops + +What to learn: + +- Provide a coherent workflow end-to-end, not just isolated commands +- Treat diagnostics as a first-class feature + +Sources: + +- https://fly.io/docs/flyctl/ +- https://fly.io/docs/flyctl/launch/ +- https://fly.io/docs/launch/deploy/ + +#### 5. Supabase CLI + +Why it matters: + +- Good bridge between local development and hosted state +- Strong `init`, `start`, `link`, migration, and project context patterns + +What to learn: + +- Make local workflows explicit +- Make remote state linkage inspectable and reversible + +Sources: + +- https://supabase.com/docs/guides/cli/getting-started +- https://supabase.com/docs/reference/cli/supabase-init + +#### 6. Doppler CLI + +Why it matters: + +- Not flashy, but very polished in a sensitive category: secrets and environment configuration + +What to learn: + +- Secret handling UX should feel deliberate, safe, and unsurprising +- Local environment commands should be trustworthy and inspectable + +Sources: + +- https://docs.doppler.com/docs/cli +- https://docs.doppler.com/docs/install-cli + +## Best SDK / API DX references + +#### 1. Stripe + +Why it matters: + +- Still the canonical API DX reference +- Great docs, examples, and SDK consistency +- Excellent operational ergonomics: test mode, request IDs, idempotency, webhook tooling + +What to learn: + +- Design the SDK first, not the CLI first +- Make failures diagnosable +- Build for both quickstarts and production reliability +- Support great local testing loops + +Sources: + +- https://docs.stripe.com/api +- https://docs.stripe.com/sdks/server-side +- https://docs.stripe.com/stripe-cli/use-cli + +#### 2. viem + +Why it matters: + +- One of the strongest modern crypto SDK references +- Strong type safety +- Clean composable primitives +- Good separation between transport, client, action, and utility layers + +What to learn: + +- Keep the SDK modular and typed +- Expose small composable primitives, not only giant convenience methods +- Let advanced users build their own workflows from lower-level pieces + +Source: + +- https://viem.sh/docs/getting-started + +#### 3. Bun + +Why it matters: + +- A useful study in reducing conceptual surface area and compressing common tasks into sharp commands + +What to learn: + +- Short commands matter +- Clear defaults matter more than large option surfaces + +Sources: + +- https://bun.sh/docs +- https://bun.sh/docs/pm/bunx + +## Agentic / interactive CLI references + +#### Claude Code and Codex + +These are important references, but this category is still too young and fast-moving to treat as settled "all-time" CLI design. + +Why they still matter: + +- They show how a terminal tool can combine REPL, agent, SDK, and automation surface +- They make state, streaming output, and intervention loops central to the experience + +What to learn: + +- Interactive mode should feel alive and stateful +- Non-interactive mode still needs to exist for automation +- Tool output must remain legible under streaming conditions + +Sources: + +- https://docs.anthropic.com/en/docs/claude-code/cli-reference +- https://docs.anthropic.com/s/claude-code-sdk +- https://platform.openai.com/docs/guides/code-generation +- https://platform.openai.com/docs/docs-mcp + +## Practical ranking for `vana-connect` + +If the goal is to design a best-in-class connector CLI + SDK, the most relevant references are: + +- `gh` for command architecture +- `uv` for speed, defaults, and low-friction execution +- Vercel for onboarding and project/account context +- Stripe for SDK-first design and operational ergonomics +- viem for typed composable SDK structure +- Supabase and Doppler for environment, context, and local/remote workflow patterns + +## Core lessons to carry into `vana-connect` + +### 1. Build the SDK first + +The CLI should be a thin, excellent interface over a stable SDK. This is the Stripe / viem lesson. + +The SDK should likely own: + +- connector discovery +- registry access +- auth/session management +- execution lifecycle +- progress events +- result validation +- machine-readable errors + +The CLI should own: + +- command grammar +- interactive prompts +- formatting +- shell ergonomics +- user guidance + +### 2. Support both human mode and automation mode + +The best modern CLIs do not force a choice between "pretty" and "scriptable." They support both. + +For `vana-connect`, that likely means: + +- human-friendly default output +- `--json` or line-delimited JSON for automation +- explicit exit codes +- predictable stderr/stdout behavior + +### 3. Treat onboarding as a product surface + +The first-run path matters disproportionately. + +Good references here are Vercel, Supabase, and Doppler: + +- authenticate cleanly +- detect missing prerequisites +- explain local state +- avoid surprising writes +- make recovery obvious + +### 4. Favor a small number of excellent commands + +`uv` is the strongest reminder here. Fewer commands, better defaults, less ceremony. + +Bad direction: + +- turning every script into a top-level command + +Better direction: + +- identify the core user journeys +- design commands around those journeys +- keep lower-level escape hatches for advanced users + +### 5. Make diagnostics first-class + +Connector tooling lives in a failure-heavy environment: + +- auth breaks +- websites change +- sessions expire +- anti-bot systems interfere +- schemas drift + +The CLI should therefore make it easy to inspect: + +- current session state +- connector metadata +- last run status +- validation failures +- captured logs and artifacts + +### 6. Interactive UX should be optional, not mandatory + +Agentic CLIs are useful references, but `vana-connect` should not default to a TUI unless the workflow genuinely benefits from it. + +The baseline should probably remain: + +- standard subcommands +- clear progress output +- prompts only when needed + +Then optionally add: + +- richer interactive mode +- watch mode +- guided setup / doctor flows + +## Provisional conclusion + +If we want `vana-connect` to feel elite rather than enterprise-heavy, the strongest design blend is: + +- Stripe for system design and reliability +- viem for SDK shape +- `gh` for command language +- `uv` for speed and simplicity +- Vercel / Supabase for onboarding and context management + +This suggests that `vana-connect` should be: + +- SDK-first +- scriptable by default +- interactive when useful +- fast to first success +- explicit about local state, auth, and artifacts +- designed around a few great workflows rather than a mirror of internal scripts + +## Notes on confidence + +This document is an informed synthesis, not a formal benchmark study. The ranking is partly based on current official docs and partly on broad developer reputation and observable product behavior as of March 12, 2026. diff --git a/docs/CLI-STATE-MODEL.md b/docs/CLI-STATE-MODEL.md new file mode 100644 index 00000000..5fd7c097 --- /dev/null +++ b/docs/CLI-STATE-MODEL.md @@ -0,0 +1,303 @@ +# `vana-connect` CLI State Model + +_As of March 12, 2026_ + +## Purpose + +This document defines the state model that the `vana connect` CLI should expose and reason about. + +The goal is not to document every internal file. The goal is to make the product legible: + +- what is installed? +- what is connected? +- where is data stored? +- is a Personal Server available? +- what happened last? + +This state model is the foundation for: + +- `vana connect status` +- first-run trust +- reconnect behavior +- future local/cloud Personal Server support + +## Product stance + +Users should not need to understand implementation internals to answer basic questions. + +The CLI should make these things obvious: + +- runtime state +- source state +- data state +- Personal Server state + +## State domains + +For MVP, the CLI should think in four domains: + +- runtime +- sources +- data artifacts +- Personal Server target + +## 1. Runtime state + +This answers: can `vana connect` actually run connectors on this machine? + +### Required runtime states + +- `installed` +- `missing` +- `unhealthy` + +### What runtime includes + +- runner binary or runner directory +- browser/runtime dependencies +- expected local runtime files + +### Current foundation + +The existing skill uses `~/.dataconnect/playwright-runner/` and `~/.dataconnect/run-connector.cjs` as key runtime artifacts. + +### CLI expectations + +`vana connect status` should be able to say: + +- runtime installed or not +- path to active runtime +- whether runtime looks healthy enough to execute connectors + +## 2. Source state + +This answers: what is the state of a specific connector/source such as Steam or GitHub? + +### Required source states + +- `unknown` +- `available` +- `installed` +- `session_present` +- `needs_auth` +- `last_run_succeeded` +- `last_run_failed` + +These do not all need to be stored as a single field. They are observable states the CLI should be able to infer or record. + +### What source state should capture + +- whether the source is known in the registry +- whether the connector is present locally +- whether saved session/auth state exists +- whether the source has ever been run successfully +- whether the last known attempt failed + +### Session state + +For MVP, the important question is not “what exact auth backend are we using?” + +It is: + +- can we likely reuse a saved session? +- if not, will the user need to authenticate again? + +### CLI expectations + +`vana connect status` and optional `inspect` should be able to show: + +- source known or not +- connector installed or not +- session likely reusable or not +- last run outcome + +## 3. Data state + +This answers: where did the user’s data actually end up? + +This is one of the most important trust questions. + +### Required data states + +- `none` +- `collected_local` +- `ingested_personal_server` +- `ingest_unavailable` +- `ingest_failed` + +### Why this matters + +The CLI must not blur: + +- “we successfully scraped the data” +- and +- “your Personal Server has it now” + +Those are related but distinct outcomes. + +### Current foundation + +Today the headless flow clearly produces local result artifacts. The desktop app has explicit Personal Server ingestion logic. The CLI must make that distinction explicit instead of pretending they are the same thing. + +### CLI expectations + +After `vana connect `, the user should understand: + +- what data was collected +- whether it is only local +- whether it was ingested successfully +- where to look next + +## 4. Personal Server target state + +This answers: is there an active Personal Server target that the CLI can use? + +### Product principle + +The user should think in terms of: + +- “my Personal Server” + +Not: + +- “some local app on localhost” +- “some cloud instance” +- “some protocol participant” + +Implementation may vary. Product language should stay stable. + +### Required target states for MVP + +- `available` +- `unavailable` +- `unknown` + +### What target state should eventually represent + +- local desktop-bundled target +- self-hosted target +- cloud-hosted target + +For MVP, the CLI does not need a big environment-management surface. It just needs to know enough to say: + +- Personal Server reachable +- Personal Server not reachable +- ingest attempted or not attempted + +### CLI expectations + +`vana connect status` should ideally show: + +- whether a Personal Server target is detected +- whether it appears reachable +- whether recent ingest succeeded + +## Persisted vs derived state + +Not all state needs its own database or manifest. + +For MVP: + +- prefer deriving state from existing files and runtime checks where possible +- record only the minimum additional metadata needed for a good UX + +### Likely derived from existing artifacts + +- runtime installed +- connector installed +- session folder exists +- last result file exists +- Personal Server reachable + +### Likely worth recording explicitly + +- last run outcome per source +- last ingest outcome per source +- last error summary per source +- timestamps for last successful collection and ingest + +This can be very simple at first. + +## Suggested MVP state record + +If the CLI needs its own lightweight state file, it should be small and outcome-oriented. + +Possible location: + +- under `~/.dataconnect/` + +Possible shape: + +```json +{ + "version": 1, + "sources": { + "steam": { + "connectorInstalled": true, + "sessionPresent": true, + "lastRunAt": "2026-03-12T12:00:00Z", + "lastRunOutcome": "connected_local_only", + "lastIngestAt": null, + "lastIngestOutcome": "not_attempted", + "lastError": null + } + } +} +``` + +This is illustrative, not final. + +## What `status` should summarize in MVP + +At minimum, `vana connect status` should answer: + +- is runtime installed? +- is a Personal Server target available? +- what sources are installed locally? +- which sources appear to have saved sessions? +- what was the last outcome for each source? +- is each source local-only or ingested? + +This command should aim to answer the user’s practical question: + +**“Can I trust that my data is connected and usable right now?”** + +## How this supports future cloud support + +This state model is intentionally environment-agnostic. + +That matters because future Personal Server targets may be: + +- local +- self-hosted +- cloud-hosted + +If the CLI is built around: + +- target availability +- target reachability +- ingest outcome + +then it can support those futures without changing the user’s mental model. + +## What not to do + +Avoid these mistakes: + +- surfacing raw internal file structure as the product state model +- treating “collected locally” and “ingested” as the same outcome +- forcing users to know which runtime implementation is active +- inventing a large config or environment system before MVP needs it + +## Conclusion + +The MVP state model should stay small and explicit. + +The CLI needs to make four things legible: + +- runtime health +- source connection state +- data location/outcome +- Personal Server availability + +If those are clear, the product will feel much more trustworthy and much less improvised. diff --git a/docs/CLI-USER-JOURNEYS.md b/docs/CLI-USER-JOURNEYS.md new file mode 100644 index 00000000..6efef068 --- /dev/null +++ b/docs/CLI-USER-JOURNEYS.md @@ -0,0 +1,266 @@ +# `vana-connect` CLI User Journeys + +_As of March 12, 2026_ + +## Purpose + +This document defines the canonical user journeys that should shape the first version of the `vana connect` CLI. + +The goal is not to cover every future capability. The goal is to make the first impression feel: + +- fast +- trustworthy +- obvious +- composable + +These journeys should drive command design, output modes, and sequencing. + +## Product stance + +For MVP: + +- the canonical command form is `vana connect ...` +- the canonical first command is `vana connect ` +- `setup` exists, but should not be the primary onboarding path +- the CLI should auto-detect missing runtime/setup during `connect` +- the ideal success state is data synced into the Personal Server +- the acceptable MVP success state is data collected locally with a clear status and next step + +## Journey 1: First-time connect of one source + +This is the most important journey in the product. It should receive disproportionate design effort. + +### Scenario + +The user has heard about Vana Connect and wants to connect one source quickly from the terminal. + +Example: + +```bash +vana connect steam +``` + +### Starting state + +- `vana connect` CLI is installed or otherwise runnable +- local runtime may or may not be installed +- no assumption that Data Connect desktop is installed +- user may or may not have a Personal Server running + +### Happy path + +1. User runs `vana connect steam` +2. CLI checks local prerequisites +3. If runtime is missing, CLI explains what it will install locally and asks once +4. CLI installs or verifies runtime automatically +5. CLI fetches the Steam connector +6. CLI checks for existing session state +7. CLI runs the connector +8. If credentials or 2FA are needed, CLI asks cleanly +9. CLI collects data +10. If Personal Server is available, CLI ingests data +11. CLI prints a human summary of what was collected +12. CLI prints the next useful step + +### Success state + +Preferred: + +- source is connected +- data is stored in the Personal Server +- user understands what was collected + +Acceptable MVP fallback: + +- source is connected +- data is stored locally +- user understands where it is and how to use it next + +### What makes this journey feel world-class + +- user does not need to run `setup` manually +- trust boundaries are explicit +- install actions are obvious before they happen +- auth prompts are minimal and legible +- success is summarized in user terms, not file terms +- next step is obvious + +### Failure branches that must be designed + +- runtime install fails +- connector does not exist +- login fails +- site flow changed +- Personal Server unavailable +- partial data collected + +## Journey 2: Inspect current status + +This is the most important trust and recovery journey after first run. + +### Scenario + +The user wants to know what is installed, connected, and usable. + +Example: + +```bash +vana connect status +``` + +### Starting state + +- runtime may or may not be installed +- some connectors may be installed +- some sessions may exist +- some results may only be local +- Personal Server may or may not be available + +### Happy path + +The command should answer, at minimum: + +- is runtime installed? +- is Personal Server reachable? +- which connectors are installed? +- which connectors have saved auth/session state? +- what was the last successful run per source? +- was data only collected locally or also ingested? + +### Success state + +The user can tell, without reading docs: + +- whether the system is healthy +- whether a source is connected +- whether data is already usable +- what needs attention + +### Why this matters + +Without this command, the product will feel fragile even if the underlying runtime is good. + +## Journey 3: Reconnect or re-auth a source + +### Scenario + +A source was connected before, but the session expired or sync failed. + +Example: + +```bash +vana connect steam +``` + +or later: + +```bash +vana connect reconnect steam +``` + +### Starting state + +- connector is already installed +- cached session may exist but be invalid +- user wants the shortest path back to healthy + +### Happy path + +1. CLI detects installed connector and existing state +2. CLI attempts reuse of saved session +3. If session is invalid, CLI explains that re-auth is needed +4. CLI prompts only for the missing auth input +5. CLI reruns collection +6. CLI reports the new success state + +### Success state + +- user is back to a working connected state quickly +- re-auth feels like repair, not a full restart + +### Design note + +For MVP, this can be the same command as `vana connect `. It does not need a separate noun on day one if the behavior is clear. + +## Journey 4: Discover what can be connected + +### Scenario + +The user wants to see which sources are supported. + +Example: + +```bash +vana connect list +``` + +### Starting state + +- user may know one source or none + +### Happy path + +The command shows: + +- supported connectors +- whether each is installed locally +- whether each has been connected before +- possibly a small “recommended/common” grouping + +### Success state + +- user can choose what to connect next +- discovery feels intentional rather than hidden in docs + +### Design note + +For MVP, this can be simple. It does not need marketplace-level polish, but it does need to exist. + +## Journey 5: Use the data after connection + +### Scenario + +The user has connected a source and wants to know what to do next. + +### Starting state + +- data has been collected locally or ingested to Personal Server + +### Happy path + +The CLI should make one of these next states obvious: + +- data is available in the Personal Server +- data is available in a local result artifact +- data can be inspected or exported + +### Success state + +The user feels that connection was not the end goal; it unlocked an immediate next action. + +### Design note + +For MVP, a short post-success hint is enough. This does not require a large feature surface yet. + +## What is explicitly not a core MVP journey + +These matter later, but should not dominate v1 design: + +- connect every possible source automatically +- scheduling and background sync +- full TUI experience +- multi-machine sync +- advanced app permission workflows +- blockchain / token use cases + +Those are important future surfaces, but they should not dilute the first-run experience. + +## MVP priority order + +1. First-time connect of one source +2. Inspect current status +3. Reconnect / re-auth +4. Discover available sources +5. Post-connect next step + +If the first two are excellent, the MVP can leave a very strong impression even if the rest are still thin. diff --git a/docs/CLI-UX-QUALITY-BAR.md b/docs/CLI-UX-QUALITY-BAR.md new file mode 100644 index 00000000..4d8054ef --- /dev/null +++ b/docs/CLI-UX-QUALITY-BAR.md @@ -0,0 +1,185 @@ +# `vana-connect` CLI UX Quality Bar + +_As of March 12, 2026_ + +## Purpose + +This document defines what “beautiful” should mean for the `vana connect` CLI. + +The goal is to make beauty actionable. For this product, beauty should not mean decoration or terminal spectacle. It should mean: + +- clarity +- restraint +- confidence +- strong pacing +- high signal-to-noise + +## Core principle + +A beautiful CLI feels: + +- obvious to start +- calm while running +- precise when it fails +- satisfying when it succeeds + +The best beauty benchmark is not “does this look flashy?” + +It is: + +**“Does this feel inevitable, polished, and lighter than it should?”** + +## What beauty means here + +### 1. Command beauty + +Commands should feel guessable. + +Good: + +- `vana connect steam` +- `vana connect status` +- `vana connect list` + +Bad: + +- commands shaped around internal scripts +- commands that require reading docs before first use + +### 2. Output beauty + +Output should have: + +- clean hierarchy +- short line lengths +- obvious state transitions +- minimal clutter + +The user should be able to scan and understand: + +- what is happening +- whether it succeeded +- what to do next + +### 3. Copy beauty + +Copy should be: + +- concise +- technically serious +- specific + +It should avoid: + +- filler +- hype +- vague reassurance +- “friendly” noise + +### 4. Progress beauty + +Progress should feel smooth, not chatty. + +Good progress: + +- meaningful step changes +- occasional counts when they matter +- calm updates during long operations + +Bad progress: + +- constant noisy logging +- fake precision +- overwhelming dependency output + +### 5. Success beauty + +A successful run should feel like an outcome, not a file write. + +Good: + +- “Connected Steam. Collected your Steam data and synced it to your Personal Server.” + +Bad: + +- “Saved result to ~/.dataconnect/last-result.json” + +Artifact paths are supporting detail, not the story. + +### 6. Failure beauty + +A failure should feel understandable and recoverable. + +Good failure: + +- one-sentence problem statement +- one useful next step +- enough specificity to trust the message + +Bad failure: + +- wall of raw subprocess output +- vague “something went wrong” +- making the user infer whether retry is safe + +### 7. Machine beauty + +`--json` mode should also feel beautiful. + +For machine mode, beauty means: + +- stable event names +- stable field names +- no clutter +- no decorative output +- strong predictability + +This matters because coding agents are users too. + +## What beauty does not require + +Not required: + +- heavy ANSI art +- custom TUI chrome +- animations +- excessive color +- terminal gimmicks + +These can easily reduce polish rather than increase it. + +## Implementation filters + +Every command and output path should be evaluated against these questions: + +- Is this the shortest obvious command? +- Can a user scan this in two seconds? +- Is any line here doing unnecessary work? +- Does the success message describe an outcome rather than an artifact? +- Does this message preserve trust? +- Would this still feel clean on the 100th use? + +## Beauty standards for v1 + +For v1, the CLI should meet these standards: + +- first run feels obvious +- install prompts are crisp +- progress is calm +- success is outcome-shaped +- local-only vs ingested is elegant and unmistakable +- status is compact and useful +- `--json` mode is clean and deterministic + +## Conclusion + +For `vana connect`, beauty is a valid requirement. + +It should be understood as: + +- taste +- compression +- confidence +- legibility + +Not terminal theatrics. diff --git a/docs/CLI-UX-SIMULATION.md b/docs/CLI-UX-SIMULATION.md new file mode 100644 index 00000000..753725f3 --- /dev/null +++ b/docs/CLI-UX-SIMULATION.md @@ -0,0 +1,350 @@ +# `vana-connect` CLI UX Simulation + +_As of March 12, 2026_ + +## Purpose + +This is a lightweight internal simulation pass for the `vana connect` CLI. + +It exists to pressure-test: + +- the first-run flow +- the trust model +- the human vs agent mode split +- the distinction between local collection and Personal Server ingest + +This is not a polished prototype. It is a fast decision tool before locking the v1 spec. + +## What we are testing + +The main questions are: + +- does the canonical first command feel right? +- does setup inline cleanly? +- does success feel meaningful? +- is local-only vs ingested unmistakable? +- does `--json` mode feel agent-safe? + +## Transcript 1: First-time human run, happy path with Personal Server available + +Command: + +```bash +vana connect steam +``` + +Output: + +```text +Vana Connect needs a local browser runtime before it can connect Steam. + +This will install: +- the connector runner +- a Chromium browser engine +- local runtime files under ~/.dataconnect/ + +Your credentials stay on this machine. Nothing is sent anywhere except Steam itself. + +Continue? [Y/n] y + +Installing runner... +Installing browser engine... +Preparing local runtime... +Runtime ready. + +Finding a connector for Steam... +Connector ready. + +Found an existing Steam session. Trying that first... + +Connecting to Steam... +Collecting your data... + +Personal Server detected. Syncing your Steam data... + +Connected Steam. +Collected your Steam data and synced it to your Personal Server. + +Next: run `vana connect status` to inspect your current connection state. +``` + +Assessment: + +- strong start +- install copy feels clear +- outcome is meaningful +- likely good enough for MVP + +Main risk: + +- “Found an existing Steam session” should only appear when true + +## Transcript 2: First-time human run, no Personal Server available + +Command: + +```bash +vana connect steam +``` + +Output: + +```text +Finding a connector for Steam... +Connector ready. + +Connecting to Steam... +Collecting your data... + +No Personal Server is available right now, so your Steam data was saved locally. + +Connected Steam. +Collected your Steam data and saved it locally. + +Next: run `vana connect status` to inspect your current connection state. +Local result: ~/.dataconnect/last-result.json +``` + +Assessment: + +- the distinction between local and ingested is clear +- still feels like success, which is important + +Main risk: + +- if this happens too often, users may feel they only got a partial product + +Implication: + +- if Personal Server availability is part of the intended default experience, the CLI should probably attempt to detect and message it very early + +## Transcript 3: Human run requiring credentials + +Command: + +```bash +vana connect steam +``` + +Output: + +```text +Finding a connector for Steam... +Connector ready. + +To connect Steam, Vana Connect will open a local browser session on this machine. +Your credentials stay local. + +Steam needs your login details to continue. +Enter the requested fields below. + +Email or username: alice@example.com +Password: ******** + +Collecting your data... + +Connected Steam. +Collected your Steam data and saved it locally. +``` + +Assessment: + +- good enough for MVP +- trust copy is doing useful work + +Main risk: + +- if the connector actually uses a file-based continuation path under the hood, the interactive experience needs to hide that complexity unless it fails + +## Transcript 4: Human run with 2FA + +Command: + +```bash +vana connect steam +``` + +Output: + +```text +Finding a connector for Steam... +Connector ready. + +To connect Steam, Vana Connect will open a local browser session on this machine. +Your credentials stay local. + +Steam needs your login details to continue. +Enter the requested fields below. + +Email or username: alice@example.com +Password: ******** + +Steam asked for a verification code. +Enter the current code to continue. + +Verification code: 123456 + +Collecting your data... + +Connected Steam. +Collected your Steam data and saved it locally. +``` + +Assessment: + +- simple and legible + +Main risk: + +- time-sensitive codes mean the actual implementation must not introduce lag between prompt and submission + +## Transcript 5: Agent run in JSON mode, success with local-only result + +Command: + +```bash +vana connect steam --json --no-input +``` + +Output: + +```json +{"type":"setup-check","runtime":"installed"} +{"type":"connector-resolved","source":"steam","connectorPath":"/home/user/.dataconnect/connectors/valve/steam-playwright.js"} +{"type":"run-started","source":"steam"} +{"type":"collection-complete","source":"steam","resultPath":"/home/user/.dataconnect/last-result.json"} +{"type":"ingest-skipped","reason":"personal_server_unavailable"} +{"type":"outcome","status":"connected_local_only","source":"steam","resultPath":"/home/user/.dataconnect/last-result.json"} +``` + +Assessment: + +- this is the right general shape +- concise and deterministic + +Main risk: + +- event names and field names must be stabilized in the spec, not invented per command + +## Transcript 6: Agent run in JSON mode, input required + +Command: + +```bash +vana connect steam --json --no-input +``` + +Output: + +```json +{"type":"setup-check","runtime":"installed"} +{"type":"connector-resolved","source":"steam","connectorPath":"/home/user/.dataconnect/connectors/valve/steam-playwright.js"} +{"type":"needs-input","source":"steam","fields":["username","password"],"message":"Steam needs credentials"} +{"type":"outcome","status":"needs_input","source":"steam"} +``` + +Assessment: + +- good for agents +- avoids hanging + +Main risk: + +- if the underlying runtime produces richer field schemas, the CLI should preserve them in machine mode rather than collapsing too much + +## Transcript 7: Status command + +Command: + +```bash +vana connect status +``` + +Output: + +```text +Vana Connect status + +Runtime: installed +Personal Server: available + +Steam: connected, synced +GitHub: connected, local only +Spotify: not connected +``` + +Assessment: + +- compact and useful +- enough for MVP if backed by real state + +Main risk: + +- status can easily become misleading if state is inferred too loosely + +Implication: + +- the implementation should prefer conservative status language over pretending certainty + +## Transcript 8: Setup failure + +Command: + +```bash +vana connect steam +``` + +Output: + +```text +Vana Connect could not finish installing the local runtime. +Check your network connection and try `vana connect setup` again. +``` + +Assessment: + +- clean fallback +- preserves `setup` as repair path + +Main risk: + +- if the real failure is more specific, the CLI should include a short cause line when available + +## Decisions after simulation + +The simulation supports these decisions: + +- `vana connect ` is the right canonical first command +- inline setup is better than forcing `setup` first +- the product must distinguish: + - connected and ingested + - connected local only +- `--json --no-input` is enough for the core agent mode in MVP +- `status` is essential for trust and recovery + +## Small adjustments suggested by the simulation + +### 1. Make Personal Server state visible early + +The user should not be surprised at the end to learn that their data is only local. + +The CLI should likely detect target availability during connect and be ready to message it clearly. + +### 2. Stabilize machine event names in the v1 spec + +The JSON transcripts feel right, but the exact event contract needs to be locked. + +### 3. Keep human output extremely compact + +Anything more verbose than these transcripts will likely reduce the sense of polish. + +## Conclusion + +The current design direction survives a lightweight transcript test. + +It is now reasonable to write the v1 spec with confidence, focusing on: + +- command behavior +- event contract +- outcome states +- state inspection rules diff --git a/docs/CLI-V1-SPEC.md b/docs/CLI-V1-SPEC.md new file mode 100644 index 00000000..a74b20e1 --- /dev/null +++ b/docs/CLI-V1-SPEC.md @@ -0,0 +1,424 @@ +# `vana-connect` CLI v1 Spec + +_As of March 12, 2026_ + +## Purpose + +This document defines the implementation target for the first version of the `vana connect` CLI. + +It is intended to be: + +- small enough to ship quickly +- strong enough to leave an excellent first impression +- explicit enough to guide implementation decisions + +## Product goal + +Ship an MVP CLI that feels intentional and trustworthy for both: + +- humans using the terminal directly +- coding agents using machine-readable mode + +The v1 CLI does not need to feel broad or mature. It does need to feel: + +- fast to first value +- clear about what happened +- clear about where data went +- reliable enough to trust + +## Product stance + +### Core command family + +The CLI command family is: + +```bash +vana connect ... +``` + +### Canonical first command + +The canonical first command is: + +```bash +vana connect +``` + +Example: + +```bash +vana connect steam +``` + +### Core philosophy + +- one command model +- one underlying lifecycle +- human-friendly default mode +- machine-readable mode via flags + +## v1 command surface + +The public v1 commands are: + +- `vana connect ` +- `vana connect list` +- `vana connect status` +- `vana connect setup` + +Optional if cheap: + +- `vana connect inspect ` + +No additional top-level command surfaces are part of v1. + +## v1 flags + +Required: + +- `--json` +- `--no-input` +- `--yes` + +Optional if cheap: + +- `--quiet` + +## Command behavior + +### `vana connect ` + +#### Goal + +Connect one source end-to-end with the shortest possible path to value. + +#### Required behavior + +1. Check runtime availability. +2. If runtime is missing: + - explain what will be installed + - ask for confirmation unless `--yes` is present + - perform setup inline +3. Resolve the requested source connector. +4. Check for reusable saved session/auth state. +5. Run collection. +6. Prompt for input if required, unless `--no-input` is present. +7. Detect whether a Personal Server target is available. +8. If available, attempt ingest. +9. Print a concise outcome summary. + +#### Human-mode output requirements + +Must communicate: + +- what is being installed, if anything +- what source is being connected +- whether an existing session is being reused +- whether data was collected +- whether data was ingested or saved locally only +- what to do next + +#### Machine-mode requirements + +Must emit structured events and a final outcome object. + +#### Success outcomes + +- `connected_and_ingested` +- `connected_local_only` + +#### Recoverable outcomes + +- `needs_input` +- `setup_required` +- `personal_server_unavailable` +- `auth_failed` +- `connector_unavailable` +- `ingest_failed` + +#### Hard failure outcomes + +- `runtime_error` +- `invalid_connector` +- `unexpected_internal_error` + +### `vana connect list` + +#### Goal + +Show the sources the user can connect. + +#### Required behavior + +- list supported sources +- indicate whether each source is installed locally when known +- stay compact in human mode +- return structured output in `--json` mode + +### `vana connect status` + +#### Goal + +Answer the question: + +**“Is my setup healthy, and is my data connected and usable?”** + +#### Required behavior + +Report at minimum: + +- runtime installed or not +- Personal Server target available/unavailable/unknown +- installed sources +- likely session presence per source +- last known outcome per source +- local-only vs ingested state per source when known + +#### Output requirement + +Human mode should be compact and summary-first. + +Machine mode should be structured and stable. + +### `vana connect setup` + +#### Goal + +Provide explicit bootstrap and repair. + +#### Required behavior + +- install runtime prerequisites +- verify key runtime artifacts exist +- summarize what was installed +- exit cleanly if already healthy + +#### Product role + +This command exists for: + +- explicit install +- repair +- CI/bootstrap + +It is not the intended first-run entrypoint for humans. + +## Mode behavior + +### Default mode + +- human-readable +- concise +- prompts allowed +- no raw JSON + +### `--json` + +- structured output only +- no decorative formatting +- stable event and outcome objects + +### `--no-input` + +- do not prompt +- fail with a structured `needs_input` outcome if input is required + +### `--yes` + +- auto-approve safe setup/install prompts + +### `--quiet` + +- reduce non-essential human chatter +- keep warnings and errors + +## State model requirements + +The CLI must reason about four state domains: + +- runtime +- sources +- data +- Personal Server target + +### Runtime states + +- `installed` +- `missing` +- `unhealthy` + +### Source states + +- `unknown` +- `available` +- `installed` +- `session_present` +- `needs_auth` +- `last_run_succeeded` +- `last_run_failed` + +### Data states + +- `none` +- `collected_local` +- `ingested_personal_server` +- `ingest_unavailable` +- `ingest_failed` + +### Personal Server target states + +- `available` +- `unavailable` +- `unknown` + +## Data-location rule + +The CLI must never blur: + +- successful local collection +- successful Personal Server ingest + +This distinction must appear in: + +- human success copy +- `status` +- `--json` output + +## Personal Server model + +In v1, the CLI should speak in terms of: + +- the user’s Personal Server + +It should not force users to reason about: + +- desktop app internals +- localhost implementation details +- cloud-vs-local backend distinctions + +The implementation may detect: + +- local target +- future self-hosted target +- future cloud-hosted target + +But that is an implementation concern, not the user-facing model. + +## Machine-readable event contract + +v1 should formalize a small event set instead of exposing arbitrary internal messages. + +### Required event categories + +- setup +- connector resolution +- run lifecycle +- input required +- collection result +- ingest result +- final outcome + +### Example event shapes + +Illustrative only: + +```json +{"type":"setup-check","runtime":"installed"} +{"type":"connector-resolved","source":"steam","connectorPath":"..."} +{"type":"run-started","source":"steam"} +{"type":"needs-input","source":"steam","fields":["username","password"]} +{"type":"collection-complete","source":"steam","resultPath":"..."} +{"type":"ingest-complete","source":"steam","target":"personal_server"} +{"type":"outcome","status":"connected_and_ingested","source":"steam"} +``` + +The exact field set should be locked during implementation and kept intentionally small. + +## Copy requirements + +The CLI copy must: + +- explain installs before performing them +- state that credentials stay local +- summarize outcomes in user terms +- keep file paths as supporting detail +- clearly distinguish local-only vs ingested outcomes + +The copy should stay: + +- calm +- concise +- technically serious + +## Existing foundations to reuse + +The v1 CLI should build on the current primitives rather than replace them outright. + +Reuse: + +- setup bootstrap behavior +- connector fetch behavior +- runner lifecycle +- request-input continuation model +- local state directory +- validator core where helpful + +Wrap: + +- raw script names +- raw bootstrap UX +- raw helper output + +## MVP non-goals + +These are explicitly not required for v1: + +- connect-all as the default onboarding flow +- scheduling or daemonized background sync +- TUI-first interaction +- large configuration trees +- advanced Personal Server environment management +- full cloud orchestration UX +- blockchain / token use cases + +## Implementation priority + +Build in this order: + +1. `vana connect ` +2. `vana connect status` +3. `vana connect list` +4. `vana connect setup` +5. optional `inspect` + +This order matches user impact. + +## Acceptance criteria + +### Human acceptance + +v1 succeeds if a human can: + +- run `vana connect steam` +- get setup handled inline if missing +- understand what was installed +- understand what data was collected +- understand whether it was ingested or only saved locally +- run `vana connect status` later and understand their current state + +### Agent acceptance + +v1 succeeds if an agent can: + +- run `vana connect steam --json --no-input` +- detect whether setup is missing +- detect whether input is required +- detect whether collection succeeded +- detect whether ingest succeeded +- distinguish local-only from ingested outcomes + +## Conclusion + +v1 should be intentionally small and disproportionately focused on first-run quality. + +If the CLI can connect one source beautifully, report status honestly, and serve both humans and agents through one stable command model, it will be a strong MVP. diff --git a/package.json b/package.json index 570b6d6b..e2215655 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,12 @@ "publishConfig": { "access": "public" }, + "bin": { + "vana": "./dist/cli/bin.js" + }, "files": [ - "dist" + "dist", + "runtime-assets" ], "exports": { ".": { @@ -35,11 +39,24 @@ "./core": { "types": "./dist/core/index.d.ts", "import": "./dist/core/index.js" + }, + "./runtime": { + "types": "./dist/runtime/index.d.ts", + "import": "./dist/runtime/index.js" + }, + "./connectors": { + "types": "./dist/connectors/index.d.ts", + "import": "./dist/connectors/index.js" + }, + "./cli": { + "types": "./dist/cli/main.d.ts", + "import": "./dist/cli/main.js" } }, "scripts": { "build": "tsc --build", "clean": "tsc --build --clean", + "cli": "node dist/cli/bin.js", "skills:sync": "node scripts/sync-skills.js", "test": "vitest run", "test:watch": "vitest", @@ -64,6 +81,11 @@ "engines": { "node": ">=20.0.0" }, + "dependencies": { + "@inquirer/prompts": "^8.3.0", + "commander": "^14.0.3", + "zod": "^4.3.6" + }, "peerDependencies": { "viem": "^2.0.0", "react": ">=18.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e21446dd..49159d0e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,16 @@ settings: importers: .: + dependencies: + "@inquirer/prompts": + specifier: ^8.3.0 + version: 8.3.0(@types/node@25.2.2) + commander: + specifier: ^14.0.3 + version: 14.0.3 + zod: + specifier: ^4.3.6 + version: 4.3.6 devDependencies: "@commitlint/cli": specifier: ^20.4.1 @@ -1558,6 +1568,25 @@ packages: } engines: { node: ">=18" } + "@inquirer/ansi@2.0.3": + resolution: + { + integrity: sha512-g44zhR3NIKVs0zUesa4iMzExmZpLUdTLRMCStqX3GE5NT6VkPcxQGJ+uC8tDgBUC/vB1rUhUd55cOf++4NZcmw==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + + "@inquirer/checkbox@5.1.0": + resolution: + { + integrity: sha512-/HjF1LN0a1h4/OFsbGKHNDtWICFU/dqXCdym719HFTyJo9IG7Otr+ziGWc9S0iQuohRZllh+WprSgd5UW5Fw0g==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + "@inquirer/confirm@5.1.21": resolution: { @@ -1570,6 +1599,18 @@ packages: "@types/node": optional: true + "@inquirer/confirm@6.0.8": + resolution: + { + integrity: sha512-Di6dgmiZ9xCSUxWUReWTqDtbhXCuG2MQm2xmgSAIruzQzBqNf49b8E07/vbCYY506kDe8BiwJbegXweG8M1klw==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + "@inquirer/core@10.3.2": resolution: { @@ -1582,6 +1623,54 @@ packages: "@types/node": optional: true + "@inquirer/core@11.1.5": + resolution: + { + integrity: sha512-QQPAX+lka8GyLcZ7u7Nb1h6q72iZ/oy0blilC3IB2nSt1Qqxp7akt94Jqhi/DzARuN3Eo9QwJRvtl4tmVe4T5A==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + + "@inquirer/editor@5.0.8": + resolution: + { + integrity: sha512-sLcpbb9B3XqUEGrj1N66KwhDhEckzZ4nI/W6SvLXyBX8Wic3LDLENlWRvkOGpCPoserabe+MxQkpiMoI8irvyA==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + + "@inquirer/expand@5.0.8": + resolution: + { + integrity: sha512-QieW3F1prNw3j+hxO7/NKkG1pk3oz7pOB6+5Upwu3OIwADfPX0oZVppsqlL+Vl/uBHHDSOBY0BirLctLnXwGGg==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + + "@inquirer/external-editor@2.0.3": + resolution: + { + integrity: sha512-LgyI7Agbda74/cL5MvA88iDpvdXI2KuMBCGRkbCl2Dg1vzHeOgs+s0SDcXV7b+WZJrv2+ERpWSM65Fpi9VfY3w==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + "@inquirer/figures@1.0.15": resolution: { @@ -1589,6 +1678,97 @@ packages: } engines: { node: ">=18" } + "@inquirer/figures@2.0.3": + resolution: + { + integrity: sha512-y09iGt3JKoOCBQ3w4YrSJdokcD8ciSlMIWsD+auPu+OZpfxLuyz+gICAQ6GCBOmJJt4KEQGHuZSVff2jiNOy7g==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + + "@inquirer/input@5.0.8": + resolution: + { + integrity: sha512-p0IJslw0AmedLEkOU+yrEX3Aj2RTpQq7ZOf8nc1DIhjzaxRWrrgeuE5Kyh39fVRgtcACaMXx/9WNo8+GjgBOfw==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + + "@inquirer/number@4.0.8": + resolution: + { + integrity: sha512-uGLiQah9A0F9UIvJBX52m0CnqtLaym0WpT9V4YZrjZ+YRDKZdwwoEPz06N6w8ChE2lrnsdyhY9sL+Y690Kh9gQ==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + + "@inquirer/password@5.0.8": + resolution: + { + integrity: sha512-zt1sF4lYLdvPqvmvHdmjOzuUUjuCQ897pdUCO8RbXMUDKXJTTyOQgtn23le+jwcb+MpHl3VAFvzIdxRAf6aPlA==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + + "@inquirer/prompts@8.3.0": + resolution: + { + integrity: sha512-JAj66kjdH/F1+B7LCigjARbwstt3SNUOSzMdjpsvwJmzunK88gJeXmcm95L9nw1KynvFVuY4SzXh/3Y0lvtgSg==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + + "@inquirer/rawlist@5.2.4": + resolution: + { + integrity: sha512-fTuJ5Cq9W286isLxwj6GGyfTjx1Zdk4qppVEPexFuA6yioCCXS4V1zfKroQqw7QdbDPN73xs2DiIAlo55+kBqg==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + + "@inquirer/search@4.1.4": + resolution: + { + integrity: sha512-9yPTxq7LPmYjrGn3DRuaPuPbmC6u3fiWcsE9ggfLcdgO/ICHYgxq7mEy1yJ39brVvgXhtOtvDVjDh9slJxE4LQ==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + + "@inquirer/select@5.1.0": + resolution: + { + integrity: sha512-OyYbKnchS1u+zRe14LpYrN8S0wH1vD0p2yKISvSsJdH2TpI87fh4eZdWnpdbrGauCRWDph3NwxRmM4Pcm/hx1Q==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + "@inquirer/type@3.0.10": resolution: { @@ -1601,6 +1781,18 @@ packages: "@types/node": optional: true + "@inquirer/type@4.0.3": + resolution: + { + integrity: sha512-cKZN7qcXOpj1h+1eTTcGDVLaBIHNMT1Rz9JqJP5MnEJ0JhgVWllx7H/tahUp5YEK1qaByH2Itb8wLG/iScD5kw==, + } + engines: { node: ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" } + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + "@isaacs/balanced-match@4.0.1": resolution: { @@ -5664,6 +5856,12 @@ packages: } engines: { node: ">=10" } + chardet@2.1.1: + resolution: + { + integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==, + } + charenc@0.0.2: resolution: { @@ -6871,12 +7069,30 @@ packages: integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==, } + fast-string-truncated-width@3.0.3: + resolution: + { + integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==, + } + + fast-string-width@3.0.2: + resolution: + { + integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==, + } + fast-uri@3.1.0: resolution: { integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==, } + fast-wrap-ansi@0.2.0: + resolution: + { + integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==, + } + fastq@1.20.1: resolution: { @@ -8619,6 +8835,13 @@ packages: } engines: { node: ^18.17.0 || >=20.5.0 } + mute-stream@3.0.0: + resolution: + { + integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==, + } + engines: { node: ^20.17.0 || >=22.9.0 } + mz@2.7.0: resolution: { @@ -12761,6 +12984,17 @@ snapshots: "@inquirer/ansi@1.0.2": {} + "@inquirer/ansi@2.0.3": {} + + "@inquirer/checkbox@5.1.0(@types/node@25.2.2)": + dependencies: + "@inquirer/ansi": 2.0.3 + "@inquirer/core": 11.1.5(@types/node@25.2.2) + "@inquirer/figures": 2.0.3 + "@inquirer/type": 4.0.3(@types/node@25.2.2) + optionalDependencies: + "@types/node": 25.2.2 + "@inquirer/confirm@5.1.21(@types/node@20.19.33)": dependencies: "@inquirer/core": 10.3.2(@types/node@20.19.33) @@ -12776,6 +13010,13 @@ snapshots: "@types/node": 25.2.2 optional: true + "@inquirer/confirm@6.0.8(@types/node@25.2.2)": + dependencies: + "@inquirer/core": 11.1.5(@types/node@25.2.2) + "@inquirer/type": 4.0.3(@types/node@25.2.2) + optionalDependencies: + "@types/node": 25.2.2 + "@inquirer/core@10.3.2(@types/node@20.19.33)": dependencies: "@inquirer/ansi": 1.0.2 @@ -12803,8 +13044,105 @@ snapshots: "@types/node": 25.2.2 optional: true + "@inquirer/core@11.1.5(@types/node@25.2.2)": + dependencies: + "@inquirer/ansi": 2.0.3 + "@inquirer/figures": 2.0.3 + "@inquirer/type": 4.0.3(@types/node@25.2.2) + cli-width: 4.1.0 + fast-wrap-ansi: 0.2.0 + mute-stream: 3.0.0 + signal-exit: 4.1.0 + optionalDependencies: + "@types/node": 25.2.2 + + "@inquirer/editor@5.0.8(@types/node@25.2.2)": + dependencies: + "@inquirer/core": 11.1.5(@types/node@25.2.2) + "@inquirer/external-editor": 2.0.3(@types/node@25.2.2) + "@inquirer/type": 4.0.3(@types/node@25.2.2) + optionalDependencies: + "@types/node": 25.2.2 + + "@inquirer/expand@5.0.8(@types/node@25.2.2)": + dependencies: + "@inquirer/core": 11.1.5(@types/node@25.2.2) + "@inquirer/type": 4.0.3(@types/node@25.2.2) + optionalDependencies: + "@types/node": 25.2.2 + + "@inquirer/external-editor@2.0.3(@types/node@25.2.2)": + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: + "@types/node": 25.2.2 + "@inquirer/figures@1.0.15": {} + "@inquirer/figures@2.0.3": {} + + "@inquirer/input@5.0.8(@types/node@25.2.2)": + dependencies: + "@inquirer/core": 11.1.5(@types/node@25.2.2) + "@inquirer/type": 4.0.3(@types/node@25.2.2) + optionalDependencies: + "@types/node": 25.2.2 + + "@inquirer/number@4.0.8(@types/node@25.2.2)": + dependencies: + "@inquirer/core": 11.1.5(@types/node@25.2.2) + "@inquirer/type": 4.0.3(@types/node@25.2.2) + optionalDependencies: + "@types/node": 25.2.2 + + "@inquirer/password@5.0.8(@types/node@25.2.2)": + dependencies: + "@inquirer/ansi": 2.0.3 + "@inquirer/core": 11.1.5(@types/node@25.2.2) + "@inquirer/type": 4.0.3(@types/node@25.2.2) + optionalDependencies: + "@types/node": 25.2.2 + + "@inquirer/prompts@8.3.0(@types/node@25.2.2)": + dependencies: + "@inquirer/checkbox": 5.1.0(@types/node@25.2.2) + "@inquirer/confirm": 6.0.8(@types/node@25.2.2) + "@inquirer/editor": 5.0.8(@types/node@25.2.2) + "@inquirer/expand": 5.0.8(@types/node@25.2.2) + "@inquirer/input": 5.0.8(@types/node@25.2.2) + "@inquirer/number": 4.0.8(@types/node@25.2.2) + "@inquirer/password": 5.0.8(@types/node@25.2.2) + "@inquirer/rawlist": 5.2.4(@types/node@25.2.2) + "@inquirer/search": 4.1.4(@types/node@25.2.2) + "@inquirer/select": 5.1.0(@types/node@25.2.2) + optionalDependencies: + "@types/node": 25.2.2 + + "@inquirer/rawlist@5.2.4(@types/node@25.2.2)": + dependencies: + "@inquirer/core": 11.1.5(@types/node@25.2.2) + "@inquirer/type": 4.0.3(@types/node@25.2.2) + optionalDependencies: + "@types/node": 25.2.2 + + "@inquirer/search@4.1.4(@types/node@25.2.2)": + dependencies: + "@inquirer/core": 11.1.5(@types/node@25.2.2) + "@inquirer/figures": 2.0.3 + "@inquirer/type": 4.0.3(@types/node@25.2.2) + optionalDependencies: + "@types/node": 25.2.2 + + "@inquirer/select@5.1.0(@types/node@25.2.2)": + dependencies: + "@inquirer/ansi": 2.0.3 + "@inquirer/core": 11.1.5(@types/node@25.2.2) + "@inquirer/figures": 2.0.3 + "@inquirer/type": 4.0.3(@types/node@25.2.2) + optionalDependencies: + "@types/node": 25.2.2 + "@inquirer/type@3.0.10(@types/node@20.19.33)": optionalDependencies: "@types/node": 20.19.33 @@ -12814,6 +13152,10 @@ snapshots: "@types/node": 25.2.2 optional: true + "@inquirer/type@4.0.3(@types/node@25.2.2)": + optionalDependencies: + "@types/node": 25.2.2 + "@isaacs/balanced-match@4.0.1": {} "@isaacs/brace-expansion@5.0.1": @@ -17133,6 +17475,8 @@ snapshots: char-regex@1.0.2: {} + chardet@2.1.1: {} + charenc@0.0.2: {} chokidar@5.0.0: @@ -17841,8 +18185,18 @@ snapshots: fast-stable-stringify@1.0.0: {} + fast-string-truncated-width@3.0.3: {} + + fast-string-width@3.0.2: + dependencies: + fast-string-truncated-width: 3.0.3 + fast-uri@3.1.0: {} + fast-wrap-ansi@0.2.0: + dependencies: + fast-string-width: 3.0.2 + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -18764,6 +19118,8 @@ snapshots: mute-stream@2.0.0: {} + mute-stream@3.0.0: {} + mz@2.7.0: dependencies: any-promise: 1.3.0 diff --git a/runtime-assets/run-connector.cjs b/runtime-assets/run-connector.cjs new file mode 100644 index 00000000..f10549b0 --- /dev/null +++ b/runtime-assets/run-connector.cjs @@ -0,0 +1,275 @@ +#!/usr/bin/env node +/** + * run-connector.cjs — Run a data connector headlessly. + * + * Usage: node run-connector.cjs [start-url] [options] + * + * Options: + * --inputs '{"key":"val"}' Pre-supply credentials/2FA + * --output Result file path (default: ~/.dataconnect/last-result.json) + * --pretty Human-readable colored output instead of JSON + * --runner-dir Path to playwright-runner (auto-detected if not set) + * + * Exit codes: 0 success, 1 error, 2 needs input, 3 legacy auth unsupported. + * + * Default output is line-delimited JSON on stdout: + * need-input, legacy-auth, result, log, error + * + * With --pretty, output is colored human-readable text. + */ + +const { spawn } = require('child_process'); +const fs = require('fs'); +const path = require('path'); +const os = require('os'); + +const homedir = os.homedir(); + +const rawArgs = process.argv.slice(2); +const positional = []; +let preSuppliedInputs = {}; +let pretty = false; +let outputPath = path.join(homedir, '.dataconnect', 'last-result.json'); +let runnerDir = null; + +for (let i = 0; i < rawArgs.length; i++) { + if (rawArgs[i] === '--inputs' && rawArgs[i + 1]) { + try { preSuppliedInputs = JSON.parse(rawArgs[++i]); } + catch (e) { console.error('Invalid --inputs JSON:', e.message); process.exit(1); } + } else if (rawArgs[i] === '--output' && rawArgs[i + 1]) { + outputPath = rawArgs[++i]; + } else if (rawArgs[i] === '--runner-dir' && rawArgs[i + 1]) { + runnerDir = rawArgs[++i]; + } else if (rawArgs[i] === '--pretty') { + pretty = true; + } else if (!rawArgs[i].startsWith('--')) { + positional.push(rawArgs[i]); + } +} + +const connectorPath = positional[0]; +const startUrl = positional[1] || 'about:blank'; + +if (!connectorPath) { + console.error('Usage: node run-connector.cjs [start-url] [--inputs \'{"key":"val"}\'] [--pretty]'); + process.exit(1); +} + +const connectorSlug = path.basename(connectorPath, path.extname(connectorPath)); +const runId = `${connectorSlug}-${Date.now()}`; +const PENDING_INPUT_PATH = path.join(homedir, '.dataconnect', `pending-input-${runId}.json`); +const INPUT_RESPONSE_PATH = path.join(homedir, '.dataconnect', `input-response-${runId}.json`); + +const c = { + reset: '\x1b[0m', bold: '\x1b[1m', dim: '\x1b[2m', + red: '\x1b[31m', green: '\x1b[32m', yellow: '\x1b[33m', + blue: '\x1b[34m', magenta: '\x1b[35m', cyan: '\x1b[36m', gray: '\x1b[90m', +}; + +function prettyPrint(color, prefix, msg) { + const ts = new Date().toLocaleTimeString('en-US', { hour12: false }); + console.log(`${c.gray}${ts}${c.reset} ${color}${prefix}${c.reset} ${msg}`); +} + +function emit(obj) { + if (pretty) { + switch (obj.type) { + case 'need-input': + prettyPrint(c.magenta, '[input]', obj.message); + if (obj.schema?.properties) { + prettyPrint(c.dim, ' ', `Fields: ${Object.keys(obj.schema.properties).join(', ')}`); + } + break; + case 'legacy-auth': + prettyPrint(c.yellow, '[auth] ', obj.message); + break; + case 'result': { + const size = fs.existsSync(obj.resultPath) + ? (fs.statSync(obj.resultPath).size / 1024).toFixed(1) + ' KB' + : ''; + prettyPrint(c.green, '[result]', `Saved to ${obj.resultPath} ${size ? `(${size})` : ''}`); + break; + } + case 'log': + prettyPrint(c.gray, '[log] ', obj.message || ''); + break; + case 'error': + prettyPrint(c.red, '[error]', obj.message || ''); + break; + } + } else { + console.log(JSON.stringify(obj)); + } +} + +function resolveRunnerDir() { + if (runnerDir) { + if (fs.existsSync(path.join(runnerDir, 'index.cjs'))) return runnerDir; + console.error(`Runner not found at: ${runnerDir}`); + process.exit(1); + } + + const candidates = [ + path.join(homedir, '.dataconnect', 'playwright-runner'), + process.env.PLAYWRIGHT_RUNNER_DIR, + ].filter(Boolean); + + for (const dir of candidates) { + if (fs.existsSync(path.join(dir, 'index.cjs'))) return dir; + } + + console.error('Could not find playwright-runner. Run `vana setup` first.'); + process.exit(1); +} + +try { fs.unlinkSync(PENDING_INPUT_PATH); } catch {} +try { fs.unlinkSync(INPUT_RESPONSE_PATH); } catch {} + +const resolvedRunnerDir = resolveRunnerDir(); + +if (pretty) { + console.log(`${c.bold}run-connector${c.reset}`); + console.log(` ${c.cyan}Connector:${c.reset} ${connectorPath}`); + console.log(` ${c.cyan}URL:${c.reset} ${startUrl}`); + console.log(` ${c.cyan}Output:${c.reset} ${outputPath}`); + console.log(` ${c.cyan}Runner:${c.reset} ${resolvedRunnerDir}`); + console.log(''); +} + +const runner = spawn(process.execPath, ['index.cjs'], { + cwd: resolvedRunnerDir, + stdio: ['pipe', 'pipe', 'pipe'], +}); + +runner.stderr.on('data', (chunk) => { + if (pretty) { + for (const line of chunk.toString().split('\n').filter(l => l.trim())) { + prettyPrint(c.dim, '[runner]', line.replace('[PlaywrightRunner] ', '')); + } + } else { + process.stderr.write(chunk); + } +}); + +let buffer = ''; +const consumedFields = new Set(); + +runner.stdout.on('data', (chunk) => { + buffer += chunk.toString(); + const lines = buffer.split('\n'); + buffer = lines.pop(); + for (const line of lines) { + if (!line.trim()) continue; + try { handleMessage(JSON.parse(line)); } + catch (e) { process.stderr.write('[non-json] ' + line + '\n'); } + } +}); + +function handleMessage(msg) { + switch (msg.type) { + case 'ready': + runner.stdin.write(JSON.stringify({ + type: 'run', runId, + connectorPath: path.resolve(connectorPath), + url: startUrl, headless: true, allowHeaded: false, + }) + '\n'); + if (pretty) prettyPrint(c.green, '[ready]', 'Connected, starting connector...'); + break; + + case 'request-input': { + const { requestId, payload } = msg; + const schema = payload?.schema; + const fields = schema?.properties ? Object.keys(schema.properties) : []; + const available = fields.filter(f => f in preSuppliedInputs && !consumedFields.has(f)); + + if (available.length > 0) { + const data = {}; + for (const f of fields) { + if (f in preSuppliedInputs && !consumedFields.has(f)) { + data[f] = preSuppliedInputs[f]; + consumedFields.add(f); + } + } + runner.stdin.write(JSON.stringify({ + type: 'input-response', runId, requestId, data, + }) + '\n'); + } else { + const pendingInput = { + requestId, + message: payload?.message || 'Input required', + schema: schema || {}, + previousInputs: [...consumedFields], + timestamp: new Date().toISOString(), + }; + fs.writeFileSync(PENDING_INPUT_PATH, JSON.stringify(pendingInput, null, 2)); + + emit({ + type: 'need-input', + message: pendingInput.message, + schema: pendingInput.schema, + pendingInputPath: PENDING_INPUT_PATH, + responseInputPath: INPUT_RESPONSE_PATH, + ...(consumedFields.size > 0 && { previousInputs: pendingInput.previousInputs }), + }); + + const poll = setInterval(() => { + if (!fs.existsSync(INPUT_RESPONSE_PATH)) { + return; + } + + clearInterval(poll); + try { + const response = JSON.parse(fs.readFileSync(INPUT_RESPONSE_PATH, 'utf-8')); + try { fs.unlinkSync(INPUT_RESPONSE_PATH); } catch {} + try { fs.unlinkSync(PENDING_INPUT_PATH); } catch {} + + if (response && typeof response === 'object') { + for (const f of Object.keys(response)) consumedFields.add(f); + } + + runner.stdin.write(JSON.stringify({ + type: 'input-response', runId, requestId, data: response, + }) + '\n'); + } catch (e) { + try { fs.unlinkSync(INPUT_RESPONSE_PATH); } catch {} + try { fs.unlinkSync(PENDING_INPUT_PATH); } catch {} + runner.stdin.write(JSON.stringify({ + type: 'input-response', runId, requestId, + error: 'Invalid response file: ' + e.message, + }) + '\n'); + } + }, 1000); + } + break; + } + + case 'run-completed': + if (msg.result?.ok) { + fs.mkdirSync(path.dirname(outputPath), { recursive: true }); + fs.writeFileSync(outputPath, JSON.stringify(msg.result.data, null, 2)); + emit({ type: 'result', resultPath: outputPath }); + process.exit(0); + } + emit({ + type: 'error', + message: msg.result?.error || 'Connector run failed.', + }); + process.exit(1); + break; + + case 'run-error': + if (String(msg.error || '').includes('showBrowser') || String(msg.error || '').includes('promptUser')) { + emit({ + type: 'legacy-auth', + message: 'This connector uses legacy authentication (showBrowser/promptUser) which is not supported in batch mode. Either use a migrated connector that supports requestInput, or establish a session manually first.', + }); + process.exit(3); + } + emit({ + type: 'error', + message: msg.error || 'Runner error.', + }); + process.exit(1); + break; + } +} diff --git a/src/cli/bin.ts b/src/cli/bin.ts new file mode 100644 index 00000000..342f280d --- /dev/null +++ b/src/cli/bin.ts @@ -0,0 +1,8 @@ +#!/usr/bin/env node + +import { runCli } from "./index.js"; + +const exitCode = await runCli(process.argv); +if (typeof exitCode === "number") { + process.exitCode = exitCode; +} diff --git a/src/cli/index.ts b/src/cli/index.ts new file mode 100644 index 00000000..2dd92177 --- /dev/null +++ b/src/cli/index.ts @@ -0,0 +1,741 @@ +import fs from "node:fs"; +import fsp from "node:fs/promises"; +import path from "node:path"; + +import { confirm, input, password } from "@inquirer/prompts"; +import { Command } from "commander"; + +import { + CliOutcomeStatus, + getBrowserProfilesDir, + getConnectorCacheDir, + getLastResultPath, + readCliState, + updateSourceState, +} from "../core/index.js"; +import type { + CliEvent, + CliOutcome, + CliStatus, + SourceStatus, +} from "../core/cli-types.js"; +import { listAvailableSources } from "../connectors/registry.js"; +import { + detectPersonalServerTarget, + ingestResult, +} from "../personal-server/index.js"; +import { + findDataConnectorsDir, + ManagedPlaywrightRuntime, +} from "../runtime/index.js"; + +interface GlobalOptions { + json?: boolean; + noInput?: boolean; + yes?: boolean; + quiet?: boolean; +} + +interface SourceLabelMap { + [source: string]: string; +} + +interface SourceMetadataMap { + [source: string]: { + name: string; + company?: string; + description?: string; + }; +} + +export async function runCli(argv = process.argv): Promise { + const normalizedArgv = normalizeArgv(argv); + const parsedOptions = extractGlobalOptions(normalizedArgv); + const program = new Command(); + program.name("vana").description("Vana Connect CLI"); + + program + .command("connect ") + .option("--json", "Output machine-readable JSON") + .option("--no-input", "Fail instead of prompting for input") + .option("--yes", "Approve safe setup prompts automatically") + .option("--quiet", "Reduce non-essential output") + .action(async (source: string) => { + process.exitCode = await runConnect(source, parsedOptions); + }); + + program + .command("sources") + .description("List supported sources") + .option("--json", "Output machine-readable JSON") + .action(async () => { + process.exitCode = await runList(parsedOptions); + }); + + program + .command("status") + .description("Show runtime and Personal Server status") + .option("--json", "Output machine-readable JSON") + .action(async () => { + process.exitCode = await runStatus(parsedOptions); + }); + + program + .command("setup") + .description("Install or repair the local runtime") + .option("--json", "Output machine-readable JSON") + .option("--yes", "Approve safe setup prompts automatically") + .action(async () => { + process.exitCode = await runSetup(parsedOptions); + }); + + await program.parseAsync(normalizedArgv); + return Number(process.exitCode ?? 0); +} + +async function runConnect( + source: string, + options: GlobalOptions, +): Promise { + const runtime = new ManagedPlaywrightRuntime(); + const emit = createEmitter(options); + const registrySources = await loadRegistrySources(); + const sourceLabels = createSourceLabelMap(registrySources); + let setupLogPath: string | undefined; + let fetchLogPath: string | undefined; + let runLogPath: string | undefined; + + try { + emit.info( + `Finding a connector for ${displaySource(source, sourceLabels)}...`, + ); + const target = await detectPersonalServerTarget(); + + if (runtime.state !== "installed") { + emit.info( + `Vana Connect needs a local browser runtime before it can connect ${displaySource( + source, + sourceLabels, + )}.`, + ); + emit.info(""); + emit.info("This will install:"); + emit.info("- the connector runner"); + emit.info("- a Chromium browser engine"); + emit.info("- local runtime files under ~/.dataconnect/"); + emit.info(""); + emit.info( + "Your credentials stay on this machine. Nothing is sent anywhere except the platform you’re connecting to.", + ); + + if (!options.yes) { + if (options.noInput) { + emit.event({ + type: "outcome", + status: CliOutcomeStatus.SETUP_REQUIRED, + source, + }); + return 1; + } + + const shouldContinue = await confirm({ + message: "Continue?", + default: true, + }); + if (!shouldContinue) { + emit.event({ + type: "outcome", + status: CliOutcomeStatus.SETUP_REQUIRED, + source, + reason: "setup_declined", + }); + return 1; + } + } + + const installResult = await runtime.ensureInstalled(Boolean(options.yes)); + setupLogPath = installResult.logPath; + emit.event({ + type: "setup-complete", + runtime: installResult.runtime, + logPath: installResult.logPath, + }); + emit.info("Runtime ready."); + if (installResult.logPath) { + emit.info(`Setup log: ${installResult.logPath}`); + } + } else { + emit.event({ + type: "setup-check", + runtime: runtime.state, + }); + } + + const fetched = await runtime.fetchConnector(source); + fetchLogPath = fetched.logPath; + const sourceDetails = registrySources.find((item) => item.id === source); + const resolution = { + source, + connectorPath: fetched.connectorPath, + } as const; + emit.event({ + type: "connector-resolved", + source: resolution.source, + connectorPath: resolution.connectorPath, + logPath: fetched.logPath, + }); + emit.info("Connector ready."); + if (sourceDetails?.description) { + emit.info(sourceDetails.description); + } + + const profilePath = path.join( + getBrowserProfilesDir(), + `${path.basename(resolution.connectorPath, path.extname(resolution.connectorPath))}`, + ); + if (fs.existsSync(profilePath)) { + emit.info( + `Found an existing ${displaySource(source, sourceLabels)} session. Trying that first...`, + ); + } + + await updateSourceState(resolution.source, { + connectorInstalled: true, + sessionPresent: fs.existsSync(profilePath), + lastError: null, + }); + + emit.info(`Connecting to ${displaySource(source, sourceLabels)}...`); + emit.info("Collecting your data..."); + + let finalStatus: CliOutcome["status"] = + CliOutcomeStatus.UNEXPECTED_INTERNAL_ERROR; + let resultPath = getLastResultPath(); + let collectedResult = false; + + for await (const event of runtime.runConnector({ + connectorPath: resolution.connectorPath, + source: resolution.source, + noInput: options.noInput, + onNeedInput: async (needInput) => { + emit.info(""); + emit.info( + `To connect ${displaySource(source, sourceLabels)}, Vana Connect will open a local browser session on this machine.`, + ); + emit.info("Your credentials stay local."); + emit.info(""); + emit.info( + needInput.message ?? + `${displaySource(source, sourceLabels)} needs additional details to continue.`, + ); + + const values: Record = {}; + for (const field of needInput.fields) { + if (field.toLowerCase().includes("password")) { + values[field] = await password({ message: humanizeField(field) }); + } else { + values[field] = await input({ message: humanizeField(field) }); + } + } + return values; + }, + })) { + emit.event(event); + if (event.logPath) { + runLogPath = event.logPath; + } + + if (event.type === "needs-input") { + await updateSourceState(resolution.source, { + lastRunAt: new Date().toISOString(), + lastRunOutcome: CliOutcomeStatus.NEEDS_INPUT, + lastError: event.message ?? "Input required.", + }); + emit.event({ + type: "outcome", + status: CliOutcomeStatus.NEEDS_INPUT, + source: resolution.source, + }); + if (!options.json) { + emit.info( + `${displaySource(source, sourceLabels)} needs additional input before it can connect.`, + ); + emit.info( + `Next: run \`vana connect ${source}\` without \`--no-input\`.`, + ); + } + return 1; + } + + if (event.type === "runtime-error") { + await updateSourceState(resolution.source, { + lastRunAt: new Date().toISOString(), + lastRunOutcome: CliOutcomeStatus.RUNTIME_ERROR, + lastError: event.message ?? "Connector run failed.", + }); + emit.info(event.message ?? "Connector run failed."); + emit.event({ + type: "outcome", + status: CliOutcomeStatus.RUNTIME_ERROR, + source: resolution.source, + }); + if (event.logPath) { + emit.info(`Run log: ${event.logPath}`); + } + return 1; + } + + if (event.type === "legacy-auth") { + await updateSourceState(resolution.source, { + lastRunAt: new Date().toISOString(), + lastRunOutcome: CliOutcomeStatus.LEGACY_AUTH, + lastError: event.message ?? "Legacy authentication is required.", + dataState: "none", + }); + emit.info( + event.message ?? + "This connector requires legacy headed authentication that is not available in batch mode.", + ); + emit.info( + `Next: establish a reusable ${displaySource( + source, + sourceLabels, + )} session manually, or migrate this connector to requestInput.`, + ); + if (event.logPath) { + emit.info(`Run log: ${event.logPath}`); + } + emit.event({ + type: "outcome", + status: CliOutcomeStatus.LEGACY_AUTH, + source: resolution.source, + }); + return 1; + } + + if (event.type === "collection-complete" && event.resultPath) { + collectedResult = true; + resultPath = event.resultPath; + const ingestEvents = await ingestResult( + resolution.source, + resultPath, + target, + ); + for (const ingestEvent of ingestEvents) { + emit.event(ingestEvent); + } + + const ingestCompleted = ingestEvents.some( + (ingestEvent) => ingestEvent.type === "ingest-complete", + ); + finalStatus = ingestCompleted + ? CliOutcomeStatus.CONNECTED_AND_INGESTED + : CliOutcomeStatus.CONNECTED_LOCAL_ONLY; + } + } + + if (!collectedResult) { + await updateSourceState(resolution.source, { + connectorInstalled: true, + sessionPresent: fs.existsSync(profilePath), + lastRunAt: new Date().toISOString(), + lastRunOutcome: CliOutcomeStatus.UNEXPECTED_INTERNAL_ERROR, + dataState: "none", + lastError: "Connector run ended without a result.", + }); + emit.event({ + type: "outcome", + status: CliOutcomeStatus.UNEXPECTED_INTERNAL_ERROR, + source: resolution.source, + reason: "Connector run ended without a result.", + }); + if (runLogPath) { + emit.info(`Run log: ${runLogPath}`); + } + return 1; + } + + const dataState = + finalStatus === CliOutcomeStatus.CONNECTED_AND_INGESTED + ? "ingested_personal_server" + : "collected_local"; + + await updateSourceState(resolution.source, { + connectorInstalled: true, + sessionPresent: true, + lastRunAt: new Date().toISOString(), + lastRunOutcome: finalStatus, + dataState, + lastError: null, + }); + + if (finalStatus === CliOutcomeStatus.CONNECTED_AND_INGESTED) { + emit.info(`Connected ${displaySource(source, sourceLabels)}.`); + emit.info( + `Collected your ${displaySource(source, sourceLabels)} data and synced it to your Personal Server.`, + ); + } else { + if (target.state !== "available") { + emit.info( + `No Personal Server is available right now, so your ${displaySource( + source, + sourceLabels, + )} data was saved locally.`, + ); + } + emit.info(`Connected ${displaySource(source, sourceLabels)}.`); + emit.info( + `Collected your ${displaySource(source, sourceLabels)} data and saved it locally.`, + ); + emit.info(`Local result: ${resultPath}`); + } + + if (runLogPath) { + emit.info(`Run log: ${runLogPath}`); + } else if (fetchLogPath) { + emit.info(`Fetch log: ${fetchLogPath}`); + } else if (setupLogPath) { + emit.info(`Setup log: ${setupLogPath}`); + } + + emit.info( + "Next: run `vana status` to inspect your current connection state.", + ); + emit.event({ + type: "outcome", + status: finalStatus, + source: resolution.source, + resultPath, + }); + return 0; + } catch (error) { + const message = + error instanceof Error ? error.message : "Unexpected error."; + emit.info(message); + emit.event({ + type: "outcome", + status: CliOutcomeStatus.UNEXPECTED_INTERNAL_ERROR, + source, + reason: message, + }); + if (runLogPath) { + emit.info(`Run log: ${runLogPath}`); + } else if (fetchLogPath) { + emit.info(`Fetch log: ${fetchLogPath}`); + } else if (setupLogPath) { + emit.info(`Setup log: ${setupLogPath}`); + } + return 1; + } +} + +async function runList(options: GlobalOptions): Promise { + const sources = await loadRegistrySources(); + const installedSourceIds = new Set( + (await listInstalledConnectorFiles()).map((source) => source.source), + ); + const enrichedSources = sources.map((source) => ({ + ...source, + installed: installedSourceIds.has(source.id), + })); + if (options.json) { + process.stdout.write(`${JSON.stringify({ sources: enrichedSources })}\n`); + return 0; + } + + const emit = createEmitter(options); + for (const source of enrichedSources) { + const description = source.description ? ` - ${source.description}` : ""; + const installed = source.installed ? " [installed]" : ""; + emit.info(`${source.name}${installed}${description}`); + } + return 0; +} + +async function runStatus(options: GlobalOptions): Promise { + const emit = createEmitter(options); + const runtime = new ManagedPlaywrightRuntime(); + const personalServer = await detectPersonalServerTarget(); + const state = await readCliState(); + const registrySources = await loadRegistrySources(); + const sourceLabels = createSourceLabelMap(registrySources); + const sourceMetadata = createSourceMetadataMap(registrySources); + const sources = await gatherSourceStatuses(state.sources, sourceMetadata); + + const status: CliStatus = { + runtime: runtime.state, + runtimePath: runtime.state === "installed" ? runtime.runnerDir : null, + personalServer: personalServer.state, + personalServerUrl: personalServer.url, + sources, + }; + + if (options.json) { + process.stdout.write(`${JSON.stringify(status)}\n`); + return 0; + } + + emit.info("Vana Connect status"); + emit.info(""); + emit.info(`Runtime: ${status.runtime}`); + emit.info(`Personal Server: ${status.personalServer}`); + emit.info(""); + for (const source of status.sources) { + emit.info(formatSourceStatus(source, sourceLabels)); + const details = formatSourceStatusDetail(source); + if (details) { + emit.info(` ${details}`); + } + } + return 0; +} + +async function runSetup(options: GlobalOptions): Promise { + const emit = createEmitter(options); + const runtime = new ManagedPlaywrightRuntime(); + + if (runtime.state === "installed") { + emit.info("Vana Connect runtime is already installed."); + emit.event({ type: "setup-check", runtime: runtime.state }); + return 0; + } + + try { + const result = await runtime.ensureInstalled(Boolean(options.yes)); + emit.info("Runtime ready."); + if (result.logPath) { + emit.info(`Setup log: ${result.logPath}`); + } + emit.event({ + type: "setup-complete", + runtime: result.runtime, + logPath: result.logPath, + }); + return 0; + } catch (error) { + const message = + error instanceof Error + ? error.message + : "Vana Connect could not finish installing the local runtime."; + emit.info(message); + emit.event({ + type: "outcome", + status: CliOutcomeStatus.RUNTIME_ERROR, + reason: message, + }); + return 1; + } +} + +function createEmitter(options: GlobalOptions) { + return { + event(event: CliEvent | CliOutcome) { + if (options.json) { + process.stdout.write(`${JSON.stringify(event)}\n`); + } + }, + info(message: string) { + if (options.json || options.quiet) { + return; + } + process.stdout.write(`${message}\n`); + }, + }; +} + +function displaySource(source: string, labels: SourceLabelMap = {}): string { + return labels[source] ?? source.charAt(0).toUpperCase() + source.slice(1); +} + +function humanizeField(value: string): string { + return value + .replace(/([a-z])([A-Z])/g, "$1 $2") + .replace(/[_-]/g, " ") + .replace(/^\w/, (match) => match.toUpperCase()); +} + +async function gatherSourceStatuses( + storedSources: Record< + string, + Awaited>["sources"][string] + >, + metadata: SourceMetadataMap = {}, +): Promise { + const installedFiles = await listInstalledConnectorFiles(); + const sourceNames = new Set([ + ...Object.keys(storedSources), + ...installedFiles.map((file) => file.source), + ]); + + return [...sourceNames] + .sort((left, right) => left.localeCompare(right)) + .map((source) => { + const stored = storedSources[source] ?? {}; + const installed = installedFiles.some((file) => file.source === source); + const details = metadata[source]; + return { + source, + name: details?.name, + company: details?.company, + description: details?.description, + installed, + sessionPresent: stored.sessionPresent ?? false, + lastRunAt: stored.lastRunAt ?? null, + lastRunOutcome: stored.lastRunOutcome ?? null, + dataState: + stored.dataState === "ingested_personal_server" + ? "ingested_personal_server" + : stored.dataState === "collected_local" + ? "collected_local" + : "none", + lastError: stored.lastError ?? null, + }; + }); +} + +async function listInstalledConnectorFiles(): Promise< + Array<{ source: string; path: string }> +> { + const connectorsDir = getConnectorCacheDir(); + try { + const results: Array<{ source: string; path: string }> = []; + const entries = await fsp.readdir(connectorsDir, { withFileTypes: true }); + for (const entry of entries) { + if (!entry.isDirectory()) { + continue; + } + const companyDir = path.join(connectorsDir, entry.name); + const files = await fsp.readdir(companyDir); + for (const file of files) { + if (!file.endsWith("-playwright.js")) { + continue; + } + results.push({ + source: file.replace(/-playwright\.js$/, ""), + path: path.join(companyDir, file), + }); + } + } + return results; + } catch { + return []; + } +} + +function formatSourceStatus( + source: SourceStatus, + labels: SourceLabelMap = {}, +): string { + if (!source.installed) { + return `${displaySource(source.source, labels)}: not connected`; + } + + if (!source.lastRunOutcome) { + return `${displaySource(source.source, labels)}: installed`; + } + + if (source.lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { + return `${displaySource(source.source, labels)}: needs input`; + } + + if (source.lastRunOutcome === CliOutcomeStatus.RUNTIME_ERROR) { + return `${displaySource(source.source, labels)}: error`; + } + + if (source.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { + return `${displaySource(source.source, labels)}: legacy auth required`; + } + + if (source.dataState === "ingested_personal_server") { + return `${displaySource(source.source, labels)}: connected, synced`; + } + + if (source.dataState === "collected_local") { + return `${displaySource(source.source, labels)}: connected, local only`; + } + + return `${displaySource(source.source, labels)}: connected`; +} + +function formatSourceStatusDetail(source: SourceStatus): string | null { + if (source.lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { + return source.lastError + ? `${source.lastError}. Run \`vana connect ${source.source}\` interactively.` + : `Run \`vana connect ${source.source}\` interactively.`; + } + + if (source.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { + return "This source still uses legacy headed auth and cannot complete in batch mode."; + } + + if (source.lastRunOutcome === CliOutcomeStatus.RUNTIME_ERROR) { + return source.lastError ?? "The last connector run failed."; + } + + if (!source.lastRunOutcome && source.installed) { + return `Run \`vana connect ${source.source}\` to collect data.`; + } + + return null; +} + +function normalizeArgv(argv: string[]): string[] { + if ( + argv[2] === "connect" && + ["list", "status", "setup"].includes(argv[3] ?? "") + ) { + const mapping: Record = { + list: "sources", + status: "status", + setup: "setup", + }; + return [argv[0], argv[1], mapping[argv[3]], ...argv.slice(4)]; + } + + return argv; +} + +function extractGlobalOptions(argv: string[]): GlobalOptions { + return { + json: argv.includes("--json"), + noInput: argv.includes("--no-input"), + yes: argv.includes("--yes"), + quiet: argv.includes("--quiet"), + }; +} + +function createSourceLabelMap( + sources: Array<{ id: string; name: string }>, +): SourceLabelMap { + return Object.fromEntries(sources.map((source) => [source.id, source.name])); +} + +function createSourceMetadataMap( + sources: Array<{ + id: string; + name: string; + company?: string; + description?: string; + }>, +): SourceMetadataMap { + return Object.fromEntries( + sources.map((source) => [ + source.id, + { + name: source.name, + company: source.company, + description: source.description, + }, + ]), + ); +} + +async function loadRegistrySources() { + try { + return ( + (await listAvailableSources(findDataConnectorsDir() ?? undefined)) ?? [] + ); + } catch { + return []; + } +} diff --git a/src/cli/main.ts b/src/cli/main.ts new file mode 100644 index 00000000..a5ac4d78 --- /dev/null +++ b/src/cli/main.ts @@ -0,0 +1 @@ +export { runCli } from "./index.js"; diff --git a/src/connectors/index.ts b/src/connectors/index.ts new file mode 100644 index 00000000..c54462d8 --- /dev/null +++ b/src/connectors/index.ts @@ -0,0 +1,8 @@ +export { + listAvailableSources, + resolveConnector, + fetchConnectorToCache, + type AvailableSource, + type ConnectorRegistryEntry, + type ConnectorResolution, +} from "./registry.js"; diff --git a/src/connectors/registry.ts b/src/connectors/registry.ts new file mode 100644 index 00000000..59417381 --- /dev/null +++ b/src/connectors/registry.ts @@ -0,0 +1,217 @@ +import fs from "node:fs/promises"; +import path from "node:path"; + +const REGISTRY_URL = + "https://raw.githubusercontent.com/vana-com/data-connectors/main/registry.json"; +const BASE_URL = + "https://raw.githubusercontent.com/vana-com/data-connectors/main"; + +export interface ConnectorRegistryEntry { + id?: string; + name?: string; + company?: string; + description?: string; + scriptPath?: string; + script_path?: string; + files?: { + script?: string; + metadata?: string; + }; +} + +export interface ConnectorResolution { + source: string; + name: string; + company?: string; + description?: string; + connectorPath: string; +} + +export interface AvailableSource { + id: string; + name: string; + company?: string; + description?: string; +} + +export async function listAvailableSources( + dataConnectorsDir?: string, +): Promise { + const registry = await loadRegistry(dataConnectorsDir); + return (registry.connectors ?? []) + .map((entry) => toAvailableSource(entry)) + .filter((value): value is AvailableSource => Boolean(value)) + .sort((left, right) => left.name.localeCompare(right.name)); +} + +export async function resolveConnector( + source: string, + connectorCacheDir: string, + dataConnectorsDir?: string, +): Promise { + const registry = await loadRegistry(dataConnectorsDir); + const normalizedSource = source.toLowerCase(); + const match = (registry.connectors ?? []).find((entry) => { + const id = (entry.id ?? "").toLowerCase(); + const name = (entry.name ?? "").toLowerCase(); + return ( + id === normalizedSource || + name === normalizedSource || + id.includes(normalizedSource) || + name.includes(normalizedSource) + ); + }); + + if (!match) { + return null; + } + + const scriptPath = match.scriptPath ?? match.script_path; + const resolvedScriptPath = scriptPath ?? match.files?.script; + if (!resolvedScriptPath) { + return null; + } + + return { + source: normalizeSourceName(match.id ?? match.name ?? source) ?? source, + name: match.name ?? normalizeSourceName(match.id ?? source) ?? source, + company: match.company, + description: undefined, + connectorPath: path.join(connectorCacheDir, resolvedScriptPath), + }; +} + +export async function fetchConnectorToCache( + source: string, + connectorCacheDir: string, + dataConnectorsDir?: string, +): Promise { + const registry = await loadRegistry(dataConnectorsDir); + const normalizedSource = source.toLowerCase(); + const match = (registry.connectors ?? []).find((entry) => { + const id = (entry.id ?? "").toLowerCase(); + const name = (entry.name ?? "").toLowerCase(); + const normalizedId = normalizeSourceName(entry.id)?.toLowerCase() ?? ""; + return ( + id === normalizedSource || + name === normalizedSource || + normalizedId === normalizedSource || + id.includes(normalizedSource) || + name.includes(normalizedSource) || + normalizedId.includes(normalizedSource) + ); + }); + + if (!match) { + throw new Error(`No connector is available for ${source} right now.`); + } + + const scriptRelPath = + match.files?.script ?? match.scriptPath ?? match.script_path; + const metadataRelPath = + match.files?.metadata ?? scriptRelPath?.replace(/\.js$/i, ".json"); + + if (!scriptRelPath) { + throw new Error( + `Connector metadata for ${source} is missing a script path.`, + ); + } + + await copyOrFetchFile(scriptRelPath, connectorCacheDir, dataConnectorsDir); + if (metadataRelPath) { + await copyOrFetchFile( + metadataRelPath, + connectorCacheDir, + dataConnectorsDir, + ).catch(() => { + // Metadata may not exist for every connector. + }); + } + + return { + source: normalizeSourceName(match.id ?? match.name ?? source) ?? source, + name: match.name ?? normalizeSourceName(match.id ?? source) ?? source, + company: match.company, + description: match.description, + connectorPath: path.join(connectorCacheDir, scriptRelPath), + }; +} + +async function loadRegistry( + dataConnectorsDir?: string, +): Promise<{ connectors?: ConnectorRegistryEntry[] }> { + if (dataConnectorsDir) { + try { + const localRegistry = await fs.readFile( + path.join(dataConnectorsDir, "registry.json"), + "utf8", + ); + return JSON.parse(localRegistry) as { + connectors?: ConnectorRegistryEntry[]; + }; + } catch { + // Fall through to remote fetch. + } + } + + const response = await fetch(REGISTRY_URL, { + headers: { "User-Agent": "@opendatalabs/connect" }, + }); + if (!response.ok) { + throw new Error(`Failed to load connector registry: ${response.status}`); + } + return (await response.json()) as { connectors?: ConnectorRegistryEntry[] }; +} + +async function copyOrFetchFile( + relativePath: string, + connectorCacheDir: string, + dataConnectorsDir?: string, +): Promise { + const destination = path.join(connectorCacheDir, relativePath); + await fs.mkdir(path.dirname(destination), { recursive: true }); + + if (dataConnectorsDir) { + const localPath = path.join(dataConnectorsDir, relativePath); + try { + const content = await fs.readFile(localPath); + await fs.writeFile(destination, content); + return; + } catch { + // Fall through to remote fetch. + } + } + + const response = await fetch(`${BASE_URL}/${relativePath}`, { + headers: { "User-Agent": "@opendatalabs/connect" }, + }); + if (!response.ok) { + throw new Error(`Failed to download ${relativePath}: ${response.status}`); + } + const content = Buffer.from(await response.arrayBuffer()); + await fs.writeFile(destination, content); +} + +function normalizeSourceName(source: string | undefined): string | null { + if (!source) { + return null; + } + + return source.replace(/-playwright$/i, ""); +} + +function toAvailableSource( + entry: ConnectorRegistryEntry, +): AvailableSource | null { + const id = normalizeSourceName(entry.id ?? entry.name); + if (!id) { + return null; + } + + return { + id, + name: entry.name ?? id, + company: entry.company, + description: entry.description, + }; +} diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts new file mode 100644 index 00000000..de6ea969 --- /dev/null +++ b/src/core/cli-types.ts @@ -0,0 +1,84 @@ +import { z } from "zod"; + +export const CliOutcomeStatus = { + CONNECTED_AND_INGESTED: "connected_and_ingested", + CONNECTED_LOCAL_ONLY: "connected_local_only", + NEEDS_INPUT: "needs_input", + SETUP_REQUIRED: "setup_required", + PERSONAL_SERVER_UNAVAILABLE: "personal_server_unavailable", + AUTH_FAILED: "auth_failed", + LEGACY_AUTH: "legacy_auth", + CONNECTOR_UNAVAILABLE: "connector_unavailable", + INGEST_FAILED: "ingest_failed", + RUNTIME_ERROR: "runtime_error", + INVALID_CONNECTOR: "invalid_connector", + UNEXPECTED_INTERNAL_ERROR: "unexpected_internal_error", +} as const; + +export type CliOutcomeStatus = + (typeof CliOutcomeStatus)[keyof typeof CliOutcomeStatus]; + +export const runtimeStateSchema = z.enum(["installed", "missing", "unhealthy"]); +export type RuntimeState = z.infer; + +export const personalServerStateSchema = z.enum([ + "available", + "unavailable", + "unknown", +]); +export type PersonalServerState = z.infer; + +export const dataStateSchema = z.enum([ + "none", + "collected_local", + "ingested_personal_server", + "ingest_unavailable", + "ingest_failed", +]); +export type DataState = z.infer; + +export const sourceStatusSchema = z.object({ + source: z.string(), + name: z.string().optional(), + company: z.string().optional(), + description: z.string().optional(), + installed: z.boolean(), + sessionPresent: z.boolean(), + lastRunAt: z.string().nullable().optional(), + lastRunOutcome: z.string().nullable().optional(), + dataState: dataStateSchema.optional(), + lastError: z.string().nullable().optional(), +}); +export type SourceStatus = z.infer; + +export const cliStatusSchema = z.object({ + runtime: runtimeStateSchema, + runtimePath: z.string().nullable(), + personalServer: personalServerStateSchema, + personalServerUrl: z.string().nullable(), + sources: z.array(sourceStatusSchema), +}); +export type CliStatus = z.infer; + +export const cliEventSchema = z.object({ + type: z.string(), + source: z.string().optional(), + message: z.string().optional(), + status: z.string().optional(), + resultPath: z.string().optional(), + connectorPath: z.string().optional(), + logPath: z.string().optional(), + fields: z.array(z.string()).optional(), + target: z.string().optional(), + runtime: z.string().optional(), + reason: z.string().optional(), +}); +export type CliEvent = z.infer; + +export interface CliOutcome extends Record { + type: "outcome"; + status: CliOutcomeStatus; + source?: string; + resultPath?: string; + reason?: string; +} diff --git a/src/core/index.ts b/src/core/index.ts index c22c32cc..446838d2 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -1,4 +1,5 @@ export { ConnectError, ConnectErrorCode } from "./errors.js"; +export { CliOutcomeStatus } from "./cli-types.js"; export { isValidGrant } from "./grants.js"; export { getEnvConfig, @@ -6,6 +7,21 @@ export { DEFAULT_ENVIRONMENT, type VanaEnvironment, } from "./constants.js"; +export { + getDataConnectHome, + getRunnerDir, + getConnectorCacheDir, + getBrowserProfilesDir, + getCliStatePath, + getLastResultPath, + getLogsDir, + getTimestampedLogPath, +} from "./paths.js"; +export { + readCliState, + updateSourceState, + ensureParentDir, +} from "./state-store.js"; export type { ConnectionStatus, SessionInitParams, diff --git a/src/core/paths.ts b/src/core/paths.ts new file mode 100644 index 00000000..0d38909c --- /dev/null +++ b/src/core/paths.ts @@ -0,0 +1,38 @@ +import os from "node:os"; +import path from "node:path"; + +export function getDataConnectHome(): string { + return path.join(os.homedir(), ".dataconnect"); +} + +export function getRunnerDir(): string { + return path.join(getDataConnectHome(), "playwright-runner"); +} + +export function getConnectorCacheDir(): string { + return path.join(getDataConnectHome(), "connectors"); +} + +export function getBrowserProfilesDir(): string { + return path.join(getDataConnectHome(), "browser-profiles"); +} + +export function getCliStatePath(): string { + return path.join(getDataConnectHome(), "vana-connect-state.json"); +} + +export function getLastResultPath(): string { + return path.join(getDataConnectHome(), "last-result.json"); +} + +export function getLogsDir(): string { + return path.join(getDataConnectHome(), "logs"); +} + +export function getTimestampedLogPath(prefix: string): string { + const safePrefix = prefix.replace(/[^a-z0-9-]+/gi, "-").toLowerCase(); + return path.join( + getLogsDir(), + `${safePrefix}-${new Date().toISOString().replace(/[:.]/g, "-")}.log`, + ); +} diff --git a/src/core/state-store.ts b/src/core/state-store.ts new file mode 100644 index 00000000..b2662df0 --- /dev/null +++ b/src/core/state-store.ts @@ -0,0 +1,47 @@ +import fs from "node:fs/promises"; +import path from "node:path"; + +import { getCliStatePath, getDataConnectHome } from "./paths.js"; + +export interface StoredSourceState { + connectorInstalled?: boolean; + sessionPresent?: boolean; + lastRunAt?: string | null; + lastRunOutcome?: string | null; + dataState?: string | null; + lastError?: string | null; +} + +export interface CliStateFile { + version: 1; + sources: Record; +} + +export async function readCliState(): Promise { + try { + const raw = await fs.readFile(getCliStatePath(), "utf8"); + return JSON.parse(raw) as CliStateFile; + } catch { + return { version: 1, sources: {} }; + } +} + +export async function updateSourceState( + source: string, + patch: StoredSourceState, +): Promise { + const state = await readCliState(); + const current = state.sources[source] ?? {}; + state.sources[source] = { ...current, ...patch }; + + await fs.mkdir(getDataConnectHome(), { recursive: true }); + await fs.writeFile( + getCliStatePath(), + `${JSON.stringify(state, null, 2)}\n`, + "utf8", + ); +} + +export async function ensureParentDir(filePath: string): Promise { + await fs.mkdir(path.dirname(filePath), { recursive: true }); +} diff --git a/src/personal-server/index.ts b/src/personal-server/index.ts new file mode 100644 index 00000000..68ac3213 --- /dev/null +++ b/src/personal-server/index.ts @@ -0,0 +1,97 @@ +import fs from "node:fs/promises"; + +import type { CliEvent, PersonalServerState } from "../core/cli-types.js"; + +const DEFAULT_PORTS = [8080, 8081, 8082, 8083, 8084, 8085]; + +export interface PersonalServerTarget { + state: PersonalServerState; + url: string | null; +} + +export async function detectPersonalServerTarget(): Promise { + const explicitUrl = process.env.VANA_PERSONAL_SERVER_URL; + if (explicitUrl) { + return (await canReachPersonalServer(explicitUrl)) + ? { state: "available", url: explicitUrl } + : { state: "unavailable", url: explicitUrl }; + } + + for (const port of DEFAULT_PORTS) { + const url = `http://localhost:${port}`; + if (await canReachPersonalServer(url)) { + return { state: "available", url }; + } + } + + return { state: "unavailable", url: null }; +} + +export async function ingestResult( + source: string, + resultPath: string, + target: PersonalServerTarget, +): Promise { + if (target.state !== "available" || !target.url) { + return [ + { + type: "ingest-skipped", + source, + reason: "personal_server_unavailable", + }, + ]; + } + + const raw = await fs.readFile(resultPath, "utf8"); + const result = JSON.parse(raw) as Record; + const scopes = Object.keys(result).filter( + (key) => + key.includes(".") && + !["exportSummary", "timestamp", "version", "platform"].includes(key), + ); + + const events: CliEvent[] = [ + { + type: "ingest-started", + source, + target: target.url, + }, + ]; + + try { + for (const scope of scopes) { + const response = await fetch(`${target.url}/v1/data/${scope}`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(result[scope]), + }); + if (!response.ok) { + throw new Error(`Ingest failed for ${scope}: ${response.status}`); + } + } + + events.push({ + type: "ingest-complete", + source, + target: target.url, + }); + return events; + } catch (error) { + events.push({ + type: "ingest-failed", + source, + target: target.url, + message: error instanceof Error ? error.message : "Ingest failed.", + }); + return events; + } +} + +async function canReachPersonalServer(baseUrl: string): Promise { + try { + const response = await fetch(`${baseUrl}/health`, { method: "GET" }); + return response.ok; + } catch { + return false; + } +} diff --git a/src/runtime/index.ts b/src/runtime/index.ts new file mode 100644 index 00000000..a01d6eee --- /dev/null +++ b/src/runtime/index.ts @@ -0,0 +1,7 @@ +export { + ManagedPlaywrightRuntime, + type NeedInputEvent, + type RunConnectorOptions, + type RuntimeInstallResult, +} from "./managed-playwright.js"; +export { findDataConnectorsDir } from "./repo-paths.js"; diff --git a/src/runtime/managed-playwright.ts b/src/runtime/managed-playwright.ts new file mode 100644 index 00000000..28c22cff --- /dev/null +++ b/src/runtime/managed-playwright.ts @@ -0,0 +1,390 @@ +import fs from "node:fs"; +import fsp from "node:fs/promises"; +import path from "node:path"; +import { spawn } from "node:child_process"; +import { fileURLToPath } from "node:url"; + +import { + ensureParentDir, + getConnectorCacheDir, + getDataConnectHome, + getLastResultPath, + getLogsDir, + getRunnerDir, + getTimestampedLogPath, +} from "../core/index.js"; +import type { CliEvent, RuntimeState } from "../core/cli-types.js"; +import { fetchConnectorToCache } from "../connectors/registry.js"; +import { findDataConnectorsDir } from "./repo-paths.js"; + +export interface RuntimeInstallResult { + runtime: RuntimeState; + runtimePath: string | null; + logPath?: string; +} + +export interface RunConnectorOptions { + connectorPath: string; + source: string; + pretty?: boolean; + noInput?: boolean; + signal?: AbortSignal; + onNeedInput?: (event: NeedInputEvent) => Promise>; +} + +export interface NeedInputEvent { + message?: string; + schema?: { + properties?: Record; + }; + fields: string[]; + responseInputPath: string; +} + +export class ManagedPlaywrightRuntime { + get runnerDir(): string { + return getRunnerDir(); + } + + get state(): RuntimeState { + if (!fs.existsSync(path.join(this.runnerDir, "index.cjs"))) { + return "missing"; + } + if ( + !fs.existsSync( + path.join(getConnectorCacheDir(), "..", "run-connector.cjs"), + ) + ) { + return "unhealthy"; + } + return "installed"; + } + + async ensureInstalled(autoApprove: boolean): Promise { + const runtime = this.state; + if (runtime === "installed") { + return { runtime, runtimePath: this.runnerDir }; + } + const logPath = getTimestampedLogPath("setup"); + await ensureParentDir(logPath); + const homeDir = getDataConnectHome(); + const stagingDir = path.join(homeDir, "_data-connect"); + const runnerSourceDir = path.join(stagingDir, "playwright-runner"); + const runConnectorTargetPath = path.join(homeDir, "run-connector.cjs"); + + await fsp.mkdir(homeDir, { recursive: true }); + await fsp.mkdir(getConnectorCacheDir(), { recursive: true }); + await fsp.rm(stagingDir, { recursive: true, force: true }); + + try { + await spawnForExit( + "git", + [ + "clone", + "--depth", + "1", + "--filter=blob:none", + "--sparse", + "--branch", + process.env.VANA_PLAYWRIGHT_RUNNER_GIT_REF ?? "main", + "https://github.com/vana-com/data-connect.git", + stagingDir, + ], + { + cwd: homeDir, + logPath, + }, + ); + await spawnForExit( + "git", + ["sparse-checkout", "set", "playwright-runner"], + { + cwd: stagingDir, + logPath, + }, + ); + + await fsp.rm(this.runnerDir, { recursive: true, force: true }); + await fsp.cp(runnerSourceDir, this.runnerDir, { recursive: true }); + + await spawnForExit("npm", ["install"], { + cwd: this.runnerDir, + logPath, + env: { + ...process.env, + CI: autoApprove ? "1" : process.env.CI, + }, + }); + + await installChromium(this.runnerDir, logPath); + await ensureParentDir(runConnectorTargetPath); + await fsp.copyFile(getBundledRunConnectorPath(), runConnectorTargetPath); + } finally { + await fsp.rm(stagingDir, { recursive: true, force: true }); + } + + return { + runtime: this.state, + runtimePath: this.state === "installed" ? this.runnerDir : null, + logPath, + }; + } + + async fetchConnector( + source: string, + ): Promise<{ connectorPath: string; logPath: string }> { + const dataConnectorsDir = findDataConnectorsDir(); + const logPath = getTimestampedLogPath(`fetch-${source}`); + await ensureParentDir(logPath); + + try { + const resolution = await fetchConnectorToCache( + source, + getConnectorCacheDir(), + dataConnectorsDir ?? undefined, + ); + await fsp.writeFile( + logPath, + `${JSON.stringify( + { + type: "connector-resolved", + source: resolution.source, + connectorPath: resolution.connectorPath, + }, + null, + 2, + )}\n`, + "utf8", + ); + return { connectorPath: resolution.connectorPath, logPath }; + } catch (error) { + await fsp.writeFile( + logPath, + `${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`, + "utf8", + ); + throw error; + } + } + + async *runConnector( + options: RunConnectorOptions, + ): AsyncGenerator { + await fsp.mkdir(getLogsDir(), { recursive: true }); + const logPath = getTimestampedLogPath(`run-${options.source}`); + const runConnectorPath = path.join( + getRunnerDir(), + "..", + "run-connector.cjs", + ); + const args = [ + runConnectorPath, + options.connectorPath, + "--output", + getLastResultPath(), + ]; + const child = spawn(process.execPath, args, { + stdio: ["ignore", "pipe", "pipe"], + }); + const logStream = fs.createWriteStream(logPath); + if (options.signal) { + options.signal.addEventListener("abort", () => { + child.kill("SIGTERM"); + }); + } + + let stdoutBuffer = ""; + let settled = false; + const queue: CliEvent[] = []; + let resolveQueue: (() => void) | null = null; + + const flushQueue = () => { + resolveQueue?.(); + resolveQueue = null; + }; + + const pushEvent = (event: CliEvent) => { + queue.push(event); + flushQueue(); + }; + + child.stderr.on("data", (chunk) => { + logStream.write(chunk); + }); + + child.stdout.on("data", async (chunk: Buffer) => { + logStream.write(chunk); + stdoutBuffer += chunk.toString(); + const lines = stdoutBuffer.split("\n"); + stdoutBuffer = lines.pop() ?? ""; + + for (const line of lines) { + if (!line.trim()) { + continue; + } + + const parsed = JSON.parse(line) as Record; + if (parsed.type === "need-input") { + const fields = Object.keys( + (( + parsed.schema as + | { properties?: Record } + | undefined + )?.properties ?? {}) as Record, + ); + + if (options.noInput || !options.onNeedInput) { + child.kill("SIGTERM"); + pushEvent({ + type: "needs-input", + source: options.source, + message: + typeof parsed.message === "string" + ? parsed.message + : "Additional input is required.", + fields, + logPath, + }); + continue; + } + + const input = await options.onNeedInput({ + message: + typeof parsed.message === "string" + ? parsed.message + : "Additional input is required.", + schema: parsed.schema as NeedInputEvent["schema"], + fields, + responseInputPath: String(parsed.responseInputPath), + }); + await ensureParentDir(String(parsed.responseInputPath)); + await fsp.writeFile( + String(parsed.responseInputPath), + `${JSON.stringify(input)}\n`, + "utf8", + ); + continue; + } + + if (parsed.type === "result") { + pushEvent({ + type: "collection-complete", + source: options.source, + resultPath: String(parsed.resultPath), + logPath, + }); + continue; + } + + if (parsed.type === "legacy-auth") { + pushEvent({ + type: "legacy-auth", + source: options.source, + message: + typeof parsed.message === "string" + ? parsed.message + : "This connector requires legacy headed authentication.", + logPath, + }); + continue; + } + + if (parsed.type === "error") { + pushEvent({ + type: "runtime-error", + source: options.source, + message: + typeof parsed.message === "string" + ? parsed.message + : "Connector run failed.", + logPath, + }); + continue; + } + } + }); + + child.on("close", () => { + settled = true; + logStream.end(); + flushQueue(); + }); + + pushEvent({ + type: "run-started", + source: options.source, + logPath, + }); + + while (!settled || queue.length > 0) { + if (queue.length === 0) { + await new Promise((resolve) => { + resolveQueue = resolve; + }); + continue; + } + yield queue.shift() as CliEvent; + } + } +} + +function getBundledRunConnectorPath(): string { + return fileURLToPath( + new URL("../../runtime-assets/run-connector.cjs", import.meta.url), + ); +} + +async function installChromium( + runnerDir: string, + logPath: string, +): Promise { + try { + await spawnForExit("npx", ["playwright", "install", "chromium"], { + cwd: runnerDir, + logPath, + }); + } catch { + await spawnForExit("npx", ["playwright", "install", "chromium"], { + cwd: runnerDir, + logPath, + env: { + ...process.env, + PLAYWRIGHT_SKIP_BROWSER_GC: "1", + }, + }); + } +} + +interface SpawnOptions { + cwd: string; + logPath: string; + env?: NodeJS.ProcessEnv; +} + +async function spawnForExit( + command: string, + args: string[], + options: SpawnOptions, +): Promise { + await ensureParentDir(options.logPath); + const logStream = fs.createWriteStream(options.logPath); + + await new Promise((resolve, reject) => { + const child = spawn(command, args, { + cwd: options.cwd, + env: options.env, + stdio: ["ignore", "pipe", "pipe"], + }); + + child.stdout.on("data", (chunk) => logStream.write(chunk)); + child.stderr.on("data", (chunk) => logStream.write(chunk)); + child.on("close", (code) => { + logStream.end(); + if (code === 0) { + resolve(); + return; + } + reject(new Error(`Command failed with exit code ${code}.`)); + }); + }); +} diff --git a/src/runtime/repo-paths.ts b/src/runtime/repo-paths.ts new file mode 100644 index 00000000..891ee531 --- /dev/null +++ b/src/runtime/repo-paths.ts @@ -0,0 +1,23 @@ +import fs from "node:fs"; +import path from "node:path"; + +export function findDataConnectorsDir(cwd = process.cwd()): string | null { + const envPath = process.env.VANA_DATA_CONNECTORS_DIR; + const candidates = [ + envPath, + path.resolve(cwd, "../data-connectors"), + path.resolve(import.meta.dirname, "../../../data-connectors"), + path.resolve(import.meta.dirname, "../../../../data-connectors"), + ].filter((value): value is string => Boolean(value)); + + for (const candidate of candidates) { + if ( + fs.existsSync(path.join(candidate, "registry.json")) && + fs.existsSync(path.join(candidate, "skills", "vana-connect", "scripts")) + ) { + return candidate; + } + } + + return null; +} diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts new file mode 100644 index 00000000..b412141e --- /dev/null +++ b/test/cli/index.test.ts @@ -0,0 +1,230 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; + +const mockListAvailableSources = vi.fn(); +const mockDetectPersonalServerTarget = vi.fn(); +const mockIngestResult = vi.fn(); +const mockReadCliState = vi.fn(); +const mockUpdateSourceState = vi.fn(); +const mockReaddir = vi.fn(); +const mockExistsSync = vi.fn(); + +let runtimeState = "installed"; +let fetchConnectorResult = { + connectorPath: "/tmp/connectors/valve/steam-playwright.js", + logPath: "/tmp/logs/fetch.log", +}; +let runConnectorEvents: Array> = []; + +vi.mock("../../src/runtime/index.js", () => ({ + findDataConnectorsDir: vi.fn(() => "/tmp/data-connectors"), + ManagedPlaywrightRuntime: class { + get state() { + return runtimeState; + } + + get runnerDir() { + return "/tmp/.dataconnect/playwright-runner"; + } + + async ensureInstalled() { + runtimeState = "installed"; + return { + runtime: "installed", + runtimePath: "/tmp/.dataconnect/playwright-runner", + logPath: "/tmp/logs/setup.log", + }; + } + + async fetchConnector() { + return fetchConnectorResult; + } + + async *runConnector() { + for (const event of runConnectorEvents) { + yield event; + } + } + }, +})); + +vi.mock("../../src/connectors/registry.js", () => ({ + listAvailableSources: mockListAvailableSources, +})); + +vi.mock("../../src/personal-server/index.js", () => ({ + detectPersonalServerTarget: mockDetectPersonalServerTarget, + ingestResult: mockIngestResult, +})); + +vi.mock("../../src/core/index.js", async () => { + const actual = await vi.importActual("../../src/core/index.js"); + return { + ...actual, + readCliState: mockReadCliState, + updateSourceState: mockUpdateSourceState, + getBrowserProfilesDir: vi.fn(() => "/tmp/browser-profiles"), + getLastResultPath: vi.fn(() => "/tmp/.dataconnect/last-result.json"), + }; +}); + +vi.mock("node:fs", () => ({ + default: { + existsSync: mockExistsSync, + }, +})); + +vi.mock("node:fs/promises", () => ({ + default: { + readdir: mockReaddir, + }, +})); + +describe("runCli", () => { + let stdout = ""; + let writeSpy: ReturnType; + + beforeEach(() => { + stdout = ""; + writeSpy = vi.spyOn(process.stdout, "write").mockImplementation((( + chunk: string | Uint8Array, + ) => { + stdout += chunk.toString(); + return true; + }) as typeof process.stdout.write); + + mockListAvailableSources.mockReset(); + mockDetectPersonalServerTarget.mockReset(); + mockIngestResult.mockReset(); + mockReadCliState.mockReset(); + mockUpdateSourceState.mockReset(); + mockReaddir.mockReset(); + mockExistsSync.mockReset(); + + runtimeState = "installed"; + fetchConnectorResult = { + connectorPath: "/tmp/connectors/valve/steam-playwright.js", + logPath: "/tmp/logs/fetch.log", + }; + runConnectorEvents = []; + + mockDetectPersonalServerTarget.mockResolvedValue({ + state: "unavailable", + url: null, + }); + mockIngestResult.mockResolvedValue([ + { type: "ingest-skipped", reason: "personal_server_unavailable" }, + ]); + mockReadCliState.mockResolvedValue({ version: 1, sources: {} }); + mockReaddir.mockRejectedValue(new Error("missing")); + mockExistsSync.mockReturnValue(false); + process.exitCode = 0; + }); + + afterEach(() => { + writeSpy.mockRestore(); + vi.clearAllMocks(); + vi.resetModules(); + }); + + it("lists available sources in json mode", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub" }, + { id: "steam", name: "Steam" }, + ]); + mockReaddir + .mockResolvedValueOnce([ + { + isDirectory: () => true, + name: "github", + }, + ]) + .mockResolvedValueOnce(["github-playwright.js"]); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "sources", "--json"]); + + expect(exitCode).toBe(0); + expect(JSON.parse(stdout)).toEqual({ + sources: [ + { id: "github", name: "GitHub", installed: true }, + { id: "steam", name: "Steam", installed: false }, + ], + }); + }); + + it("prints structured status output in json mode", async () => { + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + steam: { + sessionPresent: true, + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + }, + }, + }); + mockDetectPersonalServerTarget.mockResolvedValue({ + state: "available", + url: "http://localhost:8080", + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "status", "--json"]); + + expect(exitCode).toBe(0); + expect(JSON.parse(stdout)).toMatchObject({ + runtime: "installed", + personalServer: "available", + personalServerUrl: "http://localhost:8080", + sources: [ + { + source: "steam", + installed: false, + sessionPresent: true, + dataState: "collected_local", + }, + ], + }); + }); + + it("fails cleanly in json mode when input is required", async () => { + runConnectorEvents = [ + { + type: "needs-input", + source: "steam", + message: "Steam needs credentials", + fields: ["username", "password"], + }, + ]; + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli([ + "node", + "vana", + "connect", + "steam", + "--json", + "--no-input", + ]); + + const lines = stdout + .trim() + .split("\n") + .map((line) => JSON.parse(line)); + + expect(exitCode).toBe(1); + expect(lines).toContainEqual( + expect.objectContaining({ + type: "needs-input", + source: "steam", + }), + ); + expect(lines).toContainEqual( + expect.objectContaining({ + type: "outcome", + status: "needs_input", + source: "steam", + }), + ); + }); +}); From ed19fe22b9aee18357409a0d519d43f3847cc464 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 09:22:49 -0500 Subject: [PATCH 002/249] chore: vendor playwright runner into cli runtime --- README.md | 1 + .../playwright-runner/entitlements.plist | 12 + runtime-assets/playwright-runner/index.cjs | 1011 ++++++++++++++ .../playwright-runner/package-lock.json | 1242 +++++++++++++++++ runtime-assets/playwright-runner/package.json | 29 + .../playwright-runner/scripts/build.js | 182 +++ src/runtime/managed-playwright.ts | 68 +- 7 files changed, 2497 insertions(+), 48 deletions(-) create mode 100644 runtime-assets/playwright-runner/entitlements.plist create mode 100644 runtime-assets/playwright-runner/index.cjs create mode 100644 runtime-assets/playwright-runner/package-lock.json create mode 100644 runtime-assets/playwright-runner/package.json create mode 100644 runtime-assets/playwright-runner/scripts/build.js diff --git a/README.md b/README.md index 2a63d088..127030c3 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,7 @@ node dist/cli/bin.js status ``` The CLI installs its local browser runtime under `~/.dataconnect/`. +That runtime is bundled from `vana-connect` itself, so `vana setup` does not require a separate `data-connect` checkout. ### Programmatic runtime access diff --git a/runtime-assets/playwright-runner/entitlements.plist b/runtime-assets/playwright-runner/entitlements.plist new file mode 100644 index 00000000..46f67566 --- /dev/null +++ b/runtime-assets/playwright-runner/entitlements.plist @@ -0,0 +1,12 @@ + + + + + com.apple.security.cs.allow-jit + + com.apple.security.cs.allow-unsigned-executable-memory + + com.apple.security.cs.disable-library-validation + + + diff --git a/runtime-assets/playwright-runner/index.cjs b/runtime-assets/playwright-runner/index.cjs new file mode 100644 index 00000000..36d705fb --- /dev/null +++ b/runtime-assets/playwright-runner/index.cjs @@ -0,0 +1,1011 @@ +/** + * Playwright Runner for DataConnect + * + * Runs as a sidecar process, receives commands via stdin, sends results via stdout. + * + * Commands: + * - { type: "run", runId, connectorPath, url, headless, allowHeaded } + * - { type: "stop", runId } + * - { type: "evaluate", runId, script } + * - { type: "input-response", runId, requestId, data?, error? } + * - { type: "screenshot", runId } + * - { type: "quit" } + * + * Supports two-phase connectors: + * - Phase 1 (Browser): Login detection + credential extraction + * - Phase 2 (Background): Direct HTTP fetch without browser + */ + +const { chromium } = require('playwright'); +const fs = require('fs'); +const readline = require('readline'); +const path = require('path'); +const { execSync } = require('child_process'); + +// System Chrome paths by platform +const CHROME_PATHS = { + darwin: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', + win32: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', + linux: '/usr/bin/google-chrome' +}; + +// Get browser cache directory - checks multiple candidate paths +function getBrowserCacheDir() { + if (process.env.PLAYWRIGHT_BROWSERS_PATH) { + log(`Using PLAYWRIGHT_BROWSERS_PATH: ${process.env.PLAYWRIGHT_BROWSERS_PATH}`); + return process.env.PLAYWRIGHT_BROWSERS_PATH; + } + const home = process.env.HOME || process.env.USERPROFILE || ''; + const candidates = [ + path.join(home, '.dataconnect', 'browsers'), + path.join(home, '.dataconnect', 'playwright-runner', 'node_modules', 'playwright-core', '.local-browsers'), + ]; + for (const dir of candidates) { + if (fs.existsSync(dir)) { + log(`Found browser cache: ${dir}`); + return dir; + } + } + return candidates[0]; +} + +// Check if system Chrome exists +function getSystemChromePath() { + const chromePath = CHROME_PATHS[process.platform]; + log(`Checking system Chrome at: ${chromePath}`); + if (chromePath && fs.existsSync(chromePath)) { + log(`Found system Chrome: ${chromePath}`); + return chromePath; + } + log(`System Chrome not found at default path`); + // Try alternative Windows paths + if (process.platform === 'win32') { + const altPaths = [ + 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe', + path.join(process.env.LOCALAPPDATA || '', 'Google\\Chrome\\Application\\chrome.exe') + ]; + for (const p of altPaths) { + if (fs.existsSync(p)) return p; + } + } + // Try Edge on Windows + if (process.platform === 'win32') { + const edgePath = 'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe'; + if (fs.existsSync(edgePath)) return edgePath; + } + return null; +} + +// Check if Playwright Chromium is already downloaded (or bundled via PLAYWRIGHT_BROWSERS_PATH) +function getDownloadedChromiumPath() { + const cacheDir = getBrowserCacheDir(); + log(`Checking for Chromium in: ${cacheDir}`); + if (!fs.existsSync(cacheDir)) { + log(`Browser cache dir does not exist: ${cacheDir}`); + return null; + } + + // Look for chromium directory + const entries = fs.readdirSync(cacheDir); + const chromiumDir = entries.find(e => e.startsWith('chromium-') && !e.includes('headless')); + if (!chromiumDir) return null; + + const chromiumPath = path.join(cacheDir, chromiumDir); + + // Platform-specific executable paths (Playwright's "Chrome for Testing" structure) + if (process.platform === 'darwin') { + // Try arm64 first, then x64 + const paths = [ + path.join(chromiumPath, 'chrome-mac-arm64', 'Google Chrome for Testing.app', 'Contents', 'MacOS', 'Google Chrome for Testing'), + path.join(chromiumPath, 'chrome-mac', 'Google Chrome for Testing.app', 'Contents', 'MacOS', 'Google Chrome for Testing'), + // Legacy paths + path.join(chromiumPath, 'chrome-mac-arm64', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'), + path.join(chromiumPath, 'chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'), + ]; + for (const p of paths) { + if (fs.existsSync(p)) return p; + } + } else if (process.platform === 'win32') { + const paths = [ + path.join(chromiumPath, 'chrome-win', 'chrome.exe'), + path.join(chromiumPath, 'chrome-win64', 'chrome.exe'), + ]; + for (const p of paths) { + if (fs.existsSync(p)) return p; + } + } else { + const paths = [ + path.join(chromiumPath, 'chrome-linux', 'chrome'), + path.join(chromiumPath, 'chrome-linux64', 'chrome'), + ]; + for (const p of paths) { + if (fs.existsSync(p)) return p; + } + } + + return null; +} + +// Default Chrome user-data directories by platform +const CHROME_PROFILE_DIRS = { + darwin: path.join(process.env.HOME || '', 'Library', 'Application Support', 'Google', 'Chrome'), + win32: path.join(process.env.LOCALAPPDATA || '', 'Google', 'Chrome', 'User Data'), + linux: path.join(process.env.HOME || '', '.config', 'google-chrome'), +}; + +// Check whether a browser path points to system Chrome (not Playwright Chromium). +function isSystemChrome(browserPath) { + if (!browserPath) return false; + const lower = browserPath.toLowerCase(); + if (lower.includes('.databridge') || lower.includes('chromium') || lower.includes('chrome for testing')) { + return false; + } + return true; +} + +// Get the Chrome last-used profile directory path. +function getChromeProfileDir(chromeRoot) { + const localStatePath = path.join(chromeRoot, 'Local State'); + if (fs.existsSync(localStatePath)) { + try { + const localState = JSON.parse(fs.readFileSync(localStatePath, 'utf-8')); + const lastUsed = localState?.profile?.last_used; + if (lastUsed) { + const profileDir = path.join(chromeRoot, lastUsed); + if (fs.existsSync(profileDir)) { + log(`Chrome last-used profile: "${lastUsed}"`); + return profileDir; + } + } + } catch (e) { + log(`Warning: could not read Chrome Local State: ${e.message}`); + } + } + + const defaultDir = path.join(chromeRoot, 'Default'); + if (fs.existsSync(defaultDir)) return defaultDir; + return null; +} + +// Import cookies from the user's Chrome profile into a running Playwright +// browser context's Cookies database. This is done AFTER Chrome creates its +// own fresh profile, so we INSERT into Chrome's own db rather than replacing it +// (which Chrome would wipe on startup). +// +// The encrypted_value blobs use the same Keychain key (v10 format), so Chrome +// can decrypt them transparently — no Keychain popup needed since Chrome itself +// is the one reading them. +function importChromecookies(userDataDir, browserPath) { + if (!isSystemChrome(browserPath)) return; + + // Only import once + const markerFile = path.join(userDataDir, '.cookies-imported'); + if (fs.existsSync(markerFile)) { + log('Skipping cookie import — already done'); + return; + } + + const chromeRoot = CHROME_PROFILE_DIRS[process.platform]; + if (!chromeRoot || !fs.existsSync(chromeRoot)) return; + + const sourceProfileDir = getChromeProfileDir(chromeRoot); + if (!sourceProfileDir) return; + + const sourceCookies = path.join(sourceProfileDir, 'Cookies'); + if (!fs.existsSync(sourceCookies)) return; + + // Find the target Cookies db — Chrome creates it inside "Default/" by default + const targetCookies = path.join(userDataDir, 'Default', 'Cookies'); + if (!fs.existsSync(targetCookies)) { + log('Skipping cookie import — target Cookies db not found yet'); + return; + } + + try { + // Use sqlite3 to INSERT cookies from source into the target db. + // ATTACH the source db, then INSERT OR IGNORE to avoid duplicates. + const sql = ` + ATTACH DATABASE '${sourceCookies.replace(/'/g, "''")}' AS src; + INSERT OR REPLACE INTO cookies + SELECT * FROM src.cookies; + DETACH DATABASE src; + `; + execSync(`sqlite3 "${targetCookies}" "${sql}"`, { + encoding: 'utf-8', + timeout: 10000, + }); + + // Verify + const count = execSync( + `sqlite3 "${targetCookies}" "SELECT COUNT(*) FROM cookies;"`, + { encoding: 'utf-8' } + ).trim(); + log(`Imported cookies into profile — total cookies now: ${count}`); + + fs.writeFileSync(markerFile, new Date().toISOString()); + } catch (e) { + log(`Warning: could not import Chrome cookies: ${e.message}`); + } +} + +// Download Chromium using Playwright +async function downloadChromium(sendStatus) { + const cacheDir = getBrowserCacheDir(); + + // Create cache directory + if (!fs.existsSync(cacheDir)) { + fs.mkdirSync(cacheDir, { recursive: true }); + } + + log('Downloading Chromium browser (one-time setup)...'); + if (sendStatus) { + sendStatus('DOWNLOADING_BROWSER'); + } + + // Set environment for Playwright to use our cache dir + process.env.PLAYWRIGHT_BROWSERS_PATH = cacheDir; + + try { + // Use Playwright's CLI to download Chromium + execSync('npx playwright install chromium', { + stdio: 'inherit', + env: { ...process.env, PLAYWRIGHT_BROWSERS_PATH: cacheDir } + }); + log('Chromium download complete'); + return getDownloadedChromiumPath(); + } catch (error) { + log('Failed to download Chromium:', error.message); + throw new Error('Failed to download browser. Please install Google Chrome or try again.'); + } +} + +// Active browser contexts by runId +const activeRuns = new Map(); + +// Send message to parent process +function send(msg) { + process.stdout.write(JSON.stringify(msg) + '\n'); +} + +function drainStdout() { + return new Promise(resolve => { + if (process.stdout.writableNeedDrain) { + process.stdout.once('drain', resolve); + } else { + process.stdout.write('', resolve); + } + }); +} + +// Log to stderr (doesn't interfere with JSON protocol) +function log(...args) { + console.error('[PlaywrightRunner]', ...args); +} + +// Resolve browser executable path +function resolveBrowserPath() { + let browserPath = null; + + if (!process.env.DATACONNECT_SIMULATE_NO_CHROME) { + browserPath = getSystemChromePath(); + } else { + log('DATACONNECT_SIMULATE_NO_CHROME is set, skipping system Chrome detection'); + } + + if (!browserPath) { + browserPath = getDownloadedChromiumPath(); + } + + if (!browserPath) { + throw new Error('No browser available. The Rust backend should have downloaded Chromium before starting the connector.'); + } + + return browserPath; +} + +// Launch a persistent browser context +async function launchPersistentContext(userDataDir, headless, browserPath) { + // Ensure profile directory exists + fs.mkdirSync(userDataDir, { recursive: true }); + + const launchOptions = { + headless, + args: [ + '--disable-blink-features=AutomationControlled', + '--disable-features=MediaRouter,DialMediaRouteProvider', + ], + viewport: { width: 1280, height: 800 }, + userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', + }; + + if (browserPath) { + launchOptions.executablePath = browserPath; + } + + // When using system Chrome, disable Playwright's mock keychain so Chrome + // uses the real macOS Keychain. This lets it decrypt cookies imported from + // the user's real Chrome profile (both use the same "Chrome Safe Storage" + // Keychain entry). No popup — Chrome itself is already authorized. + if (isSystemChrome(browserPath)) { + launchOptions.ignoreDefaultArgs = ['--use-mock-keychain']; + } + + log(`Launching ${headless ? 'headless' : 'headed'} browser with profile: ${userDataDir}`); + const context = await chromium.launchPersistentContext(userDataDir, launchOptions); + log('Browser launched successfully'); + return context; +} + +// Create the page API that connectors use +function createPageApi(runState, runId) { + const networkCaptures = new Map(); + const capturedResponses = new Map(); + + // Helper to get current page, throw if browser is closed + function requirePage() { + if (runState.browserClosed || !runState.page) { + throw new Error('Browser is closed. Use page.httpFetch() for HTTP requests.'); + } + return runState.page; + } + + // Set up network interception on current page + function setupNetworkCapture(page) { + page.on('response', async (response) => { + const url = response.url(); + + for (const [key, config] of networkCaptures.entries()) { + if (config.urlPattern && !url.includes(config.urlPattern)) continue; + + try { + const request = response.request(); + const postData = request.postData() || ''; + + if (config.bodyPattern) { + const patterns = config.bodyPattern.split('|'); + if (!patterns.some(p => postData.includes(p))) continue; + } + + const body = await response.json().catch(() => null); + if (body) { + capturedResponses.set(key, { url, data: body, timestamp: Date.now() }); + send({ type: 'network-captured', runId, key, url }); + } + } catch (e) { + // Ignore errors for non-JSON responses + } + } + }); + } + + // Set up network capture on initial page + if (runState.page) { + setupNetworkCapture(runState.page); + } + + return { + goto: async (url, options = {}) => { + const page = requirePage(); + log(`pageApi.goto called with: ${url}`); + send({ type: 'log', runId, message: `Navigating to: ${url}` }); + const { waitUntil = 'domcontentloaded', timeout } = options; + const gotoOpts = { waitUntil }; + if (timeout != null) gotoOpts.timeout = timeout; + try { + await page.goto(url, gotoOpts); + log('pageApi.goto completed successfully'); + } catch (err) { + log(`pageApi.goto error: ${err.message}`); + throw err; + } + }, + + evaluate: async (script) => { + const page = requirePage(); + return await page.evaluate(script); + }, + + screenshot: async () => { + const page = requirePage(); + const buffer = await page.screenshot({ type: 'jpeg', quality: 70, timeout: 5000 }); + return buffer.toString('base64'); + }, + + requestInput: async (payload) => { + const requestId = `input-${++runState.requestCounter}`; + send({ type: 'request-input', runId, requestId, payload }); + return new Promise((resolve, reject) => { + runState.pendingInputs.set(requestId, { resolve, reject }); + }); + }, + + sleep: (ms) => new Promise(resolve => setTimeout(resolve, ms)), + + setData: async (key, value) => { + if (key === 'status') { + send({ type: 'log', runId, message: value }); + log(`[status] ${value}`); + } else if (key === 'error') { + log(`[error] ${value}`); + } else if (key === 'result') { + runState.hasResult = true; + } + send({ type: 'data', runId, key, value }); + }, + + // Structured progress update — drives the frontend progress UI + setProgress: async ({ phase, message, count }) => { + send({ type: 'status', runId, status: { type: 'COLLECTING', message, phase, count } }); + if (message) log(`[progress] ${message}`); + }, + + promptUser: async (message, checkFn, interval = 2000) => { + send({ type: 'log', runId, message }); + send({ type: 'status', runId, status: 'WAITING_FOR_USER' }); + + // Poll until condition is met + while (true) { + await new Promise(resolve => setTimeout(resolve, interval)); + try { + const result = await checkFn(); + if (result) { + send({ type: 'log', runId, message: 'User action completed' }); + return; + } + } catch (e) { + // Keep waiting + } + } + }, + + captureNetwork: async (config) => { + networkCaptures.set(config.key, { + urlPattern: config.urlPattern || '', + bodyPattern: config.bodyPattern || '' + }); + log(`Registered network capture: ${config.key}`); + }, + + getCapturedResponse: async (key) => { + const captured = capturedResponses.get(key); + return captured ? captured : null; + }, + + clearNetworkCaptures: async () => { + networkCaptures.clear(); + capturedResponses.clear(); + }, + + hasCapturedResponse: (key) => { + return capturedResponses.has(key); + }, + + // Close the browser but keep the Node.js process alive for background HTTP work. + // Cookies/session persist in the profile directory for next run. + closeBrowser: async () => { + if (runState.browserClosed) { + log('Browser already closed'); + return; + } + + log('Closing browser (connector requested closeBrowser)'); + + // Extract cookies before closing so httpFetch can use them + if (runState.context) { + try { + runState.cookies = await runState.context.cookies(); + log(`Extracted ${runState.cookies.length} cookies for background HTTP requests`); + } catch (e) { + log('Warning: could not extract cookies:', e.message); + runState.cookies = []; + } + } + + runState.browserClosed = true; + runState.browserClosedByConnector = true; + + if (runState.context) { + try { + await runState.context.close(); + } catch (e) { + log('Error closing context:', e.message); + } + runState.context = null; + runState.page = null; + } + + send({ type: 'log', runId, message: 'Browser closed, continuing in background...' }); + log('Browser closed, process stays alive for background work'); + }, + + // Escalate to headed mode for live human interaction (e.g., interactive CAPTCHAs). + // Gated by allowHeaded capability — if the driver doesn't support headed mode, + // navigates in the existing headless browser and returns { headed: false }. + showBrowser: async (url) => { + log('showBrowser requested'); + + if (runState.browserClosed) { + log('showBrowser called but browser is already closed'); + return { headed: false }; + } + + if (!runState.allowHeaded) { + log('Headed mode not available — navigating headless'); + if (url && runState.page) { + try { + await runState.page.goto(url, { waitUntil: 'domcontentloaded' }); + } catch (e) { + log(`showBrowser headless navigation failed: ${e.message}`); + } + } + send({ type: 'log', runId, message: 'Headed interaction unavailable — staying headless' }); + return { headed: false }; + } + + // Close existing browser if open + if (runState.context && !runState.browserClosed) { + log('Closing existing browser before reopening headed'); + runState.browserClosedByConnector = true; + try { + await runState.context.close(); + } catch (e) { + log('Error closing existing context:', e.message); + } + runState.context = null; + runState.page = null; + } + + // Launch new headed browser with persistent context + runState.browserClosed = false; + runState.browserClosedByConnector = false; + runState.headless = false; + const context = await launchPersistentContext(runState.userDataDir, false, runState.browserPath); + const page = context.pages()[0] || await context.newPage(); + + // Set up disconnect handler + context.browser().on('disconnected', () => { + if (!runState.connectorCompleted && !runState.browserClosedByConnector) { + log(`Browser disconnected for run ${runId} (user closed window)`); + runState.browserClosed = true; + runState.context = null; + runState.page = null; + activeRuns.delete(runId); + send({ type: 'status', runId, status: 'STOPPED' }); + drainStdout().then(() => process.exit(0)); + } + }); + + // Update state + runState.context = context; + runState.page = page; + + // Re-setup network capture on new page + setupNetworkCapture(page); + + // Navigate to URL + if (url) { + await page.goto(url, { waitUntil: 'domcontentloaded' }); + } + + send({ type: 'log', runId, message: 'Browser opened for user interaction' }); + log('Headed browser opened'); + return { headed: true }; + }, + + // Switch to headless mode — browser becomes invisible but stays running. + // Use this after credentials are captured so the user doesn't see the browser + // during data collection, while preserving the TLS fingerprint for Cloudflare. + goHeadless: async () => { + if (runState.headless && !runState.browserClosed) { + log('Already in headless mode'); + return; + } + + log('Switching to headless mode'); + + // Close existing headed browser + if (runState.context && !runState.browserClosed) { + runState.browserClosedByConnector = true; + try { + await runState.context.close(); + } catch (e) { + log('Error closing headed context:', e.message); + } + runState.context = null; + runState.page = null; + } + + // Reopen headless browser with persistent context + runState.browserClosed = false; + runState.browserClosedByConnector = false; + runState.headless = true; + const context = await launchPersistentContext(runState.userDataDir, true, runState.browserPath); + const page = context.pages()[0] || await context.newPage(); + + // Set up disconnect handler + context.browser().on('disconnected', () => { + if (!runState.connectorCompleted && !runState.browserClosedByConnector) { + log(`Browser disconnected for run ${runId}`); + runState.browserClosed = true; + runState.context = null; + runState.page = null; + activeRuns.delete(runId); + send({ type: 'status', runId, status: 'STOPPED' }); + drainStdout().then(() => process.exit(0)); + } + }); + + // Update state + runState.context = context; + runState.page = page; + + // Re-setup network capture on new page + setupNetworkCapture(page); + + // Navigate to establish browser context + await page.goto('https://chatgpt.com/', { waitUntil: 'domcontentloaded' }); + + send({ type: 'log', runId, message: 'Switched to headless mode for background data collection' }); + log('Switched to headless mode'); + }, + + // Direct HTTP fetch from Node.js — no browser needed. + // Works after closeBrowser() for background data collection. + // Automatically includes cookies extracted from the browser session. + httpFetch: async (url, options = {}) => { + const { timeout = 30000, ...fetchOptions } = options; + + // Auto-include cookies from the closed browser session + if (runState.cookies && runState.cookies.length > 0) { + try { + const urlObj = new URL(url); + const relevantCookies = runState.cookies + .filter(c => { + const cookieDomain = c.domain.startsWith('.') ? c.domain.slice(1) : c.domain; + return urlObj.hostname === cookieDomain || urlObj.hostname.endsWith('.' + cookieDomain); + }) + .map(c => `${c.name}=${c.value}`) + .join('; '); + if (relevantCookies) { + fetchOptions.headers = { ...fetchOptions.headers, cookie: relevantCookies }; + } + } catch (e) { + // Ignore cookie injection errors + } + } + + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), timeout); + try { + const response = await fetch(url, { + ...fetchOptions, + signal: controller.signal, + }); + clearTimeout(timeoutId); + const text = await response.text(); + let json = null; + try { json = JSON.parse(text); } catch {} + if (!response.ok) { + log(`[httpFetch] ${response.status} ${response.statusText} for ${url.substring(0, 100)}`); + log(`[httpFetch] Response body (first 200 chars): ${text.substring(0, 200)}`); + } + return { + ok: response.ok, + status: response.status, + headers: Object.fromEntries(response.headers.entries()), + text, + json, + error: null, + }; + } catch (err) { + clearTimeout(timeoutId); + return { + ok: false, + status: 0, + headers: {}, + text: '', + json: null, + error: err.message, + }; + } + }, + }; +} + +// Run a connector +async function runConnector(runId, connectorPath, url, headless = true, allowHeaded = true) { + log(`Starting run ${runId} with connector ${connectorPath} (headless: ${headless}, allowHeaded: ${allowHeaded})`); + + // Derive connector ID for persistent browser profile + const connectorFileName = path.basename(connectorPath, path.extname(connectorPath)); + const home = process.env.HOME || process.env.USERPROFILE || ''; + const userDataDir = path.join(home, '.dataconnect', 'browser-profiles', connectorFileName); + + // Mutable state shared with pageApi + const runState = { + context: null, + page: null, + browserClosed: false, + browserClosedByConnector: false, + connectorCompleted: false, + headless, + allowHeaded, + userDataDir, + browserPath: null, + requestCounter: 0, + pendingInputs: new Map(), + }; + + try { + // Read connector script + const connectorCode = fs.readFileSync(connectorPath, 'utf-8'); + + // Resolve browser executable + runState.browserPath = resolveBrowserPath(); + log(`Using browser: ${runState.browserPath}`); + + // On first run, we need to: + // 1. Launch Chrome briefly so it creates its profile/Cookies db + // 2. Close it + // 3. INSERT cookies from the user's Chrome profile into the db + // 4. Relaunch — now Chrome loads the imported cookies from disk + const markerFile = path.join(userDataDir, '.cookies-imported'); + if (isSystemChrome(runState.browserPath) && !fs.existsSync(markerFile)) { + log('First run: launching browser to initialize profile...'); + const tempCtx = await launchPersistentContext(userDataDir, true, runState.browserPath); + await tempCtx.close(); + log('Profile initialized, importing cookies...'); + importChromecookies(userDataDir, runState.browserPath); + } + + // Launch browser with persistent context (cookies already in db on first run) + const context = await launchPersistentContext(userDataDir, headless, runState.browserPath); + const page = context.pages()[0] || await context.newPage(); + + runState.context = context; + runState.page = page; + + // Handle browser disconnect (user closed browser window) + context.browser().on('disconnected', () => { + if (!runState.connectorCompleted && !runState.browserClosedByConnector && activeRuns.has(runId)) { + log(`Browser disconnected for run ${runId} (user closed window)`); + runState.browserClosed = true; + runState.context = null; + runState.page = null; + activeRuns.delete(runId); + send({ type: 'status', runId, status: 'STOPPED' }); + drainStdout().then(() => process.exit(0)); + } + }); + + // Store for cleanup + activeRuns.set(runId, { + runState, + setCompleted: () => { runState.connectorCompleted = true; }, + }); + + // Create page API + const pageApi = createPageApi(runState, runId); + + // Navigate to starting URL + log(`Navigating to initial URL: ${url}`); + await page.goto(url, { waitUntil: 'domcontentloaded' }); + log('Initial navigation complete'); + send({ type: 'status', runId, status: 'RUNNING' }); + + // Build the connector execution wrapper + // The connector has an IIFE at the end - we need to return its Promise + // Find the LAST IIFE and add 'return' before it (there may be inner IIFEs in helpers) + let modifiedCode = connectorCode; + + // Find all occurrences and replace the last one + const iifePattern = /\n\(async\s*\(\)\s*=>\s*\{/g; + const matches = [...modifiedCode.matchAll(iifePattern)]; + + if (matches.length > 0) { + const lastMatch = matches[matches.length - 1]; + const insertPos = lastMatch.index; + modifiedCode = modifiedCode.substring(0, insertPos) + + '\nreturn (async () => {' + + modifiedCode.substring(insertPos + lastMatch[0].length); + log(`Added return before IIFE (match ${matches.length} of ${matches.length})`); + } else { + log('WARNING: Could not find IIFE pattern in connector code'); + } + + // Execute connector with page API in scope using AsyncFunction + log('Starting connector execution...'); + const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor; + const runConnectorFn = new AsyncFunction('page', modifiedCode); + + log('Calling connector function...'); + const result = await runConnectorFn.call(null, pageApi); + log('Connector function completed with result:', result ? 'has result' : 'undefined'); + + if (!runState.hasResult && result != null) { + const exportData = (result && result.success && result.data) ? result.data : result; + send({ type: 'result', runId, data: exportData }); + } + send({ type: 'status', runId, status: 'COMPLETE' }); + + // Mark as completed to prevent disconnect handler from sending STOPPED + runState.connectorCompleted = true; + + // Close browser if still open + if (!runState.browserClosed && runState.context) { + await new Promise(resolve => setTimeout(resolve, 2000)); + try { + await runState.context.close(); + } catch (e) { + // Browser may already be closed + } + } + + activeRuns.delete(runId); + + // Exit process after successful completion + log('Connector completed successfully, exiting'); + await drainStdout(); + process.exit(0); + + } catch (error) { + log(`Error in run ${runId}:`, error.message); + send({ type: 'error', runId, message: error.message }); + send({ type: 'status', runId, status: 'ERROR' }); + + // Cleanup on error + if (runState.context && !runState.browserClosed) { + try { + await runState.context.close(); + } catch (e) {} + } + activeRuns.delete(runId); + + // Exit process after error + log('Connector failed, exiting'); + await drainStdout(); + process.exit(1); + } +} + +// Stop a run +async function stopRun(runId) { + const run = activeRuns.get(runId); + if (run) { + log(`Stopping run ${runId}`); + // Reject any pending requestInput promises so the connector doesn't hang + for (const [, pending] of run.runState.pendingInputs) { + pending.reject(new Error('Run stopped')); + } + run.runState.pendingInputs.clear(); + if (run.runState && run.runState.context && !run.runState.browserClosed) { + await run.runState.context.close().catch(() => {}); + } + activeRuns.delete(runId); + send({ type: 'status', runId, status: 'STOPPED' }); + } +} + +// Main loop - read commands from stdin +async function main() { + log('Playwright runner started'); + send({ type: 'ready' }); + + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + terminal: false + }); + + for await (const line of rl) { + try { + const cmd = JSON.parse(line); + + switch (cmd.type) { + case 'run': + runConnector(cmd.runId, cmd.connectorPath, cmd.url, cmd.headless !== false, cmd.allowHeaded !== false); + break; + + case 'stop': + await stopRun(cmd.runId); + break; + + case 'quit': + log('Quitting...'); + for (const [runId, run] of activeRuns) { + if (run.runState && run.runState.context && !run.runState.browserClosed) { + await run.runState.context.close().catch(() => {}); + } + } + process.exit(0); + break; + + case 'test': + // Simple test to prove Node.js is working + const os = require('os'); + send({ + type: 'test-result', + data: { + nodejs: process.version, + platform: process.platform, + arch: process.arch, + hostname: os.hostname(), + cpus: os.cpus().length, + memory: Math.round(os.totalmem() / 1024 / 1024 / 1024) + ' GB', + uptime: Math.round(os.uptime() / 60) + ' minutes' + } + }); + break; + + case 'evaluate': { + const evalRun = activeRuns.get(cmd.runId); + if (!evalRun) { + send({ type: 'evaluate-result', runId: cmd.runId, error: `No active run: ${cmd.runId}` }); + break; + } + const { runState: evalState } = evalRun; + if (evalState.browserClosed || !evalState.page) { + send({ type: 'evaluate-result', runId: cmd.runId, error: 'Browser is closed' }); + break; + } + // Non-blocking: don't await so stdin loop keeps processing other commands. + // Wrapped in try so synchronous throws (e.g. page torn down mid-call) + // always produce an evaluate-result instead of hanging the driver. + try { + evalState.page.evaluate(cmd.script) + .then(result => send({ type: 'evaluate-result', runId: cmd.runId, result })) + .catch(e => send({ type: 'evaluate-result', runId: cmd.runId, error: e.stack || e.message })); + } catch (e) { + send({ type: 'evaluate-result', runId: cmd.runId, error: e.stack || e.message }); + } + break; + } + + case 'input-response': { + const inputRun = activeRuns.get(cmd.runId); + if (!inputRun) break; + const pending = inputRun.runState.pendingInputs.get(cmd.requestId); + if (!pending) break; + inputRun.runState.pendingInputs.delete(cmd.requestId); + if (cmd.error) { + pending.reject(new Error(typeof cmd.error === 'string' ? cmd.error : JSON.stringify(cmd.error))); + } else { + pending.resolve(cmd.data); + } + break; + } + + case 'screenshot': { + const ssRun = activeRuns.get(cmd.runId); + if (!ssRun) { + send({ type: 'screenshot-result', runId: cmd.runId, error: `No active run: ${cmd.runId}` }); + break; + } + const { runState: ssState } = ssRun; + if (ssState.browserClosed || !ssState.page) { + send({ type: 'screenshot-result', runId: cmd.runId, error: 'Browser is closed' }); + break; + } + try { + ssState.page.screenshot({ type: 'jpeg', quality: 70, timeout: 5000 }) + .then(buffer => send({ type: 'screenshot-result', runId: cmd.runId, data: buffer.toString('base64') })) + .catch(e => send({ type: 'screenshot-result', runId: cmd.runId, error: e.stack || e.message })); + } catch (e) { + send({ type: 'screenshot-result', runId: cmd.runId, error: e.stack || e.message }); + } + break; + } + + default: + log(`Unknown command: ${cmd.type}`); + } + } catch (error) { + log(`Error parsing command: ${error.message}`); + } + } +} + +main().catch(err => { + log('Fatal error:', err); + process.exit(1); +}); diff --git a/runtime-assets/playwright-runner/package-lock.json b/runtime-assets/playwright-runner/package-lock.json new file mode 100644 index 00000000..65810c35 --- /dev/null +++ b/runtime-assets/playwright-runner/package-lock.json @@ -0,0 +1,1242 @@ +{ + "name": "dataconnect-playwright-runner", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "dataconnect-playwright-runner", + "version": "1.0.0", + "hasInstallScript": true, + "dependencies": { + "playwright": "^1.40.0" + }, + "devDependencies": { + "@yao-pkg/pkg": "^5.12.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@yao-pkg/pkg": { + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/@yao-pkg/pkg/-/pkg-5.16.1.tgz", + "integrity": "sha512-crUlnNFSReFNFuXDc4f3X2ignkFlc9kmEG7Bp/mJMA1jYyqR0lqjZGLgrSDYTYiNsYud8AzgA3RY1DrMdcUZWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/generator": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "@yao-pkg/pkg-fetch": "3.5.16", + "into-stream": "^6.0.0", + "minimist": "^1.2.6", + "multistream": "^4.1.0", + "picocolors": "^1.1.0", + "picomatch": "^4.0.2", + "prebuild-install": "^7.1.1", + "resolve": "^1.22.0", + "stream-meter": "^1.0.4", + "tinyglobby": "^0.2.9" + }, + "bin": { + "pkg": "lib-es5/bin.js" + } + }, + "node_modules/@yao-pkg/pkg-fetch": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@yao-pkg/pkg-fetch/-/pkg-fetch-3.5.16.tgz", + "integrity": "sha512-mCnZvZz0/Ylpk4TGyt34pqWJyBGYJM8c3dPoMRV8Knodv2QhcYS4iXb5kB/JNWkrRtCKukGZIKkMLXZ3TQlzPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.6", + "picocolors": "^1.1.0", + "progress": "^2.0.3", + "semver": "^7.3.5", + "tar-fs": "^2.1.1", + "yargs": "^16.2.0" + }, + "bin": { + "pkg-fetch": "lib-es5/bin.js" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "license": "ISC" + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/into-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", + "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/multistream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/multistream/-/multistream-4.1.0.tgz", + "integrity": "sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "once": "^1.4.0", + "readable-stream": "^3.6.0" + } + }, + "node_modules/multistream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-abi": { + "version": "3.87.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz", + "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/playwright": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/stream-meter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stream-meter/-/stream-meter-1.0.4.tgz", + "integrity": "sha512-4sOEtrbgFotXwnEuzzsQBYEV1elAeFSO8rSGeTwabuX1RRn/kEq9JVH7I0MRBhKVRR0sJkr0M0QCH7yOLf9fhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.1.4" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + } + } +} diff --git a/runtime-assets/playwright-runner/package.json b/runtime-assets/playwright-runner/package.json new file mode 100644 index 00000000..ad29f1fa --- /dev/null +++ b/runtime-assets/playwright-runner/package.json @@ -0,0 +1,29 @@ +{ + "name": "dataconnect-playwright-runner", + "version": "1.0.0", + "description": "Playwright sidecar for DataConnect connectors", + "main": "index.cjs", + "type": "module", + "scripts": { + "start": "node index.cjs", + "build": "node scripts/build.js", + "build:lean": "node scripts/build.js --lean", + "postinstall": "playwright install chromium" + }, + "pkg": { + "assets": [], + "targets": [ + "node20-macos-arm64", + "node20-macos-x64", + "node20-win-x64", + "node20-linux-x64" + ], + "outputPath": "dist" + }, + "dependencies": { + "playwright": "^1.40.0" + }, + "devDependencies": { + "@yao-pkg/pkg": "^5.12.0" + } +} diff --git a/runtime-assets/playwright-runner/scripts/build.js b/runtime-assets/playwright-runner/scripts/build.js new file mode 100644 index 00000000..3dedb5a3 --- /dev/null +++ b/runtime-assets/playwright-runner/scripts/build.js @@ -0,0 +1,182 @@ +/** + * Build script for playwright-runner + * + * Creates standalone binaries with bundled Node.js and copies Playwright browsers. + */ + +import { execSync } from "child_process"; +import { + existsSync, + mkdirSync, + cpSync, + rmSync, + readdirSync, + statSync, +} from "fs"; +import { join, dirname } from "path"; +import { fileURLToPath } from "url"; +import { homedir, platform, arch } from "os"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const ROOT = join(__dirname, ".."); +const DIST = join(ROOT, "dist"); + +// Determine current platform +const PLATFORM = platform(); +const ARCH = arch(); + +function log(msg) { + console.log(`[build] ${msg}`); +} + +function exec(cmd, opts = {}) { + log(`Running: ${cmd}`); + execSync(cmd, { stdio: "inherit", cwd: ROOT, ...opts }); +} + +// Get Playwright browser path +function getPlaywrightBrowserPath() { + // Playwright stores browsers in different locations depending on OS: + // - macOS: ~/Library/Caches/ms-playwright + // - Linux: ~/.cache/ms-playwright + // - Windows: %LOCALAPPDATA%\ms-playwright + if (PLATFORM === "darwin") { + return join(homedir(), "Library", "Caches", "ms-playwright"); + } else if (PLATFORM === "win32") { + return join(process.env.LOCALAPPDATA || "", "ms-playwright"); + } + return join(homedir(), ".cache", "ms-playwright"); +} + +// Find the chromium directory +function findChromiumDir(basePath) { + if (!existsSync(basePath)) { + return null; + } + + const entries = readdirSync(basePath); + const chromiumDir = entries.find((e) => e.startsWith("chromium-")); + + if (chromiumDir) { + return join(basePath, chromiumDir); + } + return null; +} + +// Get pkg target for current platform +function getPkgTarget() { + const nodeVersion = "node20"; + + if (PLATFORM === "darwin") { + return ARCH === "arm64" + ? `${nodeVersion}-macos-arm64` + : `${nodeVersion}-macos-x64`; + } else if (PLATFORM === "win32") { + return `${nodeVersion}-win-x64`; + } else { + return `${nodeVersion}-linux-x64`; + } +} + +// Get output binary name +function getOutputName() { + const base = "playwright-runner"; + if (PLATFORM === "win32") { + return `${base}.exe`; + } + return base; +} + +async function build() { + // Check for --lean flag (production builds without bundled Chromium) + const isLean = process.argv.includes("--lean"); + + log(`Starting ${isLean ? "LEAN " : ""}build...`); + if (isLean) { + log( + "Lean mode: Chromium will NOT be bundled (downloaded on-demand at runtime)", + ); + } + + // Clean dist + if (existsSync(DIST)) { + rmSync(DIST, { recursive: true }); + } + mkdirSync(DIST, { recursive: true }); + + // Only install browsers if not lean build (needed for pkg to bundle playwright-core) + if (!isLean) { + log("Ensuring Playwright browsers are installed..."); + exec("npx playwright install chromium"); + } + + // Build with pkg + const target = getPkgTarget(); + const outputName = getOutputName(); + const outputPath = join(DIST, outputName); + + log(`Building for target: ${target}`); + exec( + `npx pkg index.cjs -t ${target} -o "${outputPath}" --no-bytecode --public-packages '*' --public`, + ); + + // Copy Playwright browser (only for non-lean builds) + if (!isLean) { + const browserSrc = getPlaywrightBrowserPath(); + const chromiumDir = findChromiumDir(browserSrc); + + if (chromiumDir) { + const browserDest = join(DIST, "browsers"); + mkdirSync(browserDest, { recursive: true }); + + const chromiumDirName = + chromiumDir.split("/").pop() || chromiumDir.split("\\").pop(); + const destPath = join(browserDest, chromiumDirName); + + log(`Copying Chromium from ${chromiumDir} to ${destPath}...`); + cpSync(chromiumDir, destPath, { recursive: true }); + + log("Browser copied successfully"); + } else { + log( + 'WARNING: Could not find Chromium browser. Run "npx playwright install chromium" first.', + ); + } + } else { + log("Skipping browser copy (lean build)"); + } + + // Sign the binary on macOS (required for it to run after being copied) + if (PLATFORM === "darwin") { + log("Signing binary for macOS..."); + try { + execSync(`codesign --force --sign - "${outputPath}"`, { + stdio: "inherit", + }); + log("Binary signed successfully"); + } catch { + log( + "Warning: Failed to sign binary (may cause issues running the binary)", + ); + } + } + + log("Build complete!"); + log(`Output: ${DIST}`); + + // List output + const files = readdirSync(DIST); + log("Contents:"); + for (const file of files) { + const stat = statSync(join(DIST, file)); + const size = stat.isDirectory() + ? "dir" + : `${(stat.size / 1024 / 1024).toFixed(1)}MB`; + log(` ${file} (${size})`); + } +} + +build().catch((err) => { + console.error("Build failed:", err); + process.exit(1); +}); diff --git a/src/runtime/managed-playwright.ts b/src/runtime/managed-playwright.ts index 28c22cff..4759c8e5 100644 --- a/src/runtime/managed-playwright.ts +++ b/src/runtime/managed-playwright.ts @@ -68,60 +68,26 @@ export class ManagedPlaywrightRuntime { const logPath = getTimestampedLogPath("setup"); await ensureParentDir(logPath); const homeDir = getDataConnectHome(); - const stagingDir = path.join(homeDir, "_data-connect"); - const runnerSourceDir = path.join(stagingDir, "playwright-runner"); const runConnectorTargetPath = path.join(homeDir, "run-connector.cjs"); + const runnerSourceDir = getBundledPlaywrightRunnerDir(); await fsp.mkdir(homeDir, { recursive: true }); await fsp.mkdir(getConnectorCacheDir(), { recursive: true }); - await fsp.rm(stagingDir, { recursive: true, force: true }); + await fsp.rm(this.runnerDir, { recursive: true, force: true }); + await fsp.cp(runnerSourceDir, this.runnerDir, { recursive: true }); - try { - await spawnForExit( - "git", - [ - "clone", - "--depth", - "1", - "--filter=blob:none", - "--sparse", - "--branch", - process.env.VANA_PLAYWRIGHT_RUNNER_GIT_REF ?? "main", - "https://github.com/vana-com/data-connect.git", - stagingDir, - ], - { - cwd: homeDir, - logPath, - }, - ); - await spawnForExit( - "git", - ["sparse-checkout", "set", "playwright-runner"], - { - cwd: stagingDir, - logPath, - }, - ); - - await fsp.rm(this.runnerDir, { recursive: true, force: true }); - await fsp.cp(runnerSourceDir, this.runnerDir, { recursive: true }); - - await spawnForExit("npm", ["install"], { - cwd: this.runnerDir, - logPath, - env: { - ...process.env, - CI: autoApprove ? "1" : process.env.CI, - }, - }); + await spawnForExit("npm", ["install", "--ignore-scripts"], { + cwd: this.runnerDir, + logPath, + env: { + ...process.env, + CI: autoApprove ? "1" : process.env.CI, + }, + }); - await installChromium(this.runnerDir, logPath); - await ensureParentDir(runConnectorTargetPath); - await fsp.copyFile(getBundledRunConnectorPath(), runConnectorTargetPath); - } finally { - await fsp.rm(stagingDir, { recursive: true, force: true }); - } + await installChromium(this.runnerDir, logPath); + await ensureParentDir(runConnectorTargetPath); + await fsp.copyFile(getBundledRunConnectorPath(), runConnectorTargetPath); return { runtime: this.state, @@ -334,6 +300,12 @@ function getBundledRunConnectorPath(): string { ); } +function getBundledPlaywrightRunnerDir(): string { + return fileURLToPath( + new URL("../../runtime-assets/playwright-runner", import.meta.url), + ); +} + async function installChromium( runnerDir: string, logPath: string, From ff55fb0454b334db9b7e9cd200e6ceadb5b1254f Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 10:33:25 -0500 Subject: [PATCH 003/249] docs: add cli install path research --- docs/CLI-INSTALL-PATH-RESEARCH.md | 101 ++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 docs/CLI-INSTALL-PATH-RESEARCH.md diff --git a/docs/CLI-INSTALL-PATH-RESEARCH.md b/docs/CLI-INSTALL-PATH-RESEARCH.md new file mode 100644 index 00000000..8dc449e2 --- /dev/null +++ b/docs/CLI-INSTALL-PATH-RESEARCH.md @@ -0,0 +1,101 @@ +# CLI Install Path Research + +## Question + +What do best-in-class CLI install paths look like, and should `vana` require something like `pnpm` or `npx`? + +## Short answer + +- Requiring `pnpm` is **not** best-in-class for a general-purpose CLI. +- Requiring `npx` is **better as a temporary bridge**, but still not ideal as the final public install path. +- The best install stories usually avoid tying the user to a language-specific package manager unless the CLI is clearly aimed at that ecosystem. + +## What the strongest references suggest + +### `uv` + +`uv` is a strong reference because it offers direct installation methods rather than assuming a Python package manager. The installation story is product-native and low-friction. + +Source: + +- https://docs.astral.sh/uv/getting-started/installation/ + +### GitHub CLI (`gh`) + +`gh` is a strong reference because it is installable through standard OS package channels like Homebrew, apt, yum/dnf, winget, and Scoop. It does not expect users to already have a language-specific toolchain. + +Source: + +- https://cli.github.com/manual/installation + +### Doppler CLI + +Doppler follows a similar pattern: install through standard package manager channels and shell-friendly instructions. + +Source: + +- https://docs.doppler.com/docs/install-cli + +### Vercel CLI + +Vercel is the main counterexample. Its audience is heavily JavaScript-centric, so an npm-based install path is acceptable. Even there, that works because the product is already aimed at developers who almost certainly have Node. + +Source: + +- https://vercel.com/docs/cli + +## Implication for `vana` + +`vana` is not purely a JavaScript-developer tool. + +It is meant to work for: + +- coding agents +- vibe coders +- developers outside the JS ecosystem +- eventually users who may not think in terms of Node/npm/pnpm at all + +That means: + +- `pnpm` should **not** be a required prerequisite for the public install path +- `npx` is acceptable for canary/internal/early-adopter usage +- the final public install story should likely be one or more of: + - standalone shell installer + - Homebrew + - winget + - maybe Scoop + - direct binary or installer downloads + +## Current recommendation + +### Short-term + +Use: + +```bash +npx -y @opendatalabs/connect@canary +``` + +Why: + +- no `pnpm` prerequisite +- works today +- good enough for internal and agent-driven testing + +### Long-term + +Aim for a primary install story that does **not** require Node package-manager literacy. + +The likely quality bar is: + +- primary: OS-native / shell-native install +- secondary: npm/npx for JS-heavy workflows +- tertiary: canary/nightly channel for pre-release testing + +## Conclusion + +`npx` is a good bridge. + +It is **better than `pnpm`** for the current stage because it removes one unnecessary prerequisite. + +But if `vana` is meant to be truly best-in-class, the final install story should not depend on users already identifying as Node developers. From 400bcfc0177646944349099b57d519b6f27a9daa Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 11:56:26 -0500 Subject: [PATCH 004/249] feat(cli): add SEA artifact build pipeline --- .github/workflows/ci.yml | 13 + .github/workflows/prerelease.yml | 8 + .github/workflows/release.yml | 1 + .gitignore | 4 +- .releaserc.yaml | 7 +- README.md | 11 + package.json | 7 +- pnpm-lock.yaml | 227 ++++---- runtime-assets/playwright-runner/index.cjs | 642 ++++++++++++++------- runtime-assets/run-connector.cjs | 258 ++++++--- scripts/build-sea.mjs | 163 ++++++ src/runtime/bundled-assets.ts | 63 ++ src/runtime/managed-playwright.ts | 22 +- 13 files changed, 1000 insertions(+), 426 deletions(-) create mode 100644 scripts/build-sea.mjs create mode 100644 src/runtime/bundled-assets.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 171da8eb..8e9f6427 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,3 +30,16 @@ jobs: - run: pnpm lint:eslint - run: pnpm format:check - run: pnpm test + + sea-smoke: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm build + - run: pnpm build:sea:smoke diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 82c0c7f1..70ebc08a 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -25,6 +25,14 @@ jobs: registry-url: https://registry.npmjs.org - run: pnpm install --frozen-lockfile - run: pnpm build + - run: pnpm build:sea + - uses: actions/upload-artifact@v4 + with: + name: vana-sea-linux-x64 + path: | + artifacts/sea/vana-linux-x64 + artifacts/sea/vana-linux-x64.tar.gz + artifacts/sea/vana-linux-x64.tar.gz.sha256 - name: Publish canary run: | SHORT_SHA=$(git rev-parse --short HEAD) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4feddab5..1f5c9b3c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,6 +28,7 @@ jobs: registry-url: https://registry.npmjs.org - run: pnpm install --frozen-lockfile - run: pnpm build + - run: pnpm build:sea - run: pnpm exec semantic-release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 218974d0..a21e92a0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ node_modules/ dist/ +.sea-work/ +artifacts/ *.tsbuildinfo .DS_Store coverage/ @@ -11,4 +13,4 @@ __pycache__/ .claude .cursor .agents -.agent \ No newline at end of file +.agent diff --git a/.releaserc.yaml b/.releaserc.yaml index 271015b3..f1cecabd 100644 --- a/.releaserc.yaml +++ b/.releaserc.yaml @@ -14,4 +14,9 @@ plugins: - package.json - package-lock.json message: "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" - - "@semantic-release/github" + - - "@semantic-release/github" + - assets: + - path: artifacts/sea/vana-linux-x64.tar.gz + label: vana-linux-x64.tar.gz + - path: artifacts/sea/vana-linux-x64.tar.gz.sha256 + label: vana-linux-x64.tar.gz.sha256 diff --git a/README.md b/README.md index 127030c3..dca216fe 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,17 @@ node dist/cli/bin.js status The CLI installs its local browser runtime under `~/.dataconnect/`. That runtime is bundled from `vana-connect` itself, so `vana setup` does not require a separate `data-connect` checkout. +To build a standalone SEA executable locally: + +```bash +pnpm build +pnpm build:sea +./artifacts/sea/vana-linux-x64 status --json +``` + +`pnpm build:sea` uses Node 25's `--build-sea` flow and embeds the runtime assets needed for `vana setup`. +It also produces `artifacts/sea/vana-linux-x64.tar.gz` and a matching `.sha256` checksum file for release/distribution. + ### Programmatic runtime access If you are building an app surface like DataConnect Desktop or a hosted orchestration layer, use the SDK modules instead of shelling out to the CLI where possible. diff --git a/package.json b/package.json index e2215655..82972481 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,8 @@ }, "scripts": { "build": "tsc --build", + "build:sea": "npx -y node@25 ./scripts/build-sea.mjs", + "build:sea:smoke": "npx -y node@25 ./scripts/build-sea.mjs --smoke", "clean": "tsc --build --clean", "cli": "node dist/cli/bin.js", "skills:sync": "node scripts/sync-skills.js", @@ -87,8 +89,8 @@ "zod": "^4.3.6" }, "peerDependencies": { - "viem": "^2.0.0", - "react": ">=18.0.0" + "react": ">=18.0.0", + "viem": "^2.0.0" }, "peerDependenciesMeta": { "react": { @@ -106,6 +108,7 @@ "@types/node": "^25.2.0", "@types/react": "^19.0.0", "conventional-changelog-conventionalcommits": "^9.1.0", + "esbuild": "^0.27.4", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", "husky": "^9.1.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49159d0e..4264b9a0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,6 +47,9 @@ importers: conventional-changelog-conventionalcommits: specifier: ^9.1.0 version: 9.1.0 + esbuild: + specifier: ^0.27.4 + version: 0.27.4 eslint: specifier: ^9.39.2 version: 9.39.2(jiti@2.6.1) @@ -859,235 +862,235 @@ packages: integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==, } - "@esbuild/aix-ppc64@0.27.3": + "@esbuild/aix-ppc64@0.27.4": resolution: { - integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==, + integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==, } engines: { node: ">=18" } cpu: [ppc64] os: [aix] - "@esbuild/android-arm64@0.27.3": + "@esbuild/android-arm64@0.27.4": resolution: { - integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==, + integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==, } engines: { node: ">=18" } cpu: [arm64] os: [android] - "@esbuild/android-arm@0.27.3": + "@esbuild/android-arm@0.27.4": resolution: { - integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==, + integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==, } engines: { node: ">=18" } cpu: [arm] os: [android] - "@esbuild/android-x64@0.27.3": + "@esbuild/android-x64@0.27.4": resolution: { - integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==, + integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==, } engines: { node: ">=18" } cpu: [x64] os: [android] - "@esbuild/darwin-arm64@0.27.3": + "@esbuild/darwin-arm64@0.27.4": resolution: { - integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==, + integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==, } engines: { node: ">=18" } cpu: [arm64] os: [darwin] - "@esbuild/darwin-x64@0.27.3": + "@esbuild/darwin-x64@0.27.4": resolution: { - integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==, + integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==, } engines: { node: ">=18" } cpu: [x64] os: [darwin] - "@esbuild/freebsd-arm64@0.27.3": + "@esbuild/freebsd-arm64@0.27.4": resolution: { - integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==, + integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==, } engines: { node: ">=18" } cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-x64@0.27.3": + "@esbuild/freebsd-x64@0.27.4": resolution: { - integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==, + integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==, } engines: { node: ">=18" } cpu: [x64] os: [freebsd] - "@esbuild/linux-arm64@0.27.3": + "@esbuild/linux-arm64@0.27.4": resolution: { - integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==, + integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==, } engines: { node: ">=18" } cpu: [arm64] os: [linux] - "@esbuild/linux-arm@0.27.3": + "@esbuild/linux-arm@0.27.4": resolution: { - integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==, + integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==, } engines: { node: ">=18" } cpu: [arm] os: [linux] - "@esbuild/linux-ia32@0.27.3": + "@esbuild/linux-ia32@0.27.4": resolution: { - integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==, + integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==, } engines: { node: ">=18" } cpu: [ia32] os: [linux] - "@esbuild/linux-loong64@0.27.3": + "@esbuild/linux-loong64@0.27.4": resolution: { - integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==, + integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==, } engines: { node: ">=18" } cpu: [loong64] os: [linux] - "@esbuild/linux-mips64el@0.27.3": + "@esbuild/linux-mips64el@0.27.4": resolution: { - integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==, + integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==, } engines: { node: ">=18" } cpu: [mips64el] os: [linux] - "@esbuild/linux-ppc64@0.27.3": + "@esbuild/linux-ppc64@0.27.4": resolution: { - integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==, + integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==, } engines: { node: ">=18" } cpu: [ppc64] os: [linux] - "@esbuild/linux-riscv64@0.27.3": + "@esbuild/linux-riscv64@0.27.4": resolution: { - integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==, + integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==, } engines: { node: ">=18" } cpu: [riscv64] os: [linux] - "@esbuild/linux-s390x@0.27.3": + "@esbuild/linux-s390x@0.27.4": resolution: { - integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==, + integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==, } engines: { node: ">=18" } cpu: [s390x] os: [linux] - "@esbuild/linux-x64@0.27.3": + "@esbuild/linux-x64@0.27.4": resolution: { - integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==, + integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==, } engines: { node: ">=18" } cpu: [x64] os: [linux] - "@esbuild/netbsd-arm64@0.27.3": + "@esbuild/netbsd-arm64@0.27.4": resolution: { - integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==, + integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==, } engines: { node: ">=18" } cpu: [arm64] os: [netbsd] - "@esbuild/netbsd-x64@0.27.3": + "@esbuild/netbsd-x64@0.27.4": resolution: { - integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==, + integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==, } engines: { node: ">=18" } cpu: [x64] os: [netbsd] - "@esbuild/openbsd-arm64@0.27.3": + "@esbuild/openbsd-arm64@0.27.4": resolution: { - integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==, + integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==, } engines: { node: ">=18" } cpu: [arm64] os: [openbsd] - "@esbuild/openbsd-x64@0.27.3": + "@esbuild/openbsd-x64@0.27.4": resolution: { - integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==, + integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==, } engines: { node: ">=18" } cpu: [x64] os: [openbsd] - "@esbuild/openharmony-arm64@0.27.3": + "@esbuild/openharmony-arm64@0.27.4": resolution: { - integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==, + integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==, } engines: { node: ">=18" } cpu: [arm64] os: [openharmony] - "@esbuild/sunos-x64@0.27.3": + "@esbuild/sunos-x64@0.27.4": resolution: { - integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==, + integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==, } engines: { node: ">=18" } cpu: [x64] os: [sunos] - "@esbuild/win32-arm64@0.27.3": + "@esbuild/win32-arm64@0.27.4": resolution: { - integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==, + integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==, } engines: { node: ">=18" } cpu: [arm64] os: [win32] - "@esbuild/win32-ia32@0.27.3": + "@esbuild/win32-ia32@0.27.4": resolution: { - integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==, + integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==, } engines: { node: ">=18" } cpu: [ia32] os: [win32] - "@esbuild/win32-x64@0.27.3": + "@esbuild/win32-x64@0.27.4": resolution: { - integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==, + integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==, } engines: { node: ">=18" } cpu: [x64] @@ -6724,10 +6727,10 @@ packages: integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==, } - esbuild@0.27.3: + esbuild@0.27.4: resolution: { - integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==, + integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==, } engines: { node: ">=18" } hasBin: true @@ -12656,82 +12659,82 @@ snapshots: "@emotion/unitless@0.10.0": {} - "@esbuild/aix-ppc64@0.27.3": + "@esbuild/aix-ppc64@0.27.4": optional: true - "@esbuild/android-arm64@0.27.3": + "@esbuild/android-arm64@0.27.4": optional: true - "@esbuild/android-arm@0.27.3": + "@esbuild/android-arm@0.27.4": optional: true - "@esbuild/android-x64@0.27.3": + "@esbuild/android-x64@0.27.4": optional: true - "@esbuild/darwin-arm64@0.27.3": + "@esbuild/darwin-arm64@0.27.4": optional: true - "@esbuild/darwin-x64@0.27.3": + "@esbuild/darwin-x64@0.27.4": optional: true - "@esbuild/freebsd-arm64@0.27.3": + "@esbuild/freebsd-arm64@0.27.4": optional: true - "@esbuild/freebsd-x64@0.27.3": + "@esbuild/freebsd-x64@0.27.4": optional: true - "@esbuild/linux-arm64@0.27.3": + "@esbuild/linux-arm64@0.27.4": optional: true - "@esbuild/linux-arm@0.27.3": + "@esbuild/linux-arm@0.27.4": optional: true - "@esbuild/linux-ia32@0.27.3": + "@esbuild/linux-ia32@0.27.4": optional: true - "@esbuild/linux-loong64@0.27.3": + "@esbuild/linux-loong64@0.27.4": optional: true - "@esbuild/linux-mips64el@0.27.3": + "@esbuild/linux-mips64el@0.27.4": optional: true - "@esbuild/linux-ppc64@0.27.3": + "@esbuild/linux-ppc64@0.27.4": optional: true - "@esbuild/linux-riscv64@0.27.3": + "@esbuild/linux-riscv64@0.27.4": optional: true - "@esbuild/linux-s390x@0.27.3": + "@esbuild/linux-s390x@0.27.4": optional: true - "@esbuild/linux-x64@0.27.3": + "@esbuild/linux-x64@0.27.4": optional: true - "@esbuild/netbsd-arm64@0.27.3": + "@esbuild/netbsd-arm64@0.27.4": optional: true - "@esbuild/netbsd-x64@0.27.3": + "@esbuild/netbsd-x64@0.27.4": optional: true - "@esbuild/openbsd-arm64@0.27.3": + "@esbuild/openbsd-arm64@0.27.4": optional: true - "@esbuild/openbsd-x64@0.27.3": + "@esbuild/openbsd-x64@0.27.4": optional: true - "@esbuild/openharmony-arm64@0.27.3": + "@esbuild/openharmony-arm64@0.27.4": optional: true - "@esbuild/sunos-x64@0.27.3": + "@esbuild/sunos-x64@0.27.4": optional: true - "@esbuild/win32-arm64@0.27.3": + "@esbuild/win32-arm64@0.27.4": optional: true - "@esbuild/win32-ia32@0.27.3": + "@esbuild/win32-ia32@0.27.4": optional: true - "@esbuild/win32-x64@0.27.3": + "@esbuild/win32-x64@0.27.4": optional: true "@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))": @@ -16096,14 +16099,14 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - "@vitest/mocker@4.0.18(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(vite@7.3.1(@types/node@20.19.33)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))": + "@vitest/mocker@4.0.18(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))": dependencies: "@vitest/spy": 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.12.10(@types/node@20.19.33)(typescript@5.7.3) - vite: 7.3.1(@types/node@20.19.33)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) "@vitest/mocker@4.0.18(msw@2.12.10(@types/node@25.2.2)(typescript@5.7.3))(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))": dependencies: @@ -17902,34 +17905,34 @@ snapshots: dependencies: es6-promise: 4.2.8 - esbuild@0.27.3: + esbuild@0.27.4: optionalDependencies: - "@esbuild/aix-ppc64": 0.27.3 - "@esbuild/android-arm": 0.27.3 - "@esbuild/android-arm64": 0.27.3 - "@esbuild/android-x64": 0.27.3 - "@esbuild/darwin-arm64": 0.27.3 - "@esbuild/darwin-x64": 0.27.3 - "@esbuild/freebsd-arm64": 0.27.3 - "@esbuild/freebsd-x64": 0.27.3 - "@esbuild/linux-arm": 0.27.3 - "@esbuild/linux-arm64": 0.27.3 - "@esbuild/linux-ia32": 0.27.3 - "@esbuild/linux-loong64": 0.27.3 - "@esbuild/linux-mips64el": 0.27.3 - "@esbuild/linux-ppc64": 0.27.3 - "@esbuild/linux-riscv64": 0.27.3 - "@esbuild/linux-s390x": 0.27.3 - "@esbuild/linux-x64": 0.27.3 - "@esbuild/netbsd-arm64": 0.27.3 - "@esbuild/netbsd-x64": 0.27.3 - "@esbuild/openbsd-arm64": 0.27.3 - "@esbuild/openbsd-x64": 0.27.3 - "@esbuild/openharmony-arm64": 0.27.3 - "@esbuild/sunos-x64": 0.27.3 - "@esbuild/win32-arm64": 0.27.3 - "@esbuild/win32-ia32": 0.27.3 - "@esbuild/win32-x64": 0.27.3 + "@esbuild/aix-ppc64": 0.27.4 + "@esbuild/android-arm": 0.27.4 + "@esbuild/android-arm64": 0.27.4 + "@esbuild/android-x64": 0.27.4 + "@esbuild/darwin-arm64": 0.27.4 + "@esbuild/darwin-x64": 0.27.4 + "@esbuild/freebsd-arm64": 0.27.4 + "@esbuild/freebsd-x64": 0.27.4 + "@esbuild/linux-arm": 0.27.4 + "@esbuild/linux-arm64": 0.27.4 + "@esbuild/linux-ia32": 0.27.4 + "@esbuild/linux-loong64": 0.27.4 + "@esbuild/linux-mips64el": 0.27.4 + "@esbuild/linux-ppc64": 0.27.4 + "@esbuild/linux-riscv64": 0.27.4 + "@esbuild/linux-s390x": 0.27.4 + "@esbuild/linux-x64": 0.27.4 + "@esbuild/netbsd-arm64": 0.27.4 + "@esbuild/netbsd-x64": 0.27.4 + "@esbuild/openbsd-arm64": 0.27.4 + "@esbuild/openbsd-x64": 0.27.4 + "@esbuild/openharmony-arm64": 0.27.4 + "@esbuild/sunos-x64": 0.27.4 + "@esbuild/win32-arm64": 0.27.4 + "@esbuild/win32-ia32": 0.27.4 + "@esbuild/win32-x64": 0.27.4 escalade@3.2.0: {} @@ -20881,7 +20884,7 @@ snapshots: vite@7.3.1(@types/node@20.19.33)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2): dependencies: - esbuild: 0.27.3 + esbuild: 0.27.4 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 @@ -20896,7 +20899,7 @@ snapshots: vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2): dependencies: - esbuild: 0.27.3 + esbuild: 0.27.4 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 @@ -20912,7 +20915,7 @@ snapshots: vitest@4.0.18(@types/node@20.19.33)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(yaml@2.8.2): dependencies: "@vitest/expect": 4.0.18 - "@vitest/mocker": 4.0.18(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(vite@7.3.1(@types/node@20.19.33)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) + "@vitest/mocker": 4.0.18(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) "@vitest/pretty-format": 4.0.18 "@vitest/runner": 4.0.18 "@vitest/snapshot": 4.0.18 diff --git a/runtime-assets/playwright-runner/index.cjs b/runtime-assets/playwright-runner/index.cjs index 36d705fb..f3d90e1d 100644 --- a/runtime-assets/playwright-runner/index.cjs +++ b/runtime-assets/playwright-runner/index.cjs @@ -16,29 +16,38 @@ * - Phase 2 (Background): Direct HTTP fetch without browser */ -const { chromium } = require('playwright'); -const fs = require('fs'); -const readline = require('readline'); -const path = require('path'); -const { execSync } = require('child_process'); +const { chromium } = require("playwright"); +const fs = require("fs"); +const readline = require("readline"); +const path = require("path"); +const { execSync } = require("child_process"); // System Chrome paths by platform const CHROME_PATHS = { - darwin: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', - win32: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', - linux: '/usr/bin/google-chrome' + darwin: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + win32: "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", + linux: "/usr/bin/google-chrome", }; // Get browser cache directory - checks multiple candidate paths function getBrowserCacheDir() { if (process.env.PLAYWRIGHT_BROWSERS_PATH) { - log(`Using PLAYWRIGHT_BROWSERS_PATH: ${process.env.PLAYWRIGHT_BROWSERS_PATH}`); + log( + `Using PLAYWRIGHT_BROWSERS_PATH: ${process.env.PLAYWRIGHT_BROWSERS_PATH}`, + ); return process.env.PLAYWRIGHT_BROWSERS_PATH; } - const home = process.env.HOME || process.env.USERPROFILE || ''; + const home = process.env.HOME || process.env.USERPROFILE || ""; const candidates = [ - path.join(home, '.dataconnect', 'browsers'), - path.join(home, '.dataconnect', 'playwright-runner', 'node_modules', 'playwright-core', '.local-browsers'), + path.join(home, ".dataconnect", "browsers"), + path.join( + home, + ".dataconnect", + "playwright-runner", + "node_modules", + "playwright-core", + ".local-browsers", + ), ]; for (const dir of candidates) { if (fs.existsSync(dir)) { @@ -59,18 +68,22 @@ function getSystemChromePath() { } log(`System Chrome not found at default path`); // Try alternative Windows paths - if (process.platform === 'win32') { + if (process.platform === "win32") { const altPaths = [ - 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe', - path.join(process.env.LOCALAPPDATA || '', 'Google\\Chrome\\Application\\chrome.exe') + "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", + path.join( + process.env.LOCALAPPDATA || "", + "Google\\Chrome\\Application\\chrome.exe", + ), ]; for (const p of altPaths) { if (fs.existsSync(p)) return p; } } // Try Edge on Windows - if (process.platform === 'win32') { - const edgePath = 'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe'; + if (process.platform === "win32") { + const edgePath = + "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"; if (fs.existsSync(edgePath)) return edgePath; } return null; @@ -87,36 +100,66 @@ function getDownloadedChromiumPath() { // Look for chromium directory const entries = fs.readdirSync(cacheDir); - const chromiumDir = entries.find(e => e.startsWith('chromium-') && !e.includes('headless')); + const chromiumDir = entries.find( + (e) => e.startsWith("chromium-") && !e.includes("headless"), + ); if (!chromiumDir) return null; const chromiumPath = path.join(cacheDir, chromiumDir); // Platform-specific executable paths (Playwright's "Chrome for Testing" structure) - if (process.platform === 'darwin') { + if (process.platform === "darwin") { // Try arm64 first, then x64 const paths = [ - path.join(chromiumPath, 'chrome-mac-arm64', 'Google Chrome for Testing.app', 'Contents', 'MacOS', 'Google Chrome for Testing'), - path.join(chromiumPath, 'chrome-mac', 'Google Chrome for Testing.app', 'Contents', 'MacOS', 'Google Chrome for Testing'), + path.join( + chromiumPath, + "chrome-mac-arm64", + "Google Chrome for Testing.app", + "Contents", + "MacOS", + "Google Chrome for Testing", + ), + path.join( + chromiumPath, + "chrome-mac", + "Google Chrome for Testing.app", + "Contents", + "MacOS", + "Google Chrome for Testing", + ), // Legacy paths - path.join(chromiumPath, 'chrome-mac-arm64', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'), - path.join(chromiumPath, 'chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'), + path.join( + chromiumPath, + "chrome-mac-arm64", + "Chromium.app", + "Contents", + "MacOS", + "Chromium", + ), + path.join( + chromiumPath, + "chrome-mac", + "Chromium.app", + "Contents", + "MacOS", + "Chromium", + ), ]; for (const p of paths) { if (fs.existsSync(p)) return p; } - } else if (process.platform === 'win32') { + } else if (process.platform === "win32") { const paths = [ - path.join(chromiumPath, 'chrome-win', 'chrome.exe'), - path.join(chromiumPath, 'chrome-win64', 'chrome.exe'), + path.join(chromiumPath, "chrome-win", "chrome.exe"), + path.join(chromiumPath, "chrome-win64", "chrome.exe"), ]; for (const p of paths) { if (fs.existsSync(p)) return p; } } else { const paths = [ - path.join(chromiumPath, 'chrome-linux', 'chrome'), - path.join(chromiumPath, 'chrome-linux64', 'chrome'), + path.join(chromiumPath, "chrome-linux", "chrome"), + path.join(chromiumPath, "chrome-linux64", "chrome"), ]; for (const p of paths) { if (fs.existsSync(p)) return p; @@ -128,16 +171,31 @@ function getDownloadedChromiumPath() { // Default Chrome user-data directories by platform const CHROME_PROFILE_DIRS = { - darwin: path.join(process.env.HOME || '', 'Library', 'Application Support', 'Google', 'Chrome'), - win32: path.join(process.env.LOCALAPPDATA || '', 'Google', 'Chrome', 'User Data'), - linux: path.join(process.env.HOME || '', '.config', 'google-chrome'), + darwin: path.join( + process.env.HOME || "", + "Library", + "Application Support", + "Google", + "Chrome", + ), + win32: path.join( + process.env.LOCALAPPDATA || "", + "Google", + "Chrome", + "User Data", + ), + linux: path.join(process.env.HOME || "", ".config", "google-chrome"), }; // Check whether a browser path points to system Chrome (not Playwright Chromium). function isSystemChrome(browserPath) { if (!browserPath) return false; const lower = browserPath.toLowerCase(); - if (lower.includes('.databridge') || lower.includes('chromium') || lower.includes('chrome for testing')) { + if ( + lower.includes(".databridge") || + lower.includes("chromium") || + lower.includes("chrome for testing") + ) { return false; } return true; @@ -145,10 +203,10 @@ function isSystemChrome(browserPath) { // Get the Chrome last-used profile directory path. function getChromeProfileDir(chromeRoot) { - const localStatePath = path.join(chromeRoot, 'Local State'); + const localStatePath = path.join(chromeRoot, "Local State"); if (fs.existsSync(localStatePath)) { try { - const localState = JSON.parse(fs.readFileSync(localStatePath, 'utf-8')); + const localState = JSON.parse(fs.readFileSync(localStatePath, "utf-8")); const lastUsed = localState?.profile?.last_used; if (lastUsed) { const profileDir = path.join(chromeRoot, lastUsed); @@ -162,7 +220,7 @@ function getChromeProfileDir(chromeRoot) { } } - const defaultDir = path.join(chromeRoot, 'Default'); + const defaultDir = path.join(chromeRoot, "Default"); if (fs.existsSync(defaultDir)) return defaultDir; return null; } @@ -179,9 +237,9 @@ function importChromecookies(userDataDir, browserPath) { if (!isSystemChrome(browserPath)) return; // Only import once - const markerFile = path.join(userDataDir, '.cookies-imported'); + const markerFile = path.join(userDataDir, ".cookies-imported"); if (fs.existsSync(markerFile)) { - log('Skipping cookie import — already done'); + log("Skipping cookie import — already done"); return; } @@ -191,13 +249,13 @@ function importChromecookies(userDataDir, browserPath) { const sourceProfileDir = getChromeProfileDir(chromeRoot); if (!sourceProfileDir) return; - const sourceCookies = path.join(sourceProfileDir, 'Cookies'); + const sourceCookies = path.join(sourceProfileDir, "Cookies"); if (!fs.existsSync(sourceCookies)) return; // Find the target Cookies db — Chrome creates it inside "Default/" by default - const targetCookies = path.join(userDataDir, 'Default', 'Cookies'); + const targetCookies = path.join(userDataDir, "Default", "Cookies"); if (!fs.existsSync(targetCookies)) { - log('Skipping cookie import — target Cookies db not found yet'); + log("Skipping cookie import — target Cookies db not found yet"); return; } @@ -211,14 +269,14 @@ function importChromecookies(userDataDir, browserPath) { DETACH DATABASE src; `; execSync(`sqlite3 "${targetCookies}" "${sql}"`, { - encoding: 'utf-8', + encoding: "utf-8", timeout: 10000, }); // Verify const count = execSync( `sqlite3 "${targetCookies}" "SELECT COUNT(*) FROM cookies;"`, - { encoding: 'utf-8' } + { encoding: "utf-8" }, ).trim(); log(`Imported cookies into profile — total cookies now: ${count}`); @@ -237,9 +295,9 @@ async function downloadChromium(sendStatus) { fs.mkdirSync(cacheDir, { recursive: true }); } - log('Downloading Chromium browser (one-time setup)...'); + log("Downloading Chromium browser (one-time setup)..."); if (sendStatus) { - sendStatus('DOWNLOADING_BROWSER'); + sendStatus("DOWNLOADING_BROWSER"); } // Set environment for Playwright to use our cache dir @@ -247,15 +305,17 @@ async function downloadChromium(sendStatus) { try { // Use Playwright's CLI to download Chromium - execSync('npx playwright install chromium', { - stdio: 'inherit', - env: { ...process.env, PLAYWRIGHT_BROWSERS_PATH: cacheDir } + execSync("npx playwright install chromium", { + stdio: "inherit", + env: { ...process.env, PLAYWRIGHT_BROWSERS_PATH: cacheDir }, }); - log('Chromium download complete'); + log("Chromium download complete"); return getDownloadedChromiumPath(); } catch (error) { - log('Failed to download Chromium:', error.message); - throw new Error('Failed to download browser. Please install Google Chrome or try again.'); + log("Failed to download Chromium:", error.message); + throw new Error( + "Failed to download browser. Please install Google Chrome or try again.", + ); } } @@ -264,22 +324,22 @@ const activeRuns = new Map(); // Send message to parent process function send(msg) { - process.stdout.write(JSON.stringify(msg) + '\n'); + process.stdout.write(JSON.stringify(msg) + "\n"); } function drainStdout() { - return new Promise(resolve => { + return new Promise((resolve) => { if (process.stdout.writableNeedDrain) { - process.stdout.once('drain', resolve); + process.stdout.once("drain", resolve); } else { - process.stdout.write('', resolve); + process.stdout.write("", resolve); } }); } // Log to stderr (doesn't interfere with JSON protocol) function log(...args) { - console.error('[PlaywrightRunner]', ...args); + console.error("[PlaywrightRunner]", ...args); } // Resolve browser executable path @@ -289,7 +349,9 @@ function resolveBrowserPath() { if (!process.env.DATACONNECT_SIMULATE_NO_CHROME) { browserPath = getSystemChromePath(); } else { - log('DATACONNECT_SIMULATE_NO_CHROME is set, skipping system Chrome detection'); + log( + "DATACONNECT_SIMULATE_NO_CHROME is set, skipping system Chrome detection", + ); } if (!browserPath) { @@ -297,7 +359,9 @@ function resolveBrowserPath() { } if (!browserPath) { - throw new Error('No browser available. The Rust backend should have downloaded Chromium before starting the connector.'); + throw new Error( + "No browser available. The Rust backend should have downloaded Chromium before starting the connector.", + ); } return browserPath; @@ -311,11 +375,12 @@ async function launchPersistentContext(userDataDir, headless, browserPath) { const launchOptions = { headless, args: [ - '--disable-blink-features=AutomationControlled', - '--disable-features=MediaRouter,DialMediaRouteProvider', + "--disable-blink-features=AutomationControlled", + "--disable-features=MediaRouter,DialMediaRouteProvider", ], viewport: { width: 1280, height: 800 }, - userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', + userAgent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", }; if (browserPath) { @@ -327,12 +392,17 @@ async function launchPersistentContext(userDataDir, headless, browserPath) { // the user's real Chrome profile (both use the same "Chrome Safe Storage" // Keychain entry). No popup — Chrome itself is already authorized. if (isSystemChrome(browserPath)) { - launchOptions.ignoreDefaultArgs = ['--use-mock-keychain']; + launchOptions.ignoreDefaultArgs = ["--use-mock-keychain"]; } - log(`Launching ${headless ? 'headless' : 'headed'} browser with profile: ${userDataDir}`); - const context = await chromium.launchPersistentContext(userDataDir, launchOptions); - log('Browser launched successfully'); + log( + `Launching ${headless ? "headless" : "headed"} browser with profile: ${userDataDir}`, + ); + const context = await chromium.launchPersistentContext( + userDataDir, + launchOptions, + ); + log("Browser launched successfully"); return context; } @@ -344,14 +414,16 @@ function createPageApi(runState, runId) { // Helper to get current page, throw if browser is closed function requirePage() { if (runState.browserClosed || !runState.page) { - throw new Error('Browser is closed. Use page.httpFetch() for HTTP requests.'); + throw new Error( + "Browser is closed. Use page.httpFetch() for HTTP requests.", + ); } return runState.page; } // Set up network interception on current page function setupNetworkCapture(page) { - page.on('response', async (response) => { + page.on("response", async (response) => { const url = response.url(); for (const [key, config] of networkCaptures.entries()) { @@ -359,17 +431,21 @@ function createPageApi(runState, runId) { try { const request = response.request(); - const postData = request.postData() || ''; + const postData = request.postData() || ""; if (config.bodyPattern) { - const patterns = config.bodyPattern.split('|'); - if (!patterns.some(p => postData.includes(p))) continue; + const patterns = config.bodyPattern.split("|"); + if (!patterns.some((p) => postData.includes(p))) continue; } const body = await response.json().catch(() => null); if (body) { - capturedResponses.set(key, { url, data: body, timestamp: Date.now() }); - send({ type: 'network-captured', runId, key, url }); + capturedResponses.set(key, { + url, + data: body, + timestamp: Date.now(), + }); + send({ type: "network-captured", runId, key, url }); } } catch (e) { // Ignore errors for non-JSON responses @@ -387,13 +463,13 @@ function createPageApi(runState, runId) { goto: async (url, options = {}) => { const page = requirePage(); log(`pageApi.goto called with: ${url}`); - send({ type: 'log', runId, message: `Navigating to: ${url}` }); - const { waitUntil = 'domcontentloaded', timeout } = options; + send({ type: "log", runId, message: `Navigating to: ${url}` }); + const { waitUntil = "domcontentloaded", timeout } = options; const gotoOpts = { waitUntil }; if (timeout != null) gotoOpts.timeout = timeout; try { await page.goto(url, gotoOpts); - log('pageApi.goto completed successfully'); + log("pageApi.goto completed successfully"); } catch (err) { log(`pageApi.goto error: ${err.message}`); throw err; @@ -407,49 +483,57 @@ function createPageApi(runState, runId) { screenshot: async () => { const page = requirePage(); - const buffer = await page.screenshot({ type: 'jpeg', quality: 70, timeout: 5000 }); - return buffer.toString('base64'); + const buffer = await page.screenshot({ + type: "jpeg", + quality: 70, + timeout: 5000, + }); + return buffer.toString("base64"); }, requestInput: async (payload) => { const requestId = `input-${++runState.requestCounter}`; - send({ type: 'request-input', runId, requestId, payload }); + send({ type: "request-input", runId, requestId, payload }); return new Promise((resolve, reject) => { runState.pendingInputs.set(requestId, { resolve, reject }); }); }, - sleep: (ms) => new Promise(resolve => setTimeout(resolve, ms)), + sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)), setData: async (key, value) => { - if (key === 'status') { - send({ type: 'log', runId, message: value }); + if (key === "status") { + send({ type: "log", runId, message: value }); log(`[status] ${value}`); - } else if (key === 'error') { + } else if (key === "error") { log(`[error] ${value}`); - } else if (key === 'result') { + } else if (key === "result") { runState.hasResult = true; } - send({ type: 'data', runId, key, value }); + send({ type: "data", runId, key, value }); }, // Structured progress update — drives the frontend progress UI setProgress: async ({ phase, message, count }) => { - send({ type: 'status', runId, status: { type: 'COLLECTING', message, phase, count } }); + send({ + type: "status", + runId, + status: { type: "COLLECTING", message, phase, count }, + }); if (message) log(`[progress] ${message}`); }, promptUser: async (message, checkFn, interval = 2000) => { - send({ type: 'log', runId, message }); - send({ type: 'status', runId, status: 'WAITING_FOR_USER' }); + send({ type: "log", runId, message }); + send({ type: "status", runId, status: "WAITING_FOR_USER" }); // Poll until condition is met while (true) { - await new Promise(resolve => setTimeout(resolve, interval)); + await new Promise((resolve) => setTimeout(resolve, interval)); try { const result = await checkFn(); if (result) { - send({ type: 'log', runId, message: 'User action completed' }); + send({ type: "log", runId, message: "User action completed" }); return; } } catch (e) { @@ -460,8 +544,8 @@ function createPageApi(runState, runId) { captureNetwork: async (config) => { networkCaptures.set(config.key, { - urlPattern: config.urlPattern || '', - bodyPattern: config.bodyPattern || '' + urlPattern: config.urlPattern || "", + bodyPattern: config.bodyPattern || "", }); log(`Registered network capture: ${config.key}`); }, @@ -484,19 +568,21 @@ function createPageApi(runState, runId) { // Cookies/session persist in the profile directory for next run. closeBrowser: async () => { if (runState.browserClosed) { - log('Browser already closed'); + log("Browser already closed"); return; } - log('Closing browser (connector requested closeBrowser)'); + log("Closing browser (connector requested closeBrowser)"); // Extract cookies before closing so httpFetch can use them if (runState.context) { try { runState.cookies = await runState.context.cookies(); - log(`Extracted ${runState.cookies.length} cookies for background HTTP requests`); + log( + `Extracted ${runState.cookies.length} cookies for background HTTP requests`, + ); } catch (e) { - log('Warning: could not extract cookies:', e.message); + log("Warning: could not extract cookies:", e.message); runState.cookies = []; } } @@ -508,48 +594,56 @@ function createPageApi(runState, runId) { try { await runState.context.close(); } catch (e) { - log('Error closing context:', e.message); + log("Error closing context:", e.message); } runState.context = null; runState.page = null; } - send({ type: 'log', runId, message: 'Browser closed, continuing in background...' }); - log('Browser closed, process stays alive for background work'); + send({ + type: "log", + runId, + message: "Browser closed, continuing in background...", + }); + log("Browser closed, process stays alive for background work"); }, // Escalate to headed mode for live human interaction (e.g., interactive CAPTCHAs). // Gated by allowHeaded capability — if the driver doesn't support headed mode, // navigates in the existing headless browser and returns { headed: false }. showBrowser: async (url) => { - log('showBrowser requested'); + log("showBrowser requested"); if (runState.browserClosed) { - log('showBrowser called but browser is already closed'); + log("showBrowser called but browser is already closed"); return { headed: false }; } if (!runState.allowHeaded) { - log('Headed mode not available — navigating headless'); + log("Headed mode not available — navigating headless"); if (url && runState.page) { try { - await runState.page.goto(url, { waitUntil: 'domcontentloaded' }); + await runState.page.goto(url, { waitUntil: "domcontentloaded" }); } catch (e) { log(`showBrowser headless navigation failed: ${e.message}`); } } - send({ type: 'log', runId, message: 'Headed interaction unavailable — staying headless' }); + send({ + type: "log", + runId, + message: "Headed interaction unavailable — staying headless", + }); return { headed: false }; } // Close existing browser if open if (runState.context && !runState.browserClosed) { - log('Closing existing browser before reopening headed'); + log("Closing existing browser before reopening headed"); runState.browserClosedByConnector = true; try { await runState.context.close(); } catch (e) { - log('Error closing existing context:', e.message); + log("Error closing existing context:", e.message); } runState.context = null; runState.page = null; @@ -559,18 +653,25 @@ function createPageApi(runState, runId) { runState.browserClosed = false; runState.browserClosedByConnector = false; runState.headless = false; - const context = await launchPersistentContext(runState.userDataDir, false, runState.browserPath); - const page = context.pages()[0] || await context.newPage(); + const context = await launchPersistentContext( + runState.userDataDir, + false, + runState.browserPath, + ); + const page = context.pages()[0] || (await context.newPage()); // Set up disconnect handler - context.browser().on('disconnected', () => { - if (!runState.connectorCompleted && !runState.browserClosedByConnector) { + context.browser().on("disconnected", () => { + if ( + !runState.connectorCompleted && + !runState.browserClosedByConnector + ) { log(`Browser disconnected for run ${runId} (user closed window)`); runState.browserClosed = true; runState.context = null; runState.page = null; activeRuns.delete(runId); - send({ type: 'status', runId, status: 'STOPPED' }); + send({ type: "status", runId, status: "STOPPED" }); drainStdout().then(() => process.exit(0)); } }); @@ -584,11 +685,15 @@ function createPageApi(runState, runId) { // Navigate to URL if (url) { - await page.goto(url, { waitUntil: 'domcontentloaded' }); + await page.goto(url, { waitUntil: "domcontentloaded" }); } - send({ type: 'log', runId, message: 'Browser opened for user interaction' }); - log('Headed browser opened'); + send({ + type: "log", + runId, + message: "Browser opened for user interaction", + }); + log("Headed browser opened"); return { headed: true }; }, @@ -597,11 +702,11 @@ function createPageApi(runState, runId) { // during data collection, while preserving the TLS fingerprint for Cloudflare. goHeadless: async () => { if (runState.headless && !runState.browserClosed) { - log('Already in headless mode'); + log("Already in headless mode"); return; } - log('Switching to headless mode'); + log("Switching to headless mode"); // Close existing headed browser if (runState.context && !runState.browserClosed) { @@ -609,7 +714,7 @@ function createPageApi(runState, runId) { try { await runState.context.close(); } catch (e) { - log('Error closing headed context:', e.message); + log("Error closing headed context:", e.message); } runState.context = null; runState.page = null; @@ -619,18 +724,25 @@ function createPageApi(runState, runId) { runState.browserClosed = false; runState.browserClosedByConnector = false; runState.headless = true; - const context = await launchPersistentContext(runState.userDataDir, true, runState.browserPath); - const page = context.pages()[0] || await context.newPage(); + const context = await launchPersistentContext( + runState.userDataDir, + true, + runState.browserPath, + ); + const page = context.pages()[0] || (await context.newPage()); // Set up disconnect handler - context.browser().on('disconnected', () => { - if (!runState.connectorCompleted && !runState.browserClosedByConnector) { + context.browser().on("disconnected", () => { + if ( + !runState.connectorCompleted && + !runState.browserClosedByConnector + ) { log(`Browser disconnected for run ${runId}`); runState.browserClosed = true; runState.context = null; runState.page = null; activeRuns.delete(runId); - send({ type: 'status', runId, status: 'STOPPED' }); + send({ type: "status", runId, status: "STOPPED" }); drainStdout().then(() => process.exit(0)); } }); @@ -643,10 +755,16 @@ function createPageApi(runState, runId) { setupNetworkCapture(page); // Navigate to establish browser context - await page.goto('https://chatgpt.com/', { waitUntil: 'domcontentloaded' }); + await page.goto("https://chatgpt.com/", { + waitUntil: "domcontentloaded", + }); - send({ type: 'log', runId, message: 'Switched to headless mode for background data collection' }); - log('Switched to headless mode'); + send({ + type: "log", + runId, + message: "Switched to headless mode for background data collection", + }); + log("Switched to headless mode"); }, // Direct HTTP fetch from Node.js — no browser needed. @@ -660,14 +778,22 @@ function createPageApi(runState, runId) { try { const urlObj = new URL(url); const relevantCookies = runState.cookies - .filter(c => { - const cookieDomain = c.domain.startsWith('.') ? c.domain.slice(1) : c.domain; - return urlObj.hostname === cookieDomain || urlObj.hostname.endsWith('.' + cookieDomain); + .filter((c) => { + const cookieDomain = c.domain.startsWith(".") + ? c.domain.slice(1) + : c.domain; + return ( + urlObj.hostname === cookieDomain || + urlObj.hostname.endsWith("." + cookieDomain) + ); }) - .map(c => `${c.name}=${c.value}`) - .join('; '); + .map((c) => `${c.name}=${c.value}`) + .join("; "); if (relevantCookies) { - fetchOptions.headers = { ...fetchOptions.headers, cookie: relevantCookies }; + fetchOptions.headers = { + ...fetchOptions.headers, + cookie: relevantCookies, + }; } } catch (e) { // Ignore cookie injection errors @@ -684,10 +810,16 @@ function createPageApi(runState, runId) { clearTimeout(timeoutId); const text = await response.text(); let json = null; - try { json = JSON.parse(text); } catch {} + try { + json = JSON.parse(text); + } catch {} if (!response.ok) { - log(`[httpFetch] ${response.status} ${response.statusText} for ${url.substring(0, 100)}`); - log(`[httpFetch] Response body (first 200 chars): ${text.substring(0, 200)}`); + log( + `[httpFetch] ${response.status} ${response.statusText} for ${url.substring(0, 100)}`, + ); + log( + `[httpFetch] Response body (first 200 chars): ${text.substring(0, 200)}`, + ); } return { ok: response.ok, @@ -703,7 +835,7 @@ function createPageApi(runState, runId) { ok: false, status: 0, headers: {}, - text: '', + text: "", json: null, error: err.message, }; @@ -713,13 +845,29 @@ function createPageApi(runState, runId) { } // Run a connector -async function runConnector(runId, connectorPath, url, headless = true, allowHeaded = true) { - log(`Starting run ${runId} with connector ${connectorPath} (headless: ${headless}, allowHeaded: ${allowHeaded})`); +async function runConnector( + runId, + connectorPath, + url, + headless = true, + allowHeaded = true, +) { + log( + `Starting run ${runId} with connector ${connectorPath} (headless: ${headless}, allowHeaded: ${allowHeaded})`, + ); // Derive connector ID for persistent browser profile - const connectorFileName = path.basename(connectorPath, path.extname(connectorPath)); - const home = process.env.HOME || process.env.USERPROFILE || ''; - const userDataDir = path.join(home, '.dataconnect', 'browser-profiles', connectorFileName); + const connectorFileName = path.basename( + connectorPath, + path.extname(connectorPath), + ); + const home = process.env.HOME || process.env.USERPROFILE || ""; + const userDataDir = path.join( + home, + ".dataconnect", + "browser-profiles", + connectorFileName, + ); // Mutable state shared with pageApi const runState = { @@ -738,7 +886,7 @@ async function runConnector(runId, connectorPath, url, headless = true, allowHea try { // Read connector script - const connectorCode = fs.readFileSync(connectorPath, 'utf-8'); + const connectorCode = fs.readFileSync(connectorPath, "utf-8"); // Resolve browser executable runState.browserPath = resolveBrowserPath(); @@ -749,31 +897,43 @@ async function runConnector(runId, connectorPath, url, headless = true, allowHea // 2. Close it // 3. INSERT cookies from the user's Chrome profile into the db // 4. Relaunch — now Chrome loads the imported cookies from disk - const markerFile = path.join(userDataDir, '.cookies-imported'); + const markerFile = path.join(userDataDir, ".cookies-imported"); if (isSystemChrome(runState.browserPath) && !fs.existsSync(markerFile)) { - log('First run: launching browser to initialize profile...'); - const tempCtx = await launchPersistentContext(userDataDir, true, runState.browserPath); + log("First run: launching browser to initialize profile..."); + const tempCtx = await launchPersistentContext( + userDataDir, + true, + runState.browserPath, + ); await tempCtx.close(); - log('Profile initialized, importing cookies...'); + log("Profile initialized, importing cookies..."); importChromecookies(userDataDir, runState.browserPath); } // Launch browser with persistent context (cookies already in db on first run) - const context = await launchPersistentContext(userDataDir, headless, runState.browserPath); - const page = context.pages()[0] || await context.newPage(); + const context = await launchPersistentContext( + userDataDir, + headless, + runState.browserPath, + ); + const page = context.pages()[0] || (await context.newPage()); runState.context = context; runState.page = page; // Handle browser disconnect (user closed browser window) - context.browser().on('disconnected', () => { - if (!runState.connectorCompleted && !runState.browserClosedByConnector && activeRuns.has(runId)) { + context.browser().on("disconnected", () => { + if ( + !runState.connectorCompleted && + !runState.browserClosedByConnector && + activeRuns.has(runId) + ) { log(`Browser disconnected for run ${runId} (user closed window)`); runState.browserClosed = true; runState.context = null; runState.page = null; activeRuns.delete(runId); - send({ type: 'status', runId, status: 'STOPPED' }); + send({ type: "status", runId, status: "STOPPED" }); drainStdout().then(() => process.exit(0)); } }); @@ -781,7 +941,9 @@ async function runConnector(runId, connectorPath, url, headless = true, allowHea // Store for cleanup activeRuns.set(runId, { runState, - setCompleted: () => { runState.connectorCompleted = true; }, + setCompleted: () => { + runState.connectorCompleted = true; + }, }); // Create page API @@ -789,9 +951,9 @@ async function runConnector(runId, connectorPath, url, headless = true, allowHea // Navigate to starting URL log(`Navigating to initial URL: ${url}`); - await page.goto(url, { waitUntil: 'domcontentloaded' }); - log('Initial navigation complete'); - send({ type: 'status', runId, status: 'RUNNING' }); + await page.goto(url, { waitUntil: "domcontentloaded" }); + log("Initial navigation complete"); + send({ type: "status", runId, status: "RUNNING" }); // Build the connector execution wrapper // The connector has an IIFE at the end - we need to return its Promise @@ -805,35 +967,44 @@ async function runConnector(runId, connectorPath, url, headless = true, allowHea if (matches.length > 0) { const lastMatch = matches[matches.length - 1]; const insertPos = lastMatch.index; - modifiedCode = modifiedCode.substring(0, insertPos) + - '\nreturn (async () => {' + + modifiedCode = + modifiedCode.substring(0, insertPos) + + "\nreturn (async () => {" + modifiedCode.substring(insertPos + lastMatch[0].length); - log(`Added return before IIFE (match ${matches.length} of ${matches.length})`); + log( + `Added return before IIFE (match ${matches.length} of ${matches.length})`, + ); } else { - log('WARNING: Could not find IIFE pattern in connector code'); + log("WARNING: Could not find IIFE pattern in connector code"); } // Execute connector with page API in scope using AsyncFunction - log('Starting connector execution...'); - const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor; - const runConnectorFn = new AsyncFunction('page', modifiedCode); + log("Starting connector execution..."); + const AsyncFunction = Object.getPrototypeOf( + async function () {}, + ).constructor; + const runConnectorFn = new AsyncFunction("page", modifiedCode); - log('Calling connector function...'); + log("Calling connector function..."); const result = await runConnectorFn.call(null, pageApi); - log('Connector function completed with result:', result ? 'has result' : 'undefined'); + log( + "Connector function completed with result:", + result ? "has result" : "undefined", + ); if (!runState.hasResult && result != null) { - const exportData = (result && result.success && result.data) ? result.data : result; - send({ type: 'result', runId, data: exportData }); + const exportData = + result && result.success && result.data ? result.data : result; + send({ type: "result", runId, data: exportData }); } - send({ type: 'status', runId, status: 'COMPLETE' }); + send({ type: "status", runId, status: "COMPLETE" }); // Mark as completed to prevent disconnect handler from sending STOPPED runState.connectorCompleted = true; // Close browser if still open if (!runState.browserClosed && runState.context) { - await new Promise(resolve => setTimeout(resolve, 2000)); + await new Promise((resolve) => setTimeout(resolve, 2000)); try { await runState.context.close(); } catch (e) { @@ -844,14 +1015,13 @@ async function runConnector(runId, connectorPath, url, headless = true, allowHea activeRuns.delete(runId); // Exit process after successful completion - log('Connector completed successfully, exiting'); + log("Connector completed successfully, exiting"); await drainStdout(); process.exit(0); - } catch (error) { log(`Error in run ${runId}:`, error.message); - send({ type: 'error', runId, message: error.message }); - send({ type: 'status', runId, status: 'ERROR' }); + send({ type: "error", runId, message: error.message }); + send({ type: "status", runId, status: "ERROR" }); // Cleanup on error if (runState.context && !runState.browserClosed) { @@ -862,7 +1032,7 @@ async function runConnector(runId, connectorPath, url, headless = true, allowHea activeRuns.delete(runId); // Exit process after error - log('Connector failed, exiting'); + log("Connector failed, exiting"); await drainStdout(); process.exit(1); } @@ -875,26 +1045,26 @@ async function stopRun(runId) { log(`Stopping run ${runId}`); // Reject any pending requestInput promises so the connector doesn't hang for (const [, pending] of run.runState.pendingInputs) { - pending.reject(new Error('Run stopped')); + pending.reject(new Error("Run stopped")); } run.runState.pendingInputs.clear(); if (run.runState && run.runState.context && !run.runState.browserClosed) { await run.runState.context.close().catch(() => {}); } activeRuns.delete(runId); - send({ type: 'status', runId, status: 'STOPPED' }); + send({ type: "status", runId, status: "STOPPED" }); } } // Main loop - read commands from stdin async function main() { - log('Playwright runner started'); - send({ type: 'ready' }); + log("Playwright runner started"); + send({ type: "ready" }); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, - terminal: false + terminal: false, }); for await (const line of rl) { @@ -902,96 +1072,158 @@ async function main() { const cmd = JSON.parse(line); switch (cmd.type) { - case 'run': - runConnector(cmd.runId, cmd.connectorPath, cmd.url, cmd.headless !== false, cmd.allowHeaded !== false); + case "run": + runConnector( + cmd.runId, + cmd.connectorPath, + cmd.url, + cmd.headless !== false, + cmd.allowHeaded !== false, + ); break; - case 'stop': + case "stop": await stopRun(cmd.runId); break; - case 'quit': - log('Quitting...'); + case "quit": + log("Quitting..."); for (const [runId, run] of activeRuns) { - if (run.runState && run.runState.context && !run.runState.browserClosed) { + if ( + run.runState && + run.runState.context && + !run.runState.browserClosed + ) { await run.runState.context.close().catch(() => {}); } } process.exit(0); break; - case 'test': + case "test": // Simple test to prove Node.js is working - const os = require('os'); + const os = require("os"); send({ - type: 'test-result', + type: "test-result", data: { nodejs: process.version, platform: process.platform, arch: process.arch, hostname: os.hostname(), cpus: os.cpus().length, - memory: Math.round(os.totalmem() / 1024 / 1024 / 1024) + ' GB', - uptime: Math.round(os.uptime() / 60) + ' minutes' - } + memory: Math.round(os.totalmem() / 1024 / 1024 / 1024) + " GB", + uptime: Math.round(os.uptime() / 60) + " minutes", + }, }); break; - case 'evaluate': { + case "evaluate": { const evalRun = activeRuns.get(cmd.runId); if (!evalRun) { - send({ type: 'evaluate-result', runId: cmd.runId, error: `No active run: ${cmd.runId}` }); + send({ + type: "evaluate-result", + runId: cmd.runId, + error: `No active run: ${cmd.runId}`, + }); break; } const { runState: evalState } = evalRun; if (evalState.browserClosed || !evalState.page) { - send({ type: 'evaluate-result', runId: cmd.runId, error: 'Browser is closed' }); + send({ + type: "evaluate-result", + runId: cmd.runId, + error: "Browser is closed", + }); break; } // Non-blocking: don't await so stdin loop keeps processing other commands. // Wrapped in try so synchronous throws (e.g. page torn down mid-call) // always produce an evaluate-result instead of hanging the driver. try { - evalState.page.evaluate(cmd.script) - .then(result => send({ type: 'evaluate-result', runId: cmd.runId, result })) - .catch(e => send({ type: 'evaluate-result', runId: cmd.runId, error: e.stack || e.message })); + evalState.page + .evaluate(cmd.script) + .then((result) => + send({ type: "evaluate-result", runId: cmd.runId, result }), + ) + .catch((e) => + send({ + type: "evaluate-result", + runId: cmd.runId, + error: e.stack || e.message, + }), + ); } catch (e) { - send({ type: 'evaluate-result', runId: cmd.runId, error: e.stack || e.message }); + send({ + type: "evaluate-result", + runId: cmd.runId, + error: e.stack || e.message, + }); } break; } - case 'input-response': { + case "input-response": { const inputRun = activeRuns.get(cmd.runId); if (!inputRun) break; const pending = inputRun.runState.pendingInputs.get(cmd.requestId); if (!pending) break; inputRun.runState.pendingInputs.delete(cmd.requestId); if (cmd.error) { - pending.reject(new Error(typeof cmd.error === 'string' ? cmd.error : JSON.stringify(cmd.error))); + pending.reject( + new Error( + typeof cmd.error === "string" + ? cmd.error + : JSON.stringify(cmd.error), + ), + ); } else { pending.resolve(cmd.data); } break; } - case 'screenshot': { + case "screenshot": { const ssRun = activeRuns.get(cmd.runId); if (!ssRun) { - send({ type: 'screenshot-result', runId: cmd.runId, error: `No active run: ${cmd.runId}` }); + send({ + type: "screenshot-result", + runId: cmd.runId, + error: `No active run: ${cmd.runId}`, + }); break; } const { runState: ssState } = ssRun; if (ssState.browserClosed || !ssState.page) { - send({ type: 'screenshot-result', runId: cmd.runId, error: 'Browser is closed' }); + send({ + type: "screenshot-result", + runId: cmd.runId, + error: "Browser is closed", + }); break; } try { - ssState.page.screenshot({ type: 'jpeg', quality: 70, timeout: 5000 }) - .then(buffer => send({ type: 'screenshot-result', runId: cmd.runId, data: buffer.toString('base64') })) - .catch(e => send({ type: 'screenshot-result', runId: cmd.runId, error: e.stack || e.message })); + ssState.page + .screenshot({ type: "jpeg", quality: 70, timeout: 5000 }) + .then((buffer) => + send({ + type: "screenshot-result", + runId: cmd.runId, + data: buffer.toString("base64"), + }), + ) + .catch((e) => + send({ + type: "screenshot-result", + runId: cmd.runId, + error: e.stack || e.message, + }), + ); } catch (e) { - send({ type: 'screenshot-result', runId: cmd.runId, error: e.stack || e.message }); + send({ + type: "screenshot-result", + runId: cmd.runId, + error: e.stack || e.message, + }); } break; } @@ -1005,7 +1237,7 @@ async function main() { } } -main().catch(err => { - log('Fatal error:', err); +main().catch((err) => { + log("Fatal error:", err); process.exit(1); }); diff --git a/runtime-assets/run-connector.cjs b/runtime-assets/run-connector.cjs index f10549b0..c1a9f66a 100644 --- a/runtime-assets/run-connector.cjs +++ b/runtime-assets/run-connector.cjs @@ -18,10 +18,10 @@ * With --pretty, output is colored human-readable text. */ -const { spawn } = require('child_process'); -const fs = require('fs'); -const path = require('path'); -const os = require('os'); +const { spawn } = require("child_process"); +const fs = require("fs"); +const path = require("path"); +const os = require("os"); const homedir = os.homedir(); @@ -29,72 +29,101 @@ const rawArgs = process.argv.slice(2); const positional = []; let preSuppliedInputs = {}; let pretty = false; -let outputPath = path.join(homedir, '.dataconnect', 'last-result.json'); +let outputPath = path.join(homedir, ".dataconnect", "last-result.json"); let runnerDir = null; for (let i = 0; i < rawArgs.length; i++) { - if (rawArgs[i] === '--inputs' && rawArgs[i + 1]) { - try { preSuppliedInputs = JSON.parse(rawArgs[++i]); } - catch (e) { console.error('Invalid --inputs JSON:', e.message); process.exit(1); } - } else if (rawArgs[i] === '--output' && rawArgs[i + 1]) { + if (rawArgs[i] === "--inputs" && rawArgs[i + 1]) { + try { + preSuppliedInputs = JSON.parse(rawArgs[++i]); + } catch (e) { + console.error("Invalid --inputs JSON:", e.message); + process.exit(1); + } + } else if (rawArgs[i] === "--output" && rawArgs[i + 1]) { outputPath = rawArgs[++i]; - } else if (rawArgs[i] === '--runner-dir' && rawArgs[i + 1]) { + } else if (rawArgs[i] === "--runner-dir" && rawArgs[i + 1]) { runnerDir = rawArgs[++i]; - } else if (rawArgs[i] === '--pretty') { + } else if (rawArgs[i] === "--pretty") { pretty = true; - } else if (!rawArgs[i].startsWith('--')) { + } else if (!rawArgs[i].startsWith("--")) { positional.push(rawArgs[i]); } } const connectorPath = positional[0]; -const startUrl = positional[1] || 'about:blank'; +const startUrl = positional[1] || "about:blank"; if (!connectorPath) { - console.error('Usage: node run-connector.cjs [start-url] [--inputs \'{"key":"val"}\'] [--pretty]'); + console.error( + 'Usage: node run-connector.cjs [start-url] [--inputs \'{"key":"val"}\'] [--pretty]', + ); process.exit(1); } const connectorSlug = path.basename(connectorPath, path.extname(connectorPath)); const runId = `${connectorSlug}-${Date.now()}`; -const PENDING_INPUT_PATH = path.join(homedir, '.dataconnect', `pending-input-${runId}.json`); -const INPUT_RESPONSE_PATH = path.join(homedir, '.dataconnect', `input-response-${runId}.json`); +const PENDING_INPUT_PATH = path.join( + homedir, + ".dataconnect", + `pending-input-${runId}.json`, +); +const INPUT_RESPONSE_PATH = path.join( + homedir, + ".dataconnect", + `input-response-${runId}.json`, +); const c = { - reset: '\x1b[0m', bold: '\x1b[1m', dim: '\x1b[2m', - red: '\x1b[31m', green: '\x1b[32m', yellow: '\x1b[33m', - blue: '\x1b[34m', magenta: '\x1b[35m', cyan: '\x1b[36m', gray: '\x1b[90m', + reset: "\x1b[0m", + bold: "\x1b[1m", + dim: "\x1b[2m", + red: "\x1b[31m", + green: "\x1b[32m", + yellow: "\x1b[33m", + blue: "\x1b[34m", + magenta: "\x1b[35m", + cyan: "\x1b[36m", + gray: "\x1b[90m", }; function prettyPrint(color, prefix, msg) { - const ts = new Date().toLocaleTimeString('en-US', { hour12: false }); + const ts = new Date().toLocaleTimeString("en-US", { hour12: false }); console.log(`${c.gray}${ts}${c.reset} ${color}${prefix}${c.reset} ${msg}`); } function emit(obj) { if (pretty) { switch (obj.type) { - case 'need-input': - prettyPrint(c.magenta, '[input]', obj.message); + case "need-input": + prettyPrint(c.magenta, "[input]", obj.message); if (obj.schema?.properties) { - prettyPrint(c.dim, ' ', `Fields: ${Object.keys(obj.schema.properties).join(', ')}`); + prettyPrint( + c.dim, + " ", + `Fields: ${Object.keys(obj.schema.properties).join(", ")}`, + ); } break; - case 'legacy-auth': - prettyPrint(c.yellow, '[auth] ', obj.message); + case "legacy-auth": + prettyPrint(c.yellow, "[auth] ", obj.message); break; - case 'result': { + case "result": { const size = fs.existsSync(obj.resultPath) - ? (fs.statSync(obj.resultPath).size / 1024).toFixed(1) + ' KB' - : ''; - prettyPrint(c.green, '[result]', `Saved to ${obj.resultPath} ${size ? `(${size})` : ''}`); + ? (fs.statSync(obj.resultPath).size / 1024).toFixed(1) + " KB" + : ""; + prettyPrint( + c.green, + "[result]", + `Saved to ${obj.resultPath} ${size ? `(${size})` : ""}`, + ); break; } - case 'log': - prettyPrint(c.gray, '[log] ', obj.message || ''); + case "log": + prettyPrint(c.gray, "[log] ", obj.message || ""); break; - case 'error': - prettyPrint(c.red, '[error]', obj.message || ''); + case "error": + prettyPrint(c.red, "[error]", obj.message || ""); break; } } else { @@ -104,26 +133,30 @@ function emit(obj) { function resolveRunnerDir() { if (runnerDir) { - if (fs.existsSync(path.join(runnerDir, 'index.cjs'))) return runnerDir; + if (fs.existsSync(path.join(runnerDir, "index.cjs"))) return runnerDir; console.error(`Runner not found at: ${runnerDir}`); process.exit(1); } const candidates = [ - path.join(homedir, '.dataconnect', 'playwright-runner'), + path.join(homedir, ".dataconnect", "playwright-runner"), process.env.PLAYWRIGHT_RUNNER_DIR, ].filter(Boolean); for (const dir of candidates) { - if (fs.existsSync(path.join(dir, 'index.cjs'))) return dir; + if (fs.existsSync(path.join(dir, "index.cjs"))) return dir; } - console.error('Could not find playwright-runner. Run `vana setup` first.'); + console.error("Could not find playwright-runner. Run `vana setup` first."); process.exit(1); } -try { fs.unlinkSync(PENDING_INPUT_PATH); } catch {} -try { fs.unlinkSync(INPUT_RESPONSE_PATH); } catch {} +try { + fs.unlinkSync(PENDING_INPUT_PATH); +} catch {} +try { + fs.unlinkSync(INPUT_RESPONSE_PATH); +} catch {} const resolvedRunnerDir = resolveRunnerDir(); @@ -133,54 +166,68 @@ if (pretty) { console.log(` ${c.cyan}URL:${c.reset} ${startUrl}`); console.log(` ${c.cyan}Output:${c.reset} ${outputPath}`); console.log(` ${c.cyan}Runner:${c.reset} ${resolvedRunnerDir}`); - console.log(''); + console.log(""); } -const runner = spawn(process.execPath, ['index.cjs'], { +const runner = spawn(process.execPath, ["index.cjs"], { cwd: resolvedRunnerDir, - stdio: ['pipe', 'pipe', 'pipe'], + stdio: ["pipe", "pipe", "pipe"], }); -runner.stderr.on('data', (chunk) => { +runner.stderr.on("data", (chunk) => { if (pretty) { - for (const line of chunk.toString().split('\n').filter(l => l.trim())) { - prettyPrint(c.dim, '[runner]', line.replace('[PlaywrightRunner] ', '')); + for (const line of chunk + .toString() + .split("\n") + .filter((l) => l.trim())) { + prettyPrint(c.dim, "[runner]", line.replace("[PlaywrightRunner] ", "")); } } else { process.stderr.write(chunk); } }); -let buffer = ''; +let buffer = ""; const consumedFields = new Set(); -runner.stdout.on('data', (chunk) => { +runner.stdout.on("data", (chunk) => { buffer += chunk.toString(); - const lines = buffer.split('\n'); + const lines = buffer.split("\n"); buffer = lines.pop(); for (const line of lines) { if (!line.trim()) continue; - try { handleMessage(JSON.parse(line)); } - catch (e) { process.stderr.write('[non-json] ' + line + '\n'); } + try { + handleMessage(JSON.parse(line)); + } catch (e) { + process.stderr.write("[non-json] " + line + "\n"); + } } }); function handleMessage(msg) { switch (msg.type) { - case 'ready': - runner.stdin.write(JSON.stringify({ - type: 'run', runId, - connectorPath: path.resolve(connectorPath), - url: startUrl, headless: true, allowHeaded: false, - }) + '\n'); - if (pretty) prettyPrint(c.green, '[ready]', 'Connected, starting connector...'); + case "ready": + runner.stdin.write( + JSON.stringify({ + type: "run", + runId, + connectorPath: path.resolve(connectorPath), + url: startUrl, + headless: true, + allowHeaded: false, + }) + "\n", + ); + if (pretty) + prettyPrint(c.green, "[ready]", "Connected, starting connector..."); break; - case 'request-input': { + case "request-input": { const { requestId, payload } = msg; const schema = payload?.schema; const fields = schema?.properties ? Object.keys(schema.properties) : []; - const available = fields.filter(f => f in preSuppliedInputs && !consumedFields.has(f)); + const available = fields.filter( + (f) => f in preSuppliedInputs && !consumedFields.has(f), + ); if (available.length > 0) { const data = {}; @@ -190,26 +237,36 @@ function handleMessage(msg) { consumedFields.add(f); } } - runner.stdin.write(JSON.stringify({ - type: 'input-response', runId, requestId, data, - }) + '\n'); + runner.stdin.write( + JSON.stringify({ + type: "input-response", + runId, + requestId, + data, + }) + "\n", + ); } else { const pendingInput = { requestId, - message: payload?.message || 'Input required', + message: payload?.message || "Input required", schema: schema || {}, previousInputs: [...consumedFields], timestamp: new Date().toISOString(), }; - fs.writeFileSync(PENDING_INPUT_PATH, JSON.stringify(pendingInput, null, 2)); + fs.writeFileSync( + PENDING_INPUT_PATH, + JSON.stringify(pendingInput, null, 2), + ); emit({ - type: 'need-input', + type: "need-input", message: pendingInput.message, schema: pendingInput.schema, pendingInputPath: PENDING_INPUT_PATH, responseInputPath: INPUT_RESPONSE_PATH, - ...(consumedFields.size > 0 && { previousInputs: pendingInput.previousInputs }), + ...(consumedFields.size > 0 && { + previousInputs: pendingInput.previousInputs, + }), }); const poll = setInterval(() => { @@ -219,55 +276,78 @@ function handleMessage(msg) { clearInterval(poll); try { - const response = JSON.parse(fs.readFileSync(INPUT_RESPONSE_PATH, 'utf-8')); - try { fs.unlinkSync(INPUT_RESPONSE_PATH); } catch {} - try { fs.unlinkSync(PENDING_INPUT_PATH); } catch {} + const response = JSON.parse( + fs.readFileSync(INPUT_RESPONSE_PATH, "utf-8"), + ); + try { + fs.unlinkSync(INPUT_RESPONSE_PATH); + } catch {} + try { + fs.unlinkSync(PENDING_INPUT_PATH); + } catch {} - if (response && typeof response === 'object') { + if (response && typeof response === "object") { for (const f of Object.keys(response)) consumedFields.add(f); } - runner.stdin.write(JSON.stringify({ - type: 'input-response', runId, requestId, data: response, - }) + '\n'); + runner.stdin.write( + JSON.stringify({ + type: "input-response", + runId, + requestId, + data: response, + }) + "\n", + ); } catch (e) { - try { fs.unlinkSync(INPUT_RESPONSE_PATH); } catch {} - try { fs.unlinkSync(PENDING_INPUT_PATH); } catch {} - runner.stdin.write(JSON.stringify({ - type: 'input-response', runId, requestId, - error: 'Invalid response file: ' + e.message, - }) + '\n'); + try { + fs.unlinkSync(INPUT_RESPONSE_PATH); + } catch {} + try { + fs.unlinkSync(PENDING_INPUT_PATH); + } catch {} + runner.stdin.write( + JSON.stringify({ + type: "input-response", + runId, + requestId, + error: "Invalid response file: " + e.message, + }) + "\n", + ); } }, 1000); } break; } - case 'run-completed': + case "run-completed": if (msg.result?.ok) { fs.mkdirSync(path.dirname(outputPath), { recursive: true }); fs.writeFileSync(outputPath, JSON.stringify(msg.result.data, null, 2)); - emit({ type: 'result', resultPath: outputPath }); + emit({ type: "result", resultPath: outputPath }); process.exit(0); } emit({ - type: 'error', - message: msg.result?.error || 'Connector run failed.', + type: "error", + message: msg.result?.error || "Connector run failed.", }); process.exit(1); break; - case 'run-error': - if (String(msg.error || '').includes('showBrowser') || String(msg.error || '').includes('promptUser')) { + case "run-error": + if ( + String(msg.error || "").includes("showBrowser") || + String(msg.error || "").includes("promptUser") + ) { emit({ - type: 'legacy-auth', - message: 'This connector uses legacy authentication (showBrowser/promptUser) which is not supported in batch mode. Either use a migrated connector that supports requestInput, or establish a session manually first.', + type: "legacy-auth", + message: + "This connector uses legacy authentication (showBrowser/promptUser) which is not supported in batch mode. Either use a migrated connector that supports requestInput, or establish a session manually first.", }); process.exit(3); } emit({ - type: 'error', - message: msg.error || 'Runner error.', + type: "error", + message: msg.error || "Runner error.", }); process.exit(1); break; diff --git a/scripts/build-sea.mjs b/scripts/build-sea.mjs new file mode 100644 index 00000000..d492e193 --- /dev/null +++ b/scripts/build-sea.mjs @@ -0,0 +1,163 @@ +import { spawn } from "node:child_process"; +import { createHash } from "node:crypto"; +import { promises as fsp } from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +import { build } from "esbuild"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const repoRoot = path.resolve(__dirname, ".."); + +const args = new Map(); +for (let index = 2; index < process.argv.length; index += 1) { + const arg = process.argv[index]; + if (!arg.startsWith("--")) { + continue; + } + + const key = arg.slice(2); + const next = process.argv[index + 1]; + const value = next && !next.startsWith("--") ? next : "true"; + args.set(key, value); + if (value !== "true") { + index += 1; + } +} + +const artifactDir = path.join(repoRoot, "artifacts", "sea"); +const scratchDir = path.join(repoRoot, ".sea-work", "build-sea"); +const targetName = `vana-${process.platform}-${process.arch}`; +const outputPath = path.resolve( + repoRoot, + args.get("output") ?? path.join(artifactDir, targetName), +); +const tarballPath = `${outputPath}.tar.gz`; +const checksumPath = `${tarballPath}.sha256`; + +const distCliMain = path.join(repoRoot, "dist", "cli", "main.js"); +await assertExists( + distCliMain, + "dist/cli/main.js was not found. Run `pnpm build` first.", +); + +await fsp.mkdir(artifactDir, { recursive: true }); +await fsp.rm(scratchDir, { recursive: true, force: true }); +await fsp.mkdir(scratchDir, { recursive: true }); + +const entryPath = path.join(scratchDir, "entry.mjs"); +const bundlePath = path.join(scratchDir, "bundle.cjs"); +const configPath = path.join(scratchDir, "sea-config.json"); + +await fsp.writeFile( + entryPath, + [ + "import { runCli } from '../../dist/cli/main.js';", + "", + "runCli(process.argv).catch((error) => {", + " console.error(error instanceof Error ? (error.stack ?? error.message) : String(error));", + " process.exitCode = 1;", + "});", + "", + ].join("\n"), + "utf8", +); + +await build({ + entryPoints: [entryPath], + bundle: true, + platform: "node", + format: "cjs", + target: "node25", + outfile: bundlePath, + logLevel: "silent", +}); + +const assetPaths = [ + "runtime-assets/run-connector.cjs", + "runtime-assets/playwright-runner/index.cjs", + "runtime-assets/playwright-runner/package.json", + "runtime-assets/playwright-runner/package-lock.json", + "runtime-assets/playwright-runner/entitlements.plist", + "runtime-assets/playwright-runner/scripts/build.js", +]; + +const config = { + main: bundlePath, + output: outputPath, + disableExperimentalSEAWarning: true, + assets: Object.fromEntries( + assetPaths.map((assetPath) => [assetPath, path.join(repoRoot, assetPath)]), + ), +}; + +await fsp.writeFile(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf8"); +await run(process.execPath, ["--build-sea", configPath], { + cwd: repoRoot, +}); + +if (args.has("smoke")) { + const smokeHome = path.join(scratchDir, "home"); + await fsp.rm(smokeHome, { recursive: true, force: true }); + await fsp.mkdir(smokeHome, { recursive: true }); + await run(outputPath, ["status", "--json"], { + cwd: repoRoot, + env: { ...process.env, HOME: smokeHome }, + }); +} + +await run( + "tar", + [ + "-czf", + tarballPath, + "-C", + path.dirname(outputPath), + path.basename(outputPath), + ], + { + cwd: repoRoot, + }, +); + +const tarballDigest = await sha256(tarballPath); +await fsp.writeFile( + checksumPath, + `${tarballDigest} ${path.basename(tarballPath)}\n`, + "utf8", +); + +process.stdout.write(`Built SEA executable: ${outputPath}\n`); +process.stdout.write(`Built SEA tarball: ${tarballPath}\n`); +process.stdout.write(`Built SEA checksum: ${checksumPath}\n`); + +async function assertExists(filePath, message) { + try { + await fsp.access(filePath); + } catch { + throw new Error(message); + } +} + +async function run(command, commandArgs, options = {}) { + await new Promise((resolve, reject) => { + const child = spawn(command, commandArgs, { + stdio: "inherit", + ...options, + }); + + child.on("error", reject); + child.on("exit", (code) => { + if (code === 0) { + resolve(); + return; + } + reject(new Error(`${command} exited with code ${code ?? "unknown"}`)); + }); + }); +} + +async function sha256(filePath) { + const buffer = await fsp.readFile(filePath); + return createHash("sha256").update(buffer).digest("hex"); +} diff --git a/src/runtime/bundled-assets.ts b/src/runtime/bundled-assets.ts new file mode 100644 index 00000000..6c0cdec0 --- /dev/null +++ b/src/runtime/bundled-assets.ts @@ -0,0 +1,63 @@ +import fs from "node:fs"; +import fsp from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import * as sea from "node:sea"; + +import { ensureParentDir, getDataConnectHome } from "../core/index.js"; + +const RUNTIME_ASSET_KEYS = [ + "runtime-assets/run-connector.cjs", + "runtime-assets/playwright-runner/index.cjs", + "runtime-assets/playwright-runner/package.json", + "runtime-assets/playwright-runner/package-lock.json", + "runtime-assets/playwright-runner/entitlements.plist", + "runtime-assets/playwright-runner/scripts/build.js", +] as const; + +export interface BundledRuntimePaths { + runConnectorPath: string; + playwrightRunnerDir: string; +} + +export async function getBundledRuntimePaths(): Promise { + if (!sea.isSea()) { + return { + runConnectorPath: fileSystemRuntimeAssetPath("run-connector.cjs"), + playwrightRunnerDir: fileSystemRuntimeAssetPath("playwright-runner"), + }; + } + + const extractionRoot = path.join( + getDataConnectHome(), + "bundled-runtime-assets", + "sea", + ); + + for (const assetKey of RUNTIME_ASSET_KEYS) { + const relativePath = assetKey.replace(/^runtime-assets\//, ""); + const targetPath = path.join(extractionRoot, relativePath); + if (fs.existsSync(targetPath)) { + continue; + } + + const raw = sea.getRawAsset(assetKey); + if (!raw) { + throw new Error(`Missing embedded SEA asset: ${assetKey}`); + } + + await ensureParentDir(targetPath); + await fsp.writeFile(targetPath, Buffer.from(raw)); + } + + return { + runConnectorPath: path.join(extractionRoot, "run-connector.cjs"), + playwrightRunnerDir: path.join(extractionRoot, "playwright-runner"), + }; +} + +function fileSystemRuntimeAssetPath(relativePath: string): string { + return fileURLToPath( + new URL(`../../runtime-assets/${relativePath}`, import.meta.url), + ); +} diff --git a/src/runtime/managed-playwright.ts b/src/runtime/managed-playwright.ts index 4759c8e5..c10ab431 100644 --- a/src/runtime/managed-playwright.ts +++ b/src/runtime/managed-playwright.ts @@ -2,7 +2,6 @@ import fs from "node:fs"; import fsp from "node:fs/promises"; import path from "node:path"; import { spawn } from "node:child_process"; -import { fileURLToPath } from "node:url"; import { ensureParentDir, @@ -15,6 +14,7 @@ import { } from "../core/index.js"; import type { CliEvent, RuntimeState } from "../core/cli-types.js"; import { fetchConnectorToCache } from "../connectors/registry.js"; +import { getBundledRuntimePaths } from "./bundled-assets.js"; import { findDataConnectorsDir } from "./repo-paths.js"; export interface RuntimeInstallResult { @@ -68,13 +68,15 @@ export class ManagedPlaywrightRuntime { const logPath = getTimestampedLogPath("setup"); await ensureParentDir(logPath); const homeDir = getDataConnectHome(); + const bundledRuntime = await getBundledRuntimePaths(); const runConnectorTargetPath = path.join(homeDir, "run-connector.cjs"); - const runnerSourceDir = getBundledPlaywrightRunnerDir(); await fsp.mkdir(homeDir, { recursive: true }); await fsp.mkdir(getConnectorCacheDir(), { recursive: true }); await fsp.rm(this.runnerDir, { recursive: true, force: true }); - await fsp.cp(runnerSourceDir, this.runnerDir, { recursive: true }); + await fsp.cp(bundledRuntime.playwrightRunnerDir, this.runnerDir, { + recursive: true, + }); await spawnForExit("npm", ["install", "--ignore-scripts"], { cwd: this.runnerDir, @@ -87,7 +89,7 @@ export class ManagedPlaywrightRuntime { await installChromium(this.runnerDir, logPath); await ensureParentDir(runConnectorTargetPath); - await fsp.copyFile(getBundledRunConnectorPath(), runConnectorTargetPath); + await fsp.copyFile(bundledRuntime.runConnectorPath, runConnectorTargetPath); return { runtime: this.state, @@ -294,18 +296,6 @@ export class ManagedPlaywrightRuntime { } } -function getBundledRunConnectorPath(): string { - return fileURLToPath( - new URL("../../runtime-assets/run-connector.cjs", import.meta.url), - ); -} - -function getBundledPlaywrightRunnerDir(): string { - return fileURLToPath( - new URL("../../runtime-assets/playwright-runner", import.meta.url), - ); -} - async function installChromium( runnerDir: string, logPath: string, From 9b0161376cc916074c07290fd97e5c33e653c2b9 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 12:06:06 -0500 Subject: [PATCH 005/249] feat(cli): add installer and multi-platform release assets --- .github/workflows/prerelease.yml | 50 ++++++++++-- .github/workflows/release.yml | 53 ++++++++++++- .releaserc.yaml | 8 +- README.md | 19 +++-- install/install.ps1 | 108 +++++++++++++++++++++++++ install/install.sh | 130 +++++++++++++++++++++++++++++++ scripts/build-sea.mjs | 74 +++++++++++++----- 7 files changed, 404 insertions(+), 38 deletions(-) create mode 100644 install/install.ps1 create mode 100644 install/install.sh diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 70ebc08a..379daa07 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -13,8 +13,32 @@ permissions: contents: read jobs: - canary: - runs-on: ubuntu-latest + build-sea: + strategy: + fail-fast: false + matrix: + include: + - runner: ubuntu-latest + platform: linux + arch: x64 + archive_format: tar.gz + binary_name: vana + - runner: macos-13 + platform: darwin + arch: x64 + archive_format: tar.gz + binary_name: vana + - runner: macos-14 + platform: darwin + arch: arm64 + archive_format: tar.gz + binary_name: vana + - runner: windows-2022 + platform: win32 + arch: x64 + archive_format: zip + binary_name: vana.exe + runs-on: ${{ matrix.runner }} steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 @@ -25,14 +49,26 @@ jobs: registry-url: https://registry.npmjs.org - run: pnpm install --frozen-lockfile - run: pnpm build - - run: pnpm build:sea + - run: pnpm build:sea -- --artifact-name vana-${{ matrix.platform }}-${{ matrix.arch }} --platform ${{ matrix.platform }} --arch ${{ matrix.arch }} --archive-format ${{ matrix.archive_format }} --binary-name ${{ matrix.binary_name }} - uses: actions/upload-artifact@v4 with: - name: vana-sea-linux-x64 + name: vana-sea-${{ matrix.platform }}-${{ matrix.arch }} path: | - artifacts/sea/vana-linux-x64 - artifacts/sea/vana-linux-x64.tar.gz - artifacts/sea/vana-linux-x64.tar.gz.sha256 + artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }} + artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }} + artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }}.sha256 + canary: + needs: build-sea + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + registry-url: https://registry.npmjs.org + - run: pnpm install --frozen-lockfile - name: Publish canary run: | SHORT_SHA=$(git rev-parse --short HEAD) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1f5c9b3c..e3ba53d3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,54 @@ permissions: id-token: write jobs: + build-sea: + strategy: + fail-fast: false + matrix: + include: + - runner: ubuntu-latest + platform: linux + arch: x64 + archive_format: tar.gz + binary_name: vana + - runner: macos-13 + platform: darwin + arch: x64 + archive_format: tar.gz + binary_name: vana + - runner: macos-14 + platform: darwin + arch: arm64 + archive_format: tar.gz + binary_name: vana + - runner: windows-2022 + platform: win32 + arch: x64 + archive_format: zip + binary_name: vana.exe + runs-on: ${{ matrix.runner }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + registry-url: https://registry.npmjs.org + - run: pnpm install --frozen-lockfile + - run: pnpm build + - run: pnpm build:sea -- --artifact-name vana-${{ matrix.platform }}-${{ matrix.arch }} --platform ${{ matrix.platform }} --arch ${{ matrix.arch }} --archive-format ${{ matrix.archive_format }} --binary-name ${{ matrix.binary_name }} + - uses: actions/upload-artifact@v4 + with: + name: vana-sea-${{ matrix.platform }}-${{ matrix.arch }} + path: | + artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }} + artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }} + artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }}.sha256 release: + needs: build-sea runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -28,7 +75,11 @@ jobs: registry-url: https://registry.npmjs.org - run: pnpm install --frozen-lockfile - run: pnpm build - - run: pnpm build:sea + - uses: actions/download-artifact@v4 + with: + pattern: vana-sea-* + path: artifacts/release + merge-multiple: true - run: pnpm exec semantic-release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.releaserc.yaml b/.releaserc.yaml index f1cecabd..360b4ed0 100644 --- a/.releaserc.yaml +++ b/.releaserc.yaml @@ -16,7 +16,7 @@ plugins: message: "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" - - "@semantic-release/github" - assets: - - path: artifacts/sea/vana-linux-x64.tar.gz - label: vana-linux-x64.tar.gz - - path: artifacts/sea/vana-linux-x64.tar.gz.sha256 - label: vana-linux-x64.tar.gz.sha256 + - path: artifacts/release/*.tar.gz + - path: artifacts/release/*.tar.gz.sha256 + - path: artifacts/release/*.zip + - path: artifacts/release/*.zip.sha256 diff --git a/README.md b/README.md index dca216fe..4e6d4fb5 100644 --- a/README.md +++ b/README.md @@ -78,17 +78,24 @@ If you prefer to integrate the SDK into an existing project, follow the steps be ### Install -Use the published package directly: +macOS and Linux: ```bash -pnpm dlx @opendatalabs/connect status +curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/main/install/install.sh | sh ``` -Or install it globally: +Windows PowerShell: + +```powershell +iwr https://raw.githubusercontent.com/vana-com/vana-connect/main/install/install.ps1 -useb | iex +``` + +Both installers fetch the latest GitHub release asset for your platform, verify its checksum, and install `vana` without requiring Node or npm. + +If you want the npm package path as a fallback: ```bash -pnpm add -g @opendatalabs/connect -vana status +npx -y @opendatalabs/connect status ``` ### Commands @@ -122,7 +129,7 @@ pnpm build:sea ``` `pnpm build:sea` uses Node 25's `--build-sea` flow and embeds the runtime assets needed for `vana setup`. -It also produces `artifacts/sea/vana-linux-x64.tar.gz` and a matching `.sha256` checksum file for release/distribution. +It produces a platform-specific executable directory plus a release archive and matching checksum file under `artifacts/sea/`. ### Programmatic runtime access diff --git a/install/install.ps1 b/install/install.ps1 new file mode 100644 index 00000000..9856c186 --- /dev/null +++ b/install/install.ps1 @@ -0,0 +1,108 @@ +$ErrorActionPreference = "Stop" + +$Repo = if ($env:VANA_RELEASE_REPO) { $env:VANA_RELEASE_REPO } else { "vana-com/vana-connect" } +$Version = if ($env:VANA_VERSION) { $env:VANA_VERSION } else { "" } +$BinDir = if ($env:VANA_INSTALL_BIN_DIR) { $env:VANA_INSTALL_BIN_DIR } else { Join-Path $HOME "AppData\Local\Microsoft\WinGet\Links" } +$InstallRoot = if ($env:VANA_INSTALL_ROOT) { $env:VANA_INSTALL_ROOT } else { Join-Path $HOME "AppData\Local\Vana" } +$ReleaseApiUrl = if ($env:VANA_RELEASE_API_URL) { $env:VANA_RELEASE_API_URL } else { "https://api.github.com/repos/$Repo/releases/latest" } +$ReleaseBaseUrl = if ($env:VANA_RELEASE_BASE_URL) { $env:VANA_RELEASE_BASE_URL } else { "https://github.com/$Repo/releases/download" } + +for ($i = 0; $i -lt $args.Length; $i++) { + switch ($args[$i]) { + "--version" { + $Version = $args[$i + 1] + $i++ + } + "--bin-dir" { + $BinDir = $args[$i + 1] + $i++ + } + "--install-root" { + $InstallRoot = $args[$i + 1] + $i++ + } + "--repo" { + $Repo = $args[$i + 1] + $i++ + } + default { + throw "Unknown argument: $($args[$i])" + } + } +} + +$TargetArch = switch ([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString()) { + "Arm64" { "arm64" } + "X64" { "x64" } + default { throw "Unsupported architecture: $($_)" } +} + +if (-not $Version) { + $Release = Invoke-RestMethod -Uri $ReleaseApiUrl + $Version = $Release.tag_name +} + +if (-not $Version) { + throw "Unable to resolve a release version for $Repo" +} + +$AssetBase = "vana-win32-$TargetArch" +$ArchiveName = "$AssetBase.zip" +$ChecksumName = "$ArchiveName.sha256" +$DownloadBase = "$ReleaseBaseUrl/$Version" +$ArchiveUrl = "$DownloadBase/$ArchiveName" +$ChecksumUrl = "$DownloadBase/$ChecksumName" + +$TempDir = Join-Path ([System.IO.Path]::GetTempPath()) ("vana-install-" + [System.Guid]::NewGuid().ToString("N")) +New-Item -ItemType Directory -Path $TempDir | Out-Null + +try { + Write-Host "Installing $AssetBase from $Version" + $ArchivePath = Join-Path $TempDir $ArchiveName + $ChecksumPath = Join-Path $TempDir $ChecksumName + + Invoke-WebRequest -Uri $ArchiveUrl -OutFile $ArchivePath + Invoke-WebRequest -Uri $ChecksumUrl -OutFile $ChecksumPath + + $Expected = (Get-Content $ChecksumPath).Split(" ", [System.StringSplitOptions]::RemoveEmptyEntries)[0].Trim() + $Actual = (Get-FileHash -Path $ArchivePath -Algorithm SHA256).Hash.ToLowerInvariant() + if ($Expected.ToLowerInvariant() -ne $Actual) { + throw "Checksum verification failed" + } + + $ReleaseDir = Join-Path $InstallRoot "releases\$Version" + New-Item -ItemType Directory -Force -Path $ReleaseDir | Out-Null + Expand-Archive -Path $ArchivePath -DestinationPath $TempDir -Force + Copy-Item -Path (Join-Path $TempDir "vana.exe") -Destination (Join-Path $ReleaseDir "vana.exe") -Force + + $CurrentDir = Join-Path $InstallRoot "current" + if (Test-Path $CurrentDir) { + Remove-Item $CurrentDir -Recurse -Force + } + Copy-Item -Path $ReleaseDir -Destination $CurrentDir -Recurse + + New-Item -ItemType Directory -Force -Path $BinDir | Out-Null + Copy-Item -Path (Join-Path $CurrentDir "vana.exe") -Destination (Join-Path $BinDir "vana.exe") -Force + + $UserPath = [Environment]::GetEnvironmentVariable("Path", "User") + $PathEntries = @() + if ($UserPath) { + $PathEntries = $UserPath.Split(";") + } + if ($PathEntries -notcontains $BinDir) { + $NewPath = if ($UserPath) { "$BinDir;$UserPath" } else { $BinDir } + [Environment]::SetEnvironmentVariable("Path", $NewPath, "User") + Write-Host "" + Write-Host "Added $BinDir to your user PATH. Open a new terminal if `vana` is not available yet." + } + + Write-Host "" + Write-Host "Installed vana to $(Join-Path $BinDir 'vana.exe')" + Write-Host "Next step:" + Write-Host " vana status" +} +finally { + if (Test-Path $TempDir) { + Remove-Item $TempDir -Recurse -Force + } +} diff --git a/install/install.sh b/install/install.sh new file mode 100644 index 00000000..cf38ec6c --- /dev/null +++ b/install/install.sh @@ -0,0 +1,130 @@ +#!/usr/bin/env sh +set -eu + +REPO="${VANA_RELEASE_REPO:-vana-com/vana-connect}" +VERSION="${VANA_VERSION:-}" +BIN_DIR="${VANA_INSTALL_BIN_DIR:-$HOME/.local/bin}" +INSTALL_ROOT="${VANA_INSTALL_ROOT:-$HOME/.local/share/vana}" +RELEASE_API_URL="${VANA_RELEASE_API_URL:-https://api.github.com/repos/$REPO/releases/latest}" +RELEASE_BASE_URL="${VANA_RELEASE_BASE_URL:-https://github.com/$REPO/releases/download}" + +while [ "$#" -gt 0 ]; do + case "$1" in + --version) + VERSION="$2" + shift 2 + ;; + --bin-dir) + BIN_DIR="$2" + shift 2 + ;; + --install-root) + INSTALL_ROOT="$2" + shift 2 + ;; + --repo) + REPO="$2" + shift 2 + ;; + *) + echo "Unknown argument: $1" >&2 + exit 1 + ;; + esac +done + +need_cmd() { + if ! command -v "$1" >/dev/null 2>&1; then + echo "Missing required command: $1" >&2 + exit 1 + fi +} + +need_cmd curl +need_cmd tar + +OS="$(uname -s)" +ARCH="$(uname -m)" + +case "$OS" in + Linux) PLATFORM="linux" ;; + Darwin) PLATFORM="darwin" ;; + *) + echo "Unsupported operating system: $OS" >&2 + exit 1 + ;; +esac + +case "$ARCH" in + x86_64|amd64) TARGET_ARCH="x64" ;; + arm64|aarch64) TARGET_ARCH="arm64" ;; + *) + echo "Unsupported architecture: $ARCH" >&2 + exit 1 + ;; +esac + +if [ -z "$VERSION" ]; then + VERSION="$( + curl -fsSL "$RELEASE_API_URL" | + sed -n 's/.*"tag_name":[[:space:]]*"\([^"]*\)".*/\1/p' | + head -n 1 + )" +fi + +if [ -z "$VERSION" ]; then + echo "Unable to resolve a release version for $REPO" >&2 + exit 1 +fi + +ASSET_BASE="vana-$PLATFORM-$TARGET_ARCH" +ARCHIVE_NAME="$ASSET_BASE.tar.gz" +CHECKSUM_NAME="$ARCHIVE_NAME.sha256" +DOWNLOAD_BASE="$RELEASE_BASE_URL/$VERSION" +ARCHIVE_URL="$DOWNLOAD_BASE/$ARCHIVE_NAME" +CHECKSUM_URL="$DOWNLOAD_BASE/$CHECKSUM_NAME" + +TMP_DIR="$(mktemp -d)" +cleanup() { + rm -rf "$TMP_DIR" +} +trap cleanup EXIT INT TERM + +echo "Installing $ASSET_BASE from $VERSION" +curl -fsSL "$ARCHIVE_URL" -o "$TMP_DIR/$ARCHIVE_NAME" +curl -fsSL "$CHECKSUM_URL" -o "$TMP_DIR/$CHECKSUM_NAME" + +if command -v sha256sum >/dev/null 2>&1; then + (cd "$TMP_DIR" && sha256sum -c "$CHECKSUM_NAME") +elif command -v shasum >/dev/null 2>&1; then + EXPECTED="$(awk '{print $1}' "$TMP_DIR/$CHECKSUM_NAME")" + ACTUAL="$(shasum -a 256 "$TMP_DIR/$ARCHIVE_NAME" | awk '{print $1}')" + if [ "$EXPECTED" != "$ACTUAL" ]; then + echo "Checksum verification failed" >&2 + exit 1 + fi +else + echo "Missing checksum verifier: expected sha256sum or shasum" >&2 + exit 1 +fi + +mkdir -p "$INSTALL_ROOT/releases/$VERSION" "$BIN_DIR" +tar -xzf "$TMP_DIR/$ARCHIVE_NAME" -C "$TMP_DIR" +install -m 755 "$TMP_DIR/vana" "$INSTALL_ROOT/releases/$VERSION/vana" +ln -sfn "$INSTALL_ROOT/releases/$VERSION" "$INSTALL_ROOT/current" +ln -sfn "$INSTALL_ROOT/current/vana" "$BIN_DIR/vana" + +echo "Installed vana to $BIN_DIR/vana" +case ":$PATH:" in + *":$BIN_DIR:"*) ;; + *) + echo "" + echo "$BIN_DIR is not on your PATH." + echo "Add this line to your shell profile:" + echo " export PATH=\"$BIN_DIR:\$PATH\"" + ;; +esac + +echo "" +echo "Next step:" +echo " vana status" diff --git a/scripts/build-sea.mjs b/scripts/build-sea.mjs index d492e193..74ce10e2 100644 --- a/scripts/build-sea.mjs +++ b/scripts/build-sea.mjs @@ -27,13 +27,19 @@ for (let index = 2; index < process.argv.length; index += 1) { const artifactDir = path.join(repoRoot, "artifacts", "sea"); const scratchDir = path.join(repoRoot, ".sea-work", "build-sea"); -const targetName = `vana-${process.platform}-${process.arch}`; +const platform = args.get("platform") ?? process.platform; +const arch = args.get("arch") ?? process.arch; +const binaryName = + args.get("binary-name") ?? (platform === "win32" ? "vana.exe" : "vana"); +const targetName = args.get("artifact-name") ?? `vana-${platform}-${arch}`; +const archiveFormat = + args.get("archive-format") ?? (platform === "win32" ? "zip" : "tar.gz"); const outputPath = path.resolve( repoRoot, - args.get("output") ?? path.join(artifactDir, targetName), + args.get("output") ?? path.join(artifactDir, targetName, binaryName), ); -const tarballPath = `${outputPath}.tar.gz`; -const checksumPath = `${tarballPath}.sha256`; +const archivePath = path.join(artifactDir, `${targetName}.${archiveFormat}`); +const checksumPath = `${archivePath}.sha256`; const distCliMain = path.join(repoRoot, "dist", "cli", "main.js"); await assertExists( @@ -44,6 +50,8 @@ await assertExists( await fsp.mkdir(artifactDir, { recursive: true }); await fsp.rm(scratchDir, { recursive: true, force: true }); await fsp.mkdir(scratchDir, { recursive: true }); +await fsp.rm(path.dirname(outputPath), { recursive: true, force: true }); +await fsp.mkdir(path.dirname(outputPath), { recursive: true }); const entryPath = path.join(scratchDir, "entry.mjs"); const bundlePath = path.join(scratchDir, "bundle.cjs"); @@ -106,29 +114,22 @@ if (args.has("smoke")) { }); } -await run( - "tar", - [ - "-czf", - tarballPath, - "-C", - path.dirname(outputPath), - path.basename(outputPath), - ], - { - cwd: repoRoot, - }, -); +await createArchive({ + archiveFormat, + archivePath, + binaryName, + binaryDir: path.dirname(outputPath), +}); -const tarballDigest = await sha256(tarballPath); +const archiveDigest = await sha256(archivePath); await fsp.writeFile( checksumPath, - `${tarballDigest} ${path.basename(tarballPath)}\n`, + `${archiveDigest} ${path.basename(archivePath)}\n`, "utf8", ); process.stdout.write(`Built SEA executable: ${outputPath}\n`); -process.stdout.write(`Built SEA tarball: ${tarballPath}\n`); +process.stdout.write(`Built SEA archive: ${archivePath}\n`); process.stdout.write(`Built SEA checksum: ${checksumPath}\n`); async function assertExists(filePath, message) { @@ -161,3 +162,36 @@ async function sha256(filePath) { const buffer = await fsp.readFile(filePath); return createHash("sha256").update(buffer).digest("hex"); } + +async function createArchive({ + archiveFormat, + archivePath, + binaryName, + binaryDir, +}) { + if (archiveFormat === "tar.gz") { + await run("tar", ["-czf", archivePath, "-C", binaryDir, binaryName], { + cwd: repoRoot, + }); + return; + } + + if (archiveFormat === "zip") { + await fsp.rm(archivePath, { force: true }); + await run( + process.platform === "win32" ? "powershell" : "pwsh", + [ + "-NoLogo", + "-NoProfile", + "-Command", + `Compress-Archive -Path '${path.join(binaryDir, binaryName)}' -DestinationPath '${archivePath}' -Force`, + ], + { + cwd: repoRoot, + }, + ); + return; + } + + throw new Error(`Unsupported archive format: ${archiveFormat}`); +} From d9edefdbf6855bf9585761d78cbc3c87965fa007 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 12:11:11 -0500 Subject: [PATCH 006/249] test(cli): smoke test unix installer --- .github/workflows/ci.yml | 1 + package.json | 1 + scripts/test-install-unix.sh | 24 ++++++++++++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 scripts/test-install-unix.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e9f6427..ce632f8e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,3 +43,4 @@ jobs: - run: pnpm install --frozen-lockfile - run: pnpm build - run: pnpm build:sea:smoke + - run: pnpm test:install:unix diff --git a/package.json b/package.json index 82972481..653e4f66 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "clean": "tsc --build --clean", "cli": "node dist/cli/bin.js", "skills:sync": "node scripts/sync-skills.js", + "test:install:unix": "sh ./scripts/test-install-unix.sh", "test": "vitest run", "test:watch": "vitest", "test:e2e": "vitest run --config test/e2e/vitest.config.ts", diff --git a/scripts/test-install-unix.sh b/scripts/test-install-unix.sh new file mode 100644 index 00000000..54d41b19 --- /dev/null +++ b/scripts/test-install-unix.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env sh +set -eu + +ROOT_DIR="$(CDPATH= cd -- "$(dirname "$0")/.." && pwd)" +ARTIFACT_DIR="$ROOT_DIR/artifacts/sea" +WORK_DIR="$ROOT_DIR/.sea-work/test-install-unix" +RELEASE_DIR="$WORK_DIR/local-release/test-release" +HOME_DIR="$WORK_DIR/home" + +mkdir -p "$RELEASE_DIR" "$HOME_DIR" + +cp "$ARTIFACT_DIR/vana-linux-x64.tar.gz" "$RELEASE_DIR/vana-linux-x64.tar.gz" +cp "$ARTIFACT_DIR/vana-linux-x64.tar.gz.sha256" "$RELEASE_DIR/vana-linux-x64.tar.gz.sha256" + +VANA_VERSION=test-release \ +VANA_RELEASE_BASE_URL="file://$WORK_DIR/local-release" \ +VANA_INSTALL_ROOT="$HOME_DIR/root" \ +VANA_INSTALL_BIN_DIR="$HOME_DIR/bin" \ +HOME="$HOME_DIR" \ +sh "$ROOT_DIR/install/install.sh" + +PATH="$HOME_DIR/bin:$PATH" HOME="$HOME_DIR" "$HOME_DIR/bin/vana" status --json >/dev/null + +echo "Unix installer smoke test passed" From 9e46d107f977bffb6b6ff03bf74757d5ce522afc Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 12:15:12 -0500 Subject: [PATCH 007/249] fix(cli): restore installed binary connector flows --- src/runtime/managed-playwright.ts | 11 ++++++- src/runtime/repo-paths.ts | 35 ++++++++++++++++---- test/runtime/repo-paths.test.ts | 54 +++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 test/runtime/repo-paths.test.ts diff --git a/src/runtime/managed-playwright.ts b/src/runtime/managed-playwright.ts index c10ab431..5b60c64f 100644 --- a/src/runtime/managed-playwright.ts +++ b/src/runtime/managed-playwright.ts @@ -2,6 +2,7 @@ import fs from "node:fs"; import fsp from "node:fs/promises"; import path from "node:path"; import { spawn } from "node:child_process"; +import * as sea from "node:sea"; import { ensureParentDir, @@ -151,7 +152,7 @@ export class ManagedPlaywrightRuntime { "--output", getLastResultPath(), ]; - const child = spawn(process.execPath, args, { + const child = spawn(getNodeCommand(), args, { stdio: ["ignore", "pipe", "pipe"], }); const logStream = fs.createWriteStream(logPath); @@ -296,6 +297,14 @@ export class ManagedPlaywrightRuntime { } } +function getNodeCommand(): string { + if (!sea.isSea()) { + return process.execPath; + } + + return process.env.VANA_NODE_BIN || "node"; +} + async function installChromium( runnerDir: string, logPath: string, diff --git a/src/runtime/repo-paths.ts b/src/runtime/repo-paths.ts index 891ee531..5a0e46e9 100644 --- a/src/runtime/repo-paths.ts +++ b/src/runtime/repo-paths.ts @@ -2,13 +2,34 @@ import fs from "node:fs"; import path from "node:path"; export function findDataConnectorsDir(cwd = process.cwd()): string | null { - const envPath = process.env.VANA_DATA_CONNECTORS_DIR; - const candidates = [ - envPath, - path.resolve(cwd, "../data-connectors"), - path.resolve(import.meta.dirname, "../../../data-connectors"), - path.resolve(import.meta.dirname, "../../../../data-connectors"), - ].filter((value): value is string => Boolean(value)); + const candidates: string[] = []; + const seen = new Set(); + + const pushCandidate = (value: string | undefined) => { + if (!value) { + return; + } + const resolved = path.resolve(value); + if (seen.has(resolved)) { + return; + } + seen.add(resolved); + candidates.push(resolved); + }; + + pushCandidate(process.env.VANA_DATA_CONNECTORS_DIR); + + let currentDir = path.resolve(cwd); + while (true) { + pushCandidate(currentDir); + pushCandidate(path.join(currentDir, "data-connectors")); + + const parentDir = path.dirname(currentDir); + if (parentDir === currentDir) { + break; + } + currentDir = parentDir; + } for (const candidate of candidates) { if ( diff --git a/test/runtime/repo-paths.test.ts b/test/runtime/repo-paths.test.ts new file mode 100644 index 00000000..5014fa23 --- /dev/null +++ b/test/runtime/repo-paths.test.ts @@ -0,0 +1,54 @@ +import fsp from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; + +import { afterEach, describe, expect, it } from "vitest"; + +import { findDataConnectorsDir } from "../../src/runtime/repo-paths.js"; + +const tempDirs: string[] = []; + +afterEach(async () => { + await Promise.all( + tempDirs + .splice(0) + .map((dir) => fsp.rm(dir, { recursive: true, force: true })), + ); +}); + +describe("findDataConnectorsDir", () => { + it("finds a repo at the current working directory", async () => { + const repoDir = await createDataConnectorsFixture("repo-root"); + + expect(findDataConnectorsDir(repoDir)).toBe(repoDir); + }); + + it("finds a sibling data-connectors repo from another project cwd", async () => { + const workspaceDir = await fsp.mkdtemp( + path.join(os.tmpdir(), "vana-connect-workspace-"), + ); + tempDirs.push(workspaceDir); + + const repoDir = path.join(workspaceDir, "data-connectors"); + await createFixtureAt(repoDir); + + const otherProjectDir = path.join(workspaceDir, "vana-connect"); + await fsp.mkdir(otherProjectDir, { recursive: true }); + + expect(findDataConnectorsDir(otherProjectDir)).toBe(repoDir); + }); +}); + +async function createDataConnectorsFixture(prefix: string): Promise { + const repoDir = await fsp.mkdtemp(path.join(os.tmpdir(), `${prefix}-`)); + tempDirs.push(repoDir); + await createFixtureAt(repoDir); + return repoDir; +} + +async function createFixtureAt(repoDir: string): Promise { + await fsp.mkdir(path.join(repoDir, "skills", "vana-connect", "scripts"), { + recursive: true, + }); + await fsp.writeFile(path.join(repoDir, "registry.json"), "{}\n", "utf8"); +} From 6950100191085d8ee29d89e427e5ad789cbaf577 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 15:53:24 -0500 Subject: [PATCH 008/249] docs(cli): add final product spec --- docs/CLI-FINAL-PRODUCT-SPEC.md | 732 +++++++++++++++++++++++++++++++++ 1 file changed, 732 insertions(+) create mode 100644 docs/CLI-FINAL-PRODUCT-SPEC.md diff --git a/docs/CLI-FINAL-PRODUCT-SPEC.md b/docs/CLI-FINAL-PRODUCT-SPEC.md new file mode 100644 index 00000000..edbb05e3 --- /dev/null +++ b/docs/CLI-FINAL-PRODUCT-SPEC.md @@ -0,0 +1,732 @@ +# `vana-connect` Final Product Spec + +_As of March 13, 2026_ + +If this document conflicts with earlier `CLI-*` planning docs, this document wins. + +## Purpose + +This document defines the target end state for: + +- the `vana` CLI +- the local connector runtime +- the installer and release pipeline +- the skill/onboarding contract that should sit on top of the CLI + +This is not a transitional plan for user-visible intermediate phases. +It is the implementation spec for the final product we want to ship. + +## Final Product From The User's Point Of View + +### What a human experiences + +1. They install `vana` with one obvious command. +2. They do not need to know or care that the implementation uses Node/TypeScript. +3. They run: + +```bash +vana connect github +``` + +4. If a browser runtime is needed, `vana` handles it directly. +5. If login or 2FA is needed, `vana` asks clearly. +6. The user gets a concrete outcome: + - data connected locally + - data ingested to the Personal Server + - manual input needed + - source unavailable +7. The user never has to install `node`, `npm`, or Playwright themselves. + +### What a coding agent experiences + +1. It can rely on an installed `vana` binary. +2. It can run: + +```bash +vana sources --json +vana status --json +vana connect --json --no-input +``` + +3. It gets stable structured events and outcomes. +4. It can fall back to interactive reruns when the runtime emits `needs_input`. +5. It can access explicit debugging capabilities when needed, without depending on raw Playwright internals. + +### What is explicitly not true in the final product + +- the user is not required to have system `node` +- the user is not required to have system `npm` +- `vana setup` does not run `npm install` +- `vana connect` does not shell out to `node run-connector.cjs` +- the CLI does not depend on copied runtime scripts under `~/.dataconnect/playwright-runner/` + +## Product Decisions Locked By This Spec + +These are now the working decisions unless a later discovery proves they are wrong. + +1. The final product is one `vana` CLI plus an SDK/runtime core, not separate human and agent CLIs. +2. The runtime rewrite should target the clean end state directly, not an incremental user-visible bridge. +3. The first runtime host should be **in-process**, not worker-first. +4. The runtime core must be **transport-agnostic** so a worker host or app host can be added later without redesigning the core. +5. The runtime must expose **capabilities**, not raw Playwright objects. +6. Existing connectors must continue to work during and after the rewrite. +7. Headed fallback must remain supported. +8. The default profile strategy remains **Vana-managed isolated profiles**. +9. Chromium may still be a one-time managed download during setup. +10. Installer/release work must only claim a standalone experience once runtime execution and setup no longer depend on external `node` or `npm`. + +## Non-Goals For This Rewrite + +These are intentionally out of scope for the final product defined here: + +- existing browser profile support +- remote/cloud connector execution +- embrowse or webview execution backends +- a TUI-first CLI +- a plugin system +- a public browser automation SDK +- redesigning connector authoring as a new format + +These futures must remain possible, but they are not required to complete this spec. + +## Critical Current Problems This Spec Must Eliminate + +The current system still has transitional behavior that is not acceptable in the final product: + +1. `ensureInstalled()` runs `npm install --ignore-scripts`. +2. connector execution still depends on `run-connector.cjs`. +3. the SEA binary still needs `node` on `PATH` for connector execution in some paths. +4. the current runtime state model assumes a copied sidecar under `~/.dataconnect/playwright-runner/`. +5. installer/release work currently looks stronger than the runtime truth unless we finish the runtime rewrite. + +The final product is not done until all five are removed. + +## Final Architecture + +### High-level shape + +The system should end up as: + +- `connect-core` + - shared types, events, state, paths, errors +- `connectors` + - registry resolution and connector discovery +- `runtime-core` + - connector run contracts + - capability contracts + - event contracts + - state machine +- `runtime-playwright` + - Playwright-based implementation of the runtime core +- `cli` + - command grammar, prompts, output formatting, JSON mode +- `install/release` + - artifact generation, checksums, installer scripts, release metadata + +The CLI should call the runtime core directly. +The runtime core should not depend on CLI-specific assumptions. + +### Runtime host model + +The first final host should be **in-process**: + +- no external `node` child process +- no deployed `run-connector.cjs` +- no deployed copied `playwright-runner` package + +Important nuance: + +- the runtime core must still be written so a worker-based host can be added later +- the host boundary is an internal implementation detail +- the API surface is capability-based, not host-based + +### Why in-process first + +- simplest final product +- easiest to test +- easiest to make honestly standalone +- avoids committing early to message-passing/orchestration complexity that may not be necessary +- still compatible with adding a worker host later if isolation becomes necessary + +## Runtime Core Contract + +### Principle + +The runtime must expose **runs**, **events**, and **debug capabilities**. + +The runtime must not expose raw Playwright `Browser`, `Context`, or `Page` objects outside the runtime implementation. + +### Required runtime interfaces + +Illustrative shape: + +```ts +interface ConnectorRuntime { + ensureReady(request: RuntimeSetupRequest): Promise; + startRun(request: ConnectorRunRequest): Promise; + listCapabilities(source: string): Promise; +} + +interface ConnectorRunHandle { + id: string; + events(): AsyncIterable; + provideInput(input: Record): Promise; + stop(reason?: string): Promise; + getState(): Promise; + takeScreenshot(): Promise; + inspect(): Promise; +} +``` + +This interface is illustrative, not exact naming. +The important constraint is the shape of the interaction: + +- create run +- consume events +- provide input +- inspect or debug +- stop + +### Required runtime events + +The runtime core must produce events rich enough for: + +- CLI human output +- CLI `--json` mode +- skill orchestration +- Desktop mediation later + +Required events: + +- `run-started` +- `state-changed` +- `needs-input` +- `headed-required` +- `legacy-auth` +- `artifact-created` +- `collection-complete` +- `ingest-started` +- `ingest-complete` +- `runtime-error` +- `run-stopped` + +Not every event must surface directly to end users, but they must exist in the internal contract. + +### Required runtime debug capabilities + +These are required in the runtime API even if the first CLI only surfaces a subset: + +- `takeScreenshot` +- `getCurrentUrl` +- `getRunState` +- `inspect` + - current step + - current page title if available + - current URL if available + - whether browser is headed/headless + - whether login/session is already established +- `stopRun` + +Future-facing but not required in v1 CLI output: + +- limited DOM/visible text inspection +- network capture inspection +- explicit headed handoff + +### Why these debug capabilities matter + +They are needed for: + +- agent-assisted connector development +- richer Desktop mediation +- debugging failed auth flows +- future recovery/inspection surfaces + +They are **not** a reason to expose raw Playwright objects outside the runtime. + +## Browser And Profile Strategy Contracts + +The runtime core must separate: + +- execution backend +- browser strategy +- profile strategy + +### Browser strategy + +Required shape: + +```ts +interface BrowserStrategy { + ensureBrowserReady(): Promise; + launch(request: LaunchRequest): Promise; +} +``` + +Initial implementation: + +- Playwright +- managed Chromium download +- headless by default +- headed fallback supported + +### Profile strategy + +Required shape: + +```ts +interface ProfileStrategy { + resolveProfile(run: ConnectorRunRequest): Promise; +} +``` + +Initial implementation: + +- isolated Vana-managed profile under `~/.dataconnect/browser-profiles/` + +The runtime must not hardcode assumptions that make these impossible later: + +- existing browser profile +- ephemeral sandbox profile +- connector-specific profile behavior + +## Connector Compatibility Requirements + +### Core requirement + +Existing connectors from `data-connectors` must continue to work without requiring mass rewrites. + +### What must be preserved + +- current connector registry resolution +- current connector file loading model +- current result shape +- `requestInput` / input-driven flow support +- legacy auth detection for connectors using older patterns +- headed fallback capability + +### Compatibility adapter + +The runtime rewrite must provide a compatibility layer that adapts current connector expectations into the new runtime core. + +That adapter is responsible for: + +- loading connector modules +- constructing the page/runtime API the connector expects +- translating connector input requests into runtime `needs-input` events +- translating legacy auth into `legacy-auth` +- translating completion/errors into runtime events + +### What is explicitly not allowed + +The compatibility adapter must not require: + +- shelling out to `run-connector.cjs` +- spawning system `node` +- copying connector runner source into the user home + +## Runtime Setup In The Final Product + +### Final meaning of `vana setup` + +`vana setup` should only do runtime work the user actually needs. + +Allowed responsibilities: + +- create required state directories +- ensure browser cache location exists +- ensure managed Chromium is installed +- verify runtime health +- optionally clean/repair caches + +Disallowed responsibilities: + +- `npm install` +- `pnpm install` +- copying `run-connector.cjs` into `~/.dataconnect/` +- copying `playwright-runner` into `~/.dataconnect/` + +### Final runtime state check + +The runtime should be considered installed/healthy based on: + +- runtime core availability inside the binary/package +- browser availability / browser install state +- required state directories + +It must no longer depend on: + +- `~/.dataconnect/playwright-runner/index.cjs` +- `~/.dataconnect/run-connector.cjs` + +### Files that should disappear from fresh installs + +Fresh installs of the final product should not create: + +- `~/.dataconnect/playwright-runner/` +- `~/.dataconnect/run-connector.cjs` + +Required files/directories that may remain: + +- `~/.dataconnect/connectors/` +- `~/.dataconnect/browser-profiles/` +- `~/.dataconnect/browsers/` +- `~/.dataconnect/logs/` +- `~/.dataconnect/last-result.json` +- `~/.dataconnect/vana-connect-state.json` + +## Chromium Installation In The Final Product + +### Decision + +Chromium remains a one-time managed download during setup. + +### Requirements + +- the download must be initiated by `vana` itself +- the user must not need `npx playwright install` +- the user must not need external `node` +- the process must log clearly and recover cleanly + +### Implementation constraint + +Browser installation must be triggered through internal runtime code, not shelling out to: + +- `npx playwright install` +- `npm exec playwright install` + +If using Playwright internals is required, that is acceptable. +If a small vendored installer helper is required, that is acceptable. + +What is not acceptable is preserving an external Node/npm requirement for browser installation. + +## CLI Contract That Must Be Preserved + +The runtime rewrite must not change the public command model: + +```bash +vana connect +vana sources +vana status +vana setup +``` + +### Human-mode contract + +Must remain: + +- calm +- concise +- explicit about setup/downloads +- explicit about local-only vs Personal Server ingest +- explicit about next steps + +### Machine-mode contract + +The following commands must remain first-class: + +```bash +vana sources --json +vana status --json +vana connect --json --no-input +``` + +### Required outcome preservation + +The runtime rewrite must preserve these user-visible outcomes: + +- `connected_and_ingested` +- `connected_local_only` +- `needs_input` +- `legacy_auth` +- `setup_required` +- `connector_unavailable` +- `runtime_error` +- `unexpected_internal_error` + +The runtime implementation may change; the product contract should not. + +## Installer And Release Final Product + +### Final install channels + +The final product should ship with all of these: + +1. `install.sh` +2. `install.ps1` +3. GitHub Release assets +4. Homebrew formula/tap +5. Winget manifest + +The package-manager channels should be generated from the same release artifact truth, not maintained by hand indefinitely. + +### Artifact matrix + +Required release assets: + +- `vana-linux-x64.tar.gz` +- `vana-darwin-x64.tar.gz` +- `vana-darwin-arm64.tar.gz` +- `vana-win32-x64.zip` +- matching `.sha256` files for each + +### Installer contract + +Installers must: + +- resolve the correct release asset +- download the asset +- download the checksum +- verify the checksum +- install `vana` into a normal user location +- print the next step + +Installers must not: + +- ask the user to install Node +- install npm packages globally +- expose `@opendatalabs/connect` as the primary user-facing concept + +### Install locations + +Default install targets: + +- macOS/Linux binary: + - `~/.local/bin/vana` +- macOS/Linux runtime root: + - `~/.local/share/vana/` +- Windows binary: + - user-level bin directory suitable for `PATH` +- Windows runtime root: + - user-local app data under `Vana` + +### Upgrade contract + +Re-running the installer must: + +- install a new version under a versioned release directory +- update the `current` pointer/symlink +- preserve local data under `~/.dataconnect/` + +### Uninstall contract + +The repo must document how to uninstall: + +- the `vana` binary +- installed release directories + +It should not tell users to manually guess where files live. + +## Release Pipeline Requirements + +### Build truth + +The release pipeline must produce the same artifact shape used by installers and package-manager channels. + +### Build inputs + +Build-time use of Node 25 SEA is acceptable. +Runtime dependence on user-installed Node is not. + +### Required release jobs + +1. build artifact matrix +2. smoke-test each artifact at least minimally +3. attach assets to GitHub releases +4. publish npm package only as a secondary distribution channel +5. generate/update package-manager metadata + +### Canary requirements + +Canary releases must still work, but canary should not be the main product install story once the final installer path is live. + +### Stable release requirements + +Stable release must not be cut until: + +- no external `node` is required at runtime +- no external `npm` is required at setup time +- installed `vana` works on a clean machine + +## Skill And Onboarding Requirements + +The skill and agent guidance should end at: + +1. prefer installed `vana` +2. fall back to release-channel package only when appropriate +3. use local dev path only for explicit debugging/development + +The skill should not point users at raw scripts once the final runtime rewrite is complete. + +The skill should continue to use: + +- `vana sources --json` +- `vana status --json` +- `vana connect --json --no-input` + +## Required Test Matrix + +### Runtime correctness tests + +Required automated tests: + +- registry discovery from repo and non-repo working directories +- source listing from installed binary +- missing connector outcome +- `needs_input` outcome +- `legacy_auth` outcome +- successful local collection +- successful Personal Server ingest when target exists +- headed fallback path where applicable + +### Standalone truth tests + +Required proof before calling the product standalone: + +- installed `vana` runs with `node` absent from `PATH` +- installed `vana` runs with `npm` absent from `PATH` +- `vana status --json` works +- `vana sources --json` works +- `vana connect github --json --no-input` works and returns `needs_input` + +This must be enforced in CI, not just proven once manually. + +### Installer tests + +Required automated tests: + +- Unix installer smoke test +- checksum verification failure test +- upgrade test +- Windows installer smoke test + +### Release artifact tests + +Per-platform smoke tests must verify: + +- artifact starts +- `--help` works +- `status --json` works + +At least one platform in CI must also verify a full installer path. + +## Required Deletions Before Marking Complete + +The following transitional mechanisms must be removed or retired from the product path: + +- `run-connector.cjs` as a user/runtime dependency +- copied `playwright-runner` installation in the user home +- runtime `npm install` +- runtime `npx playwright install` +- runtime execution through system `node` + +These files may remain temporarily in the repo for reference during migration, but they must not be part of the final product path. + +## Execution Order + +This is the order implementation should follow. + +### 1. Freeze the runtime contract + +Create the runtime core interfaces and event/capability contracts first. + +Required deliverables: + +- runtime contract types +- run lifecycle state model +- capability model +- event model + +### 2. Port orchestration logic into TypeScript runtime modules + +Port the logic currently living in `run-connector.cjs` into runtime modules. + +Required deliverables: + +- direct orchestration module +- no stdio JSON parsing in the main product path +- direct in-memory input flow in the runtime core + +### 3. Port the Playwright runner into runtime modules + +Port the logic currently living in `playwright-runner/index.cjs`. + +Required deliverables: + +- Playwright host module +- browser launch module +- page API / connector compatibility adapter +- debug capability implementation + +### 4. Replace CLI runtime calls + +Replace `ManagedPlaywrightRuntime.runConnector()` so it uses runtime modules directly. + +Required deliverables: + +- no `spawn(node, run-connector.cjs ...)` +- preserved CLI events/outcomes + +### 5. Replace setup path + +Replace `ensureInstalled()` so it only manages: + +- browser availability +- state directories +- runtime health + +Required deliverables: + +- no `npm install` +- no copied runner source + +### 6. Prove standalone truth + +Run installed-binary tests with `node` and `npm` absent from `PATH`. + +This is the gate that decides whether the installer/release story is honest. + +### 7. Finalize installer/release channels + +Only after standalone truth is proven: + +- installer scripts become the canonical story +- Homebrew and winget metadata become required +- skill/onboarding can fully prefer installed `vana` + +### 8. Remove transitional runtime assets from the product path + +After parity is proven, remove or retire: + +- script wrappers +- copied runner assumptions +- obsolete runtime state checks + +## What Must Not Happen During Execution + +To protect the final product quality, do not: + +- reintroduce external `node` as an implicit runtime dependency +- reintroduce external `npm` as a setup dependency +- hardcode Playwright internals into the public runtime contract +- expose raw browser/page objects outside the runtime implementation +- couple the runtime core to CLI prompt behavior +- hardcode isolated-profile assumptions into the runtime core +- change the public CLI grammar during the runtime rewrite + +## Completion Criteria + +The final product is done only when all of these are true: + +1. A clean machine can install `vana` without preinstalled Node/npm. +2. `vana setup` completes without calling external package managers. +3. `vana status --json` works from the installed binary. +4. `vana sources --json` works from the installed binary. +5. `vana connect github --json --no-input` returns `needs_input` from the installed binary on a clean machine. +6. Existing connectors still work through the compatibility adapter. +7. Headed fallback still exists. +8. Installer scripts are real and verified. +9. GitHub release assets, Homebrew, and winget all point at the same artifact truth. +10. The skill can honestly prefer installed `vana` as the main path. + +Until all ten are true, the final product defined by this spec is not complete. From 120f1850c2a2f49045370b4d54bb0a91a1546bfc Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 16:02:38 -0500 Subject: [PATCH 009/249] refactor(cli): remove run-connector from active runtime path --- scripts/build-sea.mjs | 1 - src/runtime/bundled-assets.ts | 4 - src/runtime/core/contracts.ts | 75 +++++ src/runtime/core/index.ts | 8 + src/runtime/index.ts | 9 + src/runtime/managed-playwright.ts | 176 +--------- src/runtime/playwright/child-process-run.ts | 356 ++++++++++++++++++++ src/runtime/playwright/index.ts | 1 + 8 files changed, 456 insertions(+), 174 deletions(-) create mode 100644 src/runtime/core/contracts.ts create mode 100644 src/runtime/core/index.ts create mode 100644 src/runtime/playwright/child-process-run.ts create mode 100644 src/runtime/playwright/index.ts diff --git a/scripts/build-sea.mjs b/scripts/build-sea.mjs index 74ce10e2..26725523 100644 --- a/scripts/build-sea.mjs +++ b/scripts/build-sea.mjs @@ -82,7 +82,6 @@ await build({ }); const assetPaths = [ - "runtime-assets/run-connector.cjs", "runtime-assets/playwright-runner/index.cjs", "runtime-assets/playwright-runner/package.json", "runtime-assets/playwright-runner/package-lock.json", diff --git a/src/runtime/bundled-assets.ts b/src/runtime/bundled-assets.ts index 6c0cdec0..c5824f69 100644 --- a/src/runtime/bundled-assets.ts +++ b/src/runtime/bundled-assets.ts @@ -7,7 +7,6 @@ import * as sea from "node:sea"; import { ensureParentDir, getDataConnectHome } from "../core/index.js"; const RUNTIME_ASSET_KEYS = [ - "runtime-assets/run-connector.cjs", "runtime-assets/playwright-runner/index.cjs", "runtime-assets/playwright-runner/package.json", "runtime-assets/playwright-runner/package-lock.json", @@ -16,14 +15,12 @@ const RUNTIME_ASSET_KEYS = [ ] as const; export interface BundledRuntimePaths { - runConnectorPath: string; playwrightRunnerDir: string; } export async function getBundledRuntimePaths(): Promise { if (!sea.isSea()) { return { - runConnectorPath: fileSystemRuntimeAssetPath("run-connector.cjs"), playwrightRunnerDir: fileSystemRuntimeAssetPath("playwright-runner"), }; } @@ -51,7 +48,6 @@ export async function getBundledRuntimePaths(): Promise { } return { - runConnectorPath: path.join(extractionRoot, "run-connector.cjs"), playwrightRunnerDir: path.join(extractionRoot, "playwright-runner"), }; } diff --git a/src/runtime/core/contracts.ts b/src/runtime/core/contracts.ts new file mode 100644 index 00000000..3cf1e157 --- /dev/null +++ b/src/runtime/core/contracts.ts @@ -0,0 +1,75 @@ +export interface RuntimeNeedInputEvent { + type: "needs-input"; + source: string; + message: string; + fields: string[]; + logPath: string; + schema?: { + properties?: Record; + }; + responseInputPath?: string; +} + +export interface RuntimeRunStartedEvent { + type: "run-started"; + source: string; + logPath: string; +} + +export interface RuntimeLegacyAuthEvent { + type: "legacy-auth"; + source: string; + message: string; + logPath: string; +} + +export interface RuntimeCollectionCompleteEvent { + type: "collection-complete"; + source: string; + resultPath: string; + logPath: string; +} + +export interface RuntimeErrorEvent { + type: "runtime-error"; + source: string; + message: string; + logPath: string; +} + +export type RuntimeEvent = + | RuntimeRunStartedEvent + | RuntimeNeedInputEvent + | RuntimeLegacyAuthEvent + | RuntimeCollectionCompleteEvent + | RuntimeErrorEvent; + +export interface RuntimeInputRequest { + message?: string; + schema?: { + properties?: Record; + }; + fields: string[]; + responseInputPath: string; +} + +export interface ConnectorRunRequest { + connectorPath: string; + source: string; + noInput?: boolean; + signal?: AbortSignal; + onNeedInput?: (event: RuntimeInputRequest) => Promise>; +} + +export interface ConnectorRunHandle { + readonly source: string; + readonly logPath: string; + events(): AsyncGenerator; + stop(reason?: string): void; +} + +export interface RuntimeCapabilities { + supportsHeaded: boolean; + supportsManagedProfiles: boolean; + supportsScreenshots: boolean; +} diff --git a/src/runtime/core/index.ts b/src/runtime/core/index.ts new file mode 100644 index 00000000..780a6828 --- /dev/null +++ b/src/runtime/core/index.ts @@ -0,0 +1,8 @@ +export type { + ConnectorRunHandle, + ConnectorRunRequest, + RuntimeCapabilities, + RuntimeEvent, + RuntimeInputRequest, + RuntimeNeedInputEvent, +} from "./contracts.js"; diff --git a/src/runtime/index.ts b/src/runtime/index.ts index a01d6eee..2c44e614 100644 --- a/src/runtime/index.ts +++ b/src/runtime/index.ts @@ -1,7 +1,16 @@ +export type { + ConnectorRunHandle, + ConnectorRunRequest, + RuntimeCapabilities, + RuntimeEvent, + RuntimeInputRequest, + RuntimeNeedInputEvent, +} from "./core/index.js"; export { ManagedPlaywrightRuntime, type NeedInputEvent, type RunConnectorOptions, type RuntimeInstallResult, } from "./managed-playwright.js"; +export { startChildProcessConnectorRun } from "./playwright/index.js"; export { findDataConnectorsDir } from "./repo-paths.js"; diff --git a/src/runtime/managed-playwright.ts b/src/runtime/managed-playwright.ts index 5b60c64f..2b44bc3d 100644 --- a/src/runtime/managed-playwright.ts +++ b/src/runtime/managed-playwright.ts @@ -2,13 +2,11 @@ import fs from "node:fs"; import fsp from "node:fs/promises"; import path from "node:path"; import { spawn } from "node:child_process"; -import * as sea from "node:sea"; import { ensureParentDir, getConnectorCacheDir, getDataConnectHome, - getLastResultPath, getLogsDir, getRunnerDir, getTimestampedLogPath, @@ -16,6 +14,8 @@ import { import type { CliEvent, RuntimeState } from "../core/cli-types.js"; import { fetchConnectorToCache } from "../connectors/registry.js"; import { getBundledRuntimePaths } from "./bundled-assets.js"; +import type { ConnectorRunHandle } from "./core/index.js"; +import { startChildProcessConnectorRun } from "./playwright/index.js"; import { findDataConnectorsDir } from "./repo-paths.js"; export interface RuntimeInstallResult { @@ -51,13 +51,6 @@ export class ManagedPlaywrightRuntime { if (!fs.existsSync(path.join(this.runnerDir, "index.cjs"))) { return "missing"; } - if ( - !fs.existsSync( - path.join(getConnectorCacheDir(), "..", "run-connector.cjs"), - ) - ) { - return "unhealthy"; - } return "installed"; } @@ -70,7 +63,6 @@ export class ManagedPlaywrightRuntime { await ensureParentDir(logPath); const homeDir = getDataConnectHome(); const bundledRuntime = await getBundledRuntimePaths(); - const runConnectorTargetPath = path.join(homeDir, "run-connector.cjs"); await fsp.mkdir(homeDir, { recursive: true }); await fsp.mkdir(getConnectorCacheDir(), { recursive: true }); @@ -89,8 +81,6 @@ export class ManagedPlaywrightRuntime { }); await installChromium(this.runnerDir, logPath); - await ensureParentDir(runConnectorTargetPath); - await fsp.copyFile(bundledRuntime.runConnectorPath, runConnectorTargetPath); return { runtime: this.state, @@ -141,170 +131,18 @@ export class ManagedPlaywrightRuntime { ): AsyncGenerator { await fsp.mkdir(getLogsDir(), { recursive: true }); const logPath = getTimestampedLogPath(`run-${options.source}`); - const runConnectorPath = path.join( - getRunnerDir(), - "..", - "run-connector.cjs", - ); - const args = [ - runConnectorPath, - options.connectorPath, - "--output", - getLastResultPath(), - ]; - const child = spawn(getNodeCommand(), args, { - stdio: ["ignore", "pipe", "pipe"], - }); - const logStream = fs.createWriteStream(logPath); - if (options.signal) { - options.signal.addEventListener("abort", () => { - child.kill("SIGTERM"); - }); - } - - let stdoutBuffer = ""; - let settled = false; - const queue: CliEvent[] = []; - let resolveQueue: (() => void) | null = null; - - const flushQueue = () => { - resolveQueue?.(); - resolveQueue = null; - }; - - const pushEvent = (event: CliEvent) => { - queue.push(event); - flushQueue(); - }; - - child.stderr.on("data", (chunk) => { - logStream.write(chunk); - }); - - child.stdout.on("data", async (chunk: Buffer) => { - logStream.write(chunk); - stdoutBuffer += chunk.toString(); - const lines = stdoutBuffer.split("\n"); - stdoutBuffer = lines.pop() ?? ""; - - for (const line of lines) { - if (!line.trim()) { - continue; - } - - const parsed = JSON.parse(line) as Record; - if (parsed.type === "need-input") { - const fields = Object.keys( - (( - parsed.schema as - | { properties?: Record } - | undefined - )?.properties ?? {}) as Record, - ); - - if (options.noInput || !options.onNeedInput) { - child.kill("SIGTERM"); - pushEvent({ - type: "needs-input", - source: options.source, - message: - typeof parsed.message === "string" - ? parsed.message - : "Additional input is required.", - fields, - logPath, - }); - continue; - } - - const input = await options.onNeedInput({ - message: - typeof parsed.message === "string" - ? parsed.message - : "Additional input is required.", - schema: parsed.schema as NeedInputEvent["schema"], - fields, - responseInputPath: String(parsed.responseInputPath), - }); - await ensureParentDir(String(parsed.responseInputPath)); - await fsp.writeFile( - String(parsed.responseInputPath), - `${JSON.stringify(input)}\n`, - "utf8", - ); - continue; - } - - if (parsed.type === "result") { - pushEvent({ - type: "collection-complete", - source: options.source, - resultPath: String(parsed.resultPath), - logPath, - }); - continue; - } - - if (parsed.type === "legacy-auth") { - pushEvent({ - type: "legacy-auth", - source: options.source, - message: - typeof parsed.message === "string" - ? parsed.message - : "This connector requires legacy headed authentication.", - logPath, - }); - continue; - } - - if (parsed.type === "error") { - pushEvent({ - type: "runtime-error", - source: options.source, - message: - typeof parsed.message === "string" - ? parsed.message - : "Connector run failed.", - logPath, - }); - continue; - } - } - }); - - child.on("close", () => { - settled = true; - logStream.end(); - flushQueue(); - }); - - pushEvent({ - type: "run-started", - source: options.source, + const handle: ConnectorRunHandle = startChildProcessConnectorRun({ + request: options, + runnerDir: this.runnerDir, logPath, }); - while (!settled || queue.length > 0) { - if (queue.length === 0) { - await new Promise((resolve) => { - resolveQueue = resolve; - }); - continue; - } - yield queue.shift() as CliEvent; + for await (const event of handle.events()) { + yield event as CliEvent; } } } -function getNodeCommand(): string { - if (!sea.isSea()) { - return process.execPath; - } - - return process.env.VANA_NODE_BIN || "node"; -} - async function installChromium( runnerDir: string, logPath: string, diff --git a/src/runtime/playwright/child-process-run.ts b/src/runtime/playwright/child-process-run.ts new file mode 100644 index 00000000..4b9032b5 --- /dev/null +++ b/src/runtime/playwright/child-process-run.ts @@ -0,0 +1,356 @@ +import fs from "node:fs"; +import fsp from "node:fs/promises"; +import { spawn } from "node:child_process"; +import os from "node:os"; +import path from "node:path"; +import * as sea from "node:sea"; + +import { + ensureParentDir, + getLastResultPath, + getRunnerDir, +} from "../../core/index.js"; +import type { + ConnectorRunHandle, + ConnectorRunRequest, + RuntimeEvent, + RuntimeInputRequest, +} from "../core/index.js"; + +export function startChildProcessConnectorRun({ + request, + runnerDir, + logPath, +}: { + request: ConnectorRunRequest; + runnerDir?: string; + logPath: string; +}): ConnectorRunHandle { + const activeRunnerDir = runnerDir ?? getRunnerDir(); + const child = spawn(getNodeCommand(), ["index.cjs"], { + cwd: activeRunnerDir, + stdio: ["pipe", "pipe", "pipe"], + }); + const logStream = fs.createWriteStream(logPath); + const runId = `${path.basename(request.connectorPath, path.extname(request.connectorPath))}-${Date.now()}`; + const pendingInputPath = path.join( + os.homedir(), + ".dataconnect", + `pending-input-${runId}.json`, + ); + const responseInputPath = path.join( + os.homedir(), + ".dataconnect", + `input-response-${runId}.json`, + ); + let stopRequested = false; + + if (request.signal) { + request.signal.addEventListener("abort", () => { + child.kill("SIGTERM"); + }); + } + + async function* events(): AsyncGenerator { + let stdoutBuffer = ""; + let settled = false; + let started = false; + let terminalEventSeen = false; + const queue: RuntimeEvent[] = []; + let resolveQueue: (() => void) | null = null; + + const flushQueue = () => { + resolveQueue?.(); + resolveQueue = null; + }; + + const pushEvent = (event: RuntimeEvent) => { + queue.push(event); + flushQueue(); + }; + + child.stderr.on("data", (chunk) => { + logStream.write(chunk); + }); + + child.stdout.on("data", async (chunk: Buffer) => { + logStream.write(chunk); + stdoutBuffer += chunk.toString(); + const lines = stdoutBuffer.split("\n"); + stdoutBuffer = lines.pop() ?? ""; + + for (const line of lines) { + if (!line.trim()) { + continue; + } + + const parsed = JSON.parse(line) as Record; + if (parsed.type === "ready") { + started = true; + writeChildCommand(child, { + type: "run", + runId, + connectorPath: path.resolve(request.connectorPath), + url: "about:blank", + headless: true, + allowHeaded: false, + }); + continue; + } + + if (parsed.type === "need-input") { + const schema = parsed.schema as + | { properties?: Record } + | undefined; + const inputRequest: RuntimeInputRequest = { + message: + typeof parsed.message === "string" + ? parsed.message + : "Additional input is required.", + schema, + fields: Object.keys( + (schema?.properties ?? {}) as Record, + ), + responseInputPath, + }; + + if (request.noInput || !request.onNeedInput) { + await writePendingInput({ + pendingInputPath, + responseInputPath, + message: inputRequest.message ?? "Additional input is required.", + schema: inputRequest.schema, + }); + stopRequested = true; + child.kill("SIGTERM"); + pushEvent({ + type: "needs-input", + source: request.source, + message: inputRequest.message ?? "Additional input is required.", + fields: inputRequest.fields, + schema: inputRequest.schema, + responseInputPath, + logPath, + }); + continue; + } + + const input = await request.onNeedInput(inputRequest); + await ensureParentDir(responseInputPath); + await fsp.writeFile( + responseInputPath, + `${JSON.stringify(input)}\n`, + "utf8", + ); + await fsp.rm(pendingInputPath, { force: true }); + continue; + } + + if (parsed.type === "result") { + terminalEventSeen = true; + const resultPath = getLastResultPath(); + await ensureParentDir(resultPath); + await fsp.writeFile( + resultPath, + `${JSON.stringify(parsed.data ?? null, null, 2)}\n`, + "utf8", + ); + pushEvent({ + type: "collection-complete", + source: request.source, + resultPath, + logPath, + }); + continue; + } + + if (parsed.type === "legacy-auth") { + terminalEventSeen = true; + pushEvent({ + type: "legacy-auth", + source: request.source, + message: + typeof parsed.message === "string" + ? parsed.message + : "This connector requires legacy headed authentication.", + logPath, + }); + continue; + } + + if (parsed.type === "error") { + terminalEventSeen = true; + if (isLegacyAuthMessage(parsed.message)) { + pushEvent({ + type: "legacy-auth", + source: request.source, + message: + "This connector uses legacy authentication (showBrowser/promptUser) which is not supported in batch mode. Either use a migrated connector that supports requestInput, or establish a session manually first.", + logPath, + }); + continue; + } + pushEvent({ + type: "runtime-error", + source: request.source, + message: + typeof parsed.message === "string" + ? parsed.message + : "Connector run failed.", + logPath, + }); + continue; + } + + if ( + parsed.type === "request-input" && + typeof parsed.requestId === "string" && + parsed.payload && + typeof parsed.payload === "object" + ) { + const payload = parsed.payload as { + message?: string; + schema?: { properties?: Record }; + }; + const inputRequest: RuntimeInputRequest = { + message: payload.message ?? "Additional input is required.", + schema: payload.schema, + fields: Object.keys(payload.schema?.properties ?? {}), + responseInputPath, + }; + + if (request.noInput || !request.onNeedInput) { + await writePendingInput({ + pendingInputPath, + responseInputPath, + message: inputRequest.message ?? "Additional input is required.", + schema: inputRequest.schema, + }); + stopRequested = true; + pushEvent({ + type: "needs-input", + source: request.source, + message: inputRequest.message ?? "Additional input is required.", + fields: inputRequest.fields, + schema: inputRequest.schema, + responseInputPath, + logPath, + }); + child.kill("SIGTERM"); + continue; + } + + const input = await request.onNeedInput(inputRequest); + await ensureParentDir(responseInputPath); + await fsp.writeFile( + responseInputPath, + `${JSON.stringify(input)}\n`, + "utf8", + ); + writeChildCommand(child, { + type: "input-response", + runId, + requestId: parsed.requestId, + data: input, + }); + } + } + }); + + child.on("close", (code) => { + settled = true; + logStream.end(); + if (!terminalEventSeen && !stopRequested && started && code !== 0) { + pushEvent({ + type: "runtime-error", + source: request.source, + message: "Connector run failed.", + logPath, + }); + } + flushQueue(); + }); + + pushEvent({ + type: "run-started", + source: request.source, + logPath, + }); + + while (!settled || queue.length > 0) { + if (queue.length === 0) { + await new Promise((resolve) => { + resolveQueue = resolve; + }); + continue; + } + yield queue.shift() as RuntimeEvent; + } + } + + return { + source: request.source, + logPath, + events, + stop() { + stopRequested = true; + child.kill("SIGTERM"); + }, + }; +} + +function getNodeCommand(): string { + if (!sea.isSea()) { + return process.execPath; + } + + return process.env.VANA_NODE_BIN || "node"; +} + +function writeChildCommand( + child: ReturnType, + payload: Record, +): void { + if (!child.stdin) { + throw new Error("Runner stdin is not available."); + } + + child.stdin.write(`${JSON.stringify(payload)}\n`); +} + +function isLegacyAuthMessage(message: unknown): boolean { + return ( + typeof message === "string" && + (message.includes("showBrowser") || message.includes("promptUser")) + ); +} + +async function writePendingInput({ + pendingInputPath, + responseInputPath, + message, + schema, +}: { + pendingInputPath: string; + responseInputPath: string; + message: string; + schema?: { + properties?: Record; + }; +}): Promise { + await ensureParentDir(pendingInputPath); + await fsp.writeFile( + pendingInputPath, + `${JSON.stringify( + { + message, + schema: schema ?? {}, + responseInputPath, + timestamp: new Date().toISOString(), + }, + null, + 2, + )}\n`, + "utf8", + ); +} diff --git a/src/runtime/playwright/index.ts b/src/runtime/playwright/index.ts new file mode 100644 index 00000000..509ffcfd --- /dev/null +++ b/src/runtime/playwright/index.ts @@ -0,0 +1 @@ +export { startChildProcessConnectorRun } from "./child-process-run.js"; From 72e24ddc6656ad1f6fc67ad4a804b057481f91c9 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 16:24:35 -0500 Subject: [PATCH 010/249] feat(runtime): add in-process playwright host --- package.json | 1 + pnpm-lock.yaml | 38 ++ src/runtime/managed-playwright.ts | 62 ++- src/runtime/playwright/browser.ts | 316 +++++++++++ src/runtime/playwright/in-process-run.ts | 654 +++++++++++++++++++++++ src/runtime/playwright/index.ts | 11 + 6 files changed, 1065 insertions(+), 17 deletions(-) create mode 100644 src/runtime/playwright/browser.ts create mode 100644 src/runtime/playwright/in-process-run.ts diff --git a/package.json b/package.json index 653e4f66..ff330c81 100644 --- a/package.json +++ b/package.json @@ -87,6 +87,7 @@ "dependencies": { "@inquirer/prompts": "^8.3.0", "commander": "^14.0.3", + "playwright": "1.58.2", "zod": "^4.3.6" }, "peerDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4264b9a0..6fbf6f09 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,6 +13,9 @@ importers: commander: specifier: ^14.0.3 version: 14.0.3 + playwright: + specifier: 1.58.2 + version: 1.58.2 zod: specifier: ^4.3.6 version: 4.3.6 @@ -7294,6 +7297,14 @@ packages: } engines: { node: ">=14.14" } + fsevents@2.3.2: + resolution: + { + integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + fsevents@2.3.3: resolution: { @@ -9680,6 +9691,22 @@ packages: } engines: { node: ">=4" } + playwright-core@1.58.2: + resolution: + { + integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==, + } + engines: { node: ">=18" } + hasBin: true + + playwright@1.58.2: + resolution: + { + integrity: sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==, + } + engines: { node: ">=18" } + hasBin: true + pngjs@5.0.0: resolution: { @@ -18315,6 +18342,9 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -19636,6 +19666,14 @@ snapshots: find-up: 2.1.0 load-json-file: 4.0.0 + playwright-core@1.58.2: {} + + playwright@1.58.2: + dependencies: + playwright-core: 1.58.2 + optionalDependencies: + fsevents: 2.3.2 + pngjs@5.0.0: {} pony-cause@2.1.11: {} diff --git a/src/runtime/managed-playwright.ts b/src/runtime/managed-playwright.ts index 2b44bc3d..2ce4b97c 100644 --- a/src/runtime/managed-playwright.ts +++ b/src/runtime/managed-playwright.ts @@ -2,6 +2,7 @@ import fs from "node:fs"; import fsp from "node:fs/promises"; import path from "node:path"; import { spawn } from "node:child_process"; +import { createRequire } from "node:module"; import { ensureParentDir, @@ -15,9 +16,14 @@ import type { CliEvent, RuntimeState } from "../core/cli-types.js"; import { fetchConnectorToCache } from "../connectors/registry.js"; import { getBundledRuntimePaths } from "./bundled-assets.js"; import type { ConnectorRunHandle } from "./core/index.js"; -import { startChildProcessConnectorRun } from "./playwright/index.js"; +import { + startChildProcessConnectorRun, + startInProcessConnectorRun, +} from "./playwright/index.js"; import { findDataConnectorsDir } from "./repo-paths.js"; +const require = createRequire(import.meta.url); + export interface RuntimeInstallResult { runtime: RuntimeState; runtimePath: string | null; @@ -131,11 +137,17 @@ export class ManagedPlaywrightRuntime { ): AsyncGenerator { await fsp.mkdir(getLogsDir(), { recursive: true }); const logPath = getTimestampedLogPath(`run-${options.source}`); - const handle: ConnectorRunHandle = startChildProcessConnectorRun({ - request: options, - runnerDir: this.runnerDir, - logPath, - }); + const handle: ConnectorRunHandle = process.env + .VANA_CONNECT_CHILD_PROCESS_RUNNER + ? startChildProcessConnectorRun({ + request: options, + runnerDir: this.runnerDir, + logPath, + }) + : startInProcessConnectorRun({ + request: options, + logPath, + }); for await (const event of handle.events()) { yield event as CliEvent; @@ -147,20 +159,32 @@ async function installChromium( runnerDir: string, logPath: string, ): Promise { + const playwrightCliPath = path.join( + path.dirname(require.resolve("playwright/package.json")), + "cli.js", + ); try { - await spawnForExit("npx", ["playwright", "install", "chromium"], { - cwd: runnerDir, - logPath, - }); + await spawnForExit( + getNodeCommand(), + [playwrightCliPath, "install", "chromium"], + { + cwd: runnerDir, + logPath, + }, + ); } catch { - await spawnForExit("npx", ["playwright", "install", "chromium"], { - cwd: runnerDir, - logPath, - env: { - ...process.env, - PLAYWRIGHT_SKIP_BROWSER_GC: "1", + await spawnForExit( + getNodeCommand(), + [playwrightCliPath, "install", "chromium"], + { + cwd: runnerDir, + logPath, + env: { + ...process.env, + PLAYWRIGHT_SKIP_BROWSER_GC: "1", + }, }, - }); + ); } } @@ -197,3 +221,7 @@ async function spawnForExit( }); }); } + +function getNodeCommand(): string { + return process.env.VANA_NODE_BIN || process.execPath; +} diff --git a/src/runtime/playwright/browser.ts b/src/runtime/playwright/browser.ts new file mode 100644 index 00000000..897289ef --- /dev/null +++ b/src/runtime/playwright/browser.ts @@ -0,0 +1,316 @@ +import fs from "node:fs"; +import path from "node:path"; +import os from "node:os"; +import { execSync } from "node:child_process"; + +import { chromium, type BrowserContext } from "playwright"; + +const CHROME_PATHS: Record = { + darwin: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + win32: "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", + linux: "/usr/bin/google-chrome", + aix: undefined, + android: undefined, + freebsd: undefined, + haiku: undefined, + openbsd: undefined, + cygwin: undefined, + netbsd: undefined, + sunos: undefined, +}; + +const CHROME_PROFILE_DIRS: Record = { + darwin: path.join( + process.env.HOME || "", + "Library", + "Application Support", + "Google", + "Chrome", + ), + win32: path.join( + process.env.LOCALAPPDATA || "", + "Google", + "Chrome", + "User Data", + ), + linux: path.join(process.env.HOME || "", ".config", "google-chrome"), + aix: undefined, + android: undefined, + freebsd: undefined, + haiku: undefined, + openbsd: undefined, + cygwin: undefined, + netbsd: undefined, + sunos: undefined, +}; + +export function getBrowserCacheDir(): string { + if (process.env.PLAYWRIGHT_BROWSERS_PATH) { + return process.env.PLAYWRIGHT_BROWSERS_PATH; + } + + const home = process.env.HOME || process.env.USERPROFILE || ""; + const candidates = [ + path.join(home, ".dataconnect", "browsers"), + path.join( + home, + ".dataconnect", + "playwright-runner", + "node_modules", + "playwright-core", + ".local-browsers", + ), + ]; + + for (const dir of candidates) { + if (fs.existsSync(dir)) { + return dir; + } + } + + return candidates[0]; +} + +export function getSystemChromePath(): string | null { + const chromePath = CHROME_PATHS[process.platform]; + if (chromePath && fs.existsSync(chromePath)) { + return chromePath; + } + + if (process.platform === "win32") { + const altPaths = [ + "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", + path.join( + process.env.LOCALAPPDATA || "", + "Google\\Chrome\\Application\\chrome.exe", + ), + "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe", + ]; + for (const candidate of altPaths) { + if (fs.existsSync(candidate)) { + return candidate; + } + } + } + + return null; +} + +export function getDownloadedChromiumPath(): string | null { + const cacheDir = getBrowserCacheDir(); + if (!fs.existsSync(cacheDir)) { + return null; + } + + const chromiumDir = fs + .readdirSync(cacheDir) + .find( + (entry) => entry.startsWith("chromium-") && !entry.includes("headless"), + ); + if (!chromiumDir) { + return null; + } + + const chromiumPath = path.join(cacheDir, chromiumDir); + const candidates = + process.platform === "darwin" + ? [ + path.join( + chromiumPath, + "chrome-mac-arm64", + "Google Chrome for Testing.app", + "Contents", + "MacOS", + "Google Chrome for Testing", + ), + path.join( + chromiumPath, + "chrome-mac", + "Google Chrome for Testing.app", + "Contents", + "MacOS", + "Google Chrome for Testing", + ), + path.join( + chromiumPath, + "chrome-mac-arm64", + "Chromium.app", + "Contents", + "MacOS", + "Chromium", + ), + path.join( + chromiumPath, + "chrome-mac", + "Chromium.app", + "Contents", + "MacOS", + "Chromium", + ), + ] + : process.platform === "win32" + ? [ + path.join(chromiumPath, "chrome-win", "chrome.exe"), + path.join(chromiumPath, "chrome-win64", "chrome.exe"), + ] + : [ + path.join(chromiumPath, "chrome-linux", "chrome"), + path.join(chromiumPath, "chrome-linux64", "chrome"), + ]; + + for (const candidate of candidates) { + if (fs.existsSync(candidate)) { + return candidate; + } + } + + return null; +} + +export function isSystemChrome(browserPath: string | null): boolean { + if (!browserPath) { + return false; + } + + const lower = browserPath.toLowerCase(); + if ( + lower.includes(".databridge") || + lower.includes("chromium") || + lower.includes("chrome for testing") + ) { + return false; + } + + return true; +} + +export function getChromeProfileDir(chromeRoot: string): string | null { + const localStatePath = path.join(chromeRoot, "Local State"); + if (fs.existsSync(localStatePath)) { + try { + const localState = JSON.parse( + fs.readFileSync(localStatePath, "utf8"), + ) as { + profile?: { last_used?: string }; + }; + const lastUsed = localState.profile?.last_used; + if (lastUsed) { + const profileDir = path.join(chromeRoot, lastUsed); + if (fs.existsSync(profileDir)) { + return profileDir; + } + } + } catch { + // Ignore malformed local state and fall back to Default. + } + } + + const defaultDir = path.join(chromeRoot, "Default"); + return fs.existsSync(defaultDir) ? defaultDir : null; +} + +export function importChromeCookies( + userDataDir: string, + browserPath: string | null, +): void { + if (!isSystemChrome(browserPath)) { + return; + } + + const markerFile = path.join(userDataDir, ".cookies-imported"); + if (fs.existsSync(markerFile)) { + return; + } + + const chromeRoot = CHROME_PROFILE_DIRS[process.platform]; + if (!chromeRoot || !fs.existsSync(chromeRoot)) { + return; + } + + const sourceProfileDir = getChromeProfileDir(chromeRoot); + if (!sourceProfileDir) { + return; + } + + const sourceCookies = path.join(sourceProfileDir, "Cookies"); + if (!fs.existsSync(sourceCookies)) { + return; + } + + const targetCookies = path.join(userDataDir, "Default", "Cookies"); + if (!fs.existsSync(targetCookies)) { + return; + } + + const sourceDb = sourceCookies.replace(/'/g, "'\\''"); + const targetDb = targetCookies.replace(/'/g, "'\\''"); + const sql = ` +ATTACH DATABASE '${sourceDb}' AS src; +INSERT OR REPLACE INTO main.cookies +SELECT * FROM src.cookies; +DETACH DATABASE src; +`; + + try { + execSync(`sqlite3 '${targetDb}' "${sql.replace(/\n/g, " ")}"`, { + stdio: "ignore", + }); + fs.writeFileSync(markerFile, `${new Date().toISOString()}\n`, "utf8"); + } catch { + // Cookie import is opportunistic; continue if sqlite3 is unavailable. + } +} + +export function resolveBrowserPath(): string { + let browserPath: string | null = null; + + if (!process.env.DATACONNECT_SIMULATE_NO_CHROME) { + browserPath = getSystemChromePath(); + } + + if (!browserPath) { + browserPath = getDownloadedChromiumPath(); + } + + if (!browserPath) { + throw new Error( + "No browser available. Run `vana setup` to install Chromium before connecting a source.", + ); + } + + return browserPath; +} + +export async function launchPersistentContext( + userDataDir: string, + headless: boolean, + browserPath: string | null, +): Promise { + fs.mkdirSync(userDataDir, { recursive: true }); + + const launchOptions: Parameters[1] = + { + headless, + args: [ + "--disable-blink-features=AutomationControlled", + "--disable-features=MediaRouter,DialMediaRouteProvider", + ], + viewport: { width: 1280, height: 800 }, + userAgent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", + }; + + if (browserPath) { + launchOptions.executablePath = browserPath; + } + + if (isSystemChrome(browserPath)) { + launchOptions.ignoreDefaultArgs = ["--use-mock-keychain"]; + } + + return chromium.launchPersistentContext(userDataDir, launchOptions); +} + +export function getDefaultUserDataDir(slug: string): string { + return path.join(os.homedir(), ".dataconnect", "browser-profiles", slug); +} diff --git a/src/runtime/playwright/in-process-run.ts b/src/runtime/playwright/in-process-run.ts new file mode 100644 index 00000000..b1cb6e90 --- /dev/null +++ b/src/runtime/playwright/in-process-run.ts @@ -0,0 +1,654 @@ +import fs from "node:fs"; +import fsp from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; + +import type { BrowserContext, Cookie, Page } from "playwright"; + +import { ensureParentDir, getLastResultPath } from "../../core/index.js"; +import type { + ConnectorRunHandle, + ConnectorRunRequest, + RuntimeEvent, + RuntimeInputRequest, +} from "../core/index.js"; +import { + getDefaultUserDataDir, + importChromeCookies, + isSystemChrome, + launchPersistentContext, + resolveBrowserPath, +} from "./browser.js"; + +type PendingInputRequest = { + message?: string; + schema?: { + properties?: Record; + }; +}; + +type NetworkCaptureConfig = { + urlPattern: string; + bodyPattern: string; +}; + +type RunState = { + context: BrowserContext | null; + page: Page | null; + userDataDir: string; + browserPath: string | null; + browserClosed: boolean; + browserClosedByConnector: boolean; + connectorCompleted: boolean; + headless: boolean; + allowHeaded: boolean; + hasResult: boolean; + cookies: Cookie[]; +}; + +class NeedsInputError extends Error { + constructor() { + super("Connector requires additional input."); + } +} + +class LegacyAuthError extends Error { + constructor(method: "promptUser" | "showBrowser") { + super(`${method} is not supported by the in-process runtime.`); + } +} + +export function startInProcessConnectorRun({ + request, + logPath, +}: { + request: ConnectorRunRequest; + logPath: string; +}): ConnectorRunHandle { + const runId = `${path.basename(request.connectorPath, path.extname(request.connectorPath))}-${Date.now()}`; + const pendingInputPath = path.join( + os.homedir(), + ".dataconnect", + `pending-input-${runId}.json`, + ); + const responseInputPath = path.join( + os.homedir(), + ".dataconnect", + `input-response-${runId}.json`, + ); + const logStream = fs.createWriteStream(logPath); + const queue: RuntimeEvent[] = []; + let resolveQueue: (() => void) | null = null; + let settled = false; + let activeContext: BrowserContext | null = null; + + const flushQueue = () => { + resolveQueue?.(); + resolveQueue = null; + }; + + const pushEvent = (event: RuntimeEvent) => { + queue.push(event); + flushQueue(); + }; + + const writeLog = (message: string) => { + logStream.write(`${message}\n`); + }; + + const runPromise = (async () => { + pushEvent({ + type: "run-started", + source: request.source, + logPath, + }); + + const slug = path.basename( + request.connectorPath, + path.extname(request.connectorPath), + ); + const runState: RunState = { + context: null, + page: null, + userDataDir: getDefaultUserDataDir(slug), + browserPath: null, + browserClosed: false, + browserClosedByConnector: false, + connectorCompleted: false, + headless: true, + allowHeaded: false, + hasResult: false, + cookies: [], + }; + + if (request.signal) { + request.signal.addEventListener("abort", () => { + void runState.context?.close().catch(() => {}); + }); + } + + try { + const connectorCode = await fsp.readFile(request.connectorPath, "utf8"); + runState.browserPath = resolveBrowserPath(); + writeLog(`[runtime] Using browser: ${runState.browserPath}`); + + const markerFile = path.join(runState.userDataDir, ".cookies-imported"); + if (isSystemChrome(runState.browserPath) && !fs.existsSync(markerFile)) { + writeLog("[runtime] Initializing browser profile before cookie import"); + const tempContext = await launchPersistentContext( + runState.userDataDir, + true, + runState.browserPath, + ); + await tempContext.close(); + importChromeCookies(runState.userDataDir, runState.browserPath); + } + + const context = await launchPersistentContext( + runState.userDataDir, + true, + runState.browserPath, + ); + activeContext = context; + const page = context.pages()[0] || (await context.newPage()); + runState.context = context; + runState.page = page; + + context.browser()?.on("disconnected", () => { + runState.browserClosed = true; + runState.context = null; + runState.page = null; + if ( + !runState.connectorCompleted && + !runState.browserClosedByConnector + ) { + pushEvent({ + type: "runtime-error", + source: request.source, + message: "Browser session ended before the connector completed.", + logPath, + }); + } + }); + + const pageApi = createPageApi({ + request, + runState, + logPath, + pendingInputPath, + responseInputPath, + pushEvent, + writeLog, + }); + + await page.goto("about:blank", { waitUntil: "domcontentloaded" }); + const connectorFunction = buildConnectorFunction(connectorCode); + const result = await connectorFunction.call(null, pageApi); + + if (!runState.hasResult && result != null) { + const exportData = + result && + typeof result === "object" && + "success" in result && + "data" in result + ? (result as { data: unknown }).data + : result; + const resultPath = getLastResultPath(); + await ensureParentDir(resultPath); + await fsp.writeFile( + resultPath, + `${JSON.stringify(exportData, null, 2)}\n`, + "utf8", + ); + pushEvent({ + type: "collection-complete", + source: request.source, + resultPath, + logPath, + }); + } + + runState.connectorCompleted = true; + if (!runState.browserClosed && runState.context) { + await runState.context.close().catch(() => {}); + } + } catch (error) { + if (error instanceof NeedsInputError) { + return; + } + + pushEvent(classifyRuntimeError(error, request.source, logPath)); + } finally { + settled = true; + await activeContext?.close().catch(() => {}); + logStream.end(); + flushQueue(); + } + })(); + + return { + source: request.source, + logPath, + async *events(): AsyncGenerator { + while (!settled || queue.length > 0) { + if (queue.length === 0) { + await new Promise((resolve) => { + resolveQueue = resolve; + }); + continue; + } + + yield queue.shift() as RuntimeEvent; + } + + await runPromise; + }, + stop() { + void activeContext?.close().catch(() => {}); + if (!settled) { + pushEvent({ + type: "runtime-error", + source: request.source, + message: "Connector run stopped.", + logPath, + }); + } + }, + }; +} + +function buildConnectorFunction( + connectorCode: string, +): (page: unknown) => Promise { + let modifiedCode = connectorCode; + const iifePattern = /\n\(async\s*\(\)\s*=>\s*\{/g; + const matches = [...modifiedCode.matchAll(iifePattern)]; + + if (matches.length > 0) { + const lastMatch = matches[matches.length - 1]; + modifiedCode = + modifiedCode.slice(0, lastMatch.index) + + "\nreturn (async () => {" + + modifiedCode.slice(lastMatch.index + lastMatch[0].length); + } + + const AsyncFunction = Object.getPrototypeOf(async function () {}) + .constructor as new ( + ...args: string[] + ) => (page: unknown) => Promise; + return new AsyncFunction("page", modifiedCode); +} + +function createPageApi({ + request, + runState, + logPath, + pendingInputPath, + responseInputPath, + pushEvent, + writeLog, +}: { + request: ConnectorRunRequest; + runState: RunState; + logPath: string; + pendingInputPath: string; + responseInputPath: string; + pushEvent: (event: RuntimeEvent) => void; + writeLog: (message: string) => void; +}) { + const networkCaptures = new Map(); + const capturedResponses = new Map< + string, + { url: string; data: unknown; timestamp: number } + >(); + + function requirePage(): Page { + if (runState.browserClosed || !runState.page) { + throw new Error( + "Browser is closed. Use page.httpFetch() for HTTP requests.", + ); + } + return runState.page; + } + + function setupNetworkCapture(page: Page): void { + page.on("response", async (response) => { + const url = response.url(); + + for (const [key, config] of networkCaptures.entries()) { + if (config.urlPattern && !url.includes(config.urlPattern)) { + continue; + } + + try { + const request = response.request(); + const postData = request.postData() || ""; + if (config.bodyPattern) { + const patterns = config.bodyPattern.split("|"); + if (!patterns.some((pattern) => postData.includes(pattern))) { + continue; + } + } + + const body = await response.json().catch(() => null); + if (body) { + capturedResponses.set(key, { + url, + data: body, + timestamp: Date.now(), + }); + writeLog(`[network] captured ${key} from ${url}`); + } + } catch { + // Ignore non-JSON responses. + } + } + }); + } + + if (runState.page) { + setupNetworkCapture(runState.page); + } + + return { + goto: async ( + url: string, + options: { + waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit"; + timeout?: number; + } = {}, + ) => { + const page = requirePage(); + const gotoOptions: Parameters[1] = { + waitUntil: options.waitUntil ?? "domcontentloaded", + }; + if (options.timeout != null) { + gotoOptions.timeout = options.timeout; + } + writeLog(`[page] goto ${url}`); + await page.goto(url, gotoOptions); + }, + + evaluate: async (script: string) => { + return requirePage().evaluate(script); + }, + + screenshot: async () => { + const buffer = await requirePage().screenshot({ + type: "jpeg", + quality: 70, + timeout: 5000, + }); + return buffer.toString("base64"); + }, + + requestInput: async (payload: PendingInputRequest) => { + const fields = Object.keys(payload.schema?.properties ?? {}); + const inputRequest: RuntimeInputRequest = { + message: payload.message ?? "Additional input is required.", + schema: payload.schema, + fields, + responseInputPath, + }; + + if (request.noInput || !request.onNeedInput) { + await writePendingInput({ + pendingInputPath, + responseInputPath, + message: inputRequest.message ?? "Additional input is required.", + schema: inputRequest.schema, + }); + pushEvent({ + type: "needs-input", + source: request.source, + message: inputRequest.message ?? "Additional input is required.", + fields: inputRequest.fields, + schema: inputRequest.schema, + responseInputPath, + logPath, + }); + throw new NeedsInputError(); + } + + const input = await request.onNeedInput(inputRequest); + await ensureParentDir(responseInputPath); + await fsp.writeFile( + responseInputPath, + `${JSON.stringify(input)}\n`, + "utf8", + ); + await fsp.rm(pendingInputPath, { force: true }); + return input; + }, + + sleep: (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)), + + setData: async (key: string, value: unknown) => { + if (key === "result") { + runState.hasResult = true; + } + writeLog( + `[data] ${key}=${typeof value === "string" ? value : JSON.stringify(value)}`, + ); + }, + + setProgress: async ({ + phase, + message, + count, + }: { + phase?: unknown; + message?: string; + count?: number; + }) => { + writeLog( + `[progress] ${JSON.stringify({ + phase, + message, + count, + })}`, + ); + }, + + promptUser: async ( + message: string, + checkFn: () => Promise, + interval = 2000, + ) => { + writeLog(`[prompt] ${message}`); + void checkFn; + void interval; + throw new LegacyAuthError("promptUser"); + }, + + captureNetwork: async (config: { + key: string; + urlPattern?: string; + bodyPattern?: string; + }) => { + networkCaptures.set(config.key, { + urlPattern: config.urlPattern || "", + bodyPattern: config.bodyPattern || "", + }); + }, + + getCapturedResponse: async (key: string) => { + return capturedResponses.get(key) ?? null; + }, + + clearNetworkCaptures: async () => { + networkCaptures.clear(); + capturedResponses.clear(); + }, + + hasCapturedResponse: (key: string) => capturedResponses.has(key), + + closeBrowser: async () => { + if (runState.browserClosed) { + return; + } + + if (runState.context) { + try { + runState.cookies = await runState.context.cookies(); + } catch { + runState.cookies = []; + } + } + + runState.browserClosed = true; + runState.browserClosedByConnector = true; + await runState.context?.close().catch(() => {}); + runState.context = null; + runState.page = null; + writeLog("[browser] closed by connector"); + }, + + showBrowser: async (url?: string) => { + void url; + throw new LegacyAuthError("showBrowser"); + }, + + goHeadless: async () => { + runState.browserClosedByConnector = true; + await runState.context?.close().catch(() => {}); + runState.context = await launchPersistentContext( + runState.userDataDir, + true, + runState.browserPath, + ); + runState.page = + runState.context.pages()[0] || (await runState.context.newPage()); + runState.browserClosed = false; + runState.browserClosedByConnector = false; + runState.headless = true; + if (runState.page) { + setupNetworkCapture(runState.page); + await runState.page.goto("https://chatgpt.com/", { + waitUntil: "domcontentloaded", + }); + } + }, + + httpFetch: async ( + url: string, + options: RequestInit & { timeout?: number } = {}, + ) => { + const { timeout = 30000, ...fetchOptions } = options; + if (runState.cookies.length > 0) { + try { + const urlObject = new URL(url); + const relevantCookies = runState.cookies + .filter((cookie) => { + const cookieDomain = cookie.domain.startsWith(".") + ? cookie.domain.slice(1) + : cookie.domain; + return ( + urlObject.hostname === cookieDomain || + urlObject.hostname.endsWith(`.${cookieDomain}`) + ); + }) + .map((cookie) => `${cookie.name}=${cookie.value}`) + .join("; "); + if (relevantCookies) { + fetchOptions.headers = { + ...(fetchOptions.headers || {}), + cookie: relevantCookies, + }; + } + } catch { + // Ignore cookie injection failures. + } + } + + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), timeout); + try { + const response = await fetch(url, { + ...fetchOptions, + signal: controller.signal, + }); + clearTimeout(timeoutId); + const text = await response.text(); + let json: unknown = null; + try { + json = JSON.parse(text); + } catch { + json = null; + } + return { + ok: response.ok, + status: response.status, + headers: Object.fromEntries(response.headers.entries()), + text, + json, + error: null, + }; + } catch (error) { + clearTimeout(timeoutId); + return { + ok: false, + status: 0, + headers: {}, + text: "", + json: null, + error: error instanceof Error ? error.message : String(error), + }; + } + }, + }; +} + +function classifyRuntimeError( + error: unknown, + source: string, + logPath: string, +): RuntimeEvent { + const message = error instanceof Error ? error.message : String(error); + if (message.includes("showBrowser") || message.includes("promptUser")) { + return { + type: "legacy-auth", + source, + message: + "This connector uses legacy authentication (showBrowser/promptUser) which is not supported in batch mode. Either use a migrated connector that supports requestInput, or establish a session manually first.", + logPath, + }; + } + + return { + type: "runtime-error", + source, + message, + logPath, + }; +} + +async function writePendingInput({ + pendingInputPath, + responseInputPath, + message, + schema, +}: { + pendingInputPath: string; + responseInputPath: string; + message: string; + schema?: { + properties?: Record; + }; +}): Promise { + await ensureParentDir(pendingInputPath); + await fsp.writeFile( + pendingInputPath, + `${JSON.stringify( + { + message, + schema: schema ?? {}, + responseInputPath, + timestamp: new Date().toISOString(), + }, + null, + 2, + )}\n`, + "utf8", + ); +} diff --git a/src/runtime/playwright/index.ts b/src/runtime/playwright/index.ts index 509ffcfd..01a0c60e 100644 --- a/src/runtime/playwright/index.ts +++ b/src/runtime/playwright/index.ts @@ -1 +1,12 @@ export { startChildProcessConnectorRun } from "./child-process-run.js"; +export { startInProcessConnectorRun } from "./in-process-run.js"; +export { + getBrowserCacheDir, + getDefaultUserDataDir, + getDownloadedChromiumPath, + getSystemChromePath, + importChromeCookies, + isSystemChrome, + launchPersistentContext, + resolveBrowserPath, +} from "./browser.js"; From 07abedeab26d64e1f756b99453699d8538b3e15b Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 16:26:54 -0500 Subject: [PATCH 011/249] refactor(runtime): align setup with in-process host --- src/cli/index.ts | 2 +- src/runtime/managed-playwright.ts | 97 ++++++++++++++++++++++--------- 2 files changed, 72 insertions(+), 27 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 2dd92177..f550973b 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -464,7 +464,7 @@ async function runStatus(options: GlobalOptions): Promise { const status: CliStatus = { runtime: runtime.state, - runtimePath: runtime.state === "installed" ? runtime.runnerDir : null, + runtimePath: runtime.runtimePath, personalServer: personalServer.state, personalServerUrl: personalServer.url, sources, diff --git a/src/runtime/managed-playwright.ts b/src/runtime/managed-playwright.ts index 2ce4b97c..19657ab6 100644 --- a/src/runtime/managed-playwright.ts +++ b/src/runtime/managed-playwright.ts @@ -6,6 +6,7 @@ import { createRequire } from "node:module"; import { ensureParentDir, + getBrowserProfilesDir, getConnectorCacheDir, getDataConnectHome, getLogsDir, @@ -17,6 +18,8 @@ import { fetchConnectorToCache } from "../connectors/registry.js"; import { getBundledRuntimePaths } from "./bundled-assets.js"; import type { ConnectorRunHandle } from "./core/index.js"; import { + getBrowserCacheDir, + resolveBrowserPath, startChildProcessConnectorRun, startInProcessConnectorRun, } from "./playwright/index.js"; @@ -53,44 +56,47 @@ export class ManagedPlaywrightRuntime { return getRunnerDir(); } + get runtimePath(): string | null { + return getResolvedRuntimePath(); + } + get state(): RuntimeState { - if (!fs.existsSync(path.join(this.runnerDir, "index.cjs"))) { - return "missing"; + if (process.env.VANA_CONNECT_CHILD_PROCESS_RUNNER) { + return fs.existsSync(path.join(this.runnerDir, "index.cjs")) + ? "installed" + : "missing"; } - return "installed"; + + return this.runtimePath ? "installed" : "missing"; } async ensureInstalled(autoApprove: boolean): Promise { const runtime = this.state; if (runtime === "installed") { - return { runtime, runtimePath: this.runnerDir }; + return { runtime, runtimePath: this.runtimePath }; } const logPath = getTimestampedLogPath("setup"); await ensureParentDir(logPath); const homeDir = getDataConnectHome(); - const bundledRuntime = await getBundledRuntimePaths(); await fsp.mkdir(homeDir, { recursive: true }); await fsp.mkdir(getConnectorCacheDir(), { recursive: true }); - await fsp.rm(this.runnerDir, { recursive: true, force: true }); - await fsp.cp(bundledRuntime.playwrightRunnerDir, this.runnerDir, { - recursive: true, - }); - - await spawnForExit("npm", ["install", "--ignore-scripts"], { - cwd: this.runnerDir, - logPath, - env: { - ...process.env, - CI: autoApprove ? "1" : process.env.CI, - }, - }); + await fsp.mkdir(getBrowserProfilesDir(), { recursive: true }); + await fsp.mkdir(getBrowserCacheDir(), { recursive: true }); - await installChromium(this.runnerDir, logPath); + if (process.env.VANA_CONNECT_CHILD_PROCESS_RUNNER) { + await ensureLegacyRunnerInstalled({ + autoApprove, + logPath, + runnerDir: this.runnerDir, + }); + } else { + await installChromium(logPath); + } return { runtime: this.state, - runtimePath: this.state === "installed" ? this.runnerDir : null, + runtimePath: this.runtimePath, logPath, }; } @@ -155,21 +161,23 @@ export class ManagedPlaywrightRuntime { } } -async function installChromium( - runnerDir: string, - logPath: string, -): Promise { +async function installChromium(logPath: string): Promise { const playwrightCliPath = path.join( path.dirname(require.resolve("playwright/package.json")), "cli.js", ); + const browserCacheDir = getBrowserCacheDir(); try { await spawnForExit( getNodeCommand(), [playwrightCliPath, "install", "chromium"], { - cwd: runnerDir, + cwd: getDataConnectHome(), logPath, + env: { + ...process.env, + PLAYWRIGHT_BROWSERS_PATH: browserCacheDir, + }, }, ); } catch { @@ -177,10 +185,11 @@ async function installChromium( getNodeCommand(), [playwrightCliPath, "install", "chromium"], { - cwd: runnerDir, + cwd: getDataConnectHome(), logPath, env: { ...process.env, + PLAYWRIGHT_BROWSERS_PATH: browserCacheDir, PLAYWRIGHT_SKIP_BROWSER_GC: "1", }, }, @@ -188,6 +197,34 @@ async function installChromium( } } +async function ensureLegacyRunnerInstalled({ + autoApprove, + logPath, + runnerDir, +}: { + autoApprove: boolean; + logPath: string; + runnerDir: string; +}): Promise { + const bundledRuntime = await getBundledRuntimePaths(); + + await fsp.rm(runnerDir, { recursive: true, force: true }); + await fsp.cp(bundledRuntime.playwrightRunnerDir, runnerDir, { + recursive: true, + }); + + await spawnForExit("npm", ["install", "--ignore-scripts"], { + cwd: runnerDir, + logPath, + env: { + ...process.env, + CI: autoApprove ? "1" : process.env.CI, + }, + }); + + await installChromium(logPath); +} + interface SpawnOptions { cwd: string; logPath: string; @@ -225,3 +262,11 @@ async function spawnForExit( function getNodeCommand(): string { return process.env.VANA_NODE_BIN || process.execPath; } + +function getResolvedRuntimePath(): string | null { + try { + return resolveBrowserPath(); + } catch { + return null; + } +} From 33e7ba3167923ed8bbb65f6fa104b21b98e0c996 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 17:07:27 -0500 Subject: [PATCH 012/249] refactor(runtime): package standalone app payload --- .github/workflows/ci.yml | 1 + .github/workflows/prerelease.yml | 1 + .github/workflows/release.yml | 2 + README.md | 8 +- install/install.ps1 | 24 +- install/install.sh | 14 +- package.json | 12 +- pnpm-lock.yaml | 45 +- .../playwright-runner/entitlements.plist | 12 - runtime-assets/playwright-runner/index.cjs | 1243 ----------------- .../playwright-runner/package-lock.json | 1242 ---------------- runtime-assets/playwright-runner/package.json | 29 - .../playwright-runner/scripts/build.js | 182 --- runtime-assets/run-connector.cjs | 355 ----- scripts/build-sea.mjs | 196 ++- scripts/clean-build.mjs | 11 + src/core/index.ts | 1 - src/core/paths.ts | 4 - src/runtime/bundled-assets.ts | 59 - src/runtime/index.ts | 1 - src/runtime/managed-playwright.ts | 192 +-- src/runtime/playwright/browser.ts | 12 +- src/runtime/playwright/child-process-run.ts | 356 ----- src/runtime/playwright/index.ts | 1 - test/cli/index.test.ts | 6 +- test/runtime/in-process-run.test.ts | 209 +++ 26 files changed, 503 insertions(+), 3715 deletions(-) delete mode 100644 runtime-assets/playwright-runner/entitlements.plist delete mode 100644 runtime-assets/playwright-runner/index.cjs delete mode 100644 runtime-assets/playwright-runner/package-lock.json delete mode 100644 runtime-assets/playwright-runner/package.json delete mode 100644 runtime-assets/playwright-runner/scripts/build.js delete mode 100644 runtime-assets/run-connector.cjs create mode 100644 scripts/clean-build.mjs delete mode 100644 src/runtime/bundled-assets.ts delete mode 100644 src/runtime/playwright/child-process-run.ts create mode 100644 test/runtime/in-process-run.test.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ce632f8e..32f0938d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,6 +41,7 @@ jobs: node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile + - run: pnpm clean - run: pnpm build - run: pnpm build:sea:smoke - run: pnpm test:install:unix diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 379daa07..03c1c196 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -48,6 +48,7 @@ jobs: cache: pnpm registry-url: https://registry.npmjs.org - run: pnpm install --frozen-lockfile + - run: pnpm clean - run: pnpm build - run: pnpm build:sea -- --artifact-name vana-${{ matrix.platform }}-${{ matrix.arch }} --platform ${{ matrix.platform }} --arch ${{ matrix.arch }} --archive-format ${{ matrix.archive_format }} --binary-name ${{ matrix.binary_name }} - uses: actions/upload-artifact@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e3ba53d3..09db2044 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,6 +51,7 @@ jobs: cache: pnpm registry-url: https://registry.npmjs.org - run: pnpm install --frozen-lockfile + - run: pnpm clean - run: pnpm build - run: pnpm build:sea -- --artifact-name vana-${{ matrix.platform }}-${{ matrix.arch }} --platform ${{ matrix.platform }} --arch ${{ matrix.arch }} --archive-format ${{ matrix.archive_format }} --binary-name ${{ matrix.binary_name }} - uses: actions/upload-artifact@v4 @@ -74,6 +75,7 @@ jobs: cache: pnpm registry-url: https://registry.npmjs.org - run: pnpm install --frozen-lockfile + - run: pnpm clean - run: pnpm build - uses: actions/download-artifact@v4 with: diff --git a/README.md b/README.md index 4e6d4fb5..ed9816e7 100644 --- a/README.md +++ b/README.md @@ -120,16 +120,16 @@ node dist/cli/bin.js status The CLI installs its local browser runtime under `~/.dataconnect/`. That runtime is bundled from `vana-connect` itself, so `vana setup` does not require a separate `data-connect` checkout. -To build a standalone SEA executable locally: +To build a standalone launcher plus app payload locally: ```bash pnpm build pnpm build:sea -./artifacts/sea/vana-linux-x64 status --json +./artifacts/sea/vana-linux-x64/vana status --json ``` -`pnpm build:sea` uses Node 25's `--build-sea` flow and embeds the runtime assets needed for `vana setup`. -It produces a platform-specific executable directory plus a release archive and matching checksum file under `artifacts/sea/`. +`pnpm build:sea` uses Node 25's `--build-sea` flow to create a small `vana` launcher and packages the real app payload next to it under `app/`. +It produces a platform-specific release directory plus a release archive and matching checksum file under `artifacts/sea/`. ### Programmatic runtime access diff --git a/install/install.ps1 b/install/install.ps1 index 9856c186..6b9e8718 100644 --- a/install/install.ps1 +++ b/install/install.ps1 @@ -71,9 +71,16 @@ try { } $ReleaseDir = Join-Path $InstallRoot "releases\$Version" - New-Item -ItemType Directory -Force -Path $ReleaseDir | Out-Null Expand-Archive -Path $ArchivePath -DestinationPath $TempDir -Force - Copy-Item -Path (Join-Path $TempDir "vana.exe") -Destination (Join-Path $ReleaseDir "vana.exe") -Force + $ExtractedDir = Join-Path $TempDir $AssetBase + if (-not (Test-Path $ExtractedDir)) { + throw "Unexpected archive layout: missing $ExtractedDir" + } + + if (Test-Path $ReleaseDir) { + Remove-Item $ReleaseDir -Recurse -Force + } + Copy-Item -Path $ExtractedDir -Destination $ReleaseDir -Recurse $CurrentDir = Join-Path $InstallRoot "current" if (Test-Path $CurrentDir) { @@ -82,7 +89,16 @@ try { Copy-Item -Path $ReleaseDir -Destination $CurrentDir -Recurse New-Item -ItemType Directory -Force -Path $BinDir | Out-Null - Copy-Item -Path (Join-Path $CurrentDir "vana.exe") -Destination (Join-Path $BinDir "vana.exe") -Force + $WrapperPath = Join-Path $BinDir "vana.cmd" + @( + "@echo off" + "`"$CurrentDir\vana.exe`" %*" + ) | Set-Content -Path $WrapperPath -Encoding ASCII + + $ExePath = Join-Path $BinDir "vana.exe" + if (Test-Path $ExePath) { + Remove-Item $ExePath -Force + } $UserPath = [Environment]::GetEnvironmentVariable("Path", "User") $PathEntries = @() @@ -97,7 +113,7 @@ try { } Write-Host "" - Write-Host "Installed vana to $(Join-Path $BinDir 'vana.exe')" + Write-Host "Installed vana to $WrapperPath" Write-Host "Next step:" Write-Host " vana status" } diff --git a/install/install.sh b/install/install.sh index cf38ec6c..e54ea341 100644 --- a/install/install.sh +++ b/install/install.sh @@ -109,8 +109,20 @@ else fi mkdir -p "$INSTALL_ROOT/releases/$VERSION" "$BIN_DIR" +RELEASE_DIR="$INSTALL_ROOT/releases/$VERSION" +EXTRACTED_DIR="$TMP_DIR/$ASSET_BASE" + +rm -rf "$RELEASE_DIR" tar -xzf "$TMP_DIR/$ARCHIVE_NAME" -C "$TMP_DIR" -install -m 755 "$TMP_DIR/vana" "$INSTALL_ROOT/releases/$VERSION/vana" + +if [ ! -d "$EXTRACTED_DIR" ]; then + echo "Unexpected archive layout: missing $EXTRACTED_DIR" >&2 + exit 1 +fi + +mkdir -p "$RELEASE_DIR" +cp -R "$EXTRACTED_DIR/." "$RELEASE_DIR" + ln -sfn "$INSTALL_ROOT/releases/$VERSION" "$INSTALL_ROOT/current" ln -sfn "$INSTALL_ROOT/current/vana" "$BIN_DIR/vana" diff --git a/package.json b/package.json index ff330c81..ef22018f 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,7 @@ "vana": "./dist/cli/bin.js" }, "files": [ - "dist", - "runtime-assets" + "dist" ], "exports": { ".": { @@ -57,7 +56,7 @@ "build": "tsc --build", "build:sea": "npx -y node@25 ./scripts/build-sea.mjs", "build:sea:smoke": "npx -y node@25 ./scripts/build-sea.mjs --smoke", - "clean": "tsc --build --clean", + "clean": "node ./scripts/clean-build.mjs", "cli": "node dist/cli/bin.js", "skills:sync": "node scripts/sync-skills.js", "test:install:unix": "sh ./scripts/test-install-unix.sh", @@ -85,10 +84,11 @@ "node": ">=20.0.0" }, "dependencies": { - "@inquirer/prompts": "^8.3.0", - "commander": "^14.0.3", + "@inquirer/prompts": "8.3.0", + "chromium-bidi": "15.0.0", + "commander": "14.0.3", "playwright": "1.58.2", - "zod": "^4.3.6" + "zod": "4.3.6" }, "peerDependencies": { "react": ">=18.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6fbf6f09..30fd6d1e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,16 +8,19 @@ importers: .: dependencies: "@inquirer/prompts": - specifier: ^8.3.0 + specifier: 8.3.0 version: 8.3.0(@types/node@25.2.2) + chromium-bidi: + specifier: 15.0.0 + version: 15.0.0(devtools-protocol@0.0.1596832) commander: - specifier: ^14.0.3 + specifier: 14.0.3 version: 14.0.3 playwright: specifier: 1.58.2 version: 1.58.2 zod: - specifier: ^4.3.6 + specifier: 4.3.6 version: 4.3.6 devDependencies: "@commitlint/cli": @@ -5881,6 +5884,14 @@ packages: } engines: { node: ">= 20.19.0" } + chromium-bidi@15.0.0: + resolution: + { + integrity: sha512-ESWZM1u85CoeSozBXXG9M73S5tH0EjkqnFJoQ6F3MHs2YGe0CLVMaRvhGxetLP6w4GVR59+/cpWvDLUpLvJXLQ==, + } + peerDependencies: + devtools-protocol: "*" + class-variance-authority@0.7.1: resolution: { @@ -6503,6 +6514,12 @@ packages: integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==, } + devtools-protocol@0.0.1596832: + resolution: + { + integrity: sha512-IwRVIiCa4mpaKeLcZ2cmGpG0hP8ls3zj3zg87Z/JwULm2xYmhOcMrwdeHos6xaANQHGEXzSCzji+6kEuZu873A==, + } + diff@8.0.3: resolution: { @@ -8782,6 +8799,12 @@ packages: typescript: optional: true + mitt@3.0.1: + resolution: + { + integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==, + } + motion-dom@12.34.0: resolution: { @@ -16126,14 +16149,14 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - "@vitest/mocker@4.0.18(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))": + "@vitest/mocker@4.0.18(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(vite@7.3.1(@types/node@20.19.33)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))": dependencies: "@vitest/spy": 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.12.10(@types/node@20.19.33)(typescript@5.7.3) - vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) + vite: 7.3.1(@types/node@20.19.33)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) "@vitest/mocker@4.0.18(msw@2.12.10(@types/node@25.2.2)(typescript@5.7.3))(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))": dependencies: @@ -17513,6 +17536,12 @@ snapshots: dependencies: readdirp: 5.0.0 + chromium-bidi@15.0.0(devtools-protocol@0.0.1596832): + dependencies: + devtools-protocol: 0.0.1596832 + mitt: 3.0.1 + zod: 3.25.76 + class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 @@ -17813,6 +17842,8 @@ snapshots: detect-node-es@1.1.0: {} + devtools-protocol@0.0.1596832: {} + diff@8.0.3: {} dijkstrajs@1.0.3: {} @@ -19077,6 +19108,8 @@ snapshots: optionalDependencies: typescript: 5.7.3 + mitt@3.0.1: {} + motion-dom@12.34.0: dependencies: motion-utils: 12.29.2 @@ -20953,7 +20986,7 @@ snapshots: vitest@4.0.18(@types/node@20.19.33)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(yaml@2.8.2): dependencies: "@vitest/expect": 4.0.18 - "@vitest/mocker": 4.0.18(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) + "@vitest/mocker": 4.0.18(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(vite@7.3.1(@types/node@20.19.33)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) "@vitest/pretty-format": 4.0.18 "@vitest/runner": 4.0.18 "@vitest/snapshot": 4.0.18 diff --git a/runtime-assets/playwright-runner/entitlements.plist b/runtime-assets/playwright-runner/entitlements.plist deleted file mode 100644 index 46f67566..00000000 --- a/runtime-assets/playwright-runner/entitlements.plist +++ /dev/null @@ -1,12 +0,0 @@ - - - - - com.apple.security.cs.allow-jit - - com.apple.security.cs.allow-unsigned-executable-memory - - com.apple.security.cs.disable-library-validation - - - diff --git a/runtime-assets/playwright-runner/index.cjs b/runtime-assets/playwright-runner/index.cjs deleted file mode 100644 index f3d90e1d..00000000 --- a/runtime-assets/playwright-runner/index.cjs +++ /dev/null @@ -1,1243 +0,0 @@ -/** - * Playwright Runner for DataConnect - * - * Runs as a sidecar process, receives commands via stdin, sends results via stdout. - * - * Commands: - * - { type: "run", runId, connectorPath, url, headless, allowHeaded } - * - { type: "stop", runId } - * - { type: "evaluate", runId, script } - * - { type: "input-response", runId, requestId, data?, error? } - * - { type: "screenshot", runId } - * - { type: "quit" } - * - * Supports two-phase connectors: - * - Phase 1 (Browser): Login detection + credential extraction - * - Phase 2 (Background): Direct HTTP fetch without browser - */ - -const { chromium } = require("playwright"); -const fs = require("fs"); -const readline = require("readline"); -const path = require("path"); -const { execSync } = require("child_process"); - -// System Chrome paths by platform -const CHROME_PATHS = { - darwin: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", - win32: "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", - linux: "/usr/bin/google-chrome", -}; - -// Get browser cache directory - checks multiple candidate paths -function getBrowserCacheDir() { - if (process.env.PLAYWRIGHT_BROWSERS_PATH) { - log( - `Using PLAYWRIGHT_BROWSERS_PATH: ${process.env.PLAYWRIGHT_BROWSERS_PATH}`, - ); - return process.env.PLAYWRIGHT_BROWSERS_PATH; - } - const home = process.env.HOME || process.env.USERPROFILE || ""; - const candidates = [ - path.join(home, ".dataconnect", "browsers"), - path.join( - home, - ".dataconnect", - "playwright-runner", - "node_modules", - "playwright-core", - ".local-browsers", - ), - ]; - for (const dir of candidates) { - if (fs.existsSync(dir)) { - log(`Found browser cache: ${dir}`); - return dir; - } - } - return candidates[0]; -} - -// Check if system Chrome exists -function getSystemChromePath() { - const chromePath = CHROME_PATHS[process.platform]; - log(`Checking system Chrome at: ${chromePath}`); - if (chromePath && fs.existsSync(chromePath)) { - log(`Found system Chrome: ${chromePath}`); - return chromePath; - } - log(`System Chrome not found at default path`); - // Try alternative Windows paths - if (process.platform === "win32") { - const altPaths = [ - "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", - path.join( - process.env.LOCALAPPDATA || "", - "Google\\Chrome\\Application\\chrome.exe", - ), - ]; - for (const p of altPaths) { - if (fs.existsSync(p)) return p; - } - } - // Try Edge on Windows - if (process.platform === "win32") { - const edgePath = - "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"; - if (fs.existsSync(edgePath)) return edgePath; - } - return null; -} - -// Check if Playwright Chromium is already downloaded (or bundled via PLAYWRIGHT_BROWSERS_PATH) -function getDownloadedChromiumPath() { - const cacheDir = getBrowserCacheDir(); - log(`Checking for Chromium in: ${cacheDir}`); - if (!fs.existsSync(cacheDir)) { - log(`Browser cache dir does not exist: ${cacheDir}`); - return null; - } - - // Look for chromium directory - const entries = fs.readdirSync(cacheDir); - const chromiumDir = entries.find( - (e) => e.startsWith("chromium-") && !e.includes("headless"), - ); - if (!chromiumDir) return null; - - const chromiumPath = path.join(cacheDir, chromiumDir); - - // Platform-specific executable paths (Playwright's "Chrome for Testing" structure) - if (process.platform === "darwin") { - // Try arm64 first, then x64 - const paths = [ - path.join( - chromiumPath, - "chrome-mac-arm64", - "Google Chrome for Testing.app", - "Contents", - "MacOS", - "Google Chrome for Testing", - ), - path.join( - chromiumPath, - "chrome-mac", - "Google Chrome for Testing.app", - "Contents", - "MacOS", - "Google Chrome for Testing", - ), - // Legacy paths - path.join( - chromiumPath, - "chrome-mac-arm64", - "Chromium.app", - "Contents", - "MacOS", - "Chromium", - ), - path.join( - chromiumPath, - "chrome-mac", - "Chromium.app", - "Contents", - "MacOS", - "Chromium", - ), - ]; - for (const p of paths) { - if (fs.existsSync(p)) return p; - } - } else if (process.platform === "win32") { - const paths = [ - path.join(chromiumPath, "chrome-win", "chrome.exe"), - path.join(chromiumPath, "chrome-win64", "chrome.exe"), - ]; - for (const p of paths) { - if (fs.existsSync(p)) return p; - } - } else { - const paths = [ - path.join(chromiumPath, "chrome-linux", "chrome"), - path.join(chromiumPath, "chrome-linux64", "chrome"), - ]; - for (const p of paths) { - if (fs.existsSync(p)) return p; - } - } - - return null; -} - -// Default Chrome user-data directories by platform -const CHROME_PROFILE_DIRS = { - darwin: path.join( - process.env.HOME || "", - "Library", - "Application Support", - "Google", - "Chrome", - ), - win32: path.join( - process.env.LOCALAPPDATA || "", - "Google", - "Chrome", - "User Data", - ), - linux: path.join(process.env.HOME || "", ".config", "google-chrome"), -}; - -// Check whether a browser path points to system Chrome (not Playwright Chromium). -function isSystemChrome(browserPath) { - if (!browserPath) return false; - const lower = browserPath.toLowerCase(); - if ( - lower.includes(".databridge") || - lower.includes("chromium") || - lower.includes("chrome for testing") - ) { - return false; - } - return true; -} - -// Get the Chrome last-used profile directory path. -function getChromeProfileDir(chromeRoot) { - const localStatePath = path.join(chromeRoot, "Local State"); - if (fs.existsSync(localStatePath)) { - try { - const localState = JSON.parse(fs.readFileSync(localStatePath, "utf-8")); - const lastUsed = localState?.profile?.last_used; - if (lastUsed) { - const profileDir = path.join(chromeRoot, lastUsed); - if (fs.existsSync(profileDir)) { - log(`Chrome last-used profile: "${lastUsed}"`); - return profileDir; - } - } - } catch (e) { - log(`Warning: could not read Chrome Local State: ${e.message}`); - } - } - - const defaultDir = path.join(chromeRoot, "Default"); - if (fs.existsSync(defaultDir)) return defaultDir; - return null; -} - -// Import cookies from the user's Chrome profile into a running Playwright -// browser context's Cookies database. This is done AFTER Chrome creates its -// own fresh profile, so we INSERT into Chrome's own db rather than replacing it -// (which Chrome would wipe on startup). -// -// The encrypted_value blobs use the same Keychain key (v10 format), so Chrome -// can decrypt them transparently — no Keychain popup needed since Chrome itself -// is the one reading them. -function importChromecookies(userDataDir, browserPath) { - if (!isSystemChrome(browserPath)) return; - - // Only import once - const markerFile = path.join(userDataDir, ".cookies-imported"); - if (fs.existsSync(markerFile)) { - log("Skipping cookie import — already done"); - return; - } - - const chromeRoot = CHROME_PROFILE_DIRS[process.platform]; - if (!chromeRoot || !fs.existsSync(chromeRoot)) return; - - const sourceProfileDir = getChromeProfileDir(chromeRoot); - if (!sourceProfileDir) return; - - const sourceCookies = path.join(sourceProfileDir, "Cookies"); - if (!fs.existsSync(sourceCookies)) return; - - // Find the target Cookies db — Chrome creates it inside "Default/" by default - const targetCookies = path.join(userDataDir, "Default", "Cookies"); - if (!fs.existsSync(targetCookies)) { - log("Skipping cookie import — target Cookies db not found yet"); - return; - } - - try { - // Use sqlite3 to INSERT cookies from source into the target db. - // ATTACH the source db, then INSERT OR IGNORE to avoid duplicates. - const sql = ` - ATTACH DATABASE '${sourceCookies.replace(/'/g, "''")}' AS src; - INSERT OR REPLACE INTO cookies - SELECT * FROM src.cookies; - DETACH DATABASE src; - `; - execSync(`sqlite3 "${targetCookies}" "${sql}"`, { - encoding: "utf-8", - timeout: 10000, - }); - - // Verify - const count = execSync( - `sqlite3 "${targetCookies}" "SELECT COUNT(*) FROM cookies;"`, - { encoding: "utf-8" }, - ).trim(); - log(`Imported cookies into profile — total cookies now: ${count}`); - - fs.writeFileSync(markerFile, new Date().toISOString()); - } catch (e) { - log(`Warning: could not import Chrome cookies: ${e.message}`); - } -} - -// Download Chromium using Playwright -async function downloadChromium(sendStatus) { - const cacheDir = getBrowserCacheDir(); - - // Create cache directory - if (!fs.existsSync(cacheDir)) { - fs.mkdirSync(cacheDir, { recursive: true }); - } - - log("Downloading Chromium browser (one-time setup)..."); - if (sendStatus) { - sendStatus("DOWNLOADING_BROWSER"); - } - - // Set environment for Playwright to use our cache dir - process.env.PLAYWRIGHT_BROWSERS_PATH = cacheDir; - - try { - // Use Playwright's CLI to download Chromium - execSync("npx playwright install chromium", { - stdio: "inherit", - env: { ...process.env, PLAYWRIGHT_BROWSERS_PATH: cacheDir }, - }); - log("Chromium download complete"); - return getDownloadedChromiumPath(); - } catch (error) { - log("Failed to download Chromium:", error.message); - throw new Error( - "Failed to download browser. Please install Google Chrome or try again.", - ); - } -} - -// Active browser contexts by runId -const activeRuns = new Map(); - -// Send message to parent process -function send(msg) { - process.stdout.write(JSON.stringify(msg) + "\n"); -} - -function drainStdout() { - return new Promise((resolve) => { - if (process.stdout.writableNeedDrain) { - process.stdout.once("drain", resolve); - } else { - process.stdout.write("", resolve); - } - }); -} - -// Log to stderr (doesn't interfere with JSON protocol) -function log(...args) { - console.error("[PlaywrightRunner]", ...args); -} - -// Resolve browser executable path -function resolveBrowserPath() { - let browserPath = null; - - if (!process.env.DATACONNECT_SIMULATE_NO_CHROME) { - browserPath = getSystemChromePath(); - } else { - log( - "DATACONNECT_SIMULATE_NO_CHROME is set, skipping system Chrome detection", - ); - } - - if (!browserPath) { - browserPath = getDownloadedChromiumPath(); - } - - if (!browserPath) { - throw new Error( - "No browser available. The Rust backend should have downloaded Chromium before starting the connector.", - ); - } - - return browserPath; -} - -// Launch a persistent browser context -async function launchPersistentContext(userDataDir, headless, browserPath) { - // Ensure profile directory exists - fs.mkdirSync(userDataDir, { recursive: true }); - - const launchOptions = { - headless, - args: [ - "--disable-blink-features=AutomationControlled", - "--disable-features=MediaRouter,DialMediaRouteProvider", - ], - viewport: { width: 1280, height: 800 }, - userAgent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", - }; - - if (browserPath) { - launchOptions.executablePath = browserPath; - } - - // When using system Chrome, disable Playwright's mock keychain so Chrome - // uses the real macOS Keychain. This lets it decrypt cookies imported from - // the user's real Chrome profile (both use the same "Chrome Safe Storage" - // Keychain entry). No popup — Chrome itself is already authorized. - if (isSystemChrome(browserPath)) { - launchOptions.ignoreDefaultArgs = ["--use-mock-keychain"]; - } - - log( - `Launching ${headless ? "headless" : "headed"} browser with profile: ${userDataDir}`, - ); - const context = await chromium.launchPersistentContext( - userDataDir, - launchOptions, - ); - log("Browser launched successfully"); - return context; -} - -// Create the page API that connectors use -function createPageApi(runState, runId) { - const networkCaptures = new Map(); - const capturedResponses = new Map(); - - // Helper to get current page, throw if browser is closed - function requirePage() { - if (runState.browserClosed || !runState.page) { - throw new Error( - "Browser is closed. Use page.httpFetch() for HTTP requests.", - ); - } - return runState.page; - } - - // Set up network interception on current page - function setupNetworkCapture(page) { - page.on("response", async (response) => { - const url = response.url(); - - for (const [key, config] of networkCaptures.entries()) { - if (config.urlPattern && !url.includes(config.urlPattern)) continue; - - try { - const request = response.request(); - const postData = request.postData() || ""; - - if (config.bodyPattern) { - const patterns = config.bodyPattern.split("|"); - if (!patterns.some((p) => postData.includes(p))) continue; - } - - const body = await response.json().catch(() => null); - if (body) { - capturedResponses.set(key, { - url, - data: body, - timestamp: Date.now(), - }); - send({ type: "network-captured", runId, key, url }); - } - } catch (e) { - // Ignore errors for non-JSON responses - } - } - }); - } - - // Set up network capture on initial page - if (runState.page) { - setupNetworkCapture(runState.page); - } - - return { - goto: async (url, options = {}) => { - const page = requirePage(); - log(`pageApi.goto called with: ${url}`); - send({ type: "log", runId, message: `Navigating to: ${url}` }); - const { waitUntil = "domcontentloaded", timeout } = options; - const gotoOpts = { waitUntil }; - if (timeout != null) gotoOpts.timeout = timeout; - try { - await page.goto(url, gotoOpts); - log("pageApi.goto completed successfully"); - } catch (err) { - log(`pageApi.goto error: ${err.message}`); - throw err; - } - }, - - evaluate: async (script) => { - const page = requirePage(); - return await page.evaluate(script); - }, - - screenshot: async () => { - const page = requirePage(); - const buffer = await page.screenshot({ - type: "jpeg", - quality: 70, - timeout: 5000, - }); - return buffer.toString("base64"); - }, - - requestInput: async (payload) => { - const requestId = `input-${++runState.requestCounter}`; - send({ type: "request-input", runId, requestId, payload }); - return new Promise((resolve, reject) => { - runState.pendingInputs.set(requestId, { resolve, reject }); - }); - }, - - sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)), - - setData: async (key, value) => { - if (key === "status") { - send({ type: "log", runId, message: value }); - log(`[status] ${value}`); - } else if (key === "error") { - log(`[error] ${value}`); - } else if (key === "result") { - runState.hasResult = true; - } - send({ type: "data", runId, key, value }); - }, - - // Structured progress update — drives the frontend progress UI - setProgress: async ({ phase, message, count }) => { - send({ - type: "status", - runId, - status: { type: "COLLECTING", message, phase, count }, - }); - if (message) log(`[progress] ${message}`); - }, - - promptUser: async (message, checkFn, interval = 2000) => { - send({ type: "log", runId, message }); - send({ type: "status", runId, status: "WAITING_FOR_USER" }); - - // Poll until condition is met - while (true) { - await new Promise((resolve) => setTimeout(resolve, interval)); - try { - const result = await checkFn(); - if (result) { - send({ type: "log", runId, message: "User action completed" }); - return; - } - } catch (e) { - // Keep waiting - } - } - }, - - captureNetwork: async (config) => { - networkCaptures.set(config.key, { - urlPattern: config.urlPattern || "", - bodyPattern: config.bodyPattern || "", - }); - log(`Registered network capture: ${config.key}`); - }, - - getCapturedResponse: async (key) => { - const captured = capturedResponses.get(key); - return captured ? captured : null; - }, - - clearNetworkCaptures: async () => { - networkCaptures.clear(); - capturedResponses.clear(); - }, - - hasCapturedResponse: (key) => { - return capturedResponses.has(key); - }, - - // Close the browser but keep the Node.js process alive for background HTTP work. - // Cookies/session persist in the profile directory for next run. - closeBrowser: async () => { - if (runState.browserClosed) { - log("Browser already closed"); - return; - } - - log("Closing browser (connector requested closeBrowser)"); - - // Extract cookies before closing so httpFetch can use them - if (runState.context) { - try { - runState.cookies = await runState.context.cookies(); - log( - `Extracted ${runState.cookies.length} cookies for background HTTP requests`, - ); - } catch (e) { - log("Warning: could not extract cookies:", e.message); - runState.cookies = []; - } - } - - runState.browserClosed = true; - runState.browserClosedByConnector = true; - - if (runState.context) { - try { - await runState.context.close(); - } catch (e) { - log("Error closing context:", e.message); - } - runState.context = null; - runState.page = null; - } - - send({ - type: "log", - runId, - message: "Browser closed, continuing in background...", - }); - log("Browser closed, process stays alive for background work"); - }, - - // Escalate to headed mode for live human interaction (e.g., interactive CAPTCHAs). - // Gated by allowHeaded capability — if the driver doesn't support headed mode, - // navigates in the existing headless browser and returns { headed: false }. - showBrowser: async (url) => { - log("showBrowser requested"); - - if (runState.browserClosed) { - log("showBrowser called but browser is already closed"); - return { headed: false }; - } - - if (!runState.allowHeaded) { - log("Headed mode not available — navigating headless"); - if (url && runState.page) { - try { - await runState.page.goto(url, { waitUntil: "domcontentloaded" }); - } catch (e) { - log(`showBrowser headless navigation failed: ${e.message}`); - } - } - send({ - type: "log", - runId, - message: "Headed interaction unavailable — staying headless", - }); - return { headed: false }; - } - - // Close existing browser if open - if (runState.context && !runState.browserClosed) { - log("Closing existing browser before reopening headed"); - runState.browserClosedByConnector = true; - try { - await runState.context.close(); - } catch (e) { - log("Error closing existing context:", e.message); - } - runState.context = null; - runState.page = null; - } - - // Launch new headed browser with persistent context - runState.browserClosed = false; - runState.browserClosedByConnector = false; - runState.headless = false; - const context = await launchPersistentContext( - runState.userDataDir, - false, - runState.browserPath, - ); - const page = context.pages()[0] || (await context.newPage()); - - // Set up disconnect handler - context.browser().on("disconnected", () => { - if ( - !runState.connectorCompleted && - !runState.browserClosedByConnector - ) { - log(`Browser disconnected for run ${runId} (user closed window)`); - runState.browserClosed = true; - runState.context = null; - runState.page = null; - activeRuns.delete(runId); - send({ type: "status", runId, status: "STOPPED" }); - drainStdout().then(() => process.exit(0)); - } - }); - - // Update state - runState.context = context; - runState.page = page; - - // Re-setup network capture on new page - setupNetworkCapture(page); - - // Navigate to URL - if (url) { - await page.goto(url, { waitUntil: "domcontentloaded" }); - } - - send({ - type: "log", - runId, - message: "Browser opened for user interaction", - }); - log("Headed browser opened"); - return { headed: true }; - }, - - // Switch to headless mode — browser becomes invisible but stays running. - // Use this after credentials are captured so the user doesn't see the browser - // during data collection, while preserving the TLS fingerprint for Cloudflare. - goHeadless: async () => { - if (runState.headless && !runState.browserClosed) { - log("Already in headless mode"); - return; - } - - log("Switching to headless mode"); - - // Close existing headed browser - if (runState.context && !runState.browserClosed) { - runState.browserClosedByConnector = true; - try { - await runState.context.close(); - } catch (e) { - log("Error closing headed context:", e.message); - } - runState.context = null; - runState.page = null; - } - - // Reopen headless browser with persistent context - runState.browserClosed = false; - runState.browserClosedByConnector = false; - runState.headless = true; - const context = await launchPersistentContext( - runState.userDataDir, - true, - runState.browserPath, - ); - const page = context.pages()[0] || (await context.newPage()); - - // Set up disconnect handler - context.browser().on("disconnected", () => { - if ( - !runState.connectorCompleted && - !runState.browserClosedByConnector - ) { - log(`Browser disconnected for run ${runId}`); - runState.browserClosed = true; - runState.context = null; - runState.page = null; - activeRuns.delete(runId); - send({ type: "status", runId, status: "STOPPED" }); - drainStdout().then(() => process.exit(0)); - } - }); - - // Update state - runState.context = context; - runState.page = page; - - // Re-setup network capture on new page - setupNetworkCapture(page); - - // Navigate to establish browser context - await page.goto("https://chatgpt.com/", { - waitUntil: "domcontentloaded", - }); - - send({ - type: "log", - runId, - message: "Switched to headless mode for background data collection", - }); - log("Switched to headless mode"); - }, - - // Direct HTTP fetch from Node.js — no browser needed. - // Works after closeBrowser() for background data collection. - // Automatically includes cookies extracted from the browser session. - httpFetch: async (url, options = {}) => { - const { timeout = 30000, ...fetchOptions } = options; - - // Auto-include cookies from the closed browser session - if (runState.cookies && runState.cookies.length > 0) { - try { - const urlObj = new URL(url); - const relevantCookies = runState.cookies - .filter((c) => { - const cookieDomain = c.domain.startsWith(".") - ? c.domain.slice(1) - : c.domain; - return ( - urlObj.hostname === cookieDomain || - urlObj.hostname.endsWith("." + cookieDomain) - ); - }) - .map((c) => `${c.name}=${c.value}`) - .join("; "); - if (relevantCookies) { - fetchOptions.headers = { - ...fetchOptions.headers, - cookie: relevantCookies, - }; - } - } catch (e) { - // Ignore cookie injection errors - } - } - - const controller = new AbortController(); - const timeoutId = setTimeout(() => controller.abort(), timeout); - try { - const response = await fetch(url, { - ...fetchOptions, - signal: controller.signal, - }); - clearTimeout(timeoutId); - const text = await response.text(); - let json = null; - try { - json = JSON.parse(text); - } catch {} - if (!response.ok) { - log( - `[httpFetch] ${response.status} ${response.statusText} for ${url.substring(0, 100)}`, - ); - log( - `[httpFetch] Response body (first 200 chars): ${text.substring(0, 200)}`, - ); - } - return { - ok: response.ok, - status: response.status, - headers: Object.fromEntries(response.headers.entries()), - text, - json, - error: null, - }; - } catch (err) { - clearTimeout(timeoutId); - return { - ok: false, - status: 0, - headers: {}, - text: "", - json: null, - error: err.message, - }; - } - }, - }; -} - -// Run a connector -async function runConnector( - runId, - connectorPath, - url, - headless = true, - allowHeaded = true, -) { - log( - `Starting run ${runId} with connector ${connectorPath} (headless: ${headless}, allowHeaded: ${allowHeaded})`, - ); - - // Derive connector ID for persistent browser profile - const connectorFileName = path.basename( - connectorPath, - path.extname(connectorPath), - ); - const home = process.env.HOME || process.env.USERPROFILE || ""; - const userDataDir = path.join( - home, - ".dataconnect", - "browser-profiles", - connectorFileName, - ); - - // Mutable state shared with pageApi - const runState = { - context: null, - page: null, - browserClosed: false, - browserClosedByConnector: false, - connectorCompleted: false, - headless, - allowHeaded, - userDataDir, - browserPath: null, - requestCounter: 0, - pendingInputs: new Map(), - }; - - try { - // Read connector script - const connectorCode = fs.readFileSync(connectorPath, "utf-8"); - - // Resolve browser executable - runState.browserPath = resolveBrowserPath(); - log(`Using browser: ${runState.browserPath}`); - - // On first run, we need to: - // 1. Launch Chrome briefly so it creates its profile/Cookies db - // 2. Close it - // 3. INSERT cookies from the user's Chrome profile into the db - // 4. Relaunch — now Chrome loads the imported cookies from disk - const markerFile = path.join(userDataDir, ".cookies-imported"); - if (isSystemChrome(runState.browserPath) && !fs.existsSync(markerFile)) { - log("First run: launching browser to initialize profile..."); - const tempCtx = await launchPersistentContext( - userDataDir, - true, - runState.browserPath, - ); - await tempCtx.close(); - log("Profile initialized, importing cookies..."); - importChromecookies(userDataDir, runState.browserPath); - } - - // Launch browser with persistent context (cookies already in db on first run) - const context = await launchPersistentContext( - userDataDir, - headless, - runState.browserPath, - ); - const page = context.pages()[0] || (await context.newPage()); - - runState.context = context; - runState.page = page; - - // Handle browser disconnect (user closed browser window) - context.browser().on("disconnected", () => { - if ( - !runState.connectorCompleted && - !runState.browserClosedByConnector && - activeRuns.has(runId) - ) { - log(`Browser disconnected for run ${runId} (user closed window)`); - runState.browserClosed = true; - runState.context = null; - runState.page = null; - activeRuns.delete(runId); - send({ type: "status", runId, status: "STOPPED" }); - drainStdout().then(() => process.exit(0)); - } - }); - - // Store for cleanup - activeRuns.set(runId, { - runState, - setCompleted: () => { - runState.connectorCompleted = true; - }, - }); - - // Create page API - const pageApi = createPageApi(runState, runId); - - // Navigate to starting URL - log(`Navigating to initial URL: ${url}`); - await page.goto(url, { waitUntil: "domcontentloaded" }); - log("Initial navigation complete"); - send({ type: "status", runId, status: "RUNNING" }); - - // Build the connector execution wrapper - // The connector has an IIFE at the end - we need to return its Promise - // Find the LAST IIFE and add 'return' before it (there may be inner IIFEs in helpers) - let modifiedCode = connectorCode; - - // Find all occurrences and replace the last one - const iifePattern = /\n\(async\s*\(\)\s*=>\s*\{/g; - const matches = [...modifiedCode.matchAll(iifePattern)]; - - if (matches.length > 0) { - const lastMatch = matches[matches.length - 1]; - const insertPos = lastMatch.index; - modifiedCode = - modifiedCode.substring(0, insertPos) + - "\nreturn (async () => {" + - modifiedCode.substring(insertPos + lastMatch[0].length); - log( - `Added return before IIFE (match ${matches.length} of ${matches.length})`, - ); - } else { - log("WARNING: Could not find IIFE pattern in connector code"); - } - - // Execute connector with page API in scope using AsyncFunction - log("Starting connector execution..."); - const AsyncFunction = Object.getPrototypeOf( - async function () {}, - ).constructor; - const runConnectorFn = new AsyncFunction("page", modifiedCode); - - log("Calling connector function..."); - const result = await runConnectorFn.call(null, pageApi); - log( - "Connector function completed with result:", - result ? "has result" : "undefined", - ); - - if (!runState.hasResult && result != null) { - const exportData = - result && result.success && result.data ? result.data : result; - send({ type: "result", runId, data: exportData }); - } - send({ type: "status", runId, status: "COMPLETE" }); - - // Mark as completed to prevent disconnect handler from sending STOPPED - runState.connectorCompleted = true; - - // Close browser if still open - if (!runState.browserClosed && runState.context) { - await new Promise((resolve) => setTimeout(resolve, 2000)); - try { - await runState.context.close(); - } catch (e) { - // Browser may already be closed - } - } - - activeRuns.delete(runId); - - // Exit process after successful completion - log("Connector completed successfully, exiting"); - await drainStdout(); - process.exit(0); - } catch (error) { - log(`Error in run ${runId}:`, error.message); - send({ type: "error", runId, message: error.message }); - send({ type: "status", runId, status: "ERROR" }); - - // Cleanup on error - if (runState.context && !runState.browserClosed) { - try { - await runState.context.close(); - } catch (e) {} - } - activeRuns.delete(runId); - - // Exit process after error - log("Connector failed, exiting"); - await drainStdout(); - process.exit(1); - } -} - -// Stop a run -async function stopRun(runId) { - const run = activeRuns.get(runId); - if (run) { - log(`Stopping run ${runId}`); - // Reject any pending requestInput promises so the connector doesn't hang - for (const [, pending] of run.runState.pendingInputs) { - pending.reject(new Error("Run stopped")); - } - run.runState.pendingInputs.clear(); - if (run.runState && run.runState.context && !run.runState.browserClosed) { - await run.runState.context.close().catch(() => {}); - } - activeRuns.delete(runId); - send({ type: "status", runId, status: "STOPPED" }); - } -} - -// Main loop - read commands from stdin -async function main() { - log("Playwright runner started"); - send({ type: "ready" }); - - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - terminal: false, - }); - - for await (const line of rl) { - try { - const cmd = JSON.parse(line); - - switch (cmd.type) { - case "run": - runConnector( - cmd.runId, - cmd.connectorPath, - cmd.url, - cmd.headless !== false, - cmd.allowHeaded !== false, - ); - break; - - case "stop": - await stopRun(cmd.runId); - break; - - case "quit": - log("Quitting..."); - for (const [runId, run] of activeRuns) { - if ( - run.runState && - run.runState.context && - !run.runState.browserClosed - ) { - await run.runState.context.close().catch(() => {}); - } - } - process.exit(0); - break; - - case "test": - // Simple test to prove Node.js is working - const os = require("os"); - send({ - type: "test-result", - data: { - nodejs: process.version, - platform: process.platform, - arch: process.arch, - hostname: os.hostname(), - cpus: os.cpus().length, - memory: Math.round(os.totalmem() / 1024 / 1024 / 1024) + " GB", - uptime: Math.round(os.uptime() / 60) + " minutes", - }, - }); - break; - - case "evaluate": { - const evalRun = activeRuns.get(cmd.runId); - if (!evalRun) { - send({ - type: "evaluate-result", - runId: cmd.runId, - error: `No active run: ${cmd.runId}`, - }); - break; - } - const { runState: evalState } = evalRun; - if (evalState.browserClosed || !evalState.page) { - send({ - type: "evaluate-result", - runId: cmd.runId, - error: "Browser is closed", - }); - break; - } - // Non-blocking: don't await so stdin loop keeps processing other commands. - // Wrapped in try so synchronous throws (e.g. page torn down mid-call) - // always produce an evaluate-result instead of hanging the driver. - try { - evalState.page - .evaluate(cmd.script) - .then((result) => - send({ type: "evaluate-result", runId: cmd.runId, result }), - ) - .catch((e) => - send({ - type: "evaluate-result", - runId: cmd.runId, - error: e.stack || e.message, - }), - ); - } catch (e) { - send({ - type: "evaluate-result", - runId: cmd.runId, - error: e.stack || e.message, - }); - } - break; - } - - case "input-response": { - const inputRun = activeRuns.get(cmd.runId); - if (!inputRun) break; - const pending = inputRun.runState.pendingInputs.get(cmd.requestId); - if (!pending) break; - inputRun.runState.pendingInputs.delete(cmd.requestId); - if (cmd.error) { - pending.reject( - new Error( - typeof cmd.error === "string" - ? cmd.error - : JSON.stringify(cmd.error), - ), - ); - } else { - pending.resolve(cmd.data); - } - break; - } - - case "screenshot": { - const ssRun = activeRuns.get(cmd.runId); - if (!ssRun) { - send({ - type: "screenshot-result", - runId: cmd.runId, - error: `No active run: ${cmd.runId}`, - }); - break; - } - const { runState: ssState } = ssRun; - if (ssState.browserClosed || !ssState.page) { - send({ - type: "screenshot-result", - runId: cmd.runId, - error: "Browser is closed", - }); - break; - } - try { - ssState.page - .screenshot({ type: "jpeg", quality: 70, timeout: 5000 }) - .then((buffer) => - send({ - type: "screenshot-result", - runId: cmd.runId, - data: buffer.toString("base64"), - }), - ) - .catch((e) => - send({ - type: "screenshot-result", - runId: cmd.runId, - error: e.stack || e.message, - }), - ); - } catch (e) { - send({ - type: "screenshot-result", - runId: cmd.runId, - error: e.stack || e.message, - }); - } - break; - } - - default: - log(`Unknown command: ${cmd.type}`); - } - } catch (error) { - log(`Error parsing command: ${error.message}`); - } - } -} - -main().catch((err) => { - log("Fatal error:", err); - process.exit(1); -}); diff --git a/runtime-assets/playwright-runner/package-lock.json b/runtime-assets/playwright-runner/package-lock.json deleted file mode 100644 index 65810c35..00000000 --- a/runtime-assets/playwright-runner/package-lock.json +++ /dev/null @@ -1,1242 +0,0 @@ -{ - "name": "dataconnect-playwright-runner", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "dataconnect-playwright-runner", - "version": "1.0.0", - "hasInstallScript": true, - "dependencies": { - "playwright": "^1.40.0" - }, - "devDependencies": { - "@yao-pkg/pkg": "^5.12.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", - "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", - "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.6" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", - "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@yao-pkg/pkg": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/@yao-pkg/pkg/-/pkg-5.16.1.tgz", - "integrity": "sha512-crUlnNFSReFNFuXDc4f3X2ignkFlc9kmEG7Bp/mJMA1jYyqR0lqjZGLgrSDYTYiNsYud8AzgA3RY1DrMdcUZWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/generator": "^7.23.0", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "@yao-pkg/pkg-fetch": "3.5.16", - "into-stream": "^6.0.0", - "minimist": "^1.2.6", - "multistream": "^4.1.0", - "picocolors": "^1.1.0", - "picomatch": "^4.0.2", - "prebuild-install": "^7.1.1", - "resolve": "^1.22.0", - "stream-meter": "^1.0.4", - "tinyglobby": "^0.2.9" - }, - "bin": { - "pkg": "lib-es5/bin.js" - } - }, - "node_modules/@yao-pkg/pkg-fetch": { - "version": "3.5.16", - "resolved": "https://registry.npmjs.org/@yao-pkg/pkg-fetch/-/pkg-fetch-3.5.16.tgz", - "integrity": "sha512-mCnZvZz0/Ylpk4TGyt34pqWJyBGYJM8c3dPoMRV8Knodv2QhcYS4iXb5kB/JNWkrRtCKukGZIKkMLXZ3TQlzPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.6", - "picocolors": "^1.1.0", - "progress": "^2.0.3", - "semver": "^7.3.5", - "tar-fs": "^2.1.1", - "yargs": "^16.2.0" - }, - "bin": { - "pkg-fetch": "lib-es5/bin.js" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, - "license": "ISC" - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true, - "license": "(MIT OR WTFPL)", - "engines": { - "node": ">=6" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true, - "license": "MIT" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "node_modules/into-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", - "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true, - "license": "MIT" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/multistream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/multistream/-/multistream-4.1.0.tgz", - "integrity": "sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "once": "^1.4.0", - "readable-stream": "^3.6.0" - } - }, - "node_modules/multistream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/napi-build-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", - "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-abi": { - "version": "3.87.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz", - "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/playwright": { - "version": "1.57.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", - "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.57.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.57.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", - "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/prebuild-install": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", - "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^2.0.0", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/stream-meter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stream-meter/-/stream-meter-1.0.4.tgz", - "integrity": "sha512-4sOEtrbgFotXwnEuzzsQBYEV1elAeFSO8rSGeTwabuX1RRn/kEq9JVH7I0MRBhKVRR0sJkr0M0QCH7yOLf9fhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "^2.1.4" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tar-fs": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", - "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - } - } -} diff --git a/runtime-assets/playwright-runner/package.json b/runtime-assets/playwright-runner/package.json deleted file mode 100644 index ad29f1fa..00000000 --- a/runtime-assets/playwright-runner/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "dataconnect-playwright-runner", - "version": "1.0.0", - "description": "Playwright sidecar for DataConnect connectors", - "main": "index.cjs", - "type": "module", - "scripts": { - "start": "node index.cjs", - "build": "node scripts/build.js", - "build:lean": "node scripts/build.js --lean", - "postinstall": "playwright install chromium" - }, - "pkg": { - "assets": [], - "targets": [ - "node20-macos-arm64", - "node20-macos-x64", - "node20-win-x64", - "node20-linux-x64" - ], - "outputPath": "dist" - }, - "dependencies": { - "playwright": "^1.40.0" - }, - "devDependencies": { - "@yao-pkg/pkg": "^5.12.0" - } -} diff --git a/runtime-assets/playwright-runner/scripts/build.js b/runtime-assets/playwright-runner/scripts/build.js deleted file mode 100644 index 3dedb5a3..00000000 --- a/runtime-assets/playwright-runner/scripts/build.js +++ /dev/null @@ -1,182 +0,0 @@ -/** - * Build script for playwright-runner - * - * Creates standalone binaries with bundled Node.js and copies Playwright browsers. - */ - -import { execSync } from "child_process"; -import { - existsSync, - mkdirSync, - cpSync, - rmSync, - readdirSync, - statSync, -} from "fs"; -import { join, dirname } from "path"; -import { fileURLToPath } from "url"; -import { homedir, platform, arch } from "os"; - -const __dirname = dirname(fileURLToPath(import.meta.url)); -const ROOT = join(__dirname, ".."); -const DIST = join(ROOT, "dist"); - -// Determine current platform -const PLATFORM = platform(); -const ARCH = arch(); - -function log(msg) { - console.log(`[build] ${msg}`); -} - -function exec(cmd, opts = {}) { - log(`Running: ${cmd}`); - execSync(cmd, { stdio: "inherit", cwd: ROOT, ...opts }); -} - -// Get Playwright browser path -function getPlaywrightBrowserPath() { - // Playwright stores browsers in different locations depending on OS: - // - macOS: ~/Library/Caches/ms-playwright - // - Linux: ~/.cache/ms-playwright - // - Windows: %LOCALAPPDATA%\ms-playwright - if (PLATFORM === "darwin") { - return join(homedir(), "Library", "Caches", "ms-playwright"); - } else if (PLATFORM === "win32") { - return join(process.env.LOCALAPPDATA || "", "ms-playwright"); - } - return join(homedir(), ".cache", "ms-playwright"); -} - -// Find the chromium directory -function findChromiumDir(basePath) { - if (!existsSync(basePath)) { - return null; - } - - const entries = readdirSync(basePath); - const chromiumDir = entries.find((e) => e.startsWith("chromium-")); - - if (chromiumDir) { - return join(basePath, chromiumDir); - } - return null; -} - -// Get pkg target for current platform -function getPkgTarget() { - const nodeVersion = "node20"; - - if (PLATFORM === "darwin") { - return ARCH === "arm64" - ? `${nodeVersion}-macos-arm64` - : `${nodeVersion}-macos-x64`; - } else if (PLATFORM === "win32") { - return `${nodeVersion}-win-x64`; - } else { - return `${nodeVersion}-linux-x64`; - } -} - -// Get output binary name -function getOutputName() { - const base = "playwright-runner"; - if (PLATFORM === "win32") { - return `${base}.exe`; - } - return base; -} - -async function build() { - // Check for --lean flag (production builds without bundled Chromium) - const isLean = process.argv.includes("--lean"); - - log(`Starting ${isLean ? "LEAN " : ""}build...`); - if (isLean) { - log( - "Lean mode: Chromium will NOT be bundled (downloaded on-demand at runtime)", - ); - } - - // Clean dist - if (existsSync(DIST)) { - rmSync(DIST, { recursive: true }); - } - mkdirSync(DIST, { recursive: true }); - - // Only install browsers if not lean build (needed for pkg to bundle playwright-core) - if (!isLean) { - log("Ensuring Playwright browsers are installed..."); - exec("npx playwright install chromium"); - } - - // Build with pkg - const target = getPkgTarget(); - const outputName = getOutputName(); - const outputPath = join(DIST, outputName); - - log(`Building for target: ${target}`); - exec( - `npx pkg index.cjs -t ${target} -o "${outputPath}" --no-bytecode --public-packages '*' --public`, - ); - - // Copy Playwright browser (only for non-lean builds) - if (!isLean) { - const browserSrc = getPlaywrightBrowserPath(); - const chromiumDir = findChromiumDir(browserSrc); - - if (chromiumDir) { - const browserDest = join(DIST, "browsers"); - mkdirSync(browserDest, { recursive: true }); - - const chromiumDirName = - chromiumDir.split("/").pop() || chromiumDir.split("\\").pop(); - const destPath = join(browserDest, chromiumDirName); - - log(`Copying Chromium from ${chromiumDir} to ${destPath}...`); - cpSync(chromiumDir, destPath, { recursive: true }); - - log("Browser copied successfully"); - } else { - log( - 'WARNING: Could not find Chromium browser. Run "npx playwright install chromium" first.', - ); - } - } else { - log("Skipping browser copy (lean build)"); - } - - // Sign the binary on macOS (required for it to run after being copied) - if (PLATFORM === "darwin") { - log("Signing binary for macOS..."); - try { - execSync(`codesign --force --sign - "${outputPath}"`, { - stdio: "inherit", - }); - log("Binary signed successfully"); - } catch { - log( - "Warning: Failed to sign binary (may cause issues running the binary)", - ); - } - } - - log("Build complete!"); - log(`Output: ${DIST}`); - - // List output - const files = readdirSync(DIST); - log("Contents:"); - for (const file of files) { - const stat = statSync(join(DIST, file)); - const size = stat.isDirectory() - ? "dir" - : `${(stat.size / 1024 / 1024).toFixed(1)}MB`; - log(` ${file} (${size})`); - } -} - -build().catch((err) => { - console.error("Build failed:", err); - process.exit(1); -}); diff --git a/runtime-assets/run-connector.cjs b/runtime-assets/run-connector.cjs deleted file mode 100644 index c1a9f66a..00000000 --- a/runtime-assets/run-connector.cjs +++ /dev/null @@ -1,355 +0,0 @@ -#!/usr/bin/env node -/** - * run-connector.cjs — Run a data connector headlessly. - * - * Usage: node run-connector.cjs [start-url] [options] - * - * Options: - * --inputs '{"key":"val"}' Pre-supply credentials/2FA - * --output Result file path (default: ~/.dataconnect/last-result.json) - * --pretty Human-readable colored output instead of JSON - * --runner-dir Path to playwright-runner (auto-detected if not set) - * - * Exit codes: 0 success, 1 error, 2 needs input, 3 legacy auth unsupported. - * - * Default output is line-delimited JSON on stdout: - * need-input, legacy-auth, result, log, error - * - * With --pretty, output is colored human-readable text. - */ - -const { spawn } = require("child_process"); -const fs = require("fs"); -const path = require("path"); -const os = require("os"); - -const homedir = os.homedir(); - -const rawArgs = process.argv.slice(2); -const positional = []; -let preSuppliedInputs = {}; -let pretty = false; -let outputPath = path.join(homedir, ".dataconnect", "last-result.json"); -let runnerDir = null; - -for (let i = 0; i < rawArgs.length; i++) { - if (rawArgs[i] === "--inputs" && rawArgs[i + 1]) { - try { - preSuppliedInputs = JSON.parse(rawArgs[++i]); - } catch (e) { - console.error("Invalid --inputs JSON:", e.message); - process.exit(1); - } - } else if (rawArgs[i] === "--output" && rawArgs[i + 1]) { - outputPath = rawArgs[++i]; - } else if (rawArgs[i] === "--runner-dir" && rawArgs[i + 1]) { - runnerDir = rawArgs[++i]; - } else if (rawArgs[i] === "--pretty") { - pretty = true; - } else if (!rawArgs[i].startsWith("--")) { - positional.push(rawArgs[i]); - } -} - -const connectorPath = positional[0]; -const startUrl = positional[1] || "about:blank"; - -if (!connectorPath) { - console.error( - 'Usage: node run-connector.cjs [start-url] [--inputs \'{"key":"val"}\'] [--pretty]', - ); - process.exit(1); -} - -const connectorSlug = path.basename(connectorPath, path.extname(connectorPath)); -const runId = `${connectorSlug}-${Date.now()}`; -const PENDING_INPUT_PATH = path.join( - homedir, - ".dataconnect", - `pending-input-${runId}.json`, -); -const INPUT_RESPONSE_PATH = path.join( - homedir, - ".dataconnect", - `input-response-${runId}.json`, -); - -const c = { - reset: "\x1b[0m", - bold: "\x1b[1m", - dim: "\x1b[2m", - red: "\x1b[31m", - green: "\x1b[32m", - yellow: "\x1b[33m", - blue: "\x1b[34m", - magenta: "\x1b[35m", - cyan: "\x1b[36m", - gray: "\x1b[90m", -}; - -function prettyPrint(color, prefix, msg) { - const ts = new Date().toLocaleTimeString("en-US", { hour12: false }); - console.log(`${c.gray}${ts}${c.reset} ${color}${prefix}${c.reset} ${msg}`); -} - -function emit(obj) { - if (pretty) { - switch (obj.type) { - case "need-input": - prettyPrint(c.magenta, "[input]", obj.message); - if (obj.schema?.properties) { - prettyPrint( - c.dim, - " ", - `Fields: ${Object.keys(obj.schema.properties).join(", ")}`, - ); - } - break; - case "legacy-auth": - prettyPrint(c.yellow, "[auth] ", obj.message); - break; - case "result": { - const size = fs.existsSync(obj.resultPath) - ? (fs.statSync(obj.resultPath).size / 1024).toFixed(1) + " KB" - : ""; - prettyPrint( - c.green, - "[result]", - `Saved to ${obj.resultPath} ${size ? `(${size})` : ""}`, - ); - break; - } - case "log": - prettyPrint(c.gray, "[log] ", obj.message || ""); - break; - case "error": - prettyPrint(c.red, "[error]", obj.message || ""); - break; - } - } else { - console.log(JSON.stringify(obj)); - } -} - -function resolveRunnerDir() { - if (runnerDir) { - if (fs.existsSync(path.join(runnerDir, "index.cjs"))) return runnerDir; - console.error(`Runner not found at: ${runnerDir}`); - process.exit(1); - } - - const candidates = [ - path.join(homedir, ".dataconnect", "playwright-runner"), - process.env.PLAYWRIGHT_RUNNER_DIR, - ].filter(Boolean); - - for (const dir of candidates) { - if (fs.existsSync(path.join(dir, "index.cjs"))) return dir; - } - - console.error("Could not find playwright-runner. Run `vana setup` first."); - process.exit(1); -} - -try { - fs.unlinkSync(PENDING_INPUT_PATH); -} catch {} -try { - fs.unlinkSync(INPUT_RESPONSE_PATH); -} catch {} - -const resolvedRunnerDir = resolveRunnerDir(); - -if (pretty) { - console.log(`${c.bold}run-connector${c.reset}`); - console.log(` ${c.cyan}Connector:${c.reset} ${connectorPath}`); - console.log(` ${c.cyan}URL:${c.reset} ${startUrl}`); - console.log(` ${c.cyan}Output:${c.reset} ${outputPath}`); - console.log(` ${c.cyan}Runner:${c.reset} ${resolvedRunnerDir}`); - console.log(""); -} - -const runner = spawn(process.execPath, ["index.cjs"], { - cwd: resolvedRunnerDir, - stdio: ["pipe", "pipe", "pipe"], -}); - -runner.stderr.on("data", (chunk) => { - if (pretty) { - for (const line of chunk - .toString() - .split("\n") - .filter((l) => l.trim())) { - prettyPrint(c.dim, "[runner]", line.replace("[PlaywrightRunner] ", "")); - } - } else { - process.stderr.write(chunk); - } -}); - -let buffer = ""; -const consumedFields = new Set(); - -runner.stdout.on("data", (chunk) => { - buffer += chunk.toString(); - const lines = buffer.split("\n"); - buffer = lines.pop(); - for (const line of lines) { - if (!line.trim()) continue; - try { - handleMessage(JSON.parse(line)); - } catch (e) { - process.stderr.write("[non-json] " + line + "\n"); - } - } -}); - -function handleMessage(msg) { - switch (msg.type) { - case "ready": - runner.stdin.write( - JSON.stringify({ - type: "run", - runId, - connectorPath: path.resolve(connectorPath), - url: startUrl, - headless: true, - allowHeaded: false, - }) + "\n", - ); - if (pretty) - prettyPrint(c.green, "[ready]", "Connected, starting connector..."); - break; - - case "request-input": { - const { requestId, payload } = msg; - const schema = payload?.schema; - const fields = schema?.properties ? Object.keys(schema.properties) : []; - const available = fields.filter( - (f) => f in preSuppliedInputs && !consumedFields.has(f), - ); - - if (available.length > 0) { - const data = {}; - for (const f of fields) { - if (f in preSuppliedInputs && !consumedFields.has(f)) { - data[f] = preSuppliedInputs[f]; - consumedFields.add(f); - } - } - runner.stdin.write( - JSON.stringify({ - type: "input-response", - runId, - requestId, - data, - }) + "\n", - ); - } else { - const pendingInput = { - requestId, - message: payload?.message || "Input required", - schema: schema || {}, - previousInputs: [...consumedFields], - timestamp: new Date().toISOString(), - }; - fs.writeFileSync( - PENDING_INPUT_PATH, - JSON.stringify(pendingInput, null, 2), - ); - - emit({ - type: "need-input", - message: pendingInput.message, - schema: pendingInput.schema, - pendingInputPath: PENDING_INPUT_PATH, - responseInputPath: INPUT_RESPONSE_PATH, - ...(consumedFields.size > 0 && { - previousInputs: pendingInput.previousInputs, - }), - }); - - const poll = setInterval(() => { - if (!fs.existsSync(INPUT_RESPONSE_PATH)) { - return; - } - - clearInterval(poll); - try { - const response = JSON.parse( - fs.readFileSync(INPUT_RESPONSE_PATH, "utf-8"), - ); - try { - fs.unlinkSync(INPUT_RESPONSE_PATH); - } catch {} - try { - fs.unlinkSync(PENDING_INPUT_PATH); - } catch {} - - if (response && typeof response === "object") { - for (const f of Object.keys(response)) consumedFields.add(f); - } - - runner.stdin.write( - JSON.stringify({ - type: "input-response", - runId, - requestId, - data: response, - }) + "\n", - ); - } catch (e) { - try { - fs.unlinkSync(INPUT_RESPONSE_PATH); - } catch {} - try { - fs.unlinkSync(PENDING_INPUT_PATH); - } catch {} - runner.stdin.write( - JSON.stringify({ - type: "input-response", - runId, - requestId, - error: "Invalid response file: " + e.message, - }) + "\n", - ); - } - }, 1000); - } - break; - } - - case "run-completed": - if (msg.result?.ok) { - fs.mkdirSync(path.dirname(outputPath), { recursive: true }); - fs.writeFileSync(outputPath, JSON.stringify(msg.result.data, null, 2)); - emit({ type: "result", resultPath: outputPath }); - process.exit(0); - } - emit({ - type: "error", - message: msg.result?.error || "Connector run failed.", - }); - process.exit(1); - break; - - case "run-error": - if ( - String(msg.error || "").includes("showBrowser") || - String(msg.error || "").includes("promptUser") - ) { - emit({ - type: "legacy-auth", - message: - "This connector uses legacy authentication (showBrowser/promptUser) which is not supported in batch mode. Either use a migrated connector that supports requestInput, or establish a session manually first.", - }); - process.exit(3); - } - emit({ - type: "error", - message: msg.error || "Runner error.", - }); - process.exit(1); - break; - } -} diff --git a/scripts/build-sea.mjs b/scripts/build-sea.mjs index 26725523..779b6c3f 100644 --- a/scripts/build-sea.mjs +++ b/scripts/build-sea.mjs @@ -4,8 +4,6 @@ import { promises as fsp } from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; -import { build } from "esbuild"; - const __dirname = path.dirname(fileURLToPath(import.meta.url)); const repoRoot = path.resolve(__dirname, ".."); @@ -34,12 +32,14 @@ const binaryName = const targetName = args.get("artifact-name") ?? `vana-${platform}-${arch}`; const archiveFormat = args.get("archive-format") ?? (platform === "win32" ? "zip" : "tar.gz"); +const targetDir = path.join(artifactDir, targetName); const outputPath = path.resolve( repoRoot, - args.get("output") ?? path.join(artifactDir, targetName, binaryName), + args.get("output") ?? path.join(targetDir, binaryName), ); const archivePath = path.join(artifactDir, `${targetName}.${archiveFormat}`); const checksumPath = `${archivePath}.sha256`; +const appPayloadPath = path.join(path.dirname(outputPath), "app"); const distCliMain = path.join(repoRoot, "dist", "cli", "main.js"); await assertExists( @@ -48,64 +48,20 @@ await assertExists( ); await fsp.mkdir(artifactDir, { recursive: true }); -await fsp.rm(scratchDir, { recursive: true, force: true }); +await removePath(scratchDir); await fsp.mkdir(scratchDir, { recursive: true }); -await fsp.rm(path.dirname(outputPath), { recursive: true, force: true }); +await removePath(path.dirname(outputPath)); await fsp.mkdir(path.dirname(outputPath), { recursive: true }); -const entryPath = path.join(scratchDir, "entry.mjs"); -const bundlePath = path.join(scratchDir, "bundle.cjs"); +const launcherPath = path.join(scratchDir, "launcher.cjs"); const configPath = path.join(scratchDir, "sea-config.json"); - -await fsp.writeFile( - entryPath, - [ - "import { runCli } from '../../dist/cli/main.js';", - "", - "runCli(process.argv).catch((error) => {", - " console.error(error instanceof Error ? (error.stack ?? error.message) : String(error));", - " process.exitCode = 1;", - "});", - "", - ].join("\n"), - "utf8", -); - -await build({ - entryPoints: [entryPath], - bundle: true, - platform: "node", - format: "cjs", - target: "node25", - outfile: bundlePath, - logLevel: "silent", -}); - -const assetPaths = [ - "runtime-assets/playwright-runner/index.cjs", - "runtime-assets/playwright-runner/package.json", - "runtime-assets/playwright-runner/package-lock.json", - "runtime-assets/playwright-runner/entitlements.plist", - "runtime-assets/playwright-runner/scripts/build.js", -]; - -const config = { - main: bundlePath, - output: outputPath, - disableExperimentalSEAWarning: true, - assets: Object.fromEntries( - assetPaths.map((assetPath) => [assetPath, path.join(repoRoot, assetPath)]), - ), -}; - -await fsp.writeFile(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf8"); -await run(process.execPath, ["--build-sea", configPath], { - cwd: repoRoot, -}); +await writeLauncher(launcherPath); +await buildLauncher(outputPath, launcherPath, configPath); +await stageAppPayload(appPayloadPath); if (args.has("smoke")) { const smokeHome = path.join(scratchDir, "home"); - await fsp.rm(smokeHome, { recursive: true, force: true }); + await removePath(smokeHome); await fsp.mkdir(smokeHome, { recursive: true }); await run(outputPath, ["status", "--json"], { cwd: repoRoot, @@ -116,8 +72,8 @@ if (args.has("smoke")) { await createArchive({ archiveFormat, archivePath, - binaryName, - binaryDir: path.dirname(outputPath), + targetParentDir: path.dirname(path.dirname(outputPath)), + targetName: path.basename(path.dirname(outputPath)), }); const archiveDigest = await sha256(archivePath); @@ -127,9 +83,121 @@ await fsp.writeFile( "utf8", ); -process.stdout.write(`Built SEA executable: ${outputPath}\n`); -process.stdout.write(`Built SEA archive: ${archivePath}\n`); -process.stdout.write(`Built SEA checksum: ${checksumPath}\n`); +process.stdout.write(`Built SEA launcher: ${outputPath}\n`); +process.stdout.write(`Built app payload: ${appPayloadPath}\n`); +process.stdout.write(`Built release archive: ${archivePath}\n`); +process.stdout.write(`Built release checksum: ${checksumPath}\n`); + +async function buildLauncher(outputFile, mainFile, configFile) { + const config = { + main: mainFile, + output: outputFile, + disableExperimentalSEAWarning: true, + }; + + await fsp.writeFile( + configFile, + `${JSON.stringify(config, null, 2)}\n`, + "utf8", + ); + await run(process.execPath, ["--build-sea", configFile], { + cwd: repoRoot, + }); +} + +async function writeLauncher(outputFile) { + const launcher = [ + "const fs = require('node:fs');", + "const path = require('node:path');", + "const { createRequire } = require('node:module');", + "", + "(async () => {", + " const execPath = fs.realpathSync(process.execPath);", + " const appRoot = process.env.VANA_APP_ROOT || path.join(path.dirname(execPath), 'app');", + " const appEntryPath = path.join(appRoot, 'sea-entry.cjs');", + "", + " if (!fs.existsSync(appEntryPath)) {", + " console.error(`Vana app payload was not found at ${appEntryPath}. Reinstall vana or repair the installation.`);", + " process.exitCode = 1;", + " return;", + " }", + "", + " const appRequire = createRequire(appEntryPath);", + " const { runCli } = appRequire(appEntryPath);", + " const exitCode = await runCli(process.argv);", + " if (typeof exitCode === 'number') {", + " process.exitCode = exitCode;", + " }", + "})().catch((error) => {", + " console.error(error instanceof Error ? (error.stack || error.message) : String(error));", + " process.exitCode = 1;", + "});", + "", + ].join("\n"); + + await fsp.writeFile(outputFile, launcher, "utf8"); +} + +async function stageAppPayload(outputDir) { + await removePath(outputDir); + await fsp.mkdir(outputDir, { recursive: true }); + + await fsp.cp(path.join(repoRoot, "dist"), path.join(outputDir, "dist"), { + recursive: true, + force: true, + }); + + const rootPackage = JSON.parse( + await fsp.readFile(path.join(repoRoot, "package.json"), "utf8"), + ); + const appPackage = { + name: "@opendatalabs/connect-app", + private: true, + type: "module", + dependencies: rootPackage.dependencies, + }; + await fsp.writeFile( + path.join(outputDir, "package.json"), + `${JSON.stringify(appPackage, null, 2)}\n`, + "utf8", + ); + + await run(getNpmCommand(), ["install", "--omit=dev", "--ignore-scripts"], { + cwd: outputDir, + env: { + ...process.env, + HUSKY: "0", + npm_config_fund: "false", + npm_config_audit: "false", + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1", + }, + }); + + const appEntryPath = path.join(outputDir, "sea-entry.cjs"); + await fsp.writeFile( + appEntryPath, + [ + "const path = require('node:path');", + "const { pathToFileURL } = require('node:url');", + "", + "exports.runCli = async function runCli(argv) {", + " const cliMainPath = path.join(__dirname, 'dist', 'cli', 'main.js');", + " const { runCli } = await import(pathToFileURL(cliMainPath).href);", + " return runCli(argv);", + "};", + "", + ].join("\n"), + "utf8", + ); +} + +function getNpmCommand() { + return process.platform === "win32" ? "npm.cmd" : "npm"; +} + +async function removePath(targetPath) { + await fsp.rm(targetPath, { recursive: true, force: true }); +} async function assertExists(filePath, message) { try { @@ -165,11 +233,11 @@ async function sha256(filePath) { async function createArchive({ archiveFormat, archivePath, - binaryName, - binaryDir, + targetParentDir, + targetName, }) { if (archiveFormat === "tar.gz") { - await run("tar", ["-czf", archivePath, "-C", binaryDir, binaryName], { + await run("tar", ["-czf", archivePath, "-C", targetParentDir, targetName], { cwd: repoRoot, }); return; @@ -183,10 +251,10 @@ async function createArchive({ "-NoLogo", "-NoProfile", "-Command", - `Compress-Archive -Path '${path.join(binaryDir, binaryName)}' -DestinationPath '${archivePath}' -Force`, + `Compress-Archive -Path '${path.join(targetParentDir, targetName)}' -DestinationPath '${archivePath}' -Force`, ], { - cwd: repoRoot, + cwd: targetParentDir, }, ); return; diff --git a/scripts/clean-build.mjs b/scripts/clean-build.mjs new file mode 100644 index 00000000..a68df329 --- /dev/null +++ b/scripts/clean-build.mjs @@ -0,0 +1,11 @@ +import { promises as fsp } from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const repoRoot = path.resolve(__dirname, ".."); + +await Promise.all([ + fsp.rm(path.join(repoRoot, "dist"), { recursive: true, force: true }), + fsp.rm(path.join(repoRoot, "tsconfig.tsbuildinfo"), { force: true }), +]); diff --git a/src/core/index.ts b/src/core/index.ts index 446838d2..7043d0eb 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -9,7 +9,6 @@ export { } from "./constants.js"; export { getDataConnectHome, - getRunnerDir, getConnectorCacheDir, getBrowserProfilesDir, getCliStatePath, diff --git a/src/core/paths.ts b/src/core/paths.ts index 0d38909c..d0a3b7a3 100644 --- a/src/core/paths.ts +++ b/src/core/paths.ts @@ -5,10 +5,6 @@ export function getDataConnectHome(): string { return path.join(os.homedir(), ".dataconnect"); } -export function getRunnerDir(): string { - return path.join(getDataConnectHome(), "playwright-runner"); -} - export function getConnectorCacheDir(): string { return path.join(getDataConnectHome(), "connectors"); } diff --git a/src/runtime/bundled-assets.ts b/src/runtime/bundled-assets.ts deleted file mode 100644 index c5824f69..00000000 --- a/src/runtime/bundled-assets.ts +++ /dev/null @@ -1,59 +0,0 @@ -import fs from "node:fs"; -import fsp from "node:fs/promises"; -import path from "node:path"; -import { fileURLToPath } from "node:url"; -import * as sea from "node:sea"; - -import { ensureParentDir, getDataConnectHome } from "../core/index.js"; - -const RUNTIME_ASSET_KEYS = [ - "runtime-assets/playwright-runner/index.cjs", - "runtime-assets/playwright-runner/package.json", - "runtime-assets/playwright-runner/package-lock.json", - "runtime-assets/playwright-runner/entitlements.plist", - "runtime-assets/playwright-runner/scripts/build.js", -] as const; - -export interface BundledRuntimePaths { - playwrightRunnerDir: string; -} - -export async function getBundledRuntimePaths(): Promise { - if (!sea.isSea()) { - return { - playwrightRunnerDir: fileSystemRuntimeAssetPath("playwright-runner"), - }; - } - - const extractionRoot = path.join( - getDataConnectHome(), - "bundled-runtime-assets", - "sea", - ); - - for (const assetKey of RUNTIME_ASSET_KEYS) { - const relativePath = assetKey.replace(/^runtime-assets\//, ""); - const targetPath = path.join(extractionRoot, relativePath); - if (fs.existsSync(targetPath)) { - continue; - } - - const raw = sea.getRawAsset(assetKey); - if (!raw) { - throw new Error(`Missing embedded SEA asset: ${assetKey}`); - } - - await ensureParentDir(targetPath); - await fsp.writeFile(targetPath, Buffer.from(raw)); - } - - return { - playwrightRunnerDir: path.join(extractionRoot, "playwright-runner"), - }; -} - -function fileSystemRuntimeAssetPath(relativePath: string): string { - return fileURLToPath( - new URL(`../../runtime-assets/${relativePath}`, import.meta.url), - ); -} diff --git a/src/runtime/index.ts b/src/runtime/index.ts index 2c44e614..f0047247 100644 --- a/src/runtime/index.ts +++ b/src/runtime/index.ts @@ -12,5 +12,4 @@ export { type RunConnectorOptions, type RuntimeInstallResult, } from "./managed-playwright.js"; -export { startChildProcessConnectorRun } from "./playwright/index.js"; export { findDataConnectorsDir } from "./repo-paths.js"; diff --git a/src/runtime/managed-playwright.ts b/src/runtime/managed-playwright.ts index 19657ab6..852c8f8a 100644 --- a/src/runtime/managed-playwright.ts +++ b/src/runtime/managed-playwright.ts @@ -1,7 +1,5 @@ -import fs from "node:fs"; import fsp from "node:fs/promises"; import path from "node:path"; -import { spawn } from "node:child_process"; import { createRequire } from "node:module"; import { @@ -10,17 +8,13 @@ import { getConnectorCacheDir, getDataConnectHome, getLogsDir, - getRunnerDir, getTimestampedLogPath, } from "../core/index.js"; import type { CliEvent, RuntimeState } from "../core/cli-types.js"; import { fetchConnectorToCache } from "../connectors/registry.js"; -import { getBundledRuntimePaths } from "./bundled-assets.js"; -import type { ConnectorRunHandle } from "./core/index.js"; import { getBrowserCacheDir, resolveBrowserPath, - startChildProcessConnectorRun, startInProcessConnectorRun, } from "./playwright/index.js"; import { findDataConnectorsDir } from "./repo-paths.js"; @@ -52,25 +46,15 @@ export interface NeedInputEvent { } export class ManagedPlaywrightRuntime { - get runnerDir(): string { - return getRunnerDir(); - } - get runtimePath(): string | null { return getResolvedRuntimePath(); } get state(): RuntimeState { - if (process.env.VANA_CONNECT_CHILD_PROCESS_RUNNER) { - return fs.existsSync(path.join(this.runnerDir, "index.cjs")) - ? "installed" - : "missing"; - } - return this.runtimePath ? "installed" : "missing"; } - async ensureInstalled(autoApprove: boolean): Promise { + async ensureInstalled(_autoApprove: boolean): Promise { const runtime = this.state; if (runtime === "installed") { return { runtime, runtimePath: this.runtimePath }; @@ -84,15 +68,7 @@ export class ManagedPlaywrightRuntime { await fsp.mkdir(getBrowserProfilesDir(), { recursive: true }); await fsp.mkdir(getBrowserCacheDir(), { recursive: true }); - if (process.env.VANA_CONNECT_CHILD_PROCESS_RUNNER) { - await ensureLegacyRunnerInstalled({ - autoApprove, - logPath, - runnerDir: this.runnerDir, - }); - } else { - await installChromium(logPath); - } + await installChromium(logPath); return { runtime: this.state, @@ -143,17 +119,10 @@ export class ManagedPlaywrightRuntime { ): AsyncGenerator { await fsp.mkdir(getLogsDir(), { recursive: true }); const logPath = getTimestampedLogPath(`run-${options.source}`); - const handle: ConnectorRunHandle = process.env - .VANA_CONNECT_CHILD_PROCESS_RUNNER - ? startChildProcessConnectorRun({ - request: options, - runnerDir: this.runnerDir, - logPath, - }) - : startInProcessConnectorRun({ - request: options, - logPath, - }); + const handle = startInProcessConnectorRun({ + request: options, + logPath, + }); for await (const event of handle.events()) { yield event as CliEvent; @@ -162,105 +131,66 @@ export class ManagedPlaywrightRuntime { } async function installChromium(logPath: string): Promise { - const playwrightCliPath = path.join( - path.dirname(require.resolve("playwright/package.json")), - "cli.js", - ); const browserCacheDir = getBrowserCacheDir(); - try { - await spawnForExit( - getNodeCommand(), - [playwrightCliPath, "install", "chromium"], - { - cwd: getDataConnectHome(), - logPath, - env: { - ...process.env, - PLAYWRIGHT_BROWSERS_PATH: browserCacheDir, - }, - }, - ); - } catch { - await spawnForExit( - getNodeCommand(), - [playwrightCliPath, "install", "chromium"], - { - cwd: getDataConnectHome(), - logPath, - env: { - ...process.env, - PLAYWRIGHT_BROWSERS_PATH: browserCacheDir, - PLAYWRIGHT_SKIP_BROWSER_GC: "1", - }, - }, - ); - } -} - -async function ensureLegacyRunnerInstalled({ - autoApprove, - logPath, - runnerDir, -}: { - autoApprove: boolean; - logPath: string; - runnerDir: string; -}): Promise { - const bundledRuntime = await getBundledRuntimePaths(); - - await fsp.rm(runnerDir, { recursive: true, force: true }); - await fsp.cp(bundledRuntime.playwrightRunnerDir, runnerDir, { - recursive: true, - }); + const previousBrowserPath = process.env.PLAYWRIGHT_BROWSERS_PATH; + const previousSkipGc = process.env.PLAYWRIGHT_SKIP_BROWSER_GC; - await spawnForExit("npm", ["install", "--ignore-scripts"], { - cwd: runnerDir, - logPath, - env: { - ...process.env, - CI: autoApprove ? "1" : process.env.CI, - }, - }); - - await installChromium(logPath); -} - -interface SpawnOptions { - cwd: string; - logPath: string; - env?: NodeJS.ProcessEnv; -} - -async function spawnForExit( - command: string, - args: string[], - options: SpawnOptions, -): Promise { - await ensureParentDir(options.logPath); - const logStream = fs.createWriteStream(options.logPath); + try { + process.env.PLAYWRIGHT_BROWSERS_PATH = browserCacheDir; + process.env.PLAYWRIGHT_SKIP_BROWSER_GC = "1"; + + const { registry } = require( + require.resolve("playwright-core/lib/server/registry/index", { + paths: [path.dirname(require.resolve("playwright/package.json"))], + }), + ) as { + registry: { + findExecutable(name: string): { + name: string; + installType: string; + }; + install( + executables: Array, + options?: { force?: boolean }, + ): Promise; + }; + }; - await new Promise((resolve, reject) => { - const child = spawn(command, args, { - cwd: options.cwd, - env: options.env, - stdio: ["ignore", "pipe", "pipe"], - }); + const executables: Array = []; + if (process.platform === "win32") { + executables.push(registry.findExecutable("winldd")); + } + executables.push(registry.findExecutable("chromium")); - child.stdout.on("data", (chunk) => logStream.write(chunk)); - child.stderr.on("data", (chunk) => logStream.write(chunk)); - child.on("close", (code) => { - logStream.end(); - if (code === 0) { - resolve(); - return; - } - reject(new Error(`Command failed with exit code ${code}.`)); - }); - }); -} + await ensureParentDir(logPath); + await fsp.writeFile( + logPath, + `Installing Chromium into ${browserCacheDir}\n`, + "utf8", + ); + await registry.install(executables); + await fsp.appendFile(logPath, "Chromium installation complete.\n", "utf8"); + } catch (error) { + await ensureParentDir(logPath); + await fsp.appendFile( + logPath, + `${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`, + "utf8", + ); + throw error; + } finally { + if (previousBrowserPath === undefined) { + delete process.env.PLAYWRIGHT_BROWSERS_PATH; + } else { + process.env.PLAYWRIGHT_BROWSERS_PATH = previousBrowserPath; + } -function getNodeCommand(): string { - return process.env.VANA_NODE_BIN || process.execPath; + if (previousSkipGc === undefined) { + delete process.env.PLAYWRIGHT_SKIP_BROWSER_GC; + } else { + process.env.PLAYWRIGHT_SKIP_BROWSER_GC = previousSkipGc; + } + } } function getResolvedRuntimePath(): string | null { diff --git a/src/runtime/playwright/browser.ts b/src/runtime/playwright/browser.ts index 897289ef..47219dbe 100644 --- a/src/runtime/playwright/browser.ts +++ b/src/runtime/playwright/browser.ts @@ -50,17 +50,7 @@ export function getBrowserCacheDir(): string { } const home = process.env.HOME || process.env.USERPROFILE || ""; - const candidates = [ - path.join(home, ".dataconnect", "browsers"), - path.join( - home, - ".dataconnect", - "playwright-runner", - "node_modules", - "playwright-core", - ".local-browsers", - ), - ]; + const candidates = [path.join(home, ".dataconnect", "browsers")]; for (const dir of candidates) { if (fs.existsSync(dir)) { diff --git a/src/runtime/playwright/child-process-run.ts b/src/runtime/playwright/child-process-run.ts deleted file mode 100644 index 4b9032b5..00000000 --- a/src/runtime/playwright/child-process-run.ts +++ /dev/null @@ -1,356 +0,0 @@ -import fs from "node:fs"; -import fsp from "node:fs/promises"; -import { spawn } from "node:child_process"; -import os from "node:os"; -import path from "node:path"; -import * as sea from "node:sea"; - -import { - ensureParentDir, - getLastResultPath, - getRunnerDir, -} from "../../core/index.js"; -import type { - ConnectorRunHandle, - ConnectorRunRequest, - RuntimeEvent, - RuntimeInputRequest, -} from "../core/index.js"; - -export function startChildProcessConnectorRun({ - request, - runnerDir, - logPath, -}: { - request: ConnectorRunRequest; - runnerDir?: string; - logPath: string; -}): ConnectorRunHandle { - const activeRunnerDir = runnerDir ?? getRunnerDir(); - const child = spawn(getNodeCommand(), ["index.cjs"], { - cwd: activeRunnerDir, - stdio: ["pipe", "pipe", "pipe"], - }); - const logStream = fs.createWriteStream(logPath); - const runId = `${path.basename(request.connectorPath, path.extname(request.connectorPath))}-${Date.now()}`; - const pendingInputPath = path.join( - os.homedir(), - ".dataconnect", - `pending-input-${runId}.json`, - ); - const responseInputPath = path.join( - os.homedir(), - ".dataconnect", - `input-response-${runId}.json`, - ); - let stopRequested = false; - - if (request.signal) { - request.signal.addEventListener("abort", () => { - child.kill("SIGTERM"); - }); - } - - async function* events(): AsyncGenerator { - let stdoutBuffer = ""; - let settled = false; - let started = false; - let terminalEventSeen = false; - const queue: RuntimeEvent[] = []; - let resolveQueue: (() => void) | null = null; - - const flushQueue = () => { - resolveQueue?.(); - resolveQueue = null; - }; - - const pushEvent = (event: RuntimeEvent) => { - queue.push(event); - flushQueue(); - }; - - child.stderr.on("data", (chunk) => { - logStream.write(chunk); - }); - - child.stdout.on("data", async (chunk: Buffer) => { - logStream.write(chunk); - stdoutBuffer += chunk.toString(); - const lines = stdoutBuffer.split("\n"); - stdoutBuffer = lines.pop() ?? ""; - - for (const line of lines) { - if (!line.trim()) { - continue; - } - - const parsed = JSON.parse(line) as Record; - if (parsed.type === "ready") { - started = true; - writeChildCommand(child, { - type: "run", - runId, - connectorPath: path.resolve(request.connectorPath), - url: "about:blank", - headless: true, - allowHeaded: false, - }); - continue; - } - - if (parsed.type === "need-input") { - const schema = parsed.schema as - | { properties?: Record } - | undefined; - const inputRequest: RuntimeInputRequest = { - message: - typeof parsed.message === "string" - ? parsed.message - : "Additional input is required.", - schema, - fields: Object.keys( - (schema?.properties ?? {}) as Record, - ), - responseInputPath, - }; - - if (request.noInput || !request.onNeedInput) { - await writePendingInput({ - pendingInputPath, - responseInputPath, - message: inputRequest.message ?? "Additional input is required.", - schema: inputRequest.schema, - }); - stopRequested = true; - child.kill("SIGTERM"); - pushEvent({ - type: "needs-input", - source: request.source, - message: inputRequest.message ?? "Additional input is required.", - fields: inputRequest.fields, - schema: inputRequest.schema, - responseInputPath, - logPath, - }); - continue; - } - - const input = await request.onNeedInput(inputRequest); - await ensureParentDir(responseInputPath); - await fsp.writeFile( - responseInputPath, - `${JSON.stringify(input)}\n`, - "utf8", - ); - await fsp.rm(pendingInputPath, { force: true }); - continue; - } - - if (parsed.type === "result") { - terminalEventSeen = true; - const resultPath = getLastResultPath(); - await ensureParentDir(resultPath); - await fsp.writeFile( - resultPath, - `${JSON.stringify(parsed.data ?? null, null, 2)}\n`, - "utf8", - ); - pushEvent({ - type: "collection-complete", - source: request.source, - resultPath, - logPath, - }); - continue; - } - - if (parsed.type === "legacy-auth") { - terminalEventSeen = true; - pushEvent({ - type: "legacy-auth", - source: request.source, - message: - typeof parsed.message === "string" - ? parsed.message - : "This connector requires legacy headed authentication.", - logPath, - }); - continue; - } - - if (parsed.type === "error") { - terminalEventSeen = true; - if (isLegacyAuthMessage(parsed.message)) { - pushEvent({ - type: "legacy-auth", - source: request.source, - message: - "This connector uses legacy authentication (showBrowser/promptUser) which is not supported in batch mode. Either use a migrated connector that supports requestInput, or establish a session manually first.", - logPath, - }); - continue; - } - pushEvent({ - type: "runtime-error", - source: request.source, - message: - typeof parsed.message === "string" - ? parsed.message - : "Connector run failed.", - logPath, - }); - continue; - } - - if ( - parsed.type === "request-input" && - typeof parsed.requestId === "string" && - parsed.payload && - typeof parsed.payload === "object" - ) { - const payload = parsed.payload as { - message?: string; - schema?: { properties?: Record }; - }; - const inputRequest: RuntimeInputRequest = { - message: payload.message ?? "Additional input is required.", - schema: payload.schema, - fields: Object.keys(payload.schema?.properties ?? {}), - responseInputPath, - }; - - if (request.noInput || !request.onNeedInput) { - await writePendingInput({ - pendingInputPath, - responseInputPath, - message: inputRequest.message ?? "Additional input is required.", - schema: inputRequest.schema, - }); - stopRequested = true; - pushEvent({ - type: "needs-input", - source: request.source, - message: inputRequest.message ?? "Additional input is required.", - fields: inputRequest.fields, - schema: inputRequest.schema, - responseInputPath, - logPath, - }); - child.kill("SIGTERM"); - continue; - } - - const input = await request.onNeedInput(inputRequest); - await ensureParentDir(responseInputPath); - await fsp.writeFile( - responseInputPath, - `${JSON.stringify(input)}\n`, - "utf8", - ); - writeChildCommand(child, { - type: "input-response", - runId, - requestId: parsed.requestId, - data: input, - }); - } - } - }); - - child.on("close", (code) => { - settled = true; - logStream.end(); - if (!terminalEventSeen && !stopRequested && started && code !== 0) { - pushEvent({ - type: "runtime-error", - source: request.source, - message: "Connector run failed.", - logPath, - }); - } - flushQueue(); - }); - - pushEvent({ - type: "run-started", - source: request.source, - logPath, - }); - - while (!settled || queue.length > 0) { - if (queue.length === 0) { - await new Promise((resolve) => { - resolveQueue = resolve; - }); - continue; - } - yield queue.shift() as RuntimeEvent; - } - } - - return { - source: request.source, - logPath, - events, - stop() { - stopRequested = true; - child.kill("SIGTERM"); - }, - }; -} - -function getNodeCommand(): string { - if (!sea.isSea()) { - return process.execPath; - } - - return process.env.VANA_NODE_BIN || "node"; -} - -function writeChildCommand( - child: ReturnType, - payload: Record, -): void { - if (!child.stdin) { - throw new Error("Runner stdin is not available."); - } - - child.stdin.write(`${JSON.stringify(payload)}\n`); -} - -function isLegacyAuthMessage(message: unknown): boolean { - return ( - typeof message === "string" && - (message.includes("showBrowser") || message.includes("promptUser")) - ); -} - -async function writePendingInput({ - pendingInputPath, - responseInputPath, - message, - schema, -}: { - pendingInputPath: string; - responseInputPath: string; - message: string; - schema?: { - properties?: Record; - }; -}): Promise { - await ensureParentDir(pendingInputPath); - await fsp.writeFile( - pendingInputPath, - `${JSON.stringify( - { - message, - schema: schema ?? {}, - responseInputPath, - timestamp: new Date().toISOString(), - }, - null, - 2, - )}\n`, - "utf8", - ); -} diff --git a/src/runtime/playwright/index.ts b/src/runtime/playwright/index.ts index 01a0c60e..570d8de1 100644 --- a/src/runtime/playwright/index.ts +++ b/src/runtime/playwright/index.ts @@ -1,4 +1,3 @@ -export { startChildProcessConnectorRun } from "./child-process-run.js"; export { startInProcessConnectorRun } from "./in-process-run.js"; export { getBrowserCacheDir, diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index b412141e..3f2d809d 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -22,15 +22,15 @@ vi.mock("../../src/runtime/index.js", () => ({ return runtimeState; } - get runnerDir() { - return "/tmp/.dataconnect/playwright-runner"; + get runtimePath() { + return runtimeState === "installed" ? "/tmp/playwright/chrome" : null; } async ensureInstalled() { runtimeState = "installed"; return { runtime: "installed", - runtimePath: "/tmp/.dataconnect/playwright-runner", + runtimePath: "/tmp/playwright/chrome", logPath: "/tmp/logs/setup.log", }; } diff --git a/test/runtime/in-process-run.test.ts b/test/runtime/in-process-run.test.ts new file mode 100644 index 00000000..51936571 --- /dev/null +++ b/test/runtime/in-process-run.test.ts @@ -0,0 +1,209 @@ +import fs from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; + +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; + +const launchPersistentContext = vi.fn(); +const resolveBrowserPath = vi.fn(() => "/tmp/chrome"); +const importChromeCookies = vi.fn(); +const isSystemChrome = vi.fn(() => false); +const getDefaultUserDataDir = vi.fn((slug: string) => + path.join(os.tmpdir(), ".dataconnect-browser-profiles", slug), +); + +vi.mock("../../src/runtime/playwright/browser.js", () => ({ + launchPersistentContext, + resolveBrowserPath, + importChromeCookies, + isSystemChrome, + getDefaultUserDataDir, +})); + +type FakePage = { + goto: ReturnType; + evaluate: ReturnType; + screenshot: ReturnType; + on: ReturnType; +}; + +type FakeContext = { + pages: ReturnType; + newPage: ReturnType; + close: ReturnType; + cookies: ReturnType; + browser: ReturnType; +}; + +function createFakeRuntime() { + const disconnectedHandlers: Array<() => void> = []; + const page: FakePage = { + goto: vi.fn(async () => undefined), + evaluate: vi.fn(async () => null), + screenshot: vi.fn(async () => Buffer.from("test")), + on: vi.fn(), + }; + + const context: FakeContext = { + pages: vi.fn(() => [page]), + newPage: vi.fn(async () => page), + close: vi.fn(async () => undefined), + cookies: vi.fn(async () => []), + browser: vi.fn(() => ({ + on: (_event: string, handler: () => void) => { + disconnectedHandlers.push(handler); + }, + })), + }; + + launchPersistentContext.mockResolvedValue(context); + return { page, context, disconnectedHandlers }; +} + +async function writeConnector(contents: string): Promise { + const dir = await fs.mkdtemp(path.join(os.tmpdir(), "vana-connect-test-")); + const connectorPath = path.join(dir, "test-playwright.js"); + await fs.writeFile(connectorPath, contents, "utf8"); + return connectorPath; +} + +describe("startInProcessConnectorRun", () => { + beforeEach(() => { + launchPersistentContext.mockReset(); + resolveBrowserPath.mockClear(); + importChromeCookies.mockClear(); + isSystemChrome.mockClear(); + getDefaultUserDataDir.mockClear(); + }); + + afterEach(() => { + vi.resetModules(); + vi.clearAllMocks(); + }); + + it("emits needs-input for requestInput in no-input mode", async () => { + createFakeRuntime(); + const connectorPath = await writeConnector(` +(async () => { + await page.requestInput({ + message: "Log in", + schema: { + type: "object", + properties: { + username: { type: "string" }, + password: { type: "string", format: "password" } + } + } + }); +})(); +`); + + const { startInProcessConnectorRun } = + await import("../../src/runtime/playwright/in-process-run.js"); + + const handle = startInProcessConnectorRun({ + request: { + connectorPath, + source: "github", + noInput: true, + }, + logPath: path.join(os.tmpdir(), "vana-connect-needs-input.log"), + }); + + const events = []; + for await (const event of handle.events()) { + events.push(event); + } + + expect(events).toEqual( + expect.arrayContaining([ + expect.objectContaining({ type: "run-started", source: "github" }), + expect.objectContaining({ + type: "needs-input", + source: "github", + fields: ["username", "password"], + }), + ]), + ); + }); + + it("emits legacy-auth for promptUser connectors", async () => { + createFakeRuntime(); + const connectorPath = await writeConnector(` +(async () => { + await page.promptUser("Please log in", async () => false); +})(); +`); + + const { startInProcessConnectorRun } = + await import("../../src/runtime/playwright/in-process-run.js"); + + const handle = startInProcessConnectorRun({ + request: { + connectorPath, + source: "spotify", + noInput: true, + }, + logPath: path.join(os.tmpdir(), "vana-connect-legacy-auth.log"), + }); + + const events = []; + for await (const event of handle.events()) { + events.push(event); + } + + expect(events).toEqual( + expect.arrayContaining([ + expect.objectContaining({ type: "run-started", source: "spotify" }), + expect.objectContaining({ type: "legacy-auth", source: "spotify" }), + ]), + ); + }); + + it("writes a result and emits collection-complete", async () => { + createFakeRuntime(); + const connectorPath = await writeConnector(` +(async () => { + await page.setData("status", "Collecting"); + return { + profile: { username: "tester" }, + repositories: [] + }; +})(); +`); + + const { startInProcessConnectorRun } = + await import("../../src/runtime/playwright/in-process-run.js"); + + const handle = startInProcessConnectorRun({ + request: { + connectorPath, + source: "github", + noInput: true, + }, + logPath: path.join(os.tmpdir(), "vana-connect-collection.log"), + }); + + const events = []; + for await (const event of handle.events()) { + events.push(event); + } + + const completion = events.find( + (event) => event.type === "collection-complete", + ); + expect(completion).toEqual( + expect.objectContaining({ + type: "collection-complete", + source: "github", + }), + ); + + const resultPath = (completion as { resultPath: string }).resultPath; + const result = JSON.parse(await fs.readFile(resultPath, "utf8")); + expect(result).toEqual({ + profile: { username: "tester" }, + repositories: [], + }); + }); +}); From 5064e997d83b1e5d36e38b73e7890b4ced57152d Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 17:16:53 -0500 Subject: [PATCH 013/249] test(ci): add windows installer smoke --- .github/workflows/ci.yml | 15 ++++++++++++ install/install.ps1 | 39 ++++++++++++++++++++++++++++---- package.json | 1 + scripts/test-install-windows.ps1 | 35 ++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 scripts/test-install-windows.ps1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 32f0938d..d7dfd5cc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,3 +45,18 @@ jobs: - run: pnpm build - run: pnpm build:sea:smoke - run: pnpm test:install:unix + + sea-smoke-windows: + runs-on: windows-2022 + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm clean + - run: pnpm build + - run: pnpm build:sea -- --artifact-name vana-win32-x64 --platform win32 --arch x64 --archive-format zip --binary-name vana.exe + - run: pnpm test:install:windows diff --git a/install/install.ps1 b/install/install.ps1 index 6b9e8718..9e733e4b 100644 --- a/install/install.ps1 +++ b/install/install.ps1 @@ -49,9 +49,17 @@ if (-not $Version) { $AssetBase = "vana-win32-$TargetArch" $ArchiveName = "$AssetBase.zip" $ChecksumName = "$ArchiveName.sha256" -$DownloadBase = "$ReleaseBaseUrl/$Version" -$ArchiveUrl = "$DownloadBase/$ArchiveName" -$ChecksumUrl = "$DownloadBase/$ChecksumName" +$UseRemoteReleaseBase = $ReleaseBaseUrl -match '^(https?|file)://' +if ($UseRemoteReleaseBase) { + $DownloadBase = "$ReleaseBaseUrl/$Version" + $ArchiveUrl = "$DownloadBase/$ArchiveName" + $ChecksumUrl = "$DownloadBase/$ChecksumName" +} +else { + $DownloadBase = Join-Path $ReleaseBaseUrl $Version + $ArchiveUrl = Join-Path $DownloadBase $ArchiveName + $ChecksumUrl = Join-Path $DownloadBase $ChecksumName +} $TempDir = Join-Path ([System.IO.Path]::GetTempPath()) ("vana-install-" + [System.Guid]::NewGuid().ToString("N")) New-Item -ItemType Directory -Path $TempDir | Out-Null @@ -61,8 +69,8 @@ try { $ArchivePath = Join-Path $TempDir $ArchiveName $ChecksumPath = Join-Path $TempDir $ChecksumName - Invoke-WebRequest -Uri $ArchiveUrl -OutFile $ArchivePath - Invoke-WebRequest -Uri $ChecksumUrl -OutFile $ChecksumPath + Copy-VanaAsset -Source $ArchiveUrl -Destination $ArchivePath + Copy-VanaAsset -Source $ChecksumUrl -Destination $ChecksumPath $Expected = (Get-Content $ChecksumPath).Split(" ", [System.StringSplitOptions]::RemoveEmptyEntries)[0].Trim() $Actual = (Get-FileHash -Path $ArchivePath -Algorithm SHA256).Hash.ToLowerInvariant() @@ -122,3 +130,24 @@ finally { Remove-Item $TempDir -Recurse -Force } } + +function Copy-VanaAsset { + param( + [Parameter(Mandatory = $true)] + [string]$Source, + [Parameter(Mandatory = $true)] + [string]$Destination + ) + + if ($Source -match '^(https?)://') { + Invoke-WebRequest -Uri $Source -OutFile $Destination + return + } + + $ResolvedPath = $Source + if ($Source.StartsWith('file://')) { + $ResolvedPath = ([System.Uri]$Source).LocalPath + } + + Copy-Item -Path $ResolvedPath -Destination $Destination -Force +} diff --git a/package.json b/package.json index ef22018f..94223abc 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "cli": "node dist/cli/bin.js", "skills:sync": "node scripts/sync-skills.js", "test:install:unix": "sh ./scripts/test-install-unix.sh", + "test:install:windows": "pwsh -File ./scripts/test-install-windows.ps1", "test": "vitest run", "test:watch": "vitest", "test:e2e": "vitest run --config test/e2e/vitest.config.ts", diff --git a/scripts/test-install-windows.ps1 b/scripts/test-install-windows.ps1 new file mode 100644 index 00000000..97a4801b --- /dev/null +++ b/scripts/test-install-windows.ps1 @@ -0,0 +1,35 @@ +$ErrorActionPreference = "Stop" + +$RootDir = Split-Path -Parent $PSScriptRoot +$ArtifactDir = Join-Path $RootDir "artifacts\sea" +$WorkDir = Join-Path $RootDir ".sea-work\test-install-windows" +$ReleaseDir = Join-Path $WorkDir "local-release\test-release" +$HomeDir = Join-Path $WorkDir "home" + +New-Item -ItemType Directory -Force -Path $ReleaseDir | Out-Null +New-Item -ItemType Directory -Force -Path $HomeDir | Out-Null + +Copy-Item -Path (Join-Path $ArtifactDir "vana-win32-x64.zip") -Destination (Join-Path $ReleaseDir "vana-win32-x64.zip") -Force +Copy-Item -Path (Join-Path $ArtifactDir "vana-win32-x64.zip.sha256") -Destination (Join-Path $ReleaseDir "vana-win32-x64.zip.sha256") -Force + +$BinDir = Join-Path $HomeDir "bin" +$InstallRoot = Join-Path $HomeDir "root" + +$env:VANA_VERSION = "test-release" +$env:VANA_RELEASE_BASE_URL = $WorkDir + "\local-release" +$env:VANA_INSTALL_ROOT = $InstallRoot +$env:VANA_INSTALL_BIN_DIR = $BinDir +$env:HOME = $HomeDir + +try { + & (Join-Path $RootDir "install\install.ps1") + $env:PATH = "$BinDir;$env:PATH" + & (Join-Path $BinDir "vana.cmd") status --json | Out-Null + Write-Host "Windows installer smoke test passed" +} +finally { + Remove-Item Env:VANA_VERSION -ErrorAction SilentlyContinue + Remove-Item Env:VANA_RELEASE_BASE_URL -ErrorAction SilentlyContinue + Remove-Item Env:VANA_INSTALL_ROOT -ErrorAction SilentlyContinue + Remove-Item Env:VANA_INSTALL_BIN_DIR -ErrorAction SilentlyContinue +} From 58c91d3347d3654a966b3960a4e9d0ec4f12b622 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 17:20:17 -0500 Subject: [PATCH 014/249] fix(ci): unblock windows and intel mac builds --- .github/workflows/prerelease.yml | 2 +- .github/workflows/release.yml | 2 +- scripts/build-sea.mjs | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 03c1c196..a509733b 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -23,7 +23,7 @@ jobs: arch: x64 archive_format: tar.gz binary_name: vana - - runner: macos-13 + - runner: macos-15-intel platform: darwin arch: x64 archive_format: tar.gz diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 09db2044..cf912de8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,7 +24,7 @@ jobs: arch: x64 archive_format: tar.gz binary_name: vana - - runner: macos-13 + - runner: macos-15-intel platform: darwin arch: x64 archive_format: tar.gz diff --git a/scripts/build-sea.mjs b/scripts/build-sea.mjs index 779b6c3f..687c94c0 100644 --- a/scripts/build-sea.mjs +++ b/scripts/build-sea.mjs @@ -209,7 +209,10 @@ async function assertExists(filePath, message) { async function run(command, commandArgs, options = {}) { await new Promise((resolve, reject) => { + const useShell = + process.platform === "win32" && /\.(cmd|bat)$/i.test(command); const child = spawn(command, commandArgs, { + shell: useShell, stdio: "inherit", ...options, }); From e3412ff7b43b2896a80dbe08ecac5c4c4093b21a Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 17:24:14 -0500 Subject: [PATCH 015/249] fix(installer): define windows copy helper before use --- install/install.ps1 | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/install/install.ps1 b/install/install.ps1 index 9e733e4b..200a9436 100644 --- a/install/install.ps1 +++ b/install/install.ps1 @@ -64,6 +64,27 @@ else { $TempDir = Join-Path ([System.IO.Path]::GetTempPath()) ("vana-install-" + [System.Guid]::NewGuid().ToString("N")) New-Item -ItemType Directory -Path $TempDir | Out-Null +function Copy-VanaAsset { + param( + [Parameter(Mandatory = $true)] + [string]$Source, + [Parameter(Mandatory = $true)] + [string]$Destination + ) + + if ($Source -match '^(https?)://') { + Invoke-WebRequest -Uri $Source -OutFile $Destination + return + } + + $ResolvedPath = $Source + if ($Source.StartsWith('file://')) { + $ResolvedPath = ([System.Uri]$Source).LocalPath + } + + Copy-Item -Path $ResolvedPath -Destination $Destination -Force +} + try { Write-Host "Installing $AssetBase from $Version" $ArchivePath = Join-Path $TempDir $ArchiveName @@ -130,24 +151,3 @@ finally { Remove-Item $TempDir -Recurse -Force } } - -function Copy-VanaAsset { - param( - [Parameter(Mandatory = $true)] - [string]$Source, - [Parameter(Mandatory = $true)] - [string]$Destination - ) - - if ($Source -match '^(https?)://') { - Invoke-WebRequest -Uri $Source -OutFile $Destination - return - } - - $ResolvedPath = $Source - if ($Source.StartsWith('file://')) { - $ResolvedPath = ([System.Uri]$Source).LocalPath - } - - Copy-Item -Path $ResolvedPath -Destination $Destination -Force -} From 83522c03c0054bb4b150b9a8bdad0406e3c9a865 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 17:37:27 -0500 Subject: [PATCH 016/249] chore(ci): update GitHub actions runtime --- .github/workflows/ci.yml | 18 ++++++++++++------ .github/workflows/prerelease.yml | 12 ++++++++---- .github/workflows/release.yml | 12 ++++++++---- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d7dfd5cc..86dc8081 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,13 +15,15 @@ on: jobs: test: runs-on: ubuntu-latest + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" strategy: matrix: node-version: [20, 22] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} cache: pnpm @@ -33,10 +35,12 @@ jobs: sea-smoke: runs-on: ubuntu-latest + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: node-version: 22 cache: pnpm @@ -48,10 +52,12 @@ jobs: sea-smoke-windows: runs-on: windows-2022 + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: node-version: 22 cache: pnpm diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index a509733b..429d7a1c 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -14,6 +14,8 @@ permissions: jobs: build-sea: + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" strategy: fail-fast: false matrix: @@ -40,9 +42,9 @@ jobs: binary_name: vana.exe runs-on: ${{ matrix.runner }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: node-version: 22 cache: pnpm @@ -61,10 +63,12 @@ jobs: canary: needs: build-sea runs-on: ubuntu-latest + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: node-version: 22 cache: pnpm diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cf912de8..bc270f72 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,6 +15,8 @@ permissions: jobs: build-sea: + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" strategy: fail-fast: false matrix: @@ -41,11 +43,11 @@ jobs: binary_name: vana.exe runs-on: ${{ matrix.runner }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: node-version: 22 cache: pnpm @@ -64,12 +66,14 @@ jobs: release: needs: build-sea runs-on: ubuntu-latest + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: node-version: 22 cache: pnpm From 1d2cf51ea5f577f334e057cfb06b79f0b97eb541 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 17:38:27 -0500 Subject: [PATCH 017/249] chore(ci): normalize workflow action runtime --- .github/workflows/semantic-pull-request.yml | 2 ++ .github/workflows/sync-dataconnect-download-version.yml | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/semantic-pull-request.yml b/.github/workflows/semantic-pull-request.yml index d76187cd..3e34e865 100644 --- a/.github/workflows/semantic-pull-request.yml +++ b/.github/workflows/semantic-pull-request.yml @@ -10,6 +10,8 @@ permissions: jobs: validate: runs-on: ubuntu-latest + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - uses: amannn/action-semantic-pull-request@v5 env: diff --git a/.github/workflows/sync-dataconnect-download-version.yml b/.github/workflows/sync-dataconnect-download-version.yml index 164b3d9b..2a629de7 100644 --- a/.github/workflows/sync-dataconnect-download-version.yml +++ b/.github/workflows/sync-dataconnect-download-version.yml @@ -16,9 +16,11 @@ concurrency: jobs: sync-version: runs-on: ubuntu-latest + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - name: Checkout - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + uses: actions/checkout@v5 - name: Resolve latest DataConnect release tag id: latest From 3e658f007d7f3db5305fe1b1aba7633dec05d401 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 17:45:02 -0500 Subject: [PATCH 018/249] test(cli): cover runtime status path --- test/cli/index.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 3f2d809d..8d37d70e 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -174,6 +174,7 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(JSON.parse(stdout)).toMatchObject({ runtime: "installed", + runtimePath: "/tmp/playwright/chrome", personalServer: "available", personalServerUrl: "http://localhost:8080", sources: [ From 0ba7946ba42006788399eb2c42e5f822a5340c54 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 17:53:13 -0500 Subject: [PATCH 019/249] fix(release): publish built npm package --- .github/workflows/ci.yml | 2 ++ .github/workflows/prerelease.yml | 4 ++++ .github/workflows/release.yml | 2 ++ package.json | 1 + scripts/assert-pack-contents.mjs | 38 ++++++++++++++++++++++++++++++++ 5 files changed, 47 insertions(+) create mode 100644 scripts/assert-pack-contents.mjs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 86dc8081..fb0e8c75 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,6 +47,7 @@ jobs: - run: pnpm install --frozen-lockfile - run: pnpm clean - run: pnpm build + - run: pnpm pack:check - run: pnpm build:sea:smoke - run: pnpm test:install:unix @@ -64,5 +65,6 @@ jobs: - run: pnpm install --frozen-lockfile - run: pnpm clean - run: pnpm build + - run: pnpm pack:check - run: pnpm build:sea -- --artifact-name vana-win32-x64 --platform win32 --arch x64 --archive-format zip --binary-name vana.exe - run: pnpm test:install:windows diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 429d7a1c..99665fb6 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -52,6 +52,7 @@ jobs: - run: pnpm install --frozen-lockfile - run: pnpm clean - run: pnpm build + - run: pnpm pack:check - run: pnpm build:sea -- --artifact-name vana-${{ matrix.platform }}-${{ matrix.arch }} --platform ${{ matrix.platform }} --arch ${{ matrix.arch }} --archive-format ${{ matrix.archive_format }} --binary-name ${{ matrix.binary_name }} - uses: actions/upload-artifact@v4 with: @@ -74,6 +75,9 @@ jobs: cache: pnpm registry-url: https://registry.npmjs.org - run: pnpm install --frozen-lockfile + - run: pnpm clean + - run: pnpm build + - run: pnpm pack:check - name: Publish canary run: | SHORT_SHA=$(git rev-parse --short HEAD) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bc270f72..23767791 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -55,6 +55,7 @@ jobs: - run: pnpm install --frozen-lockfile - run: pnpm clean - run: pnpm build + - run: pnpm pack:check - run: pnpm build:sea -- --artifact-name vana-${{ matrix.platform }}-${{ matrix.arch }} --platform ${{ matrix.platform }} --arch ${{ matrix.arch }} --archive-format ${{ matrix.archive_format }} --binary-name ${{ matrix.binary_name }} - uses: actions/upload-artifact@v4 with: @@ -81,6 +82,7 @@ jobs: - run: pnpm install --frozen-lockfile - run: pnpm clean - run: pnpm build + - run: pnpm pack:check - uses: actions/download-artifact@v4 with: pattern: vana-sea-* diff --git a/package.json b/package.json index 94223abc..d3c86c97 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "build:sea:smoke": "npx -y node@25 ./scripts/build-sea.mjs --smoke", "clean": "node ./scripts/clean-build.mjs", "cli": "node dist/cli/bin.js", + "pack:check": "node ./scripts/assert-pack-contents.mjs", "skills:sync": "node scripts/sync-skills.js", "test:install:unix": "sh ./scripts/test-install-unix.sh", "test:install:windows": "pwsh -File ./scripts/test-install-windows.ps1", diff --git a/scripts/assert-pack-contents.mjs b/scripts/assert-pack-contents.mjs new file mode 100644 index 00000000..faa8cf74 --- /dev/null +++ b/scripts/assert-pack-contents.mjs @@ -0,0 +1,38 @@ +import { execFileSync } from "node:child_process"; + +const requiredPaths = [ + "dist/cli/bin.js", + "dist/cli/index.js", + "dist/runtime/managed-playwright.js", +]; + +const raw = execFileSync("npm", ["pack", "--json", "--dry-run"], { + encoding: "utf8", +}); + +const manifest = JSON.parse(raw); +if (!Array.isArray(manifest) || manifest.length === 0) { + throw new Error("npm pack --json --dry-run returned no manifest data."); +} + +const [packResult] = manifest; +const files = Array.isArray(packResult.files) ? packResult.files : []; +const filePaths = new Set(files.map((file) => file.path)); + +for (const requiredPath of requiredPaths) { + if (!filePaths.has(requiredPath)) { + throw new Error( + `Packed npm tarball is missing required file: ${requiredPath}`, + ); + } +} + +if (files.length < 20) { + throw new Error( + `Packed npm tarball unexpectedly small: ${files.length} files.`, + ); +} + +console.log( + `npm pack validation passed with ${files.length} files and required CLI/runtime entries present.`, +); From 1e1bc0a572ccf035b4b235831cb45dd73e02e708 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 17:55:43 -0500 Subject: [PATCH 020/249] fix(ci): support npm pack check on windows --- scripts/assert-pack-contents.mjs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/assert-pack-contents.mjs b/scripts/assert-pack-contents.mjs index faa8cf74..016d2030 100644 --- a/scripts/assert-pack-contents.mjs +++ b/scripts/assert-pack-contents.mjs @@ -6,7 +6,9 @@ const requiredPaths = [ "dist/runtime/managed-playwright.js", ]; -const raw = execFileSync("npm", ["pack", "--json", "--dry-run"], { +const npmCommand = process.platform === "win32" ? "npm.cmd" : "npm"; + +const raw = execFileSync(npmCommand, ["pack", "--json", "--dry-run"], { encoding: "utf8", }); From ea26c9a468509da3bec911acd9fc5a40629e3b36 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 18:03:47 -0500 Subject: [PATCH 021/249] fix(release): validate sea artifacts in ci --- .github/workflows/ci.yml | 6 +- .github/workflows/prerelease.yml | 5 +- .github/workflows/release.yml | 5 +- docs/EXECUTION-CONTEXT-MEMO.md | 85 +++++++++++++++++++ package.json | 1 + scripts/assert-sea-artifact.mjs | 136 +++++++++++++++++++++++++++++++ 6 files changed, 232 insertions(+), 6 deletions(-) create mode 100644 docs/EXECUTION-CONTEXT-MEMO.md create mode 100644 scripts/assert-sea-artifact.mjs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fb0e8c75..5cb55311 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,13 +42,14 @@ jobs: - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 25 cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm clean - run: pnpm build - run: pnpm pack:check - run: pnpm build:sea:smoke + - run: pnpm sea:check -- --artifact-dir artifacts/sea/vana-linux-x64 --archive artifacts/sea/vana-linux-x64.tar.gz --checksum artifacts/sea/vana-linux-x64.tar.gz.sha256 --platform linux --binary-name vana - run: pnpm test:install:unix sea-smoke-windows: @@ -60,11 +61,12 @@ jobs: - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 25 cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm clean - run: pnpm build - run: pnpm pack:check - run: pnpm build:sea -- --artifact-name vana-win32-x64 --platform win32 --arch x64 --archive-format zip --binary-name vana.exe + - run: pnpm sea:check -- --artifact-dir artifacts/sea/vana-win32-x64 --archive artifacts/sea/vana-win32-x64.zip --checksum artifacts/sea/vana-win32-x64.zip.sha256 --platform win32 --binary-name vana.exe - run: pnpm test:install:windows diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 99665fb6..f2f8816e 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -46,7 +46,7 @@ jobs: - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 25 cache: pnpm registry-url: https://registry.npmjs.org - run: pnpm install --frozen-lockfile @@ -54,6 +54,7 @@ jobs: - run: pnpm build - run: pnpm pack:check - run: pnpm build:sea -- --artifact-name vana-${{ matrix.platform }}-${{ matrix.arch }} --platform ${{ matrix.platform }} --arch ${{ matrix.arch }} --archive-format ${{ matrix.archive_format }} --binary-name ${{ matrix.binary_name }} + - run: pnpm sea:check -- --artifact-dir artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }} --archive artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }} --checksum artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }}.sha256 --platform ${{ matrix.platform }} --binary-name ${{ matrix.binary_name }} - uses: actions/upload-artifact@v4 with: name: vana-sea-${{ matrix.platform }}-${{ matrix.arch }} @@ -71,7 +72,7 @@ jobs: - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 25 cache: pnpm registry-url: https://registry.npmjs.org - run: pnpm install --frozen-lockfile diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 23767791..e6c6e28d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -49,7 +49,7 @@ jobs: - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 25 cache: pnpm registry-url: https://registry.npmjs.org - run: pnpm install --frozen-lockfile @@ -57,6 +57,7 @@ jobs: - run: pnpm build - run: pnpm pack:check - run: pnpm build:sea -- --artifact-name vana-${{ matrix.platform }}-${{ matrix.arch }} --platform ${{ matrix.platform }} --arch ${{ matrix.arch }} --archive-format ${{ matrix.archive_format }} --binary-name ${{ matrix.binary_name }} + - run: pnpm sea:check -- --artifact-dir artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }} --archive artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }} --checksum artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }}.sha256 --platform ${{ matrix.platform }} --binary-name ${{ matrix.binary_name }} - uses: actions/upload-artifact@v4 with: name: vana-sea-${{ matrix.platform }}-${{ matrix.arch }} @@ -76,7 +77,7 @@ jobs: - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 25 cache: pnpm registry-url: https://registry.npmjs.org - run: pnpm install --frozen-lockfile diff --git a/docs/EXECUTION-CONTEXT-MEMO.md b/docs/EXECUTION-CONTEXT-MEMO.md new file mode 100644 index 00000000..3c5a597c --- /dev/null +++ b/docs/EXECUTION-CONTEXT-MEMO.md @@ -0,0 +1,85 @@ +# Execution Context Memo + +This memo captures the important architectural/product context from the `vana-connect` CLI/SDK work, without the low-value build/release churn. + +## Core Product Shape + +The right CLI surface is still: + +- `vana connect ` +- `vana sources` +- `vana status` +- `vana setup` + +This should remain one coherent system for both humans and coding agents, with one command model and mode-based behavior: + +- human-friendly default output +- `--json` +- `--no-input` +- `--yes` + +## Product / Repo Boundaries + +The intended ownership model is: + +- `vana-connect` owns the SDK + CLI + runtime +- `data-connect` should eventually consume the SDK +- the skill should consume the CLI +- `data-connectors` remains the source of truth for connectors, registry, and schemas + +## Runtime Direction + +We intentionally moved away from the old script-era runtime model. + +Active direction: + +- no active `run-connector.cjs` +- no active copied `playwright-runner` +- no active `npm install` during `vana setup` +- in-process Playwright host +- capability-oriented runtime API +- preserve connector compatibility +- preserve headed fallback + +Important API principle: + +- do not leak raw Playwright objects as the public/runtime API surface +- expose explicit runtime capabilities instead + +## Future Seams To Preserve + +The runtime/SDK structure should stay open for: + +- alternate execution backends +- alternate browser/profile strategies +- richer desktop mediation and debugging +- local vs cloud Personal Server targets + +## SEA / Packaging Lesson + +Do not ship a fully bundled SEA blob for Playwright. + +The correct distribution model is: + +- SEA as a launcher +- real on-disk app payload + +This preserves: + +- no user-facing Node/npm prerequisite +- reliable Playwright runtime semantics +- the clean in-process runtime architecture + +## Release / Publish Lesson + +The npm canary workflow must build before publish. + +Add tarball content validation so empty or incomplete publishes cannot silently recur. + +## Recommended Conversation Rewind Point + +If context needs to be reset, rewind to around the clean runtime redesign discussion: + +- “I’m aligned with proceeding toward a clean #3. What choices does that leave that we need to make?” + +That keeps the useful architectural conclusions while discarding most of the later SEA / CI / installer / npm publish troubleshooting noise. diff --git a/package.json b/package.json index d3c86c97..8aae31c7 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "clean": "node ./scripts/clean-build.mjs", "cli": "node dist/cli/bin.js", "pack:check": "node ./scripts/assert-pack-contents.mjs", + "sea:check": "node ./scripts/assert-sea-artifact.mjs", "skills:sync": "node scripts/sync-skills.js", "test:install:unix": "sh ./scripts/test-install-unix.sh", "test:install:windows": "pwsh -File ./scripts/test-install-windows.ps1", diff --git a/scripts/assert-sea-artifact.mjs b/scripts/assert-sea-artifact.mjs new file mode 100644 index 00000000..d61c9fc8 --- /dev/null +++ b/scripts/assert-sea-artifact.mjs @@ -0,0 +1,136 @@ +import { createHash } from "node:crypto"; +import { execFileSync } from "node:child_process"; +import { promises as fsp } from "node:fs"; +import path from "node:path"; + +const args = parseArgs(process.argv.slice(2)); + +const artifactDir = path.resolve(requiredArg(args, "artifact-dir")); +const archivePath = path.resolve(requiredArg(args, "archive")); +const checksumPath = path.resolve(requiredArg(args, "checksum")); +const platform = requiredArg(args, "platform"); +const binaryName = args.get("binary-name") ?? (platform === "win32" ? "vana.exe" : "vana"); + +await assertExists(artifactDir, `Artifact directory was not found: ${artifactDir}`); +await assertExists(archivePath, `Artifact archive was not found: ${archivePath}`); +await assertExists(checksumPath, `Artifact checksum file was not found: ${checksumPath}`); + +const requiredDirectoryEntries = [ + binaryName, + "app/sea-entry.cjs", + "app/package.json", + "app/dist/cli/bin.js", + "app/dist/cli/main.js", + "app/dist/runtime/managed-playwright.js", +]; + +for (const relativePath of requiredDirectoryEntries) { + const candidate = path.join(artifactDir, relativePath); + await assertExists(candidate, `SEA artifact directory is missing required file: ${candidate}`); +} + +const archiveEntries = listArchiveEntries({ archivePath, platform }); +for (const relativePath of requiredDirectoryEntries) { + const expectedSuffix = `/${relativePath.replaceAll("\\", "/")}`; + const hasEntry = archiveEntries.some( + (entry) => entry === relativePath || entry.endsWith(expectedSuffix), + ); + if (!hasEntry) { + throw new Error( + `SEA archive is missing required entry: ${relativePath}\nArchive: ${archivePath}`, + ); + } +} + +const expectedDigest = (await fsp.readFile(checksumPath, "utf8")) + .trim() + .split(/\s+/)[0]; +if (!expectedDigest) { + throw new Error(`Checksum file did not contain a digest: ${checksumPath}`); +} + +const actualDigest = await sha256(archivePath); +if (expectedDigest !== actualDigest) { + throw new Error( + `SEA archive checksum mismatch for ${archivePath}\nExpected: ${expectedDigest}\nActual: ${actualDigest}`, + ); +} + +const archiveStat = await fsp.stat(archivePath); +if (archiveStat.size < 1024 * 100) { + throw new Error( + `SEA archive is unexpectedly small: ${archivePath} (${archiveStat.size} bytes)`, + ); +} + +console.log( + `SEA artifact validation passed for ${path.basename(archivePath)} with ${archiveEntries.length} archive entries.`, +); + +function parseArgs(argv) { + const parsed = new Map(); + for (let index = 0; index < argv.length; index += 1) { + const arg = argv[index]; + if (!arg.startsWith("--")) { + continue; + } + + const key = arg.slice(2); + const next = argv[index + 1]; + const value = next && !next.startsWith("--") ? next : "true"; + parsed.set(key, value); + if (value !== "true") { + index += 1; + } + } + return parsed; +} + +function requiredArg(argsMap, key) { + const value = argsMap.get(key); + if (!value || value === "true") { + throw new Error(`Missing required argument: --${key}`); + } + return value; +} + +async function assertExists(targetPath, message) { + try { + await fsp.access(targetPath); + } catch { + throw new Error(message); + } +} + +function listArchiveEntries({ archivePath, platform }) { + if (platform === "win32") { + const raw = execFileSync("powershell", [ + "-NoProfile", + "-Command", + `Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::OpenRead('${escapePowerShellPath(archivePath)}').Entries | ForEach-Object { $_.FullName }`, + ], { + encoding: "utf8", + }); + return raw + .split(/\r?\n/) + .map((entry) => entry.trim()) + .filter(Boolean); + } + + const raw = execFileSync("tar", ["-tzf", archivePath], { + encoding: "utf8", + }); + return raw + .split(/\r?\n/) + .map((entry) => entry.trim()) + .filter(Boolean); +} + +function escapePowerShellPath(input) { + return input.replace(/'/g, "''"); +} + +async function sha256(filePath) { + const buffer = await fsp.readFile(filePath); + return createHash("sha256").update(buffer).digest("hex"); +} From 190e1d6951bc720b18a1a2c1f45ee97075f82e05 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 18:04:46 -0500 Subject: [PATCH 022/249] fix(installer): self-check installed launcher --- install/install.ps1 | 5 +++++ install/install.sh | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/install/install.ps1 b/install/install.ps1 index 200a9436..549ccc47 100644 --- a/install/install.ps1 +++ b/install/install.ps1 @@ -129,6 +129,11 @@ try { Remove-Item $ExePath -Force } + $StatusOutput = & $WrapperPath status --json 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Installed vana failed a post-install self-check. The release payload may be incomplete.`n$StatusOutput" + } + $UserPath = [Environment]::GetEnvironmentVariable("Path", "User") $PathEntries = @() if ($UserPath) { diff --git a/install/install.sh b/install/install.sh index e54ea341..1e791d2e 100644 --- a/install/install.sh +++ b/install/install.sh @@ -126,6 +126,11 @@ cp -R "$EXTRACTED_DIR/." "$RELEASE_DIR" ln -sfn "$INSTALL_ROOT/releases/$VERSION" "$INSTALL_ROOT/current" ln -sfn "$INSTALL_ROOT/current/vana" "$BIN_DIR/vana" +if ! HOME="${HOME}" VANA_APP_ROOT="$INSTALL_ROOT/current/app" "$BIN_DIR/vana" status --json >/dev/null 2>&1; then + echo "Installed vana failed a post-install self-check. The release payload may be incomplete." >&2 + exit 1 +fi + echo "Installed vana to $BIN_DIR/vana" case ":$PATH:" in *":$BIN_DIR:"*) ;; From e6c48dad3c54cb38005a536f032dbd094d60eee2 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 18:44:37 -0500 Subject: [PATCH 023/249] fix(release): remove stale package-lock reference --- .releaserc.yaml | 1 - scripts/assert-sea-artifact.mjs | 41 +++++++++++++++++++++++---------- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/.releaserc.yaml b/.releaserc.yaml index 360b4ed0..1e5c276f 100644 --- a/.releaserc.yaml +++ b/.releaserc.yaml @@ -12,7 +12,6 @@ plugins: - - "@semantic-release/git" - assets: - package.json - - package-lock.json message: "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" - - "@semantic-release/github" - assets: diff --git a/scripts/assert-sea-artifact.mjs b/scripts/assert-sea-artifact.mjs index d61c9fc8..7a2f5927 100644 --- a/scripts/assert-sea-artifact.mjs +++ b/scripts/assert-sea-artifact.mjs @@ -9,11 +9,21 @@ const artifactDir = path.resolve(requiredArg(args, "artifact-dir")); const archivePath = path.resolve(requiredArg(args, "archive")); const checksumPath = path.resolve(requiredArg(args, "checksum")); const platform = requiredArg(args, "platform"); -const binaryName = args.get("binary-name") ?? (platform === "win32" ? "vana.exe" : "vana"); +const binaryName = + args.get("binary-name") ?? (platform === "win32" ? "vana.exe" : "vana"); -await assertExists(artifactDir, `Artifact directory was not found: ${artifactDir}`); -await assertExists(archivePath, `Artifact archive was not found: ${archivePath}`); -await assertExists(checksumPath, `Artifact checksum file was not found: ${checksumPath}`); +await assertExists( + artifactDir, + `Artifact directory was not found: ${artifactDir}`, +); +await assertExists( + archivePath, + `Artifact archive was not found: ${archivePath}`, +); +await assertExists( + checksumPath, + `Artifact checksum file was not found: ${checksumPath}`, +); const requiredDirectoryEntries = [ binaryName, @@ -26,7 +36,10 @@ const requiredDirectoryEntries = [ for (const relativePath of requiredDirectoryEntries) { const candidate = path.join(artifactDir, relativePath); - await assertExists(candidate, `SEA artifact directory is missing required file: ${candidate}`); + await assertExists( + candidate, + `SEA artifact directory is missing required file: ${candidate}`, + ); } const archiveEntries = listArchiveEntries({ archivePath, platform }); @@ -104,13 +117,17 @@ async function assertExists(targetPath, message) { function listArchiveEntries({ archivePath, platform }) { if (platform === "win32") { - const raw = execFileSync("powershell", [ - "-NoProfile", - "-Command", - `Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::OpenRead('${escapePowerShellPath(archivePath)}').Entries | ForEach-Object { $_.FullName }`, - ], { - encoding: "utf8", - }); + const raw = execFileSync( + "powershell", + [ + "-NoProfile", + "-Command", + `Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::OpenRead('${escapePowerShellPath(archivePath)}').Entries | ForEach-Object { $_.FullName }`, + ], + { + encoding: "utf8", + }, + ); return raw .split(/\r?\n/) .map((entry) => entry.trim()) From 1188bec3094e7650753dc41067652ffc4148fe71 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 19:45:40 -0500 Subject: [PATCH 024/249] fix(ci): support npm pack check on windows --- scripts/assert-pack-contents.mjs | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/scripts/assert-pack-contents.mjs b/scripts/assert-pack-contents.mjs index 016d2030..a95c6c82 100644 --- a/scripts/assert-pack-contents.mjs +++ b/scripts/assert-pack-contents.mjs @@ -1,4 +1,4 @@ -import { execFileSync } from "node:child_process"; +import { spawnSync } from "node:child_process"; const requiredPaths = [ "dist/cli/bin.js", @@ -6,11 +6,7 @@ const requiredPaths = [ "dist/runtime/managed-playwright.js", ]; -const npmCommand = process.platform === "win32" ? "npm.cmd" : "npm"; - -const raw = execFileSync(npmCommand, ["pack", "--json", "--dry-run"], { - encoding: "utf8", -}); +const raw = runNpmPackDryRun(); const manifest = JSON.parse(raw); if (!Array.isArray(manifest) || manifest.length === 0) { @@ -38,3 +34,23 @@ if (files.length < 20) { console.log( `npm pack validation passed with ${files.length} files and required CLI/runtime entries present.`, ); + +function runNpmPackDryRun() { + const npmCommand = process.platform === "win32" ? "npm.cmd" : "npm"; + const result = spawnSync(npmCommand, ["pack", "--json", "--dry-run"], { + encoding: "utf8", + shell: process.platform === "win32", + }); + + if (result.error) { + throw result.error; + } + + if (result.status !== 0) { + throw new Error( + `npm pack --json --dry-run failed with code ${result.status ?? "unknown"}\n${result.stderr ?? ""}`, + ); + } + + return result.stdout; +} From 9f79983f1fcc832181a0cc0e49a1576f8ce54157 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 19:50:59 -0500 Subject: [PATCH 025/249] chore(ci): update artifact actions --- .github/workflows/prerelease.yml | 2 +- .github/workflows/release.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index f2f8816e..80b95465 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -55,7 +55,7 @@ jobs: - run: pnpm pack:check - run: pnpm build:sea -- --artifact-name vana-${{ matrix.platform }}-${{ matrix.arch }} --platform ${{ matrix.platform }} --arch ${{ matrix.arch }} --archive-format ${{ matrix.archive_format }} --binary-name ${{ matrix.binary_name }} - run: pnpm sea:check -- --artifact-dir artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }} --archive artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }} --checksum artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }}.sha256 --platform ${{ matrix.platform }} --binary-name ${{ matrix.binary_name }} - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: vana-sea-${{ matrix.platform }}-${{ matrix.arch }} path: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e6c6e28d..59f40d71 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -58,7 +58,7 @@ jobs: - run: pnpm pack:check - run: pnpm build:sea -- --artifact-name vana-${{ matrix.platform }}-${{ matrix.arch }} --platform ${{ matrix.platform }} --arch ${{ matrix.arch }} --archive-format ${{ matrix.archive_format }} --binary-name ${{ matrix.binary_name }} - run: pnpm sea:check -- --artifact-dir artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }} --archive artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }} --checksum artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }}.sha256 --platform ${{ matrix.platform }} --binary-name ${{ matrix.binary_name }} - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: vana-sea-${{ matrix.platform }}-${{ matrix.arch }} path: | @@ -84,7 +84,7 @@ jobs: - run: pnpm clean - run: pnpm build - run: pnpm pack:check - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: pattern: vana-sea-* path: artifacts/release From 7340073f6dbe6e4e3ebbabaee19b2a48cd456d4a Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 20:40:34 -0500 Subject: [PATCH 026/249] docs(readme): document prerelease install path --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README.md b/README.md index ed9816e7..27c978e1 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,30 @@ iwr https://raw.githubusercontent.com/vana-com/vana-connect/main/install/install Both installers fetch the latest GitHub release asset for your platform, verify its checksum, and install `vana` without requiring Node or npm. +### Canary / prerelease testing + +If you are testing an unreleased branch build, install from the branch installer and pass the prerelease tag explicitly. + +macOS and Linux: + +```bash +curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.sh | sh -s -- --version v0.8.1-connect-cli-canary.9f79983 +``` + +Windows PowerShell: + +```powershell +& ([scriptblock]::Create((iwr https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.ps1 -useb).Content)) --version v0.8.1-connect-cli-canary.9f79983 +``` + +The current hosted prerelease is: + +`v0.8.1-connect-cli-canary.9f79983` + +Release page: + +`https://github.com/vana-com/vana-connect/releases/tag/v0.8.1-connect-cli-canary.9f79983` + If you want the npm package path as a fallback: ```bash From 57b84fe1b16f07b089a996ab5aa557701f04e3e9 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 20:41:00 -0500 Subject: [PATCH 027/249] docs(readme): steer branch testers to prerelease --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 27c978e1..fe26b58d 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,8 @@ If you prefer to integrate the SDK into an existing project, follow the steps be ### Install +If you are evaluating this branch before it lands on `main`, use the prerelease path in the next section. The stable install commands below are the intended post-merge install path. + macOS and Linux: ```bash From 8d5876b367c1d29a3bc7ccfa06c2694a9e66653d Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 20:43:40 -0500 Subject: [PATCH 028/249] feat(release): publish stable branch prerelease --- .github/workflows/prerelease.yml | 31 ++++++++++++++++++++++++++++++- README.md | 8 ++++---- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 80b95465..2bceefa6 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -10,7 +10,7 @@ on: - "examples/**" permissions: - contents: read + contents: write jobs: build-sea: @@ -87,3 +87,32 @@ jobs: npm publish --tag canary env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + - uses: actions/download-artifact@v8 + with: + pattern: vana-sea-* + path: artifacts/release + merge-multiple: true + - name: Publish branch prerelease assets + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + SHORT_SHA=$(git rev-parse --short HEAD) + BRANCH_SLUG=$(printf "%s" "$GITHUB_REF_NAME" | tr '/_' '-' | tr -cd '[:alnum:]-') + TAG="canary-${BRANCH_SLUG}" + TITLE="Canary ${GITHUB_REF_NAME}" + NOTES="Branch canary for ${GITHUB_REF_NAME} at ${SHORT_SHA}. Install with the branch installer and \`--version ${TAG}\`." + + if gh release view "$TAG" >/dev/null 2>&1; then + gh release edit "$TAG" \ + --target "$GITHUB_SHA" \ + --title "$TITLE" \ + --notes "$NOTES" \ + --prerelease + gh release upload "$TAG" artifacts/release/* --clobber + else + gh release create "$TAG" artifacts/release/* \ + --target "$GITHUB_SHA" \ + --title "$TITLE" \ + --notes "$NOTES" \ + --prerelease + fi diff --git a/README.md b/README.md index fe26b58d..34161e32 100644 --- a/README.md +++ b/README.md @@ -101,22 +101,22 @@ If you are testing an unreleased branch build, install from the branch installer macOS and Linux: ```bash -curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.sh | sh -s -- --version v0.8.1-connect-cli-canary.9f79983 +curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.sh | sh -s -- --version canary-feat-connect-cli-v1 ``` Windows PowerShell: ```powershell -& ([scriptblock]::Create((iwr https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.ps1 -useb).Content)) --version v0.8.1-connect-cli-canary.9f79983 +& ([scriptblock]::Create((iwr https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.ps1 -useb).Content)) --version canary-feat-connect-cli-v1 ``` The current hosted prerelease is: -`v0.8.1-connect-cli-canary.9f79983` +`canary-feat-connect-cli-v1` Release page: -`https://github.com/vana-com/vana-connect/releases/tag/v0.8.1-connect-cli-canary.9f79983` +`https://github.com/vana-com/vana-connect/releases/tag/canary-feat-connect-cli-v1` If you want the npm package path as a fallback: From d7937978e92fbb9a0cef9273084ec61d42093d0f Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 21:18:20 -0500 Subject: [PATCH 029/249] feat(cli): bridge legacy connectors for humans --- .github/workflows/prerelease.yml | 10 +- src/cli/index.ts | 91 ++++-- src/connectors/registry.ts | 54 +++- src/core/cli-types.ts | 2 + src/runtime/core/contracts.ts | 9 + src/runtime/playwright/in-process-run.ts | 343 +++++++++++++++++------ test/runtime/in-process-run.test.ts | 59 ++++ 7 files changed, 468 insertions(+), 100 deletions(-) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 2bceefa6..47b18142 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -101,6 +101,12 @@ jobs: TAG="canary-${BRANCH_SLUG}" TITLE="Canary ${GITHUB_REF_NAME}" NOTES="Branch canary for ${GITHUB_REF_NAME} at ${SHORT_SHA}. Install with the branch installer and \`--version ${TAG}\`." + mapfile -t RELEASE_FILES < <(find artifacts/release -maxdepth 1 -type f | sort) + + if [ "${#RELEASE_FILES[@]}" -eq 0 ]; then + echo "No release files were found in artifacts/release" + exit 1 + fi if gh release view "$TAG" >/dev/null 2>&1; then gh release edit "$TAG" \ @@ -108,9 +114,9 @@ jobs: --title "$TITLE" \ --notes "$NOTES" \ --prerelease - gh release upload "$TAG" artifacts/release/* --clobber + gh release upload "$TAG" "${RELEASE_FILES[@]}" --clobber else - gh release create "$TAG" artifacts/release/* \ + gh release create "$TAG" "${RELEASE_FILES[@]}" \ --target "$GITHUB_SHA" \ --title "$TITLE" \ --notes "$NOTES" \ diff --git a/src/cli/index.ts b/src/cli/index.ts index f550973b..f8e3f43e 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -45,6 +45,7 @@ interface SourceMetadataMap { name: string; company?: string; description?: string; + authMode?: "automated" | "interactive" | "legacy"; }; } @@ -120,7 +121,7 @@ async function runConnect( ); emit.info(""); emit.info("This will install:"); - emit.info("- the connector runner"); + emit.info("- the local browser runtime"); emit.info("- a Chromium browser engine"); emit.info("- local runtime files under ~/.dataconnect/"); emit.info(""); @@ -285,6 +286,18 @@ async function runConnect( return 1; } + if (event.type === "headed-required") { + if (event.message) { + emit.info(event.message); + } + if (event.url) { + emit.info( + `Opening ${displaySource(source, sourceLabels)} in a local browser session...`, + ); + } + continue; + } + if (event.type === "legacy-auth") { await updateSourceState(resolution.source, { lastRunAt: new Date().toISOString(), @@ -294,13 +307,10 @@ async function runConnect( }); emit.info( event.message ?? - "This connector requires legacy headed authentication that is not available in batch mode.", + "This connector needs a manual browser step that is not available in non-interactive mode.", ); emit.info( - `Next: establish a reusable ${displaySource( - source, - sourceLabels, - )} session manually, or migrate this connector to requestInput.`, + `Next: run \`vana connect ${source}\` without \`--no-input\`.`, ); if (event.logPath) { emit.info(`Run log: ${event.logPath}`); @@ -447,7 +457,8 @@ async function runList(options: GlobalOptions): Promise { for (const source of enrichedSources) { const description = source.description ? ` - ${source.description}` : ""; const installed = source.installed ? " [installed]" : ""; - emit.info(`${source.name}${installed}${description}`); + const authMode = formatAuthModeBadge(source.authMode); + emit.info(`${source.name}${installed}${authMode}${description}`); } return 0; } @@ -578,6 +589,8 @@ async function gatherSourceStatuses( name: details?.name, company: details?.company, description: details?.description, + authMode: + details?.authMode ?? inferInstalledAuthMode(installedFiles, source), installed, sessionPresent: stored.sessionPresent ?? false, lastRunAt: stored.lastRunAt ?? null, @@ -626,35 +639,42 @@ function formatSourceStatus( source: SourceStatus, labels: SourceLabelMap = {}, ): string { + const authModeSuffix = + source.authMode === "legacy" + ? " [legacy]" + : source.authMode === "interactive" + ? " [interactive]" + : ""; + if (!source.installed) { - return `${displaySource(source.source, labels)}: not connected`; + return `${displaySource(source.source, labels)}${authModeSuffix}: not connected`; } if (!source.lastRunOutcome) { - return `${displaySource(source.source, labels)}: installed`; + return `${displaySource(source.source, labels)}${authModeSuffix}: installed`; } if (source.lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { - return `${displaySource(source.source, labels)}: needs input`; + return `${displaySource(source.source, labels)}${authModeSuffix}: needs input`; } if (source.lastRunOutcome === CliOutcomeStatus.RUNTIME_ERROR) { - return `${displaySource(source.source, labels)}: error`; + return `${displaySource(source.source, labels)}${authModeSuffix}: error`; } if (source.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { - return `${displaySource(source.source, labels)}: legacy auth required`; + return `${displaySource(source.source, labels)}${authModeSuffix}: manual browser step required`; } if (source.dataState === "ingested_personal_server") { - return `${displaySource(source.source, labels)}: connected, synced`; + return `${displaySource(source.source, labels)}${authModeSuffix}: connected, synced`; } if (source.dataState === "collected_local") { - return `${displaySource(source.source, labels)}: connected, local only`; + return `${displaySource(source.source, labels)}${authModeSuffix}: connected, local only`; } - return `${displaySource(source.source, labels)}: connected`; + return `${displaySource(source.source, labels)}${authModeSuffix}: connected`; } function formatSourceStatusDetail(source: SourceStatus): string | null { @@ -665,7 +685,7 @@ function formatSourceStatusDetail(source: SourceStatus): string | null { } if (source.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { - return "This source still uses legacy headed auth and cannot complete in batch mode."; + return `Run \`vana connect ${source.source}\` without \`--no-input\` to complete the manual browser step.`; } if (source.lastRunOutcome === CliOutcomeStatus.RUNTIME_ERROR) { @@ -716,6 +736,7 @@ function createSourceMetadataMap( name: string; company?: string; description?: string; + authMode?: "automated" | "interactive" | "legacy"; }>, ): SourceMetadataMap { return Object.fromEntries( @@ -725,11 +746,49 @@ function createSourceMetadataMap( name: source.name, company: source.company, description: source.description, + authMode: source.authMode, }, ]), ); } +function formatAuthModeBadge( + authMode: "automated" | "interactive" | "legacy" | undefined, +): string { + if (authMode === "legacy") { + return " [legacy]"; + } + + if (authMode === "interactive") { + return " [interactive]"; + } + + return ""; +} + +function inferInstalledAuthMode( + installedFiles: Array<{ source: string; path: string }>, + source: string, +): "automated" | "interactive" | "legacy" | undefined { + const match = installedFiles.find((file) => file.source === source); + if (!match) { + return undefined; + } + + try { + const script = fs.readFileSync(match.path, "utf8"); + if (/page\.requestInput\(/.test(script)) { + return "interactive"; + } + if (/page\.(showBrowser|promptUser)\(/.test(script)) { + return "legacy"; + } + return "automated"; + } catch { + return undefined; + } +} + async function loadRegistrySources() { try { return ( diff --git a/src/connectors/registry.ts b/src/connectors/registry.ts index 59417381..367370ed 100644 --- a/src/connectors/registry.ts +++ b/src/connectors/registry.ts @@ -32,14 +32,26 @@ export interface AvailableSource { name: string; company?: string; description?: string; + authMode?: "automated" | "interactive" | "legacy"; } export async function listAvailableSources( dataConnectorsDir?: string, ): Promise { const registry = await loadRegistry(dataConnectorsDir); - return (registry.connectors ?? []) - .map((entry) => toAvailableSource(entry)) + const sources = await Promise.all( + (registry.connectors ?? []).map(async (entry) => { + const source = toAvailableSource(entry); + if (!source) { + return null; + } + + source.authMode = await detectAuthMode(entry, dataConnectorsDir); + return source; + }), + ); + + return sources .filter((value): value is AvailableSource => Boolean(value)) .sort((left, right) => left.name.localeCompare(right.name)); } @@ -192,6 +204,44 @@ async function copyOrFetchFile( await fs.writeFile(destination, content); } +async function detectAuthMode( + entry: ConnectorRegistryEntry, + dataConnectorsDir?: string, +): Promise { + const relativePath = + entry.files?.script ?? entry.scriptPath ?? entry.script_path; + + if (!relativePath) { + return undefined; + } + + let script = ""; + if (dataConnectorsDir) { + try { + script = await fs.readFile( + path.join(dataConnectorsDir, relativePath), + "utf8", + ); + } catch { + script = ""; + } + } + + if (!script) { + return undefined; + } + + if (/page\.requestInput\(/.test(script)) { + return "interactive"; + } + + if (/page\.(showBrowser|promptUser)\(/.test(script)) { + return "legacy"; + } + + return "automated"; +} + function normalizeSourceName(source: string | undefined): string | null { if (!source) { return null; diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index de6ea969..8ec4d540 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -42,6 +42,7 @@ export const sourceStatusSchema = z.object({ name: z.string().optional(), company: z.string().optional(), description: z.string().optional(), + authMode: z.enum(["automated", "interactive", "legacy"]).optional(), installed: z.boolean(), sessionPresent: z.boolean(), lastRunAt: z.string().nullable().optional(), @@ -69,6 +70,7 @@ export const cliEventSchema = z.object({ connectorPath: z.string().optional(), logPath: z.string().optional(), fields: z.array(z.string()).optional(), + url: z.string().optional(), target: z.string().optional(), runtime: z.string().optional(), reason: z.string().optional(), diff --git a/src/runtime/core/contracts.ts b/src/runtime/core/contracts.ts index 3cf1e157..ff420388 100644 --- a/src/runtime/core/contracts.ts +++ b/src/runtime/core/contracts.ts @@ -23,6 +23,14 @@ export interface RuntimeLegacyAuthEvent { logPath: string; } +export interface RuntimeHeadedRequiredEvent { + type: "headed-required"; + source: string; + message: string; + logPath: string; + url?: string; +} + export interface RuntimeCollectionCompleteEvent { type: "collection-complete"; source: string; @@ -40,6 +48,7 @@ export interface RuntimeErrorEvent { export type RuntimeEvent = | RuntimeRunStartedEvent | RuntimeNeedInputEvent + | RuntimeHeadedRequiredEvent | RuntimeLegacyAuthEvent | RuntimeCollectionCompleteEvent | RuntimeErrorEvent; diff --git a/src/runtime/playwright/in-process-run.ts b/src/runtime/playwright/in-process-run.ts index b1cb6e90..5dbb39f1 100644 --- a/src/runtime/playwright/in-process-run.ts +++ b/src/runtime/playwright/in-process-run.ts @@ -58,6 +58,166 @@ class LegacyAuthError extends Error { } } +function setupNetworkCapture( + page: Page, + networkCaptures: Map, + capturedResponses: Map< + string, + { url: string; data: unknown; timestamp: number } + >, + writeLog: (message: string) => void, +): void { + page.on("response", async (response) => { + const url = response.url(); + + for (const [key, config] of networkCaptures.entries()) { + if (config.urlPattern && !url.includes(config.urlPattern)) { + continue; + } + + try { + const request = response.request(); + const postData = request.postData() || ""; + if (config.bodyPattern) { + const patterns = config.bodyPattern.split("|"); + if (!patterns.some((pattern) => postData.includes(pattern))) { + continue; + } + } + + const body = await response.json().catch(() => null); + if (body) { + capturedResponses.set(key, { + url, + data: body, + timestamp: Date.now(), + }); + writeLog(`[network] captured ${key} from ${url}`); + } + } catch { + // Ignore non-JSON responses. + } + } + }); +} + +async function reopenContext( + runState: RunState, + networkCaptures: Map, + capturedResponses: Map< + string, + { url: string; data: unknown; timestamp: number } + >, + headless: boolean, + writeLog: (message: string) => void, + pushEvent: (event: RuntimeEvent) => void, + source: string, + logPath: string, +): Promise { + if (runState.context && !runState.browserClosed) { + runState.browserClosedByConnector = true; + await runState.context.close().catch(() => {}); + runState.context = null; + runState.page = null; + } + + runState.browserClosed = false; + runState.browserClosedByConnector = false; + runState.headless = headless; + runState.context = await launchPersistentContext( + runState.userDataDir, + headless, + runState.browserPath, + ); + runState.page = + runState.context.pages()[0] || (await runState.context.newPage()); + + runState.context.browser()?.on("disconnected", () => { + runState.browserClosed = true; + runState.context = null; + runState.page = null; + if (!runState.connectorCompleted && !runState.browserClosedByConnector) { + pushEvent({ + type: "runtime-error", + source, + message: "Browser session ended before the connector completed.", + logPath, + }); + } + }); + + if (runState.page) { + setupNetworkCapture( + runState.page, + networkCaptures, + capturedResponses, + writeLog, + ); + } + + writeLog( + `[browser] launched ${headless ? "headless" : "headed"} context at ${runState.userDataDir}`, + ); +} + +async function ensureHeadedBrowser( + runState: RunState, + source: string, + logPath: string, + pushEvent: (event: RuntimeEvent) => void, + writeLog: (message: string) => void, + networkCaptures: Map, + capturedResponses: Map< + string, + { url: string; data: unknown; timestamp: number } + >, + url?: string, +): Promise { + if (!runState.allowHeaded) { + writeLog( + "[browser] headed interaction requested but prompting is disabled", + ); + throw new LegacyAuthError(url ? "showBrowser" : "promptUser"); + } + + if ( + process.platform === "linux" && + !process.env.DISPLAY && + !process.env.WAYLAND_DISPLAY + ) { + throw new Error( + "This source needs a manual browser step, but no local display server is available. Run this command in a desktop session or use xvfb-run.", + ); + } + + if (runState.headless || runState.browserClosed || !runState.context) { + pushEvent({ + type: "headed-required", + source, + message: + "This source needs a manual browser step. Opening a local browser session on this machine.", + logPath, + url, + }); + await reopenContext( + runState, + networkCaptures, + capturedResponses, + false, + writeLog, + pushEvent, + source, + logPath, + ); + } + + if (url && runState.page) { + await runState.page.goto(url, { waitUntil: "domcontentloaded" }); + } + + return true; +} + export function startInProcessConnectorRun({ request, logPath, @@ -81,6 +241,7 @@ export function startInProcessConnectorRun({ let resolveQueue: (() => void) | null = null; let settled = false; let activeContext: BrowserContext | null = null; + let activeRunState: RunState | null = null; const flushQueue = () => { resolveQueue?.(); @@ -116,10 +277,11 @@ export function startInProcessConnectorRun({ browserClosedByConnector: false, connectorCompleted: false, headless: true, - allowHeaded: false, + allowHeaded: !request.noInput, hasResult: false, cookies: [], }; + activeRunState = runState; if (request.signal) { request.signal.addEventListener("abort", () => { @@ -144,32 +306,17 @@ export function startInProcessConnectorRun({ importChromeCookies(runState.userDataDir, runState.browserPath); } - const context = await launchPersistentContext( - runState.userDataDir, + await reopenContext( + runState, + new Map(), + new Map(), true, - runState.browserPath, + writeLog, + pushEvent, + request.source, + logPath, ); - activeContext = context; - const page = context.pages()[0] || (await context.newPage()); - runState.context = context; - runState.page = page; - - context.browser()?.on("disconnected", () => { - runState.browserClosed = true; - runState.context = null; - runState.page = null; - if ( - !runState.connectorCompleted && - !runState.browserClosedByConnector - ) { - pushEvent({ - type: "runtime-error", - source: request.source, - message: "Browser session ended before the connector completed.", - logPath, - }); - } - }); + activeContext = runState.context; const pageApi = createPageApi({ request, @@ -181,7 +328,9 @@ export function startInProcessConnectorRun({ writeLog, }); - await page.goto("about:blank", { waitUntil: "domcontentloaded" }); + await runState.page?.goto("about:blank", { + waitUntil: "domcontentloaded", + }); const connectorFunction = buildConnectorFunction(connectorCode); const result = await connectorFunction.call(null, pageApi); @@ -220,6 +369,7 @@ export function startInProcessConnectorRun({ pushEvent(classifyRuntimeError(error, request.source, logPath)); } finally { settled = true; + activeContext = runState.context; await activeContext?.close().catch(() => {}); logStream.end(); flushQueue(); @@ -244,7 +394,7 @@ export function startInProcessConnectorRun({ await runPromise; }, stop() { - void activeContext?.close().catch(() => {}); + void (activeRunState?.context ?? activeContext)?.close().catch(() => {}); if (!settled) { pushEvent({ type: "runtime-error", @@ -311,43 +461,13 @@ function createPageApi({ return runState.page; } - function setupNetworkCapture(page: Page): void { - page.on("response", async (response) => { - const url = response.url(); - - for (const [key, config] of networkCaptures.entries()) { - if (config.urlPattern && !url.includes(config.urlPattern)) { - continue; - } - - try { - const request = response.request(); - const postData = request.postData() || ""; - if (config.bodyPattern) { - const patterns = config.bodyPattern.split("|"); - if (!patterns.some((pattern) => postData.includes(pattern))) { - continue; - } - } - - const body = await response.json().catch(() => null); - if (body) { - capturedResponses.set(key, { - url, - data: body, - timestamp: Date.now(), - }); - writeLog(`[network] captured ${key} from ${url}`); - } - } catch { - // Ignore non-JSON responses. - } - } - }); - } - if (runState.page) { - setupNetworkCapture(runState.page); + setupNetworkCapture( + runState.page, + networkCaptures, + capturedResponses, + writeLog, + ); } return { @@ -456,9 +576,49 @@ function createPageApi({ interval = 2000, ) => { writeLog(`[prompt] ${message}`); - void checkFn; - void interval; - throw new LegacyAuthError("promptUser"); + if (request.noInput) { + throw new LegacyAuthError("promptUser"); + } + + await ensureHeadedBrowser( + runState, + request.source, + logPath, + pushEvent, + writeLog, + networkCaptures, + capturedResponses, + runState.page?.url(), + ); + pushEvent({ + type: "headed-required", + source: request.source, + message, + logPath, + url: runState.page?.url(), + }); + + while (true) { + await new Promise((resolve) => setTimeout(resolve, interval)); + if ( + request.signal?.aborted || + runState.browserClosed || + !runState.page + ) { + throw new Error( + "Browser session ended before manual interaction completed.", + ); + } + try { + const result = await checkFn(); + if (result) { + writeLog("[prompt] User action completed"); + return; + } + } catch { + // Keep waiting until the connector's condition passes. + } + } }, captureNetwork: async (config: { @@ -505,25 +665,35 @@ function createPageApi({ }, showBrowser: async (url?: string) => { - void url; - throw new LegacyAuthError("showBrowser"); + if (request.noInput) { + throw new LegacyAuthError("showBrowser"); + } + + await ensureHeadedBrowser( + runState, + request.source, + logPath, + pushEvent, + writeLog, + networkCaptures, + capturedResponses, + url, + ); + return { headed: true }; }, goHeadless: async () => { - runState.browserClosedByConnector = true; - await runState.context?.close().catch(() => {}); - runState.context = await launchPersistentContext( - runState.userDataDir, + await reopenContext( + runState, + networkCaptures, + capturedResponses, true, - runState.browserPath, + writeLog, + pushEvent, + request.source, + logPath, ); - runState.page = - runState.context.pages()[0] || (await runState.context.newPage()); - runState.browserClosed = false; - runState.browserClosedByConnector = false; - runState.headless = true; if (runState.page) { - setupNetworkCapture(runState.page); await runState.page.goto("https://chatgpt.com/", { waitUntil: "domcontentloaded", }); @@ -610,7 +780,20 @@ function classifyRuntimeError( type: "legacy-auth", source, message: - "This connector uses legacy authentication (showBrowser/promptUser) which is not supported in batch mode. Either use a migrated connector that supports requestInput, or establish a session manually first.", + "This source needs a manual browser step, but prompting is disabled in --no-input mode.", + logPath, + }; + } + + if ( + message.includes("Missing X server or $DISPLAY") || + message.includes("headed browser without having a XServer running") + ) { + return { + type: "runtime-error", + source, + message: + "This source needs a manual browser step, but no local display server is available. Run this command in a desktop session or use xvfb-run.", logPath, }; } diff --git a/test/runtime/in-process-run.test.ts b/test/runtime/in-process-run.test.ts index 51936571..ddb96041 100644 --- a/test/runtime/in-process-run.test.ts +++ b/test/runtime/in-process-run.test.ts @@ -25,6 +25,7 @@ type FakePage = { evaluate: ReturnType; screenshot: ReturnType; on: ReturnType; + url: ReturnType; }; type FakeContext = { @@ -42,6 +43,7 @@ function createFakeRuntime() { evaluate: vi.fn(async () => null), screenshot: vi.fn(async () => Buffer.from("test")), on: vi.fn(), + url: vi.fn(() => "https://example.com/login"), }; const context: FakeContext = { @@ -160,6 +162,63 @@ describe("startInProcessConnectorRun", () => { ); }); + it("supports headed manual flows for legacy connectors in human mode", async () => { + createFakeRuntime(); + const previousDisplay = process.env.DISPLAY; + process.env.DISPLAY = ":99"; + try { + const connectorPath = await writeConnector(` +(async () => { + let complete = false; + setTimeout(() => { + complete = true; + }, 5); + const browser = await page.showBrowser("https://shop.app/account/order-history"); + if (!browser.headed) { + throw new Error("Expected headed browser"); + } + await page.promptUser("Finish signing in to Shop in the browser window.", async () => complete, 1); + return { orders: [] }; +})(); +`); + + const { startInProcessConnectorRun } = + await import("../../src/runtime/playwright/in-process-run.js"); + + const handle = startInProcessConnectorRun({ + request: { + connectorPath, + source: "shop", + noInput: false, + }, + logPath: path.join(os.tmpdir(), "vana-connect-headed-manual.log"), + }); + + const events = []; + for await (const event of handle.events()) { + events.push(event); + } + + expect(events).toEqual( + expect.arrayContaining([ + expect.objectContaining({ type: "run-started", source: "shop" }), + expect.objectContaining({ type: "headed-required", source: "shop" }), + expect.objectContaining({ + type: "collection-complete", + source: "shop", + }), + ]), + ); + expect(launchPersistentContext).toHaveBeenCalledWith( + expect.any(String), + false, + "/tmp/chrome", + ); + } finally { + process.env.DISPLAY = previousDisplay; + } + }); + it("writes a result and emits collection-complete", async () => { createFakeRuntime(); const connectorPath = await writeConnector(` From 367ac08df725b1ccffe1187220f7d7b45d2e211d Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 21:22:06 -0500 Subject: [PATCH 030/249] test(release): add hosted installer smoke --- package.json | 1 + scripts/test-install-github-release.sh | 86 ++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 scripts/test-install-github-release.sh diff --git a/package.json b/package.json index 8aae31c7..ee9f37dd 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "skills:sync": "node scripts/sync-skills.js", "test:install:unix": "sh ./scripts/test-install-unix.sh", "test:install:windows": "pwsh -File ./scripts/test-install-windows.ps1", + "test:install:github-release": "sh ./scripts/test-install-github-release.sh", "test": "vitest run", "test:watch": "vitest", "test:e2e": "vitest run --config test/e2e/vitest.config.ts", diff --git a/scripts/test-install-github-release.sh b/scripts/test-install-github-release.sh new file mode 100644 index 00000000..3fc11e6e --- /dev/null +++ b/scripts/test-install-github-release.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env sh +set -eu + +REPO="${VANA_RELEASE_REPO:-vana-com/vana-connect}" +BRANCH="${VANA_INSTALLER_BRANCH:-feat/connect-cli-v1}" +VERSION="${VANA_VERSION:-}" +SOURCE="${VANA_CONNECT_SOURCE:-github}" + +while [ "$#" -gt 0 ]; do + case "$1" in + --version) + VERSION="$2" + shift 2 + ;; + --branch) + BRANCH="$2" + shift 2 + ;; + --repo) + REPO="$2" + shift 2 + ;; + --source) + SOURCE="$2" + shift 2 + ;; + *) + echo "Unknown argument: $1" >&2 + exit 1 + ;; + esac +done + +if [ -z "$VERSION" ]; then + echo "Usage: $0 --version [--branch ] [--repo ] [--source ]" >&2 + exit 1 +fi + +TMP_ROOT="$(mktemp -d)" +cleanup() { + rm -rf "$TMP_ROOT" +} +trap cleanup EXIT INT TERM + +HOME_DIR="$TMP_ROOT/home" +BIN_DIR="$TMP_ROOT/bin" +INSTALL_ROOT="$TMP_ROOT/install" +mkdir -p "$HOME_DIR" "$BIN_DIR" "$INSTALL_ROOT" + +INSTALLER_URL="https://raw.githubusercontent.com/${REPO}/${BRANCH}/install/install.sh" + +echo "Installing vana from ${REPO}@${VERSION}" +curl -fsSL "$INSTALLER_URL" | + HOME="$HOME_DIR" sh -s -- \ + --version "$VERSION" \ + --bin-dir "$BIN_DIR" \ + --install-root "$INSTALL_ROOT" + +PATH="$BIN_DIR:$PATH" +export HOME="$HOME_DIR" +export VANA_APP_ROOT="$INSTALL_ROOT/current/app" + +echo "Checking status" +"$BIN_DIR/vana" status --json >/dev/null + +echo "Checking sources" +"$BIN_DIR/vana" sources --json >/dev/null + +echo "Checking non-interactive connect for ${SOURCE}" +set +e +CONNECT_OUTPUT="$("$BIN_DIR/vana" connect "$SOURCE" --json --no-input 2>&1)" +CONNECT_EXIT_CODE=$? +set -e +printf '%s\n' "$CONNECT_OUTPUT" + +if [ "$CONNECT_EXIT_CODE" -ne 0 ] && [ "$CONNECT_EXIT_CODE" -ne 1 ]; then + echo "Unexpected vana exit code: ${CONNECT_EXIT_CODE}" >&2 + exit 1 +fi + +if ! printf '%s\n' "$CONNECT_OUTPUT" | grep -Eq '"status":"(needs_input|legacy_auth|connected_local_only|connected_and_ingested)"'; then + echo "Unexpected connect outcome for ${SOURCE}" >&2 + exit 1 +fi + +echo "GitHub release installer smoke test passed" From 5456c970bf351f9a54b57fb7e179d7f519d78c30 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 21:23:59 -0500 Subject: [PATCH 031/249] test(release): verify published installer flows --- .github/workflows/prerelease.yml | 10 ++++++++++ .github/workflows/release.yml | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 47b18142..82904bd0 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -122,3 +122,13 @@ jobs: --notes "$NOTES" \ --prerelease fi + verify-prerelease-install: + needs: canary + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - name: Smoke test hosted prerelease installer + run: | + BRANCH_SLUG=$(printf "%s" "$GITHUB_REF_NAME" | tr '/_' '-' | tr -cd '[:alnum:]-') + TAG="canary-${BRANCH_SLUG}" + sh ./scripts/test-install-github-release.sh --version "$TAG" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 59f40d71..ab2e9dad 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -94,3 +94,10 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + verify-release-install: + needs: release + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - name: Smoke test latest published installer + run: sh ./scripts/test-install-github-release.sh From 9a72ce19f36bd1460f6d53a36b7163a6ae50b51f Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 21:25:17 -0500 Subject: [PATCH 032/249] chore(ci): cancel superseded branch runs --- .github/workflows/ci.yml | 4 ++++ .github/workflows/prerelease.yml | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5cb55311..5576ee43 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,10 @@ on: - "connect/**" - "examples/**" +concurrency: + group: ci-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + jobs: test: runs-on: ubuntu-latest diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 82904bd0..4f39e760 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -12,6 +12,10 @@ on: permissions: contents: write +concurrency: + group: canary-${{ github.ref_name }} + cancel-in-progress: true + jobs: build-sea: env: From 185157c6d15ddfd3e363e41201e16046e6637657 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 21:32:34 -0500 Subject: [PATCH 033/249] fix(installer): retry release asset downloads --- install/install.ps1 | 28 ++++++++++++++++++++++++++-- install/install.sh | 12 +++++++++--- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/install/install.ps1 b/install/install.ps1 index 549ccc47..2fa99ab0 100644 --- a/install/install.ps1 +++ b/install/install.ps1 @@ -38,7 +38,19 @@ $TargetArch = switch ([System.Runtime.InteropServices.RuntimeInformation]::OSArc } if (-not $Version) { - $Release = Invoke-RestMethod -Uri $ReleaseApiUrl + $Attempts = 5 + for ($Attempt = 1; $Attempt -le $Attempts; $Attempt++) { + try { + $Release = Invoke-RestMethod -Uri $ReleaseApiUrl + break + } + catch { + if ($Attempt -eq $Attempts) { + throw + } + Start-Sleep -Seconds 2 + } + } $Version = $Release.tag_name } @@ -73,7 +85,19 @@ function Copy-VanaAsset { ) if ($Source -match '^(https?)://') { - Invoke-WebRequest -Uri $Source -OutFile $Destination + $Attempts = 8 + for ($Attempt = 1; $Attempt -le $Attempts; $Attempt++) { + try { + Invoke-WebRequest -Uri $Source -OutFile $Destination + return + } + catch { + if ($Attempt -eq $Attempts) { + throw + } + Start-Sleep -Seconds 2 + } + } return } diff --git a/install/install.sh b/install/install.sh index 1e791d2e..e1713e20 100644 --- a/install/install.sh +++ b/install/install.sh @@ -43,6 +43,12 @@ need_cmd() { need_cmd curl need_cmd tar +download_asset() { + url="$1" + destination="$2" + curl --retry 8 --retry-delay 2 --retry-all-errors -fsSL "$url" -o "$destination" +} + OS="$(uname -s)" ARCH="$(uname -m)" @@ -66,7 +72,7 @@ esac if [ -z "$VERSION" ]; then VERSION="$( - curl -fsSL "$RELEASE_API_URL" | + curl --retry 5 --retry-delay 2 --retry-all-errors -fsSL "$RELEASE_API_URL" | sed -n 's/.*"tag_name":[[:space:]]*"\([^"]*\)".*/\1/p' | head -n 1 )" @@ -91,8 +97,8 @@ cleanup() { trap cleanup EXIT INT TERM echo "Installing $ASSET_BASE from $VERSION" -curl -fsSL "$ARCHIVE_URL" -o "$TMP_DIR/$ARCHIVE_NAME" -curl -fsSL "$CHECKSUM_URL" -o "$TMP_DIR/$CHECKSUM_NAME" +download_asset "$ARCHIVE_URL" "$TMP_DIR/$ARCHIVE_NAME" +download_asset "$CHECKSUM_URL" "$TMP_DIR/$CHECKSUM_NAME" if command -v sha256sum >/dev/null 2>&1; then (cd "$TMP_DIR" && sha256sum -c "$CHECKSUM_NAME") From 4b1ab32a5237e0d00022798ecdf754fb1ce8a6d4 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 21:46:18 -0500 Subject: [PATCH 034/249] feat(release): generate package-manager metadata --- .github/workflows/prerelease.yml | 10 +- .github/workflows/release.yml | 14 ++ package.json | 1 + scripts/generate-package-manager-metadata.mjs | 228 ++++++++++++++++++ 4 files changed, 252 insertions(+), 1 deletion(-) create mode 100644 scripts/generate-package-manager-metadata.mjs diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 4f39e760..d8f9f215 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -96,6 +96,14 @@ jobs: pattern: vana-sea-* path: artifacts/release merge-multiple: true + - name: Generate package-manager metadata + run: | + SHORT_SHA=$(git rev-parse --short HEAD) + VERSION=$(node -p "require('./package.json').version") + BRANCH_SLUG=$(printf "%s" "$GITHUB_REF_NAME" | tr '/_' '-' | tr -cd '[:alnum:]-') + TAG="canary-${BRANCH_SLUG}" + PACKAGE_VERSION="${VERSION}-canary.${SHORT_SHA}" + pnpm package-managers:generate -- --release-tag "$TAG" --package-version "$PACKAGE_VERSION" - name: Publish branch prerelease assets env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -105,7 +113,7 @@ jobs: TAG="canary-${BRANCH_SLUG}" TITLE="Canary ${GITHUB_REF_NAME}" NOTES="Branch canary for ${GITHUB_REF_NAME} at ${SHORT_SHA}. Install with the branch installer and \`--version ${TAG}\`." - mapfile -t RELEASE_FILES < <(find artifacts/release -maxdepth 1 -type f | sort) + mapfile -t RELEASE_FILES < <(find artifacts/release artifacts/package-managers -type f | sort) if [ "${#RELEASE_FILES[@]}" -eq 0 ]; then echo "No release files were found in artifacts/release" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ab2e9dad..f2f621b1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -94,6 +94,20 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Generate package-manager metadata + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + RELEASE_TAG=$(gh api repos/${GITHUB_REPOSITORY}/releases/latest --jq .tag_name) + PACKAGE_VERSION="${RELEASE_TAG#v}" + pnpm package-managers:generate -- --release-tag "$RELEASE_TAG" --package-version "$PACKAGE_VERSION" + - name: Attach package-manager metadata + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + RELEASE_TAG=$(gh api repos/${GITHUB_REPOSITORY}/releases/latest --jq .tag_name) + mapfile -t PACKAGE_MANAGER_FILES < <(find artifacts/package-managers -type f | sort) + gh release upload "$RELEASE_TAG" "${PACKAGE_MANAGER_FILES[@]}" --clobber verify-release-install: needs: release runs-on: ubuntu-latest diff --git a/package.json b/package.json index ee9f37dd..6fde6e63 100644 --- a/package.json +++ b/package.json @@ -72,6 +72,7 @@ "lint:eslint:fix": "eslint --fix 'src/**/*.ts' 'src/**/*.tsx'", "format": "prettier --write .", "format:check": "prettier --check .", + "package-managers:generate": "node ./scripts/generate-package-manager-metadata.mjs", "validate": "npm run lint && npm run lint:eslint && npm run format:check && npm test", "prepare": "husky" }, diff --git a/scripts/generate-package-manager-metadata.mjs b/scripts/generate-package-manager-metadata.mjs new file mode 100644 index 00000000..e347e5f9 --- /dev/null +++ b/scripts/generate-package-manager-metadata.mjs @@ -0,0 +1,228 @@ +import { promises as fsp } from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const repoRoot = path.resolve(__dirname, ".."); + +const args = new Map(); +for (let index = 2; index < process.argv.length; index += 1) { + const arg = process.argv[index]; + if (!arg.startsWith("--")) { + continue; + } + + const key = arg.slice(2); + const next = process.argv[index + 1]; + const value = next && !next.startsWith("--") ? next : "true"; + args.set(key, value); + if (value !== "true") { + index += 1; + } +} + +const releaseTag = args.get("release-tag"); +const packageVersion = args.get("package-version"); +const releaseRepo = args.get("release-repo") ?? "vana-com/vana-connect"; +const artifactsDir = path.resolve( + repoRoot, + args.get("artifacts-dir") ?? "artifacts/release", +); +const outputDir = path.resolve( + repoRoot, + args.get("output-dir") ?? "artifacts/package-managers", +); + +if (!releaseTag || !packageVersion) { + throw new Error( + "--release-tag and --package-version are required to generate package-manager metadata.", + ); +} + +await fsp.rm(outputDir, { recursive: true, force: true }); +await fsp.mkdir(outputDir, { recursive: true }); + +const releaseBaseUrl = `https://github.com/${releaseRepo}/releases/download/${releaseTag}`; +const assets = await loadReleaseAssets(artifactsDir); + +await generateHomebrewFormula({ + outputDir, + releaseBaseUrl, + packageVersion, + assets, +}); + +await generateWingetManifest({ + outputDir, + releaseBaseUrl, + packageVersion, + assets, +}); + +process.stdout.write( + `Generated package-manager metadata in ${outputDir} for ${releaseTag} (${packageVersion})\n`, +); + +async function loadReleaseAssets(baseDir) { + const files = await fsp.readdir(baseDir); + const assetMap = new Map(); + + for (const file of files) { + if (!file.endsWith(".sha256")) { + continue; + } + + const checksumFile = path.join(baseDir, file); + const checksumContents = await fsp.readFile(checksumFile, "utf8"); + const [sha256, assetName] = checksumContents.trim().split(/\s+/); + assetMap.set(assetName, { sha256 }); + } + + return { + linuxX64: requireAsset(assetMap, "vana-linux-x64.tar.gz"), + darwinX64: requireAsset(assetMap, "vana-darwin-x64.tar.gz"), + darwinArm64: requireAsset(assetMap, "vana-darwin-arm64.tar.gz"), + win32X64: requireAsset(assetMap, "vana-win32-x64.zip"), + }; +} + +function requireAsset(assetMap, assetName) { + const asset = assetMap.get(assetName); + if (!asset) { + throw new Error(`Missing checksum metadata for ${assetName}`); + } + + return { + name: assetName, + sha256: asset.sha256, + }; +} + +async function generateHomebrewFormula({ + outputDir, + releaseBaseUrl, + packageVersion, + assets, +}) { + const formulaDir = path.join(outputDir, "homebrew"); + await fsp.mkdir(formulaDir, { recursive: true }); + const formulaPath = path.join(formulaDir, "vana.rb"); + const formula = `class Vana < Formula + desc "Vana Connect CLI" + homepage "https://github.com/${releaseRepo}" + version "${packageVersion}" + license "MIT" + + on_macos do + if Hardware::CPU.arm? + url "${releaseBaseUrl}/${assets.darwinArm64.name}" + sha256 "${assets.darwinArm64.sha256}" + else + url "${releaseBaseUrl}/${assets.darwinX64.name}" + sha256 "${assets.darwinX64.sha256}" + end + end + + on_linux do + url "${releaseBaseUrl}/${assets.linuxX64.name}" + sha256 "${assets.linuxX64.sha256}" + end + + def install + payload_root = Dir.children(buildpath) + .reject { |entry| entry.start_with?(".") } + .find { |entry| File.directory?(buildpath/entry) } || "." + + libexec.install Dir[(buildpath/payload_root/"*").to_s] + (bin/"vana").write_env_script libexec/"vana", VANA_APP_ROOT: libexec/"app" + end + + test do + assert_match "runtime", shell_output("#{bin}/vana status --json") + end +end +`; + await fsp.writeFile(formulaPath, formula, "utf8"); +} + +async function generateWingetManifest({ + outputDir, + releaseBaseUrl, + packageVersion, + assets, +}) { + const packageIdentifier = "Vana.Connect"; + const manifestVersion = "1.10.0"; + const wingetDir = path.join( + outputDir, + "winget", + packageIdentifier, + packageVersion, + ); + await fsp.mkdir(wingetDir, { recursive: true }); + + const versionManifest = `PackageIdentifier: ${packageIdentifier} +PackageVersion: ${packageVersion} +DefaultLocale: en-US +ManifestType: version +ManifestVersion: ${manifestVersion} +`; + + const defaultLocaleManifest = `PackageIdentifier: ${packageIdentifier} +PackageVersion: ${packageVersion} +PackageLocale: en-US +Publisher: Vana +PublisherUrl: https://vana.org +PublisherSupportUrl: https://github.com/${releaseRepo}/issues +PackageName: Vana Connect +PackageUrl: https://github.com/${releaseRepo} +License: MIT +LicenseUrl: https://github.com/${releaseRepo}/blob/main/LICENSE +ShortDescription: Install and run the Vana Connect CLI for data portability workflows. +Description: Vana Connect is a local-first CLI for connecting supported data sources, collecting exports, and syncing them to your Personal Server when available. +Tags: + - cli + - data-portability + - vana + - automation +ReleaseNotesUrl: https://github.com/${releaseRepo}/releases/tag/${releaseTag} +ManifestType: defaultLocale +ManifestVersion: ${manifestVersion} +`; + + const installerManifest = `PackageIdentifier: ${packageIdentifier} +PackageVersion: ${packageVersion} +InstallerType: zip +NestedInstallerType: portable +Commands: + - vana +UpgradeBehavior: install +Installers: + - Architecture: x64 + InstallerUrl: ${releaseBaseUrl}/${assets.win32X64.name} + InstallerSha256: ${assets.win32X64.sha256} + NestedInstallerFiles: + - RelativeFilePath: vana-win32-x64/vana.exe + PortableCommandAlias: vana +ManifestType: installer +ManifestVersion: ${manifestVersion} +`; + + await Promise.all([ + fsp.writeFile( + path.join(wingetDir, `${packageIdentifier}.yaml`), + versionManifest, + "utf8", + ), + fsp.writeFile( + path.join(wingetDir, `${packageIdentifier}.locale.en-US.yaml`), + defaultLocaleManifest, + "utf8", + ), + fsp.writeFile( + path.join(wingetDir, `${packageIdentifier}.installer.yaml`), + installerManifest, + "utf8", + ), + ]); +} From 301101f67be37b2e232e8cc487442da7f9817cf3 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 21:55:37 -0500 Subject: [PATCH 035/249] fix(release): upload only intended release assets --- .github/workflows/prerelease.yml | 2 +- .github/workflows/release.yml | 6 +-- package.json | 1 + scripts/collect-release-assets.mjs | 61 ++++++++++++++++++++++++++++++ 4 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 scripts/collect-release-assets.mjs diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index d8f9f215..eadff435 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -113,7 +113,7 @@ jobs: TAG="canary-${BRANCH_SLUG}" TITLE="Canary ${GITHUB_REF_NAME}" NOTES="Branch canary for ${GITHUB_REF_NAME} at ${SHORT_SHA}. Install with the branch installer and \`--version ${TAG}\`." - mapfile -t RELEASE_FILES < <(find artifacts/release artifacts/package-managers -type f | sort) + mapfile -t RELEASE_FILES < <(pnpm release:collect-assets) if [ "${#RELEASE_FILES[@]}" -eq 0 ]; then echo "No release files were found in artifacts/release" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f2f621b1..03b8b88b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -101,13 +101,13 @@ jobs: RELEASE_TAG=$(gh api repos/${GITHUB_REPOSITORY}/releases/latest --jq .tag_name) PACKAGE_VERSION="${RELEASE_TAG#v}" pnpm package-managers:generate -- --release-tag "$RELEASE_TAG" --package-version "$PACKAGE_VERSION" - - name: Attach package-manager metadata + - name: Attach release assets env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | RELEASE_TAG=$(gh api repos/${GITHUB_REPOSITORY}/releases/latest --jq .tag_name) - mapfile -t PACKAGE_MANAGER_FILES < <(find artifacts/package-managers -type f | sort) - gh release upload "$RELEASE_TAG" "${PACKAGE_MANAGER_FILES[@]}" --clobber + mapfile -t RELEASE_FILES < <(pnpm release:collect-assets) + gh release upload "$RELEASE_TAG" "${RELEASE_FILES[@]}" --clobber verify-release-install: needs: release runs-on: ubuntu-latest diff --git a/package.json b/package.json index 6fde6e63..42dbe6c6 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "format": "prettier --write .", "format:check": "prettier --check .", "package-managers:generate": "node ./scripts/generate-package-manager-metadata.mjs", + "release:collect-assets": "node ./scripts/collect-release-assets.mjs", "validate": "npm run lint && npm run lint:eslint && npm run format:check && npm test", "prepare": "husky" }, diff --git a/scripts/collect-release-assets.mjs b/scripts/collect-release-assets.mjs new file mode 100644 index 00000000..dff3c368 --- /dev/null +++ b/scripts/collect-release-assets.mjs @@ -0,0 +1,61 @@ +import { readdirSync, statSync } from "node:fs"; +import path from "node:path"; + +function getArgMap(argv) { + const args = new Map(); + + for (let index = 2; index < argv.length; index += 1) { + const token = argv[index]; + if (!token.startsWith("--")) { + continue; + } + + const key = token.slice(2); + const next = argv[index + 1]; + + if (next && !next.startsWith("--")) { + args.set(key, next); + index += 1; + } else { + args.set(key, "true"); + } + } + + return args; +} + +function listFiles(dir, predicate = () => true) { + try { + return readdirSync(dir) + .map((name) => path.join(dir, name)) + .filter((filePath) => statSync(filePath).isFile()) + .filter(predicate) + .sort(); + } catch { + return []; + } +} + +const args = getArgMap(process.argv); +const releaseDir = args.get("release-dir") ?? "artifacts/release"; +const packageManagersDir = + args.get("package-managers-dir") ?? "artifacts/package-managers"; + +const releaseFiles = listFiles( + releaseDir, + (filePath) => + filePath.endsWith(".tar.gz") || + filePath.endsWith(".zip") || + filePath.endsWith(".sha256"), +); +const packageManagerFiles = listFiles(path.join(packageManagersDir, "homebrew")) + .concat( + listFiles(path.join(packageManagersDir, "winget"), (filePath) => + filePath.endsWith(".yaml"), + ), + ) + .sort(); + +for (const file of releaseFiles.concat(packageManagerFiles)) { + process.stdout.write(`${file}\n`); +} From 59211c889e510f21f793659c034732e6ba1c7953 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 22:01:00 -0500 Subject: [PATCH 036/249] fix(release): call asset collector directly in workflows --- .github/workflows/prerelease.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index eadff435..474d07ad 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -113,7 +113,7 @@ jobs: TAG="canary-${BRANCH_SLUG}" TITLE="Canary ${GITHUB_REF_NAME}" NOTES="Branch canary for ${GITHUB_REF_NAME} at ${SHORT_SHA}. Install with the branch installer and \`--version ${TAG}\`." - mapfile -t RELEASE_FILES < <(pnpm release:collect-assets) + mapfile -t RELEASE_FILES < <(node ./scripts/collect-release-assets.mjs) if [ "${#RELEASE_FILES[@]}" -eq 0 ]; then echo "No release files were found in artifacts/release" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 03b8b88b..a6aac8be 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -106,7 +106,7 @@ jobs: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | RELEASE_TAG=$(gh api repos/${GITHUB_REPOSITORY}/releases/latest --jq .tag_name) - mapfile -t RELEASE_FILES < <(pnpm release:collect-assets) + mapfile -t RELEASE_FILES < <(node ./scripts/collect-release-assets.mjs) gh release upload "$RELEASE_TAG" "${RELEASE_FILES[@]}" --clobber verify-release-install: needs: release From 4522f2cd78cd214608165f80225116f8ffac6326 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 22:07:42 -0500 Subject: [PATCH 037/249] feat(docs): add homebrew install path --- README.md | 16 ++++++++++++++++ scripts/generate-package-manager-metadata.mjs | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 34161e32..7311b1ec 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,13 @@ If you prefer to integrate the SDK into an existing project, follow the steps be If you are evaluating this branch before it lands on `main`, use the prerelease path in the next section. The stable install commands below are the intended post-merge install path. +macOS with Homebrew: + +```bash +brew tap vana-com/vana +brew install vana +``` + macOS and Linux: ```bash @@ -98,6 +105,15 @@ Both installers fetch the latest GitHub release asset for your platform, verify If you are testing an unreleased branch build, install from the branch installer and pass the prerelease tag explicitly. +macOS with Homebrew: + +```bash +brew tap vana-com/vana +brew install vana +``` + +The current Homebrew tap is following the latest `vana-connect` canary while this CLI is still rolling out. + macOS and Linux: ```bash diff --git a/scripts/generate-package-manager-metadata.mjs b/scripts/generate-package-manager-metadata.mjs index e347e5f9..524d58a3 100644 --- a/scripts/generate-package-manager-metadata.mjs +++ b/scripts/generate-package-manager-metadata.mjs @@ -133,7 +133,8 @@ async function generateHomebrewFormula({ .reject { |entry| entry.start_with?(".") } .find { |entry| File.directory?(buildpath/entry) } || "." - libexec.install Dir[(buildpath/payload_root/"*").to_s] + libexec.install (buildpath/payload_root/"app") + libexec.install (buildpath/payload_root/"vana") (bin/"vana").write_env_script libexec/"vana", VANA_APP_ROOT: libexec/"app" end From f421ec8e0d87363352074019f8764ae136d37e81 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 22:09:16 -0500 Subject: [PATCH 038/249] fix(release): generate working homebrew formula --- scripts/generate-package-manager-metadata.mjs | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/scripts/generate-package-manager-metadata.mjs b/scripts/generate-package-manager-metadata.mjs index 524d58a3..52b6e236 100644 --- a/scripts/generate-package-manager-metadata.mjs +++ b/scripts/generate-package-manager-metadata.mjs @@ -129,12 +129,20 @@ async function generateHomebrewFormula({ end def install - payload_root = Dir.children(buildpath) - .reject { |entry| entry.start_with?(".") } - .find { |entry| File.directory?(buildpath/entry) } || "." - - libexec.install (buildpath/payload_root/"app") - libexec.install (buildpath/payload_root/"vana") + payload_root = + if (buildpath/"vana").exist? && (buildpath/"app").directory? + buildpath + else + child = Dir.children(buildpath) + .reject { |entry| entry.start_with?(".") } + .find { |entry| File.directory?(buildpath/entry) } + raise "Unable to locate Vana payload root" unless child + + buildpath/child + end + + libexec.install payload_root/"app" + libexec.install payload_root/"vana" (bin/"vana").write_env_script libexec/"vana", VANA_APP_ROOT: libexec/"app" end From 527f45699543329d2d7288844de03083d337b0c8 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 22:14:38 -0500 Subject: [PATCH 039/249] fix(release): prune stale branch prerelease assets --- .github/workflows/prerelease.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 474d07ad..ad869dd9 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -121,6 +121,22 @@ jobs: fi if gh release view "$TAG" >/dev/null 2>&1; then + mapfile -t EXISTING_ASSETS < <(gh release view "$TAG" --json assets --jq '.assets[].name' | sort) + + for existing in "${EXISTING_ASSETS[@]}"; do + keep=false + for release_file in "${RELEASE_FILES[@]}"; do + if [ "$existing" = "$(basename "$release_file")" ]; then + keep=true + break + fi + done + + if [ "$keep" = false ]; then + gh release delete-asset "$TAG" "$existing" -y + fi + done + gh release edit "$TAG" \ --target "$GITHUB_SHA" \ --title "$TITLE" \ From 22ef4ab3a656adf94b2795c5556823b6cb75b4ca Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 22:36:07 -0500 Subject: [PATCH 040/249] fix(release): sign macos launcher and correct canary formula version --- .github/workflows/prerelease.yml | 4 +--- scripts/assert-sea-artifact.mjs | 6 ++++++ scripts/build-sea.mjs | 11 +++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index ad869dd9..4e598cdf 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -98,11 +98,9 @@ jobs: merge-multiple: true - name: Generate package-manager metadata run: | - SHORT_SHA=$(git rev-parse --short HEAD) - VERSION=$(node -p "require('./package.json').version") + PACKAGE_VERSION=$(node -p "require('./package.json').version") BRANCH_SLUG=$(printf "%s" "$GITHUB_REF_NAME" | tr '/_' '-' | tr -cd '[:alnum:]-') TAG="canary-${BRANCH_SLUG}" - PACKAGE_VERSION="${VERSION}-canary.${SHORT_SHA}" pnpm package-managers:generate -- --release-tag "$TAG" --package-version "$PACKAGE_VERSION" - name: Publish branch prerelease assets env: diff --git a/scripts/assert-sea-artifact.mjs b/scripts/assert-sea-artifact.mjs index 7a2f5927..8e8e838e 100644 --- a/scripts/assert-sea-artifact.mjs +++ b/scripts/assert-sea-artifact.mjs @@ -76,6 +76,12 @@ if (archiveStat.size < 1024 * 100) { ); } +if (platform === "darwin") { + execFileSync("codesign", ["--verify", "--verbose=2", path.join(artifactDir, binaryName)], { + stdio: "inherit", + }); +} + console.log( `SEA artifact validation passed for ${path.basename(archivePath)} with ${archiveEntries.length} archive entries.`, ); diff --git a/scripts/build-sea.mjs b/scripts/build-sea.mjs index 687c94c0..8144b8aa 100644 --- a/scripts/build-sea.mjs +++ b/scripts/build-sea.mjs @@ -57,6 +57,7 @@ const launcherPath = path.join(scratchDir, "launcher.cjs"); const configPath = path.join(scratchDir, "sea-config.json"); await writeLauncher(launcherPath); await buildLauncher(outputPath, launcherPath, configPath); +await signLauncher(outputPath); await stageAppPayload(appPayloadPath); if (args.has("smoke")) { @@ -105,6 +106,16 @@ async function buildLauncher(outputFile, mainFile, configFile) { }); } +async function signLauncher(outputFile) { + if (platform !== "darwin") { + return; + } + + await run("codesign", ["--force", "--sign", "-", outputFile], { + cwd: repoRoot, + }); +} + async function writeLauncher(outputFile) { const launcher = [ "const fs = require('node:fs');", From ad4683055d8649763ca0477229c7837e00503c27 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 22:51:45 -0500 Subject: [PATCH 041/249] fix(runtime): honor setData result completions --- src/runtime/playwright/in-process-run.ts | 22 ++++++++++- test/runtime/in-process-run.test.ts | 48 ++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/runtime/playwright/in-process-run.ts b/src/runtime/playwright/in-process-run.ts index 5dbb39f1..ef4db9df 100644 --- a/src/runtime/playwright/in-process-run.ts +++ b/src/runtime/playwright/in-process-run.ts @@ -43,6 +43,7 @@ type RunState = { headless: boolean; allowHeaded: boolean; hasResult: boolean; + resultPath: string | null; cookies: Cookie[]; }; @@ -279,6 +280,7 @@ export function startInProcessConnectorRun({ headless: true, allowHeaded: !request.noInput, hasResult: false, + resultPath: null, cookies: [], }; activeRunState = runState; @@ -355,6 +357,8 @@ export function startInProcessConnectorRun({ resultPath, logPath, }); + runState.hasResult = true; + runState.resultPath = resultPath; } runState.connectorCompleted = true; @@ -545,7 +549,23 @@ function createPageApi({ setData: async (key: string, value: unknown) => { if (key === "result") { - runState.hasResult = true; + if (!runState.hasResult) { + const resultPath = getLastResultPath(); + await ensureParentDir(resultPath); + await fsp.writeFile( + resultPath, + `${JSON.stringify(value, null, 2)}\n`, + "utf8", + ); + runState.hasResult = true; + runState.resultPath = resultPath; + pushEvent({ + type: "collection-complete", + source: request.source, + resultPath, + logPath, + }); + } } writeLog( `[data] ${key}=${typeof value === "string" ? value : JSON.stringify(value)}`, diff --git a/test/runtime/in-process-run.test.ts b/test/runtime/in-process-run.test.ts index ddb96041..41ef9734 100644 --- a/test/runtime/in-process-run.test.ts +++ b/test/runtime/in-process-run.test.ts @@ -265,4 +265,52 @@ describe("startInProcessConnectorRun", () => { repositories: [], }); }); + + it("treats setData('result', ...) as collection completion", async () => { + createFakeRuntime(); + const connectorPath = await writeConnector(` +(async () => { + await page.setData("status", "Collecting"); + await page.setData("result", { + profile: { username: "tester" }, + repositories: [] + }); + await page.setData("status", "Complete!"); +})(); +`); + + const { startInProcessConnectorRun } = + await import("../../src/runtime/playwright/in-process-run.js"); + + const handle = startInProcessConnectorRun({ + request: { + connectorPath, + source: "github", + noInput: false, + }, + logPath: path.join(os.tmpdir(), "vana-connect-setdata-result.log"), + }); + + const events = []; + for await (const event of handle.events()) { + events.push(event); + } + + const completion = events.find( + (event) => event.type === "collection-complete", + ); + expect(completion).toEqual( + expect.objectContaining({ + type: "collection-complete", + source: "github", + }), + ); + + const resultPath = (completion as { resultPath: string }).resultPath; + const result = JSON.parse(await fs.readFile(resultPath, "utf8")); + expect(result).toEqual({ + profile: { username: "tester" }, + repositories: [], + }); + }); }); From 9987f1d1366bf648c4bbed1670aff79b8e208032 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 22:54:56 -0500 Subject: [PATCH 042/249] fix(ci): format sea artifact check script --- scripts/assert-sea-artifact.mjs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/assert-sea-artifact.mjs b/scripts/assert-sea-artifact.mjs index 8e8e838e..fcb94524 100644 --- a/scripts/assert-sea-artifact.mjs +++ b/scripts/assert-sea-artifact.mjs @@ -77,9 +77,13 @@ if (archiveStat.size < 1024 * 100) { } if (platform === "darwin") { - execFileSync("codesign", ["--verify", "--verbose=2", path.join(artifactDir, binaryName)], { - stdio: "inherit", - }); + execFileSync( + "codesign", + ["--verify", "--verbose=2", path.join(artifactDir, binaryName)], + { + stdio: "inherit", + }, + ); } console.log( From 5ce45991f19ee3e1fb48d037ca37552367d68946 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 23:17:13 -0500 Subject: [PATCH 043/249] feat(cli): add guided connect and data inspect --- docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md | 723 +++++++++++++++++++++++++ src/cli/index.ts | 258 ++++++++- src/core/cli-types.ts | 1 + src/core/state-store.ts | 1 + test/cli/index.test.ts | 43 ++ 5 files changed, 1022 insertions(+), 4 deletions(-) create mode 100644 docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md diff --git a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md new file mode 100644 index 00000000..44f7417d --- /dev/null +++ b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md @@ -0,0 +1,723 @@ +# `vana-connect` CLI Beauty Implementation Plan + +_As of March 14, 2026_ + +## Purpose + +This document turns the CLI beauty research into an execution plan for the real +`vana` product. + +It is not a brainstorm. It is the recommended implementation path for making +the human-facing CLI feel best-in-class while preserving: + +- the existing command grammar +- the existing agent/machine contract +- the current runtime architecture direction +- broad terminal compatibility + +It should be read together with: + +- [CLI-UX-QUALITY-BAR.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-UX-QUALITY-BAR.md) +- [CLI-AUDIENCE-CONTRACT.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-AUDIENCE-CONTRACT.md) +- [CLI-ONBOARDING-COPY.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-ONBOARDING-COPY.md) +- [CLI-UX-SIMULATION.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-UX-SIMULATION.md) +- [Terminal CLI Beauty Memo](/home/tnunamak/code/data-connectors/skills/vana-connect/docs/cli-beauty-research/terminal-cli-visual-and-emotional-beauty-memo.md) + +## Final Recommendation + +Build beauty as a **human-mode presentation layer** over the existing command +model and event model. + +Do **not** turn `vana` into a full-screen TUI. + +Do **not** let beauty mutate the `--json` contract. + +Do **not** optimize for the most dramatic terminal techniques. Optimize for: + +- clean hierarchy +- confident pacing +- spinner-to-checkmark payoff +- stronger success moments +- small, composable read surfaces +- compatibility-first richness + +The target feel is closer to: + +- Vercel for narrative pacing +- `gh` for restraint +- `@clack/prompts` for interactive continuity + +Not: + +- a Bubble Tea-style full-screen app +- a coding-agent TUI clone +- a flashy branded terminal demo + +## Brand palette anchor + +The CLI should not invent its own theme. It should derive its semantic color +choices from the shared Vana product palette in: + +- [shadcn.css](/home/tnunamak/code/vana-app/packages/ui/src/styles/shadcn.css) + +Important tokens in that file: + +- neutral black/white base +- `--accent`: Vana blue (`#4141fc`) +- `--destructive`: product red +- `--success`: product green +- muted neutrals like `--foreground-secondary` and `--frostgray` + +In terminal form, this should be a **semantic downsampling**, not a literal +translation. + +Use the palette like this: + +- headings and primary labels: neutral bold +- active step / selected source / key emphasis: Vana blue when color allows it +- success: green +- warning: yellow or amber terminal-safe equivalent +- error: red +- supporting text: dim neutral + +Important: + +- do not make the whole CLI blue +- do not require truecolor to feel like Vana +- the brand should show up mostly in emphasis and pacing, not saturation + +## What The Research Implies + +The research points to five conclusions that matter here. + +### 1. Most beauty is not decoration + +The highest-leverage improvements are in: + +- spacing +- section hierarchy +- calm progress +- spinner/checkmark transitions +- clear start and end states + +Not in banners, gradients, or dense terminal chrome. + +### 2. Temporal design matters more than static styling + +`vana connect` is a long-running, state-changing command. That means the user +experience is primarily about: + +- what appears first +- what changes over time +- whether progress feels trustworthy +- whether success lands with a payoff moment + +The transition from “working” to “done” matters more than adding more color. + +### 3. Node has a practical ceiling + +The right architecture is **not** a custom terminal framework. + +For this CLI, the right stack is: + +- simple output rendering +- render-in-place where needed +- careful prompt selection +- no alternate screen buffer +- no heavy React/Ink dependency for v1 beauty + +### 4. Compatibility is part of the product + +The beauty layer must degrade cleanly across: + +- Homebrew installs on macOS +- Linux terminals +- tmux / SSH +- CI / non-TTY +- users with `NO_COLOR` + +This excludes a lot of terminal theatrics from the default path. + +### 5. Beauty should preserve composability + +Best-in-class for `vana` is not just “looks nice.” + +It also means: + +- `--json` stays deterministic +- output can still be piped when explicitly requested +- humans get a better default +- advanced users can still compose with tools like `jq` + +## Product Decision + +The CLI should have **two rendering layers** over one command surface: + +### Layer 1: Machine mode + +Unaffected by beauty work. + +Rules: + +- `--json` remains pure structured output +- no decorative lines +- no spinners +- no extra prose +- stable field names and exit codes + +### Layer 2: Human mode + +This is where beauty work happens. + +Rules: + +- readable hierarchy +- visually distinct phases +- clear trust framing +- minimal but meaningful motion +- satisfying success summary +- one useful next step + +## Non-Negotiable Constraints + +These are product constraints, not preferences. + +1. `vana connect ` remains the canonical first command. +2. Human mode must remain calm and serious, not playful or noisy. +3. `--json` mode must remain stable and decoration-free. +4. Beauty must not depend on full-screen terminal control. +5. Beauty must not materially degrade performance. +6. No output design should assume Nerd Fonts, emoji correctness, or truecolor. +7. Artifact paths remain supporting detail, not the story. +8. A successful run must feel like an outcome, not a file write. + +## What To Build + +## 1. A real terminal presentation system + +Introduce a dedicated human-rendering layer inside the CLI. + +Suggested internal shape: + +- `src/cli/render/capabilities.ts` +- `src/cli/render/theme.ts` +- `src/cli/render/symbols.ts` +- `src/cli/render/format.ts` +- `src/cli/render/progress.ts` +- `src/cli/render/prompts.ts` + +This should own: + +- color decisions +- symbol decisions +- section spacing +- phase rendering +- spinners / transitions +- fallback behavior + +The command handlers should describe **meaning**, not styling: + +- phase started +- phase completed +- success +- warning +- failure +- supporting detail + +## 2. Capability-aware rendering + +Define explicit rendering tiers. + +### Tier A: Plain + +Used for: + +- non-TTY +- CI +- `NO_COLOR` +- future screen-reader/plain modes + +Rules: + +- no spinner animation +- no render-in-place +- ASCII-safe symbols only +- plain line-by-line output + +### Tier B: Standard interactive + +Default target for most users. + +Rules: + +- 4-bit or 8-color hierarchy +- Unicode symbols with ASCII fallback +- simple render-in-place spinners +- no exotic OSC features required + +### Tier C: Rich interactive + +Optional enhancement when capabilities support it. + +Rules: + +- slightly richer color hierarchy +- optional hyperlinks later +- same layout as Tier B, not a different product + +Important: + +`vana` should **not** require truecolor to feel polished. + +## 3. A semantic theme, not ad hoc styling + +Do not scatter raw color calls through command logic. + +Define semantic tokens like: + +- `accent` +- `muted` +- `success` +- `warning` +- `error` +- `heading` +- `dim` + +Define semantic symbols like: + +- `success` +- `error` +- `warning` +- `info` +- `bullet` +- `arrow` +- `spinner` + +Map those semantic tokens back to the shared Vana palette first, then downgrade +them per capability tier. + +Do not require external icon sets. + +## 4. An event-to-progress bridge + +The current CLI is still underpowered here. + +Beauty work should **not** parse log files for progress. It should render from +structured runtime events. + +That means the runtime event model should be extended to support human progress. + +Minimum new event types: + +- `phase-start` +- `phase-update` +- `phase-complete` +- `status-update` +- `count-update` + +Example payloads: + +```json +{"type":"phase-start","source":"github","phase":{"key":"auth","label":"Signing in"}} +{"type":"phase-update","source":"github","phase":{"key":"collect","label":"Collecting"},"message":"Fetched 2 repositories","count":2} +{"type":"phase-complete","source":"github","phase":{"key":"collect","label":"Collecting"}} +``` + +This is the backbone for: + +- calm progress +- spinner/checkmark transitions +- meaningful counts +- better success summaries + +Without this, the beauty layer will remain shallow. + +## 5. A stronger prompt model + +The current prompt layer is serviceable, not great. + +Recommended direction: + +- use `@clack/prompts` for human interactive flows +- keep `--json` / `--no-input` behavior unchanged + +Why: + +- vertical narrative continuity is a high-value, low-risk beauty technique +- prompt flows are part of the emotional arc +- the current inquirer-based experience is functionally fine but visually thin + +Use it for: + +- `vana connect` source picker +- setup confirmation +- credential prompts +- 2FA prompts + +Do not use it to create a mini-app. Use it to make existing interaction feel +cohesive. + +## 6. Better static surfaces + +Before richer motion, the static command surfaces need to feel more deliberate. + +### `vana connect` + +Requirements: + +- `vana connect` with no source becomes a guided entrypoint +- no raw Commander argument error +- source picker shows: + - name + - auth maturity badge + - one-line description + +### `vana sources` + +Requirements: + +- more legible list hierarchy +- install state and auth maturity stay visible +- optional grouping later: + - connected + - available + - legacy/manual + +### `vana status` + +Requirements: + +- compact but more deliberate section styling +- runtime / Personal Server / sources clearly separated +- source lines should scan in one pass +- one detail line max beneath a source unless expanded later + +### `vana data` + +This command family should exist as the first read surface for collected data. + +Minimum scope: + +- `vana data list` +- `vana data show ` +- `vana data path ` + +This is not only about utility. It creates the post-success payoff loop: + +- connect +- inspect +- trust + +## 7. A better connect narrative + +Human `vana connect ` should feel like one narrative with visible phase +changes. + +Recommended flow: + +1. connector resolution +2. setup/runtime preparation if needed +3. trust framing before auth +4. auth/input collection +5. collection progress +6. sync/local-save outcome +7. success summary + +Each phase should: + +- start cleanly +- not spam intermediate output +- end with a visible state transition + +This is where spinners should live, but with restraint. + +## 8. A real success moment + +The current success state is still too weak. + +The human success moment should include: + +- source name +- what was collected +- where it went +- one next step + +Recommended shape: + +```text +Connected GitHub. + +Collected: +- Profile: tridengineer +- Repositories: 2 +- Starred: 0 + +Saved locally: +- /Users/tim/.dataconnect/last-result.json + +Next: +- Run `vana status` +- Or inspect the data with `vana data show github` +``` + +Important: + +- the summary is the trophy moment +- the artifact path is supporting detail +- counts and examples are better than generic “done” + +## 9. Clear error beauty + +Failure states should get the same visual discipline as success states. + +Rules: + +- one-line diagnosis first +- one actionable next step second +- log path third +- no stack traces in normal human mode + +This especially matters for: + +- setup failure +- missing source +- auth failure +- legacy/manual source flows +- connector broke / site changed + +## Explicit Non-Goals For v1 Beauty + +Do not build these into the first beauty pass: + +- full-screen TUI +- alternate screen buffer +- React/Ink interface +- theme system exposed to users +- ASCII banners / logo art +- emoji as core semantics +- truecolor-only visuals +- OSC 8 hyperlinks as required UX +- heavy box drawing everywhere +- animated success banners + +These either increase risk, increase maintenance cost, or violate the quality +bar. + +## Recommended Implementation Stack + +### Keep + +- current command handlers +- current runtime/event architecture +- current `--json` contract + +### Add + +- `@clack/prompts` for interactive human prompts +- `picocolors` for lightweight color styling +- `ora` for simple spinner/checkmark transitions + +### Build in-house + +- capability detection and downgrade rules +- semantic theme +- symbols with ASCII fallback +- connect flow renderer +- static section formatter +- success summary formatter + +### Do not add now + +- Ink +- Listr2 +- Blessed +- alternate screen renderer + +## Why this stack + +`@clack/prompts` gives narrative continuity for prompts. + +`picocolors` keeps styling small and fast. + +`ora` gives the right primitive for spinner-to-checkmark transitions without +dragging in a larger rendering framework. + +The rest should be custom because the product surface is small and the quality +bar is specific. + +## Compatibility Strategy + +The beauty layer should respect: + +- `process.stdout.isTTY` +- `NO_COLOR` +- `CI` +- `TERM=dumb` + +Later, consider explicit flags: + +- `--color=auto|always|never` +- `--plain` +- `--screen-reader` + +But do not block the first beauty pass on adding them. + +The important rule is: + +- if the environment is uncertain, downgrade gracefully + +## Performance Rules + +These are hard rules. + +1. No spinner for operations that finish below perception threshold. +2. No progress update on every tiny event. +3. No render loop driven by timers alone when there is meaningful event data. +4. Prefer event-driven updates to artificial animation. +5. Never let progress rendering materially slow setup/connect. + +Specific rule of thumb: + +- if an operation completes in under ~250ms, print nothing but the resulting + state +- if it lasts longer, show one spinner or one phase line + +## Acceptance Criteria + +The beauty pass is not done until all of these are true. + +### Human mode + +1. `vana connect` without a source is a graceful, guided entrypoint. +2. `vana connect github` has visible but calm phase transitions. +3. A successful run ends with a strong success summary. +4. A local-only success clearly differs from a Personal Server sync success. +5. `vana status` is more legible without becoming verbose. +6. `vana data show github` feels like a real payoff surface. +7. Cancelling a prompt does not dump an exception stack. + +### Machine mode + +1. `--json` output is unchanged except for intentional schema additions. +2. No decorative lines or ANSI output appears in `--json`. +3. Exit codes remain stable. + +### Compatibility + +1. Output remains readable with color disabled. +2. Output remains readable when piped or in CI. +3. The CLI does not require truecolor or Nerd Fonts. + +### Performance + +1. The beauty layer does not introduce visible lag in common flows. +2. No progress rendering causes measurable regressions similar to the npm + progress-bar failure mode. + +## Execution Order + +This is the recommended sequence. + +### Phase 1: Foundation + +- add capability detection +- add semantic theme and symbol layer +- add human renderer primitives +- preserve exact `--json` behavior + +### Phase 2: Static surface upgrade + +- `sources` +- `status` +- `data list` +- `data show` +- `connect` no-source guided entrypoint + +### Phase 3: Connect flow narrative + +- phase rendering +- spinner/checkmark transitions +- trust framing +- prompt migration +- success summary and next-step polish + +### Phase 4: Runtime event enrichment + +- structured progress events +- count updates +- richer completion metadata for summaries + +### Phase 5: Hardening and review + +- compatibility downgrade pass +- transcript tests +- VHS recordings for review +- acceptance testing on: + - macOS Homebrew install + - Linux installer path + - SSH/tmux if possible + +## Testing Strategy + +Beauty work should be tested at three levels. + +### 1. Snapshot/transcript tests + +Golden transcript tests for: + +- `status` +- `sources` +- `connect` happy path +- `connect` local-only success +- `connect` needs input +- `connect` legacy/manual +- `data show` + +### 2. JSON contract tests + +Explicit regression tests that beauty work does not affect: + +- event names +- event fields +- exit codes + +### 3. Recorded review artifacts + +Use terminal recordings for human review: + +- VHS or equivalent +- one tape per key journey + +This matters because terminal beauty is hard to review from code alone. + +## The First Three Concrete Tasks + +When this work starts, do these first: + +1. Introduce the render/capability/theme layer without changing command + semantics. +2. Upgrade `vana connect` no-source, `status`, and `data show` to the new + human renderer. +3. Add a real success summary and next-step block for successful `connect` + runs. + +That sequence gives the highest user-visible value with the lowest architectural +risk. + +## Final Standard + +The final beauty bar is not: + +- “the CLI looks fancy” + +It is: + +- the first command feels obvious +- the connect flow feels calm and trustworthy +- success feels earned +- failure feels understandable +- the CLI remains composable +- the machine contract stays pristine + +If those are true, `vana` will feel much closer to the best references than it +does now, without turning into a fragile terminal toy. diff --git a/src/cli/index.ts b/src/cli/index.ts index f8e3f43e..1d3fcdc4 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -2,7 +2,7 @@ import fs from "node:fs"; import fsp from "node:fs/promises"; import path from "node:path"; -import { confirm, input, password } from "@inquirer/prompts"; +import { confirm, input, password, select } from "@inquirer/prompts"; import { Command } from "commander"; import { @@ -56,13 +56,15 @@ export async function runCli(argv = process.argv): Promise { program.name("vana").description("Vana Connect CLI"); program - .command("connect ") + .command("connect [source]") .option("--json", "Output machine-readable JSON") .option("--no-input", "Fail instead of prompting for input") .option("--yes", "Approve safe setup prompts automatically") .option("--quiet", "Reduce non-essential output") - .action(async (source: string) => { - process.exitCode = await runConnect(source, parsedOptions); + .action(async (source?: string) => { + process.exitCode = source + ? await runConnect(source, parsedOptions) + : await runConnectEntry(parsedOptions); }); program @@ -90,6 +92,31 @@ export async function runCli(argv = process.argv): Promise { process.exitCode = await runSetup(parsedOptions); }); + const data = program.command("data").description("Inspect collected data"); + + data + .command("list") + .description("List locally available collected datasets") + .option("--json", "Output machine-readable JSON") + .action(async () => { + process.exitCode = await runDataList(parsedOptions); + }); + + data + .command("show ") + .description("Show a collected dataset") + .option("--json", "Output machine-readable JSON") + .action(async (source: string) => { + process.exitCode = await runDataShow(source, parsedOptions); + }); + + data + .command("path ") + .description("Print the local path for a collected dataset") + .action(async (source: string) => { + process.exitCode = await runDataPath(source, parsedOptions); + }); + await program.parseAsync(normalizedArgv); return Number(process.exitCode ?? 0); } @@ -304,6 +331,7 @@ async function runConnect( lastRunOutcome: CliOutcomeStatus.LEGACY_AUTH, lastError: event.message ?? "Legacy authentication is required.", dataState: "none", + lastResultPath: null, }); emit.info( event.message ?? @@ -352,6 +380,7 @@ async function runConnect( lastRunOutcome: CliOutcomeStatus.UNEXPECTED_INTERNAL_ERROR, dataState: "none", lastError: "Connector run ended without a result.", + lastResultPath: null, }); emit.event({ type: "outcome", @@ -377,8 +406,11 @@ async function runConnect( lastRunOutcome: finalStatus, dataState, lastError: null, + lastResultPath: resultPath, }); + const resultSummary = await readResultSummary(resultPath); + if (finalStatus === CliOutcomeStatus.CONNECTED_AND_INGESTED) { emit.info(`Connected ${displaySource(source, sourceLabels)}.`); emit.info( @@ -400,6 +432,14 @@ async function runConnect( emit.info(`Local result: ${resultPath}`); } + if (resultSummary) { + emit.info(""); + emit.info("Collected:"); + for (const line of resultSummary.lines) { + emit.info(`- ${line}`); + } + } + if (runLogPath) { emit.info(`Run log: ${runLogPath}`); } else if (fetchLogPath) { @@ -439,6 +479,42 @@ async function runConnect( } } +async function runConnectEntry(options: GlobalOptions): Promise { + const emit = createEmitter(options); + const sources = await loadRegistrySources(); + + if (options.json || options.noInput) { + emit.info("Specify a source. Run `vana sources` to see available options."); + return 1; + } + + if (sources.length === 0) { + emit.info("No sources are available right now."); + emit.info("Run `vana sources` to verify the local connector registry."); + return 1; + } + + emit.info("Choose a source to connect:"); + let source: string; + try { + source = await select({ + message: "Source", + choices: sources.map((item) => ({ + name: `${item.name}${formatAuthModeBadge(item.authMode)}${item.description ? ` - ${item.description}` : ""}`, + value: item.id, + })), + }); + } catch (error) { + if (isPromptCancelled(error)) { + emit.info("Cancelled."); + return 1; + } + throw error; + } + emit.info(""); + return runConnect(source, options); +} + async function runList(options: GlobalOptions): Promise { const sources = await loadRegistrySources(); const installedSourceIds = new Set( @@ -538,6 +614,121 @@ async function runSetup(options: GlobalOptions): Promise { } } +async function runDataList(options: GlobalOptions): Promise { + const state = await readCliState(); + const sources = await gatherSourceStatuses( + state.sources, + createSourceMetadataMap(await loadRegistrySources()), + ); + const datasets = sources + .filter((source) => Boolean(source.lastResultPath)) + .map((source) => ({ + source: source.source, + name: source.name, + dataState: source.dataState, + lastRunAt: source.lastRunAt ?? null, + path: source.lastResultPath ?? null, + })); + + if (options.json) { + process.stdout.write(`${JSON.stringify({ datasets })}\n`); + return 0; + } + + const emit = createEmitter(options); + if (datasets.length === 0) { + emit.info("No local datasets collected yet."); + emit.info("Run `vana connect ` to collect data."); + return 0; + } + + for (const dataset of datasets) { + emit.info( + `${dataset.name ?? displaySource(dataset.source)}${dataset.dataState === "ingested_personal_server" ? " [synced]" : ""} - ${dataset.path}`, + ); + } + return 0; +} + +async function runDataShow( + source: string, + options: GlobalOptions, +): Promise { + const state = await readCliState(); + const record = state.sources[source]; + const resultPath = record?.lastResultPath; + const emit = createEmitter(options); + + if (!resultPath) { + if (options.json) { + process.stdout.write( + `${JSON.stringify({ + error: "dataset_not_found", + source, + message: `No collected dataset found for ${displaySource(source)}. Run \`vana connect ${source}\` first.`, + })}\n`, + ); + } else { + emit.info( + `No collected dataset found for ${displaySource(source)}. Run \`vana connect ${source}\` first.`, + ); + } + return 1; + } + + try { + const raw = await fsp.readFile(resultPath, "utf8"); + const data = JSON.parse(raw) as Record; + if (options.json) { + process.stdout.write( + `${JSON.stringify({ source, path: resultPath, data })}\n`, + ); + return 0; + } + + const summary = summarizeResultData(data); + emit.info(`${displaySource(source)} data`); + emit.info(""); + if (summary) { + for (const line of summary.lines) { + emit.info(`- ${line}`); + } + emit.info(""); + } + emit.info(`Path: ${resultPath}`); + return 0; + } catch (error) { + const message = + error instanceof Error ? error.message : `Could not read ${resultPath}.`; + if (options.json) { + process.stdout.write( + `${JSON.stringify({ error: "dataset_read_failed", source, path: resultPath, message })}\n`, + ); + } else { + emit.info(message); + } + return 1; + } +} + +async function runDataPath( + source: string, + options: GlobalOptions, +): Promise { + const state = await readCliState(); + const resultPath = state.sources[source]?.lastResultPath; + + if (!resultPath) { + createEmitter(options).info( + `No collected dataset found for ${displaySource(source)}.`, + ); + return 1; + } + + process.stdout.write(`${resultPath}\n`); + return 0; +} + function createEmitter(options: GlobalOptions) { return { event(event: CliEvent | CliOutcome) { @@ -602,6 +793,7 @@ async function gatherSourceStatuses( ? "collected_local" : "none", lastError: stored.lastError ?? null, + lastResultPath: stored.lastResultPath ?? null, }; }); } @@ -798,3 +990,61 @@ async function loadRegistrySources() { return []; } } + +async function readResultSummary( + resultPath: string, +): Promise<{ lines: string[] } | null> { + try { + const raw = await fsp.readFile(resultPath, "utf8"); + return summarizeResultData(JSON.parse(raw) as Record); + } catch { + return null; + } +} + +function summarizeResultData( + data: Record, +): { lines: string[] } | null { + const lines: string[] = []; + const exportSummary = + typeof data.exportSummary === "object" && data.exportSummary + ? (data.exportSummary as Record) + : null; + const profile = + typeof data.profile === "object" && data.profile + ? (data.profile as Record) + : null; + + if (profile?.username && typeof profile.username === "string") { + lines.push(`Profile: ${profile.username}`); + } + + if (Array.isArray(data.repositories)) { + lines.push(`Repositories: ${data.repositories.length}`); + } + + if (Array.isArray(data.starred)) { + lines.push(`Starred: ${data.starred.length}`); + } + + if (Array.isArray(data.orders)) { + lines.push(`Orders: ${data.orders.length}`); + } + + if ( + exportSummary?.details && + typeof exportSummary.details === "string" && + !lines.includes(exportSummary.details) + ) { + lines.push(exportSummary.details); + } + + return lines.length > 0 ? { lines } : null; +} + +function isPromptCancelled(error: unknown): boolean { + return ( + error instanceof Error && + (error.name === "ExitPromptError" || error.message.includes("SIGINT")) + ); +} diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index 8ec4d540..5172dd10 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -49,6 +49,7 @@ export const sourceStatusSchema = z.object({ lastRunOutcome: z.string().nullable().optional(), dataState: dataStateSchema.optional(), lastError: z.string().nullable().optional(), + lastResultPath: z.string().nullable().optional(), }); export type SourceStatus = z.infer; diff --git a/src/core/state-store.ts b/src/core/state-store.ts index b2662df0..dc595c98 100644 --- a/src/core/state-store.ts +++ b/src/core/state-store.ts @@ -10,6 +10,7 @@ export interface StoredSourceState { lastRunOutcome?: string | null; dataState?: string | null; lastError?: string | null; + lastResultPath?: string | null; } export interface CliStateFile { diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 8d37d70e..9f9d3cea 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -6,6 +6,7 @@ const mockIngestResult = vi.fn(); const mockReadCliState = vi.fn(); const mockUpdateSourceState = vi.fn(); const mockReaddir = vi.fn(); +const mockReadFile = vi.fn(); const mockExistsSync = vi.fn(); let runtimeState = "installed"; @@ -76,6 +77,7 @@ vi.mock("node:fs", () => ({ vi.mock("node:fs/promises", () => ({ default: { readdir: mockReaddir, + readFile: mockReadFile, }, })); @@ -98,6 +100,7 @@ describe("runCli", () => { mockReadCliState.mockReset(); mockUpdateSourceState.mockReset(); mockReaddir.mockReset(); + mockReadFile.mockReset(); mockExistsSync.mockReset(); runtimeState = "installed"; @@ -116,6 +119,7 @@ describe("runCli", () => { ]); mockReadCliState.mockResolvedValue({ version: 1, sources: {} }); mockReaddir.mockRejectedValue(new Error("missing")); + mockReadFile.mockRejectedValue(new Error("missing")); mockExistsSync.mockReturnValue(false); process.exitCode = 0; }); @@ -228,4 +232,43 @@ describe("runCli", () => { }), ); }); + + it("shows collected data in json mode", async () => { + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + lastResultPath: "/tmp/.dataconnect/github-result.json", + }, + }, + }); + mockReadFile.mockResolvedValue( + JSON.stringify({ + profile: { username: "tridengineer" }, + repositories: [{ name: "vana-connect" }], + exportSummary: { details: "1 repository" }, + }), + ); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli([ + "node", + "vana", + "data", + "show", + "github", + "--json", + ]); + + expect(exitCode).toBe(0); + expect(JSON.parse(stdout)).toEqual({ + source: "github", + path: "/tmp/.dataconnect/github-result.json", + data: { + profile: { username: "tridengineer" }, + repositories: [{ name: "vana-connect" }], + exportSummary: { details: "1 repository" }, + }, + }); + }); }); From d26c23f8d05ffc465f0f123a852c1b7a2703f363 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 23:19:00 -0500 Subject: [PATCH 044/249] fix(cli): use registry labels in data commands --- src/cli/index.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 1d3fcdc4..b8855a92 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -654,6 +654,7 @@ async function runDataShow( source: string, options: GlobalOptions, ): Promise { + const sourceLabels = createSourceLabelMap(await loadRegistrySources()); const state = await readCliState(); const record = state.sources[source]; const resultPath = record?.lastResultPath; @@ -665,12 +666,12 @@ async function runDataShow( `${JSON.stringify({ error: "dataset_not_found", source, - message: `No collected dataset found for ${displaySource(source)}. Run \`vana connect ${source}\` first.`, + message: `No collected dataset found for ${displaySource(source, sourceLabels)}. Run \`vana connect ${source}\` first.`, })}\n`, ); } else { emit.info( - `No collected dataset found for ${displaySource(source)}. Run \`vana connect ${source}\` first.`, + `No collected dataset found for ${displaySource(source, sourceLabels)}. Run \`vana connect ${source}\` first.`, ); } return 1; @@ -687,7 +688,7 @@ async function runDataShow( } const summary = summarizeResultData(data); - emit.info(`${displaySource(source)} data`); + emit.info(`${displaySource(source, sourceLabels)} data`); emit.info(""); if (summary) { for (const line of summary.lines) { @@ -715,12 +716,13 @@ async function runDataPath( source: string, options: GlobalOptions, ): Promise { + const sourceLabels = createSourceLabelMap(await loadRegistrySources()); const state = await readCliState(); const resultPath = state.sources[source]?.lastResultPath; if (!resultPath) { createEmitter(options).info( - `No collected dataset found for ${displaySource(source)}.`, + `No collected dataset found for ${displaySource(source, sourceLabels)}.`, ); return 1; } From 46bbc76f355ca4f911509c1ff18c1e7507a938d5 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 23:26:09 -0500 Subject: [PATCH 045/249] docs(cli): document guided connect and data commands --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 7311b1ec..f256bc14 100644 --- a/README.md +++ b/README.md @@ -143,12 +143,19 @@ npx -y @opendatalabs/connect status ### Commands ```bash +vana connect vana sources vana connect github vana status vana setup +vana data list +vana data show github --json | jq ``` +- `vana connect` opens a guided source picker in human mode. +- `vana connect ` runs the end-to-end collection flow. +- `vana data ...` lets you inspect collected local datasets without opening the raw JSON file yourself. + ### Local development From this repo: From d23fbf57d848cb9b2309a27e62b498a6ac11c323 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 23:30:12 -0500 Subject: [PATCH 046/249] feat(cli): add renderer foundation for human mode --- package.json | 1 + pnpm-lock.yaml | 9 +- src/cli/index.ts | 171 +++++++++++++++++++++++++++------ src/cli/render/capabilities.ts | 38 ++++++++ src/cli/render/format.ts | 79 +++++++++++++++ src/cli/render/index.ts | 4 + src/cli/render/symbols.ts | 32 ++++++ src/cli/render/theme.ts | 33 +++++++ 8 files changed, 334 insertions(+), 33 deletions(-) create mode 100644 src/cli/render/capabilities.ts create mode 100644 src/cli/render/format.ts create mode 100644 src/cli/render/index.ts create mode 100644 src/cli/render/symbols.ts create mode 100644 src/cli/render/theme.ts diff --git a/package.json b/package.json index 42dbe6c6..dec22ac5 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,7 @@ "@inquirer/prompts": "8.3.0", "chromium-bidi": "15.0.0", "commander": "14.0.3", + "picocolors": "^1.1.1", "playwright": "1.58.2", "zod": "4.3.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30fd6d1e..abcf519c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,6 +16,9 @@ importers: commander: specifier: 14.0.3 version: 14.0.3 + picocolors: + specifier: ^1.1.1 + version: 1.1.1 playwright: specifier: 1.58.2 version: 1.58.2 @@ -16149,14 +16152,14 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - "@vitest/mocker@4.0.18(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(vite@7.3.1(@types/node@20.19.33)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))": + "@vitest/mocker@4.0.18(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))": dependencies: "@vitest/spy": 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.12.10(@types/node@20.19.33)(typescript@5.7.3) - vite: 7.3.1(@types/node@20.19.33)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) "@vitest/mocker@4.0.18(msw@2.12.10(@types/node@25.2.2)(typescript@5.7.3))(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))": dependencies: @@ -20986,7 +20989,7 @@ snapshots: vitest@4.0.18(@types/node@20.19.33)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(yaml@2.8.2): dependencies: "@vitest/expect": 4.0.18 - "@vitest/mocker": 4.0.18(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(vite@7.3.1(@types/node@20.19.33)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) + "@vitest/mocker": 4.0.18(msw@2.12.10(@types/node@20.19.33)(typescript@5.7.3))(vite@7.3.1(@types/node@25.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) "@vitest/pretty-format": 4.0.18 "@vitest/runner": 4.0.18 "@vitest/snapshot": 4.0.18 diff --git a/src/cli/index.ts b/src/cli/index.ts index b8855a92..b4afc543 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -5,6 +5,7 @@ import path from "node:path"; import { confirm, input, password, select } from "@inquirer/prompts"; import { Command } from "commander"; +import { createHumanRenderer } from "./render/index.js"; import { CliOutcomeStatus, getBrowserProfilesDir, @@ -49,6 +50,25 @@ interface SourceMetadataMap { }; } +interface Emitter { + event(event: CliEvent | CliOutcome): void; + info(message: string): void; + blank(): void; + title(message: string): void; + section(message: string): void; + keyValue(label: string, value: string, tone?: RenderTone): void; + detail(message: string): void; + bullet(message: string): void; + sourceTitle( + name: string, + badges?: Array<{ text: string; tone?: RenderTone }>, + ): void; + badge(text: string, tone?: RenderTone): string; + code(text: string): string; +} + +type RenderTone = "accent" | "success" | "warning" | "error" | "muted" | "info"; + export async function runCli(argv = process.argv): Promise { const normalizedArgv = normalizeArgv(argv); const parsedOptions = extractGlobalOptions(normalizedArgv); @@ -494,13 +514,15 @@ async function runConnectEntry(options: GlobalOptions): Promise { return 1; } + emit.title("Connect data"); + emit.blank(); emit.info("Choose a source to connect:"); let source: string; try { source = await select({ message: "Source", choices: sources.map((item) => ({ - name: `${item.name}${formatAuthModeBadge(item.authMode)}${item.description ? ` - ${item.description}` : ""}`, + name: `${item.name}${formatAuthModeBadge(item.authMode, emit)}${item.description ? ` - ${item.description}` : ""}`, value: item.id, })), }); @@ -511,7 +533,7 @@ async function runConnectEntry(options: GlobalOptions): Promise { } throw error; } - emit.info(""); + emit.blank(); return runConnect(source, options); } @@ -530,11 +552,22 @@ async function runList(options: GlobalOptions): Promise { } const emit = createEmitter(options); + emit.title("Available sources"); + emit.blank(); for (const source of enrichedSources) { - const description = source.description ? ` - ${source.description}` : ""; - const installed = source.installed ? " [installed]" : ""; - const authMode = formatAuthModeBadge(source.authMode); - emit.info(`${source.name}${installed}${authMode}${description}`); + const badges: Array<{ text: string; tone?: RenderTone }> = []; + if (source.installed) { + badges.push({ text: "installed", tone: "success" }); + } + if (source.authMode === "interactive") { + badges.push({ text: "interactive", tone: "info" }); + } else if (source.authMode === "legacy") { + badges.push({ text: "legacy", tone: "warning" }); + } + emit.sourceTitle(source.name, badges); + if (source.description) { + emit.detail(source.description); + } } return 0; } @@ -562,16 +595,24 @@ async function runStatus(options: GlobalOptions): Promise { return 0; } - emit.info("Vana Connect status"); - emit.info(""); - emit.info(`Runtime: ${status.runtime}`); - emit.info(`Personal Server: ${status.personalServer}`); - emit.info(""); + emit.title("Vana Connect status"); + emit.blank(); + emit.section("Environment"); + emit.keyValue("Runtime", status.runtime, toneForRuntime(status.runtime)); + emit.keyValue( + "Personal Server", + status.personalServer, + status.personalServer === "available" ? "success" : "muted", + ); + if (status.sources.length > 0) { + emit.blank(); + emit.section("Sources"); + } for (const source of status.sources) { - emit.info(formatSourceStatus(source, sourceLabels)); + emit.info(formatSourceStatus(source, sourceLabels, emit)); const details = formatSourceStatusDetail(source); if (details) { - emit.info(` ${details}`); + emit.detail(details); } } return 0; @@ -642,10 +683,15 @@ async function runDataList(options: GlobalOptions): Promise { return 0; } + emit.title("Collected data"); + emit.blank(); for (const dataset of datasets) { - emit.info( - `${dataset.name ?? displaySource(dataset.source)}${dataset.dataState === "ingested_personal_server" ? " [synced]" : ""} - ${dataset.path}`, - ); + const badges = + dataset.dataState === "ingested_personal_server" + ? [{ text: "synced", tone: "success" as const }] + : [{ text: "local", tone: "muted" as const }]; + emit.sourceTitle(dataset.name ?? displaySource(dataset.source), badges); + emit.detail(dataset.path ?? ""); } return 0; } @@ -688,15 +734,15 @@ async function runDataShow( } const summary = summarizeResultData(data); - emit.info(`${displaySource(source, sourceLabels)} data`); - emit.info(""); + emit.title(`${displaySource(source, sourceLabels)} data`); + emit.blank(); if (summary) { for (const line of summary.lines) { - emit.info(`- ${line}`); + emit.bullet(line); } - emit.info(""); + emit.blank(); } - emit.info(`Path: ${resultPath}`); + emit.keyValue("Path", resultPath, "muted"); return 0; } catch (error) { const message = @@ -731,7 +777,9 @@ async function runDataPath( return 0; } -function createEmitter(options: GlobalOptions) { +function createEmitter(options: GlobalOptions): Emitter { + const renderer = createHumanRenderer(); + return { event(event: CliEvent | CliOutcome) { if (options.json) { @@ -744,6 +792,62 @@ function createEmitter(options: GlobalOptions) { } process.stdout.write(`${message}\n`); }, + blank() { + if (options.json || options.quiet) { + return; + } + process.stdout.write("\n"); + }, + title(message: string) { + if (options.json || options.quiet) { + return; + } + process.stdout.write(`${renderer.title(message)}\n`); + }, + section(message: string) { + if (options.json || options.quiet) { + return; + } + process.stdout.write(`${renderer.section(message)}\n`); + }, + keyValue(label: string, value: string, tone: RenderTone = "muted") { + if (options.json || options.quiet) { + return; + } + process.stdout.write(`${renderer.keyValue(label, value, tone)}\n`); + }, + detail(message: string) { + if (options.json || options.quiet) { + return; + } + process.stdout.write(`${renderer.detail(message)}\n`); + }, + bullet(message: string) { + if (options.json || options.quiet) { + return; + } + process.stdout.write(`${renderer.bullet(message)}\n`); + }, + sourceTitle( + name: string, + badges: Array<{ text: string; tone?: RenderTone }> = [], + ) { + if (options.json || options.quiet) { + return; + } + process.stdout.write( + `${renderer.sourceTitle( + name, + badges.map((badge) => renderer.badge(badge.text, badge.tone)), + )}\n`, + ); + }, + badge(text: string, tone: RenderTone = "muted") { + return renderer.badge(text, tone); + }, + code(text: string) { + return renderer.theme.code(text); + }, }; } @@ -832,13 +936,9 @@ async function listInstalledConnectorFiles(): Promise< function formatSourceStatus( source: SourceStatus, labels: SourceLabelMap = {}, + emit?: Emitter, ): string { - const authModeSuffix = - source.authMode === "legacy" - ? " [legacy]" - : source.authMode === "interactive" - ? " [interactive]" - : ""; + const authModeSuffix = formatAuthModeBadge(source.authMode, emit); if (!source.installed) { return `${displaySource(source.source, labels)}${authModeSuffix}: not connected`; @@ -948,18 +1048,29 @@ function createSourceMetadataMap( function formatAuthModeBadge( authMode: "automated" | "interactive" | "legacy" | undefined, + emit?: Pick, ): string { if (authMode === "legacy") { - return " [legacy]"; + return ` ${emit ? emit.badge("legacy", "warning") : "[legacy]"}`; } if (authMode === "interactive") { - return " [interactive]"; + return ` ${emit ? emit.badge("interactive", "info") : "[interactive]"}`; } return ""; } +function toneForRuntime(runtime: CliStatus["runtime"]): RenderTone { + if (runtime === "installed") { + return "success"; + } + if (runtime === "missing") { + return "warning"; + } + return "muted"; +} + function inferInstalledAuthMode( installedFiles: Array<{ source: string; path: string }>, source: string, diff --git a/src/cli/render/capabilities.ts b/src/cli/render/capabilities.ts new file mode 100644 index 00000000..1b1d67c8 --- /dev/null +++ b/src/cli/render/capabilities.ts @@ -0,0 +1,38 @@ +import pc from "picocolors"; + +export type RenderTier = "plain" | "standard" | "rich"; + +export interface RenderCapabilities { + readonly interactive: boolean; + readonly color: boolean; + readonly unicode: boolean; + readonly tier: RenderTier; +} + +export function detectRenderCapabilities(): RenderCapabilities { + const interactive = + Boolean(process.stdout.isTTY) && + process.env.TERM !== "dumb" && + process.env.CI !== "true"; + const color = interactive && pc.isColorSupported && !process.env.NO_COLOR; + const unicode = + process.platform !== "win32" || Boolean(process.env.WT_SESSION); + const tier: RenderTier = + interactive && color && supportsRichColor() + ? "rich" + : interactive + ? "standard" + : "plain"; + + return { + interactive, + color, + unicode, + tier, + }; +} + +function supportsRichColor(): boolean { + const colorTerm = process.env.COLORTERM?.toLowerCase() ?? ""; + return colorTerm.includes("truecolor") || colorTerm.includes("24bit"); +} diff --git a/src/cli/render/format.ts b/src/cli/render/format.ts new file mode 100644 index 00000000..a8736f8b --- /dev/null +++ b/src/cli/render/format.ts @@ -0,0 +1,79 @@ +import { + type RenderCapabilities, + detectRenderCapabilities, +} from "./capabilities.js"; +import { createSymbols, type RenderSymbols } from "./symbols.js"; +import { createTheme, type RenderTheme } from "./theme.js"; + +type Tone = "accent" | "success" | "warning" | "error" | "muted" | "info"; + +export interface HumanRenderer { + readonly capabilities: RenderCapabilities; + readonly symbols: RenderSymbols; + readonly theme: RenderTheme; + blank(): string; + title(text: string): string; + section(text: string): string; + keyValue(label: string, value: string, tone?: Tone): string; + sourceTitle(name: string, badges?: string[]): string; + detail(text: string): string; + bullet(text: string): string; + badge(text: string, tone?: Tone): string; +} + +export function createHumanRenderer(): HumanRenderer { + const capabilities = detectRenderCapabilities(); + const theme = createTheme(capabilities); + const symbols = createSymbols(capabilities); + + return { + capabilities, + symbols, + theme, + blank() { + return ""; + }, + title(text) { + return theme.heading(text); + }, + section(text) { + return theme.accent(text); + }, + keyValue(label, value, tone = "muted") { + return `${theme.label(label)} ${applyTone(theme, tone, value)}`; + }, + sourceTitle(name, badges = []) { + if (badges.length === 0) { + return theme.heading(name); + } + return `${theme.heading(name)} ${badges.join(" ")}`; + }, + detail(text) { + return ` ${theme.dim(text)}`; + }, + bullet(text) { + return `${theme.muted(symbols.bullet)} ${text}`; + }, + badge(text, tone = "muted") { + return applyTone(theme, tone, `[${text}]`); + }, + }; +} + +function applyTone(theme: RenderTheme, tone: Tone, text: string): string { + switch (tone) { + case "accent": + return theme.accent(text); + case "success": + return theme.success(text); + case "warning": + return theme.warning(text); + case "error": + return theme.error(text); + case "info": + return theme.info(text); + case "muted": + default: + return theme.muted(text); + } +} diff --git a/src/cli/render/index.ts b/src/cli/render/index.ts new file mode 100644 index 00000000..028291aa --- /dev/null +++ b/src/cli/render/index.ts @@ -0,0 +1,4 @@ +export * from "./capabilities.js"; +export * from "./format.js"; +export * from "./symbols.js"; +export * from "./theme.js"; diff --git a/src/cli/render/symbols.ts b/src/cli/render/symbols.ts new file mode 100644 index 00000000..bb23de01 --- /dev/null +++ b/src/cli/render/symbols.ts @@ -0,0 +1,32 @@ +import type { RenderCapabilities } from "./capabilities.js"; + +export interface RenderSymbols { + readonly success: string; + readonly error: string; + readonly warning: string; + readonly info: string; + readonly bullet: string; + readonly arrow: string; +} + +export function createSymbols(capabilities: RenderCapabilities): RenderSymbols { + if (!capabilities.unicode) { + return { + success: "OK", + error: "x", + warning: "!", + info: "i", + bullet: "-", + arrow: "->", + }; + } + + return { + success: "✓", + error: "✕", + warning: "!", + info: "•", + bullet: "•", + arrow: "→", + }; +} diff --git a/src/cli/render/theme.ts b/src/cli/render/theme.ts new file mode 100644 index 00000000..d1dfeff2 --- /dev/null +++ b/src/cli/render/theme.ts @@ -0,0 +1,33 @@ +import { createColors } from "picocolors"; + +import type { RenderCapabilities } from "./capabilities.js"; + +export interface RenderTheme { + readonly accent: (text: string) => string; + readonly heading: (text: string) => string; + readonly label: (text: string) => string; + readonly muted: (text: string) => string; + readonly dim: (text: string) => string; + readonly success: (text: string) => string; + readonly warning: (text: string) => string; + readonly error: (text: string) => string; + readonly info: (text: string) => string; + readonly code: (text: string) => string; +} + +export function createTheme(capabilities: RenderCapabilities): RenderTheme { + const colors = createColors(capabilities.color); + + return { + accent: (text) => colors.blue(text), + heading: (text) => colors.bold(text), + label: (text) => colors.bold(text), + muted: (text) => colors.gray(text), + dim: (text) => colors.dim(text), + success: (text) => colors.green(text), + warning: (text) => colors.yellow(text), + error: (text) => colors.red(text), + info: (text) => colors.cyan(text), + code: (text) => colors.bold(text), + }; +} From 320bfb51d9810027346cc5afb96cd8f2c4a51cc8 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 23:37:23 -0500 Subject: [PATCH 047/249] feat(cli): strengthen connect success summary --- src/cli/index.ts | 56 ++++++++++++++++++++-------------------- src/cli/render/format.ts | 2 +- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index b4afc543..b82f5455 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -430,47 +430,45 @@ async function runConnect( }); const resultSummary = await readResultSummary(resultPath); + const connectCommand = emit.code("vana status"); + const dataCommand = emit.code(`vana data show ${source}`); + emit.title(`Connected ${displaySource(source, sourceLabels)}.`); + + emit.blank(); + if (resultSummary) { + emit.section("Collected"); + for (const line of resultSummary.lines) { + emit.bullet(line); + } + } + + emit.blank(); if (finalStatus === CliOutcomeStatus.CONNECTED_AND_INGESTED) { - emit.info(`Connected ${displaySource(source, sourceLabels)}.`); - emit.info( - `Collected your ${displaySource(source, sourceLabels)} data and synced it to your Personal Server.`, - ); + emit.section("Synced"); + emit.bullet("Your data is now available in your Personal Server."); } else { + emit.section("Saved locally"); + emit.bullet(resultPath); if (target.state !== "available") { - emit.info( - `No Personal Server is available right now, so your ${displaySource( - source, - sourceLabels, - )} data was saved locally.`, + emit.detail( + "No Personal Server is available right now, so this run stayed local.", ); } - emit.info(`Connected ${displaySource(source, sourceLabels)}.`); - emit.info( - `Collected your ${displaySource(source, sourceLabels)} data and saved it locally.`, - ); - emit.info(`Local result: ${resultPath}`); - } - - if (resultSummary) { - emit.info(""); - emit.info("Collected:"); - for (const line of resultSummary.lines) { - emit.info(`- ${line}`); - } } if (runLogPath) { - emit.info(`Run log: ${runLogPath}`); + emit.detail(`Run log: ${runLogPath}`); } else if (fetchLogPath) { - emit.info(`Fetch log: ${fetchLogPath}`); + emit.detail(`Fetch log: ${fetchLogPath}`); } else if (setupLogPath) { - emit.info(`Setup log: ${setupLogPath}`); + emit.detail(`Setup log: ${setupLogPath}`); } - emit.info( - "Next: run `vana status` to inspect your current connection state.", - ); + emit.blank(); + emit.section("Next"); + emit.bullet(`Run ${connectCommand}`); + emit.bullet(`Or inspect the data with ${dataCommand}`); emit.event({ type: "outcome", status: finalStatus, @@ -678,6 +676,8 @@ async function runDataList(options: GlobalOptions): Promise { const emit = createEmitter(options); if (datasets.length === 0) { + emit.title("Collected data"); + emit.blank(); emit.info("No local datasets collected yet."); emit.info("Run `vana connect ` to collect data."); return 0; diff --git a/src/cli/render/format.ts b/src/cli/render/format.ts index a8736f8b..309e8482 100644 --- a/src/cli/render/format.ts +++ b/src/cli/render/format.ts @@ -40,7 +40,7 @@ export function createHumanRenderer(): HumanRenderer { return theme.accent(text); }, keyValue(label, value, tone = "muted") { - return `${theme.label(label)} ${applyTone(theme, tone, value)}`; + return `${theme.label(`${label}:`)} ${applyTone(theme, tone, value)}`; }, sourceTitle(name, badges = []) { if (badges.length === 0) { From 3ad043c99d93210bfa6c925d01e8f66dcced53d4 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Fri, 13 Mar 2026 23:44:11 -0500 Subject: [PATCH 048/249] fix(cli): return json error when source is missing --- src/cli/index.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index b82f5455..4117d0a8 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -501,7 +501,18 @@ async function runConnectEntry(options: GlobalOptions): Promise { const emit = createEmitter(options); const sources = await loadRegistrySources(); - if (options.json || options.noInput) { + if (options.json) { + process.stdout.write( + `${JSON.stringify({ + error: "source_required", + message: + "Specify a source. Run `vana sources` to see available options.", + })}\n`, + ); + return 1; + } + + if (options.noInput) { emit.info("Specify a source. Run `vana sources` to see available options."); return 1; } From 18332a5bf775127832f472914abb836803dd7f14 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 07:07:12 -0500 Subject: [PATCH 049/249] fix(cli): soften saved-session copy --- src/cli/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 4117d0a8..3efa147b 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -243,7 +243,7 @@ async function runConnect( ); if (fs.existsSync(profilePath)) { emit.info( - `Found an existing ${displaySource(source, sourceLabels)} session. Trying that first...`, + `Found an existing ${displaySource(source, sourceLabels)} session. Reusing it if it is still valid...`, ); } From 58ce1aacc5b6d0072c75864d18a8889e2112ba06 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 07:22:40 -0500 Subject: [PATCH 050/249] feat(cli): improve connect phase framing --- src/cli/index.ts | 50 +++++++++++++++++++++++------------------- test/cli/index.test.ts | 11 ++++++++++ 2 files changed, 38 insertions(+), 23 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 3efa147b..6b73f4b8 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -149,22 +149,21 @@ async function runConnect( const emit = createEmitter(options); const registrySources = await loadRegistrySources(); const sourceLabels = createSourceLabelMap(registrySources); + const displayName = displaySource(source, sourceLabels); let setupLogPath: string | undefined; let fetchLogPath: string | undefined; let runLogPath: string | undefined; try { - emit.info( - `Finding a connector for ${displaySource(source, sourceLabels)}...`, - ); + emit.title(`Connect ${displayName}`); + emit.blank(); + emit.section("Preparing"); + emit.info(`Finding a connector for ${displayName}...`); const target = await detectPersonalServerTarget(); if (runtime.state !== "installed") { emit.info( - `Vana Connect needs a local browser runtime before it can connect ${displaySource( - source, - sourceLabels, - )}.`, + `Vana Connect needs a local browser runtime before it can connect ${displayName}.`, ); emit.info(""); emit.info("This will install:"); @@ -243,7 +242,7 @@ async function runConnect( ); if (fs.existsSync(profilePath)) { emit.info( - `Found an existing ${displaySource(source, sourceLabels)} session. Reusing it if it is still valid...`, + `Found an existing ${displayName} session. Reusing it if it is still valid...`, ); } @@ -253,7 +252,9 @@ async function runConnect( lastError: null, }); - emit.info(`Connecting to ${displaySource(source, sourceLabels)}...`); + emit.blank(); + emit.section("Connecting"); + emit.info(`Connecting to ${displayName}...`); emit.info("Collecting your data..."); let finalStatus: CliOutcome["status"] = @@ -266,15 +267,16 @@ async function runConnect( source: resolution.source, noInput: options.noInput, onNeedInput: async (needInput) => { - emit.info(""); + emit.blank(); + emit.section("Continue"); emit.info( - `To connect ${displaySource(source, sourceLabels)}, Vana Connect will open a local browser session on this machine.`, + `To connect ${displayName}, Vana Connect will open a local browser session on this machine.`, ); emit.info("Your credentials stay local."); - emit.info(""); + emit.blank(); emit.info( needInput.message ?? - `${displaySource(source, sourceLabels)} needs additional details to continue.`, + `${displayName} needs additional details to continue.`, ); const values: Record = {}; @@ -306,10 +308,12 @@ async function runConnect( }); if (!options.json) { emit.info( - `${displaySource(source, sourceLabels)} needs additional input before it can connect.`, + `${displayName} needs additional input before it can connect.`, ); - emit.info( - `Next: run \`vana connect ${source}\` without \`--no-input\`.`, + emit.blank(); + emit.section("Next"); + emit.bullet( + `Run ${emit.code(`vana connect ${source}`)} without ${emit.code("--no-input")}.`, ); } return 1; @@ -338,9 +342,7 @@ async function runConnect( emit.info(event.message); } if (event.url) { - emit.info( - `Opening ${displaySource(source, sourceLabels)} in a local browser session...`, - ); + emit.info(`Opening ${displayName} in a local browser session...`); } continue; } @@ -357,11 +359,13 @@ async function runConnect( event.message ?? "This connector needs a manual browser step that is not available in non-interactive mode.", ); - emit.info( - `Next: run \`vana connect ${source}\` without \`--no-input\`.`, + emit.blank(); + emit.section("Next"); + emit.bullet( + `Run ${emit.code(`vana connect ${source}`)} without ${emit.code("--no-input")}.`, ); if (event.logPath) { - emit.info(`Run log: ${event.logPath}`); + emit.detail(`Run log: ${event.logPath}`); } emit.event({ type: "outcome", @@ -433,7 +437,7 @@ async function runConnect( const connectCommand = emit.code("vana status"); const dataCommand = emit.code(`vana data show ${source}`); - emit.title(`Connected ${displaySource(source, sourceLabels)}.`); + emit.title(`Connected ${displayName}.`); emit.blank(); if (resultSummary) { diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 9f9d3cea..e5bf5d79 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -271,4 +271,15 @@ describe("runCli", () => { }, }); }); + + it("prints source_required in json mode when connect source is missing", async () => { + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect", "--json"]); + + expect(exitCode).toBe(1); + expect(JSON.parse(stdout)).toEqual({ + error: "source_required", + message: "Specify a source. Run `vana sources` to see available options.", + }); + }); }); From ee856817fdc35d76c7446e99be265e583726ad2d Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 07:35:53 -0500 Subject: [PATCH 051/249] fix(cli): ignore epipe from piped output --- src/cli/bin.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/cli/bin.ts b/src/cli/bin.ts index 342f280d..10ad4e20 100644 --- a/src/cli/bin.ts +++ b/src/cli/bin.ts @@ -2,6 +2,15 @@ import { runCli } from "./index.js"; +for (const stream of [process.stdout, process.stderr]) { + stream.on("error", (error: NodeJS.ErrnoException) => { + if (error.code === "EPIPE") { + process.exit(0); + } + throw error; + }); +} + const exitCode = await runCli(process.argv); if (typeof exitCode === "number") { process.exitCode = exitCode; From d4dbf2364afad12403cd72ceac1d3052fef0813f Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 07:43:20 -0500 Subject: [PATCH 052/249] fix(cli): ignore epipe in launcher entrypoint --- src/cli/main.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/cli/main.ts b/src/cli/main.ts index a5ac4d78..1c849fbe 100644 --- a/src/cli/main.ts +++ b/src/cli/main.ts @@ -1 +1,10 @@ +for (const stream of [process.stdout, process.stderr]) { + stream.on("error", (error: NodeJS.ErrnoException) => { + if (error.code === "EPIPE") { + process.exit(0); + } + throw error; + }); +} + export { runCli } from "./index.js"; From f2e0f0790187225c6c878df5ff164a3f4c26d8f6 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 07:48:26 -0500 Subject: [PATCH 053/249] test(cli): cover connect success summary --- test/cli/index.test.ts | 44 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index e5bf5d79..c56a1862 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -282,4 +282,48 @@ describe("runCli", () => { message: "Specify a source. Run `vana sources` to see available options.", }); }); + + it("prints a human success summary after collection completes", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + description: + "Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation.", + authMode: "interactive", + }, + ]); + fetchConnectorResult = { + connectorPath: "/tmp/connectors/github/github-playwright.js", + logPath: "/tmp/logs/fetch.log", + }; + runConnectorEvents = [ + { + type: "collection-complete", + source: "github", + resultPath: "/tmp/.dataconnect/github-result.json", + logPath: "/tmp/logs/run.log", + }, + ]; + mockReadFile.mockResolvedValue( + JSON.stringify({ + profile: { username: "tridengineer" }, + repositories: [{ name: "vana-connect" }, { name: "data-connect" }], + starred: [], + }), + ); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect", "github"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain("Connected GitHub."); + expect(stdout).toContain("Collected"); + expect(stdout).toContain("Profile: tridengineer"); + expect(stdout).toContain("Repositories: 2"); + expect(stdout).toContain("Saved locally"); + expect(stdout).toContain("/tmp/.dataconnect/github-result.json"); + expect(stdout).toContain("Next"); + expect(stdout).toContain("vana data show github"); + }); }); From 11531bd4200d2e5d0f39ce07f30ef28db42bb5f2 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 07:50:46 -0500 Subject: [PATCH 054/249] feat(cli): add data summary to json output --- src/cli/index.ts | 3 ++- test/cli/index.test.ts | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 6b73f4b8..b44e7886 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -742,8 +742,9 @@ async function runDataShow( const raw = await fsp.readFile(resultPath, "utf8"); const data = JSON.parse(raw) as Record; if (options.json) { + const summary = summarizeResultData(data); process.stdout.write( - `${JSON.stringify({ source, path: resultPath, data })}\n`, + `${JSON.stringify({ source, path: resultPath, summary, data })}\n`, ); return 0; } diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index c56a1862..9eed3327 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -264,6 +264,9 @@ describe("runCli", () => { expect(JSON.parse(stdout)).toEqual({ source: "github", path: "/tmp/.dataconnect/github-result.json", + summary: { + lines: ["Profile: tridengineer", "Repositories: 1", "1 repository"], + }, data: { profile: { username: "tridengineer" }, repositories: [{ name: "vana-connect" }], From 126ebe47353a1400d11b612635ad91083f6d2e4e Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 07:52:25 -0500 Subject: [PATCH 055/249] test(release): cover piped launcher output --- scripts/test-install-github-release.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/test-install-github-release.sh b/scripts/test-install-github-release.sh index 3fc11e6e..7c8e9811 100644 --- a/scripts/test-install-github-release.sh +++ b/scripts/test-install-github-release.sh @@ -66,6 +66,9 @@ echo "Checking status" echo "Checking sources" "$BIN_DIR/vana" sources --json >/dev/null +echo "Checking piped human output" +"$BIN_DIR/vana" sources | head -n 8 >/dev/null + echo "Checking non-interactive connect for ${SOURCE}" set +e CONNECT_OUTPUT="$("$BIN_DIR/vana" connect "$SOURCE" --json --no-input 2>&1)" From 32c01c1460476862a56baed6be4c27ba243bdb7c Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 07:56:07 -0500 Subject: [PATCH 056/249] feat(cli): prioritize mature sources in listings --- src/cli/index.ts | 26 +++++++++++++++++++++++++- test/cli/index.test.ts | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index b44e7886..f8d4fa2b 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -20,6 +20,7 @@ import type { CliStatus, SourceStatus, } from "../core/cli-types.js"; +import type { AvailableSource } from "../connectors/registry.js"; import { listAvailableSources } from "../connectors/registry.js"; import { detectPersonalServerTarget, @@ -1114,12 +1115,35 @@ async function loadRegistrySources() { try { return ( (await listAvailableSources(findDataConnectorsDir() ?? undefined)) ?? [] - ); + ).sort(compareRegistrySourceOrder); } catch { return []; } } +function compareRegistrySourceOrder( + left: AvailableSource, + right: AvailableSource, +): number { + return ( + rankAuthMode(left.authMode) - rankAuthMode(right.authMode) || + left.name.localeCompare(right.name, undefined, { sensitivity: "base" }) + ); +} + +function rankAuthMode(authMode: AvailableSource["authMode"]): number { + if (authMode === "interactive") { + return 0; + } + if (authMode === "automated") { + return 1; + } + if (authMode === "legacy") { + return 2; + } + return 3; +} + async function readResultSummary( resultPath: string, ): Promise<{ lines: string[] } | null> { diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 9eed3327..ea29daa5 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -275,6 +275,43 @@ describe("runCli", () => { }); }); + it("prioritizes higher-maturity sources in human output", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "chatgpt", + name: "ChatGPT", + description: "Exports ChatGPT data.", + authMode: "legacy", + }, + { + id: "github", + name: "GitHub", + description: "Exports GitHub data.", + authMode: "interactive", + }, + ]); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "sources"]); + + expect(exitCode).toBe(0); + const renderedLines = stdout + .split("\n") + .map((line) => line.trim()) + .filter( + (line) => line.startsWith("GitHub") || line.startsWith("ChatGPT"), + ); + const githubIndex = renderedLines.findIndex((line) => + line.startsWith("GitHub"), + ); + const chatgptIndex = renderedLines.findIndex((line) => + line.startsWith("ChatGPT"), + ); + expect(githubIndex).toBeGreaterThanOrEqual(0); + expect(chatgptIndex).toBeGreaterThanOrEqual(0); + expect(githubIndex).toBeLessThan(chatgptIndex); + }); + it("prints source_required in json mode when connect source is missing", async () => { const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "connect", "--json"]); From c9bc881a4bd8fb710a975a0895ec508f1bfc0d5a Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 08:11:30 -0500 Subject: [PATCH 057/249] docs(readme): clarify cli automation examples --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f256bc14..98a9ebf5 100644 --- a/README.md +++ b/README.md @@ -146,14 +146,16 @@ npx -y @opendatalabs/connect status vana connect vana sources vana connect github +vana connect github --json --no-input vana status vana setup vana data list -vana data show github --json | jq +vana data show github --json | jq '.summary.lines' ``` - `vana connect` opens a guided source picker in human mode. - `vana connect ` runs the end-to-end collection flow. +- `vana connect --json --no-input` is the strict machine-safe path for agents and shell automation. - `vana data ...` lets you inspect collected local datasets without opening the raw JSON file yourself. ### Local development From a8eb4410c8633138e9d8933fb00cab94fe74650c Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 08:28:51 -0500 Subject: [PATCH 058/249] feat(cli): deepen data and status inspection --- README.md | 3 + src/cli/index.ts | 384 ++++++++++++++++++++++++++++++++++------- test/cli/index.test.ts | 296 +++++++++++++++++++++++++++++++ 3 files changed, 618 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index 98a9ebf5..25db45df 100644 --- a/README.md +++ b/README.md @@ -150,12 +150,15 @@ vana connect github --json --no-input vana status vana setup vana data list +vana data path github --json vana data show github --json | jq '.summary.lines' ``` - `vana connect` opens a guided source picker in human mode. - `vana connect ` runs the end-to-end collection flow. - `vana connect --json --no-input` is the strict machine-safe path for agents and shell automation. +- `vana sources` groups sources into ready-now vs manual-step flows. +- `vana status` prioritizes sources that need attention before already-connected sources. - `vana data ...` lets you inspect collected local datasets without opening the raw JSON file yourself. ### Local development diff --git a/src/cli/index.ts b/src/cli/index.ts index f8d4fa2b..9d31526c 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -134,6 +134,7 @@ export async function runCli(argv = process.argv): Promise { data .command("path ") .description("Print the local path for a collected dataset") + .option("--json", "Output machine-readable JSON") .action(async (source: string) => { process.exitCode = await runDataPath(source, parsedOptions); }); @@ -219,7 +220,33 @@ async function runConnect( }); } - const fetched = await runtime.fetchConnector(source); + let fetched: Awaited< + ReturnType + >; + try { + fetched = await runtime.fetchConnector(source); + } catch (error) { + const message = + error instanceof Error + ? error.message + : `No connector is available for ${displayName} right now.`; + await updateSourceState(source, { + connectorInstalled: false, + lastRunAt: new Date().toISOString(), + lastRunOutcome: CliOutcomeStatus.CONNECTOR_UNAVAILABLE, + dataState: "none", + lastError: message, + lastResultPath: null, + }); + emit.info(message); + emit.event({ + type: "outcome", + status: CliOutcomeStatus.CONNECTOR_UNAVAILABLE, + source, + reason: message, + }); + return 1; + } fetchLogPath = fetched.logPath; const sourceDetails = registrySources.find((item) => item.id === source); const resolution = { @@ -260,6 +287,8 @@ async function runConnect( let finalStatus: CliOutcome["status"] = CliOutcomeStatus.UNEXPECTED_INTERNAL_ERROR; + let finalDataState: SourceStatus["dataState"] = "none"; + let ingestFailureMessage: string | null = null; let resultPath = getLastResultPath(); let collectedResult = false; @@ -391,9 +420,21 @@ async function runConnect( const ingestCompleted = ingestEvents.some( (ingestEvent) => ingestEvent.type === "ingest-complete", ); - finalStatus = ingestCompleted - ? CliOutcomeStatus.CONNECTED_AND_INGESTED - : CliOutcomeStatus.CONNECTED_LOCAL_ONLY; + const ingestFailedEvent = ingestEvents.find( + (ingestEvent) => ingestEvent.type === "ingest-failed", + ); + if (ingestCompleted) { + finalStatus = CliOutcomeStatus.CONNECTED_AND_INGESTED; + finalDataState = "ingested_personal_server"; + } else if (ingestFailedEvent?.type === "ingest-failed") { + finalStatus = CliOutcomeStatus.INGEST_FAILED; + finalDataState = "ingest_failed"; + ingestFailureMessage = + ingestFailedEvent.message ?? "Personal Server sync failed."; + } else { + finalStatus = CliOutcomeStatus.CONNECTED_LOCAL_ONLY; + finalDataState = "collected_local"; + } } } @@ -419,18 +460,13 @@ async function runConnect( return 1; } - const dataState = - finalStatus === CliOutcomeStatus.CONNECTED_AND_INGESTED - ? "ingested_personal_server" - : "collected_local"; - await updateSourceState(resolution.source, { connectorInstalled: true, sessionPresent: true, lastRunAt: new Date().toISOString(), lastRunOutcome: finalStatus, - dataState, - lastError: null, + dataState: finalDataState, + lastError: ingestFailureMessage, lastResultPath: resultPath, }); @@ -455,7 +491,12 @@ async function runConnect( } else { emit.section("Saved locally"); emit.bullet(resultPath); - if (target.state !== "available") { + if ( + finalStatus === CliOutcomeStatus.INGEST_FAILED && + ingestFailureMessage + ) { + emit.detail(`Personal Server sync failed: ${ingestFailureMessage}`); + } else if (target.state !== "available") { emit.detail( "No Personal Server is available right now, so this run stayed local.", ); @@ -568,20 +609,40 @@ async function runList(options: GlobalOptions): Promise { const emit = createEmitter(options); emit.title("Available sources"); emit.blank(); - for (const source of enrichedSources) { - const badges: Array<{ text: string; tone?: RenderTone }> = []; - if (source.installed) { - badges.push({ text: "installed", tone: "success" }); - } - if (source.authMode === "interactive") { - badges.push({ text: "interactive", tone: "info" }); - } else if (source.authMode === "legacy") { - badges.push({ text: "legacy", tone: "warning" }); + const groups = [ + { + title: "Ready now", + items: enrichedSources.filter((source) => source.authMode !== "legacy"), + }, + { + title: "Manual steps", + items: enrichedSources.filter((source) => source.authMode === "legacy"), + }, + ].filter((group) => group.items.length > 0); + + groups.forEach((group, index) => { + if (index > 0) { + emit.blank(); } - emit.sourceTitle(source.name, badges); - if (source.description) { - emit.detail(source.description); + emit.section(group.title); + for (const source of group.items) { + const badges: Array<{ text: string; tone?: RenderTone }> = []; + if (source.installed) { + badges.push({ text: "installed", tone: "success" }); + } + if (source.authMode === "interactive") { + badges.push({ text: "interactive", tone: "info" }); + } else if (source.authMode === "legacy") { + badges.push({ text: "legacy", tone: "warning" }); + } + emit.sourceTitle(source.name, badges); + if (source.description) { + emit.detail(source.description); + } } + }); + if (groups.length === 0) { + emit.info("No sources are available right now."); } return 0; } @@ -613,20 +674,26 @@ async function runStatus(options: GlobalOptions): Promise { emit.blank(); emit.section("Environment"); emit.keyValue("Runtime", status.runtime, toneForRuntime(status.runtime)); + if (status.runtimePath) { + emit.detail(status.runtimePath); + } emit.keyValue( "Personal Server", status.personalServer, status.personalServer === "available" ? "success" : "muted", ); + if (status.personalServerUrl) { + emit.detail(status.personalServerUrl); + } if (status.sources.length > 0) { emit.blank(); emit.section("Sources"); } for (const source of status.sources) { emit.info(formatSourceStatus(source, sourceLabels, emit)); - const details = formatSourceStatusDetail(source); - if (details) { - emit.detail(details); + const details = formatSourceStatusDetails(source); + for (const detail of details) { + emit.detail(detail); } } return 0; @@ -675,23 +742,29 @@ async function runDataList(options: GlobalOptions): Promise { state.sources, createSourceMetadataMap(await loadRegistrySources()), ); - const datasets = sources - .filter((source) => Boolean(source.lastResultPath)) - .map((source) => ({ - source: source.source, - name: source.name, - dataState: source.dataState, - lastRunAt: source.lastRunAt ?? null, - path: source.lastResultPath ?? null, - })); + const datasetRecords = await Promise.all( + sources + .filter((source) => Boolean(source.lastResultPath)) + .map(async (source) => ({ + source: source.source, + name: source.name, + dataState: source.dataState, + lastRunAt: source.lastRunAt ?? null, + path: source.lastResultPath ?? null, + summary: source.lastResultPath + ? await readResultSummary(source.lastResultPath) + : null, + })), + ); + datasetRecords.sort(compareDatasetOrder); if (options.json) { - process.stdout.write(`${JSON.stringify({ datasets })}\n`); + process.stdout.write(`${JSON.stringify({ datasets: datasetRecords })}\n`); return 0; } const emit = createEmitter(options); - if (datasets.length === 0) { + if (datasetRecords.length === 0) { emit.title("Collected data"); emit.blank(); emit.info("No local datasets collected yet."); @@ -701,12 +774,22 @@ async function runDataList(options: GlobalOptions): Promise { emit.title("Collected data"); emit.blank(); - for (const dataset of datasets) { + for (const dataset of datasetRecords) { const badges = dataset.dataState === "ingested_personal_server" ? [{ text: "synced", tone: "success" as const }] - : [{ text: "local", tone: "muted" as const }]; + : dataset.dataState === "ingest_failed" + ? [{ text: "sync failed", tone: "warning" as const }] + : [{ text: "local", tone: "muted" as const }]; emit.sourceTitle(dataset.name ?? displaySource(dataset.source), badges); + if (dataset.summary) { + for (const line of dataset.summary.lines) { + emit.detail(line); + } + } + if (dataset.lastRunAt) { + emit.detail(`Updated: ${formatTimestamp(dataset.lastRunAt)}`); + } emit.detail(dataset.path ?? ""); } return 0; @@ -742,15 +825,21 @@ async function runDataShow( try { const raw = await fsp.readFile(resultPath, "utf8"); const data = JSON.parse(raw) as Record; + const summary = summarizeResultData(data); if (options.json) { - const summary = summarizeResultData(data); process.stdout.write( - `${JSON.stringify({ source, path: resultPath, summary, data })}\n`, + `${JSON.stringify({ + source, + path: resultPath, + summary, + lastRunAt: record?.lastRunAt ?? null, + dataState: record?.dataState ?? null, + data, + })}\n`, ); return 0; } - const summary = summarizeResultData(data); emit.title(`${displaySource(source, sourceLabels)} data`); emit.blank(); if (summary) { @@ -760,6 +849,16 @@ async function runDataShow( emit.blank(); } emit.keyValue("Path", resultPath, "muted"); + if (record?.lastRunAt) { + emit.keyValue("Updated", formatTimestamp(record.lastRunAt), "muted"); + } + if (record?.dataState === "ingested_personal_server") { + emit.keyValue("State", "Synced to Personal Server", "success"); + } else if (record?.dataState === "ingest_failed") { + emit.keyValue("State", "Saved locally, sync failed", "warning"); + } else { + emit.keyValue("State", "Saved locally", "muted"); + } return 0; } catch (error) { const message = @@ -784,13 +883,27 @@ async function runDataPath( const resultPath = state.sources[source]?.lastResultPath; if (!resultPath) { - createEmitter(options).info( - `No collected dataset found for ${displaySource(source, sourceLabels)}.`, - ); + if (options.json) { + process.stdout.write( + `${JSON.stringify({ + error: "dataset_not_found", + source, + message: `No collected dataset found for ${displaySource(source, sourceLabels)}.`, + })}\n`, + ); + } else { + createEmitter(options).info( + `No collected dataset found for ${displaySource(source, sourceLabels)}.`, + ); + } return 1; } - process.stdout.write(`${resultPath}\n`); + if (options.json) { + process.stdout.write(`${JSON.stringify({ source, path: resultPath })}\n`); + } else { + process.stdout.write(`${resultPath}\n`); + } return 0; } @@ -893,11 +1006,18 @@ async function gatherSourceStatuses( ]); return [...sourceNames] - .sort((left, right) => left.localeCompare(right)) - .map((source) => { + .map((source): SourceStatus => { const stored = storedSources[source] ?? {}; const installed = installedFiles.some((file) => file.source === source); const details = metadata[source]; + const dataState: SourceStatus["dataState"] = + stored.dataState === "ingested_personal_server" + ? "ingested_personal_server" + : stored.dataState === "ingest_failed" + ? "ingest_failed" + : stored.dataState === "collected_local" + ? "collected_local" + : "none"; return { source, name: details?.name, @@ -909,16 +1029,12 @@ async function gatherSourceStatuses( sessionPresent: stored.sessionPresent ?? false, lastRunAt: stored.lastRunAt ?? null, lastRunOutcome: stored.lastRunOutcome ?? null, - dataState: - stored.dataState === "ingested_personal_server" - ? "ingested_personal_server" - : stored.dataState === "collected_local" - ? "collected_local" - : "none", + dataState, lastError: stored.lastError ?? null, lastResultPath: stored.lastResultPath ?? null, }; - }); + }) + .sort(compareSourceStatusOrder); } async function listInstalledConnectorFiles(): Promise< @@ -957,7 +1073,7 @@ function formatSourceStatus( ): string { const authModeSuffix = formatAuthModeBadge(source.authMode, emit); - if (!source.installed) { + if (!source.installed && !source.lastRunOutcome) { return `${displaySource(source.source, labels)}${authModeSuffix}: not connected`; } @@ -973,6 +1089,10 @@ function formatSourceStatus( return `${displaySource(source.source, labels)}${authModeSuffix}: error`; } + if (source.lastRunOutcome === CliOutcomeStatus.CONNECTOR_UNAVAILABLE) { + return `${displaySource(source.source, labels)}${authModeSuffix}: unavailable`; + } + if (source.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { return `${displaySource(source.source, labels)}${authModeSuffix}: manual browser step required`; } @@ -985,29 +1105,76 @@ function formatSourceStatus( return `${displaySource(source.source, labels)}${authModeSuffix}: connected, local only`; } + if (source.dataState === "ingest_failed") { + return `${displaySource(source.source, labels)}${authModeSuffix}: connected, sync failed`; + } + return `${displaySource(source.source, labels)}${authModeSuffix}: connected`; } -function formatSourceStatusDetail(source: SourceStatus): string | null { +function formatSourceStatusDetails(source: SourceStatus): string[] { + const details: string[] = []; + if (source.lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { - return source.lastError - ? `${source.lastError}. Run \`vana connect ${source.source}\` interactively.` - : `Run \`vana connect ${source.source}\` interactively.`; + details.push( + source.lastError + ? `${source.lastError}. Run \`vana connect ${source.source}\` interactively.` + : `Run \`vana connect ${source.source}\` interactively.`, + ); } if (source.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { - return `Run \`vana connect ${source.source}\` without \`--no-input\` to complete the manual browser step.`; + details.push( + `Run \`vana connect ${source.source}\` without \`--no-input\` to complete the manual browser step.`, + ); } if (source.lastRunOutcome === CliOutcomeStatus.RUNTIME_ERROR) { - return source.lastError ?? "The last connector run failed."; + details.push(source.lastError ?? "The last connector run failed."); + } + + if (source.lastRunOutcome === CliOutcomeStatus.CONNECTOR_UNAVAILABLE) { + details.push( + source.lastError ?? "No connector is available for this source.", + ); } if (!source.lastRunOutcome && source.installed) { - return `Run \`vana connect ${source.source}\` to collect data.`; + details.push(`Run \`vana connect ${source.source}\` to collect data.`); + } + + if ( + source.lastRunOutcome === CliOutcomeStatus.CONNECTED_LOCAL_ONLY && + source.lastResultPath + ) { + details.push( + `Inspect the latest local dataset with \`vana data show ${source.source}\`.`, + ); + } + + if (source.lastRunOutcome === CliOutcomeStatus.CONNECTED_AND_INGESTED) { + details.push( + `Inspect the latest local dataset with \`vana data show ${source.source}\` or use your Personal Server copy.`, + ); } - return null; + if (source.lastRunOutcome === CliOutcomeStatus.INGEST_FAILED) { + details.push( + source.lastError + ? `${source.lastError} Inspect the local dataset with \`vana data show ${source.source}\`.` + : `Personal Server sync failed. Inspect the local dataset with \`vana data show ${source.source}\`.`, + ); + } + + if (source.lastRunAt) { + details.push(`Updated: ${formatTimestamp(source.lastRunAt)}`); + } + + if (source.lastResultPath && source.dataState !== "none") { + details.push(source.lastResultPath); + } + + return details; } function normalizeArgv(argv: string[]): string[] { @@ -1131,6 +1298,55 @@ function compareRegistrySourceOrder( ); } +function compareSourceStatusOrder( + left: SourceStatus, + right: SourceStatus, +): number { + return ( + rankSourceStatus(left) - rankSourceStatus(right) || + compareRegistrySourceOrder( + { + id: left.source, + name: left.name ?? displaySource(left.source), + authMode: left.authMode, + }, + { + id: right.source, + name: right.name ?? displaySource(right.source), + authMode: right.authMode, + }, + ) + ); +} + +function rankSourceStatus(source: SourceStatus): number { + if (source.lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { + return 0; + } + if (source.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { + return 1; + } + if (source.lastRunOutcome === CliOutcomeStatus.INGEST_FAILED) { + return 2; + } + if (source.lastRunOutcome === CliOutcomeStatus.RUNTIME_ERROR) { + return 3; + } + if (source.lastRunOutcome === CliOutcomeStatus.CONNECTOR_UNAVAILABLE) { + return 4; + } + if (source.dataState === "ingested_personal_server") { + return 5; + } + if (source.dataState === "collected_local") { + return 6; + } + if (source.installed) { + return 7; + } + return 8; +} + function rankAuthMode(authMode: AvailableSource["authMode"]): number { if (authMode === "interactive") { return 0; @@ -1195,6 +1411,44 @@ function summarizeResultData( return lines.length > 0 ? { lines } : null; } +function formatTimestamp(value: string): string { + const date = new Date(value); + if (Number.isNaN(date.getTime())) { + return value; + } + + return new Intl.DateTimeFormat(undefined, { + dateStyle: "medium", + timeStyle: "short", + }).format(date); +} + +function compareDatasetOrder( + left: { + lastRunAt: string | null; + name: string | undefined; + source: string; + }, + right: { + lastRunAt: string | null; + name: string | undefined; + source: string; + }, +): number { + const leftTime = left.lastRunAt ? Date.parse(left.lastRunAt) : 0; + const rightTime = right.lastRunAt ? Date.parse(right.lastRunAt) : 0; + return ( + rightTime - leftTime || + (left.name ?? left.source).localeCompare( + right.name ?? right.source, + undefined, + { + sensitivity: "base", + }, + ) + ); +} + function isPromptCancelled(error: unknown): boolean { return ( error instanceof Error && diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index ea29daa5..eafafbc6 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -192,6 +192,37 @@ describe("runCli", () => { }); }); + it("shows nuanced source details in human status output", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + sessionPresent: true, + lastRunAt: "2026-03-14T13:10:03.677Z", + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + lastResultPath: "/tmp/.dataconnect/github-result.json", + }, + }, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "status"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain("GitHub [interactive]: connected, local only"); + expect(stdout).toContain("vana data show github"); + expect(stdout).toContain("/tmp/.dataconnect/github-result.json"); + expect(stdout).toContain("/tmp/playwright/chrome"); + }); + it("fails cleanly in json mode when input is required", async () => { runConnectorEvents = [ { @@ -239,6 +270,8 @@ describe("runCli", () => { sources: { github: { lastResultPath: "/tmp/.dataconnect/github-result.json", + lastRunAt: "2026-03-14T13:10:03.677Z", + dataState: "collected_local", }, }, }); @@ -267,6 +300,8 @@ describe("runCli", () => { summary: { lines: ["Profile: tridengineer", "Repositories: 1", "1 repository"], }, + lastRunAt: "2026-03-14T13:10:03.677Z", + dataState: "collected_local", data: { profile: { username: "tridengineer" }, repositories: [{ name: "vana-connect" }], @@ -275,6 +310,98 @@ describe("runCli", () => { }); }); + it("orders collected datasets by most recent run first", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + { id: "chatgpt", name: "ChatGPT", authMode: "legacy" }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + lastResultPath: "/tmp/.dataconnect/github-result.json", + lastRunAt: "2026-03-14T13:10:03.677Z", + dataState: "collected_local", + }, + chatgpt: { + lastResultPath: "/tmp/.dataconnect/chatgpt-result.json", + lastRunAt: "2026-03-14T12:10:03.677Z", + dataState: "collected_local", + }, + }, + }); + mockReadFile.mockImplementation(async (filePath: string) => + JSON.stringify({ + profile: { + username: filePath.includes("github") ? "tridengineer" : "chatgpt", + }, + }), + ); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "data", "list", "--json"]); + + expect(exitCode).toBe(0); + expect( + JSON.parse(stdout).datasets.map( + (item: { source: string }) => item.source, + ), + ).toEqual(["github", "chatgpt"]); + }); + + it("shows collected data paths in json mode", async () => { + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + lastResultPath: "/tmp/.dataconnect/github-result.json", + }, + }, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli([ + "node", + "vana", + "data", + "path", + "github", + "--json", + ]); + + expect(exitCode).toBe(0); + expect(JSON.parse(stdout)).toEqual({ + source: "github", + path: "/tmp/.dataconnect/github-result.json", + }); + }); + + it("returns a structured error when a collected dataset path is missing", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + }, + ]); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli([ + "node", + "vana", + "data", + "path", + "github", + "--json", + ]); + + expect(exitCode).toBe(1); + expect(JSON.parse(stdout)).toEqual({ + error: "dataset_not_found", + source: "github", + message: "No collected dataset found for GitHub.", + }); + }); + it("prioritizes higher-maturity sources in human output", async () => { mockListAvailableSources.mockResolvedValue([ { @@ -310,6 +437,49 @@ describe("runCli", () => { expect(githubIndex).toBeGreaterThanOrEqual(0); expect(chatgptIndex).toBeGreaterThanOrEqual(0); expect(githubIndex).toBeLessThan(chatgptIndex); + expect(stdout).toContain("Ready now"); + expect(stdout).toContain("Manual steps"); + }); + + it("orders status output by what needs attention first", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + { id: "spotify", name: "Spotify", authMode: "legacy" }, + { id: "steam", name: "Steam" }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + lastRunOutcome: "needs_input", + lastError: "Log in to GitHub", + }, + spotify: { + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + lastResultPath: "/tmp/.dataconnect/spotify-result.json", + }, + steam: { + lastRunOutcome: "connector_unavailable", + lastError: "No connector is available for steam right now.", + }, + }, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "status"]); + + expect(exitCode).toBe(0); + const githubIndex = stdout.indexOf("GitHub [interactive]: needs input"); + const steamIndex = stdout.indexOf("Steam: unavailable"); + const spotifyIndex = stdout.indexOf( + "Spotify [legacy]: connected, local only", + ); + expect(githubIndex).toBeGreaterThanOrEqual(0); + expect(steamIndex).toBeGreaterThanOrEqual(0); + expect(spotifyIndex).toBeGreaterThanOrEqual(0); + expect(githubIndex).toBeLessThan(steamIndex); + expect(steamIndex).toBeLessThan(spotifyIndex); }); it("prints source_required in json mode when connect source is missing", async () => { @@ -366,4 +536,130 @@ describe("runCli", () => { expect(stdout).toContain("Next"); expect(stdout).toContain("vana data show github"); }); + + it("records ingest failures as local data with sync failure state", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + }, + ]); + fetchConnectorResult = { + connectorPath: "/tmp/connectors/github/github-playwright.js", + logPath: "/tmp/logs/fetch.log", + }; + runConnectorEvents = [ + { + type: "collection-complete", + source: "github", + resultPath: "/tmp/.dataconnect/github-result.json", + logPath: "/tmp/logs/run.log", + }, + ]; + mockIngestResult.mockResolvedValue([ + { + type: "ingest-failed", + source: "github", + target: "http://localhost:8080", + message: "server exploded", + }, + ]); + mockReadFile.mockResolvedValue( + JSON.stringify({ + profile: { username: "tridengineer" }, + }), + ); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect", "github"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain("Saved locally"); + expect(stdout).toContain("Personal Server sync failed: server exploded"); + expect(mockUpdateSourceState).toHaveBeenLastCalledWith( + "github", + expect.objectContaining({ + lastRunOutcome: "ingest_failed", + dataState: "ingest_failed", + lastError: "server exploded", + }), + ); + }); + + it("returns connector_unavailable when no connector exists", async () => { + mockListAvailableSources.mockResolvedValue([]); + fetchConnectorResult = undefined as never; + const runtimeImport = await import("../../src/runtime/index.js"); + const fetchSpy = vi + .spyOn(runtimeImport.ManagedPlaywrightRuntime.prototype, "fetchConnector") + .mockRejectedValueOnce( + new Error("No connector is available for Steam right now."), + ); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli([ + "node", + "vana", + "connect", + "steam", + "--json", + ]); + + fetchSpy.mockRestore(); + + expect(exitCode).toBe(1); + const lines = stdout + .trim() + .split("\n") + .map((line) => JSON.parse(line)); + expect(lines).toContainEqual( + expect.objectContaining({ + type: "outcome", + status: "connector_unavailable", + source: "steam", + reason: "No connector is available for Steam right now.", + }), + ); + }); + + it("mentions reusable sessions when a browser profile exists", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + }, + ]); + fetchConnectorResult = { + connectorPath: "/tmp/connectors/github/github-playwright.js", + logPath: "/tmp/logs/fetch.log", + }; + runConnectorEvents = [ + { + type: "needs-input", + source: "github", + message: "Log in to GitHub", + fields: ["username", "password"], + }, + ]; + mockExistsSync.mockImplementation( + (value) => + typeof value === "string" && value.includes("github-playwright"), + ); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli([ + "node", + "vana", + "connect", + "github", + "--no-input", + ]); + + expect(exitCode).toBe(1); + expect(stdout).toContain( + "Found an existing GitHub session. Reusing it if it is still valid...", + ); + }); }); From 994c128eddf60b91e621d05802118c8ea08ecc4a Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 08:31:31 -0500 Subject: [PATCH 059/249] feat(cli): improve data and status surfaces --- src/cli/index.ts | 44 +++++++++++++++++++++++++++++++++++------- test/cli/index.test.ts | 1 + 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 9d31526c..a196fce0 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -685,17 +685,47 @@ async function runStatus(options: GlobalOptions): Promise { if (status.personalServerUrl) { emit.detail(status.personalServerUrl); } - if (status.sources.length > 0) { + const sourceGroups = [ + { + title: "Needs attention", + items: status.sources.filter((source) => rankSourceStatus(source) <= 4), + }, + { + title: "Connected", + items: status.sources.filter( + (source) => + source.dataState === "ingested_personal_server" || + source.dataState === "collected_local" || + source.dataState === "ingest_failed", + ), + }, + { + title: "Installed", + items: status.sources.filter( + (source) => + rankSourceStatus(source) > 4 && + source.dataState === "none" && + source.installed, + ), + }, + ].filter((group) => group.items.length > 0); + if (sourceGroups.length > 0) { emit.blank(); emit.section("Sources"); } - for (const source of status.sources) { - emit.info(formatSourceStatus(source, sourceLabels, emit)); - const details = formatSourceStatusDetails(source); - for (const detail of details) { - emit.detail(detail); + sourceGroups.forEach((group, index) => { + if (index > 0) { + emit.blank(); } - } + emit.section(group.title); + for (const source of group.items) { + emit.info(formatSourceStatus(source, sourceLabels, emit)); + const details = formatSourceStatusDetails(source); + for (const detail of details) { + emit.detail(detail); + } + } + }); return 0; } diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index eafafbc6..243f8dbf 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -217,6 +217,7 @@ describe("runCli", () => { const exitCode = await runCli(["node", "vana", "status"]); expect(exitCode).toBe(0); + expect(stdout).toContain("Connected"); expect(stdout).toContain("GitHub [interactive]: connected, local only"); expect(stdout).toContain("vana data show github"); expect(stdout).toContain("/tmp/.dataconnect/github-result.json"); From 351f32d0ce54951a80c0ef8181835bb00f57b703 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 10:06:52 -0500 Subject: [PATCH 060/249] feat(cli): polish static surfaces and scaffold demos --- README.md | 11 ++ docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md | 37 ++++- docs/vhs/README.md | 48 +++++++ .../chromium-1200/chrome-linux64/chrome | 0 .../connectors/github/github-playwright.js | 1 + .../connectors/shop/shop-playwright.js | 1 + .../connectors/spotify/spotify-playwright.js | 1 + .../demo-home/.dataconnect/github-result.json | 14 ++ .../.dataconnect/spotify-result.json | 13 ++ .../.dataconnect/vana-connect-state.json | 29 ++++ docs/vhs/status-and-sources.tape | 21 +++ package.json | 1 + scripts/prepare-vhs-fixtures.mjs | 132 ++++++++++++++++++ src/cli/index.ts | 112 ++++++++------- src/cli/render/format.ts | 2 +- src/cli/render/theme.ts | 18 +++ test/cli/index.test.ts | 10 +- 17 files changed, 390 insertions(+), 61 deletions(-) create mode 100644 docs/vhs/README.md create mode 100755 docs/vhs/fixtures/demo-home/.dataconnect/browsers/chromium-1200/chrome-linux64/chrome create mode 100644 docs/vhs/fixtures/demo-home/.dataconnect/connectors/github/github-playwright.js create mode 100644 docs/vhs/fixtures/demo-home/.dataconnect/connectors/shop/shop-playwright.js create mode 100644 docs/vhs/fixtures/demo-home/.dataconnect/connectors/spotify/spotify-playwright.js create mode 100644 docs/vhs/fixtures/demo-home/.dataconnect/github-result.json create mode 100644 docs/vhs/fixtures/demo-home/.dataconnect/spotify-result.json create mode 100644 docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json create mode 100644 docs/vhs/status-and-sources.tape create mode 100644 scripts/prepare-vhs-fixtures.mjs diff --git a/README.md b/README.md index 25db45df..7aa5ae45 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,17 @@ vana data show github --json | jq '.summary.lines' - `vana status` prioritizes sources that need attention before already-connected sources. - `vana data ...` lets you inspect collected local datasets without opening the raw JSON file yourself. +### CLI demos + +The branch also includes deterministic VHS demo scaffolding under +[`docs/vhs/`](./docs/vhs/README.md). + +To seed the fixture home used by the first tapes: + +```bash +pnpm demo:vhs:fixtures +``` + ### Local development From this repo: diff --git a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md index 44f7417d..c0f879f6 100644 --- a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md +++ b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md @@ -149,6 +149,33 @@ It also means: - humans get a better default - advanced users can still compose with tools like `jq` +## README demo strategy + +The README should become a reliable progress surface for the team, not just a +reference page. + +To support that, add **VHS-based terminal recordings early**, not at the end. + +Why: + +- they make progress visible to people who are not running the branch locally +- they force the human-mode CLI to stay coherent across releases +- they create a deterministic review artifact instead of ad hoc screenshots +- they make README updates a meaningful indicator of product quality + +The right model is: + +- checked-in `.tape` files under a dedicated folder such as `docs/vhs/` +- deterministic fixture data and temp-home setup +- generated SVG assets committed to the repo for README use +- CI verification that the tapes still render + +Important: + +- do not rely on live credentials or real connector runs for README demos +- do not make VHS the source of truth for behavior; tests remain the source of truth +- do treat VHS as a first-class product artifact that should stay current + ## Product Decision The CLI should have **two rendering layers** over one command surface: @@ -624,6 +651,7 @@ This is the recommended sequence. - add semantic theme and symbol layer - add human renderer primitives - preserve exact `--json` behavior +- add VHS scaffolding and one README-quality demo tape ### Phase 2: Static surface upgrade @@ -632,6 +660,7 @@ This is the recommended sequence. - `data list` - `data show` - `connect` no-source guided entrypoint +- embed at least one generated VHS SVG in the README ### Phase 3: Connect flow narrative @@ -690,15 +719,17 @@ Use terminal recordings for human review: This matters because terminal beauty is hard to review from code alone. -## The First Three Concrete Tasks +## The First Four Concrete Tasks When this work starts, do these first: 1. Introduce the render/capability/theme layer without changing command semantics. -2. Upgrade `vana connect` no-source, `status`, and `data show` to the new +2. Add VHS scaffolding plus one deterministic README-quality tape for `status` + and `sources`. +3. Upgrade `vana connect` no-source, `status`, and `data show` to the new human renderer. -3. Add a real success summary and next-step block for successful `connect` +4. Add a real success summary and next-step block for successful `connect` runs. That sequence gives the highest user-visible value with the lowest architectural diff --git a/docs/vhs/README.md b/docs/vhs/README.md new file mode 100644 index 00000000..46ca8b60 --- /dev/null +++ b/docs/vhs/README.md @@ -0,0 +1,48 @@ +# VHS demos + +This directory holds deterministic terminal demo assets for the `vana` CLI. + +The goal is to make the README a reliable progress surface for the team without +depending on live credentials or live connector runs. + +## Fixture model + +The demo tapes should use: + +- a temp or fixture `HOME` +- `VANA_DATA_CONNECTORS_DIR` pointing at the local `data-connectors` repo +- seeded `~/.dataconnect/` state and result files + +Prepare the fixture home with: + +```bash +pnpm demo:vhs:fixtures +``` + +That creates: + +- `docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json` +- fake installed connector files +- a fake downloaded Chromium path so `vana status` reads as installed +- sample collected result files for `vana data ...` + +## Planned first tapes + +- `status-and-sources.tape` +- `data-inspection.tape` +- `connect-guided.tape` + +## Rendering + +The preferred renderer is `vhs` from Charm. + +Typical usage once `vhs` is available locally: + +```bash +HOME="$PWD/docs/vhs/fixtures/demo-home" \ +VANA_DATA_CONNECTORS_DIR="/home/tnunamak/code/data-connectors" \ +vhs docs/vhs/status-and-sources.tape +``` + +Generated SVG assets should be committed once they are stable enough for the +README. diff --git a/docs/vhs/fixtures/demo-home/.dataconnect/browsers/chromium-1200/chrome-linux64/chrome b/docs/vhs/fixtures/demo-home/.dataconnect/browsers/chromium-1200/chrome-linux64/chrome new file mode 100755 index 00000000..e69de29b diff --git a/docs/vhs/fixtures/demo-home/.dataconnect/connectors/github/github-playwright.js b/docs/vhs/fixtures/demo-home/.dataconnect/connectors/github/github-playwright.js new file mode 100644 index 00000000..7605c970 --- /dev/null +++ b/docs/vhs/fixtures/demo-home/.dataconnect/connectors/github/github-playwright.js @@ -0,0 +1 @@ +// demo fixture diff --git a/docs/vhs/fixtures/demo-home/.dataconnect/connectors/shop/shop-playwright.js b/docs/vhs/fixtures/demo-home/.dataconnect/connectors/shop/shop-playwright.js new file mode 100644 index 00000000..7605c970 --- /dev/null +++ b/docs/vhs/fixtures/demo-home/.dataconnect/connectors/shop/shop-playwright.js @@ -0,0 +1 @@ +// demo fixture diff --git a/docs/vhs/fixtures/demo-home/.dataconnect/connectors/spotify/spotify-playwright.js b/docs/vhs/fixtures/demo-home/.dataconnect/connectors/spotify/spotify-playwright.js new file mode 100644 index 00000000..7605c970 --- /dev/null +++ b/docs/vhs/fixtures/demo-home/.dataconnect/connectors/spotify/spotify-playwright.js @@ -0,0 +1 @@ +// demo fixture diff --git a/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json b/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json new file mode 100644 index 00000000..8650ae95 --- /dev/null +++ b/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json @@ -0,0 +1,14 @@ +{ + "profile": { + "username": "tridengineer" + }, + "repositories": [ + { + "name": "vana_oft_presale" + }, + { + "name": "minddao" + } + ], + "starred": [] +} diff --git a/docs/vhs/fixtures/demo-home/.dataconnect/spotify-result.json b/docs/vhs/fixtures/demo-home/.dataconnect/spotify-result.json new file mode 100644 index 00000000..a284ddda --- /dev/null +++ b/docs/vhs/fixtures/demo-home/.dataconnect/spotify-result.json @@ -0,0 +1,13 @@ +{ + "profile": { + "username": "tridengineer" + }, + "playlists": [ + { + "name": "Daily Mix 1" + }, + { + "name": "Focus" + } + ] +} diff --git a/docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json b/docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json new file mode 100644 index 00000000..0de5771c --- /dev/null +++ b/docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "sources": { + "github": { + "sessionPresent": true, + "lastRunAt": "2026-03-14T13:10:03.677Z", + "lastRunOutcome": "connected_local_only", + "dataState": "collected_local", + "lastResultPath": "/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json" + }, + "shop": { + "lastRunAt": "2026-03-14T13:11:10.000Z", + "lastRunOutcome": "legacy_auth", + "dataState": "none" + }, + "steam": { + "lastRunAt": "2026-03-14T13:12:00.000Z", + "lastRunOutcome": "connector_unavailable", + "dataState": "none", + "lastError": "No connector is available for steam right now." + }, + "spotify": { + "lastRunAt": "2026-03-13T21:23:00.000Z", + "lastRunOutcome": "connected_local_only", + "dataState": "collected_local", + "lastResultPath": "/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/spotify-result.json" + } + } +} diff --git a/docs/vhs/status-and-sources.tape b/docs/vhs/status-and-sources.tape new file mode 100644 index 00000000..fb380b98 --- /dev/null +++ b/docs/vhs/status-and-sources.tape @@ -0,0 +1,21 @@ +Output docs/vhs/status-and-sources.svg + +Set Shell "bash" +Set FontSize 16 +Set Width 1200 +Set Height 900 +Set TypingSpeed 0ms + +Require pnpm + +Type "pnpm demo:vhs:fixtures" +Enter +Sleep 800ms + +Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" VANA_DATA_CONNECTORS_DIR=\"/home/tnunamak/code/data-connectors\" node dist/cli/bin.js status" +Enter +Sleep 1200ms + +Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" VANA_DATA_CONNECTORS_DIR=\"/home/tnunamak/code/data-connectors\" node dist/cli/bin.js sources" +Enter +Sleep 1200ms diff --git a/package.json b/package.json index dec22ac5..bc252ca6 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "build:sea:smoke": "npx -y node@25 ./scripts/build-sea.mjs --smoke", "clean": "node ./scripts/clean-build.mjs", "cli": "node dist/cli/bin.js", + "demo:vhs:fixtures": "node ./scripts/prepare-vhs-fixtures.mjs", "pack:check": "node ./scripts/assert-pack-contents.mjs", "sea:check": "node ./scripts/assert-sea-artifact.mjs", "skills:sync": "node scripts/sync-skills.js", diff --git a/scripts/prepare-vhs-fixtures.mjs b/scripts/prepare-vhs-fixtures.mjs new file mode 100644 index 00000000..c30326b4 --- /dev/null +++ b/scripts/prepare-vhs-fixtures.mjs @@ -0,0 +1,132 @@ +import fs from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const repoRoot = path.resolve(__dirname, ".."); +const fixturesRoot = path.join(repoRoot, "docs", "vhs", "fixtures"); +const homeRoot = path.join(fixturesRoot, "demo-home"); +const dataConnectRoot = path.join(homeRoot, ".dataconnect"); + +async function main() { + await fs.rm(homeRoot, { recursive: true, force: true }); + + await fs.mkdir(path.join(dataConnectRoot, "connectors", "github"), { + recursive: true, + }); + await fs.mkdir(path.join(dataConnectRoot, "connectors", "shop"), { + recursive: true, + }); + await fs.mkdir(path.join(dataConnectRoot, "connectors", "spotify"), { + recursive: true, + }); + await fs.mkdir( + path.join(dataConnectRoot, "browsers", "chromium-1200", "chrome-linux64"), + { + recursive: true, + }, + ); + await fs.mkdir(path.join(dataConnectRoot, "logs"), { recursive: true }); + + await fs.writeFile( + path.join(dataConnectRoot, "connectors", "github", "github-playwright.js"), + "// demo fixture\n", + "utf8", + ); + await fs.writeFile( + path.join(dataConnectRoot, "connectors", "shop", "shop-playwright.js"), + "// demo fixture\n", + "utf8", + ); + await fs.writeFile( + path.join( + dataConnectRoot, + "connectors", + "spotify", + "spotify-playwright.js", + ), + "// demo fixture\n", + "utf8", + ); + + const browserPath = path.join( + dataConnectRoot, + "browsers", + "chromium-1200", + "chrome-linux64", + "chrome", + ); + await fs.writeFile(browserPath, "", "utf8"); + await fs.chmod(browserPath, 0o755); + + const state = { + version: 1, + sources: { + github: { + sessionPresent: true, + lastRunAt: "2026-03-14T13:10:03.677Z", + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + lastResultPath: path.join(dataConnectRoot, "github-result.json"), + }, + shop: { + lastRunAt: "2026-03-14T13:11:10.000Z", + lastRunOutcome: "legacy_auth", + dataState: "none", + }, + steam: { + lastRunAt: "2026-03-14T13:12:00.000Z", + lastRunOutcome: "connector_unavailable", + dataState: "none", + lastError: "No connector is available for steam right now.", + }, + spotify: { + lastRunAt: "2026-03-13T21:23:00.000Z", + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + lastResultPath: path.join(dataConnectRoot, "spotify-result.json"), + }, + }, + }; + + await fs.writeFile( + path.join(dataConnectRoot, "vana-connect-state.json"), + `${JSON.stringify(state, null, 2)}\n`, + "utf8", + ); + + await fs.writeFile( + path.join(dataConnectRoot, "github-result.json"), + `${JSON.stringify( + { + profile: { username: "tridengineer" }, + repositories: [{ name: "vana_oft_presale" }, { name: "minddao" }], + starred: [], + }, + null, + 2, + )}\n`, + "utf8", + ); + await fs.writeFile( + path.join(dataConnectRoot, "spotify-result.json"), + `${JSON.stringify( + { + profile: { username: "tridengineer" }, + playlists: [{ name: "Daily Mix 1" }, { name: "Focus" }], + }, + null, + 2, + )}\n`, + "utf8", + ); + + process.stdout.write(`Prepared VHS fixtures at ${homeRoot}\n`); +} + +main().catch((error) => { + process.stderr.write( + `${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`, + ); + process.exitCode = 1; +}); diff --git a/src/cli/index.ts b/src/cli/index.ts index a196fce0..8e8f4b3f 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -719,7 +719,15 @@ async function runStatus(options: GlobalOptions): Promise { } emit.section(group.title); for (const source of group.items) { - emit.info(formatSourceStatus(source, sourceLabels, emit)); + const status = getSourceStatusPresentation(source); + const badges: Array<{ text: string; tone?: RenderTone }> = []; + if (source.authMode === "interactive") { + badges.push({ text: "interactive", tone: "info" }); + } else if (source.authMode === "legacy") { + badges.push({ text: "legacy", tone: "warning" }); + } + badges.push({ text: status.label, tone: status.tone }); + emit.sourceTitle(displaySource(source.source, sourceLabels), badges); const details = formatSourceStatusDetails(source); for (const detail of details) { emit.detail(detail); @@ -804,7 +812,10 @@ async function runDataList(options: GlobalOptions): Promise { emit.title("Collected data"); emit.blank(); - for (const dataset of datasetRecords) { + datasetRecords.forEach((dataset, index) => { + if (index > 0) { + emit.blank(); + } const badges = dataset.dataState === "ingested_personal_server" ? [{ text: "synced", tone: "success" as const }] @@ -818,10 +829,12 @@ async function runDataList(options: GlobalOptions): Promise { } } if (dataset.lastRunAt) { - emit.detail(`Updated: ${formatTimestamp(dataset.lastRunAt)}`); + emit.keyValue("Updated", formatTimestamp(dataset.lastRunAt), "muted"); } - emit.detail(dataset.path ?? ""); - } + if (dataset.path) { + emit.keyValue("Path", dataset.path, "muted"); + } + }); return 0; } @@ -1096,52 +1109,6 @@ async function listInstalledConnectorFiles(): Promise< } } -function formatSourceStatus( - source: SourceStatus, - labels: SourceLabelMap = {}, - emit?: Emitter, -): string { - const authModeSuffix = formatAuthModeBadge(source.authMode, emit); - - if (!source.installed && !source.lastRunOutcome) { - return `${displaySource(source.source, labels)}${authModeSuffix}: not connected`; - } - - if (!source.lastRunOutcome) { - return `${displaySource(source.source, labels)}${authModeSuffix}: installed`; - } - - if (source.lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { - return `${displaySource(source.source, labels)}${authModeSuffix}: needs input`; - } - - if (source.lastRunOutcome === CliOutcomeStatus.RUNTIME_ERROR) { - return `${displaySource(source.source, labels)}${authModeSuffix}: error`; - } - - if (source.lastRunOutcome === CliOutcomeStatus.CONNECTOR_UNAVAILABLE) { - return `${displaySource(source.source, labels)}${authModeSuffix}: unavailable`; - } - - if (source.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { - return `${displaySource(source.source, labels)}${authModeSuffix}: manual browser step required`; - } - - if (source.dataState === "ingested_personal_server") { - return `${displaySource(source.source, labels)}${authModeSuffix}: connected, synced`; - } - - if (source.dataState === "collected_local") { - return `${displaySource(source.source, labels)}${authModeSuffix}: connected, local only`; - } - - if (source.dataState === "ingest_failed") { - return `${displaySource(source.source, labels)}${authModeSuffix}: connected, sync failed`; - } - - return `${displaySource(source.source, labels)}${authModeSuffix}: connected`; -} - function formatSourceStatusDetails(source: SourceStatus): string[] { const details: string[] = []; @@ -1275,6 +1242,49 @@ function formatAuthModeBadge( return ""; } +function getSourceStatusPresentation(source: SourceStatus): { + label: string; + tone: RenderTone; +} { + if (!source.installed && !source.lastRunOutcome) { + return { label: "not connected", tone: "muted" }; + } + + if (!source.lastRunOutcome) { + return { label: "installed", tone: "success" }; + } + + if (source.lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { + return { label: "needs input", tone: "warning" }; + } + + if (source.lastRunOutcome === CliOutcomeStatus.RUNTIME_ERROR) { + return { label: "error", tone: "error" }; + } + + if (source.lastRunOutcome === CliOutcomeStatus.CONNECTOR_UNAVAILABLE) { + return { label: "unavailable", tone: "warning" }; + } + + if (source.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { + return { label: "manual step", tone: "warning" }; + } + + if (source.dataState === "ingested_personal_server") { + return { label: "synced", tone: "success" }; + } + + if (source.dataState === "collected_local") { + return { label: "local", tone: "muted" }; + } + + if (source.dataState === "ingest_failed") { + return { label: "sync failed", tone: "warning" }; + } + + return { label: "connected", tone: "success" }; +} + function toneForRuntime(runtime: CliStatus["runtime"]): RenderTone { if (runtime === "installed") { return "success"; diff --git a/src/cli/render/format.ts b/src/cli/render/format.ts index 309e8482..405c2adc 100644 --- a/src/cli/render/format.ts +++ b/src/cli/render/format.ts @@ -37,7 +37,7 @@ export function createHumanRenderer(): HumanRenderer { return theme.heading(text); }, section(text) { - return theme.accent(text); + return `${theme.accent(symbols.arrow)} ${theme.accent(text)}`; }, keyValue(label, value, tone = "muted") { return `${theme.label(`${label}:`)} ${applyTone(theme, tone, value)}`; diff --git a/src/cli/render/theme.ts b/src/cli/render/theme.ts index d1dfeff2..278c5b6f 100644 --- a/src/cli/render/theme.ts +++ b/src/cli/render/theme.ts @@ -17,6 +17,20 @@ export interface RenderTheme { export function createTheme(capabilities: RenderCapabilities): RenderTheme { const colors = createColors(capabilities.color); + if (capabilities.tier === "rich") { + return { + accent: (text) => rgb(65, 65, 252, text), + heading: (text) => colors.bold(text), + label: (text) => colors.bold(text), + muted: (text) => rgb(115, 115, 115, text), + dim: (text) => colors.dim(text), + success: (text) => rgb(0, 213, 11, text), + warning: (text) => rgb(186, 139, 0, text), + error: (text) => rgb(220, 38, 38, text), + info: (text) => rgb(65, 65, 252, text), + code: (text) => colors.bold(text), + }; + } return { accent: (text) => colors.blue(text), @@ -31,3 +45,7 @@ export function createTheme(capabilities: RenderCapabilities): RenderTheme { code: (text) => colors.bold(text), }; } + +function rgb(red: number, green: number, blue: number, text: string): string { + return `\u001B[38;2;${red};${green};${blue}m${text}\u001B[39m`; +} diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 243f8dbf..2bd5f018 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -218,7 +218,7 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(stdout).toContain("Connected"); - expect(stdout).toContain("GitHub [interactive]: connected, local only"); + expect(stdout).toContain("GitHub [interactive] [local]"); expect(stdout).toContain("vana data show github"); expect(stdout).toContain("/tmp/.dataconnect/github-result.json"); expect(stdout).toContain("/tmp/playwright/chrome"); @@ -471,11 +471,9 @@ describe("runCli", () => { const exitCode = await runCli(["node", "vana", "status"]); expect(exitCode).toBe(0); - const githubIndex = stdout.indexOf("GitHub [interactive]: needs input"); - const steamIndex = stdout.indexOf("Steam: unavailable"); - const spotifyIndex = stdout.indexOf( - "Spotify [legacy]: connected, local only", - ); + const githubIndex = stdout.indexOf("GitHub [interactive] [needs input]"); + const steamIndex = stdout.indexOf("Steam [unavailable]"); + const spotifyIndex = stdout.indexOf("Spotify [legacy] [local]"); expect(githubIndex).toBeGreaterThanOrEqual(0); expect(steamIndex).toBeGreaterThanOrEqual(0); expect(spotifyIndex).toBeGreaterThanOrEqual(0); From ac26743ac79608f37ffd268b0c2fd85cf2781058 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 10:08:45 -0500 Subject: [PATCH 061/249] test(cli): add human transcript coverage --- test/cli/index.test.ts | 103 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 2bd5f018..c526c043 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -224,6 +224,64 @@ describe("runCli", () => { expect(stdout).toContain("/tmp/playwright/chrome"); }); + it("renders a stable human transcript for status", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + }, + { + id: "shop", + name: "Shop", + authMode: "legacy", + }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + sessionPresent: true, + lastRunAt: "2026-03-14T13:10:03.677Z", + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + lastResultPath: "/tmp/.dataconnect/github-result.json", + }, + shop: { + lastRunAt: "2026-03-14T13:11:10.000Z", + lastRunOutcome: "legacy_auth", + dataState: "none", + }, + }, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "status"]); + + expect(exitCode).toBe(0); + expect(stdout).toMatchInlineSnapshot(` + "Vana Connect status + + → Environment + Runtime: installed + /tmp/playwright/chrome + Personal Server: unavailable + + → Sources + → Needs attention + Shop [legacy] [manual step] + Run \`vana connect shop\` without \`--no-input\` to complete the manual browser step. + Updated: Mar 14, 2026, 8:11 AM + + → Connected + GitHub [interactive] [local] + Inspect the latest local dataset with \`vana data show github\`. + Updated: Mar 14, 2026, 8:10 AM + /tmp/.dataconnect/github-result.json + " + `); + }); + it("fails cleanly in json mode when input is required", async () => { runConnectorEvents = [ { @@ -311,6 +369,51 @@ describe("runCli", () => { }); }); + it("renders a stable human transcript for data show", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + lastRunAt: "2026-03-14T13:10:03.677Z", + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + lastResultPath: "/tmp/.dataconnect/github-result.json", + }, + }, + }); + mockReadFile.mockResolvedValue( + JSON.stringify({ + profile: { username: "tridengineer" }, + repositories: [{ name: "vana_oft_presale" }, { name: "minddao" }], + starred: [], + }), + ); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "data", "show", "github"]); + + expect(exitCode).toBe(0); + expect(stdout).toMatchInlineSnapshot(` + "GitHub data + + • Profile: tridengineer + • Repositories: 2 + • Starred: 0 + + Path: /tmp/.dataconnect/github-result.json + Updated: Mar 14, 2026, 8:10 AM + State: Saved locally + " + `); + }); + it("orders collected datasets by most recent run first", async () => { mockListAvailableSources.mockResolvedValue([ { id: "github", name: "GitHub", authMode: "interactive" }, From c9212646437be5ea9d8cedc071f4cc1a8b397988 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 10:11:39 -0500 Subject: [PATCH 062/249] feat(cli): tighten connect fallback paths --- src/cli/index.ts | 13 +++++++++++ test/cli/index.test.ts | 53 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/src/cli/index.ts b/src/cli/index.ts index 8e8f4b3f..c922dafe 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -239,6 +239,14 @@ async function runConnect( lastResultPath: null, }); emit.info(message); + if (!options.json) { + emit.blank(); + emit.section("Next"); + emit.bullet("Run `vana sources` to see available sources."); + emit.bullet( + `Or try a different source with ${emit.code("vana connect ")}.`, + ); + } emit.event({ type: "outcome", status: CliOutcomeStatus.CONNECTOR_UNAVAILABLE, @@ -563,6 +571,11 @@ async function runConnectEntry(options: GlobalOptions): Promise { return 1; } + if (!process.stdin.isTTY || !process.stdout.isTTY) { + emit.info("Specify a source. Run `vana sources` to see available options."); + return 1; + } + if (sources.length === 0) { emit.info("No sources are available right now."); emit.info("Run `vana sources` to verify the local connector registry."); diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index c526c043..d0e8f357 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -595,6 +595,37 @@ describe("runCli", () => { }); }); + it("fails cleanly when connect source is missing in a non-interactive shell", async () => { + const originalStdoutTty = process.stdout.isTTY; + const originalStdinTty = process.stdin.isTTY; + Object.defineProperty(process.stdout, "isTTY", { + configurable: true, + value: false, + }); + Object.defineProperty(process.stdin, "isTTY", { + configurable: true, + value: false, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect"]); + + Object.defineProperty(process.stdout, "isTTY", { + configurable: true, + value: originalStdoutTty, + }); + Object.defineProperty(process.stdin, "isTTY", { + configurable: true, + value: originalStdinTty, + }); + + expect(exitCode).toBe(1); + expect(stdout).toContain( + "Specify a source. Run `vana sources` to see available options.", + ); + expect(stdout).not.toContain("Choose a source to connect:"); + }); + it("prints a human success summary after collection completes", async () => { mockListAvailableSources.mockResolvedValue([ { @@ -725,6 +756,28 @@ describe("runCli", () => { ); }); + it("shows next steps when no connector exists in human mode", async () => { + mockListAvailableSources.mockResolvedValue([]); + fetchConnectorResult = undefined as never; + const runtimeImport = await import("../../src/runtime/index.js"); + const fetchSpy = vi + .spyOn(runtimeImport.ManagedPlaywrightRuntime.prototype, "fetchConnector") + .mockRejectedValueOnce( + new Error("No connector is available for steam right now."), + ); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect", "steam"]); + + fetchSpy.mockRestore(); + + expect(exitCode).toBe(1); + expect(stdout).toContain("No connector is available for steam right now."); + expect(stdout).toContain("→ Next"); + expect(stdout).toContain("Run `vana sources` to see available sources."); + expect(stdout).toContain("vana connect "); + }); + it("mentions reusable sessions when a browser profile exists", async () => { mockListAvailableSources.mockResolvedValue([ { From 812e11f565ab144a2e2142f06b476e9bbbf32ce6 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 10:18:35 -0500 Subject: [PATCH 063/249] chore(cli): scrub demo fixture data --- docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md | 2 +- .../demo-home/.dataconnect/github-result.json | 6 ++-- .../.dataconnect/spotify-result.json | 6 ++-- scripts/prepare-vhs-fixtures.mjs | 8 ++--- test/cli/index.test.ts | 34 +++++++++++-------- 5 files changed, 30 insertions(+), 26 deletions(-) diff --git a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md index c0f879f6..fa0d5f24 100644 --- a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md +++ b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md @@ -475,7 +475,7 @@ Recommended shape: Connected GitHub. Collected: -- Profile: tridengineer +- Profile: tnunamak - Repositories: 2 - Starred: 0 diff --git a/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json b/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json index 8650ae95..a7259568 100644 --- a/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json +++ b/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json @@ -1,13 +1,13 @@ { "profile": { - "username": "tridengineer" + "username": "tnunamak" }, "repositories": [ { - "name": "vana_oft_presale" + "name": "vana-connect" }, { - "name": "minddao" + "name": "data-connectors" } ], "starred": [] diff --git a/docs/vhs/fixtures/demo-home/.dataconnect/spotify-result.json b/docs/vhs/fixtures/demo-home/.dataconnect/spotify-result.json index a284ddda..a5ec06c1 100644 --- a/docs/vhs/fixtures/demo-home/.dataconnect/spotify-result.json +++ b/docs/vhs/fixtures/demo-home/.dataconnect/spotify-result.json @@ -1,13 +1,13 @@ { "profile": { - "username": "tridengineer" + "username": "tnunamak" }, "playlists": [ { - "name": "Daily Mix 1" + "name": "Data Portability" }, { - "name": "Focus" + "name": "Build Flow" } ] } diff --git a/scripts/prepare-vhs-fixtures.mjs b/scripts/prepare-vhs-fixtures.mjs index c30326b4..5668f340 100644 --- a/scripts/prepare-vhs-fixtures.mjs +++ b/scripts/prepare-vhs-fixtures.mjs @@ -99,8 +99,8 @@ async function main() { path.join(dataConnectRoot, "github-result.json"), `${JSON.stringify( { - profile: { username: "tridengineer" }, - repositories: [{ name: "vana_oft_presale" }, { name: "minddao" }], + profile: { username: "tnunamak" }, + repositories: [{ name: "vana-connect" }, { name: "data-connectors" }], starred: [], }, null, @@ -112,8 +112,8 @@ async function main() { path.join(dataConnectRoot, "spotify-result.json"), `${JSON.stringify( { - profile: { username: "tridengineer" }, - playlists: [{ name: "Daily Mix 1" }, { name: "Focus" }], + profile: { username: "tnunamak" }, + playlists: [{ name: "Data Portability" }, { name: "Build Flow" }], }, null, 2, diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index d0e8f357..4010fc42 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -130,6 +130,10 @@ describe("runCli", () => { vi.resetModules(); }); + function normalizeRenderedTimestamps(output: string): string { + return output.replace(/Updated: .+/g, "Updated: "); + } + it("lists available sources in json mode", async () => { mockListAvailableSources.mockResolvedValue([ { id: "github", name: "GitHub" }, @@ -259,7 +263,7 @@ describe("runCli", () => { const exitCode = await runCli(["node", "vana", "status"]); expect(exitCode).toBe(0); - expect(stdout).toMatchInlineSnapshot(` + expect(normalizeRenderedTimestamps(stdout)).toMatchInlineSnapshot(` "Vana Connect status → Environment @@ -271,12 +275,12 @@ describe("runCli", () => { → Needs attention Shop [legacy] [manual step] Run \`vana connect shop\` without \`--no-input\` to complete the manual browser step. - Updated: Mar 14, 2026, 8:11 AM + Updated: → Connected GitHub [interactive] [local] Inspect the latest local dataset with \`vana data show github\`. - Updated: Mar 14, 2026, 8:10 AM + Updated: /tmp/.dataconnect/github-result.json " `); @@ -336,7 +340,7 @@ describe("runCli", () => { }); mockReadFile.mockResolvedValue( JSON.stringify({ - profile: { username: "tridengineer" }, + profile: { username: "tnunamak" }, repositories: [{ name: "vana-connect" }], exportSummary: { details: "1 repository" }, }), @@ -357,12 +361,12 @@ describe("runCli", () => { source: "github", path: "/tmp/.dataconnect/github-result.json", summary: { - lines: ["Profile: tridengineer", "Repositories: 1", "1 repository"], + lines: ["Profile: tnunamak", "Repositories: 1", "1 repository"], }, lastRunAt: "2026-03-14T13:10:03.677Z", dataState: "collected_local", data: { - profile: { username: "tridengineer" }, + profile: { username: "tnunamak" }, repositories: [{ name: "vana-connect" }], exportSummary: { details: "1 repository" }, }, @@ -390,8 +394,8 @@ describe("runCli", () => { }); mockReadFile.mockResolvedValue( JSON.stringify({ - profile: { username: "tridengineer" }, - repositories: [{ name: "vana_oft_presale" }, { name: "minddao" }], + profile: { username: "tnunamak" }, + repositories: [{ name: "vana-connect" }, { name: "data-connectors" }], starred: [], }), ); @@ -400,15 +404,15 @@ describe("runCli", () => { const exitCode = await runCli(["node", "vana", "data", "show", "github"]); expect(exitCode).toBe(0); - expect(stdout).toMatchInlineSnapshot(` + expect(normalizeRenderedTimestamps(stdout)).toMatchInlineSnapshot(` "GitHub data - • Profile: tridengineer + • Profile: tnunamak • Repositories: 2 • Starred: 0 Path: /tmp/.dataconnect/github-result.json - Updated: Mar 14, 2026, 8:10 AM + Updated: State: Saved locally " `); @@ -437,7 +441,7 @@ describe("runCli", () => { mockReadFile.mockImplementation(async (filePath: string) => JSON.stringify({ profile: { - username: filePath.includes("github") ? "tridengineer" : "chatgpt", + username: filePath.includes("github") ? "tnunamak" : "chatgpt", }, }), ); @@ -650,7 +654,7 @@ describe("runCli", () => { ]; mockReadFile.mockResolvedValue( JSON.stringify({ - profile: { username: "tridengineer" }, + profile: { username: "tnunamak" }, repositories: [{ name: "vana-connect" }, { name: "data-connect" }], starred: [], }), @@ -662,7 +666,7 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(stdout).toContain("Connected GitHub."); expect(stdout).toContain("Collected"); - expect(stdout).toContain("Profile: tridengineer"); + expect(stdout).toContain("Profile: tnunamak"); expect(stdout).toContain("Repositories: 2"); expect(stdout).toContain("Saved locally"); expect(stdout).toContain("/tmp/.dataconnect/github-result.json"); @@ -700,7 +704,7 @@ describe("runCli", () => { ]); mockReadFile.mockResolvedValue( JSON.stringify({ - profile: { username: "tridengineer" }, + profile: { username: "tnunamak" }, }), ); From 9368536b506c04297cf87a6ee66f686af86fe3a2 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 10:29:40 -0500 Subject: [PATCH 064/249] chore(cli): automate release and transcript workflows --- README.md | 13 + docs/transcripts/README.md | 13 + docs/transcripts/connect-steam-no-input.txt | 9 + docs/transcripts/data-list.txt | 13 + docs/transcripts/data-show-github.txt | 9 + docs/transcripts/sources.txt | 23 ++ docs/transcripts/status.txt | 25 ++ package.json | 2 + scripts/capture-cli-transcripts.mjs | 84 +++++ scripts/watch-release-lane.mjs | 348 ++++++++++++++++++++ 10 files changed, 539 insertions(+) create mode 100644 docs/transcripts/README.md create mode 100644 docs/transcripts/connect-steam-no-input.txt create mode 100644 docs/transcripts/data-list.txt create mode 100644 docs/transcripts/data-show-github.txt create mode 100644 docs/transcripts/sources.txt create mode 100644 docs/transcripts/status.txt create mode 100644 scripts/capture-cli-transcripts.mjs create mode 100644 scripts/watch-release-lane.mjs diff --git a/README.md b/README.md index 7aa5ae45..4e69ef94 100644 --- a/README.md +++ b/README.md @@ -172,6 +172,19 @@ To seed the fixture home used by the first tapes: pnpm demo:vhs:fixtures ``` +To capture deterministic human-mode transcripts for review: + +```bash +pnpm demo:transcripts +``` + +To watch the branch release lane, trigger Homebrew sync, and verify the +published installer automatically: + +```bash +pnpm release:watch +``` + ### Local development From this repo: diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md new file mode 100644 index 00000000..e156987d --- /dev/null +++ b/docs/transcripts/README.md @@ -0,0 +1,13 @@ +# CLI transcripts + +These files are generated review artifacts for the human-mode CLI. + +They are not a replacement for tests. They exist to make visual and copy review +faster between release pushes. + +Refresh them with: + +```bash +pnpm demo:vhs:fixtures +pnpm demo:transcripts +``` diff --git a/docs/transcripts/connect-steam-no-input.txt b/docs/transcripts/connect-steam-no-input.txt new file mode 100644 index 00000000..4691924c --- /dev/null +++ b/docs/transcripts/connect-steam-no-input.txt @@ -0,0 +1,9 @@ +Connect Steam + +→ Preparing +Finding a connector for Steam... +No connector is available for steam right now. + +→ Next +• Run `vana sources` to see available sources. +• Or try a different source with vana connect . diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt new file mode 100644 index 00000000..997d743b --- /dev/null +++ b/docs/transcripts/data-list.txt @@ -0,0 +1,13 @@ +Collected data + +GitHub [local] + Profile: tnunamak + Repositories: 2 + Starred: 0 +Updated: Mar 14, 2026, 8:10 AM +Path: /home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json + +Spotify [local] + Profile: tnunamak +Updated: Mar 13, 2026, 4:23 PM +Path: /home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/spotify-result.json diff --git a/docs/transcripts/data-show-github.txt b/docs/transcripts/data-show-github.txt new file mode 100644 index 00000000..53cfd761 --- /dev/null +++ b/docs/transcripts/data-show-github.txt @@ -0,0 +1,9 @@ +GitHub data + +• Profile: tnunamak +• Repositories: 2 +• Starred: 0 + +Path: /home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json +Updated: Mar 14, 2026, 8:10 AM +State: Saved locally diff --git a/docs/transcripts/sources.txt b/docs/transcripts/sources.txt new file mode 100644 index 00000000..2128df80 --- /dev/null +++ b/docs/transcripts/sources.txt @@ -0,0 +1,23 @@ +Available sources + +→ Ready now +GitHub [installed] [interactive] + Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. + +→ Manual steps +ChatGPT [legacy] + Exports your email, memories, and all conversations from ChatGPT using Playwright browser automation. +Instagram [legacy] + Exports your Instagram profile, posts, and ad interests using Playwright browser automation. +LinkedIn [legacy] + Exports your LinkedIn profile, experience, education, skills, languages, and connections using Playwright browser automation. +Oura Ring [legacy] + Exports your Oura Ring readiness scores, sleep data, and daily activity using Playwright browser automation. +Shop [installed] [legacy] + Exports your Shop app order history using Playwright browser automation. +Spotify [installed] [legacy] + Exports your Spotify library, playlists, listening history, and preferences using Playwright browser automation. +Uber [legacy] + Exports your Uber trip history and receipts using Playwright browser automation. +YouTube [legacy] + Exports your YouTube profile, subscriptions, playlists, playlist items, liked videos, watch later list, and recent watch history using Playwright browser automation. diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt new file mode 100644 index 00000000..f7430c05 --- /dev/null +++ b/docs/transcripts/status.txt @@ -0,0 +1,25 @@ +Vana Connect status + +→ Environment +Runtime: installed + /opt/playwright/chromium-1200/chrome-linux64/chrome +Personal Server: unavailable + +→ Sources +→ Needs attention +Shop [legacy] [manual step] + Run `vana connect shop` without `--no-input` to complete the manual browser step. + Updated: Mar 14, 2026, 8:11 AM +Steam [unavailable] + No connector is available for steam right now. + Updated: Mar 14, 2026, 8:12 AM + +→ Connected +GitHub [interactive] [local] + Inspect the latest local dataset with `vana data show github`. + Updated: Mar 14, 2026, 8:10 AM + /home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json +Spotify [legacy] [local] + Inspect the latest local dataset with `vana data show spotify`. + Updated: Mar 13, 2026, 4:23 PM + /home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/spotify-result.json diff --git a/package.json b/package.json index bc252ca6..addb3604 100644 --- a/package.json +++ b/package.json @@ -59,8 +59,10 @@ "clean": "node ./scripts/clean-build.mjs", "cli": "node dist/cli/bin.js", "demo:vhs:fixtures": "node ./scripts/prepare-vhs-fixtures.mjs", + "demo:transcripts": "node ./scripts/capture-cli-transcripts.mjs", "pack:check": "node ./scripts/assert-pack-contents.mjs", "sea:check": "node ./scripts/assert-sea-artifact.mjs", + "release:watch": "node ./scripts/watch-release-lane.mjs", "skills:sync": "node scripts/sync-skills.js", "test:install:unix": "sh ./scripts/test-install-unix.sh", "test:install:windows": "pwsh -File ./scripts/test-install-windows.ps1", diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs new file mode 100644 index 00000000..6f3acb32 --- /dev/null +++ b/scripts/capture-cli-transcripts.mjs @@ -0,0 +1,84 @@ +import fs from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import { execFileSync } from "node:child_process"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const repoRoot = path.resolve(__dirname, ".."); +const transcriptsDir = path.join(repoRoot, "docs", "transcripts"); +const fixtureHome = path.join(repoRoot, "docs", "vhs", "fixtures", "demo-home"); +const connectorsDir = "/home/tnunamak/code/data-connectors"; + +async function main() { + await fs.mkdir(transcriptsDir, { recursive: true }); + const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), "vana-transcripts-")); + const workingHome = path.join(tempRoot, "home"); + await fs.cp(fixtureHome, workingHome, { recursive: true }); + + const env = { + ...process.env, + HOME: workingHome, + VANA_DATA_CONNECTORS_DIR: connectorsDir, + }; + + const commands = [ + { + name: "status.txt", + argv: ["node", "dist/cli/bin.js", "status"], + }, + { + name: "sources.txt", + argv: ["node", "dist/cli/bin.js", "sources"], + }, + { + name: "data-list.txt", + argv: ["node", "dist/cli/bin.js", "data", "list"], + }, + { + name: "data-show-github.txt", + argv: ["node", "dist/cli/bin.js", "data", "show", "github"], + }, + { + name: "connect-steam-no-input.txt", + argv: ["node", "dist/cli/bin.js", "connect", "steam", "--no-input"], + allowFailure: true, + }, + ]; + + for (const command of commands) { + const output = run(command.argv, env, command.allowFailure); + const filePath = path.join(transcriptsDir, command.name); + await fs.writeFile(filePath, output, "utf8"); + process.stdout.write( + `[transcript] wrote ${path.relative(repoRoot, filePath)}\n`, + ); + } + + await fs.rm(tempRoot, { recursive: true, force: true }); +} + +function run(argv, env, allowFailure = false) { + try { + return execFileSync(argv[0], argv.slice(1), { + cwd: repoRoot, + env, + encoding: "utf8", + stdio: ["ignore", "pipe", "pipe"], + }); + } catch (error) { + const stdout = error.stdout?.toString?.() ?? ""; + const stderr = error.stderr?.toString?.() ?? ""; + if (allowFailure) { + return `${stdout}${stderr}`.trimEnd() + "\n"; + } + throw new Error(`${stdout}${stderr}`.trim()); + } +} + +main().catch((error) => { + process.stderr.write( + `${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`, + ); + process.exitCode = 1; +}); diff --git a/scripts/watch-release-lane.mjs b/scripts/watch-release-lane.mjs new file mode 100644 index 00000000..fb7c26ea --- /dev/null +++ b/scripts/watch-release-lane.mjs @@ -0,0 +1,348 @@ +import { execFileSync } from "node:child_process"; +import fs from "node:fs"; +import path from "node:path"; +import process from "node:process"; + +const DEFAULT_REPO = "vana-com/vana-connect"; +const DEFAULT_TAP_REPO = "vana-com/homebrew-vana"; +const DEFAULT_TAP_WORKFLOW = "sync-formula.yml"; +const DEFAULT_TAP_LOCAL_PATH = "/home/tnunamak/code/homebrew-vana"; +const DEFAULT_POLL_MS = 30_000; +const DEFAULT_TIMEOUT_MS = 45 * 60_000; + +function main() { + const options = parseArgs(process.argv.slice(2)); + const branch = options.branch ?? getCurrentBranch(options.repo); + const headSha = options.headSha ?? getCurrentHeadSha(); + const releaseTag = options.releaseTag ?? `canary-${slugify(branch)}`; + + log(`Watching release lane for ${branch} @ ${headSha.slice(0, 7)}`); + + if (!options.syncOnly) { + waitForWorkflow({ + repo: options.repo, + workflow: "CI", + branch, + headSha, + pollMs: options.pollMs, + timeoutMs: options.timeoutMs, + }); + waitForWorkflow({ + repo: options.repo, + workflow: "Canary Release", + branch, + headSha, + pollMs: options.pollMs, + timeoutMs: options.timeoutMs, + }); + } + + if (options.skipTap) { + log("Skipping tap sync."); + return; + } + + const previousTapRunId = getLatestRunId({ + repo: options.tapRepo, + workflow: "Sync Formula", + }); + + log(`Triggering formula sync for ${releaseTag}`); + execCommand("gh", [ + "workflow", + "run", + options.tapWorkflow, + "--repo", + options.tapRepo, + "-f", + `release_tag=${releaseTag}`, + ]); + + const tapRun = waitForNewWorkflowRun({ + repo: options.tapRepo, + workflow: "Sync Formula", + previousRunId: previousTapRunId, + pollMs: options.pollMs, + timeoutMs: options.timeoutMs, + }); + waitForRunCompletion({ + repo: options.tapRepo, + runId: tapRun.databaseId, + pollMs: options.pollMs, + timeoutMs: options.timeoutMs, + }); + + if (fs.existsSync(options.tapLocalPath)) { + log(`Refreshing local tap at ${options.tapLocalPath}`); + execCommand("git", ["-C", options.tapLocalPath, "pull", "--ff-only"]); + const formulaPath = path.join(options.tapLocalPath, "Formula", "vana.rb"); + if (fs.existsSync(formulaPath)) { + const lines = fs + .readFileSync(formulaPath, "utf8") + .split("\n") + .slice(0, 24); + log(`Current tap formula preview:\n${lines.join("\n")}`); + } + } + + if (options.skipVerify) { + log("Skipping published installer verification."); + return; + } + + log(`Running published installer verification for ${releaseTag}`); + execCommand("sh", [ + "./scripts/test-install-github-release.sh", + "--version", + releaseTag, + "--branch", + branch, + "--repo", + options.repo, + ]); +} + +function parseArgs(argv) { + const options = { + repo: DEFAULT_REPO, + tapRepo: DEFAULT_TAP_REPO, + tapWorkflow: DEFAULT_TAP_WORKFLOW, + tapLocalPath: DEFAULT_TAP_LOCAL_PATH, + pollMs: DEFAULT_POLL_MS, + timeoutMs: DEFAULT_TIMEOUT_MS, + syncOnly: false, + skipTap: false, + skipVerify: false, + branch: undefined, + headSha: undefined, + releaseTag: undefined, + }; + + for (let index = 0; index < argv.length; index += 1) { + const arg = argv[index]; + switch (arg) { + case "--repo": + options.repo = argv[++index]; + break; + case "--branch": + options.branch = argv[++index]; + break; + case "--head-sha": + options.headSha = argv[++index]; + break; + case "--release-tag": + options.releaseTag = argv[++index]; + break; + case "--tap-repo": + options.tapRepo = argv[++index]; + break; + case "--tap-workflow": + options.tapWorkflow = argv[++index]; + break; + case "--tap-local-path": + options.tapLocalPath = argv[++index]; + break; + case "--poll-ms": + options.pollMs = Number(argv[++index]); + break; + case "--timeout-ms": + options.timeoutMs = Number(argv[++index]); + break; + case "--sync-only": + options.syncOnly = true; + break; + case "--skip-tap": + options.skipTap = true; + break; + case "--skip-verify": + options.skipVerify = true; + break; + default: + throw new Error(`Unknown argument: ${arg}`); + } + } + + return options; +} + +function waitForWorkflow({ + repo, + workflow, + branch, + headSha, + pollMs, + timeoutMs, +}) { + const startedAt = Date.now(); + while (Date.now() - startedAt < timeoutMs) { + const run = getWorkflowRun({ repo, workflow, branch, headSha }); + if (!run) { + log(`Waiting for ${workflow} run for ${headSha.slice(0, 7)}...`); + sleep(pollMs); + continue; + } + + if (run.status !== "completed") { + log(`${workflow}: ${run.status} (${run.url})`); + sleep(pollMs); + continue; + } + + if (run.conclusion !== "success") { + throw new Error(`${workflow} failed: ${run.url}`); + } + + log(`${workflow}: success`); + return run; + } + + throw new Error(`Timed out waiting for ${workflow}`); +} + +function waitForNewWorkflowRun({ + repo, + workflow, + previousRunId, + pollMs, + timeoutMs, +}) { + const startedAt = Date.now(); + while (Date.now() - startedAt < timeoutMs) { + const run = getLatestRun({ repo, workflow }); + if (run && (!previousRunId || run.databaseId > previousRunId)) { + log(`Detected ${workflow} run ${run.databaseId}`); + return run; + } + + log(`Waiting for ${workflow} run to appear...`); + sleep(pollMs); + } + + throw new Error(`Timed out waiting for ${workflow} run`); +} + +function waitForRunCompletion({ repo, runId, pollMs, timeoutMs }) { + const startedAt = Date.now(); + let lastStatus = "unknown"; + while (Date.now() - startedAt < timeoutMs) { + const workflowRun = JSON.parse( + execCommand("gh", [ + "run", + "view", + String(runId), + "--repo", + repo, + "--json", + "status,conclusion,url", + ]), + ); + lastStatus = workflowRun.status; + if (workflowRun.status !== "completed") { + log(`Workflow run ${runId}: ${workflowRun.status} (${workflowRun.url})`); + sleep(pollMs); + continue; + } + + if (workflowRun.conclusion !== "success") { + throw new Error(`Workflow run ${runId} failed: ${workflowRun.url}`); + } + + log(`Workflow run ${runId}: success`); + return; + } + + throw new Error( + `Timed out waiting for workflow run ${runId} (last status: ${lastStatus}). Increase --timeout-ms if the workflow is healthy but slow.`, + ); +} + +function getWorkflowRun({ repo, workflow, branch, headSha }) { + const runs = JSON.parse( + execCommand("gh", [ + "run", + "list", + "--repo", + repo, + "--workflow", + workflow, + "--branch", + branch, + "--commit", + headSha, + "--limit", + "1", + "--json", + "databaseId,workflowName,status,conclusion,headSha,url,displayTitle", + ]), + ); + return runs[0] ?? null; +} + +function getLatestRun({ repo, workflow }) { + const runs = JSON.parse( + execCommand("gh", [ + "run", + "list", + "--repo", + repo, + "--workflow", + workflow, + "--limit", + "1", + "--json", + "databaseId,workflowName,status,conclusion,headSha,url,displayTitle", + ]), + ); + return runs[0] ?? null; +} + +function getLatestRunId({ repo, workflow }) { + return getLatestRun({ repo, workflow })?.databaseId ?? null; +} + +function getCurrentBranch(repo) { + const remote = execCommand("gh", ["repo", "view", repo, "--json", "name"], { + allowFailure: true, + }); + if (!remote) { + return execCommand("git", ["rev-parse", "--abbrev-ref", "HEAD"]).trim(); + } + return execCommand("git", ["rev-parse", "--abbrev-ref", "HEAD"]).trim(); +} + +function getCurrentHeadSha() { + return execCommand("git", ["rev-parse", "HEAD"]).trim(); +} + +function slugify(value) { + return value.replace(/[/_]/g, "-").replace(/[^a-zA-Z0-9-]/g, ""); +} + +function execCommand(command, args, options = {}) { + try { + return execFileSync(command, args, { + encoding: "utf8", + stdio: ["ignore", "pipe", "pipe"], + ...options, + }); + } catch (error) { + if (options.allowFailure) { + return ""; + } + const stderr = error.stderr?.toString?.() ?? ""; + const stdout = error.stdout?.toString?.() ?? ""; + throw new Error( + `Command failed: ${command} ${args.join(" ")}\n${stdout}${stderr}`.trim(), + ); + } +} + +function sleep(ms) { + Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms); +} + +function log(message) { + process.stdout.write(`[release] ${message}\n`); +} + +main(); From 8ad2d870c9088076fff9e9ec0c6fc2aae8980168 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 10:31:47 -0500 Subject: [PATCH 065/249] fix(scripts): polish release automation --- scripts/capture-cli-transcripts.mjs | 4 +++- scripts/watch-release-lane.mjs | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index 6f3acb32..86f26a06 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -12,7 +12,9 @@ const connectorsDir = "/home/tnunamak/code/data-connectors"; async function main() { await fs.mkdir(transcriptsDir, { recursive: true }); - const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), "vana-transcripts-")); + const tempRoot = await fs.mkdtemp( + path.join(os.tmpdir(), "vana-transcripts-"), + ); const workingHome = path.join(tempRoot, "home"); await fs.cp(fixtureHome, workingHome, { recursive: true }); diff --git a/scripts/watch-release-lane.mjs b/scripts/watch-release-lane.mjs index fb7c26ea..6001f143 100644 --- a/scripts/watch-release-lane.mjs +++ b/scripts/watch-release-lane.mjs @@ -121,6 +121,8 @@ function parseArgs(argv) { for (let index = 0; index < argv.length; index += 1) { const arg = argv[index]; switch (arg) { + case "--": + break; case "--repo": options.repo = argv[++index]; break; From aecdb1ca67eaa5020c9a7c4fd7f17bdeca8d4ea5 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 10:43:41 -0500 Subject: [PATCH 066/249] feat(demos): wire vhs demo workflow --- README.md | 14 +++++ docs/vhs/README.md | 14 +++++ docs/vhs/connect-guided.tape | 21 ++++++++ docs/vhs/data-inspection.tape | 21 ++++++++ package.json | 1 + scripts/render-vhs.mjs | 99 +++++++++++++++++++++++++++++++++++ 6 files changed, 170 insertions(+) create mode 100644 docs/vhs/connect-guided.tape create mode 100644 docs/vhs/data-inspection.tape create mode 100644 scripts/render-vhs.mjs diff --git a/README.md b/README.md index 4e69ef94..b04cf37b 100644 --- a/README.md +++ b/README.md @@ -166,12 +166,26 @@ vana data show github --json | jq '.summary.lines' The branch also includes deterministic VHS demo scaffolding under [`docs/vhs/`](./docs/vhs/README.md). +Current reviewable transcripts: + +- [`status`](./docs/transcripts/status.txt) +- [`sources`](./docs/transcripts/sources.txt) +- [`data list`](./docs/transcripts/data-list.txt) +- [`data show github`](./docs/transcripts/data-show-github.txt) +- [`connect steam --no-input`](./docs/transcripts/connect-steam-no-input.txt) + To seed the fixture home used by the first tapes: ```bash pnpm demo:vhs:fixtures ``` +To render the checked-in tapes once `vhs` or Docker is available: + +```bash +pnpm demo:vhs +``` + To capture deterministic human-mode transcripts for review: ```bash diff --git a/docs/vhs/README.md b/docs/vhs/README.md index 46ca8b60..84a0b33f 100644 --- a/docs/vhs/README.md +++ b/docs/vhs/README.md @@ -36,6 +36,20 @@ That creates: The preferred renderer is `vhs` from Charm. +One command path: + +```bash +pnpm demo:vhs +``` + +That command: + +- reseeds the fixture home +- renders all checked-in `.tape` files +- writes SVG assets next to the tapes + +It will use a local `vhs` binary if present, or Docker if available. + Typical usage once `vhs` is available locally: ```bash diff --git a/docs/vhs/connect-guided.tape b/docs/vhs/connect-guided.tape new file mode 100644 index 00000000..b747b7b5 --- /dev/null +++ b/docs/vhs/connect-guided.tape @@ -0,0 +1,21 @@ +Output docs/vhs/connect-guided.svg + +Set Shell "bash" +Set FontSize 16 +Set Width 1200 +Set Height 900 +Set TypingSpeed 0ms + +Require pnpm + +Type "pnpm demo:vhs:fixtures" +Enter +Sleep 800ms + +Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" VANA_DATA_CONNECTORS_DIR=\"/home/tnunamak/code/data-connectors\" node dist/cli/bin.js connect steam --no-input" +Enter +Sleep 1200ms + +Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" VANA_DATA_CONNECTORS_DIR=\"/home/tnunamak/code/data-connectors\" node dist/cli/bin.js connect" +Enter +Sleep 1200ms diff --git a/docs/vhs/data-inspection.tape b/docs/vhs/data-inspection.tape new file mode 100644 index 00000000..63bca291 --- /dev/null +++ b/docs/vhs/data-inspection.tape @@ -0,0 +1,21 @@ +Output docs/vhs/data-inspection.svg + +Set Shell "bash" +Set FontSize 16 +Set Width 1200 +Set Height 900 +Set TypingSpeed 0ms + +Require pnpm + +Type "pnpm demo:vhs:fixtures" +Enter +Sleep 800ms + +Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" VANA_DATA_CONNECTORS_DIR=\"/home/tnunamak/code/data-connectors\" node dist/cli/bin.js data list" +Enter +Sleep 1200ms + +Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" VANA_DATA_CONNECTORS_DIR=\"/home/tnunamak/code/data-connectors\" node dist/cli/bin.js data show github" +Enter +Sleep 1200ms diff --git a/package.json b/package.json index addb3604..b62998ed 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "build:sea:smoke": "npx -y node@25 ./scripts/build-sea.mjs --smoke", "clean": "node ./scripts/clean-build.mjs", "cli": "node dist/cli/bin.js", + "demo:vhs": "node ./scripts/render-vhs.mjs", "demo:vhs:fixtures": "node ./scripts/prepare-vhs-fixtures.mjs", "demo:transcripts": "node ./scripts/capture-cli-transcripts.mjs", "pack:check": "node ./scripts/assert-pack-contents.mjs", diff --git a/scripts/render-vhs.mjs b/scripts/render-vhs.mjs new file mode 100644 index 00000000..1396e95f --- /dev/null +++ b/scripts/render-vhs.mjs @@ -0,0 +1,99 @@ +import fs from "node:fs"; +import path from "node:path"; +import { execFileSync } from "node:child_process"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const repoRoot = path.resolve(__dirname, ".."); +const tapesDir = path.join(repoRoot, "docs", "vhs"); +const connectorsDir = "/home/tnunamak/code/data-connectors"; +const fixtureHome = path.join(tapesDir, "fixtures", "demo-home"); +const tapes = [ + "status-and-sources.tape", + "data-inspection.tape", + "connect-guided.tape", +]; + +function main() { + prepareFixtures(); + + const runner = resolveRunner(); + for (const tape of tapes) { + const tapePath = path.join(tapesDir, tape); + const outputPath = tapePath.replace(/\.tape$/, ".svg"); + if (fs.existsSync(outputPath)) { + fs.rmSync(outputPath, { force: true }); + } + runTape(runner, tapePath); + process.stdout.write( + `[vhs] rendered ${path.relative(repoRoot, outputPath)}\n`, + ); + } +} + +function prepareFixtures() { + execFileSync("node", ["./scripts/prepare-vhs-fixtures.mjs"], { + cwd: repoRoot, + stdio: "inherit", + }); +} + +function resolveRunner() { + if (commandExists("vhs")) { + return { command: "vhs", args: [] }; + } + if (commandExists("docker")) { + return { + command: "docker", + args: [ + "run", + "--rm", + "-v", + `${repoRoot}:${repoRoot}`, + "-w", + repoRoot, + "-e", + `HOME=${fixtureHome}`, + "-e", + `VANA_DATA_CONNECTORS_DIR=${connectorsDir}`, + "ghcr.io/charmbracelet/vhs", + ], + }; + } + throw new Error( + "VHS is not available. Install `vhs` or Docker to render demo tapes.", + ); +} + +function runTape(runner, tapePath) { + const env = { + ...process.env, + HOME: fixtureHome, + VANA_DATA_CONNECTORS_DIR: connectorsDir, + }; + execFileSync(runner.command, [...runner.args, tapePath], { + cwd: repoRoot, + env, + stdio: "inherit", + }); +} + +function commandExists(command) { + try { + execFileSync("bash", ["-lc", `command -v ${command}`], { + stdio: "ignore", + }); + return true; + } catch { + return false; + } +} + +try { + main(); +} catch (error) { + process.stderr.write( + `${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`, + ); + process.exitCode = 1; +} From a9b061d6ad1408c6f6f86b445c12400d8349407a Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 10:46:48 -0500 Subject: [PATCH 067/249] fix(scripts): watch pushed branch head by default --- scripts/watch-release-lane.mjs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/scripts/watch-release-lane.mjs b/scripts/watch-release-lane.mjs index 6001f143..f4bc82cd 100644 --- a/scripts/watch-release-lane.mjs +++ b/scripts/watch-release-lane.mjs @@ -13,7 +13,7 @@ const DEFAULT_TIMEOUT_MS = 45 * 60_000; function main() { const options = parseArgs(process.argv.slice(2)); const branch = options.branch ?? getCurrentBranch(options.repo); - const headSha = options.headSha ?? getCurrentHeadSha(); + const headSha = options.headSha ?? getTrackedHeadSha(branch); const releaseTag = options.releaseTag ?? `canary-${slugify(branch)}`; log(`Watching release lane for ${branch} @ ${headSha.slice(0, 7)}`); @@ -316,6 +316,14 @@ function getCurrentHeadSha() { return execCommand("git", ["rev-parse", "HEAD"]).trim(); } +function getTrackedHeadSha(branch) { + try { + return execCommand("git", ["rev-parse", `origin/${branch}`]).trim(); + } catch { + return getCurrentHeadSha(); + } +} + function slugify(value) { return value.replace(/[/_]/g, "-").replace(/[^a-zA-Z0-9-]/g, ""); } From eda26e6db21788f79915710d2134bd4bd9c2179f Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 10:48:53 -0500 Subject: [PATCH 068/249] feat(ci): publish demo preview artifacts --- .github/workflows/ci.yml | 23 +++++++++++++++++++++++ docs/vhs/README.md | 4 ++++ 2 files changed, 27 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5576ee43..583966b7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -74,3 +74,26 @@ jobs: - run: pnpm build:sea -- --artifact-name vana-win32-x64 --platform win32 --arch x64 --archive-format zip --binary-name vana.exe - run: pnpm sea:check -- --artifact-dir artifacts/sea/vana-win32-x64 --archive artifacts/sea/vana-win32-x64.zip --checksum artifacts/sea/vana-win32-x64.zip.sha256 --platform win32 --binary-name vana.exe - run: pnpm test:install:windows + + demo-preview: + runs-on: ubuntu-latest + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" + steps: + - uses: actions/checkout@v5 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v6 + with: + node-version: 25 + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm clean + - run: pnpm build + - run: pnpm demo:transcripts + - run: pnpm demo:vhs + - uses: actions/upload-artifact@v7 + with: + name: vana-demo-preview + path: | + docs/transcripts + docs/vhs/*.svg diff --git a/docs/vhs/README.md b/docs/vhs/README.md index 84a0b33f..d9723d0e 100644 --- a/docs/vhs/README.md +++ b/docs/vhs/README.md @@ -50,6 +50,10 @@ That command: It will use a local `vhs` binary if present, or Docker if available. +CI also renders the tapes on Linux in the `demo-preview` job and uploads the +resulting SVGs and transcripts as a workflow artifact so the branch always has a +current review surface. + Typical usage once `vhs` is available locally: ```bash From 1f6922baff998ac0a16b30cb4ea509e407bdde99 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 10:50:45 -0500 Subject: [PATCH 069/249] feat(release): attach demo preview assets --- .github/workflows/prerelease.yml | 29 +++++++++++++++++++++++++++- .github/workflows/release.yml | 31 +++++++++++++++++++++++++++++- scripts/collect-release-assets.mjs | 13 ++++++++++++- 3 files changed, 70 insertions(+), 3 deletions(-) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 4e598cdf..64c3e2d6 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -66,8 +66,31 @@ jobs: artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }} artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }} artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }}.sha256 + demo-preview: + runs-on: ubuntu-latest + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" + steps: + - uses: actions/checkout@v5 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v6 + with: + node-version: 25 + cache: pnpm + registry-url: https://registry.npmjs.org + - run: pnpm install --frozen-lockfile + - run: pnpm clean + - run: pnpm build + - run: pnpm demo:transcripts + - run: pnpm demo:vhs + - uses: actions/upload-artifact@v7 + with: + name: vana-demo-preview + path: | + docs/transcripts + docs/vhs/*.svg canary: - needs: build-sea + needs: [build-sea, demo-preview] runs-on: ubuntu-latest env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" @@ -96,6 +119,10 @@ jobs: pattern: vana-sea-* path: artifacts/release merge-multiple: true + - uses: actions/download-artifact@v8 + with: + name: vana-demo-preview + path: artifacts/demo-preview - name: Generate package-manager metadata run: | PACKAGE_VERSION=$(node -p "require('./package.json').version") diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a6aac8be..b0790480 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -65,8 +65,33 @@ jobs: artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }} artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }} artifacts/sea/vana-${{ matrix.platform }}-${{ matrix.arch }}.${{ matrix.archive_format }}.sha256 + demo-preview: + runs-on: ubuntu-latest + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v6 + with: + node-version: 25 + cache: pnpm + registry-url: https://registry.npmjs.org + - run: pnpm install --frozen-lockfile + - run: pnpm clean + - run: pnpm build + - run: pnpm demo:transcripts + - run: pnpm demo:vhs + - uses: actions/upload-artifact@v7 + with: + name: vana-demo-preview + path: | + docs/transcripts + docs/vhs/*.svg release: - needs: build-sea + needs: [build-sea, demo-preview] runs-on: ubuntu-latest env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" @@ -89,6 +114,10 @@ jobs: pattern: vana-sea-* path: artifacts/release merge-multiple: true + - uses: actions/download-artifact@v8 + with: + name: vana-demo-preview + path: artifacts/demo-preview - run: pnpm exec semantic-release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/scripts/collect-release-assets.mjs b/scripts/collect-release-assets.mjs index dff3c368..7cb5854c 100644 --- a/scripts/collect-release-assets.mjs +++ b/scripts/collect-release-assets.mjs @@ -40,6 +40,7 @@ const args = getArgMap(process.argv); const releaseDir = args.get("release-dir") ?? "artifacts/release"; const packageManagersDir = args.get("package-managers-dir") ?? "artifacts/package-managers"; +const demoPreviewDir = args.get("demo-preview-dir") ?? "artifacts/demo-preview"; const releaseFiles = listFiles( releaseDir, @@ -55,7 +56,17 @@ const packageManagerFiles = listFiles(path.join(packageManagersDir, "homebrew")) ), ) .sort(); +const demoPreviewFiles = listFiles( + path.join(demoPreviewDir, "docs", "transcripts"), + (filePath) => filePath.endsWith(".txt") || filePath.endsWith(".md"), +) + .concat( + listFiles(path.join(demoPreviewDir, "docs", "vhs"), (filePath) => + filePath.endsWith(".svg"), + ), + ) + .sort(); -for (const file of releaseFiles.concat(packageManagerFiles)) { +for (const file of releaseFiles.concat(packageManagerFiles, demoPreviewFiles)) { process.stdout.write(`${file}\n`); } From c3dec4bf1e16ddc2c38e4d488666cb307e1d5f5f Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 10:52:52 -0500 Subject: [PATCH 070/249] fix(demos): remove local repo path assumptions --- docs/vhs/README.md | 2 ++ docs/vhs/connect-guided.tape | 4 ++-- docs/vhs/data-inspection.tape | 4 ++-- docs/vhs/status-and-sources.tape | 4 ++-- scripts/capture-cli-transcripts.mjs | 26 ++++++++++++++++++-------- scripts/render-vhs.mjs | 13 +++++++++++-- 6 files changed, 37 insertions(+), 16 deletions(-) diff --git a/docs/vhs/README.md b/docs/vhs/README.md index d9723d0e..07f8462d 100644 --- a/docs/vhs/README.md +++ b/docs/vhs/README.md @@ -49,6 +49,8 @@ That command: - writes SVG assets next to the tapes It will use a local `vhs` binary if present, or Docker if available. +By default the scripts look for a sibling `../data-connectors` checkout, but +you can override that with `VANA_DATA_CONNECTORS_DIR=/path/to/data-connectors`. CI also renders the tapes on Linux in the `demo-preview` job and uploads the resulting SVGs and transcripts as a workflow artifact so the branch always has a diff --git a/docs/vhs/connect-guided.tape b/docs/vhs/connect-guided.tape index b747b7b5..0c3a9cdf 100644 --- a/docs/vhs/connect-guided.tape +++ b/docs/vhs/connect-guided.tape @@ -12,10 +12,10 @@ Type "pnpm demo:vhs:fixtures" Enter Sleep 800ms -Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" VANA_DATA_CONNECTORS_DIR=\"/home/tnunamak/code/data-connectors\" node dist/cli/bin.js connect steam --no-input" +Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" node dist/cli/bin.js connect steam --no-input" Enter Sleep 1200ms -Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" VANA_DATA_CONNECTORS_DIR=\"/home/tnunamak/code/data-connectors\" node dist/cli/bin.js connect" +Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" node dist/cli/bin.js connect" Enter Sleep 1200ms diff --git a/docs/vhs/data-inspection.tape b/docs/vhs/data-inspection.tape index 63bca291..fb9e68ed 100644 --- a/docs/vhs/data-inspection.tape +++ b/docs/vhs/data-inspection.tape @@ -12,10 +12,10 @@ Type "pnpm demo:vhs:fixtures" Enter Sleep 800ms -Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" VANA_DATA_CONNECTORS_DIR=\"/home/tnunamak/code/data-connectors\" node dist/cli/bin.js data list" +Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" node dist/cli/bin.js data list" Enter Sleep 1200ms -Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" VANA_DATA_CONNECTORS_DIR=\"/home/tnunamak/code/data-connectors\" node dist/cli/bin.js data show github" +Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" node dist/cli/bin.js data show github" Enter Sleep 1200ms diff --git a/docs/vhs/status-and-sources.tape b/docs/vhs/status-and-sources.tape index fb380b98..57837943 100644 --- a/docs/vhs/status-and-sources.tape +++ b/docs/vhs/status-and-sources.tape @@ -12,10 +12,10 @@ Type "pnpm demo:vhs:fixtures" Enter Sleep 800ms -Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" VANA_DATA_CONNECTORS_DIR=\"/home/tnunamak/code/data-connectors\" node dist/cli/bin.js status" +Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" node dist/cli/bin.js status" Enter Sleep 1200ms -Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" VANA_DATA_CONNECTORS_DIR=\"/home/tnunamak/code/data-connectors\" node dist/cli/bin.js sources" +Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" node dist/cli/bin.js sources" Enter Sleep 1200ms diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index 86f26a06..f94d5ec8 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -1,4 +1,5 @@ -import fs from "node:fs/promises"; +import fs from "node:fs"; +import fsp from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import { execFileSync } from "node:child_process"; @@ -8,20 +9,20 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url)); const repoRoot = path.resolve(__dirname, ".."); const transcriptsDir = path.join(repoRoot, "docs", "transcripts"); const fixtureHome = path.join(repoRoot, "docs", "vhs", "fixtures", "demo-home"); -const connectorsDir = "/home/tnunamak/code/data-connectors"; +const connectorsDir = resolveDataConnectorsDir(); async function main() { - await fs.mkdir(transcriptsDir, { recursive: true }); - const tempRoot = await fs.mkdtemp( + await fsp.mkdir(transcriptsDir, { recursive: true }); + const tempRoot = await fsp.mkdtemp( path.join(os.tmpdir(), "vana-transcripts-"), ); const workingHome = path.join(tempRoot, "home"); - await fs.cp(fixtureHome, workingHome, { recursive: true }); + await fsp.cp(fixtureHome, workingHome, { recursive: true }); const env = { ...process.env, HOME: workingHome, - VANA_DATA_CONNECTORS_DIR: connectorsDir, + ...(connectorsDir ? { VANA_DATA_CONNECTORS_DIR: connectorsDir } : {}), }; const commands = [ @@ -51,13 +52,13 @@ async function main() { for (const command of commands) { const output = run(command.argv, env, command.allowFailure); const filePath = path.join(transcriptsDir, command.name); - await fs.writeFile(filePath, output, "utf8"); + await fsp.writeFile(filePath, output, "utf8"); process.stdout.write( `[transcript] wrote ${path.relative(repoRoot, filePath)}\n`, ); } - await fs.rm(tempRoot, { recursive: true, force: true }); + await fsp.rm(tempRoot, { recursive: true, force: true }); } function run(argv, env, allowFailure = false) { @@ -78,6 +79,15 @@ function run(argv, env, allowFailure = false) { } } +function resolveDataConnectorsDir() { + if (process.env.VANA_DATA_CONNECTORS_DIR) { + return process.env.VANA_DATA_CONNECTORS_DIR; + } + + const siblingRepo = path.resolve(repoRoot, "..", "data-connectors"); + return fs.existsSync(siblingRepo) ? siblingRepo : null; +} + main().catch((error) => { process.stderr.write( `${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`, diff --git a/scripts/render-vhs.mjs b/scripts/render-vhs.mjs index 1396e95f..4ca06747 100644 --- a/scripts/render-vhs.mjs +++ b/scripts/render-vhs.mjs @@ -6,7 +6,7 @@ import { fileURLToPath } from "node:url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const repoRoot = path.resolve(__dirname, ".."); const tapesDir = path.join(repoRoot, "docs", "vhs"); -const connectorsDir = "/home/tnunamak/code/data-connectors"; +const connectorsDir = resolveDataConnectorsDir(); const fixtureHome = path.join(tapesDir, "fixtures", "demo-home"); const tapes = [ "status-and-sources.tape", @@ -69,7 +69,7 @@ function runTape(runner, tapePath) { const env = { ...process.env, HOME: fixtureHome, - VANA_DATA_CONNECTORS_DIR: connectorsDir, + ...(connectorsDir ? { VANA_DATA_CONNECTORS_DIR: connectorsDir } : {}), }; execFileSync(runner.command, [...runner.args, tapePath], { cwd: repoRoot, @@ -89,6 +89,15 @@ function commandExists(command) { } } +function resolveDataConnectorsDir() { + if (process.env.VANA_DATA_CONNECTORS_DIR) { + return process.env.VANA_DATA_CONNECTORS_DIR; + } + + const siblingRepo = path.resolve(repoRoot, "..", "data-connectors"); + return fs.existsSync(siblingRepo) ? siblingRepo : null; +} + try { main(); } catch (error) { From fb2d1f165bd22f56399d3492ae09dd38f7aa243e Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 10:55:08 -0500 Subject: [PATCH 071/249] fix(demos): reseed fixtures before transcript capture --- .github/workflows/prerelease.yml | 2 +- scripts/capture-cli-transcripts.mjs | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 64c3e2d6..3c9aa5e8 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -137,7 +137,7 @@ jobs: BRANCH_SLUG=$(printf "%s" "$GITHUB_REF_NAME" | tr '/_' '-' | tr -cd '[:alnum:]-') TAG="canary-${BRANCH_SLUG}" TITLE="Canary ${GITHUB_REF_NAME}" - NOTES="Branch canary for ${GITHUB_REF_NAME} at ${SHORT_SHA}. Install with the branch installer and \`--version ${TAG}\`." + NOTES="Branch canary for ${GITHUB_REF_NAME} at ${SHORT_SHA}. Install with the branch installer and \`--version ${TAG}\`. This prerelease also includes demo transcripts and terminal SVG previews." mapfile -t RELEASE_FILES < <(node ./scripts/collect-release-assets.mjs) if [ "${#RELEASE_FILES[@]}" -eq 0 ]; then diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index f94d5ec8..e47b2b79 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -12,6 +12,7 @@ const fixtureHome = path.join(repoRoot, "docs", "vhs", "fixtures", "demo-home"); const connectorsDir = resolveDataConnectorsDir(); async function main() { + prepareFixtures(); await fsp.mkdir(transcriptsDir, { recursive: true }); const tempRoot = await fsp.mkdtemp( path.join(os.tmpdir(), "vana-transcripts-"), @@ -61,6 +62,13 @@ async function main() { await fsp.rm(tempRoot, { recursive: true, force: true }); } +function prepareFixtures() { + execFileSync("node", ["./scripts/prepare-vhs-fixtures.mjs"], { + cwd: repoRoot, + stdio: "inherit", + }); +} + function run(argv, env, allowFailure = false) { try { return execFileSync(argv[0], argv.slice(1), { From eb07360adb52ce7e9e0e2bc6a9b2261a2d8b0f44 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 10:59:31 -0500 Subject: [PATCH 072/249] feat(demos): show real user commands --- docs/vhs/README.md | 4 ++ docs/vhs/connect-guided.tape | 8 +--- docs/vhs/data-inspection.tape | 8 +--- docs/vhs/status-and-sources.tape | 8 +--- scripts/capture-cli-transcripts.mjs | 24 ++++++++-- scripts/render-vhs.mjs | 72 +++++++++++++++++++++-------- 6 files changed, 83 insertions(+), 41 deletions(-) diff --git a/docs/vhs/README.md b/docs/vhs/README.md index 07f8462d..d038ad44 100644 --- a/docs/vhs/README.md +++ b/docs/vhs/README.md @@ -5,6 +5,10 @@ This directory holds deterministic terminal demo assets for the `vana` CLI. The goal is to make the README a reliable progress surface for the team without depending on live credentials or live connector runs. +The visible commands in these tapes should match what a real user would type. +Fixture seeding, `HOME`, and any other harness setup should stay hidden in the +rendering scripts. + ## Fixture model The demo tapes should use: diff --git a/docs/vhs/connect-guided.tape b/docs/vhs/connect-guided.tape index 0c3a9cdf..462a23e0 100644 --- a/docs/vhs/connect-guided.tape +++ b/docs/vhs/connect-guided.tape @@ -8,14 +8,10 @@ Set TypingSpeed 0ms Require pnpm -Type "pnpm demo:vhs:fixtures" -Enter -Sleep 800ms - -Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" node dist/cli/bin.js connect steam --no-input" +Type "vana connect steam --no-input" Enter Sleep 1200ms -Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" node dist/cli/bin.js connect" +Type "vana connect" Enter Sleep 1200ms diff --git a/docs/vhs/data-inspection.tape b/docs/vhs/data-inspection.tape index fb9e68ed..e15f6ba1 100644 --- a/docs/vhs/data-inspection.tape +++ b/docs/vhs/data-inspection.tape @@ -8,14 +8,10 @@ Set TypingSpeed 0ms Require pnpm -Type "pnpm demo:vhs:fixtures" -Enter -Sleep 800ms - -Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" node dist/cli/bin.js data list" +Type "vana data list" Enter Sleep 1200ms -Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" node dist/cli/bin.js data show github" +Type "vana data show github" Enter Sleep 1200ms diff --git a/docs/vhs/status-and-sources.tape b/docs/vhs/status-and-sources.tape index 57837943..5180df87 100644 --- a/docs/vhs/status-and-sources.tape +++ b/docs/vhs/status-and-sources.tape @@ -8,14 +8,10 @@ Set TypingSpeed 0ms Require pnpm -Type "pnpm demo:vhs:fixtures" -Enter -Sleep 800ms - -Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" node dist/cli/bin.js status" +Type "vana status" Enter Sleep 1200ms -Type "HOME=\"$PWD/docs/vhs/fixtures/demo-home\" node dist/cli/bin.js sources" +Type "vana sources" Enter Sleep 1200ms diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index e47b2b79..4fa33166 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -19,33 +19,36 @@ async function main() { ); const workingHome = path.join(tempRoot, "home"); await fsp.cp(fixtureHome, workingHome, { recursive: true }); + const binDir = path.join(tempRoot, "bin"); + await prepareDemoBin(binDir); const env = { ...process.env, HOME: workingHome, + PATH: `${binDir}${path.delimiter}${process.env.PATH ?? ""}`, ...(connectorsDir ? { VANA_DATA_CONNECTORS_DIR: connectorsDir } : {}), }; const commands = [ { name: "status.txt", - argv: ["node", "dist/cli/bin.js", "status"], + argv: ["vana", "status"], }, { name: "sources.txt", - argv: ["node", "dist/cli/bin.js", "sources"], + argv: ["vana", "sources"], }, { name: "data-list.txt", - argv: ["node", "dist/cli/bin.js", "data", "list"], + argv: ["vana", "data", "list"], }, { name: "data-show-github.txt", - argv: ["node", "dist/cli/bin.js", "data", "show", "github"], + argv: ["vana", "data", "show", "github"], }, { name: "connect-steam-no-input.txt", - argv: ["node", "dist/cli/bin.js", "connect", "steam", "--no-input"], + argv: ["vana", "connect", "steam", "--no-input"], allowFailure: true, }, ]; @@ -69,6 +72,17 @@ function prepareFixtures() { }); } +async function prepareDemoBin(binDir) { + await fsp.mkdir(binDir, { recursive: true }); + const launcherPath = path.join(binDir, "vana"); + const launcher = `#!/usr/bin/env bash +set -euo pipefail +exec node "${path.join(repoRoot, "dist", "cli", "bin.js")}" "$@" +`; + await fsp.writeFile(launcherPath, launcher, "utf8"); + await fsp.chmod(launcherPath, 0o755); +} + function run(argv, env, allowFailure = false) { try { return execFileSync(argv[0], argv.slice(1), { diff --git a/scripts/render-vhs.mjs b/scripts/render-vhs.mjs index 4ca06747..7c65986a 100644 --- a/scripts/render-vhs.mjs +++ b/scripts/render-vhs.mjs @@ -1,4 +1,6 @@ import fs from "node:fs"; +import fsp from "node:fs/promises"; +import os from "node:os"; import path from "node:path"; import { execFileSync } from "node:child_process"; import { fileURLToPath } from "node:url"; @@ -16,18 +18,23 @@ const tapes = [ function main() { prepareFixtures(); + const { env, cleanup } = prepareRenderEnv(); const runner = resolveRunner(); - for (const tape of tapes) { - const tapePath = path.join(tapesDir, tape); - const outputPath = tapePath.replace(/\.tape$/, ".svg"); - if (fs.existsSync(outputPath)) { - fs.rmSync(outputPath, { force: true }); + try { + for (const tape of tapes) { + const tapePath = path.join(tapesDir, tape); + const outputPath = tapePath.replace(/\.tape$/, ".svg"); + if (fs.existsSync(outputPath)) { + fs.rmSync(outputPath, { force: true }); + } + runTape(runner, tapePath, env); + process.stdout.write( + `[vhs] rendered ${path.relative(repoRoot, outputPath)}\n`, + ); } - runTape(runner, tapePath); - process.stdout.write( - `[vhs] rendered ${path.relative(repoRoot, outputPath)}\n`, - ); + } finally { + cleanup(); } } @@ -43,6 +50,13 @@ function resolveRunner() { return { command: "vhs", args: [] }; } if (commandExists("docker")) { + const dockerEnvArgs = [ + "-e", + `HOME=${fixtureHome}`, + ...(connectorsDir + ? ["-e", `VANA_DATA_CONNECTORS_DIR=${connectorsDir}`] + : []), + ]; return { command: "docker", args: [ @@ -52,10 +66,7 @@ function resolveRunner() { `${repoRoot}:${repoRoot}`, "-w", repoRoot, - "-e", - `HOME=${fixtureHome}`, - "-e", - `VANA_DATA_CONNECTORS_DIR=${connectorsDir}`, + ...dockerEnvArgs, "ghcr.io/charmbracelet/vhs", ], }; @@ -65,17 +76,42 @@ function resolveRunner() { ); } -function runTape(runner, tapePath) { +function runTape(runner, tapePath, env) { + execFileSync(runner.command, [...runner.args, tapePath], { + cwd: repoRoot, + env, + stdio: "inherit", + }); +} + +function prepareRenderEnv() { + const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), "vana-vhs-")); + const binDir = path.join(tempRoot, "bin"); + fs.mkdirSync(binDir, { recursive: true }); + const launcherPath = path.join(binDir, "vana"); + fs.writeFileSync( + launcherPath, + `#!/usr/bin/env bash +set -euo pipefail +exec node "${path.join(repoRoot, "dist", "cli", "bin.js")}" "$@" +`, + "utf8", + ); + fs.chmodSync(launcherPath, 0o755); + const env = { ...process.env, HOME: fixtureHome, + PATH: `${binDir}${path.delimiter}${process.env.PATH ?? ""}`, ...(connectorsDir ? { VANA_DATA_CONNECTORS_DIR: connectorsDir } : {}), }; - execFileSync(runner.command, [...runner.args, tapePath], { - cwd: repoRoot, + + return { env, - stdio: "inherit", - }); + cleanup() { + fs.rmSync(tempRoot, { recursive: true, force: true }); + }, + }; } function commandExists(command) { From 18b86f292b51409a201f18d1b5862490101df9f3 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 11:02:07 -0500 Subject: [PATCH 073/249] feat(cli): strengthen success moment --- docs/vhs/connect-guided.tape | 2 -- docs/vhs/data-inspection.tape | 2 -- docs/vhs/status-and-sources.tape | 2 -- src/cli/index.ts | 5 +++++ test/cli/index.test.ts | 3 +++ 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/vhs/connect-guided.tape b/docs/vhs/connect-guided.tape index 462a23e0..fa5f108c 100644 --- a/docs/vhs/connect-guided.tape +++ b/docs/vhs/connect-guided.tape @@ -6,8 +6,6 @@ Set Width 1200 Set Height 900 Set TypingSpeed 0ms -Require pnpm - Type "vana connect steam --no-input" Enter Sleep 1200ms diff --git a/docs/vhs/data-inspection.tape b/docs/vhs/data-inspection.tape index e15f6ba1..497e0d6d 100644 --- a/docs/vhs/data-inspection.tape +++ b/docs/vhs/data-inspection.tape @@ -6,8 +6,6 @@ Set Width 1200 Set Height 900 Set TypingSpeed 0ms -Require pnpm - Type "vana data list" Enter Sleep 1200ms diff --git a/docs/vhs/status-and-sources.tape b/docs/vhs/status-and-sources.tape index 5180df87..c41ce952 100644 --- a/docs/vhs/status-and-sources.tape +++ b/docs/vhs/status-and-sources.tape @@ -6,8 +6,6 @@ Set Width 1200 Set Height 900 Set TypingSpeed 0ms -Require pnpm - Type "vana status" Enter Sleep 1200ms diff --git a/src/cli/index.ts b/src/cli/index.ts index c922dafe..ee755077 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -481,8 +481,13 @@ async function runConnect( const resultSummary = await readResultSummary(resultPath); const connectCommand = emit.code("vana status"); const dataCommand = emit.code(`vana data show ${source}`); + const successSummary = + finalStatus === CliOutcomeStatus.CONNECTED_AND_INGESTED + ? `Collected your ${displayName} data and synced it to your Personal Server.` + : `Collected your ${displayName} data and saved it locally.`; emit.title(`Connected ${displayName}.`); + emit.detail(successSummary); emit.blank(); if (resultSummary) { diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 4010fc42..7eda489b 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -665,6 +665,9 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(stdout).toContain("Connected GitHub."); + expect(stdout).toContain( + "Collected your GitHub data and saved it locally.", + ); expect(stdout).toContain("Collected"); expect(stdout).toContain("Profile: tnunamak"); expect(stdout).toContain("Repositories: 2"); From 969d364c2899e77159d90392fa350cfbc6114128 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 11:14:31 -0500 Subject: [PATCH 074/249] fix(release): include demo preview assets --- .github/workflows/ci.yml | 2 +- .github/workflows/prerelease.yml | 2 +- .github/workflows/release.yml | 2 +- scripts/collect-release-assets.mjs | 26 ++++++++++++++++---------- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 583966b7..c626da71 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -96,4 +96,4 @@ jobs: name: vana-demo-preview path: | docs/transcripts - docs/vhs/*.svg + docs/vhs diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 3c9aa5e8..f6a9786c 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -88,7 +88,7 @@ jobs: name: vana-demo-preview path: | docs/transcripts - docs/vhs/*.svg + docs/vhs canary: needs: [build-sea, demo-preview] runs-on: ubuntu-latest diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b0790480..fbbe0eae 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -89,7 +89,7 @@ jobs: name: vana-demo-preview path: | docs/transcripts - docs/vhs/*.svg + docs/vhs release: needs: [build-sea, demo-preview] runs-on: ubuntu-latest diff --git a/scripts/collect-release-assets.mjs b/scripts/collect-release-assets.mjs index 7cb5854c..695334fc 100644 --- a/scripts/collect-release-assets.mjs +++ b/scripts/collect-release-assets.mjs @@ -56,16 +56,22 @@ const packageManagerFiles = listFiles(path.join(packageManagersDir, "homebrew")) ), ) .sort(); -const demoPreviewFiles = listFiles( - path.join(demoPreviewDir, "docs", "transcripts"), - (filePath) => filePath.endsWith(".txt") || filePath.endsWith(".md"), -) - .concat( - listFiles(path.join(demoPreviewDir, "docs", "vhs"), (filePath) => - filePath.endsWith(".svg"), - ), - ) - .sort(); +const demoPreviewFiles = [ + ...listFiles( + path.join(demoPreviewDir, "docs", "transcripts"), + (filePath) => filePath.endsWith(".txt") || filePath.endsWith(".md"), + ), + ...listFiles( + path.join(demoPreviewDir, "transcripts"), + (filePath) => filePath.endsWith(".txt") || filePath.endsWith(".md"), + ), + ...listFiles(path.join(demoPreviewDir, "docs", "vhs"), (filePath) => + filePath.endsWith(".svg"), + ), + ...listFiles(path.join(demoPreviewDir, "vhs"), (filePath) => + filePath.endsWith(".svg"), + ), +].sort(); for (const file of releaseFiles.concat(packageManagerFiles, demoPreviewFiles)) { process.stdout.write(`${file}\n`); From bbb33dfb14101b666710a4207c7efacd6b1ff96e Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 11:21:23 -0500 Subject: [PATCH 075/249] fix(demos): render gif preview assets --- docs/vhs/README.md | 6 +++--- docs/vhs/connect-guided.tape | 2 +- docs/vhs/data-inspection.tape | 2 +- docs/vhs/status-and-sources.tape | 2 +- scripts/collect-release-assets.mjs | 10 ++++++---- scripts/render-vhs.mjs | 7 ++++++- 6 files changed, 18 insertions(+), 11 deletions(-) diff --git a/docs/vhs/README.md b/docs/vhs/README.md index d038ad44..52538c8b 100644 --- a/docs/vhs/README.md +++ b/docs/vhs/README.md @@ -50,14 +50,14 @@ That command: - reseeds the fixture home - renders all checked-in `.tape` files -- writes SVG assets next to the tapes +- writes GIF assets next to the tapes It will use a local `vhs` binary if present, or Docker if available. By default the scripts look for a sibling `../data-connectors` checkout, but you can override that with `VANA_DATA_CONNECTORS_DIR=/path/to/data-connectors`. CI also renders the tapes on Linux in the `demo-preview` job and uploads the -resulting SVGs and transcripts as a workflow artifact so the branch always has a +resulting GIFs and transcripts as a workflow artifact so the branch always has a current review surface. Typical usage once `vhs` is available locally: @@ -68,5 +68,5 @@ VANA_DATA_CONNECTORS_DIR="/home/tnunamak/code/data-connectors" \ vhs docs/vhs/status-and-sources.tape ``` -Generated SVG assets should be committed once they are stable enough for the +Generated GIF assets should be committed once they are stable enough for the README. diff --git a/docs/vhs/connect-guided.tape b/docs/vhs/connect-guided.tape index fa5f108c..b2d8c832 100644 --- a/docs/vhs/connect-guided.tape +++ b/docs/vhs/connect-guided.tape @@ -1,4 +1,4 @@ -Output docs/vhs/connect-guided.svg +Output docs/vhs/connect-guided.gif Set Shell "bash" Set FontSize 16 diff --git a/docs/vhs/data-inspection.tape b/docs/vhs/data-inspection.tape index 497e0d6d..6fcc26d3 100644 --- a/docs/vhs/data-inspection.tape +++ b/docs/vhs/data-inspection.tape @@ -1,4 +1,4 @@ -Output docs/vhs/data-inspection.svg +Output docs/vhs/data-inspection.gif Set Shell "bash" Set FontSize 16 diff --git a/docs/vhs/status-and-sources.tape b/docs/vhs/status-and-sources.tape index c41ce952..e2736c79 100644 --- a/docs/vhs/status-and-sources.tape +++ b/docs/vhs/status-and-sources.tape @@ -1,4 +1,4 @@ -Output docs/vhs/status-and-sources.svg +Output docs/vhs/status-and-sources.gif Set Shell "bash" Set FontSize 16 diff --git a/scripts/collect-release-assets.mjs b/scripts/collect-release-assets.mjs index 695334fc..def428c9 100644 --- a/scripts/collect-release-assets.mjs +++ b/scripts/collect-release-assets.mjs @@ -65,11 +65,13 @@ const demoPreviewFiles = [ path.join(demoPreviewDir, "transcripts"), (filePath) => filePath.endsWith(".txt") || filePath.endsWith(".md"), ), - ...listFiles(path.join(demoPreviewDir, "docs", "vhs"), (filePath) => - filePath.endsWith(".svg"), + ...listFiles( + path.join(demoPreviewDir, "docs", "vhs"), + (filePath) => filePath.endsWith(".gif") || filePath.endsWith(".svg"), ), - ...listFiles(path.join(demoPreviewDir, "vhs"), (filePath) => - filePath.endsWith(".svg"), + ...listFiles( + path.join(demoPreviewDir, "vhs"), + (filePath) => filePath.endsWith(".gif") || filePath.endsWith(".svg"), ), ].sort(); diff --git a/scripts/render-vhs.mjs b/scripts/render-vhs.mjs index 7c65986a..0d81a0d5 100644 --- a/scripts/render-vhs.mjs +++ b/scripts/render-vhs.mjs @@ -24,11 +24,16 @@ function main() { try { for (const tape of tapes) { const tapePath = path.join(tapesDir, tape); - const outputPath = tapePath.replace(/\.tape$/, ".svg"); + const outputPath = tapePath.replace(/\.tape$/, ".gif"); if (fs.existsSync(outputPath)) { fs.rmSync(outputPath, { force: true }); } runTape(runner, tapePath, env); + if (!fs.existsSync(outputPath)) { + throw new Error( + `VHS did not produce ${path.relative(repoRoot, outputPath)}.`, + ); + } process.stdout.write( `[vhs] rendered ${path.relative(repoRoot, outputPath)}\n`, ); From 45fde4a5290d4772347c5028de0d3b60d7a98afa Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 11:25:42 -0500 Subject: [PATCH 076/249] feat(demos): publish and verify preview media --- .github/workflows/prerelease.yml | 7 ++ .github/workflows/release.yml | 6 ++ README.md | 12 ++++ package.json | 1 + scripts/assert-release-demo-assets.mjs | 88 ++++++++++++++++++++++++++ scripts/watch-release-lane.mjs | 8 +++ 6 files changed, 122 insertions(+) create mode 100644 scripts/assert-release-demo-assets.mjs diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index f6a9786c..097c8067 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -185,3 +185,10 @@ jobs: BRANCH_SLUG=$(printf "%s" "$GITHUB_REF_NAME" | tr '/_' '-' | tr -cd '[:alnum:]-') TAG="canary-${BRANCH_SLUG}" sh ./scripts/test-install-github-release.sh --version "$TAG" + - name: Verify prerelease demo assets + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + BRANCH_SLUG=$(printf "%s" "$GITHUB_REF_NAME" | tr '/_' '-' | tr -cd '[:alnum:]-') + TAG="canary-${BRANCH_SLUG}" + node ./scripts/assert-release-demo-assets.mjs --tag "$TAG" --repo "$GITHUB_REPOSITORY" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fbbe0eae..bdd8bd82 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -144,3 +144,9 @@ jobs: - uses: actions/checkout@v5 - name: Smoke test latest published installer run: sh ./scripts/test-install-github-release.sh + - name: Verify latest release demo assets + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + RELEASE_TAG=$(gh api repos/${GITHUB_REPOSITORY}/releases/latest --jq .tag_name) + node ./scripts/assert-release-demo-assets.mjs --tag "$RELEASE_TAG" --repo "$GITHUB_REPOSITORY" diff --git a/README.md b/README.md index b04cf37b..7bfe9bdf 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,18 @@ vana data show github --json | jq '.summary.lines' The branch also includes deterministic VHS demo scaffolding under [`docs/vhs/`](./docs/vhs/README.md). +Branch prerelease preview media: + +- [`status-and-sources.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) +- [`data-inspection.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) +- [`connect-guided.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-guided.gif) + +![Vana status and sources demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) + +![Vana data inspection demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) + +![Vana guided connect demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-guided.gif) + Current reviewable transcripts: - [`status`](./docs/transcripts/status.txt) diff --git a/package.json b/package.json index b62998ed..fd19cd26 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "demo:transcripts": "node ./scripts/capture-cli-transcripts.mjs", "pack:check": "node ./scripts/assert-pack-contents.mjs", "sea:check": "node ./scripts/assert-sea-artifact.mjs", + "release:check-demo-assets": "node ./scripts/assert-release-demo-assets.mjs", "release:watch": "node ./scripts/watch-release-lane.mjs", "skills:sync": "node scripts/sync-skills.js", "test:install:unix": "sh ./scripts/test-install-unix.sh", diff --git a/scripts/assert-release-demo-assets.mjs b/scripts/assert-release-demo-assets.mjs new file mode 100644 index 00000000..ad7b9193 --- /dev/null +++ b/scripts/assert-release-demo-assets.mjs @@ -0,0 +1,88 @@ +import { execFileSync } from "node:child_process"; + +const REQUIRED_ASSETS = [ + "status-and-sources.gif", + "data-inspection.gif", + "connect-guided.gif", + "status.txt", + "sources.txt", + "data-list.txt", + "data-show-github.txt", + "connect-steam-no-input.txt", +]; + +function getArgMap(argv) { + const args = new Map(); + + for (let index = 2; index < argv.length; index += 1) { + const token = argv[index]; + if (!token.startsWith("--")) { + continue; + } + + const key = token.slice(2); + const next = argv[index + 1]; + + if (next && !next.startsWith("--")) { + args.set(key, next); + index += 1; + } else { + args.set(key, "true"); + } + } + + return args; +} + +function main() { + const args = getArgMap(process.argv); + const repo = args.get("repo") ?? "vana-com/vana-connect"; + const tag = args.get("tag"); + + if (!tag) { + throw new Error("Missing required --tag argument."); + } + + const output = execFileSync( + "gh", + [ + "release", + "view", + tag, + "--repo", + repo, + "--json", + "assets", + "--jq", + ".assets[].name", + ], + { encoding: "utf8" }, + ); + + const assetNames = new Set( + output + .split("\n") + .map((value) => value.trim()) + .filter(Boolean), + ); + + const missing = REQUIRED_ASSETS.filter((name) => !assetNames.has(name)); + if (missing.length > 0) { + throw new Error( + `Release ${tag} is missing demo assets: ${missing.join(", ")}`, + ); + } + + process.stdout.write( + `[release] Demo assets present for ${tag}: ${REQUIRED_ASSETS.join(", ")}\n`, + ); +} + +try { + main(); +} catch (error) { + process.stderr.write( + `${error instanceof Error ? error.message : String(error)}\n`, + ); + process.exitCode = 1; +} diff --git a/scripts/watch-release-lane.mjs b/scripts/watch-release-lane.mjs index f4bc82cd..7d7c321c 100644 --- a/scripts/watch-release-lane.mjs +++ b/scripts/watch-release-lane.mjs @@ -100,6 +100,14 @@ function main() { "--repo", options.repo, ]); + log(`Checking published demo assets for ${releaseTag}`); + execCommand("node", [ + "./scripts/assert-release-demo-assets.mjs", + "--tag", + releaseTag, + "--repo", + options.repo, + ]); } function parseArgs(argv) { From 5fa6718d540d8235fbee4c1c803d253f27a0dbb4 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 11:38:33 -0500 Subject: [PATCH 077/249] fix(demos): render real CLI output --- .github/workflows/ci.yml | 1 + .github/workflows/prerelease.yml | 1 + .github/workflows/release.yml | 1 + docs/transcripts/data-list.txt | 4 +-- docs/transcripts/data-show-github.txt | 2 +- docs/transcripts/status.txt | 4 +-- scripts/capture-cli-transcripts.mjs | 10 ++++--- scripts/prepare-vhs-fixtures.mjs | 4 ++- scripts/render-vhs.mjs | 37 +++++++++++++++++++---- src/cli/index.ts | 42 ++++++++++++++++++--------- 10 files changed, 77 insertions(+), 29 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c626da71..accff02c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -89,6 +89,7 @@ jobs: - run: pnpm install --frozen-lockfile - run: pnpm clean - run: pnpm build + - run: pnpm build:sea -- --artifact-name vana-linux-x64 --platform linux --arch x64 --archive-format tar.gz --binary-name vana - run: pnpm demo:transcripts - run: pnpm demo:vhs - uses: actions/upload-artifact@v7 diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 097c8067..97d7497e 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -81,6 +81,7 @@ jobs: - run: pnpm install --frozen-lockfile - run: pnpm clean - run: pnpm build + - run: pnpm build:sea -- --artifact-name vana-linux-x64 --platform linux --arch x64 --archive-format tar.gz --binary-name vana - run: pnpm demo:transcripts - run: pnpm demo:vhs - uses: actions/upload-artifact@v7 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bdd8bd82..f586f6a3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -82,6 +82,7 @@ jobs: - run: pnpm install --frozen-lockfile - run: pnpm clean - run: pnpm build + - run: pnpm build:sea -- --artifact-name vana-linux-x64 --platform linux --arch x64 --archive-format tar.gz --binary-name vana - run: pnpm demo:transcripts - run: pnpm demo:vhs - uses: actions/upload-artifact@v7 diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt index 997d743b..4cde545f 100644 --- a/docs/transcripts/data-list.txt +++ b/docs/transcripts/data-list.txt @@ -5,9 +5,9 @@ GitHub [local] Repositories: 2 Starred: 0 Updated: Mar 14, 2026, 8:10 AM -Path: /home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json +Path: ~/.dataconnect/github-result.json Spotify [local] Profile: tnunamak Updated: Mar 13, 2026, 4:23 PM -Path: /home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/spotify-result.json +Path: ~/.dataconnect/spotify-result.json diff --git a/docs/transcripts/data-show-github.txt b/docs/transcripts/data-show-github.txt index 53cfd761..5221af3f 100644 --- a/docs/transcripts/data-show-github.txt +++ b/docs/transcripts/data-show-github.txt @@ -4,6 +4,6 @@ GitHub data • Repositories: 2 • Starred: 0 -Path: /home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json +Path: ~/.dataconnect/github-result.json Updated: Mar 14, 2026, 8:10 AM State: Saved locally diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index f7430c05..67c78c99 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -18,8 +18,8 @@ Steam [unavailable] GitHub [interactive] [local] Inspect the latest local dataset with `vana data show github`. Updated: Mar 14, 2026, 8:10 AM - /home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json + ~/.dataconnect/github-result.json Spotify [legacy] [local] Inspect the latest local dataset with `vana data show spotify`. Updated: Mar 13, 2026, 4:23 PM - /home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/spotify-result.json + ~/.dataconnect/spotify-result.json diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index 4fa33166..58edceae 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -8,17 +8,15 @@ import { fileURLToPath } from "node:url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const repoRoot = path.resolve(__dirname, ".."); const transcriptsDir = path.join(repoRoot, "docs", "transcripts"); -const fixtureHome = path.join(repoRoot, "docs", "vhs", "fixtures", "demo-home"); const connectorsDir = resolveDataConnectorsDir(); async function main() { - prepareFixtures(); await fsp.mkdir(transcriptsDir, { recursive: true }); const tempRoot = await fsp.mkdtemp( path.join(os.tmpdir(), "vana-transcripts-"), ); const workingHome = path.join(tempRoot, "home"); - await fsp.cp(fixtureHome, workingHome, { recursive: true }); + await prepareFixtures(workingHome); const binDir = path.join(tempRoot, "bin"); await prepareDemoBin(binDir); @@ -65,9 +63,13 @@ async function main() { await fsp.rm(tempRoot, { recursive: true, force: true }); } -function prepareFixtures() { +function prepareFixtures(homeRoot) { execFileSync("node", ["./scripts/prepare-vhs-fixtures.mjs"], { cwd: repoRoot, + env: { + ...process.env, + ...(homeRoot ? { VANA_VHS_HOME_ROOT: homeRoot } : {}), + }, stdio: "inherit", }); } diff --git a/scripts/prepare-vhs-fixtures.mjs b/scripts/prepare-vhs-fixtures.mjs index 5668f340..fe23e78c 100644 --- a/scripts/prepare-vhs-fixtures.mjs +++ b/scripts/prepare-vhs-fixtures.mjs @@ -5,7 +5,9 @@ import { fileURLToPath } from "node:url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const repoRoot = path.resolve(__dirname, ".."); const fixturesRoot = path.join(repoRoot, "docs", "vhs", "fixtures"); -const homeRoot = path.join(fixturesRoot, "demo-home"); +const homeRoot = process.env.VANA_VHS_HOME_ROOT + ? path.resolve(process.env.VANA_VHS_HOME_ROOT) + : path.join(fixturesRoot, "demo-home"); const dataConnectRoot = path.join(homeRoot, ".dataconnect"); async function main() { diff --git a/scripts/render-vhs.mjs b/scripts/render-vhs.mjs index 0d81a0d5..6d502c1c 100644 --- a/scripts/render-vhs.mjs +++ b/scripts/render-vhs.mjs @@ -10,6 +10,13 @@ const repoRoot = path.resolve(__dirname, ".."); const tapesDir = path.join(repoRoot, "docs", "vhs"); const connectorsDir = resolveDataConnectorsDir(); const fixtureHome = path.join(tapesDir, "fixtures", "demo-home"); +const linuxSeaBinaryPath = path.join( + repoRoot, + "artifacts", + "sea", + "vana-linux-x64", + "vana", +); const tapes = [ "status-and-sources.tape", "data-inspection.tape", @@ -18,9 +25,8 @@ const tapes = [ function main() { prepareFixtures(); - const { env, cleanup } = prepareRenderEnv(); - - const runner = resolveRunner(); + const { env, cleanup, tempRoot, binDir } = prepareRenderEnv(); + const runner = resolveRunner({ tempRoot, binDir }); try { for (const tape of tapes) { const tapePath = path.join(tapesDir, tape); @@ -50,14 +56,25 @@ function prepareFixtures() { }); } -function resolveRunner() { +function resolveRunner({ tempRoot, binDir }) { if (commandExists("vhs")) { return { command: "vhs", args: [] }; } if (commandExists("docker")) { + if (!fs.existsSync(linuxSeaBinaryPath)) { + throw new Error( + `Docker-based VHS rendering requires ${path.relative( + repoRoot, + linuxSeaBinaryPath, + )}. Build it first with \`pnpm build:sea -- --artifact-name vana-linux-x64 --platform linux --arch x64 --archive-format tar.gz --binary-name vana\`.`, + ); + } + const dockerEnvArgs = [ "-e", `HOME=${fixtureHome}`, + "-e", + `PATH=${binDir}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin`, ...(connectorsDir ? ["-e", `VANA_DATA_CONNECTORS_DIR=${connectorsDir}`] : []), @@ -69,6 +86,8 @@ function resolveRunner() { "--rm", "-v", `${repoRoot}:${repoRoot}`, + "-v", + `${tempRoot}:${tempRoot}`, "-w", repoRoot, ...dockerEnvArgs, @@ -94,11 +113,17 @@ function prepareRenderEnv() { const binDir = path.join(tempRoot, "bin"); fs.mkdirSync(binDir, { recursive: true }); const launcherPath = path.join(binDir, "vana"); + const launcherTarget = fs.existsSync(linuxSeaBinaryPath) + ? linuxSeaBinaryPath + : path.join(repoRoot, "dist", "cli", "bin.js"); + const launcherExec = fs.existsSync(linuxSeaBinaryPath) + ? `exec "${launcherTarget}" "$@"` + : `exec node "${launcherTarget}" "$@"`; fs.writeFileSync( launcherPath, `#!/usr/bin/env bash set -euo pipefail -exec node "${path.join(repoRoot, "dist", "cli", "bin.js")}" "$@" +${launcherExec} `, "utf8", ); @@ -113,6 +138,8 @@ exec node "${path.join(repoRoot, "dist", "cli", "bin.js")}" "$@" return { env, + tempRoot, + binDir, cleanup() { fs.rmSync(tempRoot, { recursive: true, force: true }); }, diff --git a/src/cli/index.ts b/src/cli/index.ts index ee755077..a8e9e379 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1,3 +1,4 @@ +import os from "node:os"; import fs from "node:fs"; import fsp from "node:fs/promises"; import path from "node:path"; @@ -211,7 +212,7 @@ async function runConnect( }); emit.info("Runtime ready."); if (installResult.logPath) { - emit.info(`Setup log: ${installResult.logPath}`); + emit.info(`Setup log: ${formatDisplayPath(installResult.logPath)}`); } } else { emit.event({ @@ -370,7 +371,7 @@ async function runConnect( source: resolution.source, }); if (event.logPath) { - emit.info(`Run log: ${event.logPath}`); + emit.info(`Run log: ${formatDisplayPath(event.logPath)}`); } return 1; } @@ -403,7 +404,7 @@ async function runConnect( `Run ${emit.code(`vana connect ${source}`)} without ${emit.code("--no-input")}.`, ); if (event.logPath) { - emit.detail(`Run log: ${event.logPath}`); + emit.detail(`Run log: ${formatDisplayPath(event.logPath)}`); } emit.event({ type: "outcome", @@ -503,7 +504,7 @@ async function runConnect( emit.bullet("Your data is now available in your Personal Server."); } else { emit.section("Saved locally"); - emit.bullet(resultPath); + emit.bullet(formatDisplayPath(resultPath)); if ( finalStatus === CliOutcomeStatus.INGEST_FAILED && ingestFailureMessage @@ -517,11 +518,11 @@ async function runConnect( } if (runLogPath) { - emit.detail(`Run log: ${runLogPath}`); + emit.detail(`Run log: ${formatDisplayPath(runLogPath)}`); } else if (fetchLogPath) { - emit.detail(`Fetch log: ${fetchLogPath}`); + emit.detail(`Fetch log: ${formatDisplayPath(fetchLogPath)}`); } else if (setupLogPath) { - emit.detail(`Setup log: ${setupLogPath}`); + emit.detail(`Setup log: ${formatDisplayPath(setupLogPath)}`); } emit.blank(); @@ -546,11 +547,11 @@ async function runConnect( reason: message, }); if (runLogPath) { - emit.info(`Run log: ${runLogPath}`); + emit.info(`Run log: ${formatDisplayPath(runLogPath)}`); } else if (fetchLogPath) { - emit.info(`Fetch log: ${fetchLogPath}`); + emit.info(`Fetch log: ${formatDisplayPath(fetchLogPath)}`); } else if (setupLogPath) { - emit.info(`Setup log: ${setupLogPath}`); + emit.info(`Setup log: ${formatDisplayPath(setupLogPath)}`); } return 1; } @@ -850,7 +851,7 @@ async function runDataList(options: GlobalOptions): Promise { emit.keyValue("Updated", formatTimestamp(dataset.lastRunAt), "muted"); } if (dataset.path) { - emit.keyValue("Path", dataset.path, "muted"); + emit.keyValue("Path", formatDisplayPath(dataset.path), "muted"); } }); return 0; @@ -909,7 +910,7 @@ async function runDataShow( } emit.blank(); } - emit.keyValue("Path", resultPath, "muted"); + emit.keyValue("Path", formatDisplayPath(resultPath), "muted"); if (record?.lastRunAt) { emit.keyValue("Updated", formatTimestamp(record.lastRunAt), "muted"); } @@ -963,7 +964,7 @@ async function runDataPath( if (options.json) { process.stdout.write(`${JSON.stringify({ source, path: resultPath })}\n`); } else { - process.stdout.write(`${resultPath}\n`); + process.stdout.write(`${formatDisplayPath(resultPath)}\n`); } return 0; } @@ -1186,7 +1187,7 @@ function formatSourceStatusDetails(source: SourceStatus): string[] { } if (source.lastResultPath && source.dataState !== "none") { - details.push(source.lastResultPath); + details.push(formatDisplayPath(source.lastResultPath)); } return details; @@ -1208,6 +1209,19 @@ function normalizeArgv(argv: string[]): string[] { return argv; } +function formatDisplayPath(filePath: string): string { + const homeDir = os.homedir(); + if (filePath === homeDir) { + return "~"; + } + + if (filePath.startsWith(`${homeDir}${path.sep}`)) { + return `~${filePath.slice(homeDir.length)}`; + } + + return filePath; +} + function extractGlobalOptions(argv: string[]): GlobalOptions { return { json: argv.includes("--json"), From 6a75d05105f4491196d88663dbff1c2c591dadee Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 11:43:56 -0500 Subject: [PATCH 078/249] fix(cli): shorten home-relative status paths --- src/cli/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index a8e9e379..0a9527c0 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -694,7 +694,7 @@ async function runStatus(options: GlobalOptions): Promise { emit.section("Environment"); emit.keyValue("Runtime", status.runtime, toneForRuntime(status.runtime)); if (status.runtimePath) { - emit.detail(status.runtimePath); + emit.detail(formatDisplayPath(status.runtimePath)); } emit.keyValue( "Personal Server", @@ -770,7 +770,7 @@ async function runSetup(options: GlobalOptions): Promise { const result = await runtime.ensureInstalled(Boolean(options.yes)); emit.info("Runtime ready."); if (result.logPath) { - emit.info(`Setup log: ${result.logPath}`); + emit.info(`Setup log: ${formatDisplayPath(result.logPath)}`); } emit.event({ type: "setup-complete", From f0a51b21cd4b66a7885e62b547a95d2fcede2df5 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 11:52:23 -0500 Subject: [PATCH 079/249] feat(cli): polish guided picker and vhs pacing --- docs/vhs/connect-guided.tape | 11 +++++++---- docs/vhs/data-inspection.tape | 11 +++++++---- docs/vhs/status-and-sources.tape | 11 +++++++---- src/cli/index.ts | 5 ++++- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/docs/vhs/connect-guided.tape b/docs/vhs/connect-guided.tape index b2d8c832..2a4ca667 100644 --- a/docs/vhs/connect-guided.tape +++ b/docs/vhs/connect-guided.tape @@ -1,14 +1,17 @@ Output docs/vhs/connect-guided.gif +Require vana Set Shell "bash" Set FontSize 16 -Set Width 1200 -Set Height 900 -Set TypingSpeed 0ms +Set Width 1120 +Set Height 720 +Set TypingSpeed 45ms +Set CursorBlink false +Set LoopOffset 45% Type "vana connect steam --no-input" Enter -Sleep 1200ms +Sleep 900ms Type "vana connect" Enter diff --git a/docs/vhs/data-inspection.tape b/docs/vhs/data-inspection.tape index 6fcc26d3..35f4e58c 100644 --- a/docs/vhs/data-inspection.tape +++ b/docs/vhs/data-inspection.tape @@ -1,14 +1,17 @@ Output docs/vhs/data-inspection.gif +Require vana Set Shell "bash" Set FontSize 16 -Set Width 1200 -Set Height 900 -Set TypingSpeed 0ms +Set Width 1120 +Set Height 720 +Set TypingSpeed 45ms +Set CursorBlink false +Set LoopOffset 40% Type "vana data list" Enter -Sleep 1200ms +Sleep 800ms Type "vana data show github" Enter diff --git a/docs/vhs/status-and-sources.tape b/docs/vhs/status-and-sources.tape index e2736c79..86459b80 100644 --- a/docs/vhs/status-and-sources.tape +++ b/docs/vhs/status-and-sources.tape @@ -1,14 +1,17 @@ Output docs/vhs/status-and-sources.gif +Require vana Set Shell "bash" Set FontSize 16 -Set Width 1200 -Set Height 900 -Set TypingSpeed 0ms +Set Width 1120 +Set Height 720 +Set TypingSpeed 45ms +Set CursorBlink false +Set LoopOffset 40% Type "vana status" Enter -Sleep 1200ms +Sleep 800ms Type "vana sources" Enter diff --git a/src/cli/index.ts b/src/cli/index.ts index 0a9527c0..4170eb2c 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -595,8 +595,11 @@ async function runConnectEntry(options: GlobalOptions): Promise { try { source = await select({ message: "Source", + pageSize: 8, choices: sources.map((item) => ({ - name: `${item.name}${formatAuthModeBadge(item.authMode, emit)}${item.description ? ` - ${item.description}` : ""}`, + name: `${item.name}${formatAuthModeBadge(item.authMode, emit)}`, + description: item.description, + short: item.name, value: item.id, })), }); From 14fb34860dda56de78290f8a6abfa8e12e481e0b Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 11:56:23 -0500 Subject: [PATCH 080/249] chore(cli): refine unsupported-source guidance --- docs/transcripts/connect-steam-no-input.txt | 4 ++-- src/cli/index.ts | 4 ++-- test/cli/index.test.ts | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/transcripts/connect-steam-no-input.txt b/docs/transcripts/connect-steam-no-input.txt index 4691924c..25acac03 100644 --- a/docs/transcripts/connect-steam-no-input.txt +++ b/docs/transcripts/connect-steam-no-input.txt @@ -5,5 +5,5 @@ Finding a connector for Steam... No connector is available for steam right now. → Next -• Run `vana sources` to see available sources. -• Or try a different source with vana connect . +• Browse available sources with `vana sources`. +• Then connect one with vana connect . diff --git a/src/cli/index.ts b/src/cli/index.ts index 4170eb2c..d513cea4 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -243,9 +243,9 @@ async function runConnect( if (!options.json) { emit.blank(); emit.section("Next"); - emit.bullet("Run `vana sources` to see available sources."); + emit.bullet("Browse available sources with `vana sources`."); emit.bullet( - `Or try a different source with ${emit.code("vana connect ")}.`, + `Then connect one with ${emit.code("vana connect ")}.`, ); } emit.event({ diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 7eda489b..d4217f3c 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -781,7 +781,8 @@ describe("runCli", () => { expect(exitCode).toBe(1); expect(stdout).toContain("No connector is available for steam right now."); expect(stdout).toContain("→ Next"); - expect(stdout).toContain("Run `vana sources` to see available sources."); + expect(stdout).toContain("Browse available sources with `vana sources`."); + expect(stdout).toContain("Then connect one with vana connect ."); expect(stdout).toContain("vana connect "); }); From 04cb27e82160acc1d280a3b1a572c304d2bdb368 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 12:00:42 -0500 Subject: [PATCH 081/249] feat(cli): polish static surfaces and command cues --- docs/transcripts/connect-steam-no-input.txt | 2 +- docs/transcripts/data-list.txt | 3 +++ docs/transcripts/data-show-github.txt | 4 ++++ docs/transcripts/sources.txt | 3 +++ src/cli/index.ts | 13 +++++++++++++ src/cli/render/theme.ts | 5 +++-- test/cli/index.test.ts | 6 +++++- 7 files changed, 32 insertions(+), 4 deletions(-) diff --git a/docs/transcripts/connect-steam-no-input.txt b/docs/transcripts/connect-steam-no-input.txt index 25acac03..c9918b66 100644 --- a/docs/transcripts/connect-steam-no-input.txt +++ b/docs/transcripts/connect-steam-no-input.txt @@ -6,4 +6,4 @@ No connector is available for steam right now. → Next • Browse available sources with `vana sources`. -• Then connect one with vana connect . +• Then connect one with `vana connect `. diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt index 4cde545f..3bb853b6 100644 --- a/docs/transcripts/data-list.txt +++ b/docs/transcripts/data-list.txt @@ -11,3 +11,6 @@ Spotify [local] Profile: tnunamak Updated: Mar 13, 2026, 4:23 PM Path: ~/.dataconnect/spotify-result.json + +→ Next +• Inspect one with `vana data show `. diff --git a/docs/transcripts/data-show-github.txt b/docs/transcripts/data-show-github.txt index 5221af3f..314da534 100644 --- a/docs/transcripts/data-show-github.txt +++ b/docs/transcripts/data-show-github.txt @@ -7,3 +7,7 @@ GitHub data Path: ~/.dataconnect/github-result.json Updated: Mar 14, 2026, 8:10 AM State: Saved locally + +→ Next +• Print the path with `vana data path github`. +• Check overall status with `vana status`. diff --git a/docs/transcripts/sources.txt b/docs/transcripts/sources.txt index 2128df80..dba9f18f 100644 --- a/docs/transcripts/sources.txt +++ b/docs/transcripts/sources.txt @@ -21,3 +21,6 @@ Uber [legacy] Exports your Uber trip history and receipts using Playwright browser automation. YouTube [legacy] Exports your YouTube profile, subscriptions, playlists, playlist items, liked videos, watch later list, and recent watch history using Playwright browser automation. + +→ Next +• Connect one with `vana connect `. diff --git a/src/cli/index.ts b/src/cli/index.ts index d513cea4..fe3fedc9 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -665,6 +665,10 @@ async function runList(options: GlobalOptions): Promise { }); if (groups.length === 0) { emit.info("No sources are available right now."); + } else { + emit.blank(); + emit.section("Next"); + emit.bullet(`Connect one with ${emit.code("vana connect ")}.`); } return 0; } @@ -857,6 +861,9 @@ async function runDataList(options: GlobalOptions): Promise { emit.keyValue("Path", formatDisplayPath(dataset.path), "muted"); } }); + emit.blank(); + emit.section("Next"); + emit.bullet(`Inspect one with ${emit.code("vana data show ")}.`); return 0; } @@ -924,6 +931,12 @@ async function runDataShow( } else { emit.keyValue("State", "Saved locally", "muted"); } + emit.blank(); + emit.section("Next"); + emit.bullet( + `Print the path with ${emit.code(`vana data path ${source}`)}.`, + ); + emit.bullet(`Check overall status with ${emit.code("vana status")}.`); return 0; } catch (error) { const message = diff --git a/src/cli/render/theme.ts b/src/cli/render/theme.ts index 278c5b6f..96e50f5e 100644 --- a/src/cli/render/theme.ts +++ b/src/cli/render/theme.ts @@ -17,6 +17,7 @@ export interface RenderTheme { export function createTheme(capabilities: RenderCapabilities): RenderTheme { const colors = createColors(capabilities.color); + const formatCode = (text: string) => `\`${text}\``; if (capabilities.tier === "rich") { return { accent: (text) => rgb(65, 65, 252, text), @@ -28,7 +29,7 @@ export function createTheme(capabilities: RenderCapabilities): RenderTheme { warning: (text) => rgb(186, 139, 0, text), error: (text) => rgb(220, 38, 38, text), info: (text) => rgb(65, 65, 252, text), - code: (text) => colors.bold(text), + code: (text) => colors.bold(formatCode(text)), }; } @@ -42,7 +43,7 @@ export function createTheme(capabilities: RenderCapabilities): RenderTheme { warning: (text) => colors.yellow(text), error: (text) => colors.red(text), info: (text) => colors.cyan(text), - code: (text) => colors.bold(text), + code: (text) => colors.bold(formatCode(text)), }; } diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index d4217f3c..6d2de78b 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -414,6 +414,10 @@ describe("runCli", () => { Path: /tmp/.dataconnect/github-result.json Updated: State: Saved locally + + → Next + • Print the path with \`vana data path github\`. + • Check overall status with \`vana status\`. " `); }); @@ -782,7 +786,7 @@ describe("runCli", () => { expect(stdout).toContain("No connector is available for steam right now."); expect(stdout).toContain("→ Next"); expect(stdout).toContain("Browse available sources with `vana sources`."); - expect(stdout).toContain("Then connect one with vana connect ."); + expect(stdout).toContain("Then connect one with `vana connect `."); expect(stdout).toContain("vana connect "); }); From 26b25de9dab4aef77aa1844aeaff4cb69bf7cf9b Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 12:02:53 -0500 Subject: [PATCH 082/249] docs(cli): surface preview and slow demo pacing --- README.md | 25 +++++++++++++++++++++++++ docs/vhs/connect-guided.tape | 6 +++--- docs/vhs/data-inspection.tape | 6 +++--- docs/vhs/status-and-sources.tape | 6 +++--- 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 7bfe9bdf..5a06766a 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,31 @@ Let your users bring their own data to your app. +## CLI preview + +This branch also carries the new `vana` collection CLI preview. + +- install the current canary on macOS with Homebrew: + +```bash +brew tap vana-com/vana +brew install vana +vana status +``` + +- or use the hosted prerelease installer on macOS/Linux: + +```bash +curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.sh | sh -s -- --version canary-feat-connect-cli-v1 +``` + +- branch release page: + `https://github.com/vana-com/vana-connect/releases/tag/canary-feat-connect-cli-v1` +- demo media: + [`status-and-sources.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif), + [`data-inspection.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif), + [`connect-guided.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-guided.gif) + ## What problem this solves Your users already have rich personal data — ChatGPT conversations, Instagram activity, Gmail, purchase history — but it's locked inside the platforms that collected it. As a builder, you can't easily use that data to personalize onboarding, tailor recommendations, or skip lengthy signup forms. diff --git a/docs/vhs/connect-guided.tape b/docs/vhs/connect-guided.tape index 2a4ca667..0c9fd3af 100644 --- a/docs/vhs/connect-guided.tape +++ b/docs/vhs/connect-guided.tape @@ -5,14 +5,14 @@ Set Shell "bash" Set FontSize 16 Set Width 1120 Set Height 720 -Set TypingSpeed 45ms +Set TypingSpeed 70ms Set CursorBlink false Set LoopOffset 45% Type "vana connect steam --no-input" Enter -Sleep 900ms +Sleep 1500ms Type "vana connect" Enter -Sleep 1200ms +Sleep 2200ms diff --git a/docs/vhs/data-inspection.tape b/docs/vhs/data-inspection.tape index 35f4e58c..4814f375 100644 --- a/docs/vhs/data-inspection.tape +++ b/docs/vhs/data-inspection.tape @@ -5,14 +5,14 @@ Set Shell "bash" Set FontSize 16 Set Width 1120 Set Height 720 -Set TypingSpeed 45ms +Set TypingSpeed 70ms Set CursorBlink false Set LoopOffset 40% Type "vana data list" Enter -Sleep 800ms +Sleep 1400ms Type "vana data show github" Enter -Sleep 1200ms +Sleep 2200ms diff --git a/docs/vhs/status-and-sources.tape b/docs/vhs/status-and-sources.tape index 86459b80..79ef6ec6 100644 --- a/docs/vhs/status-and-sources.tape +++ b/docs/vhs/status-and-sources.tape @@ -5,14 +5,14 @@ Set Shell "bash" Set FontSize 16 Set Width 1120 Set Height 720 -Set TypingSpeed 45ms +Set TypingSpeed 70ms Set CursorBlink false Set LoopOffset 40% Type "vana status" Enter -Sleep 800ms +Sleep 1400ms Type "vana sources" Enter -Sleep 1200ms +Sleep 2200ms From adbd7ae6a5a59a095bc26fd000927cd1d1d2ced4 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 12:05:11 -0500 Subject: [PATCH 083/249] feat(cli): strengthen success rendering --- src/cli/index.ts | 13 ++++++++++--- src/cli/render/format.ts | 4 ++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index fe3fedc9..c0b46ef0 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -57,6 +57,7 @@ interface Emitter { info(message: string): void; blank(): void; title(message: string): void; + success(message: string): void; section(message: string): void; keyValue(label: string, value: string, tone?: RenderTone): void; detail(message: string): void; @@ -210,7 +211,7 @@ async function runConnect( runtime: installResult.runtime, logPath: installResult.logPath, }); - emit.info("Runtime ready."); + emit.success("Runtime ready."); if (installResult.logPath) { emit.info(`Setup log: ${formatDisplayPath(installResult.logPath)}`); } @@ -487,7 +488,7 @@ async function runConnect( ? `Collected your ${displayName} data and synced it to your Personal Server.` : `Collected your ${displayName} data and saved it locally.`; - emit.title(`Connected ${displayName}.`); + emit.success(`Connected ${displayName}.`); emit.detail(successSummary); emit.blank(); @@ -775,7 +776,7 @@ async function runSetup(options: GlobalOptions): Promise { try { const result = await runtime.ensureInstalled(Boolean(options.yes)); - emit.info("Runtime ready."); + emit.success("Runtime ready."); if (result.logPath) { emit.info(`Setup log: ${formatDisplayPath(result.logPath)}`); } @@ -1012,6 +1013,12 @@ function createEmitter(options: GlobalOptions): Emitter { } process.stdout.write(`${renderer.title(message)}\n`); }, + success(message: string) { + if (options.json || options.quiet) { + return; + } + process.stdout.write(`${renderer.success(message)}\n`); + }, section(message: string) { if (options.json || options.quiet) { return; diff --git a/src/cli/render/format.ts b/src/cli/render/format.ts index 405c2adc..ca3a6326 100644 --- a/src/cli/render/format.ts +++ b/src/cli/render/format.ts @@ -13,6 +13,7 @@ export interface HumanRenderer { readonly theme: RenderTheme; blank(): string; title(text: string): string; + success(text: string): string; section(text: string): string; keyValue(label: string, value: string, tone?: Tone): string; sourceTitle(name: string, badges?: string[]): string; @@ -36,6 +37,9 @@ export function createHumanRenderer(): HumanRenderer { title(text) { return theme.heading(text); }, + success(text) { + return `${theme.success(symbols.success)} ${theme.heading(text)}`; + }, section(text) { return `${theme.accent(symbols.arrow)} ${theme.accent(text)}`; }, From 16d8963bfc02bd8833ef41d5d7a1fd77877ad9c3 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 12:08:32 -0500 Subject: [PATCH 084/249] feat(cli): polish connect cancellations --- src/cli/index.ts | 5 ++-- test/cli/index.test.ts | 66 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index c0b46ef0..7bb6903f 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -190,10 +190,11 @@ async function runConnect( } const shouldContinue = await confirm({ - message: "Continue?", + message: "Install the local runtime now?", default: true, }); if (!shouldContinue) { + emit.info("Cancelled. Runtime setup was not started."); emit.event({ type: "outcome", status: CliOutcomeStatus.SETUP_REQUIRED, @@ -606,7 +607,7 @@ async function runConnectEntry(options: GlobalOptions): Promise { }); } catch (error) { if (isPromptCancelled(error)) { - emit.info("Cancelled."); + emit.info("Cancelled. No source was connected."); return 1; } throw error; diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 6d2de78b..20f91de2 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -5,6 +5,8 @@ const mockDetectPersonalServerTarget = vi.fn(); const mockIngestResult = vi.fn(); const mockReadCliState = vi.fn(); const mockUpdateSourceState = vi.fn(); +const mockConfirm = vi.fn(); +const mockSelect = vi.fn(); const mockReaddir = vi.fn(); const mockReadFile = vi.fn(); const mockExistsSync = vi.fn(); @@ -52,6 +54,13 @@ vi.mock("../../src/connectors/registry.js", () => ({ listAvailableSources: mockListAvailableSources, })); +vi.mock("@inquirer/prompts", () => ({ + confirm: mockConfirm, + input: vi.fn(), + password: vi.fn(), + select: mockSelect, +})); + vi.mock("../../src/personal-server/index.js", () => ({ detectPersonalServerTarget: mockDetectPersonalServerTarget, ingestResult: mockIngestResult, @@ -99,6 +108,8 @@ describe("runCli", () => { mockIngestResult.mockReset(); mockReadCliState.mockReset(); mockUpdateSourceState.mockReset(); + mockConfirm.mockReset(); + mockSelect.mockReset(); mockReaddir.mockReset(); mockReadFile.mockReset(); mockExistsSync.mockReset(); @@ -118,6 +129,8 @@ describe("runCli", () => { { type: "ingest-skipped", reason: "personal_server_unavailable" }, ]); mockReadCliState.mockResolvedValue({ version: 1, sources: {} }); + mockConfirm.mockResolvedValue(true); + mockSelect.mockResolvedValue("github"); mockReaddir.mockRejectedValue(new Error("missing")); mockReadFile.mockRejectedValue(new Error("missing")); mockExistsSync.mockReturnValue(false); @@ -634,6 +647,59 @@ describe("runCli", () => { expect(stdout).not.toContain("Choose a source to connect:"); }); + it("prints a clear message when the guided source picker is cancelled", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + ]); + const promptError = new Error("prompt aborted"); + promptError.name = "ExitPromptError"; + mockSelect.mockRejectedValueOnce(promptError); + const originalStdoutTty = process.stdout.isTTY; + const originalStdinTty = process.stdin.isTTY; + Object.defineProperty(process.stdout, "isTTY", { + configurable: true, + value: true, + }); + Object.defineProperty(process.stdin, "isTTY", { + configurable: true, + value: true, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect"]); + + Object.defineProperty(process.stdout, "isTTY", { + configurable: true, + value: originalStdoutTty, + }); + Object.defineProperty(process.stdin, "isTTY", { + configurable: true, + value: originalStdinTty, + }); + + expect(exitCode).toBe(1); + expect(mockSelect).toHaveBeenCalled(); + expect(stdout).toContain("Cancelled. No source was connected."); + }); + + it("prints a clear message when runtime setup is declined", async () => { + runtimeState = "missing"; + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + ]); + mockConfirm.mockResolvedValueOnce(false); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect", "github"]); + + expect(exitCode).toBe(1); + expect(mockConfirm).toHaveBeenCalledWith({ + message: "Install the local runtime now?", + default: true, + }); + expect(stdout).toContain("Cancelled. Runtime setup was not started."); + }); + it("prints a human success summary after collection completes", async () => { mockListAvailableSources.mockResolvedValue([ { From 9d5bf702bdcc30ddeccf79251d2e7284563b1833 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 12:11:06 -0500 Subject: [PATCH 085/249] feat(cli): surface connector progress updates --- src/cli/index.ts | 33 ++++++++++++++++++++++++ src/core/cli-types.ts | 2 ++ src/runtime/core/contracts.ts | 10 +++++++ src/runtime/playwright/in-process-run.ts | 8 ++++++ test/cli/index.test.ts | 8 ++++++ 5 files changed, 61 insertions(+) diff --git a/src/cli/index.ts b/src/cli/index.ts index 7bb6903f..480b057e 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -360,6 +360,14 @@ async function runConnect( return 1; } + if (event.type === "progress-update") { + const progressLine = formatProgressUpdate(event); + if (progressLine) { + emit.detail(progressLine); + } + continue; + } + if (event.type === "runtime-error") { await updateSourceState(resolution.source, { lastRunAt: new Date().toISOString(), @@ -1351,6 +1359,31 @@ function toneForRuntime(runtime: CliStatus["runtime"]): RenderTone { return "muted"; } +function formatProgressUpdate(event: { + message?: string; + count?: number; + phase?: unknown; +}): string | null { + const phaseLabel = + event.phase && + typeof event.phase === "object" && + "label" in event.phase && + typeof (event.phase as { label?: unknown }).label === "string" + ? (event.phase as { label: string }).label + : null; + + if (phaseLabel && event.message) { + return `${phaseLabel}: ${event.message}`; + } + if (event.message) { + return event.message; + } + if (phaseLabel && typeof event.count === "number") { + return `${phaseLabel}: ${event.count}`; + } + return null; +} + function inferInstalledAuthMode( installedFiles: Array<{ source: string; path: string }>, source: string, diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index 5172dd10..12b2fe1d 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -75,6 +75,8 @@ export const cliEventSchema = z.object({ target: z.string().optional(), runtime: z.string().optional(), reason: z.string().optional(), + count: z.number().optional(), + phase: z.unknown().optional(), }); export type CliEvent = z.infer; diff --git a/src/runtime/core/contracts.ts b/src/runtime/core/contracts.ts index ff420388..413e4926 100644 --- a/src/runtime/core/contracts.ts +++ b/src/runtime/core/contracts.ts @@ -38,6 +38,15 @@ export interface RuntimeCollectionCompleteEvent { logPath: string; } +export interface RuntimeProgressEvent { + type: "progress-update"; + source: string; + logPath: string; + message?: string; + count?: number; + phase?: unknown; +} + export interface RuntimeErrorEvent { type: "runtime-error"; source: string; @@ -51,6 +60,7 @@ export type RuntimeEvent = | RuntimeHeadedRequiredEvent | RuntimeLegacyAuthEvent | RuntimeCollectionCompleteEvent + | RuntimeProgressEvent | RuntimeErrorEvent; export interface RuntimeInputRequest { diff --git a/src/runtime/playwright/in-process-run.ts b/src/runtime/playwright/in-process-run.ts index ef4db9df..785b27b1 100644 --- a/src/runtime/playwright/in-process-run.ts +++ b/src/runtime/playwright/in-process-run.ts @@ -581,6 +581,14 @@ function createPageApi({ message?: string; count?: number; }) => { + pushEvent({ + type: "progress-update", + source: request.source, + logPath, + phase, + message, + count, + }); writeLog( `[progress] ${JSON.stringify({ phase, diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 20f91de2..a1c0a63f 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -715,6 +715,13 @@ describe("runCli", () => { logPath: "/tmp/logs/fetch.log", }; runConnectorEvents = [ + { + type: "progress-update", + source: "github", + logPath: "/tmp/logs/run.log", + phase: { step: 2, total: 3, label: "Repositories" }, + message: "Fetching repositories...", + }, { type: "collection-complete", source: "github", @@ -741,6 +748,7 @@ describe("runCli", () => { expect(stdout).toContain("Collected"); expect(stdout).toContain("Profile: tnunamak"); expect(stdout).toContain("Repositories: 2"); + expect(stdout).toContain("Repositories: Fetching repositories..."); expect(stdout).toContain("Saved locally"); expect(stdout).toContain("/tmp/.dataconnect/github-result.json"); expect(stdout).toContain("Next"); From 07bd768a3c35198213ecf025903f39df53490199 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 12:13:16 -0500 Subject: [PATCH 086/249] feat(cli): surface connector status updates --- src/cli/index.ts | 7 +++++++ src/runtime/core/contracts.ts | 8 ++++++++ src/runtime/playwright/in-process-run.ts | 8 ++++++++ test/cli/index.test.ts | 7 +++++++ 4 files changed, 30 insertions(+) diff --git a/src/cli/index.ts b/src/cli/index.ts index 480b057e..1f151a81 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -368,6 +368,13 @@ async function runConnect( continue; } + if (event.type === "status-update") { + if (event.message) { + emit.detail(event.message); + } + continue; + } + if (event.type === "runtime-error") { await updateSourceState(resolution.source, { lastRunAt: new Date().toISOString(), diff --git a/src/runtime/core/contracts.ts b/src/runtime/core/contracts.ts index 413e4926..ac02b6dc 100644 --- a/src/runtime/core/contracts.ts +++ b/src/runtime/core/contracts.ts @@ -47,6 +47,13 @@ export interface RuntimeProgressEvent { phase?: unknown; } +export interface RuntimeStatusEvent { + type: "status-update"; + source: string; + logPath: string; + message: string; +} + export interface RuntimeErrorEvent { type: "runtime-error"; source: string; @@ -61,6 +68,7 @@ export type RuntimeEvent = | RuntimeLegacyAuthEvent | RuntimeCollectionCompleteEvent | RuntimeProgressEvent + | RuntimeStatusEvent | RuntimeErrorEvent; export interface RuntimeInputRequest { diff --git a/src/runtime/playwright/in-process-run.ts b/src/runtime/playwright/in-process-run.ts index 785b27b1..3d299121 100644 --- a/src/runtime/playwright/in-process-run.ts +++ b/src/runtime/playwright/in-process-run.ts @@ -548,6 +548,14 @@ function createPageApi({ sleep: (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)), setData: async (key: string, value: unknown) => { + if (key === "status" && typeof value === "string") { + pushEvent({ + type: "status-update", + source: request.source, + logPath, + message: value, + }); + } if (key === "result") { if (!runState.hasResult) { const resultPath = getLastResultPath(); diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index a1c0a63f..f6f093b8 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -715,6 +715,12 @@ describe("runCli", () => { logPath: "/tmp/logs/fetch.log", }; runConnectorEvents = [ + { + type: "status-update", + source: "github", + logPath: "/tmp/logs/run.log", + message: "Checking GitHub login...", + }, { type: "progress-update", source: "github", @@ -748,6 +754,7 @@ describe("runCli", () => { expect(stdout).toContain("Collected"); expect(stdout).toContain("Profile: tnunamak"); expect(stdout).toContain("Repositories: 2"); + expect(stdout).toContain("Checking GitHub login..."); expect(stdout).toContain("Repositories: Fetching repositories..."); expect(stdout).toContain("Saved locally"); expect(stdout).toContain("/tmp/.dataconnect/github-result.json"); From b91e4a2fbdda9fd656d715549efc2df4f949bf71 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 12:14:49 -0500 Subject: [PATCH 087/249] feat(cli): refine live progress narration --- src/cli/index.ts | 32 +++++++++++++++++++++++++++----- test/cli/index.test.ts | 11 ++++++++++- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 1f151a81..0efe3225 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -369,7 +369,7 @@ async function runConnect( } if (event.type === "status-update") { - if (event.message) { + if (event.message && shouldRenderStatusUpdate(event.message)) { emit.detail(event.message); } continue; @@ -1378,19 +1378,41 @@ function formatProgressUpdate(event: { typeof (event.phase as { label?: unknown }).label === "string" ? (event.phase as { label: string }).label : null; + const phaseStep = + event.phase && + typeof event.phase === "object" && + "step" in event.phase && + typeof (event.phase as { step?: unknown }).step === "number" + ? (event.phase as { step: number }).step + : null; + const phaseTotal = + event.phase && + typeof event.phase === "object" && + "total" in event.phase && + typeof (event.phase as { total?: unknown }).total === "number" + ? (event.phase as { total: number }).total + : null; + const phasePrefix = + phaseLabel && phaseStep != null && phaseTotal != null + ? `${phaseLabel} (${phaseStep}/${phaseTotal})` + : phaseLabel; - if (phaseLabel && event.message) { - return `${phaseLabel}: ${event.message}`; + if (phasePrefix && event.message) { + return `${phasePrefix}: ${event.message}`; } if (event.message) { return event.message; } - if (phaseLabel && typeof event.count === "number") { - return `${phaseLabel}: ${event.count}`; + if (phasePrefix && typeof event.count === "number") { + return `${phasePrefix}: ${event.count}`; } return null; } +function shouldRenderStatusUpdate(message: string): boolean { + return !/^complete\b/i.test(message.trim()); +} + function inferInstalledAuthMode( installedFiles: Array<{ source: string; path: string }>, source: string, diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index f6f093b8..80a1a126 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -728,6 +728,12 @@ describe("runCli", () => { phase: { step: 2, total: 3, label: "Repositories" }, message: "Fetching repositories...", }, + { + type: "status-update", + source: "github", + logPath: "/tmp/logs/run.log", + message: "Complete! 2 repositories and 0 starred repos collected.", + }, { type: "collection-complete", source: "github", @@ -755,7 +761,10 @@ describe("runCli", () => { expect(stdout).toContain("Profile: tnunamak"); expect(stdout).toContain("Repositories: 2"); expect(stdout).toContain("Checking GitHub login..."); - expect(stdout).toContain("Repositories: Fetching repositories..."); + expect(stdout).toContain("Repositories (2/3): Fetching repositories..."); + expect(stdout).not.toContain( + "Complete! 2 repositories and 0 starred repos collected.", + ); expect(stdout).toContain("Saved locally"); expect(stdout).toContain("/tmp/.dataconnect/github-result.json"); expect(stdout).toContain("Next"); From c175ab88b02ac864ff9d0719000a07c70319b5e6 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 12:46:49 -0500 Subject: [PATCH 088/249] feat(cli): add deterministic connect success demos --- README.md | 7 +- docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md | 179 ++++++- docs/CLI-EXECUTION-PLAYBOOK.md | 492 ++++++++++++++++++ docs/transcripts/connect-github-success.txt | 31 ++ docs/transcripts/data-list.txt | 3 +- docs/transcripts/data-show-github.txt | 2 +- docs/transcripts/sources.txt | 16 +- docs/transcripts/status.txt | 5 +- docs/vhs/README.md | 12 +- ...nnect-guided.tape => connect-success.tape} | 10 +- .../connectors/github/github-playwright.js | 52 ++ .../connectors/shop/shop-playwright.js | 8 + .../connectors/spotify/spotify-playwright.js | 16 + .../demo-data-connectors/registry.json | 31 ++ .../{github-result.json => last-result.json} | 0 .../.dataconnect/vana-connect-state.json | 2 +- scripts/assert-release-demo-assets.mjs | 3 +- scripts/capture-cli-transcripts.mjs | 24 +- scripts/prepare-vhs-fixtures.mjs | 183 ++++++- scripts/render-vhs.mjs | 23 +- src/cli/index.ts | 19 +- test/cli/index.test.ts | 3 +- 22 files changed, 1060 insertions(+), 61 deletions(-) create mode 100644 docs/CLI-EXECUTION-PLAYBOOK.md create mode 100644 docs/transcripts/connect-github-success.txt rename docs/vhs/{connect-guided.tape => connect-success.tape} (53%) create mode 100644 docs/vhs/fixtures/demo-data-connectors/connectors/github/github-playwright.js create mode 100644 docs/vhs/fixtures/demo-data-connectors/connectors/shop/shop-playwright.js create mode 100644 docs/vhs/fixtures/demo-data-connectors/connectors/spotify/spotify-playwright.js create mode 100644 docs/vhs/fixtures/demo-data-connectors/registry.json rename docs/vhs/fixtures/demo-home/.dataconnect/{github-result.json => last-result.json} (100%) diff --git a/README.md b/README.md index 5a06766a..e777051a 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect- - demo media: [`status-and-sources.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif), [`data-inspection.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif), - [`connect-guided.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-guided.gif) + [`connect-success.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) ## What problem this solves @@ -195,13 +195,13 @@ Branch prerelease preview media: - [`status-and-sources.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) - [`data-inspection.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) -- [`connect-guided.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-guided.gif) +- [`connect-success.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) ![Vana status and sources demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) ![Vana data inspection demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) -![Vana guided connect demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-guided.gif) +![Vana successful connect demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) Current reviewable transcripts: @@ -209,6 +209,7 @@ Current reviewable transcripts: - [`sources`](./docs/transcripts/sources.txt) - [`data list`](./docs/transcripts/data-list.txt) - [`data show github`](./docs/transcripts/data-show-github.txt) +- [`connect github`](./docs/transcripts/connect-github-success.txt) - [`connect steam --no-input`](./docs/transcripts/connect-steam-no-input.txt) To seed the fixture home used by the first tapes: diff --git a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md index fa0d5f24..7bf73752 100644 --- a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md +++ b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md @@ -21,6 +21,7 @@ It should be read together with: - [CLI-AUDIENCE-CONTRACT.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-AUDIENCE-CONTRACT.md) - [CLI-ONBOARDING-COPY.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-ONBOARDING-COPY.md) - [CLI-UX-SIMULATION.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-UX-SIMULATION.md) +- [CLI-EXECUTION-PLAYBOOK.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-EXECUTION-PLAYBOOK.md) - [Terminal CLI Beauty Memo](/home/tnunamak/code/data-connectors/skills/vana-connect/docs/cli-beauty-research/terminal-cli-visual-and-emotional-beauty-memo.md) ## Final Recommendation @@ -645,6 +646,158 @@ The beauty pass is not done until all of these are true. This is the recommended sequence. +### Current Branch State And Revised Sequencing + +As of branch head `b91e4a2`, the plan above is no longer hypothetical. +Substantial parts of the foundation are already present: + +- a human renderer/theme layer exists +- `status`, `sources`, and `data` have been upgraded materially +- `vana connect` has a guided no-source entrypoint +- structured runtime `status-update` and `progress-update` events now exist +- VHS scaffolding exists and README-facing demo assets are publishing from CI + +That means the next phase should **not** start from Phase 1 again. +The correct sequence from here is: + +### Batch 1: Product-truth and demo-proofing + +This batch should be completed and released together before deeper beauty work. + +- add a deterministic successful `connect` demo fixture so README demos can show + real progress and a real success moment without depending on live GitHub +- add transcript coverage for that successful connect flow +- tighten the final human success summary so it consistently lands as: + - what connected + - what was collected + - where the data lives or went + - one strong next step +- strengthen `vana data show` and `vana data path` as the first payoff surface +- improve `vana status` so it distinguishes: + - runtime ready + - session present + - last successful collection + - Personal Server unavailable vs synced +- broaden acceptance coverage across: + - migrated/requestInput connectors + - legacy/manual connectors + - unsupported sources + - saved-session reuse cases + +Important: + +- this batch is about making the product feel truthful and coherent +- it should be pushed as one larger release cycle, not as many tiny deployment + cycles + +### Batch 2: Deep beauty, static-first + +Once Batch 1 is externally proven, start the real beauty pass on the surfaces +that are already semantically stable. + +- refine spacing, hierarchy, and semantic color usage across: + - `status` + - `sources` + - `data list` + - `data show` + - guided `connect` +- make the renderer feel distinctly Vana without saturating the terminal +- improve line rhythm, section headings, bullets, and emphasis +- upgrade README VHS assets so they reflect this calmer, more deliberate visual + language + +This is where the CLI should start to feel clearly above the current baseline, +but without touching the machine contract. + +### Batch 3: Deep beauty, connect narrative + +After static surfaces are strong, apply the beauty work to the long-running +human `connect` flow itself. + +- phase transitions that feel calm and intentional +- better pacing from prepare -> connect -> continue -> success/failure +- stronger trust framing before auth/input collection +- tasteful spinner/checkmark transitions where terminal capabilities allow them +- cleaner cancellation language +- cleaner local-only vs Personal Server success distinction + +This batch should make `vana connect ` feel like a product journey, not +just a sequence of log lines. + +### Batch 4: Runtime event enrichment for beauty + +Only after the human connect narrative is visibly better should we deepen the +runtime event model further. + +- add any remaining phase/count/completion metadata needed for better summaries +- avoid log scraping entirely for human rendering +- preserve a pristine `--json` contract while making human progress richer + +This keeps the event model in service of product quality rather than speculative +framework-building. + +### Batch 5: Public polish and release hardening + +- keep README demos, transcripts, installer paths, and Homebrew output aligned + to the same canary +- acceptance-test the published artifact as if discovering the project cold +- only then decide what is ready to graduate from canary to a more stable lane + +### Batching rule from here + +The branch should now prefer: + +- larger locally validated batches of product/UI work +- fewer deployment cycles +- deployment-triggering pushes only when the batch is worth external proof + +Break that rule only for: + +- a release-path regression +- a platform-specific packaging failure +- a public artifact problem that needs immediate isolation + +This is the right optimization now that the runtime and installer paths are +substantially real. + +### Deployment streamlining guidance + +The current bottleneck is no longer local implementation speed. It is repeated +publish/verify latency. + +The branch should therefore optimize for: + +- one larger, coherent product/UI batch per release cycle +- one canonical local preflight before pushing +- one canonical post-publish verification path + +Recommended operating model: + +1. Local preflight should become one command that runs the entire release-ready + guardrail set: + - tests + - lint/format + - build + - transcript capture + - demo rendering verification + - release-asset assertions +2. The publish path should become one watcher-driven flow: + - wait for CI/canary + - sync Homebrew + - verify hosted installer + - verify demo assets +3. Avoid pushing while a release lane is still proving the previous batch unless + the current head is blocked by: + - a release-path failure + - a packaging/platform regression + - a public artifact issue + +In other words: + +- local work should continue optimistically +- release validation should be automated +- publish-triggering pushes should be less frequent and more substantial + ### Phase 1: Foundation - add capability detection @@ -719,21 +872,23 @@ Use terminal recordings for human review: This matters because terminal beauty is hard to review from code alone. -## The First Four Concrete Tasks +## The Next Four Concrete Tasks -When this work starts, do these first: +From the current branch state, do these next: -1. Introduce the render/capability/theme layer without changing command - semantics. -2. Add VHS scaffolding plus one deterministic README-quality tape for `status` - and `sources`. -3. Upgrade `vana connect` no-source, `status`, and `data show` to the new - human renderer. -4. Add a real success summary and next-step block for successful `connect` - runs. +1. Add a deterministic successful `connect` fixture and README-quality tape + that shows real progress and a real success moment. +2. Make the post-success loop feel complete: + - strengthen `connect` success summary + - strengthen `vana data show` + - strengthen `vana status` +3. Add broader transcript and acceptance coverage across migrated, legacy, and + unsupported connector flows. +4. Then start the deep beauty pass on static surfaces before touching the + long-running `connect` narrative again. -That sequence gives the highest user-visible value with the lowest architectural -risk. +That sequence gives the highest user-visible value from the current branch +state while keeping release cycles efficient. ## Final Standard diff --git a/docs/CLI-EXECUTION-PLAYBOOK.md b/docs/CLI-EXECUTION-PLAYBOOK.md new file mode 100644 index 00000000..de38f05b --- /dev/null +++ b/docs/CLI-EXECUTION-PLAYBOOK.md @@ -0,0 +1,492 @@ +# `vana-connect` CLI Execution Playbook + +_As of March 14, 2026_ + +This document turns the current CLI/runtime/release state into an execution +playbook that lower-reasoning models can follow without needing to reconstruct +all prior design context. + +It should be read after: + +- [CLI-FINAL-PRODUCT-SPEC.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-FINAL-PRODUCT-SPEC.md) +- [CLI-BEAUTY-IMPLEMENTATION-PLAN.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md) + +If this document conflicts with casual conversational guidance, this document +wins. + +## Current State + +Branch head at the time of writing: + +- `b91e4a2` + +Already true on this branch: + +- the in-process runtime is real +- the installer and Homebrew paths are real +- published canary assets work +- `status`, `sources`, `data`, and guided `connect` have been materially + upgraded +- structured runtime `status-update` and `progress-update` events exist +- README-facing VHS demos and transcripts are publishing from CI + +This means the next work is no longer “make the CLI exist.” +It is: + +1. make the human product feel fully truthful and coherent +2. deepen beauty on top of that stable surface +3. keep release work efficient instead of churning many tiny deploy cycles + +## Operating Rules + +These rules should govern all remaining work. + +### 1. Prefer larger local batches + +Do not push every small polish change. + +Preferred pattern: + +- do a coherent local batch +- run the full local preflight +- push once +- let one publish/verification cycle prove the batch + +Break that rule only for: + +- release-path regressions +- platform-specific packaging failures +- a public artifact problem that needs immediate isolation + +### 2. Preserve machine mode + +Do not let human-mode beauty work alter: + +- `--json` field names +- exit codes +- JSON stdout cleanliness +- machine-readable event contracts + +### 3. Treat the README as a product surface + +The README is not just documentation. +It is a review surface for: + +- install quality +- first-run quality +- CLI beauty progress + +Visible demo commands must match what a real user would type. + +### 4. Keep demos deterministic + +Do not use live credentials or live external websites for README-facing demos. + +Use: + +- fixture homes +- fake connector state +- deterministic collected data +- deterministic demo connectors where needed + +### 5. Primary-agent vs subagent boundary + +If Codex subagents are available, use them only for bounded slices with clear +acceptance criteria. + +Keep these with the primary agent: + +- final product judgment +- cross-batch sequencing changes +- release orchestration +- Homebrew / canary / installer publication decisions +- any JSON contract changes + +Good subagent work: + +- fixture seeding +- transcript tests +- static surface rendering changes in one command area +- README/demo asset plumbing +- acceptance test harnesses + +## Release Efficiency Lane + +This is a continuous lane, not a one-time batch. + +Goal: + +- reduce deployment tax +- keep release validation automated +- avoid idle waiting + +Tasks: + +1. Maintain one canonical local preflight command that runs: + - tests + - lint + - format check + - build + - transcript capture + - VHS/demo verification + - release asset assertions +2. Maintain one watcher-driven post-publish flow that handles: + - CI/canary polling + - Homebrew sync + - hosted installer verification + - demo artifact verification +3. Keep README/tap/published canary aligned to the same version. + +Good subagent fit: + +- script work in `scripts/` +- transcript/demo verification harnesses +- read-only release-asset audits + +Primary-agent responsibility: + +- deciding when a batch is large enough to justify a publish cycle +- interpreting failed release jobs + +## Batch 1: Product-Truth And Demo-Proofing + +This is the next mandatory batch. +Do not start deep beauty work before this is externally proven. + +### Goals + +- the human CLI should feel truthful after success +- the README should be able to show a real successful connect flow +- `status`, `data`, and success summaries should agree with each other + +### Work items + +1. Add a deterministic successful `connect` demo fixture. + Likely files: + - `docs/vhs/fixtures/` + - `scripts/prepare-vhs-fixtures.mjs` + - a demo connector fixture under the fixture home + +2. Add a README-quality successful connect tape. + Likely files: + - `docs/vhs/*.tape` + - `README.md` + - `docs/vhs/README.md` + +3. Add transcript and regression coverage for that successful connect flow. + Likely files: + - `test/cli/index.test.ts` + - `docs/transcripts/` + - `scripts/capture-cli-transcripts.mjs` + +4. Tighten the final success summary. + It should consistently answer: + - what connected + - what was collected + - where it was saved or synced + - what to do next + +5. Improve `vana data show` and `vana data path`. + They should feel like the first payoff surface after success. + +6. Improve `vana status`. + It should better distinguish: + - runtime installed + - session present + - last successful collection + - local-only vs Personal Server state + +7. Broaden acceptance coverage across: + - migrated/requestInput connectors + - legacy/manual connectors + - unsupported source flows + - saved-session reuse cases + +### Exit criteria + +- README can show a deterministic successful connect demo +- human success output feels complete without opening JSON +- `status`, `data show`, and the success summary agree semantically +- transcript and acceptance coverage lock the intended behavior + +### Good subagent slices + +1. Demo fixture and tape lane + Deliverables: + - new deterministic connect-success fixture + - new/updated `.tape` + - updated `docs/vhs/README.md` + +2. Transcript lane + Deliverables: + - transcript capture updates + - transcript assertions/tests + +3. `data` payoff lane + Deliverables: + - `data show` / `data path` polish + - tests for human and `--json` behavior + +4. `status` truth lane + Deliverables: + - richer state rendering + - tests for nuanced connected-state output + +Primary-agent integration: + +- final success-summary wording +- deciding what is “truthful enough” for public README use +- release push after local validation + +## Batch 2: Deep Beauty, Static Surfaces + +Start this only after Batch 1 is published and acceptance-tested from the +real artifact path. + +### Goals + +- static CLI surfaces should feel deliberate, premium, and recognizably Vana +- beauty should come from hierarchy and rhythm, not ornament + +### Work items + +1. Refine semantic theme usage. +2. Improve section rhythm, spacing, and emphasis. +3. Tighten `status`, `sources`, `data list`, `data show`, and guided `connect`. +4. Make README demo assets reflect the new visual bar. + +### Exit criteria + +- static surfaces scan noticeably better than the current baseline +- color-disabled and piped output remains readable +- README demos visibly reflect the upgraded static language + +### Good subagent slices + +1. `status` surface refinement +2. `sources` surface refinement +3. `data` surface refinement +4. theme/symbol cleanup in `src/cli/render/` +5. README/demo embed refresh + +Primary-agent integration: + +- aesthetic consistency across commands +- final judgment on whether the CLI feels more premium or just more decorated + +## Batch 3: Deep Beauty, Connect Narrative + +Only start after static surfaces are stable. + +### Goals + +- `vana connect ` should feel like one calm narrative +- trust, progress, and success/failure pacing should feel intentional + +### Work items + +1. Improve phase transitions: + - prepare + - connect + - continue + - success/failure +2. Improve trust framing before auth/input. +3. Improve spinner/checkmark payoff where capabilities allow it. +4. Improve cancellation language. +5. Sharpen the distinction between: + - connected locally + - connected and synced + - manual/legacy flow + +### Exit criteria + +- connect runs feel like a product journey, not a stream of logs +- human success and failure both land clearly +- the machine contract remains untouched + +### Good subagent slices + +1. cancellation and interruption copy/tests +2. success/failure summary rendering +3. progress rendering utilities +4. prompt continuity improvements + +Primary-agent integration: + +- overall connect flow pacing +- deciding whether motion/spinners are helping or distracting + +## Batch 4: Runtime Event Enrichment For Beauty + +Only do this after Batch 3 exposes an actual event-model limitation. + +### Goals + +- make human rendering rely on structured events, not fallback heuristics +- improve summaries and progress semantics without destabilizing JSON mode + +### Work items + +1. Add only the missing event metadata needed for better rendering. +2. Avoid speculative framework-building. +3. Keep event additions backward-compatible where possible. + +### Exit criteria + +- human rendering no longer needs ad hoc inference where better runtime events + would be more truthful +- `--json` mode remains stable and test-covered + +### Good subagent slices + +1. runtime event type additions with tests +2. renderer consumption of new event metadata +3. JSON contract regression tests + +Primary-agent integration: + +- deciding which event additions are truly needed +- preserving product semantics while changing internal event richness + +## Batch 5: Data Interaction And Composability + +This batch strengthens the CLI as a tool, not just a guided product surface. + +### Goals + +- `vana data` should feel useful in both human and shell workflows +- the CLI should compose cleanly with tools like `jq` + +### Work items + +1. Strengthen `data list`, `data show`, and `data path`. +2. Tighten JSON schemas and error behavior. +3. Make human and machine modes both intentional. +4. Consider compact summaries that are easy to skim and easy to pipe. + +### Exit criteria + +- `vana data` feels like a real read surface +- `--json` output is stable and shell-friendly + +### Good subagent slices + +1. JSON-mode regression tests +2. human-surface formatting +3. transcript examples for shell composability + +## Batch 6: Debuggability And Operator Affordances + +This batch is for connector authors, agents, and support/debug workflows. + +### Goals + +- improve insight into what a run is doing without leaking raw browser objects + +### Work items + +1. expose more structured run-state inspection +2. expose screenshot/state capture where already supported +3. improve failure diagnostics and next-step guidance + +### Exit criteria + +- failed runs are easier to understand and recover from +- operator workflows improve without contaminating the normal human path + +### Good subagent slices + +1. run-state reporting +2. screenshot artifact plumbing +3. failure transcript coverage + +## Batch 7: Source Discovery And Maturity UX + +### Goals + +- users should know what to expect before they connect + +### Work items + +1. improve maturity grouping and labeling in `sources` +2. clarify expectations for automated vs manual flows +3. consider better source ordering and recommendation cues + +### Exit criteria + +- users can tell which sources are smooth, manual, or legacy before connecting + +### Good subagent slices + +1. `sources` grouping/rendering +2. maturity-label tests +3. transcript updates + +## Batch 8: Public Surface Hardening + +### Goals + +- README, release assets, Homebrew, installer paths, and demos should all tell + the same story + +### Work items + +1. keep README demo embeds aligned to the current canary +2. keep Homebrew and hosted installer paths aligned +3. keep transcripts and demo assets current +4. ensure “discovering this project cold” feels polished + +### Exit criteria + +- a cold-start user can discover the repo, install the CLI, and feel impressed + without extra context + +### Good subagent slices + +1. README polish +2. demo asset sync +3. install-doc consistency checks + +Primary-agent integration: + +- final public-facing quality bar +- deciding when canary quality is good enough to promote + +## Batch 9: Stable-Release Readiness + +Do not start this early. +This is the final readiness lane after the product feels right. + +### Goals + +- define and prove the criteria for promoting beyond canary + +### Work items + +1. lock a release-readiness checklist +2. run a full acceptance matrix on published artifacts +3. resolve downgrade/platform/documentation gaps + +### Exit criteria + +- there is a clear, defensible reason to promote beyond canary + +## Recommended Execution Pattern + +For lower-reasoning models: + +1. pick one bounded slice from the current batch +2. state the assumption you are making +3. implement only that slice +4. run the relevant local tests/checks +5. summarize: + - what changed + - what was verified + - what remains for integration + +Do not independently: + +- redesign the sequence of batches +- change JSON contracts casually +- trigger release work without a coherent batch ready +- decide public README/demo quality alone diff --git a/docs/transcripts/connect-github-success.txt b/docs/transcripts/connect-github-success.txt new file mode 100644 index 00000000..6cde44af --- /dev/null +++ b/docs/transcripts/connect-github-success.txt @@ -0,0 +1,31 @@ +Connect GitHub + +→ Preparing +Finding a connector for GitHub... +Connector ready. +Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. + +→ Connecting +Connecting to GitHub... +Collecting your data... + Checking GitHub login... + Login confirmed. Collecting data in background... + Profile (1/3): Fetching profile... + Repositories (2/3): Fetched 2 repositories + Starred (3/3): Fetched 0 starred repositories +✓ Connected GitHub. + Collected your GitHub data and saved it locally. + +→ Collected +• Profile: tnunamak +• Repositories: 2 +• Starred: 0 + +→ Saved locally +• ~/.dataconnect/last-result.json + No Personal Server is available right now, so this run stayed local. + Run log: ~/.dataconnect/logs/run-github-.log + +→ Next +• Run `vana status` +• Or inspect the data with `vana data show github` diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt index 3bb853b6..785f35dc 100644 --- a/docs/transcripts/data-list.txt +++ b/docs/transcripts/data-list.txt @@ -5,10 +5,11 @@ GitHub [local] Repositories: 2 Starred: 0 Updated: Mar 14, 2026, 8:10 AM -Path: ~/.dataconnect/github-result.json +Path: ~/.dataconnect/last-result.json Spotify [local] Profile: tnunamak + Playlists: 2 Updated: Mar 13, 2026, 4:23 PM Path: ~/.dataconnect/spotify-result.json diff --git a/docs/transcripts/data-show-github.txt b/docs/transcripts/data-show-github.txt index 314da534..c3feca23 100644 --- a/docs/transcripts/data-show-github.txt +++ b/docs/transcripts/data-show-github.txt @@ -4,7 +4,7 @@ GitHub data • Repositories: 2 • Starred: 0 -Path: ~/.dataconnect/github-result.json +Path: ~/.dataconnect/last-result.json Updated: Mar 14, 2026, 8:10 AM State: Saved locally diff --git a/docs/transcripts/sources.txt b/docs/transcripts/sources.txt index dba9f18f..d427204f 100644 --- a/docs/transcripts/sources.txt +++ b/docs/transcripts/sources.txt @@ -3,24 +3,12 @@ Available sources → Ready now GitHub [installed] [interactive] Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. +Spotify [installed] [interactive] + Exports your Spotify playlists using Playwright browser automation. → Manual steps -ChatGPT [legacy] - Exports your email, memories, and all conversations from ChatGPT using Playwright browser automation. -Instagram [legacy] - Exports your Instagram profile, posts, and ad interests using Playwright browser automation. -LinkedIn [legacy] - Exports your LinkedIn profile, experience, education, skills, languages, and connections using Playwright browser automation. -Oura Ring [legacy] - Exports your Oura Ring readiness scores, sleep data, and daily activity using Playwright browser automation. Shop [installed] [legacy] Exports your Shop app order history using Playwright browser automation. -Spotify [installed] [legacy] - Exports your Spotify library, playlists, listening history, and preferences using Playwright browser automation. -Uber [legacy] - Exports your Uber trip history and receipts using Playwright browser automation. -YouTube [legacy] - Exports your YouTube profile, subscriptions, playlists, playlist items, liked videos, watch later list, and recent watch history using Playwright browser automation. → Next • Connect one with `vana connect `. diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index 67c78c99..ff74f621 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -17,9 +17,10 @@ Steam [unavailable] → Connected GitHub [interactive] [local] Inspect the latest local dataset with `vana data show github`. + Saved browser session available for faster reconnects. Updated: Mar 14, 2026, 8:10 AM - ~/.dataconnect/github-result.json -Spotify [legacy] [local] + ~/.dataconnect/last-result.json +Spotify [interactive] [local] Inspect the latest local dataset with `vana data show spotify`. Updated: Mar 13, 2026, 4:23 PM ~/.dataconnect/spotify-result.json diff --git a/docs/vhs/README.md b/docs/vhs/README.md index 52538c8b..a41e1b23 100644 --- a/docs/vhs/README.md +++ b/docs/vhs/README.md @@ -14,7 +14,7 @@ rendering scripts. The demo tapes should use: - a temp or fixture `HOME` -- `VANA_DATA_CONNECTORS_DIR` pointing at the local `data-connectors` repo +- `VANA_DATA_CONNECTORS_DIR` pointing at a deterministic fixture connector repo - seeded `~/.dataconnect/` state and result files Prepare the fixture home with: @@ -27,14 +27,15 @@ That creates: - `docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json` - fake installed connector files +- `docs/vhs/fixtures/demo-data-connectors/` with deterministic demo connectors - a fake downloaded Chromium path so `vana status` reads as installed - sample collected result files for `vana data ...` -## Planned first tapes +## Current tapes - `status-and-sources.tape` - `data-inspection.tape` -- `connect-guided.tape` +- `connect-success.tape` ## Rendering @@ -53,8 +54,9 @@ That command: - writes GIF assets next to the tapes It will use a local `vhs` binary if present, or Docker if available. -By default the scripts look for a sibling `../data-connectors` checkout, but -you can override that with `VANA_DATA_CONNECTORS_DIR=/path/to/data-connectors`. +By default the scripts prefer the deterministic fixture connector repo generated +under `docs/vhs/fixtures/demo-data-connectors/`, but you can override that with +`VANA_DATA_CONNECTORS_DIR=/path/to/data-connectors`. CI also renders the tapes on Linux in the `demo-preview` job and uploads the resulting GIFs and transcripts as a workflow artifact so the branch always has a diff --git a/docs/vhs/connect-guided.tape b/docs/vhs/connect-success.tape similarity index 53% rename from docs/vhs/connect-guided.tape rename to docs/vhs/connect-success.tape index 0c9fd3af..21ec1ea3 100644 --- a/docs/vhs/connect-guided.tape +++ b/docs/vhs/connect-success.tape @@ -1,4 +1,4 @@ -Output docs/vhs/connect-guided.gif +Output docs/vhs/connect-success.gif Require vana Set Shell "bash" @@ -9,10 +9,6 @@ Set TypingSpeed 70ms Set CursorBlink false Set LoopOffset 45% -Type "vana connect steam --no-input" +Type "vana connect github" Enter -Sleep 1500ms - -Type "vana connect" -Enter -Sleep 2200ms +Sleep 3200ms diff --git a/docs/vhs/fixtures/demo-data-connectors/connectors/github/github-playwright.js b/docs/vhs/fixtures/demo-data-connectors/connectors/github/github-playwright.js new file mode 100644 index 00000000..7a001954 --- /dev/null +++ b/docs/vhs/fixtures/demo-data-connectors/connectors/github/github-playwright.js @@ -0,0 +1,52 @@ +const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + +(async () => { + await page.setData("status", "Checking GitHub login..."); + + if (process.env.VANA_DEMO_FAST_SUCCESS !== "1") { + await page.requestInput({ + message: "Log in to GitHub", + schema: { + type: "object", + properties: { + username: { type: "string" }, + password: { type: "string", format: "password" }, + }, + }, + }); + } + + await delay(120); + await page.setData( + "status", + "Login confirmed. Collecting data in background...", + ); + await page.setProgress({ + phase: { step: 1, total: 3, label: "Profile" }, + message: "Fetching profile...", + }); + await delay(90); + await page.setProgress({ + phase: { step: 2, total: 3, label: "Repositories" }, + message: "Fetched 2 repositories", + count: 2, + }); + await delay(90); + await page.setProgress({ + phase: { step: 3, total: 3, label: "Starred" }, + message: "Fetched 0 starred repositories", + count: 0, + }); + await delay(90); + + return { + profile: { username: "tnunamak" }, + repositories: [{ name: "vana-connect" }, { name: "data-connectors" }], + starred: [], + exportSummary: { + count: 2, + label: "items", + details: "2 repositories, 0 starred", + }, + }; +})(); diff --git a/docs/vhs/fixtures/demo-data-connectors/connectors/shop/shop-playwright.js b/docs/vhs/fixtures/demo-data-connectors/connectors/shop/shop-playwright.js new file mode 100644 index 00000000..4dcbcda9 --- /dev/null +++ b/docs/vhs/fixtures/demo-data-connectors/connectors/shop/shop-playwright.js @@ -0,0 +1,8 @@ +(async () => { + await page.showBrowser("https://shop.app/account/order-history"); + await page.promptUser( + "Finish signing in to Shop in the browser window.", + async () => false, + 1, + ); +})(); diff --git a/docs/vhs/fixtures/demo-data-connectors/connectors/spotify/spotify-playwright.js b/docs/vhs/fixtures/demo-data-connectors/connectors/spotify/spotify-playwright.js new file mode 100644 index 00000000..99c5effa --- /dev/null +++ b/docs/vhs/fixtures/demo-data-connectors/connectors/spotify/spotify-playwright.js @@ -0,0 +1,16 @@ +(async () => { + await page.requestInput({ + message: "Connect Spotify", + schema: { + type: "object", + properties: { + email: { type: "string" }, + }, + }, + }); + + return { + profile: { username: "tnunamak" }, + playlists: [{ name: "Data Portability" }, { name: "Build Flow" }], + }; +})(); diff --git a/docs/vhs/fixtures/demo-data-connectors/registry.json b/docs/vhs/fixtures/demo-data-connectors/registry.json new file mode 100644 index 00000000..732a0cc6 --- /dev/null +++ b/docs/vhs/fixtures/demo-data-connectors/registry.json @@ -0,0 +1,31 @@ +{ + "connectors": [ + { + "id": "github", + "name": "GitHub", + "company": "github", + "description": "Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation.", + "files": { + "script": "connectors/github/github-playwright.js" + } + }, + { + "id": "shop", + "name": "Shop", + "company": "shop", + "description": "Exports your Shop app order history using Playwright browser automation.", + "files": { + "script": "connectors/shop/shop-playwright.js" + } + }, + { + "id": "spotify", + "name": "Spotify", + "company": "spotify", + "description": "Exports your Spotify playlists using Playwright browser automation.", + "files": { + "script": "connectors/spotify/spotify-playwright.js" + } + } + ] +} diff --git a/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json b/docs/vhs/fixtures/demo-home/.dataconnect/last-result.json similarity index 100% rename from docs/vhs/fixtures/demo-home/.dataconnect/github-result.json rename to docs/vhs/fixtures/demo-home/.dataconnect/last-result.json diff --git a/docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json b/docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json index 0de5771c..d909615a 100644 --- a/docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json +++ b/docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json @@ -6,7 +6,7 @@ "lastRunAt": "2026-03-14T13:10:03.677Z", "lastRunOutcome": "connected_local_only", "dataState": "collected_local", - "lastResultPath": "/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/github-result.json" + "lastResultPath": "/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/last-result.json" }, "shop": { "lastRunAt": "2026-03-14T13:11:10.000Z", diff --git a/scripts/assert-release-demo-assets.mjs b/scripts/assert-release-demo-assets.mjs index ad7b9193..c65d136b 100644 --- a/scripts/assert-release-demo-assets.mjs +++ b/scripts/assert-release-demo-assets.mjs @@ -3,11 +3,12 @@ import { execFileSync } from "node:child_process"; const REQUIRED_ASSETS = [ "status-and-sources.gif", "data-inspection.gif", - "connect-guided.gif", + "connect-success.gif", "status.txt", "sources.txt", "data-list.txt", "data-show-github.txt", + "connect-github-success.txt", "connect-steam-no-input.txt", ]; diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index 58edceae..6048508d 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -8,7 +8,7 @@ import { fileURLToPath } from "node:url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const repoRoot = path.resolve(__dirname, ".."); const transcriptsDir = path.join(repoRoot, "docs", "transcripts"); -const connectorsDir = resolveDataConnectorsDir(); +const fixturesRoot = path.join(repoRoot, "docs", "vhs", "fixtures"); async function main() { await fsp.mkdir(transcriptsDir, { recursive: true }); @@ -17,6 +17,7 @@ async function main() { ); const workingHome = path.join(tempRoot, "home"); await prepareFixtures(workingHome); + const connectorsDir = resolveDataConnectorsDir(); const binDir = path.join(tempRoot, "bin"); await prepareDemoBin(binDir); @@ -24,6 +25,7 @@ async function main() { ...process.env, HOME: workingHome, PATH: `${binDir}${path.delimiter}${process.env.PATH ?? ""}`, + VANA_DEMO_FAST_SUCCESS: "1", ...(connectorsDir ? { VANA_DATA_CONNECTORS_DIR: connectorsDir } : {}), }; @@ -44,6 +46,10 @@ async function main() { name: "data-show-github.txt", argv: ["vana", "data", "show", "github"], }, + { + name: "connect-github-success.txt", + argv: ["vana", "connect", "github"], + }, { name: "connect-steam-no-input.txt", argv: ["vana", "connect", "steam", "--no-input"], @@ -52,7 +58,9 @@ async function main() { ]; for (const command of commands) { - const output = run(command.argv, env, command.allowFailure); + const output = normalizeTranscript( + run(command.argv, env, command.allowFailure), + ); const filePath = path.join(transcriptsDir, command.name); await fsp.writeFile(filePath, output, "utf8"); process.stdout.write( @@ -103,7 +111,19 @@ function run(argv, env, allowFailure = false) { } } +function normalizeTranscript(output) { + return output.replace( + /(~\/\.dataconnect\/logs\/(?:run|fetch|setup)-[A-Za-z0-9_-]+)-\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}-\d{3}Z\.log/g, + "$1-.log", + ); +} + function resolveDataConnectorsDir() { + const fixtureRepo = path.join(fixturesRoot, "demo-data-connectors"); + if (fs.existsSync(path.join(fixtureRepo, "registry.json"))) { + return fixtureRepo; + } + if (process.env.VANA_DATA_CONNECTORS_DIR) { return process.env.VANA_DATA_CONNECTORS_DIR; } diff --git a/scripts/prepare-vhs-fixtures.mjs b/scripts/prepare-vhs-fixtures.mjs index fe23e78c..ba6a4151 100644 --- a/scripts/prepare-vhs-fixtures.mjs +++ b/scripts/prepare-vhs-fixtures.mjs @@ -8,11 +8,22 @@ const fixturesRoot = path.join(repoRoot, "docs", "vhs", "fixtures"); const homeRoot = process.env.VANA_VHS_HOME_ROOT ? path.resolve(process.env.VANA_VHS_HOME_ROOT) : path.join(fixturesRoot, "demo-home"); +const demoDataConnectorsRoot = path.join(fixturesRoot, "demo-data-connectors"); const dataConnectRoot = path.join(homeRoot, ".dataconnect"); async function main() { await fs.rm(homeRoot, { recursive: true, force: true }); + await fs.rm(demoDataConnectorsRoot, { recursive: true, force: true }); + await seedDemoHome(); + await seedDemoDataConnectors(); + + process.stdout.write( + `Prepared VHS fixtures at ${homeRoot} with demo connectors at ${demoDataConnectorsRoot}\n`, + ); +} + +async function seedDemoHome() { await fs.mkdir(path.join(dataConnectRoot, "connectors", "github"), { recursive: true, }); @@ -69,7 +80,7 @@ async function main() { lastRunAt: "2026-03-14T13:10:03.677Z", lastRunOutcome: "connected_local_only", dataState: "collected_local", - lastResultPath: path.join(dataConnectRoot, "github-result.json"), + lastResultPath: path.join(dataConnectRoot, "last-result.json"), }, shop: { lastRunAt: "2026-03-14T13:11:10.000Z", @@ -98,7 +109,7 @@ async function main() { ); await fs.writeFile( - path.join(dataConnectRoot, "github-result.json"), + path.join(dataConnectRoot, "last-result.json"), `${JSON.stringify( { profile: { username: "tnunamak" }, @@ -122,8 +133,174 @@ async function main() { )}\n`, "utf8", ); +} + +async function seedDemoDataConnectors() { + await fs.mkdir( + path.join(demoDataConnectorsRoot, "skills", "vana-connect", "scripts"), + { recursive: true }, + ); + await fs.mkdir(path.join(demoDataConnectorsRoot, "connectors", "github"), { + recursive: true, + }); + await fs.mkdir(path.join(demoDataConnectorsRoot, "connectors", "shop"), { + recursive: true, + }); + await fs.mkdir(path.join(demoDataConnectorsRoot, "connectors", "spotify"), { + recursive: true, + }); + + await fs.writeFile( + path.join(demoDataConnectorsRoot, "registry.json"), + `${JSON.stringify( + { + connectors: [ + { + id: "github", + name: "GitHub", + company: "github", + description: + "Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation.", + files: { + script: "connectors/github/github-playwright.js", + }, + }, + { + id: "shop", + name: "Shop", + company: "shop", + description: + "Exports your Shop app order history using Playwright browser automation.", + files: { + script: "connectors/shop/shop-playwright.js", + }, + }, + { + id: "spotify", + name: "Spotify", + company: "spotify", + description: + "Exports your Spotify playlists using Playwright browser automation.", + files: { + script: "connectors/spotify/spotify-playwright.js", + }, + }, + ], + }, + null, + 2, + )}\n`, + "utf8", + ); + + await fs.writeFile( + path.join( + demoDataConnectorsRoot, + "connectors", + "github", + "github-playwright.js", + ), + `const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + +(async () => { + await page.setData("status", "Checking GitHub login..."); + + if (process.env.VANA_DEMO_FAST_SUCCESS !== "1") { + await page.requestInput({ + message: "Log in to GitHub", + schema: { + type: "object", + properties: { + username: { type: "string" }, + password: { type: "string", format: "password" }, + }, + }, + }); + } + + await delay(120); + await page.setData("status", "Login confirmed. Collecting data in background..."); + await page.setProgress({ + phase: { step: 1, total: 3, label: "Profile" }, + message: "Fetching profile...", + }); + await delay(90); + await page.setProgress({ + phase: { step: 2, total: 3, label: "Repositories" }, + message: "Fetched 2 repositories", + count: 2, + }); + await delay(90); + await page.setProgress({ + phase: { step: 3, total: 3, label: "Starred" }, + message: "Fetched 0 starred repositories", + count: 0, + }); + await delay(90); + + return { + profile: { username: "tnunamak" }, + repositories: [ + { name: "vana-connect" }, + { name: "data-connectors" }, + ], + starred: [], + exportSummary: { + count: 2, + label: "items", + details: "2 repositories, 0 starred", + }, + }; +})(); +`, + "utf8", + ); - process.stdout.write(`Prepared VHS fixtures at ${homeRoot}\n`); + await fs.writeFile( + path.join( + demoDataConnectorsRoot, + "connectors", + "shop", + "shop-playwright.js", + ), + `(async () => { + await page.showBrowser("https://shop.app/account/order-history"); + await page.promptUser( + "Finish signing in to Shop in the browser window.", + async () => false, + 1, + ); +})(); +`, + "utf8", + ); + + await fs.writeFile( + path.join( + demoDataConnectorsRoot, + "connectors", + "spotify", + "spotify-playwright.js", + ), + `(async () => { + await page.requestInput({ + message: "Connect Spotify", + schema: { + type: "object", + properties: { + email: { type: "string" }, + }, + }, + }); + + return { + profile: { username: "tnunamak" }, + playlists: [{ name: "Data Portability" }, { name: "Build Flow" }], + }; +})(); +`, + "utf8", + ); } main().catch((error) => { diff --git a/scripts/render-vhs.mjs b/scripts/render-vhs.mjs index 6d502c1c..f5c1af45 100644 --- a/scripts/render-vhs.mjs +++ b/scripts/render-vhs.mjs @@ -1,5 +1,4 @@ import fs from "node:fs"; -import fsp from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import { execFileSync } from "node:child_process"; @@ -8,8 +7,8 @@ import { fileURLToPath } from "node:url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const repoRoot = path.resolve(__dirname, ".."); const tapesDir = path.join(repoRoot, "docs", "vhs"); -const connectorsDir = resolveDataConnectorsDir(); const fixtureHome = path.join(tapesDir, "fixtures", "demo-home"); +const fixturesRoot = path.join(tapesDir, "fixtures"); const linuxSeaBinaryPath = path.join( repoRoot, "artifacts", @@ -20,13 +19,18 @@ const linuxSeaBinaryPath = path.join( const tapes = [ "status-and-sources.tape", "data-inspection.tape", - "connect-guided.tape", + "connect-success.tape", ]; function main() { prepareFixtures(); - const { env, cleanup, tempRoot, binDir } = prepareRenderEnv(); - const runner = resolveRunner({ tempRoot, binDir }); + const connectorsDir = resolveDataConnectorsDir(); + const { env, cleanup, tempRoot, binDir } = prepareRenderEnv(connectorsDir); + env.VANA_DEMO_FAST_SUCCESS = "1"; + if (connectorsDir) { + env.VANA_DATA_CONNECTORS_DIR = connectorsDir; + } + const runner = resolveRunner({ tempRoot, binDir, connectorsDir }); try { for (const tape of tapes) { const tapePath = path.join(tapesDir, tape); @@ -56,7 +60,7 @@ function prepareFixtures() { }); } -function resolveRunner({ tempRoot, binDir }) { +function resolveRunner({ tempRoot, binDir, connectorsDir }) { if (commandExists("vhs")) { return { command: "vhs", args: [] }; } @@ -108,7 +112,7 @@ function runTape(runner, tapePath, env) { }); } -function prepareRenderEnv() { +function prepareRenderEnv(connectorsDir) { const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), "vana-vhs-")); const binDir = path.join(tempRoot, "bin"); fs.mkdirSync(binDir, { recursive: true }); @@ -158,6 +162,11 @@ function commandExists(command) { } function resolveDataConnectorsDir() { + const fixtureRepo = path.join(fixturesRoot, "demo-data-connectors"); + if (fs.existsSync(path.join(fixtureRepo, "registry.json"))) { + return fixtureRepo; + } + if (process.env.VANA_DATA_CONNECTORS_DIR) { return process.env.VANA_DATA_CONNECTORS_DIR; } diff --git a/src/cli/index.ts b/src/cli/index.ts index 0efe3225..f868101f 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1207,6 +1207,15 @@ function formatSourceStatusDetails(source: SourceStatus): string[] { ); } + if ( + source.sessionPresent && + (source.lastRunOutcome === CliOutcomeStatus.CONNECTED_LOCAL_ONLY || + source.lastRunOutcome === CliOutcomeStatus.CONNECTED_AND_INGESTED || + source.lastRunOutcome === CliOutcomeStatus.INGEST_FAILED) + ) { + details.push("Saved browser session available for faster reconnects."); + } + if (source.lastRunOutcome === CliOutcomeStatus.CONNECTED_AND_INGESTED) { details.push( `Inspect the latest local dataset with \`vana data show ${source.source}\` or use your Personal Server copy.`, @@ -1558,10 +1567,18 @@ function summarizeResultData( lines.push(`Orders: ${data.orders.length}`); } + if (Array.isArray(data.playlists)) { + lines.push(`Playlists: ${data.playlists.length}`); + } + if ( exportSummary?.details && typeof exportSummary.details === "string" && - !lines.includes(exportSummary.details) + !lines.includes(exportSummary.details) && + !Array.isArray(data.repositories) && + !Array.isArray(data.starred) && + !Array.isArray(data.orders) && + !Array.isArray(data.playlists) ) { lines.push(exportSummary.details); } diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 80a1a126..11aff36b 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -293,6 +293,7 @@ describe("runCli", () => { → Connected GitHub [interactive] [local] Inspect the latest local dataset with \`vana data show github\`. + Saved browser session available for faster reconnects. Updated: /tmp/.dataconnect/github-result.json " @@ -374,7 +375,7 @@ describe("runCli", () => { source: "github", path: "/tmp/.dataconnect/github-result.json", summary: { - lines: ["Profile: tnunamak", "Repositories: 1", "1 repository"], + lines: ["Profile: tnunamak", "Repositories: 1"], }, lastRunAt: "2026-03-14T13:10:03.677Z", dataState: "collected_local", From 8ef6088220457468e32ebc984e8b07df65e9cfbe Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 13:28:31 -0500 Subject: [PATCH 089/249] feat(cli): refine static surface hierarchy --- docs/transcripts/data-list.txt | 2 +- docs/transcripts/data-show-github.txt | 1 + docs/transcripts/sources.txt | 6 +++--- docs/transcripts/status.txt | 6 +++--- scripts/prepare-vhs-fixtures.mjs | 10 +++++----- src/cli/index.ts | 23 ++++++++++++++++++----- src/cli/render/format.ts | 4 ++-- src/cli/render/theme.ts | 7 ++++--- test/cli/index.test.ts | 7 ++++--- 9 files changed, 41 insertions(+), 25 deletions(-) diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt index 785f35dc..e2d55749 100644 --- a/docs/transcripts/data-list.txt +++ b/docs/transcripts/data-list.txt @@ -1,4 +1,4 @@ -Collected data +Collected data (2) GitHub [local] Profile: tnunamak diff --git a/docs/transcripts/data-show-github.txt b/docs/transcripts/data-show-github.txt index c3feca23..81b84dac 100644 --- a/docs/transcripts/data-show-github.txt +++ b/docs/transcripts/data-show-github.txt @@ -1,5 +1,6 @@ GitHub data +→ Summary • Profile: tnunamak • Repositories: 2 • Starred: 0 diff --git a/docs/transcripts/sources.txt b/docs/transcripts/sources.txt index d427204f..c732ec62 100644 --- a/docs/transcripts/sources.txt +++ b/docs/transcripts/sources.txt @@ -1,12 +1,12 @@ -Available sources +Available sources (3) -→ Ready now +→ Ready now (2) GitHub [installed] [interactive] Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. Spotify [installed] [interactive] Exports your Spotify playlists using Playwright browser automation. -→ Manual steps +→ Manual steps (1) Shop [installed] [legacy] Exports your Shop app order history using Playwright browser automation. diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index ff74f621..ae48ad2f 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -5,8 +5,8 @@ Runtime: installed /opt/playwright/chromium-1200/chrome-linux64/chrome Personal Server: unavailable -→ Sources -→ Needs attention +→ Sources (4) +→ Needs attention (2) Shop [legacy] [manual step] Run `vana connect shop` without `--no-input` to complete the manual browser step. Updated: Mar 14, 2026, 8:11 AM @@ -14,7 +14,7 @@ Steam [unavailable] No connector is available for steam right now. Updated: Mar 14, 2026, 8:12 AM -→ Connected +→ Connected (2) GitHub [interactive] [local] Inspect the latest local dataset with `vana data show github`. Saved browser session available for faster reconnects. diff --git a/scripts/prepare-vhs-fixtures.mjs b/scripts/prepare-vhs-fixtures.mjs index ba6a4151..bc609ebf 100644 --- a/scripts/prepare-vhs-fixtures.mjs +++ b/scripts/prepare-vhs-fixtures.mjs @@ -219,7 +219,10 @@ async function seedDemoDataConnectors() { } await delay(120); - await page.setData("status", "Login confirmed. Collecting data in background..."); + await page.setData( + "status", + "Login confirmed. Collecting data in background...", + ); await page.setProgress({ phase: { step: 1, total: 3, label: "Profile" }, message: "Fetching profile...", @@ -240,10 +243,7 @@ async function seedDemoDataConnectors() { return { profile: { username: "tnunamak" }, - repositories: [ - { name: "vana-connect" }, - { name: "data-connectors" }, - ], + repositories: [{ name: "vana-connect" }, { name: "data-connectors" }], starred: [], exportSummary: { count: 2, diff --git a/src/cli/index.ts b/src/cli/index.ts index f868101f..eaf4a0cf 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -646,7 +646,11 @@ async function runList(options: GlobalOptions): Promise { } const emit = createEmitter(options); - emit.title("Available sources"); + emit.title( + enrichedSources.length > 0 + ? `Available sources (${enrichedSources.length})` + : "Available sources", + ); emit.blank(); const groups = [ { @@ -663,7 +667,7 @@ async function runList(options: GlobalOptions): Promise { if (index > 0) { emit.blank(); } - emit.section(group.title); + emit.section(formatCountLabel(group.title, group.items.length)); for (const source of group.items) { const badges: Array<{ text: string; tone?: RenderTone }> = []; if (source.installed) { @@ -754,13 +758,13 @@ async function runStatus(options: GlobalOptions): Promise { ].filter((group) => group.items.length > 0); if (sourceGroups.length > 0) { emit.blank(); - emit.section("Sources"); + emit.section(formatCountLabel("Sources", status.sources.length)); } sourceGroups.forEach((group, index) => { if (index > 0) { emit.blank(); } - emit.section(group.title); + emit.section(formatCountLabel(group.title, group.items.length)); for (const source of group.items) { const status = getSourceStatusPresentation(source); const badges: Array<{ text: string; tone?: RenderTone }> = []; @@ -853,7 +857,11 @@ async function runDataList(options: GlobalOptions): Promise { return 0; } - emit.title("Collected data"); + emit.title( + datasetRecords.length > 0 + ? `Collected data (${datasetRecords.length})` + : "Collected data", + ); emit.blank(); datasetRecords.forEach((dataset, index) => { if (index > 0) { @@ -932,6 +940,7 @@ async function runDataShow( emit.title(`${displaySource(source, sourceLabels)} data`); emit.blank(); if (summary) { + emit.section("Summary"); for (const line of summary.lines) { emit.bullet(line); } @@ -1086,6 +1095,10 @@ function displaySource(source: string, labels: SourceLabelMap = {}): string { return labels[source] ?? source.charAt(0).toUpperCase() + source.slice(1); } +function formatCountLabel(label: string, count: number): string { + return `${label} (${count})`; +} + function humanizeField(value: string): string { return value .replace(/([a-z])([A-Z])/g, "$1 $2") diff --git a/src/cli/render/format.ts b/src/cli/render/format.ts index ca3a6326..1d3aae28 100644 --- a/src/cli/render/format.ts +++ b/src/cli/render/format.ts @@ -41,7 +41,7 @@ export function createHumanRenderer(): HumanRenderer { return `${theme.success(symbols.success)} ${theme.heading(text)}`; }, section(text) { - return `${theme.accent(symbols.arrow)} ${theme.accent(text)}`; + return `${theme.accent(symbols.arrow)} ${theme.heading(text)}`; }, keyValue(label, value, tone = "muted") { return `${theme.label(`${label}:`)} ${applyTone(theme, tone, value)}`; @@ -53,7 +53,7 @@ export function createHumanRenderer(): HumanRenderer { return `${theme.heading(name)} ${badges.join(" ")}`; }, detail(text) { - return ` ${theme.dim(text)}`; + return ` ${theme.muted(text)}`; }, bullet(text) { return `${theme.muted(symbols.bullet)} ${text}`; diff --git a/src/cli/render/theme.ts b/src/cli/render/theme.ts index 96e50f5e..182de1b6 100644 --- a/src/cli/render/theme.ts +++ b/src/cli/render/theme.ts @@ -18,12 +18,13 @@ export interface RenderTheme { export function createTheme(capabilities: RenderCapabilities): RenderTheme { const colors = createColors(capabilities.color); const formatCode = (text: string) => `\`${text}\``; + const richMuted = (text: string) => rgb(115, 115, 115, text); if (capabilities.tier === "rich") { return { accent: (text) => rgb(65, 65, 252, text), heading: (text) => colors.bold(text), - label: (text) => colors.bold(text), - muted: (text) => rgb(115, 115, 115, text), + label: (text) => richMuted(colors.bold(text)), + muted: (text) => richMuted(text), dim: (text) => colors.dim(text), success: (text) => rgb(0, 213, 11, text), warning: (text) => rgb(186, 139, 0, text), @@ -36,7 +37,7 @@ export function createTheme(capabilities: RenderCapabilities): RenderTheme { return { accent: (text) => colors.blue(text), heading: (text) => colors.bold(text), - label: (text) => colors.bold(text), + label: (text) => colors.bold(colors.gray(text)), muted: (text) => colors.gray(text), dim: (text) => colors.dim(text), success: (text) => colors.green(text), diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 11aff36b..0025ca53 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -284,13 +284,13 @@ describe("runCli", () => { /tmp/playwright/chrome Personal Server: unavailable - → Sources - → Needs attention + → Sources (2) + → Needs attention (1) Shop [legacy] [manual step] Run \`vana connect shop\` without \`--no-input\` to complete the manual browser step. Updated: - → Connected + → Connected (1) GitHub [interactive] [local] Inspect the latest local dataset with \`vana data show github\`. Saved browser session available for faster reconnects. @@ -421,6 +421,7 @@ describe("runCli", () => { expect(normalizeRenderedTimestamps(stdout)).toMatchInlineSnapshot(` "GitHub data + → Summary • Profile: tnunamak • Repositories: 2 • Starred: 0 From 2a9a422ef002a60c431bfa40856a96d211ec9937 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 13:38:50 -0500 Subject: [PATCH 090/249] feat(cli): add guided next steps to status --- docs/transcripts/status.txt | 4 ++++ src/cli/index.ts | 48 +++++++++++++++++++++++++++++++++++++ test/cli/index.test.ts | 4 ++++ 3 files changed, 56 insertions(+) diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index ae48ad2f..384c350e 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -24,3 +24,7 @@ Spotify [interactive] [local] Inspect the latest local dataset with `vana data show spotify`. Updated: Mar 13, 2026, 4:23 PM ~/.dataconnect/spotify-result.json + +→ Next +• Complete the manual browser step for Shop with `vana connect shop`. +• Connect another source with `vana sources`. diff --git a/src/cli/index.ts b/src/cli/index.ts index eaf4a0cf..4b32ff04 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -781,6 +781,14 @@ async function runStatus(options: GlobalOptions): Promise { } } }); + const nextSteps = buildStatusNextSteps(status.sources, sourceLabels); + if (nextSteps.length > 0) { + emit.blank(); + emit.section("Next"); + for (const step of nextSteps) { + emit.bullet(step); + } + } return 0; } @@ -1254,6 +1262,46 @@ function formatSourceStatusDetails(source: SourceStatus): string[] { return details; } +function buildStatusNextSteps( + sources: SourceStatus[], + sourceLabels: SourceLabelMap = {}, +): string[] { + const nextSteps: string[] = []; + const highestPriority = [...sources].sort(compareSourceStatusOrder)[0]; + const highestPriorityLabel = highestPriority + ? displaySource(highestPriority.source, sourceLabels) + : null; + + if (highestPriority?.lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { + nextSteps.push( + `Continue ${highestPriorityLabel} with \`vana connect ${highestPriority.source}\`.`, + ); + } else if (highestPriority?.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { + nextSteps.push( + `Complete the manual browser step for ${highestPriorityLabel} with \`vana connect ${highestPriority.source}\`.`, + ); + } else if ( + highestPriority?.lastRunOutcome === CliOutcomeStatus.CONNECTOR_UNAVAILABLE + ) { + nextSteps.push("Browse available sources with `vana sources`."); + } else if ( + highestPriority && + (highestPriority.dataState === "collected_local" || + highestPriority.dataState === "ingested_personal_server" || + highestPriority.dataState === "ingest_failed") + ) { + nextSteps.push( + `Inspect the latest dataset with \`vana data show ${highestPriority.source}\`.`, + ); + } + + if (sources.some((source) => source.installed || source.lastRunOutcome)) { + nextSteps.push("Connect another source with `vana sources`."); + } + + return [...new Set(nextSteps)]; +} + function normalizeArgv(argv: string[]): string[] { if ( argv[2] === "connect" && diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 0025ca53..f2033fb7 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -296,6 +296,10 @@ describe("runCli", () => { Saved browser session available for faster reconnects. Updated: /tmp/.dataconnect/github-result.json + + → Next + • Complete the manual browser step for Shop with \`vana connect shop\`. + • Connect another source with \`vana sources\`. " `); }); From 2a0110692164f7c845cb7fdc253515bb1a74d3e1 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 14:02:23 -0500 Subject: [PATCH 091/249] feat(cli): polish connect narrative flow --- docs/transcripts/connect-steam-no-input.txt | 2 +- src/cli/index.ts | 57 ++++++++++++++------- test/cli/index.test.ts | 2 +- 3 files changed, 41 insertions(+), 20 deletions(-) diff --git a/docs/transcripts/connect-steam-no-input.txt b/docs/transcripts/connect-steam-no-input.txt index c9918b66..e378714b 100644 --- a/docs/transcripts/connect-steam-no-input.txt +++ b/docs/transcripts/connect-steam-no-input.txt @@ -2,7 +2,7 @@ Connect Steam → Preparing Finding a connector for Steam... -No connector is available for steam right now. +No connector is available for Steam right now. → Next • Browse available sources with `vana sources`. diff --git a/src/cli/index.ts b/src/cli/index.ts index 4b32ff04..7eb5b79b 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -169,13 +169,12 @@ async function runConnect( emit.info( `Vana Connect needs a local browser runtime before it can connect ${displayName}.`, ); - emit.info(""); - emit.info("This will install:"); - emit.info("- the local browser runtime"); - emit.info("- a Chromium browser engine"); - emit.info("- local runtime files under ~/.dataconnect/"); - emit.info(""); - emit.info( + emit.blank(); + emit.section("Runtime setup"); + emit.bullet("Install the local browser runtime."); + emit.bullet("Install a Chromium browser engine."); + emit.bullet("Create local runtime files under `~/.dataconnect/`."); + emit.detail( "Your credentials stay on this machine. Nothing is sent anywhere except the platform you’re connecting to.", ); @@ -214,7 +213,7 @@ async function runConnect( }); emit.success("Runtime ready."); if (installResult.logPath) { - emit.info(`Setup log: ${formatDisplayPath(installResult.logPath)}`); + emit.detail(`Setup log: ${formatDisplayPath(installResult.logPath)}`); } } else { emit.event({ @@ -229,10 +228,11 @@ async function runConnect( try { fetched = await runtime.fetchConnector(source); } catch (error) { - const message = + const rawMessage = error instanceof Error ? error.message : `No connector is available for ${displayName} right now.`; + const message = formatHumanSourceMessage(rawMessage, source, displayName); await updateSourceState(source, { connectorInstalled: false, lastRunAt: new Date().toISOString(), @@ -280,7 +280,7 @@ async function runConnect( `${path.basename(resolution.connectorPath, path.extname(resolution.connectorPath))}`, ); if (fs.existsSync(profilePath)) { - emit.info( + emit.detail( `Found an existing ${displayName} session. Reusing it if it is still valid...`, ); } @@ -309,11 +309,11 @@ async function runConnect( noInput: options.noInput, onNeedInput: async (needInput) => { emit.blank(); - emit.section("Continue"); + emit.section("Continue in this terminal"); emit.info( - `To connect ${displayName}, Vana Connect will open a local browser session on this machine.`, + `Vana Connect will keep the ${displayName} session local to this machine.`, ); - emit.info("Your credentials stay local."); + emit.detail("The details you enter here stay local."); emit.blank(); emit.info( needInput.message ?? @@ -394,11 +394,13 @@ async function runConnect( } if (event.type === "headed-required") { + emit.blank(); + emit.section("Continue in your browser"); if (event.message) { emit.info(event.message); } if (event.url) { - emit.info(`Opening ${displayName} in a local browser session...`); + emit.detail(`Opening ${displayName} in a local browser session...`); } continue; } @@ -481,7 +483,7 @@ async function runConnect( reason: "Connector run ended without a result.", }); if (runLogPath) { - emit.info(`Run log: ${runLogPath}`); + emit.info(`Run log: ${formatDisplayPath(runLogPath)}`); } return 1; } @@ -564,11 +566,11 @@ async function runConnect( reason: message, }); if (runLogPath) { - emit.info(`Run log: ${formatDisplayPath(runLogPath)}`); + emit.detail(`Run log: ${formatDisplayPath(runLogPath)}`); } else if (fetchLogPath) { - emit.info(`Fetch log: ${formatDisplayPath(fetchLogPath)}`); + emit.detail(`Fetch log: ${formatDisplayPath(fetchLogPath)}`); } else if (setupLogPath) { - emit.info(`Setup log: ${formatDisplayPath(setupLogPath)}`); + emit.detail(`Setup log: ${formatDisplayPath(setupLogPath)}`); } return 1; } @@ -1114,6 +1116,25 @@ function humanizeField(value: string): string { .replace(/^\w/, (match) => match.toUpperCase()); } +function formatHumanSourceMessage( + message: string, + source: string, + displayName: string, +): string { + if (!message || source === displayName) { + return message; + } + + return message.replace( + new RegExp(`\\b${escapeRegExp(source)}\\b`, "gi"), + displayName, + ); +} + +function escapeRegExp(value: string): string { + return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} + async function gatherSourceStatuses( storedSources: Record< string, diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index f2033fb7..9bddc130 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -879,7 +879,7 @@ describe("runCli", () => { fetchSpy.mockRestore(); expect(exitCode).toBe(1); - expect(stdout).toContain("No connector is available for steam right now."); + expect(stdout).toContain("No connector is available for Steam right now."); expect(stdout).toContain("→ Next"); expect(stdout).toContain("Browse available sources with `vana sources`."); expect(stdout).toContain("Then connect one with `vana connect `."); From 0014dd6781063e3ce0c7a5346bce4c64e897b556 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 14:09:14 -0500 Subject: [PATCH 092/249] feat(cli): improve data and status guidance --- docs/transcripts/data-list.txt | 1 + docs/transcripts/data-show-github.txt | 1 + docs/transcripts/status.txt | 3 +- src/cli/index.ts | 50 +++++++++++-- test/cli/index.test.ts | 101 ++++++++++++++++++++++++-- 5 files changed, 142 insertions(+), 14 deletions(-) diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt index e2d55749..67742770 100644 --- a/docs/transcripts/data-list.txt +++ b/docs/transcripts/data-list.txt @@ -15,3 +15,4 @@ Path: ~/.dataconnect/spotify-result.json → Next • Inspect one with `vana data show `. +• Print a path with `vana data path `. diff --git a/docs/transcripts/data-show-github.txt b/docs/transcripts/data-show-github.txt index 81b84dac..f3e6b39d 100644 --- a/docs/transcripts/data-show-github.txt +++ b/docs/transcripts/data-show-github.txt @@ -11,4 +11,5 @@ State: Saved locally → Next • Print the path with `vana data path github`. +• Inspect other datasets with `vana data list`. • Check overall status with `vana status`. diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index 384c350e..4759f616 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -11,7 +11,7 @@ Shop [legacy] [manual step] Run `vana connect shop` without `--no-input` to complete the manual browser step. Updated: Mar 14, 2026, 8:11 AM Steam [unavailable] - No connector is available for steam right now. + No connector is available for Steam right now. Updated: Mar 14, 2026, 8:12 AM → Connected (2) @@ -27,4 +27,3 @@ Spotify [interactive] [local] → Next • Complete the manual browser step for Shop with `vana connect shop`. -• Connect another source with `vana sources`. diff --git a/src/cli/index.ts b/src/cli/index.ts index 7eb5b79b..f8c8cecb 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -843,6 +843,7 @@ async function runDataList(options: GlobalOptions): Promise { .map(async (source) => ({ source: source.source, name: source.name, + authMode: source.authMode ?? null, dataState: source.dataState, lastRunAt: source.lastRunAt ?? null, path: source.lastResultPath ?? null, @@ -899,6 +900,7 @@ async function runDataList(options: GlobalOptions): Promise { emit.blank(); emit.section("Next"); emit.bullet(`Inspect one with ${emit.code("vana data show ")}.`); + emit.bullet(`Print a path with ${emit.code("vana data path ")}.`); return 0; } @@ -937,6 +939,7 @@ async function runDataShow( process.stdout.write( `${JSON.stringify({ source, + name: displaySource(source, sourceLabels), path: resultPath, summary, lastRunAt: record?.lastRunAt ?? null, @@ -972,6 +975,7 @@ async function runDataShow( emit.bullet( `Print the path with ${emit.code(`vana data path ${source}`)}.`, ); + emit.bullet(`Inspect other datasets with ${emit.code("vana data list")}.`); emit.bullet(`Check overall status with ${emit.code("vana status")}.`); return 0; } catch (error) { @@ -1002,6 +1006,7 @@ async function runDataPath( `${JSON.stringify({ error: "dataset_not_found", source, + name: displaySource(source, sourceLabels), message: `No collected dataset found for ${displaySource(source, sourceLabels)}.`, })}\n`, ); @@ -1014,7 +1019,15 @@ async function runDataPath( } if (options.json) { - process.stdout.write(`${JSON.stringify({ source, path: resultPath })}\n`); + process.stdout.write( + `${JSON.stringify({ + source, + name: displaySource(source, sourceLabels), + path: resultPath, + lastRunAt: state.sources[source]?.lastRunAt ?? null, + dataState: state.sources[source]?.dataState ?? null, + })}\n`, + ); } else { process.stdout.write(`${formatDisplayPath(resultPath)}\n`); } @@ -1211,6 +1224,7 @@ async function listInstalledConnectorFiles(): Promise< function formatSourceStatusDetails(source: SourceStatus): string[] { const details: string[] = []; + const displayName = source.name ?? displaySource(source.source); if (source.lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { details.push( @@ -1227,12 +1241,18 @@ function formatSourceStatusDetails(source: SourceStatus): string[] { } if (source.lastRunOutcome === CliOutcomeStatus.RUNTIME_ERROR) { - details.push(source.lastError ?? "The last connector run failed."); + details.push( + source.lastError + ? formatHumanSourceMessage(source.lastError, source.source, displayName) + : "The last connector run failed.", + ); } if (source.lastRunOutcome === CliOutcomeStatus.CONNECTOR_UNAVAILABLE) { details.push( - source.lastError ?? "No connector is available for this source.", + source.lastError + ? formatHumanSourceMessage(source.lastError, source.source, displayName) + : "No connector is available for this source.", ); } @@ -1289,6 +1309,15 @@ function buildStatusNextSteps( ): string[] { const nextSteps: string[] = []; const highestPriority = [...sources].sort(compareSourceStatusOrder)[0]; + const connectedSources = sources.filter( + (source) => + source.dataState === "collected_local" || + source.dataState === "ingested_personal_server" || + source.dataState === "ingest_failed", + ); + const needsAttention = sources.some( + (source) => rankSourceStatus(source) <= 4, + ); const highestPriorityLabel = highestPriority ? displaySource(highestPriority.source, sourceLabels) : null; @@ -1311,12 +1340,19 @@ function buildStatusNextSteps( highestPriority.dataState === "ingested_personal_server" || highestPriority.dataState === "ingest_failed") ) { - nextSteps.push( - `Inspect the latest dataset with \`vana data show ${highestPriority.source}\`.`, - ); + if (connectedSources.length > 1) { + nextSteps.push("Review your collected data with `vana data list`."); + } else { + nextSteps.push( + `Inspect the latest dataset with \`vana data show ${highestPriority.source}\`.`, + ); + } } - if (sources.some((source) => source.installed || source.lastRunOutcome)) { + if ( + sources.some((source) => source.installed || source.lastRunOutcome) && + (!needsAttention || connectedSources.length === 0) + ) { nextSteps.push("Connect another source with `vana sources`."); } diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 9bddc130..ce529351 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -299,7 +299,6 @@ describe("runCli", () => { → Next • Complete the manual browser step for Shop with \`vana connect shop\`. - • Connect another source with \`vana sources\`. " `); }); @@ -346,6 +345,12 @@ describe("runCli", () => { }); it("shows collected data in json mode", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + }, + ]); mockReadCliState.mockResolvedValue({ version: 1, sources: { @@ -377,6 +382,7 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(JSON.parse(stdout)).toEqual({ source: "github", + name: "GitHub", path: "/tmp/.dataconnect/github-result.json", summary: { lines: ["Profile: tnunamak", "Repositories: 1"], @@ -436,6 +442,7 @@ describe("runCli", () => { → Next • Print the path with \`vana data path github\`. + • Inspect other datasets with \`vana data list\`. • Check overall status with \`vana status\`. " `); @@ -473,14 +480,94 @@ describe("runCli", () => { const exitCode = await runCli(["node", "vana", "data", "list", "--json"]); expect(exitCode).toBe(0); - expect( - JSON.parse(stdout).datasets.map( - (item: { source: string }) => item.source, + expect(JSON.parse(stdout).datasets).toMatchObject([ + { + source: "github", + name: "GitHub", + authMode: "interactive", + dataState: "collected_local", + }, + { + source: "chatgpt", + name: "ChatGPT", + authMode: "legacy", + dataState: "collected_local", + }, + ]); + }); + + it("renders a stable human transcript for data list", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + { id: "spotify", name: "Spotify", authMode: "interactive" }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + lastResultPath: "/tmp/.dataconnect/github-result.json", + lastRunAt: "2026-03-14T13:10:03.677Z", + dataState: "collected_local", + }, + spotify: { + lastResultPath: "/tmp/.dataconnect/spotify-result.json", + lastRunAt: "2026-03-13T16:23:00.000Z", + dataState: "collected_local", + }, + }, + }); + mockReadFile.mockImplementation(async (filePath: string) => + JSON.stringify( + filePath.includes("github") + ? { + profile: { username: "tnunamak" }, + repositories: [ + { name: "vana-connect" }, + { name: "data-connect" }, + ], + starred: [], + } + : { + profile: { username: "tnunamak" }, + playlists: [{ name: "Focus" }, { name: "Deep Work" }], + }, ), - ).toEqual(["github", "chatgpt"]); + ); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "data", "list"]); + + expect(exitCode).toBe(0); + expect(normalizeRenderedTimestamps(stdout)).toMatchInlineSnapshot(` + "Collected data (2) + + GitHub [local] + Profile: tnunamak + Repositories: 2 + Starred: 0 + Updated: + Path: /tmp/.dataconnect/github-result.json + + Spotify [local] + Profile: tnunamak + Playlists: 2 + Updated: + Path: /tmp/.dataconnect/spotify-result.json + + → Next + • Inspect one with \`vana data show \`. + • Print a path with \`vana data path \`. + " + `); }); it("shows collected data paths in json mode", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + }, + ]); mockReadCliState.mockResolvedValue({ version: 1, sources: { @@ -503,7 +590,10 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(JSON.parse(stdout)).toEqual({ source: "github", + name: "GitHub", path: "/tmp/.dataconnect/github-result.json", + lastRunAt: null, + dataState: null, }); }); @@ -529,6 +619,7 @@ describe("runCli", () => { expect(JSON.parse(stdout)).toEqual({ error: "dataset_not_found", source: "github", + name: "GitHub", message: "No collected dataset found for GitHub.", }); }); From 214ad23bae5c97e4e2647fd10129d98d866eb406 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 14:12:47 -0500 Subject: [PATCH 093/249] feat(cli): refine discovery and composability --- README.md | 18 ++++++++++++++ docs/transcripts/sources.txt | 3 ++- src/cli/index.ts | 23 +++++++++++++++++- test/cli/index.test.ts | 47 ++++++++++++++++++++++++++++++++++++ 4 files changed, 89 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e777051a..1f1b203f 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,24 @@ curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect- [`data-inspection.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif), [`connect-success.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) +Once installed, the best way to evaluate the CLI quickly is: + +```bash +vana status +vana sources +vana connect github +vana data show github +``` + +Current reviewable transcripts: + +- [`status`](./docs/transcripts/status.txt) +- [`sources`](./docs/transcripts/sources.txt) +- [`data list`](./docs/transcripts/data-list.txt) +- [`data show github`](./docs/transcripts/data-show-github.txt) +- [`connect github`](./docs/transcripts/connect-github-success.txt) +- [`connect steam --no-input`](./docs/transcripts/connect-steam-no-input.txt) + ## What problem this solves Your users already have rich personal data — ChatGPT conversations, Instagram activity, Gmail, purchase history — but it's locked inside the platforms that collected it. As a builder, you can't easily use that data to personalize onboarding, tailor recommendations, or skip lengthy signup forms. diff --git a/docs/transcripts/sources.txt b/docs/transcripts/sources.txt index c732ec62..f89487b5 100644 --- a/docs/transcripts/sources.txt +++ b/docs/transcripts/sources.txt @@ -11,4 +11,5 @@ Shop [installed] [legacy] Exports your Shop app order history using Playwright browser automation. → Next -• Connect one with `vana connect `. +• Browse the guided picker with `vana connect`. +• Or connect one directly with `vana connect `. diff --git a/src/cli/index.ts b/src/cli/index.ts index f8c8cecb..7c2b1a79 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -609,6 +609,24 @@ async function runConnectEntry(options: GlobalOptions): Promise { emit.title("Connect data"); emit.blank(); + const readyNowCount = sources.filter( + (source) => source.authMode !== "legacy", + ).length; + const manualCount = sources.length - readyNowCount; + if (readyNowCount > 0 || manualCount > 0) { + const parts = []; + if (readyNowCount > 0) { + parts.push( + `${readyNowCount} ready ${readyNowCount === 1 ? "source" : "sources"}`, + ); + } + if (manualCount > 0) { + parts.push( + `${manualCount} with manual ${manualCount === 1 ? "step" : "steps"}`, + ); + } + emit.detail(parts.join(" • ")); + } emit.info("Choose a source to connect:"); let source: string; try { @@ -691,7 +709,10 @@ async function runList(options: GlobalOptions): Promise { } else { emit.blank(); emit.section("Next"); - emit.bullet(`Connect one with ${emit.code("vana connect ")}.`); + emit.bullet(`Browse the guided picker with ${emit.code("vana connect")}.`); + emit.bullet( + `Or connect one directly with ${emit.code("vana connect ")}.`, + ); } return 0; } diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index ce529351..eab0c8da 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -663,6 +663,52 @@ describe("runCli", () => { expect(stdout).toContain("Manual steps"); }); + it("renders a stable human transcript for sources", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + description: "Exports GitHub data.", + authMode: "interactive", + }, + { + id: "spotify", + name: "Spotify", + description: "Exports Spotify data.", + authMode: "interactive", + }, + { + id: "chatgpt", + name: "ChatGPT", + description: "Exports ChatGPT data.", + authMode: "legacy", + }, + ]); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "sources"]); + + expect(exitCode).toBe(0); + expect(stdout).toMatchInlineSnapshot(` + "Available sources (3) + + → Ready now (2) + GitHub [interactive] + Exports GitHub data. + Spotify [interactive] + Exports Spotify data. + + → Manual steps (1) + ChatGPT [legacy] + Exports ChatGPT data. + + → Next + • Browse the guided picker with \`vana connect\`. + • Or connect one directly with \`vana connect \`. + " + `); + }); + it("orders status output by what needs attention first", async () => { mockListAvailableSources.mockResolvedValue([ { id: "github", name: "GitHub", authMode: "interactive" }, @@ -776,6 +822,7 @@ describe("runCli", () => { expect(exitCode).toBe(1); expect(mockSelect).toHaveBeenCalled(); + expect(stdout).toContain("1 ready source"); expect(stdout).toContain("Cancelled. No source was connected."); }); From 46dcdd40838f1b07cfec0f3f0c05240835d0703c Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 14:26:42 -0500 Subject: [PATCH 094/249] feat(cli): polish guided connect entry --- src/cli/index.ts | 4 +++ test/cli/index.test.ts | 56 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/src/cli/index.ts b/src/cli/index.ts index 7c2b1a79..ee4741cc 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -628,6 +628,9 @@ async function runConnectEntry(options: GlobalOptions): Promise { emit.detail(parts.join(" • ")); } emit.info("Choose a source to connect:"); + emit.detail( + `Or jump straight in with ${emit.code("vana connect ")}.`, + ); let source: string; try { source = await select({ @@ -643,6 +646,7 @@ async function runConnectEntry(options: GlobalOptions): Promise { } catch (error) { if (isPromptCancelled(error)) { emit.info("Cancelled. No source was connected."); + emit.detail(`Browse sources any time with ${emit.code("vana sources")}.`); return 1; } throw error; diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index eab0c8da..1e1643c2 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -823,7 +823,63 @@ describe("runCli", () => { expect(exitCode).toBe(1); expect(mockSelect).toHaveBeenCalled(); expect(stdout).toContain("1 ready source"); + expect(stdout).toContain("vana connect "); expect(stdout).toContain("Cancelled. No source was connected."); + expect(stdout).toContain("vana sources"); + }); + + it("renders a stable human transcript for guided connect cancellation", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + description: "Exports GitHub data.", + authMode: "interactive", + }, + { + id: "shop", + name: "Shop", + description: "Exports Shop data.", + authMode: "legacy", + }, + ]); + const promptError = new Error("prompt aborted"); + promptError.name = "ExitPromptError"; + mockSelect.mockRejectedValueOnce(promptError); + const originalStdoutTty = process.stdout.isTTY; + const originalStdinTty = process.stdin.isTTY; + Object.defineProperty(process.stdout, "isTTY", { + configurable: true, + value: true, + }); + Object.defineProperty(process.stdin, "isTTY", { + configurable: true, + value: true, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect"]); + + Object.defineProperty(process.stdout, "isTTY", { + configurable: true, + value: originalStdoutTty, + }); + Object.defineProperty(process.stdin, "isTTY", { + configurable: true, + value: originalStdinTty, + }); + + expect(exitCode).toBe(1); + expect(stdout).toMatchInlineSnapshot(` + "Connect data + + 1 ready source • 1 with manual step + Choose a source to connect: + Or jump straight in with \`vana connect \`. + Cancelled. No source was connected. + Browse sources any time with \`vana sources\`. + " + `); }); it("prints a clear message when runtime setup is declined", async () => { From 0afda697f01c59920f617ec50b55797a0f882100 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 14:28:03 -0500 Subject: [PATCH 095/249] feat(cli): strengthen connect success payoff --- docs/transcripts/connect-github-success.txt | 1 + src/cli/index.ts | 1 + test/cli/index.test.ts | 34 +++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/docs/transcripts/connect-github-success.txt b/docs/transcripts/connect-github-success.txt index 6cde44af..02c28140 100644 --- a/docs/transcripts/connect-github-success.txt +++ b/docs/transcripts/connect-github-success.txt @@ -23,6 +23,7 @@ Collecting your data... → Saved locally • ~/.dataconnect/last-result.json + Saved browser session available for faster reconnects. No Personal Server is available right now, so this run stayed local. Run log: ~/.dataconnect/logs/run-github-.log diff --git a/src/cli/index.ts b/src/cli/index.ts index ee4741cc..381948a2 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -524,6 +524,7 @@ async function runConnect( } else { emit.section("Saved locally"); emit.bullet(formatDisplayPath(resultPath)); + emit.detail("Saved browser session available for faster reconnects."); if ( finalStatus === CliOutcomeStatus.INGEST_FAILED && ingestFailureMessage diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 1e1643c2..c6d16818 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -748,6 +748,37 @@ describe("runCli", () => { expect(steamIndex).toBeLessThan(spotifyIndex); }); + it("suggests reviewing collected data when multiple sources are already connected", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + { id: "spotify", name: "Spotify", authMode: "interactive" }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + lastResultPath: "/tmp/.dataconnect/github-result.json", + }, + spotify: { + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + lastResultPath: "/tmp/.dataconnect/spotify-result.json", + }, + }, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "status"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain( + "Review your collected data with `vana data list`.", + ); + expect(stdout).toContain("Connect another source with `vana sources`."); + }); + it("prints source_required in json mode when connect source is missing", async () => { const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "connect", "--json"]); @@ -967,6 +998,9 @@ describe("runCli", () => { ); expect(stdout).toContain("Saved locally"); expect(stdout).toContain("/tmp/.dataconnect/github-result.json"); + expect(stdout).toContain( + "Saved browser session available for faster reconnects.", + ); expect(stdout).toContain("Next"); expect(stdout).toContain("vana data show github"); }); From 99394643f5c103f46731a7501f73f4c5683b4d4a Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 14:38:00 -0500 Subject: [PATCH 096/249] docs(cli): refresh execution guidance --- docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md | 46 +++++++++++--------------- docs/CLI-EXECUTION-PLAYBOOK.md | 8 +++-- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md index 7bf73752..55fb6163 100644 --- a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md +++ b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md @@ -648,52 +648,46 @@ This is the recommended sequence. ### Current Branch State And Revised Sequencing -As of branch head `b91e4a2`, the plan above is no longer hypothetical. +As of branch head `0afda69`, the plan above is no longer hypothetical. Substantial parts of the foundation are already present: - a human renderer/theme layer exists - `status`, `sources`, and `data` have been upgraded materially -- `vana connect` has a guided no-source entrypoint +- `vana connect` has a guided no-source entrypoint with clearer cancellation + and direct-command copy - structured runtime `status-update` and `progress-update` events now exist -- VHS scaffolding exists and README-facing demo assets are publishing from CI +- deterministic success demos, transcripts, and README-facing VHS assets are + publishing from CI +- successful connects now land with a stronger payoff moment, including saved + session messaging -That means the next phase should **not** start from Phase 1 again. +That means the next phase should **not** start from Phase 1 again and should +not repeat the already-finished product-truth work. The correct sequence from here is: -### Batch 1: Product-truth and demo-proofing - -This batch should be completed and released together before deeper beauty work. - -- add a deterministic successful `connect` demo fixture so README demos can show - real progress and a real success moment without depending on live GitHub -- add transcript coverage for that successful connect flow -- tighten the final human success summary so it consistently lands as: - - what connected - - what was collected - - where the data lives or went - - one strong next step -- strengthen `vana data show` and `vana data path` as the first payoff surface -- improve `vana status` so it distinguishes: - - runtime ready - - session present - - last successful collection - - Personal Server unavailable vs synced +### Batch 1: Product-truth and demo-proofing follow-through + +This batch is mostly complete. The remaining work should be follow-through only: + +- keep tightening any remaining rough edges surfaced by real acceptance tests - broaden acceptance coverage across: - migrated/requestInput connectors - legacy/manual connectors - unsupported sources - saved-session reuse cases +- keep README, transcripts, and published demo assets aligned with the current + canary Important: -- this batch is about making the product feel truthful and coherent -- it should be pushed as one larger release cycle, not as many tiny deployment +- this is now a cleanup/follow-through lane, not the main product frontier +- it should still be pushed as larger release cycles, not many tiny deployment cycles ### Batch 2: Deep beauty, static-first -Once Batch 1 is externally proven, start the real beauty pass on the surfaces -that are already semantically stable. +This is now the main frontier. Focus first on the surfaces that are already +semantically stable. - refine spacing, hierarchy, and semantic color usage across: - `status` diff --git a/docs/CLI-EXECUTION-PLAYBOOK.md b/docs/CLI-EXECUTION-PLAYBOOK.md index de38f05b..113c794f 100644 --- a/docs/CLI-EXECUTION-PLAYBOOK.md +++ b/docs/CLI-EXECUTION-PLAYBOOK.md @@ -16,9 +16,9 @@ wins. ## Current State -Branch head at the time of writing: +Branch head at the time of this update: -- `b91e4a2` +- `0afda69` Already true on this branch: @@ -27,6 +27,10 @@ Already true on this branch: - published canary assets work - `status`, `sources`, `data`, and guided `connect` have been materially upgraded +- guided `connect` now has clearer entry, cancellation, and continuation copy +- `status` now points users toward `vana data list` when that is the right next step +- `data show` / `data path` JSON surfaces are more useful for shell tooling +- successful connects now explicitly mention the saved browser session payoff - structured runtime `status-update` and `progress-update` events exist - README-facing VHS demos and transcripts are publishing from CI From a862ad9924ebc35d24c2f10aa545a9c64dd41599 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 14:42:21 -0500 Subject: [PATCH 097/249] feat(cli): deepen static surface rhythm --- docs/transcripts/connect-github-success.txt | 12 +++---- docs/transcripts/connect-steam-no-input.txt | 4 +-- docs/transcripts/data-list.txt | 12 +++---- docs/transcripts/data-show-github.txt | 18 +++++----- docs/transcripts/sources.txt | 4 +-- docs/transcripts/status.txt | 6 ++-- src/cli/render/format.ts | 4 +-- test/cli/index.test.ts | 40 ++++++++++----------- 8 files changed, 50 insertions(+), 50 deletions(-) diff --git a/docs/transcripts/connect-github-success.txt b/docs/transcripts/connect-github-success.txt index 02c28140..1b252aa2 100644 --- a/docs/transcripts/connect-github-success.txt +++ b/docs/transcripts/connect-github-success.txt @@ -17,16 +17,16 @@ Collecting your data... Collected your GitHub data and saved it locally. → Collected -• Profile: tnunamak -• Repositories: 2 -• Starred: 0 + • Profile: tnunamak + • Repositories: 2 + • Starred: 0 → Saved locally -• ~/.dataconnect/last-result.json + • ~/.dataconnect/last-result.json Saved browser session available for faster reconnects. No Personal Server is available right now, so this run stayed local. Run log: ~/.dataconnect/logs/run-github-.log → Next -• Run `vana status` -• Or inspect the data with `vana data show github` + • Run `vana status` + • Or inspect the data with `vana data show github` diff --git a/docs/transcripts/connect-steam-no-input.txt b/docs/transcripts/connect-steam-no-input.txt index e378714b..e6896315 100644 --- a/docs/transcripts/connect-steam-no-input.txt +++ b/docs/transcripts/connect-steam-no-input.txt @@ -5,5 +5,5 @@ Finding a connector for Steam... No connector is available for Steam right now. → Next -• Browse available sources with `vana sources`. -• Then connect one with `vana connect `. + • Browse available sources with `vana sources`. + • Then connect one with `vana connect `. diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt index 67742770..1729654f 100644 --- a/docs/transcripts/data-list.txt +++ b/docs/transcripts/data-list.txt @@ -4,15 +4,15 @@ GitHub [local] Profile: tnunamak Repositories: 2 Starred: 0 -Updated: Mar 14, 2026, 8:10 AM -Path: ~/.dataconnect/last-result.json + Updated: Mar 14, 2026, 8:10 AM + Path: ~/.dataconnect/last-result.json Spotify [local] Profile: tnunamak Playlists: 2 -Updated: Mar 13, 2026, 4:23 PM -Path: ~/.dataconnect/spotify-result.json + Updated: Mar 13, 2026, 4:23 PM + Path: ~/.dataconnect/spotify-result.json → Next -• Inspect one with `vana data show `. -• Print a path with `vana data path `. + • Inspect one with `vana data show `. + • Print a path with `vana data path `. diff --git a/docs/transcripts/data-show-github.txt b/docs/transcripts/data-show-github.txt index f3e6b39d..c4bf9d48 100644 --- a/docs/transcripts/data-show-github.txt +++ b/docs/transcripts/data-show-github.txt @@ -1,15 +1,15 @@ GitHub data → Summary -• Profile: tnunamak -• Repositories: 2 -• Starred: 0 + • Profile: tnunamak + • Repositories: 2 + • Starred: 0 -Path: ~/.dataconnect/last-result.json -Updated: Mar 14, 2026, 8:10 AM -State: Saved locally + Path: ~/.dataconnect/last-result.json + Updated: Mar 14, 2026, 8:10 AM + State: Saved locally → Next -• Print the path with `vana data path github`. -• Inspect other datasets with `vana data list`. -• Check overall status with `vana status`. + • Print the path with `vana data path github`. + • Inspect other datasets with `vana data list`. + • Check overall status with `vana status`. diff --git a/docs/transcripts/sources.txt b/docs/transcripts/sources.txt index f89487b5..871bcbc1 100644 --- a/docs/transcripts/sources.txt +++ b/docs/transcripts/sources.txt @@ -11,5 +11,5 @@ Shop [installed] [legacy] Exports your Shop app order history using Playwright browser automation. → Next -• Browse the guided picker with `vana connect`. -• Or connect one directly with `vana connect `. + • Browse the guided picker with `vana connect`. + • Or connect one directly with `vana connect `. diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index 4759f616..93486427 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -1,9 +1,9 @@ Vana Connect status → Environment -Runtime: installed + Runtime: installed /opt/playwright/chromium-1200/chrome-linux64/chrome -Personal Server: unavailable + Personal Server: unavailable → Sources (4) → Needs attention (2) @@ -26,4 +26,4 @@ Spotify [interactive] [local] ~/.dataconnect/spotify-result.json → Next -• Complete the manual browser step for Shop with `vana connect shop`. + • Complete the manual browser step for Shop with `vana connect shop`. diff --git a/src/cli/render/format.ts b/src/cli/render/format.ts index 1d3aae28..982c2bdb 100644 --- a/src/cli/render/format.ts +++ b/src/cli/render/format.ts @@ -44,7 +44,7 @@ export function createHumanRenderer(): HumanRenderer { return `${theme.accent(symbols.arrow)} ${theme.heading(text)}`; }, keyValue(label, value, tone = "muted") { - return `${theme.label(`${label}:`)} ${applyTone(theme, tone, value)}`; + return ` ${theme.label(`${label}:`)} ${applyTone(theme, tone, value)}`; }, sourceTitle(name, badges = []) { if (badges.length === 0) { @@ -56,7 +56,7 @@ export function createHumanRenderer(): HumanRenderer { return ` ${theme.muted(text)}`; }, bullet(text) { - return `${theme.muted(symbols.bullet)} ${text}`; + return ` ${theme.muted(symbols.bullet)} ${text}`; }, badge(text, tone = "muted") { return applyTone(theme, tone, `[${text}]`); diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index c6d16818..f834cfcf 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -280,9 +280,9 @@ describe("runCli", () => { "Vana Connect status → Environment - Runtime: installed + Runtime: installed /tmp/playwright/chrome - Personal Server: unavailable + Personal Server: unavailable → Sources (2) → Needs attention (1) @@ -298,7 +298,7 @@ describe("runCli", () => { /tmp/.dataconnect/github-result.json → Next - • Complete the manual browser step for Shop with \`vana connect shop\`. + • Complete the manual browser step for Shop with \`vana connect shop\`. " `); }); @@ -432,18 +432,18 @@ describe("runCli", () => { "GitHub data → Summary - • Profile: tnunamak - • Repositories: 2 - • Starred: 0 + • Profile: tnunamak + • Repositories: 2 + • Starred: 0 - Path: /tmp/.dataconnect/github-result.json - Updated: - State: Saved locally + Path: /tmp/.dataconnect/github-result.json + Updated: + State: Saved locally → Next - • Print the path with \`vana data path github\`. - • Inspect other datasets with \`vana data list\`. - • Check overall status with \`vana status\`. + • Print the path with \`vana data path github\`. + • Inspect other datasets with \`vana data list\`. + • Check overall status with \`vana status\`. " `); }); @@ -545,18 +545,18 @@ describe("runCli", () => { Profile: tnunamak Repositories: 2 Starred: 0 - Updated: - Path: /tmp/.dataconnect/github-result.json + Updated: + Path: /tmp/.dataconnect/github-result.json Spotify [local] Profile: tnunamak Playlists: 2 - Updated: - Path: /tmp/.dataconnect/spotify-result.json + Updated: + Path: /tmp/.dataconnect/spotify-result.json → Next - • Inspect one with \`vana data show \`. - • Print a path with \`vana data path \`. + • Inspect one with \`vana data show \`. + • Print a path with \`vana data path \`. " `); }); @@ -703,8 +703,8 @@ describe("runCli", () => { Exports ChatGPT data. → Next - • Browse the guided picker with \`vana connect\`. - • Or connect one directly with \`vana connect \`. + • Browse the guided picker with \`vana connect\`. + • Or connect one directly with \`vana connect \`. " `); }); From 2f478976e33017d6f4100a005ab452b9204a8448 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:10:05 -0500 Subject: [PATCH 098/249] feat(cli): soften badge styling --- src/cli/render/format.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cli/render/format.ts b/src/cli/render/format.ts index 982c2bdb..df56dcf2 100644 --- a/src/cli/render/format.ts +++ b/src/cli/render/format.ts @@ -59,7 +59,7 @@ export function createHumanRenderer(): HumanRenderer { return ` ${theme.muted(symbols.bullet)} ${text}`; }, badge(text, tone = "muted") { - return applyTone(theme, tone, `[${text}]`); + return `${theme.muted("[")}${applyTone(theme, tone, text)}${theme.muted("]")}`; }, }; } From 3d92ce652b33e2674089e8bade211f351b3098c3 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:11:29 -0500 Subject: [PATCH 099/249] feat(cli): prioritize source readiness badges --- docs/transcripts/sources.txt | 6 +++--- src/cli/index.ts | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/transcripts/sources.txt b/docs/transcripts/sources.txt index 871bcbc1..124eac63 100644 --- a/docs/transcripts/sources.txt +++ b/docs/transcripts/sources.txt @@ -1,13 +1,13 @@ Available sources (3) → Ready now (2) -GitHub [installed] [interactive] +GitHub [interactive] [installed] Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. -Spotify [installed] [interactive] +Spotify [interactive] [installed] Exports your Spotify playlists using Playwright browser automation. → Manual steps (1) -Shop [installed] [legacy] +Shop [legacy] [installed] Exports your Shop app order history using Playwright browser automation. → Next diff --git a/src/cli/index.ts b/src/cli/index.ts index 381948a2..bb311094 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -695,14 +695,14 @@ async function runList(options: GlobalOptions): Promise { emit.section(formatCountLabel(group.title, group.items.length)); for (const source of group.items) { const badges: Array<{ text: string; tone?: RenderTone }> = []; - if (source.installed) { - badges.push({ text: "installed", tone: "success" }); - } if (source.authMode === "interactive") { badges.push({ text: "interactive", tone: "info" }); } else if (source.authMode === "legacy") { badges.push({ text: "legacy", tone: "warning" }); } + if (source.installed) { + badges.push({ text: "installed", tone: "success" }); + } emit.sourceTitle(source.name, badges); if (source.description) { emit.detail(source.description); From 4d4a6643f04e6e429690ebbb12a59a77964d21b0 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:25:48 -0500 Subject: [PATCH 100/249] feat(cli): simplify status grouping --- docs/transcripts/status.txt | 1 - src/cli/index.ts | 1 - test/cli/index.test.ts | 1 - 3 files changed, 3 deletions(-) diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index 93486427..bd01ad0e 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -5,7 +5,6 @@ Vana Connect status /opt/playwright/chromium-1200/chrome-linux64/chrome Personal Server: unavailable -→ Sources (4) → Needs attention (2) Shop [legacy] [manual step] Run `vana connect shop` without `--no-input` to complete the manual browser step. diff --git a/src/cli/index.ts b/src/cli/index.ts index bb311094..72237ee4 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -786,7 +786,6 @@ async function runStatus(options: GlobalOptions): Promise { ].filter((group) => group.items.length > 0); if (sourceGroups.length > 0) { emit.blank(); - emit.section(formatCountLabel("Sources", status.sources.length)); } sourceGroups.forEach((group, index) => { if (index > 0) { diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index f834cfcf..7feee095 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -284,7 +284,6 @@ describe("runCli", () => { /tmp/playwright/chrome Personal Server: unavailable - → Sources (2) → Needs attention (1) Shop [legacy] [manual step] Run \`vana connect shop\` without \`--no-input\` to complete the manual browser step. From 57d3a531dc7bf2be07e3db0b519c178ef1316497 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:28:02 -0500 Subject: [PATCH 101/249] feat(cli): align renderer palette with vana --- src/cli/render/theme.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/cli/render/theme.ts b/src/cli/render/theme.ts index 182de1b6..d55b0770 100644 --- a/src/cli/render/theme.ts +++ b/src/cli/render/theme.ts @@ -2,6 +2,12 @@ import { createColors } from "picocolors"; import type { RenderCapabilities } from "./capabilities.js"; +const VANA_ACCENT = [65, 65, 252] as const; +const VANA_SUCCESS = [0, 213, 11] as const; +const VANA_DESTRUCTIVE = [199, 54, 54] as const; +const VANA_MUTED = [112, 112, 112] as const; +const VANA_WARNING = [186, 139, 0] as const; + export interface RenderTheme { readonly accent: (text: string) => string; readonly heading: (text: string) => string; @@ -18,18 +24,18 @@ export interface RenderTheme { export function createTheme(capabilities: RenderCapabilities): RenderTheme { const colors = createColors(capabilities.color); const formatCode = (text: string) => `\`${text}\``; - const richMuted = (text: string) => rgb(115, 115, 115, text); + const richMuted = (text: string) => rgb(...VANA_MUTED, text); if (capabilities.tier === "rich") { return { - accent: (text) => rgb(65, 65, 252, text), + accent: (text) => rgb(...VANA_ACCENT, text), heading: (text) => colors.bold(text), label: (text) => richMuted(colors.bold(text)), muted: (text) => richMuted(text), dim: (text) => colors.dim(text), - success: (text) => rgb(0, 213, 11, text), - warning: (text) => rgb(186, 139, 0, text), - error: (text) => rgb(220, 38, 38, text), - info: (text) => rgb(65, 65, 252, text), + success: (text) => rgb(...VANA_SUCCESS, text), + warning: (text) => rgb(...VANA_WARNING, text), + error: (text) => rgb(...VANA_DESTRUCTIVE, text), + info: (text) => rgb(...VANA_ACCENT, text), code: (text) => colors.bold(formatCode(text)), }; } From cfa488cf927d2261b21e2c20e954d43b7cb5d215 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:32:46 -0500 Subject: [PATCH 102/249] feat(cli): polish setup and transcript surfaces --- README.md | 1 + docs/transcripts/README.md | 10 +++++++++ docs/transcripts/setup.txt | 5 +++++ scripts/capture-cli-transcripts.mjs | 4 ++++ src/cli/index.ts | 11 ++++++++-- test/cli/index.test.ts | 32 +++++++++++++++++++++++++++++ 6 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 docs/transcripts/setup.txt diff --git a/README.md b/README.md index 1f1b203f..7418b479 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ vana data show github Current reviewable transcripts: - [`status`](./docs/transcripts/status.txt) +- [`setup`](./docs/transcripts/setup.txt) - [`sources`](./docs/transcripts/sources.txt) - [`data list`](./docs/transcripts/data-list.txt) - [`data show github`](./docs/transcripts/data-show-github.txt) diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md index e156987d..6ffadd2b 100644 --- a/docs/transcripts/README.md +++ b/docs/transcripts/README.md @@ -11,3 +11,13 @@ Refresh them with: pnpm demo:vhs:fixtures pnpm demo:transcripts ``` + +Current generated surfaces include: + +- `status.txt` +- `setup.txt` +- `sources.txt` +- `data-list.txt` +- `data-show-github.txt` +- `connect-github-success.txt` +- `connect-steam-no-input.txt` diff --git a/docs/transcripts/setup.txt b/docs/transcripts/setup.txt new file mode 100644 index 00000000..85e5a54a --- /dev/null +++ b/docs/transcripts/setup.txt @@ -0,0 +1,5 @@ +Vana Connect setup + +→ Runtime +The local runtime is already installed. + /opt/playwright/chromium-1200/chrome-linux64/chrome diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index 6048508d..d0806076 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -34,6 +34,10 @@ async function main() { name: "status.txt", argv: ["vana", "status"], }, + { + name: "setup.txt", + argv: ["vana", "setup"], + }, { name: "sources.txt", argv: ["vana", "sources"], diff --git a/src/cli/index.ts b/src/cli/index.ts index 72237ee4..f0b06261 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -823,8 +823,15 @@ async function runSetup(options: GlobalOptions): Promise { const emit = createEmitter(options); const runtime = new ManagedPlaywrightRuntime(); + emit.title("Vana Connect setup"); + emit.blank(); + emit.section("Runtime"); + if (runtime.state === "installed") { - emit.info("Vana Connect runtime is already installed."); + emit.info("The local runtime is already installed."); + if (runtime.runtimePath) { + emit.detail(formatDisplayPath(runtime.runtimePath)); + } emit.event({ type: "setup-check", runtime: runtime.state }); return 0; } @@ -833,7 +840,7 @@ async function runSetup(options: GlobalOptions): Promise { const result = await runtime.ensureInstalled(Boolean(options.yes)); emit.success("Runtime ready."); if (result.logPath) { - emit.info(`Setup log: ${formatDisplayPath(result.logPath)}`); + emit.detail(`Setup log: ${formatDisplayPath(result.logPath)}`); } emit.event({ type: "setup-complete", diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 7feee095..425e7db0 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -209,6 +209,38 @@ describe("runCli", () => { }); }); + it("renders a stable human transcript for setup when already installed", async () => { + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "setup"]); + + expect(exitCode).toBe(0); + expect(stdout).toMatchInlineSnapshot(` + "Vana Connect setup + + → Runtime + The local runtime is already installed. + /tmp/playwright/chrome + " + `); + }); + + it("renders a stable human transcript for setup when installation runs", async () => { + runtimeState = "missing"; + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "setup", "--yes"]); + + expect(exitCode).toBe(0); + expect(stdout).toMatchInlineSnapshot(` + "Vana Connect setup + + → Runtime + ✓ Runtime ready. + Setup log: /tmp/logs/setup.log + " + `); + }); + it("shows nuanced source details in human status output", async () => { mockListAvailableSources.mockResolvedValue([ { From be49d5296274a2135fba7d9a2a44f2bcccd3deaa Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:35:41 -0500 Subject: [PATCH 103/249] feat(cli): slow README demo pacing --- docs/vhs/connect-success.tape | 6 +++--- docs/vhs/data-inspection.tape | 8 ++++---- docs/vhs/status-and-sources.tape | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/vhs/connect-success.tape b/docs/vhs/connect-success.tape index 21ec1ea3..91a86cec 100644 --- a/docs/vhs/connect-success.tape +++ b/docs/vhs/connect-success.tape @@ -4,11 +4,11 @@ Require vana Set Shell "bash" Set FontSize 16 Set Width 1120 -Set Height 720 -Set TypingSpeed 70ms +Set Height 680 +Set TypingSpeed 85ms Set CursorBlink false Set LoopOffset 45% Type "vana connect github" Enter -Sleep 3200ms +Sleep 3800ms diff --git a/docs/vhs/data-inspection.tape b/docs/vhs/data-inspection.tape index 4814f375..eed13453 100644 --- a/docs/vhs/data-inspection.tape +++ b/docs/vhs/data-inspection.tape @@ -4,15 +4,15 @@ Require vana Set Shell "bash" Set FontSize 16 Set Width 1120 -Set Height 720 -Set TypingSpeed 70ms +Set Height 680 +Set TypingSpeed 85ms Set CursorBlink false Set LoopOffset 40% Type "vana data list" Enter -Sleep 1400ms +Sleep 1700ms Type "vana data show github" Enter -Sleep 2200ms +Sleep 2600ms diff --git a/docs/vhs/status-and-sources.tape b/docs/vhs/status-and-sources.tape index 79ef6ec6..0e8305bf 100644 --- a/docs/vhs/status-and-sources.tape +++ b/docs/vhs/status-and-sources.tape @@ -4,15 +4,15 @@ Require vana Set Shell "bash" Set FontSize 16 Set Width 1120 -Set Height 720 -Set TypingSpeed 70ms +Set Height 680 +Set TypingSpeed 85ms Set CursorBlink false Set LoopOffset 40% Type "vana status" Enter -Sleep 1400ms +Sleep 1700ms Type "vana sources" Enter -Sleep 2200ms +Sleep 2600ms From 0fabbb5e43bc67a7914c75856c9309dbc430ff51 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:38:35 -0500 Subject: [PATCH 104/249] feat(cli): add setup next steps --- docs/transcripts/setup.txt | 4 ++++ src/cli/index.ts | 8 ++++++++ test/cli/index.test.ts | 8 ++++++++ 3 files changed, 20 insertions(+) diff --git a/docs/transcripts/setup.txt b/docs/transcripts/setup.txt index 85e5a54a..c18e6a48 100644 --- a/docs/transcripts/setup.txt +++ b/docs/transcripts/setup.txt @@ -3,3 +3,7 @@ Vana Connect setup → Runtime The local runtime is already installed. /opt/playwright/chromium-1200/chrome-linux64/chrome + +→ Next + • Check overall status with `vana status`. + • Connect a source with `vana connect`. diff --git a/src/cli/index.ts b/src/cli/index.ts index f0b06261..05d8db88 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -832,6 +832,10 @@ async function runSetup(options: GlobalOptions): Promise { if (runtime.runtimePath) { emit.detail(formatDisplayPath(runtime.runtimePath)); } + emit.blank(); + emit.section("Next"); + emit.bullet(`Check overall status with ${emit.code("vana status")}.`); + emit.bullet(`Connect a source with ${emit.code("vana connect")}.`); emit.event({ type: "setup-check", runtime: runtime.state }); return 0; } @@ -842,6 +846,10 @@ async function runSetup(options: GlobalOptions): Promise { if (result.logPath) { emit.detail(`Setup log: ${formatDisplayPath(result.logPath)}`); } + emit.blank(); + emit.section("Next"); + emit.bullet(`Check overall status with ${emit.code("vana status")}.`); + emit.bullet(`Connect a source with ${emit.code("vana connect")}.`); emit.event({ type: "setup-complete", runtime: result.runtime, diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 425e7db0..fb1702d9 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -220,6 +220,10 @@ describe("runCli", () => { → Runtime The local runtime is already installed. /tmp/playwright/chrome + + → Next + • Check overall status with \`vana status\`. + • Connect a source with \`vana connect\`. " `); }); @@ -237,6 +241,10 @@ describe("runCli", () => { → Runtime ✓ Runtime ready. Setup log: /tmp/logs/setup.log + + → Next + • Check overall status with \`vana status\`. + • Connect a source with \`vana connect\`. " `); }); From f39cd0d8a90f3e3d35e5247a255fa3b47783791a Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:40:27 -0500 Subject: [PATCH 105/249] docs(cli): sync transcript lists --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7418b479..b453bb20 100644 --- a/README.md +++ b/README.md @@ -225,6 +225,7 @@ Branch prerelease preview media: Current reviewable transcripts: - [`status`](./docs/transcripts/status.txt) +- [`setup`](./docs/transcripts/setup.txt) - [`sources`](./docs/transcripts/sources.txt) - [`data list`](./docs/transcripts/data-list.txt) - [`data show github`](./docs/transcripts/data-show-github.txt) From 666a3876af1a71b0128dc3a3fe49f8f1606e3abe Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:46:03 -0500 Subject: [PATCH 106/249] feat(cli): improve data follow-through --- README.md | 2 ++ docs/transcripts/README.md | 1 + docs/transcripts/data-path-github.txt | 1 + scripts/capture-cli-transcripts.mjs | 4 ++++ src/cli/index.ts | 16 +++++++++++--- test/cli/index.test.ts | 30 +++++++++++++++++++++++++-- 6 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 docs/transcripts/data-path-github.txt diff --git a/README.md b/README.md index b453bb20..8b34027b 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ Current reviewable transcripts: - [`sources`](./docs/transcripts/sources.txt) - [`data list`](./docs/transcripts/data-list.txt) - [`data show github`](./docs/transcripts/data-show-github.txt) +- [`data path github`](./docs/transcripts/data-path-github.txt) - [`connect github`](./docs/transcripts/connect-github-success.txt) - [`connect steam --no-input`](./docs/transcripts/connect-steam-no-input.txt) @@ -229,6 +230,7 @@ Current reviewable transcripts: - [`sources`](./docs/transcripts/sources.txt) - [`data list`](./docs/transcripts/data-list.txt) - [`data show github`](./docs/transcripts/data-show-github.txt) +- [`data path github`](./docs/transcripts/data-path-github.txt) - [`connect github`](./docs/transcripts/connect-github-success.txt) - [`connect steam --no-input`](./docs/transcripts/connect-steam-no-input.txt) diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md index 6ffadd2b..e4b68471 100644 --- a/docs/transcripts/README.md +++ b/docs/transcripts/README.md @@ -19,5 +19,6 @@ Current generated surfaces include: - `sources.txt` - `data-list.txt` - `data-show-github.txt` +- `data-path-github.txt` - `connect-github-success.txt` - `connect-steam-no-input.txt` diff --git a/docs/transcripts/data-path-github.txt b/docs/transcripts/data-path-github.txt new file mode 100644 index 00000000..2964daa8 --- /dev/null +++ b/docs/transcripts/data-path-github.txt @@ -0,0 +1 @@ +~/.dataconnect/last-result.json diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index d0806076..84617c49 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -50,6 +50,10 @@ async function main() { name: "data-show-github.txt", argv: ["vana", "data", "show", "github"], }, + { + name: "data-path-github.txt", + argv: ["vana", "data", "path", "github"], + }, { name: "connect-github-success.txt", argv: ["vana", "connect", "github"], diff --git a/src/cli/index.ts b/src/cli/index.ts index 05d8db88..9c0fc655 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -952,6 +952,9 @@ async function runDataShow( const state = await readCliState(); const record = state.sources[source]; const resultPath = record?.lastResultPath; + const datasetCount = Object.values(state.sources).filter((entry) => + Boolean(entry?.lastResultPath), + ).length; const emit = createEmitter(options); if (!resultPath) { @@ -1015,7 +1018,14 @@ async function runDataShow( emit.bullet( `Print the path with ${emit.code(`vana data path ${source}`)}.`, ); - emit.bullet(`Inspect other datasets with ${emit.code("vana data list")}.`); + emit.bullet( + `Reconnect ${displaySource(source, sourceLabels)} with ${emit.code(`vana connect ${source}`)}.`, + ); + if (datasetCount > 1) { + emit.bullet( + `Inspect other datasets with ${emit.code("vana data list")}.`, + ); + } emit.bullet(`Check overall status with ${emit.code("vana status")}.`); return 0; } catch (error) { @@ -1047,12 +1057,12 @@ async function runDataPath( error: "dataset_not_found", source, name: displaySource(source, sourceLabels), - message: `No collected dataset found for ${displaySource(source, sourceLabels)}.`, + message: `No collected dataset found for ${displaySource(source, sourceLabels)}. Run \`vana connect ${source}\` first.`, })}\n`, ); } else { createEmitter(options).info( - `No collected dataset found for ${displaySource(source, sourceLabels)}.`, + `No collected dataset found for ${displaySource(source, sourceLabels)}. Run \`vana connect ${source}\` first.`, ); } return 1; diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index fb1702d9..34a635b4 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -481,12 +481,37 @@ describe("runCli", () => { → Next • Print the path with \`vana data path github\`. - • Inspect other datasets with \`vana data list\`. + • Reconnect GitHub with \`vana connect github\`. • Check overall status with \`vana status\`. " `); }); + it("renders a stable human transcript for data path", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + lastRunAt: "2026-03-14T13:10:03.677Z", + dataState: "collected_local", + lastResultPath: "/tmp/.dataconnect/github-result.json", + }, + }, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "data", "path", "github"]); + + expect(exitCode).toBe(0); + expect(stdout).toBe("/tmp/.dataconnect/github-result.json\n"); + }); + it("orders collected datasets by most recent run first", async () => { mockListAvailableSources.mockResolvedValue([ { id: "github", name: "GitHub", authMode: "interactive" }, @@ -659,7 +684,8 @@ describe("runCli", () => { error: "dataset_not_found", source: "github", name: "GitHub", - message: "No collected dataset found for GitHub.", + message: + "No collected dataset found for GitHub. Run `vana connect github` first.", }); }); From de18a9ad8b2a2dd932a9f15e4f92b0f125bf7b73 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:49:07 -0500 Subject: [PATCH 107/249] feat(cli): harden demos and status entry --- scripts/render-vhs.mjs | 42 +++++++++++++++++++++++++++++++++++++----- src/cli/index.ts | 26 ++++++++++++++++++-------- test/cli/index.test.ts | 29 +++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 13 deletions(-) diff --git a/scripts/render-vhs.mjs b/scripts/render-vhs.mjs index f5c1af45..d375a0b5 100644 --- a/scripts/render-vhs.mjs +++ b/scripts/render-vhs.mjs @@ -21,6 +21,7 @@ const tapes = [ "data-inspection.tape", "connect-success.tape", ]; +const DEFAULT_TAPE_TIMEOUT_MS = 120_000; function main() { prepareFixtures(); @@ -38,6 +39,7 @@ function main() { if (fs.existsSync(outputPath)) { fs.rmSync(outputPath, { force: true }); } + process.stdout.write(`[vhs] rendering ${tape}\n`); runTape(runner, tapePath, env); if (!fs.existsSync(outputPath)) { throw new Error( @@ -105,11 +107,22 @@ function resolveRunner({ tempRoot, binDir, connectorsDir }) { } function runTape(runner, tapePath, env) { - execFileSync(runner.command, [...runner.args, tapePath], { - cwd: repoRoot, - env, - stdio: "inherit", - }); + const timeout = resolveTapeTimeout(); + try { + execFileSync(runner.command, [...runner.args, tapePath], { + cwd: repoRoot, + env, + stdio: "inherit", + timeout, + }); + } catch (error) { + if (isTimeoutError(error)) { + throw new Error( + `VHS timed out after ${timeout}ms while rendering ${path.basename(tapePath)}.`, + ); + } + throw error; + } } function prepareRenderEnv(connectorsDir) { @@ -175,6 +188,25 @@ function resolveDataConnectorsDir() { return fs.existsSync(siblingRepo) ? siblingRepo : null; } +function resolveTapeTimeout() { + const raw = process.env.VANA_VHS_TIMEOUT_MS; + if (!raw) { + return DEFAULT_TAPE_TIMEOUT_MS; + } + + const value = Number(raw); + return Number.isFinite(value) && value > 0 ? value : DEFAULT_TAPE_TIMEOUT_MS; +} + +function isTimeoutError(error) { + return ( + typeof error === "object" && + error !== null && + "code" in error && + (error.code === "ETIMEDOUT" || error.signal === "SIGTERM") + ); +} + try { main(); } catch (error) { diff --git a/src/cli/index.ts b/src/cli/index.ts index 9c0fc655..f6bc83a7 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -808,7 +808,11 @@ async function runStatus(options: GlobalOptions): Promise { } } }); - const nextSteps = buildStatusNextSteps(status.sources, sourceLabels); + const nextSteps = buildStatusNextSteps( + status.sources, + sourceLabels, + status.runtime, + ); if (nextSteps.length > 0) { emit.blank(); emit.section("Next"); @@ -1356,6 +1360,7 @@ function formatSourceStatusDetails(source: SourceStatus): string[] { function buildStatusNextSteps( sources: SourceStatus[], sourceLabels: SourceLabelMap = {}, + runtime: CliStatus["runtime"] = "unknown", ): string[] { const nextSteps: string[] = []; const highestPriority = [...sources].sort(compareSourceStatusOrder)[0]; @@ -1372,23 +1377,28 @@ function buildStatusNextSteps( ? displaySource(highestPriority.source, sourceLabels) : null; - if (highestPriority?.lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { + if (!highestPriority) { + if (runtime === "installed") { + nextSteps.push("Connect your first source with `vana connect`."); + } else if (runtime === "missing") { + nextSteps.push("Install the local runtime with `vana setup`."); + } + } else if (highestPriority.lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { nextSteps.push( `Continue ${highestPriorityLabel} with \`vana connect ${highestPriority.source}\`.`, ); - } else if (highestPriority?.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { + } else if (highestPriority.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { nextSteps.push( `Complete the manual browser step for ${highestPriorityLabel} with \`vana connect ${highestPriority.source}\`.`, ); } else if ( - highestPriority?.lastRunOutcome === CliOutcomeStatus.CONNECTOR_UNAVAILABLE + highestPriority.lastRunOutcome === CliOutcomeStatus.CONNECTOR_UNAVAILABLE ) { nextSteps.push("Browse available sources with `vana sources`."); } else if ( - highestPriority && - (highestPriority.dataState === "collected_local" || - highestPriority.dataState === "ingested_personal_server" || - highestPriority.dataState === "ingest_failed") + highestPriority.dataState === "collected_local" || + highestPriority.dataState === "ingested_personal_server" || + highestPriority.dataState === "ingest_failed" ) { if (connectedSources.length > 1) { nextSteps.push("Review your collected data with `vana data list`."); diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 34a635b4..71fe1bd4 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -342,6 +342,35 @@ describe("runCli", () => { `); }); + it("guides first run from status when the runtime is already installed", async () => { + mockListAvailableSources.mockResolvedValue([]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: {}, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "status"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain("Connect your first source with `vana connect`."); + }); + + it("guides first run from status when the runtime is missing", async () => { + runtimeState = "missing"; + mockListAvailableSources.mockResolvedValue([]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: {}, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "status"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain("Install the local runtime with `vana setup`."); + }); + it("fails cleanly in json mode when input is required", async () => { runConnectorEvents = [ { From d643a430e46835cba95d93bb75b0cf1d687ef0ba Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:51:11 -0500 Subject: [PATCH 108/249] feat(cli): label key status and setup paths --- docs/transcripts/data-show-github.txt | 1 + docs/transcripts/setup.txt | 2 +- docs/transcripts/status.txt | 6 +++--- src/cli/index.ts | 8 ++++---- test/cli/index.test.ts | 6 +++--- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/docs/transcripts/data-show-github.txt b/docs/transcripts/data-show-github.txt index c4bf9d48..1856e18c 100644 --- a/docs/transcripts/data-show-github.txt +++ b/docs/transcripts/data-show-github.txt @@ -11,5 +11,6 @@ GitHub data → Next • Print the path with `vana data path github`. + • Reconnect GitHub with `vana connect github`. • Inspect other datasets with `vana data list`. • Check overall status with `vana status`. diff --git a/docs/transcripts/setup.txt b/docs/transcripts/setup.txt index c18e6a48..aaad25e8 100644 --- a/docs/transcripts/setup.txt +++ b/docs/transcripts/setup.txt @@ -2,7 +2,7 @@ Vana Connect setup → Runtime The local runtime is already installed. - /opt/playwright/chromium-1200/chrome-linux64/chrome + Browser: /opt/playwright/chromium-1200/chrome-linux64/chrome → Next • Check overall status with `vana status`. diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index bd01ad0e..9ba9fd05 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -2,7 +2,7 @@ Vana Connect status → Environment Runtime: installed - /opt/playwright/chromium-1200/chrome-linux64/chrome + Browser: /opt/playwright/chromium-1200/chrome-linux64/chrome Personal Server: unavailable → Needs attention (2) @@ -18,11 +18,11 @@ GitHub [interactive] [local] Inspect the latest local dataset with `vana data show github`. Saved browser session available for faster reconnects. Updated: Mar 14, 2026, 8:10 AM - ~/.dataconnect/last-result.json + Path: ~/.dataconnect/last-result.json Spotify [interactive] [local] Inspect the latest local dataset with `vana data show spotify`. Updated: Mar 13, 2026, 4:23 PM - ~/.dataconnect/spotify-result.json + Path: ~/.dataconnect/spotify-result.json → Next • Complete the manual browser step for Shop with `vana connect shop`. diff --git a/src/cli/index.ts b/src/cli/index.ts index f6bc83a7..f0f3d81b 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -750,7 +750,7 @@ async function runStatus(options: GlobalOptions): Promise { emit.section("Environment"); emit.keyValue("Runtime", status.runtime, toneForRuntime(status.runtime)); if (status.runtimePath) { - emit.detail(formatDisplayPath(status.runtimePath)); + emit.keyValue("Browser", formatDisplayPath(status.runtimePath), "muted"); } emit.keyValue( "Personal Server", @@ -834,7 +834,7 @@ async function runSetup(options: GlobalOptions): Promise { if (runtime.state === "installed") { emit.info("The local runtime is already installed."); if (runtime.runtimePath) { - emit.detail(formatDisplayPath(runtime.runtimePath)); + emit.keyValue("Browser", formatDisplayPath(runtime.runtimePath), "muted"); } emit.blank(); emit.section("Next"); @@ -1351,7 +1351,7 @@ function formatSourceStatusDetails(source: SourceStatus): string[] { } if (source.lastResultPath && source.dataState !== "none") { - details.push(formatDisplayPath(source.lastResultPath)); + details.push(`Path: ${formatDisplayPath(source.lastResultPath)}`); } return details; @@ -1360,7 +1360,7 @@ function formatSourceStatusDetails(source: SourceStatus): string[] { function buildStatusNextSteps( sources: SourceStatus[], sourceLabels: SourceLabelMap = {}, - runtime: CliStatus["runtime"] = "unknown", + runtime: CliStatus["runtime"] = "unhealthy", ): string[] { const nextSteps: string[] = []; const highestPriority = [...sources].sort(compareSourceStatusOrder)[0]; diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 71fe1bd4..2aa10e72 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -219,7 +219,7 @@ describe("runCli", () => { → Runtime The local runtime is already installed. - /tmp/playwright/chrome + Browser: /tmp/playwright/chrome → Next • Check overall status with \`vana status\`. @@ -321,7 +321,7 @@ describe("runCli", () => { → Environment Runtime: installed - /tmp/playwright/chrome + Browser: /tmp/playwright/chrome Personal Server: unavailable → Needs attention (1) @@ -334,7 +334,7 @@ describe("runCli", () => { Inspect the latest local dataset with \`vana data show github\`. Saved browser session available for faster reconnects. Updated: - /tmp/.dataconnect/github-result.json + Path: /tmp/.dataconnect/github-result.json → Next • Complete the manual browser step for Shop with \`vana connect shop\`. From 3f42788e2251981b6c081b7032751f22622f81b8 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:53:20 -0500 Subject: [PATCH 109/249] feat(cli): make next steps more actionable --- docs/transcripts/data-list.txt | 4 ++-- docs/transcripts/sources.txt | 4 ++-- src/cli/index.ts | 21 +++++++++++++++++---- test/cli/index.test.ts | 8 ++++---- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt index 1729654f..2fd28b8b 100644 --- a/docs/transcripts/data-list.txt +++ b/docs/transcripts/data-list.txt @@ -14,5 +14,5 @@ Spotify [local] Path: ~/.dataconnect/spotify-result.json → Next - • Inspect one with `vana data show `. - • Print a path with `vana data path `. + • Inspect GitHub with `vana data show github`. + • Or print its path with `vana data path github`. diff --git a/docs/transcripts/sources.txt b/docs/transcripts/sources.txt index 124eac63..f5c97841 100644 --- a/docs/transcripts/sources.txt +++ b/docs/transcripts/sources.txt @@ -11,5 +11,5 @@ Shop [legacy] [installed] Exports your Shop app order history using Playwright browser automation. → Next - • Browse the guided picker with `vana connect`. - • Or connect one directly with `vana connect `. + • Start with GitHub using `vana connect github`. + • Or browse the guided picker with `vana connect`. diff --git a/src/cli/index.ts b/src/cli/index.ts index f0f3d81b..179c419c 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -712,11 +712,18 @@ async function runList(options: GlobalOptions): Promise { if (groups.length === 0) { emit.info("No sources are available right now."); } else { + const recommendedSource = + enrichedSources.find((source) => source.authMode !== "legacy") ?? + enrichedSources[0]; emit.blank(); emit.section("Next"); - emit.bullet(`Browse the guided picker with ${emit.code("vana connect")}.`); emit.bullet( - `Or connect one directly with ${emit.code("vana connect ")}.`, + `Start with ${recommendedSource.name} using ${emit.code( + `vana connect ${recommendedSource.id}`, + )}.`, + ); + emit.bullet( + `Or browse the guided picker with ${emit.code("vana connect")}.`, ); } return 0; @@ -943,8 +950,14 @@ async function runDataList(options: GlobalOptions): Promise { }); emit.blank(); emit.section("Next"); - emit.bullet(`Inspect one with ${emit.code("vana data show ")}.`); - emit.bullet(`Print a path with ${emit.code("vana data path ")}.`); + emit.bullet( + `Inspect ${datasetRecords[0].name ?? displaySource(datasetRecords[0].source)} with ${emit.code( + `vana data show ${datasetRecords[0].source}`, + )}.`, + ); + emit.bullet( + `Or print its path with ${emit.code(`vana data path ${datasetRecords[0].source}`)}.`, + ); return 0; } diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 2aa10e72..b7834716 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -648,8 +648,8 @@ describe("runCli", () => { Path: /tmp/.dataconnect/spotify-result.json → Next - • Inspect one with \`vana data show \`. - • Print a path with \`vana data path \`. + • Inspect GitHub with \`vana data show github\`. + • Or print its path with \`vana data path github\`. " `); }); @@ -797,8 +797,8 @@ describe("runCli", () => { Exports ChatGPT data. → Next - • Browse the guided picker with \`vana connect\`. - • Or connect one directly with \`vana connect \`. + • Start with GitHub using \`vana connect github\`. + • Or browse the guided picker with \`vana connect\`. " `); }); From 83a6af4c83b203df639cff09430b20f19d5cb0b9 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:54:31 -0500 Subject: [PATCH 110/249] feat(cli): recommend a concrete source after setup --- docs/transcripts/setup.txt | 2 +- src/cli/index.ts | 24 ++++++++++++++++++++++-- test/cli/index.test.ts | 19 +++++++++++++++++-- 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/docs/transcripts/setup.txt b/docs/transcripts/setup.txt index aaad25e8..e8a84c9a 100644 --- a/docs/transcripts/setup.txt +++ b/docs/transcripts/setup.txt @@ -6,4 +6,4 @@ The local runtime is already installed. → Next • Check overall status with `vana status`. - • Connect a source with `vana connect`. + • Connect GitHub with `vana connect github`. diff --git a/src/cli/index.ts b/src/cli/index.ts index 179c419c..9d062535 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -833,6 +833,10 @@ async function runStatus(options: GlobalOptions): Promise { async function runSetup(options: GlobalOptions): Promise { const emit = createEmitter(options); const runtime = new ManagedPlaywrightRuntime(); + const registrySources = await loadRegistrySources(); + const suggestedSource = + registrySources.find((source) => source.authMode !== "legacy") ?? + registrySources[0]; emit.title("Vana Connect setup"); emit.blank(); @@ -846,7 +850,7 @@ async function runSetup(options: GlobalOptions): Promise { emit.blank(); emit.section("Next"); emit.bullet(`Check overall status with ${emit.code("vana status")}.`); - emit.bullet(`Connect a source with ${emit.code("vana connect")}.`); + emit.bullet(formatSetupConnectStep(emit, suggestedSource)); emit.event({ type: "setup-check", runtime: runtime.state }); return 0; } @@ -860,7 +864,7 @@ async function runSetup(options: GlobalOptions): Promise { emit.blank(); emit.section("Next"); emit.bullet(`Check overall status with ${emit.code("vana status")}.`); - emit.bullet(`Connect a source with ${emit.code("vana connect")}.`); + emit.bullet(formatSetupConnectStep(emit, suggestedSource)); emit.event({ type: "setup-complete", runtime: result.runtime, @@ -1432,6 +1436,22 @@ function buildStatusNextSteps( return [...new Set(nextSteps)]; } +function formatSetupConnectStep( + emit: Pick, + source: + | { + id: string; + name: string; + } + | undefined, +): string { + if (source) { + return `Connect ${source.name} with ${emit.code(`vana connect ${source.id}`)}.`; + } + + return `Connect a source with ${emit.code("vana connect")}.`; +} + function normalizeArgv(argv: string[]): string[] { if ( argv[2] === "connect" && diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index b7834716..8f8c14de 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -210,6 +210,14 @@ describe("runCli", () => { }); it("renders a stable human transcript for setup when already installed", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + }, + ]); + const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "setup"]); @@ -223,13 +231,20 @@ describe("runCli", () => { → Next • Check overall status with \`vana status\`. - • Connect a source with \`vana connect\`. + • Connect GitHub with \`vana connect github\`. " `); }); it("renders a stable human transcript for setup when installation runs", async () => { runtimeState = "missing"; + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + }, + ]); const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "setup", "--yes"]); @@ -244,7 +259,7 @@ describe("runCli", () => { → Next • Check overall status with \`vana status\`. - • Connect a source with \`vana connect\`. + • Connect GitHub with \`vana connect github\`. " `); }); From cdaf0f7385fe12bf3052f0fa0ca2f9299371ddb2 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 15:55:28 -0500 Subject: [PATCH 111/249] feat(cli): prioritize data inspection after connect --- docs/transcripts/connect-github-success.txt | 4 ++-- src/cli/index.ts | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/transcripts/connect-github-success.txt b/docs/transcripts/connect-github-success.txt index 1b252aa2..177b0f32 100644 --- a/docs/transcripts/connect-github-success.txt +++ b/docs/transcripts/connect-github-success.txt @@ -28,5 +28,5 @@ Collecting your data... Run log: ~/.dataconnect/logs/run-github-.log → Next - • Run `vana status` - • Or inspect the data with `vana data show github` + • Inspect the data with `vana data show github` + • Or check overall status with `vana status` diff --git a/src/cli/index.ts b/src/cli/index.ts index 9d062535..2d58a761 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -499,7 +499,7 @@ async function runConnect( }); const resultSummary = await readResultSummary(resultPath); - const connectCommand = emit.code("vana status"); + const statusCommand = emit.code("vana status"); const dataCommand = emit.code(`vana data show ${source}`); const successSummary = finalStatus === CliOutcomeStatus.CONNECTED_AND_INGESTED @@ -547,8 +547,8 @@ async function runConnect( emit.blank(); emit.section("Next"); - emit.bullet(`Run ${connectCommand}`); - emit.bullet(`Or inspect the data with ${dataCommand}`); + emit.bullet(`Inspect the data with ${dataCommand}`); + emit.bullet(`Or check overall status with ${statusCommand}`); emit.event({ type: "outcome", status: finalStatus, From 7122efa21607e47541355906a95dfde3eedec24c Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 16:01:17 -0500 Subject: [PATCH 112/249] feat(cli): sharpen connect and status summaries --- docs/transcripts/connect-github-success.txt | 6 ++-- docs/transcripts/status.txt | 1 + src/cli/index.ts | 36 +++++++++++++++------ test/cli/index.test.ts | 8 ++--- 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/docs/transcripts/connect-github-success.txt b/docs/transcripts/connect-github-success.txt index 177b0f32..63eddbd9 100644 --- a/docs/transcripts/connect-github-success.txt +++ b/docs/transcripts/connect-github-success.txt @@ -22,9 +22,9 @@ Collecting your data... • Starred: 0 → Saved locally - • ~/.dataconnect/last-result.json - Saved browser session available for faster reconnects. - No Personal Server is available right now, so this run stayed local. + Path: ~/.dataconnect/last-result.json + Session: Saved for faster reconnects. + Server: Unavailable, so this run stayed local. Run log: ~/.dataconnect/logs/run-github-.log → Next diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index 9ba9fd05..0fd3ff34 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -26,3 +26,4 @@ Spotify [interactive] [local] → Next • Complete the manual browser step for Shop with `vana connect shop`. + • Review the data you already collected with `vana data list`. diff --git a/src/cli/index.ts b/src/cli/index.ts index 2d58a761..81ffd233 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -520,29 +520,39 @@ async function runConnect( emit.blank(); if (finalStatus === CliOutcomeStatus.CONNECTED_AND_INGESTED) { emit.section("Synced"); - emit.bullet("Your data is now available in your Personal Server."); + emit.keyValue( + "Server", + "Your data is now available in your Personal Server.", + "success", + ); } else { emit.section("Saved locally"); - emit.bullet(formatDisplayPath(resultPath)); - emit.detail("Saved browser session available for faster reconnects."); + emit.keyValue("Path", formatDisplayPath(resultPath), "muted"); + emit.keyValue("Session", "Saved for faster reconnects.", "muted"); if ( finalStatus === CliOutcomeStatus.INGEST_FAILED && ingestFailureMessage ) { - emit.detail(`Personal Server sync failed: ${ingestFailureMessage}`); + emit.keyValue( + "Server", + `Sync failed: ${ingestFailureMessage}`, + "warning", + ); } else if (target.state !== "available") { - emit.detail( - "No Personal Server is available right now, so this run stayed local.", + emit.keyValue( + "Server", + "Unavailable, so this run stayed local.", + "muted", ); } } if (runLogPath) { - emit.detail(`Run log: ${formatDisplayPath(runLogPath)}`); + emit.keyValue("Run log", formatDisplayPath(runLogPath), "muted"); } else if (fetchLogPath) { - emit.detail(`Fetch log: ${formatDisplayPath(fetchLogPath)}`); + emit.keyValue("Fetch log", formatDisplayPath(fetchLogPath), "muted"); } else if (setupLogPath) { - emit.detail(`Setup log: ${formatDisplayPath(setupLogPath)}`); + emit.keyValue("Setup log", formatDisplayPath(setupLogPath), "muted"); } emit.blank(); @@ -1426,6 +1436,14 @@ function buildStatusNextSteps( } } + if (connectedSources.length > 0 && needsAttention) { + nextSteps.push( + connectedSources.length > 1 + ? "Review the data you already collected with `vana data list`." + : `Inspect the data you already collected with \`vana data show ${connectedSources[0].source}\`.`, + ); + } + if ( sources.some((source) => source.installed || source.lastRunOutcome) && (!needsAttention || connectedSources.length === 0) diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 8f8c14de..1ed283e2 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -353,6 +353,7 @@ describe("runCli", () => { → Next • Complete the manual browser step for Shop with \`vana connect shop\`. + • Inspect the data you already collected with \`vana data show github\`. " `); }); @@ -1107,9 +1108,8 @@ describe("runCli", () => { ); expect(stdout).toContain("Saved locally"); expect(stdout).toContain("/tmp/.dataconnect/github-result.json"); - expect(stdout).toContain( - "Saved browser session available for faster reconnects.", - ); + expect(stdout).toContain("Session: Saved for faster reconnects."); + expect(stdout).toContain("Server: Unavailable, so this run stayed local."); expect(stdout).toContain("Next"); expect(stdout).toContain("vana data show github"); }); @@ -1153,7 +1153,7 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(stdout).toContain("Saved locally"); - expect(stdout).toContain("Personal Server sync failed: server exploded"); + expect(stdout).toContain("Server: Sync failed: server exploded"); expect(mockUpdateSourceState).toHaveBeenLastCalledWith( "github", expect.objectContaining({ From 77fb65ffb5bfb430da609f100d6972ba4401324a Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 16:02:27 -0500 Subject: [PATCH 113/249] feat(cli): align saved-session wording across status --- docs/transcripts/status.txt | 2 +- src/cli/index.ts | 2 +- test/cli/index.test.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index 0fd3ff34..fa366a72 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -16,7 +16,7 @@ Steam [unavailable] → Connected (2) GitHub [interactive] [local] Inspect the latest local dataset with `vana data show github`. - Saved browser session available for faster reconnects. + Session: Saved for faster reconnects. Updated: Mar 14, 2026, 8:10 AM Path: ~/.dataconnect/last-result.json Spotify [interactive] [local] diff --git a/src/cli/index.ts b/src/cli/index.ts index 81ffd233..30b8277a 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1356,7 +1356,7 @@ function formatSourceStatusDetails(source: SourceStatus): string[] { source.lastRunOutcome === CliOutcomeStatus.CONNECTED_AND_INGESTED || source.lastRunOutcome === CliOutcomeStatus.INGEST_FAILED) ) { - details.push("Saved browser session available for faster reconnects."); + details.push("Session: Saved for faster reconnects."); } if (source.lastRunOutcome === CliOutcomeStatus.CONNECTED_AND_INGESTED) { diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 1ed283e2..eb1e072b 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -347,7 +347,7 @@ describe("runCli", () => { → Connected (1) GitHub [interactive] [local] Inspect the latest local dataset with \`vana data show github\`. - Saved browser session available for faster reconnects. + Session: Saved for faster reconnects. Updated: Path: /tmp/.dataconnect/github-result.json From 96f78f702824a58bd08bd72b02a4f4dd2d3ea8e5 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 16:12:19 -0500 Subject: [PATCH 114/249] fix(cli): handle legacy no-input flows cleanly --- README.md | 2 + docs/transcripts/README.md | 1 + docs/transcripts/connect-shop-no-input.txt | 15 +++++++ scripts/capture-cli-transcripts.mjs | 5 +++ src/cli/index.ts | 18 ++++++-- src/runtime/playwright/in-process-run.ts | 51 +++++++++++++++++----- test/runtime/in-process-run.test.ts | 33 ++++++++++++++ 7 files changed, 110 insertions(+), 15 deletions(-) create mode 100644 docs/transcripts/connect-shop-no-input.txt diff --git a/README.md b/README.md index 8b34027b..8db1643c 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ Current reviewable transcripts: - [`data show github`](./docs/transcripts/data-show-github.txt) - [`data path github`](./docs/transcripts/data-path-github.txt) - [`connect github`](./docs/transcripts/connect-github-success.txt) +- [`connect shop --no-input`](./docs/transcripts/connect-shop-no-input.txt) - [`connect steam --no-input`](./docs/transcripts/connect-steam-no-input.txt) ## What problem this solves @@ -232,6 +233,7 @@ Current reviewable transcripts: - [`data show github`](./docs/transcripts/data-show-github.txt) - [`data path github`](./docs/transcripts/data-path-github.txt) - [`connect github`](./docs/transcripts/connect-github-success.txt) +- [`connect shop --no-input`](./docs/transcripts/connect-shop-no-input.txt) - [`connect steam --no-input`](./docs/transcripts/connect-steam-no-input.txt) To seed the fixture home used by the first tapes: diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md index e4b68471..268b62c8 100644 --- a/docs/transcripts/README.md +++ b/docs/transcripts/README.md @@ -21,4 +21,5 @@ Current generated surfaces include: - `data-show-github.txt` - `data-path-github.txt` - `connect-github-success.txt` +- `connect-shop-no-input.txt` - `connect-steam-no-input.txt` diff --git a/docs/transcripts/connect-shop-no-input.txt b/docs/transcripts/connect-shop-no-input.txt new file mode 100644 index 00000000..fa723c47 --- /dev/null +++ b/docs/transcripts/connect-shop-no-input.txt @@ -0,0 +1,15 @@ +Connect Shop + +→ Preparing +Finding a connector for Shop... +Connector ready. +Exports your Shop app order history using Playwright browser automation. + +→ Connecting +Connecting to Shop... +Collecting your data... +This source needs a manual browser step, but prompting is disabled in --no-input mode. + +→ Next + • Run `vana connect shop` without `--no-input`. + Run log: ~/.dataconnect/logs/run-shop-.log diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index 84617c49..ead59417 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -58,6 +58,11 @@ async function main() { name: "connect-github-success.txt", argv: ["vana", "connect", "github"], }, + { + name: "connect-shop-no-input.txt", + argv: ["vana", "connect", "shop", "--no-input"], + allowFailure: true, + }, { name: "connect-steam-no-input.txt", argv: ["vana", "connect", "steam", "--no-input"], diff --git a/src/cli/index.ts b/src/cli/index.ts index 30b8277a..65382d03 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -157,6 +157,7 @@ async function runConnect( let setupLogPath: string | undefined; let fetchLogPath: string | undefined; let runLogPath: string | undefined; + let terminalExitCode: number | null = null; try { emit.title(`Connect ${displayName}`); @@ -336,6 +337,10 @@ async function runConnect( runLogPath = event.logPath; } + if (terminalExitCode !== null) { + continue; + } + if (event.type === "needs-input") { await updateSourceState(resolution.source, { lastRunAt: new Date().toISOString(), @@ -357,7 +362,8 @@ async function runConnect( `Run ${emit.code(`vana connect ${source}`)} without ${emit.code("--no-input")}.`, ); } - return 1; + terminalExitCode = 1; + continue; } if (event.type === "progress-update") { @@ -390,7 +396,8 @@ async function runConnect( if (event.logPath) { emit.info(`Run log: ${formatDisplayPath(event.logPath)}`); } - return 1; + terminalExitCode = 1; + continue; } if (event.type === "headed-required") { @@ -430,7 +437,8 @@ async function runConnect( status: CliOutcomeStatus.LEGACY_AUTH, source: resolution.source, }); - return 1; + terminalExitCode = 1; + continue; } if (event.type === "collection-complete" && event.resultPath) { @@ -466,6 +474,10 @@ async function runConnect( } } + if (terminalExitCode !== null) { + return terminalExitCode; + } + if (!collectedResult) { await updateSourceState(resolution.source, { connectorInstalled: true, diff --git a/src/runtime/playwright/in-process-run.ts b/src/runtime/playwright/in-process-run.ts index 3d299121..69935a06 100644 --- a/src/runtime/playwright/in-process-run.ts +++ b/src/runtime/playwright/in-process-run.ts @@ -45,6 +45,7 @@ type RunState = { hasResult: boolean; resultPath: string | null; cookies: Cookie[]; + legacyAuthTriggered: boolean; }; class NeedsInputError extends Error { @@ -282,6 +283,7 @@ export function startInProcessConnectorRun({ hasResult: false, resultPath: null, cookies: [], + legacyAuthTriggered: false, }; activeRunState = runState; @@ -335,6 +337,9 @@ export function startInProcessConnectorRun({ }); const connectorFunction = buildConnectorFunction(connectorCode); const result = await connectorFunction.call(null, pageApi); + if (runState.legacyAuthTriggered) { + return; + } if (!runState.hasResult && result != null) { const exportData = @@ -384,18 +389,20 @@ export function startInProcessConnectorRun({ source: request.source, logPath, async *events(): AsyncGenerator { - while (!settled || queue.length > 0) { - if (queue.length === 0) { - await new Promise((resolve) => { - resolveQueue = resolve; - }); - continue; - } + try { + while (!settled || queue.length > 0) { + if (queue.length === 0) { + await new Promise((resolve) => { + resolveQueue = resolve; + }); + continue; + } - yield queue.shift() as RuntimeEvent; + yield queue.shift() as RuntimeEvent; + } + } finally { + await runPromise.catch(() => {}); } - - await runPromise; }, stop() { void (activeRunState?.context ?? activeContext)?.close().catch(() => {}); @@ -613,7 +620,17 @@ function createPageApi({ ) => { writeLog(`[prompt] ${message}`); if (request.noInput) { - throw new LegacyAuthError("promptUser"); + if (!runState.legacyAuthTriggered) { + pushEvent({ + type: "legacy-auth", + source: request.source, + message: + "This source needs a manual browser step, but prompting is disabled in --no-input mode.", + logPath, + }); + } + runState.legacyAuthTriggered = true; + return; } await ensureHeadedBrowser( @@ -702,7 +719,17 @@ function createPageApi({ showBrowser: async (url?: string) => { if (request.noInput) { - throw new LegacyAuthError("showBrowser"); + if (!runState.legacyAuthTriggered) { + pushEvent({ + type: "legacy-auth", + source: request.source, + message: + "This source needs a manual browser step, but prompting is disabled in --no-input mode.", + logPath, + }); + } + runState.legacyAuthTriggered = true; + return { headed: false }; } await ensureHeadedBrowser( diff --git a/test/runtime/in-process-run.test.ts b/test/runtime/in-process-run.test.ts index 41ef9734..41a2f042 100644 --- a/test/runtime/in-process-run.test.ts +++ b/test/runtime/in-process-run.test.ts @@ -162,6 +162,39 @@ describe("startInProcessConnectorRun", () => { ); }); + it("emits legacy-auth for showBrowser connectors in no-input mode", async () => { + createFakeRuntime(); + const connectorPath = await writeConnector(` +(async () => { + await page.showBrowser("https://shop.app/account/order-history"); +})(); +`); + + const { startInProcessConnectorRun } = + await import("../../src/runtime/playwright/in-process-run.js"); + + const handle = startInProcessConnectorRun({ + request: { + connectorPath, + source: "shop", + noInput: true, + }, + logPath: path.join(os.tmpdir(), "vana-connect-showbrowser-legacy.log"), + }); + + const events = []; + for await (const event of handle.events()) { + events.push(event); + } + + expect(events).toEqual( + expect.arrayContaining([ + expect.objectContaining({ type: "run-started", source: "shop" }), + expect.objectContaining({ type: "legacy-auth", source: "shop" }), + ]), + ); + }); + it("supports headed manual flows for legacy connectors in human mode", async () => { createFakeRuntime(); const previousDisplay = process.env.DISPLAY; From 0130f0c015d7069c4558c0bb31ee6b94cf2d1e3e Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 16:13:46 -0500 Subject: [PATCH 115/249] chore(cli): add canonical local preflight --- docs/CLI-EXECUTION-PLAYBOOK.md | 5 +++++ package.json | 1 + 2 files changed, 6 insertions(+) diff --git a/docs/CLI-EXECUTION-PLAYBOOK.md b/docs/CLI-EXECUTION-PLAYBOOK.md index 113c794f..23de32e7 100644 --- a/docs/CLI-EXECUTION-PLAYBOOK.md +++ b/docs/CLI-EXECUTION-PLAYBOOK.md @@ -134,6 +134,11 @@ Tasks: - transcript capture - VHS/demo verification - release asset assertions + +Current canonical local CLI preflight: + +- `pnpm preflight:cli` + 2. Maintain one watcher-driven post-publish flow that handles: - CI/canary polling - Homebrew sync diff --git a/package.json b/package.json index fd19cd26..f881924c 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,7 @@ "format": "prettier --write .", "format:check": "prettier --check .", "package-managers:generate": "node ./scripts/generate-package-manager-metadata.mjs", + "preflight:cli": "pnpm test test/runtime/in-process-run.test.ts test/cli/index.test.ts && pnpm build && pnpm format:check && pnpm demo:transcripts", "release:collect-assets": "node ./scripts/collect-release-assets.mjs", "validate": "npm run lint && npm run lint:eslint && npm run format:check && npm test", "prepare": "husky" From 04ac9e0115cc3061301519b3ce42d47be28e089b Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 16:14:36 -0500 Subject: [PATCH 116/249] feat(cli): suggest a concrete source from status --- src/cli/index.ts | 13 ++++++++++++- test/cli/index.test.ts | 10 ++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 65382d03..9244865a 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -841,6 +841,7 @@ async function runStatus(options: GlobalOptions): Promise { status.sources, sourceLabels, status.runtime, + registrySources, ); if (nextSteps.length > 0) { emit.blank(); @@ -1400,6 +1401,7 @@ function buildStatusNextSteps( sources: SourceStatus[], sourceLabels: SourceLabelMap = {}, runtime: CliStatus["runtime"] = "unhealthy", + availableSources: Array<{ id: string; name: string; authMode?: string }> = [], ): string[] { const nextSteps: string[] = []; const highestPriority = [...sources].sort(compareSourceStatusOrder)[0]; @@ -1415,10 +1417,19 @@ function buildStatusNextSteps( const highestPriorityLabel = highestPriority ? displaySource(highestPriority.source, sourceLabels) : null; + const suggestedSource = + availableSources.find((source) => source.authMode !== "legacy") ?? + availableSources[0]; if (!highestPriority) { if (runtime === "installed") { - nextSteps.push("Connect your first source with `vana connect`."); + if (suggestedSource) { + nextSteps.push( + `Connect ${suggestedSource.name} with \`vana connect ${suggestedSource.id}\`.`, + ); + } else { + nextSteps.push("Connect your first source with `vana connect`."); + } } else if (runtime === "missing") { nextSteps.push("Install the local runtime with `vana setup`."); } diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index eb1e072b..dde679f2 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -359,7 +359,13 @@ describe("runCli", () => { }); it("guides first run from status when the runtime is already installed", async () => { - mockListAvailableSources.mockResolvedValue([]); + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + }, + ]); mockReadCliState.mockResolvedValue({ version: 1, sources: {}, @@ -369,7 +375,7 @@ describe("runCli", () => { const exitCode = await runCli(["node", "vana", "status"]); expect(exitCode).toBe(0); - expect(stdout).toContain("Connect your first source with `vana connect`."); + expect(stdout).toContain("Connect GitHub with `vana connect github`."); }); it("guides first run from status when the runtime is missing", async () => { From edf1d5c768c31678b164797e1913da372fd0bc7f Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 16:15:42 -0500 Subject: [PATCH 117/249] test(cli): cover legacy no-input guidance --- test/cli/index.test.ts | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index dde679f2..c0a1a0cf 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -434,6 +434,47 @@ describe("runCli", () => { ); }); + it("prints a clean manual-step message for legacy connectors in no-input mode", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "shop", + name: "Shop", + authMode: "legacy", + description: "Exports Shop data.", + }, + ]); + fetchConnectorResult = { + connectorPath: "/tmp/connectors/shop/shop-playwright.js", + logPath: "/tmp/logs/fetch.log", + }; + runConnectorEvents = [ + { + type: "legacy-auth", + source: "shop", + message: + "This source needs a manual browser step, but prompting is disabled in --no-input mode.", + logPath: "/tmp/logs/run.log", + }, + ]; + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli([ + "node", + "vana", + "connect", + "shop", + "--no-input", + ]); + + expect(exitCode).toBe(1); + expect(stdout).toContain( + "This source needs a manual browser step, but prompting is disabled in --no-input mode.", + ); + expect(stdout).toContain("Run `vana connect shop` without `--no-input`."); + expect(stdout).toContain("Run log: /tmp/logs/run.log"); + expect(stdout).not.toContain("LegacyAuthError"); + }); + it("shows collected data in json mode", async () => { mockListAvailableSources.mockResolvedValue([ { From b11891fb092434467a603fc4062e31426ab229b8 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 16:17:06 -0500 Subject: [PATCH 118/249] feat(cli): align terminal log rows --- src/cli/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 9244865a..a6d227c8 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -394,7 +394,7 @@ async function runConnect( source: resolution.source, }); if (event.logPath) { - emit.info(`Run log: ${formatDisplayPath(event.logPath)}`); + emit.keyValue("Run log", formatDisplayPath(event.logPath), "muted"); } terminalExitCode = 1; continue; @@ -430,7 +430,7 @@ async function runConnect( `Run ${emit.code(`vana connect ${source}`)} without ${emit.code("--no-input")}.`, ); if (event.logPath) { - emit.detail(`Run log: ${formatDisplayPath(event.logPath)}`); + emit.keyValue("Run log", formatDisplayPath(event.logPath), "muted"); } emit.event({ type: "outcome", From 4e5479ac551f1b7c23e775c3bfce6cd997acfebb Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 16:36:07 -0500 Subject: [PATCH 119/249] feat(cli): deepen status and data guidance --- src/cli/index.ts | 319 ++++++++++++++++++++++++++++++++------- src/cli/render/format.ts | 8 +- test/cli/index.test.ts | 172 ++++++++++++++++++--- 3 files changed, 420 insertions(+), 79 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index a6d227c8..d569dff7 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -72,6 +72,18 @@ interface Emitter { type RenderTone = "accent" | "success" | "warning" | "error" | "muted" | "info"; +type SourceStatusDetail = + | { + kind: "text"; + message: string; + } + | { + kind: "row"; + label: string; + value: string; + tone?: RenderTone; + }; + export async function runCli(argv = process.argv): Promise { const normalizedArgv = normalizeArgv(argv); const parsedOptions = extractGlobalOptions(normalizedArgv); @@ -275,6 +287,10 @@ async function runConnect( if (sourceDetails?.description) { emit.info(sourceDetails.description); } + const connectTrustMessage = describeConnectTrust(sourceDetails?.authMode); + if (connectTrustMessage) { + emit.detail(connectTrustMessage); + } const profilePath = path.join( getBrowserProfilesDir(), @@ -602,25 +618,35 @@ async function runConnect( async function runConnectEntry(options: GlobalOptions): Promise { const emit = createEmitter(options); const sources = await loadRegistrySources(); + const suggestedSource = + sources.find((source) => source.authMode !== "legacy") ?? sources[0]; + const missingSourceMessage = + formatMissingConnectSourceMessage(suggestedSource); if (options.json) { process.stdout.write( `${JSON.stringify({ error: "source_required", - message: - "Specify a source. Run `vana sources` to see available options.", + message: missingSourceMessage, + suggestedSource: suggestedSource + ? { + id: suggestedSource.id, + name: suggestedSource.name, + authMode: suggestedSource.authMode, + } + : null, })}\n`, ); return 1; } if (options.noInput) { - emit.info("Specify a source. Run `vana sources` to see available options."); + emit.info(missingSourceMessage); return 1; } if (!process.stdin.isTTY || !process.stdout.isTTY) { - emit.info("Specify a source. Run `vana sources` to see available options."); + emit.info(missingSourceMessage); return 1; } @@ -661,7 +687,7 @@ async function runConnectEntry(options: GlobalOptions): Promise { pageSize: 8, choices: sources.map((item) => ({ name: `${item.name}${formatAuthModeBadge(item.authMode, emit)}`, - description: item.description, + description: formatSourcePickerDescription(item), short: item.name, value: item.id, })), @@ -687,8 +713,18 @@ async function runList(options: GlobalOptions): Promise { ...source, installed: installedSourceIds.has(source.id), })); + const recommendedSource = + enrichedSources.find((source) => source.authMode !== "legacy") ?? + enrichedSources[0] ?? + null; if (options.json) { - process.stdout.write(`${JSON.stringify({ sources: enrichedSources })}\n`); + process.stdout.write( + `${JSON.stringify({ + count: enrichedSources.length, + recommendedSource, + sources: enrichedSources, + })}\n`, + ); return 0; } @@ -729,24 +765,24 @@ async function runList(options: GlobalOptions): Promise { if (source.description) { emit.detail(source.description); } + emit.detail(describeSourceFlow(source.authMode)); } }); if (groups.length === 0) { emit.info("No sources are available right now."); } else { - const recommendedSource = - enrichedSources.find((source) => source.authMode !== "legacy") ?? - enrichedSources[0]; - emit.blank(); - emit.section("Next"); - emit.bullet( - `Start with ${recommendedSource.name} using ${emit.code( - `vana connect ${recommendedSource.id}`, - )}.`, - ); - emit.bullet( - `Or browse the guided picker with ${emit.code("vana connect")}.`, - ); + if (recommendedSource) { + emit.blank(); + emit.section("Next"); + emit.bullet( + `Start with ${recommendedSource.name} using ${emit.code( + `vana connect ${recommendedSource.id}`, + )}.`, + ); + emit.bullet( + `Or browse the guided picker with ${emit.code("vana connect")}.`, + ); + } } return 0; } @@ -768,9 +804,15 @@ async function runStatus(options: GlobalOptions): Promise { personalServerUrl: personalServer.url, sources, }; + const nextSteps = buildStatusNextSteps( + status.sources, + sourceLabels, + status.runtime, + registrySources, + ); if (options.json) { - process.stdout.write(`${JSON.stringify(status)}\n`); + process.stdout.write(`${JSON.stringify({ ...status, nextSteps })}\n`); return 0; } @@ -833,16 +875,14 @@ async function runStatus(options: GlobalOptions): Promise { emit.sourceTitle(displaySource(source.source, sourceLabels), badges); const details = formatSourceStatusDetails(source); for (const detail of details) { - emit.detail(detail); + if (detail.kind === "row") { + emit.keyValue(detail.label, detail.value, detail.tone ?? "muted"); + continue; + } + emit.detail(detail.message); } } }); - const nextSteps = buildStatusNextSteps( - status.sources, - sourceLabels, - status.runtime, - registrySources, - ); if (nextSteps.length > 0) { emit.blank(); emit.section("Next"); @@ -911,9 +951,10 @@ async function runSetup(options: GlobalOptions): Promise { async function runDataList(options: GlobalOptions): Promise { const state = await readCliState(); + const registrySources = await loadRegistrySources(); const sources = await gatherSourceStatuses( state.sources, - createSourceMetadataMap(await loadRegistrySources()), + createSourceMetadataMap(registrySources), ); const datasetRecords = await Promise.all( sources @@ -933,16 +974,36 @@ async function runDataList(options: GlobalOptions): Promise { datasetRecords.sort(compareDatasetOrder); if (options.json) { - process.stdout.write(`${JSON.stringify({ datasets: datasetRecords })}\n`); + process.stdout.write( + `${JSON.stringify({ + count: datasetRecords.length, + latestDataset: datasetRecords[0] ?? null, + datasets: datasetRecords, + })}\n`, + ); return 0; } const emit = createEmitter(options); if (datasetRecords.length === 0) { + const suggestedSource = + registrySources.find((source) => source.authMode !== "legacy") ?? + registrySources[0]; emit.title("Collected data"); emit.blank(); emit.info("No local datasets collected yet."); - emit.info("Run `vana connect ` to collect data."); + emit.blank(); + emit.section("Next"); + if (suggestedSource) { + emit.bullet( + `Collect your first dataset with ${emit.code(`vana connect ${suggestedSource.id}`)}.`, + ); + } else { + emit.bullet( + `Collect your first dataset with ${emit.code("vana connect")}.`, + ); + } + emit.bullet(`Check overall status with ${emit.code("vana status")}.`); return 0; } @@ -968,6 +1029,13 @@ async function runDataList(options: GlobalOptions): Promise { emit.detail(line); } } + if (dataset.dataState === "ingested_personal_server") { + emit.keyValue("State", "Synced to Personal Server", "success"); + } else if (dataset.dataState === "ingest_failed") { + emit.keyValue("State", "Saved locally, sync failed", "warning"); + } else { + emit.keyValue("State", "Saved locally", "muted"); + } if (dataset.lastRunAt) { emit.keyValue("Updated", formatTimestamp(dataset.lastRunAt), "muted"); } @@ -1008,12 +1076,26 @@ async function runDataShow( error: "dataset_not_found", source, message: `No collected dataset found for ${displaySource(source, sourceLabels)}. Run \`vana connect ${source}\` first.`, + nextSteps: [ + `Run \`vana connect ${source}\` to collect data.`, + ...(datasetCount > 0 + ? ["Run `vana data list` to inspect other datasets."] + : []), + ], })}\n`, ); } else { emit.info( `No collected dataset found for ${displaySource(source, sourceLabels)}. Run \`vana connect ${source}\` first.`, ); + emit.blank(); + emit.section("Next"); + emit.bullet(`Collect data with ${emit.code(`vana connect ${source}`)}.`); + if (datasetCount > 0) { + emit.bullet( + `Inspect other datasets with ${emit.code("vana data list")}.`, + ); + } } return 1; } @@ -1316,51 +1398,82 @@ async function listInstalledConnectorFiles(): Promise< } } -function formatSourceStatusDetails(source: SourceStatus): string[] { - const details: string[] = []; +function formatSourceStatusDetails(source: SourceStatus): SourceStatusDetail[] { + const details: SourceStatusDetail[] = []; const displayName = source.name ?? displaySource(source.source); if (source.lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { details.push( source.lastError - ? `${source.lastError}. Run \`vana connect ${source.source}\` interactively.` - : `Run \`vana connect ${source.source}\` interactively.`, + ? { + kind: "text", + message: `${source.lastError}. Run \`vana connect ${source.source}\` interactively.`, + } + : { + kind: "text", + message: `Run \`vana connect ${source.source}\` interactively.`, + }, ); } if (source.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { - details.push( - `Run \`vana connect ${source.source}\` without \`--no-input\` to complete the manual browser step.`, - ); + details.push({ + kind: "text", + message: `Run \`vana connect ${source.source}\` without \`--no-input\` to complete the manual browser step.`, + }); } if (source.lastRunOutcome === CliOutcomeStatus.RUNTIME_ERROR) { details.push( source.lastError - ? formatHumanSourceMessage(source.lastError, source.source, displayName) - : "The last connector run failed.", + ? { + kind: "text", + message: formatHumanSourceMessage( + source.lastError, + source.source, + displayName, + ), + } + : { + kind: "text", + message: "The last connector run failed.", + }, ); } if (source.lastRunOutcome === CliOutcomeStatus.CONNECTOR_UNAVAILABLE) { details.push( source.lastError - ? formatHumanSourceMessage(source.lastError, source.source, displayName) - : "No connector is available for this source.", + ? { + kind: "text", + message: formatHumanSourceMessage( + source.lastError, + source.source, + displayName, + ), + } + : { + kind: "text", + message: "No connector is available for this source.", + }, ); } if (!source.lastRunOutcome && source.installed) { - details.push(`Run \`vana connect ${source.source}\` to collect data.`); + details.push({ + kind: "text", + message: `Run \`vana connect ${source.source}\` to collect data.`, + }); } if ( source.lastRunOutcome === CliOutcomeStatus.CONNECTED_LOCAL_ONLY && source.lastResultPath ) { - details.push( - `Inspect the latest local dataset with \`vana data show ${source.source}\`.`, - ); + details.push({ + kind: "text", + message: `Inspect the latest local dataset with \`vana data show ${source.source}\`.`, + }); } if ( @@ -1369,29 +1482,74 @@ function formatSourceStatusDetails(source: SourceStatus): string[] { source.lastRunOutcome === CliOutcomeStatus.CONNECTED_AND_INGESTED || source.lastRunOutcome === CliOutcomeStatus.INGEST_FAILED) ) { - details.push("Session: Saved for faster reconnects."); + details.push({ + kind: "row", + label: "Session", + value: "Saved for faster reconnects.", + tone: "muted", + }); } if (source.lastRunOutcome === CliOutcomeStatus.CONNECTED_AND_INGESTED) { - details.push( - `Inspect the latest local dataset with \`vana data show ${source.source}\` or use your Personal Server copy.`, - ); + details.push({ + kind: "text", + message: `Inspect the latest local dataset with \`vana data show ${source.source}\` or use your Personal Server copy.`, + }); } if (source.lastRunOutcome === CliOutcomeStatus.INGEST_FAILED) { details.push( source.lastError - ? `${source.lastError} Inspect the local dataset with \`vana data show ${source.source}\`.` - : `Personal Server sync failed. Inspect the local dataset with \`vana data show ${source.source}\`.`, + ? { + kind: "text", + message: `${source.lastError} Inspect the local dataset with \`vana data show ${source.source}\`.`, + } + : { + kind: "text", + message: `Personal Server sync failed. Inspect the local dataset with \`vana data show ${source.source}\`.`, + }, ); } + if (source.dataState === "ingested_personal_server") { + details.push({ + kind: "row", + label: "State", + value: "Synced to Personal Server", + tone: "success", + }); + } else if (source.dataState === "ingest_failed") { + details.push({ + kind: "row", + label: "State", + value: "Saved locally, sync failed", + tone: "warning", + }); + } else if (source.dataState === "collected_local") { + details.push({ + kind: "row", + label: "State", + value: "Saved locally", + tone: "muted", + }); + } + if (source.lastRunAt) { - details.push(`Updated: ${formatTimestamp(source.lastRunAt)}`); + details.push({ + kind: "row", + label: "Updated", + value: formatTimestamp(source.lastRunAt), + tone: "muted", + }); } if (source.lastResultPath && source.dataState !== "none") { - details.push(`Path: ${formatDisplayPath(source.lastResultPath)}`); + details.push({ + kind: "row", + label: "Path", + value: formatDisplayPath(source.lastResultPath), + tone: "muted", + }); } return details; @@ -1493,6 +1651,61 @@ function formatSetupConnectStep( return `Connect a source with ${emit.code("vana connect")}.`; } +function describeConnectTrust( + authMode: "automated" | "interactive" | "legacy" | undefined, +): string | null { + if (authMode === "legacy") { + return "If needed, Vana Connect will open a local browser session on this machine."; + } + + if (authMode === "interactive") { + return "If needed, Vana Connect will ask for details in this terminal. Those details stay local to this machine."; + } + + return null; +} + +function formatMissingConnectSourceMessage( + source: + | { + id: string; + name: string; + } + | undefined, +): string { + if (source) { + return `Specify a source. Start with \`vana connect ${source.id}\`, or run \`vana sources\` to see available options.`; + } + + return "Specify a source. Run `vana sources` to see available options."; +} + +function describeSourceFlow( + authMode: "automated" | "interactive" | "legacy" | undefined, +): string { + if (authMode === "legacy") { + return "Flow: finishes with a manual browser step on this machine."; + } + + if (authMode === "interactive") { + return "Flow: prompts in this terminal when the source needs input."; + } + + return "Flow: runs without extra input when the source supports it."; +} + +function formatSourcePickerDescription(source: { + description?: string; + authMode?: "automated" | "interactive" | "legacy"; +}): string { + const flow = describeSourceFlow(source.authMode); + if (!source.description) { + return flow; + } + + return `${source.description} ${flow}`; +} + function normalizeArgv(argv: string[]): string[] { if ( argv[2] === "connect" && diff --git a/src/cli/render/format.ts b/src/cli/render/format.ts index df56dcf2..a1f45e47 100644 --- a/src/cli/render/format.ts +++ b/src/cli/render/format.ts @@ -6,6 +6,7 @@ import { createSymbols, type RenderSymbols } from "./symbols.js"; import { createTheme, type RenderTheme } from "./theme.js"; type Tone = "accent" | "success" | "warning" | "error" | "muted" | "info"; +const KEY_VALUE_LABEL_WIDTH = 17; export interface HumanRenderer { readonly capabilities: RenderCapabilities; @@ -44,7 +45,12 @@ export function createHumanRenderer(): HumanRenderer { return `${theme.accent(symbols.arrow)} ${theme.heading(text)}`; }, keyValue(label, value, tone = "muted") { - return ` ${theme.label(`${label}:`)} ${applyTone(theme, tone, value)}`; + const rawLabel = `${label}:`; + const paddedLabel = + rawLabel.length >= KEY_VALUE_LABEL_WIDTH + ? rawLabel + : rawLabel.padEnd(KEY_VALUE_LABEL_WIDTH); + return ` ${theme.label(paddedLabel)} ${applyTone(theme, tone, value)}`; }, sourceTitle(name, badges = []) { if (badges.length === 0) { diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index c0a1a0cf..0ce4d184 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -166,6 +166,8 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(JSON.parse(stdout)).toEqual({ + count: 2, + recommendedSource: { id: "github", name: "GitHub", installed: true }, sources: [ { id: "github", name: "GitHub", installed: true }, { id: "steam", name: "Steam", installed: false }, @@ -198,6 +200,9 @@ describe("runCli", () => { runtimePath: "/tmp/playwright/chrome", personalServer: "available", personalServerUrl: "http://localhost:8080", + nextSteps: expect.arrayContaining([ + "Inspect the latest dataset with `vana data show steam`.", + ]), sources: [ { source: "steam", @@ -227,7 +232,7 @@ describe("runCli", () => { → Runtime The local runtime is already installed. - Browser: /tmp/playwright/chrome + Browser: /tmp/playwright/chrome → Next • Check overall status with \`vana status\`. @@ -335,9 +340,9 @@ describe("runCli", () => { "Vana Connect status → Environment - Runtime: installed - Browser: /tmp/playwright/chrome - Personal Server: unavailable + Runtime: installed + Browser: /tmp/playwright/chrome + Personal Server: unavailable → Needs attention (1) Shop [legacy] [manual step] @@ -347,9 +352,10 @@ describe("runCli", () => { → Connected (1) GitHub [interactive] [local] Inspect the latest local dataset with \`vana data show github\`. - Session: Saved for faster reconnects. + Session: Saved for faster reconnects. + State: Saved locally Updated: - Path: /tmp/.dataconnect/github-result.json + Path: /tmp/.dataconnect/github-result.json → Next • Complete the manual browser step for Shop with \`vana connect shop\`. @@ -471,7 +477,8 @@ describe("runCli", () => { "This source needs a manual browser step, but prompting is disabled in --no-input mode.", ); expect(stdout).toContain("Run `vana connect shop` without `--no-input`."); - expect(stdout).toContain("Run log: /tmp/logs/run.log"); + expect(stdout).toContain("Run log:"); + expect(stdout).toContain("/tmp/logs/run.log"); expect(stdout).not.toContain("LegacyAuthError"); }); @@ -567,9 +574,9 @@ describe("runCli", () => { • Repositories: 2 • Starred: 0 - Path: /tmp/.dataconnect/github-result.json + Path: /tmp/.dataconnect/github-result.json Updated: - State: Saved locally + State: Saved locally → Next • Print the path with \`vana data path github\`. @@ -579,6 +586,71 @@ describe("runCli", () => { `); }); + it("returns guided next steps when data show is missing in json mode", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: {}, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli([ + "node", + "vana", + "data", + "show", + "github", + "--json", + ]); + + expect(exitCode).toBe(1); + expect(JSON.parse(stdout)).toEqual({ + error: "dataset_not_found", + source: "github", + message: + "No collected dataset found for GitHub. Run `vana connect github` first.", + nextSteps: ["Run `vana connect github` to collect data."], + }); + }); + + it("shows guided next steps when data show is missing in human mode", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + }, + { + id: "spotify", + name: "Spotify", + }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + spotify: { + lastResultPath: "/tmp/.dataconnect/spotify-result.json", + dataState: "collected_local", + }, + }, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "data", "show", "github"]); + + expect(exitCode).toBe(1); + expect(stdout).toContain( + "No collected dataset found for GitHub. Run `vana connect github` first.", + ); + expect(stdout).toContain("→ Next"); + expect(stdout).toContain("Collect data with `vana connect github`."); + expect(stdout).toContain("Inspect other datasets with `vana data list`."); + }); + it("renders a stable human transcript for data path", async () => { mockListAvailableSources.mockResolvedValue([ { @@ -636,20 +708,29 @@ describe("runCli", () => { const exitCode = await runCli(["node", "vana", "data", "list", "--json"]); expect(exitCode).toBe(0); - expect(JSON.parse(stdout).datasets).toMatchObject([ - { + expect(JSON.parse(stdout)).toMatchObject({ + count: 2, + latestDataset: { source: "github", name: "GitHub", authMode: "interactive", dataState: "collected_local", }, - { - source: "chatgpt", - name: "ChatGPT", - authMode: "legacy", - dataState: "collected_local", - }, - ]); + datasets: [ + { + source: "github", + name: "GitHub", + authMode: "interactive", + dataState: "collected_local", + }, + { + source: "chatgpt", + name: "ChatGPT", + authMode: "legacy", + dataState: "collected_local", + }, + ], + }); }); it("renders a stable human transcript for data list", async () => { @@ -701,14 +782,16 @@ describe("runCli", () => { Profile: tnunamak Repositories: 2 Starred: 0 + State: Saved locally Updated: - Path: /tmp/.dataconnect/github-result.json + Path: /tmp/.dataconnect/github-result.json Spotify [local] Profile: tnunamak Playlists: 2 + State: Saved locally Updated: - Path: /tmp/.dataconnect/spotify-result.json + Path: /tmp/.dataconnect/spotify-result.json → Next • Inspect GitHub with \`vana data show github\`. @@ -717,6 +800,27 @@ describe("runCli", () => { `); }); + it("guides the first data collection from data list when nothing is collected", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: {}, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "data", "list"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain("No local datasets collected yet."); + expect(stdout).toContain("→ Next"); + expect(stdout).toContain( + "Collect your first dataset with `vana connect github`.", + ); + expect(stdout).toContain("Check overall status with `vana status`."); + }); + it("shows collected data paths in json mode", async () => { mockListAvailableSources.mockResolvedValue([ { @@ -852,12 +956,15 @@ describe("runCli", () => { → Ready now (2) GitHub [interactive] Exports GitHub data. + Flow: prompts in this terminal when the source needs input. Spotify [interactive] Exports Spotify data. + Flow: prompts in this terminal when the source needs input. → Manual steps (1) ChatGPT [legacy] Exports ChatGPT data. + Flow: finishes with a manual browser step on this machine. → Next • Start with GitHub using \`vana connect github\`. @@ -937,17 +1044,29 @@ describe("runCli", () => { }); it("prints source_required in json mode when connect source is missing", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + ]); const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "connect", "--json"]); expect(exitCode).toBe(1); expect(JSON.parse(stdout)).toEqual({ error: "source_required", - message: "Specify a source. Run `vana sources` to see available options.", + message: + "Specify a source. Start with `vana connect github`, or run `vana sources` to see available options.", + suggestedSource: { + id: "github", + name: "GitHub", + authMode: "interactive", + }, }); }); it("fails cleanly when connect source is missing in a non-interactive shell", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + ]); const originalStdoutTty = process.stdout.isTTY; const originalStdinTty = process.stdin.isTTY; Object.defineProperty(process.stdout, "isTTY", { @@ -973,7 +1092,7 @@ describe("runCli", () => { expect(exitCode).toBe(1); expect(stdout).toContain( - "Specify a source. Run `vana sources` to see available options.", + "Specify a source. Start with `vana connect github`, or run `vana sources` to see available options.", ); expect(stdout).not.toContain("Choose a source to connect:"); }); @@ -1155,8 +1274,10 @@ describe("runCli", () => { ); expect(stdout).toContain("Saved locally"); expect(stdout).toContain("/tmp/.dataconnect/github-result.json"); - expect(stdout).toContain("Session: Saved for faster reconnects."); - expect(stdout).toContain("Server: Unavailable, so this run stayed local."); + expect(stdout).toContain("Session:"); + expect(stdout).toContain("Saved for faster reconnects."); + expect(stdout).toContain("Server:"); + expect(stdout).toContain("Unavailable, so this run stayed local."); expect(stdout).toContain("Next"); expect(stdout).toContain("vana data show github"); }); @@ -1200,7 +1321,8 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(stdout).toContain("Saved locally"); - expect(stdout).toContain("Server: Sync failed: server exploded"); + expect(stdout).toContain("Server:"); + expect(stdout).toContain("Sync failed: server exploded"); expect(mockUpdateSourceState).toHaveBeenLastCalledWith( "github", expect.objectContaining({ From da61d3e8a6eaec41f17d44aba071aa4e189a3e19 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 16:36:25 -0500 Subject: [PATCH 120/249] chore(demo): refresh transcripts and build-first capture --- README.md | 4 +++ docs/transcripts/README.md | 2 ++ docs/transcripts/connect-github-success.txt | 9 +++--- docs/transcripts/connect-shop-no-input.txt | 3 +- docs/transcripts/data-list-empty.txt | 7 ++++ docs/transcripts/data-list.txt | 10 +++--- docs/transcripts/data-show-github-missing.txt | 4 +++ docs/transcripts/data-show-github.txt | 6 ++-- docs/transcripts/setup.txt | 2 +- docs/transcripts/sources.txt | 3 ++ docs/transcripts/status.txt | 22 +++++++------ package.json | 4 +-- scripts/capture-cli-transcripts.mjs | 32 +++++++++++++++++-- 13 files changed, 81 insertions(+), 27 deletions(-) create mode 100644 docs/transcripts/data-list-empty.txt create mode 100644 docs/transcripts/data-show-github-missing.txt diff --git a/README.md b/README.md index 8db1643c..fbc688b2 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,9 @@ Current reviewable transcripts: - [`setup`](./docs/transcripts/setup.txt) - [`sources`](./docs/transcripts/sources.txt) - [`data list`](./docs/transcripts/data-list.txt) +- [`data list (empty)`](./docs/transcripts/data-list-empty.txt) - [`data show github`](./docs/transcripts/data-show-github.txt) +- [`data show github (missing)`](./docs/transcripts/data-show-github-missing.txt) - [`data path github`](./docs/transcripts/data-path-github.txt) - [`connect github`](./docs/transcripts/connect-github-success.txt) - [`connect shop --no-input`](./docs/transcripts/connect-shop-no-input.txt) @@ -230,7 +232,9 @@ Current reviewable transcripts: - [`setup`](./docs/transcripts/setup.txt) - [`sources`](./docs/transcripts/sources.txt) - [`data list`](./docs/transcripts/data-list.txt) +- [`data list (empty)`](./docs/transcripts/data-list-empty.txt) - [`data show github`](./docs/transcripts/data-show-github.txt) +- [`data show github (missing)`](./docs/transcripts/data-show-github-missing.txt) - [`data path github`](./docs/transcripts/data-path-github.txt) - [`connect github`](./docs/transcripts/connect-github-success.txt) - [`connect shop --no-input`](./docs/transcripts/connect-shop-no-input.txt) diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md index 268b62c8..ddf99301 100644 --- a/docs/transcripts/README.md +++ b/docs/transcripts/README.md @@ -18,7 +18,9 @@ Current generated surfaces include: - `setup.txt` - `sources.txt` - `data-list.txt` +- `data-list-empty.txt` - `data-show-github.txt` +- `data-show-github-missing.txt` - `data-path-github.txt` - `connect-github-success.txt` - `connect-shop-no-input.txt` diff --git a/docs/transcripts/connect-github-success.txt b/docs/transcripts/connect-github-success.txt index 63eddbd9..21adb03b 100644 --- a/docs/transcripts/connect-github-success.txt +++ b/docs/transcripts/connect-github-success.txt @@ -4,6 +4,7 @@ Connect GitHub Finding a connector for GitHub... Connector ready. Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. + If needed, Vana Connect will ask for details in this terminal. Those details stay local to this machine. → Connecting Connecting to GitHub... @@ -22,10 +23,10 @@ Collecting your data... • Starred: 0 → Saved locally - Path: ~/.dataconnect/last-result.json - Session: Saved for faster reconnects. - Server: Unavailable, so this run stayed local. - Run log: ~/.dataconnect/logs/run-github-.log + Path: ~/.dataconnect/last-result.json + Session: Saved for faster reconnects. + Server: Unavailable, so this run stayed local. + Run log: ~/.dataconnect/logs/run-github-.log → Next • Inspect the data with `vana data show github` diff --git a/docs/transcripts/connect-shop-no-input.txt b/docs/transcripts/connect-shop-no-input.txt index fa723c47..c78af919 100644 --- a/docs/transcripts/connect-shop-no-input.txt +++ b/docs/transcripts/connect-shop-no-input.txt @@ -4,6 +4,7 @@ Connect Shop Finding a connector for Shop... Connector ready. Exports your Shop app order history using Playwright browser automation. + If needed, Vana Connect will open a local browser session on this machine. → Connecting Connecting to Shop... @@ -12,4 +13,4 @@ This source needs a manual browser step, but prompting is disabled in --no-input → Next • Run `vana connect shop` without `--no-input`. - Run log: ~/.dataconnect/logs/run-shop-.log + Run log: ~/.dataconnect/logs/run-shop-.log diff --git a/docs/transcripts/data-list-empty.txt b/docs/transcripts/data-list-empty.txt new file mode 100644 index 00000000..a4f1822b --- /dev/null +++ b/docs/transcripts/data-list-empty.txt @@ -0,0 +1,7 @@ +Collected data + +No local datasets collected yet. + +→ Next + • Collect your first dataset with `vana connect github`. + • Check overall status with `vana status`. diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt index 2fd28b8b..fd98a3b8 100644 --- a/docs/transcripts/data-list.txt +++ b/docs/transcripts/data-list.txt @@ -4,14 +4,16 @@ GitHub [local] Profile: tnunamak Repositories: 2 Starred: 0 - Updated: Mar 14, 2026, 8:10 AM - Path: ~/.dataconnect/last-result.json + State: Saved locally + Updated: Mar 14, 2026, 8:10 AM + Path: ~/.dataconnect/last-result.json Spotify [local] Profile: tnunamak Playlists: 2 - Updated: Mar 13, 2026, 4:23 PM - Path: ~/.dataconnect/spotify-result.json + State: Saved locally + Updated: Mar 13, 2026, 4:23 PM + Path: ~/.dataconnect/spotify-result.json → Next • Inspect GitHub with `vana data show github`. diff --git a/docs/transcripts/data-show-github-missing.txt b/docs/transcripts/data-show-github-missing.txt new file mode 100644 index 00000000..e3cd95d3 --- /dev/null +++ b/docs/transcripts/data-show-github-missing.txt @@ -0,0 +1,4 @@ +No collected dataset found for GitHub. Run `vana connect github` first. + +→ Next + • Collect data with `vana connect github`. diff --git a/docs/transcripts/data-show-github.txt b/docs/transcripts/data-show-github.txt index 1856e18c..54fee7e3 100644 --- a/docs/transcripts/data-show-github.txt +++ b/docs/transcripts/data-show-github.txt @@ -5,9 +5,9 @@ GitHub data • Repositories: 2 • Starred: 0 - Path: ~/.dataconnect/last-result.json - Updated: Mar 14, 2026, 8:10 AM - State: Saved locally + Path: ~/.dataconnect/last-result.json + Updated: Mar 14, 2026, 8:10 AM + State: Saved locally → Next • Print the path with `vana data path github`. diff --git a/docs/transcripts/setup.txt b/docs/transcripts/setup.txt index e8a84c9a..14b38830 100644 --- a/docs/transcripts/setup.txt +++ b/docs/transcripts/setup.txt @@ -2,7 +2,7 @@ Vana Connect setup → Runtime The local runtime is already installed. - Browser: /opt/playwright/chromium-1200/chrome-linux64/chrome + Browser: /opt/playwright/chromium-1200/chrome-linux64/chrome → Next • Check overall status with `vana status`. diff --git a/docs/transcripts/sources.txt b/docs/transcripts/sources.txt index f5c97841..7eebf49c 100644 --- a/docs/transcripts/sources.txt +++ b/docs/transcripts/sources.txt @@ -3,12 +3,15 @@ Available sources (3) → Ready now (2) GitHub [interactive] [installed] Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. + Flow: prompts in this terminal when the source needs input. Spotify [interactive] [installed] Exports your Spotify playlists using Playwright browser automation. + Flow: prompts in this terminal when the source needs input. → Manual steps (1) Shop [legacy] [installed] Exports your Shop app order history using Playwright browser automation. + Flow: finishes with a manual browser step on this machine. → Next • Start with GitHub using `vana connect github`. diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index fa366a72..b5f2edf2 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -1,28 +1,30 @@ Vana Connect status → Environment - Runtime: installed - Browser: /opt/playwright/chromium-1200/chrome-linux64/chrome - Personal Server: unavailable + Runtime: installed + Browser: /opt/playwright/chromium-1200/chrome-linux64/chrome + Personal Server: unavailable → Needs attention (2) Shop [legacy] [manual step] Run `vana connect shop` without `--no-input` to complete the manual browser step. - Updated: Mar 14, 2026, 8:11 AM + Updated: Mar 14, 2026, 8:11 AM Steam [unavailable] No connector is available for Steam right now. - Updated: Mar 14, 2026, 8:12 AM + Updated: Mar 14, 2026, 8:12 AM → Connected (2) GitHub [interactive] [local] Inspect the latest local dataset with `vana data show github`. - Session: Saved for faster reconnects. - Updated: Mar 14, 2026, 8:10 AM - Path: ~/.dataconnect/last-result.json + Session: Saved for faster reconnects. + State: Saved locally + Updated: Mar 14, 2026, 8:10 AM + Path: ~/.dataconnect/last-result.json Spotify [interactive] [local] Inspect the latest local dataset with `vana data show spotify`. - Updated: Mar 13, 2026, 4:23 PM - Path: ~/.dataconnect/spotify-result.json + State: Saved locally + Updated: Mar 13, 2026, 4:23 PM + Path: ~/.dataconnect/spotify-result.json → Next • Complete the manual browser step for Shop with `vana connect shop`. diff --git a/package.json b/package.json index f881924c..22a0888b 100644 --- a/package.json +++ b/package.json @@ -58,9 +58,9 @@ "build:sea:smoke": "npx -y node@25 ./scripts/build-sea.mjs --smoke", "clean": "node ./scripts/clean-build.mjs", "cli": "node dist/cli/bin.js", - "demo:vhs": "node ./scripts/render-vhs.mjs", + "demo:vhs": "pnpm build && node ./scripts/render-vhs.mjs", "demo:vhs:fixtures": "node ./scripts/prepare-vhs-fixtures.mjs", - "demo:transcripts": "node ./scripts/capture-cli-transcripts.mjs", + "demo:transcripts": "pnpm build && node ./scripts/capture-cli-transcripts.mjs", "pack:check": "node ./scripts/assert-pack-contents.mjs", "sea:check": "node ./scripts/assert-sea-artifact.mjs", "release:check-demo-assets": "node ./scripts/assert-release-demo-assets.mjs", diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index ead59417..d7ee254e 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -16,63 +16,91 @@ async function main() { path.join(os.tmpdir(), "vana-transcripts-"), ); const workingHome = path.join(tempRoot, "home"); + const freshHome = path.join(tempRoot, "fresh-home"); await prepareFixtures(workingHome); + await fsp.mkdir(freshHome, { recursive: true }); const connectorsDir = resolveDataConnectorsDir(); const binDir = path.join(tempRoot, "bin"); await prepareDemoBin(binDir); - const env = { + const seededEnv = { ...process.env, HOME: workingHome, PATH: `${binDir}${path.delimiter}${process.env.PATH ?? ""}`, VANA_DEMO_FAST_SUCCESS: "1", ...(connectorsDir ? { VANA_DATA_CONNECTORS_DIR: connectorsDir } : {}), }; + const freshEnv = { + ...process.env, + HOME: freshHome, + PATH: `${binDir}${path.delimiter}${process.env.PATH ?? ""}`, + ...(connectorsDir ? { VANA_DATA_CONNECTORS_DIR: connectorsDir } : {}), + }; const commands = [ { name: "status.txt", argv: ["vana", "status"], + env: seededEnv, }, { name: "setup.txt", argv: ["vana", "setup"], + env: seededEnv, }, { name: "sources.txt", argv: ["vana", "sources"], + env: seededEnv, }, { name: "data-list.txt", argv: ["vana", "data", "list"], + env: seededEnv, + }, + { + name: "data-list-empty.txt", + argv: ["vana", "data", "list"], + env: freshEnv, }, { name: "data-show-github.txt", argv: ["vana", "data", "show", "github"], + env: seededEnv, + }, + { + name: "data-show-github-missing.txt", + argv: ["vana", "data", "show", "github"], + env: freshEnv, + allowFailure: true, }, { name: "data-path-github.txt", argv: ["vana", "data", "path", "github"], + env: seededEnv, }, { name: "connect-github-success.txt", argv: ["vana", "connect", "github"], + env: seededEnv, }, { name: "connect-shop-no-input.txt", argv: ["vana", "connect", "shop", "--no-input"], + env: seededEnv, allowFailure: true, }, { name: "connect-steam-no-input.txt", argv: ["vana", "connect", "steam", "--no-input"], + env: seededEnv, allowFailure: true, }, ]; for (const command of commands) { const output = normalizeTranscript( - run(command.argv, env, command.allowFailure), + run(command.argv, command.env, command.allowFailure), ); const filePath = path.join(transcriptsDir, command.name); await fsp.writeFile(filePath, output, "utf8"); From dc7595e033e936f98f29153c295a539594cf9044 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 16:36:32 -0500 Subject: [PATCH 121/249] docs(cli): refresh execution playbook state --- docs/CLI-EXECUTION-PLAYBOOK.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/CLI-EXECUTION-PLAYBOOK.md b/docs/CLI-EXECUTION-PLAYBOOK.md index 23de32e7..93e42cd4 100644 --- a/docs/CLI-EXECUTION-PLAYBOOK.md +++ b/docs/CLI-EXECUTION-PLAYBOOK.md @@ -16,9 +16,10 @@ wins. ## Current State -Branch head at the time of this update: +Branch state at the time of this update: -- `0afda69` +- local work has moved materially past the earlier canary checkpoints +- use `git log --oneline --decorate -10` to confirm the exact local head before pushing Already true on this branch: @@ -30,9 +31,14 @@ Already true on this branch: - guided `connect` now has clearer entry, cancellation, and continuation copy - `status` now points users toward `vana data list` when that is the right next step - `data show` / `data path` JSON surfaces are more useful for shell tooling +- `sources`, `status`, `data`, and success summaries now use more structured factual rows +- source discovery surfaces now explain whether a source prompts in-terminal or requires a manual browser step +- `data` empty/missing states now include concrete next steps instead of dead-end copy +- `sources --json`, `status --json`, and `data list --json` now expose more top-level guidance metadata - successful connects now explicitly mention the saved browser session payoff - structured runtime `status-update` and `progress-update` events exist - README-facing VHS demos and transcripts are publishing from CI +- local transcript/demo scripts now rebuild first so review artifacts cannot silently drift behind `dist` This means the next work is no longer “make the CLI exist.” It is: From 596f6a83d6e29b8c02a9ab72eb1da03340e6daf1 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 16:38:23 -0500 Subject: [PATCH 122/249] feat(cli): name connect failure states --- docs/transcripts/connect-shop-no-input.txt | 2 ++ docs/transcripts/connect-steam-no-input.txt | 2 ++ src/cli/index.ts | 10 ++++++++++ 3 files changed, 14 insertions(+) diff --git a/docs/transcripts/connect-shop-no-input.txt b/docs/transcripts/connect-shop-no-input.txt index c78af919..7b33b088 100644 --- a/docs/transcripts/connect-shop-no-input.txt +++ b/docs/transcripts/connect-shop-no-input.txt @@ -9,6 +9,8 @@ Exports your Shop app order history using Playwright browser automation. → Connecting Connecting to Shop... Collecting your data... + +→ Manual step required This source needs a manual browser step, but prompting is disabled in --no-input mode. → Next diff --git a/docs/transcripts/connect-steam-no-input.txt b/docs/transcripts/connect-steam-no-input.txt index e6896315..4faafbb3 100644 --- a/docs/transcripts/connect-steam-no-input.txt +++ b/docs/transcripts/connect-steam-no-input.txt @@ -2,6 +2,8 @@ Connect Steam → Preparing Finding a connector for Steam... + +→ Not available yet No connector is available for Steam right now. → Next diff --git a/src/cli/index.ts b/src/cli/index.ts index d569dff7..156e55f1 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -254,6 +254,10 @@ async function runConnect( lastError: message, lastResultPath: null, }); + if (!options.json) { + emit.blank(); + emit.section("Not available yet"); + } emit.info(message); if (!options.json) { emit.blank(); @@ -369,6 +373,8 @@ async function runConnect( source: resolution.source, }); if (!options.json) { + emit.blank(); + emit.section("Input required"); emit.info( `${displayName} needs additional input before it can connect.`, ); @@ -403,6 +409,8 @@ async function runConnect( lastRunOutcome: CliOutcomeStatus.RUNTIME_ERROR, lastError: event.message ?? "Connector run failed.", }); + emit.blank(); + emit.section("Problem"); emit.info(event.message ?? "Connector run failed."); emit.event({ type: "outcome", @@ -436,6 +444,8 @@ async function runConnect( dataState: "none", lastResultPath: null, }); + emit.blank(); + emit.section("Manual step required"); emit.info( event.message ?? "This connector needs a manual browser step that is not available in non-interactive mode.", From af4e6e0ada854fee784e771593b158896ec4e493 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 16:40:11 -0500 Subject: [PATCH 123/249] feat(cli): group guided connect choices --- src/cli/index.ts | 54 +++++++++++++++++++++++++++++++++++------ test/cli/index.test.ts | 55 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 7 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 156e55f1..51ed28c5 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -3,7 +3,7 @@ import fs from "node:fs"; import fsp from "node:fs/promises"; import path from "node:path"; -import { confirm, input, password, select } from "@inquirer/prompts"; +import { Separator, confirm, input, password, select } from "@inquirer/prompts"; import { Command } from "commander"; import { createHumanRenderer } from "./render/index.js"; @@ -695,12 +695,7 @@ async function runConnectEntry(options: GlobalOptions): Promise { source = await select({ message: "Source", pageSize: 8, - choices: sources.map((item) => ({ - name: `${item.name}${formatAuthModeBadge(item.authMode, emit)}`, - description: formatSourcePickerDescription(item), - short: item.name, - value: item.id, - })), + choices: buildConnectChoices(sources, emit), }); } catch (error) { if (isPromptCancelled(error)) { @@ -1675,6 +1670,51 @@ function describeConnectTrust( return null; } +function buildConnectChoices( + sources: Array<{ + id: string; + name: string; + description?: string; + authMode?: "automated" | "interactive" | "legacy"; + }>, + emit: Pick, +) { + const readyNow = sources.filter((source) => source.authMode !== "legacy"); + const manualSteps = sources.filter((source) => source.authMode === "legacy"); + const choices: Array< + | Separator + | { + value: string; + name: string; + description: string; + short: string; + } + > = []; + + const appendGroup = (label: string, items: typeof sources) => { + if (items.length === 0) { + return; + } + if (choices.length > 0) { + choices.push(new Separator("")); + } + choices.push(new Separator(label)); + for (const item of items) { + choices.push({ + name: `${item.name}${formatAuthModeBadge(item.authMode, emit)}`, + description: formatSourcePickerDescription(item), + short: item.name, + value: item.id, + }); + } + }; + + appendGroup("Ready now", readyNow); + appendGroup("Manual steps", manualSteps); + + return choices; +} + function formatMissingConnectSourceMessage( source: | { diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 0ce4d184..d53d5d5b 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -55,6 +55,14 @@ vi.mock("../../src/connectors/registry.js", () => ({ })); vi.mock("@inquirer/prompts", () => ({ + Separator: class { + type = "separator"; + separator: string; + + constructor(separator = "") { + this.separator = separator; + } + }, confirm: mockConfirm, input: vi.fn(), password: vi.fn(), @@ -1097,6 +1105,53 @@ describe("runCli", () => { expect(stdout).not.toContain("Choose a source to connect:"); }); + it("groups guided connect choices by readiness", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + { id: "spotify", name: "Spotify", authMode: "interactive" }, + { id: "shop", name: "Shop", authMode: "legacy" }, + ]); + mockSelect.mockResolvedValueOnce("github"); + + const originalStdoutTty = process.stdout.isTTY; + const originalStdinTty = process.stdin.isTTY; + Object.defineProperty(process.stdout, "isTTY", { + configurable: true, + value: true, + }); + Object.defineProperty(process.stdin, "isTTY", { + configurable: true, + value: true, + }); + + const { runCli } = await import("../../src/cli/index.js"); + await runCli(["node", "vana", "connect"]); + + Object.defineProperty(process.stdout, "isTTY", { + configurable: true, + value: originalStdoutTty, + }); + Object.defineProperty(process.stdin, "isTTY", { + configurable: true, + value: originalStdinTty, + }); + + const choices = mockSelect.mock.calls[0]?.[0]?.choices; + expect(choices).toBeDefined(); + expect(choices[0]).toMatchObject({ + type: "separator", + separator: "Ready now", + }); + expect(choices[1]).toMatchObject({ value: "github" }); + expect(choices[2]).toMatchObject({ value: "spotify" }); + expect(choices[3]).toMatchObject({ type: "separator", separator: "" }); + expect(choices[4]).toMatchObject({ + type: "separator", + separator: "Manual steps", + }); + expect(choices[5]).toMatchObject({ value: "shop" }); + }); + it("prints a clear message when the guided source picker is cancelled", async () => { mockListAvailableSources.mockResolvedValue([ { id: "github", name: "GitHub", authMode: "interactive" }, From acb498344c874b485c9809e26b6e97a6314452c2 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:13:38 -0500 Subject: [PATCH 124/249] feat(cli): add version and doctor surfaces --- README.md | 59 ++++++++ docs/transcripts/README.md | 1 + docs/transcripts/doctor.txt | 22 +++ scripts/capture-cli-transcripts.mjs | 5 + src/cli/index.ts | 206 +++++++++++++++++++++++++++- src/core/cli-types.ts | 2 + test/cli/index.test.ts | 73 ++++++++++ 7 files changed, 365 insertions(+), 3 deletions(-) create mode 100644 docs/transcripts/doctor.txt diff --git a/README.md b/README.md index fbc688b2..259b0620 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,8 @@ curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect- Once installed, the best way to evaluate the CLI quickly is: ```bash +vana --version +vana doctor vana status vana sources vana connect github @@ -39,6 +41,7 @@ vana data show github Current reviewable transcripts: - [`status`](./docs/transcripts/status.txt) +- [`doctor`](./docs/transcripts/doctor.txt) - [`setup`](./docs/transcripts/setup.txt) - [`sources`](./docs/transcripts/sources.txt) - [`data list`](./docs/transcripts/data-list.txt) @@ -191,6 +194,9 @@ npx -y @opendatalabs/connect status ### Commands ```bash +vana --version +vana version +vana doctor vana connect vana sources vana connect github @@ -207,8 +213,60 @@ vana data show github --json | jq '.summary.lines' - `vana connect --json --no-input` is the strict machine-safe path for agents and shell automation. - `vana sources` groups sources into ready-now vs manual-step flows. - `vana status` prioritizes sources that need attention before already-connected sources. +- `vana doctor` checks the local install, browser runtime, and state directories. - `vana data ...` lets you inspect collected local datasets without opening the raw JSON file yourself. +### Shell contract + +- `--json` mode writes machine-readable output to stdout without human narration. +- Successful command completion returns exit code `0`. +- Actionable failures like missing source selection, unavailable connectors, or disabled prompting return exit code `1`. +- `vana --version`, `vana version`, and `vana --help` return exit code `0`. + +### Upgrade, channels, and uninstall + +Upgrade with the same channel you installed from: + +- Homebrew: + ```bash + brew update + brew upgrade vana + ``` +- macOS/Linux installer: + ```bash + curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/main/install/install.sh | sh + ``` +- Windows PowerShell installer: + ```powershell + iwr https://raw.githubusercontent.com/vana-com/vana-connect/main/install/install.ps1 -useb | iex + ``` + +Current channels: + +- `stable`: install from `main` or the eventual stable Homebrew tap state +- `canary`: install from the latest prerelease assets while this CLI is still rolling out + +To remove the installed CLI: + +- Homebrew: + ```bash + brew uninstall vana + ``` +- macOS/Linux installer: + ```bash + rm -f ~/.local/bin/vana + rm -rf ~/.local/share/vana + ``` +- Windows PowerShell installer: + - remove `%USERPROFILE%\AppData\Local\Microsoft\WinGet\Links\vana.cmd` + - remove `%USERPROFILE%\AppData\Local\Vana` + +To remove local runtime and collected state as well: + +```bash +rm -rf ~/.dataconnect +``` + ### CLI demos The branch also includes deterministic VHS demo scaffolding under @@ -229,6 +287,7 @@ Branch prerelease preview media: Current reviewable transcripts: - [`status`](./docs/transcripts/status.txt) +- [`doctor`](./docs/transcripts/doctor.txt) - [`setup`](./docs/transcripts/setup.txt) - [`sources`](./docs/transcripts/sources.txt) - [`data list`](./docs/transcripts/data-list.txt) diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md index ddf99301..c330021f 100644 --- a/docs/transcripts/README.md +++ b/docs/transcripts/README.md @@ -15,6 +15,7 @@ pnpm demo:transcripts Current generated surfaces include: - `status.txt` +- `doctor.txt` - `setup.txt` - `sources.txt` - `data-list.txt` diff --git a/docs/transcripts/doctor.txt b/docs/transcripts/doctor.txt new file mode 100644 index 00000000..10b7030f --- /dev/null +++ b/docs/transcripts/doctor.txt @@ -0,0 +1,22 @@ +Vana Connect doctor + +→ Summary + CLI: 0.8.1 + Runtime: installed + Personal Server: unavailable + Tracked sources: 4 + +→ Checks + CLI: Version 0.8.1 + Runtime: Browser available at /opt/playwright/chromium-1200/chrome-linux64/chrome + Personal Server: Unavailable. Connects will stay local until a Personal Server is reachable. + Data home: Present at ~/.dataconnect + State file: Present at ~/.dataconnect/vana-connect-state.json + Connector cache: Present at ~/.dataconnect/connectors + Browser profiles: Missing at ~/.dataconnect/browser-profiles + Logs: Present at ~/.dataconnect/logs + Tracked sources: 4 sources in local state + +→ Next + • Your Personal Server is unavailable, so successful runs will stay local. + • Check overall status with `vana status`. diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index d7ee254e..e6fd1c8a 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -43,6 +43,11 @@ async function main() { argv: ["vana", "status"], env: seededEnv, }, + { + name: "doctor.txt", + argv: ["vana", "doctor"], + env: seededEnv, + }, { name: "setup.txt", argv: ["vana", "setup"], diff --git a/src/cli/index.ts b/src/cli/index.ts index 51ed28c5..81e73968 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -2,16 +2,20 @@ import os from "node:os"; import fs from "node:fs"; import fsp from "node:fs/promises"; import path from "node:path"; +import { createRequire } from "node:module"; import { Separator, confirm, input, password, select } from "@inquirer/prompts"; -import { Command } from "commander"; +import { Command, CommanderError } from "commander"; import { createHumanRenderer } from "./render/index.js"; import { CliOutcomeStatus, + getCliStatePath, getBrowserProfilesDir, getConnectorCacheDir, + getDataConnectHome, getLastResultPath, + getLogsDir, readCliState, updateSourceState, } from "../core/index.js"; @@ -71,6 +75,7 @@ interface Emitter { } type RenderTone = "accent" | "success" | "warning" | "error" | "muted" | "info"; +const require = createRequire(import.meta.url); type SourceStatusDetail = | { @@ -87,8 +92,31 @@ type SourceStatusDetail = export async function runCli(argv = process.argv): Promise { const normalizedArgv = normalizeArgv(argv); const parsedOptions = extractGlobalOptions(normalizedArgv); + const cliVersion = getCliVersion(); const program = new Command(); - program.name("vana").description("Vana Connect CLI"); + program + .name("vana") + .description("Vana Connect CLI") + .version(cliVersion, "-v, --version", "Print CLI version") + .addHelpText( + "after", + ` +Examples: + vana status + vana connect github + vana data show github + vana doctor +`, + ); + program.exitOverride(); + + program + .command("version") + .description("Print CLI version") + .action(async () => { + process.stdout.write(`${cliVersion}\n`); + process.exitCode = 0; + }); program .command("connect [source]") @@ -118,6 +146,14 @@ export async function runCli(argv = process.argv): Promise { process.exitCode = await runStatus(parsedOptions); }); + program + .command("doctor") + .description("Inspect local CLI, runtime, and install health") + .option("--json", "Output machine-readable JSON") + .action(async () => { + process.exitCode = await runDoctor(parsedOptions); + }); + program .command("setup") .description("Install or repair the local runtime") @@ -153,7 +189,20 @@ export async function runCli(argv = process.argv): Promise { process.exitCode = await runDataPath(source, parsedOptions); }); - await program.parseAsync(normalizedArgv); + try { + await program.parseAsync(normalizedArgv); + } catch (error) { + if ( + error instanceof CommanderError && + (error.code === "commander.help" || + error.code === "commander.helpDisplayed" || + error.code === "commander.version") + ) { + process.exitCode = error.exitCode; + return Number(process.exitCode ?? 0); + } + throw error; + } return Number(process.exitCode ?? 0); } @@ -803,6 +852,7 @@ async function runStatus(options: GlobalOptions): Promise { const sources = await gatherSourceStatuses(state.sources, sourceMetadata); const status: CliStatus = { + cliVersion: getCliVersion(), runtime: runtime.state, runtimePath: runtime.runtimePath, personalServer: personalServer.state, @@ -898,6 +948,151 @@ async function runStatus(options: GlobalOptions): Promise { return 0; } +async function runDoctor(options: GlobalOptions): Promise { + const runtime = new ManagedPlaywrightRuntime(); + const personalServer = await detectPersonalServerTarget(); + const state = await readCliState(); + const cliVersion = getCliVersion(); + + const directories = [ + { + key: "dataHome", + label: "Data home", + path: getDataConnectHome(), + present: fs.existsSync(getDataConnectHome()), + }, + { + key: "stateFile", + label: "State file", + path: getCliStatePath(), + present: fs.existsSync(getCliStatePath()), + }, + { + key: "connectorCache", + label: "Connector cache", + path: getConnectorCacheDir(), + present: fs.existsSync(getConnectorCacheDir()), + }, + { + key: "browserProfiles", + label: "Browser profiles", + path: getBrowserProfilesDir(), + present: fs.existsSync(getBrowserProfilesDir()), + }, + { + key: "logs", + label: "Logs", + path: getLogsDir(), + present: fs.existsSync(getLogsDir()), + }, + ]; + + const checks = [ + { + key: "cli", + label: "CLI", + status: "ok", + detail: `Version ${cliVersion}`, + }, + { + key: "runtime", + label: "Runtime", + status: runtime.state === "installed" ? "ok" : "warn", + detail: + runtime.state === "installed" + ? `Browser available at ${formatDisplayPath(runtime.runtimePath ?? "unknown")}` + : "Run `vana setup` to install the local browser runtime.", + }, + { + key: "personalServer", + label: "Personal Server", + status: personalServer.state === "available" ? "ok" : "warn", + detail: + personalServer.state === "available" + ? (personalServer.url ?? "Available") + : "Unavailable. Connects will stay local until a Personal Server is reachable.", + }, + ...directories.map((entry) => ({ + key: entry.key, + label: entry.label, + status: entry.present ? "ok" : "warn", + detail: `${entry.present ? "Present" : "Missing"} at ${formatDisplayPath(entry.path)}`, + })), + { + key: "sources", + label: "Tracked sources", + status: "ok", + detail: `${Object.keys(state.sources).length} source${Object.keys(state.sources).length === 1 ? "" : "s"} in local state`, + }, + ] as const; + + const nextSteps = [ + ...(runtime.state !== "installed" + ? ["Install the local runtime with `vana setup`."] + : []), + ...(personalServer.state !== "available" + ? [ + "Your Personal Server is unavailable, so successful runs will stay local.", + ] + : []), + ...(Object.keys(state.sources).length === 0 + ? ["Connect your first source with `vana connect`."] + : ["Check overall status with `vana status`."]), + ]; + + const payload = { + cliVersion, + runtime: runtime.state, + runtimePath: runtime.runtimePath, + personalServer: personalServer.state, + personalServerUrl: personalServer.url, + checks, + nextSteps, + }; + + if (options.json) { + process.stdout.write(`${JSON.stringify(payload)}\n`); + return 0; + } + + const emit = createEmitter(options); + emit.title("Vana Connect doctor"); + emit.blank(); + emit.section("Summary"); + emit.keyValue("CLI", cliVersion, "muted"); + emit.keyValue("Runtime", runtime.state, toneForRuntime(runtime.state)); + emit.keyValue( + "Personal Server", + personalServer.state, + personalServer.state === "available" ? "success" : "warning", + ); + emit.keyValue( + "Tracked sources", + String(Object.keys(state.sources).length), + "muted", + ); + emit.blank(); + emit.section("Checks"); + for (const check of checks) { + const tone: RenderTone = + check.status === "ok" + ? "success" + : check.status === "warn" + ? "warning" + : "error"; + emit.keyValue(check.label, check.detail, tone); + } + if (nextSteps.length > 0) { + emit.blank(); + emit.section("Next"); + for (const step of nextSteps) { + emit.bullet(step); + } + } + + return 0; +} + async function runSetup(options: GlobalOptions): Promise { const emit = createEmitter(options); const runtime = new ManagedPlaywrightRuntime(); @@ -1772,6 +1967,11 @@ function normalizeArgv(argv: string[]): string[] { return argv; } +function getCliVersion(): string { + const packageJson = require("../../package.json") as { version?: string }; + return packageJson.version ?? "0.0.0"; +} + function formatDisplayPath(filePath: string): string { const homeDir = os.homedir(); if (filePath === homeDir) { diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index 12b2fe1d..7873c938 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -54,10 +54,12 @@ export const sourceStatusSchema = z.object({ export type SourceStatus = z.infer; export const cliStatusSchema = z.object({ + cliVersion: z.string().optional(), runtime: runtimeStateSchema, runtimePath: z.string().nullable(), personalServer: personalServerStateSchema, personalServerUrl: z.string().nullable(), + nextSteps: z.array(z.string()).optional(), sources: z.array(sourceStatusSchema), }); export type CliStatus = z.infer; diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index d53d5d5b..0e93244d 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -204,6 +204,7 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(JSON.parse(stdout)).toMatchObject({ + cliVersion: "0.8.1", runtime: "installed", runtimePath: "/tmp/playwright/chrome", personalServer: "available", @@ -222,6 +223,78 @@ describe("runCli", () => { }); }); + it("prints the CLI version with --version", async () => { + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "--version"]); + + expect(exitCode).toBe(0); + expect(stdout.trim()).toBe("0.8.1"); + }); + + it("prints the CLI version with the version command", async () => { + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "version"]); + + expect(exitCode).toBe(0); + expect(stdout.trim()).toBe("0.8.1"); + }); + + it("shows operational commands in top-level help", async () => { + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "--help"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain("version"); + expect(stdout).toContain("doctor"); + expect(stdout).toContain("vana doctor"); + expect(stdout).toContain("vana connect github"); + }); + + it("prints structured doctor output in json mode", async () => { + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + }, + }, + }); + mockDetectPersonalServerTarget.mockResolvedValue({ + state: "unavailable", + url: null, + }); + mockExistsSync.mockImplementation((target: string) => + [ + "/tmp/playwright/chrome", + "/tmp/browser-profiles", + "/tmp/.dataconnect", + ].includes(target), + ); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "doctor", "--json"]); + + expect(exitCode).toBe(0); + expect(JSON.parse(stdout)).toMatchObject({ + cliVersion: "0.8.1", + runtime: "installed", + runtimePath: "/tmp/playwright/chrome", + personalServer: "unavailable", + checks: expect.arrayContaining([ + expect.objectContaining({ + key: "cli", + status: "ok", + }), + expect.objectContaining({ + key: "runtime", + status: "ok", + }), + ]), + nextSteps: expect.any(Array), + }); + }); + it("renders a stable human transcript for setup when already installed", async () => { mockListAvailableSources.mockResolvedValue([ { From 540169ba811949ddefcb10ea6aab0985d0bc70af Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:13:40 -0500 Subject: [PATCH 125/249] docs(cli): add operational polish batch --- docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md | 16 +++++++ docs/CLI-EXECUTION-PLAYBOOK.md | 65 ++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) diff --git a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md index 55fb6163..3a3200bd 100644 --- a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md +++ b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md @@ -718,6 +718,22 @@ human `connect` flow itself. This batch should make `vana connect ` feel like a product journey, not just a sequence of log lines. +### Operational polish after beauty + +Do not let the beauty work crowd out the less visible CLI quality bar. + +After the static and connect-narrative beauty batches are stable, run an +explicit operational-polish pass covering: + +- `vana --version` / `vana version` +- help quality +- a diagnostics surface, likely `vana doctor` +- exit-code matrix review +- JSON contract audit +- upgrade/uninstall/channel clarity + +This is part of the best-in-class bar even though it is not primarily visual. + ### Batch 4: Runtime event enrichment for beauty Only after the human connect narrative is visibly better should we deepen the diff --git a/docs/CLI-EXECUTION-PLAYBOOK.md b/docs/CLI-EXECUTION-PLAYBOOK.md index 93e42cd4..20a127b4 100644 --- a/docs/CLI-EXECUTION-PLAYBOOK.md +++ b/docs/CLI-EXECUTION-PLAYBOOK.md @@ -390,6 +390,71 @@ This batch strengthens the CLI as a tool, not just a guided product surface. 2. human-surface formatting 3. transcript examples for shell composability +## Batch 5A: Operational Polish And CLI Contract + +This batch exists to close the non-glamorous gaps that separate a strong CLI +from a best-in-class one. + +### Goals + +- make versioning, diagnostics, and lifecycle operations obvious +- make the shell contract explicit and reliable +- improve help/discoverability without weakening the human product surface + +### Work items + +1. Add an explicit version surface: + - `vana --version` + - `vana version` + - version visibility in `vana --help` + - version in `status --json` +2. Add a diagnostics surface: + - likely `vana doctor` + - runtime/browser/install checks + - actionable remediation output +3. Define and verify the exit-code matrix: + - success + - cancel + - source required + - setup required + - needs input + - legacy/manual step required + - connector unavailable + - runtime/internal failure +4. Audit and tighten the JSON contract: + - stable top-level shapes + - no noisy human output in `--json` + - predictable error payloads +5. Improve lifecycle discoverability: + - upgrade instructions + - uninstall/cleanup instructions + - canary vs stable channel clarity +6. Improve help quality: + - command descriptions + - examples + - first-step orientation + +### Exit criteria + +- a new user can discover version, help, diagnostics, and upgrade paths from the CLI itself +- script authors have a documented and test-covered exit-code matrix +- `--json` behavior is explicit, stable, and reviewed as a contract +- uninstall/cleanup and channel guidance exist in docs + +### Good subagent slices + +1. version/help command work +2. `doctor` command scaffolding and tests +3. exit-code matrix tests +4. JSON contract audit/tests +5. install/upgrade/uninstall doc pass + +Primary-agent integration: + +- deciding what belongs in `doctor` vs `status` +- deciding what version information belongs in normal human surfaces +- protecting the CLI from “helpful” additions that bloat the contract + ## Batch 6: Debuggability And Operator Affordances This batch is for connector authors, agents, and support/debug workflows. From 469d44f38e8c0644811d77734fc3e9c7a4ff77f5 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:16:31 -0500 Subject: [PATCH 126/249] feat(cli): add overview lines to static surfaces --- docs/transcripts/data-list.txt | 2 ++ docs/transcripts/sources.txt | 2 ++ docs/transcripts/status.txt | 2 ++ src/cli/index.ts | 56 ++++++++++++++++++++++++++++++++++ test/cli/index.test.ts | 6 ++++ 5 files changed, 68 insertions(+) diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt index fd98a3b8..2e9d68ee 100644 --- a/docs/transcripts/data-list.txt +++ b/docs/transcripts/data-list.txt @@ -1,5 +1,7 @@ Collected data (2) +local dataset (2) • synced dataset (0) + GitHub [local] Profile: tnunamak Repositories: 2 diff --git a/docs/transcripts/sources.txt b/docs/transcripts/sources.txt index 7eebf49c..052d7c3b 100644 --- a/docs/transcripts/sources.txt +++ b/docs/transcripts/sources.txt @@ -1,5 +1,7 @@ Available sources (3) +ready now (2) • with manual step (1) + → Ready now (2) GitHub [interactive] [installed] Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index b5f2edf2..05ada8d1 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -1,5 +1,7 @@ Vana Connect status +need attention (2) • connected (2) + → Environment Runtime: installed Browser: /opt/playwright/chromium-1200/chrome-linux64/chrome diff --git a/src/cli/index.ts b/src/cli/index.ts index 81e73968..91a87612 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -789,6 +789,23 @@ async function runList(options: GlobalOptions): Promise { : "Available sources", ); emit.blank(); + if (enrichedSources.length > 0) { + const readyCount = enrichedSources.filter( + (source) => source.authMode !== "legacy", + ).length; + const manualCount = enrichedSources.filter( + (source) => source.authMode === "legacy", + ).length; + emit.info( + joinOverviewParts([ + formatCountLabel("ready now", readyCount), + manualCount > 0 + ? formatCountLabel("with manual step", manualCount) + : "", + ]), + ); + emit.blank(); + } const groups = [ { title: "Ready now", @@ -873,6 +890,24 @@ async function runStatus(options: GlobalOptions): Promise { emit.title("Vana Connect status"); emit.blank(); + emit.info( + joinOverviewParts([ + formatCountLabel( + "need attention", + status.sources.filter((source) => rankSourceStatus(source) <= 4).length, + ), + formatCountLabel( + "connected", + status.sources.filter( + (source) => + source.dataState === "ingested_personal_server" || + source.dataState === "collected_local" || + source.dataState === "ingest_failed", + ).length, + ), + ]), + ); + emit.blank(); emit.section("Environment"); emit.keyValue("Runtime", status.runtime, toneForRuntime(status.runtime)); if (status.runtimePath) { @@ -1213,6 +1248,23 @@ async function runDataList(options: GlobalOptions): Promise { : "Collected data", ); emit.blank(); + emit.info( + joinOverviewParts([ + formatCountLabel( + "local dataset", + datasetRecords.filter( + (dataset) => dataset.dataState !== "ingested_personal_server", + ).length, + ), + formatCountLabel( + "synced dataset", + datasetRecords.filter( + (dataset) => dataset.dataState === "ingested_personal_server", + ).length, + ), + ]), + ); + emit.blank(); datasetRecords.forEach((dataset, index) => { if (index > 0) { emit.blank(); @@ -1498,6 +1550,10 @@ function formatCountLabel(label: string, count: number): string { return `${label} (${count})`; } +function joinOverviewParts(parts: string[]): string { + return parts.filter(Boolean).join(" • "); +} + function humanizeField(value: string): string { return value .replace(/([a-z])([A-Z])/g, "$1 $2") diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 0e93244d..315a4dcb 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -420,6 +420,8 @@ describe("runCli", () => { expect(normalizeRenderedTimestamps(stdout)).toMatchInlineSnapshot(` "Vana Connect status + need attention (1) • connected (1) + → Environment Runtime: installed Browser: /tmp/playwright/chrome @@ -859,6 +861,8 @@ describe("runCli", () => { expect(normalizeRenderedTimestamps(stdout)).toMatchInlineSnapshot(` "Collected data (2) + local dataset (2) • synced dataset (0) + GitHub [local] Profile: tnunamak Repositories: 2 @@ -1034,6 +1038,8 @@ describe("runCli", () => { expect(stdout).toMatchInlineSnapshot(` "Available sources (3) + ready now (2) • with manual step (1) + → Ready now (2) GitHub [interactive] Exports GitHub data. From d1da70dd6b5c0b697c4774854d47e1a4a8bd87e8 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:20:07 -0500 Subject: [PATCH 127/249] feat(cli): polish help and doctor contracts --- src/cli/index.ts | 73 ++++++++++++++++++++++++++++++++++++------ src/core/cli-types.ts | 19 +++++++++++ test/cli/index.test.ts | 13 ++++++++ 3 files changed, 95 insertions(+), 10 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 91a87612..0a6dc1d8 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -20,6 +20,8 @@ import { updateSourceState, } from "../core/index.js"; import type { + CliDoctor, + CliDoctorCheck, CliEvent, CliOutcome, CliStatus, @@ -118,8 +120,9 @@ Examples: process.exitCode = 0; }); - program + const connectCommand = program .command("connect [source]") + .description("Connect a source and collect data") .option("--json", "Output machine-readable JSON") .option("--no-input", "Fail instead of prompting for input") .option("--yes", "Approve safe setup prompts automatically") @@ -129,32 +132,65 @@ Examples: ? await runConnect(source, parsedOptions) : await runConnectEntry(parsedOptions); }); + connectCommand.addHelpText( + "after", + ` +Examples: + vana connect + vana connect github + vana connect github --json --no-input +`, + ); - program + const sourcesCommand = program .command("sources") .description("List supported sources") .option("--json", "Output machine-readable JSON") .action(async () => { process.exitCode = await runList(parsedOptions); }); + sourcesCommand.addHelpText( + "after", + ` +Examples: + vana sources + vana sources --json | jq '.sources' +`, + ); - program + const statusCommand = program .command("status") .description("Show runtime and Personal Server status") .option("--json", "Output machine-readable JSON") .action(async () => { process.exitCode = await runStatus(parsedOptions); }); + statusCommand.addHelpText( + "after", + ` +Examples: + vana status + vana status --json | jq +`, + ); - program + const doctorCommand = program .command("doctor") .description("Inspect local CLI, runtime, and install health") .option("--json", "Output machine-readable JSON") .action(async () => { process.exitCode = await runDoctor(parsedOptions); }); + doctorCommand.addHelpText( + "after", + ` +Examples: + vana doctor + vana doctor --json | jq +`, + ); - program + const setupCommand = program .command("setup") .description("Install or repair the local runtime") .option("--json", "Output machine-readable JSON") @@ -162,8 +198,25 @@ Examples: .action(async () => { process.exitCode = await runSetup(parsedOptions); }); + setupCommand.addHelpText( + "after", + ` +Examples: + vana setup + vana setup --yes +`, + ); const data = program.command("data").description("Inspect collected data"); + data.addHelpText( + "after", + ` +Examples: + vana data list + vana data show github + vana data path github --json +`, + ); data .command("list") @@ -1022,7 +1075,7 @@ async function runDoctor(options: GlobalOptions): Promise { }, ]; - const checks = [ + const checks: CliDoctorCheck[] = [ { key: "cli", label: "CLI", @@ -1047,7 +1100,7 @@ async function runDoctor(options: GlobalOptions): Promise { ? (personalServer.url ?? "Available") : "Unavailable. Connects will stay local until a Personal Server is reachable.", }, - ...directories.map((entry) => ({ + ...directories.map((entry) => ({ key: entry.key, label: entry.label, status: entry.present ? "ok" : "warn", @@ -1056,10 +1109,10 @@ async function runDoctor(options: GlobalOptions): Promise { { key: "sources", label: "Tracked sources", - status: "ok", + status: "ok" as const, detail: `${Object.keys(state.sources).length} source${Object.keys(state.sources).length === 1 ? "" : "s"} in local state`, }, - ] as const; + ]; const nextSteps = [ ...(runtime.state !== "installed" @@ -1075,7 +1128,7 @@ async function runDoctor(options: GlobalOptions): Promise { : ["Check overall status with `vana status`."]), ]; - const payload = { + const payload: CliDoctor = { cliVersion, runtime: runtime.state, runtimePath: runtime.runtimePath, diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index 7873c938..5de13262 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -64,6 +64,25 @@ export const cliStatusSchema = z.object({ }); export type CliStatus = z.infer; +export const cliDoctorCheckSchema = z.object({ + key: z.string(), + label: z.string(), + status: z.enum(["ok", "warn", "error"]), + detail: z.string(), +}); +export type CliDoctorCheck = z.infer; + +export const cliDoctorSchema = z.object({ + cliVersion: z.string(), + runtime: runtimeStateSchema, + runtimePath: z.string().nullable(), + personalServer: personalServerStateSchema, + personalServerUrl: z.string().nullable(), + checks: z.array(cliDoctorCheckSchema), + nextSteps: z.array(z.string()), +}); +export type CliDoctor = z.infer; + export const cliEventSchema = z.object({ type: z.string(), source: z.string().optional(), diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 315a4dcb..32ff060a 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -246,10 +246,23 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(stdout).toContain("version"); expect(stdout).toContain("doctor"); + expect(stdout).toContain( + "connect [options] [source] Connect a source and collect data", + ); expect(stdout).toContain("vana doctor"); expect(stdout).toContain("vana connect github"); }); + it("shows examples in connect help", async () => { + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect", "--help"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain("Connect a source and collect data"); + expect(stdout).toContain("vana connect"); + expect(stdout).toContain("vana connect github --json --no-input"); + }); + it("prints structured doctor output in json mode", async () => { mockReadCliState.mockResolvedValue({ version: 1, From d7207b96f352b85c9800e1f86475747600322ac1 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:21:30 -0500 Subject: [PATCH 128/249] feat(cli): improve manual-step no-input guidance --- docs/transcripts/connect-shop-no-input.txt | 3 ++- src/cli/index.ts | 9 +++++++-- test/cli/index.test.ts | 5 ++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/transcripts/connect-shop-no-input.txt b/docs/transcripts/connect-shop-no-input.txt index 7b33b088..75b05a19 100644 --- a/docs/transcripts/connect-shop-no-input.txt +++ b/docs/transcripts/connect-shop-no-input.txt @@ -11,7 +11,8 @@ Connecting to Shop... Collecting your data... → Manual step required -This source needs a manual browser step, but prompting is disabled in --no-input mode. +Shop still needs a manual browser step on this machine. + Because `--no-input` is enabled, Vana stopped before opening that session. → Next • Run `vana connect shop` without `--no-input`. diff --git a/src/cli/index.ts b/src/cli/index.ts index 0a6dc1d8..37dda78b 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -480,6 +480,9 @@ async function runConnect( emit.info( `${displayName} needs additional input before it can connect.`, ); + emit.detail( + `Because ${emit.code("--no-input")} is enabled, Vana stopped before prompting in this terminal.`, + ); emit.blank(); emit.section("Next"); emit.bullet( @@ -549,8 +552,10 @@ async function runConnect( emit.blank(); emit.section("Manual step required"); emit.info( - event.message ?? - "This connector needs a manual browser step that is not available in non-interactive mode.", + `${displayName} still needs a manual browser step on this machine.`, + ); + emit.detail( + `Because ${emit.code("--no-input")} is enabled, Vana stopped before opening that session.`, ); emit.blank(); emit.section("Next"); diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 32ff060a..d4847f7a 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -570,7 +570,10 @@ describe("runCli", () => { expect(exitCode).toBe(1); expect(stdout).toContain( - "This source needs a manual browser step, but prompting is disabled in --no-input mode.", + "Shop still needs a manual browser step on this machine.", + ); + expect(stdout).toContain( + "Because `--no-input` is enabled, Vana stopped before opening that session.", ); expect(stdout).toContain("Run `vana connect shop` without `--no-input`."); expect(stdout).toContain("Run log:"); From fdf13230b86347636b8492b8fd764b9cb290d4c4 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:24:08 -0500 Subject: [PATCH 129/249] feat(cli): strengthen success and data next steps --- docs/transcripts/connect-github-success.txt | 1 + docs/transcripts/data-list.txt | 1 + docs/transcripts/data-show-github.txt | 1 + src/cli/index.ts | 3 +++ test/cli/index.test.ts | 3 +++ 5 files changed, 9 insertions(+) diff --git a/docs/transcripts/connect-github-success.txt b/docs/transcripts/connect-github-success.txt index 21adb03b..77ad8b2b 100644 --- a/docs/transcripts/connect-github-success.txt +++ b/docs/transcripts/connect-github-success.txt @@ -30,4 +30,5 @@ Collecting your data... → Next • Inspect the data with `vana data show github` + • Connect another source with `vana sources` • Or check overall status with `vana status` diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt index 2e9d68ee..2f398498 100644 --- a/docs/transcripts/data-list.txt +++ b/docs/transcripts/data-list.txt @@ -20,3 +20,4 @@ Spotify [local] → Next • Inspect GitHub with `vana data show github`. • Or print its path with `vana data path github`. + • Connect another source with `vana sources`. diff --git a/docs/transcripts/data-show-github.txt b/docs/transcripts/data-show-github.txt index 54fee7e3..92fc7c80 100644 --- a/docs/transcripts/data-show-github.txt +++ b/docs/transcripts/data-show-github.txt @@ -12,5 +12,6 @@ GitHub data → Next • Print the path with `vana data path github`. • Reconnect GitHub with `vana connect github`. + • Connect another source with `vana sources`. • Inspect other datasets with `vana data list`. • Check overall status with `vana status`. diff --git a/src/cli/index.ts b/src/cli/index.ts index 37dda78b..c7192d35 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -703,6 +703,7 @@ async function runConnect( emit.blank(); emit.section("Next"); emit.bullet(`Inspect the data with ${dataCommand}`); + emit.bullet(`Connect another source with ${emit.code("vana sources")}`); emit.bullet(`Or check overall status with ${statusCommand}`); emit.event({ type: "outcome", @@ -1363,6 +1364,7 @@ async function runDataList(options: GlobalOptions): Promise { emit.bullet( `Or print its path with ${emit.code(`vana data path ${datasetRecords[0].source}`)}.`, ); + emit.bullet(`Connect another source with ${emit.code("vana sources")}.`); return 0; } @@ -1457,6 +1459,7 @@ async function runDataShow( emit.bullet( `Reconnect ${displaySource(source, sourceLabels)} with ${emit.code(`vana connect ${source}`)}.`, ); + emit.bullet(`Connect another source with ${emit.code("vana sources")}.`); if (datasetCount > 1) { emit.bullet( `Inspect other datasets with ${emit.code("vana data list")}.`, diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index d4847f7a..869c5f4f 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -680,6 +680,7 @@ describe("runCli", () => { → Next • Print the path with \`vana data path github\`. • Reconnect GitHub with \`vana connect github\`. + • Connect another source with \`vana sources\`. • Check overall status with \`vana status\`. " `); @@ -897,6 +898,7 @@ describe("runCli", () => { → Next • Inspect GitHub with \`vana data show github\`. • Or print its path with \`vana data path github\`. + • Connect another source with \`vana sources\`. " `); }); @@ -1430,6 +1432,7 @@ describe("runCli", () => { expect(stdout).toContain("Unavailable, so this run stayed local."); expect(stdout).toContain("Next"); expect(stdout).toContain("vana data show github"); + expect(stdout).toContain("vana sources"); }); it("records ingest failures as local data with sync failure state", async () => { From aa4ab2a5504a3c2528884e582aa37053a38a1e26 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:25:17 -0500 Subject: [PATCH 130/249] test(cli): cover human no-input input-required flow --- test/cli/index.test.ts | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 869c5f4f..e4ffb3d1 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -536,6 +536,48 @@ describe("runCli", () => { ); }); + it("shows a clear human message when input is required in no-input mode", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + description: "Exports GitHub data.", + }, + ]); + fetchConnectorResult = { + connectorPath: "/tmp/connectors/github/github-playwright.js", + logPath: "/tmp/logs/fetch.log", + }; + runConnectorEvents = [ + { + type: "needs-input", + source: "github", + message: "Log in to GitHub", + fields: ["username", "password"], + }, + ]; + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli([ + "node", + "vana", + "connect", + "github", + "--no-input", + ]); + + expect(exitCode).toBe(1); + expect(stdout).toContain("→ Input required"); + expect(stdout).toContain( + "GitHub needs additional input before it can connect.", + ); + expect(stdout).toContain( + "Because `--no-input` is enabled, Vana stopped before prompting in this terminal.", + ); + expect(stdout).toContain("Run `vana connect github` without `--no-input`."); + }); + it("prints a clean manual-step message for legacy connectors in no-input mode", async () => { mockListAvailableSources.mockResolvedValue([ { From ce4ae8887d4d7d16ea81c7c7e49be1f2c90c0381 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:26:32 -0500 Subject: [PATCH 131/249] chore(demo): add connect no-input transcript --- README.md | 2 ++ docs/transcripts/README.md | 1 + docs/transcripts/connect-github-no-input.txt | 19 +++++++++++++++++++ scripts/capture-cli-transcripts.mjs | 6 ++++++ 4 files changed, 28 insertions(+) create mode 100644 docs/transcripts/connect-github-no-input.txt diff --git a/README.md b/README.md index 259b0620..c4148d1d 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ Current reviewable transcripts: - [`data show github (missing)`](./docs/transcripts/data-show-github-missing.txt) - [`data path github`](./docs/transcripts/data-path-github.txt) - [`connect github`](./docs/transcripts/connect-github-success.txt) +- [`connect github --no-input`](./docs/transcripts/connect-github-no-input.txt) - [`connect shop --no-input`](./docs/transcripts/connect-shop-no-input.txt) - [`connect steam --no-input`](./docs/transcripts/connect-steam-no-input.txt) @@ -296,6 +297,7 @@ Current reviewable transcripts: - [`data show github (missing)`](./docs/transcripts/data-show-github-missing.txt) - [`data path github`](./docs/transcripts/data-path-github.txt) - [`connect github`](./docs/transcripts/connect-github-success.txt) +- [`connect github --no-input`](./docs/transcripts/connect-github-no-input.txt) - [`connect shop --no-input`](./docs/transcripts/connect-shop-no-input.txt) - [`connect steam --no-input`](./docs/transcripts/connect-steam-no-input.txt) diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md index c330021f..8779edcf 100644 --- a/docs/transcripts/README.md +++ b/docs/transcripts/README.md @@ -24,5 +24,6 @@ Current generated surfaces include: - `data-show-github-missing.txt` - `data-path-github.txt` - `connect-github-success.txt` +- `connect-github-no-input.txt` - `connect-shop-no-input.txt` - `connect-steam-no-input.txt` diff --git a/docs/transcripts/connect-github-no-input.txt b/docs/transcripts/connect-github-no-input.txt new file mode 100644 index 00000000..511506ff --- /dev/null +++ b/docs/transcripts/connect-github-no-input.txt @@ -0,0 +1,19 @@ +Connect GitHub + +→ Preparing +Finding a connector for GitHub... +Connector ready. +Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. + If needed, Vana Connect will ask for details in this terminal. Those details stay local to this machine. + +→ Connecting +Connecting to GitHub... +Collecting your data... + Checking GitHub login... + +→ Input required +GitHub needs additional input before it can connect. + Because `--no-input` is enabled, Vana stopped before prompting in this terminal. + +→ Next + • Run `vana connect github` without `--no-input`. diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index e6fd1c8a..850b978b 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -89,6 +89,12 @@ async function main() { argv: ["vana", "connect", "github"], env: seededEnv, }, + { + name: "connect-github-no-input.txt", + argv: ["vana", "connect", "github", "--no-input"], + env: freshEnv, + allowFailure: true, + }, { name: "connect-shop-no-input.txt", argv: ["vana", "connect", "shop", "--no-input"], From c2f441a284ae4bcbcf2a52575b338a4965946dc2 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:27:21 -0500 Subject: [PATCH 132/249] test(cli): validate json output with schemas --- test/cli/index.test.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index e4ffb3d1..e21b3dea 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -1,4 +1,5 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { cliDoctorSchema, cliStatusSchema } from "../../src/core/cli-types.js"; const mockListAvailableSources = vi.fn(); const mockDetectPersonalServerTarget = vi.fn(); @@ -201,9 +202,10 @@ describe("runCli", () => { const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "status", "--json"]); + const parsed = cliStatusSchema.parse(JSON.parse(stdout)); expect(exitCode).toBe(0); - expect(JSON.parse(stdout)).toMatchObject({ + expect(parsed).toMatchObject({ cliVersion: "0.8.1", runtime: "installed", runtimePath: "/tmp/playwright/chrome", @@ -287,9 +289,10 @@ describe("runCli", () => { const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "doctor", "--json"]); + const parsed = cliDoctorSchema.parse(JSON.parse(stdout)); expect(exitCode).toBe(0); - expect(JSON.parse(stdout)).toMatchObject({ + expect(parsed).toMatchObject({ cliVersion: "0.8.1", runtime: "installed", runtimePath: "/tmp/playwright/chrome", From f6f868d2c4b65268397d91c87b597cfa85bd4441 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:29:45 -0500 Subject: [PATCH 133/249] feat(cli): add schemas for sources and data json --- src/core/cli-types.ts | 65 ++++++++++++++++++++++++++++++++++++++++++ test/cli/index.test.ts | 21 ++++++++++---- 2 files changed, 81 insertions(+), 5 deletions(-) diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index 5de13262..1e0079e5 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -53,6 +53,18 @@ export const sourceStatusSchema = z.object({ }); export type SourceStatus = z.infer; +export const listedSourceSchema = z + .object({ + id: z.string(), + name: z.string(), + company: z.string().optional(), + description: z.string().optional(), + authMode: z.enum(["automated", "interactive", "legacy"]).optional(), + installed: z.boolean(), + }) + .passthrough(); +export type ListedSource = z.infer; + export const cliStatusSchema = z.object({ cliVersion: z.string().optional(), runtime: runtimeStateSchema, @@ -83,6 +95,59 @@ export const cliDoctorSchema = z.object({ }); export type CliDoctor = z.infer; +export const cliSourcesSchema = z.object({ + count: z.number(), + recommendedSource: listedSourceSchema.nullable(), + sources: z.array(listedSourceSchema), +}); +export type CliSources = z.infer; + +export const datasetSummarySchema = z.object({ + lines: z.array(z.string()), +}); +export type DatasetSummary = z.infer; + +export const datasetRecordSchema = z.object({ + source: z.string(), + name: z.string().nullable().optional(), + authMode: z + .enum(["automated", "interactive", "legacy"]) + .nullable() + .optional(), + dataState: dataStateSchema.optional(), + lastRunAt: z.string().nullable().optional(), + path: z.string().nullable().optional(), + summary: datasetSummarySchema.nullable().optional(), +}); +export type DatasetRecord = z.infer; + +export const cliDataListSchema = z.object({ + count: z.number(), + latestDataset: datasetRecordSchema.nullable(), + datasets: z.array(datasetRecordSchema), +}); +export type CliDataList = z.infer; + +export const cliDataPathSchema = z.object({ + source: z.string(), + name: z.string(), + path: z.string(), + lastRunAt: z.string().nullable(), + dataState: dataStateSchema.nullable(), +}); +export type CliDataPath = z.infer; + +export const cliDataShowSchema = z.object({ + source: z.string(), + name: z.string(), + path: z.string(), + summary: datasetSummarySchema.nullable(), + lastRunAt: z.string().nullable(), + dataState: dataStateSchema.nullable(), + data: z.record(z.string(), z.unknown()), +}); +export type CliDataShow = z.infer; + export const cliEventSchema = z.object({ type: z.string(), source: z.string().optional(), diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index e21b3dea..e3f451ee 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -1,5 +1,12 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { cliDoctorSchema, cliStatusSchema } from "../../src/core/cli-types.js"; +import { + cliDataListSchema, + cliDataPathSchema, + cliDataShowSchema, + cliDoctorSchema, + cliSourcesSchema, + cliStatusSchema, +} from "../../src/core/cli-types.js"; const mockListAvailableSources = vi.fn(); const mockDetectPersonalServerTarget = vi.fn(); @@ -172,9 +179,10 @@ describe("runCli", () => { const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "sources", "--json"]); + const parsed = cliSourcesSchema.parse(JSON.parse(stdout)); expect(exitCode).toBe(0); - expect(JSON.parse(stdout)).toEqual({ + expect(parsed).toEqual({ count: 2, recommendedSource: { id: "github", name: "GitHub", installed: true }, sources: [ @@ -660,9 +668,10 @@ describe("runCli", () => { "github", "--json", ]); + const parsed = cliDataShowSchema.parse(JSON.parse(stdout)); expect(exitCode).toBe(0); - expect(JSON.parse(stdout)).toEqual({ + expect(parsed).toEqual({ source: "github", name: "GitHub", path: "/tmp/.dataconnect/github-result.json", @@ -851,9 +860,10 @@ describe("runCli", () => { const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "data", "list", "--json"]); + const parsed = cliDataListSchema.parse(JSON.parse(stdout)); expect(exitCode).toBe(0); - expect(JSON.parse(stdout)).toMatchObject({ + expect(parsed).toMatchObject({ count: 2, latestDataset: { source: "github", @@ -994,9 +1004,10 @@ describe("runCli", () => { "github", "--json", ]); + const parsed = cliDataPathSchema.parse(JSON.parse(stdout)); expect(exitCode).toBe(0); - expect(JSON.parse(stdout)).toEqual({ + expect(parsed).toEqual({ source: "github", name: "GitHub", path: "/tmp/.dataconnect/github-result.json", From 6c4f58f48ecf959c1b8f8bff4b8fb73d620e9ceb Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:31:26 -0500 Subject: [PATCH 134/249] feat(cli): expose doctor paths in json --- src/cli/index.ts | 7 +++++++ src/core/cli-types.ts | 7 +++++++ test/cli/index.test.ts | 9 +++++++++ 3 files changed, 23 insertions(+) diff --git a/src/cli/index.ts b/src/cli/index.ts index c7192d35..189cb54e 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1140,6 +1140,13 @@ async function runDoctor(options: GlobalOptions): Promise { runtimePath: runtime.runtimePath, personalServer: personalServer.state, personalServerUrl: personalServer.url, + paths: { + dataHome: getDataConnectHome(), + stateFile: getCliStatePath(), + connectorCache: getConnectorCacheDir(), + browserProfiles: getBrowserProfilesDir(), + logs: getLogsDir(), + }, checks, nextSteps, }; diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index 1e0079e5..e48d9cf7 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -90,6 +90,13 @@ export const cliDoctorSchema = z.object({ runtimePath: z.string().nullable(), personalServer: personalServerStateSchema, personalServerUrl: z.string().nullable(), + paths: z.object({ + dataHome: z.string(), + stateFile: z.string(), + connectorCache: z.string(), + browserProfiles: z.string(), + logs: z.string(), + }), checks: z.array(cliDoctorCheckSchema), nextSteps: z.array(z.string()), }); diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index e3f451ee..51665e21 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -305,6 +305,15 @@ describe("runCli", () => { runtime: "installed", runtimePath: "/tmp/playwright/chrome", personalServer: "unavailable", + paths: { + dataHome: expect.stringMatching(/\.dataconnect$/), + stateFile: expect.stringMatching( + /\.dataconnect\/vana-connect-state\.json$/, + ), + connectorCache: expect.stringMatching(/\.dataconnect\/connectors$/), + browserProfiles: "/tmp/browser-profiles", + logs: expect.stringMatching(/\.dataconnect\/logs$/), + }, checks: expect.arrayContaining([ expect.objectContaining({ key: "cli", From 513f668a7c9cecaf3df3a2ce1580173568e621f2 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:33:26 -0500 Subject: [PATCH 135/249] feat(cli): add schemas for common json errors --- src/core/cli-types.ts | 32 ++++++++++++++++++++++++++++++++ test/cli/index.test.ts | 11 ++++++++--- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index e48d9cf7..9db0abcc 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -155,6 +155,38 @@ export const cliDataShowSchema = z.object({ }); export type CliDataShow = z.infer; +export const sourceRequiredErrorSchema = z.object({ + error: z.literal("source_required"), + message: z.string(), + suggestedSource: z + .object({ + id: z.string(), + name: z.string(), + authMode: z.enum(["automated", "interactive", "legacy"]).optional(), + }) + .optional(), +}); +export type SourceRequiredError = z.infer; + +export const datasetNotFoundErrorSchema = z.object({ + error: z.literal("dataset_not_found"), + source: z.string(), + name: z.string().optional(), + message: z.string(), + nextSteps: z.array(z.string()).optional(), +}); +export type DatasetNotFoundError = z.infer; + +export const datasetReadFailedErrorSchema = z.object({ + error: z.literal("dataset_read_failed"), + source: z.string(), + path: z.string(), + message: z.string(), +}); +export type DatasetReadFailedError = z.infer< + typeof datasetReadFailedErrorSchema +>; + export const cliEventSchema = z.object({ type: z.string(), source: z.string().optional(), diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 51665e21..7a8d4827 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -4,8 +4,10 @@ import { cliDataPathSchema, cliDataShowSchema, cliDoctorSchema, + datasetNotFoundErrorSchema, cliSourcesSchema, cliStatusSchema, + sourceRequiredErrorSchema, } from "../../src/core/cli-types.js"; const mockListAvailableSources = vi.fn(); @@ -770,9 +772,10 @@ describe("runCli", () => { "github", "--json", ]); + const parsed = datasetNotFoundErrorSchema.parse(JSON.parse(stdout)); expect(exitCode).toBe(1); - expect(JSON.parse(stdout)).toEqual({ + expect(parsed).toEqual({ error: "dataset_not_found", source: "github", message: @@ -1042,9 +1045,10 @@ describe("runCli", () => { "github", "--json", ]); + const parsed = datasetNotFoundErrorSchema.parse(JSON.parse(stdout)); expect(exitCode).toBe(1); - expect(JSON.parse(stdout)).toEqual({ + expect(parsed).toEqual({ error: "dataset_not_found", source: "github", name: "GitHub", @@ -1219,9 +1223,10 @@ describe("runCli", () => { ]); const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "connect", "--json"]); + const parsed = sourceRequiredErrorSchema.parse(JSON.parse(stdout)); expect(exitCode).toBe(1); - expect(JSON.parse(stdout)).toEqual({ + expect(parsed).toEqual({ error: "source_required", message: "Specify a source. Start with `vana connect github`, or run `vana sources` to see available options.", From 857b2c68527b26672b6461bcab28d5c13cab85a2 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:34:45 -0500 Subject: [PATCH 136/249] feat(cli): expose release channel in status and doctor --- docs/transcripts/doctor.txt | 1 + src/cli/index.ts | 8 ++++++++ src/core/cli-types.ts | 5 +++++ test/cli/index.test.ts | 2 ++ 4 files changed, 16 insertions(+) diff --git a/docs/transcripts/doctor.txt b/docs/transcripts/doctor.txt index 10b7030f..593afc92 100644 --- a/docs/transcripts/doctor.txt +++ b/docs/transcripts/doctor.txt @@ -2,6 +2,7 @@ Vana Connect doctor → Summary CLI: 0.8.1 + Channel: stable Runtime: installed Personal Server: unavailable Tracked sources: 4 diff --git a/src/cli/index.ts b/src/cli/index.ts index 189cb54e..7255f3d0 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -929,6 +929,7 @@ async function runStatus(options: GlobalOptions): Promise { const status: CliStatus = { cliVersion: getCliVersion(), + channel: getCliChannel(), runtime: runtime.state, runtimePath: runtime.runtimePath, personalServer: personalServer.state, @@ -1047,6 +1048,7 @@ async function runDoctor(options: GlobalOptions): Promise { const personalServer = await detectPersonalServerTarget(); const state = await readCliState(); const cliVersion = getCliVersion(); + const cliChannel = getCliChannel(cliVersion); const directories = [ { @@ -1136,6 +1138,7 @@ async function runDoctor(options: GlobalOptions): Promise { const payload: CliDoctor = { cliVersion, + channel: cliChannel, runtime: runtime.state, runtimePath: runtime.runtimePath, personalServer: personalServer.state, @@ -1161,6 +1164,7 @@ async function runDoctor(options: GlobalOptions): Promise { emit.blank(); emit.section("Summary"); emit.keyValue("CLI", cliVersion, "muted"); + emit.keyValue("Channel", cliChannel, "muted"); emit.keyValue("Runtime", runtime.state, toneForRuntime(runtime.state)); emit.keyValue( "Personal Server", @@ -2096,6 +2100,10 @@ function getCliVersion(): string { return packageJson.version ?? "0.0.0"; } +function getCliChannel(version = getCliVersion()): "stable" | "canary" { + return version.includes("canary") ? "canary" : "stable"; +} + function formatDisplayPath(filePath: string): string { const homeDir = os.homedir(); if (filePath === homeDir) { diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index 9db0abcc..ae18f1e0 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -28,6 +28,9 @@ export const personalServerStateSchema = z.enum([ ]); export type PersonalServerState = z.infer; +export const cliChannelSchema = z.enum(["stable", "canary"]); +export type CliChannel = z.infer; + export const dataStateSchema = z.enum([ "none", "collected_local", @@ -67,6 +70,7 @@ export type ListedSource = z.infer; export const cliStatusSchema = z.object({ cliVersion: z.string().optional(), + channel: cliChannelSchema.optional(), runtime: runtimeStateSchema, runtimePath: z.string().nullable(), personalServer: personalServerStateSchema, @@ -86,6 +90,7 @@ export type CliDoctorCheck = z.infer; export const cliDoctorSchema = z.object({ cliVersion: z.string(), + channel: cliChannelSchema, runtime: runtimeStateSchema, runtimePath: z.string().nullable(), personalServer: personalServerStateSchema, diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 7a8d4827..0774803b 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -217,6 +217,7 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(parsed).toMatchObject({ cliVersion: "0.8.1", + channel: "stable", runtime: "installed", runtimePath: "/tmp/playwright/chrome", personalServer: "available", @@ -304,6 +305,7 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(parsed).toMatchObject({ cliVersion: "0.8.1", + channel: "stable", runtime: "installed", runtimePath: "/tmp/playwright/chrome", personalServer: "unavailable", From 8740a04e26a8803c5f66892e41b9143d357c146b Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:37:32 -0500 Subject: [PATCH 137/249] feat(release): verify homebrew formula sync --- package.json | 1 + scripts/assert-homebrew-formula-sync.mjs | 135 +++++++++++++++++++++++ scripts/watch-release-lane.mjs | 10 ++ 3 files changed, 146 insertions(+) create mode 100644 scripts/assert-homebrew-formula-sync.mjs diff --git a/package.json b/package.json index 22a0888b..9095257d 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "demo:transcripts": "pnpm build && node ./scripts/capture-cli-transcripts.mjs", "pack:check": "node ./scripts/assert-pack-contents.mjs", "sea:check": "node ./scripts/assert-sea-artifact.mjs", + "homebrew:check": "node ./scripts/assert-homebrew-formula-sync.mjs", "release:check-demo-assets": "node ./scripts/assert-release-demo-assets.mjs", "release:watch": "node ./scripts/watch-release-lane.mjs", "skills:sync": "node scripts/sync-skills.js", diff --git a/scripts/assert-homebrew-formula-sync.mjs b/scripts/assert-homebrew-formula-sync.mjs new file mode 100644 index 00000000..d1259332 --- /dev/null +++ b/scripts/assert-homebrew-formula-sync.mjs @@ -0,0 +1,135 @@ +import fs from "node:fs/promises"; +import path from "node:path"; +import process from "node:process"; +import { execFileSync } from "node:child_process"; + +const DEFAULT_RELEASE_REPO = "vana-com/vana-connect"; +const DEFAULT_TAP_PATH = "/home/tnunamak/code/homebrew-vana/Formula/vana.rb"; + +function parseArgs(argv) { + const options = { + releaseRepo: DEFAULT_RELEASE_REPO, + formulaPath: DEFAULT_TAP_PATH, + releaseTag: "", + }; + + for (let index = 0; index < argv.length; index += 1) { + const arg = argv[index]; + switch (arg) { + case "--release-repo": + options.releaseRepo = argv[++index]; + break; + case "--formula-path": + options.formulaPath = argv[++index]; + break; + case "--release-tag": + options.releaseTag = argv[++index]; + break; + default: + throw new Error(`Unknown argument: ${arg}`); + } + } + + if (!options.releaseTag) { + throw new Error("--release-tag is required"); + } + + return options; +} + +async function main() { + const options = parseArgs(process.argv.slice(2)); + const formulaPath = path.resolve(options.formulaPath); + const formula = await fs.readFile(formulaPath, "utf8"); + + const assetChecksums = getReleaseAssetChecksums({ + releaseRepo: options.releaseRepo, + releaseTag: options.releaseTag, + }); + + assertFormulaContains( + formula, + options.releaseTag, + "vana-darwin-arm64.tar.gz", + assetChecksums.get("vana-darwin-arm64.tar.gz"), + ); + assertFormulaContains( + formula, + options.releaseTag, + "vana-darwin-x64.tar.gz", + assetChecksums.get("vana-darwin-x64.tar.gz"), + ); + assertFormulaContains( + formula, + options.releaseTag, + "vana-linux-x64.tar.gz", + assetChecksums.get("vana-linux-x64.tar.gz"), + ); + + process.stdout.write( + `Homebrew formula matches ${options.releaseRepo}@${options.releaseTag}\n`, + ); +} + +function getReleaseAssetChecksums({ releaseRepo, releaseTag }) { + const output = execFileSync( + "gh", + ["release", "view", releaseTag, "--repo", releaseRepo, "--json", "assets"], + { + encoding: "utf8", + stdio: ["ignore", "pipe", "pipe"], + }, + ); + const release = JSON.parse(output); + const checksums = new Map(); + for (const asset of release.assets ?? []) { + if (!asset.name.endsWith(".sha256")) { + continue; + } + + const checksumText = execFileSync( + "gh", + [ + "release", + "download", + releaseTag, + "--repo", + releaseRepo, + "--pattern", + asset.name, + "--output", + "-", + ], + { + encoding: "utf8", + stdio: ["ignore", "pipe", "pipe"], + }, + ).trim(); + const [sha256, assetName] = checksumText.split(/\s+/); + checksums.set(assetName, sha256); + } + return checksums; +} + +function assertFormulaContains(formula, releaseTag, assetName, expectedSha) { + if (!expectedSha) { + throw new Error(`Missing published checksum for ${assetName}`); + } + + if (!formula.includes(`/releases/download/${releaseTag}/${assetName}`)) { + throw new Error( + `Formula does not reference ${assetName} from ${releaseTag}`, + ); + } + + if (!formula.includes(`sha256 "${expectedSha}"`)) { + throw new Error(`Formula checksum mismatch for ${assetName}`); + } +} + +main().catch((error) => { + process.stderr.write( + `${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`, + ); + process.exitCode = 1; +}); diff --git a/scripts/watch-release-lane.mjs b/scripts/watch-release-lane.mjs index 7d7c321c..1e22a751 100644 --- a/scripts/watch-release-lane.mjs +++ b/scripts/watch-release-lane.mjs @@ -82,6 +82,16 @@ function main() { .split("\n") .slice(0, 24); log(`Current tap formula preview:\n${lines.join("\n")}`); + log(`Checking Homebrew formula sync for ${releaseTag}`); + execCommand("node", [ + "./scripts/assert-homebrew-formula-sync.mjs", + "--release-tag", + releaseTag, + "--release-repo", + options.repo, + "--formula-path", + formulaPath, + ]); } } From 7254b52ca71690c590408a964d7d0534832494e5 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:41:46 -0500 Subject: [PATCH 138/249] feat(cli): tighten event stream schemas --- src/core/cli-types.ts | 9 ++++++++- test/cli/index.test.ts | 5 +++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index ae18f1e0..df7f43bf 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -160,6 +160,13 @@ export const cliDataShowSchema = z.object({ }); export type CliDataShow = z.infer; +export const progressPhaseSchema = z.object({ + step: z.number(), + total: z.number(), + label: z.string(), +}); +export type ProgressPhase = z.infer; + export const sourceRequiredErrorSchema = z.object({ error: z.literal("source_required"), message: z.string(), @@ -206,7 +213,7 @@ export const cliEventSchema = z.object({ runtime: z.string().optional(), reason: z.string().optional(), count: z.number().optional(), - phase: z.unknown().optional(), + phase: progressPhaseSchema.optional(), }); export type CliEvent = z.infer; diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 0774803b..9f7bf8b4 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -4,6 +4,7 @@ import { cliDataPathSchema, cliDataShowSchema, cliDoctorSchema, + cliEventSchema, datasetNotFoundErrorSchema, cliSourcesSchema, cliStatusSchema, @@ -542,7 +543,7 @@ describe("runCli", () => { const lines = stdout .trim() .split("\n") - .map((line) => JSON.parse(line)); + .map((line) => cliEventSchema.parse(JSON.parse(line))); expect(exitCode).toBe(1); expect(lines).toContainEqual( @@ -1583,7 +1584,7 @@ describe("runCli", () => { const lines = stdout .trim() .split("\n") - .map((line) => JSON.parse(line)); + .map((line) => cliEventSchema.parse(JSON.parse(line))); expect(lines).toContainEqual( expect.objectContaining({ type: "outcome", From 32d5688908d75579d5db97eb422df04ff0378fb6 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:50:04 -0500 Subject: [PATCH 139/249] feat(cli): add lifecycle guidance to doctor --- README.md | 16 ++++++ docs/transcripts/doctor.txt | 5 ++ src/cli/index.ts | 112 +++++++++++++++++++++++++++++++++++- src/core/cli-types.ts | 14 +++++ test/cli/index.test.ts | 28 +++++++++ 5 files changed, 172 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c4148d1d..79be7671 100644 --- a/README.md +++ b/README.md @@ -223,11 +223,27 @@ vana data show github --json | jq '.summary.lines' - Successful command completion returns exit code `0`. - Actionable failures like missing source selection, unavailable connectors, or disabled prompting return exit code `1`. - `vana --version`, `vana version`, and `vana --help` return exit code `0`. +- `vana doctor --json` includes `installMethod`, `channel`, and upgrade/uninstall commands so scripts can surface the right lifecycle guidance. + +### Shell examples + +```bash +vana status --json | jq '.channel, .installMethod, .runtime, .sources[]?.source' +vana sources --json | jq '.recommendedSource' +vana data list --json | jq '.datasets[] | {source, dataState, path}' +vana doctor --json | jq '.paths, .lifecycle' +``` ### Upgrade, channels, and uninstall Upgrade with the same channel you installed from: +You can always confirm the current install method and exact lifecycle commands with: + +```bash +vana doctor +``` + - Homebrew: ```bash brew update diff --git a/docs/transcripts/doctor.txt b/docs/transcripts/doctor.txt index 593afc92..5536563e 100644 --- a/docs/transcripts/doctor.txt +++ b/docs/transcripts/doctor.txt @@ -3,6 +3,7 @@ Vana Connect doctor → Summary CLI: 0.8.1 Channel: stable + Install: Development checkout Runtime: installed Personal Server: unavailable Tracked sources: 4 @@ -18,6 +19,10 @@ Vana Connect doctor Logs: Present at ~/.dataconnect/logs Tracked sources: 4 sources in local state +→ Lifecycle + Upgrade: git pull && pnpm install && pnpm build + Uninstall: Remove the local checkout and any generated ~/.dataconnect state. + → Next • Your Personal Server is unavailable, so successful runs will stay local. • Check overall status with `vana status`. diff --git a/src/cli/index.ts b/src/cli/index.ts index 7255f3d0..fecdbfd4 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -20,9 +20,11 @@ import { updateSourceState, } from "../core/index.js"; import type { + CliChannel, CliDoctor, CliDoctorCheck, CliEvent, + CliInstallMethod, CliOutcome, CliStatus, SourceStatus, @@ -218,29 +220,53 @@ Examples: `, ); - data + const dataListCommand = data .command("list") .description("List locally available collected datasets") .option("--json", "Output machine-readable JSON") .action(async () => { process.exitCode = await runDataList(parsedOptions); }); + dataListCommand.addHelpText( + "after", + ` +Examples: + vana data list + vana data list --json | jq '.datasets' +`, + ); - data + const dataShowCommand = data .command("show ") .description("Show a collected dataset") .option("--json", "Output machine-readable JSON") .action(async (source: string) => { process.exitCode = await runDataShow(source, parsedOptions); }); + dataShowCommand.addHelpText( + "after", + ` +Examples: + vana data show github + vana data show github --json | jq '.summary' +`, + ); - data + const dataPathCommand = data .command("path ") .description("Print the local path for a collected dataset") .option("--json", "Output machine-readable JSON") .action(async (source: string) => { process.exitCode = await runDataPath(source, parsedOptions); }); + dataPathCommand.addHelpText( + "after", + ` +Examples: + vana data path github + vana data path github --json | jq -r '.path' +`, + ); try { await program.parseAsync(normalizedArgv); @@ -930,6 +956,7 @@ async function runStatus(options: GlobalOptions): Promise { const status: CliStatus = { cliVersion: getCliVersion(), channel: getCliChannel(), + installMethod: getCliInstallMethod(), runtime: runtime.state, runtimePath: runtime.runtimePath, personalServer: personalServer.state, @@ -1049,6 +1076,8 @@ async function runDoctor(options: GlobalOptions): Promise { const state = await readCliState(); const cliVersion = getCliVersion(); const cliChannel = getCliChannel(cliVersion); + const installMethod = getCliInstallMethod(); + const lifecycle = getLifecycleCommands(installMethod, cliChannel); const directories = [ { @@ -1139,6 +1168,7 @@ async function runDoctor(options: GlobalOptions): Promise { const payload: CliDoctor = { cliVersion, channel: cliChannel, + installMethod, runtime: runtime.state, runtimePath: runtime.runtimePath, personalServer: personalServer.state, @@ -1150,6 +1180,7 @@ async function runDoctor(options: GlobalOptions): Promise { browserProfiles: getBrowserProfilesDir(), logs: getLogsDir(), }, + lifecycle, checks, nextSteps, }; @@ -1165,6 +1196,7 @@ async function runDoctor(options: GlobalOptions): Promise { emit.section("Summary"); emit.keyValue("CLI", cliVersion, "muted"); emit.keyValue("Channel", cliChannel, "muted"); + emit.keyValue("Install", formatInstallMethodLabel(installMethod), "muted"); emit.keyValue("Runtime", runtime.state, toneForRuntime(runtime.state)); emit.keyValue( "Personal Server", @@ -1187,6 +1219,10 @@ async function runDoctor(options: GlobalOptions): Promise { : "error"; emit.keyValue(check.label, check.detail, tone); } + emit.blank(); + emit.section("Lifecycle"); + emit.keyValue("Upgrade", lifecycle.upgrade, "muted"); + emit.keyValue("Uninstall", lifecycle.uninstall, "muted"); if (nextSteps.length > 0) { emit.blank(); emit.section("Next"); @@ -2104,6 +2140,76 @@ function getCliChannel(version = getCliVersion()): "stable" | "canary" { return version.includes("canary") ? "canary" : "stable"; } +function getCliInstallMethod(execPath = process.execPath): CliInstallMethod { + const normalizedPath = execPath.replace(/\\/g, "/").toLowerCase(); + if (normalizedPath.includes("/cellar/vana/")) { + return "homebrew"; + } + if ( + normalizedPath.includes("/.local/share/vana/") || + normalizedPath.includes("/appdata/local/vana/") + ) { + return "installer"; + } + if ( + normalizedPath.endsWith("/node") || + normalizedPath.endsWith("/node.exe") || + normalizedPath.includes("/.nvm/") || + normalizedPath.includes("/volta/") || + normalizedPath.includes("/pnpm/") + ) { + return "development"; + } + return "unknown"; +} + +function formatInstallMethodLabel(method: CliInstallMethod): string { + switch (method) { + case "homebrew": + return "Homebrew"; + case "installer": + return "Hosted installer"; + case "development": + return "Development checkout"; + default: + return "Unknown"; + } +} + +function getLifecycleCommands( + installMethod: CliInstallMethod, + channel: CliChannel, +): { upgrade: string; uninstall: string } { + switch (installMethod) { + case "homebrew": + return { + upgrade: "brew update && brew upgrade vana", + uninstall: "brew uninstall vana", + }; + case "installer": + return { + upgrade: + channel === "canary" + ? "curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.sh | sh -s -- --version canary-feat-connect-cli-v1" + : "curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/main/install/install.sh | sh", + uninstall: + "rm -f ~/.local/bin/vana && rm -rf ~/.local/share/vana ~/.dataconnect", + }; + case "development": + return { + upgrade: "git pull && pnpm install && pnpm build", + uninstall: + "Remove the local checkout and any generated ~/.dataconnect state.", + }; + default: + return { + upgrade: "Reinstall vana using Homebrew or the hosted installer.", + uninstall: + "Remove the installed vana binary and any ~/.dataconnect state you no longer need.", + }; + } +} + function formatDisplayPath(filePath: string): string { const homeDir = os.homedir(); if (filePath === homeDir) { diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index df7f43bf..e7b6807b 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -31,6 +31,14 @@ export type PersonalServerState = z.infer; export const cliChannelSchema = z.enum(["stable", "canary"]); export type CliChannel = z.infer; +export const cliInstallMethodSchema = z.enum([ + "homebrew", + "installer", + "development", + "unknown", +]); +export type CliInstallMethod = z.infer; + export const dataStateSchema = z.enum([ "none", "collected_local", @@ -71,6 +79,7 @@ export type ListedSource = z.infer; export const cliStatusSchema = z.object({ cliVersion: z.string().optional(), channel: cliChannelSchema.optional(), + installMethod: cliInstallMethodSchema.optional(), runtime: runtimeStateSchema, runtimePath: z.string().nullable(), personalServer: personalServerStateSchema, @@ -91,6 +100,7 @@ export type CliDoctorCheck = z.infer; export const cliDoctorSchema = z.object({ cliVersion: z.string(), channel: cliChannelSchema, + installMethod: cliInstallMethodSchema, runtime: runtimeStateSchema, runtimePath: z.string().nullable(), personalServer: personalServerStateSchema, @@ -102,6 +112,10 @@ export const cliDoctorSchema = z.object({ browserProfiles: z.string(), logs: z.string(), }), + lifecycle: z.object({ + upgrade: z.string(), + uninstall: z.string(), + }), checks: z.array(cliDoctorCheckSchema), nextSteps: z.array(z.string()), }); diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 9f7bf8b4..b1c9a9f3 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -219,6 +219,7 @@ describe("runCli", () => { expect(parsed).toMatchObject({ cliVersion: "0.8.1", channel: "stable", + installMethod: "development", runtime: "installed", runtimePath: "/tmp/playwright/chrome", personalServer: "available", @@ -277,6 +278,16 @@ describe("runCli", () => { expect(stdout).toContain("vana connect github --json --no-input"); }); + it("shows examples in data show help", async () => { + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "data", "show", "--help"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain("Show a collected dataset"); + expect(stdout).toContain("vana data show github"); + expect(stdout).toContain("vana data show github --json | jq '.summary'"); + }); + it("prints structured doctor output in json mode", async () => { mockReadCliState.mockResolvedValue({ version: 1, @@ -307,6 +318,7 @@ describe("runCli", () => { expect(parsed).toMatchObject({ cliVersion: "0.8.1", channel: "stable", + installMethod: "development", runtime: "installed", runtimePath: "/tmp/playwright/chrome", personalServer: "unavailable", @@ -319,6 +331,11 @@ describe("runCli", () => { browserProfiles: "/tmp/browser-profiles", logs: expect.stringMatching(/\.dataconnect\/logs$/), }, + lifecycle: { + upgrade: "git pull && pnpm install && pnpm build", + uninstall: + "Remove the local checkout and any generated ~/.dataconnect state.", + }, checks: expect.arrayContaining([ expect.objectContaining({ key: "cli", @@ -333,6 +350,17 @@ describe("runCli", () => { }); }); + it("renders lifecycle guidance in human doctor output", async () => { + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "doctor"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain("Vana Connect doctor"); + expect(stdout).toContain("Install"); + expect(stdout).toContain("Lifecycle"); + expect(stdout).toContain("git pull && pnpm install && pnpm build"); + }); + it("renders a stable human transcript for setup when already installed", async () => { mockListAvailableSources.mockResolvedValue([ { From d589a6ebe257f91d4436dfaaca85c7d66566c3f7 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:53:38 -0500 Subject: [PATCH 140/249] feat(cli): expand doctor diagnostics --- README.md | 2 +- docs/transcripts/doctor.txt | 11 +++++++++ src/cli/index.ts | 49 +++++++++++++++++++++++++++++++++++++ src/core/cli-types.ts | 2 ++ test/cli/index.test.ts | 4 +++ 5 files changed, 67 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 79be7671..92c072b8 100644 --- a/README.md +++ b/README.md @@ -231,7 +231,7 @@ vana data show github --json | jq '.summary.lines' vana status --json | jq '.channel, .installMethod, .runtime, .sources[]?.source' vana sources --json | jq '.recommendedSource' vana data list --json | jq '.datasets[] | {source, dataState, path}' -vana doctor --json | jq '.paths, .lifecycle' +vana doctor --json | jq '.paths.executable, .paths.appRoot, .lifecycle' ``` ### Upgrade, channels, and uninstall diff --git a/docs/transcripts/doctor.txt b/docs/transcripts/doctor.txt index 5536563e..eb3eac0c 100644 --- a/docs/transcripts/doctor.txt +++ b/docs/transcripts/doctor.txt @@ -12,6 +12,8 @@ Vana Connect doctor CLI: Version 0.8.1 Runtime: Browser available at /opt/playwright/chromium-1200/chrome-linux64/chrome Personal Server: Unavailable. Connects will stay local until a Personal Server is reachable. + Executable: Present at /usr/local/bin/node + App root: Missing at /usr/local/bin/app Data home: Present at ~/.dataconnect State file: Present at ~/.dataconnect/vana-connect-state.json Connector cache: Present at ~/.dataconnect/connectors @@ -19,6 +21,15 @@ Vana Connect doctor Logs: Present at ~/.dataconnect/logs Tracked sources: 4 sources in local state +→ Paths + Executable: /usr/local/bin/node + App root: /usr/local/bin/app + Data home: ~/.dataconnect + State file: ~/.dataconnect/vana-connect-state.json + Connector cache: ~/.dataconnect/connectors + Browser profiles: ~/.dataconnect/browser-profiles + Logs: ~/.dataconnect/logs + → Lifecycle Upgrade: git pull && pnpm install && pnpm build Uninstall: Remove the local checkout and any generated ~/.dataconnect state. diff --git a/src/cli/index.ts b/src/cli/index.ts index fecdbfd4..20d908a5 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1080,6 +1080,18 @@ async function runDoctor(options: GlobalOptions): Promise { const lifecycle = getLifecycleCommands(installMethod, cliChannel); const directories = [ + { + key: "executable", + label: "Executable", + path: process.execPath, + present: fs.existsSync(process.execPath), + }, + { + key: "appRoot", + label: "App root", + path: getCliAppRoot(), + present: fs.existsSync(getCliAppRoot()), + }, { key: "dataHome", label: "Data home", @@ -1174,6 +1186,8 @@ async function runDoctor(options: GlobalOptions): Promise { personalServer: personalServer.state, personalServerUrl: personalServer.url, paths: { + executable: process.execPath, + appRoot: getCliAppRoot(), dataHome: getDataConnectHome(), stateFile: getCliStatePath(), connectorCache: getConnectorCacheDir(), @@ -1220,6 +1234,23 @@ async function runDoctor(options: GlobalOptions): Promise { emit.keyValue(check.label, check.detail, tone); } emit.blank(); + emit.section("Paths"); + emit.keyValue("Executable", formatDisplayPath(process.execPath), "muted"); + emit.keyValue("App root", formatDisplayPath(getCliAppRoot()), "muted"); + emit.keyValue("Data home", formatDisplayPath(getDataConnectHome()), "muted"); + emit.keyValue("State file", formatDisplayPath(getCliStatePath()), "muted"); + emit.keyValue( + "Connector cache", + formatDisplayPath(getConnectorCacheDir()), + "muted", + ); + emit.keyValue( + "Browser profiles", + formatDisplayPath(getBrowserProfilesDir()), + "muted", + ); + emit.keyValue("Logs", formatDisplayPath(getLogsDir()), "muted"); + emit.blank(); emit.section("Lifecycle"); emit.keyValue("Upgrade", lifecycle.upgrade, "muted"); emit.keyValue("Uninstall", lifecycle.uninstall, "muted"); @@ -1954,6 +1985,9 @@ function buildStatusNextSteps( } } else if (runtime === "missing") { nextSteps.push("Install the local runtime with `vana setup`."); + nextSteps.push("Inspect install health with `vana doctor`."); + } else if (runtime === "unhealthy") { + nextSteps.push("Inspect install health with `vana doctor`."); } } else if (highestPriority.lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { nextSteps.push( @@ -1996,6 +2030,17 @@ function buildStatusNextSteps( nextSteps.push("Connect another source with `vana sources`."); } + if ( + runtime !== "installed" || + sources.some( + (source) => + source.lastRunOutcome === CliOutcomeStatus.RUNTIME_ERROR || + source.lastRunOutcome === CliOutcomeStatus.UNEXPECTED_INTERNAL_ERROR, + ) + ) { + nextSteps.push("Inspect install health with `vana doctor`."); + } + return [...new Set(nextSteps)]; } @@ -2163,6 +2208,10 @@ function getCliInstallMethod(execPath = process.execPath): CliInstallMethod { return "unknown"; } +function getCliAppRoot(execPath = process.execPath): string { + return process.env.VANA_APP_ROOT ?? path.join(path.dirname(execPath), "app"); +} + function formatInstallMethodLabel(method: CliInstallMethod): string { switch (method) { case "homebrew": diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index e7b6807b..60a8c254 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -106,6 +106,8 @@ export const cliDoctorSchema = z.object({ personalServer: personalServerStateSchema, personalServerUrl: z.string().nullable(), paths: z.object({ + executable: z.string(), + appRoot: z.string(), dataHome: z.string(), stateFile: z.string(), connectorCache: z.string(), diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index b1c9a9f3..76ab689e 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -323,6 +323,8 @@ describe("runCli", () => { runtimePath: "/tmp/playwright/chrome", personalServer: "unavailable", paths: { + executable: expect.any(String), + appRoot: expect.any(String), dataHome: expect.stringMatching(/\.dataconnect$/), stateFile: expect.stringMatching( /\.dataconnect\/vana-connect-state\.json$/, @@ -357,6 +359,7 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(stdout).toContain("Vana Connect doctor"); expect(stdout).toContain("Install"); + expect(stdout).toContain("Paths"); expect(stdout).toContain("Lifecycle"); expect(stdout).toContain("git pull && pnpm install && pnpm build"); }); @@ -546,6 +549,7 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(stdout).toContain("Install the local runtime with `vana setup`."); + expect(stdout).toContain("Inspect install health with `vana doctor`."); }); it("fails cleanly in json mode when input is required", async () => { From 4ff3fd0d17ff963149df9e3d801d81877dadda6e Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:54:50 -0500 Subject: [PATCH 141/249] chore(demo): add session reuse transcript --- docs/transcripts/README.md | 1 + .../connect-github-session-reuse-no-input.txt | 20 +++++++++++++++++++ scripts/capture-cli-transcripts.mjs | 10 ++++++++++ 3 files changed, 31 insertions(+) create mode 100644 docs/transcripts/connect-github-session-reuse-no-input.txt diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md index 8779edcf..08688190 100644 --- a/docs/transcripts/README.md +++ b/docs/transcripts/README.md @@ -25,5 +25,6 @@ Current generated surfaces include: - `data-path-github.txt` - `connect-github-success.txt` - `connect-github-no-input.txt` +- `connect-github-session-reuse-no-input.txt` - `connect-shop-no-input.txt` - `connect-steam-no-input.txt` diff --git a/docs/transcripts/connect-github-session-reuse-no-input.txt b/docs/transcripts/connect-github-session-reuse-no-input.txt new file mode 100644 index 00000000..1f9707f9 --- /dev/null +++ b/docs/transcripts/connect-github-session-reuse-no-input.txt @@ -0,0 +1,20 @@ +Connect GitHub + +→ Preparing +Finding a connector for GitHub... +Connector ready. +Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. + If needed, Vana Connect will ask for details in this terminal. Those details stay local to this machine. + Found an existing GitHub session. Reusing it if it is still valid... + +→ Connecting +Connecting to GitHub... +Collecting your data... + Checking GitHub login... + +→ Input required +GitHub needs additional input before it can connect. + Because `--no-input` is enabled, Vana stopped before prompting in this terminal. + +→ Next + • Run `vana connect github` without `--no-input`. diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index 850b978b..0a97ea1f 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -36,6 +36,10 @@ async function main() { PATH: `${binDir}${path.delimiter}${process.env.PATH ?? ""}`, ...(connectorsDir ? { VANA_DATA_CONNECTORS_DIR: connectorsDir } : {}), }; + const seededInputEnv = { + ...seededEnv, + }; + delete seededInputEnv.VANA_DEMO_FAST_SUCCESS; const commands = [ { @@ -95,6 +99,12 @@ async function main() { env: freshEnv, allowFailure: true, }, + { + name: "connect-github-session-reuse-no-input.txt", + argv: ["vana", "connect", "github", "--no-input"], + env: seededInputEnv, + allowFailure: true, + }, { name: "connect-shop-no-input.txt", argv: ["vana", "connect", "shop", "--no-input"], From c5c8ebb5b4bea5b20f2c7284d135a614367840ed Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:56:28 -0500 Subject: [PATCH 142/249] feat(cli): add json summaries for status and sources --- README.md | 4 ++-- src/cli/index.ts | 43 ++++++++++++++++++++++++++---------------- src/core/cli-types.ts | 15 +++++++++++++++ test/cli/index.test.ts | 11 +++++++++++ 4 files changed, 55 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 92c072b8..ca0332d1 100644 --- a/README.md +++ b/README.md @@ -228,8 +228,8 @@ vana data show github --json | jq '.summary.lines' ### Shell examples ```bash -vana status --json | jq '.channel, .installMethod, .runtime, .sources[]?.source' -vana sources --json | jq '.recommendedSource' +vana status --json | jq '.channel, .installMethod, .summary' +vana sources --json | jq '.summary, .recommendedSource' vana data list --json | jq '.datasets[] | {source, dataState, path}' vana doctor --json | jq '.paths.executable, .paths.appRoot, .lifecycle' ``` diff --git a/src/cli/index.ts b/src/cli/index.ts index 20d908a5..495f407e 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -852,6 +852,12 @@ async function runList(options: GlobalOptions): Promise { ...source, installed: installedSourceIds.has(source.id), })); + const readyCount = enrichedSources.filter( + (source) => source.authMode !== "legacy", + ).length; + const manualCount = enrichedSources.filter( + (source) => source.authMode === "legacy", + ).length; const recommendedSource = enrichedSources.find((source) => source.authMode !== "legacy") ?? enrichedSources[0] ?? @@ -861,6 +867,12 @@ async function runList(options: GlobalOptions): Promise { `${JSON.stringify({ count: enrichedSources.length, recommendedSource, + summary: { + readyCount, + manualCount, + installedCount: enrichedSources.filter((source) => source.installed) + .length, + }, sources: enrichedSources, })}\n`, ); @@ -875,12 +887,6 @@ async function runList(options: GlobalOptions): Promise { ); emit.blank(); if (enrichedSources.length > 0) { - const readyCount = enrichedSources.filter( - (source) => source.authMode !== "legacy", - ).length; - const manualCount = enrichedSources.filter( - (source) => source.authMode === "legacy", - ).length; emit.info( joinOverviewParts([ formatCountLabel("ready now", readyCount), @@ -961,6 +967,19 @@ async function runStatus(options: GlobalOptions): Promise { runtimePath: runtime.runtimePath, personalServer: personalServer.state, personalServerUrl: personalServer.url, + summary: { + sourceCount: sources.length, + needsAttentionCount: sources.filter( + (source) => rankSourceStatus(source) <= 4, + ).length, + connectedCount: sources.filter( + (source) => + source.dataState === "ingested_personal_server" || + source.dataState === "collected_local" || + source.dataState === "ingest_failed", + ).length, + installedCount: sources.filter((source) => source.installed).length, + }, sources, }; const nextSteps = buildStatusNextSteps( @@ -981,17 +1000,9 @@ async function runStatus(options: GlobalOptions): Promise { joinOverviewParts([ formatCountLabel( "need attention", - status.sources.filter((source) => rankSourceStatus(source) <= 4).length, - ), - formatCountLabel( - "connected", - status.sources.filter( - (source) => - source.dataState === "ingested_personal_server" || - source.dataState === "collected_local" || - source.dataState === "ingest_failed", - ).length, + status.summary?.needsAttentionCount ?? 0, ), + formatCountLabel("connected", status.summary?.connectedCount ?? 0), ]), ); emit.blank(); diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index 60a8c254..da096f6c 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -84,6 +84,14 @@ export const cliStatusSchema = z.object({ runtimePath: z.string().nullable(), personalServer: personalServerStateSchema, personalServerUrl: z.string().nullable(), + summary: z + .object({ + sourceCount: z.number(), + needsAttentionCount: z.number(), + connectedCount: z.number(), + installedCount: z.number(), + }) + .optional(), nextSteps: z.array(z.string()).optional(), sources: z.array(sourceStatusSchema), }); @@ -126,6 +134,13 @@ export type CliDoctor = z.infer; export const cliSourcesSchema = z.object({ count: z.number(), recommendedSource: listedSourceSchema.nullable(), + summary: z + .object({ + readyCount: z.number(), + manualCount: z.number(), + installedCount: z.number(), + }) + .optional(), sources: z.array(listedSourceSchema), }); export type CliSources = z.infer; diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 76ab689e..ff0134d5 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -188,6 +188,11 @@ describe("runCli", () => { expect(parsed).toEqual({ count: 2, recommendedSource: { id: "github", name: "GitHub", installed: true }, + summary: { + readyCount: 2, + manualCount: 0, + installedCount: 1, + }, sources: [ { id: "github", name: "GitHub", installed: true }, { id: "steam", name: "Steam", installed: false }, @@ -227,6 +232,12 @@ describe("runCli", () => { nextSteps: expect.arrayContaining([ "Inspect the latest dataset with `vana data show steam`.", ]), + summary: { + sourceCount: 1, + needsAttentionCount: 0, + connectedCount: 1, + installedCount: 0, + }, sources: [ { source: "steam", From 79a6add2d54128d0f8297a6832d16f4728b0650c Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:57:53 -0500 Subject: [PATCH 143/249] feat(cli): add json summaries to data list --- README.md | 2 +- src/cli/index.ts | 11 +++++++++++ src/core/cli-types.ts | 7 +++++++ test/cli/index.test.ts | 5 +++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ca0332d1..4d456ab2 100644 --- a/README.md +++ b/README.md @@ -230,7 +230,7 @@ vana data show github --json | jq '.summary.lines' ```bash vana status --json | jq '.channel, .installMethod, .summary' vana sources --json | jq '.summary, .recommendedSource' -vana data list --json | jq '.datasets[] | {source, dataState, path}' +vana data list --json | jq '.summary, .datasets[] | {source, dataState, path}' vana doctor --json | jq '.paths.executable, .paths.appRoot, .lifecycle' ``` diff --git a/src/cli/index.ts b/src/cli/index.ts index 495f407e..de201a07 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1361,6 +1361,17 @@ async function runDataList(options: GlobalOptions): Promise { `${JSON.stringify({ count: datasetRecords.length, latestDataset: datasetRecords[0] ?? null, + summary: { + localCount: datasetRecords.filter( + (dataset) => dataset.dataState !== "ingested_personal_server", + ).length, + syncedCount: datasetRecords.filter( + (dataset) => dataset.dataState === "ingested_personal_server", + ).length, + syncFailedCount: datasetRecords.filter( + (dataset) => dataset.dataState === "ingest_failed", + ).length, + }, datasets: datasetRecords, })}\n`, ); diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index da096f6c..45deaebc 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -167,6 +167,13 @@ export type DatasetRecord = z.infer; export const cliDataListSchema = z.object({ count: z.number(), latestDataset: datasetRecordSchema.nullable(), + summary: z + .object({ + localCount: z.number(), + syncedCount: z.number(), + syncFailedCount: z.number(), + }) + .optional(), datasets: z.array(datasetRecordSchema), }); export type CliDataList = z.infer; diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index ff0134d5..c52da39e 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -929,6 +929,11 @@ describe("runCli", () => { authMode: "interactive", dataState: "collected_local", }, + summary: { + localCount: 2, + syncedCount: 0, + syncFailedCount: 0, + }, datasets: [ { source: "github", From 02f01e15615b3a6076f27fe9b752ec5c631d7661 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 17:59:14 -0500 Subject: [PATCH 144/249] chore(demo): add unsupported-source transcript --- docs/transcripts/README.md | 1 + docs/transcripts/connect-steam.txt | 11 +++++++++++ scripts/capture-cli-transcripts.mjs | 6 ++++++ 3 files changed, 18 insertions(+) create mode 100644 docs/transcripts/connect-steam.txt diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md index 08688190..c125c920 100644 --- a/docs/transcripts/README.md +++ b/docs/transcripts/README.md @@ -27,4 +27,5 @@ Current generated surfaces include: - `connect-github-no-input.txt` - `connect-github-session-reuse-no-input.txt` - `connect-shop-no-input.txt` +- `connect-steam.txt` - `connect-steam-no-input.txt` diff --git a/docs/transcripts/connect-steam.txt b/docs/transcripts/connect-steam.txt new file mode 100644 index 00000000..4faafbb3 --- /dev/null +++ b/docs/transcripts/connect-steam.txt @@ -0,0 +1,11 @@ +Connect Steam + +→ Preparing +Finding a connector for Steam... + +→ Not available yet +No connector is available for Steam right now. + +→ Next + • Browse available sources with `vana sources`. + • Then connect one with `vana connect `. diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index 0a97ea1f..affe45de 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -111,6 +111,12 @@ async function main() { env: seededEnv, allowFailure: true, }, + { + name: "connect-steam.txt", + argv: ["vana", "connect", "steam"], + env: seededEnv, + allowFailure: true, + }, { name: "connect-steam-no-input.txt", argv: ["vana", "connect", "steam", "--no-input"], From dd3f75d0cd7297fccf8f8f289fe4739f3e420c47 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 20:05:27 -0500 Subject: [PATCH 145/249] feat(cli): improve synced connect summary --- src/cli/index.ts | 43 +++++++++++++++--------------- test/cli/index.test.ts | 59 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 21 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index de201a07..3574564a 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -689,33 +689,34 @@ async function runConnect( } emit.blank(); + emit.section( + finalStatus === CliOutcomeStatus.CONNECTED_AND_INGESTED + ? "Saved and synced" + : "Saved locally", + ); + emit.keyValue("Path", formatDisplayPath(resultPath), "muted"); + emit.keyValue("Session", "Saved for faster reconnects.", "muted"); if (finalStatus === CliOutcomeStatus.CONNECTED_AND_INGESTED) { - emit.section("Synced"); emit.keyValue( "Server", "Your data is now available in your Personal Server.", "success", ); - } else { - emit.section("Saved locally"); - emit.keyValue("Path", formatDisplayPath(resultPath), "muted"); - emit.keyValue("Session", "Saved for faster reconnects.", "muted"); - if ( - finalStatus === CliOutcomeStatus.INGEST_FAILED && - ingestFailureMessage - ) { - emit.keyValue( - "Server", - `Sync failed: ${ingestFailureMessage}`, - "warning", - ); - } else if (target.state !== "available") { - emit.keyValue( - "Server", - "Unavailable, so this run stayed local.", - "muted", - ); - } + } else if ( + finalStatus === CliOutcomeStatus.INGEST_FAILED && + ingestFailureMessage + ) { + emit.keyValue( + "Server", + `Sync failed: ${ingestFailureMessage}`, + "warning", + ); + } else if (target.state !== "available") { + emit.keyValue( + "Server", + "Unavailable, so this run stayed local.", + "muted", + ); } if (runLogPath) { diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index c52da39e..94cbab37 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -1607,6 +1607,65 @@ describe("runCli", () => { ); }); + it("shows saved and synced details when Personal Server ingest succeeds", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + }, + ]); + fetchConnectorResult = { + connectorPath: "/tmp/connectors/github/github-playwright.js", + logPath: "/tmp/logs/fetch.log", + }; + runConnectorEvents = [ + { + type: "collection-complete", + source: "github", + resultPath: "/tmp/.dataconnect/github-result.json", + logPath: "/tmp/logs/run.log", + }, + ]; + mockDetectPersonalServerTarget.mockResolvedValue({ + state: "available", + url: "http://localhost:8080", + }); + mockIngestResult.mockResolvedValue([ + { + type: "ingest-complete", + source: "github", + target: "http://localhost:8080", + }, + ]); + mockReadFile.mockResolvedValue( + JSON.stringify({ + profile: { username: "tnunamak" }, + }), + ); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect", "github"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain( + "Collected your GitHub data and synced it to your Personal Server.", + ); + expect(stdout).toContain("Saved and synced"); + expect(stdout).toContain("/tmp/.dataconnect/github-result.json"); + expect(stdout).toContain("Saved for faster reconnects."); + expect(stdout).toContain( + "Your data is now available in your Personal Server.", + ); + expect(mockUpdateSourceState).toHaveBeenLastCalledWith( + "github", + expect.objectContaining({ + lastRunOutcome: "connected_and_ingested", + dataState: "ingested_personal_server", + }), + ); + }); + it("returns connector_unavailable when no connector exists", async () => { mockListAvailableSources.mockResolvedValue([]); fetchConnectorResult = undefined as never; From ea267554a09634839743cb76be8e431a1af051d7 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 20:26:14 -0500 Subject: [PATCH 146/249] feat(cli): handle cancelled connect prompts --- src/cli/index.ts | 45 ++++++++++++++++++++++--- test/cli/index.test.ts | 74 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 111 insertions(+), 8 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 3574564a..376621e4 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -470,12 +470,19 @@ async function runConnect( ); const values: Record = {}; - for (const field of needInput.fields) { - if (field.toLowerCase().includes("password")) { - values[field] = await password({ message: humanizeField(field) }); - } else { - values[field] = await input({ message: humanizeField(field) }); + try { + for (const field of needInput.fields) { + if (field.toLowerCase().includes("password")) { + values[field] = await password({ message: humanizeField(field) }); + } else { + values[field] = await input({ message: humanizeField(field) }); + } + } + } catch (error) { + if (isPromptCancelled(error)) { + throw new Error("__vana_prompt_cancelled__"); } + throw error; } return values; }, @@ -740,6 +747,34 @@ async function runConnect( }); return 0; } catch (error) { + if ( + error instanceof Error && + error.message === "__vana_prompt_cancelled__" + ) { + await updateSourceState(source, { + lastRunAt: new Date().toISOString(), + lastRunOutcome: CliOutcomeStatus.NEEDS_INPUT, + lastError: "Cancelled before input was completed.", + }); + emit.blank(); + emit.section("Cancelled"); + emit.info(`Stopped before ${displayName} finished collecting your data.`); + emit.detail("No credentials were sent anywhere."); + emit.blank(); + emit.section("Next"); + emit.bullet(`Resume with ${emit.code(`vana connect ${source}`)}.`); + emit.bullet(`Or check overall status with ${emit.code("vana status")}.`); + emit.event({ + type: "outcome", + status: CliOutcomeStatus.NEEDS_INPUT, + source, + reason: "prompt_cancelled", + }); + if (runLogPath) { + emit.keyValue("Run log", formatDisplayPath(runLogPath), "muted"); + } + return 1; + } const message = error instanceof Error ? error.message : "Unexpected error."; emit.info(message); diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 94cbab37..8a9ac646 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -17,6 +17,8 @@ const mockIngestResult = vi.fn(); const mockReadCliState = vi.fn(); const mockUpdateSourceState = vi.fn(); const mockConfirm = vi.fn(); +const mockInput = vi.fn(); +const mockPassword = vi.fn(); const mockSelect = vi.fn(); const mockReaddir = vi.fn(); const mockReadFile = vi.fn(); @@ -53,8 +55,30 @@ vi.mock("../../src/runtime/index.js", () => ({ return fetchConnectorResult; } - async *runConnector() { + async *runConnector(options?: { + noInput?: boolean; + onNeedInput?: (payload: { + message?: string; + fields: string[]; + }) => Promise>; + }) { for (const event of runConnectorEvents) { + if ( + event.type === "needs-input" && + !options?.noInput && + options?.onNeedInput + ) { + await options.onNeedInput({ + message: + typeof event.message === "string" ? event.message : undefined, + fields: Array.isArray(event.fields) + ? event.fields.filter( + (field): field is string => typeof field === "string", + ) + : [], + }); + continue; + } yield event; } } @@ -75,8 +99,8 @@ vi.mock("@inquirer/prompts", () => ({ } }, confirm: mockConfirm, - input: vi.fn(), - password: vi.fn(), + input: mockInput, + password: mockPassword, select: mockSelect, })); @@ -1556,6 +1580,50 @@ describe("runCli", () => { expect(stdout).toContain("vana sources"); }); + it("handles cancelled terminal input cleanly during connect", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + }, + ]); + fetchConnectorResult = { + connectorPath: "/tmp/connectors/github/github-playwright.js", + logPath: "/tmp/logs/fetch.log", + }; + runConnectorEvents = [ + { + type: "needs-input", + source: "github", + message: "Log in to GitHub", + fields: ["username", "password"], + logPath: "/tmp/logs/run.log", + }, + ]; + const promptError = new Error("prompt aborted"); + promptError.name = "ExitPromptError"; + mockInput.mockRejectedValueOnce(promptError); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect", "github"]); + + expect(exitCode).toBe(1); + expect(stdout).toContain("→ Cancelled"); + expect(stdout).toContain( + "Stopped before GitHub finished collecting your data.", + ); + expect(stdout).toContain("No credentials were sent anywhere."); + expect(stdout).toContain("Resume with `vana connect github`."); + expect(mockUpdateSourceState).toHaveBeenCalledWith( + "github", + expect.objectContaining({ + lastRunOutcome: "needs_input", + lastError: "Cancelled before input was completed.", + }), + ); + }); + it("records ingest failures as local data with sync failure state", async () => { mockListAvailableSources.mockResolvedValue([ { From 1090b37647eb6bb12f11902e37f12ab1063334fc Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 20:27:46 -0500 Subject: [PATCH 147/249] feat(cli): suggest a source when one is unavailable --- docs/transcripts/connect-steam-no-input.txt | 2 +- docs/transcripts/connect-steam.txt | 2 +- src/cli/index.ts | 17 ++++++++++++----- test/cli/index.test.ts | 16 +++++++++++++--- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/docs/transcripts/connect-steam-no-input.txt b/docs/transcripts/connect-steam-no-input.txt index 4faafbb3..d19c01b9 100644 --- a/docs/transcripts/connect-steam-no-input.txt +++ b/docs/transcripts/connect-steam-no-input.txt @@ -7,5 +7,5 @@ Finding a connector for Steam... No connector is available for Steam right now. → Next + • Try GitHub with `vana connect github`. • Browse available sources with `vana sources`. - • Then connect one with `vana connect `. diff --git a/docs/transcripts/connect-steam.txt b/docs/transcripts/connect-steam.txt index 4faafbb3..d19c01b9 100644 --- a/docs/transcripts/connect-steam.txt +++ b/docs/transcripts/connect-steam.txt @@ -7,5 +7,5 @@ Finding a connector for Steam... No connector is available for Steam right now. → Next + • Try GitHub with `vana connect github`. • Browse available sources with `vana sources`. - • Then connect one with `vana connect `. diff --git a/src/cli/index.ts b/src/cli/index.ts index 376621e4..84434417 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -383,17 +383,24 @@ async function runConnect( lastResultPath: null, }); if (!options.json) { + const suggestedSource = + registrySources.find((item) => item.authMode !== "legacy") ?? + registrySources[0]; emit.blank(); emit.section("Not available yet"); - } - emit.info(message); - if (!options.json) { + emit.info(message); emit.blank(); emit.section("Next"); - emit.bullet("Browse available sources with `vana sources`."); + if (suggestedSource) { + emit.bullet( + `Try ${suggestedSource.name} with ${emit.code(`vana connect ${suggestedSource.id}`)}.`, + ); + } emit.bullet( - `Then connect one with ${emit.code("vana connect ")}.`, + `Browse available sources with ${emit.code("vana sources")}.`, ); + } else { + emit.info(message); } emit.event({ type: "outcome", diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 8a9ac646..6754f39d 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -1771,7 +1771,18 @@ describe("runCli", () => { }); it("shows next steps when no connector exists in human mode", async () => { - mockListAvailableSources.mockResolvedValue([]); + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + }, + { + id: "shop", + name: "Shop", + authMode: "legacy", + }, + ]); fetchConnectorResult = undefined as never; const runtimeImport = await import("../../src/runtime/index.js"); const fetchSpy = vi @@ -1788,9 +1799,8 @@ describe("runCli", () => { expect(exitCode).toBe(1); expect(stdout).toContain("No connector is available for Steam right now."); expect(stdout).toContain("→ Next"); + expect(stdout).toContain("Try GitHub with `vana connect github`."); expect(stdout).toContain("Browse available sources with `vana sources`."); - expect(stdout).toContain("Then connect one with `vana connect `."); - expect(stdout).toContain("vana connect "); }); it("mentions reusable sessions when a browser profile exists", async () => { From 936b40c857bbdf89f1a5aba0f9b6f6ffeebc4baa Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 20:29:34 -0500 Subject: [PATCH 148/249] feat(cli): improve legacy connector human guidance --- src/cli/index.ts | 24 ++++++++++++++++++------ test/cli/index.test.ts | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 6 deletions(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 84434417..307a3835 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -594,14 +594,26 @@ async function runConnect( emit.info( `${displayName} still needs a manual browser step on this machine.`, ); - emit.detail( - `Because ${emit.code("--no-input")} is enabled, Vana stopped before opening that session.`, - ); + if (options.noInput) { + emit.detail( + `Because ${emit.code("--no-input")} is enabled, Vana stopped before opening that session.`, + ); + } else { + emit.detail( + "Vana Connect could not continue this older connector flow automatically yet.", + ); + } emit.blank(); emit.section("Next"); - emit.bullet( - `Run ${emit.code(`vana connect ${source}`)} without ${emit.code("--no-input")}.`, - ); + if (options.noInput) { + emit.bullet( + `Run ${emit.code(`vana connect ${source}`)} without ${emit.code("--no-input")}.`, + ); + } else { + emit.bullet( + `Complete the browser step locally, then rerun ${emit.code(`vana connect ${source}`)}.`, + ); + } if (event.logPath) { emit.keyValue("Run log", formatDisplayPath(event.logPath), "muted"); } diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 6754f39d..b7f29cba 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -715,6 +715,46 @@ describe("runCli", () => { expect(stdout).not.toContain("LegacyAuthError"); }); + it("prints a human manual-step message for legacy connectors", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "shop", + name: "Shop", + authMode: "legacy", + description: "Exports Shop data.", + }, + ]); + fetchConnectorResult = { + connectorPath: "/tmp/connectors/shop/shop-playwright.js", + logPath: "/tmp/logs/fetch.log", + }; + runConnectorEvents = [ + { + type: "legacy-auth", + source: "shop", + message: "Shop requires a manual browser step", + logPath: "/tmp/logs/run.log", + }, + ]; + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect", "shop"]); + + expect(exitCode).toBe(1); + expect(stdout).toContain( + "Shop still needs a manual browser step on this machine.", + ); + expect(stdout).toContain( + "Vana Connect could not continue this older connector flow automatically yet.", + ); + expect(stdout).toContain( + "Complete the browser step locally, then rerun `vana connect shop`.", + ); + expect(stdout).not.toContain( + "Because `--no-input` is enabled, Vana stopped before opening that session.", + ); + }); + it("shows collected data in json mode", async () => { mockListAvailableSources.mockResolvedValue([ { From 297a495159dcf680c6bf549a07b9a1de400c0f91 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 20:33:22 -0500 Subject: [PATCH 149/249] feat(cli): handle headless legacy connector flows --- docs/transcripts/README.md | 1 + docs/transcripts/connect-shop.txt | 16 ++++++++ scripts/capture-cli-transcripts.mjs | 6 +++ src/cli/index.ts | 39 +++++++++++++++++++ test/cli/index.test.ts | 60 +++++++++++++++++++++++++++++ 5 files changed, 122 insertions(+) create mode 100644 docs/transcripts/connect-shop.txt diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md index c125c920..243d9b24 100644 --- a/docs/transcripts/README.md +++ b/docs/transcripts/README.md @@ -26,6 +26,7 @@ Current generated surfaces include: - `connect-github-success.txt` - `connect-github-no-input.txt` - `connect-github-session-reuse-no-input.txt` +- `connect-shop.txt` - `connect-shop-no-input.txt` - `connect-steam.txt` - `connect-steam-no-input.txt` diff --git a/docs/transcripts/connect-shop.txt b/docs/transcripts/connect-shop.txt new file mode 100644 index 00000000..3daab4b8 --- /dev/null +++ b/docs/transcripts/connect-shop.txt @@ -0,0 +1,16 @@ +Connect Shop + +→ Preparing +Finding a connector for Shop... +Connector ready. +Exports your Shop app order history using Playwright browser automation. + If needed, Vana Connect will open a local browser session on this machine. + Found an existing Shop session. Reusing it if it is still valid... + +→ Manual step required +Shop still needs a manual browser step on this machine. + This source needs a manual browser step, but no local display server is available. Run this command in a desktop session or use xvfb-run. + +→ Next + • Run this command in a desktop session. + • Or retry with `xvfb-run -a vana connect shop`. diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index affe45de..b714ffb2 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -111,6 +111,12 @@ async function main() { env: seededEnv, allowFailure: true, }, + { + name: "connect-shop.txt", + argv: ["vana", "connect", "shop"], + env: seededEnv, + allowFailure: true, + }, { name: "connect-steam.txt", argv: ["vana", "connect", "steam"], diff --git a/src/cli/index.ts b/src/cli/index.ts index 307a3835..13e02f1b 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -441,6 +441,45 @@ async function runConnect( ); } + if ( + sourceDetails?.authMode === "legacy" && + !options.noInput && + process.platform === "linux" && + !process.env.DISPLAY && + !process.env.WAYLAND_DISPLAY + ) { + const message = + "This source needs a manual browser step, but no local display server is available. Run this command in a desktop session or use xvfb-run."; + await updateSourceState(resolution.source, { + connectorInstalled: true, + sessionPresent: fs.existsSync(profilePath), + lastRunAt: new Date().toISOString(), + lastRunOutcome: CliOutcomeStatus.LEGACY_AUTH, + dataState: "none", + lastError: message, + lastResultPath: null, + }); + emit.blank(); + emit.section("Manual step required"); + emit.info( + `${displayName} still needs a manual browser step on this machine.`, + ); + emit.detail(message); + emit.blank(); + emit.section("Next"); + emit.bullet("Run this command in a desktop session."); + emit.bullet( + `Or retry with ${emit.code(`xvfb-run -a vana connect ${source}`)}.`, + ); + emit.event({ + type: "outcome", + status: CliOutcomeStatus.LEGACY_AUTH, + source: resolution.source, + reason: "display_server_unavailable", + }); + return 1; + } + await updateSourceState(resolution.source, { connectorInstalled: true, sessionPresent: fs.existsSync(profilePath), diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index b7f29cba..f0904fb2 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -736,10 +736,20 @@ describe("runCli", () => { logPath: "/tmp/logs/run.log", }, ]; + const originalPlatform = process.platform; + Object.defineProperty(process, "platform", { + configurable: true, + value: "darwin", + }); const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "connect", "shop"]); + Object.defineProperty(process, "platform", { + configurable: true, + value: originalPlatform, + }); + expect(exitCode).toBe(1); expect(stdout).toContain( "Shop still needs a manual browser step on this machine.", @@ -755,6 +765,56 @@ describe("runCli", () => { ); }); + it("fails gracefully for legacy connectors without a local display server", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "shop", + name: "Shop", + authMode: "legacy", + description: "Exports Shop data.", + }, + ]); + fetchConnectorResult = { + connectorPath: "/tmp/connectors/shop/shop-playwright.js", + logPath: "/tmp/logs/fetch.log", + }; + mockExistsSync.mockImplementation( + (target: string) => + typeof target === "string" && target.includes("shop-playwright"), + ); + const originalPlatform = process.platform; + const originalDisplay = process.env.DISPLAY; + const originalWayland = process.env.WAYLAND_DISPLAY; + Object.defineProperty(process, "platform", { + configurable: true, + value: "linux", + }); + delete process.env.DISPLAY; + delete process.env.WAYLAND_DISPLAY; + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect", "shop"]); + + Object.defineProperty(process, "platform", { + configurable: true, + value: originalPlatform, + }); + if (originalDisplay) { + process.env.DISPLAY = originalDisplay; + } + if (originalWayland) { + process.env.WAYLAND_DISPLAY = originalWayland; + } + + expect(exitCode).toBe(1); + expect(stdout).toContain("→ Manual step required"); + expect(stdout).toContain( + "no local display server is available. Run this command in a desktop session or use xvfb-run.", + ); + expect(stdout).toContain("Run this command in a desktop session."); + expect(stdout).toContain("xvfb-run -a vana connect shop"); + }); + it("shows collected data in json mode", async () => { mockListAvailableSources.mockResolvedValue([ { From f89b72a34132a38de019b98de15c4a6ab1de2c1e Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 20:34:18 -0500 Subject: [PATCH 150/249] feat(cli): tighten event type schema --- src/core/cli-types.ts | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index 45deaebc..4491a67a 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -205,6 +205,27 @@ export const progressPhaseSchema = z.object({ }); export type ProgressPhase = z.infer; +export const cliEventTypeSchema = z.enum([ + "collection-complete", + "connector-resolved", + "headed-required", + "ingest-complete", + "ingest-failed", + "ingest-skipped", + "ingest-started", + "jpeg", + "legacy-auth", + "needs-input", + "outcome", + "progress-update", + "run-started", + "runtime-error", + "setup-check", + "setup-complete", + "status-update", +]); +export type CliEventType = z.infer; + export const sourceRequiredErrorSchema = z.object({ error: z.literal("source_required"), message: z.string(), @@ -238,7 +259,7 @@ export type DatasetReadFailedError = z.infer< >; export const cliEventSchema = z.object({ - type: z.string(), + type: cliEventTypeSchema, source: z.string().optional(), message: z.string().optional(), status: z.string().optional(), From 727a4db00ebe370289e0231fdef5aede8d30b2aa Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 20:36:08 -0500 Subject: [PATCH 151/249] feat(cli): expose sync counts in status json --- README.md | 2 +- src/cli/index.ts | 9 +++++++++ src/core/cli-types.ts | 3 +++ test/cli/index.test.ts | 3 +++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4d456ab2..8f3c7035 100644 --- a/README.md +++ b/README.md @@ -228,7 +228,7 @@ vana data show github --json | jq '.summary.lines' ### Shell examples ```bash -vana status --json | jq '.channel, .installMethod, .summary' +vana status --json | jq '.channel, .installMethod, .summary | {connectedCount, localCount, syncedCount}' vana sources --json | jq '.summary, .recommendedSource' vana data list --json | jq '.summary, .datasets[] | {source, dataState, path}' vana doctor --json | jq '.paths.executable, .paths.appRoot, .lifecycle' diff --git a/src/cli/index.ts b/src/cli/index.ts index 13e02f1b..8c690e12 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1073,6 +1073,15 @@ async function runStatus(options: GlobalOptions): Promise { source.dataState === "ingest_failed", ).length, installedCount: sources.filter((source) => source.installed).length, + localCount: sources.filter( + (source) => source.dataState === "collected_local", + ).length, + syncedCount: sources.filter( + (source) => source.dataState === "ingested_personal_server", + ).length, + syncFailedCount: sources.filter( + (source) => source.dataState === "ingest_failed", + ).length, }, sources, }; diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index 4491a67a..b3fe3f55 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -90,6 +90,9 @@ export const cliStatusSchema = z.object({ needsAttentionCount: z.number(), connectedCount: z.number(), installedCount: z.number(), + localCount: z.number(), + syncedCount: z.number(), + syncFailedCount: z.number(), }) .optional(), nextSteps: z.array(z.string()).optional(), diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index f0904fb2..0379deb6 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -261,6 +261,9 @@ describe("runCli", () => { needsAttentionCount: 0, connectedCount: 1, installedCount: 0, + localCount: 1, + syncedCount: 0, + syncFailedCount: 0, }, sources: [ { From ea1a4817dd066efbc6594baa8fbcef6c01ca1231 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 20:38:36 -0500 Subject: [PATCH 152/249] feat(cli): refine status overview counts --- docs/transcripts/status.txt | 2 +- src/cli/index.ts | 10 +++++++++- test/cli/index.test.ts | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index 05ada8d1..3c0355ab 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -1,6 +1,6 @@ Vana Connect status -need attention (2) • connected (2) +need attention (2) • local (2) • connected (2) → Environment Runtime: installed diff --git a/src/cli/index.ts b/src/cli/index.ts index 8c690e12..71bf66be 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1105,7 +1105,15 @@ async function runStatus(options: GlobalOptions): Promise { "need attention", status.summary?.needsAttentionCount ?? 0, ), - formatCountLabel("connected", status.summary?.connectedCount ?? 0), + (status.summary?.localCount ?? 0) > 0 + ? formatCountLabel("local", status.summary?.localCount ?? 0) + : "", + (status.summary?.syncedCount ?? 0) > 0 + ? formatCountLabel("synced", status.summary?.syncedCount ?? 0) + : "", + (status.summary?.syncFailedCount ?? 0) > 0 + ? formatCountLabel("sync failed", status.summary?.syncFailedCount ?? 0) + : formatCountLabel("connected", status.summary?.connectedCount ?? 0), ]), ); emit.blank(); diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 0379deb6..11041c95 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -527,7 +527,7 @@ describe("runCli", () => { expect(normalizeRenderedTimestamps(stdout)).toMatchInlineSnapshot(` "Vana Connect status - need attention (1) • connected (1) + need attention (1) • local (1) • connected (1) → Environment Runtime: installed From a9561811a97f5b7f892d989e94bade81b0b47919 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 20:47:17 -0500 Subject: [PATCH 153/249] feat(cli): show help when no command is given --- src/cli/index.ts | 3 +++ test/cli/index.test.ts | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/cli/index.ts b/src/cli/index.ts index 71bf66be..a54c8591 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -95,6 +95,9 @@ type SourceStatusDetail = export async function runCli(argv = process.argv): Promise { const normalizedArgv = normalizeArgv(argv); + if (normalizedArgv.length <= 2) { + normalizedArgv.push("--help"); + } const parsedOptions = extractGlobalOptions(normalizedArgv); const cliVersion = getCliVersion(); const program = new Command(); diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 11041c95..64ab25a3 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -306,6 +306,16 @@ describe("runCli", () => { expect(stdout).toContain("vana connect github"); }); + it("shows top-level help and exits successfully with no arguments", async () => { + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain("Vana Connect CLI"); + expect(stdout).toContain("Commands:"); + expect(stdout).toContain("vana status"); + }); + it("shows examples in connect help", async () => { const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "connect", "--help"]); From 3efed8b4f83bae9f3bc90b46a20022b771a066e0 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 20:48:20 -0500 Subject: [PATCH 154/249] feat(cli): show data help with no subcommand --- src/cli/index.ts | 4 ++++ test/cli/index.test.ts | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/cli/index.ts b/src/cli/index.ts index a54c8591..78198a7e 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -222,6 +222,10 @@ Examples: vana data path github --json `, ); + data.action(() => { + data.outputHelp(); + process.exitCode = 0; + }); const dataListCommand = data .command("list") diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 64ab25a3..72366ee5 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -336,6 +336,16 @@ describe("runCli", () => { expect(stdout).toContain("vana data show github --json | jq '.summary'"); }); + it("shows data help and exits successfully with no subcommand", async () => { + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "data"]); + + expect(exitCode).toBe(0); + expect(stdout).toContain("Inspect collected data"); + expect(stdout).toContain("vana data list"); + expect(stdout).toContain("vana data show github"); + }); + it("prints structured doctor output in json mode", async () => { mockReadCliState.mockResolvedValue({ version: 1, From ce3d7cd6dbd1edb8519188aeed451e1c7f4635cf Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 20:51:43 -0500 Subject: [PATCH 155/249] chore(demo): add help transcripts --- docs/transcripts/README.md | 2 ++ docs/transcripts/data-help.txt | 17 +++++++++++++++++ docs/transcripts/help.txt | 24 ++++++++++++++++++++++++ scripts/capture-cli-transcripts.mjs | 10 ++++++++++ 4 files changed, 53 insertions(+) create mode 100644 docs/transcripts/data-help.txt create mode 100644 docs/transcripts/help.txt diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md index 243d9b24..c825d391 100644 --- a/docs/transcripts/README.md +++ b/docs/transcripts/README.md @@ -14,6 +14,8 @@ pnpm demo:transcripts Current generated surfaces include: +- `help.txt` +- `data-help.txt` - `status.txt` - `doctor.txt` - `setup.txt` diff --git a/docs/transcripts/data-help.txt b/docs/transcripts/data-help.txt new file mode 100644 index 00000000..8867b8e5 --- /dev/null +++ b/docs/transcripts/data-help.txt @@ -0,0 +1,17 @@ +Usage: vana data [options] [command] + +Inspect collected data + +Options: + -h, --help display help for command + +Commands: + list [options] List locally available collected datasets + show [options] Show a collected dataset + path [options] Print the local path for a collected dataset + +Examples: + vana data list + vana data show github + vana data path github --json + diff --git a/docs/transcripts/help.txt b/docs/transcripts/help.txt new file mode 100644 index 00000000..3c7554d2 --- /dev/null +++ b/docs/transcripts/help.txt @@ -0,0 +1,24 @@ +Usage: vana [options] [command] + +Vana Connect CLI + +Options: + -v, --version Print CLI version + -h, --help display help for command + +Commands: + version Print CLI version + connect [options] [source] Connect a source and collect data + sources [options] List supported sources + status [options] Show runtime and Personal Server status + doctor [options] Inspect local CLI, runtime, and install health + setup [options] Install or repair the local runtime + data Inspect collected data + help [command] display help for command + +Examples: + vana status + vana connect github + vana data show github + vana doctor + diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index b714ffb2..f55179f8 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -42,6 +42,16 @@ async function main() { delete seededInputEnv.VANA_DEMO_FAST_SUCCESS; const commands = [ + { + name: "help.txt", + argv: ["vana"], + env: seededEnv, + }, + { + name: "data-help.txt", + argv: ["vana", "data"], + env: seededEnv, + }, { name: "status.txt", argv: ["vana", "status"], From 75b2c73d0ba38ae60e41b30711986ba981c2b5cd Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 20:58:09 -0500 Subject: [PATCH 156/249] feat(cli): add interactive connect progress --- package.json | 1 + pnpm-lock.yaml | 3 ++ src/cli/index.ts | 22 +++++++++++- src/cli/render/index.ts | 1 + src/cli/render/progress.ts | 70 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 src/cli/render/progress.ts diff --git a/package.json b/package.json index 9095257d..38ef42ee 100644 --- a/package.json +++ b/package.json @@ -100,6 +100,7 @@ "@inquirer/prompts": "8.3.0", "chromium-bidi": "15.0.0", "commander": "14.0.3", + "ora": "^8.2.0", "picocolors": "^1.1.1", "playwright": "1.58.2", "zod": "4.3.6" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index abcf519c..65b6f91d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,6 +16,9 @@ importers: commander: specifier: 14.0.3 version: 14.0.3 + ora: + specifier: ^8.2.0 + version: 8.2.0 picocolors: specifier: ^1.1.1 version: 1.1.1 diff --git a/src/cli/index.ts b/src/cli/index.ts index 78198a7e..fc63fe21 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -7,7 +7,7 @@ import { createRequire } from "node:module"; import { Separator, confirm, input, password, select } from "@inquirer/prompts"; import { Command, CommanderError } from "commander"; -import { createHumanRenderer } from "./render/index.js"; +import { createHumanRenderer, createProgressHandle } from "./render/index.js"; import { CliOutcomeStatus, getCliStatePath, @@ -298,6 +298,9 @@ async function runConnect( ): Promise { const runtime = new ManagedPlaywrightRuntime(); const emit = createEmitter(options); + const progress = createProgressHandle({ + enabled: !options.json && !options.quiet, + }); const registrySources = await loadRegistrySources(); const sourceLabels = createSourceLabelMap(registrySources); const displayName = displaySource(source, sourceLabels); @@ -311,6 +314,7 @@ async function runConnect( emit.blank(); emit.section("Preparing"); emit.info(`Finding a connector for ${displayName}...`); + progress.start(`Preparing ${displayName}...`); const target = await detectPersonalServerTarget(); if (runtime.state !== "installed") { @@ -360,6 +364,7 @@ async function runConnect( logPath: installResult.logPath, }); emit.success("Runtime ready."); + progress.update("Runtime ready."); if (installResult.logPath) { emit.detail(`Setup log: ${formatDisplayPath(installResult.logPath)}`); } @@ -390,6 +395,7 @@ async function runConnect( lastResultPath: null, }); if (!options.json) { + progress.fail(`${displayName} is not available yet.`); const suggestedSource = registrySources.find((item) => item.authMode !== "legacy") ?? registrySources[0]; @@ -430,6 +436,7 @@ async function runConnect( logPath: fetched.logPath, }); emit.info("Connector ready."); + progress.update(`Connector ready for ${displayName}.`); if (sourceDetails?.description) { emit.info(sourceDetails.description); } @@ -484,6 +491,7 @@ async function runConnect( source: resolution.source, reason: "display_server_unavailable", }); + progress.fail(`Manual step required for ${displayName}.`); return 1; } @@ -497,6 +505,7 @@ async function runConnect( emit.section("Connecting"); emit.info(`Connecting to ${displayName}...`); emit.info("Collecting your data..."); + progress.update(`Collecting ${displayName} data...`); let finalStatus: CliOutcome["status"] = CliOutcomeStatus.UNEXPECTED_INTERNAL_ERROR; @@ -561,6 +570,7 @@ async function runConnect( source: resolution.source, }); if (!options.json) { + progress.stop(); emit.blank(); emit.section("Input required"); emit.info( @@ -582,6 +592,7 @@ async function runConnect( if (event.type === "progress-update") { const progressLine = formatProgressUpdate(event); if (progressLine) { + progress.update(progressLine); emit.detail(progressLine); } continue; @@ -589,6 +600,7 @@ async function runConnect( if (event.type === "status-update") { if (event.message && shouldRenderStatusUpdate(event.message)) { + progress.update(event.message); emit.detail(event.message); } continue; @@ -601,6 +613,7 @@ async function runConnect( lastError: event.message ?? "Connector run failed.", }); emit.blank(); + progress.fail(`Problem connecting ${displayName}.`); emit.section("Problem"); emit.info(event.message ?? "Connector run failed."); emit.event({ @@ -617,6 +630,7 @@ async function runConnect( if (event.type === "headed-required") { emit.blank(); + progress.update(`Manual browser step required for ${displayName}.`); emit.section("Continue in your browser"); if (event.message) { emit.info(event.message); @@ -636,6 +650,7 @@ async function runConnect( lastResultPath: null, }); emit.blank(); + progress.stop(); emit.section("Manual step required"); emit.info( `${displayName} still needs a manual browser step on this machine.`, @@ -750,6 +765,7 @@ async function runConnect( : `Collected your ${displayName} data and saved it locally.`; emit.success(`Connected ${displayName}.`); + progress.succeed(`Connected ${displayName}.`); emit.detail(successSummary); emit.blank(); @@ -822,6 +838,7 @@ async function runConnect( lastError: "Cancelled before input was completed.", }); emit.blank(); + progress.stop(); emit.section("Cancelled"); emit.info(`Stopped before ${displayName} finished collecting your data.`); emit.detail("No credentials were sent anywhere."); @@ -842,6 +859,7 @@ async function runConnect( } const message = error instanceof Error ? error.message : "Unexpected error."; + progress.fail(`Problem connecting ${displayName}.`); emit.info(message); emit.event({ type: "outcome", @@ -857,6 +875,8 @@ async function runConnect( emit.detail(`Setup log: ${formatDisplayPath(setupLogPath)}`); } return 1; + } finally { + progress.stop(); } } diff --git a/src/cli/render/index.ts b/src/cli/render/index.ts index 028291aa..2514bc9f 100644 --- a/src/cli/render/index.ts +++ b/src/cli/render/index.ts @@ -1,4 +1,5 @@ export * from "./capabilities.js"; export * from "./format.js"; +export * from "./progress.js"; export * from "./symbols.js"; export * from "./theme.js"; diff --git a/src/cli/render/progress.ts b/src/cli/render/progress.ts new file mode 100644 index 00000000..2c947cd5 --- /dev/null +++ b/src/cli/render/progress.ts @@ -0,0 +1,70 @@ +import ora, { type Ora } from "ora"; + +import { detectRenderCapabilities } from "./capabilities.js"; + +export interface ProgressHandle { + start(text: string): void; + update(text: string): void; + succeed(text: string): void; + fail(text: string): void; + stop(): void; +} + +export function createProgressHandle(options?: { + enabled?: boolean; +}): ProgressHandle { + const capabilities = detectRenderCapabilities(); + if (!options?.enabled || !capabilities.interactive) { + return createNoopHandle(); + } + + let spinner: Ora | null = null; + + return { + start(text: string) { + if (spinner) { + spinner.stop(); + } + spinner = ora({ + text, + isEnabled: true, + discardStdin: false, + }).start(); + }, + update(text: string) { + if (!spinner) { + this.start(text); + return; + } + spinner.text = text; + }, + succeed(text: string) { + if (!spinner) { + spinner = ora({ text, isEnabled: true, discardStdin: false }); + } + spinner.succeed(text); + spinner = null; + }, + fail(text: string) { + if (!spinner) { + spinner = ora({ text, isEnabled: true, discardStdin: false }); + } + spinner.fail(text); + spinner = null; + }, + stop() { + spinner?.stop(); + spinner = null; + }, + }; +} + +function createNoopHandle(): ProgressHandle { + return { + start() {}, + update() {}, + succeed() {}, + fail() {}, + stop() {}, + }; +} From 85c4126e27b3a0427e924106bc73217469ef684b Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 23:15:02 -0500 Subject: [PATCH 157/249] feat(cli): finish local product polish and runtime hardening --- README.md | 13 +- docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md | 17 + docs/CLI-EXECUTION-PLAYBOOK.md | 299 ++++++ docs/CLI-EXIT-CODE-MATRIX.md | 87 ++ docs/CLI-RUNTIME-PORTABILITY-NOTES.md | 122 +++ docs/transcripts/README.md | 1 + docs/transcripts/connect-github-no-input.txt | 2 + .../connect-github-session-reuse-no-input.txt | 2 + docs/transcripts/connect-github-success.txt | 2 + docs/transcripts/connect-shop-no-input.txt | 2 + docs/transcripts/connect-shop.txt | 2 + docs/transcripts/connect-steam-no-input.txt | 1 + docs/transcripts/connect-steam.txt | 1 + docs/transcripts/data-help.txt | 2 +- docs/transcripts/data-list.txt | 2 +- docs/transcripts/data-show-github.txt | 1 + docs/transcripts/doctor.txt | 21 +- docs/transcripts/help.txt | 23 +- docs/transcripts/logs.txt | 21 + docs/transcripts/sources.txt | 15 +- docs/transcripts/status.txt | 5 +- package.json | 4 +- scripts/capture-cli-transcripts.mjs | 5 + scripts/prepare-vhs-fixtures.mjs | 24 + scripts/report-runtime-footprint.mjs | 153 +++ src/cli/index.ts | 984 ++++++++++++++++-- src/cli/render/format.ts | 18 + src/core/cli-types.ts | 63 +- src/core/state-store.ts | 109 +- src/runtime/managed-playwright.ts | 135 ++- src/runtime/playwright/browser.ts | 21 +- test/cli/index.test.ts | 485 ++++++++- test/cli/render-format.test.ts | 27 + test/core/state-store.test.ts | 85 ++ test/runtime/browser.test.ts | 163 +++ 35 files changed, 2751 insertions(+), 166 deletions(-) create mode 100644 docs/CLI-EXIT-CODE-MATRIX.md create mode 100644 docs/CLI-RUNTIME-PORTABILITY-NOTES.md create mode 100644 docs/transcripts/logs.txt create mode 100644 scripts/report-runtime-footprint.mjs create mode 100644 test/cli/render-format.test.ts create mode 100644 test/core/state-store.test.ts create mode 100644 test/runtime/browser.test.ts diff --git a/README.md b/README.md index 8f3c7035..ef1419fc 100644 --- a/README.md +++ b/README.md @@ -35,23 +35,30 @@ vana doctor vana status vana sources vana connect github +vana data list vana data show github +vana logs github ``` Current reviewable transcripts: - [`status`](./docs/transcripts/status.txt) - [`doctor`](./docs/transcripts/doctor.txt) +- [`logs`](./docs/transcripts/logs.txt) - [`setup`](./docs/transcripts/setup.txt) - [`sources`](./docs/transcripts/sources.txt) - [`data list`](./docs/transcripts/data-list.txt) +- [`data help`](./docs/transcripts/data-help.txt) - [`data list (empty)`](./docs/transcripts/data-list-empty.txt) - [`data show github`](./docs/transcripts/data-show-github.txt) - [`data show github (missing)`](./docs/transcripts/data-show-github-missing.txt) - [`data path github`](./docs/transcripts/data-path-github.txt) - [`connect github`](./docs/transcripts/connect-github-success.txt) - [`connect github --no-input`](./docs/transcripts/connect-github-no-input.txt) +- [`connect github session reuse --no-input`](./docs/transcripts/connect-github-session-reuse-no-input.txt) +- [`connect shop`](./docs/transcripts/connect-shop.txt) - [`connect shop --no-input`](./docs/transcripts/connect-shop-no-input.txt) +- [`connect steam`](./docs/transcripts/connect-steam.txt) - [`connect steam --no-input`](./docs/transcripts/connect-steam-no-input.txt) ## What problem this solves @@ -198,6 +205,7 @@ npx -y @opendatalabs/connect status vana --version vana version vana doctor +vana logs vana connect vana sources vana connect github @@ -215,6 +223,7 @@ vana data show github --json | jq '.summary.lines' - `vana sources` groups sources into ready-now vs manual-step flows. - `vana status` prioritizes sources that need attention before already-connected sources. - `vana doctor` checks the local install, browser runtime, and state directories. +- `vana logs` lets you inspect the latest stored connector run logs without hunting through `~/.dataconnect/logs`. - `vana data ...` lets you inspect collected local datasets without opening the raw JSON file yourself. ### Shell contract @@ -231,7 +240,8 @@ vana data show github --json | jq '.summary.lines' vana status --json | jq '.channel, .installMethod, .summary | {connectedCount, localCount, syncedCount}' vana sources --json | jq '.summary, .recommendedSource' vana data list --json | jq '.summary, .datasets[] | {source, dataState, path}' -vana doctor --json | jq '.paths.executable, .paths.appRoot, .lifecycle' +vana logs --json | jq '.latestLog, .logs[] | {source, path}' +vana doctor --json | jq '.paths.executable, .paths.dataHome, .lifecycle' ``` ### Upgrade, channels, and uninstall @@ -305,6 +315,7 @@ Current reviewable transcripts: - [`status`](./docs/transcripts/status.txt) - [`doctor`](./docs/transcripts/doctor.txt) +- [`logs`](./docs/transcripts/logs.txt) - [`setup`](./docs/transcripts/setup.txt) - [`sources`](./docs/transcripts/sources.txt) - [`data list`](./docs/transcripts/data-list.txt) diff --git a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md index 3a3200bd..a50fe9ea 100644 --- a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md +++ b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md @@ -54,6 +54,23 @@ Not: - a coding-agent TUI clone - a flashy branded terminal demo +Important: + +This plan by itself is **necessary but not sufficient** for best-in-class +quality. + +Beauty work can make the CLI feel premium, but it does not automatically close: + +- cold-install trust +- degraded/manual-flow excellence +- post-success payoff quality +- public-artifact truth + +Those are tracked explicitly in: + +- [CLI-EXECUTION-PLAYBOOK.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-EXECUTION-PLAYBOOK.md) + under **Batch 8A: Best-In-Class Finish** + ## Brand palette anchor The CLI should not invent its own theme. It should derive its semantic color diff --git a/docs/CLI-EXECUTION-PLAYBOOK.md b/docs/CLI-EXECUTION-PLAYBOOK.md index 20a127b4..8dab75c6 100644 --- a/docs/CLI-EXECUTION-PLAYBOOK.md +++ b/docs/CLI-EXECUTION-PLAYBOOK.md @@ -10,6 +10,7 @@ It should be read after: - [CLI-FINAL-PRODUCT-SPEC.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-FINAL-PRODUCT-SPEC.md) - [CLI-BEAUTY-IMPLEMENTATION-PLAN.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md) +- [CLI-RUNTIME-PORTABILITY-NOTES.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-RUNTIME-PORTABILITY-NOTES.md) If this document conflicts with casual conversational guidance, this document wins. @@ -28,15 +29,22 @@ Already true on this branch: - published canary assets work - `status`, `sources`, `data`, and guided `connect` have been materially upgraded +- `doctor`, `version`, and `logs` are now real first-class CLI surfaces - guided `connect` now has clearer entry, cancellation, and continuation copy - `status` now points users toward `vana data list` when that is the right next step - `data show` / `data path` JSON surfaces are more useful for shell tooling +- `logs` now exposes stored run-log paths in both human and `--json` modes - `sources`, `status`, `data`, and success summaries now use more structured factual rows - source discovery surfaces now explain whether a source prompts in-terminal or requires a manual browser step +- source discovery now exposes a recommended path in both JSON and human mode - `data` empty/missing states now include concrete next steps instead of dead-end copy - `sources --json`, `status --json`, and `data list --json` now expose more top-level guidance metadata +- `doctor --json` now exposes runtime capabilities, lifecycle commands, summary counts, and recent source activity - successful connects now explicitly mention the saved browser session payoff - structured runtime `status-update` and `progress-update` events exist +- display-path rendering is now centralized and regression-tested +- CLI state writes now use a lock + atomic-write path with concurrency regression coverage +- runtime footprint measurement now exists via `pnpm runtime:footprint` - README-facing VHS demos and transcripts are publishing from CI - local transcript/demo scripts now rebuild first so review artifacts cannot silently drift behind `dist` @@ -47,6 +55,36 @@ It is: 2. deepen beauty on top of that stable surface 3. keep release work efficient instead of churning many tiny deploy cycles +## Immediate Local Sequence + +Until explicitly told otherwise, the next model should stay in the **local-only +execution lane** and defer: + +- canary polling +- Homebrew/tap sync +- hosted installer verification +- published artifact checks + +The immediate local sequence is: + +1. finish the remaining **Batch 8A: Best-In-Class Finish** local work +2. continue any remaining **Batch 2 / Batch 3** connect-journey and static-surface polish +3. continue local README / transcript / VHS alignment work +4. continue bounded **Batch 5B** work only where it does **not** require external platform validation +5. only switch to external validation once the known local backlog is genuinely exhausted + +When deciding what to do next locally, prefer this order: + +1. improve the human `connect` journey +2. improve post-success payoff and `vana data` +3. improve first-run/help/discovery coherence +4. improve degraded/manual-flow grace +5. improve operator affordances that are already justified by existing runtime data + +Do **not** start external validation just because it is possible. +Only start it when it becomes an input to remaining work or when the local +backlog is meaningfully exhausted. + ## Operating Rules These rules should govern all remaining work. @@ -120,6 +158,27 @@ Good subagent work: - README/demo asset plumbing - acceptance test harnesses +### 6. Research before product judgment + +If a later batch depends on claims about: + +- best-in-class CLI prior art +- current Playwright/Node/browser-install support +- current platform behavior on Windows/macOS/Linux +- public release-channel expectations or install norms + +then the model executing that batch should research current primary sources +first instead of relying on memory. + +Examples: + +- official docs +- maintained upstream repos +- current release artifacts +- current platform behavior observed directly + +Do not make "best-in-class" or portability decisions from stale assumptions. + ## Release Efficiency Lane This is a continuous lane, not a one-time batch. @@ -455,6 +514,86 @@ Primary-agent integration: - deciding what version information belongs in normal human surfaces - protecting the CLI from “helpful” additions that bloat the contract +## Batch 5B: Runtime And Portability Validation + +Do this after the main local feature/beauty work is coherent, but before stable +promotion and before spending serious time on deployment polish. + +### Why this batch exists + +The current code review uncovered a few concerns that are more fundamental than +copy or presentation: + +- `src/core/state-store.ts` currently does an uncoordinated read-modify-write of + `vana-connect-state.json` +- `src/runtime/playwright/browser.ts` opportunistically shells out to + `sqlite3` for cookie import +- `src/runtime/managed-playwright.ts` intentionally avoids user-facing `npx`, + but reaches into Playwright internals for browser installation + +Those should not derail the current CLI feature work, but they also should not +be left to vague “later” follow-up. + +### Goals + +- validate correctness and portability risks before stable +- distinguish real problems from speculative LLM concern +- prefer bounded, defensible fixes over reactive dependency churn + +### Work items + +1. Lock the display-path invariant. + - Confirm that `~` is presentation-only. + - Add a narrow regression test or audit proving that display strings never + feed filesystem APIs. + +2. Add a concurrency regression for CLI state writes. + - Reproduce the failure mode, if any, against `updateSourceState(...)`. + - Choose the fix based on that reproduction. + - Prefer atomic-write discipline or a more fundamental state-model change + over reflexively adding a lockfile package. + +3. Audit `sqlite3` portability explicitly. + - Treat this as a Windows concern first. + - Current code already tolerates `sqlite3` absence, so the question is + product impact, not “does the CLI boot”. + - Decide whether opportunistic best-effort is acceptable for stable or + whether cookie import must move to an embedded JS/WASM path. + +4. Revalidate the Playwright browser-install strategy. + - Playwright’s official docs still present CLI-driven browser installation as + the normal path. + - Our current internal-registry approach may still be the right product + choice because we cannot require user-facing `npx`. + - Before stable, confirm whether a cleaner package-owned install path exists + on current Playwright. + +5. Measure browser/runtime asset growth before designing cleanup. + - Use actual size/update data. + - If cleanup is needed, design it as an intentional lifecycle feature, not a + reactionary installer workaround. + +### Exit criteria + +- the `~` concern is either dismissed with proof or fixed +- state writes have a defended concurrency story +- Windows/sqlite behavior is understood and intentionally accepted or replaced +- the Playwright install path is defended for stable +- size/bloat concerns are based on measurement, not guesswork + +### Good subagent slices + +1. path invariant audit + tests +2. state-store concurrency reproduction +3. Windows/sqlite portability audit +4. Playwright install-strategy note with code references +5. runtime/browser size measurement script or report + +Primary-agent integration: + +- deciding whether a concern changes architecture, needs a bounded fix, or can + remain an explicit non-goal + ## Batch 6: Debuggability And Operator Affordances This batch is for connector authors, agents, and support/debug workflows. @@ -532,6 +671,84 @@ Primary-agent integration: - final public-facing quality bar - deciding when canary quality is good enough to promote +## Batch 8A: Best-In-Class Finish + +This batch exists because "strong CLI" and "best-in-class CLI" are not the +same thing. + +Earlier batches improve components: + +- command surfaces +- machine contracts +- diagnostics +- demos +- install paths + +But best-in-class quality only exists when those parts feel excellent **as one +product**. + +### Goals + +- the installed CLI should feel premium to a cold user, not just correct +- the human journey should feel great in both the happy path and the degraded path +- the CLI should feel unusually complete compared with typical product CLIs + +### Work items + +1. Close the cold-start delight gap. + - install / first-run / first-value path should feel tight and intentional + - help, version, doctor, and status should reinforce trust immediately + +2. Close the connect-journey excellence gap. + - migrated/requestInput flows should feel calm and premium + - legacy/manual flows should feel gracefully supported, not second-class + - success, cancel, unavailable, and runtime-error states should all land well + +3. Close the post-success payoff gap. + - `vana data` should feel like a real reward surface, not just a path printer + - the first successful run should create obvious momentum for the second + +4. Close the public-artifact truth gap. + - Homebrew / installer / README / demos should reflect the same quality bar + - no meaningful gap should remain between local branch quality and published experience + +5. Compare against real best-in-class expectations, not just the old branch. + - use the existing beauty brief/research as a bar + - judge the CLI against `gh` / Vercel / Stripe-style expectations: + - confidence + - restraint + - clarity + - quality of degraded states + +### Exit criteria + +- a cold evaluator can discover, install, connect, inspect, and troubleshoot + without extra context and come away impressed +- the CLI feels premium in: + - help + - connect + - status + - data inspection + - diagnostics +- manual/legacy connectors are handled gracefully enough that they do not + materially undermine the product impression +- published artifact quality matches local branch quality closely enough that + the README can be trusted as a live product surface + +### Good subagent slices + +1. cold-start acceptance script and checklist +2. post-success payoff transcript/demo review +3. degraded-state transcript review and polish +4. README/demo/public-surface consistency review +5. prior-art / official-doc research packet for final judgment + +Primary-agent integration: + +- deciding whether the CLI is merely "good" or actually "best-in-class" +- deciding whether degraded paths are graceful enough +- deciding when the product impression is strong enough to promote beyond canary + ## Batch 9: Stable-Release Readiness Do not start this early. @@ -551,6 +768,88 @@ This is the final readiness lane after the product feels right. - there is a clear, defensible reason to promote beyond canary +## Deferred Validation Concerns + +These are not active batch redirects. Revisit them deliberately once the main +feature/UX work is complete or if current implementation work touches the same +area. + +### 1. Display-path tilde handling + +Current read: + +- likely overstated as a current bug +- functional paths already come from `os.homedir()`-backed helpers in + `src/core/paths.ts` +- `~` currently appears mainly in human-facing display rendering via + `formatDisplayPath(...)` + +What to validate later: + +- confirm no filesystem write/read path is ever sourced from a display string +- keep `~` strictly as a presentation concern + +### 2. Concurrent state-file writes + +Current read: + +- real concern +- today `updateSourceState(...)` does a read-modify-write on + `vana-connect-state.json` with no coordination +- this can plausibly lose updates under concurrent CLI runs + +What to validate later: + +- write a concurrency regression test first +- prefer deciding between atomic-write discipline, sharded state, or locking + based on the actual failure mode +- do not add a lockfile dependency by reflex + +### 3. Playwright/browser asset growth + +Current read: + +- concern may be real, but is unmeasured right now +- not a reason to regress to user-visible `npx`/system-Node assumptions + +What to validate later: + +- measure installed size and update churn across a few releases +- if bloat is real, prefer managed cache cleanup/lifecycle commands over + reinstall-heavy behavior + +### 4. External `sqlite3` dependency + +Current read: + +- real cross-platform portability concern +- `src/runtime/playwright/browser.ts` opportunistically shells out to + `sqlite3` for cookie import +- the code already tolerates failure, so this is not a universal blocker, but + it may create uneven behavior across machines + +What to validate later: + +- confirm actual behavior on Windows/macOS/Linux +- decide whether opportunistic best-effort is acceptable or whether the feature + should move to an embedded JS/WASM approach + +### 5. Playwright browser-install API usage + +Current read: + +- worth re-validating before stable +- current implementation intentionally avoids user-facing `npx` +- it currently reaches into Playwright internals via the registry module in + `src/runtime/managed-playwright.ts` + +What to validate later: + +- confirm this remains the best supported path on current Playwright/Node +- if Playwright exposes a cleaner package-owned install entrypoint, prefer that + over private internals +- do not reintroduce user prerequisites just to become “more official” + ## Recommended Execution Pattern For lower-reasoning models: diff --git a/docs/CLI-EXIT-CODE-MATRIX.md b/docs/CLI-EXIT-CODE-MATRIX.md new file mode 100644 index 00000000..0961f8a5 --- /dev/null +++ b/docs/CLI-EXIT-CODE-MATRIX.md @@ -0,0 +1,87 @@ +# CLI Exit Code Matrix + +This document defines the current `vana` exit-code contract. + +The guiding rule is simple: + +- `0` means the requested command completed successfully +- `1` means the requested command did not complete successfully, including + guided/recoverable cases like missing source input, setup required, or manual + action still needed + +The CLI does **not** currently use a large family of bespoke nonzero exit +codes. The machine-readable distinction comes from: + +- the JSON payload for command surfaces like `status`, `sources`, `data`, and + errors +- streamed `outcome` / runtime events for connect flows + +## Top-level Commands + +| Command | Success | Non-success | +| --------------------- | ---------------------- | ----------- | +| `vana` | `0` when help is shown | n/a | +| `vana --help` | `0` | n/a | +| `vana --version` | `0` | n/a | +| `vana version` | `0` | n/a | +| `vana version --json` | `0` | n/a | +| `vana status` | `0` | n/a | +| `vana status --json` | `0` | n/a | +| `vana doctor` | `0` | n/a | +| `vana doctor --json` | `0` | n/a | +| `vana sources` | `0` | n/a | +| `vana sources --json` | `0` | n/a | + +## Connect + +| Command / Outcome | Exit code | Notes | +| ------------------------------------------------------ | --------- | ------------------------------------------------------ | +| `vana connect ` success | `0` | Includes local-only and synced success | +| `vana connect` guided picker success | `0` | When a source is selected and the connect run succeeds | +| `vana connect --json` without source | `1` | Returns `source_required` JSON | +| `vana connect` without source in non-interactive shell | `1` | Prints guidance | +| Guided picker cancelled | `1` | No connection was made | +| Setup required / setup declined | `1` | Recoverable via `vana setup` or rerun | +| `needs_input` in `--no-input` mode | `1` | Recoverable by rerunning without `--no-input` | +| `legacy_auth` / manual browser step still required | `1` | Recoverable by rerunning interactively | +| Connector unavailable | `1` | Recoverable if/when the connector becomes available | +| Runtime/internal failure | `1` | Inspect logs / doctor output | + +## Data + +| Command / Outcome | Exit code | Notes | +| ----------------------------------------- | --------- | ----------------------------------------------- | +| `vana data` | `0` | Shows help | +| `vana data list` | `0` | Even when no data exists yet | +| `vana data list --json` | `0` | Returns an empty list when nothing is collected | +| `vana data show ` success | `0` | Prints summary and next steps | +| `vana data show --json` success | `0` | Returns structured dataset payload | +| `vana data show ` missing dataset | `1` | Recoverable via `vana connect ` | +| `vana data path ` success | `0` | Human mode prints the path only | +| `vana data path ` missing dataset | `1` | Recoverable via `vana connect ` | + +## Logs + +| Command / Outcome | Exit code | Notes | +| ----------------------------------- | --------- | ----------------------------------------- | +| `vana logs` | `0` | Even when there are no stored logs yet | +| `vana logs --json` | `0` | Returns an empty log list when none exist | +| `vana logs ` success | `0` | Human mode prints the path only | +| `vana logs --json` success | `0` | Returns structured log metadata | +| `vana logs ` missing log | `1` | Recoverable by running the source again | + +## Setup + +| Command / Outcome | Exit code | Notes | +| -------------------------- | --------- | ------------------------------------------ | +| `vana setup` success | `0` | Includes the already-installed case | +| `vana setup --yes` success | `0` | Includes runtime install completion | +| `vana setup` failure | `1` | Runtime could not be installed or repaired | + +## Design Notes + +- Help surfaces return `0` because they are a successful user outcome. +- Guided/recoverable states still return `1` when the requested action did not + actually complete. +- If the CLI later needs richer nonzero codes, it should add them + intentionally, document them here, and keep the JSON/event contract aligned. diff --git a/docs/CLI-RUNTIME-PORTABILITY-NOTES.md b/docs/CLI-RUNTIME-PORTABILITY-NOTES.md new file mode 100644 index 00000000..0b36641a --- /dev/null +++ b/docs/CLI-RUNTIME-PORTABILITY-NOTES.md @@ -0,0 +1,122 @@ +# CLI Runtime Portability Notes + +This note records the current local conclusions for Batch 5B. + +It is intentionally narrower than the full execution playbook. Its purpose is +to answer: "what portability/correctness concerns have already been checked, +what changed in code, and what still remains pre-stable?" + +## Confirmed Now + +### Display-path invariant + +- Human-facing `~` rendering is now centralized in + [src/cli/render/format.ts](/home/tnunamak/code/vana-connect-cli-pr/src/cli/render/format.ts). +- Functional paths still come from + [src/core/paths.ts](/home/tnunamak/code/vana-connect-cli-pr/src/core/paths.ts) + via `os.homedir()` + `path.join(...)`. +- Regression coverage now exists in + [test/cli/render-format.test.ts](/home/tnunamak/code/vana-connect-cli-pr/test/cli/render-format.test.ts). + +Conclusion: + +- `~` is currently a presentation concern, not a filesystem API input. + +### Concurrent CLI state writes + +- `updateSourceState(...)` previously did an uncoordinated read-modify-write. +- It now uses: + - a bounded lock file (`vana-connect-state.json.lock`) + - stale-lock cleanup + - atomic temp-file write + rename +- Regression coverage now exists in + [test/core/state-store.test.ts](/home/tnunamak/code/vana-connect-cli-pr/test/core/state-store.test.ts). + +Conclusion: + +- the local CLI now has a defended cross-process story for the single shared + state file without introducing a third-party lock dependency. + +## Still Intentionally Best-Effort + +### External `sqlite3` for cookie import + +- [src/runtime/playwright/browser.ts](/home/tnunamak/code/vana-connect-cli-pr/src/runtime/playwright/browser.ts) + still shells out to `sqlite3` when importing cookies from an existing system + Chrome profile. +- That path is opportunistic: + - only used for system Chrome profile import + - skipped entirely for downloaded Chromium + - swallowed if `sqlite3` is unavailable + - enabled by default only on macOS + - gated behind `VANA_ENABLE_SYSTEM_COOKIE_IMPORT=1` on Linux/Windows for + explicit validation only + +Conclusion: + +- this is not a core product feature +- the core supported path is Vana-managed browser state plus manual/headed + login when needed +- macOS keeps the enhancement enabled by default because the original + `data-connect` implementation was explicitly designed around that platform +- Linux/Windows should remain opt-in until explicitly validated on real + desktop environments + +Validation handle: + +```bash +pnpm test:runtime:cookie-import +``` + +This covers the current product contract: + +- macOS enhancement remains available by default +- Linux/Windows skip system-profile cookie import by default +- Linux/Windows can still exercise the import path explicitly with + `VANA_ENABLE_SYSTEM_COOKIE_IMPORT=1` during targeted validation + +### Playwright browser installation + +- [src/runtime/managed-playwright.ts](/home/tnunamak/code/vana-connect-cli-pr/src/runtime/managed-playwright.ts) + still uses Playwright's internal registry API rather than a user-facing CLI + invocation +- that is deliberate: + - avoids imposing `npx`/system Node assumptions on users + - keeps `vana setup` as the single product surface + +Conclusion: + +- acceptable for now +- still a pre-stable validation item, because it relies on internals rather + than an explicitly blessed public install API + +## Measurement Tooling + +Use: + +```bash +pnpm runtime:footprint +``` + +This reports: + +- `~/.dataconnect` size +- browser cache size +- browser profile size +- connector cache size +- log size +- installed package runtime size for: + - `playwright` + - `playwright-core` + - `chromium-bidi` + +This is meant to replace guesswork when discussing runtime/bundle size. + +## Current Position + +The remaining portability work before stable is now narrower: + +1. explicitly validate Linux/Windows behavior for opt-in system-Chrome cookie + import using `VANA_ENABLE_SYSTEM_COOKIE_IMPORT=1` +2. re-validate the Playwright internal install path on the final stable track +3. collect actual footprint numbers before designing cleanup/GC behavior diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md index c825d391..3a9fd542 100644 --- a/docs/transcripts/README.md +++ b/docs/transcripts/README.md @@ -18,6 +18,7 @@ Current generated surfaces include: - `data-help.txt` - `status.txt` - `doctor.txt` +- `logs.txt` - `setup.txt` - `sources.txt` - `data-list.txt` diff --git a/docs/transcripts/connect-github-no-input.txt b/docs/transcripts/connect-github-no-input.txt index 511506ff..c605b2c5 100644 --- a/docs/transcripts/connect-github-no-input.txt +++ b/docs/transcripts/connect-github-no-input.txt @@ -17,3 +17,5 @@ GitHub needs additional input before it can connect. → Next • Run `vana connect github` without `--no-input`. + • Inspect the latest run log with `vana logs github`. + • Or check overall status with `vana status`. diff --git a/docs/transcripts/connect-github-session-reuse-no-input.txt b/docs/transcripts/connect-github-session-reuse-no-input.txt index 1f9707f9..2ba09b8a 100644 --- a/docs/transcripts/connect-github-session-reuse-no-input.txt +++ b/docs/transcripts/connect-github-session-reuse-no-input.txt @@ -18,3 +18,5 @@ GitHub needs additional input before it can connect. → Next • Run `vana connect github` without `--no-input`. + • Inspect the latest run log with `vana logs github`. + • Or check overall status with `vana status`. diff --git a/docs/transcripts/connect-github-success.txt b/docs/transcripts/connect-github-success.txt index 77ad8b2b..3c390930 100644 --- a/docs/transcripts/connect-github-success.txt +++ b/docs/transcripts/connect-github-success.txt @@ -5,6 +5,7 @@ Finding a connector for GitHub... Connector ready. Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. If needed, Vana Connect will ask for details in this terminal. Those details stay local to this machine. + Found an existing GitHub session. Reusing it if it is still valid... → Connecting Connecting to GitHub... @@ -31,4 +32,5 @@ Collecting your data... → Next • Inspect the data with `vana data show github` • Connect another source with `vana sources` + • Inspect the run log with `vana logs github`. • Or check overall status with `vana status` diff --git a/docs/transcripts/connect-shop-no-input.txt b/docs/transcripts/connect-shop-no-input.txt index 75b05a19..9d4b56e4 100644 --- a/docs/transcripts/connect-shop-no-input.txt +++ b/docs/transcripts/connect-shop-no-input.txt @@ -16,4 +16,6 @@ Shop still needs a manual browser step on this machine. → Next • Run `vana connect shop` without `--no-input`. + • Inspect the latest run log with `vana logs shop`. + • Or check overall status with `vana status`. Run log: ~/.dataconnect/logs/run-shop-.log diff --git a/docs/transcripts/connect-shop.txt b/docs/transcripts/connect-shop.txt index 3daab4b8..85ddb64f 100644 --- a/docs/transcripts/connect-shop.txt +++ b/docs/transcripts/connect-shop.txt @@ -14,3 +14,5 @@ Shop still needs a manual browser step on this machine. → Next • Run this command in a desktop session. • Or retry with `xvfb-run -a vana connect shop`. + • Inspect the latest run log with `vana logs shop`. + • Or check overall status with `vana status`. diff --git a/docs/transcripts/connect-steam-no-input.txt b/docs/transcripts/connect-steam-no-input.txt index d19c01b9..cca400a6 100644 --- a/docs/transcripts/connect-steam-no-input.txt +++ b/docs/transcripts/connect-steam-no-input.txt @@ -9,3 +9,4 @@ No connector is available for Steam right now. → Next • Try GitHub with `vana connect github`. • Browse available sources with `vana sources`. + • Or check overall status with `vana status`. diff --git a/docs/transcripts/connect-steam.txt b/docs/transcripts/connect-steam.txt index d19c01b9..cca400a6 100644 --- a/docs/transcripts/connect-steam.txt +++ b/docs/transcripts/connect-steam.txt @@ -9,3 +9,4 @@ No connector is available for Steam right now. → Next • Try GitHub with `vana connect github`. • Browse available sources with `vana sources`. + • Or check overall status with `vana status`. diff --git a/docs/transcripts/data-help.txt b/docs/transcripts/data-help.txt index 8867b8e5..b39e32c6 100644 --- a/docs/transcripts/data-help.txt +++ b/docs/transcripts/data-help.txt @@ -1,6 +1,6 @@ Usage: vana data [options] [command] -Inspect collected data +Inspect collected datasets, paths, and summaries Options: -h, --help display help for command diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt index 2f398498..c3e5b662 100644 --- a/docs/transcripts/data-list.txt +++ b/docs/transcripts/data-list.txt @@ -1,6 +1,6 @@ Collected data (2) -local dataset (2) • synced dataset (0) +Dataset (2) • Local only (2) • Synced (0) GitHub [local] Profile: tnunamak diff --git a/docs/transcripts/data-show-github.txt b/docs/transcripts/data-show-github.txt index 92fc7c80..d3ff5bb9 100644 --- a/docs/transcripts/data-show-github.txt +++ b/docs/transcripts/data-show-github.txt @@ -11,6 +11,7 @@ GitHub data → Next • Print the path with `vana data path github`. + • Use `vana data show github --json | jq` for structured inspection. • Reconnect GitHub with `vana connect github`. • Connect another source with `vana sources`. • Inspect other datasets with `vana data list`. diff --git a/docs/transcripts/doctor.txt b/docs/transcripts/doctor.txt index eb3eac0c..2e6f4a47 100644 --- a/docs/transcripts/doctor.txt +++ b/docs/transcripts/doctor.txt @@ -7,23 +7,37 @@ Vana Connect doctor Runtime: installed Personal Server: unavailable Tracked sources: 4 + Attention: 2 + Connected: 2 + Headed sessions: Unavailable + Managed profiles: Available + Screenshots: Available → Checks CLI: Version 0.8.1 Runtime: Browser available at /opt/playwright/chromium-1200/chrome-linux64/chrome Personal Server: Unavailable. Connects will stay local until a Personal Server is reachable. Executable: Present at /usr/local/bin/node - App root: Missing at /usr/local/bin/app Data home: Present at ~/.dataconnect State file: Present at ~/.dataconnect/vana-connect-state.json Connector cache: Present at ~/.dataconnect/connectors - Browser profiles: Missing at ~/.dataconnect/browser-profiles + Browser profiles: Present at ~/.dataconnect/browser-profiles Logs: Present at ~/.dataconnect/logs Tracked sources: 4 sources in local state + Latest issue: Shop: manual step + +→ Needs attention +Shop [legacy] [manual step] + Run `vana connect shop` without `--no-input` to complete the manual browser step. + Updated: Mar 14, 2026, 8:11 AM + Run log: ~/.dataconnect/logs/run-shop-demo.log +Steam [unavailable] + No connector is available for Steam right now. + Updated: Mar 14, 2026, 8:12 AM + Run log: ~/.dataconnect/logs/fetch-steam-demo.log → Paths Executable: /usr/local/bin/node - App root: /usr/local/bin/app Data home: ~/.dataconnect State file: ~/.dataconnect/vana-connect-state.json Connector cache: ~/.dataconnect/connectors @@ -37,3 +51,4 @@ Vana Connect doctor → Next • Your Personal Server is unavailable, so successful runs will stay local. • Check overall status with `vana status`. + • Inspect the latest issue log with `vana logs shop`. diff --git a/docs/transcripts/help.txt b/docs/transcripts/help.txt index 3c7554d2..2179c55a 100644 --- a/docs/transcripts/help.txt +++ b/docs/transcripts/help.txt @@ -1,24 +1,35 @@ Usage: vana [options] [command] -Vana Connect CLI +Connect sources, collect data, and inspect it locally. Options: -v, --version Print CLI version -h, --help display help for command Commands: - version Print CLI version + version [options] Print CLI version connect [options] [source] Connect a source and collect data sources [options] List supported sources status [options] Show runtime and Personal Server status doctor [options] Inspect local CLI, runtime, and install health setup [options] Install or repair the local runtime - data Inspect collected data + data Inspect collected datasets, paths, and summaries + logs [options] [source] Inspect stored connector run logs help [command] display help for command -Examples: +Start here: + vana connect vana status - vana connect github - vana data show github + vana data list + +Automation: + vana connect github --json --no-input + vana sources --json | jq '.sources[] | {id, authMode}' + +Support: vana doctor + vana logs + +Version: + 0.8.1 (stable, development checkout) diff --git a/docs/transcripts/logs.txt b/docs/transcripts/logs.txt new file mode 100644 index 00000000..4e775f18 --- /dev/null +++ b/docs/transcripts/logs.txt @@ -0,0 +1,21 @@ +Run logs (3) + +Need attention (2) • Successful (1) • Local (1) + +→ Needs attention (2) +Steam [unavailable] + Path: ~/.dataconnect/logs/fetch-steam-demo.log + Updated: Mar 14, 2026, 8:12 AM +Shop [manual step] + Path: ~/.dataconnect/logs/run-shop-demo.log + Updated: Mar 14, 2026, 8:11 AM + +→ Successful runs (1) +GitHub [local] + Path: ~/.dataconnect/logs/run-github-demo.log + Updated: Mar 14, 2026, 8:10 AM + +→ Next + • Inspect the latest issue log with `vana logs steam`. + • Inspect a successful run with `vana logs github`. + • Check overall status with `vana status`. diff --git a/docs/transcripts/sources.txt b/docs/transcripts/sources.txt index 052d7c3b..a579cb1f 100644 --- a/docs/transcripts/sources.txt +++ b/docs/transcripts/sources.txt @@ -1,14 +1,14 @@ Available sources (3) -ready now (2) • with manual step (1) +Connected (2) • With manual step (1) -→ Ready now (2) -GitHub [interactive] [installed] +→ Connected (2) +GitHub [local] [interactive] [installed] Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. - Flow: prompts in this terminal when the source needs input. -Spotify [interactive] [installed] + Inspect with `vana data show github`. +Spotify [local] [interactive] [installed] Exports your Spotify playlists using Playwright browser automation. - Flow: prompts in this terminal when the source needs input. + Inspect with `vana data show spotify`. → Manual steps (1) Shop [legacy] [installed] @@ -16,5 +16,6 @@ Shop [legacy] [installed] Flow: finishes with a manual browser step on this machine. → Next - • Start with GitHub using `vana connect github`. + • Inspect what you already collected with `vana data list`. + • Complete Shop with `vana connect shop`. • Or browse the guided picker with `vana connect`. diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt index 3c0355ab..dfc03b22 100644 --- a/docs/transcripts/status.txt +++ b/docs/transcripts/status.txt @@ -1,6 +1,6 @@ Vana Connect status -need attention (2) • local (2) • connected (2) +Need attention (2) • Connected (2) • Local only (2) → Environment Runtime: installed @@ -11,9 +11,11 @@ need attention (2) • local (2) • connected (2) Shop [legacy] [manual step] Run `vana connect shop` without `--no-input` to complete the manual browser step. Updated: Mar 14, 2026, 8:11 AM + Run log: ~/.dataconnect/logs/run-shop-demo.log Steam [unavailable] No connector is available for Steam right now. Updated: Mar 14, 2026, 8:12 AM + Run log: ~/.dataconnect/logs/fetch-steam-demo.log → Connected (2) GitHub [interactive] [local] @@ -30,4 +32,5 @@ Spotify [interactive] [local] → Next • Complete the manual browser step for Shop with `vana connect shop`. + • Inspect the latest run log with `vana logs shop`. • Review the data you already collected with `vana data list`. diff --git a/package.json b/package.json index 38ef42ee..474b2ec5 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ "test:install:unix": "sh ./scripts/test-install-unix.sh", "test:install:windows": "pwsh -File ./scripts/test-install-windows.ps1", "test:install:github-release": "sh ./scripts/test-install-github-release.sh", + "test:runtime:cookie-import": "vitest run test/runtime/browser.test.ts", "test": "vitest run", "test:watch": "vitest", "test:e2e": "vitest run --config test/e2e/vitest.config.ts", @@ -79,8 +80,9 @@ "format": "prettier --write .", "format:check": "prettier --check .", "package-managers:generate": "node ./scripts/generate-package-manager-metadata.mjs", - "preflight:cli": "pnpm test test/runtime/in-process-run.test.ts test/cli/index.test.ts && pnpm build && pnpm format:check && pnpm demo:transcripts", + "preflight:cli": "pnpm test test/core/state-store.test.ts test/cli/render-format.test.ts test/runtime/in-process-run.test.ts test/cli/index.test.ts && pnpm build && pnpm format:check && pnpm demo:transcripts", "release:collect-assets": "node ./scripts/collect-release-assets.mjs", + "runtime:footprint": "node ./scripts/report-runtime-footprint.mjs", "validate": "npm run lint && npm run lint:eslint && npm run format:check && npm test", "prepare": "husky" }, diff --git a/scripts/capture-cli-transcripts.mjs b/scripts/capture-cli-transcripts.mjs index f55179f8..12a5666e 100644 --- a/scripts/capture-cli-transcripts.mjs +++ b/scripts/capture-cli-transcripts.mjs @@ -62,6 +62,11 @@ async function main() { argv: ["vana", "doctor"], env: seededEnv, }, + { + name: "logs.txt", + argv: ["vana", "logs"], + env: seededEnv, + }, { name: "setup.txt", argv: ["vana", "setup"], diff --git a/scripts/prepare-vhs-fixtures.mjs b/scripts/prepare-vhs-fixtures.mjs index bc609ebf..c56fdc04 100644 --- a/scripts/prepare-vhs-fixtures.mjs +++ b/scripts/prepare-vhs-fixtures.mjs @@ -40,6 +40,12 @@ async function seedDemoHome() { }, ); await fs.mkdir(path.join(dataConnectRoot, "logs"), { recursive: true }); + await fs.mkdir( + path.join(dataConnectRoot, "browser-profiles", "github-playwright"), + { + recursive: true, + }, + ); await fs.writeFile( path.join(dataConnectRoot, "connectors", "github", "github-playwright.js"), @@ -81,17 +87,20 @@ async function seedDemoHome() { lastRunOutcome: "connected_local_only", dataState: "collected_local", lastResultPath: path.join(dataConnectRoot, "last-result.json"), + lastLogPath: path.join(dataConnectRoot, "logs", "run-github-demo.log"), }, shop: { lastRunAt: "2026-03-14T13:11:10.000Z", lastRunOutcome: "legacy_auth", dataState: "none", + lastLogPath: path.join(dataConnectRoot, "logs", "run-shop-demo.log"), }, steam: { lastRunAt: "2026-03-14T13:12:00.000Z", lastRunOutcome: "connector_unavailable", dataState: "none", lastError: "No connector is available for steam right now.", + lastLogPath: path.join(dataConnectRoot, "logs", "fetch-steam-demo.log"), }, spotify: { lastRunAt: "2026-03-13T21:23:00.000Z", @@ -133,6 +142,21 @@ async function seedDemoHome() { )}\n`, "utf8", ); + await fs.writeFile( + path.join(dataConnectRoot, "logs", "run-github-demo.log"), + "[runtime] GitHub demo log\n[data] status=Complete\n", + "utf8", + ); + await fs.writeFile( + path.join(dataConnectRoot, "logs", "run-shop-demo.log"), + "[runtime] Shop demo log\n[data] status=Manual step required\n", + "utf8", + ); + await fs.writeFile( + path.join(dataConnectRoot, "logs", "fetch-steam-demo.log"), + "[runtime] Steam demo log\n[data] status=Connector unavailable\n", + "utf8", + ); } async function seedDemoDataConnectors() { diff --git a/scripts/report-runtime-footprint.mjs b/scripts/report-runtime-footprint.mjs new file mode 100644 index 00000000..9b127766 --- /dev/null +++ b/scripts/report-runtime-footprint.mjs @@ -0,0 +1,153 @@ +import fs from "node:fs/promises"; +import path from "node:path"; +import os from "node:os"; +import { createRequire } from "node:module"; + +const require = createRequire(import.meta.url); + +async function main() { + const dataHome = path.join(os.homedir(), ".dataconnect"); + const browserCacheDir = + process.env.PLAYWRIGHT_BROWSERS_PATH ?? path.join(dataHome, "browsers"); + + const report = { + generatedAt: new Date().toISOString(), + paths: { + dataHome, + browserCacheDir, + browserProfilesDir: path.join(dataHome, "browser-profiles"), + connectorsDir: path.join(dataHome, "connectors"), + logsDir: path.join(dataHome, "logs"), + }, + sizes: { + dataHome: await describePath(dataHome), + browserCacheDir: await describePath(browserCacheDir), + browserProfilesDir: await describePath( + path.join(dataHome, "browser-profiles"), + ), + connectorsDir: await describePath(path.join(dataHome, "connectors")), + logsDir: await describePath(path.join(dataHome, "logs")), + packageRuntime: { + playwright: await describeNodeModule("playwright"), + playwrightCore: await describePlaywrightCore(), + chromiumBidi: await describeNodeModule("chromium-bidi"), + }, + }, + }; + + process.stdout.write(`${JSON.stringify(report, null, 2)}\n`); +} + +async function describeNodeModule( + packageName, + fallbackSpecifier = packageName, +) { + try { + const packageRoot = resolvePackageRoot(packageName, fallbackSpecifier); + const info = await describePath(packageRoot); + return { + packageRoot, + ...info, + }; + } catch { + return { + exists: false, + bytes: 0, + files: 0, + }; + } +} + +async function describePlaywrightCore() { + try { + const playwrightRoot = resolvePackageRoot("playwright", "playwright"); + const siblingRoot = path.resolve(playwrightRoot, "..", "playwright-core"); + const info = await describePath(siblingRoot); + if (info.exists) { + return { + packageRoot: siblingRoot, + ...info, + }; + } + } catch { + // Fall through to generic resolution below. + } + + return describeNodeModule( + "playwright-core", + "playwright-core/lib/server/registry/index", + ); +} + +function resolvePackageRoot(packageName, fallbackSpecifier) { + try { + return path.dirname(require.resolve(`${packageName}/package.json`)); + } catch { + const entryPath = require.resolve(fallbackSpecifier); + let current = path.dirname(entryPath); + + while (current !== path.dirname(current)) { + const packageJsonPath = path.join(current, "package.json"); + try { + require(packageJsonPath); + return current; + } catch { + current = path.dirname(current); + } + } + + throw new Error(`Could not resolve package root for ${packageName}`); + } +} + +async function describePath(targetPath) { + try { + const stats = await fs.stat(targetPath); + if (!stats.isDirectory()) { + return { + exists: true, + bytes: stats.size, + files: 1, + }; + } + + const { bytes, files } = await walkSize(targetPath); + return { + exists: true, + bytes, + files, + }; + } catch { + return { + exists: false, + bytes: 0, + files: 0, + }; + } +} + +async function walkSize(root) { + let bytes = 0; + let files = 0; + const entries = await fs.readdir(root, { withFileTypes: true }); + + for (const entry of entries) { + const entryPath = path.join(root, entry.name); + if (entry.isDirectory()) { + const nested = await walkSize(entryPath); + bytes += nested.bytes; + files += nested.files; + continue; + } + + if (entry.isFile()) { + const stats = await fs.stat(entryPath); + bytes += stats.size; + files += 1; + } + } + + return { bytes, files }; +} + +await main(); diff --git a/src/cli/index.ts b/src/cli/index.ts index fc63fe21..b35bad46 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1,4 +1,3 @@ -import os from "node:os"; import fs from "node:fs"; import fsp from "node:fs/promises"; import path from "node:path"; @@ -7,7 +6,11 @@ import { createRequire } from "node:module"; import { Separator, confirm, input, password, select } from "@inquirer/prompts"; import { Command, CommanderError } from "commander"; -import { createHumanRenderer, createProgressHandle } from "./render/index.js"; +import { + createHumanRenderer, + createProgressHandle, + formatDisplayPath, +} from "./render/index.js"; import { CliOutcomeStatus, getCliStatePath, @@ -103,16 +106,26 @@ export async function runCli(argv = process.argv): Promise { const program = new Command(); program .name("vana") - .description("Vana Connect CLI") + .description("Connect sources, collect data, and inspect it locally.") .version(cliVersion, "-v, --version", "Print CLI version") .addHelpText( "after", ` -Examples: +Start here: + vana connect vana status - vana connect github - vana data show github + vana data list + +Automation: + vana connect github --json --no-input + vana sources --json | jq '.sources[] | {id, authMode}' + +Support: vana doctor + vana logs + +Version: + ${cliVersion} (${getCliChannel(cliVersion)}, ${formatInstallMethodLabel(getCliInstallMethod()).toLowerCase()}) `, ); program.exitOverride(); @@ -120,8 +133,23 @@ Examples: program .command("version") .description("Print CLI version") + .option("--json", "Output machine-readable JSON") .action(async () => { - process.stdout.write(`${cliVersion}\n`); + if (parsedOptions.json) { + process.stdout.write( + `${JSON.stringify({ + cliVersion, + channel: getCliChannel(cliVersion), + installMethod: getCliInstallMethod(), + })}\n`, + ); + process.exitCode = 0; + return; + } + + process.stdout.write( + `${cliVersion} (${getCliChannel(cliVersion)}, ${formatInstallMethodLabel(getCliInstallMethod()).toLowerCase()})\n`, + ); process.exitCode = 0; }); @@ -212,7 +240,9 @@ Examples: `, ); - const data = program.command("data").description("Inspect collected data"); + const data = program + .command("data") + .description("Inspect collected datasets, paths, and summaries"); data.addHelpText( "after", ` @@ -275,6 +305,23 @@ Examples: `, ); + const logsCommand = program + .command("logs [source]") + .description("Inspect stored connector run logs") + .option("--json", "Output machine-readable JSON") + .action(async (source?: string) => { + process.exitCode = await runLogs(source, parsedOptions); + }); + logsCommand.addHelpText( + "after", + ` +Examples: + vana logs + vana logs github + vana logs github --json | jq +`, + ); + try { await program.parseAsync(normalizedArgv); } catch (error) { @@ -393,6 +440,7 @@ async function runConnect( dataState: "none", lastError: message, lastResultPath: null, + lastLogPath: getErrorLogPath(error), }); if (!options.json) { progress.fail(`${displayName} is not available yet.`); @@ -412,6 +460,9 @@ async function runConnect( emit.bullet( `Browse available sources with ${emit.code("vana sources")}.`, ); + emit.bullet( + `Or check overall status with ${emit.code("vana status")}.`, + ); } else { emit.info(message); } @@ -472,6 +523,7 @@ async function runConnect( dataState: "none", lastError: message, lastResultPath: null, + lastLogPath: fetchLogPath ?? null, }); emit.blank(); emit.section("Manual step required"); @@ -485,6 +537,12 @@ async function runConnect( emit.bullet( `Or retry with ${emit.code(`xvfb-run -a vana connect ${source}`)}.`, ); + if (fetchLogPath) { + emit.bullet( + `Inspect the latest run log with ${emit.code(`vana logs ${source}`)}.`, + ); + } + emit.bullet(`Or check overall status with ${emit.code("vana status")}.`); emit.event({ type: "outcome", status: CliOutcomeStatus.LEGACY_AUTH, @@ -499,6 +557,7 @@ async function runConnect( connectorInstalled: true, sessionPresent: fs.existsSync(profilePath), lastError: null, + lastLogPath: fetchLogPath ?? null, }); emit.blank(); @@ -563,6 +622,7 @@ async function runConnect( lastRunAt: new Date().toISOString(), lastRunOutcome: CliOutcomeStatus.NEEDS_INPUT, lastError: event.message ?? "Input required.", + lastLogPath: event.logPath, }); emit.event({ type: "outcome", @@ -584,6 +644,14 @@ async function runConnect( emit.bullet( `Run ${emit.code(`vana connect ${source}`)} without ${emit.code("--no-input")}.`, ); + if (event.logPath || fetchLogPath) { + emit.bullet( + `Inspect the latest run log with ${emit.code(`vana logs ${source}`)}.`, + ); + } + emit.bullet( + `Or check overall status with ${emit.code("vana status")}.`, + ); } terminalExitCode = 1; continue; @@ -611,6 +679,7 @@ async function runConnect( lastRunAt: new Date().toISOString(), lastRunOutcome: CliOutcomeStatus.RUNTIME_ERROR, lastError: event.message ?? "Connector run failed.", + lastLogPath: event.logPath, }); emit.blank(); progress.fail(`Problem connecting ${displayName}.`); @@ -621,6 +690,18 @@ async function runConnect( status: CliOutcomeStatus.RUNTIME_ERROR, source: resolution.source, }); + emit.blank(); + emit.section("Next"); + emit.bullet(`Retry with ${emit.code(`vana connect ${source}`)}.`); + if (event.logPath || fetchLogPath || setupLogPath) { + emit.bullet( + `Inspect the latest run log with ${emit.code(`vana logs ${source}`)}.`, + ); + } + emit.bullet(`Inspect install health with ${emit.code("vana doctor")}.`); + emit.bullet( + `Or check overall status with ${emit.code("vana status")}.`, + ); if (event.logPath) { emit.keyValue("Run log", formatDisplayPath(event.logPath), "muted"); } @@ -648,6 +729,7 @@ async function runConnect( lastError: event.message ?? "Legacy authentication is required.", dataState: "none", lastResultPath: null, + lastLogPath: event.logPath, }); emit.blank(); progress.stop(); @@ -675,6 +757,14 @@ async function runConnect( `Complete the browser step locally, then rerun ${emit.code(`vana connect ${source}`)}.`, ); } + if (event.logPath || fetchLogPath) { + emit.bullet( + `Inspect the latest run log with ${emit.code(`vana logs ${source}`)}.`, + ); + } + emit.bullet( + `Or check overall status with ${emit.code("vana status")}.`, + ); if (event.logPath) { emit.keyValue("Run log", formatDisplayPath(event.logPath), "muted"); } @@ -733,6 +823,7 @@ async function runConnect( dataState: "none", lastError: "Connector run ended without a result.", lastResultPath: null, + lastLogPath: runLogPath ?? fetchLogPath ?? null, }); emit.event({ type: "outcome", @@ -754,6 +845,7 @@ async function runConnect( dataState: finalDataState, lastError: ingestFailureMessage, lastResultPath: resultPath, + lastLogPath: runLogPath ?? fetchLogPath ?? setupLogPath ?? null, }); const resultSummary = await readResultSummary(resultPath); @@ -819,6 +911,11 @@ async function runConnect( emit.section("Next"); emit.bullet(`Inspect the data with ${dataCommand}`); emit.bullet(`Connect another source with ${emit.code("vana sources")}`); + if (runLogPath) { + emit.bullet( + `Inspect the run log with ${emit.code(`vana logs ${source}`)}.`, + ); + } emit.bullet(`Or check overall status with ${statusCommand}`); emit.event({ type: "outcome", @@ -836,6 +933,7 @@ async function runConnect( lastRunAt: new Date().toISOString(), lastRunOutcome: CliOutcomeStatus.NEEDS_INPUT, lastError: "Cancelled before input was completed.", + lastLogPath: runLogPath ?? null, }); emit.blank(); progress.stop(); @@ -845,6 +943,11 @@ async function runConnect( emit.blank(); emit.section("Next"); emit.bullet(`Resume with ${emit.code(`vana connect ${source}`)}.`); + if (runLogPath) { + emit.bullet( + `Inspect the latest run log with ${emit.code(`vana logs ${source}`)}.`, + ); + } emit.bullet(`Or check overall status with ${emit.code("vana status")}.`); emit.event({ type: "outcome", @@ -867,6 +970,15 @@ async function runConnect( source, reason: message, }); + emit.blank(); + emit.section("Next"); + if (runLogPath || fetchLogPath || setupLogPath) { + emit.bullet( + `Inspect the latest run log with ${emit.code(`vana logs ${source}`)}.`, + ); + } + emit.bullet(`Inspect install health with ${emit.code("vana doctor")}.`); + emit.bullet(`Or check overall status with ${emit.code("vana status")}.`); if (runLogPath) { emit.detail(`Run log: ${formatDisplayPath(runLogPath)}`); } else if (fetchLogPath) { @@ -883,8 +995,26 @@ async function runConnect( async function runConnectEntry(options: GlobalOptions): Promise { const emit = createEmitter(options); const sources = await loadRegistrySources(); + const state = await readCliState(); + const sourceMetadata = createSourceMetadataMap(sources); + const statuses = await gatherSourceStatuses(state.sources, sourceMetadata); + const statusMap = new Map(statuses.map((source) => [source.source, source])); + const enrichedSources = sources.map((source) => { + const status = statusMap.get(source.id); + return { + ...source, + dataState: status?.dataState, + lastRunOutcome: status?.lastRunOutcome ?? null, + sessionPresent: status?.sessionPresent ?? false, + }; + }); const suggestedSource = - sources.find((source) => source.authMode !== "legacy") ?? sources[0]; + enrichedSources.find( + (source) => + source.authMode !== "legacy" && !hasCollectedData(source.dataState), + ) ?? + enrichedSources.find((source) => source.authMode !== "legacy") ?? + enrichedSources[0]; const missingSourceMessage = formatMissingConnectSourceMessage(suggestedSource); @@ -915,7 +1045,7 @@ async function runConnectEntry(options: GlobalOptions): Promise { return 1; } - if (sources.length === 0) { + if (enrichedSources.length === 0) { emit.info("No sources are available right now."); emit.info("Run `vana sources` to verify the local connector registry."); return 1; @@ -923,12 +1053,24 @@ async function runConnectEntry(options: GlobalOptions): Promise { emit.title("Connect data"); emit.blank(); - const readyNowCount = sources.filter( - (source) => source.authMode !== "legacy", + const connectedCount = enrichedSources.filter((source) => + hasCollectedData(source.dataState), ).length; - const manualCount = sources.length - readyNowCount; - if (readyNowCount > 0 || manualCount > 0) { + const readyNowCount = enrichedSources.filter( + (source) => + source.authMode !== "legacy" && !hasCollectedData(source.dataState), + ).length; + const manualCount = enrichedSources.filter( + (source) => + source.authMode === "legacy" && !hasCollectedData(source.dataState), + ).length; + if (connectedCount > 0 || readyNowCount > 0 || manualCount > 0) { const parts = []; + if (connectedCount > 0) { + parts.push( + `${connectedCount} connected ${connectedCount === 1 ? "source" : "sources"}`, + ); + } if (readyNowCount > 0) { parts.push( `${readyNowCount} ready ${readyNowCount === 1 ? "source" : "sources"}`, @@ -942,15 +1084,25 @@ async function runConnectEntry(options: GlobalOptions): Promise { emit.detail(parts.join(" • ")); } emit.info("Choose a source to connect:"); - emit.detail( - `Or jump straight in with ${emit.code("vana connect ")}.`, - ); + if (connectedCount > 0) { + emit.detail( + `Inspect what you already collected with ${emit.code("vana data list")}, or reconnect any source below.`, + ); + } else { + emit.detail( + `Or jump straight in with ${emit.code("vana connect ")}.`, + ); + } let source: string; try { source = await select({ message: "Source", pageSize: 8, - choices: buildConnectChoices(sources, emit), + choices: buildConnectChoices( + enrichedSources, + emit, + suggestedSource?.id ?? null, + ), }); } catch (error) { if (isPromptCancelled(error)) { @@ -966,29 +1118,61 @@ async function runConnectEntry(options: GlobalOptions): Promise { async function runList(options: GlobalOptions): Promise { const sources = await loadRegistrySources(); + const state = await readCliState(); + const sourceMetadata = createSourceMetadataMap(sources); + const statuses = await gatherSourceStatuses(state.sources, sourceMetadata); + const statusMap = new Map(statuses.map((source) => [source.source, source])); const installedSourceIds = new Set( (await listInstalledConnectorFiles()).map((source) => source.source), ); - const enrichedSources = sources.map((source) => ({ - ...source, - installed: installedSourceIds.has(source.id), - })); + const enrichedSources = sources.map((source) => { + const status = statusMap.get(source.id); + return { + ...source, + installed: installedSourceIds.has(source.id), + dataState: status?.dataState, + lastRunOutcome: status?.lastRunOutcome ?? null, + sessionPresent: status?.sessionPresent ?? false, + }; + }); const readyCount = enrichedSources.filter( - (source) => source.authMode !== "legacy", + (source) => + source.authMode !== "legacy" && !hasCollectedData(source.dataState), ).length; const manualCount = enrichedSources.filter( - (source) => source.authMode === "legacy", + (source) => + source.authMode === "legacy" && !hasCollectedData(source.dataState), + ).length; + const connectedCount = enrichedSources.filter( + (source) => + source.dataState === "collected_local" || + source.dataState === "ingested_personal_server" || + source.dataState === "ingest_failed", ).length; const recommendedSource = - enrichedSources.find((source) => source.authMode !== "legacy") ?? - enrichedSources[0] ?? + enrichedSources.find( + (source) => + source.authMode !== "legacy" && + source.dataState !== "collected_local" && + source.dataState !== "ingested_personal_server" && + source.dataState !== "ingest_failed", + ) ?? + enrichedSources.find( + (source) => + source.dataState !== "collected_local" && + source.dataState !== "ingested_personal_server" && + source.dataState !== "ingest_failed", + ) ?? null; + const nextSteps = buildSourcesNextSteps(recommendedSource, connectedCount); if (options.json) { process.stdout.write( `${JSON.stringify({ count: enrichedSources.length, recommendedSource, + nextSteps, summary: { + connectedCount, readyCount, manualCount, installedCount: enrichedSources.filter((source) => source.installed) @@ -1010,7 +1194,8 @@ async function runList(options: GlobalOptions): Promise { if (enrichedSources.length > 0) { emit.info( joinOverviewParts([ - formatCountLabel("ready now", readyCount), + connectedCount > 0 ? formatCountLabel("connected", connectedCount) : "", + readyCount > 0 ? formatCountLabel("ready now", readyCount) : "", manualCount > 0 ? formatCountLabel("with manual step", manualCount) : "", @@ -1019,13 +1204,34 @@ async function runList(options: GlobalOptions): Promise { emit.blank(); } const groups = [ + { + title: "Connected", + items: enrichedSources.filter( + (source) => + source.dataState === "collected_local" || + source.dataState === "ingested_personal_server" || + source.dataState === "ingest_failed", + ), + }, { title: "Ready now", - items: enrichedSources.filter((source) => source.authMode !== "legacy"), + items: enrichedSources.filter( + (source) => + source.authMode !== "legacy" && + source.dataState !== "collected_local" && + source.dataState !== "ingested_personal_server" && + source.dataState !== "ingest_failed", + ), }, { title: "Manual steps", - items: enrichedSources.filter((source) => source.authMode === "legacy"), + items: enrichedSources.filter( + (source) => + source.authMode === "legacy" && + source.dataState !== "collected_local" && + source.dataState !== "ingested_personal_server" && + source.dataState !== "ingest_failed", + ), }, ].filter((group) => group.items.length > 0); @@ -1036,11 +1242,30 @@ async function runList(options: GlobalOptions): Promise { emit.section(formatCountLabel(group.title, group.items.length)); for (const source of group.items) { const badges: Array<{ text: string; tone?: RenderTone }> = []; + if ( + source.dataState === "ingested_personal_server" || + source.dataState === "collected_local" || + source.dataState === "ingest_failed" + ) { + if (source.dataState === "ingested_personal_server") { + badges.push({ text: "synced", tone: "success" }); + } else if (source.dataState === "ingest_failed") { + badges.push({ text: "sync failed", tone: "warning" }); + } else { + badges.push({ text: "local", tone: "muted" }); + } + } if (source.authMode === "interactive") { badges.push({ text: "interactive", tone: "info" }); } else if (source.authMode === "legacy") { badges.push({ text: "legacy", tone: "warning" }); } + if ( + recommendedSource?.id === source.id && + recommendedSource.authMode !== "legacy" + ) { + badges.push({ text: "recommended", tone: "accent" }); + } if (source.installed) { badges.push({ text: "installed", tone: "success" }); } @@ -1048,23 +1273,28 @@ async function runList(options: GlobalOptions): Promise { if (source.description) { emit.detail(source.description); } - emit.detail(describeSourceFlow(source.authMode)); + if ( + source.dataState === "collected_local" || + source.dataState === "ingested_personal_server" || + source.dataState === "ingest_failed" + ) { + emit.detail( + `Inspect with ${emit.code(`vana data show ${source.id}`)}.`, + ); + } else { + emit.detail(describeSourceFlow(source.authMode)); + } } }); if (groups.length === 0) { emit.info("No sources are available right now."); } else { - if (recommendedSource) { + if (nextSteps.length > 0) { emit.blank(); emit.section("Next"); - emit.bullet( - `Start with ${recommendedSource.name} using ${emit.code( - `vana connect ${recommendedSource.id}`, - )}.`, - ); - emit.bullet( - `Or browse the guided picker with ${emit.code("vana connect")}.`, - ); + for (const step of nextSteps) { + emit.bullet(step); + } } } return 0; @@ -1128,19 +1358,28 @@ async function runStatus(options: GlobalOptions): Promise { emit.blank(); emit.info( joinOverviewParts([ - formatCountLabel( - "need attention", - status.summary?.needsAttentionCount ?? 0, - ), + (status.summary?.needsAttentionCount ?? 0) > 0 + ? formatCountLabel( + "need attention", + status.summary?.needsAttentionCount ?? 0, + ) + : "", + (status.summary?.connectedCount ?? 0) > 0 + ? formatCountLabel("connected", status.summary?.connectedCount ?? 0) + : "", (status.summary?.localCount ?? 0) > 0 - ? formatCountLabel("local", status.summary?.localCount ?? 0) + ? formatCountLabel("local only", status.summary?.localCount ?? 0) : "", (status.summary?.syncedCount ?? 0) > 0 ? formatCountLabel("synced", status.summary?.syncedCount ?? 0) : "", (status.summary?.syncFailedCount ?? 0) > 0 ? formatCountLabel("sync failed", status.summary?.syncFailedCount ?? 0) - : formatCountLabel("connected", status.summary?.connectedCount ?? 0), + : "", + (status.summary?.connectedCount ?? 0) === 0 && + (status.summary?.installedCount ?? 0) > 0 + ? formatCountLabel("installed", status.summary?.installedCount ?? 0) + : "", ]), ); emit.blank(); @@ -1223,10 +1462,31 @@ async function runDoctor(options: GlobalOptions): Promise { const runtime = new ManagedPlaywrightRuntime(); const personalServer = await detectPersonalServerTarget(); const state = await readCliState(); + const registrySources = await loadRegistrySources(); + const sourceMetadata = createSourceMetadataMap(registrySources); + const sourceLabels = createSourceLabelMap(registrySources); + const sources = await gatherSourceStatuses(state.sources, sourceMetadata); const cliVersion = getCliVersion(); const cliChannel = getCliChannel(cliVersion); const installMethod = getCliInstallMethod(); const lifecycle = getLifecycleCommands(installMethod, cliChannel); + const appRootPath = getDoctorAppRootPath(installMethod); + const recentSources = [...sources] + .filter((source) => Boolean(source.lastRunAt)) + .sort(compareSourceStatusOrder) + .slice(0, 3); + const attentionSources = recentSources.filter( + (source) => rankSourceStatus(source) <= 4, + ); + const connectedCount = sources.filter( + (source) => + source.dataState === "collected_local" || + source.dataState === "ingested_personal_server" || + source.dataState === "ingest_failed", + ).length; + const attentionCount = sources.filter( + (source) => rankSourceStatus(source) <= 4, + ).length; const directories = [ { @@ -1235,12 +1495,16 @@ async function runDoctor(options: GlobalOptions): Promise { path: process.execPath, present: fs.existsSync(process.execPath), }, - { - key: "appRoot", - label: "App root", - path: getCliAppRoot(), - present: fs.existsSync(getCliAppRoot()), - }, + ...(appRootPath + ? [ + { + key: "appRoot", + label: "App root", + path: appRootPath, + present: fs.existsSync(appRootPath), + }, + ] + : []), { key: "dataHome", label: "Data home", @@ -1310,6 +1574,16 @@ async function runDoctor(options: GlobalOptions): Promise { status: "ok" as const, detail: `${Object.keys(state.sources).length} source${Object.keys(state.sources).length === 1 ? "" : "s"} in local state`, }, + ...(attentionSources[0] + ? [ + { + key: "latestIssue", + label: "Latest issue", + status: "warn" as const, + detail: `${displaySource(attentionSources[0].source, sourceLabels)}: ${attentionSources[0].lastError ?? getSourceStatusPresentation(attentionSources[0]).label}`, + }, + ] + : []), ]; const nextSteps = [ @@ -1324,6 +1598,15 @@ async function runDoctor(options: GlobalOptions): Promise { ...(Object.keys(state.sources).length === 0 ? ["Connect your first source with `vana connect`."] : ["Check overall status with `vana status`."]), + ...(attentionSources[0]?.lastLogPath + ? [ + `Inspect the latest issue log with \`vana logs ${attentionSources[0].source}\`.`, + ] + : recentSources[0]?.lastLogPath + ? [ + `Inspect the latest run log with \`vana logs ${recentSources[0].source}\`.`, + ] + : []), ]; const payload: CliDoctor = { @@ -1334,9 +1617,10 @@ async function runDoctor(options: GlobalOptions): Promise { runtimePath: runtime.runtimePath, personalServer: personalServer.state, personalServerUrl: personalServer.url, + capabilities: runtime.capabilities, paths: { executable: process.execPath, - appRoot: getCliAppRoot(), + appRoot: appRootPath, dataHome: getDataConnectHome(), stateFile: getCliStatePath(), connectorCache: getConnectorCacheDir(), @@ -1344,6 +1628,12 @@ async function runDoctor(options: GlobalOptions): Promise { logs: getLogsDir(), }, lifecycle, + summary: { + trackedSourceCount: Object.keys(state.sources).length, + attentionCount, + connectedCount, + }, + recentSources, checks, nextSteps, }; @@ -1371,6 +1661,31 @@ async function runDoctor(options: GlobalOptions): Promise { String(Object.keys(state.sources).length), "muted", ); + emit.keyValue( + "Attention", + String(attentionCount), + attentionCount > 0 ? "warning" : "muted", + ); + emit.keyValue( + "Connected", + String(connectedCount), + connectedCount > 0 ? "success" : "muted", + ); + emit.keyValue( + "Headed sessions", + runtime.capabilities.supportsHeaded ? "Available" : "Unavailable", + runtime.capabilities.supportsHeaded ? "success" : "warning", + ); + emit.keyValue( + "Managed profiles", + runtime.capabilities.supportsManagedProfiles ? "Available" : "Unavailable", + runtime.capabilities.supportsManagedProfiles ? "success" : "warning", + ); + emit.keyValue( + "Screenshots", + runtime.capabilities.supportsScreenshots ? "Available" : "Unavailable", + runtime.capabilities.supportsScreenshots ? "success" : "warning", + ); emit.blank(); emit.section("Checks"); for (const check of checks) { @@ -1382,10 +1697,41 @@ async function runDoctor(options: GlobalOptions): Promise { : "error"; emit.keyValue(check.label, check.detail, tone); } + if (recentSources.length > 0) { + emit.blank(); + emit.section( + attentionSources.length > 0 + ? "Needs attention" + : "Recent source activity", + ); + for (const source of attentionSources.length > 0 + ? attentionSources + : recentSources) { + const status = getSourceStatusPresentation(source); + const badges: Array<{ text: string; tone?: RenderTone }> = []; + if (source.authMode === "interactive") { + badges.push({ text: "interactive", tone: "info" }); + } else if (source.authMode === "legacy") { + badges.push({ text: "legacy", tone: "warning" }); + } + badges.push({ text: status.label, tone: status.tone }); + emit.sourceTitle(displaySource(source.source, sourceLabels), badges); + const details = formatSourceStatusDetails(source); + for (const detail of details) { + if (detail.kind === "row") { + emit.keyValue(detail.label, detail.value, detail.tone ?? "muted"); + } else { + emit.detail(detail.message); + } + } + } + } emit.blank(); emit.section("Paths"); emit.keyValue("Executable", formatDisplayPath(process.execPath), "muted"); - emit.keyValue("App root", formatDisplayPath(getCliAppRoot()), "muted"); + if (appRootPath) { + emit.keyValue("App root", formatDisplayPath(appRootPath), "muted"); + } emit.keyValue("Data home", formatDisplayPath(getDataConnectHome()), "muted"); emit.keyValue("State file", formatDisplayPath(getCliStatePath()), "muted"); emit.keyValue( @@ -1493,12 +1839,14 @@ async function runDataList(options: GlobalOptions): Promise { })), ); datasetRecords.sort(compareDatasetOrder); + const nextSteps = buildDataListNextSteps(datasetRecords, registrySources); if (options.json) { process.stdout.write( `${JSON.stringify({ count: datasetRecords.length, latestDataset: datasetRecords[0] ?? null, + nextSteps, summary: { localCount: datasetRecords.filter( (dataset) => dataset.dataState !== "ingested_personal_server", @@ -1547,18 +1895,27 @@ async function runDataList(options: GlobalOptions): Promise { emit.blank(); emit.info( joinOverviewParts([ + formatCountLabel("dataset", datasetRecords.length), formatCountLabel( - "local dataset", + "local only", datasetRecords.filter( (dataset) => dataset.dataState !== "ingested_personal_server", ).length, ), formatCountLabel( - "synced dataset", + "synced", datasetRecords.filter( (dataset) => dataset.dataState === "ingested_personal_server", ).length, ), + datasetRecords.some((dataset) => dataset.dataState === "ingest_failed") + ? formatCountLabel( + "sync failed", + datasetRecords.filter( + (dataset) => dataset.dataState === "ingest_failed", + ).length, + ) + : "", ]), ); emit.blank(); @@ -1594,15 +1951,9 @@ async function runDataList(options: GlobalOptions): Promise { }); emit.blank(); emit.section("Next"); - emit.bullet( - `Inspect ${datasetRecords[0].name ?? displaySource(datasetRecords[0].source)} with ${emit.code( - `vana data show ${datasetRecords[0].source}`, - )}.`, - ); - emit.bullet( - `Or print its path with ${emit.code(`vana data path ${datasetRecords[0].source}`)}.`, - ); - emit.bullet(`Connect another source with ${emit.code("vana sources")}.`); + for (const step of nextSteps) { + emit.bullet(step); + } return 0; } @@ -1654,6 +2005,11 @@ async function runDataShow( const raw = await fsp.readFile(resultPath, "utf8"); const data = JSON.parse(raw) as Record; const summary = summarizeResultData(data); + const nextSteps = buildDataShowNextSteps( + source, + datasetCount, + sourceLabels, + ); if (options.json) { process.stdout.write( `${JSON.stringify({ @@ -1663,6 +2019,7 @@ async function runDataShow( summary, lastRunAt: record?.lastRunAt ?? null, dataState: record?.dataState ?? null, + nextSteps, data, })}\n`, ); @@ -1691,19 +2048,9 @@ async function runDataShow( } emit.blank(); emit.section("Next"); - emit.bullet( - `Print the path with ${emit.code(`vana data path ${source}`)}.`, - ); - emit.bullet( - `Reconnect ${displaySource(source, sourceLabels)} with ${emit.code(`vana connect ${source}`)}.`, - ); - emit.bullet(`Connect another source with ${emit.code("vana sources")}.`); - if (datasetCount > 1) { - emit.bullet( - `Inspect other datasets with ${emit.code("vana data list")}.`, - ); + for (const step of nextSteps) { + emit.bullet(step); } - emit.bullet(`Check overall status with ${emit.code("vana status")}.`); return 0; } catch (error) { const message = @@ -1753,6 +2100,10 @@ async function runDataPath( path: resultPath, lastRunAt: state.sources[source]?.lastRunAt ?? null, dataState: state.sources[source]?.dataState ?? null, + nextSteps: [ + `Inspect the dataset with \`vana data show ${source}\`.`, + `Reconnect ${displaySource(source, sourceLabels)} with \`vana connect ${source}\`.`, + ], })}\n`, ); } else { @@ -1761,6 +2112,168 @@ async function runDataPath( return 0; } +async function runLogs( + source: string | undefined, + options: GlobalOptions, +): Promise { + const sourceLabels = createSourceLabelMap(await loadRegistrySources()); + const state = await readCliState(); + const records = Object.entries(state.sources) + .filter(([, entry]) => Boolean(entry?.lastLogPath)) + .map(([sourceId, entry]) => ({ + source: sourceId, + name: displaySource(sourceId, sourceLabels), + path: entry?.lastLogPath ?? "", + lastRunAt: entry?.lastRunAt ?? null, + lastRunOutcome: entry?.lastRunOutcome ?? null, + dataState: (entry?.dataState === "collected_local" || + entry?.dataState === "ingested_personal_server" || + entry?.dataState === "ingest_failed" + ? entry.dataState + : null) as SourceStatus["dataState"] | null, + })) + .sort(compareLogRecordOrder); + const logSummary = { + attentionCount: records.filter((record) => + isAttentionLog(record.lastRunOutcome, record.dataState), + ).length, + successfulCount: records.filter( + (record) => + record.dataState === "collected_local" || + record.dataState === "ingested_personal_server", + ).length, + localCount: records.filter( + (record) => record.dataState === "collected_local", + ).length, + syncedCount: records.filter( + (record) => record.dataState === "ingested_personal_server", + ).length, + }; + + if (source) { + const match = records.find((record) => record.source === source); + if (!match) { + const payload = { + error: "log_not_found", + source, + message: `No stored run log found for ${displaySource(source, sourceLabels)}.`, + nextSteps: [ + `Run \`vana connect ${source}\` to create a new log.`, + ...(records.length > 0 + ? ["Run `vana logs` to inspect other logs."] + : []), + ], + }; + if (options.json) { + process.stdout.write(`${JSON.stringify(payload)}\n`); + } else { + const emit = createEmitter(options); + emit.info(payload.message); + emit.blank(); + emit.section("Next"); + for (const step of payload.nextSteps) { + emit.bullet(step); + } + } + return 1; + } + + if (options.json) { + process.stdout.write(`${JSON.stringify(match)}\n`); + } else { + process.stdout.write(`${formatDisplayPath(match.path)}\n`); + } + return 0; + } + + const nextSteps = buildLogsNextSteps(records); + if (options.json) { + process.stdout.write( + `${JSON.stringify({ + count: records.length, + latestLog: records[0] ?? null, + nextSteps, + summary: logSummary, + logs: records, + })}\n`, + ); + return 0; + } + + const emit = createEmitter(options); + emit.title(records.length > 0 ? `Run logs (${records.length})` : "Run logs"); + emit.blank(); + + if (records.length === 0) { + emit.info("No stored run logs yet."); + emit.blank(); + emit.section("Next"); + for (const step of nextSteps) { + emit.bullet(step); + } + return 0; + } + + emit.info( + joinOverviewParts([ + logSummary.attentionCount > 0 + ? formatCountLabel("need attention", logSummary.attentionCount) + : "", + logSummary.successfulCount > 0 + ? formatCountLabel("successful", logSummary.successfulCount) + : "", + logSummary.localCount > 0 + ? formatCountLabel("local", logSummary.localCount) + : "", + logSummary.syncedCount > 0 + ? formatCountLabel("synced", logSummary.syncedCount) + : "", + ]), + ); + emit.blank(); + + const groups = [ + { + title: "Needs attention", + items: records.filter((record) => + isAttentionLog(record.lastRunOutcome, record.dataState), + ), + }, + { + title: "Successful runs", + items: records.filter( + (record) => !isAttentionLog(record.lastRunOutcome, record.dataState), + ), + }, + ].filter((group) => group.items.length > 0); + + groups.forEach((group, groupIndex) => { + if (groupIndex > 0) { + emit.blank(); + } + emit.section(formatCountLabel(group.title, group.items.length)); + for (const record of group.items) { + emit.sourceTitle(record.name, [ + { + text: formatLogOutcomeLabel(record.lastRunOutcome, record.dataState), + tone: toneForLogOutcome(record.lastRunOutcome, record.dataState), + }, + ]); + emit.keyValue("Path", formatDisplayPath(record.path), "muted"); + if (record.lastRunAt) { + emit.keyValue("Updated", formatTimestamp(record.lastRunAt), "muted"); + } + } + }); + + emit.blank(); + emit.section("Next"); + for (const step of nextSteps) { + emit.bullet(step); + } + return 0; +} + function createEmitter(options: GlobalOptions): Emitter { const renderer = createHumanRenderer(); @@ -1846,7 +2359,8 @@ function displaySource(source: string, labels: SourceLabelMap = {}): string { } function formatCountLabel(label: string, count: number): string { - return `${label} (${count})`; + const normalizedLabel = label.charAt(0).toUpperCase() + label.slice(1); + return `${normalizedLabel} (${count})`; } function joinOverviewParts(parts: string[]): string { @@ -1879,6 +2393,19 @@ function escapeRegExp(value: string): string { return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); } +function getErrorLogPath(error: unknown): string | null { + if ( + error && + typeof error === "object" && + "logPath" in error && + typeof (error as { logPath?: unknown }).logPath === "string" + ) { + return (error as { logPath: string }).logPath; + } + + return null; +} + async function gatherSourceStatuses( storedSources: Record< string, @@ -1919,6 +2446,7 @@ async function gatherSourceStatuses( dataState, lastError: stored.lastError ?? null, lastResultPath: stored.lastResultPath ?? null, + lastLogPath: stored.lastLogPath ?? null, }; }) .sort(compareSourceStatusOrder); @@ -2107,6 +2635,20 @@ function formatSourceStatusDetails(source: SourceStatus): SourceStatusDetail[] { }); } + if ( + source.lastLogPath && + source.lastRunOutcome && + source.lastRunOutcome !== CliOutcomeStatus.CONNECTED_LOCAL_ONLY && + source.lastRunOutcome !== CliOutcomeStatus.CONNECTED_AND_INGESTED + ) { + details.push({ + kind: "row", + label: "Run log", + value: formatDisplayPath(source.lastLogPath), + tone: "muted", + }); + } + return details; } @@ -2153,14 +2695,29 @@ function buildStatusNextSteps( nextSteps.push( `Continue ${highestPriorityLabel} with \`vana connect ${highestPriority.source}\`.`, ); + if (highestPriority.lastLogPath) { + nextSteps.push( + `Inspect the latest run log with \`vana logs ${highestPriority.source}\`.`, + ); + } } else if (highestPriority.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { nextSteps.push( `Complete the manual browser step for ${highestPriorityLabel} with \`vana connect ${highestPriority.source}\`.`, ); + if (highestPriority.lastLogPath) { + nextSteps.push( + `Inspect the latest run log with \`vana logs ${highestPriority.source}\`.`, + ); + } } else if ( highestPriority.lastRunOutcome === CliOutcomeStatus.CONNECTOR_UNAVAILABLE ) { nextSteps.push("Browse available sources with `vana sources`."); + if (highestPriority.lastLogPath) { + nextSteps.push( + `Inspect the latest run log with \`vana logs ${highestPriority.source}\`.`, + ); + } } else if ( highestPriority.dataState === "collected_local" || highestPriority.dataState === "ingested_personal_server" || @@ -2204,6 +2761,114 @@ function buildStatusNextSteps( return [...new Set(nextSteps)]; } +function buildSourcesNextSteps( + recommendedSource: + | { + id: string; + name: string; + authMode?: "automated" | "interactive" | "legacy"; + } + | null + | undefined, + connectedCount: number, +): string[] { + const nextSteps: string[] = []; + + if (connectedCount > 0) { + nextSteps.push("Inspect what you already collected with `vana data list`."); + } + if (recommendedSource) { + nextSteps.push( + `${ + recommendedSource.authMode === "legacy" ? "Complete" : "Connect" + } ${recommendedSource.name} with \`vana connect ${recommendedSource.id}\`.`, + ); + } + nextSteps.push("Or browse the guided picker with `vana connect`."); + + return [...new Set(nextSteps)]; +} + +function buildDataListNextSteps( + datasetRecords: Array<{ + source: string; + name?: string | null; + }>, + registrySources: Array<{ + id: string; + authMode?: "automated" | "interactive" | "legacy"; + }>, +): string[] { + if (datasetRecords.length === 0) { + const suggestedSource = + registrySources.find((source) => source.authMode !== "legacy") ?? + registrySources[0]; + + return [ + suggestedSource + ? `Collect your first dataset with \`vana connect ${suggestedSource.id}\`.` + : "Collect your first dataset with `vana connect`.", + "Check overall status with `vana status`.", + ]; + } + + return [ + `Inspect ${datasetRecords[0].name ?? displaySource(datasetRecords[0].source)} with \`vana data show ${datasetRecords[0].source}\`.`, + `Or print its path with \`vana data path ${datasetRecords[0].source}\`.`, + "Connect another source with `vana sources`.", + ]; +} + +function buildDataShowNextSteps( + source: string, + datasetCount: number, + sourceLabels: SourceLabelMap = {}, +): string[] { + return [ + `Print the path with \`vana data path ${source}\`.`, + `Use \`vana data show ${source} --json | jq\` for structured inspection.`, + `Reconnect ${displaySource(source, sourceLabels)} with \`vana connect ${source}\`.`, + "Connect another source with `vana sources`.", + ...(datasetCount > 1 + ? ["Inspect other datasets with `vana data list`."] + : []), + "Check overall status with `vana status`.", + ]; +} + +function buildLogsNextSteps( + records: Array<{ + source: string; + lastRunOutcome: string | null; + dataState: SourceStatus["dataState"] | null; + }>, +): string[] { + if (records.length === 0) { + return [ + "Run `vana connect ` to create a connector run log.", + "Check overall status with `vana status`.", + ]; + } + + const attentionRecord = records.find((record) => + isAttentionLog(record.lastRunOutcome, record.dataState), + ); + const successfulRecord = records.find( + (record) => !isAttentionLog(record.lastRunOutcome, record.dataState), + ); + return [ + attentionRecord + ? `Inspect the latest issue log with \`vana logs ${attentionRecord.source}\`.` + : `Print the latest log path with \`vana logs ${records[0].source}\`.`, + ...(successfulRecord + ? [ + `Inspect a successful run with \`vana logs ${successfulRecord.source}\`.`, + ] + : []), + "Check overall status with `vana status`.", + ]; +} + function formatSetupConnectStep( emit: Pick, source: @@ -2240,11 +2905,24 @@ function buildConnectChoices( name: string; description?: string; authMode?: "automated" | "interactive" | "legacy"; + dataState?: SourceStatus["dataState"]; + lastRunOutcome?: string | null; + sessionPresent?: boolean; }>, emit: Pick, + recommendedSourceId: string | null = null, ) { - const readyNow = sources.filter((source) => source.authMode !== "legacy"); - const manualSteps = sources.filter((source) => source.authMode === "legacy"); + const connected = sources.filter((source) => + hasCollectedData(source.dataState), + ); + const readyNow = sources.filter( + (source) => + source.authMode !== "legacy" && !hasCollectedData(source.dataState), + ); + const manualSteps = sources.filter( + (source) => + source.authMode === "legacy" && !hasCollectedData(source.dataState), + ); const choices: Array< | Separator | { @@ -2265,7 +2943,11 @@ function buildConnectChoices( choices.push(new Separator(label)); for (const item of items) { choices.push({ - name: `${item.name}${formatAuthModeBadge(item.authMode, emit)}`, + name: `${item.name}${formatAuthModeBadge(item.authMode, emit)}${ + item.id === recommendedSourceId && item.authMode !== "legacy" + ? ` ${emit.badge("recommended", "accent")}` + : "" + }`, description: formatSourcePickerDescription(item), short: item.name, value: item.id, @@ -2273,6 +2955,7 @@ function buildConnectChoices( } }; + appendGroup("Connected", connected); appendGroup("Ready now", readyNow); appendGroup("Manual steps", manualSteps); @@ -2311,7 +2994,28 @@ function describeSourceFlow( function formatSourcePickerDescription(source: { description?: string; authMode?: "automated" | "interactive" | "legacy"; + dataState?: SourceStatus["dataState"]; + lastRunOutcome?: string | null; + sessionPresent?: boolean; + id?: string; }): string { + if (hasCollectedData(source.dataState) && source.id) { + const savedState = + source.dataState === "ingested_personal_server" + ? "Already connected and synced." + : source.dataState === "ingest_failed" + ? "Already connected locally; Personal Server sync failed." + : "Already connected locally."; + const reconnectHint = source.sessionPresent + ? " Saved session available for faster reconnects." + : ""; + return `${savedState} Inspect with \`vana data show ${source.id}\` or reconnect now.${reconnectHint}`; + } + + if (source.lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH && source.id) { + return `Needs a manual browser step on this machine. Continue with \`vana connect ${source.id}\`.`; + } + const flow = describeSourceFlow(source.authMode); if (!source.description) { return flow; @@ -2372,6 +3076,19 @@ function getCliAppRoot(execPath = process.execPath): string { return process.env.VANA_APP_ROOT ?? path.join(path.dirname(execPath), "app"); } +function getDoctorAppRootPath( + installMethod: CliInstallMethod, + execPath = process.execPath, +): string | null { + if (process.env.VANA_APP_ROOT) { + return process.env.VANA_APP_ROOT; + } + if (installMethod === "homebrew" || installMethod === "installer") { + return getCliAppRoot(execPath); + } + return null; +} + function formatInstallMethodLabel(method: CliInstallMethod): string { switch (method) { case "homebrew": @@ -2419,19 +3136,6 @@ function getLifecycleCommands( } } -function formatDisplayPath(filePath: string): string { - const homeDir = os.homedir(); - if (filePath === homeDir) { - return "~"; - } - - if (filePath.startsWith(`${homeDir}${path.sep}`)) { - return `~${filePath.slice(homeDir.length)}`; - } - - return filePath; -} - function extractGlobalOptions(argv: string[]): GlobalOptions { return { json: argv.includes("--json"), @@ -2786,6 +3490,100 @@ function compareDatasetOrder( ); } +function compareLogRecordOrder( + left: { + source: string; + lastRunAt: string | null; + }, + right: { + source: string; + lastRunAt: string | null; + }, +): number { + const leftTimestamp = left.lastRunAt ? Date.parse(left.lastRunAt) : 0; + const rightTimestamp = right.lastRunAt ? Date.parse(right.lastRunAt) : 0; + return ( + rightTimestamp - leftTimestamp || + left.source.localeCompare(right.source, undefined, { + sensitivity: "base", + }) + ); +} + +function hasCollectedData( + dataState: SourceStatus["dataState"] | null | undefined, +): boolean { + return ( + dataState === "collected_local" || + dataState === "ingested_personal_server" || + dataState === "ingest_failed" + ); +} + +function formatLogOutcomeLabel( + lastRunOutcome: string | null, + dataState: SourceStatus["dataState"] | null, +): string { + if (lastRunOutcome === CliOutcomeStatus.CONNECTOR_UNAVAILABLE) { + return "unavailable"; + } + if (lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH) { + return "manual step"; + } + if (lastRunOutcome === CliOutcomeStatus.RUNTIME_ERROR) { + return "error"; + } + if (lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT) { + return "needs input"; + } + if (dataState === "ingested_personal_server") { + return "synced"; + } + if (dataState === "ingest_failed") { + return "sync failed"; + } + if (dataState === "collected_local") { + return "local"; + } + return "recent"; +} + +function isAttentionLog( + lastRunOutcome: string | null, + dataState: SourceStatus["dataState"] | null, +): boolean { + return !( + dataState === "collected_local" || + dataState === "ingested_personal_server" || + lastRunOutcome === CliOutcomeStatus.CONNECTED_LOCAL_ONLY || + lastRunOutcome === CliOutcomeStatus.CONNECTED_AND_INGESTED + ); +} + +function toneForLogOutcome( + lastRunOutcome: string | null, + dataState: SourceStatus["dataState"] | null, +): RenderTone { + if (lastRunOutcome === CliOutcomeStatus.RUNTIME_ERROR) { + return "error"; + } + if ( + lastRunOutcome === CliOutcomeStatus.CONNECTOR_UNAVAILABLE || + lastRunOutcome === CliOutcomeStatus.LEGACY_AUTH || + lastRunOutcome === CliOutcomeStatus.NEEDS_INPUT || + dataState === "ingest_failed" + ) { + return "warning"; + } + if (dataState === "ingested_personal_server") { + return "success"; + } + if (dataState === "collected_local") { + return "muted"; + } + return "muted"; +} + function isPromptCancelled(error: unknown): boolean { return ( error instanceof Error && diff --git a/src/cli/render/format.ts b/src/cli/render/format.ts index a1f45e47..3a6b3869 100644 --- a/src/cli/render/format.ts +++ b/src/cli/render/format.ts @@ -1,3 +1,6 @@ +import os from "node:os"; +import path from "node:path"; + import { type RenderCapabilities, detectRenderCapabilities, @@ -70,6 +73,21 @@ export function createHumanRenderer(): HumanRenderer { }; } +export function formatDisplayPath( + filePath: string, + homeDir = os.homedir(), +): string { + if (filePath === homeDir) { + return "~"; + } + + if (filePath.startsWith(`${homeDir}${path.sep}`)) { + return `~${filePath.slice(homeDir.length)}`; + } + + return filePath; +} + function applyTone(theme: RenderTheme, tone: Tone, text: string): string { switch (tone) { case "accent": diff --git a/src/core/cli-types.ts b/src/core/cli-types.ts index b3fe3f55..92e75dd2 100644 --- a/src/core/cli-types.ts +++ b/src/core/cli-types.ts @@ -39,6 +39,13 @@ export const cliInstallMethodSchema = z.enum([ ]); export type CliInstallMethod = z.infer; +export const cliVersionInfoSchema = z.object({ + cliVersion: z.string(), + channel: cliChannelSchema, + installMethod: cliInstallMethodSchema, +}); +export type CliVersionInfo = z.infer; + export const dataStateSchema = z.enum([ "none", "collected_local", @@ -61,6 +68,7 @@ export const sourceStatusSchema = z.object({ dataState: dataStateSchema.optional(), lastError: z.string().nullable().optional(), lastResultPath: z.string().nullable().optional(), + lastLogPath: z.string().nullable().optional(), }); export type SourceStatus = z.infer; @@ -72,6 +80,9 @@ export const listedSourceSchema = z description: z.string().optional(), authMode: z.enum(["automated", "interactive", "legacy"]).optional(), installed: z.boolean(), + dataState: dataStateSchema.optional(), + lastRunOutcome: z.string().nullable().optional(), + sessionPresent: z.boolean().optional(), }) .passthrough(); export type ListedSource = z.infer; @@ -116,9 +127,14 @@ export const cliDoctorSchema = z.object({ runtimePath: z.string().nullable(), personalServer: personalServerStateSchema, personalServerUrl: z.string().nullable(), + capabilities: z.object({ + supportsHeaded: z.boolean(), + supportsManagedProfiles: z.boolean(), + supportsScreenshots: z.boolean(), + }), paths: z.object({ executable: z.string(), - appRoot: z.string(), + appRoot: z.string().nullable(), dataHome: z.string(), stateFile: z.string(), connectorCache: z.string(), @@ -129,6 +145,12 @@ export const cliDoctorSchema = z.object({ upgrade: z.string(), uninstall: z.string(), }), + summary: z.object({ + trackedSourceCount: z.number(), + attentionCount: z.number(), + connectedCount: z.number(), + }), + recentSources: z.array(sourceStatusSchema), checks: z.array(cliDoctorCheckSchema), nextSteps: z.array(z.string()), }); @@ -137,8 +159,10 @@ export type CliDoctor = z.infer; export const cliSourcesSchema = z.object({ count: z.number(), recommendedSource: listedSourceSchema.nullable(), + nextSteps: z.array(z.string()).optional(), summary: z .object({ + connectedCount: z.number(), readyCount: z.number(), manualCount: z.number(), installedCount: z.number(), @@ -170,6 +194,7 @@ export type DatasetRecord = z.infer; export const cliDataListSchema = z.object({ count: z.number(), latestDataset: datasetRecordSchema.nullable(), + nextSteps: z.array(z.string()).optional(), summary: z .object({ localCount: z.number(), @@ -187,9 +212,36 @@ export const cliDataPathSchema = z.object({ path: z.string(), lastRunAt: z.string().nullable(), dataState: dataStateSchema.nullable(), + nextSteps: z.array(z.string()).optional(), }); export type CliDataPath = z.infer; +export const logRecordSchema = z.object({ + source: z.string(), + name: z.string(), + path: z.string(), + lastRunAt: z.string().nullable(), + lastRunOutcome: z.string().nullable(), + dataState: dataStateSchema.nullable(), +}); +export type LogRecord = z.infer; + +export const cliLogsSchema = z.object({ + count: z.number(), + latestLog: logRecordSchema.nullable(), + nextSteps: z.array(z.string()).optional(), + summary: z + .object({ + attentionCount: z.number(), + successfulCount: z.number(), + localCount: z.number(), + syncedCount: z.number(), + }) + .optional(), + logs: z.array(logRecordSchema), +}); +export type CliLogs = z.infer; + export const cliDataShowSchema = z.object({ source: z.string(), name: z.string(), @@ -197,6 +249,7 @@ export const cliDataShowSchema = z.object({ summary: datasetSummarySchema.nullable(), lastRunAt: z.string().nullable(), dataState: dataStateSchema.nullable(), + nextSteps: z.array(z.string()).optional(), data: z.record(z.string(), z.unknown()), }); export type CliDataShow = z.infer; @@ -261,6 +314,14 @@ export type DatasetReadFailedError = z.infer< typeof datasetReadFailedErrorSchema >; +export const logNotFoundErrorSchema = z.object({ + error: z.literal("log_not_found"), + source: z.string().optional(), + message: z.string(), + nextSteps: z.array(z.string()).optional(), +}); +export type LogNotFoundError = z.infer; + export const cliEventSchema = z.object({ type: cliEventTypeSchema, source: z.string().optional(), diff --git a/src/core/state-store.ts b/src/core/state-store.ts index dc595c98..686c15f7 100644 --- a/src/core/state-store.ts +++ b/src/core/state-store.ts @@ -1,8 +1,20 @@ import fs from "node:fs/promises"; import path from "node:path"; +import crypto from "node:crypto"; import { getCliStatePath, getDataConnectHome } from "./paths.js"; +const STATE_LOCK_TIMEOUT_MS = 5_000; +const STATE_LOCK_RETRY_MS = 25; +const STATE_LOCK_STALE_MS = 30_000; + +let testHooks: + | { + beforeRead?: () => Promise | void; + beforeWrite?: () => Promise | void; + } + | undefined; + export interface StoredSourceState { connectorInstalled?: boolean; sessionPresent?: boolean; @@ -11,6 +23,7 @@ export interface StoredSourceState { dataState?: string | null; lastError?: string | null; lastResultPath?: string | null; + lastLogPath?: string | null; } export interface CliStateFile { @@ -31,18 +44,96 @@ export async function updateSourceState( source: string, patch: StoredSourceState, ): Promise { - const state = await readCliState(); - const current = state.sources[source] ?? {}; - state.sources[source] = { ...current, ...patch }; - await fs.mkdir(getDataConnectHome(), { recursive: true }); - await fs.writeFile( - getCliStatePath(), - `${JSON.stringify(state, null, 2)}\n`, - "utf8", - ); + await withStateFileLock(async () => { + await testHooks?.beforeRead?.(); + const state = await readCliState(); + const current = state.sources[source] ?? {}; + state.sources[source] = { ...current, ...patch }; + await testHooks?.beforeWrite?.(); + await atomicWriteFile( + getCliStatePath(), + `${JSON.stringify(state, null, 2)}\n`, + ); + }); } export async function ensureParentDir(filePath: string): Promise { await fs.mkdir(path.dirname(filePath), { recursive: true }); } + +export function __setStateStoreTestHooks( + hooks: + | { + beforeRead?: () => Promise | void; + beforeWrite?: () => Promise | void; + } + | undefined, +): void { + testHooks = hooks; +} + +async function withStateFileLock(fn: () => Promise): Promise { + const lockPath = `${getCliStatePath()}.lock`; + const start = Date.now(); + + while (true) { + try { + const handle = await fs.open(lockPath, "wx"); + try { + return await fn(); + } finally { + await handle.close(); + await fs.rm(lockPath, { force: true }); + } + } catch (error) { + if (!isLockAlreadyHeld(error)) { + throw error; + } + + if (await isStaleLock(lockPath)) { + await fs.rm(lockPath, { force: true }); + continue; + } + + if (Date.now() - start >= STATE_LOCK_TIMEOUT_MS) { + throw new Error( + "Timed out waiting for the Vana Connect state file lock.", + ); + } + + await sleep(STATE_LOCK_RETRY_MS); + } + } +} + +async function atomicWriteFile( + filePath: string, + contents: string, +): Promise { + const tempPath = `${filePath}.${process.pid}.${crypto.randomUUID()}.tmp`; + await fs.writeFile(tempPath, contents, "utf8"); + await fs.rename(tempPath, filePath); +} + +async function isStaleLock(lockPath: string): Promise { + try { + const stats = await fs.stat(lockPath); + return Date.now() - stats.mtimeMs > STATE_LOCK_STALE_MS; + } catch { + return false; + } +} + +function isLockAlreadyHeld(error: unknown): boolean { + return ( + typeof error === "object" && + error !== null && + "code" in error && + (error as { code?: unknown }).code === "EEXIST" + ); +} + +function sleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} diff --git a/src/runtime/managed-playwright.ts b/src/runtime/managed-playwright.ts index 852c8f8a..964e9826 100644 --- a/src/runtime/managed-playwright.ts +++ b/src/runtime/managed-playwright.ts @@ -1,6 +1,8 @@ import fsp from "node:fs/promises"; import path from "node:path"; import { createRequire } from "node:module"; +import { execFile } from "node:child_process"; +import { promisify } from "node:util"; import { ensureParentDir, @@ -12,6 +14,7 @@ import { } from "../core/index.js"; import type { CliEvent, RuntimeState } from "../core/cli-types.js"; import { fetchConnectorToCache } from "../connectors/registry.js"; +import type { RuntimeCapabilities } from "./core/index.js"; import { getBrowserCacheDir, resolveBrowserPath, @@ -20,6 +23,7 @@ import { import { findDataConnectorsDir } from "./repo-paths.js"; const require = createRequire(import.meta.url); +const execFileAsync = promisify(execFile); export interface RuntimeInstallResult { runtime: RuntimeState; @@ -46,6 +50,17 @@ export interface NeedInputEvent { } export class ManagedPlaywrightRuntime { + get capabilities(): RuntimeCapabilities { + return { + supportsHeaded: + process.platform !== "linux" || + Boolean(process.env.DISPLAY) || + Boolean(process.env.WAYLAND_DISPLAY), + supportsManagedProfiles: true, + supportsScreenshots: true, + }; + } + get runtimePath(): string | null { return getResolvedRuntimePath(); } @@ -110,6 +125,9 @@ export class ManagedPlaywrightRuntime { `${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`, "utf8", ); + if (error && typeof error === "object") { + Object.assign(error, { logPath }); + } throw error; } } @@ -130,7 +148,7 @@ export class ManagedPlaywrightRuntime { } } -async function installChromium(logPath: string): Promise { +export async function installChromium(logPath: string): Promise { const browserCacheDir = getBrowserCacheDir(); const previousBrowserPath = process.env.PLAYWRIGHT_BROWSERS_PATH; const previousSkipGc = process.env.PLAYWRIGHT_SKIP_BROWSER_GC; @@ -139,36 +157,46 @@ async function installChromium(logPath: string): Promise { process.env.PLAYWRIGHT_BROWSERS_PATH = browserCacheDir; process.env.PLAYWRIGHT_SKIP_BROWSER_GC = "1"; - const { registry } = require( - require.resolve("playwright-core/lib/server/registry/index", { - paths: [path.dirname(require.resolve("playwright/package.json"))], - }), - ) as { - registry: { - findExecutable(name: string): { - name: string; - installType: string; - }; - install( - executables: Array, - options?: { force?: boolean }, - ): Promise; - }; - }; - - const executables: Array = []; - if (process.platform === "win32") { - executables.push(registry.findExecutable("winldd")); - } - executables.push(registry.findExecutable("chromium")); - await ensureParentDir(logPath); await fsp.writeFile( logPath, `Installing Chromium into ${browserCacheDir}\n`, "utf8", ); - await registry.install(executables); + const cliInstalled = await installChromiumViaPackagedCli( + logPath, + browserCacheDir, + ); + if (!cliInstalled) { + await fsp.appendFile( + logPath, + "Falling back to Playwright internal registry install.\n", + "utf8", + ); + const { registry } = require( + require.resolve("playwright-core/lib/server/registry/index", { + paths: [path.dirname(require.resolve("playwright/package.json"))], + }), + ) as { + registry: { + findExecutable(name: string): { + name: string; + installType: string; + }; + install( + executables: Array, + options?: { force?: boolean }, + ): Promise; + }; + }; + + const executables: Array = []; + if (process.platform === "win32") { + executables.push(registry.findExecutable("winldd")); + } + executables.push(registry.findExecutable("chromium")); + await registry.install(executables); + } await fsp.appendFile(logPath, "Chromium installation complete.\n", "utf8"); } catch (error) { await ensureParentDir(logPath); @@ -193,6 +221,63 @@ async function installChromium(logPath: string): Promise { } } +export async function installChromiumViaPackagedCli( + logPath: string, + browserCacheDir: string, +): Promise { + const playwrightCliPath = getPlaywrightCliPath(); + if (!playwrightCliPath) { + await fsp.appendFile( + logPath, + "Playwright packaged CLI not found. Skipping CLI install path.\n", + "utf8", + ); + return false; + } + + try { + const { stdout, stderr } = await execFileAsync( + process.execPath, + [playwrightCliPath, "install", "chromium"], + { + env: { + ...process.env, + PLAYWRIGHT_BROWSERS_PATH: browserCacheDir, + PLAYWRIGHT_SKIP_BROWSER_GC: "1", + }, + windowsHide: true, + }, + ); + if (stdout) { + await fsp.appendFile(logPath, stdout, "utf8"); + } + if (stderr) { + await fsp.appendFile(logPath, stderr, "utf8"); + } + return true; + } catch (error) { + const details = + error instanceof Error ? (error.stack ?? error.message) : String(error); + await fsp.appendFile( + logPath, + `Playwright packaged CLI install failed.\n${details}\n`, + "utf8", + ); + return false; + } +} + +export function getPlaywrightCliPath(): string | null { + try { + const playwrightPackagePath = require.resolve("playwright/package.json"); + const playwrightRoot = path.dirname(playwrightPackagePath); + const cliPath = path.join(playwrightRoot, "cli.js"); + return cliPath; + } catch { + return null; + } +} + function getResolvedRuntimePath(): string | null { try { return resolveBrowserPath(); diff --git a/src/runtime/playwright/browser.ts b/src/runtime/playwright/browser.ts index 47219dbe..182e104b 100644 --- a/src/runtime/playwright/browser.ts +++ b/src/runtime/playwright/browser.ts @@ -1,7 +1,7 @@ import fs from "node:fs"; import path from "node:path"; import os from "node:os"; -import { execSync } from "node:child_process"; +import { execFileSync } from "node:child_process"; import { chromium, type BrowserContext } from "playwright"; @@ -199,10 +199,24 @@ export function getChromeProfileDir(chromeRoot: string): string | null { return fs.existsSync(defaultDir) ? defaultDir : null; } +export function supportsSystemChromeCookieImport(): boolean { + if (process.env.VANA_ENABLE_SYSTEM_COOKIE_IMPORT === "1") { + return true; + } + + // Treat this as a macOS-only enhancement until we have explicit + // validation for other platforms. The core CLI path should not depend on it. + return process.platform === "darwin"; +} + export function importChromeCookies( userDataDir: string, browserPath: string | null, ): void { + if (!supportsSystemChromeCookieImport()) { + return; + } + if (!isSystemChrome(browserPath)) { return; } @@ -232,8 +246,7 @@ export function importChromeCookies( return; } - const sourceDb = sourceCookies.replace(/'/g, "'\\''"); - const targetDb = targetCookies.replace(/'/g, "'\\''"); + const sourceDb = sourceCookies.replace(/'/g, "''"); const sql = ` ATTACH DATABASE '${sourceDb}' AS src; INSERT OR REPLACE INTO main.cookies @@ -242,7 +255,7 @@ DETACH DATABASE src; `; try { - execSync(`sqlite3 '${targetDb}' "${sql.replace(/\n/g, " ")}"`, { + execFileSync("sqlite3", [targetCookies, sql.replace(/\n/g, " ")], { stdio: "ignore", }); fs.writeFileSync(markerFile, `${new Date().toISOString()}\n`, "utf8"); diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 72366ee5..75fcfd1a 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -5,7 +5,10 @@ import { cliDataShowSchema, cliDoctorSchema, cliEventSchema, + cliLogsSchema, + cliVersionInfoSchema, datasetNotFoundErrorSchema, + logNotFoundErrorSchema, cliSourcesSchema, cliStatusSchema, sourceRequiredErrorSchema, @@ -34,6 +37,14 @@ let runConnectorEvents: Array> = []; vi.mock("../../src/runtime/index.js", () => ({ findDataConnectorsDir: vi.fn(() => "/tmp/data-connectors"), ManagedPlaywrightRuntime: class { + get capabilities() { + return { + supportsHeaded: true, + supportsManagedProfiles: true, + supportsScreenshots: true, + }; + } + get state() { return runtimeState; } @@ -211,15 +222,40 @@ describe("runCli", () => { expect(exitCode).toBe(0); expect(parsed).toEqual({ count: 2, - recommendedSource: { id: "github", name: "GitHub", installed: true }, + recommendedSource: { + id: "github", + name: "GitHub", + installed: false, + dataState: "none", + lastRunOutcome: null, + sessionPresent: false, + }, + nextSteps: [ + "Connect GitHub with `vana connect github`.", + "Or browse the guided picker with `vana connect`.", + ], summary: { + connectedCount: 0, readyCount: 2, manualCount: 0, - installedCount: 1, + installedCount: 0, }, sources: [ - { id: "github", name: "GitHub", installed: true }, - { id: "steam", name: "Steam", installed: false }, + { + id: "github", + name: "GitHub", + installed: false, + dataState: "none", + lastRunOutcome: null, + sessionPresent: false, + }, + { + id: "steam", + name: "Steam", + installed: false, + lastRunOutcome: null, + sessionPresent: false, + }, ], }); }); @@ -289,7 +325,20 @@ describe("runCli", () => { const exitCode = await runCli(["node", "vana", "version"]); expect(exitCode).toBe(0); - expect(stdout.trim()).toBe("0.8.1"); + expect(stdout.trim()).toBe("0.8.1 (stable, development checkout)"); + }); + + it("prints structured version info in json mode", async () => { + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "version", "--json"]); + const parsed = cliVersionInfoSchema.parse(JSON.parse(stdout)); + + expect(exitCode).toBe(0); + expect(parsed).toEqual({ + cliVersion: "0.8.1", + channel: "stable", + installMethod: "development", + }); }); it("shows operational commands in top-level help", async () => { @@ -297,13 +346,23 @@ describe("runCli", () => { const exitCode = await runCli(["node", "vana", "--help"]); expect(exitCode).toBe(0); + expect(stdout).toContain( + "Connect sources, collect data, and inspect it locally.", + ); expect(stdout).toContain("version"); expect(stdout).toContain("doctor"); + expect(stdout).toContain("vana logs"); expect(stdout).toContain( "connect [options] [source] Connect a source and collect data", ); + expect(stdout).toContain("Start here:"); + expect(stdout).toContain("Automation:"); + expect(stdout).toContain("Support:"); + expect(stdout).toContain("Version:"); + expect(stdout).toContain("0.8.1 (stable, development checkout)"); expect(stdout).toContain("vana doctor"); expect(stdout).toContain("vana connect github"); + expect(stdout).toContain("vana data list"); }); it("shows top-level help and exits successfully with no arguments", async () => { @@ -311,7 +370,9 @@ describe("runCli", () => { const exitCode = await runCli(["node", "vana"]); expect(exitCode).toBe(0); - expect(stdout).toContain("Vana Connect CLI"); + expect(stdout).toContain( + "Connect sources, collect data, and inspect it locally.", + ); expect(stdout).toContain("Commands:"); expect(stdout).toContain("vana status"); }); @@ -341,7 +402,9 @@ describe("runCli", () => { const exitCode = await runCli(["node", "vana", "data"]); expect(exitCode).toBe(0); - expect(stdout).toContain("Inspect collected data"); + expect(stdout).toContain( + "Inspect collected datasets, paths, and summaries", + ); expect(stdout).toContain("vana data list"); expect(stdout).toContain("vana data show github"); }); @@ -351,6 +414,7 @@ describe("runCli", () => { version: 1, sources: { github: { + lastRunAt: "2026-03-14T13:10:03.677Z", lastRunOutcome: "connected_local_only", dataState: "collected_local", }, @@ -380,9 +444,14 @@ describe("runCli", () => { runtime: "installed", runtimePath: "/tmp/playwright/chrome", personalServer: "unavailable", + capabilities: { + supportsHeaded: true, + supportsManagedProfiles: true, + supportsScreenshots: true, + }, paths: { executable: expect.any(String), - appRoot: expect.any(String), + appRoot: null, dataHome: expect.stringMatching(/\.dataconnect$/), stateFile: expect.stringMatching( /\.dataconnect\/vana-connect-state\.json$/, @@ -396,6 +465,18 @@ describe("runCli", () => { uninstall: "Remove the local checkout and any generated ~/.dataconnect state.", }, + summary: { + trackedSourceCount: 1, + attentionCount: 0, + connectedCount: 1, + }, + recentSources: [ + expect.objectContaining({ + source: "github", + dataState: "collected_local", + lastRunOutcome: "connected_local_only", + }), + ], checks: expect.arrayContaining([ expect.objectContaining({ key: "cli", @@ -419,7 +500,13 @@ describe("runCli", () => { expect(stdout).toContain("Install"); expect(stdout).toContain("Paths"); expect(stdout).toContain("Lifecycle"); + expect(stdout).toContain("Headed sessions"); + expect(stdout).toContain("Managed profiles"); + expect(stdout).toContain("Screenshots"); + expect(stdout).toContain("Attention"); + expect(stdout).toContain("Connected"); expect(stdout).toContain("git pull && pnpm install && pnpm build"); + expect(stdout).not.toContain("App root:"); }); it("renders a stable human transcript for setup when already installed", async () => { @@ -495,6 +582,12 @@ describe("runCli", () => { dataState: "collected_local", lastResultPath: "/tmp/.dataconnect/github-result.json", }, + shop: { + lastRunAt: "2026-03-14T13:11:10.000Z", + lastRunOutcome: "legacy_auth", + dataState: "none", + lastLogPath: "/tmp/.dataconnect/logs/run-shop.log", + }, }, }); @@ -506,6 +599,7 @@ describe("runCli", () => { expect(stdout).toContain("GitHub [interactive] [local]"); expect(stdout).toContain("vana data show github"); expect(stdout).toContain("/tmp/.dataconnect/github-result.json"); + expect(stdout).toContain("/tmp/.dataconnect/logs/run-shop.log"); expect(stdout).toContain("/tmp/playwright/chrome"); }); @@ -536,6 +630,7 @@ describe("runCli", () => { lastRunAt: "2026-03-14T13:11:10.000Z", lastRunOutcome: "legacy_auth", dataState: "none", + lastLogPath: "/tmp/.dataconnect/logs/run-shop.log", }, }, }); @@ -547,7 +642,7 @@ describe("runCli", () => { expect(normalizeRenderedTimestamps(stdout)).toMatchInlineSnapshot(` "Vana Connect status - need attention (1) • local (1) • connected (1) + Need attention (1) • Connected (1) • Local only (1) → Environment Runtime: installed @@ -558,6 +653,7 @@ describe("runCli", () => { Shop [legacy] [manual step] Run \`vana connect shop\` without \`--no-input\` to complete the manual browser step. Updated: + Run log: /tmp/.dataconnect/logs/run-shop.log → Connected (1) GitHub [interactive] [local] @@ -569,6 +665,7 @@ describe("runCli", () => { → Next • Complete the manual browser step for Shop with \`vana connect shop\`. + • Inspect the latest run log with \`vana logs shop\`. • Inspect the data you already collected with \`vana data show github\`. " `); @@ -691,6 +788,10 @@ describe("runCli", () => { "Because `--no-input` is enabled, Vana stopped before prompting in this terminal.", ); expect(stdout).toContain("Run `vana connect github` without `--no-input`."); + expect(stdout).toContain( + "Inspect the latest run log with `vana logs github`.", + ); + expect(stdout).toContain("Or check overall status with `vana status`."); }); it("prints a clean manual-step message for legacy connectors in no-input mode", async () => { @@ -733,6 +834,10 @@ describe("runCli", () => { "Because `--no-input` is enabled, Vana stopped before opening that session.", ); expect(stdout).toContain("Run `vana connect shop` without `--no-input`."); + expect(stdout).toContain( + "Inspect the latest run log with `vana logs shop`.", + ); + expect(stdout).toContain("Or check overall status with `vana status`."); expect(stdout).toContain("Run log:"); expect(stdout).toContain("/tmp/logs/run.log"); expect(stdout).not.toContain("LegacyAuthError"); @@ -783,6 +888,10 @@ describe("runCli", () => { expect(stdout).toContain( "Complete the browser step locally, then rerun `vana connect shop`.", ); + expect(stdout).toContain( + "Inspect the latest run log with `vana logs shop`.", + ); + expect(stdout).toContain("Or check overall status with `vana status`."); expect(stdout).not.toContain( "Because `--no-input` is enabled, Vana stopped before opening that session.", ); @@ -836,6 +945,49 @@ describe("runCli", () => { ); expect(stdout).toContain("Run this command in a desktop session."); expect(stdout).toContain("xvfb-run -a vana connect shop"); + expect(stdout).toContain( + "Inspect the latest run log with `vana logs shop`.", + ); + expect(stdout).toContain("Or check overall status with `vana status`."); + }); + + it("guides recovery for runtime errors during connect", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + description: "Exports GitHub data.", + }, + ]); + fetchConnectorResult = { + connectorPath: "/tmp/connectors/github/github-playwright.js", + logPath: "/tmp/logs/fetch.log", + }; + runConnectorEvents = [ + { + type: "runtime-error", + source: "github", + message: "Browser navigation failed", + logPath: "/tmp/logs/run.log", + }, + ]; + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "connect", "github"]); + + expect(exitCode).toBe(1); + expect(stdout).toContain("→ Problem"); + expect(stdout).toContain("Browser navigation failed"); + expect(stdout).toContain("→ Next"); + expect(stdout).toContain("Retry with `vana connect github`."); + expect(stdout).toContain( + "Inspect the latest run log with `vana logs github`.", + ); + expect(stdout).toContain("Inspect install health with `vana doctor`."); + expect(stdout).toContain("Or check overall status with `vana status`."); + expect(stdout).toContain("Run log:"); + expect(stdout).toContain("/tmp/logs/run.log"); }); it("shows collected data in json mode", async () => { @@ -884,6 +1036,13 @@ describe("runCli", () => { }, lastRunAt: "2026-03-14T13:10:03.677Z", dataState: "collected_local", + nextSteps: [ + "Print the path with `vana data path github`.", + "Use `vana data show github --json | jq` for structured inspection.", + "Reconnect GitHub with `vana connect github`.", + "Connect another source with `vana sources`.", + "Check overall status with `vana status`.", + ], data: { profile: { username: "tnunamak" }, repositories: [{ name: "vana-connect" }], @@ -937,6 +1096,7 @@ describe("runCli", () => { → Next • Print the path with \`vana data path github\`. + • Use \`vana data show github --json | jq\` for structured inspection. • Reconnect GitHub with \`vana connect github\`. • Connect another source with \`vana sources\`. • Check overall status with \`vana status\`. @@ -1081,6 +1241,11 @@ describe("runCli", () => { syncedCount: 0, syncFailedCount: 0, }, + nextSteps: [ + "Inspect GitHub with `vana data show github`.", + "Or print its path with `vana data path github`.", + "Connect another source with `vana sources`.", + ], datasets: [ { source: "github", @@ -1143,7 +1308,7 @@ describe("runCli", () => { expect(normalizeRenderedTimestamps(stdout)).toMatchInlineSnapshot(` "Collected data (2) - local dataset (2) • synced dataset (0) + Dataset (2) • Local only (2) • Synced (0) GitHub [local] Profile: tnunamak @@ -1223,6 +1388,10 @@ describe("runCli", () => { path: "/tmp/.dataconnect/github-result.json", lastRunAt: null, dataState: null, + nextSteps: [ + "Inspect the dataset with `vana data show github`.", + "Reconnect GitHub with `vana connect github`.", + ], }); }); @@ -1255,6 +1424,148 @@ describe("runCli", () => { }); }); + it("lists stored run logs in json mode", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + { id: "shop", name: "Shop", authMode: "legacy" }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + lastRunAt: "2026-03-14T13:10:03.677Z", + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + lastLogPath: "/tmp/.dataconnect/logs/run-github.log", + }, + shop: { + lastRunAt: "2026-03-14T13:11:10.000Z", + lastRunOutcome: "legacy_auth", + dataState: "none", + lastLogPath: "/tmp/.dataconnect/logs/run-shop.log", + }, + }, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "logs", "--json"]); + const parsed = cliLogsSchema.parse(JSON.parse(stdout)); + + expect(exitCode).toBe(0); + expect(parsed).toEqual({ + count: 2, + latestLog: { + source: "shop", + name: "Shop", + path: "/tmp/.dataconnect/logs/run-shop.log", + lastRunAt: "2026-03-14T13:11:10.000Z", + lastRunOutcome: "legacy_auth", + dataState: null, + }, + nextSteps: [ + "Inspect the latest issue log with `vana logs shop`.", + "Inspect a successful run with `vana logs github`.", + "Check overall status with `vana status`.", + ], + summary: { + attentionCount: 1, + successfulCount: 1, + localCount: 1, + syncedCount: 0, + }, + logs: [ + { + source: "shop", + name: "Shop", + path: "/tmp/.dataconnect/logs/run-shop.log", + lastRunAt: "2026-03-14T13:11:10.000Z", + lastRunOutcome: "legacy_auth", + dataState: null, + }, + { + source: "github", + name: "GitHub", + path: "/tmp/.dataconnect/logs/run-github.log", + lastRunAt: "2026-03-14T13:10:03.677Z", + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + }, + ], + }); + }); + + it("returns a structured log-not-found error in json mode", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: {}, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "logs", "github", "--json"]); + const parsed = logNotFoundErrorSchema.parse(JSON.parse(stdout)); + + expect(exitCode).toBe(1); + expect(parsed).toEqual({ + error: "log_not_found", + source: "github", + message: "No stored run log found for GitHub.", + nextSteps: ["Run `vana connect github` to create a new log."], + }); + }); + + it("renders a stable human transcript for logs", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + { id: "shop", name: "Shop", authMode: "legacy" }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + lastRunAt: "2026-03-14T13:10:03.677Z", + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + lastLogPath: "/tmp/.dataconnect/logs/run-github.log", + }, + shop: { + lastRunAt: "2026-03-14T13:11:10.000Z", + lastRunOutcome: "legacy_auth", + dataState: "none", + lastLogPath: "/tmp/.dataconnect/logs/run-shop.log", + }, + }, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "logs"]); + + expect(exitCode).toBe(0); + expect(normalizeRenderedTimestamps(stdout)).toMatchInlineSnapshot(` + "Run logs (2) + + Need attention (1) • Successful (1) • Local (1) + + → Needs attention (1) + Shop [manual step] + Path: /tmp/.dataconnect/logs/run-shop.log + Updated: + + → Successful runs (1) + GitHub [local] + Path: /tmp/.dataconnect/logs/run-github.log + Updated: + + → Next + • Inspect the latest issue log with \`vana logs shop\`. + • Inspect a successful run with \`vana logs github\`. + • Check overall status with \`vana status\`. + " + `); + }); + it("prioritizes higher-maturity sources in human output", async () => { mockListAvailableSources.mockResolvedValue([ { @@ -1294,6 +1605,89 @@ describe("runCli", () => { expect(stdout).toContain("Manual steps"); }); + it("reports non-overlapping source summary counts in json mode", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + }, + { + id: "spotify", + name: "Spotify", + authMode: "interactive", + }, + { + id: "shop", + name: "Shop", + authMode: "legacy", + }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + dataState: "collected_local", + lastRunOutcome: "connected_local_only", + lastResultPath: "/tmp/.dataconnect/github-result.json", + }, + }, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "sources", "--json"]); + const parsed = cliSourcesSchema.parse(JSON.parse(stdout)); + + expect(exitCode).toBe(0); + expect(parsed.summary).toEqual({ + connectedCount: 1, + readyCount: 1, + manualCount: 1, + installedCount: 0, + }); + }); + + it("omits a recommended source when only already-connected sources remain", async () => { + mockListAvailableSources.mockResolvedValue([ + { + id: "github", + name: "GitHub", + authMode: "interactive", + }, + { + id: "spotify", + name: "Spotify", + authMode: "interactive", + }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + dataState: "collected_local", + lastRunOutcome: "connected_local_only", + lastResultPath: "/tmp/.dataconnect/github-result.json", + }, + spotify: { + dataState: "ingested_personal_server", + lastRunOutcome: "connected_and_ingested", + lastResultPath: "/tmp/.dataconnect/spotify-result.json", + }, + }, + }); + + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "sources", "--json"]); + const parsed = cliSourcesSchema.parse(JSON.parse(stdout)); + + expect(exitCode).toBe(0); + expect(parsed.recommendedSource).toBeNull(); + expect(parsed.nextSteps).toEqual([ + "Inspect what you already collected with `vana data list`.", + "Or browse the guided picker with `vana connect`.", + ]); + }); + it("renders a stable human transcript for sources", async () => { mockListAvailableSources.mockResolvedValue([ { @@ -1323,10 +1717,10 @@ describe("runCli", () => { expect(stdout).toMatchInlineSnapshot(` "Available sources (3) - ready now (2) • with manual step (1) + Ready now (2) • With manual step (1) → Ready now (2) - GitHub [interactive] + GitHub [interactive] [recommended] Exports GitHub data. Flow: prompts in this terminal when the source needs input. Spotify [interactive] @@ -1339,7 +1733,7 @@ describe("runCli", () => { Flow: finishes with a manual browser step on this machine. → Next - • Start with GitHub using \`vana connect github\`. + • Connect GitHub with \`vana connect github\`. • Or browse the guided picker with \`vana connect\`. " `); @@ -1508,6 +1902,7 @@ describe("runCli", () => { separator: "Ready now", }); expect(choices[1]).toMatchObject({ value: "github" }); + expect(choices[1]?.name).toContain("recommended"); expect(choices[2]).toMatchObject({ value: "spotify" }); expect(choices[3]).toMatchObject({ type: "separator", separator: "" }); expect(choices[4]).toMatchObject({ @@ -1517,6 +1912,70 @@ describe("runCli", () => { expect(choices[5]).toMatchObject({ value: "shop" }); }); + it("puts connected sources first in guided connect choices", async () => { + mockListAvailableSources.mockResolvedValue([ + { id: "github", name: "GitHub", authMode: "interactive" }, + { id: "spotify", name: "Spotify", authMode: "interactive" }, + { id: "shop", name: "Shop", authMode: "legacy" }, + ]); + mockReadCliState.mockResolvedValue({ + version: 1, + sources: { + github: { + sessionPresent: true, + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + lastResultPath: "/tmp/.dataconnect/github-result.json", + }, + }, + }); + mockSelect.mockResolvedValueOnce("github"); + + const originalStdoutTty = process.stdout.isTTY; + const originalStdinTty = process.stdin.isTTY; + Object.defineProperty(process.stdout, "isTTY", { + configurable: true, + value: true, + }); + Object.defineProperty(process.stdin, "isTTY", { + configurable: true, + value: true, + }); + + const { runCli } = await import("../../src/cli/index.js"); + await runCli(["node", "vana", "connect"]); + + Object.defineProperty(process.stdout, "isTTY", { + configurable: true, + value: originalStdoutTty, + }); + Object.defineProperty(process.stdin, "isTTY", { + configurable: true, + value: originalStdinTty, + }); + + const choices = mockSelect.mock.calls[0]?.[0]?.choices; + expect(choices).toBeDefined(); + expect(choices[0]).toMatchObject({ + type: "separator", + separator: "Connected", + }); + expect(choices[1]).toMatchObject({ value: "github" }); + expect(choices[1].description).toContain("Already connected locally."); + expect(choices[2]).toMatchObject({ type: "separator", separator: "" }); + expect(choices[3]).toMatchObject({ + type: "separator", + separator: "Ready now", + }); + expect(choices[4]).toMatchObject({ value: "spotify" }); + expect(choices[5]).toMatchObject({ type: "separator", separator: "" }); + expect(choices[6]).toMatchObject({ + type: "separator", + separator: "Manual steps", + }); + expect(choices[7]).toMatchObject({ value: "shop" }); + }); + it("prints a clear message when the guided source picker is cancelled", async () => { mockListAvailableSources.mockResolvedValue([ { id: "github", name: "GitHub", authMode: "interactive" }, diff --git a/test/cli/render-format.test.ts b/test/cli/render-format.test.ts new file mode 100644 index 00000000..3648bd9f --- /dev/null +++ b/test/cli/render-format.test.ts @@ -0,0 +1,27 @@ +import os from "node:os"; +import path from "node:path"; + +import { formatDisplayPath } from "../../src/cli/render/index.js"; + +describe("formatDisplayPath", () => { + it("renders the home directory as a tilde", () => { + expect(formatDisplayPath(os.homedir())).toBe("~"); + }); + + it("renders paths under the home directory with a tilde prefix", () => { + const nestedPath = path.join( + os.homedir(), + ".dataconnect", + "logs", + "run.log", + ); + + expect(formatDisplayPath(nestedPath)).toBe("~/.dataconnect/logs/run.log"); + }); + + it("leaves non-home paths unchanged", () => { + expect(formatDisplayPath("/tmp/vana-connect.log")).toBe( + "/tmp/vana-connect.log", + ); + }); +}); diff --git a/test/core/state-store.test.ts b/test/core/state-store.test.ts new file mode 100644 index 00000000..7e14ddf4 --- /dev/null +++ b/test/core/state-store.test.ts @@ -0,0 +1,85 @@ +import fs from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; + +let tempRoot = path.join(os.tmpdir(), "vana-connect-state-store-tests"); + +vi.mock("../../src/core/paths.js", () => ({ + getCliStatePath: () => path.join(tempRoot, "vana-connect-state.json"), + getDataConnectHome: () => tempRoot, +})); + +import { + __setStateStoreTestHooks, + readCliState, + updateSourceState, +} from "../../src/core/state-store.js"; + +describe("state-store", () => { + beforeEach(async () => { + tempRoot = await fs.mkdtemp( + path.join(os.tmpdir(), "vana-connect-state-store-"), + ); + __setStateStoreTestHooks(undefined); + }); + + afterEach(async () => { + __setStateStoreTestHooks(undefined); + await fs.rm(tempRoot, { recursive: true, force: true }); + }); + + it("preserves concurrent source updates", async () => { + __setStateStoreTestHooks({ + beforeWrite: async () => { + await new Promise((resolve) => setTimeout(resolve, 50)); + }, + }); + + await Promise.all([ + updateSourceState("github", { + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + }), + updateSourceState("shop", { + lastRunOutcome: "legacy_auth", + dataState: "none", + }), + ]); + + await expect(readCliState()).resolves.toEqual({ + version: 1, + sources: { + github: { + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + }, + shop: { + lastRunOutcome: "legacy_auth", + dataState: "none", + }, + }, + }); + }); + + it("recovers from a stale state lock file", async () => { + const lockPath = path.join(tempRoot, "vana-connect-state.json.lock"); + await fs.writeFile(lockPath, "stale\n", "utf8"); + const staleTime = new Date(Date.now() - 60_000); + await fs.utimes(lockPath, staleTime, staleTime); + + await updateSourceState("github", { + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + }); + + await expect(readCliState()).resolves.toEqual({ + version: 1, + sources: { + github: { + lastRunOutcome: "connected_local_only", + dataState: "collected_local", + }, + }, + }); + }); +}); diff --git a/test/runtime/browser.test.ts b/test/runtime/browser.test.ts new file mode 100644 index 00000000..9b073267 --- /dev/null +++ b/test/runtime/browser.test.ts @@ -0,0 +1,163 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; + +const mockExistsSync = vi.fn(); +const mockReadFileSync = vi.fn(); +const mockWriteFileSync = vi.fn(); +const mockReaddirSync = vi.fn(); +const mockExecFileSync = vi.fn(); + +vi.mock("node:fs", () => ({ + default: { + existsSync: mockExistsSync, + readFileSync: mockReadFileSync, + writeFileSync: mockWriteFileSync, + readdirSync: mockReaddirSync, + }, +})); + +vi.mock("node:child_process", () => ({ + execFileSync: mockExecFileSync, +})); + +describe("importChromeCookies", () => { + const originalPlatform = process.platform; + const originalHome = process.env.HOME; + const originalLocalAppData = process.env.LOCALAPPDATA; + const originalOverride = process.env.VANA_ENABLE_SYSTEM_COOKIE_IMPORT; + + beforeEach(() => { + vi.resetModules(); + vi.clearAllMocks(); + mockReadFileSync.mockReturnValue( + JSON.stringify({ profile: { last_used: "Default" } }), + ); + mockExecFileSync.mockReturnValue(undefined); + }); + + afterEach(() => { + Object.defineProperty(process, "platform", { + configurable: true, + value: originalPlatform, + }); + process.env.HOME = originalHome; + process.env.LOCALAPPDATA = originalLocalAppData; + if (originalOverride === undefined) { + delete process.env.VANA_ENABLE_SYSTEM_COOKIE_IMPORT; + } else { + process.env.VANA_ENABLE_SYSTEM_COOKIE_IMPORT = originalOverride; + } + }); + + it("skips system cookie import on Windows by default", async () => { + Object.defineProperty(process, "platform", { + configurable: true, + value: "win32", + }); + process.env.LOCALAPPDATA = "C:\\Users\\Tim\\AppData\\Local"; + delete process.env.VANA_ENABLE_SYSTEM_COOKIE_IMPORT; + + mockExistsSync.mockReturnValue(true); + + const { importChromeCookies } = + await import("../../src/runtime/playwright/browser.js"); + + importChromeCookies("C:\\profile", "C:\\browser\\chrome.exe"); + + expect(mockExecFileSync).not.toHaveBeenCalled(); + expect(mockWriteFileSync).not.toHaveBeenCalled(); + }); + + it("can invoke sqlite3 on Windows when the explicit override is enabled", async () => { + Object.defineProperty(process, "platform", { + configurable: true, + value: "win32", + }); + process.env.LOCALAPPDATA = "C:\\Users\\Tim\\AppData\\Local"; + process.env.VANA_ENABLE_SYSTEM_COOKIE_IMPORT = "1"; + + mockExistsSync.mockImplementation((target: string) => { + const normalized = target.replace(/\//g, "\\"); + return ( + normalized === "C:\\browser\\chrome.exe" || + normalized === + "C:\\Users\\Tim\\AppData\\Local\\Google\\Chrome\\User Data" || + normalized === + "C:\\Users\\Tim\\AppData\\Local\\Google\\Chrome\\User Data\\Local State" || + normalized === + "C:\\Users\\Tim\\AppData\\Local\\Google\\Chrome\\User Data\\Default" || + normalized === + "C:\\Users\\Tim\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Cookies" || + normalized === "C:\\profile\\Default\\Cookies" + ); + }); + + const { importChromeCookies } = + await import("../../src/runtime/playwright/browser.js"); + + importChromeCookies("C:\\profile", "C:\\browser\\chrome.exe"); + + expect(mockExecFileSync).toHaveBeenCalledTimes(1); + expect(mockExecFileSync).toHaveBeenCalledWith( + "sqlite3", + [ + expect.stringContaining("C:\\profile"), + expect.stringContaining("ATTACH DATABASE"), + ], + { stdio: "ignore" }, + ); + expect(mockWriteFileSync).toHaveBeenCalledWith( + expect.stringContaining("C:\\profile"), + expect.stringContaining("T"), + "utf8", + ); + }); + + it("skips system cookie import on Linux by default", async () => { + Object.defineProperty(process, "platform", { + configurable: true, + value: "linux", + }); + process.env.HOME = "/home/tim"; + + mockExistsSync.mockReturnValue(true); + + const { importChromeCookies } = + await import("../../src/runtime/playwright/browser.js"); + + importChromeCookies("/profile", "/browser/chrome"); + + expect(mockExecFileSync).not.toHaveBeenCalled(); + expect(mockWriteFileSync).not.toHaveBeenCalled(); + }); + + it("swallows sqlite3 failures under the explicit Linux override", async () => { + Object.defineProperty(process, "platform", { + configurable: true, + value: "linux", + }); + process.env.HOME = "/home/tim"; + process.env.VANA_ENABLE_SYSTEM_COOKIE_IMPORT = "1"; + + mockExistsSync.mockImplementation((target: string) => + [ + "/browser/chrome", + "/home/tim/.config/google-chrome", + "/home/tim/.config/google-chrome/Local State", + "/home/tim/.config/google-chrome/Default", + "/home/tim/.config/google-chrome/Default/Cookies", + "/profile/Default/Cookies", + ].includes(target), + ); + mockExecFileSync.mockImplementation(() => { + throw new Error("sqlite3 not found"); + }); + + const { importChromeCookies } = + await import("../../src/runtime/playwright/browser.js"); + + expect(() => + importChromeCookies("/profile", "/browser/chrome"), + ).not.toThrow(); + expect(mockWriteFileSync).not.toHaveBeenCalled(); + }); +}); From ab33661fe6adc6276f549a389cbb705e5b6345fc Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sat, 14 Mar 2026 23:40:58 -0500 Subject: [PATCH 158/249] fix(ci): make vhs rendering tolerant of cold starts --- scripts/render-vhs.mjs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/scripts/render-vhs.mjs b/scripts/render-vhs.mjs index d375a0b5..f47766e0 100644 --- a/scripts/render-vhs.mjs +++ b/scripts/render-vhs.mjs @@ -16,12 +16,13 @@ const linuxSeaBinaryPath = path.join( "vana-linux-x64", "vana", ); +const VHS_DOCKER_IMAGE = "ghcr.io/charmbracelet/vhs:latest"; const tapes = [ "status-and-sources.tape", "data-inspection.tape", "connect-success.tape", ]; -const DEFAULT_TAPE_TIMEOUT_MS = 120_000; +const DEFAULT_TAPE_TIMEOUT_MS = 180_000; function main() { prepareFixtures(); @@ -75,6 +76,7 @@ function resolveRunner({ tempRoot, binDir, connectorsDir }) { )}. Build it first with \`pnpm build:sea -- --artifact-name vana-linux-x64 --platform linux --arch x64 --archive-format tar.gz --binary-name vana\`.`, ); } + ensureDockerImage(VHS_DOCKER_IMAGE); const dockerEnvArgs = [ "-e", @@ -97,7 +99,7 @@ function resolveRunner({ tempRoot, binDir, connectorsDir }) { "-w", repoRoot, ...dockerEnvArgs, - "ghcr.io/charmbracelet/vhs", + VHS_DOCKER_IMAGE, ], }; } @@ -174,6 +176,19 @@ function commandExists(command) { } } +function ensureDockerImage(image) { + try { + execFileSync("docker", ["image", "inspect", image], { + stdio: "ignore", + }); + } catch { + process.stdout.write(`[vhs] pulling ${image}\n`); + execFileSync("docker", ["pull", image], { + stdio: "inherit", + }); + } +} + function resolveDataConnectorsDir() { const fixtureRepo = path.join(fixturesRoot, "demo-data-connectors"); if (fs.existsSync(path.join(fixtureRepo, "registry.json"))) { From 1c4f268324087034200475950e3ff93540b190db Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sun, 15 Mar 2026 07:03:42 -0500 Subject: [PATCH 159/249] fix(cli): preserve version metadata in packaged installs --- scripts/build-sea.mjs | 1 + src/cli/index.ts | 74 ++++++++++++++++++++++++++++++------------ test/cli/index.test.ts | 24 ++++++++++++++ 3 files changed, 79 insertions(+), 20 deletions(-) diff --git a/scripts/build-sea.mjs b/scripts/build-sea.mjs index 8144b8aa..82ccec95 100644 --- a/scripts/build-sea.mjs +++ b/scripts/build-sea.mjs @@ -163,6 +163,7 @@ async function stageAppPayload(outputDir) { ); const appPackage = { name: "@opendatalabs/connect-app", + version: rootPackage.version, private: true, type: "module", dependencies: rootPackage.dependencies, diff --git a/src/cli/index.ts b/src/cli/index.ts index b35bad46..f1785246 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -3041,8 +3041,32 @@ function normalizeArgv(argv: string[]): string[] { } function getCliVersion(): string { - const packageJson = require("../../package.json") as { version?: string }; - return packageJson.version ?? "0.0.0"; + if (process.env.VANA_APP_ROOT) { + try { + const packageJson = JSON.parse( + fs.readFileSync( + path.join(process.env.VANA_APP_ROOT, "package.json"), + "utf8", + ), + ) as { version?: string }; + if (packageJson.version) { + return packageJson.version; + } + } catch { + // Fall through to the repo/dev package metadata. + } + } + + try { + const packageJson = require("../../package.json") as { version?: string }; + if (packageJson.version) { + return packageJson.version; + } + } catch { + // Fall through to the hard default. + } + + return "0.0.0"; } function getCliChannel(version = getCliVersion()): "stable" | "canary" { @@ -3050,24 +3074,34 @@ function getCliChannel(version = getCliVersion()): "stable" | "canary" { } function getCliInstallMethod(execPath = process.execPath): CliInstallMethod { - const normalizedPath = execPath.replace(/\\/g, "/").toLowerCase(); - if (normalizedPath.includes("/cellar/vana/")) { - return "homebrew"; - } - if ( - normalizedPath.includes("/.local/share/vana/") || - normalizedPath.includes("/appdata/local/vana/") - ) { - return "installer"; - } - if ( - normalizedPath.endsWith("/node") || - normalizedPath.endsWith("/node.exe") || - normalizedPath.includes("/.nvm/") || - normalizedPath.includes("/volta/") || - normalizedPath.includes("/pnpm/") - ) { - return "development"; + const candidates = [process.env.VANA_APP_ROOT ?? "", execPath].map((value) => + value.replace(/\\/g, "/").toLowerCase(), + ); + + for (const normalizedPath of candidates) { + if (!normalizedPath) { + continue; + } + if (normalizedPath.includes("/cellar/vana/")) { + return "homebrew"; + } + if ( + normalizedPath.includes("/.local/share/vana/") || + normalizedPath.includes("/appdata/local/vana/") || + normalizedPath.endsWith("/current/app") || + /\/releases\/[^/]+\/app$/.test(normalizedPath) + ) { + return "installer"; + } + if ( + normalizedPath.endsWith("/node") || + normalizedPath.endsWith("/node.exe") || + normalizedPath.includes("/.nvm/") || + normalizedPath.includes("/volta/") || + normalizedPath.includes("/pnpm/") + ) { + return "development"; + } } return "unknown"; } diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 75fcfd1a..0fda2475 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -341,6 +341,30 @@ describe("runCli", () => { }); }); + it("detects installer metadata from VANA_APP_ROOT in json mode", async () => { + const originalAppRoot = process.env.VANA_APP_ROOT; + process.env.VANA_APP_ROOT = "/tmp/vana/current/app"; + + try { + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "version", "--json"]); + const parsed = cliVersionInfoSchema.parse(JSON.parse(stdout)); + + expect(exitCode).toBe(0); + expect(parsed).toEqual({ + cliVersion: "0.8.1", + channel: "stable", + installMethod: "installer", + }); + } finally { + if (originalAppRoot === undefined) { + delete process.env.VANA_APP_ROOT; + } else { + process.env.VANA_APP_ROOT = originalAppRoot; + } + } + }); + it("shows operational commands in top-level help", async () => { const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "--help"]); From f5e24266caf2ae541c26dd59517035e1f9f0330d Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sun, 15 Mar 2026 07:29:32 -0500 Subject: [PATCH 160/249] feat(demo): slow down public vhs tapes --- docs/vhs/connect-success.tape | 4 ++-- docs/vhs/data-inspection.tape | 6 +++--- docs/vhs/status-and-sources.tape | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/vhs/connect-success.tape b/docs/vhs/connect-success.tape index 91a86cec..2e3179d6 100644 --- a/docs/vhs/connect-success.tape +++ b/docs/vhs/connect-success.tape @@ -5,10 +5,10 @@ Set Shell "bash" Set FontSize 16 Set Width 1120 Set Height 680 -Set TypingSpeed 85ms +Set TypingSpeed 130ms Set CursorBlink false Set LoopOffset 45% Type "vana connect github" Enter -Sleep 3800ms +Sleep 5600ms diff --git a/docs/vhs/data-inspection.tape b/docs/vhs/data-inspection.tape index eed13453..5e73a6b9 100644 --- a/docs/vhs/data-inspection.tape +++ b/docs/vhs/data-inspection.tape @@ -5,14 +5,14 @@ Set Shell "bash" Set FontSize 16 Set Width 1120 Set Height 680 -Set TypingSpeed 85ms +Set TypingSpeed 130ms Set CursorBlink false Set LoopOffset 40% Type "vana data list" Enter -Sleep 1700ms +Sleep 2600ms Type "vana data show github" Enter -Sleep 2600ms +Sleep 3800ms diff --git a/docs/vhs/status-and-sources.tape b/docs/vhs/status-and-sources.tape index 0e8305bf..086c7093 100644 --- a/docs/vhs/status-and-sources.tape +++ b/docs/vhs/status-and-sources.tape @@ -5,14 +5,14 @@ Set Shell "bash" Set FontSize 16 Set Width 1120 Set Height 680 -Set TypingSpeed 85ms +Set TypingSpeed 130ms Set CursorBlink false Set LoopOffset 40% Type "vana status" Enter -Sleep 1700ms +Sleep 2600ms Type "vana sources" Enter -Sleep 2600ms +Sleep 3800ms From 13228a8ed16ac3a45846c1898b34597bd26f267f Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sun, 15 Mar 2026 07:35:03 -0500 Subject: [PATCH 161/249] feat(demo): tighten vhs framing --- docs/vhs/connect-success.tape | 6 +++--- docs/vhs/data-inspection.tape | 6 +++--- docs/vhs/status-and-sources.tape | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/vhs/connect-success.tape b/docs/vhs/connect-success.tape index 2e3179d6..4cd0df01 100644 --- a/docs/vhs/connect-success.tape +++ b/docs/vhs/connect-success.tape @@ -2,9 +2,9 @@ Output docs/vhs/connect-success.gif Require vana Set Shell "bash" -Set FontSize 16 -Set Width 1120 -Set Height 680 +Set FontSize 20 +Set Width 960 +Set Height 600 Set TypingSpeed 130ms Set CursorBlink false Set LoopOffset 45% diff --git a/docs/vhs/data-inspection.tape b/docs/vhs/data-inspection.tape index 5e73a6b9..013cc3c9 100644 --- a/docs/vhs/data-inspection.tape +++ b/docs/vhs/data-inspection.tape @@ -2,9 +2,9 @@ Output docs/vhs/data-inspection.gif Require vana Set Shell "bash" -Set FontSize 16 -Set Width 1120 -Set Height 680 +Set FontSize 20 +Set Width 960 +Set Height 600 Set TypingSpeed 130ms Set CursorBlink false Set LoopOffset 40% diff --git a/docs/vhs/status-and-sources.tape b/docs/vhs/status-and-sources.tape index 086c7093..bc2402f0 100644 --- a/docs/vhs/status-and-sources.tape +++ b/docs/vhs/status-and-sources.tape @@ -2,9 +2,9 @@ Output docs/vhs/status-and-sources.gif Require vana Set Shell "bash" -Set FontSize 16 -Set Width 1120 -Set Height 680 +Set FontSize 20 +Set Width 960 +Set Height 600 Set TypingSpeed 130ms Set CursorBlink false Set LoopOffset 40% From 4ee166c16c9fd1df620836487b274bb7732db24d Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sun, 15 Mar 2026 08:14:44 -0500 Subject: [PATCH 162/249] feat(demo): show connect payoff in vhs --- docs/CLI-EXECUTION-PLAYBOOK.md | 7 ++++++- docs/vhs/README.md | 4 ++++ docs/vhs/connect-success.tape | 6 +++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/docs/CLI-EXECUTION-PLAYBOOK.md b/docs/CLI-EXECUTION-PLAYBOOK.md index 8dab75c6..59ff72e3 100644 --- a/docs/CLI-EXECUTION-PLAYBOOK.md +++ b/docs/CLI-EXECUTION-PLAYBOOK.md @@ -231,6 +231,8 @@ Do not start deep beauty work before this is externally proven. - the human CLI should feel truthful after success - the README should be able to show a real successful connect flow +- the public `connect` demo should end on visible payoff, not just progress + output or fallback guidance - `status`, `data`, and success summaries should agree with each other ### Work items @@ -242,7 +244,10 @@ Do not start deep beauty work before this is externally proven. - a demo connector fixture under the fixture home 2. Add a README-quality successful connect tape. - Likely files: + It should show a short success story, not just connector mechanics: + - `vana connect github` + - `vana data show github` + Likely files: - `docs/vhs/*.tape` - `README.md` - `docs/vhs/README.md` diff --git a/docs/vhs/README.md b/docs/vhs/README.md index a41e1b23..5e44944f 100644 --- a/docs/vhs/README.md +++ b/docs/vhs/README.md @@ -37,6 +37,10 @@ That creates: - `data-inspection.tape` - `connect-success.tape` +The public `connect-success` tape should end on user value, not only progress +output. In practice that means a successful `vana connect github` run followed +by `vana data show github`. + ## Rendering The preferred renderer is `vhs` from Charm. diff --git a/docs/vhs/connect-success.tape b/docs/vhs/connect-success.tape index 4cd0df01..f90079c7 100644 --- a/docs/vhs/connect-success.tape +++ b/docs/vhs/connect-success.tape @@ -11,4 +11,8 @@ Set LoopOffset 45% Type "vana connect github" Enter -Sleep 5600ms +Sleep 4200ms + +Type "vana data show github" +Enter +Sleep 3800ms From 38ea4e78f39309a2df7398ff0b8e16c4e29a727c Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sun, 15 Mar 2026 08:28:58 -0500 Subject: [PATCH 163/249] feat(cli): add dataset previews to summaries --- docs/transcripts/connect-github-success.txt | 1 + docs/transcripts/data-list.txt | 2 ++ docs/transcripts/data-show-github.txt | 1 + src/cli/index.ts | 35 +++++++++++++++++++++ test/cli/index.test.ts | 9 +++++- 5 files changed, 47 insertions(+), 1 deletion(-) diff --git a/docs/transcripts/connect-github-success.txt b/docs/transcripts/connect-github-success.txt index 3c390930..5938a499 100644 --- a/docs/transcripts/connect-github-success.txt +++ b/docs/transcripts/connect-github-success.txt @@ -21,6 +21,7 @@ Collecting your data... → Collected • Profile: tnunamak • Repositories: 2 + • Latest repos: vana-connect, data-connectors • Starred: 0 → Saved locally diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt index c3e5b662..1fde9506 100644 --- a/docs/transcripts/data-list.txt +++ b/docs/transcripts/data-list.txt @@ -5,6 +5,7 @@ Dataset (2) • Local only (2) • Synced (0) GitHub [local] Profile: tnunamak Repositories: 2 + Latest repos: vana-connect, data-connectors Starred: 0 State: Saved locally Updated: Mar 14, 2026, 8:10 AM @@ -13,6 +14,7 @@ GitHub [local] Spotify [local] Profile: tnunamak Playlists: 2 + Playlists: Data Portability, Build Flow State: Saved locally Updated: Mar 13, 2026, 4:23 PM Path: ~/.dataconnect/spotify-result.json diff --git a/docs/transcripts/data-show-github.txt b/docs/transcripts/data-show-github.txt index d3ff5bb9..6a8962a0 100644 --- a/docs/transcripts/data-show-github.txt +++ b/docs/transcripts/data-show-github.txt @@ -3,6 +3,7 @@ GitHub data → Summary • Profile: tnunamak • Repositories: 2 + • Latest repos: vana-connect, data-connectors • Starred: 0 Path: ~/.dataconnect/last-result.json diff --git a/src/cli/index.ts b/src/cli/index.ts index f1785246..6d7ad51c 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -3457,6 +3457,10 @@ function summarizeResultData( if (Array.isArray(data.repositories)) { lines.push(`Repositories: ${data.repositories.length}`); + const preview = summarizeNamedItems(data.repositories, "Latest repos"); + if (preview) { + lines.push(preview); + } } if (Array.isArray(data.starred)) { @@ -3469,6 +3473,10 @@ function summarizeResultData( if (Array.isArray(data.playlists)) { lines.push(`Playlists: ${data.playlists.length}`); + const preview = summarizeNamedItems(data.playlists, "Playlists"); + if (preview) { + lines.push(preview); + } } if ( @@ -3486,6 +3494,33 @@ function summarizeResultData( return lines.length > 0 ? { lines } : null; } +function summarizeNamedItems( + items: unknown[], + label: string, + maxItems = 2, +): string | null { + const names = items + .map((item) => { + if ( + typeof item === "object" && + item && + "name" in item && + typeof (item as { name?: unknown }).name === "string" + ) { + return (item as { name: string }).name; + } + return null; + }) + .filter((value): value is string => Boolean(value)) + .slice(0, maxItems); + + if (names.length === 0) { + return null; + } + + return `${label}: ${names.join(", ")}`; +} + function formatTimestamp(value: string): string { const date = new Date(value); if (Number.isNaN(date.getTime())) { diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index 0fda2475..dd65fabb 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -1056,7 +1056,11 @@ describe("runCli", () => { name: "GitHub", path: "/tmp/.dataconnect/github-result.json", summary: { - lines: ["Profile: tnunamak", "Repositories: 1"], + lines: [ + "Profile: tnunamak", + "Repositories: 1", + "Latest repos: vana-connect", + ], }, lastRunAt: "2026-03-14T13:10:03.677Z", dataState: "collected_local", @@ -1112,6 +1116,7 @@ describe("runCli", () => { → Summary • Profile: tnunamak • Repositories: 2 + • Latest repos: vana-connect, data-connectors • Starred: 0 Path: /tmp/.dataconnect/github-result.json @@ -1337,6 +1342,7 @@ describe("runCli", () => { GitHub [local] Profile: tnunamak Repositories: 2 + Latest repos: vana-connect, data-connect Starred: 0 State: Saved locally Updated: @@ -1345,6 +1351,7 @@ describe("runCli", () => { Spotify [local] Profile: tnunamak Playlists: 2 + Playlists: Focus, Deep Work State: Saved locally Updated: Path: /tmp/.dataconnect/spotify-result.json From c97e45bbbcaae11a34c7c9ac9be7b049f4980bd8 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sun, 15 Mar 2026 08:51:02 -0500 Subject: [PATCH 164/249] docs(cli): add consolidated review surface --- README.md | 4 + docs/CLI-REVIEW-SURFACE.md | 216 +++++++++++++++++++++++++++++++++++++ docs/transcripts/README.md | 3 + 3 files changed, 223 insertions(+) create mode 100644 docs/CLI-REVIEW-SURFACE.md diff --git a/README.md b/README.md index ef1419fc..3ef74e9e 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect- [`status-and-sources.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif), [`data-inspection.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif), [`connect-success.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) + (`connect github`, then inspect the collected GitHub data) Once installed, the best way to evaluate the CLI quickly is: @@ -42,6 +43,8 @@ vana logs github Current reviewable transcripts: +- [CLI review surface](./docs/CLI-REVIEW-SURFACE.md) + - [`status`](./docs/transcripts/status.txt) - [`doctor`](./docs/transcripts/doctor.txt) - [`logs`](./docs/transcripts/logs.txt) @@ -304,6 +307,7 @@ Branch prerelease preview media: - [`status-and-sources.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) - [`data-inspection.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) - [`connect-success.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) + - connects GitHub, then shows the collected dataset summary ![Vana status and sources demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) diff --git a/docs/CLI-REVIEW-SURFACE.md b/docs/CLI-REVIEW-SURFACE.md new file mode 100644 index 00000000..6231a79d --- /dev/null +++ b/docs/CLI-REVIEW-SURFACE.md @@ -0,0 +1,216 @@ +# CLI Review Surface + +This document is the quickest way to review the current `vana` CLI as a +product. + +Use it when you want to answer: + +- what commands exist? +- what should a human see? +- what should automation see? +- which transcript or demo should I open? +- which acceptance commands should I run first? + +## Core Command Tree + +Top level: + +- `vana` +- `vana --help` +- `vana --version` +- `vana version` +- `vana status` +- `vana doctor` +- `vana sources` +- `vana connect` +- `vana connect ` +- `vana data` +- `vana data list` +- `vana data show ` +- `vana data path ` +- `vana logs` +- `vana logs ` +- `vana setup` + +JSON / agent-safe surfaces: + +- `vana version --json` +- `vana status --json` +- `vana doctor --json` +- `vana sources --json` +- `vana data list --json` +- `vana data show --json` +- `vana data path --json` +- `vana logs --json` +- `vana logs --json` +- `vana connect --json --no-input` + +## Review Order + +If you only have a few minutes, review in this order: + +1. [help.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/help.txt) +2. [doctor.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/doctor.txt) +3. [status.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/status.txt) +4. [sources.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/sources.txt) +5. [connect-github-success.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-github-success.txt) +6. [data-show-github.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-show-github.txt) +7. [logs.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/logs.txt) + +That sequence covers: + +- first impression +- trust and diagnostics +- source discovery +- successful collection +- post-success payoff +- operator/debug follow-through + +## Human Review Surfaces + +Foundational: + +- `vana` + - [help.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/help.txt) +- `vana data` + - [data-help.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-help.txt) +- `vana setup` + - [setup.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/setup.txt) + +State and diagnostics: + +- `vana status` + - [status.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/status.txt) +- `vana doctor` + - [doctor.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/doctor.txt) +- `vana logs` + - [logs.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/logs.txt) + +Discovery: + +- `vana sources` + - [sources.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/sources.txt) + +Post-success data surfaces: + +- `vana data list` + - [data-list.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-list.txt) +- `vana data list` on a clean machine + - [data-list-empty.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-list-empty.txt) +- `vana data show github` + - [data-show-github.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-show-github.txt) +- `vana data show github` when missing + - [data-show-github-missing.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-show-github-missing.txt) +- `vana data path github` + - [data-path-github.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-path-github.txt) + +Connect flows: + +- successful interactive path + - [connect-github-success.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-github-success.txt) +- interactive-required / machine-safe path + - [connect-github-no-input.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-github-no-input.txt) +- session reuse attempt in machine-safe path + - [connect-github-session-reuse-no-input.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-github-session-reuse-no-input.txt) +- legacy/manual interactive path + - [connect-shop.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-shop.txt) +- legacy/manual no-input path + - [connect-shop-no-input.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-shop-no-input.txt) +- unavailable connector interactive path + - [connect-steam.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-steam.txt) +- unavailable connector no-input path + - [connect-steam-no-input.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-steam-no-input.txt) + +## Demo Media + +Current published canary demo assets: + +- [status-and-sources.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) +- [data-inspection.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) +- [connect-success.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) + +What each demo should prove: + +- `status-and-sources.gif` + - first impression + - runtime clarity + - source maturity and recommendation quality +- `data-inspection.gif` + - post-success payoff + - useful summaries, not raw dumps +- `connect-success.gif` + - success journey + - clear end state + - visible value after connection + +## Machine Review Surfaces + +Use these when reviewing shell composability and agent behavior: + +- `vana version --json` +- `vana status --json` +- `vana doctor --json` +- `vana sources --json` +- `vana data list --json` +- `vana data show github --json` +- `vana data path github --json` +- `vana logs --json` +- `vana connect github --json --no-input` +- `vana connect shop --json --no-input` + +Related contract docs: + +- [CLI-EXIT-CODE-MATRIX.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-EXIT-CODE-MATRIX.md) +- [CLI-EXECUTION-PLAYBOOK.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-EXECUTION-PLAYBOOK.md) + +## Acceptance Commands + +Fast local review: + +```bash +pnpm preflight:cli +pnpm demo:transcripts +``` + +Fast human CLI spot-check: + +```bash +vana --version +vana doctor +vana status +vana sources +vana connect github +vana data show github +vana logs github +``` + +Fast machine CLI spot-check: + +```bash +vana version --json | jq +vana status --json | jq +vana sources --json | jq '.summary, .recommendedSource' +vana data show github --json | jq '.summary, .data.profile' +vana connect github --json --no-input +``` + +## Regeneration + +Refresh transcripts: + +```bash +pnpm demo:vhs:fixtures +pnpm demo:transcripts +``` + +Render demo media: + +```bash +pnpm demo:vhs +``` + +Watch the deployed canary lane: + +```bash +pnpm release:watch +``` diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md index 3a9fd542..e70fd8c8 100644 --- a/docs/transcripts/README.md +++ b/docs/transcripts/README.md @@ -5,6 +5,9 @@ These files are generated review artifacts for the human-mode CLI. They are not a replacement for tests. They exist to make visual and copy review faster between release pushes. +For a single index of the whole CLI review surface, use +[CLI-REVIEW-SURFACE.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-REVIEW-SURFACE.md). + Refresh them with: ```bash From 9dbbab4750c93db0544854456be86e0502b442bc Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sun, 15 Mar 2026 08:52:39 -0500 Subject: [PATCH 165/249] docs(cli): add dedicated cli readme --- README.md | 4 + docs/CLI-README.md | 193 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 197 insertions(+) create mode 100644 docs/CLI-README.md diff --git a/README.md b/README.md index 3ef74e9e..49fe1aed 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ Let your users bring their own data to your app. This branch also carries the new `vana` collection CLI preview. +For the dedicated CLI README, use [docs/CLI-README.md](./docs/CLI-README.md). + - install the current canary on macOS with Homebrew: ```bash @@ -138,6 +140,8 @@ If you prefer to integrate the SDK into an existing project, follow the steps be `vana-connect` now also ships a local collection CLI for connector setup and data export flows. +If you only care about the CLI, start with [docs/CLI-README.md](./docs/CLI-README.md). + ### Install If you are evaluating this branch before it lands on `main`, use the prerelease path in the next section. The stable install commands below are the intended post-merge install path. diff --git a/docs/CLI-README.md b/docs/CLI-README.md new file mode 100644 index 00000000..8dc2ed74 --- /dev/null +++ b/docs/CLI-README.md @@ -0,0 +1,193 @@ +# Vana CLI + +`vana` is the local collection CLI for connector setup, browser automation, and +dataset inspection. + +Use this README when you want the CLI itself, not the SDK. + +## Install + +If you are evaluating the current branch rollout, use the prerelease path. + +macOS with Homebrew: + +```bash +brew tap vana-com/vana +brew install vana +``` + +macOS and Linux hosted installer: + +```bash +curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.sh | sh -s -- --version canary-feat-connect-cli-v1 +``` + +Windows PowerShell hosted installer: + +```powershell +& ([scriptblock]::Create((iwr https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.ps1 -useb).Content)) --version canary-feat-connect-cli-v1 +``` + +Current prerelease tag: + +`canary-feat-connect-cli-v1` + +Release page: + +`https://github.com/vana-com/vana-connect/releases/tag/canary-feat-connect-cli-v1` + +## Start Here + +```bash +vana --version +vana doctor +vana status +vana sources +vana connect github +vana data list +vana data show github +vana logs github +``` + +## Command Surface + +Core commands: + +```bash +vana --version +vana version +vana doctor +vana logs +vana connect +vana sources +vana connect github +vana connect github --json --no-input +vana status +vana setup +vana data list +vana data path github --json +vana data show github --json | jq '.summary.lines' +``` + +Behavior: + +- `vana connect` opens a guided source picker in human mode. +- `vana connect ` runs the end-to-end collection flow. +- `vana connect --json --no-input` is the strict machine-safe path. +- `vana sources` surfaces readiness and recommends the best next source. +- `vana doctor` inspects install, runtime, and local state health. +- `vana logs` exposes the stored connector run logs. +- `vana data ...` lets you inspect collected datasets without opening raw JSON. + +## Shell Contract + +- `--json` writes machine-readable output to stdout without human narration. +- successful completion returns exit code `0` +- actionable non-success outcomes return exit code `1` +- `vana doctor --json` includes install method, channel, and lifecycle commands + +See the full contract in +[CLI-EXIT-CODE-MATRIX.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-EXIT-CODE-MATRIX.md). + +## Shell Examples + +```bash +vana status --json | jq '.summary' +vana sources --json | jq '.summary, .recommendedSource' +vana data list --json | jq '.datasets[] | {source, dataState, path}' +vana data show github --json | jq '.summary, .data.profile' +vana logs --json | jq '.logs[] | {source, path}' +vana doctor --json | jq '.paths.executable, .lifecycle' +``` + +## Upgrade And Uninstall + +Check the exact lifecycle commands for your install with: + +```bash +vana doctor +``` + +Typical upgrades: + +- Homebrew: + ```bash + brew update + brew upgrade vana + ``` +- macOS/Linux installer: + ```bash + curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/main/install/install.sh | sh + ``` +- Windows installer: + ```powershell + iwr https://raw.githubusercontent.com/vana-com/vana-connect/main/install/install.ps1 -useb | iex + ``` + +Typical removal: + +- Homebrew: + ```bash + brew uninstall vana + ``` +- macOS/Linux installer: + ```bash + rm -f ~/.local/bin/vana + rm -rf ~/.local/share/vana + ``` +- Windows installer: + - remove `%USERPROFILE%\\AppData\\Local\\Microsoft\\WinGet\\Links\\vana.cmd` + - remove `%USERPROFILE%\\AppData\\Local\\Vana` + +To remove local runtime and collected state too: + +```bash +rm -rf ~/.dataconnect +``` + +## Demo And Review Surfaces + +Published demo media: + +- [status-and-sources.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) +- [data-inspection.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) +- [connect-success.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) + +Best review index: + +- [CLI-REVIEW-SURFACE.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-REVIEW-SURFACE.md) + +Transcript directory: + +- [docs/transcripts/README.md](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/README.md) + +VHS directory: + +- [docs/vhs/README.md](/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/README.md) + +## Local Development + +```bash +pnpm install +pnpm build +node dist/cli/bin.js status +``` + +Refresh local review artifacts: + +```bash +pnpm demo:vhs:fixtures +pnpm demo:transcripts +``` + +Render demo media once `vhs` or Docker is available: + +```bash +pnpm demo:vhs +``` + +Watch the release lane and canary publication: + +```bash +pnpm release:watch +``` From 77d83e169fc22415ca16df39f4139122cfad9dbc Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sun, 15 Mar 2026 09:18:46 -0500 Subject: [PATCH 166/249] fix(cli): detect canary installer channel --- src/cli/index.ts | 14 +++++++++++++- test/cli/index.test.ts | 25 +++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/cli/index.ts b/src/cli/index.ts index 6d7ad51c..26242f9b 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -3070,7 +3070,19 @@ function getCliVersion(): string { } function getCliChannel(version = getCliVersion()): "stable" | "canary" { - return version.includes("canary") ? "canary" : "stable"; + if (version.includes("canary")) { + return "canary"; + } + + const candidates = [process.env.VANA_APP_ROOT ?? "", process.execPath].map( + (value) => value.replace(/\\/g, "/").toLowerCase(), + ); + + return candidates.some((normalizedPath) => + /\/releases\/canary-[^/]+(?:\/app)?$/.test(normalizedPath), + ) + ? "canary" + : "stable"; } function getCliInstallMethod(execPath = process.execPath): CliInstallMethod { diff --git a/test/cli/index.test.ts b/test/cli/index.test.ts index dd65fabb..5188efaf 100644 --- a/test/cli/index.test.ts +++ b/test/cli/index.test.ts @@ -365,6 +365,31 @@ describe("runCli", () => { } }); + it("detects canary channel from installer release path in json mode", async () => { + const originalAppRoot = process.env.VANA_APP_ROOT; + process.env.VANA_APP_ROOT = + "/tmp/vana/releases/canary-feat-connect-cli-v1/app"; + + try { + const { runCli } = await import("../../src/cli/index.js"); + const exitCode = await runCli(["node", "vana", "version", "--json"]); + const parsed = cliVersionInfoSchema.parse(JSON.parse(stdout)); + + expect(exitCode).toBe(0); + expect(parsed).toEqual({ + cliVersion: "0.8.1", + channel: "canary", + installMethod: "installer", + }); + } finally { + if (originalAppRoot === undefined) { + delete process.env.VANA_APP_ROOT; + } else { + process.env.VANA_APP_ROOT = originalAppRoot; + } + } + }); + it("shows operational commands in top-level help", async () => { const { runCli } = await import("../../src/cli/index.js"); const exitCode = await runCli(["node", "vana", "--help"]); From 24db4efb8c98fd26187f9108b757458714086ba9 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sun, 15 Mar 2026 09:21:30 -0500 Subject: [PATCH 167/249] docs(cli): tighten cli readme and sdk links --- README.md | 286 +++------------------------------------------ docs/CLI-README.md | 110 +++++++++-------- 2 files changed, 71 insertions(+), 325 deletions(-) diff --git a/README.md b/README.md index 49fe1aed..b53fd9c8 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,12 @@ Let your users bring their own data to your app. This branch also carries the new `vana` collection CLI preview. -For the dedicated CLI README, use [docs/CLI-README.md](./docs/CLI-README.md). +Start with the dedicated CLI README: -- install the current canary on macOS with Homebrew: +- [CLI README](./docs/CLI-README.md) +- [CLI review surface](./docs/CLI-REVIEW-SURFACE.md) + +Install the current canary on macOS with Homebrew: ```bash brew tap vana-com/vana @@ -16,19 +19,15 @@ brew install vana vana status ``` -- or use the hosted prerelease installer on macOS/Linux: +Or use the hosted prerelease installer on macOS/Linux: ```bash curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.sh | sh -s -- --version canary-feat-connect-cli-v1 ``` -- branch release page: - `https://github.com/vana-com/vana-connect/releases/tag/canary-feat-connect-cli-v1` -- demo media: - [`status-and-sources.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif), - [`data-inspection.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif), - [`connect-success.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) - (`connect github`, then inspect the collected GitHub data) +Branch prerelease: + +- `https://github.com/vana-com/vana-connect/releases/tag/canary-feat-connect-cli-v1` Once installed, the best way to evaluate the CLI quickly is: @@ -43,28 +42,13 @@ vana data show github vana logs github ``` -Current reviewable transcripts: +Key demo media: -- [CLI review surface](./docs/CLI-REVIEW-SURFACE.md) +![Vana status and sources demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) + +![Vana data inspection demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) -- [`status`](./docs/transcripts/status.txt) -- [`doctor`](./docs/transcripts/doctor.txt) -- [`logs`](./docs/transcripts/logs.txt) -- [`setup`](./docs/transcripts/setup.txt) -- [`sources`](./docs/transcripts/sources.txt) -- [`data list`](./docs/transcripts/data-list.txt) -- [`data help`](./docs/transcripts/data-help.txt) -- [`data list (empty)`](./docs/transcripts/data-list-empty.txt) -- [`data show github`](./docs/transcripts/data-show-github.txt) -- [`data show github (missing)`](./docs/transcripts/data-show-github-missing.txt) -- [`data path github`](./docs/transcripts/data-path-github.txt) -- [`connect github`](./docs/transcripts/connect-github-success.txt) -- [`connect github --no-input`](./docs/transcripts/connect-github-no-input.txt) -- [`connect github session reuse --no-input`](./docs/transcripts/connect-github-session-reuse-no-input.txt) -- [`connect shop`](./docs/transcripts/connect-shop.txt) -- [`connect shop --no-input`](./docs/transcripts/connect-shop-no-input.txt) -- [`connect steam`](./docs/transcripts/connect-steam.txt) -- [`connect steam --no-input`](./docs/transcripts/connect-steam-no-input.txt) +![Vana successful connect demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) ## What problem this solves @@ -142,245 +126,11 @@ If you prefer to integrate the SDK into an existing project, follow the steps be If you only care about the CLI, start with [docs/CLI-README.md](./docs/CLI-README.md). -### Install - -If you are evaluating this branch before it lands on `main`, use the prerelease path in the next section. The stable install commands below are the intended post-merge install path. - -macOS with Homebrew: - -```bash -brew tap vana-com/vana -brew install vana -``` +For the full CLI review surface, use: -macOS and Linux: - -```bash -curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/main/install/install.sh | sh -``` - -Windows PowerShell: - -```powershell -iwr https://raw.githubusercontent.com/vana-com/vana-connect/main/install/install.ps1 -useb | iex -``` - -Both installers fetch the latest GitHub release asset for your platform, verify its checksum, and install `vana` without requiring Node or npm. - -### Canary / prerelease testing - -If you are testing an unreleased branch build, install from the branch installer and pass the prerelease tag explicitly. - -macOS with Homebrew: - -```bash -brew tap vana-com/vana -brew install vana -``` - -The current Homebrew tap is following the latest `vana-connect` canary while this CLI is still rolling out. - -macOS and Linux: - -```bash -curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.sh | sh -s -- --version canary-feat-connect-cli-v1 -``` - -Windows PowerShell: - -```powershell -& ([scriptblock]::Create((iwr https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.ps1 -useb).Content)) --version canary-feat-connect-cli-v1 -``` - -The current hosted prerelease is: - -`canary-feat-connect-cli-v1` - -Release page: - -`https://github.com/vana-com/vana-connect/releases/tag/canary-feat-connect-cli-v1` - -If you want the npm package path as a fallback: - -```bash -npx -y @opendatalabs/connect status -``` - -### Commands - -```bash -vana --version -vana version -vana doctor -vana logs -vana connect -vana sources -vana connect github -vana connect github --json --no-input -vana status -vana setup -vana data list -vana data path github --json -vana data show github --json | jq '.summary.lines' -``` - -- `vana connect` opens a guided source picker in human mode. -- `vana connect ` runs the end-to-end collection flow. -- `vana connect --json --no-input` is the strict machine-safe path for agents and shell automation. -- `vana sources` groups sources into ready-now vs manual-step flows. -- `vana status` prioritizes sources that need attention before already-connected sources. -- `vana doctor` checks the local install, browser runtime, and state directories. -- `vana logs` lets you inspect the latest stored connector run logs without hunting through `~/.dataconnect/logs`. -- `vana data ...` lets you inspect collected local datasets without opening the raw JSON file yourself. - -### Shell contract - -- `--json` mode writes machine-readable output to stdout without human narration. -- Successful command completion returns exit code `0`. -- Actionable failures like missing source selection, unavailable connectors, or disabled prompting return exit code `1`. -- `vana --version`, `vana version`, and `vana --help` return exit code `0`. -- `vana doctor --json` includes `installMethod`, `channel`, and upgrade/uninstall commands so scripts can surface the right lifecycle guidance. - -### Shell examples - -```bash -vana status --json | jq '.channel, .installMethod, .summary | {connectedCount, localCount, syncedCount}' -vana sources --json | jq '.summary, .recommendedSource' -vana data list --json | jq '.summary, .datasets[] | {source, dataState, path}' -vana logs --json | jq '.latestLog, .logs[] | {source, path}' -vana doctor --json | jq '.paths.executable, .paths.dataHome, .lifecycle' -``` - -### Upgrade, channels, and uninstall - -Upgrade with the same channel you installed from: - -You can always confirm the current install method and exact lifecycle commands with: - -```bash -vana doctor -``` - -- Homebrew: - ```bash - brew update - brew upgrade vana - ``` -- macOS/Linux installer: - ```bash - curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/main/install/install.sh | sh - ``` -- Windows PowerShell installer: - ```powershell - iwr https://raw.githubusercontent.com/vana-com/vana-connect/main/install/install.ps1 -useb | iex - ``` - -Current channels: - -- `stable`: install from `main` or the eventual stable Homebrew tap state -- `canary`: install from the latest prerelease assets while this CLI is still rolling out - -To remove the installed CLI: - -- Homebrew: - ```bash - brew uninstall vana - ``` -- macOS/Linux installer: - ```bash - rm -f ~/.local/bin/vana - rm -rf ~/.local/share/vana - ``` -- Windows PowerShell installer: - - remove `%USERPROFILE%\AppData\Local\Microsoft\WinGet\Links\vana.cmd` - - remove `%USERPROFILE%\AppData\Local\Vana` - -To remove local runtime and collected state as well: - -```bash -rm -rf ~/.dataconnect -``` - -### CLI demos - -The branch also includes deterministic VHS demo scaffolding under -[`docs/vhs/`](./docs/vhs/README.md). - -Branch prerelease preview media: - -- [`status-and-sources.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) -- [`data-inspection.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) -- [`connect-success.gif`](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) - - connects GitHub, then shows the collected dataset summary - -![Vana status and sources demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) - -![Vana data inspection demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) - -![Vana successful connect demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) - -Current reviewable transcripts: - -- [`status`](./docs/transcripts/status.txt) -- [`doctor`](./docs/transcripts/doctor.txt) -- [`logs`](./docs/transcripts/logs.txt) -- [`setup`](./docs/transcripts/setup.txt) -- [`sources`](./docs/transcripts/sources.txt) -- [`data list`](./docs/transcripts/data-list.txt) -- [`data list (empty)`](./docs/transcripts/data-list-empty.txt) -- [`data show github`](./docs/transcripts/data-show-github.txt) -- [`data show github (missing)`](./docs/transcripts/data-show-github-missing.txt) -- [`data path github`](./docs/transcripts/data-path-github.txt) -- [`connect github`](./docs/transcripts/connect-github-success.txt) -- [`connect github --no-input`](./docs/transcripts/connect-github-no-input.txt) -- [`connect shop --no-input`](./docs/transcripts/connect-shop-no-input.txt) -- [`connect steam --no-input`](./docs/transcripts/connect-steam-no-input.txt) - -To seed the fixture home used by the first tapes: - -```bash -pnpm demo:vhs:fixtures -``` - -To render the checked-in tapes once `vhs` or Docker is available: - -```bash -pnpm demo:vhs -``` - -To capture deterministic human-mode transcripts for review: - -```bash -pnpm demo:transcripts -``` - -To watch the branch release lane, trigger Homebrew sync, and verify the -published installer automatically: - -```bash -pnpm release:watch -``` - -### Local development - -From this repo: - -```bash -pnpm install -pnpm build -node dist/cli/bin.js status -``` - -The CLI installs its local browser runtime under `~/.dataconnect/`. -That runtime is bundled from `vana-connect` itself, so `vana setup` does not require a separate `data-connect` checkout. - -To build a standalone launcher plus app payload locally: - -```bash -pnpm build -pnpm build:sea -./artifacts/sea/vana-linux-x64/vana status --json -``` +- [CLI review surface](./docs/CLI-REVIEW-SURFACE.md) +- [CLI transcripts](./docs/transcripts/README.md) +- [CLI demos](./docs/vhs/README.md) `pnpm build:sea` uses Node 25's `--build-sea` flow to create a small `vana` launcher and packages the real app payload next to it under `app/`. It produces a platform-specific release directory plus a release archive and matching checksum file under `artifacts/sea/`. diff --git a/docs/CLI-README.md b/docs/CLI-README.md index 8dc2ed74..fb3efd2a 100644 --- a/docs/CLI-README.md +++ b/docs/CLI-README.md @@ -3,11 +3,14 @@ `vana` is the local collection CLI for connector setup, browser automation, and dataset inspection. -Use this README when you want the CLI itself, not the SDK. +This page is the CLI-first entrypoint. Use it instead of the SDK README when +you want to install, try, or review the CLI itself. ## Install -If you are evaluating the current branch rollout, use the prerelease path. +Current branch prerelease tag: + +`canary-feat-connect-cli-v1` macOS with Homebrew: @@ -28,10 +31,6 @@ Windows PowerShell hosted installer: & ([scriptblock]::Create((iwr https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.ps1 -useb).Content)) --version canary-feat-connect-cli-v1 ``` -Current prerelease tag: - -`canary-feat-connect-cli-v1` - Release page: `https://github.com/vana-com/vana-connect/releases/tag/canary-feat-connect-cli-v1` @@ -44,61 +43,78 @@ vana doctor vana status vana sources vana connect github -vana data list vana data show github vana logs github ``` -## Command Surface +What to expect: + +- `vana connect` opens a guided source picker in human mode. +- `vana connect ` runs the end-to-end collection flow. +- `vana connect --json --no-input` is the strict machine-safe path. +- `vana doctor` inspects install, runtime, and local state health. +- `vana data ...` inspects collected datasets without opening raw JSON. +- `vana logs` exposes stored connector run logs. + +## Demo + +The current prerelease demos are published from CI: -Core commands: +![Vana status and sources demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) + +![Vana data inspection demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) + +![Vana successful connect demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) + +The `connect` demo is meant to show a short payoff story: + +- connect GitHub +- then inspect the collected dataset + +## Shell Use + +Useful human commands: ```bash -vana --version vana version vana doctor -vana logs -vana connect +vana status vana sources vana connect github -vana connect github --json --no-input -vana status -vana setup vana data list -vana data path github --json -vana data show github --json | jq '.summary.lines' +vana data show github +vana logs github ``` -Behavior: +Useful machine-readable commands: -- `vana connect` opens a guided source picker in human mode. -- `vana connect ` runs the end-to-end collection flow. -- `vana connect --json --no-input` is the strict machine-safe path. -- `vana sources` surfaces readiness and recommends the best next source. -- `vana doctor` inspects install, runtime, and local state health. -- `vana logs` exposes the stored connector run logs. -- `vana data ...` lets you inspect collected datasets without opening raw JSON. +```bash +vana version --json | jq +vana status --json | jq '.summary' +vana sources --json | jq '.summary, .recommendedSource' +vana data show github --json | jq '.summary, .data.profile' +vana connect github --json --no-input +``` -## Shell Contract +Contract notes: - `--json` writes machine-readable output to stdout without human narration. - successful completion returns exit code `0` - actionable non-success outcomes return exit code `1` -- `vana doctor --json` includes install method, channel, and lifecycle commands -See the full contract in +For the full exit-code and shell contract, use [CLI-EXIT-CODE-MATRIX.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-EXIT-CODE-MATRIX.md). -## Shell Examples +## Review Surface -```bash -vana status --json | jq '.summary' -vana sources --json | jq '.summary, .recommendedSource' -vana data list --json | jq '.datasets[] | {source, dataState, path}' -vana data show github --json | jq '.summary, .data.profile' -vana logs --json | jq '.logs[] | {source, path}' -vana doctor --json | jq '.paths.executable, .lifecycle' -``` +If you want to review the CLI systematically, start here: + +- [CLI review surface](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-REVIEW-SURFACE.md) + +Supporting review artifacts: + +- [CLI transcripts](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/README.md) +- [CLI VHS demos](/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/README.md) ## Upgrade And Uninstall @@ -145,26 +161,6 @@ To remove local runtime and collected state too: rm -rf ~/.dataconnect ``` -## Demo And Review Surfaces - -Published demo media: - -- [status-and-sources.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) -- [data-inspection.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) -- [connect-success.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) - -Best review index: - -- [CLI-REVIEW-SURFACE.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-REVIEW-SURFACE.md) - -Transcript directory: - -- [docs/transcripts/README.md](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/README.md) - -VHS directory: - -- [docs/vhs/README.md](/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/README.md) - ## Local Development ```bash From 20b894aa9231e450a4f175b07146a31725446747 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sun, 15 Mar 2026 09:26:47 -0500 Subject: [PATCH 168/249] docs(cli): refine cli product readme --- docs/CLI-README.md | 66 +++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/docs/CLI-README.md b/docs/CLI-README.md index fb3efd2a..149b4101 100644 --- a/docs/CLI-README.md +++ b/docs/CLI-README.md @@ -1,16 +1,13 @@ # Vana CLI +Collect user data locally, inspect it immediately, and keep the flow scriptable. + `vana` is the local collection CLI for connector setup, browser automation, and dataset inspection. -This page is the CLI-first entrypoint. Use it instead of the SDK README when -you want to install, try, or review the CLI itself. - -## Install - -Current branch prerelease tag: +## Start Here -`canary-feat-connect-cli-v1` +Install the current canary: macOS with Homebrew: @@ -19,46 +16,48 @@ brew tap vana-com/vana brew install vana ``` -macOS and Linux hosted installer: +macOS and Linux: ```bash curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.sh | sh -s -- --version canary-feat-connect-cli-v1 ``` -Windows PowerShell hosted installer: +Windows PowerShell: ```powershell & ([scriptblock]::Create((iwr https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.ps1 -useb).Content)) --version canary-feat-connect-cli-v1 ``` -Release page: - -`https://github.com/vana-com/vana-connect/releases/tag/canary-feat-connect-cli-v1` - -## Start Here +Then run: ```bash vana --version vana doctor -vana status -vana sources vana connect github vana data show github -vana logs github ``` -What to expect: +Current prerelease tag: + +`canary-feat-connect-cli-v1` + +Release page: + +`https://github.com/vana-com/vana-connect/releases/tag/canary-feat-connect-cli-v1` + +## What It Feels Like - `vana connect` opens a guided source picker in human mode. -- `vana connect ` runs the end-to-end collection flow. +- `vana connect ` runs the full collection flow. - `vana connect --json --no-input` is the strict machine-safe path. -- `vana doctor` inspects install, runtime, and local state health. +- `vana doctor` checks install, runtime, and local state health. - `vana data ...` inspects collected datasets without opening raw JSON. - `vana logs` exposes stored connector run logs. -## Demo +Credentials stay local to this machine. Successful runs are explicit about +whether data stayed local or synced to a Personal Server. -The current prerelease demos are published from CI: +## Demo ![Vana status and sources demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) @@ -66,14 +65,14 @@ The current prerelease demos are published from CI: ![Vana successful connect demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) -The `connect` demo is meant to show a short payoff story: +The `connect` demo is intentionally a short payoff story: -- connect GitHub -- then inspect the collected dataset +1. connect GitHub +2. inspect the collected dataset -## Shell Use +## Core Commands -Useful human commands: +Human mode: ```bash vana version @@ -86,7 +85,7 @@ vana data show github vana logs github ``` -Useful machine-readable commands: +Machine mode: ```bash vana version --json | jq @@ -96,14 +95,15 @@ vana data show github --json | jq '.summary, .data.profile' vana connect github --json --no-input ``` -Contract notes: +Contract: - `--json` writes machine-readable output to stdout without human narration. - successful completion returns exit code `0` - actionable non-success outcomes return exit code `1` -For the full exit-code and shell contract, use -[CLI-EXIT-CODE-MATRIX.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-EXIT-CODE-MATRIX.md). +Full contract: + +- [CLI exit code matrix](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-EXIT-CODE-MATRIX.md) ## Review Surface @@ -111,12 +111,12 @@ If you want to review the CLI systematically, start here: - [CLI review surface](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-REVIEW-SURFACE.md) -Supporting review artifacts: +Supporting artifacts: - [CLI transcripts](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/README.md) - [CLI VHS demos](/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/README.md) -## Upgrade And Uninstall +## Lifecycle Check the exact lifecycle commands for your install with: From 03023c220e623159c1c43269a105199467483c7f Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sun, 15 Mar 2026 10:12:11 -0500 Subject: [PATCH 169/249] docs(cli): focus readme on hero demo --- docs/CLI-README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/CLI-README.md b/docs/CLI-README.md index 149b4101..5aa08c6b 100644 --- a/docs/CLI-README.md +++ b/docs/CLI-README.md @@ -59,16 +59,17 @@ whether data stayed local or synced to a Personal Server. ## Demo -![Vana status and sources demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) +The hero demo is intentionally a short payoff story: -![Vana data inspection demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) +1. connect GitHub +2. inspect the collected dataset ![Vana successful connect demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) -The `connect` demo is intentionally a short payoff story: +Supporting demos: -1. connect GitHub -2. inspect the collected dataset +- [status-and-sources.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) +- [data-inspection.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) ## Core Commands From 16ee003b19ce3e417872673e6e4336f7051b5e44 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Sun, 15 Mar 2026 23:55:01 -0500 Subject: [PATCH 170/249] docs(cli): consolidate transcripts and render all 19 VHS demos Replace 19 individual transcript .txt files with a single CLI-TRANSCRIPTS.md using marker-based code blocks that the capture script updates in place. Fix cross-repo absolute paths to use GitHub URLs. Create individual VHS tape files for every CLI surface (19 total) with per-command terminal heights, three environment variants (seeded, fresh, seeded-input), and fixture-reset ordering for state-mutating tapes. Update CLI-REVIEW-SURFACE.md with all 19 embedded GIFs organized by category. Co-Authored-By: Claude Opus 4.6 --- docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md | 16 +- docs/CLI-BUILD-PLAN.md | 10 +- docs/CLI-EXECUTION-PLAYBOOK.md | 6 +- docs/CLI-FOUNDATION-ASSESSMENT.md | 38 +- docs/CLI-ONBOARDING-WORKPLAN.md | 2 +- docs/CLI-README.md | 27 +- docs/CLI-REVIEW-SURFACE.md | 191 +++--- docs/CLI-RUNTIME-PORTABILITY-NOTES.md | 12 +- docs/CLI-TRANSCRIPTS.md | 631 ++++++++++++++++++ docs/transcripts/README.md | 38 -- docs/transcripts/connect-github-no-input.txt | 21 - .../connect-github-session-reuse-no-input.txt | 22 - docs/transcripts/connect-github-success.txt | 37 - docs/transcripts/connect-shop-no-input.txt | 21 - docs/transcripts/connect-shop.txt | 18 - docs/transcripts/connect-steam-no-input.txt | 12 - docs/transcripts/connect-steam.txt | 12 - docs/transcripts/data-help.txt | 17 - docs/transcripts/data-list-empty.txt | 7 - docs/transcripts/data-list.txt | 25 - docs/transcripts/data-path-github.txt | 1 - docs/transcripts/data-show-github-missing.txt | 4 - docs/transcripts/data-show-github.txt | 19 - docs/transcripts/doctor.txt | 54 -- docs/transcripts/help.txt | 35 - docs/transcripts/logs.txt | 21 - docs/transcripts/setup.txt | 9 - docs/transcripts/sources.txt | 21 - docs/transcripts/status.txt | 36 - docs/vhs/README.md | 2 +- docs/vhs/connect-github-no-input.gif | Bin 0 -> 29192 bytes docs/vhs/connect-github-no-input.tape | 14 + .../connect-github-session-reuse-no-input.gif | Bin 0 -> 153150 bytes ...connect-github-session-reuse-no-input.tape | 14 + docs/vhs/connect-github-success.gif | Bin 0 -> 313401 bytes docs/vhs/connect-github-success.tape | 14 + docs/vhs/connect-shop-no-input.gif | Bin 0 -> 204753 bytes docs/vhs/connect-shop-no-input.tape | 14 + docs/vhs/connect-shop.gif | Bin 0 -> 126045 bytes docs/vhs/connect-shop.tape | 14 + docs/vhs/connect-steam-no-input.gif | Bin 0 -> 56328 bytes docs/vhs/connect-steam-no-input.tape | 14 + docs/vhs/connect-steam.gif | Bin 0 -> 42612 bytes docs/vhs/connect-steam.tape | 14 + docs/vhs/connect-success.tape | 18 - docs/vhs/data-help.gif | Bin 0 -> 95573 bytes docs/vhs/data-help.tape | 14 + docs/vhs/data-inspection.tape | 18 - docs/vhs/data-list-empty.gif | Bin 0 -> 47659 bytes docs/vhs/data-list-empty.tape | 14 + docs/vhs/data-list.gif | Bin 0 -> 127953 bytes docs/vhs/data-list.tape | 14 + docs/vhs/data-path-github.gif | Bin 0 -> 18952 bytes docs/vhs/data-path-github.tape | 14 + docs/vhs/data-show-github-missing.gif | Bin 0 -> 29694 bytes docs/vhs/data-show-github-missing.tape | 14 + docs/vhs/data-show-github.gif | Bin 0 -> 75170 bytes docs/vhs/data-show-github.tape | 14 + docs/vhs/doctor.gif | Bin 0 -> 380690 bytes docs/vhs/doctor.tape | 14 + .../.dataconnect/vana-connect-state.json | 9 +- docs/vhs/help.gif | Bin 0 -> 215068 bytes docs/vhs/help.tape | 14 + docs/vhs/logs.gif | Bin 0 -> 123476 bytes docs/vhs/logs.tape | 14 + docs/vhs/setup.gif | Bin 0 -> 55903 bytes docs/vhs/setup.tape | 14 + docs/vhs/sources.gif | Bin 0 -> 155985 bytes docs/vhs/sources.tape | 14 + docs/vhs/status-and-sources.tape | 18 - docs/vhs/status.gif | Bin 0 -> 247136 bytes docs/vhs/status.tape | 14 + scripts/capture-cli-transcripts.mjs | 107 ++- scripts/render-vhs.mjs | 169 +++-- 74 files changed, 1210 insertions(+), 760 deletions(-) create mode 100644 docs/CLI-TRANSCRIPTS.md delete mode 100644 docs/transcripts/README.md delete mode 100644 docs/transcripts/connect-github-no-input.txt delete mode 100644 docs/transcripts/connect-github-session-reuse-no-input.txt delete mode 100644 docs/transcripts/connect-github-success.txt delete mode 100644 docs/transcripts/connect-shop-no-input.txt delete mode 100644 docs/transcripts/connect-shop.txt delete mode 100644 docs/transcripts/connect-steam-no-input.txt delete mode 100644 docs/transcripts/connect-steam.txt delete mode 100644 docs/transcripts/data-help.txt delete mode 100644 docs/transcripts/data-list-empty.txt delete mode 100644 docs/transcripts/data-list.txt delete mode 100644 docs/transcripts/data-path-github.txt delete mode 100644 docs/transcripts/data-show-github-missing.txt delete mode 100644 docs/transcripts/data-show-github.txt delete mode 100644 docs/transcripts/doctor.txt delete mode 100644 docs/transcripts/help.txt delete mode 100644 docs/transcripts/logs.txt delete mode 100644 docs/transcripts/setup.txt delete mode 100644 docs/transcripts/sources.txt delete mode 100644 docs/transcripts/status.txt create mode 100644 docs/vhs/connect-github-no-input.gif create mode 100644 docs/vhs/connect-github-no-input.tape create mode 100644 docs/vhs/connect-github-session-reuse-no-input.gif create mode 100644 docs/vhs/connect-github-session-reuse-no-input.tape create mode 100644 docs/vhs/connect-github-success.gif create mode 100644 docs/vhs/connect-github-success.tape create mode 100644 docs/vhs/connect-shop-no-input.gif create mode 100644 docs/vhs/connect-shop-no-input.tape create mode 100644 docs/vhs/connect-shop.gif create mode 100644 docs/vhs/connect-shop.tape create mode 100644 docs/vhs/connect-steam-no-input.gif create mode 100644 docs/vhs/connect-steam-no-input.tape create mode 100644 docs/vhs/connect-steam.gif create mode 100644 docs/vhs/connect-steam.tape delete mode 100644 docs/vhs/connect-success.tape create mode 100644 docs/vhs/data-help.gif create mode 100644 docs/vhs/data-help.tape delete mode 100644 docs/vhs/data-inspection.tape create mode 100644 docs/vhs/data-list-empty.gif create mode 100644 docs/vhs/data-list-empty.tape create mode 100644 docs/vhs/data-list.gif create mode 100644 docs/vhs/data-list.tape create mode 100644 docs/vhs/data-path-github.gif create mode 100644 docs/vhs/data-path-github.tape create mode 100644 docs/vhs/data-show-github-missing.gif create mode 100644 docs/vhs/data-show-github-missing.tape create mode 100644 docs/vhs/data-show-github.gif create mode 100644 docs/vhs/data-show-github.tape create mode 100644 docs/vhs/doctor.gif create mode 100644 docs/vhs/doctor.tape create mode 100644 docs/vhs/help.gif create mode 100644 docs/vhs/help.tape create mode 100644 docs/vhs/logs.gif create mode 100644 docs/vhs/logs.tape create mode 100644 docs/vhs/setup.gif create mode 100644 docs/vhs/setup.tape create mode 100644 docs/vhs/sources.gif create mode 100644 docs/vhs/sources.tape delete mode 100644 docs/vhs/status-and-sources.tape create mode 100644 docs/vhs/status.gif create mode 100644 docs/vhs/status.tape diff --git a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md index a50fe9ea..817e8add 100644 --- a/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md +++ b/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md @@ -17,12 +17,12 @@ the human-facing CLI feel best-in-class while preserving: It should be read together with: -- [CLI-UX-QUALITY-BAR.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-UX-QUALITY-BAR.md) -- [CLI-AUDIENCE-CONTRACT.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-AUDIENCE-CONTRACT.md) -- [CLI-ONBOARDING-COPY.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-ONBOARDING-COPY.md) -- [CLI-UX-SIMULATION.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-UX-SIMULATION.md) -- [CLI-EXECUTION-PLAYBOOK.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-EXECUTION-PLAYBOOK.md) -- [Terminal CLI Beauty Memo](/home/tnunamak/code/data-connectors/skills/vana-connect/docs/cli-beauty-research/terminal-cli-visual-and-emotional-beauty-memo.md) +- [CLI-UX-QUALITY-BAR.md](CLI-UX-QUALITY-BAR.md) +- [CLI-AUDIENCE-CONTRACT.md](CLI-AUDIENCE-CONTRACT.md) +- [CLI-ONBOARDING-COPY.md](CLI-ONBOARDING-COPY.md) +- [CLI-UX-SIMULATION.md](CLI-UX-SIMULATION.md) +- [CLI-EXECUTION-PLAYBOOK.md](CLI-EXECUTION-PLAYBOOK.md) +- Terminal CLI Beauty Memo (data-connectors/skills/vana-connect/docs/cli-beauty-research/terminal-cli-visual-and-emotional-beauty-memo.md) ## Final Recommendation @@ -68,7 +68,7 @@ Beauty work can make the CLI feel premium, but it does not automatically close: Those are tracked explicitly in: -- [CLI-EXECUTION-PLAYBOOK.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-EXECUTION-PLAYBOOK.md) +- [CLI-EXECUTION-PLAYBOOK.md](CLI-EXECUTION-PLAYBOOK.md) under **Batch 8A: Best-In-Class Finish** ## Brand palette anchor @@ -76,7 +76,7 @@ Those are tracked explicitly in: The CLI should not invent its own theme. It should derive its semantic color choices from the shared Vana product palette in: -- [shadcn.css](/home/tnunamak/code/vana-app/packages/ui/src/styles/shadcn.css) +- [shadcn.css](https://github.com/vana-com/vana-app/blob/main/packages/ui/src/styles/shadcn.css) Important tokens in that file: diff --git a/docs/CLI-BUILD-PLAN.md b/docs/CLI-BUILD-PLAN.md index 9bba8913..76b802ff 100644 --- a/docs/CLI-BUILD-PLAN.md +++ b/docs/CLI-BUILD-PLAN.md @@ -27,8 +27,8 @@ Why: Relevant files: -- [package.json](/home/tnunamak/code/vana-connect/package.json) -- [pnpm-workspace.yaml](/home/tnunamak/code/vana-connect/pnpm-workspace.yaml) +- [package.json](../package.json) +- [pnpm-workspace.yaml](../pnpm-workspace.yaml) ### `data-connectors` @@ -42,8 +42,8 @@ Remain the source of truth for: Relevant files: -- [registry.json](/home/tnunamak/code/data-connectors/registry.json) -- [skills/vana-connect/scripts](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts) +- [registry.json](https://github.com/vana-com/data-connectors/blob/main/registry.json) +- [skills/vana-connect/scripts](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts) ### `data-connect` @@ -55,7 +55,7 @@ Reference implementation and integration source for: Relevant file: -- [personalServerIngest.ts](/home/tnunamak/code/data-connect/src/services/personalServerIngest.ts) +- `data-connect/src/services/personalServerIngest.ts` ## Practical conclusion diff --git a/docs/CLI-EXECUTION-PLAYBOOK.md b/docs/CLI-EXECUTION-PLAYBOOK.md index 59ff72e3..19743a70 100644 --- a/docs/CLI-EXECUTION-PLAYBOOK.md +++ b/docs/CLI-EXECUTION-PLAYBOOK.md @@ -8,9 +8,9 @@ all prior design context. It should be read after: -- [CLI-FINAL-PRODUCT-SPEC.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-FINAL-PRODUCT-SPEC.md) -- [CLI-BEAUTY-IMPLEMENTATION-PLAN.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-BEAUTY-IMPLEMENTATION-PLAN.md) -- [CLI-RUNTIME-PORTABILITY-NOTES.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-RUNTIME-PORTABILITY-NOTES.md) +- [CLI-FINAL-PRODUCT-SPEC.md](CLI-FINAL-PRODUCT-SPEC.md) +- [CLI-BEAUTY-IMPLEMENTATION-PLAN.md](CLI-BEAUTY-IMPLEMENTATION-PLAN.md) +- [CLI-RUNTIME-PORTABILITY-NOTES.md](CLI-RUNTIME-PORTABILITY-NOTES.md) If this document conflicts with casual conversational guidance, this document wins. diff --git a/docs/CLI-FOUNDATION-ASSESSMENT.md b/docs/CLI-FOUNDATION-ASSESSMENT.md index b8b13ecf..7ec8aa18 100644 --- a/docs/CLI-FOUNDATION-ASSESSMENT.md +++ b/docs/CLI-FOUNDATION-ASSESSMENT.md @@ -32,7 +32,7 @@ Scored against the standards implied by `uv`, `gh`, Vercel CLI, Stripe DX, and t ### 1. Runner protocol -The best part of the current system is [run-connector.cjs](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/run-connector.cjs). +The best part of the current system is [run-connector.cjs](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/run-connector.cjs). What is strong: @@ -44,11 +44,11 @@ What is strong: Relevant code: -- usage and event framing at [run-connector.cjs:3](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/run-connector.cjs#L3) -- output contract at [run-connector.cjs:13](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/run-connector.cjs#L13) -- human-readable formatting at [run-connector.cjs:72](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/run-connector.cjs#L72) -- request-input handling at [run-connector.cjs:196](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/run-connector.cjs#L196) -- file-based continuation at [run-connector.cjs:214](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/run-connector.cjs#L214) +- usage and event framing at [run-connector.cjs:3](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/run-connector.cjs#L3) +- output contract at [run-connector.cjs:13](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/run-connector.cjs#L13) +- human-readable formatting at [run-connector.cjs:72](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/run-connector.cjs#L72) +- request-input handling at [run-connector.cjs:196](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/run-connector.cjs#L196) +- file-based continuation at [run-connector.cjs:214](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/run-connector.cjs#L214) Why this matters: @@ -79,7 +79,7 @@ What is good: Relevant docs: -- [SETUP.md](/home/tnunamak/code/data-connectors/skills/vana-connect/SETUP.md) +- [SETUP.md](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/SETUP.md) Why this matters: @@ -102,9 +102,9 @@ The validator is more substantial than a vibe-coded placeholder. Relevant code: -- report model at [validate.cjs:23](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/validate.cjs#L23) -- metadata checks at [validate.cjs:185](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/validate.cjs#L185) -- script pattern checks at [validate.cjs:227](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/validate.cjs#L227) +- report model at [validate.cjs:23](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/validate.cjs#L23) +- metadata checks at [validate.cjs:185](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/validate.cjs#L185) +- script pattern checks at [validate.cjs:227](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/validate.cjs#L227) Why it matters: @@ -125,14 +125,14 @@ Verdict: ### 1. Setup flow -[setup.sh](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/setup.sh) is useful but nowhere near `uv` / Vercel quality. +[setup.sh](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/setup.sh) is useful but nowhere near `uv` / Vercel quality. Relevant code: -- bootstrap flow at [setup.sh:19](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/setup.sh#L19) -- cross-repo clone at [setup.sh:27](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/setup.sh#L27) -- dependency install at [setup.sh:35](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/setup.sh#L35) -- browser install at [setup.sh:38](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/setup.sh#L38) +- bootstrap flow at [setup.sh:19](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/setup.sh#L19) +- cross-repo clone at [setup.sh:27](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/setup.sh#L27) +- dependency install at [setup.sh:35](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/setup.sh#L35) +- browser install at [setup.sh:38](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/setup.sh#L38) What’s weak: @@ -156,13 +156,13 @@ Verdict: ### 2. Connector discovery -[fetch-connector.cjs](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/fetch-connector.cjs) works, but it is not yet a strong user-facing discovery experience. +[fetch-connector.cjs](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/fetch-connector.cjs) works, but it is not yet a strong user-facing discovery experience. Relevant code: -- raw GitHub registry fetch at [fetch-connector.cjs:24](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/fetch-connector.cjs#L24) -- partial match search at [fetch-connector.cjs:57](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/fetch-connector.cjs#L57) -- download flow at [fetch-connector.cjs:70](/home/tnunamak/code/data-connectors/skills/vana-connect/scripts/fetch-connector.cjs#L70) +- raw GitHub registry fetch at [fetch-connector.cjs:24](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/fetch-connector.cjs#L24) +- partial match search at [fetch-connector.cjs:57](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/fetch-connector.cjs#L57) +- download flow at [fetch-connector.cjs:70](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/scripts/fetch-connector.cjs#L70) What’s weak: diff --git a/docs/CLI-ONBOARDING-WORKPLAN.md b/docs/CLI-ONBOARDING-WORKPLAN.md index 1dc7da74..df5d8b09 100644 --- a/docs/CLI-ONBOARDING-WORKPLAN.md +++ b/docs/CLI-ONBOARDING-WORKPLAN.md @@ -17,7 +17,7 @@ These are not small assets. They should be treated as the foundation, not throwa ### Operational building blocks already present -- one-shot setup flow in [SETUP.md](/home/tnunamak/code/data-connectors/skills/vana-connect/SETUP.md) +- one-shot setup flow in [SETUP.md](https://github.com/vana-com/data-connectors/blob/main/skills/vana-connect/SETUP.md) - connector discovery in `skills/vana-connect/scripts/fetch-connector.cjs` - execution wrapper in `skills/vana-connect/scripts/run-connector.cjs` - validator in `skills/vana-connect/scripts/validate.cjs` diff --git a/docs/CLI-README.md b/docs/CLI-README.md index 5aa08c6b..6bebf58a 100644 --- a/docs/CLI-README.md +++ b/docs/CLI-README.md @@ -59,17 +59,8 @@ whether data stayed local or synced to a Personal Server. ## Demo -The hero demo is intentionally a short payoff story: - -1. connect GitHub -2. inspect the collected dataset - -![Vana successful connect demo](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) - -Supporting demos: - -- [status-and-sources.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) -- [data-inspection.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) +See all CLI surfaces with their exact output in the +[CLI transcripts](CLI-TRANSCRIPTS.md). ## Core Commands @@ -104,18 +95,17 @@ Contract: Full contract: -- [CLI exit code matrix](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-EXIT-CODE-MATRIX.md) +- [CLI exit code matrix](CLI-EXIT-CODE-MATRIX.md) ## Review Surface If you want to review the CLI systematically, start here: -- [CLI review surface](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-REVIEW-SURFACE.md) +- [CLI review surface](CLI-REVIEW-SURFACE.md) Supporting artifacts: -- [CLI transcripts](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/README.md) -- [CLI VHS demos](/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/README.md) +- [CLI transcripts](CLI-TRANSCRIPTS.md) ## Lifecycle @@ -173,16 +163,9 @@ node dist/cli/bin.js status Refresh local review artifacts: ```bash -pnpm demo:vhs:fixtures pnpm demo:transcripts ``` -Render demo media once `vhs` or Docker is available: - -```bash -pnpm demo:vhs -``` - Watch the release lane and canary publication: ```bash diff --git a/docs/CLI-REVIEW-SURFACE.md b/docs/CLI-REVIEW-SURFACE.md index 6231a79d..7caa50b6 100644 --- a/docs/CLI-REVIEW-SURFACE.md +++ b/docs/CLI-REVIEW-SURFACE.md @@ -47,15 +47,16 @@ JSON / agent-safe surfaces: ## Review Order -If you only have a few minutes, review in this order: +If you only have a few minutes, review the +[CLI transcripts](CLI-TRANSCRIPTS.md) in this order: -1. [help.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/help.txt) -2. [doctor.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/doctor.txt) -3. [status.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/status.txt) -4. [sources.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/sources.txt) -5. [connect-github-success.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-github-success.txt) -6. [data-show-github.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-show-github.txt) -7. [logs.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/logs.txt) +1. [`vana --help`](CLI-TRANSCRIPTS.md#vana---help) +2. [`vana doctor`](CLI-TRANSCRIPTS.md#vana-doctor) +3. [`vana status`](CLI-TRANSCRIPTS.md#vana-status) +4. [`vana sources`](CLI-TRANSCRIPTS.md#vana-sources) +5. [Successful connect](CLI-TRANSCRIPTS.md#successful-interactive-path) +6. [`vana data show github`](CLI-TRANSCRIPTS.md#vana-data-show-github) +7. [`vana logs`](CLI-TRANSCRIPTS.md#vana-logs) That sequence covers: @@ -68,80 +69,9 @@ That sequence covers: ## Human Review Surfaces -Foundational: - -- `vana` - - [help.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/help.txt) -- `vana data` - - [data-help.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-help.txt) -- `vana setup` - - [setup.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/setup.txt) - -State and diagnostics: - -- `vana status` - - [status.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/status.txt) -- `vana doctor` - - [doctor.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/doctor.txt) -- `vana logs` - - [logs.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/logs.txt) - -Discovery: - -- `vana sources` - - [sources.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/sources.txt) - -Post-success data surfaces: - -- `vana data list` - - [data-list.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-list.txt) -- `vana data list` on a clean machine - - [data-list-empty.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-list-empty.txt) -- `vana data show github` - - [data-show-github.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-show-github.txt) -- `vana data show github` when missing - - [data-show-github-missing.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-show-github-missing.txt) -- `vana data path github` - - [data-path-github.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/data-path-github.txt) - -Connect flows: - -- successful interactive path - - [connect-github-success.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-github-success.txt) -- interactive-required / machine-safe path - - [connect-github-no-input.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-github-no-input.txt) -- session reuse attempt in machine-safe path - - [connect-github-session-reuse-no-input.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-github-session-reuse-no-input.txt) -- legacy/manual interactive path - - [connect-shop.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-shop.txt) -- legacy/manual no-input path - - [connect-shop-no-input.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-shop-no-input.txt) -- unavailable connector interactive path - - [connect-steam.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-steam.txt) -- unavailable connector no-input path - - [connect-steam-no-input.txt](/home/tnunamak/code/vana-connect-cli-pr/docs/transcripts/connect-steam-no-input.txt) - -## Demo Media - -Current published canary demo assets: - -- [status-and-sources.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/status-and-sources.gif) -- [data-inspection.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/data-inspection.gif) -- [connect-success.gif](https://github.com/vana-com/vana-connect/releases/download/canary-feat-connect-cli-v1/connect-success.gif) - -What each demo should prove: - -- `status-and-sources.gif` - - first impression - - runtime clarity - - source maturity and recommendation quality -- `data-inspection.gif` - - post-success payoff - - useful summaries, not raw dumps -- `connect-success.gif` - - success journey - - clear end state - - visible value after connection +All transcripts are in [CLI-TRANSCRIPTS.md](CLI-TRANSCRIPTS.md), organized by +category: foundational, state/diagnostics, discovery, data surfaces, and +connect flows. ## Machine Review Surfaces @@ -160,8 +90,98 @@ Use these when reviewing shell composability and agent behavior: Related contract docs: -- [CLI-EXIT-CODE-MATRIX.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-EXIT-CODE-MATRIX.md) -- [CLI-EXECUTION-PLAYBOOK.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-EXECUTION-PLAYBOOK.md) +- [CLI-EXIT-CODE-MATRIX.md](CLI-EXIT-CODE-MATRIX.md) +- [CLI-EXECUTION-PLAYBOOK.md](CLI-EXECUTION-PLAYBOOK.md) + +## Demo Media + +Animated recordings of every CLI surface. Regenerate with `pnpm demo:vhs`. + +### Foundational + +#### `vana --help` + +![help](vhs/help.gif) + +#### `vana data --help` + +![data-help](vhs/data-help.gif) + +#### `vana setup` + +![setup](vhs/setup.gif) + +### State and diagnostics + +#### `vana status` + +![status](vhs/status.gif) + +#### `vana doctor` + +![doctor](vhs/doctor.gif) + +#### `vana logs` + +![logs](vhs/logs.gif) + +### Discovery + +#### `vana sources` + +![sources](vhs/sources.gif) + +### Post-success data surfaces + +#### `vana data list` + +![data-list](vhs/data-list.gif) + +#### `vana data list` (clean machine) + +![data-list-empty](vhs/data-list-empty.gif) + +#### `vana data show github` + +![data-show-github](vhs/data-show-github.gif) + +#### `vana data show github` (missing) + +![data-show-github-missing](vhs/data-show-github-missing.gif) + +#### `vana data path github` + +![data-path-github](vhs/data-path-github.gif) + +### Connect flows + +#### Successful interactive path + +![connect-github-success](vhs/connect-github-success.gif) + +#### `--no-input` path (no session) + +![connect-github-no-input](vhs/connect-github-no-input.gif) + +#### `--no-input` path (session reuse attempt) + +![connect-github-session-reuse-no-input](vhs/connect-github-session-reuse-no-input.gif) + +#### Legacy/manual interactive path (Shop) + +![connect-shop](vhs/connect-shop.gif) + +#### Legacy/manual `--no-input` path (Shop) + +![connect-shop-no-input](vhs/connect-shop-no-input.gif) + +#### Unavailable connector (Steam) + +![connect-steam](vhs/connect-steam.gif) + +#### Unavailable connector `--no-input` (Steam) + +![connect-steam-no-input](vhs/connect-steam-no-input.gif) ## Acceptance Commands @@ -196,10 +216,9 @@ vana connect github --json --no-input ## Regeneration -Refresh transcripts: +Refresh transcripts (updates [CLI-TRANSCRIPTS.md](CLI-TRANSCRIPTS.md) in place): ```bash -pnpm demo:vhs:fixtures pnpm demo:transcripts ``` diff --git a/docs/CLI-RUNTIME-PORTABILITY-NOTES.md b/docs/CLI-RUNTIME-PORTABILITY-NOTES.md index 0b36641a..ba18836b 100644 --- a/docs/CLI-RUNTIME-PORTABILITY-NOTES.md +++ b/docs/CLI-RUNTIME-PORTABILITY-NOTES.md @@ -11,12 +11,12 @@ what changed in code, and what still remains pre-stable?" ### Display-path invariant - Human-facing `~` rendering is now centralized in - [src/cli/render/format.ts](/home/tnunamak/code/vana-connect-cli-pr/src/cli/render/format.ts). + [src/cli/render/format.ts](../src/cli/render/format.ts). - Functional paths still come from - [src/core/paths.ts](/home/tnunamak/code/vana-connect-cli-pr/src/core/paths.ts) + [src/core/paths.ts](../src/core/paths.ts) via `os.homedir()` + `path.join(...)`. - Regression coverage now exists in - [test/cli/render-format.test.ts](/home/tnunamak/code/vana-connect-cli-pr/test/cli/render-format.test.ts). + [test/cli/render-format.test.ts](../test/cli/render-format.test.ts). Conclusion: @@ -30,7 +30,7 @@ Conclusion: - stale-lock cleanup - atomic temp-file write + rename - Regression coverage now exists in - [test/core/state-store.test.ts](/home/tnunamak/code/vana-connect-cli-pr/test/core/state-store.test.ts). + [test/core/state-store.test.ts](../test/core/state-store.test.ts). Conclusion: @@ -41,7 +41,7 @@ Conclusion: ### External `sqlite3` for cookie import -- [src/runtime/playwright/browser.ts](/home/tnunamak/code/vana-connect-cli-pr/src/runtime/playwright/browser.ts) +- [src/runtime/playwright/browser.ts](../src/runtime/playwright/browser.ts) still shells out to `sqlite3` when importing cookies from an existing system Chrome profile. - That path is opportunistic: @@ -77,7 +77,7 @@ This covers the current product contract: ### Playwright browser installation -- [src/runtime/managed-playwright.ts](/home/tnunamak/code/vana-connect-cli-pr/src/runtime/managed-playwright.ts) +- [src/runtime/managed-playwright.ts](../src/runtime/managed-playwright.ts) still uses Playwright's internal registry API rather than a user-facing CLI invocation - that is deliberate: diff --git a/docs/CLI-TRANSCRIPTS.md b/docs/CLI-TRANSCRIPTS.md new file mode 100644 index 00000000..f285cd34 --- /dev/null +++ b/docs/CLI-TRANSCRIPTS.md @@ -0,0 +1,631 @@ +# CLI Transcripts + +Generated review artifacts for the human-mode CLI. These are deterministic +fixture-based captures — not live runs. + +Refresh with: + +```bash +pnpm demo:transcripts +``` + +For the full review index, see [CLI-REVIEW-SURFACE.md](CLI-REVIEW-SURFACE.md). + +--- + +## Foundational + +### `vana --help` + + + +``` +$ vana --help + +Usage: vana [options] [command] + +Connect sources, collect data, and inspect it locally. + +Options: + -v, --version Print CLI version + -h, --help display help for command + +Commands: + version [options] Print CLI version + connect [options] [source] Connect a source and collect data + sources [options] List supported sources + status [options] Show runtime and Personal Server status + doctor [options] Inspect local CLI, runtime, and install health + setup [options] Install or repair the local runtime + data Inspect collected datasets, paths, and summaries + logs [options] [source] Inspect stored connector run logs + help [command] display help for command + +Start here: + vana connect + vana status + vana data list + +Automation: + vana connect github --json --no-input + vana sources --json | jq '.sources[] | {id, authMode}' + +Support: + vana doctor + vana logs + +Version: + 0.8.1 (stable, development checkout) +``` + + + +### `vana data --help` + + + +``` +$ vana data --help + +Usage: vana data [options] [command] + +Inspect collected datasets, paths, and summaries + +Options: + -h, --help display help for command + +Commands: + list [options] List locally available collected datasets + show [options] Show a collected dataset + path [options] Print the local path for a collected dataset + +Examples: + vana data list + vana data show github + vana data path github --json +``` + + + +### `vana setup` + + + +``` +$ vana setup + +Vana Connect setup + +→ Runtime +The local runtime is already installed. + Browser: /opt/playwright/chromium-1200/chrome-linux64/chrome + +→ Next + • Check overall status with `vana status`. + • Connect GitHub with `vana connect github`. +``` + + + +--- + +## State and diagnostics + +### `vana status` + + + +``` +$ vana status + +Vana Connect status + +Need attention (2) • Connected (2) • Local only (2) + +→ Environment + Runtime: installed + Browser: /opt/playwright/chromium-1200/chrome-linux64/chrome + Personal Server: unavailable + +→ Needs attention (2) +Shop [legacy] [manual step] + Run `vana connect shop` without `--no-input` to complete the manual browser step. + Updated: Mar 14, 2026, 8:11 AM + Run log: ~/.dataconnect/logs/run-shop-demo.log +Steam [unavailable] + No connector is available for Steam right now. + Updated: Mar 14, 2026, 8:12 AM + Run log: ~/.dataconnect/logs/fetch-steam-demo.log + +→ Connected (2) +GitHub [interactive] [local] + Inspect the latest local dataset with `vana data show github`. + Session: Saved for faster reconnects. + State: Saved locally + Updated: Mar 14, 2026, 8:10 AM + Path: ~/.dataconnect/last-result.json +Spotify [interactive] [local] + Inspect the latest local dataset with `vana data show spotify`. + State: Saved locally + Updated: Mar 13, 2026, 4:23 PM + Path: ~/.dataconnect/spotify-result.json + +→ Next + • Complete the manual browser step for Shop with `vana connect shop`. + • Inspect the latest run log with `vana logs shop`. + • Review the data you already collected with `vana data list`. +``` + + + +### `vana doctor` + + + +``` +$ vana doctor + +Vana Connect doctor + +→ Summary + CLI: 0.8.1 + Channel: stable + Install: Development checkout + Runtime: installed + Personal Server: unavailable + Tracked sources: 4 + Attention: 2 + Connected: 2 + Headed sessions: Unavailable + Managed profiles: Available + Screenshots: Available + +→ Checks + CLI: Version 0.8.1 + Runtime: Browser available at /opt/playwright/chromium-1200/chrome-linux64/chrome + Personal Server: Unavailable. Connects will stay local until a Personal Server is reachable. + Executable: Present at /usr/local/bin/node + Data home: Present at ~/.dataconnect + State file: Present at ~/.dataconnect/vana-connect-state.json + Connector cache: Present at ~/.dataconnect/connectors + Browser profiles: Present at ~/.dataconnect/browser-profiles + Logs: Present at ~/.dataconnect/logs + Tracked sources: 4 sources in local state + Latest issue: Shop: manual step + +→ Needs attention +Shop [legacy] [manual step] + Run `vana connect shop` without `--no-input` to complete the manual browser step. + Updated: Mar 14, 2026, 8:11 AM + Run log: ~/.dataconnect/logs/run-shop-demo.log +Steam [unavailable] + No connector is available for Steam right now. + Updated: Mar 14, 2026, 8:12 AM + Run log: ~/.dataconnect/logs/fetch-steam-demo.log + +→ Paths + Executable: /usr/local/bin/node + Data home: ~/.dataconnect + State file: ~/.dataconnect/vana-connect-state.json + Connector cache: ~/.dataconnect/connectors + Browser profiles: ~/.dataconnect/browser-profiles + Logs: ~/.dataconnect/logs + +→ Lifecycle + Upgrade: git pull && pnpm install && pnpm build + Uninstall: Remove the local checkout and any generated ~/.dataconnect state. + +→ Next + • Your Personal Server is unavailable, so successful runs will stay local. + • Check overall status with `vana status`. + • Inspect the latest issue log with `vana logs shop`. +``` + + + +### `vana logs` + + + +``` +$ vana logs + +Run logs (3) + +Need attention (2) • Successful (1) • Local (1) + +→ Needs attention (2) +Steam [unavailable] + Path: ~/.dataconnect/logs/fetch-steam-demo.log + Updated: Mar 14, 2026, 8:12 AM +Shop [manual step] + Path: ~/.dataconnect/logs/run-shop-demo.log + Updated: Mar 14, 2026, 8:11 AM + +→ Successful runs (1) +GitHub [local] + Path: ~/.dataconnect/logs/run-github-demo.log + Updated: Mar 14, 2026, 8:10 AM + +→ Next + • Inspect the latest issue log with `vana logs steam`. + • Inspect a successful run with `vana logs github`. + • Check overall status with `vana status`. +``` + + + +--- + +## Discovery + +### `vana sources` + + + +``` +$ vana sources + +Available sources (3) + +Connected (2) • With manual step (1) + +→ Connected (2) +GitHub [local] [interactive] [installed] + Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. + Inspect with `vana data show github`. +Spotify [local] [interactive] [installed] + Exports your Spotify playlists using Playwright browser automation. + Inspect with `vana data show spotify`. + +→ Manual steps (1) +Shop [legacy] [installed] + Exports your Shop app order history using Playwright browser automation. + Flow: finishes with a manual browser step on this machine. + +→ Next + • Inspect what you already collected with `vana data list`. + • Complete Shop with `vana connect shop`. + • Or browse the guided picker with `vana connect`. +``` + + + +--- + +## Post-success data surfaces + +### `vana data list` + + + +``` +$ vana data list + +Collected data (2) + +Dataset (2) • Local only (2) • Synced (0) + +GitHub [local] + Profile: tnunamak + Repositories: 2 + Latest repos: vana-connect, data-connectors + Starred: 0 + State: Saved locally + Updated: Mar 14, 2026, 8:10 AM + Path: ~/.dataconnect/last-result.json + +Spotify [local] + Profile: tnunamak + Playlists: 2 + Playlists: Data Portability, Build Flow + State: Saved locally + Updated: Mar 13, 2026, 4:23 PM + Path: ~/.dataconnect/spotify-result.json + +→ Next + • Inspect GitHub with `vana data show github`. + • Or print its path with `vana data path github`. + • Connect another source with `vana sources`. +``` + + + +### `vana data list` (clean machine) + + + +``` +$ vana data list + +Collected data + +No local datasets collected yet. + +→ Next + • Collect your first dataset with `vana connect github`. + • Check overall status with `vana status`. +``` + + + +### `vana data show github` + + + +``` +$ vana data show github + +GitHub data + +→ Summary + • Profile: tnunamak + • Repositories: 2 + • Latest repos: vana-connect, data-connectors + • Starred: 0 + + Path: ~/.dataconnect/last-result.json + Updated: Mar 14, 2026, 8:10 AM + State: Saved locally + +→ Next + • Print the path with `vana data path github`. + • Use `vana data show github --json | jq` for structured inspection. + • Reconnect GitHub with `vana connect github`. + • Connect another source with `vana sources`. + • Inspect other datasets with `vana data list`. + • Check overall status with `vana status`. +``` + + + +### `vana data show github` (missing) + + + +``` +$ vana data show github + +No collected dataset found for GitHub. Run `vana connect github` first. + +→ Next + • Collect data with `vana connect github`. +``` + + + +### `vana data path github` + + + +``` +$ vana data path github + +~/.dataconnect/last-result.json +``` + + + +--- + +## Connect flows + +### Successful interactive path + + + +``` +$ vana connect github + +Connect GitHub + +→ Preparing +Finding a connector for GitHub... +Connector ready. +Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. + If needed, Vana Connect will ask for details in this terminal. Those details stay local to this machine. + Found an existing GitHub session. Reusing it if it is still valid... + +→ Connecting +Connecting to GitHub... +Collecting your data... + Checking GitHub login... + Login confirmed. Collecting data in background... + Profile (1/3): Fetching profile... + Repositories (2/3): Fetched 2 repositories + Starred (3/3): Fetched 0 starred repositories +✓ Connected GitHub. + Collected your GitHub data and saved it locally. + +→ Collected + • Profile: tnunamak + • Repositories: 2 + • Latest repos: vana-connect, data-connectors + • Starred: 0 + +→ Saved locally + Path: ~/.dataconnect/last-result.json + Session: Saved for faster reconnects. + Server: Unavailable, so this run stayed local. + Run log: ~/.dataconnect/logs/run-github-.log + +→ Next + • Inspect the data with `vana data show github` + • Connect another source with `vana sources` + • Inspect the run log with `vana logs github`. + • Or check overall status with `vana status` +``` + + + +### Interactive-required / `--no-input` path + + + +``` +$ vana connect github --json --no-input + +Connect GitHub + +→ Preparing +Finding a connector for GitHub... +Connector ready. +Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. + If needed, Vana Connect will ask for details in this terminal. Those details stay local to this machine. + +→ Connecting +Connecting to GitHub... +Collecting your data... + Checking GitHub login... + +→ Input required +GitHub needs additional input before it can connect. + Because `--no-input` is enabled, Vana stopped before prompting in this terminal. + +→ Next + • Run `vana connect github` without `--no-input`. + • Inspect the latest run log with `vana logs github`. + • Or check overall status with `vana status`. +``` + + + +### Session reuse attempt in `--no-input` path + + + +``` +$ vana connect github --json --no-input + +Connect GitHub + +→ Preparing +Finding a connector for GitHub... +Connector ready. +Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. + If needed, Vana Connect will ask for details in this terminal. Those details stay local to this machine. + Found an existing GitHub session. Reusing it if it is still valid... + +→ Connecting +Connecting to GitHub... +Collecting your data... + Checking GitHub login... + +→ Input required +GitHub needs additional input before it can connect. + Because `--no-input` is enabled, Vana stopped before prompting in this terminal. + +→ Next + • Run `vana connect github` without `--no-input`. + • Inspect the latest run log with `vana logs github`. + • Or check overall status with `vana status`. +``` + + + +### Legacy/manual interactive path + + + +``` +$ vana connect shop + +Connect Shop + +→ Preparing +Finding a connector for Shop... +Connector ready. +Exports your Shop app order history using Playwright browser automation. + If needed, Vana Connect will open a local browser session on this machine. + Found an existing Shop session. Reusing it if it is still valid... + +→ Manual step required +Shop still needs a manual browser step on this machine. + This source needs a manual browser step, but no local display server is available. Run this command in a desktop session or use xvfb-run. + +→ Next + • Run this command in a desktop session. + • Or retry with `xvfb-run -a vana connect shop`. + • Inspect the latest run log with `vana logs shop`. + • Or check overall status with `vana status`. +``` + + + +### Legacy/manual `--no-input` path + + + +``` +$ vana connect shop --json --no-input + +Connect Shop + +→ Preparing +Finding a connector for Shop... +Connector ready. +Exports your Shop app order history using Playwright browser automation. + If needed, Vana Connect will open a local browser session on this machine. + +→ Connecting +Connecting to Shop... +Collecting your data... + +→ Manual step required +Shop still needs a manual browser step on this machine. + Because `--no-input` is enabled, Vana stopped before opening that session. + +→ Next + • Run `vana connect shop` without `--no-input`. + • Inspect the latest run log with `vana logs shop`. + • Or check overall status with `vana status`. + Run log: ~/.dataconnect/logs/run-shop-.log +``` + + + +### Unavailable connector interactive path + + + +``` +$ vana connect steam + +Connect Steam + +→ Preparing +Finding a connector for Steam... + +→ Not available yet +No connector is available for Steam right now. + +→ Next + • Try GitHub with `vana connect github`. + • Browse available sources with `vana sources`. + • Or check overall status with `vana status`. +``` + + + +### Unavailable connector `--no-input` path + + + +``` +$ vana connect steam --json --no-input + +Connect Steam + +→ Preparing +Finding a connector for Steam... + +→ Not available yet +No connector is available for Steam right now. + +→ Next + • Try GitHub with `vana connect github`. + • Browse available sources with `vana sources`. + • Or check overall status with `vana status`. +``` + + diff --git a/docs/transcripts/README.md b/docs/transcripts/README.md deleted file mode 100644 index e70fd8c8..00000000 --- a/docs/transcripts/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# CLI transcripts - -These files are generated review artifacts for the human-mode CLI. - -They are not a replacement for tests. They exist to make visual and copy review -faster between release pushes. - -For a single index of the whole CLI review surface, use -[CLI-REVIEW-SURFACE.md](/home/tnunamak/code/vana-connect-cli-pr/docs/CLI-REVIEW-SURFACE.md). - -Refresh them with: - -```bash -pnpm demo:vhs:fixtures -pnpm demo:transcripts -``` - -Current generated surfaces include: - -- `help.txt` -- `data-help.txt` -- `status.txt` -- `doctor.txt` -- `logs.txt` -- `setup.txt` -- `sources.txt` -- `data-list.txt` -- `data-list-empty.txt` -- `data-show-github.txt` -- `data-show-github-missing.txt` -- `data-path-github.txt` -- `connect-github-success.txt` -- `connect-github-no-input.txt` -- `connect-github-session-reuse-no-input.txt` -- `connect-shop.txt` -- `connect-shop-no-input.txt` -- `connect-steam.txt` -- `connect-steam-no-input.txt` diff --git a/docs/transcripts/connect-github-no-input.txt b/docs/transcripts/connect-github-no-input.txt deleted file mode 100644 index c605b2c5..00000000 --- a/docs/transcripts/connect-github-no-input.txt +++ /dev/null @@ -1,21 +0,0 @@ -Connect GitHub - -→ Preparing -Finding a connector for GitHub... -Connector ready. -Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. - If needed, Vana Connect will ask for details in this terminal. Those details stay local to this machine. - -→ Connecting -Connecting to GitHub... -Collecting your data... - Checking GitHub login... - -→ Input required -GitHub needs additional input before it can connect. - Because `--no-input` is enabled, Vana stopped before prompting in this terminal. - -→ Next - • Run `vana connect github` without `--no-input`. - • Inspect the latest run log with `vana logs github`. - • Or check overall status with `vana status`. diff --git a/docs/transcripts/connect-github-session-reuse-no-input.txt b/docs/transcripts/connect-github-session-reuse-no-input.txt deleted file mode 100644 index 2ba09b8a..00000000 --- a/docs/transcripts/connect-github-session-reuse-no-input.txt +++ /dev/null @@ -1,22 +0,0 @@ -Connect GitHub - -→ Preparing -Finding a connector for GitHub... -Connector ready. -Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. - If needed, Vana Connect will ask for details in this terminal. Those details stay local to this machine. - Found an existing GitHub session. Reusing it if it is still valid... - -→ Connecting -Connecting to GitHub... -Collecting your data... - Checking GitHub login... - -→ Input required -GitHub needs additional input before it can connect. - Because `--no-input` is enabled, Vana stopped before prompting in this terminal. - -→ Next - • Run `vana connect github` without `--no-input`. - • Inspect the latest run log with `vana logs github`. - • Or check overall status with `vana status`. diff --git a/docs/transcripts/connect-github-success.txt b/docs/transcripts/connect-github-success.txt deleted file mode 100644 index 5938a499..00000000 --- a/docs/transcripts/connect-github-success.txt +++ /dev/null @@ -1,37 +0,0 @@ -Connect GitHub - -→ Preparing -Finding a connector for GitHub... -Connector ready. -Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. - If needed, Vana Connect will ask for details in this terminal. Those details stay local to this machine. - Found an existing GitHub session. Reusing it if it is still valid... - -→ Connecting -Connecting to GitHub... -Collecting your data... - Checking GitHub login... - Login confirmed. Collecting data in background... - Profile (1/3): Fetching profile... - Repositories (2/3): Fetched 2 repositories - Starred (3/3): Fetched 0 starred repositories -✓ Connected GitHub. - Collected your GitHub data and saved it locally. - -→ Collected - • Profile: tnunamak - • Repositories: 2 - • Latest repos: vana-connect, data-connectors - • Starred: 0 - -→ Saved locally - Path: ~/.dataconnect/last-result.json - Session: Saved for faster reconnects. - Server: Unavailable, so this run stayed local. - Run log: ~/.dataconnect/logs/run-github-.log - -→ Next - • Inspect the data with `vana data show github` - • Connect another source with `vana sources` - • Inspect the run log with `vana logs github`. - • Or check overall status with `vana status` diff --git a/docs/transcripts/connect-shop-no-input.txt b/docs/transcripts/connect-shop-no-input.txt deleted file mode 100644 index 9d4b56e4..00000000 --- a/docs/transcripts/connect-shop-no-input.txt +++ /dev/null @@ -1,21 +0,0 @@ -Connect Shop - -→ Preparing -Finding a connector for Shop... -Connector ready. -Exports your Shop app order history using Playwright browser automation. - If needed, Vana Connect will open a local browser session on this machine. - -→ Connecting -Connecting to Shop... -Collecting your data... - -→ Manual step required -Shop still needs a manual browser step on this machine. - Because `--no-input` is enabled, Vana stopped before opening that session. - -→ Next - • Run `vana connect shop` without `--no-input`. - • Inspect the latest run log with `vana logs shop`. - • Or check overall status with `vana status`. - Run log: ~/.dataconnect/logs/run-shop-.log diff --git a/docs/transcripts/connect-shop.txt b/docs/transcripts/connect-shop.txt deleted file mode 100644 index 85ddb64f..00000000 --- a/docs/transcripts/connect-shop.txt +++ /dev/null @@ -1,18 +0,0 @@ -Connect Shop - -→ Preparing -Finding a connector for Shop... -Connector ready. -Exports your Shop app order history using Playwright browser automation. - If needed, Vana Connect will open a local browser session on this machine. - Found an existing Shop session. Reusing it if it is still valid... - -→ Manual step required -Shop still needs a manual browser step on this machine. - This source needs a manual browser step, but no local display server is available. Run this command in a desktop session or use xvfb-run. - -→ Next - • Run this command in a desktop session. - • Or retry with `xvfb-run -a vana connect shop`. - • Inspect the latest run log with `vana logs shop`. - • Or check overall status with `vana status`. diff --git a/docs/transcripts/connect-steam-no-input.txt b/docs/transcripts/connect-steam-no-input.txt deleted file mode 100644 index cca400a6..00000000 --- a/docs/transcripts/connect-steam-no-input.txt +++ /dev/null @@ -1,12 +0,0 @@ -Connect Steam - -→ Preparing -Finding a connector for Steam... - -→ Not available yet -No connector is available for Steam right now. - -→ Next - • Try GitHub with `vana connect github`. - • Browse available sources with `vana sources`. - • Or check overall status with `vana status`. diff --git a/docs/transcripts/connect-steam.txt b/docs/transcripts/connect-steam.txt deleted file mode 100644 index cca400a6..00000000 --- a/docs/transcripts/connect-steam.txt +++ /dev/null @@ -1,12 +0,0 @@ -Connect Steam - -→ Preparing -Finding a connector for Steam... - -→ Not available yet -No connector is available for Steam right now. - -→ Next - • Try GitHub with `vana connect github`. - • Browse available sources with `vana sources`. - • Or check overall status with `vana status`. diff --git a/docs/transcripts/data-help.txt b/docs/transcripts/data-help.txt deleted file mode 100644 index b39e32c6..00000000 --- a/docs/transcripts/data-help.txt +++ /dev/null @@ -1,17 +0,0 @@ -Usage: vana data [options] [command] - -Inspect collected datasets, paths, and summaries - -Options: - -h, --help display help for command - -Commands: - list [options] List locally available collected datasets - show [options] Show a collected dataset - path [options] Print the local path for a collected dataset - -Examples: - vana data list - vana data show github - vana data path github --json - diff --git a/docs/transcripts/data-list-empty.txt b/docs/transcripts/data-list-empty.txt deleted file mode 100644 index a4f1822b..00000000 --- a/docs/transcripts/data-list-empty.txt +++ /dev/null @@ -1,7 +0,0 @@ -Collected data - -No local datasets collected yet. - -→ Next - • Collect your first dataset with `vana connect github`. - • Check overall status with `vana status`. diff --git a/docs/transcripts/data-list.txt b/docs/transcripts/data-list.txt deleted file mode 100644 index 1fde9506..00000000 --- a/docs/transcripts/data-list.txt +++ /dev/null @@ -1,25 +0,0 @@ -Collected data (2) - -Dataset (2) • Local only (2) • Synced (0) - -GitHub [local] - Profile: tnunamak - Repositories: 2 - Latest repos: vana-connect, data-connectors - Starred: 0 - State: Saved locally - Updated: Mar 14, 2026, 8:10 AM - Path: ~/.dataconnect/last-result.json - -Spotify [local] - Profile: tnunamak - Playlists: 2 - Playlists: Data Portability, Build Flow - State: Saved locally - Updated: Mar 13, 2026, 4:23 PM - Path: ~/.dataconnect/spotify-result.json - -→ Next - • Inspect GitHub with `vana data show github`. - • Or print its path with `vana data path github`. - • Connect another source with `vana sources`. diff --git a/docs/transcripts/data-path-github.txt b/docs/transcripts/data-path-github.txt deleted file mode 100644 index 2964daa8..00000000 --- a/docs/transcripts/data-path-github.txt +++ /dev/null @@ -1 +0,0 @@ -~/.dataconnect/last-result.json diff --git a/docs/transcripts/data-show-github-missing.txt b/docs/transcripts/data-show-github-missing.txt deleted file mode 100644 index e3cd95d3..00000000 --- a/docs/transcripts/data-show-github-missing.txt +++ /dev/null @@ -1,4 +0,0 @@ -No collected dataset found for GitHub. Run `vana connect github` first. - -→ Next - • Collect data with `vana connect github`. diff --git a/docs/transcripts/data-show-github.txt b/docs/transcripts/data-show-github.txt deleted file mode 100644 index 6a8962a0..00000000 --- a/docs/transcripts/data-show-github.txt +++ /dev/null @@ -1,19 +0,0 @@ -GitHub data - -→ Summary - • Profile: tnunamak - • Repositories: 2 - • Latest repos: vana-connect, data-connectors - • Starred: 0 - - Path: ~/.dataconnect/last-result.json - Updated: Mar 14, 2026, 8:10 AM - State: Saved locally - -→ Next - • Print the path with `vana data path github`. - • Use `vana data show github --json | jq` for structured inspection. - • Reconnect GitHub with `vana connect github`. - • Connect another source with `vana sources`. - • Inspect other datasets with `vana data list`. - • Check overall status with `vana status`. diff --git a/docs/transcripts/doctor.txt b/docs/transcripts/doctor.txt deleted file mode 100644 index 2e6f4a47..00000000 --- a/docs/transcripts/doctor.txt +++ /dev/null @@ -1,54 +0,0 @@ -Vana Connect doctor - -→ Summary - CLI: 0.8.1 - Channel: stable - Install: Development checkout - Runtime: installed - Personal Server: unavailable - Tracked sources: 4 - Attention: 2 - Connected: 2 - Headed sessions: Unavailable - Managed profiles: Available - Screenshots: Available - -→ Checks - CLI: Version 0.8.1 - Runtime: Browser available at /opt/playwright/chromium-1200/chrome-linux64/chrome - Personal Server: Unavailable. Connects will stay local until a Personal Server is reachable. - Executable: Present at /usr/local/bin/node - Data home: Present at ~/.dataconnect - State file: Present at ~/.dataconnect/vana-connect-state.json - Connector cache: Present at ~/.dataconnect/connectors - Browser profiles: Present at ~/.dataconnect/browser-profiles - Logs: Present at ~/.dataconnect/logs - Tracked sources: 4 sources in local state - Latest issue: Shop: manual step - -→ Needs attention -Shop [legacy] [manual step] - Run `vana connect shop` without `--no-input` to complete the manual browser step. - Updated: Mar 14, 2026, 8:11 AM - Run log: ~/.dataconnect/logs/run-shop-demo.log -Steam [unavailable] - No connector is available for Steam right now. - Updated: Mar 14, 2026, 8:12 AM - Run log: ~/.dataconnect/logs/fetch-steam-demo.log - -→ Paths - Executable: /usr/local/bin/node - Data home: ~/.dataconnect - State file: ~/.dataconnect/vana-connect-state.json - Connector cache: ~/.dataconnect/connectors - Browser profiles: ~/.dataconnect/browser-profiles - Logs: ~/.dataconnect/logs - -→ Lifecycle - Upgrade: git pull && pnpm install && pnpm build - Uninstall: Remove the local checkout and any generated ~/.dataconnect state. - -→ Next - • Your Personal Server is unavailable, so successful runs will stay local. - • Check overall status with `vana status`. - • Inspect the latest issue log with `vana logs shop`. diff --git a/docs/transcripts/help.txt b/docs/transcripts/help.txt deleted file mode 100644 index 2179c55a..00000000 --- a/docs/transcripts/help.txt +++ /dev/null @@ -1,35 +0,0 @@ -Usage: vana [options] [command] - -Connect sources, collect data, and inspect it locally. - -Options: - -v, --version Print CLI version - -h, --help display help for command - -Commands: - version [options] Print CLI version - connect [options] [source] Connect a source and collect data - sources [options] List supported sources - status [options] Show runtime and Personal Server status - doctor [options] Inspect local CLI, runtime, and install health - setup [options] Install or repair the local runtime - data Inspect collected datasets, paths, and summaries - logs [options] [source] Inspect stored connector run logs - help [command] display help for command - -Start here: - vana connect - vana status - vana data list - -Automation: - vana connect github --json --no-input - vana sources --json | jq '.sources[] | {id, authMode}' - -Support: - vana doctor - vana logs - -Version: - 0.8.1 (stable, development checkout) - diff --git a/docs/transcripts/logs.txt b/docs/transcripts/logs.txt deleted file mode 100644 index 4e775f18..00000000 --- a/docs/transcripts/logs.txt +++ /dev/null @@ -1,21 +0,0 @@ -Run logs (3) - -Need attention (2) • Successful (1) • Local (1) - -→ Needs attention (2) -Steam [unavailable] - Path: ~/.dataconnect/logs/fetch-steam-demo.log - Updated: Mar 14, 2026, 8:12 AM -Shop [manual step] - Path: ~/.dataconnect/logs/run-shop-demo.log - Updated: Mar 14, 2026, 8:11 AM - -→ Successful runs (1) -GitHub [local] - Path: ~/.dataconnect/logs/run-github-demo.log - Updated: Mar 14, 2026, 8:10 AM - -→ Next - • Inspect the latest issue log with `vana logs steam`. - • Inspect a successful run with `vana logs github`. - • Check overall status with `vana status`. diff --git a/docs/transcripts/setup.txt b/docs/transcripts/setup.txt deleted file mode 100644 index 14b38830..00000000 --- a/docs/transcripts/setup.txt +++ /dev/null @@ -1,9 +0,0 @@ -Vana Connect setup - -→ Runtime -The local runtime is already installed. - Browser: /opt/playwright/chromium-1200/chrome-linux64/chrome - -→ Next - • Check overall status with `vana status`. - • Connect GitHub with `vana connect github`. diff --git a/docs/transcripts/sources.txt b/docs/transcripts/sources.txt deleted file mode 100644 index a579cb1f..00000000 --- a/docs/transcripts/sources.txt +++ /dev/null @@ -1,21 +0,0 @@ -Available sources (3) - -Connected (2) • With manual step (1) - -→ Connected (2) -GitHub [local] [interactive] [installed] - Exports your GitHub profile, repositories, and starred repositories using Playwright browser automation. - Inspect with `vana data show github`. -Spotify [local] [interactive] [installed] - Exports your Spotify playlists using Playwright browser automation. - Inspect with `vana data show spotify`. - -→ Manual steps (1) -Shop [legacy] [installed] - Exports your Shop app order history using Playwright browser automation. - Flow: finishes with a manual browser step on this machine. - -→ Next - • Inspect what you already collected with `vana data list`. - • Complete Shop with `vana connect shop`. - • Or browse the guided picker with `vana connect`. diff --git a/docs/transcripts/status.txt b/docs/transcripts/status.txt deleted file mode 100644 index dfc03b22..00000000 --- a/docs/transcripts/status.txt +++ /dev/null @@ -1,36 +0,0 @@ -Vana Connect status - -Need attention (2) • Connected (2) • Local only (2) - -→ Environment - Runtime: installed - Browser: /opt/playwright/chromium-1200/chrome-linux64/chrome - Personal Server: unavailable - -→ Needs attention (2) -Shop [legacy] [manual step] - Run `vana connect shop` without `--no-input` to complete the manual browser step. - Updated: Mar 14, 2026, 8:11 AM - Run log: ~/.dataconnect/logs/run-shop-demo.log -Steam [unavailable] - No connector is available for Steam right now. - Updated: Mar 14, 2026, 8:12 AM - Run log: ~/.dataconnect/logs/fetch-steam-demo.log - -→ Connected (2) -GitHub [interactive] [local] - Inspect the latest local dataset with `vana data show github`. - Session: Saved for faster reconnects. - State: Saved locally - Updated: Mar 14, 2026, 8:10 AM - Path: ~/.dataconnect/last-result.json -Spotify [interactive] [local] - Inspect the latest local dataset with `vana data show spotify`. - State: Saved locally - Updated: Mar 13, 2026, 4:23 PM - Path: ~/.dataconnect/spotify-result.json - -→ Next - • Complete the manual browser step for Shop with `vana connect shop`. - • Inspect the latest run log with `vana logs shop`. - • Review the data you already collected with `vana data list`. diff --git a/docs/vhs/README.md b/docs/vhs/README.md index 5e44944f..b4c1ea47 100644 --- a/docs/vhs/README.md +++ b/docs/vhs/README.md @@ -70,7 +70,7 @@ Typical usage once `vhs` is available locally: ```bash HOME="$PWD/docs/vhs/fixtures/demo-home" \ -VANA_DATA_CONNECTORS_DIR="/home/tnunamak/code/data-connectors" \ +VANA_DATA_CONNECTORS_DIR="/path/to/data-connectors" \ vhs docs/vhs/status-and-sources.tape ``` diff --git a/docs/vhs/connect-github-no-input.gif b/docs/vhs/connect-github-no-input.gif new file mode 100644 index 0000000000000000000000000000000000000000..d757f4957aba0aa1b9a872bbc5cab0f96d76ec2b GIT binary patch literal 29192 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�He7iQdGhhv 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 literal 0 HcmV?d00001 diff --git a/docs/vhs/connect-github-no-input.tape b/docs/vhs/connect-github-no-input.tape new file mode 100644 index 00000000..304336a8 --- /dev/null +++ b/docs/vhs/connect-github-no-input.tape @@ -0,0 +1,14 @@ +Output docs/vhs/connect-github-no-input.gif +Require vana + +Set Shell "bash" +Set FontSize 16 +Set Width 960 +Set Height 528 +Set TypingSpeed 100ms +Set CursorBlink false +Set LoopOffset 50% + +Type "vana connect github --no-input" +Enter +Sleep 2000ms diff --git a/docs/vhs/connect-github-session-reuse-no-input.gif b/docs/vhs/connect-github-session-reuse-no-input.gif new file mode 100644 index 0000000000000000000000000000000000000000..4e1b33faf4ebc5cc7dc60004275a161f7758b600 GIT binary patch literal 153150 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 kTuer?6$qpHsjw32QpQ1}z3$di))|$26f@GD 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

aSOSJasBZGuudR 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 literal 0 HcmV?d00001 diff --git a/docs/vhs/connect-github-success.tape b/docs/vhs/connect-github-success.tape new file mode 100644 index 00000000..8eed9141 --- /dev/null +++ b/docs/vhs/connect-github-success.tape @@ -0,0 +1,14 @@ +Output docs/vhs/connect-github-success.gif +Require vana + +Set Shell "bash" +Set FontSize 16 +Set Width 960 +Set Height 880 +Set TypingSpeed 100ms +Set CursorBlink false +Set LoopOffset 50% + +Type "vana connect github" +Enter +Sleep 2960ms diff --git a/docs/vhs/connect-shop-no-input.gif b/docs/vhs/connect-shop-no-input.gif new file mode 100644 index 0000000000000000000000000000000000000000..286fb6c35ee8571db57db92fabcc3417f0e394e4 GIT binary patch literal 204753 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

dwH@OU2>m87x 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

l~}njvnoY(V%3?%pV47H7RSaemje<5J?c z_T!WB!L={OFDR;9Db6W2yMF859gS!0RhQ-iKYggxFrQWkn*gafd;4pWfSrDT)6Ng8 zz~%vNGt^k_e23#T&QCPj`nZ)ARs68vQ= z68D46vn4n3eGf#dKVWY>{9S>h7=5m5^uMFS!(G$u z=D}2z8Sj9v%{Po4TB(2Y3fEr@Z}LPI6X`|-YaRt)6%jfw)rDGf|2#-F{ay=En+yhT zQrGJWy3WGOkSBM9Vifec<@P2<0l7UG^XYy9^&a3#LzGRZ(gH_c zhHq_LD@}Q4qA*YaqlM~km)fxu1I!D_ot3^jmmh^az3nIZBS8n+zfU3M%z{oxaOS*hYbEbr?! z39|ZT`PoMi^FHg5&R2>z9dE|v1bB1$A>_2M|MD)X|AE&(-u>xdw$lGp?@bgZ4Hjxx z%xisoP!tx@xi9N(+>2fAlf{S|7b8>Sg1%mtf2VigVhrd|f7^*mRGw6~)pdgj9uy); zT-~GkNfdrUGoS15nd1Vho5wjK5O@5Ob@A{gsc`5MY zhff;zL*#WVNV!hAz|;qb5En-xd4NeHayX*frWo5O{zlOHMDb#>mDbD~wG#Fswh0dB zbA(4Wz$xq70ua=Rcm)JH{nv%|1)2`hFprHegHk7)m1~G+@Dl)pCmf_K5dHwDPcM6l zj$cY3L${D5l-+KF0dY*oK#-g5e#f4tG62LBAqjED{m%3ARYxu#QX*YV2c3WJlJ7Eb zR6bDb^X4u3;I)Lh>*mb=kt-kCMQi^z=s~qKKKL1TlOW zV@y4?Iy1ZL%cJD+vZa3#=;-I)QPl5sj1&9V@V@PJXxP`>HH2QX&5BqwkRd_*+2^PFqqKIJBfCl*eMAVW7qCr0=ua zmk1S~MX1|%IQAr7!i6b}ssx9h_U+pL%2^5>VJddZ3>Fe>m-xe?85%0VLZ^`g;?BM) zENmJrpJy7!fU8k3BVwG8;IJ(krICysCsznZP{>8}2>G+K&t=um$f+n(kr-DaUK$}| zlov7oz?)0RgS`R_l7bNr!e;<@m>xy|kRKX?{~}|sMMok4vJN+P9Z4CV>8&ZNM6Sw^ zUqskAK(U*EQEr#7dxThIYQR{?BtzRBB^uyx)cgpvwGyW#5#xb|m%S*eEQJTns|kRy zeKQy&OA(~!bMBmPtHr@?{jV*DMof{2aWPhvrJURg9VaU$%Gg>2oS6>-{}`vYVo?IX zs7@;|J1_v`*Is}cY8o>z)tPYi_2ePz3NgyC3cg`cmq&P~g~QYl9N1H;sVfTnq5qaG zvIPX}3_)K_f?_V{b}_M^4`P1-j9VUS5Bft!rZC5Sd<0Bf7lYUf=s`BgmcV!zr~NE> z??1g)-3&A+9J{tZw~m3{VvT-MVsG5BVP}=xx{$1OaYd%(@|_gmP!jZNKSws&GMq+7 zH_O+wYbfD1*Gx(J$b=O#V%zZA5?LQiK@#8Y@_b_0W@B`aYNi&B`LyCtHHsAqFshVs zuP6;83HC{XRS8+SZ3W#kY^)Q7TPDk%7CFPjjT7K6VK$f*j7)}bGSRHf8govZQ>BQq zvqo#o5324|oElEE?|H9BMWGa9ps4u3l0f1KNl)}9K zw^`yPSI%F-l-Z(9ccRh!I*$zRW8iuLS7e1&JPR4YRR1k-sbe7Pn6gHUiv3P2KO^)% zQ)rz`KEsgd4xHxWee$Yxn;6(RhJ6Y{<+T_}h{CnZ?0Rrjp2u+CGv;<&*{OsfKR`x+ z4BhrgZ6S+;%K%hHAC&0CBn|BJkyx}6I^27E!QHneJe5m&rxVb8WC4pfj0}*Gj z%^|=$u*Uti!Oo>i>s&c`b^?;e2(VB#R_!(C5a8Ve2X3clc@6FY8L}@`VT%Cj16BC` zHL5cozRm+EhyY}vvQwAxt}D>qFARkg2K7=rB=HI0$Z$}c7&iw% zf)Dc7@0DrbWXPk^Vde~|NU^DW0X5b@bb_ZgK9OSbjB$c^u z`yu&NGG^A$93PIXAtMIFKj!I}`(pU6RV1M>Ym&S!V&cAtEv`N!Oo6uCW9+^;d~00k zQnx;Q()M{AVbgCrlJFtUOWIAK^loA7ub+zP+<~beLmHXNseKS06DMRie_v@G7CZqWB>!tOsmoP!Smo|FQq6Hr%Z*!3y1<{F&f(l+I1kZ}gCMDU(2MlCbV zBN+RgFjHLzQBj6*RiDiA#HcT12=n>}((2bq1N36&!UYhbal4+{_OFd<*CsZSuWf*m z0&L|T<9ZvGOeny~*(y#Ubv>YQ|BpAU#(>7@beH3pbascLGR0M&g6+?1JkyUWT z^klT5gq-tWJELi*{$ml%H9 z9x_fskQztfNtfxiSp_Ov!E1;9gZi+|%C~P({>b{1lS= zckEQ0B*1FqFkcp!U4qKC9%vsxZD%$1ZN6{7k1N3fjMqWuO$1C)P}=$wN5V#e^tzin zhpR{jBN>o?1WfmKIHUu^Wy6jm_B+C6s&rp55l*F(+TzIA)4j2@UdX)n!KElSoz-6fbk65SH8KcTaZvn z$VHI6YcjDSsxHPJi{1A+{cQ|AwQa58=9x$>Z>l!V1AL20y4bi ze6`7sJ0`!3QUpa315DTR`uBjud!l}HY(ONsZcc!C;$sGrxE?-w6w~^ebTD_{R|UTf z2$-IKXP%EY1m!n=6n+D_f-@aZ-VGOyJH?G@w9f4G?hA=pg#mnpy6cj!gt z`9~q&Y#!sf#qg1G_YGOW>owx7@0^mqdP9~8ao-wFcO1le8F-SJBzij6K*SO77$VG;H9}|A}`EAGIVZ{Vze^CFCMqEbd z6&R%jb--L(f*TdsDMxj`cCmjBFy;YJNWK2T6zc@BWS6$f_48LRWmt)jp!%B_v?In< zbAC}I+%kn;Z{GE!AW447@nO&&zu2Ygk(%!UF7F{sZ#Z7PXAJ8INyMDXafM z$BsWt-uHgR3x4$2v1pZx;hJBr+;I^yajry%F9LtVoDYcS=ut9qnDJ@5W|E1LL-?7G z7S``pl#G|Po>hN*dG*u&)k>tjPPc|H{FJoyX{ltR<3Xmj>(W%8;oj0x!L`hz0h(dP zmUEc6{RhDm#JRl>FS&)zl2+Xu-i?4C-PwC6>9@oCPr9Bzx3UahKOdj;c*5);U~8`b zr=8;rh)`%TT9?g9&kHEMRf)cz4(I5+P1~(nvMjls7Kj1xs|CO#O#tx0~14HnGO8vc?3o3Z+cHz-wxDslid};XGN5|bGFZAJ) zW6&N-fvOJ&!+Qp_UGy^&!+Sg4H*`hbYemLAWuQvKf|nP6eID*>@J62Ou#Ol!ZL1$V zMzl477i+~J2W2=cMdgbIwS3hF5ySfCDVZZRPBsZUMw`|<2v?0OP7D<>^hQ^$ zpdGz$w?KSOg=u}NSx7hTp~QE6+1L5JPuIL zxY}FrtbV*E0|!r4e$m0ZNF}oSV)ibG{Aid!Cx3UfBds_O9hMzPH8*>D-MAqvV7l$R ztGa(aIV}Ka8SAhH3CPa9AH`Akyx$qH6ZOt|0Pp9+>Qkrlg{=nh0l@oesbqhwa+z`$ zolwibaSo=MNAz_^x3lsP4s;E$Y8g4A*KeJ-3^UyJ=lfEaeWPT6Y|}vC>g|Cag&8G> znyT-w3y;>+;1F;$6_($O`jKV#c$h(Sz>1tssB%=Veh$OmUAMR~Tkjxh`kdyWZWU!M zW&6eN{kjo^J6v^*%WVaE5k8Xp8s47D)%{_F@VxM)mz^inD|!Rv3|Y%YbadK$M;fR>dt6`|NG_F!Kai(wAFKZk4vmE?PD{Ae-(E62od}EQI|Kv<8NEr2p zmZw=WI~^;s|HJZ7@uH87YM44pQgY;85dNso-+HV(Z1XhXYl+-m2d<*~(V|gZ>FEym zK`1Koub2P!z2BZy_sJt}MEcnj9Cb*r_E6cz2p`Zs{m$?Ei@=tXF8m1Y5Xh*Vh4f3J zYDGDimJ+Wp()d)$IU>xG1PsVEsoFD=#052n0lU>`s8@+M)zdX(D6)f8I&A?8XOIfqo`2i74x)un=m`!Y_H3aTx48X z#F^&WOG#(V_LWY9gBv)gk{Mn^INcunN>`0gT@k(R1kqP)V_~CGZI^@3yNxUMc=XMk zS@I2+k4oZPl)nnuIv<|wx`;hw0z_=})UP~U$d7(`-La{+7}rk$<%a6hCW#TabaBr_ z#tu0*b81{PoE_GMg>U&2jx3v?`lK0f11x(E1ipOeuUc7P?KyMAMvJb?RvxSgq$m~( zS-uQaxW^xs3>-NE&p1*bcQD+*JcOf%f9wLFe6+Hf9w9ii)fbviql=U1Iz_$5$*~su zZoWYMIHoi(O&_MeX%EZQ-;#%7FWJ)yw;s}>6y9B}KC#ZH{@Rk%PQuge3quW!776D* zBIlYuG(Av*PQ$m_+3f#n$kEdZ=UKPAuWugOdRC{A!S^{M}^is$?LhBx9n~CS-)dYue+$Ga|X<`|M8vVqQsj$Z}92C7_b_RWfBf2(Zv|($Ch` zh;e#Uh^uT_1_v@A>WKm14O7#{SAUiqnID8_MSRiy_f@eh;b(#W9A!sy8%SRLae*zr zDlM_%>}A6zSnFWlxVVlo?4r=qovOcq9{}pmVv%mP6aBj~oA!pys5;hs#bnvM><7pDyEM1}NT8c8bH`>jaNdq8UZ zc=Xife{U6XCT6uw`pvl{h&g}#7ATQoveB+i4)#4h18@=fX9|urHJFoL2~z@=T_9*RfknHx7;)CwmKG) zG6ObPD^@wRjp^>HRHYhx|E~%$4mug3^FY-7RnDe7%g0l_fG>@@dPwiv(A0hZ2HM7B zgZz&Q8!S%T?6bW5<;0Rg)9-T)4|kzcPA-Jb)rS6j`1Rqn*i(PrCUs;E_kXl*{CwvP z>2|LK-ACl-w$Hr<9=*S*+h)D#y-kesp^1msCrRg%LuVOmXS-A1J1Y<$)bxTzdW?f< zDR=We1n7!-&MztW`do@bPrr<98ad*}xO!^em6+#7Y0ob?{f*zNc0yoipH{ZHbTQUD z>*d(xuIpDyKPALxy_#I=x^WMc81>3|GScgXcZ$F$srqPPE zWWk<4bG2`Oj3gVbDm-#raC$%e`1X3v%BlLsGlFQxr{}kQyXfc^s(z(wEP3C+m7SrB z`%XJOK5+S4GskuDz#C_2{K(fc)hFME^k=+UIQ8xP?UNr<)zY8*-uLms+r6LnKl=Up zE^6({hJVXhu-`Y%qSp#FH*MtVe(&3WS-w_(LfoR0e#FLVd3&VJ>Z#AS<}G|y8(i*A zfgD{v`s!wkf&b10l;3?9xILqB=-7|bn7`L5_x%n&-~Hp!#v|`A%uan7Vtz_&kp?Z4-j$36V4`L)^d?{|;WIV<;G{~jnfwsKK7>xcJg zlh^Mz4LrJ%{cX>ifkzv1f6D3RE(Ar)_vfw!rAMW&GpA#ipJ2H_6Xx@n#2jD_nxB5- z2lLF0%%>hqa4@SWDCZtM+~*;=mTIg|CAZJfdKdC$^Z%T@Pe z<9Qq-5!;o={QEq~A^4c=qaW1Iel*9nnqbFy=lhT8)#pJb z@^+CpA#2Ar1|QmI!rrr%<28{Voxusn$d7_&+YIC%n&(8Vu~JCcE$Ia@o&|Z1`3k)J z1kY@&s9?K@i579g;Y?LL&yUYdf@g6^er3Vjk)ZsY_@oLx$3Vmz>Ebw;J zFE^v`_!<)^%2V}ZWj|+?P2^nc=f!yz-`Y@`Hc>JWTi7NlT=B>)J6|N*u2A8ey`<7Z z1;t(SMYS6eT1aJu8CjE}B57;!kZ0*BeE#d^JS*S6*4UXW7m9vVn{;`NGOCaE{7g8ER`u zWl-sF&w?^omHA-hP1uoTUZHzm*+E#zleHq(%;Mc9MgI-tI22}I>`U7?n3+l9Xf5Qx ze^z%rufT>JxtftLjo}%dut&UKT%JxjiJ4 z(pKw|S=t?2dxXUE-g*q(R?wzeaOgmdTu4oTD3?)K``sh!Pisx`0!MkGI43h5SI9fi zR-LL|XS=n2eZ0=0tt|0HAtQrxLcO}3RFu|GpT~>L8mMpI7T35eNe?GY0)2Z=-6Swo{@rAV$2hOt!Uljd}Jzj}O*B;CdTd1YB z9X~S9PsG>y3|3zXscJot(`iyz#B01?SR%-%sp0d54W&;GG+rm=uB;VY-rDeN@ZevM zJZNUz%YhTS7ETWh7Vg-(e)JAEPry4hbRhTo&(n7YOUC^7E8!bXZ>@zp3tp=iQg{uk zZAT;-B}ef&Q;u=;>8h%JHEh^spqfyVKS;woyexcTPW7CF>$(85XB=y53 zj+KNL8PM|rw_6P_WR1i07TSXrUyT+_eGBLO=_eZ#wjD1azf44VCHgxbjEy}TCVvj2 zksR!t7KS*(_Ba<_)N=)r{! z)AO8L7h%sY5(X}cUtWId&<SilTC{kmnARC!&8;DA+FpbeX}LSYT~axcR6MquHTv0K$`jXcyt@ z<}$cfv&n_apxDgm%qHgtc_(3|U+c~U-m2Tt&}4VB#lt0Q>rj(c#iUkXGJ{P1J9#~+DfoaH*kTk!1c1wJrIe{VziWioX4UYhz589RN{wT97SDZ zKr*ia{Rqgn0`x1vrF8=I(5NA z7*4|h&yAu!R49lm(9f_iO@KiAxQtqw8SRwk|DrMC{i)cSwKtER@l|jBrG9y7;jZn= zsxMB>-__5cH{M+hDzhKx{5sfJHGgJl&&j#qZe0!5_)rmhfkpeR7<;ixiwQC(x06zC zzxG?lJQV_YMmPg3Y>JHe&cu8hMVAQy%4Ebx24=AW{n-yQ<_FM;Kz(0E&yS*4m(hVl zkYY3H2LQ7~#;jtI>ug}G7`4j8{9s}}6G<`>;{pNmZ3_KC#y$neY5K_x5pMtXLse*i z^%>Crk}yk5w0R@C+6GiFL=SoOd>=(+2=0V@tkV3&N%1(*({}djeBSrl%^!Xp*TwUn zdv@NdyPN0K@M&xJ@}B-j)7QHYeN(qjuC|@@YwKrDo@iam+V6Vz;fd33ZN;Q!&;};B z3<)Z%fSM(NEJs0FJ-r`^80j*QqzZiOhgl#XWVq8`1XL6QP*Z{aAx2UG>+-)V&{6-# z(Y?pD`2YU{zpkCDt!*9G+SXQK60LJO*;;4SdniJ0wj!yOl@P+ULt81GB$Kd|47~}x ziFdNKR0u;d2`i@%LLYMMyWj7>{jux1ZM$82-LC8TdOq(DI&2{i_dkv0x(VdRO8h|r z0$GWjV&lH1nZMUqDqDfrR*N4-%T_w7fMrntELp- zv*MKtD|T+Z^D40F#m{Tg6zQzpck(VZ{BBV${O`_2|0AVQ)pl2U17_b{*U^*T(&rm% zO&5W701V9sqj=^b2rewWzRqM>6R?Md8PTnlKiC!=6>!RE`GIE!=V>R5<^TaRrLi=z z<85*H`+OL&^~MD@A{?-spkO;R)7bYSd>3ZCx2y4Mcn6|Q1e0aFt^1IR8Z{qqC;m((i&5!5wj-P1D{C;=w6z$LOomXW2 z==GZH@t(gv}v2^zgEE0bM_qu>}BhNm7jN_j25Ebx4sxH zNGilfHeM}q{Ggh~OEoZaqs62i_j&lxwXH{EN&4RTkA4jsM(1Qz9x}WjkJOxKpv~R; zVE+*ktvLNxwSNBH>bZ4A?mH<@_I>W_Jh!}};>r1lw}-~Q|MT|yrnM?eiRyWY2y>Zk z(eeKAhM!h0t;hip{srOeOi^oP_3%CdoS?cfsW-cO#qvF1{$R(GM^~Oa3AuHNj#$mN z{7J`Fv(5GaW+O<@1etyTun6AZN{-E^_h%oFoxbjQmKTD*qIvcQXH20RuPy|7>x{B& zC3;82k5hVi=;4|3M;Z=Qo!UB*SU0kgba(cOiWN7ii$l*Jyi)C(SsM`4a7^9VF>6$H z>5VA*nB(`cu=&%<<^y+j3ZGM^@IES701LrpAp$Bf$5g0UY`71B8*ViJNx%!;rCBySqPFI_fv)S0|0;xX3$YJj<_FsTnZf^ zuu;c|uQQ%lxbp#Y3fz<|3{+bDq2t2XfQiW}=zRA3_cK2}Y`hY$HNoEyZlc9le%%Os z?zW_2!p^jwkZ$`ccXH+qjDOK zr$2dc_~oP9FE@4qt&3wC1%R1YYOiKUQK*B(t9IJ36J@ zeK)HDbo)Mo_PM10P5Dm4tcp&T+lrPA%~s4WK5iqve;xW~?$!I+t6mc@Q!>E+cIV>+ zm;pNeS1bNA-@LK`(V;P|CiqX4*wqk76qyxVF^6j~zv%dyRxm+>`$@n(d1Cq7Xc5c0 z`7ht{#XtD3Jlxh+&{>5zUuoH2fqxF6^3z}@(0mHQ{}f@900O*t`iXA;h9jYcKifC~ z8|NKinJ;|%X5(62_x|~wSg+`nsGXM3-W zJ2+o3>T|;T_>Eehg@3wdpMQP3(Ypxdd-A;c{=S6=hH6%LGw&V`T}S@stSU(=UeSajC&#v2db{W5vN!$q9&4~ODFz|d&bdEd^3v^o zEqOYW+3>==w%N_)PYJ1U_X9FEMflGTFXz5v%PapJV69#Fm*w?v?1{RUC-+jF-CZAw z+A?cRLl)aUuS%M;-^JO+?$NoVEW5cYFZrBJzPElU{r>6nOC`co%bC1_x<~)Xr)R!M zIhNh~wA;;h?uz~I($u?xoM!*lrMx-U``B*B(jTuZCQdZ!v+i6u1=MGrI*XAlTyR)( za$)GDvA~6zOYRf`8+%Z4gNyPEpK!Z$Z#%E^_hJdl<7%Mm-7~lc)hwMZc?ysq?I5;y zRb(+e3KLF>k)iFTRC1zC0o&WonFqnDXgogr$4}cV2JVK<@oBruaj^AVY#)*I(Vc9MwK)^>aiPV)GB8(32Pytf{rA4TQoC&#M@#+cQi=5%xK-3=$k|J>oDC}-&Zxdz;r+*Ff1rDw zX6tfmVL%!&2FuZ5tm9atmO+`JKeF4O*KW_be9WuCe09(I)lGh5>~m?5*97{Cf-iccePjRz;DxBu0;& zyV8e)AVva(rq+d1fA>FH-AtW$AhHLijO!JbqTu}HXluCKsifa+8+a^X-bVY-R6E(O z<)2T6Cj-h&qZq4+N4xHbq_I!0qxOad9zfY(LIYe5W@1>h?IRWTv(FOS7X01?pm-46 z$D|#8s=%2dmPrOHi%g)%TP488s;hA)*(hfvh+7TaTA)rtxr#tsIQELyXUxexl_Q0%8cD5I`E^sX~ zoj6(NP|sqsQHv|3J`NU@o)t4hXQFaUT;1qd%hdr5yOJ_`Oat|nTa;3(s_z=Nw_=O+ zZ93|IkR&}0DoSaB)86w@4#R#$tLvXr-7e>lAx5BayE)Vy6r7d40gj43zX)!Fm<<{}Vv`?Dene>SYV*LoIJVn9s zN~=ZlTqs+|4k%x2*^{G8rA`=8w1VjxX+qg^>c=s;OGhLa-zFvBRUTtqF#3f>CLXmu z#=IJ*-;*B)7C5WBe1}GM2O;3JKEqv`N)A3_JlAoYCD{}A$#SFnQIy7%{^-ntxtRP= zZM$@K|5+TifMBLqMtQ)_7N-g&n3-$|PAInIy#UOU(m0l7gyKA#=PPcs6-ABG5$PR` zc&91Ap;KI*5Rgj#u15Kv>VnNca7-?wN$?}c#^;0N3H3GV=1=7rt{Y90rPqRLiRc;h z2Gr#$C*N0hv0UX*>Jv;R&Tdh~dUu%Bh^Utm&K56JKc_a6I5Q2V*!iW2|DIZ#o%Qcp zSbibgTqA|thCMB&VM4yy_2^y)7OQAYhs$Q)zVMLSbcZGVjn?Y}xq;gR5;XrPRZGxd zLMuaKDYNmYwnJv28W+1@!0wd>fk-Btytg9h%JwwMYs0@Y0~A8>ae%LWZna?>G~1YKh5;^8 z@w`{gW1bk_Iti^n>fWeJ~OP0|9a+XD34-)Z0lzGC+67%-OkuxFtba7Z!f zuzhe_f;szt{!@WF)_%|`>|L`edZM zA=g*h-Kz9rB&nDia3NQY?!QAu@i_z@SkYo8-q-cL7p~{*@#qe$n~vKFxebcV3%;#* z<$ZkX-DEm;+jy%hyLt2=ePXd|kmJz3<_rIx{SB7qJ;tm^N6+aoqSTF`#c@CHy7i+u ze)nJ8%1z&}?Bk)2J3cO_h^IEH%o5gfUADPes3RJksBaSDhTKssRG?i0u*Y8Y+zG!m zP|f*_Y$p$%lSlkx4_ItAu1H@Ud?v9od1GJHs?YCIIkZ;{tTT4QmIYhTbIm6}CbRM4 z)%c#k+Yay7FZ((4C}G=0`^u7y#;}j>?FYO*@$jpf{@LPE0=VfLO3*$#UEj=zM4U|g zc;?+oj5$AlmJI-MC%=t{Y1#7z1PYdI@?{OL)k<>L(x2V#>aLj%!}%K+eXz`Au7ticLo33}sWgNO6CqtWYG&T#4Myq?iE4{A84C>mfH4awB9i+t7T2WI?WE zRRFp`q{!C89rb$-h>`ilio!7@+yKot$hRrcg{_Lb^F_qu=ItWMeoyIE4U(Ze6rqu4 zxuLSua{jiXM9jGYy&@stc>apxSyuAJUZr?Qmccu=g^pg?SB6WL<`_^xYl^n9rE@`b zF5y~^%FpYPEI%5RUaZ(6I$kFL9rcKv22|9rBoPr%&BCoQqWL^1K^U_?KgOCanM;y- z8eq-_r@2<9`M)U%-O9{SX&OqfVvwWDM`{C zGv=7{=It@}+;1JYdHB!WBVb&-U3LBViRy$$&~Mh^%UW;wu$hEC2dE{MVo0I-)@mnvCEko3sSi z3QzHDz0~mLFH|-U{aab{2tttK%RR+7mL7eJhkK%jzS~&-<`Hm<(!WD!5vkbI!rFA3 z%LL$+7MSEkKLxSbF%H;>_;pWuE z^AFuGCyLnyRBo$0i;Z4YaQs;N!4w{9qgsJaHY1wExIWZQwJb$vXFe@*iY#u|9e{6S z%Oic4c;8YIr{LR@Pxrnfx(A?AD}w^(CM~%}nqidZ14vI6JibzftPk+!xa{LOt}a%D z{ate41Y#>c5u9)4SXGVe3#|`usV#%%o&YfbWI|nI0RXOn`dABKERb6ax8_yhm@e|I z05RFjT2w9A0}aHMl9K^*zId-%j7tWH#n|OZR=TRBNA8WU!M%=)0GI2F8t8X@FTo4+ zvTJn?ltor=In`h?%nt_nZlz%fgVgy+C5MuC3QRZ?I*!%oc)e5f3%+s!xhz>)8Bju` zOIH44y*x= zP?f*obvsHzTaojUktRWO9^3S@Nn(x2mC1-$py*nx1yPBNA;300fr1U?hfkQyi6XV{ z_3|{?@+oWg)*^4{;i8{#e`qL0<#nDU_7oMZVk2W9MVwmPs)Z*RkgJlBCiU+c0ktMs zkv~zypD1!;z@i|eiKI=ablv?vGtjZ@!B`_I-zd-1%Oj#6 z&S0a$Y|TRS==ce;=Nd(JG%8b#$`uvGrR;W7$~TRnvWw;0G>9*cC42)4heEGwhabM) zlWlO!Y?rTxdIE~&LOnkhKz;k2V!v}F#}mwDDITSk+;&iGAj#ZJWkZ$xOBmL0E$Ni< z$xuWIehQY!M?e1s&kR7j_O-fA$v5@MJXmle;W3GKek1?9x>)T0pV#9(;%!+d_bKRa zB|4G-Vo9?6cKLidT+oirie7z^Bu-E&BBIOO0u%xk%$z074nRk$B?-~!9JbXA0&0ue z+HP7S-P(>g<0+moCErRy`D0+g1+6DVCrxo^5lr-sR^xPsj9ok@mVi#Dw-Tpd!d7{T z^k_nWql*YRZ+il%b8SkboprP#haOd10IU$9mjDp!Q_*JCaT4G3M4md7{m3+Nm8kKS zQ=uS{qWwG=+m7a`fOET@HvMzv(`6aDk5!{=_bv9WQF?o~p7tgELk7Gyt7IS#3ZSF2 zRcQwaz9u4)$pe=06|s6^VuoS`0L(prEMUoS6P*!uW>NAN1xWG9P)f2Qeqw&45}l}m!gI!U zwM(PQU(8^k*G}B`n*l4ppbR81vQnX?g08Bf>?!#M%(d((7=s8dJuP4MRFY~$Z2-`@ zt!RF<>*1X2!;#pm4D{+%W^g(xOOK`lR zyjF#vuZ+Yi&o4$X`aplBd}9HV!7JJd!93vdZP3T=!yn1itCVE zEJdyeOWA;t&z&|vbUJDaAC+uUbJJpKlHo;O$R(}fywhM7Ns+=U^6sPBDNST5Dj7ni zDdprAx0MBo^{OHhZM-<~AwC(tq4G{#vUHdT^H-N`Qllav#Nlj@ZBv)=Hj?WQYBL~T zu0m~7%hwF%!pQ`R&G4676)aZ z1;ub)fP!}#G*`>!tdz!9%C{L%u+@8R?o^~`WDE6sh{~c($wl5gWKJKt-2WIo`uaY1 zGsk4v4i>t%CVm!Mv0eGB_OG3j!6g_zVtq1tlL{3%QHM{KtY9iO8|CrQZQonP3#X?{ zek=NH(I@W=)aF)n`s3}f?Wm~^)G`&ldkToxpfJ=)`zADgV4vPwuI*g1A$)9mLh^T|Y{LReF|)HGI46Mm7u;zkprQ}$#%#63{# znoc%o5U2n4iG53d1gXOvJ!ZHFo#RhVKEuQe4`nYYDqp;3m$_SZ*0)s{awl%N z`&O@)H)=i7ZntdpetrA!f?2rvFs=+^6It2uodH9b^Y`@t7GT)hYR|aJ>7DeWZqY=W z*dFa}U5qT_b8+h-rKN zONp$OCf*8czxS>;f*p{#7g>bUQGccnp}#Y1RauU_iDx^TI1qL5sRMptBJ)4qM)Z#F z4^{|%MW~!IoFt^9#V*y!M@wcMRUX~VxX0G*W<>ID%q!zL$NNiX^mLKRGjs_QN7>}j zO0L!Nrm86C15MQny-qAIjbDM%y1mvsFZbES+ONc1>NuY;V}2{awI;24dGmpFM-MdD zWw{MX4~7I^PcNUTzYZ%Z=H%~H=6!y2{KzgCS*=>zX?DC+>RhKjS~~4Dq;9N87<7j3 z-3GCdxnXrDnh)j;oj87EryaKx6QJS3IVs!J0%suvqMYjY88U1TijjECy-dU5)@v7Q z%xLp`yHJ{W7v81LY}>6xo$)Lhj`nMKeL%K_*3*SKE2;bE!s9$gW;Cl+1CW{!JS0r% zwl)l>4&G$xong3agHX1(R0Q87K{aLxBI`Rr?=iWr&v%e-b~zs+apoda!uuuCYmujv zhs25JZwEf=50gdgZ#s`bx!^h+EavmOZrhiZ(0gWXOMLjxO%EN#yNaO&xXAo^7|QJR z$+z}a+HUwQca03bFha417eO<%mdArJFGUKMK0~9Y_R6%}E;qR=Uy8gCJ$HCQx4Wop z9YNXAh?{pQSeIbimjlDkuz^}OrMn}**pO8BNb!>P;Th+RQtMR(>5P~<2yT{Gnc3z( zz%~o+4iI!(t!8Tvni1V6@Q7jCj2_=18|Z%v=Ia+%^n4O`!%%qU1hDY+0mQ0tv!ONs z?5^Y@K-AbWI1*XN4!6AW`67gA6WGj-WfB#0}heP0$U#O?M_EmY~q)g-MbbwW&UO?7-_K+UTJ=5K6))4uR~1D{qYaLGv0$7qG`D^xWxPHaD* zH=$?^Sa)_7JU2sb0!hs>)m^TWX*cYL#ARsxdc>JW(9EY|vwuY{*1nkg7@?>{SkHAl z$!ox+oZYi9!-aY`KuUfSRZV=c$MHE`?l!r_nmKTk{E~$B>Jil-^~b1R3KW4uBUmK+ z16E5&_20}un0I;Ap6jncPHTZVQ)07ynZ&+uK5AqBbC8|}TD4SJrcQKGp7n7N?5;3- zl$onv^pm$MdL^l?&mE>Ow94nR7SV`_Vp4N|5lby7KA#V>36UU~OBW#rghu=!QBPnZ z=OC#Ju(+j;^7cDx9`RwF#WNO~CBKW?@gi*grkm^L-xDZcaroK!YkC9ZRizu68m$PJ zy|WEfdr|@#saGJ)8)#9*1~tt3u@Pn8?;YnT?4l0#75NMbV(cavV)@^?@etU)bjPx=Oyv`eWZU8yOoVOQ`hP{63TwiB|SXh(c2%f+wkzE)N64iOwo#zuu3-SZ23 zy@!oan-PskrrXJ{#gM#m=ZO2&DfHZ8x+GMivkim(dJ-x!S*(rbks956_wV>wWeiNy zC3p~DaC}#|%4*aQ@wzfq>Q<=ThkaWe8^!mLj%x~#ppfHUz*C2iY-3R z(_Wd%l${W`bbXp*I=>`kHPh<9rC*#Zl=AtV00aVjyAggjydH}84i+I=-OMb)MP+$> zvBFuPg(Y$<5J(N-TFEVRfT<0{N^-6tS)G+Xlf9<=#(3OA@(u(T?iPBEAs zYEbk&xi3c2a3}|v?HVYjJI(RFDl+~FxEod`CO;+296UXi+-I66nVfs@8`vm8~o_bYJ;h0nI0fWj3jl_|Z612$)%=VUxj*=87p zr_}bw*PX`+%fvx&SW20CSB9^aDwIoh;`Dm&-hf+KpD)zKQ&-^)h^T!X$7NTDWjKSXQo@T!N0{r}; zxo@WGBa(>_EV%qE!h9e%$9cl9-4@urxxH(6jXG-X!0*znlM&#P_Q;MmyO+gu!)?Ex zc6}C3$8BVdGFC_Tvapt`K2_V#cA1j+U*Moz3@ZHOSopQKa7{c{ zf}ZxQkR3?pS{6buwj>B6eg5Ea0gj!L-0RQ|pX;v4XorRHhIg5?(H1fBn1xlp)((1# zX%{;{__ss>(JCRj-3%_;cbm?(2p?jNXcs_ImqIaB-9=AE&(w2S^&Hz`yLkq)&^^eY zc97`WzjZ+4JS?5b7F(%%r%?f6fv!?2TWiM)o6)fs6CD=Bhtm>4variRug4g|f_V~x z0f-*ZoC`R#w#2ZY>DdC_p$8=zw|@9sKIjn54K;+}2A-V{(0VAtD2WXo!%|bG_<~>0 zFbF!b81!w`Imd}z^0|S*i2b+VzLWfUdg;vZDwh(CJzF|IP7E`O<84>@6-Y@o8k=ai z$#}D-AW>sr01s|808EuZB&F1+RY|Rsh71_v4UlItoW>?DHe8>PuXA4$vp7-f>#pOH z1R+B%7wIEMKe2%c0G*PRjDx zJDtr0i+<~TJK|F`Vg4exFVCd=>FlwC3r!#xPv@Hmr|Ah6^_&0^H>%#`MQW&k)Jp~r zDU^Esk~s1-cG29R{Bj&m66)SXo2~V3()q^e7U<#b12UHbfK9l`)6$Kp;mFIDOiW!? zoYp^CXJs0>j_&eTNn7^8nR?uQEj(rwH;83IJsp2z(JqB>Ux4df1`n;&#=Cd<2kSgc zmDXXMXLMQ$3G`@zpBf26v;ss^rIoJpU`c((;YJ^#%0Os ztn$O=u@~X$O*R=PsZe91F=5a_!q`ANl^U`s(_U6PKRT>d_F!irFfN-7Bo%|>@|a*vWEBZzTrW`~_M060 z8pY@Q^~XNnslV3@@-2>#HLx=J2SYf{y#iz>t{ymWV5j9LS7d4K+wB527_QlVK-04L z%|5TJ^EYBjRX0_L<*9tgi^=5_!RNWBm%M=Lmd6j0O3&|p*KWsX`&!m!$4o5*+{3wk z(NZ@8SW{h$gSx!qY!}zyF1>x%`FT!_VP;x5behZ-9>e@1);*cb>T(EQwbPr5HCZoC^&Ch@q0^Jyv(^k;SISNaM76YjF;OI^h!1yP9>3YycePH4 zixWH6gEq434l1yt&%JlISpuI!Y0;9EAaPA3jxDxsO5ICu5fnm>Q_>JbSYKohsfA

NYPU?%nxc5hnG~%Lg!Gk)i^9fs0(6Y{hB^v%0RCsY2pR$G^<#dT3`d0lRez+TmW|88Ljog~fW8mn*jH^6Ah8x0{x_Osudg z)S!DgC=D@4=eRmsu*3Yi;UQ|Bd&U!(rYodU%Btjs$aFLM%avsa1VS33T;s1dy;%ZN z0``+(L3&+K9GCV>L5S8dFTwm@NR_sLhd~-J2?FDi1tKn=ES}5v3hm}P$zo!JfX}c= zRrCrO(9Ov2b0A5B2BbkuodX4FA>{b!O|-WpAaR3jT5jmO^YQs-uv6!;Eo@XfWRZN# z{yyBN3~u_^_Gur`DPcivT*(z_C;*=(1_Lviq#=E>KqJ@RUDFA{Ljbs{({%B`hmQo0rx zr1LA`!DBiPx)@X?g|xu~n&6>IsRQfDLoot@O<8mt?%&7Vw*&MZ(*;4gK!dcR59u9! zET~TxG_13C(9G+X`o92y7hwxBbR_oOnFUgRgDz-{GnT{l?$bmTKB3j?^0O9T70=m0Qa_$|6-GNu$DBP7;J==3%C{DS@ku3qu}c~8Ot z<}YqwKv;@MOID$lC_&T~*b4&!RSXXWq}IV2HyfD?0IawR_rPlCZSdf6*pt3<(Z#;O zMx93hhm|LW<-?YFgds#?Up?1b2od_YAtq8gQ4;h5zUtk-{$t|R@Xa0jx-l)<6|=rd zSzkliCB!nwfz9!Lr}OLA!VF@6lQT;Kj5l=Ay0Cc_7uNr5|N0a{*@!E%0J<#9*@k1* z&b}2*7T(u+n!x2jO)!6+MWKfNBFxJb?yu+0H%*W8!mR)40!UpUt#B71dpfVwC+1*V zk5EH3#YebG{rXMBC~R|oK750JpKIRy7jO;^mU2yjsRU6Q!dk|PgNC{OaZ(?l6q1JR zcnA+nl)y00LjvIcT*`@N1MeHSbV6hbLhLcl4QgHCTQ3c%(V@mTA;Eksj~!r?%0F&W zOmE^Zd-<%oUE=N+QowySVohYj;r^GoPvO4d>{%vxT?jr^Z>*RuXxlg!$CS8tcm3Nd znK#xow~2#spO5vqWdBggsu%krbTw)7kP|T0hP;qr_$ZF8ylC2xg%}zOW42#Z;J@$i|TxjqCX#IrG|xX zfE}LmIdF^IyU69WY66Ql+wK<*Zok?-3Rn(nrjBSBvM}pmHolELUb3As({A+zTaJ{iXfdqX~Q#BI)Pg-!K&bKOE~)qd)bnRMN2ddyQZb%VJevh)wyY`+l#E zlwiy|$2Y!4g(0e(>h2!Au(mte&SF~f-ufXL0e(OcK`9}g3U>6X^h$L zw}ZSX^TDa*7dQVVZx%i}zy9Hc9gbUap8U7<+t=TYQ}6AV+iX61u8Gc7&xmI}O7bws ztNdQwU3pHM5}JK5@9fQW<#&PDcSB<5)~Z8|_(;jf_WfnU9YtaEHTS>WvT@J@Ylvbli0Bz*_O#&P%fntr>VTe*Sp9x#gYU z{|)cG6Z-p?wVsWn`shjgfJvl%N@bO+buEzYw1%ZjaN1En#jnbKmHWCb>rbwt8k{Fy zM@vHSWk(8_-;GB++AqDPu9|qW&d!j}>LP}O^iH9c7_U>n`{iVUJ z8*b=5T+sYo`e0Ww2DW$8#C5b&vXC#vBzB&i%0=vfXszYQ50`G)(hH>&yS+ga;_E& zr0c(4ms_mmc!$?*oz$XfnXvEEDpb(9?TRNmicf5uAGYb~f!Bw3{Baml6%8(r3~ET# z$~|C2xVGxg)bq#W9{uwQ?`~7wc}BPhRuO!Xz$sx*nDSrk`t&aNS(Buu-DLT1=L+^9 zL02B!TyO*7s89Y`;SuI|JwqThrk3ye(=ILD5M!N+3xSy-O3jN{E)@$tiyF-x?L@~8 zZ=g6lukbBn3EGavPmSXJ%b2(}w^w70_@Ey8(XJC;=#sjkv-ByapdT~Ss(k-2=2UWE zTQ5(sWvzo{C#97a?~*UHKd%UVH5G=jV+S?j&pgMxC?)^t+&K36)&i&BlMhxO`TZb| zcBJWUq=D{Q?Wf<5Bz~};=1k+_Ou*^4pGVAC#;bQHEAmOkzyEyrhDQvQAX~bC^?-lp zjy*>Bx5gtK(bgQ?=Xt1^W6w~bESOy|v~gri2mA90ytnVe4xI}lBU!=0?S|x*9XH^4 z5AB}*U9`)(I~K4|pV=j(D=cNJu#q~+_a`6W0mI8s{tyRQJ9Fpz`=fT33=tkXiDf5G z@JUN_%x~9t;J?P+Ks!cvXawK!cO@#d&y+s?lvuHKz=hV^-h1?rXDQl;JImFx$o}hk zgnUd!J9jZED%7gFs^*337HeJb%s$g99E%GFKy%8yzeo^ZHG6sNlEYT}PGB2nBt42< z)@fCHwq~tc6k%G7WE#OElf&iwKuiRbQ2pbh}y|NkQC~5`^ zuXhI{@6Vn&vE~TOEIQ;Ybl`T}XyzmgTwA+%*Yh>25!}V(^(Qy_+${w9WzDxR_4j=U z5D>iX(VYe2cq&rEBAnw%K%301x>GB@ZpIo1rYKdb#aKk)FY+IA@dO@aUH~&|c z{lb73D7#Okd_?1(LB#D2)hIJDv1`S)drjQ`-W<%*hLNrsBV3k0SH~&4_SCG=+7DO4 zcOJ&4WRT#@EEXn(Wb5mwm(CgG{c~iG%Dh<<&RdQ)=S>V85&X8cE8~=J$cIx#+jS_W z5wm3)&;iYY+40xWi(2@A_3ezt^`R_9z#{tLE6SevKRBqTzojr`f!u#mPzF;^`n%7) zj_whaX8;p*-Vu8;Bsv%a(MWz{MBBLUuESR{9A7atv!i$x>7=|;=K!f^9%$I{Qe!`* zzQ5j%ZLvuSb74Q$Q2I=LlTAH{VIyk&wV{;Ivvm6}eb=aZb_u_pgCNKB&O@pGS{xdI zAnIqKRIk~XLZCH3kP)9|>S7pMa)ojX08$#tV*&o*s}wOPsWjut)~}w)jtJ=i_*JrN z6denSWei;(N6n0k$8O+9KT?0&c5eNDg=fH4J#H<3P<*pVBXA^ZEu?FvuN(!}Ee(T- ze_UfD?8`N1pjU!pt7=K1^zv^J;OC{$Jxl*xieoOmJ6O!d-Zw^WVN5)qd3g#x`tt0* zIoJ_K&wd{weFix4^Y50p3v94!WXPC07z0MZdpYuY+POD_I+cHt+*(xh_ab!@n zVE6JdusBs!R$wNz2w};c)KMC$VFj^?tMYCNOA@xe)`gLmA>{U04HrG{Q4)t+oxt%SFg~G60 znyx)bZ06NHwqk2vxUC=OkuzF>IHKp7S|!UT)u zZ%GDI8$W}>0)6~cc5emb<_1T718FgAC;jHvf(A;rn9?P%r+fsf8z=@2ZID431np>a z7druUpn+D?Fk6|XF?ZjYIt^%n56F+3&=Hm z6US$JnM3hgL|!%X@b0)faq#O$#ZqAoOW{@E{ve<1>H>0bU5|ih{GTs z{9$5``(y!`G`SYztg&g=5^gaZZbM0tbjw;0dmnWCy1VfY-)S32Zf8*L39x=|eL|<% z*ct);y1TzWv1g z%)c;w9LhLIQO3&YbgM*&Z7YFwwe`ZEIjS4kegL#IzcLS)R(lC}u5_?wx=fl?<2=8n4+vYZVi3)7MU_ z4rS6|d@%)jDVf(m<2RUxZ?G;qhiYn|kQ(gAK@xVvv3LZOXb34FZg`2qu-GEDk~H(K zWuL}0P;cP}cQk^e+eRxrgECwkb{cdXw1K+`sJA&*Ot$rqfJEaXXc3ohN0NuMX1}Ue zMNM-tAG~M=0h!6bVEPCH90xm{SsjCt$A|Yply(j<6@?$y+TLazGG!Yup` zhUBL$G zFuiWu?4zMZ(hbmpjPkML+dtLLq4R-64wVGLF0jc4(2U${?)C7035{DGGwcDQn{b5s zgKk&Ep{e+YNIvl`gD`R3CmDjhf*fl(pt<#&Ji7f`t!39c{40(%iU+1JmP&7$0Tl4g*W94WMH>$EuHxW}R>q-mz&Np$vef|BhIUTJLS=)0DZUlDj#n!L&%hgn)I6 zmXbf8*2f@zAEZiVpngEKRRwVKi@TeF@H_jHn;FRSQs%0FS9@<4;PAY?doeU>Y8?|#gB~!fj%Luje=YPHkb92rA zadf6}Np0`j-%NXN6&2JBXB<;=z!`IhNmEm!(xS4$p|mn1HK#Ng6fh?;OPWrY)-kgV zm6Z*r!(eJ=re#HC{nV^%JXlsX9C`RZ@A$x*#b&L=z1DqQ-^;eGxoO#ZoA5z2pKEqX zzwVTjdzV9Eosg7fI~l_CC}4CLVcV@}8eS!>I)oo^H1Bq{yD)AllNs)zZu34*(4?+t z|KZ?H73iLDu3I7JDEd+d-_ABzL>aq@UFR}BdlH38a*SvX>MTF7jZ=cxq zK8W^Z>8REctG1t92RH47r}KVZI+L2*cBBsk9j!+kePVED7Z;sCAeKuPoJc?z?Asdgu>5}uB$9xqdeD7+yA%6*~jL4*O8GVeas9LtU< z8nIc8;opgvK_Y_Qr1R~5e5)`S$#lbs;vtZ_S|DoK|%L5 z*-3O$&g0|rnbtv;Y)f_tA{%S|I`xd_!+U3MoyHt{Y#5QWrmfv-`>^?m;Vpe??Z!McAM?atCP>~ zT>rR?E1L?TU`|}c{CY6?JK-h?Kii@Wr7h?N4WU9$|`jqvMs+Yc%-Y3UnwTP z+?y&^(q1k$Z=8B^I#s>7#x(t!>oc|*jIN&Nx0e;P!}yl>>k6x4=9Z&>;iIa&Zl@ym z2I_W1=W5^!6)`pN&HLU@xk`&0=|S-t$_1C0o=xwaY@eT@ScOCof>Y9ZKURzXp0C?^ z=!#esxS2^fa0kt8BF9-oV*Lw04S)-7J-u5qEV6gCahg+{>7;VPHpN)9EqYwVheMt} z9k*&e51uMX+xyfuF{MJf<)iI?^b5B;qb<`W&YG=QnU0SC$Xy;DuzmEPak9Ai{i<7! zI!m@~mBSM*9pa@QSrIa#$5B#8a3}com}tXE>uwA=#W)|coIbBlF5o3N&!`5iynxwd z=u^^{dsBi5%?uN#Z2aA@rV%#7Z6@XZey;WKl{$ZmT4l|mG_j09`c$elH7Xp)i`AJt zY@WRbWu?%K!Jrr^-RCn-siObeWyV;lqX0&sG6v`6Vy8v;3gdvA4_dfxBb0;yLjHYY zSEg6GF(N~*z5}}vhT|iSpi^lk6CA-3W2$>|g|SW7`Px8?oLI5&UumkU_T74cu>~`Y z85?$rLQ+^4RI?BlK(w9NsV;L_KT}`tp2np2u+}edw z`Gv%wl~VRFR47SLaOIWy(JEM)=GaBUGCvW{>UmeiqQO-Yj1_KD5>^*>H72b$mEgK- zctt`L37NE_iYf5@2L(-z4+eK+_}>X?$2sa9;*7i=+s7a1@zLu(m>IiE zfd`2s8*&W+b3}&1T9m}(-3u0$9T`rmjj%ivdPondC-*0f_xOKp6!c^^*RFcHg~h*k z*EWkGxaSu`kwGCNrBu-G%T&*iXqLXI>~?@Sy@}fswbC@?)DTU>583Nzx^ToVrrZBt z?8V!n>+b9+&+i!*dG<4%UnXH;yxPcZb6q+NrqZ6pFE|D`-*vL6Ou1KnwvHL)b6?7j z_5FxTZ;5tGK`tZJ5Kb_Z!R`+d{SI?;2mA|}dXLhKxW!QC^?`e_kn09JV#9A|ofrsH zc`5j2s*yIlz3b<;_7Ba6KKI&HKb71GkMn;!d2I7heEg!TGOEznnWOS*;~B<}O$0r* zIUqf{+--*}HUX3(1BP~rJm5k5BV)@CJyjaBvYo8{o<*WZ6~?qprpx#K6q$Wui*oYQ z@kJb(vCFHvxb>bZ6M;1gUQmshSx)mGc2y*>w3UT7P{!BK958F@>vmf-UByh9XGBoe zAF&K3$SE* z4K|v)x9})6jRiv_F;mVddugY~GKo}hVefhM)VONJ&-?lTQ!b}w0&CkzQ5HYuc} z8$EP9VPl?Yj!#ljr-}O98>Tt_DAoS*ECn~>Si9gnV5B1UhJCmU8ftwYL4|9`*71tN zBV#67Sw+RFO?+Ys?a+_TO5FjWfR}QVZvPYR=0|hdb}Cxzo-!-(k&4R9R+RaNqF#NC z>xqv?%zxkZ+G}kZ(&abb&LWj(_hPxh*VBgX4>(IA?jv|%PgQnb15jZ}_zFmm7WkSq z8U7))E{;Kj>J(tuSZdt{+~AVb2BAMmR<%7wWzZ+-K|cLivo{fCrtPcv$v^P8kdt0V zV4;HlNacPw&9}=SAn;PZ`skkY^MiU#v-|nFM8?>PLAlWU^(H}7mfG%LxYzeGsoT5F z+3wGp69rf9JpWWuShdt&36FInTfI&%!PpEo6s^4D;Mi}{G>@tNVt}#o^WY@ z6t*F5u$ufh-Jso5x1u-xTQ%m!)fnZcI~yA&Ry%(<7!06)$~n5mcz0o%O53 zCmla&l8qDDW%Vf&j`dulVPbFA?dlAZdc)@URmp}qlZ?C)5 zk(uy*?f1~33-8SBwm)yznFg%Ab;IPce0?&?X==NsFY)q)rn}h)>ggv(KjpXZj6ZID z@bk%|!ONGg-2IpnfLHFX399vYzH!HqU!zlrSFSZhAgksbdg4W*5x==?vz$@lk_n!L zcROAXe^X6ECG+^xHE)f+bUiOQn07Gr>r0<{>t{{&0^>FC{8@oi{k0{F?Sz%t1mTw=7RlSerQXE)OG?nCT7y+u9HOb;$UMrzU%69vz84`L(Z>y z!hpUE_+YtFlV|XdeZol2%LC=qgWR8wJ$)RJp=@G{lix%#FT{z5BeQXE>Kv3hNH-{< zpluWxx}Y)isyCi)T13>>qUclHp^!|&E}q4#t6d-O-ab?o3I4AzW2rx;M&hGEanm0O z635`HOBM#P;itV}|F*bz{}J<2vxb+RJw3VxVMW} z8{_Rvsp3ehCE}`O=<;HcuMlaF4iJOR>s|U#7ElzDib|2!GkO~rD&&B1Bu0=HQ^18XiRiynJK|jG3bdGwl;Aj`W8r7aP7;(k zR&$zH-kd4mc zK)L|WXmJHSF!BuB_6d~$GyRa4%NjQ3XI#Y50G zpc-XX+jtwZvCuh&3;ypmrW=ngS+GBuvP3o?D(2KzsgW_9T-uxTP)`0=gY;+)xN)qk zkW|2QsoCUS*GSo~)8Q(xYZ~H+dv}GxfEBb;77_$tfMW1mG5FwqSsfSir2#diX<>?> zALh_Trd?4Wylw1o0eeCDH;*EUfe;7R0S0B-15`O!^Z&_pCGwOr6X=?ulL2pbZ&bi_ zIDLo6pqfoM`37##LPFx7C2|Kc%^(klb{K-1B)NJLMg!+$o$OROv2>nDue2}C)aDh+ zphf+XMUM-Y4ngG{Fb4-`ay>T!22W=(WgMvRihYJcLO%p$blPW*!37+!;|*B!z0sV7 z(S7qTC;D1D?kMAcW_x$XC6&L=LT=f5=<=5Kf616llc0nP<^;f5THBa0Frft0mEfRg zMd7#Saw^IPCEBx#p$NQr*-X{Hsav7n&YRf(RpL18{QsQD^HBds7P=mnd-bcWu0Vd~MhUp_ihnt&Xs4(` zs4A+)LDbDCmp35A1}aY~$=?cYl$`Feu3-#85t-1z`L-cuCFw+TupHg=v}NPiMSCUQ zY9TsCX79zs)ZjXj<#5UoQ~?`$Kcb zv$o1Dh=j}-gZHk+lrRk%jw~Mtv%O_w)kvwu^kv5hn&%Z!u~n`D_viximo0+>g$%gnvEgMaP@4e* zT{<#4CU0ghG#7ZQh>ePR1y;-F8HZmF@dwS1@^&hA4_s;Aj6+k0PD>w`)lk6Jb*G7E zZfuk^y1ZJM4j8PI@E)$i+?!t6)8#-@#2MUB7~g;u)lMhp!@tr{jQ!9%{GK|Q>>1i% z#rG9;q-!U4U)#Q^c(nVv`^42o^}C^-N}&QV~7TiG8GZ{x)Qms zZfJq+E@#>hBwxfx(cbPpaxEjdq-?05hp*pY1ToR*678iNHYAYbhBV&^k|P`_h>*9- zLUGXb_?l451!){GYYar&&cC$#`qhO8y)(;pliB55$VrPZD1)A@TbQ2OOOx3LFGpEr z^}hS!Q2-c3_J(54*!y5Fq+EilWq@9jQPS&h4SbIHwW0E5?J4oIMAj>o1rF!%!a z$@(7&4k}&ykH=#(8#%^33qAK{k2G0Nq_B;q7^KTw#4(#E7$BZe`28As1Y>m5uI55JmbU)7UVJ#C0QrTT+tN7rO>2;9fEktQ|5u zd(oMTeiQB+#Qk4>k~!v3=cQkl3)3WxlZX7w>arBD!uEfxrmG^><_A(Tx-^%P!}sCmsHC15F0~``fk<2d501 zRW3v~nZa3#l+8Fe?JYyQpgfp}zOYn%G#!3W0=kA^oY-TL^NAsgj@a8k4M2}o!ir$| z@X|E&+3beEO!K;-^NZex-|+eV^+fb#ImLL}>Kq_g7f_TGE1GOwkV zT`Z#R z*IJ`b{G({Fe{I)hk@PXlYlb{BJ?ODWe=6gJC(VU`xbq!_sW*)l&83b_Dh;W(B* z59Qr}^VG;nBMOfV=P=*o$3+KEKaaSdvTbPjgEuQ2(;rSHW4boHxqi;mZC7!%Ke8Nd zrQ)EMndUXdl=v&J*3Z47y;yYm`k-!T?84FZZRf5ZfsT5K#*c{g1>*SUAIx`={W*J} ze+N&lDKj6&%DT_Ln||EBLiDylQn%-=_ICho~S{3LykGmj0u z`-1p6I&x}v9G(UWn6iZYqKhWOC6bfQ>|FEMmK+M0@LZLeXd6noRer(tc+K$Tr7OD5 zTz^PKZ{&i-B+*0sk-)f?ZKP{Ok)Bx;gC>rFR5I=Fb6v{)#cfjtY@hPtP6c*M)odUg z_&N3N*{>$~r^wB3qyB~u556rKdn=o}Y>@aaY5PM5$vgkV|DNAvy#5ZI&oK|>Vm7m( zjdy0JV!!xr`H@8`@c#Z@IhVm>_7--(>a7EXq`Ls#y{=a8uTM%1yv0zKJNHnoy>v^o z4asbm!V_6oy1PV1^6FEejU=uKbL)_?x1~|hmUXlKVqLtXJb36gp1(6ehQ}PEtWCq+ zm3fBFVSWhQpxgV2dD)@qnZs6m%o6dB7Rk8SySi&8gNkk-SOyJ{+m|yd{s?14Crx`! z92fiQD|{}^qn@!htBa7*+K4f75#9{k)aTTDC@R8u?ofIZ4 z6gG>gJNeji=L_FH@@&+me5+=CJVaT$guSL>6GK84PFeFaLxUw$BA1zMn`7D{y&vll8^O`S69aX+OT)I`hcSsc{Nne`0Q(Q@rFz5!=niU=x}hKmuWa(lT8xjieH*u$+h(oNA(aq!j@ca zL;MrfPEev9KZ|QzP*FIgI1KwFo+zL-?Cfb^NmVrggOv2WomhWbP0&4Dy2mGCXp4;M zf^PvWXJlw&n@GZrINQqEv_$_3b|2cD!K!HRWGSWj(Q4|#Al#0B5+Ad3vBdq==i>oHzZ3BiZ2+U@f7rCGHy*HXCp6X! zGTqd*9h+w2oY04;jmoCf;sbOq82j<=oK8!|vpeeoZT4@O?3 z)<+)hRIUqKnU{WvFAfTh{&H?@hEe?*T>3s_@v{Pwjjdyg5MPQm+hQ&mQX600%02hO z@65|@TR%qkH;3JBcYlnLoCo4&hZM8wVt(H!oaBJl05?kB<-qe#Tv`JBKwsP=2d@+0EML?Bae`>?W z(cbV_8WqVgyH9E0+Eo@pa>^yDsvhLZ|8{izBtge*Huj^t_*kxa0lIcxK^TP1X|UHk z|1d=wy1cO1!}7U`T|V<)z$cqOuoo8i#cambX&+hsWEwn>xTGEXg|#>(3y5R2x*t?E zo+7_G9TlS@ZRDVjW7EJGoNM;kl82VI%@;h#%B?@>mgnZ=4*P!BZ5T?AmuINGLVi;X zLgfg&KA>=rnN7O;Za>_o6?u~1l$H^ZmxspS0JI~VMq$N><*l|i-fl1I65zSyzaD7D zutLsK6D_4mS6|bE70MdUvPe*P%}GyZ63YBofPDmZAR=;0%CO$qZ7rjkoqK0Re;u`W zdvb^2@n`e!pK!2C+rLW#{i>ZuIT1eL9&z;=rYH|>U=a+-!mlq_Y@UXat_d!$w{UBZ~xQ3NiDcXUbG?PyvCGaSvP^+~rC zcBP?}izk)Ks2tS1eM`V4=t|6u-+bSekiV}4y$Ky2Hj7onM11&A8`l2W%wjuGN%cAr z{@Rac{*x@>u(*(G!lihZ2nTCk>ZN6dp@m5VbIkTD@V$%5gx6CBT;(Y13H;aannyAZB;KJY%#~7e^SzE`zx-7w~jhw>FT-MbAk4aOVBLJnLss&qp0xNt<}yOE+hO>R3h69 zhP|zyCcJTpL7A-EDR6g{=?;1{2RD^2AjRJ!f_$hvbeTT|AeMO1kb{9s1jH2XIrP6_M|?-d;?6`p#%NsKE%|Eo8I@K~jNgA8?x$3Xe^Fd-s1COO z{bU=JGm!KrZ5R4@t$H-e^O#P;!&VcITgkMsOW3>}MGE>0`$N#BZ>j5=?yMr-f4BL@ zH{m~xT3;?EeoXXgBx)N;J^yE+nWcNGNgmrgrTRAiw>ZS4fTcsmo|4ZG#;C9b{wmIc z!=f+?_dk<~YAXU>>{o+0o#S20&3V)2ibekE`1P2%j~{&f!U9juW%_0*&CClMVvM4fZ(!V4 zM-kYy1CMM=sZO_3&z4VY7cD7-Ofh^~R1J~uF{;GotU)?|_*_Xois*ZC`kmPzSL8jC zJaIRg?w1-P4U*h9DJ+_5opVHEpF5gt#H}b-r3pWg+B{c^Q9JaYxZ)7Bfq6ZBUOVT` z(cDzyn6A!^_gpIc&|cx-kAgefawM)@j{Qt2{etciVMCK*1)`kq(s{8%rWRG-4bM@)((A3rpXfh#ZW#%}R28hE3{Oc5;o+(>+@ zPcq1VX7YXNaRI)AUvd$eU9`$cJu^I3x?ckr{n{{6V&*U}jMeJ7I`ErU-ar2axc3rQ ze4YJwTAOoAJpM96&U>)@hIg0z%Wg*}IC$4?oosMT=aTV;8Uq8Ub)JM^2Om~Q2**6F z5MR$IJVW;zRuFexJTv?RI~QAHGH_*Bb9~-N1FqD|yj(B=uFM#Ki4e zBCO~WH}+Qpxw~ut+K00#y*yQa$W^Nxx_scB$n_c=(1opQu`dgFwPiFL=%J2WPqQ9-N z|8#4AduRWd?*5LE{6w&edor=oxdmV+?=`d4|+ghF`#rAPz4UC83Wx(1Gh2;dh!Q)D+c-+2X40x z^mh*2=^hvu8Mr$+FgP=CuQAq~1;Dewr6Rzv@0RH-my5ppC_mw5cYX2{8W-xel7oJ+ zH9CNTTF}+|c;@c^I`0?{p~{CuSz^G3Qdu?y)}q>pS$a4udK5kQwslb6h_ITfH+v!~ z(L?awp-Z|zJAa<30>EmxUkQjWwmf%_dw-A+h9q900%8#mhUA0qy6^q&?0-Kn7^c6a z_+PIor5rO{VX;qeS`kx&Cj2-hO7!ZtmI3|-5O{%>-~#Jm4Jdbt&c zXQsE!OKMHE%ZkX*b^=qIUqz(onQc%h_y4eX!%3J@Ikb+;O`H-Hvnut($vu6d5}9as zpQvmW zwz5nE#?J~%h(bi0UbiCL#Dz-6z)fsnoF?2IGeS9b8>`@9yLi|>Kp$-8q(IE)@J>;N z%g7?KOte9Rp8p)k>w{9IbUiMys1FUxfWR)Wm<8?D2;l$(j6)Q(LCLegeGA>lnv)Nk zW_T{{NQb^;UvXuu7O~{-`wile+%`lm1!4lroQQ&gE+`LxIPRjNA!s#=Th0PvibSO> zC|=A3^O9NGV{7L<-su_})m51nv3mVb<+>Pwy&kU-R235h;pLS^m}T58&~7~wa~KiDtZ?D* z>}9-D8g9Mu8s{$1+4vqbCDcEH0KG1OjR~9O!W7-AT!OGL3tFk+n#77qW-H^KGXF?^ zcIi^|l3j>-MbB)y5c7exUYpj!eF$cos06-e+Er0{0NTY7?Iwt*ByQxCFd+!R9unnt zsahnU9&pT=1y>TSF5em*@a~yk#C!iiKV5l4Wr!ylAbd=e&*gRtpxu2!wiS;m0SjfK zLY!zV7wHrO?tw+&EI`j9+${xRZGAwOu&@m(9mBXi9DTKE1Aa2a;H6^F~D*R;Wmc+q}yo80#IGcZd)KwEI@c5*3ca|vZ*iAk&DT?ze%r| zo?4|RnObYONL(uPg8O1J%3Uhlu7Nu`?iq90`-?0wB(B-uEhVcWCk9+R9)-5tuph@W zo^rUfh6|I%H>C57-4n_)5cquB|~F}qF&>LC1V(*CQ3yR>fMNV z<|TNgkv|SxJC(Zr=nz$b+8%ChE*IovL9vvVmFV>HBK@M6OetL-FOw`!L1h;~2}Ew- zx3v8!+%;`FXa`Z4NzgZXDwlk_r5w_eF2R3K#K8cjKq@51q+LG&#AJzzIhd4HSMXfE zo}kU-rpr|IIbzUC39uC4*-bE3fyxyNkz-MKk|2{HG`V@yn1jl}K@nr=mEBxQk!Twc z6&CzDiw&i4_>X@80diqJtD-RHmDs`{Yy-g36HSXGiEPnME!I+RVb$zKy5F^){XcFn zOaf{wdzD@2IPylzA}*pR)4T{k5+|+}0T?|`xrm!q$3+%#VM*#Nw#qnW?4Xd#3_fKV z!-jk|TPlEqs{q4UEbI=zLs@mfQe)1T{wlk5)j!7UElt5*M_)`qv$|Rs09I-s4haP? zxm&)CLz*m%nEQteh{mPpS*}PH_t(tZjsm^DW6R0SZ;vHn&87UrDbydA-$P^d1fNv% zF1DV7Eonnw0B%YQ6bJxF_i38WY{vgkjh5Y04s)`L5y)R$^3oPtH;bHz# z90*PD)5HOIIf_j}Gqb>Sj=HW6n7pa8ULdQ?;#Q2T!E6RFhFSZP0WgCAvfADVhtTOP zOacI=a?uUSGvQK9Dn-bis_>9*PhY_ekXEMRgloitPS!oj6efKN6E|yY!>mjPDiigT zmMOtW4L1r0u2Y~>NWw(zxqV%N6ta-btQ2^`m_F1xqL9t5Jn#cbVuCqxkshzPNn05J zZ^F(ZR}qBifG|XE?h&TT*3*~===OkjGc;`5Cg94LT}JF54rrb9C*z~ zQ$tea8sHdz76{ZH?R@fc{Uy%_LNM49LWtDpXc( ziUE^ZI^+LLgkh`%JHaFqTzO0Dj$R321UghGPnvhjq^i! znu06Y|2suOIQ5~kC}66hvPC_ePQuuKpMIbK;6$sZsk^E9e?YPXqUUl86)x)C$E*H ziZ-e$|^zUGp#Whc7LHHZZw|yHML@(5W4wG_lzeZ6kXK z+C2sp0b_Hx5&KdA2H-pA-q$BG zeSUwes@&`Kz_Uga>Qup#*A!WIA`5L9WIWd1`>~Fj_^t14^H_JXKl4ER`RkeeJy6=` zcmLhbICuPPxy_)~@KmhXU&SB6GS(JaRdCr`{@vW3>O07Y*Ppi^`RcVXEX0k^Xj$-= zrF-FT(to?h+U;&;N>6<~vRR-ywDVg-YTBkx_UEj# z@8m^Ih)3}>n0Bc})_xOVSv zpo}odV*#eFLGbxlx2e%|!3q|;mdQ|01NEjtbH{Vzt%HwdEa?6EHKnlO&& zo0KE`zO=2x0K*^lV=Wyfxwou#YN(IHE;8l!!NZ+-^$Q)axbFGUY~W7h8#EHIdOegk z0OssTM*=UW)OXB`x;_tvHR_=yk)tvy&+S*|%YKIj=E{4a!8K$3;a`$yN+7P3iZ;?i zJL4jsAN2!jy;9kC!r!;~gP=27sVaIqqBa6}+{T)(d!4ClYQYI4ROaJ!@N!vt!uq=o}{@U{hd{^d=4mdyadB*=k5MEic6grmqW!ig#{ zxle6mhV0kHwA7O8nEv%cUToT5K@a7OdHa^7wkAc#%>I4R8e5XRBsTAh;%2a?Vl;QM`TnqoR4x)aCCg- zi&T?IrPHRJZ9MN89<4}`ZvRs*>e0tHapKQ`^urRRcG@^RTjA==QU}ja>v!0;n8gsN zgQMpSk)zG_A7vE=mOJZAU%2}t)cG&UuxgFa6iVTLMpKH>l6Ch^aOz zx%En-i{pOQlx>T%f#{~PMvrWQFJ<*o+K1{gxaaNeN@-}4U)P+~V0~5vh|d2^T2h7$KIbDi?);x*q1(_tlUODj&EqaP z*ov>+m893`9D;&_VdFBAz{pfq8Sw#8m&tmm51EQWuS#n!lBJtiNXOx5N`=ja^cbdl zPsE<7Q<>Od8x4IzIgknif#+><}cpI5sp{-U{)7;qjLH%Yc2nih0BJAdoKEI#2R5!~nv8j=HnDRc(~+a72d8upkxXA2Q=vAXI4z2-2P1Npnna0|jw2b-j>79EZ& z?8?RtULB}{d)OxBGc69ky3mVtJYL3B%e6Uujt056E&)q18w{*4@Yz>i=*9Dp_q~RR zW7WHhu2`>=jgs%&KJ{W)aOQou({w2T!bo}6KZ!jN|25w8_;B&K4x0sRbmGGcI#rf8 zNy6TcRyDQL?hHwRyb09hQQk4MfCMHEFJChlgAQJME`fZdHgiN^9j!lCBq{5|EGdY` zZ624V_B}v+XtZLr@dAFHuMGmYMpI(Qca_u(D^=OeOm&0yY?QmE(egJ=WCIh0IYa4I z|Isp6|8uz8wISKzxmXRxD^2rt@d%*c1%U4`xLAmFxKS4k}IQm+QV5V)o%%UU^<%V0CYD+zu*>8X+ z>|w3kpS{okQ@}Hcs5rU3Knn&C+$)}cvow6AiC!8-K^FmZ0}EMqn9nrVxHQ#P1MvL8o#N+x5VyLwE)L7ZPs#K!1(GOV(PD|t(Y~JZ!0z%ia7&TW zge%W|K5+53Za4i90lf&bw^)NjhH4lQ16+g?uEqXvpF_35n}7B_$`Fl+d#{!H0hS{& zbF+1fdA3xlQ5vT&sz(J&hE0oTJj?GzOBz@EBYld}9bS+s9ka#_eSph$UpYO*B3^v~ zMYZ|l^j{$s2CH1_=2_-k79d}b6>K4-;SXprz7+znVCtpyVHU$D9#PpAuCSQN5_x|h zL9RzXx;RPD3*GS|-|%#Yeh$CY<1VZB#Waeh>51rGUX|E|a_FM)5!$@^%}FN&Z`fNB zNF?!Ah1ybIc7}B-gY6=xE;XtZo==;r$}^hi3d?UEySJfJ2b@ipN@;2CyrzIo=lKpg z1!cig$J%|-P1eu*sKys|o12Go0ZiB8S94SZYVspeeu`2~v0=diE8C@1a0l zmtbqO8xc4Pi-fV5QrZp~h2_)iM|sbO1vosu`;z%F2Hn+*9@$2B#c6^yg1}KKNrP(6 zn2%u!OxN@6$w_ZcGUmC{Ih{vM=ZH8kb*Y!a>vz?|Y%YN-SVTY=ag?Dfl&hR(y^A)N zK?~19)>5d!Y}D|>Za_K`DW|)+JOrgYavwd^mL5VH3rt~}ZdZfzaDk-=L>4kkAqaM- zhmNSjXK5?Wb|a;HvPKX&rH&-2EwZ_Ig(_@R5IKno!wL|(-*lXdBoMog{DDsK0D@1W zJ`bpxo+B^>>dX^*WD#0VgIgR0__)V8zN7mBl7hFq;88(@LJ)#Ro;}$OwhAwG3evdz zQ3^7w8?_L}wI5T5B_ZoD{F{Um;o0;P-dw*S`XbUF78p8txEm%Sj1TjXTI6CP9Ut672qh3OcBVRAj4~v@QA`%DhLJCer^A=d5a5Z z6fFF`E+SqXa|kfg(8ADyg)(Gi@iMQg>M$>JS6j4mHpPU(AGA1edXf@-5WT-suzXw) zK^zFJ5xTaobOSA>hxC-Qm*ExyoK8>Q(jX%=DCz_~B8gT|#$DKfitJN|<4~598{;$z zr-4JpaC7no*Hx!d&{?V=w(6?%r5gw3BBmIV_(4*EKLHs+R&{zIgK=Z9JCB4`+dM~O zl2rPS{ALa&jZkdeQF`jBmzEYXOEVDz-uWoMBpz~xANqm6{vpLRh8{vjc@fmXZAfkh z!`OmCwEaJlp1&8LBc_-PfO^`RXUY)MWNIG0$P^0u>p!Ag2z$BU=n_?e> z3f85lHkYY`e)Hpxl-$=9gK1j?XHKKyEX`~_7 zkEIGTKoHVO51D!Moy~P*(u4F1c#20xw>8vI9K6)QDJWle>e8AA;!=7@K8h?B1bgv} zyEglFzs@!}ia@I)Vo;vIX5UgJIHG{`NWE-90GUSSs2ws^9~wXg6{$nDw0W(qv9qs2 z+y%cko&4jI$MKS7#@SqC#oL(18YJO1EXDC%OC1+s(SB9=?&KUQ zNDsTqmLNL^63E?1i7Qp^`INxDe)GLCH2@JON;j=Yx;!LND&Y4Ja!tRGQH^W%$)c5yDh)oPyO2g>m;=-zlQ0WU3nfb%cdSw7#5u`r?2z)ebfZr^B-qz)fKMamGdyNI@6U|v8z&2{t>)yh36MLm43n_MjLl|79K2S4NGFU3l0EkB~jJ-$XU z-@U1E9DO269qjTiwM=O>#*gTt{@P>O;DNf`h(>oILkHmQ!@Qtu^>@B6-bJuz^jYP@ z7#}Hp(HLscDAjO(J@4Ho(tz)OC#YeR2KZlJi*<&Q@bj@6%F*JwD^eSb6abl&rw7qS zM;$Os${Fmtvtk9I$*;0hK`5WzCqF;mrpmyJYi7$q)STZ~rEiOJ5; z*E7-vs{VTd`8%K7MB~ZIyM4Ln?AMEB)0>5UF4sR-)BuhzojsTAH5iSvS$LsYL+O^G zerpLwG?C9bTKHE7d#*!wSL)m^g={E+V<*&B8$!&ix6f-ITnj& zS_ud%^5>=Dih=Vghr=-o=cpl_>R=7Ep!kR{V<;4$?CYoLOqd1gO$2A21>GQ- zZrisFEk*e08gU_Qs^lp|MAERu--7?OS0E>85#99O8+7pFHsU|1dO0e5Q&Z9t6}gKZ zl7zf+32oG&e{#G~bA%@w6_$0&Rowm82#RTw9G2260Mwyf^kDrlDz$+D@E<_z zlPbf3pm}%IX5rJo6IC#Q<}XL-dDj>;)w`9Rd{|-CDsa>1U{Gje1#;vR%8U6aP7JsY z3A~RyGt;Qn5$&uoR+%r5gQ+Qsfb(10L( zh#r1J5TWI_^oQtS8jpd`L=xZhW%DzYnY&fs)lt2#6gWhLoGd8zb7b3eT|ldJC4 zBeDzB|E)r~GyOm@f+SHdlAr?m&hh5H_kzqGdfoJ|{{)D(biZt*H;%p_ON=M0TseYJ65p9Z6JP8GKJp{j0>2c#2aEz? zs&Ah<{V!g)l!hDKlsJgA$Eg>|`KXKCUXT4>VVQnibpJNK>;bap54Uip+SB%%LAnnb zKH({Dhe;;ReFA5xn+pXQnnIt;`C^Br`Eh?bF!@$D{Hv@p%gyoF_E8{Cx{W;eC03ub1^&}`m*@$mcy|8Nd3 z&f$E==ktC$AGM^8<~dz*^|{@3(l-qe>G#*YFCj-4=!n5Ss(hEccV9bS`ABySXp=hO zHoV1ED0iy>QfmQ52reDX_mY420=i_suFg*Oz2QB;NO^7@-r?>3I6v+}=bc`%e6LY| zccJ+C6Zg^8WkdMFbh#uAVoE^Q$S(OoZj5~%by99r)x~ia?^xgE5_Xyz z$%Dx6^}_sjX?Kt&JALT>|Kh|S5a1Gdm#izl_22lXF(7h4?55S(R?1%{7PtRd>u2?x zyLT(xJrcb3=A0e|G)nSc9P5CZ7rP<4fH0704{{N8Z&o47_iIy=t|oM=6#J=Abyt8w zjdprEy7)?KPn8#1q`FhuCczQ&>C1b;qE)E7Hfix0h+iYAnn9%5NWJ}(}uEXlV|&%HSEsFJzsN5M)qWq|3$&u@RX;>2>$c>BBv zc_9xK(RH3|`*#Z34t;!Cg>QxY?9rFTq4P804`!tse0Cihh#C(56eeCd_c1WS?_KTf zXvRzt&F5t1w&C;P=hxjixhrMl@`|f6$09wee zKVYYlZKgk)QwMJJB4&Z8UK2M?le#)9S^wGa^qaJ)E_!R0X$byirub3}k=?d&Xt&rO4fa#3RTs-PTu@X^#BB?z~d@g^m3! zY6ohw&1!Mz(|3r{xSJbP%_dhi^gGa4B^d3I52P#8COa)CZ1mbm8F`v(hs2MXuL553Rg`u+RXY1reyFaEa zz_16$78?!xN2r9ZK0`9{;rXkF%c!F>`u>t z8mR3Ovh%Qw$jTHV_)ISoyvlj5?O2h{(G4vg{IpKW9v?&GVHb_(jglwiMT{+x8wyYD zD7ZNmV8HvOs?F*KZ=T9|ibcSwb4k`_yX6-OF@%*-u>O_)i>{p5_3Ve7P0JJNh3YG- zt~>}G*HK=n$0gQ`g>u5mFsDbq`+ykbp@Oq$t{82A)JXdbA8zlrdVDLYghk)+OtgR* ze_Yu}FVgZN!zCui`mcxFmnAS@oX>HmU08105&lm%TAbL^?2!atdpqYmbMN~b=WBSV zl54dqQKHGyyDShMX4%iq_nl5@NFSkp$B4)o2Ke*)gYj~|N*n5IiuzkLsW)a1; ze$`qTRN+c0Bm-2~cCwvuyNEKT;w<+r9BE2vLJX5U1CB;7r}qDllS zVio(WV{`U&JHSqN2D>$`cU<6bsB~rKg#P+igpEBI+Bo#cJKE8QMhEGig*f~K=io|d zm}^2*!T1wF`@7Uw2CQR@_6n?+>3?l?)U zOczAWQM zcACt~gMdJPZk)?%@<%U!B1cqq=R!ta2S*IHo#)}^lSoyZA`i`>$^)ed@Q{AE-RYsq z+z?BQ1wD+A7}dpyQRG)cPj9>z;di8kDkK^s9rktCXC6&)*3?x-f;4c|KgG(t27LUUm~n-Znt??Gh7B^4u;qJuw;Kh_wg>eJ1#+s5ogWMdQEjQoL9srh1 zrw#qs)~0WI=L|bch}|c*q)-6B^*tz`@hpHH?MHiAIf~Gt1l(Lxuy%!G2h!B|_A2y}yDSttZK(Y2 zcnT>1LapOZ;Ma~8dZo6C-bKeU`zT%JvLTXH61?Q2sL-Y3tX`<9Zt*KM!CT1F zYoz!e3Frw;!5*3@=~I z1w*CL!3Q!Z6?;=HkFAXg@*1QRr2O|bw6h;h8`R2hVeV@9CZNZhQs5{2@bYdww>vguFzd+bE5_HLA~_`$Y*<>G`)0|RpCJpo9G|Ew_uYPN`XpOU zD-|4E@``O9d2(>+-S7?Rh*-SE55S~ZQ5m1vWqLNZjgqcDpvlN*G$xf{q_XlfNj>9V zR?w||??g}3jCLNQaz_=!Gt0Y3KkJW`)G?VC$n)yBk}iWbo~hkMMtU7?;|{BIIUS`m z9puV8xW+fxCQ|nQlSg}1hf?KKl#p?$j-3k8ZnBf6dJT_5@OBoxTl}X}Z5*UzC#y&U zplQ39ArVPitkJS5!pHk;iOP78ZK8_^eiInxv0xlQ9g~Zw0T^-+SMb>(4>apko6bvp z!npc31;DUaYceMi=vbT4Qzj;Gd`TRlfM*Vg0cWv!g8+;YVUp^AcLL@phIX=ZS%r$O z6f-(`hD^w_gJ+5ZGQ!yAQz9(;6Mm}Bd`@6w5(9TgWe$LhPPX}TF%`wtp9Jq9q|Nd zue(T-;tB*zc`I{NZFG0B^OXZ8dWV?P0@E-yr(Ne%TZKqwF@Gp%1#*OhW%R7le3EC} zFM_ck=q{Z317sGkG2XKY5-H=C!jN|1C(FrVfz#hX5YAI!lrE+T>$FCZpmRDzffTGL zDK0^MjS)+kuQMroImR^*Nf|kuTGU>FXfwasyy$)&Jg8_q7wo#avz>>>LVyOvYqg?UPfcz2u z6D*7MuiW6l6KX;Vmc!G3-h~>3X#5rz z(`Nmc`vmSFHM)*wC!j`wh8+NW05XhH6KuGIRGy9xYI~feKUYF!31}QKMsE&Y0O&)Y z5$>_=4=ddZ-GP0{F^FEN9#=s*Ib+Ha!_rj*PMufjO04$~qC!RT1Zn&wlsxFEDubH6 z-7r}}>L6jQ6ov`n<9n=F@9IoBV!Z^OzD!C;S%h{F)9ey0c4Y?VM8=$50g4Pl@WUrK z(4jC094J6?09a#6=KSPunc4(^Zm#LJwv}IILg%?>Z#1Ud_tWVdRhOApPByFniz1gB zZ9_=r(>e0XG^uvYDt|=Pe23E{yejiPa5y?IIP7nO6>cBwKDI4irUEX{U+$hWcV&47 zO~8MLu88|P$3BU_uM}pX;_pmYl{jtpJQK8=O|O6`Iwa*fTZXTnb20>%w4t811zEd< z$XvC-<)#HxYac?7g~JR~;rpz@j6|@`c`zXa!BpYb8p_;1tP+1+N&W{>mARg{ zeAW36t3O$Dcw)nLv3WCyebu$n^&dc!&nZVB6{NRm+6o^+tSpv*A#;O=c>??Z@kU9vK^dYy$L5 zmoV;iz$kjCZ0fAi8u>llmAhtT7wZ?G|9mMFEHVkVjMp1+kpcR&y6qm1&l)=4m0ACEHauCjF=Q5WpZXNJ1b`%J}zR6E0`+YHq#iyQJ#+RX#Pwla8>CQ zu!C3DqoP4NrfplD+_Xgy;R@&%2$C*3kd*=x3?Ou58R?j-(H2|rRAZ@vT5#QBf@M<1 zCQZ0qQnE~yAby&*FQ=ne{FWaK@x5P@($!{X6_PbY?uZsvDEtb7;GZlXJ`R<-^_1GW zS+zu651KPeud}sZZ{O-K*ULhLV6M>O(=Y!>$90x{*3%y7E5!W$o&LP;gsBBO848w*~Qcr{Q@lqiBV1 z5Erx#Cf`-s&I~fD#DLX}(q(d^CPiVc6(_erayhS}rz(n-5^e34hP@#nyPQCtK>CU> zDmAlZt~D2N;KHnfp@!z!7D;TJhuaAik% zpbda65{ETi%_96DL?}_E{}EvO<)=?T;eQlZ z)GvYz2yO2u4`gBbMfeF1XC2R8$<@}4+(-06b;P{*J_yU{#@PQNG_$PoRD=rA=}*;1 zljYcMd2J7bCFfvE1eNzP;m$hz8uwse{n^LTGb?+R^>YbDJTv!(CVVtv zKa&%i6sB_kaROkQJs{Y$9h*@hHgrb5T|w#dP8^UMb9?6qxaNLV>_cB{s_w1ewJUD#drl#7-v7xQ zV}P-5S?2ve1U8AG7e{AU})qBIGZ?|IBlg+X*W^#}Vi1#UhsFlr1Z zBtPD-QW$^auFtMBpAl@B0gc_%b?R{A5*0YEFuz$XQab294_6iDXO(P@f;R5r7>P9G*< zs02i>b0)7qqbU&$_d7MxmZ1{U=0$oHVm&Edo+idPiM6XF(%vNt(Yo=&NjAj+)cwf# zygno0g6kzBN$3d-^pURN>UXnEH=>Chp~mwfe1aO^A8}-sMamYNiNvD%Pd)E`ND_0; zpZY;~4;oJa{t<_mcoFkEv;a2&u%>rC%TKh$;Kj$C!JM&4p4 zX8r{d{{XZWC*8em*sVxSRlNuUXm>XuQX$>V!Z<4kKgvRj*k(FrsT5#;Ud5PX8^aWa z<7$&4rVC3);bxl=*t*zEK(e4HF4^>~*rX=N7T8{32?eJJKJJ3y0m z#eM=9dmhf17n>dyH0P^Rl`5@{g0Acom^6d>^8~#Co>`;d#J4&ff(5}*n{?DMC&Y}# zI^%f=kq3P{pdS5)XPydTZMftI?BOG9U9OIXsd_%9?P%@fu-JcY+%Xzg>)FJ>|3J)= zy79;VGXW;fV0Ftbzr9L0>~fQ~iTFKGOgCCzn>^Ya{LZ{6aMrUmiu1wD4raj_4IM%I z6Iaf!3oLP;H7~dOoO&VsE&hH<{l46T&D(? zxc>Lyj9Bj4TYH*-mWh!^11QVv{*M7y4s4N`4r>FY4XeCr`5G}L>7!1M&TI2OXlI!! zJAzFd6(9tc`j=L+=@mK)-?x^l{c!zH$IdtgcuOmN+gY=K-Hd6G0>!UTY~1hqswB43 zbEZG`pzj|{oWzf`Jnm4?w>Y@bVJ>Vr%iT^{?sXzS^BA>%z>I=usx?Svm#v z9tqTbwWkgl&&c%<;9vv16zf+4lzB9I1BIMVVZ1|rYukp2QHi<2*O+KoSJ-;G+`mH4 z+CcuuIfepMcpT+xM0TG$Eb=I>(nF*rc{wiR#eN~*6&6D+Un;%7LtTZC^=-qE=v^<5 zS>m$?@()-iVAxDQD!mGvkm+|REmjCV9UrfgA=tl#}-Q!HV@ivGQE|E$}3VAr#aJ0I;D z@tBhJTI{o*opkt|>GuYe|Fo;T)kT<7`pE4sPLRt>1LcvxFYby?OkCU2atho#|DgA* z=_;}c7uh=CIWy<1?={sEfv4`P{IAEWEAy+uYrtL5DSJzg@pB!HWcxM#H;|F-{Y9P; zHneqD-j#%-Eg35pB(_i=xyAH{UX1o0ieEqEHWRqqRilh0S*Dk7vG@CD`;k=(Q)&bc zy|THB7GJBWPXF6^%-t~$8o;vb@YrSQWy!}WO?-O92ci#=7CK)X%?f_sQWd)2iD_vNJi z8BC8&Xj)mM^AlL~ENP=X*YQ*p+D0?yx+l^v+7)(W>43V)X)I>vzW+97SZ9-{kopft~`!pP>N#O|dq+o$D7dM1367uVS6k(y%fFy_l&v7sV%zk9Qon5P9w(_3OUqQzSXS`dtA z@HZ@V^!wJHB}ppHKhd6o{t>`OCRdO*R=(@@lsh)R^9GEbQi>KIrV^qm2DeyGKiZk? zRFm;^#U9XJRFfp&B4(1{S=>I)XmMqheaymys$iev0u=Rk3{%xFZFFyH6^^UnrXn@@;f@d;7>Vpg5$ul`<^tIh>3%P)Q{?k4AFIJ2$)E~$0| zO@!f<`@*^~bEyYnnlVqMxLr*Fi{EFP){zqV5IiCz$SbLBf#c!UWd_xS-ky#I|Ih<= z=6+$Q3S_{>27mocal8P7i2N{Rm!SbioNVKNL>rCaVgJku3AhkI>lPxXP~OsJ|NH)Yq~u;hC;uL9yhnsj{li=V^dSl=uj#wy#qOE0NA~vzIMIfxTz3C+ASBJtWmH`5 zOOG+?mUW?nG=(YMmPX>H04EzkezmuOF7p}SRo04N`8%MiJA$1Fb=X}pIKEsgTHG%< z7$;rD3Q!e#7YIt0$?}XVr*S6J;Tu$3fc8-ui0A+g`p^DTg9#WB<;0$ zCh2{r+ijIXK?^jZ(p}kbY~P^(FNwHlab%L+lrZSXzHstx%5~JGr2D$TVd&M&dd60n zm^0%@T-cAHY5Ro;=F=>!_ z6TJoV+rZH2eC8ZKh+q^))+MWqHF7k{r9?^gRgu3}p_h7sP}y18LOKTF_S}(}RAXuW zs{d+Og^;-Swk2akUO-_=iMbVBhUarkR=A0ZGsg4Ho{56Y!=U`~%nznt`uoaQ!qW66 zf0HLrv9DC{jPbwj(>wZS4&Nhvla+5yDf$)YHKibJ?YFAl*B?Bd*-+(TQ*SoQw=$v~ zF5fHKf%sorA!Ynm;noH?bLL0U;)aKLOAKPoG~ArZ4I<bsDC2+4CCvVs$ZP~eBp zlbbaFU4)*Z5N84qH&|po(uyuYf0mKwWZ1Db%u5z|hU4^INJ`@ZmpJ54BF7dbd0L9r zi5!}wq%Sg3^)d24ob;|QNV$ykXPz`HMUO?o_o#^TBJwX8K1izpQ&>a|KpvqGYtLiT z*$bb=k$KQlJ3a4hWyMS@8+(EEiTS!D&E_a zq7@;wa#35AGz=9H%SCu!p{xQ*wsMe)D~K41y@v)FcXf9tP!g--w^Hm;tq73~YAv+X zm4#ZtVp>ZPu_}bS1tOY@isd8Yx?!#|WSl74n}=v|*U>5w6Nllk5aMz?Vk?B&Dn&%d zkPbRqG7FW!MM?A#SF=%u>6Y8rD6uZ6cRd^n1S*u+7J`wtX4A-A#+mRg-;uZjLD8Cv=y{*WWn)wMznqG2Qq-aIZlqWu|()_ky`;>52wskuY3jf@C{wJFPmcc z6Zxg1+z>=A-GFraiF}exvD|PVMpN!ocSI3_YRJxAB}c|c%7dycU3D;3O@6M;v54iz zLTOY>zOQ5{>}OwGRP`}mg~`4z!Rt$pjZPoiKY#4&x8R$*kDn|yj2w2`?m^#l!6?y~ zdil+<9Xe1&%)0ao$D-0a(l+?+i#@*A*mV87b>er&wq4kjX?q-bqblmg@%77TPKSH4_~3DxxF)F3oqL}1OMcQuc(wL`YG!`mW9pxTj~+E)}G z9g5)PyV`%Tr`5}Ae{fH~*>L&~fUB}P{o(%UPw!5D#-53c^!svy9A$Xsd+C{<7tZ`w zedfyszpvO8zip-PP$@E58u{*wAwr6NASJ$+l5usbj!F&Mq}1d(qp~{V<~p=v-8{dJ zfji5#J8OCKwArsZtFp7U&1V-ipR!IqV~?wMw5wm59O+;pbuO#-Xs-7PwQ_w>zYN#F zvunVr>;01(g3B6gH#RJP(6BP_eFO1k!)m*85uxX1jL)qtJGY_v++fbRP4CZb#WhBZ zofCvM#wRxhxi%&?H>Nyj+{e;$nq~UU4EtE{t=sq z=4j)?Jt&+32O6auS`bK>p03vG>}-5|hMSKw3vFu}st-A0x4Dd8P_=#LdF!I@so^Wn z8H|65T`*}kd>QI0Gh5N#GIllTSQ#sJX3L$uKc{Y7jEj9&v`uY?d{^Cm`QLjYIG!2S z!Rfj-HAQ9kmu|k38Wi!J{qLL5EgD8Wrl-wwdPE&+gzk&ak3|xxrQr53Hv+B;xuV*+{QXc=ADD-ciOAplc zvnyWRT5vk85RNL_;J)*yO)d-ez{EYZy(SlGZFue$A45d1 zwYjPwm*-7>c(;F@EjyRx6hsWVy@|duvdjRwLUg|7{AJ~m=u{gR^@cFwk#$c&>UMG#p!9AumiZ z=<`wbrPAlKeM}c>zchBW*QbG{j~$RPO0?Iv7X8&;a|3Vz>tkE&<8=Y^2yoG7AiiLIOtaHC%tclKTQd61d>aK*S0}M3et&ucC1_$@fuME05XY?iXZu`|0ojGX^9L z_WU8cT4t8tq({}ulB!qvHf!d|h-O{UjgRpPXbp1!_;zmqGg*|9fqST&Y8o z+kMteM}g)^{XsL!rYoyGk+|6dazy>&-hjpR zHttG^z9q1O;4>m=RWGx2ZzU{yDec59YOY#yA9eUkXD3D~hd-v9M;;-2^+@vuygrU1 z5Vx;YW_7^eXhH4pIP&tSN8axCu3FpOMhJZb+f?p#8s*lnAbl%A+0pYb#X^`zNGfKF zZOFycZ~()X?tKM6^8?YDNB(`*{6!NC09c|06+DE~>mZWWMn%|D6^rM)qnG9J5I~Xz z6D*Log=NX}0(3k5y1@;17DQICV6qi`@RTes3^&I7lOzBfq#Pvd(Hsy~)SEt@$kVG~ zA+qQ5jEaD~wJu2S+jMgt%*dDLC(@g{*=wKVSg~z14|cz~*t?2dku_~eZ<|9clMWRx zgDlNIP*iQWs2=fCmVVQ8x0gmyv9<$-$6;Q7>@O)s*MMfxkKK6c8=?RY&sSb1}6^ zeXpJz(vLwLtfD_^3UYfO`IK3VS`3w78%5<%2&@S46R<8&l-Ww>%`KXEtW;_RG&-T@ zaLm-+0VHghu3LJzE?`NCqHKlgtkLctBFtS09wPWjv`yfWG66w=$*1>31)00*00EN| z1oAZ8DY9e(w4@FAsO7|K9X3ZWG;>=bq1)kgMHm z>i94Zim{ZhkFXqN=`d{9Fr6^V=yHXHW2>M-R`BY0fKvpw%XCn6>5z=8qvmy)Tv}^H zW2p%%M6-n_2I7v?D42JSM)>rLi#zY&4L?-%z!5PMI++ywv1!qJAh>kb@0f=+ha3e_ zKv^^k)LydsDKb8K$VS)#HnVszJGr_ttES#~EeAw#9LZ~?H}03LnhzOZk>mL>)Cyq% z^C*Q%3lLH7Hx+DAKZMb`rNgIb!aQv&*bc-FoNo1Z>fI&@*LMAL*`a^Qt$`SR-}ir# znV6PX9}2(gpOM;2E`0UJ5Bb2Y5lg7oLn@5gV6^F3SJBm0BR(FkiyHLr+x_=7AC+lG zC-YGUVnMoNrDFvEKbC~HVFJmC*KdvVt!umec6(9Iq@ON&bQl|!P+)7%!|YP0>t-?e z3*32FSBj8yR8_EFsxXz8DDD<=3ikuQpExAge68W<)+})Ho`%=9fTnj=b;JE0bWC zBsD3U>z_DiR^;s$I5@w2`GaENh$X-N-B&c&-( z&fSmW;m7!Dx8G7#U=sq6d*TI5U!F9)5l3O zDtwi7CCyp)^$6u0eEO)5y>RKY1|13!W@H#tX`%JcEeWF4_$KmIJ`almrF>F+6C;8p zj)P#XS^%fzq8vrw10~4@1GXvG>7lpMRhT!b;+tr~7YKbc0z0okI|AT6Nl?=eRwL8V z8uyK5ZH-frE<*bp-fla=A-8EjP2ryIg@joV>aRrfdx)?C0CS{&g#yd^L?j(OK9oiH zqC(ZCVdsTtEd{&{kSpaT)*8Zd2-PCMf0ieQ_ryHllH~3biVF8xilfLPpDKx4C3&t& z>~|SqU2i2ySJ>q5c)b)BB_h7#ySs?6^AhaN!l)@ZY10C#iwO0GOP-UiI5bP1o+9w>C2SO$lDN&-j9S#cWBoP`?K5GZ?66d+#1BIv;H zhc%>IA_V(+y!1Tbg9flJ0;l-ID5Vb)GT$u)a#*B3pq|r7s=I(-;@I{g^qmuMl*&oN zS@7d2>7*=ZOiDy@ps+oLC=Fp!gT@4GpAlgVMCUY0^!uK3Iveza#((P`)MpA|I1Z+f z5Ox+ty{8Z$KkCy32tNonC&PzQz<29bTgnhmL`%qg?2OR9IRZJa!WVdwqbO87hd9nb zubXOe)h^m}G;ycNo_(5K7d})IPW?K4y4jivk%stxGlb~(k~7U^N3~-yat-O2>&0uy zzzZpHG_Lty)y0Pr!M$7Lw{2Yb*SXu-{W0Fa{r{jDO>Lq0Oomeeb`zW2q6zjPhrQ*eriFhxOAAQnR>6S;0cUUqBCe_eZ# zNUAilaF`@=z4dl{ z;kh8ny(^&?J!D|Eob+6V5p#*ZBn0H)6d0TMUWh^|(QhQ=9lP6;ymXg6Nd}?ISp*5! zV-Jfw24MH_iEYmpzu2QlICowB{QBf`MSVHxr4p-S(chBbmvviD$w-Y9^f3xyKi32u zkBb73&lbXBIiz<=Y#M8SCk3oMenca`VL$AqL$BBYNv>VvYII21D? zBUJ08EboZtp&I-*IX+E#aEc#y10aKO=*L|0F-cx?EIj;Fh5b7C_W+_0 zY5PJ-+Q&bfHU31Z2Tzoc?`aZ1Z4h`&MbxJoeFjJ;0B|ip{H(fDAtOsz$7K}K2MXx{ zm)yy(63d96DP%2|JR>B%jze@q z3EjM63LRFX9?3{EGSV{@N|IZuwnNKi$NU>dqf63>507%W;MGO4MMb@wb1QK7hHAdPV9!|{QZ@Zx( z-4+dh)N=8mfWIXRp;VIZNCEo<_)#T!O86u~x~W38+QH}FGkS2HRU=w@97uqzRiY~( zj7|tpp+PsCgvW`{RU>ISlN4Nl(0Psa=@d*FdDSSO9T9Ki1UHstuqewR08 ztrWd&=BAc|%76-M>kyN3=mceNmhkoCy_6L?tCI4y_p`^VBxtcVXmg?r^=w2xLWC}& zs2f^e#!=8k5IXIZu?rVv>ML78!H8^AJaqD@#<=-?@4Y7UELHLBXNwt{_e;a|8BWQe z8HUz!DT4#M!Hlu@rYvoJU)uo!Q+h6~;4uw406_L~N&d0v^5&Fnrqqj-DK$+WF3$`( z7kr=$rG&arZVnn*@UM1Pre5CCxg~Auo61jc>debEj?-H@-=A~dKSTNN(8-QVGqtTB zW-C5S`BJXko%wo+@$OZM(Pre*)=zd%JJIZ`I>H3fy&x&B~8!aRh&5hdOrTLYMHB{2v}qObU@C!>4VfwhU4Y9vLh7 zF<@?BDn~SMaU?#Nsl;V+VaN9Wq~i8G)XKYY@HIpHS7c4m`Y&f`vNVDF2x4<}JD(s}o_E+825pP$W_SyHRp;Qj)^QW)fGuas&7P5jy_05$6U|xv{DKJ1p5%@pcpBl(%fcz}V$pki^ zLXDj$##nMnkYkiQSnvsn?0;^4pU|x-Z=H%nJOttf!NsYYQxfeKoG>px87MA149##5 zjY$)qm*MbrYoziY<|x`8EhD*Y-+#8f54Cyxl;D&DjP$n{)T> zTm13+!GG~>tamZH46}D6pu&U>NJGzK<@rRH5Nq>I>svk?vXm}c{qWh(^j}ZA_MR)b zg+W#KQNKeMTZ*pw3duHT^8$_^c433e55Hv67DYZDBZng>QO$XcyUX9xvr0x)9+}U= z^N_TH{z<}8PB_xQF#u8^92~;W9r2iqVWYjB*zlwKZ5;F1wA85AdJ+5!4Q1C4Uj&I^ zjr7Uo%SDkrhAaP!hF+%1I^sxP$u;$Vx5sem^&?HGaDxT*U7yY%Q@17R1HPlW%PX0~ z!wSZ!6MB($59+jJ%SF`_i}h=S0f*fq9nX%I>I!KF7l=1`$pvZT^>veSe(Qi{z$tm+p6!1{_O#9^QL& z18hv?W9j)bhPZN1WKx4k2WJ(TA9=&7c>m-T%YRlh16PWc*f<9Mv-H)Px$-dnp@74% z6lgcqYEn;)5Bu1J_s=H>xeE%75;_DYqNdpsRJxAaXLj7gaX8~#dLq^+c)Ia*#>Eo! z$=G&mV(ltvd2Ds&z;g7dK+X>|HhyNg^{M>>7XnMVJLrv!^at#PbjOV@Y;^R;`|&0_ zd&j00({5t>w9JgVTn7}+CN1$4)E;k*FFNnyTKXR7Tb#6SnmoNA?YuJ7*`1 zS({}|#V8DRKIOeN7qo{ARqlMX92LLAVGM}qJF_Pj5kIxot+%ry$ybx?0-!3?BymX_P;6U7#pkPJ_Cp(FlG~jW*W``Zt4~%&r2tK{5 zGhBDbpwLP}ZbgpIo9e)gdPnx9A1ZpEzA=t>Wc#2;u$iC(*o=+3N$smiJ3CYl*`FS( zVZ^@|G@#&DcyCE3&1F4a39~@4p;CknfMAB%a(aM$3`W{zJI&3Tbq|b9cckic8qNDN zUu!wmO)yVYT7?l8!&v{%?wuBqQcr6o07lj{8YHKq3(%bKz4`~d8VV6)yt~Lo}7Twg46J?9oFXdMH6i4D-a(ocx}o{ z!sy9nN$YDA#H(CAd@>hYR|PjPknuK1`(Tb8^=1lgKGlI;w0z?r>ZrCO*aK4g^AQ5X zp6oss`fTBbjxL%dMPcA1UTo7LVT@7p7JmfsOXKp)enbW2IH*YxB@iM&WI>z0#?8~= zme7Goeztz6O`Olc@>l^tv)lk5G#Rbs1bMrvF>4D33_SY74WF_rmw0nsj(~+8AOOOD ztIbX}(H#HG7H0gTGP{>Fw6R-S?EAZm@s!(%IgBdbGZ_QuObbwGAh<0ct*in( zBxZJ@=vDbNqz2Tt%4a6pl)rXZkKJ+mwb{%59@>>IN=`02@Mu+tN5qcu7S)-7%YM{ajIg%nl-bo<`)u(#TP%szu4$FnC?#B_lHiv~F5?&F`?Oq}>1*r0_w4-Z>#cv!csJNGL*yh=z8EKyp1tui*l}i-l=xS^;h61OUEGym z6Zgp+*N^m0rxyE;DhxiVkRe6vL-YW->5ya%CEC$P9I1Zj+IOz zQ=t49m^bU{7!NsqU;_K#X5kOgDX4D=hl1Fse2uTlliO8b#Rp0XIyACE>U6?Tx%~yb z`6k3^wzN{Mt|KRw6uHyD_)tDPLFYF19M_2L029Tf|v58cCmu`sKob2*s@O#ZBU z@qDDW{V#SW%z%FdjaoMucs{0hi8~Lxoq@sdeqSzu+|375gKys#nurMWzAP zu?9&iM*Uo_v?8_C{tmMpvRQxO$ERjqF=p394tkQ-C=5M@+1#{_d-Zb4pzTE5z3mWWg1? zF15?K(fz?A6@WY$%!dwoQowWU=U%0jt{`(T6cCeL8c1y4j)ip+fF?sHY6+apG7$?4 zUsHU%j7&L!yy+dL@>!!gJVVvqp*Ip32*b~Ws?3{@QqfU}QYHbY%fHz%ctlCVP72hn zpBpZL>#)O6DJ+}KH=>@-V%)OKyd^Mf!f;M{0M5Tn6}$sqe18_CM+WN%zy!JOVTH{V zTr4GUJt*K+gIq^Bw76Md(TdQM`ov~dEG5D-by!@4LlIf9{0Ov|AQ)te*E5AGO$|mS zNFqurnLv_8sI05-%q-nP=38PxE)0-`m=n!}r}XQ4i$!OD0?=Vs4JJ8fy&(fwsso1; zJ`YP(t8^7qL;x2vMT-zTA{%6nIIE-W7O;f_iz|4YV#`VDlNss_3&CTF7(FK}oadX% zxmrs)$U)A9a-anYI~{kL&4e#b0%gsJhRy=hGCgXURdF+-ol=oErN6*TS12JC8&v)nDEO3nL)J2FLaGZ3ak6y99n5e;YPS|X8fp$w3~_&-%V zTrS!x6-CyERgyu$2nV)I5G>`f@&n$y4a;lhVGy7-Qh2%o!pem2BJv}40TKdqzZ5iq z0n?$A&6}Md^}HNrX%YacgQmwaG5#I8dmN0e7RI(v?*#C7GT~7?@!mRE30nvii>Kw> zn94g)PsdSZIVhIk44a=oUJ3`)^JF0KTn5K#@5OZ*a*tP}+IjDBupdR1oQy z2+9p8P40&zh+#~ZGt?QFZs6%1Alk_&4a5R1B#@nQXi-XON&mmK1fY)bzeg^-5`Vyw zA>1tyy?i-&YSt*y1cVRZ_ZBTv{xJ|099jTn{NA5Q+A%oB#tu3NI1RzJ(3l zm5J>`5|R){cFe<)=scNW8HUJDQ!BJNGKl6eC!k-njSk%$4Ra~JyI0Yf-*M@I570If z_U~C`zy^H!LD6_OD!K!^ka9Idcg}jkiOqy(nQ<45 z>PXKmjh%vv`K39!^`nj|92siz)FGIOEah-k3rkC|FffJOk;?U8!xPlhAN3Vmca<*d zcu>FvF(cu{%+f6~!Ltg^QZ=j?aS~t2e+Lm3h~c?}UT8W3Oc537@cIdO3xIGJ1D5}4 zv?%@2_5{M(e{MaK`^VX~`QDQrJ6jnueOvbsHQ-xQd+txErT3t z89_Zp;1V^$?Q)~dA9n_3u-DtVX~w`Jl0z2|$9OK}4J=oN8^ubN}Us2fhyWKl|wfpUvs zi_VDec&^;h^SJfl`nyjaZSPp$_p>a)NE9yTCuG8t=5Hf^s<)6i=h9VA$+BiPIGuAY zwBX70o+mf1_?b{ZoxdJ;eL?!_m+s({=E;SZ6P^UhI@=#^Sj~R|dOWyY3|~KgxcAEB zot`91NRl27d;28IFnRzIpvR2WhBrpHV&&nmG*?V-3ZC zx5*s%jD8sb^)?|HWxK4%3TYUr|ML*y!)~PZ&%xF!&$}0ph<5Q8jsg7j$xlU|BoYJ@F+NO8L2DNNox0 zh)!G~gRPZ6X-Vd7#)`lOW!OeRh+?4l%0@v0U?T^11X9kyiA+|&a}Y4E=31geR1{gN zEtK-kp2nIGc^L$lL6aCm=BHyto|naxW`WwV45tRMGGUs4$ns6V{2Ba~N6=DEG zB3dR3A5GQS(MvM`q7^2hI5vpqm^gj9%rZcD zlnK6FlJo@<3=ujZ48+d;l~lnAXO!wV=m*)nZJ98aTL{z)f9njCIzG8ELW&@Zwu$*4 zo|a((_*-?jbd4}Q6Q0Wkug(+1F-0Y6kl%6a-v_Wv$;-0h2RY5170tkueptE#Qm3QH z0>FE>JwkLq0+U}nb>yYVMJ73e&eS@7%$AhsADN#ImBq3<+Ppfg*tp1ef^ z-v4kzevb#}PU;^op{gU^9nUfTg5`c*vh?V!XUFy5f&!i&zn*!}kAvK3BL7<&A}NiQ zKD_YpZ7-{TFPU>`CUbMI5sC~E065hdTbqdhXh29u`l2h<6^%ao0_I>$0O01|+npKN zgX(rDy`nK^gT*}O^x6Y(Me0ryZb8Am^D>Gf_nEeOBS6rq1Bn9cnt7|@qJKDUy7M~Z z;*S|Lc4EIGBO3spJj;u1hNrp^Oc=sl0dKC;vYwl`Lp?d=Ir@)p$?s%{%{c(~{C$XG z4yG7zXFJBQKij35S5CihJR(b?=1>m60Fhh&Zqq-#7M3^9sg2ky(#_bUu$<=E+r8d~ zgj^Kheedy4$KqyRHqDeXwx+$$hR$a@P5>U6pdloHJaVh%#+!MAt=$R^h^deK_lUU| z0B9EE)1d$&K+#m8cYF5a-%aJ!pUyWm&aZuc;8d<&^J2LZpuL$3CvYsAbs6Z8Zdjga z?ktr4e(^@4NoHmUMNNKG7b}L*=m0GXB+SeVbCyEWWe}a+WFwtdiUm5$p<72qOai~- zFWiC-Wr_L8qp<9Ls2&HDI|tjrf#+h)NfZPBwZf+R@yq>NOPje{WH+tA!p&^(JB6c5 zw1}#)V#UDph?wAcxKIB!XPqvfS@5Vq)YkSiA-gnf-m@^j^6VbCbti0#1hR1;Goo0u zmm`YBx)%sx%f+x9vdDw-x--CdqZGDH3|k{Lh$)6e(_z08`H$yESaRq(S)h~Mp#KVQ zN2xGt6vmPanEE_QVe^yvVc8m??lrWOAu7rZQZ-FflV69sOgT0{HdFYC9ir^w7ttq{ z(gI31G6h*On0B=s2r~v3sP85c2k%LRTMolkH zE?((xM})0r2vXFrtqK8%Daf4RUz5jga)Ie*h%r*|jY@qxwvfdDX4CwGMEmoyn!LMcD`#O(ycq+#J*^%8?nM6ucrVyl!CshmSdq zNM1Bqr289EXZTq^0U=TtC%3|~Uzj#unobdhU93n1z`WHQOBr-y2Y8cOv=xEgG*P*w zS$O#=$73G4EmIVY6(vZkD0MJ@sc5TAcuw==Ru;T?UZm3*XW`4Bhhgk~zE)?_NFwq& zn?YL;kQlaTn?#gl!X>H&P4S{5IIedwEK=Tvqrk#YHC2y9)fdP|9)i;ViFDaMb22!K z&Hpe7+uU(Uf^`a>hi0ioZ!BG6q#{h+iF_rQ%@{Az!18B=Z-59B(np6UepSXgDp_q< zf$=co1asWsk2gytA#Z(ByXrB$ZO}jWqo(M+Uru@1UW}yb!P=o=xKJB0#+c5wxEyP( zofvi47E4XvoQ8MH`sQ-KG5YXe+EmLkODIGSt5Cd99m#og3oujQUbi2^I5}}D!u3%= z21tv`t2Hq9DpbFqi&=K12vhv*iZ-_VxzE;D@ou)Xx=w$6;AvuhnQ;teBXlD(a>CptFT zXS_ZMuQqMn_IQ*o)67f;_jh#RNqP(0iTYHRgK<9n(o4fuIQ1dE$9KwClt&ktPeo_e zc#nAAD=g5-6r|)(_qR#jLw=g16r#SLoQLtbHwPN>L0T1?!9;=r1FvrOrRv4lH9k;} z+m~r*eW@F>GGGw$73EcsEvMRaI;i6OFU_7TU#|76R1OCYkX3PB5tUdKBD#`a?bA1V ze-v;)PKyB=9|7+3{OTAEboe-Zl5+G;{pucsP02m9zY=R0>+b9FjqBPjO|7;HW{s8x ze1yClO)Mj|#@{trw8){0&=uxgNmggC zMnWuRlyTm$>GeIqcNSDtzHxG57lK5Q5BsJvv0>hGVX7hbegv3{TrtbSfbHFYDJLRNQDlpLowk&+Ai^evV=NxP#>p9@UE`8>yYZGZ_kV$@$ZgIt#;FM zS;M#f8RLy6-(Y?fo>*Qb7r2fa*;jhMm<~-ucdEfXWf|T43M_8TffYU<*3k4l4l};5 zw0S8hSRAZK+t3rzbOl^Zo}#~ufFw+ZqCLA}UdHYxx#ST7X9+|4cq9u@?)I$JzO29V zB4;4*nGtO`X!3J+#ghB#(2Br^Y+KOkbJzb~i;o+AFns?3lOKg8(J4`Zib`9we?m4h z)OdJ^Pe(T|7)GLPq+S>|hRalW@Qwamk38mmzOKZ^buCUp%E%tbJ;M7emcBo&KOgnAEo3VnM%m1w1ACK6fs zcF4Cs`sQNr|?{hI+nWA)M>E7V|DRn9G!h7lCE)xVaa9F&(@{^U^#I8){>G zzsEYf6tCNF3^>m+z9Us2wPMlFS&*9uN=5CUl%>0n5xFQD@O3H>m)$R3#Iz-RWis#T zR+_Zr#~S@jYKn0U%fJ`OHU6sLVfOKW5v`|8^a((`1Xul44KVu32s5bRhyt-fC?+z( z-|I9MrJ1sLMSwtu*l2bMF?pc4)cS`1$z_p?7hQM}0nw8SlEzeonR~_;N)m9+LtOn! zL14co7U=)+z}d(cgP>LWJmpN&Sq=|ziw-r3v9;$y5hbp!#1YFP_lUlNHMQ$QC6kbyu4o&S%d0GQTz8dx}VL&C%&e}-|4 z2}xo4f)n<7b3jIjcb5FR`}Wl3Pq$J|T_0mZa#so}a!OuW93ZdH zI&sh7I+kR89RY$iHB@_qF~Rm~m|s7A@^D70!)DmcPe}5H4tpLEV zRP?o(aC>`$j}4=;xUsIwOYYJGGVvp+jKd# z;)uY}xhmR&T$iJSvS8O5OZ?@MsBxYVPDZRc1Fw#+P6P!j*+ z#$E;+VVZe+DjRE9CSRokN!r&3WAiX;5xIaP8{YX|_k@3AAG93iDB$AJ3jQ9B{t!=r zAk!;$kykEaG>AHmE30-e_^6<#2^Z4h!3YA?P#GZd8gHvw%)Ep9$bdpC*;P5&9OwaQ zsRhxk(vcKub(GW2du&@4dTO&%m?Ab<3*_dN+k*6&kYGW>1z$GU!eYMGty+5E*pIQH zn4JXQ5v2|hn{C|@iCFy{h_**vsMlA7Ux8y&Hgxcnoy@+-s}0n3H^4|csjp9V)%%|z z3gZuC=xHDuww?3VrsQ-fIfD7R+5?&)nh8IA3AZmW#P8ygQ?2QHe{o_Zrzp$Zwp)(j zs({QI)DN~0t!*Jx(|8~R``t3!>kqW>8 zZbKT59B61?oU?@F0`gaYjcyFPe>wQP=HCF2p6&u@#7IAarclin0KH(|YUt+Hm%g>D z`n<#dE;|jJ$vrwVG;EM+lSa5JyT#zOB zB!S{3RoRURL9JcEXzuAYMY6H$CatHibE%8-NP^oOqawJLpz?)XTOUDdGCm zsQh&D0S0~*1>l!B;P(nB#&U9ZKXoeuE>U-t$SIDawA-Br&FHj{7@Cg*nAD-{oLb%W zN6(a~I_s$7v1x{j2Ys`_zz%9iYiKA@xi5hmaDz|i;Q0q=L6uOYR|$WQ8C0K0jT-0% zD+b;%!vl2^SvKDX1yD+kDXq{e1J}MMKJ`Z_mNp>A%BUejAl%GB5Q-K=58XkcI4fw* z6pn*}Z#7K~5vUOA71L6M!!EEdL}eu}2Ne(dBKV#tzE3y*jyl1tgHE?6G=(d9%+%Hh>xU~8sP zgm2l?C4k#wU~eKdro`kwGla!Ou(w!i6HxQKPWC)N1N`mwf`E9D?tt(q0smo%kPxMv zI@G(F=1=Z2NfE7*0+*1x9B+Ufb+e;7a854=)Z7J*(0Dmuvne3hT8K#p-%W15DpH!P zwt?va=-o6=7ivAw8LET6bP!R4%uOaw(2qmW!{A)A&38{X#f(ifb}QE&QS?yC6L8F#I=D;)+B2eW$ z8%~CV_WhX(rXS3~zgYGyGH4FeKv3GH08JC{4!!^8t_pRhfP>RiR^kX0^CUUj?sM@; zJ2#HYNx?2L%_~3)G(C1VS!egC2VTdH$1^$Fp_HQzDzEfA%SyP55i~!^s-b}-a#pmp zSmn83iX*;+x!8NZ9`yEF$r^yHtu!(+6WH6gQ&?<1r4NL<`Uj%(@XS zH&kYX{T?ZRz{^i`mBaaX5*U95b7b zM*HvsDAV`Kls++O;ZCaX^Y(uR!j|u8>=!#kEe4o3t4Kp#JPJ1u0RHoErs^W!Z+0ej z9PH<#@($s9V`)y^VQ9$dQ=Qd@`)R(FTr5KAG^8SitaS@XS4XBtuX&X)D7cuNzHVHx zPNaRsh@d1IbOk7$IyKU~*i-{ZL~sW;3D5N@rX_zC}LR z!f5BB-hTxXlpSIPJWQdpJm5<<=Mo7!-2n%nU;wApVGQh438;Ap7IqBDWUoO&Kc_W2bXeoAG4P|)rNb-WC|Bk zgUG5nCSdU>|I{Liw?Jh@;iPl24|a>eBgzBEG36~T71f*yFFVuN;j?DR>6HKoK>=U_ ziaL3q?=voFzUSfyc@@~70+?{;hJ52)yn;Ls3N#&nKsCxhicZqSZ(q~{TcFNx7{-w* zf8t;Qi2^jD7>9xX@e9A!qkO`o96A2h^L4__bA0a*%B`wIpKIl2iot};?DMkFB_!@{ zM**-xKI1qH zJZFEIKk}jC%*mFPi!ELfJ{E96C8pkY{0Og9hN!#FUDSr2U)&8+hmH#g?j3w%V4JU3 zs84fO2(#-tB6rmMQwTBl$vLn~z@3;9%Gos6ch=eQVHBqjWAQ7BM?bA|oZ~vGN)Nmj zJk+%&g5#9E*3PLL-c1d1aOgj-{C^{P;=Q*t{T4{!?!pApIff)~Fe3Xr7U;v_9~rRL zAKe%b0D?FOCgk8r9?8LH;?pZ$2-c)$ed`4x!7Q8D*ZU=Y*wc|oHD&@$C{zP!qDM2$ zSqvbz(i{n~pNGI?rqc8qXo>s*oC8{-0htCUNjJcj=7fz>T9$RB0YDWjqZ+6IjtM~f zZmuDMyGRbMu-;ZwrwDw>cg>#uNz#IXBUJ^F=9b~pfX{P9Ug;Xxf1QnM%@B9naKTWe#4Eqkz(f4TH^+2PJE*(!FgSV?~^%>)MdB~MUwMK!|{W)dsXYBrnVl+7w?sm24eTFw4uiOdIX9FE#jB!Jukj@-b zw!)HKfgPg=8sa_1z>aH_rdU;oq5_}x=?4sMVnkaKvzTNpL@=oV0sJ9WXaT*R8Q5jw zq9im{MWHd|7OlmDDg|uXqt5OWf&|p*>TNFX*9oMwJ#QP0*sVnNc?fSwS{I(cZDcY6 z>0Nv8b%pr2y@yzkhg88euG^%%z`{$mbk!1RS3^pcf9qU)k!4gA_-x@MtQ8b83Nnh} zdQQ^FbNehNWvzS-GOFadb}Hjp4*1^^!_)k_MN~(L$`8RU2JwSA ze5{NYFsd@0E?ZJ zQtGY~V@Djbn^n6%6pZ&wuHOBavcMU4veI7Zs#QzJ3JFCkE`nR!&dX z@6S{EbYNkl^bn@XtFg*!!Dz9kDkze+ZKKM3tS6bE3JRIY9pl)_RXz|M?_Wvj;rgrr zdlA6_F|?-Uf|7AU@Q_N!NjW&p>t00DnTi};BuF(7cn0K=4PM$B9iFWWndPnIy1^2Z zz7qcNmEd4Hm>g^HPV~m85bW#1C9H=Z$lwPlLU&NibOtN$dZcgt@^v0A`aePg)jU@R zolgm|_m*l|0IhqQ%8U*;#8ZWMZ`)VU^lEXDSF6g0%;!yT1(VuvvQN>-xGpb9qXEDH zvnoeR-}OoSfI5^=v@h~Ga9u^6>DxPYm%(HLz{^VKqXOcRyF4JO;Iv{70uQYdA~E0`FZ>HFEG@zzN5t_dMHe>S-MbUzZ;InOIGeP_x)+Ohq6vt_>|MZsGY>In5*t3=A z*`e|>vv4ipds%{gWPH~EdhK*qo-5y@5M&fav1wdsH~1u&5{p(-3yG?APiYaqH&`9w zw-TYap=-F%VYo)=8^d>R}N_%DvS zvG)SsV;6^@ z2aJM9F5rMMm7N0ww`Pu{=K0Lf++rN{7lS1TnllPDS*Z%Nv<;pQ)pde( zPA>>u_vK2XmQY~5GFAbijAk{Re`<--{+(cU$E_!`q8XLaRM$uT#rJkKbme0o1m+D~ zJag1|YLmgnAC+=)UdA($t<&Esor~4x92AlFdaU!{=9MRw;V#M`AJ+SwdLr75+kZ!G zrsr$jU6!F2YMk-*1?5z&z7`pWqi4omhs6xR>-}Q>ob|Gc*l^WzDQ8#H2MZHJQe|Q2 z+N#GMo|vo~MMu3wgP6A`V_8qu3M6s&AHge8mHu~ zcroyOX#J(cxR`D%uK&m}jFV*UWO#SC*u1hv2S?cg?y|h~>?w7-n+{ZoSov~+;_&Fo z-Yb)lM-3m0Uk_KDH>0WSV8ZZeaq>lz*ayjDTF71oXhk;J+vf2_`Mm)`ZO@_Q{WP;} z2O1pAL$KybLG*#njJi#*0WS0pkrh#?P9cA|xpyh!6d~4*Ohv2~CBEP<=1pZB-O@af zVZq>$S;#d9+A`{rWm+Qg7QwIC?r_$%C>Rf=^|Y5}H8lt?qhg76gtZc}o3kOAFnw&j z3t;fb=97soW6ByaD;s$p|}Du`x^O4Uei*o?L|r+Tvuv?j}r) zF3v(`cxPoILCz*E9M}P(`Jd$iq7N5#G!3O>4li!%>|URqJur32Z0ilr<#%^oPbF+^ zHhYb?i`JgyqPEP<#jFsJ*}TJBo4K#5GkbscLHx@Hng~m3&V+>u>~!^$oxjSkDY)`; zys`9eBB(CdPnurqIEu*FkG3Yzq}h#c!|>_1m`9+v7;ePT92uF#k87UljmYL*9=;mR z+v;Q(zfA!#&yQ7~G>cm5XDgNy2lA&b-COz(AEeGW%7Mo;19>S+&Q5{BWO74!#>gTH z5Ud&50zsf$m|T9$DGCs^vceVw)gw}7NNB)~c)K0l3nV+QBX95){RMXf2)%Vo{-B;p zmX8>3_j9>%XLw;rhczb&h*1CP%K^J@o&tt^RVlXXiHD{R?;!bF=5@hNedj)0rpv#} zaM|3=`t8PwPc~nN-ax9N=9!B~RBALt4{0doP~@WTYxzF8&YjTyjAN(6a`b$jAk5%%XT6M&AU>9i3`~ z`OSxVs#%9GC162&PEjBxbC$S}yTZT*%GBc@e$Ok30zE_PJ2CTIxLQMaJ@a6t!93^a zLKs9}JPFw<2Rg&BB1(6tj&&}|f2aTy^U6U^h>KA9>;|_qCNM11(|uY4#L$I-&GE|T zi?YEm;>%w|=Rmh30FZvi2GdWOAh0Cb*{P%9Ibus2sAI+6EIq9r1ZWx|DBEWh!p5f)o%2{9UX?KdM$A`q?0) zyZv%cbOqN3rnWrz{2{D3<>Bk!AH~=}y}9#MZkdHmVI6CO{G3TMr*y8RbxmJz66bS3 zn2C%7r4!p~d_Qbib#(p1^R-vb6@A#sve+;&Qrmu|C@bz&blj7rMe^XsAEI{tQfs_E z9Z?C-<%H`cezEnx+WYFmN~wPGo4;$1J}^GN^5lx-*%v>Y{ScwpdB0f}4b8a=B7>O3Pka2y zj>(^P6eu1^&tJW%82%Wyt6~bWx%fmNL7tr|-*jx~>h({t8w$a{WAwm1szNL0O*^`H zmi1h`L?Up=UYO!PW8rETDq0URb+`2xZUZ|5Ehi%FlODj*I0D>c7tfo*V_G_G!S<68 z5u`4I6-&1n-@+1HgC9T&M!~_UUxeY2C-IpKYkl!tsYNg^WX3puYb+MNoN^K`k0Kvw zU?QUECoy)#d492EVR#AaxI=84=u@TU+tOckUgLbL%(D+YNZiVu`6{CMhY{azROIOo zQRRzvw}*KIjh(=S+Pq+@Ypfr4`Vza08-hyfvN={-%KyZ>>@sr+75zj)m&Vfw9E9PEc?N=28>_i_pTTw%qQsz*^|>{GmecH zV5d-(&0i-*s@DHu1MyM6zm^T0f&?4wDj7^ZV@p`FHT(Vay`QyDZ(j*>@*3R^Va(II z_;`UY`qo#gn9*+Hz*$(yJE&eaAF8h<=iX~Sx`C<1hlL@xn zQ<#gVJYE~@$$#Ki{~q(`<5Jf>pOap1(Y~}QZECZv+kXAYL-pm6l{&G~QWGW%Cn1M8 zl$3lh_1}r3&w%YClg<8AQt#|lgHA17&0jRb#fd2Vo7>k2``&Q%E7hTUYON6w5W69p z%UlAiO&nOl9W)ENyfV$QG+f>~adUhh;hS6>J`JoFdh)F1I8YkN&fth4$owyHAuuxY zT3Cn5<}ae!4kAW?fnK_MVrjFUrSh(f*2~O=m<|7U{6ha1 zW&Qc` zvwzouSo$wudQ3L%m*xx44z9s`X;J76q@w;Z^(HBZC(c1%91Ki>=!FYzV{9C1s_*h$ zL}BjtZqBbl`gap0n%Fg;Rf((niobs;$4ey8cH(?T46+NO*CShKZ1YJ=!#|R(VrUG{a-P5%^lqJowQDd0 z7Phyo{_ovSdf>Sc3OPF#sh5YWBzD!dxz!EfK2mg_F`y}Ll(=t*sW+~`b|{KE6htKn z`w`%jLO~Ly3|g2d5En0(k+T%&>Kwgy7ZQ@N_;Hz@-`qfn-Y#zeO>^;!Vx(IMv==1c~5sep<7#nG3`Ffi_e?p$0i z1<|3vjwse=pzyN*WQ`63j9!`zfb}Vy(MtMXAaah0>jw-?GLii%gjS+300C|HQ-*ra zto^1ysqG500r<(!HkFEBMv{^i_h&FZaX|6R=S>evjQTt3s2wdDQQ*D-Y=H-p%=2;9 zUUts-k=F{`sAimepT7$<(oghQb-;Qvd;5)%=e(0Jzd2Nk4tbvI=`-qkmZ|>&puZH1 z+P6RO8vSny_ps&n z0%8#ar9p8Os_~xNRJ{A6F1KC^{tE|H!_*s+5&lF$_I%N=*CEvv&r<;UmOzYR7Bk05 zk6~iJ0Q6-P)R1g2Oo5uak8D?Tvpwi}SZUF*ryJ06O_Nf}LgNFK(%&OK03oT5v;(k%K0`Y7Z zJ-YwxFQ#7a2$p%uC$s?FM7-nDWBqxR_xHBEY@*(oedG8plqCz0x{Ge@NH02n4dra^z{Z5bJ) zG?;bl2HD%?12E&ng-Xq@NPD<8VD(VumQc$ATnq7f)+_H-eCQAdCy}|;E3k7bBmOEF zEZ*ekg=g1Z*yInJ#xhX^mR{JH!E25WgMvCRyk;ARoXVLzSv{^9GMJ@6vK2^%e8R`& z?iavtvjMU-CrHN|^?ajUTOONgk9c?2w8Bsi#7ESPz%E{1z1eup?$0)WgFc~b+~RDf zgT6VVL`>6u7{3d)^FfNBFr?oQ4Qm*bXl8z05twJ+t~r#rj5a&TLBhAv3~~$*PVjNX zTH3$CFNxiNR`M<1q*P|oFyQfD3d%ecnXQ27An}qRoR|{!)pg^WD;q!g7XJ8(%6K?A zqra3FijdT-5^N9DekWpL9wJ{G+tvW^Grrv?<9g?a2Jf0SLG9t+G+}4rHXf6?)ey0x z3K;uTuFX3Xtf9ob4>C5CczH2q^bjI``xnOeCsOZ=UF4T@h54KA;uxcD5dd_AAuTQ2 z;3J?=FphLBNI4^cjx&7@12DVf>r+$pO>DbThzJu~qb+557fA>a(F)pLRvOF3ey;j%z|5?h<`O< zCfmRf3MQP3isnavX}RSwetsii5whifnfA2+66++aTeI%e%dVxWyic4EE8C&wIAp{& zEMyq1%?GUe48RzGtj$3 zdMc#%BHVBoH@Qkzw+mrYU%%|w``e$sTv7Oy*gCQn(S0UrgyV_^;_EtmGJkkyW8n{C z>?T6FZW(Vasav5cNSIXOs1yv)o;0rRYB5YW+fza!hnbGy)ZT-|^N;ta4FrJYFVWFw zb+Q5(^D__s<09`kzw8*H{Iq&Wuk7>VH?t5p#^JzLY|6u16wYpYY`@|M0f^ByX#}Uc zOXk*~BJEpAp71Y#d{wTdB^&Zl_9sFH%)Q4Mn@#l!aGE4y1KgZOiRAy(2EWuCLQTS= zD=&U&rt@*MCIH@Lq9ofN|0D%MDncP(M^i8E{HEG}S7We%$4tLX;CNtbb8+H4sx2$u zbz-_}G5iGplN0ykvZ>WiH%CF7xql&6M&Z1&*S#;sW@9>u6}!QoeC)oXoP772c@)m> zFbJn$h)SJ+zS+ulqU5yhgw`BIz^8n$sdi6vp8tlZ!T+V6G2`L}yO5Ssr;Faa!LR2R z@Ul&*7PiXc)KiS3@!y&->pp1=))wm%Y`3LScHRZ(v)$6FRzzq~wg&kJp)gwmNIYbY zh>=jlT28!Q0k+@q4>>hQ^Z3z(kMdqcqZWjqQvCN3W%!t$9491z!FJvrJ zwwI%yt@~;aJYNR}a8Et8c4>gEpJeSXg#k|k{z7a%bglWSZdkicNE?E2&pWg2F<&(L z_4%4why6Pq@WY6ALJLn5rcMv6eeW`g9DTg#H}jX@PUKN~)fVBY;m!I>XG*V0 z-f$vYIDN!VZByWNfjg`Rm>Ew(kJ{94zgrZAxQwZ#K(ywgXw)SO|JiCI6b!h z2Lj@LTd>qi>HZb%d+BM)r9UI&J`QR`_Q#~^vNm>umu;=r(Kpu;fA?G*!|w7~sFn5O zPevue2rm_7A13cYuS7{!_F6S`>`a056V-kpSrfyW>~VgQg^P`uUd#j}bQD+p-AxC* zTy|<*-tX&gC|kV09yA>uRTG~0dfoJ>i)1`~H~=26(tx`a2E96V3jp0h#6sw8VhWN( z#*A!*{8c>qY^ip3P@HYu335eLGWA|7_8WKH{XA(gbqXd>AlkoR{PI*k$IvJ)>MyOg z{ijf0Nl8y(*dJ}hi%n3mjS+3slsL$dNq8@Ni>aj|k5X+NCPk`H(x8uEyRLzP%BGP$Z#ry9oVDrmK&< zDt7%B@*^Q-WXZ|d-Om@aBRuanB?epn!|44JYMtyTs6j1dhOT)L_(jGa{@3o1_cbs} zkG;zAW9V6uXJ-=y_DQZ1;>aWYtpjSZXV= z0bu%%z0UXZ-)wj`%+_eLmFd<$GXWEh_G>*?qIrmXG+P{R|@ujtWFms>8s zq##F$K2N@TyEm~CotB9ym{Gu90580fplg?6Rgn;V6Q~wlg2)Rqre*j^#h-=u@FspE z0ij)80(3-1wwUr2J|Gr4#gH7dDe!$_g0DQl>pppN9B%6z(bKal^7vAnfkB{_K#i8K zSc|vhrr(pI4SGoNcGz+UclX2qtNoj+v9cAgVWgcTT;jXek2JKiP_xXCZgT95XBXrM zbwx}-cNd~@axduxY4Dy`zsxt#VdO0>WAI2IcXZ^~KY2QC;>MTXY%h8>-XVYnAa*H* z>?EFG`LtErG{zj~R1XRI%3?)wpWxJ<*qU-ee3 z$*L~%O(w=g;>%MA?~3}-cGhxCrqpZ8+Rn~jGn0#V-*QQ7-X1H%fsawvf03-qocX+( zLjgh$T6=SyZI+AJp4u+6?F1IYdi6HXNMqLtIn18X!x1>77)?J6FEsnoBg&apnw5pl zOo>)FNiRW5_&7?0vTv!aNH$t0z?-e3ccSAQRzRk!t&iq{<=QQLnaQ&( zftfALBn&})MzE+;_M1jxfkHF18&zZ&O7QHn+ucU#Hr-(PS7maG-z zlsr}s~Tl&@H9nS|28{tLMKq$`o$i4W!kIFuo#))*V)QUPrF4*(?`+v_1JS*iQ zYevzPIn&Ytme^v!7_*;`jgD*(+E8!^^PTsK57B&y3qpKk$tvhMx~$o*g7l~0UklXF z9*}!LS48>1ex!g|N-3#EFbI4c?;FM*WoKaP8n1kDsos;6f;+?!*qV4=s-4iJuT5D~ zY%RLz_Ug<|x-5qHR|5BBiwZW+(}`?0VxBKpsOI5)`4fqJ= zSj~C-8Of4HSW>gVAs;KdGDF4eAoFeKumahPEvESw$dL`Q3(;2IGf0zl6S4tR{U3b> z{N_{E^@__L(=F9WoYZY7PmAhSq+1{-xv`dBwkTlQCLxkZ{3R((bZdkqC}>t%Im}kQ z7)Dj7^wGc$hv75$426N?7i^=)w<(N75@vN*esR;363dAhq2zN!R2^yD+t5+JmJFwj zqZaow=UOaZ~t7e;yQy2-(Tv&Tj{=<5rzS?#DPZ5#IXf>T*sy52b6j4ITFFX z4hr&n=f9ZU#c9@nZ<2^-*aHWQ`s+dirMvG}YTfp_EHZ2D26azhOY>YFEvp%AG5w)j z0o}4LN;_KW{q0<`e+|ST`q~he-GC{w6gb4n1e76Ga4M(!LtNy^#SWLMGo%glU*uu$ zIyxKtljk1(uY{OZz08vn>Ig8RELl+E&L^R8&EBG;KWq=)m`Iz?#s$>~s+Onk@#?bFat@75)U?PoQ#>_!xNJ02#mN!Jv~JVU}(uycUY ziWk*D-yIA}_ zevY%~T2khImxc=SX#5%C3eJc8tGXbhVpa6b*w5iaJHbp&!{N^ZQ9A~F>Z>gy+T$2$ zcSIG*cW_R(zFI|AZaMv!7-QSMGT!qJ$Y>KO)5F)_dd05QyPhsaNr~^P+@3!Br^cc$ z&o>KaikIu(Cv+1kT5VUMQI*2~zBFa8CKwmm6t8e*s$G^jozJuFa^-wjd-eJ`;DuU! zXm_R>Hkj_7W77nA;m#$u?=sY$T>hQx!e;3^KkI5luI4-Tx38a%%3-CFC;u7*Ig{Ai z3jdX5^7|jTEPs}jgl|o94^VoXKL)ycJVN>?e^+}F=L+SS!;?jf&f&8S4p|b7pfGTX z3*&b>41$&{b5b**)H1*`Bhd$5DB{jmv@MTR$#2 zQ!5xdAO59W^t3(d#k6BJ=^AoOo6NqT)k=R-Z4Jsky-zP#2W)!pvp^2Hqk;o3`24s{2=q&pWLHFIF+#xJ?)ym$T)_8ET9Kf*Wh7MC-z zBi{v|j=tQOyK{Zxvy0Ll^{eu2szmlzvO=AquL3+emZrx2sGm!AUb=Z+X>;qpL;naT zwmRR_Ky8Q}6>FTKn};WD0@|XSpJbNBA-+nu2Uc7H%+I7=U%S5mPXA||5$KGEj z>-XF^o%`nn&G+}@r(6Hs#{8YD*t^i@eEVab|L%uJ_g?9BUi$0%t-tdJZ^P)L*&j+h zwC^7U{GEqu|9-`AfG!+xBxmC4ZYV>${X;3I|L~51N1SU{I5_D)l>PsFa_0Uv;+V|r zR`1|i&2ViHJX;r@eI(B@ljkhvEo$bu_Vd8~TyyDOOhCR~!+M z-)@B6@c!M)To(Bw1ZI(Z`*}_%{*& z7wokx7KBUruwqe0zb@q{j3V$pISc0g<>xU%To}98!bQm)A|#>2d5zE_QUvWN^(6$P zN=4aH4&SAuw0}>ISo~snY3@vE;e4qlq4dxUH)6-ub>iJiJ9giHQzo6+#CNj!bC`cJ zK*-K4H}5Y$$S7OED4e;fE#EH|(jS(!yOa}}_rlfXel8Ww#TBH_`?{$}t^2*UR_TVhL@KOuDUwAf`f|2)zpjLpWT7m=at&c?Q4!`|2`ix# z-w<;7>bKv2u*W$&pYu8I_xtmF6*r7#mr4qIWTneeM2q_h2X^jl3oq#{)L$(tc`{m< z)t%KITP&3o-kHp<-n;Cr%=ngl{_D2*@~ncd>kCh$l)Rl^ez%+P z+`izywh~oJ1yEBWm@X}9%lkH3oSjlu+vfD7yW(v@`B0&_3s>=Rx@byLay48$&=uF$ zSE$<~p4GEmFE!_tr1GU**|QY!r?#TsE0Uj{sCt-EX|{Z((KtKxfR%EFuTe2ez; ziVA3B`QZ+wy#DHyMWy2K((R+k6DbE4OFo+XdCNB9cq_ci3_??v$9+I_2+)FkA(1{b}FL6B3tTLRC^$6 z_he0ZcWUtV!UM%A^(Rsf_m4HK%C4*KKjMG28XZ?Zt7i|Z_}ELGy1p7|O#eQ6e8cUc zio>bZ+8l_1h{Cxi_s{NWAlKF`jyqzB-^-0W5PtRO%ZQ_YdXC~pkIuQH)rF6B(eoYf zwGLMse;XZqy|VsG*zwu@BH!8*2^){o9hw>(>Z7h!EigWct!>obRe$_vQX+FcYpSic+SRb5_}C?bnFIH| z8~khQ&_30aJ2ehHhbnzeosEkx?8!UjbK=fjXEalN zj?Rue9gUZ*{&gHXR`R^~v{&t+StsiQuQsF^iFvUnx9{4&`OfJJ*#}4tjbEm#yT?wN z{S?10F30rL@qHTWuSo7^H#|yh+T>H4hd=vuS7TeP{ByIc2Y+T^_Zjd|%g>WidFs*g zac37els8M7JayZslKkVHQeh4bQ_}+Nt z{GB@&KknLd?N`Zyl-;o=r;_~~l1xtCyn6QU=z(7cFL`fju-VicfWHJ3T?&37b9o`T z>TvmpgU7`5<)?8H&Pu`V=2O3nE7$M7{HeBi=b;njr<$DaoH}>1>6fIu=+MRZx$`Uf z1a>`Fj`;0)fWLYy>T2Vrt0(RXSCm{mHIAITd-W{gTI<|v=kFp~$nwtntCvq*yLR{5 z_3>*ruU)-DXjetG-`dpPwgRTJ04nfL*LeE_!u5x9uj_V0CUQV~#+kr?w3&(e^6Q}x zcoHGs1kixj_4g$=#!lTBKec-{0}?TakEkRCg8A~_GKchhF#_7-ASMgm)V zFx{EgwKJ{Da;fJPDdk_jPHiqGoi*14KsPanolL^_&lC#{=BAc{1_)gme2hjnM1$`F z@Q0bin>;MxA{Z&vQSyoH;<)ssun7-73=nV03Huo{_Az2&&m{R9mE5Z)9+sjCTnP`j z#7+bs$=VjfBXnxfK_2l6!v{?R_bLdtxH>gV;w5SK*64dr)9zVCcV+oQR^qOUuFx7W z>AQlYFE%upw2ncD|4J!;n3N|7hLxk$cPUz@c^aT7q`=J!q+fFKJ1#}L3C#qF|MDn5 zc$9YlKKC=Y6d-<--~TBlZ&PSNRLT_Zp}}E_ii@Tz(9aRd4>e_gswm09yp>YM5b}2x z<*~+7-9Y*wr%Z^+Ke^;x2>878vCrwpkH(>S8Yt)%IA zlUN!LK8aAKsH6)T!XqZ`2O57!LH^DlY1?#J+K?g^>Sq+`4~rBlzdrw^_Ggisw6}#v z*(m_;@+coQggcYup9<1W#S_2H11HJ`F5LwU5zvqi(!`j3V)Psqym^pn#m7u&Q>9q9 z=X*Ww6vL31pbdu-Gl6PtN)(p>h_TwDs%R2ST0nV01yOSHG>ag8NczPf9pqy#$jRRk z0?fiZmQn_^C@B@3I!_JsC;vbQj?B(!HVDWG|4sH)ZpOUiQtktQBlqE9*38@qF+~CB zKW7XaKRiIVuOS6qT`k2GF@}oxxT_4p5-Q}x>I&WZB;xv$mf4t(a!R!Vq5(RiT*_ev zP%S5ag}k5YAbL@NMmf!C7?vrke=$s`3uC4N(r@SilB?!VidF5IfnImf`a zGVl#j!etHG=*Ez5tMv;Wc}`uQpk1195Km}){nvn39JcZ!3>S@y7 z=a~Ov@$VWxzEe6)sLT-$02P5ubdzz73T%WLc4s(rsR;k{;@EuZdM?bClYhwxK3u?L zkX+3lEGLh-t$y>AMXCM^zL&oV5yKhsBg7G z&I?P34gl?H%40c-G6}|gB3wux_hg_xiYezODKsi+nmM3YIAKBgVtM2rJJuH)3bYl# zdGjGB;A2$>lr>5IAthe~2#@51U;ymlQYH|5H9-C?C&o(w$5-SE^EdAT$M)ZN6V3%x zT*^llAx4E)v2>`c8Pr8>Cvj5i)a%?(W7$^Fo^(>R8tXcB&*viXkDOF3#cp7MzpuZI zyn>8qIXn@br{V+ky9znc6nf`{ceZLzwF`=*ai(YEPc+#rNcg6pZI&teMtG)0@A zpq(vCW|BTjDawDzyQntSJc7L`^-I_{`!ZJgn(Oe~VJw_<>XTg(*YPv_wI}9mkD>=N!gS>q1DxkgY4<7?2FA_PWgI z^u*jdHUxG%#`bkbqL=f6b(>FJ~%?oZS!sQxrryci&ZiH)AK9N#i>`24SL=$gM zR^&mjMNY}esarZm>Ay>3e0rb%+&22KanXs@FMn;H=)bsS&G^CJJ70=4{i2;SXJ7e+ zQ50u4ynglH?&;5OADme8dQYsun&RzC3(9M)P2#R?VL=4QeCbN)@ zpL=04nCSL|&lyiD6mX~<{frRZDEH67lpz0%P=ol)&!P0!ClhZQt0NbOj&Hp1In1>A zSmi0BWc{t-RweG|=Fylv@62|#HQV4GcMN|HYY*%e?RTqv@d5Ty7=@ib-82#zeJ&(6 zcmJH(nNcXWszhvkX7!b15#@eczA;?>WZR;^-)k4=#tk>GpS9wGPCjAY_1dbgYYcu~ zU6j>mWUia6zwt8D=w5Z?Ip$CjK)>Pgx&@~aVQ{%i zK^164Wp~l6N*nU^XNoLiQwq$KoShYB%X29gw(eY9!(R0Jc+X*8-W!oK&8au6=wVimS>F^eVhF!2rX@u{=q^8z}l{0%NbFk*}A%{hJ zxL2Vav$hR>4%=UMYnP@ry?2!KZtsWA*(RJjiFP#(ac+s_seOqjYMcXAh;BN0EzYnriaDNIV1SO6Sk>%3o|vn;+Gq%q@mnZZJ498^X7XFVA z`>>4g+06OgySl9L%Y3hjm(g-@2}jKyPIqAHG{h~8$l@0x>%G`(g_)Tu9m7&3l%*_R;HW^+ zr|Ye))u0`ra9P(Zac)nXbj?4GeKWzdm|T7U%tYR(EC11FpAVq_*mv?d%R zXJThFsOL>KD@avDO#vphVvYn^@`)Ep#%mW*M+l;Ot2{5cL@rrg2Hj*9n7O}ez$%W4 zFia)J-LfKTl;G&t7i?FZSe{jwOryy5MOiW+%Qnb-4O5_ARgzq#f%br&~h}C7CsetK;tNUOgo&K;IK%b>D5bM&qo_s>M$rUy#x{w*9=v zJB*t zHROg0FK};DKi%2V0VMdP+ua#IM6!vV{b!J#b}?%-2)xqCK%jUx+Ad2Wh3x(*XK74%H<6UEr4Kvu#@& zJipCK6O;z_u3f+L+C3B4DnVs-kuNe^4;DLcd89XVto0>L@eVHM_|A7*>VFKr?=Uxj zlO$oGHz(2IilYoiNw8NRhp)B#?IIO zeY!_4Rgl#7*qe_N3Hu~0y_exw??)glWCdtE89wO$!%`>Unw7;r-L3}DhKN7PHI#?; zU5nb3r5^2t6M3BcFWm$%|&||g?<@Mw!6^0vZll zKZ#B3-gol_i`;%V=9h4xHjM^AyT~eOazUUZFM*rqrp6mEpm4;LG6coNTI=!QSe%0% z6XNo7#~!-4F!K`R=%otLn9Bi@H@sAl7pFk!yf7rvVM`)rzF0gjHg8QII$n{tx;rnF zS?13?eQ+hTqD=(&C_|^QG1A;rDF#ye*k{5q-Fdu1IL)WX56Mg5<#|gKXPKaVY;Fv% zV6SANltSRWBAeopsQ|TLf_Owkpuyq`H~WG^K_Z^Mypr zLeN=25UNCt%#SaOLezi7e`-3OQz zg%-Djm*kXVC3$Il%!WQp63()c;UdmIBL_ff;Y` zZ;gUixJN&7yazUeCK8BOh<#C2G^Rvp4M8AD{A2ibH;quawX8eCfMWvEsDkBpqhETL zlDgrnZq$P(NA`LX<8=L;`Y>rS;=Dw#@YlV!ZVM)Q7kEbpSa1!)$yNQpnd|y-kV`Hjr-umFOfTHkesTuCyugB066}bnz_uHm z!7tdWD6*9u2$f^Ar)#ss*qz-jF5Yuyk71%^o#cR}?iWi=vY~&|T(&zt)SLGJq=5-Y zfj8CCWHLWR1KmL_uc-kR2ZqJrwb}bA1$|^(olMwpRDkG4Y`#e-c5@Sq~|e zi}gO*hxlsk9nS=o5U0r9(TA%3Q%sp&x|2GKZMzJgAmnSKG}~l_zK{0yVYU_O;Bc7T z-OE0p%&n|`0e|<%cS;>44!K&>`*OWcxIa2YG z{B(v0;^n7z!$+!h@LVV{>zSnRS@0@o8-fYxzxyBso6Iw&$xwFRdMUA}RBx;7Hf)-@ zi5B~O^bOvCnYTG>UsgAE4Hvr5yW-IGr@+jkr=EwaNXSwiDHfs$q6)Eoe4#dt!zN`> zO(9T_*SA+3`{8(B5??q_dfM{2s)dZ zAIgONV+#`79vwOzf9RiOt4NFYmI>|dO3R9pxR-y*>%OhI>X{KBp`a)zXBRKeQ5xbk&Qeq!ro-7>{M$tAzhNyz)Su-#Cs- zkQGFGAmw!;QX#_f*5ZCIX*2e%n@3j}yB4hFEy8j0E;YutX3@D~)Y(2j8?YxXUG-;O z1Za%f4PdSW(8w{$I?%%swnP%gAS4xA7>vTY<)_;cac$;Ig=FjQqK` zqD|Uz_lD#B!m-h(1$9Z-xI(}Q$avkEe(n4Hnvej_lBh3y+cZ)6s@P|5#UiZ*8zWM>uF z>p<&bu{&o*^JDnfwXv&OWrEN?>^A$PPCk^`hW)iQY0;T(6BnT~6Lyo)?C*n)-QM5R z#BWw%lO@6*Rs@@A$h8l$ro+~SMcaoUdvBXn@2bz*gvR|9+EPUc2d*#v3)xB_CyBWz z`+*A+cJ(H~wy+ZeTD{}WS*p-QK6FL~I#J#Kv#<%rlMSjvETgQ?3Bj zUP^TBs*3jNlrpDiW2wNLFDN(AHK2<^N8!NNF$lp|}2pUQu#4x}OHzJ~!A`nv>aYS|PkyDrm!~k&e2m>u}+Wp}{ z%h-a-$2mWHw|oxU+*Cr*5brQ=_qrh4QVC}kM(+BFK(Q(6URUXvP3d2#2frhLS_n)6 zsA;V6DEjiFV`0lG>?+M%n5K{23T8`hxSUE^&*oi5gxjfzEO3{h1-xK5ZV1s5Iw+n3UW_ zQdpM-7~m#c!1{#@>=tQ$8WYR)?r0xG{HF6#3JW$ffalUxYXR&(GxYa+(#NaK1qtGO z@rPop)ICPL_?jH_S7WxyFbC)buap2+R?ySlTWv6LGO;N~vi={l+>}1Q*Ma=%AsPyY zGVcR1;b}K=YT7<(pIf0fkQbPR|E~z?Y6}(h1FmhD&Gtxdh+?IzV9uwQ=-tF7oMz3a~--(MzbeLwBVVY5^x9D?|i$H%0 z9qTO;W*?;EP;sMqaomr@addqKHW|PqQ$;E%5Y5cr%gl2e3bU4>R!l?jqiAmTx}7xU zvZ2lx94cAaQ@y!h9Ua)CTPFG3yi=AN+Lsq6fw7)t9uo8#Y2Na*(ojjBw=8dsb`S-~ z410LQSOLfPXe=o=xUF$eah%HwheQ z0vGj7uL&Be7rhO@{$=KG+G9rvPN34fiEQS^4RlsEJ@n6AqyL!fw)=NY-D#U%OpdCMq($o zFiIHNo*9@6VeWpgEM^^T);n1SfF2T zH2b;P#ImO6+=FG42>mei7}Ee+`WJl^By_kRth5Q%(GyIDz zuV;monsv-XK*#?ik4v3RleQkFZ_n!r zQZm?r+5d(ID{$e-PPQQ_Gy9(s33pX*xTupN_#ucwE~ zHyojqanT+V+$DLmf7Fj7jvBS{tU_l?Sj|0l$Lh}AnS1_^tdTegU>4$f3)arM+nyY< zdiKaS3i?^K^=*tb7rE!T!GG3MkA9+}qiDswC5y-@_{%Jh!5LO+E-e_9sJhnG;)cQ4 zlsHOU-f6zMr}Q5E0;~{)`fVF6$#(qnUCpXm$c&Ly)6_Z$$9mLJzitvogYFl|FQ( z%nljh>-cq0X?3_5CcKd3Gr~VklGq!BP??Jrk-kl0XOuxaF40Sx)#WT^<=PgqbyP;6 z^8l^D_z7e7Qvouk_LlG^D=O~E(RflIP`cA`=IAD+9P9Mgz*|ja>n8J|ADPtz>+sZ! zvfXvMRy?h?uEMby9M^%w{Hp(i=GSCGstrhqql5hAKLO(li6ny@gfPH89I9;!Y+<~C zsecM^-EuNdosNGj!+y%~s-$TIbV(l)A_Pj~rkt|3)>)g4r*!!xt<84iA+ug7P!tA$ zd3yd%P#BWSQ*ewgQNz3wXejLoc9Zex(0O+<%Gn{nY{QUHzbdde(%*J=Y%JDuc>~@i zL5;Bp&Yzn?BPBCF!tvbOe$_+x)!by7$_2C;6qGJZ368h@t+FasmM1cYDdE$AL0u*J z3cJHxq!kNp@W}ipNrp2oySp6gb_DA!Q<}U4^5+Sa6EY<#2RqaPvbPVx>(3jruXIjWh$3%;R5eS2>%=lvmS%E0NY_|h z0lqYpTUaN`r#m!AGGtfSIb=S8(>0I(@aSNNdsFFf1Ue7_P<#e@%dYUA=vLAW3CE~J zXCJ-1lDs4O4Oyou%JLwyB(pQw_yjsS5{{dzBj!us0L4-9cx0S@~XHdr#qDfD2L8_c%ax%8Sp=p-4 zJ6fQ7k3NI-QzVu;^WVbz?Ypd)OvsLO^tJGlrpC`r{0I5wJ zf?6&;X7-35>U(3d3fIXto{)68r@IRobnP&3%594$i;D(hI#Hh7P`^E3Q=!DtY=9r! zv-ZQwe}!J{!%xGb=Ws#HGHsxu?b?t)mY}1o>;%1#g&K^Rqt4M-P^HM^FvlHN_sNob z9Js-hFI(`T?1l+-QS=}|fX!Tiq5;gjmoXys3!%%-Pl-iR8R=O zO~xk0VLaOfN!s|lN+!xm{QBA7VY8*Dw(y6~FLk%2!xlJsnA|OqICT*HwG7!XW2uNM zD+HiBm4!MV2#-D|`P_|rwe`y`&0F){u134|aH1zbjB$kY-lXKy({s!X2H%-o9(FxE zp7!4F%@zMO7&lUNKYm!DihCj}#}RHf4mWTS=(MLxNFU)` z##`STx(-j}MFGjQiCSx^(}C;|e*UhOH{=A%v#qx01h;Sbz8HA*-E_mfrMA70`4~U6 zrZ;hgZNjey71z73?QyBt(e}n3*@&;Ux9k@>PQ=y9W_Td@Cfif~q zlV%g`x!*14vYwYl{KnCj0_0<lp;dOMpV*=KK>4me z9ix$J0>2)bsca&A8C$%lO~-LHB}1X2KEic9JIJ?<4LN3_kz(w{;$c>-%J?EPf89Nv zm8~~yD);X7ye}wXl=5_Be2mwpcX<1egF60*<>cWz{dIhL)6A^i$M50c_rbXqG zX67eWd8Y_Te_)IlWb#E`A+XI8q$E}7?I@blY2n(*e(_)Im=f|P!uB?>cMiu+5lUSP zc_19mi4Oe{LjsrOlm>h1KlYx|Kr+bNU1UN9>?~CVIRH)4;ajTmTB|aSHd!_$^qv$t zuwd^@6{C}`E9>w;R33^BSF7zt5@{1sCWwQ+-gs=Mc5ef(w z`Qk*IGGAlEJK|r?3h0FAwuITrMFA};-(Ho!HwTmh`eIQ4j)T3W3T%UD`dHsSjvw!- z{{-Z*-`rYXsw7t9(m*%0%1;0H#4?Qu9T zTtruN1RjSC3lTj84gfgV&u`{XmDmw*E=w5oB{(2cWaf`U%aZO~>ArqA7R3v8Ud}dM zE4216)EfkyZo^J}N;65Z`ylK-1sb-+dux<{*3IivxrvpB+u_5dD~T+Hvw{;C4cm6I z?NAWd9pNW~44EBXYS_8^vGr<^bq+Pq9yXvWoO(rGqaYxz_GB(2EfbjWgn{iMbJIbL zyUJg~ab*h4q#Z^?#T>QDCj~M{3HDWp=Gr6ll$Y+z;M4)mm&B1UXaj#&+>ACE3Kh=6 zgd>Kz!A64sUX3t{Ml7sUx9)L5@hAe^_ zxx?_{{8BorW5;Zczf5JjR(IK%VdM`T9Zn8#=h#LoclYG!u(XXv*q;ZX(^%W1*?xl} z_a_~5>{UU1s@VWCSL>dnKtQ3=>0!NX^uNHd9U1s0XK80|e5ZtSN3=a0l~)>I z{6rPR>cEUBd`38V#;gyqv)6wYt)CrURSKpQ&n_0f^FOXKU(+~9{mAYB+BhgY22z}=(Z>VnH6RleP@^o(fsT3t+tt$B-S%$I5! zzzG=Tw1X-m|H3vgTbM3fEeFioIRR=>z@RE%R20+}oWJ@tV{*UCh{ywnD!Ll))xt1LM~NjS1CCn~>m}aUGVULdR;bt~}w^$KU{zh(r{c z^da>F3a=57FG}^dhvQ4!IMX2P0Bk-SJ@bAMW*v&S4v66dUf{S$A=h@;FD;mtGUs*1 z#*pbaQV45S0_4mSrRu^@GZzatLZ=46AV@Vw4$YMc=ZM*0TX29xWNi-^*u#NbQF4*# z>Z>n2+my}ah%OEesus;5o}MFtX3GJa%sRbJ1WZ$1h+O|66TURiAubmj;-9+wr3>rM z2?*zmwmfj3qO&REqWk#3H_Z&Wnz2>|3S^7V!q&WIYUP9Amr;Hg%*glMnz+fQ|H5DKON zifUQfOp_C|E3yM%A%_+i6QbEvKmpr>&Z8nP2JYl-*gsPU`2*)@Y`+oCyizn^Bh|B4 z#NQFk!zoOqZ~#MezK*;4KJ3-0Y<^}uZ&It?f`H~MO$-up1Ob2GId!*vM^r)KP4l`% zK7C36fCt~9QThsl36Y;vySN*qK2y2plJ#vlLCZwC8t38WNJfa<#Gf@Q=a}U0;ntT4 z_@H#cHTfO2qW(V>Dpz2f)xU>+$iix(x%iAOPU$yucsBtnN}X8u#bbGPN8ljS9ytitOm zxBJ2K^i}R{9Z-%kegSMB0tcw)8dW58SAHhAZFA!k6T20U**Bj8!ao2>top-7X?mmyd# zM`Yy4VkjE5k9w%;gMM|t`>6KwK``$SpsVQc(ZCDdi+mhMS?wy>4wc^@74ylaZij8! z27mmuZ@ZZl2P4*ecf&AgBbe1g+cFethf*9h1hMjnj z0Y7i=U!ijy=mB^bv`I`Hm)P<;T>n^L$to9p5tGPqp>tfK+1gemZ!V~rx@$EeWTH6p zxWY@)o-0$3d2a_ZcmHfPlbH3d8Rp;A z#R*g9><|R>u1}B0Qs*cpHn$lx76N}cARQ^bGFT}=#*BcXrHHO=MBWT+(sL`nu?_TB z2m@G;iaF*)M0|GeYMB`tcV%8h9gEHy>i<&sx^U%^KLD1R z%g*mQb0=hvybzgkYs?=DoFE+N)VMYn$5aIvuy{qz26{Usr4tuA90GFjUCc(88U zr>tD!^_9C?p4Xk-7SejqH_YGfz`EMc%dq=bUAydj?bzCDp<;v6FKBiDfW|EXqh;)) za^&wh{TTC};riTF&dT|X@>TmlgOE;or@*8Q%oOZ1>13NOW4DP2yA(C_G(ofVba?ph z&?mr*(VySODU9wBg<&DsakrX=qI|ACrrSLf6s_cz5%tAv_u%4HCCZriPQx7KtwYyL z(Sq50cwQ67U7~Db2Kxc3vhLqU8gq@lc9;#u?(Nmu$FQJ$l}9@qFa;Z_U%*;hob?}5 zA2|QmFDeJ2OJH~I(x{e;;iUnWOaz_^QN(Yrun@FoHLMmL)XD5{lI7eTshj6W3>jfL z530H^`^=Mx91;#5(@MXEDi10vGXwT&`LEZ4Ldb*yqB*m}gXiU{EVRB6J=k|b2zi$Y z{=N17)PhrH-nDh!#d6k>6Yy+S-(%K8LoE?KJcE+M-6X=q}?1lwfFObphc}g-EB9Ke^{v~8)0@HRuFaU_Dfi-N zb26v-mYh5tli-|gNMyFy^!%nciAS@X+2x^)H!YyZ0Ng`J<~+}*)43Lh@A9%;ntj%hR$%M>BYn9!_yC9 z0_;Ne6;s_#$D>}f9XnS4;zs-4Hu&t-y=k#lxL@ZuQ7mgkNm*@1K<@c7llQps-U5xzb%urJ>-yLm_D6593`SWk8+&J#-K)HX(>or3 zsgJrZI8hhc`9e{hZJ=any9n8sB1*10*JS5N1eR`bOf(Z3h@N+Dk@2=zm#JEh=p;6A zSHjR+)9k^YeSt}XHFjq4xl(Dx4qiXcYDcj{KRI=vsNgW~26f0n?*RXn>87$~t2X1Q zwhj9d`-(Okc4^D+*%UkQ&xS)$?&pWhmVbM;fqEcXW@WhjUE&5q+c3JIBxOL^XqI)Z zNaWBdNS(iQb+~Jqma})knr}00Wv|aOXWCj^A8XxUhMT-&YaVtf(NE7ZaE_uT=Tqtl zy{9^^pw2SyydnB1}=wXgET;gsG&J}UZx0BfGX>H$S{ z^0Bp>H}0We>(^Oeqe{8X8G#-=XoRZ$pG_4qNM6U&0l`G{jm zn14#fA>$TXM-75?VSvOeeU7&M%eMPKBh8l{H5(S2<-AgoBdHCBp8zzfw9&x8n{ECm zHrH}}Yl&@m3w~jDsPFQjT<1al;t&O7(_49J)welr-8#?Y^~sJj*|5bsq*GTsR2~_k zK(Xn!{mWenSGI7BDLes*=t4OhiPSz@;7F+yfCl7lZf-kQNwavh|{x-QgnC;eTw;--d0Jr zmGfXJQef#xJ(tdebxdTCqtJ4uh}8?3JuXz-9nmvw?6Wie-iNVeRhDmSFWc}hU~PLJ zDe>mAbRK2RcQRnRBvLiRe%@`TpG)(yGp(=`dY6}H12$$ViEP1SllQn#*3mm=jmd7q zmqZ1-BqAeGEXTR~fIdDU$-JXmWV014xtswK?yji-KNyg|FeeD-jWgn1HQHJ$HXJ()Kz2Ngcd zLfa}HmV4w#Hw6sj`D|SwCZUqdyVWA=G&TX;aT@cmPv7-ZC6QY#GNdw~*;RrfHm}3v zt@qm?rlxr3Oae!*92e$v0|31elFjc+LmE!DMu9&wP5QDd*i5d@_6zW=aCxZT*3S_p zGNJineu&*|m-021)blk@C)WFn8#?ht=3l47oW67!wT2(V>rX>_VkZSPwIc0~jBWRK zv5rX&W91oY2TrIUrKYh_w;yS2|0ZHDKG6s^6#44?yIk;vIBII~{l1caKNjPPGt6rQhD|1%NTVD!Rus zqFcPU{E?NRI44nntJaimrm|P({Cw{3)Cz9q9>X8Rb=fA3cT_=dOrxj*y<)J!O)j0m z)JnUIlf-vo(s`(uEL&ZtyF$l~4zpN$liqhK{ommfij`boGiuqMS2$$$c3QZe4})CC zPoQ0kM(U?+BkAM-7|Lv!18w7EV(eN5Mf%C>#CxagoiU@#Ip^r=+g?L_SCji_|@ zIIe`29*6Z}5R7}AS>@h80&|gEpi_vHZxVy|+rXvXH{_uGgcmz>=4w7~Xob#BfPfP>?*%-BI{1>X|U`&+!uX5G( z>Clc;owFt(4DF^GrnBv}RV;xHT&My63GZsS$zg0;ahbo6GZpJB+yfQLzy_RMdcoB7DAR+2SH|nIUz*Rf2Pf@>r zAh^*29uSZ@_AC@ek?X^1MdpQDZzouGT$%q%j8+THWZYGW?;CW8_H6p3#+We0q(mYM z9Za|$r?!3l&``?iy^|x&ClwjzB&;09Wt>8@dpIPfe|>~kcqLK z`2?u9RRhyO^8`z*BgL*wU`#{?)(@H8P#lcr4Pr`8&q?fM@H(4@jKvyo4rrb-H0r5E zlR)~!=GVn)Tm^H{v!v45u->bg2Kq?=>J%Ef;&t+srb{-FUkw?0YMe(J=uY=%jSP|h zhJ&SvrUnhFQd=A|(d1R4`F(2U6RWqi<5%jBy*)Wzc#aTzsU$X??3s_L@PI9c5 ztqmyy_OLB9$~}Wzb7aV(lVLH^Kzlu8eyIVESD4BYHw7ZZ8*HPawzpF((==@31gee>KIN=-VI`oE+UaiZCM#$<7W$1lX(MqBYb zyMHb5fW3xzl5G}isdYdNUxAd_XTRi31h%u6M{5<*L?eG^^8}>}UR%im&1~2!>WJnn zHaNxl<|HtEHlswzER7egLrp1+1_b7PiL=6k!L5ljlf~vx z6h^6^CkYp;yymNxC37~^YVzEV21gc(u-HF)iI zBX4DaR~w86*Tc_vrs}sNachYi1!gi!Qi-jT0gv9n)@@72OF`514?kWdd{R#uY|AhN z6$X+>)c+{D_h_d7KMvr#U);92&SlIsMCMK|ZAk7dk-3!3U8Es*YBM%+TSB@|uBFSU zM5#9Bnxv9cs*zBsB>C#P-+t%p@13)=&)(;~_xtsHJSkLUVFR}6*p*2)^{)rPcC!N> z4B1{_oiadqLdg3kL?nDL({5Gz z9}so)I;xurzIPB8vz_%uLc@+e(#@>GWtxNVG;Jc&=s-383vtuuE1P~^b1Qr@Sn|Xe zSqRAT*9~|l8$`q1p1s7rqJC-Bw4DhU6l+P(+>?1QRZ=gJt2mdcJ8rcpvv7T8RPJT< z45D389Ju8KW6S4N#kmHxeUoSq^MUdl{g)NNI(T;(L7I*RyAmOGV(_R?V~}V$RA`C2 zE;A{wC7=Nik1-!f{@_)DR)AKC zE@*IklU0MZ^zz74tRI&mFVe*Vh*A9SsKn#wTLN?`5lGg>MbH2SMnS2=nhT|$Uiw?( ziR!~bd4fa?G;Y9gfez#k9|$}d2)j6J7;uiH`B4S5!qB=+Q~lfQoB>tKuv7v7uzk8{ zJqBous`*5S^}dWFUUfa_t2p0)GG>6*@VFWvQcj>U(V&PIgD+7vW@wtX-dPnfHZOl3 znwph0=IMNr?*3C%4AyiI4<{f1aJc|GMUywC${HnVj^nXK4cZ`}y{9;28y;jV#8GE~ zc%D+B#a@5v-doY0n;SgM3nRDTS1t{krSHV9`<->217U5*1Jtt zXEo}?Au_(Z7CX1-icwS2czmZ>U5 zq<4kHfodUohM`zaQ|g*S&CsxI<{C?Fx$Od#d=hG$sB-E1*5i_QI>}62gb;9ss*Z?C z!cM8`WU4_0%2N$$oqpIaOf9=E?AAKh53~PzTXGBWh#H_yB?)e#i>qdWD0sDxOk7+Y zew?RW1e71dr|E#|KMFP07>afT|7;^|y&B`Sbj_C}l^KDWn5k~e*hi;n-xflQfsp|h zb&4C5rl<;+2i=}+SDz88E>IQ7H0(dd$mn|V*JPPJK%`bVaw6zKFQw*A;B(>5#pAoBECT-)sC8lKVO*VNzBRrm24 z)3XY7f>?%!@qi79z=L@*R7Zg-1_!{sgUW>xUGxM%Y3hc5>#Dz#&~!6jLq>f4o)Do8 zPGpLBL#2y^^GVQ((+xM4TGkH%D`x7`K-rhqWpbIg znFd^!F50JG<)tq6b}_vb-yJp#Q=Qd$(tw+!X)fb?R0klL2z)vT=qixEBs{#@p#74D zqY6(@7-4UO+EPxzBo=*D_h1caPj8up2S9aISAke7`%hQBTudJZU?&=IZeG}k6&}BExB@OCtgzEc=5H3Syw4w76Nu37>TQr1c3$-R^H5oL`aau_D zlI$8#QIDwELX$Dp_0bW)>V0v24cH5_xEaB#I-2&@Wb~S_>ynzvAQRWcRJ%0vb3adM zl!P0ksUL07UK4jF3#3UN+{anDH=b!D#B1rai}!_?!^O}+fQ|y}*FU1hOhZvg!)H%1 zYNG)Qdh}IM1R29?U{B-vNJ=Y@AR>X5t^gb#XIHoPefwi3;u(t0UrZGc+w@CSr$J;T-V(3zB*ldmopnof3#zBPsRv z7*Yg`SCUzrh;|}Ppti!)c`VS5BO&laCDClcDoy(hQ#0)}Vk=3@O$*o5z%RZ6>!N8$ z6|XHcnI@*D91j-saQ$+F>N?Fbxf~Hk1HWp}nm7hpU}*7$X~hiHmmK-*@<28dTmRqHw|54=wnv-h8 z3U$flQZaPY-Mmh$AUBH|rkc|~;r@x`Xs#)IkRB@ldKj)W#UT2#-GeQD;@Wcyj*TrVRN)z`e*}1sL#6k9fo54f0&! zjyZ<-7B5v6l)6gAv?SmaF37A<0~e`FKa?~^b>aW0QlPp|7c|gCM5*ec4#^pah$ug| z`37F?waxGeDjGYBVpPcf0@y!^pM9Pq`;UP!dWOa}pgJYZusXcLKLL7`np88VKfxon z;uVJbwJKyD{K1?DD5)dg9mh>90*5-OK32jwe3fxT8gglGv3~L$4c^$r~Bfd4%!}$B*cn zY6Nxb&ON%|X)lWSIbk?*)TmuX#Qo9mT+(dnUvBo{$70Df>W+_QWwXiSjS}Ufe$TmM@|Y9=6 z#`|jx;;sdij{0v7UZ&pP?%pZd&+UB4jM=+0B|mLTC|Cc}IqiVn?r-mgk8h3~@9p`% zIAA}0yEWc=?bGys>tg}=PXB!s_m}A$i4dJgT2|#oKDu}J_kSzz9-QBK|Kmx&0NC?` zUtbqU{sLgeyl68t24QF>-zF}Uvs)6g(1#7(AiuUF&ia4zj+td^xeb9}%99hbB?ff~ zbEU?1ZQO9xqbr&P-p$7E%5A0+-c=Z{+dP(#FfLuk%e;~Q?X7x=K^|k<{2g*b$Cv1y zKi1ztly)?gcxlTTAx`wGM^j3*VpxB(G^(GU6wHMfb#Fwa$siLWPN_YFv>r7>Am1Nz zQq74^r7Fh9r74~?0qu+Y92#A|{LEzL{HV$8S%gYlTVuW1ykMXvu4Gs7iCNlGZR=K} z4~Y?^G2n<={MA<4x%!j%5yJ?&%$sT-tT3@T#Y@k#slEd*QX|*fBxc39hV&~(B8EV! z@%5=NOp3w|5!S=zmIzB)D}mg6JbtSQV>fC0vF*I-gLrhLnPr4L*&y$Xhpn+L?8L;; ztxA=WWM=W@>kCv5bj}O%fLibR{(i~**P!7-`G}xn{7c8H!^Oc@T|=8+*@RJ0fc6&c^J}R>S13VIUZe@0{pZ zoZIb$K%?HN95R}u8ZX!I6$`H8#sA3s^!`iFyn6VdAKzX_omS7~##S88o%VFI>r)O! zd{b$<6WOmq4a@3K6(lymA$&Y57L zc8EfPoK@Q*=B#b;D5=B8^#fkTrckMp0eZ7mWT0slB`^K)YOkTMAMgH(k5kl^1kBx; z&PmQtaUOx)BOr`LkUS*mtp}NNV&TWZtfG&&rL|4Q`q)12)=%EebMQ!@SjGRfVKz!Ru#7zyKYMB55v7*B`E6> z-Q;X3xEK5hDW+ktuUv8&q^KRmG7KU``gVIo6p?$&_z#eJZeHk1f?{(&UBvk?kgDH^ zy;z>GCFTbHWbWV=Gh7%@zYNKkAd@++}p^r>pZwOd}<0)Hjy zQ(TRKm_cZ#gNOHcln{!ksymHpkDiy`gDm#&^fG4O;5vUoyVe^^fMP-n&-95;v z0@F)et(wZ#iYVg2Gb36G;H#bdz&3mm@!@ZA< zSvzUvSRzr(_8B!!AXLERY`fI;uZ{aSeuu&I|`)c>+tH%%}RuB%&Jd0Dx0 zfse@irKI;wZef9l1;@zHPKS3dxqR>0IhWsbUS6p%JnYw4&fp=FvSb6>bO3Y{TDSgV z^#`?k{lK19DJF#pIO%DhZW z$Ky$!O!ai3dpo^j+fwqWkO4Ps7^cMaGVPQlr4YBa!f{=q?QUxa8Soh=q{j}ZSyL|d zw`2wGJUNcH6@!=(bcv<0TK2%P2vJ=P$0w*xMD{OB;kid~sPj z?DGjD%jL64gbjtCmR{%?Y6+;3qzKAyzMHJbQdZKvZ+d4DJ00=Xx;K>0k=B>OI*M@^ zntV>%L7jW(Ek@57azCzIV?`4{_G?0PC05kZ!yp@on0J}otn?&0Oyb==tI&{1sN?fX zT)TBAQ}G{3-C78Xw;?SzA z(#*2|-Xf^&MyLA1D{3$O#iPhfN)3+=kGOv;fW!wIOfWd3yME}-LvJ;^w-)&y2cjYs z>PX4tNbjYFTJva;)&zCIK{^NT+wI=*l?wOfDO&3jf8e!fC9aS@x$Iq^_3rWa1#Fvt z+HlqCqHaI*fc1rGCf!~2aS*g5?}hy6p7=l5GaM7*cDdknt5e&eK!@{sQkie8^9(KF zfAfX!54~|5k2%0T_^u&oytIC^VIa?6>FcL#qTvfHa4GVpicyiDZ)TI*#U@qGk;D`@0qCL+e`&jtN6=~`EUeV}^0-Nco+4(93iFf(OkuNqdIrbfjv;-iMwGrU-bZ0Oyg;(4mbIE`D@>Ua zhqB|l!3J_2Y(G-j2t)KjhkDpTm)!S6BI;x9tOHAn!oqw@`YH0O&>hnxQOpX>8hnan z`lsQObx{$noSL-5Iad$;Ofg`Wsr4oZnE@{#U~E^Q)zX)}^za{odvE6w4XH$L)+dH} zal?9*AwT|urw~n((qR%VI62mEsu`l~0F#vQq55_vUPNRJ8j@veyXhO0DL#a6urnX_ ze#oZAi4U6^!piZ)06PR>0aEcD^AU!OVK}P_+KME1Ol0y0hW%ELGc7Z8)WSq1PelleHty<@O)?p9s;ZM&ud!Y9Z ze2111;L^K}N(RhUkW@}KkGYP>h%bp^77L7sp+MQa(e;67aNr9-=r?-7xBNB}u{ zk0PXc#f*gC85##d!=Vy8e)vgzsK&-*TMo<5~P4o zP{v0r)O#864v&Rk?yslXPQ-f=lt)=xZ3$&{5aj76R;4ElFFem)@r1Df?ARFe+bKsK z9z03xMP;cXc7g5q$B>XcW&_7;S5hv(k=bHB^L6NpB6tlI?#Ks55c{;|IUtndaWVH}f zpcv*$KqL`?-p9aY0v8E4N-Y-TNvJ!!336*5vLiZhNed?IH&OQdebSJ^J-JDEQgTi`$kq`==E39m zMi50vd|Y5}qd)1{36F_FoeoGf89G~NTpN`PP$I?ZLUP40qK(7RM35sIp&|{Q0h${c zU6^#;-5-=|tWPGZpWST(VsYWSg7>CQz@@<;PcA$YZxG>0WdWFTvD~94xU+@UY&txW z0CkB)ms8;Z6DJd8Y7W^lD?7IO5<(;KFfXyP8v`1}Z3{-{f);a)pE7J$ngYSWF|9U?iZ{3*WqLvCtL|tEM-b@$!9M$A=S*AQsA}g7Nke*H(BsavPh6K>(YPlZx3R+w=*r za$cJ+4-!sA#1KFvJ|c#T{=o6z2O6U@^)Gd;lw3dPxvf^%Yz_j;Nx-o zSS#htM!S;Z!Au@J8t<)Oi@Dfyifnn5%`k0qhqSt#t`w8?={yhK>1Y!r4zoxP038au z>exs#6W9JR$)B;KIj*4GkE2T+LGn&5o?@7?CT4$I2-x=wMi<29)?@^Na|rO2A9lM- zE|XVIu}hWbVGfOLRv&Yd%sMaI0a~JReLcx7@%woxL^avAqkA8hp0Cf&rh&_E-4tb3 zN~mCujfT}1N3V4&|NV$IK7BbgoG&?elpplp1wy=*9^Ny74-KHFab^)QjLW=i*kn*_ z+(h_s8jK}|MR2?6MNKJOwE{Z4at)ZxfJ4G+1{s|Cl(xp5CMy7EDC0mfT^Ab7Ma=RH|RO z?TE-El=~?n^kCa0EPAcwgaZz_D~FBNBfzlEcaIQYKXVQvXDe31RF$W7ei=d{1PIM( zMVKh2M!0>7`U<*t!#_~p{C*JeQN3vJLsjXg^a6%oaA)u06YD>=3 zZnxJh%f2zVKZ1$~Ujh0b7v9oDB%syGhy!_<9TPo>pZ%Z$0$d$~sKgKTl-au8VYfyT z$9!yA1b8C*#)GV_=GOfhV?ysa6+L1Kg{3U&f`**#L#6hF-$^UFe5dy`JcV(aU9t}~ z%S&v}PJWfGw=%$p21kk;M3zUd4(rjB5h+0a$376*Y~ToSz+AWc;|A7o1)9r8lsWiw zNF$P4cM6Pzu}9EVPWGwc{^GF5AjP!wZYE zqxc?CRK#w2=YfoiiVywHKdd1W(kDg`t?5JI?eN=~kA7-(RCFPTnqcKDcmOHz4|1fc zV(XqOFE_?aVid0)EKoJ#f#a=B4u6_eaK+hAh_S1vAa?mCTE@mx^&{#P79ZIFm6+wD*($w5kCI zVAeF-)T0pU@~L$4eiLmli2-AimA%X$VJ?r$Jln86TP+LKk{7pe^)4>F>b%`~GYNpi z)qqop$Qazor~c2Gs0cB0>Pnv7!~21^^NtW9iH`JCn(ebj$fr+tljV?1KvQUi zuEKJ=so#^(vtGCSo_#DRO&0{3)jnHZL_}10?K`XUY;xZwKkL(=y^s<8ye`CCcKp5R z*%PLEMs09~jD)PSr?Mvol1@0Oj3VA_zL`S^*_m|ZXO9TM?ED=A@;(*!d1ygqGsfhc zS9-g*5g*FLR|Y?(XVEc!oe0a_gRRxXs3odi_}wD&C{OOh;e8(@sZ7yC+T+&M+~Zd6 zmHZ`N0J7nBilWzCz~h7x=TpMd&)>dB%w=%eB4+5J zcN9ohJJkAxqSwUhm9A0o-%-Sit}kUJ!NFx8u58~u0k@lZbMMcafEmSW`!;pBR@^9o zRYfn_p{wQ3UKQ>*wi36vC-8%=x@bD%qRvh`<%?pmoFa*0C|P-_u9UBIbzC)oAI`7* zGLw0*AS_#q*c}aqtnO#jPh|!sR2kPI_GwYq< zHR2IJb2~GJxCVXEns&sn8Pd~v?c$dQ?fbqxl1y#Xz^kqmuXIAQCI|)FX}A>)E<#=&9>@`ywCeY z!uE+AxZ5kOxxeTy6pgtROuJQx-fpPxnG&-theL}*lJ^33*;?{!)KV4tgxUV3)Z@_$ z+s(=s@IemEv-is_HGV~aJC2^-9^=7B%nj~3ZypKzaq;m4``k8@TOv#S7>FWI@82`V z$oKQ|2427BLkkUtwkZXx23vMKuEc4&4mfPx{eJAi_Pi6W?6JaOoJ(*Wmd4DGHZsZo zzmch`xSm8w^BZyhP)>gAHUsH2Q(8?{^_|#rF>UdYvXcCL!ckW9DAtKg`Saj!vyYdv zb0|Lac(>0PQutPhY+;NK-pP|YonRb8=2?XQlM9RL6IE}EzxtA3Z9M#q?Q8twe@CP+fiMSwSt`Jn1#Svh>%wkMjzEl zzdVcbY-y^lHuaqD=#9J zY}*+EP#3q>x_N$0W41s^)x|20Ls{!SCU8kd3j|UzSao^lx17j<19{z1)%RtV)yp zg5k|4tvYKgmEu>CRklk8KLbzOd_K1KaUnjsZyR4=+fKSfKct{n{!mv4)x0c(7zEvu zxk}3J6v}(a*alVC`q%fN1xsh6EBov;q6ch6lqP#^9Zg}Nr*Y{!)8v~!#=_}C=#b~n zmaM~Q-mCPa<%(g!ae?90B!unYD!SiNe_x(W+q)%|=n$h;L57u^yb8CxmCLI==2Wuu z5MsDScz4(GU;RN7LoH$S@*l}YS?GMUbTWpTH+@H37^>rPruk@MtE1?QE*hfVE!4Mvb1H<-J2GNV+IOul(%?s) zbR>5E`=xbv)8TJJxuatR%kke`Btv~_52O76(0nL8r|-^NvffiA+AKz7~>FJe36M*~XUwDZuXhduOOUM=x&dMmF)aWVeKFA9v& zQ5kR;#4d2l<2|A^o^^Xl>}2SEM;aof1CcwnP8}=P$M@r^V}~RoF01BUXMH}buB zTjLB9!&2r&-UD<8PX!)x)`FOOe{eK0*F%N3HJKMX`uU$aRzIZGET7EqiLrZnGGndL zItk!A?05X+Bau-|jkjN{>GxAFAn^`w7hO~9o}O9sSk$dJ8Iala^z7H7c;^orMEaBT znol+Hu0MKq9$tTX{>Pbp&cUS*nU}5?Lz^$SR3-Wq9o^Ls-L&X_p!88*;EnwK$xGYJ zDSl}w$`z_AMqZ~sG#123YU+*7MiY14zMa6n(R}%Lo0o}UZ*6X8OMSA5LhSxt#(tZe z%AoiDIi`>YHCY zIUL;7cy~EbUv~OM%gw8~e}iLR6u;6@pSp>LZjSlBHSD^A8rf;0b@|igBzMid%Uzk*C8vwqQyNe0UEZhGvS8l6|8LFfDbtYNqAOQ(kAHeO zv;TR|X%F*^W3qd{wAk0)H8+uMe~DTT!rF)VnXYdRexXAqUH;nA7#w z*Io1vsI}9cz&1oXWmZy$!lJN8DE;R$EP2yjPkyF2+*7UFci{Y)CDOO>q}BcQo%Krz zZD8*Ee$DdofkUq}pFUm4>N@Bf;Co*~{7%6laq&|Kd+7H4GXd83aEDWJ^tIYAtsgqR z`ED}#x60!+)vFgr3iel>IQ?=ebN%L~y~_zsnr~zx9fw?w4!e}iys@)*E8BYc;3lP> z_ePI4u3ve*zoq)eqU@3MYNvhkr8*H~PgQR{kk}vo?wYRgg7n<+(vE-MUUZqA9U#PP(Su-{lx>TX+4= zpQz4%{oDQvzyDwV&FZ9E45w~imR;mid-2Du3O2p{mx$=1o8NzL^S3@v`hJ`H`&P+= z`{>JEFT(FPd?aYyzBbe7Qs~=L7A4SWv=}ICS8KW-)kwT`UHAlS^FD`kzS`~Uae;~R zCDT8fbe|G8E0Y>DyEEVQNfUWldiO1R-K=}B;XL|tK<=k@3v7$}9r9c3YWlYxGFj|& zcU*O|YwCAi>)!?u5tT(G1CiTh!ynS=0fd|*NZdg zEeD`l0`Tv~K!F$Bs|_B+8-h>3@(B{ymT5*Xos+>RLQDg^yx>{Wuv{|SX@k*2DKw>e zhV$ig9Y*hn9`sH=7(y`bL73=nhQ2Y>RlroOAN|wjlTIkioM!tuc@|j32>f4192GSIT=<+c#JF_=ynrgTZ^2F!u#FdLdk{2tn3E+a2Gs}94?#ao zjsp!RKo8wD=n|$nc|t3}XXkLCA`e*A%aR_)ASi{Y*1pz|g`%)Iu2~ z3MW$l%O!AJ1tU{{p)dghy1_`Xnb5fTSo2w{Dv_+l11cF8>R~~MTCz+r13wJSYlFu$ zF~X=`DGBUEW6l8z1iS%Cn1Cl>SqT#y=?uwbF^u61i=sn%1dpw3pIZBGs_+}qUIL!S zo|c~gAECn$8yt&nPQenaG^jAt7@j}D$uHr=pjjGd_Tg-fF9G1ghZh*bWYA?kM0ox% zr(gwYSnp*sFzNSfGB|KImUjVYCDr3n_@k1#1p7w-F`9^=P00 zugITL)ccd8wZ!tBhLFi;{8grChEoAnJGCu=2p$7o3P2?6x;M>0aQDb`A3ZV+h__{4 zXaGnbnV=}39Cr^Q`$3f9^EBJ%j$5bFgP&)_KF`c}o>lxjyY_ib^Yh$heN`!~G0_~Q z!h|yb8n*q|f~jN;Ae6!IecvQc0qnT>Jk3MUaglkr0C1#v&)HM@|Cfi2>mqEJ@@-Rg z8q7EqV1RSuI|3_o7{V|QmBCIoW0_Sr|2o4^+bAGrIz-!1!LtqO()}V@gK5EslIft@ z1NxY0K-g$Gu?_0J^n(3*yT=0*Mrtclpdm!4&qg7F*gP37Ici8{=PyAgZMG}X3$N+! zwoOy>TY~&Y^-x^`r`2#ju`+WjKKQTpEE^oc+A>@=HZAMDX4LhO-wZ z5zpAF$g}{!!V^O8HURvoQm+m)a>Y=NQj`baSOebLy<|`)V8Q&L=mvlf8J^Sz+WRBI zE5c@3cuOl3K%sN?W}l$)I0u$+7y+O{C;@a>N&{Y@a%8II$BG!~U=3PxyovEi>?el} zy|=-Tr;1S&J-(O)*e8M|%OB)ymYnSPR<&h|n&j z;8b~yDisJSaL*Ft>k9x#T$~{QgWIS{H^B#~Y@nEG2~*RqI}6!&0hRsW!Y+W-5-br5 zfc*=S0~E(oik8ja$gfb0zRW(Jj5huF+@!5I0Q>U$85$@>d~0~l=^RyIPzCm-;vkN3 za2ig-gAg0jm3NC0+9VLqtC4QKk#f3)KkIM)Jpd0j1|aGSr6!;)7O0tUyo?BHH#zlr zy0DT`gjUp7B}{uLgPa5}1$fXEdX)wRWWT}MPAGDu6b{U)*%Mgb9jeFLJe+vPhz{U! z+68%fp(CM)v{FCYqoj%fcZ{G*99Z83h2+^nQa9MDyT;o1>{wf&b9Rlb!zr^rW@ z>4}os_7SE70fP~MyeZJMX*P*h#K-8%kQu1@7dy`uZd(Fd@l@=m!ykKLOFY5k8@LTF z#GSX(>h+@a(jswVF;f@pNnu$|*V>BDEIOdJ;Qg(bpyi3uv~Es9H^h^d_(I6Iner*L z&Yi1yNo%9fi3p|uYv7FHOga={tVzq}IHH02cv#+&l4>_ApHPhFF#_u0v0m(SIy@H3 zve0gC{Lvf377cGd(up9&`vA0{ku@_3wF0jGcp-+}f&^N<SGG>mCjdb9^`8X3~996FhGi ze)13K7xaL;@@H2!j1P5vo5Pm9`-(vu4BKutU96=qRh+v&JJxgjhkcvi=czd@oQFwNC8~i{5J5vk~X3%U(*oP8e zQPZ$|3jF&sO-wdBubz{-#Lgtcwv+&@+hEG5efbWYpNPVQ1h4%JcJ?&9rC7SYq@_~X zX<~SM2?HetnQ!OBZKULh*LtSedD(FK5<6=}I)Ve-O<`Lc;3Se^k&NuB-l8li@d;oj zF0p+|7@J%r@H{C8>IKjDg5Mk|&gV*TQI7QaAu{6L-hihiz*48-DR}U^mJ0|%aq3bL z98q|l1`MNe!Y?xM)1ZSTu&>BM%nI}nMLOqF)%u2=jb%F$pqbM!>v5)kH$0kLe=wUf z3;i!kP=qi(y`RT6L^ERp(-SuUx&r$4+j?eUM-knSjBa@GS6IOY8|(?9PQbIp?6fv` zE}domGFopKa_0OY+Bx;=^YG(4a$15J)V7p#I*iW$Yn=^nqHwYpP?9E}!Z=!ESwl(7`c@Qs#Bz`e+pVtzNnr3QW7&);Hp3OW6N66HRA6iLB%m-cZ zW`2K?mR58duV?iE^)nyxsT&#n^4VjvdOXfEwN0bl@(B)6-nSCW zv^yDsPiM6I`t8Slwp1V>2Eu8~&%5S02u5>x?DTdIv6COh)8XQt10#}>BiM;#R+m6T zpI+6RLg>xk<8H{Oi`AmOM?#dJMau%pmX9lFYnGE9ISb6tMGos8V5qy@bk=$KZyhT_ zz>$^X;~F12h_%6zn47hVP>4IqxfVe5c7kB2I|BG*GSu}uIchfql+1c$K{Dnu4}VwB zF{t)7?J+p+zxAg<%`P9u<{C>%j$vKMdQ7Z*I1yB;Ul8NiQY+!Rp;+tP{W4GqpDMEW zT8{?HrjK3sRsacENa+*^P2Se4X{ZSi9MM>{nPk&gMS$9@6`Mbaxi0Ut=By-wnH=~& z0C=?2FQ=ySrx8w=jCuOd>FfNHg(T%^&`zfukCiH?J6j?Cij?%ErC&*roM^npPUUYwBXuh23F9Z2i5=C|+`2ty& zmi*KTD_NTukg`zaCki_Bw}a{aiurB~V1%amIz=WA23UV{5eHb2Js95E?`n6*=SuSV zo_T1mpDhNL>Z4?g-5g>-+B{yA%;q>bHN4Yjh84izzsuK$5#0Ij<7zjITE2yN-L3<4`1#OI5b>vc{SYu(0DGEfXe|k_oDSHw@yuvAv0nnIb~L$qvQM9 z@WYM^CzH-Oo{aH~F_g7CV~NoAI&|(mh~M4+K&}4JI|W0JK9fynGv`WykLHer$WK&T zcoPYKAlDHNpOY1th@|@CkDM=#yYIBAS9C|&opJkaq9$`_PQi7x_vs6#-mza{klx|w zah&n*I1j?#2>n6?8J&)@@7wc3?$8^2`(;Nq0#N39dlsfS@22z6x7KM!sGwPbS6>r* zzSIl6ntt)1D~h_^QEZ7S;6|f0>qEBAG#mxZH)#Kk0vaq^qRjrdLs~Z8XuzoDd6ai@ zD2M)rLK?$J1+PBY2C;n`|zS`V)333e|2mpz_82+D`isup&}bzL=%cNAE-M2P^&Q50lsglF?ub z#JiWf6!SBL}d}8QYF(wizrA{uC!^8V*LhSFne=*2^I5` z!NE}kAnI777KK29#C23=%c&Z14PMMVA$i-YC?7mIAMPke1GpUO*S?1pXibv1h-6{S z;R9N(MHq>r;d=qB^N%^5wRvXN)%!&3%j(pQwW`hEo~WP*OiUWE$}gFSxLOZiqLQlO z3U_2}J8pE`RiK@DMqfu{43JIZ9WA)rFNbdrTC=jP`Y12X9TT`I)ICNeF8L{%RWBxa zFgWQ;@6=<^Oq{ev2pThI(?x!s7@-UD)m~E@@mX>kQY1PVQ_<@TxP_c?L{1MWL2}>gq?OwS}T#_jb?I%z`k=>(m*JOZ~qq=ML zmyT8V))(SFcxigwd0b&l)K%YLcushdq0znX6yy0}W~e(K22vP^t9+B7s5ep5R4V3` z*wc}qt&l=y@oo)+qXJpl;p!3pQqu$EXC3zI!(eLWeuSOLpPJ^7t4=mA|4B;S*2kIDMIn=u; zOvNCKF0~LEwAi2mS}ZDI!4Pd8Ft^|%-9>s@_*qje8wWo!?m9EIga(aw)KIN z1-Q$8%1EYpZ$GwahXU2jfnH||@pI1?;3d?4=QAwxJmNqHC&ww3>r`IwX?GNjB?TY+?J5gs-wAge4Gx@R> z0#uwA9G1dVXr|L`{VUDU`Dkey7;>vA5JNdFj|M7Yg#~!#(;^S&mqln}=8@iLXBdzO zBi*RLDvI=7UdlUb06n%Aq0vpJotsY26NzzN3M$|h(^CuZ- zK{RnslRTE`@)F=@C)y?nh}mZ6fei#}EX}*Qmflcjdg+nSay#UuYl5FakZO!OPhZiP zbmgW7W{EbUPOAK2Kne@r4Qq1uF)T=)_ZSUa631NmU=X;~W2a1v*}6wA$#Aa*$vwI0 zsq*o_e=Jb)6I&5UKEK($sM$H7$(IdrHjRnUUa^+YOtXUmhnqW1OVzepgOUr)M(zI2hbi4RNQwxV~KS}>+RBhIJAZ3wm#)!NC zgn29;2v|J$t0hKqZc}bcYwp!ed2THr<9^qKesywi-qhk|6Ncq7*j_r1`m*)NzfBBS z8$+RO^Y%t{@$*#0wnEcVq#si~Ss1vbtth~_cu!k#XDhNquw$<=r_Ym}lE7iNl~gVr zq#2c(ww0b+vXAqo*S=e*7l5$D)r-azQ^x zEBKFtmyLl2OG(MYTx}%RGwMiXW0`7*xr?Y;6#(SFTnmkh3o|O)GXpMJKqNCxJQ)Q$ z6Xo;c3Ob1pw4l;dfM8sFU*EPUSf~y>Q`F1b{|m#&{7<}d?ZuV<oazuRqp z?XT@RzOL)}eBK{&{6wHD3Elh|(h%TqHapqa4(b}*mP2~vHWPSq?^ebL^qNnB?jE62 zlqeuoaM_${;uz$@Z>sp)UQ1ChWDj#DmYk@uLnj70g%1V{3Ean!L*LtLbLWF*_#QDL zoDmAnSGtEnZXA-ECW}0c`1MV1fN(GaWRav%2>`G6^?y@NwZHEoi8>unq18&iuMnJ< zeZR*!VeX_s)-%6ZA@5a{<{)2Fx5cj?0)=wjh9Mk2m;i!hwV{}Nu#x<>2 z|B;z|R_`VNFtIV(d3kwh?hdDWAUKF`E`}}zfxusrf1pIZ5&ZjRPs<#bV9e-9V0+@Z zKz~YV^%QDN#Ro_#Kk2m*h@x0m6owCkLOn<9vp=27 z*o=bP$&o`&u#qBg+$ccc|H|P*B0%M4Ao$$PjzZAA%V4X`1*{IIm(L6ynlUMOW_Dd^ zcIvKL$a%;D3_U+bsAJV??%afGA3mibE37jdz?j-OfI2>A{!A^G$q`ujg9{*p-$x#2 zeQ|&@!fIYOQ2rpz`EHAenPVWhF=)D^1MrjUjW%xAnSdC9U@tpA_U?F*;{2v?zUp=4 z!%gQ~i$VD0pspKp5Y0>)mJcqjy#;>{I%+LhA1n1QoOB zZqTKv3MV+r1`BmH3bLhGpsom=m=ISxk^ReA{Tih8Ub}L zrnv<}-5m9tLYOw;gC2Gju0R58&sKUL)aa|w#Y=rx2C@c3u78AIvXf5TDL_SZz7nq1 zb5uIdzIWCPf!`eF6C;A$yP>{*L2h0_IaPe!)If$?kaLcruCGAXQApROH>ud!pcyxr z$Tv91&Fvv?YVBNHptA(L#8Ko@u~{!lNl&KZF+moy+8qL>(*teY1{q!u>=&oB!^|%M zyD?96w4qS0i-Fqcnz#Z?W>Z35jnvi)P_lfBg+N`b%8;bL>QoI7qlKJeL-n9^3Z@Uq+_)XE~{^3nDJ6* zIiqCEKukw?Aq*$IGd+j4pxkeXaDvHY05rgHFQadK%Mj?hV9?zw$ekWU;b;%2Rju$r zmtv@Mu|Ccy$R|eRCLNR%jD=Z>|3xfK@iQKA0Zuwxuj2s#l=$RViD$lfm@vdr|MLyk77b}sA<2mPQrk<8? zwi3Bn1(~hmV?iSSSvOU;YGjzI4$kz2

|r$M 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 TT(g5x@*E9v|9+A+BxDT$o{ZtO literal 0 HcmV?d00001 diff --git a/docs/vhs/connect-shop-no-input.tape b/docs/vhs/connect-shop-no-input.tape new file mode 100644 index 00000000..0a1e099a --- /dev/null +++ b/docs/vhs/connect-shop-no-input.tape @@ -0,0 +1,14 @@ +Output docs/vhs/connect-shop-no-input.gif +Require vana + +Set Shell "bash" +Set FontSize 16 +Set Width 960 +Set Height 528 +Set TypingSpeed 100ms +Set CursorBlink false +Set LoopOffset 50% + +Type "vana connect shop --no-input" +Enter +Sleep 2000ms diff --git a/docs/vhs/connect-shop.gif b/docs/vhs/connect-shop.gif new file mode 100644 index 0000000000000000000000000000000000000000..93eb9cc44c4e71f02843d9bad449a0fb2584f88f GIT binary patch literal 126045 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/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�p(5Y{;%CDFs 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 z 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 V3?!sOH$i~ibpI0u|NZZf{y$tAm-PSu literal 0 HcmV?d00001 diff --git a/docs/vhs/connect-shop.tape b/docs/vhs/connect-shop.tape new file mode 100644 index 00000000..8a1305b7 --- /dev/null +++ b/docs/vhs/connect-shop.tape @@ -0,0 +1,14 @@ +Output docs/vhs/connect-shop.gif +Require vana + +Set Shell "bash" +Set FontSize 16 +Set Width 960 +Set Height 462 +Set TypingSpeed 100ms +Set CursorBlink false +Set LoopOffset 50% + +Type "vana connect shop" +Enter +Sleep 2000ms diff --git a/docs/vhs/connect-steam-no-input.gif b/docs/vhs/connect-steam-no-input.gif new file mode 100644 index 0000000000000000000000000000000000000000..438e11d0a79dd0be03c3cc47ab91a6cd004915d5 GIT binary patch literal 56328 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𝔎|;j6vR&QEO=4?5 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 agLGd*d6puniX*|`PW-=x{r|sKv;H4nMSqn5 literal 0 HcmV?d00001 diff --git a/docs/vhs/connect-steam.tape b/docs/vhs/connect-steam.tape new file mode 100644 index 00000000..54d56d0e --- /dev/null +++ b/docs/vhs/connect-steam.tape @@ -0,0 +1,14 @@ +Output docs/vhs/connect-steam.gif +Require vana + +Set Shell "bash" +Set FontSize 16 +Set Width 960 +Set Height 330 +Set TypingSpeed 100ms +Set CursorBlink false +Set LoopOffset 50% + +Type "vana connect steam" +Enter +Sleep 2000ms diff --git a/docs/vhs/connect-success.tape b/docs/vhs/connect-success.tape deleted file mode 100644 index f90079c7..00000000 --- a/docs/vhs/connect-success.tape +++ /dev/null @@ -1,18 +0,0 @@ -Output docs/vhs/connect-success.gif -Require vana - -Set Shell "bash" -Set FontSize 20 -Set Width 960 -Set Height 600 -Set TypingSpeed 130ms -Set CursorBlink false -Set LoopOffset 45% - -Type "vana connect github" -Enter -Sleep 4200ms - -Type "vana data show github" -Enter -Sleep 3800ms diff --git a/docs/vhs/data-help.gif b/docs/vhs/data-help.gif new file mode 100644 index 0000000000000000000000000000000000000000..97cbd90dd217b2cb0abe47d33602b2f421dcea66 GIT binary patch literal 95573 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

!R8rNRCMK@{te-zI$G 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 b8iNLA0oo1dPY?t^0Kg-c$k6}S8zKJ>_^@uA literal 0 HcmV?d00001 diff --git a/docs/vhs/data-help.tape b/docs/vhs/data-help.tape new file mode 100644 index 00000000..5afc2d74 --- /dev/null +++ b/docs/vhs/data-help.tape @@ -0,0 +1,14 @@ +Output docs/vhs/data-help.gif +Require vana + +Set Shell "bash" +Set FontSize 16 +Set Width 960 +Set Height 440 +Set TypingSpeed 100ms +Set CursorBlink false +Set LoopOffset 50% + +Type "vana data" +Enter +Sleep 2000ms diff --git a/docs/vhs/data-inspection.tape b/docs/vhs/data-inspection.tape deleted file mode 100644 index 013cc3c9..00000000 --- a/docs/vhs/data-inspection.tape +++ /dev/null @@ -1,18 +0,0 @@ -Output docs/vhs/data-inspection.gif -Require vana - -Set Shell "bash" -Set FontSize 20 -Set Width 960 -Set Height 600 -Set TypingSpeed 130ms -Set CursorBlink false -Set LoopOffset 40% - -Type "vana data list" -Enter -Sleep 2600ms - -Type "vana data show github" -Enter -Sleep 3800ms diff --git a/docs/vhs/data-list-empty.gif b/docs/vhs/data-list-empty.gif new file mode 100644 index 0000000000000000000000000000000000000000..87e9bb6cb80168a732a21c76881e4cc0ed69de7a GIT binary patch literal 47659 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 Z*WB3ouuQaOIJevV{y5kB{RD>ud3Yu$VJXm` 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 literal 0 HcmV?d00001 diff --git a/docs/vhs/data-show-github-missing.tape b/docs/vhs/data-show-github-missing.tape new file mode 100644 index 00000000..bf7090cc --- /dev/null +++ b/docs/vhs/data-show-github-missing.tape @@ -0,0 +1,14 @@ +Output docs/vhs/data-show-github-missing.gif +Require vana + +Set Shell "bash" +Set FontSize 16 +Set Width 960 +Set Height 300 +Set TypingSpeed 100ms +Set CursorBlink false +Set LoopOffset 50% + +Type "vana data show github" +Enter +Sleep 2000ms diff --git a/docs/vhs/data-show-github.gif b/docs/vhs/data-show-github.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e4b7a5cc9d566a6b666d595f9f77de6a3e66029 GIT binary patch literal 75170 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%0AULVncj!&1{r?{VYI{I#I$i67 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

gtCD0~s&cOJ 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�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 literal 0 HcmV?d00001 diff --git a/docs/vhs/doctor.tape b/docs/vhs/doctor.tape new file mode 100644 index 00000000..de81d3c6 --- /dev/null +++ b/docs/vhs/doctor.tape @@ -0,0 +1,14 @@ +Output docs/vhs/doctor.gif +Require vana + +Set Shell "bash" +Set FontSize 16 +Set Width 960 +Set Height 1254 +Set TypingSpeed 100ms +Set CursorBlink false +Set LoopOffset 50% + +Type "vana doctor" +Enter +Sleep 4320ms diff --git a/docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json b/docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json index d909615a..731fa480 100644 --- a/docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json +++ b/docs/vhs/fixtures/demo-home/.dataconnect/vana-connect-state.json @@ -6,18 +6,21 @@ "lastRunAt": "2026-03-14T13:10:03.677Z", "lastRunOutcome": "connected_local_only", "dataState": "collected_local", - "lastResultPath": "/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/last-result.json" + "lastResultPath": "/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/last-result.json", + "lastLogPath": "/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/logs/run-github-demo.log" }, "shop": { "lastRunAt": "2026-03-14T13:11:10.000Z", "lastRunOutcome": "legacy_auth", - "dataState": "none" + "dataState": "none", + "lastLogPath": "/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/logs/run-shop-demo.log" }, "steam": { "lastRunAt": "2026-03-14T13:12:00.000Z", "lastRunOutcome": "connector_unavailable", "dataState": "none", - "lastError": "No connector is available for steam right now." + "lastError": "No connector is available for steam right now.", + "lastLogPath": "/home/tnunamak/code/vana-connect-cli-pr/docs/vhs/fixtures/demo-home/.dataconnect/logs/fetch-steam-demo.log" }, "spotify": { "lastRunAt": "2026-03-13T21:23:00.000Z", diff --git a/docs/vhs/help.gif b/docs/vhs/help.gif new file mode 100644 index 0000000000000000000000000000000000000000..60b54f95aaf39d5864866f5e28a328866286e3f8 GIT binary patch literal 215068 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 z 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 Q`u`XH|10^wongxV000GrTL1t6 literal 0 HcmV?d00001 diff --git a/docs/vhs/help.tape b/docs/vhs/help.tape new file mode 100644 index 00000000..30f54548 --- /dev/null +++ b/docs/vhs/help.tape @@ -0,0 +1,14 @@ +Output docs/vhs/help.gif +Require vana + +Set Shell "bash" +Set FontSize 16 +Set Width 960 +Set Height 836 +Set TypingSpeed 100ms +Set CursorBlink false +Set LoopOffset 50% + +Type "vana" +Enter +Sleep 2800ms diff --git a/docs/vhs/logs.gif b/docs/vhs/logs.gif new file mode 100644 index 0000000000000000000000000000000000000000..0bf7abe95f79cdcc5bdc374eca7cd507611102be GIT binary patch literal 123476 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 literal 0 HcmV?d00001 diff --git a/docs/vhs/logs.tape b/docs/vhs/logs.tape new file mode 100644 index 00000000..e1c65e68 --- /dev/null +++ b/docs/vhs/logs.tape @@ -0,0 +1,14 @@ +Output docs/vhs/logs.gif +Require vana + +Set Shell "bash" +Set FontSize 16 +Set Width 960 +Set Height 528 +Set TypingSpeed 100ms +Set CursorBlink false +Set LoopOffset 50% + +Type "vana logs" +Enter +Sleep 2000ms diff --git a/docs/vhs/setup.gif b/docs/vhs/setup.gif new file mode 100644 index 0000000000000000000000000000000000000000..79e266fd8a6d7e4fdc710a8db9b025b956967404 GIT binary patch literal 55903 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%0DDse&<5aZ7MiM(1c9?cUzxxz6j=2cYRd)u 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

<2zUHUt`DqeLd@a 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

Xmk~ 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 OnxX%H`; + const endTag = ``; + const pattern = new RegExp( + `${escapeRegex(beginTag)}[\\s\\S]*?${escapeRegex(endTag)}`, ); + + if (!pattern.test(mdContent)) { + process.stderr.write( + `[transcript] WARNING: marker ${command.marker} not found in CLI-TRANSCRIPTS.md\n`, + ); + continue; + } + + mdContent = mdContent.replace(pattern, `${beginTag}\n${block}\n${endTag}`); + process.stdout.write(`[transcript] updated ${command.marker}\n`); } + await fsp.writeFile(transcriptsMd, mdContent, "utf8"); + process.stdout.write( + `[transcript] wrote ${path.relative(repoRoot, transcriptsMd)}\n`, + ); + await fsp.rm(tempRoot, { recursive: true, force: true }); } +function escapeRegex(s) { + return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} + function prepareFixtures(homeRoot) { execFileSync("node", ["./scripts/prepare-vhs-fixtures.mjs"], { cwd: repoRoot, diff --git a/scripts/render-vhs.mjs b/scripts/render-vhs.mjs index f47766e0..69e2d7c6 100644 --- a/scripts/render-vhs.mjs +++ b/scripts/render-vhs.mjs @@ -1,4 +1,5 @@ import fs from "node:fs"; +import fsp from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import { execFileSync } from "node:child_process"; @@ -7,7 +8,6 @@ import { fileURLToPath } from "node:url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const repoRoot = path.resolve(__dirname, ".."); const tapesDir = path.join(repoRoot, "docs", "vhs"); -const fixtureHome = path.join(tapesDir, "fixtures", "demo-home"); const fixturesRoot = path.join(tapesDir, "fixtures"); const linuxSeaBinaryPath = path.join( repoRoot, @@ -17,30 +17,100 @@ const linuxSeaBinaryPath = path.join( "vana", ); const VHS_DOCKER_IMAGE = "ghcr.io/charmbracelet/vhs:latest"; +const DEFAULT_TAPE_TIMEOUT_MS = 180_000; + +/** + * Each tape entry specifies the tape file name and which environment it needs. + * + * Environment types: + * "seeded" — fixture HOME with data, VANA_DEMO_FAST_SUCCESS=1 + * "fresh" — empty HOME (no prior state) + * "seeded-input" — fixture HOME with data, NO VANA_DEMO_FAST_SUCCESS + */ const tapes = [ - "status-and-sources.tape", - "data-inspection.tape", - "connect-success.tape", + { tape: "help.tape", env: "seeded" }, + { tape: "data-help.tape", env: "seeded" }, + { tape: "setup.tape", env: "seeded" }, + { tape: "status.tape", env: "seeded" }, + { tape: "doctor.tape", env: "seeded" }, + { tape: "logs.tape", env: "seeded" }, + { tape: "sources.tape", env: "seeded" }, + { tape: "data-list.tape", env: "seeded" }, + { tape: "data-list-empty.tape", env: "fresh" }, + { tape: "data-show-github.tape", env: "seeded" }, + { tape: "data-show-github-missing.tape", env: "fresh" }, + { tape: "data-path-github.tape", env: "seeded" }, + { tape: "connect-github-no-input.tape", env: "fresh" }, + { + tape: "connect-github-session-reuse-no-input.tape", + env: "seeded-input", + }, + { tape: "connect-shop-no-input.tape", env: "seeded" }, + { tape: "connect-shop.tape", env: "seeded" }, + { tape: "connect-steam.tape", env: "seeded" }, + { tape: "connect-steam-no-input.tape", env: "seeded" }, + // Runs last — mutates fixture state by writing a new result file + { tape: "connect-github-success.tape", env: "seeded", resetFixtures: true }, ]; -const DEFAULT_TAPE_TIMEOUT_MS = 180_000; -function main() { +async function main() { prepareFixtures(); const connectorsDir = resolveDataConnectorsDir(); - const { env, cleanup, tempRoot, binDir } = prepareRenderEnv(connectorsDir); - env.VANA_DEMO_FAST_SUCCESS = "1"; - if (connectorsDir) { - env.VANA_DATA_CONNECTORS_DIR = connectorsDir; - } + const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), "vana-vhs-")); + const binDir = path.join(tempRoot, "bin"); + prepareBinDir(binDir); + + // Create a fresh HOME for "fresh" env tapes + const freshHome = path.join(tempRoot, "fresh-home"); + fs.mkdirSync(freshHome, { recursive: true }); + + const fixtureHome = path.join(fixturesRoot, "demo-home"); + + const basePath = `${binDir}${path.delimiter}${process.env.PATH ?? ""}`; + const baseEnvFields = { + ...(connectorsDir ? { VANA_DATA_CONNECTORS_DIR: connectorsDir } : {}), + }; + + // Build the three environment variants + const envs = { + seeded: { + ...process.env, + HOME: fixtureHome, + PATH: basePath, + VANA_DEMO_FAST_SUCCESS: "1", + ...baseEnvFields, + }, + fresh: { + ...process.env, + HOME: freshHome, + PATH: basePath, + ...baseEnvFields, + }, + "seeded-input": { + ...process.env, + HOME: fixtureHome, + PATH: basePath, + ...baseEnvFields, + }, + }; + // Ensure VANA_DEMO_FAST_SUCCESS is NOT set for seeded-input + delete envs["seeded-input"].VANA_DEMO_FAST_SUCCESS; + const runner = resolveRunner({ tempRoot, binDir, connectorsDir }); + try { - for (const tape of tapes) { - const tapePath = path.join(tapesDir, tape); + for (const entry of tapes) { + if (entry.resetFixtures) { + process.stdout.write(`[vhs] re-preparing fixtures before ${entry.tape}\n`); + prepareFixtures(); + } + const tapePath = path.join(tapesDir, entry.tape); const outputPath = tapePath.replace(/\.tape$/, ".gif"); if (fs.existsSync(outputPath)) { fs.rmSync(outputPath, { force: true }); } - process.stdout.write(`[vhs] rendering ${tape}\n`); + const env = envs[entry.env]; + process.stdout.write(`[vhs] rendering ${entry.tape} (${entry.env})\n`); runTape(runner, tapePath, env); if (!fs.existsSync(outputPath)) { throw new Error( @@ -52,7 +122,7 @@ function main() { ); } } finally { - cleanup(); + fs.rmSync(tempRoot, { recursive: true, force: true }); } } @@ -63,6 +133,26 @@ function prepareFixtures() { }); } +function prepareBinDir(binDir) { + fs.mkdirSync(binDir, { recursive: true }); + const launcherPath = path.join(binDir, "vana"); + const launcherTarget = fs.existsSync(linuxSeaBinaryPath) + ? linuxSeaBinaryPath + : path.join(repoRoot, "dist", "cli", "bin.js"); + const launcherExec = fs.existsSync(linuxSeaBinaryPath) + ? `exec "${launcherTarget}" "$@"` + : `exec node "${launcherTarget}" "$@"`; + fs.writeFileSync( + launcherPath, + `#!/usr/bin/env bash +set -euo pipefail +${launcherExec} +`, + "utf8", + ); + fs.chmodSync(launcherPath, 0o755); +} + function resolveRunner({ tempRoot, binDir, connectorsDir }) { if (commandExists("vhs")) { return { command: "vhs", args: [] }; @@ -77,16 +167,6 @@ function resolveRunner({ tempRoot, binDir, connectorsDir }) { ); } ensureDockerImage(VHS_DOCKER_IMAGE); - - const dockerEnvArgs = [ - "-e", - `HOME=${fixtureHome}`, - "-e", - `PATH=${binDir}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin`, - ...(connectorsDir - ? ["-e", `VANA_DATA_CONNECTORS_DIR=${connectorsDir}`] - : []), - ]; return { command: "docker", args: [ @@ -98,7 +178,6 @@ function resolveRunner({ tempRoot, binDir, connectorsDir }) { `${tempRoot}:${tempRoot}`, "-w", repoRoot, - ...dockerEnvArgs, VHS_DOCKER_IMAGE, ], }; @@ -127,44 +206,6 @@ function runTape(runner, tapePath, env) { } } -function prepareRenderEnv(connectorsDir) { - const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), "vana-vhs-")); - const binDir = path.join(tempRoot, "bin"); - fs.mkdirSync(binDir, { recursive: true }); - const launcherPath = path.join(binDir, "vana"); - const launcherTarget = fs.existsSync(linuxSeaBinaryPath) - ? linuxSeaBinaryPath - : path.join(repoRoot, "dist", "cli", "bin.js"); - const launcherExec = fs.existsSync(linuxSeaBinaryPath) - ? `exec "${launcherTarget}" "$@"` - : `exec node "${launcherTarget}" "$@"`; - fs.writeFileSync( - launcherPath, - `#!/usr/bin/env bash -set -euo pipefail -${launcherExec} -`, - "utf8", - ); - fs.chmodSync(launcherPath, 0o755); - - const env = { - ...process.env, - HOME: fixtureHome, - PATH: `${binDir}${path.delimiter}${process.env.PATH ?? ""}`, - ...(connectorsDir ? { VANA_DATA_CONNECTORS_DIR: connectorsDir } : {}), - }; - - return { - env, - tempRoot, - binDir, - cleanup() { - fs.rmSync(tempRoot, { recursive: true, force: true }); - }, - }; -} - function commandExists(command) { try { execFileSync("bash", ["-lc", `command -v ${command}`], { From 9e64ffec241ba48add1e7f8d598cd21bf4800e06 Mon Sep 17 00:00:00 2001 From: Tim Nunamaker Date: Mon, 16 Mar 2026 02:27:31 -0500 Subject: [PATCH 171/249] docs(cli): polish VHS demos with Charm best practices Apply Charm-standard settings to all 19 VHS tapes: FontSize 22, Width 1200, Catppuccin Mocha theme, WindowBar Colorful, branded purple MarginFill, BorderRadius 10, 50ms typing speed. Heights tailored per demo (300-700px). Fixed timing: 500ms pre-Enter pause, 3s/5s post-output hold based on complexity. Use tags for consistent display sizing. Add CLI-DEMO-GUIDELINES.md documenting the design system. Co-Authored-By: Claude Opus 4.6 --- docs/CLI-DEMO-GUIDELINES.md | 110 ++++++++++++++++++ docs/CLI-REVIEW-SURFACE.md | 38 +++--- docs/vhs/connect-github-no-input.gif | Bin 29192 -> 354589 bytes docs/vhs/connect-github-no-input.tape | 17 ++- .../connect-github-session-reuse-no-input.gif | Bin 153150 -> 376827 bytes ...connect-github-session-reuse-no-input.tape | 17 ++- docs/vhs/connect-github-success.gif | Bin 313401 -> 544329 bytes docs/vhs/connect-github-success.tape | 17 ++- docs/vhs/connect-shop-no-input.gif | Bin 204753 -> 274542 bytes docs/vhs/connect-shop-no-input.tape | 17 ++- docs/vhs/connect-shop.gif | Bin 126045 -> 321757 bytes docs/vhs/connect-shop.tape | 17 ++- docs/vhs/connect-steam-no-input.gif | Bin 56328 -> 142096 bytes docs/vhs/connect-steam-no-input.tape | 17 ++- docs/vhs/connect-steam.gif | Bin 42612 -> 134111 bytes docs/vhs/connect-steam.tape | 17 ++- docs/vhs/data-help.gif | Bin 95573 -> 168985 bytes docs/vhs/data-help.tape | 17 ++- docs/vhs/data-list-empty.gif | Bin 47659 -> 77044 bytes docs/vhs/data-list-empty.tape | 17 ++- docs/vhs/data-list.gif | Bin 127953 -> 197640 bytes docs/vhs/data-list.tape | 17 ++- docs/vhs/data-path-github.gif | Bin 18952 -> 30021 bytes docs/vhs/data-path-github.tape | 15 ++- docs/vhs/data-show-github-missing.gif | Bin 29694 -> 70950 bytes docs/vhs/data-show-github-missing.tape | 17 ++- docs/vhs/data-show-github.gif | Bin 75170 -> 231983 bytes docs/vhs/data-show-github.tape | 17 ++- docs/vhs/doctor.gif | Bin 380690 -> 260616 bytes docs/vhs/doctor.tape | 17 ++- docs/vhs/help.gif | Bin 215068 -> 118316 bytes docs/vhs/help.tape | 17 ++- docs/vhs/logs.gif | Bin 123476 -> 209646 bytes docs/vhs/logs.tape | 17 ++- docs/vhs/setup.gif | Bin 55903 -> 100606 bytes docs/vhs/setup.tape | 17 ++- docs/vhs/sources.gif | Bin 155985 -> 275705 bytes docs/vhs/sources.tape | 17 ++- docs/vhs/status.gif | Bin 247136 -> 270160 bytes docs/vhs/status.tape | 17 ++- 40 files changed, 356 insertions(+), 113 deletions(-) create mode 100644 docs/CLI-DEMO-GUIDELINES.md diff --git a/docs/CLI-DEMO-GUIDELINES.md b/docs/CLI-DEMO-GUIDELINES.md new file mode 100644 index 00000000..1295edb6 --- /dev/null +++ b/docs/CLI-DEMO-GUIDELINES.md @@ -0,0 +1,110 @@ +# CLI Demo Guidelines + +Design guidelines for the VHS terminal demo GIFs in `docs/vhs/`. + +Based on research into what ships in production CLIs (Charm, Vercel, GitHub +CLI, Railway, Starship) and the practices of Charm.sh — the team that built VHS +specifically to solve this problem. + +## Principles + +1. **One concept per GIF.** Each GIF demonstrates a single command or flow. +2. **Script everything.** Never record live. Tape files ensure zero typos, + consistent timing, and reproducibility across versions. +3. **Choreograph the timing.** The rhythm matters more than realism: + - Type command at pleasant speed (50-100ms per keystroke) + - Brief pause before Enter (500ms) so viewer reads the command + - Hold on output long enough to absorb (2-3s short, 5s complex) +4. **Size the terminal to the content.** Tight framing, no wasted space. Cap + height so text stays readable at display width. Let long output scroll + naturally — the GIF loops. +5. **Visual polish.** Window chrome, rounded corners, and a consistent theme + make demos feel like a product, not a screenshot. +6. **Hide the boring parts.** Use VHS `Hide`/`Show` to skip setup or cd + commands. Start the visible recording at the interesting moment. +7. **Keep it short.** Aim for 5-15 seconds per GIF. +8. **Consistent branding.** Same theme, font, margin style across all demos. + Each GIF should feel like part of a family. + +## Standard tape settings + +```tape +Set Shell "bash" +Set FontSize 22 +Set Width 1200 +Set Height 600 +Set TypingSpeed 50ms +Set CursorBlink false +Set Theme "Catppuccin Mocha" +Set WindowBar Colorful +Set Padding 20 +Set Margin 20 +Set MarginFill "#7983FF" +Set BorderRadius 10 +Set LoopOffset 50% +``` + +Adjust `Height` per demo to fit the expected output without excess whitespace. +Maximum recommended height: **700px**. If output exceeds that, let it scroll — +the GIF loops and the viewer catches it on replay. + +## Timing recipe + +```tape +Hide +# Any setup commands (cd, env, etc.) +Show + +Type "vana status" +Sleep 500ms +Enter +Sleep 3s +``` + +| Moment | Duration | +| --------------------------- | -------- | +| After typing, before Enter | 500ms | +| Short output (< 15 lines) | 2-3s | +| Complex output (15+ lines) | 4-5s | +| Between commands (if multi) | 1-2s | + +Do **not** scale sleep proportionally to line count. Execution time and reading +time are different things. + +## Display in markdown + +Use `` tags with explicit width for consistent sizing: + +```html +vana status +``` + +Raw `![](...)` markdown gives the browser full control over sizing, which makes +tall GIFs render with tiny text. + +## Regeneration + +```bash +pnpm demo:vhs +``` + +The render script (`scripts/render-vhs.mjs`) handles fixture preparation, +environment variants, and ordering. + +## Tool chain + +- **VHS** (Charm) — scripted terminal recordings → GIF +- **Fixture system** — deterministic demo data in `docs/vhs/fixtures/` +- **Three environments**: seeded (has data), fresh (clean machine), + seeded-input (has data but no fast-success shortcut) + +## Sources + +- [Charm "This is How We Do It"](https://charm.land/blog/100k/) — why they + built VHS and their demo philosophy +- [VHS README](https://github.com/charmbracelet/vhs) — canonical settings + reference +- [Gum examples](https://github.com/charmbracelet/gum) — reference tape files + from Charm's own CLI tools +- [agg (asciinema GIF generator)](https://github.com/asciinema/agg) — + alternative renderer defaults and theme guidance diff --git a/docs/CLI-REVIEW-SURFACE.md b/docs/CLI-REVIEW-SURFACE.md index 7caa50b6..c1d4c77c 100644 --- a/docs/CLI-REVIEW-SURFACE.md +++ b/docs/CLI-REVIEW-SURFACE.md @@ -101,87 +101,87 @@ Animated recordings of every CLI surface. Regenerate with `pnpm demo:vhs`. #### `vana --help` -![help](vhs/help.gif) +vana --help #### `vana data --help` -![data-help](vhs/data-help.gif) +data-help #### `vana setup` -![setup](vhs/setup.gif) +setup ### State and diagnostics #### `vana status` -![status](vhs/status.gif) +status #### `vana doctor` -![doctor](vhs/doctor.gif) +doctor #### `vana logs` -![logs](vhs/logs.gif) +logs ### Discovery #### `vana sources` -![sources](vhs/sources.gif) +sources ### Post-success data surfaces #### `vana data list` -![data-list](vhs/data-list.gif) +data-list #### `vana data list` (clean machine) -![data-list-empty](vhs/data-list-empty.gif) +data-list-empty #### `vana data show github` -![data-show-github](vhs/data-show-github.gif) +data-show-github #### `vana data show github` (missing) -![data-show-github-missing](vhs/data-show-github-missing.gif) +data-show-github-missing #### `vana data path github` -![data-path-github](vhs/data-path-github.gif) +data-path-github ### Connect flows #### Successful interactive path -![connect-github-success](vhs/connect-github-success.gif) +connect-github-success #### `--no-input` path (no session) -![connect-github-no-input](vhs/connect-github-no-input.gif) +connect-github-no-input #### `--no-input` path (session reuse attempt) -![connect-github-session-reuse-no-input](vhs/connect-github-session-reuse-no-input.gif) +connect-github-session-reuse-no-input #### Legacy/manual interactive path (Shop) -![connect-shop](vhs/connect-shop.gif) +connect-shop #### Legacy/manual `--no-input` path (Shop) -![connect-shop-no-input](vhs/connect-shop-no-input.gif) +connect-shop-no-input #### Unavailable connector (Steam) -![connect-steam](vhs/connect-steam.gif) +connect-steam #### Unavailable connector `--no-input` (Steam) -![connect-steam-no-input](vhs/connect-steam-no-input.gif) +connect-steam-no-input ## Acceptance Commands diff --git a/docs/vhs/connect-github-no-input.gif b/docs/vhs/connect-github-no-input.gif index d757f4957aba0aa1b9a872bbc5cab0f96d76ec2b..54d5ee6084ec4722ff1e48fa3afe203b27717602 100644 GIT binary patch literal 354589 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 qPouauR{1H!s%WtuZk<>35DB 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

Lm(p4pC@*2`;o8`dlyp##o8r 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≠^gFJo2l}#AdWV7ZDJ?;oixwqd}`6;=KLzC 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

PIG?>ggV-%n8>`hIlxbyP;(_S0P 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

oJ=9K{*`R#QXDr{fn;U?pCRUpA( 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 AApigX literal 29192 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�He7iQdGhhv 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 diff --git a/docs/vhs/connect-github-no-input.tape b/docs/vhs/connect-github-no-input.tape index 304336a8..5904091d 100644 --- a/docs/vhs/connect-github-no-input.tape +++ b/docs/vhs/connect-github-no-input.tape @@ -2,13 +2,20 @@ Output docs/vhs/connect-github-no-input.gif Require vana Set Shell "bash" -Set FontSize 16 -Set Width 960 -Set Height 528 -Set TypingSpeed 100ms +Set FontSize 22 +Set Width 1200 +Set TypingSpeed 50ms Set CursorBlink false +Set Theme "Catppuccin Mocha" +Set WindowBar Colorful +Set Padding 20 +Set Margin 20 +Set MarginFill "#7983FF" +Set BorderRadius 10 Set LoopOffset 50% +Set Height 700 Type "vana connect github --no-input" +Sleep 500ms Enter -Sleep 2000ms +Sleep 5000ms diff --git a/docs/vhs/connect-github-session-reuse-no-input.gif b/docs/vhs/connect-github-session-reuse-no-input.gif index 4e1b33faf4ebc5cc7dc60004275a161f7758b600..6042ca676b004d5829e99b7ea506531ab21518dc 100644 GIT binary patch literal 376827 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 z zmWjy7!+K}58BaxlHR#T3O&qf3fzh{zGE$ZVtJkR_m+QcbtBW!EzE|-kmc{+rMdd*>K&#c1m~-U2@YiZK5P+6;#4$N}qVu%Kvk4-PXI zkkc%-HIUj6ypShb|FPzgr9l!pS1jA$X<5|SvJBJHh9r1wi{}nQm|0IpIzNi>q}mtC z^A=LJ@E%&!11aA;)AMB=MeK59k10b%-l{A5cJQA%eFB)fUNWLR3lJLS)?lkGyK;}AiQ5Wwst9pfv_;*Qy_SRFfs?@HITdCEy#(vLb7|Xz z>AB7u?%U5Cm|@1Ue^-FCSmz~iTSG0MkIYF-nG<3wEjnVWz3J=j66~#m@gw>B4QJui zPP)m-EhXThU%k)DKfy+kn;V0O$X4fj_uAnGc)}s627lS1fbz2q=hn z;1xC#y#^U9xc&QJU&WOllRL9`dskN)@Ba8B&3W6msHoK+j+nRYiI{$LTjrQ})Ml|o zxW~7lzZ}zXZAmZi_RH-obQ`w&|4c*uZEP>cPWZ%4HdO)_o0%Vn= zepilQJV#!lzihhl^zHU92RQWN*b%waY#rvF_SCySKVEtE>sQ`&I|RM03k|xr!$f-< z>XuHm)ij~RID(=pTUz)8UspVD^Z}7pd}V^G_wNgF|FGxXR?KP`Ww0EeOfev7wFYI9 zDTuDV*ERKU7eemq*kMx#Eb!F_Xo}oFHRSok*=>K1-rn?SoypagG1f~9w%2?(zVzy= z`0IfW&b9w{D);K^)%w5@wfpBYHCJcT7X&@Nx8W*^u6(m$<2JBmV34A`{L(}WgW7AR z*?m{g zh9=i#@7=upP62qj0Ko8nMa%y2CB!|O+IjEa_X%5ne&lMlJl=HW9Y*`}6HEX3q9p|G zPe*hskG7C%Q_Qc<7#K{?jFJ;-K3K0p03iGmiI3p-Ny0p0Jj>SXaYVcLW9MY>zK}Rd zpy6~q$#KwVo^;ll*C%ohA0Ksh&>E=;q2sDLbQ{DwkMba^`8w!la=eL7?!d7Mqk|rV zBEckT@W%6Q0xz!;ceu&WTeZD5faRxdZo)ezy?;CCKZO5yjU6bb+=6i%2dJoC?2t&MEfGPeW%Lj^@#R#maQ(A&t=!{ zN`ye2e4av%@3ZPkOqowFdM*t&IWMyHN&T3HPJ%)Fiu z^(8cBotp2j`1vR3pC95stS1{G;|D__eb0PTc2rPjpHzjxH&3qi zrGT5w=x0|iN|(>;k^>1&FigagxiyDdKpvpWMv8`vN`Ixh-kjRB)rnvaZGQ{~=}=e< z1Q3w_y}UVoYK#(Lwk{4qX-X69U+idglry2yl4A#J54?AVv$pCp)?!Xng*$~vp|NGh zt6bJ`omY~ldP?JgnyDVY`N%pFKpch$`3KjLV0^PYh~NF!P38J|aM_sS`C~VT1A5GWrub;p;*sR zeaER;MZOr-U%2sNPoTy&^P9{GtytTzxqrjHh1IK9WZ!nYx1_lBwj_ZfK`rl1pV*pPqtK@wLD95K9RnZEPqKR zv(~~$(b>!z(XA8i)0qAf`|Z<%)70e26W}P~*;C{f9P!W|M%4pBb!w7C(n`pzS$z<5 z-uj=L%56E0!5kE!3iEGl3}zU1P>85NKj78PPmndo0hHSAOI0#{xybe_!W%fiOz7q- zMD~*irgJ$i12C`cPV|xut`M>7fNplTv%ukHE$SgRIV=M~kwH6!oL?;BOhU^74-(3= z>GsPNwIVt>-Vjq~grYpdMf7OkMF2vpHMH6L6T?vaVZieM%!j)%8px{Zjr|Yk@xG&k zVEH^r5k85(Z&haM8i-Pkdbm?BcQ7=wZXI%}MY$HEgUBHdMe-1OtL$u+yqZevC`Ct$ zoLj9!G|l|D><=8c_@v>l)jfCdXaOz$lktkdlooHddjIoD6a0ov_iYP$H7*_a&tF- zbGLaN@cu|7E)6k<-Xz4hv6JF4h~Xis*J$z+e9JVESxqeE{41$l@CYQ6Ki2 z_q0uK2g!Bj8xv9AcZwW8!JgM#Nq@`p{m~Ei$@%^!S}8=Z&gS(a=VIz`vqI+|2qsPF zl)u5OP2ap-41V7y;-8n9q#N!-6>hiO-c^WA_#M|D#)G>JtIng#2vx^{T>z~^*k6fq zhyZcd_mLDLCl2u6<@Yz~HE0E5uG?r|1@n=jW@G1)krif&4u>j`lD{7vA>-F}yETUd zenLGwD`Jxc>GuJ4{TYXR6+x*Sw{4&BYJYw$9@isu22>cake~n7%rzri41U3hC>UOd zKTPZb&3{ATyF|goDBrEOaKpe|TYy%c?PM>a_?s|4LcAYs4iT~>F=p`*xoHCAwX55* z4RHN(mry0-W8RTINw?1qjC|h6`3jGk-6Pb3-?w1@S(3dNUQ(XZW`vS%ArTg zy-b9-!c<)UN)8XAhsrIdWxsodQu{mj5h&@ZKClh3%sQt>3D!m+0l6FP(`533TPO(h zc~XHHh77+kPT%NII!%?W%Il2hoKfpXWx`*`n#ZM^lDJfd@@7 zwpWnl3kWwvB${f_f#;!rS3_jU)U%fh={>SA6BS0<|8I%hA>-kC8DRc!_~~pDPf32d zcWy`oLKdil3t#MvhV8qG{Oe!f{UH-=QP3x0K(l&=h33rNhlLS`{Gz))Nj|U&J2~Kf zK{US&#cCU({fRc=BcxeTVhdW3xG11iP1&q3;UyJaEyD(#H!P=3N&PanG)77d5Lj;a zGX}6uQU_i}`|5;*gj--AI6tEZz$8-O#ipChDAFc|uKS<9qTt$Y^AsXlhj=3BIZESa zrl5a)QGiCRY<3B;2iQsIKX%6i)~YY)L>6b?M(+C$+nhEV-tRkE#3*MiA3_TX-vy+j z=J~6g6+2Q8QS|8J9ZcA7Qq7O3@!C=3P!9{=R69+oJ^3<8Z&7ePda-v8u~y^{)C6^) z1uPYowHWLY1=OMcmz5RJruO0q2dW{yG9;h_JukF~U)@hqqGNwqT@4-gsfY=v?ItT< z90*moX+vC^Rr3Qo{RDcIC>kcF$@AM%y`#Ysdy2u@koj@)K<65RmO}XF4KyG0Ebg?; z=}wDS=IlDUH@WXdK2y=;c*{>^bE>!Q>bt6!WdTo!` z$Nd}NQy-9E6ja`w$TFpkbO&@4t-hl6pZR($8U)s;?Rm zwWT?=qWPg}z5**aEQ-$Gzw~d^tRQLE)T!US0qY3$+9yxu3d1Kj5^#u(&sO$WP;e3zL{8cZ% z4(_45ma99?75R6_(l?dl)Qje~q71Qq)4Ff;h*Dez9$52d0H^!)Ja}R3KYy#k!dMWW z-)Za0!GLHQi%A#-JT%pY3+_9Dw$N(rxNu4enl28<5M;4N!myueY(IQpt>Zer9$>>a zm-yEE0;sorSbADWaIolFB4j+=PmU{|-yLGbJCR`qo&S3WMTd0=g;0>HyFmpQg3zuo zL;BpmN6riG?ukKfdP%iQ%AW&>?C2rE&}W(V@4*>rA91i#6@|qI2y~$-EOhBoduk_5 zHGyH!_}N~$y-wwz>vm>c*bgIg9gOOEMo@<$srSM(|ktHSPLIzPll?;)FpGM!Dxb) z9%>QW_+xP2hT3XpiQ&2nQb(>VMUgoE5@;wW+m6X?4foI!&^vIUS9e{It4h%aCN4dR z-+9+D`+fehI$n)?IC@BXW>-nsUFR)t$)0^mff}>u!^N<_<4H?hBw1Z@mg#BElSP9w zVSgukiK<+}V=o2mbG&VC=ZIUYl{S&;Vht{$)}Ul;;1=(x#!&jCMOVgtpyKi8_P7$& zAA6j7TZN*N`HxSAS>A9q^Y9?Kl+&^AlAOc#<*Pn!QKO>Kk3Vo<4?ncJ;xE@b6O7$f zpAUy)4ix#hj9(|)Qp*~?P`Ka>j(E_xr#zmk~%o+B-c{r|C(QU+M zbwCY9p$+|BYiAC$l;8y?5qXOCgrjA8%Q=UA_Dp>rP;7avwXrt8?g0H5;gzJ+DuKIh zl9~4aRCoTx>6Fb+v5*y2Cv1?VfG;}RjAVZG;|?Z5z2Z<#$vhae} zwV0S8MN{fEnM3oQgw9qJ1(xA0vno$8%pI8uXvb0vCv4B6lCp&dO+(9R4>yL(Qfs9{ zdz_fGXbT^^ITOTb*2b9eW@d^bm|TSI^Y67<&0o@7yLp7z<4+-JL%Dh9lXunpvw9D& zg)Bn;faZIhNav=<^i{}gZ|69fg<p1}^oLl%W4yX3#r|k3) z`MZOH+XaRxNS0?SRctCRqZM?Q;SR<62drTQxu1o0IJZiRta3MKUp7D8`aieM@tu}! z-Akqh(@lhq>>I3*O_t23OJK7+rHA=u zGcV^XnuwgXNU(5Tb0}YG0}B}WkrtgfKQU;`+PVHnMSh3y>ruilu$a3!rcZg?C|x>T zzkN+0V!SrxQYbwvHreU0Kkqhz3ZE=oal(1N$xc>R*ED$ zOueN%8Hp>KW@3!{^v#&?96XDLlftM736@lS5Eo3RbOUnRJRNiT4-Pe>Apa+%oLbTVqv6)VE(bK(_Qotb}2dXuO|TplmV$eGoH^ ztkPq+eG#rT{Cv3>MzJJbcRGdLTuIp{N)c8Z0FyE$pwY0_BU_UUZqQP;0wRp#9{o|k zew@0p4grW#h-|$dz;+6`w*?4(vSbgj9`WrIM&h`DQGsp=fM>zxw>>MJvTh|RY7pm1 zRb@gk;6luQhITY?)s<@UDIWk2Gj=b@htSpn*iXx#^7s}@U6)qdIemW*C}*~7`++n zI4*nMcZ~I3(#z-b0F(iK<3o?b_&lmgC9HFFK~_1@>863*MdscTXyPkO&6+jPPF5kL zc=*-|7bnzQoeX8~0)VX`_mL8jur!W&f>hL!OJJaW;tcwH1&^bn7o$i9LUOU1dz>%~ zMrvvo)0N8E&C|~-S;ZUk?Fg7Y>q%Qw5ibsEWHC`e8lk+kY-fpt&I6MO>c84ZtV^yt zu*wfZY(v>Q11|M%)Z9kZDcQOX43;@0zaBSU3i^iz&Lk7l@5lZj?mOlSLqNbz9-dPN z5XQWAHgaKLUuOa>CJ=~;9x!g43$R9VDjn^6=4QQV zHqDTEk2VngFoQ5}f{6xU9JsL)t#Wb(o(`QMqUi>taaF0GqhP<0y@7Sf7sU~fvb-KO znOEh!$#`LDep(aOrv+k;Fu9jrj8?&7G-lGL@1qu*{M@8Cr!IuF`UFIO)KFwY zapJzO>OJ&g$uiTrG!&_?C+OgN(w@W01q0sl;Qr)d`YJ6-6pzEs7lRIU?pW&AUMxXJ z*pie=_<0M$MkVjgoB_b})ELFDEz|LkxgC-2A=vQC`mIUK+6-8%x!x>PtC^H z=8s39iLhY<1LCk8gF{LTD-{C{^up7Z<`cRp8bPI$r5Y4w|HfoVd~u)BDb|YJ+>wTg zsBa5Fr1jOZD;N`F44Qk)AN-Z@^TS_h{={crai<>tSxsO;;2bSTHv|}W#*G*INEQaW z?@3*^G{`SJZ@ZWMv&}gA7VJR4jbR2vEJUC6f{jOQEP^HOjxcyJCGp@Iu`6&ba%rz z#*54hZ5pCVz*iekTlu!ZJm#d(tfbN%0_d9-o{s4Tw@WOwAgN{cVhM#T4qr1X+*cR# zRsJrE@EkWJTRWd%x4Ck<5t*(tS{@EQV!C4Hu7Ar^zAdR*)Y4)&14sLmt9=XtW+i(p z*(4mIzOHn4fwA$kL}Okp2{w*x#xb?8$6Pp@c_=R!vl`91EJa5srRT#knNHlBG85xu z<0u=;85_)U%D(kfgfxUADS3!%sN^^3zLUJ0NrBq6<01J_>VNK08!4b1Ry z)^92!xzies7PDg9YK0R)UoHLLk%iozag^({HKZik|Q>5h7KS@i5$>oYGIcdP85U(bzalG*h3ie?peSjn-2vGpLA337kh z?Ve3;8mL$uZj*OyCpf|Twh1^j)$-!}yB-LpO$gZ;XQwt)T4e&4eR<$lgmW{QIi;mj zg>?N_9&1KrhC{xlcm#YGnCiw&R|{&n5?q}yZHmYE8cXNfc)0W)U=qnL$k(h`*_0Mv zp|#MA(>lCRDLjj%!iZ31#Hi4879f|vnEns;_6X*~z!9+somFiHcz}r5#uf6~RC*w# z8+-s*T@&I9OB!?y#%2sdkcP%dd6!jbI%Z?RlzCjZ$C*?aIoe0n%5vOQWTh5o)*-l* zhVthT5Ic*OWDCBCQ;Q5{?zGF`Il96qNihwAX#XoU&j2>L!a!6q7uaEXsTh5;+A0>L zN|v^#MS*o%%ZuQ`G!bE=#8{$YpG>ysQ2A;kzJ4ffCSvzx=Q91QkU93jo&^wEgw>-^ z5KU$>A$0iSVp=c9cxlnN;aSo6aYYOXcmsNh!0*Q`+->L>na3N6<&281U2<`@!F*FQ zZ85Y;t^yo+Tc+NFkKNFK%Bo$4-BJt6fqC@}j6T@f36A)(6CF5C_?zLduY+heOzuy% z+^JkJX=gE#Y}^uUbS_ym;Yl7;alZfU^s1URVB_)Stj9QyjmibuJ`HFZn2#kSIf72l z6_emhcUQGi!nr70@5945Hq47jrgZTLBA%Pw1SY@zhG62x49J4Cwj2qeCz*qBLnlaB zqvOWW6R*2$xa8i@HMY0Lgk!HLR*f=--mptbdXKq{cHkQPZ%PwbHLoezzuCr_X$zJk zulNuu4rY(a7z!WM=Wt3(>DGh@u<>T_3@@?GvE)ZI_nK;B3JO!JwYm**tav7)$*fpt zb^jpY8feu~W##>b$-m(KD`Yt7&74;VyMNqjOvsT6N#(QFLhalb6)G5hSgw3(4AC_W z7ILM6Bf&SStSpjkce_2xz2FDawzb7@Q#_2gIc^!DwHDNH6$%Q#Mik1``8vtEvQ! z5@v^u)dyS4a2q^%(D#{&+?xBpE$96H`e-d*x@EP@-}*R7BjnWPu69(iX2xBN?k^B* z3|x|e%5Rt#p0~CiBz;!{N*=36wRk|tx-DVNUGB&NNMk9SX2UI`wxVV&dgX0pA7R6X z*jgFQA`(nBPGS7lmA4Hbn<2b^(2*X$2MOpl$AECY>yh%MT+l~@C zY^5(W%lK#aGB2Y?qR9E0)WW%9OWxn8%;W`uB?~El*+g<;t!Y3T;CaN`VTG!=_aUcW zNR1Gz(g{s5$fjS<8T(=vB`edSREwt9P)1djF~A?PY)ZXNTA-P^l9%>dIl5esx3`K| zpdxyrz*(ME(!~WVEv|Chif<#H3)8&pXbm4*`@~CZmMd?55qtjQpZ&#h#KxmhWh{Yb z=3mJDk52OKkF!S5Q8HV{FBXstM`kb*T@|L?@dYwRtJvA?d$H;9jDtHsW^3QpulB~h z6s?LAYh&+aLrGTxTJv0=wb-P^t~XS=w_jK#sTPX9EtwE|G}+h~`KNoFr!Q?jVcf8O z-WPi_W#;01%XXge(kY7@4O<`{DR7@8v7Oy_#$Qdf;xEekts&FPd@2-4d5ywQAxtX} z+%4pGs0e0~f-4wI;UZ21Kp7in$3V&EFjZq?X%YJ{_EGwaWQ!l^r;XRGHBGS_vS}fi zkp5O#g^#=a#V3(BuKRLw-45h>jBVx}(C=x5b9!l$J96PXxJ&0oygW0f_rbGG$+v&0 z8HXF3pL}+{qg>Fki9I>a=op%q5t@xWSnw*$wY!=!lx&H4=uUe0g1^P>$)>RD`>{hA z?n@>Bd+ZPV%S|JX$p}7~|aQvp@HVczaEsRSZbc1fJ60|4xB`+9PG$THsVm z_581Z&$)5VD6qywf=vLqu?-g9S|9_ageS8FMrJWz-YOpEzdnP_zh|6Ja4@XJR&a3V zJ#vem`Ik&o`Q?s(`~v6h4s-&{LvK<)tT^>tLW_;Dfq0;!lE4Se$5JMYmDHclBU3z3 zF%WyhTxSdqFpji(d2aELtm#uOY+3f#n9Qv3+nnu_&{~(X%i*(S$yTVPSmh#-^RURd z7*pkLQ3r#YU!i{ZPz=C+!R1Y_QkL~o#cM?K_nl&Dv~B+dQb&+$E`XT={n`f@$rmR2 z{+ozHuQ)&cM{G)Dr48f5iql_|xcM`HzltkOzO8qGFoNVMF9`c-mYI;YT8mh9*ev^X z;Yb4zd`-qZuOf`}EzrirOea=6O0c2xsQp6A&&;Q=B;5hr{Y}E%3AQE=>^3pA>p9r= zNPF?&CZULMn zW&;mwwk^|8bJ(Nfj1&bp*1cDllXKPvhk;6sl}k@7%Wdy}xut`;-Y_M$7RU z7;*&uY-S_DI<7^g`ECk5mk8^uZjqW5k9@`h#kg-KxhfZ6u@M=7_ z4?*EVfYml!i3~fxi@!e^JM%GqLTIiG4tOi)dNu6n-{Utj?mg|W8+Go)r88bl4T(%1 zGc?s3_vIvQ|F$&)HD=}x?l2~bC^ScmdW4q6hObWO(cZ&9wEHcEaCz!)?T5aD-#zG9 zVCJvYrH)8&S2EW^_S{@T;L9f(F?5e)fQfnv9yZB5juJbA2@w?I123G@&h7q^vjRE_ zU7-qWw(;%g*J&PE2 z>79Dnz-R@*g6^)fjX6XIN%T*lQV3KOn|cW#38b>ipXHt}+$j!`E%~$}r&S56_UAp3 z3n0ZZloWl|9|Ri~|uG$j5g^L7iAdZ4%-F}XuE zN_&9~dO}VHHcI+xVwk2-Xi?D1HnAoA+qx>4{!UqR6VtU=f(w3@Bpq5{8jL`s7tJQc zC{reuf%fxJSMsnr--!i`enEfGal@t!zptx_LbP+NiVkkfHx$5`hG6O(SAizM@k4QH zcqxg{KnW_VZJvlUv=;7q1{D{;wzHBN%wBddwBPO31q{mgT}N)n#?+hMJBf?8hn59( zX>@xReN99b2H#={CY$kzFdU%EHx**c*U>@Z0HQX?keg4!SeL4*i3RLp?G9Thzhz>l zX|w1qA1nB*ve0FyMaAb2N>PL@Tc59^Fl;5npds=ZJ%r`d_wH(=$Ezv>miSBQggHr7 znHXwtRi(iW^Br!piT)UKh(<3HV+<(L7-vi{U0CBp9Ip%t{Io^rU3Em0hBa}uqw$*N ztzn|ghZ%Q0v9opB1yFNMC1c`pP&dgosa8g`*C~#IyR~RCsJHS_5ti{&2zb@ST7WfC zXc7i8_yUphC&fq1WyY|?_Arx)rdiv@(N(mm4m7ryFe9y)ccPegawn$^K%q~FG6sVE ziht}z3G-72OmPuBVRpf)qDsr~If&5igR-UsV}DR#8dn^pMQp66sDfj$eP z?CYUKTzE%rC8f(o5bBR95bJ$m^F+pO-?)>@)c&(@&RMkc=^sL{Uh{GBA-csGO5is7 zXBG2(eT}G?Tm@5t_Z3SAF)jve!gkDv{I28fwb3#M3ZuhrEkOqL2HnkhtM1* zT&jpW=8FqrqvpIA8LA|or{AN9D*IfPtI#HA8~2`){y}Hd!|40Z7nABlvZGebp8Md1 z-W#+v#3VWQNmcaacm%vK-iv+<u%v2f!&)h4LBbq7-}XVE)tC6YKn_yAHeXT zNU7iY@`cVK+*Y_FzygK#F>FW-`WH`yxQJJu!X4zv4D%AFb;xt8CY_K{$EzqP@7AMB?wK~s zB)7&mVlcgMsdtI8e{q+c)%mi%B-b6z`xVMs@6OQRgX6N;lRVoP`x3W>2a5JSa%R|{ z>!IXVp{;w8neq9DD^uu{ZCxSQp&#tIWouk-eto^{rXlmWNmFF25E%~*!C;qxijdab zB-WG!Lqf2P36WQt+#qKH*i?-jn;fy|-|%FG!C6(6_9>inuvWIYU5mS)U&@P64g@&% zp!X?ff)`zKp@?C&`&_w~@C@Hh@mmV>TwT;37nWM|L&jF#GXK)8bbL>@)tFLFJ3=ZJ z7t3*zk$@$1X2*>O0C}*Z@-N;8*fcbit4ok!Y$jm48+N8X`nqNZ&HGBJ&z(r|qSE2k z^b3raPFz(+xBYrmWkJ0yM!NJVA)GQ^4|kGxGMa_8_b-Ao`p{<#GNtnvfr+lwk`jYEzly?C@ zPnsgr1Qq`SfQi93F#jc~u*N8K&MW0`X2+XA58IF{+At6QAGgub9hCgq6g=Y;E@%S8 ztt+_i`92|~#Vl1u@<+!;%uS(`0uL8OpT!-645I8#i$gPr6)&adf=y$1ezThMsl_j_ zTUCtpm*8BuH*lXWW6=dN11=BZJra_)B-uTh?&xW5en=*+S68<93U_#mWlKlw=2e#5 zZf{PuT}w}8JGCxG#i*!xg{c1o(=9aRW4f2 z144=S-cxd2?JVEsJBp(8JygZ2e;lY{&~*f)#E56UXLBrlfk{{W%{dNYT zHi9=cCKXLI5`=co9((2%qAlMlBd9K?L!#ikk1v&U`qaI%sf{6)_Y1LfG{2vCnDbfjA}ex{1DNMa_g>c!W^`jiI)6PyTVNcEYgru^C(vy zZaXA!<{(DexztA;lmxs{&wn(7ZsavUn-EZPL=10wu3iATYGPkQC`Z|!SUUc>bny_K zI;|m(i2eS4@8kVnpos}hj>Ise=sP=PuNJzU6rlcF#%4pPyS$B$1(b0eby|mO&!bz4 zfkv46R!PZSOK{i&L`oLE6jR2ksDoN^+RZI`X>!>|W{8OViASX6C_<6VE_swp1$CbQ zoa+e+m6XK&lo>6hlR;|DUG=ve?TNVHH&3t)SUm+(a!}SEn?Q6&&@-`~vU{z|2!K1* z2Zo9>XR0W_9+q4%D1fRq&3U-#7?6u^Fp$yYh?4T2PQ6GccR|GX|7gZK@+?9f6p#m` zXvTB!lqPop-pCW#;`AQ>Nk`so!f<7g5eYdxXNw9U&4svq#|!(X3#-llocjrVpp$xE zN}1A8#}JIUsq0wE;zV=m1VVmhIF0Of@m4PBN}w33!pi|yvXpcSAgh6}K^Q(Q!I;Ma z`y{lBP>Anl>YsbumrAKg=9DQZa~9`@u#N)Q3F_v=ojlxp~L zd%>gjRGB0XdwBE61NndIwvfjqdzXK+Fi^3Kq>nFhD znzCB}?t+|dh5+@ZlqWih;bp_5=d#R6FJYqjITlBNKB3t))j^#Pm<2(^E+yqquhBBP zXvELOOozuzfE5_Vrbw_5AwQv02M|10pfIJQy6HolPTHBir{t0>_D1zQSAs>n~o)EPQi8wYwKq;Uc1SUzarAoU1P z1Qiej7;U*_#0Bu>xTxmKmF1yR--HAw=g6z)~G9qp2#KbljLm$D8eJ_~c8yAaFJl0~tu&1WZAA zL_e)}j4@h9H@dH*JQ0u^9yOQ<(3uJ33`4N18^rQ37c_M@B{)BbJS5R$CYOM7wYjHr z!BaeH1|rMxMjzAE-Qi(w`;lyUC3{t%!%gz4gQOrGu<$&G$s;UFq`L3-(|3TxD%1&0 zU26fVT}wHSW}H4jk#4DBSCK|~6mDlgBSSb|OWwk!oRHw`b&F$~(I+)^DhawtOx>de zkF8)Yl2ChiO$1L6BgURrZhb5u?}tv9R0Y+;v=dS^!ZW~2NgE}Olqs8{-0G`68_G<7pl4VXZ+)LO9 z2Oo1|ptsr7#|KcSq|_lgCTn@4lLgiJa$~~-z1M0f>D_nApn!DCZqWiY;8aDtZh>_Z zQwFr?W(!oDnAEGK{JxS@@xl7aCdxFlF~;b^V;xqS1IVhV^>HCLeJHD!aI-H{-W8xO zKg4(+1kxqc8v+wmBan`edAF%?9mg#Y5G}^4B>PnoOt^reR-!%4*PNfC8~A4ieg~F! z<=jdD2XPH=Eh5i_tpqNuH@;&-o2a_du??^~IfoYgjx*jLU6 zUGezDBv*BvwOmBp17IP21yu~Z+)6ivnOGQLYrBlZme$&?%RyK1RloxOqj@Q`Wm2SL zj{R@R2$6U6oA=fG+f?nZ0khF%4CVE6>wzDM_K&aFr(Ovoh_B!~09Fzx;?bt*n2+05 z4a{MVloSsC-9-RYj^purn1 zVkL!PwZP|GQ!3YX8pidP*=d&-v=` z-(fV@0}Dg0;tRXE`@8QiLeAP>&F1vsf$Kz@>p*Ou-K=qZeb?x=&>_p)dxOsz_jC(J zuS=tEIOgbqdI{|m4~YHIm$?U+-US5C0%-D;#^`NXT~}GD*B3Qjt0=#=%C!4P+byL3 zx~>H9ZR-jkGy3xWz4gCth~rA-T$x!39vb!7TzvDQ>i1Ro(sVZ_dac|6ZB{GUx+udH|88I7)JJV<(8O&{#@9eU3&vsJZ@{Ga+pf zd*(h^!KR(E#b4DJooXk|yEt+j<%)z%A>cnH*=F$I(|-nWPY2IF3bmeh!06N<|J2O` zmj*dj`>hWTdEU`v{?G)?Tl^^zYmOSGFBx_@JUF+aiF;V%|8pqj@I9|n!={38oyG{9 z)ek*5In2B|wB$W4>~T*@!EjB$1D_}Nt=#VW{Tvo#KZv~gz?*VE*y`b;c@IsRL3<5R zhZrRsz8`yMXwlOlhUdM+?0XAx@8zC)u)=D@{OWy|RSyFekH8dOsoSE{{4=M;TU8%M zcKkWC?#~CIe~cvE8F8__?@bx@`*XPL@cp7wBN0y@`Mh~pojshHg_;YX9VLcz!!`%M zKi2#lI==YcU#CJG1?aeOG7fpL$I29$Gg#a*diT_5+6=k3hgzfT*Hk<;G~1t8xmpAd z1OGl9KYZWRz`o^CgT-wVS8acPL-{1ZkTf~3+@5_r{B*q`6bE2FL_hoAoo7GaJOiqO z8eu)H?&mY?1}%Qz>6;u2^1tN)eQ3fjZwkxsUZwu7x$*cENY&atmH>~y@h3mccQsOK zB}3L5CY*kGS&>FaB|{f!ah#~aL2rCp9j8uzTn97b+)wQRga(z zlM4r)@_3jIC1nQQd|ZR_`8=_rp?6TXucBgnsC?4>YCEIx*-Glv=o`SDJGG{LH1)`6 zdi&J+fvN1bL)giwoUti3Y)xR9E(fg>+l+F$)W zpnrAh?W@z&*Js>cKRNs|_vFi^3y<%(KRx1R$0YDtD_@@DzG9zy-MwM9w{rGY`|Q6P zCJwZRtkzQR(m~bsRaiRdq7R@lHYCXJ;}OF94x_MZEM)uZ{_TqICDZzf!WFC83y`ui z>)yV1fA=xw-G3Y286c*6LU13eC}d!E!BRjep@njvvFuPE@<@MjTq_z3`2zBzcH7DA z@2EP=LT9Dg$>~D z#MA$+y!)SVF;lDp`~J5fWdYc?ve#?-%T4R<1gC(Z&p;Dh{~w&p3q#=V*&k0JCcnRX zZO!moltaSr=`s&{`{EZk6R;JfyC3Pv{%8Bkbu!?}p0E3J=@lEVMGijKSNTSQsL9n9 zINtoOUCckqfdiv4Iqyt9{tx)0%QE79|I1S!7c#ylr&O7Wdl8Wfu8J3vW(aLy{;ES^ zs=BPc0}V%oel=jkp6~3Q?}ahe3-)vo#0i=m00u&xMW`?xc#t%quljy#rAJmav*$Fh zu=a4qdVTlTo1-(2#MD_P11})G77#DXbB=dVWfHIfpbuTsuQ3U;6O}MZ zM)n4MSzK2{Wd!|bnvvXe&Ysx!jlOK4T0ycRD;k%-5;<>tR{Q5SzcbxCSG^uMv#obv zG$8kNp*YKV@ObD>YpPFU@0@UV>9ehop1N}(6@LwJeGIF;@{F79itrA4-y^@AfzRcz zLVM@(ahJHK?%{GJz)aKztP6K5+ ze{*5>oPz8uFZzw0&6)bo?I4ZL+=YMj$Kv{b(l$c=%1+*`bDO6}uP(~d=dSXl7YZ{D zta|$o@mi_fk8}6PZRbL5JM&66wdXj!J`&jj-zNF!AdE?zREV?OYzV{K)k;OAIp=jE zviGnwgc|fo7eWtV=7bv0335E*=I`%n3pO4&PPx1JdDxM-SXrsn=1B&gg!cl*jn>G^ za7Wg&W+1fEab*19Uz%IE!`bJ*tz{a!Xe9OpEnvyvjU#0X4|y@``ijMJV)&uFYvW<8 zdCCm=K8$;_l{QijfR<- z5#N|e*?M+KkJY0w*}`fZO@m&pI-iW^rW8tGTb!K#2{;m*kK_8!|5_^Z-#YGKv1KSZ z{Z7hRZH$=Y-Vn*j&i})afc4E+;x=o)gB=$$oPK`+_AMoYw(d~N=yHBGzzK0P>LMZO>CJ;8P|b^pS_({XaQ z_iL3!W?M5FclmzLXs(Ihx~}DrdqquNC|lT$-P#6YH{M>??QOt`Ivm;D0*2zP8U@8f zg)2)|!X8yDbP>wDly&)vC5<~QFE+1b(%S6lNA!8H=LF6{-r!URR!u@XSeaT3cSWp1 zR$>Yqj)*xvlV#7%uVjyw#7++4O7M=xarh7YvKs`e;;JI*R}%fkVW~Ew0qb|I49~GeQW4spAqKsCPl!q_HwaLyf*3aNgty6|%9iH;+-e=5!WrI-X7vc=WoHQ^Mi9X0 z*%4!4$_0k+k(sxeJ4NMr)5cn*<-|HYzf&o7{W?3|QP#qzCUdHP|>K zY==zx!DBJcm1qO+6|io-ZJc5}tQ>n!O^t9xQ2`mTCrrM+->!-(fl*w8uGJ8?IUzMT zhyghd8OJdMD*hN_=Xx1z{;o6hUCFoI48^}*y;Y@ruHl@+o=3PBQOcq7Tq(+A?ra2> zz|tc?%0Z>j(1$15N`PX6lW(>!oHV5dcwKg!QIytutf6Fv*McIpq5>Op(AXJAKb}8! z-iG%vc)p}zDg%Xv>MHTkFzuc6CYDJr&nGt&vc+H`Jre-aP~1+Q(AHZFVl}Y&tg;wf z5pbX>9>GUMCt?lzfUUE!Riv+>r#B-oEyUm+m+=J^L*^E z#u^w)hRUz*KsMTgIHR6gz@hEArBDzX>cx{!Ur0eMC|l~f<^(~%HM9szFM#}>+mvtn zZ2X5VUxaggID+LjaAw3JRNyYysZh$SmxMBwK3;I2q9@C$@y4Fb#KE) z%0hBT&8aA&l2obKq7GvEgmtU!S67)g)*MPk3ohYO{ITnQcF_2t!`lth^9`wo_RKL5J(P`7 zV2(_7{|eJvvl#{xB1;1PB)hElI1z2~-d)CcO7S!M7LFdzK}r+enjU$Ngt{7%RFgIX z@yXQbu!$SaU0s(xZXm(WA}Q=uCFp*~b4=>1fda6iW^e=22OErwM7XDkKR>S%pr|n6 zQ&z#}9-XJauvlY$Dvh{*-QivR)ADOlOk7A*TzdC*_3=U1OJ|Rea%Pb?U*9!aCyoTh zSptM!7Rzqf(j;2ar|#OV{6C}n0dPSxqjF(`#>m6i4^!I}{Q-r}$ir(0_DGwKBc`6= zsN=>{{{zvkUcCSWiBSY}G>rGGBYNoG)y%xe+1Y`P-VOa^C>t-{2{;AYRZ2B!E`E$X zFm>94LTzOWv39Ge#^&33np>vQs`mX$7h$)~IUD5&9He+iaUTgo=9|Bi6X2v{!akMh zwSOlHv7et_+IJ#hhn{?F2;uQa?JC%GS~7QJL{ACLC`A^N4|{I=C9HaBbK26)==q`( z!1)De6zzZ`el2QfE#O?FV{1&&j2e>?fz{~X#dgogNxz5XI=&oIq#!iKwA+NvOKK+^ zMNk#Zm7df|v{M{?RN?OCa7Kn_AA5jR#P+ zHFcYbB?`oJzX3bUu~Z~czyBCmD=}L>b)4~a0VuUfh|5u>VVf| z@i)<3vlm@=22QOWc2qos;K2bdoqrtMYWsIieWD(1jL#3u&e3e~KV8fT_B+6x?Q0IBBJ z9$CeY1st{0g<*XdDeLL4JAj}er@xA3R%(D73vhfE7Pq!|??u|&*TeB=QB}VIj0hp` zkdFd%K5gliYPrA60O%}a1_f)=(EvgKGX=X7-k`l55H^6LG-0Wi?w{?b^a+gK+=l;{ z$0`-Xu~gvrK~4gjZ^mF;X>P=}y2kgoCJehK<_RGi#2!IG0K`|IK5GN|7AYd75U0G5j zfbs4vC^{!agwfdo+L5Y{iiHD(Mj-#ZZ7SS)AUob$|e zgy8c~!)Nr5)$M1Pr53b82sc%VT1-Jb&(d$lNp`ok;TSL&dn=2=0vYhXUjUKLNr$CK z6#xanbw_;^)&|aMjdxAbK_U+<+t?? z8a-!XvI^9eU?dg5yQ6a`1q$>Ns0rJ2L4j)}?3cpN`2sJqk@DTXC}Th#;%85I^b3Fp z0XBk-Ky>>qYjD-5CmUF{O@EN7G^`N>qsXxOlv{Gg&;cQ=(V^%e@Iz&RSup?gZ-SfD zmPmzPc8;Kp^PhWipdC_4DLI-xH7qX z^!cXsA2)6I`>4LoI&^}*9^gO>g*~yW3qx*qj$Nm(v;Ydr+|>)*+g}Qd7LXPUB$=$3 z|K*{7GtXDteNkbRnj^aFJ#hIh^U6WUDHZE0K+y)hoG0(sN%_5N(av+=E+L=Y4QM;o z?qO^^R1ASMRC<>5x`2#1^kNpz{{5ZAWo)9KwMoZ#0u4ARXLRg%-ntIZGP6KUcn72* z;Z%&jG!-Q0$D|ZkP%g;$3}IVfGVS=T4sh)p=$PHVXo=8J!uodP1;W>!5WM#FU8BPv1X=6qI5)6i92{phvB#T@#_E5s03 zp$e-xWzJ{|J9|B>_1+|S2i7`-r4GW#j{NM9Hm|aSc&H$koIjaRh=;lPS;QQQS-LSl zQa~b7n*$a+GZ@$)cTColI&N9oO3Ke|&W8hGLpDEi!sBGD#NQa3CB$WPb0#mWB^m=> zgVTfgmIq~^;=t(ODp6QCCr!Lma74x)6DF7?xR0a6d| zZnuZ)@&g1>zLb39)o9ml`!GF(^+cY(Umg}l=LkXFF#s*(1~hX+^-fSaK(COxlM{d( zjpr?z4iF%W-q;XB03BnrHI-vaLHmn%6w!u4Hs?Tx)OXl~&w_PUVnIeyo{k8fsS-S? z=K4$J9COkYv0V?sov7rP0pRKzd3N2m%fHwt(|BG$w95onm0tYF1nn#yg4OVrmvfLfnkkAd}9~g!0$15#Oc@rL5S5!_&S~fHsd~x;o!~ zD$n!=sN~l!&A@fodHxi%`w6$mLO_#}&+-F~TO(ZOq=@8K*btsc3}W5K$Rk?2N>|U* z4#G$}@GT53zp?WK13*$w4Z*!XT6bBmb*O2`O;KXxCOk*e6}uYqUr1HayP z-yc1*dso@Z#Fw8E|66S>(*ckx;VI=$%aj#z}Wq9$q~OCB1utThOv!_+CY}Pew(4KBAuV?L_gCuPi?G^Y=HOKKmyB zwsZV*F8Rj4MCnCBXfJd}0VZVr=KhF`?qkn<$@U%%rwvnZCsXk4DKaYeP`_q2Pvr;t zgs5|FCao~nK`Rl}ls>YQ+M&e;$5 zQ>n6PI@)Qv7HKEnr|NA?GuS3|O>|bdru8Kmm^>k(3eTL*Ni$ARJ93q5`j*TZO`I1K ztuHLDI!Tt34LmLWw76T?d(bo_s?`Mhg_dk!uU*}6<||Go-SKj|rCasdc7hf5D|vpg zf!Vl@Z|Y=m)oNu$NXH&woLscp^Yuz;Mx)2lql!i6&E(JLKABq(yQ(;M3OTAGgql=o zXwTWWnL}jX7|CC3@<*tV5y9=Rl|ncxC&(lkN0lD?vmjG`S*U$Xh?jb%LpYSdx|SnC zRqbk$@ccw^>X%PTYj5rPu3hWwAL_T?7}2xW5S{?i)!SF#j@EIE4hyu1vbE+&R> zN>)mKI28+hlE3-BZE>W5C)eaT)AFQ%Bh)K|RWolL4K#7js@+qKUqHGxb3*^SE+^nQ zlA8&4020J?Uq-&bAnc^r?FDk|F|yng$6}DTu9;`$jy$zf=&MjIm;e-D#Io`4Q`*d) z6`T~Sa&AwPmNYkN<~g|MF{FbWu8;`?+CzELfyDu3HL@|66~fIpO;!*h?I%#{vUqCr zY_esFD?0|N+k5RYSv!>L4*$6Wa5NyWcOz)m{YTax;mqbC<&VgPAQYzJu|lpp@B*Cw z?XiHI|1NxSJE!T3oE0rk_7j==i@Q$9W6|;w7lrs{gkAH$lb`oHuMDCdp8+Ur&`ywR zn^Wk>MiueN8UdUwd&mk<9^G%3dhgEqaDHXATK_ zCQIS=pe)sf_2>Om2kQ1=*)?&)b6*<7hjl#ay-hA`mnwwgQv6KP^_X_a?$OJ!rFtGG z%r^ep+fh%dQd02TO+D{MDm(u=Z&V4F3W(+U-u=Qa{*i`5&B59MtJFvJ zLpwEahB(E>-cVt}i|Tc%N|+kM47Z}@R6T4B-88Kp&D6V1G)>cVPc+NEz#uy>DxPPA z#$e=}<+BlsJU*_!X5+>f@)IodsMH#UqM8Ro#$?m~tz@C}ksb;>&YVvAnB6v{C`~bC=CaTDB-R?E}lpCP8+ie3zn~P252@Ts>ySA}20zvhjPID0X2t}{kFcfXpAsN8WnXKVbA{>7Rqa2@4xlq^i@7xlx z$H!&bS&qh*kTdn`U{HSeM+u5CE7y-Eu@;_$?Yeht6K2D|W@X_@^wg#jX9sk&?`nz7 ziBglFl}z-&i$;Z#-CqRb%Bg^a;YMBVz*72%EPdgT+Lp#6x+XtoszYwzw#bRvrlvP2 zkEOgk!gTogxGMh57_-I?GykRrwXU$dTzU*3*#REt{aIe6hYxE!x&2-Tw`u(jsrFq# zDCf3IFEx-Oja`(%=p#Ol4Nn?h`E_JR<*tHQUb_pMs}j>J0uEm$c{aDTC!K1H<8(Y` zcU%q(h?DfB0xqR6vj7 zG>2s+mday=3oh!m`YEQU?b7+F>lE$QfL6sVxz(k(8~y|RKYqo3#P7(hbLteYezqO` zrvA4-S|^>LyVJ$Zbbe!|&m|7zvN9{_2jj!oNSr>c?l#%1GKGs%Unp1cpjNVbH&AmE zd!hIw5dy0xOhMvw+^ae0tOJ@(@kuZK+Ts*wRZAPx64-Q{Udo6FowE0%1d4ecJt@d) z@o9uEc)Z#nMHv7tnoL-R3&977T(nW+C2b7e;OmX-6-jOKrvyzMM|@0hE+ z{@#d$vV|P1UNf8i-=55VW+eaoEqw*yq2fkERr1J#l)JwLKM6aL#j$f%RdR!%>(nLL z1PqvS7NI&!L&*rA8Ln9 zFQ`t%;kKyU?i#if7-gYUo!He^Q$K^5#|_k5+_-9$9D*(TKj`?fi>_%2C(HcVCurQJ zXk!44D)U?HRXXQm4hnb`v_JfXW(c z&O*L}c@vJ7RTL$nV%H76lCdAbK}ib_@&=~x7GLyaZ>0F`X@m9kAf);dnQu4@6V^Pu z`^K}eixdc>3#q)N*6#&&tw1=KwEJ%DGqtMnGOT^G- z=6CnWD+gFqs5tA%sryK-Dxg%its5buIg;-&BEm#Krj*!}9%uoU^P_PTxxWgiBlkd; zkq256G*Ce(eX|948q#q^wOM`UwuwH6CoTNG8wj4E!4Xsi4X4ebnu@Jg@>I+Lb#2OY zN5L}p@a{3hit4E|YgI)$fd;-8q5+J{a<6)V8hH7ID`?Md+jiFvObl|BZoT)EUz+sZ z0W8S;RSB9)3mCBj2%5o8@$Z2GEyjXfD4RtJWRK(+A}+5|jMorY@eGG)HMWDjF6|5y zKUNGL*7+3qO~{WSMW1TTT$PK}MH)uik@p%qaRM%|te#t4XHj_?vt+)7^yEqLsva@# zEWZsF*En42)sLeFU(h{frS9&O`t&T;`S|A3qw^Acmm*{}3#?O}5X&y^6`03j4NOJ5 zIR8zdPrdYvG3?-`tZU`}dh7@O1C4jHXWH|A@ag0!mS zuT~CWQio~ECupyT+t|JGLuCTPV)4Uf2awXUfHujJOxX*?Tf9fmO{*hu!$goQcKNcq zgki??6ThMR@z(Y0$hb^oldbxJV+kC>R$;G-uQv)eET6@vp_B%xXj8xJ)rbFK^A;He zyu2!W`b=T@x_%}7+_f^Mg3WAGrwHTcV(f-NPQ2$3pvAuWaBZQOD1QWe*fND(Z``ZZ zJo2<9g&GJ9%k1*m8&<^va0vkFP8Fko6|OUcDm)R26Ve zKp=L6A+2evWVuvczq=~GG)EPws?W^sL0G(~X0*ck0rhXuNJX*AzUP1}ftd#~u@2h? z!~jLZ?fzC~{gIQ-#Q+AwsUH{h%}(Y@>kDA7y1QgP8==0y;Qe|2JH_|Hj(Zn==83$4 zGZP%ya0a?xrlk`7br7MMi+~&%p06V_f?!3Pmr&j?ilU?NM|q)NvS19KW(=x-ILIgl zj^2Y$H@o`T-r3;JkpF;CsT4aPv8I?{VuCU*uNVs4`o_E>=#R#Qd_ZB$J^EI`ik6MU ze}UEI2$$0UDDVYg#sUOqmG%KR_`fh&X{b7}$VjS5QVYy!Rt2vWHM9uvZ6WqdTlP ze9~d{YiO9^xC$>f$dRQ<@sD@bytsuDGr;>>v9K5m4UG>XWCe%Iy#e9}iIU?>Px$ey zi;Max&o3JIog?DNSUptk4&CA7=KB%q!(zu^AUJmO`;T?*!K(8U!=se|MaX2D5~TRQ zL*C*5CwJYv35GYUIDydA=Qx~le>N83*&&4oFnsEZH1wTTzQ1M#`b5=cd0xxqAf~;< zpyV|9E*S0QvzmwvXX>_UT_pHX=T3SqZL38{mRe>;JMLkVFyW3*9Yk!axBCf3>!qU2zr^!B z2Io8bwdl74)-&WlC;8l|5=xy$Uc?~#*7GXZCr=E5!zzI@N^?wOfBLY{|SvDUCj~chbMrtsd3|YVX`FqQ^f%%015>u z`-emnGX0IkF}sOL`$8i@&Y+_h%7QleyRLwL7`n|{2g~0S=GQ|4riLP-n#)km6-51o zP~qVtJv(}aHy!)goPj~^+{f}MfGyrklz@6)^Zp~o#-Jq?;k&mtruf#GYymP^fnT0~ z)OdC@_Sv0~A+Xzx5X;KBUXJqy<{Mj7IuS%h3#2d6A!yEfGZH?ipn7~{=MakS4N!-K zg~Q{7OwA5PQG&RfqA1Wmu2osVu%W24!o$4vyHbJla7hC!t{7uXLiia+S**91>>j_V z4nJ2I0S?1jS%~5|U?zcac#%86eXJPtH*G%OE9msI_rn zWHsYlI8&AWpRY~j%okZVjZ?9;ANooJ6V2zqjBTzjFi^4lq4i+Dr}%01@C^C&r*JGS+#9O3@Mgou8nM@sStIf7(EY7l+?Y{j>;b3GpK4G=et-tuhV4vnL6te`XeM$xvB%T3||^vb1qdm9e_F!nz08_WQmr3TNpG1HGUYX?|3_a zZW?8jt`?6baR}+G`^qsZe@Y(gX1&HGZa>q1@+X5#W|AxKuSZwlp4WFI0?0Pvm=p7Y z1AqJs@c5T@I;cuw&yu@hdBf=lp3d>QMU_M&)?t5ChN%rSjlS6Q&1Z&!^(JyAq z!Ww=O?4qTrck8W0rY4QKG`l0gRx%$BkB9i=T#%r>2Od_&5XJ_0;O%}#OHBgPMCJ=L z_Q}*`0c^;Vc@101N`V}KxIGJqudASvEfancyrX}RV$G>2-07~A2o@mySA@+shr z>ket)Xa*Oz$G>JKctvR`s>sqASMov=ytXB@Z&F!4vjR~RWhZ1k4ScaIfNXOt=|NYg zgP8XRrMh4{!VDK3zs34Ddsy=csL`zA2zw*|L;)vZQ>Z5BB)2TDg=Ojzm>%ohwM)xT!c4e9st zFj?(co1VV@l?rCHIAkuxKi!gsmX@lw?b+3p<_J{Q#;j4`y!V+Otw2=WH`M#Ucok59 zW}JW2<{Dp|CtXYb7{-I;AKF^q2wJaNA^5<{g~|wbsk;Y|EiP~s1&bR$x);! z8Fslix9`+_4n&D(yw;xH;~gamFra>-g@Nw z=u*&5?_gds`~jg_iGhG|f}fw*hBI#{aK9B5SivdTgdi7-Qv!tt&pk@ob4;U0;?amvV2$8sGX?ao=z>fTKrl-$HJ2jY7+1_4Poneque17+GNKVGL? z&O5KQ$BD=s-1#Suz9!>Xv`^rjG56=J-57HDWi;D|>^}3C6%ix zp)6YxDad2t*Tknw_HF**o8hWJb2_0lG`qCs!3GdMz=7jkGSn{{XlEVKrz`f%9((%h z8AMa;$Q{^xE+5M*xMnr9n@)d7)8>60wUsE%1?_TsTy%NaW-)QC5UuS$cV8T*8R#$cNSNJ31ie+mI}?vvuDR=3royB<+uL6Qmm}=?{@?tQu6Tr5 zswzsJnHj8q;(k~zp1=N|;4Wgt@IO~Zy3ui&{sWP^%;)gi*N7U~tMV?ZJrW4JgWW{G zzr=)eet4%?zv;HW-Bp$7k8Ugn^a?6?nV~S}Mx|AM(3yS0HdtL6$RY zb;&l_@;f|_8kw~&$iH>=nsV=@{)Gb#q2xOGO5M(`(8_DeC7OjbPWsQYmJ)fM@!UeOLG4F1dF$hQR$VG9- z&5~p14CuO~Eq#V7*6ujPO|L<+rGS0!>#2dfGEMrPh^MNZZx4vp2#iblcfgT`wQkh< zxA6tzpz|L39ol{MCgsMtD_`oI(ORjM#UtYEKFo;CO<~;^Hao3MlcC=d%SrdA>Dhxf zzhLl%w=#pWB;k_X82PjbAtgk8`^U-8ud&-A=kDfPq_No>KRc65SRMC}m}00=(B;6U z3Rv6}_+rJ7l@5;}jl=bp=riJj4oSe-8$UH5uAH%AaT1Elfa(wH+vvs8jTy@f6h`E( zk0I)H>yS(oqeTTQ`LJdkyWkWV+~JtDcQ`sr?)7cu4tLpky3>GDpTYc=Qcnx9R69+L zTUd$W>rV_?+Q`JxXN$}ex3{5469Q-S(|0v65RWxuHb~AR8f*FhsS{Jua3987`<=!K_Vy~@jB8;_G*`4w7$9kyN zGKx@Ft`vVphh%L0LAgoo0#e7tu*^LV>$VaJn_E0y*Mf098a9v6dfB`kJvU*C14Y6S zpoy?Q);}-n!1YxEXF~Q?me|wY3@ZEFXgJ-JCfqJ_wMh3M;Y`5LRNg9Nq?3+JjgZGz z*}I++YvrdkxH_((r-MYjdP&BjWvA6Ed}XxfQgg50ui)_lO@$l-8CP~xi3Q=*p^ZnK zausZd-p)R@4;bl0JMxF&!zmk5A048;%tft6DNSVc<;^&_pF^!(WrMWa+w@y-Rbxq1 zpL+AZsdE_$haKK`<-58^$;Pfds6!sn!~1{=(qX2Q{`cG63D$AVykhJhb-^tv-7kr1 zA@AX5htbR%xq&m&VB+nQ2GiEbGQHPdJ3pMIhlLs*P3e(iApKtfP0cG1NQ~=|^U<8} zFWIlysI#ic-A&D%_&e1cgpXT)8ciYvDa;9vUDGIMmjjA~`7?&K2RElFGjr}&k$783SW)vWzM^Hgd{Q#B5g{HnvRnXn-sQo%Pv*Qd*QgrjYzLB0KEl-7pLArYk zB_~Yu@pD}-`eeS_1cpkqCfIG#ln=KtAPAE-aM|=<115XfX{7?mwV-gZr46IX@BC2X zO|h2V2&cw?u5v1C2t}xY(dSYiW6QfpcL?kZ>@8<>=o~DTQ&FJ2;>Ff}*`nW|bY=LP zOGe9kzjJBFiUX$M>`VA<*Cvm7e8T3hUwum-y@=F1k-jo;K>E#@8G`IfYEZV$Be`^# z2VqQiTb9QbZ(mucY;>}-8mMd~ZMVh=ul<1k@A_k_A-v`}%kxS7$g&o?OX5 zpY7b?AFjKmg1josfvLvyCi5NWiL7j($y1BmXl70|TE`yKO!P1?9+Q-Up;b{ycNnHi zsg_D~gz8`ix4fyz{?Z?QHFxLbvZ+<&r}Fd$($I^u4a>AP=8)l`W?VgvOx z|0H^}EDbVU~kbNsZu-d|Ldv4IFSA@5Mt0Vs}NAu$c= z^)aIH=)=NbU`(z=niCisi`$9Wf}(zMi4hoerKr()3(7g&>VZJnjLaq7sU?z(!Fw284t^4r7$#?t&HkyH0 zpXIDuNj=fj%#L1TkVr=A&$JKXK6Cz-Y`AAGkFj8iCN!-id*blOm}~eLW@KXt9D3d2A_C`7Q)Qt*1aXyuBru!CUebA+;!6oetMVdo%|TeO!!+W$=Qx zn<6)?Nb!Zb!nuzyGf0>0tWm_?ne>EF7Wj*+6}7PILY1HF#7jHen_mU0xt`DdTNIa8 zv8F;4a!umUsxk3@^2_hJd0I4;DxT{=TaQQxo2AB{w5yz2SJKt>E^I&kJN4O1mNGf) zKIKwzp2e(=Ou$_j{hcDUQb*zfvry_;R3ZI~n3M)P$%{LbCo>r+b(pL5QiwK`2DovZ zvAty}kezfg+wJG^0}5_=4p3Bk?#Hv}xD?2NZ8)ned^LW|FQYZ(a|Dswny0UR1lKGg zWiC6(Rd!gm`pNm~n2tlF=yVgm$nER22ZP>Iu@?FW{8>_O>w4oY_X#6{SQfOB6#tei z7%3xWv-?JxsD1kMkBAhR6N=Kh#L;VqtYt%(Gc!m~JI^uu#~FkwXbF;N43UPvIJS9K zNt+@eMK2)8{pGdy+3$%?Z`Tr!HRRAJIygsxxQ70$51Yk&?GwUv#ykR7T)(9U8zaY1 zkr*}O9WF<^9(#`u4wyPo4jTKHX$;|i{v|~kd%o^-`oQ)!AT7dp(I;Z(>tJ176kP-@ ziQk;~WN>_Dn|%Jt1-4n&9iun*2$iCbF99>S*suo)ofDJJ!Ps0eR&h|@ZVJma!aXht z#MeVFMTC%z_+hG?)n~SR!OsF<#+&?dy*nPPD-$Q2ydR5iNb zrxM8XVIGMizx6Zmv2JoOb!iY@a%zW=!r)5L-%_?&j@%X`lXOn>Z2~4>X8wbwv0OjW zODa^+4()V8zZp_56CWNlRGbmXm>vn3T@hiFQPbg`(}7eHL5GY)P*GOo99OtVTmv_> zGk7{k9nw-gs&&c|o>|9$u@Tc&{Zw4fJzB8%+oEV#1Y?gEIK)l8o)*i5_mbnN5%qf5 z3sXc!0HG4r%Y2KSfamS3E(I4_JJpl&_`i`Gv)?s5UKEq386b=Qn`XRJorLC2d6bTh z3)%8-KB?RiC;pSy#CFpn80XshE$r%*2MNATG{e1KQBr- zYsG_9PcWBKPf#1CNe{{fr+~XiT%gDR8wJ9E=}<8~2GD&L>rE1pU&6Zi7cQELbX-l5 z83rWx-gYia)@en7>a2iR)tr$u^?C`GOJdj|+tWo<(+c-W`q{|fMhpK^OfGfU_bv!i zW!~spmNL-8g%C0lNBVlG0#=g@q)#x0)11%+U(DS~Lv6(P!4~d)2$X8gZ^D>C13T|} z%rIF$-LE?!X04?ad65m03n189CT&yTWW7@bRnBP>6{TY{149=SXsH3R1PN$tfntjw zjcId^Xx)QBa7kf78X-k2OBM!Pd*fuf|cgdw9r->s( z0+Ud>R2*A>Ig5z-rF-HkTi>@A{6*5g!(giRfn1SHl$B+X7!0WQ1TPNv0FZJJ(PwI1 z&|&DES#p0T1a4aDfg!?IJ68ZVA#&E?Krb^IV%aj?r35a3xj>bTgO9mVZL}3PtTiZ! zW&5DYadSIOSTL5HOlxAJZ>(DA?LAFrgWhbgdOXyP9p!)mMM3r~y{qJO=6}whE2GTQ zE%c-kcva7M6+5ifHhk6GmYVV8=A*w$KZRboG+x>le)ke)eq{zR%-HCA-^S!^%IrAE zk`A>shL2~4>BZ=DDP=n}*tm)!*2J;~w- zEtu35>OPIWj1u=I%d3P3HHLnRid6r; zlXyAy%C~40+3;z!MPd$t~EN_zNx>$Qs1+M~N?>~;`$^0~nap0^H|Hah(=GM?9){T{TQqE`}j zF>UZk?v^-{KRa`q^ih9K2i{+kJin&=Uu5oIX%ZzGc5*wgXAr*Fu>awJzAASAzRb7*6)vBjCKWO`_3=)l_Gh;o(WRIFDcbMR{riT>fz$o_LY;Yc z_LwX^%>Vm?#-!(8-+VxI=D^PGNSiE!0)xEqjsq%4f!9QG@`@gJUsl|Z3QygHe}KaK z{DZc=GWXzeQB8Ml)v>MKS$S11g0khJvcvn-4NF?P_b2NWm1PxN4mtSc@{!(N-rGw4 z{M&;^DJAzPLFXq5y}AYaVgz?XgiYNCYAcI3>*lXa1dY;#pZyA6PaHZ*In19pSlfMI zd!#?LV9D9 zvuoX}Dz;Z0-So8l$$Z6;zGK-jM}wXwXZ}3Ktg1S8rHWIvwOqC8^mp32E0z2o)rWqf zFIH6@4XwdNRh+(3m0neof2I0vRoV5QRZl~zdD#a2s>dGMS6^AFJbu~U{9ShK*U*!< zE^vRSmb)>~(36wcYLU#ONLH;*A*@cNx=wwvPFt;BFRb3Ey54NE-a@TGFX@KWFa4>? zh7D?s&S8yi)s0@0jT_aPHib29u5Ng+hrcPOAvEmN&gxU~lc$o^PN#>R-cx;g?_?0E z^4PwxW`1?^!O7+lwU)B5mSfc|&Y`pWbM~2q)z&#QU)ym;_SDJj*khbuO-C-BHL8xP zsXl!+to80>>jSm6N0Vnys%;{@t+N&*rX9`&O(geKZ#88j6shMfKB|by+4eguRt9@+ zzFa#|@0^l--QTNQbj1j(rJWjZ`*_&Nk6{J-ohWa+moT1G1?6tYC`ki0^*SOb~(o3F@YJ?}9CaC0`FLm20da77>L!JGnp4l;|SVIZk z{X9<;#(#LN|Le1!^I_Qwdk1FLp2gk1en4Z87e4rua^r4|b?^$vG!=z?td6S6HGc5p zcp&xZA|Q5qb{m_^m;BZTeu3~5xe*vhT}z)lLX2e~D;$mY=H6iFeT%5a=!@*&A%f}P zWw$He%D2>cI1c#tBC18V$`pnpmbZR=L9FR^)9cFIE2j2W%f>-YedGxyag5%uJ z*{kPWCdOVnAV+5Gv_vO!gb3p;2BusGctN#1&c>wNBDuf9`fICXFP zHoDWaLz}tFff)z7-M-(aVkZCAUin!it}PjOdaF%!{k4zR+6jM0EwpB=Bie4CL%LJ3 zTmYXe+Cb{Unx1$5ehvzFsdoVd22Wua>mlXyPP#0#K;&vqd@Ew(LKOBfr(PeV zLR0tHzf4zgMX!gcTLaePa;a-)!x3!8yX$^;{%c$=7C{AKtZ^gXT!eHIVc0jYY<5z~ zUyJ}oN8G^Br%ZT^JEo&8FfeT{r#v zpw9mtdk&Jng%x#RqCCT^b)n(?(eU4}&D}3mB8IEhP8$V#DUV*h6fsk_?dP#=r#T0Z z8Q;>^yUj&^N*1TGA3G6@<6e95u^Q9q-J`3#jOg?-44`=`36^^d{rLXyE$2iBgv79| z*9;Xy&10_+7khWFw(L2S5C>4N_C)p>`X0A%WJE9jXy^42YzZEbQysc}2PxM7&ieIv zsaj*63QhVj9_Rv+k9&66TOSQOFIV$c_lq&N@HSV;37g#X?-(dK{JG1nzpt*gEkx~? z({|oSonenqN1>TiEFxJ*Lx9)!#4Bsku7;1he~$uuLAv*EVu*_`R{hljd-;OkRo%Fqa z_1pW2i}C;6zkcn<%vH-^YO0HDnVM}9)x@d`1u4;@^jrF(Z{aDl3%j$(EKi|^?JR?( z8Qn}{O1)oBV6duCI%T+)Mbk(&wvXnha7Gp;H_ar<4Jyr{nd4+7`mGVr19WmF&mj;l zWZl>WS=4%WCJ5VtuYy*Hgun>|OMaKDMw)6d`#&PP;}s8YE-goIQ_UM;Q6rxFp~w;X zy?JQm<=AI_y3HL$@^=4>tVmGSKKwjiMS1SWOT10x!-1eqmqKO5xfkSq zc{S6^957&xd5h>Vc-~FkR`i;O(v)VUiXKyf9aNShwISc7c`%A7MFczfk!a`ns+$4- zK63I{Dym885WJ1d_0Fh4CyX#%71q)dDVWe5G+xo-=rt#e%+`^n zE{WVdF;sU?w1iS%NDpQ+XqJfU`u%mcq3fZ32$TkV{%yeui_BAH9~Ut|fJg03<9o^p zo*2P$SQ+ed@*r96kFirVWF`{h(mEs(OkZ2aZFS29pU)6_ZTXoZ%aOHAxk8F%%5~dW z)7ecuqp4^}R{YmR*Sfhdis}v1EKp`b35FPP-!SpgQ^U(2JBQPIwj{iFwfMWTG`2bU z@3)Da?fWhfT>Mb#>=D1cXeFtA(}xNkaU*-nY_)+5o2B!ytl3BwMBG6|D&#CMEs zOHP?uJ`vrvU3F48Qz@dL>5WLeK_?A(0VseO_)I@dpW!FR>NDA(AzcE&WUQ%Bv`-c> z`QE$loM)|A&qm1bSyBO=X%Y_U3R~-hfyP{Rq48#FF=1y&`I=_fLV4LqGYW1mntPCv zdjawtWEZF%Ka{Hx?hAsKk+|Y1nQeX?WE_>RPk8Mn*DRj#Wg{DVIB4rDY|T<~`K!uy z-4+K>UU3wGF(%>np7$V5U+6us;3;b>)>A+tKyqLlx?p7s0;x+zU>A(Y%oOn#JH47D zG&cVFtHwpqQpS0y?%>U#W1+s1T@+)F5(KoODxAc9oHkqrg-)iJH&SXO`XC9vOTYKeYGo zVs=e}is|h$L7~;(T4R0AhCLYyp6`^=8}UXu?A6UzOA))3`D_0Uut&&ifp{3r(<-Hw zVRa7@E$Q?8$T7J#Ww7IuPYn-j(H9UF$my9`3An) z$^R}^so+$zau3RC`N@%I8UCAR&K#5XtW-MJLW*IBv5Y2JDNaX{GOd|%H#*ep%<3H89`toKLSzmM|ciaQ(HG1C-`9O1Nq@% zLJq`nCb@v?j4wsmvw8kKD^Bbq(WB>8bzbj$^7J_G)DJj%>q6(G=PUe{%s zPvDxTFwP6T9dT5hrFo^wQhyFJmyE<11Bi7(l)~(LvMyU5^d9UZ#g0$3j)E8dWDK6~ znew^&@3sGHkfS;)MrtdYR52k5Dnf&|CK_?cgfJSnC4{3=sxug$BZH2Ak8<%5l{qyi zC*Sm7O+|gvmTyD3d@<$DTy0-XJ>{e|ox&@Nojozyl;qJ~1CnC_(2JHAZb-E!k?k?o zwkS=(+nH~rl{%mIIp=cb$-jPmzmYQ%f+ZadbaSPOw{1~ zZOQt>3zyPrV^*|xEk6;Hx;pqi3B{EbC?%m7xmqk%54d}b32kw;0zlPmfEkH~{2Z%+ zQ0s~GPgvmQo*#Hm@}818k~qf$-U)HV>=#NlMoNE_?2PU=BG)YMhSWA&YEQhv-?_=K?23c#8B&4w>ONJ0q&0-m{ zjHMFNkg}ERTWIW(O0=jXgiuM^{i^xRKlji3-1FS?Jm=hVzwdop`8jnzOmtsd#p!nK zguPY1ehxNgnUXZWV%dluwV%RJWQ9W{PX?|Y{A)-+ifFrYVCJ!{->&E30cqIJ-a%A8 z^>CEuhyDLvHjeJQ`|8D`AD!jyP{De>K#fb2C-A_6WeIpBjiLbez+E8KCyDD(29TwT zN$E~i|B9wFxe`DY?pP(bX;wGx?P zML4iDi+gvk)OL9@4ikv>eSG;Vw@z*pkeRa?;s4IrvEf3)*+!$Iug+*pRKW$!lV)?O zzvLuX7s5Pjkf>VloYC`&+M>H~1p;Kgu`d~WA|>$8?du;SmHWj%s`fuBPc;MTqy}Tfs_Km7zbCXjEygp=7Y`{`meD)QNTw3sB) zY+FLQ8A`^%9{r5&#P;A(Jt%|h;L@mYx)kByaS8|`w5_Kp2@pVVUcxr~ zD9)Npg>9&0N>RXvaR@|9k!b{W69y}$p0H6xjFbX|?W11Xu;Cf#;wmI}6rRNe_DX8a zPN2=WnXw?}XbvKf=s9Kz4ke$Ta4PKmF1Ph7ecqw){&4>B<56F+6+;#kBNjGJUJxfL zOe;lUw98eQ20cRa2qu92PkVVS!UD-qWg^oaEsbgcWGL=&+mQCw@>nPF>GpsjNZEda z)9PesAg+W+)w*gdZ9NUu(u7%4fXM1VV>Wc$o25;JWoI2Ov4>Fz#X0N6c7~90O=~Bb z!=kI*VG!J#o8fB^#VrJk`KOUVaDTjn;};m2oc+KFvL68R{0Wl$nu93{m5xn|7;(lCHM!TQ`7 z$aoP36U5*RBqI$ZgSSNugI%6%6kP;EkFg>Cd-K%LP;X9=Cq*sB&)o}G@(y`Xja9zZ z%~D7vcczq|^Q%brtIJHSduspy;zpph>n-DTGSfFZ#Eo(yEwNPqpNJ~XbimhDt&P>S zCt_YDni?=uWy*kJH+@mAs&Qe%xxEdwn+?{mq$a<8Z+n0m8Ka8L`q0zjxs#x_GT@to z?4=yBd%KOnbwI3XDoQd#R{BhfTvQ7sD`~h;UZSxj)mN$~MNiXT zR{ievUz;ru*)~I~HsdJyg?F&n`58|GH?h-3+VlbUx_gZinibZb^SVckP0_#%@oc zo+7KBHt*H~|DI&`p1o0BZ{m7BulJO_&ablSt@-Z|Ua0q^WZn1y6;}>I<9DxyG~)EA z{FO5p6!)|frDo7s+=zo9(*iaUlaALMG6f)s&9I8_-a2=w@jXxq4$&w8Ribrb2O)F{ z^nDga3Y5J3#fHMU)ZbNVL%H3VtO6bxz`uc)BNSssOV{vsPSMZ1%vdabv!Zv$CBX-^%z8eypsdk zF>Byi%iwrbaJG4j8WGM*Y?g^9LY@n%xloZ>6;O$mp11apxb5C(0$A)si*z&awIyT% z03SmmKAN>t|I@webLZ8Q@_$y~3+-ikGNXab_e#sTop+6TKHQS_@n<^1+7tKpxJr<> z!)}%yBCw_IKk)l|MsA_lqw#*g-iT;$80qC145ke#JcZ`tY-8D%eGADc(~#c{gVCG> z!SSAO6X|tt4SV+%l+-=lB^VzJn@C2au+eF~W8GiwW#YIqr^YDF_X$M!(e1$pQQ+T~ z$In*TMF4OQLhb$?IiZSSzdpd%``nHJS_ddSZEbEbsOf5QnM#ONjQoT zI@XRwcOpP}hq?T9yc3rzr$&T2QJ~X}!(y+8FRVa@0;JwMj%$cUK1o8h{Zyv&LvB zPa;}wH4XfssN3aM)PiBquA7|G&Lh?8qq%QxI-W}OlRJ~^WV{NAKk;pDr8vvyr|E9M z1G)0lU4|2>TEG5uqSbEuz6Sjh?Tr)gGh>-fQckXt-m#<|bc66~yI-ctR9H9>a;Dfh z*~t|{06_iHyE}82V=8YSwH1ncGEoI0Q;^QM$9ckF?>_Vi$N6hFUTG9V#c}g#gHPW6 zH?GzU!ynz(QcJ8ki&2w5-I&+P&5o|}v<-Xm>a(ZR&Q<4&f9d6(Zv}4Zi*bPVytiF% zimA`cAH*ysShS1)vwWni=)b(IX_r%1-d@R@yMI=^$tDK2Pbx~l^sbgPw|~B}|0VCX z&1F@Vb4kq`Kgly9RB$-KK!oTjS1Q*sZZ`6lATI$3O{ex)y<0VEk%@aZe009(fbm`u z+%q+?T4Jn3VzFJmAF+*-Jnm2eDk7wHA_a zMRGd!;zCQy(%yx)O16=*+Xcx-rMez2Lz~_@%pd7eGwy$WN7Je>qIRS_s+@a2h*{~D z`>(cR1e!>OK1-;V13~>M@Nf{!hohq)pM3+KX*Y+w8oqB-%@iC20P>`jDQ z&=zI65SuS>oS%IKv~tfhWY)IWwHf^CkXh(XK>~Xyu!Swjp!4cJk=cF6l@QJ|(1Srx zGYbGmg_vJJs}tcz$dB(I0JNve*gss2pNhSDWNxxF9QXvD0O}9KAUu09Y1Rw<#}||z zq7O+KZ<&s1lW(fYgKf8AOKXtIM~gZuCrQL3Qm?MY^aAQ8W9s)Fzpw;!xX>BLY745? zkwI0ycG27&?$6CAeTSA3I2enAH;=k1xI%tZ7QV?&+%=N?d~t(?aao7T6sB*TfYt^$F;OYHxKzzE&N)%>B-dc%}k)lFEJmAO3 zimUs!NvJR1tiE`IDwFMam&fTLG}G; zjHH+$sHl#`%#!qOR=SQSWueqoCIrL~C}|sCJBmjH{(*vNAQY|(#xo}hF;zjEsb2{HPsA5L4_*h!VXchY06Og zq=H7~o|ALUPWkh?iC1!`x9CQctcwl*%%FapT`^Q(t~irP}F99 zMX?qOpSYR!dq~Yn8q@O9G?)EMNMJ?7;05win5g(oakCZdxeSpjOU^a9F1||RvV@HC zvgv9O#hnX-<}iga3RHiYGiW6=R|m;4=M8K-)Tuc7ejpS{_|b(eCOAVE%r<`oF=uPA zm|Xqk31)V+L>Y+H$mQTQ48qx4ibCGphq>sta}d^f(_|MWhJn1DXYRumxz&-jU5~m%O;Y8 zx|avGU6?XSOa~Do4q?bvCVn?xS28lATEuWBZK4X1jBRq*P5!EMKv>*JNkF-*ZaCLb zy(|W~ypYU%u2R#jwD%xS{1rDHUrM_q{J?q=*C=r3*U$^eKH1qC5p&idJ*~}#Xx&$vH@u@s`I zHd+*r@(OXWjtm`5K$N5c8fNZelM(m-X(v2`P z>(rOEnIccv0Q35Y`c01vmXzR~6n?Y*=kmTV@s1 z(6Lgg565_HD;1b6cq4NLyeW5)7ARNuC)aKMtAdL=VuR9Ud_HVd^?&3*SocqC<1tEB zGlVKs^bYt7hPUte^-N=-L_8t_2R0%&O5vXY!Ym5exRmIi;GJdulomrk zUW2tKVan!ekUUws02^^f5UV7j_un;vP7Xp5-2~Q|*e9CQ)qCD0OzlejaFj;v5d4Tr zDl8i!RJOuKPA>|_`~qHkgEAb6RpBBSd)Zx6i=|P(PSJI0)^r9yd%!)BV7jyj0O1Ko zjKN>_x7*1ERqEMUGYYs zbaMh7`rtn<@@T8Ic)PvdH>*{_0V4c`lc=wB`NWP3H`9zgj+dkX*f}awzJUYxa?SQI zq(Ur`tCD%7K+qepesSWGu=QN_H=R~%set!jt++WmxecSN+_qqGl)8(A7hN05fWHd? zjdxP6ocA6@+~=o-bBzXySs;JBhU{2_dWOyR$Fk9ArrhDZa0@>F64oZ6W_%PscGEz( zOhZ**!)*`w;#&L-eM#lui0Uh5Y9m~a5^laj^tQ{2<;9uv?@WCSjn2)V4JJm&DcPlf<$%k2Q6 zp!EI~+MtLhaxhGRn{Ik`(GVZuP_9Lw3sM&qvnj{mZ(h)m67SPfPZ6o|i@FWIGz5dH zC1AzZUlj?qiKcLcanOs`{*^H8A}BDqyBUxJ(+plbmji!x9QtC$6d6w&>hbowsNYA2 zSN2cYG3wFc#0VJeEHT(7yaY+r5mIA;!tFphWuf*W%T|$y0S5;WsB?CRqXWJS2MFOV z!eS{TRPGF2XGRHmdWs7pz%&Rs^&_s@A?aB3JjTUdl=KT!NGQ%Ae&nAtB)Um0;B46& z^@29CbUJTtzcRUVsPwFw+&Kg%`|z`ugS2XsI2Tws~as%UbGmMdIZVEzaMq2hO6p0%=POF%5k{^Lz) zPU&cLQt&Mc3Ni`D@Uz?o;Z=f>$!Sg24A@zuJ;`PG7+I~qOgKkHY6m9v z(AmSTK@Ab~nQu4ew|<;FmV*_q_2#UO)z5a1L8A{A3vXot&V~f0faeFrzc5ts#81eL zIpKy-q6^7$QCu;J0``u0Q=a)O^BewswA%q8H+e4rQA&ZEblVFz5sw^w@XRwx^X(O{ zyD##nAf&xD4y;JbG?fVF@YA{83;f+%z(~uD9+%vvVFn^SMoakRt*>sG8zNkaXiXj~ z9#sfwCg6~%8V(0|3Y;lqQ$S4~(GfoX~-{p9WA~IbVkbOI1Uk!k# zy9Olrg}k8Xqldw*bc$53|De$35BpROy~rv(+A*hXG>PJX;zZ<%S{Q@l7?!hHWzu~GOUUI3%UxEnNCD1%X;y)S=}qQjl>P zTo^Uvbs3Z)tAim?ImicRAd20z(Nl6+=D7u>=JsGFcHQEWveJRqErti_)-I)=K7g{S z=q$R?Y_m+Mx=MHMl-@7GUm8(&O!vm58x;TM^o-ov)gZXI@v+3ru zAG&IDwCG>8P12A;Y=-6H&GX5$`vh=eeD6b+d8rqmNr7ne30febxM}U4Ui!5QAPyaj z^lmF6mFExUd$u!8429>u05}20FPY+U?LHAc98IGxKM4F-X_RgVJd&~WWAcD^#G7aS z1Cx+_*Ufu~Qy@64M}OLkeS~hln2(CIui3c$(B-!EGQ*6Iwxag8exS95@ZlEiooDX; zrKs_rSgeko^qYQnwh8&_?q@-L`5-0{3p^e!2^y&v5`r4eG4NcW*;3l(^oZvlu%$Wl zOZKheyCQtAxXdrm@B~Rg0DAEVSb>ESv+P%KsCl^veh--H*fVS^VeHeDecz= zNl(S{_Av6T5yS|6!*W7%)0^S zXwi&mLmM3AwM>z4H^Z7$p82Z19fw6|Fo?LexN_vLkc%E6JYZMbx_#)LC~&D{-Ok2c zH?~+4$c2DC1YF#Rv%bX4FMX%m9IstLRnZwZf=f@$gTGb+so59w*$f<8Fmw`xnF9W9 zu*9tG^SV)zp@X4){20X4m0gyAM!qzQ=9BCtn7*xe^|(HDGB>PGWBmKJUvuJe22s$GoMTmOa?qHU-9Rfy`i(v*#;*?0d=o0~DqCJB zSvF5A*n`y17GaKg)a4(bzug{|{DsDJ<9}w;HoFU67}6ywB$KD-Ffv+fFfW~< zn?cvMP{5-xcZnrln>5K^z1v2R_gM=C6*Okn7+h9W-&vO<;{s-~Af|OnyRK6QLOk-QQ%i02KCf#t>pYI! zy%%sBS*x7h&H^b%i04d#WVW+ah_@t>;}Furbh2lez#-LlwBr{%#Uu3Po?KNP^^AiI z-&^sl2fW`-Iq3e8Dw2Ctu{jiqA`v&s@LXa7AfrVkp$(Y`lHi}h{Fk(xK8$(8jN)hL ze(56(BEGh)yWD`F5+VmI)=WdJ_x$>8-j=<;wehi=j!l-Zlt^8^5`jJ$_iEDh-gzph zR2eegO_zCwhMI`FAL0R0%>sO-;JG~VqiV9Bb+7-_w6K$)#Wq=nDuQKU&-wv26S^f0 zAdV(PY(k(03}_J2PgG=!usTA8i)D3XS<|Bbe$DWbC!L3^-cbgj2CRfXR^rrgOWG_b zS_6%xi}SIVG=?^8!A$M5*n zTX?Rs&IzWehN$iLS!!w%@!_*#Yw=eNG@&_TQ!Kq=+e3>&pD{W5a$20g7AZ5IQ6dG1 ztOqP@OY+deQxS%HCkw>MlUr`jh9@}*J=xz*fu83ax}A>n`|h@T*D1S^b+o^}?T=lU zCn_k0=N`O@?3RGQYD^-k1@6`;){LOUDS#r4jU&?{ANCu`9@`Vl^e;5RtQcIx9==p6 zc>iht`DFV%VdeG7n{@>Gy;A!6Y;Hg~ty+2`^ob`d{ zgo?}2Wie&V+2>1XGF)BpXLBW>U_CiI2s*}oBHOu4)5nG7YPxyFJQAOS7*dbbrn_PM-e1F22x>R} z_pt1UXWQTYXU!!;BAm7xD2m4KXGMQJgCvbrGanfG0=MM%StvI|MqbZj@$RHF@huD0 zsFU@boK}+yG$D;fxrpr8{tMK8mbbr29*f4QrRYJ0LF(8e&RsDXmM3t>=i-jGnS8?eYXz`3fc5xx#D(H15T6 z`%pspTsHiX`oA`-3AUZuhg>0MB1#7 zhFTula6Az%pzWoQpRS{L--3r1_~6?@hcRxIyrPrsD`5;Edcpy*?t$=?AJUw}FM_VR z-+6H(=TVLQ+XJ-KTvmtD=T6IhM~$!=Yik7}i2cv~mk*y^%VQ`!ENssR`!d3QfMpDT z0IBQMy^?0N+PrD_P{!v_QwGep5p{(n-JLJ6?(x@k{vUfymnQMjmtNXPhf!$) zNCt_j|7LUT1DY;$2c%{W#V5NEBt-?;F96j$qJ{0uzA7FEDy+S-5`P zC|*baU4uwq3D7Rw3#9EhOJ=4H@6k808hx5Wqa*Y`!;PS4Kd7_A4HbXIua}%C6Nx!= zmW-xA>O!?)6QOUOYu^soCr-Yxs$;ETWh%K%MVIipbrD7uAg0jzfiSBFDvQr_r$jp^ z@kVH1b%iyOHYwu*Vh_ye7J&BMQCoG)SFi0xVw-B%;AVdJ@JZ`2{n$3sbWCM7nqr32 zNO}|!>Z?x2)W%+*g0yz%0=UoDtg@B9GlaT7OOa7V0c3mBP^|rOxHz%H51!EMjv_i zh-9f&fm~NK#WG}(U_vs)q3>nD0Uo`Hz>r-Bl-IFVAn?#jAxEELE7MonrdO>lLDY~8 z*=>G3lJT}$Ua^^}2Wl3a$R!aTpD(3jOX)bQ?vGqR+lj5x4OZR;y7V=AEuWkdWH|m} zD0Fu>&s-h22K0XBVp+h{&By1H!*;y4>sd6(#T>Q8)YFj=zF&TEL@Y@eGJ;^Jb?3;E zt;$O2uaCECQ-Ftizrs;v`1L6AcM>=!eBFyarYl{h0iG9R@KwY=y;vu2GNWD7)aD>Y ziw!V|ZfzQ)?jBtUw^Hz+V5Eqt7I8*VgP~6WXKw0m#s1gy-q7;skT#B?z~0rTnX}V@ zdv^ds5YmzuJmt$XSblp?P^}KyyZp|%&@460n>c6hSZ*q9Nv+^I?k^CQvM@w?Wjzsw z%UR(6bnUD@5SI0D0KOCrUnUWW(RG|5_hFpPNmP$RnA0crgw+0n98sId!%^m-fYtSmb{^X+O_75){sj?^2w>XrRR|krmOY+scFpoD>B80smM1D!r^TVtPGZQT9 zoJDFZ4|6-9N^Y}NZVigdp7^z%n_z$#w<32@9;B{Bne}~nA#77h0BC|K_DFHFdGauX zBb@cxMR3v{fz@&3&iLD6gW(ig;uknJ{wZxSMjC35#EO1L4?%rwIAD7t&W-1xDt#9R zktmCAN0Z|#2r>|_xk4mr%5#nmHK{0p9?gltfw7qrnCqvGs6Cf+_iIg9NXemZlwI~K zy7D?AETRkSuPB}kZP~Cxk(FG9bDgOqTp*i#;EL`M9(kBm zJwTsFNJs2Z5Uwz!@Cof<)Q_kXiC4~eKJgDOE|st{yeH$i=DL8Ci&e#b&k;OuoQRn!u0;}#cuyA2=fvT4jDn;+8wtL4b-`y4$+%xNJ`mW~t<0xN zmb2u;`+}S?Zb>5$tjN8>EI}WGX@cxd65-vRY*3XKLaL5Bs_-Zbwa1o4J^<6n^*x?EL7(=51(xmk5BG@x2 z85S<))_*YJ_HYhZJa%4l?}fu%D&UuKNd$ViZNOhKh$Ga{RaE0VPk>Xxhc>bH$ZZQt z%eyGmIAEgJ-JH=uaqXs(y7%IogbkRN=%N%~Sp{(d#X>4ML*dAHZz!~KS}?1b-s%yk zQgqlI2OZ2*fQSH2L0NIGK?tqV|D1a>2Kd&WE(7AQ1eU8xy|vtlB6+nZ=^BaI$}(tsX_2a|S>gSjVaB3MBcc7~B25QR){wz5#W$_a z-9N4m0K(@$kdddDh^WRv(Nr=-JlEYAN4BR+{VtGOSqwx1bkStu1hI@_euN2#rja3h zvMoEl{JIlAE-Lqph9ES9P-!5@l1e(9*gW6u!DY&Po5aUFRd&Er7&6O0SOlN3ufT>%_xJ`p<@m1WslF-N1RlVqK5ZlPL^AbaA2X(x9lq{YhD!ug$nZrP4e=rRJ;`aZJ}z&u+^ke}A7%)`KgBFQ15rXX|E`St zCuZE@_}<--4Z)>-Ho=!_><_{*R5#i#KG3XB&)@Y_NT0nSRW*1}ZdVldjdQ{6i@nH4 zIM^{sEQ*E-6V{@nJI>QAIyQ-ettpAZ`*CtBi{XT&3X0QFwpT}#*kq8>Pn}oWR<;(mGsjw)4fWpkM^qr z-ps_nuT>cxA5Z$bGDRj%8A~G@LOlf2V7kB#Q4Bga+>61$jF$M3h zzblLNT0`ms#gxI2Orz(K^P!Tj?||)^gez2` z?@6zPC%K8S(6ssGRkgAyN#CaHcjW-3W1~+93LU;DjlvxCFOSv!`xYU$2rAV`ajjCT z0iPEt6ElkJW$iOA53;E;Q2cFTC6ZTq@cTROF2~vEEyI0R=cDrf>}rYl(!gjosA7T+ zKlwaS9`R<)=H{;lY75kvi9gYBPUL+xg}6%&%3G%TmnUj%J8$UsN2Z44&FQF_&@3;0 z)HJd(F#cyyiZP_86laZo`q5DcbNitAezz+Sl~{rLvwD6O`!-9_-yR zuZ6t{CL9&vjj0EET|QE}*CIT*LPlYSkAYonbwd`c|FiHoulKD=+~#eKuH{VjKl+XT zOgB!2?#^UXc5wfU9SdE@_c9kW>#X`e1nyr%X#Gp%45xnxv9o$LYb(=sucTe3H2iFY zAk0Pu=yE%L_m$J|x4sYZpVN3*Z+ZJp8Wjj^dhW4a&Qka_VpO?m7Mu3`bW_r8(!bA- z>aEv|Viz$g_9D?Z=Ewj@sp??h*D`&ZwF9xc&(s5Vc+)h&5kkwKetW^sAvRm5?)=yJ zdEn>3i?h+^?Y>^WZu5Rfz4t@GowTY(9Kv1$EOw3q7C^oE_2BV;H~2~a52x-8r{4?3 z6_TO&i1z>1cy{Mk?iKv|-u8BV^X=Ikb>6=pUn~E8yF-J9egX-&5LIff-TMo}of5zS zNp9I2*Pt~4fF5NlMiF9*+aA64xn2S4!+{0j;NcwjNgN`HgE)snW^$1EIDtzXfl8d< zO^#p_PN?$ekMA#qf)zoX9KkW1@B&U`jU%#!6V>Agi#!#r6qvD~h>9$sOaswl2QYd{ z;-*#Nwn`FeSD~*kn0SGmLqQUPD44^7RB({gIVEgn6*hkfwy)|DY)Pte2~(t$WkQim zRgxX6l6#~i|9nZoB2a$xwf>Tl;_A{nU};sj^0Cv)pR3L|k+)C&R!Qv!a8=RWFXwUa zw+g(@qtgcX?jFT2FRRo};?6! z7NY1G;X)* zX!*ydmA%z9WD(T^kAgh+Ra+(17>lhe)>K&szaw^rI$n}=+{Bn~h4jVMWUR{V*HdQI zS1CSU_LfpTa_PnqsigyfH%0*!68Q2#y%nd(qyG7-cIV#ttF3yO-q;s@?65+ZtZmre zj(0~y)Pkhe1a7KgmP4#A;pNoAWc`){7%Tci?+*LC^;kRb_fXie9|6IFq2$!Upv;>Q z`QZRwO=e~#I5NySGIW2F^5L}`p*O3|9|b&l7HYSpdSq}dd`8Xp((vw`=lgJlW$WPMP9n$R&Z#G7s*5dDY^K!2 z^HSH2dZ~Fuu0=0b8}_c52Zs1Gsknz9PpEz$pY+}@NB#Vd+Ve71DMQsUyCLxlt6B7r zfJk*Gy$GY_8{XCU({AcE1Nh?(wI>bnr~cJuo~+A+E3UqLZzJWEX<6srtB?|?o^BYC zHd!0&7jm?-?p$y1nE{QQo9bB$8u>Zl&Zc`$HK>(QRRYwMvV8)?Y>%7t9%IW~W9wC4 z@CymcSy9ai)8Ac>+6l`RT+dmnyL3`B=s7;%NBFtt$Atj3msNp<=jsC2%KY#VOtlji z%j%29HoUwdtflHIf;W72lrC>+Ui-1(Sypuo-oO#js=7(Bm(r?MYpB+Xgjs4{x7DiQ zIXBeE)aLDLxDlvzGkjC-1PxBEg4^;9F*Go!;^w7>`pO2i_=eix#YQMY^&5Gps^Qin zt=pzbNF^E|0Rpfzz#0TT5d8CgdZ%%)do&STYH!*-Y)k~e6~V8T>VE@~qGAgrdYbQ! zX!~^5ubyc9lYO=QoP4L-Qse?06<$AkC2BP;swcBCELa87`XN2{je(EW+uI`@p8#zr z(~!$ho#)<}tlNp<0w^v>hxkKUTRs5T%lap05t!m+V z$4r_&LcQMiEZ1M`{McFaQF}=7RV$vhruO>g?bnetxXN3LqcN`+ZkO+VVsB}Tj@^El zugh(%gwzp@M}{8_kt`=5Hrqo1Pomw^Kc#5gUd?n~3)GwK9GRgLO+Vh!NC(wQc|ko8 zxY9us`C3HUZT3mMD7|GvtoW}x{FoJs?)H-MlZq&f%`%LVtv!bJ(-?m0VO8fXvbZ_;*CQA4?mUisR| zshRg*CRfY;g`VB_F=gX~?BCny7vX=T>pwPWk3Fv!JzV?b$q8S-V;i1TTU+X@|4x*O z#HwvJX~GS%U#Unw2>+V;{Ttoj1cm^$ z0h~OjxdPVdbI{8j5}kT=D4M%x+d9Dc2qq2-nx=qc z`4XD$Vda`(>k*P=1sFzkgEkX2qnVzshpo~{TJyBwo0CY5A(Lj3^)$)4d6@7E#GeU* z%_QmkiSLtg;Jh>%9@}A&%!N9>iD)0P+Wu%-3gHjN5(}Pop&>qkANMjX(jit{ zlC=v7nf40KvOm{GGUuB8l(ILx%CK5YFmW7yH^$WBa>c`FFf7=zuEQ#N*t8pBJur8cGj3CW2srZTgs2H6-&I672G@AZ`Rc z%{7hwocX#XtDJ;RGkuU5k;tpd**SH5rZe%i=E>!i*vC}Xxi2BRbZ6Jyxkc;ru<4CXH`(A~E+e(K^J_Z@}*V-4d%9 zvKk?oI}YXxn?D{P8F~*YlqOpT4D}Oedukwujys^C_KImt>t?1rmXDyJVZ8Yj5E4F( zkGvn!3$Lf_Jt(vs zoJ_>@jC33Ty&4`?B@?fHe;a1*2XO4oIsfJPJLNZam?ndO8m=i9Vr9+voys*@k2kcY zDL|O_5CFIB=7ZU^q4FrA|7u2X-{$xL_ifXJ_LnjDcH2jtFRSal0yQh_x{ghLI`uV0 zd(9N{E^Qp~IqIF>&YkG$!)ejB8_p!-uVY(wUTYHudULX~rS@<%O;U+=3bobBaIHIhq2DtmCKe>V=@ zy`;OZIyR#z!^&*SzvASln>Wh4V&3+g{bG7Z$ZVT3l$52g&{%rs*bq(W!_j%)_yBIf z>wkH2De<$9;x|r8-R@~!U@Mx;*Yw&RCvHft*lphbDH61!;D$ld(T%Esh_9y(L z|F2Ke_s)p#A2{9pWu$(;w*H^_gbyndEo~Y37I)U}HN|u-JpA2~y!Noef4^d%>3{3Z zy5#9h)DiRDpBoVIYRXXNLuto|(8^YwQp(K^9U`ux7=#H@1In_qDi1jNa+ya3y)r;B ziJaOhXvJ=D^(kyKC_UG7bAlGTXmMX5EwE;s~4m9TtY9br;; zLE}2xE2qA@vKpaq9L3^jCC~RbHlpXAAW>K4sLJx9j~(`P{&3JPXfZg%+_GHQ7xleCGUb6r)M?d=HsBh>I3%4s~tu5 z==$^ldop=gG@^C_3~(I?}Hw3;Qqq74cVb_TRrwZBJ=SJRVAD+zK-b`kUb4LRvLC zu=i@?k(tA;iC4@$_utTYR`FA1cfC|}^xN^u7?W4tW$srm^1?PwKI=8EN~xT+IozLr z#lt2jzhk}mP4Di;z1q9Gd!edvHX$C<6gfXX9nY_q{0>m55la*5D&T3R=FPmUSQ!&^v z`ILRX)oE|fn^C}UV+~H>Y*!D17Pn`Pn1Q0Yb*m>^RxKVYr%vL)0)lLFO$`wjZKj}J zlIuIo#;22z=!KN`7X>7+AgQED!BZb@*xh{{eNC368>xIK(a7R^_JOlThu#dpO|1{b z7&ZCH&NR1O<=u#h*f;C{;fUKk~#pRDoa)CsVR-U`GTbX!L(|H^C}s zr?!Q{94!w(xMdwi#uE{{JtT}J(m{7lNi-H41W2OkJm{KELXrurjIZ`(uC{qH%!nnFs)KF{RE{OtpCO)N*GkJOR<6F^L6>aH% zc~KM4n~5d&+a(&d>5>U$A{%S6o)%QzmCq-tO!gwR{vMjl7!D1mT9#I3Fw77`_=W4z0%XfG;(t{!Uc1rA&9@_!H6dFt7~6M z_Y%z6Qi2-q@#FK+yZ<0@kfcxfEKc z!X*t_tHX45exRz%6STCf1lmTJOp(~;h#3UZg-8h_07(O;;~R(Cy}`uRb2Bt(&9t2` z9k=ziq9(qq;57&~wjb!@JiKKK2|I+&PtX z9wusaO!nc7LTyL1{W3&_25A0pxoXeKw6NV%aGG;n0{1HmjwM5a7h7>#=6f~&d>1ua z7*hBa0pll2(qpC}@>$6f@X1B7Bu61=-}G~B50DLPo`~gM%*wUw6gI`-bVWFWnv-8F zQj)*Pc=$^1)0u|EP8TSAYaTcBA=9C94Ebk?_csJ{MNhGpK>O=Y8Y7zxQoBRM{eJI- z>S6NVj4I3f-ByHfPWwH5B$=5d|8Z(s;@y+YXIEWL-HbX>{^;eSw%9qS&auCjd;^}j zrC+?d7%DKj9Ohtp)%?*CFD$RmuOj=$=sxH7!AvRtaq#aGhVup?26vZxG_xk{1`Os( z|Ah6f&9>dT-Rft|@ked{IP}a5s-KS$rckR9}*}8sbd@iWlj-#P&d|6cs9CF#U7ADj+i!A2|~O<@cL7d+1A$XC-*DjX31;}8(z#B^xPt(hGo<~%E+0Vo{sFPjU%$uzeYr$J_X zRx*;9z~L!Fgv>#}$#XQwp9)=>=2W0);QKT4#ZBMKsb|mRf3Iuo2Vn?X;LLM0;RGDS zMUgu*+sc$>)4&Sm03ivHE3=*!g}N6%`0{IbOCdVFBPH+M89Ay;zueBa+{YD9*|3o_ zkv53-n*-ldJjYI>S6m1Fz`x)A&5l)AE6%VU|L#MIb^d2+JmMY(-A(3Hp;wC#Mo*~E zQg{WkliQWCC4;MF@y9ROerw(TfUfh&oa@VVyq!4(uQ~tsLnbqcXEXTUJ&$v$E2%(y~G=vyDyrHu&-T1K{G~I_Eskc|Wh$eaoO* zc+`>}z-XN!b4D4hR$^G8^kf4&7P&g{VO=ITPs?3>!V$&Ctd(K*HFl2sFZ*%FbW~`t zQr@$kg)8FY%4E0-C2k)Je}IoaEW_6+@%1c?V|Sz6!uTEApkf0bIG3mL68r;~r* zbN+{O(bmh>Hfqy0oz-Tz=vZaz&FUT=((%uxgtt+mW+^e* zy3XCG06OfafaDFtqK4n`Q&0es>nh2*eHP=~t)DWCS~>iOBiH*p=*$5Ez10}TauYLL2) z4^?sudWG0Fbx}kLjW$3bQoTv_v{-@4M8UXrXG4H8&M?6&V(N1=devVA1m!eBYZRuV z;O8pV*Kd|86YqA5d0#C2A6yji{Kx%GnkJ}|sYU_-cb|wa>joR7)H4iRVvbobPj^yi zYNZ@>1xVwmhVdM;t)DZSi*#phQk(ou##3n#6L6u9&D^kA=mc>6zN5Nr9yDPZU2m4h8D1rs<{>`oGoAHIK6FmvYmx{L0ToF-VcEWd6XPP z*sh@a(1kp|J|Cu?(k9*UCYrabEQgHP`p?rTnJ$%V#O`JE~PX@K#j zV@U)KzMo;TUJg9a^&imn+hoOdlKRxQ`PA*7cjR2sgGrzK+|rBt{T|6pMO~;CU7r=J z1hsCCP3NZ6T9?UG-FSKEKYy4*ZycYTZ^Q9HuM$wyn(7JD2oM~2_&{_d?djYTe?j`?kL5OR-z{fjqUeoJEmSCmGtt(;cJ; z-(#BaH{{=AaFoXZi@QM)Vk%>RoGz1lT_&8ah4%5r3L&Obp)$HxPubi!bBbS`)$1HSZG2!yFC9fajv8lb&n#LT z=#O5rf3EkY&F}=qk`w4A{o_N2GU$dr#ik<+^#$zM6l5eAO1L&`k_&7xlm~aYLjAEJ z!?7rmTt_iM!SEc!a+6L5j&u?ltuzf&PsKxC+#M{xJ~Dsb=6+B0x}35z_A_svSHXcx#*T>gco&r?O;yzcOrdE%ND4#XDuv-p zy#a-@#O>nti(R;A0PPCWhWtZS^=TIR= zasyRX39>oMV0k$mov6UK_iDP@39hXdM4b)Goe>=JlAsGDF4<6Wo=JlNi^hYIE?N-d zq#Xx*CpWz)#8ZG(9{Q%VE|Q9YycFV`I5rWUv@{`xGYtq*X+d46OcA_gqEwFqsX2|A zh(U`bn061Yu`>yfT4x5pKH=NQZ}Ec+mm5o#*avQ%&r|;w20rX*SD^5vP`BwlNRy}C zQ6!qbF?j(JKXAd7h|!1CEc~K12QNU=a?`>ImwFE)dWry{gWE&oQX2P_WUbR4)_PSnc+Hz9-_akyhl!B z)9n#VRjkh7-Maraf=8uPnZL`rK-7FhH|NV?UxoNt1fDvbR0-0|8St8Da{K}71#*ZW zrKDBEw=ZW}=NcAPI6hcy@?b(Uqsp@aFnJ)gB!X`pCV9D0i%U? zNqg(=75?tJQerQ-{K_)w6%*4Lu&3!1=7G?(obLC#8!SC+{L07E4uIW95AO^*`@A0W zZ$hRg?_>&LYXC&ph8yG{$!^n>&|v-`=gDN7#a2hMVu$_MLZTbCbi&jJJbSr3seLsi zA`>M1|5@*LIdI6t3ntgt`CFit`=(eStj<^ysRENj$7Uj=ZlP(;)=j=wDtd&tfEw(L zq0l_(=_Gka{qeznS+$Q}eLwj7@`Wg@2P&KsfAkvvYF zykh-wCS4=4K?9-M6(!Sv_6rrY9;*Xbys!4F=m)Ljz`%hJucuee z{Aui&sM!9@bck_s+bfJbdGMy+W$inITl?F0+`9Yg+RMLnxKKrImDK3jN;NUvWDq1A zECe?oM&pdJyH`6G@F3`~%Jk{)Yj6Cq=DcB(d5{i3=uI^l1fH&wzFN2gEe(A*Ye2vm zyHa@?gQ?aouB`Eyk(UAMp1lKeCLf6}HtEQ9)OOMJK(8YYND}p;AGZDC_{SwX>LZ$0 zeDAM)h|PJTQ+3VT4tab{Sa-}GT&Y;zoI*dnec(dMp$qNLj&$4iJjzS|hPwBBYsw+~ z1IC?8wWf(YA2&Hpt*h+*(@_+#)ttBF=gMs}zhdp^P_o;LFlNTnSBGjozho@XCIpzREij(+CqKS`A|d$hF6t|JvztDx*MHJ>`3C&oYi}7i&mGsFhq@bZ zu#bI-umZfkAJhRf zs?=Je8_w2o*}v|CIr6l-2vFD!v`ZU?zwCV|LeJP}*r^-hJdAuk*n4zIQSF7@e+Cx$ zLqK;xiO}?)E%5qGQUwmB#~GWxM-Zvy6}L>R14I~9XyG6o~@&8X?JSo?e;wV^uqdQSGH?M7SU|6e3chnKTaESvJuAD@UtT4v;o#uFAIj3y@J+QPnWAqL$z8TH#h zjtC*Ga@hZ{>n^`M9&W~o+%ph!j3g>uWfO!zFrjKQ4^aT(g@!^8U*i{TpaECw?4dd9$S*9vThm4PR2nD*adagoqHH!mi{;=K;&1nj8h3c{ zl1;3mP)G0n3NnuHxZ6{S>_aegw&XdgrB@sdU=uFIW6UFU?z=(MQiOwHG?4>M+3>y~ zV=5=qXVOm_0c?Q4`(7c1?v=iugWQB0XlWLEtr+EALl`_)=dPz^f8GI)0xNZ8WecRmx6l)fF7-4fz zrW55UWJ+Su44L^}?~b|KyS(bkCBoR@5R1KT2M1DdTBN2|a$>e@w%Bo&J=JHjnj%cZ zyskU+V#~*COOi~d->s(T_JRkP-OKdtf;%UymT zIsxbXOegQYnrW_#xX$2jN=+cZ4R>D^Z;kOkuZriPT~zxPIaRO`&Q8kyT_}XLi%)lo z9TcFZT%|}tdBm2Hb1%GuvXSFyboI6=v}v@9WK1da{GtrGx8r5y|XtPqW=f4vK>%_e=ZTTe2&1Ps&ju9)<&mNKw45ICr|xxVKGv9a)6t zonN3I)<8VCl!%kdOHCr9P+BaMRWwq)KwqfMW&RgSVX5=<{@O^QSSOJWo{U#OAzYNr zFu4#a73tKjFLW|Vg%#vp$U*>_<%Q#Q*zUo2Y=v1}+fYw0O`#!;r01R%dkYyE9} z>Z$SMVioiv4@?Pu51C8v{&nQFW<1wl();ugG{FO(VM9jK}J8w<@wZA#}rv-x4zVTId?n%`nS_(jr)FkVSsx63@g-UNV~WH zX}%nGk_olS6|j9r%j54y(reTqyov@bH{M&3bNK{eouG&MNme4Z@4K<~JAh_#)-5QX zq?}R-`W!a2?Os8cGQ1<`cR$lsv9WxL`d)C;?^D~}`gg!}YsIN_Bd4WrFweS09^CnL zA3-X&Q)y@5oH&uy(2HC7q0*{1O8-vP>8Go&-8vnUIzRsK$1krPN=6;lhMYV2SAQDg zn}4^c+jY&eZO_e4S)tS`yWyO?#NBWLUOkN93gwG}4MhYkGA==#v|J+U|4#s~}+tGNmrFpn=5%y8Xz z>E^%d{QmppaFyoPdY|yY(Z+<^lkl$gWBH1pV3Qqpu3tFXV{YN>&|_M%wS?`EDr<}9 z!K%ZC2Yf%w63fuXATBdBTp$R%rhYE0S3*-qlR)iqbF-cf2l0`Lb?ferp(d+u>J3$b zx?w`1=F){{SARUfK6m%t3T<}0?S@MwE5;@Z13YgY_?Yc2{&UCBdEu?Yf3lqx9a*s} z>DRfaj~~_@dJR=o*SbZ=>{?!mii3VcVCE}O0j;SNy<0!1B6Xrm&$uEhKbHJa4y@@0S9OM(sj{tk^Q_ovb#TwPI>SJ%ZFYQsXj?Xg{3FD=G%})XNa)Gqdvo47M&=ci}{GN`Kp{#vf?GPppy)}9BNT-;Lr|PNvf#BIl>;vt zf^K<`t7Fg}lH?2L3!`R=sY)O`AByhSrN(^HS@0qmRNq7~0MJV~pd}ezq=Z9QC~25L z#R6^Qr7=?1kpm=xYR0GkYz!<$ecoU#Zq zY)LNKaS2&kxSBeHteXlBeJv<85c#pQdQ=@Y-eKbJGy1we((|34NOCWUyb|{vu+cM@lV&;Si=%pHnlz>X zt$hK6<#N!`gWQo=G627s!~hX%fo)N|-=4gd?F=eZ~uz*3Tl{z@>tW1cC1k%C$?ER7bHR-fD~4TQQ_ zS|?Z>)bNgHh}M1k~_Z1%y0~K^;?Zt3OGJ^S_azxPB|-n)eyruO%8mJinC+;&aaf!PqjlF5Ivpk2U4s zE{iv@O*b~!YZ12h<}FFrEy3)=JypGFMXga-oSgWZ$@3u$-Rba_ujFsOT}i5 zkJZKY3R#9nhrA2I7a#pSu(x}y$R^BdL!-oonQakXX)DZ()!C3doaxDNd@-bPLg6ya z!z2tG@*LZe^2#V_PAg?jT@BHk<&(P9GkqE96IX)(l=x17|BXos5VlhSVZy z=l`h!^vz`OCmzX0kwE}3GfJX25~wLfjgqxq$Tdy?fs+6x^hst6;DMGL)a5}B6eJ$6 zbSfKqCn2@7NH17~J9JV97iA3Y)KmA*+fN+h6Q7{8)*RB=6|=2_tI;YYe&rwRHTPXF z!5vWsw#l&05g0teFqT8ZToNNmqmxVeD$!ub*V$>b(dv+aF7)d6*k47DD)%RZW{;gPPA-r%<|4a+w{6=#4 zQR`1zJzWm|6Pd)4mf>=N6AD`&I)LUtCxMd;2^|(nLr+L8Wcx{Wx;PbCLn$M2>A;m3 z^xsEtZ@X@g(q%grz{UcBEOgK@9br8@%_sWsfQJ)O+u6{OF4GRhMvVa4TszT0$?!o) zUjR6`1sKWEu;c;Y5N29xW=Y<@JO+FOXl;}vV}>-9a=bN*h6OYq<)C0LU_;jY!6BHF zV>P8PcNL&ag&r!8Uu2$m!__&Y)IxIr3l40rOc+i8VNyplG@Ttwk{D^VP< zpQE*33j9yk&{nyVPdC-zY^^hf(qxcT$Vv}IWl>m?UCG|Zk6IpYIjvhD(F(2Y`roN{ zWv3n`9c|rJd;8>RZG7uZ<5S<){`WCFr{;a@pemyEj!(+7E0>F})=}7}O>Hj^EF}-^ z5;pi=8E>KJ4>^h?7tC2prT%H*Uo(V=j*b?*d$O&YpQf;U}K;nE)J>?t96A9t%{T z$OPqUB%_);m85QIVi;w%qK8`=>g zZ)$o7YO%oJt7h%szU@lVJr0EZ3TVLa`I~?nm-vN_MYG5l02A^Rt=k4<=$Pb+`_^&=6Iss^11iDc5s7i5jSQntd2QB%K0|yK;&}8w>J`W(w z@Nsw<7&*LyK!$9jy)+e%pp@f&EUbHV`3kM<^rT+j#px>+OGF3n)DlPgj_y7^yR_XFT2 zr!{hKppuXKyNUkDj>w|x@19-L z=)Utw4k@ObKDnr`FO5&qp%(2Ml5R~E;44Z8b)_1gSsDx(@bwPHZ4AW8)we1!QYE=W z;-YRTNmbkK8Mb!yjjDl~_u@3Q2F5*Dj(XaB)R>&K0oidoV`u1a#9}GOs*NvVzRv&Mv>-k>yl}w$;~sv z>)(_`8bO}SSwkJ;Pd;}#o$4_DWIm{i01XO~oR4ZxRW~#7z1J4p-VFMyfHT$-xFaqG z)ipLPBT7wo`EdxxvhK~)cD+j`(gxdXxPh{Y2aJ$sMH<-4b@K;HS?)a2tWv`tF@=V3 zCBI(P3&u&O$G73t6Q25mEEIMn(8hh*(-~a-{^-}GGtW}$7MQMk{5;-l?8W0NBax^3 z5?Wu_|D749)V|o>ulo2>Wt#tSOy7L;`M0{4N1YUZQr1{4c{kD$e6^-~p6UCaA6IEe z14MFg5o3>SJrFJxbublrPN+109 zhIByUv&!H=<~`u$ZGt@@$H=?o+&A;Z3Im-p4Ur^ebTYGBk^7HJyFV9_nmrcmsxQM4WG=EH{h+ymq?E+e*F=MV38DDc>2_ncW18GH6F~#qy@LoJ}?G9ro$KF(3(n+pbjzcv?`u21rLFU za;iHEMcAi9klp(x$LYoxtK_6-@?T~^+y^?Tz1_}@<((!AqkblNDNdN3O;(=@HITLB z+%NPY*!2&%=q;&T;^_^OX$`|ui^cvWBxCA0FumsiSg36#SG@l807W!*8s}lp>Xwyj z+mG;|qTr%Z(|@P`9O??vVfvfPnl3*GATy(a(xiuVCL;c`6O+(2?ajkA;pyUrHZgSO9V`8$V7;C=F7p`-5_-=*2py#@Arty7+U zdwW|yu}X|}P_y8*)R=XO&I8W^1O zJDH^+w{;E&?6$W&m+9_$on}?e3^xhPITLL4alPy&;o0t(DEreR4;JmaeLm)aQ_;Hi zK4#JRIIZ_d?^+)O1$!hccBxn&pJKHCLPEoq3-(K5?_SxocmRhcdaOCJ>Bm@;HEU&U z{^(`vnry||V(hFrTX;zDAiKDl|7y4&hpyS3A<|}-VNF+Vm^gN&pV}(m(~j7;k+&>gnzQ0CN{VU6mkBtZc~$YJx%HYe-OO+7#H1UDI|(EfOYx(_%+pegTiyVS^@9mkXlokPMTM@Yv6v) zq&LQVn6UkgslF@ud151N@wZXAfVg<^Skd-*OIiT&g+~^tOMWLVi_!acdfa~MLgMPr z5&!JhWGz|t>sgr!{qITmud4Z@AB?_MZJjpjx%R)e9-0-8R@N`xx&23IV=84M!OzCf z`RVUBpsqvN%etKCiBx`T>sxBo5ZVE;UO)851u!wqWpvyl<)JLwHqF74$eS3LeeHsFX zwpOI?I3U!9yG;z@G4~XVBCXLvu%X(*_vk)2LKbM`L0+`fjwK4rXtbD>htQU|f_m{o zrm8nH!9*UYwFsWIMYEpz=?JfkeaCC4y`EBxn=r5oh4C94Jh>zI>eHpp+XgK3f8>SU zd7BmCe&g!$)MTU9nAAm^^R#z6WsNOV-p$E4KV{|GWwY?jzO#pqgs+)PI57C-?K^i_ z67B1Tlh;;#iLL!_?F#R^zZ^6XI{ZF4eKfI~x~UR@8A{;V`O0XWYR-Qq8TaCAbVb?& zy71rgc&r~8DyWpBRP>CcgxmMXgm_o%T^oE5M^|emuJM0VA>Q)#(4L0uT>Y752W z=RhuuHY}PKl8QWJDfE?w=&)`0`-OH@-aP-(9k1Skn-2rW+$ZF?5IOkm*k@Z+t?Erc zFb~Rq8dL`mLF{~%sPx`DDMP_btez4gl?cj!+=UAo8alwOg3Oe90Zs^4D{}hu7s|(h=bS$ci> z!J7NEt!WU_1+XY_AMNfmBg{_V;cXXR;pLHgDef2Nn*IL`REm}{N?T9yad7^+*`WMHJ{aM4#y?ieFcy8UtZRrla zI``k-;h@cxZ#1f^oe}-Kx)Ybv)ePsZl7zfQ)4v&EZuUbV#XPCS^HzFF(!(Ruc_-%m zUCS-;=`u|8N97=3yuEb9mIby9KQ)-{{of7{LpW;?CHbfKQcTKa0R!=cqL8<=O{GSamAW=IUuszuhyp_ z>M1e+X{7AOQ#sF3bPmJ;)}x1(J;#=Mirx4K$X2}2xThZGa*<7DQc3tNpu57aMxYCT zs1>)M$5F;)CI?_U*x>Y8z@8;Xtex^Ww=6hsD?eX?NP@W(a|M$B{>go-d<33Z_NChG z&ugs}zq;+ueK~mKxI$B1GUQ!E=3YEHbh_r z*w!$JE6dGsZ(E!-t0u}#@|d=I><;<5SfO6kpbqc{i+#bWNJ>8MikFJL9A-EFu%eTn z%mm>?FAUIR6?iE1rmHb(o453+qF3qJ(*Bx#EWT{Tq zoZYxZ_4lRX#F3H$exaTmF)Q^s>8tzJL=$H$%HWj<5=%a=Ea6H!uB&NFhDGZ@N`fKs zKS=1>T%0jfEFfdgtuiCg#pyWoZ*O0fu3FqchTjLUu!dj^uOfUUePbAO-WZS3fc{&B z$2JS&3^BHehBc*#QDU(`P$Zc`qDxCQW^`Rw?^p(~iAwp8%M}GPMOc>#XF>5IGI-{h z+tCi8bFfRAYvZ06*CYoHuA9U;<(IH#z^?h!j9j?$EcVj02(s6~(>>F}ELNA3aH~}O4GV4*1y#zH6 z>G^$S!GiKm)v4fRX)K}~a6*7kwnwZOV26n*0wl+`EA*)_s}!3)CwjLPmBK`8p2sgY z@g}P|)g3}re05126KPVXw3TWqAxfac*i7zDJyo_MPD4XlD8Lny6Zb4Rhu{UkA{=I~ zOX#wNlC=&*Vl$v4g};)E?0Jy0Iw~s>7gvUoGKx}~g(a&SECLx_HHlFDxGDYUnfP>1L z&H}Nq1ex5rz#9jVP{NjPqKsFXSU?nHD5AR)$umsdIguaI_j^l(bt0(xx2)_)XK;^S zWcp>#_#On!@fb}+`g;+q!shxiFrl<0qZw3BtDfbfI1+lIA4H9DWkxQ8yfT|PypyKLu&vK zO9tLY052VY_%uAR6ex(hv{M(k+Nr5-i_+;wBBjXPct8sg8Pl6_oO_ydVYAMSQB6dT zU7Xt?Qn!@fC70ncglPi<6(7Q)AR!bMeGm}BfcMcM1l0j=Rksf~9UyS;VKXr9H)NH0 z3uV{wsp-;lsyAYRxC^k!9CdXa040E`M$J!QM{nwhK6a!{g9|zjiRlVJKNZkq34gF6 zJbB2`T!ceiSYr`8XYRe<&GlGX#6iJj+|X&!)F7VRr*9QYs=q9ai>-d<{h$=kD;0Yx zKuz)kEFe^OUUryV$!mLXAn`J+nCF=&gcAYu4EaLZ9eDe~T|JlWD;^x62M02t2Di&b ztIP1s2wo}TDDT|zjpeLn*X)jUHa$}rhv4U$@AN!4vZ&5lOv+nhw8ZKfUR=kjd zcp~WK%px1kwF5jrzoRfofsUaILk)}V0W}8@&{e3#BgLB4W##;sTSovhMbSzwW;q+p zX(~e_P%<4OPc6wLV^;EuV-V?X%24?bKvINd(c5+=BC+)1-G9|nKDB_Za3*&sQdZ(J z2`^U^EgS$*r3-W80Ud=nb6%1D0IYrh)!d3_a0}yR(5dVq54v#2uM%xpA%9+VHm^91 zj>$1~(m_O#+@hn7Xe;JJ`y+QaN=P^3#xvIlw;2~TMajGwj84O&=R&MAMCR3?iX`Zm zZvxU-YX2Q%#s&5DZqS=imNPb(4$u~-mc!oGW{TeVCZD7(RF~q-c!)7;oQ{A^g%)N! z$Qpo1N?`;gX+8l8ltQlqoENUb>t=`sO(8o!MsahT!>c9wD1XCUWr2-<}x*!p_xa$jI%HN6T%Q zzTb2}^MP@5Hh44+ypK-l`F_h>Z?SqANLfdP4+F8j=oS1T%+Qs^rcPu&Y6}^wkul^N z6tAVZZ%TmW;|jG|?H^E&vpO|bdOU990wK-Cnn@-3>=IS1nmqps&k}I{d1Ke@!yjT6 zU2Z&>H-s_OSF>rf@y+1!YF}HILZdW1T#DL?!!BfF2g*v;sd?0$!j&woTppG;gxOkM zc-y1={k$qIOeKCt6TK9(QCVzxZedLr;+$CQ8ja1zVNL%PCnN#}HDLM3!2YPQJ%74U zqnK@pq5xMU#!%asS&15e3z{*@IVHK|>eMiiT(i84i$Z)wm84zYxsrJqk+&^(+uNy=xfs;I z`6ezBCBWw5(9QrVL4eKc5S{vd2n#%pRrIGiK3=uD3`WFLOtdE;4p$cEcfj8+kgRc7 z^}6O6HWRHVQqljGXf+GXS)v#Lb`=YI}`v4xUDo6?Wjuz*seUX3=yQh8_TCbXC1KkR`>^&y&WbMS46$i~UM~VAod{+RDUhs!P&3 zkVnzG?g>k>WUwCBJ7clya0HGLow63#b6;^3OSlN{=q~Q?u37 zU3Vm+BrQ2}4M3Bq_jU6(#;bD*kT?5IjbQIQiP&BV8g~dCa4=Ib9GWQ#><}4Cg~oI- zd#-28(N4X&nNR9TG*>-j2G?JldHe8$@f_r)1a-Nf)0?v5Vo^y5@L|gtlf)Oot%x%Y zK6q`$hb1B_%HDev`V2s>r$9RvY@2brO@=75yf^-W=1Cx9<`*9?5q9Q;CL*%l`Nc$% z!=Jx^%>Jr7Bk~zoOFAi>ClxyYB6G7m=D@Rt4Vz+~19-Zqc?x5|0W?_sSSh#^DM{r3 zEi`W(a)|(dF)YL_9J9r+txs=VyXX5h+{F0}c$K!iSTF-?ur{NlDD`b`j@yr;3lpT+ zm2?or0Z^sm#&g{7{+G^T?wyf6CSvg+j)cvWV`h6)_lkQ=_M=z0q zhyY0y745`mnWwSD2Aw<{IiQtQROhWvn*YaMimUUq&~!JfRZ2%X<6wFK1=6CTs|W*4 z&qB-*Pz6C0K%D+Yegj_Ie|TM-;y(=0h#JIBtmB?~`P(TJv3Z8CY z%E zQ$r!Uvw3O~hTA?|`@#j&V3bCtVax;g?xnoAN^|(zo+s%iH89Ca?G&8N=3)7l=(9WK z{r-V9lLK)!*v%)6!bVbap>JyI`G-NEdx6m)8EZ&o$`ME-5e zbU{h<5pFNpe@@CMHXqCo?Z?GjK%2OYTx!H~;n)(|iXBTsO_$^5?!zmn0it5Ec}dI36Ad*jEvMR_wwyZKZG5Wr+=G@Dv>{iahOa8Obir3=t?M0> zmW|I+w7HXe+-&2KVJM<>RkR*H!%8Ro7@_Y-gu{fDhVMjYtZG-sWO3kLE6n+Rtlxui z-qSR)sW)8V->z?vprX3o+s zrIl5u`c`cWTk4EYSXuD);3iJC_^a2qA)mvH`jcxua7HGqYZtI`9`B(7`*4(Vbx+^? zM_$$0XX24uEyM-R>?>SLcaOo6zlHFF=?j+EyglA&zTe=59C|k4DAY)%qfBPx z*Z`L3l+G>4ZopntPOvhxFY;>=o*@|bf`|DxS=B|_>UVPLTL5(-z_qe~XFu;*CO(M5 z*Vx?DLw(J>>AiWbVk0~Wn6Ux+D{Z3wH==oD_HEouQ6(<^wcS$xf$PUz`ZPv3JotAB zws>|=BmyMj3`6{Ak7;PjF6!G+G2~8HLH0qD6y+QS{UX@Cms#xM;l4C2-W}z9Gyp)e zIUsq6QZq(K_vg#IW6#w*PV1(%k~uN1N-%iH!gwr6>tVz!DY=Q0sm}y#6vEx|zhaO( zit#(&rI~zQWRU6JQ{R5h^p0t-y1oMYjxvZTo#uLX)y;SjcOm|I3uN8V&Dg=2|69T# ztsff3V3x2O^!!O1Stye$V^OZ#7{LUEkUj&u6e2uaO{2)*2N{M*ICvRn9~|Fn&P>K_ z+K61X(cZQ5<4L*3m8D{fVLCQ=6lM5$`Z|*#i&*kB4s(%$T@^xa)En@pbplth z+Zg1>jZx$;+(IwaUyJB+LueJJM;yeRIQ;1r@(Vy~&rxKU?^Fp+1lVHMb6~CnrRA3Z zI^ijSR66wpv!}tH_r@7r4*Km|`{>k4k5fs{?UqDY3H3g7Y46EEpm)tjbxwEDCZ+P6 zCLM4g^G=~{QNa1*i%;Vvy_TJzFrw2xu#hQVdy^ALxyVQNB!GkuCX;55J*eLu+Vts2 z-E6}wX=>{eM##FB|{fch)6Uox{ zzFl?V-`t*fIsjW;L9Be@&J8Knkp!x|?CnxHV>Fv+q9}kcf}(k` zG3U@Mf0GC1K$H<3rd~0qTWj(*fv|7Ssu4M0$TH}*+7j-9i`97#a5Nil_=de=sqvj$h_x7ftj*^*tzUd5OT*sF)v!hvWgV?z}j zzEloXwO747Xne(Rg>YN!cGTh+*Ri7ui%{~=GNo_&%#_7~U$(W z4;wx7o6TvD!hS(I2w*%Xr5mxk*pu}btY9b9S$)%9Qhf*FcGEh!97rFS2I~~2Gi(r= zQPK1=dVC{Ay^aH5A%_^I4!;{XR;v!-3^_k-5se{v6&En=40Kobuh|GHG8~qgp%aUY z3CQ2EzUx7#bnS|C;lWO;F5f1xmIF?WZSq;aOdK8zZKL|S2dD|v>Q5O}nS`xZKr+Nz zDkhGYVXcFREU_=EJBl9sVeawOwSApN21%Bj=qeG`k^{;(9`RK9p^1e7wm|_VEv2;b0Nc`m6!!l!=WO$YHn%nU1wtCR>)~P!93MYB zUgECyzk1*)IEg=X91(<@;z|+zZ2V^yhz;V5lp#2W7v$ZGKdgE2KDA}^Z!jD zuy78MyO0jMcX8em@kZqw#Dzl~=-QJShAai*{OkVvKaTFjuf_iV1Ne3A)V6l4RjXEA zt5lL&=cQq*be2-cc^xE#Aq?T#mP#r`Hz8RkMPU&_a;$>*2-iPNaH{#Q4)6YIJR6gzcymT^vj%=6h%@WdaYC4Dgb^7atZfm03yDz*# zn6U~M52Splu;O_kUFt93D@+5_hW$Fx%tCoH1lu2Mv0}@Ze5!9OB>;Fft4Lu@kuj&> zqdtS{{*fD0OzS&9n5M+eN@+F>&|?=iPlv#gHR-Hkg>R!=>kG@MQwUZ0Fa{RR=xO04CNUlg%d2}fPeVkprEB2~ zjDy^_*x$xM%|cPj)|PEEk8cnMdeq98G3uW)6$_S~Auy2Xtt}q?qEsR(&-u@I7{0My zF5oCuIqE?B3jbM@GW$<}Z$pcjQwYN$D0C9>YW1J)A!DupT`F4e@uPDcgp3Nsvb~JZ zsXz}j2y7hL8Zr-z#Ry(0Ld0v_Uc=c&A_^j;1kmZq1NWa>vr@45zhB5; zh^i}M9(9SBsBc~jEQru#qy{syUJ}y_>6HG}MF6Q7HhCzbr=xC~@I+1?t9IqHcc?(_ zXZSzs7)E^u?y$uRP{e7J(Nkin-||fO2TAPp*{1m?FRpt!Q-;PHk&6&gYS6q85qfz? z_>e`%x^P+{N2R9nrn6KcsF+oZ6G0Oos|V0;1w2AQJ=@nS(RL9|*KE{-kZR%A0SGxw z7E*`&^L~K=pQINlf_Nac7@($!I1@7A!RaSfi7Y3CCr<*W9>Xsl4Sc$Q4227g*?!in z!!fmwEyMlR4Y%PsgRMEIqc3l`b@Rim%bB=HA=yJnu7!m?CwGS<=w!Wz3M(ka&O(8= zSh*gn4VMKtDHXoyEhrqSC9KJ3uY;+v)5_q-gE2#vE)D9?YeN9eagj%tm*S-I(7 zn(2_;vR#Tb8B|}XKQsIdR@>aX-rq~=PfgCksG2F6e(%b_B3H!Osn&ai!g~r{$q?G4 zwLC0Qcn!*ZlCjMCxPvFLv(x;uzoT0bE$!nlE?@|>Jv4jJ;RPH>o5=OJ{mNwU;a;@S zPgw^I3s0m7@l%LNvZ3ijJjYhlFc3q{|7@NQvRli_@i!NC-)#QCwb^Rz{*n-jU=x)> z&4!{aGpBu%yL(`raB{NdFdm2EqYC#%zdXbtfDe-+{ak~wUK&j89433bxqp>EeM;90 z;M5Kje-D=bjH%!N2ZWmC#|yx^qC%-HCp2AXPi*Pm?a#I;&DZc$m|wQ7RHCP|$~-g$#uje#;5=Mu3z$0ST0D8pvtQ2lJSk)ZgGRw3 zhN?)JC>!PmFd{)}>vG~bVCkvt%!ddu|2gbn$SC}G=_TN-Tu6%r>HUYWIFT_<#&c7f zNM$DZ5@V0=%ggbiT_Q%nKSY*{)wB7Xg%^wWbwUL<*9B$N3K>F?aWKdz67EG?MJb|$ zqmqO@GS;_AxK_v%s`U-kdEXw2UrMNnB4%pe>LT>BgOpe`oj8`ACZc_dF_wNO+7|2y zKw{5)H%aGZ#QwMJC9rRC%v$#=e`|r;PGExXcj6t1@n8%d5v~b(L`=L!R<`1bb{J;? zg17>fR203k`*fn(Ai2U?e+o9_;}+?Tx&05yka}l@Um8*e)~<`e)v&2g?KU z=fZ}bZs}(dJfrv^!*bTHAM=%|v4*=V{e4Oo9F!M7;4hwq6`&Sr!->>cbKY#nI|1){ zm&gMS$en^~T!?d;beR~2#o1rf((5LNx zLLB2JzG(Nc7@<5|ST*q2Mg?}*)uD{mgqNbaQxql z3riMFIcEi~zeO;X-hTG$ws-%c_rG$_>jgL7sF?IcE(K+j2ShO%vo{UhDbFT246Dm= z`a(5>e~(t&yrUmUz0#40Yh0+k)$+Anz32DJ^u}{BFFQ61yv@?~(SCQ0{aTm}|C0xo z8lWn?dhhkd(%X#{X6u>#Y3%2}?_u}$>;Ey_nby7bcl+T+wauS_LyZIGw~?AmPHc*Y zK*29|X2kg3-=k}MF!y#$%50)6?MaQGCP&bHe0EgU>_*<~+TuU`4??N0KvU&+=Y67$ zxBe``dvQBwv-u`sHXvA@Z|PiNZPT2ZZynW7 z{(k(r@AI!YuXYNxJCV;84A{5p4k z{|4Rn1l@m%{Zof@Q%C16-mcTyT-JK;|L^$zU$=C>TK50$(EX^nb8Fzve>SZ@?&|)2 z-LJ#8&Xr+F#vW3JF3#_OzNuI06eB+1pyBkz^-^X+V6M53^@Nt07@ThrGK)3+i>8Y< zZRxet9|lR`C*0RPuHR+2HsZAJuJ7M|7$!%ac8oHntjiw{s&Jfbym5D`rn_QBxtr(u z?e9WLm*3d&?@yzY*t&$SW1f4AFFZYGLt4M_)Hlb+4Jpw#jT(-A#@-U&7WYqJ@%ihML${>duRqH35D}Mi#I|Qm-gf9yCp7TnMQujqb5VufQP@btlaHN|r{zlAm%cm4+9^hsW`!Sq^fD=DOq)EVyiUJAL70gG!F;UAJC=VXueh&EBgnXAWJS=l#HNVehPujfM++zqZhCyPitB z?CE1u?tagYI-3<`a(wx~^r6%l=cBCl;$p%>zlO3NgnK@Jc>9&@?p%TKJ9$iF$bV`5 z1DuzXhk+3*_ZmHpUGvAWXX(bF>}k^J zy~n!AETLFNR^B##mU4CbC5+J#t@S~p+ULiHxAuBUq7Japdh(9v8=uIiouRHy_=;e= z;x!k8k+NuR4FK*if|CPw&l8x8q#H$K#U2o%U{a`UX+V7TG?E{-gfsOP#=D7&dQMX; ziJ)6^T~)EyR3-6B*o+#0;N=u&o0aQQqu*1o<$LN#$=<$W{plW4!h*Dky3CS_f@}7L z`mcJsKpSA)tAorrFHXEIO^twaw@mm{e!DX}`OIf`YTrCGZ9DV2Xqq}>5E*f>SkOP| zGdHSjCbzyncp_t#VF@FOZ^jMXUGI!hL6)DznN(a7D9h65CyKFp>+|t$!6N*U8kkh1 z&2T|qRU>tfzwxF>S&d9dNP)1d?@vIxaV>$6C^YyhI*{04V|ky^YBC7mjbb+})e+B_ zbP5UVA~9+8l-xL3ER-cG2@9t%?2B3~ldp7T0wT^G2F?&C$`(z<>LvFFy1>BxdHr#W z0PzLlLqtCbZ5Va;C+Rh5O;U{H>ZytC+4+Rx%i1<0!ZON64G z%J&E^P#LjX5YHOP@0jJnl~V)&P7DOjI`SrOor4@li6vnJfhR>S_%8RXR3Ru|TYwF>hOvVc#Rpam<-?~)*^hyvQK)IN&U37Di|Pr4+qJi7fp~Y*A)||KMEUKK<0<7y+on)qfv;L0I zwoQDr&}C&>7{7(7XVG1Dv7YZJlfL;OgqbW1pj@4dV1$oZXgkx1JM<1o(rqmE`ls+w z@y3P{UP|!{dU=*hzrFG*%dQ&0e$yV_e$uAy3*6zr*X7G7JcOYwI_vwQlq&6X#$e+7 zUv|emz-ci#RpaY0`K0-VU}OtRjN6GQEFLK{eFr923e(cDO2)<2OJ>k_K2&3x z)*v6^gNIX7Y%JGO&nhp!S*-i(9mr081J8v)@;4EQr4$-%G3;GOkg2u9ALeQb@)k<` zI72D(C>#~s+cwtFp~CT+KIBDngqJTq$_Vym|wC@|MCl$%P zV^(Cx6k}UU3{T}wnY#h2%^sLG!#EBEMjRJ|EPk77u}U*&+oqOYeG}xSS|aTnW3q^_ zQ_f@Gz1uQ`qe&~3d%k-W8iMnVA=mvPl6=-!_zYS!z1vQNW3X@c&Xk4 zHvmjx$gw%{x<^Dg#!h=UrZd6v9AAh*^7EupXMia6dzpB>f%ji-kGJQQhB*tHFw!{l zFVbzrZ_!EW`Tl!|$xEnzCxP*1EZe>a)evB+v_FBS?*KboG|6+s3Blu8^?J`TtbNv) zy`CP#z^C+YJ$_v`OsW=U7z(riIZ?CGF~rkz$;`Oa#@)k&@$~4^uA5r6Zn};I)F67B zN>dW>25fcWp$mZ~8y=Toec&rAmnkmBe_XiGLcRW_Yxe%yn;5hY;{IYwLd1$ugKU1_ zv%_i(Mk}fv(%!@+N9K;5ZGI8ow-fXI`8FKP)r`Vdiq8!^|9lq9m~m(lZ^_8(8NwJ! zmZW>tFC`lgAtMJofl{P*V6#Mf-0|oAu0=0)Ke^L^R{Gi})~()?$Y~*Xt>r0q(Bf|Y z6JUSkkB)J z>U~xA_9wdggK7YXJ1h-Pz}2q+c}0||B63rYIQ#(FX{rF1&z&^h+}EgY*&`wyIRrTz z-uwcr?4!57;u^&Zf%V*V3rDaOmBeK=3SpItV{YmyI?i9^Z6|!VSdDJEmh!d4iPSOJ$faYVju>^=S|baU|!#CFEw!N9>r{f`Bn&1hVBzmKU@sNsxEzC zM5exZHS}164eT%6@-saXV^mJFG`chPER>PAI3ZQ;pT z0N4Zp*Eaxn?s9U3WPCG*4OuuiSs*I?-crtBDQmG1NRBI81>!uAl=G$AbaU2TJR5M~ zCr+4O#$6GJo6BT9u>PJBp$;v;6eFy~Y65Eld>@${eH>uH zpd)?+lh$aOI?eOxxseY^6GEBtCt$H<~#|;-_K-(n5 z&|rhdBhOh}=P=Rr0q(!&FT5H~_qdBqoTIW?a@5nu4||Mc>pwsU{Q}x)Y>&!KZwt-O za?QmZ7CYR{c4XOYX6j`g*4uvhcQe=YrjrFvwwf(8{*`3DN;cuKVUS=A5@aqfWhM@4 zgHg@Vl6N+$BNNxY*g9%(x(e=<0W~|YlqHShXyOcMnj@*A>w@>}th;y9-dY*+ID$hB zuSR-om4t7IfnBLl57)AXYs^*~U`7Z>Hn{$pv?|A(T3iF{QqNYDHa5X~=G3Aw1ZG(^ z&B2?(Lmz|;zS?t^=jnRcb2Tf_yA10D2hP2Ww^Dl9D{23YVyDEGKMBEcZ!H{T*tCd- z^abNt5%#auoO+o{+*_+-AZ`vJsR#`1$ocvgY$sY{l9b+xa7)$yZvEwU zUgKRE9x)^fu?$H6n&Hd5kO9D>iLu@56UIZcIX6^Oi zR}9RrT06UN&ALA{!6OX*gr|}C_+J9MP-y&q0ofih`fg{Q1F-+H2*4ZtrqYFLjVznM zzJ^SoLrtfT+H6*`>f;!_apv)A%0sP{lSX@4))=a$Z0+Va$B_>nj29)(4W~^ki-`&Q z2Q7dE+Vx?)l#AlVAheC+tYmGjf}D`VMT?bj@Ym6P`WZ_#<)JuwD$cEO0~Nrd{9H{o@Cw!`lQ^fUP`m?!3~H z9mzk+Hm&nWTagiH1+P184DIrg=vi;I`ftH_U8~~60Z+ECUJ}+;3`)9ellR{CHG~-$yba+hd)^f`MXtu26^>e67&4#-Jzp?83E9 zOStio=}cI**_xrR1Y!pjuGR!o_<-J9dvSxc9eiNJl(m}>96E5|hr5%L1|Y*=jufsc zf(?~~Su)ehBW7D=6d{ChuEYcgS&dv~xVIeb0e(|K)-dxg*CZA>Sr%wo0g{cCawF^B z%Um-tdDEj~iR;SH8;4z1N@&cq_kzH7K0^p`Q4soKoQdugbKP;oJOz9!ZAS$Ifbs*H z0~<7PSt*O{h2m9r;>_zuOh-RkXS7qAMp%?VdyW|Jx?$~1`X|oEX45)@Vzqe_*Q`;q zwF#xCHR%7enm&4#2p=|V1BpOe_26s1XnQ4x?($Y zhoL+n9@;kp!P=@VP)GZ6DZ3UbQrxUQc(Qustg|z$D}pqp6EcI68&F24!Feu|CA=t= z)>7rA;LjSHvWuUSF7Cfs`gzu+{U`S(sK^!EYc#Wymu#>Xg`B^r;wvT|QBqZz?5Z^ckE~qJKTLfqwRbcLHu1 zr(dMUH?8F=etkQ+-{PiZwA9eyB-E%&p^jM7i3aDE89ZUskO*ODzEEuq?moKKG=V zWuF=-8@kkS3Ni+WWuS$_2myxl9{+;Y-)bTWYCqq+WC|Hbx#VLfAhDg%jvClu_+s17 zGrAj>D$QCIdypuB%2UYDh)m_`UwgY*AKB&f*iESHrb9amhXG@L z;i_m9n(ehIhP)6I;m@RQ#h@q6BkbPI5QS>y<^@Gu?_K$6`ozz&oh(`}RcUn8Uv4FR zrlV9ftYhwE?0tqH78kkYRY5@Eu#?Nu>8xu21|be`%_5+#{lgg*-2egUR{Zv|9|KDo z*6!g1;aA?jYjTiz`T$dDq_D?WL-^s+8-usFTh~6I!WiT+DAsrJ8ZcCC z;mqwqb9`I=>03HA66D1&>U+F0AL1(koN_06;RQEBTRTRWz~%yU{vH2D(X|5T;fySe z?X6qV!~s)@sgg2V~O*+3#<%?3*;0wsiuC$ti=t)Z3kKVod z?;Fq#WdD^JRYRcUlcLZXJ+zuxt3j5`MK{o;=k9i1dUz* zmwilRLX+XhS&r6XOoh;>=P!Ldbp21`OAnY9!!Eb6mcIQf z1KHe9S7nXoxn{*8^HBhDOdOAt1yrTnKMA_0D-|s?-QVq5;%0+O`_%z|5*V)5@~Hdk zAF}@mFREsfJOX+k>#WKpT{-HZgm_WMshPv4Z3;%t-a9jAMh>sA_k_Dx$@*QaylaZJ zt184F#WjmMu*WWn4l<3{)67V70#Y>zOKWg5f(p%!*^XjE`pVYr$=tMTI3>~T8}4Vc zKh8qiGh4~(89e7i^r-$_B^4G#sgJ!rGRCb8^1A=(X2M$UA)doxn^2zU-0`{`Z}!B> zAD;`|AsgGtP~#bS2gx~xSy{LZCv+iJgemgNV8uW6$?ej;qGztnxzQ(jZ|j?QpL8=c z&%i#4L=pX{#-gY1Qx&@i3;|GwNveIkq|(AjXvM53d>CnC?DY8W15sAM1%`Xi^uz$w zGMrJ-{ZQAo;<5lj>7S#B$^C#)*t*eaTQ&<1s|-kL$~MGE|4TCw+wj~2p_c`mz00*t z-)@-h8XK?g-kj5n!!Tux&=uQG9DVBg)T7R9f3V%TS4YCV-n}{+894oQVa(!num6di zq*YnJf9~Ir&D+6_{c%uf%-_1p0R^A zfIk73B6|27`2r_wa=#iAsjE%sV=Q)!Z1J5aJ`&;cw)JbSt;x4<{nZtI6>9MC;MaQ& zM#TPg1U&@OqGl?K5A@Oq4skSaCE$aG|y< zNzY`szh~~JoR+@1PXgl9xNK7>cXlP`=mx>(iiOx9okL`R$Gc-KG+*^FPrbmiA-azg zPPcR`VYrbU0K=kKy@DzRg?~g~ZY2;wh0zN*i zXue=`K#Xh}dqZ)a*CXlgdFj7@RASFosoZI^CZ*WUTZp5$%PaLpcHeXliVq^S)FDK9a!=mPPfka%LClA|@BvlO(bij&*4o_JMJb2- z1fL51u=m48VLI(QZBt!>#YR9D>L!#$2fyWfC^DQD%&Up6bTqHsYE&CrRb&{vfH}&0 zCg>3z)G-Agt<+}5zS(Vg36sgwOa}ctC#KOVW#y!Xr?A7>s9Z_^G;<5|k1i~%v^JZ} z3JxzbINsT6H*3<)Fst1+LVfhofpa!*&xsfr`4nlY-x@|-2o)Bm$28g)`x515p7|Df zSo8kHm*Wj5LFd59j2SE9sMoVH-TN2b5hv@8(n0~O z*PtssOe%E6@zQ;J3P{rgT%%8LrbjHVh6aoA%foSk^GsRxIx!ygSgmP#1gn%uT*DS3 zF-g@H(>lfyrw5CqOnQn^MAB&v2tC)gmthPWirI4_^v&CHJ9y@vN zMIX}AyJ|zblKIEsn%${uH<<;e^4IeX`F=?*t44A^K0WecVHnc7w z&LAIL+FEW%sAi|LG+N)^%=r5hbhw%l=L$HC7i5EJny5fx z5TE?xFnL9{MT1y~VQ6IWt>r8m)noTNUR~1SF(!eJ9(EXqCFx?!cUE&!p#;uyfD5jQ zWkLZXchO1&AUX(*x+in(ZIzh$XVG*p35-qAu)f6xU2Xn(c&7vd5+ji>V(8e~yct-# zPBkuVVvMDIPcWGZBBZK3Y@8qvrs>yX4}%M{ zf;=rF>%4q4zye{A$0jIQ?>EVsX1Wz0D0*b;Uttp{ImV!=09>oaTo>HxGZ$F6D<**` zTP$?a{Y+jIS0hetG=>=iaWvzYnd_tPo_l1>0QsF`Rh?^c2o6wHLb15dq?$1My%0P* zkYK(VUHhl?6LzHelcq9ON*nV7F(Et2{pnkzisvDRv+!B)IWBP)IKBV5?f8s_{o#s>Y5e~{ zj#7SgzQ*87R-k@j9&E(0QPGLJk3fa6J_T!;UHu}50|RIxsfCgUV9SPW_39zBnAbuu zZ??<~0laVD2GIAp1cS6O3sD22H%AFsCRw;i65cGwTG9jI@J&By3v?0mp<5$`{ zC61zD7z*`JuX1F7SvhJ58cSy?ff!@l8!=6!1)S6*Eus%Hw%Dqsd-G;264ORt49Ej; z5J2dc9TNj*U;ht!+j|8xf^d_{^?N`RMAXp{B^D2DBO@CPM2<`_#7F`VBC+B9VWZz@ zDf#wP(%gP*> z=CR~|y=-hGq-SdYV-;uuS$&2m_DT@sn9MoQadV=_CkrB zRs_~D=?@^?A#)Xa2ck3_rOKWU@u+(PFcfWp83dZcIhj?&)#C{#&(04Ww0&Pm$+s`? zo&+2vm8XwW`$Jkf>e^UeeCARUR_dczx+lG0F$_M4I?1t#lF~NwbXX?+B^zO5%K4UD4UB zY?>&&p(VR2GCFJ><~+3G&ekMTVg4Yr?p81z2AuTziJushnHpfY4h+?jA3(G*V5S;J zh&T1*Pn-4@BwA&ji167u2GIQ(F2*o$!Ba;j{tLd&q8E!z@o2`_)#Z~7i}YV@OIBI! ziYK7N>e6xBJS_cf|JEy2U?3wr<_hq~h<3HVbGA;kH7{+Ul9l&@N9*tF{4BS(GD)ocv36ZsT|mVpQT_L9eH zjF(y6SC(>q(sKH@nnmvU8j0Vu8?c!ow-(uMI!2r5$65YsNEQ=|qp;sj*oP^p@3e$n zJ|W*CDKAY+#@5kZpAdhNV9}jcS+l+t?Mxp5PKeJm@@kF`o!OrbBx+HD4XYciiG6j# zQJH$yw9de{j&!IODSKkISvfPBoshmjqx4@H$L> z(gA}cS1I}K(_-&Iy9?jxcuA6l3iJ`X965Fx>Rfw*P0^EFqG+&dT5xaHVLBLWg~!zq zm^vh>)*%;0cvnXm=>0}LLYltv7tZ-T=QXU%yGB6w$tIN5-4I^kS<33R2+(>D!upjG zautK76B8FigIBe*a$cF07$hiHI_w5=@?B=0H}LPE4f4v%7nYA2XV3o0sAwo3I+qOr z6@EYIZ%rF2g`0wJ5pB1{|!t_LQeP; zY)K?zo>c27PaR^k{TM_Jpmyli^EbDj&xkj{R39U!-Q4y}oWu=2EPoG7RUgj!X_7s3 zWwH#MC3X>Ttq_G_4Jg-%aVX>H6ZG*Pr>e+(14rH z13$YjnTjv0YDZT7x_T-bND(%Bs8r1b711XT8T+;;u4qqkN-zWp?;}|>H1QkJ`B;aY znsz8LTXvaSeTt?69m3XZ_Mq2DkpqoBvuC~U+`#2LS^3; zWz7yFn|$0Jh&;rj4@jz6=Vf-0w6OCxp*8f9#SH`@DSBBY6Tz6R z(f3gSSO~C(sjJ&hctf7VY13{_=?zK|KO_31-)DP&HKwlD$Ld)(EtIj`rf6|k-wvHq8cI_FLA{n zsh?DnL%2BcaQa5oXC-yZISa9XVyApGV-mn@X)l{SRIzesZX6gUc9{c|?2E!m1ec$C zbp%d0{I{bcx*ph_wmIgS{oW(s+H1hkPMY|;F6uNyzorHEZv{}@@};);_+^FuS9IAo zJ;uNOTylNcV~3GT5KCxFe1Xfx8%~@B7HwJfNtqFU zKVx&l-CYYoI zBH(Zc&%*p!lBEQdvxAU(TWbsDe#DlN; z=ea@>XL<$q2MvMG&!ZBWyMb@bG&uv~>Nh3U0C*yDf07V_eW0PO-DP;sm`MTfo8Mu7ifXrr zY0u!}vOhs1rnoblA~OjFrDmI|27k^HJqHONl+>9*V4vkn%d%}F`Ls;Q`;FGeQY~*i zn#qA6jE#nScID^q`#v*I0XvuI&y4iIYlgJYDcb#)L>?HpgM?86WUc*T7Ur0ijzFK* z>p9pbhwQ`Xf}>%Vju1(XhV}^EtrP>SNb>joWBJ;jcS$@Oq5&D#X14*aOzGJXQO@01E`C8kpTWwF_Ka*(B|y;vkfV40?a8YbeuN(p z>5?A=2F5$`jYa8$XTm#k>UI=a1{}ZH#771ZfOxdpgnc$c<+# z15gpBeKEgGJA%b*{F)lvFIFSfJI}@P`?X)<2~7E$y$`k+f*1o&uis-g=UZ0l5h;;b zo`;{131&2hvW`Q@Tq;GL;@tttMyq>h8S0}F_mbYW!{df!x&sUxRy1Q9a)N@+lWhV zaTg!#I5sI)#?6_pzV(Lc{NZ6n#vnzKQQ~Nv^&So!Ha&~iv*yW+c9%VEZjTxW(X()u zTybDy)ybG_=E4sbY^^O{2b3g7O6oHd9!hbsbk-rVj2+|yI$}}}zO{&doLrW-{?)qI zm_KZ#+IX`XP#oD@5nwYz5kb_mj3{E45e@r3%vTUoi&V`s&hyU|TQ~>P!H|;{l@y1@ z>T;vS^5Dx#T$w|MxkYO&Dx^ve>g>%0>gorl%%C?P&a5A0c2?q3l_{oPjSbC|FsTeT z^nzU-x7@~IEKvY0*8EUl;6E7mmcmaP z^ywj=w`Vfv?0#2O)wKJ=rJW?ut87b$Me6X6pyGvp4?+rj;N+W=DN`OnW+`QHiAs5B z=o{X~#;!MKXkHSHZAwzVj=sN9lDD%c4*FW!I%`yvpVAo5dCSI#tn(F8WQ;Z9t|w^R zLe%f6vR-3$A9Rq>*ASK1y(B-MK`y%~R*b7+bolnW=53W;GPEtC@273a-LJAqOVlTH z_giCTWnnEpI0X3|nVfAEOEO6`&*b;1PrASwe~43n64Ht|;sVZyL(t5Vlk~uFXtrUs z%+ZoBuZ$-E8KbmQdvR#_BAHapwj zd^AgeWnBS6;c~O5{7k`L*WCXOU_j_HLM;Z{QW*neQ>_@RC^+nBi)=myXSye8;Qh7` zv2VPDuPY-STGuc}t*<8w?!o|QHY>J65SwqQ z&jF0TI<&QTXq|U+T1?$1EM4~H19A?I9GD(tfSSG1+7W9#b{qf2NbnX|bcA^bU=Vg? zZx4=A$i~GYj__bgqrzg0t@l*21uHhN1(ygj`K#U>F=LJKMui=|s<;E`1{D~npD=q6 zx^u_@BDN6U`3P@zxCyGgO(TIB^#!^Ab|r8gbhf*{M;=4py!3|_=0 zP)`>qZlXErYN4K>NlIJJu(2!zL>;YhhavGi$I7fs=buxjsJ~(M%NcsX_qjT~vq=E1 zvbyy7izr%H4v=Ks8svu4++bZ)Ih%^rzM8o9HcEo!F-WxgZyjv0s*1zhuIJJ{)JK(w z%&Zo1`9;9B{SF#d^zU|?L&9aRrXSulsMwgY#&`M9yZ@AKN{7Ht`hpO951#Dfk}*Y^F0c)wAyV)Ihq9~vJbUIH?h3j-VY+A{V99)=Wu zKifR(9EJyF%yfoGt8B+uQ9=YK_$G4N?Eo&y%9zH;FEgtjHJ&YnGo7>m*4BaDTHWSw zULvO*$O61O)18Z$Inje7glV||Ua2Iuo+by|cZZ@V}e}Y_XCqsVnV4NU{z!Pr4UXulf zlxJlyda?l?rQFboe~&2yvqXzTPR0+srE1fzt~H~47_CGeH{2bhK8ZO#+Ce-hcH)7by}((b?C z0E7Q9YY<9ysXjRv!~VVq6XtjX#NbMG1MQl5(;xE``mwFIZbZ(b>|0Wxmk%3U=Mi`T zTd-z_e_2(E1DVB1OnnH!%B1t$G789HY#H|6oB0I0$n0c(3py|R@0QF-LYZ+Q#$A)n zbGk?|AXZ_VU#IWd1(G2M!Aw61OiLa~;71|`t%Df7frMpihXF_9V4+1Jm*jlq5z0{o z%*a-ccng5#Oet&{Q$YC@7>9}YwHc;rZlEySc3Vvwk8f;5NG)TFwQ!;?3ZQH#YLQIw zuGJS|EM0E1BBjnECjc`q=Bep`7;_DkE8Kt<)9szVHX7ZLwtK&rJZvAKXN|I{6d2NH z{07mH15E5b;Iz(Oh$&iD(B*y4n#e}LK0|8)LkZ9vywVMT-GmslWv*F@pL53S?hNrA z6EIFB%&)-0P=Jvp4fox=3_rXNz*kpRUmS4*>-fA>3yU=TFVX4GOTo z8}}1$-#^;;{#WA@eWn}$d$++1)24?tb^l>!jA% zwLlGm55s^qw*5*ZGYqx!9^Bcr!TzHSfNMZNwtCA9M5ljH(|;T62e4CjFx7K+>Z0$E zUNs#8WJJmA1*fb?59hMd)u05vzwIEo=r&0J^yt%iH;9aX3-Ano(x@MXA<#qu&bD_3 z{q;#su$chhvF7xSoiIh)=|%o8A%Dx^mJ9smxBmVk%K^}#=|@PDoNa%%ChL8TXy;h- zhiwPDY6O942N@n}>v{wa0U%>`XLQ@5#J0t$^V+Wf`VH`o2e)D=wB?P~f1UyY+?=0q z!+xag1^@Og6k>elw;)PqZH zvsMnbullXWC;~R&0+%+zDYhM{t%cbR?c~&;wLsR#2K z=N+(ZNKYf>{O(vC)3q!u_(*zS!Ek40THDF`u2ZdD#SgnqO}Om(mTUg3OGydEj2}ot z(lHE9X-s!zV)xn9?yB_e>cZ}G#TQB%178s5oPXH;)D4K@>3K^kFR<>`+1|bEara6< zSjVkUkFdM1fY1@>=(WPTV}K0D2JlnxjfZz{zq;G>?d}~)_th0)NDnn3J?spndxK5S zJ7!l~YEMUcPiJ9ITYWc^l(&{cyIUXF)7ph{WPXL+D>)!j+S0BY3+G^ayJC7DCH6i} z?R}DZw_7m(g0NB{oYwlgt09%t;?eumDTv9FF+0O1y1Jip!sBoSR1G*iA7dF@arayA zU~M1+h!{!CdzctH!MQ$^ZrPS*Iq@)Ju(3~D(K|j8FthN`-Z` zYOJvTM{CEi{@!aL@&NQ~5!>JVDstq(f^)U^1}YZ(>bb|1SiWb0gqeA_AKde)2bjT8 z-wG|?r{CA~N6{pfwCa1z!6?hzD4PQUi#1VC&)+lEeaz)pfZW?9$5u2N;X}-iE_e=r zmci*l;DHduE75jWPw(i%g_zTp;Pd{c^)=Q+oYx@f!i^Hk5HcL z!T(WoFMcid{~y4wYsYJATU*CfYi;Ww>9EcR#kEcr#X6}7E0v;>B*|%qPEuK^B!_#Q z$e|=kH}Ty%M_7aqRzloi5qI3!Z@<6bdUQRmtIxI1=kVPzdRQW<)I*?8 z=#6#}JOrA>uKZk!vQYU>z81o5NFNC0#9!kVA@txQUx${tpF%CR{$FRD*gLuYY~wwv zo5Of0(v2-#V+mo~5P{8LkZYN-2CQY|`NJY-zp$4%k6y4rA3icZ()&gQ!VeIw+E0Iw zFiK$mKQg@W1)j`6`m&FFsJo}#7WNz=G-l`7D%SqU!?sR(ROQB(m<;rv6%#T z!4`S|$fTPs1m3uJQN)MKk8S^7_XRf2Kh^NcVf%15zKGmq#vjfJ^!Z3fS#4ug3$ax%X(cIlJ;SA_KAi%J4UIv0yH;_yavOodcPYmRK5w-1C6&5B}Dtw0w-9gif{cEkwZ zl>W;?y476HWItiLP1#EgyF2b|fpPM9cYKJ{#R2w;tGBo)Qp`M7SLD$Ktt zynMHm&?PjXt{(XBxtWKsG4FJRK-6_={o&^4H$IkX%xROHXEQ(6J1rpe;b#L60m`^g z|Hi~fQ^=CciRrB5;G3%M}6#w7iaZuY>Et$})LgG6?56sxe;4?`$wjF5Ft;g6Wo9|+WIg$({^ zN(}@Iso0N?IK4k^gg~LU28wR7^u9k#uZ;WN!L@ulNGS_gQa0@RHn5V2z_i7+@Pr46 z_x0(M>9Lbd`^8RN{&eyQyd~m9#c|TIGgYy#j|n!rU=m!CUKdR)^(=7HhD0B40+yXC zR^Ea<4C1r=Uxyyxx*r(gY*^<;jhwUGNja6i6ubd zBsplEuPur9B2lffYLRjPTmMZRUp#uAY`InsLEXmY)fwSaIV zM=nm*f6##N6M&)R-t;2mV*XLhKD}^NbdC(Lgt4gf4(M^+#lE{efhSvndKU zlM1D8XGW1i8kFa~AQ~GIc__qYZS@fKsaG@7ON#8dCq9@DHXaz?VzFV{Z&CMSvB&tM zr+Jz)=JyR8gf6x0-wH%k64FWyRs9fxnnxE0iAG2wPZuF$2vK!FY&*U#l@r5?*4(qL z)sK68UT$kCB9|tK%M83*Rp6tILXLgHbdkWM24!7Tien4imCudCL5mrLo5nI1AdJa= zSPz9U8?@%Vw_R8}c|vHxP4Q%iEoVw5t)DzGcx0;rDIVI}_K$fpW`Et&FruR(GRT5H zIQAz#BO$mDLRawIT_UP+E83PQ#ziBl{vhbqcVA)BSPL7(WZ~2Su@W<}_D|_t)iYxi z;+#R+gZ9TP#d}Q{0dHRviQd*%Erz2J@f}O(DugF*JA?bl2tvKPCCo__FA;#L!vI~8 z?4;cBPUAo5v-6zV04s^gm^|ZDgw*8;t;i`(HJ^VT_-r?*8f#m-_8z$Q)6A{a5&2Vy zn(vXJyK2T3o)6vI-uGDS)b;A16l}w6bA+E;?_F!m6H3aEUoa*&@R=HAm&X*lD^tTw zg#VpRHB-s|bxIpsoA&PGAtwd0Z{V|+#@1y+I?YJu8o^bANDEo7<14W@@A0i&I0+{0 z^rxLKngwP#;!CY!>a}PKYPxPw#dqp{5YkN(xa6ujFyQBVNES85S|Bvxi`^Lr zLR$!V0rUg585q8J@M1zcb7t_-U*ta`FD3aVQn*ASc1(QdBSq-W#N2N|dP)tt)OO-q zZ;F>F#KxB?J!dlVuZ#SOQpj=tkHA{7PZQbzGX>I9g;>nr^1dqNClz#R7Q440CSHmy zGTw?KA2w~=s+$(;l_R!mQ}lip9k7Lr`Qn~sscWto6iY&WrLM(+mN0b z5PBThdqCrZ-omnlf`dplAGypY)kZav*)4>dk;gj#n`W^OAd*#!yvLEp7R_oFONVG7 zjXrRE#bNsw28S=Dj$9QO*Zf;(_}QZid>3+rp_p@!A{@t&PBj~$P_SYPqR`=A50BkP z*Nrp(GV%1tn+hU+{t)5ROkqPP=VS*_IQY+gzUVbz9lhHjdAFUKCk!a%n*;0IQl8b` zjCormpi2MM_0ZOm3jG*JZ!3r-5rv-B5Y|uNnUtb9fd!Ojt)Xql5zgF=#?cWmXz{sA zCx^AMKzC%cOqKi3y#2^*;i$1eLop@s5de>QKp$K*bs; zflRrM^Zf*>brM2YHwR2&h_273NA*N2e4;J6so63&;rKaXEQ{Em{F0tuJV$Yd#DJOZUnB#{= z{Uyu*9r3ti6s&}KGRfaP1qmfh2ast^tnv{P-HgFvVy>7=KDmsRa1jvSGqK9--gi#- zo!ySh`Vk9Id}GPUQBKi>BE)yKiIw2O6QiEEh2<1D?0<(gvm5#ud(W(TfBVcp*weU1 zIo{2YLeX{8=lBV9$5eswJel60wtiQ3D3n=qSxn31>T@Y9P41CSs=7RAvT594kVMfa zaQLBqO#Wd6YYZ&&{4mbRHWg&_s+pUt6;B}lnYjU|*GJ}Wx(ON-LLn%fyacs}W}7Nu zM1z6RN-}!!2K~ExaT_uLgjQyEXcIDuhVVmsI4Q-nkcj#F*(on%Z;mf%mVigp0!hGX zMpjCX;odQsymaY@qVk5aje6%A-TsKpC0X#6KK<^kvN~kec!hA12Z3jz#y92@fT zM7Wpe&KnJ6ta;PsN8EkAc5}nK)m!Cz8MbTvP%~Bu2))b&*`gAg=%3HDjUUU-9*CHD zfAY-6Jed&dDWw{ydHh^O6WT&RfrzeNKovb8HUq?RXzlq>{JN$d`ljRzW+1_0auPS2 zDMJ-8qNib!aNp<`v~7uhAjJB-Ed^~6I~S-;S!lxQ5(tADa4KWs4KDmR!wMNZ&cTvR zjsgKJf6Y-K&RxQ{f?OG^9^Thi2%c1LC~NB(Q>V7c_tJq$gTH7ar3z%&bmcVKaXOOj zOUMZ>q|jpdyIJMJn^@C?lDnYRj_J!i0Tk+F9o}BM3I!QQ8`)74-<~uKSoVBql)iVq z?J_pV0&zV+{~~{2m#)IckCystPv|j2!Y(9aNX;GX-?LBNgEBZN>!6%>e}pkQeEJ+h z(|_~d{(fjfF_6!Edj9l=7?Fz+V$dq3?n_zQ{=20}U3k*uPoh=($wCsJ z%{i9NHzjAarL+Im4m|la-+gvCEyJX~sn`QFki_lTCpx0_l!0Za4(-0BYg(XqSir~; zZ1{=KlZ^G zah4La>GCx_ncrZzU%DSR4A?9J&^}|zMW)FQPfU#oJs+j;U96GRwJIQXF1d2&2|0a8 z2GW|Q43?awTVU#B=-eK8KnYBa5NXabM)&q~%)6;jzN_%H+JN_o%{8fkjVR71d ztA?OPa-m7rkY_fx9^=28>UmPS-wd|2G2&aSjTzpIR(lR*7Yv9mZAd^`{3rSl<}}7; z_GO0+hhQ?V7c#o6t(S38_XoE0US6=I1ZTj}S0sG^?n9+f4g6?Uh71g`!WAqO2e1T| z*1_yE*)0Hci-9$`=!(!ZALv!q4>6{hP*&A*3|EF(8XcBJVOQwsQS%0j{E>T}z2|uC ztft9E5f>bN7wfLXcrmVCuvvh_E^JX9ii6-J8n632?~D;>x8-7Q@XT=&pS7+h+-ANcqyFkhLM|%mHQ_SO5H1RcO*d?RL}V1XwHYvJ zT;IJ3HijG?Gu`3(CrrY-j@Hg61m|Xf8tpH`xXrd>_DDo%E4JQ9iomIm-y_>9D|myp zzW88Rex-f0hnl|E{L^%LKRh3F#LWYi8o@KwPwdxP#ov zT~cMA6=bs_EC<;pRBtFemmkpv5;|!`ZNL-$2l8G3iL_#fY9E78#xM|2$ae3YA0<0C zmv6o!czJMa5zcmG5j2~!WMf%aR5lm&l?CLvqkNrvZK^rwb3*JGgJOB~>5;|&JMFNs zdQYcV8bKHb4{tjztT@}veFj!O1|Q7eFX$x%i)usf)A|+dhqKyN6^f0QhWa#Y{vtbmp0Md(`I-%lR^-*)ISpZV|3K z6b`E8!@`v$en)im`llDqHxf5N9Le%!<^NI3C@ZWkZ~!jF`6~AVRhJ^<&D0%|3n`zuhr$I3Zv}KSlxhlV&9qO~-~}IrI@=Q+YuA)4{|yL8f|gHS}x4 z%a2-*swl_iBzV}LXf3!HB*V`N4Qif3Qlq!Ys1xX(6a7X;BQd8o2uGC1Pya5tpn7`5 zqQ}sp1}cJ8EtJ*-n35du8Kn@t0d)orBY(;0FlQ*QGEgCiez6Z_2 z@}9|}l@kLd0#KK%-5VRQvhIlpy`J{-NozoC>)g7a$s%-u@J#R&^H&hJiCP;PPqCJ{ z{&;REtGdBG+z~=ELX8o#WR{+ABCUsH;jc9(YYm>-bm~M|k>FR$`c_pqgICKRJ#mww zCj~jTTVzbeoiWr&e+sQrBXTlM_C)qw@HpA$7=N8d`w$e4kqOjh6&&3K8B}w;N%LcT z{+>xuoY!%a(=wRdp{+k8CrHpYVJ__h2R4$QiY1s|B=b@MO^uZv`4raZRA7XR+~-fN zejR~AtO)>ycGRTZq zvc!xx-L@DqkPyC4ei}p{=tuchH_%Z%!VRy~%o^d&7MM=p|0fYL6_$bCg7x)um+-d%C5d@M(Y zN_Z7^@vqXj7@n=X?BnsB7dHoYyj~inESDb+%nDq^9hm6W8gEg05vRp2ni}W(QAsO^ z>Bm37NoM5@p3ev{DUROtcAFKb;{>Nva0s?CyHIfTMt|mLk=|&z6`b>Oxv3@p<^@GKvDg1t;r{fup(2R;V4K!@?XIb+Y4FHugubn;_5DM;sqnIyhnH0K+6$~EupyZ6noe!l0ZsVZ zZFa7I=~1A}`jNnM)hIVyXjCw*>DO zrjE(-3Sjb((C16+vUVPiW~rCl2)nHSA5BZGgdFyC0cF51u+d+qFg*xM&VVUHdE{JO z-4R)XF()yA3h*71m7_qd;2GRi^WbNS;fz9fM&p>~-(LtwjDZeJ++Fj` zK;vWbjqj-~tWSi}eZ%hEiSamwlSU136KTNIS*IanvL#jVCc8!$^^6yNz=S7hipkYa z*nhq*t}p9mVxa28-q3YXqpLb5o0tg+JJ>kGeOq-Vq@}4V;yy{j-wKUpo-_lg|7(TQ z*J`3D0A-d#iB59A%t=a5%G))&<=Lw&t3FK4Tau<7xR|<4M)}frCUbRQ8Yx0WGz(F^ zMYTTK{z;xWKVD~Wc4_=mEbD1zExd~NXy@A4tRDZ{w`tfK_~~(B`=_nhW&PPsv&-SP zv0U)hgGc0c;jXki`pu`go$vM*3r1Ld`#xFj7~eAShb!@pkY)gz^&&A+T|zMcE!ZjF z7O7FzC9+__$xoP>;8={eEIxK-$=^64JGPj47n*(csth3J2u)p{9A*b~CQQC6XbtR2 zKI!z(d}>G&?f=kf?_5y1tmV^(^T)X_1WYn&XWmq~6$%ll=bVXaD1I~0^XWtJa9QJX zdN-kCP{!rI;_9sJgzY z|IuP|Og_|oSARyX5C7v*yS=qtuHPoZ0_ig=3)TqbB+K(1e~yULgt(Ix2$YZ>yfxg? zml7-pSU}gL*aWF8v_Z{zd&M6_dQ=OMT5{&2#oOn@v4cSg=rO?D+l<;K3>c_Xuj!2C zc?u{qV3ppz7SV~;)un}hqj`+SFMgbnCd3gXoWw&?=}hBWDFhZwC_SyK&^uKHzY zux4@Mn-<({1x%}ycOiuIT6pHe=QZP`v>Mc_lW=?)Kz%y&PX~)PJ$C-rDSVFn;J!J- z3-@mQc^S~SWFwz~4CBy(^}~PZ!}0#)ZY7kUdi8VmQ;2P#LUwiLNovgO=7AkLp^+r4 z97!)2`h$#LsX$SOhYOM-ukHw$v{@a5W%SMh#geLwkh@MYakP9awUG3{ANAb|{nAjO zvqSyol9}1rLCbd=lK|*4_%I#No0iur3$r#J*DN(AA2>BeE!9Eo>a_iR^^EpiiI7Q- zY=Opn_V(PfYEU22(tGgk)=gWwb9qrPuws}|Vks{F);3FNUP zqw1!Rsf6_fi&`~(uqjd;n|>+tM>m>BFA^`Blv$^_Ss>j zLtvQ<(YW3*SN^23^lG>Kl@O*izn5P=cM3jrqB`QogG*}%7q47g{Ifmo0<6Tjbsl+j+UB%(li`SfzK`>@Z)|JydR|kX;l)!eR*2SGi<~F9;wSnU5bUob?i*7xi;ugXLdrkRSA7_G}Be^h8_l z_VQpLK0I&K<@@G`hiUUbWC;8v)ZbWZ=%0_Y(>$l{JpElDxG4T=;I=-~^~d7&2~S++ z8QawzcMUjGmjBZq6S&k(d3Ws7P0sXVf4U23@lfchK5~PG$i>=HGeXf8dP$j1!w1^w zw6pmyI<}x+ZEHA_wIE|`^WWC)lxoqlWbn&a<9Pz|oEoiw{pK$c69x9zG=m?}v0Aqs zOj_6uTO7@HIyqb!as8UvdTi;p^-IIA5H~(P+^-T{_&0IKm3kv)Zh`aO>x(>3I0sG} zd95$@Iuf9NfP)yRMX-UER-8qyoK6*@*+9+a^fw4Jh3Xq-D?oX`zUPiDvlEsK|2R3= zM%T*%IUwXALr5ro$dy|ddNUz_wnsh^bvtedg>3$DWkh>Z(B>bxS6A$G`D?D|%KrKz zZ7#7{nji^AKWi{mKllAI7E~j{Uj&FX8%(*v3%#Y=x}Nh6E}nn6{w&Qw9{}|fVCXNu z50R(OSa3+O;Pg1B)1^UsA&%VjQ!@{>aPN}ZB`ypd{r1vlX&@56nq!1y*FNsB>~M}p z_fhpzX*D|mVqa<9p^KK{$8L^wgvR3t@L^u64VWG@;YgWoiX`^&f9%Sqh-H*xn0B&sYB<8i1Rt7K> zpk9RR;voT*5f>XVTQz(lylCPcQqB|z+W>{t?skgs%NkxFyD)d1_ za+Vh94%CJjLqn+*Ii<38Kh;*un2ebN;$+LP0&V-(HD6Z?DC2UHt*mo*mDlwf^L z061a6UG=KSBNZk`%rJta#sq&ZQ+G31>J;H0v2d);HxKJV;)L?*L~y>Q7K!(Fh2_e8 zBY1+_R{&8gg4Eq(xUpW*ZJf=}*j$ALL|L5LSfg0DB*NJUhb(?@`ic#Wjoq8a!&lsn zShBr)X0ANrHQp_^oe}4YDWO@JJ7pEYukReQghkv#x@QCPNl3eqqN9Z?%Ng9}w#B~H ziLa~6)SR-}==M8DZMM^%eeDN>t%VZVQK(eiKW7>*W;PTtQit01 zgcsgB;qP${5vQnmSt2 z4^h9F-UC^llbiW%>qg1um1qaT@D$sAI@tk*!A>!7J_tv7yTh8>0wjZUPF#9xwNp`> znW#-vdQ!wVEVLjDGetsH^JJ+Vm&_F#6ApUPh_h1Kma z+GmP8g`sEiGZ4m8&B)^VTij{9t`)UN$RMSN3A9&3$f71EcAU1?kV-TLOCh0jUBBYB zR{fXw*EfkF3Kn@oxr$ZxJs~!NiIKK7_?(;1Z79HEMCS(F8{w%!3-v92FE(J&_!mq& z-Fxz|Pq#*GI6I_SROS3$R~+g1Uk$n`;}N8kg$$8|GmGhz)$av5bJ{bc?t9I z<^4>wJ;%fvLq$wFS=uor}b!{czIn*yV;GgeE;eOiA_uD^OKfTLpS_#xiE zSZBS}<8zd5F~j_b_n8~4g`>fch%oT{a5&RA^L*xE;~I9Kx5%nXe#2|1xh~K;A@%%% z`*h9mV&i4fQmKApk^Y{>qH68-frJwdx1M)kgoQ7L6-MM(CZ(|GD9jH-+VoA5g={|x zUn1;MtXS4t?rTAn7x|^KDMktYIT&gfyZ=vT>gi4;f^{q8znGHqBnExZ{y*9;Fb|vNDSn)gHp`)~V}J9ILgr-F|36 z>nL>w5Mxe?uWKY6M%MaDKS~Z*MDVW5#R)|Vya2}T{#NJ2#rM-;NCSr3) zxylNh8{69gl~|J6)pOkiChNP@Nwy~=6!igQ5`UJ+;7-4`3Pkz^Bbe6106|K&X&aM5 z1<@n09s?Z|L0RKUt`2iUh>Z6!HxHbbZ<$!=0xji7GNped!V=``CI=F0VH!>b@?SJs z;cRNwYKA!Tmid+wHaiBjAVx7Ch;NC3s<854HY$*whj$->_*OAN*7M4k&3jKG+R2CT z@44Dnv?edP@x*rU<&}JE5nf^GN%szCF6Z#*^D2zBf^WX)oE)#OYFcM0Ck(El{|Co_ z`rQ)yX_rMSVHHO0$0b<4HxemNH+RDi(j0czb67QOA;FfJV)M0!nax9);w*EDjqjy7 zoxwUKq%n5gi8jR#b$KPMV2}ho7PF1#P3CovFzq25nWIdS8BtT^uKRUD zVm6vJiVA;Ltw4>+FzJf?`N;QL{%!BzKuM8@4IXf?Ol(GIg_mJiAgnb$Ue}YneRo^v-<4pGt&I5*Yhs zl{@M$0A-V`f-YXraXb$9^luQVz7O_caK{+7ngQ%BJTY~ACsI>!d+?w2qxK&@b4+qt zbI(1$_H0CeCbUQFVY(v>Qr&NT`km0Sm5-QTy?}Dw6*QRZE!JjVMXWAp%{sU31)(jf z$B_YI8!sg0YqmSH7nn&0EfKg&vg^4UI0pw;A$5~~EOIVdd+6Y=kX5C}(dwy4u;#1r zt9Pq&&~MT9*a-4FUE;bC-6SDoE0ab##zVR}S%lRx4Ip@hcz@Jht2L{F7$HFZs%ot@ z*(xN@|F{n&eXKtaCRV@9eNg<<7B^5bp(``C+~js?l`UJCc)06f*ji{uq~yGV>%X^i zHhy~zWkb$v*}xFdZRNnP)fsDK$oFrYb{U~W`U;rAkhnk(kRPfnMQFs6^o|V=rbD&w zUcc`DWyj&pa@{e;I@1QuiIB{C%0)iLg~5SHhzW-n0JHMDN-^L@vv-CbNe5;zE@aV) zMSIZ8>Ota|k7Uik|I7@e!aGa7uOK~o%`}_a?q5CD@^vLA33wEC}HwCR2xmnTwgdbW7YfKn9%3$EFZ>=_-Fa6@!zVS{tAr!?EZA;a#hRcrC%KX`|sV?4Ra04htFF% z=9RPmSXx16C*HsMGpdz3r-M4MacPhG%ja(xl?5V$Ke1+Rn)GR5wdjl5=H-YC)KPq{ zC;h@JwkM+(rtVo7*ke?m)$^DBgQk%0(?Q%6F#Oq)#n*@gXd@-&y8wTC%{t#BpHq+g zD0BElCjQJ+0K3{St9aN)+y86a{%cn~~bXAp+l2zN97g9VTd$K_rd@r6Wday#_lcIE6PVx@{W$JYLvjOgWQ z+ch9RE3~(nV;cb|lYuQ(5~mn))Mbk49EItqV;M@`v0dkd%CnoHGY>#-6*@k1y32Q< zC(a=_m-RR)V6jZ6f)BdfMp5fXKNWh3bA*7cI?trK=IV0r7Oe9&NynM55&emIJG>qj z>TQ{$mOC0%QS^RnF}jd}fccnxN(}k7QOlgM<3Au(M!g(r5P*kPL%}c~n=UZ9F-N-* zfI2fud!wY3|u>?(@Z*<75$#X%WEzP zI47$_9R|7`ZJueh!)ej3%td?J7w!MDNcd$Hs?|4s2D5C5b-B~xs?5d5+ZUhuvUr$m zm9At&6ccO&byBA#9hpo1ZeMcq%M$mBu6VT!i|2w4k9Yk5Kd$<$Ab1tQQZT4`V&lvI=+J@YOZW*)7r8&RIs7k=heB zYf0-bumpwe0%#utvJP7Rlk8-<)2-auvuda3@uQ2j=|*t{pvH&0C7>iJPecHbdIGTP zsBIlXRdUqz#7^(wE8cg%dV@~LAT5Ue>!|0m?aC@BJ~DgyloKC) zl~JEz?tZ4YNtLwRIV&LMYQP3P&u!sk!iq={tX;s!NSsn?yh*}KCH|Hm6iY42yjfa@N-Tv0@kEWlLS(w^j088{cvp0KoZua@Und7FRNfR_%k0IX^LfsN0vlC-F6E}QMjB`s$%uY(_OiKHnw8L%7 zuIw#)I=AfqzD4MkoS&V1s580rdvdv3N>z5s@y?V}-&5+`wl-yNJ=eLl<@?slZreJt zxBcC@?dJDwabxl@+ejifum$^gS!p> z-O1U#PM|bVYPd-dugXOAOqz~^J2{c)ZVr7)uA_3vO52@o1VEi2{iWPAo&$O%?RqLl z{$cL4V@xPIo>v^(TWz>U^Q%@VH^qQ^9F*BD$I^H1-u-IQbOg+aJhto5lbjU-)X*`M zztRGh?t6tp`3m-l?QU`Tn5)cOhq`_H-{j6++j?#DL04tYHDqP`vE2`arhpLS!a2R} z6Ip6lzvusHOIid6OJ{7;Ot;^YXReY1dQ#jid1hf9kh{}#O1S&lwX8`doj-Z?%kKOW z)d#Qj9(0aMYj>wVh|_<`G}coJ*Eu5UBwKEztvaZ);-c1m1%h#I$=~pK) z_Fpi!g?R@T3gejc7>~nM)d$UFI1P^77g?~&o!&Evn*vRk5~QE!=s9sr zUNY(R9Eb)ZseFuxlf8zr^zV1*BLUZnGtGQBL zS(Kb`UW%_&Qk6pbN+HUHg(Sl|2gb`{7)LhwqGuLN>5~V`_xvS%jIdTx%RnOmM_LZn zmV-uXnMW`D?Kik!LQrC&4T;yEBFM7By~j-1wWbr3rqdjQWEc_Aj|!7#_R0ws?gj2W zryKsIECZT;{Ak+w_%Cd(KHf`uBu+~4I=Wbfi2eCHD~eA0iK?75t%x&;esW?-?e0x6 z^qO_qa~$eceyJV!GED zmV1TI01p{qN^bg~Znq{gs3&WF1L~$q(d#s`#W&E&BimuAUNBX|t>ScmCfpfKWza>- z=SiQxgSE$xJ3PfzK8@W_f0U>Uw>7@xDg#sHrc;wtt_&daJJ1X$9q_jm07`-8k2Dd) z=8wDfOm6GiYJOHUU*7r{7{iJu1}7xLxn%^jVM^wy$5_o#4)x_<8NDogXrg zk89@RJ{2JM0eC5lN3|eI(xDmvUnAArvT{@pwiUn^!;2f8v|0r?^10Lby7%fd`5(^_ z(-)gTT4lzk6_$qV#;+?(>^^lKePAT}Mi)FtdGo;1aLE#Q?Aq7SP@hMU`ya*Je6->B zqd1?(iR%52Q%n~fd9r>9zeATFWjXiw`GY4u55To1hDRvl+e~dt1pvh8KKN}}yOP)r zU~*niOr@GuEAUJC;um`~Lh(3J2PIK%mPki^c09jvYU0RmT_YI)$)5fHg2M;fH|)F# z7_63SOwIt zOp$Zr^zsBxO`VXwe7&AHla)eb+XKA-8%i#C(`VU>a>q3mlX@#TZv*0VssR==)c-1I z)>%gz)I}Lc0Sp7g)31;jBw7?rCVjI;({G>ziuR*5(0SnGoyofz3QRAMN$OUgS}c+o z%}!=LdPEEu(g|c<&~pIqog%G>(>rq$f8o^3p|-_T&~%n*i~Bj$pmgWR^*P8U5w*q)sp}^;-cJFpOtFDpzo2OE}mn&|Nu6 zWQ`Fi4DAP?*@&D_b9!;SKyyW10q`{+re}L&401zR3``biHXTPLNo)1_7(pEUj2!cl zeuX7K-xJcSZ=Lp@UO@YX$J@ z21<>M2*(3IR~8Xyt7^RuIW^s`vc($n^&S4YY(iR>nLy4vY8&dsqGs_?r+jwr(4!Kj zKACzO=&lXqkFGp@V_u;UP-3g#OXS2YDwZj`2E;7QCdg{L z*(oobbVH(+)d-Sk-7B<_`~>da{4 zsuRmfy*jq$Ye|zgzq68o2+xA258u{_WCRRZFPN|VXE_-nL^KPO00LzZ5nUCW8#z|rN+$S@3l_NIz80dGhS82%Re zL4>8Gck!j^jN?Jt^8=u7e;iTbDZ;oC8W=X3Fm!*zux8vV4{iy?k|sir#guw{NrU|PrH zjfc}ZpQUe$#w-hvoDXcdi5UWolO?e6d>*nO)ToAih)Fp>Ii$^irU9dB&EUOZ341CZ zce1__0MV-Ja>RCCd=QzSPdQ|{DcC)h$m`p|?M_%wJ%(+9SwR*s+6iZ3#XBa1ymKfk zSVw2)`ti8&-4#fd9tCS&&>f0`7M&l4i3t`xTpCwEwt_r)tRNbcx`WHwIC0|yPRNbN zLCdBchfQ35T}(pxntXB6w;73*Agy3dJ2P>C2L_QcC^)mbUAk*rPqJBuo>0=K1=^nP z=KP2STy^{4u-c#8_oy7!38J||i#nMlmGLC+*+v%EqC`*lc)6d=8#y_b-BWL{?w zW>go|hg2O6HiNJhkqpD7&^&q2LTCZnbM*ZI4Z%8p*AKINMTWTV^v(YYm@Y18gnjT4 z!_SI9YpOx9ar6g^RV)CZr*BMFDR*t>$_#YMi)>*YgHi)fGLs;;F{Q_%VHs5GjthiE zlo$ZK?a#wrELCFOAMPcr?z`>~-9zTEKPRH_?TuhW{`%P2dc*%g1MK3<3=>ToAnkcN-+jNL0m#v<uBu?P zJ&fMi=trL~TH&#}4vEA~$8tRS-NqJcXVZG2L>sltY}Jpl-9x?f??Wp*&qxG{bGM)zrr`@&=H9@V8;!zrk<(0msQzQ ztIm*-x+&qSE)J4E%LY9v+XNGTn;RX04ZJ%?p+RaOl0+80wP%D1`EO|7sXb^afZ9Hi zPgenc{@4n^lGt9;_gwt?(MeKDUr0#ijzUVAkd!mzXA&mhW2{vLn=Rg$e)7N=*~1mu zG^O^BngZZYoe(<#vmKmA>g{$z}>n8At0CT>lPa}u&un$ zmlr%f6HKuP!D4@z6T?nVp^U6$P9+xxclU|wey|6Fu6PYB+}?d_zU9(>*LcKYDvKf% z^g!cX6!#uSBrdtvyL%LYYd&}Kz4G;PYbhZ|B|oZW&xBttFAlXZG))EWjMBn0^mupRecU~$fd%Qu|39&xuRmF}*_1&OkrJ-?kqw&5^ZqU{-A5Me*(W=kQyC8+aK`IR330ga zF5qEKp{JAwfbclIe*DqqymO_3wQ-)QDl0e1&m(9HPIwgLt96D)*PJ~>EQ_KEd3oO+ zwNJgxy!nvqzpDySwD*+fPK#H47M*q67=-{NNI6c88hh8Jjxydhw3wg*i4v(=Z$1aR zG&K&#DPkEP6@;TRB^p|tHjZ{1!gWPvgA95m<;oPRNh;*BEjx!ZxbOKp*H$>K_?I-Pu-49SpMzI@7a#N@ zYYi9@lT`Km%F(vJ~-r2URm;@xcX0fPs2`@MVdKqzR<6k%0g@q7B`| zrwsD-P95VV_5&b5$l0vrm=U6- z6=Faba98g9%-6CR0PieHQ2RU=e`k>1%M$88XIaq zV~6XLk*D8~I(ZC?40M-T>$Cv~MJ1~Ofz>p+3)bVxK?@bZeiz}69C#$v(;7d7;$tWt z!bhQ?sSawg&79At_ne7r(A7@LD92f|aMhwEo9~t!pvVTLGeq^Ty zW9G;NEPzPm5z1Aon^dGq2BJ|X{iTw$MwO-$hU}G*O4xgEl;;mVUZ)lS56Rlu${-y8 zbtnO4{X-kW!yd+ggZo1UUW%h&as6^wRKWQlh;pzHAaWCrNphfxs|;WVq(D0Q0up!$pCf#bFY7sFM}o z6bIzEZ3wd@J4fxD&%mu3#xZq>ei}GKfgDjJJcL<#Y`noYV!*q@uT&d)#1{pxH zG}L81G3ywE3250r(vn;5ywJRQrG$1wvhE=dg_i=%^DE9VG@LIG2(NvuxX5B-?e$3p zd{A4K)d$rg;(!MBnm#_V??Z!dNtbw4*O48F1Q@%Qf#pjP)`!V0oU7C-{Gjx3w-mff zY5F+6BEm~YAEU!p>Hi-^=i=AW|Htuj&hBfiRjbxo*}7TxMY3wKwNxspBq4nlNeDxj z@O5@+tt3eZ@m&{6Zi^6-vq~3=MSMe83AxYp>x-}b&hHP{V`n?(^EvPL`}2A|UwCu? zQdWO!g~OMFvL|e;ke2a~hikJ2eGKHUUv~KIPkdx_q8~_{Xkag&f4Ny>x%UQjM7!cL z(W4?1)fPwA&1U~&_qhz<)V#a9n|+UXcD2x<|Yv(hKA{!slcN5Y@+keCY-~3*DZ(L zSDt+`lS!djo+eu@%(Y4c&K-uQE z&Cy+)?p|8MT!8RWXmvpgP1_A*3ya>j|LkjorV8mcK6} z&*Whuv}aJ5=87BEjy#NpiEWLrL8EgW&tD5N0@ZhjUxO^S+yK`aucG9}5sSvP@ogU^ z2M7{UVm=rt5JQLA(XnBZj%4AmVS@{W*QvB2zDl$d>YOcT*cbbV1Z^4$RJ^5Kob=0b zPCU)y=HXNUlVTuSuKN2qjICM+$fcH6j}4=So}XX9tiQg z?WS8cHIrU`vLYe)JI24Cm@Lm2GjG~LE$p869p^tudWzwmtd$oI&IA6|W4C8hTVi{! z#ay&9Qe?{Bd<)l4Wt8nJZ5@H(YTx0GS;HAwDENDuO`;COGIZ7l)hEvGWCP5y z+dqeI_kO*-lW9Ofajw}-SE|~);648*E(w9*deF`QEqqJOHv!$%PEj*ydZuf;6!TNm zpjZbzH73{aKvb*otM}w1aF|eb=cy4#pbh)|cjtu(-x{_qI;FWPIt>J?f6V+%_JA*J*MS6~)Yk>lz7-b`fvp)2A--Zj9I!N%wtq~3( zt@p@fxEH*}mRKf+-WNk_?;% zKdZ$j9=bBEkTSp{8=r-uv)!T9#^e`?pp^+I-Fb2Pxr>}Tk4TBny+LRKt@yg-hmZar zK0c2smS{-^>^MT*Z?eC9eN_?yj2?k1h{P=f8{^fZt-l7~AuP&A?l$GyXn^;tQ0Xpp z1#%|JH2d4E{(r-{4_P1L)Q@QbKmCi+K!=2J-~@F4s}L5wrQuKtSUqp{ zC=I75 zQ*c7$+JF2rylfnQ?+h|{9d2C_E2t#uGsog81D7V`lt=9(?VhyZ{n&%MFK25-1yqj( zgX2kcGxz#0eK`1PPD7G|aG>k-ZP3!}UB#WT=AeRNCjpevCD)6Y{lofaZZ+-Kpn-8w zlJHJ>m?Vf1`QQE#`Q*(Xp7dh&wTtfKV%uh%jCw(f)IWN?n&|rdaS??a+vFDS7SWq$ zow@lH-QQI(7pqR-Eq?FZx@jPPin4oU6!uzu#+5_+-c|`@=7GeN9)y!%loCBPfM*Lj z^|jBbR8G9DQDFA>4eYRw6yaz`jWY)CzorMQ{aEbWqt$mDI&T{Gd*k8vgj*G0O|1ES ztCE{UJH4?9SH(C274uqF!BP-%pkov3ALahsSvxtLig;O~xw<;;}Rb(+K z@{U|&?YGQfLjU0foT}F~X+~fM*0qPN8hgccUUq@xdpQ2} z9awe#2-eftC0ZXpJtTfhwz>_G6#a&O#lN zBzL`&*=>Wa&5`1zO`?g1a*WoUel5oioH)Imq8mHh$}YVDCynmuwz(J8C{ZP1Pxv3n zyCCnr+pD2DPVOImRU#**5Y^pI-GMK==7rkFf}*ZWQdsrIDnwfjt{5t+-_K-8!stU?16@_i z&x+~?Dp?Y{!&$kGFYwU=7F@d#aeW);ZR3s!KB`3sK?vYFY_VD~GUKP}tX;aHcJ0J1 zJ0r$+TiC=H=Y1^ewo~6TYu3w-vdQ1|fn&Q%mjfp@_5&jABpS5fmoMufqmLV5bE47@ z6O8@~Q$3?kFKs=B53!cm9{wK5jY=w>Q#YDmFHxcE#p=h8ZcIF{c+II({M?49(6-%V z+@Qia576U(uZ5SiDoHdk?0z4#xSACU&Kt50y8z;kT}9Q2iDLWywI$QEdgoUSU0HBh zX`WWOw3b&Gws?0mK?mDDjEUywepDs5x;Y=^3X>RG<($3%);;bF%C|}7M47~@n^zdp z99Znc2I7{a*9E_Jg)FL<&|O=YmKWrHoJcmf^Se5%JTM$D1t`dnI%JGMnK8(Q-KvZH z8XZe>%#s>4uL*`Wmc_1@_%Q$GkTJf2*H%d*tg9bHSu(W1q!e8FPnCOEV-s$NWx3S= zI>7D+iwUgRgqNnjNuF9DDW!aywE@PFVfBj2B~II<;>myi>uiq()4Y&fx6E;*&hL~! zmk!-`9~z(tHyi1-UxZtNXwaG#rE~eGd57GiFZr%DS~Ta*3FflPDTsF8nYXUKLruD> zvR5{DW0p;!i=bm&z1Usfqe7cM60PFJtoXF$@o7l$66$FShX&Vp?{a)|CPsc0uH#mu zB;j?&)bmwQ69jB|b(RrZZ}gh}b93>$Q(Eu$iS3XLTeGIM)=|tOTBY|;6Ns5+rpMFJ5`RYRxtugu<7A zE!$?|U3I`eSL+~ZB8+*`nLhek43Z?H(@WpLucMAa{{+S4?OjR3Q7%IG`NFlmKg*xF z?l0=H3|Mz@B@J@)XfZAYHZJ{?@qORdEB%Y!L3G;Fw&C?)ND(Yzls$f~_!~`a=-+n0 zA_M4lZyB}>s8UCuK2zkJt*#(!boc&?B@V4*t#s4UWQoZiKn~1D;LHb$32A9QH2bC< zKNX`Gi+NXHU-r-c*TQzBwB`Eyd%f!ltA>3Y-M4q_m16VyjBlR|u@lYqt1Etv+m^?Fi0l%tJtyF8foCmSFj(uk z;rOg=D^lv2Ep9pLrM|W-hH3u2bH~1Fts*G1chmr@Pi{D~?Z1^0!os1BjSfUWUm|TT z+I@g0|Fh`7+?*?M;Ix*LTnh3gXW7C>k6vuNc=hl?n#u{wq5X5Qf7^Sgh&?=>z3Iy1 z|5nSo7e4uXY}3_u+tzG-x$x=FsEfFW{xz~$=onCjV1J)lxE+%|VzEqS?r^5QBcd3} zm_J)CvuLWss&*SekM|n4X&+P! z6T>e83pZcMN?1|lBz##w{ej8UUJD6P1X&TpyyqZHWN{op}O0>VtF z-{}KP@eG(9ddCOe@VxVvJmTe(1Q#7YuTFtoIAQbS39I3mLnm2V0t!P6fhEb=p_mTu z56RwTFvhsqof^{~a>V-khNTj0xuh`U7KgeljpD@=3a-07{WobIf~{`&^}Mipvk-H7 z{Q=Ej@ZZz3oDpYh%ue3}-+ zn}Ald($M%|6Q*qsJ2lEW)62jqP1b~aqKV%g8J`I>)$sc_e_uqSF{wAtcsM^#BN!+9 z?MvFKv~HMKjJMZf7Hia=Emu#>hq+~hHHkal-K>~zt;{kOs6MJMOeR}OVJ3`QCBuBY zSwYmw=a}%}LV(a7)Vl<;6h>q%_}`yTk!kW|gpdZeRs!HO;M(CWB-E3?L`Rq;gr6l9 zQ`qt(4PkwY+~T_^?i_%X7H&=?%Cv-4a=YX>K%7R{$}0?j+wPGSz6aGle9D_SXo}>% zS_#0^;PRz}g}{013KH@P+Z+gyg%RIQm^-!|0_Qqp`Ak7j)gx7sQ6(L( zwk?AfH#bufK{f+&&I$f|AtdJ$CIjNS6BIpLye>q%vSFpdEeHK!?D0K=V#;lgOMRT<`T%qOOL3Gm;7P$-dl(l%5O=Axiq=7+Tu z&_l7`kMIM{0H_6a=c@o-45Yns8K>9hH^nTIii7D@>t<9{3XDTt}D`6H@Hnn+dC` zyABNX?pYsyaRHzXB0@3ob$j6E&X~HO;+;Xnj=XrPB=i6s0QqsbOKw7vnRkhWTq4}~ zi$G;}-_-RV+d{IC0av#6OXt9kf&eJ6BQ4Q>0n($4oH-y?xN4j8(+!ymPwPa}wA^}* zWN$1V;MIc5rD{l{%xqCF)nI=n`x7LXv@*O^IL<54ussIm(+U%e@SGO>auhgzT~Fr1 z0$suK7JLQ`gE#q4tc6lF>J@B!QUiGG51xhtI84 z&yzvVm_@iU#Zt+g;6QY&S19=oSAC~p`Phu1feaI*gNvTKCh<3@=V+m@wXiEgy=L5d zVnOm6DW2BQb)*NTB;wY@3?xX^%h~FfM9_aFv<4|awg7hH1vy-(y9!=hCiHG8SgBFZ zW`MUX$jTGYwRF*&AHYnadSwef4OWO2`O&n>#Xb0J9>(`!fi0X^nFwS6g^z^SF)`RR zL>vlN4zMBk?^MU9-EHH^=SY(O<{nrzeuv#tWXM%8`MBkkNiMp-Yh>_?8>gY~LTL<^ z(o+l(v8#Z>R2Uqlfu1y+q|7{bSx-SY1Acb`T#n##%Yd0|{PGsu1WC;)wlbNa&Z$%{ z%1oF!uF9-b z=P=ZB*qDVL#rhq}xg>nBR*{3?mukTkkwCZXkX2SU|b#JAM%Wy^M(71mmn?3Me?7mGK;b(Xu5g(cm}5 zq7p>WuH2SWbyAqLp^&@?AvS>j8dZ4=LY|Bh*Kpjo8cq=sHkSRp4lZ151ebfkak|1a zF=qTmlR6J3EU$zX)x_Bt3tl+3ZQ>IWXyAX1fDN}`eM80?Zs8_|nw7?zz%R&=sn^O1 z*Rb)+r05U+yD||DFcvHu^4*Bwmq^t)MBFvf92u`Lsq*n28etlbf4K^tBi*@96Sa|# zvuDI=bD-+MBAjX3Cexy%*Q&L9PrDd`uVo|cfWE5Hd|TzM>6B_Ti2zMR>!T?epDL|IJ1p$Au27{Gr9U`&oGr-U%~ z$<;MEDv%v_fbW9h#h(vLDkZSBQ5B1d*h2Ac#5&Qs?D;N*OBlPPiQsN2T$q-Tgr_cN zAV>}H&O~%Aaofyo@8APTFky>pPtyCRq+?)b{Ly z6AbDEYZZnMpk{^qA+%mOc>Vj9nKrc8P)4enY!jVlCj#&(Bf z?93F{S6a9>MxDaNNhAc8NO=*(agG!9Esv-xu+jaZ-JkFhKJK$~Nv`n2U%c$B(um3) zN}RC-e*o|Ghx)2|Hdps?#sU1l8p>+5#bSolDtY3@DH9xUtfVcip^G z%64`LC`jSszdlg=!fiXk3g)%gvqJFGrx$qBieUSkRnqd;M&+0FFslK-G;ip$@Z&)sVm5$@f4+Sbl zuc%^hQmZ(^hRy!30-K2y(n!@^~Y7-G}-vC=lfUH8oOc{*T zt)^+^zj*#wzC1-*m{=Bvzk8F&huPzIe1w~Z^CMXgu%?Id;N#$h8?ckql4tbC!kCR3 ze0pi_kur&3gIF33$bHdQc)>0s5FO}$!ULZ-q=a((0gPEbu_41*xE3b^65zsxe0i~K z_ogzO4G$P8hpi>E*8U-*aR@T02@)Q7 z_%C>cwou6T*3JE}%j4heJi5t7{ta>bKYlQELShqjTC{(@wxubd`&w z8%3%LO15e7GOx+E$js6QD`zO=I1Ags6=eY9Q{)^N&y1&ugWu)`>gDtjj1}|uA_?sG zQ4`TVZ^~TGuAp7jDWKE)+>VGXW`=|q`jA!)K=X5#P#y6VbpY#& zv40@2#e!RO9Xm=r=NjeQPjzS~3bs)FY|lD zoMIvb+w2lF@g#rXsXBI#*98F67sQ_X8JTYX-FQnF#pA(CKLK+vm;7(`~PPot(e=vo>^Kw zG=gBPc&o8q2v%thRSVMh=h#* zn6&>oM6?gBw!5el8hc0BM_&gpf*d$Ti?m6~vW{xYhY?It=jYNeKdoa^r|q2drt1z% zs+zijEiO+5cvd2^Bta$=!lCi#0o1Oe|-Yx32(zDNjygR41 z-NE=Uo~@jeV!J-RY4Xs#{gXdd+%35+ikG@BHT6cHp7m|SfwXfWIYujI3WS(oN`gsG zptZYo%I(=&vY=*?)7=Hme^%bX>}y$HBJ%J9X7FDKM;5cjC395J5yeMpFz@YnIgU_5 z#X+@i7tR1`dpdfdqp9rnJxQlip6{K1ECt?Q5-;(?n=4genn2~JuUK#`kq~~c8bkh~ zaCxi6)=!dx+{g}=Nn03h5?ST15+|xAr3kwAz)3n~Qn>7IEVp`RUT25Pqzb~-9KF{8 z89C*X@W@QxM7XWz8DokReR!m9Po*#zs!I*6VK;1-LMrdHn9E?i0ga&74)rCavN}vP#&B@`14|uZ0Iv z7U0ipPZT-^oqI5y&ci0~#mcv+|J^Ohw72?!(gETpCjJnzF=+_)h(%%W!B_FiBWrQ! z)PdJVKemqt;1^?X52WiZG;an=Ymy=at@PF`8;9&j;^pu$JwhQ-I%@%7f8V_UXmmAE$4|oJ+b}k z-!bgQFNTh{2{u}Ah8W1|d;Fd`7G|6|2h(}Q!fM&sR#}jhhgBMdcWho~$gyW+GGEBP z!`aE+IvYd$t_bU@zr8n22-eC9Jy5a0VqL8*nbzQ>ZFiq2dZqRnn6U50MjP{h(vlqk zxRHq=LE!*)KwB7c#7tA=8fuyGvJyL7`pSfr62OpD7w$G|z z=AP{q3qh`KnmgfY{S>``&d!4`Pte3S;+gvP6^+(g*BgE&!&u<^{{PS+-B zG&jBe4|DVJovX$MyWV+96~_kOWjD$Qz7>W{E89#Ga+Va*R6QFn;|Q{OB8W-@#&OS1 zF?rnQ5zWxz;o=UVXM|?r665w^w#7zTLrMC}f&0}mPu-qEm$c<~9xi&eWkMxFY13cX zU+U)K-h&Xb^HFg0C6AS$SWqKcR1h&c|JwizHAt_%^)j#?YBe9+ovi9_xI+?2v|pa2 zbPCsv5v7UZYiayRsQ~t$JvMt!rriI%`IW^NM+tbqHqe47>Haj1i5%xxoQFNOGH1@P zjFBp$gD6erA;gM;v+4@nmsBRe%Gggx5boHL{b0zb21Rh48C84y`R9CAjbo6BdkaLIU8PSUZjz87}LJtbYzW;n%j z{t~C|4O;%KCN%TDerB)`n}5~qDcRs(n`1nqGMKCgT!5Y25EHd{%(x**?19p_`XcyWk-MCfT!iz?p5aH;THdlgc1+LGQx)HR(+0gx6WH~ zd698~qp>4w-$ww;*S-^n!>@Ch*v)Xq_4DZ^zENc1S6A)->BHhX#bY_2jv2AE;{sng}*@WPurz5Z}dUP>w{PBlRTOrFYj$jaO zm3Cn==+@`v{*DyYMf27p+7P|m)K8;X#SRNk<&Z&h(1Rd2u?@v(vxJ+t0I4J*)X)+59jQL0+DYmR z>ud+ny4hEGUL^*e6k%w{Mb!>E9aUr{=Pe(0J~m^fjMY=b>LuOjovW-eiGa$5f==-i zhTe5iWYnNN$U~fhO2Vq(r+O^01ST151~!jQR4nEekH)!MLqymz=sFtq<7 z`6+OMs#Dz7Tk++;1D*XU%v<15PxMWJOGCT$I-__2b z8RF1fF>e^41>HUMt1vzg-XTCdX`NxI*jN~LLX<&c&-o^& zjw6<`on!nCg0qqtulK4`3hFRycOc{}WO<;26{+`tS#3!J+;oM_AcD%1C&D9v0O;5l znOJroy&JAvy<6Qp@r){b8Dcpuv=At)SBob!3u%K0@vRyqGzMc+y@z1xTjVCCctb%t zzGQe~Ka9;1;#o=oFV@ba5B6W|R=PiX?>xINddC$?ZOVkWk}e;tctX`f?&2Kvig9(m z4F-_2i3;;249}o<-wJBtaf8=u1|Rg1a2;F&$Y=(iXgb#8+$@)ixn&@mk8=BmmGSrZ z8fZc#$jVhru7IK~Zvg*q^2Oc;xubbVL<^a2&eSqRd3a_r?uTs-V&K$AH@ zIx5uxqG$h5gM-h)6{2ZvfBbt?jJE8K2Dt}M?4wN*okqrc+EJpfBX0~d42QIKc%1|t zV-&$`Z_&0ftOhDQDWb=SXtV*j4A`jY@ErDHX%v%7AdxG~Z5?+h6FD`s|Fao%`EQw< zK{@rLXumyJc~+J1+r<$anwP3%BOEO`-DmrZqbq!b;S%*O;!^uM?;t5Vr@uw%v6 zGCvuzeF0#LB({p;Hn}dlxUb^|RqRI-BWwF{k#FK)Aq`sL0AXDv#8WP6#H3o#}l*!^h;?Bjz7 zpL-nR>BJw4JEpYM%wi!9eU@RGj*uz^w6#F+P|2qOywDxNePYMfWL!*p_~nk!DrHP@ zJ2~YDij%i>KNWfsV^N8H=D8|FiwQ8chw(cWdimP$#h;4AA>58D6&8QMN>gwt|I3{P zZ1g3s4AUw@PImY|5KY_{`G=SIYcYCB9hfnP_=Xu%jAGZZ#?e`5vX(OYlya&DjmGM5 z@MYq3%5cG7@y>vMGf8wO5-%0nZxsu)%3tNkOtYzgFO}wJb~wRER^3B)4Mx!OA!xY0 zxIuWYO$80g!-hH>jB#E)9idy*qh7E_RmapJ$M6>A)UC>?B@q#`5HI#?evs5E9uG!} zr?u)&&W{iXFi>qT(1boX9fGv>i(W@?iTWU2hX7d>ywxMTuA>ML2?XmbOMEvDDJPp? zTIx*Gx1Vr&mEL2(qbDVwUh7`2Q2Ko- z4whs>h=SjW@q8q9e%@}0-LIW5WMj{~T&?tDkUN(OA@}yMF(qX{DUi~pjVVJaz-=e5 z+vRk$dH3OPhWNr@GR<8aOT?CC+H)@B_65Esiitxl9f# znq~_K6IFR$&6?)|n9AMYovyGR2Yg%Gxya3-qmcjDAq=cP!fpQ&iQoi!F3p}j3@}XX zKJn4Ba#1rh%&KUQ>5lLMM9dIp3|5|dqMcg_l30}!%&|g{2TrVtm{@lHd^|>!iddHE zJ$hu`B@n9&fMW8_QDAF0!b_^KPLEhO7qcV;kba)JeOFM~dWiNm2A2+7=Y997f*83( z%T`6shxu5oJ{hARZ^aSOGD!;glqhJxMZYXXZ3;|6ZxZaW@u~QliI?6?K;nV0omw_CGGewVlwH z%V*w<)<5k%^-t(?Tp`$J1Zc=ApIwmq&-qm<>|kit@a3jmI?(+m$VTe#V$aUL!l=Cx z=z_hXoONOS{Z5Z9GmFopv}Bzz@2{hsRbjHi!1ShXR2Wkd5}O5FMpd0z@QK<~Nz{Ar zAg(>^?djWWkWn?tL0Wwf@@&|PECf!vPVDROqrmg8M`F3Zrk}igX5Nwc@xM+G@Fyt0 z`cDowf6&;Ywy9+!OeTE(GnQDn^+W)IIBY$0?edkRD`^Ayl9M=M`s4Y$IJhMgWC^oy zQG2eHc5aFW`S5(pZTBa_Sm}SnN7EZT<6IJ@(bJ zX|co8Ja0sPsQ>e2z#-Fqtm%#F{a?RdPc&=4w|(?6znO0SbW!#BuIlv_?5CfZFY6C{ zeTn__VcOR?8wRW0jv+s|OB^E8Lp1Z(J-`0>tL>ku=68f^pZ@3@KePSSm1)0kZ?{4> zVoayn(w?}0_T4HoqQJt@)17NFwinXuQnepUn1uw?Cr!2c5xK_RG%&E`Ox7mxyNsCEpMn+T;B>(5u zsIL!IYjn4lkbR$%aqI3{Uj9+@=)K>_>*6)7v>B}3oi?*5YcV)1A5hsY+G^d!IB`QF zhlmUbjIl4<-R*Mfh7iQ$nprT6VIem`&Kh?u+_`nD%?<9+s`6OJ{f#y^eb2Y9sPVfh zXkypcTYSC|&@Zs<54us%}1O1jCPFt8tv1p>rIIUs?OBNm`H0w8r0i#tv^*bHMqtC!*|7((A*;>F@;8 zH-CcmJN~a#kx2&M0Td0_Qy~B22#|WX$-(T9|qlWU3D= zd$w8XD5*AkqB>pKi=_I6J@Fb@vlqPsHO!RzD-<=#wCV>}Xhc`1eA)5pyT$L?oYur{nl-~^W0hl6m8>%} z0#xnxd4=6Ld;qz1g1@=mA^+&j#*epRe>Xz52=RLPlF_vfr79s&@j3YkslM+N)3(8S z^S3EpCx~f?$B`r&aZ#5vZf$f$z2gef(lqM*et6}0U^{q@`BV#q8a8+Dus=Uqb`clW zDhPN!74^TCZ({mKfL8z90pt>+zJ4FW6=|FFaYCF#ll#K)x@yJewh886Cj_wdMnkn5 zfX~tM#zrVuUL922i$D$ycKAs=J~M_D#!a*#Hjc^JH`&L9rj{PBE=A0_Va)dZh|RZ` z3d_Ju{K^aZgW*DuZ0r;W3lYHsz~w0bzCZm**p{Vrhh>C-s6@~*Wu>wi1?Q$|$xl2Q zOISmA(DsE43lL2WhX0gjDi5&B- zWroQ4V-CL9f*2T zGNQ1RYFEv<1P~Gs#o}@{mR+G8%x#Hw=QSU4m>no9e zA!dVCb>}Mel*go0n!+&4hz-IPo{5c~Ui_kp-cNWE~D1!&Oz94%``C!F8smK9< z1f9D>8`C6*UZ+eXxh@86>)81HG6HY4F`fwv(^-t{i20J)9dZfIM<@3kP9j^udAPT& z2zha$sH$0obB{TOi!#J-IKsxhttg)SG6=Nogt2Dg2tZm)Q))}sa~@T^;y&S6EbB7X z?ai#UHvJoKrMo@RUIReXmNHTU8;6o$+C6!SmV?^)7>@>i@4ve&48p^7_$8WJDL;M$ zuDm^5KljJ0c*zk2bLWJQg+N*qm0C;2UT^&4>G4~#a_yP^F90uciG_3LUY*&9L@R%| zSnJq$AN~n(@#`Vf_lWI{kHHNcyq@~ozD2*6OpMe*G_=~GayH_ov6 z)*!crt6Seox~D{pG*BZ-GZxyK@q#)%=8vfB$Fp13{CRkH!G*a-$IqHhB6hA|i;lCG zxEXOch++tIwTwTI+QnxjR%_A`o2T%ZscnWDGQFBU#P2Q%6Diw%3{(gC0#FByFXNXb=SZ+y+2rL_wO5{UXHbWp1MXRvW%JbCVa6t^ zU3w1mrjlS`SO=$e*3!RwqWvvPoF9J2QeNBdC2Eu|L7D_`L8evGuMRL!_Mpp{ zM1Je;4h2c01VblZRDCpJRt6oRjY};zwYo8rxk0JP^Wc>|mbVS>x!ONDD2@7=T(>T?}!R9Mt5k6_N-syA)0%q z8!J7$d&(0ZvaN>q(3?L)Ff6yspx3fqN-!AOKLUx)&9lj|i)3UeB*;`|y9qy|H?bxB zF9}`n4?Y0srmos?tI8bP6;>=#&YfNlakSXm=kyl2tsTyaO8DX=Az@Rb@|EX&fN`tZ zY{_9Ahgf{v@Hy*}i)WVDq|VmR$C`E~A+@ZaP0`%MgFu?DmUYWGWAiKP5+{LdrIqv9 z*y0%j7Ls$`Rz}1#-gf6A;5|#8!zT{0$w}zE{UM{^UEIfP6-!7T7e)u=CzY)26EnqW z2!7HkVp2s7^Mka@GxurH^ZhF5nWmcr=YZG-$fcGq$4)Z=G{DW}by}BSRW)@@TJ=cM zaoEqeTk`-q3f$C0v#5!3YhC6)jhtT#5_ZJ1ts*n&r6bOb`fs@(FbNTuVuDL)HLH2V z@dn4GnM3O2`qCtH=5ofg*&8+g2cOZ2LQF&Llgn=gjiA#>>VuPgX6NRS!J!i8twu1m z21wwHrb(B?>Vd`@$R&DcE6+(`j3G{FuV>1Y3%_1wv!3~ADNmeD&pWb@-PR;q@yUPYP>t*P6f=rVnyqyC;=^#g&+VFrD+}cOjmq#wWdNZK;Nbr zEG_k*5rWiUvV{49LnD^$Qc!9b?LB8LzBWXF#ekCmHC-D25U|lKEGW5sktYoOkZ1%F z==XIg3!q$pu?8Z2bEb=Lzwa*16a*gz{OuE8w$`io^>q~}{JUBX;F@fq2fVqIv zTe-E?#+Lz;+Bq&=AlaS`HX=^rnNF=jvMo&MtY!p{pl3t2r*}L1R@*H}#Q!00ej;-5 z1T(q$pFW(3M7_BJ{$)uv*gaqUA9Kps!xm8 zl#;J;nEVl1pV9h4W`7iT)El;VE3~W;1(l9ij|*uR;8#5c%0Ls+~Ohexb`%h`0Ge+jU#k#1R9SR9OKyC*m*xi4p`pzWpa%e8wkt=_as;2Qr`ts zRAZy7QCcDYIfvB>W6o)@7e_#@Hl}{hA3wkT`MZO7dUDuNVeGv2Fb}!&g-pTC&w{(_ z!)T+TroAxf?T=*kn#wqA7 zKn@P};(b|Lj`A)unQ3sCYyYVG%P2r7*&lYAfP`KoAkK zF6c?xkAJvGBA4o|&6&>1=YFBF4?U}GqvW=pd8_v|PndB=QcZt$Fam^8G$n_ThlIZ_ zh$|%8I<`Y}EdkPhuEWLbc-~K{1)ho;zc}(-NoQ5qcVX%^3yQ zrFYH-K;*L%3upDqKAQl4aF)n%`Q<)TBR%o_KUlW? z7{?_zv!^)M0v53<4L6>MnB?w&5pmF<+ zTbv`b`k|wa!T82@2;W4r3bb};vVL|h{H}ae_b33M7*WompG&6C0hXKh-5}nDY$Uev zeWdwPGa5Mn-T?kjD9v+td;0AlV)SfOfU6OP=WOzSF_A}a*Z)ps={}-!nT?aGHNg_v z%@OhHN}V-%Uieow$1BRta6b}nvru{0jfb4nmZ#@ zL4sh1F%H=$BI$7XhF&FBIO3d=DYLJUz0gxG-v%b>on;(cZkkWfB-R**xmtp+LE{GX zl;oMqUApgnN^_!)V@f2OMR8#MJeS;&KYfhY;*tGl-qI7L-jiS(ML+2Q$IQqEO5HHq zoJm{L#8{&i-{iZif8=Bz1m=Ky7L3^cuevk;OEP==_a%+qV%y2GKPP5y5^RnzzZ}SD7`e5eLEMT6+9&47hcW!l5Gr06h?PPwEhW93;1^ zts-C5Z2(Pe(-6cc(u21dkt)(q0#U_7Me-mw5hZ)jy;+koS}VOZ1SJ7@zJKe$AgPWg zxe{Cy>ww_E*8D@pN$|EYE%}nDc(z?v{2H|A4=h<+QF3p&CH`bFLuJ6A6I(^kss;_H zIA;Hy zZ$-YU;@qvx_q?{yKN#@7P`dps+T~bw!n5{ym+nK=TR0@bP<1EEIIpK7jDs)ocZW12 z?jpHCmFk~NWsnxZ#5-H@ZdV%7FPM5>+++VLjkNcx7oKOF#Kl-dd9IZ|&R5p%x2!Yk zB_7}*LV$O_lv!qxrXD;57$*y@5{rwDH;i45GSJO;kw%Oh9BxLpPasY#vPNIi(ptS zwFpFVeKF&`F!AiwMFC)&id%Tr)s%B|MR6`lC?K4ODk)}T99N2;M=gw>D*jRP zY!!gx^>p71#P+ML+F{CG8WC3GV!jAM`^o~>=v^?PBfP||PeAN#;K`WPR_nXx&-V7~ z-+5lfNDV=(0nEW&?IIIA`u%E_OqU?rX?i=b$LewgVDCjeC%R14qA!u6m!~+#A3#R( zbQtfNhU#vlCb+Suq0tgHOm(EVsr3S!Z3AG_^G($&oa#RuMr&?8`qvV-U1B^Obt;mF zlFKb7ji_2x5%In4Go{Mlw6-kJZ?qHfE4VmX1X|dEXE{UpE1Ved5F!s!fNQ;x)nG*+0)wH@4u~B>`G6NyRkmS-*5U(nCb8@&|&X$cgn9 z*$ay;w4@<5nv-gt-B`50#~4Gi-C(tyrNWL3ULpm6yk9M2fG}&As7Ha)ReTE%@U`ka=MU4yrTz^^&P0hue2XErO-Ay#rA=(`_*!&m$= zewr8W!T~NN{N8%ax9>D$sx_Y!Es8(A#-2vG>2GzZ21WEI#i+^A{wR;Qzb0N&=P-P108G51EV=MY!^+=cjXlFWbr+H z>EGIS=)ENj>?7^Edditk%l5r)ZgbJ|;VB|fPNzj5x_DR$bpuK)3k^POi_nM9`U+P4NkIKht( zXY&%9jf00$3V16dP{d6AN;A2>%x@P?<#!3h)jn8jzc{YSi0WW&=}sF%Eq`SUVN8j+ z39SY%a7J_OMzL8-A#{K|hK~{V+}%od3t}avKS3HTTglA*jHi$xEVW(qXxSrV(VmEV z5j*kKW@z#XG7%Nk*V~8=D{&oyhtW=-Z@MnD!De>_OdJCv$fK;`ISJ;^>cZ%V{&L34}9S+PGx^d-XRR9oa zwwEBa4M9$|xPR;_!{XNeC1(GM{<#Yj^AYp)z%Ha zWhBWGS_~7d1=v-SvNY_TN&A~!qLng)5hVaA3Slq$*;c%sjN8|lVL66 zonsny#c%1+J3wc`cc#8&-QAEHuY5 zoS7a=^b*qM2&c{}#IQRmy+uW+!}f$PDVz4_MQxEgt#RooFEb7y>Hnx+L(GAEj}4yB zXIJCOx9iT^kjMgD@;di>9Ks3i_Q$SMtY!m;G8X;kK*HbJ4xf(P?cqyk#QCUW5pMF0 zV6{@R>z*%#7E$@BOOK#2cI8Nzjdxb8Juy*tJL%LfO@y~q2M11`M+6A%I(^>BnmcrA z?_e-~^caR&OnJ*MJTb5iWq6xsRg|W*qa?33KzVRf1{Ua*q*Z7q)8 zQ+ZtJP=vEe%sqmjaz?VuT8ByQR`J@QAa-KMSOd=Bc^WGnTW z8OBFXKX@ez^|P5PEkOnZ*LjD!GtDFq7ZU9@sY2NuZ_EnSL*&mrA=DtyWLG~7c0J*s zEMfmlV2Dg*|}WLk&{3N03V-(R>6Y**VAUDgg2K?|?RO9DLt^sPjQEvX+sv z(B$u%F0@M}U+lJT+HWSj+>D(23&1c+oig}|mYwS-5f1B zfeP4EgebSA4$z=NH!U1L(IuNwVtiJEXEdqvJhpCsU_Oattqj&KGI|t=TVB$Vvd0-flzg#PPmGC7QtT6I^-AP*HRXl}v5z$Uki|M^y%Wm4xvKnm5Axsujfb#1SD z@66m%6kgfeyb?4Y<6sI`gD9n@)XaVL$raX5kpTh(9p{hnVXG0FFNusyMVLjz0+gcw zVW)r*$L!R`VqQGuCJ$Mc5{CBW#@p#|AZ7_S2`A+uCOlfe7yl&+*%}b=d1xcXa}p4c zqD54q8bik{4q0{7n&O7yB)F{qLOCO7BZ0; zUprt3!zdpNlyy)gwtAY03?xFE-Bb{LT2-b~`V)RcB)Hx9=QxFaEk}ggI`~nAu_r!7 zJ98wqw3DzOT~O3Ni|V`)DP! z(xpmuN^G@ww0j5SD4hO%*VBn4pKmX_vbUF>Tk~P}(sge5Hjhe^Qy;2%K7D4InV;^w zF2%4p{ny+*l}qKxQ2b%o z#!rPQdE_GlFVj``W1~eFWPIP!JSDiq5a6hxw zew)(MK>-x*=^wS5O+qfbF3s9w^yaIdVaq$pFM>yoLsJu;v)Rk`AG~|S!G?Fc)#Ufo z!oy$s%ybOz+a}-kp-dY`UcKQzyZ3JD)W1O!F~#+-{^^*hzx&$ZMbWpL6?!T9nal=n z_2ISCMdn_Q?l>GN4uAb+-)u2*U@|LX2>qkO{Qm5!DHloO8HayMA7<>CDtLQk)Fu2- zD&_aj2Td9Wf){^P8+cBadj1x=S~s74VZg5O`;mA1yT3N{{g_d9uG;IW`ZnzyANOGsw(hH@vuUQG^ZUocx^LP~y#}ZKf28wk z7v3HX@wx7A?AztGFj;(m;cb-eYoG4N+&_;EX8tNZG9uCaFo1OxCY2=sq2j3CxEZU2 zae5`*96YGIessZ8WTDT!5@SqdA{(W?FHJ<96ZJ05&=;CR_v{m_-Z76bCT&$$x3#nTiek}0kD`S<|s2GHJNMYGP#<~0qo3$ zSjqQ{OfO>AW@T2qCTr_lmXmANdSMnDlbs~|?;hLTZF*H`W-J@%ZOBe#=NyR3N!R?A z5+>Op%gWH?{63ch6LX`=b6k}+7EzEXQE{1@m>%F=<`Sv63_w6YskA02!H^9(GT@g z|Dy|zKsv+%X!^}{fbRQyjzaD)fe6m=j4p9=jw!{>H|#H3bAh4V?whQ?wg*d%embIJ zeGbekB}V7l&(mu{i)kpafF;*Q*`5(QOy|rU!;G*B?&03GeJjp}l={_X2SS~v7rSl_ zgO{9n@!PknNzZatF2>`?HPKS9Th6^V_|JzlrW+^JXJT%jtA2kAdUVvrUFk4K5N*2o z75dbZVU-iq`0H$X$$0FtjSobIi4Sw^nt#qgetGlT%h^xbPWg=?MPG@YwpB?8y~nSa zdfBGUB$L+13o{xL*{=fbLIm7jC2|DT;j39@HYvRNblrRXJ_U`N7g_#@v*h9H*nF4 zR>qyNix)h`Pl}?&uLxIe?H<37yVK3STj4Tq)uVWnZ_yL{`?B{F!T)DY?*Hnw`Tw!G G&wl_2Wzj7F literal 153150 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

yfCM**Rg2X;Cvr?k0cefb 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