@openbuilder/cli 0.50.44 → 0.50.46
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/chunks/{Banner-BlktOjfl.js → Banner-BKC6yG6z.js} +2 -2
- package/dist/chunks/{Banner-BlktOjfl.js.map → Banner-BKC6yG6z.js.map} +1 -1
- package/dist/chunks/{cli-auth-ChCnxlFl.js → cli-auth-BgiGSBOt.js} +4 -4
- package/dist/chunks/{cli-auth-ChCnxlFl.js.map → cli-auth-BgiGSBOt.js.map} +1 -1
- package/dist/chunks/{index-oFqGtEeF.js → index-ZNRLfdj5.js} +2 -2
- package/dist/chunks/{index-oFqGtEeF.js.map → index-ZNRLfdj5.js.map} +1 -1
- package/dist/chunks/{init-BsQ3dhwf.js → init-IQRjA1g3.js} +5 -6
- package/dist/chunks/{init-BsQ3dhwf.js.map → init-IQRjA1g3.js.map} +1 -1
- package/dist/chunks/{init-tui-Dvk6Ndvl.js → init-tui-B4jfmo3U.js} +5 -6
- package/dist/chunks/{init-tui-Dvk6Ndvl.js.map → init-tui-B4jfmo3U.js.map} +1 -1
- package/dist/chunks/{login-BhtodVsj.js → login-CrIcDJpS.js} +2 -2
- package/dist/chunks/{login-BhtodVsj.js.map → login-CrIcDJpS.js.map} +1 -1
- package/dist/chunks/{logout-CDDASeuQ.js → logout-BxgiczmY.js} +2 -2
- package/dist/chunks/{logout-CDDASeuQ.js.map → logout-BxgiczmY.js.map} +1 -1
- package/dist/chunks/{main-tui-Cklcr3FX.js → main-tui-NPDVPKol.js} +7 -8
- package/dist/chunks/{main-tui-Cklcr3FX.js.map → main-tui-NPDVPKol.js.map} +1 -1
- package/dist/chunks/{port-allocator-Ct3ioni4.js → port-allocator-DuAZe2_S.js} +3 -4
- package/dist/chunks/{port-allocator-Ct3ioni4.js.map → port-allocator-DuAZe2_S.js.map} +1 -1
- package/dist/chunks/{run-wycadErJ.js → run-Yh3YjeLl.js} +10 -16
- package/dist/chunks/{run-wycadErJ.js.map → run-Yh3YjeLl.js.map} +1 -1
- package/dist/chunks/{start-CQKEEma-.js → start-B-brfyVy.js} +5 -6
- package/dist/chunks/{start-CQKEEma-.js.map → start-B-brfyVy.js.map} +1 -1
- package/dist/chunks/{theme-CktnrDZj.js → theme-DOjeB8BU.js} +13 -8
- package/dist/chunks/{theme-CktnrDZj.js.map → theme-DOjeB8BU.js.map} +1 -1
- package/dist/chunks/{use-app-Cj2bzWaw.js → use-app-DozfqdJj.js} +2 -2
- package/dist/chunks/{use-app-Cj2bzWaw.js.map → use-app-DozfqdJj.js.map} +1 -1
- package/dist/chunks/{useBuildState-pcDGDakI.js → useBuildState-DV6wurQ2.js} +2 -2
- package/dist/chunks/{useBuildState-pcDGDakI.js.map → useBuildState-DV6wurQ2.js.map} +1 -1
- package/dist/cli/index.js +7 -7
- package/dist/index.js +205 -2734
- package/dist/index.js.map +1 -1
- package/dist/instrument.js +7 -64162
- package/dist/instrument.js.map +1 -1
- package/package.json +2 -11
- package/dist/chunks/_commonjsHelpers-h-Bqc03Z.js +0 -34
- package/dist/chunks/_commonjsHelpers-h-Bqc03Z.js.map +0 -1
- package/dist/chunks/exports-ij9sv4UM.js +0 -7793
- package/dist/chunks/exports-ij9sv4UM.js.map +0 -1
- package/scripts/install-vendor-deps.js +0 -34
- package/scripts/install-vendor.js +0 -167
- package/scripts/prepare-release.js +0 -83
- package/vendor/ai-sdk-provider-claude-code-LOCAL.tgz +0 -0
- package/vendor/sentry-core-LOCAL.tgz +0 -0
- package/vendor/sentry-nextjs-LOCAL.tgz +0 -0
- package/vendor/sentry-node-LOCAL.tgz +0 -0
- package/vendor/sentry-node-core-LOCAL.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"port-allocator-Ct3ioni4.js","sources":["../../../../packages/agent-core/dist/lib/port-allocator.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/lib/db/client.ts\nimport { drizzle } from \"drizzle-orm/node-postgres\";\nimport pg from \"pg\";\n\n// src/lib/db/schema.ts\nvar schema_exports = {};\n__export(schema_exports, {\n accounts: () => accounts,\n cliAuthSessions: () => cliAuthSessions,\n generationNotes: () => generationNotes,\n generationSessions: () => generationSessions,\n generationTodos: () => generationTodos,\n generationToolCalls: () => generationToolCalls,\n messages: () => messages,\n portAllocations: () => portAllocations,\n projects: () => projects,\n runnerKeys: () => runnerKeys,\n runningProcesses: () => runningProcesses,\n serverOperations: () => serverOperations,\n sessions: () => sessions,\n users: () => users,\n verifications: () => verifications\n});\nimport { pgTable, text, integer, timestamp, uuid, jsonb, index, uniqueIndex, boolean } from \"drizzle-orm/pg-core\";\nimport { sql } from \"drizzle-orm\";\nvar users = pgTable(\"users\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n name: text(\"name\").notNull(),\n email: text(\"email\").notNull().unique(),\n emailVerified: boolean(\"email_verified\").notNull().default(false),\n image: text(\"image\"),\n hasCompletedOnboarding: boolean(\"has_completed_onboarding\").notNull().default(false),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n});\nvar sessions = pgTable(\"sessions\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\").notNull().references(() => users.id, { onDelete: \"cascade\" }),\n token: text(\"token\").notNull().unique(),\n expiresAt: timestamp(\"expires_at\").notNull(),\n ipAddress: text(\"ip_address\"),\n userAgent: text(\"user_agent\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n userIdIdx: index(\"sessions_user_id_idx\").on(table.userId),\n tokenIdx: index(\"sessions_token_idx\").on(table.token)\n}));\nvar accounts = pgTable(\"accounts\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\").notNull().references(() => users.id, { onDelete: \"cascade\" }),\n accountId: text(\"account_id\").notNull(),\n providerId: text(\"provider_id\").notNull(),\n // 'credential', 'google', etc.\n accessToken: text(\"access_token\"),\n refreshToken: text(\"refresh_token\"),\n accessTokenExpiresAt: timestamp(\"access_token_expires_at\"),\n refreshTokenExpiresAt: timestamp(\"refresh_token_expires_at\"),\n scope: text(\"scope\"),\n idToken: text(\"id_token\"),\n // ID token from OAuth providers\n password: text(\"password\"),\n // Hashed password for credential provider\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n userIdIdx: index(\"accounts_user_id_idx\").on(table.userId),\n providerAccountIdx: uniqueIndex(\"accounts_provider_account_idx\").on(table.providerId, table.accountId)\n}));\nvar verifications = pgTable(\"verifications\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n identifier: text(\"identifier\").notNull(),\n // email or other identifier\n value: text(\"value\").notNull(),\n // verification token\n expiresAt: timestamp(\"expires_at\").notNull(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n identifierIdx: index(\"verifications_identifier_idx\").on(table.identifier)\n}));\nvar runnerKeys = pgTable(\"runner_keys\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\").notNull().references(() => users.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n // User-friendly name like \"My MacBook\"\n keyHash: text(\"key_hash\").notNull(),\n // SHA-256 hash of the full key\n keyPrefix: text(\"key_prefix\").notNull(),\n // First 8 chars for display: \"sv_abc123...\"\n source: text(\"source\").default(\"web\"),\n // 'web' | 'cli' - how the key was created\n lastUsedAt: timestamp(\"last_used_at\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n revokedAt: timestamp(\"revoked_at\")\n // Soft delete - null means active\n}, (table) => ({\n userIdIdx: index(\"runner_keys_user_id_idx\").on(table.userId),\n keyHashIdx: uniqueIndex(\"runner_keys_key_hash_idx\").on(table.keyHash)\n}));\nvar cliAuthSessions = pgTable(\"cli_auth_sessions\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n token: text(\"token\").notNull().unique(),\n // Random token for session identification\n callbackPort: integer(\"callback_port\").notNull(),\n // Port the CLI is listening on\n callbackHost: text(\"callback_host\").default(\"localhost\"),\n // Host for callback\n state: text(\"state\").notNull().default(\"pending\"),\n // 'pending' | 'authenticated' | 'completed' | 'expired'\n userId: uuid(\"user_id\").references(() => users.id, { onDelete: \"cascade\" }),\n // Set after auth\n runnerKeyId: uuid(\"runner_key_id\").references(() => runnerKeys.id, { onDelete: \"cascade\" }),\n // Created key\n deviceName: text(\"device_name\"),\n // Auto-detected device name\n expiresAt: timestamp(\"expires_at\").notNull(),\n // Session expiration (short-lived)\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n authenticatedAt: timestamp(\"authenticated_at\")\n // When user completed OAuth\n}, (table) => ({\n tokenIdx: uniqueIndex(\"cli_auth_sessions_token_idx\").on(table.token),\n expiresAtIdx: index(\"cli_auth_sessions_expires_at_idx\").on(table.expiresAt)\n}));\nvar projects = pgTable(\"projects\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\").references(() => users.id, { onDelete: \"set null\" }),\n // Owner of the project (nullable for migration/local mode)\n name: text(\"name\").notNull(),\n slug: text(\"slug\").notNull().unique(),\n description: text(\"description\"),\n originalPrompt: text(\"original_prompt\"),\n icon: text(\"icon\").default(\"Folder\"),\n status: text(\"status\").notNull().default(\"pending\"),\n projectType: text(\"project_type\"),\n detectedFramework: text(\"detected_framework\"),\n // Auto-detected framework (astro, next, vite, etc.)\n path: text(\"path\"),\n // Nullable - deprecated, path should be calculated from slug\n runCommand: text(\"run_command\"),\n port: integer(\"port\"),\n devServerPid: integer(\"dev_server_pid\"),\n devServerPort: integer(\"dev_server_port\"),\n devServerStatus: text(\"dev_server_status\").default(\"stopped\"),\n devServerStatusUpdatedAt: timestamp(\"dev_server_status_updated_at\").defaultNow(),\n tunnelUrl: text(\"tunnel_url\"),\n runnerId: text(\"runner_id\"),\n // Runner that created/manages this project\n generationState: text(\"generation_state\"),\n designPreferences: jsonb(\"design_preferences\"),\n // User-specified design constraints (deprecated - use tags)\n tags: jsonb(\"tags\"),\n // Tag-based configuration system\n lastActivityAt: timestamp(\"last_activity_at\").defaultNow(),\n errorMessage: text(\"error_message\"),\n // GitHub integration fields\n githubRepo: text(\"github_repo\"),\n // e.g., \"owner/repo-name\"\n githubUrl: text(\"github_url\"),\n // Full repository URL\n githubBranch: text(\"github_branch\"),\n // Default branch (e.g., \"main\")\n githubLastPushedAt: timestamp(\"github_last_pushed_at\"),\n // Last push timestamp\n githubAutoPush: boolean(\"github_auto_push\").default(false),\n // Auto-push after builds\n githubLastSyncAt: timestamp(\"github_last_sync_at\"),\n // Last time we synced repo info\n githubMeta: jsonb(\"github_meta\"),\n // Additional metadata (issues count, recent commits, etc.)\n // NeonDB integration fields\n neondbConnectionString: text(\"neondb_connection_string\"),\n // DATABASE_URL (encrypted/partial)\n neondbClaimUrl: text(\"neondb_claim_url\"),\n // URL to claim the database\n neondbHost: text(\"neondb_host\"),\n // Database host endpoint\n neondbDatabase: text(\"neondb_database\"),\n // Database name\n neondbCreatedAt: timestamp(\"neondb_created_at\"),\n // When database was provisioned\n neondbExpiresAt: timestamp(\"neondb_expires_at\"),\n // When unclaimed DB expires (72 hours)\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n // Indexes for performance\n userIdIdx: index(\"projects_user_id_idx\").on(table.userId),\n runnerIdIdx: index(\"projects_runner_id_idx\").on(table.runnerId),\n statusIdx: index(\"projects_status_idx\").on(table.status),\n lastActivityIdx: index(\"projects_last_activity_idx\").on(table.lastActivityAt)\n}));\nvar messages = pgTable(\"messages\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n projectId: uuid(\"project_id\").notNull().references(() => projects.id, { onDelete: \"cascade\" }),\n role: text(\"role\").notNull(),\n content: text(\"content\").notNull(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow()\n});\nvar portAllocations = pgTable(\"port_allocations\", {\n port: integer(\"port\").primaryKey(),\n framework: text(\"framework\").notNull(),\n projectId: uuid(\"project_id\").references(() => projects.id, { onDelete: \"set null\" }),\n reservedAt: timestamp(\"reserved_at\").defaultNow()\n});\nvar runningProcesses = pgTable(\"running_processes\", {\n projectId: uuid(\"project_id\").primaryKey().notNull().references(() => projects.id, { onDelete: \"cascade\" }),\n pid: integer(\"pid\").notNull(),\n port: integer(\"port\"),\n command: text(\"command\"),\n runnerId: text(\"runner_id\"),\n // Runner that manages this process\n startedAt: timestamp(\"started_at\").notNull().defaultNow(),\n lastHealthCheck: timestamp(\"last_health_check\"),\n healthCheckFailCount: integer(\"health_check_fail_count\").notNull().default(0)\n}, (table) => ({\n // Index for filtering by runner\n runnerIdIdx: index(\"running_processes_runner_id_idx\").on(table.runnerId)\n}));\nvar generationSessions = pgTable(\"generation_sessions\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n projectId: uuid(\"project_id\").notNull().references(() => projects.id, { onDelete: \"cascade\" }),\n buildId: text(\"build_id\").notNull(),\n operationType: text(\"operation_type\"),\n status: text(\"status\").notNull().default(\"active\"),\n startedAt: timestamp(\"started_at\").notNull().defaultNow(),\n endedAt: timestamp(\"ended_at\"),\n summary: text(\"summary\"),\n rawState: jsonb(\"raw_state\"),\n isAutoFix: boolean(\"is_auto_fix\").default(false),\n // Flag for auto-fix sessions triggered by startup errors\n autoFixError: text(\"auto_fix_error\"),\n // The error message that triggered the auto-fix\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n projectIdIdx: index(\"generation_sessions_project_id_idx\").on(table.projectId),\n buildIdUnique: uniqueIndex(\"generation_sessions_build_id_unique\").on(table.buildId)\n}));\nvar generationTodos = pgTable(\"generation_todos\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n sessionId: uuid(\"session_id\").notNull().references(() => generationSessions.id, { onDelete: \"cascade\" }),\n todoIndex: integer(\"todo_index\").notNull(),\n content: text(\"content\").notNull(),\n activeForm: text(\"active_form\"),\n status: text(\"status\").notNull(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n sessionIdIdx: index(\"generation_todos_session_id_idx\").on(table.sessionId),\n sessionIndexUnique: uniqueIndex(\"generation_todos_session_index_unique\").on(table.sessionId, table.todoIndex)\n}));\nvar generationToolCalls = pgTable(\"generation_tool_calls\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n sessionId: uuid(\"session_id\").notNull().references(() => generationSessions.id, { onDelete: \"cascade\" }),\n todoIndex: integer(\"todo_index\").notNull(),\n toolCallId: text(\"tool_call_id\").notNull(),\n name: text(\"name\").notNull(),\n input: jsonb(\"input\"),\n output: jsonb(\"output\"),\n state: text(\"state\").notNull(),\n startedAt: timestamp(\"started_at\").notNull().defaultNow(),\n endedAt: timestamp(\"ended_at\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n sessionIdIdx: index(\"generation_tool_calls_session_id_idx\").on(table.sessionId),\n toolCallUnique: uniqueIndex(\"generation_tool_calls_call_id_unique\").on(table.sessionId, table.toolCallId)\n}));\nvar generationNotes = pgTable(\"generation_notes\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n sessionId: uuid(\"session_id\").notNull().references(() => generationSessions.id, { onDelete: \"cascade\" }),\n todoIndex: integer(\"todo_index\").notNull(),\n textId: text(\"text_id\"),\n kind: text(\"kind\").notNull().default(\"text\"),\n content: text(\"content\").notNull(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow()\n}, (table) => ({\n sessionIdIdx: index(\"generation_notes_session_id_idx\").on(table.sessionId),\n textIdUnique: uniqueIndex(\"generation_notes_text_id_unique\").on(table.sessionId, table.textId).where(sql`${table.textId} is not null`)\n}));\nvar serverOperations = pgTable(\"server_operations\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n projectId: uuid(\"project_id\").notNull().references(() => projects.id, { onDelete: \"cascade\" }),\n operation: text(\"operation\").notNull(),\n // 'start', 'stop', 'restart'\n status: text(\"status\").notNull().default(\"pending\"),\n // 'pending', 'sent', 'ack', 'completed', 'failed', 'timeout'\n runnerId: text(\"runner_id\"),\n port: integer(\"port\"),\n pid: integer(\"pid\"),\n error: text(\"error\"),\n failureReason: text(\"failure_reason\"),\n // 'port_in_use', 'health_check_timeout', 'immediate_crash', etc.\n retryCount: integer(\"retry_count\").notNull().default(0),\n metadata: jsonb(\"metadata\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n sentAt: timestamp(\"sent_at\"),\n ackAt: timestamp(\"ack_at\"),\n completedAt: timestamp(\"completed_at\")\n}, (table) => ({\n projectIdIdx: index(\"server_operations_project_id_idx\").on(table.projectId),\n statusIdx: index(\"server_operations_status_idx\").on(table.status),\n createdAtIdx: index(\"server_operations_created_at_idx\").on(table.createdAt)\n}));\n\n// src/lib/db/client.ts\nvar { Pool } = pg;\nfunction createPostgresClient() {\n const connectionString = process.env.DATABASE_URL;\n if (!connectionString) {\n throw new Error(\n 'DATABASE_URL is not set. Please configure your database connection:\\n - Run \"openbuilder init\" to set up a Neon database\\n - Or set DATABASE_URL environment variable to your PostgreSQL connection string'\n );\n }\n const pool = new Pool({\n connectionString,\n ssl: process.env.PGSSLMODE === \"disable\" ? false : { rejectUnauthorized: false }\n });\n const client = drizzle(pool, { schema: schema_exports });\n return client;\n}\nvar db = new Proxy({}, {\n get(_target, prop) {\n if (!global.__db) {\n global.__db = createPostgresClient();\n }\n return global.__db[prop];\n }\n});\n\n// src/lib/port-allocator.ts\nimport { and, eq, isNull, sql as sql2, isNotNull, lt } from \"drizzle-orm\";\nimport { createServer } from \"net\";\nimport { readFile } from \"fs/promises\";\nimport { existsSync } from \"fs\";\nimport { join } from \"path\";\n\n// src/lib/logging/build-logger.ts\nimport * as Sentry from \"@sentry/node\";\nvar BuildLogger = class {\n buildId = null;\n projectId = null;\n /**\n * Set correlation IDs for the current build\n * Call this at the start of each build to enable correlation tracking\n */\n setBuildContext(buildId, projectId) {\n this.buildId = buildId;\n this.projectId = projectId;\n this.log(\"debug\", \"runner\", `Build context set: ${buildId} / ${projectId}`);\n }\n /**\n * Clear correlation IDs after build completes\n */\n clearBuildContext() {\n this.log(\"debug\", \"runner\", \"Build context cleared\");\n this.buildId = null;\n this.projectId = null;\n }\n /**\n * Core logging method - creates structured log entries\n * Public for custom logging needs\n */\n log(level, context, message, data) {\n if (process.env.SILENT_MODE === \"1\") {\n return;\n }\n if (level === \"info\" || level === \"debug\") {\n if (process.env.DEBUG_BUILD === \"0\") {\n return;\n }\n }\n const entry = {\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n level,\n context,\n buildId: this.buildId ?? void 0,\n projectId: this.projectId ?? void 0,\n message,\n data\n };\n const prefix = `[${context}]`;\n const icon = {\n debug: \"\\u{1F50D}\",\n info: \"\\u{1F4CB}\",\n warn: \"\\u26A0\\uFE0F \",\n error: \"\\u274C\"\n }[level];\n const logFn = level === \"error\" ? console.error : level === \"warn\" ? console.warn : console.log;\n if (data && Object.keys(data).length > 0) {\n logFn(`${icon} ${prefix} ${message}`, data);\n } else {\n logFn(`${icon} ${prefix} ${message}`);\n }\n if (typeof process !== \"undefined\" && process.env.NODE_ENV !== \"test\") {\n try {\n if (level === \"warn\" || level === \"error\") {\n Sentry.addBreadcrumb({\n category: `build-logger.${context}`,\n message,\n level: level === \"error\" ? \"error\" : \"warning\",\n data: {\n ...data,\n buildId: this.buildId,\n projectId: this.projectId\n }\n });\n }\n } catch {\n }\n }\n }\n /**\n * Orchestrator-specific logging methods\n */\n orchestrator = {\n newProject: (operationType) => this.log(\"info\", \"orchestrator\", `NEW PROJECT (operationType: ${operationType})`),\n existingProject: (operationType) => this.log(\"info\", \"orchestrator\", `EXISTING PROJECT (operationType: ${operationType})`),\n templateProvided: (templateName, templateId, framework) => this.log(\"info\", \"orchestrator\", `Frontend provided template: ${templateName}`, {\n templateId,\n framework\n }),\n templateSelecting: (method) => this.log(\"info\", \"orchestrator\", `Template selection: ${method}`),\n templateSelected: (templateName, templateId) => this.log(\"info\", \"orchestrator\", `Selected template: ${templateName}`, { templateId }),\n templateDownloading: (templateName, repository, target) => this.log(\"info\", \"orchestrator\", `Downloading template: ${templateName}`, {\n repository,\n target\n }),\n templateDownloaded: (templateName, path, fileTreeSize) => this.log(\"info\", \"orchestrator\", `Template downloaded: ${templateName}`, {\n path,\n fileTreeSize\n }),\n catalogPrepared: (catalogSize) => this.log(\"info\", \"orchestrator\", `Template catalog prepared (${catalogSize} chars)`, {\n catalogSize\n }),\n systemPromptGenerated: (size) => this.log(\"info\", \"orchestrator\", `System prompt generated (${size} chars)`, { size }),\n orchestrationComplete: (data) => this.log(\"info\", \"orchestrator\", \"Orchestration complete\", data),\n error: (message, error) => this.log(\"error\", \"orchestrator\", message, {\n error: error instanceof Error ? error.message : String(error)\n })\n };\n /**\n * Message transformer-specific logging methods\n */\n transformer = {\n todoListFound: () => this.log(\"debug\", \"transformer\", \"Found Codex task list, parsing...\"),\n todoListParsed: (todoCount, completed, inProgress, pending) => this.log(\"info\", \"transformer\", `Parsed ${todoCount} todos`, {\n completed,\n inProgress,\n pending\n }),\n todoListInvalidFormat: (expected, got) => this.log(\"error\", \"transformer\", \"Invalid todo format from Codex\", {\n expected,\n got: JSON.stringify(got).substring(0, 200)\n }),\n todoListParseError: (error, rawJson) => this.log(\"error\", \"transformer\", \"Failed to parse Codex todolist\", {\n error: String(error),\n rawJson: rawJson.substring(0, 300)\n }),\n todoListRemoved: () => this.log(\"debug\", \"transformer\", \"Removed task list from chat text\"),\n toolStarted: (toolName, toolId) => this.log(\"debug\", \"transformer\", `Tool started: ${toolName}`, { toolName, toolId }),\n toolCompleted: (toolName, toolId) => this.log(\"debug\", \"transformer\", `Tool completed: ${toolName}`, { toolName, toolId }),\n pathViolationWarning: (toolName, path, workspace) => this.log(\"warn\", \"transformer\", `Path outside workspace: ${path}`, {\n toolName,\n path,\n workspace\n }),\n desktopPathDetected: (path) => this.log(\"error\", \"transformer\", `DESKTOP PATH DETECTED - Likely hallucinated: ${path}`, { path })\n };\n /**\n * Codex query-specific logging methods\n */\n codexQuery = {\n promptBuilding: (workingDirectory, systemPromptSize, userPromptSize) => this.log(\"info\", \"codex-query\", \"Building Codex prompt\", {\n workingDirectory,\n systemPromptSize,\n userPromptSize\n }),\n threadStarting: () => this.log(\"info\", \"codex-query\", \"Starting Codex thread (multi-turn)\"),\n turnStarted: (turnNumber, maxTurns, promptSize) => this.log(\"info\", \"codex-query\", `\\u2550\\u2550\\u2550 Turn ${turnNumber}/${maxTurns} \\u2550\\u2550\\u2550`, {\n turnNumber,\n maxTurns,\n promptSize\n }),\n taskListExtracted: () => this.log(\"info\", \"codex-query\", \"Task list extracted and updated\"),\n taskListStatus: (completed, inProgress, pending, total) => this.log(\"info\", \"codex-query\", `Tasks: ${completed} completed | ${inProgress} in_progress | ${pending} pending (total: ${total})`, {\n completed,\n inProgress,\n pending,\n total\n }),\n taskListTask: (index2, content, status, icon) => this.log(\"debug\", \"codex-query\", ` ${icon} ${index2 + 1}. ${content}`, { status }),\n taskListParseError: (error, rawContent) => this.log(\"error\", \"codex-query\", \"PARSE ERROR: Could not parse task list JSON\", {\n error: String(error),\n rawContent: rawContent.substring(0, 200)\n }),\n taskListMissing: (turnNumber) => this.log(\"warn\", \"codex-query\", `WARNING: No <start-todolist> tags found in Turn ${turnNumber}`, {\n turnNumber\n }),\n turnComplete: (turnNumber, hadToolCalls, messageLength) => this.log(\"info\", \"codex-query\", `Turn ${turnNumber} complete`, {\n hadToolCalls,\n messageLength\n }),\n tasksComplete: (completed, total) => this.log(\"info\", \"codex-query\", `Task status: ${completed}/${total} completed`, {\n completed,\n total\n }),\n allComplete: () => this.log(\"info\", \"codex-query\", \"\\u2705 All MVP tasks complete!\"),\n allTasksComplete: () => this.log(\"info\", \"codex-query\", \"\\u2705 All MVP tasks complete!\"),\n taskCompleteDetected: () => this.log(\"info\", \"codex-query\", \"\\u2705 Task complete (detected completion signal)\"),\n continuePrompting: (reason) => this.log(\"warn\", \"codex-query\", `No tools used but not done - ${reason}`),\n continuing: () => this.log(\"info\", \"codex-query\", \"\\u23ED\\uFE0F Continuing to next turn (had tool calls)\"),\n loopExited: (turnCount, maxTurns) => this.log(\"info\", \"codex-query\", `EXITED WHILE LOOP after ${turnCount} turns`, {\n turnCount,\n maxTurns\n }),\n sessionComplete: (turnCount) => this.log(\"info\", \"codex-query\", `Session complete after ${turnCount} turns`, { turnCount }),\n error: (message, error) => this.log(\"error\", \"codex-query\", message, {\n error: error instanceof Error ? error.message : String(error)\n })\n };\n /**\n * Claude query-specific logging methods\n */\n claudeQuery = {\n queryStarted: (model, cwd, maxTurns) => this.log(\"info\", \"claude-query\", `Starting Claude query (${model})`, {\n cwd,\n maxTurns\n }),\n error: (message, error) => this.log(\"error\", \"claude-query\", message, {\n error: error instanceof Error ? error.message : String(error)\n })\n };\n /**\n * Runner-specific logging methods\n */\n runner = {\n workspaceRoot: (path) => this.log(\"info\", \"runner\", `Workspace root: ${path}`, { path }),\n commandReceived: (commandType, projectId) => this.log(\"info\", \"runner\", `Received command: ${commandType}`, { commandType, projectId }),\n buildOperation: (operationType, projectSlug, agentId) => this.log(\"info\", \"runner\", `Build operation: ${operationType}`, {\n operationType,\n projectSlug,\n agentId\n }),\n templateProvided: (templateId) => this.log(\"info\", \"runner\", `Template provided by frontend: ${templateId}`, { templateId }),\n buildStreamCreated: () => this.log(\"info\", \"runner\", \"Build stream created, starting to process chunks...\"),\n firstChunkReceived: (agentLabel) => this.log(\"info\", \"runner\", `First chunk received from ${agentLabel}`, { agentLabel }),\n streamEnded: (chunkCount) => this.log(\"info\", \"runner\", `Stream ended after ${chunkCount} chunks`, { chunkCount }),\n buildCompleted: (projectId) => this.log(\"info\", \"runner\", `Build completed successfully`, { projectId }),\n buildFailed: (error) => this.log(\"error\", \"runner\", `Build failed: ${error}`, { error }),\n portDetected: (port) => this.log(\"info\", \"runner\", `Port detected: ${port}`, { port }),\n tunnelCreated: (port, tunnelUrl) => this.log(\"info\", \"runner\", `Tunnel created: ${tunnelUrl} \\u2192 localhost:${port}`, {\n port,\n tunnelUrl\n }),\n error: (message, error, context) => this.log(\"error\", \"runner\", message, {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : void 0,\n ...context\n })\n };\n /**\n * Build stream-specific logging (tool calls, text, etc.)\n */\n build = {\n agentText: (agentLabel, text2) => {\n const truncated = text2.length > 200 ? text2.slice(0, 200) + \"...\" : text2;\n this.log(\"debug\", \"build\", `${agentLabel}: ${truncated}`, {\n agentLabel,\n textLength: text2.length\n });\n },\n agentThinking: (thinking) => {\n const truncated = thinking.length > 300 ? thinking.slice(0, 300) + \"...\" : thinking;\n this.log(\"debug\", \"build\", `Thinking: ${truncated}`, {\n thinkingLength: thinking.length\n });\n },\n toolCalled: (toolName, toolId, inputSize) => this.log(\"info\", \"build\", `Tool called: ${toolName} (${toolId})`, {\n toolName,\n toolId,\n inputSize\n }),\n toolResult: (toolId, outputSize, isError) => this.log(isError ? \"error\" : \"info\", \"build\", `Tool result (${toolId})`, {\n toolId,\n outputSize,\n isError\n }),\n runCommandDetected: (runCommand) => this.log(\"info\", \"build\", `Detected runCommand: ${runCommand}`, { runCommand })\n };\n /**\n * WebSocket-specific logging methods\n */\n websocket = {\n serverCreated: (instanceId) => this.log(\"info\", \"websocket\", `WebSocket server instance created`, { instanceId }),\n serverInitialized: (path, runnerPath) => this.log(\"info\", \"websocket\", `Server initialized`, { path, runnerPath }),\n clientConnected: (clientId, projectId, sessionId) => this.log(\"info\", \"websocket\", `Client connected: ${clientId}`, { clientId, projectId, sessionId }),\n clientDisconnected: (clientId) => this.log(\"info\", \"websocket\", `Client disconnected: ${clientId}`, { clientId }),\n clientSubscribed: (clientId, projectId) => this.log(\"info\", \"websocket\", `Client subscribed to project: ${projectId}`, { clientId, projectId }),\n clientTimeout: (clientId) => this.log(\"warn\", \"websocket\", `Client timeout: ${clientId}`, { clientId }),\n runnerConnected: (runnerId) => this.log(\"info\", \"websocket\", `Runner connected: ${runnerId}`, { runnerId }),\n runnerDisconnected: (runnerId, code) => this.log(\"info\", \"websocket\", `Runner disconnected: ${runnerId}`, { runnerId, code }),\n runnerNotConnected: (runnerId, commandType) => this.log(\"warn\", \"websocket\", `Cannot send command to runner ${runnerId}: not connected`, {\n runnerId,\n commandType\n }),\n runnerAuthRejected: () => this.log(\"warn\", \"websocket\", `Runner connection rejected: invalid auth`),\n runnerAuthMissing: () => this.log(\"error\", \"websocket\", `RUNNER_SHARED_SECRET is not configured`),\n runnerStaleRemoved: (runnerId) => this.log(\"info\", \"websocket\", `Removing stale runner connection: ${runnerId}`, { runnerId }),\n commandSent: (runnerId, commandType, traceAttached) => this.log(\"debug\", \"websocket\", `Sent command to runner: ${commandType}`, {\n runnerId,\n commandType,\n traceAttached\n }),\n eventReceived: (runnerId, eventType) => this.log(\"debug\", \"websocket\", `Received event from runner: ${eventType}`, {\n runnerId,\n eventType\n }),\n broadcastToolCall: (toolName, toolState, subscriberCount) => this.log(\"info\", \"websocket\", `Broadcasting planning tool: ${toolName} (state=${toolState})`, {\n toolName,\n toolState,\n subscriberCount\n }),\n broadcastBuildComplete: (projectId, sessionId, subscriberCount) => this.log(\"info\", \"websocket\", `Broadcasting build-complete`, {\n projectId,\n sessionId,\n subscriberCount\n }),\n unknownUpgradePath: (pathname) => this.log(\"warn\", \"websocket\", `Unknown upgrade path: ${pathname}`, { pathname }),\n shutdown: () => this.log(\"info\", \"websocket\", `Shutting down server...`),\n shutdownComplete: () => this.log(\"info\", \"websocket\", `Server shut down`),\n error: (message, error, context) => this.log(\"error\", \"websocket\", message, {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : void 0,\n ...context\n })\n };\n /**\n * Port allocator-specific logging methods\n */\n portAllocator = {\n portAllocated: (port, projectId) => this.log(\"info\", \"port-allocator\", `Port allocated: ${port}`, { port, projectId }),\n portReleased: (port, projectId) => this.log(\"info\", \"port-allocator\", `Port released: ${port}`, { port, projectId }),\n portInUse: (port) => this.log(\"warn\", \"port-allocator\", `Port ${port} is already in use`, { port }),\n portRangeExhausted: (minPort, maxPort) => this.log(\"error\", \"port-allocator\", `No available ports in range ${minPort}-${maxPort}`, {\n minPort,\n maxPort\n }),\n portConflict: (port, projectId, existingProjectId) => this.log(\"warn\", \"port-allocator\", `Port ${port} conflict detected`, {\n port,\n projectId,\n existingProjectId\n }),\n allocationsCleared: (count) => this.log(\"info\", \"port-allocator\", `Cleared ${count} port allocations`, { count }),\n error: (message, error, context) => this.log(\"error\", \"port-allocator\", message, {\n error: error instanceof Error ? error.message : String(error),\n ...context\n })\n };\n /**\n * Process manager-specific logging methods\n */\n processManager = {\n processStarting: (projectId, command, cwd) => this.log(\"info\", \"process-manager\", `Starting process: ${command}`, {\n projectId,\n command,\n cwd\n }),\n processStarted: (projectId, pid) => this.log(\"info\", \"process-manager\", `Process started`, { projectId, pid }),\n processOutput: (projectId, output) => this.log(\"debug\", \"process-manager\", `Process output: ${output.substring(0, 100)}`, {\n projectId,\n outputLength: output.length\n }),\n processError: (projectId, error) => this.log(\"error\", \"process-manager\", `Process error: ${error}`, { projectId, error }),\n processExited: (projectId, code, signal) => this.log(\"info\", \"process-manager\", `Process exited`, { projectId, code, signal }),\n processStopped: (projectId) => this.log(\"info\", \"process-manager\", `Process stopped`, { projectId }),\n processNotFound: (projectId) => this.log(\"warn\", \"process-manager\", `Process not found for project: ${projectId}`, { projectId }),\n processKilled: (projectId, signal) => this.log(\"info\", \"process-manager\", `Process killed with signal: ${signal}`, {\n projectId,\n signal\n }),\n processCleanup: (projectId) => this.log(\"info\", \"process-manager\", `Cleaning up process`, { projectId }),\n processListRetrieved: (count) => this.log(\"debug\", \"process-manager\", `Retrieved ${count} running processes`, { count }),\n error: (message, error, context) => this.log(\"error\", \"process-manager\", message, {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : void 0,\n ...context\n })\n };\n /**\n * Build events-specific logging methods\n */\n buildEvents = {\n eventReceived: (eventType, projectId, sessionId) => this.log(\"info\", \"build-events\", `Received event: ${eventType}`, {\n eventType,\n projectId,\n sessionId\n }),\n eventProcessed: (eventType, projectId) => this.log(\"debug\", \"build-events\", `Processed event: ${eventType}`, { eventType, projectId }),\n buildStarted: (projectId, sessionId) => this.log(\"info\", \"build-events\", `Build started`, { projectId, sessionId }),\n buildCompleted: (projectId, sessionId, success) => this.log(\"info\", \"build-events\", `Build ${success ? \"completed\" : \"failed\"}`, {\n projectId,\n sessionId,\n success\n }),\n portDetected: (projectId, port) => this.log(\"info\", \"build-events\", `Port detected: ${port}`, { projectId, port }),\n devServerStarted: (projectId, port, url) => this.log(\"info\", \"build-events\", `Dev server started: ${url}`, { projectId, port, url }),\n devServerError: (projectId, error) => this.log(\"error\", \"build-events\", `Dev server error: ${error}`, { projectId, error }),\n toolCallReceived: (toolName, toolId) => this.log(\"debug\", \"build-events\", `Tool call: ${toolName}`, { toolName, toolId }),\n logChunkReceived: (projectId, chunkSize) => this.log(\"debug\", \"build-events\", `Log chunk received`, { projectId, chunkSize }),\n invalidEvent: (reason) => this.log(\"warn\", \"build-events\", `Invalid event: ${reason}`, { reason }),\n error: (message, error, context) => this.log(\"error\", \"build-events\", message, {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : void 0,\n ...context\n })\n };\n};\nvar buildLogger = new BuildLogger();\n\n// src/lib/port-allocator.ts\nvar FRAMEWORK_RANGES = {\n next: { start: 3101, end: 3200 },\n node: { start: 3101, end: 3200 },\n tanstack: { start: 3101, end: 3200 },\n astro: { start: 4321, end: 4421 },\n vite: { start: 5173, end: 5273 },\n default: { start: 6e3, end: 6100 }\n};\nvar FRAMEWORK_ENV_MAP = {\n next: [\"PORT\", \"NEXT_PUBLIC_PORT\"],\n node: [\"PORT\"],\n tanstack: [\"PORT\", \"VITE_PORT\"],\n astro: [\"PORT\", \"ASTRO_PORT\"],\n vite: [\"PORT\", \"VITE_PORT\"],\n default: [\"PORT\"]\n};\nasync function detectFrameworkFromFilesystem(projectPath) {\n try {\n let cachedPkg = null;\n const loadPackageJson = async () => {\n if (cachedPkg) return cachedPkg;\n const pkgPath = join(projectPath, \"package.json\");\n if (!existsSync(pkgPath)) {\n cachedPkg = null;\n return cachedPkg;\n }\n const pkgContent = await readFile(pkgPath, \"utf-8\");\n const pkg2 = JSON.parse(pkgContent);\n cachedPkg = {\n deps: { ...pkg2.dependencies ?? {}, ...pkg2.peerDependencies ?? {} },\n devDeps: pkg2.devDependencies ?? {},\n devScript: pkg2.scripts?.dev?.toLowerCase() ?? \"\"\n };\n return cachedPkg;\n };\n const hasTanStackDependency = async () => {\n const pkg2 = await loadPackageJson();\n if (!pkg2) return false;\n const combined = { ...pkg2.deps, ...pkg2.devDeps };\n if (combined[\"@tanstack/react-start\"]) return true;\n if (pkg2.devScript.includes(\"tanstack\")) return true;\n return false;\n };\n if (existsSync(join(projectPath, \"astro.config.mjs\")) || existsSync(join(projectPath, \"astro.config.ts\")) || existsSync(join(projectPath, \"astro.config.js\"))) {\n return \"astro\";\n }\n if (existsSync(join(projectPath, \"next.config.ts\")) || existsSync(join(projectPath, \"next.config.js\")) || existsSync(join(projectPath, \"next.config.mjs\"))) {\n return \"next\";\n }\n if (existsSync(join(projectPath, \"vite.config.ts\")) || existsSync(join(projectPath, \"vite.config.js\"))) {\n if (await hasTanStackDependency()) {\n return \"tanstack\";\n }\n return \"vite\";\n }\n const pkg = await loadPackageJson();\n if (pkg) {\n const allDeps = { ...pkg.deps, ...pkg.devDeps };\n if (allDeps[\"astro\"]) return \"astro\";\n if (allDeps[\"@tanstack/react-start\"]) return \"tanstack\";\n if (allDeps[\"next\"]) return \"next\";\n if (allDeps[\"vite\"]) return \"vite\";\n if (pkg.devScript.includes(\"tanstack\")) return \"tanstack\";\n if (pkg.devScript.includes(\"astro\")) return \"astro\";\n if (pkg.devScript.includes(\"next\")) return \"next\";\n if (pkg.devScript.includes(\"vite\")) return \"vite\";\n }\n } catch (error) {\n buildLogger.portAllocator.error(\"Failed to detect framework from filesystem\", error);\n }\n return null;\n}\nasync function resolveFramework(projectType, runCommand, savedFramework) {\n if (savedFramework) {\n const framework = toFrameworkKey(savedFramework);\n buildLogger.log(\"info\", \"port-allocator\", `Using saved framework (locked): ${framework}`, {\n savedFramework,\n projectType,\n runCommand\n });\n return framework;\n }\n buildLogger.log(\"warn\", \"port-allocator\", \"No saved framework found, falling back to detection (may cause port drift)\", {\n projectType,\n runCommand\n });\n const normalizedType = projectType?.toLowerCase() ?? \"\";\n if (normalizedType.includes(\"tanstack\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from projectType: tanstack\", { projectType });\n return \"tanstack\";\n }\n if (normalizedType.includes(\"vite\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from projectType: vite\", { projectType });\n return \"vite\";\n }\n if (normalizedType.includes(\"astro\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from projectType: astro\", { projectType });\n return \"astro\";\n }\n if (normalizedType.includes(\"next\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from projectType: next\", { projectType });\n return \"next\";\n }\n if (normalizedType.includes(\"node\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from projectType: node\", { projectType });\n return \"node\";\n }\n const normalizedCommand = runCommand?.toLowerCase() ?? \"\";\n if (normalizedCommand.includes(\"vite\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from runCommand: vite\", { runCommand });\n return \"vite\";\n }\n if (normalizedCommand.includes(\"astro\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from runCommand: astro\", { runCommand });\n return \"astro\";\n }\n if (normalizedCommand.includes(\"tanstack\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from runCommand: tanstack\", { runCommand });\n return \"tanstack\";\n }\n if (normalizedCommand.includes(\"next\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from runCommand: next\", { runCommand });\n return \"next\";\n }\n buildLogger.log(\"warn\", \"port-allocator\", \"No framework detected, using default (port 6000+)\", {\n projectType,\n runCommand\n });\n return \"default\";\n}\nfunction toFrameworkKey(value) {\n switch (value) {\n case \"next\":\n case \"astro\":\n case \"vite\":\n case \"tanstack\":\n case \"node\":\n return value;\n default:\n return \"default\";\n }\n}\nasync function reservePortForProject(params) {\n const framework = await resolveFramework(params.projectType, params.runCommand, params.detectedFramework);\n const range = FRAMEWORK_RANGES[framework];\n const preferred = params.preferredPort ?? void 0;\n return db.transaction(async (tx) => {\n await tx.update(portAllocations).set({ projectId: null, reservedAt: null }).where(eq(portAllocations.projectId, params.projectId)).execute();\n const now = /* @__PURE__ */ new Date();\n const tryReservePort = async (port) => {\n if (port < range.start || port > range.end) {\n return null;\n }\n const existing = await tx.select().from(portAllocations).where(eq(portAllocations.port, port)).limit(1).execute();\n if (existing.length === 0) {\n await tx.insert(portAllocations).values({\n port,\n framework,\n projectId: params.projectId,\n reservedAt: now\n }).execute();\n return port;\n }\n if (existing[0].projectId === null) {\n await tx.update(portAllocations).set({ projectId: params.projectId, reservedAt: now }).where(eq(portAllocations.port, port)).execute();\n return port;\n }\n return null;\n };\n if (preferred) {\n const reserved = await tryReservePort(preferred);\n if (reserved !== null) {\n return { port: reserved, framework };\n }\n }\n const reusable = await tx.select().from(portAllocations).where(and(eq(portAllocations.framework, framework), isNull(portAllocations.projectId))).orderBy(portAllocations.port).limit(1).execute();\n if (reusable.length > 0) {\n await tx.update(portAllocations).set({ projectId: params.projectId, reservedAt: now }).where(eq(portAllocations.port, reusable[0].port)).execute();\n return { port: reusable[0].port, framework };\n }\n const rows = await tx.select({\n maxPort: sql2`COALESCE(MAX(${portAllocations.port}), ${range.start - 1})`\n }).from(portAllocations).where(eq(portAllocations.framework, framework)).execute();\n const maxPort = rows[0]?.maxPort ?? range.start - 1;\n const nextPort = Math.max(range.start, maxPort + 1);\n if (nextPort > range.end) {\n throw new Error(`No available ports remaining for framework \"${framework}\" (${range.start}-${range.end}).`);\n }\n await tx.insert(portAllocations).values({\n port: nextPort,\n framework,\n projectId: params.projectId,\n reservedAt: now\n }).execute();\n return { port: nextPort, framework };\n });\n}\nasync function updatePortReservationForProject(projectId, actualPort) {\n await db.transaction(async (tx) => {\n const rows = await tx.select().from(portAllocations).where(eq(portAllocations.projectId, projectId)).limit(1).execute();\n if (rows.length === 0) {\n return;\n }\n const current = rows[0];\n if (current.port === actualPort) {\n return;\n }\n const frameworkKey = toFrameworkKey(current.framework);\n const range = FRAMEWORK_RANGES[frameworkKey] ?? FRAMEWORK_RANGES.default;\n if (actualPort < range.start || actualPort > range.end) {\n return;\n }\n const occupying = await tx.select().from(portAllocations).where(eq(portAllocations.port, actualPort)).limit(1).execute();\n if (occupying.length > 0 && occupying[0].projectId !== null && occupying[0].projectId !== projectId) {\n return;\n }\n await tx.delete(portAllocations).where(eq(portAllocations.port, current.port)).execute();\n const now = /* @__PURE__ */ new Date();\n if (occupying.length > 0) {\n await tx.update(portAllocations).set({ projectId, reservedAt: now }).where(eq(portAllocations.port, actualPort)).execute();\n } else {\n await tx.insert(portAllocations).values({\n port: actualPort,\n framework: current.framework,\n projectId,\n reservedAt: now\n }).execute();\n }\n });\n}\nasync function releasePortForProject(projectId) {\n await db.update(portAllocations).set({ projectId: null, reservedAt: null }).where(eq(portAllocations.projectId, projectId)).execute();\n}\nfunction buildEnvForFramework(framework, port) {\n const envKeys = FRAMEWORK_ENV_MAP[framework] ?? FRAMEWORK_ENV_MAP.default;\n const env = {};\n envKeys.forEach((key) => {\n env[key] = String(port);\n });\n env.DEV_SERVER_PORT = String(port);\n return env;\n}\nfunction getRunCommand(baseCommand) {\n if (!baseCommand || !baseCommand.trim()) {\n return \"npm run dev\";\n }\n return baseCommand;\n}\nasync function checkPortAvailability(port) {\n const localhostAvailable = await checkSingleInterface(port, \"localhost\");\n if (!localhostAvailable) {\n return false;\n }\n const allInterfacesAvailable = await checkSingleInterface(port, \"0.0.0.0\");\n return allInterfacesAvailable;\n}\nfunction checkSingleInterface(port, host) {\n return new Promise((resolve) => {\n const server = createServer();\n server.once(\"error\", (err) => {\n if (err.code === \"EADDRINUSE\") {\n resolve(false);\n } else {\n resolve(false);\n }\n });\n server.once(\"listening\", () => {\n server.close(() => {\n resolve(true);\n });\n });\n server.listen(port, host);\n });\n}\nasync function findAvailablePortInRange(range, preferredStart) {\n const scanStart = preferredStart && preferredStart >= range.start && preferredStart <= range.end ? preferredStart : range.start;\n buildLogger.log(\"debug\", \"port-allocator\", `Scanning for available port in range ${range.start}-${range.end}`, {\n scanStart,\n rangeStart: range.start,\n rangeEnd: range.end\n });\n for (let port = scanStart; port <= range.end; port++) {\n const isAvailable = await checkPortAvailability(port);\n if (isAvailable) {\n buildLogger.log(\"debug\", \"port-allocator\", `Found available port: ${port}`, { port });\n return port;\n }\n buildLogger.log(\"debug\", \"port-allocator\", `Port ${port} in use`, { port });\n }\n if (scanStart > range.start) {\n buildLogger.log(\"debug\", \"port-allocator\", `Wrapping around to scan ${range.start}-${scanStart - 1}`, {\n rangeStart: range.start,\n scanStart: scanStart - 1\n });\n for (let port = range.start; port < scanStart; port++) {\n const isAvailable = await checkPortAvailability(port);\n if (isAvailable) {\n buildLogger.log(\"debug\", \"port-allocator\", `Found available port: ${port}`, { port });\n return port;\n }\n buildLogger.log(\"debug\", \"port-allocator\", `Port ${port} in use`, { port });\n }\n }\n buildLogger.portAllocator.portRangeExhausted(range.start, range.end);\n return null;\n}\nasync function getPortForProject(projectId) {\n const rows = await db.select().from(portAllocations).where(eq(portAllocations.projectId, projectId)).limit(1).execute();\n if (rows.length === 0) {\n return null;\n }\n const allocation = rows[0];\n return {\n port: allocation.port,\n framework: toFrameworkKey(allocation.framework)\n };\n}\nasync function reserveOrReallocatePort(params, skipPortCheck = false) {\n const framework = await resolveFramework(params.projectType, params.runCommand, params.detectedFramework);\n const range = FRAMEWORK_RANGES[framework];\n buildLogger.log(\"info\", \"port-allocator\", `Allocating port for project ${params.projectId}`, {\n projectId: params.projectId,\n framework,\n rangeStart: range.start,\n rangeEnd: range.end,\n skipPortCheck\n });\n const existing = await getPortForProject(params.projectId);\n if (existing) {\n const withinRange = existing.port >= range.start && existing.port <= range.end;\n const sameFramework = existing.framework === framework;\n buildLogger.log(\"debug\", \"port-allocator\", `Found existing allocation: port ${existing.port}`, {\n port: existing.port,\n framework: existing.framework,\n projectId: params.projectId\n });\n if (!withinRange) {\n buildLogger.log(\"warn\", \"port-allocator\", `Port ${existing.port} outside valid range ${range.start}-${range.end}, will reallocate`, {\n port: existing.port,\n rangeStart: range.start,\n rangeEnd: range.end,\n projectId: params.projectId\n });\n await releasePortForProject(params.projectId);\n } else if (!sameFramework) {\n buildLogger.log(\"warn\", \"port-allocator\", `Framework mismatch (${existing.framework} \\u2192 ${framework}), will reallocate`, {\n oldFramework: existing.framework,\n newFramework: framework,\n projectId: params.projectId\n });\n await releasePortForProject(params.projectId);\n } else {\n if (skipPortCheck) {\n buildLogger.log(\"info\", \"port-allocator\", `Reusing port ${existing.port} (skipPortCheck=true)`, {\n port: existing.port,\n projectId: params.projectId\n });\n await db.update(portAllocations).set({ reservedAt: /* @__PURE__ */ new Date() }).where(eq(portAllocations.projectId, params.projectId)).execute();\n return existing;\n }\n const isAvailable = await checkPortAvailability(existing.port);\n if (isAvailable) {\n buildLogger.portAllocator.portAllocated(existing.port, params.projectId);\n await db.update(portAllocations).set({ reservedAt: /* @__PURE__ */ new Date() }).where(eq(portAllocations.projectId, params.projectId)).execute();\n return existing;\n }\n buildLogger.portAllocator.portInUse(existing.port);\n await releasePortForProject(params.projectId);\n }\n }\n let availablePort = null;\n if (skipPortCheck) {\n buildLogger.log(\"info\", \"port-allocator\", \"Remote runner mode: using DB allocation without OS check\", {\n projectId: params.projectId\n });\n try {\n const allocation = await reservePortForProject({\n ...params,\n detectedFramework: params.detectedFramework ?? framework\n });\n availablePort = allocation.port;\n buildLogger.log(\"info\", \"port-allocator\", `Allocated port ${availablePort} from DB`, {\n port: availablePort,\n projectId: params.projectId\n });\n } catch (error) {\n throw new Error(`Unable to allocate port for remote runner: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n }\n } else {\n buildLogger.log(\"info\", \"port-allocator\", \"Local runner mode: scanning OS for available port\", {\n projectId: params.projectId,\n preferredPort: params.preferredPort\n });\n availablePort = await findAvailablePortInRange(range, params.preferredPort ?? void 0);\n if (!availablePort) {\n throw new Error(\n `All ports in range ${range.start}-${range.end} are in use. Please stop other dev servers or free up ports.`\n );\n }\n }\n buildLogger.log(\"debug\", \"port-allocator\", `Reserving port ${availablePort} in database`, {\n port: availablePort,\n projectId: params.projectId\n });\n await db.transaction(async (tx) => {\n await tx.update(portAllocations).set({ projectId: null, reservedAt: null }).where(eq(portAllocations.projectId, params.projectId)).execute();\n const existingPort = await tx.select().from(portAllocations).where(eq(portAllocations.port, availablePort)).limit(1).execute();\n const now = /* @__PURE__ */ new Date();\n if (existingPort.length === 0) {\n await tx.insert(portAllocations).values({\n port: availablePort,\n framework,\n projectId: params.projectId,\n reservedAt: now\n }).execute();\n } else {\n await tx.update(portAllocations).set({ projectId: params.projectId, framework, reservedAt: now }).where(eq(portAllocations.port, availablePort)).execute();\n }\n });\n buildLogger.portAllocator.portAllocated(availablePort, params.projectId);\n return { port: availablePort, framework };\n}\nasync function cleanupAbandonedPorts() {\n const threshold = new Date(Date.now() - 7 * 24 * 60 * 60 * 1e3);\n const result = await db.update(portAllocations).set({ projectId: null, reservedAt: null }).where(and(\n isNotNull(portAllocations.projectId),\n lt(portAllocations.reservedAt, threshold)\n )).returning();\n const cleanedCount = result.length;\n if (cleanedCount > 0) {\n buildLogger.portAllocator.allocationsCleared(cleanedCount);\n }\n return cleanedCount;\n}\nexport {\n buildEnvForFramework,\n checkPortAvailability,\n cleanupAbandonedPorts,\n detectFrameworkFromFilesystem,\n getPortForProject,\n getRunCommand,\n releasePortForProject,\n reserveOrReallocatePort,\n reservePortForProject,\n updatePortReservationForProject\n};\n//# sourceMappingURL=port-allocator.js.map"],"names":["Sentry.addBreadcrumb"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"port-allocator-DuAZe2_S.js","sources":["../../../../packages/agent-core/dist/lib/port-allocator.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/lib/db/client.ts\nimport { drizzle } from \"drizzle-orm/node-postgres\";\nimport pg from \"pg\";\n\n// src/lib/db/schema.ts\nvar schema_exports = {};\n__export(schema_exports, {\n accounts: () => accounts,\n cliAuthSessions: () => cliAuthSessions,\n generationNotes: () => generationNotes,\n generationSessions: () => generationSessions,\n generationTodos: () => generationTodos,\n generationToolCalls: () => generationToolCalls,\n messages: () => messages,\n portAllocations: () => portAllocations,\n projects: () => projects,\n runnerKeys: () => runnerKeys,\n runningProcesses: () => runningProcesses,\n serverOperations: () => serverOperations,\n sessions: () => sessions,\n users: () => users,\n verifications: () => verifications\n});\nimport { pgTable, text, integer, timestamp, uuid, jsonb, index, uniqueIndex, boolean } from \"drizzle-orm/pg-core\";\nimport { sql } from \"drizzle-orm\";\nvar users = pgTable(\"users\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n name: text(\"name\").notNull(),\n email: text(\"email\").notNull().unique(),\n emailVerified: boolean(\"email_verified\").notNull().default(false),\n image: text(\"image\"),\n hasCompletedOnboarding: boolean(\"has_completed_onboarding\").notNull().default(false),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n});\nvar sessions = pgTable(\"sessions\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\").notNull().references(() => users.id, { onDelete: \"cascade\" }),\n token: text(\"token\").notNull().unique(),\n expiresAt: timestamp(\"expires_at\").notNull(),\n ipAddress: text(\"ip_address\"),\n userAgent: text(\"user_agent\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n userIdIdx: index(\"sessions_user_id_idx\").on(table.userId),\n tokenIdx: index(\"sessions_token_idx\").on(table.token)\n}));\nvar accounts = pgTable(\"accounts\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\").notNull().references(() => users.id, { onDelete: \"cascade\" }),\n accountId: text(\"account_id\").notNull(),\n providerId: text(\"provider_id\").notNull(),\n // 'credential', 'google', etc.\n accessToken: text(\"access_token\"),\n refreshToken: text(\"refresh_token\"),\n accessTokenExpiresAt: timestamp(\"access_token_expires_at\"),\n refreshTokenExpiresAt: timestamp(\"refresh_token_expires_at\"),\n scope: text(\"scope\"),\n idToken: text(\"id_token\"),\n // ID token from OAuth providers\n password: text(\"password\"),\n // Hashed password for credential provider\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n userIdIdx: index(\"accounts_user_id_idx\").on(table.userId),\n providerAccountIdx: uniqueIndex(\"accounts_provider_account_idx\").on(table.providerId, table.accountId)\n}));\nvar verifications = pgTable(\"verifications\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n identifier: text(\"identifier\").notNull(),\n // email or other identifier\n value: text(\"value\").notNull(),\n // verification token\n expiresAt: timestamp(\"expires_at\").notNull(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n identifierIdx: index(\"verifications_identifier_idx\").on(table.identifier)\n}));\nvar runnerKeys = pgTable(\"runner_keys\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\").notNull().references(() => users.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n // User-friendly name like \"My MacBook\"\n keyHash: text(\"key_hash\").notNull(),\n // SHA-256 hash of the full key\n keyPrefix: text(\"key_prefix\").notNull(),\n // First 8 chars for display: \"sv_abc123...\"\n source: text(\"source\").default(\"web\"),\n // 'web' | 'cli' - how the key was created\n lastUsedAt: timestamp(\"last_used_at\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n revokedAt: timestamp(\"revoked_at\")\n // Soft delete - null means active\n}, (table) => ({\n userIdIdx: index(\"runner_keys_user_id_idx\").on(table.userId),\n keyHashIdx: uniqueIndex(\"runner_keys_key_hash_idx\").on(table.keyHash)\n}));\nvar cliAuthSessions = pgTable(\"cli_auth_sessions\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n token: text(\"token\").notNull().unique(),\n // Random token for session identification\n callbackPort: integer(\"callback_port\").notNull(),\n // Port the CLI is listening on\n callbackHost: text(\"callback_host\").default(\"localhost\"),\n // Host for callback\n state: text(\"state\").notNull().default(\"pending\"),\n // 'pending' | 'authenticated' | 'completed' | 'expired'\n userId: uuid(\"user_id\").references(() => users.id, { onDelete: \"cascade\" }),\n // Set after auth\n runnerKeyId: uuid(\"runner_key_id\").references(() => runnerKeys.id, { onDelete: \"cascade\" }),\n // Created key\n deviceName: text(\"device_name\"),\n // Auto-detected device name\n expiresAt: timestamp(\"expires_at\").notNull(),\n // Session expiration (short-lived)\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n authenticatedAt: timestamp(\"authenticated_at\")\n // When user completed OAuth\n}, (table) => ({\n tokenIdx: uniqueIndex(\"cli_auth_sessions_token_idx\").on(table.token),\n expiresAtIdx: index(\"cli_auth_sessions_expires_at_idx\").on(table.expiresAt)\n}));\nvar projects = pgTable(\"projects\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: uuid(\"user_id\").references(() => users.id, { onDelete: \"set null\" }),\n // Owner of the project (nullable for migration/local mode)\n name: text(\"name\").notNull(),\n slug: text(\"slug\").notNull().unique(),\n description: text(\"description\"),\n originalPrompt: text(\"original_prompt\"),\n icon: text(\"icon\").default(\"Folder\"),\n status: text(\"status\").notNull().default(\"pending\"),\n projectType: text(\"project_type\"),\n detectedFramework: text(\"detected_framework\"),\n // Auto-detected framework (astro, next, vite, etc.)\n path: text(\"path\"),\n // Nullable - deprecated, path should be calculated from slug\n runCommand: text(\"run_command\"),\n port: integer(\"port\"),\n devServerPid: integer(\"dev_server_pid\"),\n devServerPort: integer(\"dev_server_port\"),\n devServerStatus: text(\"dev_server_status\").default(\"stopped\"),\n devServerStatusUpdatedAt: timestamp(\"dev_server_status_updated_at\").defaultNow(),\n tunnelUrl: text(\"tunnel_url\"),\n runnerId: text(\"runner_id\"),\n // Runner that created/manages this project\n generationState: text(\"generation_state\"),\n designPreferences: jsonb(\"design_preferences\"),\n // User-specified design constraints (deprecated - use tags)\n tags: jsonb(\"tags\"),\n // Tag-based configuration system\n lastActivityAt: timestamp(\"last_activity_at\").defaultNow(),\n errorMessage: text(\"error_message\"),\n // GitHub integration fields\n githubRepo: text(\"github_repo\"),\n // e.g., \"owner/repo-name\"\n githubUrl: text(\"github_url\"),\n // Full repository URL\n githubBranch: text(\"github_branch\"),\n // Default branch (e.g., \"main\")\n githubLastPushedAt: timestamp(\"github_last_pushed_at\"),\n // Last push timestamp\n githubAutoPush: boolean(\"github_auto_push\").default(false),\n // Auto-push after builds\n githubLastSyncAt: timestamp(\"github_last_sync_at\"),\n // Last time we synced repo info\n githubMeta: jsonb(\"github_meta\"),\n // Additional metadata (issues count, recent commits, etc.)\n // NeonDB integration fields\n neondbConnectionString: text(\"neondb_connection_string\"),\n // DATABASE_URL (encrypted/partial)\n neondbClaimUrl: text(\"neondb_claim_url\"),\n // URL to claim the database\n neondbHost: text(\"neondb_host\"),\n // Database host endpoint\n neondbDatabase: text(\"neondb_database\"),\n // Database name\n neondbCreatedAt: timestamp(\"neondb_created_at\"),\n // When database was provisioned\n neondbExpiresAt: timestamp(\"neondb_expires_at\"),\n // When unclaimed DB expires (72 hours)\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n // Indexes for performance\n userIdIdx: index(\"projects_user_id_idx\").on(table.userId),\n runnerIdIdx: index(\"projects_runner_id_idx\").on(table.runnerId),\n statusIdx: index(\"projects_status_idx\").on(table.status),\n lastActivityIdx: index(\"projects_last_activity_idx\").on(table.lastActivityAt)\n}));\nvar messages = pgTable(\"messages\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n projectId: uuid(\"project_id\").notNull().references(() => projects.id, { onDelete: \"cascade\" }),\n role: text(\"role\").notNull(),\n content: text(\"content\").notNull(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow()\n});\nvar portAllocations = pgTable(\"port_allocations\", {\n port: integer(\"port\").primaryKey(),\n framework: text(\"framework\").notNull(),\n projectId: uuid(\"project_id\").references(() => projects.id, { onDelete: \"set null\" }),\n reservedAt: timestamp(\"reserved_at\").defaultNow()\n});\nvar runningProcesses = pgTable(\"running_processes\", {\n projectId: uuid(\"project_id\").primaryKey().notNull().references(() => projects.id, { onDelete: \"cascade\" }),\n pid: integer(\"pid\").notNull(),\n port: integer(\"port\"),\n command: text(\"command\"),\n runnerId: text(\"runner_id\"),\n // Runner that manages this process\n startedAt: timestamp(\"started_at\").notNull().defaultNow(),\n lastHealthCheck: timestamp(\"last_health_check\"),\n healthCheckFailCount: integer(\"health_check_fail_count\").notNull().default(0)\n}, (table) => ({\n // Index for filtering by runner\n runnerIdIdx: index(\"running_processes_runner_id_idx\").on(table.runnerId)\n}));\nvar generationSessions = pgTable(\"generation_sessions\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n projectId: uuid(\"project_id\").notNull().references(() => projects.id, { onDelete: \"cascade\" }),\n buildId: text(\"build_id\").notNull(),\n operationType: text(\"operation_type\"),\n status: text(\"status\").notNull().default(\"active\"),\n startedAt: timestamp(\"started_at\").notNull().defaultNow(),\n endedAt: timestamp(\"ended_at\"),\n summary: text(\"summary\"),\n rawState: jsonb(\"raw_state\"),\n isAutoFix: boolean(\"is_auto_fix\").default(false),\n // Flag for auto-fix sessions triggered by startup errors\n autoFixError: text(\"auto_fix_error\"),\n // The error message that triggered the auto-fix\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n projectIdIdx: index(\"generation_sessions_project_id_idx\").on(table.projectId),\n buildIdUnique: uniqueIndex(\"generation_sessions_build_id_unique\").on(table.buildId)\n}));\nvar generationTodos = pgTable(\"generation_todos\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n sessionId: uuid(\"session_id\").notNull().references(() => generationSessions.id, { onDelete: \"cascade\" }),\n todoIndex: integer(\"todo_index\").notNull(),\n content: text(\"content\").notNull(),\n activeForm: text(\"active_form\"),\n status: text(\"status\").notNull(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n sessionIdIdx: index(\"generation_todos_session_id_idx\").on(table.sessionId),\n sessionIndexUnique: uniqueIndex(\"generation_todos_session_index_unique\").on(table.sessionId, table.todoIndex)\n}));\nvar generationToolCalls = pgTable(\"generation_tool_calls\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n sessionId: uuid(\"session_id\").notNull().references(() => generationSessions.id, { onDelete: \"cascade\" }),\n todoIndex: integer(\"todo_index\").notNull(),\n toolCallId: text(\"tool_call_id\").notNull(),\n name: text(\"name\").notNull(),\n input: jsonb(\"input\"),\n output: jsonb(\"output\"),\n state: text(\"state\").notNull(),\n startedAt: timestamp(\"started_at\").notNull().defaultNow(),\n endedAt: timestamp(\"ended_at\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow()\n}, (table) => ({\n sessionIdIdx: index(\"generation_tool_calls_session_id_idx\").on(table.sessionId),\n toolCallUnique: uniqueIndex(\"generation_tool_calls_call_id_unique\").on(table.sessionId, table.toolCallId)\n}));\nvar generationNotes = pgTable(\"generation_notes\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n sessionId: uuid(\"session_id\").notNull().references(() => generationSessions.id, { onDelete: \"cascade\" }),\n todoIndex: integer(\"todo_index\").notNull(),\n textId: text(\"text_id\"),\n kind: text(\"kind\").notNull().default(\"text\"),\n content: text(\"content\").notNull(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow()\n}, (table) => ({\n sessionIdIdx: index(\"generation_notes_session_id_idx\").on(table.sessionId),\n textIdUnique: uniqueIndex(\"generation_notes_text_id_unique\").on(table.sessionId, table.textId).where(sql`${table.textId} is not null`)\n}));\nvar serverOperations = pgTable(\"server_operations\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n projectId: uuid(\"project_id\").notNull().references(() => projects.id, { onDelete: \"cascade\" }),\n operation: text(\"operation\").notNull(),\n // 'start', 'stop', 'restart'\n status: text(\"status\").notNull().default(\"pending\"),\n // 'pending', 'sent', 'ack', 'completed', 'failed', 'timeout'\n runnerId: text(\"runner_id\"),\n port: integer(\"port\"),\n pid: integer(\"pid\"),\n error: text(\"error\"),\n failureReason: text(\"failure_reason\"),\n // 'port_in_use', 'health_check_timeout', 'immediate_crash', etc.\n retryCount: integer(\"retry_count\").notNull().default(0),\n metadata: jsonb(\"metadata\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n sentAt: timestamp(\"sent_at\"),\n ackAt: timestamp(\"ack_at\"),\n completedAt: timestamp(\"completed_at\")\n}, (table) => ({\n projectIdIdx: index(\"server_operations_project_id_idx\").on(table.projectId),\n statusIdx: index(\"server_operations_status_idx\").on(table.status),\n createdAtIdx: index(\"server_operations_created_at_idx\").on(table.createdAt)\n}));\n\n// src/lib/db/client.ts\nvar { Pool } = pg;\nfunction createPostgresClient() {\n const connectionString = process.env.DATABASE_URL;\n if (!connectionString) {\n throw new Error(\n 'DATABASE_URL is not set. Please configure your database connection:\\n - Run \"openbuilder init\" to set up a Neon database\\n - Or set DATABASE_URL environment variable to your PostgreSQL connection string'\n );\n }\n const pool = new Pool({\n connectionString,\n ssl: process.env.PGSSLMODE === \"disable\" ? false : { rejectUnauthorized: false }\n });\n const client = drizzle(pool, { schema: schema_exports });\n return client;\n}\nvar db = new Proxy({}, {\n get(_target, prop) {\n if (!global.__db) {\n global.__db = createPostgresClient();\n }\n return global.__db[prop];\n }\n});\n\n// src/lib/port-allocator.ts\nimport { and, eq, isNull, sql as sql2, isNotNull, lt } from \"drizzle-orm\";\nimport { createServer } from \"net\";\nimport { readFile } from \"fs/promises\";\nimport { existsSync } from \"fs\";\nimport { join } from \"path\";\n\n// src/lib/logging/build-logger.ts\nimport * as Sentry from \"@sentry/node\";\nvar BuildLogger = class {\n buildId = null;\n projectId = null;\n /**\n * Set correlation IDs for the current build\n * Call this at the start of each build to enable correlation tracking\n */\n setBuildContext(buildId, projectId) {\n this.buildId = buildId;\n this.projectId = projectId;\n this.log(\"debug\", \"runner\", `Build context set: ${buildId} / ${projectId}`);\n }\n /**\n * Clear correlation IDs after build completes\n */\n clearBuildContext() {\n this.log(\"debug\", \"runner\", \"Build context cleared\");\n this.buildId = null;\n this.projectId = null;\n }\n /**\n * Core logging method - creates structured log entries\n * Public for custom logging needs\n */\n log(level, context, message, data) {\n if (process.env.SILENT_MODE === \"1\") {\n return;\n }\n if (level === \"info\" || level === \"debug\") {\n if (process.env.DEBUG_BUILD === \"0\") {\n return;\n }\n }\n const entry = {\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n level,\n context,\n buildId: this.buildId ?? void 0,\n projectId: this.projectId ?? void 0,\n message,\n data\n };\n const prefix = `[${context}]`;\n const icon = {\n debug: \"\\u{1F50D}\",\n info: \"\\u{1F4CB}\",\n warn: \"\\u26A0\\uFE0F \",\n error: \"\\u274C\"\n }[level];\n const logFn = level === \"error\" ? console.error : level === \"warn\" ? console.warn : console.log;\n if (data && Object.keys(data).length > 0) {\n logFn(`${icon} ${prefix} ${message}`, data);\n } else {\n logFn(`${icon} ${prefix} ${message}`);\n }\n if (typeof process !== \"undefined\" && process.env.NODE_ENV !== \"test\") {\n try {\n if (level === \"warn\" || level === \"error\") {\n Sentry.addBreadcrumb({\n category: `build-logger.${context}`,\n message,\n level: level === \"error\" ? \"error\" : \"warning\",\n data: {\n ...data,\n buildId: this.buildId,\n projectId: this.projectId\n }\n });\n }\n } catch {\n }\n }\n }\n /**\n * Orchestrator-specific logging methods\n */\n orchestrator = {\n newProject: (operationType) => this.log(\"info\", \"orchestrator\", `NEW PROJECT (operationType: ${operationType})`),\n existingProject: (operationType) => this.log(\"info\", \"orchestrator\", `EXISTING PROJECT (operationType: ${operationType})`),\n templateProvided: (templateName, templateId, framework) => this.log(\"info\", \"orchestrator\", `Frontend provided template: ${templateName}`, {\n templateId,\n framework\n }),\n templateSelecting: (method) => this.log(\"info\", \"orchestrator\", `Template selection: ${method}`),\n templateSelected: (templateName, templateId) => this.log(\"info\", \"orchestrator\", `Selected template: ${templateName}`, { templateId }),\n templateDownloading: (templateName, repository, target) => this.log(\"info\", \"orchestrator\", `Downloading template: ${templateName}`, {\n repository,\n target\n }),\n templateDownloaded: (templateName, path, fileTreeSize) => this.log(\"info\", \"orchestrator\", `Template downloaded: ${templateName}`, {\n path,\n fileTreeSize\n }),\n catalogPrepared: (catalogSize) => this.log(\"info\", \"orchestrator\", `Template catalog prepared (${catalogSize} chars)`, {\n catalogSize\n }),\n systemPromptGenerated: (size) => this.log(\"info\", \"orchestrator\", `System prompt generated (${size} chars)`, { size }),\n orchestrationComplete: (data) => this.log(\"info\", \"orchestrator\", \"Orchestration complete\", data),\n error: (message, error) => this.log(\"error\", \"orchestrator\", message, {\n error: error instanceof Error ? error.message : String(error)\n })\n };\n /**\n * Message transformer-specific logging methods\n */\n transformer = {\n todoListFound: () => this.log(\"debug\", \"transformer\", \"Found Codex task list, parsing...\"),\n todoListParsed: (todoCount, completed, inProgress, pending) => this.log(\"info\", \"transformer\", `Parsed ${todoCount} todos`, {\n completed,\n inProgress,\n pending\n }),\n todoListInvalidFormat: (expected, got) => this.log(\"error\", \"transformer\", \"Invalid todo format from Codex\", {\n expected,\n got: JSON.stringify(got).substring(0, 200)\n }),\n todoListParseError: (error, rawJson) => this.log(\"error\", \"transformer\", \"Failed to parse Codex todolist\", {\n error: String(error),\n rawJson: rawJson.substring(0, 300)\n }),\n todoListRemoved: () => this.log(\"debug\", \"transformer\", \"Removed task list from chat text\"),\n toolStarted: (toolName, toolId) => this.log(\"debug\", \"transformer\", `Tool started: ${toolName}`, { toolName, toolId }),\n toolCompleted: (toolName, toolId) => this.log(\"debug\", \"transformer\", `Tool completed: ${toolName}`, { toolName, toolId }),\n pathViolationWarning: (toolName, path, workspace) => this.log(\"warn\", \"transformer\", `Path outside workspace: ${path}`, {\n toolName,\n path,\n workspace\n }),\n desktopPathDetected: (path) => this.log(\"error\", \"transformer\", `DESKTOP PATH DETECTED - Likely hallucinated: ${path}`, { path })\n };\n /**\n * Codex query-specific logging methods\n */\n codexQuery = {\n promptBuilding: (workingDirectory, systemPromptSize, userPromptSize) => this.log(\"info\", \"codex-query\", \"Building Codex prompt\", {\n workingDirectory,\n systemPromptSize,\n userPromptSize\n }),\n threadStarting: () => this.log(\"info\", \"codex-query\", \"Starting Codex thread (multi-turn)\"),\n turnStarted: (turnNumber, maxTurns, promptSize) => this.log(\"info\", \"codex-query\", `\\u2550\\u2550\\u2550 Turn ${turnNumber}/${maxTurns} \\u2550\\u2550\\u2550`, {\n turnNumber,\n maxTurns,\n promptSize\n }),\n taskListExtracted: () => this.log(\"info\", \"codex-query\", \"Task list extracted and updated\"),\n taskListStatus: (completed, inProgress, pending, total) => this.log(\"info\", \"codex-query\", `Tasks: ${completed} completed | ${inProgress} in_progress | ${pending} pending (total: ${total})`, {\n completed,\n inProgress,\n pending,\n total\n }),\n taskListTask: (index2, content, status, icon) => this.log(\"debug\", \"codex-query\", ` ${icon} ${index2 + 1}. ${content}`, { status }),\n taskListParseError: (error, rawContent) => this.log(\"error\", \"codex-query\", \"PARSE ERROR: Could not parse task list JSON\", {\n error: String(error),\n rawContent: rawContent.substring(0, 200)\n }),\n taskListMissing: (turnNumber) => this.log(\"warn\", \"codex-query\", `WARNING: No <start-todolist> tags found in Turn ${turnNumber}`, {\n turnNumber\n }),\n turnComplete: (turnNumber, hadToolCalls, messageLength) => this.log(\"info\", \"codex-query\", `Turn ${turnNumber} complete`, {\n hadToolCalls,\n messageLength\n }),\n tasksComplete: (completed, total) => this.log(\"info\", \"codex-query\", `Task status: ${completed}/${total} completed`, {\n completed,\n total\n }),\n allComplete: () => this.log(\"info\", \"codex-query\", \"\\u2705 All MVP tasks complete!\"),\n allTasksComplete: () => this.log(\"info\", \"codex-query\", \"\\u2705 All MVP tasks complete!\"),\n taskCompleteDetected: () => this.log(\"info\", \"codex-query\", \"\\u2705 Task complete (detected completion signal)\"),\n continuePrompting: (reason) => this.log(\"warn\", \"codex-query\", `No tools used but not done - ${reason}`),\n continuing: () => this.log(\"info\", \"codex-query\", \"\\u23ED\\uFE0F Continuing to next turn (had tool calls)\"),\n loopExited: (turnCount, maxTurns) => this.log(\"info\", \"codex-query\", `EXITED WHILE LOOP after ${turnCount} turns`, {\n turnCount,\n maxTurns\n }),\n sessionComplete: (turnCount) => this.log(\"info\", \"codex-query\", `Session complete after ${turnCount} turns`, { turnCount }),\n error: (message, error) => this.log(\"error\", \"codex-query\", message, {\n error: error instanceof Error ? error.message : String(error)\n })\n };\n /**\n * Claude query-specific logging methods\n */\n claudeQuery = {\n queryStarted: (model, cwd, maxTurns) => this.log(\"info\", \"claude-query\", `Starting Claude query (${model})`, {\n cwd,\n maxTurns\n }),\n error: (message, error) => this.log(\"error\", \"claude-query\", message, {\n error: error instanceof Error ? error.message : String(error)\n })\n };\n /**\n * Runner-specific logging methods\n */\n runner = {\n workspaceRoot: (path) => this.log(\"info\", \"runner\", `Workspace root: ${path}`, { path }),\n commandReceived: (commandType, projectId) => this.log(\"info\", \"runner\", `Received command: ${commandType}`, { commandType, projectId }),\n buildOperation: (operationType, projectSlug, agentId) => this.log(\"info\", \"runner\", `Build operation: ${operationType}`, {\n operationType,\n projectSlug,\n agentId\n }),\n templateProvided: (templateId) => this.log(\"info\", \"runner\", `Template provided by frontend: ${templateId}`, { templateId }),\n buildStreamCreated: () => this.log(\"info\", \"runner\", \"Build stream created, starting to process chunks...\"),\n firstChunkReceived: (agentLabel) => this.log(\"info\", \"runner\", `First chunk received from ${agentLabel}`, { agentLabel }),\n streamEnded: (chunkCount) => this.log(\"info\", \"runner\", `Stream ended after ${chunkCount} chunks`, { chunkCount }),\n buildCompleted: (projectId) => this.log(\"info\", \"runner\", `Build completed successfully`, { projectId }),\n buildFailed: (error) => this.log(\"error\", \"runner\", `Build failed: ${error}`, { error }),\n portDetected: (port) => this.log(\"info\", \"runner\", `Port detected: ${port}`, { port }),\n tunnelCreated: (port, tunnelUrl) => this.log(\"info\", \"runner\", `Tunnel created: ${tunnelUrl} \\u2192 localhost:${port}`, {\n port,\n tunnelUrl\n }),\n error: (message, error, context) => this.log(\"error\", \"runner\", message, {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : void 0,\n ...context\n })\n };\n /**\n * Build stream-specific logging (tool calls, text, etc.)\n */\n build = {\n agentText: (agentLabel, text2) => {\n const truncated = text2.length > 200 ? text2.slice(0, 200) + \"...\" : text2;\n this.log(\"debug\", \"build\", `${agentLabel}: ${truncated}`, {\n agentLabel,\n textLength: text2.length\n });\n },\n agentThinking: (thinking) => {\n const truncated = thinking.length > 300 ? thinking.slice(0, 300) + \"...\" : thinking;\n this.log(\"debug\", \"build\", `Thinking: ${truncated}`, {\n thinkingLength: thinking.length\n });\n },\n toolCalled: (toolName, toolId, inputSize) => this.log(\"info\", \"build\", `Tool called: ${toolName} (${toolId})`, {\n toolName,\n toolId,\n inputSize\n }),\n toolResult: (toolId, outputSize, isError) => this.log(isError ? \"error\" : \"info\", \"build\", `Tool result (${toolId})`, {\n toolId,\n outputSize,\n isError\n }),\n runCommandDetected: (runCommand) => this.log(\"info\", \"build\", `Detected runCommand: ${runCommand}`, { runCommand })\n };\n /**\n * WebSocket-specific logging methods\n */\n websocket = {\n serverCreated: (instanceId) => this.log(\"info\", \"websocket\", `WebSocket server instance created`, { instanceId }),\n serverInitialized: (path, runnerPath) => this.log(\"info\", \"websocket\", `Server initialized`, { path, runnerPath }),\n clientConnected: (clientId, projectId, sessionId) => this.log(\"info\", \"websocket\", `Client connected: ${clientId}`, { clientId, projectId, sessionId }),\n clientDisconnected: (clientId) => this.log(\"info\", \"websocket\", `Client disconnected: ${clientId}`, { clientId }),\n clientSubscribed: (clientId, projectId) => this.log(\"info\", \"websocket\", `Client subscribed to project: ${projectId}`, { clientId, projectId }),\n clientTimeout: (clientId) => this.log(\"warn\", \"websocket\", `Client timeout: ${clientId}`, { clientId }),\n runnerConnected: (runnerId) => this.log(\"info\", \"websocket\", `Runner connected: ${runnerId}`, { runnerId }),\n runnerDisconnected: (runnerId, code) => this.log(\"info\", \"websocket\", `Runner disconnected: ${runnerId}`, { runnerId, code }),\n runnerNotConnected: (runnerId, commandType) => this.log(\"warn\", \"websocket\", `Cannot send command to runner ${runnerId}: not connected`, {\n runnerId,\n commandType\n }),\n runnerAuthRejected: () => this.log(\"warn\", \"websocket\", `Runner connection rejected: invalid auth`),\n runnerAuthMissing: () => this.log(\"error\", \"websocket\", `RUNNER_SHARED_SECRET is not configured`),\n runnerStaleRemoved: (runnerId) => this.log(\"info\", \"websocket\", `Removing stale runner connection: ${runnerId}`, { runnerId }),\n commandSent: (runnerId, commandType, traceAttached) => this.log(\"debug\", \"websocket\", `Sent command to runner: ${commandType}`, {\n runnerId,\n commandType,\n traceAttached\n }),\n eventReceived: (runnerId, eventType) => this.log(\"debug\", \"websocket\", `Received event from runner: ${eventType}`, {\n runnerId,\n eventType\n }),\n broadcastToolCall: (toolName, toolState, subscriberCount) => this.log(\"info\", \"websocket\", `Broadcasting planning tool: ${toolName} (state=${toolState})`, {\n toolName,\n toolState,\n subscriberCount\n }),\n broadcastBuildComplete: (projectId, sessionId, subscriberCount) => this.log(\"info\", \"websocket\", `Broadcasting build-complete`, {\n projectId,\n sessionId,\n subscriberCount\n }),\n unknownUpgradePath: (pathname) => this.log(\"warn\", \"websocket\", `Unknown upgrade path: ${pathname}`, { pathname }),\n shutdown: () => this.log(\"info\", \"websocket\", `Shutting down server...`),\n shutdownComplete: () => this.log(\"info\", \"websocket\", `Server shut down`),\n error: (message, error, context) => this.log(\"error\", \"websocket\", message, {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : void 0,\n ...context\n })\n };\n /**\n * Port allocator-specific logging methods\n */\n portAllocator = {\n portAllocated: (port, projectId) => this.log(\"info\", \"port-allocator\", `Port allocated: ${port}`, { port, projectId }),\n portReleased: (port, projectId) => this.log(\"info\", \"port-allocator\", `Port released: ${port}`, { port, projectId }),\n portInUse: (port) => this.log(\"warn\", \"port-allocator\", `Port ${port} is already in use`, { port }),\n portRangeExhausted: (minPort, maxPort) => this.log(\"error\", \"port-allocator\", `No available ports in range ${minPort}-${maxPort}`, {\n minPort,\n maxPort\n }),\n portConflict: (port, projectId, existingProjectId) => this.log(\"warn\", \"port-allocator\", `Port ${port} conflict detected`, {\n port,\n projectId,\n existingProjectId\n }),\n allocationsCleared: (count) => this.log(\"info\", \"port-allocator\", `Cleared ${count} port allocations`, { count }),\n error: (message, error, context) => this.log(\"error\", \"port-allocator\", message, {\n error: error instanceof Error ? error.message : String(error),\n ...context\n })\n };\n /**\n * Process manager-specific logging methods\n */\n processManager = {\n processStarting: (projectId, command, cwd) => this.log(\"info\", \"process-manager\", `Starting process: ${command}`, {\n projectId,\n command,\n cwd\n }),\n processStarted: (projectId, pid) => this.log(\"info\", \"process-manager\", `Process started`, { projectId, pid }),\n processOutput: (projectId, output) => this.log(\"debug\", \"process-manager\", `Process output: ${output.substring(0, 100)}`, {\n projectId,\n outputLength: output.length\n }),\n processError: (projectId, error) => this.log(\"error\", \"process-manager\", `Process error: ${error}`, { projectId, error }),\n processExited: (projectId, code, signal) => this.log(\"info\", \"process-manager\", `Process exited`, { projectId, code, signal }),\n processStopped: (projectId) => this.log(\"info\", \"process-manager\", `Process stopped`, { projectId }),\n processNotFound: (projectId) => this.log(\"warn\", \"process-manager\", `Process not found for project: ${projectId}`, { projectId }),\n processKilled: (projectId, signal) => this.log(\"info\", \"process-manager\", `Process killed with signal: ${signal}`, {\n projectId,\n signal\n }),\n processCleanup: (projectId) => this.log(\"info\", \"process-manager\", `Cleaning up process`, { projectId }),\n processListRetrieved: (count) => this.log(\"debug\", \"process-manager\", `Retrieved ${count} running processes`, { count }),\n error: (message, error, context) => this.log(\"error\", \"process-manager\", message, {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : void 0,\n ...context\n })\n };\n /**\n * Build events-specific logging methods\n */\n buildEvents = {\n eventReceived: (eventType, projectId, sessionId) => this.log(\"info\", \"build-events\", `Received event: ${eventType}`, {\n eventType,\n projectId,\n sessionId\n }),\n eventProcessed: (eventType, projectId) => this.log(\"debug\", \"build-events\", `Processed event: ${eventType}`, { eventType, projectId }),\n buildStarted: (projectId, sessionId) => this.log(\"info\", \"build-events\", `Build started`, { projectId, sessionId }),\n buildCompleted: (projectId, sessionId, success) => this.log(\"info\", \"build-events\", `Build ${success ? \"completed\" : \"failed\"}`, {\n projectId,\n sessionId,\n success\n }),\n portDetected: (projectId, port) => this.log(\"info\", \"build-events\", `Port detected: ${port}`, { projectId, port }),\n devServerStarted: (projectId, port, url) => this.log(\"info\", \"build-events\", `Dev server started: ${url}`, { projectId, port, url }),\n devServerError: (projectId, error) => this.log(\"error\", \"build-events\", `Dev server error: ${error}`, { projectId, error }),\n toolCallReceived: (toolName, toolId) => this.log(\"debug\", \"build-events\", `Tool call: ${toolName}`, { toolName, toolId }),\n logChunkReceived: (projectId, chunkSize) => this.log(\"debug\", \"build-events\", `Log chunk received`, { projectId, chunkSize }),\n invalidEvent: (reason) => this.log(\"warn\", \"build-events\", `Invalid event: ${reason}`, { reason }),\n error: (message, error, context) => this.log(\"error\", \"build-events\", message, {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : void 0,\n ...context\n })\n };\n};\nvar buildLogger = new BuildLogger();\n\n// src/lib/port-allocator.ts\nvar FRAMEWORK_RANGES = {\n next: { start: 3101, end: 3200 },\n node: { start: 3101, end: 3200 },\n tanstack: { start: 3101, end: 3200 },\n astro: { start: 4321, end: 4421 },\n vite: { start: 5173, end: 5273 },\n default: { start: 6e3, end: 6100 }\n};\nvar FRAMEWORK_ENV_MAP = {\n next: [\"PORT\", \"NEXT_PUBLIC_PORT\"],\n node: [\"PORT\"],\n tanstack: [\"PORT\", \"VITE_PORT\"],\n astro: [\"PORT\", \"ASTRO_PORT\"],\n vite: [\"PORT\", \"VITE_PORT\"],\n default: [\"PORT\"]\n};\nasync function detectFrameworkFromFilesystem(projectPath) {\n try {\n let cachedPkg = null;\n const loadPackageJson = async () => {\n if (cachedPkg) return cachedPkg;\n const pkgPath = join(projectPath, \"package.json\");\n if (!existsSync(pkgPath)) {\n cachedPkg = null;\n return cachedPkg;\n }\n const pkgContent = await readFile(pkgPath, \"utf-8\");\n const pkg2 = JSON.parse(pkgContent);\n cachedPkg = {\n deps: { ...pkg2.dependencies ?? {}, ...pkg2.peerDependencies ?? {} },\n devDeps: pkg2.devDependencies ?? {},\n devScript: pkg2.scripts?.dev?.toLowerCase() ?? \"\"\n };\n return cachedPkg;\n };\n const hasTanStackDependency = async () => {\n const pkg2 = await loadPackageJson();\n if (!pkg2) return false;\n const combined = { ...pkg2.deps, ...pkg2.devDeps };\n if (combined[\"@tanstack/react-start\"]) return true;\n if (pkg2.devScript.includes(\"tanstack\")) return true;\n return false;\n };\n if (existsSync(join(projectPath, \"astro.config.mjs\")) || existsSync(join(projectPath, \"astro.config.ts\")) || existsSync(join(projectPath, \"astro.config.js\"))) {\n return \"astro\";\n }\n if (existsSync(join(projectPath, \"next.config.ts\")) || existsSync(join(projectPath, \"next.config.js\")) || existsSync(join(projectPath, \"next.config.mjs\"))) {\n return \"next\";\n }\n if (existsSync(join(projectPath, \"vite.config.ts\")) || existsSync(join(projectPath, \"vite.config.js\"))) {\n if (await hasTanStackDependency()) {\n return \"tanstack\";\n }\n return \"vite\";\n }\n const pkg = await loadPackageJson();\n if (pkg) {\n const allDeps = { ...pkg.deps, ...pkg.devDeps };\n if (allDeps[\"astro\"]) return \"astro\";\n if (allDeps[\"@tanstack/react-start\"]) return \"tanstack\";\n if (allDeps[\"next\"]) return \"next\";\n if (allDeps[\"vite\"]) return \"vite\";\n if (pkg.devScript.includes(\"tanstack\")) return \"tanstack\";\n if (pkg.devScript.includes(\"astro\")) return \"astro\";\n if (pkg.devScript.includes(\"next\")) return \"next\";\n if (pkg.devScript.includes(\"vite\")) return \"vite\";\n }\n } catch (error) {\n buildLogger.portAllocator.error(\"Failed to detect framework from filesystem\", error);\n }\n return null;\n}\nasync function resolveFramework(projectType, runCommand, savedFramework) {\n if (savedFramework) {\n const framework = toFrameworkKey(savedFramework);\n buildLogger.log(\"info\", \"port-allocator\", `Using saved framework (locked): ${framework}`, {\n savedFramework,\n projectType,\n runCommand\n });\n return framework;\n }\n buildLogger.log(\"warn\", \"port-allocator\", \"No saved framework found, falling back to detection (may cause port drift)\", {\n projectType,\n runCommand\n });\n const normalizedType = projectType?.toLowerCase() ?? \"\";\n if (normalizedType.includes(\"tanstack\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from projectType: tanstack\", { projectType });\n return \"tanstack\";\n }\n if (normalizedType.includes(\"vite\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from projectType: vite\", { projectType });\n return \"vite\";\n }\n if (normalizedType.includes(\"astro\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from projectType: astro\", { projectType });\n return \"astro\";\n }\n if (normalizedType.includes(\"next\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from projectType: next\", { projectType });\n return \"next\";\n }\n if (normalizedType.includes(\"node\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from projectType: node\", { projectType });\n return \"node\";\n }\n const normalizedCommand = runCommand?.toLowerCase() ?? \"\";\n if (normalizedCommand.includes(\"vite\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from runCommand: vite\", { runCommand });\n return \"vite\";\n }\n if (normalizedCommand.includes(\"astro\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from runCommand: astro\", { runCommand });\n return \"astro\";\n }\n if (normalizedCommand.includes(\"tanstack\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from runCommand: tanstack\", { runCommand });\n return \"tanstack\";\n }\n if (normalizedCommand.includes(\"next\")) {\n buildLogger.log(\"debug\", \"port-allocator\", \"Detected from runCommand: next\", { runCommand });\n return \"next\";\n }\n buildLogger.log(\"warn\", \"port-allocator\", \"No framework detected, using default (port 6000+)\", {\n projectType,\n runCommand\n });\n return \"default\";\n}\nfunction toFrameworkKey(value) {\n switch (value) {\n case \"next\":\n case \"astro\":\n case \"vite\":\n case \"tanstack\":\n case \"node\":\n return value;\n default:\n return \"default\";\n }\n}\nasync function reservePortForProject(params) {\n const framework = await resolveFramework(params.projectType, params.runCommand, params.detectedFramework);\n const range = FRAMEWORK_RANGES[framework];\n const preferred = params.preferredPort ?? void 0;\n return db.transaction(async (tx) => {\n await tx.update(portAllocations).set({ projectId: null, reservedAt: null }).where(eq(portAllocations.projectId, params.projectId)).execute();\n const now = /* @__PURE__ */ new Date();\n const tryReservePort = async (port) => {\n if (port < range.start || port > range.end) {\n return null;\n }\n const existing = await tx.select().from(portAllocations).where(eq(portAllocations.port, port)).limit(1).execute();\n if (existing.length === 0) {\n await tx.insert(portAllocations).values({\n port,\n framework,\n projectId: params.projectId,\n reservedAt: now\n }).execute();\n return port;\n }\n if (existing[0].projectId === null) {\n await tx.update(portAllocations).set({ projectId: params.projectId, reservedAt: now }).where(eq(portAllocations.port, port)).execute();\n return port;\n }\n return null;\n };\n if (preferred) {\n const reserved = await tryReservePort(preferred);\n if (reserved !== null) {\n return { port: reserved, framework };\n }\n }\n const reusable = await tx.select().from(portAllocations).where(and(eq(portAllocations.framework, framework), isNull(portAllocations.projectId))).orderBy(portAllocations.port).limit(1).execute();\n if (reusable.length > 0) {\n await tx.update(portAllocations).set({ projectId: params.projectId, reservedAt: now }).where(eq(portAllocations.port, reusable[0].port)).execute();\n return { port: reusable[0].port, framework };\n }\n const rows = await tx.select({\n maxPort: sql2`COALESCE(MAX(${portAllocations.port}), ${range.start - 1})`\n }).from(portAllocations).where(eq(portAllocations.framework, framework)).execute();\n const maxPort = rows[0]?.maxPort ?? range.start - 1;\n const nextPort = Math.max(range.start, maxPort + 1);\n if (nextPort > range.end) {\n throw new Error(`No available ports remaining for framework \"${framework}\" (${range.start}-${range.end}).`);\n }\n await tx.insert(portAllocations).values({\n port: nextPort,\n framework,\n projectId: params.projectId,\n reservedAt: now\n }).execute();\n return { port: nextPort, framework };\n });\n}\nasync function updatePortReservationForProject(projectId, actualPort) {\n await db.transaction(async (tx) => {\n const rows = await tx.select().from(portAllocations).where(eq(portAllocations.projectId, projectId)).limit(1).execute();\n if (rows.length === 0) {\n return;\n }\n const current = rows[0];\n if (current.port === actualPort) {\n return;\n }\n const frameworkKey = toFrameworkKey(current.framework);\n const range = FRAMEWORK_RANGES[frameworkKey] ?? FRAMEWORK_RANGES.default;\n if (actualPort < range.start || actualPort > range.end) {\n return;\n }\n const occupying = await tx.select().from(portAllocations).where(eq(portAllocations.port, actualPort)).limit(1).execute();\n if (occupying.length > 0 && occupying[0].projectId !== null && occupying[0].projectId !== projectId) {\n return;\n }\n await tx.delete(portAllocations).where(eq(portAllocations.port, current.port)).execute();\n const now = /* @__PURE__ */ new Date();\n if (occupying.length > 0) {\n await tx.update(portAllocations).set({ projectId, reservedAt: now }).where(eq(portAllocations.port, actualPort)).execute();\n } else {\n await tx.insert(portAllocations).values({\n port: actualPort,\n framework: current.framework,\n projectId,\n reservedAt: now\n }).execute();\n }\n });\n}\nasync function releasePortForProject(projectId) {\n await db.update(portAllocations).set({ projectId: null, reservedAt: null }).where(eq(portAllocations.projectId, projectId)).execute();\n}\nfunction buildEnvForFramework(framework, port) {\n const envKeys = FRAMEWORK_ENV_MAP[framework] ?? FRAMEWORK_ENV_MAP.default;\n const env = {};\n envKeys.forEach((key) => {\n env[key] = String(port);\n });\n env.DEV_SERVER_PORT = String(port);\n return env;\n}\nfunction getRunCommand(baseCommand) {\n if (!baseCommand || !baseCommand.trim()) {\n return \"npm run dev\";\n }\n return baseCommand;\n}\nasync function checkPortAvailability(port) {\n const localhostAvailable = await checkSingleInterface(port, \"localhost\");\n if (!localhostAvailable) {\n return false;\n }\n const allInterfacesAvailable = await checkSingleInterface(port, \"0.0.0.0\");\n return allInterfacesAvailable;\n}\nfunction checkSingleInterface(port, host) {\n return new Promise((resolve) => {\n const server = createServer();\n server.once(\"error\", (err) => {\n if (err.code === \"EADDRINUSE\") {\n resolve(false);\n } else {\n resolve(false);\n }\n });\n server.once(\"listening\", () => {\n server.close(() => {\n resolve(true);\n });\n });\n server.listen(port, host);\n });\n}\nasync function findAvailablePortInRange(range, preferredStart) {\n const scanStart = preferredStart && preferredStart >= range.start && preferredStart <= range.end ? preferredStart : range.start;\n buildLogger.log(\"debug\", \"port-allocator\", `Scanning for available port in range ${range.start}-${range.end}`, {\n scanStart,\n rangeStart: range.start,\n rangeEnd: range.end\n });\n for (let port = scanStart; port <= range.end; port++) {\n const isAvailable = await checkPortAvailability(port);\n if (isAvailable) {\n buildLogger.log(\"debug\", \"port-allocator\", `Found available port: ${port}`, { port });\n return port;\n }\n buildLogger.log(\"debug\", \"port-allocator\", `Port ${port} in use`, { port });\n }\n if (scanStart > range.start) {\n buildLogger.log(\"debug\", \"port-allocator\", `Wrapping around to scan ${range.start}-${scanStart - 1}`, {\n rangeStart: range.start,\n scanStart: scanStart - 1\n });\n for (let port = range.start; port < scanStart; port++) {\n const isAvailable = await checkPortAvailability(port);\n if (isAvailable) {\n buildLogger.log(\"debug\", \"port-allocator\", `Found available port: ${port}`, { port });\n return port;\n }\n buildLogger.log(\"debug\", \"port-allocator\", `Port ${port} in use`, { port });\n }\n }\n buildLogger.portAllocator.portRangeExhausted(range.start, range.end);\n return null;\n}\nasync function getPortForProject(projectId) {\n const rows = await db.select().from(portAllocations).where(eq(portAllocations.projectId, projectId)).limit(1).execute();\n if (rows.length === 0) {\n return null;\n }\n const allocation = rows[0];\n return {\n port: allocation.port,\n framework: toFrameworkKey(allocation.framework)\n };\n}\nasync function reserveOrReallocatePort(params, skipPortCheck = false) {\n const framework = await resolveFramework(params.projectType, params.runCommand, params.detectedFramework);\n const range = FRAMEWORK_RANGES[framework];\n buildLogger.log(\"info\", \"port-allocator\", `Allocating port for project ${params.projectId}`, {\n projectId: params.projectId,\n framework,\n rangeStart: range.start,\n rangeEnd: range.end,\n skipPortCheck\n });\n const existing = await getPortForProject(params.projectId);\n if (existing) {\n const withinRange = existing.port >= range.start && existing.port <= range.end;\n const sameFramework = existing.framework === framework;\n buildLogger.log(\"debug\", \"port-allocator\", `Found existing allocation: port ${existing.port}`, {\n port: existing.port,\n framework: existing.framework,\n projectId: params.projectId\n });\n if (!withinRange) {\n buildLogger.log(\"warn\", \"port-allocator\", `Port ${existing.port} outside valid range ${range.start}-${range.end}, will reallocate`, {\n port: existing.port,\n rangeStart: range.start,\n rangeEnd: range.end,\n projectId: params.projectId\n });\n await releasePortForProject(params.projectId);\n } else if (!sameFramework) {\n buildLogger.log(\"warn\", \"port-allocator\", `Framework mismatch (${existing.framework} \\u2192 ${framework}), will reallocate`, {\n oldFramework: existing.framework,\n newFramework: framework,\n projectId: params.projectId\n });\n await releasePortForProject(params.projectId);\n } else {\n if (skipPortCheck) {\n buildLogger.log(\"info\", \"port-allocator\", `Reusing port ${existing.port} (skipPortCheck=true)`, {\n port: existing.port,\n projectId: params.projectId\n });\n await db.update(portAllocations).set({ reservedAt: /* @__PURE__ */ new Date() }).where(eq(portAllocations.projectId, params.projectId)).execute();\n return existing;\n }\n const isAvailable = await checkPortAvailability(existing.port);\n if (isAvailable) {\n buildLogger.portAllocator.portAllocated(existing.port, params.projectId);\n await db.update(portAllocations).set({ reservedAt: /* @__PURE__ */ new Date() }).where(eq(portAllocations.projectId, params.projectId)).execute();\n return existing;\n }\n buildLogger.portAllocator.portInUse(existing.port);\n await releasePortForProject(params.projectId);\n }\n }\n let availablePort = null;\n if (skipPortCheck) {\n buildLogger.log(\"info\", \"port-allocator\", \"Remote runner mode: using DB allocation without OS check\", {\n projectId: params.projectId\n });\n try {\n const allocation = await reservePortForProject({\n ...params,\n detectedFramework: params.detectedFramework ?? framework\n });\n availablePort = allocation.port;\n buildLogger.log(\"info\", \"port-allocator\", `Allocated port ${availablePort} from DB`, {\n port: availablePort,\n projectId: params.projectId\n });\n } catch (error) {\n throw new Error(`Unable to allocate port for remote runner: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n }\n } else {\n buildLogger.log(\"info\", \"port-allocator\", \"Local runner mode: scanning OS for available port\", {\n projectId: params.projectId,\n preferredPort: params.preferredPort\n });\n availablePort = await findAvailablePortInRange(range, params.preferredPort ?? void 0);\n if (!availablePort) {\n throw new Error(\n `All ports in range ${range.start}-${range.end} are in use. Please stop other dev servers or free up ports.`\n );\n }\n }\n buildLogger.log(\"debug\", \"port-allocator\", `Reserving port ${availablePort} in database`, {\n port: availablePort,\n projectId: params.projectId\n });\n await db.transaction(async (tx) => {\n await tx.update(portAllocations).set({ projectId: null, reservedAt: null }).where(eq(portAllocations.projectId, params.projectId)).execute();\n const existingPort = await tx.select().from(portAllocations).where(eq(portAllocations.port, availablePort)).limit(1).execute();\n const now = /* @__PURE__ */ new Date();\n if (existingPort.length === 0) {\n await tx.insert(portAllocations).values({\n port: availablePort,\n framework,\n projectId: params.projectId,\n reservedAt: now\n }).execute();\n } else {\n await tx.update(portAllocations).set({ projectId: params.projectId, framework, reservedAt: now }).where(eq(portAllocations.port, availablePort)).execute();\n }\n });\n buildLogger.portAllocator.portAllocated(availablePort, params.projectId);\n return { port: availablePort, framework };\n}\nasync function cleanupAbandonedPorts() {\n const threshold = new Date(Date.now() - 7 * 24 * 60 * 60 * 1e3);\n const result = await db.update(portAllocations).set({ projectId: null, reservedAt: null }).where(and(\n isNotNull(portAllocations.projectId),\n lt(portAllocations.reservedAt, threshold)\n )).returning();\n const cleanedCount = result.length;\n if (cleanedCount > 0) {\n buildLogger.portAllocator.allocationsCleared(cleanedCount);\n }\n return cleanedCount;\n}\nexport {\n buildEnvForFramework,\n checkPortAvailability,\n cleanupAbandonedPorts,\n detectFrameworkFromFilesystem,\n getPortForProject,\n getRunCommand,\n releasePortForProject,\n reserveOrReallocatePort,\n reservePortForProject,\n updatePortReservationForProject\n};\n//# sourceMappingURL=port-allocator.js.map"],"names":[],"mappings":"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"}
|
|
@@ -2,36 +2,30 @@
|
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { homedir, userInfo } from 'node:os';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
-
import { r as reactExports, u as useInput, j as jsxRuntimeExports, B as Box, c as colors, T as Text, a as useStdout, b as render, R as React } from './theme-
|
|
5
|
+
import { r as reactExports, u as useInput, j as jsxRuntimeExports, B as Box, c as colors, T as Text, a as useStdout, b as render, R as React } from './theme-DOjeB8BU.js';
|
|
6
6
|
import { l as logger } from './logger-ZpJi7chw.js';
|
|
7
7
|
import { c as configManager } from './config-manager-BkbjtN-H.js';
|
|
8
8
|
import { startRunner } from '../index.js';
|
|
9
9
|
import 'node:stream';
|
|
10
10
|
import 'node:process';
|
|
11
11
|
import 'node:events';
|
|
12
|
-
import { u as useApp } from './use-app-
|
|
13
|
-
import { u as useBuildState, a as useLogEntries, B as BuildPanel } from './useBuildState-
|
|
14
|
-
import { g as getVersionInfo, B as Banner } from './Banner-
|
|
15
|
-
import { T as TextInput } from './index-
|
|
12
|
+
import { u as useApp } from './use-app-DozfqdJj.js';
|
|
13
|
+
import { u as useBuildState, a as useLogEntries, B as BuildPanel } from './useBuildState-DV6wurQ2.js';
|
|
14
|
+
import { g as getVersionInfo, B as Banner } from './Banner-BKC6yG6z.js';
|
|
15
|
+
import { T as TextInput } from './index-ZNRLfdj5.js';
|
|
16
16
|
import { g as getLogBuffer, i as initRunnerLogger, s as setFileLoggerTuiMode } from './runner-logger-instance-nDWv2h2T.js';
|
|
17
|
-
import { o as openBrowser, h as hasStoredToken, g as getStoredToken, p as performOAuthLogin, s as storeToken } from './cli-auth-
|
|
17
|
+
import { o as openBrowser, h as hasStoredToken, g as getStoredToken, p as performOAuthLogin, s as storeToken } from './cli-auth-BgiGSBOt.js';
|
|
18
18
|
import 'node:fs';
|
|
19
|
-
import './_commonjsHelpers-h-Bqc03Z.js';
|
|
20
19
|
import 'assert';
|
|
21
20
|
import 'events';
|
|
22
21
|
import 'module';
|
|
23
22
|
import 'node:buffer';
|
|
24
23
|
import 'conf';
|
|
24
|
+
import '@sentry/node';
|
|
25
25
|
import '@anthropic-ai/claude-agent-sdk';
|
|
26
26
|
import '@openai/codex-sdk';
|
|
27
27
|
import 'dotenv';
|
|
28
28
|
import 'node:url';
|
|
29
|
-
import 'ai';
|
|
30
|
-
import 'zod/v4';
|
|
31
|
-
import 'zod/v3';
|
|
32
|
-
import 'jsonc-parser';
|
|
33
|
-
import 'zod';
|
|
34
|
-
import 'fs';
|
|
35
29
|
import 'fs/promises';
|
|
36
30
|
import 'path';
|
|
37
31
|
import 'ws';
|
|
@@ -41,8 +35,7 @@ import 'drizzle-orm/pg-core';
|
|
|
41
35
|
import 'drizzle-orm';
|
|
42
36
|
import 'crypto';
|
|
43
37
|
import 'drizzle-orm/node-postgres/migrator';
|
|
44
|
-
import '
|
|
45
|
-
import 'node:util';
|
|
38
|
+
import 'zod';
|
|
46
39
|
import 'node:crypto';
|
|
47
40
|
import 'express';
|
|
48
41
|
import 'node:child_process';
|
|
@@ -50,6 +43,7 @@ import 'node:net';
|
|
|
50
43
|
import 'node:fs/promises';
|
|
51
44
|
import 'simple-git';
|
|
52
45
|
import 'os';
|
|
46
|
+
import 'fs';
|
|
53
47
|
import './manager-CvGX9qqe.js';
|
|
54
48
|
import 'http';
|
|
55
49
|
import 'http-proxy';
|
|
@@ -700,4 +694,4 @@ async function runCommand(options) {
|
|
|
700
694
|
}
|
|
701
695
|
|
|
702
696
|
export { runCommand };
|
|
703
|
-
//# sourceMappingURL=run-
|
|
697
|
+
//# sourceMappingURL=run-Yh3YjeLl.js.map
|