feat(cli): fold @lobu/sdk into @lobu/cli/config#1026
Conversation
The define* project-authoring builders (defineConfig/defineAgent/…) move from the standalone @lobu/sdk package into a dependency-light `@lobu/cli/config` subpath. A project already installs @lobu/cli to run `lobu apply`, so a separate @lobu/sdk devDependency was redundant — this matches how Vite/Vitest/Astro/Drizzle-kit ship defineConfig from the tool package itself. - New `@lobu/cli/config` entry (bun→src, node→dist), guarded by an isolation test asserting it imports nothing heavy (only relative, @lobu/connector-sdk, typebox). - Connector authoring (defineConnector/Type) stays re-exported from @lobu/connector-sdk; that package is unchanged. - @lobu/sdk deleted; dropped from publish-packages.mjs, release-please extra-files, ci.yml unit build, root build:packages + test globs. - Scaffold (lobu init / init --from-org), examples, docs, skills, and sdk-e2e updated to import from @lobu/cli/config.
|
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 (3)
💤 Files with no reviewable changes (2)
📝 WalkthroughWalkthroughThis PR migrates configuration authoring from ChangesConfig authoring migration from
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
The @lobu/sdk fold missed three build-time references to the now-deleted package, breaking `make build-packages` (`cd packages/sdk: No such file or directory`) and cascading into CI's typecheck/apply/sdk-e2e jobs: - Makefile `build-packages` loop (the target CI runs) - root tsconfig.json exclude list - scripts/bump-version.mjs synchronized-bump dir list Full `make build-packages` now green locally (incl. CLI build.cjs).
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (8)
examples/lobu-crm/lobu.config.ts (1)
12-43:⚠️ Potential issue | 🟠 Major | ⚡ Quick win
crmagent config must includeguardrails.
defineAgentin thislobu.config.tsis missing the requiredguardrailsdeclaration.Suggested patch
const crm = defineAgent({ id: "crm", name: "crm", description: "Maintains Lobu's funnel CRM — leads, pilots, inbound triage, weekly digest", + guardrails: [], providers: [As per coding guidelines,
**/lobu.config.ts: Configure guardrails viadefineAgent({ guardrails: [...] })inlobu.config.ts.🤖 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 `@examples/lobu-crm/lobu.config.ts` around lines 12 - 43, The crm agent defined via defineAgent (variable crm) is missing the required guardrails property; update the object passed to defineAgent to include a guardrails: [...] array containing the required guardrail definitions (e.g., policy IDs or rule objects) so the crm agent has its safety/validation rules configured; locate the defineAgent({ id: "crm", ... }) call and add the guardrails key alongside providers and network to satisfy the expected config shape.examples/finance/lobu.config.ts (1)
10-32:⚠️ Potential issue | 🟠 Major | ⚡ Quick winMissing required
guardrailsindefineAgent.This
lobu.config.tsagent config should explicitly setguardrails.Suggested patch
const finance = defineAgent({ id: "finance", name: "finance", description: "Help finance teams reconcile data, explain variance, and prepare reporting runs", + guardrails: [], dir: "./agents/finance",As per coding guidelines,
**/lobu.config.ts: Configure guardrails viadefineAgent({ guardrails: [...] })inlobu.config.ts.🤖 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 `@examples/finance/lobu.config.ts` around lines 10 - 32, The agent config created by defineAgent for the finance agent is missing the required guardrails property; update the defineAgent({ id: "finance", ... }) call to include a guardrails field (e.g., guardrails: [ ... ]) containing the required guardrail definitions (policy identifiers or rule objects) appropriate for this project so the finance agent enforces the expected constraints; modify the finance variable's defineAgent invocation to add the guardrails array with the necessary entries.examples/delivery/lobu.config.ts (1)
10-32:⚠️ Potential issue | 🟠 Major | ⚡ Quick win
defineAgentneeds explicitguardrails.This config omits
guardrails, which is required forlobu.config.ts.Suggested patch
const delivery = defineAgent({ id: "delivery", name: "delivery", description: "Help delivery teams keep milestones, blockers, owners, and artifacts aligned", + guardrails: [], dir: "./agents/delivery",As per coding guidelines,
**/lobu.config.ts: Configure guardrails viadefineAgent({ guardrails: [...] })inlobu.config.ts.🤖 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 `@examples/delivery/lobu.config.ts` around lines 10 - 32, The delivery agent defined via defineAgent (identifier "delivery") is missing the required guardrails property; update the object passed to defineAgent to include a guardrails field (an array of guardrail definitions per project guidelines) so the config satisfies lobu.config.ts requirements—add guardrails: [...] inside the defineAgent call for the delivery agent and populate it with the mandated rules/policies.examples/leadership/lobu.config.ts (1)
10-32:⚠️ Potential issue | 🟠 Major | ⚡ Quick winConfigure
guardrailson the leadership agent.
guardrailsis missing indefineAgent, which is required forlobu.config.ts.Suggested patch
const leadership = defineAgent({ id: "leadership", name: "leadership", description: "Help leadership teams turn memos, decisions, and board materials into reusable operating context", + guardrails: [], dir: "./agents/leadership",As per coding guidelines,
**/lobu.config.ts: Configure guardrails viadefineAgent({ guardrails: [...] })inlobu.config.ts.🤖 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 `@examples/leadership/lobu.config.ts` around lines 10 - 32, The leadership agent definition (defineAgent with id "leadership"/name "leadership") is missing the required guardrails property; add a guardrails array to the defineAgent call (e.g., guardrails: [ ... ]) with the required guard rule objects or references per project conventions so the agent conforms to lobu.config.ts expectations; update the defineAgent invocation near the leadership constant to include guardrails alongside id, name, description, dir, providers, and network.examples/legal/lobu.config.ts (1)
10-32:⚠️ Potential issue | 🟠 Major | ⚡ Quick winAdd required
guardrailsindefineAgent.This agent definition omits
guardrails, which violates the config guideline forlobu.config.ts.Suggested patch
const legalReview = defineAgent({ id: "legal-review", name: "legal-review", description: "Review contracts, summarize risk, and surface missing protections", + guardrails: [], dir: "./agents/legal",As per coding guidelines,
**/lobu.config.ts: Configure guardrails viadefineAgent({ guardrails: [...] })inlobu.config.ts.🤖 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 `@examples/legal/lobu.config.ts` around lines 10 - 32, The agent created via defineAgent for id/name "legal-review" is missing the required guardrails configuration; update the defineAgent call (the legalReview object) to include a guardrails property (e.g., guardrails: [ ... ]) that lists the policy rules or guardrail modules per project guidelines so the agent enforces constraints during execution; ensure the guardrails array is populated with the appropriate rule identifiers or objects expected by the system.examples/atlas/lobu.config.ts (1)
9-31:⚠️ Potential issue | 🟠 Major | ⚡ Quick winDeclare
guardrailsindefineAgent.The agent config is missing
guardrails, which violates thelobu.config.tsrequirement.Suggested patch
const atlasCurator = defineAgent({ id: "atlas-curator", name: "atlas-curator", description: "Curate Atlas reference data — countries, cities, regions, industries, technologies, universities", + guardrails: [], dir: "./agents/atlas-curator",As per coding guidelines,
**/lobu.config.ts: Configure guardrails viadefineAgent({ guardrails: [...] })inlobu.config.ts.🤖 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 `@examples/atlas/lobu.config.ts` around lines 9 - 31, The agent configuration for atlasCurator (created via defineAgent) is missing the required guardrails property; add a guardrails array to the defineAgent({...}) call for atlasCurator containing the required guardrail rules (e.g., strings or objects as per project schema) so the lobu.config.ts validation passes, ensuring the symbol defineAgent and the atlasCurator constant are updated with the new guardrails field.examples/agent-community/lobu.config.ts (1)
10-32:⚠️ Potential issue | 🟠 Major | ⚡ Quick winAdd explicit
guardrailsto the agent definition.
defineAgenthere does not declareguardrails, so safety policy is implicit instead of configured inlobu.config.ts.Suggested patch
const agentCommunity = defineAgent({ id: "agent-community", name: "agent-community", description: "Discover aligned members, explain why they should meet, and draft warm introductions", + guardrails: [], dir: "./agents/agent-community",As per coding guidelines,
**/lobu.config.ts: Configure guardrails viadefineAgent({ guardrails: [...] })inlobu.config.ts.🤖 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 `@examples/agent-community/lobu.config.ts` around lines 10 - 32, The agent definition for agentCommunity (created via defineAgent) is missing an explicit guardrails property, so the safety policy is implicit; update the defineAgent call for agentCommunity to include a guardrails array (e.g., guardrails: [ ... ]) with the desired safety rules/policies, ensuring the array items match the expected guardrail type/interface used by defineAgent and that the property sits at the same object level as id/name/description/dir/providers/network.examples/ecommerce/lobu.config.ts (1)
10-32:⚠️ Potential issue | 🟠 Major | ⚡ Quick winAdd
guardrailsto this agent config.
defineAgentcurrently has noguardrailsfield, which violates thelobu.config.tspolicy requirement.Suggested patch
const ecommerceOps = defineAgent({ id: "ecommerce-ops", name: "ecommerce-ops", description: "Manage subscriptions, process order changes, and resolve customer requests", + guardrails: [], dir: "./agents/ecommerce-ops",As per coding guidelines,
**/lobu.config.ts: Configure guardrails viadefineAgent({ guardrails: [...] })inlobu.config.ts.🤖 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 `@examples/ecommerce/lobu.config.ts` around lines 10 - 32, The agent config defined by defineAgent for ecommerceOps is missing the required guardrails field; add a guardrails property to the object passed to defineAgent (e.g., add guardrails: [...] inside the ecommerceOps definition) and populate it with the required guardrail rules (strings or objects per your app policy) so the lobu.config.ts policy is satisfied; update the ecommerceOps constant (id/name: "ecommerce-ops") to include this new guardrails array.
🤖 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/cli/src/config/__tests__/config-isolation.test.ts`:
- Around line 33-35: The test currently builds files by calling
readdirSync(configDir).filter(...) which only inspects top-level .ts files;
update the test to recursively scan src/config so nested files aren't
missed—replace the non-recursive readdirSync usage with a recursive directory
walker (or a glob) that starts at configDir and returns all .ts file paths, then
apply the same .endsWith(".ts") && !== "__tests__" filter; reference the
existing variables/functions: files, readdirSync, configDir, and the filter step
so you locate and replace the non-recursive logic with a recursive walk/glob
solution.
---
Outside diff comments:
In `@examples/agent-community/lobu.config.ts`:
- Around line 10-32: The agent definition for agentCommunity (created via
defineAgent) is missing an explicit guardrails property, so the safety policy is
implicit; update the defineAgent call for agentCommunity to include a guardrails
array (e.g., guardrails: [ ... ]) with the desired safety rules/policies,
ensuring the array items match the expected guardrail type/interface used by
defineAgent and that the property sits at the same object level as
id/name/description/dir/providers/network.
In `@examples/atlas/lobu.config.ts`:
- Around line 9-31: The agent configuration for atlasCurator (created via
defineAgent) is missing the required guardrails property; add a guardrails array
to the defineAgent({...}) call for atlasCurator containing the required
guardrail rules (e.g., strings or objects as per project schema) so the
lobu.config.ts validation passes, ensuring the symbol defineAgent and the
atlasCurator constant are updated with the new guardrails field.
In `@examples/delivery/lobu.config.ts`:
- Around line 10-32: The delivery agent defined via defineAgent (identifier
"delivery") is missing the required guardrails property; update the object
passed to defineAgent to include a guardrails field (an array of guardrail
definitions per project guidelines) so the config satisfies lobu.config.ts
requirements—add guardrails: [...] inside the defineAgent call for the delivery
agent and populate it with the mandated rules/policies.
In `@examples/ecommerce/lobu.config.ts`:
- Around line 10-32: The agent config defined by defineAgent for ecommerceOps is
missing the required guardrails field; add a guardrails property to the object
passed to defineAgent (e.g., add guardrails: [...] inside the ecommerceOps
definition) and populate it with the required guardrail rules (strings or
objects per your app policy) so the lobu.config.ts policy is satisfied; update
the ecommerceOps constant (id/name: "ecommerce-ops") to include this new
guardrails array.
In `@examples/finance/lobu.config.ts`:
- Around line 10-32: The agent config created by defineAgent for the finance
agent is missing the required guardrails property; update the defineAgent({ id:
"finance", ... }) call to include a guardrails field (e.g., guardrails: [ ... ])
containing the required guardrail definitions (policy identifiers or rule
objects) appropriate for this project so the finance agent enforces the expected
constraints; modify the finance variable's defineAgent invocation to add the
guardrails array with the necessary entries.
In `@examples/leadership/lobu.config.ts`:
- Around line 10-32: The leadership agent definition (defineAgent with id
"leadership"/name "leadership") is missing the required guardrails property; add
a guardrails array to the defineAgent call (e.g., guardrails: [ ... ]) with the
required guard rule objects or references per project conventions so the agent
conforms to lobu.config.ts expectations; update the defineAgent invocation near
the leadership constant to include guardrails alongside id, name, description,
dir, providers, and network.
In `@examples/legal/lobu.config.ts`:
- Around line 10-32: The agent created via defineAgent for id/name
"legal-review" is missing the required guardrails configuration; update the
defineAgent call (the legalReview object) to include a guardrails property
(e.g., guardrails: [ ... ]) that lists the policy rules or guardrail modules per
project guidelines so the agent enforces constraints during execution; ensure
the guardrails array is populated with the appropriate rule identifiers or
objects expected by the system.
In `@examples/lobu-crm/lobu.config.ts`:
- Around line 12-43: The crm agent defined via defineAgent (variable crm) is
missing the required guardrails property; update the object passed to
defineAgent to include a guardrails: [...] array containing the required
guardrail definitions (e.g., policy IDs or rule objects) so the crm agent has
its safety/validation rules configured; locate the defineAgent({ id: "crm", ...
}) call and add the guardrails key alongside providers and network to satisfy
the expected config shape.
🪄 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: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 5c8fe749-0050-4300-8902-65fc682b22c3
⛔ Files ignored due to path filters (2)
bun.lockis excluded by!**/*.lockpackages/landing/src/generated/landing-snippets.jsonis excluded by!**/generated/**
📒 Files selected for processing (50)
.github/workflows/ci.ymlcodex-skills/lobu-builder/SKILL.mdexamples/agent-community/lobu.config.tsexamples/atlas/lobu.config.tsexamples/delivery/lobu.config.tsexamples/ecommerce/lobu.config.tsexamples/finance/lobu.config.tsexamples/leadership/lobu.config.tsexamples/legal/lobu.config.tsexamples/lobu-crm/lobu.config.tsexamples/market/lobu.config.tsexamples/office-bot/lobu.config.tsexamples/personal-finance/lobu.config.tsexamples/sales/lobu.config.tspackage.jsonpackages/cli/package.jsonpackages/cli/src/__tests__/cli-ux.test.tspackages/cli/src/commands/_lib/apply/__tests__/apply-cmd-dryrun.test.tspackages/cli/src/commands/_lib/apply/__tests__/load-config.test.tspackages/cli/src/commands/_lib/apply/__tests__/map-config.test.tspackages/cli/src/commands/_lib/apply/desired-state.tspackages/cli/src/commands/_lib/apply/map-config.tspackages/cli/src/commands/_lib/init-from-org/__tests__/init-from-org.test.tspackages/cli/src/commands/_lib/init-from-org/bootstrap.tspackages/cli/src/commands/init.tspackages/cli/src/commands/memory/_lib/schema.tspackages/cli/src/config/__tests__/config-isolation.test.tspackages/cli/src/config/__tests__/define.test.tspackages/cli/src/config/define.tspackages/cli/src/config/index.tspackages/cli/src/config/secret.tspackages/landing/scripts/gen-landing-snippets.tspackages/landing/src/content/docs/getting-started/index.mdxpackages/landing/src/content/docs/getting-started/reaction-sdk.mdpackages/landing/src/content/docs/guides/agent-prompts.mdpackages/landing/src/content/docs/guides/egress-judge.mdpackages/landing/src/content/docs/guides/guardrails.mdpackages/landing/src/content/docs/guides/sync-from-github.mdpackages/landing/src/content/docs/guides/tool-policy.mdpackages/landing/src/content/docs/reference/cli.mdpackages/landing/src/content/docs/reference/lobu-apply.mdpackages/landing/src/content/docs/reference/lobu-config.mdpackages/landing/src/content/docs/reference/lobu-memory.mdpackages/sdk/package.jsonpackages/sdk/tsconfig.jsonrelease-please-config.jsonscripts/gen-use-case-data.tsscripts/publish-packages.mjsscripts/sdk-e2e.shskills/lobu/SKILL.md
💤 Files with no reviewable changes (5)
- packages/sdk/tsconfig.json
- packages/sdk/package.json
- release-please-config.json
- .github/workflows/ci.yml
- scripts/publish-packages.mjs
| const files = readdirSync(configDir).filter( | ||
| (f) => f.endsWith(".ts") && f !== "__tests__" | ||
| ); |
There was a problem hiding this comment.
Scan src/config recursively to avoid isolation blind spots.
This only checks top-level .ts files, so a nested src/config/** file can import a disallowed bare module without failing this test.
Suggested fix
import { describe, expect, test } from "bun:test";
import { readdirSync, readFileSync } from "node:fs";
import { join } from "node:path";
@@
const configDir = join(import.meta.dir, "..");
+
+function listTsFiles(dir: string): string[] {
+ const out: string[] = [];
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
+ if (entry.name === "__tests__") continue;
+ const fullPath = join(dir, entry.name);
+ if (entry.isDirectory()) {
+ out.push(...listTsFiles(fullPath));
+ } else if (entry.isFile() && entry.name.endsWith(".ts")) {
+ out.push(fullPath);
+ }
+ }
+ return out;
+}
@@
- const files = readdirSync(configDir).filter(
- (f) => f.endsWith(".ts") && f !== "__tests__"
- );
+ const files = listTsFiles(configDir);
expect(files.length).toBeGreaterThan(0);
@@
- for (const file of files) {
- const source = readFileSync(join(configDir, file), "utf-8");
+ for (const file of files) {
+ const source = readFileSync(file, "utf-8");
for (const spec of importSpecifiers(source)) {
const isRelative = spec.startsWith(".");
if (!isRelative && !ALLOWED_BARE.has(spec)) {
- offenders.push(`${file}: ${spec}`);
+ offenders.push(`${file}: ${spec}`);
}
}
}🤖 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/config/__tests__/config-isolation.test.ts` around lines 33 -
35, The test currently builds files by calling
readdirSync(configDir).filter(...) which only inspects top-level .ts files;
update the test to recursively scan src/config so nested files aren't
missed—replace the non-recursive readdirSync usage with a recursive directory
walker (or a glob) that starts at configDir and returns all .ts file paths, then
apply the same .endsWith(".ts") && !== "__tests__" filter; reference the
existing variables/functions: files, readdirSync, configDir, and the filter step
so you locate and replace the non-recursive logic with a recursive walk/glob
solution.
|
bug_free 68, simplicity 72, slop 12, bugs 1, 0 blockers Typecheck and unit passed. [env] Integration failed before exercising tests because DATABASE_URL pointed at database "postgres" and the harness refused destructive setup. Exploratory: loaded desired state for atlas, lobu-crm, and personal-finance configs with bun; shapes looked sane. Suggested fixes
Full verdict JSON{
"bug_free_confidence": 68,
"bugs": 1,
"slop": 12,
"simplicity": 72,
"blockers": [],
"change_type": "feat",
"behavior_change_risk": "high",
"tests_adequate": false,
"suggested_fixes": [
{
"file": "packages/cli/src/commands/_lib/apply/apply-cmd.ts",
"line": 650,
"change": "Ensure declared platform secrets are re-pushed even when the platform diff is noop with an opaque remote config, or make diffPlatform emit an update for opaque secret-bearing config so env/.env token rotations actually reach the server."
},
{
"file": "packages/server/src/lobu/agent-routes.ts",
"line": 1483,
"change": "Fix the new comment to say the Map key uses the NUL delimiter (`${teamId}\\0${channelId}`), not a single space, or remove the over-specific delimiter paragraph."
}
],
"notes": "Typecheck and unit passed. [env] Integration failed before exercising tests because DATABASE_URL pointed at database \"postgres\" and the harness refused destructive setup. Exploratory: loaded desired state for atlas, lobu-crm, and personal-finance configs with bun; shapes looked sane.",
"categories": {
"src": 9635,
"tests": 6330,
"docs": 1492,
"config": 8422,
"deps": 196,
"migrations": 20,
"ci": 83,
"generated": 4443
}
}Local review gate — branch protection can require the |
What
Folds the standalone
@lobu/sdkconfig-authoring package into a dependency-light@lobu/cli/configsubpath, and deletes@lobu/sdk. Part 1 of the 9.3.0 package re-tiering (option 2): shrink the published surface, kill the@lobu/sdknaming confusion.A project already installs
@lobu/clito runlobu apply, so the separate@lobu/sdkdevDependency was redundant. This matches how the ecosystem ships config helpers from the tool package itself —vite,vitest/config,astro/config,drizzle-kit.Changes
@lobu/cli/configentry:bun→src/config, node→dist/config. Thedefine*builders (defineConfig,defineAgent,defineWatcher,defineConnection,defineEntityType,defineRelationshipType,defineAuthProfile,secret) move here verbatim.config-isolation.test.ts): static-scanssrc/configand fails if it imports anything beyond relative siblings,@lobu/connector-sdk, or@sinclair/typebox— so the heavy CLI graph can never leak into a user'slobu.config.tsload/typecheck.defineConnector/Typestill re-exported (from@lobu/connector-sdk); that package is untouched.@lobu/sdkdeleted and removed frompublish-packages.mjs,release-please-config.jsonextra-files,ci.ymlunit build, rootbuild:packages+ test globs, lockfile.lobu init/init --from-orgscaffold, 12 examples, landing docs + regenerated snippets,skills/,codex-skills/,scripts/sdk-e2e.sh,scripts/gen-use-case-data.ts.Validation
tsc --noEmitclean (pre-commit hook) +packages/clistrict typecheck clean.load-config/map-config(jiti-load configs importing@lobu/cli/config→ resolves via thebuncondition to src),cli-ux,apply-cmd-dryrun,init-from-org.sdk-e2eCI job exercises the full scaffold → apply → sync → watcher path against the new@lobu/cli/configimport end-to-end.Follow-up (same 9.3.0)
PR B: privatize
@lobu/connectors+@lobu/embeddings+@lobu/worker(bundle/vendor into the CLI tarball like@lobu/server).@lobu/connector-workerand@lobu/corestay public.Summary by CodeRabbit
Chores
Documentation
Tests