@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,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Centralized accessors for pool-question environment variables (IND-416).
|
|
3
|
-
*
|
|
4
|
-
* POOL_QUESTIONS_MINING off | shadow — P1 shadow axis mining on
|
|
5
|
-
* discovery-run completion. `shadow` mines and
|
|
6
|
-
* scores axes and logs them; no questions are
|
|
7
|
-
* generated and no user-facing behavior changes.
|
|
8
|
-
* Any value other than "shadow" (including unset)
|
|
9
|
-
* means off.
|
|
10
|
-
*
|
|
11
|
-
* All reads go through this module — do not read these variables via
|
|
12
|
-
* `process.env` elsewhere. Values are read on every call (no caching) so
|
|
13
|
-
* tests and long-lived processes observe changes.
|
|
14
|
-
*/
|
|
15
|
-
/** Mining mode for pool discriminator axes. */
|
|
16
|
-
export type PoolQuestionsMiningMode = "off" | "shadow";
|
|
17
|
-
/** Current POOL_QUESTIONS_MINING mode (default off). */
|
|
18
|
-
export declare function poolQuestionsMiningMode(): PoolQuestionsMiningMode;
|
|
19
|
-
/** Question mode for pool discriminators (IND-418). */
|
|
20
|
-
export type PoolQuestionsMode = "off" | "on";
|
|
21
|
-
/**
|
|
22
|
-
* Current POOL_QUESTIONS_MODE (default off). When "on", the mining hook also
|
|
23
|
-
* enqueues a pool_discovery question for the top eligible discriminator
|
|
24
|
-
* (still subject to the QUESTIONER_ENABLED master gate and per-intent budget).
|
|
25
|
-
* "on" implies mining runs even when POOL_QUESTIONS_MINING is off.
|
|
26
|
-
*/
|
|
27
|
-
export declare function poolQuestionsMode(): PoolQuestionsMode;
|
|
28
|
-
/** Push delivery mode for high-VoI pool questions (IND-421). */
|
|
29
|
-
export type PoolQuestionsPushMode = "off" | "on";
|
|
30
|
-
/**
|
|
31
|
-
* Current POOL_QUESTIONS_PUSH mode (default off). Callers must additionally
|
|
32
|
-
* require pool-question mode and negotiator availability before delivery.
|
|
33
|
-
*/
|
|
34
|
-
export declare function poolQuestionsPushMode(): PoolQuestionsPushMode;
|
|
35
|
-
/** Visit-triggered pool-mining mode (IND-439 visibility-audit slice). */
|
|
36
|
-
export type PoolQuestionsVisitTriggerMode = "off" | "on";
|
|
37
|
-
/**
|
|
38
|
-
* Current POOL_QUESTIONS_VISIT_TRIGGER mode (default off). When "on", an
|
|
39
|
-
* intent owner's intent-page pending-questions fetch may enqueue a debounced
|
|
40
|
-
* pool-mining pass for that intent when no live pending pool_discovery
|
|
41
|
-
* question exists. The trigger only adds a *when* — every existing mining
|
|
42
|
-
* gate (POOL_QUESTIONS_MODE, k-anonymity floor, VoI threshold, per-intent
|
|
43
|
-
* budgets, fingerprint freshness, push budgets) applies unchanged, so this
|
|
44
|
-
* is a no-op unless {@link poolQuestionsMode} is also "on".
|
|
45
|
-
*/
|
|
46
|
-
export declare function poolQuestionsVisitTrigger(): PoolQuestionsVisitTriggerMode;
|
|
47
|
-
/**
|
|
48
|
-
* Debounce window for visit-triggered pool mining, per intent (IND-439).
|
|
49
|
-
* At most one visit-triggered mining run per intent per window, enforced via
|
|
50
|
-
* BullMQ deduplication — no new tables.
|
|
51
|
-
*/
|
|
52
|
-
export declare const POOL_VISIT_MINING_DEBOUNCE_MS: number;
|
|
53
|
-
/** Newborn-opportunity stamping mode (IND-420 P4b). */
|
|
54
|
-
export type PoolQuestionsStampNewbornMode = "off" | "on";
|
|
55
|
-
/**
|
|
56
|
-
* Current POOL_QUESTIONS_STAMP_NEWBORN mode (default off). Effective callers
|
|
57
|
-
* additionally require {@link poolQuestionsMode} to be on.
|
|
58
|
-
*/
|
|
59
|
-
export declare function poolQuestionsStampNewborn(): PoolQuestionsStampNewbornMode;
|
|
60
|
-
/** Minimum VoI for a discriminator to become (or chain) a question. */
|
|
61
|
-
export declare const POOL_QUESTION_MIN_VOI = 0.2;
|
|
62
|
-
/** Minimum evidence-verification rate for a discriminator to become a question. */
|
|
63
|
-
export declare const POOL_QUESTION_MIN_EVIDENCE_RATE = 0.6;
|
|
64
|
-
/** Max eligible discriminators carried per mining pass (asked + alternates). */
|
|
65
|
-
export declare const POOL_QUESTION_MAX_DISCRIMINATORS = 3;
|
|
66
|
-
/** Unattended budget: max pending questions of ANY mode per intent. */
|
|
67
|
-
export declare const POOL_QUESTION_MAX_PENDING_PER_INTENT = 3;
|
|
68
|
-
/** Initial internal VoI threshold for proactive push delivery. */
|
|
69
|
-
export declare const POOL_QUESTION_PUSH_BASE_VOI = 0.6;
|
|
70
|
-
/** Multiplicative VoI threshold increase per consecutive dismissal. */
|
|
71
|
-
export declare const POOL_QUESTION_PUSH_DISMISSAL_DECAY = 1.15;
|
|
72
|
-
/** Minimum pool size for proactive delivery (stricter than mining). */
|
|
73
|
-
export declare const POOL_QUESTION_PUSH_MIN_POOL_SIZE = 8;
|
|
74
|
-
/** Maximum claimed proactive pool pushes per recipient per UTC day. */
|
|
75
|
-
export declare const POOL_QUESTION_PUSH_DAILY_CAP = 2;
|
|
76
|
-
/** Ranking mode for pool adjustments (IND-419). */
|
|
77
|
-
export type PoolQuestionsRankingMode = "off" | "on";
|
|
78
|
-
/**
|
|
79
|
-
* Current POOL_QUESTIONS_RANKING (default off). When "on", the radar view
|
|
80
|
-
* orders by adjusted confidence (confidence × Π poolAdjustments.factor,
|
|
81
|
-
* floor {@link POOL_ADJUSTMENT_FLOOR}). Adjustments are WRITTEN regardless of
|
|
82
|
-
* this flag — it only gates whether ordering reads them, so the apply path
|
|
83
|
-
* can ship first.
|
|
84
|
-
*/
|
|
85
|
-
export declare function poolQuestionsRanking(): PoolQuestionsRankingMode;
|
|
86
|
-
/** Adjustment factor for candidates on the side the user did NOT choose. */
|
|
87
|
-
export declare const POOL_ADJUSTMENT_FACTOR_OTHER = 0.6;
|
|
88
|
-
/** Adjustment factor for candidates the miner could not assign (unknown). */
|
|
89
|
-
export declare const POOL_ADJUSTMENT_FACTOR_UNKNOWN = 0.9;
|
|
90
|
-
/** Floor for the cumulative adjustment multiplier — demoted, never hidden. */
|
|
91
|
-
export declare const POOL_ADJUSTMENT_FLOOR = 0.3;
|
|
92
|
-
/** Debounce window for answer-triggered re-discovery (Tier 1), per intent. */
|
|
93
|
-
export declare const POOL_RERUN_DEBOUNCE_MS = 60000;
|
|
94
|
-
/**
|
|
95
|
-
* k-anonymity floor: axes are only mined when the pool has at least this many
|
|
96
|
-
* candidates, so no axis (or later, question option) can be traced back to a
|
|
97
|
-
* specific individual.
|
|
98
|
-
*/
|
|
99
|
-
export declare const POOL_DISCRIMINATOR_MIN_POOL_SIZE = 5;
|
|
100
|
-
/** Max candidates sent to the miner LLM (top-N by score). */
|
|
101
|
-
export declare const POOL_DISCRIMINATOR_MAX_CANDIDATES = 24;
|
|
102
|
-
/** Max chars of public context per candidate in the miner prompt. */
|
|
103
|
-
export declare const POOL_DISCRIMINATOR_MAX_PUBLIC_CONTEXT_CHARS = 400;
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Centralized accessors for pool-question environment variables (IND-416).
|
|
3
|
-
*
|
|
4
|
-
* POOL_QUESTIONS_MINING off | shadow — P1 shadow axis mining on
|
|
5
|
-
* discovery-run completion. `shadow` mines and
|
|
6
|
-
* scores axes and logs them; no questions are
|
|
7
|
-
* generated and no user-facing behavior changes.
|
|
8
|
-
* Any value other than "shadow" (including unset)
|
|
9
|
-
* means off.
|
|
10
|
-
*
|
|
11
|
-
* All reads go through this module — do not read these variables via
|
|
12
|
-
* `process.env` elsewhere. Values are read on every call (no caching) so
|
|
13
|
-
* tests and long-lived processes observe changes.
|
|
14
|
-
*/
|
|
15
|
-
/** Current POOL_QUESTIONS_MINING mode (default off). */
|
|
16
|
-
export function poolQuestionsMiningMode() {
|
|
17
|
-
return process.env.POOL_QUESTIONS_MINING?.trim() === "shadow" ? "shadow" : "off";
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Current POOL_QUESTIONS_MODE (default off). When "on", the mining hook also
|
|
21
|
-
* enqueues a pool_discovery question for the top eligible discriminator
|
|
22
|
-
* (still subject to the QUESTIONER_ENABLED master gate and per-intent budget).
|
|
23
|
-
* "on" implies mining runs even when POOL_QUESTIONS_MINING is off.
|
|
24
|
-
*/
|
|
25
|
-
export function poolQuestionsMode() {
|
|
26
|
-
return process.env.POOL_QUESTIONS_MODE?.trim() === "on" ? "on" : "off";
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Current POOL_QUESTIONS_PUSH mode (default off). Callers must additionally
|
|
30
|
-
* require pool-question mode and negotiator availability before delivery.
|
|
31
|
-
*/
|
|
32
|
-
export function poolQuestionsPushMode() {
|
|
33
|
-
return process.env.POOL_QUESTIONS_PUSH?.trim() === "on" ? "on" : "off";
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Current POOL_QUESTIONS_VISIT_TRIGGER mode (default off). When "on", an
|
|
37
|
-
* intent owner's intent-page pending-questions fetch may enqueue a debounced
|
|
38
|
-
* pool-mining pass for that intent when no live pending pool_discovery
|
|
39
|
-
* question exists. The trigger only adds a *when* — every existing mining
|
|
40
|
-
* gate (POOL_QUESTIONS_MODE, k-anonymity floor, VoI threshold, per-intent
|
|
41
|
-
* budgets, fingerprint freshness, push budgets) applies unchanged, so this
|
|
42
|
-
* is a no-op unless {@link poolQuestionsMode} is also "on".
|
|
43
|
-
*/
|
|
44
|
-
export function poolQuestionsVisitTrigger() {
|
|
45
|
-
return process.env.POOL_QUESTIONS_VISIT_TRIGGER?.trim() === "on" ? "on" : "off";
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Debounce window for visit-triggered pool mining, per intent (IND-439).
|
|
49
|
-
* At most one visit-triggered mining run per intent per window, enforced via
|
|
50
|
-
* BullMQ deduplication — no new tables.
|
|
51
|
-
*/
|
|
52
|
-
export const POOL_VISIT_MINING_DEBOUNCE_MS = 6 * 60 * 60 * 1000;
|
|
53
|
-
/**
|
|
54
|
-
* Current POOL_QUESTIONS_STAMP_NEWBORN mode (default off). Effective callers
|
|
55
|
-
* additionally require {@link poolQuestionsMode} to be on.
|
|
56
|
-
*/
|
|
57
|
-
export function poolQuestionsStampNewborn() {
|
|
58
|
-
return process.env.POOL_QUESTIONS_STAMP_NEWBORN?.trim() === "on" ? "on" : "off";
|
|
59
|
-
}
|
|
60
|
-
/** Minimum VoI for a discriminator to become (or chain) a question. */
|
|
61
|
-
export const POOL_QUESTION_MIN_VOI = 0.2;
|
|
62
|
-
/** Minimum evidence-verification rate for a discriminator to become a question. */
|
|
63
|
-
export const POOL_QUESTION_MIN_EVIDENCE_RATE = 0.6;
|
|
64
|
-
/** Max eligible discriminators carried per mining pass (asked + alternates). */
|
|
65
|
-
export const POOL_QUESTION_MAX_DISCRIMINATORS = 3;
|
|
66
|
-
/** Unattended budget: max pending questions of ANY mode per intent. */
|
|
67
|
-
export const POOL_QUESTION_MAX_PENDING_PER_INTENT = 3;
|
|
68
|
-
/** Initial internal VoI threshold for proactive push delivery. */
|
|
69
|
-
export const POOL_QUESTION_PUSH_BASE_VOI = 0.6;
|
|
70
|
-
/** Multiplicative VoI threshold increase per consecutive dismissal. */
|
|
71
|
-
export const POOL_QUESTION_PUSH_DISMISSAL_DECAY = 1.15;
|
|
72
|
-
/** Minimum pool size for proactive delivery (stricter than mining). */
|
|
73
|
-
export const POOL_QUESTION_PUSH_MIN_POOL_SIZE = 8;
|
|
74
|
-
/** Maximum claimed proactive pool pushes per recipient per UTC day. */
|
|
75
|
-
export const POOL_QUESTION_PUSH_DAILY_CAP = 2;
|
|
76
|
-
/**
|
|
77
|
-
* Current POOL_QUESTIONS_RANKING (default off). When "on", the radar view
|
|
78
|
-
* orders by adjusted confidence (confidence × Π poolAdjustments.factor,
|
|
79
|
-
* floor {@link POOL_ADJUSTMENT_FLOOR}). Adjustments are WRITTEN regardless of
|
|
80
|
-
* this flag — it only gates whether ordering reads them, so the apply path
|
|
81
|
-
* can ship first.
|
|
82
|
-
*/
|
|
83
|
-
export function poolQuestionsRanking() {
|
|
84
|
-
return process.env.POOL_QUESTIONS_RANKING?.trim() === "on" ? "on" : "off";
|
|
85
|
-
}
|
|
86
|
-
/** Adjustment factor for candidates on the side the user did NOT choose. */
|
|
87
|
-
export const POOL_ADJUSTMENT_FACTOR_OTHER = 0.6;
|
|
88
|
-
/** Adjustment factor for candidates the miner could not assign (unknown). */
|
|
89
|
-
export const POOL_ADJUSTMENT_FACTOR_UNKNOWN = 0.9;
|
|
90
|
-
/** Floor for the cumulative adjustment multiplier — demoted, never hidden. */
|
|
91
|
-
export const POOL_ADJUSTMENT_FLOOR = 0.3;
|
|
92
|
-
/** Debounce window for answer-triggered re-discovery (Tier 1), per intent. */
|
|
93
|
-
export const POOL_RERUN_DEBOUNCE_MS = 60000;
|
|
94
|
-
/**
|
|
95
|
-
* k-anonymity floor: axes are only mined when the pool has at least this many
|
|
96
|
-
* candidates, so no axis (or later, question option) can be traced back to a
|
|
97
|
-
* specific individual.
|
|
98
|
-
*/
|
|
99
|
-
export const POOL_DISCRIMINATOR_MIN_POOL_SIZE = 5;
|
|
100
|
-
/** Max candidates sent to the miner LLM (top-N by score). */
|
|
101
|
-
export const POOL_DISCRIMINATOR_MAX_CANDIDATES = 24;
|
|
102
|
-
/** Max chars of public context per candidate in the miner prompt. */
|
|
103
|
-
export const POOL_DISCRIMINATOR_MAX_PUBLIC_CONTEXT_CHARS = 400;
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { createStructuredModel } from "../../shared/agent/model.config.js";
|
|
3
|
-
import type { MinedDiscriminator, DiscriminatorMiningInput } from "./discriminator.types.js";
|
|
4
|
-
declare const AxisMiningResponseSchema: z.ZodObject<{
|
|
5
|
-
axes: z.ZodArray<z.ZodObject<{
|
|
6
|
-
axis: z.ZodString;
|
|
7
|
-
questionSeed: z.ZodString;
|
|
8
|
-
sides: z.ZodArray<z.ZodString, "many">;
|
|
9
|
-
assignments: z.ZodArray<z.ZodObject<{
|
|
10
|
-
id: z.ZodString;
|
|
11
|
-
side: z.ZodNullable<z.ZodString>;
|
|
12
|
-
evidence: z.ZodNullable<z.ZodString>;
|
|
13
|
-
}, "strip", z.ZodTypeAny, {
|
|
14
|
-
id: string;
|
|
15
|
-
evidence: string | null;
|
|
16
|
-
side: string | null;
|
|
17
|
-
}, {
|
|
18
|
-
id: string;
|
|
19
|
-
evidence: string | null;
|
|
20
|
-
side: string | null;
|
|
21
|
-
}>, "many">;
|
|
22
|
-
}, "strip", z.ZodTypeAny, {
|
|
23
|
-
questionSeed: string;
|
|
24
|
-
sides: string[];
|
|
25
|
-
assignments: {
|
|
26
|
-
id: string;
|
|
27
|
-
evidence: string | null;
|
|
28
|
-
side: string | null;
|
|
29
|
-
}[];
|
|
30
|
-
axis: string;
|
|
31
|
-
}, {
|
|
32
|
-
questionSeed: string;
|
|
33
|
-
sides: string[];
|
|
34
|
-
assignments: {
|
|
35
|
-
id: string;
|
|
36
|
-
evidence: string | null;
|
|
37
|
-
side: string | null;
|
|
38
|
-
}[];
|
|
39
|
-
axis: string;
|
|
40
|
-
}>, "many">;
|
|
41
|
-
}, "strip", z.ZodTypeAny, {
|
|
42
|
-
axes: {
|
|
43
|
-
questionSeed: string;
|
|
44
|
-
sides: string[];
|
|
45
|
-
assignments: {
|
|
46
|
-
id: string;
|
|
47
|
-
evidence: string | null;
|
|
48
|
-
side: string | null;
|
|
49
|
-
}[];
|
|
50
|
-
axis: string;
|
|
51
|
-
}[];
|
|
52
|
-
}, {
|
|
53
|
-
axes: {
|
|
54
|
-
questionSeed: string;
|
|
55
|
-
sides: string[];
|
|
56
|
-
assignments: {
|
|
57
|
-
id: string;
|
|
58
|
-
evidence: string | null;
|
|
59
|
-
side: string | null;
|
|
60
|
-
}[];
|
|
61
|
-
axis: string;
|
|
62
|
-
}[];
|
|
63
|
-
}>;
|
|
64
|
-
type AxisMiningResponse = z.infer<typeof AxisMiningResponseSchema>;
|
|
65
|
-
/** Config for PoolDiscriminatorMiner construction. */
|
|
66
|
-
export interface PoolDiscriminatorMinerConfig {
|
|
67
|
-
/** Optional model config override (API key / base URL / model). */
|
|
68
|
-
modelConfig?: Parameters<typeof createStructuredModel>[3];
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Collapse whitespace, lowercase, and fold typographic punctuation to ASCII
|
|
72
|
-
* (curly quotes/apostrophes, en/em dashes, ellipsis), so evidence matching
|
|
73
|
-
* tolerates formatting drift without weakening the verbatim requirement.
|
|
74
|
-
*/
|
|
75
|
-
export declare function normalizePoolEvidenceForMatch(s: string): string;
|
|
76
|
-
/**
|
|
77
|
-
* Strips wrapping quotes and edge punctuation from an evidence span before
|
|
78
|
-
* matching. LLMs habitually sentence-ize copied spans (append a trailing
|
|
79
|
-
* period, wrap in quotes); the meaningful content must still match verbatim.
|
|
80
|
-
*/
|
|
81
|
-
export declare function stripPoolEvidenceEdgePunctuation(s: string): string;
|
|
82
|
-
/** Evidence verifier shared by mining and newborn assignment. */
|
|
83
|
-
export declare function poolEvidenceMatches(publicContext: string, evidence: string | null): boolean;
|
|
84
|
-
/**
|
|
85
|
-
* Stateless axis-mining agent. One `mine()` call = one structured LLM pass +
|
|
86
|
-
* deterministic evidence verification.
|
|
87
|
-
*/
|
|
88
|
-
export declare class PoolDiscriminatorMiner {
|
|
89
|
-
private model;
|
|
90
|
-
constructor(config?: PoolDiscriminatorMinerConfig);
|
|
91
|
-
/**
|
|
92
|
-
* Mine discriminating axes for one pool.
|
|
93
|
-
*
|
|
94
|
-
* @returns Verified axes (may be empty). Throws on LLM failure — callers
|
|
95
|
-
* run this fire-and-forget and must catch.
|
|
96
|
-
*/
|
|
97
|
-
mine(input: DiscriminatorMiningInput, options?: {
|
|
98
|
-
signal?: AbortSignal;
|
|
99
|
-
}): Promise<MinedDiscriminator[]>;
|
|
100
|
-
}
|
|
101
|
-
/** Builds the human message: intent text + one numbered block per candidate. */
|
|
102
|
-
export declare function buildMiningPrompt(input: DiscriminatorMiningInput): string;
|
|
103
|
-
/**
|
|
104
|
-
* Deterministic post-pass over one LLM axis:
|
|
105
|
-
* - drops assignments for ids not in the pool,
|
|
106
|
-
* - demotes to unknown: sides not in the axis's side list, missing evidence,
|
|
107
|
-
* and evidence that does not substring-match the candidate's publicContext,
|
|
108
|
-
* - collapses duplicate proposals to the same trim-normalized side,
|
|
109
|
-
* - demotes a candidate proposed for different sides to unknown (zero support),
|
|
110
|
-
* - guarantees exactly one assignment per pool candidate (missing → unknown),
|
|
111
|
-
* - computes evidenceRate = verified / distinct candidate-side proposals.
|
|
112
|
-
*/
|
|
113
|
-
export declare function verifyAxis(axis: AxisMiningResponse["axes"][number], candidates: DiscriminatorMiningInput["candidates"]): MinedDiscriminator;
|
|
114
|
-
export {};
|
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* PoolDiscriminatorMiner — one structured LLM pass that proposes discriminating axes
|
|
12
|
-
* over a discovery-run candidate pool, with code-side evidence verification
|
|
13
|
-
* (IND-417).
|
|
14
|
-
*
|
|
15
|
-
* Anti-hallucination contract: every side assignment must quote a short
|
|
16
|
-
* evidence span from that candidate's supplied publicContext. Verification is
|
|
17
|
-
* done in code (substring match, case/whitespace-insensitive), NOT trusted
|
|
18
|
-
* from the prompt. Failed verifications are demoted to `unknown`, which
|
|
19
|
-
* lowers coverage → lowers VoI → buries the axis. The failure mode
|
|
20
|
-
* self-punishes.
|
|
21
|
-
*
|
|
22
|
-
* Follows the QuestionerAgent pattern: constructor binds the structured
|
|
23
|
-
* model once; single public `mine()` per call.
|
|
24
|
-
*/
|
|
25
|
-
import { HumanMessage, SystemMessage } from "@langchain/core/messages";
|
|
26
|
-
import { z } from "zod";
|
|
27
|
-
import { createStructuredModel } from "../../shared/agent/model.config.js";
|
|
28
|
-
import { invokeWithAbortSignal } from "../../shared/agent/model-signal.js";
|
|
29
|
-
import { protocolLogger } from "../../shared/observability/protocol.logger.js";
|
|
30
|
-
import { Timed } from "../../shared/observability/performance.js";
|
|
31
|
-
const logger = protocolLogger("PoolDiscriminatorMiner");
|
|
32
|
-
/** Max axes requested from (and accepted out of) one mining pass. */
|
|
33
|
-
const MAX_AXES = 6;
|
|
34
|
-
const AxisMiningResponseSchema = z.object({
|
|
35
|
-
axes: z
|
|
36
|
-
.array(z.object({
|
|
37
|
-
axis: z
|
|
38
|
-
.string()
|
|
39
|
-
.describe("Short discriminating-axis label, e.g. 'Hands-on builders vs strategic advisors'"),
|
|
40
|
-
questionSeed: z
|
|
41
|
-
.string()
|
|
42
|
-
.describe("A direct question the intent owner could answer to resolve this axis"),
|
|
43
|
-
sides: z
|
|
44
|
-
.array(z.string())
|
|
45
|
-
.min(2)
|
|
46
|
-
.max(3)
|
|
47
|
-
.describe("2-3 mutually exclusive side labels (2-5 words each)"),
|
|
48
|
-
assignments: z
|
|
49
|
-
.array(z.object({
|
|
50
|
-
id: z.string().describe("Candidate id exactly as given"),
|
|
51
|
-
side: z
|
|
52
|
-
.string()
|
|
53
|
-
.nullable()
|
|
54
|
-
.describe("One of this axis's side labels, or null when the context is insufficient"),
|
|
55
|
-
evidence: z
|
|
56
|
-
.string()
|
|
57
|
-
.max(200)
|
|
58
|
-
.nullable()
|
|
59
|
-
.describe("VERBATIM span (≤80 chars) copied from this candidate's context that justifies the side. null when side is null"),
|
|
60
|
-
}))
|
|
61
|
-
.describe("One entry per candidate"),
|
|
62
|
-
}))
|
|
63
|
-
.max(MAX_AXES),
|
|
64
|
-
});
|
|
65
|
-
const SYSTEM_PROMPT = `You analyze a pool of candidate matches for one user intent and propose the preference axes that best SPLIT the pool into meaningfully different groups.
|
|
66
|
-
|
|
67
|
-
Rules for every axis:
|
|
68
|
-
- Sides must be mutually exclusive readings of one dimension (a candidate belongs to at most one side).
|
|
69
|
-
- The axis must NOT already be determined by the intent text itself — only propose axes the intent leaves genuinely open.
|
|
70
|
-
- The axis must be phrased as a preference the intent OWNER could hold and answer (the questionSeed asks them directly).
|
|
71
|
-
- Side labels are terse (2-5 words), concrete, and derived from patterns across MULTIPLE candidates — never from a single person and never naming anyone.
|
|
72
|
-
- BANNED axis families: protected attributes (race, ethnicity, religion, gender, age, nationality, disability, politics, sexual orientation), and vanity/noise splits (profile completeness, bio length, has photo, name alphabet).
|
|
73
|
-
|
|
74
|
-
Rules for assignments:
|
|
75
|
-
- Assign EVERY candidate: pick a side only when the candidate's context contains clear support; otherwise use side null.
|
|
76
|
-
- When you pick a side you MUST quote a short (≤80 chars) VERBATIM substring of that candidate's context as evidence. Copy it exactly — it is checked mechanically, and paraphrased evidence is discarded. Do NOT add punctuation that is not in the source (no trailing period); cutting off mid-sentence is fine.
|
|
77
|
-
- Never invent context. If unsure, use side null with evidence null.
|
|
78
|
-
|
|
79
|
-
Prefer axes that split the pool close to evenly and that cover many candidates with verifiable evidence. Propose at most ${MAX_AXES} axes; fewer strong axes beat many weak ones.`;
|
|
80
|
-
/**
|
|
81
|
-
* Collapse whitespace, lowercase, and fold typographic punctuation to ASCII
|
|
82
|
-
* (curly quotes/apostrophes, en/em dashes, ellipsis), so evidence matching
|
|
83
|
-
* tolerates formatting drift without weakening the verbatim requirement.
|
|
84
|
-
*/
|
|
85
|
-
export function normalizePoolEvidenceForMatch(s) {
|
|
86
|
-
return s
|
|
87
|
-
.toLowerCase()
|
|
88
|
-
.replace(/[\u2018\u2019\u02bc]/g, "'")
|
|
89
|
-
.replace(/[\u201c\u201d]/g, '"')
|
|
90
|
-
.replace(/[\u2013\u2014]/g, "-")
|
|
91
|
-
.replace(/\u2026/g, "...")
|
|
92
|
-
.replace(/\s+/g, " ")
|
|
93
|
-
.trim();
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Strips wrapping quotes and edge punctuation from an evidence span before
|
|
97
|
-
* matching. LLMs habitually sentence-ize copied spans (append a trailing
|
|
98
|
-
* period, wrap in quotes); the meaningful content must still match verbatim.
|
|
99
|
-
*/
|
|
100
|
-
export function stripPoolEvidenceEdgePunctuation(s) {
|
|
101
|
-
return s.replace(/^[\s"'.,;:!?()\u2018\u2019\u201c\u201d]+/, "").replace(/[\s"'.,;:!?()\u2018\u2019\u201c\u201d]+$/, "");
|
|
102
|
-
}
|
|
103
|
-
/** Minimum normalized span that counts as meaningful verbatim evidence. */
|
|
104
|
-
const MIN_POOL_EVIDENCE_CHARS = 8;
|
|
105
|
-
/** Evidence verifier shared by mining and newborn assignment. */
|
|
106
|
-
export function poolEvidenceMatches(publicContext, evidence) {
|
|
107
|
-
if (evidence === null)
|
|
108
|
-
return false;
|
|
109
|
-
const context = normalizePoolEvidenceForMatch(publicContext);
|
|
110
|
-
const evidenceCore = normalizePoolEvidenceForMatch(stripPoolEvidenceEdgePunctuation(evidence));
|
|
111
|
-
return evidenceCore.length >= MIN_POOL_EVIDENCE_CHARS && context.includes(evidenceCore);
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Stateless axis-mining agent. One `mine()` call = one structured LLM pass +
|
|
115
|
-
* deterministic evidence verification.
|
|
116
|
-
*/
|
|
117
|
-
export class PoolDiscriminatorMiner {
|
|
118
|
-
constructor(config) {
|
|
119
|
-
this.model = createStructuredModel("poolDiscriminatorMiner", AxisMiningResponseSchema, { name: "pool_axes" }, config?.modelConfig);
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Mine discriminating axes for one pool.
|
|
123
|
-
*
|
|
124
|
-
* @returns Verified axes (may be empty). Throws on LLM failure — callers
|
|
125
|
-
* run this fire-and-forget and must catch.
|
|
126
|
-
*/
|
|
127
|
-
async mine(input, options) {
|
|
128
|
-
const prompt = buildMiningPrompt(input);
|
|
129
|
-
const raw = await invokeWithAbortSignal(this.model, [new SystemMessage(SYSTEM_PROMPT), new HumanMessage(prompt)], options?.signal);
|
|
130
|
-
const parsed = AxisMiningResponseSchema.safeParse(raw);
|
|
131
|
-
if (!parsed.success) {
|
|
132
|
-
logger.warn("Mining response failed schema validation", { issues: parsed.error.issues.length });
|
|
133
|
-
return [];
|
|
134
|
-
}
|
|
135
|
-
return parsed.data.axes.slice(0, MAX_AXES).map((axis) => verifyAxis(axis, input.candidates));
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
__decorate([
|
|
139
|
-
Timed(),
|
|
140
|
-
__metadata("design:type", Function),
|
|
141
|
-
__metadata("design:paramtypes", [Object, Object]),
|
|
142
|
-
__metadata("design:returntype", Promise)
|
|
143
|
-
], PoolDiscriminatorMiner.prototype, "mine", null);
|
|
144
|
-
/** Builds the human message: intent text + one numbered block per candidate. */
|
|
145
|
-
export function buildMiningPrompt(input) {
|
|
146
|
-
const candidateBlocks = input.candidates
|
|
147
|
-
.map((c) => `[${c.id}]\n${c.publicContext}`)
|
|
148
|
-
.join("\n\n");
|
|
149
|
-
return [
|
|
150
|
-
`Intent:\n${input.intentText}`,
|
|
151
|
-
`Candidate pool (${input.candidates.length} candidates, id in brackets):\n\n${candidateBlocks}`,
|
|
152
|
-
].join("\n\n");
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Deterministic post-pass over one LLM axis:
|
|
156
|
-
* - drops assignments for ids not in the pool,
|
|
157
|
-
* - demotes to unknown: sides not in the axis's side list, missing evidence,
|
|
158
|
-
* and evidence that does not substring-match the candidate's publicContext,
|
|
159
|
-
* - collapses duplicate proposals to the same trim-normalized side,
|
|
160
|
-
* - demotes a candidate proposed for different sides to unknown (zero support),
|
|
161
|
-
* - guarantees exactly one assignment per pool candidate (missing → unknown),
|
|
162
|
-
* - computes evidenceRate = verified / distinct candidate-side proposals.
|
|
163
|
-
*/
|
|
164
|
-
export function verifyAxis(axis, candidates) {
|
|
165
|
-
const contextById = new Map(candidates.map((c) => [c.id, c.publicContext]));
|
|
166
|
-
const normalizedAxisSides = axis.sides.map((side) => side.trim());
|
|
167
|
-
const axisSidesAreValid = normalizedAxisSides.every(Boolean)
|
|
168
|
-
&& new Set(normalizedAxisSides).size === normalizedAxisSides.length;
|
|
169
|
-
const canonicalSideByNormalized = new Map(axis.sides.map((side) => [side.trim(), side]));
|
|
170
|
-
const proposalsById = new Map();
|
|
171
|
-
for (const assignment of axis.assignments) {
|
|
172
|
-
if (!contextById.has(assignment.id) || assignment.side === null)
|
|
173
|
-
continue;
|
|
174
|
-
const normalizedSide = assignment.side.trim();
|
|
175
|
-
let sides = proposalsById.get(assignment.id);
|
|
176
|
-
if (!sides) {
|
|
177
|
-
sides = new Map();
|
|
178
|
-
proposalsById.set(assignment.id, sides);
|
|
179
|
-
}
|
|
180
|
-
const sameSide = sides.get(normalizedSide) ?? [];
|
|
181
|
-
sameSide.push(assignment);
|
|
182
|
-
sides.set(normalizedSide, sameSide);
|
|
183
|
-
}
|
|
184
|
-
const byId = new Map();
|
|
185
|
-
let proposed = 0;
|
|
186
|
-
let verified = 0;
|
|
187
|
-
for (const [id, sides] of proposalsById) {
|
|
188
|
-
proposed += sides.size;
|
|
189
|
-
// Conflicting classifier output is permanently ambiguous regardless of
|
|
190
|
-
// proposal order or evidence quality. It must contribute zero support.
|
|
191
|
-
if (sides.size !== 1 || !axisSidesAreValid) {
|
|
192
|
-
byId.set(id, { id, side: null, evidence: null, verified: false });
|
|
193
|
-
continue;
|
|
194
|
-
}
|
|
195
|
-
const [[normalizedSide, sameSideProposals]] = [...sides];
|
|
196
|
-
const canonicalSide = canonicalSideByNormalized.get(normalizedSide);
|
|
197
|
-
const context = contextById.get(id);
|
|
198
|
-
const evidenceValid = canonicalSide
|
|
199
|
-
? sameSideProposals.find((proposal) => poolEvidenceMatches(context, proposal.evidence))
|
|
200
|
-
: undefined;
|
|
201
|
-
if (canonicalSide && evidenceValid) {
|
|
202
|
-
verified++;
|
|
203
|
-
byId.set(id, {
|
|
204
|
-
id,
|
|
205
|
-
side: canonicalSide,
|
|
206
|
-
evidence: evidenceValid.evidence,
|
|
207
|
-
verified: true,
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
else {
|
|
211
|
-
byId.set(id, {
|
|
212
|
-
id,
|
|
213
|
-
side: null,
|
|
214
|
-
evidence: sameSideProposals[0]?.evidence ?? null,
|
|
215
|
-
verified: false,
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
const assignments = candidates.map((candidate) => byId.get(candidate.id)
|
|
220
|
-
?? { id: candidate.id, side: null, evidence: null, verified: false });
|
|
221
|
-
return {
|
|
222
|
-
label: axis.axis,
|
|
223
|
-
questionSeed: axis.questionSeed,
|
|
224
|
-
sides: axis.sides,
|
|
225
|
-
assignments,
|
|
226
|
-
evidenceRate: proposed > 0 ? verified / proposed : 0,
|
|
227
|
-
};
|
|
228
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { QuestionPoolSnapshot } from "../../questions/question.module.js";
|
|
2
|
-
/** Maximum raw intent-title characters included in a proactive DM line. */
|
|
3
|
-
export declare const POOL_QUESTION_PUSH_TITLE_MAX_CHARS = 80;
|
|
4
|
-
/** Stable identity for one pool refresh cycle. Chained alternates retain it. */
|
|
5
|
-
export declare function poolQuestionCycleKey(pool: Pick<QuestionPoolSnapshot, "runId" | "minedAt">): string;
|
|
6
|
-
/** Escape plain text so it cannot alter the deterministic Markdown template. */
|
|
7
|
-
export declare function escapePoolPushMarkdown(text: string): string;
|
|
8
|
-
/** Build the sole proactive user-facing DM line for a pushed pool question. */
|
|
9
|
-
export declare function buildPoolQuestionPushMessage(input: {
|
|
10
|
-
intentId: string;
|
|
11
|
-
intentTitle: string;
|
|
12
|
-
questionPrompt: string;
|
|
13
|
-
}): string;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/** Maximum raw intent-title characters included in a proactive DM line. */
|
|
2
|
-
export const POOL_QUESTION_PUSH_TITLE_MAX_CHARS = 80;
|
|
3
|
-
/** Stable identity for one pool refresh cycle. Chained alternates retain it. */
|
|
4
|
-
export function poolQuestionCycleKey(pool) {
|
|
5
|
-
const runId = pool.runId?.trim();
|
|
6
|
-
return runId ? `run:${runId}` : `mined:${pool.minedAt}`;
|
|
7
|
-
}
|
|
8
|
-
/** Escape plain text so it cannot alter the deterministic Markdown template. */
|
|
9
|
-
export function escapePoolPushMarkdown(text) {
|
|
10
|
-
return text.replace(/([\\`*_[\]{}()<>#+\-.!|])/g, "\\$1");
|
|
11
|
-
}
|
|
12
|
-
/** Build the sole proactive user-facing DM line for a pushed pool question. */
|
|
13
|
-
export function buildPoolQuestionPushMessage(input) {
|
|
14
|
-
const normalizedTitle = input.intentTitle.replace(/\s+/g, " ").trim() || "your intent";
|
|
15
|
-
const boundedTitle = normalizedTitle.length > POOL_QUESTION_PUSH_TITLE_MAX_CHARS
|
|
16
|
-
? `${normalizedTitle.slice(0, POOL_QUESTION_PUSH_TITLE_MAX_CHARS - 1)}…`
|
|
17
|
-
: normalizedTitle;
|
|
18
|
-
return `Quick one about [${escapePoolPushMarkdown(boundedTitle)}](/i/${input.intentId}): ${escapePoolPushMarkdown(input.questionPrompt)}`;
|
|
19
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Deterministic pool_discovery question synthesis (IND-418).
|
|
3
|
-
*
|
|
4
|
-
* A mined discriminator already carries everything a question needs: a label,
|
|
5
|
-
* a question seed, 2–3 sides, and verified per-candidate assignments. This
|
|
6
|
-
* module turns the top discriminator into a `Question` payload + server-side
|
|
7
|
-
* pool snapshot with ZERO generation-time LLM calls — the phrasing was
|
|
8
|
-
* produced (and evidence-verified) at mining time, so synthesis is pure,
|
|
9
|
-
* auditable, and cheap to re-run for interview-mode chaining.
|
|
10
|
-
*/
|
|
11
|
-
import type { Question, QuestionPoolDiscriminator, QuestionPoolSnapshot } from "../../questions/question.module.js";
|
|
12
|
-
import type { ScoredDiscriminator } from "./discriminator.types.js";
|
|
13
|
-
/** Fixed option appended to every pool question — the no-preference escape. */
|
|
14
|
-
export declare const BOTH_MATTER_LABEL = "Both matter";
|
|
15
|
-
/**
|
|
16
|
-
* Converts a scored discriminator into the compact snapshot form stored on
|
|
17
|
-
* the question row (verified assignments only; unknowns dropped).
|
|
18
|
-
*/
|
|
19
|
-
export declare function toQuestionDiscriminator(d: ScoredDiscriminator): QuestionPoolDiscriminator;
|
|
20
|
-
/**
|
|
21
|
-
* Filters a mining pass down to question-eligible discriminators:
|
|
22
|
-
* VoI ≥ {@link POOL_QUESTION_MIN_VOI}, evidenceRate ≥
|
|
23
|
-
* {@link POOL_QUESTION_MIN_EVIDENCE_RATE}, capped at
|
|
24
|
-
* {@link POOL_QUESTION_MAX_DISCRIMINATORS}. Input is already VoI-sorted.
|
|
25
|
-
*/
|
|
26
|
-
export declare function selectQuestionDiscriminators(discriminators: ScoredDiscriminator[]): ScoredDiscriminator[];
|
|
27
|
-
/** Input for one question synthesis. */
|
|
28
|
-
export interface SynthesizePoolQuestionInput {
|
|
29
|
-
/** The discriminator to ask about (already eligibility-filtered). */
|
|
30
|
-
discriminator: QuestionPoolDiscriminator;
|
|
31
|
-
/** Remaining ranked eligible discriminators (interview-mode chain stash). */
|
|
32
|
-
alternates: QuestionPoolDiscriminator[];
|
|
33
|
-
poolSize: number;
|
|
34
|
-
/** Exact bounded candidate opportunity IDs supplied to this synthesis pass. */
|
|
35
|
-
opportunityIds: string[];
|
|
36
|
-
/** ISO-8601 timestamp of the mining pass. */
|
|
37
|
-
minedAt: string;
|
|
38
|
-
/** Discovery run id, when known. */
|
|
39
|
-
runId?: string;
|
|
40
|
-
/**
|
|
41
|
-
* Intent payload snippet — folded into the evidence chip so the question
|
|
42
|
-
* self-identifies on any surface ("based on 16 people matching ‘…’").
|
|
43
|
-
*/
|
|
44
|
-
intentText?: string;
|
|
45
|
-
/** Stable hash of the full normalized intent payload + summary. */
|
|
46
|
-
intentFingerprint?: string;
|
|
47
|
-
}
|
|
48
|
-
/** Synthesized question: client payload + server-side snapshot. */
|
|
49
|
-
export interface SynthesizedPoolQuestion {
|
|
50
|
-
payload: Question;
|
|
51
|
-
pool: QuestionPoolSnapshot;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Builds the pool_discovery question. Returns null when the pool is below
|
|
55
|
-
* the k-anonymity floor or the discriminator shape is unusable (guards are
|
|
56
|
-
* duplicated here so no caller can bypass them).
|
|
57
|
-
*/
|
|
58
|
-
export declare function synthesizePoolQuestion(input: SynthesizePoolQuestionInput): SynthesizedPoolQuestion | null;
|