@lobu/cli 6.1.1 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/_lib/apply/apply-cmd.d.ts +36 -0
- package/dist/commands/_lib/apply/apply-cmd.d.ts.map +1 -1
- package/dist/commands/_lib/apply/apply-cmd.js +696 -40
- package/dist/commands/_lib/apply/apply-cmd.js.map +1 -1
- package/dist/commands/_lib/apply/client.d.ts +285 -0
- package/dist/commands/_lib/apply/client.d.ts.map +1 -1
- package/dist/commands/_lib/apply/client.js +469 -28
- package/dist/commands/_lib/apply/client.js.map +1 -1
- package/dist/commands/_lib/apply/desired-state.d.ts +187 -3
- package/dist/commands/_lib/apply/desired-state.d.ts.map +1 -1
- package/dist/commands/_lib/apply/desired-state.js +879 -88
- package/dist/commands/_lib/apply/desired-state.js.map +1 -1
- package/dist/commands/_lib/apply/diff.d.ts +72 -3
- package/dist/commands/_lib/apply/diff.d.ts.map +1 -1
- package/dist/commands/_lib/apply/diff.js +473 -84
- package/dist/commands/_lib/apply/diff.js.map +1 -1
- package/dist/commands/_lib/apply/prompt.d.ts +6 -0
- package/dist/commands/_lib/apply/prompt.d.ts.map +1 -1
- package/dist/commands/_lib/apply/prompt.js +16 -0
- package/dist/commands/_lib/apply/prompt.js.map +1 -1
- package/dist/commands/_lib/apply/render.d.ts +9 -0
- package/dist/commands/_lib/apply/render.d.ts.map +1 -1
- package/dist/commands/_lib/apply/render.js +80 -3
- package/dist/commands/_lib/apply/render.js.map +1 -1
- package/dist/commands/_lib/connector-loader.d.ts +3 -0
- package/dist/commands/_lib/connector-loader.d.ts.map +1 -0
- package/dist/commands/_lib/connector-loader.js +129 -0
- package/dist/commands/_lib/connector-loader.js.map +1 -0
- package/dist/commands/_lib/connector-run-cmd.d.ts +35 -0
- package/dist/commands/_lib/connector-run-cmd.d.ts.map +1 -0
- package/dist/commands/_lib/connector-run-cmd.js +351 -0
- package/dist/commands/_lib/connector-run-cmd.js.map +1 -0
- package/dist/commands/_lib/export/export-cmd.d.ts +35 -0
- package/dist/commands/_lib/export/export-cmd.d.ts.map +1 -0
- package/dist/commands/_lib/export/export-cmd.js +329 -0
- package/dist/commands/_lib/export/export-cmd.js.map +1 -0
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +11 -14
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +28 -7
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/connector.d.ts +3 -0
- package/dist/commands/connector.d.ts.map +1 -0
- package/dist/commands/connector.js +5 -0
- package/dist/commands/connector.js.map +1 -0
- package/dist/commands/dev.d.ts +23 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +273 -8
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +2 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +28 -18
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +29 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +22 -16
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/memory/_lib/browser-auth-cmd.d.ts.map +1 -1
- package/dist/commands/memory/_lib/browser-auth-cmd.js +15 -144
- package/dist/commands/memory/_lib/browser-auth-cmd.js.map +1 -1
- package/dist/commands/memory/_lib/schema.d.ts +28 -1
- package/dist/commands/memory/_lib/schema.d.ts.map +1 -1
- package/dist/commands/memory/_lib/schema.js +120 -4
- package/dist/commands/memory/_lib/schema.js.map +1 -1
- package/dist/commands/memory/_lib/seed-cmd.d.ts.map +1 -1
- package/dist/commands/memory/_lib/seed-cmd.js +41 -18
- package/dist/commands/memory/_lib/seed-cmd.js.map +1 -1
- package/dist/commands/org.d.ts +4 -0
- package/dist/commands/org.d.ts.map +1 -1
- package/dist/commands/org.js +10 -0
- package/dist/commands/org.js.map +1 -1
- package/dist/commands/token.d.ts +9 -0
- package/dist/commands/token.d.ts.map +1 -1
- package/dist/commands/token.js +54 -3
- package/dist/commands/token.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +4 -13
- package/dist/commands/validate.js.map +1 -1
- package/dist/config/loader.js +2 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/connectors/README.md +2 -3
- package/dist/connectors/apple_health.ts +138 -0
- package/dist/connectors/apple_photos.ts +178 -0
- package/dist/connectors/apple_screen_time.ts +82 -0
- package/dist/connectors/browser/evaluate.ts +120 -0
- package/dist/connectors/browser/fill_form.ts +107 -0
- package/dist/connectors/browser/page_text.ts +108 -0
- package/dist/connectors/browser-scraper-utils.ts +111 -3
- package/dist/connectors/capterra.ts +5 -1
- package/dist/connectors/chrome_tabs.ts +74 -0
- package/dist/connectors/g2.ts +5 -1
- package/dist/connectors/github.ts +16 -38
- package/dist/connectors/glassdoor.ts +5 -1
- package/dist/connectors/google_calendar.ts +28 -6
- package/dist/connectors/google_gmail.ts +6 -3
- package/dist/connectors/google_play.ts +32 -5
- package/dist/connectors/hackernews.ts +37 -2
- package/dist/connectors/index.ts +14 -1
- package/dist/connectors/linkedin.ts +32 -9
- package/dist/connectors/local_directory.ts +91 -0
- package/dist/connectors/reddit.ts +1 -0
- package/dist/connectors/revolut.ts +569 -0
- package/dist/connectors/rss.ts +33 -8
- package/dist/connectors/trustpilot.ts +36 -21
- package/dist/connectors/website.ts +8 -69
- package/dist/connectors/whatsapp.ts +21 -22
- package/dist/connectors/whatsapp_local.ts +125 -0
- package/dist/connectors/x.ts +17 -7
- package/dist/db/migrations/20260510220000_connector_required_capability.sql +47 -0
- package/dist/db/migrations/20260512000000_device_worker_connection_binding.sql +113 -0
- package/dist/db/migrations/20260512131703_connections_slug.sql +131 -0
- package/dist/db/migrations/20260513000000_chat_user_identities.sql +24 -0
- package/dist/db/migrations/20260513120000_auth_profiles_device_binding.sql +50 -0
- package/dist/db/migrations/20260513150000_auth_profiles_cdp_url.sql +43 -0
- package/dist/db/migrations/20260513200000_notifications_as_events.sql +86 -0
- package/dist/db/migrations/20260514000000_scheduled_jobs.sql +97 -0
- package/dist/db/migrations/20260514120000_auth_profiles_connector_key_nullable.sql +42 -0
- package/dist/db/migrations/20260514130000_connection_action_modes.sql +103 -0
- package/dist/db/migrations/20260514160000_auth_profiles_mirror_mode.sql +32 -0
- package/dist/db/migrations/20260515120000_agents_per_org_pk.sql +66 -0
- package/dist/db/migrations/20260515150000_geo_enrichment.sql +208 -0
- package/dist/db/migrations/20260515160000_drop_agents_org_id_unique.sql +24 -0
- package/dist/db/migrations/20260515170000_auth_profiles_default_for_connector.sql +23 -0
- package/dist/db/migrations/20260516120000_agents_per_org_pk_swap.sql +125 -0
- package/dist/db/migrations/20260516200000_events_search_tsv.sql +134 -0
- package/dist/db/migrations/20260516200100_events_lifecycle_changes_index.sql +25 -0
- package/dist/db/migrations/20260517010000_drop_unused_indexes.sql +49 -0
- package/dist/db/migrations/20260517020000_softdelete_orphan_feeds.sql +56 -0
- package/dist/db/migrations/20260517030000_pat_worker_id_binding.sql +27 -0
- package/dist/db/migrations/20260517040000_archive_orphan_watchers.sql +30 -0
- package/dist/db/migrations/20260517050000_watcher_agent_id_not_null.sql +34 -0
- package/dist/db/migrations/20260517060000_watcher_schema_additions.sql +78 -0
- package/dist/db/migrations/20260517150000_goals_primitive.sql +55 -0
- package/dist/db/migrations/20260517160000_drop_goals_primitive.sql +45 -0
- package/dist/db/migrations/20260518000000_pending_interactions.sql +49 -0
- package/dist/db/migrations/20260518010000_runs_heartbeat_reaper_index.sql +22 -0
- package/dist/eval/client.d.ts.map +1 -1
- package/dist/eval/client.js +11 -0
- package/dist/eval/client.js.map +1 -1
- package/dist/eval/grader.js +2 -1
- package/dist/eval/grader.js.map +1 -1
- package/dist/eval/types.d.ts +2 -0
- package/dist/eval/types.d.ts.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +115 -114
- package/dist/index.js.map +1 -1
- package/dist/internal/context.d.ts +9 -0
- package/dist/internal/context.d.ts.map +1 -1
- package/dist/internal/context.js +41 -6
- package/dist/internal/context.js.map +1 -1
- package/dist/internal/credentials.d.ts +5 -0
- package/dist/internal/credentials.d.ts.map +1 -1
- package/dist/internal/credentials.js +75 -1
- package/dist/internal/credentials.js.map +1 -1
- package/dist/internal/gateway-url.d.ts +14 -0
- package/dist/internal/gateway-url.d.ts.map +1 -1
- package/dist/internal/gateway-url.js +19 -0
- package/dist/internal/gateway-url.js.map +1 -1
- package/dist/internal/index.d.ts +1 -1
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/local-env.d.ts.map +1 -1
- package/dist/internal/local-env.js +9 -2
- package/dist/internal/local-env.js.map +1 -1
- package/dist/server.bundle.mjs +42251 -36931
- package/dist/start-local.bundle.mjs +16437 -9882
- package/dist/templates/TESTING.md.tmpl +9 -9
- package/package.json +8 -6
- package/dist/connectors/google_photos.ts +0 -776
package/dist/commands/dev.d.ts
CHANGED
|
@@ -3,7 +3,22 @@ export interface DevOptions {
|
|
|
3
3
|
quiet?: boolean;
|
|
4
4
|
verbose?: boolean;
|
|
5
5
|
logLevel?: string;
|
|
6
|
+
/**
|
|
7
|
+
* Acknowledge that `lobu run` is about to point at a shared/non-local
|
|
8
|
+
* Postgres inherited from the shell. Required when the project's own .env
|
|
9
|
+
* doesn't pin DATABASE_URL — protects against the silent footgun of running
|
|
10
|
+
* "local dev" against a teammate's tailnet DB or, worse, prod.
|
|
11
|
+
*/
|
|
12
|
+
unsafeSharedDb?: boolean;
|
|
6
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Treat any DATABASE_URL whose host isn't loopback as "shared". The check
|
|
16
|
+
* is intentionally crude — anything resolvable from the network counts,
|
|
17
|
+
* including tailnet (`*.ts.net`), private IPs, and prod hostnames.
|
|
18
|
+
*
|
|
19
|
+
* Exported for unit tests; the safety gate in `devCommand` is the consumer.
|
|
20
|
+
*/
|
|
21
|
+
export declare function isSharedDatabaseUrl(databaseUrl: string): boolean;
|
|
7
22
|
type BackendBundleKind = "postgres" | "pglite";
|
|
8
23
|
/**
|
|
9
24
|
* `lobu run` — start the embedded Lobu stack.
|
|
@@ -14,6 +29,14 @@ type BackendBundleKind = "postgres" | "pglite";
|
|
|
14
29
|
* Postgres runtime against that database.
|
|
15
30
|
*/
|
|
16
31
|
export declare function devCommand(cwd: string, options?: DevOptions): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Walk up from `startDir` looking for the Lobu monorepo workspace root: a
|
|
34
|
+
* `package.json` with a non-empty `workspaces` field AND a
|
|
35
|
+
* `packages/agent-worker/src/index.ts` underneath it. Returns the absolute
|
|
36
|
+
* path, or `null`. (Mirrors `@lobu/server`'s `findEnclosingMonorepoRoot` — kept
|
|
37
|
+
* local so the CLI doesn't take a dep on the server package.)
|
|
38
|
+
*/
|
|
39
|
+
export declare function findEnclosingMonorepoRoot(startDir: string): string | null;
|
|
17
40
|
export declare function resolveBackendBundle(startDir?: string, kind?: BackendBundleKind): string | null;
|
|
18
41
|
export declare function isPortFree(port: number): Promise<boolean>;
|
|
19
42
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAUhE;AAED,KAAK,iBAAiB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/C;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAiPf;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8BzE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,SAA0C,EAClD,IAAI,GAAE,iBAA8B,GACnC,MAAM,GAAG,IAAI,CA+Bf;AA4FD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAezD"}
|
package/dist/commands/dev.js
CHANGED
|
@@ -1,13 +1,37 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
3
|
import { readFile } from "node:fs/promises";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import { createServer } from "node:net";
|
|
6
|
-
import { dirname, join } from "node:path";
|
|
6
|
+
import { dirname, join, resolve } from "node:path";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
8
|
import chalk from "chalk";
|
|
9
9
|
import ora from "ora";
|
|
10
|
+
import { isLoadError, loadConfig } from "../config/loader.js";
|
|
11
|
+
import { resolveApiClient } from "../internal/api-client.js";
|
|
12
|
+
import { addContext, getServerConfig } from "../internal/context.js";
|
|
13
|
+
import { saveCredentials } from "../internal/credentials.js";
|
|
10
14
|
import { parseEnvContent } from "../internal/index.js";
|
|
15
|
+
import { loadProjectLink } from "../internal/project-link.js";
|
|
16
|
+
/**
|
|
17
|
+
* Treat any DATABASE_URL whose host isn't loopback as "shared". The check
|
|
18
|
+
* is intentionally crude — anything resolvable from the network counts,
|
|
19
|
+
* including tailnet (`*.ts.net`), private IPs, and prod hostnames.
|
|
20
|
+
*
|
|
21
|
+
* Exported for unit tests; the safety gate in `devCommand` is the consumer.
|
|
22
|
+
*/
|
|
23
|
+
export function isSharedDatabaseUrl(databaseUrl) {
|
|
24
|
+
try {
|
|
25
|
+
const url = new URL(databaseUrl);
|
|
26
|
+
// `new URL("postgres://[::1]:5432/x").hostname` returns `[::1]` with the
|
|
27
|
+
// brackets, so strip them before comparing.
|
|
28
|
+
const host = url.hostname.toLowerCase().replace(/^\[|\]$/g, "");
|
|
29
|
+
return host !== "localhost" && host !== "127.0.0.1" && host !== "::1";
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
11
35
|
/**
|
|
12
36
|
* `lobu run` — start the embedded Lobu stack.
|
|
13
37
|
*
|
|
@@ -26,8 +50,47 @@ export async function devCommand(cwd, options = {}) {
|
|
|
26
50
|
catch {
|
|
27
51
|
envVars = {};
|
|
28
52
|
}
|
|
29
|
-
|
|
53
|
+
// User-level server config from ~/.config/lobu/config.json (Mac-app
|
|
54
|
+
// settings pane writes here; CLI users can also `lobu context server ...`).
|
|
55
|
+
// Precedence: shell > project .env > user config > defaults.
|
|
56
|
+
const userServerConfig = await getServerConfig().catch(() => undefined);
|
|
57
|
+
const userServerEnv = {};
|
|
58
|
+
if (userServerConfig?.databaseUrl)
|
|
59
|
+
userServerEnv.DATABASE_URL = userServerConfig.databaseUrl;
|
|
60
|
+
if (userServerConfig?.port)
|
|
61
|
+
userServerEnv.PORT = String(userServerConfig.port);
|
|
62
|
+
if (userServerConfig?.host)
|
|
63
|
+
userServerEnv.HOST = userServerConfig.host;
|
|
64
|
+
if (userServerConfig?.dataDir)
|
|
65
|
+
userServerEnv.LOBU_DATA_DIR = userServerConfig.dataDir;
|
|
66
|
+
const mergedEnv = {
|
|
67
|
+
...userServerEnv,
|
|
68
|
+
...envVars,
|
|
69
|
+
...process.env,
|
|
70
|
+
};
|
|
30
71
|
const hasDatabaseUrl = Boolean(mergedEnv.DATABASE_URL?.trim());
|
|
72
|
+
// Refuse to boot against a shared/non-local DATABASE_URL that came from the
|
|
73
|
+
// parent shell rather than the project's own .env or the user's config.
|
|
74
|
+
// A common footgun: "local lobu run" silently writes into prod / a
|
|
75
|
+
// teammate's tailnet DB. The project pinning its own DATABASE_URL, or the
|
|
76
|
+
// user persisting one in ~/.config/lobu/config.json, is explicit consent.
|
|
77
|
+
if (hasDatabaseUrl &&
|
|
78
|
+
!envVars.DATABASE_URL?.trim() &&
|
|
79
|
+
!userServerEnv.DATABASE_URL?.trim() &&
|
|
80
|
+
isSharedDatabaseUrl(mergedEnv.DATABASE_URL) &&
|
|
81
|
+
!options.unsafeSharedDb) {
|
|
82
|
+
spinner.fail("DATABASE_URL inherited from shell points at a shared DB");
|
|
83
|
+
console.error(chalk.red(`\n Refusing to start: DATABASE_URL=${redactUrl(mergedEnv.DATABASE_URL)}\n`));
|
|
84
|
+
console.error(chalk.dim(` This URL is set in your shell environment, not in ${envPath}.`));
|
|
85
|
+
console.error(chalk.dim(" Its host isn't loopback — likely a teammate's tailnet DB or prod."));
|
|
86
|
+
console.error(chalk.dim(" Local dev runs against this DB silently mutate shared data and"));
|
|
87
|
+
console.error(chalk.dim(" let prod workers race local-dev runs (see AGENTS.md).\n"));
|
|
88
|
+
console.error(chalk.dim(" Fix one of:"));
|
|
89
|
+
console.error(chalk.dim(` • pin a project-local DB in ${envPath} (e.g. postgres://localhost/<project>_dev)`));
|
|
90
|
+
console.error(chalk.dim(" • unset DATABASE_URL in this shell (PGlite will be used)"));
|
|
91
|
+
console.error(chalk.dim(" • pass --unsafe-shared-db if you really mean to share this DB\n"));
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
31
94
|
const bundleKind = hasDatabaseUrl ? "postgres" : "pglite";
|
|
32
95
|
const bundlePath = resolveBackendBundle(undefined, bundleKind);
|
|
33
96
|
if (!bundlePath) {
|
|
@@ -60,6 +123,7 @@ export async function devCommand(cwd, options = {}) {
|
|
|
60
123
|
process.exit(1);
|
|
61
124
|
}
|
|
62
125
|
if (!options.quiet) {
|
|
126
|
+
await printPreviewInstructions(cwd);
|
|
63
127
|
console.log(chalk.cyan(`\n Starting Lobu...\n`));
|
|
64
128
|
console.log(chalk.dim(` bundle: ${bundlePath}`));
|
|
65
129
|
if (hasDatabaseUrl) {
|
|
@@ -72,14 +136,32 @@ export async function devCommand(cwd, options = {}) {
|
|
|
72
136
|
console.log(chalk.dim(` api docs: ${gatewayUrl}/api/docs`));
|
|
73
137
|
console.log();
|
|
74
138
|
}
|
|
75
|
-
const logLevel = options
|
|
76
|
-
(options.quiet ? "warn" : options.verbose ? "debug" : undefined);
|
|
139
|
+
const logLevel = resolveLogLevel(options);
|
|
77
140
|
// Pass-through env: process.env wins so users can override per-invocation,
|
|
78
|
-
// .env values fill in the rest.
|
|
79
|
-
//
|
|
141
|
+
// .env values fill in the rest.
|
|
142
|
+
//
|
|
143
|
+
// LOBU_DEV_PROJECT_PATH points the embedded server at the monorepo root so
|
|
144
|
+
// it can find the `packages/agent-worker/src/index.ts` worker entry (and
|
|
145
|
+
// packages/owletto). When `lobu run` is invoked from a project subdir inside the
|
|
146
|
+
// monorepo, cwd is *not* the root — walk up to the enclosing workspace root.
|
|
147
|
+
const enclosingRoot = findEnclosingMonorepoRoot(cwd);
|
|
148
|
+
const projectPath = process.env.LOBU_DEV_PROJECT_PATH ||
|
|
149
|
+
envVars.LOBU_DEV_PROJECT_PATH ||
|
|
150
|
+
enclosingRoot ||
|
|
151
|
+
cwd;
|
|
152
|
+
// Bundled CLIs (and `lobu run` from anywhere) ship providers.json next to
|
|
153
|
+
// the server bundle; point the gateway at it unless the user already set the
|
|
154
|
+
// path in their env or .env.
|
|
155
|
+
const bundledProvidersPath = join(dirname(bundlePath), "providers.json");
|
|
156
|
+
const providerRegistryPath = process.env.LOBU_PROVIDER_REGISTRY_PATH ||
|
|
157
|
+
envVars.LOBU_PROVIDER_REGISTRY_PATH ||
|
|
158
|
+
(existsSync(bundledProvidersPath) ? bundledProvidersPath : undefined);
|
|
80
159
|
const childEnv = {
|
|
81
160
|
...mergedEnv,
|
|
82
|
-
LOBU_DEV_PROJECT_PATH:
|
|
161
|
+
LOBU_DEV_PROJECT_PATH: projectPath,
|
|
162
|
+
...(providerRegistryPath
|
|
163
|
+
? { LOBU_PROVIDER_REGISTRY_PATH: providerRegistryPath }
|
|
164
|
+
: {}),
|
|
83
165
|
PORT: String(portNum),
|
|
84
166
|
GATEWAY_PORT: String(portNum),
|
|
85
167
|
...(logLevel ? { LOG_LEVEL: logLevel } : {}),
|
|
@@ -93,6 +175,13 @@ export async function devCommand(cwd, options = {}) {
|
|
|
93
175
|
console.error(chalk.red(`\n Failed to start Lobu: ${err.message}\n`));
|
|
94
176
|
process.exit(1);
|
|
95
177
|
});
|
|
178
|
+
// Once the embedded server is reachable, fetch a session token via
|
|
179
|
+
// /api/local-init and print a deep-link URL. The SPA hook accepts
|
|
180
|
+
// ?lobu_token=<session> and exchanges it for a cookie, so the user can
|
|
181
|
+
// click the URL straight from their terminal and land logged in. Also
|
|
182
|
+
// persists the session as the `local` CLI context so `lobu chat -c local`
|
|
183
|
+
// works without a separate `lobu login`.
|
|
184
|
+
void announceLocalSignIn(gatewayUrl, !hasDatabaseUrl);
|
|
96
185
|
// Forward Ctrl+C to the child so it can clean up its own subprocess workers
|
|
97
186
|
// before the parent exits. SIGKILL after a timeout in case it wedges.
|
|
98
187
|
const forwardSignal = (signal) => {
|
|
@@ -115,6 +204,42 @@ export async function devCommand(cwd, options = {}) {
|
|
|
115
204
|
process.exit(code ?? 0);
|
|
116
205
|
});
|
|
117
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Walk up from `startDir` looking for the Lobu monorepo workspace root: a
|
|
209
|
+
* `package.json` with a non-empty `workspaces` field AND a
|
|
210
|
+
* `packages/agent-worker/src/index.ts` underneath it. Returns the absolute
|
|
211
|
+
* path, or `null`. (Mirrors `@lobu/server`'s `findEnclosingMonorepoRoot` — kept
|
|
212
|
+
* local so the CLI doesn't take a dep on the server package.)
|
|
213
|
+
*/
|
|
214
|
+
export function findEnclosingMonorepoRoot(startDir) {
|
|
215
|
+
let cur = resolve(startDir);
|
|
216
|
+
for (let i = 0; i < 64; i++) {
|
|
217
|
+
const pkgPath = join(cur, "package.json");
|
|
218
|
+
if (existsSync(pkgPath)) {
|
|
219
|
+
let hasWorkspaces = false;
|
|
220
|
+
try {
|
|
221
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
222
|
+
hasWorkspaces =
|
|
223
|
+
pkg.workspaces != null &&
|
|
224
|
+
(Array.isArray(pkg.workspaces)
|
|
225
|
+
? pkg.workspaces.length > 0
|
|
226
|
+
: typeof pkg.workspaces === "object");
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
hasWorkspaces = false;
|
|
230
|
+
}
|
|
231
|
+
if (hasWorkspaces &&
|
|
232
|
+
existsSync(join(cur, "packages/agent-worker/src/index.ts"))) {
|
|
233
|
+
return cur;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
const parent = dirname(cur);
|
|
237
|
+
if (parent === cur)
|
|
238
|
+
break;
|
|
239
|
+
cur = parent;
|
|
240
|
+
}
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
118
243
|
export function resolveBackendBundle(startDir = dirname(fileURLToPath(import.meta.url)), kind = "postgres") {
|
|
119
244
|
const here = startDir;
|
|
120
245
|
const require_ = createRequire(import.meta.url);
|
|
@@ -146,6 +271,83 @@ export function resolveBackendBundle(startDir = dirname(fileURLToPath(import.met
|
|
|
146
271
|
}
|
|
147
272
|
return null;
|
|
148
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* After the embedded server is reachable, hit POST /api/local-init for
|
|
276
|
+
* a fresh session token, register a `local` CLI context pointing at the
|
|
277
|
+
* gateway, persist the session as that context's bearer credential, and
|
|
278
|
+
* print a deep-link URL the user can click to land logged into the SPA.
|
|
279
|
+
*
|
|
280
|
+
* Best-effort: a failure here (server not ready, /local-init refused
|
|
281
|
+
* because real users exist, etc.) just skips the banner. The endpoint is
|
|
282
|
+
* loopback-only and idempotent so it's safe to fire unconditionally.
|
|
283
|
+
*/
|
|
284
|
+
async function announceLocalSignIn(gatewayUrl, pgLite) {
|
|
285
|
+
// Poll briefly so the announce lands AFTER the server's own startup
|
|
286
|
+
// banner without racing it.
|
|
287
|
+
const reachable = await waitForServerReachable(gatewayUrl);
|
|
288
|
+
if (!reachable)
|
|
289
|
+
return;
|
|
290
|
+
// Only the embedded PGlite path seeds the bootstrap user → /local-init
|
|
291
|
+
// will refuse on a Postgres-backed deployment with real signups. Skip
|
|
292
|
+
// the network call entirely in that case to keep the banner quiet.
|
|
293
|
+
if (!pgLite)
|
|
294
|
+
return;
|
|
295
|
+
try {
|
|
296
|
+
const res = await fetch(`${gatewayUrl}/api/local-init`, {
|
|
297
|
+
method: "POST",
|
|
298
|
+
headers: { "X-Lobu-Client": "lobu-run" },
|
|
299
|
+
});
|
|
300
|
+
if (!res.ok)
|
|
301
|
+
return;
|
|
302
|
+
const body = (await res.json());
|
|
303
|
+
// CLI gets the worker-scoped PAT — works against /api/workers/* (used
|
|
304
|
+
// by lobu apply / lobu eval) and everything else. The session_token is
|
|
305
|
+
// for the browser deep-link URL: exchange-token validates either, but
|
|
306
|
+
// the cookie path needs a session (we pass session_token in the URL
|
|
307
|
+
// so the SPA hook reaches /api/exchange-token → Better Auth session
|
|
308
|
+
// cookie).
|
|
309
|
+
const cliToken = body.device_token ?? body.session_token;
|
|
310
|
+
if (!cliToken)
|
|
311
|
+
return;
|
|
312
|
+
const contextName = "local";
|
|
313
|
+
await addContext(contextName, gatewayUrl);
|
|
314
|
+
const creds = {
|
|
315
|
+
accessToken: cliToken,
|
|
316
|
+
...(body.user?.email ? { email: body.user.email } : {}),
|
|
317
|
+
...(body.user?.name ? { name: body.user.name } : {}),
|
|
318
|
+
...(body.user?.id ? { userId: body.user.id } : {}),
|
|
319
|
+
};
|
|
320
|
+
await saveCredentials(creds, contextName);
|
|
321
|
+
const url = new URL(gatewayUrl);
|
|
322
|
+
url.searchParams.set("lobu_token", body.session_token ?? cliToken);
|
|
323
|
+
console.log();
|
|
324
|
+
console.log(chalk.green(` Signed in as ${body.user?.email ?? "Local Developer"}.`));
|
|
325
|
+
console.log(chalk.dim(` Web UI: `) + chalk.cyan(url.toString()));
|
|
326
|
+
console.log(chalk.dim(` CLI: `) +
|
|
327
|
+
chalk.cyan(`lobu chat -c ${contextName} "hello"`));
|
|
328
|
+
console.log();
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
// Swallow — the banner is best-effort.
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
async function waitForServerReachable(url, timeoutMs = 30_000) {
|
|
335
|
+
const start = Date.now();
|
|
336
|
+
while (Date.now() - start < timeoutMs) {
|
|
337
|
+
try {
|
|
338
|
+
const res = await fetch(`${url}/health`, {
|
|
339
|
+
signal: AbortSignal.timeout(1_000),
|
|
340
|
+
});
|
|
341
|
+
if (res.ok)
|
|
342
|
+
return true;
|
|
343
|
+
}
|
|
344
|
+
catch {
|
|
345
|
+
// not up yet
|
|
346
|
+
}
|
|
347
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
348
|
+
}
|
|
349
|
+
return false;
|
|
350
|
+
}
|
|
149
351
|
export function isPortFree(port) {
|
|
150
352
|
return new Promise((resolve) => {
|
|
151
353
|
const server = createServer();
|
|
@@ -163,6 +365,69 @@ export function isPortFree(port) {
|
|
|
163
365
|
}
|
|
164
366
|
});
|
|
165
367
|
}
|
|
368
|
+
async function printPreviewInstructions(cwd) {
|
|
369
|
+
const loaded = await loadConfig(cwd);
|
|
370
|
+
if (isLoadError(loaded))
|
|
371
|
+
return;
|
|
372
|
+
// `agent.preview` is a record keyed by chat platform (`slack`, `telegram`, …).
|
|
373
|
+
const enabled = [];
|
|
374
|
+
for (const [agentId, agent] of Object.entries(loaded.config.agents)) {
|
|
375
|
+
for (const [platform, cfg] of Object.entries(agent.preview ?? {})) {
|
|
376
|
+
if (cfg?.enabled === true)
|
|
377
|
+
enabled.push({ agentId, platform, cfg });
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
if (enabled.length === 0)
|
|
381
|
+
return;
|
|
382
|
+
let clientInfo;
|
|
383
|
+
try {
|
|
384
|
+
const projectLink = await loadProjectLink(cwd);
|
|
385
|
+
clientInfo = await resolveApiClient({
|
|
386
|
+
context: projectLink?.context,
|
|
387
|
+
org: projectLink?.org,
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
catch {
|
|
391
|
+
console.log(chalk.yellow("\n Preview is enabled, but no Lobu Cloud session is available."));
|
|
392
|
+
console.log(chalk.dim(" Run `lobu login`, `lobu org set <slug>`, and `lobu apply`; then restart `lobu run` to get a link code.\n"));
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
console.log(chalk.cyan("\n Preview"));
|
|
396
|
+
for (const { agentId, platform, cfg } of enabled) {
|
|
397
|
+
try {
|
|
398
|
+
const claim = await clientInfo.client.post(`/api/${clientInfo.orgSlug}/preview/claims`, {
|
|
399
|
+
agent_id: agentId,
|
|
400
|
+
platform,
|
|
401
|
+
surfaces: cfg.surfaces ?? ["dm"],
|
|
402
|
+
ttl_minutes: cfg.code_ttl_minutes ?? 15,
|
|
403
|
+
});
|
|
404
|
+
console.log(chalk.dim(` agent: ${agentId}`));
|
|
405
|
+
console.log(chalk.dim(` platform: ${platform}`));
|
|
406
|
+
if (claim.join_url)
|
|
407
|
+
console.log(chalk.dim(` join: ${claim.join_url}`));
|
|
408
|
+
console.log(chalk.dim(` command: ${claim.command}`));
|
|
409
|
+
console.log(chalk.dim(` expires: ${claim.expires_at}`));
|
|
410
|
+
console.log(chalk.dim(` Join the hosted Lobu ${platform} workspace and send the command above to @Lobu.`));
|
|
411
|
+
}
|
|
412
|
+
catch (error) {
|
|
413
|
+
console.log(chalk.yellow(` Could not create a ${platform} preview code for ${agentId}.`));
|
|
414
|
+
console.log(chalk.dim(" Make sure the agent has been synced with `lobu apply` and try again."));
|
|
415
|
+
if (process.env.DEBUG) {
|
|
416
|
+
console.log(chalk.dim(` ${error instanceof Error ? error.message : String(error)}`));
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
console.log();
|
|
421
|
+
}
|
|
422
|
+
function resolveLogLevel(options) {
|
|
423
|
+
if (options.logLevel)
|
|
424
|
+
return options.logLevel;
|
|
425
|
+
if (options.quiet)
|
|
426
|
+
return "warn";
|
|
427
|
+
if (options.verbose)
|
|
428
|
+
return "debug";
|
|
429
|
+
return undefined;
|
|
430
|
+
}
|
|
166
431
|
function redactUrl(url) {
|
|
167
432
|
try {
|
|
168
433
|
const u = new URL(url);
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAgLA,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,aAAa,CACjC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAuDf"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
|
-
import {
|
|
2
|
+
import { readFile, stat } from "node:fs/promises";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import chalk from "chalk";
|
|
5
|
+
import postgres from "postgres";
|
|
5
6
|
import { checkMemoryHealth } from "./memory/_lib/openclaw-cmd.js";
|
|
6
7
|
import { resolveServerUrl } from "./memory/_lib/openclaw-auth.js";
|
|
7
8
|
import { isPortFree } from "./dev.js";
|
|
@@ -61,7 +62,6 @@ async function loadProjectEnv(cwd) {
|
|
|
61
62
|
}
|
|
62
63
|
async function checkDatabaseAndPgvector(databaseUrl) {
|
|
63
64
|
const results = [];
|
|
64
|
-
const { default: postgres } = await import("postgres");
|
|
65
65
|
const sql = postgres(databaseUrl, {
|
|
66
66
|
connect_timeout: 5,
|
|
67
67
|
max: 1,
|
|
@@ -148,7 +148,6 @@ async function checkProviderKeys(cwd, env) {
|
|
|
148
148
|
async function checkWorkspaceDir(cwd) {
|
|
149
149
|
const dir = join(cwd, "workspaces");
|
|
150
150
|
try {
|
|
151
|
-
await access(dir, constants.F_OK);
|
|
152
151
|
const info = await stat(dir);
|
|
153
152
|
return info.isDirectory()
|
|
154
153
|
? { name: "workspaces", status: "ok", detail: dir }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"AA6BA,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,IAAI,CAAC,CA6Mf;AAID,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,oDAAoD;AACpD,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA6Df"}
|
package/dist/commands/eval.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { access, constants, mkdir, readFile, writeFile, } from "node:fs/promises";
|
|
1
|
+
import { access, constants, mkdir, readdir, readFile, writeFile, } from "node:fs/promises";
|
|
2
2
|
import { basename, join } from "node:path";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { parse as parseYaml } from "yaml";
|
|
5
|
-
import { apiBaseFromContextUrl, getToken, resolveContext, resolveGatewayUrl, } from "../internal/index.js";
|
|
5
|
+
import { agentApiBase, apiBaseFromContextUrl, getToken, resolveContext, resolveGatewayUrl, } from "../internal/index.js";
|
|
6
6
|
import { isLoadError, loadConfig } from "../config/loader.js";
|
|
7
7
|
import { CURRENT_EVAL_VERSION, evalDefinitionSchema } from "../eval/types.js";
|
|
8
8
|
import { runEval } from "../eval/runner.js";
|
|
@@ -72,10 +72,10 @@ export async function evalCommand(cwd, name, options) {
|
|
|
72
72
|
return;
|
|
73
73
|
}
|
|
74
74
|
// Auth and gateway required from here (not needed for --list)
|
|
75
|
-
const gatewayUrl = (options.gateway ??
|
|
75
|
+
const gatewayUrl = agentApiBase(options.gateway ??
|
|
76
76
|
(options.context
|
|
77
77
|
? apiBaseFromContextUrl((await resolveContext(options.context)).apiUrl)
|
|
78
|
-
: await resolveGatewayUrl({ cwd })))
|
|
78
|
+
: await resolveGatewayUrl({ cwd })));
|
|
79
79
|
const authToken = await getToken(options.context);
|
|
80
80
|
if (!authToken) {
|
|
81
81
|
console.error(chalk.red("\n Authentication required. Run `lobu login`.\n"));
|
|
@@ -123,11 +123,22 @@ export async function evalCommand(cwd, name, options) {
|
|
|
123
123
|
console.error(chalk.red(`\n Cannot connect to gateway at ${gatewayUrl}\n Start the stack first: lobu run -d\n`));
|
|
124
124
|
process.exit(1);
|
|
125
125
|
}
|
|
126
|
-
console.error(chalk.red(`\n Eval "${def.name}"
|
|
126
|
+
console.error(chalk.red(`\n Eval "${def.name}" crashed: ${msg}\n`));
|
|
127
|
+
// Record a synthetic failed result so the crash counts toward total/failed
|
|
128
|
+
// instead of silently disappearing from the report (false CI green).
|
|
129
|
+
results.push({
|
|
130
|
+
name: def.name,
|
|
131
|
+
passRate: 0,
|
|
132
|
+
avgScore: 0,
|
|
133
|
+
p50LatencyMs: 0,
|
|
134
|
+
totalTokens: {},
|
|
135
|
+
trials: [],
|
|
136
|
+
error: msg,
|
|
137
|
+
});
|
|
127
138
|
}
|
|
128
139
|
}
|
|
129
140
|
// Build report
|
|
130
|
-
const passedEvals = results.filter((r) => r.passRate >= 0.8).length;
|
|
141
|
+
const passedEvals = results.filter((r) => r.passRate >= 0.8 && !r.error).length;
|
|
131
142
|
const report = {
|
|
132
143
|
agent: agentId,
|
|
133
144
|
model: reportModel,
|
|
@@ -214,22 +225,21 @@ turns:
|
|
|
214
225
|
console.log(chalk.dim(` Run it with: lobu eval ${name}\n`));
|
|
215
226
|
}
|
|
216
227
|
async function discoverEvals(evalsDir, filterName) {
|
|
228
|
+
let entries;
|
|
217
229
|
try {
|
|
218
|
-
|
|
219
|
-
const entries = await readdir(evalsDir);
|
|
220
|
-
const yamlFiles = entries
|
|
221
|
-
.filter((f) => f.endsWith(".yaml") || f.endsWith(".yml"))
|
|
222
|
-
.map((f) => join(evalsDir, f));
|
|
223
|
-
if (filterName) {
|
|
224
|
-
return yamlFiles.filter((f) => {
|
|
225
|
-
const base = basename(f, f.endsWith(".yaml") ? ".yaml" : ".yml");
|
|
226
|
-
return base === filterName || base.includes(filterName);
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
return yamlFiles;
|
|
230
|
+
entries = await readdir(evalsDir);
|
|
230
231
|
}
|
|
231
232
|
catch {
|
|
232
233
|
return [];
|
|
233
234
|
}
|
|
235
|
+
const yamlFiles = entries
|
|
236
|
+
.filter((f) => f.endsWith(".yaml") || f.endsWith(".yml"))
|
|
237
|
+
.map((f) => join(evalsDir, f));
|
|
238
|
+
if (!filterName)
|
|
239
|
+
return yamlFiles;
|
|
240
|
+
return yamlFiles.filter((f) => {
|
|
241
|
+
const base = basename(f, f.endsWith(".yaml") ? ".yaml" : ".yml");
|
|
242
|
+
return base === filterName || base.includes(filterName);
|
|
243
|
+
});
|
|
234
244
|
}
|
|
235
245
|
//# sourceMappingURL=eval.js.map
|