@indexnetwork/protocol 3.6.3-rc.271.1 → 3.6.3-rc.272.1

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.
Files changed (76) hide show
  1. package/dist/agent/tests/fakes.d.ts.map +1 -1
  2. package/dist/agent/tests/fakes.js.map +1 -1
  3. package/dist/chat/chat.agent.d.ts.map +1 -1
  4. package/dist/chat/chat.agent.js +3 -3
  5. package/dist/chat/chat.agent.js.map +1 -1
  6. package/dist/chat/chat.streamer.d.ts.map +1 -1
  7. package/dist/chat/chat.streamer.js +1 -1
  8. package/dist/chat/chat.streamer.js.map +1 -1
  9. package/dist/chat/chat.summarizer.d.ts.map +1 -1
  10. package/dist/chat/chat.summarizer.js +1 -1
  11. package/dist/chat/chat.summarizer.js.map +1 -1
  12. package/dist/chat/tests/chat.graph.mocks.d.ts.map +1 -1
  13. package/dist/chat/tests/chat.graph.mocks.js +0 -1
  14. package/dist/chat/tests/chat.graph.mocks.js.map +1 -1
  15. package/dist/index.d.ts +21 -21
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +10 -10
  18. package/dist/index.js.map +1 -1
  19. package/dist/intent/intent.graph.js +1 -1
  20. package/dist/intent/intent.graph.js.map +1 -1
  21. package/dist/maintenance/maintenance.graph.d.ts.map +1 -1
  22. package/dist/maintenance/maintenance.graph.js +1 -1
  23. package/dist/maintenance/maintenance.graph.js.map +1 -1
  24. package/dist/negotiation/negotiation.agent.d.ts.map +1 -1
  25. package/dist/negotiation/negotiation.agent.js +1 -1
  26. package/dist/negotiation/negotiation.agent.js.map +1 -1
  27. package/dist/negotiation/negotiation.summarizer.d.ts.map +1 -1
  28. package/dist/negotiation/negotiation.summarizer.js +1 -1
  29. package/dist/negotiation/negotiation.summarizer.js.map +1 -1
  30. package/dist/network/indexer/indexer.graph.d.ts.map +1 -1
  31. package/dist/network/indexer/indexer.graph.js +2 -2
  32. package/dist/network/indexer/indexer.graph.js.map +1 -1
  33. package/dist/opportunity/discovery-question.helper.d.ts.map +1 -1
  34. package/dist/opportunity/discovery-question.helper.js.map +1 -1
  35. package/dist/opportunity/feed/feed.graph.d.ts.map +1 -1
  36. package/dist/opportunity/feed/feed.graph.js +1 -1
  37. package/dist/opportunity/feed/feed.graph.js.map +1 -1
  38. package/dist/opportunity/negotiation-summary.builder.d.ts.map +1 -1
  39. package/dist/opportunity/negotiation-summary.builder.js.map +1 -1
  40. package/dist/opportunity/opportunity.discover.d.ts.map +1 -1
  41. package/dist/opportunity/opportunity.discover.js +1 -1
  42. package/dist/opportunity/opportunity.discover.js.map +1 -1
  43. package/dist/opportunity/opportunity.enricher.d.ts.map +1 -1
  44. package/dist/opportunity/opportunity.enricher.js.map +1 -1
  45. package/dist/opportunity/opportunity.graph.d.ts.map +1 -1
  46. package/dist/opportunity/opportunity.graph.js +5 -5
  47. package/dist/opportunity/opportunity.graph.js.map +1 -1
  48. package/dist/opportunity/opportunity.persist.d.ts.map +1 -1
  49. package/dist/opportunity/opportunity.persist.js.map +1 -1
  50. package/dist/opportunity/question.generator.d.ts.map +1 -1
  51. package/dist/opportunity/question.generator.js +2 -2
  52. package/dist/opportunity/question.generator.js.map +1 -1
  53. package/dist/premise/premise.graph.d.ts.map +1 -1
  54. package/dist/premise/premise.graph.js +1 -1
  55. package/dist/premise/premise.graph.js.map +1 -1
  56. package/dist/profile/profile.graph.js +1 -1
  57. package/dist/profile/profile.graph.js.map +1 -1
  58. package/dist/questioner/questioner.agent.d.ts.map +1 -1
  59. package/dist/questioner/questioner.agent.js +1 -1
  60. package/dist/questioner/questioner.agent.js.map +1 -1
  61. package/dist/questioner/questioner.presets.d.ts.map +1 -1
  62. package/dist/questioner/questioner.presets.js +1 -1
  63. package/dist/questioner/questioner.presets.js.map +1 -1
  64. package/dist/shared/agent/response.streamer.d.ts.map +1 -1
  65. package/dist/shared/agent/response.streamer.js +1 -1
  66. package/dist/shared/agent/response.streamer.js.map +1 -1
  67. package/dist/shared/agent/tool.factory.d.ts.map +1 -1
  68. package/dist/shared/agent/tool.factory.js +1 -1
  69. package/dist/shared/agent/tool.factory.js.map +1 -1
  70. package/dist/shared/agent/tool.helpers.d.ts.map +1 -1
  71. package/dist/shared/agent/tool.helpers.js.map +1 -1
  72. package/dist/shared/assignment/network-assignment.policy.d.ts.map +1 -1
  73. package/dist/shared/assignment/network-assignment.policy.js.map +1 -1
  74. package/dist/shared/interfaces/questioner.interface.d.ts.map +1 -1
  75. package/dist/shared/interfaces/questioner.interface.js.map +1 -1
  76. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"chat.streamer.js","sourceRoot":"/","sources":["chat/chat.streamer.ts"],"names":[],"mappings":"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","sourcesContent":["import { AIMessage, BaseMessage, HumanMessage } from \"@langchain/core/messages\";\nimport { BaseCheckpointSaver } from \"@langchain/langgraph\";\nimport { protocolLogger } from \"../shared/observability/protocol.logger.js\";\nimport type {\n ChatStreamEvent,\n DebugMetaDiscoveryQuestions,\n DebugMetaToolCall,\n DebugMetaLlm,\n DebugMetaOrchestratorNegotiations,\n} from \"./chat-streaming.types.js\";\nimport {\n createAgentEndEvent,\n createAgentStartEvent,\n createDebugMetaEvent,\n createDecisionQuestionsEvent,\n createErrorEvent,\n createGraphEndEvent,\n createPhaseStartEvent,\n createPhaseEndEvent,\n createGraphStartEvent,\n createIterationStartEvent,\n createLlmStartEvent,\n createLlmEndEvent,\n createResponseCompleteEvent,\n createResponseResetEvent,\n createHallucinationDetectedEvent,\n createStatusEvent,\n createTokenEvent,\n createToolActivityEvent,\n createChatSummarizerStartEvent,\n createChatSummarizerEndEvent,\n createQuestionGeneratorStartEvent,\n createQuestionGeneratorEndEvent,\n} from \"./chat-streaming.types.js\";\nimport type { AgentStreamEvent } from \"./chat.agent.js\";\n\nconst logger = protocolLogger(\"ChatStreamer\");\n\n// ══════════════════════════════════════════════════════════════════════════════\n// CHAT STREAMER (Streaming Narration Architecture)\n// ══════════════════════════════════════════════════════════════════════════════\n\n/**\n * Top-level streaming service for Chat Graph events.\n *\n * Uses `graph.stream()` with `streamMode: [\"custom\", \"updates\"]` so that\n * the agent's `config.writer()` calls arrive as `\"custom\"` chunks (text\n * tokens and tool-activity events) and the final state update arrives as\n * an `\"updates\"` chunk.\n */\nexport class ChatStreamer {\n constructor(\n private loadSessionContext: (\n sessionId: string,\n maxMessages: number,\n ) => Promise<BaseMessage[]>,\n private createStreamingGraph: (\n checkpointer?: BaseCheckpointSaver,\n ) => any,\n ) {}\n\n /**\n * Streams chat events with full session context.\n * Loads previous conversation history and optionally uses a checkpointer\n * for state persistence.\n *\n * @param input - Configuration for context-aware streaming\n * @param checkpointer - Optional checkpointer for state persistence\n * @yields ChatStreamEvent objects\n */\n public async *streamChatEventsWithContext(\n input: {\n userId: string;\n message: string;\n sessionId: string;\n maxContextMessages?: number;\n networkId?: string;\n prefillMessages?: Array<{ role: \"assistant\" | \"user\"; content: string }>;\n /** Per-run identifier used to form a composite LangGraph thread_id (sessionId:runId).\n * When provided, prevents stale checkpoint state from a prior run being resumed.\n * Defaults to sessionId alone when absent (backward compatible). */\n runId?: string;\n },\n checkpointer?: BaseCheckpointSaver,\n signal?: AbortSignal,\n ): AsyncGenerator<ChatStreamEvent> {\n const {\n userId,\n message,\n sessionId,\n maxContextMessages = 20,\n networkId,\n prefillMessages,\n runId,\n } = input;\n logger.verbose(\"Starting context-aware streaming\", {\n userId,\n sessionId,\n maxContextMessages,\n hasCheckpointer: !!checkpointer,\n hasIndexId: !!networkId,\n networkId: networkId ?? undefined,\n });\n\n try {\n // Load previous conversation context\n const previousMessages = await this.loadSessionContext(\n sessionId,\n maxContextMessages,\n );\n\n // Inject prefill messages (e.g. hardcoded onboarding greeting) only for fresh sessions\n const prefill: BaseMessage[] = previousMessages.length === 0\n ? (prefillMessages ?? []).map((pm) =>\n pm.role === \"assistant\" ? new AIMessage(pm.content) : new HumanMessage(pm.content),\n )\n : [];\n\n const allMessages = [...previousMessages, ...prefill, new HumanMessage(message)];\n\n logger.verbose(\"Context prepared\", {\n previousCount: previousMessages.length,\n totalCount: allMessages.length,\n });\n\n // Form composite thread_id when a runId is provided\n const threadId = runId ? `${sessionId}:${runId}` : sessionId;\n\n // Stream with context using the optional checkpointer\n yield* this.streamChatEvents(\n { userId, messages: allMessages, networkId },\n sessionId,\n checkpointer,\n signal,\n threadId,\n );\n } catch (error) {\n logger.error(\"Stream error\", {\n error: error instanceof Error ? error.message : String(error),\n });\n yield createErrorEvent(\n sessionId,\n error instanceof Error\n ? error.message\n : \"Unknown error during context-aware streaming\",\n \"CONTEXT_STREAM_ERROR\",\n );\n }\n }\n\n /**\n * Streams chat events from the graph execution.\n *\n * Uses `graph.stream()` with `streamMode: [\"custom\", \"updates\"]`:\n * - `\"custom\"` chunks carry {@link AgentStreamEvent} objects emitted by\n * `ChatAgent.streamRun()` via `config.writer()`\n * - `\"updates\"` chunks carry the final state update from `agentLoopNode`\n *\n * @param input - The input state for the graph (userId and messages)\n * @param sessionId - The session ID for event attribution\n * @param checkpointer - Optional checkpointer for persistence\n * @yields ChatStreamEvent objects\n */\n public async *streamChatEvents(\n input: { userId: string; messages: BaseMessage[]; networkId?: string },\n sessionId: string,\n checkpointer?: BaseCheckpointSaver,\n signal?: AbortSignal,\n threadId?: string,\n ): AsyncGenerator<ChatStreamEvent> {\n const graph = this.createStreamingGraph(checkpointer);\n\n try {\n const initialState: {\n userId: string;\n messages: BaseMessage[];\n networkId?: string;\n sessionId?: string;\n } = {\n userId: input.userId,\n messages: input.messages,\n };\n if (input.networkId) initialState.networkId = input.networkId;\n initialState.sessionId = sessionId;\n\n // Use graph.stream() with custom + updates modes.\n // Custom events come from config.writer() inside agentLoopNode.\n const eventStream = await graph.stream(initialState, {\n streamMode: [\"custom\", \"updates\"] as const,\n configurable: { thread_id: threadId ?? sessionId, signal },\n signal,\n });\n\n // Emit initial status\n yield createStatusEvent(sessionId, \"Processing your message...\");\n\n for await (const tuple of eventStream) {\n if (signal?.aborted) break;\n // graph.stream with multiple modes yields [mode, chunk] tuples\n const [mode, chunk] = tuple as [string, unknown];\n\n // ─────────────────────────────────────────────────────────────────\n // CUSTOM: writer events from ChatAgent.streamRun()\n // ─────────────────────────────────────────────────────────────────\n if (mode === \"custom\") {\n const event = chunk as AgentStreamEvent;\n\n if (event.type === \"iteration_start\") {\n yield createIterationStartEvent(sessionId, event.iteration);\n }\n\n if (event.type === \"llm_start\") {\n yield createLlmStartEvent(sessionId, event.iteration);\n }\n\n if (event.type === \"text_chunk\" && event.content) {\n yield createTokenEvent(sessionId, event.content);\n }\n\n if (event.type === \"response_reset\") {\n yield createResponseResetEvent(sessionId, event.reason);\n }\n\n if (event.type === \"hallucination_detected\") {\n yield createHallucinationDetectedEvent(sessionId, event.blockType, event.tool);\n }\n\n if (event.type === \"llm_end\") {\n yield createLlmEndEvent(\n sessionId,\n event.iteration,\n event.hasToolCalls,\n event.toolNames,\n );\n }\n\n if (event.type === \"tool_activity\") {\n logger.debug(\"Tool activity\", { name: event.name, phase: event.phase });\n if (event.phase === \"start\") {\n yield createToolActivityEvent(\n sessionId,\n event.name,\n event.name,\n \"start\",\n );\n } else {\n yield createToolActivityEvent(\n sessionId,\n event.name,\n event.name,\n \"end\",\n event.success,\n event.summary,\n event.steps,\n );\n }\n }\n\n if (event.type === \"graph_start\") {\n yield createGraphStartEvent(sessionId, event.name);\n }\n\n if (event.type === \"graph_end\") {\n yield createGraphEndEvent(sessionId, event.name, event.durationMs);\n }\n\n if (event.type === \"phase_start\") {\n yield createPhaseStartEvent(sessionId, event.name);\n }\n\n if (event.type === \"phase_end\") {\n yield createPhaseEndEvent(sessionId, event.name, event.durationMs);\n }\n\n if (event.type === \"agent_start\") {\n yield createAgentStartEvent(sessionId, event.name);\n }\n\n if (event.type === \"agent_end\") {\n yield createAgentEndEvent(sessionId, event.name, event.durationMs, event.summary);\n }\n\n if (event.type === \"decision_questions\") {\n yield createDecisionQuestionsEvent(sessionId, { questions: event.questions });\n }\n\n if (event.type === \"chat_summarizer_start\") {\n yield createChatSummarizerStartEvent(sessionId, event.payload);\n }\n\n if (event.type === \"chat_summarizer_end\") {\n yield createChatSummarizerEndEvent(sessionId, event.payload);\n }\n\n if (event.type === \"question_generator_start\") {\n yield createQuestionGeneratorStartEvent(sessionId, event.payload);\n }\n\n if (event.type === \"question_generator_end\") {\n yield createQuestionGeneratorEndEvent(sessionId, event.payload);\n }\n }\n\n // ─────────────────────────────────────────────────────────────────\n // UPDATES: final state from agentLoopNode\n // ─────────────────────────────────────────────────────────────────\n if (mode === \"updates\") {\n // The updates chunk is { agent_loop: { responseText, error, ... } }\n const updates = chunk as Record<string, Record<string, unknown>>;\n const agentOutput = updates?.agent_loop;\n\n if (agentOutput?.error) {\n logger.warn(\"Agent loop returned error via updates\", {\n error: agentOutput.error,\n });\n yield createErrorEvent(\n sessionId,\n String(agentOutput.error),\n \"AGENT_ERROR\",\n );\n }\n\n // Yield the agent's authoritative response text so the\n // controller can persist it without relying on token accumulation.\n const responseText = typeof agentOutput?.responseText === \"string\"\n ? (agentOutput.responseText as string)\n : \"\";\n yield createResponseCompleteEvent(sessionId, responseText);\n\n const debugMeta = agentOutput?.debugMeta as\n | { graph: string; iterations: number; tools?: DebugMetaToolCall[]; llm?: DebugMetaLlm; orchestratorNegotiations?: DebugMetaOrchestratorNegotiations; discoveryQuestions?: DebugMetaDiscoveryQuestions }\n | undefined;\n if (\n debugMeta?.graph != null &&\n typeof debugMeta.iterations === \"number\"\n ) {\n const llmFallback: DebugMetaLlm = { calls: 0, totalDurationMs: 0, resets: [], hallucinations: [] };\n yield createDebugMetaEvent(\n sessionId,\n debugMeta.graph,\n debugMeta.iterations,\n Array.isArray(debugMeta.tools) ? debugMeta.tools : [],\n debugMeta.llm ?? llmFallback,\n debugMeta.orchestratorNegotiations,\n debugMeta.discoveryQuestions,\n );\n }\n\n logger.verbose(\"Agent loop complete (updates)\", {\n responseLength: responseText.length,\n });\n }\n }\n } catch (error) {\n logger.error(\"Stream error\", {\n error: error instanceof Error ? error.message : String(error),\n });\n yield createErrorEvent(\n sessionId,\n error instanceof Error\n ? error.message\n : \"Unknown error during streaming\",\n \"STREAM_ERROR\",\n );\n }\n }\n}\n"]}
