@burdenoff/vibe-agent 2.7.4 → 2.8.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.
Files changed (42) hide show
  1. package/dist/{app-hc590rye.js → app-tba5zhmy.js} +2 -2
  2. package/dist/cli.js +395 -9
  3. package/dist/cli.js.map +9 -6
  4. package/dist/{index-wmvkjcjj.js → index-0429nfr9.js} +2 -2
  5. package/dist/{index-3rjnbp97.js → index-0nt6wnb9.js} +2 -2
  6. package/dist/{index-npmvh1x9.js → index-7ph3496b.js} +2 -2
  7. package/dist/{index-4nsdre0j.js → index-9grqzmk5.js} +40 -12
  8. package/dist/index-9grqzmk5.js.map +13 -0
  9. package/dist/{index-fm6gqenc.js → index-a3q5ewrj.js} +2 -2
  10. package/dist/{index-10wkaqpa.js → index-cndcb55v.js} +178 -13
  11. package/dist/index-cndcb55v.js.map +13 -0
  12. package/dist/{index-6vry08rz.js → index-dhbg241c.js} +2 -2
  13. package/dist/{index-hefqxwht.js → index-e2dzjkmm.js} +2 -2
  14. package/dist/{index-t0nsa57v.js → index-et6rnq2y.js} +2 -2
  15. package/dist/{index-ftbphe7j.js → index-exh7dh2v.js} +141 -14
  16. package/dist/{index-ftbphe7j.js.map → index-exh7dh2v.js.map} +3 -3
  17. package/dist/{index-30p492yv.js → index-swqzafr9.js} +2 -2
  18. package/dist/{index-xmeskdnb.js → index-t0x810hm.js} +133 -74
  19. package/dist/index-t0x810hm.js.map +12 -0
  20. package/dist/{index-c7zy3n33.js → index-vzmmv3r7.js} +2 -2
  21. package/dist/{index-a9g7hbj9.js → index-w7m3p4qa.js} +2 -2
  22. package/dist/index.js +2 -2
  23. package/dist/{package-a5yw4d19.js → package-cck2kzyn.js} +3 -3
  24. package/dist/{package-a5yw4d19.js.map → package-cck2kzyn.js.map} +1 -1
  25. package/dist/{plugin-system-7hmbwvtf.js → plugin-system-75q3s1rf.js} +135 -16
  26. package/dist/plugin-system-75q3s1rf.js.map +10 -0
  27. package/package.json +1 -1
  28. package/dist/index-10wkaqpa.js.map +0 -13
  29. package/dist/index-4nsdre0j.js.map +0 -13
  30. package/dist/index-xmeskdnb.js.map +0 -11
  31. package/dist/plugin-system-7hmbwvtf.js.map +0 -10
  32. /package/dist/{app-hc590rye.js.map → app-tba5zhmy.js.map} +0 -0
  33. /package/dist/{index-wmvkjcjj.js.map → index-0429nfr9.js.map} +0 -0
  34. /package/dist/{index-3rjnbp97.js.map → index-0nt6wnb9.js.map} +0 -0
  35. /package/dist/{index-npmvh1x9.js.map → index-7ph3496b.js.map} +0 -0
  36. /package/dist/{index-fm6gqenc.js.map → index-a3q5ewrj.js.map} +0 -0
  37. /package/dist/{index-6vry08rz.js.map → index-dhbg241c.js.map} +0 -0
  38. /package/dist/{index-hefqxwht.js.map → index-e2dzjkmm.js.map} +0 -0
  39. /package/dist/{index-t0nsa57v.js.map → index-et6rnq2y.js.map} +0 -0
  40. /package/dist/{index-30p492yv.js.map → index-swqzafr9.js.map} +0 -0
  41. /package/dist/{index-c7zy3n33.js.map → index-vzmmv3r7.js.map} +0 -0
  42. /package/dist/{index-a9g7hbj9.js.map → index-w7m3p4qa.js.map} +0 -0
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/plugins/plugin-mgr/routes.ts", "../src/cli/commands/plugin.cmd.ts", "../src/plugins/plugin-mgr/commands.ts", "../src/plugins/plugin-mgr/index.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Plugin Manager Routes\n *\n * Plugin management — list, install, remove, reload, available catalog.\n *\n * Endpoints:\n * GET /api/plugins — List all installed plugins\n * GET /api/plugins/available — List available plugins from catalog\n * POST /api/plugins/install — Install a plugin by package name\n * POST /api/plugins/remove — Remove (uninstall) a plugin\n * POST /api/plugins/reload — Hot-reload all plugins\n */\n\nimport { Elysia, t } from \"elysia\";\n\nimport type { AvailablePlugin, PluginRouteDeps } from \"../../core/types.js\";\n\n// ── Available Plugins Catalog ───────────────────────────────────────────\n\nconst AVAILABLE_PLUGINS: AvailablePlugin[] = [\n {\n packageName: \"@burdenoff/vibe-plugin-tunnel-cloudflare\",\n name: \"tunnel-cloudflare\",\n description: \"Cloudflare Tunnel provider for remote access\",\n cliCommand: \"tunnel\",\n apiPrefix: \"/api/tunnel-cloudflare\",\n installed: false,\n category: \"tunnel\",\n },\n {\n packageName: \"@burdenoff/vibe-plugin-session-tmux\",\n name: \"session-tmux\",\n description: \"tmux session provider for terminal management\",\n cliCommand: \"session\",\n apiPrefix: \"/api/session-tmux\",\n installed: false,\n category: \"session\",\n },\n {\n packageName: \"@burdenoff/vibe-plugin-ssh\",\n name: \"ssh\",\n description: \"SSH connection management and port forwarding\",\n cliCommand: \"ssh\",\n apiPrefix: \"/api/ssh\",\n installed: false,\n category: \"tool\",\n },\n {\n packageName: \"@burdenoff/vibe-plugin-ai\",\n name: \"ai\",\n description: \"AI tool management and integration\",\n cliCommand: \"ai\",\n apiPrefix: undefined,\n installed: false,\n category: \"integration\",\n },\n {\n packageName: \"@burdenoff/vibe-plugin-ui-ssh\",\n name: \"ui-ssh\",\n description: \"Web UI for SSH connection management and port forwarding\",\n cliCommand: undefined,\n apiPrefix: undefined,\n installed: false,\n category: \"frontend\",\n },\n {\n packageName: \"@burdenoff/vibe-plugin-ui-ai\",\n name: \"ui-ai\",\n description: \"Web UI for AI tool catalog and detection status\",\n cliCommand: undefined,\n apiPrefix: undefined,\n installed: false,\n category: \"frontend\",\n },\n];\n\n// ── Routes ──────────────────────────────────────────────────────────────\n\nexport function createRoutes(deps: PluginRouteDeps) {\n const { pluginManager } = deps;\n\n return (\n new Elysia()\n // List all installed plugins\n .get(\"/\", () => {\n const plugins = pluginManager.getPluginDetails();\n return { plugins, count: plugins.length };\n })\n\n // List available plugins from catalog\n .get(\"/available\", () => {\n const installed = pluginManager.getPluginDetails();\n const installedNames = new Set(installed.map((p) => p.packageName));\n\n return {\n plugins: AVAILABLE_PLUGINS.map((p) => ({\n ...p,\n installed: installedNames.has(p.packageName),\n })),\n };\n })\n\n // Install a plugin by package name\n .post(\n \"/install\",\n async ({ body, set }) => {\n if (!body.packageName || typeof body.packageName !== \"string\") {\n set.status = 400;\n return { error: \"Missing required field: packageName\" };\n }\n\n try {\n await pluginManager.install(body.packageName);\n return {\n success: true,\n message: `Plugin ${body.packageName} installed and loaded successfully`,\n };\n } catch (err) {\n set.status = 500;\n return { error: \"Failed to install plugin\", details: String(err) };\n }\n },\n {\n body: t.Object({\n packageName: t.String(),\n }),\n },\n )\n\n // Remove (uninstall) a plugin\n .post(\n \"/remove\",\n async ({ body, set }) => {\n if (!body.packageName || typeof body.packageName !== \"string\") {\n set.status = 400;\n return { error: \"Missing required field: packageName\" };\n }\n\n try {\n await pluginManager.remove(body.packageName);\n return {\n success: true,\n message: `Plugin ${body.packageName} removed successfully`,\n };\n } catch (err) {\n set.status = 500;\n return { error: \"Failed to remove plugin\", details: String(err) };\n }\n },\n {\n body: t.Object({\n packageName: t.String(),\n }),\n },\n )\n\n // Update a plugin to latest version\n .post(\n \"/update\",\n async ({ body, set }) => {\n if (!body.packageName || typeof body.packageName !== \"string\") {\n set.status = 400;\n return { error: \"Missing required field: packageName\" };\n }\n\n try {\n const entry = await pluginManager.update(body.packageName);\n return {\n success: true,\n message: `Plugin ${body.packageName} updated to v${entry.version}`,\n version: entry.version,\n };\n } catch (err) {\n set.status = 500;\n return { error: \"Failed to update plugin\", details: String(err) };\n }\n },\n {\n body: t.Object({\n packageName: t.String(),\n }),\n },\n )\n\n // Update all plugins to latest versions\n .post(\"/update-all\", async ({ set }) => {\n try {\n const results = await pluginManager.updateAll();\n return {\n success: true,\n results,\n message: `Updated ${results.filter((r) => r.success).length}/${results.length} plugin(s)`,\n };\n } catch (err) {\n set.status = 500;\n return {\n error: \"Failed to update all plugins\",\n details: String(err),\n };\n }\n })\n\n // Remove all plugins\n .post(\"/remove-all\", async ({ set }) => {\n try {\n const results = await pluginManager.removeAll();\n return {\n success: true,\n results,\n message: `Removed ${results.filter((r) => r.success).length}/${results.length} plugin(s)`,\n };\n } catch (err) {\n set.status = 500;\n return {\n error: \"Failed to remove all plugins\",\n details: String(err),\n };\n }\n })\n\n // Hot-reload all plugins\n // TODO: reloadAll needs app + hostServices — for now we just loadAll again\n .post(\"/reload\", async ({ set }) => {\n try {\n await pluginManager.dispatchServerStop();\n await pluginManager.loadAll();\n const plugins = pluginManager.getPluginDetails();\n return {\n success: true,\n plugins,\n message: `Reloaded ${plugins.length} plugin(s)`,\n };\n } catch (err) {\n set.status = 500;\n return { error: \"Failed to reload plugins\", details: String(err) };\n }\n })\n );\n}\n",
6
+ "import { Command } from \"commander\";\nimport { mkdirSync, writeFileSync, existsSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport {\n getAgentUrl,\n apiGet,\n apiPost,\n fail,\n success,\n info,\n warn,\n header,\n kv,\n formatTable,\n} from \"../utils/index.js\";\n\nconst DEFAULT_AGENT_URL = \"http://localhost:3005\";\n\nexport function register(program: Command): void {\n const cmd = program.command(\"plugin\").description(\"Manage plugins\");\n\n // plugin list\n cmd\n .command(\"list\")\n .description(\"List installed plugins\")\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .option(\"--agent <name>\", \"Target agent instance by name\")\n .option(\"--profile <name>\", \"Alias for --agent\")\n .action(async (options) => {\n try {\n const url = getAgentUrl(options);\n let plugins: any[];\n try {\n const data = await apiGet<{ plugins: any[]; count: number }>(\n url,\n \"/api/plugins\",\n );\n plugins = data.plugins || [];\n } catch {\n warn(\"Agent not reachable. Attempting local plugin registry...\");\n try {\n const { PluginManager } =\n await import(\"../../core/plugin-system.js\");\n const pm = new PluginManager();\n plugins = pm.getPluginDetails() || [];\n } catch {\n fail(\"Could not list plugins from agent or local registry.\");\n return;\n }\n }\n if (!plugins || plugins.length === 0) {\n info(\"No plugins installed.\");\n return;\n }\n header(\"Installed Plugins\");\n formatTable(\n plugins.map((p: any) => ({\n Name: p.name || p.package || \"-\",\n Version: p.version || \"-\",\n Status: p.status || p.enabled ? \"enabled\" : \"disabled\",\n Description: p.description || \"-\",\n })),\n );\n } catch (err: any) {\n fail(err.message);\n }\n });\n\n // plugin install\n cmd\n .command(\"install\")\n .description(\"Install a plugin\")\n .argument(\"<package>\", \"NPM package name to install\")\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .option(\"--agent <name>\", \"Target agent instance by name\")\n .option(\"--profile <name>\", \"Alias for --agent\")\n .action(async (packageName: string, options) => {\n try {\n const url = getAgentUrl(options);\n try {\n const result = await apiPost<any>(url, \"/api/plugins/install\", {\n packageName,\n });\n success(`Plugin \"${packageName}\" installed.`);\n if (result?.version) kv(\"Version\", result.version);\n } catch {\n warn(\"Agent not reachable. Attempting local install...\");\n try {\n const { PluginManager } =\n await import(\"../../core/plugin-system.js\");\n const pm = new PluginManager();\n await pm.install(packageName);\n success(`Plugin \"${packageName}\" installed locally.`);\n } catch (localErr: any) {\n fail(\n `Could not install plugin via agent or locally: ${localErr.message}`,\n );\n }\n }\n } catch (err: any) {\n fail(err.message);\n }\n });\n\n // plugin remove\n cmd\n .command(\"remove\")\n .description(\"Remove a plugin\")\n .argument(\"<package>\", \"NPM package name to remove\")\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .option(\"--agent <name>\", \"Target agent instance by name\")\n .option(\"--profile <name>\", \"Alias for --agent\")\n .action(async (packageName: string, options) => {\n try {\n const url = getAgentUrl(options);\n try {\n await apiPost<any>(url, \"/api/plugins/remove\", {\n packageName,\n });\n success(`Plugin \"${packageName}\" removed.`);\n } catch {\n warn(\"Agent not reachable. Attempting local removal...\");\n try {\n const { PluginManager } =\n await import(\"../../core/plugin-system.js\");\n const pm = new PluginManager();\n await pm.remove(packageName);\n success(`Plugin \"${packageName}\" removed locally.`);\n } catch (localErr: any) {\n fail(\n `Could not remove plugin via agent or locally: ${localErr.message}`,\n );\n }\n }\n } catch (err: any) {\n fail(err.message);\n }\n });\n\n // plugin update (individual)\n cmd\n .command(\"update\")\n .description(\"Update a plugin (or all plugins with --all)\")\n .argument(\"[package]\", \"NPM package name to update\")\n .option(\"--all\", \"Update all installed plugins\", false)\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .option(\"--agent <name>\", \"Target agent instance by name\")\n .option(\"--profile <name>\", \"Alias for --agent\")\n .action(async (packageName: string | undefined, options) => {\n try {\n const url = getAgentUrl(options);\n\n if (options.all) {\n info(\"Updating all plugins...\");\n try {\n const result = await apiPost<any>(\n url,\n \"/api/plugins/update-all\",\n {},\n );\n const results = result?.results || [];\n for (const r of results) {\n if (r.success) {\n success(\n `Updated ${r.packageName}${r.version ? ` to v${r.version}` : \"\"}`,\n );\n } else {\n warn(`Failed to update ${r.packageName}: ${r.error}`);\n }\n }\n success(result?.message || \"Done.\");\n } catch {\n warn(\"Agent not reachable. Attempting local update...\");\n try {\n const { PluginManager } =\n await import(\"../../core/plugin-system.js\");\n const pm = new PluginManager();\n const results = await pm.updateAll();\n for (const r of results) {\n if (r.success) {\n success(\n `Updated ${r.packageName}${r.version ? ` to v${r.version}` : \"\"}`,\n );\n } else {\n warn(`Failed to update ${r.packageName}: ${r.error}`);\n }\n }\n } catch (localErr: any) {\n fail(`Could not update plugins: ${localErr.message}`);\n }\n }\n } else if (packageName) {\n info(`Updating ${packageName}...`);\n try {\n const result = await apiPost<any>(url, \"/api/plugins/update\", {\n packageName,\n });\n success(result?.message || `Plugin \"${packageName}\" updated.`);\n } catch {\n warn(\"Agent not reachable. Attempting local update...\");\n try {\n const { PluginManager } =\n await import(\"../../core/plugin-system.js\");\n const pm = new PluginManager();\n const entry = await pm.update(packageName);\n success(`Plugin \"${packageName}\" updated to v${entry.version}.`);\n } catch (localErr: any) {\n fail(`Could not update plugin: ${localErr.message}`);\n }\n }\n } else {\n fail(\n \"Provide a package name to update, or use --all to update all plugins.\",\n );\n }\n } catch (err: any) {\n fail(err.message);\n }\n });\n\n // plugin uninstall (alias for remove, with --all support)\n cmd\n .command(\"uninstall\")\n .description(\"Uninstall a plugin (or all plugins with --all)\")\n .argument(\"[package]\", \"NPM package name to uninstall\")\n .option(\"--all\", \"Uninstall all external plugins\", false)\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .option(\"--agent <name>\", \"Target agent instance by name\")\n .option(\"--profile <name>\", \"Alias for --agent\")\n .action(async (packageName: string | undefined, options) => {\n try {\n const url = getAgentUrl(options);\n\n if (options.all) {\n info(\"Uninstalling all plugins...\");\n try {\n const result = await apiPost<any>(\n url,\n \"/api/plugins/remove-all\",\n {},\n );\n const results = result?.results || [];\n for (const r of results) {\n if (r.success) {\n success(`Removed ${r.packageName}`);\n } else {\n warn(`Failed to remove ${r.packageName}: ${r.error}`);\n }\n }\n success(result?.message || \"Done.\");\n } catch {\n warn(\"Agent not reachable. Attempting local removal...\");\n try {\n const { PluginManager } =\n await import(\"../../core/plugin-system.js\");\n const pm = new PluginManager();\n const results = await pm.removeAll();\n for (const r of results) {\n if (r.success) {\n success(`Removed ${r.packageName}`);\n } else {\n warn(`Failed to remove ${r.packageName}: ${r.error}`);\n }\n }\n } catch (localErr: any) {\n fail(`Could not uninstall plugins: ${localErr.message}`);\n }\n }\n } else if (packageName) {\n try {\n await apiPost<any>(url, \"/api/plugins/remove\", {\n packageName,\n });\n success(`Plugin \"${packageName}\" uninstalled.`);\n } catch {\n warn(\"Agent not reachable. Attempting local removal...\");\n try {\n const { PluginManager } =\n await import(\"../../core/plugin-system.js\");\n const pm = new PluginManager();\n await pm.remove(packageName);\n success(`Plugin \"${packageName}\" uninstalled locally.`);\n } catch (localErr: any) {\n fail(`Could not uninstall plugin: ${localErr.message}`);\n }\n }\n } else {\n fail(\n \"Provide a package name to uninstall, or use --all to uninstall all plugins.\",\n );\n }\n } catch (err: any) {\n fail(err.message);\n }\n });\n\n // plugin reload\n cmd\n .command(\"reload\")\n .description(\"Reload all plugins\")\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .option(\"--agent <name>\", \"Target agent instance by name\")\n .option(\"--profile <name>\", \"Alias for --agent\")\n .action(async (options) => {\n try {\n const url = getAgentUrl(options);\n await apiPost<any>(url, \"/api/plugins/reload\", {});\n success(\"Plugins reloaded.\");\n } catch (err: any) {\n fail(err.message);\n }\n });\n\n // plugin available\n cmd\n .command(\"available\")\n .description(\"Show available plugins\")\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .option(\"--agent <name>\", \"Target agent instance by name\")\n .option(\"--profile <name>\", \"Alias for --agent\")\n .action(async (options) => {\n try {\n const url = getAgentUrl(options);\n const availData = await apiGet<{ plugins: any[] }>(\n url,\n \"/api/plugins/available\",\n );\n const plugins = availData.plugins || [];\n if (!plugins || plugins.length === 0) {\n info(\"No available plugins found.\");\n return;\n }\n header(\"Available Plugins\");\n formatTable(\n plugins.map((p: any) => ({\n Name: p.name || p.package || \"-\",\n Version: p.version || p.latestVersion || \"-\",\n Description: p.description || \"-\",\n })),\n );\n } catch (err: any) {\n fail(err.message);\n }\n });\n\n // plugin create — scaffold a new plugin project\n cmd\n .command(\"create\")\n .description(\"Scaffold a new plugin project\")\n .argument(\"<name>\", 'Plugin name (e.g. \"docker\" → vibe-plugin-docker)')\n .option(\"-d, --dir <directory>\", \"Parent directory\", \".\")\n .option(\n \"--tag <tag>\",\n \"Plugin tag (backend, frontend, cli, provider, adapter, integration)\",\n \"backend\",\n )\n .option(\"--with-ui\", \"Include a companion UI plugin scaffold\", false)\n .action(async (name: string, options) => {\n try {\n const pluginName = name.startsWith(\"vibe-plugin-\")\n ? name\n : `vibe-plugin-${name}`;\n const dir = resolve(options.dir, pluginName);\n\n if (existsSync(dir)) {\n fail(`Directory \"${dir}\" already exists.`);\n return;\n }\n\n info(`Scaffolding ${pluginName}...`);\n\n // Create directory structure\n mkdirSync(join(dir, \"src\"), { recursive: true });\n mkdirSync(join(dir, \"dist\"), { recursive: true });\n\n const tag = options.tag as string;\n const description = `VibeControls plugin: ${name}`;\n\n // package.json\n const packageJson = {\n name: `@burdenoff/${pluginName}`,\n version: \"0.1.0\",\n main: \"./dist/index.js\",\n type: \"module\",\n engines: { bun: \">=1.3.0\" },\n scripts: {\n build: \"bun build ./src/index.ts --outdir ./dist --target bun\",\n lint: \"eslint ./src\",\n format: \"bunx prettier . --write\",\n \"format:check\": \"bunx prettier . --check\",\n \"type:check\": \"tsc --noEmit\",\n clean: \"rimraf dist\",\n prebuild: \"bun run clean\",\n prepublishOnly: \"bun run build\",\n sanity:\n \"bun run format:check && bun run lint && bun run type:check && bun run build\",\n },\n keywords: [\"vibecontrols\", \"vibe\", \"vibe-plugin\", name, \"bun\"],\n author: {\n name: \"Your Name\",\n email: \"you@example.com\",\n },\n license: \"SEE LICENSE IN LICENSE\",\n description,\n devDependencies: {\n \"@types/bun\": \"^1.2.16\",\n \"bun-types\": \"^1.3.9\",\n commander: \"^14.0.3\",\n eslint: \"^9.30.1\",\n prettier: \"^3.6.2\",\n rimraf: \"^6.0.1\",\n typescript: \"^5.8.3\",\n \"typescript-eslint\": \"^8.56.0\",\n },\n peerDependencies: {\n \"@burdenoff/vibe-agent\": \">=2.0.0\",\n },\n peerDependenciesMeta: {\n \"@burdenoff/vibe-agent\": { optional: true },\n },\n publishConfig: {\n access: \"public\",\n registry: \"https://registry.npmjs.org/\",\n },\n files: [\"dist/**/*\", \"README.md\", \"LICENSE\"],\n };\n writeFileSync(\n join(dir, \"package.json\"),\n JSON.stringify(packageJson, null, 2) + \"\\n\",\n );\n\n // tsconfig.json\n const tsconfig = {\n compilerOptions: {\n target: \"ES2022\",\n module: \"ES2022\",\n moduleResolution: \"bundler\",\n types: [\"bun-types\"],\n strict: true,\n esModuleInterop: true,\n skipLibCheck: true,\n outDir: \"./dist\",\n rootDir: \"./src\",\n declaration: true,\n sourceMap: true,\n },\n include: [\"src/**/*.ts\"],\n exclude: [\"node_modules\", \"dist\"],\n };\n writeFileSync(\n join(dir, \"tsconfig.json\"),\n JSON.stringify(tsconfig, null, 2) + \"\\n\",\n );\n\n // .gitignore\n writeFileSync(\n join(dir, \".gitignore\"),\n [\n \"node_modules/\",\n \"dist/\",\n \"bun.lock\",\n \".env\",\n \".env.local\",\n \"*.tgz\",\n ].join(\"\\n\") + \"\\n\",\n );\n\n // src/index.ts — main plugin entry\n const cliCmd = name.replace(/[^a-z0-9-]/gi, \"-\").toLowerCase();\n const indexTs = `import type { Command } from \"commander\";\n\n/**\n * @burdenoff/${pluginName}\n *\n * ${description}\n */\n\n// ── Plugin Interfaces ────────────────────────────────────────────────────────\n\nexport interface HostServices {\n logger?: {\n info: (msg: string) => void;\n warn: (msg: string) => void;\n error: (msg: string) => void;\n debug: (msg: string) => void;\n };\n config?: Record<string, unknown>;\n}\n\nexport interface VibePlugin {\n name: string;\n version: string;\n description: string;\n tags?: Array<\n \"backend\" | \"frontend\" | \"cli\" | \"provider\" | \"adapter\" | \"integration\"\n >;\n cliCommand: string;\n onCliSetup: (program: Command, hostServices?: HostServices) => void;\n}\n\n// ── Plugin Implementation ────────────────────────────────────────────────────\n\nconst plugin: VibePlugin = {\n name: \"${pluginName}\",\n version: \"0.1.0\",\n description: \"${description}\",\n tags: [\"${tag}\"],\n cliCommand: \"${cliCmd}\",\n\n onCliSetup(program: Command, _hostServices?: HostServices): void {\n const cmd = program\n .command(\"${cliCmd}\")\n .description(\"${description}\");\n\n cmd\n .command(\"status\")\n .description(\"Show ${name} status\")\n .action(() => {\n console.log(\"${pluginName} is ready.\");\n });\n\n cmd\n .command(\"info\")\n .description(\"Show plugin info\")\n .action(() => {\n console.log(JSON.stringify({\n name: plugin.name,\n version: plugin.version,\n description: plugin.description,\n tags: plugin.tags,\n }, null, 2));\n });\n },\n};\n\nexport default plugin;\n`;\n writeFileSync(join(dir, \"src\", \"index.ts\"), indexTs);\n\n // README.md\n const readme = `# ${pluginName}\n\n${description}\n\n## Installation\n\n\\`\\`\\`bash\nvibe plugin install @burdenoff/${pluginName}\n\\`\\`\\`\n\n## Usage\n\n\\`\\`\\`bash\nvibe ${cliCmd} status\nvibe ${cliCmd} info\n\\`\\`\\`\n\n## Development\n\n\\`\\`\\`bash\nbun install\nbun run build\nbun run sanity\n\\`\\`\\`\n\n## Publishing\n\n\\`\\`\\`bash\nbun run build\nnpm publish\n\\`\\`\\`\n`;\n writeFileSync(join(dir, \"README.md\"), readme);\n\n success(`Created ${pluginName} at ${dir}`);\n kv(\"Plugin Name\", `@burdenoff/${pluginName}`);\n kv(\"CLI Command\", `vibe ${cliCmd}`);\n kv(\"Tag\", tag);\n\n info(\"\\nNext steps:\");\n info(` cd ${pluginName}`);\n info(\" bun install\");\n info(\" bun run build\");\n info(` vibe plugin install . # install locally from this directory`);\n\n // Optionally scaffold UI plugin\n if (options.withUi) {\n const uiName = `${pluginName.replace(\"vibe-plugin-\", \"vibe-plugin-ui-\")}`;\n const uiDir = resolve(options.dir, uiName);\n\n if (existsSync(uiDir)) {\n warn(`UI directory \"${uiDir}\" already exists, skipping.`);\n } else {\n mkdirSync(join(uiDir, \"src\"), { recursive: true });\n mkdirSync(join(uiDir, \"public\"), { recursive: true });\n\n const uiPackageJson = {\n name: `@burdenoff/${uiName}`,\n version: \"0.1.0\",\n private: false,\n type: \"module\",\n scripts: {\n dev: \"vite --port 5180\",\n build: \"tsc && vite build\",\n preview: \"vite preview\",\n lint: \"eslint ./src\",\n format: \"bunx prettier . --write\",\n \"format:check\": \"bunx prettier . --check\",\n \"type:check\": \"tsc --noEmit\",\n sanity:\n \"bun run format:check && bun run lint && bun run type:check && bun run build\",\n },\n keywords: [\"vibecontrols\", \"vibe-plugin\", \"ui\", name],\n author: { name: \"Your Name\", email: \"you@example.com\" },\n license: \"SEE LICENSE IN LICENSE\",\n description: `UI for ${pluginName}`,\n dependencies: {\n react: \"^19.0.0\",\n \"react-dom\": \"^19.0.0\",\n },\n devDependencies: {\n \"@types/react\": \"^19.0.0\",\n \"@types/react-dom\": \"^19.0.0\",\n \"@vitejs/plugin-react\": \"^4.5.2\",\n typescript: \"^5.8.3\",\n vite: \"^7.0.0\",\n },\n publishConfig: {\n access: \"public\",\n registry: \"https://registry.npmjs.org/\",\n },\n files: [\"dist/**/*\", \"README.md\"],\n };\n writeFileSync(\n join(uiDir, \"package.json\"),\n JSON.stringify(uiPackageJson, null, 2) + \"\\n\",\n );\n\n const uiIndex = `import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport App from \"./App\";\n\nReactDOM.createRoot(document.getElementById(\"root\")!).render(\n <React.StrictMode>\n <App />\n </React.StrictMode>\n);\n`;\n writeFileSync(join(uiDir, \"src\", \"main.tsx\"), uiIndex);\n\n const uiApp = `import { useState, useEffect } from \"react\";\n\nconst DARK_BG = \"#0d1117\";\nconst DARK_TEXT = \"#e6edf3\";\n\nexport default function App() {\n const [apiKey, setApiKey] = useState<string | null>(null);\n const [status, setStatus] = useState(\"loading...\");\n\n useEffect(() => {\n // Auth via postMessage (iframe) or URL param (new tab)\n const params = new URLSearchParams(window.location.search);\n const key = params.get(\"apiKey\");\n if (key) {\n setApiKey(key);\n setStatus(\"connected\");\n return;\n }\n\n const handler = (e: MessageEvent) => {\n if (e.data?.type === \"vibe-auth\" && e.data.apiKey) {\n setApiKey(e.data.apiKey);\n setStatus(\"connected\");\n }\n };\n window.addEventListener(\"message\", handler);\n return () => window.removeEventListener(\"message\", handler);\n }, []);\n\n return (\n <div style={{ background: DARK_BG, color: DARK_TEXT, minHeight: \"100vh\", padding: 24, fontFamily: \"system-ui\" }}>\n <h1>${name} UI</h1>\n <p>Status: {status}</p>\n {apiKey && <p style={{ color: \"#3fb950\" }}>Authenticated</p>}\n </div>\n );\n}\n`;\n writeFileSync(join(uiDir, \"src\", \"App.tsx\"), uiApp);\n\n const indexHtml = `<!DOCTYPE html>\n<html lang=\"en\">\n<head><meta charset=\"UTF-8\" /><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /><title>${name} UI</title></head>\n<body><div id=\"root\"></div><script type=\"module\" src=\"/src/main.tsx\"></script></body>\n</html>`;\n writeFileSync(join(uiDir, \"index.html\"), indexHtml);\n\n success(`Created UI plugin ${uiName} at ${uiDir}`);\n }\n }\n } catch (err: any) {\n fail(err.message);\n }\n });\n}\n",
7
+ "import type { Command } from \"commander\";\nimport type { HostServices } from \"../../core/plugin-system.js\";\nimport { register as registerPlugin } from \"../../cli/commands/plugin.cmd.js\";\n\nexport function registerCommands(\n program: Command,\n _hostServices: HostServices,\n): void {\n registerPlugin(program);\n}\n",
8
+ "import type { VibePlugin } from \"../../core/plugin-system.js\";\nimport type { PluginRouteDeps } from \"../../core/types.js\";\nimport { createRoutes } from \"./routes.js\";\nimport { registerCommands } from \"./commands.js\";\n\nexport const vibePlugin: VibePlugin = {\n name: \"plugin-mgr\",\n version: \"2.2.0\",\n description: \"Plugin lifecycle management — install, remove, reload, catalog\",\n tags: [\"backend\", \"cli\"],\n cliCommand: \"plugin\",\n apiPrefix: \"/api/plugins\",\n createRoutes: (deps: PluginRouteDeps) => createRoutes(deps),\n onCliSetup: async (program, hostServices) => {\n registerCommands(program, hostServices);\n },\n};\n"
9
+ ],
10
+ "mappings": "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",
11
+ "debugId": "622EB666D741386464756E2164756E21",
12
+ "names": []
13
+ }
@@ -15,7 +15,7 @@ import {
15
15
  info,
16
16
  shortId,
17
17
  success
18
- } from "./index-xmeskdnb.js";
18
+ } from "./index-t0x810hm.js";
19
19
  import"./index-g8dczzvv.js";
20
20
 
21
21
  // src/plugins/bookmark/routes.ts
@@ -282,4 +282,4 @@ export {
282
282
  };
283
283
 
284
284
  //# debugId=E29820E5E0F6A45164756E2164756E21
285
- //# sourceMappingURL=index-6vry08rz.js.map
285
+ //# sourceMappingURL=index-dhbg241c.js.map
@@ -17,7 +17,7 @@ import {
17
17
  info,
18
18
  kv,
19
19
  success
20
- } from "./index-xmeskdnb.js";
20
+ } from "./index-t0x810hm.js";
21
21
  import"./index-g8dczzvv.js";
22
22
 
23
23
  // src/plugins/state/routes.ts
@@ -267,4 +267,4 @@ export {
267
267
  };
268
268
 
269
269
  //# debugId=B336A2A2717B47BE64756E2164756E21
270
- //# sourceMappingURL=index-hefqxwht.js.map
270
+ //# sourceMappingURL=index-e2dzjkmm.js.map
@@ -18,7 +18,7 @@ import {
18
18
  kv,
19
19
  shortId,
20
20
  success
21
- } from "./index-xmeskdnb.js";
21
+ } from "./index-t0x810hm.js";
22
22
  import"./index-g8dczzvv.js";
23
23
 
24
24
  // src/plugins/session/routes.ts
@@ -585,4 +585,4 @@ export {
585
585
  };
586
586
 
587
587
  //# debugId=5AB9B114935378E764756E2164756E21
588
- //# sourceMappingURL=index-t0nsa57v.js.map
588
+ //# sourceMappingURL=index-et6rnq2y.js.map
@@ -31,7 +31,7 @@ import {
31
31
  kv,
32
32
  success,
33
33
  timeAgo
34
- } from "./index-xmeskdnb.js";
34
+ } from "./index-t0x810hm.js";
35
35
  import"./index-g8dczzvv.js";
36
36
 
37
37
  // src/plugins/agent/routes.ts
@@ -355,18 +355,24 @@ function register4(program) {
355
355
  }
356
356
 
357
357
  // src/cli/commands/status.cmd.ts
358
+ var DEFAULT_AGENT_URL5 = "http://localhost:3005";
358
359
  function register5(program) {
359
- program.command("status").description("Show status of VibeControls agent instance(s)").option("-n, --name <name>", "Agent instance name").action(async (opts) => {
360
+ program.command("status").description("Show comprehensive status of VibeControls agent instance(s)").option("-n, --name <name>", "Agent instance name").option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL5).option("--agent <name>", "Target agent instance by name").option("--profile <name>", "Alias for --agent").option("--json", "Output status as JSON", false).action(async (opts) => {
360
361
  try {
361
362
  const serviceManager = new ServiceManager;
362
363
  if (opts.name) {
363
- header(`Agent Status: ${opts.name}`);
364
- blank();
365
364
  const instance = await serviceManager.getStatus(opts.name);
366
365
  if (!instance) {
367
366
  fail(`Agent instance ${colors.bold(opts.name)} not found.`);
368
367
  return;
369
368
  }
369
+ const agentUrl = instance.status === "running" ? `http://localhost:${instance.port}` : getAgentUrl(opts);
370
+ if (opts.json) {
371
+ const jsonData = await buildStatusJson(agentUrl, instance);
372
+ console.log(JSON.stringify(jsonData, null, 2));
373
+ return;
374
+ }
375
+ header(`Agent Status: ${instance.name}`);
370
376
  kv("Name", instance.name);
371
377
  kv("Status", formatStatus(instance.status));
372
378
  kv("PID", instance.pid ? String(instance.pid) : colors.dim("n/a"));
@@ -376,11 +382,31 @@ function register5(program) {
376
382
  if (instance.startTime) {
377
383
  kv("Started", timeAgo(instance.startTime));
378
384
  }
385
+ if (instance.status === "running") {
386
+ blank();
387
+ await printHealthSection(agentUrl);
388
+ await printPluginsSection(agentUrl);
389
+ await printTunnelSection(agentUrl);
390
+ await printSessionsSection(agentUrl);
391
+ }
379
392
  blank();
380
393
  } else {
394
+ const instances = await serviceManager.listInstances();
395
+ if (opts.json) {
396
+ const jsonData = {
397
+ instances: instances.map((inst) => ({
398
+ name: inst.name,
399
+ status: inst.status,
400
+ pid: inst.pid,
401
+ port: inst.port,
402
+ startTime: inst.startTime
403
+ }))
404
+ };
405
+ console.log(JSON.stringify(jsonData, null, 2));
406
+ return;
407
+ }
381
408
  header("Agent Instances");
382
409
  blank();
383
- const instances = await serviceManager.listInstances();
384
410
  if (!instances || instances.length === 0) {
385
411
  info(`${icons.info} No agent instances found.`);
386
412
  info(`Run ${colors.bold("vibe start")} to start an agent.`);
@@ -395,18 +421,119 @@ function register5(program) {
395
421
  }));
396
422
  formatTable(rows);
397
423
  blank();
398
- info(`${icons.info} ${instances.length} instance(s) found. Use ${colors.bold("vibe status -n <name>")} for details.`);
424
+ const running = instances.filter((i) => i.status === "running");
425
+ if (running.length > 0) {
426
+ for (const inst of running) {
427
+ const agentUrl = `http://localhost:${inst.port}`;
428
+ blank();
429
+ header(`Quick Status: ${inst.name} (port ${inst.port})`);
430
+ await printHealthSection(agentUrl);
431
+ await printTunnelSection(agentUrl);
432
+ }
433
+ }
434
+ blank();
435
+ info(`${icons.info} ${instances.length} instance(s) found. Use ${colors.bold("vibe status -n <name>")} for full details.`);
399
436
  }
400
437
  } catch (err) {
401
- fail(`Failed to get status: ${err.message}`);
438
+ const message = err instanceof Error ? err.message : String(err);
439
+ fail(`Failed to get status: ${message}`);
402
440
  }
403
441
  });
404
442
  }
443
+ async function printHealthSection(agentUrl) {
444
+ try {
445
+ const res = await fetch(`${agentUrl}/health`);
446
+ if (res.ok) {
447
+ const data = await res.json();
448
+ kv("Health", colors.green("healthy") + (data.version ? ` (v${data.version})` : ""));
449
+ if (data.uptime) {
450
+ kv("Uptime", String(data.uptime));
451
+ }
452
+ } else {
453
+ kv("Health", colors.red("unhealthy"));
454
+ }
455
+ } catch {
456
+ kv("Health", colors.red("unreachable"));
457
+ }
458
+ }
459
+ async function printPluginsSection(agentUrl) {
460
+ try {
461
+ const data = await apiGet(agentUrl, "/api/plugins");
462
+ const plugins = data.plugins || [];
463
+ const coreCount = plugins.filter((p) => p.isCore).length;
464
+ const externalCount = plugins.length - coreCount;
465
+ kv("Plugins", `${plugins.length} total (${coreCount} core, ${externalCount} external)`);
466
+ } catch {
467
+ kv("Plugins", colors.dim("(unable to fetch)"));
468
+ }
469
+ }
470
+ async function printTunnelSection(agentUrl) {
471
+ try {
472
+ const result = await apiGet(agentUrl, "/api/agent/tunnel");
473
+ const tunnelUrl = result?.tunnelUrl || result?.publicUrl || result?.url;
474
+ const status = result?.status || "unknown";
475
+ if (tunnelUrl) {
476
+ kv("Tunnel", colors.green(tunnelUrl));
477
+ } else if (status === "active" || status === "running") {
478
+ kv("Tunnel", colors.yellow("starting..."));
479
+ } else {
480
+ kv("Tunnel", colors.dim("(not running)"));
481
+ }
482
+ } catch {
483
+ kv("Tunnel", colors.dim("(not running)"));
484
+ }
485
+ }
486
+ async function printSessionsSection(agentUrl) {
487
+ try {
488
+ const sessions = await apiGet(agentUrl, "/api/sessions");
489
+ const count = Array.isArray(sessions) ? sessions.length : 0;
490
+ kv("Sessions", `${count} active`);
491
+ } catch {
492
+ kv("Sessions", colors.dim("(unable to fetch)"));
493
+ }
494
+ }
495
+ async function buildStatusJson(agentUrl, instance) {
496
+ const data = {
497
+ instance: {
498
+ name: instance.name,
499
+ status: instance.status,
500
+ pid: instance.pid,
501
+ port: instance.port,
502
+ host: instance.config?.host,
503
+ dbPath: instance.config?.dbPath,
504
+ startTime: instance.startTime
505
+ }
506
+ };
507
+ if (instance.status === "running") {
508
+ try {
509
+ const res = await fetch(`${agentUrl}/health`);
510
+ data.health = res.ok ? await res.json() : { healthy: false };
511
+ } catch {
512
+ data.health = { healthy: false, error: "unreachable" };
513
+ }
514
+ try {
515
+ data.plugins = await apiGet(agentUrl, "/api/plugins");
516
+ } catch {
517
+ data.plugins = null;
518
+ }
519
+ try {
520
+ data.tunnel = await apiGet(agentUrl, "/api/agent/tunnel");
521
+ } catch {
522
+ data.tunnel = null;
523
+ }
524
+ try {
525
+ data.sessions = await apiGet(agentUrl, "/api/sessions");
526
+ } catch {
527
+ data.sessions = null;
528
+ }
529
+ }
530
+ return data;
531
+ }
405
532
 
406
533
  // src/cli/commands/url.cmd.ts
407
- var DEFAULT_AGENT_URL5 = "http://localhost:3005";
534
+ var DEFAULT_AGENT_URL6 = "http://localhost:3005";
408
535
  function register6(program) {
409
- program.command("url").description("Show the active URL for a running VibeControls agent").option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL5).action(async (opts) => {
536
+ program.command("url").description("Show the active URL for a running VibeControls agent").option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL6).action(async (opts) => {
410
537
  try {
411
538
  const agentUrl = getAgentUrl(opts);
412
539
  header("Agent URL");
@@ -431,10 +558,10 @@ function register6(program) {
431
558
  }
432
559
 
433
560
  // src/cli/commands/gateway-auth.cmd.ts
434
- var DEFAULT_AGENT_URL6 = "http://localhost:3005";
561
+ var DEFAULT_AGENT_URL7 = "http://localhost:3005";
435
562
  function register7(program) {
436
563
  const gatewayAuth = program.command("gateway-auth").description("Manage gateway authentication for VibeControls agent");
437
- gatewayAuth.command("configure").description("Configure gateway authentication credentials").requiredOption("--global-url <url>", "Global gateway URL").requiredOption("--workspace-url <url>", "Workspace gateway URL").requiredOption("--client-id <id>", "OAuth client ID").requiredOption("--client-secret <secret>", "OAuth client secret").option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL6).action(async (opts) => {
564
+ gatewayAuth.command("configure").description("Configure gateway authentication credentials").requiredOption("--global-url <url>", "Global gateway URL").requiredOption("--workspace-url <url>", "Workspace gateway URL").requiredOption("--client-id <id>", "OAuth client ID").requiredOption("--client-secret <secret>", "OAuth client secret").option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL7).action(async (opts) => {
438
565
  try {
439
566
  const agentUrl = getAgentUrl(opts);
440
567
  header("Configure Gateway Authentication");
@@ -462,7 +589,7 @@ function register7(program) {
462
589
  fail(`Failed to configure gateway auth: ${err.message}`);
463
590
  }
464
591
  });
465
- gatewayAuth.command("status").description("Check gateway authentication status").option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL6).action(async (opts) => {
592
+ gatewayAuth.command("status").description("Check gateway authentication status").option("--agent-url <url>", "Agent URL", DEFAULT_AGENT_URL7).action(async (opts) => {
466
593
  try {
467
594
  const agentUrl = getAgentUrl(opts);
468
595
  header("Gateway Authentication Status");
@@ -663,5 +790,5 @@ export {
663
790
  vibePlugin
664
791
  };
665
792
 
666
- //# debugId=FB296CA280CCBCD464756E2164756E21
667
- //# sourceMappingURL=index-ftbphe7j.js.map
793
+ //# debugId=E8B74C0F8F01FCA664756E2164756E21
794
+ //# sourceMappingURL=index-exh7dh2v.js.map
@@ -7,14 +7,14 @@
7
7
  "import { Command } from \"commander\";\nimport { platform, arch, release, hostname, cpus, totalmem } from \"node:os\";\nimport {\n info,\n fail,\n header,\n kv,\n blank,\n colors,\n icons,\n formatBytes,\n getAgentUrl,\n apiGet,\n} from \"../utils/index.js\";\n\nconst DEFAULT_AGENT_URL = \"http://localhost:3005\";\n\ninterface VersionResponse {\n version: string;\n build?: string;\n commit?: string;\n nodeVersion?: string;\n bunVersion?: string;\n}\n\nexport function register(program: Command): void {\n program\n .command(\"info\")\n .description(\"Show local and remote VibeControls agent information\")\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .action(async (opts) => {\n try {\n header(\"VibeControls Agent Info\");\n blank();\n\n // Local system info\n info(`${icons.info} Local System`);\n kv(\"Hostname\", hostname());\n kv(\"Platform\", `${platform()} ${arch()}`);\n kv(\"OS Release\", release());\n kv(\"CPUs\", String(cpus().length));\n kv(\"Total Memory\", formatBytes(totalmem()));\n kv(\"Node.js\", process.version);\n\n if (process.versions.bun) {\n kv(\"Bun\", process.versions.bun);\n }\n\n blank();\n\n // Remote agent info\n const agentUrl = getAgentUrl(opts);\n\n try {\n const data = await apiGet<VersionResponse>(\n agentUrl,\n \"/api/agent/version\",\n );\n\n info(`${icons.info} Remote Agent`);\n kv(\"URL\", agentUrl);\n kv(\"Version\", colors.bold(data.version));\n\n if (data.build) {\n kv(\"Build\", data.build);\n }\n\n if (data.commit) {\n kv(\"Commit\", data.commit);\n }\n\n if (data.nodeVersion) {\n kv(\"Node.js (remote)\", data.nodeVersion);\n }\n\n if (data.bunVersion) {\n kv(\"Bun (remote)\", data.bunVersion);\n }\n } catch {\n info(`${icons.info} Remote Agent`);\n kv(\"URL\", agentUrl);\n kv(\"Status\", colors.dim(\"not reachable\"));\n }\n\n blank();\n } catch (err: any) {\n fail(`Failed to get info: ${err.message}`);\n }\n });\n}\n",
8
8
  "import { Command } from \"commander\";\nimport {\n fail,\n header,\n kv,\n blank,\n colors,\n getAgentUrl,\n apiGet,\n} from \"../utils/index.js\";\n\nconst DEFAULT_AGENT_URL = \"http://localhost:3005\";\n\ninterface ApiKeyResponse {\n apiKey: string;\n}\n\nexport function register(program: Command): void {\n program\n .command(\"key\")\n .description(\"Get the API key for a running VibeControls agent\")\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .action(async (opts) => {\n try {\n const agentUrl = getAgentUrl(opts);\n\n header(\"Agent API Key\");\n blank();\n\n const data = await apiGet<ApiKeyResponse>(\n agentUrl,\n \"/api/agent/api-key\",\n );\n\n kv(\"API Key\", colors.bold(data.apiKey));\n blank();\n } catch (err: any) {\n fail(`Failed to get API key: ${err.message}`);\n }\n });\n}\n",
9
9
  "import { Command } from \"commander\";\nimport {\n info,\n fail,\n header,\n kv,\n blank,\n colors,\n icons,\n formatBytes,\n formatDuration,\n getAgentUrl,\n apiGet,\n} from \"../utils/index.js\";\n\nconst DEFAULT_AGENT_URL = \"http://localhost:3005\";\n\ninterface SystemResponse {\n hostname: string;\n platform: string;\n arch: string;\n release: string;\n cpus: number;\n totalMemory: number;\n freeMemory: number;\n uptime: number;\n bunVersion?: string;\n agentVersion: string;\n homeDir: string;\n cwd: string;\n environment?: string;\n}\n\nexport function register(program: Command): void {\n program\n .command(\"system\")\n .description(\"Show system information for a running VibeControls agent\")\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .action(async (opts) => {\n try {\n const agentUrl = getAgentUrl(opts);\n\n header(\"Agent System Information\");\n blank();\n\n const data = await apiGet<SystemResponse>(\n agentUrl,\n \"/api/agent/system\",\n );\n\n // Agent info\n info(`${icons.info} Agent`);\n kv(\"Version\", colors.bold(data.agentVersion));\n if (data.bunVersion) {\n kv(\"Bun\", data.bunVersion);\n }\n if (data.environment) {\n kv(\"Environment\", data.environment);\n }\n kv(\"Uptime\", formatDuration(data.uptime));\n blank();\n\n // Platform info\n info(`${icons.info} Platform`);\n kv(\"OS\", `${data.platform} ${data.arch}`);\n kv(\"Hostname\", data.hostname);\n kv(\"Release\", data.release);\n blank();\n\n // Resources\n info(`${icons.info} Resources`);\n kv(\"CPUs\", String(data.cpus));\n kv(\"Total Memory\", formatBytes(data.totalMemory));\n kv(\"Free Memory\", formatBytes(data.freeMemory));\n blank();\n\n // Paths\n info(`${icons.info} Paths`);\n kv(\"Home\", data.homeDir);\n kv(\"CWD\", data.cwd);\n blank();\n } catch (err: any) {\n fail(`Failed to get system info: ${err.message}`);\n }\n });\n}\n",
10
- "import { Command } from \"commander\";\nimport {\n info,\n fail,\n header,\n kv,\n blank,\n colors,\n icons,\n formatStatus,\n timeAgo,\n formatTable,\n} from \"../utils/index.js\";\nimport { ServiceManager } from \"../../services/service-manager.js\";\n\nexport function register(program: Command): void {\n program\n .command(\"status\")\n .description(\"Show status of VibeControls agent instance(s)\")\n .option(\"-n, --name <name>\", \"Agent instance name\")\n .action(async (opts) => {\n try {\n const serviceManager = new ServiceManager();\n\n if (opts.name) {\n // Show individual instance status\n header(`Agent Status: ${opts.name}`);\n blank();\n\n const instance = await serviceManager.getStatus(opts.name);\n\n if (!instance) {\n fail(`Agent instance ${colors.bold(opts.name)} not found.`);\n return;\n }\n\n kv(\"Name\", instance.name);\n kv(\"Status\", formatStatus(instance.status));\n kv(\"PID\", instance.pid ? String(instance.pid) : colors.dim(\"n/a\"));\n kv(\"Port\", instance.port ? String(instance.port) : colors.dim(\"n/a\"));\n kv(\"Host\", instance.config?.host || colors.dim(\"n/a\"));\n kv(\"Database\", instance.config?.dbPath || colors.dim(\"n/a\"));\n\n if (instance.startTime) {\n kv(\"Started\", timeAgo(instance.startTime));\n }\n\n blank();\n } else {\n // Show all instances\n header(\"Agent Instances\");\n blank();\n\n const instances = await serviceManager.listInstances();\n\n if (!instances || instances.length === 0) {\n info(`${icons.info} No agent instances found.`);\n info(`Run ${colors.bold(\"vibe start\")} to start an agent.`);\n return;\n }\n\n const rows = instances.map((inst) => ({\n Name: inst.name,\n Status: formatStatus(inst.status),\n PID: inst.pid || \"-\",\n Port: inst.port || \"-\",\n Started: inst.startTime ? timeAgo(inst.startTime) : \"-\",\n }));\n\n formatTable(rows);\n\n blank();\n info(\n `${icons.info} ${instances.length} instance(s) found. Use ${colors.bold(\"vibe status -n <name>\")} for details.`,\n );\n }\n } catch (err: any) {\n fail(`Failed to get status: ${err.message}`);\n }\n });\n}\n",
10
+ "/**\n * vibe status — Comprehensive status display\n *\n * Shows a complete overview of agent health, plugins, config, tunnels,\n * sessions, and system info. Supports targeting a specific agent instance\n * with -n/--name, --agent, or --profile.\n *\n * Sections:\n * 1. Agent instance(s) status (process info)\n * 2. Health check (API reachability)\n * 3. Installed plugins summary\n * 4. Tunnel status (active URL)\n * 5. Active sessions count\n * 6. Config summary\n */\n\nimport { Command } from \"commander\";\nimport {\n getAgentUrl,\n apiGet,\n info,\n fail,\n header,\n kv,\n blank,\n colors,\n icons,\n formatStatus,\n timeAgo,\n formatTable,\n} from \"../utils/index.js\";\nimport { ServiceManager } from \"../../services/service-manager.js\";\n\nconst DEFAULT_AGENT_URL = \"http://localhost:3005\";\n\nexport function register(program: Command): void {\n program\n .command(\"status\")\n .description(\"Show comprehensive status of VibeControls agent instance(s)\")\n .option(\"-n, --name <name>\", \"Agent instance name\")\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .option(\"--agent <name>\", \"Target agent instance by name\")\n .option(\"--profile <name>\", \"Alias for --agent\")\n .option(\"--json\", \"Output status as JSON\", false)\n .action(async (opts) => {\n try {\n const serviceManager = new ServiceManager();\n\n if (opts.name) {\n // ── Single Instance Detailed Status ──────────────────────────\n\n const instance = await serviceManager.getStatus(opts.name);\n\n if (!instance) {\n fail(`Agent instance ${colors.bold(opts.name)} not found.`);\n return;\n }\n\n // Build the agent URL from instance info\n const agentUrl =\n instance.status === \"running\"\n ? `http://localhost:${instance.port}`\n : getAgentUrl(opts);\n\n if (opts.json) {\n const jsonData = await buildStatusJson(agentUrl, instance);\n console.log(JSON.stringify(jsonData, null, 2));\n return;\n }\n\n header(`Agent Status: ${instance.name}`);\n\n // Section 1: Process Info\n kv(\"Name\", instance.name);\n kv(\"Status\", formatStatus(instance.status));\n kv(\"PID\", instance.pid ? String(instance.pid) : colors.dim(\"n/a\"));\n kv(\"Port\", instance.port ? String(instance.port) : colors.dim(\"n/a\"));\n kv(\"Host\", instance.config?.host || colors.dim(\"n/a\"));\n kv(\"Database\", instance.config?.dbPath || colors.dim(\"n/a\"));\n\n if (instance.startTime) {\n kv(\"Started\", timeAgo(instance.startTime));\n }\n\n // Section 2: Health Check (only if running)\n if (instance.status === \"running\") {\n blank();\n await printHealthSection(agentUrl);\n await printPluginsSection(agentUrl);\n await printTunnelSection(agentUrl);\n await printSessionsSection(agentUrl);\n }\n\n blank();\n } else {\n // ── All Instances Overview ─────────────────────────────────\n\n const instances = await serviceManager.listInstances();\n\n if (opts.json) {\n const jsonData = {\n instances: instances.map((inst) => ({\n name: inst.name,\n status: inst.status,\n pid: inst.pid,\n port: inst.port,\n startTime: inst.startTime,\n })),\n };\n console.log(JSON.stringify(jsonData, null, 2));\n return;\n }\n\n header(\"Agent Instances\");\n blank();\n\n if (!instances || instances.length === 0) {\n info(`${icons.info} No agent instances found.`);\n info(`Run ${colors.bold(\"vibe start\")} to start an agent.`);\n return;\n }\n\n const rows = instances.map((inst) => ({\n Name: inst.name,\n Status: formatStatus(inst.status),\n PID: inst.pid || \"-\",\n Port: inst.port || \"-\",\n Started: inst.startTime ? timeAgo(inst.startTime) : \"-\",\n }));\n\n formatTable(rows);\n\n blank();\n\n // For each running instance, show a quick status summary\n const running = instances.filter((i) => i.status === \"running\");\n if (running.length > 0) {\n for (const inst of running) {\n const agentUrl = `http://localhost:${inst.port}`;\n blank();\n header(`Quick Status: ${inst.name} (port ${inst.port})`);\n await printHealthSection(agentUrl);\n await printTunnelSection(agentUrl);\n }\n }\n\n blank();\n info(\n `${icons.info} ${instances.length} instance(s) found. Use ${colors.bold(\"vibe status -n <name>\")} for full details.`,\n );\n }\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n fail(`Failed to get status: ${message}`);\n }\n });\n}\n\n// ── Section Helpers ─────────────────────────────────────────────────────\n\nasync function printHealthSection(agentUrl: string): Promise<void> {\n try {\n const res = await fetch(`${agentUrl}/health`);\n if (res.ok) {\n const data = (await res.json()) as Record<string, unknown>;\n kv(\n \"Health\",\n colors.green(\"healthy\") + (data.version ? ` (v${data.version})` : \"\"),\n );\n if (data.uptime) {\n kv(\"Uptime\", String(data.uptime));\n }\n } else {\n kv(\"Health\", colors.red(\"unhealthy\"));\n }\n } catch {\n kv(\"Health\", colors.red(\"unreachable\"));\n }\n}\n\nasync function printPluginsSection(agentUrl: string): Promise<void> {\n try {\n const data = await apiGet<{ plugins: unknown[]; count: number }>(\n agentUrl,\n \"/api/plugins\",\n );\n const plugins = data.plugins || [];\n const coreCount = plugins.filter((p: any) => p.isCore).length;\n const externalCount = plugins.length - coreCount;\n kv(\n \"Plugins\",\n `${plugins.length} total (${coreCount} core, ${externalCount} external)`,\n );\n } catch {\n kv(\"Plugins\", colors.dim(\"(unable to fetch)\"));\n }\n}\n\nasync function printTunnelSection(agentUrl: string): Promise<void> {\n try {\n const result = await apiGet<{\n tunnelUrl?: string;\n publicUrl?: string;\n url?: string;\n status?: string;\n }>(agentUrl, \"/api/agent/tunnel\");\n const tunnelUrl = result?.tunnelUrl || result?.publicUrl || result?.url;\n const status = result?.status || \"unknown\";\n\n if (tunnelUrl) {\n kv(\"Tunnel\", colors.green(tunnelUrl));\n } else if (status === \"active\" || status === \"running\") {\n kv(\"Tunnel\", colors.yellow(\"starting...\"));\n } else {\n kv(\"Tunnel\", colors.dim(\"(not running)\"));\n }\n } catch {\n kv(\"Tunnel\", colors.dim(\"(not running)\"));\n }\n}\n\nasync function printSessionsSection(agentUrl: string): Promise<void> {\n try {\n const sessions = await apiGet<unknown[]>(agentUrl, \"/api/sessions\");\n const count = Array.isArray(sessions) ? sessions.length : 0;\n kv(\"Sessions\", `${count} active`);\n } catch {\n kv(\"Sessions\", colors.dim(\"(unable to fetch)\"));\n }\n}\n\nasync function buildStatusJson(\n agentUrl: string,\n instance: {\n name: string;\n status: string;\n pid: number;\n port: number;\n config?: { host?: string; dbPath?: string };\n startTime?: string;\n },\n): Promise<Record<string, unknown>> {\n const data: Record<string, unknown> = {\n instance: {\n name: instance.name,\n status: instance.status,\n pid: instance.pid,\n port: instance.port,\n host: instance.config?.host,\n dbPath: instance.config?.dbPath,\n startTime: instance.startTime,\n },\n };\n\n if (instance.status === \"running\") {\n // Health\n try {\n const res = await fetch(`${agentUrl}/health`);\n data.health = res.ok ? await res.json() : { healthy: false };\n } catch {\n data.health = { healthy: false, error: \"unreachable\" };\n }\n\n // Plugins\n try {\n data.plugins = await apiGet(agentUrl, \"/api/plugins\");\n } catch {\n data.plugins = null;\n }\n\n // Tunnel\n try {\n data.tunnel = await apiGet(agentUrl, \"/api/agent/tunnel\");\n } catch {\n data.tunnel = null;\n }\n\n // Sessions\n try {\n data.sessions = await apiGet(agentUrl, \"/api/sessions\");\n } catch {\n data.sessions = null;\n }\n }\n\n return data;\n}\n",
11
11
  "import { Command } from \"commander\";\nimport {\n info,\n fail,\n header,\n kv,\n blank,\n colors,\n icons,\n getAgentUrl,\n apiGet,\n} from \"../utils/index.js\";\n\nconst DEFAULT_AGENT_URL = \"http://localhost:3005\";\n\ninterface UrlResponse {\n url: string;\n tunnelUrl?: string;\n localUrl: string;\n isTunnel: boolean;\n}\n\nexport function register(program: Command): void {\n program\n .command(\"url\")\n .description(\"Show the active URL for a running VibeControls agent\")\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .action(async (opts) => {\n try {\n const agentUrl = getAgentUrl(opts);\n\n header(\"Agent URL\");\n blank();\n\n const data = await apiGet<UrlResponse>(agentUrl, \"/api/agent/url\");\n\n kv(\"Active URL\", colors.bold(data.url));\n kv(\"Local URL\", data.localUrl);\n\n if (data.tunnelUrl) {\n kv(\"Tunnel URL\", colors.cyan(data.tunnelUrl));\n }\n\n kv(\n \"Mode\",\n data.isTunnel\n ? `${icons.running} Tunnel active`\n : `${icons.info} Local only`,\n );\n\n blank();\n\n if (data.isTunnel) {\n info(\n `${icons.info} Agent is accessible via tunnel at ${colors.bold(data.tunnelUrl!)}`,\n );\n } else {\n info(\n `${icons.info} Agent is running locally at ${colors.bold(data.localUrl)}`,\n );\n }\n } catch (err: any) {\n fail(`Failed to get URL: ${err.message}`);\n }\n });\n}\n",
12
12
  "import { Command } from \"commander\";\nimport {\n success,\n info,\n fail,\n header,\n kv,\n blank,\n colors,\n icons,\n getAgentUrl,\n apiGet,\n apiPost,\n} from \"../utils/index.js\";\n\nconst DEFAULT_AGENT_URL = \"http://localhost:3005\";\n\ninterface GatewayAuthStatusResponse {\n configured: boolean;\n globalUrl?: string;\n workspaceUrl?: string;\n clientId?: string;\n authenticated: boolean;\n tokenExpiresAt?: string;\n}\n\ninterface GatewayAuthConfigureResponse {\n success: boolean;\n message: string;\n}\n\nexport function register(program: Command): void {\n const gatewayAuth = program\n .command(\"gateway-auth\")\n .description(\"Manage gateway authentication for VibeControls agent\");\n\n gatewayAuth\n .command(\"configure\")\n .description(\"Configure gateway authentication credentials\")\n .requiredOption(\"--global-url <url>\", \"Global gateway URL\")\n .requiredOption(\"--workspace-url <url>\", \"Workspace gateway URL\")\n .requiredOption(\"--client-id <id>\", \"OAuth client ID\")\n .requiredOption(\"--client-secret <secret>\", \"OAuth client secret\")\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .action(async (opts) => {\n try {\n const agentUrl = getAgentUrl(opts);\n\n header(\"Configure Gateway Authentication\");\n blank();\n\n info(`${icons.info} Sending gateway auth configuration...`);\n blank();\n\n const data = await apiPost<GatewayAuthConfigureResponse>(\n agentUrl,\n \"/api/agent/gateway-auth\",\n {\n globalUrl: opts.globalUrl,\n workspaceUrl: opts.workspaceUrl,\n clientId: opts.clientId,\n clientSecret: opts.clientSecret,\n },\n );\n\n if (data.success) {\n success(\n `${icons.success} Gateway authentication configured successfully.`,\n );\n blank();\n kv(\"Global URL\", opts.globalUrl);\n kv(\"Workspace URL\", opts.workspaceUrl);\n kv(\"Client ID\", opts.clientId);\n kv(\"Client Secret\", colors.dim(\"********\"));\n } else {\n fail(data.message || \"Failed to configure gateway authentication.\");\n }\n\n blank();\n } catch (err: any) {\n fail(`Failed to configure gateway auth: ${err.message}`);\n }\n });\n\n gatewayAuth\n .command(\"status\")\n .description(\"Check gateway authentication status\")\n .option(\"--agent-url <url>\", \"Agent URL\", DEFAULT_AGENT_URL)\n .action(async (opts) => {\n try {\n const agentUrl = getAgentUrl(opts);\n\n header(\"Gateway Authentication Status\");\n blank();\n\n const data = await apiGet<GatewayAuthStatusResponse>(\n agentUrl,\n \"/api/agent/gateway-auth\",\n );\n\n kv(\n \"Configured\",\n data.configured\n ? `${icons.success} ${colors.green(\"Yes\")}`\n : `${icons.error} ${colors.red(\"No\")}`,\n );\n\n if (data.configured) {\n kv(\"Global URL\", data.globalUrl || colors.dim(\"n/a\"));\n kv(\"Workspace URL\", data.workspaceUrl || colors.dim(\"n/a\"));\n kv(\"Client ID\", data.clientId || colors.dim(\"n/a\"));\n kv(\n \"Authenticated\",\n data.authenticated\n ? `${icons.success} ${colors.green(\"Yes\")}`\n : `${icons.error} ${colors.red(\"No\")}`,\n );\n\n if (data.tokenExpiresAt) {\n kv(\"Token Expires\", data.tokenExpiresAt);\n }\n } else {\n blank();\n info(\n `${icons.info} Run ${colors.bold(\"vibe gateway-auth configure\")} to set up gateway authentication.`,\n );\n }\n\n blank();\n } catch (err: any) {\n fail(`Failed to get gateway auth status: ${err.message}`);\n }\n });\n}\n",
13
13
  "/**\n * Agent Plugin — CLI Commands\n *\n * Consolidates the core agent CLI commands by re-exporting the existing\n * register functions from the individual command files. The plugin's\n * onCliSetup hook calls registerCommands() to wire them into Commander.\n *\n * Commands: health, info, key, system, status, url, gateway-auth\n */\n\nimport type { Command } from \"commander\";\nimport type { HostServices } from \"../../core/plugin-system.js\";\n\n// Re-export individual command registrations\nimport { register as registerHealth } from \"../../cli/commands/health.cmd.js\";\nimport { register as registerInfo } from \"../../cli/commands/info.cmd.js\";\nimport { register as registerKey } from \"../../cli/commands/key.cmd.js\";\nimport { register as registerSystem } from \"../../cli/commands/system.cmd.js\";\nimport { register as registerStatus } from \"../../cli/commands/status.cmd.js\";\nimport { register as registerUrl } from \"../../cli/commands/url.cmd.js\";\nimport { register as registerGatewayAuth } from \"../../cli/commands/gateway-auth.cmd.js\";\n\nexport function registerCommands(\n program: Command,\n _hostServices: HostServices,\n): void {\n registerHealth(program);\n registerInfo(program);\n registerKey(program);\n registerSystem(program);\n registerStatus(program);\n registerUrl(program);\n registerGatewayAuth(program);\n}\n",
14
14
  "/**\n * Auto-Report — Push agent details to backend after startup\n *\n * When gateway auth (OAuth2) is configured, automatically reports the\n * agent's tunnel URL, API key, hostname, platform, and version to the\n * backend via the `registerVibecontrolsAgent` mutation (upsert by hostname).\n *\n * This runs as a non-blocking background task from the `onServerReady` hook.\n * Retries are needed because the tunnel may not be ready immediately at\n * server start (Cloudflare tunnel starts in an external plugin).\n */\n\nimport os from \"node:os\";\nimport { readFileSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { gatewayClient } from \"../../services/gateway-client.js\";\nimport { logger } from \"../../services/logger.js\";\nimport type { ServiceRegistry } from \"../../core/service-registry.js\";\nimport type { TunnelProvider } from \"../../core/providers/tunnel.provider.js\";\nimport type { AgentDatabase } from \"../../db/database.js\";\n\n// ── Constants ────────────────────────────────────────────────────────────\n\nconst MAX_RETRIES = 10;\nconst RETRY_INTERVAL_MS = 3_000;\nconst LOG_SOURCE = \"auto-report\";\n\n// ── GraphQL Mutations ────────────────────────────────────────────────────\n\nconst REGISTER_AGENT_MUTATION = `\n mutation RegisterVibecontrolsAgent($input: RegisterVibecontrolsAgentInput!) {\n registerVibecontrolsAgent(input: $input) {\n id\n name\n hostname\n tunnelUrl\n tunnelStatus\n }\n }\n`;\n\nconst UPDATE_AGENT_MUTATION = `\n mutation UpdateVibecontrolsAgent($id: ID!, $input: UpdateVibecontrolsAgentInput!) {\n updateVibecontrolsAgent(id: $id, input: $input) {\n id\n tunnelUrl\n tunnelStatus\n agentApiKey\n }\n }\n`;\n\n// ── Helpers ──────────────────────────────────────────────────────────────\n\nfunction getAgentVersion(): string {\n try {\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkgPath = join(__dirname, \"..\", \"..\", \"package.json\");\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf8\")) as Record<\n string,\n unknown\n >;\n return (pkg.version as string) || \"0.0.0\";\n } catch {\n return \"0.0.0\";\n }\n}\n\nasync function waitForTunnelUrl(\n serviceRegistry: ServiceRegistry,\n): Promise<string | null> {\n for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {\n const tunnelProvider =\n serviceRegistry.getProvider<TunnelProvider>(\"tunnel\");\n if (tunnelProvider) {\n const url = await tunnelProvider.getActiveTunnelUrl();\n if (url) {\n logger.debug(\n LOG_SOURCE,\n `Tunnel URL available on attempt ${attempt}: ${url}`,\n );\n return url;\n }\n }\n\n if (attempt < MAX_RETRIES) {\n logger.debug(\n LOG_SOURCE,\n `Tunnel URL not ready, retrying in ${RETRY_INTERVAL_MS / 1000}s (attempt ${attempt}/${MAX_RETRIES})`,\n );\n await new Promise((resolve) => setTimeout(resolve, RETRY_INTERVAL_MS));\n }\n }\n\n logger.warn(\n LOG_SOURCE,\n `Tunnel URL not available after ${MAX_RETRIES} attempts`,\n );\n return null;\n}\n\n// ── Main Export ──────────────────────────────────────────────────────────\n\n/**\n * Auto-report agent details to the backend.\n * Called from the agent plugin's `onServerReady` hook.\n * Non-blocking — errors are logged but do not crash the agent.\n */\nexport async function autoReportToBackend(\n db: AgentDatabase,\n serviceRegistry: ServiceRegistry,\n apiKey: string,\n): Promise<void> {\n // Gate: only report if gateway auth is configured\n if (!gatewayClient.isConfigured()) {\n logger.debug(\n LOG_SOURCE,\n \"Gateway auth not configured — skipping auto-report\",\n );\n return;\n }\n\n const workspaceId = db.getConfig(\"gateway-auth:workspaceId\");\n if (!workspaceId) {\n logger.warn(\n LOG_SOURCE,\n \"No workspaceId configured — skipping auto-report. \" +\n \"Configure via POST /api/agent/gateway-auth with workspaceId.\",\n );\n return;\n }\n\n logger.info(LOG_SOURCE, \"Starting auto-report to backend...\");\n\n try {\n // Wait for tunnel URL (retries)\n const tunnelUrl = await waitForTunnelUrl(serviceRegistry);\n\n const hostname = os.hostname();\n const platform = os.platform();\n const arch = os.arch();\n const version = getAgentVersion();\n const agentRecordId = db.getConfig(\"gateway-auth:agentRecordId\");\n\n if (agentRecordId) {\n // We have a known backend record ID — use targeted update\n logger.info(\n LOG_SOURCE,\n `Updating agent record ${agentRecordId} via workspace gateway`,\n );\n\n const result = await gatewayClient.workspaceQuery(UPDATE_AGENT_MUTATION, {\n id: agentRecordId,\n input: {\n tunnelUrl: tunnelUrl || null,\n tunnelStatus: tunnelUrl ? \"CONNECTED\" : \"DISCONNECTED\",\n agentApiKey: apiKey,\n agentVersion: version,\n platform: `${platform}/${arch}`,\n },\n });\n\n if (result.errors?.length) {\n logger.warn(LOG_SOURCE, \"Update mutation returned errors\", {\n errors: result.errors.map((e) => e.message),\n });\n // Fall through to try register instead\n } else {\n logger.info(LOG_SOURCE, \"Agent record updated successfully\", {\n agentRecordId,\n tunnelUrl,\n });\n return;\n }\n }\n\n // No agentRecordId or update failed — use register (upsert by hostname)\n logger.info(\n LOG_SOURCE,\n `Registering agent via workspace gateway (hostname: ${hostname})`,\n );\n\n const result = await gatewayClient.workspaceQuery(REGISTER_AGENT_MUTATION, {\n input: {\n name: hostname,\n hostname,\n platform: `${platform}/${arch}`,\n agentVersion: version,\n tunnelUrl: tunnelUrl || null,\n tunnelStatus: tunnelUrl ? \"CONNECTED\" : \"DISCONNECTED\",\n agentApiKey: apiKey,\n workspaceId,\n },\n });\n\n if (result.errors?.length) {\n logger.error(LOG_SOURCE, \"Register mutation failed\", {\n errors: result.errors.map((e) => e.message),\n });\n return;\n }\n\n const data = result.data as\n | {\n registerVibecontrolsAgent?: { id: string; name: string };\n }\n | undefined;\n\n const registeredId = data?.registerVibecontrolsAgent?.id;\n if (registeredId) {\n // Persist the record ID for future targeted updates\n db.setConfig(\"gateway-auth:agentRecordId\", registeredId);\n logger.info(LOG_SOURCE, \"Agent registered successfully\", {\n agentRecordId: registeredId,\n name: data?.registerVibecontrolsAgent?.name,\n tunnelUrl,\n });\n }\n } catch (err) {\n logger.error(\n LOG_SOURCE,\n `Auto-report failed: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n}\n",
15
15
  "/**\n * Agent Plugin — Entry Point\n *\n * Core plugin providing agent identity, system information, dependency\n * setup, and gateway authentication. Always loaded as part of the\n * built-in plugin set.\n *\n * Lifecycle:\n * createRoutes → captures db reference\n * onServerReady → triggers auto-report to backend (if gateway auth configured)\n */\n\nimport type { VibePlugin } from \"../../core/plugin-system.js\";\nimport type { PluginRouteDeps } from \"../../core/types.js\";\nimport type { AgentDatabase } from \"../../db/database.js\";\nimport { createRoutes } from \"./routes.js\";\nimport { registerCommands } from \"./commands.js\";\nimport { autoReportToBackend } from \"./auto-report.js\";\n\n// Captured from createRoutes deps — used by onServerReady\nlet capturedDb: AgentDatabase | null = null;\nlet capturedApiKey: string | null = null;\n\nexport const vibePlugin: VibePlugin = {\n name: \"agent\",\n version: \"2.3.0\",\n description:\n \"Core agent identity, system info, setup, gateway authentication, and auto-report\",\n tags: [\"backend\", \"cli\"],\n cliCommand: \"agent\",\n apiPrefix: \"/api/agent\",\n publicPaths: [\"/identity\", \"/api-key\", \"/tunnel\"],\n\n createRoutes: (deps: PluginRouteDeps) => {\n capturedDb = deps.db;\n // Store the API key so auto-report can send it to backend\n capturedApiKey = process.env.API_KEY || \"vibecontrols-agent-secret-key\";\n return createRoutes(deps);\n },\n\n onCliSetup: async (program, hostServices) => {\n registerCommands(program, hostServices);\n },\n\n onServerReady: async (_app, hostServices) => {\n // Fire-and-forget: auto-report agent details to backend\n // This is non-blocking so the server doesn't wait for it\n if (capturedDb) {\n autoReportToBackend(\n capturedDb,\n hostServices.serviceRegistry,\n capturedApiKey || \"unknown\",\n ).catch((err) => {\n hostServices.logger.warn(\n \"agent-plugin\",\n `Auto-report background task failed: ${err}`,\n );\n });\n }\n },\n};\n"
16
16
  ],
17
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA;AACA;AACA;AAYA,SAAS,YAAY,GAAW;AAAA,EAC9B,MAAM,WAAW,GAAG,SAAS;AAAA,EAC7B,MAAM,WAAW,GAAG,SAAS;AAAA,EAC7B,MAAM,OAAO,GAAG,KAAK;AAAA,EACrB,MAAM,SAAS,IAAI,IAAI,aAAa,QAAQ;AAAA,EAC5C,OAAO,OAAO,GAAG,YAAY,YAAY,MAAM;AAAA,EAC/C,OAAO,OAAO,OAAO,KAAK,EAAE,UAAU,GAAG,EAAE;AAAA;AAK7C,SAAS,eAAe,GAAW;AAAA,EACjC,IAAI;AAAA,IACF,MAAM,UAAU,KAAK,YAAY,KAAK,MAAM,MAAM,cAAc;AAAA,IAChE,MAAM,MAAM,KAAK,MAAM,aAAa,SAAS,MAAM,CAAC;AAAA,IAIpD,OAAQ,IAAI,WAAsB;AAAA,IAClC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAMJ,SAAS,YAAY,CAAC,MAAuB;AAAA,EAClD,QAAQ,IAAI,oBAAoB;AAAA,EAChC,MAAM,UAAU,gBAAgB;AAAA,EAChC,MAAM,YAAY,aAAa;AAAA,EAE/B,OACE,IAAI,OAAO,EAER,IAAI,aAAa,OAAO;AAAA,IACvB;AAAA,IACA,UAAU,GAAG,SAAS;AAAA,IACtB,UAAU,GAAG,SAAS;AAAA,IACtB,MAAM,GAAG,KAAK;AAAA,IACd;AAAA,IACA,QAAQ,QAAQ,OAAO;AAAA,EACzB,EAAE,EAGD,IAAI,YAAY,CAAC,SAAS;AAAA,IACzB,QACG,IAA0C,UAC1C,IAAI,MAAiC,UACtC;AAAA,EACJ,EAAE,EAGD,IAAI,WAAW,YAAY;AAAA,IAC1B,MAAM,iBACJ,gBAAgB,YAA4B,QAAQ;AAAA,IACtD,IAAI,CAAC,gBAAgB;AAAA,MACnB,OAAO,EAAE,WAAW,MAAM,SAAS,gCAAgC;AAAA,IACrE;AAAA,IACA,MAAM,MAAM,MAAM,eAAe,mBAAmB;AAAA,IACpD,OAAO,EAAE,WAAW,IAAI;AAAA,GACzB,EAGA,KAAK,iBAAiB,SAAS,UAAU;AAAA,IACxC,MAAM,iBACJ,gBAAgB,YAA4B,QAAQ;AAAA,IACtD,IAAI,CAAC,gBAAgB;AAAA,MACnB,IAAI,SAAS;AAAA,MACb,OAAO,EAAE,OAAO,gCAAgC;AAAA,IAClD;AAAA,IACA,MAAM,OAAO,SAAS,QAAQ,IAAI,QAAQ,MAAM;AAAA,IAChD,MAAM,SAAS,MAAM,eAAe,MAAM,EAAE,MAAM,MAAM,QAAQ,CAAC;AAAA,IACjE,OAAO,EAAE,SAAS,MAAM,OAAO;AAAA,GAChC,EAGA,KAAK,gBAAgB,SAAS,UAAU;AAAA,IACvC,MAAM,iBACJ,gBAAgB,YAA4B,QAAQ;AAAA,IACtD,IAAI,CAAC,gBAAgB;AAAA,MACnB,IAAI,SAAS;AAAA,MACb,OAAO,EAAE,OAAO,gCAAgC;AAAA,IAClD;AAAA,IACA,MAAM,UAAU,MAAM,eAAe,KAAK;AAAA,IAC1C,MAAM,cAAc,QAAQ,KAAK,CAAC,OAAM,GAAE,UAAU,OAAO;AAAA,IAC3D,IAAI,aAAa;AAAA,MACf,MAAM,eAAe,KAAK,YAAY,EAAE;AAAA,IAC1C;AAAA,IACA,OAAO,EAAE,SAAS,KAAK;AAAA,GACxB,EAGA,IAAI,gBAAgB,MAAM;AAAA,IACzB,MAAM,QAAO,kBAAkB;AAAA,IAC/B,MAAM,eAAe,MAClB,OAAO,CAAC,MAAM,EAAE,QAAQ,EACxB,MAAM,CAAC,MAAM,EAAE,SAAS;AAAA,IAC3B,OAAO,EAAE,OAAO,cAAc,cAAc,MAAK;AAAA,GAClD,EAGA,KAAK,kBAAkB,YAAY;AAAA,IAClC,MAAM,SAAS,MAAM,oBAAoB;AAAA,IACzC,OAAO;AAAA,GACR,EAGA,KACC,iBACA,SAAS,MAAM,UAAU;AAAA,IACvB,IAAI;AAAA,MACF,cAAc,UAAU;AAAA,QACtB,kBACE,KAAK,gBAAgB,KAAK,oBAAoB;AAAA,QAChD,qBACE,KAAK,oBAAoB,KAAK;AAAA,QAChC,UAAU,KAAK,eAAe,KAAK,YAAY;AAAA,QAC/C,cAAc,KAAK,mBAAmB,KAAK,gBAAgB;AAAA,MAC7D,CAAC;AAAA,MAGD,IAAI,KAAK,eAAe,KAAK,UAAU;AAAA,QACrC,GAAG,UACD,yBACA,KAAK,eAAe,KAAK,YAAY,EACvC;AAAA,MACF;AAAA,MACA,IAAI,KAAK,mBAAmB,KAAK,cAAc;AAAA,QAC7C,GAAG,UACD,6BACA,KAAK,mBAAmB,KAAK,gBAAgB,EAC/C;AAAA,MACF;AAAA,MACA,IAAI,KAAK,oBAAoB,KAAK,qBAAqB;AAAA,QACrD,GAAG,UACD,oCACA,KAAK,oBAAoB,KAAK,uBAAuB,EACvD;AAAA,MACF;AAAA,MACA,IAAI,KAAK,gBAAgB,KAAK,kBAAkB;AAAA,QAC9C,GAAG,UACD,iCACA,KAAK,gBAAgB,KAAK,oBAAoB,EAChD;AAAA,MACF;AAAA,MACA,IAAI,KAAK,aAAa;AAAA,QACpB,GAAG,UAAU,4BAA4B,KAAK,WAAW;AAAA,MAC3D;AAAA,MACA,IAAI,KAAK,eAAe;AAAA,QACtB,GAAG,UAAU,8BAA8B,KAAK,aAAa;AAAA,MAC/D;AAAA,MAEA,OAAO,EAAE,SAAS,MAAM,SAAS,0BAA0B;AAAA,MAC3D,OAAO,KAAK;AAAA,MACZ,IAAI,SAAS;AAAA,MACb,OAAO;AAAA,QACL,OAAO;AAAA,QACP,SAAS,OAAO,GAAG;AAAA,MACrB;AAAA;AAAA,KAGJ;AAAA,IACE,MAAM,EAAE,OAAO;AAAA,MACb,kBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC;AAAA,MACvC,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC;AAAA,MACnC,kBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC;AAAA,MACvC,qBAAqB,EAAE,SAAS,EAAE,OAAO,CAAC;AAAA,MAC1C,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC;AAAA,MAClC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC;AAAA,MACtC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC;AAAA,MAC/B,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC;AAAA,MACnC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC;AAAA,MAClC,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC;AAAA,IACtC,CAAC;AAAA,EACH,CACF,EAGC,IAAI,iBAAiB,MAAM;AAAA,IAC1B,MAAM,SAAS,cAAc,UAAU;AAAA,IACvC,OAAO,EAAE,YAAY,cAAc,aAAa,GAAG,OAAO;AAAA,GAC3D,EAGA,IAAI,YAAY,OAAO;AAAA,IACtB;AAAA,IACA,SAAS;AAAA,IACT,gBAAgB,OAAO,QAAQ,cAAc,IAAI,UAAU;AAAA,EAC7D,EAAE,EAGD,IAAI,WAAW,OAAO;AAAA,IACrB,UAAU,GAAG,SAAS;AAAA,IACtB,UAAU,GAAG,SAAS;AAAA,IACtB,MAAM,GAAG,KAAK;AAAA,IACd,SAAS,GAAG,QAAQ;AAAA,IACpB,MAAM,GAAG,KAAK,EAAE;AAAA,IAChB,aAAa,GAAG,SAAS;AAAA,IACzB,YAAY,GAAG,QAAQ;AAAA,IACvB,QAAQ,GAAG,OAAO;AAAA,IAClB,YAAY,OAAO,QAAQ,cAAc,IAAI,UAAU;AAAA,IACvD,cAAc;AAAA,IACd,SAAS,GAAG,QAAQ;AAAA,IACpB,KAAK,QAAQ,IAAI;AAAA,IACjB,aAAa;AAAA,EACf,EAAE,EAGD,IAAI,WAAW,OAAO;AAAA,IACrB,QAAQ;AAAA,IACR,WAAW,IAAI,KAAK,EAAE,YAAY;AAAA,IAClC;AAAA,IACA,WAAW,gBAAgB,cAAc;AAAA,IACzC,UAAU,gBAAgB,aAAa;AAAA,EACzC,EAAE,EAGD,IAAI,QAAQ,YAAY;AAAA,IACvB,MAAM,iBACJ,gBAAgB,YAA4B,QAAQ;AAAA,IACtD,MAAM,YAAY,iBACd,MAAM,eAAe,mBAAmB,IACxC;AAAA,IACJ,MAAM,WAAW,oBAAoB,QAAQ,IAAI,QAAQ;AAAA,IACzD,OAAO;AAAA,MACL,KAAK,aAAa;AAAA,MAClB;AAAA,MACA;AAAA,MACA,QAAQ,YAAY,WAAW;AAAA,IACjC;AAAA,GACD;AAAA;;;AC/PP,IAAM,oBAAoB;AAoBnB,SAAS,QAAQ,CAAC,SAAwB;AAAA,EAC/C,QACG,QAAQ,QAAQ,EAChB,YAAY,+CAA+C,EAC3D,OAAO,qBAAqB,qBAAqB,EACjD,OAAO,qBAAqB,aAAa,iBAAiB,EAC1D,OAAO,OAAO,SAAS;AAAA,IACtB,IAAI;AAAA,MACF,OAAO,cAAc;AAAA,MACrB,MAAM;AAAA,MAEN,IAAI,KAAK,MAAM;AAAA,QAEb,MAAM,iBAAiB,IAAI;AAAA,QAE3B,MAAM,SAAU,MAAM,eAAe,YACnC,KAAK,IACP;AAAA,QAEA,IAAI,CAAC,OAAO,SAAS;AAAA,UACnB,KAAK,kBAAkB,OAAO,KAAK,KAAK,IAAI,sBAAsB;AAAA,UAClE;AAAA,QACF;AAAA,QAEA,MAAM,UAAU,OAAO;AAAA,QACvB,GAAG,YAAY,KAAK,IAAI;AAAA,QACxB,GAAG,UAAU,aAAa,QAAQ,UAAU,SAAS,CAAC;AAAA,QAEtD,IAAI,QAAQ,WAAW,WAAW;AAAA,UAChC,GAAG,UAAU,GAAG,QAAQ,SAAS;AAAA,QACnC;AAAA,QAEA,IAAI,QAAQ,QAAQ;AAAA,UAClB,MAAM;AAAA,UACN,KAAK,GAAG,MAAM,qBAAqB;AAAA,UACnC,YAAY,MAAM,UAAU,OAAO,QAAQ,QAAQ,MAAM,GAAG;AAAA,YAC1D,MAAM,OACJ,MAAM,WAAW,YAAY,MAAM,UAAU,MAAM;AAAA,YACrD,GAAG,KAAK,QAAQ,QAAQ,aAAa,MAAM,MAAM,CAAC;AAAA,UACpD;AAAA,QACF;AAAA,MACF,EAAO;AAAA,QAEL,MAAM,WAAW,YAAY,IAAI;AAAA,QAEjC,MAAM,OAAO,MAAM,OAAuB,UAAU,SAAS;AAAA,QAE7D,GAAG,OAAO,QAAQ;AAAA,QAClB,GAAG,UAAU,aAAa,KAAK,MAAM,CAAC;AAAA,QAEtC,IAAI,KAAK,SAAS;AAAA,UAChB,GAAG,WAAW,KAAK,OAAO;AAAA,QAC5B;AAAA,QAEA,IAAI,KAAK,WAAW,WAAW;AAAA,UAC7B,GAAG,UAAU,GAAG,KAAK,SAAS;AAAA,QAChC;AAAA,QAEA,IAAI,KAAK,WAAW;AAAA,UAClB,GAAG,aAAa,KAAK,SAAS;AAAA,QAChC;AAAA,QAEA,IAAI,KAAK,QAAQ;AAAA,UACf,MAAM;AAAA,UACN,KAAK,GAAG,MAAM,qBAAqB;AAAA,UACnC,YAAY,MAAM,UAAU,OAAO,QAAQ,KAAK,MAAM,GAAG;AAAA,YACvD,MAAM,OACJ,MAAM,WAAW,YAAY,MAAM,UAAU,MAAM;AAAA,YACrD,GAAG,KAAK,QAAQ,QAAQ,aAAa,MAAM,MAAM,CAAC;AAAA,UACpD;AAAA,QACF;AAAA;AAAA,MAGF,MAAM;AAAA,MACN,QAAQ,GAAG,MAAM,2BAA2B;AAAA,MAC5C,OAAO,KAAU;AAAA,MACjB,KAAK,wBAAwB,IAAI,SAAS;AAAA;AAAA,GAE7C;AAAA;;;ACjHL;AAcA,IAAM,qBAAoB;AAUnB,SAAS,SAAQ,CAAC,SAAwB;AAAA,EAC/C,QACG,QAAQ,MAAM,EACd,YAAY,sDAAsD,EAClE,OAAO,qBAAqB,aAAa,kBAAiB,EAC1D,OAAO,OAAO,SAAS;AAAA,IACtB,IAAI;AAAA,MACF,OAAO,yBAAyB;AAAA,MAChC,MAAM;AAAA,MAGN,KAAK,GAAG,MAAM,mBAAmB;AAAA,MACjC,GAAG,YAAY,SAAS,CAAC;AAAA,MACzB,GAAG,YAAY,GAAG,SAAS,KAAK,KAAK,GAAG;AAAA,MACxC,GAAG,cAAc,QAAQ,CAAC;AAAA,MAC1B,GAAG,QAAQ,OAAO,KAAK,EAAE,MAAM,CAAC;AAAA,MAChC,GAAG,gBAAgB,YAAY,SAAS,CAAC,CAAC;AAAA,MAC1C,GAAG,WAAW,QAAQ,OAAO;AAAA,MAE7B,IAAI,QAAQ,SAAS,KAAK;AAAA,QACxB,GAAG,OAAO,QAAQ,SAAS,GAAG;AAAA,MAChC;AAAA,MAEA,MAAM;AAAA,MAGN,MAAM,WAAW,YAAY,IAAI;AAAA,MAEjC,IAAI;AAAA,QACF,MAAM,OAAO,MAAM,OACjB,UACA,oBACF;AAAA,QAEA,KAAK,GAAG,MAAM,mBAAmB;AAAA,QACjC,GAAG,OAAO,QAAQ;AAAA,QAClB,GAAG,WAAW,OAAO,KAAK,KAAK,OAAO,CAAC;AAAA,QAEvC,IAAI,KAAK,OAAO;AAAA,UACd,GAAG,SAAS,KAAK,KAAK;AAAA,QACxB;AAAA,QAEA,IAAI,KAAK,QAAQ;AAAA,UACf,GAAG,UAAU,KAAK,MAAM;AAAA,QAC1B;AAAA,QAEA,IAAI,KAAK,aAAa;AAAA,UACpB,GAAG,oBAAoB,KAAK,WAAW;AAAA,QACzC;AAAA,QAEA,IAAI,KAAK,YAAY;AAAA,UACnB,GAAG,gBAAgB,KAAK,UAAU;AAAA,QACpC;AAAA,QACA,MAAM;AAAA,QACN,KAAK,GAAG,MAAM,mBAAmB;AAAA,QACjC,GAAG,OAAO,QAAQ;AAAA,QAClB,GAAG,UAAU,OAAO,IAAI,eAAe,CAAC;AAAA;AAAA,MAG1C,MAAM;AAAA,MACN,OAAO,KAAU;AAAA,MACjB,KAAK,uBAAuB,IAAI,SAAS;AAAA;AAAA,GAE5C;AAAA;;;AC7EL,IAAM,qBAAoB;AAMnB,SAAS,SAAQ,CAAC,SAAwB;AAAA,EAC/C,QACG,QAAQ,KAAK,EACb,YAAY,kDAAkD,EAC9D,OAAO,qBAAqB,aAAa,kBAAiB,EAC1D,OAAO,OAAO,SAAS;AAAA,IACtB,IAAI;AAAA,MACF,MAAM,WAAW,YAAY,IAAI;AAAA,MAEjC,OAAO,eAAe;AAAA,MACtB,MAAM;AAAA,MAEN,MAAM,OAAO,MAAM,OACjB,UACA,oBACF;AAAA,MAEA,GAAG,WAAW,OAAO,KAAK,KAAK,MAAM,CAAC;AAAA,MACtC,MAAM;AAAA,MACN,OAAO,KAAU;AAAA,MACjB,KAAK,0BAA0B,IAAI,SAAS;AAAA;AAAA,GAE/C;AAAA;;;ACxBL,IAAM,qBAAoB;AAkBnB,SAAS,SAAQ,CAAC,SAAwB;AAAA,EAC/C,QACG,QAAQ,QAAQ,EAChB,YAAY,0DAA0D,EACtE,OAAO,qBAAqB,aAAa,kBAAiB,EAC1D,OAAO,OAAO,SAAS;AAAA,IACtB,IAAI;AAAA,MACF,MAAM,WAAW,YAAY,IAAI;AAAA,MAEjC,OAAO,0BAA0B;AAAA,MACjC,MAAM;AAAA,MAEN,MAAM,OAAO,MAAM,OACjB,UACA,mBACF;AAAA,MAGA,KAAK,GAAG,MAAM,YAAY;AAAA,MAC1B,GAAG,WAAW,OAAO,KAAK,KAAK,YAAY,CAAC;AAAA,MAC5C,IAAI,KAAK,YAAY;AAAA,QACnB,GAAG,OAAO,KAAK,UAAU;AAAA,MAC3B;AAAA,MACA,IAAI,KAAK,aAAa;AAAA,QACpB,GAAG,eAAe,KAAK,WAAW;AAAA,MACpC;AAAA,MACA,GAAG,UAAU,eAAe,KAAK,MAAM,CAAC;AAAA,MACxC,MAAM;AAAA,MAGN,KAAK,GAAG,MAAM,eAAe;AAAA,MAC7B,GAAG,MAAM,GAAG,KAAK,YAAY,KAAK,MAAM;AAAA,MACxC,GAAG,YAAY,KAAK,QAAQ;AAAA,MAC5B,GAAG,WAAW,KAAK,OAAO;AAAA,MAC1B,MAAM;AAAA,MAGN,KAAK,GAAG,MAAM,gBAAgB;AAAA,MAC9B,GAAG,QAAQ,OAAO,KAAK,IAAI,CAAC;AAAA,MAC5B,GAAG,gBAAgB,YAAY,KAAK,WAAW,CAAC;AAAA,MAChD,GAAG,eAAe,YAAY,KAAK,UAAU,CAAC;AAAA,MAC9C,MAAM;AAAA,MAGN,KAAK,GAAG,MAAM,YAAY;AAAA,MAC1B,GAAG,QAAQ,KAAK,OAAO;AAAA,MACvB,GAAG,OAAO,KAAK,GAAG;AAAA,MAClB,MAAM;AAAA,MACN,OAAO,KAAU;AAAA,MACjB,KAAK,8BAA8B,IAAI,SAAS;AAAA;AAAA,GAEnD;AAAA;;;ACrEE,SAAS,SAAQ,CAAC,SAAwB;AAAA,EAC/C,QACG,QAAQ,QAAQ,EAChB,YAAY,+CAA+C,EAC3D,OAAO,qBAAqB,qBAAqB,EACjD,OAAO,OAAO,SAAS;AAAA,IACtB,IAAI;AAAA,MACF,MAAM,iBAAiB,IAAI;AAAA,MAE3B,IAAI,KAAK,MAAM;AAAA,QAEb,OAAO,iBAAiB,KAAK,MAAM;AAAA,QACnC,MAAM;AAAA,QAEN,MAAM,WAAW,MAAM,eAAe,UAAU,KAAK,IAAI;AAAA,QAEzD,IAAI,CAAC,UAAU;AAAA,UACb,KAAK,kBAAkB,OAAO,KAAK,KAAK,IAAI,cAAc;AAAA,UAC1D;AAAA,QACF;AAAA,QAEA,GAAG,QAAQ,SAAS,IAAI;AAAA,QACxB,GAAG,UAAU,aAAa,SAAS,MAAM,CAAC;AAAA,QAC1C,GAAG,OAAO,SAAS,MAAM,OAAO,SAAS,GAAG,IAAI,OAAO,IAAI,KAAK,CAAC;AAAA,QACjE,GAAG,QAAQ,SAAS,OAAO,OAAO,SAAS,IAAI,IAAI,OAAO,IAAI,KAAK,CAAC;AAAA,QACpE,GAAG,QAAQ,SAAS,QAAQ,QAAQ,OAAO,IAAI,KAAK,CAAC;AAAA,QACrD,GAAG,YAAY,SAAS,QAAQ,UAAU,OAAO,IAAI,KAAK,CAAC;AAAA,QAE3D,IAAI,SAAS,WAAW;AAAA,UACtB,GAAG,WAAW,QAAQ,SAAS,SAAS,CAAC;AAAA,QAC3C;AAAA,QAEA,MAAM;AAAA,MACR,EAAO;AAAA,QAEL,OAAO,iBAAiB;AAAA,QACxB,MAAM;AAAA,QAEN,MAAM,YAAY,MAAM,eAAe,cAAc;AAAA,QAErD,IAAI,CAAC,aAAa,UAAU,WAAW,GAAG;AAAA,UACxC,KAAK,GAAG,MAAM,gCAAgC;AAAA,UAC9C,KAAK,OAAO,OAAO,KAAK,YAAY,sBAAsB;AAAA,UAC1D;AAAA,QACF;AAAA,QAEA,MAAM,OAAO,UAAU,IAAI,CAAC,UAAU;AAAA,UACpC,MAAM,KAAK;AAAA,UACX,QAAQ,aAAa,KAAK,MAAM;AAAA,UAChC,KAAK,KAAK,OAAO;AAAA,UACjB,MAAM,KAAK,QAAQ;AAAA,UACnB,SAAS,KAAK,YAAY,QAAQ,KAAK,SAAS,IAAI;AAAA,QACtD,EAAE;AAAA,QAEF,YAAY,IAAI;AAAA,QAEhB,MAAM;AAAA,QACN,KACE,GAAG,MAAM,QAAQ,UAAU,iCAAiC,OAAO,KAAK,uBAAuB,gBACjG;AAAA;AAAA,MAEF,OAAO,KAAU;AAAA,MACjB,KAAK,yBAAyB,IAAI,SAAS;AAAA;AAAA,GAE9C;AAAA;;;AClEL,IAAM,qBAAoB;AASnB,SAAS,SAAQ,CAAC,SAAwB;AAAA,EAC/C,QACG,QAAQ,KAAK,EACb,YAAY,sDAAsD,EAClE,OAAO,qBAAqB,aAAa,kBAAiB,EAC1D,OAAO,OAAO,SAAS;AAAA,IACtB,IAAI;AAAA,MACF,MAAM,WAAW,YAAY,IAAI;AAAA,MAEjC,OAAO,WAAW;AAAA,MAClB,MAAM;AAAA,MAEN,MAAM,OAAO,MAAM,OAAoB,UAAU,gBAAgB;AAAA,MAEjE,GAAG,cAAc,OAAO,KAAK,KAAK,GAAG,CAAC;AAAA,MACtC,GAAG,aAAa,KAAK,QAAQ;AAAA,MAE7B,IAAI,KAAK,WAAW;AAAA,QAClB,GAAG,cAAc,OAAO,KAAK,KAAK,SAAS,CAAC;AAAA,MAC9C;AAAA,MAEA,GACE,QACA,KAAK,WACD,GAAG,MAAM,0BACT,GAAG,MAAM,iBACf;AAAA,MAEA,MAAM;AAAA,MAEN,IAAI,KAAK,UAAU;AAAA,QACjB,KACE,GAAG,MAAM,0CAA0C,OAAO,KAAK,KAAK,SAAU,GAChF;AAAA,MACF,EAAO;AAAA,QACL,KACE,GAAG,MAAM,oCAAoC,OAAO,KAAK,KAAK,QAAQ,GACxE;AAAA;AAAA,MAEF,OAAO,KAAU;AAAA,MACjB,KAAK,sBAAsB,IAAI,SAAS;AAAA;AAAA,GAE3C;AAAA;;;ACjDL,IAAM,qBAAoB;AAgBnB,SAAS,SAAQ,CAAC,SAAwB;AAAA,EAC/C,MAAM,cAAc,QACjB,QAAQ,cAAc,EACtB,YAAY,sDAAsD;AAAA,EAErE,YACG,QAAQ,WAAW,EACnB,YAAY,8CAA8C,EAC1D,eAAe,sBAAsB,oBAAoB,EACzD,eAAe,yBAAyB,uBAAuB,EAC/D,eAAe,oBAAoB,iBAAiB,EACpD,eAAe,4BAA4B,qBAAqB,EAChE,OAAO,qBAAqB,aAAa,kBAAiB,EAC1D,OAAO,OAAO,SAAS;AAAA,IACtB,IAAI;AAAA,MACF,MAAM,WAAW,YAAY,IAAI;AAAA,MAEjC,OAAO,kCAAkC;AAAA,MACzC,MAAM;AAAA,MAEN,KAAK,GAAG,MAAM,4CAA4C;AAAA,MAC1D,MAAM;AAAA,MAEN,MAAM,OAAO,MAAM,QACjB,UACA,2BACA;AAAA,QACE,WAAW,KAAK;AAAA,QAChB,cAAc,KAAK;AAAA,QACnB,UAAU,KAAK;AAAA,QACf,cAAc,KAAK;AAAA,MACrB,CACF;AAAA,MAEA,IAAI,KAAK,SAAS;AAAA,QAChB,QACE,GAAG,MAAM,yDACX;AAAA,QACA,MAAM;AAAA,QACN,GAAG,cAAc,KAAK,SAAS;AAAA,QAC/B,GAAG,iBAAiB,KAAK,YAAY;AAAA,QACrC,GAAG,aAAa,KAAK,QAAQ;AAAA,QAC7B,GAAG,iBAAiB,OAAO,IAAI,UAAU,CAAC;AAAA,MAC5C,EAAO;AAAA,QACL,KAAK,KAAK,WAAW,6CAA6C;AAAA;AAAA,MAGpE,MAAM;AAAA,MACN,OAAO,KAAU;AAAA,MACjB,KAAK,qCAAqC,IAAI,SAAS;AAAA;AAAA,GAE1D;AAAA,EAEH,YACG,QAAQ,QAAQ,EAChB,YAAY,qCAAqC,EACjD,OAAO,qBAAqB,aAAa,kBAAiB,EAC1D,OAAO,OAAO,SAAS;AAAA,IACtB,IAAI;AAAA,MACF,MAAM,WAAW,YAAY,IAAI;AAAA,MAEjC,OAAO,+BAA+B;AAAA,MACtC,MAAM;AAAA,MAEN,MAAM,OAAO,MAAM,OACjB,UACA,yBACF;AAAA,MAEA,GACE,cACA,KAAK,aACD,GAAG,MAAM,WAAW,OAAO,MAAM,KAAK,MACtC,GAAG,MAAM,SAAS,OAAO,IAAI,IAAI,GACvC;AAAA,MAEA,IAAI,KAAK,YAAY;AAAA,QACnB,GAAG,cAAc,KAAK,aAAa,OAAO,IAAI,KAAK,CAAC;AAAA,QACpD,GAAG,iBAAiB,KAAK,gBAAgB,OAAO,IAAI,KAAK,CAAC;AAAA,QAC1D,GAAG,aAAa,KAAK,YAAY,OAAO,IAAI,KAAK,CAAC;AAAA,QAClD,GACE,iBACA,KAAK,gBACD,GAAG,MAAM,WAAW,OAAO,MAAM,KAAK,MACtC,GAAG,MAAM,SAAS,OAAO,IAAI,IAAI,GACvC;AAAA,QAEA,IAAI,KAAK,gBAAgB;AAAA,UACvB,GAAG,iBAAiB,KAAK,cAAc;AAAA,QACzC;AAAA,MACF,EAAO;AAAA,QACL,MAAM;AAAA,QACN,KACE,GAAG,MAAM,YAAY,OAAO,KAAK,6BAA6B,qCAChE;AAAA;AAAA,MAGF,MAAM;AAAA,MACN,OAAO,KAAU;AAAA,MACjB,KAAK,sCAAsC,IAAI,SAAS;AAAA;AAAA,GAE3D;AAAA;;;AC9GE,SAAS,gBAAgB,CAC9B,SACA,eACM;AAAA,EACN,SAAe,OAAO;AAAA,EACtB,UAAa,OAAO;AAAA,EACpB,UAAY,OAAO;AAAA,EACnB,UAAe,OAAO;AAAA,EACtB,UAAe,OAAO;AAAA,EACtB,UAAY,OAAO;AAAA,EACnB,UAAoB,OAAO;AAAA;;;ACpB7B;AACA,yBAAS;AACT,iBAAS;AACT;AAUA,IAAM,cAAc;AACpB,IAAM,oBAAoB;AAC1B,IAAM,aAAa;AAInB,IAAM,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYhC,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAa9B,SAAS,gBAAe,GAAW;AAAA,EACjC,IAAI;AAAA,IACF,MAAM,aAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AAAA,IACxD,MAAM,UAAU,MAAK,YAAW,MAAM,MAAM,cAAc;AAAA,IAC1D,MAAM,MAAM,KAAK,MAAM,cAAa,SAAS,MAAM,CAAC;AAAA,IAIpD,OAAQ,IAAI,WAAsB;AAAA,IAClC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,eAAe,gBAAgB,CAC7B,iBACwB;AAAA,EACxB,SAAS,UAAU,EAAG,WAAW,aAAa,WAAW;AAAA,IACvD,MAAM,iBACJ,gBAAgB,YAA4B,QAAQ;AAAA,IACtD,IAAI,gBAAgB;AAAA,MAClB,MAAM,MAAM,MAAM,eAAe,mBAAmB;AAAA,MACpD,IAAI,KAAK;AAAA,QACP,OAAO,MACL,YACA,mCAAmC,YAAY,KACjD;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,IAAI,UAAU,aAAa;AAAA,MACzB,OAAO,MACL,YACA,qCAAqC,oBAAoB,kBAAkB,WAAW,cACxF;AAAA,MACA,MAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,iBAAiB,CAAC;AAAA,IACvE;AAAA,EACF;AAAA,EAEA,OAAO,KACL,YACA,kCAAkC,sBACpC;AAAA,EACA,OAAO;AAAA;AAUT,eAAsB,mBAAmB,CACvC,IACA,iBACA,QACe;AAAA,EAEf,IAAI,CAAC,cAAc,aAAa,GAAG;AAAA,IACjC,OAAO,MACL,YACA,yDACF;AAAA,IACA;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,GAAG,UAAU,0BAA0B;AAAA,EAC3D,IAAI,CAAC,aAAa;AAAA,IAChB,OAAO,KACL,YACA,4DACE,8DACJ;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAO,KAAK,YAAY,oCAAoC;AAAA,EAE5D,IAAI;AAAA,IAEF,MAAM,YAAY,MAAM,iBAAiB,eAAe;AAAA,IAExD,MAAM,YAAW,IAAG,SAAS;AAAA,IAC7B,MAAM,YAAW,IAAG,SAAS;AAAA,IAC7B,MAAM,QAAO,IAAG,KAAK;AAAA,IACrB,MAAM,UAAU,iBAAgB;AAAA,IAChC,MAAM,gBAAgB,GAAG,UAAU,4BAA4B;AAAA,IAE/D,IAAI,eAAe;AAAA,MAEjB,OAAO,KACL,YACA,yBAAyB,qCAC3B;AAAA,MAEA,MAAM,UAAS,MAAM,cAAc,eAAe,uBAAuB;AAAA,QACvE,IAAI;AAAA,QACJ,OAAO;AAAA,UACL,WAAW,aAAa;AAAA,UACxB,cAAc,YAAY,cAAc;AAAA,UACxC,aAAa;AAAA,UACb,cAAc;AAAA,UACd,UAAU,GAAG,aAAY;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,MAED,IAAI,QAAO,QAAQ,QAAQ;AAAA,QACzB,OAAO,KAAK,YAAY,mCAAmC;AAAA,UACzD,QAAQ,QAAO,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO;AAAA,QAC5C,CAAC;AAAA,MAEH,EAAO;AAAA,QACL,OAAO,KAAK,YAAY,qCAAqC;AAAA,UAC3D;AAAA,UACA;AAAA,QACF,CAAC;AAAA,QACD;AAAA;AAAA,IAEJ;AAAA,IAGA,OAAO,KACL,YACA,sDAAsD,YACxD;AAAA,IAEA,MAAM,SAAS,MAAM,cAAc,eAAe,yBAAyB;AAAA,MACzE,OAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,UAAU,GAAG,aAAY;AAAA,QACzB,cAAc;AAAA,QACd,WAAW,aAAa;AAAA,QACxB,cAAc,YAAY,cAAc;AAAA,QACxC,aAAa;AAAA,QACb;AAAA,MACF;AAAA,IACF,CAAC;AAAA,IAED,IAAI,OAAO,QAAQ,QAAQ;AAAA,MACzB,OAAO,MAAM,YAAY,4BAA4B;AAAA,QACnD,QAAQ,OAAO,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO;AAAA,MAC5C,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,OAAO;AAAA,IAMpB,MAAM,eAAe,MAAM,2BAA2B;AAAA,IACtD,IAAI,cAAc;AAAA,MAEhB,GAAG,UAAU,8BAA8B,YAAY;AAAA,MACvD,OAAO,KAAK,YAAY,iCAAiC;AAAA,QACvD,eAAe;AAAA,QACf,MAAM,MAAM,2BAA2B;AAAA,QACvC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,OAAO,KAAK;AAAA,IACZ,OAAO,MACL,YACA,uBAAuB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,GACxE;AAAA;AAAA;;;AC5MJ,IAAI,aAAmC;AACvC,IAAI,iBAAgC;AAE7B,IAAM,aAAyB;AAAA,EACpC,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM,CAAC,WAAW,KAAK;AAAA,EACvB,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,aAAa,CAAC,aAAa,YAAY,SAAS;AAAA,EAEhD,cAAc,CAAC,SAA0B;AAAA,IACvC,aAAa,KAAK;AAAA,IAElB,iBAAiB,QAAQ,IAAI,WAAW;AAAA,IACxC,OAAO,aAAa,IAAI;AAAA;AAAA,EAG1B,YAAY,OAAO,SAAS,iBAAiB;AAAA,IAC3C,iBAAiB,SAAS,YAAY;AAAA;AAAA,EAGxC,eAAe,OAAO,MAAM,iBAAiB;AAAA,IAG3C,IAAI,YAAY;AAAA,MACd,oBACE,YACA,aAAa,iBACb,kBAAkB,SACpB,EAAE,MAAM,CAAC,QAAQ;AAAA,QACf,aAAa,OAAO,KAClB,gBACA,uCAAuC,KACzC;AAAA,OACD;AAAA,IACH;AAAA;AAEJ;",
18
- "debugId": "FB296CA280CCBCD464756E2164756E21",
17
+ "mappings": "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",
18
+ "debugId": "E8B74C0F8F01FCA664756E2164756E21",
19
19
  "names": []
20
20
  }
@@ -14,7 +14,7 @@ import {
14
14
  kv,
15
15
  shortId,
16
16
  success
17
- } from "./index-xmeskdnb.js";
17
+ } from "./index-t0x810hm.js";
18
18
  import"./index-g8dczzvv.js";
19
19
 
20
20
  // src/plugins/project/routes.ts
@@ -291,4 +291,4 @@ export {
291
291
  };
292
292
 
293
293
  //# debugId=A929772C59713C8B64756E2164756E21
294
- //# sourceMappingURL=index-30p492yv.js.map
294
+ //# sourceMappingURL=index-swqzafr9.js.map