Skip to content

Refactor core packages and simplify shared logic#53

Merged
cobraprojects merged 2 commits into
mainfrom
clawpatch-fix
Jun 15, 2026
Merged

Refactor core packages and simplify shared logic#53
cobraprojects merged 2 commits into
mainfrom
clawpatch-fix

Conversation

@cobraprojects

@cobraprojects cobraprojects commented Jun 15, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features
    • Added flexible TTL caching with fresh/stale/expired resolution.
    • Introduced shared optional/dynamic cache driver loading.
  • Improvements
    • Unified request normalization and JWT/JWKS handling across auth providers/adapters.
    • Refactored social auth token exchange and response parsing via shared internals.
    • Enhanced CLI runtime execution with a dedicated runtime worker for migrate/fresh/rollback/seed/prune.
  • Refactor
    • Centralized realtime parsing/error handling and route-protection logic across frameworks.
  • Tests
    • Simplified React hook state mocking utilities in client tests.

@coderabbitai

coderabbitai Bot commented Jun 15, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 51c39692-fd2a-4272-adcc-3371a7754bed

📥 Commits

Reviewing files that changed from the base of the PR and between d0ddb1e and e3ebedf.

📒 Files selected for processing (9)
  • packages/adapter-sveltekit/src/realtime.ts
  • packages/auth-social-apple/src/index.ts
  • packages/auth-social-linkedin/tests/package.test.ts
  • packages/broadcast/src/worker.ts
  • packages/cache-db/src/index.ts
  • packages/cache/src/flexible.ts
  • packages/cli/src/runtime-worker.ts
  • packages/cli/src/runtime.ts
  • packages/config/src/defaults.ts
🚧 Files skipped from review as they are similar to previous changes (6)
  • packages/auth-social-linkedin/tests/package.test.ts
  • packages/cache-db/src/index.ts
  • packages/cli/src/runtime.ts
  • packages/cli/src/runtime-worker.ts
  • packages/adapter-sveltekit/src/realtime.ts
  • packages/cache/src/flexible.ts

📝 Walkthrough

Walkthrough

This PR extracts shared helpers across adapters, auth, cache, broadcast, and CLI runtime flows, and updates the affected integrations, tests, and workspace wiring to use them.

Changes

Adapter helper extraction