1
+ {"version":3,"file":"chat.streamer.js","sourceRoot":"/","sources":["chat/chat.streamer.ts"],"names":[],"mappings":"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","sourcesContent":["import { AIMessage, BaseMessage, HumanMessage } from \"@langchain/core/messages\";\nimport { BaseCheckpointSaver } from \"@langchain/langgraph\";\nimport { protocolLogger } from \"../shared/observability/protocol.logger.js\";\nimport type { ChatStreamEvent, DebugMetaDiscoveryQuestions, DebugMetaToolCall, DebugMetaLlm, DebugMetaOrchestratorNegotiations } from \"./chat-streaming.types.js\";\nimport { createAgentEndEvent, createAgentStartEvent, createDebugMetaEvent, createDecisionQuestionsEvent, createErrorEvent, createGraphEndEvent, createPhaseStartEvent, createPhaseEndEvent, createGraphStartEvent, createIterationStartEvent, createLlmStartEvent, createLlmEndEvent, createResponseCompleteEvent, createResponseResetEvent, createHallucinationDetectedEvent, createStatusEvent, createTokenEvent, createToolActivityEvent, createChatSummarizerStartEvent, createChatSummarizerEndEvent, createQuestionGeneratorStartEvent, createQuestionGeneratorEndEvent } from \"./chat-streaming.types.js\";\nimport type { AgentStreamEvent } from \"./chat.agent.js\";\n\nconst logger = protocolLogger(\"ChatStreamer\");\n\n// ══════════════════════════════════════════════════════════════════════════════\n// CHAT STREAMER (Streaming Narration Architecture)\n// ══════════════════════════════════════════════════════════════════════════════\n\n/**\n * Top-level streaming service for Chat Graph events.\n *\n * Uses `graph.stream()` with `streamMode: [\"custom\", \"updates\"]` so that\n * the agent's `config.writer()` calls arrive as `\"custom\"` chunks (text\n * tokens and tool-activity events) and the final state update arrives as\n * an `\"updates\"` chunk.\n */\nexport class ChatStreamer {\n constructor(\n private loadSessionContext: (\n sessionId: string,\n maxMessages: number,\n ) => Promise<BaseMessage[]>,\n private createStreamingGraph: (\n checkpointer?: BaseCheckpointSaver,\n ) => any,\n ) {}\n\n /**\n * Streams chat events with full session context.\n * Loads previous conversation history and optionally uses a checkpointer\n * for state persistence.\n *\n * @param input - Configuration for context-aware streaming\n * @param checkpointer - Optional checkpointer for state persistence\n * @yields ChatStreamEvent objects\n */\n public async *streamChatEventsWithContext(\n input: {\n userId: string;\n message: string;\n sessionId: string;\n maxContextMessages?: number;\n networkId?: string;\n prefillMessages?: Array<{ role: \"assistant\" | \"user\"; content: string }>;\n /** Per-run identifier used to form a composite LangGraph thread_id (sessionId:runId).\n * When provided, prevents stale checkpoint state from a prior run being resumed.\n * Defaults to sessionId alone when absent (backward compatible). */\n runId?: string;\n },\n checkpointer?: BaseCheckpointSaver,\n signal?: AbortSignal,\n ): AsyncGenerator<ChatStreamEvent> {\n const {\n userId,\n message,\n sessionId,\n maxContextMessages = 20,\n networkId,\n prefillMessages,\n runId,\n } = input;\n logger.verbose(\"Starting context-aware streaming\", {\n userId,\n sessionId,\n maxContextMessages,\n hasCheckpointer: !!checkpointer,\n hasIndexId: !!networkId,\n networkId: networkId ?? undefined,\n });\n\n try {\n // Load previous conversation context\n const previousMessages = await this.loadSessionContext(\n sessionId,\n maxContextMessages,\n );\n\n // Inject prefill messages (e.g. hardcoded onboarding greeting) only for fresh sessions\n const prefill: BaseMessage[] = previousMessages.length === 0\n ? (prefillMessages ?? []).map((pm) =>\n pm.role === \"assistant\" ? new AIMessage(pm.content) : new HumanMessage(pm.content),\n )\n : [];\n\n const allMessages = [...previousMessages, ...prefill, new HumanMessage(message)];\n\n logger.verbose(\"Context prepared\", {\n previousCount: previousMessages.length,\n totalCount: allMessages.length,\n });\n\n // Form composite thread_id when a runId is provided\n const threadId = runId ? `${sessionId}:${runId}` : sessionId;\n\n // Stream with context using the optional checkpointer\n yield* this.streamChatEvents(\n { userId, messages: allMessages, networkId },\n sessionId,\n checkpointer,\n signal,\n threadId,\n );\n } catch (error) {\n logger.error(\"Stream error\", {\n error: error instanceof Error ? error.message : String(error),\n });\n yield createErrorEvent(\n sessionId,\n error instanceof Error\n ? error.message\n : \"Unknown error during context-aware streaming\",\n \"CONTEXT_STREAM_ERROR\",\n );\n }\n }\n\n /**\n * Streams chat events from the graph execution.\n *\n * Uses `graph.stream()` with `streamMode: [\"custom\", \"updates\"]`:\n * - `\"custom\"` chunks carry {@link AgentStreamEvent} objects emitted by\n * `ChatAgent.streamRun()` via `config.writer()`\n * - `\"updates\"` chunks carry the final state update from `agentLoopNode`\n *\n * @param input - The input state for the graph (userId and messages)\n * @param sessionId - The session ID for event attribution\n * @param checkpointer - Optional checkpointer for persistence\n * @yields ChatStreamEvent objects\n */\n public async *streamChatEvents(\n input: { userId: string; messages: BaseMessage[]; networkId?: string },\n sessionId: string,\n checkpointer?: BaseCheckpointSaver,\n signal?: AbortSignal,\n threadId?: string,\n ): AsyncGenerator<ChatStreamEvent> {\n const graph = this.createStreamingGraph(checkpointer);\n\n try {\n const initialState: {\n userId: string;\n messages: BaseMessage[];\n networkId?: string;\n sessionId?: string;\n } = {\n userId: input.userId,\n messages: input.messages,\n };\n if (input.networkId) initialState.networkId = input.networkId;\n initialState.sessionId = sessionId;\n\n // Use graph.stream() with custom + updates modes.\n // Custom events come from config.writer() inside agentLoopNode.\n const eventStream = await graph.stream(initialState, {\n streamMode: [\"custom\", \"updates\"] as const,\n configurable: { thread_id: threadId ?? sessionId, signal },\n signal,\n });\n\n // Emit initial status\n yield createStatusEvent(sessionId, \"Processing your message...\");\n\n for await (const tuple of eventStream) {\n if (signal?.aborted) break;\n // graph.stream with multiple modes yields [mode, chunk] tuples\n const [mode, chunk] = tuple as [string, unknown];\n\n // ─────────────────────────────────────────────────────────────────\n // CUSTOM: writer events from ChatAgent.streamRun()\n // ─────────────────────────────────────────────────────────────────\n if (mode === \"custom\") {\n const event = chunk as AgentStreamEvent;\n\n if (event.type === \"iteration_start\") {\n yield createIterationStartEvent(sessionId, event.iteration);\n }\n\n if (event.type === \"llm_start\") {\n yield createLlmStartEvent(sessionId, event.iteration);\n }\n\n if (event.type === \"text_chunk\" && event.content) {\n yield createTokenEvent(sessionId, event.content);\n }\n\n if (event.type === \"response_reset\") {\n yield createResponseResetEvent(sessionId, event.reason);\n }\n\n if (event.type === \"hallucination_detected\") {\n yield createHallucinationDetectedEvent(sessionId, event.blockType, event.tool);\n }\n\n if (event.type === \"llm_end\") {\n yield createLlmEndEvent(\n sessionId,\n event.iteration,\n event.hasToolCalls,\n event.toolNames,\n );\n }\n\n if (event.type === \"tool_activity\") {\n logger.debug(\"Tool activity\", { name: event.name, phase: event.phase });\n if (event.phase === \"start\") {\n yield createToolActivityEvent(\n sessionId,\n event.name,\n event.name,\n \"start\",\n );\n } else {\n yield createToolActivityEvent(\n sessionId,\n event.name,\n event.name,\n \"end\",\n event.success,\n event.summary,\n event.steps,\n );\n }\n }\n\n if (event.type === \"graph_start\") {\n yield createGraphStartEvent(sessionId, event.name);\n }\n\n if (event.type === \"graph_end\") {\n yield createGraphEndEvent(sessionId, event.name, event.durationMs);\n }\n\n if (event.type === \"phase_start\") {\n yield createPhaseStartEvent(sessionId, event.name);\n }\n\n if (event.type === \"phase_end\") {\n yield createPhaseEndEvent(sessionId, event.name, event.durationMs);\n }\n\n if (event.type === \"agent_start\") {\n yield createAgentStartEvent(sessionId, event.name);\n }\n\n if (event.type === \"agent_end\") {\n yield createAgentEndEvent(sessionId, event.name, event.durationMs, event.summary);\n }\n\n if (event.type === \"decision_questions\") {\n yield createDecisionQuestionsEvent(sessionId, { questions: event.questions });\n }\n\n if (event.type === \"chat_summarizer_start\") {\n yield createChatSummarizerStartEvent(sessionId, event.payload);\n }\n\n if (event.type === \"chat_summarizer_end\") {\n yield createChatSummarizerEndEvent(sessionId, event.payload);\n }\n\n if (event.type === \"question_generator_start\") {\n yield createQuestionGeneratorStartEvent(sessionId, event.payload);\n }\n\n if (event.type === \"question_generator_end\") {\n yield createQuestionGeneratorEndEvent(sessionId, event.payload);\n }\n }\n\n // ─────────────────────────────────────────────────────────────────\n // UPDATES: final state from agentLoopNode\n // ─────────────────────────────────────────────────────────────────\n if (mode === \"updates\") {\n // The updates chunk is { agent_loop: { responseText, error, ... } }\n const updates = chunk as Record<string, Record<string, unknown>>;\n const agentOutput = updates?.agent_loop;\n\n if (agentOutput?.error) {\n logger.warn(\"Agent loop returned error via updates\", {\n error: agentOutput.error,\n });\n yield createErrorEvent(\n sessionId,\n String(agentOutput.error),\n \"AGENT_ERROR\",\n );\n }\n\n // Yield the agent's authoritative response text so the\n // controller can persist it without relying on token accumulation.\n const responseText = typeof agentOutput?.responseText === \"string\"\n ? (agentOutput.responseText as string)\n : \"\";\n yield createResponseCompleteEvent(sessionId, responseText);\n\n const debugMeta = agentOutput?.debugMeta as\n | { graph: string; iterations: number; tools?: DebugMetaToolCall[]; llm?: DebugMetaLlm; orchestratorNegotiations?: DebugMetaOrchestratorNegotiations; discoveryQuestions?: DebugMetaDiscoveryQuestions }\n | undefined;\n if (\n debugMeta?.graph != null &&\n typeof debugMeta.iterations === \"number\"\n ) {\n const llmFallback: DebugMetaLlm = { calls: 0, totalDurationMs: 0, resets: [], hallucinations: [] };\n yield createDebugMetaEvent(\n sessionId,\n debugMeta.graph,\n debugMeta.iterations,\n Array.isArray(debugMeta.tools) ? debugMeta.tools : [],\n debugMeta.llm ?? llmFallback,\n debugMeta.orchestratorNegotiations,\n debugMeta.discoveryQuestions,\n );\n }\n\n logger.verbose(\"Agent loop complete (updates)\", {\n responseLength: responseText.length,\n });\n }\n }\n } catch (error) {\n logger.error(\"Stream error\", {\n error: error instanceof Error ? error.message : String(error),\n });\n yield createErrorEvent(\n sessionId,\n error instanceof Error\n ? error.message\n : \"Unknown error during streaming\",\n \"STREAM_ERROR\",\n );\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"chat.summarizer.d.ts","sourceRoot":"/","sources":["chat/chat.summarizer.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,0CAA0C,CAAC;AAwBlD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACzC,WAAW,EAAE,qBAAqB,EAAE,CAAC;CACtC;AAED,6CAA6C;AAC7C,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAiD;;IAS9D;;;;OAIG;IAEG,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;CAyC/E"}
1
+ {"version":3,"file":"chat.summarizer.d.ts","sourceRoot":"/","sources":["chat/chat.summarizer.ts"],"names":[],"mappings":"AAYA,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAwB3G,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACzC,WAAW,EAAE,qBAAqB,EAAE,CAAC;CACtC;AAED,6CAA6C;AAC7C,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAiD;;IAS9D;;;;OAIG;IAEG,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;CAyC/E"}
@@ -8,7 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import { HumanMessage, SystemMessage } from "@langchain/core/messages";
11
- import { ChatContextDigestSchema, } from "../shared/schemas/chat-context.schema.js";
11
+ import { ChatContextDigestSchema } from "../shared/schemas/chat-context.schema.js";
12
12
  import { createModel } from "../shared/agent/model.config.js";
13
13
  import { invokeWithAbortSignal } from "../shared/agent/model-signal.js";
14
14
  import { protocolLogger } from "../shared/observability/protocol.logger.js";
@@ -1 +1 @@
1
- {"version":3,"file":"chat.summarizer.js","sourceRoot":"/","sources":["chat/chat.summarizer.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ChatSummarizer — rolling, incremental digest of a chat session. Takes the\n * previous persisted digest (if any) plus messages added since, returns a\n * structured ChatContextDigest. Pure: no DB, no events. Persistence is the\n * caller's responsibility (see backend ChatSummaryService).\n *\n * The model is instructed to drop entries in the previous digest that newer\n * messages override, keeping the digest bounded as the session grows.\n */\nimport type { ChatOpenAI } from \"@langchain/openai\";\nimport { HumanMessage, SystemMessage } from \"@langchain/core/messages\";\n\nimport {\n ChatContextDigestSchema,\n type ChatContextDigest,\n} from \"../shared/schemas/chat-context.schema.js\";\nimport { createModel } from \"../shared/agent/model.config.js\";\nimport { invokeWithAbortSignal } from \"../shared/agent/model-signal.js\";\nimport { protocolLogger } from \"../shared/observability/protocol.logger.js\";\nimport { Timed } from \"../shared/observability/performance.js\";\n\nconst logger = protocolLogger(\"ChatSummarizer\");\n\nconst MESSAGE_CONTENT_CAP = 240;\n\nconst SYSTEM_PROMPT = `You distill chat sessions into a compact structured digest used to keep an assistant from asking obvious questions.\n\nOutput four arrays:\n- statedFacts: facts the user volunteered (stage, location, role, timing, scope, budget, …).\n- openQuestions: questions the assistant asked that the user has not yet answered.\n- rejectionReasons: pushback the user gave on prior assistant proposals (e.g. \"none of these fit — all US-based\").\n- surfacedFindings: facts the assistant has already shared with the user from prior negotiation results.\n\nRules:\n- Drop entries from the previous digest that newer messages override or contradict.\n- Keep each entry short (≤140 chars), specific, and standalone.\n- Bound the digest: at most 20 statedFacts, 10 openQuestions, 10 rejectionReasons, 20 surfacedFindings. Drop the least relevant when over.\n- Never invent facts. If the digest is empty for a category, output an empty array.`;\n\nexport interface ChatSummarizerMessage {\n role: \"user\" | \"assistant\";\n content: string;\n}\n\nexport interface ChatSummarizerInput {\n previousDigest: ChatContextDigest | null;\n newMessages: ChatSummarizerMessage[];\n}\n\n/** Pure LLM summarizer; no DB, no events. */\nexport class ChatSummarizer {\n private model: ReturnType<ChatOpenAI[\"withStructuredOutput\"]>;\n\n constructor() {\n const llm = createModel(\"chatContextSummarizer\");\n this.model = llm.withStructuredOutput(ChatContextDigestSchema, {\n name: \"chat_context_digest\",\n });\n }\n\n /**\n * Summarize a chat session into a bounded structured digest.\n * @param input - Previous digest (or null) and any messages added since.\n * @returns Updated digest, or null on LLM failure / first-time empty input.\n */\n @Timed()\n async summarize(input: ChatSummarizerInput): Promise<ChatContextDigest | null> {\n if (input.newMessages.length === 0) {\n return input.previousDigest;\n }\n\n const truncated = input.newMessages.map((m) => ({\n role: m.role,\n content: m.content.length > MESSAGE_CONTENT_CAP\n ? m.content.slice(0, MESSAGE_CONTENT_CAP)\n : m.content,\n }));\n\n const user = [\n input.previousDigest\n ? `Previous digest:\\n${JSON.stringify(input.previousDigest, null, 2)}`\n : \"Previous digest: (none — this is the first summarization for this session)\",\n \"\",\n \"New messages (since previous digest):\",\n ...truncated.map((m) => ` [${m.role}] ${m.content}`),\n \"\",\n \"Produce the updated digest now.\",\n ].join(\"\\n\");\n\n try {\n const response = await invokeWithAbortSignal(this.model, [\n new SystemMessage(SYSTEM_PROMPT),\n new HumanMessage(user),\n ]);\n const parsed = ChatContextDigestSchema.safeParse(response);\n if (!parsed.success) {\n logger.warn(\"ChatSummarizer parse failed\", { error: parsed.error.message });\n return null;\n }\n return parsed.data;\n } catch (err) {\n logger.warn(\"ChatSummarizer LLM call failed\", {\n error: err instanceof Error ? err.message : String(err),\n });\n return null;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"chat.summarizer.js","sourceRoot":"/","sources":["chat/chat.summarizer.ts"],"names":[],"mappings":";;;;;;;;;AAUA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAA0B,MAAM,0CAA0C,CAAC;AAC3G,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAE/D,MAAM,MAAM,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;AAEhD,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,MAAM,aAAa,GAAG;;;;;;;;;;;;oFAY8D,CAAC;AAYrF,6CAA6C;AAC7C,MAAM,OAAO,cAAc;IAGzB;QACE,MAAM,GAAG,GAAG,WAAW,CAAC,uBAAuB,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,oBAAoB,CAAC,uBAAuB,EAAE;YAC7D,IAAI,EAAE,qBAAqB;SAC5B,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IAEG,AAAN,KAAK,CAAC,SAAS,CAAC,KAA0B;QACxC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC,cAAc,CAAC;QAC9B,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,mBAAmB;gBAC7C,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC;gBACzC,CAAC,CAAC,CAAC,CAAC,OAAO;SACd,CAAC,CAAC,CAAC;QAEJ,MAAM,IAAI,GAAG;YACX,KAAK,CAAC,cAAc;gBAClB,CAAC,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;gBACtE,CAAC,CAAC,4EAA4E;YAChF,EAAE;YACF,uCAAuC;YACvC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;YACrD,EAAE;YACF,iCAAiC;SAClC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE;gBACvD,IAAI,aAAa,CAAC,aAAa,CAAC;gBAChC,IAAI,YAAY,CAAC,IAAI,CAAC;aACvB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC5E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE;gBAC5C,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAzCO;IADL,KAAK,EAAE;;;;+CAyCP","sourcesContent":["/**\n * ChatSummarizer — rolling, incremental digest of a chat session. Takes the\n * previous persisted digest (if any) plus messages added since, returns a\n * structured ChatContextDigest. Pure: no DB, no events. Persistence is the\n * caller's responsibility (see backend ChatSummaryService).\n *\n * The model is instructed to drop entries in the previous digest that newer\n * messages override, keeping the digest bounded as the session grows.\n */\nimport type { ChatOpenAI } from \"@langchain/openai\";\nimport { HumanMessage, SystemMessage } from \"@langchain/core/messages\";\n\nimport { ChatContextDigestSchema, type ChatContextDigest } from \"../shared/schemas/chat-context.schema.js\";\nimport { createModel } from \"../shared/agent/model.config.js\";\nimport { invokeWithAbortSignal } from \"../shared/agent/model-signal.js\";\nimport { protocolLogger } from \"../shared/observability/protocol.logger.js\";\nimport { Timed } from \"../shared/observability/performance.js\";\n\nconst logger = protocolLogger(\"ChatSummarizer\");\n\nconst MESSAGE_CONTENT_CAP = 240;\n\nconst SYSTEM_PROMPT = `You distill chat sessions into a compact structured digest used to keep an assistant from asking obvious questions.\n\nOutput four arrays:\n- statedFacts: facts the user volunteered (stage, location, role, timing, scope, budget, …).\n- openQuestions: questions the assistant asked that the user has not yet answered.\n- rejectionReasons: pushback the user gave on prior assistant proposals (e.g. \"none of these fit — all US-based\").\n- surfacedFindings: facts the assistant has already shared with the user from prior negotiation results.\n\nRules:\n- Drop entries from the previous digest that newer messages override or contradict.\n- Keep each entry short (≤140 chars), specific, and standalone.\n- Bound the digest: at most 20 statedFacts, 10 openQuestions, 10 rejectionReasons, 20 surfacedFindings. Drop the least relevant when over.\n- Never invent facts. If the digest is empty for a category, output an empty array.`;\n\nexport interface ChatSummarizerMessage {\n role: \"user\" | \"assistant\";\n content: string;\n}\n\nexport interface ChatSummarizerInput {\n previousDigest: ChatContextDigest | null;\n newMessages: ChatSummarizerMessage[];\n}\n\n/** Pure LLM summarizer; no DB, no events. */\nexport class ChatSummarizer {\n private model: ReturnType<ChatOpenAI[\"withStructuredOutput\"]>;\n\n constructor() {\n const llm = createModel(\"chatContextSummarizer\");\n this.model = llm.withStructuredOutput(ChatContextDigestSchema, {\n name: \"chat_context_digest\",\n });\n }\n\n /**\n * Summarize a chat session into a bounded structured digest.\n * @param input - Previous digest (or null) and any messages added since.\n * @returns Updated digest, or null on LLM failure / first-time empty input.\n */\n @Timed()\n async summarize(input: ChatSummarizerInput): Promise<ChatContextDigest | null> {\n if (input.newMessages.length === 0) {\n return input.previousDigest;\n }\n\n const truncated = input.newMessages.map((m) => ({\n role: m.role,\n content: m.content.length > MESSAGE_CONTENT_CAP\n ? m.content.slice(0, MESSAGE_CONTENT_CAP)\n : m.content,\n }));\n\n const user = [\n input.previousDigest\n ? `Previous digest:\\n${JSON.stringify(input.previousDigest, null, 2)}`\n : \"Previous digest: (none — this is the first summarization for this session)\",\n \"\",\n \"New messages (since previous digest):\",\n ...truncated.map((m) => ` [${m.role}] ${m.content}`),\n \"\",\n \"Produce the updated digest now.\",\n ].join(\"\\n\");\n\n try {\n const response = await invokeWithAbortSignal(this.model, [\n new SystemMessage(SYSTEM_PROMPT),\n new HumanMessage(user),\n ]);\n const parsed = ChatContextDigestSchema.safeParse(response);\n if (!parsed.success) {\n logger.warn(\"ChatSummarizer parse failed\", { error: parsed.error.message });\n return null;\n }\n return parsed.data;\n } catch (err) {\n logger.warn(\"ChatSummarizer LLM call failed\", {\n error: err instanceof Error ? err.message : String(err),\n });\n return null;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"chat.graph.mocks.d.ts","sourceRoot":"/","sources":["chat/tests/chat.graph.mocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.graph.mocks.d.ts","sourceRoot":"/","sources":["chat/tests/chat.graph.mocks.ts"],"names":[],"mappings":"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"}
@@ -197,7 +197,6 @@ export function createMockProtocolDeps(overrides) {
197
197
  return {
198
198
  cache: { get: async () => null, set: async () => { }, delete: async () => false, exists: async () => false, mget: async () => [], deleteByPattern: async () => 0 },
199
199
  hydeCache: { get: async () => null, set: async () => { }, delete: async () => false, exists: async () => false },
200
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
201
200
  integration: { createSession: async () => ({ toolkits: async () => ({ items: [] }), authorize: async () => ({ redirectUrl: "" }) }), executeToolAction: async () => ({ successful: true }), listConnections: async () => [], getAuthUrl: async () => ({ redirectUrl: "" }), disconnect: async () => ({ success: true }) },
202
201
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
203
202
  intentQueue: { addGenerateHydeJob: async () => ({}), addDeleteHydeJob: async () => ({}) },
@@ -1 +1 @@
1
- {"version":3,"file":"chat.graph.mocks.js","sourceRoot":"/","sources":["chat/tests/chat.graph.mocks.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Configurable mock database and fixture data for chat graph workflow tests.\n * Use createChatGraphMockDb(config) to get a full ChatGraphCompositeDatabase\n * with controllable profile, intents, index membership, and opportunities.\n */\n\nimport type {\n ChatGraphCompositeDatabase,\n CreateIntentData,\n ActiveIntent,\n IndexedIntentDetails,\n NetworkMembership,\n OwnedIndex,\n UserRecord,\n Opportunity,\n OpportunityStatus,\n} from \"../../shared/interfaces/database.interface.js\";\nimport type { ChatSessionReader } from \"../../shared/interfaces/chat-session.interface.js\";\nimport type { ProtocolDeps } from \"../../shared/agent/tool.helpers.js\";\n\n// Minimal profile shape for getProfileByUserId (avoids importing ProfileDocument)\nexport interface MockProfileFixture {\n id: string;\n userId: string;\n identity: { name: string; bio: string; location: string };\n narrative: { context: string };\n attributes: { skills: string[]; interests: string[] };\n embedding: number[] | null;\n}\n\nexport interface ChatGraphMockConfig {\n /** Profile for the session user (null = no profile). */\n profile?: MockProfileFixture | null;\n /** Active intents per userId (global scope). */\n activeIntents?: (userId: string) => ActiveIntent[] | Promise<ActiveIntent[]>;\n /** Intents in index for a member (userId, networkId) -> member's intents in that index. */\n intentsInIndexForMember?: (\n userId: string,\n networkId: string\n ) => ActiveIntent[] | Promise<ActiveIntent[]>;\n /** All intents in index (owner view). (networkId, requestingUserId) -> details. */\n indexIntentsForOwner?: (\n networkId: string,\n requestingUserId: string\n ) => IndexedIntentDetails[] | Promise<IndexedIntentDetails[]>;\n /** Opportunities for user. */\n opportunitiesForUser?: (userId: string) => Opportunity[] | Promise<Opportunity[]>;\n /** Network memberships for user. */\n networkMemberships?: (userId: string) => NetworkMembership[] | Promise<NetworkMembership[]>;\n /** Index by id (for scope validation). */\n getNetwork?: (networkId: string) => { id: string; title: string } | null | Promise<{ id: string; title: string } | null>;\n /** (networkId, userId) -> is member. */\n isNetworkMember?: (networkId: string, userId: string) => boolean | Promise<boolean>;\n /** (networkId, userId) -> is owner. */\n isIndexOwner?: (networkId: string, userId: string) => boolean | Promise<boolean>;\n /** User record by id. */\n getUser?: (userId: string) => UserRecord | null | Promise<UserRecord | null>;\n /** Owned indexes for user. */\n ownedIndexes?: (userId: string) => OwnedIndex[] | Promise<OwnedIndex[]>;\n}\n\nconst noop = async (): Promise<undefined> => undefined;\nconst noopArray = async <T>(): Promise<T[]> => [];\nconst noopNull = async (): Promise<null> => null;\nconst noopBool = async (): Promise<boolean> => false;\n\nconst defaultOwnedIndex = (): OwnedIndex => ({\n id: \"\",\n title: \"\",\n prompt: null,\n imageUrl: null,\n permissions: {\n joinPolicy: \"anyone\",\n allowGuestVibeCheck: false,\n invitationLink: null,\n },\n isPersonal: false,\n createdAt: new Date(),\n updatedAt: new Date(),\n memberCount: 0,\n intentCount: 0,\n user: { id: \"\", name: \"\", avatar: null },\n _count: { members: 0 },\n});\n\n/** Actor shape for opportunity mocks (role determines visibility). */\nexport type MockOpportunityActor = { networkId: string; userId: string; role: \"introducer\" | \"patient\" | \"agent\" | \"peer\" | \"party\"; intent?: string };\n\n/** Build a minimal Opportunity for list_opportunities / discover_opportunities tests. */\nexport function mockOpportunity(overrides: {\n id?: string;\n status?: OpportunityStatus;\n networkId?: string;\n /** Current user (must be one of the actors so they \"have\" this opportunity). */\n currentUserId?: string;\n /** Other party user ids (role \"party\"); tool resolves names via getUser. Ignored if actors is provided. */\n otherPartyUserIds?: string[];\n /** Override actors with specific roles for role-based visibility tests. */\n actors?: MockOpportunityActor[];\n}): Opportunity {\n const id = overrides.id ?? `opp-${Date.now()}`;\n const networkId = overrides.networkId ?? \"idx-1\";\n const otherIds = overrides.otherPartyUserIds ?? [\"user-alice\"];\n const currentUserId = overrides.currentUserId ?? \"current-user\";\n const actors = overrides.actors ?? [\n { networkId, userId: currentUserId, role: \"party\" as const },\n ...otherIds.map((userId) => ({ networkId, userId, role: \"party\" as const })),\n ];\n return {\n id,\n detection: {\n source: \"opportunity_graph\" as const,\n timestamp: new Date().toISOString(),\n },\n actors,\n interpretation: { category: \"connection\", reasoning: \"Match\", confidence: 0.8 },\n context: { networkId },\n confidence: \"0.8\",\n status: overrides.status ?? \"latent\",\n createdAt: new Date(),\n updatedAt: new Date(),\n expiresAt: null,\n } as Opportunity;\n}\n\n/** Build a minimal IndexedIntentDetails for owner view. */\nexport function mockIndexedIntent(overrides: {\n id?: string;\n payload?: string;\n userId?: string;\n userName?: string;\n}): IndexedIntentDetails {\n return {\n id: overrides.id ?? `intent-${Date.now()}`,\n payload: overrides.payload ?? \"Looking for a co-founder\",\n summary: null,\n userId: overrides.userId ?? \"user-1\",\n userName: overrides.userName ?? \"Alice\",\n createdAt: new Date(),\n };\n}\n\n/** Build a minimal ActiveIntent. */\nexport function mockActiveIntent(overrides: { id?: string; payload?: string }): ActiveIntent {\n return {\n id: overrides.id ?? `intent-${Date.now()}`,\n payload: overrides.payload ?? \"Looking for a technical co-founder\",\n summary: null,\n createdAt: new Date(),\n };\n}\n\n/** Build a minimal profile fixture. */\nexport function mockProfile(overrides: { userId?: string; name?: string }): MockProfileFixture {\n const userId = overrides.userId ?? \"user-1\";\n return {\n id: `profile-${userId}`,\n userId,\n identity: {\n name: overrides.name ?? \"Test User\",\n bio: \"Test bio\",\n location: \"NYC\",\n },\n narrative: { context: \"Test context\" },\n attributes: { skills: [\"TypeScript\"], interests: [\"AI\"] },\n embedding: null,\n };\n}\n\n/**\n * Create a ChatGraphCompositeDatabase mock from config.\n * Any method not overridden by config uses a safe noop/default.\n */\nexport function createChatGraphMockDb(\n config: ChatGraphMockConfig = {}\n): ChatGraphCompositeDatabase {\n const profile = config.profile ?? null;\n const activeIntents = config.activeIntents ?? (() => []);\n const intentsInIndexForMember = config.intentsInIndexForMember ?? (() => []);\n const indexIntentsForOwner = config.indexIntentsForOwner ?? (() => []);\n const opportunitiesForUser = config.opportunitiesForUser ?? (() => []);\n const networkMemberships = config.networkMemberships ?? (() => []);\n const getNetwork = config.getNetwork ?? (() => null);\n const isNetworkMember = config.isNetworkMember ?? (() => false);\n const isIndexOwner = config.isIndexOwner ?? (() => false);\n const getUser =\n config.getUser ??\n ((userId: string): UserRecord => ({ id: userId, name: \"Test User\", email: \"test@example.com\", socials: [] }));\n const ownedIndexes = config.ownedIndexes ?? (() => []);\n\n return {\n getProfile: async () => (profile ? { ...profile } : null),\n getProfileByUserId: async () => (profile ? { ...profile } : null),\n getActiveIntents: async (userId: string) =>\n Promise.resolve(activeIntents(userId)).then((f) => (Array.isArray(f) ? f : [])),\n getIntentsInIndexForMember: async (userId: string, networkId: string) =>\n Promise.resolve(intentsInIndexForMember(userId, networkId)).then((f) =>\n Array.isArray(f) ? f : []\n ),\n getUser: async (userId: string) => Promise.resolve(getUser(userId)),\n updateUser: async (userId: string, data: any) => ({\n id: userId,\n name: data?.name ?? 'Test User',\n email: 'test@example.com',\n socials: data?.socials ?? null,\n location: data?.location ?? null,\n }),\n saveProfile: noop,\n createIntent: async (data: CreateIntentData) => ({\n id: `intent-${Date.now()}`,\n payload: data.payload,\n summary: null,\n isIncognito: false,\n createdAt: new Date(),\n updatedAt: new Date(),\n userId: data.userId,\n }),\n updateIntent: noopNull,\n archiveIntent: async () => ({ success: true }),\n getUserIndexIds: async (userId: string) => {\n const memberships = await Promise.resolve(networkMemberships(userId));\n return Array.isArray(memberships) ? memberships.map((m) => m.networkId) : [];\n },\n getNetworkMemberships: async (userId: string) =>\n Promise.resolve(networkMemberships(userId)).then((f) => (Array.isArray(f) ? f : [])),\n getNetwork: async (networkId: string) => Promise.resolve(getNetwork(networkId)),\n getNetworkMembership: async (networkId: string, userId: string) => {\n const index = await Promise.resolve(getNetwork(networkId));\n if (!index) return null;\n const member = await Promise.resolve(isNetworkMember(networkId, userId));\n return member ? { networkId, networkTitle: index.title, indexPrompt: null, permissions: [] } : null;\n },\n getNetworkWithPermissions: async () => null,\n getIntentForIndexing: noopNull,\n getNetworkMemberContext: noopNull,\n getNegotiationTaskForOpportunity: noopNull,\n getOpportunitiesForUser: async (userId: string) =>\n Promise.resolve(opportunitiesForUser(userId)).then((f) => (Array.isArray(f) ? f : [])),\n createOpportunity: async () => mockOpportunity({ currentUserId: \"system\" }) as Opportunity,\n getOpportunity: noopNull,\n opportunityExistsBetweenActors: async () => false,\n findOpportunitiesByActors: async () => [],\n updateOpportunityStatus: noopNull,\n getHydeDocument: noopNull,\n getHydeDocumentsForSource: noopArray,\n saveHydeDocument: noop,\n getIntent: noopNull,\n isIntentAssignedToIndex: noopBool,\n assignIntentToNetwork: noop,\n unassignIntentFromIndex: noop,\n getNetworkIdsForIntent: noopArray,\n getOwnedIndexes: async (userId: string) =>\n Promise.resolve(ownedIndexes(userId)).then((f) => (Array.isArray(f) ? f : [])),\n isIndexOwner: async (networkId: string, userId: string) =>\n Promise.resolve(isIndexOwner(networkId, userId)),\n isNetworkMember: async (networkId: string, userId: string) =>\n Promise.resolve(isNetworkMember(networkId, userId)),\n getNetworkMembersForOwner: noopArray,\n getNetworkMembersForMember: noopArray,\n getMembersFromUserIndexes: async () => [],\n removeMemberFromIndex: async () => ({ success: true }),\n getNetworkIntentsForOwner: async (networkId: string, requestingUserId: string, opts?: { limit?: number; offset?: number }) =>\n Promise.resolve(indexIntentsForOwner(networkId, requestingUserId)).then((f) =>\n Array.isArray(f) ? f : []\n ),\n getNetworkIntentsForMember: async () => [],\n updateIndexSettings: async () => defaultOwnedIndex(),\n softDeleteNetwork: noop,\n deleteProfile: noop,\n createNetwork: async () => defaultOwnedIndex(),\n getNetworkMemberCount: async () => 0,\n addMemberToNetwork: noop,\n } as unknown as ChatGraphCompositeDatabase;\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// MOCK CHAT SESSION READER & PROTOCOL DEPS\n// ═══════════════════════════════════════════════════════════════════════════════\n\n/** Mock ChatSessionReader with stub implementations for graph tests. */\nexport const mockChatSessionReader: ChatSessionReader = {\n getSessionMessages: async () => [],\n listSessions: async () => [],\n getSession: async () => null,\n};\n\n/**\n * Create a mock ProtocolDeps with stub implementations for all fields.\n * Pass overrides to customise individual deps for specific tests.\n */\nexport function createMockProtocolDeps(overrides?: Partial<ProtocolDeps>): ProtocolDeps {\n // NOTE: database, embedder, scraper are intentionally omitted.\n // ChatGraphFactory spreads protocolDeps over {database, embedder, scraper, ...},\n // so including stubs here would overwrite the real mocks passed to the constructor.\n return {\n cache: { get: async () => null, set: async () => {}, delete: async () => false, exists: async () => false, mget: async () => [], deleteByPattern: async () => 0 },\n hydeCache: { get: async () => null, set: async () => {}, delete: async () => false, exists: async () => false },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n integration: { createSession: async () => ({ toolkits: async () => ({ items: [] }), authorize: async () => ({ redirectUrl: \"\" }) }), executeToolAction: async () => ({ successful: true }), listConnections: async () => [], getAuthUrl: async () => ({ redirectUrl: \"\" }), disconnect: async () => ({ success: true }) } as unknown as ProtocolDeps[\"integration\"],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n intentQueue: { addGenerateHydeJob: async () => ({}), addDeleteHydeJob: async () => ({}) } as any,\n contactService: { importContacts: async () => ({ imported: 0, skipped: 0, newContacts: 0, existingContacts: 0, details: [] }), listContacts: async () => [], addContact: async () => ({ userId: \"\", isNew: false, isGhost: false }), removeContact: async () => {} } as unknown as ProtocolDeps[\"contactService\"],\n chatSession: mockChatSessionReader,\n enricher: { enrichUserProfile: async () => null } as unknown as ProtocolDeps[\"enricher\"],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n negotiationDatabase: {} as any,\n integrationImporter: { importContacts: async () => ({ imported: 0, skipped: 0, newContacts: 0, existingContacts: 0 }) },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n createUserDatabase: (db: any, _userId: string) => {\n return new Proxy({}, {\n get: (_target, prop) => db[prop] ?? (async () => null),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }) as any;\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n createSystemDatabase: (db: any, _userId: string, _scope: string[]) => {\n return new Proxy({}, {\n get: (_target, prop) => db[prop] ?? (async () => null),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }) as any;\n },\n ...overrides,\n } as ProtocolDeps;\n}\n"]}
1
+ {"version":3,"file":"chat.graph.mocks.js","sourceRoot":"/","sources":["chat/tests/chat.graph.mocks.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Configurable mock database and fixture data for chat graph workflow tests.\n * Use createChatGraphMockDb(config) to get a full ChatGraphCompositeDatabase\n * with controllable profile, intents, index membership, and opportunities.\n */\n\nimport type { ChatGraphCompositeDatabase, CreateIntentData, ActiveIntent, IndexedIntentDetails, NetworkMembership, OwnedIndex, UserRecord, Opportunity, OpportunityStatus } from \"../../shared/interfaces/database.interface.js\";\nimport type { ChatSessionReader } from \"../../shared/interfaces/chat-session.interface.js\";\nimport type { ProtocolDeps } from \"../../shared/agent/tool.helpers.js\";\n\n// Minimal profile shape for getProfileByUserId (avoids importing ProfileDocument)\nexport interface MockProfileFixture {\n id: string;\n userId: string;\n identity: { name: string; bio: string; location: string };\n narrative: { context: string };\n attributes: { skills: string[]; interests: string[] };\n embedding: number[] | null;\n}\n\nexport interface ChatGraphMockConfig {\n /** Profile for the session user (null = no profile). */\n profile?: MockProfileFixture | null;\n /** Active intents per userId (global scope). */\n activeIntents?: (userId: string) => ActiveIntent[] | Promise<ActiveIntent[]>;\n /** Intents in index for a member (userId, networkId) -> member's intents in that index. */\n intentsInIndexForMember?: (\n userId: string,\n networkId: string\n ) => ActiveIntent[] | Promise<ActiveIntent[]>;\n /** All intents in index (owner view). (networkId, requestingUserId) -> details. */\n indexIntentsForOwner?: (\n networkId: string,\n requestingUserId: string\n ) => IndexedIntentDetails[] | Promise<IndexedIntentDetails[]>;\n /** Opportunities for user. */\n opportunitiesForUser?: (userId: string) => Opportunity[] | Promise<Opportunity[]>;\n /** Network memberships for user. */\n networkMemberships?: (userId: string) => NetworkMembership[] | Promise<NetworkMembership[]>;\n /** Index by id (for scope validation). */\n getNetwork?: (networkId: string) => { id: string; title: string } | null | Promise<{ id: string; title: string } | null>;\n /** (networkId, userId) -> is member. */\n isNetworkMember?: (networkId: string, userId: string) => boolean | Promise<boolean>;\n /** (networkId, userId) -> is owner. */\n isIndexOwner?: (networkId: string, userId: string) => boolean | Promise<boolean>;\n /** User record by id. */\n getUser?: (userId: string) => UserRecord | null | Promise<UserRecord | null>;\n /** Owned indexes for user. */\n ownedIndexes?: (userId: string) => OwnedIndex[] | Promise<OwnedIndex[]>;\n}\n\nconst noop = async (): Promise<undefined> => undefined;\nconst noopArray = async <T>(): Promise<T[]> => [];\nconst noopNull = async (): Promise<null> => null;\nconst noopBool = async (): Promise<boolean> => false;\n\nconst defaultOwnedIndex = (): OwnedIndex => ({\n id: \"\",\n title: \"\",\n prompt: null,\n imageUrl: null,\n permissions: {\n joinPolicy: \"anyone\",\n allowGuestVibeCheck: false,\n invitationLink: null,\n },\n isPersonal: false,\n createdAt: new Date(),\n updatedAt: new Date(),\n memberCount: 0,\n intentCount: 0,\n user: { id: \"\", name: \"\", avatar: null },\n _count: { members: 0 },\n});\n\n/** Actor shape for opportunity mocks (role determines visibility). */\nexport type MockOpportunityActor = { networkId: string; userId: string; role: \"introducer\" | \"patient\" | \"agent\" | \"peer\" | \"party\"; intent?: string };\n\n/** Build a minimal Opportunity for list_opportunities / discover_opportunities tests. */\nexport function mockOpportunity(overrides: {\n id?: string;\n status?: OpportunityStatus;\n networkId?: string;\n /** Current user (must be one of the actors so they \"have\" this opportunity). */\n currentUserId?: string;\n /** Other party user ids (role \"party\"); tool resolves names via getUser. Ignored if actors is provided. */\n otherPartyUserIds?: string[];\n /** Override actors with specific roles for role-based visibility tests. */\n actors?: MockOpportunityActor[];\n}): Opportunity {\n const id = overrides.id ?? `opp-${Date.now()}`;\n const networkId = overrides.networkId ?? \"idx-1\";\n const otherIds = overrides.otherPartyUserIds ?? [\"user-alice\"];\n const currentUserId = overrides.currentUserId ?? \"current-user\";\n const actors = overrides.actors ?? [\n { networkId, userId: currentUserId, role: \"party\" as const },\n ...otherIds.map((userId) => ({ networkId, userId, role: \"party\" as const })),\n ];\n return {\n id,\n detection: {\n source: \"opportunity_graph\" as const,\n timestamp: new Date().toISOString(),\n },\n actors,\n interpretation: { category: \"connection\", reasoning: \"Match\", confidence: 0.8 },\n context: { networkId },\n confidence: \"0.8\",\n status: overrides.status ?? \"latent\",\n createdAt: new Date(),\n updatedAt: new Date(),\n expiresAt: null,\n } as Opportunity;\n}\n\n/** Build a minimal IndexedIntentDetails for owner view. */\nexport function mockIndexedIntent(overrides: {\n id?: string;\n payload?: string;\n userId?: string;\n userName?: string;\n}): IndexedIntentDetails {\n return {\n id: overrides.id ?? `intent-${Date.now()}`,\n payload: overrides.payload ?? \"Looking for a co-founder\",\n summary: null,\n userId: overrides.userId ?? \"user-1\",\n userName: overrides.userName ?? \"Alice\",\n createdAt: new Date(),\n };\n}\n\n/** Build a minimal ActiveIntent. */\nexport function mockActiveIntent(overrides: { id?: string; payload?: string }): ActiveIntent {\n return {\n id: overrides.id ?? `intent-${Date.now()}`,\n payload: overrides.payload ?? \"Looking for a technical co-founder\",\n summary: null,\n createdAt: new Date(),\n };\n}\n\n/** Build a minimal profile fixture. */\nexport function mockProfile(overrides: { userId?: string; name?: string }): MockProfileFixture {\n const userId = overrides.userId ?? \"user-1\";\n return {\n id: `profile-${userId}`,\n userId,\n identity: {\n name: overrides.name ?? \"Test User\",\n bio: \"Test bio\",\n location: \"NYC\",\n },\n narrative: { context: \"Test context\" },\n attributes: { skills: [\"TypeScript\"], interests: [\"AI\"] },\n embedding: null,\n };\n}\n\n/**\n * Create a ChatGraphCompositeDatabase mock from config.\n * Any method not overridden by config uses a safe noop/default.\n */\nexport function createChatGraphMockDb(\n config: ChatGraphMockConfig = {}\n): ChatGraphCompositeDatabase {\n const profile = config.profile ?? null;\n const activeIntents = config.activeIntents ?? (() => []);\n const intentsInIndexForMember = config.intentsInIndexForMember ?? (() => []);\n const indexIntentsForOwner = config.indexIntentsForOwner ?? (() => []);\n const opportunitiesForUser = config.opportunitiesForUser ?? (() => []);\n const networkMemberships = config.networkMemberships ?? (() => []);\n const getNetwork = config.getNetwork ?? (() => null);\n const isNetworkMember = config.isNetworkMember ?? (() => false);\n const isIndexOwner = config.isIndexOwner ?? (() => false);\n const getUser =\n config.getUser ??\n ((userId: string): UserRecord => ({ id: userId, name: \"Test User\", email: \"test@example.com\", socials: [] }));\n const ownedIndexes = config.ownedIndexes ?? (() => []);\n\n return {\n getProfile: async () => (profile ? { ...profile } : null),\n getProfileByUserId: async () => (profile ? { ...profile } : null),\n getActiveIntents: async (userId: string) =>\n Promise.resolve(activeIntents(userId)).then((f) => (Array.isArray(f) ? f : [])),\n getIntentsInIndexForMember: async (userId: string, networkId: string) =>\n Promise.resolve(intentsInIndexForMember(userId, networkId)).then((f) =>\n Array.isArray(f) ? f : []\n ),\n getUser: async (userId: string) => Promise.resolve(getUser(userId)),\n updateUser: async (userId: string, data: any) => ({\n id: userId,\n name: data?.name ?? 'Test User',\n email: 'test@example.com',\n socials: data?.socials ?? null,\n location: data?.location ?? null,\n }),\n saveProfile: noop,\n createIntent: async (data: CreateIntentData) => ({\n id: `intent-${Date.now()}`,\n payload: data.payload,\n summary: null,\n isIncognito: false,\n createdAt: new Date(),\n updatedAt: new Date(),\n userId: data.userId,\n }),\n updateIntent: noopNull,\n archiveIntent: async () => ({ success: true }),\n getUserIndexIds: async (userId: string) => {\n const memberships = await Promise.resolve(networkMemberships(userId));\n return Array.isArray(memberships) ? memberships.map((m) => m.networkId) : [];\n },\n getNetworkMemberships: async (userId: string) =>\n Promise.resolve(networkMemberships(userId)).then((f) => (Array.isArray(f) ? f : [])),\n getNetwork: async (networkId: string) => Promise.resolve(getNetwork(networkId)),\n getNetworkMembership: async (networkId: string, userId: string) => {\n const index = await Promise.resolve(getNetwork(networkId));\n if (!index) return null;\n const member = await Promise.resolve(isNetworkMember(networkId, userId));\n return member ? { networkId, networkTitle: index.title, indexPrompt: null, permissions: [] } : null;\n },\n getNetworkWithPermissions: async () => null,\n getIntentForIndexing: noopNull,\n getNetworkMemberContext: noopNull,\n getNegotiationTaskForOpportunity: noopNull,\n getOpportunitiesForUser: async (userId: string) =>\n Promise.resolve(opportunitiesForUser(userId)).then((f) => (Array.isArray(f) ? f : [])),\n createOpportunity: async () => mockOpportunity({ currentUserId: \"system\" }) as Opportunity,\n getOpportunity: noopNull,\n opportunityExistsBetweenActors: async () => false,\n findOpportunitiesByActors: async () => [],\n updateOpportunityStatus: noopNull,\n getHydeDocument: noopNull,\n getHydeDocumentsForSource: noopArray,\n saveHydeDocument: noop,\n getIntent: noopNull,\n isIntentAssignedToIndex: noopBool,\n assignIntentToNetwork: noop,\n unassignIntentFromIndex: noop,\n getNetworkIdsForIntent: noopArray,\n getOwnedIndexes: async (userId: string) =>\n Promise.resolve(ownedIndexes(userId)).then((f) => (Array.isArray(f) ? f : [])),\n isIndexOwner: async (networkId: string, userId: string) =>\n Promise.resolve(isIndexOwner(networkId, userId)),\n isNetworkMember: async (networkId: string, userId: string) =>\n Promise.resolve(isNetworkMember(networkId, userId)),\n getNetworkMembersForOwner: noopArray,\n getNetworkMembersForMember: noopArray,\n getMembersFromUserIndexes: async () => [],\n removeMemberFromIndex: async () => ({ success: true }),\n getNetworkIntentsForOwner: async (networkId: string, requestingUserId: string, opts?: { limit?: number; offset?: number }) =>\n Promise.resolve(indexIntentsForOwner(networkId, requestingUserId)).then((f) =>\n Array.isArray(f) ? f : []\n ),\n getNetworkIntentsForMember: async () => [],\n updateIndexSettings: async () => defaultOwnedIndex(),\n softDeleteNetwork: noop,\n deleteProfile: noop,\n createNetwork: async () => defaultOwnedIndex(),\n getNetworkMemberCount: async () => 0,\n addMemberToNetwork: noop,\n } as unknown as ChatGraphCompositeDatabase;\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════\n// MOCK CHAT SESSION READER & PROTOCOL DEPS\n// ═══════════════════════════════════════════════════════════════════════════════\n\n/** Mock ChatSessionReader with stub implementations for graph tests. */\nexport const mockChatSessionReader: ChatSessionReader = {\n getSessionMessages: async () => [],\n listSessions: async () => [],\n getSession: async () => null,\n};\n\n/**\n * Create a mock ProtocolDeps with stub implementations for all fields.\n * Pass overrides to customise individual deps for specific tests.\n */\nexport function createMockProtocolDeps(overrides?: Partial<ProtocolDeps>): ProtocolDeps {\n // NOTE: database, embedder, scraper are intentionally omitted.\n // ChatGraphFactory spreads protocolDeps over {database, embedder, scraper, ...},\n // so including stubs here would overwrite the real mocks passed to the constructor.\n return {\n cache: { get: async () => null, set: async () => {}, delete: async () => false, exists: async () => false, mget: async () => [], deleteByPattern: async () => 0 },\n hydeCache: { get: async () => null, set: async () => {}, delete: async () => false, exists: async () => false },\n \n integration: { createSession: async () => ({ toolkits: async () => ({ items: [] }), authorize: async () => ({ redirectUrl: \"\" }) }), executeToolAction: async () => ({ successful: true }), listConnections: async () => [], getAuthUrl: async () => ({ redirectUrl: \"\" }), disconnect: async () => ({ success: true }) } as unknown as ProtocolDeps[\"integration\"],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n intentQueue: { addGenerateHydeJob: async () => ({}), addDeleteHydeJob: async () => ({}) } as any,\n contactService: { importContacts: async () => ({ imported: 0, skipped: 0, newContacts: 0, existingContacts: 0, details: [] }), listContacts: async () => [], addContact: async () => ({ userId: \"\", isNew: false, isGhost: false }), removeContact: async () => {} } as unknown as ProtocolDeps[\"contactService\"],\n chatSession: mockChatSessionReader,\n enricher: { enrichUserProfile: async () => null } as unknown as ProtocolDeps[\"enricher\"],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n negotiationDatabase: {} as any,\n integrationImporter: { importContacts: async () => ({ imported: 0, skipped: 0, newContacts: 0, existingContacts: 0 }) },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n createUserDatabase: (db: any, _userId: string) => {\n return new Proxy({}, {\n get: (_target, prop) => db[prop] ?? (async () => null),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }) as any;\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n createSystemDatabase: (db: any, _userId: string, _scope: string[]) => {\n return new Proxy({}, {\n get: (_target, prop) => db[prop] ?? (async () => null),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }) as any;\n },\n ...overrides,\n } as ProtocolDeps;\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -2,11 +2,11 @@ export { createChatTools } from "./shared/agent/tool.factory.js";
2
2
  export { getModelName } from "./shared/agent/model.config.js";
3
3
  export type { ChatTools } from "./shared/agent/tool.factory.js";
4
4
  export type { ModelConfig, ModelSettings } from "./shared/agent/model.config.js";
5
- export type { ToolContext, ResolvedToolContext, ToolDeps, ProtocolDeps, RawToolDefinition, CompiledGraph, } from "./shared/agent/tool.helpers.js";
5
+ export type { ToolContext, ResolvedToolContext, ToolDeps, ProtocolDeps, RawToolDefinition, CompiledGraph } from "./shared/agent/tool.helpers.js";
6
6
  export { ChatContextAccessError, resolveChatContext } from "./shared/agent/tool.helpers.js";
7
7
  export { requestContext } from "./shared/observability/request-context.js";
8
8
  export { setTimingWrapper } from "./shared/observability/performance.js";
9
- export { ToolRuntimeError, getToolTimeoutPolicy, invokeToolRuntime, toolRuntimeErrorToResult, } from "./shared/agent/tool.runtime.js";
9
+ export { ToolRuntimeError, getToolTimeoutPolicy, invokeToolRuntime, toolRuntimeErrorToResult } from "./shared/agent/tool.runtime.js";
10
10
  export type { ToolRuntimeErrorCode, ToolTimeoutClass, ToolTimeoutPolicy } from "./shared/agent/tool.runtime.js";
11
11
  export type * from "./shared/interfaces/auth.interface.js";
12
12
  export type * from "./shared/interfaces/cache.interface.js";
@@ -14,7 +14,7 @@ export type * from "./shared/interfaces/chat-session.interface.js";
14
14
  export type { ChatSummaryReader } from "./shared/interfaces/chat-summary.interface.js";
15
15
  export type { ChatMessageWriter } from "./shared/interfaces/chat-message-writer.interface.js";
16
16
  export type { QuestionGeneratorReader } from "./shared/interfaces/question-generator.interface.js";
17
- export type { QuestionerDatabase, PersistableQuestion, PersistedQuestion, QuestionFilters, } from "./shared/interfaces/questioner.interface.js";
17
+ export type { QuestionerDatabase, PersistableQuestion, PersistedQuestion, QuestionFilters } from "./shared/interfaces/questioner.interface.js";
18
18
  export type { NegotiationSummaryReader } from "./shared/interfaces/negotiation-summary.interface.js";
19
19
  export type { DiscoveryNegotiationDigest } from "./shared/schemas/negotiation-digest.schema.js";
20
20
  export { NegotiationSummarizer, buildFallbackDigest } from "./negotiation/negotiation.summarizer.js";
@@ -32,19 +32,19 @@ export type * from "./shared/interfaces/discovery-run.interface.js";
32
32
  export type * from "./shared/interfaces/profile-run.interface.js";
33
33
  export type * from "./shared/interfaces/negotiation-events.interface.js";
34
34
  export type { AgentDispatcher, AgentDispatchResult, NegotiationTurnPayload } from "./shared/interfaces/agent-dispatcher.interface.js";
35
- export type { AgentRecord, AgentTransportRecord, AgentPermissionRecord, AgentWithRelations, CreateAgentInput, CreateTransportInput, GrantPermissionInput, AgentDatabase, } from './shared/interfaces/agent.interface.js';
35
+ export type { AgentRecord, AgentTransportRecord, AgentPermissionRecord, AgentWithRelations, CreateAgentInput, CreateTransportInput, GrantPermissionInput, AgentDatabase } from './shared/interfaces/agent.interface.js';
36
36
  export { SYSTEM_AGENT_IDS } from './shared/interfaces/agent.interface.js';
37
- export { ChatContextDigestSchema, type ChatContextDigest, } from "./shared/schemas/chat-context.schema.js";
38
- export { QuestionOptionSchema, QuestionSchema, QuestionStrategySchema, QuestionWithStrategySchema, QuestionGeneratorResponseSchema, QuestionModeSchema, QuestionDetectionSchema, QuestionActorSchema, QuestionAnswerSchema, type Question, type QuestionOption, type QuestionStrategy, type QuestionWithStrategy, type QuestionGeneratorResponse, type QuestionGenerationResult, type QuestionMode, type QuestionDetection, type QuestionActor, type QuestionAnswer, } from "./shared/schemas/question.schema.js";
37
+ export { ChatContextDigestSchema, type ChatContextDigest } from "./shared/schemas/chat-context.schema.js";
38
+ export { QuestionOptionSchema, QuestionSchema, QuestionStrategySchema, QuestionWithStrategySchema, QuestionGeneratorResponseSchema, QuestionModeSchema, QuestionDetectionSchema, QuestionActorSchema, QuestionAnswerSchema, type Question, type QuestionOption, type QuestionStrategy, type QuestionWithStrategy, type QuestionGeneratorResponse, type QuestionGenerationResult, type QuestionMode, type QuestionDetection, type QuestionActor, type QuestionAnswer } from "./shared/schemas/question.schema.js";
39
39
  export type { PendingQuestionSummary } from "./shared/schemas/pending-question.schema.js";
40
40
  export type { McpAuthInput } from "./shared/schemas/mcp-auth.schema.js";
41
- export { ProfileIdentitySchema, ProfileNarrativeSchema, ProfileAttributesSchema, ProfileDocumentSchema, type ProfileDocument, } from "./shared/schemas/profile.schema.js";
42
- export type { DiscoverySourceProfile, DiscoverySummary, DiscoveryNegotiation, DiscoveryTurn, DiscoveryOutcome, DiscoveryQuestionInput, NegotiationRole, } from "./shared/schemas/discovery-question.schema.js";
43
- export { NetworkAssignmentResourceTypeSchema, NetworkAssignmentModeSchema, NetworkAssignmentScopeSchema, NetworkAssignmentPromptPresenceSchema, NetworkAssignmentPolicySchema, NetworkAssignmentRawScoresSchema, NetworkAssignmentMetadataSchema, OpportunityEvidenceKindSchema, OpportunityEvidenceSchema, } from "./shared/schemas/network-assignment.schema.js";
44
- export type { NetworkAssignmentResourceType, NetworkAssignmentMode, NetworkAssignmentScope, NetworkAssignmentPromptPresence, NetworkAssignmentPolicy, NetworkAssignmentRawScores, NetworkAssignmentMetadata, OpportunityEvidenceKind, OpportunityEvidence, } from "./shared/schemas/network-assignment.schema.js";
45
- export { DEFAULT_NETWORK_ASSIGNMENT_THRESHOLD, classifyPromptPresence, resolveAssignmentNetworkScope, buildNetworkAssignmentDecision, combineAssignmentScores, } from "./shared/assignment/network-assignment.policy.js";
46
- export type { PromptPresenceInput, ResolveAssignmentNetworkScopeArgs, BuildNetworkAssignmentDecisionArgs, NetworkAssignmentDecision, } from "./shared/assignment/network-assignment.policy.js";
47
- export { buildCandidateEvidence, withCandidateEvidence, mergeOpportunityEvidence, withMatchedStrategies, renderOpportunityEvidenceForPrompt, } from "./opportunity/opportunity.evidence.js";
41
+ export { ProfileIdentitySchema, ProfileNarrativeSchema, ProfileAttributesSchema, ProfileDocumentSchema, type ProfileDocument } from "./shared/schemas/profile.schema.js";
42
+ export type { DiscoverySourceProfile, DiscoverySummary, DiscoveryNegotiation, DiscoveryTurn, DiscoveryOutcome, DiscoveryQuestionInput, NegotiationRole } from "./shared/schemas/discovery-question.schema.js";
43
+ export { NetworkAssignmentResourceTypeSchema, NetworkAssignmentModeSchema, NetworkAssignmentScopeSchema, NetworkAssignmentPromptPresenceSchema, NetworkAssignmentPolicySchema, NetworkAssignmentRawScoresSchema, NetworkAssignmentMetadataSchema, OpportunityEvidenceKindSchema, OpportunityEvidenceSchema } from "./shared/schemas/network-assignment.schema.js";
44
+ export type { NetworkAssignmentResourceType, NetworkAssignmentMode, NetworkAssignmentScope, NetworkAssignmentPromptPresence, NetworkAssignmentPolicy, NetworkAssignmentRawScores, NetworkAssignmentMetadata, OpportunityEvidenceKind, OpportunityEvidence } from "./shared/schemas/network-assignment.schema.js";
45
+ export { DEFAULT_NETWORK_ASSIGNMENT_THRESHOLD, classifyPromptPresence, resolveAssignmentNetworkScope, buildNetworkAssignmentDecision, combineAssignmentScores } from "./shared/assignment/network-assignment.policy.js";
46
+ export type { PromptPresenceInput, ResolveAssignmentNetworkScopeArgs, BuildNetworkAssignmentDecisionArgs, NetworkAssignmentDecision } from "./shared/assignment/network-assignment.policy.js";
47
+ export { buildCandidateEvidence, withCandidateEvidence, mergeOpportunityEvidence, withMatchedStrategies, renderOpportunityEvidenceForPrompt } from "./opportunity/opportunity.evidence.js";
48
48
  export type { EvidenceCandidateInput } from "./opportunity/opportunity.evidence.js";
49
49
  export { ChatGraphFactory } from "./chat/chat.graph.js";
50
50
  export { HomeGraphFactory } from "./opportunity/feed/feed.graph.js";
@@ -54,7 +54,7 @@ export { NetworkMembershipGraphFactory } from "./network/membership/membership.g
54
54
  export { IntentGraphFactory } from "./intent/intent.graph.js";
55
55
  export { IntentNetworkGraphFactory } from "./network/indexer/indexer.graph.js";
56
56
  export { MaintenanceGraphFactory } from "./maintenance/maintenance.graph.js";
57
- export type { MaintenanceGraphDatabase, MaintenanceGraphCache, MaintenanceGraphQueue, } from "./maintenance/maintenance.graph.js";
57
+ export type { MaintenanceGraphDatabase, MaintenanceGraphCache, MaintenanceGraphQueue } from "./maintenance/maintenance.graph.js";
58
58
  export { NegotiationGraphFactory, createDefaultNegotiationGraph, negotiateCandidates } from "./negotiation/negotiation.graph.js";
59
59
  export { OpportunityGraphFactory } from "./opportunity/opportunity.graph.js";
60
60
  export { ProfileGraphFactory } from "./profile/profile.graph.js";
@@ -86,29 +86,29 @@ export { IndexNegotiator } from "./negotiation/negotiation.agent.js";
86
86
  export type { NegotiationAgentInput } from "./negotiation/negotiation.agent.js";
87
87
  export { QuestionerAgent } from "./questioner/questioner.agent.js";
88
88
  export type { QuestionerAgentConfig } from "./questioner/questioner.agent.js";
89
- export type { QuestionerInput, QuestionerContext, QuestionerEnqueuePayload, QuestionerEnqueueFn, DiscoveryContext, IntentContext, ProfileContext, NegotiationContext, } from "./questioner/questioner.types.js";
89
+ export type { QuestionerInput, QuestionerContext, QuestionerEnqueuePayload, QuestionerEnqueueFn, DiscoveryContext, IntentContext, ProfileContext, NegotiationContext } from "./questioner/questioner.types.js";
90
90
  export { getPreset } from "./questioner/questioner.presets.js";
91
91
  export type { QuestionerPreset } from "./questioner/questioner.presets.js";
92
92
  export { OpportunityEvaluator } from "./opportunity/opportunity.evaluator.js";
93
- export type { EvaluatorInput, OpportunityEvaluatorOptionsConstructor, } from "./opportunity/opportunity.evaluator.js";
93
+ export type { EvaluatorInput, OpportunityEvaluatorOptionsConstructor } from "./opportunity/opportunity.evaluator.js";
94
94
  export { OpportunityPresenter, gatherPresenterContext } from "./opportunity/opportunity.presenter.js";
95
95
  export { createOpportunityTools } from "./opportunity/opportunity.tools.js";
96
96
  export { createProfileTools } from "./profile/profile.tools.js";
97
97
  export type { PresenterDatabase } from "./opportunity/opportunity.presenter.js";
98
98
  export { QuestionGenerator } from "./opportunity/question.generator.js";
99
99
  export { renderNetworkContext } from './shared/network/metadata.renderer.js';
100
- export { canUserSeeOpportunity, isActionableForViewer, validateOpportunityActors, classifyOpportunity, selectByComposition, selectDigestCandidates, DIGEST_REDELIVERY_COOLDOWN_DAYS, FEED_SOFT_TARGETS, } from "./opportunity/opportunity.utils.js";
100
+ export { canUserSeeOpportunity, isActionableForViewer, validateOpportunityActors, classifyOpportunity, selectByComposition, selectDigestCandidates, DIGEST_REDELIVERY_COOLDOWN_DAYS, FEED_SOFT_TARGETS } from "./opportunity/opportunity.utils.js";
101
101
  export type { DigestDeliveredRow } from "./opportunity/opportunity.utils.js";
102
102
  export { getPrimaryActionLabel } from "./opportunity/opportunity.labels.js";
103
103
  export { computeFeedHealth } from "./opportunity/feed/feed.health.js";
104
104
  export type { FeedHealthInput, FeedHealthResult } from "./opportunity/feed/feed.health.js";
105
- export { selectContactsForDiscovery, shouldRunIntroducerDiscovery, runIntroducerDiscovery, MAX_CONTACTS_PER_CYCLE, MAX_CANDIDATES_PER_CONTACT, INTRODUCER_DISCOVERY_SOURCE, } from "./opportunity/opportunity.introducer.js";
106
- export type { IntroducerDiscoveryDatabase, IntroducerDiscoveryQueue, ContactWithIntents, } from "./opportunity/opportunity.introducer.js";
105
+ export { selectContactsForDiscovery, shouldRunIntroducerDiscovery, runIntroducerDiscovery, MAX_CONTACTS_PER_CYCLE, MAX_CANDIDATES_PER_CONTACT, INTRODUCER_DISCOVERY_SOURCE } from "./opportunity/opportunity.introducer.js";
106
+ export type { IntroducerDiscoveryDatabase, IntroducerDiscoveryQueue, ContactWithIntents } from "./opportunity/opportunity.introducer.js";
107
107
  export { persistOpportunities } from "./opportunity/opportunity.persist.js";
108
108
  export { presentOpportunity } from "./opportunity/opportunity.presentation.js";
109
109
  export type { UserInfo } from "./opportunity/opportunity.presentation.js";
110
110
  export { stripUuids, stripIntroducerMentions } from "./opportunity/opportunity.presentation.js";
111
- export { getOrCreateDeliveryCardBatch, DELIVERY_CARD_CACHE_TTL, type CachedDeliveryCard, type OpportunityWithContext, } from "./opportunity/delivery-card.cache.js";
111
+ export { getOrCreateDeliveryCardBatch, DELIVERY_CARD_CACHE_TTL, type CachedDeliveryCard, type OpportunityWithContext } from "./opportunity/delivery-card.cache.js";
112
112
  export { createToolRegistry } from "./shared/agent/tool.registry.js";
113
113
  export { createAgentTools } from './agent/agent.tools.js';
114
114
  export { AMBIENT_PARK_WINDOW_MS } from './negotiation/negotiation.tools.js';
@@ -118,7 +118,7 @@ export type { ScopedDepsFactory } from "./mcp/mcp.server.js";
118
118
  export { buildElicitationCreate, flattenChoice } from "./mcp/elicitation.builder.js";
119
119
  export { dispatchElicitations } from "./mcp/elicitation.dispatcher.js";
120
120
  export type { ElicitResultLike, ElicitInputFn, DispatchElicitationsParams } from "./mcp/elicitation.dispatcher.js";
121
- export type { UserNegotiationContext, NegotiationTurn, NegotiationOutcome, SeedAssessment, } from "./shared/schemas/negotiation-state.schema.js";
121
+ export type { UserNegotiationContext, NegotiationTurn, NegotiationOutcome, SeedAssessment } from "./shared/schemas/negotiation-state.schema.js";
122
122
  export type { NegotiationGraphLike } from "./negotiation/negotiation.state.js";
123
123
  export { ChatStreamer } from "./chat/chat.streamer.js";
124
124
  export { ResponseStreamer } from "./shared/agent/response.streamer.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,16 +4,16 @@ export { getModelName } from "./shared/agent/model.config.js";
4
4
  export { ChatContextAccessError, resolveChatContext } from "./shared/agent/tool.helpers.js";
5
5
  export { requestContext } from "./shared/observability/request-context.js";
6
6
  export { setTimingWrapper } from "./shared/observability/performance.js";
7
- export { ToolRuntimeError, getToolTimeoutPolicy, invokeToolRuntime, toolRuntimeErrorToResult, } from "./shared/agent/tool.runtime.js";
7
+ export { ToolRuntimeError, getToolTimeoutPolicy, invokeToolRuntime, toolRuntimeErrorToResult } from "./shared/agent/tool.runtime.js";
8
8
  export { NegotiationSummarizer, buildFallbackDigest } from "./negotiation/negotiation.summarizer.js";
9
9
  export { SYSTEM_AGENT_IDS } from './shared/interfaces/agent.interface.js';
10
10
  // ─── Shared schemas ───────────────────────────────────────────────────────────
11
- export { ChatContextDigestSchema, } from "./shared/schemas/chat-context.schema.js";
12
- export { QuestionOptionSchema, QuestionSchema, QuestionStrategySchema, QuestionWithStrategySchema, QuestionGeneratorResponseSchema, QuestionModeSchema, QuestionDetectionSchema, QuestionActorSchema, QuestionAnswerSchema, } from "./shared/schemas/question.schema.js";
13
- export { ProfileIdentitySchema, ProfileNarrativeSchema, ProfileAttributesSchema, ProfileDocumentSchema, } from "./shared/schemas/profile.schema.js";
14
- export { NetworkAssignmentResourceTypeSchema, NetworkAssignmentModeSchema, NetworkAssignmentScopeSchema, NetworkAssignmentPromptPresenceSchema, NetworkAssignmentPolicySchema, NetworkAssignmentRawScoresSchema, NetworkAssignmentMetadataSchema, OpportunityEvidenceKindSchema, OpportunityEvidenceSchema, } from "./shared/schemas/network-assignment.schema.js";
15
- export { DEFAULT_NETWORK_ASSIGNMENT_THRESHOLD, classifyPromptPresence, resolveAssignmentNetworkScope, buildNetworkAssignmentDecision, combineAssignmentScores, } from "./shared/assignment/network-assignment.policy.js";
16
- export { buildCandidateEvidence, withCandidateEvidence, mergeOpportunityEvidence, withMatchedStrategies, renderOpportunityEvidenceForPrompt, } from "./opportunity/opportunity.evidence.js";
11
+ export { ChatContextDigestSchema } from "./shared/schemas/chat-context.schema.js";
12
+ export { QuestionOptionSchema, QuestionSchema, QuestionStrategySchema, QuestionWithStrategySchema, QuestionGeneratorResponseSchema, QuestionModeSchema, QuestionDetectionSchema, QuestionActorSchema, QuestionAnswerSchema } from "./shared/schemas/question.schema.js";
13
+ export { ProfileIdentitySchema, ProfileNarrativeSchema, ProfileAttributesSchema, ProfileDocumentSchema } from "./shared/schemas/profile.schema.js";
14
+ export { NetworkAssignmentResourceTypeSchema, NetworkAssignmentModeSchema, NetworkAssignmentScopeSchema, NetworkAssignmentPromptPresenceSchema, NetworkAssignmentPolicySchema, NetworkAssignmentRawScoresSchema, NetworkAssignmentMetadataSchema, OpportunityEvidenceKindSchema, OpportunityEvidenceSchema } from "./shared/schemas/network-assignment.schema.js";
15
+ export { DEFAULT_NETWORK_ASSIGNMENT_THRESHOLD, classifyPromptPresence, resolveAssignmentNetworkScope, buildNetworkAssignmentDecision, combineAssignmentScores } from "./shared/assignment/network-assignment.policy.js";
16
+ export { buildCandidateEvidence, withCandidateEvidence, mergeOpportunityEvidence, withMatchedStrategies, renderOpportunityEvidenceForPrompt } from "./opportunity/opportunity.evidence.js";
17
17
  // ─── Graph factories ──────────────────────────────────────────────────────────
18
18
  export { ChatGraphFactory } from "./chat/chat.graph.js";
19
19
  export { HomeGraphFactory } from "./opportunity/feed/feed.graph.js";
@@ -51,14 +51,14 @@ export { createProfileTools } from "./profile/profile.tools.js";
51
51
  export { QuestionGenerator } from "./opportunity/question.generator.js";
52
52
  // ─── Support utilities ────────────────────────────────────────────────────────
53
53
  export { renderNetworkContext } from './shared/network/metadata.renderer.js';
54
- export { canUserSeeOpportunity, isActionableForViewer, validateOpportunityActors, classifyOpportunity, selectByComposition, selectDigestCandidates, DIGEST_REDELIVERY_COOLDOWN_DAYS, FEED_SOFT_TARGETS, } from "./opportunity/opportunity.utils.js";
54
+ export { canUserSeeOpportunity, isActionableForViewer, validateOpportunityActors, classifyOpportunity, selectByComposition, selectDigestCandidates, DIGEST_REDELIVERY_COOLDOWN_DAYS, FEED_SOFT_TARGETS } from "./opportunity/opportunity.utils.js";
55
55
  export { getPrimaryActionLabel } from "./opportunity/opportunity.labels.js";
56
56
  export { computeFeedHealth } from "./opportunity/feed/feed.health.js";
57
- export { selectContactsForDiscovery, shouldRunIntroducerDiscovery, runIntroducerDiscovery, MAX_CONTACTS_PER_CYCLE, MAX_CANDIDATES_PER_CONTACT, INTRODUCER_DISCOVERY_SOURCE, } from "./opportunity/opportunity.introducer.js";
57
+ export { selectContactsForDiscovery, shouldRunIntroducerDiscovery, runIntroducerDiscovery, MAX_CONTACTS_PER_CYCLE, MAX_CANDIDATES_PER_CONTACT, INTRODUCER_DISCOVERY_SOURCE } from "./opportunity/opportunity.introducer.js";
58
58
  export { persistOpportunities } from "./opportunity/opportunity.persist.js";
59
59
  export { presentOpportunity } from "./opportunity/opportunity.presentation.js";
60
60
  export { stripUuids, stripIntroducerMentions } from "./opportunity/opportunity.presentation.js";
61
- export { getOrCreateDeliveryCardBatch, DELIVERY_CARD_CACHE_TTL, } from "./opportunity/delivery-card.cache.js";
61
+ export { getOrCreateDeliveryCardBatch, DELIVERY_CARD_CACHE_TTL } from "./opportunity/delivery-card.cache.js";
62
62
  // ─── Tools ────────────────────────────────────────────────────────────────────
63
63
  export { createToolRegistry } from "./shared/agent/tool.registry.js";
64
64
  export { createAgentTools } from './agent/agent.tools.js';