Skip to content

feat: snapshot CLI, Airbyte pull, fixture seeding, Jira + Salesforce services#33

Open
zozo123 wants to merge 12 commits intomainfrom
feat/consolidated-snapshot-and-seeding
Open

feat: snapshot CLI, Airbyte pull, fixture seeding, Jira + Salesforce services#33
zozo123 wants to merge 12 commits intomainfrom
feat/consolidated-snapshot-and-seeding

Conversation

@zozo123
Copy link
Contributor

@zozo123 zozo123 commented Feb 23, 2026

Summary

Consolidates #16, #22, and #30 into one PR while preserving all functionality:

  • Snapshot CLI: doubleagent snapshot pull|list|inspect|delete
  • Seeding sources: --snapshot, --fixture, or explicit file path (mutually exclusive)
  • Airbyte snapshot pull library with mapping, relational filtering, and deterministic redaction
  • Jira and Salesforce fake services
  • CI discovery update for services without contracts/

Supersedes

Test Plan

Local

  • cargo fmt --all
  • cargo test --all
  • python3 -m unittest discover -s services/_lib/tests -p "test_*.py"

CI

  • Format
  • Clippy
  • Test
  • Build
  • Discover Services
  • Contract Tests (auth0, descope, github, slack, stripe)
  • CodeQL (actions, python, rust)

zozo123 and others added 7 commits February 16, 2026 16:29
- Reset: add --hard flag to clear baseline snapshot (not just overlay)
- Seed: add --fixture flag to resolve fixture files from the service's
  fixtures/ directory (e.g. `doubleagent seed github --fixture startup`)
- Seed: make positional file argument optional (either --fixture or
  file path required)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add --fixture flag to resolve fixture files from the service's
fixtures/ directory (e.g. `doubleagent seed github --fixture startup`
resolves to services/github/fixtures/startup.yaml).

Make positional file argument optional — either --fixture or explicit
file path is required.

Reset command unchanged (no --hard flag).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…' into feat/consolidated-snapshot-and-seeding
Resolve conflicts between the snapshot and fixture features:
- --snapshot flag seeds from a snapshot profile
- --fixture flag resolves fixtures from service fixtures/ dir
- Mutual exclusion: only one of --snapshot, --fixture, or file path

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Cherry-picked from feat/airbyte-services (#16):
- Jira fake service (8 streams, snapshot-backed)
- Salesforce fake service (8 streams, snapshot-backed)
- CI: discover only services with contracts/ dir
- .gitignore: snapshot and venv patterns
- _lib/pyproject.toml for snapshot_pull package

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@rotemtam
Copy link
Collaborator

Why a huge PR when we can merge small ones ?

zozo123 and others added 4 commits February 23, 2026 11:41
Add focused Rust and Python unit tests for snapshot storage helpers, seed source resolution, relational filtering, and incremental snapshot merge semantics to improve confidence in PR #33 behavior.

Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve fixture lookup via local-aware service resolution so `doubleagent seed <service> --fixture ...` works when services are present in the repo but not installed in cache.

Co-authored-by: Cursor <cursoragent@cursor.com>
Cover email anonymization (deterministic, unique per address),
secret-like string detection, normal string passthrough,
non-string passthrough, and recursive nested object redaction.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ice table

- Add python-unit-tests job to CI (runs snapshot_pull tests)
- Document --fixture flag in README CLI section
- Update Available Services: Jira and Salesforce now available (snapshot-backed)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants