@indexnetwork/protocol 1.25.1-rc.209.1 → 1.25.3-rc.211.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.
- package/dist/agent/agent.tools.d.ts.map +1 -1
- package/dist/agent/agent.tools.js.map +1 -1
- package/dist/agent/tests/fakes.d.ts.map +1 -1
- package/dist/agent/tests/fakes.js.map +1 -1
- package/dist/chat/chat-streaming.types.d.ts.map +1 -1
- package/dist/chat/chat-streaming.types.js.map +1 -1
- package/dist/chat/chat.agent.d.ts.map +1 -1
- package/dist/chat/chat.agent.js.map +1 -1
- package/dist/chat/chat.graph.d.ts.map +1 -1
- package/dist/chat/chat.graph.js.map +1 -1
- package/dist/chat/chat.prompt.d.ts.map +1 -1
- package/dist/chat/chat.prompt.js.map +1 -1
- package/dist/chat/chat.prompt.modules.d.ts.map +1 -1
- package/dist/chat/chat.prompt.modules.js.map +1 -1
- package/dist/chat/chat.question-dedup.d.ts.map +1 -1
- package/dist/chat/chat.question-dedup.js.map +1 -1
- package/dist/chat/chat.state.d.ts.map +1 -1
- package/dist/chat/chat.state.js.map +1 -1
- package/dist/chat/chat.streamer.d.ts.map +1 -1
- package/dist/chat/chat.streamer.js.map +1 -1
- package/dist/chat/chat.suggester.d.ts.map +1 -1
- package/dist/chat/chat.suggester.js.map +1 -1
- package/dist/chat/chat.summarizer.d.ts.map +1 -1
- package/dist/chat/chat.summarizer.js.map +1 -1
- package/dist/chat/chat.title.generator.d.ts.map +1 -1
- package/dist/chat/chat.title.generator.js.map +1 -1
- package/dist/chat/chat.tools.d.ts.map +1 -1
- package/dist/chat/chat.tools.js.map +1 -1
- package/dist/chat/chat.utils.d.ts.map +1 -1
- package/dist/chat/chat.utils.js.map +1 -1
- package/dist/chat/tests/chat.graph.mocks.d.ts.map +1 -1
- package/dist/chat/tests/chat.graph.mocks.js.map +1 -1
- package/dist/contact/contact.inviter.d.ts.map +1 -1
- package/dist/contact/contact.inviter.js.map +1 -1
- package/dist/contact/contact.tools.d.ts.map +1 -1
- package/dist/contact/contact.tools.js.map +1 -1
- package/dist/context/context.generator.d.ts.map +1 -1
- package/dist/context/context.generator.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/integration/integration.tools.d.ts.map +1 -1
- package/dist/integration/integration.tools.js.map +1 -1
- package/dist/intent/intent.clarifier.d.ts.map +1 -1
- package/dist/intent/intent.clarifier.js.map +1 -1
- package/dist/intent/intent.graph.d.ts.map +1 -1
- package/dist/intent/intent.graph.js.map +1 -1
- package/dist/intent/intent.indexer.d.ts.map +1 -1
- package/dist/intent/intent.indexer.js.map +1 -1
- package/dist/intent/intent.inferrer.d.ts.map +1 -1
- package/dist/intent/intent.inferrer.js.map +1 -1
- package/dist/intent/intent.reconciler.d.ts.map +1 -1
- package/dist/intent/intent.reconciler.js.map +1 -1
- package/dist/intent/intent.state.d.ts.map +1 -1
- package/dist/intent/intent.state.js.map +1 -1
- package/dist/intent/intent.tools.d.ts.map +1 -1
- package/dist/intent/intent.tools.js.map +1 -1
- package/dist/intent/intent.verifier.d.ts.map +1 -1
- package/dist/intent/intent.verifier.js.map +1 -1
- package/dist/maintenance/maintenance.graph.d.ts.map +1 -1
- package/dist/maintenance/maintenance.graph.js.map +1 -1
- package/dist/maintenance/maintenance.state.d.ts.map +1 -1
- package/dist/maintenance/maintenance.state.js.map +1 -1
- package/dist/mcp/elicitation.builder.d.ts.map +1 -1
- package/dist/mcp/elicitation.builder.js.map +1 -1
- package/dist/mcp/elicitation.dispatcher.d.ts.map +1 -1
- package/dist/mcp/elicitation.dispatcher.js.map +1 -1
- package/dist/mcp/mcp.server.d.ts.map +1 -1
- package/dist/mcp/mcp.server.js.map +1 -1
- package/dist/negotiation/insight.generator.d.ts.map +1 -1
- package/dist/negotiation/insight.generator.js.map +1 -1
- package/dist/negotiation/negotiation.agent.d.ts.map +1 -1
- package/dist/negotiation/negotiation.agent.js.map +1 -1
- package/dist/negotiation/negotiation.graph.d.ts.map +1 -1
- package/dist/negotiation/negotiation.graph.js.map +1 -1
- package/dist/negotiation/negotiation.state.d.ts.map +1 -1
- package/dist/negotiation/negotiation.state.js.map +1 -1
- package/dist/negotiation/negotiation.summarizer.d.ts.map +1 -1
- package/dist/negotiation/negotiation.summarizer.js.map +1 -1
- package/dist/negotiation/negotiation.tools.d.ts.map +1 -1
- package/dist/negotiation/negotiation.tools.js.map +1 -1
- package/dist/network/indexer/indexer.graph.d.ts.map +1 -1
- package/dist/network/indexer/indexer.graph.js.map +1 -1
- package/dist/network/indexer/indexer.state.d.ts.map +1 -1
- package/dist/network/indexer/indexer.state.js.map +1 -1
- package/dist/network/membership/membership.graph.d.ts.map +1 -1
- package/dist/network/membership/membership.graph.js.map +1 -1
- package/dist/network/membership/membership.state.d.ts.map +1 -1
- package/dist/network/membership/membership.state.js.map +1 -1
- package/dist/network/network.graph.d.ts.map +1 -1
- package/dist/network/network.graph.js.map +1 -1
- package/dist/network/network.state.d.ts.map +1 -1
- package/dist/network/network.state.js.map +1 -1
- package/dist/network/network.tools.d.ts.map +1 -1
- package/dist/network/network.tools.js.map +1 -1
- package/dist/opportunity/delivery-card.cache.d.ts.map +1 -1
- package/dist/opportunity/delivery-card.cache.js.map +1 -1
- package/dist/opportunity/discovery-question.helper.d.ts.map +1 -1
- package/dist/opportunity/discovery-question.helper.js.map +1 -1
- package/dist/opportunity/feed/feed.categorizer.d.ts.map +1 -1
- package/dist/opportunity/feed/feed.categorizer.js.map +1 -1
- package/dist/opportunity/feed/feed.graph.d.ts.map +1 -1
- package/dist/opportunity/feed/feed.graph.js.map +1 -1
- package/dist/opportunity/feed/feed.health.d.ts.map +1 -1
- package/dist/opportunity/feed/feed.health.js.map +1 -1
- package/dist/opportunity/feed/feed.state.d.ts.map +1 -1
- package/dist/opportunity/feed/feed.state.js.map +1 -1
- package/dist/opportunity/negotiation-context.loader.d.ts.map +1 -1
- package/dist/opportunity/negotiation-context.loader.js.map +1 -1
- package/dist/opportunity/negotiation-summary.builder.d.ts.map +1 -1
- package/dist/opportunity/negotiation-summary.builder.js.map +1 -1
- package/dist/opportunity/opportunity.discover.d.ts.map +1 -1
- package/dist/opportunity/opportunity.discover.js.map +1 -1
- package/dist/opportunity/opportunity.enricher.d.ts.map +1 -1
- package/dist/opportunity/opportunity.enricher.js.map +1 -1
- package/dist/opportunity/opportunity.evaluator.d.ts.map +1 -1
- package/dist/opportunity/opportunity.evaluator.js.map +1 -1
- package/dist/opportunity/opportunity.graph.d.ts.map +1 -1
- package/dist/opportunity/opportunity.graph.js.map +1 -1
- package/dist/opportunity/opportunity.introducer.d.ts.map +1 -1
- package/dist/opportunity/opportunity.introducer.js.map +1 -1
- package/dist/opportunity/opportunity.labels.d.ts.map +1 -1
- package/dist/opportunity/opportunity.labels.js.map +1 -1
- package/dist/opportunity/opportunity.pending-questions.d.ts.map +1 -1
- package/dist/opportunity/opportunity.pending-questions.js.map +1 -1
- package/dist/opportunity/opportunity.persist.d.ts.map +1 -1
- package/dist/opportunity/opportunity.persist.js.map +1 -1
- package/dist/opportunity/opportunity.presentation.d.ts.map +1 -1
- package/dist/opportunity/opportunity.presentation.js.map +1 -1
- package/dist/opportunity/opportunity.presenter.d.ts.map +1 -1
- package/dist/opportunity/opportunity.presenter.js.map +1 -1
- package/dist/opportunity/opportunity.state.d.ts.map +1 -1
- package/dist/opportunity/opportunity.state.js.map +1 -1
- package/dist/opportunity/opportunity.tools.d.ts.map +1 -1
- package/dist/opportunity/opportunity.tools.js.map +1 -1
- package/dist/opportunity/opportunity.utils.d.ts.map +1 -1
- package/dist/opportunity/opportunity.utils.js.map +1 -1
- package/dist/opportunity/question.generator.d.ts.map +1 -1
- package/dist/opportunity/question.generator.js.map +1 -1
- package/dist/opportunity/question.prompt.d.ts.map +1 -1
- package/dist/opportunity/question.prompt.js.map +1 -1
- package/dist/premise/premise.analyzer.d.ts.map +1 -1
- package/dist/premise/premise.analyzer.js.map +1 -1
- package/dist/premise/premise.decomposer.d.ts.map +1 -1
- package/dist/premise/premise.decomposer.js.map +1 -1
- package/dist/premise/premise.graph.d.ts.map +1 -1
- package/dist/premise/premise.graph.js.map +1 -1
- package/dist/premise/premise.indexer.d.ts.map +1 -1
- package/dist/premise/premise.indexer.js.map +1 -1
- package/dist/premise/premise.state.d.ts.map +1 -1
- package/dist/premise/premise.state.js.map +1 -1
- package/dist/premise/premise.tools.d.ts.map +1 -1
- package/dist/premise/premise.tools.js.map +1 -1
- package/dist/profile/profile.enricher.d.ts.map +1 -1
- package/dist/profile/profile.enricher.js.map +1 -1
- package/dist/profile/profile.generator.d.ts.map +1 -1
- package/dist/profile/profile.generator.js.map +1 -1
- package/dist/profile/profile.graph.d.ts.map +1 -1
- package/dist/profile/profile.graph.js.map +1 -1
- package/dist/profile/profile.state.d.ts.map +1 -1
- package/dist/profile/profile.state.js.map +1 -1
- package/dist/profile/profile.tools.d.ts.map +1 -1
- package/dist/profile/profile.tools.js.map +1 -1
- package/dist/questioner/questioner.agent.d.ts.map +1 -1
- package/dist/questioner/questioner.agent.js.map +1 -1
- package/dist/questioner/questioner.presets.d.ts.map +1 -1
- package/dist/questioner/questioner.presets.js.map +1 -1
- package/dist/questioner/questioner.types.d.ts.map +1 -1
- package/dist/questioner/questioner.types.js.map +1 -1
- package/dist/shared/agent/model-signal.d.ts.map +1 -1
- package/dist/shared/agent/model-signal.js.map +1 -1
- package/dist/shared/agent/model.config.d.ts.map +1 -1
- package/dist/shared/agent/model.config.js.map +1 -1
- package/dist/shared/agent/response.streamer.d.ts.map +1 -1
- package/dist/shared/agent/response.streamer.js.map +1 -1
- package/dist/shared/agent/tests/llm-assert.d.ts.map +1 -1
- package/dist/shared/agent/tests/llm-assert.js.map +1 -1
- package/dist/shared/agent/tool.factory.d.ts.map +1 -1
- package/dist/shared/agent/tool.factory.js.map +1 -1
- package/dist/shared/agent/tool.helpers.d.ts.map +1 -1
- package/dist/shared/agent/tool.helpers.js.map +1 -1
- package/dist/shared/agent/tool.registry.d.ts.map +1 -1
- package/dist/shared/agent/tool.registry.js.map +1 -1
- package/dist/shared/agent/tool.runtime.d.ts.map +1 -1
- package/dist/shared/agent/tool.runtime.js +4 -0
- package/dist/shared/agent/tool.runtime.js.map +1 -1
- package/dist/shared/agent/utility.tools.d.ts.map +1 -1
- package/dist/shared/agent/utility.tools.js.map +1 -1
- package/dist/shared/hyde/hyde.generator.d.ts.map +1 -1
- package/dist/shared/hyde/hyde.generator.js.map +1 -1
- package/dist/shared/hyde/hyde.graph.d.ts.map +1 -1
- package/dist/shared/hyde/hyde.graph.js.map +1 -1
- package/dist/shared/hyde/hyde.state.d.ts.map +1 -1
- package/dist/shared/hyde/hyde.state.js.map +1 -1
- package/dist/shared/hyde/hyde.strategies.d.ts.map +1 -1
- package/dist/shared/hyde/hyde.strategies.js.map +1 -1
- package/dist/shared/hyde/lens.inferrer.d.ts.map +1 -1
- package/dist/shared/hyde/lens.inferrer.js.map +1 -1
- package/dist/shared/interfaces/agent-dispatcher.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/agent-dispatcher.interface.js.map +1 -1
- package/dist/shared/interfaces/agent.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/agent.interface.js.map +1 -1
- package/dist/shared/interfaces/auth.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/auth.interface.js.map +1 -1
- package/dist/shared/interfaces/cache.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/cache.interface.js.map +1 -1
- package/dist/shared/interfaces/chat-message-writer.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/chat-message-writer.interface.js.map +1 -1
- package/dist/shared/interfaces/chat-session.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/chat-session.interface.js.map +1 -1
- package/dist/shared/interfaces/chat-summary.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/chat-summary.interface.js.map +1 -1
- package/dist/shared/interfaces/connect-link.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/connect-link.interface.js.map +1 -1
- package/dist/shared/interfaces/contact.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/contact.interface.js.map +1 -1
- package/dist/shared/interfaces/database.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/database.interface.js.map +1 -1
- package/dist/shared/interfaces/delivery-ledger.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/delivery-ledger.interface.js.map +1 -1
- package/dist/shared/interfaces/discovery-run.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/discovery-run.interface.js.map +1 -1
- package/dist/shared/interfaces/embedder.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/embedder.interface.js.map +1 -1
- package/dist/shared/interfaces/enrichment.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/enrichment.interface.js.map +1 -1
- package/dist/shared/interfaces/integration.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/integration.interface.js.map +1 -1
- package/dist/shared/interfaces/negotiation-events.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/negotiation-events.interface.js.map +1 -1
- package/dist/shared/interfaces/negotiation-summary.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/negotiation-summary.interface.js.map +1 -1
- package/dist/shared/interfaces/question-generator.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/question-generator.interface.js.map +1 -1
- package/dist/shared/interfaces/questioner.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/questioner.interface.js.map +1 -1
- package/dist/shared/interfaces/queue.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/queue.interface.js.map +1 -1
- package/dist/shared/interfaces/scraper.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/scraper.interface.js.map +1 -1
- package/dist/shared/interfaces/storage.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/storage.interface.js.map +1 -1
- package/dist/shared/network/metadata.renderer.d.ts.map +1 -1
- package/dist/shared/network/metadata.renderer.js.map +1 -1
- package/dist/shared/observability/debug-meta.sanitizer.d.ts.map +1 -1
- package/dist/shared/observability/debug-meta.sanitizer.js.map +1 -1
- package/dist/shared/observability/log.d.ts.map +1 -1
- package/dist/shared/observability/log.js.map +1 -1
- package/dist/shared/observability/performance.d.ts +7 -0
- package/dist/shared/observability/performance.d.ts.map +1 -1
- package/dist/shared/observability/performance.js +22 -10
- package/dist/shared/observability/performance.js.map +1 -1
- package/dist/shared/observability/protocol.logger.d.ts.map +1 -1
- package/dist/shared/observability/protocol.logger.js.map +1 -1
- package/dist/shared/observability/request-context.d.ts.map +1 -1
- package/dist/shared/observability/request-context.js.map +1 -1
- package/dist/shared/observability/trace.d.ts.map +1 -1
- package/dist/shared/observability/trace.js.map +1 -1
- package/dist/shared/schemas/chat-context.schema.d.ts.map +1 -1
- package/dist/shared/schemas/chat-context.schema.js.map +1 -1
- package/dist/shared/schemas/negotiation-digest.schema.d.ts.map +1 -1
- package/dist/shared/schemas/negotiation-digest.schema.js.map +1 -1
- package/dist/shared/schemas/pending-question.schema.d.ts.map +1 -1
- package/dist/shared/schemas/pending-question.schema.js.map +1 -1
- package/dist/shared/schemas/question.schema.d.ts.map +1 -1
- package/dist/shared/schemas/question.schema.js.map +1 -1
- package/dist/shared/ui/lucide.icon-catalog.d.ts.map +1 -1
- package/dist/shared/ui/lucide.icon-catalog.js.map +1 -1
- package/dist/shared/utils/social-label.d.ts.map +1 -1
- package/dist/shared/utils/social-label.js.map +1 -1
- package/dist/shared/utils/telegram-handle.d.ts.map +1 -1
- package/dist/shared/utils/telegram-handle.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent.state.js","sourceRoot":"","sources":["../../src/intent/intent.state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"intent.state.js","sourceRoot":"/","sources":["intent/intent.state.ts"],"names":[],"mappings":"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","sourcesContent":["import { Annotation } from \"@langchain/langgraph\";\nimport { BaseMessage } from \"@langchain/core/messages\";\nimport { InferredIntent } from \"./intent.inferrer.js\";\nimport { SemanticVerifierOutput } from \"./intent.verifier.js\";\nimport { IntentReconcilerOutput } from \"./intent.reconciler.js\";\nimport type { DebugMetaAgent } from '../chat/chat-streaming.types.js';\n\n/**\n * Extended InferredIntent that includes verification results.\n * We attach the verification output directly to the intent object\n * as it flows through the graph.\n */\nexport type VerifiedIntent = InferredIntent & {\n verification?: SemanticVerifierOutput;\n score?: number; // Calculated min(authority, sincerity, clarity)\n};\n\n/**\n * Result of executing a single reconciler action.\n */\nexport interface ExecutionResult {\n /** The action type that was executed */\n actionType: 'create' | 'update' | 'expire';\n /** Whether the action succeeded */\n success: boolean;\n /** The intent ID (created/updated/archived) */\n intentId?: string;\n /** Final payload (sanitized, for create/update) */\n payload?: string;\n /** Error message if failed */\n error?: string;\n}\n\n/**\n * The Graph State using LangGraph Annotations.\n * This acts as the central bus for data flowing through our graph.\n */\nexport const IntentGraphState = Annotation.Root({\n // --- Inputs (Required at start) ---\n\n /**\n * The unique identifier of the user whose intents are being processed.\n * Required for database operations.\n */\n userId: Annotation<string>,\n\n /**\n * The user's profile context (Identity, Narrative, etc.)\n */\n userProfile: Annotation<string>,\n\n /**\n * Explicit input content (e.g., user message).\n * Optional - graph might run on implicit only.\n */\n inputContent: Annotation<string | undefined>,\n\n /**\n * Conversation history for context-aware intent inference.\n * Used to resolve anaphoric references (\"that intent\", \"this goal\").\n * Limited to recent messages (typically last 10) for token efficiency.\n * Optional - if not provided, intent inference uses only inputContent.\n */\n conversationContext: Annotation<BaseMessage[] | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n\n /**\n * Operation mode controls graph flow and determines which nodes execute.\n * - 'create': Full pipeline (prep → inference → verification → reconciliation → execution)\n * - 'update': Skip verification if no new intents (prep → inference → reconciliation → execution)\n * - 'delete': Skip inference and verification (prep → reconciliation → execution)\n * - 'read': Fast path (prep → queryNode → END) — reads intents without LLM calls\n * - 'propose': Inference + verification only, stops before reconciliation (no DB writes)\n *\n * Defaults to 'create' for backward compatibility.\n */\n operationMode: Annotation<'create' | 'update' | 'delete' | 'read' | 'propose'>({\n reducer: (curr, next) => next ?? curr,\n default: () => 'create' as const,\n }),\n\n /**\n * For update/delete operations, specifies which intent IDs to target.\n * Optional - used when modifying or removing specific intents.\n */\n targetIntentIds: Annotation<string[] | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n\n /**\n * Optional index scope (index ID). Used for linking created intents to an index\n * and for scoping read operations. Prep always fetches ALL user intents via\n * getActiveIntents(userId) regardless of index scope (for global dedup/reconciliation).\n */\n networkId: Annotation<string | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n\n // --- Populated by Graph (Prep Node) ---\n\n /**\n * The formatted string of currently active intents.\n * Always populated by prep via getActiveIntents(userId).\n */\n activeIntents: Annotation<string>({\n reducer: (curr, next) => next,\n default: () => \"\",\n }),\n\n // --- Intermediate State ---\n\n /**\n * List of raw intents extracted from text.\n */\n inferredIntents: Annotation<InferredIntent[]>({\n reducer: (curr, next) => next, // Overwrite with new inference\n default: () => [],\n }),\n\n /**\n * List of intents that have passed semantic verification.\n * Invalid intents are filtered out before reaching this state.\n */\n verifiedIntents: Annotation<VerifiedIntent[]>({\n reducer: (curr, next) => next,\n default: () => [],\n }),\n\n // --- Output ---\n\n /**\n * Final actions to be performed on the DB (Create, Update, Expire).\n */\n actions: Annotation<IntentReconcilerOutput['actions']>({\n reducer: (curr, next) => next,\n default: () => [],\n }),\n\n /**\n * Results of executing actions against the database.\n * Populated by executorNode after actions are persisted.\n */\n executionResults: Annotation<ExecutionResult[]>({\n reducer: (curr, next) => next,\n default: () => [],\n }),\n\n // --- Error State ---\n\n /**\n * If set, indicates a fatal error that should short-circuit the graph to END.\n * Populated by prep when a precondition fails (e.g. missing profile).\n */\n error: Annotation<string | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n\n // --- Trace Output ---\n\n /**\n * Accumulated trace entries from each graph node.\n * Used for observability: surfaces internal processing steps (inference,\n * verification with Felicity scores, reconciliation) to the frontend.\n */\n trace: Annotation<Array<{ node: string; detail?: string; data?: Record<string, unknown> }>>({\n reducer: (curr, next) => [...curr, ...(next || [])],\n default: () => [],\n }),\n\n /** Timing records for each agent invocation within this graph run. */\n agentTimings: Annotation<DebugMetaAgent[]>({\n reducer: (acc, val) => [...acc, ...val],\n default: () => [],\n }),\n\n // --- Read Mode Fields ---\n\n /**\n * For read mode: the set of index IDs the caller's agent can reach.\n * When set and neither networkId nor queryUserId is provided, the graph\n * returns the caller's own intents across all indexes in this set (scope-aware\n * default path). Populated by the tool layer from context.indexScope.\n */\n indexScope: Annotation<string[] | undefined>({\n reducer: (_curr, next) => next,\n default: () => undefined,\n }),\n\n /**\n * For read mode: filter intents by a specific user when reading in an index.\n * When omitted and index-scoped, returns all intents in the index.\n */\n queryUserId: Annotation<string | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n\n /**\n * For read mode: when true, return all of the current user's intents\n * ignoring index scope. Used before create_intent to detect duplicates.\n */\n allUserIntents: Annotation<boolean>({\n reducer: (curr, next) => next ?? curr,\n default: () => false,\n }),\n\n /**\n * Output of read mode: queried intents with count and optional metadata.\n */\n readResult: Annotation<{\n count: number;\n intents: Array<{\n id: string;\n description: string;\n summary: string | null;\n createdAt: Date;\n userId?: string;\n userName?: string | null;\n }>;\n message?: string;\n networkId?: string;\n } | undefined>({\n reducer: (curr, next) => next,\n default: () => undefined,\n }),\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent.tools.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"intent.tools.d.ts","sourceRoot":"/","sources":["intent/intent.tools.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AA4C5E,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,qDAmrBvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent.tools.js","sourceRoot":"","sources":["../../src/intent/intent.tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"intent.tools.js","sourceRoot":"/","sources":["intent/intent.tools.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\n\nimport type { ExecutionResult, VerifiedIntent } from \"./intent.state.js\";\nimport { protocolLogger } from \"../shared/observability/protocol.logger.js\";\nimport { requestContext } from \"../shared/observability/request-context.js\";\n\nimport type { DefineTool, ToolDeps } from \"../shared/agent/tool.helpers.js\";\nimport { success, error, UUID_REGEX } from \"../shared/agent/tool.helpers.js\";\nimport type { UserRecord } from \"../shared/interfaces/database.interface.js\";\nimport { invokeWithAbortSignal } from \"../shared/agent/model-signal.js\";\n\nconst logger = protocolLogger(\"ChatTools:Intent\");\n\n/**\n * Sanitize JSON string for use inside a markdown code fence (```). Escapes backticks\n * so embedded ``` cannot close the fence prematurely.\n */\nfunction sanitizeJsonForCodeFence(json: string): string {\n return json.replace(/`/g, \"\\\\u0060\");\n}\n\n/** When context is index-scoped, verifies the caller is still a member of that index. Returns error message or null. */\nasync function ensureScopedMembership(\n context: { networkId?: string; indexName?: string; userId: string },\n systemDb: ToolDeps['systemDb']\n): Promise<string | null> {\n if (!context.networkId) return null;\n const isMember = await systemDb.isNetworkMember(context.networkId, context.userId);\n if (!isMember) {\n return `This chat is scoped to ${context.indexName ?? 'this index'}. You are no longer a member of this community.`;\n }\n return null;\n}\n\nfunction buildApprovedProfileFallback(user: UserRecord | null | undefined): string {\n const bio = user?.intro?.trim();\n if (!user || !bio) return \"\";\n\n return JSON.stringify({\n userId: user.id,\n identity: {\n name: user.name ?? \"\",\n bio,\n location: user.location?.trim() ?? \"\",\n },\n narrative: { context: bio },\n attributes: { skills: [], interests: [] },\n });\n}\n\nexport function createIntentTools(defineTool: DefineTool, deps: ToolDeps) {\n const { graphs, userDb } = deps;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // INTENT CRUD\n // ─────────────────────────────────────────────────────────────────────────────\n\n const readIntents = defineTool({\n name: \"read_intents\",\n description:\n \"Retrieves intents (signals of interest/need, e.g. 'Looking for a React developer in Berlin'). \" +\n \"Intents are the core unit of discovery — they represent what users are seeking and drive semantic matching for opportunities.\\n\\n\" +\n \"**Usage modes:**\\n\" +\n \"- No parameters: returns the **caller's own** active intents. In an index-scoped chat the result is clamped to the reachable indexes (the bound index plus the user's personal index). In an unscoped chat the result spans all of the user's active intents. There is no implicit default to the scoped index — to browse the bound community's intents, pass `networkId` explicitly.\\n\" +\n \"- With networkId: returns **all members'** intents in that index (community browse path). Add userId to filter to one member.\\n\" +\n \"- With userId in an index-scoped chat: reads that member's intents in the bound index. The target user must be a member of that index.\\n\" +\n \"- With userId in an unscoped chat: only works for the current user (cannot read another user's global intents without an index scope).\\n\\n\" +\n \"**Workflow:** To explore what members of an index are looking for, first call read_network_memberships(networkId) to list members, \" +\n \"then read_intents(networkId) to see all intents in that community. \" +\n \"Each intent includes: id, description (payload), summary, confidence (0-1), inferenceType (explicit/implicit), status, and linked indexes.\\n\\n\" +\n \"**Returns:** Paginated list of intents with count. Use the intent IDs in subsequent calls to update_intent, delete_intent, or create_intent_index.\",\n querySchema: z.object({\n networkId: z.string().optional().describe(\"Index UUID — filters intents to this index (community browse path: returns all members' intents). There is no implicit default in index-scoped chats; omit to get caller-owned intents across the reachable indexes, or pass the scoped index UUID to browse community members. Get index IDs from read_networks.\"),\n userId: z.string().optional().describe(\"User ID — filters to this user's intents. In an index-scoped chat, this reads that member's intents in the bound index (no networkId required). In an unscoped chat, only the current user is allowed without networkId; cross-user reads require an index scope. Omit for caller-owned intents.\"),\n limit: z.number().int().min(1).max(100).optional().describe(\"Page size (1-100). Defaults to returning all results if omitted.\"),\n page: z.number().int().min(1).optional().describe(\"Page number (1-based). Only used when limit is also provided.\"),\n }),\n handler: async ({ context, query }) => {\n const scopeErr = await ensureScopedMembership(context, deps.systemDb);\n if (scopeErr) return error(scopeErr);\n\n // Distinguish \"explicit network browse\" from \"implicit scope-aware read\"\n const explicitNetworkId = query.networkId?.trim();\n const explicitUserId = query.userId?.trim();\n\n // Validate explicit networkId format\n if (explicitNetworkId && !UUID_REGEX.test(explicitNetworkId)) {\n return error(\"Invalid network ID format.\");\n }\n\n // Strict scope enforcement: in a scoped chat, the only allowed explicit\n // networkId is context.networkId itself. The chat's focus is the bound\n // network; cross-network browse must happen in a separate (unscoped)\n // chat or a chat scoped to that other network.\n if (context.networkId && explicitNetworkId && explicitNetworkId !== context.networkId) {\n return error(\n `This chat is scoped to ${context.indexName ?? 'this index'}. You can only read intents from this community.`\n );\n }\n\n // Cross-user read in scoped chat: target user must be a member of the scoped index\n if (context.networkId && explicitUserId && explicitUserId !== context.userId) {\n const isInScopedIndex = await deps.systemDb.isNetworkMember(context.networkId, explicitUserId);\n if (!isInScopedIndex) {\n return error(\n `This chat is scoped to ${context.indexName ?? 'this index'}. You can only read intents from members of this community.`\n );\n }\n }\n\n // Cross-user global read is disallowed without an index scope\n if (!explicitNetworkId && !context.networkId && explicitUserId && explicitUserId !== context.userId) {\n return error(\"Cannot read another user's global intents. Use networkId to scope to a shared network.\");\n }\n\n // Membership check for explicit cross-network reads in unscoped chats\n if (!context.networkId && explicitNetworkId) {\n const callerIsMember = await deps.systemDb.isNetworkMember(explicitNetworkId, context.userId);\n if (!callerIsMember) {\n return error(\"You can only read intents from indexes you are a member of.\");\n }\n }\n\n // ── Choose the read mode ──\n // 1. Explicit networkId (browse all members in that index) — pass networkId, optionally + queryUserId.\n // 2. Explicit userId in a scoped chat — read that user's intents in the bound network.\n // 3. Explicit userId in an unscoped chat — only self (cross-user rejected above); global \"my intents\".\n // 4. Implicit (no explicit network/user) in scoped chat — pass indexScope, no networkId.\n // 5. Implicit in unscoped chat — global getActiveIntents (caller's own).\n const graphInput: Record<string, unknown> = {\n userId: context.userId,\n userProfile: \"\",\n operationMode: 'read' as const,\n };\n\n if (explicitNetworkId) {\n graphInput.networkId = explicitNetworkId;\n if (explicitUserId) graphInput.queryUserId = explicitUserId;\n } else if (explicitUserId && context.networkId) {\n // Scoped chat + userId: implicit network is the chat's bound network.\n // Membership of the target user was verified above.\n graphInput.networkId = context.networkId;\n graphInput.queryUserId = explicitUserId;\n } else if (explicitUserId) {\n // Unscoped chat + userId: only allowed for self (others rejected above).\n graphInput.queryUserId = explicitUserId;\n graphInput.allUserIntents = true;\n } else if (context.indexScope && context.indexScope.length > 0 && context.networkId) {\n // Scoped chat, implicit read: caller-only across reachable indexes.\n graphInput.indexScope = context.indexScope;\n } else {\n // Unscoped, implicit read: caller's global intents.\n graphInput.allUserIntents = true;\n }\n\n const _readIntentGraphStart = Date.now();\n const _readIntentTraceEmitter = requestContext.getStore()?.traceEmitter;\n _readIntentTraceEmitter?.({ type: \"graph_start\", name: \"intent\" });\n const result = await invokeWithAbortSignal(graphs.intent, graphInput);\n const _readIntentGraphMs = Date.now() - _readIntentGraphStart;\n _readIntentTraceEmitter?.({ type: \"graph_end\", name: \"intent\", durationMs: _readIntentGraphMs });\n\n if (result.readResult) {\n if (result.readResult.count === 0 && result.readResult.message && /not a member|Network not found/i.test(result.readResult.message)) {\n return error(result.readResult.message);\n }\n\n const shouldPaginate = query.limit !== undefined || query.page !== undefined;\n if (shouldPaginate && Array.isArray(result.readResult.intents)) {\n const limit = query.limit ?? 20;\n const page = query.page ?? 1;\n const offset = (page - 1) * limit;\n const pagedIntents = result.readResult.intents.slice(offset, offset + limit);\n return success({\n ...result.readResult,\n count: pagedIntents.length,\n totalCount: result.readResult.intents.length,\n limit,\n page,\n totalPages: Math.ceil(result.readResult.intents.length / limit),\n intents: pagedIntents,\n _graphTimings: [{ name: 'intent', durationMs: _readIntentGraphMs, agents: result.agentTimings ?? [] }],\n });\n }\n\n return success({ ...result.readResult, _graphTimings: [{ name: 'intent', durationMs: _readIntentGraphMs, agents: result.agentTimings ?? [] }] });\n }\n return error(\"Failed to fetch intents.\");\n },\n });\n\n const createIntent = defineTool({\n name: \"create_intent\",\n description:\n \"Creates a new intent (signal of interest/need) for the authenticated user. Intents drive the discovery engine — once created, \" +\n \"the system automatically evaluates them against indexes the user belongs to, links them to relevant communities, and begins \" +\n \"searching for matching opportunities (complementary intents from other users).\\n\\n\" +\n \"**What to pass:** A clear, concept-based description of what the user is looking for (e.g. 'Looking for an AI/ML co-founder in Berlin', \" +\n \"'Need a designer for a mobile app project'). If the user provided a URL, scrape it with scrape_url first and synthesize the content into a description.\\n\\n\" +\n \"**What happens:** The system runs inference (extracting structured intents), verification (checking specificity and speech-act type), \" +\n \"and returns a proposal widget. The proposal is NOT yet persisted — the user must approve it first.\\n\\n\" +\n \"**Returns:** An intent_proposal code block that MUST be included verbatim in the response. The frontend renders it as an interactive \" +\n \"card the user can approve or skip. On approval, the intent is persisted, indexed, and discovery begins.\\n\\n\" +\n \"**Next steps after approval:** The intent is automatically linked to relevant indexes. Call discover_opportunities(searchQuery) to explicitly trigger discovery, \" +\n \"or wait for background processing to find matches.\\n\\n\" +\n \"**Specificity gate.** Before calling this tool, judge whether the description is concrete enough to be \" +\n \"useful for matching. If the user says \\\"find a job\\\", \\\"meet people\\\", or \\\"learn something\\\", that's too \" +\n \"vague — FIRST call read_user_profiles() + read_intents() to understand their context, THEN propose a \" +\n \"refined version (\\\"Based on your background in X, did you mean 'Y'?\\\") and wait for confirmation before \" +\n \"calling create_intent. Specific asks (\\\"senior UX design role at a tech company in Berlin\\\") can go \" +\n \"directly to create_intent.\\n\\n\" +\n \"**URL handling.** If the user pastes a URL describing the intent (e.g. a job posting), call scrape_url \" +\n \"first with objective=\\\"Extract key details for an intent\\\", synthesize a conceptual description from the \" +\n \"content, then call create_intent with the synthesis. Exception: profile URLs (LinkedIn, GitHub, X) passed \" +\n \"to create_user_profile are handled by that tool directly — do not scrape first.\",\n querySchema: z.object({\n description: z.string().describe(\"A clear, specific description of what the user is looking for. Should be concept-based, not a raw URL. If the user shared a URL, scrape it first with scrape_url and pass the synthesized content here. Vague descriptions will be rejected — include what kind, what for, and/or timeframe.\"),\n networkId: z.string().optional().describe(\"Index UUID to link the intent to upon creation. Defaults to the scoped index in index-scoped chats. Get index IDs from read_networks. If omitted, the system auto-assigns to relevant indexes based on their prompts.\"),\n autoApprove: z.boolean().optional().describe(\"When true, automatically persists all verified intents without returning proposal cards for manual approval. MCP agents SHOULD set this to true since there is no UI for card-based approval. Web chat agents should omit or set to false to get interactive proposal cards.\"),\n }),\n handler: async ({ context, query }) => {\n const scopeErr = await ensureScopedMembership(context, deps.systemDb);\n if (scopeErr) return error(scopeErr);\n if (!query.description?.trim()) {\n return error(\"Description is required.\");\n }\n\n // Strict scope enforcement\n if (context.networkId && query.networkId?.trim() && query.networkId.trim() !== context.networkId) {\n return error(\n `This chat is scoped to ${context.indexName ?? 'this index'}. You can only create intents in this community.`\n );\n }\n\n const effectiveIndexId = context.networkId || query.networkId?.trim() || undefined;\n\n // Fetch profile (the intent graph needs it for inference)\n const _profileGraphStart1 = Date.now();\n const _createIntentProfileTraceEmitter = requestContext.getStore()?.traceEmitter;\n _createIntentProfileTraceEmitter?.({ type: \"graph_start\", name: \"profile\" });\n const profileResult = await invokeWithAbortSignal(graphs.profile, { userId: context.userId, operationMode: 'query' as const });\n const _profileGraphMs1 = Date.now() - _profileGraphStart1;\n _createIntentProfileTraceEmitter?.({ type: \"graph_end\", name: \"profile\", durationMs: _profileGraphMs1 });\n const latestUser = profileResult.profile ? undefined : typeof userDb.getUser === \"function\" ? await userDb.getUser() : context.user;\n const approvedProfileFallback = profileResult.profile ? \"\" : buildApprovedProfileFallback(latestUser);\n const userProfile = profileResult.profile ? JSON.stringify(profileResult.profile) : approvedProfileFallback;\n\n // Run inference + verification only (propose mode — no DB persistence)\n const _intentGraphStart1 = Date.now();\n const _createIntentTraceEmitter = requestContext.getStore()?.traceEmitter;\n _createIntentTraceEmitter?.({ type: \"graph_start\", name: \"intent\" });\n const result = await invokeWithAbortSignal(graphs.intent, {\n userId: context.userId,\n userProfile,\n inputContent: query.description,\n operationMode: 'propose' as const,\n ...(effectiveIndexId ? { networkId: effectiveIndexId } : {}),\n });\n const _intentGraphMs1 = Date.now() - _intentGraphStart1;\n _createIntentTraceEmitter?.({ type: \"graph_end\", name: \"intent\", durationMs: _intentGraphMs1 });\n logger.debug(\"Intent graph propose response\", { result });\n\n const verified = result.verifiedIntents || [];\n\n // MCP contexts have no interactive UI for proposal cards — default to auto-approve\n const shouldAutoApprove = query.autoApprove ?? context.isMcp ?? false;\n \n // Extract trace from graph and convert to debugSteps\n const trace = Array.isArray(result.trace) ? result.trace : [];\n const debugSteps = trace.map((t: { node: string; detail?: string; data?: Record<string, unknown> }) => ({\n step: t.node,\n detail: t.detail,\n ...(t.data ? { data: t.data } : {}),\n }));\n \n if (verified.length === 0) {\n // Build a descriptive rejection reason from the trace so the ReACT agent\n // can retry with a better description or ask the user for clarification.\n // When inference produces 0 intents, propose mode exits before verification\n // runs — so we check inference trace first.\n const verificationTrace = debugSteps.find((s: { step: string; detail?: string }) => s.step === \"verification\");\n\n if (!verificationTrace) {\n const inferenceHint =\n debugSteps.find((s: { step: string; detail?: string }) => s.step === \"inference\")?.detail\n ?? \"no intents extracted\";\n return error(\n `No actionable intent was extracted (${inferenceHint}). ` +\n `Please retry with a more specific goal (what kind, what for, and/or timeframe), ` +\n `or ask the user to clarify.`,\n debugSteps,\n );\n }\n\n const rejectionHint =\n verificationTrace.detail ?? \"all candidate intents were filtered as invalid or too vague\";\n return error(\n `Intent verification failed (${rejectionHint}). ` +\n `The description may be too vague or was classified as a statement rather than a goal. ` +\n `Either retry with a more specific description (e.g. include what kind, what for, or a timeframe) ` +\n `or ask the user to clarify what exactly they are looking for.`,\n debugSteps,\n );\n }\n\n // ── Auto-approve path (for MCP agents or explicit opt-in) ──\n if (shouldAutoApprove) {\n const createdIntents: Array<{ description: string; confidence: number | null; speechActType: string | null }> = [];\n const createTimings: Array<{ name: string; durationMs: number; agents: unknown[] }> = [];\n\n for (const v of verified as VerifiedIntent[]) {\n const _createGraphStart = Date.now();\n const _createTraceEmitter = requestContext.getStore()?.traceEmitter;\n _createTraceEmitter?.({ type: \"graph_start\", name: \"intent\" });\n const createResult = await invokeWithAbortSignal(graphs.intent, {\n userId: context.userId,\n userProfile,\n inputContent: v.description,\n operationMode: 'create' as const,\n ...(effectiveIndexId ? { networkId: effectiveIndexId } : {}),\n });\n const _createGraphMs = Date.now() - _createGraphStart;\n _createTraceEmitter?.({ type: \"graph_end\", name: \"intent\", durationMs: _createGraphMs });\n\n createTimings.push({ name: 'intent-create', durationMs: _createGraphMs, agents: createResult.agentTimings ?? [] });\n\n const succeeded = createResult.executionResults?.some((r: ExecutionResult) => r.success);\n if (succeeded) {\n createdIntents.push({\n description: v.description,\n confidence: v.score != null ? Math.round(v.score * 100) / 100 : null,\n speechActType: v.verification?.classification ?? null,\n });\n }\n }\n\n return success({\n created: createdIntents.length > 0,\n count: createdIntents.length,\n intents: createdIntents,\n message: createdIntents.length > 0\n ? `Created ${createdIntents.length} intent${createdIntents.length > 1 ? 's' : ''} successfully. The system will automatically index them and begin searching for matching opportunities.`\n : 'Intent creation failed — the intents could not be persisted.',\n debugSteps,\n _graphTimings: [\n { name: 'profile', durationMs: _profileGraphMs1, agents: profileResult.agentTimings ?? [] },\n { name: 'intent-propose', durationMs: _intentGraphMs1, agents: result.agentTimings ?? [] },\n ...createTimings,\n ],\n });\n }\n\n // ── Proposal path (for web chat with interactive cards) ──\n // Build intent_proposal code fences for each verified intent\n const proposalBlocks = verified.map((v: VerifiedIntent) => {\n const proposalId = crypto.randomUUID();\n const data = {\n proposalId,\n description: v.description,\n ...(effectiveIndexId ? { networkId: effectiveIndexId } : {}),\n confidence: v.score != null ? Math.round(v.score * 100) / 100 : null,\n speechActType: v.verification?.classification ?? null,\n };\n return (\n \"```intent_proposal\\n\" +\n sanitizeJsonForCodeFence(JSON.stringify(data)) +\n \"\\n```\"\n );\n });\n\n const blocksText = proposalBlocks.join(\"\\n\\n\");\n\n return success({\n proposed: true,\n count: verified.length,\n message: `IMPORTANT: Include the following \\`\\`\\`intent_proposal code blocks EXACTLY as-is in your response (they render as interactive cards for the user to approve or skip):\\n\\n${blocksText}`,\n debugSteps,\n _graphTimings: [\n { name: 'profile', durationMs: _profileGraphMs1, agents: profileResult.agentTimings ?? [] },\n { name: 'intent', durationMs: _intentGraphMs1, agents: result.agentTimings ?? [] },\n ],\n });\n },\n });\n\n const updateIntent = defineTool({\n name: \"update_intent\",\n description:\n \"Updates an existing intent's description. After updating, the system re-processes the intent through inference and verification, \" +\n \"re-evaluates its index assignments, and triggers fresh opportunity discovery with the new description.\\n\\n\" +\n \"**When to use:** When the user wants to refine or change what they're looking for — e.g. narrowing scope, adding specificity, \" +\n \"or pivoting to a different need. Prefer updating over delete+create to preserve the intent's history and existing index links.\\n\\n\" +\n \"**Returns:** Updated `intentId` and `description`, plus a confirmation message. The intent's embeddings and index relevancy scores are recalculated automatically.\",\n querySchema: z.object({\n intentId: z.string().describe(\"The UUID of the intent to update. Get this from read_intents results.\"),\n description: z.string().describe(\"The updated description of what the user is looking for. Same guidelines as create_intent — should be clear and specific.\"),\n }),\n handler: async ({ context, query }) => {\n const scopeErr = await ensureScopedMembership(context, deps.systemDb);\n if (scopeErr) return error(scopeErr);\n const intentId = query.intentId?.trim() ?? \"\";\n if (!UUID_REGEX.test(intentId)) {\n return error(\"Invalid intent ID format.\");\n }\n\n // Ownership guard: caller must own the intent\n const intent = await deps.systemDb.getIntent(intentId);\n if (!intent || intent.userId !== context.userId) {\n return error(\"Intent not found or you can only update your own intents.\");\n }\n if (intent.archivedAt) {\n return error(\"This intent is archived and cannot be updated. Create a new intent instead.\");\n }\n\n // Strict scope enforcement: when chat is index-scoped, verify intent is linked to that index\n if (context.networkId) {\n const db = deps.userDb;\n const intentNetworks = await db.getNetworkIdsForIntent(intentId);\n if (!intentNetworks.includes(context.networkId)) {\n return error(\n `This chat is scoped to ${context.indexName ?? 'this index'}. You can only update intents linked to this community.`\n );\n }\n }\n\n const _profileGraphStart2 = Date.now();\n const _updateIntentProfileTraceEmitter = requestContext.getStore()?.traceEmitter;\n _updateIntentProfileTraceEmitter?.({ type: \"graph_start\", name: \"profile\" });\n const profileResult = await invokeWithAbortSignal(graphs.profile, { userId: context.userId, operationMode: 'query' as const });\n const _profileGraphMs2 = Date.now() - _profileGraphStart2;\n _updateIntentProfileTraceEmitter?.({ type: \"graph_end\", name: \"profile\", durationMs: _profileGraphMs2 });\n const latestUser = profileResult.profile ? undefined : typeof userDb.getUser === \"function\" ? await userDb.getUser() : context.user;\n const approvedProfileFallback = profileResult.profile ? \"\" : buildApprovedProfileFallback(latestUser);\n const userProfile = profileResult.profile ? JSON.stringify(profileResult.profile) : approvedProfileFallback;\n\n const _intentGraphStart2 = Date.now();\n const _updateIntentTraceEmitter = requestContext.getStore()?.traceEmitter;\n _updateIntentTraceEmitter?.({ type: \"graph_start\", name: \"intent\" });\n const result = await invokeWithAbortSignal(graphs.intent, {\n userId: context.userId,\n userProfile,\n operationMode: 'update' as const,\n inputContent: query.description,\n targetIntentIds: [intentId],\n ...(context.networkId && { networkId: context.networkId }),\n });\n const _intentGraphMs2 = Date.now() - _intentGraphStart2;\n _updateIntentTraceEmitter?.({ type: \"graph_end\", name: \"intent\", durationMs: _intentGraphMs2 });\n\n if (result.executionResults?.some((r: ExecutionResult) => !r.success)) {\n return error(\"Failed to update intent.\");\n }\n return success({\n message: \"Intent updated.\",\n intentId,\n description: query.description,\n _graphTimings: [\n { name: 'profile', durationMs: _profileGraphMs2, agents: profileResult.agentTimings ?? [] },\n { name: 'intent', durationMs: _intentGraphMs2, agents: result.agentTimings ?? [] },\n ],\n });\n },\n });\n\n const deleteIntent = defineTool({\n name: \"delete_intent\",\n description:\n \"Archives (soft-deletes) an intent, removing it from active discovery. The intent is not permanently deleted — it is marked as archived \" +\n \"and no longer participates in opportunity matching or index evaluation.\\n\\n\" +\n \"**When to use:** When the user's need has been fulfilled, is no longer relevant, or was created by mistake. \" +\n \"If the user wants to change the description instead, use update_intent to preserve history.\\n\\n\" +\n \"**Returns:** Confirmation that the intent was archived. Previously created opportunities from this intent remain but won't generate new ones.\",\n querySchema: z.object({\n intentId: z.string().describe(\"The UUID of the intent to archive. Get this from read_intents results.\"),\n }),\n handler: async ({ context, query }) => {\n const scopeErr = await ensureScopedMembership(context, deps.systemDb);\n if (scopeErr) return error(scopeErr);\n const intentId = query.intentId?.trim() ?? \"\";\n if (!UUID_REGEX.test(intentId)) {\n return error(\"Invalid intent ID format.\");\n }\n\n // Ownership guard: caller must own the intent\n const intent = await deps.systemDb.getIntent(intentId);\n if (!intent || intent.userId !== context.userId) {\n return error(\"Intent not found or you can only delete your own intents.\");\n }\n\n // Strict scope enforcement: when chat is index-scoped, verify intent is linked to that index\n if (context.networkId) {\n const db = deps.userDb;\n const intentNetworks = await db.getNetworkIdsForIntent(intentId);\n if (!intentNetworks.includes(context.networkId)) {\n return error(\n `This chat is scoped to ${context.indexName ?? 'this index'}. You can only delete intents linked to this community.`\n );\n }\n }\n\n const _deleteIntentGraphStart = Date.now();\n const _deleteIntentTraceEmitter = requestContext.getStore()?.traceEmitter;\n _deleteIntentTraceEmitter?.({ type: \"graph_start\", name: \"intent\" });\n const result = await invokeWithAbortSignal(graphs.intent, {\n userId: context.userId,\n userProfile: \"\",\n operationMode: 'delete' as const,\n targetIntentIds: [intentId],\n ...(context.networkId && { networkId: context.networkId }),\n });\n const _deleteIntentGraphMs = Date.now() - _deleteIntentGraphStart;\n _deleteIntentTraceEmitter?.({ type: \"graph_end\", name: \"intent\", durationMs: _deleteIntentGraphMs });\n\n if (result.executionResults?.some((r: ExecutionResult) => !r.success)) {\n return error(\"Failed to delete intent.\");\n }\n return success({\n message: \"Intent archived successfully.\",\n _graphTimings: [{ name: 'intent', durationMs: _deleteIntentGraphMs, agents: result.agentTimings ?? [] }],\n });\n },\n });\n\n // ─────────────────────────────────────────────────────────────────────────────\n // INTENT–INDEX JUNCTION (link / list / unlink)\n // ─────────────────────────────────────────────────────────────────────────────\n\n const createIntentIndex = defineTool({\n name: \"create_intent_index\",\n description:\n \"Manually links an intent to an index (community), making it visible to other members and eligible for opportunity discovery within that index. \" +\n \"Normally intents are auto-assigned to relevant indexes on creation, but use this to explicitly add an intent to an additional index.\\n\\n\" +\n \"**When to use:** When the user wants to share an existing intent with a specific community they belong to, \" +\n \"or when auto-assignment missed an index the user considers relevant.\\n\\n\" +\n \"**Returns:** Confirmation that the link was created. The intent will now appear in that index's intent list and participate in discovery within that community.\",\n querySchema: z.object({\n intentId: z.string().describe(\"The UUID of the intent to link. Get this from read_intents results.\"),\n networkId: z.string().optional().describe(\"The UUID of the index to link the intent to. Get this from read_networks. Defaults to the scoped index in index-scoped chats.\"),\n }),\n handler: async ({ context, query }) => {\n const scopeErr = await ensureScopedMembership(context, deps.systemDb);\n if (scopeErr) return error(scopeErr);\n const intentId = query.intentId?.trim() ?? \"\";\n const networkId = query.networkId?.trim() || context.networkId || \"\";\n if (!UUID_REGEX.test(intentId) || !UUID_REGEX.test(networkId)) {\n return error(\"Invalid ID format. Both must be UUIDs.\");\n }\n\n // Strict scope enforcement: when chat is index-scoped, only allow linking to that index\n if (context.networkId && networkId !== context.networkId) {\n return error(\n `This chat is scoped to ${context.indexName ?? 'this index'}. You can only link intents to this community.`\n );\n }\n\n const _createIntentIndexGraphStart = Date.now();\n const _createIntentIndexTraceEmitter = requestContext.getStore()?.traceEmitter;\n _createIntentIndexTraceEmitter?.({ type: \"graph_start\", name: \"intent_network\" });\n const result = await invokeWithAbortSignal(graphs.intentIndex, {\n userId: context.userId,\n networkId,\n intentId,\n operationMode: 'create' as const,\n skipEvaluation: true,\n });\n const _createIntentIndexGraphMs = Date.now() - _createIntentIndexGraphStart;\n _createIntentIndexTraceEmitter?.({ type: \"graph_end\", name: \"intent_network\", durationMs: _createIntentIndexGraphMs });\n\n if (result.mutationResult) {\n if (result.mutationResult.success) {\n const alreadyExisted = result.mutationResult.message?.includes('already in this network') ?? false;\n return success({\n created: !alreadyExisted,\n message: result.mutationResult.message,\n _graphTimings: [{ name: 'intent_network', durationMs: _createIntentIndexGraphMs, agents: result.agentTimings ?? [] }],\n });\n }\n return error(result.mutationResult.error || \"Failed to link intent to network.\");\n }\n return error(\"Failed to link intent to network.\");\n },\n });\n\n const readIntentIndexes = defineTool({\n name: \"read_intent_indexes\",\n description:\n \"Reads the many-to-many links between intents and indexes. Use this to understand which intents are shared in which communities, \" +\n \"and which indexes a specific intent belongs to.\\n\\n\" +\n \"**Usage modes:**\\n\" +\n \"- With networkId: lists all intents linked to that index. Add userId to filter to one member's intents in that index.\\n\" +\n \"- With intentId + networkId: checks whether a specific intent is linked to a specific index.\\n\" +\n \"- intentId alone requires a networkId (the system won't reveal all indexes an intent is in).\\n\\n\" +\n \"**When to use:** To audit which intents are active in a community, verify an intent's index assignment before unlinking, \" +\n \"or check if a newly created intent was auto-assigned to the expected index.\\n\\n\" +\n \"**Returns:** List of intent-index links with relevancy scores (0-1, how well the intent fits the index's purpose).\",\n querySchema: z.object({\n intentId: z.string().optional().describe(\"Intent UUID — check if this specific intent is linked to the specified index. Must be combined with networkId.\"),\n networkId: z.string().optional().describe(\"Index UUID — list all intents linked to this index. Get this from read_networks. Defaults to scoped index in index-scoped chats.\"),\n userId: z.string().optional().describe(\"Filter results to this user's intents within the specified index. Omit to see all members' intents.\"),\n }),\n handler: async ({ context, query }) => {\n const scopeErr = await ensureScopedMembership(context, deps.systemDb);\n if (scopeErr) return error(scopeErr);\n const intentId = query.intentId?.trim() || undefined;\n let networkId = query.networkId?.trim() || context.networkId || undefined;\n const queryUserId = query.userId?.trim() || undefined;\n\n if (intentId && !UUID_REGEX.test(intentId)) {\n return error(\"Invalid intent ID format.\");\n }\n if (networkId && !UUID_REGEX.test(networkId)) {\n return error(\"Invalid network ID format.\");\n }\n if (!intentId && !networkId) {\n return error(\"Provide networkId or intentId.\");\n }\n\n // Strict scope enforcement: when chat is index-scoped, only allow querying that index\n if (context.networkId && networkId && networkId !== context.networkId) {\n return error(\n `This chat is scoped to ${context.indexName ?? 'this index'}. You can only read intent links from this community.`\n );\n }\n\n // When only intentId is provided, enforce scope - don't reveal all linked indexes\n if (intentId && !networkId) {\n if (context.networkId) {\n // When scoped, only check if intent is linked to the scoped index\n networkId = context.networkId;\n } else {\n // When unscoped, still don't reveal all indexes - require explicit networkId\n return error(\n \"Please provide a networkId to check if the intent is linked to a specific network. Listing all linked networks is not supported.\"\n );\n }\n }\n\n const _readIntentIndexGraphStart = Date.now();\n const _readIntentIndexTraceEmitter = requestContext.getStore()?.traceEmitter;\n _readIntentIndexTraceEmitter?.({ type: \"graph_start\", name: \"intent_network\" });\n const result = await invokeWithAbortSignal(graphs.intentIndex, {\n userId: context.userId,\n networkId,\n intentId,\n operationMode: 'read' as const,\n queryUserId,\n });\n const _readIntentIndexGraphMs = Date.now() - _readIntentIndexGraphStart;\n _readIntentIndexTraceEmitter?.({ type: \"graph_end\", name: \"intent_network\", durationMs: _readIntentIndexGraphMs });\n\n if (result.error) {\n return error(result.error);\n }\n if (result.readResult) {\n return success({ ...result.readResult, _graphTimings: [{ name: 'intent_network', durationMs: _readIntentIndexGraphMs, agents: result.agentTimings ?? [] }] });\n }\n return error(\"Failed to fetch intent-network links.\");\n },\n });\n\n const deleteIntentIndex = defineTool({\n name: \"delete_intent_index\",\n description:\n \"Removes the link between an intent and an index. The intent itself is NOT deleted — it just stops being visible in that community \" +\n \"and no longer participates in opportunity discovery within that index. The intent may still be linked to other indexes.\\n\\n\" +\n \"**When to use:** When the user wants to withdraw an intent from a specific community without archiving it entirely. \" +\n \"Use read_intent_indexes first to verify the link exists.\\n\\n\" +\n \"**Returns:** Confirmation that the link was removed. To fully remove an intent, use delete_intent instead.\",\n querySchema: z.object({\n intentId: z.string().describe(\"The UUID of the intent to unlink. Get this from read_intents or read_intent_indexes.\"),\n networkId: z.string().optional().describe(\"The UUID of the index to unlink from. Get this from read_networks. Defaults to the scoped index in index-scoped chats.\"),\n }),\n handler: async ({ context, query }) => {\n const scopeErr = await ensureScopedMembership(context, deps.systemDb);\n if (scopeErr) return error(scopeErr);\n const intentId = query.intentId?.trim() ?? \"\";\n const networkId = query.networkId?.trim() || context.networkId || \"\";\n if (!UUID_REGEX.test(intentId) || !UUID_REGEX.test(networkId)) {\n return error(\"Invalid ID format. Both must be UUIDs.\");\n }\n\n // Strict scope enforcement: when chat is index-scoped, only allow unlinking from that index\n if (context.networkId && networkId !== context.networkId) {\n return error(\n `This chat is scoped to ${context.indexName ?? 'this index'}. You can only unlink intents from this community.`\n );\n }\n\n const _deleteIntentIndexGraphStart = Date.now();\n const _deleteIntentIndexTraceEmitter = requestContext.getStore()?.traceEmitter;\n _deleteIntentIndexTraceEmitter?.({ type: \"graph_start\", name: \"intent_network\" });\n const result = await invokeWithAbortSignal(graphs.intentIndex, {\n userId: context.userId,\n networkId,\n intentId,\n operationMode: 'delete' as const,\n });\n const _deleteIntentIndexGraphMs = Date.now() - _deleteIntentIndexGraphStart;\n _deleteIntentIndexTraceEmitter?.({ type: \"graph_end\", name: \"intent_network\", durationMs: _deleteIntentIndexGraphMs });\n\n if (result.mutationResult) {\n if (result.mutationResult.success) {\n return success({\n deleted: true,\n message: result.mutationResult.message,\n _graphTimings: [{ name: 'intent_network', durationMs: _deleteIntentIndexGraphMs, agents: result.agentTimings ?? [] }],\n });\n }\n return error(result.mutationResult.error || \"Failed to unlink.\");\n }\n return error(\"Failed to unlink intent from network.\");\n },\n });\n\n const searchIntents = defineTool({\n name: \"search_intents\",\n description:\n \"Text-searches the authenticated user's own active signals by description. Case-insensitive substring \" +\n \"match over the signal's payload and summary. Use when the user references a past signal they wrote \" +\n '(\"find my signal about React mentorship\") or wants to audit what they\\'ve posted.\\n\\n' +\n \"For discovery of OTHER users' signals that match a query, use discover_opportunities(searchQuery=...) \" +\n \"instead — that runs semantic matching across the user's networks.\\n\\n\" +\n \"**Returns:** `intents: [{ id, payload, summary, createdAt }]`, most recent first, up to `limit` (default 25).\",\n querySchema: z.object({\n query: z.string().min(1).describe(\"Text to match against payload and summary (case-insensitive).\"),\n limit: z\n .number()\n .int()\n .positive()\n .max(100)\n .optional()\n .describe(\"Maximum intents to return (default 25, max 100).\"),\n }),\n handler: async ({ context, query }) => {\n const rows = await userDb.searchOwnIntents(query.query, query.limit ?? 25);\n logger.verbose(\"search_intents\", { userId: context.userId, query: query.query, matched: rows.length });\n return success({ intents: rows });\n },\n });\n\n return [readIntents, createIntent, updateIntent, deleteIntent, createIntentIndex, readIntentIndexes, deleteIntentIndex, searchIntents] as const;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent.verifier.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"intent.verifier.d.ts","sourceRoot":"/","sources":["intent/intent.verifier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyIxB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmClB,CAAC;AAMH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAMpE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAM;;IAQnB;;;;OAIG;IAEU,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;;;IA8BpD;;OAEG;WACW,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent.verifier.js","sourceRoot":"","sources":["../../src/intent/intent.verifier.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"intent.verifier.js","sourceRoot":"/","sources":["intent/intent.verifier.ts"],"names":[],"mappings":"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","sourcesContent":["import { HumanMessage, SystemMessage } from \"@langchain/core/messages\";\nimport { tool } from \"@langchain/core/tools\";\nimport { z } from \"zod\";\nimport { protocolLogger } from \"../shared/observability/protocol.logger.js\";\nimport { Timed } from \"../shared/observability/performance.js\";\nimport { createModel } from \"../shared/agent/model.config.js\";\nimport { invokeWithAbortSignal } from \"../shared/agent/model-signal.js\";\n\nconst logger = protocolLogger(\"SemanticVerifier\");\n\nconst model = createModel(\"intentVerifier\");\n// ──────────────────────────────────────────────────────────────\n// 1. SYSTEM PROMPT\n// ──────────────────────────────────────────────────────────────\n\nconst systemPrompt = `\nYou are the Semantic Verification Engine for the Index Network — an intent-driven discovery protocol.\n\nYour job: classify a user utterance using Searle's Speech Act Theory, then score its felicity conditions.\n\nAlways reason before classifying. Output reasoning first.\n\n═══════════════════════════════════════════════════\nSTEP 1 — CLASSIFY THE ILLOCUTIONARY ACT\n═══════════════════════════════════════════════════\n\nWork through this decision tree in order. Stop at the first matching branch.\n\nIF the utterance cancels, terminates, or declares a state change (e.g., \"I quit\", \"Project cancelled\", \"This position is closed\"):\n → DECLARATION\n\nELSE IF the utterance expresses a search, need, or request for another party — even without an explicit verb or first-person subject:\n → DIRECTIVE\n\n DIRECTIVE trigger patterns (any of these → DIRECTIVE):\n · \"Looking for [X]\" · \"Seeking [X]\"\n · \"In search of [X]\" · \"Need a [X]\"\n · \"Want to find [X]\" · \"Interested in connecting with [X]\"\n · \"Open to [X]\" · \"Hiring [X]\"\n · \"Would love to meet [X]\" · \"Anyone know [X]\"\n\n KEY RULE: A verbless gerundive like \"Looking for artists for collaboration\" IS a DIRECTIVE.\n The missing first-person subject (\"I am\") is routinely elided in natural intent language.\n The illocutionary force is a search directive aimed at the system, not an assertion about reality.\n\n DIRECTIVE positive examples:\n · \"Looking for artists for collaboration\" → DIRECTIVE (elided subject, search intent)\n · \"Seeking a technical co-founder in NYC\" → DIRECTIVE\n · \"Need a PyTorch expert for a 3-month contract\" → DIRECTIVE\n · \"Open to angel investment opportunities\" → DIRECTIVE\n · \"Anyone building in the DeSci space?\" → DIRECTIVE\n\n DIRECTIVE negative examples (do NOT classify these as DIRECTIVE):\n · \"AI is changing the creative industry\" → ASSERTIVE (states a belief, no search)\n · \"I built a collaboration platform\" → ASSERTIVE/COMMISSIVE (past action, no request)\n · \"Collaboration is important\" → ASSERTIVE (general belief)\n\nELSE IF the utterance commits the speaker to a future action:\n → COMMISSIVE\n\n COMMISSIVE positive examples:\n · \"I will deploy the contract by Friday\" → COMMISSIVE\n · \"I'm going to learn Rust this quarter\" → COMMISSIVE\n · \"I commit to mentoring two junior devs\" → COMMISSIVE\n\n COMMISSIVE negative examples (do NOT classify these as COMMISSIVE):\n · \"I could probably look into it\" → too hedged; score sincerity low instead\n · \"We should build something cool\" → vague, no personal commitment\n\nELSE IF the utterance states a fact, belief, or opinion with no implied request or commitment:\n → ASSERTIVE\n\n ASSERTIVE positive examples:\n · \"Rust is faster than C++\" → ASSERTIVE\n · \"I have 10 years of experience in ML\" → ASSERTIVE (profile statement, not a request)\n · \"The crypto market is volatile\" → ASSERTIVE\n\nELSE IF the utterance expresses a psychological state or social ritual:\n → EXPRESSIVE\n\n EXPRESSIVE examples: \"I'm so excited!\", \"Hello everyone\", \"Congrats to the team\"\n\nIf none of the above apply cleanly:\n → UNKNOWN\n\n═══════════════════════════════════════════════════\nSTEP 2 — SCORE THE FELICITY CONDITIONS (0–100)\n═══════════════════════════════════════════════════\n\nScore AFTER classification. Do not let scores influence the category decision.\n\nCLARITY (Essential Condition)\n How unambiguous and actionable is the utterance?\n 100 → \"Deploy the Solidity contract to Mainnet by March 15\"\n 60 → \"Looking for a developer\" (clear direction, vague spec)\n 20 → \"We should do something cool\"\n\nAUTHORITY (Preparatory Condition)\n Does the speaker's profile support this act?\n Compare stated skills/role against the action or search domain.\n 100 → Profile: Senior ML Engineer | Utterance: \"Seeking a research collaborator on transformers\"\n 20 → Profile: Junior Marketer | Utterance: \"I will rewrite the Rust compiler\"\n For DIRECTIVEs: authority = plausibility that this person would make this search.\n\nSINCERITY (Sincerity Condition)\n Does the linguistic form imply genuine commitment or genuine need?\n For COMMISSIVEs: check modality (will > going to > might > could).\n For DIRECTIVEs: check specificity of the search (specific need > vague wish).\n 100 → \"I need a Rails contractor starting next week, $150/hr, remote\"\n 40 → \"I could maybe try to find someone\"\n\nSEMANTIC ENTROPY (Constraint Density) → semantic_entropy field, range 0.0–1.0\n 0.0 = maximally constrained (time, location, tech stack, quantifiers all present)\n 1.0 = no constraints at all\n 0.0 example: \"Meet 50 senior React devs in SF by Friday\"\n 1.0 example: \"Network\"\n\nREFERENTIAL ANCHOR → referential_anchor field\n Does the utterance name a specific unique entity (Donnellan referential use)?\n If YES → output the entity name string.\n If NO (attributive reference to any member of a class) → output null.\n \"I want to join Google\" → \"Google\"\n \"I want to join a startup\" → null\n\n═══════════════════════════════════════════════════\nSTEP 3 — FLAGS\n═══════════════════════════════════════════════════\n\nAdd flags when scores fall below threshold:\n authority < 70 → \"SKILL_MISMATCH\"\n sincerity < 70 → \"WEAK_COMMITMENT\"\n clarity < 50 → \"VAGUE_INTENT\"\n classification is ASSERTIVE or EXPRESSIVE → \"NOISE\"\n`;\n\n// ──────────────────────────────────────────────────────────────\n// 2. RESPONSE SCHEMA (Zod)\n// ──────────────────────────────────────────────────────────────\n\nconst responseFormat = z.object({\n // reasoning comes first so the model commits to its analysis\n // before the classification token is generated (chain-of-thought anchor)\n reasoning: z.string().describe(\n \"Step-by-step analysis: (1) which decision-tree branch fired and why, \" +\n \"(2) key surface features of the utterance (trigger keywords, elided subject, modality), \" +\n \"(3) felicity condition assessment.\"\n ),\n\n classification: z.enum([\n \"COMMISSIVE\",\n \"DIRECTIVE\",\n \"ASSERTIVE\",\n \"EXPRESSIVE\",\n \"DECLARATION\",\n \"UNKNOWN\"\n ]).describe(\"Searle's Speech Act category — determined by the decision tree in STEP 1\"),\n\n felicity_scores: z.object({\n clarity: z.number().min(0).max(100).describe(\"Essential Condition: how unambiguous and actionable is the utterance (0–100)\"),\n authority: z.number().min(0).max(100).describe(\"Preparatory Condition: does the speaker's profile support this act (0–100)\"),\n sincerity: z.number().min(0).max(100).describe(\"Sincerity Condition: does the linguistic form imply genuine commitment or need (0–100)\"),\n }),\n\n semantic_entropy: z.number().min(0).max(1).describe(\n \"Constraint density: 0.0 = maximally specific (time + location + tech + quantifiers), 1.0 = completely unconstrained\"\n ),\n\n referential_anchor: z.string().nullable().describe(\n \"Named specific entity the utterance refers to (Donnellan referential), or null for attributive reference\"\n ),\n\n flags: z.array(z.string()).describe(\n \"Semantic violation tags: SKILL_MISMATCH (authority<70), WEAK_COMMITMENT (sincerity<70), VAGUE_INTENT (clarity<50), NOISE (ASSERTIVE or EXPRESSIVE)\"\n ),\n});\n\n// ──────────────────────────────────────────────────────────────\n// 3. TYPE DEFINITIONS\n// ──────────────────────────────────────────────────────────────\n\nexport type SemanticVerifierOutput = z.infer<typeof responseFormat>;\n\n// ──────────────────────────────────────────────────────────────\n// 4. CLASS DEFINITION\n// ──────────────────────────────────────────────────────────────\n\nexport class SemanticVerifier {\n private model: any;\n\n constructor() {\n this.model = model.withStructuredOutput(responseFormat, {\n name: \"semantic_verifier\"\n });\n }\n\n /**\n * Verifies the semantic validity of an intent.\n * @param content - The user's raw utterance.\n * @param context - The User Profile as a JSON string.\n */\n @Timed()\n public async invoke(content: string, context: string) {\n logger.verbose(`[SemanticVerifier.invoke] Verifying: \"${content.substring(0, 30)}...\"`);\n\n const prompt = `\n # User Profile (Context)\n ${context}\n\n # User Utterance (Content)\n \"${content}\"\n \n Verify the Felicity Conditions and Semantic Metrics for this utterance.\n `;\n\n const messages = [\n new SystemMessage(systemPrompt),\n new HumanMessage(prompt)\n ];\n\n try {\n const result = await invokeWithAbortSignal(this.model, messages);\n const output = responseFormat.parse(result);\n\n logger.verbose(`[SemanticVerifier.invoke] Verdict: ${output.classification} Entropy: ${output.semantic_entropy}`);\n return output;\n } catch (error) {\n logger.error(\"[SemanticVerifier] Error during invocation\", { error });\n throw error;\n }\n }\n\n /**\n * Factory method to expose the agent as a LangChain tool.\n */\n public static asTool() {\n return tool(\n async (args: { content: string; context: string }) => {\n const agent = new SemanticVerifier();\n return await agent.invoke(args.content, args.context);\n },\n {\n name: 'semantic_verifier',\n description: 'Verifies the semantic validity and felicity conditions of an intent.',\n schema: z.object({\n content: z.string().describe('The intent content to verify'),\n context: z.string().describe('The user profile context')\n })\n }\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maintenance.graph.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"maintenance.graph.d.ts","sourceRoot":"/","sources":["maintenance/maintenance.graph.ts"],"names":[],"mappings":"AAyBA,wFAAwF;AACxF,MAAM,WAAW,wBAAwB;IACvC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;IAC/L,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAClF,mEAAmE;IACnE,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3D,gGAAgG;IAChG,8BAA8B,CAC5B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAC3F;AAED,qDAAqD;AACrD,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED,qDAAqD;AACrD,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACpK;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,KAAK;gBAFL,QAAQ,EAAE,wBAAwB,EAClC,KAAK,EAAE,qBAAqB,EAC5B,KAAK,EAAE,qBAAqB;IAGtC,gDAAgD;IAChD,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6KZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maintenance.graph.js","sourceRoot":"","sources":["../../src/maintenance/maintenance.graph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"maintenance.graph.js","sourceRoot":"/","sources":["maintenance/maintenance.graph.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Maintenance Graph: evaluate feed health and trigger rediscovery when unhealthy.\n * Also runs introducer discovery when connector-flow slots are underfilled.\n *\n * Write path — separate from the read-only HomeGraph.\n * Flow: loadCurrentFeed → scoreFeedHealth → [shouldRediscover] → rediscover → introducerDiscovery → logMaintenance → END\n * └─ [skip rediscovery] ─────────────→ introducerDiscovery → logMaintenance → END\n */\nimport { StateGraph, START, END } from '@langchain/langgraph';\n\nimport { MaintenanceGraphState } from './maintenance.state.js';\nimport { computeFeedHealth } from '../opportunity/feed/feed.health.js';\nimport { canUserSeeOpportunity, classifyOpportunity, isActionableForViewer, FEED_SOFT_TARGETS } from '../opportunity/opportunity.utils.js';\nimport {\n shouldRunIntroducerDiscovery,\n runIntroducerDiscovery,\n type IntroducerDiscoveryDatabase,\n type IntroducerDiscoveryQueue,\n} from '../opportunity/opportunity.introducer.js';\nimport { protocolLogger } from '../shared/observability/protocol.logger.js';\n\nconst logger = protocolLogger('MaintenanceGraph');\n\nconst FRESHNESS_WINDOW_MS = 12 * 60 * 60 * 1000; // 12 hours\n\n/** Database methods needed by the maintenance graph (includes introducer discovery). */\nexport interface MaintenanceGraphDatabase {\n getOpportunitiesForUser(userId: string, options?: { limit?: number }): Promise<Array<{ id: string; actors: Array<{ userId: string; role: string }>; status: string; [key: string]: unknown }>>;\n getActiveIntents(userId: string): Promise<Array<{ id: string; payload: string }>>;\n /** Get the user's personal index ID (for introducer discovery). */\n getPersonalIndexId(userId: string): Promise<string | null>;\n /** Get contacts with intent freshness data from a personal index (for introducer discovery). */\n getContactsWithIntentFreshness(\n personalIndexId: string,\n ownerId: string,\n limit: number,\n ): Promise<Array<{ userId: string; latestIntentAt: string | null; intentCount: number }>>;\n}\n\n/** Cache methods needed by the maintenance graph. */\nexport interface MaintenanceGraphCache {\n get<T = unknown>(key: string): Promise<T | null>;\n set(key: string, value: unknown, options?: { ttl?: number }): Promise<void>;\n}\n\n/** Queue methods needed by the maintenance graph. */\nexport interface MaintenanceGraphQueue {\n addJob(data: { intentId: string; userId: string; indexIds?: string[]; contactUserId?: string }, options?: { priority?: number; jobId?: string }): Promise<unknown>;\n}\n\n/**\n * Factory for the Maintenance Graph.\n * Accepts database, cache, and queue dependencies via constructor injection.\n */\nexport class MaintenanceGraphFactory {\n constructor(\n private database: MaintenanceGraphDatabase,\n private cache: MaintenanceGraphCache,\n private queue: MaintenanceGraphQueue,\n ) {}\n\n /** Compile and return the maintenance graph. */\n createGraph() {\n const loadCurrentFeedNode = async (state: typeof MaintenanceGraphState.State) => {\n if (!state.userId) {\n return { error: 'userId is required' };\n }\n try {\n const raw = await this.database.getOpportunitiesForUser(state.userId, { limit: 150 });\n const actionable = raw.filter((opp) =>\n isActionableForViewer(opp.actors, opp.status, state.userId)\n );\n const expired = raw.filter((opp) =>\n opp.status === 'expired' && canUserSeeOpportunity(opp.actors, opp.status, state.userId)\n );\n const activeIntents = await this.database.getActiveIntents(state.userId);\n\n // Read last rediscovery timestamp from cache\n let lastRediscoveryAt: number | null = null;\n try {\n const cached = await this.cache.get<{ triggeredAt: string }>(`rediscovery:lastRun:${state.userId}`);\n if (typeof cached?.triggeredAt === 'string') {\n const parsed = Date.parse(cached.triggeredAt);\n if (Number.isFinite(parsed)) {\n lastRediscoveryAt = parsed;\n }\n }\n } catch {\n // Cache unavailable — treat as no data\n }\n\n return {\n currentOpportunities: actionable,\n expiredCount: expired.length,\n activeIntents: activeIntents ?? [],\n lastRediscoveryAt,\n };\n } catch (e) {\n logger.error('MaintenanceGraph loadCurrentFeed failed', { error: e });\n return { error: 'Failed to load current feed' };\n }\n };\n\n const scoreFeedHealthNode = async (state: typeof MaintenanceGraphState.State) => {\n if (state.error) return {};\n try {\n const opps = state.currentOpportunities ?? [];\n let connectionCount = 0;\n let connectorFlowCount = 0;\n\n for (const opp of opps) {\n const category = classifyOpportunity(opp, state.userId);\n if (category === 'connection') connectionCount++;\n else if (category === 'connector-flow') connectorFlowCount++;\n }\n\n const healthResult = computeFeedHealth({\n connectionCount,\n connectorFlowCount,\n expiredCount: state.expiredCount,\n totalActionable: opps.length,\n lastRediscoveryAt: state.lastRediscoveryAt,\n freshnessWindowMs: FRESHNESS_WINDOW_MS,\n });\n\n logger.verbose(`[MaintenanceGraph] Feed health scored — userId=${state.userId} score=${healthResult.score} shouldMaintain=${healthResult.shouldMaintain} connectorFlowCount=${connectorFlowCount}`);\n\n return { healthResult, connectorFlowCount };\n } catch (e) {\n logger.error('MaintenanceGraph scoreFeedHealth failed', { error: e });\n return { error: 'Failed to score feed health' };\n }\n };\n\n const shouldRediscover = (state: typeof MaintenanceGraphState.State): string => {\n if (state.error) return 'introducerDiscovery';\n if (state.healthResult?.shouldMaintain && state.activeIntents.length > 0) {\n return 'rediscover';\n }\n return 'introducerDiscovery';\n };\n\n const rediscoverNode = async (state: typeof MaintenanceGraphState.State) => {\n try {\n const bucket = Math.floor(Date.now() / (6 * 60 * 60 * 1000));\n let enqueued = 0;\n\n const results = await Promise.allSettled(\n state.activeIntents.map((intent) =>\n this.queue.addJob(\n { intentId: intent.id, userId: state.userId },\n { priority: 10, jobId: `rediscovery-${state.userId}-${intent.id}-${bucket}` },\n )\n )\n );\n\n for (const r of results) {\n if (r.status === 'rejected') {\n const errMsg = r.reason instanceof Error ? r.reason.message : String(r.reason);\n logger.error(`[MaintenanceGraph] Rediscovery job enqueue failed: ${errMsg}`);\n }\n }\n enqueued = results.filter((r) => r.status === 'fulfilled').length;\n\n // Record last run timestamp\n if (enqueued > 0) {\n try {\n await this.cache.set(\n `rediscovery:lastRun:${state.userId}`,\n { triggeredAt: new Date().toISOString() },\n { ttl: 24 * 60 * 60 },\n );\n } catch {\n // Cache write failure is non-fatal\n }\n }\n\n return { rediscoveryJobsEnqueued: enqueued };\n } catch (e) {\n logger.error('MaintenanceGraph rediscover failed', { error: e });\n return { error: 'Failed to enqueue rediscovery jobs' };\n }\n };\n\n const introducerDiscoveryNode = async (state: typeof MaintenanceGraphState.State) => {\n try {\n const connectorFlowTarget = FEED_SOFT_TARGETS.connectorFlow;\n if (!shouldRunIntroducerDiscovery(state.connectorFlowCount, connectorFlowTarget)) {\n logger.verbose(`[MaintenanceGraph] Introducer discovery skipped — connector-flow target met — userId=${state.userId} connectorFlowCount=${state.connectorFlowCount} connectorFlowTarget=${connectorFlowTarget}`);\n return {};\n }\n\n // Cast database/queue to introducer discovery interfaces (they are compatible)\n const result = await runIntroducerDiscovery(\n this.database as IntroducerDiscoveryDatabase,\n this.queue as IntroducerDiscoveryQueue,\n state.userId,\n );\n\n logger.info(`[MaintenanceGraph] Introducer discovery complete — userId=${state.userId} contactsEvaluated=${result.contactsEvaluated} jobsEnqueued=${result.jobsEnqueued}${result.skippedReason ? ` skippedReason=${result.skippedReason}` : ''}`);\n\n return { introducerDiscoveryJobsEnqueued: result.jobsEnqueued };\n } catch (e) {\n logger.error('MaintenanceGraph introducerDiscovery failed', { error: e });\n // Non-fatal: do not set error, just log and continue\n return {};\n }\n };\n\n const logMaintenanceNode = async (state: typeof MaintenanceGraphState.State) => {\n logger.info(`[MaintenanceGraph] Maintenance complete — userId=${state.userId} score=${state.healthResult?.score} shouldMaintain=${state.healthResult?.shouldMaintain} rediscoveryJobs=${state.rediscoveryJobsEnqueued} introducerDiscoveryJobs=${state.introducerDiscoveryJobsEnqueued} activeIntents=${state.activeIntents.length} connectorFlowCount=${state.connectorFlowCount}`);\n return {};\n };\n\n const graph = new StateGraph(MaintenanceGraphState)\n .addNode('loadCurrentFeed', loadCurrentFeedNode)\n .addNode('scoreFeedHealth', scoreFeedHealthNode)\n .addNode('rediscover', rediscoverNode)\n .addNode('introducerDiscovery', introducerDiscoveryNode)\n .addNode('logMaintenance', logMaintenanceNode)\n .addEdge(START, 'loadCurrentFeed')\n .addConditionalEdges('loadCurrentFeed', (state) => (state.error ? 'end' : 'scoreFeedHealth'), {\n scoreFeedHealth: 'scoreFeedHealth',\n end: END,\n })\n .addConditionalEdges('scoreFeedHealth', shouldRediscover, {\n rediscover: 'rediscover',\n introducerDiscovery: 'introducerDiscovery',\n })\n .addEdge('rediscover', 'introducerDiscovery')\n .addEdge('introducerDiscovery', 'logMaintenance')\n .addEdge('logMaintenance', END);\n\n return graph.compile();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maintenance.state.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"maintenance.state.d.ts","sourceRoot":"/","sources":["maintenance/maintenance.state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE3E;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;IAMhC,0DAA0D;;YACpB,MAAM;iBAAW,MAAM;;YAAvB,MAAM;iBAAW,MAAM;;YAAvB,MAAM;iBAAW,MAAM;;IAK7D,qDAAqD;;IAMrD,2CAA2C;;IAM3C,2DAA2D;;IAM3D,gCAAgC;;IAMhC,2CAA2C;;IAM3C,uEAAuE;;IAMvE,oDAAoD;;;EAUpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maintenance.state.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"maintenance.state.js","sourceRoot":"/","sources":["maintenance/maintenance.state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC,IAAI,CAAC;IACnD,MAAM,EAAE,UAAU,CAAS;QACzB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;KAClB,CAAC;IAEF,0DAA0D;IAC1D,aAAa,EAAE,UAAU,CAAyC;QAChE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;KAClB,CAAC;IAEF,qDAAqD;IACrD,oBAAoB,EAAE,UAAU,CAAgB;QAC9C,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;KAClB,CAAC;IAEF,2CAA2C;IAC3C,YAAY,EAAE,UAAU,CAAS;QAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;KACjB,CAAC;IAEF,2DAA2D;IAC3D,iBAAiB,EAAE,UAAU,CAAgB;QAC3C,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;KACpB,CAAC;IAEF,gCAAgC;IAChC,YAAY,EAAE,UAAU,CAA0B;QAChD,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;KACpB,CAAC;IAEF,2CAA2C;IAC3C,uBAAuB,EAAE,UAAU,CAAS;QAC1C,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;KACjB,CAAC;IAEF,uEAAuE;IACvE,kBAAkB,EAAE,UAAU,CAAS;QACrC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;KACjB,CAAC;IAEF,oDAAoD;IACpD,+BAA+B,EAAE,UAAU,CAAS;QAClD,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;KACjB,CAAC;IAEF,KAAK,EAAE,UAAU,CAAqB;QACpC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;KACzB,CAAC;CACH,CAAC,CAAC","sourcesContent":["import { Annotation } from '@langchain/langgraph';\nimport type { Opportunity } from '../shared/interfaces/database.interface.js';\nimport type { FeedHealthResult } from '../opportunity/feed/feed.health.js';\n\n/**\n * Maintenance Graph State (Annotation-based).\n * Flow: loadCurrentFeed → scoreFeedHealth → [conditional: rediscover | END] → logMaintenance → END\n */\nexport const MaintenanceGraphState = Annotation.Root({\n userId: Annotation<string>({\n reducer: (curr, next) => next ?? curr,\n default: () => '',\n }),\n\n /** Active intents for the user (used for rediscovery). */\n activeIntents: Annotation<Array<{ id: string; payload: string }>>({\n reducer: (curr, next) => next ?? curr,\n default: () => [],\n }),\n\n /** Current actionable opportunities for the user. */\n currentOpportunities: Annotation<Opportunity[]>({\n reducer: (curr, next) => next ?? curr,\n default: () => [],\n }),\n\n /** Current expired opportunities count. */\n expiredCount: Annotation<number>({\n reducer: (curr, next) => next ?? curr,\n default: () => 0,\n }),\n\n /** Unix ms timestamp of last rediscovery for this user. */\n lastRediscoveryAt: Annotation<number | null>({\n reducer: (curr, next) => next ?? curr,\n default: () => null,\n }),\n\n /** Feed health score result. */\n healthResult: Annotation<FeedHealthResult | null>({\n reducer: (curr, next) => next ?? curr,\n default: () => null,\n }),\n\n /** Number of rediscovery jobs enqueued. */\n rediscoveryJobsEnqueued: Annotation<number>({\n reducer: (curr, next) => next ?? curr,\n default: () => 0,\n }),\n\n /** Current connector-flow opportunity count (from scoreFeedHealth). */\n connectorFlowCount: Annotation<number>({\n reducer: (curr, next) => next ?? curr,\n default: () => 0,\n }),\n\n /** Number of introducer discovery jobs enqueued. */\n introducerDiscoveryJobsEnqueued: Annotation<number>({\n reducer: (curr, next) => next ?? curr,\n default: () => 0,\n }),\n\n error: Annotation<string | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elicitation.builder.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"elicitation.builder.d.ts","sourceRoot":"/","sources":["mcp/elicitation.builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAErE,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,YAAY,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AAE3D;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,QAAQ,GAAG;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE;YAAE,MAAM,EAAE,YAAY,CAAA;SAAE,CAAC;QACrC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;KACtB,CAAC;CACH,CA2BA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAsBzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elicitation.builder.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"elicitation.builder.js","sourceRoot":"/","sources":["mcp/elicitation.builder.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CAAC,CAAW;IAQhD,MAAM,mBAAmB,GAAG,CAAC,CAAC,OAAO;SAClC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;SAChD,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAE7C,MAAM,YAAY,GAAiB,CAAC,CAAC,WAAW;QAC9C,CAAC,CAAC;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;YACvC,WAAW,EAAE,mBAAmB;SACjC;QACH,CAAC,CAAC;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,mBAAmB;SACjC,CAAC;IAEN,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE;QAClC,eAAe,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;YACpC,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,CAAW,EAAE,MAAe;IACxD,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;IAC1C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,sEAAsE;QACtE,yEAAyE;QACzE,oDAAoD;QACpD,IAAI,CAAC,CAAC,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAClE,CAAC;QACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,GAAG,MAAM,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/C,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,sEAAsE;QACtE,yEAAyE;QACzE,IAAI,CAAC,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAC/B,OAAO,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import type { Question } from \"../shared/schemas/question.schema.js\";\n\ntype SingleChoiceSchema = {\n type: \"string\";\n enum: string[];\n description: string;\n};\n\ntype MultiChoiceSchema = {\n type: \"array\";\n items: { type: \"string\"; enum: string[] };\n description: string;\n};\n\ntype ChoiceSchema = SingleChoiceSchema | MultiChoiceSchema;\n\n/**\n * Translates a Question into an MCP `elicitation/create` request payload.\n * The schema has one property named `choice` — a string-with-enum for\n * single-select, an array-of-enum-strings for multi-select.\n *\n * Per-option `description` text is packed into the property `description`\n * joined by ` | ` (MCP `requestedSchema` has no slot for per-option\n * descriptions; this is the spec's accepted lossy mapping).\n *\n * @param q - The question to translate.\n * @returns An MCP `elicitation/create` request payload.\n */\nexport function buildElicitationCreate(q: Question): {\n message: string;\n requestedSchema: {\n type: \"object\";\n properties: { choice: ChoiceSchema };\n required: [\"choice\"];\n };\n} {\n const propertyDescription = q.options\n .map((opt) => `${opt.label}: ${opt.description}`)\n .join(\" | \");\n\n const labels = q.options.map((o) => o.label);\n\n const choiceSchema: ChoiceSchema = q.multiSelect\n ? {\n type: \"array\",\n items: { type: \"string\", enum: labels },\n description: propertyDescription,\n }\n : {\n type: \"string\",\n enum: labels,\n description: propertyDescription,\n };\n\n return {\n message: `${q.title}: ${q.prompt}`,\n requestedSchema: {\n type: \"object\",\n properties: { choice: choiceSchema },\n required: [\"choice\"],\n },\n };\n}\n\n/**\n * Flattens an accepted elicitation `choice` value into the user-message\n * format Slice 4 produces. Returns `null` when the choice is missing,\n * empty, or contains no values that match `q.options` — MCP clients can\n * be buggy or non-conformant, so values are validated against the\n * declared enum before being persisted as a user message.\n *\n * For multi-select questions, items that are not strings or not in the\n * options list are dropped silently; if no items remain, returns null.\n *\n * @param q - The question the choice answers.\n * @param choice - The raw value from the elicitation response.\n * @returns A formatted string or `null` if no valid choice remains.\n */\nexport function flattenChoice(q: Question, choice: unknown): string | null {\n const prefix = `${q.title} (${q.prompt})`;\n const allowedLabels = new Set(q.options.map((o) => o.label));\n\n if (Array.isArray(choice)) {\n // Only multi-select questions accept arrays. A single-select question\n // receiving an array means a non-conformant client — reject the response\n // rather than recording an impossible multi-answer.\n if (!q.multiSelect) return null;\n const validItems = choice.filter(\n (c): c is string => typeof c === \"string\" && allowedLabels.has(c),\n );\n if (validItems.length === 0) return null;\n return `${prefix}: ${validItems.join(\", \")}`;\n }\n if (typeof choice === \"string\" && allowedLabels.has(choice)) {\n // Symmetric guard: multi-select questions must receive arrays. A bare\n // string here means a non-conformant client; reject for the same reason.\n if (q.multiSelect) return null;\n return `${prefix}: ${choice}`;\n }\n return null;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elicitation.dispatcher.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"elicitation.dispatcher.d.ts","sourceRoot":"/","sources":["mcp/elicitation.dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAE/F,OAAO,EAAE,sBAAsB,EAAiB,MAAM,0BAA0B,CAAC;AAIjF,MAAM,MAAM,gBAAgB,GACxB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,GACpD;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEzB,MAAM,MAAM,aAAa,GAAG,CAC1B,MAAM,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,KAC9C,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE/B,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,WAAW,EAAE,aAAa,CAAC;IAC3B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AASD;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,SAAS,EACT,WAAW,EACX,iBAAiB,GAClB,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elicitation.dispatcher.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"elicitation.dispatcher.js","sourceRoot":"/","sources":["mcp/elicitation.dispatcher.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Question } from \"../shared/schemas/question.schema.js\";\nimport type { ChatMessageWriter } from \"../shared/interfaces/chat-message-writer.interface.js\";\nimport { protocolLogger } from \"../shared/observability/protocol.logger.js\";\nimport { buildElicitationCreate, flattenChoice } from \"./elicitation.builder.js\";\n\nconst logger = protocolLogger(\"McpElicitation\");\n\nexport type ElicitResultLike =\n | { action: \"accept\"; content?: { choice?: unknown } }\n | { action: \"decline\" }\n | { action: \"cancel\" };\n\nexport type ElicitInputFn = (\n params: ReturnType<typeof buildElicitationCreate>,\n) => Promise<ElicitResultLike>;\n\nexport interface DispatchElicitationsParams {\n userId: string;\n questions: Question[];\n elicitInput: ElicitInputFn;\n /**\n * Optional. When absent, elicitations still dispatch (so users aren't\n * left mid-flow on a misconfiguration), but accepted answers are dropped\n * with a one-shot warn. See dispatcher body.\n */\n chatMessageWriter?: ChatMessageWriter;\n}\n\n/** Narrowing guard for elicitation replies received from MCP clients. */\nfunction isElicitResult(value: unknown): value is ElicitResultLike {\n if (typeof value !== \"object\" || value === null) return false;\n const action = (value as { action?: unknown }).action;\n return action === \"accept\" || action === \"decline\" || action === \"cancel\";\n}\n\n/**\n * Sequentially dispatches one `elicitation/create` per question. On accept,\n * flattens the choice and posts it via the ChatMessageWriter. `cancel` breaks\n * the loop; `decline` is a no-op. A transport throw breaks the loop with a\n * warning. An addUserMessage throw logs and continues (doesn't halt the loop).\n * Empty `questions` is a no-op.\n *\n * Caller is responsible for the capability check — this function only knows\n * how to dispatch.\n */\nexport async function dispatchElicitations({\n userId,\n questions,\n elicitInput,\n chatMessageWriter,\n}: DispatchElicitationsParams): Promise<void> {\n if (questions.length === 0) return;\n\n if (!chatMessageWriter) {\n // Misconfiguration: composition root forgot to wire the writer. We still\n // proceed with elicitations so the user isn't silently left hanging, but\n // surface the gap once at loop start so it's visible in protocol logs.\n logger.warn(\"chat_message_writer_absent_responses_will_drop\", {\n userId,\n questionCount: questions.length,\n });\n }\n\n for (const question of questions) {\n const elicitation = buildElicitationCreate(question);\n let rawReply: unknown;\n try {\n rawReply = await elicitInput(elicitation);\n } catch (err) {\n logger.warn(\"elicitation_failed\", {\n title: question.title,\n error: err instanceof Error ? err.message : String(err),\n });\n break;\n }\n\n // The reply is runtime data from the MCP client — validate the shape\n // before branching. A malformed reply (null, missing action, unknown\n // action) is treated as a no-op so we don't persist anything unsafe.\n if (!isElicitResult(rawReply)) {\n logger.warn(\"elicitation_response_malformed\", { title: question.title });\n continue;\n }\n const reply = rawReply;\n\n if (reply.action === \"cancel\") break;\n // Require an explicit `accept` — `decline` and any future / unknown\n // action both fall through to no-op rather than being treated as\n // accepted responses.\n if (reply.action !== \"accept\") continue;\n\n const flat = flattenChoice(question, reply.content?.choice);\n if (flat === null) continue;\n if (!chatMessageWriter) continue;\n\n try {\n const writeResult = await chatMessageWriter.addUserMessage(userId, flat);\n if (writeResult === null) {\n // User has no chat session — the accepted answer is dropped here.\n // Day-one behavior: log and continue. Future iterations may surface\n // the answer back through the tool result envelope for clients to\n // resurface, but that's out of scope for this slice.\n logger.warn(\"chat_message_write_skipped_no_session\", {\n userId,\n title: question.title,\n });\n }\n } catch (err) {\n logger.warn(\"chat_message_write_failed\", {\n title: question.title,\n error: err instanceof Error ? err.message : String(err),\n });\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.server.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"mcp.server.d.ts","sourceRoot":"/","sources":["mcp/mcp.server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAkB,MAAM,8BAA8B,CAAC;AAGzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAErF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAsFrE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAqBlF;AAKD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CAkBxE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAErE;AAMD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAC;CACrF;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GACjC,cAAc;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,EAAE,EAClE,gBAAgB,MAAM,GAAG,IAAI,GAAG,SAAS,KACxC,MAAM,EAOR,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,mBAAmB,EAC5B,gBAAgB,MAAM,GAAG,IAAI,GAAG,SAAS,KACxC,IAyBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAejD,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CAyB1E;AAwCD,eAAO,MAAM,gBAAgB,QAsDrB,CAAC;AAET,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,eAAe,EAC7B,iBAAiB,EAAE,iBAAiB,GACnC,SAAS,CA0NX"}
|