chore: bump owletto submodule (#149 → #154)#825
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe ChangesSubproject Dependency Update
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Pulls in #823 (revert goals primitive), #824 (auto-provision default agent + manual trigger), #825 (owletto submodule bump to #154). Submodule merged origin/main into our feat/chrome-debugger-executor branch separately; bumps the parent's submodule pointer to the merge SHA so both the executor work and main's recent owletto changes (Mac app LobuClient + connection-settings UI rework + drop default-form-layout) ship together.
…ayout
Adds three Chrome-extension connectors (browser.evaluate, browser.fill_form,
browser.page_text) whose executors live in the Owletto for Chrome extension.
Definitions sit under `packages/connectors/src/browser/` so primitive
groupings are structurally distinct from third-party service connectors.
- packages/connectors/src/browser/{evaluate,fill_form,page_text}.ts (new)
- packages/connectors/src/index.ts: re-export browser/*
- packages/connector-worker/src/compile-connector.ts: resolve dotted keys
via subdir (`browser/evaluate.ts`) in addition to the existing
underscore-flat convention (`chrome_tabs.ts`).
- packages/server/src/utils/connector-catalog.ts: scan one level deep so
browser/* is discovered; preserve relative `source_path` so resolvers
don't collide on basename.
Submodule (packages/owletto) is left at main's pin (aeb3324) — the
browser.evaluate executor already shipped via #825/#159, so no bump is
needed by this PR.
…#828) * feat(connectors): browser.evaluate / fill_form / page_text + subdir layout Adds three Chrome-extension connectors (browser.evaluate, browser.fill_form, browser.page_text) whose executors live in the Owletto for Chrome extension. Definitions sit under `packages/connectors/src/browser/` so primitive groupings are structurally distinct from third-party service connectors. - packages/connectors/src/browser/{evaluate,fill_form,page_text}.ts (new) - packages/connectors/src/index.ts: re-export browser/* - packages/connector-worker/src/compile-connector.ts: resolve dotted keys via subdir (`browser/evaluate.ts`) in addition to the existing underscore-flat convention (`chrome_tabs.ts`). - packages/server/src/utils/connector-catalog.ts: scan one level deep so browser/* is discovered; preserve relative `source_path` so resolvers don't collide on basename. Submodule (packages/owletto) is left at main's pin (aeb3324) — the browser.evaluate executor already shipped via #825/#159, so no bump is needed by this PR. * chore(format): biome format pre-existing diff.test.ts drift Pre-existing format drift introduced in #829 was failing main's format-lint CI for several commits. Bundling the auto-fix here so PR #828's format-lint check turns green on top of an already-red main. * fix(connectors): subdir-aware resolvers + userManaged on browser primitives Pi review found four follow-ups to the browser/* subdir layout introduced in the previous commit: - packages/server/src/utils/connector-catalog.ts: server-side findBundledConnectorFile() was still flat-only — auto-install / device-reconcile / worker-poll would treat browser.evaluate as "no bundled source." Now mirrors the worker-side resolver (subdir first, underscore-flat fallback). Adds bundledConnectorSourcePath(filePath) so subdir paths round-trip through connectorSourcePathToUri. - packages/server/src/utils/ensure-connector-installed.ts + packages/server/src/worker-api/device-reconcile.ts: stop persisting basename(filePath) as source_path — collides on basename across subdirs and breaks source_uri resolution for subdir connectors. - packages/cli/src/commands/_lib/connector-loader.ts: CLI resolver was also flat-only. - packages/connectors/src/browser/{evaluate,fill_form,page_text}.ts: mark feeds userManaged so device-reconcile doesn't auto-wire them with config=NULL. These are bridge-composing primitives (script / url + fields / url are required, gateway-author-supplied), not end-user feeds. * fix(mcp,device-reconcile,owletto): inherited main failures + pi follow-up - packages/server/src/workspace/multi-tenant.ts: when a Bearer header is present but PAT verify, OAuth verify, AND session-cookie lookup all fail, return RFC 6750 `invalid_token` 401 (with WWW-Authenticate error=invalid_token) instead of falling through to anonymous and returning generic `unauthorized` later. Fixes mcp/auth.test.ts "should reject expired/invalid OAuth access token" — they assert the standards-compliant error code so MCP clients (Claude Desktop etc.) surface "bad token" rather than mistaking it for "no auth needed." - packages/server/src/worker-api/device-reconcile.ts: short-circuit ensureDeviceConnectorWired() when declaredFeedKeys is empty (every feed userManaged → nothing to auto-wire). Avoids a compile + upsert + no-auth-connection adopt per Chrome poll for browser.* primitives. Definition + version row still get installed lazily by ensureConnectorInstalled when a composing connector runs them. (Second-round pi review finding.) - packages/owletto: bump pointer to 2552ed0 — fix(build): vite target=esnext for top-level await in main.tsx (lobu-ai/owletto#161, merged). Unblocks PR Validation / build-test which had been failing on packages/owletto's vite build since the auth-pivot landed. * fix(server): repair sibling-walk SPA template/dist paths post-rename The packages/web → packages/owletto rename in #817 updated APP_ROOT-relative candidates but missed two: - The `../web/{dist,index.html}` sibling-deploy candidate was kept verbatim ("for out-of-monorepo deployments"), but after the rename the sibling dir is `../owletto/`, not `../web/`. The stale path silently misses on every lookup. - The `path.resolve(process.cwd(), '../packages/owletto/...')` candidate has always resolved to `packages/packages/owletto/...` (double `packages`) when cwd is `packages/server` — i.e. exactly the layout the integration job runs under. Rewriting as `../owletto/...` lands in the right sibling. Symptoms: every `public-pages-contract.test.ts` (and `mcp/auth.test.ts` indirectly) failure on `main` since 7a72456 — `buildPublicPageModel` returned a real model but `loadAnySpaHtmlTemplate()` returned null, so the catch-all fell through to the JSON discovery response with `Cache-Control: no-store`. Reproduces against PGlite locally; fixed and verified all 3 public-pages tests pass. Same broken pattern repaired in `utils/public-origin.ts:hasLocalFrontend` (8 candidates, 4 corrected). * fix(device-reconcile,catalog): pi review pass-3 follow-ups Third pi review flagged two issues with the prior round: - worker-api/device-reconcile.ts: the earlier early-return-when-empty short-circuited too aggressively. `local.directory` and other device connectors whose only feed is `userManaged` rely on ensureDeviceConnectorWired to install the connector_definition + version + connection — `/api/workers/me/feeds` 404s on "no connection wired" otherwise. Move the short-circuit into the fast-path check instead: when the connection + version already exist AND there's nothing to verify (declaredFeedKeys empty), fast-path returns without compiling. First poll still does the full install; subsequent polls are zero work. - utils/connector-catalog.ts: the one-level subdir scan was descending into `connectors/src/__tests__/` and trying to extract catalog metadata from test files that import `bun:test`, producing esbuild warnings on every cold scan. Skip `__tests__` and any leading-underscore dir.
Bump packages/owletto submodule pointer from
8ede17c(#149) to9e89d33(#154).Brings in four merged owletto PRs:
defaultAgentis unset#154 depends on server endpoints introduced in #824 (merged). All four owletto PRs are on owletto/main and the new submodule SHA is reachable.
Test plan
Summary by CodeRabbit