@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,256 +0,0 @@
|
|
|
1
|
-
import { Annotation } from "@langchain/langgraph";
|
|
2
|
-
/**
|
|
3
|
-
* Opportunity Graph State Annotation
|
|
4
|
-
*/
|
|
5
|
-
export const OpportunityGraphState = Annotation.Root({
|
|
6
|
-
// ─── Input Fields (Required) ───
|
|
7
|
-
userId: Annotation({
|
|
8
|
-
reducer: (curr, next) => next ?? curr,
|
|
9
|
-
default: () => '',
|
|
10
|
-
}),
|
|
11
|
-
searchQuery: Annotation({
|
|
12
|
-
reducer: (curr, next) => next ?? curr,
|
|
13
|
-
default: () => undefined,
|
|
14
|
-
}),
|
|
15
|
-
networkId: Annotation({
|
|
16
|
-
reducer: (curr, next) => next ?? curr,
|
|
17
|
-
default: () => undefined,
|
|
18
|
-
}),
|
|
19
|
-
/**
|
|
20
|
-
* Optional set of indexes discovery may search within (e.g. a network-scoped
|
|
21
|
-
* agent's reachable networks: the bound network plus the user's personal network).
|
|
22
|
-
* The scope node intersects this with the user's actual memberships. Ignored
|
|
23
|
-
* when `networkId` is set (single-network override). When unset, discovery
|
|
24
|
-
* spans all of the user's networks.
|
|
25
|
-
*/
|
|
26
|
-
indexScope: Annotation({
|
|
27
|
-
reducer: (curr, next) => next ?? curr,
|
|
28
|
-
default: () => undefined,
|
|
29
|
-
}),
|
|
30
|
-
/** Optional intent to use as discovery source and for triggeredBy. When set, used for search text (if query empty) and persist. */
|
|
31
|
-
triggerIntentId: Annotation({
|
|
32
|
-
reducer: (curr, next) => next ?? curr,
|
|
33
|
-
default: () => undefined,
|
|
34
|
-
}),
|
|
35
|
-
/** Optional: restrict discovery to this specific user ID only (direct connection). */
|
|
36
|
-
targetUserId: Annotation({
|
|
37
|
-
reducer: (curr, next) => next ?? curr,
|
|
38
|
-
default: () => undefined,
|
|
39
|
-
}),
|
|
40
|
-
/** Optional: discover on behalf of this user (introducer flow). When set, prep/eval use this user's profile/intents; userId becomes the introducer. */
|
|
41
|
-
onBehalfOfUserId: Annotation({
|
|
42
|
-
reducer: (curr, next) => next ?? curr,
|
|
43
|
-
default: () => undefined,
|
|
44
|
-
}),
|
|
45
|
-
options: Annotation({
|
|
46
|
-
reducer: (curr, next) => next ?? curr,
|
|
47
|
-
default: () => ({}),
|
|
48
|
-
}),
|
|
49
|
-
/**
|
|
50
|
-
* Operation mode controls graph flow:
|
|
51
|
-
* - 'create': Existing discover pipeline (Prep → Scope → Discovery → Evaluation → Ranking → Persist)
|
|
52
|
-
* - 'create_introduction': Introduction path (validation → evaluation → persist) for chat-driven intros
|
|
53
|
-
* - 'continue_discovery': Pagination path (Prep → Evaluation → Ranking → Persist) using pre-loaded candidates
|
|
54
|
-
* - 'read': List opportunities filtered by userId and optionally networkId (fast path)
|
|
55
|
-
* - 'update': Change opportunity status (accept, reject, etc.)
|
|
56
|
-
* - 'delete': Expire/archive an opportunity
|
|
57
|
-
* - 'send': Promote latent opportunity to pending + queue notification
|
|
58
|
-
* - 'negotiate_existing': Load an existing opportunity by opportunityId and run bilateral negotiation.
|
|
59
|
-
* Used after introducer approval to trigger the normal negotiation flow.
|
|
60
|
-
* - 'approve_introduction': Mark the caller as having approved a latent introducer opportunity,
|
|
61
|
-
* then enqueue a negotiate_existing job for that opportunity.
|
|
62
|
-
*
|
|
63
|
-
* Defaults to 'create' for backward compatibility.
|
|
64
|
-
*/
|
|
65
|
-
operationMode: Annotation({
|
|
66
|
-
reducer: (curr, next) => next ?? curr,
|
|
67
|
-
default: () => 'create',
|
|
68
|
-
}),
|
|
69
|
-
/** Introduction mode: pre-gathered entities (profiles + intents per party). */
|
|
70
|
-
introductionEntities: Annotation({
|
|
71
|
-
reducer: (curr, next) => next ?? curr,
|
|
72
|
-
default: () => [],
|
|
73
|
-
}),
|
|
74
|
-
/** Introduction mode: optional hint from the introducer. */
|
|
75
|
-
introductionHint: Annotation({
|
|
76
|
-
reducer: (curr, next) => next ?? curr,
|
|
77
|
-
default: () => undefined,
|
|
78
|
-
}),
|
|
79
|
-
/** When set (e.g. chat scope), networkId must match this. */
|
|
80
|
-
requiredNetworkId: Annotation({
|
|
81
|
-
reducer: (curr, next) => next ?? curr,
|
|
82
|
-
default: () => undefined,
|
|
83
|
-
}),
|
|
84
|
-
/** Set by intro_evaluation; used by persist to build manual detection and introducer actor. */
|
|
85
|
-
introductionContext: Annotation({
|
|
86
|
-
reducer: (curr, next) => next ?? curr,
|
|
87
|
-
default: () => undefined,
|
|
88
|
-
}),
|
|
89
|
-
/** Target opportunity ID for update/delete/send modes. */
|
|
90
|
-
opportunityId: Annotation({
|
|
91
|
-
reducer: (curr, next) => next ?? curr,
|
|
92
|
-
default: () => undefined,
|
|
93
|
-
}),
|
|
94
|
-
/** New status for update mode (e.g. 'accepted', 'rejected'). */
|
|
95
|
-
newStatus: Annotation({
|
|
96
|
-
reducer: (curr, next) => next ?? curr,
|
|
97
|
-
default: () => undefined,
|
|
98
|
-
}),
|
|
99
|
-
// ─── Intermediate Fields (Accumulated) ───
|
|
100
|
-
/** User's indexed intents with hyde documents (from prep) */
|
|
101
|
-
indexedIntents: Annotation({
|
|
102
|
-
reducer: (curr, next) => next ?? curr,
|
|
103
|
-
default: () => [],
|
|
104
|
-
}),
|
|
105
|
-
/** User's network memberships (from prep) */
|
|
106
|
-
userNetworks: Annotation({
|
|
107
|
-
reducer: (curr, next) => next ?? curr,
|
|
108
|
-
default: () => [],
|
|
109
|
-
}),
|
|
110
|
-
/** Target indexes to search within (from scope) */
|
|
111
|
-
targetNetworks: Annotation({
|
|
112
|
-
reducer: (curr, next) => next ?? curr,
|
|
113
|
-
default: () => [],
|
|
114
|
-
}),
|
|
115
|
-
/** Per-index relevancy scores for dedup tie-breaking. Background path: from intent_indexes. Chat path: transient from IntentIndexer. */
|
|
116
|
-
indexRelevancyScores: Annotation({
|
|
117
|
-
reducer: (curr, next) => next ?? curr,
|
|
118
|
-
default: () => ({}),
|
|
119
|
-
}),
|
|
120
|
-
/** Whether discovery used intent (path A) or user context (path B/C). Used by persist for triggeredBy. In-memory routing state only; never persisted. */
|
|
121
|
-
discoverySource: Annotation({
|
|
122
|
-
reducer: (curr, next) => next ?? curr,
|
|
123
|
-
default: () => 'intent',
|
|
124
|
-
}),
|
|
125
|
-
/** Resolved intent ID used for this discovery run (when discoverySource is 'intent'). Set by intent-resolution. */
|
|
126
|
-
resolvedTriggerIntentId: Annotation({
|
|
127
|
-
reducer: (curr, next) => next ?? curr,
|
|
128
|
-
default: () => undefined,
|
|
129
|
-
}),
|
|
130
|
-
/** Asker's profile (from prep). Used for profile-as-source discovery and evaluation. */
|
|
131
|
-
sourceProfile: Annotation({
|
|
132
|
-
reducer: (curr, next) => next ?? curr,
|
|
133
|
-
default: () => null,
|
|
134
|
-
}),
|
|
135
|
-
/** User's active premises with embeddings (from prep). Used for premise-to-premise discovery path D. */
|
|
136
|
-
sourcePremises: Annotation({
|
|
137
|
-
reducer: (curr, next) => next ?? curr,
|
|
138
|
-
default: () => [],
|
|
139
|
-
}),
|
|
140
|
-
/** User context embeddings per network (from prep). Used for context-to-intent discovery. */
|
|
141
|
-
sourceContexts: Annotation({
|
|
142
|
-
reducer: (curr, next) => next ?? curr,
|
|
143
|
-
default: () => [],
|
|
144
|
-
}),
|
|
145
|
-
/** Resolved intent is in at least one target index (path A vs C). */
|
|
146
|
-
resolvedIntentInIndex: Annotation({
|
|
147
|
-
reducer: (curr, next) => next ?? curr,
|
|
148
|
-
default: () => false,
|
|
149
|
-
}),
|
|
150
|
-
/** Create-intent signal: when true, tool should return createIntentSuggested so agent can auto-call create_intent. */
|
|
151
|
-
createIntentSuggested: Annotation({
|
|
152
|
-
reducer: (curr, next) => next ?? curr,
|
|
153
|
-
default: () => false,
|
|
154
|
-
}),
|
|
155
|
-
/** Suggested description for create_intent when createIntentSuggested is true. */
|
|
156
|
-
suggestedIntentDescription: Annotation({
|
|
157
|
-
reducer: (curr, next) => next ?? curr,
|
|
158
|
-
default: () => undefined,
|
|
159
|
-
}),
|
|
160
|
-
/** HyDE embeddings per lens label (from discovery) */
|
|
161
|
-
hydeEmbeddings: Annotation({
|
|
162
|
-
reducer: (curr, next) => next ?? curr,
|
|
163
|
-
default: () => ({}),
|
|
164
|
-
}),
|
|
165
|
-
/** Candidate matches from semantic search (from discovery) */
|
|
166
|
-
candidates: Annotation({
|
|
167
|
-
reducer: (curr, next) => next ?? curr,
|
|
168
|
-
default: () => [],
|
|
169
|
-
}),
|
|
170
|
-
/** Candidates not yet evaluated (for pagination -- cached in Redis by caller). */
|
|
171
|
-
remainingCandidates: Annotation({
|
|
172
|
-
reducer: (curr, next) => next ?? curr,
|
|
173
|
-
default: () => [],
|
|
174
|
-
}),
|
|
175
|
-
/** Discovery session ID for pagination (maps to Redis cache key). */
|
|
176
|
-
discoveryId: Annotation({
|
|
177
|
-
reducer: (curr, next) => next ?? curr,
|
|
178
|
-
default: () => null,
|
|
179
|
-
}),
|
|
180
|
-
/** Evaluated candidates with scores (from evaluation; legacy) */
|
|
181
|
-
evaluatedCandidates: Annotation({
|
|
182
|
-
reducer: (curr, next) => next ?? curr,
|
|
183
|
-
default: () => [],
|
|
184
|
-
}),
|
|
185
|
-
/** Evaluated opportunities with actors (from entity-bundle evaluator) */
|
|
186
|
-
evaluatedOpportunities: Annotation({
|
|
187
|
-
reducer: (curr, next) => next ?? curr,
|
|
188
|
-
default: () => [],
|
|
189
|
-
}),
|
|
190
|
-
// ─── Output Fields (Overwrite per turn) ───
|
|
191
|
-
/** Final ranked and persisted opportunities */
|
|
192
|
-
opportunities: Annotation({
|
|
193
|
-
reducer: (curr, next) => next,
|
|
194
|
-
default: () => [],
|
|
195
|
-
}),
|
|
196
|
-
/** Discovery path: pairs skipped because an opportunity already exists between viewer and candidate (no duplicate created). */
|
|
197
|
-
existingBetweenActors: Annotation({
|
|
198
|
-
reducer: (curr, next) => next ?? curr,
|
|
199
|
-
default: () => [],
|
|
200
|
-
}),
|
|
201
|
-
/** Typed persist-node counts used by queue telemetry. */
|
|
202
|
-
persistenceOutcome: Annotation({
|
|
203
|
-
reducer: (curr, next) => next ?? curr,
|
|
204
|
-
default: () => undefined,
|
|
205
|
-
}),
|
|
206
|
-
/** Positive exact-successor receipt for a fenced continuation. */
|
|
207
|
-
negotiationContinuationReceipt: Annotation({
|
|
208
|
-
reducer: (curr, next) => next ?? curr,
|
|
209
|
-
default: () => undefined,
|
|
210
|
-
}),
|
|
211
|
-
/** Error message if any step fails */
|
|
212
|
-
error: Annotation({
|
|
213
|
-
reducer: (curr, next) => next,
|
|
214
|
-
default: () => undefined,
|
|
215
|
-
}),
|
|
216
|
-
/** Output for read mode: enriched list of opportunities. */
|
|
217
|
-
readResult: Annotation({
|
|
218
|
-
reducer: (curr, next) => next,
|
|
219
|
-
default: () => undefined,
|
|
220
|
-
}),
|
|
221
|
-
/** Output for update/delete/send modes. */
|
|
222
|
-
mutationResult: Annotation({
|
|
223
|
-
reducer: (curr, next) => next,
|
|
224
|
-
default: () => undefined,
|
|
225
|
-
}),
|
|
226
|
-
// ─── Trace Output ───
|
|
227
|
-
/**
|
|
228
|
-
* Accumulated trace entries from each graph node.
|
|
229
|
-
* Used for observability: surfaces internal processing steps (search query, HyDE strategies,
|
|
230
|
-
* candidates found, evaluation results) to the frontend.
|
|
231
|
-
*/
|
|
232
|
-
trace: Annotation({
|
|
233
|
-
reducer: (curr, next) => [...curr, ...(next || [])],
|
|
234
|
-
default: () => [],
|
|
235
|
-
}),
|
|
236
|
-
/** Timing records for each agent invocation within this graph run. */
|
|
237
|
-
agentTimings: Annotation({
|
|
238
|
-
reducer: (acc, val) => [...acc, ...val],
|
|
239
|
-
default: () => [],
|
|
240
|
-
}),
|
|
241
|
-
/**
|
|
242
|
-
* Per-candidate negotiation records captured by `negotiateNode`. Populated
|
|
243
|
-
* regardless of accept/reject so the question generator sees a complete
|
|
244
|
-
* picture. Empty when the negotiate node was skipped (no opportunities to
|
|
245
|
-
* negotiate).
|
|
246
|
-
*/
|
|
247
|
-
discoveryNegotiations: Annotation({
|
|
248
|
-
reducer: (curr, next) => [...curr, ...(next || [])],
|
|
249
|
-
default: () => [],
|
|
250
|
-
}),
|
|
251
|
-
/** Aggregate counters across `discoveryNegotiations`. Built in the negotiate node. */
|
|
252
|
-
discoverySummary: Annotation({
|
|
253
|
-
reducer: (_curr, next) => next ?? null,
|
|
254
|
-
default: () => null,
|
|
255
|
-
}),
|
|
256
|
-
});
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Card rendering and link minting for the opportunity tools.
|
|
3
|
-
*
|
|
4
|
-
* These are the pieces both `list_opportunities` and the mutation tools reach
|
|
5
|
-
* for: the deep links, the minimal fallback card, and the small guards that
|
|
6
|
-
* shape tool error payloads.
|
|
7
|
-
*/
|
|
8
|
-
import { type OpportunityOwnerAction, type OpportunityOwnerApprovalVerdict } from "./opportunity.owner-approval.js";
|
|
9
|
-
export declare function stripLeadingNarratorName(remark: string, narratorName: string): string;
|
|
10
|
-
import type { Opportunity } from "../shared/interfaces/database.interface.js";
|
|
11
|
-
export declare const logger: import("../shared/observability/log.js").LoggerWithSource;
|
|
12
|
-
/**
|
|
13
|
-
* Build the agent-facing profile link for a counterpart — always the Index web
|
|
14
|
-
* profile URL with `?link_preview=false`. Returns `undefined` only if
|
|
15
|
-
* `frontendUrl` is not configured.
|
|
16
|
-
*
|
|
17
|
-
* The `?link_preview=false` hint is honored by chat-gateway runtimes (e.g.
|
|
18
|
-
* OpenClaw's Telegram delivery) that strip link previews when present in the
|
|
19
|
-
* URL; consistent placement matters more than Telegram's own handling.
|
|
20
|
-
*
|
|
21
|
-
* Trailing slashes on frontendUrl are stripped before concatenation.
|
|
22
|
-
*/
|
|
23
|
-
export declare function buildProfileUrl(counterpartUserId: string, frontendUrl: string | undefined): string | undefined;
|
|
24
|
-
/**
|
|
25
|
-
* Build the deep-link to an opportunity's A2A negotiation trace
|
|
26
|
-
* (`/chat/:conversationId`) so users can see *what negotiation led to* the
|
|
27
|
-
* surfaced opportunity (EDG-50/EDG-51). Returns `undefined` when `frontendUrl`
|
|
28
|
-
* is unset or there is no negotiation conversation to link to.
|
|
29
|
-
*
|
|
30
|
-
* The `?link_preview=false` hint mirrors `buildProfileUrl` — chat-gateway
|
|
31
|
-
* runtimes (e.g. Telegram delivery) strip link previews when it is present.
|
|
32
|
-
* Trailing slashes on `frontendUrl` are stripped before concatenation.
|
|
33
|
-
*/
|
|
34
|
-
export declare function buildNegotiationUrl(conversationId: string | undefined, frontendUrl: string | undefined): string | undefined;
|
|
35
|
-
/**
|
|
36
|
-
* Build the agent-facing deep link for an opportunity — the canonical
|
|
37
|
-
* `https://index.network/o/<id>` universal link. Returns `undefined` when
|
|
38
|
-
* `frontendUrl` is unset or there is no opportunity id.
|
|
39
|
-
*
|
|
40
|
-
* This is the *only* place the protocol mints an opportunity deep link. It is
|
|
41
|
-
* a navigation link, not an authority: opening it raises the opportunity card
|
|
42
|
-
* in the Index macOS app when installed and a static Index landing page
|
|
43
|
-
* otherwise. Acceptance stays an authenticated call.
|
|
44
|
-
*
|
|
45
|
-
* No `?link_preview=false` hint here (unlike `buildProfileUrl`): the Hermes
|
|
46
|
-
* plugin mints the identical bare form for payloads the protocol does not
|
|
47
|
-
* touch, and keeping the two byte-identical is what makes its never-overwrite
|
|
48
|
-
* rule invisible.
|
|
49
|
-
*/
|
|
50
|
-
export declare function buildOpportunityAppUrl(opportunityId: string, frontendUrl: string | undefined): string | undefined;
|
|
51
|
-
/**
|
|
52
|
-
* Attach the agent-facing profile link for a counterpart to `card` (mutates
|
|
53
|
-
* in place). Every counterpart has a profile page worth linking to — without
|
|
54
|
-
* this, the agent gets a name with no URL attached and tends to fabricate
|
|
55
|
-
* one. Accept/act guidance is plain text ("accept in the Index app"); no
|
|
56
|
-
* actionable URLs are minted here.
|
|
57
|
-
*/
|
|
58
|
-
export declare function attachProfileLink(card: Record<string, unknown> & {
|
|
59
|
-
opportunityId: string;
|
|
60
|
-
}, opts: {
|
|
61
|
-
counterpartUserId: string;
|
|
62
|
-
frontendUrl: string | undefined;
|
|
63
|
-
}): void;
|
|
64
|
-
/**
|
|
65
|
-
* Attach the opportunity deep link to `card` (mutates in place) so every MCP
|
|
66
|
-
* client — Claude Desktop, the CLI, the web, Hermes — can hand the user one
|
|
67
|
-
* clickable link to the card instead of fabricating one from an id.
|
|
68
|
-
*/
|
|
69
|
-
export declare function attachOpportunityAppLink(card: Record<string, unknown> & {
|
|
70
|
-
opportunityId: string;
|
|
71
|
-
}, opts: {
|
|
72
|
-
frontendUrl: string | undefined;
|
|
73
|
-
}): void;
|
|
74
|
-
/**
|
|
75
|
-
* IND-593: stable fail-closed denial for the owner-approval boundary. The
|
|
76
|
-
* `missing` reason carries the fresh, server-derived interaction challenge the
|
|
77
|
-
* owner must explicitly approve; all other reasons carry no challenge.
|
|
78
|
-
*/
|
|
79
|
-
export declare function ownerApprovalDenial(opportunityId: string, action: OpportunityOwnerAction, verdict: Extract<OpportunityOwnerApprovalVerdict, {
|
|
80
|
-
kind: 'denied';
|
|
81
|
-
}>): string;
|
|
82
|
-
/**
|
|
83
|
-
* Maximum number of opportunity cards to show per chat response.
|
|
84
|
-
* Sized for `selectByComposition` to fill both feed buckets — up to 3
|
|
85
|
-
* connection + 3 connector-flow per the digest/ambient prompt rules.
|
|
86
|
-
*/
|
|
87
|
-
export declare const CHAT_DISPLAY_LIMIT = 6;
|
|
88
|
-
/**
|
|
89
|
-
* Build minimal opportunity card data for chat without calling the LLM presenter.
|
|
90
|
-
* Uses only required fields from the opportunity record and counterpart name/avatar
|
|
91
|
-
* so list_opportunities and discovery return quickly.
|
|
92
|
-
*
|
|
93
|
-
* Note: narratorChip.text is generated via regex heuristics (narratorRemarkFromReasoning)
|
|
94
|
-
* rather than the OpportunityPresenter LLM. If narrator quality becomes an issue again,
|
|
95
|
-
* consider making this function async and delegating to OpportunityPresenter.presentCard()
|
|
96
|
-
* which already produces a high-quality narratorRemark via LLM (used by the home graph
|
|
97
|
-
* and discovery pipeline). The trade-off is 5-20s latency per card.
|
|
98
|
-
*
|
|
99
|
-
* Exported for use in tests (opportunity.tools.spec.ts).
|
|
100
|
-
*/
|
|
101
|
-
export declare function buildMinimalOpportunityCard(opp: Opportunity, viewerId: string, counterpartUserId: string, counterpartName: string, counterpartAvatar: string | null, introducerName?: string | null, introducerAvatar?: string | null, viewerName?: string, secondPartyName?: string, secondPartyAvatar?: string | null, secondPartyUserId?: string): {
|
|
102
|
-
opportunityId: string;
|
|
103
|
-
userId: string;
|
|
104
|
-
name: string;
|
|
105
|
-
avatar: string | null;
|
|
106
|
-
mainText: string;
|
|
107
|
-
cta: string;
|
|
108
|
-
headline: string;
|
|
109
|
-
primaryActionLabel: string;
|
|
110
|
-
secondaryActionLabel: string;
|
|
111
|
-
mutualIntentsLabel: string;
|
|
112
|
-
narratorChip: {
|
|
113
|
-
name: string;
|
|
114
|
-
text: string;
|
|
115
|
-
avatar?: string | null;
|
|
116
|
-
userId?: string;
|
|
117
|
-
};
|
|
118
|
-
viewerRole: string;
|
|
119
|
-
score: number | undefined;
|
|
120
|
-
status: string;
|
|
121
|
-
secondParty?: {
|
|
122
|
-
name: string;
|
|
123
|
-
avatar?: string | null;
|
|
124
|
-
userId?: string;
|
|
125
|
-
};
|
|
126
|
-
};
|
|
127
|
-
/**
|
|
128
|
-
* Stable, retry-classified error codes for `confirm_opportunity_delivery`.
|
|
129
|
-
*
|
|
130
|
-
* The plain `error()` envelope only carries a human message, which forced
|
|
131
|
-
* callers (the Hermes digest sweep) to treat every failure — permanent or
|
|
132
|
-
* transient — as retryable, and made "already delivered but never confirmed"
|
|
133
|
-
* impossible to distinguish from "opportunity deleted". Each code carries an
|
|
134
|
-
* explicit `retryable` flag so deterministic callers can retry transient
|
|
135
|
-
* failures and drop permanent ones instead of re-spamming the ledger.
|
|
136
|
-
*/
|
|
137
|
-
export type ConfirmDeliveryErrorCode = "unauthenticated" | "ledger_unavailable" | "invalid_opportunity_id" | "opportunity_not_found" | "not_authorized" | "confirm_failed";
|
|
138
|
-
export declare function confirmDeliveryError(code: ConfirmDeliveryErrorCode, retryable: boolean, message: string): string;
|
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Card rendering and link minting for the opportunity tools.
|
|
3
|
-
*
|
|
4
|
-
* These are the pieces both `list_opportunities` and the mutation tools reach
|
|
5
|
-
* for: the deep links, the minimal fallback card, and the small guards that
|
|
6
|
-
* shape tool error payloads.
|
|
7
|
-
*/
|
|
8
|
-
import { MINIMAL_MAIN_TEXT_MAX_CHARS, getPrimaryActionLabel, SECONDARY_ACTION_LABEL } from "./opportunity.labels.js";
|
|
9
|
-
import { narratorRemarkFromReasoning, safeFallbackSummary } from "./opportunity.presentation.js";
|
|
10
|
-
export function stripLeadingNarratorName(remark, narratorName) {
|
|
11
|
-
let t = remark.trim();
|
|
12
|
-
if (!t || !narratorName.trim())
|
|
13
|
-
return remark;
|
|
14
|
-
const name = narratorName.trim();
|
|
15
|
-
const nameLower = name.toLowerCase();
|
|
16
|
-
for (;;) {
|
|
17
|
-
const lower = t.toLowerCase();
|
|
18
|
-
if (!lower.startsWith(nameLower))
|
|
19
|
-
break;
|
|
20
|
-
// Require a word boundary after the name so a short name like "Al" does not
|
|
21
|
-
// mangle a longer word ("Always …" → "ways …"). The char after the name must
|
|
22
|
-
// be a separator (sentence/clause punctuation or whitespace) or end of string.
|
|
23
|
-
// Keep this set in sync with the separator stripped from `rest` below.
|
|
24
|
-
const boundary = t.charAt(name.length);
|
|
25
|
-
if (boundary && !/[\s.:,\-–—]/.test(boundary))
|
|
26
|
-
break;
|
|
27
|
-
const rest = t.slice(name.length).replace(/^\s*[.:,\-–—]\s*/i, '').trim();
|
|
28
|
-
if (rest.length === 0 || rest === t)
|
|
29
|
-
break;
|
|
30
|
-
t = rest;
|
|
31
|
-
}
|
|
32
|
-
return t;
|
|
33
|
-
}
|
|
34
|
-
import { protocolLogger } from "../shared/observability/protocol.logger.js";
|
|
35
|
-
export const logger = protocolLogger("ChatTools:Opportunity");
|
|
36
|
-
/**
|
|
37
|
-
* Build the agent-facing profile link for a counterpart — always the Index web
|
|
38
|
-
* profile URL with `?link_preview=false`. Returns `undefined` only if
|
|
39
|
-
* `frontendUrl` is not configured.
|
|
40
|
-
*
|
|
41
|
-
* The `?link_preview=false` hint is honored by chat-gateway runtimes (e.g.
|
|
42
|
-
* OpenClaw's Telegram delivery) that strip link previews when present in the
|
|
43
|
-
* URL; consistent placement matters more than Telegram's own handling.
|
|
44
|
-
*
|
|
45
|
-
* Trailing slashes on frontendUrl are stripped before concatenation.
|
|
46
|
-
*/
|
|
47
|
-
export function buildProfileUrl(counterpartUserId, frontendUrl) {
|
|
48
|
-
// The profile link is always the Index web profile, regardless of the
|
|
49
|
-
// counterpart's socials.
|
|
50
|
-
if (!frontendUrl)
|
|
51
|
-
return undefined;
|
|
52
|
-
const base = frontendUrl.replace(/\/+$/, "");
|
|
53
|
-
return `${base}/u/${counterpartUserId}?link_preview=false`;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Build the deep-link to an opportunity's A2A negotiation trace
|
|
57
|
-
* (`/chat/:conversationId`) so users can see *what negotiation led to* the
|
|
58
|
-
* surfaced opportunity (EDG-50/EDG-51). Returns `undefined` when `frontendUrl`
|
|
59
|
-
* is unset or there is no negotiation conversation to link to.
|
|
60
|
-
*
|
|
61
|
-
* The `?link_preview=false` hint mirrors `buildProfileUrl` — chat-gateway
|
|
62
|
-
* runtimes (e.g. Telegram delivery) strip link previews when it is present.
|
|
63
|
-
* Trailing slashes on `frontendUrl` are stripped before concatenation.
|
|
64
|
-
*/
|
|
65
|
-
export function buildNegotiationUrl(conversationId, frontendUrl) {
|
|
66
|
-
if (!frontendUrl || !conversationId)
|
|
67
|
-
return undefined;
|
|
68
|
-
const base = frontendUrl.replace(/\/+$/, "");
|
|
69
|
-
return `${base}/chat/${conversationId}?link_preview=false`;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Build the agent-facing deep link for an opportunity — the canonical
|
|
73
|
-
* `https://index.network/o/<id>` universal link. Returns `undefined` when
|
|
74
|
-
* `frontendUrl` is unset or there is no opportunity id.
|
|
75
|
-
*
|
|
76
|
-
* This is the *only* place the protocol mints an opportunity deep link. It is
|
|
77
|
-
* a navigation link, not an authority: opening it raises the opportunity card
|
|
78
|
-
* in the Index macOS app when installed and a static Index landing page
|
|
79
|
-
* otherwise. Acceptance stays an authenticated call.
|
|
80
|
-
*
|
|
81
|
-
* No `?link_preview=false` hint here (unlike `buildProfileUrl`): the Hermes
|
|
82
|
-
* plugin mints the identical bare form for payloads the protocol does not
|
|
83
|
-
* touch, and keeping the two byte-identical is what makes its never-overwrite
|
|
84
|
-
* rule invisible.
|
|
85
|
-
*/
|
|
86
|
-
export function buildOpportunityAppUrl(opportunityId, frontendUrl) {
|
|
87
|
-
if (!frontendUrl || !opportunityId)
|
|
88
|
-
return undefined;
|
|
89
|
-
const base = frontendUrl.replace(/\/+$/, "");
|
|
90
|
-
return `${base}/o/${opportunityId}`;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Attach the agent-facing profile link for a counterpart to `card` (mutates
|
|
94
|
-
* in place). Every counterpart has a profile page worth linking to — without
|
|
95
|
-
* this, the agent gets a name with no URL attached and tends to fabricate
|
|
96
|
-
* one. Accept/act guidance is plain text ("accept in the Index app"); no
|
|
97
|
-
* actionable URLs are minted here.
|
|
98
|
-
*/
|
|
99
|
-
export function attachProfileLink(card, opts) {
|
|
100
|
-
const profileUrl = buildProfileUrl(opts.counterpartUserId, opts.frontendUrl);
|
|
101
|
-
if (profileUrl)
|
|
102
|
-
card.profileUrl = profileUrl;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Attach the opportunity deep link to `card` (mutates in place) so every MCP
|
|
106
|
-
* client — Claude Desktop, the CLI, the web, Hermes — can hand the user one
|
|
107
|
-
* clickable link to the card instead of fabricating one from an id.
|
|
108
|
-
*/
|
|
109
|
-
export function attachOpportunityAppLink(card, opts) {
|
|
110
|
-
const appUrl = buildOpportunityAppUrl(card.opportunityId, opts.frontendUrl);
|
|
111
|
-
if (appUrl)
|
|
112
|
-
card.appUrl = appUrl;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* IND-593: stable fail-closed denial for the owner-approval boundary. The
|
|
116
|
-
* `missing` reason carries the fresh, server-derived interaction challenge the
|
|
117
|
-
* owner must explicitly approve; all other reasons carry no challenge.
|
|
118
|
-
*/
|
|
119
|
-
export function ownerApprovalDenial(opportunityId, action, verdict) {
|
|
120
|
-
return JSON.stringify({
|
|
121
|
-
success: false,
|
|
122
|
-
error: `Owner approval required for this opportunity ${action} (${verdict.reason}).`,
|
|
123
|
-
approval: {
|
|
124
|
-
code: "owner_approval_required",
|
|
125
|
-
reason: verdict.reason,
|
|
126
|
-
opportunityId,
|
|
127
|
-
action,
|
|
128
|
-
...(verdict.challenge
|
|
129
|
-
? { interactionId: verdict.challenge.interactionId, expiresAt: verdict.challenge.expiresAt }
|
|
130
|
-
: {}),
|
|
131
|
-
},
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Maximum number of opportunity cards to show per chat response.
|
|
136
|
-
* Sized for `selectByComposition` to fill both feed buckets — up to 3
|
|
137
|
-
* connection + 3 connector-flow per the digest/ambient prompt rules.
|
|
138
|
-
*/
|
|
139
|
-
export const CHAT_DISPLAY_LIMIT = 6;
|
|
140
|
-
/**
|
|
141
|
-
* Build minimal opportunity card data for chat without calling the LLM presenter.
|
|
142
|
-
* Uses only required fields from the opportunity record and counterpart name/avatar
|
|
143
|
-
* so list_opportunities and discovery return quickly.
|
|
144
|
-
*
|
|
145
|
-
* Note: narratorChip.text is generated via regex heuristics (narratorRemarkFromReasoning)
|
|
146
|
-
* rather than the OpportunityPresenter LLM. If narrator quality becomes an issue again,
|
|
147
|
-
* consider making this function async and delegating to OpportunityPresenter.presentCard()
|
|
148
|
-
* which already produces a high-quality narratorRemark via LLM (used by the home graph
|
|
149
|
-
* and discovery pipeline). The trade-off is 5-20s latency per card.
|
|
150
|
-
*
|
|
151
|
-
* Exported for use in tests (opportunity.tools.spec.ts).
|
|
152
|
-
*/
|
|
153
|
-
export function buildMinimalOpportunityCard(opp, viewerId, counterpartUserId, counterpartName, counterpartAvatar, introducerName, introducerAvatar, viewerName, secondPartyName, secondPartyAvatar, secondPartyUserId) {
|
|
154
|
-
const viewerActor = opp.actors.find((a) => a.userId === viewerId);
|
|
155
|
-
const viewerRole = viewerActor?.role ?? "party";
|
|
156
|
-
const introducerActor = opp.actors.find((a) => a.role === "introducer" && a.userId !== viewerId);
|
|
157
|
-
const viewerIsIntroducer = opp.actors.some((a) => a.role === "introducer" && a.userId === viewerId);
|
|
158
|
-
const reasoning = opp.interpretation?.reasoning ?? "";
|
|
159
|
-
// Shared sanitization standard — see opportunity.safe-presentation.ts.
|
|
160
|
-
const mainText = safeFallbackSummary(reasoning, {
|
|
161
|
-
counterpartName,
|
|
162
|
-
viewerName,
|
|
163
|
-
introducerName: introducerName ?? undefined,
|
|
164
|
-
maxChars: MINIMAL_MAIN_TEXT_MAX_CHARS,
|
|
165
|
-
emptyText: "A suggested connection.",
|
|
166
|
-
});
|
|
167
|
-
const score = typeof opp.interpretation?.confidence === "number"
|
|
168
|
-
? opp.interpretation.confidence
|
|
169
|
-
: undefined;
|
|
170
|
-
const narratorName = viewerIsIntroducer
|
|
171
|
-
? "You"
|
|
172
|
-
: introducerName?.trim() || (introducerActor ? "Someone" : "Index");
|
|
173
|
-
const primaryActionLabel = getPrimaryActionLabel(viewerRole);
|
|
174
|
-
return {
|
|
175
|
-
opportunityId: opp.id,
|
|
176
|
-
userId: counterpartUserId,
|
|
177
|
-
name: counterpartName,
|
|
178
|
-
avatar: counterpartAvatar,
|
|
179
|
-
mainText,
|
|
180
|
-
cta: "Start a conversation to connect.",
|
|
181
|
-
headline: viewerIsIntroducer && secondPartyName
|
|
182
|
-
? `${counterpartName} → ${secondPartyName}`
|
|
183
|
-
: `Connection with ${counterpartName}`,
|
|
184
|
-
primaryActionLabel,
|
|
185
|
-
secondaryActionLabel: SECONDARY_ACTION_LABEL,
|
|
186
|
-
mutualIntentsLabel: "Suggested connection",
|
|
187
|
-
narratorChip: {
|
|
188
|
-
name: narratorName,
|
|
189
|
-
text: narratorRemarkFromReasoning(reasoning, counterpartName, viewerName),
|
|
190
|
-
...(viewerIsIntroducer
|
|
191
|
-
? { userId: viewerId, avatar: null }
|
|
192
|
-
: introducerActor
|
|
193
|
-
? { userId: introducerActor.userId, avatar: introducerAvatar ?? null }
|
|
194
|
-
: {}),
|
|
195
|
-
},
|
|
196
|
-
viewerRole,
|
|
197
|
-
score,
|
|
198
|
-
status: opp.status ?? "latent",
|
|
199
|
-
...(viewerIsIntroducer && secondPartyName
|
|
200
|
-
? {
|
|
201
|
-
secondParty: {
|
|
202
|
-
name: secondPartyName,
|
|
203
|
-
...(secondPartyAvatar != null ? { avatar: secondPartyAvatar } : {}),
|
|
204
|
-
...(secondPartyUserId ? { userId: secondPartyUserId } : {}),
|
|
205
|
-
},
|
|
206
|
-
}
|
|
207
|
-
: {}),
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
export function confirmDeliveryError(code, retryable, message) {
|
|
211
|
-
return JSON.stringify({ success: false, error: message, code, retryable });
|
|
212
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The opportunity tool registry: list, update, and delivery confirmation.
|
|
3
|
-
*
|
|
4
|
-
* `list_opportunities` lives in `opportunity.tools.list.ts` and the shared card
|
|
5
|
-
* and link helpers in `opportunity.tools.cards.ts`; this file wires the three
|
|
6
|
-
* tools together and owns the two mutation tools.
|
|
7
|
-
*/
|
|
8
|
-
import type { DefineTool } from "../shared/agent/tool.helpers.js";
|
|
9
|
-
import type { OpportunityToolDeps } from "./opportunity.tools.port.js";
|
|
10
|
-
export { buildOpportunityPresentation } from "./opportunity.presentation.js";
|
|
11
|
-
export { attachOpportunityAppLink, attachProfileLink, buildMinimalOpportunityCard, buildNegotiationUrl, buildOpportunityAppUrl, buildProfileUrl } from "./opportunity.tools.cards.js";
|
|
12
|
-
export declare function createOpportunityTools(defineTool: DefineTool, deps: OpportunityToolDeps): readonly [any, any, any];
|