Peter Steinberger
7b000dba9d
feat(reef): operator-configurable sharing rules for the guard ( #131167 )
...
* feat(reef): operator-configurable sharing rules for the guard
Adds channels.reef.guard.rules with capped outbound/inbound free-text
policy. Rules ride the trusted instruction side of the guard call only,
may tighten decisions or explicitly allow otherwise-review cases, and can
never override the deny floor or deterministic checks. The rules text is
hashed into the effective policy version so audit rows and pending review
approvals bind to the exact policy in force.
* fix(reef): full rules digest in policy identity; align blank-rule validation
ClawSweeper review fixes: use the untruncated sha256 rules digest in the
effective policy version so approvalDigest stays collision-resistant, and
express identical non-blank (\S) rule validation in the zod schema, the
manifest JSON Schemas, and the generated channel metadata instead of a
trim-transform mismatch.
2026-08-27 14:37:17 -07:00
Peter Steinberger
4a846f1d61
refactor(reef): remove obsolete JSONL protocol stores ( #129698 )
...
* refactor(reef): remove obsolete JSONL protocol stores
* test(reef): remove orphaned protocol test helper
2026-08-25 18:22:54 -07:00
Peter Steinberger
f72782d87b
refactor(test): restore auth persistence integrity ( #125699 )
...
* test: restore auth persistence integrity
Restore the SQLite-backed auth wizard assertions traced to 43ea501f38 and consolidate duplicated message-action and temp-directory fixtures.
* test: support npm 12 pack results
2026-08-18 02:58:30 -07:00
Peter Steinberger
acbbff19ba
refactor(types): drain chained-assertion ledger — extensions ( #124378 )
...
* refactor(types): drain chained-assertion ledger — extensions
* fix(types): parse Matrix summary events at the boundary
* style(types): satisfy extension map lint
* style(types): name the Tlon image marker cleanly
* fix(browser): preserve deep MCP snapshots iteratively
2026-08-15 20:55:01 -07:00
Peter Steinberger
b7f9cd0a01
test(reef): consolidate transport protocol fixtures ( #118281 )
2026-08-02 16:39:26 -07:00
Vincent Koc
5504f1e9a1
test(reef): remove false-green live guard smoke ( #116393 )
2026-07-30 20:16:28 +08:00
Peter Steinberger
302f262e6b
refactor: deduplicate extension normalization primitives ( #115650 )
...
* refactor(plugins): reuse SDK normalization primitives
* fix(ci): repair code-mode matrix checks
* fix(ci): satisfy code-mode matrix gates
* fix(ci): use matrix evidence export
* fix(ci): validate matrix evidence artifact
2026-07-29 04:10:06 -04:00
Peter Steinberger
d6971f46ca
fix: make filesystem publication crash-durable ( #113453 )
...
* fix(fs): centralize directory durability
* chore: keep release notes in PR body
* test(sqlite): canonicalize read-only race paths
* test(fs): clean durability fixtures
* chore(lint): prune sqlite snapshot baseline
* fix(backup): reject unsupported commit sync
* fix(fs): enforce strict durability outcomes
* refactor(tls): flatten preserved-output failures
* fix(reef): require durable journal commits
* fix(fs): route durability through policy boundaries
* fix(reef): preserve Windows journal compatibility
* fix(fs): bind publication to canonical directories
* fix(ci): align durability boundary fixtures
2026-07-24 20:58:17 -07:00
Peter Steinberger
0546e15c2e
fix(reef): omit absent receipt categories from audit state ( #110177 )
2026-07-17 22:24:33 +01:00
Peter Steinberger
a2ec3f6904
refactor: separate external conversations from local sessions ( #109411 )
...
* feat: separate external conversations from sessions
* test: cover conversation tool authorization
* chore: refresh session schema baseline
* fix: persist effective conversation delivery text
* fix: bind conversation identity to delivery target
* fix: preserve pending conversation deliveries
* fix: make conversation delivery outcomes synchronous
* refactor: make conversation delivery durable
* fix: harden durable conversation retries
* fix: close durable conversation pre-send gaps
* fix: terminally reject invalid conversation deliveries
* refactor: route external conversations through gateway
* fix: namespace conversation delivery queue intents
* refactor: remove obsolete transcript replacement path
* test: prove conversation delivery v10 migration
* test: keep conversation action mock typed
* fix: clear conversation refactor CI gates
* test: align Reef delivery coverage
* chore: refresh Android conversation strings
* fix: harden external conversation state
* fix: close conversation race edges
* fix: preserve conversation delivery identity
* fix: replay durable conversation operations
* fix: unify agent schema at version 11
* chore: move release note context to PR
* fix: make required queue persistence force core delivery
* chore: refresh plugin SDK baseline
2026-07-17 00:09:51 -07:00
Peter Steinberger
83d82c9302
refactor(channels): persist runtime state in plugin SQLite ( #109380 )
...
* refactor(channels): move reef, msteams, matrix, zalouser file state to SQLite with doctor imports
* fix(channels): harden SQLite state migrations
* test(reef): use SQLite flow stores in receipt suites
* fix(reef): validate restored request policy
* fix(reef): retain replay state through relay window
* docs(reef): describe durable state import
* fix(reef): honor configured legacy state path
* chore: leave changelog to release flow
* fix(reef): use managed temp root in flow tests
* fix(matrix): omit undefined device id from state
2026-07-16 17:05:28 -07:00
xingzhou
2cd236385b
fix(reef): close provider streams after guard errors ( #109196 )
2026-07-16 15:53:23 -07:00
Peter Steinberger
39cddf847e
fix(reef): keep routine agent replies from disappearing ( #109160 )
...
* fix(reef): relax guard and surface rejections
* fix(reef): preserve ordered rejection notices
* fix(reef): bound rejection notice retries
* fix(reef): persist correlated rejection notices
* fix(reef): align receipt entry typing
* test(reef): type owner notice fixtures
* fix(reef): make rejection feedback restart-safe
* fix(reef): retry rejection state reads
* fix(reef): quarantine invalid receipts
* chore(reef): leave changelog to release
* fix(reef): bind receipts to recipient identity
* refactor(reef): keep receipt types private
* test(reef): preserve notice mock call typing
* fix(reef): reconcile keys before resend recovery
* fix(reef): keep rejection recovery durable
* fix(reef): preserve in-flight receipt upgrades
* test(reef): split receipt flow coverage
* fix(reef): cap automatic guard retries
2026-07-16 12:36:22 -07:00
Peter Steinberger
243eecbee1
refactor(reef): use Noble byte utilities
2026-07-14 14:20:59 -07:00
sunlit-deng
7aa1aacb8e
fix(reef): prevent oversized guard responses from consuming memory ( #106439 )
...
* fix(reef): bound guard provider response reads
* test(reef): strengthen guard response bound proof
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-13 18:02:11 -07:00
Peter Steinberger
882b2fe900
feat(channels): bundle Reef guarded claw-to-claw channel ( #106232 )
...
* feat(channels): bundle Reef guarded claw-to-claw channel
Moves the Reef channel extension from openclaw/reef into the bundled extensions tree with the wire protocol vendored under extensions/reef/protocol. Includes channelConfigs manifest metadata, runtime status reporting via setStatus/buildAccountSnapshot, abort-aware inbox shutdown, monotonic device-auth timestamps, and immutable-model guard admission (dated snapshots plus documented gpt-5.6 ids).
* fix(reef): pin zod exactly per dependency pin guard
* style(reef): satisfy extension lint gates
Curly braces in vendored protocol, explicit type re-exports, typed catch callbacks, Object.assign over map-spread, abort-aware loop restructure.
* fix(reef): CI gates — knip workspace, boundary tsconfig, facade imports, cycle break, contract baselines
- knip: reef workspace project includes vendored protocol/ (owns noble deps)
- tsconfig: conform to canonical extension package-boundary include/exclude; add @openclaw/plugin-sdk devDependency
- imports: channel-inbound/channel-outbound facades instead of deprecated subpaths
- protocol: home ReplayStore contract in envelope.ts to break the envelope<->replay type cycle
- baselines: reef in unguarded runtime-api list; regenerate bundled channel config metadata
* feat(reef): plugin catalog cover art, channel label, changelog revert
* fix(reef): drop unused error-class exports, register lint suppression
* fix(reef): knip entry surface for vendored protocol, explicit WebSocketLike export
2026-07-13 05:17:44 -07:00