@indexnetwork/protocol 22.0.0-rc.499.1 → 64.0.0
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 -134
- package/dist/index.js +41 -105
- 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
|
@@ -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
|
*
|
|
@@ -21,24 +21,19 @@ import { buildRadarCardPresentationCacheKey } from '../opportunity.presentation.
|
|
|
21
21
|
import { protocolLogger } from '../../shared/observability/protocol.logger.js';
|
|
22
22
|
import { timed } from '../../shared/observability/performance.js';
|
|
23
23
|
import { requestContext } from "../../shared/observability/request-context.js";
|
|
24
|
-
import { adjustedConfidence, latestPoolDemotionDetail, readActivePoolAdjustments } from '../discriminator/discriminator.adjustments.js';
|
|
25
|
-
import { poolQuestionsRanking } from '../discriminator/discriminator.env.js';
|
|
26
24
|
const logger = protocolLogger('RadarGraph');
|
|
27
25
|
const checkPresenterCacheLog = protocolLogger('RadarGraph:checkPresenterCache');
|
|
28
26
|
const cachePresenterResultsLog = protocolLogger('RadarGraph:cachePresenterResults');
|
|
29
27
|
const generateCardTextLog = protocolLogger('RadarGraph:generateCardText');
|
|
30
28
|
const normalizeItemsLog = protocolLogger('RadarGraph:normalizeItems');
|
|
31
29
|
/** Default radar statuses: the lifecycle stages a viewer can act on today. */
|
|
32
|
-
export const DEFAULT_RADAR_STATUSES = ['
|
|
30
|
+
export const DEFAULT_RADAR_STATUSES = ['pending'];
|
|
33
31
|
// Exhaustive registry — keys must cover every OpportunityStatus union member.
|
|
34
32
|
// Adding a new status to OpportunityStatus without adding a key here is a TS error,
|
|
35
33
|
// which is the whole point: prevents ALL_OPPORTUNITY_STATUSES from silently drifting.
|
|
36
34
|
const OPPORTUNITY_STATUS_REGISTRY = {
|
|
37
|
-
latent: true,
|
|
38
|
-
draft: true,
|
|
39
35
|
negotiating: true,
|
|
40
36
|
pending: true,
|
|
41
|
-
stalled: true,
|
|
42
37
|
accepted: true,
|
|
43
38
|
rejected: true,
|
|
44
39
|
expired: true,
|
|
@@ -116,39 +111,18 @@ const getRawConfidence = (opp) => {
|
|
|
116
111
|
}
|
|
117
112
|
return 0;
|
|
118
113
|
};
|
|
119
|
-
/**
|
|
120
|
-
* Sort confidence, optionally pool-adjusted (IND-419): when
|
|
121
|
-
* POOL_QUESTIONS_RANKING=on, answered discriminators multiply confidence by
|
|
122
|
-
* their stored factors (floor 0.3) so the user's answers re-rank the radar.
|
|
123
|
-
* Flag off → identical to raw confidence (adjustments are write-only).
|
|
124
|
-
*/
|
|
125
|
-
const getPoolRankingProvenance = (state) => {
|
|
126
|
-
if (poolQuestionsRanking() !== 'on' ||
|
|
127
|
-
!state.userId ||
|
|
128
|
-
state.scopeType !== 'intent' ||
|
|
129
|
-
!state.scopeId)
|
|
130
|
-
return null;
|
|
131
|
-
return { recipientUserId: state.userId, intentId: state.scopeId };
|
|
132
|
-
};
|
|
133
|
-
const hasPoolAdjustment = (opp, provenance) => readActivePoolAdjustments(opp.metadata, provenance).length > 0;
|
|
134
|
-
const getConfidence = (opp, provenance) => {
|
|
135
|
-
const raw = getRawConfidence(opp);
|
|
136
|
-
if (!provenance)
|
|
137
|
-
return raw;
|
|
138
|
-
return adjustedConfidence(raw, opp.metadata, provenance);
|
|
139
|
-
};
|
|
140
|
-
/** Unique non-introducer, non-viewer userIds for an opportunity (actors can repeat). */
|
|
114
|
+
/** Unique non-viewer userIds for an opportunity (actors can repeat). */
|
|
141
115
|
const getUniqueCounterpartUserIds = (opp, viewerId) => {
|
|
142
116
|
const ids = new Set();
|
|
143
117
|
for (const a of opp.actors) {
|
|
144
|
-
if (a.
|
|
118
|
+
if (a.userId !== viewerId && a.userId) {
|
|
145
119
|
ids.add(a.userId);
|
|
146
120
|
}
|
|
147
121
|
}
|
|
148
122
|
return ids;
|
|
149
123
|
};
|
|
150
124
|
const pickDisplayCounterpartActor = (opportunity, viewerId) => {
|
|
151
|
-
const candidates = opportunity.actors.filter((actor) => actor.userId !== viewerId
|
|
125
|
+
const candidates = opportunity.actors.filter((actor) => actor.userId !== viewerId);
|
|
152
126
|
if (candidates.length === 0) {
|
|
153
127
|
return null;
|
|
154
128
|
}
|
|
@@ -199,11 +173,10 @@ export async function loadOpportunitiesNode(state, deps) {
|
|
|
199
173
|
}
|
|
200
174
|
try {
|
|
201
175
|
// Minimum of 50 ensures enough candidates across all radar categories
|
|
202
|
-
// (connection,
|
|
176
|
+
// (connection, expired) for selectByComposition to fill
|
|
203
177
|
// its soft targets, even after visibility filtering and dedup.
|
|
204
178
|
const fetchLimit = Math.min(150, Math.max(50, state.limit * 3));
|
|
205
179
|
const statuses = state.statuses ?? DEFAULT_RADAR_STATUSES;
|
|
206
|
-
const poolRankingProvenance = getPoolRankingProvenance(state);
|
|
207
180
|
const options = {
|
|
208
181
|
limit: fetchLimit,
|
|
209
182
|
statuses,
|
|
@@ -220,7 +193,7 @@ export async function loadOpportunitiesNode(state, deps) {
|
|
|
220
193
|
// Actionability only gates the live statuses a viewer could act on:
|
|
221
194
|
// latent/pending cards the viewer cannot act on are noise, but
|
|
222
195
|
// terminal/internal statuses (accepted, rejected, expired, negotiating,
|
|
223
|
-
//
|
|
196
|
+
// draft) are deliberate history — when a caller explicitly
|
|
224
197
|
// requests them via `statuses`, they must pass through (they are never
|
|
225
198
|
// actionable by rule 5, so filtering them here would return nothing).
|
|
226
199
|
// The requested-status membership check is defense-in-depth: rows
|
|
@@ -229,18 +202,18 @@ export async function loadOpportunitiesNode(state, deps) {
|
|
|
229
202
|
const visibleForRadar = visible.filter((opp) => {
|
|
230
203
|
if (!requestedStatuses.has(opp.status))
|
|
231
204
|
return false;
|
|
232
|
-
if (opp.status === '
|
|
233
|
-
return isActionableForViewer(opp.actors, opp.status, state.userId);
|
|
205
|
+
if (opp.status === 'pending') {
|
|
206
|
+
return isActionableForViewer(opp.actors, opp.status, state.userId, opp.committedActorIds ?? []);
|
|
234
207
|
}
|
|
235
208
|
return true;
|
|
236
209
|
});
|
|
237
210
|
const explicitStatuses = (state.statuses?.length ?? 0) > 0;
|
|
238
211
|
if (explicitStatuses) {
|
|
239
|
-
// Lifecycle view (e.g. intent radar): newest-first so
|
|
240
|
-
//
|
|
241
|
-
//
|
|
242
|
-
// capping
|
|
243
|
-
const newestFirst = [...visibleForRadar].sort((a, b) => safeParseDate(b.
|
|
212
|
+
// Lifecycle view (e.g. intent radar): newest-created first so status
|
|
213
|
+
// transitions do not reorder cards merely by touching updatedAt.
|
|
214
|
+
// Counterpart dedup still keeps each person's newest opportunity; no
|
|
215
|
+
// composition capping because the caller wants the full pipeline.
|
|
216
|
+
const newestFirst = [...visibleForRadar].sort((a, b) => safeParseDate(b.createdAt) - safeParseDate(a.createdAt));
|
|
244
217
|
const seenIds = new Set();
|
|
245
218
|
const dedupedByCounterpart = newestFirst.filter((opp) => {
|
|
246
219
|
const counterpartIds = getUniqueCounterpartUserIds(opp, state.userId);
|
|
@@ -251,32 +224,11 @@ export async function loadOpportunitiesNode(state, deps) {
|
|
|
251
224
|
seenIds.add(id);
|
|
252
225
|
return true;
|
|
253
226
|
});
|
|
254
|
-
|
|
255
|
-
// off. When on, re-order the already-deduped lifecycle set by
|
|
256
|
-
// adjusted confidence so each client-side radar bucket reflects
|
|
257
|
-
// pool answers immediately.
|
|
258
|
-
if (!poolRankingProvenance ||
|
|
259
|
-
!dedupedByCounterpart.some((opportunity) => hasPoolAdjustment(opportunity, poolRankingProvenance))) {
|
|
260
|
-
return { opportunities: dedupedByCounterpart.slice(0, state.limit) };
|
|
261
|
-
}
|
|
262
|
-
const adjustedOrder = [...dedupedByCounterpart].sort((a, b) => {
|
|
263
|
-
const confidenceDelta = getConfidence(b, poolRankingProvenance) - getConfidence(a, poolRankingProvenance);
|
|
264
|
-
if (confidenceDelta !== 0)
|
|
265
|
-
return confidenceDelta;
|
|
266
|
-
return safeParseDate(b.updatedAt) - safeParseDate(a.updatedAt);
|
|
267
|
-
});
|
|
268
|
-
return { opportunities: adjustedOrder.slice(0, state.limit) };
|
|
227
|
+
return { opportunities: dedupedByCounterpart.slice(0, state.limit) };
|
|
269
228
|
}
|
|
270
229
|
const sorted = [...visibleForRadar].sort((a, b) => {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
// shadowing a user's own connection opportunities.
|
|
274
|
-
const aIsIntroducer = a.actors.some((ac) => ac.userId === state.userId && ac.role === 'introducer');
|
|
275
|
-
const bIsIntroducer = b.actors.some((ac) => ac.userId === state.userId && ac.role === 'introducer');
|
|
276
|
-
if (aIsIntroducer !== bIsIntroducer)
|
|
277
|
-
return aIsIntroducer ? 1 : -1;
|
|
278
|
-
const confA = getConfidence(a, poolRankingProvenance);
|
|
279
|
-
const confB = getConfidence(b, poolRankingProvenance);
|
|
230
|
+
const confA = getRawConfidence(a);
|
|
231
|
+
const confB = getRawConfidence(b);
|
|
280
232
|
if (confB !== confA)
|
|
281
233
|
return confB - confA;
|
|
282
234
|
const aTime = safeParseDate(a.updatedAt);
|
|
@@ -304,8 +256,7 @@ export async function loadOpportunitiesNode(state, deps) {
|
|
|
304
256
|
}
|
|
305
257
|
export async function checkPresenterCacheNode(state, deps) {
|
|
306
258
|
return timed("RadarGraph.checkPresenterCache", async () => {
|
|
307
|
-
const { opportunities, userId } = state;
|
|
308
|
-
const poolRankingProvenance = getPoolRankingProvenance(state);
|
|
259
|
+
const { opportunities, userId, scopeId } = state;
|
|
309
260
|
if (opportunities.length === 0) {
|
|
310
261
|
return { cachedCards: new Map(), uncachedOpportunities: [] };
|
|
311
262
|
}
|
|
@@ -323,7 +274,7 @@ export async function checkPresenterCacheNode(state, deps) {
|
|
|
323
274
|
// transitions (e.g. negotiating → pending) don't serve stale cards.
|
|
324
275
|
const cacheable = opportunities.filter((opp) => opp.status !== 'negotiating');
|
|
325
276
|
const liveNegotiating = opportunities.filter((opp) => opp.status === 'negotiating');
|
|
326
|
-
const keys = cacheable.map((opp) => buildRadarCardPresentationCacheKey(opp.id, opp.status, userId));
|
|
277
|
+
const keys = cacheable.map((opp) => buildRadarCardPresentationCacheKey(opp.id, opp.status, userId, scopeId));
|
|
327
278
|
const results = keys.length > 0 ? await deps.cache.mget(keys) : [];
|
|
328
279
|
const cachedCards = new Map();
|
|
329
280
|
const uncachedOpportunities = [...liveNegotiating];
|
|
@@ -333,13 +284,9 @@ export async function checkPresenterCacheNode(state, deps) {
|
|
|
333
284
|
const originalIndex = opportunities.indexOf(cacheable[i]);
|
|
334
285
|
// Stamp the live status: pre-status cache entries lack the field,
|
|
335
286
|
// and the key already guarantees it matches the current status.
|
|
336
|
-
const deprioritizedReason = poolRankingProvenance
|
|
337
|
-
? latestPoolDemotionDetail(cacheable[i].metadata, poolRankingProvenance)
|
|
338
|
-
: undefined;
|
|
339
287
|
cachedCards.set(cacheable[i].id, {
|
|
340
288
|
...cached,
|
|
341
289
|
status: cacheable[i].status,
|
|
342
|
-
deprioritizedReason,
|
|
343
290
|
_cardIndex: originalIndex,
|
|
344
291
|
});
|
|
345
292
|
}
|
|
@@ -360,7 +307,7 @@ export async function checkPresenterCacheNode(state, deps) {
|
|
|
360
307
|
}
|
|
361
308
|
});
|
|
362
309
|
}
|
|
363
|
-
export function shouldGenerateCards(state,
|
|
310
|
+
export function shouldGenerateCards(state, _deps) {
|
|
364
311
|
if (state.uncachedOpportunities.length > 0) {
|
|
365
312
|
return 'generate';
|
|
366
313
|
}
|
|
@@ -404,34 +351,14 @@ export async function generateCardTextNode(state, deps) {
|
|
|
404
351
|
const cardIndex = oppIndexMap.get(opportunity.id) ?? (i + offset);
|
|
405
352
|
const viewerActor = opportunity.actors.find((a) => a.userId === state.userId);
|
|
406
353
|
const viewerRole = viewerActor?.role ?? 'party';
|
|
407
|
-
const isIntroducer = viewerRole === 'introducer';
|
|
408
354
|
const preferredActor = pickDisplayCounterpartActor(opportunity, state.userId)
|
|
409
|
-
?? opportunity.actors.find((a) => a.userId !== state.userId
|
|
410
|
-
const actorWithProfile = opportunity.actors.find((a) => a.userId !== state.userId &&
|
|
411
|
-
const
|
|
412
|
-
let otherActor = (preferredActor && userMap.get(preferredActor.userId))
|
|
355
|
+
?? opportunity.actors.find((a) => a.userId !== state.userId);
|
|
356
|
+
const actorWithProfile = opportunity.actors.find((a) => a.userId !== state.userId && !!userMap.get(a.userId));
|
|
357
|
+
const otherActor = (preferredActor && userMap.get(preferredActor.userId))
|
|
413
358
|
? preferredActor
|
|
414
359
|
: (actorWithProfile ?? preferredActor);
|
|
415
|
-
// When the only other participant is the introducer (no separate party), use introducer as display counterpart so the card shows a name instead of "Unknown"
|
|
416
|
-
if (!otherActor && introducer && introducer.userId !== state.userId && introducer.userId) {
|
|
417
|
-
otherActor = { userId: introducer.userId, role: introducer.role };
|
|
418
|
-
}
|
|
419
360
|
const otherUser = otherActor ? userMap.get(otherActor.userId) ?? null : null;
|
|
420
|
-
|
|
421
|
-
// Deduplicate by userId — actors array can contain multiple rows per user
|
|
422
|
-
// (e.g. from different intents), which would produce repeated names.
|
|
423
|
-
const uniqueCounterpartIds = [...new Set(introducerCounterparts.map((a) => a.userId))];
|
|
424
|
-
const participantNames = uniqueCounterpartIds
|
|
425
|
-
.map((uid) => userMap.get(uid)?.name ?? 'Unknown')
|
|
426
|
-
.sort();
|
|
427
|
-
// When secondPartyData will be present (2+ counterparts), use single counterpart name
|
|
428
|
-
// because the frontend arrow layout renders "card.name → secondParty.name".
|
|
429
|
-
// Using the joined "A ↔ B" format here would produce redundant "A ↔ B → B".
|
|
430
|
-
// Only use the joined format when there is a single counterpart (no arrow layout).
|
|
431
|
-
const willHaveSecondParty = isIntroducer && uniqueCounterpartIds.length > 1;
|
|
432
|
-
let userName = isIntroducer && participantNames.length > 0 && !willHaveSecondParty
|
|
433
|
-
? participantNames.join(' ↔ ')
|
|
434
|
-
: (otherUser?.name ?? 'Unknown');
|
|
361
|
+
let userName = otherUser?.name ?? 'Unknown';
|
|
435
362
|
// Fallback to profile identity name when users.name is missing (e.g. profile has display name, users row does not)
|
|
436
363
|
if ((userName === 'Unknown' || !userName?.trim()) && otherActor?.userId && db.getProfile) {
|
|
437
364
|
const profile = await db.getProfile(otherActor.userId).catch((err) => {
|
|
@@ -465,19 +392,6 @@ export async function generateCardTextNode(state, deps) {
|
|
|
465
392
|
maxChars: MAX_REASONING_SNIPPET_LENGTH,
|
|
466
393
|
emptyText: 'A promising connection.',
|
|
467
394
|
});
|
|
468
|
-
// Build secondParty for introducer arrow layout (the party that isn't the display counterpart)
|
|
469
|
-
let secondPartyData;
|
|
470
|
-
if (isIntroducer && introducerCounterparts.length > 1 && otherActor) {
|
|
471
|
-
const secondActor = introducerCounterparts.find((a) => a.userId !== otherActor.userId);
|
|
472
|
-
if (secondActor) {
|
|
473
|
-
const secondUser = userMap.get(secondActor.userId) ?? null;
|
|
474
|
-
secondPartyData = {
|
|
475
|
-
name: secondUser?.name ?? 'Unknown',
|
|
476
|
-
avatar: secondUser?.avatar ?? null,
|
|
477
|
-
userId: secondActor.userId,
|
|
478
|
-
};
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
395
|
// Skeleton presentation: return an identity-only card without the
|
|
482
396
|
// deps.presenter LLM or negotiation-context load. Name resolution and
|
|
483
397
|
// the unresolvable-counterpart drop above still apply, so the card
|
|
@@ -493,39 +407,32 @@ export async function generateCardTextNode(state, deps) {
|
|
|
493
407
|
cta: '',
|
|
494
408
|
primaryActionLabel: getPrimaryActionLabel(viewerRole),
|
|
495
409
|
secondaryActionLabel: SECONDARY_ACTION_LABEL,
|
|
496
|
-
mutualIntentsLabel:
|
|
410
|
+
mutualIntentsLabel: 'Shared interests',
|
|
497
411
|
viewerRole,
|
|
498
|
-
...(secondPartyData ? { secondParty: secondPartyData } : {}),
|
|
499
412
|
presentationPending: true,
|
|
500
413
|
_cardIndex: cardIndex,
|
|
501
414
|
};
|
|
502
415
|
}
|
|
503
|
-
const
|
|
504
|
-
const fallbackCard = () => ({
|
|
416
|
+
const fallbackCard = (outcomeReasoning) => ({
|
|
505
417
|
opportunityId: opportunity.id,
|
|
506
418
|
status: opportunity.status,
|
|
507
419
|
userId: otherActor?.userId ?? '',
|
|
508
420
|
name: userName,
|
|
509
421
|
avatar: userAvatar,
|
|
510
|
-
mainText: reasoningSnippet,
|
|
511
|
-
cta:
|
|
512
|
-
? (isPendingIntroducerFallback ? 'Share this introduction to get things started.' : 'Take a look and decide if this is a good match.')
|
|
513
|
-
: 'Take a look and decide whether to reach out.',
|
|
422
|
+
mainText: outcomeReasoning ?? reasoningSnippet,
|
|
423
|
+
cta: 'Take a look and decide whether to reach out.',
|
|
514
424
|
primaryActionLabel: getPrimaryActionLabel(viewerRole),
|
|
515
425
|
secondaryActionLabel: SECONDARY_ACTION_LABEL,
|
|
516
|
-
mutualIntentsLabel:
|
|
517
|
-
narratorChip:
|
|
518
|
-
? { name: 'You', text: 'Worth a look.', userId: state.userId }
|
|
519
|
-
: { name: 'Index', text: 'Worth a look.' },
|
|
426
|
+
mutualIntentsLabel: 'Shared interests',
|
|
427
|
+
narratorChip: { name: 'Index', text: 'Worth a look.' },
|
|
520
428
|
viewerRole,
|
|
521
|
-
...(secondPartyData ? { secondParty: secondPartyData } : {}),
|
|
522
429
|
_presentationFallback: true,
|
|
523
430
|
_cardIndex: cardIndex,
|
|
524
431
|
});
|
|
525
432
|
try {
|
|
526
433
|
const [ctx, negotiationContext] = await Promise.all([
|
|
527
|
-
gatherPresenterContext(db, opportunity, state.userId, otherActor?.userId),
|
|
528
|
-
loadNegotiationContext(db, opportunity.id, opportunity.status),
|
|
434
|
+
gatherPresenterContext(db, opportunity, state.userId, otherActor?.userId, state.scopeId),
|
|
435
|
+
loadNegotiationContext(db, opportunity.id, opportunity.status, state.userId),
|
|
529
436
|
]);
|
|
530
437
|
const presenterInput = {
|
|
531
438
|
...ctx,
|
|
@@ -543,26 +450,8 @@ export async function generateCardTextNode(state, deps) {
|
|
|
543
450
|
if (presentation.isFallback) {
|
|
544
451
|
return fallbackCard();
|
|
545
452
|
}
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
// (bad data can have same user as introducer and party, e.g. "Amina introduced you to Amina")
|
|
549
|
-
const introducerIsCounterpart = introducer && otherActor && introducer.userId === otherActor.userId;
|
|
550
|
-
if (introducer && introducer.userId !== state.userId && !introducerIsCounterpart) {
|
|
551
|
-
const introUser = userMap.get(introducer.userId) ?? null;
|
|
552
|
-
const narratorName = introUser?.name ?? 'Someone';
|
|
553
|
-
narratorChip = {
|
|
554
|
-
name: narratorName,
|
|
555
|
-
text: stripLeadingNarratorName(presentation.narratorRemark, narratorName),
|
|
556
|
-
avatar: introUser?.avatar ?? null,
|
|
557
|
-
userId: introducer.userId,
|
|
558
|
-
};
|
|
559
|
-
}
|
|
560
|
-
else if (introducer?.userId === state.userId) {
|
|
561
|
-
narratorChip = { name: 'You', text: presentation.narratorRemark, userId: state.userId };
|
|
562
|
-
}
|
|
563
|
-
else {
|
|
564
|
-
narratorChip = { name: 'Index', text: presentation.narratorRemark };
|
|
565
|
-
}
|
|
453
|
+
// Every card is system-discovered now: one narrator.
|
|
454
|
+
const narratorChip = { name: 'Index', text: presentation.narratorRemark };
|
|
566
455
|
return {
|
|
567
456
|
opportunityId: opportunity.id,
|
|
568
457
|
status: opportunity.status,
|
|
@@ -577,7 +466,6 @@ export async function generateCardTextNode(state, deps) {
|
|
|
577
466
|
mutualIntentsLabel: presentation.mutualIntentsLabel,
|
|
578
467
|
narratorChip,
|
|
579
468
|
viewerRole,
|
|
580
|
-
...(secondPartyData ? { secondParty: secondPartyData } : {}),
|
|
581
469
|
_cardIndex: cardIndex,
|
|
582
470
|
};
|
|
583
471
|
}
|
|
@@ -598,18 +486,9 @@ export async function generateCardTextNode(state, deps) {
|
|
|
598
486
|
}
|
|
599
487
|
export async function cachePresenterResultsNode(state, deps) {
|
|
600
488
|
return timed("RadarGraph.cachePresenterResults", async () => {
|
|
601
|
-
const { cards, cachedCards, userId, opportunities } = state;
|
|
602
|
-
const poolRankingProvenance = getPoolRankingProvenance(state);
|
|
603
|
-
const liveById = new Map(opportunities.map((opportunity) => [opportunity.id, opportunity]));
|
|
604
|
-
const cardsWithAdjustments = cards.map((card) => {
|
|
605
|
-
const opportunity = liveById.get(card.opportunityId);
|
|
606
|
-
const deprioritizedReason = poolRankingProvenance
|
|
607
|
-
? latestPoolDemotionDetail(opportunity?.metadata, poolRankingProvenance)
|
|
608
|
-
: undefined;
|
|
609
|
-
return { ...card, deprioritizedReason };
|
|
610
|
-
});
|
|
489
|
+
const { cards, cachedCards, userId, opportunities, scopeId } = state;
|
|
611
490
|
// Only cache cards that weren't already from cache
|
|
612
|
-
const newCards =
|
|
491
|
+
const newCards = cards.filter((card) => !cachedCards.has(card.opportunityId));
|
|
613
492
|
const statusById = new Map(opportunities.map((opp) => [opp.id, opp.status]));
|
|
614
493
|
try {
|
|
615
494
|
await Promise.all(newCards.map((card) => {
|
|
@@ -618,16 +497,16 @@ export async function cachePresenterResultsNode(state, deps) {
|
|
|
618
497
|
// safe for the current response but must not become 24h entries.
|
|
619
498
|
if (!status || !isRadarPresentationCacheable(card, status))
|
|
620
499
|
return Promise.resolve();
|
|
621
|
-
return deps.cache.set(buildRadarCardPresentationCacheKey(card.opportunityId, status, userId), card, { ttl: RADAR_CACHE_TTL });
|
|
500
|
+
return deps.cache.set(buildRadarCardPresentationCacheKey(card.opportunityId, status, userId, scopeId), card, { ttl: RADAR_CACHE_TTL });
|
|
622
501
|
}));
|
|
623
502
|
}
|
|
624
503
|
catch (e) {
|
|
625
504
|
cachePresenterResultsLog.warn('cache write failed, continuing', { error: e });
|
|
626
505
|
}
|
|
627
506
|
// Merge cached cards into full card list
|
|
628
|
-
const allCards = [...
|
|
507
|
+
const allCards = [...cards];
|
|
629
508
|
for (const [oppId, cachedCard] of cachedCards) {
|
|
630
|
-
if (!
|
|
509
|
+
if (!cards.some((card) => card.opportunityId === oppId)) {
|
|
631
510
|
allCards.push(cachedCard);
|
|
632
511
|
}
|
|
633
512
|
}
|
|
@@ -646,9 +525,10 @@ export async function cachePresenterResultsNode(state, deps) {
|
|
|
646
525
|
export async function normalizeItemsNode(state) {
|
|
647
526
|
return timed("RadarGraph.normalizeItems", async () => {
|
|
648
527
|
normalizeItemsLog.verbose('entry', { cardsLength: state.cards.length });
|
|
528
|
+
const createdAtById = new Map(state.opportunities.map((opportunity) => [opportunity.id, opportunity.createdAt.toISOString()]));
|
|
649
529
|
const items = state.cards.map((card) => {
|
|
650
530
|
const { _cardIndex, _presentationFallback, ...rest } = card;
|
|
651
|
-
return rest;
|
|
531
|
+
return { ...rest, createdAt: createdAtById.get(card.opportunityId) };
|
|
652
532
|
});
|
|
653
533
|
const meta = { totalOpportunities: state.opportunities.length };
|
|
654
534
|
normalizeItemsLog.verbose('exit', { totalOpportunities: meta.totalOpportunities, totalItems: items.length });
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { Opportunity, OpportunityStatus } from '
|
|
2
|
-
import type { DebugMetaAgent } from
|
|
1
|
+
import type { Opportunity, OpportunityStatus } from '../../../platform/database.js';
|
|
2
|
+
import type { DebugMetaAgent } from "../../../protocol/core.js";
|
|
3
3
|
/**
|
|
4
4
|
* Radar card item: one opportunity with full presenter-driven display contract.
|
|
5
5
|
*/
|
|
6
6
|
export interface RadarCardItem {
|
|
7
7
|
opportunityId: string;
|
|
8
|
+
createdAt?: string;
|
|
8
9
|
/** Lifecycle status of the underlying opportunity at render time (client bucketing, e.g. intent radar). */
|
|
9
10
|
status?: OpportunityStatus;
|
|
10
11
|
userId: string;
|
|
@@ -25,16 +26,8 @@ export interface RadarCardItem {
|
|
|
25
26
|
avatar?: string | null;
|
|
26
27
|
userId?: string;
|
|
27
28
|
};
|
|
28
|
-
/** Viewer's role in this opportunity (e.g. '
|
|
29
|
+
/** Viewer's role in this opportunity (e.g. 'party', 'agent', 'patient', 'peer'). */
|
|
29
30
|
viewerRole?: string;
|
|
30
|
-
/** Template-only explanation for a pool-answer demotion (never evaluator reasoning). */
|
|
31
|
-
deprioritizedReason?: string;
|
|
32
|
-
/** Second party in introducer arrow layout. Present when viewerRole is 'introducer'. */
|
|
33
|
-
secondParty?: {
|
|
34
|
-
name: string;
|
|
35
|
-
avatar?: string | null;
|
|
36
|
-
userId?: string;
|
|
37
|
-
};
|
|
38
31
|
/**
|
|
39
32
|
* True when this card was produced by a skeleton-presentation run: identity
|
|
40
33
|
* fields (name/avatar/status) are real but mainText/cta are empty because the
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Returns a LangChain RunnableConfig carrying the active AbortSignal(s),
|
|
3
|
-
* when
|
|
3
|
+
* when the host installed one in AsyncLocalStorage or a caller
|
|
4
4
|
* supplied an explicit signal.
|
|
5
5
|
*/
|
|
6
6
|
export declare function getAbortSignalConfig(signal?: AbortSignal): {
|
|
@@ -24,7 +24,7 @@ function combineAbortSignals(signals) {
|
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
26
|
* Returns a LangChain RunnableConfig carrying the active AbortSignal(s),
|
|
27
|
-
* when
|
|
27
|
+
* when the host installed one in AsyncLocalStorage or a caller
|
|
28
28
|
* supplied an explicit signal.
|
|
29
29
|
*/
|
|
30
30
|
export function getAbortSignalConfig(signal) {
|