@elizaos/plugin-trajectory-logger 2.0.0-alpha.20 → 2.0.0-alpha.21
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/node/index.node.js +191 -79
- package/dist/node/index.node.js.map +6 -6
- package/package.json +89 -87
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/entity.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/column.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/column-builder.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/table.utils.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/tracing-utils.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/pg-core/unique-constraint.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/pg-core/columns/common.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/pg-core/columns/enum.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/subquery.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/version.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/tracing.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/view-common.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/table.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/sql/sql.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/alias.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/errors.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/logger.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/query-promise.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/utils.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/pg-core/table.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/pg-core/primary-keys.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/sql/expressions/conditions.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/sql/expressions/select.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/sql/expressions/index.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/relations.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/sql/functions/aggregate.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/sql/functions/vector.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/sql/functions/index.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/sql/index.js", "../../../../../node_modules/.bun/drizzle-orm@0.45.1+6e0ea2f0f122d214/node_modules/drizzle-orm/index.js", "../../index.ts", "../../TrajectoryLoggerService.ts", "../../action-interceptor.ts", "../../art-format.ts", "../../export.ts", "../../game-rewards.ts", "../../integration.ts", "../../reward-service.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"const entityKind = Symbol.for(\"drizzle:entityKind\");\nconst hasOwnEntityKind = Symbol.for(\"drizzle:hasOwnEntityKind\");\nfunction is(value, type) {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n if (value instanceof type) {\n return true;\n }\n if (!Object.prototype.hasOwnProperty.call(type, entityKind)) {\n throw new Error(\n `Class \"${type.name ?? \"<unknown>\"}\" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`\n );\n }\n let cls = Object.getPrototypeOf(value).constructor;\n if (cls) {\n while (cls) {\n if (entityKind in cls && cls[entityKind] === type[entityKind]) {\n return true;\n }\n cls = Object.getPrototypeOf(cls);\n }\n }\n return false;\n}\nexport {\n entityKind,\n hasOwnEntityKind,\n is\n};\n//# sourceMappingURL=entity.js.map",
|
|
6
6
|
"import { entityKind } from \"./entity.js\";\nclass Column {\n constructor(table, config) {\n this.table = table;\n this.config = config;\n this.name = config.name;\n this.keyAsName = config.keyAsName;\n this.notNull = config.notNull;\n this.default = config.default;\n this.defaultFn = config.defaultFn;\n this.onUpdateFn = config.onUpdateFn;\n this.hasDefault = config.hasDefault;\n this.primary = config.primaryKey;\n this.isUnique = config.isUnique;\n this.uniqueName = config.uniqueName;\n this.uniqueType = config.uniqueType;\n this.dataType = config.dataType;\n this.columnType = config.columnType;\n this.generated = config.generated;\n this.generatedIdentity = config.generatedIdentity;\n }\n static [entityKind] = \"Column\";\n name;\n keyAsName;\n primary;\n notNull;\n default;\n defaultFn;\n onUpdateFn;\n hasDefault;\n isUnique;\n uniqueName;\n uniqueType;\n dataType;\n columnType;\n enumValues = void 0;\n generated = void 0;\n generatedIdentity = void 0;\n config;\n mapFromDriverValue(value) {\n return value;\n }\n mapToDriverValue(value) {\n return value;\n }\n // ** @internal */\n shouldDisableInsert() {\n return this.config.generated !== void 0 && this.config.generated.type !== \"byDefault\";\n }\n}\nexport {\n Column\n};\n//# sourceMappingURL=column.js.map",
|
|
@@ -32,16 +32,16 @@
|
|
|
32
32
|
"export * from \"./aggregate.js\";\nexport * from \"./vector.js\";\n//# sourceMappingURL=index.js.map",
|
|
33
33
|
"export * from \"./expressions/index.js\";\nexport * from \"./functions/index.js\";\nexport * from \"./sql.js\";\n//# sourceMappingURL=index.js.map",
|
|
34
34
|
"export * from \"./alias.js\";\nexport * from \"./column-builder.js\";\nexport * from \"./column.js\";\nexport * from \"./entity.js\";\nexport * from \"./errors.js\";\nexport * from \"./logger.js\";\nexport * from \"./operations.js\";\nexport * from \"./query-promise.js\";\nexport * from \"./relations.js\";\nexport * from \"./sql/index.js\";\nexport * from \"./subquery.js\";\nexport * from \"./table.js\";\nexport * from \"./utils.js\";\nexport * from \"./view-common.js\";\n//# sourceMappingURL=index.js.map",
|
|
35
|
-
"import {\n
|
|
36
|
-
"/**\n * Trajectory Logger Service\n *\n * A proper @elizaos/core Service that:\n * - Registers as \"trajectory_logger\" so the runtime can find it\n * - Persists trajectories to the database\n * - Supports both runtime logging AND RL training data collection\n * - Provides API for UI viewing and export\n */\n\nimport { type IAgentRuntime, logger, Service } from \"@elizaos/core\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport type {\n ActionAttempt,\n EnvironmentState,\n JsonValue,\n LLMCall,\n ProviderAccess,\n RewardComponents,\n Trajectory,\n TrajectoryStep,\n} from \"./types\";\n\n// ============================================================================\n// Database Row Types\n// ============================================================================\n\ntype SqlPrimitive = string | number | boolean | null;\ninterface SqlCellArray extends Array<SqlCell> { }\ntype SqlCell = SqlPrimitive | Date | SqlRow | SqlCellArray;\ninterface SqlRow {\n [key: string]: SqlCell;\n}\n\ninterface SqlExecuteResult {\n rows: SqlRow[];\n fields?: Array<{ name: string }>;\n}\n\n// ============================================================================\n// List/Filter Options\n// ============================================================================\n\nexport interface TrajectoryListOptions {\n limit?: number;\n offset?: number;\n status?: \"active\" | \"completed\" | \"error\" | \"timeout\";\n source?: string;\n startDate?: string;\n endDate?: string;\n search?: string;\n scenarioId?: string;\n batchId?: string;\n isTrainingData?: boolean;\n}\n\nexport interface TrajectoryListResult {\n trajectories: TrajectoryListItem[];\n total: number;\n offset: number;\n limit: number;\n}\n\nexport interface TrajectoryListItem {\n id: string;\n agentId: string;\n source: string;\n status: \"active\" | \"completed\" | \"error\" | \"timeout\";\n startTime: number;\n endTime: number | null;\n durationMs: number | null;\n stepCount: number;\n llmCallCount: number;\n totalPromptTokens: number;\n totalCompletionTokens: number;\n totalReward: number;\n scenarioId: string | null;\n batchId: string | null;\n createdAt: string;\n}\n\nexport interface TrajectoryStats {\n totalTrajectories: number;\n totalSteps: number;\n totalLlmCalls: number;\n totalPromptTokens: number;\n totalCompletionTokens: number;\n averageDurationMs: number;\n averageReward: number;\n bySource: Record<string, number>;\n byStatus: Record<string, number>;\n byScenario: Record<string, number>;\n}\n\nexport interface TrajectoryExportOptions {\n format: \"json\" | \"art\" | \"csv\";\n includePrompts?: boolean;\n trajectoryIds?: string[];\n startDate?: string;\n endDate?: string;\n scenarioId?: string;\n batchId?: string;\n}\n\nexport interface TrajectoryZipExportOptions {\n includePrompts?: boolean;\n trajectoryIds?: string[];\n startDate?: string;\n endDate?: string;\n scenarioId?: string;\n batchId?: string;\n}\n\nexport interface TrajectoryZipEntry {\n name: string;\n data: string;\n}\n\nexport interface TrajectoryZipExportResult {\n filename: string;\n entries: TrajectoryZipEntry[];\n}\n\n// ============================================================================\n// SQL Helpers\n// ============================================================================\n\nfunction asNumber(value: SqlCell | undefined): number | null {\n if (typeof value === \"number\" && Number.isFinite(value)) return value;\n if (typeof value === \"string\") {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n }\n return null;\n}\n\nfunction asString(value: SqlCell | undefined): string | null {\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\")\n return String(value);\n if (value instanceof Date) return value.toISOString();\n return null;\n}\n\nfunction asIsoString(value: SqlCell | undefined): string {\n if (value instanceof Date) return value.toISOString();\n const asText = asString(value);\n if (!asText) return new Date(0).toISOString();\n const parsed = new Date(asText);\n if (Number.isNaN(parsed.getTime())) return new Date(0).toISOString();\n return parsed.toISOString();\n}\n\nfunction pickCell(row: SqlRow, ...keys: string[]): SqlCell | undefined {\n for (const key of keys) {\n if (Object.hasOwn(row, key)) {\n return row[key];\n }\n }\n return undefined;\n}\n\nfunction sqlLiteral(v: unknown): string {\n if (v === null || v === undefined) return \"NULL\";\n if (typeof v === \"number\") return String(v);\n if (typeof v === \"boolean\") return v ? \"TRUE\" : \"FALSE\";\n if (typeof v === \"object\")\n return `'${JSON.stringify(v).replace(/'/g, \"''\")}'`;\n return `'${String(v).replace(/'/g, \"''\")}'`;\n}\n\ntype TrajectoryStatus =\n | \"active\"\n | \"completed\"\n | \"error\"\n | \"timeout\"\n | \"terminated\";\n\ntype StartTrajectoryOptions = {\n agentId?: string;\n roomId?: string;\n entityId?: string;\n source?: string;\n scenarioId?: string;\n episodeId?: string;\n batchId?: string;\n groupIndex?: number;\n metadata?: Record<string, JsonValue>;\n};\n\ntype CompleteStepRewardInfo = {\n reward?: number;\n components?: Partial<RewardComponents>;\n};\n\ninterface StepIndexRow {\n trajectoryId: string;\n stepNumber: number;\n isActive: boolean;\n}\n\n// ============================================================================\n// Trajectory Logger Service\n// ============================================================================\n\nexport class TrajectoryLoggerService extends Service {\n static serviceType = \"trajectory_logger\";\n get serviceType() {\n return TrajectoryLoggerService.serviceType;\n }\n\n capabilityDescription =\n \"Captures and persists LLM calls, provider accesses, and full trajectories for debugging, analysis, and RL training\";\n\n private enabled = true;\n private initialized = false;\n\n // Only keep lightweight ID caches for sync compatibility.\n // Trajectory payloads are always read from / written to the database.\n private activeStepIds: Map<string, string> = new Map();\n private stepToTrajectory: Map<string, string> = new Map();\n private writeQueues: Map<string, Promise<void>> = new Map();\n\n static async start(runtime: IAgentRuntime): Promise<Service> {\n const service = new (this as any)(runtime);\n await service.initialize();\n return service;\n }\n\n\n\n async stop(): Promise<void> {\n this.enabled = false;\n }\n\n setEnabled(enabled: boolean): void {\n this.enabled = enabled;\n }\n\n isEnabled(): boolean {\n return this.enabled;\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Initialization\n // ─────────────────────────────────────────────────────────────────────────\n\n private async getSqlHelper(): Promise<{\n raw: (query: string) => { queryChunks: object[] };\n }> {\n const drizzle = (await import(\"drizzle-orm\")) as {\n sql: { raw: (query: string) => { queryChunks: object[] } };\n };\n return drizzle.sql;\n }\n\n private async executeRawSql(\n sqlText: string,\n ): Promise<{ rows: SqlRow[]; columns: string[] }> {\n const runtime = this.runtime as IAgentRuntime & {\n adapter?: { db?: unknown };\n };\n if (!runtime?.adapter) {\n throw new Error(\"Database adapter not available\");\n }\n\n const sqlHelper = await this.getSqlHelper();\n const db = runtime.adapter.db as {\n execute(query: { queryChunks: object[] }): Promise<SqlExecuteResult>;\n };\n const query = sqlHelper.raw(sqlText);\n const result = await db.execute(query);\n const rows = Array.isArray(result.rows) ? result.rows : [];\n const columns =\n result.fields && Array.isArray(result.fields)\n ? result.fields.map((field) => field.name)\n : rows.length > 0\n ? Object.keys(rows[0])\n : [];\n return { rows, columns };\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) return;\n\n const runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n if (!runtime?.adapter) {\n logger.warn(\n \"[trajectory-logger] No runtime adapter available, skipping initialization\",\n );\n return;\n }\n\n await this.ensureTablesExist();\n await this.backfillTrajectoriesMissingLlmCalls();\n this.initialized = true;\n logger.info(\"[trajectory-logger] Trajectory logger service initialized\");\n }\n\n private async getTableColumnNames(tableName: string): Promise<Set<string>> {\n const names = new Set<string>();\n\n // PostgreSQL path.\n try {\n const result = await this.executeRawSql(`\n SELECT column_name\n FROM information_schema.columns\n WHERE table_name = ${sqlLiteral(tableName)}\n AND table_schema NOT IN ('pg_catalog', 'information_schema')\n `);\n for (const row of result.rows) {\n const name = asString(pickCell(row, \"column_name\"));\n if (name) names.add(name);\n }\n if (names.size > 0) return names;\n } catch {\n // Fall through to SQLite-compatible PRAGMA lookup.\n }\n\n // SQLite / generic fallback.\n const safeTableName = tableName.replace(/[^a-zA-Z0-9_]/g, \"\");\n if (!safeTableName) return names;\n try {\n const pragma = await this.executeRawSql(\n `PRAGMA table_info(${safeTableName})`,\n );\n for (const row of pragma.rows) {\n const name = asString(pickCell(row, \"name\"));\n if (name) names.add(name);\n }\n } catch {\n // Ignore lookup failures; callers will perform best-effort migrations.\n }\n\n return names;\n }\n\n private async ensureTrajectoryColumnsExist(): Promise<void> {\n const columns = await this.getTableColumnNames(\"trajectories\");\n const requiredColumns: Array<[name: string, definition: string]> = [\n [\"scenario_id\", \"TEXT\"],\n [\"episode_id\", \"TEXT\"],\n [\"batch_id\", \"TEXT\"],\n [\"group_index\", \"INTEGER\"],\n [\"steps_json\", \"JSONB NOT NULL DEFAULT '[]'\"],\n [\"reward_components_json\", \"JSONB NOT NULL DEFAULT '{}'\"],\n [\"metrics_json\", \"JSONB NOT NULL DEFAULT '{}'\"],\n [\"metadata_json\", \"JSONB NOT NULL DEFAULT '{}'\"],\n [\"is_training_data\", \"BOOLEAN NOT NULL DEFAULT FALSE\"],\n [\"is_evaluation\", \"BOOLEAN NOT NULL DEFAULT FALSE\"],\n [\"used_in_training\", \"BOOLEAN NOT NULL DEFAULT FALSE\"],\n [\"judged_at\", \"TIMESTAMPTZ\"],\n ];\n\n for (const [columnName, definition] of requiredColumns) {\n if (columns.has(columnName)) continue;\n try {\n await this.executeRawSql(`\n ALTER TABLE trajectories\n ADD COLUMN IF NOT EXISTS ${columnName} ${definition}\n `);\n } catch (errWithIfExists) {\n // Some DB adapters don't support IF NOT EXISTS on ADD COLUMN.\n try {\n await this.executeRawSql(`\n ALTER TABLE trajectories\n ADD COLUMN ${columnName} ${definition}\n `);\n } catch (errPlain) {\n const combinedMessage = `${errWithIfExists instanceof Error ? errWithIfExists.message : String(errWithIfExists)} | ${errPlain instanceof Error ? errPlain.message : String(errPlain)}`.toLowerCase();\n if (\n combinedMessage.includes(\"already exists\") ||\n combinedMessage.includes(\"duplicate column\") ||\n combinedMessage.includes(\"duplicate_column\")\n ) {\n continue;\n }\n\n logger.warn(\n `[trajectory-logger] Failed to add trajectories.${columnName} (non-fatal): ${errPlain instanceof Error ? errPlain.message : String(errPlain)}`,\n );\n }\n }\n }\n\n // Legacy Milady schema used 32-bit INTEGER for ms timestamps. Upgrade to\n // BIGINT so runtime timestamps (Date.now()) can be stored safely.\n // This migration is Postgres-specific. Ignore on adapters that don't support it.\n for (const statement of [\n `ALTER TABLE trajectories\n ALTER COLUMN start_time TYPE BIGINT USING start_time::BIGINT`,\n `ALTER TABLE trajectories\n ALTER COLUMN end_time TYPE BIGINT USING end_time::BIGINT`,\n `ALTER TABLE trajectories\n ALTER COLUMN duration_ms TYPE BIGINT USING duration_ms::BIGINT`,\n ]) {\n try {\n await this.executeRawSql(statement);\n } catch {\n // Non-fatal portability fallback.\n }\n }\n }\n\n private async ensureTablesExist(): Promise<void> {\n // Main trajectories table\n await this.executeRawSql(`\n CREATE TABLE IF NOT EXISTS trajectories (\n id TEXT PRIMARY KEY,\n agent_id TEXT NOT NULL,\n source TEXT NOT NULL DEFAULT 'chat',\n status TEXT NOT NULL DEFAULT 'active',\n start_time BIGINT NOT NULL,\n end_time BIGINT,\n duration_ms BIGINT,\n step_count INTEGER NOT NULL DEFAULT 0,\n llm_call_count INTEGER NOT NULL DEFAULT 0,\n provider_access_count INTEGER NOT NULL DEFAULT 0,\n total_prompt_tokens INTEGER NOT NULL DEFAULT 0,\n total_completion_tokens INTEGER NOT NULL DEFAULT 0,\n total_reward REAL NOT NULL DEFAULT 0,\n scenario_id TEXT,\n episode_id TEXT,\n batch_id TEXT,\n group_index INTEGER,\n steps_json JSONB NOT NULL DEFAULT '[]',\n reward_components_json JSONB NOT NULL DEFAULT '{}',\n metrics_json JSONB NOT NULL DEFAULT '{}',\n metadata_json JSONB NOT NULL DEFAULT '{}',\n is_training_data BOOLEAN NOT NULL DEFAULT FALSE,\n is_evaluation BOOLEAN NOT NULL DEFAULT FALSE,\n used_in_training BOOLEAN NOT NULL DEFAULT FALSE,\n ai_judge_reward REAL,\n ai_judge_reasoning TEXT,\n judged_at TIMESTAMPTZ,\n created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP\n )\n `);\n await this.ensureTrajectoryColumnsExist();\n\n // Indexes for common queries\n try {\n await this.executeRawSql(\n `CREATE INDEX IF NOT EXISTS idx_trajectories_agent_id ON trajectories(agent_id)`,\n );\n await this.executeRawSql(\n `CREATE INDEX IF NOT EXISTS idx_trajectories_source ON trajectories(source)`,\n );\n await this.executeRawSql(\n `CREATE INDEX IF NOT EXISTS idx_trajectories_status ON trajectories(status)`,\n );\n await this.executeRawSql(\n `CREATE INDEX IF NOT EXISTS idx_trajectories_created_at ON trajectories(created_at)`,\n );\n await this.executeRawSql(\n `CREATE INDEX IF NOT EXISTS idx_trajectories_scenario_id ON trajectories(scenario_id)`,\n );\n await this.executeRawSql(\n `CREATE INDEX IF NOT EXISTS idx_trajectories_batch_id ON trajectories(batch_id)`,\n );\n await this.executeRawSql(\n `CREATE INDEX IF NOT EXISTS idx_trajectories_is_training ON trajectories(is_training_data)`,\n );\n } catch (e) {\n // Ignore index creation errors (e.g. if they already exist or are being created by another process)\n logger.warn(\n `[trajectory-logger] Failed to create indexes (non-fatal): ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n\n // Step index keeps step -> trajectory mapping in DB so logs remain routable\n // across process restarts.\n await this.executeRawSql(`\n CREATE TABLE IF NOT EXISTS trajectory_step_index (\n step_id TEXT PRIMARY KEY,\n trajectory_id TEXT NOT NULL REFERENCES trajectories(id) ON DELETE CASCADE,\n step_number INTEGER NOT NULL DEFAULT 0,\n is_active BOOLEAN NOT NULL DEFAULT FALSE,\n created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP\n )\n `);\n await this.executeRawSql(\n `CREATE INDEX IF NOT EXISTS idx_trajectory_step_index_trajectory_id ON trajectory_step_index(trajectory_id)`,\n );\n await this.executeRawSql(\n `CREATE INDEX IF NOT EXISTS idx_trajectory_step_index_is_active ON trajectory_step_index(is_active)`,\n );\n }\n\n private normalizeTrajectoryStatus(value: string | null): TrajectoryStatus {\n switch (value) {\n case \"active\":\n case \"completed\":\n case \"error\":\n case \"timeout\":\n case \"terminated\":\n return value;\n default:\n return \"completed\";\n }\n }\n\n private async backfillTrajectoriesMissingLlmCalls(): Promise<void> {\n const maxRows = 2000;\n let fixed = 0;\n\n try {\n const rows = await this.executeRawSql(`\n SELECT id, status\n FROM trajectories\n WHERE COALESCE(llm_call_count, 0) = 0\n AND status <> 'active'\n ORDER BY created_at ASC\n LIMIT ${maxRows}\n `);\n\n for (const row of rows.rows) {\n const trajectoryId = asString(pickCell(row, \"id\"));\n if (!trajectoryId) continue;\n const status = this.normalizeTrajectoryStatus(\n asString(pickCell(row, \"status\")),\n );\n\n await this.withTrajectoryWriteLock(trajectoryId, async () => {\n const trajectory = await this.getTrajectoryById(trajectoryId);\n if (!trajectory) return;\n\n const inserted = this.ensureAtLeastOneLlmCall(\n trajectory,\n \"backfill\",\n );\n if (!inserted) return;\n\n await this.persistTrajectory(trajectoryId, trajectory, status);\n fixed += 1;\n });\n }\n\n if (fixed > 0) {\n logger.info(\n `[trajectory-logger] Backfilled ${fixed} completed trajectories with synthetic LLM calls`,\n );\n }\n if (rows.rows.length >= maxRows) {\n logger.warn(\n `[trajectory-logger] Backfill hit safety cap (${maxRows}); remaining older trajectories will be fixed lazily when touched`,\n );\n }\n } catch (err) {\n logger.warn(\n `[trajectory-logger] Failed to backfill trajectories missing LLM calls (non-fatal): ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Runtime Interface (called by @elizaos/core runtime)\n // ─────────────────────────────────────────────────────────────────────────\n\n private normalizePurpose(value: string): LLMCall[\"purpose\"] {\n switch (value) {\n case \"action\":\n case \"reasoning\":\n case \"evaluation\":\n case \"response\":\n case \"other\":\n return value;\n default:\n return \"other\";\n }\n }\n\n private defaultEnvironmentState(timestamp = Date.now()): EnvironmentState {\n return {\n timestamp,\n agentBalance: 0,\n agentPoints: 0,\n agentPnL: 0,\n openPositions: 0,\n };\n }\n\n private createPendingAction(stepTimestamp: number): ActionAttempt {\n return {\n attemptId: \"\",\n timestamp: stepTimestamp,\n actionType: \"pending\",\n actionName: \"pending\",\n parameters: {},\n success: false,\n };\n }\n\n private createStep(\n stepId: string,\n stepNumber: number,\n envState: EnvironmentState,\n ): TrajectoryStep {\n const timestamp = envState.timestamp || Date.now();\n return {\n stepId: stepId as `${string}-${string}-${string}-${string}-${string}`,\n stepNumber,\n timestamp,\n environmentState: envState,\n observation: {},\n llmCalls: [],\n providerAccesses: [],\n action: this.createPendingAction(timestamp),\n reward: 0,\n done: false,\n };\n }\n\n private ensureAtLeastOneLlmCall(\n trajectory: Trajectory,\n source: \"finalize\" | \"backfill\",\n ): boolean {\n if (this.computeTotals(trajectory.steps).llmCallCount > 0) {\n return false;\n }\n\n const timestamp = Date.now();\n let step = trajectory.steps[trajectory.steps.length - 1];\n if (!step) {\n step = this.createStep(\n uuidv4(),\n 0,\n this.defaultEnvironmentState(timestamp),\n );\n step.done = true;\n trajectory.steps.push(step);\n }\n if (!Array.isArray(step.llmCalls)) {\n step.llmCalls = [];\n }\n\n const syntheticCall: LLMCall = {\n callId: uuidv4(),\n timestamp,\n model: \"milady/synthetic-trajectory-fallback\",\n systemPrompt:\n \"[synthetic] inserted by trajectory logger because no LLM calls were captured\",\n userPrompt:\n \"[synthetic] this trajectory completed without recorded model activity\",\n response:\n \"[synthetic] placeholder call inserted to enforce minimum llm_call_count=1\",\n temperature: 0,\n maxTokens: 0,\n promptTokens: 0,\n completionTokens: 0,\n latencyMs: 0,\n purpose: \"other\",\n actionType: \"TRAJECTORY_FALLBACK\",\n };\n step.llmCalls.push(syntheticCall);\n\n if (!step.metadata) step.metadata = {};\n step.metadata.syntheticLlmCall = true;\n step.metadata.syntheticLlmCallSource = source;\n\n trajectory.metadata.syntheticLlmCall = true;\n trajectory.metadata.syntheticLlmCallSource = source;\n const existingFallbackCount = trajectory.metrics.syntheticLlmFallbackCount;\n trajectory.metrics.syntheticLlmFallbackCount =\n typeof existingFallbackCount === \"number\" &&\n Number.isFinite(existingFallbackCount)\n ? existingFallbackCount + 1\n : 1;\n\n return true;\n }\n\n private computeTotals(steps: TrajectoryStep[]): {\n stepCount: number;\n llmCallCount: number;\n providerAccessCount: number;\n totalPromptTokens: number;\n totalCompletionTokens: number;\n } {\n let llmCallCount = 0;\n let providerAccessCount = 0;\n let totalPromptTokens = 0;\n let totalCompletionTokens = 0;\n for (const step of steps) {\n const llmCalls = Array.isArray(step.llmCalls) ? step.llmCalls : [];\n const providerAccesses = Array.isArray(step.providerAccesses)\n ? step.providerAccesses\n : [];\n llmCallCount += llmCalls.length;\n providerAccessCount += providerAccesses.length;\n for (const call of llmCalls) {\n totalPromptTokens += call.promptTokens ?? 0;\n totalCompletionTokens += call.completionTokens ?? 0;\n }\n }\n return {\n stepCount: steps.length,\n llmCallCount,\n providerAccessCount,\n totalPromptTokens,\n totalCompletionTokens,\n };\n }\n\n private async withTrajectoryWriteLock(\n trajectoryId: string,\n task: () => Promise<void>,\n ): Promise<void> {\n const previous = this.writeQueues.get(trajectoryId) ?? Promise.resolve();\n const next = previous\n .catch(() => {\n // Keep queue alive after failures.\n })\n .then(task);\n this.writeQueues.set(trajectoryId, next);\n try {\n await next;\n } finally {\n if (this.writeQueues.get(trajectoryId) === next) {\n this.writeQueues.delete(trajectoryId);\n }\n }\n }\n\n private async getTrajectoryById(trajectoryId: string): Promise<Trajectory | null> {\n const result = await this.executeRawSql(\n `SELECT * FROM trajectories WHERE id = ${sqlLiteral(trajectoryId)} LIMIT 1`,\n );\n if (result.rows.length === 0) return null;\n return this.rowToTrajectory(result.rows[0]);\n }\n\n private async getStepIndex(stepId: string): Promise<StepIndexRow | null> {\n const result = await this.executeRawSql(\n `SELECT trajectory_id, step_number, is_active FROM trajectory_step_index WHERE step_id = ${sqlLiteral(stepId)} LIMIT 1`,\n );\n const row = result.rows[0];\n if (!row) return null;\n const trajectoryId = asString(pickCell(row, \"trajectory_id\"));\n if (!trajectoryId) return null;\n const stepNumber = asNumber(pickCell(row, \"step_number\")) ?? 0;\n const isActiveText = asString(pickCell(row, \"is_active\"));\n const isActive =\n isActiveText === \"true\" ||\n isActiveText === \"t\" ||\n pickCell(row, \"is_active\") === true;\n return { trajectoryId, stepNumber, isActive };\n }\n\n private async setStepIndex(\n stepId: string,\n trajectoryId: string,\n stepNumber: number,\n isActive: boolean,\n ): Promise<void> {\n await this.executeRawSql(`\n INSERT INTO trajectory_step_index (\n step_id, trajectory_id, step_number, is_active, updated_at\n ) VALUES (\n ${sqlLiteral(stepId)},\n ${sqlLiteral(trajectoryId)},\n ${stepNumber},\n ${isActive ? \"TRUE\" : \"FALSE\"},\n CURRENT_TIMESTAMP\n )\n ON CONFLICT (step_id) DO UPDATE SET\n trajectory_id = EXCLUDED.trajectory_id,\n step_number = EXCLUDED.step_number,\n is_active = EXCLUDED.is_active,\n updated_at = CURRENT_TIMESTAMP\n `);\n }\n\n private async markAllStepsInactive(trajectoryId: string): Promise<void> {\n await this.executeRawSql(`\n UPDATE trajectory_step_index\n SET is_active = FALSE, updated_at = CURRENT_TIMESTAMP\n WHERE trajectory_id = ${sqlLiteral(trajectoryId)}\n `);\n }\n\n private async resolveTrajectoryId(\n stepIdOrTrajectoryId: string,\n ): Promise<string | null> {\n const cached = this.stepToTrajectory.get(stepIdOrTrajectoryId);\n if (cached) return cached;\n\n const byStep = await this.getStepIndex(stepIdOrTrajectoryId);\n if (byStep?.trajectoryId) {\n this.stepToTrajectory.set(stepIdOrTrajectoryId, byStep.trajectoryId);\n return byStep.trajectoryId;\n }\n\n const byId = await this.executeRawSql(\n `SELECT id FROM trajectories WHERE id = ${sqlLiteral(stepIdOrTrajectoryId)} LIMIT 1`,\n );\n const row = byId.rows[0];\n const id = row ? asString(pickCell(row, \"id\")) : null;\n return id;\n }\n\n private async getCurrentStepIdFromDb(\n trajectoryId: string,\n ): Promise<string | null> {\n const result = await this.executeRawSql(`\n SELECT step_id\n FROM trajectory_step_index\n WHERE trajectory_id = ${sqlLiteral(trajectoryId)} AND is_active = TRUE\n ORDER BY step_number DESC, updated_at DESC\n LIMIT 1\n `);\n const row = result.rows[0];\n return row ? asString(pickCell(row, \"step_id\")) : null;\n }\n\n private async persistTrajectory(\n trajectoryId: string,\n trajectory: Trajectory,\n status: TrajectoryStatus = \"active\",\n ): Promise<void> {\n if (status !== \"active\") {\n this.ensureAtLeastOneLlmCall(trajectory, \"finalize\");\n }\n\n const totals = this.computeTotals(trajectory.steps);\n const isFinalStatus = status !== \"active\";\n const persistedEndTime = isFinalStatus ? trajectory.endTime : null;\n const persistedDuration = isFinalStatus ? trajectory.durationMs : null;\n const updatedAtIso = new Date().toISOString();\n try {\n await this.executeRawSql(`\n UPDATE trajectories SET\n status = ${sqlLiteral(status)},\n end_time = ${sqlLiteral(persistedEndTime)},\n duration_ms = ${sqlLiteral(persistedDuration)},\n step_count = ${totals.stepCount},\n llm_call_count = ${totals.llmCallCount},\n provider_access_count = ${totals.providerAccessCount},\n total_prompt_tokens = ${totals.totalPromptTokens},\n total_completion_tokens = ${totals.totalCompletionTokens},\n total_reward = ${trajectory.totalReward},\n steps_json = ${sqlLiteral(trajectory.steps)},\n reward_components_json = ${sqlLiteral(trajectory.rewardComponents)},\n metrics_json = ${sqlLiteral(trajectory.metrics)},\n metadata_json = ${sqlLiteral(trajectory.metadata)},\n updated_at = ${sqlLiteral(updatedAtIso)}\n WHERE id = ${sqlLiteral(trajectoryId)}\n `);\n } catch (modernErr) {\n // Compatibility fallback for legacy Milady schema.\n await this.executeRawSql(`\n UPDATE trajectories SET\n status = ${sqlLiteral(status)},\n end_time = ${sqlLiteral(persistedEndTime)},\n duration_ms = ${sqlLiteral(persistedDuration)},\n step_count = ${totals.stepCount},\n llm_call_count = ${totals.llmCallCount},\n provider_access_count = ${totals.providerAccessCount},\n total_prompt_tokens = ${totals.totalPromptTokens},\n total_completion_tokens = ${totals.totalCompletionTokens},\n total_reward = ${trajectory.totalReward},\n steps_json = ${sqlLiteral(trajectory.steps)},\n metadata = ${sqlLiteral(trajectory.metadata)},\n updated_at = ${sqlLiteral(updatedAtIso)}\n WHERE id = ${sqlLiteral(trajectoryId)}\n `).catch((legacyErr) => {\n logger.warn(\n { err: legacyErr, trajectoryId },\n `[trajectory-logger] Failed to persist trajectory update after compatibility fallback: ${modernErr instanceof Error ? modernErr.message : String(modernErr)}`,\n );\n throw legacyErr;\n });\n }\n }\n\n private async ensureStepExists(\n trajectory: Trajectory,\n stepId: string,\n ): Promise<TrajectoryStep> {\n let step = trajectory.steps.find((entry) => entry.stepId === stepId);\n if (step) {\n if (!Array.isArray(step.llmCalls)) step.llmCalls = [];\n if (!Array.isArray(step.providerAccesses)) step.providerAccesses = [];\n return step;\n }\n\n const index = await this.getStepIndex(stepId);\n const stepNumber = index?.stepNumber ?? trajectory.steps.length;\n step = this.createStep(stepId, stepNumber, this.defaultEnvironmentState());\n trajectory.steps.push(step);\n trajectory.steps.sort((a, b) => a.stepNumber - b.stepNumber);\n return step;\n }\n\n /**\n * Called by the runtime when an LLM call is made.\n * This is the interface the runtime expects.\n */\n logLlmCall(params: {\n stepId: string;\n model: string;\n modelVersion?: string;\n systemPrompt: string;\n userPrompt: string;\n response: string;\n reasoning?: string;\n temperature: number;\n maxTokens: number;\n purpose: string;\n actionType: string;\n latencyMs: number;\n promptTokens?: number;\n completionTokens?: number;\n }): void {\n if (!this.enabled) return;\n\n void (async () => {\n const trajectoryId = await this.resolveTrajectoryId(params.stepId);\n if (!trajectoryId) {\n logger.debug(\n { stepId: params.stepId },\n \"[trajectory-logger] No trajectory mapping for LLM call\",\n );\n return;\n }\n\n await this.withTrajectoryWriteLock(trajectoryId, async () => {\n const trajectory = await this.getTrajectoryById(trajectoryId);\n if (!trajectory) return;\n\n const step = await this.ensureStepExists(trajectory, params.stepId);\n const llmCall: LLMCall = {\n callId: uuidv4(),\n timestamp: Date.now(),\n model: params.model,\n modelVersion: params.modelVersion,\n systemPrompt: params.systemPrompt,\n userPrompt: params.userPrompt,\n response: params.response,\n reasoning: params.reasoning,\n temperature: params.temperature,\n maxTokens: params.maxTokens,\n purpose: this.normalizePurpose(params.purpose),\n actionType: params.actionType,\n promptTokens: params.promptTokens,\n completionTokens: params.completionTokens,\n latencyMs: params.latencyMs,\n };\n step.llmCalls.push(llmCall);\n await this.persistTrajectory(trajectoryId, trajectory, \"active\");\n });\n })().catch((err) => {\n logger.warn(\n { err, stepId: params.stepId },\n \"[trajectory-logger] Failed to persist LLM call\",\n );\n });\n }\n\n // Legacy compatibility helper (old camel-casing + split args).\n logLLMCall(\n stepId: string,\n details: {\n model: string;\n modelVersion?: string;\n systemPrompt: string;\n userPrompt: string;\n response: string;\n reasoning?: string;\n temperature: number;\n maxTokens: number;\n purpose: string;\n actionType?: string;\n latencyMs?: number;\n promptTokens?: number;\n completionTokens?: number;\n },\n ): void {\n this.logLlmCall({\n stepId,\n model: details.model,\n modelVersion: details.modelVersion,\n systemPrompt: details.systemPrompt,\n userPrompt: details.userPrompt,\n response: details.response,\n reasoning: details.reasoning,\n temperature: details.temperature,\n maxTokens: details.maxTokens,\n purpose: details.purpose,\n actionType: details.actionType ?? \"\",\n latencyMs: details.latencyMs ?? 0,\n promptTokens: details.promptTokens,\n completionTokens: details.completionTokens,\n });\n }\n\n /**\n * Called by the runtime when a provider is accessed.\n * Supports both runtime shape and legacy split args.\n */\n logProviderAccess(params: {\n stepId: string;\n providerName: string;\n data: Record<string, unknown>;\n purpose: string;\n query?: Record<string, unknown>;\n }): void;\n logProviderAccess(\n stepId: string,\n params: {\n providerName: string;\n data: Record<string, unknown>;\n purpose: string;\n query?: Record<string, unknown>;\n },\n ): void;\n logProviderAccess(\n arg1:\n | string\n | {\n stepId: string;\n providerName: string;\n data: Record<string, unknown>;\n purpose: string;\n query?: Record<string, unknown>;\n },\n arg2?: {\n providerName: string;\n data: Record<string, unknown>;\n purpose: string;\n query?: Record<string, unknown>;\n },\n ): void {\n if (!this.enabled) return;\n const params =\n typeof arg1 === \"string\"\n ? {\n stepId: arg1,\n providerName: arg2?.providerName ?? \"unknown\",\n data: arg2?.data ?? {},\n purpose: arg2?.purpose ?? \"other\",\n query: arg2?.query,\n }\n : arg1;\n\n void (async () => {\n const trajectoryId = await this.resolveTrajectoryId(params.stepId);\n if (!trajectoryId) {\n logger.debug(\n { stepId: params.stepId },\n \"[trajectory-logger] No trajectory mapping for provider access\",\n );\n return;\n }\n\n await this.withTrajectoryWriteLock(trajectoryId, async () => {\n const trajectory = await this.getTrajectoryById(trajectoryId);\n if (!trajectory) return;\n\n const step = await this.ensureStepExists(trajectory, params.stepId);\n const access: ProviderAccess = {\n providerId: uuidv4(),\n providerName: params.providerName,\n timestamp: Date.now(),\n data: params.data as Record<string, JsonValue>,\n query: params.query as Record<string, JsonValue> | undefined,\n purpose: params.purpose,\n };\n step.providerAccesses.push(access);\n await this.persistTrajectory(trajectoryId, trajectory, \"active\");\n });\n })().catch((err) => {\n logger.warn(\n { err, stepId: params.stepId },\n \"[trajectory-logger] Failed to persist provider access\",\n );\n });\n }\n\n logProviderAccessByTrajectoryId(\n trajectoryId: string,\n access: {\n providerName: string;\n data: Record<string, unknown>;\n purpose: string;\n query?: Record<string, unknown>;\n },\n ): void {\n const stepId = this.getCurrentStepId(trajectoryId);\n if (!stepId) {\n logger.debug(\n { trajectoryId },\n \"[trajectory-logger] No active step for provider access by trajectory\",\n );\n return;\n }\n this.logProviderAccess(stepId, access);\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Trajectory Lifecycle (for RL training / message handling)\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Start a new trajectory. Supports both call styles:\n * 1) startTrajectory(stepId, { agentId, ...legacyOptions })\n * 2) startTrajectory(agentId, { ...optionsWithoutAgentId })\n */\n async startTrajectory(\n stepIdOrAgentId: string,\n options: StartTrajectoryOptions = {},\n ): Promise<string> {\n if (!this.enabled) return uuidv4();\n\n const legacyStepId =\n typeof options.agentId === \"string\" && options.agentId.length > 0\n ? stepIdOrAgentId\n : null;\n const agentId =\n (typeof options.agentId === \"string\" && options.agentId.length > 0\n ? options.agentId\n : stepIdOrAgentId) ?? stepIdOrAgentId;\n\n const trajectoryId = uuidv4();\n const now = Date.now();\n const timestampIso = new Date(now).toISOString();\n const metadata: Record<string, JsonValue> = {\n ...(options.metadata ?? {}),\n };\n if (options.roomId) metadata.roomId = options.roomId;\n if (options.entityId) metadata.entityId = options.entityId;\n\n const trajectory: Trajectory = {\n trajectoryId: trajectoryId as `${string}-${string}-${string}-${string}-${string}`,\n agentId: agentId as `${string}-${string}-${string}-${string}-${string}`,\n startTime: now,\n endTime: now,\n durationMs: 0,\n scenarioId: options.scenarioId,\n episodeId: options.episodeId,\n batchId: options.batchId,\n groupIndex: options.groupIndex,\n steps: [],\n totalReward: 0,\n rewardComponents: { environmentReward: 0 },\n metrics: {\n episodeLength: 0,\n finalStatus: \"completed\",\n },\n metadata: {\n source: options.source ?? \"chat\",\n ...metadata,\n },\n };\n\n let persistedStart = false;\n try {\n await this.executeRawSql(`\n INSERT INTO trajectories (\n id, agent_id, source, status, start_time, scenario_id, episode_id,\n batch_id, group_index, metadata_json, steps_json, reward_components_json, metrics_json,\n created_at, updated_at\n ) VALUES (\n ${sqlLiteral(trajectoryId)},\n ${sqlLiteral(agentId)},\n ${sqlLiteral(options.source ?? \"chat\")},\n 'active',\n ${now},\n ${sqlLiteral(options.scenarioId ?? null)},\n ${sqlLiteral(options.episodeId ?? null)},\n ${sqlLiteral(options.batchId ?? null)},\n ${options.groupIndex ?? \"NULL\"},\n ${sqlLiteral(trajectory.metadata)},\n ${sqlLiteral([])},\n ${sqlLiteral(trajectory.rewardComponents)},\n ${sqlLiteral(trajectory.metrics)},\n ${sqlLiteral(timestampIso)},\n ${sqlLiteral(timestampIso)}\n )\n `);\n persistedStart = true;\n } catch (err) {\n try {\n // Compatibility fallback for legacy Milady schema that stores metadata\n // in `metadata` instead of `metadata_json`.\n await this.executeRawSql(`\n INSERT INTO trajectories (\n id, agent_id, source, status, start_time, steps_json, metadata, created_at, updated_at\n ) VALUES (\n ${sqlLiteral(trajectoryId)},\n ${sqlLiteral(agentId)},\n ${sqlLiteral(options.source ?? \"chat\")},\n 'active',\n ${now},\n ${sqlLiteral([])},\n ${sqlLiteral(trajectory.metadata)},\n ${sqlLiteral(timestampIso)},\n ${sqlLiteral(timestampIso)}\n )\n `);\n persistedStart = true;\n } catch (legacyErr) {\n logger.warn(\n { err: legacyErr, trajectoryId },\n \"[trajectory-logger] Failed to persist trajectory start\",\n );\n }\n }\n\n if (persistedStart && legacyStepId) {\n this.stepToTrajectory.set(legacyStepId, trajectoryId);\n try {\n await this.setStepIndex(legacyStepId, trajectoryId, -1, false);\n } catch (indexErr) {\n logger.warn(\n { err: indexErr, trajectoryId, stepId: legacyStepId },\n \"[trajectory-logger] Failed to persist step index for trajectory start\",\n );\n }\n }\n\n return trajectoryId;\n }\n\n /**\n * Start a new step within a trajectory.\n */\n startStep(trajectoryId: string, envState: EnvironmentState): string {\n if (!this.enabled) return uuidv4();\n\n const stepId = uuidv4();\n this.activeStepIds.set(trajectoryId, stepId);\n this.stepToTrajectory.set(stepId, trajectoryId);\n\n void this\n .withTrajectoryWriteLock(trajectoryId, async () => {\n const trajectory = await this.getTrajectoryById(trajectoryId);\n if (!trajectory) {\n logger.warn(\n { trajectoryId },\n \"[trajectory-logger] Trajectory not found for startStep\",\n );\n return;\n }\n\n const step = this.createStep(stepId, trajectory.steps.length, envState);\n trajectory.steps.push(step);\n await this.markAllStepsInactive(trajectoryId);\n await this.setStepIndex(stepId, trajectoryId, step.stepNumber, true);\n await this.persistTrajectory(trajectoryId, trajectory, \"active\");\n })\n .catch((err) => {\n logger.warn(\n { err, trajectoryId, stepId },\n \"[trajectory-logger] Failed to persist startStep\",\n );\n });\n\n return stepId;\n }\n\n /**\n * Complete a step with action results.\n * Supports:\n * completeStep(trajectoryId, action, rewardInfo?)\n * completeStep(trajectoryId, stepId, action, rewardInfo?)\n */\n completeStep(\n trajectoryId: string,\n action: Omit<ActionAttempt, \"attemptId\" | \"timestamp\">,\n rewardInfo?: CompleteStepRewardInfo,\n ): void;\n completeStep(\n trajectoryId: string,\n stepId: string,\n action: Omit<ActionAttempt, \"attemptId\" | \"timestamp\">,\n rewardInfo?: CompleteStepRewardInfo,\n ): void;\n completeStep(\n trajectoryId: string,\n actionOrStepId: string | Omit<ActionAttempt, \"attemptId\" | \"timestamp\">,\n actionOrReward?: Omit<ActionAttempt, \"attemptId\" | \"timestamp\"> | CompleteStepRewardInfo,\n maybeReward?: CompleteStepRewardInfo,\n ): void {\n if (!this.enabled) return;\n\n const explicitStepId =\n typeof actionOrStepId === \"string\" ? actionOrStepId : null;\n const action =\n (typeof actionOrStepId === \"string\" ? actionOrReward : actionOrStepId) as\n | Omit<ActionAttempt, \"attemptId\" | \"timestamp\">\n | undefined;\n const rewardInfo =\n (typeof actionOrStepId === \"string\" ? maybeReward : actionOrReward) as\n | CompleteStepRewardInfo\n | undefined;\n\n if (!action) return;\n\n void this\n .withTrajectoryWriteLock(trajectoryId, async () => {\n const trajectory = await this.getTrajectoryById(trajectoryId);\n if (!trajectory) return;\n\n const stepId =\n explicitStepId ??\n this.activeStepIds.get(trajectoryId) ??\n (await this.getCurrentStepIdFromDb(trajectoryId));\n if (!stepId) return;\n\n const step = await this.ensureStepExists(trajectory, stepId);\n step.action = {\n attemptId: uuidv4(),\n timestamp: Date.now(),\n ...action,\n };\n step.done = true;\n\n if (rewardInfo?.reward !== undefined) {\n step.reward = rewardInfo.reward;\n trajectory.totalReward += rewardInfo.reward;\n }\n if (rewardInfo?.components) {\n trajectory.rewardComponents = {\n ...trajectory.rewardComponents,\n ...rewardInfo.components,\n };\n }\n\n await this.setStepIndex(stepId, trajectoryId, step.stepNumber, false);\n this.activeStepIds.delete(trajectoryId);\n await this.persistTrajectory(trajectoryId, trajectory, \"active\");\n })\n .catch((err) => {\n logger.warn(\n { err, trajectoryId },\n \"[trajectory-logger] Failed to complete step\",\n );\n });\n }\n\n /**\n * End a trajectory and persist final state.\n */\n async endTrajectory(\n stepIdOrTrajectoryId: string,\n status: \"completed\" | \"error\" | \"timeout\" | \"terminated\" = \"completed\",\n finalMetrics?: Record<string, JsonValue>,\n ): Promise<void> {\n if (!this.enabled) return;\n\n const trajectoryId = await this.resolveTrajectoryId(stepIdOrTrajectoryId);\n if (!trajectoryId) {\n logger.debug(\n { stepIdOrTrajectoryId },\n \"[trajectory-logger] No trajectory to end\",\n );\n return;\n }\n\n await this.withTrajectoryWriteLock(trajectoryId, async () => {\n const trajectory = await this.getTrajectoryById(trajectoryId);\n if (!trajectory) {\n logger.debug(\n { trajectoryId },\n \"[trajectory-logger] Trajectory not found while ending\",\n );\n return;\n }\n\n const now = Date.now();\n trajectory.endTime = now;\n trajectory.durationMs = now - trajectory.startTime;\n trajectory.metrics.finalStatus = status;\n trajectory.metrics.episodeLength = trajectory.steps.length;\n if (finalMetrics) {\n trajectory.metrics = {\n ...trajectory.metrics,\n ...finalMetrics,\n };\n }\n\n await this.markAllStepsInactive(trajectoryId);\n this.activeStepIds.delete(trajectoryId);\n await this.persistTrajectory(trajectoryId, trajectory, status);\n });\n\n for (const [stepId, mappedTrajectoryId] of this.stepToTrajectory.entries()) {\n if (mappedTrajectoryId === trajectoryId) {\n this.stepToTrajectory.delete(stepId);\n }\n }\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Query Interface (for UI and export)\n // ─────────────────────────────────────────────────────────────────────────\n\n async listTrajectories(\n options: TrajectoryListOptions = {},\n ): Promise<TrajectoryListResult> {\n const runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n if (!runtime?.adapter) {\n return { trajectories: [], total: 0, offset: 0, limit: 50 };\n }\n\n const offset = Math.max(0, options.offset ?? 0);\n const limit = Math.min(500, Math.max(1, options.limit ?? 50));\n\n const whereClauses: string[] = [];\n if (options.status) {\n whereClauses.push(`status = ${sqlLiteral(options.status)}`);\n }\n if (options.source) {\n whereClauses.push(`source = ${sqlLiteral(options.source)}`);\n }\n if (options.scenarioId) {\n whereClauses.push(`scenario_id = ${sqlLiteral(options.scenarioId)}`);\n }\n if (options.batchId) {\n whereClauses.push(`batch_id = ${sqlLiteral(options.batchId)}`);\n }\n if (options.isTrainingData !== undefined) {\n whereClauses.push(`is_training_data = ${options.isTrainingData}`);\n }\n if (options.startDate) {\n whereClauses.push(\n `created_at >= ${sqlLiteral(options.startDate)}::timestamptz`,\n );\n }\n if (options.endDate) {\n whereClauses.push(\n `created_at <= ${sqlLiteral(options.endDate)}::timestamptz`,\n );\n }\n if (options.search) {\n const escaped = options.search.replace(/'/g, \"''\").replace(/%/g, \"\\\\%\");\n whereClauses.push(`(\n id ILIKE '%${escaped}%' OR\n agent_id ILIKE '%${escaped}%' OR\n source ILIKE '%${escaped}%' OR\n scenario_id ILIKE '%${escaped}%'\n )`);\n }\n\n const whereClause =\n whereClauses.length > 0 ? `WHERE ${whereClauses.join(\" AND \")}` : \"\";\n\n const countResult = await this.executeRawSql(\n `SELECT count(*)::int AS total FROM trajectories ${whereClause}`,\n );\n const total = asNumber(pickCell(countResult.rows[0] ?? {}, \"total\")) ?? 0;\n\n const rowsResult = await this.executeRawSql(`\n SELECT\n id, agent_id, source, status, start_time, end_time, duration_ms,\n step_count, llm_call_count, total_prompt_tokens, total_completion_tokens,\n total_reward, scenario_id, batch_id, created_at\n FROM trajectories\n ${whereClause}\n ORDER BY created_at DESC\n LIMIT ${limit} OFFSET ${offset}\n `);\n\n const trajectories: TrajectoryListItem[] = rowsResult.rows.map((row) => {\n const status =\n (asString(pickCell(row, \"status\")) as TrajectoryListItem[\"status\"]) ??\n \"completed\";\n const rawLlmCallCount = asNumber(pickCell(row, \"llm_call_count\")) ?? 0;\n const llmCallCount =\n status === \"active\" ? rawLlmCallCount : Math.max(1, rawLlmCallCount);\n\n return {\n id: asString(pickCell(row, \"id\")) ?? \"\",\n agentId: asString(pickCell(row, \"agent_id\")) ?? \"\",\n source: asString(pickCell(row, \"source\")) ?? \"chat\",\n status,\n startTime: asNumber(pickCell(row, \"start_time\")) ?? 0,\n endTime: asNumber(pickCell(row, \"end_time\")),\n durationMs: asNumber(pickCell(row, \"duration_ms\")),\n stepCount: asNumber(pickCell(row, \"step_count\")) ?? 0,\n llmCallCount,\n totalPromptTokens: asNumber(pickCell(row, \"total_prompt_tokens\")) ?? 0,\n totalCompletionTokens:\n asNumber(pickCell(row, \"total_completion_tokens\")) ?? 0,\n totalReward: asNumber(pickCell(row, \"total_reward\")) ?? 0,\n scenarioId: asString(pickCell(row, \"scenario_id\")),\n batchId: asString(pickCell(row, \"batch_id\")),\n createdAt: asIsoString(pickCell(row, \"created_at\")),\n };\n });\n\n return { trajectories, total, offset, limit };\n }\n\n async getTrajectoryDetail(trajectoryId: string): Promise<Trajectory | null> {\n const runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n if (!runtime?.adapter) return null;\n\n const safeId = trajectoryId.replace(/'/g, \"''\");\n const result = await this.executeRawSql(\n `SELECT * FROM trajectories WHERE id = '${safeId}' LIMIT 1`,\n );\n\n if (result.rows.length === 0) return null;\n\n const row = result.rows[0];\n const trajectory = this.rowToTrajectory(row);\n const status = this.normalizeTrajectoryStatus(\n asString(pickCell(row, \"status\")),\n );\n if (status !== \"active\") {\n const inserted = this.ensureAtLeastOneLlmCall(trajectory, \"backfill\");\n if (inserted) {\n await this.withTrajectoryWriteLock(trajectoryId, async () => {\n await this.persistTrajectory(trajectoryId, trajectory, status);\n });\n }\n }\n return trajectory;\n }\n\n async getStats(): Promise<TrajectoryStats> {\n const runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n if (!runtime?.adapter) {\n return {\n totalTrajectories: 0,\n totalSteps: 0,\n totalLlmCalls: 0,\n totalPromptTokens: 0,\n totalCompletionTokens: 0,\n averageDurationMs: 0,\n averageReward: 0,\n bySource: {},\n byStatus: {},\n byScenario: {},\n };\n }\n\n const statsResult = await this.executeRawSql(`\n SELECT\n count(*)::int AS total_trajectories,\n COALESCE(sum(step_count), 0)::int AS total_steps,\n COALESCE(sum(llm_call_count), 0)::int AS total_llm_calls,\n COALESCE(sum(total_prompt_tokens), 0)::int AS total_prompt_tokens,\n COALESCE(sum(total_completion_tokens), 0)::int AS total_completion_tokens,\n COALESCE(avg(duration_ms), 0)::int AS avg_duration_ms,\n COALESCE(avg(total_reward), 0)::real AS avg_reward\n FROM trajectories\n `);\n\n const sourceResult = await this.executeRawSql(`\n SELECT source, count(*)::int AS cnt\n FROM trajectories\n GROUP BY source\n `);\n\n const statusResult = await this.executeRawSql(`\n SELECT status, count(*)::int AS cnt\n FROM trajectories\n GROUP BY status\n `);\n\n const scenarioResult = await this.executeRawSql(`\n SELECT scenario_id, count(*)::int AS cnt\n FROM trajectories\n WHERE scenario_id IS NOT NULL\n GROUP BY scenario_id\n `);\n\n const stats = statsResult.rows[0] ?? {};\n const bySource: Record<string, number> = {};\n const byStatus: Record<string, number> = {};\n const byScenario: Record<string, number> = {};\n\n for (const row of sourceResult.rows) {\n const source = asString(pickCell(row, \"source\"));\n const cnt = asNumber(pickCell(row, \"cnt\"));\n if (source && cnt !== null) bySource[source] = cnt;\n }\n\n for (const row of statusResult.rows) {\n const status = asString(pickCell(row, \"status\"));\n const cnt = asNumber(pickCell(row, \"cnt\"));\n if (status && cnt !== null) byStatus[status] = cnt;\n }\n\n for (const row of scenarioResult.rows) {\n const scenario = asString(pickCell(row, \"scenario_id\"));\n const cnt = asNumber(pickCell(row, \"cnt\"));\n if (scenario && cnt !== null) byScenario[scenario] = cnt;\n }\n\n return {\n totalTrajectories: asNumber(pickCell(stats, \"total_trajectories\")) ?? 0,\n totalSteps: asNumber(pickCell(stats, \"total_steps\")) ?? 0,\n totalLlmCalls: asNumber(pickCell(stats, \"total_llm_calls\")) ?? 0,\n totalPromptTokens: asNumber(pickCell(stats, \"total_prompt_tokens\")) ?? 0,\n totalCompletionTokens: asNumber(pickCell(stats, \"total_completion_tokens\")) ?? 0,\n averageDurationMs: asNumber(pickCell(stats, \"avg_duration_ms\")) ?? 0,\n averageReward: asNumber(pickCell(stats, \"avg_reward\")) ?? 0,\n bySource,\n byStatus,\n byScenario,\n };\n }\n\n async deleteTrajectories(trajectoryIds: string[]): Promise<number> {\n const runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n if (!runtime?.adapter) return 0;\n if (trajectoryIds.length === 0) return 0;\n\n const ids = trajectoryIds.map(sqlLiteral).join(\", \");\n const result = await this.executeRawSql(\n `DELETE FROM trajectories WHERE id IN (${ids}) RETURNING id`,\n );\n return result.rows.length;\n }\n\n async clearAllTrajectories(): Promise<number> {\n const runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n if (!runtime?.adapter) return 0;\n\n const countResult = await this.executeRawSql(\n `SELECT count(*)::int AS cnt FROM trajectories`,\n );\n const count = asNumber(pickCell(countResult.rows[0] ?? {}, \"cnt\")) ?? 0;\n\n await this.executeRawSql(`DELETE FROM trajectories`);\n return count;\n }\n\n private sanitizeZipFolderName(value: string): string {\n const sanitized = value\n .trim()\n .replace(/[^a-zA-Z0-9._-]+/g, \"_\")\n .replace(/^_+|_+$/g, \"\");\n return sanitized || \"trajectory\";\n }\n\n private redactTrajectoryPrompts(trajectory: Trajectory): Trajectory {\n return {\n ...trajectory,\n steps: trajectory.steps.map((step) => ({\n ...step,\n llmCalls: step.llmCalls.map((call) => ({\n ...call,\n systemPrompt: \"[redacted]\",\n userPrompt: \"[redacted]\",\n response: \"[redacted]\",\n })),\n })),\n };\n }\n\n private buildZipSummary(trajectory: Trajectory): {\n id: string;\n agentId: string;\n roomId: string | null;\n entityId: string | null;\n conversationId: string | null;\n source: string;\n status: \"active\" | \"completed\" | \"error\";\n startTime: number;\n endTime: number | null;\n durationMs: number | null;\n llmCallCount: number;\n providerAccessCount: number;\n totalPromptTokens: number;\n totalCompletionTokens: number;\n metadata: Record<string, JsonValue | undefined>;\n createdAt: string;\n updatedAt: string;\n } {\n const finalStatus = trajectory.metrics?.finalStatus ?? \"completed\";\n const normalizedEndTime =\n typeof trajectory.endTime === \"number\" && trajectory.endTime > 0\n ? trajectory.endTime\n : null;\n const status: \"active\" | \"completed\" | \"error\" =\n finalStatus === \"timeout\" ||\n finalStatus === \"terminated\" ||\n finalStatus === \"error\"\n ? \"error\"\n : finalStatus === \"completed\"\n ? \"completed\"\n : normalizedEndTime\n ? \"completed\"\n : \"active\";\n\n let llmCallCount = 0;\n let providerAccessCount = 0;\n let totalPromptTokens = 0;\n let totalCompletionTokens = 0;\n\n for (const step of trajectory.steps) {\n providerAccessCount += step.providerAccesses.length;\n llmCallCount += step.llmCalls.length;\n for (const call of step.llmCalls) {\n totalPromptTokens += call.promptTokens ?? 0;\n totalCompletionTokens += call.completionTokens ?? 0;\n }\n }\n\n const metadata = trajectory.metadata ?? {};\n const asNullableString = (value: JsonValue | undefined): string | null =>\n typeof value === \"string\" ? value : null;\n const source = typeof metadata.source === \"string\" ? metadata.source : \"chat\";\n const normalizedDurationMs =\n status === \"active\"\n ? null\n : typeof trajectory.durationMs === \"number\"\n ? trajectory.durationMs\n : null;\n const updatedAtMs = normalizedEndTime ?? (trajectory.startTime || Date.now());\n\n return {\n id: trajectory.trajectoryId,\n agentId: trajectory.agentId,\n roomId: asNullableString(metadata.roomId),\n entityId: asNullableString(metadata.entityId),\n conversationId: asNullableString(metadata.conversationId),\n source,\n status,\n startTime: trajectory.startTime,\n endTime: normalizedEndTime,\n durationMs: normalizedDurationMs,\n llmCallCount,\n providerAccessCount,\n totalPromptTokens,\n totalCompletionTokens,\n metadata,\n createdAt: new Date(trajectory.startTime).toISOString(),\n updatedAt: new Date(updatedAtMs).toISOString(),\n };\n }\n\n async exportTrajectoriesZip(\n options: TrajectoryZipExportOptions = {},\n ): Promise<TrajectoryZipExportResult> {\n let targetIds = Array.isArray(options.trajectoryIds)\n ? options.trajectoryIds.filter(\n (id): id is string => typeof id === \"string\" && id.trim().length > 0,\n )\n : [];\n\n if (targetIds.length === 0) {\n const list = await this.listTrajectories({\n limit: 500,\n startDate: options.startDate,\n endDate: options.endDate,\n scenarioId: options.scenarioId,\n batchId: options.batchId,\n });\n targetIds = list.trajectories.map((trajectory) => trajectory.id);\n }\n\n const entries: TrajectoryZipEntry[] = [];\n const manifestRows: Array<{\n trajectoryId: string;\n folder: string;\n createdAt: string;\n }> = [];\n\n for (const trajectoryId of targetIds) {\n const detail = await this.getTrajectoryDetail(trajectoryId);\n if (!detail) continue;\n\n const exportTrajectory =\n options.includePrompts === false\n ? this.redactTrajectoryPrompts(detail)\n : detail;\n const summary = this.buildZipSummary(exportTrajectory);\n const folderName = this.sanitizeZipFolderName(trajectoryId);\n\n entries.push({\n name: `${folderName}/trajectory.json`,\n data: JSON.stringify(exportTrajectory, null, 2),\n });\n entries.push({\n name: `${folderName}/summary.json`,\n data: JSON.stringify(summary, null, 2),\n });\n\n manifestRows.push({\n trajectoryId,\n folder: folderName,\n createdAt: summary.createdAt,\n });\n }\n\n entries.unshift({\n name: \"manifest.json\",\n data: JSON.stringify(\n {\n exportedAt: new Date().toISOString(),\n trajectories: manifestRows,\n },\n null,\n 2,\n ),\n });\n\n const timestamp = new Date().toISOString().replace(/[:.]/g, \"-\");\n return {\n filename: `trajectories-${timestamp}.zip`,\n entries,\n };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Export (for RL training)\n // ─────────────────────────────────────────────────────────────────────────\n\n async exportTrajectories(\n options: TrajectoryExportOptions,\n ): Promise<{ data: string; filename: string; mimeType: string }> {\n const runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n if (!runtime?.adapter) {\n throw new Error(\"Database not available\");\n }\n\n const whereClauses: string[] = [];\n if (options.trajectoryIds && options.trajectoryIds.length > 0) {\n const ids = options.trajectoryIds.map(sqlLiteral).join(\", \");\n whereClauses.push(`id IN (${ids})`);\n }\n if (options.startDate) {\n whereClauses.push(\n `created_at >= ${sqlLiteral(options.startDate)}::timestamptz`,\n );\n }\n if (options.endDate) {\n whereClauses.push(\n `created_at <= ${sqlLiteral(options.endDate)}::timestamptz`,\n );\n }\n if (options.scenarioId) {\n whereClauses.push(`scenario_id = ${sqlLiteral(options.scenarioId)}`);\n }\n if (options.batchId) {\n whereClauses.push(`batch_id = ${sqlLiteral(options.batchId)}`);\n }\n\n const whereClause =\n whereClauses.length > 0 ? `WHERE ${whereClauses.join(\" AND \")}` : \"\";\n\n const result = await this.executeRawSql(\n `SELECT * FROM trajectories ${whereClause} ORDER BY created_at DESC`,\n );\n\n const trajectories = result.rows.map((row) => this.rowToTrajectory(row));\n const timestamp = new Date().toISOString().replace(/[:.]/g, \"-\");\n\n if (options.format === \"csv\") {\n const lines: string[] = [\n \"id,agent_id,source,status,start_time,end_time,duration_ms,step_count,llm_call_count,total_reward,scenario_id\",\n ];\n for (const t of trajectories) {\n lines.push(\n [\n t.trajectoryId,\n t.agentId,\n t.metadata.source ?? \"chat\",\n t.metrics.finalStatus,\n t.startTime,\n t.endTime,\n t.durationMs,\n t.steps.length,\n t.steps.reduce((sum, s) => sum + s.llmCalls.length, 0),\n t.totalReward,\n t.scenarioId ?? \"\",\n ].join(\",\"),\n );\n }\n return {\n data: lines.join(\"\\n\"),\n filename: `trajectories-${timestamp}.csv`,\n mimeType: \"text/csv\",\n };\n }\n\n // For JSON format, optionally redact prompts\n let exportData = trajectories;\n if (!options.includePrompts) {\n exportData = trajectories.map((trajectory) =>\n this.redactTrajectoryPrompts(trajectory),\n );\n }\n\n return {\n data: JSON.stringify(exportData, null, 2),\n filename: `trajectories-${timestamp}.json`,\n mimeType: \"application/json\",\n };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Helpers\n // ─────────────────────────────────────────────────────────────────────────\n\n private rowToTrajectory(row: SqlRow): Trajectory {\n const parseJson = <T>(cell: SqlCell | undefined, fallback: T): T => {\n if (typeof cell === \"string\") {\n try {\n return JSON.parse(cell) as T;\n } catch {\n return fallback;\n }\n }\n if (typeof cell === \"object\" && cell !== null && !Array.isArray(cell)) {\n return cell as unknown as T;\n }\n return fallback;\n };\n\n return {\n trajectoryId: (asString(pickCell(row, \"id\")) ?? \"\") as `${string}-${string}-${string}-${string}-${string}`,\n agentId: (asString(pickCell(row, \"agent_id\")) ?? \"\") as `${string}-${string}-${string}-${string}-${string}`,\n startTime: asNumber(pickCell(row, \"start_time\")) ?? 0,\n endTime: asNumber(pickCell(row, \"end_time\")) ?? 0,\n durationMs: asNumber(pickCell(row, \"duration_ms\")) ?? 0,\n scenarioId: asString(pickCell(row, \"scenario_id\")) ?? undefined,\n episodeId: asString(pickCell(row, \"episode_id\")) ?? undefined,\n batchId: asString(pickCell(row, \"batch_id\")) ?? undefined,\n groupIndex: asNumber(pickCell(row, \"group_index\")) ?? undefined,\n steps: parseJson<TrajectoryStep[]>(\n pickCell(row, \"steps_json\", \"steps\"),\n [],\n ),\n totalReward: asNumber(pickCell(row, \"total_reward\")) ?? 0,\n rewardComponents: parseJson<RewardComponents>(\n pickCell(row, \"reward_components_json\", \"reward_components\"),\n { environmentReward: 0 },\n ),\n metrics: parseJson(pickCell(row, \"metrics_json\", \"metrics\"), {\n episodeLength: 0,\n finalStatus: \"completed\" as const,\n }),\n metadata: parseJson(pickCell(row, \"metadata_json\", \"metadata\"), {}),\n };\n }\n\n /**\n * Get active trajectory for a step (for compatibility with existing code)\n */\n getActiveTrajectory(trajectoryId: string): Trajectory | null {\n void trajectoryId;\n return null;\n }\n\n /**\n * Get current step ID for a trajectory\n */\n getCurrentStepId(trajectoryId: string): string | null {\n return this.activeStepIds.get(trajectoryId) || null;\n }\n\n /**\n * Legacy compatibility: get in-memory provider access logs\n */\n getProviderAccessLogs(): readonly ProviderAccess[] {\n return [];\n }\n\n /**\n * Legacy compatibility: get in-memory LLM call logs\n */\n getLlmCallLogs(): readonly LLMCall[] {\n return [];\n }\n}\n",
|
|
35
|
+
"import {\n\ttype IAgentRuntime,\n\ttype MessagePayload,\n\ttype Plugin,\n\tcreateUniqueUuid,\n} from \"@elizaos/core\";\nimport crypto from \"node:crypto\";\nimport { TrajectoryLoggerService } from \"./TrajectoryLoggerService\";\n\nconst pendingTrajectoryStepByReplyId = new Map<string, string>();\nconst pendingTrajectoryEndTargetByStepId = new Map<string, string>();\n\n/**\n * Trajectory Logger Plugin\n *\n * Captures complete agent interaction trajectories for:\n * - Debugging and analysis (UI viewing)\n * - RL training data collection\n * - Export to various formats (JSON, ART, CSV)\n *\n * Registers as the \"trajectory_logger\" service so the @elizaos/core runtime\n * automatically logs LLM calls and provider accesses when trajectories are active.\n */\nexport const trajectoryLoggerPlugin: Plugin = {\n\tname: \"@elizaos/plugin-trajectory-logger\",\n\tdescription:\n\t\t\"Captures and persists complete agent interaction trajectories for debugging, analysis, and RL training. \" +\n\t\t\"Records LLM calls, provider accesses, actions, environment state, and computes rewards.\",\n\tdependencies: [\"@elizaos/plugin-sql\"],\n\tservices: [TrajectoryLoggerService],\n\tevents: {\n\t\tMESSAGE_RECEIVED: [\n\t\t\tasync (payload: MessagePayload) => {\n\t\t\t\tconst { runtime, message, source } = payload;\n\t\t\t\tif (!message || !runtime) return;\n\n\t\t\t\t// Ensure metadata is initialized\n\t\t\t\tif (!message.metadata) {\n\t\t\t\t\tmessage.metadata = {\n\t\t\t\t\t\ttype: \"message\",\n\t\t\t\t\t} as unknown as typeof message.metadata;\n\t\t\t\t}\n\t\t\t\tconst meta = message.metadata as Record<string, unknown>;\n\n\t\t\t\tconst logger =\n\t\t\t\t\tTrajectoryLoggerService.resolveFromRuntime(runtime);\n\t\t\t\tif (!logger) return;\n\n\t\t\t\t// Start trajectory\n\t\t\t\tlet trajectoryStepId: string = crypto.randomUUID();\n\t\t\t\tmeta.trajectoryStepId = trajectoryStepId;\n\n\t\t\t\ttry {\n\t\t\t\t\tconst trajectoryId = await logger.startTrajectory(runtime.agentId, {\n\t\t\t\t\t\tsource: source ?? (meta.source as string) ?? \"chat\",\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\troomId: message.roomId,\n\t\t\t\t\t\t\tentityId: message.entityId,\n\t\t\t\t\t\t\tmessageId: message.id,\n\t\t\t\t\t\t\tchannelType:\n\t\t\t\t\t\t\t\t(meta.channelType as string) ??\n\t\t\t\t\t\t\t\t(message.content?.channelType as string),\n\t\t\t\t\t\t\tconversationId: meta.sessionKey as string,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\n\t\t\t\t\tconst normalizedTrajectoryId =\n\t\t\t\t\t\ttypeof trajectoryId === \"string\" && trajectoryId.trim().length > 0\n\t\t\t\t\t\t\t? trajectoryId\n\t\t\t\t\t\t\t: null;\n\n\t\t\t\t\tif (normalizedTrajectoryId) {\n\t\t\t\t\t\tconst runtimeStepId = logger.startStep(normalizedTrajectoryId, {\n\t\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\t\tagentBalance: 0,\n\t\t\t\t\t\t\tagentPoints: 0,\n\t\t\t\t\t\t\tagentPnL: 0,\n\t\t\t\t\t\t\topenPositions: 0,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst normalizedStepId =\n\t\t\t\t\t\t\ttypeof runtimeStepId === \"string\" &&\n\t\t\t\t\t\t\truntimeStepId.trim().length > 0\n\t\t\t\t\t\t\t\t? runtimeStepId\n\t\t\t\t\t\t\t\t: trajectoryStepId;\n\n\t\t\t\t\t\ttrajectoryStepId = normalizedStepId;\n\t\t\t\t\t\tmeta.trajectoryStepId = trajectoryStepId;\n\t\t\t\t\t\tpendingTrajectoryEndTargetByStepId.set(\n\t\t\t\t\t\t\ttrajectoryStepId,\n\t\t\t\t\t\t\tnormalizedTrajectoryId,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Fallback if startTrajectory returns empty/null\n\t\t\t\t\t\t// This path uses the stepId as the trajectoryId which matches legacy behavior\n\t\t\t\t\t\t// provided the logger supports it, but here we are using the new service.\n\t\t\t\t\t\t// If new service returns null, something is wrong, but we proceed best effort.\n\t\t\t\t\t}\n\n\t\t\t\t\tif (message.id) {\n\t\t\t\t\t\tconst replyId = createUniqueUuid(runtime, message.id);\n\t\t\t\t\t\tpendingTrajectoryStepByReplyId.set(replyId, trajectoryStepId);\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\truntime.logger?.warn(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\tsrc: \"plugin-trajectory-logger\",\n\t\t\t\t\t\t\troomId: message.roomId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"Failed to start trajectory logging\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t],\n\t\tMESSAGE_SENT: [\n\t\t\tasync (payload: MessagePayload) => {\n\t\t\t\tconst { runtime, message } = payload;\n\t\t\t\tif (!message || !runtime) return;\n\n\t\t\t\tconst meta = message.metadata as Record<string, unknown> | undefined;\n\t\t\t\tconst inReplyTo =\n\t\t\t\t\ttypeof message.content === \"object\" &&\n\t\t\t\t\tmessage.content !== null &&\n\t\t\t\t\t\"inReplyTo\" in message.content &&\n\t\t\t\t\ttypeof (message.content as { inReplyTo?: unknown }).inReplyTo ===\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t\t? (message.content as { inReplyTo: string }).inReplyTo\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tlet trajectoryStepId = meta?.trajectoryStepId as string | undefined;\n\t\t\t\tif (!trajectoryStepId && inReplyTo) {\n\t\t\t\t\ttrajectoryStepId = pendingTrajectoryStepByReplyId.get(inReplyTo);\n\t\t\t\t}\n\t\t\t\tif (!trajectoryStepId) return;\n\n\t\t\t\tconst logger =\n\t\t\t\t\tTrajectoryLoggerService.resolveFromRuntime(runtime);\n\t\t\t\tif (!logger) return;\n\n\t\t\t\ttry {\n\t\t\t\t\tconst endTarget =\n\t\t\t\t\t\tpendingTrajectoryEndTargetByStepId.get(trajectoryStepId) ??\n\t\t\t\t\t\ttrajectoryStepId;\n\t\t\t\t\tawait logger.endTrajectory(endTarget, \"completed\");\n\t\t\t\t} catch (err) {\n\t\t\t\t\truntime.logger?.warn(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\tsrc: \"plugin-trajectory-logger\",\n\t\t\t\t\t\t\ttrajectoryStepId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"Failed to end trajectory logging\",\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (inReplyTo) {\n\t\t\t\t\tpendingTrajectoryStepByReplyId.delete(inReplyTo);\n\t\t\t\t}\n\t\t\t\tpendingTrajectoryEndTargetByStepId.delete(trajectoryStepId);\n\t\t\t},\n\t\t],\n\t},\n};\n\nexport default trajectoryLoggerPlugin;\n\n// ==========================================\n// SERVICE (Core trajectory logging)\n// ==========================================\nexport { TrajectoryLoggerService } from \"./TrajectoryLoggerService\";\nexport type {\n\tTrajectoryListOptions,\n\tTrajectoryListResult,\n\tTrajectoryListItem,\n\tTrajectoryStats,\n\tTrajectoryExportOptions,\n\tTrajectoryZipExportOptions,\n\tTrajectoryZipEntry,\n\tTrajectoryZipExportResult,\n} from \"./TrajectoryLoggerService\";\n\n// ==========================================\n// CORE TYPES\n// ==========================================\nexport * from \"./types\";\n\n// ==========================================\n// ACTION-LEVEL INSTRUMENTATION\n// For manual trajectory collection in actions\n// ==========================================\nexport * from \"./action-interceptor\";\n\n// ==========================================\n// TRAJECTORY FORMAT CONVERSION\n// ==========================================\nexport * from \"./art-format\";\n\n// ==========================================\n// DATA EXPORT\n// ==========================================\nexport * from \"./export\";\n\n// ==========================================\n// GAME-KNOWLEDGE REWARDS\n// ==========================================\nexport * from \"./game-rewards\";\n\n// ==========================================\n// ADVANCED: Manual Instrumentation\n// ==========================================\nexport * from \"./integration\";\n\n// ==========================================\n// OPTIONAL: Heuristic Rewards\n// ==========================================\nexport * from \"./reward-service\";\n",
|
|
36
|
+
"/**\n * Trajectory Logger Service\n *\n * A proper @elizaos/core Service that:\n * - Registers as \"trajectory_logger\" so the runtime can find it\n * - Persists trajectories to the database\n * - Supports both runtime logging AND RL training data collection\n * - Provides API for UI viewing and export\n */\n\nimport {\n\ttype IAgentRuntime,\n\tlogger,\n\tService,\n\tgetTrajectoryContext,\n\trunWithTrajectoryContext,\n\tsetTrajectoryContextManager,\n} from \"@elizaos/core\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\nconst trajectoryStorage = new AsyncLocalStorage<\n\t{ trajectoryStepId?: string } | undefined\n>();\n\nsetTrajectoryContextManager({\n\trun<T>(\n\t\tcontext: { trajectoryStepId?: string } | undefined,\n\t\tfn: () => T | Promise<T>,\n\t): T | Promise<T> {\n\t\treturn trajectoryStorage.run(context, fn);\n\t},\n\tactive(): { trajectoryStepId?: string } | undefined {\n\t\treturn trajectoryStorage.getStore();\n\t},\n});\nimport type {\n\tActionAttempt,\n\tEnvironmentState,\n\tJsonValue,\n\tLLMCall,\n\tProviderAccess,\n\tRewardComponents,\n\tTrajectory,\n\tTrajectoryStep,\n} from \"./types\";\n\n// ============================================================================\n// Database Row Types\n// ============================================================================\n\ntype SqlPrimitive = string | number | boolean | null;\ninterface SqlCellArray extends Array<SqlCell> {}\ntype SqlCell = SqlPrimitive | Date | SqlRow | SqlCellArray;\ninterface SqlRow {\n\t[key: string]: SqlCell;\n}\n\ninterface SqlExecuteResult {\n\trows: SqlRow[];\n\tfields?: Array<{ name: string }>;\n}\n\n// ============================================================================\n// List/Filter Options\n// ============================================================================\n\nexport interface TrajectoryListOptions {\n\tlimit?: number;\n\toffset?: number;\n\tstatus?: \"active\" | \"completed\" | \"error\" | \"timeout\";\n\tsource?: string;\n\tstartDate?: string;\n\tendDate?: string;\n\tsearch?: string;\n\tscenarioId?: string;\n\tbatchId?: string;\n\tisTrainingData?: boolean;\n}\n\nexport interface TrajectoryListResult {\n\ttrajectories: TrajectoryListItem[];\n\ttotal: number;\n\toffset: number;\n\tlimit: number;\n}\n\nexport interface TrajectoryListItem {\n\tid: string;\n\tagentId: string;\n\tsource: string;\n\tstatus: \"active\" | \"completed\" | \"error\" | \"timeout\";\n\tstartTime: number;\n\tendTime: number | null;\n\tdurationMs: number | null;\n\tstepCount: number;\n\tllmCallCount: number;\n\ttotalPromptTokens: number;\n\ttotalCompletionTokens: number;\n\ttotalReward: number;\n\tscenarioId: string | null;\n\tbatchId: string | null;\n\tcreatedAt: string;\n}\n\nexport interface TrajectoryStats {\n\ttotalTrajectories: number;\n\ttotalSteps: number;\n\ttotalLlmCalls: number;\n\ttotalPromptTokens: number;\n\ttotalCompletionTokens: number;\n\taverageDurationMs: number;\n\taverageReward: number;\n\tbySource: Record<string, number>;\n\tbyStatus: Record<string, number>;\n\tbyScenario: Record<string, number>;\n}\n\nexport interface TrajectoryExportOptions {\n\tformat: \"json\" | \"art\" | \"csv\";\n\tincludePrompts?: boolean;\n\ttrajectoryIds?: string[];\n\tstartDate?: string;\n\tendDate?: string;\n\tscenarioId?: string;\n\tbatchId?: string;\n}\n\nexport interface TrajectoryZipExportOptions {\n\tincludePrompts?: boolean;\n\ttrajectoryIds?: string[];\n\tstartDate?: string;\n\tendDate?: string;\n\tscenarioId?: string;\n\tbatchId?: string;\n}\n\nexport interface TrajectoryZipEntry {\n\tname: string;\n\tdata: string;\n}\n\nexport interface TrajectoryZipExportResult {\n\tfilename: string;\n\tentries: TrajectoryZipEntry[];\n}\n\n// ============================================================================\n// SQL Helpers\n// ============================================================================\n\nfunction asNumber(value: SqlCell | undefined): number | null {\n\tif (typeof value === \"number\" && Number.isFinite(value)) return value;\n\tif (typeof value === \"string\") {\n\t\tconst parsed = Number(value);\n\t\treturn Number.isFinite(parsed) ? parsed : null;\n\t}\n\treturn null;\n}\n\nfunction asString(value: SqlCell | undefined): string | null {\n\tif (typeof value === \"string\") return value;\n\tif (typeof value === \"number\" || typeof value === \"boolean\")\n\t\treturn String(value);\n\tif (value instanceof Date) return value.toISOString();\n\treturn null;\n}\n\nfunction asIsoString(value: SqlCell | undefined): string {\n\tif (value instanceof Date) return value.toISOString();\n\tconst asText = asString(value);\n\tif (!asText) return new Date(0).toISOString();\n\tconst parsed = new Date(asText);\n\tif (Number.isNaN(parsed.getTime())) return new Date(0).toISOString();\n\treturn parsed.toISOString();\n}\n\nfunction pickCell(row: SqlRow, ...keys: string[]): SqlCell | undefined {\n\tfor (const key of keys) {\n\t\tif (Object.hasOwn(row, key)) {\n\t\t\treturn row[key];\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction sqlLiteral(v: unknown): string {\n\tif (v === null || v === undefined) return \"NULL\";\n\tif (typeof v === \"number\") return String(v);\n\tif (typeof v === \"boolean\") return v ? \"TRUE\" : \"FALSE\";\n\tif (typeof v === \"object\")\n\t\treturn `'${JSON.stringify(v).replace(/'/g, \"''\")}'`;\n\treturn `'${String(v).replace(/'/g, \"''\")}'`;\n}\n\ntype TrajectoryStatus =\n\t| \"active\"\n\t| \"completed\"\n\t| \"error\"\n\t| \"timeout\"\n\t| \"terminated\";\n\ntype StartTrajectoryOptions = {\n\tagentId?: string;\n\troomId?: string;\n\tentityId?: string;\n\tsource?: string;\n\tscenarioId?: string;\n\tepisodeId?: string;\n\tbatchId?: string;\n\tgroupIndex?: number;\n\tmetadata?: Record<string, JsonValue>;\n};\n\ntype CompleteStepRewardInfo = {\n\treward?: number;\n\tcomponents?: Partial<RewardComponents>;\n};\n\ninterface StepIndexRow {\n\ttrajectoryId: string;\n\tstepNumber: number;\n\tisActive: boolean;\n}\n\n// ============================================================================\n// Trajectory Logger Service\n// ============================================================================\n\nexport class TrajectoryLoggerService extends Service {\n\tstatic serviceType = \"trajectory_logger\";\n\tget serviceType() {\n\t\treturn TrajectoryLoggerService.serviceType;\n\t}\n\n\tcapabilityDescription =\n\t\t\"Captures and persists LLM calls, provider accesses, and full trajectories for debugging, analysis, and RL training\";\n\n\t/**\n\t * Resolve the *real* SQL-backed TrajectoryLoggerService from the runtime.\n\t *\n\t * The Eliza core registers a lightweight no-op stub under the same\n\t * \"trajectory_logger\" serviceType. getService() returns whichever\n\t * instance was started first (usually the stub). This helper scans\n\t * all registered services of that type and returns the one that\n\t * actually exposes the full trajectory lifecycle API (startTrajectory).\n\t */\n\t/**\n\t * Synchronous lookup — returns null if the real service hasn't started yet.\n\t */\n\tstatic resolveFromRuntime(\n\t\truntime: IAgentRuntime,\n\t): TrajectoryLoggerService | null {\n\t\t// Fast path — if getService already returns the real one, use it.\n\t\tconst first = runtime.getService(\n\t\t\tTrajectoryLoggerService.serviceType,\n\t\t) as Service | null;\n\t\tif (\n\t\t\tfirst &&\n\t\t\ttypeof (first as unknown as Record<string, unknown>).startTrajectory ===\n\t\t\t\t\"function\"\n\t\t) {\n\t\t\treturn first as unknown as TrajectoryLoggerService;\n\t\t}\n\n\t\t// Slow path — the core stub won, scan all services for the real one.\n\t\tconst all =\n\t\t\ttypeof runtime.getServicesByType === \"function\"\n\t\t\t\t? runtime.getServicesByType(TrajectoryLoggerService.serviceType)\n\t\t\t\t: [];\n\t\tfor (const svc of all) {\n\t\t\tif (\n\t\t\t\ttypeof (svc as unknown as Record<string, unknown>)\n\t\t\t\t\t.startTrajectory === \"function\"\n\t\t\t) {\n\t\t\t\treturn svc as unknown as TrajectoryLoggerService;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Async version that waits for the real SQL-backed service to finish\n\t * starting. The core registers a no-op stub that starts synchronously;\n\t * the real plugin starts asynchronously (DB init). This method polls\n\t * briefly so callers don't have to guess at timing.\n\t */\n\tstatic async waitForService(\n\t\truntime: IAgentRuntime,\n\t\ttimeoutMs = 10_000,\n\t): Promise<TrajectoryLoggerService | null> {\n\t\tconst deadline = Date.now() + timeoutMs;\n\t\twhile (Date.now() < deadline) {\n\t\t\tconst svc = TrajectoryLoggerService.resolveFromRuntime(runtime);\n\t\t\tif (svc) return svc;\n\t\t\tawait new Promise((r) => setTimeout(r, 50));\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate enabled = true;\n\tprivate initialized = false;\n\n\t// Only keep lightweight ID caches for sync compatibility.\n\t// Trajectory payloads are always read from / written to the database.\n\tprivate activeStepIds: Map<string, string> = new Map();\n\tprivate stepToTrajectory: Map<string, string> = new Map();\n\tprivate writeQueues: Map<string, Promise<void>> = new Map();\n\n\tprivate exposeBoundMethods(): void {\n\t\tconst service = this as this & {\n\t\t\tstartTrajectory: TrajectoryLoggerService[\"startTrajectory\"];\n\t\t\tendTrajectory: TrajectoryLoggerService[\"endTrajectory\"];\n\t\t\tstartStep: TrajectoryLoggerService[\"startStep\"];\n\t\t\tgetCurrentStepId: TrajectoryLoggerService[\"getCurrentStepId\"];\n\t\t\tcompleteStep: TrajectoryLoggerService[\"completeStep\"];\n\t\t\tlogLLMCall: TrajectoryLoggerService[\"logLLMCall\"];\n\t\t\tlogProviderAccess: TrajectoryLoggerService[\"logProviderAccess\"];\n\t\t\tlogProviderAccessByTrajectoryId: TrajectoryLoggerService[\"logProviderAccessByTrajectoryId\"];\n\t\t\tisEnabled: TrajectoryLoggerService[\"isEnabled\"];\n\t\t\tlistTrajectories: TrajectoryLoggerService[\"listTrajectories\"];\n\t\t\tgetTrajectoryDetail: TrajectoryLoggerService[\"getTrajectoryDetail\"];\n\t\t};\n\n\t\tservice.startTrajectory = this.startTrajectory.bind(this);\n\t\tservice.endTrajectory = this.endTrajectory.bind(this);\n\t\tservice.startStep = this.startStep.bind(this);\n\t\tservice.getCurrentStepId = this.getCurrentStepId.bind(this);\n\t\tservice.completeStep = this.completeStep.bind(this);\n\t\tservice.logLLMCall = this.logLLMCall.bind(this);\n\t\tservice.logProviderAccess = this.logProviderAccess.bind(this);\n\t\tservice.logProviderAccessByTrajectoryId = this.logProviderAccessByTrajectoryId.bind(this);\n\t\tservice.isEnabled = this.isEnabled.bind(this);\n\t\tservice.listTrajectories = this.listTrajectories.bind(this);\n\t\tservice.getTrajectoryDetail = this.getTrajectoryDetail.bind(this);\n\t\t(service as unknown as Record<string, unknown>).flushWriteQueue =\n\t\t\tthis.flushWriteQueue.bind(this);\n\t}\n\n\tstatic async start(runtime: IAgentRuntime): Promise<Service> {\n\t\tconst service = new (this as any)(runtime);\n\t\tawait service.initialize();\n\t\treturn service;\n\t}\n\n\tasync stop(): Promise<void> {\n\t\tthis.enabled = false;\n\t}\n\n\tsetEnabled(enabled: boolean): void {\n\t\tthis.enabled = enabled;\n\t}\n\n\tisEnabled(): boolean {\n\t\treturn this.enabled;\n\t}\n\n\t// ─────────────────────────────────────────────────────────────────────────\n\t// Initialization\n\t// ─────────────────────────────────────────────────────────────────────────\n\n\tprivate async getSqlHelper(): Promise<{\n\t\traw: (query: string) => { queryChunks: object[] };\n\t}> {\n\t\tconst drizzle = (await import(\"drizzle-orm\")) as {\n\t\t\tsql: { raw: (query: string) => { queryChunks: object[] } };\n\t\t};\n\t\treturn drizzle.sql;\n\t}\n\n\tprivate async executeRawSql(\n\t\tsqlText: string,\n\t): Promise<{ rows: SqlRow[]; columns: string[] }> {\n\t\tconst runtime = this.runtime as IAgentRuntime & {\n\t\t\tadapter?: { db?: unknown };\n\t\t};\n\t\tif (!runtime?.adapter) {\n\t\t\tthrow new Error(\"Database adapter not available\");\n\t\t}\n\n\t\tconst sqlHelper = await this.getSqlHelper();\n\t\tconst db = runtime.adapter.db as {\n\t\t\texecute(query: { queryChunks: object[] }): Promise<SqlExecuteResult>;\n\t\t};\n\t\tconst query = sqlHelper.raw(sqlText);\n\t\tconst result = await db.execute(query);\n\t\tconst rows = Array.isArray(result.rows) ? result.rows : [];\n\t\tconst columns =\n\t\t\tresult.fields && Array.isArray(result.fields)\n\t\t\t\t? result.fields.map((field) => field.name)\n\t\t\t\t: rows.length > 0\n\t\t\t\t\t? Object.keys(rows[0])\n\t\t\t\t\t: [];\n\t\treturn { rows, columns };\n\t}\n\n\tasync initialize(): Promise<void> {\n\t\tif (this.initialized) return;\n\t\tthis.exposeBoundMethods();\n\n\t\tconst runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n\t\tif (!runtime?.adapter) {\n\t\t\tlogger.warn(\n\t\t\t\t\"[trajectory-logger] No runtime adapter available, skipping initialization\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tawait this.ensureTablesExist();\n\t\tawait this.backfillTrajectoriesMissingLlmCalls();\n\n\t\tconst originalUseModel = runtime.useModel;\n\t\tif (typeof originalUseModel === \"function\") {\n\t\t\ttype RuntimeUseModel = NonNullable<IAgentRuntime[\"useModel\"]>;\n\n\t\t\tconst patchedUseModel = async function (\n\t\t\t\tthis: IAgentRuntime,\n\t\t\t\t...args: Parameters<RuntimeUseModel>\n\t\t\t): Promise<Awaited<ReturnType<RuntimeUseModel>>> {\n\t\t\t\tconst context = getTrajectoryContext();\n\t\t\t\tif (context?.trajectoryStepId) {\n\t\t\t\t\treturn originalUseModel.call(this, ...args);\n\t\t\t\t}\n\n\t\t\t\tconst trajLogger =\n\t\t\t\t\tTrajectoryLoggerService.resolveFromRuntime(runtime);\n\n\t\t\t\tif (!trajLogger || !trajLogger.isEnabled()) {\n\t\t\t\t\treturn originalUseModel.call(this, ...args);\n\t\t\t\t}\n\n\t\t\t\tconst stepId = await trajLogger.startTrajectory(runtime.agentId, {\n\t\t\t\t\tsource: \"chat-orphan\",\n\t\t\t\t\tmetadata: { autoPatch: true },\n\t\t\t\t});\n\n\t\t\t\ttry {\n\t\t\t\t\treturn await runWithTrajectoryContext(\n\t\t\t\t\t\t{ trajectoryStepId: stepId },\n\t\t\t\t\t\t() => originalUseModel.call(this, ...args),\n\t\t\t\t\t);\n\t\t\t\t} finally {\n\t\t\t\t\tawait trajLogger.endTrajectory(stepId, \"completed\");\n\t\t\t\t}\n\t\t\t};\n\n\t\t\truntime.useModel = patchedUseModel as RuntimeUseModel;\n\t\t}\n\n\t\tthis.initialized = true;\n\t\tlogger.info(\"[trajectory-logger] Trajectory logger service initialized\");\n\t}\n\n\tprivate async getTableColumnNames(tableName: string): Promise<Set<string>> {\n\t\tconst names = new Set<string>();\n\n\t\t// PostgreSQL path.\n\t\ttry {\n\t\t\tconst result = await this.executeRawSql(`\n SELECT column_name\n FROM information_schema.columns\n WHERE table_name = ${sqlLiteral(tableName)}\n AND table_schema NOT IN ('pg_catalog', 'information_schema')\n `);\n\t\t\tfor (const row of result.rows) {\n\t\t\t\tconst name = asString(pickCell(row, \"column_name\"));\n\t\t\t\tif (name) names.add(name);\n\t\t\t}\n\t\t\tif (names.size > 0) return names;\n\t\t} catch {\n\t\t\t// Fall through to SQLite-compatible PRAGMA lookup.\n\t\t}\n\n\t\t// SQLite / generic fallback.\n\t\tconst safeTableName = tableName.replace(/[^a-zA-Z0-9_]/g, \"\");\n\t\tif (!safeTableName) return names;\n\t\ttry {\n\t\t\tconst pragma = await this.executeRawSql(\n\t\t\t\t`PRAGMA table_info(${safeTableName})`,\n\t\t\t);\n\t\t\tfor (const row of pragma.rows) {\n\t\t\t\tconst name = asString(pickCell(row, \"name\"));\n\t\t\t\tif (name) names.add(name);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore lookup failures; callers will perform best-effort migrations.\n\t\t}\n\n\t\treturn names;\n\t}\n\n\tprivate async ensureTrajectoryColumnsExist(): Promise<void> {\n\t\tconst columns = await this.getTableColumnNames(\"trajectories\");\n\t\tconst requiredColumns: Array<[name: string, definition: string]> = [\n\t\t\t[\"scenario_id\", \"TEXT\"],\n\t\t\t[\"episode_id\", \"TEXT\"],\n\t\t\t[\"batch_id\", \"TEXT\"],\n\t\t\t[\"group_index\", \"INTEGER\"],\n\t\t\t[\"steps_json\", \"JSONB NOT NULL DEFAULT '[]'\"],\n\t\t\t[\"reward_components_json\", \"JSONB NOT NULL DEFAULT '{}'\"],\n\t\t\t[\"metrics_json\", \"JSONB NOT NULL DEFAULT '{}'\"],\n\t\t\t[\"metadata_json\", \"JSONB NOT NULL DEFAULT '{}'\"],\n\t\t\t[\"is_training_data\", \"BOOLEAN NOT NULL DEFAULT FALSE\"],\n\t\t\t[\"is_evaluation\", \"BOOLEAN NOT NULL DEFAULT FALSE\"],\n\t\t\t[\"used_in_training\", \"BOOLEAN NOT NULL DEFAULT FALSE\"],\n\t\t\t[\"judged_at\", \"TIMESTAMPTZ\"],\n\t\t];\n\n\t\tfor (const [columnName, definition] of requiredColumns) {\n\t\t\tif (columns.has(columnName)) continue;\n\t\t\ttry {\n\t\t\t\tawait this.executeRawSql(`\n ALTER TABLE trajectories\n ADD COLUMN IF NOT EXISTS ${columnName} ${definition}\n `);\n\t\t\t} catch (errWithIfExists) {\n\t\t\t\t// Some DB adapters don't support IF NOT EXISTS on ADD COLUMN.\n\t\t\t\ttry {\n\t\t\t\t\tawait this.executeRawSql(`\n ALTER TABLE trajectories\n ADD COLUMN ${columnName} ${definition}\n `);\n\t\t\t\t} catch (errPlain) {\n\t\t\t\t\tconst combinedMessage =\n\t\t\t\t\t\t`${errWithIfExists instanceof Error ? errWithIfExists.message : String(errWithIfExists)} | ${errPlain instanceof Error ? errPlain.message : String(errPlain)}`.toLowerCase();\n\t\t\t\t\tif (\n\t\t\t\t\t\tcombinedMessage.includes(\"already exists\") ||\n\t\t\t\t\t\tcombinedMessage.includes(\"duplicate column\") ||\n\t\t\t\t\t\tcombinedMessage.includes(\"duplicate_column\")\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t`[trajectory-logger] Failed to add trajectories.${columnName} (non-fatal): ${errPlain instanceof Error ? errPlain.message : String(errPlain)}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Legacy Milady schema used 32-bit INTEGER for ms timestamps. Upgrade to\n\t\t// BIGINT so runtime timestamps (Date.now()) can be stored safely.\n\t\t// This migration is Postgres-specific. Ignore on adapters that don't support it.\n\t\tfor (const statement of [\n\t\t\t`ALTER TABLE trajectories\n ALTER COLUMN start_time TYPE BIGINT USING start_time::BIGINT`,\n\t\t\t`ALTER TABLE trajectories\n ALTER COLUMN end_time TYPE BIGINT USING end_time::BIGINT`,\n\t\t\t`ALTER TABLE trajectories\n ALTER COLUMN duration_ms TYPE BIGINT USING duration_ms::BIGINT`,\n\t\t]) {\n\t\t\ttry {\n\t\t\t\tawait this.executeRawSql(statement);\n\t\t\t} catch {\n\t\t\t\t// Non-fatal portability fallback.\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async ensureTablesExist(): Promise<void> {\n\t\t// Main trajectories table\n\t\tawait this.executeRawSql(`\n CREATE TABLE IF NOT EXISTS trajectories (\n id TEXT PRIMARY KEY,\n agent_id TEXT NOT NULL,\n source TEXT NOT NULL DEFAULT 'chat',\n status TEXT NOT NULL DEFAULT 'active',\n start_time BIGINT NOT NULL,\n end_time BIGINT,\n duration_ms BIGINT,\n step_count INTEGER NOT NULL DEFAULT 0,\n llm_call_count INTEGER NOT NULL DEFAULT 0,\n provider_access_count INTEGER NOT NULL DEFAULT 0,\n total_prompt_tokens INTEGER NOT NULL DEFAULT 0,\n total_completion_tokens INTEGER NOT NULL DEFAULT 0,\n total_reward REAL NOT NULL DEFAULT 0,\n scenario_id TEXT,\n episode_id TEXT,\n batch_id TEXT,\n group_index INTEGER,\n steps_json JSONB NOT NULL DEFAULT '[]',\n reward_components_json JSONB NOT NULL DEFAULT '{}',\n metrics_json JSONB NOT NULL DEFAULT '{}',\n metadata_json JSONB NOT NULL DEFAULT '{}',\n is_training_data BOOLEAN NOT NULL DEFAULT FALSE,\n is_evaluation BOOLEAN NOT NULL DEFAULT FALSE,\n used_in_training BOOLEAN NOT NULL DEFAULT FALSE,\n ai_judge_reward REAL,\n ai_judge_reasoning TEXT,\n judged_at TIMESTAMPTZ,\n created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP\n )\n `);\n\t\tawait this.ensureTrajectoryColumnsExist();\n\n\t\t// Indexes for common queries\n\t\ttry {\n\t\t\tawait this.executeRawSql(\n\t\t\t\t`CREATE INDEX IF NOT EXISTS idx_trajectories_agent_id ON trajectories(agent_id)`,\n\t\t\t);\n\t\t\tawait this.executeRawSql(\n\t\t\t\t`CREATE INDEX IF NOT EXISTS idx_trajectories_source ON trajectories(source)`,\n\t\t\t);\n\t\t\tawait this.executeRawSql(\n\t\t\t\t`CREATE INDEX IF NOT EXISTS idx_trajectories_status ON trajectories(status)`,\n\t\t\t);\n\t\t\tawait this.executeRawSql(\n\t\t\t\t`CREATE INDEX IF NOT EXISTS idx_trajectories_created_at ON trajectories(created_at)`,\n\t\t\t);\n\t\t\tawait this.executeRawSql(\n\t\t\t\t`CREATE INDEX IF NOT EXISTS idx_trajectories_scenario_id ON trajectories(scenario_id)`,\n\t\t\t);\n\t\t\tawait this.executeRawSql(\n\t\t\t\t`CREATE INDEX IF NOT EXISTS idx_trajectories_batch_id ON trajectories(batch_id)`,\n\t\t\t);\n\t\t\tawait this.executeRawSql(\n\t\t\t\t`CREATE INDEX IF NOT EXISTS idx_trajectories_is_training ON trajectories(is_training_data)`,\n\t\t\t);\n\t\t} catch (e) {\n\t\t\t// Ignore index creation errors (e.g. if they already exist or are being created by another process)\n\t\t\tlogger.warn(\n\t\t\t\t`[trajectory-logger] Failed to create indexes (non-fatal): ${e instanceof Error ? e.message : String(e)}`,\n\t\t\t);\n\t\t}\n\n\t\t// Step index keeps step -> trajectory mapping in DB so logs remain routable\n\t\t// across process restarts.\n\t\tawait this.executeRawSql(`\n CREATE TABLE IF NOT EXISTS trajectory_step_index (\n step_id TEXT PRIMARY KEY,\n trajectory_id TEXT NOT NULL REFERENCES trajectories(id) ON DELETE CASCADE,\n step_number INTEGER NOT NULL DEFAULT 0,\n is_active BOOLEAN NOT NULL DEFAULT FALSE,\n created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP\n )\n `);\n\t\tawait this.executeRawSql(\n\t\t\t`CREATE INDEX IF NOT EXISTS idx_trajectory_step_index_trajectory_id ON trajectory_step_index(trajectory_id)`,\n\t\t);\n\t\tawait this.executeRawSql(\n\t\t\t`CREATE INDEX IF NOT EXISTS idx_trajectory_step_index_is_active ON trajectory_step_index(is_active)`,\n\t\t);\n\t}\n\n\tprivate normalizeTrajectoryStatus(value: string | null): TrajectoryStatus {\n\t\tswitch (value) {\n\t\t\tcase \"active\":\n\t\t\tcase \"completed\":\n\t\t\tcase \"error\":\n\t\t\tcase \"timeout\":\n\t\t\tcase \"terminated\":\n\t\t\t\treturn value;\n\t\t\tdefault:\n\t\t\t\treturn \"completed\";\n\t\t}\n\t}\n\n\tprivate async backfillTrajectoriesMissingLlmCalls(): Promise<void> {\n\t\tconst maxRows = 2000;\n\t\tlet fixed = 0;\n\n\t\ttry {\n\t\t\tconst rows = await this.executeRawSql(`\n SELECT id, status\n FROM trajectories\n WHERE COALESCE(llm_call_count, 0) = 0\n AND status <> 'active'\n ORDER BY created_at ASC\n LIMIT ${maxRows}\n `);\n\n\t\t\tfor (const row of rows.rows) {\n\t\t\t\tconst trajectoryId = asString(pickCell(row, \"id\"));\n\t\t\t\tif (!trajectoryId) continue;\n\t\t\t\tconst status = this.normalizeTrajectoryStatus(\n\t\t\t\t\tasString(pickCell(row, \"status\")),\n\t\t\t\t);\n\n\t\t\t\tawait this.withTrajectoryWriteLock(trajectoryId, async () => {\n\t\t\t\t\tconst trajectory = await this.getTrajectoryById(trajectoryId);\n\t\t\t\t\tif (!trajectory) return;\n\n\t\t\t\t\tconst inserted = this.ensureAtLeastOneLlmCall(trajectory, \"backfill\");\n\t\t\t\t\tif (!inserted) return;\n\n\t\t\t\t\tawait this.persistTrajectory(trajectoryId, trajectory, status);\n\t\t\t\t\tfixed += 1;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (fixed > 0) {\n\t\t\t\tlogger.info(\n\t\t\t\t\t`[trajectory-logger] Backfilled ${fixed} completed trajectories with synthetic LLM calls`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (rows.rows.length >= maxRows) {\n\t\t\t\tlogger.warn(\n\t\t\t\t\t`[trajectory-logger] Backfill hit safety cap (${maxRows}); remaining older trajectories will be fixed lazily when touched`,\n\t\t\t\t);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tlogger.warn(\n\t\t\t\t`[trajectory-logger] Failed to backfill trajectories missing LLM calls (non-fatal): ${err instanceof Error ? err.message : String(err)}`,\n\t\t\t);\n\t\t}\n\t}\n\n\t// ─────────────────────────────────────────────────────────────────────────\n\t// Runtime Interface (called by @elizaos/core runtime)\n\t// ─────────────────────────────────────────────────────────────────────────\n\n\tprivate normalizePurpose(value: string): LLMCall[\"purpose\"] {\n\t\tswitch (value) {\n\t\t\tcase \"action\":\n\t\t\tcase \"reasoning\":\n\t\t\tcase \"evaluation\":\n\t\t\tcase \"response\":\n\t\t\tcase \"other\":\n\t\t\t\treturn value;\n\t\t\tdefault:\n\t\t\t\treturn \"other\";\n\t\t}\n\t}\n\n\tprivate defaultEnvironmentState(timestamp = Date.now()): EnvironmentState {\n\t\treturn {\n\t\t\ttimestamp,\n\t\t\tagentBalance: 0,\n\t\t\tagentPoints: 0,\n\t\t\tagentPnL: 0,\n\t\t\topenPositions: 0,\n\t\t};\n\t}\n\n\tprivate createPendingAction(stepTimestamp: number): ActionAttempt {\n\t\treturn {\n\t\t\tattemptId: \"\",\n\t\t\ttimestamp: stepTimestamp,\n\t\t\tactionType: \"pending\",\n\t\t\tactionName: \"pending\",\n\t\t\tparameters: {},\n\t\t\tsuccess: false,\n\t\t};\n\t}\n\n\tprivate createStep(\n\t\tstepId: string,\n\t\tstepNumber: number,\n\t\tenvState: EnvironmentState,\n\t): TrajectoryStep {\n\t\tconst timestamp = envState.timestamp || Date.now();\n\t\treturn {\n\t\t\tstepId: stepId as `${string}-${string}-${string}-${string}-${string}`,\n\t\t\tstepNumber,\n\t\t\ttimestamp,\n\t\t\tenvironmentState: envState,\n\t\t\tobservation: {},\n\t\t\tllmCalls: [],\n\t\t\tproviderAccesses: [],\n\t\t\taction: this.createPendingAction(timestamp),\n\t\t\treward: 0,\n\t\t\tdone: false,\n\t\t};\n\t}\n\n\tprivate ensureAtLeastOneLlmCall(\n\t\ttrajectory: Trajectory,\n\t\tsource: \"finalize\" | \"backfill\",\n\t): boolean {\n\t\tif (this.computeTotals(trajectory.steps).llmCallCount > 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst timestamp = Date.now();\n\t\tlet step = trajectory.steps[trajectory.steps.length - 1];\n\t\tif (!step) {\n\t\t\tstep = this.createStep(\n\t\t\t\tuuidv4(),\n\t\t\t\t0,\n\t\t\t\tthis.defaultEnvironmentState(timestamp),\n\t\t\t);\n\t\t\tstep.done = true;\n\t\t\ttrajectory.steps.push(step);\n\t\t}\n\t\tif (!Array.isArray(step.llmCalls)) {\n\t\t\tstep.llmCalls = [];\n\t\t}\n\n\t\tconst syntheticCall: LLMCall = {\n\t\t\tcallId: uuidv4(),\n\t\t\ttimestamp,\n\t\t\tmodel: \"milady/synthetic-trajectory-fallback\",\n\t\t\tsystemPrompt:\n\t\t\t\t\"[synthetic] inserted by trajectory logger because no LLM calls were captured\",\n\t\t\tuserPrompt:\n\t\t\t\t\"[synthetic] this trajectory completed without recorded model activity\",\n\t\t\tresponse:\n\t\t\t\t\"[synthetic] placeholder call inserted to enforce minimum llm_call_count=1\",\n\t\t\ttemperature: 0,\n\t\t\tmaxTokens: 0,\n\t\t\tpromptTokens: 0,\n\t\t\tcompletionTokens: 0,\n\t\t\tlatencyMs: 0,\n\t\t\tpurpose: \"other\",\n\t\t\tactionType: \"TRAJECTORY_FALLBACK\",\n\t\t\tstepType: \"synthetic\",\n\t\t\ttags: [\n\t\t\t\t\"llm\",\n\t\t\t\t\"step:synthetic\",\n\t\t\t\t\"purpose:other\",\n\t\t\t\t\"action:trajectory_fallback\",\n\t\t\t\t\"synthetic\",\n\t\t\t],\n\t\t};\n\t\tstep.llmCalls.push(syntheticCall);\n\n\t\tif (!step.metadata) step.metadata = {};\n\t\tstep.metadata.syntheticLlmCall = true;\n\t\tstep.metadata.syntheticLlmCallSource = source;\n\n\t\ttrajectory.metadata.syntheticLlmCall = true;\n\t\ttrajectory.metadata.syntheticLlmCallSource = source;\n\t\tconst existingFallbackCount = trajectory.metrics.syntheticLlmFallbackCount;\n\t\ttrajectory.metrics.syntheticLlmFallbackCount =\n\t\t\ttypeof existingFallbackCount === \"number\" &&\n\t\t\tNumber.isFinite(existingFallbackCount)\n\t\t\t\t? existingFallbackCount + 1\n\t\t\t\t: 1;\n\n\t\treturn true;\n\t}\n\n\tprivate computeTotals(steps: TrajectoryStep[]): {\n\t\tstepCount: number;\n\t\tllmCallCount: number;\n\t\tproviderAccessCount: number;\n\t\ttotalPromptTokens: number;\n\t\ttotalCompletionTokens: number;\n\t} {\n\t\tlet llmCallCount = 0;\n\t\tlet providerAccessCount = 0;\n\t\tlet totalPromptTokens = 0;\n\t\tlet totalCompletionTokens = 0;\n\t\tfor (const step of steps) {\n\t\t\tconst llmCalls = Array.isArray(step.llmCalls) ? step.llmCalls : [];\n\t\t\tconst providerAccesses = Array.isArray(step.providerAccesses)\n\t\t\t\t? step.providerAccesses\n\t\t\t\t: [];\n\t\t\tllmCallCount += llmCalls.length;\n\t\t\tproviderAccessCount += providerAccesses.length;\n\t\t\tfor (const call of llmCalls) {\n\t\t\t\ttotalPromptTokens += call.promptTokens ?? 0;\n\t\t\t\ttotalCompletionTokens += call.completionTokens ?? 0;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tstepCount: steps.length,\n\t\t\tllmCallCount,\n\t\t\tproviderAccessCount,\n\t\t\ttotalPromptTokens,\n\t\t\ttotalCompletionTokens,\n\t\t};\n\t}\n\n\t/**\n\t * Flush any pending writes for a trajectory.\n\t * Call before endTrajectory to ensure fire-and-forget writes\n\t * (logLLMCall, completeStep) have persisted.\n\t */\n\tasync flushWriteQueue(trajectoryId: string): Promise<void> {\n\t\tconst pending = this.writeQueues.get(trajectoryId);\n\t\tif (pending) {\n\t\t\tawait pending.catch(() => {});\n\t\t}\n\t}\n\n\tprivate async withTrajectoryWriteLock(\n\t\ttrajectoryId: string,\n\t\ttask: () => Promise<void>,\n\t): Promise<void> {\n\t\tconst previous = this.writeQueues.get(trajectoryId) ?? Promise.resolve();\n\t\tconst next = previous\n\t\t\t.catch(() => {\n\t\t\t\t// Keep queue alive after failures.\n\t\t\t})\n\t\t\t.then(task);\n\t\tthis.writeQueues.set(trajectoryId, next);\n\t\ttry {\n\t\t\tawait next;\n\t\t} finally {\n\t\t\tif (this.writeQueues.get(trajectoryId) === next) {\n\t\t\t\tthis.writeQueues.delete(trajectoryId);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async getTrajectoryById(\n\t\ttrajectoryId: string,\n\t): Promise<Trajectory | null> {\n\t\tconst result = await this.executeRawSql(\n\t\t\t`SELECT * FROM trajectories WHERE id = ${sqlLiteral(trajectoryId)} LIMIT 1`,\n\t\t);\n\t\tif (result.rows.length === 0) return null;\n\t\treturn this.rowToTrajectory(result.rows[0]);\n\t}\n\n\tprivate async getStepIndex(stepId: string): Promise<StepIndexRow | null> {\n\t\tconst result = await this.executeRawSql(\n\t\t\t`SELECT trajectory_id, step_number, is_active FROM trajectory_step_index WHERE step_id = ${sqlLiteral(stepId)} LIMIT 1`,\n\t\t);\n\t\tconst row = result.rows[0];\n\t\tif (!row) return null;\n\t\tconst trajectoryId = asString(pickCell(row, \"trajectory_id\"));\n\t\tif (!trajectoryId) return null;\n\t\tconst stepNumber = asNumber(pickCell(row, \"step_number\")) ?? 0;\n\t\tconst isActiveText = asString(pickCell(row, \"is_active\"));\n\t\tconst isActive =\n\t\t\tisActiveText === \"true\" ||\n\t\t\tisActiveText === \"t\" ||\n\t\t\tpickCell(row, \"is_active\") === true;\n\t\treturn { trajectoryId, stepNumber, isActive };\n\t}\n\n\tprivate async setStepIndex(\n\t\tstepId: string,\n\t\ttrajectoryId: string,\n\t\tstepNumber: number,\n\t\tisActive: boolean,\n\t): Promise<void> {\n\t\tawait this.executeRawSql(`\n INSERT INTO trajectory_step_index (\n step_id, trajectory_id, step_number, is_active, updated_at\n ) VALUES (\n ${sqlLiteral(stepId)},\n ${sqlLiteral(trajectoryId)},\n ${stepNumber},\n ${isActive ? \"TRUE\" : \"FALSE\"},\n CURRENT_TIMESTAMP\n )\n ON CONFLICT (step_id) DO UPDATE SET\n trajectory_id = EXCLUDED.trajectory_id,\n step_number = EXCLUDED.step_number,\n is_active = EXCLUDED.is_active,\n updated_at = CURRENT_TIMESTAMP\n `);\n\t}\n\n\tprivate async markAllStepsInactive(trajectoryId: string): Promise<void> {\n\t\tawait this.executeRawSql(`\n UPDATE trajectory_step_index\n SET is_active = FALSE, updated_at = CURRENT_TIMESTAMP\n WHERE trajectory_id = ${sqlLiteral(trajectoryId)}\n `);\n\t}\n\n\tprivate async resolveTrajectoryId(\n\t\tstepIdOrTrajectoryId: string,\n\t): Promise<string | null> {\n\t\tconst cached = this.stepToTrajectory.get(stepIdOrTrajectoryId);\n\t\tif (cached) return cached;\n\n\t\tconst byStep = await this.getStepIndex(stepIdOrTrajectoryId);\n\t\tif (byStep?.trajectoryId) {\n\t\t\tthis.stepToTrajectory.set(stepIdOrTrajectoryId, byStep.trajectoryId);\n\t\t\treturn byStep.trajectoryId;\n\t\t}\n\n\t\tconst byId = await this.executeRawSql(\n\t\t\t`SELECT id FROM trajectories WHERE id = ${sqlLiteral(stepIdOrTrajectoryId)} LIMIT 1`,\n\t\t);\n\t\tconst row = byId.rows[0];\n\t\tconst id = row ? asString(pickCell(row, \"id\")) : null;\n\t\treturn id;\n\t}\n\n\tprivate async getCurrentStepIdFromDb(\n\t\ttrajectoryId: string,\n\t): Promise<string | null> {\n\t\tconst result = await this.executeRawSql(`\n SELECT step_id\n FROM trajectory_step_index\n WHERE trajectory_id = ${sqlLiteral(trajectoryId)} AND is_active = TRUE\n ORDER BY step_number DESC, updated_at DESC\n LIMIT 1\n `);\n\t\tconst row = result.rows[0];\n\t\treturn row ? asString(pickCell(row, \"step_id\")) : null;\n\t}\n\n\tprivate async persistTrajectory(\n\t\ttrajectoryId: string,\n\t\ttrajectory: Trajectory,\n\t\tstatus: TrajectoryStatus = \"active\",\n\t): Promise<void> {\n\t\tif (status !== \"active\") {\n\t\t\tthis.ensureAtLeastOneLlmCall(trajectory, \"finalize\");\n\t\t}\n\n\t\tconst totals = this.computeTotals(trajectory.steps);\n\t\tconst isFinalStatus = status !== \"active\";\n\t\tconst persistedEndTime = isFinalStatus ? trajectory.endTime : null;\n\t\tconst persistedDuration = isFinalStatus ? trajectory.durationMs : null;\n\t\tconst updatedAtIso = new Date().toISOString();\n\t\ttry {\n\t\t\tawait this.executeRawSql(`\n UPDATE trajectories SET\n status = ${sqlLiteral(status)},\n end_time = ${sqlLiteral(persistedEndTime)},\n duration_ms = ${sqlLiteral(persistedDuration)},\n step_count = ${totals.stepCount},\n llm_call_count = ${totals.llmCallCount},\n provider_access_count = ${totals.providerAccessCount},\n total_prompt_tokens = ${totals.totalPromptTokens},\n total_completion_tokens = ${totals.totalCompletionTokens},\n total_reward = ${trajectory.totalReward},\n steps_json = ${sqlLiteral(trajectory.steps)},\n reward_components_json = ${sqlLiteral(trajectory.rewardComponents)},\n metrics_json = ${sqlLiteral(trajectory.metrics)},\n metadata_json = ${sqlLiteral(trajectory.metadata)},\n updated_at = ${sqlLiteral(updatedAtIso)}\n WHERE id = ${sqlLiteral(trajectoryId)}\n `);\n\t\t} catch (modernErr) {\n\t\t\t// Compatibility fallback for legacy Milady schema.\n\t\t\tawait this.executeRawSql(`\n UPDATE trajectories SET\n status = ${sqlLiteral(status)},\n end_time = ${sqlLiteral(persistedEndTime)},\n duration_ms = ${sqlLiteral(persistedDuration)},\n step_count = ${totals.stepCount},\n llm_call_count = ${totals.llmCallCount},\n provider_access_count = ${totals.providerAccessCount},\n total_prompt_tokens = ${totals.totalPromptTokens},\n total_completion_tokens = ${totals.totalCompletionTokens},\n total_reward = ${trajectory.totalReward},\n steps_json = ${sqlLiteral(trajectory.steps)},\n metadata = ${sqlLiteral(trajectory.metadata)},\n updated_at = ${sqlLiteral(updatedAtIso)}\n WHERE id = ${sqlLiteral(trajectoryId)}\n `).catch((legacyErr) => {\n\t\t\t\tlogger.warn(\n\t\t\t\t\t{ err: legacyErr, trajectoryId },\n\t\t\t\t\t`[trajectory-logger] Failed to persist trajectory update after compatibility fallback: ${modernErr instanceof Error ? modernErr.message : String(modernErr)}`,\n\t\t\t\t);\n\t\t\t\tthrow legacyErr;\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate async ensureStepExists(\n\t\ttrajectory: Trajectory,\n\t\tstepId: string,\n\t): Promise<TrajectoryStep> {\n\t\tlet step = trajectory.steps.find((entry) => entry.stepId === stepId);\n\t\tif (step) {\n\t\t\tif (!Array.isArray(step.llmCalls)) step.llmCalls = [];\n\t\t\tif (!Array.isArray(step.providerAccesses)) step.providerAccesses = [];\n\t\t\treturn step;\n\t\t}\n\n\t\tconst index = await this.getStepIndex(stepId);\n\t\tconst stepNumber = index?.stepNumber ?? trajectory.steps.length;\n\t\tstep = this.createStep(stepId, stepNumber, this.defaultEnvironmentState());\n\t\ttrajectory.steps.push(step);\n\t\ttrajectory.steps.sort((a, b) => a.stepNumber - b.stepNumber);\n\t\treturn step;\n\t}\n\n\t/**\n\t * Called by the runtime when an LLM call is made.\n\t * This is the interface the runtime expects.\n\t */\n\tlogLlmCall(params: {\n\t\tstepId: string;\n\t\tmodel: string;\n\t\tmodelVersion?: string;\n\t\tsystemPrompt: string;\n\t\tuserPrompt: string;\n\t\tresponse: string;\n\t\treasoning?: string;\n\t\ttemperature: number;\n\t\tmaxTokens: number;\n\t\tpurpose: string;\n\t\tactionType: string;\n\t\tlatencyMs: number;\n\t\tpromptTokens?: number;\n\t\tcompletionTokens?: number;\n\t}): void {\n\t\tif (!this.enabled) return;\n\n\t\t// Resolve trajectory synchronously from in-memory map (set by startStep).\n\t\t// Enter the write lock IMMEDIATELY so flushWriteQueue() in endAutonomousTick\n\t\t// can await it. The old fire-and-forget pattern caused a race: endTrajectory\n\t\t// would read the trajectory before logLlmCall's write completed, finding zero\n\t\t// LLM calls and inserting a synthetic placeholder.\n\t\tconst trajectoryId = this.stepToTrajectory.get(params.stepId);\n\t\tif (!trajectoryId) {\n\t\t\t// Fallback: async resolution (legacy paths)\n\t\t\tvoid (async () => {\n\t\t\t\tconst resolved = await this.resolveTrajectoryId(params.stepId);\n\t\t\t\tif (!resolved) return;\n\t\t\t\tawait this._persistLlmCall(resolved, params);\n\t\t\t})().catch((err) => {\n\t\t\t\tlogger.warn(\n\t\t\t\t\t{ err, stepId: params.stepId },\n\t\t\t\t\t\"[trajectory-logger] Failed to persist LLM call (fallback)\",\n\t\t\t\t);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Enter the write lock synchronously so flushWriteQueue sees this pending write\n\t\tvoid this._persistLlmCall(trajectoryId, params).catch((err) => {\n\t\t\tlogger.warn(\n\t\t\t\t{ err, stepId: params.stepId },\n\t\t\t\t\"[trajectory-logger] Failed to persist LLM call\",\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate async _persistLlmCall(\n\t\ttrajectoryId: string,\n\t\tparams: {\n\t\t\tstepId: string;\n\t\t\tmodel: string;\n\t\t\tmodelVersion?: string;\n\t\t\tsystemPrompt: string;\n\t\t\tuserPrompt: string;\n\t\t\tresponse: string;\n\t\t\treasoning?: string;\n\t\t\ttemperature: number;\n\t\t\tmaxTokens: number;\n\t\t\tpurpose: string;\n\t\t\tactionType: string;\n\t\t\tlatencyMs: number;\n\t\t\tpromptTokens?: number;\n\t\t\tcompletionTokens?: number;\n\t\t},\n\t): Promise<void> {\n\t\tawait this.withTrajectoryWriteLock(trajectoryId, async () => {\n\t\t\tconst trajectory = await this.getTrajectoryById(trajectoryId);\n\t\t\tif (!trajectory) return;\n\n\t\t\tconst step = await this.ensureStepExists(trajectory, params.stepId);\n\t\t\tconst llmCall: LLMCall = {\n\t\t\t\tcallId: uuidv4(),\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\tmodel: params.model,\n\t\t\t\tmodelVersion: params.modelVersion,\n\t\t\t\tsystemPrompt: params.systemPrompt,\n\t\t\t\tuserPrompt: params.userPrompt,\n\t\t\t\tresponse: params.response,\n\t\t\t\treasoning: params.reasoning,\n\t\t\t\ttemperature: params.temperature,\n\t\t\t\tmaxTokens: params.maxTokens,\n\t\t\t\tpurpose: this.normalizePurpose(params.purpose),\n\t\t\t\tactionType: params.actionType,\n\t\t\t\tpromptTokens: params.promptTokens,\n\t\t\t\tcompletionTokens: params.completionTokens,\n\t\t\t\tlatencyMs: params.latencyMs,\n\t\t\t};\n\t\t\tstep.llmCalls.push(llmCall);\n\t\t\tawait this.persistTrajectory(trajectoryId, trajectory, \"active\");\n\t\t});\n\t}\n\n\t// Legacy compatibility helper (old camel-casing + split args).\n\tlogLLMCall(\n\t\tstepId: string,\n\t\tdetails: {\n\t\t\tmodel: string;\n\t\t\tmodelVersion?: string;\n\t\t\tsystemPrompt: string;\n\t\t\tuserPrompt: string;\n\t\t\tresponse: string;\n\t\t\treasoning?: string;\n\t\t\ttemperature: number;\n\t\t\tmaxTokens: number;\n\t\t\tpurpose: string;\n\t\t\tactionType?: string;\n\t\t\tlatencyMs?: number;\n\t\t\tpromptTokens?: number;\n\t\t\tcompletionTokens?: number;\n\t\t},\n\t): void {\n\t\tthis.logLlmCall({\n\t\t\tstepId,\n\t\t\tmodel: details.model,\n\t\t\tmodelVersion: details.modelVersion,\n\t\t\tsystemPrompt: details.systemPrompt,\n\t\t\tuserPrompt: details.userPrompt,\n\t\t\tresponse: details.response,\n\t\t\treasoning: details.reasoning,\n\t\t\ttemperature: details.temperature,\n\t\t\tmaxTokens: details.maxTokens,\n\t\t\tpurpose: details.purpose,\n\t\t\tactionType: details.actionType ?? \"\",\n\t\t\tlatencyMs: details.latencyMs ?? 0,\n\t\t\tpromptTokens: details.promptTokens,\n\t\t\tcompletionTokens: details.completionTokens,\n\t\t});\n\t}\n\n\t/**\n\t * Called by the runtime when a provider is accessed.\n\t * Supports both runtime shape and legacy split args.\n\t */\n\tlogProviderAccess(params: {\n\t\tstepId: string;\n\t\tproviderName: string;\n\t\tdata: Record<string, unknown>;\n\t\tpurpose: string;\n\t\tquery?: Record<string, unknown>;\n\t}): void;\n\tlogProviderAccess(\n\t\tstepId: string,\n\t\tparams: {\n\t\t\tproviderName: string;\n\t\t\tdata: Record<string, unknown>;\n\t\t\tpurpose: string;\n\t\t\tquery?: Record<string, unknown>;\n\t\t},\n\t): void;\n\tlogProviderAccess(\n\t\targ1:\n\t\t\t| string\n\t\t\t| {\n\t\t\t\t\tstepId: string;\n\t\t\t\t\tproviderName: string;\n\t\t\t\t\tdata: Record<string, unknown>;\n\t\t\t\t\tpurpose: string;\n\t\t\t\t\tquery?: Record<string, unknown>;\n\t\t\t },\n\t\targ2?: {\n\t\t\tproviderName: string;\n\t\t\tdata: Record<string, unknown>;\n\t\t\tpurpose: string;\n\t\t\tquery?: Record<string, unknown>;\n\t\t},\n\t): void {\n\t\tif (!this.enabled) return;\n\t\tconst params =\n\t\t\ttypeof arg1 === \"string\"\n\t\t\t\t? {\n\t\t\t\t\t\tstepId: arg1,\n\t\t\t\t\t\tproviderName: arg2?.providerName ?? \"unknown\",\n\t\t\t\t\t\tdata: arg2?.data ?? {},\n\t\t\t\t\t\tpurpose: arg2?.purpose ?? \"other\",\n\t\t\t\t\t\tquery: arg2?.query,\n\t\t\t\t\t}\n\t\t\t\t: arg1;\n\n\t\tvoid (async () => {\n\t\t\tconst trajectoryId = await this.resolveTrajectoryId(params.stepId);\n\t\t\tif (!trajectoryId) {\n\t\t\t\tlogger.debug(\n\t\t\t\t\t{ stepId: params.stepId },\n\t\t\t\t\t\"[trajectory-logger] No trajectory mapping for provider access\",\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait this.withTrajectoryWriteLock(trajectoryId, async () => {\n\t\t\t\tconst trajectory = await this.getTrajectoryById(trajectoryId);\n\t\t\t\tif (!trajectory) return;\n\n\t\t\t\tconst step = await this.ensureStepExists(trajectory, params.stepId);\n\t\t\t\tconst access: ProviderAccess = {\n\t\t\t\t\tproviderId: uuidv4(),\n\t\t\t\t\tproviderName: params.providerName,\n\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\tdata: params.data as Record<string, JsonValue>,\n\t\t\t\t\tquery: params.query as Record<string, JsonValue> | undefined,\n\t\t\t\t\tpurpose: params.purpose,\n\t\t\t\t};\n\t\t\t\tstep.providerAccesses.push(access);\n\t\t\t\tawait this.persistTrajectory(trajectoryId, trajectory, \"active\");\n\t\t\t});\n\t\t})().catch((err) => {\n\t\t\tlogger.warn(\n\t\t\t\t{ err, stepId: params.stepId },\n\t\t\t\t\"[trajectory-logger] Failed to persist provider access\",\n\t\t\t);\n\t\t});\n\t}\n\n\tlogProviderAccessByTrajectoryId(\n\t\ttrajectoryId: string,\n\t\taccess: {\n\t\t\tproviderName: string;\n\t\t\tdata: Record<string, unknown>;\n\t\t\tpurpose: string;\n\t\t\tquery?: Record<string, unknown>;\n\t\t},\n\t): void {\n\t\tconst stepId = this.getCurrentStepId(trajectoryId);\n\t\tif (!stepId) {\n\t\t\tlogger.debug(\n\t\t\t\t{ trajectoryId },\n\t\t\t\t\"[trajectory-logger] No active step for provider access by trajectory\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tthis.logProviderAccess(stepId, access);\n\t}\n\n\t// ─────────────────────────────────────────────────────────────────────────\n\t// Trajectory Lifecycle (for RL training / message handling)\n\t// ─────────────────────────────────────────────────────────────────────────\n\n\t/**\n\t * Start a new trajectory. Supports both call styles:\n\t * 1) startTrajectory(stepId, { agentId, ...legacyOptions })\n\t * 2) startTrajectory(agentId, { ...optionsWithoutAgentId })\n\t */\n\tasync startTrajectory(\n\t\tstepIdOrAgentId: string,\n\t\toptions: StartTrajectoryOptions = {},\n\t): Promise<string> {\n\t\tif (!this.enabled) return uuidv4();\n\n\t\tconst legacyStepId =\n\t\t\ttypeof options.agentId === \"string\" && options.agentId.length > 0\n\t\t\t\t? stepIdOrAgentId\n\t\t\t\t: null;\n\t\tconst agentId =\n\t\t\t(typeof options.agentId === \"string\" && options.agentId.length > 0\n\t\t\t\t? options.agentId\n\t\t\t\t: stepIdOrAgentId) ?? stepIdOrAgentId;\n\n\t\tconst trajectoryId = uuidv4();\n\t\tconst now = Date.now();\n\t\tconst timestampIso = new Date(now).toISOString();\n\t\tconst metadata: Record<string, JsonValue> = {\n\t\t\t...(options.metadata ?? {}),\n\t\t};\n\t\tif (options.roomId) metadata.roomId = options.roomId;\n\t\tif (options.entityId) metadata.entityId = options.entityId;\n\n\t\tconst trajectory: Trajectory = {\n\t\t\ttrajectoryId:\n\t\t\t\ttrajectoryId as `${string}-${string}-${string}-${string}-${string}`,\n\t\t\tagentId: agentId as `${string}-${string}-${string}-${string}-${string}`,\n\t\t\tstartTime: now,\n\t\t\tendTime: now,\n\t\t\tdurationMs: 0,\n\t\t\tscenarioId: options.scenarioId,\n\t\t\tepisodeId: options.episodeId,\n\t\t\tbatchId: options.batchId,\n\t\t\tgroupIndex: options.groupIndex,\n\t\t\tsteps: [],\n\t\t\ttotalReward: 0,\n\t\t\trewardComponents: { environmentReward: 0 },\n\t\t\tmetrics: {\n\t\t\t\tepisodeLength: 0,\n\t\t\t\tfinalStatus: \"completed\",\n\t\t\t},\n\t\t\tmetadata: {\n\t\t\t\tsource: options.source ?? \"chat\",\n\t\t\t\t...metadata,\n\t\t\t},\n\t\t};\n\n\t\tlet persistedStart = false;\n\t\ttry {\n\t\t\tawait this.executeRawSql(`\n INSERT INTO trajectories (\n id, agent_id, source, status, start_time, scenario_id, episode_id,\n batch_id, group_index, metadata_json, steps_json, reward_components_json, metrics_json,\n created_at, updated_at\n ) VALUES (\n ${sqlLiteral(trajectoryId)},\n ${sqlLiteral(agentId)},\n ${sqlLiteral(options.source ?? \"chat\")},\n 'active',\n ${now},\n ${sqlLiteral(options.scenarioId ?? null)},\n ${sqlLiteral(options.episodeId ?? null)},\n ${sqlLiteral(options.batchId ?? null)},\n ${options.groupIndex ?? \"NULL\"},\n ${sqlLiteral(trajectory.metadata)},\n ${sqlLiteral([])},\n ${sqlLiteral(trajectory.rewardComponents)},\n ${sqlLiteral(trajectory.metrics)},\n ${sqlLiteral(timestampIso)},\n ${sqlLiteral(timestampIso)}\n )\n `);\n\t\t\tpersistedStart = true;\n\t\t} catch (err) {\n\t\t\ttry {\n\t\t\t\t// Compatibility fallback for legacy Milady schema that stores metadata\n\t\t\t\t// in `metadata` instead of `metadata_json`.\n\t\t\t\tawait this.executeRawSql(`\n INSERT INTO trajectories (\n id, agent_id, source, status, start_time, steps_json, metadata, created_at, updated_at\n ) VALUES (\n ${sqlLiteral(trajectoryId)},\n ${sqlLiteral(agentId)},\n ${sqlLiteral(options.source ?? \"chat\")},\n 'active',\n ${now},\n ${sqlLiteral([])},\n ${sqlLiteral(trajectory.metadata)},\n ${sqlLiteral(timestampIso)},\n ${sqlLiteral(timestampIso)}\n )\n `);\n\t\t\t\tpersistedStart = true;\n\t\t\t} catch (legacyErr) {\n\t\t\t\tlogger.warn(\n\t\t\t\t\t{ err: legacyErr, trajectoryId },\n\t\t\t\t\t\"[trajectory-logger] Failed to persist trajectory start\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (persistedStart && legacyStepId) {\n\t\t\tthis.stepToTrajectory.set(legacyStepId, trajectoryId);\n\t\t\ttry {\n\t\t\t\tawait this.setStepIndex(legacyStepId, trajectoryId, -1, false);\n\t\t\t} catch (indexErr) {\n\t\t\t\tlogger.warn(\n\t\t\t\t\t{ err: indexErr, trajectoryId, stepId: legacyStepId },\n\t\t\t\t\t\"[trajectory-logger] Failed to persist step index for trajectory start\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn trajectoryId;\n\t}\n\n\t/**\n\t * Start a new step within a trajectory.\n\t */\n\tstartStep(trajectoryId: string, envState: EnvironmentState): string {\n\t\tif (!this.enabled) return uuidv4();\n\n\t\tconst stepId = uuidv4();\n\t\tthis.activeStepIds.set(trajectoryId, stepId);\n\t\tthis.stepToTrajectory.set(stepId, trajectoryId);\n\n\t\tvoid this.withTrajectoryWriteLock(trajectoryId, async () => {\n\t\t\tconst trajectory = await this.getTrajectoryById(trajectoryId);\n\t\t\tif (!trajectory) {\n\t\t\t\tlogger.warn(\n\t\t\t\t\t{ trajectoryId },\n\t\t\t\t\t\"[trajectory-logger] Trajectory not found for startStep\",\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst step = this.createStep(stepId, trajectory.steps.length, envState);\n\t\t\ttrajectory.steps.push(step);\n\t\t\tawait this.markAllStepsInactive(trajectoryId);\n\t\t\tawait this.setStepIndex(stepId, trajectoryId, step.stepNumber, true);\n\t\t\tawait this.persistTrajectory(trajectoryId, trajectory, \"active\");\n\t\t}).catch((err) => {\n\t\t\tlogger.warn(\n\t\t\t\t{ err, trajectoryId, stepId },\n\t\t\t\t\"[trajectory-logger] Failed to persist startStep\",\n\t\t\t);\n\t\t});\n\n\t\treturn stepId;\n\t}\n\n\t/**\n\t * Complete a step with action results.\n\t * Supports:\n\t * completeStep(trajectoryId, action, rewardInfo?)\n\t * completeStep(trajectoryId, stepId, action, rewardInfo?)\n\t */\n\tcompleteStep(\n\t\ttrajectoryId: string,\n\t\taction: Omit<ActionAttempt, \"attemptId\" | \"timestamp\">,\n\t\trewardInfo?: CompleteStepRewardInfo,\n\t): void;\n\tcompleteStep(\n\t\ttrajectoryId: string,\n\t\tstepId: string,\n\t\taction: Omit<ActionAttempt, \"attemptId\" | \"timestamp\">,\n\t\trewardInfo?: CompleteStepRewardInfo,\n\t): void;\n\tcompleteStep(\n\t\ttrajectoryId: string,\n\t\tactionOrStepId: string | Omit<ActionAttempt, \"attemptId\" | \"timestamp\">,\n\t\tactionOrReward?:\n\t\t\t| Omit<ActionAttempt, \"attemptId\" | \"timestamp\">\n\t\t\t| CompleteStepRewardInfo,\n\t\tmaybeReward?: CompleteStepRewardInfo,\n\t): void {\n\t\tif (!this.enabled) return;\n\n\t\tconst explicitStepId =\n\t\t\ttypeof actionOrStepId === \"string\" ? actionOrStepId : null;\n\t\tconst action = (\n\t\t\ttypeof actionOrStepId === \"string\" ? actionOrReward : actionOrStepId\n\t\t) as Omit<ActionAttempt, \"attemptId\" | \"timestamp\"> | undefined;\n\t\tconst rewardInfo = (\n\t\t\ttypeof actionOrStepId === \"string\" ? maybeReward : actionOrReward\n\t\t) as CompleteStepRewardInfo | undefined;\n\n\t\tif (!action) return;\n\n\t\tvoid this.withTrajectoryWriteLock(trajectoryId, async () => {\n\t\t\tconst trajectory = await this.getTrajectoryById(trajectoryId);\n\t\t\tif (!trajectory) return;\n\n\t\t\tconst stepId =\n\t\t\t\texplicitStepId ??\n\t\t\t\tthis.activeStepIds.get(trajectoryId) ??\n\t\t\t\t(await this.getCurrentStepIdFromDb(trajectoryId));\n\t\t\tif (!stepId) return;\n\n\t\t\tconst step = await this.ensureStepExists(trajectory, stepId);\n\t\t\tstep.action = {\n\t\t\t\tattemptId: uuidv4(),\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t...action,\n\t\t\t};\n\t\t\tstep.done = true;\n\n\t\t\tif (rewardInfo?.reward !== undefined) {\n\t\t\t\tstep.reward = rewardInfo.reward;\n\t\t\t\ttrajectory.totalReward += rewardInfo.reward;\n\t\t\t}\n\t\t\tif (rewardInfo?.components) {\n\t\t\t\ttrajectory.rewardComponents = {\n\t\t\t\t\t...trajectory.rewardComponents,\n\t\t\t\t\t...rewardInfo.components,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tawait this.setStepIndex(stepId, trajectoryId, step.stepNumber, false);\n\t\t\tthis.activeStepIds.delete(trajectoryId);\n\t\t\tawait this.persistTrajectory(trajectoryId, trajectory, \"active\");\n\t\t}).catch((err) => {\n\t\t\tlogger.warn(\n\t\t\t\t{ err, trajectoryId },\n\t\t\t\t\"[trajectory-logger] Failed to complete step\",\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * End a trajectory and persist final state.\n\t */\n\tasync endTrajectory(\n\t\tstepIdOrTrajectoryId: string,\n\t\tstatus: \"completed\" | \"error\" | \"timeout\" | \"terminated\" = \"completed\",\n\t\tfinalMetrics?: Record<string, JsonValue>,\n\t): Promise<void> {\n\t\tif (!this.enabled) return;\n\n\t\tconst trajectoryId = await this.resolveTrajectoryId(stepIdOrTrajectoryId);\n\t\tif (!trajectoryId) {\n\t\t\tlogger.debug(\n\t\t\t\t{ stepIdOrTrajectoryId },\n\t\t\t\t\"[trajectory-logger] No trajectory to end\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tawait this.withTrajectoryWriteLock(trajectoryId, async () => {\n\t\t\tconst trajectory = await this.getTrajectoryById(trajectoryId);\n\t\t\tif (!trajectory) {\n\t\t\t\tlogger.debug(\n\t\t\t\t\t{ trajectoryId },\n\t\t\t\t\t\"[trajectory-logger] Trajectory not found while ending\",\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst now = Date.now();\n\t\t\tconst durationMs = now - trajectory.startTime;\n\t\t\tconst metrics = { ...trajectory.metrics, finalStatus: status, episodeLength: trajectory.steps.length };\n\t\t\tif (finalMetrics) {\n\t\t\t\tObject.assign(metrics, finalMetrics);\n\t\t\t}\n\n\t\t\tawait this.markAllStepsInactive(trajectoryId);\n\t\t\tthis.activeStepIds.delete(trajectoryId);\n\n\t\t\t// Use a targeted UPDATE that preserves steps_json as written\n\t\t\t// by completeStep, instead of re-reading and overwriting.\n\t\t\tconst updatedAtIso = new Date().toISOString();\n\t\t\tawait this.executeRawSql(`\n\t\t\t\tUPDATE trajectories SET\n\t\t\t\t\tstatus = ${sqlLiteral(status)},\n\t\t\t\t\tend_time = ${now},\n\t\t\t\t\tduration_ms = ${durationMs},\n\t\t\t\t\tmetrics_json = ${sqlLiteral(metrics)},\n\t\t\t\t\tupdated_at = ${sqlLiteral(updatedAtIso)}\n\t\t\t\tWHERE id = ${sqlLiteral(trajectoryId)}\n\t\t\t`);\n\t\t});\n\n\t\tfor (const [\n\t\t\tstepId,\n\t\t\tmappedTrajectoryId,\n\t\t] of this.stepToTrajectory.entries()) {\n\t\t\tif (mappedTrajectoryId === trajectoryId) {\n\t\t\t\tthis.stepToTrajectory.delete(stepId);\n\t\t\t}\n\t\t}\n\t}\n\n\t// ─────────────────────────────────────────────────────────────────────────\n\t// Query Interface (for UI and export)\n\t// ─────────────────────────────────────────────────────────────────────────\n\n\tasync listTrajectories(\n\t\toptions: TrajectoryListOptions = {},\n\t): Promise<TrajectoryListResult> {\n\t\tconst runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n\t\tif (!runtime?.adapter) {\n\t\t\treturn { trajectories: [], total: 0, offset: 0, limit: 50 };\n\t\t}\n\n\t\tconst offset = Math.max(0, options.offset ?? 0);\n\t\tconst limit = Math.min(500, Math.max(1, options.limit ?? 50));\n\n\t\tconst whereClauses: string[] = [];\n\t\tif (options.status) {\n\t\t\twhereClauses.push(`status = ${sqlLiteral(options.status)}`);\n\t\t}\n\t\tif (options.source) {\n\t\t\twhereClauses.push(`source = ${sqlLiteral(options.source)}`);\n\t\t}\n\t\tif (options.scenarioId) {\n\t\t\twhereClauses.push(`scenario_id = ${sqlLiteral(options.scenarioId)}`);\n\t\t}\n\t\tif (options.batchId) {\n\t\t\twhereClauses.push(`batch_id = ${sqlLiteral(options.batchId)}`);\n\t\t}\n\t\tif (options.isTrainingData !== undefined) {\n\t\t\twhereClauses.push(`is_training_data = ${options.isTrainingData}`);\n\t\t}\n\t\tif (options.startDate) {\n\t\t\twhereClauses.push(\n\t\t\t\t`created_at >= ${sqlLiteral(options.startDate)}::timestamptz`,\n\t\t\t);\n\t\t}\n\t\tif (options.endDate) {\n\t\t\twhereClauses.push(\n\t\t\t\t`created_at <= ${sqlLiteral(options.endDate)}::timestamptz`,\n\t\t\t);\n\t\t}\n\t\tif (options.search) {\n\t\t\tconst escaped = options.search.replace(/'/g, \"''\").replace(/%/g, \"\\\\%\");\n\t\t\twhereClauses.push(`(\n id ILIKE '%${escaped}%' OR\n agent_id ILIKE '%${escaped}%' OR\n source ILIKE '%${escaped}%' OR\n scenario_id ILIKE '%${escaped}%'\n )`);\n\t\t}\n\n\t\tconst whereClause =\n\t\t\twhereClauses.length > 0 ? `WHERE ${whereClauses.join(\" AND \")}` : \"\";\n\n\t\tconst countResult = await this.executeRawSql(\n\t\t\t`SELECT count(*)::int AS total FROM trajectories ${whereClause}`,\n\t\t);\n\t\tconst total = asNumber(pickCell(countResult.rows[0] ?? {}, \"total\")) ?? 0;\n\n\t\tconst rowsResult = await this.executeRawSql(`\n SELECT\n id, agent_id, source, status, start_time, end_time, duration_ms,\n step_count, llm_call_count, total_prompt_tokens, total_completion_tokens,\n total_reward, scenario_id, batch_id, created_at\n FROM trajectories\n ${whereClause}\n ORDER BY created_at DESC\n LIMIT ${limit} OFFSET ${offset}\n `);\n\n\t\tconst trajectories: TrajectoryListItem[] = rowsResult.rows.map((row) => {\n\t\t\tconst status =\n\t\t\t\t(asString(pickCell(row, \"status\")) as TrajectoryListItem[\"status\"]) ??\n\t\t\t\t\"completed\";\n\t\t\tconst rawLlmCallCount = asNumber(pickCell(row, \"llm_call_count\")) ?? 0;\n\t\t\tconst llmCallCount =\n\t\t\t\tstatus === \"active\" ? rawLlmCallCount : Math.max(1, rawLlmCallCount);\n\n\t\t\treturn {\n\t\t\t\tid: asString(pickCell(row, \"id\")) ?? \"\",\n\t\t\t\tagentId: asString(pickCell(row, \"agent_id\")) ?? \"\",\n\t\t\t\tsource: asString(pickCell(row, \"source\")) ?? \"chat\",\n\t\t\t\tstatus,\n\t\t\t\tstartTime: asNumber(pickCell(row, \"start_time\")) ?? 0,\n\t\t\t\tendTime: asNumber(pickCell(row, \"end_time\")),\n\t\t\t\tdurationMs: asNumber(pickCell(row, \"duration_ms\")),\n\t\t\t\tstepCount: asNumber(pickCell(row, \"step_count\")) ?? 0,\n\t\t\t\tllmCallCount,\n\t\t\t\ttotalPromptTokens: asNumber(pickCell(row, \"total_prompt_tokens\")) ?? 0,\n\t\t\t\ttotalCompletionTokens:\n\t\t\t\t\tasNumber(pickCell(row, \"total_completion_tokens\")) ?? 0,\n\t\t\t\ttotalReward: asNumber(pickCell(row, \"total_reward\")) ?? 0,\n\t\t\t\tscenarioId: asString(pickCell(row, \"scenario_id\")),\n\t\t\t\tbatchId: asString(pickCell(row, \"batch_id\")),\n\t\t\t\tcreatedAt: asIsoString(pickCell(row, \"created_at\")),\n\t\t\t};\n\t\t});\n\n\t\treturn { trajectories, total, offset, limit };\n\t}\n\n\tasync getTrajectoryDetail(trajectoryId: string): Promise<Trajectory | null> {\n\t\tconst runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n\t\tif (!runtime?.adapter) return null;\n\n\t\tconst safeId = trajectoryId.replace(/'/g, \"''\");\n\t\tconst result = await this.executeRawSql(\n\t\t\t`SELECT * FROM trajectories WHERE id = '${safeId}' LIMIT 1`,\n\t\t);\n\n\t\tif (result.rows.length === 0) return null;\n\n\t\tconst row = result.rows[0];\n\t\tconst trajectory = this.rowToTrajectory(row);\n\t\tconst status = this.normalizeTrajectoryStatus(\n\t\t\tasString(pickCell(row, \"status\")),\n\t\t);\n\t\tif (status !== \"active\") {\n\t\t\tconst inserted = this.ensureAtLeastOneLlmCall(trajectory, \"backfill\");\n\t\t\tif (inserted) {\n\t\t\t\tawait this.withTrajectoryWriteLock(trajectoryId, async () => {\n\t\t\t\t\tawait this.persistTrajectory(trajectoryId, trajectory, status);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn trajectory;\n\t}\n\n\tasync getStats(): Promise<TrajectoryStats> {\n\t\tconst runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n\t\tif (!runtime?.adapter) {\n\t\t\treturn {\n\t\t\t\ttotalTrajectories: 0,\n\t\t\t\ttotalSteps: 0,\n\t\t\t\ttotalLlmCalls: 0,\n\t\t\t\ttotalPromptTokens: 0,\n\t\t\t\ttotalCompletionTokens: 0,\n\t\t\t\taverageDurationMs: 0,\n\t\t\t\taverageReward: 0,\n\t\t\t\tbySource: {},\n\t\t\t\tbyStatus: {},\n\t\t\t\tbyScenario: {},\n\t\t\t};\n\t\t}\n\n\t\tconst statsResult = await this.executeRawSql(`\n SELECT\n count(*)::int AS total_trajectories,\n COALESCE(sum(step_count), 0)::int AS total_steps,\n COALESCE(sum(llm_call_count), 0)::int AS total_llm_calls,\n COALESCE(sum(total_prompt_tokens), 0)::int AS total_prompt_tokens,\n COALESCE(sum(total_completion_tokens), 0)::int AS total_completion_tokens,\n COALESCE(avg(duration_ms), 0)::int AS avg_duration_ms,\n COALESCE(avg(total_reward), 0)::real AS avg_reward\n FROM trajectories\n `);\n\n\t\tconst sourceResult = await this.executeRawSql(`\n SELECT source, count(*)::int AS cnt\n FROM trajectories\n GROUP BY source\n `);\n\n\t\tconst statusResult = await this.executeRawSql(`\n SELECT status, count(*)::int AS cnt\n FROM trajectories\n GROUP BY status\n `);\n\n\t\tconst scenarioResult = await this.executeRawSql(`\n SELECT scenario_id, count(*)::int AS cnt\n FROM trajectories\n WHERE scenario_id IS NOT NULL\n GROUP BY scenario_id\n `);\n\n\t\tconst stats = statsResult.rows[0] ?? {};\n\t\tconst bySource: Record<string, number> = {};\n\t\tconst byStatus: Record<string, number> = {};\n\t\tconst byScenario: Record<string, number> = {};\n\n\t\tfor (const row of sourceResult.rows) {\n\t\t\tconst source = asString(pickCell(row, \"source\"));\n\t\t\tconst cnt = asNumber(pickCell(row, \"cnt\"));\n\t\t\tif (source && cnt !== null) bySource[source] = cnt;\n\t\t}\n\n\t\tfor (const row of statusResult.rows) {\n\t\t\tconst status = asString(pickCell(row, \"status\"));\n\t\t\tconst cnt = asNumber(pickCell(row, \"cnt\"));\n\t\t\tif (status && cnt !== null) byStatus[status] = cnt;\n\t\t}\n\n\t\tfor (const row of scenarioResult.rows) {\n\t\t\tconst scenario = asString(pickCell(row, \"scenario_id\"));\n\t\t\tconst cnt = asNumber(pickCell(row, \"cnt\"));\n\t\t\tif (scenario && cnt !== null) byScenario[scenario] = cnt;\n\t\t}\n\n\t\treturn {\n\t\t\ttotalTrajectories: asNumber(pickCell(stats, \"total_trajectories\")) ?? 0,\n\t\t\ttotalSteps: asNumber(pickCell(stats, \"total_steps\")) ?? 0,\n\t\t\ttotalLlmCalls: asNumber(pickCell(stats, \"total_llm_calls\")) ?? 0,\n\t\t\ttotalPromptTokens: asNumber(pickCell(stats, \"total_prompt_tokens\")) ?? 0,\n\t\t\ttotalCompletionTokens:\n\t\t\t\tasNumber(pickCell(stats, \"total_completion_tokens\")) ?? 0,\n\t\t\taverageDurationMs: asNumber(pickCell(stats, \"avg_duration_ms\")) ?? 0,\n\t\t\taverageReward: asNumber(pickCell(stats, \"avg_reward\")) ?? 0,\n\t\t\tbySource,\n\t\t\tbyStatus,\n\t\t\tbyScenario,\n\t\t};\n\t}\n\n\tasync deleteTrajectories(trajectoryIds: string[]): Promise<number> {\n\t\tconst runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n\t\tif (!runtime?.adapter) return 0;\n\t\tif (trajectoryIds.length === 0) return 0;\n\n\t\tconst ids = trajectoryIds.map(sqlLiteral).join(\", \");\n\t\tconst result = await this.executeRawSql(\n\t\t\t`DELETE FROM trajectories WHERE id IN (${ids}) RETURNING id`,\n\t\t);\n\t\treturn result.rows.length;\n\t}\n\n\tasync clearAllTrajectories(): Promise<number> {\n\t\tconst runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n\t\tif (!runtime?.adapter) return 0;\n\n\t\tconst countResult = await this.executeRawSql(\n\t\t\t`SELECT count(*)::int AS cnt FROM trajectories`,\n\t\t);\n\t\tconst count = asNumber(pickCell(countResult.rows[0] ?? {}, \"cnt\")) ?? 0;\n\n\t\tawait this.executeRawSql(`DELETE FROM trajectories`);\n\t\treturn count;\n\t}\n\n\tprivate sanitizeZipFolderName(value: string): string {\n\t\tconst sanitized = value\n\t\t\t.trim()\n\t\t\t.replace(/[^a-zA-Z0-9._-]+/g, \"_\")\n\t\t\t.replace(/^_+|_+$/g, \"\");\n\t\treturn sanitized || \"trajectory\";\n\t}\n\n\tprivate redactTrajectoryPrompts(trajectory: Trajectory): Trajectory {\n\t\treturn {\n\t\t\t...trajectory,\n\t\t\tsteps: trajectory.steps.map((step) => ({\n\t\t\t\t...step,\n\t\t\t\tllmCalls: step.llmCalls.map((call) => ({\n\t\t\t\t\t...call,\n\t\t\t\t\tsystemPrompt: \"[redacted]\",\n\t\t\t\t\tuserPrompt: \"[redacted]\",\n\t\t\t\t\tresponse: \"[redacted]\",\n\t\t\t\t})),\n\t\t\t})),\n\t\t};\n\t}\n\n\tprivate buildZipSummary(trajectory: Trajectory): {\n\t\tid: string;\n\t\tagentId: string;\n\t\troomId: string | null;\n\t\tentityId: string | null;\n\t\tconversationId: string | null;\n\t\tsource: string;\n\t\tstatus: \"active\" | \"completed\" | \"error\";\n\t\tstartTime: number;\n\t\tendTime: number | null;\n\t\tdurationMs: number | null;\n\t\tllmCallCount: number;\n\t\tproviderAccessCount: number;\n\t\ttotalPromptTokens: number;\n\t\ttotalCompletionTokens: number;\n\t\tmetadata: Record<string, JsonValue | undefined>;\n\t\tcreatedAt: string;\n\t\tupdatedAt: string;\n\t} {\n\t\tconst finalStatus = trajectory.metrics?.finalStatus ?? \"completed\";\n\t\tconst normalizedEndTime =\n\t\t\ttypeof trajectory.endTime === \"number\" && trajectory.endTime > 0\n\t\t\t\t? trajectory.endTime\n\t\t\t\t: null;\n\t\tconst status: \"active\" | \"completed\" | \"error\" =\n\t\t\tfinalStatus === \"timeout\" ||\n\t\t\tfinalStatus === \"terminated\" ||\n\t\t\tfinalStatus === \"error\"\n\t\t\t\t? \"error\"\n\t\t\t\t: finalStatus === \"completed\"\n\t\t\t\t\t? \"completed\"\n\t\t\t\t\t: normalizedEndTime\n\t\t\t\t\t\t? \"completed\"\n\t\t\t\t\t\t: \"active\";\n\n\t\tlet llmCallCount = 0;\n\t\tlet providerAccessCount = 0;\n\t\tlet totalPromptTokens = 0;\n\t\tlet totalCompletionTokens = 0;\n\n\t\tfor (const step of trajectory.steps) {\n\t\t\tproviderAccessCount += step.providerAccesses.length;\n\t\t\tllmCallCount += step.llmCalls.length;\n\t\t\tfor (const call of step.llmCalls) {\n\t\t\t\ttotalPromptTokens += call.promptTokens ?? 0;\n\t\t\t\ttotalCompletionTokens += call.completionTokens ?? 0;\n\t\t\t}\n\t\t}\n\n\t\tconst metadata = trajectory.metadata ?? {};\n\t\tconst asNullableString = (value: JsonValue | undefined): string | null =>\n\t\t\ttypeof value === \"string\" ? value : null;\n\t\tconst source =\n\t\t\ttypeof metadata.source === \"string\" ? metadata.source : \"chat\";\n\t\tconst normalizedDurationMs =\n\t\t\tstatus === \"active\"\n\t\t\t\t? null\n\t\t\t\t: typeof trajectory.durationMs === \"number\"\n\t\t\t\t\t? trajectory.durationMs\n\t\t\t\t\t: null;\n\t\tconst updatedAtMs =\n\t\t\tnormalizedEndTime ?? (trajectory.startTime || Date.now());\n\n\t\treturn {\n\t\t\tid: trajectory.trajectoryId,\n\t\t\tagentId: trajectory.agentId,\n\t\t\troomId: asNullableString(metadata.roomId),\n\t\t\tentityId: asNullableString(metadata.entityId),\n\t\t\tconversationId: asNullableString(metadata.conversationId),\n\t\t\tsource,\n\t\t\tstatus,\n\t\t\tstartTime: trajectory.startTime,\n\t\t\tendTime: normalizedEndTime,\n\t\t\tdurationMs: normalizedDurationMs,\n\t\t\tllmCallCount,\n\t\t\tproviderAccessCount,\n\t\t\ttotalPromptTokens,\n\t\t\ttotalCompletionTokens,\n\t\t\tmetadata,\n\t\t\tcreatedAt: new Date(trajectory.startTime).toISOString(),\n\t\t\tupdatedAt: new Date(updatedAtMs).toISOString(),\n\t\t};\n\t}\n\n\tasync exportTrajectoriesZip(\n\t\toptions: TrajectoryZipExportOptions = {},\n\t): Promise<TrajectoryZipExportResult> {\n\t\tlet targetIds = Array.isArray(options.trajectoryIds)\n\t\t\t? options.trajectoryIds.filter(\n\t\t\t\t\t(id): id is string => typeof id === \"string\" && id.trim().length > 0,\n\t\t\t\t)\n\t\t\t: [];\n\n\t\tif (targetIds.length === 0) {\n\t\t\tconst list = await this.listTrajectories({\n\t\t\t\tlimit: 500,\n\t\t\t\tstartDate: options.startDate,\n\t\t\t\tendDate: options.endDate,\n\t\t\t\tscenarioId: options.scenarioId,\n\t\t\t\tbatchId: options.batchId,\n\t\t\t});\n\t\t\ttargetIds = list.trajectories.map((trajectory) => trajectory.id);\n\t\t}\n\n\t\tconst entries: TrajectoryZipEntry[] = [];\n\t\tconst manifestRows: Array<{\n\t\t\ttrajectoryId: string;\n\t\t\tfolder: string;\n\t\t\tcreatedAt: string;\n\t\t}> = [];\n\n\t\tfor (const trajectoryId of targetIds) {\n\t\t\tconst detail = await this.getTrajectoryDetail(trajectoryId);\n\t\t\tif (!detail) continue;\n\n\t\t\tconst exportTrajectory =\n\t\t\t\toptions.includePrompts === false\n\t\t\t\t\t? this.redactTrajectoryPrompts(detail)\n\t\t\t\t\t: detail;\n\t\t\tconst summary = this.buildZipSummary(exportTrajectory);\n\t\t\tconst folderName = this.sanitizeZipFolderName(trajectoryId);\n\n\t\t\tentries.push({\n\t\t\t\tname: `${folderName}/trajectory.json`,\n\t\t\t\tdata: JSON.stringify(exportTrajectory, null, 2),\n\t\t\t});\n\t\t\tentries.push({\n\t\t\t\tname: `${folderName}/summary.json`,\n\t\t\t\tdata: JSON.stringify(summary, null, 2),\n\t\t\t});\n\n\t\t\tmanifestRows.push({\n\t\t\t\ttrajectoryId,\n\t\t\t\tfolder: folderName,\n\t\t\t\tcreatedAt: summary.createdAt,\n\t\t\t});\n\t\t}\n\n\t\tentries.unshift({\n\t\t\tname: \"manifest.json\",\n\t\t\tdata: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\texportedAt: new Date().toISOString(),\n\t\t\t\t\ttrajectories: manifestRows,\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t});\n\n\t\tconst timestamp = new Date().toISOString().replace(/[:.]/g, \"-\");\n\t\treturn {\n\t\t\tfilename: `trajectories-${timestamp}.zip`,\n\t\t\tentries,\n\t\t};\n\t}\n\n\t// ─────────────────────────────────────────────────────────────────────────\n\t// Export (for RL training)\n\t// ─────────────────────────────────────────────────────────────────────────\n\n\tasync exportTrajectories(\n\t\toptions: TrajectoryExportOptions,\n\t): Promise<{ data: string; filename: string; mimeType: string }> {\n\t\tconst runtime = this.runtime as IAgentRuntime & { adapter?: unknown };\n\t\tif (!runtime?.adapter) {\n\t\t\tthrow new Error(\"Database not available\");\n\t\t}\n\n\t\tconst whereClauses: string[] = [];\n\t\tif (options.trajectoryIds && options.trajectoryIds.length > 0) {\n\t\t\tconst ids = options.trajectoryIds.map(sqlLiteral).join(\", \");\n\t\t\twhereClauses.push(`id IN (${ids})`);\n\t\t}\n\t\tif (options.startDate) {\n\t\t\twhereClauses.push(\n\t\t\t\t`created_at >= ${sqlLiteral(options.startDate)}::timestamptz`,\n\t\t\t);\n\t\t}\n\t\tif (options.endDate) {\n\t\t\twhereClauses.push(\n\t\t\t\t`created_at <= ${sqlLiteral(options.endDate)}::timestamptz`,\n\t\t\t);\n\t\t}\n\t\tif (options.scenarioId) {\n\t\t\twhereClauses.push(`scenario_id = ${sqlLiteral(options.scenarioId)}`);\n\t\t}\n\t\tif (options.batchId) {\n\t\t\twhereClauses.push(`batch_id = ${sqlLiteral(options.batchId)}`);\n\t\t}\n\n\t\tconst whereClause =\n\t\t\twhereClauses.length > 0 ? `WHERE ${whereClauses.join(\" AND \")}` : \"\";\n\n\t\tconst result = await this.executeRawSql(\n\t\t\t`SELECT * FROM trajectories ${whereClause} ORDER BY created_at DESC`,\n\t\t);\n\n\t\tconst trajectories = result.rows.map((row) => this.rowToTrajectory(row));\n\t\tconst timestamp = new Date().toISOString().replace(/[:.]/g, \"-\");\n\n\t\tif (options.format === \"csv\") {\n\t\t\tconst lines: string[] = [\n\t\t\t\t\"id,agent_id,source,status,start_time,end_time,duration_ms,step_count,llm_call_count,total_reward,scenario_id\",\n\t\t\t];\n\t\t\tfor (const t of trajectories) {\n\t\t\t\tlines.push(\n\t\t\t\t\t[\n\t\t\t\t\t\tt.trajectoryId,\n\t\t\t\t\t\tt.agentId,\n\t\t\t\t\t\tt.metadata.source ?? \"chat\",\n\t\t\t\t\t\tt.metrics.finalStatus,\n\t\t\t\t\t\tt.startTime,\n\t\t\t\t\t\tt.endTime,\n\t\t\t\t\t\tt.durationMs,\n\t\t\t\t\t\tt.steps.length,\n\t\t\t\t\t\tt.steps.reduce((sum, s) => sum + s.llmCalls.length, 0),\n\t\t\t\t\t\tt.totalReward,\n\t\t\t\t\t\tt.scenarioId ?? \"\",\n\t\t\t\t\t].join(\",\"),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tdata: lines.join(\"\\n\"),\n\t\t\t\tfilename: `trajectories-${timestamp}.csv`,\n\t\t\t\tmimeType: \"text/csv\",\n\t\t\t};\n\t\t}\n\n\t\t// For JSON format, optionally redact prompts\n\t\tlet exportData = trajectories;\n\t\tif (!options.includePrompts) {\n\t\t\texportData = trajectories.map((trajectory) =>\n\t\t\t\tthis.redactTrajectoryPrompts(trajectory),\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\tdata: JSON.stringify(exportData, null, 2),\n\t\t\tfilename: `trajectories-${timestamp}.json`,\n\t\t\tmimeType: \"application/json\",\n\t\t};\n\t}\n\n\t// ─────────────────────────────────────────────────────────────────────────\n\t// Helpers\n\t// ─────────────────────────────────────────────────────────────────────────\n\n\tprivate rowToTrajectory(row: SqlRow): Trajectory {\n\t\tconst parseJson = <T>(cell: SqlCell | undefined, fallback: T): T => {\n\t\t\tif (typeof cell === \"string\") {\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.parse(cell) as T;\n\t\t\t\t} catch {\n\t\t\t\t\treturn fallback;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof cell === \"object\" && cell !== null && !Array.isArray(cell)) {\n\t\t\t\treturn cell as unknown as T;\n\t\t\t}\n\t\t\treturn fallback;\n\t\t};\n\n\t\treturn {\n\t\t\ttrajectoryId: (asString(pickCell(row, \"id\")) ??\n\t\t\t\t\"\") as `${string}-${string}-${string}-${string}-${string}`,\n\t\t\tagentId: (asString(pickCell(row, \"agent_id\")) ??\n\t\t\t\t\"\") as `${string}-${string}-${string}-${string}-${string}`,\n\t\t\tstartTime: asNumber(pickCell(row, \"start_time\")) ?? 0,\n\t\t\tendTime: asNumber(pickCell(row, \"end_time\")) ?? 0,\n\t\t\tdurationMs: asNumber(pickCell(row, \"duration_ms\")) ?? 0,\n\t\t\tscenarioId: asString(pickCell(row, \"scenario_id\")) ?? undefined,\n\t\t\tepisodeId: asString(pickCell(row, \"episode_id\")) ?? undefined,\n\t\t\tbatchId: asString(pickCell(row, \"batch_id\")) ?? undefined,\n\t\t\tgroupIndex: asNumber(pickCell(row, \"group_index\")) ?? undefined,\n\t\t\tsteps: parseJson<TrajectoryStep[]>(\n\t\t\t\tpickCell(row, \"steps_json\", \"steps\"),\n\t\t\t\t[],\n\t\t\t),\n\t\t\ttotalReward: asNumber(pickCell(row, \"total_reward\")) ?? 0,\n\t\t\trewardComponents: parseJson<RewardComponents>(\n\t\t\t\tpickCell(row, \"reward_components_json\", \"reward_components\"),\n\t\t\t\t{ environmentReward: 0 },\n\t\t\t),\n\t\t\tmetrics: parseJson(pickCell(row, \"metrics_json\", \"metrics\"), {\n\t\t\t\tepisodeLength: 0,\n\t\t\t\tfinalStatus: \"completed\" as const,\n\t\t\t}),\n\t\t\tmetadata: parseJson(pickCell(row, \"metadata_json\", \"metadata\"), {}),\n\t\t};\n\t}\n\n\t/**\n\t * Get active trajectory for a step (for compatibility with existing code)\n\t */\n\tgetActiveTrajectory(trajectoryId: string): Trajectory | null {\n\t\tvoid trajectoryId;\n\t\treturn null;\n\t}\n\n\t/**\n\t * Get current step ID for a trajectory\n\t */\n\tgetCurrentStepId(trajectoryId: string): string | null {\n\t\treturn this.activeStepIds.get(trajectoryId) || null;\n\t}\n\n\t/**\n\t * Legacy compatibility: get in-memory provider access logs\n\t */\n\tgetProviderAccessLogs(): readonly ProviderAccess[] {\n\t\treturn [];\n\t}\n\n\t/**\n\t * Legacy compatibility: get in-memory LLM call logs\n\t */\n\tgetLlmCallLogs(): readonly LLMCall[] {\n\t\treturn [];\n\t}\n}\n",
|
|
37
37
|
"/**\n * Action-Level Instrumentation\n *\n * Wraps actions and providers with trajectory logging.\n */\n\nimport type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n Memory,\n Plugin,\n Provider,\n ProviderResult,\n State,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport type { TrajectoryLoggerService } from \"./TrajectoryLoggerService\";\nimport type { JsonValue } from \"./types\";\n\ninterface TrajectoryContext {\n trajectoryId: string;\n logger: TrajectoryLoggerService;\n}\n\nconst trajectoryContexts = new WeakMap<IAgentRuntime, TrajectoryContext>();\n\nexport function setTrajectoryContext(\n runtime: IAgentRuntime,\n trajectoryId: string,\n trajectoryLogger: TrajectoryLoggerService\n): void {\n trajectoryContexts.set(runtime, { trajectoryId, logger: trajectoryLogger });\n}\n\nexport function getTrajectoryContext(runtime: IAgentRuntime): TrajectoryContext | null {\n return trajectoryContexts.get(runtime) || null;\n}\n\nexport function clearTrajectoryContext(runtime: IAgentRuntime): void {\n trajectoryContexts.delete(runtime);\n}\n\ntype ErrorLike = { message?: string };\n\nexport function wrapActionWithLogging(\n action: Action,\n _trajectoryLogger: TrajectoryLoggerService\n): Action {\n const originalHandler = action.handler;\n\n return {\n ...action,\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n options?: HandlerOptions,\n callback?: HandlerCallback\n ): Promise<ActionResult | undefined> => {\n const context = getTrajectoryContext(runtime);\n if (!context) {\n const result = await originalHandler(runtime, message, state, options, callback);\n return result ?? undefined;\n }\n\n const { trajectoryId, logger: loggerService } = context;\n const stepId = loggerService.getCurrentStepId(trajectoryId);\n\n if (!stepId) {\n logger.warn({ action: action.name, trajectoryId }, \"No active step for action execution\");\n const result = await originalHandler(runtime, message, state, options, callback);\n return result ?? undefined;\n }\n\n const successHandler = (): void => {\n const stateSnapshot = state ? (JSON.parse(JSON.stringify(state)) as JsonValue) : null;\n\n loggerService.completeStep(\n trajectoryId,\n stepId,\n {\n actionType: action.name,\n actionName: action.name,\n parameters: {\n message: message.content.text || \"\",\n state: stateSnapshot,\n },\n success: true,\n result: { executed: true },\n reasoning: `Action ${action.name} executed via ${action.description || \"handler\"}`,\n },\n { reward: 0.1 }\n );\n };\n\n const errorHandler = (err: Error | ErrorLike | string): never => {\n const error =\n err instanceof Error\n ? err.message\n : typeof err === \"string\"\n ? err\n : err.message || String(err);\n\n logger.error({ action: action.name, trajectoryId, error }, \"Action execution failed\");\n\n const stateSnapshot = state ? (JSON.parse(JSON.stringify(state)) as JsonValue) : null;\n\n loggerService.completeStep(\n trajectoryId,\n stepId,\n {\n actionType: action.name,\n actionName: action.name,\n parameters: {\n message: message.content.text || \"\",\n state: stateSnapshot,\n },\n success: false,\n result: { error },\n reasoning: `Action ${action.name} failed: ${error}`,\n },\n { reward: -0.1 }\n );\n\n throw err;\n };\n\n try {\n const result = await originalHandler(runtime, message, state, options, callback);\n successHandler();\n return result ?? undefined;\n } catch (err) {\n if (err instanceof Error) {\n return errorHandler(err);\n }\n if (typeof err === \"string\") {\n return errorHandler(err);\n }\n return errorHandler(err as ErrorLike);\n }\n },\n };\n}\n\nexport function wrapPluginActions(\n plugin: Plugin,\n trajectoryLogger: TrajectoryLoggerService\n): Plugin {\n if (!plugin.actions || plugin.actions.length === 0) {\n return plugin;\n }\n\n return {\n ...plugin,\n actions: plugin.actions.map((action) => wrapActionWithLogging(action, trajectoryLogger)),\n };\n}\n\nexport function logLLMCallFromAction(\n actionContext: Record<string, JsonValue | undefined>,\n trajectoryLogger: TrajectoryLoggerService,\n trajectoryId: string\n): void {\n const stepId = trajectoryLogger.getCurrentStepId(trajectoryId);\n if (!stepId) {\n logger.warn({ trajectoryId }, \"No active step for LLM call from action\");\n return;\n }\n\n trajectoryLogger.logLLMCall(stepId, {\n model: (actionContext.model as string) || \"unknown\",\n systemPrompt: (actionContext.systemPrompt as string) || \"\",\n userPrompt: (actionContext.userPrompt as string) || \"\",\n response: (actionContext.response as string) || \"\",\n reasoning: (actionContext.reasoning as string) || undefined,\n temperature: (actionContext.temperature as number) || 0.7,\n maxTokens: (actionContext.maxTokens as number) || 8192,\n purpose:\n (actionContext.purpose as \"action\" | \"reasoning\" | \"evaluation\" | \"response\" | \"other\") ||\n \"action\",\n actionType: (actionContext.actionType as string) || undefined,\n promptTokens: (actionContext.promptTokens as number) || undefined,\n completionTokens: (actionContext.completionTokens as number) || undefined,\n latencyMs: (actionContext.latencyMs as number) || undefined,\n });\n}\n\nexport function logProviderFromAction(\n actionContext: Record<string, JsonValue | undefined>,\n trajectoryLogger: TrajectoryLoggerService,\n trajectoryId: string\n): void {\n const stepId = trajectoryLogger.getCurrentStepId(trajectoryId);\n if (!stepId) {\n logger.warn({ trajectoryId }, \"No active step for provider access from action\");\n return;\n }\n\n trajectoryLogger.logProviderAccess(stepId, {\n providerName: (actionContext.providerName as string) || \"unknown\",\n data: (actionContext.data as Record<string, JsonValue>) || {},\n purpose: (actionContext.purpose as string) || \"action\",\n query: (actionContext.query as Record<string, JsonValue>) || undefined,\n });\n}\n\nexport function wrapProviderWithLogging(\n provider: Provider,\n _trajectoryLogger: TrajectoryLoggerService\n): Provider {\n const originalGet = provider.get;\n\n return {\n ...provider,\n get: async (runtime: IAgentRuntime, message: Memory, state: State): Promise<ProviderResult> => {\n const context = getTrajectoryContext(runtime);\n if (!context) {\n return originalGet?.(runtime, message, state) || { text: \"\" };\n }\n\n const { trajectoryId, logger: loggerService } = context;\n const stepId = loggerService.getCurrentStepId(trajectoryId);\n\n if (!stepId) {\n logger.warn(\n { provider: provider.name, trajectoryId },\n \"No active step for provider access\"\n );\n return originalGet?.(runtime, message, state) || { text: \"\" };\n }\n\n const result = (await originalGet?.(runtime, message, state)) || { text: \"\" };\n\n const stateSnapshot = state ? (JSON.parse(JSON.stringify(state)) as JsonValue) : null;\n\n loggerService.logProviderAccess(stepId, {\n providerName: provider.name,\n data: {\n text: result.text || \"\",\n success: true,\n },\n purpose: `Provider ${provider.name} accessed for context`,\n query: {\n message: message.content.text || \"\",\n state: stateSnapshot,\n },\n });\n\n return result;\n },\n };\n}\n\nexport function wrapPluginProviders(\n plugin: Plugin,\n trajectoryLogger: TrajectoryLoggerService\n): Plugin {\n if (!plugin.providers || plugin.providers.length === 0) {\n return plugin;\n }\n\n return {\n ...plugin,\n providers: plugin.providers.map((provider) =>\n wrapProviderWithLogging(provider, trajectoryLogger)\n ),\n };\n}\n",
|
|
38
38
|
"/**\n * ART Format Conversion\n *\n * Converts our rich trajectory format to ART-compatible format.\n *\n * Key insight from ART examples:\n * - Trajectories are MESSAGE ARRAYS (system/user/assistant)\n * - Metadata is separate (for judge context)\n * - Single reward per trajectory\n * - Grouping by scenario for GRPO\n */\n\nimport type {\n ARTTrajectory,\n ChatMessage,\n JsonValue,\n Trajectory,\n TrajectoryGroup,\n TrajectoryStep,\n} from \"./types\";\n\n/**\n * Convert rich trajectory to ART message format.\n */\nexport function toARTMessages(trajectory: Trajectory): ChatMessage[] {\n const messages: ChatMessage[] = [];\n\n const systemMessage = buildSystemMessage(trajectory);\n if (systemMessage) {\n messages.push(systemMessage);\n }\n\n for (const step of trajectory.steps) {\n const userContent = buildUserMessage(step);\n if (userContent) {\n messages.push({ role: \"user\", content: userContent });\n }\n\n const assistantContent = buildAssistantMessage(step);\n if (assistantContent) {\n messages.push({ role: \"assistant\", content: assistantContent });\n }\n }\n\n return messages;\n}\n\nfunction buildSystemMessage(trajectory: Trajectory): ChatMessage | null {\n const firstStep = trajectory.steps[0];\n const firstLLMCall = firstStep?.llmCalls?.[0];\n\n if (firstLLMCall?.systemPrompt) {\n return { role: \"system\", content: firstLLMCall.systemPrompt };\n }\n\n const agentName = trajectory.metadata.agentName || \"Agent\";\n const goal = trajectory.metadata.goalDescription || \"make good decisions\";\n\n return {\n role: \"system\",\n content: `You are ${agentName}, an autonomous agent. Your goal is to ${goal}.`,\n };\n}\n\nfunction buildUserMessage(step: TrajectoryStep): string | null {\n const llmCall = step.llmCalls.find((call) => call.purpose === \"action\");\n if (llmCall?.userPrompt) {\n return llmCall.userPrompt;\n }\n\n const parts: string[] = [];\n parts.push(\"Current state:\");\n parts.push(`- Balance: $${step.environmentState.agentBalance}`);\n parts.push(`- P&L: $${step.environmentState.agentPnL}`);\n parts.push(`- Open Positions: ${step.environmentState.openPositions}`);\n\n for (const provider of step.providerAccesses) {\n parts.push(`\\n${provider.providerName} data:`);\n parts.push(JSON.stringify(provider.data, null, 2));\n }\n\n parts.push(\"\\nWhat action should you take?\");\n return parts.join(\"\\n\");\n}\n\nfunction buildAssistantMessage(step: TrajectoryStep): string | null {\n const llmCall = step.llmCalls.find((call) => call.purpose === \"action\");\n if (llmCall?.response) {\n return llmCall.response;\n }\n\n const action = step.action;\n const parts: string[] = [];\n\n parts.push(`I will ${action.actionType}.`);\n if (action.reasoning) {\n parts.push(`Reasoning: ${action.reasoning}`);\n }\n parts.push(`Parameters: ${JSON.stringify(action.parameters)}`);\n\n return parts.join(\"\\n\");\n}\n\nexport function toARTTrajectory(trajectory: Trajectory): ARTTrajectory {\n return {\n messages: toARTMessages(trajectory),\n reward: trajectory.totalReward,\n metadata: {\n trajectoryId: trajectory.trajectoryId,\n agentId: trajectory.agentId,\n scenarioId: trajectory.scenarioId,\n groupIndex: trajectory.groupIndex,\n environmentContext: {\n initialBalance: trajectory.steps[0]?.environmentState.agentBalance || 0,\n finalBalance: trajectory.metrics.finalBalance || 0,\n initialPnL: trajectory.steps[0]?.environmentState.agentPnL || 0,\n finalPnL: trajectory.metrics.finalPnL || 0,\n actionsTaken: trajectory.steps.map((s) => s.action.actionType),\n errors: trajectory.steps\n .filter((s) => !s.action.success)\n .map((s) => s.action.error || \"Unknown error\"),\n },\n gameKnowledge: extractGameKnowledge(trajectory),\n metrics: JSON.parse(JSON.stringify(trajectory.metrics)) as Record<string, JsonValue>,\n },\n metrics: filterNumericMetrics(trajectory.metrics),\n };\n}\n\nfunction filterNumericMetrics(metrics: Trajectory[\"metrics\"]): Record<string, number> {\n const numericMetrics: Record<string, number> = {};\n\n for (const [key, value] of Object.entries(metrics)) {\n if (typeof value === \"number\" && !Number.isNaN(value)) {\n numericMetrics[key] = value;\n }\n }\n\n return numericMetrics;\n}\n\nfunction extractGameKnowledge(trajectory: Trajectory): {\n trueProbabilities?: Record<string, number>;\n actualOutcomes?: Record<string, JsonValue>;\n hiddenVariables?: Record<string, JsonValue>;\n gameEvents?: JsonValue[];\n} {\n const knowledge: {\n trueProbabilities?: Record<string, number>;\n actualOutcomes?: Record<string, JsonValue>;\n hiddenVariables?: Record<string, JsonValue>;\n gameEvents?: JsonValue[];\n } = {};\n\n if (trajectory.metadata.trueProbabilities) {\n knowledge.trueProbabilities = trajectory.metadata.trueProbabilities as Record<string, number>;\n }\n\n if (trajectory.metadata.futureOutcomes) {\n knowledge.actualOutcomes = trajectory.metadata.futureOutcomes as Record<string, JsonValue>;\n }\n\n if (trajectory.metadata.hiddenVariables) {\n knowledge.hiddenVariables = trajectory.metadata.hiddenVariables as Record<string, JsonValue>;\n }\n\n const gameEvents = trajectory.steps\n .map((s) => s.metadata?.gameEvent)\n .filter((e): e is JsonValue => !!e);\n\n if (gameEvents.length > 0) {\n knowledge.gameEvents = gameEvents;\n }\n\n return knowledge;\n}\n\nexport function groupTrajectories(trajectories: Trajectory[]): TrajectoryGroup[] {\n const groups = new Map<string, Trajectory[]>();\n\n for (const traj of trajectories) {\n const scenarioId = traj.scenarioId || \"default\";\n if (!groups.has(scenarioId)) {\n groups.set(scenarioId, []);\n }\n groups.get(scenarioId)?.push(traj);\n }\n\n return Array.from(groups.entries()).map(([scenarioId, trajs], idx) => ({\n groupId: `group-${idx}`,\n scenarioId,\n trajectories: trajs,\n sharedPrefix: extractSharedPrefix(trajs),\n createdAt: Date.now(),\n }));\n}\n\nexport function extractSharedPrefix(trajectories: Trajectory[]): ChatMessage[] {\n if (trajectories.length === 0) return [];\n\n const allMessages = trajectories.map((t) => toARTMessages(t));\n if (allMessages.length === 0) return [];\n\n const firstMessages = allMessages[0];\n if (!firstMessages) return [];\n const sharedPrefix: ChatMessage[] = [];\n\n for (let i = 0; i < firstMessages.length; i++) {\n const message = firstMessages[i];\n if (!message) break;\n const allMatch = allMessages.every(\n (msgs) => msgs[i] && msgs[i]?.role === message.role && msgs[i]?.content === message.content\n );\n\n if (allMatch) {\n sharedPrefix.push(message);\n } else {\n break;\n }\n }\n\n return sharedPrefix;\n}\n\nexport function removeSharedPrefix(\n messages: ChatMessage[],\n sharedPrefix: ChatMessage[]\n): ChatMessage[] {\n return messages.slice(sharedPrefix.length);\n}\n\nexport function prepareForRULER(group: TrajectoryGroup): {\n sharedPrefix: ChatMessage[];\n suffixes: ChatMessage[][];\n metadata: ARTTrajectory[\"metadata\"][];\n} {\n const artTrajs = group.trajectories.map((t) => toARTTrajectory(t));\n const sharedPrefix = group.sharedPrefix || extractSharedPrefix(group.trajectories);\n\n return {\n sharedPrefix,\n suffixes: artTrajs.map((art) => removeSharedPrefix(art.messages, sharedPrefix)),\n metadata: artTrajs.map((art) => art.metadata),\n };\n}\n\nexport function toARTJSONL(trajectory: Trajectory): string {\n return JSON.stringify(toARTTrajectory(trajectory));\n}\n\nexport function validateARTCompatibility(trajectory: Trajectory): {\n valid: boolean;\n errors: string[];\n warnings: string[];\n} {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n if (trajectory.steps.length === 0) {\n errors.push(\"Trajectory has no steps\");\n }\n\n for (const [idx, step] of trajectory.steps.entries()) {\n if (step.llmCalls.length === 0) {\n errors.push(`Step ${idx} has no LLM calls - can't extract messages`);\n }\n\n for (const llmCall of step.llmCalls) {\n if (!llmCall.userPrompt || llmCall.userPrompt.length < 10) {\n warnings.push(`Step ${idx} has very short user prompt`);\n }\n if (!llmCall.response || llmCall.response.length < 5) {\n warnings.push(`Step ${idx} has very short response`);\n }\n }\n }\n\n if (trajectory.totalReward === undefined || Number.isNaN(trajectory.totalReward)) {\n errors.push(\"Trajectory has no valid reward\");\n }\n\n const artTraj = toARTTrajectory(trajectory);\n if (artTraj.messages.length < 2) {\n warnings.push(\"Trajectory converts to very few messages (< 2)\");\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n };\n}\n",
|
|
39
39
|
"/**\n * Trajectory Export Utilities\n *\n * The original implementation targeted a Babylon-specific database + HuggingFace upload pipeline.\n * In elizaOS core, this module is storage-agnostic and focuses on preparing files for downstream\n * training (JSONL / grouped JSON).\n */\n\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { groupTrajectories, toARTJSONL } from \"./art-format\";\nimport type { Trajectory, TrajectoryGroup } from \"./types\";\n\nexport interface ExportOptions {\n // Dataset configuration (kept for API compatibility)\n datasetName: string;\n huggingFaceToken?: string;\n\n // Data filtering\n startDate?: Date;\n endDate?: Date;\n agentIds?: string[];\n scenarioIds?: string[];\n minReward?: number;\n maxReward?: number;\n includeJudged?: boolean;\n\n // Limits\n maxTrajectories?: number;\n\n // Format (currently only jsonl is produced)\n format?: \"jsonl\" | \"parquet\" | \"arrow\";\n splitRatio?: { train: number; validation: number; test: number };\n\n // elizaOS: provide trajectories directly (no DB dependency)\n trajectories?: Trajectory[];\n\n // Output path controls\n outputPath?: string;\n outputDir?: string;\n}\n\nexport interface ExportResult {\n success: boolean;\n trajectoriesExported: number;\n datasetUrl?: string;\n error?: string;\n}\n\nexport async function exportToHuggingFace(options: ExportOptions): Promise<ExportResult> {\n // In this repo we don't couple to a DB or HuggingFace API.\n // We still keep the function name/signature so existing callers can migrate by\n // passing `trajectories` + `outputPath`.\n return exportForOpenPipeART(options);\n}\n\nexport async function exportGroupedByScenario(options: ExportOptions): Promise<ExportResult> {\n const trajectories = filterTrajectories(options.trajectories || [], options);\n const outPath = resolveOutputPath(options, \"grouped-by-scenario.json\");\n\n const grouped: Record<string, Trajectory[]> = {};\n for (const t of trajectories) {\n const scenarioId = t.scenarioId || \"default\";\n if (!grouped[scenarioId]) grouped[scenarioId] = [];\n grouped[scenarioId]?.push(t);\n }\n\n await writeJson(outPath, grouped);\n return { success: true, trajectoriesExported: trajectories.length, datasetUrl: outPath };\n}\n\nexport async function exportForOpenPipeART(options: ExportOptions): Promise<ExportResult> {\n const trajectories = filterTrajectories(options.trajectories || [], options);\n const outPath = resolveOutputPath(options, \"trajectories.art.jsonl\");\n\n const lines = `${trajectories.map((t) => toARTJSONL(t)).join(\"\\n\")}\\n`;\n await writeText(outPath, lines);\n\n return { success: true, trajectoriesExported: trajectories.length, datasetUrl: outPath };\n}\n\nexport async function exportGroupedForGRPO(options: ExportOptions): Promise<ExportResult> {\n const trajectories = filterTrajectories(options.trajectories || [], options);\n const outPath = resolveOutputPath(options, \"trajectories.grpo.groups.json\");\n\n const groups: TrajectoryGroup[] = groupTrajectories(trajectories);\n await writeJson(outPath, groups);\n\n return { success: true, trajectoriesExported: trajectories.length, datasetUrl: outPath };\n}\n\nfunction filterTrajectories(trajectories: Trajectory[], options: ExportOptions): Trajectory[] {\n let out = trajectories.slice();\n\n if (options.startDate) {\n const startMs = options.startDate.getTime();\n out = out.filter((t) => t.startTime >= startMs);\n }\n if (options.endDate) {\n const endMs = options.endDate.getTime();\n out = out.filter((t) => t.startTime <= endMs);\n }\n if (options.agentIds && options.agentIds.length > 0) {\n const set = new Set(options.agentIds);\n out = out.filter((t) => set.has(t.agentId));\n }\n if (options.scenarioIds && options.scenarioIds.length > 0) {\n const set = new Set(options.scenarioIds);\n out = out.filter((t) => t.scenarioId && set.has(t.scenarioId));\n }\n if (typeof options.minReward === \"number\") {\n const minReward = options.minReward;\n out = out.filter((t) => t.totalReward >= minReward);\n }\n if (typeof options.maxReward === \"number\") {\n const maxReward = options.maxReward;\n out = out.filter((t) => t.totalReward <= maxReward);\n }\n\n const limit = options.maxTrajectories || out.length;\n return out.slice(0, limit);\n}\n\nfunction resolveOutputPath(options: ExportOptions, fallbackFileName: string): string {\n if (options.outputPath) return options.outputPath;\n if (options.outputDir) return join(options.outputDir, fallbackFileName);\n\n const safeName = options.datasetName.replace(/[^a-zA-Z0-9._-]+/g, \"_\");\n return join(process.cwd(), `${safeName}.${fallbackFileName}`);\n}\n\nasync function writeText(path: string, content: string): Promise<void> {\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, content, \"utf8\");\n}\n\nasync function writeJson(path: string, data: object): Promise<void> {\n await writeText(path, `${JSON.stringify(data, null, 2)}\\n`);\n}\n",
|
|
40
40
|
"/**\n * Game-Knowledge Rewards\n *\n * Compute rewards using perfect game information for RL training.\n *\n * @remarks These helpers are intentionally lightweight; environments can provide richer\n * reward computation by writing into `trajectory.totalReward` and `step.reward`.\n */\n\nimport type { JsonValue, Trajectory, TrajectoryStep } from \"./types\";\n\nexport function computeTrajectoryReward(trajectory: Trajectory): number {\n return trajectory.totalReward;\n}\n\nexport function computeStepReward(step: TrajectoryStep): number {\n return step.reward || 0;\n}\n\nexport async function buildGameStateFromDB(\n _trajectoryId: string\n): Promise<Record<string, JsonValue>> {\n return {};\n}\n\nexport async function recomputeTrajectoryRewards(_trajectoryIds: string[]): Promise<void> {\n // Intentionally a no-op placeholder; reward recomputation is environment-specific.\n}\n",
|
|
41
|
-
"/**\n * Manual Instrumentation Helpers\n *\n * Advanced manual control for trajectory logging.\n */\n\nimport { logger } from \"@elizaos/core\";\nimport type { TrajectoryLoggerService } from \"./TrajectoryLoggerService\";\nimport type { EnvironmentState, JsonValue } from \"./types\";\n\nexport interface TrajectoryMetadata {\n
|
|
41
|
+
"/**\n * Manual Instrumentation Helpers\n *\n * Advanced manual control for trajectory logging.\n */\n\nimport { logger } from \"@elizaos/core\";\nimport type { TrajectoryLoggerService } from \"./TrajectoryLoggerService\";\nimport type { EnvironmentState, JsonValue } from \"./types\";\n\nexport interface TrajectoryMetadata {\n\t[key: string]: JsonValue;\n}\n\nexport type FinalMetrics = Record<string, JsonValue> & {\n\ttotalReward?: number;\n\tstepCount?: number;\n\tsuccessRate?: number;\n};\n\nexport interface ProviderAccessData {\n\t[key: string]: JsonValue;\n}\n\nexport type WrappedFunctionArgs = JsonValue[];\n\nexport async function startAutonomousTick(\n\ttrajectoryLogger: TrajectoryLoggerService,\n\tcontext: {\n\t\tagentId: string;\n\t\tsource?: string;\n\t\tscenarioId?: string;\n\t\tepisodeId?: string;\n\t\tbatchId?: string;\n\t\tmetadata?: TrajectoryMetadata;\n\t},\n): Promise<string> {\n\tconst trajectoryId = await trajectoryLogger.startTrajectory(context.agentId, {\n\t\tsource: context.source,\n\t\tscenarioId: context.scenarioId,\n\t\tepisodeId: context.episodeId,\n\t\tbatchId: context.batchId,\n\t\tmetadata: context.metadata,\n\t});\n\n\tconst envState: EnvironmentState = {\n\t\ttimestamp: Date.now(),\n\t\tagentBalance: 0,\n\t\tagentPoints: 0,\n\t\tagentPnL: 0,\n\t\topenPositions: 0,\n\t};\n\n\ttrajectoryLogger.startStep(trajectoryId, envState);\n\n\tlogger.info(\n\t\t{ trajectoryId, agentId: context.agentId },\n\t\t\"Started autonomous tick trajectory\",\n\t);\n\n\treturn trajectoryId;\n}\n\nexport async function endAutonomousTick(\n\ttrajectoryLogger: TrajectoryLoggerService,\n\ttrajectoryId: string,\n\tstatus: \"completed\" | \"terminated\" | \"error\" | \"timeout\" = \"completed\",\n\tfinalMetrics?: FinalMetrics,\n): Promise<void> {\n\t// Flush pending fire-and-forget writes (logLLMCall, completeStep) before\n\t// endTrajectory reads the trajectory. Without this, the ensureAtLeastOneLlmCall\n\t// check sees zero LLM calls and inserts a synthetic placeholder.\n\tconst flush = (trajectoryLogger as unknown as Record<string, unknown>)\n\t\t.flushWriteQueue;\n\tif (typeof flush === \"function\") {\n\t\tawait (flush as (id: string) => Promise<void>)(trajectoryId);\n\t}\n\n\tawait trajectoryLogger.endTrajectory(trajectoryId, status, finalMetrics);\n\n\tlogger.info({ trajectoryId, status }, \"Ended autonomous tick trajectory\");\n}\n\nexport async function loggedLLMCall(\n\ttrajectoryLogger: TrajectoryLoggerService,\n\ttrajectoryId: string,\n\toptions: {\n\t\tmodel: string;\n\t\tmodelVersion?: string;\n\t\tsystemPrompt: string;\n\t\tuserPrompt: string;\n\t\ttemperature?: number;\n\t\tmaxTokens?: number;\n\t\tpurpose?: \"action\" | \"reasoning\" | \"evaluation\" | \"response\" | \"other\";\n\t\tactionType?: string;\n\t},\n\tllmCallFn: () => Promise<{\n\t\ttext: string;\n\t\treasoning?: string;\n\t\ttokens?: { prompt?: number; completion?: number };\n\t\tlatencyMs?: number;\n\t}>,\n): Promise<string> {\n\tconst stepId = trajectoryLogger.getCurrentStepId(trajectoryId);\n\tif (!stepId) {\n\t\tlogger.warn({ trajectoryId }, \"No active step for LLM call\");\n\t\tconst result = await llmCallFn();\n\t\treturn result.text;\n\t}\n\n\tconst startTime = Date.now();\n\tconst result = await llmCallFn();\n\tconst latencyMs = Date.now() - startTime;\n\n\ttrajectoryLogger.logLLMCall(stepId, {\n\t\tmodel: options.model,\n\t\tmodelVersion: options.modelVersion,\n\t\tsystemPrompt: options.systemPrompt,\n\t\tuserPrompt: options.userPrompt,\n\t\tresponse: result.text,\n\t\treasoning: result.reasoning,\n\t\ttemperature: options.temperature || 0.7,\n\t\tmaxTokens: options.maxTokens || 8192,\n\t\tpurpose: options.purpose || \"action\",\n\t\tactionType: options.actionType,\n\t\tpromptTokens: result.tokens?.prompt,\n\t\tcompletionTokens: result.tokens?.completion,\n\t\tlatencyMs: result.latencyMs || latencyMs,\n\t});\n\n\treturn result.text;\n}\n\nexport function logProviderAccess(\n\ttrajectoryLogger: TrajectoryLoggerService,\n\ttrajectoryId: string,\n\taccess: {\n\t\tproviderName: string;\n\t\tdata: ProviderAccessData;\n\t\tpurpose: string;\n\t\tquery?: ProviderAccessData;\n\t},\n): void {\n\ttrajectoryLogger.logProviderAccessByTrajectoryId(trajectoryId, access);\n}\n\ntype AsyncFunction<TArgs extends JsonValue[], TResult extends JsonValue> = (\n\t...args: TArgs\n) => Promise<TResult>;\n\nexport function withTrajectoryLogging<\n\tTArgs extends JsonValue[],\n\tTResult extends JsonValue,\n>(\n\tfn: AsyncFunction<TArgs, TResult>,\n\ttrajectoryLogger: TrajectoryLoggerService,\n\ttrajectoryId: string,\n\tcontext: {\n\t\tactionType?: string;\n\t\tpurpose?: string;\n\t} = {},\n): AsyncFunction<TArgs, TResult> {\n\treturn async (...args: TArgs): Promise<TResult> => {\n\t\tconst stepId = trajectoryLogger.getCurrentStepId(trajectoryId);\n\t\tif (!stepId) {\n\t\t\treturn fn(...args);\n\t\t}\n\n\t\tconst result = await fn(...args);\n\n\t\ttrajectoryLogger.completeStep(\n\t\t\ttrajectoryId,\n\t\t\tstepId,\n\t\t\t{\n\t\t\t\tactionType: context.actionType || \"function_call\",\n\t\t\t\tactionName: fn.name || \"anonymous\",\n\t\t\t\tparameters: { args: args as JsonValue[] },\n\t\t\t\tsuccess: true,\n\t\t\t\tresult: result !== undefined ? { result } : { result: null },\n\t\t\t},\n\t\t\t{ reward: 0.05 },\n\t\t);\n\n\t\treturn result;\n\t};\n}\n",
|
|
42
42
|
"/**\n * Heuristic Rewards\n *\n * Use heuristic scoring to score trajectories when game knowledge isn't available.\n */\n\nimport type { RewardComponents, Trajectory } from \"./types\";\n\nexport interface RewardServiceOptions {\n archetype?: string;\n useHeuristics?: boolean;\n}\n\nexport class RewardService {\n private options: RewardServiceOptions;\n\n constructor(options: RewardServiceOptions = {}) {\n this.options = options;\n }\n\n async scoreTrajectory(trajectory: Trajectory): Promise<number> {\n if (this.options.useHeuristics !== false) {\n return this.computeHeuristicReward(trajectory);\n }\n return this.computeHeuristicReward(trajectory);\n }\n\n async scoreTrajectoryGroup(trajectories: Trajectory[]): Promise<number[]> {\n if (trajectories.length === 0) {\n return [];\n }\n\n if (trajectories.length === 1) {\n const first = trajectories[0];\n if (!first) return [];\n const score = await this.scoreTrajectory(first);\n return [this.normalizeScore(score)];\n }\n\n const rawScores = await Promise.all(trajectories.map((t) => this.scoreTrajectory(t)));\n return this.normalizeScoresForGroup(rawScores);\n }\n\n private computeHeuristicReward(trajectory: Trajectory): number {\n const components: RewardComponents = trajectory.rewardComponents;\n const metrics = trajectory.metrics;\n\n let reward = 0;\n let weightSum = 0;\n\n // 1. P&L (weight 0.4)\n if (metrics.finalPnL !== undefined) {\n const pnlScore = this.normalizePnL(metrics.finalPnL as number);\n reward += pnlScore * 0.4;\n weightSum += 0.4;\n }\n\n // 2. Success rate (weight 0.3)\n if (metrics.successRate !== undefined) {\n const successScore = (metrics.successRate as number) * 2 - 1; // 0-1 -> -1..1\n reward += successScore * 0.3;\n weightSum += 0.3;\n }\n\n // 3. Completion (weight 0.2)\n const completionScore = metrics.finalStatus === \"completed\" ? 1 : -0.5;\n reward += completionScore * 0.2;\n weightSum += 0.2;\n\n // 4. Environment reward (weight 0.1)\n if (components.environmentReward !== undefined) {\n const envScore = Math.max(-1, Math.min(1, components.environmentReward));\n reward += envScore * 0.1;\n weightSum += 0.1;\n }\n\n if (weightSum > 0) {\n reward = reward / weightSum;\n }\n\n return Math.max(-1, Math.min(1, reward));\n }\n\n private normalizePnL(pnl: number): number {\n return Math.tanh(pnl / 500);\n }\n\n private normalizeScore(score: number): number {\n return (score + 1) / 2;\n }\n\n private normalizeScoresForGroup(scores: number[]): number[] {\n const min = Math.min(...scores);\n const max = Math.max(...scores);\n const range = max - min;\n\n if (range === 0) {\n return scores.map(() => 0.5);\n }\n\n return scores.map((s) => (s - min) / range);\n }\n}\n\nexport function createRewardService(options: RewardServiceOptions = {}): RewardService {\n return new RewardService(options);\n}\n\nexport async function scoreTrajectory(trajectory: Trajectory): Promise<number> {\n const service = new RewardService();\n return service.scoreTrajectory(trajectory);\n}\n\nexport async function scoreTrajectoryGroup(trajectories: Trajectory[]): Promise<number[]> {\n const service = new RewardService();\n return service.scoreTrajectoryGroup(trajectories);\n}\n"
|
|
43
43
|
],
|
|
44
|
-
"mappings": "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",
|
|
45
|
-
"debugId": "
|
|
44
|
+
"mappings": "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",
|
|
45
|
+
"debugId": "82D6338D5E8EB6DA64756E2164756E21",
|
|
46
46
|
"names": []
|
|
47
47
|
}
|