@indexnetwork/protocol 22.0.0-rc.498.1 → 64.0.0-rc.604.2
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 +1841 -0
- package/IMPLEMENTATION.md +140 -181
- package/README.md +16 -20
- package/STABILITY.md +16 -11
- package/dist/{intents/intent.module.d.ts → capabilities/intents.d.ts} +182 -192
- package/dist/capabilities/intents.js +88 -0
- package/dist/capabilities/negotiations.d.ts +17 -0
- package/dist/capabilities/negotiations.js +16 -0
- package/dist/{networks/network.module.d.ts → capabilities/networks.d.ts} +33 -169
- package/dist/{networks/network.module.js → capabilities/networks.js} +6 -17
- package/dist/index.d.ts +57 -132
- package/dist/index.js +41 -100
- package/dist/internal/agents/agent.repository.port.d.ts +59 -0
- package/dist/internal/agents/agent.repository.port.js +7 -0
- package/dist/internal/agents/agent.types.d.ts +35 -0
- package/dist/{agents → internal/agents}/agent.types.js +1 -6
- package/dist/{intents → internal/intents}/graph/intent.graph.d.ts +142 -151
- package/dist/{intents → internal/intents}/graph/intent.graph.execute.d.ts +5 -1
- package/dist/{intents → internal/intents}/graph/intent.graph.execute.js +165 -46
- package/dist/internal/intents/graph/intent.graph.infer.d.ts +78 -0
- package/dist/internal/intents/graph/intent.graph.infer.js +122 -0
- package/dist/internal/intents/graph/intent.graph.js +108 -0
- package/dist/{intents → internal/intents}/graph/intent.graph.reconcile.d.ts +18 -9
- package/dist/internal/intents/graph/intent.graph.reconcile.js +173 -0
- package/dist/internal/intents/graph/intent.graph.shared.d.ts +55 -0
- package/dist/{intents → internal/intents}/graph/intent.graph.shared.js +25 -70
- package/dist/{intents → internal/intents}/graph/intent.graph.state.d.ts +96 -32
- package/dist/{intents → internal/intents}/graph/intent.graph.state.js +42 -31
- package/dist/internal/intents/intent.admission.d.ts +16 -0
- package/dist/internal/intents/intent.admission.js +30 -0
- package/dist/{intents → internal/intents}/intent.inferrer.d.ts +1 -40
- package/dist/{intents → internal/intents}/intent.inferrer.js +13 -49
- package/dist/internal/intents/intent.preparer.d.ts +52 -0
- package/dist/internal/intents/intent.preparer.js +87 -0
- package/dist/{intents → internal/intents}/intent.verifier.d.ts +3 -36
- package/dist/{intents → internal/intents}/intent.verifier.js +0 -17
- package/dist/{networks → internal/networks}/indexer.graph.d.ts +15 -200
- package/dist/{networks → internal/networks}/indexer.graph.js +19 -128
- package/dist/{networks → internal/networks}/indexer.state.d.ts +8 -63
- package/dist/internal/networks/indexer.state.js +70 -0
- package/dist/{networks → internal/networks}/membership.graph.d.ts +6 -6
- package/dist/{networks → internal/networks}/membership.graph.js +3 -3
- package/dist/{networks → internal/networks}/membership.state.d.ts +2 -2
- package/dist/{networks → internal/networks}/membership.state.js +2 -2
- package/dist/{networks → internal/networks}/network.graph.d.ts +9 -22
- package/dist/{networks → internal/networks}/network.graph.js +13 -27
- package/dist/{networks → internal/networks}/network.recommender.d.ts +2 -2
- package/dist/{networks → internal/networks}/network.recommender.js +2 -2
- package/dist/{networks → internal/networks}/network.state.d.ts +4 -7
- package/dist/{networks → internal/networks}/network.state.js +4 -4
- package/dist/internal/opportunities/negotiation-context.loader.d.ts +26 -0
- package/dist/internal/opportunities/negotiation-context.loader.js +36 -0
- package/dist/{opportunities → internal/opportunities}/opportunity.actor.d.ts +1 -1
- package/dist/{opportunities → internal/opportunities}/opportunity.actor.js +7 -1
- package/dist/internal/opportunities/opportunity.counterparties.d.ts +17 -0
- package/dist/internal/opportunities/opportunity.counterparties.js +19 -0
- package/dist/internal/opportunities/opportunity.events.d.ts +38 -0
- package/dist/internal/opportunities/opportunity.events.js +94 -0
- package/dist/{opportunities → internal/opportunities}/opportunity.feed-selection.d.ts +3 -9
- package/dist/internal/opportunities/opportunity.feed-selection.js +40 -0
- package/dist/internal/opportunities/opportunity.graph.modes.d.ts +39 -0
- package/dist/internal/opportunities/opportunity.graph.modes.js +138 -0
- package/dist/{opportunities → internal/opportunities}/opportunity.labels.d.ts +2 -3
- package/dist/internal/opportunities/opportunity.labels.js +9 -0
- package/dist/{opportunities → internal/opportunities}/opportunity.presentation.d.ts +17 -86
- package/dist/{opportunities → internal/opportunities}/opportunity.presentation.js +54 -447
- package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.d.ts +2 -2
- package/dist/internal/opportunities/opportunity.utils.d.ts +105 -0
- package/dist/internal/opportunities/opportunity.utils.js +165 -0
- package/dist/{opportunities → internal/opportunities}/radar/radar.graph.d.ts +17 -17
- package/dist/{opportunities → internal/opportunities}/radar/radar.graph.js +41 -161
- package/dist/{opportunities → internal/opportunities}/radar/radar.state.d.ts +4 -11
- package/dist/{shared → internal/shared}/agent/model-signal.d.ts +1 -1
- package/dist/{shared → internal/shared}/agent/model-signal.js +1 -1
- package/dist/{shared → internal/shared}/agent/model.config.d.ts +28 -86
- package/dist/{shared → internal/shared}/agent/model.config.js +58 -69
- package/dist/internal/shared/agent/model.resolver.d.ts +33 -0
- package/dist/{shared → internal/shared}/agent/model.resolver.js +18 -33
- package/dist/internal/shared/agent/scope.d.ts +20 -0
- package/dist/internal/shared/agent/scope.js +24 -0
- package/dist/internal/shared/assignment/network-assignment.policy.d.ts +23 -0
- package/dist/internal/shared/assignment/network-assignment.policy.js +28 -0
- package/dist/{shared → internal/shared}/observability/log.d.ts +3 -6
- package/dist/{shared → internal/shared}/observability/log.js +9 -18
- package/dist/{shared → internal/shared}/observability/protocol.logger.d.ts +1 -1
- package/dist/{shared → internal/shared}/observability/protocol.logger.js +1 -1
- package/dist/internal/shared/observability/request-context.d.ts +29 -0
- package/dist/internal/shared/observability/request-context.js +17 -0
- package/dist/{shared → internal/shared}/utils/social-label.d.ts +2 -2
- package/dist/{shared → internal/shared}/utils/social-label.js +1 -1
- package/dist/platform/database/capabilities.d.ts +59 -0
- package/dist/{shared/interfaces/database.entities.d.ts → platform/database/entities.d.ts} +81 -121
- package/dist/{shared/interfaces/database.identity-queries.d.ts → platform/database/identity-queries.d.ts} +55 -20
- package/dist/platform/database/member-queries.d.ts +55 -0
- package/dist/platform/database/member-queries.js +4 -0
- package/dist/platform/database/negotiation.d.ts +38 -0
- package/dist/{shared/interfaces/database.network-queries.d.ts → platform/database/network-queries.d.ts} +66 -67
- package/dist/platform/database/network-queries.js +4 -0
- package/dist/{shared/interfaces/database.opportunity-queries.d.ts → platform/database/opportunity-queries.d.ts} +25 -109
- package/dist/{shared/interfaces/database.port.d.ts → platform/database/port.d.ts} +52 -117
- package/dist/{shared/interfaces/database.port.js → platform/database/port.js} +3 -5
- package/dist/platform/database.d.ts +23 -0
- package/dist/{shared/interfaces/database.interface.js → platform/database.js} +1 -1
- package/dist/{shared/interfaces/cache.interface.d.ts → platform/discovery/cache.d.ts} +2 -4
- package/dist/{shared/interfaces/cache.interface.js → platform/discovery/cache.js} +1 -1
- package/dist/platform/discovery/embedder.d.ts +31 -0
- package/dist/platform/runtime/errors.d.ts +6 -0
- package/dist/platform/runtime/errors.js +9 -0
- package/dist/platform/runtime/follow-up.d.ts +36 -0
- package/dist/platform/runtime/follow-up.js +4 -0
- package/dist/platform/runtime/observability.d.ts +34 -0
- package/dist/protocol/core.d.ts +11 -0
- package/dist/protocol/discovery.rules.d.ts +21 -0
- package/dist/protocol/discovery.rules.js +29 -0
- package/dist/protocol/negotiation.constants.d.ts +3 -0
- package/dist/protocol/negotiation.constants.js +3 -0
- package/dist/protocol/negotiation.rules.d.ts +73 -0
- package/dist/protocol/negotiation.rules.js +68 -0
- package/dist/protocol/protocol.prompt.d.ts +13 -0
- package/dist/protocol/protocol.prompt.js +190 -0
- package/dist/{shared → protocol}/schemas/discovery-question.schema.d.ts +13 -13
- package/dist/{shared → protocol}/schemas/discovery-question.schema.js +2 -2
- package/dist/{shared → protocol}/schemas/identity.schema.d.ts +4 -4
- package/dist/{shared → protocol}/schemas/identity.schema.js +4 -4
- package/dist/{shared → protocol}/schemas/network-assignment.schema.d.ts +11 -20
- package/dist/{shared → protocol}/schemas/network-assignment.schema.js +2 -9
- package/dist/protocol/schemas/underspecification.schema.d.ts +9 -0
- package/dist/protocol/schemas/underspecification.schema.js +12 -0
- package/package.json +7 -15
- package/dist/agents/agent.dispatcher.port.d.ts +0 -25
- package/dist/agents/agent.module.d.ts +0 -19
- package/dist/agents/agent.module.js +0 -11
- package/dist/agents/agent.repository.port.d.ts +0 -118
- package/dist/agents/agent.repository.port.js +0 -10
- package/dist/agents/agent.tools.d.ts +0 -16
- package/dist/agents/agent.tools.js +0 -351
- package/dist/agents/agent.tools.port.d.ts +0 -22
- package/dist/agents/agent.tools.port.js +0 -18
- package/dist/agents/agent.types.d.ts +0 -76
- package/dist/chat/chat-streaming.types.d.ts +0 -618
- package/dist/chat/chat-streaming.types.js +0 -297
- package/dist/chat/chat.agent.d.ts +0 -292
- package/dist/chat/chat.agent.js +0 -1010
- package/dist/chat/chat.graph.d.ts +0 -424
- package/dist/chat/chat.graph.js +0 -257
- package/dist/chat/chat.interrupt.classifier.d.ts +0 -25
- package/dist/chat/chat.interrupt.classifier.js +0 -64
- package/dist/chat/chat.persona.d.ts +0 -39
- package/dist/chat/chat.prompt.d.ts +0 -4
- package/dist/chat/chat.prompt.js +0 -12
- package/dist/chat/chat.prompt.modules.d.ts +0 -30
- package/dist/chat/chat.prompt.modules.js +0 -40
- package/dist/chat/chat.question-dedup.d.ts +0 -14
- package/dist/chat/chat.question-dedup.js +0 -17
- package/dist/chat/chat.state.d.ts +0 -135
- package/dist/chat/chat.state.js +0 -120
- package/dist/chat/chat.streamer.d.ts +0 -64
- package/dist/chat/chat.streamer.js +0 -217
- package/dist/chat/chat.suggester.d.ts +0 -23
- package/dist/chat/chat.suggester.js +0 -95
- package/dist/chat/chat.summarizer.d.ts +0 -20
- package/dist/chat/chat.summarizer.js +0 -97
- package/dist/chat/chat.title.generator.d.ts +0 -19
- package/dist/chat/chat.title.generator.js +0 -66
- package/dist/chat/chat.tools.d.ts +0 -5
- package/dist/chat/chat.tools.js +0 -62
- package/dist/chat/chat.utils.d.ts +0 -41
- package/dist/chat/chat.utils.js +0 -88
- package/dist/chat/negotiator.persona.d.ts +0 -74
- package/dist/chat/negotiator.persona.js +0 -154
- package/dist/chat/negotiator.prompt.d.ts +0 -45
- package/dist/chat/negotiator.prompt.js +0 -160
- package/dist/chat/negotiator.tools.d.ts +0 -42
- package/dist/chat/negotiator.tools.js +0 -134
- package/dist/chat/onboarding.persona.d.ts +0 -28
- package/dist/chat/onboarding.persona.js +0 -86
- package/dist/chat/onboarding.prompt.d.ts +0 -6
- package/dist/chat/onboarding.prompt.js +0 -63
- package/dist/chat/signal.persona.d.ts +0 -47
- package/dist/chat/signal.persona.js +0 -319
- package/dist/chat/signal.prompt.d.ts +0 -39
- package/dist/chat/signal.prompt.js +0 -136
- package/dist/contacts/contact.module.d.ts +0 -8
- package/dist/contacts/contact.module.js +0 -6
- package/dist/contacts/contact.repository.port.d.ts +0 -21
- package/dist/contacts/contact.repository.port.js +0 -12
- package/dist/contacts/contact.tools.d.ts +0 -17
- package/dist/contacts/contact.tools.js +0 -108
- package/dist/contacts/contact.tools.port.d.ts +0 -20
- package/dist/contacts/contact.tools.port.js +0 -16
- package/dist/contacts/contact.types.d.ts +0 -24
- package/dist/contacts/contact.types.js +0 -8
- package/dist/contexts/context.generator.d.ts +0 -95
- package/dist/contexts/context.generator.js +0 -127
- package/dist/contexts/context.module.d.ts +0 -13
- package/dist/contexts/context.module.js +0 -12
- package/dist/contexts/context.tools.port.d.ts +0 -9
- package/dist/discovery/hyde.documents.d.ts +0 -9
- package/dist/discovery/hyde.documents.js +0 -49
- package/dist/discovery/hyde.env.d.ts +0 -8
- package/dist/discovery/hyde.env.js +0 -9
- package/dist/discovery/hyde.frame.d.ts +0 -150
- package/dist/discovery/hyde.frame.js +0 -107
- package/dist/discovery/hyde.generator.d.ts +0 -38
- package/dist/discovery/hyde.generator.js +0 -103
- package/dist/discovery/hyde.graph.d.ts +0 -209
- package/dist/discovery/hyde.graph.js +0 -482
- package/dist/discovery/hyde.state.d.ts +0 -70
- package/dist/discovery/hyde.state.js +0 -85
- package/dist/discovery/hyde.strategies.d.ts +0 -17
- package/dist/discovery/hyde.strategies.js +0 -34
- package/dist/discovery/hyde.validator.d.ts +0 -78
- package/dist/discovery/hyde.validator.js +0 -48
- package/dist/discovery/index.d.ts +0 -26
- package/dist/discovery/index.js +0 -19
- package/dist/discovery/lens.inferrer.d.ts +0 -214
- package/dist/discovery/lens.inferrer.js +0 -152
- package/dist/enrichment/enrichment.generator.d.ts +0 -68
- package/dist/enrichment/enrichment.generator.js +0 -95
- package/dist/enrichment/enrichment.graph.d.ts +0 -544
- package/dist/enrichment/enrichment.graph.js +0 -695
- package/dist/enrichment/enrichment.state.d.ts +0 -141
- package/dist/enrichment/enrichment.state.js +0 -115
- package/dist/enrichment/enrichment.tools.context-read.d.ts +0 -10
- package/dist/enrichment/enrichment.tools.context-read.js +0 -353
- package/dist/enrichment/enrichment.tools.context-write.d.ts +0 -9
- package/dist/enrichment/enrichment.tools.context-write.js +0 -417
- package/dist/enrichment/enrichment.tools.d.ts +0 -13
- package/dist/enrichment/enrichment.tools.helpers.d.ts +0 -139
- package/dist/enrichment/enrichment.tools.helpers.js +0 -234
- package/dist/enrichment/enrichment.tools.js +0 -153
- package/dist/intents/graph/intent.graph.infer.d.ts +0 -44
- package/dist/intents/graph/intent.graph.infer.js +0 -97
- package/dist/intents/graph/intent.graph.js +0 -134
- package/dist/intents/graph/intent.graph.reconcile.js +0 -274
- package/dist/intents/graph/intent.graph.shared.d.ts +0 -68
- package/dist/intents/intake/intake.orchestrator.d.ts +0 -203
- package/dist/intents/intake/intake.orchestrator.js +0 -255
- package/dist/intents/intake/intake.pack.generator.d.ts +0 -57
- package/dist/intents/intake/intake.pack.generator.js +0 -90
- package/dist/intents/intent.clarifier.d.ts +0 -51
- package/dist/intents/intent.clarifier.js +0 -201
- package/dist/intents/intent.indexer.d.ts +0 -82
- package/dist/intents/intent.indexer.js +0 -170
- package/dist/intents/intent.module.js +0 -103
- package/dist/intents/intent.proposal.d.ts +0 -37
- package/dist/intents/intent.proposal.js +0 -14
- package/dist/intents/intent.reconciler.d.ts +0 -105
- package/dist/intents/intent.reconciler.js +0 -186
- package/dist/intents/intent.tools.d.ts +0 -27
- package/dist/intents/intent.tools.js +0 -808
- package/dist/maintenance/maintenance.graph.d.ts +0 -239
- package/dist/maintenance/maintenance.graph.js +0 -199
- package/dist/maintenance/maintenance.state.d.ts +0 -35
- package/dist/maintenance/maintenance.state.js +0 -55
- package/dist/mcp/elicitation.builder.d.ts +0 -53
- package/dist/mcp/elicitation.builder.js +0 -74
- package/dist/mcp/elicitation.dispatcher.d.ts +0 -36
- package/dist/mcp/elicitation.dispatcher.js +0 -86
- package/dist/mcp/mcp.authorization-policy.d.ts +0 -252
- package/dist/mcp/mcp.authorization-policy.js +0 -535
- package/dist/mcp/mcp.server.d.ts +0 -90
- package/dist/mcp/mcp.server.js +0 -631
- package/dist/negotiations/insight.generator.d.ts +0 -31
- package/dist/negotiations/insight.generator.js +0 -105
- package/dist/negotiations/negotiation.agent.d.ts +0 -130
- package/dist/negotiations/negotiation.agent.js +0 -396
- package/dist/negotiations/negotiation.answer-consumption.d.ts +0 -223
- package/dist/negotiations/negotiation.answer-consumption.js +0 -275
- package/dist/negotiations/negotiation.attribution.d.ts +0 -91
- package/dist/negotiations/negotiation.attribution.js +0 -109
- package/dist/negotiations/negotiation.candidates.d.ts +0 -83
- package/dist/negotiations/negotiation.candidates.js +0 -162
- package/dist/negotiations/negotiation.client-dm.d.ts +0 -50
- package/dist/negotiations/negotiation.client-dm.js +0 -66
- package/dist/negotiations/negotiation.consultation-policy.d.ts +0 -95
- package/dist/negotiations/negotiation.consultation-policy.js +0 -159
- package/dist/negotiations/negotiation.deadlock.contracts.d.ts +0 -10
- package/dist/negotiations/negotiation.deadlock.d.ts +0 -87
- package/dist/negotiations/negotiation.deadlock.js +0 -150
- package/dist/negotiations/negotiation.detail-reader.d.ts +0 -94
- package/dist/negotiations/negotiation.detail-reader.js +0 -91
- package/dist/negotiations/negotiation.expected-speaker.d.ts +0 -33
- package/dist/negotiations/negotiation.expected-speaker.js +0 -59
- package/dist/negotiations/negotiation.graph.d.ts +0 -694
- package/dist/negotiations/negotiation.graph.finalize.d.ts +0 -5
- package/dist/negotiations/negotiation.graph.finalize.js +0 -403
- package/dist/negotiations/negotiation.graph.init.d.ts +0 -54
- package/dist/negotiations/negotiation.graph.init.js +0 -256
- package/dist/negotiations/negotiation.graph.js +0 -94
- package/dist/negotiations/negotiation.graph.screen.d.ts +0 -23
- package/dist/negotiations/negotiation.graph.screen.js +0 -108
- package/dist/negotiations/negotiation.graph.shared.d.ts +0 -111
- package/dist/negotiations/negotiation.graph.shared.js +0 -168
- package/dist/negotiations/negotiation.graph.turn.d.ts +0 -134
- package/dist/negotiations/negotiation.graph.turn.js +0 -662
- package/dist/negotiations/negotiation.hermes-contract.d.ts +0 -31
- package/dist/negotiations/negotiation.hermes-contract.js +0 -72
- package/dist/negotiations/negotiation.intent-snapshot-provenance.d.ts +0 -21
- package/dist/negotiations/negotiation.intent-snapshot-provenance.js +0 -28
- package/dist/negotiations/negotiation.lifecycle-narration.d.ts +0 -18
- package/dist/negotiations/negotiation.lifecycle-narration.js +0 -87
- package/dist/negotiations/negotiation.memory.d.ts +0 -65
- package/dist/negotiations/negotiation.memory.js +0 -83
- package/dist/negotiations/negotiation.module.d.ts +0 -36
- package/dist/negotiations/negotiation.module.js +0 -23
- package/dist/negotiations/negotiation.protocol.d.ts +0 -1018
- package/dist/negotiations/negotiation.protocol.js +0 -224
- package/dist/negotiations/negotiation.question-safety.d.ts +0 -52
- package/dist/negotiations/negotiation.question-safety.js +0 -119
- package/dist/negotiations/negotiation.reflect.d.ts +0 -194
- package/dist/negotiations/negotiation.reflect.js +0 -145
- package/dist/negotiations/negotiation.scope.d.ts +0 -41
- package/dist/negotiations/negotiation.scope.js +0 -39
- package/dist/negotiations/negotiation.screen.contracts.d.ts +0 -88
- package/dist/negotiations/negotiation.screen.contracts.js +0 -58
- package/dist/negotiations/negotiation.screen.d.ts +0 -78
- package/dist/negotiations/negotiation.screen.js +0 -112
- package/dist/negotiations/negotiation.stall-gap.d.ts +0 -83
- package/dist/negotiations/negotiation.stall-gap.js +0 -152
- package/dist/negotiations/negotiation.stance.contracts.d.ts +0 -123
- package/dist/negotiations/negotiation.stance.contracts.js +0 -317
- package/dist/negotiations/negotiation.state.d.ts +0 -597
- package/dist/negotiations/negotiation.state.js +0 -286
- package/dist/negotiations/negotiation.summarizer.d.ts +0 -25
- package/dist/negotiations/negotiation.summarizer.js +0 -101
- package/dist/negotiations/negotiation.task-lock-policy.d.ts +0 -10
- package/dist/negotiations/negotiation.task-lock-policy.js +0 -22
- package/dist/negotiations/negotiation.tools.d.ts +0 -18
- package/dist/negotiations/negotiation.tools.js +0 -842
- package/dist/negotiations/negotiation.tools.port.d.ts +0 -17
- package/dist/negotiations/negotiation.turn-cap.d.ts +0 -9
- package/dist/negotiations/negotiation.turn-cap.js +0 -12
- package/dist/networks/indexer.state.js +0 -112
- package/dist/networks/network.tools.d.ts +0 -36
- package/dist/networks/network.tools.js +0 -594
- package/dist/opportunities/delivery-card.cache.d.ts +0 -25
- package/dist/opportunities/delivery-card.cache.js +0 -43
- package/dist/opportunities/discovery.env.d.ts +0 -20
- package/dist/opportunities/discovery.env.js +0 -109
- package/dist/opportunities/discriminator/discriminator.adjustments.d.ts +0 -90
- package/dist/opportunities/discriminator/discriminator.adjustments.js +0 -141
- package/dist/opportunities/discriminator/discriminator.assigner.d.ts +0 -78
- package/dist/opportunities/discriminator/discriminator.assigner.js +0 -153
- package/dist/opportunities/discriminator/discriminator.env.d.ts +0 -103
- package/dist/opportunities/discriminator/discriminator.env.js +0 -103
- package/dist/opportunities/discriminator/discriminator.miner.d.ts +0 -114
- package/dist/opportunities/discriminator/discriminator.miner.js +0 -228
- package/dist/opportunities/discriminator/discriminator.push.d.ts +0 -13
- package/dist/opportunities/discriminator/discriminator.push.js +0 -19
- package/dist/opportunities/discriminator/discriminator.question.d.ts +0 -58
- package/dist/opportunities/discriminator/discriminator.question.js +0 -155
- package/dist/opportunities/discriminator/discriminator.scorer.d.ts +0 -32
- package/dist/opportunities/discriminator/discriminator.scorer.js +0 -105
- package/dist/opportunities/discriminator/discriminator.shadow.d.ts +0 -32
- package/dist/opportunities/discriminator/discriminator.shadow.js +0 -90
- package/dist/opportunities/discriminator/discriminator.types.d.ts +0 -93
- package/dist/opportunities/discriminator/discriminator.types.js +0 -18
- package/dist/opportunities/negotiation-context.loader.d.ts +0 -59
- package/dist/opportunities/negotiation-context.loader.js +0 -90
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.d.ts +0 -43
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.js +0 -44
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.d.ts +0 -24
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.js +0 -188
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.d.ts +0 -26
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.js +0 -112
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.d.ts +0 -19
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.js +0 -61
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.d.ts +0 -191
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.js +0 -18
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.d.ts +0 -34
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.js +0 -91
- package/dist/opportunities/negotiation-summary.builder.d.ts +0 -37
- package/dist/opportunities/negotiation-summary.builder.js +0 -66
- package/dist/opportunities/opportunity.discovery-negotiation-summary.d.ts +0 -14
- package/dist/opportunities/opportunity.discovery-negotiation-summary.js +0 -46
- package/dist/opportunities/opportunity.enricher.d.ts +0 -71
- package/dist/opportunities/opportunity.enricher.js +0 -280
- package/dist/opportunities/opportunity.evaluator.d.ts +0 -289
- package/dist/opportunities/opportunity.evaluator.js +0 -516
- package/dist/opportunities/opportunity.evidence.d.ts +0 -22
- package/dist/opportunities/opportunity.evidence.js +0 -87
- package/dist/opportunities/opportunity.existing-negotiation.d.ts +0 -79
- package/dist/opportunities/opportunity.existing-negotiation.js +0 -118
- package/dist/opportunities/opportunity.feed-selection.js +0 -96
- package/dist/opportunities/opportunity.graph.d.ts +0 -1611
- package/dist/opportunities/opportunity.graph.discovery-strategies.d.ts +0 -109
- package/dist/opportunities/opportunity.graph.discovery-strategies.js +0 -451
- package/dist/opportunities/opportunity.graph.discovery.d.ts +0 -69
- package/dist/opportunities/opportunity.graph.discovery.js +0 -397
- package/dist/opportunities/opportunity.graph.evaluation.d.ts +0 -82
- package/dist/opportunities/opportunity.graph.evaluation.js +0 -608
- package/dist/opportunities/opportunity.graph.js +0 -193
- package/dist/opportunities/opportunity.graph.modes.d.ts +0 -538
- package/dist/opportunities/opportunity.graph.modes.js +0 -538
- package/dist/opportunities/opportunity.graph.negotiate.d.ts +0 -109
- package/dist/opportunities/opportunity.graph.negotiate.js +0 -392
- package/dist/opportunities/opportunity.graph.persist-node.d.ts +0 -93
- package/dist/opportunities/opportunity.graph.persist-node.js +0 -765
- package/dist/opportunities/opportunity.graph.prep.d.ts +0 -150
- package/dist/opportunities/opportunity.graph.prep.js +0 -381
- package/dist/opportunities/opportunity.graph.shared.d.ts +0 -173
- package/dist/opportunities/opportunity.graph.shared.js +0 -199
- package/dist/opportunities/opportunity.introducer-feature.d.ts +0 -2
- package/dist/opportunities/opportunity.introducer-feature.js +0 -4
- package/dist/opportunities/opportunity.introducer.d.ts +0 -77
- package/dist/opportunities/opportunity.introducer.js +0 -99
- package/dist/opportunities/opportunity.labels.js +0 -10
- package/dist/opportunities/opportunity.lifecycle.d.ts +0 -63
- package/dist/opportunities/opportunity.lifecycle.js +0 -181
- package/dist/opportunities/opportunity.module.d.ts +0 -54
- package/dist/opportunities/opportunity.module.js +0 -39
- package/dist/opportunities/opportunity.newborn-stamping.d.ts +0 -41
- package/dist/opportunities/opportunity.newborn-stamping.js +0 -81
- package/dist/opportunities/opportunity.owner-approval.d.ts +0 -118
- package/dist/opportunities/opportunity.owner-approval.js +0 -34
- package/dist/opportunities/opportunity.owner-provenance.d.ts +0 -6
- package/dist/opportunities/opportunity.owner-provenance.js +0 -28
- package/dist/opportunities/opportunity.persist.d.ts +0 -58
- package/dist/opportunities/opportunity.persist.js +0 -145
- package/dist/opportunities/opportunity.persistence-admission.d.ts +0 -39
- package/dist/opportunities/opportunity.persistence-admission.js +0 -59
- package/dist/opportunities/opportunity.state.d.ts +0 -451
- package/dist/opportunities/opportunity.state.js +0 -256
- package/dist/opportunities/opportunity.tools.cards.d.ts +0 -138
- package/dist/opportunities/opportunity.tools.cards.js +0 -212
- package/dist/opportunities/opportunity.tools.d.ts +0 -12
- package/dist/opportunities/opportunity.tools.js +0 -236
- package/dist/opportunities/opportunity.tools.list.d.ts +0 -10
- package/dist/opportunities/opportunity.tools.list.js +0 -489
- package/dist/opportunities/opportunity.tools.port.d.ts +0 -16
- package/dist/opportunities/opportunity.utils.d.ts +0 -217
- package/dist/opportunities/opportunity.utils.js +0 -395
- package/dist/opportunities/outcome/outcome.env.d.ts +0 -60
- package/dist/opportunities/outcome/outcome.env.js +0 -63
- package/dist/opportunities/outcome/outcome.hypotheses.d.ts +0 -29
- package/dist/opportunities/outcome/outcome.hypotheses.js +0 -117
- package/dist/opportunities/outcome/outcome.shadow.d.ts +0 -56
- package/dist/opportunities/outcome/outcome.shadow.js +0 -87
- package/dist/opportunities/outcome/outcome.types.d.ts +0 -110
- package/dist/opportunities/outcome/outcome.types.js +0 -26
- package/dist/opportunities/radar/radar.health.d.ts +0 -31
- package/dist/opportunities/radar/radar.health.js +0 -75
- package/dist/premises/premise.analyzer.d.ts +0 -35
- package/dist/premises/premise.analyzer.js +0 -115
- package/dist/premises/premise.decomposer.d.ts +0 -69
- package/dist/premises/premise.decomposer.js +0 -213
- package/dist/premises/premise.graph.d.ts +0 -345
- package/dist/premises/premise.graph.js +0 -278
- package/dist/premises/premise.indexer.d.ts +0 -35
- package/dist/premises/premise.indexer.js +0 -86
- package/dist/premises/premise.state.d.ts +0 -67
- package/dist/premises/premise.state.js +0 -94
- package/dist/premises/premise.tools.d.ts +0 -3
- package/dist/premises/premise.tools.js +0 -248
- package/dist/questions/question.env.d.ts +0 -27
- package/dist/questions/question.env.js +0 -27
- package/dist/questions/question.input.d.ts +0 -107
- package/dist/questions/question.module.d.ts +0 -30
- package/dist/questions/question.module.js +0 -28
- package/dist/questions/question.schema.d.ts +0 -1529
- package/dist/questions/question.schema.js +0 -420
- package/dist/shared/agent/activity-projection.d.ts +0 -271
- package/dist/shared/agent/activity-projection.js +0 -254
- package/dist/shared/agent/canonical-guidance.d.ts +0 -30
- package/dist/shared/agent/canonical-guidance.js +0 -246
- package/dist/shared/agent/model.resolver.d.ts +0 -48
- package/dist/shared/agent/tool.factory.d.ts +0 -17
- package/dist/shared/agent/tool.factory.js +0 -221
- package/dist/shared/agent/tool.helpers.d.ts +0 -482
- package/dist/shared/agent/tool.helpers.js +0 -232
- package/dist/shared/agent/tool.registry.d.ts +0 -25
- package/dist/shared/agent/tool.registry.js +0 -76
- package/dist/shared/agent/tool.runtime.d.ts +0 -28
- package/dist/shared/agent/tool.runtime.js +0 -194
- package/dist/shared/agent/tool.scope.d.ts +0 -44
- package/dist/shared/agent/tool.scope.js +0 -50
- package/dist/shared/agent/utility.tools.d.ts +0 -15
- package/dist/shared/agent/utility.tools.js +0 -322
- package/dist/shared/assignment/network-assignment.policy.d.ts +0 -61
- package/dist/shared/assignment/network-assignment.policy.js +0 -105
- package/dist/shared/interfaces/agent-dispatcher.interface.d.ts +0 -100
- package/dist/shared/interfaces/agent-dispatcher.interface.js +0 -12
- package/dist/shared/interfaces/auth.interface.d.ts +0 -37
- package/dist/shared/interfaces/auth.interface.js +0 -1
- package/dist/shared/interfaces/chat-message-writer.interface.d.ts +0 -18
- package/dist/shared/interfaces/chat-message-writer.interface.js +0 -1
- package/dist/shared/interfaces/chat-session.interface.d.ts +0 -23
- package/dist/shared/interfaces/chat-session.interface.js +0 -18
- package/dist/shared/interfaces/chat-summary.interface.d.ts +0 -16
- package/dist/shared/interfaces/chat-summary.interface.js +0 -1
- package/dist/shared/interfaces/database.capabilities.d.ts +0 -100
- package/dist/shared/interfaces/database.interface.d.ts +0 -16
- package/dist/shared/interfaces/database.member-queries.d.ts +0 -219
- package/dist/shared/interfaces/database.member-queries.js +0 -4
- package/dist/shared/interfaces/database.negotiation.d.ts +0 -329
- package/dist/shared/interfaces/database.negotiation.js +0 -26
- package/dist/shared/interfaces/database.network-queries.js +0 -4
- package/dist/shared/interfaces/database.opportunity-queries.js +0 -4
- package/dist/shared/interfaces/delivery-ledger.interface.d.ts +0 -40
- package/dist/shared/interfaces/delivery-ledger.interface.js +0 -5
- package/dist/shared/interfaces/embedder.interface.d.ts +0 -92
- package/dist/shared/interfaces/embedder.interface.js +0 -4
- package/dist/shared/interfaces/enrichment-run.interface.d.ts +0 -62
- package/dist/shared/interfaces/enrichment-run.interface.js +0 -1
- package/dist/shared/interfaces/enrichment.interface.js +0 -1
- package/dist/shared/interfaces/negotiation-events.interface.d.ts +0 -77
- package/dist/shared/interfaces/negotiation-events.interface.js +0 -6
- package/dist/shared/interfaces/negotiation-summary.interface.d.ts +0 -25
- package/dist/shared/interfaces/negotiation-summary.interface.js +0 -1
- package/dist/shared/interfaces/negotiator-memory.interface.d.ts +0 -58
- package/dist/shared/interfaces/negotiator-memory.interface.js +0 -11
- package/dist/shared/interfaces/queue.interface.d.ts +0 -23
- package/dist/shared/interfaces/queue.interface.js +0 -4
- package/dist/shared/interfaces/scraper.interface.js +0 -1
- package/dist/shared/interfaces/tool-request-context.interface.d.ts +0 -11
- package/dist/shared/interfaces/tool-request-context.interface.js +0 -1
- package/dist/shared/observability/request-context.d.ts +0 -27
- package/dist/shared/observability/request-context.js +0 -6
- package/dist/shared/schemas/mcp-auth.schema.d.ts +0 -87
- package/dist/shared/schemas/mcp-auth.schema.js +0 -56
- package/dist/shared/schemas/negotiation-digest.schema.d.ts +0 -58
- package/dist/shared/schemas/negotiation-digest.schema.js +0 -38
- package/dist/shared/schemas/negotiation-state.schema.d.ts +0 -343
- package/dist/shared/schemas/negotiation-state.schema.js +0 -81
- package/dist/shared/schemas/question-block.fixture.d.ts +0 -12
- package/dist/shared/schemas/question-block.fixture.js +0 -39
- package/dist/shared/schemas/question-block.schema.d.ts +0 -111
- package/dist/shared/schemas/question-block.schema.js +0 -124
- package/dist/shared/schemas/structured-question.schema.d.ts +0 -66
- package/dist/shared/schemas/structured-question.schema.js +0 -31
- package/dist/shared/schemas/underspecification.schema.d.ts +0 -13
- package/dist/shared/schemas/underspecification.schema.js +0 -16
- /package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.js +0 -0
- /package/dist/{opportunities → internal/opportunities}/radar/radar.state.js +0 -0
- /package/dist/{shared → internal/shared}/network/metadata.renderer.d.ts +0 -0
- /package/dist/{shared → internal/shared}/network/metadata.renderer.js +0 -0
- /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.d.ts +0 -0
- /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.js +0 -0
- /package/dist/{shared → internal/shared}/observability/performance.d.ts +0 -0
- /package/dist/{shared → internal/shared}/observability/performance.js +0 -0
- /package/dist/{shared → internal/shared}/observability/trace.d.ts +0 -0
- /package/dist/{shared → internal/shared}/observability/trace.js +0 -0
- /package/dist/{shared → internal/shared}/utils/claim-safety.d.ts +0 -0
- /package/dist/{shared → internal/shared}/utils/claim-safety.js +0 -0
- /package/dist/{shared → internal/shared}/utils/telegram-handle.d.ts +0 -0
- /package/dist/{shared → internal/shared}/utils/telegram-handle.js +0 -0
- /package/dist/{shared/interfaces/database.capabilities.js → platform/database/capabilities.js} +0 -0
- /package/dist/{shared/interfaces/database.entities.js → platform/database/entities.js} +0 -0
- /package/dist/{shared/interfaces/database.identity-queries.js → platform/database/identity-queries.js} +0 -0
- /package/dist/{agents/agent.dispatcher.port.js → platform/database/negotiation.js} +0 -0
- /package/dist/{chat/chat.persona.js → platform/database/opportunity-queries.js} +0 -0
- /package/dist/{contexts/context.tools.port.js → platform/discovery/embedder.js} +0 -0
- /package/dist/{shared/interfaces/scraper.interface.d.ts → platform/discovery/scraper.d.ts} +0 -0
- /package/dist/{negotiations/negotiation.deadlock.contracts.js → platform/discovery/scraper.js} +0 -0
- /package/dist/{shared/interfaces/enrichment.interface.d.ts → platform/enrichment/ports.d.ts} +0 -0
- /package/dist/{negotiations/negotiation.tools.port.js → platform/enrichment/ports.js} +0 -0
- /package/dist/{opportunities/opportunity.tools.port.js → platform/runtime/observability.js} +0 -0
- /package/dist/{questions/question.input.js → protocol/core.js} +0 -0
- /package/dist/{shared → protocol}/schemas/chat-context.schema.d.ts +0 -0
- /package/dist/{shared → protocol}/schemas/chat-context.schema.js +0 -0
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Opportunity enricher: when creating an opportunity, find overlapping existing
|
|
3
|
-
* opportunities (by non-introducer actor userId), check semantic relatedness, and
|
|
4
|
-
* optionally merge into a single enriched opportunity and expire the old one(s).
|
|
5
|
-
*/
|
|
6
|
-
import { getAbortSignalConfig } from '../shared/agent/model-signal.js';
|
|
7
|
-
import { protocolLogger } from '../shared/observability/protocol.logger.js';
|
|
8
|
-
const logger = protocolLogger('OpportunityEnricher');
|
|
9
|
-
const DEFAULT_SIMILARITY_THRESHOLD = 0.7;
|
|
10
|
-
const MIN_REASONING_LENGTH_FOR_EMBEDDING = 10;
|
|
11
|
-
/**
|
|
12
|
-
* Statuses excluded from the merge-candidate pool by default.
|
|
13
|
-
*
|
|
14
|
-
* - 'accepted': the pair already connected — do NOT fold a new discovery into
|
|
15
|
-
* the historical opp. IND-237 surfaces the existing conversation separately.
|
|
16
|
-
* - 'negotiating': a negotiation is in-flight for this pair; rolling a new
|
|
17
|
-
* candidate into it would blur the outcome of the active turn. Wait for the
|
|
18
|
-
* negotiation to finalize (→ draft/pending/rejected/stalled) first, then
|
|
19
|
-
* enrichment can pick it up on the next pass.
|
|
20
|
-
* - 'expired': already superseded by a later enriched opportunity. Without this
|
|
21
|
-
* exclusion, each enrichment cycle re-merges previously-expired enriched
|
|
22
|
-
* opportunities, compounding their actor arrays into 100+ entries.
|
|
23
|
-
*
|
|
24
|
-
* Exported for callers that want to extend rather than replace the default.
|
|
25
|
-
*/
|
|
26
|
-
export const DEFAULT_ENRICHER_EXCLUDE_STATUSES = ['accepted', 'negotiating', 'expired'];
|
|
27
|
-
/**
|
|
28
|
-
* Cosine similarity between two vectors (0–1).
|
|
29
|
-
*/
|
|
30
|
-
function cosineSimilarity(a, b) {
|
|
31
|
-
if (a.length !== b.length || a.length === 0)
|
|
32
|
-
return 0;
|
|
33
|
-
let dot = 0;
|
|
34
|
-
let normA = 0;
|
|
35
|
-
let normB = 0;
|
|
36
|
-
for (let i = 0; i < a.length; i++) {
|
|
37
|
-
dot += a[i] * b[i];
|
|
38
|
-
normA += a[i] * a[i];
|
|
39
|
-
normB += b[i] * b[i];
|
|
40
|
-
}
|
|
41
|
-
const denom = Math.sqrt(normA) * Math.sqrt(normB);
|
|
42
|
-
if (denom === 0)
|
|
43
|
-
return 0;
|
|
44
|
-
const sim = dot / denom;
|
|
45
|
-
return Math.max(0, Math.min(1, sim));
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Resolve enriched opportunity status from related opportunities' statuses and the incoming status.
|
|
49
|
-
* Priority: accepted > pending > rejected > stalled > draft (only when incoming is draft) > latent.
|
|
50
|
-
* The incoming status is included so we do not wrongly downgrade when the new opportunity has a higher-priority status.
|
|
51
|
-
* When incoming is 'draft' (e.g. from in-chat discovery), we preserve draft so the opportunity stays chat-only and
|
|
52
|
-
* does not appear on the radar view (radar excludes draft).
|
|
53
|
-
* When incoming is NOT draft (e.g. 'latent' from the background broker), existing draft status does NOT contaminate
|
|
54
|
-
* the result — the broker-created opportunity retains its own status and can appear on the radar view.
|
|
55
|
-
*/
|
|
56
|
-
function resolveEnrichedStatus(relatedStatuses, incomingStatus) {
|
|
57
|
-
const statuses = incomingStatus ? [...relatedStatuses, incomingStatus] : relatedStatuses;
|
|
58
|
-
if (statuses.includes('accepted'))
|
|
59
|
-
return 'accepted';
|
|
60
|
-
if (statuses.includes('pending'))
|
|
61
|
-
return 'pending';
|
|
62
|
-
if (statuses.includes('rejected'))
|
|
63
|
-
return 'rejected';
|
|
64
|
-
if (statuses.includes('stalled'))
|
|
65
|
-
return 'stalled';
|
|
66
|
-
if (incomingStatus === 'draft')
|
|
67
|
-
return 'draft';
|
|
68
|
-
return 'latent';
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Extract non-introducer actor userIds from create data.
|
|
72
|
-
*/
|
|
73
|
-
function getNonIntroducerUserIds(data) {
|
|
74
|
-
const ids = data.actors
|
|
75
|
-
.filter((a) => a.role !== 'introducer')
|
|
76
|
-
.map((a) => a.userId);
|
|
77
|
-
return [...new Set(ids)];
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Extract intent IDs from actors.
|
|
81
|
-
*/
|
|
82
|
-
function belongsToOwnedIntent(opportunity, scope) {
|
|
83
|
-
if (opportunity.detection.triggeredBy === scope.triggerIntentId)
|
|
84
|
-
return true;
|
|
85
|
-
return opportunity.actors.some((actor) => actor.userId === scope.ownerUserId && actor.intent === scope.triggerIntentId);
|
|
86
|
-
}
|
|
87
|
-
function getIntentIdsFromActors(actors) {
|
|
88
|
-
const ids = new Set();
|
|
89
|
-
for (const a of actors) {
|
|
90
|
-
if (a.intent)
|
|
91
|
-
ids.add(a.intent);
|
|
92
|
-
}
|
|
93
|
-
return ids;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Check if two opportunities share at least one intent ID.
|
|
97
|
-
*/
|
|
98
|
-
function shareIntentIds(newData, existing) {
|
|
99
|
-
const newIntents = getIntentIdsFromActors(newData.actors);
|
|
100
|
-
const existingIntents = getIntentIdsFromActors(existing.actors);
|
|
101
|
-
for (const id of newIntents) {
|
|
102
|
-
if (existingIntents.has(id))
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Merge actors from new data and existing opportunities: union by (networkId, userId, intent),
|
|
109
|
-
* preserving all unique introducers and preferring newer role on conflict.
|
|
110
|
-
*/
|
|
111
|
-
function mergeActors(newData, existingList) {
|
|
112
|
-
const key = (a) => `${a.networkId}:${a.userId}:${a.intent ?? ''}`;
|
|
113
|
-
const map = new Map();
|
|
114
|
-
// Add all from existing first (older)
|
|
115
|
-
for (const opp of existingList) {
|
|
116
|
-
for (const a of opp.actors) {
|
|
117
|
-
map.set(key(a), a);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
// Add/overwrite with new (newer wins for same key, e.g. role)
|
|
121
|
-
for (const a of newData.actors) {
|
|
122
|
-
map.set(key(a), a);
|
|
123
|
-
}
|
|
124
|
-
return [...map.values()];
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Merge interpretation: single reasoning (new data only), max confidence, merged signals.
|
|
128
|
-
* We use only the new opportunity's reasoning to avoid repetitive concatenation when
|
|
129
|
-
* multiple overlapping opportunities share the same or similar text (e.g. same pair
|
|
130
|
-
* across indexes), which previously produced long duplicated paragraphs in chat cards.
|
|
131
|
-
*/
|
|
132
|
-
function mergeInterpretation(newData, existingList) {
|
|
133
|
-
const reasoning = newData.interpretation.reasoning;
|
|
134
|
-
let maxConf = typeof newData.interpretation.confidence === 'number'
|
|
135
|
-
? newData.interpretation.confidence
|
|
136
|
-
: parseFloat(String(newData.interpretation.confidence ?? 0));
|
|
137
|
-
for (const o of existingList) {
|
|
138
|
-
const c = o.interpretation?.confidence;
|
|
139
|
-
const cNum = typeof c === 'number' ? c : parseFloat(String(c ?? 0));
|
|
140
|
-
if (cNum > maxConf)
|
|
141
|
-
maxConf = cNum;
|
|
142
|
-
}
|
|
143
|
-
const confidence = maxConf;
|
|
144
|
-
const signals = [
|
|
145
|
-
...(newData.interpretation.signals ?? []),
|
|
146
|
-
...existingList.flatMap((o) => o.interpretation?.signals ?? []),
|
|
147
|
-
];
|
|
148
|
-
const seen = new Set();
|
|
149
|
-
const dedupedSignals = signals.filter((s) => {
|
|
150
|
-
const k = `${s.type}:${s.detail ?? ''}`;
|
|
151
|
-
if (seen.has(k))
|
|
152
|
-
return false;
|
|
153
|
-
seen.add(k);
|
|
154
|
-
return true;
|
|
155
|
-
});
|
|
156
|
-
return {
|
|
157
|
-
category: newData.interpretation.category,
|
|
158
|
-
reasoning,
|
|
159
|
-
confidence: typeof confidence === 'string' ? parseFloat(confidence) : confidence,
|
|
160
|
-
signals: dedupedSignals.length > 0 ? dedupedSignals : newData.interpretation.signals,
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Enrich or create: find overlapping opportunities, filter by semantic relatedness
|
|
165
|
-
* using a two-phase approach, merge actors and interpretation into a single
|
|
166
|
-
* CreateOpportunityData, and return the data plus IDs to expire. If no related
|
|
167
|
-
* overlap, return original data unchanged.
|
|
168
|
-
*
|
|
169
|
-
* Phase 1 — Intent check (free, no API call):
|
|
170
|
-
* Shared intent IDs mean the same declared user goal drove both opportunities.
|
|
171
|
-
* This is rare because the IntentReconciler already deduplicates intents per-user
|
|
172
|
-
* upstream, but when it fires it is definitive.
|
|
173
|
-
*
|
|
174
|
-
* Phase 2 — Batched embedding similarity (one API call for all remaining):
|
|
175
|
-
* For opportunities without shared intents, embed all reasoning texts in a single
|
|
176
|
-
* batch call and compare cosine similarity. Cross-user intent comparison (e.g.
|
|
177
|
-
* Alice's "find ML co-founder" vs Bob's "join ML startup") is implicitly handled
|
|
178
|
-
* here since reasoning text synthesizes both users' intents.
|
|
179
|
-
*/
|
|
180
|
-
export async function enrichOrCreate(database, embedder, newData, options) {
|
|
181
|
-
const actorUserIds = getNonIntroducerUserIds(newData);
|
|
182
|
-
if (actorUserIds.length === 0) {
|
|
183
|
-
return { enriched: false, data: newData };
|
|
184
|
-
}
|
|
185
|
-
const excludeStatuses = options?.excludeStatuses ?? DEFAULT_ENRICHER_EXCLUDE_STATUSES;
|
|
186
|
-
const pairOverlaps = await database.findOpportunitiesByActors(actorUserIds, { excludeStatuses });
|
|
187
|
-
const ownedIntentScope = options?.ownedIntentScope;
|
|
188
|
-
const overlapping = ownedIntentScope
|
|
189
|
-
? pairOverlaps.filter((opportunity) => belongsToOwnedIntent(opportunity, ownedIntentScope))
|
|
190
|
-
: pairOverlaps;
|
|
191
|
-
if (ownedIntentScope && pairOverlaps.length > overlapping.length) {
|
|
192
|
-
logger.info('Excluded cross-trigger overlaps from owned-intent enrichment', {
|
|
193
|
-
triggerIntentId: ownedIntentScope.triggerIntentId,
|
|
194
|
-
pairOverlapCount: pairOverlaps.length,
|
|
195
|
-
sameTriggerOverlapCount: overlapping.length,
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
if (overlapping.length === 0) {
|
|
199
|
-
return { enriched: false, data: newData };
|
|
200
|
-
}
|
|
201
|
-
const threshold = options?.similarityThreshold ?? DEFAULT_SIMILARITY_THRESHOLD;
|
|
202
|
-
// Phase 1: Intent-based relatedness (free, strongest signal)
|
|
203
|
-
const related = [];
|
|
204
|
-
const remaining = [];
|
|
205
|
-
for (const opp of overlapping) {
|
|
206
|
-
if (shareIntentIds(newData, opp)) {
|
|
207
|
-
related.push(opp);
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
remaining.push(opp);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
// Phase 2: Batched embedding similarity (one API call for all remaining)
|
|
214
|
-
if (remaining.length > 0) {
|
|
215
|
-
const newReasoning = (newData.interpretation?.reasoning ?? '').trim();
|
|
216
|
-
// Only embed opps where both reasonings are long enough
|
|
217
|
-
const embeddable = [];
|
|
218
|
-
for (const opp of remaining) {
|
|
219
|
-
const existingReasoning = (opp.interpretation?.reasoning ?? '').trim();
|
|
220
|
-
if (newReasoning.length >= MIN_REASONING_LENGTH_FOR_EMBEDDING &&
|
|
221
|
-
existingReasoning.length >= MIN_REASONING_LENGTH_FOR_EMBEDDING) {
|
|
222
|
-
embeddable.push(opp);
|
|
223
|
-
}
|
|
224
|
-
// Short reasoning + no shared intents (Phase 1 missed) → not related
|
|
225
|
-
}
|
|
226
|
-
if (embeddable.length > 0) {
|
|
227
|
-
try {
|
|
228
|
-
const textsToEmbed = [
|
|
229
|
-
newReasoning,
|
|
230
|
-
...embeddable.map((o) => (o.interpretation?.reasoning ?? '').trim()),
|
|
231
|
-
];
|
|
232
|
-
const vectors = (await embedder.generate(textsToEmbed, undefined, getAbortSignalConfig()));
|
|
233
|
-
const newVec = vectors[0];
|
|
234
|
-
if (newVec?.length) {
|
|
235
|
-
for (let i = 0; i < embeddable.length; i++) {
|
|
236
|
-
const existingVec = vectors[i + 1];
|
|
237
|
-
if (existingVec?.length && cosineSimilarity(newVec, existingVec) >= threshold) {
|
|
238
|
-
related.push(embeddable[i]);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
catch (e) {
|
|
244
|
-
logger.warn('Embedding check failed; intent-matched opportunities already captured', { error: e });
|
|
245
|
-
// Phase 1 matches are preserved; remaining opps without shared intents are not related
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
if (related.length === 0) {
|
|
250
|
-
return { enriched: false, data: newData };
|
|
251
|
-
}
|
|
252
|
-
const mergedActors = mergeActors(newData, related);
|
|
253
|
-
const mergedInterpretation = mergeInterpretation(newData, related);
|
|
254
|
-
const enrichedFrom = related.map((o) => o.id);
|
|
255
|
-
const mergedConfidence = typeof mergedInterpretation.confidence === 'number'
|
|
256
|
-
? String(mergedInterpretation.confidence)
|
|
257
|
-
: mergedInterpretation.confidence;
|
|
258
|
-
const enrichedData = {
|
|
259
|
-
...newData,
|
|
260
|
-
detection: {
|
|
261
|
-
...newData.detection,
|
|
262
|
-
source: 'enrichment',
|
|
263
|
-
enrichedFrom,
|
|
264
|
-
},
|
|
265
|
-
actors: mergedActors,
|
|
266
|
-
interpretation: mergedInterpretation,
|
|
267
|
-
confidence: mergedConfidence,
|
|
268
|
-
};
|
|
269
|
-
const resolvedStatus = resolveEnrichedStatus(related.map((o) => o.status), newData.status);
|
|
270
|
-
logger.verbose('Enriched opportunity', {
|
|
271
|
-
enrichedFrom,
|
|
272
|
-
actorCount: mergedActors.length,
|
|
273
|
-
});
|
|
274
|
-
return {
|
|
275
|
-
enriched: true,
|
|
276
|
-
data: enrichedData,
|
|
277
|
-
expiredIds: enrichedFrom,
|
|
278
|
-
resolvedStatus,
|
|
279
|
-
};
|
|
280
|
-
}
|
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
import type { Runnable } from "@langchain/core/runnables";
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
import type { Lens } from "../discovery/index.js";
|
|
4
|
-
import type { OpportunityStatus } from "../shared/interfaces/database.interface.js";
|
|
5
|
-
import type { OpportunityEvidence } from '../shared/schemas/network-assignment.schema.js';
|
|
6
|
-
declare const OpportunitySchema: z.ZodObject<{
|
|
7
|
-
reasoning: z.ZodString;
|
|
8
|
-
score: z.ZodNumber;
|
|
9
|
-
valencyRole: z.ZodEnum<["Agent", "Patient", "Peer"]>;
|
|
10
|
-
sourceId: z.ZodString;
|
|
11
|
-
candidateId: z.ZodString;
|
|
12
|
-
}, "strip", z.ZodTypeAny, {
|
|
13
|
-
reasoning: string;
|
|
14
|
-
score: number;
|
|
15
|
-
sourceId: string;
|
|
16
|
-
valencyRole: "Agent" | "Patient" | "Peer";
|
|
17
|
-
candidateId: string;
|
|
18
|
-
}, {
|
|
19
|
-
reasoning: string;
|
|
20
|
-
score: number;
|
|
21
|
-
sourceId: string;
|
|
22
|
-
valencyRole: "Agent" | "Patient" | "Peer";
|
|
23
|
-
candidateId: string;
|
|
24
|
-
}>;
|
|
25
|
-
export interface EvaluatorEntity {
|
|
26
|
-
userId: string;
|
|
27
|
-
profile: {
|
|
28
|
-
name?: string;
|
|
29
|
-
bio?: string;
|
|
30
|
-
location?: string;
|
|
31
|
-
interests?: string[];
|
|
32
|
-
skills?: string[];
|
|
33
|
-
context?: string;
|
|
34
|
-
};
|
|
35
|
-
intents?: Array<{
|
|
36
|
-
intentId: string;
|
|
37
|
-
payload: string;
|
|
38
|
-
summary?: string;
|
|
39
|
-
}>;
|
|
40
|
-
networkId: string;
|
|
41
|
-
evidenceKey?: string;
|
|
42
|
-
ragScore?: number;
|
|
43
|
-
matchedVia?: string;
|
|
44
|
-
evidence?: OpportunityEvidence[];
|
|
45
|
-
}
|
|
46
|
-
export interface EvaluatorInput {
|
|
47
|
-
/** The user who triggered discovery (for context, not special treatment). */
|
|
48
|
-
discovererId: string;
|
|
49
|
-
/** All relevant entities. In introduction mode, only the people being introduced (no introducer). */
|
|
50
|
-
entities: EvaluatorEntity[];
|
|
51
|
-
/** Existing opportunities for deduplication. */
|
|
52
|
-
existingOpportunities?: string;
|
|
53
|
-
/** When true, DISCOVERER is the introducer; reasoning and actors must be only among ENTITIES. */
|
|
54
|
-
introductionMode?: boolean;
|
|
55
|
-
/** Name of the introducer (for attribution in reasoning when introductionMode is true). */
|
|
56
|
-
introducerName?: string;
|
|
57
|
-
/** Optional hint/context from the introducer about why these people should meet. */
|
|
58
|
-
introductionHint?: string;
|
|
59
|
-
/** Optional discovery query (e.g. from chat). When set, only suggest opportunities where candidates clearly match this request. */
|
|
60
|
-
discoveryQuery?: string;
|
|
61
|
-
/** Pre-rendered network context markdown, keyed by networkId. */
|
|
62
|
-
networkContexts?: Record<string, string>;
|
|
63
|
-
}
|
|
64
|
-
declare const ActorSchema: z.ZodObject<{
|
|
65
|
-
userId: z.ZodString;
|
|
66
|
-
role: z.ZodEnum<["agent", "patient", "peer"]>;
|
|
67
|
-
intentId: z.ZodEffects<z.ZodNullable<z.ZodString>, string | null, string | null>;
|
|
68
|
-
evidenceKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
69
|
-
}, "strip", z.ZodTypeAny, {
|
|
70
|
-
userId: string;
|
|
71
|
-
role: "agent" | "patient" | "peer";
|
|
72
|
-
intentId: string | null;
|
|
73
|
-
evidenceKey?: string | null | undefined;
|
|
74
|
-
}, {
|
|
75
|
-
userId: string;
|
|
76
|
-
role: "agent" | "patient" | "peer";
|
|
77
|
-
intentId: string | null;
|
|
78
|
-
evidenceKey?: string | null | undefined;
|
|
79
|
-
}>;
|
|
80
|
-
declare const _OpportunityWithActorsSchema: z.ZodObject<{
|
|
81
|
-
reasoning: z.ZodString;
|
|
82
|
-
score: z.ZodNumber;
|
|
83
|
-
actors: z.ZodArray<z.ZodObject<{
|
|
84
|
-
userId: z.ZodString;
|
|
85
|
-
role: z.ZodEnum<["agent", "patient", "peer"]>;
|
|
86
|
-
intentId: z.ZodEffects<z.ZodNullable<z.ZodString>, string | null, string | null>;
|
|
87
|
-
evidenceKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
88
|
-
}, "strip", z.ZodTypeAny, {
|
|
89
|
-
userId: string;
|
|
90
|
-
role: "agent" | "patient" | "peer";
|
|
91
|
-
intentId: string | null;
|
|
92
|
-
evidenceKey?: string | null | undefined;
|
|
93
|
-
}, {
|
|
94
|
-
userId: string;
|
|
95
|
-
role: "agent" | "patient" | "peer";
|
|
96
|
-
intentId: string | null;
|
|
97
|
-
evidenceKey?: string | null | undefined;
|
|
98
|
-
}>, "many">;
|
|
99
|
-
}, "strip", z.ZodTypeAny, {
|
|
100
|
-
reasoning: string;
|
|
101
|
-
score: number;
|
|
102
|
-
actors: {
|
|
103
|
-
userId: string;
|
|
104
|
-
role: "agent" | "patient" | "peer";
|
|
105
|
-
intentId: string | null;
|
|
106
|
-
evidenceKey?: string | null | undefined;
|
|
107
|
-
}[];
|
|
108
|
-
}, {
|
|
109
|
-
reasoning: string;
|
|
110
|
-
score: number;
|
|
111
|
-
actors: {
|
|
112
|
-
userId: string;
|
|
113
|
-
role: "agent" | "patient" | "peer";
|
|
114
|
-
intentId: string | null;
|
|
115
|
-
evidenceKey?: string | null | undefined;
|
|
116
|
-
}[];
|
|
117
|
-
}>;
|
|
118
|
-
declare const entityBundleResponseFormat: z.ZodObject<{
|
|
119
|
-
verdicts: z.ZodArray<z.ZodObject<{
|
|
120
|
-
candidateId: z.ZodString;
|
|
121
|
-
accepted: z.ZodBoolean;
|
|
122
|
-
score: z.ZodNumber;
|
|
123
|
-
reasoning: z.ZodString;
|
|
124
|
-
actors: z.ZodArray<z.ZodObject<{
|
|
125
|
-
userId: z.ZodString;
|
|
126
|
-
role: z.ZodEnum<["agent", "patient", "peer"]>;
|
|
127
|
-
intentId: z.ZodEffects<z.ZodNullable<z.ZodString>, string | null, string | null>;
|
|
128
|
-
evidenceKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
129
|
-
}, "strip", z.ZodTypeAny, {
|
|
130
|
-
userId: string;
|
|
131
|
-
role: "agent" | "patient" | "peer";
|
|
132
|
-
intentId: string | null;
|
|
133
|
-
evidenceKey?: string | null | undefined;
|
|
134
|
-
}, {
|
|
135
|
-
userId: string;
|
|
136
|
-
role: "agent" | "patient" | "peer";
|
|
137
|
-
intentId: string | null;
|
|
138
|
-
evidenceKey?: string | null | undefined;
|
|
139
|
-
}>, "many">;
|
|
140
|
-
}, "strip", z.ZodTypeAny, {
|
|
141
|
-
reasoning: string;
|
|
142
|
-
score: number;
|
|
143
|
-
accepted: boolean;
|
|
144
|
-
actors: {
|
|
145
|
-
userId: string;
|
|
146
|
-
role: "agent" | "patient" | "peer";
|
|
147
|
-
intentId: string | null;
|
|
148
|
-
evidenceKey?: string | null | undefined;
|
|
149
|
-
}[];
|
|
150
|
-
candidateId: string;
|
|
151
|
-
}, {
|
|
152
|
-
reasoning: string;
|
|
153
|
-
score: number;
|
|
154
|
-
accepted: boolean;
|
|
155
|
-
actors: {
|
|
156
|
-
userId: string;
|
|
157
|
-
role: "agent" | "patient" | "peer";
|
|
158
|
-
intentId: string | null;
|
|
159
|
-
evidenceKey?: string | null | undefined;
|
|
160
|
-
}[];
|
|
161
|
-
candidateId: string;
|
|
162
|
-
}>, "many">;
|
|
163
|
-
}, "strip", z.ZodTypeAny, {
|
|
164
|
-
verdicts: {
|
|
165
|
-
reasoning: string;
|
|
166
|
-
score: number;
|
|
167
|
-
accepted: boolean;
|
|
168
|
-
actors: {
|
|
169
|
-
userId: string;
|
|
170
|
-
role: "agent" | "patient" | "peer";
|
|
171
|
-
intentId: string | null;
|
|
172
|
-
evidenceKey?: string | null | undefined;
|
|
173
|
-
}[];
|
|
174
|
-
candidateId: string;
|
|
175
|
-
}[];
|
|
176
|
-
}, {
|
|
177
|
-
verdicts: {
|
|
178
|
-
reasoning: string;
|
|
179
|
-
score: number;
|
|
180
|
-
accepted: boolean;
|
|
181
|
-
actors: {
|
|
182
|
-
userId: string;
|
|
183
|
-
role: "agent" | "patient" | "peer";
|
|
184
|
-
intentId: string | null;
|
|
185
|
-
evidenceKey?: string | null | undefined;
|
|
186
|
-
}[];
|
|
187
|
-
candidateId: string;
|
|
188
|
-
}[];
|
|
189
|
-
}>;
|
|
190
|
-
export type EvaluatorActor = z.infer<typeof ActorSchema>;
|
|
191
|
-
export type EvaluatedOpportunityWithActors = z.infer<typeof _OpportunityWithActorsSchema>;
|
|
192
|
-
export type EvaluatorOutputBundle = z.infer<typeof entityBundleResponseFormat>;
|
|
193
|
-
/** Raised only after both bounded attempts return an incomplete evaluator batch. */
|
|
194
|
-
export declare class EvaluatorIncompleteError extends Error {
|
|
195
|
-
constructor();
|
|
196
|
-
}
|
|
197
|
-
type Opportunity = z.infer<typeof OpportunitySchema>;
|
|
198
|
-
export interface CandidateProfile {
|
|
199
|
-
userId: string;
|
|
200
|
-
identity?: {
|
|
201
|
-
name?: string;
|
|
202
|
-
bio?: string;
|
|
203
|
-
location?: string;
|
|
204
|
-
};
|
|
205
|
-
attributes?: {
|
|
206
|
-
interests?: string[];
|
|
207
|
-
skills?: string[];
|
|
208
|
-
};
|
|
209
|
-
narrative?: {
|
|
210
|
-
context?: string;
|
|
211
|
-
};
|
|
212
|
-
score?: number;
|
|
213
|
-
}
|
|
214
|
-
interface OpportunityEvaluatorOptions {
|
|
215
|
-
minScore?: number;
|
|
216
|
-
limit?: number;
|
|
217
|
-
hydeDescription?: string;
|
|
218
|
-
/** Pre-inferred lenses (if not provided, lens inference runs automatically in HyDE graph). */
|
|
219
|
-
lenses?: Lens[];
|
|
220
|
-
existingOpportunities?: string;
|
|
221
|
-
candidates?: CandidateProfile[];
|
|
222
|
-
filter?: Record<string, unknown>;
|
|
223
|
-
initialStatus?: OpportunityStatus;
|
|
224
|
-
/** Optional caller cancellation; does not change retry/fallback policy. */
|
|
225
|
-
signal?: AbortSignal;
|
|
226
|
-
}
|
|
227
|
-
/** Optional test double for entity-bundle model (avoids live LLM in unit tests). */
|
|
228
|
-
export type OpportunityEvaluatorOptionsConstructor = {
|
|
229
|
-
entityBundleModel?: Runnable;
|
|
230
|
-
};
|
|
231
|
-
export declare class OpportunityEvaluator {
|
|
232
|
-
private model;
|
|
233
|
-
private entityBundleModel;
|
|
234
|
-
constructor(options?: OpportunityEvaluatorOptionsConstructor);
|
|
235
|
-
/**
|
|
236
|
-
* Main Entry Point: Batch analysis of candidates.
|
|
237
|
-
*
|
|
238
|
-
* @param sourceProfileContext - The profile context string of the user we are finding opportunities FOR.
|
|
239
|
-
* @param candidates - List of potential matches to evaluate.
|
|
240
|
-
* @param options - Config (minScore, valid types, etc).
|
|
241
|
-
* @returns A sorted list of high-value `Opportunity` objects.
|
|
242
|
-
*/
|
|
243
|
-
invoke(sourceProfileContext: string, candidates: CandidateProfile[], options: OpportunityEvaluatorOptions): Promise<Opportunity[]>;
|
|
244
|
-
/**
|
|
245
|
-
* Analyze a single match pair using the primary Agent model.
|
|
246
|
-
*/
|
|
247
|
-
private analyzeMatch;
|
|
248
|
-
/**
|
|
249
|
-
* Entity-bundle entry point (C3): single LLM call with all entities, returns 0..N opportunities with actors.
|
|
250
|
-
*/
|
|
251
|
-
invokeEntityBundle(input: EvaluatorInput, options?: {
|
|
252
|
-
minScore?: number;
|
|
253
|
-
returnAll?: boolean;
|
|
254
|
-
signal?: AbortSignal;
|
|
255
|
-
}): Promise<EvaluatedOpportunityWithActors[]>;
|
|
256
|
-
/**
|
|
257
|
-
* Factory method to expose the agent as a LangChain tool.
|
|
258
|
-
* Simplified to only accept direct evaluation arguments.
|
|
259
|
-
* PURE: Does not perform any database lookups.
|
|
260
|
-
*/
|
|
261
|
-
static asTool(): import("@langchain/core/tools").DynamicStructuredTool<z.ZodObject<{
|
|
262
|
-
sourceProfileContext: z.ZodString;
|
|
263
|
-
candidatesJson: z.ZodOptional<z.ZodString>;
|
|
264
|
-
minScore: z.ZodOptional<z.ZodNumber>;
|
|
265
|
-
}, "strip", z.ZodTypeAny, {
|
|
266
|
-
sourceProfileContext: string;
|
|
267
|
-
minScore?: number | undefined;
|
|
268
|
-
candidatesJson?: string | undefined;
|
|
269
|
-
}, {
|
|
270
|
-
sourceProfileContext: string;
|
|
271
|
-
minScore?: number | undefined;
|
|
272
|
-
candidatesJson?: string | undefined;
|
|
273
|
-
}>, {
|
|
274
|
-
sourceProfileContext: string;
|
|
275
|
-
minScore?: number | undefined;
|
|
276
|
-
candidatesJson?: string | undefined;
|
|
277
|
-
}, {
|
|
278
|
-
sourceProfileContext: string;
|
|
279
|
-
minScore?: number | undefined;
|
|
280
|
-
candidatesJson?: string | undefined;
|
|
281
|
-
}, {
|
|
282
|
-
reasoning: string;
|
|
283
|
-
score: number;
|
|
284
|
-
sourceId: string;
|
|
285
|
-
valencyRole: "Agent" | "Patient" | "Peer";
|
|
286
|
-
candidateId: string;
|
|
287
|
-
}[], unknown, "opportunity_evaluator">;
|
|
288
|
-
}
|
|
289
|
-
export {};
|