@neo4j-labs/agent-memory 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/auth/index.ts","../src/long-term/index.ts","../src/query/index.ts","../src/reasoning/index.ts","../src/short-term/index.ts","../src/transport/casing.ts","../src/transport/rest.ts","../src/client.ts"],"names":["durationMs"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Auth & API-key management — hosted service only.\n *\n * Static `nams_*` keys can be created, listed, revealed, and revoked. OAuth\n * refresh-token rotation is also exposed for clients running PKCE flows.\n */\n\nimport type { Transport } from \"../transport/index.js\";\nimport type { AccessTokenPair, ApiKey, CreateApiKeyInput } from \"../types.js\";\n\ninterface WireApiKey {\n id: string;\n label: string;\n scopes?: string[];\n workspace_id: string;\n created_at: string;\n expires_at?: string;\n key?: string;\n}\n\ninterface WireTokenPair {\n access_token: string;\n refresh_token: string;\n expires_in: number;\n}\n\nfunction toApiKey(w: WireApiKey): ApiKey {\n return {\n id: w.id,\n label: w.label,\n scopes: w.scopes ?? [],\n workspaceId: w.workspace_id,\n createdAt: w.created_at,\n expiresAt: w.expires_at,\n key: w.key,\n };\n}\n\nexport class AuthClient {\n constructor(private readonly transport: Transport) {}\n\n /** List API keys for a workspace (no plaintext). */\n async listApiKeys(workspaceId: string): Promise<ApiKey[]> {\n const wire = await this.transport.request<WireApiKey[]>(\"list_api_keys\", {\n workspace_id: workspaceId,\n });\n return (wire ?? []).map(toApiKey);\n }\n\n /** Create a new API key. The plaintext value is returned only once. */\n async createApiKey(input: CreateApiKeyInput): Promise<ApiKey> {\n const wire = await this.transport.request<WireApiKey>(\"create_api_key\", {\n label: input.label,\n scopes: input.scopes,\n workspace_id: input.workspaceId,\n });\n return toApiKey(wire);\n }\n\n /** Revoke (delete) an API key by id. */\n async revokeApiKey(keyId: string): Promise<void> {\n await this.transport.request(\"revoke_api_key\", { key_id: keyId });\n }\n\n /** Reveal the plaintext value of a stored API key. */\n async revealApiKey(keyId: string, workspaceId: string): Promise<ApiKey> {\n const wire = await this.transport.request<WireApiKey>(\"reveal_api_key\", {\n key_id: keyId,\n workspace_id: workspaceId,\n });\n return toApiKey(wire);\n }\n\n /** Exchange a refresh token for a fresh access/refresh pair. */\n async refreshAccessToken(refreshToken: string): Promise<AccessTokenPair> {\n const wire = await this.transport.request<WireTokenPair>(\"refresh_access_token\", {\n refresh_token: refreshToken,\n });\n return {\n accessToken: wire.access_token,\n refreshToken: wire.refresh_token,\n expiresIn: wire.expires_in,\n };\n }\n}\n","/**\n * Long-term memory operations.\n *\n * Bridge methods (Silver tier) plus Volume 5 / hosted-native methods for\n * entity feedback, history, merge-by-id, graph view, and provenance.\n */\n\nimport type { Transport } from \"../transport/index.js\";\nimport type {\n AddRelationshipOptions,\n Entity,\n EntityFeedbackResult,\n EntityGraph,\n EntityGraphEdge,\n EntityGraphNode,\n EntityHistory,\n EntityMention,\n EntityMergeResult,\n EntityRelationshipRef,\n Fact,\n GetRelatedEntitiesOptions,\n ListEntitiesOptions,\n Preference,\n Relationship,\n SearchEntitiesOptions,\n SearchPreferencesOptions,\n SetEntityFeedbackOptions,\n UpdateEntityOptions,\n} from \"../types.js\";\n\ninterface WireEntity {\n id: string;\n name: string;\n type: string;\n subtype?: string;\n description?: string;\n embedding?: number[];\n canonical_name?: string;\n created_at?: string;\n updated_at?: string;\n confidence?: number;\n source_stage?: string;\n relationships?: WireEntityRelRef[];\n}\n\ninterface WireEntityRelRef {\n id: string;\n type: string;\n target_id: string;\n target_name?: string;\n properties?: Record<string, unknown>;\n}\n\ninterface WirePreference {\n id: string;\n category: string;\n preference: string;\n context?: string;\n embedding?: number[];\n}\n\ninterface WireFact {\n id: string;\n subject: string;\n predicate: string;\n object: string;\n embedding?: number[];\n}\n\ninterface WireRelationship {\n id: string;\n source_id: string;\n target_id: string;\n relationship_type: string;\n properties?: Record<string, unknown>;\n}\n\ninterface WireEntityHistory {\n entity_id: string;\n mentions: WireMention[];\n}\n\ninterface WireMention {\n conversation_id: string;\n message_id?: string;\n content: string;\n timestamp: string;\n}\n\ninterface WireGraphNode {\n id: string;\n name: string;\n type: string;\n}\n\ninterface WireGraphEdge {\n id: string;\n source: string;\n target: string;\n type: string;\n}\n\ninterface WireGraph {\n nodes?: WireGraphNode[];\n edges?: WireGraphEdge[];\n}\n\nfunction toEntity(w: WireEntity): Entity {\n return {\n id: w.id,\n name: w.name,\n type: w.type,\n subtype: w.subtype,\n description: w.description,\n embedding: w.embedding,\n canonicalName: w.canonical_name,\n createdAt: w.created_at ?? \"\",\n updatedAt: w.updated_at,\n confidence: w.confidence,\n sourceStage: w.source_stage,\n relationships: w.relationships?.map(toRelRef),\n };\n}\n\nfunction toRelRef(w: WireEntityRelRef): EntityRelationshipRef {\n return {\n id: w.id,\n type: w.type,\n targetId: w.target_id,\n targetName: w.target_name,\n properties: w.properties,\n };\n}\n\nfunction toPreference(w: WirePreference): Preference {\n return {\n id: w.id,\n category: w.category,\n preference: w.preference,\n context: w.context,\n embedding: w.embedding,\n };\n}\n\nfunction toFact(w: WireFact): Fact {\n return {\n id: w.id,\n subject: w.subject,\n predicate: w.predicate,\n object: w.object,\n embedding: w.embedding,\n };\n}\n\nfunction toRelationship(w: WireRelationship): Relationship {\n return {\n id: w.id,\n sourceId: w.source_id,\n targetId: w.target_id,\n relationshipType: w.relationship_type,\n properties: w.properties ?? {},\n };\n}\n\nfunction toMention(w: WireMention): EntityMention {\n return {\n conversationId: w.conversation_id,\n messageId: w.message_id,\n content: w.content,\n timestamp: w.timestamp,\n };\n}\n\nfunction toGraphNode(w: WireGraphNode): EntityGraphNode {\n return { id: w.id, name: w.name, type: w.type };\n}\n\nfunction toGraphEdge(w: WireGraphEdge): EntityGraphEdge {\n return { id: w.id, source: w.source, target: w.target, type: w.type };\n}\n\nexport class LongTermMemory {\n constructor(private readonly transport: Transport) {}\n\n // ---- Silver tier (bridge) ----------------------------------------------\n\n async addEntity(\n name: string,\n entityType: string,\n options?: { description?: string },\n ): Promise<Entity> {\n const wire = await this.transport.request<WireEntity>(\"add_entity\", {\n name,\n entity_type: entityType,\n type: entityType,\n description: options?.description,\n });\n return toEntity(wire);\n }\n\n async addPreference(\n category: string,\n preference: string,\n options?: { context?: string },\n ): Promise<Preference> {\n const wire = await this.transport.request<WirePreference>(\"add_preference\", {\n category,\n preference,\n context: options?.context,\n });\n return toPreference(wire);\n }\n\n async addFact(subject: string, predicate: string, obj: string): Promise<Fact> {\n const wire = await this.transport.request<WireFact>(\"add_fact\", {\n subject,\n predicate,\n obj,\n });\n return toFact(wire);\n }\n\n async searchEntities(query: string, options?: SearchEntitiesOptions): Promise<Entity[]> {\n const wire = await this.transport.request<WireEntity[]>(\"search_entities\", {\n query,\n type: options?.type,\n limit: options?.limit ?? 10,\n });\n return wire.map(toEntity);\n }\n\n async searchPreferences(\n query: string,\n options?: SearchPreferencesOptions,\n ): Promise<Preference[]> {\n const wire = await this.transport.request<WirePreference[]>(\"search_preferences\", {\n query,\n category: options?.category,\n limit: options?.limit ?? 10,\n });\n return wire.map(toPreference);\n }\n\n async getEntityByName(name: string): Promise<Entity | null> {\n const wire = await this.transport.request<WireEntity | null>(\"get_entity_by_name\", {\n name,\n });\n return wire ? toEntity(wire) : null;\n }\n\n async getRelatedEntities(\n entityId: string,\n options?: GetRelatedEntitiesOptions,\n ): Promise<Entity[]> {\n const wire = await this.transport.request<WireEntity[]>(\"get_related_entities\", {\n entity_id: entityId,\n relationship_type: options?.relationshipType,\n depth: options?.depth ?? 1,\n });\n return wire.map(toEntity);\n }\n\n async addRelationship(\n sourceId: string,\n targetId: string,\n relationshipType: string,\n options?: AddRelationshipOptions,\n ): Promise<Relationship> {\n const wire = await this.transport.request<WireRelationship>(\"add_relationship\", {\n source_id: sourceId,\n target_id: targetId,\n relationship_type: relationshipType,\n properties: options?.properties,\n });\n return toRelationship(wire);\n }\n\n async mergeDuplicateEntities(\n sourceId: string,\n targetId: string,\n options?: { canonicalName?: string },\n ): Promise<Entity> {\n const wire = await this.transport.request<WireEntity>(\"merge_duplicate_entities\", {\n source_id: sourceId,\n target_id: targetId,\n canonical_name: options?.canonicalName,\n });\n return toEntity(wire);\n }\n\n // ---- Volume 5 / hosted-native methods -----------------------------------\n\n /** List all entities, optionally filtered by entity type. */\n async listEntities(options?: ListEntitiesOptions): Promise<Entity[]> {\n const wire = await this.transport.request<WireEntity[]>(\"list_entities\", {\n type: options?.type,\n limit: options?.limit,\n });\n return wire.map(toEntity);\n }\n\n /** Fetch one entity (with relationships) by id. */\n async getEntity(entityId: string): Promise<Entity> {\n const wire = await this.transport.request<WireEntity>(\"get_entity\", {\n entity_id: entityId,\n });\n return toEntity(wire);\n }\n\n /** Update an existing entity's name and/or description.\n *\n * The hosted PUT /v1/entities/{id} returns `{status: \"updated\"}` rather\n * than the full entity, so when the response lacks an `id` we follow up\n * with a GET to keep the SDK contract — \"update returns the updated\n * Entity\". Bridge transports return the entity directly, so we tolerate\n * both shapes.\n */\n async updateEntity(entityId: string, options: UpdateEntityOptions): Promise<Entity> {\n const wire = await this.transport.request<WireEntity | { status: string }>(\n \"update_entity\",\n {\n entity_id: entityId,\n name: options.name,\n description: options.description,\n },\n );\n if (wire && typeof wire === \"object\" && \"id\" in wire && (wire as WireEntity).id) {\n return toEntity(wire as WireEntity);\n }\n return this.getEntity(entityId);\n }\n\n /** Delete an entity and its relationships. */\n async deleteEntity(entityId: string): Promise<void> {\n await this.transport.request(\"delete_entity\", { entity_id: entityId });\n }\n\n /** Score an entity 0-1 and optionally mark it human-confirmed. */\n async setEntityFeedback(\n entityId: string,\n options: SetEntityFeedbackOptions,\n ): Promise<EntityFeedbackResult> {\n const result = await this.transport.request<{ id: string; updated: boolean }>(\n \"set_entity_feedback\",\n {\n entity_id: entityId,\n user_score: options.userScore,\n confirmed: options.confirmed,\n },\n );\n return { id: result.id, updated: result.updated };\n }\n\n /** All cross-conversation mentions of this entity. */\n async getEntityHistory(entityId: string): Promise<EntityHistory> {\n const wire = await this.transport.request<WireEntityHistory>(\"get_entity_history\", {\n entity_id: entityId,\n });\n return {\n entityId: wire.entity_id,\n mentions: (wire.mentions ?? []).map(toMention),\n };\n }\n\n /** Merge `sourceId` into `targetId`, leaving a SAME_AS provenance link. */\n async mergeEntities(sourceId: string, targetId: string): Promise<EntityMergeResult> {\n const wire = await this.transport.request<{\n source_id: string;\n target_id: string;\n status: string;\n }>(\"merge_entities\", {\n source_id: sourceId,\n target_id: targetId,\n });\n return { sourceId: wire.source_id, targetId: wire.target_id, status: wire.status };\n }\n\n /** Full-graph view of all entities + edges. Pair with NVL for visualization. */\n async getEntityGraph(): Promise<EntityGraph> {\n const wire = await this.transport.request<WireGraph>(\"get_entity_graph\", {});\n return {\n nodes: (wire.nodes ?? []).map(toGraphNode),\n edges: (wire.edges ?? []).map(toGraphEdge),\n };\n }\n}\n","/**\n * Cypher query console — read-only access to the underlying graph.\n *\n * Hosted service only: write operations are rejected with HTTP 400.\n */\n\nimport type { Transport } from \"../transport/index.js\";\nimport type { CypherResult } from \"../types.js\";\n\ninterface WireCypherResult {\n columns?: string[];\n rows?: unknown[][];\n stats?: Record<string, unknown>;\n}\n\nexport class QueryConsole {\n constructor(private readonly transport: Transport) {}\n\n /**\n * Execute a read-only Cypher query.\n *\n * @example\n * const r = await client.query.cypher({\n * cypher: \"MATCH (e:Entity) RETURN e.name AS name LIMIT $n\",\n * params: { n: 10 },\n * });\n */\n async cypher(input: { cypher: string; params?: Record<string, unknown> }): Promise<CypherResult> {\n const wire = await this.transport.request<WireCypherResult>(\"cypher_query\", {\n cypher: input.cypher,\n params: input.params ?? {},\n });\n return {\n columns: wire.columns ?? [],\n rows: wire.rows ?? [],\n stats: wire.stats,\n };\n }\n}\n","/**\n * Reasoning memory operations.\n *\n * Bridge methods (Silver tier) wrap traces. Volume 5 / hosted-native methods\n * are flatter — steps belong directly to a conversation, with explain &\n * provenance views for the reasoning trail behind any entity.\n */\n\nimport type { Transport } from \"../transport/index.js\";\nimport type {\n AgentStep,\n AgentStepExplanation,\n CompleteTraceOptions,\n ConversationTrace,\n Entity,\n EntityProvenance,\n GetSimilarTracesOptions,\n ListTracesOptions,\n ReasoningStep,\n ReasoningTrace,\n RecordStepInput,\n RecordToolCallOptions,\n ToolCall,\n ToolCallStatus,\n ToolStats,\n} from \"../types.js\";\n\ninterface WireToolCall {\n id: string;\n tool_name?: string;\n toolName?: string;\n arguments?: Record<string, unknown>;\n input?: string;\n result?: unknown;\n output?: unknown;\n status: string;\n duration_ms?: number;\n durationMs?: number;\n error?: string;\n step_id?: string;\n}\n\ninterface WireStep {\n id: string;\n trace_id?: string;\n step_number?: number;\n thought?: string;\n action?: string;\n observation?: string;\n tool_calls?: WireToolCall[];\n}\n\ninterface WireTrace {\n id: string;\n session_id?: string;\n task?: string;\n steps?: WireStep[];\n outcome?: string;\n success?: boolean;\n started_at?: string;\n completed_at?: string;\n}\n\ninterface WireToolStats {\n name: string;\n total_calls: number;\n successful_calls: number;\n failed_calls: number;\n success_rate: number;\n avg_duration_ms?: number;\n}\n\ninterface WireAgentStep {\n id: string;\n conversation_id: string;\n reasoning: string;\n action_taken: string;\n result?: string;\n created_at?: string;\n}\n\ninterface WireAgentStepExplanation extends WireAgentStep {\n tool_calls?: WireToolCall[];\n influenced_entities?: Array<Record<string, unknown>>;\n}\n\ninterface WireConversationTrace {\n conversation_id: string;\n steps?: WireAgentStep[];\n tool_calls?: WireToolCall[];\n}\n\ninterface WireEntityProvenance {\n entity_id: string;\n steps?: WireAgentStep[];\n}\n\nfunction toToolCall(w: WireToolCall): ToolCall {\n return {\n id: w.id,\n toolName: w.tool_name ?? w.toolName ?? \"\",\n arguments:\n w.arguments ??\n (w.input ? safeParseObject(w.input) : {}) ??\n {},\n result: w.result ?? w.output,\n status: (w.status ?? \"success\") as ToolCallStatus,\n durationMs: w.duration_ms ?? w.durationMs,\n error: w.error,\n };\n}\n\nfunction safeParseObject(input: string): Record<string, unknown> {\n try {\n const parsed = JSON.parse(input);\n return typeof parsed === \"object\" && parsed !== null\n ? (parsed as Record<string, unknown>)\n : { value: parsed };\n } catch {\n return { raw: input };\n }\n}\n\nfunction toStep(w: WireStep): ReasoningStep {\n return {\n id: w.id,\n traceId: w.trace_id ?? \"\",\n stepNumber: w.step_number ?? 0,\n thought: w.thought,\n action: w.action,\n observation: w.observation,\n toolCalls: (w.tool_calls ?? []).map(toToolCall),\n };\n}\n\nfunction toTrace(w: WireTrace): ReasoningTrace {\n return {\n id: w.id,\n sessionId: w.session_id ?? \"\",\n task: w.task ?? \"\",\n steps: (w.steps ?? []).map(toStep),\n outcome: w.outcome,\n success: w.success,\n startedAt: w.started_at ?? \"\",\n completedAt: w.completed_at,\n };\n}\n\nfunction toToolStats(w: WireToolStats): ToolStats {\n return {\n name: w.name,\n totalCalls: w.total_calls,\n successfulCalls: w.successful_calls,\n failedCalls: w.failed_calls,\n successRate: w.success_rate,\n avgDurationMs: w.avg_duration_ms,\n };\n}\n\nfunction toAgentStep(w: WireAgentStep): AgentStep {\n return {\n id: w.id,\n conversationId: w.conversation_id,\n reasoning: w.reasoning,\n actionTaken: w.action_taken,\n result: w.result,\n createdAt: w.created_at ?? \"\",\n };\n}\n\nexport class ReasoningMemory {\n constructor(private readonly transport: Transport) {}\n\n // ---- Silver tier (bridge) ----------------------------------------------\n\n async startTrace(sessionId: string, task: string): Promise<ReasoningTrace> {\n const wire = await this.transport.request<WireTrace>(\"start_trace\", {\n session_id: sessionId,\n task,\n });\n return toTrace(wire);\n }\n\n async addStep(\n traceId: string,\n options?: { thought?: string; action?: string; observation?: string },\n ): Promise<ReasoningStep> {\n const wire = await this.transport.request<WireStep>(\"add_step\", {\n trace_id: traceId,\n thought: options?.thought,\n action: options?.action,\n observation: options?.observation,\n });\n return toStep(wire);\n }\n\n async recordToolCall(\n stepId: string,\n toolName: string,\n args: Record<string, unknown>,\n options?: RecordToolCallOptions,\n ): Promise<ToolCall> {\n const wire = await this.transport.request<WireToolCall>(\"record_tool_call\", {\n step_id: stepId,\n tool_name: toolName,\n arguments: args,\n input: typeof args === \"string\" ? args : JSON.stringify(args),\n result: options?.result,\n output: typeof options?.result === \"string\" ? options.result : undefined,\n status: options?.status ?? \"success\",\n duration_ms: options?.durationMs,\n error: options?.error,\n });\n return toToolCall(wire);\n }\n\n async completeTrace(\n traceId: string,\n options?: CompleteTraceOptions,\n ): Promise<ReasoningTrace> {\n const wire = await this.transport.request<WireTrace>(\"complete_trace\", {\n trace_id: traceId,\n outcome: options?.outcome,\n success: options?.success,\n });\n return toTrace(wire);\n }\n\n async getTraceWithSteps(traceId: string): Promise<ReasoningTrace | null> {\n const wire = await this.transport.request<WireTrace | null>(\"get_trace_with_steps\", {\n trace_id: traceId,\n });\n return wire ? toTrace(wire) : null;\n }\n\n async listTraces(options?: ListTracesOptions): Promise<ReasoningTrace[]> {\n const wire = await this.transport.request<WireTrace[]>(\"list_traces\", {\n session_id: options?.sessionId,\n limit: options?.limit ?? 100,\n });\n return wire.map(toTrace);\n }\n\n async getToolStats(toolName?: string): Promise<ToolStats[]> {\n const wire = await this.transport.request<WireToolStats[]>(\"get_tool_stats\", {\n tool_name: toolName,\n });\n return wire.map(toToolStats);\n }\n\n async getSimilarTraces(\n task: string,\n options?: GetSimilarTracesOptions,\n ): Promise<ReasoningTrace[]> {\n const wire = await this.transport.request<WireTrace[]>(\"get_similar_traces\", {\n task,\n limit: options?.limit ?? 5,\n success_only: options?.successOnly ?? true,\n });\n return wire.map(toTrace);\n }\n\n // ---- Volume 5 / hosted-native methods -----------------------------------\n\n /** Record one reasoning step under a conversation (hosted REACT model). */\n async recordStep(input: RecordStepInput): Promise<AgentStep> {\n const wire = await this.transport.request<WireAgentStep>(\"record_step\", {\n conversation_id: input.conversationId,\n reasoning: input.reasoning,\n action_taken: input.actionTaken,\n result: input.result,\n });\n return toAgentStep(wire);\n }\n\n /** List all reasoning steps for one conversation. */\n async listSteps(conversationId: string): Promise<AgentStep[]> {\n const wire = await this.transport.request<WireAgentStep[]>(\"list_steps\", {\n conversation_id: conversationId,\n });\n return wire.map(toAgentStep);\n }\n\n /** Detailed step explanation with tool calls and influenced entities. */\n async explainStep(stepId: string): Promise<AgentStepExplanation> {\n const wire = await this.transport.request<WireAgentStepExplanation>(\"explain_step\", {\n step_id: stepId,\n });\n return {\n ...toAgentStep(wire),\n toolCalls: (wire.tool_calls ?? []).map(toToolCall),\n influencedEntities: (wire.influenced_entities ?? []).map((e) => ({\n id: String(e[\"id\"] ?? \"\"),\n name: String(e[\"name\"] ?? \"\"),\n type: String(e[\"type\"] ?? \"\"),\n description: e[\"description\"] as string | undefined,\n createdAt: String(e[\"created_at\"] ?? \"\"),\n })) as Entity[],\n };\n }\n\n /** Full reasoning trace for a conversation (steps + tool calls). */\n async getTraceByConversation(conversationId: string): Promise<ConversationTrace> {\n const wire = await this.transport.request<WireConversationTrace>(\n \"get_trace_by_conversation\",\n { conversation_id: conversationId },\n );\n return {\n conversationId: wire.conversation_id,\n steps: (wire.steps ?? []).map(toAgentStep),\n toolCalls: (wire.tool_calls ?? []).map(toToolCall),\n };\n }\n\n /** All reasoning steps that influenced an entity's creation.\n *\n * Hosted REST returns the chain under `provenance`; bridge / older\n * responses use `steps`. Accept either.\n */\n async getEntityProvenance(entityId: string): Promise<EntityProvenance> {\n const wire = await this.transport.request<\n WireEntityProvenance & { provenance?: WireAgentStep[] }\n >(\"get_entity_provenance\", { entity_id: entityId });\n const rawSteps = wire.steps ?? wire.provenance ?? [];\n return {\n entityId: wire.entity_id,\n steps: rawSteps.map(toAgentStep),\n };\n }\n}\n","/**\n * Short-term (conversational) memory operations.\n *\n * Bridge methods (Bronze tier) speak the TCK BaseAdapter contract.\n * Hosted methods speak the Volume 5 / Platinum tier hosted service operations.\n */\n\nimport type { Transport } from \"../transport/index.js\";\nimport type {\n AddMessageOptions,\n BulkMessageInput,\n Conversation,\n ConversationContext,\n CreateConversationOptions,\n GetConversationOptions,\n ListConversationsOptions,\n ListSessionsOptions,\n Message,\n MessageRole,\n Observation,\n Reflection,\n SearchMessagesOptions,\n SessionInfo,\n} from \"../types.js\";\n\n/** Wire format from the bridge protocol (snake_case). */\ninterface WireMessage {\n id: string;\n role: string;\n content: string;\n timestamp?: string;\n created_at?: string;\n embedding?: number[];\n metadata?: Record<string, unknown>;\n conversation_id?: string;\n}\n\ninterface WireConversation {\n id: string;\n session_id?: string;\n messages?: WireMessage[];\n message_count?: number;\n title?: string;\n created_at?: string;\n updated_at?: string;\n workspace_id?: string;\n user_id?: string;\n metadata?: Record<string, unknown>;\n}\n\ninterface WireSessionInfo {\n session_id?: string;\n id?: string;\n message_count: number;\n created_at: string;\n updated_at?: string;\n user_id?: string;\n}\n\ninterface WireObservation {\n id: string;\n conversation_id: string;\n content: string;\n window_start?: string;\n window_end?: string;\n created_at: string;\n}\n\ninterface WireReflection {\n id: string;\n conversation_id: string;\n content: string;\n created_at: string;\n}\n\ninterface WireContext {\n reflections?: WireReflection[];\n observations?: WireObservation[];\n recent_messages?: WireMessage[];\n}\n\nfunction toMessage(w: WireMessage): Message {\n return {\n id: w.id,\n role: (w.role ?? \"user\") as MessageRole,\n content: w.content,\n timestamp: w.timestamp ?? w.created_at ?? \"\",\n embedding: w.embedding,\n metadata: w.metadata ?? {},\n conversationId: w.conversation_id,\n };\n}\n\nfunction toConversation(w: WireConversation): Conversation {\n return {\n id: w.id,\n sessionId: w.session_id ?? w.id,\n messages: (w.messages ?? []).map(toMessage),\n messageCount: w.message_count,\n title: w.title,\n createdAt: w.created_at ?? \"\",\n updatedAt: w.updated_at,\n workspaceId: w.workspace_id,\n userId: w.user_id,\n metadata: w.metadata,\n };\n}\n\nfunction toSessionInfo(w: WireSessionInfo): SessionInfo {\n return {\n sessionId: w.session_id ?? w.id ?? \"\",\n messageCount: w.message_count ?? 0,\n createdAt: w.created_at,\n updatedAt: w.updated_at,\n };\n}\n\nfunction toObservation(w: WireObservation): Observation {\n return {\n id: w.id,\n conversationId: w.conversation_id,\n content: w.content,\n windowStart: w.window_start,\n windowEnd: w.window_end,\n createdAt: w.created_at,\n };\n}\n\nfunction toReflection(w: WireReflection): Reflection {\n return {\n id: w.id,\n conversationId: w.conversation_id,\n content: w.content,\n createdAt: w.created_at,\n };\n}\n\nexport class ShortTermMemory {\n constructor(private readonly transport: Transport) {}\n\n // ---- Bronze tier (bridge) ----------------------------------------------\n\n async addMessage(\n sessionId: string,\n role: MessageRole,\n content: string,\n options?: AddMessageOptions,\n ): Promise<Message> {\n const wire = await this.transport.request<WireMessage>(\"add_message\", {\n session_id: sessionId,\n role,\n content,\n metadata: options?.metadata,\n });\n return toMessage(wire);\n }\n\n async getConversation(\n sessionId: string,\n options?: GetConversationOptions,\n ): Promise<Conversation> {\n const wire = await this.transport.request<WireConversation>(\"get_conversation\", {\n session_id: sessionId,\n limit: options?.limit,\n });\n return toConversation(wire);\n }\n\n async searchMessages(query: string, options?: SearchMessagesOptions): Promise<Message[]> {\n const wire = await this.transport.request<WireMessage[]>(\"search_messages\", {\n query,\n session_id: options?.sessionId,\n limit: options?.limit ?? 10,\n threshold: options?.threshold ?? 0.7,\n });\n return wire.map(toMessage);\n }\n\n async listSessions(options?: ListSessionsOptions): Promise<SessionInfo[]> {\n const wire = await this.transport.request<WireSessionInfo[]>(\"list_sessions\", {\n limit: options?.limit ?? 100,\n });\n return wire.map(toSessionInfo);\n }\n\n async deleteMessage(messageId: string): Promise<boolean> {\n const result = await this.transport.request<{ deleted: boolean }>(\"delete_message\", {\n message_id: messageId,\n });\n return result.deleted;\n }\n\n async clearSession(sessionId: string): Promise<void> {\n await this.transport.request(\"clear_session\", { session_id: sessionId });\n }\n\n // ---- Volume 5 / hosted-native methods -----------------------------------\n\n /** Create a new conversation (hosted service). */\n async createConversation(options: CreateConversationOptions): Promise<Conversation> {\n const wire = await this.transport.request<WireConversation>(\"create_conversation\", {\n user_id: options.userId,\n metadata: options.metadata,\n });\n return toConversation(wire);\n }\n\n /** List conversations the API key has access to. */\n async listConversations(options?: ListConversationsOptions): Promise<Conversation[]> {\n const wire = await this.transport.request<WireConversation[]>(\"list_conversations\", {\n limit: options?.limit,\n userId: options?.userId,\n });\n return wire.map(toConversation);\n }\n\n /** Fetch conversation metadata (no messages). */\n async getConversationMetadata(conversationId: string): Promise<Conversation> {\n const wire = await this.transport.request<WireConversation>(\"get_conversation_metadata\", {\n conversation_id: conversationId,\n });\n return toConversation(wire);\n }\n\n /** Delete a conversation and all its messages. */\n async deleteConversation(conversationId: string): Promise<void> {\n await this.transport.request(\"delete_conversation\", { conversation_id: conversationId });\n }\n\n /**\n * Three-tier conversational context (reflections + observations + recent\n * messages). The richest input you can hand an LLM about a conversation.\n */\n async getContext(conversationId: string): Promise<ConversationContext> {\n const wire = await this.transport.request<WireContext>(\"get_context\", {\n conversation_id: conversationId,\n });\n return {\n reflections: (wire.reflections ?? []).map(toReflection),\n observations: (wire.observations ?? []).map(toObservation),\n recentMessages: (wire.recent_messages ?? []).map(toMessage),\n };\n }\n\n /** Bulk-add up to 100 messages in one request. */\n async bulkAddMessages(\n conversationId: string,\n messages: BulkMessageInput[],\n ): Promise<Message[]> {\n if (messages.length > 100) {\n throw new Error(\"bulkAddMessages accepts a maximum of 100 messages per call.\");\n }\n const wire = await this.transport.request<WireMessage[]>(\"bulk_add_messages\", {\n conversation_id: conversationId,\n messages,\n });\n return wire.map(toMessage);\n }\n\n /** Auto-generated message-window summaries. */\n async getObservations(\n conversationId: string,\n options?: { limit?: number },\n ): Promise<Observation[]> {\n const wire = await this.transport.request<WireObservation[]>(\"get_observations\", {\n conversation_id: conversationId,\n limit: options?.limit,\n });\n return wire.map(toObservation);\n }\n\n /** Higher-level reflections derived from observations. */\n async getReflections(conversationId: string): Promise<Reflection[]> {\n const wire = await this.transport.request<WireReflection[]>(\"get_reflections\", {\n conversation_id: conversationId,\n });\n return wire.map(toReflection);\n }\n}\n","/**\n * snake_case ↔ camelCase translation for wire payloads.\n *\n * Keep deeply nested structures (arrays, objects, primitives) intact.\n * Pure helpers — no transport dependencies.\n */\n\nconst SNAKE_RE = /_([a-z0-9])/g;\nconst CAMEL_RE = /([A-Z])/g;\n\nfunction snakeKey(key: string): string {\n return key.replace(CAMEL_RE, (_, c) => `_${(c as string).toLowerCase()}`);\n}\n\nfunction camelKey(key: string): string {\n return key.replace(SNAKE_RE, (_, c) => (c as string).toUpperCase());\n}\n\nexport function snakeToCamel<T = unknown>(value: unknown): T {\n if (Array.isArray(value)) {\n return value.map((v) => snakeToCamel(v)) as T;\n }\n if (value !== null && typeof value === \"object\") {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value)) {\n out[camelKey(k)] = snakeToCamel(v);\n }\n return out as T;\n }\n return value as T;\n}\n\nexport function camelToSnake<T = unknown>(value: unknown): T {\n if (Array.isArray(value)) {\n return value.map((v) => camelToSnake(v)) as T;\n }\n if (value !== null && typeof value === \"object\") {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value)) {\n out[snakeKey(k)] = camelToSnake(v);\n }\n return out as T;\n }\n return value as T;\n}\n","/**\n * RestTransport — talks to the hosted Neo4j Agent Memory Service REST API.\n *\n * Endpoint should be the v1 root, e.g. `https://memory.neo4jlabs.com/v1`.\n * Routes the bridge-style `request(method, params)` calls to the appropriate\n * REST endpoints with snake_case ↔ camelCase translation on the wire.\n *\n * Hosted-native methods (added in Volume 5 of the spec) are routed natively.\n * Legacy bridge-only methods (add_preference, add_fact, etc.) throw\n * NotSupportedError because the hosted service has no equivalent.\n */\n\nimport {\n AuthenticationError,\n ConnectionError,\n NotSupportedError,\n TransportError,\n} from \"../errors.js\";\nimport {\n defaultUserAgent,\n extractRequestId,\n supportsUserAgentHeader,\n type Logger,\n} from \"../observability.js\";\nimport { camelToSnake, snakeToCamel } from \"./casing.js\";\nimport type { Transport } from \"./index.js\";\n\n/** Strip trailing `/` from a URL without using a polynomial regex. */\nfunction trimTrailingSlashes(s: string): string {\n let end = s.length;\n while (end > 0 && s.charCodeAt(end - 1) === 47) end--;\n return s.slice(0, end);\n}\n\n/** Monotonic-ish timestamp for duration measurement. Works on all runtimes. */\nfunction nowMs(): number {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n return Date.now();\n}\n\n/** snake_case → camelCase, single-key form (no recursion into objects). */\nfunction snakeToCamelKey(s: string): string {\n return s.replace(/_([a-z0-9])/g, (_, c) => (c as string).toUpperCase());\n}\n\nexport type TokenProvider = () => string | Promise<string>;\n\nexport interface RestTransportOptions {\n /** Base URL — should end in /v1, e.g. https://memory.neo4jlabs.com/v1 */\n endpoint: string;\n\n /** Static `nams_*` API key. */\n apiKey?: string;\n\n /** Token provider (overrides apiKey if both supplied) — for OAuth refresh flows. */\n tokenProvider?: TokenProvider;\n\n /** Request timeout in milliseconds. Default: 30000. */\n timeout?: number;\n\n /** Additional headers to include in every request. */\n headers?: Record<string, string>;\n\n /** Per-request logger; see {@link Logger}. */\n logger?: Logger;\n}\n\ntype HttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n\ninterface RestCall {\n method: HttpMethod;\n /** Path template; tokens like `{conversationId}` are replaced from params (camel-cased). */\n path: string;\n /** Param names that go in the URL path (camelCase) — stripped from the body. */\n pathParams?: string[];\n /** Param names that become query string parameters (camelCase). */\n queryParams?: string[];\n /** GET/DELETE → no body. */\n hasBody?: boolean;\n /** Optional response shaper for endpoints whose payload doesn't match bridge wire. */\n shape?: (raw: unknown, camelParams: Record<string, unknown>) => unknown;\n}\n\n/**\n * Bridge-method-name → REST-call mapping.\n *\n * Keys are snake_case bridge method names. Values describe how to dispatch.\n */\nconst ROUTES: Record<string, RestCall | \"noop\" | \"unsupported\"> = {\n // Lifecycle ----------------------------------------------------------------\n setup: \"noop\",\n teardown: \"noop\",\n // Hosted has no global clear; we delete every conversation owned by the API\n // key. This is best-effort — see clearAllData() for the implementation.\n clear_all_data: \"noop\",\n\n // Short-Term — legacy bridge methods (mapped where a clean REST equivalent\n // exists; bridge sessionId is treated as the conversationId UUID).\n add_message: {\n method: \"POST\",\n path: \"/conversations/{sessionId}/messages\",\n pathParams: [\"sessionId\"],\n hasBody: true,\n },\n get_conversation: {\n method: \"GET\",\n path: \"/conversations/{sessionId}/messages\",\n pathParams: [\"sessionId\"],\n queryParams: [\"limit\"],\n shape: (raw, p) => {\n const messages = (raw as { messages?: unknown[] })?.messages ?? raw ?? [];\n return {\n id: p[\"sessionId\"],\n session_id: p[\"sessionId\"],\n messages,\n created_at: null,\n };\n },\n },\n list_sessions: {\n method: \"GET\",\n path: \"/conversations\",\n queryParams: [\"limit\"],\n shape: (raw) => {\n const conversations = (raw as { conversations?: unknown[] })?.conversations ?? [];\n return conversations.map((c) => {\n const conv = c as Record<string, unknown>;\n return {\n session_id: conv[\"id\"],\n message_count: conv[\"messageCount\"] ?? 0,\n created_at: conv[\"createdAt\"],\n updated_at: conv[\"updatedAt\"],\n };\n });\n },\n },\n search_messages: {\n method: \"POST\",\n path: \"/conversations/{sessionId}/search\",\n pathParams: [\"sessionId\"],\n hasBody: true,\n shape: (raw) => (raw as { messages?: unknown[] })?.messages ?? [],\n },\n clear_session: {\n method: \"DELETE\",\n path: \"/conversations/{sessionId}\",\n pathParams: [\"sessionId\"],\n },\n delete_message: \"unsupported\",\n\n // Long-Term — legacy mapped methods\n add_entity: {\n method: \"POST\",\n path: \"/entities\",\n hasBody: true,\n },\n search_entities: {\n method: \"POST\",\n path: \"/entities/search\",\n hasBody: true,\n shape: (raw) => (raw as { entities?: unknown[] })?.entities ?? [],\n },\n add_preference: \"unsupported\",\n add_fact: \"unsupported\",\n search_preferences: \"unsupported\",\n get_entity_by_name: \"unsupported\",\n get_related_entities: \"unsupported\",\n add_relationship: \"unsupported\",\n merge_duplicate_entities: \"unsupported\",\n\n // Reasoning — legacy not directly representable in REST\n start_trace: \"unsupported\",\n add_step: \"unsupported\",\n record_tool_call: {\n method: \"POST\",\n path: \"/reasoning/tool-calls\",\n hasBody: true,\n },\n complete_trace: \"unsupported\",\n get_trace_with_steps: \"unsupported\",\n list_traces: \"unsupported\",\n get_tool_stats: \"unsupported\",\n get_similar_traces: \"unsupported\",\n\n // ---- Hosted-native methods (Volume 5 / Platinum tier) --------------------\n create_conversation: {\n method: \"POST\",\n path: \"/conversations\",\n hasBody: true,\n },\n list_conversations: {\n method: \"GET\",\n path: \"/conversations\",\n queryParams: [\"limit\", \"user_id\"],\n shape: (raw) => (raw as { conversations?: unknown[] })?.conversations ?? raw,\n },\n get_conversation_metadata: {\n method: \"GET\",\n path: \"/conversations/{conversationId}\",\n pathParams: [\"conversationId\"],\n },\n delete_conversation: {\n method: \"DELETE\",\n path: \"/conversations/{conversationId}\",\n pathParams: [\"conversationId\"],\n },\n get_context: {\n method: \"GET\",\n path: \"/conversations/{conversationId}/context\",\n pathParams: [\"conversationId\"],\n },\n bulk_add_messages: {\n method: \"POST\",\n path: \"/conversations/{conversationId}/messages/bulk\",\n pathParams: [\"conversationId\"],\n hasBody: true,\n shape: (raw) => (raw as { messages?: unknown[] })?.messages ?? raw,\n },\n get_observations: {\n method: \"GET\",\n path: \"/conversations/{conversationId}/observations\",\n pathParams: [\"conversationId\"],\n queryParams: [\"limit\"],\n shape: (raw) => (raw as { observations?: unknown[] })?.observations ?? raw,\n },\n get_reflections: {\n method: \"GET\",\n path: \"/conversations/{conversationId}/reflections\",\n pathParams: [\"conversationId\"],\n shape: (raw) => (raw as { reflections?: unknown[] })?.reflections ?? raw,\n },\n list_entities: {\n method: \"GET\",\n path: \"/entities\",\n queryParams: [\"type\", \"limit\"],\n shape: (raw) => (raw as { entities?: unknown[] })?.entities ?? raw,\n },\n get_entity: {\n method: \"GET\",\n path: \"/entities/{entityId}\",\n pathParams: [\"entityId\"],\n },\n update_entity: {\n method: \"PUT\",\n path: \"/entities/{entityId}\",\n pathParams: [\"entityId\"],\n hasBody: true,\n },\n delete_entity: {\n method: \"DELETE\",\n path: \"/entities/{entityId}\",\n pathParams: [\"entityId\"],\n },\n set_entity_feedback: {\n method: \"PUT\",\n path: \"/entities/{entityId}/feedback\",\n pathParams: [\"entityId\"],\n hasBody: true,\n },\n get_entity_history: {\n method: \"GET\",\n path: \"/entities/{entityId}/history\",\n pathParams: [\"entityId\"],\n },\n merge_entities: {\n method: \"POST\",\n path: \"/entities/{sourceId}/merge\",\n pathParams: [\"sourceId\"],\n hasBody: true,\n },\n get_entity_graph: {\n method: \"GET\",\n path: \"/entities/graph\",\n },\n explain_step: {\n method: \"GET\",\n path: \"/reasoning/explain/{stepId}\",\n pathParams: [\"stepId\"],\n },\n get_trace_by_conversation: {\n method: \"GET\",\n path: \"/reasoning/trace/{conversationId}\",\n pathParams: [\"conversationId\"],\n },\n get_entity_provenance: {\n method: \"GET\",\n path: \"/reasoning/provenance/{entityId}\",\n pathParams: [\"entityId\"],\n },\n record_step: {\n method: \"POST\",\n path: \"/reasoning/steps\",\n hasBody: true,\n },\n list_steps: {\n method: \"GET\",\n path: \"/reasoning/steps\",\n queryParams: [\"conversation_id\"],\n shape: (raw) => (raw as { steps?: unknown[] })?.steps ?? raw,\n },\n cypher_query: {\n method: \"POST\",\n path: \"/query\",\n hasBody: true,\n },\n\n // Auth\n list_api_keys: {\n method: \"GET\",\n path: \"/auth/api-keys\",\n queryParams: [\"workspace_id\"],\n shape: (raw) => {\n const r = raw as { keys?: unknown[]; api_keys?: unknown[] };\n return r?.keys ?? r?.api_keys ?? raw;\n },\n },\n create_api_key: {\n method: \"POST\",\n path: \"/auth/api-keys\",\n hasBody: true,\n },\n revoke_api_key: {\n method: \"DELETE\",\n path: \"/auth/api-keys/{keyId}\",\n pathParams: [\"keyId\"],\n },\n reveal_api_key: {\n method: \"GET\",\n path: \"/auth/api-keys/{keyId}/reveal\",\n pathParams: [\"keyId\"],\n queryParams: [\"workspace_id\"],\n },\n refresh_access_token: {\n method: \"POST\",\n path: \"/auth/refresh\",\n hasBody: true,\n },\n};\n\nexport class RestTransport implements Transport {\n private readonly endpoint: string;\n private readonly apiKey?: string;\n private readonly tokenProvider?: TokenProvider;\n private readonly timeout: number;\n private readonly headers: Record<string, string>;\n private readonly logger?: Logger;\n\n constructor(options: RestTransportOptions) {\n this.endpoint = trimTrailingSlashes(options.endpoint);\n this.apiKey = options.apiKey;\n this.tokenProvider = options.tokenProvider;\n this.timeout = options.timeout ?? 30_000;\n this.headers = options.headers ?? {};\n this.logger = options.logger;\n }\n\n async connect(): Promise<void> {\n const url = `${this.endpoint}/conversations?limit=1`;\n const start = nowMs();\n this.emit({ kind: \"request\", method: \"connect\", url, httpMethod: \"GET\" });\n let response: Response;\n try {\n response = await fetch(url, {\n method: \"GET\",\n headers: await this.buildHeaders(),\n signal: AbortSignal.timeout(this.timeout),\n });\n } catch (error) {\n const durationMs = nowMs() - start;\n if (error instanceof TypeError) {\n const err = new ConnectionError(\n `Failed to connect to ${this.endpoint}: ${(error as Error).message}`,\n { cause: error },\n );\n this.emit({ kind: \"error\", method: \"connect\", url, durationMs, message: err.message });\n throw err;\n }\n if (error instanceof DOMException && error.name === \"TimeoutError\") {\n const err = new ConnectionError(\n `Connection to ${this.endpoint} timed out after ${this.timeout}ms`,\n { cause: error },\n );\n this.emit({ kind: \"error\", method: \"connect\", url, durationMs, message: err.message });\n throw err;\n }\n throw error;\n }\n const durationMs = nowMs() - start;\n const requestId = extractRequestId(response.headers);\n if (response.status === 401 || response.status === 403) {\n const err = new AuthenticationError(\n `Authentication failed against ${this.endpoint}: ${response.status} ${response.statusText}`,\n { requestId },\n );\n this.emit({\n kind: \"error\",\n method: \"connect\",\n url,\n status: response.status,\n requestId,\n durationMs,\n message: err.message,\n });\n throw err;\n }\n if (!response.ok && response.status >= 500) {\n const err = new ConnectionError(\n `Server error from ${this.endpoint}: ${response.status} ${response.statusText}`,\n { requestId },\n );\n this.emit({\n kind: \"error\",\n method: \"connect\",\n url,\n status: response.status,\n requestId,\n durationMs,\n message: err.message,\n });\n throw err;\n }\n this.emit({\n kind: \"response\",\n method: \"connect\",\n url,\n status: response.status,\n requestId,\n durationMs,\n });\n }\n\n async close(): Promise<void> {}\n\n async request<T>(method: string, params: Record<string, unknown>): Promise<T> {\n const route = ROUTES[method];\n if (!route) {\n throw new NotSupportedError(\n `Method '${method}' is not implemented by RestTransport. ` +\n `Use BridgeTransport for full TCK conformance, or call a hosted-native method.`,\n );\n }\n if (route === \"noop\") return undefined as T;\n if (route === \"unsupported\") {\n throw new NotSupportedError(\n `Method '${method}' has no equivalent in the hosted Neo4j Agent Memory REST API. ` +\n `It is supported by BridgeTransport only.`,\n );\n }\n\n const original = params ?? {};\n const camelParams = snakeToCamel<Record<string, unknown>>(original);\n\n // Substitute path params (placeholders match camelCase route literals).\n let path = route.path;\n const consumed = new Set<string>();\n for (const name of route.pathParams ?? []) {\n const v = camelParams[name];\n if (v === undefined || v === null || v === \"\") {\n throw new TransportError(\n `Missing required path parameter '${name}' for method '${method}'`,\n 400,\n camelParams,\n );\n }\n path = path.replace(`{${name}}`, encodeURIComponent(String(v)));\n consumed.add(name);\n }\n\n // Build query string. The hosted REST API uses snake_case for query\n // params (conversation_id, workspace_id) — NOT camelCase. Look up by\n // the snake_case name from the original params; fall back to the\n // camelCase form if the caller already passed it that way.\n const queryEntries: [string, string][] = [];\n for (const name of route.queryParams ?? []) {\n let v: unknown = original[name];\n if (v === undefined || v === null) {\n const camel = snakeToCamelKey(name);\n v = camelParams[camel];\n }\n if (v !== undefined && v !== null) {\n queryEntries.push([name, String(v)]);\n consumed.add(name);\n consumed.add(snakeToCamelKey(name));\n }\n }\n const query = queryEntries.length\n ? \"?\" + queryEntries.map(([k, v]) => `${k}=${encodeURIComponent(v)}`).join(\"&\")\n : \"\";\n\n // Build body (anything not consumed)\n let body: string | undefined;\n if (route.hasBody) {\n const bodyObj: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(camelParams)) {\n if (!consumed.has(k) && v !== undefined && v !== null) {\n bodyObj[k] = v;\n }\n }\n body = JSON.stringify(bodyObj);\n }\n\n const url = `${this.endpoint}${path}${query}`;\n const start = nowMs();\n this.emit({ kind: \"request\", method, url, httpMethod: route.method });\n let response: Response;\n try {\n response = await fetch(url, {\n method: route.method,\n headers: await this.buildHeaders(route.hasBody),\n body,\n signal: AbortSignal.timeout(this.timeout),\n });\n } catch (error) {\n const durationMs = nowMs() - start;\n if (error instanceof TypeError) {\n const err = new ConnectionError(\n `Request to ${url} failed: ${(error as Error).message}`,\n { cause: error },\n );\n this.emit({ kind: \"error\", method, url, durationMs, message: err.message });\n throw err;\n }\n throw error;\n }\n\n const requestId = extractRequestId(response.headers);\n const durationMs = nowMs() - start;\n\n if (response.status === 401 || response.status === 403) {\n const err = new AuthenticationError(\n `Authentication failed: ${response.status} ${response.statusText}`,\n { requestId },\n );\n this.emit({\n kind: \"error\",\n method,\n url,\n status: response.status,\n requestId,\n durationMs,\n message: err.message,\n });\n throw err;\n }\n\n if (response.status === 204) {\n this.emit({ kind: \"response\", method, url, status: 204, requestId, durationMs });\n return undefined as T;\n }\n\n const text = await response.text();\n\n if (!response.ok) {\n let errorBody: unknown;\n try {\n errorBody = JSON.parse(text);\n } catch {\n errorBody = text;\n }\n const errMsg =\n typeof errorBody === \"object\" && errorBody !== null && \"error\" in errorBody\n ? String((errorBody as Record<string, unknown>)[\"error\"])\n : `HTTP ${response.status}`;\n const err = new TransportError(\n `${method} failed: ${errMsg}`,\n response.status,\n errorBody,\n { requestId },\n );\n this.emit({\n kind: \"error\",\n method,\n url,\n status: response.status,\n requestId,\n durationMs,\n message: err.message,\n });\n throw err;\n }\n\n this.emit({ kind: \"response\", method, url, status: response.status, requestId, durationMs });\n\n if (!text) return undefined as T;\n let parsed: unknown = JSON.parse(text);\n if (route.shape) parsed = route.shape(parsed, camelParams);\n return camelToSnake<T>(parsed);\n }\n\n private emit(event: Parameters<Logger>[0]): void {\n if (!this.logger) return;\n try {\n this.logger(event);\n } catch {\n // Logger errors must never propagate.\n }\n }\n\n private async buildHeaders(includeContentType = false): Promise<Record<string, string>> {\n const headers: Record<string, string> = {};\n const canSendUserAgent = supportsUserAgentHeader();\n for (const [key, value] of Object.entries(this.headers)) {\n if (key.toLowerCase() === \"user-agent\" && !canSendUserAgent) continue;\n headers[key] = value;\n }\n if (canSendUserAgent && !Object.keys(headers).some((key) => key.toLowerCase() === \"user-agent\")) {\n headers[\"User-Agent\"] = defaultUserAgent();\n }\n if (includeContentType) headers[\"Content-Type\"] = \"application/json\";\n const token = this.tokenProvider ? await this.tokenProvider() : this.apiKey;\n if (token) headers[\"Authorization\"] = `Bearer ${token}`;\n return headers;\n }\n}\n","/**\n * MemoryClient — root entry point for all memory operations.\n *\n * Zero-config form (Node, Bun, Deno):\n *\n * const client = new MemoryClient();\n *\n * defaults the endpoint to https://memory.neo4jlabs.com/v1 and reads\n * MEMORY_API_KEY from the environment.\n *\n * Edge runtimes (Cloudflare Workers, Vercel Edge) read env from the request\n * handler scope, not module init, so pass apiKey explicitly:\n *\n * const client = new MemoryClient({ apiKey: env.MEMORY_API_KEY });\n *\n * The first request triggers the auth probe automatically; calling\n * `connect()` upfront is supported but optional.\n */\n\nimport { AuthClient } from \"./auth/index.js\";\nimport { ValidationError } from \"./errors.js\";\nimport { LongTermMemory } from \"./long-term/index.js\";\nimport { QueryConsole } from \"./query/index.js\";\nimport { ReasoningMemory } from \"./reasoning/index.js\";\nimport { ShortTermMemory } from \"./short-term/index.js\";\nimport { BridgeTransport } from \"./transport/bridge.js\";\nimport type { Transport } from \"./transport/index.js\";\nimport { RestTransport } from \"./transport/rest.js\";\nimport type { MemoryClientOptions } from \"./types.js\";\n\nconst DEFAULT_ENDPOINT = \"https://memory.neo4jlabs.com/v1\";\n\nexport class MemoryClient {\n /** Short-term (conversational) memory operations. */\n readonly shortTerm: ShortTermMemory;\n\n /** Long-term (entity / preference / fact / graph) memory operations. */\n readonly longTerm: LongTermMemory;\n\n /** Reasoning (trace / step / tool call / provenance) memory operations. */\n readonly reasoning: ReasoningMemory;\n\n /** Read-only Cypher query console (hosted service only). */\n readonly query: QueryConsole;\n\n /** API-key & OAuth management (hosted service only). */\n readonly auth: AuthClient;\n\n private readonly transport: Transport;\n\n constructor(options?: MemoryClientOptions);\n constructor(transport: Transport);\n constructor(optionsOrTransport: MemoryClientOptions | Transport = {}) {\n if (isTransport(optionsOrTransport)) {\n this.transport = optionsOrTransport;\n } else {\n this.transport = new LazyConnectTransport(createTransport(optionsOrTransport));\n }\n\n this.shortTerm = new ShortTermMemory(this.transport);\n this.longTerm = new LongTermMemory(this.transport);\n this.reasoning = new ReasoningMemory(this.transport);\n this.query = new QueryConsole(this.transport);\n this.auth = new AuthClient(this.transport);\n }\n\n async connect(): Promise<void> {\n await this.transport.connect();\n }\n\n async close(): Promise<void> {\n await this.transport.close();\n }\n}\n\nfunction isTransport(obj: unknown): obj is Transport {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n \"request\" in obj &&\n typeof (obj as Transport).request === \"function\"\n );\n}\n\nfunction pickTransport(endpoint: string, mode: MemoryClientOptions[\"transport\"]): \"bridge\" | \"rest\" {\n if (mode === \"bridge\" || mode === \"rest\") return mode;\n // Auto: REST if the endpoint path contains /vN (the canonical hosted root).\n return /\\/v\\d+\\b/.test(endpoint) ? \"rest\" : \"bridge\";\n}\n\n/**\n * Resolve the API key from explicit option or MEMORY_API_KEY env var.\n *\n * Explicit `undefined` falls through to env. Explicit empty string does NOT\n * — passing `apiKey: \"\"` is treated as \"I am intentionally unauthenticated.\"\n */\nfunction resolveApiKey(option: string | undefined): string | undefined {\n if (option !== undefined) return option;\n if (typeof process === \"undefined\" || !process.env) return undefined;\n return process.env.MEMORY_API_KEY;\n}\n\nfunction createTransport(options: MemoryClientOptions): Transport {\n const endpoint = options.endpoint;\n const apiKey = resolveApiKey(options.apiKey);\n\n const choice = pickTransport(endpoint ?? DEFAULT_ENDPOINT, options.transport);\n if (choice === \"rest\") {\n return new RestTransport({\n endpoint: endpoint ?? DEFAULT_ENDPOINT,\n apiKey,\n tokenProvider: options.tokenProvider,\n timeout: options.timeout,\n headers: options.headers,\n logger: options.logger,\n });\n }\n if (!endpoint) {\n throw new ValidationError(\"endpoint must be provided for bridge transport.\");\n }\n return new BridgeTransport({\n endpoint,\n apiKey,\n timeout: options.timeout,\n headers: options.headers,\n logger: options.logger,\n });\n}\n\n/**\n * Wraps a Transport so requests are issued without an upfront connectivity\n * probe — the first real request becomes the de facto health check. An\n * explicit `connect()` still triggers the inner connect (and is idempotent\n * across concurrent callers), letting apps that prefer fail-fast at startup\n * opt in.\n */\nclass LazyConnectTransport implements Transport {\n private connectPromise: Promise<void> | null = null;\n\n constructor(public readonly inner: Transport) {}\n\n async request<T>(method: string, params: Record<string, unknown>): Promise<T> {\n return this.inner.request<T>(method, params);\n }\n\n async connect(): Promise<void> {\n if (!this.connectPromise) {\n this.connectPromise = this.inner.connect().catch((err) => {\n this.connectPromise = null;\n throw err;\n });\n }\n return this.connectPromise;\n }\n\n async close(): Promise<void> {\n return this.inner.close();\n }\n}\n"]}
@@ -0,0 +1,56 @@
1
+ import { M as MemoryClient } from '../client-DSqbWQoa.js';
2
+ import '../index-qfRrdQNP.js';
3
+
4
+ /**
5
+ * LangChain JS integration — exposes `MemoryClient` as a chat-message history
6
+ * store and as a retriever-shaped object for entity look-up.
7
+ *
8
+ * Implementations are duck-typed against the LangChain JS interfaces so this
9
+ * module has no LangChain dependency at compile time.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { MemoryClient } from "@neo4j-labs/agent-memory";
14
+ * import { Neo4jChatMessageHistory, Neo4jEntityRetriever }
15
+ * from "@neo4j-labs/agent-memory/integrations/langchain";
16
+ *
17
+ * const client = new MemoryClient({ endpoint: "...", apiKey: "..." });
18
+ * const history = new Neo4jChatMessageHistory(client, "conversation-id");
19
+ * await history.addUserMessage("hello");
20
+ * ```
21
+ */
22
+
23
+ interface LangchainBaseMessage {
24
+ type: "human" | "ai" | "system";
25
+ content: string;
26
+ }
27
+ declare class Neo4jChatMessageHistory {
28
+ private readonly client;
29
+ private readonly conversationId;
30
+ constructor(client: MemoryClient, conversationId: string);
31
+ getMessages(): Promise<LangchainBaseMessage[]>;
32
+ addMessage(message: LangchainBaseMessage): Promise<void>;
33
+ addUserMessage(content: string): Promise<void>;
34
+ addAIChatMessage(content: string): Promise<void>;
35
+ clear(): Promise<void>;
36
+ }
37
+ interface LangchainDocument {
38
+ pageContent: string;
39
+ metadata: Record<string, unknown>;
40
+ }
41
+ /**
42
+ * Retriever-shaped wrapper over `client.longTerm.searchEntities` that returns
43
+ * LangChain-compatible `Document` objects.
44
+ */
45
+ declare class Neo4jEntityRetriever {
46
+ private readonly client;
47
+ private readonly options?;
48
+ constructor(client: MemoryClient, options?: {
49
+ type?: string;
50
+ topK?: number;
51
+ } | undefined);
52
+ invoke(query: string): Promise<LangchainDocument[]>;
53
+ getRelevantDocuments(query: string): Promise<LangchainDocument[]>;
54
+ }
55
+
56
+ export { Neo4jChatMessageHistory, Neo4jEntityRetriever };
@@ -0,0 +1,69 @@
1
+ // src/integrations/langchain.ts
2
+ var TYPE_TO_ROLE = {
3
+ human: "user",
4
+ ai: "assistant",
5
+ system: "system"
6
+ };
7
+ var ROLE_TO_TYPE = {
8
+ user: "human",
9
+ assistant: "ai",
10
+ system: "system"
11
+ };
12
+ var Neo4jChatMessageHistory = class {
13
+ constructor(client, conversationId) {
14
+ this.client = client;
15
+ this.conversationId = conversationId;
16
+ }
17
+ async getMessages() {
18
+ const conv = await this.client.shortTerm.getConversation(this.conversationId);
19
+ return conv.messages.map((m) => ({
20
+ type: ROLE_TO_TYPE[m.role] ?? "human",
21
+ content: m.content
22
+ }));
23
+ }
24
+ async addMessage(message) {
25
+ await this.client.shortTerm.addMessage(
26
+ this.conversationId,
27
+ TYPE_TO_ROLE[message.type] ?? "user",
28
+ message.content
29
+ );
30
+ }
31
+ async addUserMessage(content) {
32
+ await this.addMessage({ type: "human", content });
33
+ }
34
+ async addAIChatMessage(content) {
35
+ await this.addMessage({ type: "ai", content });
36
+ }
37
+ async clear() {
38
+ await this.client.shortTerm.clearSession(this.conversationId);
39
+ }
40
+ };
41
+ var Neo4jEntityRetriever = class {
42
+ constructor(client, options) {
43
+ this.client = client;
44
+ this.options = options;
45
+ }
46
+ async invoke(query) {
47
+ return this.getRelevantDocuments(query);
48
+ }
49
+ async getRelevantDocuments(query) {
50
+ const entities = await this.client.longTerm.searchEntities(query, {
51
+ type: this.options?.type,
52
+ limit: this.options?.topK ?? 4
53
+ });
54
+ return entities.map((e) => ({
55
+ pageContent: `${e.name}${e.description ? ` \u2014 ${e.description}` : ""}`,
56
+ metadata: {
57
+ id: e.id,
58
+ type: e.type,
59
+ confidence: e.confidence,
60
+ sourceStage: e.sourceStage,
61
+ canonicalName: e.canonicalName
62
+ }
63
+ }));
64
+ }
65
+ };
66
+
67
+ export { Neo4jChatMessageHistory, Neo4jEntityRetriever };
68
+ //# sourceMappingURL=langchain.js.map
69
+ //# sourceMappingURL=langchain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/integrations/langchain.ts"],"names":[],"mappings":";AA0BA,IAAM,YAAA,GAAsF;AAAA,EAC1F,KAAA,EAAO,MAAA;AAAA,EACP,EAAA,EAAI,WAAA;AAAA,EACJ,MAAA,EAAQ;AACV,CAAA;AAEA,IAAM,YAAA,GAAsF;AAAA,EAC1F,IAAA,EAAM,OAAA;AAAA,EACN,SAAA,EAAW,IAAA;AAAA,EACX,MAAA,EAAQ;AACV,CAAA;AAEO,IAAM,0BAAN,MAA8B;AAAA,EACnC,WAAA,CACmB,QACA,cAAA,EACjB;AAFiB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,cAAA,GAAA,cAAA;AAAA,EAChB;AAAA,EAEH,MAAM,WAAA,GAA+C;AACnD,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,OAAO,SAAA,CAAU,eAAA,CAAgB,KAAK,cAAc,CAAA;AAC5E,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MAC/B,IAAA,EAAM,YAAA,CAAa,CAAA,CAAE,IAAI,CAAA,IAAK,OAAA;AAAA,MAC9B,SAAS,CAAA,CAAE;AAAA,KACb,CAAE,CAAA;AAAA,EACJ;AAAA,EAEA,MAAM,WAAW,OAAA,EAA8C;AAC7D,IAAA,MAAM,IAAA,CAAK,OAAO,SAAA,CAAU,UAAA;AAAA,MAC1B,IAAA,CAAK,cAAA;AAAA,MACL,YAAA,CAAa,OAAA,CAAQ,IAAI,CAAA,IAAK,MAAA;AAAA,MAC9B,OAAA,CAAQ;AAAA,KACV;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,OAAA,EAAgC;AACnD,IAAA,MAAM,KAAK,UAAA,CAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,CAAA;AAAA,EAClD;AAAA,EAEA,MAAM,iBAAiB,OAAA,EAAgC;AACrD,IAAA,MAAM,KAAK,UAAA,CAAW,EAAE,IAAA,EAAM,IAAA,EAAM,SAAS,CAAA;AAAA,EAC/C;AAAA,EAEA,MAAM,KAAA,GAAuB;AAC3B,IAAA,MAAM,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,YAAA,CAAa,KAAK,cAAc,CAAA;AAAA,EAC9D;AACF;AAWO,IAAM,uBAAN,MAA2B;AAAA,EAChC,WAAA,CACmB,QACA,OAAA,EACjB;AAFiB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA,EAChB;AAAA,EAEH,MAAM,OAAO,KAAA,EAA6C;AACxD,IAAA,OAAO,IAAA,CAAK,qBAAqB,KAAK,CAAA;AAAA,EACxC;AAAA,EAEA,MAAM,qBAAqB,KAAA,EAA6C;AACtE,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,eAAe,KAAA,EAAO;AAAA,MAChE,IAAA,EAAM,KAAK,OAAA,EAAS,IAAA;AAAA,MACpB,KAAA,EAAO,IAAA,CAAK,OAAA,EAAS,IAAA,IAAQ;AAAA,KAC9B,CAAA;AACD,IAAA,OAAO,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MAC1B,WAAA,EAAa,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,EAAG,CAAA,CAAE,WAAA,GAAc,CAAA,QAAA,EAAM,CAAA,CAAE,WAAW,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA;AAAA,MACnE,QAAA,EAAU;AAAA,QACR,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,MAAM,CAAA,CAAE,IAAA;AAAA,QACR,YAAY,CAAA,CAAE,UAAA;AAAA,QACd,aAAa,CAAA,CAAE,WAAA;AAAA,QACf,eAAe,CAAA,CAAE;AAAA;AACnB,KACF,CAAE,CAAA;AAAA,EACJ;AACF","file":"langchain.js","sourcesContent":["/**\n * LangChain JS integration — exposes `MemoryClient` as a chat-message history\n * store and as a retriever-shaped object for entity look-up.\n *\n * Implementations are duck-typed against the LangChain JS interfaces so this\n * module has no LangChain dependency at compile time.\n *\n * @example\n * ```ts\n * import { MemoryClient } from \"@neo4j-labs/agent-memory\";\n * import { Neo4jChatMessageHistory, Neo4jEntityRetriever }\n * from \"@neo4j-labs/agent-memory/integrations/langchain\";\n *\n * const client = new MemoryClient({ endpoint: \"...\", apiKey: \"...\" });\n * const history = new Neo4jChatMessageHistory(client, \"conversation-id\");\n * await history.addUserMessage(\"hello\");\n * ```\n */\n\nimport type { MemoryClient } from \"../client.js\";\n\ninterface LangchainBaseMessage {\n type: \"human\" | \"ai\" | \"system\";\n content: string;\n}\n\nconst TYPE_TO_ROLE: Record<LangchainBaseMessage[\"type\"], \"user\" | \"assistant\" | \"system\"> = {\n human: \"user\",\n ai: \"assistant\",\n system: \"system\",\n};\n\nconst ROLE_TO_TYPE: Record<\"user\" | \"assistant\" | \"system\", LangchainBaseMessage[\"type\"]> = {\n user: \"human\",\n assistant: \"ai\",\n system: \"system\",\n};\n\nexport class Neo4jChatMessageHistory {\n constructor(\n private readonly client: MemoryClient,\n private readonly conversationId: string,\n ) {}\n\n async getMessages(): Promise<LangchainBaseMessage[]> {\n const conv = await this.client.shortTerm.getConversation(this.conversationId);\n return conv.messages.map((m) => ({\n type: ROLE_TO_TYPE[m.role] ?? \"human\",\n content: m.content,\n }));\n }\n\n async addMessage(message: LangchainBaseMessage): Promise<void> {\n await this.client.shortTerm.addMessage(\n this.conversationId,\n TYPE_TO_ROLE[message.type] ?? \"user\",\n message.content,\n );\n }\n\n async addUserMessage(content: string): Promise<void> {\n await this.addMessage({ type: \"human\", content });\n }\n\n async addAIChatMessage(content: string): Promise<void> {\n await this.addMessage({ type: \"ai\", content });\n }\n\n async clear(): Promise<void> {\n await this.client.shortTerm.clearSession(this.conversationId);\n }\n}\n\ninterface LangchainDocument {\n pageContent: string;\n metadata: Record<string, unknown>;\n}\n\n/**\n * Retriever-shaped wrapper over `client.longTerm.searchEntities` that returns\n * LangChain-compatible `Document` objects.\n */\nexport class Neo4jEntityRetriever {\n constructor(\n private readonly client: MemoryClient,\n private readonly options?: { type?: string; topK?: number },\n ) {}\n\n async invoke(query: string): Promise<LangchainDocument[]> {\n return this.getRelevantDocuments(query);\n }\n\n async getRelevantDocuments(query: string): Promise<LangchainDocument[]> {\n const entities = await this.client.longTerm.searchEntities(query, {\n type: this.options?.type,\n limit: this.options?.topK ?? 4,\n });\n return entities.map((e) => ({\n pageContent: `${e.name}${e.description ? ` — ${e.description}` : \"\"}`,\n metadata: {\n id: e.id,\n type: e.type,\n confidence: e.confidence,\n sourceStage: e.sourceStage,\n canonicalName: e.canonicalName,\n },\n }));\n }\n}\n"]}
@@ -0,0 +1,56 @@
1
+ import { M as MemoryClient } from '../client-DSqbWQoa.js';
2
+ import '../index-qfRrdQNP.js';
3
+
4
+ /**
5
+ * Mastra integration — wraps `MemoryClient` as a Mastra-compatible memory
6
+ * provider. Mastra's `Memory` interface is duck-typed here to avoid a hard
7
+ * dependency on `@mastra/core`.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { MemoryClient } from "@neo4j-labs/agent-memory";
12
+ * import { Neo4jMastraMemory } from "@neo4j-labs/agent-memory/integrations/mastra";
13
+ * import { Agent } from "@mastra/core/agent";
14
+ *
15
+ * const client = new MemoryClient({ endpoint: "...", apiKey: "..." });
16
+ * const memory = new Neo4jMastraMemory(client);
17
+ *
18
+ * const agent = new Agent({ name: "scout", memory });
19
+ * ```
20
+ */
21
+
22
+ interface MastraThread {
23
+ id: string;
24
+ resourceId: string;
25
+ title?: string;
26
+ metadata?: Record<string, unknown>;
27
+ }
28
+ interface MastraMemoryMessage {
29
+ id: string;
30
+ threadId: string;
31
+ role: "user" | "assistant" | "system";
32
+ content: string;
33
+ createdAt: string;
34
+ }
35
+ declare class Neo4jMastraMemory {
36
+ private readonly client;
37
+ constructor(client: MemoryClient);
38
+ /** Create a new thread (Mastra term) — backed by createConversation on REST. */
39
+ createThread(input: {
40
+ resourceId: string;
41
+ title?: string;
42
+ metadata?: Record<string, unknown>;
43
+ }): Promise<MastraThread>;
44
+ getMessages(threadId: string, opts?: {
45
+ limit?: number;
46
+ }): Promise<MastraMemoryMessage[]>;
47
+ saveMessage(input: {
48
+ threadId: string;
49
+ role: "user" | "assistant" | "system";
50
+ content: string;
51
+ metadata?: Record<string, unknown>;
52
+ }): Promise<MastraMemoryMessage>;
53
+ deleteThread(threadId: string): Promise<void>;
54
+ }
55
+
56
+ export { type MastraMemoryMessage, type MastraThread, Neo4jMastraMemory };
@@ -0,0 +1,65 @@
1
+ import { NotSupportedError } from '../chunk-ASQMU7YC.js';
2
+
3
+ // src/integrations/mastra.ts
4
+ var Neo4jMastraMemory = class {
5
+ constructor(client) {
6
+ this.client = client;
7
+ }
8
+ /** Create a new thread (Mastra term) — backed by createConversation on REST. */
9
+ async createThread(input) {
10
+ try {
11
+ const conv = await this.client.shortTerm.createConversation({
12
+ userId: input.resourceId,
13
+ metadata: { ...input.metadata, mastraTitle: input.title }
14
+ });
15
+ return {
16
+ id: conv.id,
17
+ resourceId: input.resourceId,
18
+ title: input.title,
19
+ metadata: conv.metadata
20
+ };
21
+ } catch (err) {
22
+ if (err instanceof NotSupportedError) {
23
+ return { id: input.resourceId, resourceId: input.resourceId, title: input.title };
24
+ }
25
+ throw err;
26
+ }
27
+ }
28
+ async getMessages(threadId, opts) {
29
+ const conv = await this.client.shortTerm.getConversation(threadId, { limit: opts?.limit });
30
+ return conv.messages.map((m) => ({
31
+ id: m.id,
32
+ threadId,
33
+ role: m.role,
34
+ content: m.content,
35
+ createdAt: m.timestamp
36
+ }));
37
+ }
38
+ async saveMessage(input) {
39
+ const m = await this.client.shortTerm.addMessage(input.threadId, input.role, input.content, {
40
+ metadata: input.metadata
41
+ });
42
+ return {
43
+ id: m.id,
44
+ threadId: input.threadId,
45
+ role: m.role,
46
+ content: m.content,
47
+ createdAt: m.timestamp
48
+ };
49
+ }
50
+ async deleteThread(threadId) {
51
+ try {
52
+ await this.client.shortTerm.deleteConversation(threadId);
53
+ } catch (err) {
54
+ if (err instanceof NotSupportedError) {
55
+ await this.client.shortTerm.clearSession(threadId);
56
+ return;
57
+ }
58
+ throw err;
59
+ }
60
+ }
61
+ };
62
+
63
+ export { Neo4jMastraMemory };
64
+ //# sourceMappingURL=mastra.js.map
65
+ //# sourceMappingURL=mastra.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/integrations/mastra.ts"],"names":[],"mappings":";;;AAoCO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,YAA6B,MAAA,EAAsB;AAAtB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAAuB;AAAA;AAAA,EAGpD,MAAM,aAAa,KAAA,EAIO;AACxB,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,MAAA,CAAO,UAAU,kBAAA,CAAmB;AAAA,QAC1D,QAAQ,KAAA,CAAM,UAAA;AAAA,QACd,UAAU,EAAE,GAAG,MAAM,QAAA,EAAU,WAAA,EAAa,MAAM,KAAA;AAAM,OACzD,CAAA;AACD,MAAA,OAAO;AAAA,QACL,IAAI,IAAA,CAAK,EAAA;AAAA,QACT,YAAY,KAAA,CAAM,UAAA;AAAA,QAClB,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAU,IAAA,CAAK;AAAA,OACjB;AAAA,IACF,SAAS,GAAA,EAAK;AACZ,MAAA,IAAI,eAAe,iBAAA,EAAmB;AAEpC,QAAA,OAAO,EAAE,IAAI,KAAA,CAAM,UAAA,EAAY,YAAY,KAAA,CAAM,UAAA,EAAY,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM;AAAA,MAClF;AACA,MAAA,MAAM,GAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,WAAA,CAAY,QAAA,EAAkB,IAAA,EAA2D;AAC7F,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,eAAA,CAAgB,QAAA,EAAU,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,CAAA;AACzF,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MAC/B,IAAI,CAAA,CAAE,EAAA;AAAA,MACN,QAAA;AAAA,MACA,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,SAAS,CAAA,CAAE,OAAA;AAAA,MACX,WAAW,CAAA,CAAE;AAAA,KACf,CAAE,CAAA;AAAA,EACJ;AAAA,EAEA,MAAM,YAAY,KAAA,EAKe;AAC/B,IAAA,MAAM,CAAA,GAAI,MAAM,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,UAAA,CAAW,KAAA,CAAM,QAAA,EAAU,KAAA,CAAM,IAAA,EAAM,KAAA,CAAM,OAAA,EAAS;AAAA,MAC1F,UAAU,KAAA,CAAM;AAAA,KACjB,CAAA;AACD,IAAA,OAAO;AAAA,MACL,IAAI,CAAA,CAAE,EAAA;AAAA,MACN,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,SAAS,CAAA,CAAE,OAAA;AAAA,MACX,WAAW,CAAA,CAAE;AAAA,KACf;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,QAAA,EAAiC;AAClD,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,kBAAA,CAAmB,QAAQ,CAAA;AAAA,IACzD,SAAS,GAAA,EAAK;AACZ,MAAA,IAAI,eAAe,iBAAA,EAAmB;AACpC,QAAA,MAAM,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,YAAA,CAAa,QAAQ,CAAA;AACjD,QAAA;AAAA,MACF;AACA,MAAA,MAAM,GAAA;AAAA,IACR;AAAA,EACF;AACF","file":"mastra.js","sourcesContent":["/**\n * Mastra integration — wraps `MemoryClient` as a Mastra-compatible memory\n * provider. Mastra's `Memory` interface is duck-typed here to avoid a hard\n * dependency on `@mastra/core`.\n *\n * @example\n * ```ts\n * import { MemoryClient } from \"@neo4j-labs/agent-memory\";\n * import { Neo4jMastraMemory } from \"@neo4j-labs/agent-memory/integrations/mastra\";\n * import { Agent } from \"@mastra/core/agent\";\n *\n * const client = new MemoryClient({ endpoint: \"...\", apiKey: \"...\" });\n * const memory = new Neo4jMastraMemory(client);\n *\n * const agent = new Agent({ name: \"scout\", memory });\n * ```\n */\n\nimport type { MemoryClient } from \"../client.js\";\nimport { NotSupportedError } from \"../errors.js\";\n\nexport interface MastraThread {\n id: string;\n resourceId: string;\n title?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface MastraMemoryMessage {\n id: string;\n threadId: string;\n role: \"user\" | \"assistant\" | \"system\";\n content: string;\n createdAt: string;\n}\n\nexport class Neo4jMastraMemory {\n constructor(private readonly client: MemoryClient) {}\n\n /** Create a new thread (Mastra term) — backed by createConversation on REST. */\n async createThread(input: {\n resourceId: string;\n title?: string;\n metadata?: Record<string, unknown>;\n }): Promise<MastraThread> {\n try {\n const conv = await this.client.shortTerm.createConversation({\n userId: input.resourceId,\n metadata: { ...input.metadata, mastraTitle: input.title },\n });\n return {\n id: conv.id,\n resourceId: input.resourceId,\n title: input.title,\n metadata: conv.metadata,\n };\n } catch (err) {\n if (err instanceof NotSupportedError) {\n // Bridge transport: thread id == sessionId from the caller.\n return { id: input.resourceId, resourceId: input.resourceId, title: input.title };\n }\n throw err;\n }\n }\n\n async getMessages(threadId: string, opts?: { limit?: number }): Promise<MastraMemoryMessage[]> {\n const conv = await this.client.shortTerm.getConversation(threadId, { limit: opts?.limit });\n return conv.messages.map((m) => ({\n id: m.id,\n threadId,\n role: m.role,\n content: m.content,\n createdAt: m.timestamp,\n }));\n }\n\n async saveMessage(input: {\n threadId: string;\n role: \"user\" | \"assistant\" | \"system\";\n content: string;\n metadata?: Record<string, unknown>;\n }): Promise<MastraMemoryMessage> {\n const m = await this.client.shortTerm.addMessage(input.threadId, input.role, input.content, {\n metadata: input.metadata,\n });\n return {\n id: m.id,\n threadId: input.threadId,\n role: m.role,\n content: m.content,\n createdAt: m.timestamp,\n };\n }\n\n async deleteThread(threadId: string): Promise<void> {\n try {\n await this.client.shortTerm.deleteConversation(threadId);\n } catch (err) {\n if (err instanceof NotSupportedError) {\n await this.client.shortTerm.clearSession(threadId);\n return;\n }\n throw err;\n }\n }\n}\n"]}