Commit Graph

702 Commits

Author SHA1 Message Date
Peter Steinberger
90b214b57c
fix(cli): fail unknown list targets 2026-06-08 20:02:50 +01:00
Lil Z
68b228943c
fix(daemon): stop direct starts orphaning live daemon
Stop direct and foreground daemon starts from orphaning an already-running daemon by validating live daemon metadata, repairing missing metadata, and replacing stale-definition daemons only after they exit.

Proof:
- ./runner pnpm exec vitest run tests/daemon-host.test.ts tests/daemon.integration.test.ts
- ./runner pnpm check
- ./runner pnpm test
- autoreview --mode branch --base origin/main
- PR CI passed on macOS, Ubuntu, Windows, and Socket checks

Co-authored-by: zm2231 <25645999+zm2231@users.noreply.github.com>
2026-06-08 11:35:22 -07:00
Sebastian B Otaegui
f37a642a80
feat(runtime): re-export RuntimeOptions
Some checks failed
CI / build (${{ matrix.os }}) (macos-15) (push) Has been cancelled
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Has been cancelled
CI / build (${{ matrix.os }}) (windows-latest) (push) Has been cancelled
Re-export `RuntimeOptions` from the public package entry so consumers can name the `createRuntime` options shape directly.

Proof:
- `pnpm docs:list`
- `pnpm check`
- `pnpm test` (123 files passed, 1 skipped; 706 tests passed, 3 skipped)
- `pnpm build`
- `rg -n "RuntimeOptions" dist/index.d.ts dist/runtime.d.ts` confirmed the built declaration barrel exports the type.
- Autoreview branch vs `origin/main`: clean, no accepted/actionable findings.
- Existing PR CI green: ubuntu-latest, macos-15, windows-latest.