Layer / File(s) Summary
Next runtime and hook-state tests
packages/adapter-next/src/runtime.ts, packages/adapter-next/tests/client.test.ts
Next runtime projection is shared through resolveRuntimeProjection, and client tests now use reusable hook-state mock helpers across rerender cases.
Nuxt parsing and runtime cleanup
packages/adapter-nuxt/src/realtime-definition-transform.ts, packages/adapter-nuxt/src/runtime/composables/*, packages/adapter-nuxt/src/runtime/plugins/realtime.client.ts, packages/adapter-nuxt/src/runtime/server/*
Nuxt realtime source scanning now shares syntax skipping, error normalization uses shared HTTP helpers, plain-object checks move to ./object, and several runtime exports become direct re-exports.
SvelteKit reactive view and transform utilities
packages/adapter-sveltekit/src/reactive-view.ts, packages/adapter-sveltekit/src/client.ts, packages/adapter-sveltekit/src/realtime.ts, packages/adapter-sveltekit/src/preprocess.ts, packages/adapter-sveltekit/src/realtime-definition-transform.ts, packages/adapter-sveltekit/src/transform-utils.ts
SvelteKit adds reusable reactive proxy and transform utility modules, then updates client, realtime, and preprocess flows to consume them.

Auth runtime consolidation

Layer / File(s) Summary
Shared auth runtime internals
packages/auth/src/runtime.ts, packages/auth/src/runtime/jwt.ts, packages/auth/src/runtime/requestNormalization.ts, packages/auth/src/runtime/optionalSecurity.ts, packages/auth/src/runtime/setCookieParser.ts
Auth runtime now exposes shared JWT and request-normalization internals, simplifies optional security loading, and adjusts set-cookie parsing.
Framework route protection and auth tests
packages/auth/src/next/server.ts, packages/auth/src/nuxt/server.ts, packages/auth/src/sveltekit/*, packages/auth/tests/*
Framework route-protection helpers are refactored around shared predicates and helpers, and tests are updated for Nuxt middleware behavior and optional security mocking.
Clerk, social, and WorkOS runtime adoption
packages/auth-clerk/src/*, packages/auth-social*/src/*, packages/auth-workos/src/*
Clerk, social auth, and WorkOS delegate request normalization, JWT or JWKS handling, JSON parsing, and token normalization to shared auth runtime helpers.

Cache and CLI runtime refactors

Layer / File(s) Summary
Flexible cache utilities
packages/cache/src/flexible.ts, packages/cache/src/facade.ts, packages/cache/src/query-bridge.ts
Flexible TTL envelope creation, validation, and stale-refresh resolution move into a dedicated cache module and replace duplicated inline logic.
Optional cache drivers and schema definitions
packages/cache/src/optional-driver.ts, packages/cache/src/db.ts, packages/cache/src/redis.ts, packages/cache-db/src/index.ts, packages/cache-db/tests/package.test.ts, packages/cache-redis/src/index.ts
Cache adds shared optional-driver loading and disposal utilities, updates DB and Redis loaders to use them, centralizes cache DB table definitions, and consolidates Redis numeric mutation error handling.
CLI runtime worker execution
packages/cli/src/runtime-worker.ts, packages/cli/src/runtime.ts, packages/cli/tsup.config.ts
CLI runtime commands move from an inline eval script to a dedicated worker module that runs migrate, fresh, rollback, seed, and prune flows.
CLI cache migration generation and workspace wiring
packages/cli/src/cache-migrations.ts, packages/cli/package.json, packages/cli/tsconfig.json, packages/cli/vitest.config.ts, packages/create-holo-js/tsconfig.json
CLI cache migrations now render from shared cache-db table metadata, and workspace aliases and dependencies are updated to resolve that package.
CLI refactors and scaffolding cleanup
packages/cli/src/cli.ts, packages/cli/src/dev.ts, packages/cli/src/generators.ts, packages/cli/src/media-migrations.ts, packages/cli/src/project/*, packages/cli/src/queue-migrations.ts, packages/cli/src/security.ts
CLI simplifies executor lookup, framework sync and discovery root handling, managed dependency updates, route file rendering, generator exports, migration typing, and Redis adapter typing.

Runtime utility consolidation

Layer / File(s) Summary
Broadcast JSON normalization and worker parsing
packages/broadcast/src/json.ts, packages/broadcast/src/auth.ts, packages/broadcast/src/contracts.ts, packages/broadcast/src/runtime.ts, packages/broadcast/src/worker.ts, packages/broadcast/tests/worker.test.ts
Broadcast adds shared JSON validation helpers, reuses them across payload and presence normalization, tightens worker parsing, and updates worker tests.
Policy, config, and database runtime cleanup
packages/authorization/src/runtime.ts, packages/config/src/*, packages/core/tests/package.test.ts, packages/db-postgres/src/index.ts
Authorization policy evaluation is centralized, config access and defaults reuse shared helper patterns, a package-boundary test changes source target, and Postgres transaction state is simplified.

Sequence Diagram(s)

sequenceDiagram
  participant CLI
  participant RuntimeProcess
  participant RuntimeWorker
  participant Database
  CLI->>RuntimeProcess: createRuntimeInvocation()
  RuntimeProcess->>RuntimeWorker: HOLO_RUNTIME_PAYLOAD
  RuntimeWorker->>Database: configureDB() and command flow
  RuntimeWorker-->>CLI: stdout with executed items
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

Possibly related PRs

Poem

🐇 I found some helpers in a burrow below,
And taught them to share where they used to solo.
JWTs hopped neatly, caches learned grace,
The CLI now runs in its own little space.
I thumped once for proxies, and twice for good cheer.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch clawpatch-fix

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/create-holo-js/tsconfig.json (1)

6-13: ⚠️ Potential issue | 🟡 Minor

Remove unused @holo-js/cache-db path alias.

The TypeScript path alias for @holo-js/cache-db is added to create-holo-js/tsconfig.json (lines 7-9), but no direct imports of @holo-js/cache-db exist in the create-holo-js/src/ directory. This path alias is unused and should be removed to keep the configuration clean.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/create-holo-js/tsconfig.json` around lines 6 - 13, The
`@holo-js/cache-db` path alias is defined in the paths object of the
tsconfig.json file but is not used anywhere in the create-holo-js package's
source directory. Remove the entire path alias entry for `@holo-js/cache-db`
(which maps to ../cache-db/src/index.ts) from the paths configuration, keeping
only the `@holo-js/cli` alias which is actually being used.
🧹 Nitpick comments (3)
packages/cache/src/flexible.ts (1)

124-130: 💤 Low value

Potential time inconsistency when using custom now provider.

On line 127, resolveFlexibleEnvelopeState(retried) uses the default Date.now() instead of the options.now?.() that was used earlier (line 95). If a custom now function is provided (e.g., for testing with fake timers), this could cause inconsistent state evaluation between the initial read and the retry path.

Suggested fix
   const retried = await options.read()
   if (
     isFlexibleEnvelope<TValue>(retried)
-    && resolveFlexibleEnvelopeState(retried) !== 'expired'
+    && resolveFlexibleEnvelopeState(retried, options.now?.() ?? Date.now()) !== 'expired'
   ) {
     return retried.value
   }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/cache/src/flexible.ts` around lines 124 - 130, The retry path in the
flexible cache is using the default system time instead of respecting the custom
time provider. On line 127, the call to `resolveFlexibleEnvelopeState(retried)`
does not pass the `options.now` parameter, causing it to use `Date.now()`
internally instead of the custom time function that was provided in options.
Pass the `options.now` function (or equivalent time provider) to the
`resolveFlexibleEnvelopeState()` call to ensure consistent time evaluation
between the initial read and the retry path.
packages/cache-db/src/index.ts (1)

236-244: ⚡ Quick win

Array index access is fragile if table order changes.

Lines 237 and 243 access CACHE_DATABASE_TABLE_DEFINITIONS[0] and [1] directly. If the array order changes, this code silently uses the wrong definition. Consider using find() by role for clarity and safety.

   if (!(await schema.hasTable(tableName))) {
+    const entriesDefinition = CACHE_DATABASE_TABLE_DEFINITIONS.find(d => d.role === 'entries')!
     await schema.createTable(tableName, (table) => {
-      applyCacheDatabaseTableDefinition(table, tableName, CACHE_DATABASE_TABLE_DEFINITIONS[0])
+      applyCacheDatabaseTableDefinition(table, tableName, entriesDefinition)
     })
   }

   if (!(await schema.hasTable(lockTableName))) {
+    const locksDefinition = CACHE_DATABASE_TABLE_DEFINITIONS.find(d => d.role === 'locks')!
     await schema.createTable(lockTableName, (table) => {
-      applyCacheDatabaseTableDefinition(table, lockTableName, CACHE_DATABASE_TABLE_DEFINITIONS[1])
+      applyCacheDatabaseTableDefinition(table, lockTableName, locksDefinition)
     })
   }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/cache-db/src/index.ts` around lines 236 - 244, Replace the direct
array index accesses to CACHE_DATABASE_TABLE_DEFINITIONS[0] and
CACHE_DATABASE_TABLE_DEFINITIONS[1] with find() calls that filter by role
instead. In the applyCacheDatabaseTableDefinition call for the main table
(currently using index 0), use find() to locate the definition with the
appropriate role for the cache table. In the applyCacheDatabaseTableDefinition
call for the lock table (currently using index 1), use find() to locate the
definition with the appropriate role for the lock table. This ensures the
correct definition is used even if the array order changes.
packages/cli/src/runtime-worker.ts (1)

336-356: 💤 Low value

Add type validation for payload.options.models before iteration.

Line 336 assumes payload.options.models is an array if truthy, but Array.isArray check is done. However, the for...of loop at line 342 iterates without ensuring each name is a string first (the check is inside the loop). Consider validating upfront or documenting the expected shape.

Actually, reviewing more closely: the check typeof name !== 'string' at line 343-344 uses continue, silently skipping non-string entries. This could mask misconfiguration. Consider logging or warning when invalid entries are encountered.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/cli/src/runtime-worker.ts` around lines 336 - 356, The code
currently silently skips non-string entries in the requested models array using
a `continue` statement when the `typeof name !== 'string'` check fails. Instead
of silently skipping these invalid entries, add a warning or error log to alert
users when non-string model names are encountered in the payload.options.models
array. This will help surface misconfiguration issues rather than masking them
with silent failures. Modify the block that handles the `typeof name !==
'string'` check to include appropriate logging before the `continue` statement.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/adapter-sveltekit/src/realtime.ts`:
- Around line 40-66: The isReactiveObject function is too permissive and allows
proxying of branded instances like Map, Set, and class instances, which breaks
method calls due to lost receiver binding. Narrow the isReactiveObject function
to only return true for plain objects and arrays by adding additional instanceof
checks to exclude Map, Set, WeakMap, WeakSet, and other branded types alongside
the existing Date and Blob exclusions. This will ensure that only structural
data types are wrapped when shouldWrapValue is invoked in the
createRealtimeReactiveValue function.

In `@packages/auth-social-apple/src/index.ts`:
- Around line 76-82: The cache parameter in the fetchAppleJwks function is
creating a new Map() on every invocation, causing the cache to be empty and
unused each time. Move the Map() cache creation outside of the fetchAppleJwks
function to module level as a constant (similar to how APPLE_JWKS_URL is
defined), and then reference this module-level cache constant in the cache
property of the options object passed to
authRuntimeInternals.jwt.fetchCachedJwks. This ensures the cache persists across
multiple calls to fetchAppleJwks.

In `@packages/auth-social-linkedin/tests/package.test.ts`:
- Around line 26-29: The scopes array from callbackConfig is being reused by
reference in the config object, which allows mutations to leak between test
contexts if exchangeCode modifies the scopes array. Fix this by creating a
shallow copy of callbackConfig.scopes instead of reusing the same reference.
When assigning the scopes property in the config object (in the section where
you have scopes: overrides.scopes ?? callbackConfig.scopes), ensure that when
using callbackConfig.scopes, you create a new array instance (for example, by
spreading or slicing the original array) so that each test context gets its own
independent copy.

In `@packages/broadcast/src/worker.ts`:
- Around line 418-424: The logger helper functions logSocketMessageError and
logScalingMessageError require Error types, but upstream catch blocks receive
unknown values and cast them unsafely as Error. If a callback throws null or a
non-Error value, accessing error.message will throw inside the logger and bypass
cleanup/close paths. Change both functions to accept unknown instead of Error,
then safely extract the message by checking if the value is an Error instance
before accessing .message, using a fallback string for non-Error values. This
ensures logger failures cannot mask or interfere with error handling in catch
paths.

In `@packages/cli/src/runtime.ts`:
- Around line 365-379: The createRuntimeInvocation function unconditionally uses
the --experimental-strip-types flag when the worker path ends with .ts, but this
flag is only available in Node.js 22.6.0+ while the project supports ^20.19.0.
Add Node.js version detection at the top of the createRuntimeInvocation function
to check the current Node version. When the worker path ends with .ts,
conditionally include the --experimental-strip-types flag only if the Node
version is 22.6.0 or higher. For Node.js 20, provide an alternative approach
such as using the .mjs file variant instead of attempting to process the .ts
file directly with the experimental flag.

In `@packages/config/src/defaults.ts`:
- Around line 533-543: The parseInteger function hardcodes "Holo Queue" as the
scope label when calling parseScopedInteger, which causes misleading error
messages when this shared helper is used by non-queue flows like
session/auth/provider name parsing. Similarly, normalizeConnectionName also
hardcodes "Holo Queue" for the same reason. Remove the hardcoded scope labels
from these shared helper functions by adding a new parameter (e.g., scope or
namespace) to both parseInteger and normalizeConnectionName to accept the scope
label as an argument. Then update all callers of these functions to pass the
appropriate scope label for their use case, such as "Holo Queue" for
queue-related calls and other descriptive labels for session/auth/provider
contexts. This way, the error messages will correctly reflect the actual
subsystem context regardless of which flow is using the helper.

---

Outside diff comments:
In `@packages/create-holo-js/tsconfig.json`:
- Around line 6-13: The `@holo-js/cache-db` path alias is defined in the paths
object of the tsconfig.json file but is not used anywhere in the create-holo-js
package's source directory. Remove the entire path alias entry for
`@holo-js/cache-db` (which maps to ../cache-db/src/index.ts) from the paths
configuration, keeping only the `@holo-js/cli` alias which is actually being
used.

---

Nitpick comments:
In `@packages/cache-db/src/index.ts`:
- Around line 236-244: Replace the direct array index accesses to
CACHE_DATABASE_TABLE_DEFINITIONS[0] and CACHE_DATABASE_TABLE_DEFINITIONS[1] with
find() calls that filter by role instead. In the
applyCacheDatabaseTableDefinition call for the main table (currently using index
0), use find() to locate the definition with the appropriate role for the cache
table. In the applyCacheDatabaseTableDefinition call for the lock table
(currently using index 1), use find() to locate the definition with the
appropriate role for the lock table. This ensures the correct definition is used
even if the array order changes.

In `@packages/cache/src/flexible.ts`:
- Around line 124-130: The retry path in the flexible cache is using the default
system time instead of respecting the custom time provider. On line 127, the
call to `resolveFlexibleEnvelopeState(retried)` does not pass the `options.now`
parameter, causing it to use `Date.now()` internally instead of the custom time
function that was provided in options. Pass the `options.now` function (or
equivalent time provider) to the `resolveFlexibleEnvelopeState()` call to ensure
consistent time evaluation between the initial read and the retry path.

In `@packages/cli/src/runtime-worker.ts`:
- Around line 336-356: The code currently silently skips non-string entries in
the requested models array using a `continue` statement when the `typeof name
!== 'string'` check fails. Instead of silently skipping these invalid entries,
add a warning or error log to alert users when non-string model names are
encountered in the payload.options.models array. This will help surface
misconfiguration issues rather than masking them with silent failures. Modify
the block that handles the `typeof name !== 'string'` check to include
appropriate logging before the `continue` statement.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 782438d7-6ce3-4f4b-b407-d18831894ea6

📥 Commits

Reviewing files that changed from the base of the PR and between f29bbeb and d0ddb1e.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (81)
  • packages/adapter-next/src/runtime.ts
  • packages/adapter-next/tests/client.test.ts
  • packages/adapter-nuxt/src/realtime-definition-transform.ts
  • packages/adapter-nuxt/src/runtime/composables/client-errors.ts
  • packages/adapter-nuxt/src/runtime/composables/forms.ts
  • packages/adapter-nuxt/src/runtime/composables/object.ts
  • packages/adapter-nuxt/src/runtime/composables/realtime.ts
  • packages/adapter-nuxt/src/runtime/plugins/realtime.client.ts
  • packages/adapter-nuxt/src/runtime/server/auto-imports/holo.ts
  • packages/adapter-nuxt/src/runtime/server/imports/storage.ts
  • packages/adapter-sveltekit/src/client.ts
  • packages/adapter-sveltekit/src/preprocess.ts
  • packages/adapter-sveltekit/src/reactive-view.ts
  • packages/adapter-sveltekit/src/realtime-definition-transform.ts
  • packages/adapter-sveltekit/src/realtime.ts
  • packages/adapter-sveltekit/src/transform-utils.ts
  • packages/auth-clerk/src/index.ts
  • packages/auth-clerk/src/jwt.ts
  • packages/auth-clerk/src/request.ts
  • packages/auth-social-apple/package.json
  • packages/auth-social-apple/src/index.ts
  • packages/auth-social-discord/src/index.ts
  • packages/auth-social-facebook/package.json
  • packages/auth-social-facebook/src/index.ts
  • packages/auth-social-github/src/index.ts
  • packages/auth-social-google/src/index.ts
  • packages/auth-social-linkedin/src/index.ts
  • packages/auth-social-linkedin/tests/package.test.ts
  • packages/auth-social/src/index.ts
  • packages/auth-workos/src/contracts.ts
  • packages/auth-workos/src/index.ts
  • packages/auth/src/next/server.ts
  • packages/auth/src/nuxt/server.ts
  • packages/auth/src/runtime.ts
  • packages/auth/src/runtime/jwt.ts
  • packages/auth/src/runtime/optionalSecurity.ts
  • packages/auth/src/runtime/requestNormalization.ts
  • packages/auth/src/runtime/setCookieParser.ts
  • packages/auth/src/sveltekit/client.ts
  • packages/auth/src/sveltekit/server.ts
  • packages/auth/tests/framework.test.ts
  • packages/auth/tests/package.test.ts
  • packages/authorization/src/runtime.ts
  • packages/broadcast/src/auth.ts
  • packages/broadcast/src/contracts.ts
  • packages/broadcast/src/json.ts
  • packages/broadcast/src/runtime.ts
  • packages/broadcast/src/worker.ts
  • packages/broadcast/tests/worker.test.ts
  • packages/cache-db/src/index.ts
  • packages/cache-db/tests/package.test.ts
  • packages/cache-redis/src/index.ts
  • packages/cache/src/db.ts
  • packages/cache/src/facade.ts
  • packages/cache/src/flexible.ts
  • packages/cache/src/optional-driver.ts
  • packages/cache/src/query-bridge.ts
  • packages/cache/src/redis.ts
  • packages/cli/package.json
  • packages/cli/src/cache-migrations.ts
  • packages/cli/src/cli-internals.ts
  • packages/cli/src/cli.ts
  • packages/cli/src/dev.ts
  • packages/cli/src/generators.ts
  • packages/cli/src/media-migrations.ts
  • packages/cli/src/project/discovery-helpers.ts
  • packages/cli/src/project/scaffold/dependencies.ts
  • packages/cli/src/project/scaffold/framework-renderers.ts
  • packages/cli/src/queue-migrations.ts
  • packages/cli/src/runtime-worker.ts
  • packages/cli/src/runtime.ts
  • packages/cli/src/security.ts
  • packages/cli/tests/cli.test.ts
  • packages/cli/tsconfig.json
  • packages/cli/tsup.config.ts
  • packages/cli/vitest.config.ts
  • packages/config/src/access.ts
  • packages/config/src/defaults.ts
  • packages/core/tests/package.test.ts
  • packages/create-holo-js/tsconfig.json
  • packages/db-postgres/src/index.ts
💤 Files with no reviewable changes (3)
  • packages/cli/src/cli-internals.ts
  • packages/cache-db/tests/package.test.ts
  • packages/cli/src/generators.ts

Comment thread packages/adapter-sveltekit/src/realtime.ts
Comment thread packages/auth-social-apple/src/index.ts
Comment thread packages/auth-social-linkedin/tests/package.test.ts
Comment thread packages/broadcast/src/worker.ts Outdated
Comment thread packages/cli/src/runtime.ts
Comment thread packages/config/src/defaults.ts
@cobraprojects

Copy link
Copy Markdown
Owner Author

@CodeRabbit review

@coderabbitai

coderabbitai Bot commented Jun 15, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@cobraprojects cobraprojects merged commit 9c2384f into main Jun 15, 2026
1 check passed
@cobraprojects cobraprojects deleted the clawpatch-fix branch June 21, 2026 10:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant