@elizaos/plugin-trajectory-logger 2.0.0-alpha.1 → 2.0.0-alpha.3

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.
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Trajectory Logger Service
3
+ *
4
+ * In-memory collector for agent interaction trajectories.
5
+ *
6
+ * This implementation is intentionally storage-agnostic so it can be used in any elizaOS
7
+ * environment (Node, Bun, tests). If you want persistence, export trajectories and store them
8
+ * via your preferred database or file pipeline.
9
+ */
10
+ import type { ActionAttempt, EnvironmentState, JsonValue, LLMCall, ProviderAccess, RewardComponents, Trajectory } from "./types";
11
+ export declare class TrajectoryLoggerService {
12
+ private activeTrajectories;
13
+ private activeStepIds;
14
+ startTrajectory(agentId: string, options?: {
15
+ scenarioId?: string;
16
+ episodeId?: string;
17
+ batchId?: string;
18
+ groupIndex?: number;
19
+ metadata?: Record<string, JsonValue>;
20
+ }): string;
21
+ startStep(trajectoryId: string, envState: EnvironmentState): string;
22
+ logLLMCall(stepId: string, llmCall: Omit<LLMCall, "callId" | "timestamp">): void;
23
+ logProviderAccess(stepId: string, access: Omit<ProviderAccess, "providerId" | "timestamp">): void;
24
+ logLLMCallByTrajectoryId(trajectoryId: string, llmCall: Omit<LLMCall, "callId" | "timestamp">): void;
25
+ logProviderAccessByTrajectoryId(trajectoryId: string, access: Omit<ProviderAccess, "providerId" | "timestamp">): void;
26
+ getCurrentStepId(trajectoryId: string): string | null;
27
+ completeStep(trajectoryId: string, stepId: string, action: Omit<ActionAttempt, "attemptId" | "timestamp">, rewardInfo?: {
28
+ reward?: number;
29
+ components?: Partial<RewardComponents>;
30
+ }): void;
31
+ completeCurrentStep(trajectoryId: string, action: Omit<ActionAttempt, "attemptId" | "timestamp">, rewardInfo?: {
32
+ reward?: number;
33
+ components?: Partial<RewardComponents>;
34
+ }): void;
35
+ endTrajectory(trajectoryId: string, status: "completed" | "terminated" | "error" | "timeout", finalMetrics?: Record<string, JsonValue>): Promise<void>;
36
+ getActiveTrajectory(trajectoryId: string): Trajectory | null;
37
+ private findTrajectoryByStepId;
38
+ }
39
+ //# sourceMappingURL=TrajectoryLoggerService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrajectoryLoggerService.d.ts","sourceRoot":"","sources":["../TrajectoryLoggerService.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,UAAU,EAEX,MAAM,SAAS,CAAC;AAEjB,qBAAa,uBAAuB;IAClC,OAAO,CAAC,kBAAkB,CAAsC;IAChE,OAAO,CAAC,aAAa,CAAkC;IAEvD,eAAe,CACb,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;KACjC,GACL,MAAM;IA8BT,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,MAAM;IAiCnE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,WAAW,CAAC,GAAG,IAAI;IAsBhF,iBAAiB,CACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,WAAW,CAAC,GACvD,IAAI;IAsBP,wBAAwB,CACtB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,WAAW,CAAC,GAC7C,IAAI;IASP,+BAA+B,CAC7B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,WAAW,CAAC,GACvD,IAAI;IASP,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIrD,YAAY,CACV,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,WAAW,CAAC,EACtD,UAAU,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;KAAE,GACvE,IAAI;IAkCP,mBAAmB,CACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,WAAW,CAAC,EACtD,UAAU,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;KAAE,GACvE,IAAI;IASD,aAAa,CACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,EACxD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAsBhB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAI5D,OAAO,CAAC,sBAAsB;CAQ/B"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Action-Level Instrumentation
3
+ *
4
+ * Wraps actions and providers with trajectory logging.
5
+ */
6
+ import type { Action, IAgentRuntime, Plugin, Provider } from "@elizaos/core";
7
+ import type { TrajectoryLoggerService } from "./TrajectoryLoggerService";
8
+ import type { JsonValue } from "./types";
9
+ interface TrajectoryContext {
10
+ trajectoryId: string;
11
+ logger: TrajectoryLoggerService;
12
+ }
13
+ export declare function setTrajectoryContext(runtime: IAgentRuntime, trajectoryId: string, trajectoryLogger: TrajectoryLoggerService): void;
14
+ export declare function getTrajectoryContext(runtime: IAgentRuntime): TrajectoryContext | null;
15
+ export declare function clearTrajectoryContext(runtime: IAgentRuntime): void;
16
+ export declare function wrapActionWithLogging(action: Action, _trajectoryLogger: TrajectoryLoggerService): Action;
17
+ export declare function wrapPluginActions(plugin: Plugin, trajectoryLogger: TrajectoryLoggerService): Plugin;
18
+ export declare function logLLMCallFromAction(actionContext: Record<string, JsonValue | undefined>, trajectoryLogger: TrajectoryLoggerService, trajectoryId: string): void;
19
+ export declare function logProviderFromAction(actionContext: Record<string, JsonValue | undefined>, trajectoryLogger: TrajectoryLoggerService, trajectoryId: string): void;
20
+ export declare function wrapProviderWithLogging(provider: Provider, _trajectoryLogger: TrajectoryLoggerService): Provider;
21
+ export declare function wrapPluginProviders(plugin: Plugin, trajectoryLogger: TrajectoryLoggerService): Plugin;
22
+ export {};
23
+ //# sourceMappingURL=action-interceptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-interceptor.d.ts","sourceRoot":"","sources":["../action-interceptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,MAAM,EAIN,aAAa,EAEb,MAAM,EACN,QAAQ,EAGT,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,UAAU,iBAAiB;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,uBAAuB,CAAC;CACjC;AAID,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,uBAAuB,GACxC,IAAI,CAEN;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,iBAAiB,GAAG,IAAI,CAErF;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAEnE;AAID,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,uBAAuB,GACzC,MAAM,CA6FR;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,uBAAuB,GACxC,MAAM,CASR;AAED,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,EACpD,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,MAAM,GACnB,IAAI,CAuBN;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,EACpD,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,MAAM,GACnB,IAAI,CAaN;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,uBAAuB,GACzC,QAAQ,CA0CV;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,uBAAuB,GACxC,MAAM,CAWR"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * ART Format Conversion
3
+ *
4
+ * Converts our rich trajectory format to ART-compatible format.
5
+ *
6
+ * Key insight from ART examples:
7
+ * - Trajectories are MESSAGE ARRAYS (system/user/assistant)
8
+ * - Metadata is separate (for judge context)
9
+ * - Single reward per trajectory
10
+ * - Grouping by scenario for GRPO
11
+ */
12
+ import type { ARTTrajectory, ChatMessage, Trajectory, TrajectoryGroup } from "./types";
13
+ /**
14
+ * Convert rich trajectory to ART message format.
15
+ */
16
+ export declare function toARTMessages(trajectory: Trajectory): ChatMessage[];
17
+ export declare function toARTTrajectory(trajectory: Trajectory): ARTTrajectory;
18
+ export declare function groupTrajectories(trajectories: Trajectory[]): TrajectoryGroup[];
19
+ export declare function extractSharedPrefix(trajectories: Trajectory[]): ChatMessage[];
20
+ export declare function removeSharedPrefix(messages: ChatMessage[], sharedPrefix: ChatMessage[]): ChatMessage[];
21
+ export declare function prepareForRULER(group: TrajectoryGroup): {
22
+ sharedPrefix: ChatMessage[];
23
+ suffixes: ChatMessage[][];
24
+ metadata: ARTTrajectory["metadata"][];
25
+ };
26
+ export declare function toARTJSONL(trajectory: Trajectory): string;
27
+ export declare function validateARTCompatibility(trajectory: Trajectory): {
28
+ valid: boolean;
29
+ errors: string[];
30
+ warnings: string[];
31
+ };
32
+ //# sourceMappingURL=art-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"art-format.d.ts","sourceRoot":"","sources":["../art-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EAEX,UAAU,EACV,eAAe,EAEhB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,WAAW,EAAE,CAqBnE;AA0DD,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,CAwBrE;AAkDD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAkB/E;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAyB7E;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,WAAW,EAAE,EACvB,YAAY,EAAE,WAAW,EAAE,GAC1B,WAAW,EAAE,CAEf;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG;IACvD,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC;IAC1B,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;CACvC,CASA;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAEzD;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,UAAU,GAAG;IAChE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAqCA"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bun
2
+ export {};
3
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../build.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Trajectory Export Utilities
3
+ *
4
+ * The original implementation targeted a Babylon-specific database + HuggingFace upload pipeline.
5
+ * In elizaOS core, this module is storage-agnostic and focuses on preparing files for downstream
6
+ * training (JSONL / grouped JSON).
7
+ */
8
+ import type { Trajectory } from "./types";
9
+ export interface ExportOptions {
10
+ datasetName: string;
11
+ huggingFaceToken?: string;
12
+ startDate?: Date;
13
+ endDate?: Date;
14
+ agentIds?: string[];
15
+ scenarioIds?: string[];
16
+ minReward?: number;
17
+ maxReward?: number;
18
+ includeJudged?: boolean;
19
+ maxTrajectories?: number;
20
+ format?: "jsonl" | "parquet" | "arrow";
21
+ splitRatio?: {
22
+ train: number;
23
+ validation: number;
24
+ test: number;
25
+ };
26
+ trajectories?: Trajectory[];
27
+ outputPath?: string;
28
+ outputDir?: string;
29
+ }
30
+ export interface ExportResult {
31
+ success: boolean;
32
+ trajectoriesExported: number;
33
+ datasetUrl?: string;
34
+ error?: string;
35
+ }
36
+ export declare function exportToHuggingFace(options: ExportOptions): Promise<ExportResult>;
37
+ export declare function exportGroupedByScenario(options: ExportOptions): Promise<ExportResult>;
38
+ export declare function exportForOpenPipeART(options: ExportOptions): Promise<ExportResult>;
39
+ export declare function exportGroupedForGRPO(options: ExportOptions): Promise<ExportResult>;
40
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../export.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,SAAS,CAAC;AAE3D,MAAM,WAAW,aAAa;IAE5B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAGjE,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAG5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAKvF;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAa3F;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAQxF;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAQxF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Game-Knowledge Rewards
3
+ *
4
+ * Compute rewards using perfect game information for RL training.
5
+ *
6
+ * @remarks These helpers are intentionally lightweight; environments can provide richer
7
+ * reward computation by writing into `trajectory.totalReward` and `step.reward`.
8
+ */
9
+ import type { JsonValue, Trajectory, TrajectoryStep } from "./types";
10
+ export declare function computeTrajectoryReward(trajectory: Trajectory): number;
11
+ export declare function computeStepReward(step: TrajectoryStep): number;
12
+ export declare function buildGameStateFromDB(_trajectoryId: string): Promise<Record<string, JsonValue>>;
13
+ export declare function recomputeTrajectoryRewards(_trajectoryIds: string[]): Promise<void>;
14
+ //# sourceMappingURL=game-rewards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-rewards.d.ts","sourceRoot":"","sources":["../game-rewards.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAErE,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAEtE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAE9D;AAED,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAEpC;AAED,wBAAsB,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Auto-generated canonical action/provider/evaluator docs for plugin-trajectory-logger.
3
+ * DO NOT EDIT - Generated from prompts/specs/**.
4
+ */
5
+ export type ActionDoc = {
6
+ name: string;
7
+ description: string;
8
+ similes?: readonly string[];
9
+ parameters?: readonly unknown[];
10
+ examples?: readonly (readonly unknown[])[];
11
+ };
12
+ export type ProviderDoc = {
13
+ name: string;
14
+ description: string;
15
+ position?: number;
16
+ dynamic?: boolean;
17
+ };
18
+ export type EvaluatorDoc = {
19
+ name: string;
20
+ description: string;
21
+ similes?: readonly string[];
22
+ alwaysRun?: boolean;
23
+ examples?: readonly unknown[];
24
+ };
25
+ export declare const coreActionsSpec: {
26
+ readonly version: "1.0.0";
27
+ readonly actions: readonly [];
28
+ };
29
+ export declare const allActionsSpec: {
30
+ readonly version: "1.0.0";
31
+ readonly actions: readonly [];
32
+ };
33
+ export declare const coreProvidersSpec: {
34
+ readonly version: "1.0.0";
35
+ readonly providers: readonly [];
36
+ };
37
+ export declare const allProvidersSpec: {
38
+ readonly version: "1.0.0";
39
+ readonly providers: readonly [];
40
+ };
41
+ export declare const coreEvaluatorsSpec: {
42
+ readonly version: "1.0.0";
43
+ readonly evaluators: readonly [];
44
+ };
45
+ export declare const allEvaluatorsSpec: {
46
+ readonly version: "1.0.0";
47
+ readonly evaluators: readonly [];
48
+ };
49
+ export declare const coreActionDocs: readonly ActionDoc[];
50
+ export declare const allActionDocs: readonly ActionDoc[];
51
+ export declare const coreProviderDocs: readonly ProviderDoc[];
52
+ export declare const allProviderDocs: readonly ProviderDoc[];
53
+ export declare const coreEvaluatorDocs: readonly EvaluatorDoc[];
54
+ export declare const allEvaluatorDocs: readonly EvaluatorDoc[];
55
+ //# sourceMappingURL=specs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../../generated/specs/specs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AACX,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AACX,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AACX,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC;AACX,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AACX,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AAEX,eAAO,MAAM,cAAc,EAAE,SAAS,SAAS,EAA4B,CAAC;AAC5E,eAAO,MAAM,aAAa,EAAE,SAAS,SAAS,EAA2B,CAAC;AAC1E,eAAO,MAAM,gBAAgB,EAAE,SAAS,WAAW,EAAgC,CAAC;AACpF,eAAO,MAAM,eAAe,EAAE,SAAS,WAAW,EAA+B,CAAC;AAClF,eAAO,MAAM,iBAAiB,EAAE,SAAS,YAAY,EAAkC,CAAC;AACxF,eAAO,MAAM,gBAAgB,EAAE,SAAS,YAAY,EAAiC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Plugin } from "@elizaos/core";
2
+ export declare const trajectoryLoggerPlugin: Plugin;
3
+ export default trajectoryLoggerPlugin;
4
+ //# sourceMappingURL=index.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,MAAM,EAAE,MAAM,eAAe,CAAC;AAK3D,eAAO,MAAM,sBAAsB,EAAE,MAQpC,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { Plugin } from "@elizaos/core";
2
+ /**
3
+ * Trajectory Logger Plugin
4
+ *
5
+ * Collects complete agent interaction trajectories for RL training.
6
+ * Records LLM calls, provider access, actions, environment state, and computes rewards.
7
+ *
8
+ * @remarks TrajectoryLoggerService is exported but not registered as a service
9
+ * since it doesn't implement the core Service interface. Use the exported helpers directly.
10
+ */
11
+ export declare const trajectoryLoggerPlugin: Plugin;
12
+ export default trajectoryLoggerPlugin;
13
+ export * from "./action-interceptor";
14
+ export * from "./art-format";
15
+ export * from "./export";
16
+ export * from "./game-rewards";
17
+ export * from "./integration";
18
+ export * from "./reward-service";
19
+ export { TrajectoryLoggerService } from "./TrajectoryLoggerService";
20
+ export * from "./types";
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAMpC,CAAC;AAEF,eAAe,sBAAsB,CAAC;AAMtC,cAAc,sBAAsB,CAAC;AAIrC,cAAc,cAAc,CAAC;AAI7B,cAAc,UAAU,CAAC;AAKzB,cAAc,gBAAgB,CAAC;AAI/B,cAAc,eAAe,CAAC;AAI9B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAIpE,cAAc,SAAS,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Manual Instrumentation Helpers
3
+ *
4
+ * Advanced manual control for trajectory logging.
5
+ */
6
+ import type { TrajectoryLoggerService } from "./TrajectoryLoggerService";
7
+ import type { JsonValue } from "./types";
8
+ export interface TrajectoryMetadata {
9
+ [key: string]: JsonValue;
10
+ }
11
+ export type FinalMetrics = Record<string, JsonValue> & {
12
+ totalReward?: number;
13
+ stepCount?: number;
14
+ successRate?: number;
15
+ };
16
+ export interface ProviderAccessData {
17
+ [key: string]: JsonValue;
18
+ }
19
+ export type WrappedFunctionArgs = JsonValue[];
20
+ export declare function startAutonomousTick(trajectoryLogger: TrajectoryLoggerService, context: {
21
+ agentId: string;
22
+ scenarioId?: string;
23
+ episodeId?: string;
24
+ batchId?: string;
25
+ metadata?: TrajectoryMetadata;
26
+ }): string;
27
+ export declare function endAutonomousTick(trajectoryLogger: TrajectoryLoggerService, trajectoryId: string, status?: "completed" | "terminated" | "error" | "timeout", finalMetrics?: FinalMetrics): Promise<void>;
28
+ export declare function loggedLLMCall(trajectoryLogger: TrajectoryLoggerService, trajectoryId: string, options: {
29
+ model: string;
30
+ modelVersion?: string;
31
+ systemPrompt: string;
32
+ userPrompt: string;
33
+ temperature?: number;
34
+ maxTokens?: number;
35
+ purpose?: "action" | "reasoning" | "evaluation" | "response" | "other";
36
+ actionType?: string;
37
+ }, llmCallFn: () => Promise<{
38
+ text: string;
39
+ reasoning?: string;
40
+ tokens?: {
41
+ prompt?: number;
42
+ completion?: number;
43
+ };
44
+ latencyMs?: number;
45
+ }>): Promise<string>;
46
+ export declare function logProviderAccess(trajectoryLogger: TrajectoryLoggerService, trajectoryId: string, access: {
47
+ providerName: string;
48
+ data: ProviderAccessData;
49
+ purpose: string;
50
+ query?: ProviderAccessData;
51
+ }): void;
52
+ type AsyncFunction<TArgs extends JsonValue[], TResult extends JsonValue> = (...args: TArgs) => Promise<TResult>;
53
+ export declare function withTrajectoryLogging<TArgs extends JsonValue[], TResult extends JsonValue>(fn: AsyncFunction<TArgs, TResult>, trajectoryLogger: TrajectoryLoggerService, trajectoryId: string, context?: {
54
+ actionType?: string;
55
+ purpose?: string;
56
+ }): AsyncFunction<TArgs, TResult>;
57
+ export {};
58
+ //# sourceMappingURL=integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../integration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAoB,SAAS,EAAE,MAAM,SAAS,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,EAAE,CAAC;AAE9C,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,uBAAuB,EACzC,OAAO,EAAE;IACP,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B,GACA,MAAM,CAqBR;AAED,wBAAsB,iBAAiB,CACrC,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,SAAuB,EACtE,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,aAAa,CACjC,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;IACP,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,EACD,SAAS,EAAE,MAAM,OAAO,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,GACD,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAED,wBAAgB,iBAAiB,CAC/B,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE;IACN,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B,GACA,IAAI,CAEN;AAED,KAAK,aAAa,CAAC,KAAK,SAAS,SAAS,EAAE,EAAE,OAAO,SAAS,SAAS,IAAI,CACzE,GAAG,IAAI,EAAE,KAAK,KACX,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,wBAAgB,qBAAqB,CAAC,KAAK,SAAS,SAAS,EAAE,EAAE,OAAO,SAAS,SAAS,EACxF,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EACjC,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CACb,GACL,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAwB/B"}
@@ -17,15 +17,13 @@ function wrapActionWithLogging(action, _trajectoryLogger) {
17
17
  handler: async (runtime, message, state, options, callback) => {
18
18
  const context = getTrajectoryContext(runtime);
19
19
  if (!context) {
20
- const result = await originalHandler(runtime, message, state, options, callback);
21
- return result ?? undefined;
20
+ return await originalHandler(runtime, message, state, options, callback);
22
21
  }
23
22
  const { trajectoryId, logger: loggerService } = context;
24
23
  const stepId = loggerService.getCurrentStepId(trajectoryId);
25
24
  if (!stepId) {
26
25
  logger.warn({ action: action.name, trajectoryId }, "No active step for action execution");
27
- const result = await originalHandler(runtime, message, state, options, callback);
28
- return result ?? undefined;
26
+ return await originalHandler(runtime, message, state, options, callback);
29
27
  }
30
28
  const successHandler = () => {
31
29
  const stateSnapshot = state ? JSON.parse(JSON.stringify(state)) : null;
@@ -61,7 +59,7 @@ function wrapActionWithLogging(action, _trajectoryLogger) {
61
59
  try {
62
60
  const result = await originalHandler(runtime, message, state, options, callback);
63
61
  successHandler();
64
- return result ?? undefined;
62
+ return result;
65
63
  } catch (err) {
66
64
  if (err instanceof Error) {
67
65
  return errorHandler(err);
@@ -838,4 +836,4 @@ export {
838
836
  RewardService
839
837
  };
840
838
 
841
- //# debugId=8E8ACF830258000B64756E2164756E21
839
+ //# debugId=FD4F0CC606B13C7564756E2164756E21
@@ -2,7 +2,7 @@
2
2
  "version": 3,
3
3
  "sources": ["../../action-interceptor.ts", "../../art-format.ts", "../../export.ts", "../../game-rewards.ts", "../../integration.ts", "../../reward-service.ts", "../../TrajectoryLoggerService.ts", "../../index.ts"],
4
4
  "sourcesContent": [
5
- "/**\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",
5
+ "/**\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 return await originalHandler(runtime, message, state, options, callback);\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 return await originalHandler(runtime, message, state, options, callback);\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;\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",
6
6
  "/**\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",
7
7
  "/**\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",
8
8
  "/**\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",
@@ -11,7 +11,7 @@
11
11
  "/**\n * Trajectory Logger Service\n *\n * In-memory collector for agent interaction trajectories.\n *\n * This implementation is intentionally storage-agnostic so it can be used in any elizaOS\n * environment (Node, Bun, tests). If you want persistence, export trajectories and store them\n * via your preferred database or file pipeline.\n */\n\nimport { asUUID, logger } 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\nexport class TrajectoryLoggerService {\n private activeTrajectories: Map<string, Trajectory> = new Map();\n private activeStepIds: Map<string, string> = new Map();\n\n startTrajectory(\n agentId: string,\n options: {\n scenarioId?: string;\n episodeId?: string;\n batchId?: string;\n groupIndex?: number;\n metadata?: Record<string, JsonValue>;\n } = {}\n ): string {\n const trajectoryId = uuidv4();\n const now = Date.now();\n\n const trajectory: Trajectory = {\n trajectoryId: asUUID(trajectoryId),\n agentId: asUUID(agentId),\n startTime: now,\n endTime: now,\n durationMs: 0,\n episodeId: options.episodeId,\n scenarioId: options.scenarioId,\n batchId: options.batchId,\n groupIndex: options.groupIndex,\n steps: [],\n totalReward: 0,\n rewardComponents: {\n environmentReward: 0,\n },\n metrics: {\n episodeLength: 0,\n finalStatus: \"completed\",\n },\n metadata: (options.metadata || {}) as Record<string, JsonValue>,\n };\n\n this.activeTrajectories.set(trajectoryId, trajectory);\n return trajectoryId;\n }\n\n startStep(trajectoryId: string, envState: EnvironmentState): string {\n const stepId = uuidv4();\n const trajectory = this.activeTrajectories.get(trajectoryId);\n\n if (!trajectory) {\n throw new Error(`Trajectory ${trajectoryId} not found`);\n }\n\n const step: TrajectoryStep = {\n stepId: asUUID(stepId),\n stepNumber: trajectory.steps.length,\n timestamp: envState.timestamp || Date.now(),\n environmentState: envState,\n observation: {},\n llmCalls: [],\n providerAccesses: [],\n action: {\n attemptId: \"\",\n timestamp: 0,\n actionType: \"pending\",\n actionName: \"pending\",\n parameters: {},\n success: false,\n },\n reward: 0,\n done: false,\n };\n\n trajectory.steps.push(step);\n this.activeStepIds.set(trajectoryId, stepId);\n return stepId;\n }\n\n logLLMCall(stepId: string, llmCall: Omit<LLMCall, \"callId\" | \"timestamp\">): void {\n const trajectory = this.findTrajectoryByStepId(stepId);\n if (!trajectory) {\n logger.warn({ stepId }, \"Trajectory not found for LLM call\");\n return;\n }\n\n const step = trajectory.steps.find((s) => s.stepId === stepId);\n if (!step) {\n logger.warn({ stepId }, \"Step not found for LLM call\");\n return;\n }\n\n const fullLLMCall: LLMCall = {\n callId: uuidv4(),\n timestamp: Date.now(),\n ...llmCall,\n };\n\n step.llmCalls.push(fullLLMCall);\n }\n\n logProviderAccess(\n stepId: string,\n access: Omit<ProviderAccess, \"providerId\" | \"timestamp\">\n ): void {\n const trajectory = this.findTrajectoryByStepId(stepId);\n if (!trajectory) {\n logger.warn({ stepId }, \"Trajectory not found for provider access\");\n return;\n }\n\n const step = trajectory.steps.find((s) => s.stepId === stepId);\n if (!step) {\n logger.warn({ stepId }, \"Step not found for provider access\");\n return;\n }\n\n const fullAccess: ProviderAccess = {\n providerId: uuidv4(),\n timestamp: Date.now(),\n ...access,\n };\n\n step.providerAccesses.push(fullAccess);\n }\n\n logLLMCallByTrajectoryId(\n trajectoryId: string,\n llmCall: Omit<LLMCall, \"callId\" | \"timestamp\">\n ): void {\n const stepId = this.activeStepIds.get(trajectoryId);\n if (!stepId) {\n logger.warn({ trajectoryId }, \"No active step for trajectory\");\n return;\n }\n this.logLLMCall(stepId, llmCall);\n }\n\n logProviderAccessByTrajectoryId(\n trajectoryId: string,\n access: Omit<ProviderAccess, \"providerId\" | \"timestamp\">\n ): void {\n const stepId = this.activeStepIds.get(trajectoryId);\n if (!stepId) {\n logger.warn({ trajectoryId }, \"No active step for trajectory\");\n return;\n }\n this.logProviderAccess(stepId, access);\n }\n\n getCurrentStepId(trajectoryId: string): string | null {\n return this.activeStepIds.get(trajectoryId) || null;\n }\n\n completeStep(\n trajectoryId: string,\n stepId: string,\n action: Omit<ActionAttempt, \"attemptId\" | \"timestamp\">,\n rewardInfo?: { reward?: number; components?: Partial<RewardComponents> }\n ): void {\n const trajectory = this.activeTrajectories.get(trajectoryId);\n if (!trajectory) {\n logger.warn({ trajectoryId }, \"Trajectory not found for completeStep\");\n return;\n }\n\n const step = trajectory.steps.find((s) => s.stepId === stepId);\n if (!step) {\n logger.warn({ trajectoryId, stepId }, \"Step not found for completeStep\");\n return;\n }\n\n step.action = {\n attemptId: uuidv4(),\n timestamp: Date.now(),\n ...action,\n };\n\n if (rewardInfo?.reward !== undefined) {\n step.reward = rewardInfo.reward;\n trajectory.totalReward += rewardInfo.reward;\n }\n\n if (rewardInfo?.components) {\n trajectory.rewardComponents = {\n ...trajectory.rewardComponents,\n ...rewardInfo.components,\n };\n }\n\n this.activeStepIds.delete(trajectoryId);\n }\n\n completeCurrentStep(\n trajectoryId: string,\n action: Omit<ActionAttempt, \"attemptId\" | \"timestamp\">,\n rewardInfo?: { reward?: number; components?: Partial<RewardComponents> }\n ): void {\n const stepId = this.activeStepIds.get(trajectoryId);\n if (!stepId) {\n logger.warn({ trajectoryId }, \"No active step for trajectory\");\n return;\n }\n this.completeStep(trajectoryId, stepId, action, rewardInfo);\n }\n\n async endTrajectory(\n trajectoryId: string,\n status: \"completed\" | \"terminated\" | \"error\" | \"timeout\",\n finalMetrics?: Record<string, JsonValue>\n ): Promise<void> {\n const trajectory = this.activeTrajectories.get(trajectoryId);\n if (!trajectory) {\n logger.warn({ trajectoryId }, \"Trajectory not found for endTrajectory\");\n return;\n }\n\n trajectory.endTime = Date.now();\n trajectory.durationMs = trajectory.endTime - trajectory.startTime;\n trajectory.metrics.finalStatus = status;\n trajectory.metrics.episodeLength = trajectory.steps.length;\n\n if (finalMetrics) {\n trajectory.metrics = {\n ...trajectory.metrics,\n ...finalMetrics,\n };\n }\n\n this.activeStepIds.delete(trajectoryId);\n }\n\n getActiveTrajectory(trajectoryId: string): Trajectory | null {\n return this.activeTrajectories.get(trajectoryId) || null;\n }\n\n private findTrajectoryByStepId(stepId: string): Trajectory | null {\n for (const trajectory of this.activeTrajectories.values()) {\n if (trajectory.steps.some((s) => s.stepId === stepId)) {\n return trajectory;\n }\n }\n return null;\n }\n}\n",
12
12
  "import type { Plugin } from \"@elizaos/core\";\n\n/**\n * Trajectory Logger Plugin\n *\n * Collects complete agent interaction trajectories for RL training.\n * Records LLM calls, provider access, actions, environment state, and computes rewards.\n *\n * @remarks TrajectoryLoggerService is exported but not registered as a service\n * since it doesn't implement the core Service interface. Use the exported helpers directly.\n */\nexport const trajectoryLoggerPlugin: Plugin = {\n name: \"@elizaos/plugin-trajectory-logger\",\n description:\n \"Collects complete agent interaction trajectory data for RL training. Records LLM calls, provider access, actions, environment state, and computes rewards.\",\n dependencies: [],\n services: [],\n};\n\nexport default trajectoryLoggerPlugin;\n\n// ==========================================\n// PRIMARY: Action-Level Instrumentation\n// Use these for most cases!\n// ==========================================\nexport * from \"./action-interceptor\";\n// ==========================================\n// TRAJECTORY FORMAT CONVERSION\n// ==========================================\nexport * from \"./art-format\";\n// ==========================================\n// DATA EXPORT\n// ==========================================\nexport * from \"./export\";\n\n// ==========================================\n// PRIMARY: Game-Knowledge Rewards\n// ==========================================\nexport * from \"./game-rewards\";\n// ==========================================\n// ADVANCED: Manual Instrumentation\n// ==========================================\nexport * from \"./integration\";\n// ==========================================\n// OPTIONAL: Heuristic Rewards\n// ==========================================\nexport * from \"./reward-service\";\nexport { TrajectoryLoggerService } from \"./TrajectoryLoggerService\";\n// ==========================================\n// CORE TYPES\n// ==========================================\nexport * from \"./types\";\n"
13
13
  ],
14
- "mappings": "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",
15
- "debugId": "8E8ACF830258000B64756E2164756E21",
14
+ "mappings": "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",
15
+ "debugId": "FD4F0CC606B13C7564756E2164756E21",
16
16
  "names": []
17
17
  }