@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,6 +1,6 @@
|
|
|
1
|
-
import type { Opportunity,
|
|
1
|
+
import type { Opportunity, OpportunityDatabase } from '../../platform/database.js';
|
|
2
2
|
/** Narrow persistence read port for authorizing a user-driven opportunity update. */
|
|
3
|
-
export type OpportunityUpdateAdmissionPort = Pick<
|
|
3
|
+
export type OpportunityUpdateAdmissionPort = Pick<OpportunityDatabase, 'getOpportunity'>;
|
|
4
4
|
export interface OpportunityUpdateAdmissionInput {
|
|
5
5
|
opportunityId: string;
|
|
6
6
|
viewerId: string;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates opportunity actors.
|
|
3
|
+
*
|
|
4
|
+
* Rejects self-matches — the same person occupying both sides of a pairing.
|
|
5
|
+
* The evaluator's actor list can collapse onto a single user; downstream
|
|
6
|
+
* readers then garble identity (a greeting rendered in one party's voice while
|
|
7
|
+
* the card shows the viewer "matched with themselves"). Only `userId`-bearing
|
|
8
|
+
* actors are checked; role-only actors (tests) pass. Duplicate rows for one
|
|
9
|
+
* participant are allowed when at least one other distinct participant is
|
|
10
|
+
* present.
|
|
11
|
+
*
|
|
12
|
+
* @param actors - Array of actors with at least a role and optional userId
|
|
13
|
+
* @throws Error when the actor set is invalid
|
|
14
|
+
*/
|
|
15
|
+
export declare function validateOpportunityActors(actors: Array<{
|
|
16
|
+
userId?: string;
|
|
17
|
+
role: string;
|
|
18
|
+
}>): void;
|
|
19
|
+
/**
|
|
20
|
+
* Read-level ACL: whether a user is an actor on the opportunity and may fetch
|
|
21
|
+
* its details.
|
|
22
|
+
*
|
|
23
|
+
* This used to be a four-way rule keyed on role, `latent`, and whether an
|
|
24
|
+
* a third party had vouched. None of that exists any
|
|
25
|
+
* more — an opportunity is born `negotiating` when a principal's agent opens
|
|
26
|
+
* it — so every branch collapsed to the same answer: the actors on a pairing
|
|
27
|
+
* may read it.
|
|
28
|
+
*/
|
|
29
|
+
export declare function canUserSeeOpportunity(actors: Array<{
|
|
30
|
+
userId: string;
|
|
31
|
+
role: string;
|
|
32
|
+
}>, _status: string, userId: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Whether an opportunity should appear on the viewer's radar (actionable =
|
|
35
|
+
* has a pending action for this user).
|
|
36
|
+
*
|
|
37
|
+
* Only `pending` is actionable, and only while the viewer has no `committed` event.
|
|
38
|
+
*
|
|
39
|
+
* The old rules 1-3 were about pre-kickoff states and vouching. Neither
|
|
40
|
+
* exists: a pairing is born `negotiating`, and a negotiating pairing is the
|
|
41
|
+
* agents' to work, not the principal's to action.
|
|
42
|
+
*/
|
|
43
|
+
export declare function isActionableForViewer(actors: Array<{
|
|
44
|
+
userId: string;
|
|
45
|
+
role: string;
|
|
46
|
+
}>, status: string, viewerId: string, committedActorIds?: readonly string[]): boolean;
|
|
47
|
+
/** Feed category for home composition. */
|
|
48
|
+
export type FeedCategory = 'connection' | 'expired';
|
|
49
|
+
/** Soft targets for radar composition. */
|
|
50
|
+
export declare const RADAR_SOFT_TARGETS: {
|
|
51
|
+
readonly connection: 5;
|
|
52
|
+
readonly expired: 2;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Classify an actionable opportunity into a feed category.
|
|
56
|
+
* Assumes the opportunity already passed isActionableForViewer or is expired.
|
|
57
|
+
*
|
|
58
|
+
* @param opp - Opportunity with actors and status
|
|
59
|
+
* @param _viewerId - Unused; retained for call-site compatibility
|
|
60
|
+
* @returns Feed category
|
|
61
|
+
*/
|
|
62
|
+
export declare function classifyOpportunity(opp: {
|
|
63
|
+
actors: Array<{
|
|
64
|
+
userId: string;
|
|
65
|
+
role: string;
|
|
66
|
+
}>;
|
|
67
|
+
status: string;
|
|
68
|
+
}, _viewerId: string): FeedCategory;
|
|
69
|
+
/**
|
|
70
|
+
* Select opportunities for the radar using soft composition targets.
|
|
71
|
+
* Fills each category up to its target, then redistributes unused slots
|
|
72
|
+
* to categories that have more items available. Preserves input order.
|
|
73
|
+
*
|
|
74
|
+
* @param opportunities - Pre-sorted opportunities (by confidence/recency)
|
|
75
|
+
* @param viewerId - The viewing user's ID
|
|
76
|
+
* @returns Composition-balanced subset
|
|
77
|
+
*/
|
|
78
|
+
export declare function selectByComposition<T extends {
|
|
79
|
+
actors: Array<{
|
|
80
|
+
userId: string;
|
|
81
|
+
role: string;
|
|
82
|
+
}>;
|
|
83
|
+
status: string;
|
|
84
|
+
}>(opportunities: T[], viewerId: string): T[];
|
|
85
|
+
/**
|
|
86
|
+
* Deduplicate opportunities so each counterpart appears at most once.
|
|
87
|
+
* Keeps the opportunity with the highest interpretation.confidence per
|
|
88
|
+
* counterpart userId. On ties, the first encountered wins (stable).
|
|
89
|
+
*
|
|
90
|
+
* Counterpart = first actor whose userId !== viewerId.
|
|
91
|
+
* Opportunities without a derivable counterpart pass through undeduped.
|
|
92
|
+
*
|
|
93
|
+
* @param opportunities - Pre-sorted opportunities (e.g. by confidence/recency)
|
|
94
|
+
* @param viewerId - The viewing user's ID
|
|
95
|
+
* @returns Deduped subset preserving original input order among winners
|
|
96
|
+
*/
|
|
97
|
+
export declare function deduplicateByPerson<T extends {
|
|
98
|
+
actors: Array<{
|
|
99
|
+
userId: string;
|
|
100
|
+
role: string;
|
|
101
|
+
}>;
|
|
102
|
+
interpretation?: {
|
|
103
|
+
confidence?: number;
|
|
104
|
+
} | null;
|
|
105
|
+
}>(opportunities: T[], viewerId: string): T[];
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { log } from '../shared/observability/log.js';
|
|
2
|
+
const logger = log.graph.from('SelectByComposition');
|
|
3
|
+
const dedupeByPersonLog = log.graph.from('DeduplicateByPerson');
|
|
4
|
+
/**
|
|
5
|
+
* Validates opportunity actors.
|
|
6
|
+
*
|
|
7
|
+
* Rejects self-matches — the same person occupying both sides of a pairing.
|
|
8
|
+
* The evaluator's actor list can collapse onto a single user; downstream
|
|
9
|
+
* readers then garble identity (a greeting rendered in one party's voice while
|
|
10
|
+
* the card shows the viewer "matched with themselves"). Only `userId`-bearing
|
|
11
|
+
* actors are checked; role-only actors (tests) pass. Duplicate rows for one
|
|
12
|
+
* participant are allowed when at least one other distinct participant is
|
|
13
|
+
* present.
|
|
14
|
+
*
|
|
15
|
+
* @param actors - Array of actors with at least a role and optional userId
|
|
16
|
+
* @throws Error when the actor set is invalid
|
|
17
|
+
*/
|
|
18
|
+
export function validateOpportunityActors(actors) {
|
|
19
|
+
const userIds = actors.filter((a) => a.userId).map((a) => a.userId);
|
|
20
|
+
if (userIds.length > 1 && new Set(userIds).size === 1) {
|
|
21
|
+
throw new Error('An opportunity cannot match a user with themselves (duplicate participant).');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Read-level ACL: whether a user is an actor on the opportunity and may fetch
|
|
26
|
+
* its details.
|
|
27
|
+
*
|
|
28
|
+
* This used to be a four-way rule keyed on role, `latent`, and whether an
|
|
29
|
+
* a third party had vouched. None of that exists any
|
|
30
|
+
* more — an opportunity is born `negotiating` when a principal's agent opens
|
|
31
|
+
* it — so every branch collapsed to the same answer: the actors on a pairing
|
|
32
|
+
* may read it.
|
|
33
|
+
*/
|
|
34
|
+
export function canUserSeeOpportunity(actors, _status, userId) {
|
|
35
|
+
return actors.some((a) => a.userId === userId);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Whether an opportunity should appear on the viewer's radar (actionable =
|
|
39
|
+
* has a pending action for this user).
|
|
40
|
+
*
|
|
41
|
+
* Only `pending` is actionable, and only while the viewer has no `committed` event.
|
|
42
|
+
*
|
|
43
|
+
* The old rules 1-3 were about pre-kickoff states and vouching. Neither
|
|
44
|
+
* exists: a pairing is born `negotiating`, and a negotiating pairing is the
|
|
45
|
+
* agents' to work, not the principal's to action.
|
|
46
|
+
*/
|
|
47
|
+
export function isActionableForViewer(actors, status, viewerId, committedActorIds = []) {
|
|
48
|
+
if (status !== 'pending')
|
|
49
|
+
return false;
|
|
50
|
+
if (!actors.some((actor) => actor.userId === viewerId))
|
|
51
|
+
return false;
|
|
52
|
+
return !committedActorIds.includes(viewerId);
|
|
53
|
+
}
|
|
54
|
+
/** Soft targets for radar composition. */
|
|
55
|
+
export const RADAR_SOFT_TARGETS = {
|
|
56
|
+
// 3 + 2 in a second category before that category was removed. The slots move to
|
|
57
|
+
// connections rather than shrinking the feed: the total a radar can hold is
|
|
58
|
+
// unchanged, and connections are the only kind of card left.
|
|
59
|
+
connection: 5,
|
|
60
|
+
expired: 2,
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Classify an actionable opportunity into a feed category.
|
|
64
|
+
* Assumes the opportunity already passed isActionableForViewer or is expired.
|
|
65
|
+
*
|
|
66
|
+
* @param opp - Opportunity with actors and status
|
|
67
|
+
* @param _viewerId - Unused; retained for call-site compatibility
|
|
68
|
+
* @returns Feed category
|
|
69
|
+
*/
|
|
70
|
+
export function classifyOpportunity(opp, _viewerId) {
|
|
71
|
+
if (opp.status === 'expired')
|
|
72
|
+
return 'expired';
|
|
73
|
+
return 'connection';
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Select opportunities for the radar using soft composition targets.
|
|
77
|
+
* Fills each category up to its target, then redistributes unused slots
|
|
78
|
+
* to categories that have more items available. Preserves input order.
|
|
79
|
+
*
|
|
80
|
+
* @param opportunities - Pre-sorted opportunities (by confidence/recency)
|
|
81
|
+
* @param viewerId - The viewing user's ID
|
|
82
|
+
* @returns Composition-balanced subset
|
|
83
|
+
*/
|
|
84
|
+
export function selectByComposition(opportunities, viewerId) {
|
|
85
|
+
const buckets = { connection: [], expired: [] };
|
|
86
|
+
for (const opp of opportunities) {
|
|
87
|
+
buckets[classifyOpportunity(opp, viewerId)].push(opp);
|
|
88
|
+
}
|
|
89
|
+
const targets = {
|
|
90
|
+
connection: RADAR_SOFT_TARGETS.connection,
|
|
91
|
+
expired: RADAR_SOFT_TARGETS.expired,
|
|
92
|
+
};
|
|
93
|
+
// First pass: fill each category up to its target.
|
|
94
|
+
const selected = {
|
|
95
|
+
connection: buckets.connection.slice(0, targets.connection),
|
|
96
|
+
expired: buckets.expired.slice(0, targets.expired),
|
|
97
|
+
};
|
|
98
|
+
// Second pass: redistribute unused slots, connection before expired.
|
|
99
|
+
let unusedSlots = (targets.connection + targets.expired)
|
|
100
|
+
- (selected.connection.length + selected.expired.length);
|
|
101
|
+
for (const category of ['connection', 'expired']) {
|
|
102
|
+
if (unusedSlots <= 0)
|
|
103
|
+
break;
|
|
104
|
+
const remaining = buckets[category].slice(selected[category].length);
|
|
105
|
+
const take = Math.min(remaining.length, unusedSlots);
|
|
106
|
+
selected[category].push(...remaining.slice(0, take));
|
|
107
|
+
unusedSlots -= take;
|
|
108
|
+
}
|
|
109
|
+
// Within each category, preserve original input order.
|
|
110
|
+
const indexMap = new Map(opportunities.map((opp, i) => [opp, i]));
|
|
111
|
+
const sortByOriginal = (a, b) => (indexMap.get(a) ?? 0) - (indexMap.get(b) ?? 0);
|
|
112
|
+
selected.connection.sort(sortByOriginal);
|
|
113
|
+
selected.expired.sort(sortByOriginal);
|
|
114
|
+
logger.info('Selected opportunities by composition', {
|
|
115
|
+
input: opportunities.length,
|
|
116
|
+
buckets: { connection: buckets.connection.length, expired: buckets.expired.length },
|
|
117
|
+
selected: { connection: selected.connection.length, expired: selected.expired.length },
|
|
118
|
+
});
|
|
119
|
+
return [...selected.connection, ...selected.expired];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Deduplicate opportunities so each counterpart appears at most once.
|
|
123
|
+
* Keeps the opportunity with the highest interpretation.confidence per
|
|
124
|
+
* counterpart userId. On ties, the first encountered wins (stable).
|
|
125
|
+
*
|
|
126
|
+
* Counterpart = first actor whose userId !== viewerId.
|
|
127
|
+
* Opportunities without a derivable counterpart pass through undeduped.
|
|
128
|
+
*
|
|
129
|
+
* @param opportunities - Pre-sorted opportunities (e.g. by confidence/recency)
|
|
130
|
+
* @param viewerId - The viewing user's ID
|
|
131
|
+
* @returns Deduped subset preserving original input order among winners
|
|
132
|
+
*/
|
|
133
|
+
export function deduplicateByPerson(opportunities, viewerId) {
|
|
134
|
+
const bestByCounterpart = new Map();
|
|
135
|
+
const noCounterpart = [];
|
|
136
|
+
for (let i = 0; i < opportunities.length; i++) {
|
|
137
|
+
const opp = opportunities[i];
|
|
138
|
+
const counterpart = opp.actors.find((a) => a.userId !== viewerId);
|
|
139
|
+
if (!counterpart) {
|
|
140
|
+
noCounterpart.push({ opp, index: i });
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const key = counterpart.userId;
|
|
144
|
+
const existing = bestByCounterpart.get(key);
|
|
145
|
+
if (!existing) {
|
|
146
|
+
bestByCounterpart.set(key, { opp, index: i });
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
const newConf = opp.interpretation?.confidence ?? -1;
|
|
150
|
+
const oldConf = existing.opp.interpretation?.confidence ?? -1;
|
|
151
|
+
if (newConf > oldConf) {
|
|
152
|
+
bestByCounterpart.set(key, { opp, index: i });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
const all = [...bestByCounterpart.values(), ...noCounterpart];
|
|
156
|
+
all.sort((a, b) => a.index - b.index);
|
|
157
|
+
const result = all.map((entry) => entry.opp);
|
|
158
|
+
if (result.length < opportunities.length) {
|
|
159
|
+
dedupeByPersonLog.info('Deduped opportunities by person', {
|
|
160
|
+
input: opportunities.length,
|
|
161
|
+
output: result.length,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Radar Graph: Build the opportunity radar view — a flat, presenter-texted
|
|
3
3
|
* list of opportunity cards for a viewer, optionally scoped to one intent.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Flow:
|
|
6
6
|
* loadOpportunities → checkPresenterCache → [generateCardText if misses]
|
|
7
7
|
* → cachePresenterResults → normalizeItems
|
|
8
8
|
*
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
* OpportunityCache. Responses are a flat `items` array; clients bucket by
|
|
11
11
|
* lifecycle status themselves.
|
|
12
12
|
*/
|
|
13
|
-
import type { RadarGraphDatabase, OpportunityStatus } from '
|
|
14
|
-
import type { OpportunityCache } from '
|
|
13
|
+
import type { RadarGraphDatabase, OpportunityStatus } from '../../../platform/database.js';
|
|
14
|
+
import type { OpportunityCache } from '../../../platform/discovery/cache.js';
|
|
15
15
|
import { RadarGraphState, type RadarCardItem, type RadarResponseItem } from './radar.state.js';
|
|
16
16
|
import { OpportunityPresenter } from '../opportunity.presentation.js';
|
|
17
|
-
import type { DebugMetaAgent } from
|
|
17
|
+
import type { DebugMetaAgent } from "../../../protocol/core.js";
|
|
18
18
|
/** Database must satisfy both RadarGraphDatabase and presenter context (getProfile, getActiveIntents, getNetwork, getUser). */
|
|
19
19
|
type RadarGraphDb = RadarGraphDatabase;
|
|
20
20
|
export type RadarGraphInvokeInput = {
|
|
@@ -80,11 +80,11 @@ export declare class RadarGraphFactory {
|
|
|
80
80
|
noCache: boolean;
|
|
81
81
|
presentation: "full" | "skeleton";
|
|
82
82
|
statuses: OpportunityStatus[] | undefined;
|
|
83
|
-
opportunities: import("
|
|
83
|
+
opportunities: import("../../../platform/database.js").Opportunity[];
|
|
84
84
|
cards: RadarCardItem[];
|
|
85
85
|
items: RadarResponseItem[];
|
|
86
86
|
cachedCards: Map<string, RadarCardItem>;
|
|
87
|
-
uncachedOpportunities: import("
|
|
87
|
+
uncachedOpportunities: import("../../../platform/database.js").Opportunity[];
|
|
88
88
|
error: string | undefined;
|
|
89
89
|
meta: {
|
|
90
90
|
totalOpportunities: number;
|
|
@@ -99,11 +99,11 @@ export declare class RadarGraphFactory {
|
|
|
99
99
|
noCache?: boolean | import("@langchain/langgraph").OverwriteValue<boolean> | undefined;
|
|
100
100
|
presentation?: "full" | "skeleton" | import("@langchain/langgraph").OverwriteValue<"full" | "skeleton"> | undefined;
|
|
101
101
|
statuses?: OpportunityStatus[] | import("@langchain/langgraph").OverwriteValue<OpportunityStatus[] | undefined> | undefined;
|
|
102
|
-
opportunities?: import("
|
|
102
|
+
opportunities?: import("../../../platform/database.js").Opportunity[] | import("@langchain/langgraph").OverwriteValue<import("../../../platform/database.js").Opportunity[]> | undefined;
|
|
103
103
|
cards?: RadarCardItem[] | import("@langchain/langgraph").OverwriteValue<RadarCardItem[]> | undefined;
|
|
104
104
|
items?: RadarResponseItem[] | import("@langchain/langgraph").OverwriteValue<RadarResponseItem[]> | undefined;
|
|
105
105
|
cachedCards?: Map<string, RadarCardItem> | import("@langchain/langgraph").OverwriteValue<Map<string, RadarCardItem>> | undefined;
|
|
106
|
-
uncachedOpportunities?: import("
|
|
106
|
+
uncachedOpportunities?: import("../../../platform/database.js").Opportunity[] | import("@langchain/langgraph").OverwriteValue<import("../../../platform/database.js").Opportunity[]> | undefined;
|
|
107
107
|
error?: string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined;
|
|
108
108
|
meta?: {
|
|
109
109
|
totalOpportunities: number;
|
|
@@ -120,11 +120,11 @@ export declare class RadarGraphFactory {
|
|
|
120
120
|
noCache: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
|
|
121
121
|
presentation: import("@langchain/langgraph").BaseChannel<"full" | "skeleton", "full" | "skeleton" | import("@langchain/langgraph").OverwriteValue<"full" | "skeleton">, unknown>;
|
|
122
122
|
statuses: import("@langchain/langgraph").BaseChannel<OpportunityStatus[] | undefined, OpportunityStatus[] | import("@langchain/langgraph").OverwriteValue<OpportunityStatus[] | undefined> | undefined, unknown>;
|
|
123
|
-
opportunities: import("@langchain/langgraph").BaseChannel<import("
|
|
123
|
+
opportunities: import("@langchain/langgraph").BaseChannel<import("../../../platform/database.js").Opportunity[], import("../../../platform/database.js").Opportunity[] | import("@langchain/langgraph").OverwriteValue<import("../../../platform/database.js").Opportunity[]>, unknown>;
|
|
124
124
|
cards: import("@langchain/langgraph").BaseChannel<RadarCardItem[], RadarCardItem[] | import("@langchain/langgraph").OverwriteValue<RadarCardItem[]>, unknown>;
|
|
125
125
|
items: import("@langchain/langgraph").BaseChannel<RadarResponseItem[], RadarResponseItem[] | import("@langchain/langgraph").OverwriteValue<RadarResponseItem[]>, unknown>;
|
|
126
126
|
cachedCards: import("@langchain/langgraph").BaseChannel<Map<string, RadarCardItem>, Map<string, RadarCardItem> | import("@langchain/langgraph").OverwriteValue<Map<string, RadarCardItem>>, unknown>;
|
|
127
|
-
uncachedOpportunities: import("@langchain/langgraph").BaseChannel<import("
|
|
127
|
+
uncachedOpportunities: import("@langchain/langgraph").BaseChannel<import("../../../platform/database.js").Opportunity[], import("../../../platform/database.js").Opportunity[] | import("@langchain/langgraph").OverwriteValue<import("../../../platform/database.js").Opportunity[]>, unknown>;
|
|
128
128
|
error: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
129
129
|
meta: import("@langchain/langgraph").BaseChannel<{
|
|
130
130
|
totalOpportunities: number;
|
|
@@ -143,11 +143,11 @@ export declare class RadarGraphFactory {
|
|
|
143
143
|
noCache: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
|
|
144
144
|
presentation: import("@langchain/langgraph").BaseChannel<"full" | "skeleton", "full" | "skeleton" | import("@langchain/langgraph").OverwriteValue<"full" | "skeleton">, unknown>;
|
|
145
145
|
statuses: import("@langchain/langgraph").BaseChannel<OpportunityStatus[] | undefined, OpportunityStatus[] | import("@langchain/langgraph").OverwriteValue<OpportunityStatus[] | undefined> | undefined, unknown>;
|
|
146
|
-
opportunities: import("@langchain/langgraph").BaseChannel<import("
|
|
146
|
+
opportunities: import("@langchain/langgraph").BaseChannel<import("../../../platform/database.js").Opportunity[], import("../../../platform/database.js").Opportunity[] | import("@langchain/langgraph").OverwriteValue<import("../../../platform/database.js").Opportunity[]>, unknown>;
|
|
147
147
|
cards: import("@langchain/langgraph").BaseChannel<RadarCardItem[], RadarCardItem[] | import("@langchain/langgraph").OverwriteValue<RadarCardItem[]>, unknown>;
|
|
148
148
|
items: import("@langchain/langgraph").BaseChannel<RadarResponseItem[], RadarResponseItem[] | import("@langchain/langgraph").OverwriteValue<RadarResponseItem[]>, unknown>;
|
|
149
149
|
cachedCards: import("@langchain/langgraph").BaseChannel<Map<string, RadarCardItem>, Map<string, RadarCardItem> | import("@langchain/langgraph").OverwriteValue<Map<string, RadarCardItem>>, unknown>;
|
|
150
|
-
uncachedOpportunities: import("@langchain/langgraph").BaseChannel<import("
|
|
150
|
+
uncachedOpportunities: import("@langchain/langgraph").BaseChannel<import("../../../platform/database.js").Opportunity[], import("../../../platform/database.js").Opportunity[] | import("@langchain/langgraph").OverwriteValue<import("../../../platform/database.js").Opportunity[]>, unknown>;
|
|
151
151
|
error: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
152
152
|
meta: import("@langchain/langgraph").BaseChannel<{
|
|
153
153
|
totalOpportunities: number;
|
|
@@ -162,7 +162,7 @@ export declare class RadarGraphFactory {
|
|
|
162
162
|
error: string;
|
|
163
163
|
opportunities?: undefined;
|
|
164
164
|
} | {
|
|
165
|
-
opportunities: import("
|
|
165
|
+
opportunities: import("../../../platform/database.js").Opportunity[];
|
|
166
166
|
error?: undefined;
|
|
167
167
|
} | {
|
|
168
168
|
error: string;
|
|
@@ -170,7 +170,7 @@ export declare class RadarGraphFactory {
|
|
|
170
170
|
};
|
|
171
171
|
checkPresenterCache: {
|
|
172
172
|
cachedCards: Map<any, any>;
|
|
173
|
-
uncachedOpportunities: import("
|
|
173
|
+
uncachedOpportunities: import("../../../platform/database.js").Opportunity[];
|
|
174
174
|
};
|
|
175
175
|
generateCardText: {
|
|
176
176
|
cards: RadarCardItem[];
|
|
@@ -197,7 +197,7 @@ export declare function loadOpportunitiesNode(state: RadarState, deps: RadarGrap
|
|
|
197
197
|
error: string;
|
|
198
198
|
opportunities?: undefined;
|
|
199
199
|
} | {
|
|
200
|
-
opportunities: import("
|
|
200
|
+
opportunities: import("../../../platform/database.js").Opportunity[];
|
|
201
201
|
error?: undefined;
|
|
202
202
|
} | {
|
|
203
203
|
error: string;
|
|
@@ -205,9 +205,9 @@ export declare function loadOpportunitiesNode(state: RadarState, deps: RadarGrap
|
|
|
205
205
|
}>;
|
|
206
206
|
export declare function checkPresenterCacheNode(state: RadarState, deps: RadarGraphDeps): Promise<{
|
|
207
207
|
cachedCards: Map<any, any>;
|
|
208
|
-
uncachedOpportunities: import("
|
|
208
|
+
uncachedOpportunities: import("../../../platform/database.js").Opportunity[];
|
|
209
209
|
}>;
|
|
210
|
-
export declare function shouldGenerateCards(state: RadarState,
|
|
210
|
+
export declare function shouldGenerateCards(state: RadarState, _deps: RadarGraphDeps): string;
|
|
211
211
|
export declare function generateCardTextNode(state: RadarState, deps: RadarGraphDeps): Promise<{
|
|
212
212
|
cards: RadarCardItem[];
|
|
213
213
|
agentTimings: DebugMetaAgent[];
|