@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
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Applies status-transition admission rules before lifecycle persistence.
|
|
3
|
-
* Acceptance is a two-party action: an actor that already acted cannot accept
|
|
4
|
-
* again, while rejection and expiry remain available to any participating actor.
|
|
5
|
-
*/
|
|
6
|
-
export function assessOpportunityStatusTransition(opportunity, actorUserId, newStatus) {
|
|
7
|
-
if (newStatus !== 'accepted' && newStatus !== 'rejected' && newStatus !== 'expired') {
|
|
8
|
-
return { success: false, error: 'newStatus must be one of: accepted, rejected, expired.' };
|
|
9
|
-
}
|
|
10
|
-
const callerActor = opportunity.actors.find((actor) => actor.userId === actorUserId);
|
|
11
|
-
if (!callerActor) {
|
|
12
|
-
return { success: false, error: 'You are not part of this opportunity.' };
|
|
13
|
-
}
|
|
14
|
-
if (newStatus === 'accepted') {
|
|
15
|
-
if (callerActor.actedAt) {
|
|
16
|
-
return {
|
|
17
|
-
success: false,
|
|
18
|
-
error: 'You have already acted on this opportunity. The other party must accept.',
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
return {
|
|
22
|
-
kind: 'stamp_accepted',
|
|
23
|
-
counterpartUserId: opportunity.actors.find((actor) => actor.userId !== actorUserId && actor.role !== 'introducer')?.userId,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
return { kind: 'set_terminal_status', status: newStatus };
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Applies send admission and recipient-routing rules without performing writes.
|
|
30
|
-
* Introducers, peers, and direct patient/party flows each reveal the next tier
|
|
31
|
-
* to a distinct audience.
|
|
32
|
-
*/
|
|
33
|
-
export function assessOpportunitySend(opportunity, actorUserId) {
|
|
34
|
-
if (opportunity.status !== 'latent' && opportunity.status !== 'draft') {
|
|
35
|
-
return {
|
|
36
|
-
success: false,
|
|
37
|
-
error: `Opportunity is already ${opportunity.status}; only latent or draft opportunities can be sent.`,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
const sender = opportunity.actors.find((actor) => actor.userId === actorUserId);
|
|
41
|
-
if (!sender) {
|
|
42
|
-
return { success: false, error: 'You are not part of this opportunity.' };
|
|
43
|
-
}
|
|
44
|
-
const hasIntroducer = opportunity.actors.some((actor) => actor.role === 'introducer');
|
|
45
|
-
const canSend = sender.role === 'introducer'
|
|
46
|
-
|| sender.role === 'peer'
|
|
47
|
-
|| (sender.role === 'patient' && !hasIntroducer)
|
|
48
|
-
|| (sender.role === 'party' && !hasIntroducer);
|
|
49
|
-
if (!canSend) {
|
|
50
|
-
return { success: false, error: 'You cannot send this opportunity.' };
|
|
51
|
-
}
|
|
52
|
-
const recipients = sender.role === 'introducer'
|
|
53
|
-
? opportunity.actors.filter((actor) => actor.role === 'patient' || actor.role === 'party')
|
|
54
|
-
: sender.role === 'peer'
|
|
55
|
-
? opportunity.actors.filter((actor) => actor.role === 'peer' && actor.userId !== actorUserId)
|
|
56
|
-
: opportunity.actors.filter((actor) => actor.role === 'agent');
|
|
57
|
-
return { sender, recipients };
|
|
58
|
-
}
|
|
59
|
-
/** Checks whether a caller may approve this opportunity's introducer gate. */
|
|
60
|
-
export function assessIntroductionApproval(opportunity, actorUserId) {
|
|
61
|
-
const introducerActor = opportunity.actors.find((actor) => actor.role === 'introducer' && actor.userId === actorUserId);
|
|
62
|
-
if (!introducerActor) {
|
|
63
|
-
return { success: false, error: 'You are not the introducer for this opportunity' };
|
|
64
|
-
}
|
|
65
|
-
if (introducerActor.approved === true) {
|
|
66
|
-
return { success: false, error: 'Introduction already approved' };
|
|
67
|
-
}
|
|
68
|
-
return { kind: 'approve' };
|
|
69
|
-
}
|
|
70
|
-
function isMutationResult(value) {
|
|
71
|
-
return 'success' in value;
|
|
72
|
-
}
|
|
73
|
-
/** Persists an admitted status transition, preserving accept-before-write DM ordering. */
|
|
74
|
-
export async function updateOpportunityLifecycle(database, input) {
|
|
75
|
-
if (!input.opportunityId) {
|
|
76
|
-
return { success: false, error: 'opportunityId is required.' };
|
|
77
|
-
}
|
|
78
|
-
// Preserve the graph's legacy validation order: invalid transitions do not
|
|
79
|
-
// read persistence and always return the input error before actor checks.
|
|
80
|
-
if (input.newStatus !== 'accepted' && input.newStatus !== 'rejected' && input.newStatus !== 'expired') {
|
|
81
|
-
return { success: false, error: 'newStatus must be one of: accepted, rejected, expired.' };
|
|
82
|
-
}
|
|
83
|
-
const opportunity = await database.getOpportunity(input.opportunityId);
|
|
84
|
-
if (!opportunity) {
|
|
85
|
-
return { success: false, error: 'Opportunity not found.' };
|
|
86
|
-
}
|
|
87
|
-
const plan = assessOpportunityStatusTransition(opportunity, input.actorUserId, input.newStatus);
|
|
88
|
-
if (isMutationResult(plan))
|
|
89
|
-
return plan;
|
|
90
|
-
let conversationId;
|
|
91
|
-
if (plan.kind === 'stamp_accepted') {
|
|
92
|
-
if (plan.counterpartUserId) {
|
|
93
|
-
const dm = await database.getOrCreateDM(input.actorUserId, plan.counterpartUserId);
|
|
94
|
-
conversationId = dm.id;
|
|
95
|
-
}
|
|
96
|
-
await database.stampOpportunityActorAction(input.opportunityId, input.actorUserId, 'accepted', input.actorUserId);
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
await database.updateOpportunityStatus(input.opportunityId, plan.status);
|
|
100
|
-
}
|
|
101
|
-
return {
|
|
102
|
-
success: true,
|
|
103
|
-
opportunityId: input.opportunityId,
|
|
104
|
-
message: `Opportunity status updated to ${input.newStatus}.`,
|
|
105
|
-
...(conversationId && { conversationId }),
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
/** Expires an opportunity after verifying the caller is one of its actors. */
|
|
109
|
-
export async function deleteOpportunityLifecycle(database, input) {
|
|
110
|
-
if (!input.opportunityId) {
|
|
111
|
-
return { success: false, error: 'opportunityId is required.' };
|
|
112
|
-
}
|
|
113
|
-
const opportunity = await database.getOpportunity(input.opportunityId);
|
|
114
|
-
if (!opportunity) {
|
|
115
|
-
return { success: false, error: 'Opportunity not found.' };
|
|
116
|
-
}
|
|
117
|
-
if (!opportunity.actors.some((actor) => actor.userId === input.actorUserId)) {
|
|
118
|
-
return { success: false, error: 'You are not part of this opportunity.' };
|
|
119
|
-
}
|
|
120
|
-
await database.updateOpportunityStatus(input.opportunityId, 'expired');
|
|
121
|
-
return {
|
|
122
|
-
success: true,
|
|
123
|
-
opportunityId: input.opportunityId,
|
|
124
|
-
message: 'Opportunity archived (expired).',
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
/** Persists a send transition, then notifies only the actors exposed by its routing policy. */
|
|
128
|
-
export async function sendOpportunityLifecycle(database, input, queueNotification) {
|
|
129
|
-
if (!input.opportunityId) {
|
|
130
|
-
return { success: false, error: 'opportunityId is required.' };
|
|
131
|
-
}
|
|
132
|
-
const opportunity = await database.getOpportunity(input.opportunityId);
|
|
133
|
-
if (!opportunity) {
|
|
134
|
-
return { success: false, error: 'Opportunity not found.' };
|
|
135
|
-
}
|
|
136
|
-
const plan = assessOpportunitySend(opportunity, input.actorUserId);
|
|
137
|
-
if (isMutationResult(plan))
|
|
138
|
-
return plan;
|
|
139
|
-
await database.stampOpportunityActorAction(input.opportunityId, input.actorUserId, 'pending');
|
|
140
|
-
if (queueNotification) {
|
|
141
|
-
for (const recipient of plan.recipients) {
|
|
142
|
-
await queueNotification(opportunity.id, recipient.userId, 'high');
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
return {
|
|
146
|
-
success: true,
|
|
147
|
-
opportunityId: opportunity.id,
|
|
148
|
-
notified: plan.recipients.map((actor) => actor.userId),
|
|
149
|
-
message: 'Opportunity sent. The other person has been notified.',
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
/** Approves an introducer gate before enqueuing the existing-opportunity negotiation. */
|
|
153
|
-
export async function approveOpportunityIntroduction(database, input, queueNegotiateExisting) {
|
|
154
|
-
if (!input.opportunityId) {
|
|
155
|
-
return { success: false, error: 'opportunityId required for approve_introduction' };
|
|
156
|
-
}
|
|
157
|
-
let opportunity;
|
|
158
|
-
try {
|
|
159
|
-
opportunity = await database.getOpportunity(input.opportunityId);
|
|
160
|
-
}
|
|
161
|
-
catch (error) {
|
|
162
|
-
return {
|
|
163
|
-
success: false,
|
|
164
|
-
error: `Failed to load opportunity: ${error instanceof Error ? error.message : String(error)}`,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
if (!opportunity) {
|
|
168
|
-
return { success: false, error: 'Opportunity not found' };
|
|
169
|
-
}
|
|
170
|
-
const admission = assessIntroductionApproval(opportunity, input.actorUserId);
|
|
171
|
-
if (isMutationResult(admission))
|
|
172
|
-
return admission;
|
|
173
|
-
const updated = await database.updateOpportunityActorApproval(input.opportunityId, input.actorUserId, true);
|
|
174
|
-
if (!updated) {
|
|
175
|
-
return { success: false, error: 'Failed to update approval' };
|
|
176
|
-
}
|
|
177
|
-
if (queueNegotiateExisting) {
|
|
178
|
-
await queueNegotiateExisting(input.opportunityId, input.actorUserId);
|
|
179
|
-
}
|
|
180
|
-
return { success: true, opportunityId: input.opportunityId };
|
|
181
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* opportunity — the capability's sole cross-capability surface.
|
|
3
|
-
*
|
|
4
|
-
* Anything outside this capability imports from here and nowhere else.
|
|
5
|
-
* Supersedes the capabilities/*.facade.ts + opportunities/public/ pair; the export
|
|
6
|
-
* list is the union of the facades it replaces, so the contract is unchanged.
|
|
7
|
-
*/
|
|
8
|
-
export { getOrCreateDeliveryCardBatch, } from "./delivery-card.cache.js";
|
|
9
|
-
export { OpportunityEvaluator, } from "./opportunity.evaluator.js";
|
|
10
|
-
export type { EvaluatorInput, } from "./opportunity.evaluator.js";
|
|
11
|
-
export { OpportunityGraphFactory, } from "./opportunity.graph.js";
|
|
12
|
-
export type { OpportunityGraphThresholdOverrides, } from "./opportunity.graph.js";
|
|
13
|
-
export { isIntroducerDiscoveryEnabled, } from "./opportunity.introducer-feature.js";
|
|
14
|
-
export { INTRODUCER_DISCOVERY_SOURCE, MAX_CANDIDATES_PER_CONTACT, MAX_CONTACTS_PER_CYCLE, runIntroducerDiscovery, selectContactsForDiscovery, shouldRunIntroducerDiscovery, } from "./opportunity.introducer.js";
|
|
15
|
-
export type { ContactWithIntents, IntroducerDiscoveryDatabase, IntroducerDiscoveryQueue, } from "./opportunity.introducer.js";
|
|
16
|
-
export type { StampNewbornOpportunitiesFn, StampNewbornOpportunitiesInput, } from "./opportunity.newborn-stamping.js";
|
|
17
|
-
export { opportunityOwnerActionForStatus, } from "./opportunity.owner-approval.js";
|
|
18
|
-
export type { OpportunityOwnerAction, OpportunityOwnerApprovalAttestation, OpportunityOwnerApprovalAuthority, OpportunityOwnerApprovalBinding, OpportunityOwnerApprovalChallenge, OpportunityOwnerApprovalDenialReason, OpportunityOwnerApprovalVerdict, OpportunityOwnerInteractionProvenance, OpportunityOwnerInteractionSurface, } from "./opportunity.owner-approval.js";
|
|
19
|
-
export { bindOwnerApprovalProvenance, } from "./opportunity.owner-provenance.js";
|
|
20
|
-
export { persistOpportunities, } from "./opportunity.persist.js";
|
|
21
|
-
export { gatherPresenterContext, OpportunityPresenter, } from "./opportunity.presentation.js";
|
|
22
|
-
export type { PresenterDatabase, } from "./opportunity.presentation.js";
|
|
23
|
-
export { createOpportunityTools, } from "./opportunity.tools.js";
|
|
24
|
-
export { DISCOVERY_EVALUATOR_MIN_SCORE_DEFAULT, DISCOVERY_MIN_SIMILARITY_DEFAULT, discoveryAllowedTypes, discoveryEvaluatorMinScore, discoveryIntentMatchingEnabled, discoveryMinSimilarity, discoveryProfileMatchingEnabled, discoveryProfileSource, resetDiscoveryEnvWarningsForTests, validateDiscoveryEvaluatorMinScore, validateDiscoveryMinSimilarity, } from "./discovery.env.js";
|
|
25
|
-
export type { DiscoveryMatchType, DiscoveryProfileSource, } from "./discovery.env.js";
|
|
26
|
-
export { buildPoolAdjustment, mergePoolAdjustment, planPoolAdjustments, } from "./discriminator/discriminator.adjustments.js";
|
|
27
|
-
export type { PoolAdjustment, PoolAdjustmentSignal, } from "./discriminator/discriminator.adjustments.js";
|
|
28
|
-
export { PoolDiscriminatorAssigner, } from "./discriminator/discriminator.assigner.js";
|
|
29
|
-
export type { PoolDiscriminatorAssignedAxis, PoolDiscriminatorAssignmentInput, } from "./discriminator/discriminator.assigner.js";
|
|
30
|
-
export { POOL_DISCRIMINATOR_MAX_CANDIDATES, POOL_DISCRIMINATOR_MAX_PUBLIC_CONTEXT_CHARS, POOL_DISCRIMINATOR_MIN_POOL_SIZE, POOL_QUESTION_MAX_PENDING_PER_INTENT, POOL_QUESTION_MIN_VOI, POOL_RERUN_DEBOUNCE_MS, POOL_VISIT_MINING_DEBOUNCE_MS, poolQuestionsMiningMode, poolQuestionsMode, poolQuestionsPushMode, poolQuestionsRanking, poolQuestionsStampNewborn, poolQuestionsVisitTrigger, } from "./discriminator/discriminator.env.js";
|
|
31
|
-
export { PoolDiscriminatorMiner, } from "./discriminator/discriminator.miner.js";
|
|
32
|
-
export { buildPoolQuestionPushMessage, poolQuestionCycleKey, } from "./discriminator/discriminator.push.js";
|
|
33
|
-
export { BOTH_MATTER_LABEL, selectQuestionDiscriminators, synthesizePoolQuestion, toQuestionDiscriminator, } from "./discriminator/discriminator.question.js";
|
|
34
|
-
export { runPoolDiscriminatorShadow, } from "./discriminator/discriminator.shadow.js";
|
|
35
|
-
export type { DiscriminatorMiningInput, MinedDiscriminator, PoolCandidate, } from "./discriminator/discriminator.types.js";
|
|
36
|
-
export { hasUnsupportedOpportunityClaim, stripUnsupportedOpportunityClaims, stripUnsupportedOpportunityClaims as stripUnsupportedOpportunityClaimsText, } from "../shared/utils/claim-safety.js";
|
|
37
|
-
export { buildCandidateEvidence, } from "./opportunity.evidence.js";
|
|
38
|
-
export { getPrimaryActionLabel, } from "./opportunity.labels.js";
|
|
39
|
-
export { buildApiChatCardPresentationCacheKey, buildDeliveryCardPresentationCacheKey, buildRadarCardPresentationCacheKey, } from "./opportunity.presentation.js";
|
|
40
|
-
export { presentOpportunity, stripUuids, truncateAtBoundary, } from "./opportunity.presentation.js";
|
|
41
|
-
export type { UserInfo, } from "./opportunity.presentation.js";
|
|
42
|
-
export { DEFAULT_FALLBACK_HEADLINE, safeFallbackSummary, } from "./opportunity.presentation.js";
|
|
43
|
-
export { canUserSeeOpportunity, classifyOpportunity, isActionableForViewer, RADAR_SOFT_TARGETS, selectByComposition, validateOpportunityActors, } from "./opportunity.utils.js";
|
|
44
|
-
export { NEGOTIATION_EVIDENCE_MAX_OPPORTUNITIES, negotiationEvidenceQuestionsMode, } from "./negotiation-evidence/negotiation-evidence.env.js";
|
|
45
|
-
export { NegotiationEvidenceMiner, } from "./negotiation-evidence/negotiation-evidence.miner.js";
|
|
46
|
-
export { runNegotiationEvidenceShadow, } from "./negotiation-evidence/negotiation-evidence.shadow.js";
|
|
47
|
-
export type { RawEvidenceOutcome, RawEvidenceOwnerAnswer, RawEvidenceSegment, RawEvidenceTurn, } from "./negotiation-evidence/negotiation-evidence.types.js";
|
|
48
|
-
export { isOutcomeQuestionsActivated, OUTCOME_MAX_CANDIDATES, OUTCOME_MAX_PUBLIC_CONTEXT_CHARS, OUTCOME_MIN_INDEPENDENT_EXAMPLES, } from "./outcome/outcome.env.js";
|
|
49
|
-
export { runOutcomeShadow, } from "./outcome/outcome.shadow.js";
|
|
50
|
-
export type { OutcomeExample, OutcomeLabel, OutcomeShadowResult, } from "./outcome/outcome.types.js";
|
|
51
|
-
export type { OpportunityToolDeps, } from "./opportunity.tools.port.js";
|
|
52
|
-
export { RadarGraphFactory, } from "./radar/radar.graph.js";
|
|
53
|
-
export { computeRadarHealth, } from "./radar/radar.health.js";
|
|
54
|
-
export type { RadarHealthInput, } from "./radar/radar.health.js";
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* opportunity — the capability's sole cross-capability surface.
|
|
3
|
-
*
|
|
4
|
-
* Anything outside this capability imports from here and nowhere else.
|
|
5
|
-
* Supersedes the capabilities/*.facade.ts + opportunities/public/ pair; the export
|
|
6
|
-
* list is the union of the facades it replaces, so the contract is unchanged.
|
|
7
|
-
*/
|
|
8
|
-
export { getOrCreateDeliveryCardBatch, } from "./delivery-card.cache.js";
|
|
9
|
-
export { OpportunityEvaluator, } from "./opportunity.evaluator.js";
|
|
10
|
-
export { OpportunityGraphFactory, } from "./opportunity.graph.js";
|
|
11
|
-
export { isIntroducerDiscoveryEnabled, } from "./opportunity.introducer-feature.js";
|
|
12
|
-
export { INTRODUCER_DISCOVERY_SOURCE, MAX_CANDIDATES_PER_CONTACT, MAX_CONTACTS_PER_CYCLE, runIntroducerDiscovery, selectContactsForDiscovery, shouldRunIntroducerDiscovery, } from "./opportunity.introducer.js";
|
|
13
|
-
export { opportunityOwnerActionForStatus, } from "./opportunity.owner-approval.js";
|
|
14
|
-
export { bindOwnerApprovalProvenance, } from "./opportunity.owner-provenance.js";
|
|
15
|
-
export { persistOpportunities, } from "./opportunity.persist.js";
|
|
16
|
-
export { gatherPresenterContext, OpportunityPresenter, } from "./opportunity.presentation.js";
|
|
17
|
-
export { createOpportunityTools, } from "./opportunity.tools.js";
|
|
18
|
-
export { DISCOVERY_EVALUATOR_MIN_SCORE_DEFAULT, DISCOVERY_MIN_SIMILARITY_DEFAULT, discoveryAllowedTypes, discoveryEvaluatorMinScore, discoveryIntentMatchingEnabled, discoveryMinSimilarity, discoveryProfileMatchingEnabled, discoveryProfileSource, resetDiscoveryEnvWarningsForTests, validateDiscoveryEvaluatorMinScore, validateDiscoveryMinSimilarity, } from "./discovery.env.js";
|
|
19
|
-
export { buildPoolAdjustment, mergePoolAdjustment, planPoolAdjustments, } from "./discriminator/discriminator.adjustments.js";
|
|
20
|
-
export { PoolDiscriminatorAssigner, } from "./discriminator/discriminator.assigner.js";
|
|
21
|
-
export { POOL_DISCRIMINATOR_MAX_CANDIDATES, POOL_DISCRIMINATOR_MAX_PUBLIC_CONTEXT_CHARS, POOL_DISCRIMINATOR_MIN_POOL_SIZE, POOL_QUESTION_MAX_PENDING_PER_INTENT, POOL_QUESTION_MIN_VOI, POOL_RERUN_DEBOUNCE_MS, POOL_VISIT_MINING_DEBOUNCE_MS, poolQuestionsMiningMode, poolQuestionsMode, poolQuestionsPushMode, poolQuestionsRanking, poolQuestionsStampNewborn, poolQuestionsVisitTrigger, } from "./discriminator/discriminator.env.js";
|
|
22
|
-
export { PoolDiscriminatorMiner, } from "./discriminator/discriminator.miner.js";
|
|
23
|
-
export { buildPoolQuestionPushMessage, poolQuestionCycleKey, } from "./discriminator/discriminator.push.js";
|
|
24
|
-
export { BOTH_MATTER_LABEL, selectQuestionDiscriminators, synthesizePoolQuestion, toQuestionDiscriminator, } from "./discriminator/discriminator.question.js";
|
|
25
|
-
export { runPoolDiscriminatorShadow, } from "./discriminator/discriminator.shadow.js";
|
|
26
|
-
export { hasUnsupportedOpportunityClaim, stripUnsupportedOpportunityClaims, stripUnsupportedOpportunityClaims as stripUnsupportedOpportunityClaimsText, } from "../shared/utils/claim-safety.js";
|
|
27
|
-
export { buildCandidateEvidence, } from "./opportunity.evidence.js";
|
|
28
|
-
export { getPrimaryActionLabel, } from "./opportunity.labels.js";
|
|
29
|
-
export { buildApiChatCardPresentationCacheKey, buildDeliveryCardPresentationCacheKey, buildRadarCardPresentationCacheKey, } from "./opportunity.presentation.js";
|
|
30
|
-
export { presentOpportunity, stripUuids, truncateAtBoundary, } from "./opportunity.presentation.js";
|
|
31
|
-
export { DEFAULT_FALLBACK_HEADLINE, safeFallbackSummary, } from "./opportunity.presentation.js";
|
|
32
|
-
export { canUserSeeOpportunity, classifyOpportunity, isActionableForViewer, RADAR_SOFT_TARGETS, selectByComposition, validateOpportunityActors, } from "./opportunity.utils.js";
|
|
33
|
-
export { NEGOTIATION_EVIDENCE_MAX_OPPORTUNITIES, negotiationEvidenceQuestionsMode, } from "./negotiation-evidence/negotiation-evidence.env.js";
|
|
34
|
-
export { NegotiationEvidenceMiner, } from "./negotiation-evidence/negotiation-evidence.miner.js";
|
|
35
|
-
export { runNegotiationEvidenceShadow, } from "./negotiation-evidence/negotiation-evidence.shadow.js";
|
|
36
|
-
export { isOutcomeQuestionsActivated, OUTCOME_MAX_CANDIDATES, OUTCOME_MAX_PUBLIC_CONTEXT_CHARS, OUTCOME_MIN_INDEPENDENT_EXAMPLES, } from "./outcome/outcome.env.js";
|
|
37
|
-
export { runOutcomeShadow, } from "./outcome/outcome.shadow.js";
|
|
38
|
-
export { RadarGraphFactory, } from "./radar/radar.graph.js";
|
|
39
|
-
export { computeRadarHealth, } from "./radar/radar.health.js";
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type { CreateOpportunityData } from '../shared/interfaces/database.interface.js';
|
|
2
|
-
/** Input for the host-side newborn pool-preference stamper (IND-420 P4b). */
|
|
3
|
-
export interface StampNewbornOpportunitiesInput {
|
|
4
|
-
ownerUserId: string;
|
|
5
|
-
intentId: string;
|
|
6
|
-
items: CreateOpportunityData[];
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Optional host callback that stamps call-local create items before INSERT.
|
|
10
|
-
* It must preserve array length/order and may only enrich metadata/signals.
|
|
11
|
-
*/
|
|
12
|
-
export type StampNewbornOpportunitiesFn = (input: StampNewbornOpportunitiesInput) => Promise<CreateOpportunityData[]>;
|
|
13
|
-
/** Persist-node facts that determine whether a new item may cross the host stamping boundary. */
|
|
14
|
-
export interface NewbornStampingEligibility {
|
|
15
|
-
ownerUserId: string;
|
|
16
|
-
operationMode?: string;
|
|
17
|
-
hasIntroductionContext: boolean;
|
|
18
|
-
onBehalfOfUserId?: string;
|
|
19
|
-
targetUserId?: string;
|
|
20
|
-
discoverySource?: string;
|
|
21
|
-
resolvedTriggerIntentId?: string;
|
|
22
|
-
indexedIntentIds: readonly string[];
|
|
23
|
-
}
|
|
24
|
-
/** Fail-open events are injected so the graph retains its owning observability policy. */
|
|
25
|
-
export interface NewbornStampingObserver {
|
|
26
|
-
onUnsafeResult?: (details: {
|
|
27
|
-
expected: number;
|
|
28
|
-
actual: number | null;
|
|
29
|
-
}) => void;
|
|
30
|
-
onFailure?: (details: {
|
|
31
|
-
intentId: string;
|
|
32
|
-
error: unknown;
|
|
33
|
-
}) => void;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Stamps only newly-created, owned-intent discovery items. Reactivations and
|
|
37
|
-
* manual, introducer, on-behalf-of, context-only, and continuation flows never
|
|
38
|
-
* cross this host boundary. Unsafe callback output and callback failures retain
|
|
39
|
-
* the original create items without changing their order.
|
|
40
|
-
*/
|
|
41
|
-
export declare function stampEligibleNewbornOpportunities(itemsToPersist: CreateOpportunityData[], eligibility: NewbornStampingEligibility, stamper?: StampNewbornOpportunitiesFn, observer?: NewbornStampingObserver): Promise<CreateOpportunityData[]>;
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
function copyCreateOpportunityData(item) {
|
|
2
|
-
return {
|
|
3
|
-
...item,
|
|
4
|
-
detection: { ...item.detection },
|
|
5
|
-
actors: item.actors.map((actor) => ({ ...actor })),
|
|
6
|
-
interpretation: {
|
|
7
|
-
...item.interpretation,
|
|
8
|
-
signals: item.interpretation.signals?.map((signal) => ({ ...signal })),
|
|
9
|
-
},
|
|
10
|
-
context: { ...item.context },
|
|
11
|
-
metadata: item.metadata ? { ...item.metadata } : item.metadata,
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
/** Fields a stamper is not allowed to change; this also protects candidate order. */
|
|
15
|
-
function newbornItemIdentity(item) {
|
|
16
|
-
return JSON.stringify({
|
|
17
|
-
detection: item.detection,
|
|
18
|
-
actors: item.actors,
|
|
19
|
-
interpretation: {
|
|
20
|
-
category: item.interpretation.category,
|
|
21
|
-
reasoning: item.interpretation.reasoning,
|
|
22
|
-
confidence: item.interpretation.confidence,
|
|
23
|
-
},
|
|
24
|
-
context: item.context,
|
|
25
|
-
confidence: item.confidence,
|
|
26
|
-
status: item.status,
|
|
27
|
-
expiresAt: item.expiresAt?.toISOString(),
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Stamps only newly-created, owned-intent discovery items. Reactivations and
|
|
32
|
-
* manual, introducer, on-behalf-of, context-only, and continuation flows never
|
|
33
|
-
* cross this host boundary. Unsafe callback output and callback failures retain
|
|
34
|
-
* the original create items without changing their order.
|
|
35
|
-
*/
|
|
36
|
-
export async function stampEligibleNewbornOpportunities(itemsToPersist, eligibility, stamper, observer) {
|
|
37
|
-
const stampIntentId = eligibility.resolvedTriggerIntentId;
|
|
38
|
-
const mayStamp = Boolean(stamper
|
|
39
|
-
&& eligibility.operationMode === 'create'
|
|
40
|
-
&& !eligibility.hasIntroductionContext
|
|
41
|
-
&& !eligibility.onBehalfOfUserId
|
|
42
|
-
&& !eligibility.targetUserId
|
|
43
|
-
&& eligibility.discoverySource === 'intent'
|
|
44
|
-
&& stampIntentId
|
|
45
|
-
&& eligibility.indexedIntentIds.includes(stampIntentId));
|
|
46
|
-
if (!mayStamp || !stampIntentId || itemsToPersist.length === 0 || !stamper) {
|
|
47
|
-
return itemsToPersist;
|
|
48
|
-
}
|
|
49
|
-
const eligibleIndexes = itemsToPersist.flatMap((item, index) => item.detection.source === 'opportunity_graph' && item.detection.triggeredBy === stampIntentId
|
|
50
|
-
? [index]
|
|
51
|
-
: []);
|
|
52
|
-
if (eligibleIndexes.length === 0)
|
|
53
|
-
return itemsToPersist;
|
|
54
|
-
const originals = eligibleIndexes.map((index) => itemsToPersist[index]);
|
|
55
|
-
try {
|
|
56
|
-
const stamped = await stamper({
|
|
57
|
-
ownerUserId: eligibility.ownerUserId,
|
|
58
|
-
intentId: stampIntentId,
|
|
59
|
-
items: originals.map(copyCreateOpportunityData),
|
|
60
|
-
});
|
|
61
|
-
const valid = Array.isArray(stamped)
|
|
62
|
-
&& stamped.length === originals.length
|
|
63
|
-
&& stamped.every((item, index) => newbornItemIdentity(item) === newbornItemIdentity(originals[index]));
|
|
64
|
-
if (!valid) {
|
|
65
|
-
observer?.onUnsafeResult?.({
|
|
66
|
-
expected: originals.length,
|
|
67
|
-
actual: Array.isArray(stamped) ? stamped.length : null,
|
|
68
|
-
});
|
|
69
|
-
return itemsToPersist;
|
|
70
|
-
}
|
|
71
|
-
const itemsForPersistence = [...itemsToPersist];
|
|
72
|
-
eligibleIndexes.forEach((itemIndex, stampedIndex) => {
|
|
73
|
-
itemsForPersistence[itemIndex] = stamped[stampedIndex];
|
|
74
|
-
});
|
|
75
|
-
return itemsForPersistence;
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
observer?.onFailure?.({ intentId: stampIntentId, error });
|
|
79
|
-
return itemsToPersist;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IND-593: protocol-owned owner-approval authority port.
|
|
3
|
-
*
|
|
4
|
-
* Every registered MCP-agent opportunity state change (send/accept/reject)
|
|
5
|
-
* requires an explicit owner-issued, fresh, atomically single-use proof bound
|
|
6
|
-
* to the exact opportunity, target action, owner principal, acting agent, and
|
|
7
|
-
* current server-derived interaction. The protocol owns this verifier/consumer
|
|
8
|
-
* contract and the fail-closed boundary in `update_opportunity`; the host
|
|
9
|
-
* injects the concrete authority (challenge store + signed-proof issuance).
|
|
10
|
-
*
|
|
11
|
-
* Direct authenticated-owner interactions (REST/chat/CLI) traverse the same
|
|
12
|
-
* boundary through `attestOwnerInteraction`: the host attests the
|
|
13
|
-
* server-derived principal and interaction provenance of the already
|
|
14
|
-
* authenticated owner session. Caller-controlled identity or proof-binding
|
|
15
|
-
* fields are never trusted by either path — the binding below is always
|
|
16
|
-
* derived from the resolved tool context.
|
|
17
|
-
*
|
|
18
|
-
* A2A negotiation approvals, agent self-acknowledgment
|
|
19
|
-
* (`acknowledgedUptakeQuestionIds`), and server-generated advisory/challenge
|
|
20
|
-
* values are explicitly NOT substitutes for owner authorization.
|
|
21
|
-
*/
|
|
22
|
-
/** Owner-gated opportunity actions. `expired` is a system transition and is not gated. */
|
|
23
|
-
export type OpportunityOwnerAction = 'send' | 'accept' | 'reject';
|
|
24
|
-
/** Maps an update_opportunity target status to its owner-gated action, or null when ungated. */
|
|
25
|
-
export declare function opportunityOwnerActionForStatus(status: string): OpportunityOwnerAction | null;
|
|
26
|
-
/**
|
|
27
|
-
* Server-derived proof binding. Built exclusively from the resolved tool
|
|
28
|
-
* context and validated tool input — never from caller-supplied binding
|
|
29
|
-
* fields. `agentId` is present exactly when a registered agent acts.
|
|
30
|
-
*/
|
|
31
|
-
export interface OpportunityOwnerApprovalBinding {
|
|
32
|
-
opportunityId: string;
|
|
33
|
-
action: OpportunityOwnerAction;
|
|
34
|
-
ownerId: string;
|
|
35
|
-
agentId?: string;
|
|
36
|
-
}
|
|
37
|
-
/** Server-derived transport surface of the current interaction. */
|
|
38
|
-
export type OpportunityOwnerInteractionSurface = 'mcp' | 'chat' | 'rest';
|
|
39
|
-
/**
|
|
40
|
-
* Trusted interaction/surface provenance for a non-agent tool call (IND-593
|
|
41
|
-
* Batch B). Derived exclusively from the resolved server context — the host
|
|
42
|
-
* composition binds `isSessionAuth` from the authenticated request identity,
|
|
43
|
-
* and the surface follows the composition root (MCP server, chat factory,
|
|
44
|
-
* REST tool service). Tool arguments and caller-supplied fields can never
|
|
45
|
-
* populate it. The host authority attests ONLY a genuine direct owner
|
|
46
|
-
* session (`sessionAuthenticated` on a non-chat surface); chat/CLI/H2A/A2A
|
|
47
|
-
* and other mediated surfaces fail closed with `untrusted_provenance`.
|
|
48
|
-
*/
|
|
49
|
-
export interface OpportunityOwnerInteractionProvenance {
|
|
50
|
-
surface: OpportunityOwnerInteractionSurface;
|
|
51
|
-
/** True only when the host bound an authenticated owner session (never an API key or a mediated orchestrator) to this exact request. */
|
|
52
|
-
sessionAuthenticated: boolean;
|
|
53
|
-
}
|
|
54
|
-
/** Attestation input: the server-derived binding plus trusted provenance. */
|
|
55
|
-
export type OpportunityOwnerApprovalAttestation = OpportunityOwnerApprovalBinding & {
|
|
56
|
-
provenance: OpportunityOwnerInteractionProvenance;
|
|
57
|
-
};
|
|
58
|
-
/** Stable, testable denial reasons for the fail-closed owner-approval boundary. */
|
|
59
|
-
export type OpportunityOwnerApprovalDenialReason =
|
|
60
|
-
/** No proof presented (or no authority wired); a fresh interaction challenge is attached. */
|
|
61
|
-
'missing'
|
|
62
|
-
/** Proof fails authenticity/structure checks (bad signature, unknown interaction, foreign token). */
|
|
63
|
-
| 'forged'
|
|
64
|
-
/** Proof or underlying challenge has expired. */
|
|
65
|
-
| 'stale'
|
|
66
|
-
/** Proof is not bound to an exact opportunities/action/owner/agent/interaction. */
|
|
67
|
-
| 'generic'
|
|
68
|
-
/** Proof binding mismatches the current server-derived binding. */
|
|
69
|
-
| 'wrong_owner' | 'wrong_agent' | 'wrong_action' | 'wrong_opportunity'
|
|
70
|
-
/** Proof was already consumed; single-use is atomic. */
|
|
71
|
-
| 'replayed'
|
|
72
|
-
/** The interaction's server-derived provenance cannot mint or attest owner authority; an owner-issued proof is required. */
|
|
73
|
-
| 'untrusted_provenance'
|
|
74
|
-
/** The authority's store or configuration failed; nothing is admitted. */
|
|
75
|
-
| 'unavailable';
|
|
76
|
-
/**
|
|
77
|
-
* Fresh, server-derived interaction challenge returned with a `missing`
|
|
78
|
-
* denial. The owner explicitly approves this exact interaction (bound to the
|
|
79
|
-
* full server-derived binding) to obtain a one-time proof.
|
|
80
|
-
*/
|
|
81
|
-
export interface OpportunityOwnerApprovalChallenge {
|
|
82
|
-
interactionId: string;
|
|
83
|
-
expiresAt: string;
|
|
84
|
-
}
|
|
85
|
-
export type OpportunityOwnerApprovalVerdict = {
|
|
86
|
-
kind: 'admitted';
|
|
87
|
-
} | {
|
|
88
|
-
kind: 'denied';
|
|
89
|
-
reason: OpportunityOwnerApprovalDenialReason;
|
|
90
|
-
challenge?: OpportunityOwnerApprovalChallenge;
|
|
91
|
-
};
|
|
92
|
-
/**
|
|
93
|
-
* Authoritative owner-proof verifier/consumer, injected by the host.
|
|
94
|
-
* Implementations MUST fail closed and MUST make consumption atomically
|
|
95
|
-
* single-use: a denied verification never consumes a proof; a successful one
|
|
96
|
-
* consumes it exactly once, even under concurrent calls.
|
|
97
|
-
*/
|
|
98
|
-
export interface OpportunityOwnerApprovalAuthority {
|
|
99
|
-
/**
|
|
100
|
-
* Verify and atomically consume an agent-presented proof against the
|
|
101
|
-
* server-derived binding. When `proof` is undefined the implementation
|
|
102
|
-
* registers the current interaction as a fresh challenge and denies with
|
|
103
|
-
* reason `missing`, attaching the challenge so the agent can relay it to the
|
|
104
|
-
* owner for explicit approval.
|
|
105
|
-
*/
|
|
106
|
-
consumeAgentProof(proof: string | undefined, binding: OpportunityOwnerApprovalBinding & {
|
|
107
|
-
agentId: string;
|
|
108
|
-
}): Promise<OpportunityOwnerApprovalVerdict>;
|
|
109
|
-
/**
|
|
110
|
-
* Traverse the same boundary for a non-agent interaction. The host attests
|
|
111
|
-
* ONLY a genuine direct authenticated-owner session, judged from the
|
|
112
|
-
* server-derived principal and interaction/surface provenance — this is
|
|
113
|
-
* authoritative host derivation, not a bypass. Mediated surfaces
|
|
114
|
-
* (chat/CLI/H2A/A2A) and absent or malformed provenance fail closed with
|
|
115
|
-
* `untrusted_provenance`.
|
|
116
|
-
*/
|
|
117
|
-
attestOwnerInteraction(binding: OpportunityOwnerApprovalAttestation): Promise<OpportunityOwnerApprovalVerdict>;
|
|
118
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IND-593: protocol-owned owner-approval authority port.
|
|
3
|
-
*
|
|
4
|
-
* Every registered MCP-agent opportunity state change (send/accept/reject)
|
|
5
|
-
* requires an explicit owner-issued, fresh, atomically single-use proof bound
|
|
6
|
-
* to the exact opportunity, target action, owner principal, acting agent, and
|
|
7
|
-
* current server-derived interaction. The protocol owns this verifier/consumer
|
|
8
|
-
* contract and the fail-closed boundary in `update_opportunity`; the host
|
|
9
|
-
* injects the concrete authority (challenge store + signed-proof issuance).
|
|
10
|
-
*
|
|
11
|
-
* Direct authenticated-owner interactions (REST/chat/CLI) traverse the same
|
|
12
|
-
* boundary through `attestOwnerInteraction`: the host attests the
|
|
13
|
-
* server-derived principal and interaction provenance of the already
|
|
14
|
-
* authenticated owner session. Caller-controlled identity or proof-binding
|
|
15
|
-
* fields are never trusted by either path — the binding below is always
|
|
16
|
-
* derived from the resolved tool context.
|
|
17
|
-
*
|
|
18
|
-
* A2A negotiation approvals, agent self-acknowledgment
|
|
19
|
-
* (`acknowledgedUptakeQuestionIds`), and server-generated advisory/challenge
|
|
20
|
-
* values are explicitly NOT substitutes for owner authorization.
|
|
21
|
-
*/
|
|
22
|
-
/** Maps an update_opportunity target status to its owner-gated action, or null when ungated. */
|
|
23
|
-
export function opportunityOwnerActionForStatus(status) {
|
|
24
|
-
switch (status) {
|
|
25
|
-
case 'pending':
|
|
26
|
-
return 'send';
|
|
27
|
-
case 'accepted':
|
|
28
|
-
return 'accept';
|
|
29
|
-
case 'rejected':
|
|
30
|
-
return 'reject';
|
|
31
|
-
default:
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { ResolvedToolContext } from "../shared/agent/tool.helpers.js";
|
|
2
|
-
import type { OpportunityOwnerInteractionProvenance } from "./opportunity.owner-approval.js";
|
|
3
|
-
/** Bind authoritative host provenance to one resolved tool context. */
|
|
4
|
-
export declare function bindOwnerApprovalProvenance(context: ResolvedToolContext, provenance: OpportunityOwnerInteractionProvenance): void;
|
|
5
|
-
/** Read host-bound provenance without accepting any caller-supplied surrogate. */
|
|
6
|
-
export declare function ownerApprovalProvenanceFor(context: ResolvedToolContext): OpportunityOwnerInteractionProvenance | undefined;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Capability-local extension of the resolved tool context for IND-593.
|
|
3
|
-
*
|
|
4
|
-
* The host is the only writer: it binds provenance after authentication and
|
|
5
|
-
* before the registry invokes a tool. Tool input schemas never contain this
|
|
6
|
-
* field, so a caller cannot forge a direct-owner interaction through args or
|
|
7
|
-
* generic context data. Keeping this extension here avoids changing the shared
|
|
8
|
-
* helper that is part of the negotiations/question architecture cycle.
|
|
9
|
-
*/
|
|
10
|
-
const OWNER_APPROVAL_PROVENANCE = Symbol("ownerApprovalProvenance");
|
|
11
|
-
function hasOwnerApprovalProvenance(context) {
|
|
12
|
-
return OWNER_APPROVAL_PROVENANCE in context;
|
|
13
|
-
}
|
|
14
|
-
/** Bind authoritative host provenance to one resolved tool context. */
|
|
15
|
-
export function bindOwnerApprovalProvenance(context, provenance) {
|
|
16
|
-
Object.defineProperty(context, OWNER_APPROVAL_PROVENANCE, {
|
|
17
|
-
value: Object.freeze({ ...provenance }),
|
|
18
|
-
enumerable: false,
|
|
19
|
-
configurable: false,
|
|
20
|
-
writable: false,
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
/** Read host-bound provenance without accepting any caller-supplied surrogate. */
|
|
24
|
-
export function ownerApprovalProvenanceFor(context) {
|
|
25
|
-
return hasOwnerApprovalProvenance(context)
|
|
26
|
-
? context[OWNER_APPROVAL_PROVENANCE]
|
|
27
|
-
: undefined;
|
|
28
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared persist phase for opportunity creation: enrichOrCreate → create (or create+expire) → optional chat injection.
|
|
3
|
-
* Used by the opportunity graph persist node and by the manual opportunity service for consistency.
|
|
4
|
-
*/
|
|
5
|
-
import type { CreateOpportunityData, IntentScopedOpportunityPersistenceResult, Opportunity, OpportunityDedupConflict, OpportunityNetworkEligibility, OpportunityStatus } from '../shared/interfaces/database.interface.js';
|
|
6
|
-
import type { Embedder } from '../shared/interfaces/embedder.interface.js';
|
|
7
|
-
import type { EnricherDatabase } from "./opportunity.enricher.js";
|
|
8
|
-
export type PersistOpportunityDatabase = EnricherDatabase & {
|
|
9
|
-
createOpportunity(data: CreateOpportunityData): Promise<Opportunity>;
|
|
10
|
-
createOpportunityIfNetworkEligible?(data: CreateOpportunityData, eligibility: OpportunityNetworkEligibility): Promise<Opportunity | null>;
|
|
11
|
-
updateOpportunityStatus(id: string, status: OpportunityStatus): Promise<void | Opportunity | null>;
|
|
12
|
-
createOpportunityAndExpireIds?(data: CreateOpportunityData, expireIds: string[]): Promise<{
|
|
13
|
-
created: Opportunity;
|
|
14
|
-
expired: Opportunity[];
|
|
15
|
-
}>;
|
|
16
|
-
createOpportunityAndExpireIdsIfNetworkEligible?(data: CreateOpportunityData, expireIds: string[], eligibility: OpportunityNetworkEligibility): Promise<{
|
|
17
|
-
created: Opportunity;
|
|
18
|
-
expired: Opportunity[];
|
|
19
|
-
} | null>;
|
|
20
|
-
persistIntentScopedOpportunityIfNetworkEligible?(data: CreateOpportunityData, expireIds: string[], eligibility: OpportunityNetworkEligibility & {
|
|
21
|
-
triggerIntentId: string;
|
|
22
|
-
}, dedupWindowMs: number): Promise<IntentScopedOpportunityPersistenceResult | null>;
|
|
23
|
-
/** Optional: used to populate expired list in non-atomic path. */
|
|
24
|
-
getOpportunity?(id: string): Promise<Opportunity | null>;
|
|
25
|
-
};
|
|
26
|
-
export interface PersistOpportunitiesParams {
|
|
27
|
-
database: PersistOpportunityDatabase;
|
|
28
|
-
embedder: Embedder;
|
|
29
|
-
items: CreateOpportunityData[];
|
|
30
|
-
injectChat?: (opportunity: Opportunity) => Promise<unknown>;
|
|
31
|
-
/** Require adapter-level membership/assignment locks for discovery-created rows. */
|
|
32
|
-
networkEligibility?: OpportunityNetworkEligibility;
|
|
33
|
-
/** Scope dedup/enrichment and the final atomic re-check to one owned intent. */
|
|
34
|
-
intentDedupScope?: {
|
|
35
|
-
triggerIntentId: string;
|
|
36
|
-
dedupWindowMs: number;
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
export interface PersistOpportunitiesError {
|
|
40
|
-
itemIndex: number;
|
|
41
|
-
error: unknown;
|
|
42
|
-
}
|
|
43
|
-
export interface PersistOpportunitiesConflict extends OpportunityDedupConflict {
|
|
44
|
-
itemIndex: number;
|
|
45
|
-
finalAtomic: true;
|
|
46
|
-
}
|
|
47
|
-
export interface PersistOpportunitiesResult {
|
|
48
|
-
created: Opportunity[];
|
|
49
|
-
expired: Opportunity[];
|
|
50
|
-
conflicts: PersistOpportunitiesConflict[];
|
|
51
|
-
errors?: PersistOpportunitiesError[];
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Persist one or more opportunities: enrich (merge overlapping), create, expire replaced, optional chat injection.
|
|
55
|
-
* When the database has createOpportunityAndExpireIds and enrichment produced expireIds, uses it for atomic create+expire.
|
|
56
|
-
* Returns both created and expired so callers can emit events (e.g. manual service).
|
|
57
|
-
*/
|
|
58
|
-
export declare function persistOpportunities(params: PersistOpportunitiesParams): Promise<PersistOpportunitiesResult>;
|