@indexnetwork/protocol 6.12.1-rc.404.1 → 6.14.0-rc.406.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/CHANGELOG.md +249 -0
- package/IMPLEMENTATION.md +20 -0
- package/STABILITY.md +4 -0
- package/dist/agent/agent.tools.d.ts +11 -3
- package/dist/agent/agent.tools.js +11 -301
- package/dist/capabilities/communities.facade.d.ts +13 -0
- package/dist/capabilities/communities.facade.js +12 -0
- package/dist/capabilities/communities.tools.port.d.ts +5 -0
- package/dist/capabilities/communities.tools.port.js +1 -0
- package/dist/capabilities/contacts.facade.d.ts +9 -0
- package/dist/capabilities/contacts.facade.js +8 -0
- package/dist/capabilities/contacts.tools.port.d.ts +9 -0
- package/dist/capabilities/contacts.tools.port.js +1 -0
- package/dist/capabilities/integrations.facade.d.ts +8 -0
- package/dist/capabilities/integrations.facade.js +7 -0
- package/dist/capabilities/integrations.tools.port.d.ts +9 -0
- package/dist/capabilities/integrations.tools.port.js +1 -0
- package/dist/capabilities/interaction-composition.facade.d.ts +10 -0
- package/dist/capabilities/interaction-composition.facade.js +9 -0
- package/dist/capabilities/negotiation.discovery.facade.d.ts +9 -0
- package/dist/capabilities/negotiation.discovery.facade.js +7 -0
- package/dist/capabilities/negotiation.facade.d.ts +23 -0
- package/dist/capabilities/negotiation.facade.js +17 -0
- package/dist/capabilities/negotiation.memory.facade.d.ts +6 -0
- package/dist/capabilities/negotiation.memory.facade.js +5 -0
- package/dist/capabilities/negotiation.questions.facade.d.ts +6 -0
- package/dist/capabilities/negotiation.questions.facade.js +5 -0
- package/dist/capabilities/negotiation.state.facade.d.ts +5 -0
- package/dist/capabilities/negotiation.state.facade.js +1 -0
- package/dist/capabilities/negotiation.summary.facade.d.ts +5 -0
- package/dist/capabilities/negotiation.summary.facade.js +5 -0
- package/dist/capabilities/negotiation.tools.port.d.ts +5 -0
- package/dist/capabilities/negotiation.tools.port.js +1 -0
- package/dist/capabilities/opportunities.facade.d.ts +50 -0
- package/dist/capabilities/opportunities.facade.js +50 -0
- package/dist/capabilities/opportunities.safety.facade.d.ts +2 -0
- package/dist/capabilities/opportunities.safety.facade.js +2 -0
- package/dist/capabilities/opportunities.tools.port.d.ts +5 -0
- package/dist/capabilities/opportunities.tools.port.js +1 -0
- package/dist/capabilities/participant-agents.debug.facade.d.ts +2 -0
- package/dist/capabilities/participant-agents.debug.facade.js +1 -0
- package/dist/capabilities/participant-agents.facade.d.ts +35 -0
- package/dist/capabilities/participant-agents.facade.js +35 -0
- package/dist/capabilities/participant-agents.tools.facade.d.ts +8 -0
- package/dist/capabilities/participant-agents.tools.facade.js +8 -0
- package/dist/capabilities/participant-agents.tools.port.d.ts +9 -0
- package/dist/capabilities/participant-agents.tools.port.js +1 -0
- package/dist/capabilities/participant-context.facade.d.ts +13 -0
- package/dist/capabilities/participant-context.facade.js +14 -0
- package/dist/capabilities/participant-context.tools.port.d.ts +9 -0
- package/dist/capabilities/participant-context.tools.port.js +1 -0
- package/dist/capabilities/questions.enqueue.facade.d.ts +5 -0
- package/dist/capabilities/questions.enqueue.facade.js +1 -0
- package/dist/capabilities/questions.facade.d.ts +8 -0
- package/dist/capabilities/questions.facade.js +7 -0
- package/dist/capabilities/questions.runtime.facade.d.ts +5 -0
- package/dist/capabilities/questions.runtime.facade.js +5 -0
- package/dist/capabilities/questions.tools.port.d.ts +5 -0
- package/dist/capabilities/questions.tools.port.js +1 -0
- package/dist/capabilities/signals.facade.d.ts +16 -0
- package/dist/capabilities/signals.facade.js +14 -0
- package/dist/capabilities/signals.indexing.facade.d.ts +12 -0
- package/dist/capabilities/signals.indexing.facade.js +11 -0
- package/dist/capabilities/signals.tools.port.d.ts +5 -0
- package/dist/capabilities/signals.tools.port.js +1 -0
- package/dist/chat/chat-streaming.types.d.ts +0 -1
- package/dist/chat/chat-streaming.types.js +1 -2
- package/dist/chat/chat.agent.d.ts +0 -1
- package/dist/chat/chat.agent.js +0 -1
- package/dist/chat/chat.graph.d.ts +0 -1
- package/dist/chat/chat.graph.js +0 -1
- package/dist/chat/chat.interrupt.classifier.d.ts +0 -1
- package/dist/chat/chat.interrupt.classifier.js +0 -1
- package/dist/chat/chat.persona.d.ts +0 -1
- package/dist/chat/chat.persona.js +0 -1
- package/dist/chat/chat.prompt.d.ts +0 -1
- package/dist/chat/chat.prompt.js +0 -1
- package/dist/chat/chat.prompt.modules.d.ts +0 -1
- package/dist/chat/chat.prompt.modules.js +0 -1
- package/dist/chat/chat.question-dedup.d.ts +0 -1
- package/dist/chat/chat.question-dedup.js +0 -1
- package/dist/chat/chat.state.d.ts +0 -1
- package/dist/chat/chat.state.js +0 -1
- package/dist/chat/chat.streamer.d.ts +0 -1
- package/dist/chat/chat.streamer.js +0 -1
- package/dist/chat/chat.suggester.d.ts +0 -1
- package/dist/chat/chat.suggester.js +0 -1
- package/dist/chat/chat.summarizer.d.ts +0 -1
- package/dist/chat/chat.summarizer.js +0 -1
- package/dist/chat/chat.title.generator.d.ts +0 -1
- package/dist/chat/chat.title.generator.js +0 -1
- package/dist/chat/chat.tools.d.ts +0 -1
- package/dist/chat/chat.tools.js +0 -1
- package/dist/chat/chat.utils.d.ts +0 -1
- package/dist/chat/chat.utils.js +0 -1
- package/dist/chat/negotiator.persona.d.ts +0 -1
- package/dist/chat/negotiator.persona.js +0 -1
- package/dist/chat/negotiator.prompt.d.ts +1 -2
- package/dist/chat/negotiator.prompt.js +1 -2
- package/dist/chat/negotiator.tools.d.ts +0 -1
- package/dist/chat/negotiator.tools.js +0 -1
- package/dist/chat/onboarding.persona.d.ts +0 -1
- package/dist/chat/onboarding.persona.js +0 -1
- package/dist/chat/onboarding.prompt.d.ts +0 -1
- package/dist/chat/onboarding.prompt.js +0 -1
- package/dist/chat/reporter.action.contracts.d.ts +36 -0
- package/dist/chat/reporter.action.contracts.js +1 -0
- package/dist/chat/reporter.action.tools.d.ts +2 -37
- package/dist/chat/reporter.action.tools.js +0 -1
- package/dist/chat/reporter.persona.d.ts +0 -1
- package/dist/chat/reporter.persona.js +0 -1
- package/dist/chat/reporter.prompt.d.ts +0 -1
- package/dist/chat/reporter.prompt.js +0 -1
- package/dist/chat/signal.persona.d.ts +0 -1
- package/dist/chat/signal.persona.js +0 -1
- package/dist/chat/signal.prompt.d.ts +0 -1
- package/dist/chat/signal.prompt.js +0 -1
- package/dist/communities/application/index.d.ts +45 -0
- package/dist/communities/application/index.js +50 -0
- package/dist/communities/application/indexer.graph.d.ts +446 -0
- package/dist/communities/application/indexer.graph.js +420 -0
- package/dist/communities/application/indexer.state.d.ts +172 -0
- package/dist/communities/application/indexer.state.js +116 -0
- package/dist/communities/application/membership.graph.d.ts +270 -0
- package/dist/communities/application/membership.graph.js +229 -0
- package/dist/communities/application/network.graph.d.ts +648 -0
- package/dist/communities/application/network.graph.js +303 -0
- package/dist/communities/application/network.recommender.d.ts +44 -0
- package/dist/communities/application/network.recommender.js +113 -0
- package/dist/communities/application/network.tools.d.ts +35 -0
- package/dist/communities/application/network.tools.js +578 -0
- package/dist/communities/domain/index.d.ts +29 -0
- package/dist/communities/domain/index.js +31 -0
- package/dist/communities/domain/membership.state.d.ts +87 -0
- package/dist/communities/domain/membership.state.js +53 -0
- package/dist/communities/domain/network.state.d.ts +192 -0
- package/dist/communities/domain/network.state.js +66 -0
- package/dist/communities/index.d.ts +14 -0
- package/dist/communities/index.js +14 -0
- package/dist/communities/ports/index.d.ts +25 -0
- package/dist/communities/ports/index.js +27 -0
- package/dist/communities/public/index.d.ts +30 -0
- package/dist/communities/public/index.js +33 -0
- package/dist/contact/contact.inviter.d.ts +7 -44
- package/dist/contact/contact.inviter.js +6 -59
- package/dist/contact/contact.tools.d.ts +7 -5
- package/dist/contact/contact.tools.js +7 -177
- package/dist/contacts/application/contact.inviter.d.ts +49 -0
- package/dist/contacts/application/contact.inviter.js +64 -0
- package/dist/contacts/application/contact.tools.d.ts +20 -0
- package/dist/contacts/application/contact.tools.js +191 -0
- package/dist/contacts/application/index.d.ts +22 -0
- package/dist/contacts/application/index.js +21 -0
- package/dist/contacts/domain/contact.types.d.ts +51 -0
- package/dist/contacts/domain/contact.types.js +10 -0
- package/dist/contacts/domain/index.d.ts +18 -0
- package/dist/contacts/domain/index.js +1 -0
- package/dist/contacts/index.d.ts +24 -0
- package/dist/contacts/index.js +24 -0
- package/dist/contacts/ports/contact.repository.port.d.ts +28 -0
- package/dist/contacts/ports/contact.repository.port.js +14 -0
- package/dist/contacts/ports/contact.tools.port.d.ts +26 -0
- package/dist/contacts/ports/contact.tools.port.js +21 -0
- package/dist/contacts/ports/index.d.ts +22 -0
- package/dist/contacts/ports/index.js +21 -0
- package/dist/contacts/public/index.d.ts +36 -0
- package/dist/contacts/public/index.js +33 -0
- package/dist/context/context.generator.d.ts +0 -1
- package/dist/context/context.generator.js +0 -1
- package/dist/enrichment/enrichment.enricher.d.ts +0 -1
- package/dist/enrichment/enrichment.enricher.js +0 -1
- package/dist/enrichment/enrichment.generator.d.ts +0 -1
- package/dist/enrichment/enrichment.generator.js +0 -1
- package/dist/enrichment/enrichment.graph.d.ts +6 -7
- package/dist/enrichment/enrichment.graph.js +0 -1
- package/dist/enrichment/enrichment.state.d.ts +2 -3
- package/dist/enrichment/enrichment.state.js +0 -1
- package/dist/enrichment/enrichment.tools.d.ts +3 -3
- package/dist/enrichment/enrichment.tools.js +0 -1
- package/dist/index.d.ts +106 -91
- package/dist/index.js +79 -71
- package/dist/integration/integration.tools.d.ts +6 -10
- package/dist/integration/integration.tools.js +6 -82
- package/dist/integrations/application/index.d.ts +14 -0
- package/dist/integrations/application/index.js +14 -0
- package/dist/integrations/application/integration.tools.d.ts +27 -0
- package/dist/integrations/application/integration.tools.js +98 -0
- package/dist/integrations/domain/index.d.ts +18 -0
- package/dist/integrations/domain/index.js +1 -0
- package/dist/integrations/domain/integration.types.d.ts +53 -0
- package/dist/integrations/domain/integration.types.js +11 -0
- package/dist/integrations/index.d.ts +27 -0
- package/dist/integrations/index.js +27 -0
- package/dist/integrations/ports/index.d.ts +28 -0
- package/dist/integrations/ports/index.js +26 -0
- package/dist/integrations/ports/integration.adapter.port.d.ts +62 -0
- package/dist/integrations/ports/integration.adapter.port.js +15 -0
- package/dist/integrations/ports/integration.importer.port.d.ts +31 -0
- package/dist/integrations/ports/integration.importer.port.js +15 -0
- package/dist/integrations/ports/integration.tools.port.d.ts +28 -0
- package/dist/integrations/ports/integration.tools.port.js +21 -0
- package/dist/integrations/public/index.d.ts +37 -0
- package/dist/integrations/public/index.js +34 -0
- package/dist/intent/intent.clarifier.d.ts +3 -52
- package/dist/intent/intent.clarifier.js +2 -202
- package/dist/intent/intent.graph.d.ts +3 -551
- package/dist/intent/intent.graph.js +3 -937
- package/dist/intent/intent.indexer.d.ts +2 -83
- package/dist/intent/intent.indexer.js +2 -171
- package/dist/intent/intent.inferrer.d.ts +2 -95
- package/dist/intent/intent.inferrer.js +2 -234
- package/dist/intent/intent.reconciler.d.ts +2 -106
- package/dist/intent/intent.reconciler.js +2 -187
- package/dist/intent/intent.specificity.d.ts +2 -3
- package/dist/intent/intent.specificity.js +2 -3
- package/dist/intent/intent.state.d.ts +8 -229
- package/dist/intent/intent.state.js +8 -189
- package/dist/intent/intent.tools.d.ts +6 -24
- package/dist/intent/intent.tools.js +4 -788
- package/dist/intent/intent.verifier.d.ts +2 -116
- package/dist/intent/intent.verifier.js +2 -263
- package/dist/maintenance/maintenance.graph.d.ts +0 -1
- package/dist/maintenance/maintenance.graph.js +0 -1
- package/dist/maintenance/maintenance.state.d.ts +0 -1
- package/dist/maintenance/maintenance.state.js +0 -1
- package/dist/mcp/elicitation.builder.d.ts +0 -1
- package/dist/mcp/elicitation.builder.js +0 -1
- package/dist/mcp/elicitation.dispatcher.d.ts +0 -1
- package/dist/mcp/elicitation.dispatcher.js +0 -1
- package/dist/mcp/mcp.server.d.ts +0 -1
- package/dist/mcp/mcp.server.js +1 -2
- package/dist/negotiation/application/index.d.ts +48 -0
- package/dist/negotiation/application/index.js +49 -0
- package/dist/negotiation/application/insight.generator.d.ts +31 -0
- package/dist/negotiation/application/insight.generator.js +105 -0
- package/dist/negotiation/application/negotiation.agent.d.ts +110 -0
- package/dist/negotiation/application/negotiation.agent.js +244 -0
- package/dist/negotiation/application/negotiation.detail-reader.d.ts +94 -0
- package/dist/negotiation/application/negotiation.detail-reader.js +91 -0
- package/dist/negotiation/application/negotiation.graph.d.ts +666 -0
- package/dist/negotiation/application/negotiation.graph.js +1394 -0
- package/dist/negotiation/application/negotiation.reflect.d.ts +194 -0
- package/dist/negotiation/application/negotiation.reflect.js +145 -0
- package/dist/negotiation/application/negotiation.screen.d.ts +78 -0
- package/dist/negotiation/application/negotiation.screen.js +108 -0
- package/dist/negotiation/application/negotiation.summarizer.d.ts +25 -0
- package/dist/negotiation/application/negotiation.summarizer.js +101 -0
- package/dist/negotiation/application/negotiation.tools.d.ts +18 -0
- package/dist/negotiation/application/negotiation.tools.js +782 -0
- package/dist/negotiation/domain/index.d.ts +48 -0
- package/dist/negotiation/domain/index.js +50 -0
- package/dist/negotiation/domain/negotiation.consultation-policy.d.ts +39 -0
- package/dist/negotiation/domain/negotiation.consultation-policy.js +68 -0
- package/dist/negotiation/domain/negotiation.deadlock.contracts.d.ts +10 -0
- package/dist/negotiation/domain/negotiation.deadlock.contracts.js +1 -0
- package/dist/negotiation/domain/negotiation.deadlock.d.ts +81 -0
- package/dist/negotiation/domain/negotiation.deadlock.js +103 -0
- package/dist/negotiation/domain/negotiation.intent-snapshot-provenance.d.ts +21 -0
- package/dist/negotiation/domain/negotiation.intent-snapshot-provenance.js +28 -0
- package/dist/negotiation/domain/negotiation.lifecycle-narration.d.ts +18 -0
- package/dist/negotiation/domain/negotiation.lifecycle-narration.js +87 -0
- package/dist/negotiation/domain/negotiation.memory.d.ts +65 -0
- package/dist/negotiation/domain/negotiation.memory.js +83 -0
- package/dist/negotiation/domain/negotiation.protocol.d.ts +536 -0
- package/dist/negotiation/domain/negotiation.protocol.js +202 -0
- package/dist/negotiation/domain/negotiation.question-safety.d.ts +25 -0
- package/dist/negotiation/domain/negotiation.question-safety.js +55 -0
- package/dist/negotiation/domain/negotiation.screen.contracts.d.ts +88 -0
- package/dist/negotiation/domain/negotiation.screen.contracts.js +58 -0
- package/dist/negotiation/domain/negotiation.state.d.ts +497 -0
- package/dist/negotiation/domain/negotiation.state.js +288 -0
- package/dist/negotiation/domain/negotiation.task-lock-policy.d.ts +10 -0
- package/dist/negotiation/domain/negotiation.task-lock-policy.js +22 -0
- package/dist/negotiation/index.d.ts +49 -0
- package/dist/negotiation/index.js +49 -0
- package/dist/negotiation/insight.generator.d.ts +3 -30
- package/dist/negotiation/insight.generator.js +3 -104
- package/dist/negotiation/negotiation.agent.d.ts +3 -109
- package/dist/negotiation/negotiation.agent.js +3 -248
- package/dist/negotiation/negotiation.attribution.d.ts +0 -1
- package/dist/negotiation/negotiation.attribution.js +0 -1
- package/dist/negotiation/negotiation.consultation-policy.d.ts +3 -38
- package/dist/negotiation/negotiation.consultation-policy.js +3 -67
- package/dist/negotiation/negotiation.deadlock.contracts.d.ts +5 -0
- package/dist/negotiation/negotiation.deadlock.contracts.js +5 -0
- package/dist/negotiation/negotiation.deadlock.d.ts +3 -94
- package/dist/negotiation/negotiation.deadlock.js +3 -101
- package/dist/negotiation/negotiation.detail-reader.d.ts +5 -0
- package/dist/negotiation/negotiation.detail-reader.js +5 -0
- package/dist/negotiation/negotiation.graph.d.ts +3 -663
- package/dist/negotiation/negotiation.graph.js +3 -1459
- package/dist/negotiation/negotiation.intent-snapshot-provenance.d.ts +5 -0
- package/dist/negotiation/negotiation.intent-snapshot-provenance.js +5 -0
- package/dist/negotiation/negotiation.lifecycle-narration.d.ts +5 -0
- package/dist/negotiation/negotiation.lifecycle-narration.js +5 -0
- package/dist/negotiation/negotiation.memory.d.ts +5 -56
- package/dist/negotiation/negotiation.memory.js +5 -69
- package/dist/negotiation/negotiation.protocol.d.ts +3 -535
- package/dist/negotiation/negotiation.protocol.js +3 -201
- package/dist/negotiation/negotiation.question-safety.d.ts +3 -24
- package/dist/negotiation/negotiation.question-safety.js +3 -54
- package/dist/negotiation/negotiation.reflect.d.ts +4 -197
- package/dist/negotiation/negotiation.reflect.js +4 -151
- package/dist/negotiation/negotiation.screen.d.ts +6 -159
- package/dist/negotiation/negotiation.screen.js +6 -152
- package/dist/negotiation/negotiation.state.d.ts +3 -495
- package/dist/negotiation/negotiation.state.js +3 -284
- package/dist/negotiation/negotiation.summarizer.d.ts +3 -24
- package/dist/negotiation/negotiation.summarizer.js +3 -100
- package/dist/negotiation/negotiation.task-lock-policy.d.ts +5 -0
- package/dist/negotiation/negotiation.task-lock-policy.js +5 -0
- package/dist/negotiation/negotiation.tools.d.ts +3 -15
- package/dist/negotiation/negotiation.tools.js +3 -946
- package/dist/negotiation/ports/index.d.ts +18 -0
- package/dist/negotiation/ports/index.js +18 -0
- package/dist/negotiation/ports/negotiation.tools.port.d.ts +18 -0
- package/dist/negotiation/ports/negotiation.tools.port.js +1 -0
- package/dist/negotiation/public/index.d.ts +58 -0
- package/dist/negotiation/public/index.js +60 -0
- package/dist/network/indexer/indexer.graph.d.ts +3 -413
- package/dist/network/indexer/indexer.graph.js +3 -375
- package/dist/network/indexer/indexer.state.d.ts +3 -149
- package/dist/network/indexer/indexer.state.js +3 -98
- package/dist/network/membership/membership.graph.d.ts +3 -248
- package/dist/network/membership/membership.graph.js +3 -202
- package/dist/network/membership/membership.state.d.ts +3 -75
- package/dist/network/membership/membership.state.js +3 -41
- package/dist/network/network.graph.d.ts +3 -629
- package/dist/network/network.graph.js +3 -267
- package/dist/network/network.recommender.d.ts +3 -40
- package/dist/network/network.recommender.js +3 -109
- package/dist/network/network.state.d.ts +3 -180
- package/dist/network/network.state.js +3 -54
- package/dist/network/network.tools.d.ts +5 -3
- package/dist/network/network.tools.js +5 -566
- package/dist/opportunity/application/delivery-card.cache.d.ts +25 -0
- package/dist/opportunity/application/delivery-card.cache.js +43 -0
- package/dist/opportunity/application/index.d.ts +63 -0
- package/dist/opportunity/application/index.js +68 -0
- package/dist/opportunity/application/negotiation-context.loader.d.ts +59 -0
- package/dist/opportunity/application/negotiation-context.loader.js +88 -0
- package/dist/opportunity/application/opportunity.card-presentation.d.ts +44 -0
- package/dist/opportunity/application/opportunity.card-presentation.js +104 -0
- package/dist/opportunity/application/opportunity.discover.d.ts +215 -0
- package/dist/opportunity/application/opportunity.discover.js +793 -0
- package/dist/opportunity/application/opportunity.discovery-continuation-finalization.d.ts +34 -0
- package/dist/opportunity/application/opportunity.discovery-continuation-finalization.js +74 -0
- package/dist/opportunity/application/opportunity.discovery-mcp-lifecycle-finalization.d.ts +44 -0
- package/dist/opportunity/application/opportunity.discovery-mcp-lifecycle-finalization.js +92 -0
- package/dist/opportunity/application/opportunity.discovery-negotiation-summary.d.ts +14 -0
- package/dist/opportunity/application/opportunity.discovery-negotiation-summary.js +46 -0
- package/dist/opportunity/application/opportunity.enricher.d.ts +71 -0
- package/dist/opportunity/application/opportunity.enricher.js +280 -0
- package/dist/opportunity/application/opportunity.evaluator.d.ts +275 -0
- package/dist/opportunity/application/opportunity.evaluator.js +459 -0
- package/dist/opportunity/application/opportunity.existing-negotiation.d.ts +79 -0
- package/dist/opportunity/application/opportunity.existing-negotiation.js +118 -0
- package/dist/opportunity/application/opportunity.feed-selection.d.ts +30 -0
- package/dist/opportunity/application/opportunity.feed-selection.js +96 -0
- package/dist/opportunity/application/opportunity.graph.d.ts +1427 -0
- package/dist/opportunity/application/opportunity.graph.js +3707 -0
- package/dist/opportunity/application/opportunity.introducer.d.ts +77 -0
- package/dist/opportunity/application/opportunity.introducer.js +99 -0
- package/dist/opportunity/application/opportunity.lifecycle.d.ts +63 -0
- package/dist/opportunity/application/opportunity.lifecycle.js +181 -0
- package/dist/opportunity/application/opportunity.newborn-stamping.d.ts +41 -0
- package/dist/opportunity/application/opportunity.newborn-stamping.js +81 -0
- package/dist/opportunity/application/opportunity.pending-questions.d.ts +33 -0
- package/dist/opportunity/application/opportunity.pending-questions.js +42 -0
- package/dist/opportunity/application/opportunity.persist.d.ts +58 -0
- package/dist/opportunity/application/opportunity.persist.js +145 -0
- package/dist/opportunity/application/opportunity.persistence-admission.d.ts +39 -0
- package/dist/opportunity/application/opportunity.persistence-admission.js +59 -0
- package/dist/opportunity/application/opportunity.presenter.d.ts +156 -0
- package/dist/opportunity/application/opportunity.presenter.js +736 -0
- package/dist/opportunity/application/opportunity.tools.d.ts +131 -0
- package/dist/opportunity/application/opportunity.tools.js +1834 -0
- package/dist/opportunity/application/opportunity.update-admission.d.ts +24 -0
- package/dist/opportunity/application/opportunity.update-admission.js +38 -0
- package/dist/opportunity/delivery-card.cache.d.ts +5 -26
- package/dist/opportunity/delivery-card.cache.js +5 -44
- package/dist/opportunity/discovery-question.helper.d.ts +3 -17
- package/dist/opportunity/discovery-question.helper.js +3 -14
- package/dist/opportunity/discriminator/discriminator.adjustments.d.ts +0 -1
- package/dist/opportunity/discriminator/discriminator.adjustments.js +0 -1
- package/dist/opportunity/discriminator/discriminator.assigner.d.ts +4 -5
- package/dist/opportunity/discriminator/discriminator.assigner.js +0 -1
- package/dist/opportunity/discriminator/discriminator.env.d.ts +0 -1
- package/dist/opportunity/discriminator/discriminator.env.js +0 -1
- package/dist/opportunity/discriminator/discriminator.miner.d.ts +0 -1
- package/dist/opportunity/discriminator/discriminator.miner.js +0 -1
- package/dist/opportunity/discriminator/discriminator.push.d.ts +0 -1
- package/dist/opportunity/discriminator/discriminator.push.js +0 -1
- package/dist/opportunity/discriminator/discriminator.question.d.ts +0 -1
- package/dist/opportunity/discriminator/discriminator.question.js +0 -1
- package/dist/opportunity/discriminator/discriminator.scorer.d.ts +0 -1
- package/dist/opportunity/discriminator/discriminator.scorer.js +0 -1
- package/dist/opportunity/discriminator/discriminator.shadow.d.ts +0 -1
- package/dist/opportunity/discriminator/discriminator.shadow.js +0 -1
- package/dist/opportunity/discriminator/discriminator.types.d.ts +0 -1
- package/dist/opportunity/discriminator/discriminator.types.js +0 -1
- package/dist/opportunity/domain/discovery-question.helper.d.ts +18 -0
- package/dist/opportunity/domain/discovery-question.helper.js +15 -0
- package/dist/opportunity/domain/index.d.ts +55 -0
- package/dist/opportunity/domain/index.js +52 -0
- package/dist/opportunity/domain/negotiation-summary.builder.d.ts +37 -0
- package/dist/opportunity/domain/negotiation-summary.builder.js +66 -0
- package/dist/opportunity/domain/opportunity.actor.d.ts +15 -0
- package/dist/opportunity/domain/opportunity.actor.js +39 -0
- package/dist/opportunity/domain/opportunity.claim-safety.d.ts +24 -0
- package/dist/opportunity/domain/opportunity.claim-safety.js +88 -0
- package/dist/opportunity/domain/opportunity.discovery-run-coalescing.d.ts +33 -0
- package/dist/opportunity/domain/opportunity.discovery-run-coalescing.js +33 -0
- package/dist/opportunity/domain/opportunity.discovery.contracts.d.ts +45 -0
- package/dist/opportunity/domain/opportunity.discovery.contracts.js +1 -0
- package/dist/opportunity/domain/opportunity.evidence.d.ts +21 -0
- package/dist/opportunity/domain/opportunity.evidence.js +78 -0
- package/dist/opportunity/domain/opportunity.labels.d.ts +8 -0
- package/dist/opportunity/domain/opportunity.labels.js +10 -0
- package/dist/opportunity/domain/opportunity.presentation-cache.d.ts +6 -0
- package/dist/opportunity/domain/opportunity.presentation-cache.js +14 -0
- package/dist/opportunity/domain/opportunity.presentation.d.ts +76 -0
- package/dist/opportunity/domain/opportunity.presentation.js +516 -0
- package/dist/opportunity/domain/opportunity.safe-presentation.d.ts +104 -0
- package/dist/opportunity/domain/opportunity.safe-presentation.js +102 -0
- package/dist/opportunity/domain/opportunity.state.d.ts +519 -0
- package/dist/opportunity/domain/opportunity.state.js +309 -0
- package/dist/opportunity/domain/opportunity.utils.d.ts +217 -0
- package/dist/opportunity/domain/opportunity.utils.js +395 -0
- package/dist/opportunity/feed/feed.categorizer.d.ts +0 -1
- package/dist/opportunity/feed/feed.categorizer.js +0 -1
- package/dist/opportunity/feed/feed.graph.d.ts +1 -2
- package/dist/opportunity/feed/feed.graph.js +0 -1
- package/dist/opportunity/feed/feed.health.d.ts +0 -1
- package/dist/opportunity/feed/feed.health.js +0 -1
- package/dist/opportunity/feed/feed.state.d.ts +1 -2
- package/dist/opportunity/feed/feed.state.js +0 -1
- package/dist/opportunity/index.d.ts +37 -0
- package/dist/opportunity/index.js +37 -0
- package/dist/opportunity/negotiation-context.loader.d.ts +3 -58
- package/dist/opportunity/negotiation-context.loader.js +3 -87
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.env.d.ts +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.env.js +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.extractor.d.ts +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.extractor.js +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.miner.d.ts +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.miner.js +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.shadow.d.ts +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.shadow.js +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.types.d.ts +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.types.js +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.verifier.d.ts +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.verifier.js +0 -1
- package/dist/opportunity/negotiation-summary.builder.d.ts +3 -36
- package/dist/opportunity/negotiation-summary.builder.js +3 -65
- package/dist/opportunity/opportunity.actor.d.ts +3 -14
- package/dist/opportunity/opportunity.actor.js +3 -38
- package/dist/opportunity/opportunity.card-presentation.d.ts +5 -0
- package/dist/opportunity/opportunity.card-presentation.js +5 -0
- package/dist/opportunity/opportunity.claim-safety.d.ts +3 -23
- package/dist/opportunity/opportunity.claim-safety.js +3 -87
- package/dist/opportunity/opportunity.discover.d.ts +3 -218
- package/dist/opportunity/opportunity.discover.js +3 -917
- package/dist/opportunity/opportunity.discovery-continuation-finalization.d.ts +5 -0
- package/dist/opportunity/opportunity.discovery-continuation-finalization.js +5 -0
- package/dist/opportunity/opportunity.discovery-mcp-lifecycle-finalization.d.ts +5 -0
- package/dist/opportunity/opportunity.discovery-mcp-lifecycle-finalization.js +5 -0
- package/dist/opportunity/opportunity.discovery-negotiation-summary.d.ts +5 -0
- package/dist/opportunity/opportunity.discovery-negotiation-summary.js +5 -0
- package/dist/opportunity/opportunity.discovery-run-coalescing.d.ts +5 -0
- package/dist/opportunity/opportunity.discovery-run-coalescing.js +5 -0
- package/dist/opportunity/opportunity.discovery.contracts.d.ts +5 -0
- package/dist/opportunity/opportunity.discovery.contracts.js +5 -0
- package/dist/opportunity/opportunity.enricher.d.ts +3 -70
- package/dist/opportunity/opportunity.enricher.js +3 -279
- package/dist/opportunity/opportunity.evaluator.d.ts +5 -276
- package/dist/opportunity/opportunity.evaluator.js +5 -460
- package/dist/opportunity/opportunity.evidence.d.ts +5 -22
- package/dist/opportunity/opportunity.evidence.js +5 -79
- package/dist/opportunity/opportunity.existing-negotiation.d.ts +5 -0
- package/dist/opportunity/opportunity.existing-negotiation.js +5 -0
- package/dist/opportunity/opportunity.feed-selection.d.ts +5 -0
- package/dist/opportunity/opportunity.feed-selection.js +5 -0
- package/dist/opportunity/opportunity.graph.d.ts +3 -1489
- package/dist/opportunity/opportunity.graph.js +3 -4071
- package/dist/opportunity/opportunity.introducer.d.ts +3 -76
- package/dist/opportunity/opportunity.introducer.js +3 -98
- package/dist/opportunity/opportunity.labels.d.ts +5 -9
- package/dist/opportunity/opportunity.labels.js +5 -11
- package/dist/opportunity/opportunity.lifecycle.d.ts +5 -0
- package/dist/opportunity/opportunity.lifecycle.js +5 -0
- package/dist/opportunity/opportunity.newborn-stamping.d.ts +5 -0
- package/dist/opportunity/opportunity.newborn-stamping.js +5 -0
- package/dist/opportunity/opportunity.pending-questions.d.ts +3 -32
- package/dist/opportunity/opportunity.pending-questions.js +3 -41
- package/dist/opportunity/opportunity.persist.d.ts +3 -57
- package/dist/opportunity/opportunity.persist.js +3 -144
- package/dist/opportunity/opportunity.persistence-admission.d.ts +5 -0
- package/dist/opportunity/opportunity.persistence-admission.js +5 -0
- package/dist/opportunity/opportunity.presentation-cache.d.ts +5 -7
- package/dist/opportunity/opportunity.presentation-cache.js +5 -15
- package/dist/opportunity/opportunity.presentation.d.ts +3 -75
- package/dist/opportunity/opportunity.presentation.js +3 -515
- package/dist/opportunity/opportunity.presenter.d.ts +10 -155
- package/dist/opportunity/opportunity.presenter.js +10 -735
- package/dist/opportunity/opportunity.safe-presentation.d.ts +3 -103
- package/dist/opportunity/opportunity.safe-presentation.js +3 -101
- package/dist/opportunity/opportunity.state.d.ts +3 -518
- package/dist/opportunity/opportunity.state.js +3 -308
- package/dist/opportunity/opportunity.tools.d.ts +3 -157
- package/dist/opportunity/opportunity.tools.js +3 -2238
- package/dist/opportunity/opportunity.update-admission.d.ts +5 -0
- package/dist/opportunity/opportunity.update-admission.js +5 -0
- package/dist/opportunity/opportunity.utils.d.ts +3 -216
- package/dist/opportunity/opportunity.utils.js +3 -394
- package/dist/opportunity/outcome/outcome.env.d.ts +0 -1
- package/dist/opportunity/outcome/outcome.env.js +0 -1
- package/dist/opportunity/outcome/outcome.hypotheses.d.ts +0 -1
- package/dist/opportunity/outcome/outcome.hypotheses.js +0 -1
- package/dist/opportunity/outcome/outcome.shadow.d.ts +0 -1
- package/dist/opportunity/outcome/outcome.shadow.js +0 -1
- package/dist/opportunity/outcome/outcome.types.d.ts +0 -1
- package/dist/opportunity/outcome/outcome.types.js +0 -1
- package/dist/opportunity/ports/index.d.ts +5 -0
- package/dist/opportunity/ports/index.js +1 -0
- package/dist/opportunity/ports/opportunity.tools.port.d.ts +5 -0
- package/dist/opportunity/ports/opportunity.tools.port.js +1 -0
- package/dist/opportunity/public/index.d.ts +58 -0
- package/dist/opportunity/public/index.js +51 -0
- package/dist/participant-agents/application/agent.tools.d.ts +16 -0
- package/dist/participant-agents/application/agent.tools.js +313 -0
- package/dist/participant-agents/application/index.d.ts +21 -0
- package/dist/participant-agents/application/index.js +22 -0
- package/dist/participant-agents/domain/agent.types.d.ts +76 -0
- package/dist/participant-agents/domain/agent.types.js +22 -0
- package/dist/participant-agents/domain/index.d.ts +20 -0
- package/dist/participant-agents/domain/index.js +1 -0
- package/dist/participant-agents/index.d.ts +24 -0
- package/dist/participant-agents/index.js +24 -0
- package/dist/participant-agents/ports/agent.dispatcher.port.d.ts +25 -0
- package/dist/participant-agents/ports/agent.dispatcher.port.js +1 -0
- package/dist/participant-agents/ports/agent.repository.port.d.ts +118 -0
- package/dist/participant-agents/ports/agent.repository.port.js +10 -0
- package/dist/participant-agents/ports/agent.tools.port.d.ts +24 -0
- package/dist/participant-agents/ports/agent.tools.port.js +20 -0
- package/dist/participant-agents/ports/index.d.ts +29 -0
- package/dist/participant-agents/ports/index.js +27 -0
- package/dist/participant-agents/public/index.d.ts +39 -0
- package/dist/participant-agents/public/index.js +36 -0
- package/dist/participant-context/application/index.d.ts +73 -0
- package/dist/participant-context/application/index.js +83 -0
- package/dist/participant-context/domain/index.d.ts +67 -0
- package/dist/participant-context/domain/index.js +68 -0
- package/dist/participant-context/index.d.ts +16 -0
- package/dist/participant-context/index.js +16 -0
- package/dist/participant-context/ports/index.d.ts +37 -0
- package/dist/participant-context/ports/index.js +34 -0
- package/dist/participant-context/public/index.d.ts +48 -0
- package/dist/participant-context/public/index.js +55 -0
- package/dist/platform/index.d.ts +19 -0
- package/dist/platform/index.js +23 -0
- package/dist/premise/premise.analyzer.d.ts +0 -1
- package/dist/premise/premise.analyzer.js +0 -2
- package/dist/premise/premise.decomposer.d.ts +0 -1
- package/dist/premise/premise.decomposer.js +0 -2
- package/dist/premise/premise.graph.d.ts +1 -2
- package/dist/premise/premise.graph.js +0 -2
- package/dist/premise/premise.indexer.d.ts +0 -1
- package/dist/premise/premise.indexer.js +0 -2
- package/dist/premise/premise.state.d.ts +1 -2
- package/dist/premise/premise.state.js +0 -1
- package/dist/premise/premise.tools.d.ts +3 -3
- package/dist/premise/premise.tools.js +0 -2
- package/dist/public/index.d.ts +17 -0
- package/dist/public/index.js +17 -0
- package/dist/questioner/questioner.agent.d.ts +4 -27
- package/dist/questioner/questioner.agent.js +3 -133
- package/dist/questioner/questioner.ask.tool.d.ts +3 -12
- package/dist/questioner/questioner.ask.tool.js +3 -299
- package/dist/questioner/questioner.discovery.prompt.d.ts +3 -7
- package/dist/questioner/questioner.discovery.prompt.js +3 -180
- package/dist/questioner/questioner.env.d.ts +3 -57
- package/dist/questioner/questioner.env.js +3 -93
- package/dist/questioner/questioner.presets.d.ts +4 -19
- package/dist/questioner/questioner.presets.js +3 -465
- package/dist/questioner/questioner.qud.d.ts +3 -6
- package/dist/questioner/questioner.qud.js +3 -10
- package/dist/questioner/questioner.tools.d.ts +3 -15
- package/dist/questioner/questioner.tools.js +3 -186
- package/dist/questioner/questioner.types.d.ts +4 -218
- package/dist/questioner/questioner.types.js +5 -62
- package/dist/questions/application/index.d.ts +39 -0
- package/dist/questions/application/index.js +41 -0
- package/dist/questions/application/question.agent.d.ts +28 -0
- package/dist/questions/application/question.agent.js +139 -0
- package/dist/questions/application/question.ask.tool.d.ts +12 -0
- package/dist/questions/application/question.ask.tool.js +300 -0
- package/dist/questions/application/question.discovery.prompt.d.ts +8 -0
- package/dist/questions/application/question.discovery.prompt.js +181 -0
- package/dist/questions/application/question.env.d.ts +61 -0
- package/dist/questions/application/question.env.js +97 -0
- package/dist/questions/application/question.input.d.ts +237 -0
- package/dist/questions/application/question.input.js +61 -0
- package/dist/questions/application/question.presets.d.ts +24 -0
- package/dist/questions/application/question.presets.js +445 -0
- package/dist/questions/application/question.qud.d.ts +12 -0
- package/dist/questions/application/question.qud.js +16 -0
- package/dist/questions/application/question.tools.d.ts +15 -0
- package/dist/questions/application/question.tools.js +190 -0
- package/dist/questions/domain/index.d.ts +25 -0
- package/dist/questions/domain/index.js +25 -0
- package/dist/questions/domain/question.schema.d.ts +1537 -0
- package/dist/questions/domain/question.schema.js +422 -0
- package/dist/questions/index.d.ts +22 -0
- package/dist/questions/index.js +22 -0
- package/dist/questions/ports/index.d.ts +29 -0
- package/dist/questions/ports/index.js +27 -0
- package/dist/questions/ports/question.generator.port.d.ts +34 -0
- package/dist/questions/ports/question.generator.port.js +1 -0
- package/dist/questions/ports/question.persistence.port.d.ts +87 -0
- package/dist/questions/ports/question.persistence.port.js +1 -0
- package/dist/questions/ports/question.tools.port.d.ts +15 -0
- package/dist/questions/ports/question.tools.port.js +1 -0
- package/dist/questions/public/index.d.ts +47 -0
- package/dist/questions/public/index.js +49 -0
- package/dist/runtime/background/index.d.ts +14 -0
- package/dist/runtime/background/index.js +14 -0
- package/dist/runtime/foreground/composition/tool.factory.d.ts +16 -0
- package/dist/runtime/foreground/composition/tool.factory.js +224 -0
- package/dist/runtime/foreground/composition/tool.registry.d.ts +11 -0
- package/dist/runtime/foreground/composition/tool.registry.js +106 -0
- package/dist/runtime/foreground/index.d.ts +13 -0
- package/dist/runtime/foreground/index.js +13 -0
- package/dist/runtime/foreground/signals/intent.tools.d.ts +13 -0
- package/dist/runtime/foreground/signals/intent.tools.js +13 -0
- package/dist/shared/agent/model-signal.d.ts +0 -1
- package/dist/shared/agent/model-signal.js +0 -1
- package/dist/shared/agent/model.config.d.ts +0 -1
- package/dist/shared/agent/model.config.js +0 -1
- package/dist/shared/agent/tool.factory.d.ts +4 -15
- package/dist/shared/agent/tool.factory.js +4 -226
- package/dist/shared/agent/tool.helpers.d.ts +51 -12
- package/dist/shared/agent/tool.helpers.js +0 -1
- package/dist/shared/agent/tool.registry.d.ts +9 -9
- package/dist/shared/agent/tool.registry.js +9 -104
- package/dist/shared/agent/tool.runtime.d.ts +0 -1
- package/dist/shared/agent/tool.runtime.js +0 -1
- package/dist/shared/agent/tool.scope.d.ts +0 -1
- package/dist/shared/agent/tool.scope.js +0 -1
- package/dist/shared/agent/utility.tools.d.ts +5 -3
- package/dist/shared/agent/utility.tools.js +0 -1
- package/dist/shared/assignment/network-assignment.policy.d.ts +0 -1
- package/dist/shared/assignment/network-assignment.policy.js +0 -1
- package/dist/shared/hyde/hyde.documents.d.ts +0 -1
- package/dist/shared/hyde/hyde.documents.js +0 -1
- package/dist/shared/hyde/hyde.env.d.ts +0 -1
- package/dist/shared/hyde/hyde.env.js +0 -1
- package/dist/shared/hyde/hyde.frame.d.ts +4 -5
- package/dist/shared/hyde/hyde.frame.js +0 -1
- package/dist/shared/hyde/hyde.generator.d.ts +0 -1
- package/dist/shared/hyde/hyde.generator.js +0 -1
- package/dist/shared/hyde/hyde.graph.d.ts +0 -1
- package/dist/shared/hyde/hyde.graph.js +0 -1
- package/dist/shared/hyde/hyde.state.d.ts +0 -1
- package/dist/shared/hyde/hyde.state.js +0 -1
- package/dist/shared/hyde/hyde.strategies.d.ts +0 -1
- package/dist/shared/hyde/hyde.strategies.js +0 -1
- package/dist/shared/hyde/hyde.validator.d.ts +0 -1
- package/dist/shared/hyde/hyde.validator.js +0 -1
- package/dist/shared/hyde/lens.inferrer.d.ts +6 -7
- package/dist/shared/hyde/lens.inferrer.js +0 -1
- package/dist/shared/interfaces/agent-dispatcher.interface.d.ts +4 -1
- package/dist/shared/interfaces/agent-dispatcher.interface.js +4 -1
- package/dist/shared/interfaces/agent.interface.d.ts +13 -173
- package/dist/shared/interfaces/agent.interface.js +12 -12
- package/dist/shared/interfaces/auth.interface.d.ts +0 -1
- package/dist/shared/interfaces/auth.interface.js +0 -1
- package/dist/shared/interfaces/cache.interface.d.ts +0 -1
- package/dist/shared/interfaces/cache.interface.js +0 -1
- package/dist/shared/interfaces/chat-message-writer.interface.d.ts +0 -1
- package/dist/shared/interfaces/chat-message-writer.interface.js +0 -1
- package/dist/shared/interfaces/chat-session.interface.d.ts +0 -1
- package/dist/shared/interfaces/chat-session.interface.js +0 -1
- package/dist/shared/interfaces/chat-summary.interface.d.ts +0 -1
- package/dist/shared/interfaces/chat-summary.interface.js +0 -1
- package/dist/shared/interfaces/connect-link.interface.d.ts +0 -1
- package/dist/shared/interfaces/connect-link.interface.js +0 -1
- package/dist/shared/interfaces/contact.interface.d.ts +7 -55
- package/dist/shared/interfaces/contact.interface.js +7 -1
- package/dist/shared/interfaces/database.interface.d.ts +0 -1
- package/dist/shared/interfaces/database.interface.js +0 -1
- package/dist/shared/interfaces/delivery-ledger.interface.d.ts +0 -1
- package/dist/shared/interfaces/delivery-ledger.interface.js +0 -1
- package/dist/shared/interfaces/discovery-run.interface.d.ts +2 -3
- package/dist/shared/interfaces/discovery-run.interface.js +0 -1
- package/dist/shared/interfaces/embedder.interface.d.ts +0 -1
- package/dist/shared/interfaces/embedder.interface.js +0 -1
- package/dist/shared/interfaces/enrichment-run.interface.d.ts +2 -3
- package/dist/shared/interfaces/enrichment-run.interface.js +0 -1
- package/dist/shared/interfaces/enrichment.interface.d.ts +0 -1
- package/dist/shared/interfaces/enrichment.interface.js +0 -1
- package/dist/shared/interfaces/integration.interface.d.ts +6 -88
- package/dist/shared/interfaces/integration.interface.js +7 -1
- package/dist/shared/interfaces/negotiation-events.interface.d.ts +0 -1
- package/dist/shared/interfaces/negotiation-events.interface.js +0 -1
- package/dist/shared/interfaces/negotiation-summary.interface.d.ts +0 -1
- package/dist/shared/interfaces/negotiation-summary.interface.js +0 -1
- package/dist/shared/interfaces/negotiator-memory.interface.d.ts +0 -1
- package/dist/shared/interfaces/negotiator-memory.interface.js +0 -1
- package/dist/shared/interfaces/question-generator.interface.d.ts +3 -28
- package/dist/shared/interfaces/question-generator.interface.js +0 -1
- package/dist/shared/interfaces/questioner.interface.d.ts +3 -77
- package/dist/shared/interfaces/questioner.interface.js +0 -1
- package/dist/shared/interfaces/queue.interface.d.ts +0 -1
- package/dist/shared/interfaces/queue.interface.js +0 -1
- package/dist/shared/interfaces/scraper.interface.d.ts +0 -1
- package/dist/shared/interfaces/scraper.interface.js +0 -1
- package/dist/shared/interfaces/tool-request-context.interface.d.ts +12 -0
- package/dist/shared/interfaces/tool-request-context.interface.js +1 -0
- package/dist/shared/network/metadata.renderer.d.ts +0 -1
- package/dist/shared/network/metadata.renderer.js +0 -1
- package/dist/shared/observability/debug-meta.sanitizer.d.ts +0 -1
- package/dist/shared/observability/debug-meta.sanitizer.js +0 -1
- package/dist/shared/observability/log.d.ts +0 -1
- package/dist/shared/observability/log.js +0 -1
- package/dist/shared/observability/performance.d.ts +0 -1
- package/dist/shared/observability/performance.js +0 -1
- package/dist/shared/observability/protocol.logger.d.ts +0 -1
- package/dist/shared/observability/protocol.logger.js +0 -1
- package/dist/shared/observability/request-context.d.ts +0 -1
- package/dist/shared/observability/request-context.js +0 -1
- package/dist/shared/observability/trace.d.ts +0 -1
- package/dist/shared/observability/trace.js +0 -1
- package/dist/shared/schemas/chat-context.schema.d.ts +0 -1
- package/dist/shared/schemas/chat-context.schema.js +0 -1
- package/dist/shared/schemas/discovery-question.schema.d.ts +17 -18
- package/dist/shared/schemas/discovery-question.schema.js +0 -1
- package/dist/shared/schemas/identity.schema.d.ts +0 -1
- package/dist/shared/schemas/identity.schema.js +0 -1
- package/dist/shared/schemas/mcp-auth.schema.d.ts +0 -1
- package/dist/shared/schemas/mcp-auth.schema.js +0 -1
- package/dist/shared/schemas/negotiation-digest.schema.d.ts +5 -6
- package/dist/shared/schemas/negotiation-digest.schema.js +0 -1
- package/dist/shared/schemas/negotiation-state.schema.d.ts +4 -5
- package/dist/shared/schemas/negotiation-state.schema.js +0 -1
- package/dist/shared/schemas/network-assignment.schema.d.ts +0 -1
- package/dist/shared/schemas/network-assignment.schema.js +0 -1
- package/dist/shared/schemas/pending-question.schema.d.ts +0 -1
- package/dist/shared/schemas/pending-question.schema.js +0 -1
- package/dist/shared/schemas/question.schema.d.ts +3 -1535
- package/dist/shared/schemas/question.schema.js +3 -420
- package/dist/shared/ui/lucide.icon-catalog.d.ts +0 -1
- package/dist/shared/ui/lucide.icon-catalog.js +0 -1
- package/dist/shared/utils/social-label.d.ts +0 -1
- package/dist/shared/utils/social-label.js +0 -1
- package/dist/shared/utils/telegram-handle.d.ts +0 -1
- package/dist/shared/utils/telegram-handle.js +0 -1
- package/dist/signals/application/index.d.ts +19 -0
- package/dist/signals/application/index.js +22 -0
- package/dist/signals/application/intent.clarifier.d.ts +51 -0
- package/dist/signals/application/intent.clarifier.js +201 -0
- package/dist/signals/application/intent.graph.d.ts +552 -0
- package/dist/signals/application/intent.graph.js +938 -0
- package/dist/signals/application/intent.indexer.d.ts +82 -0
- package/dist/signals/application/intent.indexer.js +170 -0
- package/dist/signals/application/intent.inferrer.d.ts +94 -0
- package/dist/signals/application/intent.inferrer.js +233 -0
- package/dist/signals/application/intent.reconciler.d.ts +105 -0
- package/dist/signals/application/intent.reconciler.js +186 -0
- package/dist/signals/application/intent.tools.d.ts +24 -0
- package/dist/signals/application/intent.tools.js +789 -0
- package/dist/signals/application/intent.verifier.d.ts +115 -0
- package/dist/signals/application/intent.verifier.js +262 -0
- package/dist/signals/domain/index.d.ts +9 -0
- package/dist/signals/domain/index.js +11 -0
- package/dist/signals/domain/intent.state.d.ts +230 -0
- package/dist/signals/domain/intent.state.js +190 -0
- package/dist/signals/domain/signal.specificity.d.ts +2 -0
- package/dist/signals/domain/signal.specificity.js +2 -0
- package/dist/signals/index.d.ts +13 -0
- package/dist/signals/index.js +13 -0
- package/dist/signals/ports/index.d.ts +15 -0
- package/dist/signals/ports/index.js +13 -0
- package/dist/signals/public/index.d.ts +15 -0
- package/dist/signals/public/index.js +16 -0
- package/package.json +14 -3
- package/dist/agent/agent.tools.d.ts.map +0 -1
- package/dist/agent/agent.tools.js.map +0 -1
- package/dist/agent/tests/fakes.d.ts +0 -25
- package/dist/agent/tests/fakes.d.ts.map +0 -1
- package/dist/agent/tests/fakes.js +0 -178
- package/dist/agent/tests/fakes.js.map +0 -1
- package/dist/chat/chat-streaming.types.d.ts.map +0 -1
- package/dist/chat/chat-streaming.types.js.map +0 -1
- package/dist/chat/chat.agent.d.ts.map +0 -1
- package/dist/chat/chat.agent.js.map +0 -1
- package/dist/chat/chat.graph.d.ts.map +0 -1
- package/dist/chat/chat.graph.js.map +0 -1
- package/dist/chat/chat.interrupt.classifier.d.ts.map +0 -1
- package/dist/chat/chat.interrupt.classifier.js.map +0 -1
- package/dist/chat/chat.persona.d.ts.map +0 -1
- package/dist/chat/chat.persona.js.map +0 -1
- package/dist/chat/chat.prompt.d.ts.map +0 -1
- package/dist/chat/chat.prompt.js.map +0 -1
- package/dist/chat/chat.prompt.modules.d.ts.map +0 -1
- package/dist/chat/chat.prompt.modules.js.map +0 -1
- package/dist/chat/chat.question-dedup.d.ts.map +0 -1
- package/dist/chat/chat.question-dedup.js.map +0 -1
- package/dist/chat/chat.state.d.ts.map +0 -1
- package/dist/chat/chat.state.js.map +0 -1
- package/dist/chat/chat.streamer.d.ts.map +0 -1
- package/dist/chat/chat.streamer.js.map +0 -1
- package/dist/chat/chat.suggester.d.ts.map +0 -1
- package/dist/chat/chat.suggester.js.map +0 -1
- package/dist/chat/chat.summarizer.d.ts.map +0 -1
- package/dist/chat/chat.summarizer.js.map +0 -1
- package/dist/chat/chat.title.generator.d.ts.map +0 -1
- package/dist/chat/chat.title.generator.js.map +0 -1
- package/dist/chat/chat.tools.d.ts.map +0 -1
- package/dist/chat/chat.tools.js.map +0 -1
- package/dist/chat/chat.utils.d.ts.map +0 -1
- package/dist/chat/chat.utils.js.map +0 -1
- package/dist/chat/negotiator.persona.d.ts.map +0 -1
- package/dist/chat/negotiator.persona.js.map +0 -1
- package/dist/chat/negotiator.prompt.d.ts.map +0 -1
- package/dist/chat/negotiator.prompt.js.map +0 -1
- package/dist/chat/negotiator.tools.d.ts.map +0 -1
- package/dist/chat/negotiator.tools.js.map +0 -1
- package/dist/chat/onboarding.persona.d.ts.map +0 -1
- package/dist/chat/onboarding.persona.js.map +0 -1
- package/dist/chat/onboarding.prompt.d.ts.map +0 -1
- package/dist/chat/onboarding.prompt.js.map +0 -1
- package/dist/chat/reporter.action.tools.d.ts.map +0 -1
- package/dist/chat/reporter.action.tools.js.map +0 -1
- package/dist/chat/reporter.persona.d.ts.map +0 -1
- package/dist/chat/reporter.persona.js.map +0 -1
- package/dist/chat/reporter.prompt.d.ts.map +0 -1
- package/dist/chat/reporter.prompt.js.map +0 -1
- package/dist/chat/signal.persona.d.ts.map +0 -1
- package/dist/chat/signal.persona.js.map +0 -1
- package/dist/chat/signal.prompt.d.ts.map +0 -1
- package/dist/chat/signal.prompt.js.map +0 -1
- package/dist/chat/tests/chat.graph.mocks.d.ts +0 -98
- package/dist/chat/tests/chat.graph.mocks.d.ts.map +0 -1
- package/dist/chat/tests/chat.graph.mocks.js +0 -225
- package/dist/chat/tests/chat.graph.mocks.js.map +0 -1
- package/dist/contact/contact.inviter.d.ts.map +0 -1
- package/dist/contact/contact.inviter.js.map +0 -1
- package/dist/contact/contact.tools.d.ts.map +0 -1
- package/dist/contact/contact.tools.js.map +0 -1
- package/dist/context/context.generator.d.ts.map +0 -1
- package/dist/context/context.generator.js.map +0 -1
- package/dist/enrichment/enrichment.enricher.d.ts.map +0 -1
- package/dist/enrichment/enrichment.enricher.js.map +0 -1
- package/dist/enrichment/enrichment.generator.d.ts.map +0 -1
- package/dist/enrichment/enrichment.generator.js.map +0 -1
- package/dist/enrichment/enrichment.graph.d.ts.map +0 -1
- package/dist/enrichment/enrichment.graph.js.map +0 -1
- package/dist/enrichment/enrichment.state.d.ts.map +0 -1
- package/dist/enrichment/enrichment.state.js.map +0 -1
- package/dist/enrichment/enrichment.tools.d.ts.map +0 -1
- package/dist/enrichment/enrichment.tools.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/integration/integration.tools.d.ts.map +0 -1
- package/dist/integration/integration.tools.js.map +0 -1
- package/dist/intent/intent.clarifier.d.ts.map +0 -1
- package/dist/intent/intent.clarifier.js.map +0 -1
- package/dist/intent/intent.graph.d.ts.map +0 -1
- package/dist/intent/intent.graph.js.map +0 -1
- package/dist/intent/intent.indexer.d.ts.map +0 -1
- package/dist/intent/intent.indexer.js.map +0 -1
- package/dist/intent/intent.inferrer.d.ts.map +0 -1
- package/dist/intent/intent.inferrer.js.map +0 -1
- package/dist/intent/intent.reconciler.d.ts.map +0 -1
- package/dist/intent/intent.reconciler.js.map +0 -1
- package/dist/intent/intent.specificity.d.ts.map +0 -1
- package/dist/intent/intent.specificity.js.map +0 -1
- package/dist/intent/intent.state.d.ts.map +0 -1
- package/dist/intent/intent.state.js.map +0 -1
- package/dist/intent/intent.tools.d.ts.map +0 -1
- package/dist/intent/intent.tools.js.map +0 -1
- package/dist/intent/intent.verifier.d.ts.map +0 -1
- package/dist/intent/intent.verifier.js.map +0 -1
- package/dist/maintenance/maintenance.graph.d.ts.map +0 -1
- package/dist/maintenance/maintenance.graph.js.map +0 -1
- package/dist/maintenance/maintenance.state.d.ts.map +0 -1
- package/dist/maintenance/maintenance.state.js.map +0 -1
- package/dist/mcp/elicitation.builder.d.ts.map +0 -1
- package/dist/mcp/elicitation.builder.js.map +0 -1
- package/dist/mcp/elicitation.dispatcher.d.ts.map +0 -1
- package/dist/mcp/elicitation.dispatcher.js.map +0 -1
- package/dist/mcp/mcp.server.d.ts.map +0 -1
- package/dist/mcp/mcp.server.js.map +0 -1
- package/dist/negotiation/insight.generator.d.ts.map +0 -1
- package/dist/negotiation/insight.generator.js.map +0 -1
- package/dist/negotiation/negotiation.agent.d.ts.map +0 -1
- package/dist/negotiation/negotiation.agent.js.map +0 -1
- package/dist/negotiation/negotiation.attribution.d.ts.map +0 -1
- package/dist/negotiation/negotiation.attribution.js.map +0 -1
- package/dist/negotiation/negotiation.consultation-policy.d.ts.map +0 -1
- package/dist/negotiation/negotiation.consultation-policy.js.map +0 -1
- package/dist/negotiation/negotiation.deadlock.d.ts.map +0 -1
- package/dist/negotiation/negotiation.deadlock.js.map +0 -1
- package/dist/negotiation/negotiation.graph.d.ts.map +0 -1
- package/dist/negotiation/negotiation.graph.js.map +0 -1
- package/dist/negotiation/negotiation.memory.d.ts.map +0 -1
- package/dist/negotiation/negotiation.memory.js.map +0 -1
- package/dist/negotiation/negotiation.protocol.d.ts.map +0 -1
- package/dist/negotiation/negotiation.protocol.js.map +0 -1
- package/dist/negotiation/negotiation.question-safety.d.ts.map +0 -1
- package/dist/negotiation/negotiation.question-safety.js.map +0 -1
- package/dist/negotiation/negotiation.reflect.d.ts.map +0 -1
- package/dist/negotiation/negotiation.reflect.js.map +0 -1
- package/dist/negotiation/negotiation.screen.d.ts.map +0 -1
- package/dist/negotiation/negotiation.screen.js.map +0 -1
- package/dist/negotiation/negotiation.state.d.ts.map +0 -1
- package/dist/negotiation/negotiation.state.js.map +0 -1
- package/dist/negotiation/negotiation.summarizer.d.ts.map +0 -1
- package/dist/negotiation/negotiation.summarizer.js.map +0 -1
- package/dist/negotiation/negotiation.tools.d.ts.map +0 -1
- package/dist/negotiation/negotiation.tools.js.map +0 -1
- package/dist/network/indexer/indexer.graph.d.ts.map +0 -1
- package/dist/network/indexer/indexer.graph.js.map +0 -1
- package/dist/network/indexer/indexer.state.d.ts.map +0 -1
- package/dist/network/indexer/indexer.state.js.map +0 -1
- package/dist/network/membership/membership.graph.d.ts.map +0 -1
- package/dist/network/membership/membership.graph.js.map +0 -1
- package/dist/network/membership/membership.state.d.ts.map +0 -1
- package/dist/network/membership/membership.state.js.map +0 -1
- package/dist/network/network.graph.d.ts.map +0 -1
- package/dist/network/network.graph.js.map +0 -1
- package/dist/network/network.recommender.d.ts.map +0 -1
- package/dist/network/network.recommender.js.map +0 -1
- package/dist/network/network.state.d.ts.map +0 -1
- package/dist/network/network.state.js.map +0 -1
- package/dist/network/network.tools.d.ts.map +0 -1
- package/dist/network/network.tools.js.map +0 -1
- package/dist/opportunity/delivery-card.cache.d.ts.map +0 -1
- package/dist/opportunity/delivery-card.cache.js.map +0 -1
- package/dist/opportunity/discovery-question.helper.d.ts.map +0 -1
- package/dist/opportunity/discovery-question.helper.js.map +0 -1
- package/dist/opportunity/discriminator/discriminator.adjustments.d.ts.map +0 -1
- package/dist/opportunity/discriminator/discriminator.adjustments.js.map +0 -1
- package/dist/opportunity/discriminator/discriminator.assigner.d.ts.map +0 -1
- package/dist/opportunity/discriminator/discriminator.assigner.js.map +0 -1
- package/dist/opportunity/discriminator/discriminator.env.d.ts.map +0 -1
- package/dist/opportunity/discriminator/discriminator.env.js.map +0 -1
- package/dist/opportunity/discriminator/discriminator.miner.d.ts.map +0 -1
- package/dist/opportunity/discriminator/discriminator.miner.js.map +0 -1
- package/dist/opportunity/discriminator/discriminator.push.d.ts.map +0 -1
- package/dist/opportunity/discriminator/discriminator.push.js.map +0 -1
- package/dist/opportunity/discriminator/discriminator.question.d.ts.map +0 -1
- package/dist/opportunity/discriminator/discriminator.question.js.map +0 -1
- package/dist/opportunity/discriminator/discriminator.scorer.d.ts.map +0 -1
- package/dist/opportunity/discriminator/discriminator.scorer.js.map +0 -1
- package/dist/opportunity/discriminator/discriminator.shadow.d.ts.map +0 -1
- package/dist/opportunity/discriminator/discriminator.shadow.js.map +0 -1
- package/dist/opportunity/discriminator/discriminator.types.d.ts.map +0 -1
- package/dist/opportunity/discriminator/discriminator.types.js.map +0 -1
- package/dist/opportunity/feed/feed.categorizer.d.ts.map +0 -1
- package/dist/opportunity/feed/feed.categorizer.js.map +0 -1
- package/dist/opportunity/feed/feed.graph.d.ts.map +0 -1
- package/dist/opportunity/feed/feed.graph.js.map +0 -1
- package/dist/opportunity/feed/feed.health.d.ts.map +0 -1
- package/dist/opportunity/feed/feed.health.js.map +0 -1
- package/dist/opportunity/feed/feed.state.d.ts.map +0 -1
- package/dist/opportunity/feed/feed.state.js.map +0 -1
- package/dist/opportunity/negotiation-context.loader.d.ts.map +0 -1
- package/dist/opportunity/negotiation-context.loader.js.map +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.env.d.ts.map +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.env.js.map +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.extractor.d.ts.map +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.extractor.js.map +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.miner.d.ts.map +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.miner.js.map +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.shadow.d.ts.map +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.shadow.js.map +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.types.d.ts.map +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.types.js.map +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.verifier.d.ts.map +0 -1
- package/dist/opportunity/negotiation-evidence/negotiation-evidence.verifier.js.map +0 -1
- package/dist/opportunity/negotiation-summary.builder.d.ts.map +0 -1
- package/dist/opportunity/negotiation-summary.builder.js.map +0 -1
- package/dist/opportunity/opportunity.actor.d.ts.map +0 -1
- package/dist/opportunity/opportunity.actor.js.map +0 -1
- package/dist/opportunity/opportunity.claim-safety.d.ts.map +0 -1
- package/dist/opportunity/opportunity.claim-safety.js.map +0 -1
- package/dist/opportunity/opportunity.discover.d.ts.map +0 -1
- package/dist/opportunity/opportunity.discover.js.map +0 -1
- package/dist/opportunity/opportunity.enricher.d.ts.map +0 -1
- package/dist/opportunity/opportunity.enricher.js.map +0 -1
- package/dist/opportunity/opportunity.evaluator.d.ts.map +0 -1
- package/dist/opportunity/opportunity.evaluator.js.map +0 -1
- package/dist/opportunity/opportunity.evidence.d.ts.map +0 -1
- package/dist/opportunity/opportunity.evidence.js.map +0 -1
- package/dist/opportunity/opportunity.graph.d.ts.map +0 -1
- package/dist/opportunity/opportunity.graph.js.map +0 -1
- package/dist/opportunity/opportunity.introducer.d.ts.map +0 -1
- package/dist/opportunity/opportunity.introducer.js.map +0 -1
- package/dist/opportunity/opportunity.labels.d.ts.map +0 -1
- package/dist/opportunity/opportunity.labels.js.map +0 -1
- package/dist/opportunity/opportunity.pending-questions.d.ts.map +0 -1
- package/dist/opportunity/opportunity.pending-questions.js.map +0 -1
- package/dist/opportunity/opportunity.persist.d.ts.map +0 -1
- package/dist/opportunity/opportunity.persist.js.map +0 -1
- package/dist/opportunity/opportunity.presentation-cache.d.ts.map +0 -1
- package/dist/opportunity/opportunity.presentation-cache.js.map +0 -1
- package/dist/opportunity/opportunity.presentation.d.ts.map +0 -1
- package/dist/opportunity/opportunity.presentation.js.map +0 -1
- package/dist/opportunity/opportunity.presenter.d.ts.map +0 -1
- package/dist/opportunity/opportunity.presenter.js.map +0 -1
- package/dist/opportunity/opportunity.safe-presentation.d.ts.map +0 -1
- package/dist/opportunity/opportunity.safe-presentation.js.map +0 -1
- package/dist/opportunity/opportunity.state.d.ts.map +0 -1
- package/dist/opportunity/opportunity.state.js.map +0 -1
- package/dist/opportunity/opportunity.tools.d.ts.map +0 -1
- package/dist/opportunity/opportunity.tools.js.map +0 -1
- package/dist/opportunity/opportunity.utils.d.ts.map +0 -1
- package/dist/opportunity/opportunity.utils.js.map +0 -1
- package/dist/opportunity/outcome/outcome.env.d.ts.map +0 -1
- package/dist/opportunity/outcome/outcome.env.js.map +0 -1
- package/dist/opportunity/outcome/outcome.hypotheses.d.ts.map +0 -1
- package/dist/opportunity/outcome/outcome.hypotheses.js.map +0 -1
- package/dist/opportunity/outcome/outcome.shadow.d.ts.map +0 -1
- package/dist/opportunity/outcome/outcome.shadow.js.map +0 -1
- package/dist/opportunity/outcome/outcome.types.d.ts.map +0 -1
- package/dist/opportunity/outcome/outcome.types.js.map +0 -1
- package/dist/premise/premise.analyzer.d.ts.map +0 -1
- package/dist/premise/premise.analyzer.js.map +0 -1
- package/dist/premise/premise.decomposer.d.ts.map +0 -1
- package/dist/premise/premise.decomposer.js.map +0 -1
- package/dist/premise/premise.graph.d.ts.map +0 -1
- package/dist/premise/premise.graph.js.map +0 -1
- package/dist/premise/premise.indexer.d.ts.map +0 -1
- package/dist/premise/premise.indexer.js.map +0 -1
- package/dist/premise/premise.state.d.ts.map +0 -1
- package/dist/premise/premise.state.js.map +0 -1
- package/dist/premise/premise.tools.d.ts.map +0 -1
- package/dist/premise/premise.tools.js.map +0 -1
- package/dist/questioner/questioner.agent.d.ts.map +0 -1
- package/dist/questioner/questioner.agent.js.map +0 -1
- package/dist/questioner/questioner.ask.tool.d.ts.map +0 -1
- package/dist/questioner/questioner.ask.tool.js.map +0 -1
- package/dist/questioner/questioner.discovery.prompt.d.ts.map +0 -1
- package/dist/questioner/questioner.discovery.prompt.js.map +0 -1
- package/dist/questioner/questioner.env.d.ts.map +0 -1
- package/dist/questioner/questioner.env.js.map +0 -1
- package/dist/questioner/questioner.presets.d.ts.map +0 -1
- package/dist/questioner/questioner.presets.js.map +0 -1
- package/dist/questioner/questioner.qud.d.ts.map +0 -1
- package/dist/questioner/questioner.qud.js.map +0 -1
- package/dist/questioner/questioner.tools.d.ts.map +0 -1
- package/dist/questioner/questioner.tools.js.map +0 -1
- package/dist/questioner/questioner.types.d.ts.map +0 -1
- package/dist/questioner/questioner.types.js.map +0 -1
- package/dist/shared/agent/model-signal.d.ts.map +0 -1
- package/dist/shared/agent/model-signal.js.map +0 -1
- package/dist/shared/agent/model.config.d.ts.map +0 -1
- package/dist/shared/agent/model.config.js.map +0 -1
- package/dist/shared/agent/tests/llm-assert.d.ts +0 -11
- package/dist/shared/agent/tests/llm-assert.d.ts.map +0 -1
- package/dist/shared/agent/tests/llm-assert.js +0 -43
- package/dist/shared/agent/tests/llm-assert.js.map +0 -1
- package/dist/shared/agent/tool.factory.d.ts.map +0 -1
- package/dist/shared/agent/tool.factory.js.map +0 -1
- package/dist/shared/agent/tool.helpers.d.ts.map +0 -1
- package/dist/shared/agent/tool.helpers.js.map +0 -1
- package/dist/shared/agent/tool.registry.d.ts.map +0 -1
- package/dist/shared/agent/tool.registry.js.map +0 -1
- package/dist/shared/agent/tool.runtime.d.ts.map +0 -1
- package/dist/shared/agent/tool.runtime.js.map +0 -1
- package/dist/shared/agent/tool.scope.d.ts.map +0 -1
- package/dist/shared/agent/tool.scope.js.map +0 -1
- package/dist/shared/agent/utility.tools.d.ts.map +0 -1
- package/dist/shared/agent/utility.tools.js.map +0 -1
- package/dist/shared/assignment/network-assignment.policy.d.ts.map +0 -1
- package/dist/shared/assignment/network-assignment.policy.js.map +0 -1
- package/dist/shared/hyde/hyde.documents.d.ts.map +0 -1
- package/dist/shared/hyde/hyde.documents.js.map +0 -1
- package/dist/shared/hyde/hyde.env.d.ts.map +0 -1
- package/dist/shared/hyde/hyde.env.js.map +0 -1
- package/dist/shared/hyde/hyde.frame.d.ts.map +0 -1
- package/dist/shared/hyde/hyde.frame.js.map +0 -1
- package/dist/shared/hyde/hyde.generator.d.ts.map +0 -1
- package/dist/shared/hyde/hyde.generator.js.map +0 -1
- package/dist/shared/hyde/hyde.graph.d.ts.map +0 -1
- package/dist/shared/hyde/hyde.graph.js.map +0 -1
- package/dist/shared/hyde/hyde.state.d.ts.map +0 -1
- package/dist/shared/hyde/hyde.state.js.map +0 -1
- package/dist/shared/hyde/hyde.strategies.d.ts.map +0 -1
- package/dist/shared/hyde/hyde.strategies.js.map +0 -1
- package/dist/shared/hyde/hyde.validator.d.ts.map +0 -1
- package/dist/shared/hyde/hyde.validator.js.map +0 -1
- package/dist/shared/hyde/lens.inferrer.d.ts.map +0 -1
- package/dist/shared/hyde/lens.inferrer.js.map +0 -1
- package/dist/shared/interfaces/agent-dispatcher.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/agent-dispatcher.interface.js.map +0 -1
- package/dist/shared/interfaces/agent.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/agent.interface.js.map +0 -1
- package/dist/shared/interfaces/auth.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/auth.interface.js.map +0 -1
- package/dist/shared/interfaces/cache.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/cache.interface.js.map +0 -1
- package/dist/shared/interfaces/chat-message-writer.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/chat-message-writer.interface.js.map +0 -1
- package/dist/shared/interfaces/chat-session.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/chat-session.interface.js.map +0 -1
- package/dist/shared/interfaces/chat-summary.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/chat-summary.interface.js.map +0 -1
- package/dist/shared/interfaces/connect-link.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/connect-link.interface.js.map +0 -1
- package/dist/shared/interfaces/contact.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/contact.interface.js.map +0 -1
- package/dist/shared/interfaces/database.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/database.interface.js.map +0 -1
- package/dist/shared/interfaces/delivery-ledger.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/delivery-ledger.interface.js.map +0 -1
- package/dist/shared/interfaces/discovery-run.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/discovery-run.interface.js.map +0 -1
- package/dist/shared/interfaces/embedder.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/embedder.interface.js.map +0 -1
- package/dist/shared/interfaces/enrichment-run.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/enrichment-run.interface.js.map +0 -1
- package/dist/shared/interfaces/enrichment.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/enrichment.interface.js.map +0 -1
- package/dist/shared/interfaces/integration.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/integration.interface.js.map +0 -1
- package/dist/shared/interfaces/negotiation-events.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/negotiation-events.interface.js.map +0 -1
- package/dist/shared/interfaces/negotiation-summary.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/negotiation-summary.interface.js.map +0 -1
- package/dist/shared/interfaces/negotiator-memory.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/negotiator-memory.interface.js.map +0 -1
- package/dist/shared/interfaces/question-generator.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/question-generator.interface.js.map +0 -1
- package/dist/shared/interfaces/questioner.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/questioner.interface.js.map +0 -1
- package/dist/shared/interfaces/queue.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/queue.interface.js.map +0 -1
- package/dist/shared/interfaces/scraper.interface.d.ts.map +0 -1
- package/dist/shared/interfaces/scraper.interface.js.map +0 -1
- package/dist/shared/network/metadata.renderer.d.ts.map +0 -1
- package/dist/shared/network/metadata.renderer.js.map +0 -1
- package/dist/shared/observability/debug-meta.sanitizer.d.ts.map +0 -1
- package/dist/shared/observability/debug-meta.sanitizer.js.map +0 -1
- package/dist/shared/observability/log.d.ts.map +0 -1
- package/dist/shared/observability/log.js.map +0 -1
- package/dist/shared/observability/performance.d.ts.map +0 -1
- package/dist/shared/observability/performance.js.map +0 -1
- package/dist/shared/observability/protocol.logger.d.ts.map +0 -1
- package/dist/shared/observability/protocol.logger.js.map +0 -1
- package/dist/shared/observability/request-context.d.ts.map +0 -1
- package/dist/shared/observability/request-context.js.map +0 -1
- package/dist/shared/observability/trace.d.ts.map +0 -1
- package/dist/shared/observability/trace.js.map +0 -1
- package/dist/shared/schemas/chat-context.schema.d.ts.map +0 -1
- package/dist/shared/schemas/chat-context.schema.js.map +0 -1
- package/dist/shared/schemas/discovery-question.schema.d.ts.map +0 -1
- package/dist/shared/schemas/discovery-question.schema.js.map +0 -1
- package/dist/shared/schemas/identity.schema.d.ts.map +0 -1
- package/dist/shared/schemas/identity.schema.js.map +0 -1
- package/dist/shared/schemas/mcp-auth.schema.d.ts.map +0 -1
- package/dist/shared/schemas/mcp-auth.schema.js.map +0 -1
- package/dist/shared/schemas/negotiation-digest.schema.d.ts.map +0 -1
- package/dist/shared/schemas/negotiation-digest.schema.js.map +0 -1
- package/dist/shared/schemas/negotiation-state.schema.d.ts.map +0 -1
- package/dist/shared/schemas/negotiation-state.schema.js.map +0 -1
- package/dist/shared/schemas/network-assignment.schema.d.ts.map +0 -1
- package/dist/shared/schemas/network-assignment.schema.js.map +0 -1
- package/dist/shared/schemas/pending-question.schema.d.ts.map +0 -1
- package/dist/shared/schemas/pending-question.schema.js.map +0 -1
- package/dist/shared/schemas/question.schema.d.ts.map +0 -1
- package/dist/shared/schemas/question.schema.js.map +0 -1
- package/dist/shared/ui/lucide.icon-catalog.d.ts.map +0 -1
- package/dist/shared/ui/lucide.icon-catalog.js.map +0 -1
- package/dist/shared/utils/social-label.d.ts.map +0 -1
- package/dist/shared/utils/social-label.js.map +0 -1
- package/dist/shared/utils/telegram-handle.d.ts.map +0 -1
- package/dist/shared/utils/telegram-handle.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"negotiation.state.js","sourceRoot":"/","sources":["negotiation/negotiation.state.ts"],"names":[],"mappings":"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","sourcesContent":["import { Annotation } from \"@langchain/langgraph\";\nimport { z } from \"zod\";\nimport type { NegotiationContinuationExecution, NegotiationContinuationReceipt, NegotiationPrivateConsultation, NegotiationUserAnswer, OpportunityStatus } from \"../shared/interfaces/database.interface.js\";\nimport type { ScreenDecisionRecord } from \"./negotiation.screen.js\";\nimport type { DeadlockShiftRecord } from \"./negotiation.deadlock.js\";\nimport type { NegotiatorMemoryEntry } from \"./negotiation.memory.js\";\nimport type { SeededAttribution } from \"./negotiation.attribution.js\";\nimport { AskUserPayloadSchema, NEGOTIATION_ACTIONS, type NegotiationProtocolVersion } from \"../shared/schemas/negotiation-state.schema.js\";\nimport type { NegotiationConsultationReason } from \"./negotiation.consultation-policy.js\";\n\n/**\n * Zod schema for a single negotiation turn (DataPart payload in A2A message).\n * Accepts the full v1+v2 action union — which subset is valid for a given turn\n * is enforced by the seat-scoped schemas in `negotiation.protocol.ts`.\n */\nexport const NegotiationTurnSchema = z.object({\n action: z.enum(NEGOTIATION_ACTIONS),\n assessment: z.object({\n reasoning: z.string(),\n suggestedRoles: z.object({\n ownUser: z.enum([\"agent\", \"patient\", \"peer\"]),\n otherUser: z.enum([\"agent\", \"patient\", \"peer\"]),\n }),\n }),\n message: z.string().nullable().optional(),\n /** Present when action is `ask_user` (v2, P3.2). */\n askUser: AskUserPayloadSchema.nullable().optional(),\n});\n\n/** Restricted v1 turn schema for the system agent (no question action). */\nexport const SystemNegotiationTurnSchema = z.object({\n action: z.enum([\"propose\", \"accept\", \"reject\", \"counter\"]),\n assessment: z.object({\n reasoning: z.string(),\n suggestedRoles: z.object({\n ownUser: z.enum([\"agent\", \"patient\", \"peer\"]),\n otherUser: z.enum([\"agent\", \"patient\", \"peer\"]),\n }),\n }),\n message: z.string().nullable().optional(),\n});\n\n/** v1 turn schema for system agent's final allowed turn (must decide). */\nexport const FinalNegotiationTurnSchema = z.object({\n action: z.enum([\"accept\", \"reject\"]),\n assessment: z.object({\n reasoning: z.string(),\n suggestedRoles: z.object({\n ownUser: z.enum([\"agent\", \"patient\", \"peer\"]),\n otherUser: z.enum([\"agent\", \"patient\", \"peer\"]),\n }),\n }),\n message: z.string().nullable().optional(),\n});\n\nexport type NegotiationTurn = z.infer<typeof NegotiationTurnSchema>;\n\n/** Zod schema for the negotiation outcome (Artifact payload on COMPLETED task). */\nexport const NegotiationOutcomeSchema = z.object({\n hasOpportunity: z.boolean(),\n agreedRoles: z.array(z.object({\n userId: z.string(),\n role: z.enum([\"agent\", \"patient\", \"peer\"]),\n })),\n reasoning: z.string(),\n turnCount: z.number(),\n reason: z.enum([\"turn_cap\", \"timeout\", \"screened_out\"]).optional(),\n});\n\nexport type NegotiationOutcome = z.infer<typeof NegotiationOutcomeSchema>;\n\n/** Context each agent receives about its user. */\nexport interface UserNegotiationContext {\n id: string;\n intents: Array<{ id: string; title: string; description: string; confidence: number }>;\n profile: { name?: string; bio?: string; location?: string; interests?: string[]; skills?: string[] };\n}\n\n/** Seed assessment from the evaluator pre-filter. */\nexport interface SeedAssessment {\n reasoning: string;\n valencyRole: string;\n actors?: Array<{ userId: string; role: string }>;\n}\n\n/** Typed interface for a negotiation graph's invoke signature. */\nexport interface NegotiationGraphLike {\n invoke(input: {\n sourceUser: UserNegotiationContext;\n candidateUser: UserNegotiationContext;\n /** Exact opportunity-actor intent bindings; never inferred from intent array order. */\n sourceIntentId?: string;\n candidateIntentId?: string;\n indexContext: { networkId: string; prompt: string };\n seedAssessment: Omit<SeedAssessment, \"actors\">;\n discoveryQuery?: string;\n opportunityId?: string;\n /** Exact persisted lifecycle state claimed by this negotiation attempt. */\n opportunityStatus?: OpportunityStatus;\n opportunityUpdatedAt?: Date;\n maxTurns?: number;\n timeoutMs?: number;\n /**\n * The user who holds the initiating seat for this match (v2 client-advocate\n * protocol). Stamped into task metadata by the init node. When omitted, the\n * init node resolves it: inherit from the prior task for the same\n * opportunity → conversation-scoped tie-break → fall back to sourceUser.id.\n */\n initiatorUserId?: string;\n /** Exact settled task for a durable ask_user continuation. */\n resumeFromTaskId?: string;\n /** Deterministic durable settlement/outbox identifier. */\n continuationSettlementId?: string;\n /** Current durable lease/fence for the exact successor execution. */\n continuationExecution?: NegotiationContinuationExecution;\n }): Promise<{\n outcome: NegotiationOutcome | null;\n messages?: NegotiationMessage[];\n conversationId?: string;\n isContinuation?: boolean;\n priorTurnCount?: number;\n error?: string | null;\n continuationReceipt?: NegotiationContinuationReceipt;\n }>;\n}\n\n/** A2A message record shape (matches messages table). */\nexport interface NegotiationMessage {\n id: string;\n senderId: string;\n role: \"agent\";\n parts: unknown[];\n createdAt: Date;\n /**\n * Originating negotiation task (IND-569). Seeded prior messages carry their\n * source task's id; turns persisted this session carry the current task id.\n * Optional/undefined for legacy hosts whose `getMessagesForConversation`\n * does not project task attribution — such turns degrade to the unattributed\n * prior-dialogue block, never into the current opportunity's turns.\n */\n taskId?: string | null;\n}\n\n/** LangGraph state annotation for the negotiation graph. */\nexport const NegotiationGraphState = Annotation.Root({\n sourceUser: Annotation<UserNegotiationContext>({\n reducer: (curr, next) => next ?? curr,\n default: () => ({ id: \"\", intents: [], profile: {} }),\n }),\n candidateUser: Annotation<UserNegotiationContext>({\n reducer: (curr, next) => next ?? curr,\n default: () => ({ id: \"\", intents: [], profile: {} }),\n }),\n sourceIntentId: Annotation<string | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n candidateIntentId: Annotation<string | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n indexContext: Annotation<{ networkId: string; prompt: string }>({\n reducer: (curr, next) => next ?? curr,\n default: () => ({ networkId: \"\", prompt: \"\" }),\n }),\n seedAssessment: Annotation<SeedAssessment>({\n reducer: (curr, next) => next ?? curr,\n default: () => ({ reasoning: \"\", valencyRole: \"\" }),\n }),\n\n /**\n * Explicit initiator seat for this match (purely additive metadata — no seat\n * rules attach to it yet). Resolution when unset happens in the init node;\n * the resolved value is written back to state and into task metadata.\n */\n initiatorUserId: Annotation<string | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n\n /** The explicit search query that triggered discovery (if any). */\n discoveryQuery: Annotation<string | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n /**\n * Negotiation protocol version for this session's task. Resolved by the\n * init node: inherited from the prior task on the conversation when one\n * exists (never re-stamped — a v1 conversation stays v1 mid-flight), else\n * stamped from `NEGOTIATION_PROTOCOL_VERSION` for genuinely fresh runs.\n */\n protocolVersion: Annotation<NegotiationProtocolVersion>({\n reducer: (curr, next) => next ?? curr,\n default: () => \"v1\" as const,\n }),\n\n /**\n * Screen-gate decision for this fresh run (P2.1 shadow mode). Written by the\n * screen node; null when the gate is off, on continuations, or before the\n * node runs. Mirrors `tasks.metadata.screenDecision`.\n */\n screenDecision: Annotation<ScreenDecisionRecord | null>({\n reducer: (curr, next) => next ?? curr,\n default: () => null,\n }),\n\n /**\n * First applied deadlock→bargaining shift in this session (IND-428).\n * Written by the turn node when the system agent first drafts in the\n * bargaining stance; used to record the shift exactly once per session.\n * Internal analytics only — mirrored to `tasks.metadata.deadlockShift`,\n * never into any turn payload or public projection.\n */\n deadlockShift: Annotation<DeadlockShiftRecord | null>({\n reducer: (curr, next) => next ?? curr,\n default: () => null,\n }),\n\n /**\n * Per-side negotiator-memory cache (P5.3 read path). Populated lazily the\n * first time each side's memory is retrieved (screen node for the client,\n * turn node for the speaker) so a multi-turn session pays for retrieval at\n * most once per side. `undefined` per side = not yet retrieved; `[]` =\n * retrieved and empty (flag off / no rows / retrieval failed).\n */\n memoryBySide: Annotation<Partial<Record<\"source\" | \"candidate\", NegotiatorMemoryEntry[]>>>({\n reducer: (curr, next) => ({ ...curr, ...next }),\n default: () => ({}),\n }),\n\n /**\n * Immutable attributed prior dialogue derived once in the init node from the\n * seeded prior messages (IND-569). Groups earlier-opportunity turns and\n * legacy unattributed turns so the screen node and every turn prompt can\n * label prior context per opportunity. Null on fresh runs / when there is no\n * seeded prior dialogue.\n */\n priorAttribution: Annotation<SeededAttribution | null>({\n reducer: (curr, next) => next ?? curr,\n default: () => null,\n }),\n\n /** Whether this run is continuing a prior conversation with the same pair. */\n isContinuation: Annotation<boolean>({\n reducer: (curr, next) => next ?? curr,\n default: () => false,\n }),\n\n /**\n * Whether the initiator has actually opened `outreach` within THIS task\n * (IND-564). Set by the turn node the first time an `outreach` turn is\n * persisted in the current session; seeded prior-task turns never flip it.\n * `withdraw` is only legal after an in-task outreach — a withdraw before one\n * would retract an outreach never made here and drop a spurious message into\n * the shared thread, so the turn node maps it to a quiet screen-out instead.\n */\n outreachOpened: Annotation<boolean>({\n reducer: (curr, next) => next ?? curr,\n default: () => false,\n }),\n\n /**\n * Set by the turn node when an opening-move `withdraw` (no in-task outreach)\n * was blocked (IND-564). Signals finalize to record the quiet screen-out\n * outcome (`reason: \"screened_out\"`, opportunity `rejected`) without ever\n * persisting the withdraw message into the shared `dm_pair` conversation.\n */\n firstTurnScreenedOut: Annotation<boolean>({\n reducer: (curr, next) => next ?? curr,\n default: () => false,\n }),\n opportunityId: Annotation<string>({\n reducer: (curr, next) => next ?? curr,\n default: () => \"\",\n }),\n /** Exact persisted lifecycle state claimed by this negotiation attempt. */\n opportunityStatus: Annotation<OpportunityStatus | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n opportunityUpdatedAt: Annotation<Date | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n /** Exact prior task selected by a durable continuation; bypasses latest-task lookup. */\n resumeFromTaskId: Annotation<string | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n /** Deterministic settlement key used to idempotently reuse a successor task. */\n continuationSettlementId: Annotation<string | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n\n continuationExecution: Annotation<NegotiationContinuationExecution | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n\n continuationReceipt: Annotation<NegotiationContinuationReceipt | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n\n privateConsultation: Annotation<NegotiationPrivateConsultation | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n /** Server-only IND-508 category recovered from the exact prior task binding. */\n consultationPolicyReason: Annotation<NegotiationConsultationReason | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n conversationId: Annotation<string>({\n reducer: (curr, next) => next ?? curr,\n default: () => \"\",\n }),\n taskId: Annotation<string>({\n reducer: (curr, next) => next ?? curr,\n default: () => \"\",\n }),\n messages: Annotation<NegotiationMessage[]>({\n reducer: (curr, next) => [...curr, ...(next || [])],\n default: () => [],\n }),\n turnCount: Annotation<number>({\n reducer: (curr, next) => next ?? curr,\n default: () => 0,\n }),\n maxTurns: Annotation<number | undefined>({\n reducer: (curr, next) => next ?? curr,\n default: () => undefined,\n }),\n /**\n * Park-window budget in milliseconds. Ambient callers pass `AMBIENT_PARK_WINDOW_MS`\n * (5 minutes); orchestrator callers pass a shorter window. This annotation default\n * is a safety net for any caller that omits the field — keep it aligned with\n * `AMBIENT_PARK_WINDOW_MS` in packages/protocol/src/negotiation/negotiation.tools.ts.\n * Inlined rather than imported to avoid a state↔tools cycle.\n */\n timeoutMs: Annotation<number>({\n reducer: (curr, next) => next ?? curr,\n default: () => 5 * 60 * 1000,\n }),\n\n currentSpeaker: Annotation<\"source\" | \"candidate\">({\n reducer: (curr, next) => next ?? curr,\n default: () => \"source\" as const,\n }),\n lastTurn: Annotation<NegotiationTurn | null>({\n reducer: (curr, next) => next ?? curr,\n default: () => null,\n }),\n\n /**\n * Graph status.\n * - `active` — agents are exchanging turns (default)\n * - `waiting_for_agent` — graph suspended; awaiting external agent response or timeout\n * - `input_required` — graph suspended on an `ask_user` pause; awaiting the\n * negotiator's own client (answer or 24 h window expiry resumes it)\n * - `completed` — negotiation finalized (accept/reject/turn-cap/timeout)\n */\n status: Annotation<'active' | 'waiting_for_agent' | 'input_required' | 'completed'>({\n reducer: (curr, next) => next ?? curr,\n default: () => 'active' as const,\n }),\n\n /** Number of turns present in the conversation before this session started. */\n priorTurnCount: Annotation<number>({\n reducer: (curr, next) => next ?? curr,\n default: () => 0,\n }),\n\n /** User answers collected by the questioner between negotiation sessions. */\n userAnswers: Annotation<NegotiationUserAnswer[]>({\n reducer: (curr, next) => next ?? curr,\n default: () => [],\n }),\n\n outcome: Annotation<NegotiationOutcome | null>({\n reducer: (curr, next) => next ?? curr,\n default: () => null,\n }),\n error: Annotation<string | null>({\n reducer: (curr, next) => next ?? curr,\n default: () => null,\n }),\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"negotiation.summarizer.d.ts","sourceRoot":"/","sources":["negotiation/negotiation.summarizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,EAAoC,KAAK,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AACnI,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAoC3F,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CAA2C;;IAQlD,SAAS,CACb,WAAW,EAAE,oBAAoB,EACjC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjC,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC;CA8B9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,oBAAoB,GAAG,0BAA0B,CAqBvF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"negotiation.summarizer.js","sourceRoot":"/","sources":["negotiation/negotiation.summarizer.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * NegotiationSummarizer — pure LLM pass that compresses one DiscoveryNegotiation\n * (potentially several KB of turn reasoning + outcome reasoning) into a\n * DiscoveryNegotiationDigest (≤256 bytes structured). The digest is what the decision-\n * question generator consumes, replacing the raw negotiation blob.\n *\n * Why: a 10-candidate discovery turn used to produce a 60+ KB prompt for the\n * question generator, which stalled upstream Gemini/OpenRouter routes and\n * dropped the connection at ~3 minutes. Per-negotiation summarization caps\n * the question-generator input at a fixed, predictable size.\n */\n\nimport { HumanMessage, SystemMessage } from \"@langchain/core/messages\";\n\nimport { createStructuredModel } from \"../shared/agent/model.config.js\";\nimport { invokeWithAbortSignal } from \"../shared/agent/model-signal.js\";\nimport { protocolLogger } from \"../shared/observability/protocol.logger.js\";\nimport { DiscoveryNegotiationDigestSchema, type DiscoveryNegotiationDigest } from \"../shared/schemas/negotiation-digest.schema.js\";\nimport type { DiscoveryNegotiation } from \"../shared/schemas/discovery-question.schema.js\";\n\nconst logger = protocolLogger(\"NegotiationSummarizer\");\n\nconst SYSTEM_PROMPT = `You summarize one negotiation between a seeker's agent and a candidate's agent into a structured digest for downstream decision-question generation.\n\nOutput requirements (ALL fields — set optional fields to null when not applicable):\n- counterpartyHint: copy the input field verbatim, truncated to ≤120 chars.\n- indexContext: copy the input field verbatim, truncated to ≤120 chars.\n- outcomeRole: \"opportunity\" when hasOpportunity=true, else \"no-opportunity\".\n- outcomeReason: when outcomeRole=\"no-opportunity\", set to \"turn_cap\" / \"timeout\" / \"screened_out\" if the input's reason matches; else \"rejected\" (if a turn explicitly rejected) or \"stalled\". When outcomeRole=\"opportunity\", set to null. \"screened_out\" means the seeker's own agent chose not to reach out before any turn was exchanged — never describe it as the candidate declining or stalling.\n- keyTake: ONE sentence (≤180 chars). Describe the decisive moment, the alignment gap, or the recurring signal — anything a question generator could use to formulate a clarifying question. NOT a generic outcome restatement. Anchor in a concrete detail from the negotiation if possible (a role mismatch, a missing input the candidate flagged, a pivot one party suggested).\n- suggestedRoles: when both parties agreed on roles (the last turn's suggestedRoles), copy them from input. Otherwise set to null.\n\nDo not include candidate identity, PII, names, or IDs. Reuse only counterpartyHint and indexContext as provided.`;\n\nfunction buildUserPrompt(n: DiscoveryNegotiation): string {\n const turnLines = n.turns\n .map(\n (t, i) =>\n `[${i + 1}] action=${t.action} roles=${t.suggestedRoles.ownUser}↔${t.suggestedRoles.otherUser} reasoning=${t.reasoning}`,\n )\n .join(\"\\n\");\n return [\n `counterpartyHint: ${n.counterpartyHint}`,\n `indexContext: ${n.indexContext}`,\n `turns (${n.turns.length}):`,\n turnLines || \"(no turns)\",\n `outcome.hasOpportunity: ${n.outcome.hasOpportunity}`,\n `outcome.reasoning: ${n.outcome.reasoning}`,\n n.outcome.reason ? `outcome.reason: ${n.outcome.reason}` : \"\",\n ]\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nexport class NegotiationSummarizer {\n private model: ReturnType<typeof createStructuredModel>;\n\n constructor() {\n this.model = createStructuredModel(\"negotiationSummarizer\", DiscoveryNegotiationDigestSchema, {\n name: \"negotiation_digest\",\n });\n }\n\n async summarize(\n negotiation: DiscoveryNegotiation,\n options?: { signal?: AbortSignal },\n ): Promise<DiscoveryNegotiationDigest | null> {\n const user = buildUserPrompt(negotiation);\n let raw: unknown;\n try {\n raw = await invokeWithAbortSignal(\n this.model,\n [new SystemMessage(SYSTEM_PROMPT), new HumanMessage(user)],\n options?.signal,\n );\n } catch (err) {\n const aborted = options?.signal?.aborted ?? false;\n if (aborted) {\n logger.info(\"NegotiationSummarizer aborted by signal\", {\n reason: options?.signal?.reason instanceof Error ? options.signal.reason.message : String(options?.signal?.reason ?? \"unknown\"),\n });\n } else {\n logger.warn(\"NegotiationSummarizer LLM call failed\", {\n error: err instanceof Error ? err.message : String(err),\n });\n }\n return null;\n }\n\n const parsed = DiscoveryNegotiationDigestSchema.safeParse(raw);\n if (!parsed.success) {\n logger.warn(\"NegotiationSummarizer parse failed\", { error: parsed.error.message });\n return null;\n }\n return parsed.data;\n }\n}\n\n/**\n * Deterministic fallback when the LLM summarizer fails or isn't wired. Produces\n * a minimal but valid digest so the question generator still has *some* signal.\n */\nexport function buildFallbackDigest(n: DiscoveryNegotiation): DiscoveryNegotiationDigest {\n const outcomeRole = n.outcome.hasOpportunity ? \"opportunity\" : \"no-opportunity\";\n const lastTurn = n.turns[n.turns.length - 1];\n const keyTakeRaw =\n n.outcome.reasoning && n.outcome.reasoning.trim().length > 0\n ? n.outcome.reasoning\n : `${n.turns.length} turn(s); ended ${outcomeRole}`;\n return {\n counterpartyHint: n.counterpartyHint.slice(0, 120),\n indexContext: n.indexContext.slice(0, 120),\n outcomeRole,\n outcomeReason:\n outcomeRole === \"no-opportunity\"\n ? ((n.outcome.reason ?? \"stalled\") as \"turn_cap\" | \"timeout\" | \"stalled\" | \"screened_out\")\n : null,\n keyTake: keyTakeRaw.slice(0, 180),\n suggestedRoles:\n lastTurn?.action === \"accept\" && lastTurn.suggestedRoles\n ? lastTurn.suggestedRoles\n : null,\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"negotiation.tools.d.ts","sourceRoot":"/","sources":["negotiation/negotiation.tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAa5E;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,QAAgB,CAAC;AAkKpD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,4BA05B5E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"negotiation.tools.js","sourceRoot":"/","sources":["negotiation/negotiation.tools.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\n\nimport type { DefineTool, ToolDeps } from '../shared/agent/tool.helpers.js';\nimport { success, error } from '../shared/agent/tool.helpers.js';\nimport type { NegotiationOpportunityLifecycle, OpportunityStatus } from '../shared/interfaces/database.interface.js';\nimport { IndexNegotiator } from './negotiation.agent.js';\nimport type { NegotiationTurn, UserNegotiationContext, SeedAssessment, NegotiationOutcome } from './negotiation.state.js';\nimport { allowedActionsFor, isTerminalAction, readProtocolVersion, rejectActionFor, resolveSeat, seatViolationMessage } from './negotiation.protocol.js';\nimport { NEGOTIATION_ACTIONS } from '../shared/schemas/negotiation-state.schema.js';\nimport type { NegotiationTurnPayload } from '../shared/interfaces/agent-dispatcher.interface.js';\nimport { protocolLogger } from '../shared/observability/protocol.logger.js';\nimport { focusedIntentId, focusedNetworkId } from '../shared/agent/tool.scope.js';\n\nconst logger = protocolLogger('ChatTools:Negotiation');\n\n/**\n * Default park-window budget for ambient (background) negotiations. When a personal\n * agent is fresh, the dispatcher parks the turn and this is how long we wait before\n * the system agent takes over as a fallback.\n *\n * Short enough that ambient opportunities materialize in minutes (not hours),\n * long enough to cover two full polling cycles (30s * 2 = 60s) plus an agent\n * subagent turn. 5 minutes gives generous headroom.\n */\nexport const AMBIENT_PARK_WINDOW_MS = 5 * 60 * 1000;\n\n/**\n * Pulls the negotiation's network from task metadata. Tasks created after the\n * scope hardening carry `metadata.networkId` directly; older tasks only have\n * the network embedded in the parked `turnContext.indexContext.networkId`.\n * Returns `null` for legacy tasks where neither field is present — callers\n * scoped by the request scope envelope must reject these defensively rather than\n * fall through to a global view.\n */\nfunction readTaskNetworkId(meta: {\n networkId?: string;\n turnContext?: { indexContext?: { networkId?: string } };\n} | null): string | null {\n if (!meta) return null;\n if (typeof meta.networkId === 'string' && meta.networkId.trim()) return meta.networkId;\n const fromTurnContext = meta.turnContext?.indexContext?.networkId;\n if (typeof fromTurnContext === 'string' && fromTurnContext.trim()) return fromTurnContext;\n return null;\n}\n\nconst SCOPE_DENIAL = 'Access denied: this negotiation is not in your bound network scope.';\n\nconst DIRECT_CONVERSATION_EVIDENCE_UNAVAILABLE = 'not_provided' as const;\n\ntype NegotiationConnectionState =\n | 'potential_match_awaiting_owner_review'\n | 'owner_accepted'\n | 'accepted_without_owner_evidence'\n | 'rejected'\n | 'negotiation_stalled'\n | 'draft_not_sent'\n | 'expired'\n | 'agents_negotiating'\n | 'latent'\n | 'unknown';\n\ninterface NegotiationLifecycleNarration {\n agentNegotiation: 'concluded' | 'in_progress' | 'awaiting_agent' | 'unknown';\n opportunityStatus: OpportunityStatus | null;\n connectionState: NegotiationConnectionState;\n ownerAction: 'accepted' | 'not_recorded';\n directConversationEvidence: typeof DIRECT_CONVERSATION_EVIDENCE_UNAVAILABLE;\n lifecycleLabel: string;\n}\n\n/**\n * Builds additive, lifecycle-explicit narration metadata. Task completion only\n * means the agents concluded; it never establishes owner acceptance or an H2H\n * conversation.\n */\nfunction buildLifecycleNarration(\n negotiationStatus: string,\n opportunity?: NegotiationOpportunityLifecycle,\n): NegotiationLifecycleNarration {\n const agentNegotiation: NegotiationLifecycleNarration['agentNegotiation'] = negotiationStatus === 'completed'\n ? 'concluded'\n : negotiationStatus === 'active'\n ? 'in_progress'\n : negotiationStatus === 'waiting_for_agent'\n ? 'awaiting_agent'\n : 'unknown';\n const common = {\n agentNegotiation,\n opportunityStatus: opportunity?.status ?? null,\n ownerAction: opportunity?.acceptedByOwner ? 'accepted' as const : 'not_recorded' as const,\n directConversationEvidence: DIRECT_CONVERSATION_EVIDENCE_UNAVAILABLE,\n };\n\n switch (opportunity?.status) {\n case 'pending':\n return {\n ...common,\n connectionState: 'potential_match_awaiting_owner_review',\n lifecycleLabel: negotiationStatus === 'completed'\n ? \"Agents concluded with a potential match; awaiting the owner's review.\"\n : \"A potential match is awaiting the owner's review.\",\n };\n case 'accepted':\n return opportunity.acceptedByOwner\n ? {\n ...common,\n connectionState: 'owner_accepted',\n lifecycleLabel: 'The owner explicitly accepted this opportunity.',\n }\n : {\n ...common,\n connectionState: 'accepted_without_owner_evidence',\n lifecycleLabel: 'The opportunity is accepted; this result does not record an owner acceptance.',\n };\n case 'rejected':\n return {\n ...common,\n connectionState: 'rejected',\n lifecycleLabel: 'The opportunity was rejected; no connection was established.',\n };\n case 'stalled':\n return {\n ...common,\n connectionState: 'negotiation_stalled',\n lifecycleLabel: 'The agent negotiation stalled; no connection was established.',\n };\n case 'draft':\n return {\n ...common,\n connectionState: 'draft_not_sent',\n lifecycleLabel: 'The opportunity is still a draft; it has not been sent or accepted.',\n };\n case 'expired':\n return {\n ...common,\n connectionState: 'expired',\n lifecycleLabel: 'The opportunity expired; no connection was established.',\n };\n case 'negotiating':\n return {\n ...common,\n connectionState: 'agents_negotiating',\n lifecycleLabel: 'The agents are still negotiating; no owner decision is recorded.',\n };\n case 'latent':\n return {\n ...common,\n connectionState: 'latent',\n lifecycleLabel: 'The potential match is latent; no owner decision is recorded.',\n };\n default:\n return {\n ...common,\n connectionState: 'unknown',\n lifecycleLabel: negotiationStatus === 'completed'\n ? 'The agent negotiation concluded; the current opportunity lifecycle is unavailable.'\n : 'The current opportunity lifecycle is unavailable.',\n };\n }\n}\n\n/** Reads lifecycle evidence without making older host adapters mandatory. */\nasync function readOpportunityLifecycles(\n database: ToolDeps['negotiationDatabase'],\n opportunityIds: string[],\n ownerUserId: string,\n): Promise<Record<string, NegotiationOpportunityLifecycle>> {\n if (opportunityIds.length === 0 || !database.getOpportunityLifecyclesForNegotiations) return {};\n try {\n return await database.getOpportunityLifecyclesForNegotiations(opportunityIds, ownerUserId);\n } catch (err) {\n logger.warn('Failed to load opportunity lifecycle for negotiation narration', { err });\n return {};\n }\n}\n\n/** Extracts the ordered NegotiationTurn list from A2A message data parts. */\nfunction turnsFromMessages(messages: Array<{ parts: unknown[] }>): NegotiationTurn[] {\n return messages\n .map((m) => {\n const dp = (m.parts as Array<{ kind?: string; data?: unknown }>)?.find((p) => p.kind === 'data');\n return dp?.data as NegotiationTurn;\n })\n .filter(Boolean);\n}\n\n/**\n * Creates negotiation MCP tools for external agent access.\n * Exposes negotiation state for listing, reading, and responding to bilateral negotiations.\n */\nexport function createNegotiationTools(defineTool: DefineTool, deps: ToolDeps) {\n const { negotiationDatabase } = deps;\n\n const list_negotiations = defineTool({\n name: 'list_negotiations',\n description:\n 'List bilateral negotiations the authenticated user is involved in, either as the source (initiator) or candidate (responder). ' +\n 'Negotiations are turn-based exchanges where two AI agents negotiate on behalf of their users to determine if there is a ' +\n 'mutual opportunity for collaboration.\\n\\n' +\n '**Statuses:**\\n' +\n '- `active` — Negotiation is in progress, agents are exchanging turns.\\n' +\n '- `waiting_for_agent` — The graph has yielded and is waiting for an agent response (e.g. from the user via respond_to_negotiation) or a timeout.\\n' +\n '- `completed` — The agent negotiation has concluded (agent-side accept/reject, or turn cap). This is not a completed connection or an owner decision.\\n\\n' +\n '**Lifecycle narration:** Every result includes additive `lifecycle` fields that distinguish the agent-negotiation state, ' +\n 'current opportunity status, and persisted owner acceptance. Agent-side `accept` means only that agents found a potential match; ' +\n '`pending` still awaits owner review. `directConversationEvidence` is `not_provided`, so this tool never establishes that an H2H message thread exists.\\n\\n' +\n '**When to use:** To see ongoing and past negotiations, check which negotiations need attention, ' +\n 'or find a negotiation ID for get_negotiation or respond_to_negotiation.',\n querySchema: z.object({\n status: z.enum(['active', 'waiting_for_agent', 'completed', 'all']).optional()\n .describe('Filter by negotiation status. Omit or use \"all\" to return all negotiations.'),\n scope: z.enum(['signal', 'all']).optional()\n .describe('Scope to the pinned signal (requires an intent-pinned session), or pass \"all\" for the full negotiation history.'),\n since: z.string().datetime().optional()\n .describe('ISO 8601 date-time. Only return negotiations created at or after this timestamp.'),\n limit: z.number().int().min(1).max(100).optional()\n .describe('Maximum negotiations to return per page (1-100). Omit to return all.'),\n page: z.number().int().min(1).optional()\n .describe('Page number (1-based). Only used when limit is provided. Defaults to 1.'),\n detail: z.enum(['summary', 'narrative']).optional()\n .describe(\n 'Response detail level. Omit or use \"summary\" for the default fields. ' +\n 'Use \"narrative\" to receive additional context per negotiation suitable for ' +\n 'composing a digest or field report: indexContext (the community/network prompt ' +\n 'that seeded the negotiation), recentTurns (last 3 turns with action + message), ' +\n 'and outcome (for completed negotiations). These fields are populated from data ' +\n 'already loaded for the listing, so the extra cost is minimal.',\n ),\n }),\n handler: async ({ context, query }) => {\n try {\n // Map tool status filter to task state query\n const stateFilter = query.status && query.status !== 'all' ? query.status : undefined;\n // For 'active', query 'working' state tasks\n const dbState = stateFilter === 'active' ? 'working'\n : stateFilter === 'waiting_for_agent' ? 'waiting_for_agent'\n : stateFilter === 'completed' ? 'completed'\n : undefined;\n\n const tasks = await negotiationDatabase.getTasksForUser(context.userId, dbState ? { state: dbState } : undefined);\n const opportunityIds = [...new Set(tasks\n .map((task) => (task.metadata as { opportunityId?: unknown } | null)?.opportunityId)\n .filter((opportunityId): opportunityId is string => typeof opportunityId === 'string' && opportunityId.trim().length > 0)\n .map((opportunityId) => opportunityId.trim()))];\n const opportunityLifecycles = await readOpportunityLifecycles(\n negotiationDatabase,\n opportunityIds,\n context.userId,\n );\n const scopedNetworkId = focusedNetworkId(context);\n const pinnedIntentId = focusedIntentId(context);\n const effectiveScope = query.scope ?? (pinnedIntentId ? 'signal' : 'all');\n if (effectiveScope === 'signal' && !pinnedIntentId) {\n return error('Signal scope requires a pinned intent.');\n }\n\n const signalIntentIdsByOpportunity = effectiveScope === 'signal'\n ? await negotiationDatabase.getIntentIdsForOpportunities(opportunityIds, context.userId)\n : null;\n const scopeMetadata = effectiveScope === 'signal'\n ? { scope: 'signal' as const, intentId: pinnedIntentId! }\n : { scope: 'all' as const };\n\n const negotiations = await Promise.all(tasks.map(async (task) => {\n const meta = task.metadata as {\n sourceUserId?: string;\n candidateUserId?: string;\n type?: string;\n maxTurns?: number;\n opportunityId?: string;\n networkId?: string;\n turnContext?: { indexContext?: { networkId?: string; prompt?: string } };\n isContinuation?: boolean;\n priorTurnCount?: number;\n } | null;\n if (meta?.type !== 'negotiation') return null;\n\n // Network-scope filter: when caller's API key carries a network-bound\n // agent, drop tasks whose network differs (or whose network we cannot\n // determine — defense in depth for legacy tasks).\n if (scopedNetworkId) {\n const taskNetworkId = readTaskNetworkId(meta);\n if (taskNetworkId !== scopedNetworkId) return null;\n }\n\n // Intent-scope filter: a pinned negotiator workspace only shows\n // opportunity-bound tasks whose actor intent belongs to this user and\n // matches the pinned signal. Tasks without resolvable provenance are\n // dropped rather than widened into the user's full history.\n const opportunityId = typeof meta.opportunityId === 'string' ? meta.opportunityId.trim() : '';\n if (effectiveScope === 'signal'\n && (!opportunityId || signalIntentIdsByOpportunity?.[opportunityId] !== pinnedIntentId)) {\n return null;\n }\n\n const isSource = meta.sourceUserId === context.userId;\n const counterpartyId = isSource ? meta.candidateUserId : meta.sourceUserId;\n\n // Get messages for preview (and turns when narrative detail requested)\n const messages = await negotiationDatabase.getMessagesForConversation(task.conversationId);\n const lastMessage = messages[messages.length - 1];\n const lastTurnData = lastMessage\n ? ((lastMessage.parts as Array<{ kind?: string; data?: unknown }>)?.find(p => p.kind === 'data')?.data as { action?: string; assessment?: { reasoning?: string }; message?: string | null } | undefined)\n : undefined;\n\n // Determine whose turn it is from the last message's sender — not\n // parity, which misattributes across continuation sessions. Rows\n // without senderId (legacy) fall back to parity.\n const turnCount = messages.length;\n const lastSenderId = turnCount > 0 ? messages[turnCount - 1].senderId : null;\n const currentSpeaker = lastSenderId\n ? (lastSenderId === `agent:${meta.sourceUserId}` ? 'candidate' : 'source')\n : (turnCount % 2 === 0 ? 'source' : 'candidate');\n\n // Map task state to tool status\n const status = task.state === 'working' ? 'active'\n : task.state === 'waiting_for_agent' ? 'waiting_for_agent'\n : task.state === 'completed' ? 'completed'\n : task.state;\n\n const isUsersTurn = status !== 'completed' &&\n ((isSource && currentSpeaker === 'source') || (!isSource && currentSpeaker === 'candidate'));\n\n const base = {\n id: task.id,\n counterpartyId: counterpartyId ?? 'unknown',\n role: isSource ? 'source' : 'candidate',\n turnCount,\n status,\n isUsersTurn,\n isContinuation: meta.isContinuation ?? false,\n priorTurnCount: meta.priorTurnCount ?? 0,\n latestAction: lastTurnData?.action ?? null,\n latestActionActor: 'agent' as const,\n latestMessagePreview: lastTurnData?.message ?? null,\n lifecycle: buildLifecycleNarration(status, opportunityLifecycles[opportunityId]),\n createdAt: task.createdAt,\n updatedAt: task.updatedAt,\n };\n\n if (query.detail !== 'narrative') return base;\n\n // ── Narrative extras (messages already loaded — no extra DB cost) ──\n\n const RECENT_TURNS_LIMIT = 3;\n const recentMessages = messages.slice(-RECENT_TURNS_LIMIT);\n const recentTurns = recentMessages.map((m, sliceIdx) => {\n const absoluteIdx = messages.length - recentMessages.length + sliceIdx;\n const speaker = m.senderId\n ? (m.senderId === `agent:${meta.sourceUserId}` ? 'source' : 'candidate')\n : (absoluteIdx % 2 === 0 ? 'source' : 'candidate');\n const td = ((m.parts as Array<{ kind?: string; data?: unknown }>)?.find(p => p.kind === 'data')?.data as { action?: string; message?: string | null } | undefined);\n return {\n turnNumber: absoluteIdx + 1,\n speaker,\n role: speaker === (isSource ? 'source' : 'candidate') ? 'own' : 'other',\n action: td?.action ?? 'unknown',\n actionActor: 'agent' as const,\n message: td?.message ?? null,\n };\n });\n\n const indexContext = meta.turnContext?.indexContext ?? null;\n\n // Outcome artifact — only meaningful for completed negotiations\n let outcome: unknown = null;\n if (status === 'completed') {\n const artifacts = await negotiationDatabase.getArtifactsForTask(task.id);\n const outcomeArtifact = artifacts.find(a => a.name === 'negotiation-outcome');\n outcome = outcomeArtifact\n ? ((outcomeArtifact.parts as Array<{ kind?: string; data?: unknown }>)?.find(p => p.kind === 'data')?.data ?? null)\n : null;\n }\n\n return { ...base, indexContext, recentTurns, outcome };\n }));\n\n let filtered = negotiations.filter(Boolean);\n\n if (query.since) {\n const sinceMs = new Date(query.since).getTime();\n filtered = filtered.filter(n => new Date(n!.createdAt).getTime() >= sinceMs);\n }\n\n const shouldPaginate = query.limit !== undefined;\n if (shouldPaginate) {\n const limit = query.limit!;\n const page = query.page ?? 1;\n const offset = (page - 1) * limit;\n const paged = filtered.slice(offset, offset + limit);\n return success({\n ...scopeMetadata,\n count: paged.length,\n totalCount: filtered.length,\n limit,\n page,\n totalPages: Math.ceil(filtered.length / limit),\n negotiations: paged,\n });\n }\n\n return success({\n ...scopeMetadata,\n count: filtered.length,\n negotiations: filtered,\n });\n } catch (err) {\n logger.error('Failed to list negotiations', { err });\n return error('Failed to list negotiations. Please try again.');\n }\n },\n });\n\n const get_negotiation = defineTool({\n name: 'get_negotiation',\n description:\n 'Get the full details of a specific negotiation, including all turns, messages, counterparty info, and current state. ' +\n 'Negotiations are bilateral exchanges where two AI agents negotiate on behalf of users. Each turn contains an action ' +\n '(propose, accept, reject, counter, question), an assessment with reasoning and suggested roles, and an optional message.\\n\\n' +\n '**Access control:** You must be a party to the negotiation (source or candidate) to view it.\\n\\n' +\n '**Statuses:** `active` — in progress. `waiting_for_agent` — waiting for an agent response or timeout. `completed` — the agents concluded, not that the owner accepted or a connection/message thread exists.\\n\\n' +\n '**Lifecycle narration:** The additive `lifecycle` object is authoritative for user-facing wording. A turn action of `accept` is agent-side; ' +\n 'only `lifecycle.ownerAction=accepted` records this owner as the human acceptor. `conversationType=agent_negotiation` identifies the returned ' +\n 'conversationId as the A2A negotiation transcript; this result does not provide H2H conversation evidence.\\n\\n' +\n '**When to use:** To review the full negotiation history before responding, to understand why the agents ' +\n 'accepted or rejected a potential match, or to see the current state of an active negotiation.\\n\\n' +\n '**Negotiation-turn-mode usage.** If you are running as a silent background subagent (dispatched by the ' +\n \"openclaw runtime's poller in response to a claimed negotiation turn), call this tool FIRST with the \" +\n 'negotiationId from your task prompt. This returns the current state, both parties\\' context, and the ' +\n 'history of turns so far. Ground your response in the caller\\'s profile (read_user_contexts) and intents ' +\n '(read_intents) before deciding on a turn action. Do not produce user-facing output in this mode.',\n querySchema: z.object({\n negotiationId: z.string().describe('The negotiation task ID (from list_negotiations results).'),\n }),\n handler: async ({ context, query }) => {\n try {\n const task = await negotiationDatabase.getTask(query.negotiationId);\n if (!task) {\n return error('Negotiation not found.');\n }\n\n const meta = task.metadata as {\n sourceUserId?: string;\n candidateUserId?: string;\n initiatorUserId?: string;\n protocolVersion?: string;\n type?: string;\n maxTurns?: number;\n opportunityId?: string;\n networkId?: string;\n isContinuation?: boolean;\n priorTurnCount?: number;\n turnContext?: {\n sourceUser: UserNegotiationContext;\n candidateUser: UserNegotiationContext;\n indexContext: { networkId: string; prompt?: string };\n seedAssessment: SeedAssessment;\n discoveryQuery?: string;\n };\n } | null;\n if (meta?.type !== 'negotiation') {\n return error('Negotiation not found.');\n }\n\n // Network-scope check: a network-bound agent must not read negotiations\n // outside its bound network. Run before the participant check so we\n // don't leak existence-vs-membership signal across scopes.\n const scopedNetworkId = focusedNetworkId(context);\n if (scopedNetworkId) {\n const taskNetworkId = readTaskNetworkId(meta);\n if (taskNetworkId !== scopedNetworkId) {\n return error(SCOPE_DENIAL);\n }\n }\n\n // Access control: user must be source or candidate\n const isSource = meta.sourceUserId === context.userId;\n const isCandidate = meta.candidateUserId === context.userId;\n if (!isSource && !isCandidate) {\n return error('Access denied: you are not a party to this negotiation.');\n }\n\n const counterpartyId = isSource ? meta.candidateUserId : meta.sourceUserId;\n\n // Project absolute turn context (source/candidate) into own/other\n // perspective for the caller. Mirrors what the in-process system\n // agent receives as NegotiationAgentInput — identical context means\n // identical deliberation on both paths.\n let negotiationContext: {\n ownUser: UserNegotiationContext;\n otherUser: UserNegotiationContext;\n indexContext: { networkId: string; prompt?: string };\n seedAssessment: SeedAssessment;\n isDiscoverer: boolean;\n discoveryQuery?: string;\n } | null = null;\n if (meta.turnContext) {\n const tc = meta.turnContext;\n negotiationContext = {\n ownUser: isSource ? tc.sourceUser : tc.candidateUser,\n otherUser: isSource ? tc.candidateUser : tc.sourceUser,\n indexContext: tc.indexContext,\n seedAssessment: tc.seedAssessment,\n isDiscoverer: isSource,\n ...(tc.discoveryQuery && { discoveryQuery: tc.discoveryQuery }),\n };\n }\n\n const lifecycleOpportunityId = meta.opportunityId?.trim() || undefined;\n\n // Load messages, artifacts, and the independently persisted opportunity lifecycle.\n const [messages, artifacts, opportunityLifecycles] = await Promise.all([\n negotiationDatabase.getMessagesForConversation(task.conversationId),\n negotiationDatabase.getArtifactsForTask(task.id),\n readOpportunityLifecycles(\n negotiationDatabase,\n lifecycleOpportunityId ? [lifecycleOpportunityId] : [],\n context.userId,\n ),\n ]);\n\n // Parse turns from messages (speaker from senderId, not parity —\n // continuations can start with either side speaking first)\n const turns = messages.map((m, idx) => {\n const dataPart = (m.parts as Array<{ kind?: string; data?: unknown }>)?.find(p => p.kind === 'data');\n const turnData = dataPart?.data as {\n action?: string;\n assessment?: { reasoning?: string; suggestedRoles?: unknown };\n message?: string;\n } | undefined;\n\n const turnNumber = idx + 1;\n const speaker = m.senderId\n ? (m.senderId === `agent:${meta.sourceUserId}` ? 'source' : 'candidate')\n : (turnNumber % 2 === 1 ? 'source' : 'candidate');\n\n return {\n turnNumber,\n speaker,\n senderId: m.senderId,\n action: turnData?.action ?? 'unknown',\n actionActor: 'agent' as const,\n reasoning: turnData?.assessment?.reasoning ?? null,\n suggestedRoles: turnData?.assessment?.suggestedRoles ?? null,\n message: turnData?.message ?? null,\n createdAt: m.createdAt,\n };\n });\n\n // Extract outcome from artifacts if completed\n const outcomeArtifact = artifacts.find(a => a.name === 'negotiation-outcome');\n const outcome = outcomeArtifact\n ? (outcomeArtifact.parts as Array<{ kind?: string; data?: unknown }>)?.find(p => p.kind === 'data')?.data\n : null;\n\n // Determine whose turn it is (last sender's counterpart, not parity;\n // rows without senderId fall back to parity)\n const turnCount = messages.length;\n const lastSenderId = turnCount > 0 ? messages[turnCount - 1].senderId : null;\n const currentSpeaker = lastSenderId\n ? (lastSenderId === `agent:${meta.sourceUserId}` ? 'candidate' : 'source')\n : (turnCount % 2 === 0 ? 'source' : 'candidate');\n\n const status = task.state === 'working' ? 'active'\n : task.state === 'waiting_for_agent' ? 'waiting_for_agent'\n : task.state === 'completed' ? 'completed'\n : task.state;\n\n const isUsersTurn = status !== 'completed' &&\n ((isSource && currentSpeaker === 'source') || (!isSource && currentSpeaker === 'candidate'));\n\n const isContinuation = meta.isContinuation ?? false;\n const priorTurnCount = meta.priorTurnCount ?? 0;\n\n // Seat + protocol version (v2 client-advocate): announce the caller's\n // seat and the actions it may submit so agents don't guess.\n const protocolVersion = readProtocolVersion(meta) ?? 'v1';\n const seat = resolveSeat(context.userId, meta);\n\n return success({\n id: task.id,\n conversationId: task.conversationId,\n conversationType: 'agent_negotiation' as const,\n status,\n role: isSource ? 'source' : 'candidate',\n seat,\n protocolVersion,\n allowedActions: allowedActionsFor(protocolVersion, seat),\n counterpartyId: counterpartyId ?? 'unknown',\n turnCount,\n isUsersTurn,\n isContinuation,\n priorTurnCount,\n turnsAdded: turnCount - priorTurnCount,\n turns,\n outcome,\n lifecycle: buildLifecycleNarration(\n status,\n lifecycleOpportunityId ? opportunityLifecycles[lifecycleOpportunityId] : undefined,\n ),\n context: negotiationContext,\n createdAt: task.createdAt,\n updatedAt: task.updatedAt,\n });\n } catch (err) {\n logger.error('Failed to get negotiation', { err });\n return error('Failed to get negotiation. Please try again.');\n }\n },\n });\n\n const respond_to_negotiation = defineTool({\n name: 'respond_to_negotiation',\n description:\n 'Respond to a negotiation that is waiting for agent input. This tool allows users to influence the negotiation ' +\n 'by accepting, rejecting, countering, or asking a clarifying question.\\n\\n' +\n '**Turn-based model:** Negotiations alternate between source and candidate agents. When the graph yields with ' +\n '`waiting_for_agent` status, the user whose turn it is can respond.\\n\\n' +\n '**Valid actions depend on the negotiation protocol version and your seat** — call get_negotiation first: ' +\n 'its `seat`, `protocolVersion`, and `allowedActions` fields tell you exactly what you may submit.\\n\\n' +\n '**v1 negotiations (legacy):** `propose | accept | reject | counter | question` — on the first turn the action MUST be `propose`.\\n\\n' +\n '**v2 negotiations (client-advocate seat rules):**\\n' +\n '- Initiator seat (`outreach | counter | question | withdraw`): you reached out — you can NEVER accept. ' +\n '`outreach` opens the negotiation; `withdraw` ends it without an opportunity.\\n' +\n '- Counterparty seat (`accept | decline | counter | question`): only your seat can `accept` (finalizes an opportunity); ' +\n '`decline` ends the negotiation without one.\\n\\n' +\n '- `counter` — Counter with a message (message is required). The negotiation continues.\\n' +\n '- `question` — Ask the other side a clarifying question (message is required). The negotiation continues.\\n\\n' +\n '**What happens after:** Terminal actions (accept/reject/withdraw/decline) finalize the negotiation immediately. ' +\n 'Counter/question continues — if the counterparty has an agent, the negotiation yields again; otherwise the AI agent responds inline.\\n\\n' +\n '**Silent-subagent response contract.** In negotiation-turn mode, submit exactly ONE call to this tool ' +\n 'per dispatch with an action from your seat\\'s allowed set and the assessment (reasoning + suggestedRoles). ' +\n 'If the decision is ambiguous, pick the most conservative action — usually `counter` with specific objections. ' +\n 'Do not ask the user clarifying questions; you are authorized to act on their behalf within the scope granted to your agent.',\n querySchema: z.object({\n negotiationId: z.string().describe('The negotiation task ID to respond to.'),\n action: z.enum(NEGOTIATION_ACTIONS).describe('The response action. Must be within your seat\\'s allowedActions (see get_negotiation). v1 first turn MUST be \"propose\"; v2 initiator first turn MUST be \"outreach\".'),\n reasoning: z.string().describe('Why you are taking this action — your assessment of the opportunity.'),\n suggestedRoles: z.object({\n ownUser: z.enum(['agent', 'patient', 'peer']).describe('Suggested role for your user in this opportunity.'),\n otherUser: z.enum(['agent', 'patient', 'peer']).describe('Suggested role for the other user in this opportunity.'),\n }).describe('Role suggestions for both parties.'),\n message: z.string().optional().describe('Required for \"counter\" and \"question\" actions. Your message explaining what you want to change or clarify.'),\n }),\n handler: async ({ context, query }) => {\n try {\n const task = await negotiationDatabase.getTask(query.negotiationId);\n if (!task) {\n return error('Negotiation not found.');\n }\n\n const meta = task.metadata as {\n sourceUserId?: string;\n candidateUserId?: string;\n initiatorUserId?: string;\n protocolVersion?: string;\n type?: string;\n maxTurns?: number;\n networkId?: string;\n turnContext?: { indexContext?: { networkId?: string } };\n } | null;\n if (meta?.type !== 'negotiation') {\n return error('Negotiation not found.');\n }\n\n // Network-scope check (mirrors get_negotiation): a network-bound agent\n // must not act on negotiations outside its bound network.\n const scopedNetworkId = focusedNetworkId(context);\n if (scopedNetworkId) {\n const taskNetworkId = readTaskNetworkId(meta);\n if (taskNetworkId !== scopedNetworkId) {\n return error(SCOPE_DENIAL);\n }\n }\n\n // Validate negotiation is waiting for agent input (or claimed via polling)\n if (task.state !== 'waiting_for_agent' && task.state !== 'claimed') {\n return error(`Negotiation is not waiting for a response. Current status: ${task.state}`);\n }\n\n // Access control: user must be a party\n const isSource = meta.sourceUserId === context.userId;\n const isCandidate = meta.candidateUserId === context.userId;\n if (!isSource && !isCandidate) {\n return error('Access denied: you are not a party to this negotiation.');\n }\n\n // Seat + version validation (v2 client-advocate): the submitted action\n // must be within the caller's seat vocabulary. v1 tasks accept the\n // legacy vocabulary unchanged (grandfathered).\n const protocolVersion = readProtocolVersion(meta) ?? 'v1';\n const seat = resolveSeat(context.userId, meta);\n if (!allowedActionsFor(protocolVersion, seat).includes(query.action)) {\n return error(seatViolationMessage(query.action, seat, protocolVersion));\n }\n\n // Determine whose turn it is from the last message's sender — not\n // parity, which misattributes across continuation sessions. Rows\n // without senderId (legacy) fall back to the parity heuristic.\n const messages = await negotiationDatabase.getMessagesForConversation(task.conversationId);\n const turnCount = messages.length;\n const lastSenderId = turnCount > 0 ? messages[turnCount - 1].senderId : null;\n const paritySpeaker = turnCount % 2 === 0 ? 'source' : 'candidate';\n const isUsersTurn = lastSenderId\n ? lastSenderId !== `agent:${context.userId}`\n : ((isSource && paritySpeaker === 'source') || (!isSource && paritySpeaker === 'candidate'));\n\n if (!isUsersTurn) {\n return error('It is not your turn to respond in this negotiation.');\n }\n\n // The caller is the current speaker (verified above).\n const currentSpeaker: 'source' | 'candidate' = isSource ? 'source' : 'candidate';\n\n // Validate counter/question has a message\n if ((query.action === 'counter' || query.action === 'question') && !query.message?.trim()) {\n return error(`A message is required when using \"${query.action}\". Explain what you want to change or clarify.`);\n }\n\n // ── Cancel pending timeout ──\n if (deps.negotiationTimeoutQueue) {\n await deps.negotiationTimeoutQueue.cancelTimeout(task.id);\n }\n\n // ── Build and persist the external agent's turn ──\n const turnData: NegotiationTurn = {\n action: query.action,\n assessment: {\n reasoning: query.reasoning,\n suggestedRoles: query.suggestedRoles,\n },\n ...(query.message ? { message: query.message } : {}),\n };\n\n const senderId = `agent:${context.userId}`;\n const turnMessage = await negotiationDatabase.createMessage({\n conversationId: task.conversationId,\n senderId,\n role: 'agent',\n parts: [{ kind: 'data' as const, data: turnData }],\n taskId: task.id,\n });\n\n const newTurnCount = turnCount + 1;\n\n // ── Handle terminal actions (accept / reject / withdraw / decline): finalize immediately ──\n if (isTerminalAction(query.action)) {\n const allMessages = [...messages, { id: turnMessage.id, senderId: turnMessage.senderId, role: turnMessage.role, parts: turnMessage.parts as unknown[], createdAt: turnMessage.createdAt }];\n const history: NegotiationTurn[] = turnsFromMessages(allMessages);\n\n const nextSpeaker = currentSpeaker === 'source' ? 'candidate' : 'source';\n const outcome = buildNegotiationOutcome(history, newTurnCount, query.action, meta.sourceUserId!, meta.candidateUserId!, nextSpeaker);\n\n await negotiationDatabase.updateTaskState(task.id, 'completed');\n await negotiationDatabase.createArtifact({\n taskId: task.id,\n name: 'negotiation-outcome',\n parts: [{ kind: 'data', data: outcome }],\n metadata: { hasOpportunity: outcome.hasOpportunity, turnCount: newTurnCount },\n });\n\n return success({\n message: query.action === 'accept'\n ? 'Negotiation accepted. An opportunity has been created.'\n : query.action === 'withdraw'\n ? 'Negotiation withdrawn.'\n : query.action === 'decline'\n ? 'Negotiation declined.'\n : 'Negotiation rejected.',\n negotiationId: task.id,\n action: query.action,\n turnNumber: newTurnCount,\n outcome,\n });\n }\n\n // ── Handle counter/question: check if under max turns ──\n const maxTurns = meta.maxTurns ?? 6; // Read from task metadata; fallback to system default\n if (newTurnCount >= maxTurns) {\n // Max turns reached — finalize with turn_cap\n const allMessages = [...messages, { id: turnMessage.id, senderId: turnMessage.senderId, role: turnMessage.role, parts: turnMessage.parts as unknown[], createdAt: turnMessage.createdAt }];\n const history: NegotiationTurn[] = turnsFromMessages(allMessages);\n\n const nextSpeakerForCap = currentSpeaker === 'source' ? 'candidate' : 'source';\n const outcome = buildNegotiationOutcome(history, newTurnCount, 'counter', meta.sourceUserId!, meta.candidateUserId!, nextSpeakerForCap);\n\n await negotiationDatabase.updateTaskState(task.id, 'completed');\n await negotiationDatabase.createArtifact({\n taskId: task.id,\n name: 'negotiation-outcome',\n parts: [{ kind: 'data', data: outcome }],\n metadata: { hasOpportunity: false, turnCount: newTurnCount },\n });\n\n return success({\n message: 'Maximum turns reached. Negotiation finalized without opportunity.',\n negotiationId: task.id,\n action: query.action,\n turnNumber: newTurnCount,\n outcome,\n });\n }\n\n // ── Counter/question under max turns: dispatch to counterparty's agent ──\n const counterpartyUserId = isSource ? meta.candidateUserId! : meta.sourceUserId!;\n const counterpartySpeaker = isSource ? 'candidate' : 'source';\n const counterpartySeat = resolveSeat(counterpartyUserId, meta);\n\n // Build the current turn history for dispatcher payload\n const allMessagesWithTurn = [...messages, { id: turnMessage.id, senderId: turnMessage.senderId, role: turnMessage.role, parts: turnMessage.parts as unknown[], createdAt: turnMessage.createdAt }];\n const historyForDispatch: NegotiationTurn[] = turnsFromMessages(allMessagesWithTurn);\n\n const isFinalTurn = newTurnCount + 1 >= maxTurns;\n\n const ownUserCtx: UserNegotiationContext = { id: counterpartyUserId, intents: [], profile: {} };\n const otherUserCtx: UserNegotiationContext = { id: context.userId, intents: [], profile: {} };\n const seedAssessment: SeedAssessment = { reasoning: 'Continued negotiation', valencyRole: 'peer' };\n\n const dispatchPayload: NegotiationTurnPayload = {\n negotiationId: task.id,\n ownUser: ownUserCtx,\n otherUser: otherUserCtx,\n indexContext: { networkId: '' },\n seedAssessment,\n history: historyForDispatch,\n isFinalTurn,\n isDiscoverer: false,\n seat: counterpartySeat,\n protocolVersion,\n allowedActions: [...allowedActionsFor(protocolVersion, counterpartySeat, isFinalTurn)],\n };\n\n const scope = { action: 'negotiation.respond', scopeType: 'negotiation', scopeId: task.id };\n const timeoutMs = AMBIENT_PARK_WINDOW_MS;\n\n const dispatchResult = await deps.agentDispatcher?.dispatch(counterpartyUserId, scope, dispatchPayload, { timeoutMs });\n\n if (dispatchResult?.handled === false && dispatchResult.reason === 'waiting') {\n // Counterparty's agent acknowledged — yield and wait\n await negotiationDatabase.updateTaskState(task.id, 'waiting_for_agent');\n\n if (deps.negotiationTimeoutQueue) {\n await deps.negotiationTimeoutQueue.enqueueTimeout(task.id, newTurnCount, timeoutMs);\n }\n\n return success({\n message: `${query.action === 'question' ? 'Question' : query.action === 'propose' ? 'Proposal' : query.action === 'outreach' ? 'Outreach' : 'Counter-proposal'} submitted. Waiting for counterparty response.`,\n negotiationId: task.id,\n action: query.action,\n turnNumber: newTurnCount,\n waitingForAgent: true,\n });\n }\n\n let aiTurn: NegotiationTurn;\n\n if (dispatchResult?.handled === true) {\n // Dispatcher returned an agent turn directly\n aiTurn = dispatchResult.turn;\n } else {\n // No agent or timeout — run the system AI agent inline.\n // The agent honors a per-turn LLM timeout (AbortSignal), so invoke\n // can reject. Mirror the graph turnNode's reject-shaped fallback so\n // a timed-out or failed call degrades gracefully instead of leaving\n // the task pinned in `working` while the outer catch returns a bare\n // error to the user.\n await negotiationDatabase.updateTaskState(task.id, 'working');\n\n const agent = new IndexNegotiator();\n try {\n aiTurn = await agent.invoke({\n ownUser: ownUserCtx,\n otherUser: otherUserCtx,\n indexContext: { networkId: '' },\n seedAssessment,\n history: historyForDispatch,\n isFinalTurn,\n seat: counterpartySeat,\n protocolVersion,\n });\n } catch (err) {\n const errMsg = err instanceof Error ? err.message : String(err);\n const errName = (err as { name?: string })?.name ?? '';\n const isTimeout = errName === 'TimeoutError' || /timeout|abort/i.test(errMsg);\n // Log the raw error for ops, but keep the persisted/returned\n // reasoning generic — this string round-trips back to the caller\n // via counterpartyResponse.reasoning and ends up in the negotiation\n // history visible through get_negotiation, so we don't want raw\n // provider messages (URLs, request IDs, internal stack hints) on\n // the wire.\n logger.warn('System negotiator inline invoke failed; treating as reject', {\n taskId: task.id,\n isTimeout,\n error: errMsg,\n });\n aiTurn = {\n action: rejectActionFor(protocolVersion, counterpartySeat),\n assessment: {\n reasoning: isTimeout\n ? 'Negotiator response timed out.'\n : 'Negotiator failed to produce a response.',\n suggestedRoles: { ownUser: 'peer', otherUser: 'peer' },\n },\n };\n }\n }\n\n // Persist the counterparty's turn (from dispatcher or inline AI)\n const aiSenderId = `agent:${counterpartyUserId}`;\n await negotiationDatabase.createMessage({\n conversationId: task.conversationId,\n senderId: aiSenderId,\n role: 'agent',\n parts: [{ kind: 'data' as const, data: aiTurn }],\n taskId: task.id,\n });\n\n const finalTurnCount = newTurnCount + 1;\n\n // Evaluate response\n if (isTerminalAction(aiTurn.action)) {\n const fullHistory = [...historyForDispatch, aiTurn];\n const outcome = buildNegotiationOutcome(fullHistory, finalTurnCount, aiTurn.action, meta.sourceUserId!, meta.candidateUserId!, counterpartySpeaker === 'source' ? 'candidate' : 'source');\n\n await negotiationDatabase.updateTaskState(task.id, 'completed');\n await negotiationDatabase.createArtifact({\n taskId: task.id,\n name: 'negotiation-outcome',\n parts: [{ kind: 'data', data: outcome }],\n metadata: { hasOpportunity: outcome.hasOpportunity, turnCount: finalTurnCount },\n });\n\n return success({\n message: `${query.action === 'question' ? 'Question' : query.action === 'propose' ? 'Proposal' : 'Counter'} submitted. Counterparty responded with ${aiTurn.action}.`,\n negotiationId: task.id,\n action: query.action,\n turnNumber: newTurnCount,\n counterpartyResponse: { action: aiTurn.action, reasoning: aiTurn.assessment.reasoning, message: aiTurn.message ?? null },\n outcome,\n });\n }\n\n // Counterparty countered/questioned — check if max turns reached\n if (finalTurnCount >= maxTurns) {\n const fullHistory = [...historyForDispatch, aiTurn];\n const outcome = buildNegotiationOutcome(fullHistory, finalTurnCount, 'counter', meta.sourceUserId!, meta.candidateUserId!, counterpartySpeaker === 'source' ? 'candidate' : 'source');\n\n await negotiationDatabase.updateTaskState(task.id, 'completed');\n await negotiationDatabase.createArtifact({\n taskId: task.id,\n name: 'negotiation-outcome',\n parts: [{ kind: 'data', data: outcome }],\n metadata: { hasOpportunity: false, turnCount: finalTurnCount },\n });\n\n return success({\n message: 'Counterparty responded but max turns reached. Negotiation finalized.',\n negotiationId: task.id,\n action: query.action,\n turnNumber: newTurnCount,\n counterpartyResponse: { action: aiTurn.action, reasoning: aiTurn.assessment.reasoning, message: aiTurn.message ?? null },\n outcome,\n });\n }\n\n // Counterparty countered/questioned, now user's turn again — dispatch to user's agent\n const userDispatchPayload: NegotiationTurnPayload = {\n negotiationId: task.id,\n ownUser: { id: context.userId, intents: [], profile: {} },\n otherUser: { id: counterpartyUserId, intents: [], profile: {} },\n indexContext: { networkId: '' },\n seedAssessment,\n history: [...historyForDispatch, aiTurn],\n isFinalTurn: finalTurnCount + 1 >= maxTurns,\n isDiscoverer: true,\n seat,\n protocolVersion,\n allowedActions: [...allowedActionsFor(protocolVersion, seat, finalTurnCount + 1 >= maxTurns)],\n };\n\n const userDispatchResult = await deps.agentDispatcher?.dispatch(context.userId, scope, userDispatchPayload, { timeoutMs });\n\n if (!userDispatchResult || (userDispatchResult.handled === false && userDispatchResult.reason === 'no_agent')) {\n // No agent for user — set back to waiting_for_agent so they can use respond_to_negotiation\n await negotiationDatabase.updateTaskState(task.id, 'waiting_for_agent');\n\n if (deps.negotiationTimeoutQueue) {\n await deps.negotiationTimeoutQueue.enqueueTimeout(task.id, finalTurnCount, timeoutMs);\n }\n\n return success({\n message: `${query.action === 'question' ? 'Question' : 'Counter'} submitted. Counterparty responded. Your turn to respond.`,\n negotiationId: task.id,\n action: query.action,\n turnNumber: newTurnCount,\n counterpartyResponse: { action: aiTurn.action, reasoning: aiTurn.assessment.reasoning, message: aiTurn.message ?? null },\n waitingForAgent: true,\n });\n }\n\n if (userDispatchResult.handled === false && userDispatchResult.reason === 'waiting') {\n // User's agent acknowledged — yield and wait\n await negotiationDatabase.updateTaskState(task.id, 'waiting_for_agent');\n\n if (deps.negotiationTimeoutQueue) {\n await deps.negotiationTimeoutQueue.enqueueTimeout(task.id, finalTurnCount, timeoutMs);\n }\n\n return success({\n message: `${query.action === 'question' ? 'Question' : 'Counter'} submitted. Counterparty countered back. Waiting for your agent's response.`,\n negotiationId: task.id,\n action: query.action,\n turnNumber: newTurnCount,\n counterpartyResponse: { action: aiTurn.action, reasoning: aiTurn.assessment.reasoning, message: aiTurn.message ?? null },\n waitingForAgent: true,\n });\n }\n\n if (userDispatchResult.handled === true) {\n // User's agent returned a turn directly — persist, evaluate, and continue\n const userAgentTurn: NegotiationTurn = userDispatchResult.turn;\n const userAgentSenderId = `agent:${context.userId}`;\n await negotiationDatabase.createMessage({\n conversationId: task.conversationId,\n senderId: userAgentSenderId,\n role: 'agent',\n parts: [{ kind: 'data' as const, data: userAgentTurn }],\n taskId: task.id,\n });\n\n const userTurnCount = finalTurnCount + 1;\n\n if (isTerminalAction(userAgentTurn.action)) {\n const fullHistory = [...historyForDispatch, aiTurn, userAgentTurn];\n const userSpeaker = isSource ? 'source' : 'candidate';\n const outcome = buildNegotiationOutcome(fullHistory, userTurnCount, userAgentTurn.action, meta.sourceUserId!, meta.candidateUserId!, userSpeaker === 'source' ? 'candidate' : 'source');\n\n await negotiationDatabase.updateTaskState(task.id, 'completed');\n await negotiationDatabase.createArtifact({\n taskId: task.id,\n name: 'negotiation-outcome',\n parts: [{ kind: 'data', data: outcome }],\n metadata: { hasOpportunity: outcome.hasOpportunity, turnCount: userTurnCount },\n });\n\n return success({\n message: `Your agent ${userAgentTurn.action}ed the counterparty's response.`,\n negotiationId: task.id,\n action: query.action,\n turnNumber: newTurnCount,\n counterpartyResponse: { action: aiTurn.action, reasoning: aiTurn.assessment.reasoning, message: aiTurn.message ?? null },\n outcome,\n });\n }\n\n if (userTurnCount >= maxTurns) {\n const fullHistory = [...historyForDispatch, aiTurn, userAgentTurn];\n const outcome = buildNegotiationOutcome(fullHistory, userTurnCount, 'counter', meta.sourceUserId!, meta.candidateUserId!, isSource ? 'candidate' : 'source');\n\n await negotiationDatabase.updateTaskState(task.id, 'completed');\n await negotiationDatabase.createArtifact({\n taskId: task.id,\n name: 'negotiation-outcome',\n parts: [{ kind: 'data', data: outcome }],\n metadata: { hasOpportunity: false, turnCount: userTurnCount },\n });\n\n return success({\n message: 'Your agent responded but max turns reached. Negotiation finalized.',\n negotiationId: task.id,\n action: query.action,\n turnNumber: newTurnCount,\n counterpartyResponse: { action: aiTurn.action, reasoning: aiTurn.assessment.reasoning, message: aiTurn.message ?? null },\n outcome,\n });\n }\n\n // User's agent countered/questioned — arm timeout for counterparty's next turn\n await negotiationDatabase.updateTaskState(task.id, 'waiting_for_agent');\n\n if (deps.negotiationTimeoutQueue) {\n await deps.negotiationTimeoutQueue.enqueueTimeout(task.id, userTurnCount, timeoutMs);\n }\n\n return success({\n message: `Your agent responded with ${userAgentTurn.action}. Waiting for counterparty.`,\n negotiationId: task.id,\n action: query.action,\n turnNumber: newTurnCount,\n counterpartyResponse: { action: aiTurn.action, reasoning: aiTurn.assessment.reasoning, message: aiTurn.message ?? null },\n waitingForAgent: true,\n });\n }\n\n // No agent / timeout — set back to working so graph can continue\n await negotiationDatabase.updateTaskState(task.id, 'working');\n\n return success({\n message: `${query.action === 'question' ? 'Question' : 'Counter'} submitted. Counterparty countered back. Negotiation continues.`,\n negotiationId: task.id,\n action: query.action,\n turnNumber: newTurnCount,\n counterpartyResponse: { action: aiTurn.action, reasoning: aiTurn.assessment.reasoning, message: aiTurn.message ?? null },\n });\n } catch (err) {\n logger.error('Failed to respond to negotiation', { err });\n return error('Failed to respond to negotiation. Please try again.');\n }\n },\n });\n\n return [list_negotiations, get_negotiation, respond_to_negotiation] as const;\n}\n\n/**\n * Build a NegotiationOutcome from the full turn history.\n * Mirrors the logic in the graph's finalizeNode for consistency.\n *\n * @param history - All negotiation turns\n * @param turnCount - Total number of turns\n * @param lastAction - The last turn's action (accept/reject/counter)\n * @param sourceUserId - Source user ID\n * @param candidateUserId - Candidate user ID\n * @param currentSpeaker - Who would speak next (the person after the accepter/rejector)\n */\nfunction buildNegotiationOutcome(\n history: NegotiationTurn[],\n turnCount: number,\n lastAction: string,\n sourceUserId: string,\n candidateUserId: string,\n currentSpeaker: string,\n): NegotiationOutcome {\n const hasOpportunity = lastAction === 'accept';\n // Non-terminal last action at finalization means the turn cap was hit.\n const atCap = !isTerminalAction(lastAction);\n\n let agreedRoles: NegotiationOutcome['agreedRoles'] = [];\n if (hasOpportunity && history.length >= 2) {\n const acceptTurn = history[history.length - 1];\n const precedingTurn = history[history.length - 2];\n const accepterIsSource = currentSpeaker === 'candidate';\n const [sourceRole, candidateRole] = accepterIsSource\n ? [acceptTurn.assessment.suggestedRoles.ownUser, precedingTurn.assessment.suggestedRoles.ownUser]\n : [precedingTurn.assessment.suggestedRoles.ownUser, acceptTurn.assessment.suggestedRoles.ownUser];\n agreedRoles = [\n { userId: sourceUserId, role: sourceRole },\n { userId: candidateUserId, role: candidateRole },\n ];\n }\n\n return {\n hasOpportunity,\n agreedRoles,\n reasoning: history[history.length - 1]?.assessment.reasoning ?? '',\n turnCount,\n ...(atCap && { reason: 'turn_cap' }),\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.graph.d.ts","sourceRoot":"/","sources":["network/indexer/indexer.graph.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAIhG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAIpF;;;;;;;;;GASG;AACH,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;gBADf,QAAQ,EAAE,0BAA0B,EACpC,eAAe,EAAE,aAAa;IAGjC,WAAW;;;;;;;;;;;;;;;;;;;;;2BA2DuC,CAAC;4BAA4B,CAAC;sBAAuB,CAAA;wBAAyB,CAAA;yBAGhI,CAAC;8BACc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAJkC,CAAC;4BAA4B,CAAC;sBAAuB,CAAA;wBAAyB,CAAA;yBAGhI,CAAC;8BACc,CAAC;;;;;;;;;2BAJkC,CAAC;4BAA4B,CAAC;sBAAuB,CAAA;wBAAyB,CAAA;yBAGhI,CAAC;8BACc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAJkC,CAAC;4BAA4B,CAAC;sBAAuB,CAAA;wBAAyB,CAAA;yBAGhI,CAAC;8BACc,CAAC;;;;;;;;;2BAJkC,CAAC;4BAA4B,CAAC;sBAAuB,CAAA;wBAAyB,CAAA;yBAGhI,CAAC;8BACc,CAAC;;;;;;;;;2BAJkC,CAAC;4BAA4B,CAAC;sBAAuB,CAAA;wBAAyB,CAAA;yBAGhI,CAAC;8BACc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAJkC,CAAC;4BAA4B,CAAC;sBAAuB,CAAA;wBAAyB,CAAA;yBAGhI,CAAC;8BACc,CAAC;;;;;;;;;2BAJkC,CAAC;4BAA4B,CAAC;sBAAuB,CAAA;wBAAyB,CAAA;yBAGhI,CAAC;8BACc,CAAC;;;;;;;;;2BAJkC,CAAC;4BAA4B,CAAC;sBAAuB,CAAA;wBAAyB,CAAA;yBAGhI,CAAC;8BACc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA3CmD,gBAAgB;;;;;;;;;;;8BAYd,gBAAgB;;;;;;;;;;;;;;;;;;;;;8BAZlB,gBAAgB;;;;;;;;;;;;;;;8BAYd,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsY7F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.graph.js","sourceRoot":"/","sources":["network/indexer/indexer.graph.ts"],"names":[],"mappings":"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","sourcesContent":["import { StateGraph, START, END } from \"@langchain/langgraph\";\n\nimport { IntentIndexer } from \"../../intent/intent.indexer.js\";\nimport { buildNetworkAssignmentDecision } from \"../../shared/assignment/network-assignment.policy.js\";\nimport type { IntentNetworkGraphDatabase } from \"../../shared/interfaces/database.interface.js\";\nimport { protocolLogger } from \"../../shared/observability/protocol.logger.js\";\nimport { timed } from \"../../shared/observability/performance.js\";\nimport { requestContext } from \"../../shared/observability/request-context.js\";\nimport type { DebugMetaAgent } from \"../../chat/chat-streaming.types.js\";\nimport { renderNetworkContext } from \"../../shared/network/metadata.renderer.js\";\n\nimport { IntentNetworkGraphState, type AssignmentResult } from \"./indexer.state.js\";\n\nconst logger = protocolLogger(\"IntentNetworkGraphFactory\");\n\n/**\n * Factory class to build and compile the Intent Index Graph.\n *\n * Handles CRUD for the intent_indexes junction table:\n * - create: Assign an intent to an index (direct or evaluated via IntentIndexer agent)\n * - read: List intent-network links (by intentId or by networkId)\n * - delete: Unassign an intent from an index\n *\n * The evaluate-based assignment flow is migrated from the old Network Graph.\n */\nexport class IntentNetworkGraphFactory {\n constructor(\n private database: IntentNetworkGraphDatabase,\n private intentNetworker: IntentIndexer,\n ) {}\n\n public createGraph() {\n const indexer = this.intentNetworker;\n\n const finalizeAssignment = async (\n userId: string,\n intentId: string,\n networkId: string,\n score: number,\n metadata: Parameters<IntentNetworkGraphDatabase['assignIntentToNetworkIfMember']>[4],\n successMessage: string,\n ) => {\n const outcome = await this.database.assignIntentToNetworkIfMember(\n userId,\n intentId,\n networkId,\n score,\n metadata,\n );\n if (outcome.kind === 'assigned') {\n return {\n assignmentResult: { networkId, assigned: true, success: true } as AssignmentResult,\n mutationResult: { success: true, message: successMessage },\n };\n }\n if (outcome.kind === 'already_assigned') {\n return {\n assignmentResult: { networkId, assigned: true, success: true } as AssignmentResult,\n mutationResult: { success: true, message: 'That intent is already in this network.' },\n };\n }\n if (outcome.kind === 'membership_required') {\n return {\n assignmentResult: { networkId, assigned: false, success: false } as AssignmentResult,\n mutationResult: { success: false, error: 'Current network membership is required to assign this intent.' },\n };\n }\n return {\n assignmentResult: { networkId, assigned: false, success: false } as AssignmentResult,\n mutationResult: { success: false, error: 'Intent is no longer available for assignment.' },\n };\n };\n\n // --- NODE DEFINITIONS ---\n\n /**\n * Assign Node: Assign an intent to an index.\n * Two sub-paths:\n * - Direct assignment (skipEvaluation=true): assign immediately\n * - Evaluated assignment (skipEvaluation=false): load intent + index context, evaluate via IntentIndexer\n */\n const assignNode = async (state: typeof IntentNetworkGraphState.State) => {\n return timed(\"IntentNetworkGraph.assign\", async () => {\n const intentId = state.intentId;\n const networkId = state.networkId;\n logger.verbose(\"Assign intent to index\", { userId: state.userId, intentId, networkId, skipEvaluation: state.skipEvaluation });\n\n const agentTimingsAccum: DebugMetaAgent[] = [];\n\n if (!intentId || !networkId) {\n return { agentTimings: agentTimingsAccum, mutationResult: { success: false, error: \"Both intentId and networkId are required.\" } };\n }\n\n try {\n // Validate ownership and membership\n const intent = await this.database.getIntent(intentId);\n if (!intent) {\n return { agentTimings: agentTimingsAccum, mutationResult: { success: false, error: \"Intent not found.\" } };\n }\n if (intent.userId !== state.userId) {\n return { agentTimings: agentTimingsAccum, mutationResult: { success: false, error: \"You can only add your own intents to a network.\" } };\n }\n const [isMember, isOwner] = await Promise.all([\n this.database.isNetworkMember(networkId, state.userId),\n this.database.isIndexOwner(networkId, state.userId),\n ]);\n if (!isMember && !isOwner) {\n return { agentTimings: agentTimingsAccum, mutationResult: { success: false, error: \"You are not a member of that network.\" } };\n }\n\n // Check if already assigned\n const alreadyAssigned = await this.database.isIntentAssignedToIndex(intentId, networkId);\n if (alreadyAssigned) {\n return { agentTimings: agentTimingsAccum, mutationResult: { success: true, message: \"That intent is already in this network.\" } };\n }\n\n // Direct assignment (skip evaluation)\n if (state.skipEvaluation) {\n const decision = buildNetworkAssignmentDecision({\n resourceType: \"intent\",\n mode: \"manual_override\",\n scope: \"network\",\n evaluator: \"intent-network-graph\",\n source: \"manual-index-assignment\",\n createdAt: new Date().toISOString(),\n });\n const finalized = await finalizeAssignment(\n state.userId,\n intentId,\n networkId,\n decision.finalScore,\n decision.metadata,\n 'Intent saved to the network.',\n );\n return { agentTimings: agentTimingsAccum, ...finalized };\n }\n\n // Evaluated assignment (migrated from old Network Graph)\n const intentForIndexing = await this.database.getIntentForIndexing(intentId);\n if (!intentForIndexing) {\n return { agentTimings: agentTimingsAccum, mutationResult: { success: false, error: \"Intent not found for networking.\" } };\n }\n\n const indexContext = await this.database.getNetworkAssignmentContext(networkId, intentForIndexing.userId);\n if (!indexContext) {\n return {\n agentTimings: agentTimingsAccum,\n assignmentResult: { networkId, assigned: false, success: false } as AssignmentResult,\n mutationResult: { success: false, error: \"Network assignment context not found.\" },\n };\n }\n const indexPrompt = indexContext.indexPrompt ?? null;\n const memberPrompt = indexContext.memberPrompt ?? null;\n const hasNoPrompts = !indexPrompt?.trim() && !memberPrompt?.trim();\n if (hasNoPrompts) {\n const decision = buildNetworkAssignmentDecision({\n resourceType: \"intent\",\n mode: \"automatic\",\n scope: \"network\",\n indexPrompt,\n memberPrompt,\n evaluator: \"intent-networker\",\n source: \"intent-network-graph\",\n createdAt: new Date().toISOString(),\n });\n const finalized = await finalizeAssignment(\n state.userId,\n intentId,\n networkId,\n decision.finalScore,\n decision.metadata,\n 'Intent assigned to network (no prompts).',\n );\n return { agentTimings: agentTimingsAccum, ...finalized };\n }\n\n // Run IntentIndexer evaluation\n const sourceName = intentForIndexing.sourceType\n ? `${intentForIndexing.sourceType}:${intentForIndexing.sourceId ?? \"\"}`\n : undefined;\n\n // Render network context (type, metadata) for the evaluator\n const network = await this.database.getNetwork(networkId);\n const renderedContext = network\n ? renderNetworkContext({\n type: network.type ?? 'community',\n title: network.title,\n prompt: network.prompt,\n metadata: network.metadata ?? {},\n })\n : null;\n\n const _traceEmitterIndexer = requestContext.getStore()?.traceEmitter;\n const _indexerStart = Date.now();\n _traceEmitterIndexer?.({ type: \"agent_start\", name: \"intent-networker\" });\n let result: Awaited<ReturnType<typeof indexer.evaluate>> | null = null;\n try {\n result = await indexer.evaluate(\n intentForIndexing.payload,\n indexPrompt,\n memberPrompt,\n sourceName,\n renderedContext\n );\n } finally {\n const _indexerMs = Date.now() - _indexerStart;\n agentTimingsAccum.push({ name: 'intent.indexer', durationMs: _indexerMs });\n _traceEmitterIndexer?.({ type: \"agent_end\", name: \"intent-networker\", durationMs: _indexerMs, summary: result ? `Scored: index=${result.indexScore.toFixed(2)}, member=${result.memberScore.toFixed(2)}` : \"intent-networker failed\" });\n }\n\n if (!result) {\n return {\n agentTimings: agentTimingsAccum,\n evaluation: null,\n shouldAssign: false,\n finalScore: 0,\n mutationResult: { success: false, error: \"Evaluation returned no result.\" },\n };\n }\n\n const decision = buildNetworkAssignmentDecision({\n resourceType: \"intent\",\n mode: \"automatic\",\n scope: \"network\",\n indexPrompt,\n memberPrompt,\n rawScores: { indexScore: result.indexScore, memberScore: result.memberScore },\n evaluator: \"intent-networker\",\n source: \"intent-network-graph\",\n reason: result.reasoning,\n createdAt: new Date().toISOString(),\n });\n\n if (decision.assigned) {\n const finalized = await finalizeAssignment(\n state.userId,\n intentId,\n networkId,\n decision.finalScore,\n decision.metadata,\n `Intent assigned to network (score: ${decision.finalScore.toFixed(2)}).`,\n );\n return {\n agentTimings: agentTimingsAccum,\n evaluation: result,\n shouldAssign: finalized.assignmentResult.assigned,\n finalScore: decision.finalScore,\n ...finalized,\n };\n }\n\n return {\n agentTimings: agentTimingsAccum,\n evaluation: result,\n shouldAssign: false,\n finalScore: decision.finalScore,\n assignmentResult: { networkId, assigned: false, success: true } as AssignmentResult,\n mutationResult: { success: false, error: `Intent did not qualify for this network (score: ${decision.finalScore.toFixed(2)}).` },\n };\n } catch (err) {\n logger.error(\"Assign failed\", { error: err });\n return { agentTimings: agentTimingsAccum, mutationResult: { success: false, error: \"Failed to assign intent to network.\" } };\n }\n });\n };\n\n /**\n * Read Node: Query intent-network relationships.\n * - By intentId only: list all networks the intent is in (owner only)\n * - By networkId only: list intents in the index (member only)\n * - By both intentId and networkId: check if specific link exists (owner only)\n */\n const readNode = async (state: typeof IntentNetworkGraphState.State) => {\n return timed(\"IntentNetworkGraph.read\", async () => {\n const intentId = state.intentId;\n const networkId = state.networkId;\n logger.verbose(\"Read intent-network links\", { userId: state.userId, intentId, networkId, queryUserId: state.queryUserId });\n\n try {\n // By both: check if specific intent-network link exists\n if (intentId && networkId) {\n const intent = await this.database.getIntent(intentId);\n if (!intent) {\n return { readResult: { links: [], count: 0, mode: \"check_link\" }, error: \"Intent not found.\" };\n }\n if (intent.userId !== state.userId) {\n return { readResult: { links: [], count: 0, mode: \"check_link\" }, error: \"You can only check links for your own intents.\" };\n }\n const isLinked = await this.database.isIntentAssignedToIndex(intentId, networkId);\n return {\n readResult: {\n links: isLinked ? [{ intentId, networkId }] : [],\n count: isLinked ? 1 : 0,\n mode: \"check_link\",\n note: isLinked ? \"Intent is linked to this network.\" : \"Intent is not linked to this network.\",\n },\n };\n }\n\n // By intent only: list all networks for this intent\n if (intentId) {\n const intent = await this.database.getIntent(intentId);\n if (!intent) {\n return { readResult: { links: [], count: 0, mode: \"networks_for_intent\" }, error: \"Intent not found.\" };\n }\n if (intent.userId !== state.userId) {\n return { readResult: { links: [], count: 0, mode: \"networks_for_intent\" }, error: \"You can only list networks for your own intents.\" };\n }\n const networkIds = await this.database.getNetworkIdsForIntent(intentId);\n return {\n readResult: {\n links: networkIds.map((id) => ({ intentId, networkId: id })),\n count: networkIds.length,\n mode: \"networks_for_intent\",\n note: \"To show network titles, use read_networks.\",\n },\n };\n }\n\n // By index: list intents in the index\n if (!networkId) {\n return {\n readResult: { links: [], count: 0, mode: \"unknown\" },\n error: \"Provide networkId or intentId.\",\n };\n }\n\n const [isMember, isOwner] = await Promise.all([\n this.database.isNetworkMember(networkId, state.userId),\n this.database.isIndexOwner(networkId, state.userId),\n ]);\n if (!isMember && !isOwner) {\n return {\n readResult: { links: [], count: 0, mode: \"intents_in_network\" },\n error: \"Network not found or you are not a member.\",\n };\n }\n\n // All intents or filtered by user\n if (!state.queryUserId) {\n const intents = await this.database.getNetworkIntentsForMember(networkId, state.userId, { limit: 50, offset: 0 });\n return {\n readResult: {\n links: intents.map((i) => ({\n intentId: i.id,\n networkId,\n intentTitle: i.payload,\n userId: i.userId,\n userName: i.userName,\n createdAt: i.createdAt,\n relevancyScore: i.relevancyScore,\n })),\n count: intents.length,\n mode: \"intents_in_network\",\n note: \"To show network title and full intent details, use read_networks and read_intents.\",\n },\n };\n }\n\n // Specific user's intents\n const intents = await this.database.getIntentsInIndexForMember(state.queryUserId, networkId);\n return {\n readResult: {\n links: intents.map((i) => ({\n intentId: i.id,\n networkId,\n intentTitle: i.payload,\n createdAt: i.createdAt,\n relevancyScore: i.relevancyScore,\n })),\n count: intents.length,\n mode: \"intents_in_network\",\n note: \"To show network title and full intent details, use read_networks and read_intents.\",\n },\n };\n } catch (err) {\n logger.error(\"Read intent-network failed\", { error: err });\n return { error: \"Failed to fetch intent-network links.\" };\n }\n });\n };\n\n /**\n * Unassign Node: Remove an intent from an index.\n */\n const unassignNode = async (state: typeof IntentNetworkGraphState.State) => {\n return timed(\"IntentNetworkGraph.unassign\", async () => {\n const intentId = state.intentId;\n const networkId = state.networkId;\n logger.verbose(\"Unassign intent from index\", { userId: state.userId, intentId, networkId });\n\n if (!intentId || !networkId) {\n return { mutationResult: { success: false, error: \"Both intentId and networkId are required.\" } };\n }\n\n try {\n const intent = await this.database.getIntent(intentId);\n if (!intent) {\n return { mutationResult: { success: false, error: \"Intent not found.\" } };\n }\n if (intent.userId !== state.userId) {\n return { mutationResult: { success: false, error: \"You can only remove your own intents from a network.\" } };\n }\n const [isMember, isOwner] = await Promise.all([\n this.database.isNetworkMember(networkId, state.userId),\n this.database.isIndexOwner(networkId, state.userId),\n ]);\n if (!isMember && !isOwner) {\n return { mutationResult: { success: false, error: \"You are not a member of that network.\" } };\n }\n\n const assigned = await this.database.isIntentAssignedToIndex(intentId, networkId);\n if (!assigned) {\n return { mutationResult: { success: true, message: \"That intent is not in this network.\" } };\n }\n\n await this.database.unassignIntentFromIndex(intentId, networkId);\n return { mutationResult: { success: true, message: \"Intent removed from the index.\" } };\n } catch (err) {\n logger.error(\"Unassign failed\", { error: err });\n return { mutationResult: { success: false, error: \"Failed to remove intent from network.\" } };\n }\n });\n };\n\n // --- CONDITIONAL ROUTING ---\n\n const routeByMode = (state: typeof IntentNetworkGraphState.State): string => {\n switch (state.operationMode) {\n case 'create': return 'assign';\n case 'read': return 'read';\n case 'delete': return 'unassign';\n default: return 'read';\n }\n };\n\n // --- GRAPH ASSEMBLY ---\n\n const workflow = new StateGraph(IntentNetworkGraphState)\n .addNode(\"assign\", assignNode)\n .addNode(\"read\", readNode)\n .addNode(\"unassign\", unassignNode)\n .addConditionalEdges(START, routeByMode, {\n assign: \"assign\",\n read: \"read\",\n unassign: \"unassign\",\n })\n .addEdge(\"assign\", END)\n .addEdge(\"read\", END)\n .addEdge(\"unassign\", END);\n\n return workflow.compile();\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.state.d.ts","sourceRoot":"/","sources":["network/indexer/indexer.state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB;IAGlC,mDAAmD;;;;;;IAGnD,yEAAyE;;IAMzE,8DAA8D;;IAM9D,sBAAsB;;IAQtB;;;OAGG;;IAQH,6DAA6D;;IAM7D,yDAAyD;;IAMzD,8CAA8C;;;;;;;;;;;;;;IAM9C,wDAAwD;;IAMxD,2CAA2C;;IAM3C,0CAA0C;;IAQ1C,iGAAiG;;IAMjG,4BAA4B;;eAEnB,KAAK,CAAC;YACX,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC;YAClB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,CAAC,EAAE,IAAI,CAAC;YACjB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SAChC,CAAC;eACK,MAAM;cACP,MAAM;eACL,MAAM;;eAZN,KAAK,CAAC;YACX,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC;YAClB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,CAAC,EAAE,IAAI,CAAC;YACjB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SAChC,CAAC;eACK,MAAM;cACP,MAAM;eACL,MAAM;;eAZN,KAAK,CAAC;YACX,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC;YAClB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,CAAC,EAAE,IAAI,CAAC;YACjB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SAChC,CAAC;eACK,MAAM;cACP,MAAM;eACL,MAAM;;IAMf,sCAAsC;;iBAE3B,OAAO;kBACN,MAAM;gBACR,MAAM;;iBAFL,OAAO;kBACN,MAAM;gBACR,MAAM;;iBAFL,OAAO;kBACN,MAAM;gBACR,MAAM;;IAMhB,qBAAqB;;IAMrB,sEAAsE;;EAKtE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.state.js","sourceRoot":"/","sources":["network/indexer/indexer.state.ts"],"names":[],"mappings":"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","sourcesContent":["import { Annotation } from \"@langchain/langgraph\";\nimport type { IntentIndexerOutput } from \"../../intent/intent.indexer.js\";\nimport type { DebugMetaAgent } from '../../chat/chat-streaming.types.js';\n\n/**\n * Intent payload and metadata loaded for index evaluation.\n * (Migrated from the old index.graph.state.ts)\n */\nexport interface IntentForIndexing {\n id: string;\n payload: string;\n userId: string;\n sourceType: string | null;\n sourceId: string | null;\n}\n\n/**\n * Index and member prompts for a single index (user must be member with autoAssign).\n * (Migrated from the old index.graph.state.ts)\n */\nexport interface IndexMemberContext {\n networkId: string;\n indexPrompt: string | null;\n memberPrompt: string | null;\n}\n\n/**\n * Result of executing an assignment decision.\n * (Migrated from the old index.graph.state.ts)\n */\nexport interface AssignmentResult {\n networkId: string;\n assigned: boolean;\n success: boolean;\n error?: string;\n}\n\n/**\n * Intent Index Graph State.\n * Handles CRUD for the intent_indexes junction table (linking intents to indexes).\n * Absorbs the old Network Graph's evaluate-based assignment flow.\n *\n * Flow:\n * START → router → {\n * create: assignNode (direct or evaluated) → END\n * read: readNode → END\n * delete: unassignNode → END\n * }\n */\nexport const IntentNetworkGraphState = Annotation.Root({\n // --- Core Inputs (from ChatGraph via ToolContext) ---\n\n /** User performing the action. Always required. */\n userId: Annotation<string>,\n\n /** Target index for assign/read-by-index. From ChatGraph or tool arg. */\n networkId: Annotation<string | undefined>({\n reducer: (_, next) => next,\n default: () => undefined,\n }),\n\n /** Target intent for assign/read-by-intent. From tool arg. */\n intentId: Annotation<string | undefined>({\n reducer: (_, next) => next,\n default: () => undefined,\n }),\n\n /** Operation mode. */\n operationMode: Annotation<'create' | 'read' | 'delete'>({\n reducer: (curr, next) => next ?? curr,\n default: () => 'read' as const,\n }),\n\n // --- Create Mode Controls ---\n\n /**\n * When true, skip LLM evaluation and assign directly.\n * (Migrated from old Network Graph.)\n */\n skipEvaluation: Annotation<boolean>({\n reducer: (_, next) => next,\n default: () => true,\n }),\n\n // --- Intermediate State (populated by nodes, migrated from old Network Graph) ---\n\n /** Intent payload and metadata. Null if intent not found. */\n intent: Annotation<IntentForIndexing | null>({\n reducer: (_, next) => next,\n default: () => null,\n }),\n\n /** Index + member context. Null if user not eligible. */\n indexContext: Annotation<IndexMemberContext | null>({\n reducer: (_, next) => next,\n default: () => null,\n }),\n\n /** LLM evaluation result. Null if skipped. */\n evaluation: Annotation<IntentIndexerOutput | null>({\n reducer: (_, next) => next,\n default: () => null,\n }),\n\n /** Final decision: should intent be in this network? */\n shouldAssign: Annotation<boolean | undefined>({\n reducer: (_, next) => next,\n default: () => undefined,\n }),\n\n /** Final score used for decision (0–1). */\n finalScore: Annotation<number | undefined>({\n reducer: (_, next) => next,\n default: () => undefined,\n }),\n\n /** Result of the assignment operation. */\n assignmentResult: Annotation<AssignmentResult | null>({\n reducer: (_, next) => next,\n default: () => null,\n }),\n\n // --- Read Mode Outputs ---\n\n /** For read-by-intent: pass userId when listing an intent's indexes (omit for read-by-index). */\n queryUserId: Annotation<string | undefined>({\n reducer: (_, next) => next,\n default: () => undefined,\n }),\n\n /** Output for read mode. */\n readResult: Annotation<{\n links: Array<{\n intentId: string;\n networkId: string;\n intentTitle?: string;\n networkTitle?: string;\n userId?: string;\n userName?: string;\n createdAt?: Date;\n relevancyScore?: number | null;\n }>;\n count: number;\n mode: string;\n note?: string;\n } | undefined>({\n reducer: (_, next) => next,\n default: () => undefined,\n }),\n\n /** Output for create/delete modes. */\n mutationResult: Annotation<{\n success: boolean;\n message?: string;\n error?: string;\n } | undefined>({\n reducer: (_, next) => next,\n default: () => undefined,\n }),\n\n /** Error message. */\n error: Annotation<string | null>({\n reducer: (_, next) => next,\n default: () => null,\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"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"membership.graph.d.ts","sourceRoot":"/","sources":["network/membership/membership.graph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAOpG;;;;;;;GAOG;AACH,qBAAa,6BAA6B;IAC5B,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,8BAA8B;IAErD,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgNnB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"membership.graph.js","sourceRoot":"/","sources":["network/membership/membership.graph.ts"],"names":[],"mappings":"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","sourcesContent":["import { StateGraph, START, END } from \"@langchain/langgraph\";\nimport type { NetworkMembershipGraphDatabase } from \"../../shared/interfaces/database.interface.js\";\nimport { protocolLogger } from \"../../shared/observability/protocol.logger.js\";\nimport { timed } from \"../../shared/observability/performance.js\";\nimport { NetworkMembershipGraphState } from \"./membership.state.js\";\n\nconst logger = protocolLogger(\"NetworkMembershipGraphFactory\");\n\n/**\n * Factory class to build and compile the Network Membership Graph.\n *\n * Handles CRUD operations for the index_members table:\n * - create: Add a member to an index (validates join policy and ownership)\n * - read: List members of an index (validates caller is member)\n * - delete: Remove a member from an index (future, validates ownership)\n */\nexport class NetworkMembershipGraphFactory {\n constructor(private database: NetworkMembershipGraphDatabase) {}\n\n public createGraph() {\n // --- NODE DEFINITIONS ---\n\n /**\n * Add Member Node: Add a user as a member of an index.\n * Handles two cases:\n * 1. Self-join (targetUserId === userId): Only allowed for public networks (joinPolicy 'anyone')\n * 2. Invite others (targetUserId !== userId): Requires caller to be member; owner-only for invite_only\n */\n const addMemberNode = async (state: typeof NetworkMembershipGraphState.State) => {\n return timed(\"NetworkMembershipGraph.addMember\", async () => {\n logger.verbose(\"Add member to index\", {\n userId: state.userId,\n networkId: state.networkId,\n targetUserId: state.targetUserId,\n });\n\n if (!state.targetUserId) {\n return { mutationResult: { success: false, error: \"targetUserId is required.\" } };\n }\n\n try {\n const indexRecord = await this.database.getNetworkWithPermissions(state.networkId);\n if (!indexRecord) {\n return { mutationResult: { success: false, error: \"Index not found.\" } };\n }\n\n const joinPolicy = indexRecord.permissions.joinPolicy;\n const isSelfJoin = state.targetUserId === state.userId;\n\n if (isSelfJoin) {\n // Self-join: only allowed for public networks\n if (joinPolicy !== 'anyone') {\n return {\n mutationResult: {\n success: false,\n error: \"This network is invite-only. You cannot join without an invitation from an existing member.\",\n },\n };\n }\n\n const result = await this.database.addMemberToNetwork(state.networkId, state.targetUserId, 'member');\n if (result.alreadyMember) {\n return { mutationResult: { success: true, message: \"You are already a member of this network.\" } };\n }\n\n return { mutationResult: { success: true, message: `You have joined \"${indexRecord.title}\".` } };\n }\n\n // Inviting others: must be a member first\n const isMember = await this.database.isNetworkMember(state.networkId, state.userId);\n if (!isMember) {\n return { mutationResult: { success: false, error: \"You must be a member of that network to add others.\" } };\n }\n\n if (joinPolicy === 'invite_only') {\n const isOwner = await this.database.isIndexOwner(state.networkId, state.userId);\n if (!isOwner) {\n return { mutationResult: { success: false, error: \"Only the network owner can add members when the network is invite-only.\" } };\n }\n }\n\n const result = await this.database.addMemberToNetwork(state.networkId, state.targetUserId, 'member');\n if (result.alreadyMember) {\n return { mutationResult: { success: true, message: \"That user is already a member of this network.\" } };\n }\n\n return { mutationResult: { success: true, message: \"Member added to the network.\" } };\n } catch (err) {\n logger.error(\"Add member failed\", { error: err });\n return {\n mutationResult: {\n success: false,\n error: err instanceof Error ? err.message : \"Failed to add member.\",\n },\n };\n }\n });\n };\n\n /**\n * List Members Node: List all members of a network.\n * Validates caller is a member.\n */\n const listMembersNode = async (state: typeof NetworkMembershipGraphState.State) => {\n return timed(\"NetworkMembershipGraph.listMembers\", async () => {\n logger.verbose(\"List network members\", {\n userId: state.userId,\n networkId: state.networkId,\n });\n\n try {\n const isMember = await this.database.isNetworkMember(state.networkId, state.userId);\n if (!isMember) {\n return {\n readResult: {\n networkId: state.networkId,\n count: 0,\n members: [],\n },\n error: \"Network not found or you are not a member.\",\n };\n }\n\n const members = await this.database.getNetworkMembersForMember(state.networkId, state.userId);\n return {\n readResult: {\n networkId: state.networkId,\n count: members.length,\n members: members.map((m) => ({\n userId: m.userId,\n name: m.name,\n avatar: m.avatar,\n permissions: m.permissions,\n intentCount: m.intentCount,\n joinedAt: m.joinedAt,\n })),\n },\n };\n } catch (err) {\n logger.error(\"List members failed\", { error: err });\n if (err instanceof Error && err.message === \"Access denied: Not a member of this network\") {\n return { error: \"You must be a member of that network.\" };\n }\n return { error: \"Failed to fetch network members.\" };\n }\n });\n };\n\n /**\n * Remove Member Node: Remove a member from a network (owner only).\n */\n const removeMemberNode = async (state: typeof NetworkMembershipGraphState.State) => {\n return timed(\"NetworkMembershipGraph.removeMember\", async () => {\n logger.verbose(\"Remove member from network\", {\n userId: state.userId,\n networkId: state.networkId,\n targetUserId: state.targetUserId,\n });\n\n if (!state.targetUserId) {\n return { mutationResult: { success: false, error: \"targetUserId is required.\" } };\n }\n\n // Cannot remove yourself via this flow\n if (state.targetUserId === state.userId) {\n return { mutationResult: { success: false, error: \"You cannot remove yourself. Use 'leave network' instead.\" } };\n }\n\n try {\n const isOwner = await this.database.isIndexOwner(state.networkId, state.userId);\n if (!isOwner) {\n return { mutationResult: { success: false, error: \"Only the network owner can remove members.\" } };\n }\n\n const result = await this.database.removeMemberFromIndex(state.networkId, state.targetUserId);\n\n if (result.wasOwner) {\n return { mutationResult: { success: false, error: \"Cannot remove the network owner.\" } };\n }\n if (result.notMember) {\n return { mutationResult: { success: false, error: \"User is not a member of this network.\" } };\n }\n if (!result.success) {\n return { mutationResult: { success: false, error: \"Failed to remove member.\" } };\n }\n\n return {\n mutationResult: {\n success: true,\n message: \"Member removed from the index.\",\n },\n };\n } catch (err) {\n logger.error(\"Remove member failed\", { error: err });\n return { mutationResult: { success: false, error: \"Failed to remove member.\" } };\n }\n });\n };\n\n // --- CONDITIONAL ROUTING ---\n\n const routeByMode = (state: typeof NetworkMembershipGraphState.State): string => {\n switch (state.operationMode) {\n case 'create': return 'add_member';\n case 'read': return 'list_members';\n case 'delete': return 'remove_member';\n default: return 'list_members';\n }\n };\n\n // --- GRAPH ASSEMBLY ---\n\n const workflow = new StateGraph(NetworkMembershipGraphState)\n .addNode(\"add_member\", addMemberNode)\n .addNode(\"list_members\", listMembersNode)\n .addNode(\"remove_member\", removeMemberNode)\n .addConditionalEdges(START, routeByMode, {\n add_member: \"add_member\",\n list_members: \"list_members\",\n remove_member: \"remove_member\",\n })\n .addEdge(\"add_member\", END)\n .addEdge(\"list_members\", END)\n .addEdge(\"remove_member\", END);\n\n return workflow.compile();\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"membership.state.d.ts","sourceRoot":"/","sources":["network/membership/membership.state.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B;IAGtC,+DAA+D;;;;;;IAG/D,iDAAiD;;;;;;IAGjD,sBAAsB;;IAQtB,uDAAuD;;IAQvD,6CAA6C;;mBAEhC,MAAM;eACV,MAAM;iBACJ,KAAK,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;YACf,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;YACtB,WAAW,EAAE,MAAM,EAAE,CAAC;YACtB,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,EAAE,IAAI,CAAC;SAChB,CAAC;;mBATS,MAAM;eACV,MAAM;iBACJ,KAAK,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;YACf,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;YACtB,WAAW,EAAE,MAAM,EAAE,CAAC;YACtB,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,EAAE,IAAI,CAAC;SAChB,CAAC;;mBATS,MAAM;eACV,MAAM;iBACJ,KAAK,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;YACf,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;YACtB,WAAW,EAAE,MAAM,EAAE,CAAC;YACtB,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,EAAE,IAAI,CAAC;SAChB,CAAC;;IAMJ,sCAAsC;;iBAE3B,OAAO;kBACN,MAAM;gBACR,MAAM;;iBAFL,OAAO;kBACN,MAAM;gBACR,MAAM;;iBAFL,OAAO;kBACN,MAAM;gBACR,MAAM;;IAMhB,iDAAiD;;EAKjD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"membership.state.js","sourceRoot":"/","sources":["network/membership/membership.state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,UAAU,CAAC,IAAI,CAAC;IACzD,uDAAuD;IAEvD,+DAA+D;IAC/D,MAAM,EAAE,CAAA,UAAkB,CAAA;IAE1B,iDAAiD;IACjD,SAAS,EAAE,CAAA,UAAkB,CAAA;IAE7B,sBAAsB;IACtB,aAAa,EAAE,UAAU,CAA+B;QACtD,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAe;KAC/B,CAAC;IAEF,+BAA+B;IAE/B,uDAAuD;IACvD,YAAY,EAAE,UAAU,CAAqB;QAC3C,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI;QAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;KACzB,CAAC;IAEF,kBAAkB;IAElB,6CAA6C;IAC7C,UAAU,EAAE,UAAU,CAWP;QACb,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI;QAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;KACzB,CAAC;IAEF,sCAAsC;IACtC,cAAc,EAAE,UAAU,CAIX;QACb,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI;QAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;KACzB,CAAC;IAEF,iDAAiD;IACjD,KAAK,EAAE,UAAU,CAAgB;QAC/B,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI;QAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;KACpB,CAAC;CACH,CAAC,CAAC","sourcesContent":["import { Annotation } from \"@langchain/langgraph\";\n\n/**\n * Network Membership Graph State.\n * Handles CRUD operations for network memberships (index_members table).\n *\n * Flow:\n * START → routerNode → {addMemberNode | listMembersNode | removeMemberNode} → END\n */\nexport const NetworkMembershipGraphState = Annotation.Root({\n // --- Core Inputs (from ChatGraph via ToolContext) ---\n\n /** User performing the action (the actor). Always required. */\n userId: Annotation<string>,\n\n /** Target index. Required for all operations. */\n networkId: Annotation<string>,\n\n /** Operation mode. */\n operationMode: Annotation<'create' | 'read' | 'delete'>({\n reducer: (curr, next) => next ?? curr,\n default: () => 'read' as const,\n }),\n\n // --- Mode-Specific Inputs ---\n\n /** For create/delete: the user being added/removed. */\n targetUserId: Annotation<string | undefined>({\n reducer: (_, next) => next,\n default: () => undefined,\n }),\n\n // --- Outputs ---\n\n /** Output for read mode: list of members. */\n readResult: Annotation<{\n networkId: string;\n count: number;\n members: Array<{\n userId: string;\n name: string;\n avatar: string | null;\n permissions: string[];\n intentCount: number;\n joinedAt: Date;\n }>;\n } | undefined>({\n reducer: (_, next) => next,\n default: () => undefined,\n }),\n\n /** Output for create/delete modes. */\n mutationResult: Annotation<{\n success: boolean;\n message?: string;\n error?: string;\n } | undefined>({\n reducer: (_, next) => next,\n default: () => undefined,\n }),\n\n /** Error message if graph could not complete. */\n error: Annotation<string | null>({\n reducer: (_, next) => next,\n default: () => null,\n }),\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"network.graph.d.ts","sourceRoot":"/","sources":["network/network.graph.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAQlF;;;;;;;;;GASG;AACH,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,oBAAoB;IAE3C,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAmCyD,CAAC;yBACvD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCADqD,CAAC;yBACvD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCADqD,CAAC;yBACvD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCADqD,CAAC;yBACvD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCADqD,CAAC;yBACvD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCADqD,CAAC;yBACvD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCADqD,CAAC;yBACvD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCADqD,CAAC;yBACvD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCADqD,CAAC;yBACvD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqOvB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"network.graph.js","sourceRoot":"/","sources":["network/network.graph.ts"],"names":[],"mappings":"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","sourcesContent":["import { StateGraph, START, END } from \"@langchain/langgraph\";\n\nimport { NetworkGraphDatabase } from \"../shared/interfaces/database.interface.js\";\nimport { protocolLogger } from \"../shared/observability/protocol.logger.js\";\nimport { timed } from \"../shared/observability/performance.js\";\n\nimport { NetworkGraphState } from \"./network.state.js\";\n\nconst logger = protocolLogger(\"NetworkGraphFactory\");\n\n/**\n * Factory class to build and compile the Index (CRUD) Graph.\n *\n * Handles create, read, update, and delete operations for indexes.\n * Membership and intent-network assignment operations are handled by\n * separate graphs (NetworkMembershipGraph and IntentNetworkGraph).\n *\n * Flow:\n * START → routerNode → {createNode | readNode | updateNode | deleteNode} → END\n */\nexport class NetworkGraphFactory {\n constructor(private database: NetworkGraphDatabase) {}\n\n public createGraph() {\n // --- NODE DEFINITIONS ---\n\n /**\n * Read Node: List networks the user belongs to and owns.\n */\n const readNode = async (state: typeof NetworkGraphState.State) => {\n return timed(\"NetworkGraph.read\", async () => {\n logger.verbose(\"Read networks\", { userId: state.userId, networkId: state.networkId, showAll: state.showAll });\n\n // Shared projections for both the scoped and unscoped read paths.\n const projectMembership = (m: Awaited<ReturnType<typeof this.database.getNetworkMemberships>>[number]) => ({\n networkId: m.networkId,\n title: m.networkTitle,\n prompt: m.indexPrompt,\n autoAssign: m.autoAssign,\n isPersonal: m.isPersonal,\n joinedAt: m.joinedAt,\n });\n const projectOwned = (o: Awaited<ReturnType<typeof this.database.getOwnedIndexes>>[number]) => ({\n networkId: o.id,\n title: o.title,\n prompt: o.prompt,\n memberCount: o.memberCount,\n intentCount: o.intentCount,\n joinPolicy: o.permissions.joinPolicy,\n });\n\n try {\n const [allMemberships, ownedIndexes, publicIndexesResult] = await Promise.all([\n this.database.getNetworkMemberships(state.userId),\n this.database.getOwnedIndexes(state.userId),\n this.database.getPublicIndexesNotJoined(state.userId),\n ]);\n\n // If network-scoped and not showAll, return just that index plus the\n // user's personal network (their contacts). The personal network is part\n // of every allowed-network reach calculation for network-bound agents,\n // and a user clicked into a community-scoped\n // chat still owns their contact list — so surfacing it here keeps\n // tools that operate on the personal network (add_contact, list_contacts,\n // import_*_contacts) discoverable. Other community memberships are\n // still hidden, and `publicNetworks` is omitted.\n const scopeToCurrentIndex = state.networkId && !state.showAll;\n if (scopeToCurrentIndex) {\n const networkId = state.networkId!;\n const isMember = await this.database.isNetworkMember(networkId, state.userId);\n if (!isMember) {\n return {\n readResult: {\n memberOf: [],\n owns: [],\n stats: { memberOfCount: 0, ownsCount: 0, scopeNote: \"Network not found or you are not a member.\" },\n },\n };\n }\n const scopedMembership = allMemberships.find((m) => m.networkId === networkId);\n const personalMembership = scopedMembership?.isPersonal\n ? undefined\n : allMemberships.find((m) => m.isPersonal);\n const scopedOwned = ownedIndexes.find((o) => o.id === networkId);\n const personalOwned = personalMembership\n ? ownedIndexes.find((o) => o.id === personalMembership.networkId)\n : undefined;\n const memberOf = [\n ...(scopedMembership ? [projectMembership(scopedMembership)] : []),\n ...(personalMembership ? [projectMembership(personalMembership)] : []),\n ];\n const owns = [\n ...(scopedOwned ? [projectOwned(scopedOwned)] : []),\n ...(personalOwned ? [projectOwned(personalOwned)] : []),\n ];\n return {\n readResult: {\n memberOf,\n owns,\n stats: {\n memberOfCount: memberOf.length,\n ownsCount: owns.length,\n scopeNote: \"Showing current network and your personal network. Use showAll: true for all networks.\",\n },\n },\n };\n }\n\n // Include public networks available to join\n const publicNetworks = publicIndexesResult.networks.map((idx) => ({\n networkId: idx.id,\n title: idx.title,\n prompt: idx.prompt,\n memberCount: idx.memberCount,\n owner: idx.owner,\n }));\n\n return {\n readResult: {\n memberOf: allMemberships.map(projectMembership),\n owns: ownedIndexes.map(projectOwned),\n publicNetworks,\n stats: { memberOfCount: allMemberships.length, ownsCount: ownedIndexes.length, publicNetworksCount: publicNetworks.length },\n },\n };\n } catch (err) {\n logger.error(\"Read networks failed\", { error: err });\n return { error: \"Failed to fetch network information.\" };\n }\n });\n };\n\n /**\n * Create Node: Create a new index and add user as owner.\n */\n const createNode = async (state: typeof NetworkGraphState.State) => {\n return timed(\"NetworkGraph.create\", async () => {\n logger.verbose(\"Create network\", { userId: state.userId, createInput: state.createInput });\n\n if (!state.createInput?.title?.trim()) {\n return { mutationResult: { success: false, error: \"Title is required.\" } };\n }\n\n let createdIndexId: string | undefined;\n try {\n const index = await this.database.createNetwork({\n title: state.createInput.title.trim(),\n prompt: state.createInput.prompt?.trim() || undefined,\n imageUrl: state.createInput.imageUrl ?? undefined,\n joinPolicy: state.createInput.joinPolicy,\n });\n createdIndexId = index.id;\n\n const added = await this.database.addMemberToNetwork(index.id, state.userId, 'owner');\n if (!added.success) {\n logger.error(\"addMemberToNetwork failed; cleaning up orphaned network\", { networkId: index.id });\n try { await this.database.softDeleteNetwork(index.id); } catch {}\n return { mutationResult: { success: false, error: \"Failed to set you as owner. Network was not created.\" } };\n }\n\n return {\n mutationResult: {\n success: true,\n networkId: index.id,\n title: index.title,\n message: `Network \"${index.title}\" created. You are the owner.`,\n },\n };\n } catch (err) {\n logger.error(\"Create network failed\", { error: err });\n if (createdIndexId) {\n try { await this.database.softDeleteNetwork(createdIndexId); } catch {}\n }\n return {\n mutationResult: {\n success: false,\n error: err instanceof Error ? err.message : \"Failed to create network.\",\n },\n };\n }\n });\n };\n\n /**\n * Update Node: Update index settings (owner only).\n */\n const updateNode = async (state: typeof NetworkGraphState.State) => {\n return timed(\"NetworkGraph.update\", async () => {\n const networkId = state.networkId;\n logger.verbose(\"Update index\", { userId: state.userId, networkId, updateInput: state.updateInput });\n\n if (!networkId) {\n return { mutationResult: { success: false, error: \"networkId is required for update.\" } };\n }\n\n try {\n const isOwner = await this.database.isIndexOwner(networkId, state.userId);\n if (!isOwner) {\n return { mutationResult: { success: false, error: \"You can only modify networks you own.\" } };\n }\n\n await this.database.updateIndexSettings(networkId, state.userId, state.updateInput ?? {});\n\n return {\n mutationResult: {\n success: true,\n networkId,\n message: \"Network settings updated.\",\n },\n };\n } catch (err) {\n logger.error(\"Update index failed\", { error: err });\n return { mutationResult: { success: false, error: \"Failed to update network.\" } };\n }\n });\n };\n\n /**\n * Delete Node: Soft-delete a network (owner only, sole member).\n */\n const deleteNode = async (state: typeof NetworkGraphState.State) => {\n return timed(\"NetworkGraph.delete\", async () => {\n const networkId = state.networkId;\n logger.verbose(\"Delete network\", { userId: state.userId, networkId });\n\n if (!networkId) {\n return { mutationResult: { success: false, error: \"networkId is required for delete.\" } };\n }\n\n try {\n const isOwner = await this.database.isIndexOwner(networkId, state.userId);\n if (!isOwner) {\n return { mutationResult: { success: false, error: \"You can only delete networks you own.\" } };\n }\n\n const count = await this.database.getNetworkMemberCount(networkId);\n if (count > 1) {\n return { mutationResult: { success: false, error: \"Cannot delete network with other members. Remove members first.\" } };\n }\n\n await this.database.softDeleteNetwork(networkId);\n\n return {\n mutationResult: {\n success: true,\n networkId,\n message: \"Network deleted.\",\n },\n };\n } catch (err) {\n logger.error(\"Delete network failed\", { error: err });\n return { mutationResult: { success: false, error: \"Failed to delete network.\" } };\n }\n });\n };\n\n // --- CONDITIONAL ROUTING ---\n\n const routeByMode = (state: typeof NetworkGraphState.State): string => {\n switch (state.operationMode) {\n case 'create': return 'create';\n case 'read': return 'read';\n case 'update': return 'update';\n case 'delete': return 'delete_idx';\n default: return 'read';\n }\n };\n\n // --- GRAPH ASSEMBLY ---\n\n const workflow = new StateGraph(NetworkGraphState)\n .addNode(\"read\", readNode)\n .addNode(\"create\", createNode)\n .addNode(\"update\", updateNode)\n .addNode(\"delete_idx\", deleteNode)\n .addConditionalEdges(START, routeByMode, {\n read: \"read\",\n create: \"create\",\n update: \"update\",\n delete_idx: \"delete_idx\",\n })\n .addEdge(\"read\", END)\n .addEdge(\"create\", END)\n .addEdge(\"update\", END)\n .addEdge(\"delete_idx\", END);\n\n return workflow.compile();\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"network.recommender.d.ts","sourceRoot":"/","sources":["network/network.recommender.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,8BAA8B;;;;;;;;;EAOzC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAItF,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,yBAAyB,EAAE,CAAC;CACvC;AAiCD;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAA2C;;IAQxD;;;;;OAKG;IAEU,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;CAoC9F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"network.recommender.js","sourceRoot":"/","sources":["network/network.recommender.ts"],"names":[],"mappings":"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","sourcesContent":["import { HumanMessage, SystemMessage } from \"@langchain/core/messages\";\nimport { z } from \"zod\";\n\nimport { log } from \"../shared/observability/log.js\";\nimport { Timed } from \"../shared/observability/performance.js\";\nimport { createStructuredModel } from \"../shared/agent/model.config.js\";\nimport { invokeWithAbortSignal } from \"../shared/agent/model-signal.js\";\n\n// ─── Response schema ───────────────────────────────────────────────────────────\n\nexport const NetworkRecommenderOutputSchema = z.object({\n rankedNetworkIds: z\n .array(z.string())\n .describe(\"Network IDs ordered from most to least relevant for this user. Include all provided network IDs.\"),\n reasoning: z\n .string()\n .describe(\"One-sentence explanation of the top recommendation.\"),\n});\n\nexport type NetworkRecommenderOutput = z.infer<typeof NetworkRecommenderOutputSchema>;\n\n// ─── Input types ──────────────────────────────────────────────────────────────\n\nexport interface NetworkRecommenderNetwork {\n networkId: string;\n renderedContext: string;\n}\n\nexport interface NetworkRecommenderInput {\n /** The user's global user_context paragraph (profile-replacing identity text). */\n userContext: string;\n networks: NetworkRecommenderNetwork[];\n}\n\n// ─── Logger ───────────────────────────────────────────────────────────────────\n\nconst logger = log.lib.from(\"NetworkRecommender\");\nconst invokeLog = log.lib.from(\"NetworkRecommender:invoke\");\n\n// ─── System prompt ────────────────────────────────────────────────────────────\n\nconst systemPrompt = `\nYou are a community matching agent for a social discovery network.\n\nTASK:\nGiven a user's profile and a list of communities, rank the communities from most to least relevant for this user.\nReturn ALL provided community IDs in ranked order.\n\nINPUTS:\n1. User Context: a synthesized paragraph describing the user (background, interests, skills, location, goals).\n2. Communities: a list of communities, each with an ID and a description.\n\nSCORING FACTORS (in priority order):\n1. Thematic alignment — do the community's topics match the user's interests and skills?\n2. Geographic relevance — does the user's location match the community's focus (if any)?\n3. Professional fit — does the community's purpose match the user's professional background?\n\nOUTPUT RULES:\n- Return ALL community IDs in your ranked list (no omissions).\n- If context is insufficient to differentiate, preserve original order.\n- Keep reasoning brief (one sentence about the top recommendation).\n`;\n\n// ─── Agent class ──────────────────────────────────────────────────────────────\n\n/**\n * LLM-based agent that ranks public communities against a user's profile.\n * Used during onboarding step 6 to surface the most relevant communities first.\n *\n * Follows the IntentIndexer pattern: `withStructuredOutput`, `invokeWithAbortSignal`,\n * null-on-error fallback. `createModel` is called inside the constructor (not at\n * module level) so that importing this file does not require OPENROUTER_API_KEY to\n * be set — tests that import `createNetworkTools` without a live LLM env are unaffected.\n */\nexport class NetworkRecommender {\n private model: ReturnType<typeof createStructuredModel>;\n\n constructor() {\n this.model = createStructuredModel(\"networkRecommender\", NetworkRecommenderOutputSchema, {\n name: \"network_recommender\",\n });\n }\n\n /**\n * Ranks the provided networks by relevance to the user's profile.\n *\n * @param input - User profile and list of networks with rendered context.\n * @returns Ranked network IDs and one-sentence reasoning, or null on error.\n */\n @Timed()\n public async invoke(input: NetworkRecommenderInput): Promise<NetworkRecommenderOutput | null> {\n if (input.networks.length === 0) return null;\n\n invokeLog.verbose(\"Ranking communities\", {\n networkCount: input.networks.length,\n });\n\n const networkList = input.networks\n .map((n, i) => `### Community ${i + 1} (ID: ${n.networkId})\\n${n.renderedContext}`)\n .join(\"\\n\\n\");\n\n const userSection = input.userContext.trim() || \"(not provided)\";\n\n const prompt = `## User Context\\n${userSection}\\n\\n## Communities to Rank\\n${networkList}`;\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 parsed = NetworkRecommenderOutputSchema.safeParse(result);\n if (!parsed.success) {\n logger.error(\"Schema validation failed\", { error: parsed.error });\n return null;\n }\n invokeLog.verbose(\"Ranking complete\", {\n top: parsed.data.rankedNetworkIds[0],\n });\n return parsed.data;\n } catch (error) {\n logger.error(\"Error during execution\", { error });\n return null;\n }\n }\n}\n"]}
|