Co-authored-by: Sebastian Otaegui <feniix@gmail.com>
2026-06-06 22:32:42 -07:00
LDMB123
2bf7a5eab2
fix(replay): rewrite response ids during replay (#192)
Some checks failed
CI / build (${{ matrix.os }}) (macos-15) (push) Has been cancelled
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Has been cancelled
CI / build (${{ matrix.os }}) (windows-latest) (push) Has been cancelled
pages / Deploy docs (push) Has been cancelled
* feat(record): capture MCP call streams to NDJSON and replay deterministically

mcporter record <session> wraps the runtime transport and appends every
JSON-RPC request, response, and notification to a per-session NDJSON file
under ~/.mcporter/recordings/. mcporter replay <session> reconstructs an
in-memory transport from the recording and matches requests by method +
deep-equal params, returning the recorded response without contacting
the live server.

Use cases:
- Reproduce MCP-backed agent bugs offline (no live Linear quota, no
  Vercel API rate limits)
- Build test fixtures from real call sequences
- Share a session for a postmortem without sharing credentials

The format is plain JSON-RPC over NDJSON with a small _meta field
(direction, server, timestamp). No proprietary blob. Env-var passthrough
(MCPORTER_RECORD=<name>, MCPORTER_REPLAY=<name>) lets the existing
runtime constructor wrap any transport when set.

* fix(replay): attach cause to wrapped errors to satisfy preserve-caught-error lint

* fix(replay): rewrite response ids during replay

* fix(replay): harden record replay modes

Clear conflicting record/replay env vars when spawning wrapped commands, force those commands off the daemon fast path, truncate each recording file at session start, and fail replay close when recorded requests remain unused.

* fix(cli): preserve wrapped command flags

Stop global flag extraction at -- so record/replay wrappers do not consume child command flags, and drop the release-owned changelog entry from the PR diff.

* fix(replay): propagate cleanup failures through cli

Ensure replay-mode transport close failures escape normal runtime and CLI cleanup after best-effort shutdown has completed. Add runtime and CLI regressions for partial recordings that leave requests unreplayed.

* fix: harden record replay runtime paths

* test: align replay fixtures with windows home

---------

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-31 08:52:02 +01:00
Peter Steinberger
56be50f763
fix(daemon): keep stdio list requests warm
Some checks failed
CI / build (${{ matrix.os }}) (macos-15) (push) Has been cancelled
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Has been cancelled
CI / build (${{ matrix.os }}) (windows-latest) (push) Has been cancelled
2026-05-29 05:18:32 +01:00
Peter Steinberger
815016a008
docs: position README banner
Some checks are pending
CI / build (${{ matrix.os }}) (windows-latest) (push) Waiting to run
CI / build (${{ matrix.os }}) (macos-15) (push) Waiting to run
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Waiting to run
2026-05-28 20:48:14 +01:00
Vincent Koc
b86eec0b7f
ci: pin macOS runner labels 2026-05-28 20:53:18 +02:00
Peter Steinberger
fb3f041339
docs: add README banner 2026-05-28 19:43:30 +01:00
Peter Steinberger
f4f209317f
fix: reconcile daemon lifecycle starts 2026-05-28 16:45:31 +01:00
Vincent Koc
552fcb1f60
fix(security): update vulnerable dependencies
Some checks are pending
CI / build (${{ matrix.os }}) (macos-latest) (push) Waiting to run
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Waiting to run
CI / build (${{ matrix.os }}) (windows-latest) (push) Waiting to run
2026-05-28 11:50:00 +02:00
Peter Steinberger
49dc62b9ee
fix: harden OAuth vault recovery (#190)
Some checks failed
CI / build (${{ matrix.os }}) (macos-latest) (push) Has been cancelled
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Has been cancelled
CI / build (${{ matrix.os }}) (windows-latest) (push) Has been cancelled
* fix: harden OAuth vault recovery

* style: format OAuth recovery code
2026-05-26 15:47:31 +01:00
Vincent Koc
1c5e96483e
chore: add constrained Crabbox setup
Some checks failed
CI / build (${{ matrix.os }}) (macos-latest) (push) Has been cancelled
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Has been cancelled
CI / build (${{ matrix.os }}) (windows-latest) (push) Has been cancelled
Adds constrained Crabbox setup and the exact OpenClaw Crabbox skill for maintainer validation.
2026-05-23 05:59:27 +08:00
Peter Steinberger
0c36a6d3f8
docs: start 0.11.4 changelog
Some checks failed
CI / build (${{ matrix.os }}) (windows-latest) (push) Waiting to run
CI / build (${{ matrix.os }}) (macos-latest) (push) Waiting to run
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Waiting to run
pages / Deploy docs (push) Has been cancelled
2026-05-21 22:34:46 +01:00
Peter Steinberger
94e65ba057
chore: release 0.11.3 2026-05-21 22:28:27 +01:00
Peter Steinberger
67e3f5250f
fix: fall back to legacy config after empty xdg home (#185) 2026-05-21 22:15:13 +01:00
Peter Steinberger
82b19535d8
docs: start 0.11.3 changelog 2026-05-21 21:33:06 +01:00
Peter Steinberger
9ec79f2b80
docs: correct 0.11.2 release date 2026-05-21 21:28:06 +01:00
Peter Steinberger
348483ea9f
docs: release 0.11.2 changelog
Some checks failed
CI / build (${{ matrix.os }}) (macos-latest) (push) Has been cancelled
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Has been cancelled
CI / build (${{ matrix.os }}) (windows-latest) (push) Has been cancelled
pages / Deploy docs (push) Has been cancelled
2026-05-20 20:59:41 +01:00
Peter Steinberger
de7c811271
feat: add list health check flags (#183) 2026-05-20 20:55:21 +01:00
Peter Steinberger
a1201d1955
fix: support daemon idle timeout config 2026-05-20 17:34:42 +01:00
Peter Steinberger
31bbaa804f
fix: preserve valid cached OAuth tokens 2026-05-20 17:21:05 +01:00
Peter Steinberger
3ca4b5bae8
Merge pull request #178 from asim48-ctrl/codex/document-oauth-process-manager-auth
docs: clarify headless OAuth process lifetime
2026-05-20 17:11:55 +01:00
Peter Steinberger
e6e9675519
docs: update changelog for daemon OAuth fix 2026-05-20 17:10:52 +01:00
Peter Steinberger
ccfaa2f4f0
Merge pull request #182 from bradhallett/fix/daemon-allowCachedAuth
fix(daemon): pass allowCachedAuth to runtime for OAuth token reuse
2026-05-20 17:10:33 +01:00
Peter Steinberger
86e19f4413
fix: use cached auth for daemon OAuth calls 2026-05-20 17:09:14 +01:00
Peter Steinberger
1948ba7bef
docs: add project vision 2026-05-20 16:53:39 +01:00
Peter Steinberger
524e0a2d2f
fix: make generated cli bundles deterministic 2026-05-20 16:53:37 +01:00
Peter Steinberger
b8909e7cc0
docs: add vision triage guidance 2026-05-20 16:14:06 +01:00
Peter Steinberger
90e8d00f12
docs: clarify triage workflow 2026-05-20 16:12:44 +01:00
Brad Hallett
1e6ce66d22 fix(daemon): pass allowCachedAuth to runtime for OAuth token reuse
The daemon host never passed allowCachedAuth when calling
runtime.callTool() or runtime.listTools(), and the KeepAliveRuntime
callTool wrapper did not forward it to the daemon client either.

Without allowCachedAuth, createClientContext skips
applyCachedAuthIfAvailable, so cached OAuth tokens are never read
and every daemon-managed OAuth server fails after token expiry.

Changes:
- protocol.ts: add allowCachedAuth to CallToolParams
- host.ts: pass allowCachedAuth in callTool and listTools handlers
- runtime-wrapper.ts: forward allowCachedAuth in callTool daemon path

Fixes openclaw/mcporter#181
Related openclaw/mcporter#179
2026-05-20 08:23:26 -04:00
Asim Arshad
8c63bbe81e docs: clarify headless OAuth process lifetime 2026-05-17 00:36:39 +01:00
Peter Steinberger
ae3b83cecb
chore(deps): update dependencies
Some checks failed
CI / build (${{ matrix.os }}) (macos-latest) (push) Has been cancelled
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Has been cancelled
CI / build (${{ matrix.os }}) (windows-latest) (push) Has been cancelled
2026-05-15 04:49:37 +01:00
Peter Steinberger
cbd84fd6d2
chore: bump development version to 0.11.2
Some checks failed
CI / build (${{ matrix.os }}) (macos-latest) (push) Waiting to run
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Waiting to run
CI / build (${{ matrix.os }}) (windows-latest) (push) Waiting to run
pages / Deploy docs (push) Has been cancelled
2026-05-14 19:47:34 +01:00
Peter Steinberger
5ec589698f
chore: start 0.11.2 changelog 2026-05-14 19:32:40 +01:00
Peter Steinberger
46cc31cafe
fix: harden generated cli bundles 2026-05-14 19:22:37 +01:00
Peter Steinberger
dd000bdec4
chore: open 0.11.1 changelog
Some checks are pending
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Waiting to run
CI / build (${{ matrix.os }}) (windows-latest) (push) Waiting to run
CI / build (${{ matrix.os }}) (macos-latest) (push) Waiting to run
pages / Deploy docs (push) Waiting to run
2026-05-14 18:57:40 +01:00
Peter Steinberger
2ce585a1eb
chore: release 0.11.0 2026-05-14 18:51:20 +01:00
Peter Steinberger
c87150895d
ci: strengthen main workflow 2026-05-14 18:46:22 +01:00
Peter Steinberger
7f1e9a8ce0
feat: support refreshable bearer stdio auth 2026-05-14 18:29:43 +01:00
Peter Steinberger
3e06e582ef
fix: add HTTP fetch compatibility mode 2026-05-14 17:31:36 +01:00
Peter Steinberger
2171c1f209
Merge pull request #171 from feniix/feat/headless-oauth-no-browser
feat: add headless OAuth browser suppression
2026-05-14 16:48:57 +01:00
Peter Steinberger
33afa744e0
fix: preserve headless auth stdout 2026-05-14 16:47:03 +01:00
Peter Steinberger
23565e2166
fix: harden concurrent config writes 2026-05-14 16:32:37 +01:00
Peter Steinberger
8d962fbd79
Merge remote-tracking branch 'origin/main' into feat/mcporter-serve
# Conflicts:
#	CHANGELOG.md
2026-05-14 13:40:29 +01:00
Peter Steinberger
907ba78d98
fix: keep served tool names readable 2026-05-14 13:39:05 +01:00
Peter Steinberger
eee954e4a1
fix: patch chrome-devtools auto-connect hang 2026-05-14 12:51:16 +01:00
zm2231
89f5053c15 fix: disambiguate bridged tool names 2026-05-13 21:01:25 -04:00
zm2231
bfe727150c fix: cover serve daemon edge cases 2026-05-13 20:32:33 -04:00
zm2231
6879a69f49 feat: add mcporter serve bridge 2026-05-13 20:26:12 -04:00
Sebastian Otaegui
7ddb433479
docs: document headless OAuth auth flow 2026-05-12 23:59:45 -03:00