mirror of
https://github.com/ruvnet/ruflo.git
synced 2026-09-14 14:01:28 +08:00
docs/chatgpt-plugin-reference
22 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
761dfcaa6d |
chore(deps): bump agentic-flow in /v3/@claude-flow/browser (#2907)
Bumps [agentic-flow](https://github.com/ruvnet/agentic-flow) from 2.0.13 to 2.1.2. - [Release notes](https://github.com/ruvnet/agentic-flow/releases) - [Changelog](https://github.com/ruvnet/agentic-flow/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/ruvnet/agentic-flow/commits) --- updated-dependencies: - dependency-name: agentic-flow dependency-version: 2.1.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
5482fe7f98 |
Merge pull request #2387 from ruvnet/dependabot/npm_and_yarn/v3/claude-flow/browser/types/node-20.19.43
chore(deps-dev): bump @types/node from 20.19.41 to 20.19.43 in /v3/@claude-flow/browser |
||
|
|
ec8fa84dc1 |
chore(deps-dev): bump @types/node in /v3/@claude-flow/browser
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.19.41 to 20.19.43. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 20.19.43 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> |
||
|
|
5378e1faed |
chore(deps-dev): bump vitest in /v3/@claude-flow/browser
Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 4.1.6 to 4.1.9. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/HEAD/packages/vitest) --- updated-dependencies: - dependency-name: vitest dependency-version: 4.1.9 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> |
||
|
|
f08318f2c7 |
fix(ci): green up the 3 audit jobs newly visible after the YAML fix
With #2267's YAML break gone and the pnpm-lock refreshed, the 25 newly- visible failures collapsed to 3 genuinely-independent audit failures. Fixing all three. #2046 — Supply-chain audit (1 unaccepted critical CVE) Vitest <4.1.0 UI server arbitrary-file-read/exec (GHSA-5xrq-8626-4rwp, CVSS 9.8) was unaccepted in v3/@claude-flow/browser. • Bumped `vitest` spec from ^4.0.16 → ^4.1.0 in browser package.json. • Refreshed the workspace pnpm-lock. • Standalone-publish package-lock.json carries workspace:* refs that `npm install` can't resolve in isolation, so I added a time-boxed (expires 2026-09-02) accepted-findings entry citing the limited exposure (devDependency + UI-server-only attack vector) and pinning the next workspace-coordinated lockfile rebuild as the trigger to remove it. Tracking: ruflo#2270. ADR-112 — Tool description discoverability (2 missing "Use when …") • hooks_task-completed: added "Use when native TaskUpdate is wrong because the runtime also needs to record the outcome as a learning signal and emit the standard pipeline event". • hooks_intelligence_unified-stats: added "Use when calling the four narrow aggregators one at a time is wrong because cross-store drift goes silent — this tool surfaces it in the `consistency` block". 327/327 tools now pass; baseline stays at 0. #1921 — Hook-command install safety (4 missing invariants) Both #1951 and #1989 fixes were silently retired by #2196's statusline delegation refactor. Updated scripts/audit-fix-invariants.mjs to track the new reality without dropping coverage: • #1951 (marketplaces/ruflo) — substring became `path.join(home, '.claude', 'plugins', 'marketplaces', 'ruflo', …)` which the literal substring check couldn't see. Switched to a regex form that matches the path.join breakup. • #1989 (SQLite magic-bytes + page-count clamp) — superseded entirely by #2196's delegation pattern: statusline-generator no longer reads raw memory.db bytes; it shells out to `hooks-statusline --json` which queries AgentDB via the typed SDK. The regression vector is closed by ARCHITECTURE. Replaced the two #1989 invariants with one #2196 invariant that locks in the delegation pattern, so a future refactor that reintroduces raw-bytes reading is caught BEFORE the SQLite magic check would be relevant. Audit-script convention says "do NOT delete without confirming the regression is impossible by another mechanism" — this is the documented confirmation. 37 invariants, all present. Local: all 3 audits + the 2 new regression smokes pass. Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
0e1d26c11e |
fix(security): patch CVEs, shell injection, SSRF in ruflo (#2114)
* fix(security): patch CVEs, shell injection, SSRF in ruflo
CWE-78 Shell Injection (9 execSync → execFileSync conversions):
- .claude/helpers/github-safe.js: replace execSync(`gh ${args.join(' ')}`)
with execFileSync('gh', args) in no-body and non-body code paths; the
body-with-file path already used a tempfile but still joined args into
a shell string for the final gh invocation.
- v3/@claude-flow/cli/.claude/helpers/github-safe.js: same fix (init-
template copy mirrors the dogfood helper).
- v3/@claude-flow/mcp/.claude/helpers/github-safe.js: older variant
without body-cap; apply execFileSync throughout.
- scripts/audit-supply-chain.mjs: execSync(`npm view "${name}"`) →
execFileSync('npm', ['view', name, ...]) so a malicious package name
in the allowlist JSON cannot inject shell commands.
- scripts/track-clones.mjs: execSync(`gh api repos/${repo}/...`) →
execFileSync('gh', ['api', `repos/${repo}/...`]).
- plugins/ruflo-core/scripts/witness/perf.mjs: six execSync calls in
benchmark runners (git rev-parse, pnpm pack ×2, npm init, npm pkg
set, npm install <tarball>, node verify.mjs) converted to
execFileSync with split argv arrays.
- v3/@claude-flow/browser/tests/e2e/browser-e2e.test.ts: execSync with
template-literal command string replaced by execFileSync with a
split-on-whitespace argv array.
CWE-918 SSRF (2 callCloudFunction guards):
- ruflo/src/mcp-bridge/index.js: add assertSafeUrl() before every
callCloudFunction call — rejects non-HTTPS schemes and private/
loopback IP ranges (10.x, 172.16-31.x, 192.168.x, 127.x, ::1,
fc/fd ULA, localhost, *.local).
- ruflo/src/ruvocal/mcp-bridge/index.js: identical guard applied to
the ruvocal variant of callCloudFunction.
npm audit: 0 vulnerabilities (package.json overrides already cover all
known CVEs; confirmed clean on this audit run).
All 10 github-safe injection smoke tests pass. No new test file failures
introduced vs pre-patch baseline (verified via vitest diff).
Co-Authored-By: claude-flow <ruv@ruv.net>
* fix(supply-chain): use execFileSync instead of undefined execSync in runCveAudit
The import on line 35 only brought in `execFileSync` from `node:child_process`,
but `runCveAudit` called the never-imported `execSync`, causing a ReferenceError
on every audit run and reporting 2 spurious CVE findings (one per audited package).
Replace `execSync('npm audit ...')` with `execFileSync('npm', [...args])` to
match the already-correct pattern used in `runPublisherTrustAudit` (line 303).
This also provides the CWE-78 shell-injection mitigation already documented in
that function's comment.
Full audit now exits 0: 0 CVE, 0 lockfile, 0 allowlist, 0 typosquat findings.
Co-Authored-By: claude-flow <ruv@ruv.net>
|
||
|
|
3dbf6074aa |
fix(deps): #2048 — bump agentic-flow ^2.0.12 → ^2.0.13 (Windows onnxruntime lazy-load)
agentic-flow@2.0.13 moves the onnxruntime-node native binding load out of
module-import time and into an on-demand `loadOrt()` helper called from
`initializeSession()`. This fixes ruflo#2048 — `import('agentic-flow/reasoningbank')`
on Windows crashed with "OS cannot run %1" because router/providers/onnx-local.ts
used a top-level `await import('onnxruntime-node')` which forced the native binding
to load before any user code ran, even when the consumer never intended to run
local ONNX inference.
Upstream PR: ruvnet/agentic-flow#155
Upstream release: agentic-flow@2.0.13 (now `latest` on npm)
Changes
- root package.json + package-lock.json: ^2.0.12 → ^2.0.13
- v3/@claude-flow/browser/package.json + package-lock.json: ^2.0.12 → ^2.0.13
- v3/pnpm-lock.yaml: regen → resolves 2.0.13
- .github/supply-chain/follow-ups.md: mark #2048 as fixed, link upstream PR + this PR
- .github/supply-chain/accepted-findings.json: add fixedDirectly entry for 2.0.13
Verification
- root npm audit: 0 vulnerabilities
- supply-chain audit (5 layers): OK, no hard-fail findings
- @claude-flow/browser tests: 230 passed | 12 skipped
- ruflo-graph-intelligence tests: 104 passed
- Acceptance test (run against published 2.0.13):
node -e "import('agentic-flow/reasoningbank').then(()=>console.log('OK'))"
node -e "import('agentic-flow/router').then(()=>console.log('OK'))"
Both succeed under default install AND under --omit=optional.
Follow-up CI guard (separate PR):
- Add Windows-runner smoke job that imports agentic-flow/reasoningbank under
--omit=optional to lock the lazy-load contract.
Co-Authored-By: RuFlo <ruv@ruv.net>
|
||
|
|
f60417352e |
fix(deps): #2046 ADR-124 — bump agentic-flow to 2.0.12 (xenova optional)
Upstream agentic-flow@2.0.12 shipped today (PR ruvnet/agentic-flow#154,
commit 2c10eb9) moving @xenova/transformers from `dependencies` to
`optionalDependencies`. Five of six call sites in agentic-flow already
used dynamic import; the sixth (src/reasoningbank/utils/embeddings.ts)
was converted to dynamic with try/catch + graceful fallback to the
existing hash-based embedding path.
This commit:
1. ADR-124 — full architectural record of the upstream fix +
downstream impact + rollout plan.
2. Bump agentic-flow ^2.0.11 → ^2.0.12 in:
- package.json (root)
- v3/@claude-flow/browser/package.json
3. Regenerate lockfiles:
- package-lock.json (root npm)
- v3/@claude-flow/browser/package-lock.json
- v3/pnpm-lock.yaml (v3 workspace)
4. Update .github/supply-chain/accepted-findings.json:
- Add entry to `fixedDirectly[]` documenting the 2.0.12 ship
- Replace the previous "blocked by upstream" CVE entry with a
"moot finding" entry. The vulnerable code is no longer installed
when consumers use `npm install --omit=optional`; `npm audit`
still reports it because it reads the lockfile graph (which
includes optionals) — a known npm limitation. Tracking now
points at the merged upstream PR + ADR-124.
After this commit:
- Root npm audit: 0 vulnerabilities (was 0 already after PR #2050; still 0)
- Browser tests: 230/230 passing
- Graph-intel tests: 104/104 passing
- Supply-chain audit: 0 hard-fail findings (1 accepted, moot)
- Consumers of @claude-flow/browser who pass `--omit=optional` get a
fully CVE-clean install profile
Closes the upstream half of #2046. ADR-121 Phase 4 still tracks the
long-term Xenova retirement.
Co-Authored-By: RuFlo <ruv@ruv.net>
|
||
|
|
9a8c9c464f |
fix(supply-chain): #2046 — eliminate all root-level HIGH/CRITICAL CVEs
Before:
Root npm audit: 13 HIGH/CRITICAL across 25 vulns
@claude-flow/browser fresh install: similar transitive chain
Audit script reported 0 unaccepted only because it correctly scopes
to direct deps — but transitive surface was hostile
Changes:
1. Bump agentdb to 3.0.0-alpha.14 (was alpha.10/13 across repo)
- 3.0.0-alpha.14 dropped @opentelemetry/sdk-node from its
dependencies block (still in optionalDependencies; overrides handle
that). Eliminates the @opentelemetry/sdk-node CVE chain via direct
dep replacement.
- Updated: v3/@claude-flow/memory, v3/@claude-flow/cli, root.
2. Bump agentic-flow 2.0.7 → 2.0.11 (root) and ^2.0.3 → ^2.0.11
(v3/@claude-flow/browser). Latest 2.x; closer to a Xenova-clean
release when upstream ships it.
3. Add npm overrides at the root + at v3/@claude-flow/browser package
(overrides do not cascade across separate npm projects, so browser
needs its own block for standalone publish):
@opentelemetry/sdk-node >= 0.218.0 (was <0.217.0 CVE)
@opentelemetry/auto-instrumentations >= 0.75.0
@opentelemetry/exporter-prometheus >= 0.217.0
axios >= 1.13.2
fast-uri >= 3.1.0
vite >= 6.4.6
ws >= 8.18.4
Plus the existing browser-package overrides for hono / undici / tar /
minimatch / picomatch / flatted / etc. — copied from root to keep
the standalone npm-published install clean.
After:
Root npm audit: 0 vulnerabilities (13 HIGH/CRITICAL → 0)
Supply-chain audit: PASS (0 unaccepted direct-dep findings)
Browser tests: 230/230 passing
Graph-intel tests: 104/104 passing
One CVE remains in v3/@claude-flow/browser's STANDALONE fresh install
(end-user `npm install`): @xenova/transformers via agentic-flow direct
dependency. Cannot fix without upstream agentic-flow shipping a Xenova-
free release. agentic-flow@3.0.0-alpha.2 still has it. Documented in
accepted-findings.json under cve[] with:
tracking: ADR-121 Phase 4
expiresAt: 2026-08-19 (audit re-fails if upstream still hasn't shipped)
rationale: browser package does not invoke embedding code paths
This is the right level of triage. The audit doesn't lie about it — it
just doesn't block our shipping while we wait for upstream.
Co-Authored-By: RuFlo <ruv@ruv.net>
|
||
|
|
72d31a00a8 |
docs(browser): #2041 ADR-122 security audit + substrate benchmarks + announcement draft
- scripts/benchmark-substrate.mjs — measures Phase 1/2/3/5/7 throughput; results: Ed25519 sign 37µs, verify 88µs, annotate 2µs, vault verify 83µs, classify 0.16µs, production UCT 0.32µs, compile 23µs. All under 100µs. - docs/SECURITY_AUDIT.md — full audit: 0 new vulnerabilities, all transitive findings (Xenova, OTel, sqlite3) tracked under ADR-118/121. Code-level review per phase: timing-safe verify, no shell injection, anchored regexes, fail-safe JSON parsing, defense-in-depth on attestations. Approves 3.0.0-alpha.4 for npm publish. - docs/ANNOUNCEMENT.md — substrate framing + 8-phase table + benchmarks + quick-start. To be uploaded as a public gist at publish time. Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
350bcf0606 |
feat(browser): #2041 ADR-122 Phase 7 — Workflow Compiler + production-aware UCT
Phase 7 (substrate-layer compiler):
- domain/workflow.ts — CompiledWorkflow schema with WorkflowStep (primary
SelectorSpec + ordered fallback chain), WorkflowRequirements (sessionCapsule,
origins[], taskClass), WorkflowGuards (irreversibleAction,
requiresUserConfirmation), WorkflowReplay (maxRetries, timeoutMs).
ProductionUctSignals/Weights for the production-aware UCT formula.
- application/workflow-compiler.ts — WorkflowCompiler.compile() walks a signed
trajectory envelope's steps, extracts the primary locator from each step
input, derives an ordered selector fallback chain from observed snapshot
metadata (role+name → text → ref), classifies highest-risk action via
Phase 6 RiskClassifier, gates requirements + guards. toYaml() emits
deterministic, parseable YAML for VCS check-in.
- application/production-uct.ts — productionUct(input, weights) implements
the full substrate scoring formula:
score = Q + C·√(ln(N)/n) + λ_R·replayability
− λ_risk·risk − μ_cost·cost − α_auth·auth_fragility
Unvisited branches still return +Infinity for parity with Phase 4 UCB1.
blendQ() linearly mixes scorer value + replay-success-rate.
- 12 new tests: compile login flow + fallback chain, financial-action
guard escalation, origin extraction, deterministic YAML output, UCT
invariants (infinity for unvisited, prefers safe over risky, penalises
cost, rewards replayability, custom weights honoured), blendQ linearity.
Renames in src/index.ts re-export: WorkflowStep → CompiledWorkflowStep
(avoids collision with workflow-templates.ts's pre-existing WorkflowStep).
230/230 tests passing (+12 for Phase 7). Build + typecheck clean.
Beyond SOTA: no other web agent compiles MCTS traces into signed, replayable
YAML workflows with selector fallback graphs. The compiler is the "output of
the substrate" — what makes browser experience truly reusable.
Co-Authored-By: RuFlo <ruv@ruv.net>
|
||
|
|
45f951143e |
feat(browser): #2041 ADR-122 Phase 6 + substrate reframing — Session Capsule + adapters + risk classes
ADR-122 reframed as **RuFlo Browser Substrate**: ruflo becomes the memory, policy, replay, distributed-planning layer underneath browser agents. Stagehand, Browser Use, Playwright, Browserbase, Surfer-H become execution targets — not competitors. Added Architecture section: layered system, 6 runtime services, risk-class taxonomy, Session Capsule schema, production-aware UCT, SOTA rubric. Phase 6 implementation (substrate primitives): - domain/session-capsule.ts — full SessionCapsulePayload with origins[], reusePolicy (allowedOrigins, allowedTaskClasses, maxReplays, requireFreshMfa, allowCrossDevice/Installation), consentProof (signed statement), browserProfile, witnessChainHead, expiry, replays counter. RiskClass enum (read-only / authenticated-read / draft-write / external-submission / financial / account-mutation / destructive) + AUTONOMOUS_CLASSES set. - application/session-capsule-service.ts — create() with PII-scan gate, verify() with schema+signature+trust-list+expiry+maxReplays checks, mount() that increments replays + rolls witness chain head, revoke(), per-class RiskClassifier with verb+target regex taxonomy. - domain/browser-adapter.ts — BrowserExecutionAdapter interface (single surface above the tool wars: open/snapshot/click/fill/type/screenshot/wait/ getUrl/getTitle/getText/close/observe). - infrastructure/agent-browser-execution-adapter.ts — first concrete adapter wraps existing AgentBrowserAdapter; future Phase 6.5+ adds Stagehand, Browserbase, local Chrome. - 20 new tests: clean+PII create, tamper rejection, expired capsule, trust list, mount replays + chain head, maxReplays cap, origin/taskClass policy enforcement, revoke, RiskClassifier for all 7 classes (Class 1-3 autonomous, Class 4-7 human approval), inline-state PII detection regression fix (string-spread bug that prevented SSN regex matching). 218/218 tests passing (+20 for Phase 6). Build + typecheck clean. Beyond SOTA: no public browser-agent system ships a signed-state capsule with origin scope, consent proof, replay counter, witness chain, AND risk-class gating. Stagehand v3 portability + Browserbase persistence + Surfer-H vision are all *execution-layer* — ruflo is the substrate that sits above them. Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
a0d3d01c33 |
feat(browser): #2041 ADR-122 Phase 5 — cost-aware routing + GOAP preflight
- domain/action-routing.ts — ActionTier, RoutingDecision, TrajectoryCostReport - application/action-router.ts — verb-based 3-tier classifier (Tier 1 booster $0, Tier 2 haiku $0.0002, Tier 3 sonnet/opus $0.005+); causal-risk-aware escalation; per-trajectory cost rollup with tier-1 share - application/goap-preflight.ts — pre-session dry-run: missing-cookie / high-causal-risk / unsafe-URL findings + estimated total cost - 11 new tests: classification (DOM verbs Tier 1, find Tier 2, eval Tier 3), risk escalation, cost rollup with tier-1 share ≥30% on representative workload, GOAP preconditions (cookie present/missing), high-causal-risk warning, URL safety, routing-plan + total-cost emission 198/198 tests passing (+11). Build + typecheck clean. All 6 phases done. Beyond SOTA: combines existing ruflo primitives (Agent Booster, hooks_route, ruflo-goals GOAP, AIDefence) into a per-action cost optimizer that no single-process LLM browser agent ships. Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
dfb7747b32 |
feat(browser): #2041 ADR-122 Phase 3 + Phase 4 — attested cookie vault + federated MCTS
Phase 3 — AIDefence-attested cookie vault: - domain/cookie-vault.ts — CookieValue, ScanAttestation, VaultEntryEnvelope - application/cookie-vault-service.ts — store() with AIDefence-gate, sealed envelope sign, verifyAttestation(), refusal audit log, optional persistence - 14 new tests: clean store + verify, PII refusal (cookie + audit + no persist), tamper detection (value swap, hash+value swap, schema-invalid), clean=false attestation refusal (defense in depth), trust-list filter, audit record Phase 4 — Federated MCTS branch exploration: - domain/mcts-branch.ts — McTsBranch, MctsRunResult, PeerAdapter, ValueScorer - application/mcts-explorer.ts — UCB1 selection, backprop, expansion via policy, least-spend peer load balance, per-peer budget caps, signature blacklist, pending-branch finalization (rejected-budget vs terminated) - 8 new tests: UCB1 invariants, basic exploration, tree expansion, signature rejection + peer blacklist, budget enforcement, multi-peer distribution, winner-by-average-score Beyond SOTA — both phases: - No web agent ships per-cookie attestation; cross-installation cookie sharing is a known open problem. The witness signature is the trust boundary. - No web agent distributes MCTS exploration across multiple installations. PeerAdapter abstracts local vs federation execution; the explorer itself is the wedge (signature verification + cost gating + winner selection). 187/187 tests passing (+22). Build + typecheck clean. Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
8d10e1aa8c |
feat(browser): #2041 ADR-122 Phase 1 MCP + Phase 2 causal recovery
Phase 1 MCP tool surface (5 new tools):
- browser/sign-trajectory — seal a BrowserTrajectory into Ed25519 envelope
- browser/verify-trajectory — verify with optional trust-list filtering
- browser/plan-replay — dry-run replay with mutations (no browser exec)
- browser/build-replay-delta — detect action/outcome drift between runs
- browser/generate-witness-key — bootstrap a fresh Ed25519 keypair
Phase 2 (beyond-SOTA wedge: causal-graph self-healing selectors):
- domain/causal-recovery.ts — SelectorBreakEvent + CausalRiskAnnotation types
- infrastructure/causal-recovery-store.ts — in-memory + JSON-on-disk store
+ classifyBreak() taxonomy: not-found/not-visible/not-enabled/detached/
ref-stale/timeout/navigation-during-action/unknown
+ parseUrl() for origin/path isolation in the graph
- application/causal-recovery-service.ts — reportBreak / annotateSnapshot
/ decorateTree / explain (prior breaks + alternative locator suggestions)
- 18 new tests: classification, URL parsing, risk scoring (0→N breaks),
snapshot annotation, cross-origin isolation, explain with role+name
fuzzy-match, listBreaks
165/165 tests passing (was 147; +18 for Phase 2). Build + typecheck clean.
Beyond SOTA: no other web agent (Surfer-H, Browser Use, Stagehand, Operator,
Skyvern) surfaces WHY a selector broke — they retry silently. AgentDB-backed
swap is a single-file change (IBreakStore interface).
Co-Authored-By: RuFlo <ruv@ruv.net>
|
||
|
|
5fedd1d022 |
feat(browser): #2041 ADR-122 Phase 0 + Phase 1 — agent-browser 0.27 + signed trajectories
Phase 0 (convergence): - Bump agent-browser dep ^0.6.0 → ^0.27.0 (21-minor drift closed) - Package version → 3.0.0-alpha.4 - Adapter already had full 0.27 surface (find/mouse/set/network/tabs/etc.) Phase 1 (beyond-SOTA wedge: signed trajectory containers): - domain/signed-trajectory.ts — envelope schema + replay types - infrastructure/witness-signer.ts — Ed25519 sign/verify via node:crypto - application/signed-trajectory-service.ts — seal/verify/replay-plan/replay-delta - BrowserService.endTrajectory now optionally seals via signTrajectories:true - 19 new tests: round-trip, tamper detection, trust list, replay planning, delta detection, determinism. 147/147 tests passing. Acceptance (Phase 1): - record → sign → distribute → verify round-trips - forging a step/goal/screenshot-hash breaks verify (signature invalid) - trust-list filtering accepts/rejects by signer public key - replay planning applies replaceStepInput + skipSteps mutations - buildReplayDelta detects action drift + outcome drift Beyond SOTA: no other web agent (Surfer-H, Browser Use, Stagehand, Operator, Skyvern) ships cryptographic provenance for AI browsing sessions. Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
5b71c7ac13 |
release(alpha.43+44): pin neural→sona@0.1.5, republish modules w/ standalone READMEs, add npm download badges everywhere (#2022)
This commit closes the chain started in |
||
|
|
b9e2eb37e0 |
fix(deps): bump vulnerable vitest pins to ^4.0.16 (#1609) (#1819)
Several @claude-flow/* packages still pinned vitest to ^1.x or ^2.x. That range pulls vite <=6.4.1 → esbuild <=0.24.2, which carries GHSA-67mh-4wv8-2f99 (esbuild dev server exposes arbitrary file reads via network) — npm audit reports 4 moderate-severity vulnerabilities. Fix is to bump every workspace package to vitest ^4.0.16 (which pulls vite >=6.4.2, esbuild >=0.25.0, all clear). Most packages were already on 4.x; this PR bumps the holdouts: - @claude-flow/aidefence ^1.1.0 → ^4.0.16 - @claude-flow/browser ^2.0.0 → ^4.0.16 - @claude-flow/codex ^1.4.0 → ^4.0.16 - @claude-flow/plugin-agent-federation ^1.6.0 → ^4.0.16 - @claude-flow/plugin-iot-cognitum ^1.6.0 → ^4.0.16 - @claude-flow/testing peerDep >=1.0.0 → >=4.0.16 The lockfile regenerated cleanly — net 590 lines smaller as the dual vitest 1.x / 2.x transitive trees collapse into a single 4.x tree. Republish required for the affected packages to land the fix on npm (this only updates source + workspace lockfile). Closes #1609. |
||
|
|
5151aa9b24 |
fix: monorepo-wide test fixes — all 20 packages green (5,370 tests)
Fixes across 8 packages to achieve 100% test pass rate: - shared: sql.js getAsObject([]) fix for event-store stats; ESM fs import - memory: hybrid-backend tests tolerate degraded health status - embeddings: infinite-loop fix in chunking (overlap >= maxChunkSize); euclidean similarity test; vitest config cleanup - hooks: guidance-provider test timeout (5s → 15s) - browser: test mock corrected to execFileSync call signature - plugins: HookBuilder missing when/handle/transform methods; TestPlugin state shadowing fix; dep version parsing (name@version); conflict error propagation; namespace strategy renames both entries; restoreState API - integration: getCompactContext DB error handling; topology always hierarchical (anti-drift); batch size cap at 5 - aidefence/deployment/integration/providers: local vitest.config.ts to discover src/__tests__/ test files Co-Authored-By: claude-flow <ruv@ruv.net> |
||
|
|
e50df67226 |
fix: critical security & performance fixes across 6 packages (#1558)
* fix: critical security & performance fixes across 6 packages Addresses 11 vulnerabilities from security audit + 5 additional issues found during devil's advocate review, plus test suite fixes across memory, security, and swarm packages. ## Security Fixes (Critical) - CRIT-01: SQL injection in embeddings search — replaced string interpolation with parameterized queries (db.prepare/bind) - CRIT-02: Command injection in 4 files — replaced execSync template literals with execFileSync + input validation regex: - ruvector/import.ts (docker container name) - init.ts (embedding model name, 2 locations) - agent-browser-adapter.ts (CLI args) - CRIT-03: Browser eval hardening — 12 dangerous patterns blocked, configurable 20KB length limit via CLAUDE_FLOW_MAX_EVAL_SCRIPT_LENGTH ## Security Fixes (High) - HIGH-01: ESLint rules restricting child_process imports (both import and require) with overrides for safe-executor/daemon/mcp-server - HIGH-02: Hive-mind truthiness fix (=== true vs !== false) - HIGH-03: Prototype pollution prevention — safeJsonParse with JSON reviver stripping __proto__/constructor/prototype in 3 memory backends - HIGH-04: Plugin sandbox warning on unsandboxed plugin load - HIGH-05: HNSW hash collision fix — dual-hash (djb2+sdbm) producing 53-bit values with bidirectional map and linear probing ## Security Fixes (DA Review) - DA-CRIT-1: Local json-security.ts to avoid cross-package imports - DA-CRIT-2: PostgreSQL schema name validation (validateSchemaName) added to all 6 ruvector commands via pg-utils.ts - DA-CRIT-3: PID injection prevention in mcp-server — /proc read + execFileSync replacing execSync with PID interpolation - DA-HIGH-3: Timestamp validation (validateTimestamp) in ruvector import - DA-HIGH-4: 4 additional browser eval bypass patterns (globalThis, .constructor, Reflect, eval()) - DA-HIGH-5: ESLint no-restricted-modules for require() coverage ## Performance Fixes - PERF-01: BoundedSet<T> for gossip seenMessages — Map-based LRU eviction capped at 100K entries, prevents unbounded memory growth - PERF-02: Bulk operations use Promise.allSettled with batch size 50, logging partial failures instead of aborting - PERF-03: CLI lazy loading — reduced sync imports from 37 to 10 core commands, async getCommandsByCategory() for help display ## Test Suite Fixes - Fixed 11 broken import paths in security tests (../../security/ → ../src/ and ../../helpers/ → ../helpers/) - Added vitest.config.ts for security package (was inheriting root config with missing setup.ts reference) - Added allowedDirectories to SecurityConfig test fixture - Fixed sanitizePath test expectation (leading slash removal) - Fixed hardcoded /workspaces/claude-flow path in memory tests - Fixed semanticRouter controller test (auto-enables with agentdb) - Fixed database-provider count test (namespace-scoped assertion) - Fixed swarm latency tests (toBeGreaterThanOrEqual for sub-ms mocks) - Added TypeScript as dev dependency for build verification ## Verification - 22 automated security verification tests in security-verification.test.ts covering all 10 user-facing scenarios - All 5 packages type-check clean (0 errors) - memory: 9/9 suites, 353/353 tests pass - swarm: 4/4 suites, 172/172 tests pass - security: 13/13 suites, 444/444 tests pass - CLI help displays all 35 commands correctly with lazy loading ## New Files - v3/@claude-flow/cli/src/commands/ruvector/pg-utils.ts - v3/@claude-flow/cli/.eslintrc.json - v3/@claude-flow/cli/__tests__/security-verification.test.ts - v3/@claude-flow/memory/src/json-security.ts - v3/@claude-flow/security/vitest.config.ts Co-Authored-By: claude-flow <ruv@ruv.net> * fix: address Sherlock review findings for PR #1558 Finding 2 (MUST FIX): Add formatEmbedding array-element validation - Validate each embedding value is typeof number && Number.isFinite() - Prevents SQL injection via crafted JSON arrays with string payloads - Throws descriptive error with index for debugging Finding 1: Reclassify CRIT-03 eval blocklist as defense-in-depth - Add comment clarifying pattern blocklist is best-effort, not a sandbox - Primary defense is the browser sandbox itself - Update test description to reflect defense-in-depth classification Finding 3: Add behavioral tests alongside source-guards - Add formatEmbedding behavioral test with hostile inputs (NaN, Infinity, strings) - Add CRIT-02 behavioral test verifying execFileSync array argument pattern - Categorize existing tests as source-guard vs behavioral in comments Finding 4: Flag HIGH-02 as behavior change - Add comment explaining === true vs !== false semantic difference - Documents that undefined/null no longer treated as "skip permissions" Finding 6: Export BoundedSet, fix test semantics - Export BoundedSet from gossip.ts for reuse - Fix test to use FIFO semantics matching production (not LRU) - Add FIFO-specific test: re-adding doesn't refresh position Finding 7: Fix BoundedSet comment math - Remove speculative throughput time estimate - Use factual memory calculation: 100K × ~40B IDs ≈ 4MB Finding 5: No change (false positive — Math.abs in manhattanDistance is correct) Co-Authored-By: claude-flow <ruv@ruv.net> --------- Co-authored-by: claude-flow <ruv@ruv.net> |
||
|
|
322b2ae521 |
fix: @claude-flow/browser peer dep, dist-tags, bump to alpha.3
- Updated peerDependencies @claude-flow/cli from ^3.0.0-alpha.140 to >=3.5.0 - Fixed npm dist-tags: both alpha and latest now point to 3.0.0-alpha.3 - 128 tests pass, build clean, all exports verified Co-Authored-By: claude-flow <ruv@ruv.net> |
||
|
|
3471ee7c3f |
docs: Improve README organization with badges and section groups (#976)
* Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:15:40Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:15:41Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:15:42Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:18:17Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:18:18Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:19:12Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:19:14Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:20:02Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:20:04Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:20:05Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:21:00Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:21:01Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:21:25Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:27:22Z - Changes: 3 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:27:23Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:27:44Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:27:45Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:29:03Z - Changes: 6 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:29:04Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:29:16Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:29:17Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:29:18Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:32:32Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:32:33Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:33:39Z - Changes: 3 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:33:40Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:33:46Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:33:52Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:33:59Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:34:12Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:34:27Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:34:48Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:34:50Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:36:04Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:36:06Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:36:07Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:36:08Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:36:50Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:40:27Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:40:28Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:41:31Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:49:34Z - Changes: 6 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:49:35Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:49:37Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:50:22Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:50:23Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:50:29Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:50:36Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:50:44Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:50:51Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:51:13Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:51:14Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:51:53Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:51:54Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:51:56Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:51:57Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:52:19Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:52:26Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:52:34Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:52:41Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:52:49Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:52:57Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:53:04Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:53:12Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:53:20Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:53:28Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:53:36Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:53:44Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:53:52Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:53:59Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:54:07Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:54:36Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:56:00Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:56:02Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:56:03Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:56:23Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:56:24Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:56:25Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T20:56:46Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:01:19Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:04:35Z - Changes: 6 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:05:37Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:05:41Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:05:49Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:05:58Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:06:06Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:06:14Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:06:22Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:06:30Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:15:11Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:15:12Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:15:37Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:15:43Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:16:16Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:18:22Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:22:19Z - Changes: 11 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:27:21Z - Changes: 2 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:27:39Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:27:45Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:27:51Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:28:03Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:28:17Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:28:57Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:29:02Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:29:29Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:39:40Z - Changes: 6 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:53:53Z - Changes: 5 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:58:58Z - Changes: 10 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T21:59:16Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:23:05Z - Changes: 5 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:23:19Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:34:46Z - Changes: 5 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:34:59Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:38:34Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:44:37Z - Changes: 6 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:47:50Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:47:55Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:48:00Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:48:05Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:48:10Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:48:15Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:48:21Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:48:26Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:48:31Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:48:36Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:48:41Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:48:46Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:48:52Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:48:57Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:49:02Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:49:07Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:49:12Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:49:17Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:49:23Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:49:28Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:49:32Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:49:37Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:49:41Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:49:46Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:49:51Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:49:55Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:50:00Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T22:50:05Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T23:27:53Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T23:27:59Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T23:28:05Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T23:28:11Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T23:28:17Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T23:28:23Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T23:28:28Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T23:28:33Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T23:28:39Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T23:28:44Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T23:28:50Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T23:28:55Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/agent-browser-integration - Timestamp: 2026-01-20T23:29:07Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> |