@neo4j-labs/agent-memory 0.3.0 → 0.4.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.
package/dist/index.js.map CHANGED
@@ -1 +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"]}
1
+ {"version":3,"sources":["../src/auth/index.ts","../src/long-term/index.ts","../src/ontology/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":["fetch","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 { ValidationError } from \"../errors.js\";\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 WaitForExtractionOptions,\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 /**\n * Poll entity search until async extraction has caught up, or time out.\n *\n * NAMS extracts entities in a background pipeline, so writes return before\n * the entities are searchable. This helper lets application and test code\n * await consistency explicitly instead of racing a fixed delay.\n *\n * Provide one of:\n * - `predicate` — called with the current results; return true when satisfied.\n * - `expectedNames` — succeed once every name appears (case-insensitive).\n * **Recommended**: NAMS entity search is vector/nearest-neighbor, so a\n * `minResults` threshold is satisfied almost immediately on a non-empty\n * workspace; prefer `expectedNames`/`predicate` to confirm a *specific*\n * extraction landed.\n * - otherwise — succeed once at least `minResults` entities match.\n *\n * Returns `true` if satisfied within `timeoutMs`, `false` otherwise (it does\n * not throw, so callers can branch or skip gracefully).\n */\n async waitForExtraction(options: WaitForExtractionOptions): Promise<boolean> {\n const {\n query,\n expectedNames,\n minResults = 1,\n predicate,\n timeoutMs = 30_000,\n intervalMs = 1_000,\n } = options;\n const q = query ?? (expectedNames && expectedNames.length > 0 ? expectedNames[0] : undefined);\n if (q === undefined && predicate === undefined) {\n throw new ValidationError(\n \"waitForExtraction requires one of: query, expectedNames, or predicate.\",\n );\n }\n const want = (expectedNames ?? []).map((n) => n.toLowerCase());\n const fetch = Math.max(minResults, want.length, options.limit ?? 10);\n const deadline = Date.now() + timeoutMs;\n for (;;) {\n const results = await this.searchEntities(q ?? \"\", { limit: fetch });\n let ok: boolean;\n if (predicate !== undefined) {\n ok = predicate(results);\n } else if (want.length > 0) {\n const found = new Set(results.map((e) => e.name.toLowerCase()));\n ok = want.every((n) => found.has(n));\n } else {\n ok = results.length >= minResults;\n }\n if (ok) return true;\n if (Date.now() >= deadline) return false;\n await new Promise((r) => setTimeout(r, intervalMs));\n }\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 * NAMS ontology surface — typed, versioned, validated domain schemas\n * extending POLE+O. Mirrors the Python `client.ontology` accessor.\n *\n * The ontology endpoints are a snake_case sub-API verified empirically against\n * staging (absent from the OpenAPI spec). The `RestTransport` routes for these\n * (`*_ontology`) send bodies verbatim via the `snakeBody` flag.\n *\n * GET /ontologies → list (summaries)\n * GET /ontologies/{id} → { record, versions[] }\n * GET /ontologies/active → { ontology, version }\n * POST /ontologies/{name}/clone → version\n * POST /ontologies { ontology, validation_mode? } → version\n * PUT /ontologies/{id} { ontology, validation_mode? } → new revision\n * POST /ontologies/active { version_id } → version\n * DELETE /ontologies/{id} → 204\n */\n\nimport { NotSupportedError } from \"../errors.js\";\nimport type { Transport } from \"../transport/index.js\";\n\nexport interface PropertyDef {\n name: string;\n type: string; // string | datetime | date | float | integer\n required?: boolean;\n unique?: boolean;\n enum?: string[];\n}\n\nexport interface EntityTypeDef {\n label: string;\n poleType: string; // PERSON | ORGANIZATION | LOCATION | EVENT | OBJECT\n subtype?: string;\n color?: string;\n icon?: string;\n properties: PropertyDef[];\n}\n\nexport interface RelationshipDef {\n type: string;\n source: string;\n target: string;\n}\n\nexport interface DomainInfo {\n id: string;\n name: string;\n description?: string;\n tagline?: string;\n emoji?: string;\n}\n\nexport interface OntologyDocument {\n domain: DomainInfo;\n entityTypes: EntityTypeDef[];\n relationships: RelationshipDef[];\n}\n\nexport interface OntologySummary {\n id: string;\n name: string;\n displayName?: string;\n description?: string;\n emoji?: string;\n tagline?: string;\n isSystem: boolean;\n currentRevision?: number;\n isActive: boolean;\n}\n\nexport interface OntologyVersion {\n id: string;\n ontologyId: string;\n revision: number;\n validationMode: string; // permissive | strict\n document?: OntologyDocument;\n schemaHash?: string;\n createdAt?: string;\n message?: string;\n}\n\nexport interface OntologyRecord {\n id: string;\n name: string;\n description?: string;\n workspaceId?: string;\n isSystem: boolean;\n createdAt?: string;\n}\n\nexport interface Ontology {\n record: OntologyRecord;\n versions: OntologyVersion[];\n}\n\nexport interface ActiveOntology {\n document: OntologyDocument;\n validationMode?: string;\n revision?: number;\n ontologyId?: string;\n versionId?: string;\n}\n\nexport interface CreateOntologyOptions {\n /** Identity comes from `schema.domain`; `name` is accepted for symmetry. */\n name: string;\n schema: OntologyDocument;\n validationMode?: string;\n}\n\nexport interface UpdateOntologyOptions {\n id: string;\n schema: OntologyDocument;\n validationMode?: string;\n}\n\n// ---- snake_case wire shapes (responses are snake_case) ----------------------\n\ninterface WireProperty {\n name: string;\n type: string;\n required?: boolean;\n unique?: boolean;\n enum?: string[] | null;\n}\ninterface WireEntityType {\n label: string;\n pole_type: string;\n subtype?: string;\n color?: string;\n icon?: string;\n properties?: WireProperty[] | null;\n}\ninterface WireRelationship {\n type: string;\n source: string;\n target: string;\n}\ninterface WireDocument {\n domain: DomainInfo;\n entity_types?: WireEntityType[] | null;\n relationships?: WireRelationship[] | null;\n}\ninterface WireVersion {\n id: string;\n ontology_id: string;\n revision: number;\n validation_mode: string;\n schema_json?: string | null;\n schema_hash?: string;\n created_at?: string;\n message?: string;\n}\ninterface WireSummary {\n id: string;\n name: string;\n display_name?: string;\n description?: string;\n emoji?: string;\n tagline?: string;\n is_system?: boolean;\n current_revision?: number;\n is_active?: boolean;\n}\ninterface WireRecord {\n id: string;\n name: string;\n description?: string;\n workspace_id?: string;\n is_system?: boolean;\n created_at?: string;\n}\n\nfunction toDocument(raw: WireDocument | null | undefined): OntologyDocument | undefined {\n if (!raw || typeof raw !== \"object\" || !raw.domain) return undefined;\n return {\n domain: raw.domain,\n entityTypes: (raw.entity_types ?? []).map((e) => ({\n label: e.label,\n poleType: e.pole_type,\n subtype: e.subtype,\n color: e.color,\n icon: e.icon,\n properties: (e.properties ?? []).map((p) => ({\n name: p.name,\n type: p.type,\n required: p.required,\n unique: p.unique,\n enum: p.enum ?? undefined,\n })),\n })),\n relationships: raw.relationships ?? [],\n };\n}\n\nfunction toDocumentFromJson(schemaJson: string | null | undefined): OntologyDocument | undefined {\n if (schemaJson == null) return undefined;\n try {\n return toDocument(JSON.parse(schemaJson) as WireDocument);\n } catch {\n return undefined;\n }\n}\n\nfunction toVersion(raw: WireVersion): OntologyVersion {\n return {\n id: raw.id,\n ontologyId: raw.ontology_id,\n revision: raw.revision,\n validationMode: raw.validation_mode,\n document: toDocumentFromJson(raw.schema_json),\n schemaHash: raw.schema_hash,\n createdAt: raw.created_at,\n message: raw.message,\n };\n}\n\nfunction toSummary(raw: WireSummary): OntologySummary {\n return {\n id: raw.id,\n name: raw.name,\n displayName: raw.display_name,\n description: raw.description,\n emoji: raw.emoji,\n tagline: raw.tagline,\n isSystem: raw.is_system ?? false,\n currentRevision: raw.current_revision,\n isActive: raw.is_active ?? false,\n };\n}\n\nfunction docToWire(doc: OntologyDocument): WireDocument {\n return {\n domain: doc.domain,\n entity_types: doc.entityTypes.map((e) => ({\n label: e.label,\n pole_type: e.poleType,\n subtype: e.subtype,\n color: e.color,\n icon: e.icon,\n properties: (e.properties ?? []).map((p) => ({\n name: p.name,\n type: p.type,\n required: p.required,\n unique: p.unique,\n enum: p.enum,\n })),\n })),\n relationships: doc.relationships,\n };\n}\n\nexport class OntologyClient {\n constructor(private readonly transport: Transport) {}\n\n async list(): Promise<OntologySummary[]> {\n const raw = await this.transport.request<{ ontologies?: WireSummary[] }>(\n \"list_ontologies\",\n {},\n );\n return (raw.ontologies ?? []).map(toSummary);\n }\n\n async get(id: string): Promise<Ontology> {\n const raw = await this.transport.request<{ record: WireRecord; versions?: WireVersion[] }>(\n \"get_ontology\",\n { id },\n );\n const r = raw.record ?? ({} as WireRecord);\n return {\n record: {\n id: r.id,\n name: r.name,\n description: r.description,\n workspaceId: r.workspace_id,\n isSystem: r.is_system ?? false,\n createdAt: r.created_at,\n },\n versions: (raw.versions ?? []).map(toVersion),\n };\n }\n\n async getActive(): Promise<ActiveOntology> {\n const raw = await this.transport.request<{ ontology?: WireDocument }>(\n \"get_active_ontology\",\n {},\n );\n const document = toDocument(raw.ontology);\n if (!document) {\n throw new NotSupportedError(\"No active ontology bound for this workspace.\");\n }\n const active: ActiveOntology = { document };\n // Compose version metadata via a second lookup (the active response carries\n // no version metadata).\n const summaries = await this.list();\n const match =\n summaries.find((s) => s.isActive) ??\n summaries.find((s) => s.name === document.domain.id);\n if (match) {\n active.ontologyId = match.id;\n const detail = await this.get(match.id);\n const current = currentVersion(detail, match.currentRevision);\n if (current) {\n active.validationMode = current.validationMode;\n active.revision = current.revision;\n active.versionId = current.id;\n }\n }\n return active;\n }\n\n async clone(templateName: string): Promise<OntologyVersion> {\n const raw = await this.transport.request<WireVersion>(\"clone_ontology\", { name: templateName });\n return toVersion(raw);\n }\n\n async create(options: CreateOntologyOptions): Promise<OntologyVersion> {\n const body: Record<string, unknown> = { ontology: docToWire(options.schema) };\n if (options.validationMode !== undefined) body.validation_mode = options.validationMode;\n const raw = await this.transport.request<WireVersion>(\"create_ontology\", { body });\n return toVersion(raw);\n }\n\n async update(options: UpdateOntologyOptions): Promise<OntologyVersion> {\n const body: Record<string, unknown> = { ontology: docToWire(options.schema) };\n if (options.validationMode !== undefined) body.validation_mode = options.validationMode;\n const raw = await this.transport.request<WireVersion>(\"update_ontology\", {\n id: options.id,\n body,\n });\n return toVersion(raw);\n }\n\n async activate(versionId: string): Promise<OntologyVersion> {\n const raw = await this.transport.request<WireVersion>(\"activate_ontology\", {\n body: { version_id: versionId },\n });\n return toVersion(raw);\n }\n\n async delete(id: string): Promise<void> {\n await this.transport.request(\"delete_ontology\", { id });\n }\n}\n\nfunction currentVersion(ontology: Ontology, revision?: number): OntologyVersion | undefined {\n if (ontology.versions.length === 0) return undefined;\n if (revision !== undefined) {\n const exact = ontology.versions.find((v) => v.revision === revision);\n if (exact) return exact;\n }\n return ontology.versions.reduce((a, b) => (b.revision > a.revision ? b : a));\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 { ValidationError } from \"../errors.js\";\nimport type { Transport } from \"../transport/index.js\";\nimport type {\n AddMessageOptions,\n BulkMessageInput,\n ClearSessionOptions,\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/**\n * Resolve the conversation/session id for a NAMS-scoped short-term call.\n * `sessionId` is canonical; `conversationId` is an alias. `sessionId` wins when\n * both are supplied; a clear error names both when neither is.\n */\nfunction resolveConversationId(\n sessionId: string | undefined,\n conversationId: string | undefined,\n method: string,\n): string {\n const resolved = sessionId ?? conversationId;\n if (resolved === undefined) {\n throw new ValidationError(\n `${method} requires sessionId (alias: conversationId) — the NAMS API is ` +\n `conversation-scoped.`,\n );\n }\n return resolved;\n}\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 | undefined,\n role: MessageRole,\n content: string,\n options?: AddMessageOptions,\n ): Promise<Message> {\n const conv = resolveConversationId(sessionId, options?.conversationId, \"addMessage\");\n const wire = await this.transport.request<WireMessage>(\"add_message\", {\n session_id: conv,\n role,\n content,\n metadata: options?.metadata,\n });\n return toMessage(wire);\n }\n\n async getConversation(\n sessionId: string | undefined,\n options?: GetConversationOptions,\n ): Promise<Conversation> {\n const conv = resolveConversationId(sessionId, options?.conversationId, \"getConversation\");\n const wire = await this.transport.request<WireConversation>(\"get_conversation\", {\n session_id: conv,\n limit: options?.limit,\n });\n return toConversation(wire);\n }\n\n async searchMessages(query: string, options?: SearchMessagesOptions): Promise<Message[]> {\n // `sessionId` is canonical, `conversationId` an alias (sessionId wins).\n // Unlike the conversation-mutating methods, search may be unscoped on the\n // bridge/TCK backend, so an absent id is passed through (NAMS rejects it\n // server-side) rather than throwing client-side.\n const conv = options?.sessionId ?? options?.conversationId;\n const wire = await this.transport.request<WireMessage[]>(\"search_messages\", {\n query,\n session_id: conv,\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(\n sessionId: string | undefined,\n options?: ClearSessionOptions,\n ): Promise<void> {\n const conv = resolveConversationId(sessionId, options?.conversationId, \"clearSession\");\n await this.transport.request(\"clear_session\", { session_id: conv });\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 /**\n * Send the verbatim object passed as the `body` param as the request body,\n * bypassing the snake→camel key conversion. Required for the ontology\n * sub-API, which (unlike the rest of the hosted REST surface) speaks\n * snake_case for request bodies (`entity_types`, `version_id`, …).\n */\n snakeBody?: 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 // Ontologies — snake_case sub-API (verified against staging; absent from the\n // OpenAPI spec). Bodies are sent verbatim via `snakeBody`.\n list_ontologies: { method: \"GET\", path: \"/ontologies\" },\n get_ontology: { method: \"GET\", path: \"/ontologies/{id}\", pathParams: [\"id\"] },\n get_active_ontology: { method: \"GET\", path: \"/ontologies/active\" },\n clone_ontology: {\n method: \"POST\",\n path: \"/ontologies/{name}/clone\",\n pathParams: [\"name\"],\n },\n create_ontology: { method: \"POST\", path: \"/ontologies\", hasBody: true, snakeBody: true },\n update_ontology: {\n method: \"PUT\",\n path: \"/ontologies/{id}\",\n pathParams: [\"id\"],\n hasBody: true,\n snakeBody: true,\n },\n activate_ontology: {\n method: \"POST\",\n path: \"/ontologies/active\",\n hasBody: true,\n snakeBody: true,\n },\n delete_ontology: { method: \"DELETE\", path: \"/ontologies/{id}\", pathParams: [\"id\"] },\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 if (route.snakeBody) {\n // Send the caller-supplied `body` object verbatim (snake_case).\n body = JSON.stringify((original as { body?: unknown }).body ?? {});\n } else {\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\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 { OntologyClient } from \"./ontology/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 /** Ontology lifecycle — typed domain schemas (hosted service only). */\n readonly ontology: OntologyClient;\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 this.ontology = new OntologyClient(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\n/**\n * Resolve the workspace id from explicit option or MEMORY_WORKSPACE_ID env var.\n * Mirrors {@link resolveApiKey}.\n */\nfunction resolveWorkspaceId(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_WORKSPACE_ID;\n}\n\n/**\n * Merge the `X-Workspace-Id` header into a headers map. An explicit\n * `X-Workspace-Id` entry (any casing) in `headers` wins — the documented\n * escape hatch — so the workspace id only fills the gap.\n */\nfunction withWorkspaceHeader(\n headers: Record<string, string> | undefined,\n workspaceId: string | undefined,\n): Record<string, string> | undefined {\n if (!workspaceId) return headers;\n const hasExplicit =\n headers !== undefined &&\n Object.keys(headers).some((k) => k.toLowerCase() === \"x-workspace-id\");\n if (hasExplicit) return headers;\n return { ...(headers ?? {}), \"X-Workspace-Id\": workspaceId };\n}\n\nfunction createTransport(options: MemoryClientOptions): Transport {\n const endpoint = options.endpoint;\n const apiKey = resolveApiKey(options.apiKey);\n const workspaceId = resolveWorkspaceId(options.workspaceId);\n const headers = withWorkspaceHeader(options.headers, workspaceId);\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,\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,\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"]}
@@ -1,4 +1,4 @@
1
- import { M as MemoryClient } from '../client-DSqbWQoa.js';
1
+ import { O as MemoryClient } from '../client-DV-lnohj.js';
2
2
  import '../index-qfRrdQNP.js';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { M as MemoryClient } from '../client-DSqbWQoa.js';
1
+ import { O as MemoryClient } from '../client-DV-lnohj.js';
2
2
  import '../index-qfRrdQNP.js';
3
3
 
4
4
  /**
@@ -1,5 +1,5 @@
1
1
  import { SessionManager, ConversationManager, ConversationManagerReduceOptions, LocalAgent, SnapshotStorage, SnapshotLocation, Snapshot, SnapshotManifest } from '@strands-agents/sdk';
2
- import { M as MemoryClient } from '../client-DSqbWQoa.js';
2
+ import { O as MemoryClient } from '../client-DV-lnohj.js';
3
3
  import '../index-qfRrdQNP.js';
4
4
 
5
5
  /**
@@ -1,4 +1,4 @@
1
- import { M as MemoryClient } from '../client-DSqbWQoa.js';
1
+ import { O as MemoryClient } from '../client-DV-lnohj.js';
2
2
  import '../index-qfRrdQNP.js';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { M as MemoryClient } from '../client-DSqbWQoa.js';
1
+ import { O as MemoryClient } from '../client-DV-lnohj.js';
2
2
  import '../index-qfRrdQNP.js';
3
3
 
4
4
  /**
package/dist/testing.js CHANGED
@@ -1,4 +1,4 @@
1
- export { BridgeTransport } from './chunk-TGBKROHO.js';
1
+ export { BridgeTransport } from './chunk-E752ALCR.js';
2
2
  import './chunk-ASQMU7YC.js';
3
3
  //# sourceMappingURL=testing.js.map
4
4
  //# sourceMappingURL=testing.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neo4j-labs/agent-memory",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Neo4j Labs: TypeScript client for the Neo4j Agent Memory Service (NAMS)",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",