@indexnetwork/protocol 22.0.0-rc.498.1 → 64.0.0-rc.604.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1841 -0
- package/IMPLEMENTATION.md +140 -181
- package/README.md +16 -20
- package/STABILITY.md +16 -11
- package/dist/{intents/intent.module.d.ts → capabilities/intents.d.ts} +182 -192
- package/dist/capabilities/intents.js +88 -0
- package/dist/capabilities/negotiations.d.ts +17 -0
- package/dist/capabilities/negotiations.js +16 -0
- package/dist/{networks/network.module.d.ts → capabilities/networks.d.ts} +33 -169
- package/dist/{networks/network.module.js → capabilities/networks.js} +6 -17
- package/dist/index.d.ts +57 -132
- package/dist/index.js +41 -100
- package/dist/internal/agents/agent.repository.port.d.ts +59 -0
- package/dist/internal/agents/agent.repository.port.js +7 -0
- package/dist/internal/agents/agent.types.d.ts +35 -0
- package/dist/{agents → internal/agents}/agent.types.js +1 -6
- package/dist/{intents → internal/intents}/graph/intent.graph.d.ts +142 -151
- package/dist/{intents → internal/intents}/graph/intent.graph.execute.d.ts +5 -1
- package/dist/{intents → internal/intents}/graph/intent.graph.execute.js +165 -46
- package/dist/internal/intents/graph/intent.graph.infer.d.ts +78 -0
- package/dist/internal/intents/graph/intent.graph.infer.js +122 -0
- package/dist/internal/intents/graph/intent.graph.js +108 -0
- package/dist/{intents → internal/intents}/graph/intent.graph.reconcile.d.ts +18 -9
- package/dist/internal/intents/graph/intent.graph.reconcile.js +173 -0
- package/dist/internal/intents/graph/intent.graph.shared.d.ts +55 -0
- package/dist/{intents → internal/intents}/graph/intent.graph.shared.js +25 -70
- package/dist/{intents → internal/intents}/graph/intent.graph.state.d.ts +96 -32
- package/dist/{intents → internal/intents}/graph/intent.graph.state.js +42 -31
- package/dist/internal/intents/intent.admission.d.ts +16 -0
- package/dist/internal/intents/intent.admission.js +30 -0
- package/dist/{intents → internal/intents}/intent.inferrer.d.ts +1 -40
- package/dist/{intents → internal/intents}/intent.inferrer.js +13 -49
- package/dist/internal/intents/intent.preparer.d.ts +52 -0
- package/dist/internal/intents/intent.preparer.js +87 -0
- package/dist/{intents → internal/intents}/intent.verifier.d.ts +3 -36
- package/dist/{intents → internal/intents}/intent.verifier.js +0 -17
- package/dist/{networks → internal/networks}/indexer.graph.d.ts +15 -200
- package/dist/{networks → internal/networks}/indexer.graph.js +19 -128
- package/dist/{networks → internal/networks}/indexer.state.d.ts +8 -63
- package/dist/internal/networks/indexer.state.js +70 -0
- package/dist/{networks → internal/networks}/membership.graph.d.ts +6 -6
- package/dist/{networks → internal/networks}/membership.graph.js +3 -3
- package/dist/{networks → internal/networks}/membership.state.d.ts +2 -2
- package/dist/{networks → internal/networks}/membership.state.js +2 -2
- package/dist/{networks → internal/networks}/network.graph.d.ts +9 -22
- package/dist/{networks → internal/networks}/network.graph.js +13 -27
- package/dist/{networks → internal/networks}/network.recommender.d.ts +2 -2
- package/dist/{networks → internal/networks}/network.recommender.js +2 -2
- package/dist/{networks → internal/networks}/network.state.d.ts +4 -7
- package/dist/{networks → internal/networks}/network.state.js +4 -4
- package/dist/internal/opportunities/negotiation-context.loader.d.ts +26 -0
- package/dist/internal/opportunities/negotiation-context.loader.js +36 -0
- package/dist/{opportunities → internal/opportunities}/opportunity.actor.d.ts +1 -1
- package/dist/{opportunities → internal/opportunities}/opportunity.actor.js +7 -1
- package/dist/internal/opportunities/opportunity.counterparties.d.ts +17 -0
- package/dist/internal/opportunities/opportunity.counterparties.js +19 -0
- package/dist/internal/opportunities/opportunity.events.d.ts +38 -0
- package/dist/internal/opportunities/opportunity.events.js +94 -0
- package/dist/{opportunities → internal/opportunities}/opportunity.feed-selection.d.ts +3 -9
- package/dist/internal/opportunities/opportunity.feed-selection.js +40 -0
- package/dist/internal/opportunities/opportunity.graph.modes.d.ts +39 -0
- package/dist/internal/opportunities/opportunity.graph.modes.js +138 -0
- package/dist/{opportunities → internal/opportunities}/opportunity.labels.d.ts +2 -3
- package/dist/internal/opportunities/opportunity.labels.js +9 -0
- package/dist/{opportunities → internal/opportunities}/opportunity.presentation.d.ts +17 -86
- package/dist/{opportunities → internal/opportunities}/opportunity.presentation.js +54 -447
- package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.d.ts +2 -2
- package/dist/internal/opportunities/opportunity.utils.d.ts +105 -0
- package/dist/internal/opportunities/opportunity.utils.js +165 -0
- package/dist/{opportunities → internal/opportunities}/radar/radar.graph.d.ts +17 -17
- package/dist/{opportunities → internal/opportunities}/radar/radar.graph.js +41 -161
- package/dist/{opportunities → internal/opportunities}/radar/radar.state.d.ts +4 -11
- package/dist/{shared → internal/shared}/agent/model-signal.d.ts +1 -1
- package/dist/{shared → internal/shared}/agent/model-signal.js +1 -1
- package/dist/{shared → internal/shared}/agent/model.config.d.ts +28 -86
- package/dist/{shared → internal/shared}/agent/model.config.js +58 -69
- package/dist/internal/shared/agent/model.resolver.d.ts +33 -0
- package/dist/{shared → internal/shared}/agent/model.resolver.js +18 -33
- package/dist/internal/shared/agent/scope.d.ts +20 -0
- package/dist/internal/shared/agent/scope.js +24 -0
- package/dist/internal/shared/assignment/network-assignment.policy.d.ts +23 -0
- package/dist/internal/shared/assignment/network-assignment.policy.js +28 -0
- package/dist/{shared → internal/shared}/observability/log.d.ts +3 -6
- package/dist/{shared → internal/shared}/observability/log.js +9 -18
- package/dist/{shared → internal/shared}/observability/protocol.logger.d.ts +1 -1
- package/dist/{shared → internal/shared}/observability/protocol.logger.js +1 -1
- package/dist/internal/shared/observability/request-context.d.ts +29 -0
- package/dist/internal/shared/observability/request-context.js +17 -0
- package/dist/{shared → internal/shared}/utils/social-label.d.ts +2 -2
- package/dist/{shared → internal/shared}/utils/social-label.js +1 -1
- package/dist/platform/database/capabilities.d.ts +59 -0
- package/dist/{shared/interfaces/database.entities.d.ts → platform/database/entities.d.ts} +81 -121
- package/dist/{shared/interfaces/database.identity-queries.d.ts → platform/database/identity-queries.d.ts} +55 -20
- package/dist/platform/database/member-queries.d.ts +55 -0
- package/dist/platform/database/member-queries.js +4 -0
- package/dist/platform/database/negotiation.d.ts +38 -0
- package/dist/{shared/interfaces/database.network-queries.d.ts → platform/database/network-queries.d.ts} +66 -67
- package/dist/platform/database/network-queries.js +4 -0
- package/dist/{shared/interfaces/database.opportunity-queries.d.ts → platform/database/opportunity-queries.d.ts} +25 -109
- package/dist/{shared/interfaces/database.port.d.ts → platform/database/port.d.ts} +52 -117
- package/dist/{shared/interfaces/database.port.js → platform/database/port.js} +3 -5
- package/dist/platform/database.d.ts +23 -0
- package/dist/{shared/interfaces/database.interface.js → platform/database.js} +1 -1
- package/dist/{shared/interfaces/cache.interface.d.ts → platform/discovery/cache.d.ts} +2 -4
- package/dist/{shared/interfaces/cache.interface.js → platform/discovery/cache.js} +1 -1
- package/dist/platform/discovery/embedder.d.ts +31 -0
- package/dist/platform/runtime/errors.d.ts +6 -0
- package/dist/platform/runtime/errors.js +9 -0
- package/dist/platform/runtime/follow-up.d.ts +36 -0
- package/dist/platform/runtime/follow-up.js +4 -0
- package/dist/platform/runtime/observability.d.ts +34 -0
- package/dist/protocol/core.d.ts +11 -0
- package/dist/protocol/discovery.rules.d.ts +21 -0
- package/dist/protocol/discovery.rules.js +29 -0
- package/dist/protocol/negotiation.constants.d.ts +3 -0
- package/dist/protocol/negotiation.constants.js +3 -0
- package/dist/protocol/negotiation.rules.d.ts +73 -0
- package/dist/protocol/negotiation.rules.js +68 -0
- package/dist/protocol/protocol.prompt.d.ts +13 -0
- package/dist/protocol/protocol.prompt.js +190 -0
- package/dist/{shared → protocol}/schemas/discovery-question.schema.d.ts +13 -13
- package/dist/{shared → protocol}/schemas/discovery-question.schema.js +2 -2
- package/dist/{shared → protocol}/schemas/identity.schema.d.ts +4 -4
- package/dist/{shared → protocol}/schemas/identity.schema.js +4 -4
- package/dist/{shared → protocol}/schemas/network-assignment.schema.d.ts +11 -20
- package/dist/{shared → protocol}/schemas/network-assignment.schema.js +2 -9
- package/dist/protocol/schemas/underspecification.schema.d.ts +9 -0
- package/dist/protocol/schemas/underspecification.schema.js +12 -0
- package/package.json +7 -15
- package/dist/agents/agent.dispatcher.port.d.ts +0 -25
- package/dist/agents/agent.module.d.ts +0 -19
- package/dist/agents/agent.module.js +0 -11
- package/dist/agents/agent.repository.port.d.ts +0 -118
- package/dist/agents/agent.repository.port.js +0 -10
- package/dist/agents/agent.tools.d.ts +0 -16
- package/dist/agents/agent.tools.js +0 -351
- package/dist/agents/agent.tools.port.d.ts +0 -22
- package/dist/agents/agent.tools.port.js +0 -18
- package/dist/agents/agent.types.d.ts +0 -76
- package/dist/chat/chat-streaming.types.d.ts +0 -618
- package/dist/chat/chat-streaming.types.js +0 -297
- package/dist/chat/chat.agent.d.ts +0 -292
- package/dist/chat/chat.agent.js +0 -1010
- package/dist/chat/chat.graph.d.ts +0 -424
- package/dist/chat/chat.graph.js +0 -257
- package/dist/chat/chat.interrupt.classifier.d.ts +0 -25
- package/dist/chat/chat.interrupt.classifier.js +0 -64
- package/dist/chat/chat.persona.d.ts +0 -39
- package/dist/chat/chat.prompt.d.ts +0 -4
- package/dist/chat/chat.prompt.js +0 -12
- package/dist/chat/chat.prompt.modules.d.ts +0 -30
- package/dist/chat/chat.prompt.modules.js +0 -40
- package/dist/chat/chat.question-dedup.d.ts +0 -14
- package/dist/chat/chat.question-dedup.js +0 -17
- package/dist/chat/chat.state.d.ts +0 -135
- package/dist/chat/chat.state.js +0 -120
- package/dist/chat/chat.streamer.d.ts +0 -64
- package/dist/chat/chat.streamer.js +0 -217
- package/dist/chat/chat.suggester.d.ts +0 -23
- package/dist/chat/chat.suggester.js +0 -95
- package/dist/chat/chat.summarizer.d.ts +0 -20
- package/dist/chat/chat.summarizer.js +0 -97
- package/dist/chat/chat.title.generator.d.ts +0 -19
- package/dist/chat/chat.title.generator.js +0 -66
- package/dist/chat/chat.tools.d.ts +0 -5
- package/dist/chat/chat.tools.js +0 -62
- package/dist/chat/chat.utils.d.ts +0 -41
- package/dist/chat/chat.utils.js +0 -88
- package/dist/chat/negotiator.persona.d.ts +0 -74
- package/dist/chat/negotiator.persona.js +0 -154
- package/dist/chat/negotiator.prompt.d.ts +0 -45
- package/dist/chat/negotiator.prompt.js +0 -160
- package/dist/chat/negotiator.tools.d.ts +0 -42
- package/dist/chat/negotiator.tools.js +0 -134
- package/dist/chat/onboarding.persona.d.ts +0 -28
- package/dist/chat/onboarding.persona.js +0 -86
- package/dist/chat/onboarding.prompt.d.ts +0 -6
- package/dist/chat/onboarding.prompt.js +0 -63
- package/dist/chat/signal.persona.d.ts +0 -47
- package/dist/chat/signal.persona.js +0 -319
- package/dist/chat/signal.prompt.d.ts +0 -39
- package/dist/chat/signal.prompt.js +0 -136
- package/dist/contacts/contact.module.d.ts +0 -8
- package/dist/contacts/contact.module.js +0 -6
- package/dist/contacts/contact.repository.port.d.ts +0 -21
- package/dist/contacts/contact.repository.port.js +0 -12
- package/dist/contacts/contact.tools.d.ts +0 -17
- package/dist/contacts/contact.tools.js +0 -108
- package/dist/contacts/contact.tools.port.d.ts +0 -20
- package/dist/contacts/contact.tools.port.js +0 -16
- package/dist/contacts/contact.types.d.ts +0 -24
- package/dist/contacts/contact.types.js +0 -8
- package/dist/contexts/context.generator.d.ts +0 -95
- package/dist/contexts/context.generator.js +0 -127
- package/dist/contexts/context.module.d.ts +0 -13
- package/dist/contexts/context.module.js +0 -12
- package/dist/contexts/context.tools.port.d.ts +0 -9
- package/dist/discovery/hyde.documents.d.ts +0 -9
- package/dist/discovery/hyde.documents.js +0 -49
- package/dist/discovery/hyde.env.d.ts +0 -8
- package/dist/discovery/hyde.env.js +0 -9
- package/dist/discovery/hyde.frame.d.ts +0 -150
- package/dist/discovery/hyde.frame.js +0 -107
- package/dist/discovery/hyde.generator.d.ts +0 -38
- package/dist/discovery/hyde.generator.js +0 -103
- package/dist/discovery/hyde.graph.d.ts +0 -209
- package/dist/discovery/hyde.graph.js +0 -482
- package/dist/discovery/hyde.state.d.ts +0 -70
- package/dist/discovery/hyde.state.js +0 -85
- package/dist/discovery/hyde.strategies.d.ts +0 -17
- package/dist/discovery/hyde.strategies.js +0 -34
- package/dist/discovery/hyde.validator.d.ts +0 -78
- package/dist/discovery/hyde.validator.js +0 -48
- package/dist/discovery/index.d.ts +0 -26
- package/dist/discovery/index.js +0 -19
- package/dist/discovery/lens.inferrer.d.ts +0 -214
- package/dist/discovery/lens.inferrer.js +0 -152
- package/dist/enrichment/enrichment.generator.d.ts +0 -68
- package/dist/enrichment/enrichment.generator.js +0 -95
- package/dist/enrichment/enrichment.graph.d.ts +0 -544
- package/dist/enrichment/enrichment.graph.js +0 -695
- package/dist/enrichment/enrichment.state.d.ts +0 -141
- package/dist/enrichment/enrichment.state.js +0 -115
- package/dist/enrichment/enrichment.tools.context-read.d.ts +0 -10
- package/dist/enrichment/enrichment.tools.context-read.js +0 -353
- package/dist/enrichment/enrichment.tools.context-write.d.ts +0 -9
- package/dist/enrichment/enrichment.tools.context-write.js +0 -417
- package/dist/enrichment/enrichment.tools.d.ts +0 -13
- package/dist/enrichment/enrichment.tools.helpers.d.ts +0 -139
- package/dist/enrichment/enrichment.tools.helpers.js +0 -234
- package/dist/enrichment/enrichment.tools.js +0 -153
- package/dist/intents/graph/intent.graph.infer.d.ts +0 -44
- package/dist/intents/graph/intent.graph.infer.js +0 -97
- package/dist/intents/graph/intent.graph.js +0 -134
- package/dist/intents/graph/intent.graph.reconcile.js +0 -274
- package/dist/intents/graph/intent.graph.shared.d.ts +0 -68
- package/dist/intents/intake/intake.orchestrator.d.ts +0 -203
- package/dist/intents/intake/intake.orchestrator.js +0 -255
- package/dist/intents/intake/intake.pack.generator.d.ts +0 -57
- package/dist/intents/intake/intake.pack.generator.js +0 -90
- package/dist/intents/intent.clarifier.d.ts +0 -51
- package/dist/intents/intent.clarifier.js +0 -201
- package/dist/intents/intent.indexer.d.ts +0 -82
- package/dist/intents/intent.indexer.js +0 -170
- package/dist/intents/intent.module.js +0 -103
- package/dist/intents/intent.proposal.d.ts +0 -37
- package/dist/intents/intent.proposal.js +0 -14
- package/dist/intents/intent.reconciler.d.ts +0 -105
- package/dist/intents/intent.reconciler.js +0 -186
- package/dist/intents/intent.tools.d.ts +0 -27
- package/dist/intents/intent.tools.js +0 -808
- package/dist/maintenance/maintenance.graph.d.ts +0 -239
- package/dist/maintenance/maintenance.graph.js +0 -199
- package/dist/maintenance/maintenance.state.d.ts +0 -35
- package/dist/maintenance/maintenance.state.js +0 -55
- package/dist/mcp/elicitation.builder.d.ts +0 -53
- package/dist/mcp/elicitation.builder.js +0 -74
- package/dist/mcp/elicitation.dispatcher.d.ts +0 -36
- package/dist/mcp/elicitation.dispatcher.js +0 -86
- package/dist/mcp/mcp.authorization-policy.d.ts +0 -252
- package/dist/mcp/mcp.authorization-policy.js +0 -535
- package/dist/mcp/mcp.server.d.ts +0 -90
- package/dist/mcp/mcp.server.js +0 -631
- package/dist/negotiations/insight.generator.d.ts +0 -31
- package/dist/negotiations/insight.generator.js +0 -105
- package/dist/negotiations/negotiation.agent.d.ts +0 -130
- package/dist/negotiations/negotiation.agent.js +0 -396
- package/dist/negotiations/negotiation.answer-consumption.d.ts +0 -223
- package/dist/negotiations/negotiation.answer-consumption.js +0 -275
- package/dist/negotiations/negotiation.attribution.d.ts +0 -91
- package/dist/negotiations/negotiation.attribution.js +0 -109
- package/dist/negotiations/negotiation.candidates.d.ts +0 -83
- package/dist/negotiations/negotiation.candidates.js +0 -162
- package/dist/negotiations/negotiation.client-dm.d.ts +0 -50
- package/dist/negotiations/negotiation.client-dm.js +0 -66
- package/dist/negotiations/negotiation.consultation-policy.d.ts +0 -95
- package/dist/negotiations/negotiation.consultation-policy.js +0 -159
- package/dist/negotiations/negotiation.deadlock.contracts.d.ts +0 -10
- package/dist/negotiations/negotiation.deadlock.d.ts +0 -87
- package/dist/negotiations/negotiation.deadlock.js +0 -150
- package/dist/negotiations/negotiation.detail-reader.d.ts +0 -94
- package/dist/negotiations/negotiation.detail-reader.js +0 -91
- package/dist/negotiations/negotiation.expected-speaker.d.ts +0 -33
- package/dist/negotiations/negotiation.expected-speaker.js +0 -59
- package/dist/negotiations/negotiation.graph.d.ts +0 -694
- package/dist/negotiations/negotiation.graph.finalize.d.ts +0 -5
- package/dist/negotiations/negotiation.graph.finalize.js +0 -403
- package/dist/negotiations/negotiation.graph.init.d.ts +0 -54
- package/dist/negotiations/negotiation.graph.init.js +0 -256
- package/dist/negotiations/negotiation.graph.js +0 -94
- package/dist/negotiations/negotiation.graph.screen.d.ts +0 -23
- package/dist/negotiations/negotiation.graph.screen.js +0 -108
- package/dist/negotiations/negotiation.graph.shared.d.ts +0 -111
- package/dist/negotiations/negotiation.graph.shared.js +0 -168
- package/dist/negotiations/negotiation.graph.turn.d.ts +0 -134
- package/dist/negotiations/negotiation.graph.turn.js +0 -662
- package/dist/negotiations/negotiation.hermes-contract.d.ts +0 -31
- package/dist/negotiations/negotiation.hermes-contract.js +0 -72
- package/dist/negotiations/negotiation.intent-snapshot-provenance.d.ts +0 -21
- package/dist/negotiations/negotiation.intent-snapshot-provenance.js +0 -28
- package/dist/negotiations/negotiation.lifecycle-narration.d.ts +0 -18
- package/dist/negotiations/negotiation.lifecycle-narration.js +0 -87
- package/dist/negotiations/negotiation.memory.d.ts +0 -65
- package/dist/negotiations/negotiation.memory.js +0 -83
- package/dist/negotiations/negotiation.module.d.ts +0 -36
- package/dist/negotiations/negotiation.module.js +0 -23
- package/dist/negotiations/negotiation.protocol.d.ts +0 -1018
- package/dist/negotiations/negotiation.protocol.js +0 -224
- package/dist/negotiations/negotiation.question-safety.d.ts +0 -52
- package/dist/negotiations/negotiation.question-safety.js +0 -119
- package/dist/negotiations/negotiation.reflect.d.ts +0 -194
- package/dist/negotiations/negotiation.reflect.js +0 -145
- package/dist/negotiations/negotiation.scope.d.ts +0 -41
- package/dist/negotiations/negotiation.scope.js +0 -39
- package/dist/negotiations/negotiation.screen.contracts.d.ts +0 -88
- package/dist/negotiations/negotiation.screen.contracts.js +0 -58
- package/dist/negotiations/negotiation.screen.d.ts +0 -78
- package/dist/negotiations/negotiation.screen.js +0 -112
- package/dist/negotiations/negotiation.stall-gap.d.ts +0 -83
- package/dist/negotiations/negotiation.stall-gap.js +0 -152
- package/dist/negotiations/negotiation.stance.contracts.d.ts +0 -123
- package/dist/negotiations/negotiation.stance.contracts.js +0 -317
- package/dist/negotiations/negotiation.state.d.ts +0 -597
- package/dist/negotiations/negotiation.state.js +0 -286
- package/dist/negotiations/negotiation.summarizer.d.ts +0 -25
- package/dist/negotiations/negotiation.summarizer.js +0 -101
- package/dist/negotiations/negotiation.task-lock-policy.d.ts +0 -10
- package/dist/negotiations/negotiation.task-lock-policy.js +0 -22
- package/dist/negotiations/negotiation.tools.d.ts +0 -18
- package/dist/negotiations/negotiation.tools.js +0 -842
- package/dist/negotiations/negotiation.tools.port.d.ts +0 -17
- package/dist/negotiations/negotiation.turn-cap.d.ts +0 -9
- package/dist/negotiations/negotiation.turn-cap.js +0 -12
- package/dist/networks/indexer.state.js +0 -112
- package/dist/networks/network.tools.d.ts +0 -36
- package/dist/networks/network.tools.js +0 -594
- package/dist/opportunities/delivery-card.cache.d.ts +0 -25
- package/dist/opportunities/delivery-card.cache.js +0 -43
- package/dist/opportunities/discovery.env.d.ts +0 -20
- package/dist/opportunities/discovery.env.js +0 -109
- package/dist/opportunities/discriminator/discriminator.adjustments.d.ts +0 -90
- package/dist/opportunities/discriminator/discriminator.adjustments.js +0 -141
- package/dist/opportunities/discriminator/discriminator.assigner.d.ts +0 -78
- package/dist/opportunities/discriminator/discriminator.assigner.js +0 -153
- package/dist/opportunities/discriminator/discriminator.env.d.ts +0 -103
- package/dist/opportunities/discriminator/discriminator.env.js +0 -103
- package/dist/opportunities/discriminator/discriminator.miner.d.ts +0 -114
- package/dist/opportunities/discriminator/discriminator.miner.js +0 -228
- package/dist/opportunities/discriminator/discriminator.push.d.ts +0 -13
- package/dist/opportunities/discriminator/discriminator.push.js +0 -19
- package/dist/opportunities/discriminator/discriminator.question.d.ts +0 -58
- package/dist/opportunities/discriminator/discriminator.question.js +0 -155
- package/dist/opportunities/discriminator/discriminator.scorer.d.ts +0 -32
- package/dist/opportunities/discriminator/discriminator.scorer.js +0 -105
- package/dist/opportunities/discriminator/discriminator.shadow.d.ts +0 -32
- package/dist/opportunities/discriminator/discriminator.shadow.js +0 -90
- package/dist/opportunities/discriminator/discriminator.types.d.ts +0 -93
- package/dist/opportunities/discriminator/discriminator.types.js +0 -18
- package/dist/opportunities/negotiation-context.loader.d.ts +0 -59
- package/dist/opportunities/negotiation-context.loader.js +0 -90
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.d.ts +0 -43
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.js +0 -44
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.d.ts +0 -24
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.js +0 -188
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.d.ts +0 -26
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.js +0 -112
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.d.ts +0 -19
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.js +0 -61
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.d.ts +0 -191
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.js +0 -18
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.d.ts +0 -34
- package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.js +0 -91
- package/dist/opportunities/negotiation-summary.builder.d.ts +0 -37
- package/dist/opportunities/negotiation-summary.builder.js +0 -66
- package/dist/opportunities/opportunity.discovery-negotiation-summary.d.ts +0 -14
- package/dist/opportunities/opportunity.discovery-negotiation-summary.js +0 -46
- package/dist/opportunities/opportunity.enricher.d.ts +0 -71
- package/dist/opportunities/opportunity.enricher.js +0 -280
- package/dist/opportunities/opportunity.evaluator.d.ts +0 -289
- package/dist/opportunities/opportunity.evaluator.js +0 -516
- package/dist/opportunities/opportunity.evidence.d.ts +0 -22
- package/dist/opportunities/opportunity.evidence.js +0 -87
- package/dist/opportunities/opportunity.existing-negotiation.d.ts +0 -79
- package/dist/opportunities/opportunity.existing-negotiation.js +0 -118
- package/dist/opportunities/opportunity.feed-selection.js +0 -96
- package/dist/opportunities/opportunity.graph.d.ts +0 -1611
- package/dist/opportunities/opportunity.graph.discovery-strategies.d.ts +0 -109
- package/dist/opportunities/opportunity.graph.discovery-strategies.js +0 -451
- package/dist/opportunities/opportunity.graph.discovery.d.ts +0 -69
- package/dist/opportunities/opportunity.graph.discovery.js +0 -397
- package/dist/opportunities/opportunity.graph.evaluation.d.ts +0 -82
- package/dist/opportunities/opportunity.graph.evaluation.js +0 -608
- package/dist/opportunities/opportunity.graph.js +0 -193
- package/dist/opportunities/opportunity.graph.modes.d.ts +0 -538
- package/dist/opportunities/opportunity.graph.modes.js +0 -538
- package/dist/opportunities/opportunity.graph.negotiate.d.ts +0 -109
- package/dist/opportunities/opportunity.graph.negotiate.js +0 -392
- package/dist/opportunities/opportunity.graph.persist-node.d.ts +0 -93
- package/dist/opportunities/opportunity.graph.persist-node.js +0 -765
- package/dist/opportunities/opportunity.graph.prep.d.ts +0 -150
- package/dist/opportunities/opportunity.graph.prep.js +0 -381
- package/dist/opportunities/opportunity.graph.shared.d.ts +0 -173
- package/dist/opportunities/opportunity.graph.shared.js +0 -199
- package/dist/opportunities/opportunity.introducer-feature.d.ts +0 -2
- package/dist/opportunities/opportunity.introducer-feature.js +0 -4
- package/dist/opportunities/opportunity.introducer.d.ts +0 -77
- package/dist/opportunities/opportunity.introducer.js +0 -99
- package/dist/opportunities/opportunity.labels.js +0 -10
- package/dist/opportunities/opportunity.lifecycle.d.ts +0 -63
- package/dist/opportunities/opportunity.lifecycle.js +0 -181
- package/dist/opportunities/opportunity.module.d.ts +0 -54
- package/dist/opportunities/opportunity.module.js +0 -39
- package/dist/opportunities/opportunity.newborn-stamping.d.ts +0 -41
- package/dist/opportunities/opportunity.newborn-stamping.js +0 -81
- package/dist/opportunities/opportunity.owner-approval.d.ts +0 -118
- package/dist/opportunities/opportunity.owner-approval.js +0 -34
- package/dist/opportunities/opportunity.owner-provenance.d.ts +0 -6
- package/dist/opportunities/opportunity.owner-provenance.js +0 -28
- package/dist/opportunities/opportunity.persist.d.ts +0 -58
- package/dist/opportunities/opportunity.persist.js +0 -145
- package/dist/opportunities/opportunity.persistence-admission.d.ts +0 -39
- package/dist/opportunities/opportunity.persistence-admission.js +0 -59
- package/dist/opportunities/opportunity.state.d.ts +0 -451
- package/dist/opportunities/opportunity.state.js +0 -256
- package/dist/opportunities/opportunity.tools.cards.d.ts +0 -138
- package/dist/opportunities/opportunity.tools.cards.js +0 -212
- package/dist/opportunities/opportunity.tools.d.ts +0 -12
- package/dist/opportunities/opportunity.tools.js +0 -236
- package/dist/opportunities/opportunity.tools.list.d.ts +0 -10
- package/dist/opportunities/opportunity.tools.list.js +0 -489
- package/dist/opportunities/opportunity.tools.port.d.ts +0 -16
- package/dist/opportunities/opportunity.utils.d.ts +0 -217
- package/dist/opportunities/opportunity.utils.js +0 -395
- package/dist/opportunities/outcome/outcome.env.d.ts +0 -60
- package/dist/opportunities/outcome/outcome.env.js +0 -63
- package/dist/opportunities/outcome/outcome.hypotheses.d.ts +0 -29
- package/dist/opportunities/outcome/outcome.hypotheses.js +0 -117
- package/dist/opportunities/outcome/outcome.shadow.d.ts +0 -56
- package/dist/opportunities/outcome/outcome.shadow.js +0 -87
- package/dist/opportunities/outcome/outcome.types.d.ts +0 -110
- package/dist/opportunities/outcome/outcome.types.js +0 -26
- package/dist/opportunities/radar/radar.health.d.ts +0 -31
- package/dist/opportunities/radar/radar.health.js +0 -75
- package/dist/premises/premise.analyzer.d.ts +0 -35
- package/dist/premises/premise.analyzer.js +0 -115
- package/dist/premises/premise.decomposer.d.ts +0 -69
- package/dist/premises/premise.decomposer.js +0 -213
- package/dist/premises/premise.graph.d.ts +0 -345
- package/dist/premises/premise.graph.js +0 -278
- package/dist/premises/premise.indexer.d.ts +0 -35
- package/dist/premises/premise.indexer.js +0 -86
- package/dist/premises/premise.state.d.ts +0 -67
- package/dist/premises/premise.state.js +0 -94
- package/dist/premises/premise.tools.d.ts +0 -3
- package/dist/premises/premise.tools.js +0 -248
- package/dist/questions/question.env.d.ts +0 -27
- package/dist/questions/question.env.js +0 -27
- package/dist/questions/question.input.d.ts +0 -107
- package/dist/questions/question.module.d.ts +0 -30
- package/dist/questions/question.module.js +0 -28
- package/dist/questions/question.schema.d.ts +0 -1529
- package/dist/questions/question.schema.js +0 -420
- package/dist/shared/agent/activity-projection.d.ts +0 -271
- package/dist/shared/agent/activity-projection.js +0 -254
- package/dist/shared/agent/canonical-guidance.d.ts +0 -30
- package/dist/shared/agent/canonical-guidance.js +0 -246
- package/dist/shared/agent/model.resolver.d.ts +0 -48
- package/dist/shared/agent/tool.factory.d.ts +0 -17
- package/dist/shared/agent/tool.factory.js +0 -221
- package/dist/shared/agent/tool.helpers.d.ts +0 -482
- package/dist/shared/agent/tool.helpers.js +0 -232
- package/dist/shared/agent/tool.registry.d.ts +0 -25
- package/dist/shared/agent/tool.registry.js +0 -76
- package/dist/shared/agent/tool.runtime.d.ts +0 -28
- package/dist/shared/agent/tool.runtime.js +0 -194
- package/dist/shared/agent/tool.scope.d.ts +0 -44
- package/dist/shared/agent/tool.scope.js +0 -50
- package/dist/shared/agent/utility.tools.d.ts +0 -15
- package/dist/shared/agent/utility.tools.js +0 -322
- package/dist/shared/assignment/network-assignment.policy.d.ts +0 -61
- package/dist/shared/assignment/network-assignment.policy.js +0 -105
- package/dist/shared/interfaces/agent-dispatcher.interface.d.ts +0 -100
- package/dist/shared/interfaces/agent-dispatcher.interface.js +0 -12
- package/dist/shared/interfaces/auth.interface.d.ts +0 -37
- package/dist/shared/interfaces/auth.interface.js +0 -1
- package/dist/shared/interfaces/chat-message-writer.interface.d.ts +0 -18
- package/dist/shared/interfaces/chat-message-writer.interface.js +0 -1
- package/dist/shared/interfaces/chat-session.interface.d.ts +0 -23
- package/dist/shared/interfaces/chat-session.interface.js +0 -18
- package/dist/shared/interfaces/chat-summary.interface.d.ts +0 -16
- package/dist/shared/interfaces/chat-summary.interface.js +0 -1
- package/dist/shared/interfaces/database.capabilities.d.ts +0 -100
- package/dist/shared/interfaces/database.interface.d.ts +0 -16
- package/dist/shared/interfaces/database.member-queries.d.ts +0 -219
- package/dist/shared/interfaces/database.member-queries.js +0 -4
- package/dist/shared/interfaces/database.negotiation.d.ts +0 -329
- package/dist/shared/interfaces/database.negotiation.js +0 -26
- package/dist/shared/interfaces/database.network-queries.js +0 -4
- package/dist/shared/interfaces/database.opportunity-queries.js +0 -4
- package/dist/shared/interfaces/delivery-ledger.interface.d.ts +0 -40
- package/dist/shared/interfaces/delivery-ledger.interface.js +0 -5
- package/dist/shared/interfaces/embedder.interface.d.ts +0 -92
- package/dist/shared/interfaces/embedder.interface.js +0 -4
- package/dist/shared/interfaces/enrichment-run.interface.d.ts +0 -62
- package/dist/shared/interfaces/enrichment-run.interface.js +0 -1
- package/dist/shared/interfaces/enrichment.interface.js +0 -1
- package/dist/shared/interfaces/negotiation-events.interface.d.ts +0 -77
- package/dist/shared/interfaces/negotiation-events.interface.js +0 -6
- package/dist/shared/interfaces/negotiation-summary.interface.d.ts +0 -25
- package/dist/shared/interfaces/negotiation-summary.interface.js +0 -1
- package/dist/shared/interfaces/negotiator-memory.interface.d.ts +0 -58
- package/dist/shared/interfaces/negotiator-memory.interface.js +0 -11
- package/dist/shared/interfaces/queue.interface.d.ts +0 -23
- package/dist/shared/interfaces/queue.interface.js +0 -4
- package/dist/shared/interfaces/scraper.interface.js +0 -1
- package/dist/shared/interfaces/tool-request-context.interface.d.ts +0 -11
- package/dist/shared/interfaces/tool-request-context.interface.js +0 -1
- package/dist/shared/observability/request-context.d.ts +0 -27
- package/dist/shared/observability/request-context.js +0 -6
- package/dist/shared/schemas/mcp-auth.schema.d.ts +0 -87
- package/dist/shared/schemas/mcp-auth.schema.js +0 -56
- package/dist/shared/schemas/negotiation-digest.schema.d.ts +0 -58
- package/dist/shared/schemas/negotiation-digest.schema.js +0 -38
- package/dist/shared/schemas/negotiation-state.schema.d.ts +0 -343
- package/dist/shared/schemas/negotiation-state.schema.js +0 -81
- package/dist/shared/schemas/question-block.fixture.d.ts +0 -12
- package/dist/shared/schemas/question-block.fixture.js +0 -39
- package/dist/shared/schemas/question-block.schema.d.ts +0 -111
- package/dist/shared/schemas/question-block.schema.js +0 -124
- package/dist/shared/schemas/structured-question.schema.d.ts +0 -66
- package/dist/shared/schemas/structured-question.schema.js +0 -31
- package/dist/shared/schemas/underspecification.schema.d.ts +0 -13
- package/dist/shared/schemas/underspecification.schema.js +0 -16
- /package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.js +0 -0
- /package/dist/{opportunities → internal/opportunities}/radar/radar.state.js +0 -0
- /package/dist/{shared → internal/shared}/network/metadata.renderer.d.ts +0 -0
- /package/dist/{shared → internal/shared}/network/metadata.renderer.js +0 -0
- /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.d.ts +0 -0
- /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.js +0 -0
- /package/dist/{shared → internal/shared}/observability/performance.d.ts +0 -0
- /package/dist/{shared → internal/shared}/observability/performance.js +0 -0
- /package/dist/{shared → internal/shared}/observability/trace.d.ts +0 -0
- /package/dist/{shared → internal/shared}/observability/trace.js +0 -0
- /package/dist/{shared → internal/shared}/utils/claim-safety.d.ts +0 -0
- /package/dist/{shared → internal/shared}/utils/claim-safety.js +0 -0
- /package/dist/{shared → internal/shared}/utils/telegram-handle.d.ts +0 -0
- /package/dist/{shared → internal/shared}/utils/telegram-handle.js +0 -0
- /package/dist/{shared/interfaces/database.capabilities.js → platform/database/capabilities.js} +0 -0
- /package/dist/{shared/interfaces/database.entities.js → platform/database/entities.js} +0 -0
- /package/dist/{shared/interfaces/database.identity-queries.js → platform/database/identity-queries.js} +0 -0
- /package/dist/{agents/agent.dispatcher.port.js → platform/database/negotiation.js} +0 -0
- /package/dist/{chat/chat.persona.js → platform/database/opportunity-queries.js} +0 -0
- /package/dist/{contexts/context.tools.port.js → platform/discovery/embedder.js} +0 -0
- /package/dist/{shared/interfaces/scraper.interface.d.ts → platform/discovery/scraper.d.ts} +0 -0
- /package/dist/{negotiations/negotiation.deadlock.contracts.js → platform/discovery/scraper.js} +0 -0
- /package/dist/{shared/interfaces/enrichment.interface.d.ts → platform/enrichment/ports.d.ts} +0 -0
- /package/dist/{negotiations/negotiation.tools.port.js → platform/enrichment/ports.js} +0 -0
- /package/dist/{opportunities/opportunity.tools.port.js → platform/runtime/observability.js} +0 -0
- /package/dist/{questions/question.input.js → protocol/core.js} +0 -0
- /package/dist/{shared → protocol}/schemas/chat-context.schema.d.ts +0 -0
- /package/dist/{shared → protocol}/schemas/chat-context.schema.js +0 -0
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
import { deriveAllowedNetworkIds, scopeFromNetworkId } from "./tool.scope.js";
|
|
2
|
-
/**
|
|
3
|
-
* Thrown when a requested chat scope is invalid for the authenticated user.
|
|
4
|
-
* Controllers can map this to an HTTP status code.
|
|
5
|
-
*/
|
|
6
|
-
export class ChatContextAccessError extends Error {
|
|
7
|
-
constructor(message, statusCode, code) {
|
|
8
|
-
super(message);
|
|
9
|
-
this.statusCode = statusCode;
|
|
10
|
-
this.code = code;
|
|
11
|
-
this.name = "ChatContextAccessError";
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Resolve the canonical context used by chat tools and system prompt.
|
|
16
|
-
* This preloads user identity, profile, network memberships, and scoped index role.
|
|
17
|
-
*/
|
|
18
|
-
export async function resolveChatContext(params) {
|
|
19
|
-
const { database, userId, networkId, sessionId } = params;
|
|
20
|
-
const [user, rawProfile, userNetworks, globalContext] = await Promise.all([
|
|
21
|
-
database.getUser(userId),
|
|
22
|
-
database.getProfile(userId),
|
|
23
|
-
database.getNetworkMemberships(userId),
|
|
24
|
-
// The premise-derived global user_context paragraph. getProfile deliberately
|
|
25
|
-
// leaves `context` empty (WS8: narrative lives in user_contexts, not users);
|
|
26
|
-
// without this read the system prompt's only narrative is the stale onboarding
|
|
27
|
-
// bio, which resurrects facts the user has since retracted. Best-effort: a
|
|
28
|
-
// missing row or a minimal test adapter degrades to the empty string.
|
|
29
|
-
Promise.resolve()
|
|
30
|
-
.then(() => database.getUserContext?.(userId, null))
|
|
31
|
-
.catch(() => null),
|
|
32
|
-
]);
|
|
33
|
-
const userProfile = rawProfile ?? null;
|
|
34
|
-
if (userProfile && !userProfile.context && globalContext?.text) {
|
|
35
|
-
userProfile.context = globalContext.text;
|
|
36
|
-
}
|
|
37
|
-
if (!user) {
|
|
38
|
-
throw new ChatContextAccessError("User not found", 404, "USER_NOT_FOUND");
|
|
39
|
-
}
|
|
40
|
-
let scopedIndex = undefined;
|
|
41
|
-
let scopedMembershipRole = undefined;
|
|
42
|
-
let isOwner = false;
|
|
43
|
-
let indexName;
|
|
44
|
-
if (networkId) {
|
|
45
|
-
const [index, isMember, owner] = await Promise.all([
|
|
46
|
-
database.getNetwork(networkId),
|
|
47
|
-
database.isNetworkMember(networkId, userId),
|
|
48
|
-
database.isIndexOwner(networkId, userId),
|
|
49
|
-
]);
|
|
50
|
-
if (!index) {
|
|
51
|
-
throw new ChatContextAccessError("Index not found", 404, "INDEX_NOT_FOUND");
|
|
52
|
-
}
|
|
53
|
-
if (!isMember) {
|
|
54
|
-
throw new ChatContextAccessError("You are not a member of this network", 403, "INDEX_MEMBERSHIP_REQUIRED");
|
|
55
|
-
}
|
|
56
|
-
let membership = userNetworks.find((m) => m.networkId === index.id);
|
|
57
|
-
if (membership === undefined) {
|
|
58
|
-
membership = (await database.getNetworkMembership(index.id, userId)) ?? undefined;
|
|
59
|
-
}
|
|
60
|
-
scopedIndex = {
|
|
61
|
-
id: index.id,
|
|
62
|
-
title: index.title,
|
|
63
|
-
prompt: membership?.indexPrompt ?? null,
|
|
64
|
-
permissions: index.permissions ?? {},
|
|
65
|
-
};
|
|
66
|
-
isOwner = owner;
|
|
67
|
-
indexName = index.title;
|
|
68
|
-
scopedMembershipRole = owner ? "owner" : "member";
|
|
69
|
-
}
|
|
70
|
-
const userName = user.name ?? "Unknown";
|
|
71
|
-
const userEmail = user.email ?? "";
|
|
72
|
-
const hasName = !!user.name?.trim();
|
|
73
|
-
const scope = scopeFromNetworkId(networkId);
|
|
74
|
-
// Deprecated compatibility reach. New call sites should call
|
|
75
|
-
// deriveAllowedNetworkIds({ memberships: userNetworks, ...scope }) directly.
|
|
76
|
-
const allowedNetworkIds = deriveAllowedNetworkIds({
|
|
77
|
-
memberships: userNetworks,
|
|
78
|
-
...scope,
|
|
79
|
-
});
|
|
80
|
-
return {
|
|
81
|
-
userId,
|
|
82
|
-
userName,
|
|
83
|
-
userEmail,
|
|
84
|
-
networkId,
|
|
85
|
-
...scope,
|
|
86
|
-
indexName,
|
|
87
|
-
isOwner,
|
|
88
|
-
user,
|
|
89
|
-
userProfile,
|
|
90
|
-
userNetworks,
|
|
91
|
-
indexScope: allowedNetworkIds,
|
|
92
|
-
scopedIndex,
|
|
93
|
-
scopedMembershipRole,
|
|
94
|
-
isOnboarding: !(user.onboarding?.completedAt),
|
|
95
|
-
hasName,
|
|
96
|
-
...(sessionId !== undefined ? { sessionId } : {}),
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
100
|
-
// TOOL RESULT HELPERS
|
|
101
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
102
|
-
export function success(data) {
|
|
103
|
-
return JSON.stringify({ success: true, data });
|
|
104
|
-
}
|
|
105
|
-
export function error(message, debugSteps) {
|
|
106
|
-
return JSON.stringify({
|
|
107
|
-
success: false,
|
|
108
|
-
error: message,
|
|
109
|
-
...(debugSteps?.length ? { debugSteps } : {}),
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
/** Return needsClarification for missing required fields. */
|
|
113
|
-
export function needsClarification(params) {
|
|
114
|
-
return JSON.stringify({
|
|
115
|
-
success: false,
|
|
116
|
-
needsClarification: true,
|
|
117
|
-
...params,
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
121
|
-
// CONSTANTS & UTILITIES
|
|
122
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
123
|
-
/** Matches http/https URLs in text; captures full URL. */
|
|
124
|
-
const URL_IN_TEXT_REGEX = /https?:\/\/[^\s"'<>)\]]+/gi;
|
|
125
|
-
/**
|
|
126
|
-
* Matches bare domain URLs without protocol (e.g. github.com/foo, www.example.com).
|
|
127
|
-
* Requires at least a SLD.TLD pattern followed by optional path.
|
|
128
|
-
* Negative lookbehind ensures we don't double-match URLs already caught by URL_IN_TEXT_REGEX.
|
|
129
|
-
*/
|
|
130
|
-
const BARE_URL_REGEX = /(?<!\w:\/\/)(?<![/\w])(?:www\.)?[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.(?:com|org|net|io|dev|co|ai|app|xyz|me|info|gg|so|sh|cc|ly|fm|tv|to|tech|design|network|world|edu|gov|mil|int|us|uk|eu|de|fr|ca|au|jp|cn|in|br|nl|se|no|fi|dk|ch|at|be|it|es|pt|pl|cz|ru|kr|tw|hk|sg|nz|za|mx|ar|cl|id|ph|th|vn|my|ie)(?:\/[^\s"'<>)\]]*)?/gi;
|
|
131
|
-
/** UUID v4 format: 8-4-4-4-12 hex chars (e.g. c2505011-2e45-426e-81dd-b9abb9b72023) */
|
|
132
|
-
export const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
133
|
-
/**
|
|
134
|
-
* Resolves an array of network IDs to their display titles.
|
|
135
|
-
* Skips any IDs that don't resolve (deleted or invalid networks).
|
|
136
|
-
*/
|
|
137
|
-
export async function resolveIndexNames(database, networkIds) {
|
|
138
|
-
if (networkIds.length === 0)
|
|
139
|
-
return [];
|
|
140
|
-
const results = await Promise.all(networkIds.map(id => database.getNetwork(id)));
|
|
141
|
-
return results.filter(Boolean).map(idx => idx.title);
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Normalize a URL string: if it lacks a protocol, prepend "https://".
|
|
145
|
-
* Returns the normalized URL or null if the result is not a valid URL.
|
|
146
|
-
*/
|
|
147
|
-
export function normalizeUrl(raw) {
|
|
148
|
-
let url = raw.replace(/[.,;:!?)]+$/, "").trim();
|
|
149
|
-
if (!/^https?:\/\//i.test(url)) {
|
|
150
|
-
url = `https://${url}`;
|
|
151
|
-
}
|
|
152
|
-
try {
|
|
153
|
-
new URL(url);
|
|
154
|
-
return url;
|
|
155
|
-
}
|
|
156
|
-
catch {
|
|
157
|
-
return null;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Extract unique, valid URLs from a string (e.g. user message or details).
|
|
162
|
-
* Handles both full URLs (https://...) and bare domains (github.com/...).
|
|
163
|
-
*/
|
|
164
|
-
export function extractUrls(text) {
|
|
165
|
-
if (!text || typeof text !== "string")
|
|
166
|
-
return [];
|
|
167
|
-
const seen = new Set();
|
|
168
|
-
const out = [];
|
|
169
|
-
// Pass 1: full protocol URLs
|
|
170
|
-
const fullMatches = text.match(URL_IN_TEXT_REGEX) ?? [];
|
|
171
|
-
for (const raw of fullMatches) {
|
|
172
|
-
const url = normalizeUrl(raw);
|
|
173
|
-
if (url && !seen.has(url)) {
|
|
174
|
-
seen.add(url);
|
|
175
|
-
out.push(url);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
// Pass 2: bare domain URLs (e.g. github.com/foo)
|
|
179
|
-
const bareMatches = text.match(BARE_URL_REGEX) ?? [];
|
|
180
|
-
for (const raw of bareMatches) {
|
|
181
|
-
const url = normalizeUrl(raw);
|
|
182
|
-
if (url && !seen.has(url)) {
|
|
183
|
-
seen.add(url);
|
|
184
|
-
out.push(url);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
return out;
|
|
188
|
-
}
|
|
189
|
-
const SENSITIVE_FIELD_KEYS = new Set([
|
|
190
|
-
"secret",
|
|
191
|
-
"webhooksecret",
|
|
192
|
-
"password",
|
|
193
|
-
"apikey",
|
|
194
|
-
"token",
|
|
195
|
-
"accesstoken",
|
|
196
|
-
"refreshtoken",
|
|
197
|
-
"privatekey",
|
|
198
|
-
"authtoken",
|
|
199
|
-
"bearertoken",
|
|
200
|
-
"clientsecret",
|
|
201
|
-
]);
|
|
202
|
-
/**
|
|
203
|
-
* Recursively redacts sensitive field values from an arbitrary payload before
|
|
204
|
-
* it is passed to a structured logger. Matches field names case-insensitively
|
|
205
|
-
* and ignoring underscores, so `api_key`, `apiKey`, and `API_KEY` all match.
|
|
206
|
-
* Non-sensitive fields are passed through unchanged. Never mutates the input —
|
|
207
|
-
* returns a new value.
|
|
208
|
-
*
|
|
209
|
-
* Intended for structured-log redaction only. Do NOT use as a security
|
|
210
|
-
* boundary for data in motion.
|
|
211
|
-
*
|
|
212
|
-
* @param value - Arbitrary JSON-like payload (query object, config blob, etc.)
|
|
213
|
-
* @returns A new value with sensitive fields replaced by `"[redacted]"`.
|
|
214
|
-
*/
|
|
215
|
-
export function redactSensitiveFields(value) {
|
|
216
|
-
if (value === null || typeof value !== "object")
|
|
217
|
-
return value;
|
|
218
|
-
if (Array.isArray(value)) {
|
|
219
|
-
return value.map((item) => redactSensitiveFields(item));
|
|
220
|
-
}
|
|
221
|
-
const out = {};
|
|
222
|
-
for (const [key, inner] of Object.entries(value)) {
|
|
223
|
-
const normalized = key.toLowerCase().replace(/_/g, "");
|
|
224
|
-
if (SENSITIVE_FIELD_KEYS.has(normalized)) {
|
|
225
|
-
out[key] = "[redacted]";
|
|
226
|
-
}
|
|
227
|
-
else {
|
|
228
|
-
out[key] = redactSensitiveFields(inner);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
return out;
|
|
232
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { ToolDeps, ToolRegistry } from './tool.helpers.js';
|
|
2
|
-
import type { ToolSurface } from './utility.tools.js';
|
|
3
|
-
import type { OpportunityOwnerApprovalDeps } from '../../opportunities/opportunity.tools.port.js';
|
|
4
|
-
export interface CreateToolRegistryOptions {
|
|
5
|
-
/**
|
|
6
|
-
* Tool-surface profile. The default `'rest'` profile (direct HTTP Tool API)
|
|
7
|
-
* exposes contact/Gmail tools, `scrape_url`, and `complete_onboarding`. The
|
|
8
|
-
* restricted `'mcp'` profile omits those surfaces (IND-596/597). Retired
|
|
9
|
-
* profile/profile-run compatibility aliases are absent from both profiles
|
|
10
|
-
* (IND-373/598).
|
|
11
|
-
*/
|
|
12
|
-
surface?: ToolSurface;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Creates a tool registry containing all tool handlers indexed by name.
|
|
16
|
-
* Handlers are raw async functions (not LangChain tool() wrappers) that
|
|
17
|
-
* accept { context, query } and return a JSON string.
|
|
18
|
-
*
|
|
19
|
-
* @param deps - Shared tool dependencies (graphs, database, embedder, etc.)
|
|
20
|
-
* @param options - Surface profile selecting the MCP-restricted or full REST set.
|
|
21
|
-
* @returns Map of tool name to raw tool definition.
|
|
22
|
-
*/
|
|
23
|
-
/** Complete registry composition with the opportunity-local owner-proof port. */
|
|
24
|
-
export type ToolRegistryDeps = ToolDeps & OpportunityOwnerApprovalDeps;
|
|
25
|
-
export declare function createToolRegistry(deps: ToolRegistryDeps, options?: CreateToolRegistryOptions): ToolRegistry;
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { error, redactSensitiveFields } from './tool.helpers.js';
|
|
2
|
-
import { createEnrichmentTools } from '../../enrichment/enrichment.tools.js';
|
|
3
|
-
import { Intents } from '../../intents/intent.module.js';
|
|
4
|
-
import { Networks } from '../../networks/network.module.js';
|
|
5
|
-
import { createOpportunityTools } from '../../opportunities/opportunity.module.js';
|
|
6
|
-
import { createUtilityTools } from './utility.tools.js';
|
|
7
|
-
import { createContactTools } from '../../contacts/contact.module.js';
|
|
8
|
-
import { createAgentTools } from '../../agents/agent.module.js';
|
|
9
|
-
import { createNegotiationTools } from '../../negotiations/negotiation.module.js';
|
|
10
|
-
import { createChatTools } from '../../chat/chat.tools.js';
|
|
11
|
-
import { createPremiseTools } from '../../premises/premise.tools.js';
|
|
12
|
-
import { protocolLogger } from '../observability/protocol.logger.js';
|
|
13
|
-
import { requestContext } from '../observability/request-context.js';
|
|
14
|
-
const logger = protocolLogger('ToolRegistry');
|
|
15
|
-
export function createToolRegistry(deps, options = {}) {
|
|
16
|
-
const registry = new Map();
|
|
17
|
-
const isMcpSurface = options.surface === 'mcp';
|
|
18
|
-
// defineTool that captures raw handlers into the registry
|
|
19
|
-
function defineTool(opts) {
|
|
20
|
-
const entry = {
|
|
21
|
-
name: opts.name,
|
|
22
|
-
description: opts.description,
|
|
23
|
-
schema: opts.querySchema,
|
|
24
|
-
handler: async (input) => {
|
|
25
|
-
logger.verbose('Tool invoked', {
|
|
26
|
-
toolName: opts.name,
|
|
27
|
-
context: { userId: input.context.userId, scopeType: input.context.scopeType, scopeId: input.context.scopeId },
|
|
28
|
-
query: redactSensitiveFields(input.query),
|
|
29
|
-
});
|
|
30
|
-
try {
|
|
31
|
-
return await opts.handler({ context: input.context, query: input.query });
|
|
32
|
-
}
|
|
33
|
-
catch (err) {
|
|
34
|
-
const abortSignal = requestContext.getStore()?.abortSignal;
|
|
35
|
-
if (abortSignal?.aborted) {
|
|
36
|
-
throw err;
|
|
37
|
-
}
|
|
38
|
-
logger.error('Tool failed', {
|
|
39
|
-
toolName: opts.name,
|
|
40
|
-
error: err instanceof Error ? err.message : String(err),
|
|
41
|
-
});
|
|
42
|
-
return error(`Failed to execute ${opts.name}: ${err instanceof Error ? err.message : String(err)}`);
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
registry.set(opts.name, entry);
|
|
47
|
-
// Return a dummy — create*Tools functions collect return values into arrays,
|
|
48
|
-
// but for the registry path we only need the side-effect on the Map.
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
// Create all tool domains -- each one calls defineTool() which populates the registry.
|
|
52
|
-
// The local defineTool is compatible with DefineTool (which returns any).
|
|
53
|
-
const dt = defineTool;
|
|
54
|
-
createEnrichmentTools(dt, deps, { surface: isMcpSurface ? 'mcp' : 'rest' });
|
|
55
|
-
Intents.createTools(dt, deps);
|
|
56
|
-
Networks.createTools(dt, deps);
|
|
57
|
-
createOpportunityTools(dt, deps);
|
|
58
|
-
// Utility tools always register read_docs + read_activity_summary; on the
|
|
59
|
-
// MCP surface scrape_url is omitted and read_docs guidance is sanitized
|
|
60
|
-
// (IND-597). The retired report_agent_activity name retains no alias on
|
|
61
|
-
// either surface (IND-605).
|
|
62
|
-
createUtilityTools(dt, deps, { surface: isMcpSurface ? 'mcp' : 'rest' });
|
|
63
|
-
// Contact tools are omitted from the MCP surface (IND-596). Their
|
|
64
|
-
// implementations remain available to the REST Tool API and chat agent.
|
|
65
|
-
if (!isMcpSurface) {
|
|
66
|
-
createContactTools(dt, deps);
|
|
67
|
-
}
|
|
68
|
-
createAgentTools(dt, deps);
|
|
69
|
-
createNegotiationTools(dt, deps);
|
|
70
|
-
createPremiseTools(dt, deps);
|
|
71
|
-
if (deps.chatSession) {
|
|
72
|
-
createChatTools(dt, deps);
|
|
73
|
-
}
|
|
74
|
-
logger.verbose('Tool registry created', { toolCount: registry.size, surface: options.surface ?? 'rest' });
|
|
75
|
-
return registry;
|
|
76
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { TraceEmitter } from "../observability/request-context.js";
|
|
2
|
-
import type { RawToolDefinition, ResolvedToolContext } from "./tool.helpers.js";
|
|
3
|
-
export type ToolTimeoutClass = "fast" | "bounded_slow" | "async_candidate";
|
|
4
|
-
export type ToolRuntimeErrorCode = "TOOL_TIMEOUT" | "TOOL_CANCELLED" | "TOOL_OUTPUT_TOO_LARGE";
|
|
5
|
-
export interface ToolTimeoutPolicy {
|
|
6
|
-
class: ToolTimeoutClass;
|
|
7
|
-
timeoutMs: number;
|
|
8
|
-
maxOutputBytes: number;
|
|
9
|
-
}
|
|
10
|
-
export interface ToolInvocationRuntimeInput {
|
|
11
|
-
toolName: string;
|
|
12
|
-
tool: Pick<RawToolDefinition, "handler">;
|
|
13
|
-
context: ResolvedToolContext;
|
|
14
|
-
query: unknown;
|
|
15
|
-
signal?: AbortSignal;
|
|
16
|
-
traceEmitter?: TraceEmitter;
|
|
17
|
-
timeoutMs?: number;
|
|
18
|
-
maxOutputBytes?: number;
|
|
19
|
-
}
|
|
20
|
-
export declare function getToolTimeoutPolicy(toolName: string): ToolTimeoutPolicy;
|
|
21
|
-
export declare class ToolRuntimeError extends Error {
|
|
22
|
-
readonly code: ToolRuntimeErrorCode;
|
|
23
|
-
readonly toolName: string;
|
|
24
|
-
readonly policy: ToolTimeoutPolicy;
|
|
25
|
-
constructor(code: ToolRuntimeErrorCode, message: string, toolName: string, policy: ToolTimeoutPolicy);
|
|
26
|
-
}
|
|
27
|
-
export declare function invokeToolRuntime(input: ToolInvocationRuntimeInput): Promise<string>;
|
|
28
|
-
export declare function toolRuntimeErrorToResult(err: unknown): string | null;
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import { timed } from "../observability/performance.js";
|
|
2
|
-
import { requestContext } from "../observability/request-context.js";
|
|
3
|
-
const FAST_TIMEOUT_MS = 10000;
|
|
4
|
-
const BOUNDED_SLOW_TIMEOUT_MS = 45000;
|
|
5
|
-
const ASYNC_CANDIDATE_TIMEOUT_MS = 50000;
|
|
6
|
-
const DEFAULT_MAX_OUTPUT_BYTES = 1000000;
|
|
7
|
-
const FAST_TOOLS = new Set([
|
|
8
|
-
"create_intent_index",
|
|
9
|
-
"delete_intent_index",
|
|
10
|
-
"search_intents",
|
|
11
|
-
"read_networks",
|
|
12
|
-
"update_network",
|
|
13
|
-
"create_network",
|
|
14
|
-
"delete_network",
|
|
15
|
-
"create_network_membership",
|
|
16
|
-
"delete_network_membership",
|
|
17
|
-
"confirm_opportunity_delivery",
|
|
18
|
-
"read_docs",
|
|
19
|
-
"get_enrichment_run",
|
|
20
|
-
"cancel_enrichment_run",
|
|
21
|
-
"remove_contact",
|
|
22
|
-
"read_own_agent",
|
|
23
|
-
"register_agent",
|
|
24
|
-
"list_agents",
|
|
25
|
-
"update_agent",
|
|
26
|
-
"delete_agent",
|
|
27
|
-
"grant_agent_permission",
|
|
28
|
-
"revoke_agent_permission",
|
|
29
|
-
"retract_premise",
|
|
30
|
-
]);
|
|
31
|
-
const ASYNC_CANDIDATE_TOOLS = new Set([
|
|
32
|
-
"read_user_contexts",
|
|
33
|
-
"preview_user_context",
|
|
34
|
-
"create_user_context",
|
|
35
|
-
"update_user_context",
|
|
36
|
-
"create_intent",
|
|
37
|
-
"update_intent",
|
|
38
|
-
"scrape_url",
|
|
39
|
-
"respond_to_negotiation",
|
|
40
|
-
"create_premise",
|
|
41
|
-
"update_premise",
|
|
42
|
-
]);
|
|
43
|
-
function parsePositiveIntEnv(name, fallback) {
|
|
44
|
-
const raw = process.env[name];
|
|
45
|
-
if (!raw)
|
|
46
|
-
return fallback;
|
|
47
|
-
const parsed = Number.parseInt(raw, 10);
|
|
48
|
-
return Number.isFinite(parsed) && parsed > 0 && parsed <= Number.MAX_SAFE_INTEGER
|
|
49
|
-
? parsed
|
|
50
|
-
: fallback;
|
|
51
|
-
}
|
|
52
|
-
function toolNameEnv(toolName) {
|
|
53
|
-
return `MCP_TOOL_TIMEOUT_${toolName.toUpperCase().replace(/[^A-Z0-9]+/g, "_")}_MS`;
|
|
54
|
-
}
|
|
55
|
-
function toolNameOutputEnv(toolName) {
|
|
56
|
-
return `MCP_TOOL_MAX_OUTPUT_${toolName.toUpperCase().replace(/[^A-Z0-9]+/g, "_")}_BYTES`;
|
|
57
|
-
}
|
|
58
|
-
export function getToolTimeoutPolicy(toolName) {
|
|
59
|
-
const classification = FAST_TOOLS.has(toolName)
|
|
60
|
-
? "fast"
|
|
61
|
-
: ASYNC_CANDIDATE_TOOLS.has(toolName)
|
|
62
|
-
? "async_candidate"
|
|
63
|
-
: "bounded_slow";
|
|
64
|
-
let classDefault;
|
|
65
|
-
switch (classification) {
|
|
66
|
-
case "fast":
|
|
67
|
-
classDefault = parsePositiveIntEnv("MCP_TOOL_TIMEOUT_FAST_MS", FAST_TIMEOUT_MS);
|
|
68
|
-
break;
|
|
69
|
-
case "async_candidate":
|
|
70
|
-
classDefault = parsePositiveIntEnv("MCP_TOOL_TIMEOUT_ASYNC_CANDIDATE_MS", ASYNC_CANDIDATE_TIMEOUT_MS);
|
|
71
|
-
break;
|
|
72
|
-
default:
|
|
73
|
-
classDefault = parsePositiveIntEnv("MCP_TOOL_TIMEOUT_BOUNDED_SLOW_MS", BOUNDED_SLOW_TIMEOUT_MS);
|
|
74
|
-
}
|
|
75
|
-
const defaultMaxOutputBytes = parsePositiveIntEnv("MCP_TOOL_MAX_OUTPUT_BYTES", DEFAULT_MAX_OUTPUT_BYTES);
|
|
76
|
-
return {
|
|
77
|
-
class: classification,
|
|
78
|
-
timeoutMs: parsePositiveIntEnv(toolNameEnv(toolName), classDefault),
|
|
79
|
-
maxOutputBytes: parsePositiveIntEnv(toolNameOutputEnv(toolName), defaultMaxOutputBytes),
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
export class ToolRuntimeError extends Error {
|
|
83
|
-
constructor(code, message, toolName, policy) {
|
|
84
|
-
super(message);
|
|
85
|
-
this.code = code;
|
|
86
|
-
this.toolName = toolName;
|
|
87
|
-
this.policy = policy;
|
|
88
|
-
this.name = "ToolRuntimeError";
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/** Builds the typed timeout/cancellation error shared by the abort race and catch paths. */
|
|
92
|
-
function makeAbortError(timedOut, toolName, policy) {
|
|
93
|
-
const code = timedOut ? "TOOL_TIMEOUT" : "TOOL_CANCELLED";
|
|
94
|
-
return new ToolRuntimeError(code, code === "TOOL_TIMEOUT"
|
|
95
|
-
? `Tool ${toolName} timed out after ${policy.timeoutMs}ms.`
|
|
96
|
-
: `Tool ${toolName} was cancelled before it completed.`, toolName, policy);
|
|
97
|
-
}
|
|
98
|
-
function combineSignals(signals) {
|
|
99
|
-
const controller = new AbortController();
|
|
100
|
-
const listeners = [];
|
|
101
|
-
for (const source of signals) {
|
|
102
|
-
if (!source)
|
|
103
|
-
continue;
|
|
104
|
-
if (source.aborted) {
|
|
105
|
-
controller.abort(source.reason);
|
|
106
|
-
break;
|
|
107
|
-
}
|
|
108
|
-
const onAbort = () => {
|
|
109
|
-
if (!controller.signal.aborted)
|
|
110
|
-
controller.abort(source.reason);
|
|
111
|
-
};
|
|
112
|
-
source.addEventListener("abort", onAbort, { once: true });
|
|
113
|
-
listeners.push(() => source.removeEventListener("abort", onAbort));
|
|
114
|
-
}
|
|
115
|
-
return {
|
|
116
|
-
signal: controller.signal,
|
|
117
|
-
abort: (reason) => {
|
|
118
|
-
if (!controller.signal.aborted)
|
|
119
|
-
controller.abort(reason);
|
|
120
|
-
},
|
|
121
|
-
cleanup: () => {
|
|
122
|
-
for (const cleanup of listeners)
|
|
123
|
-
cleanup();
|
|
124
|
-
},
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
export async function invokeToolRuntime(input) {
|
|
128
|
-
return timed(`ToolRuntime.${input.toolName}`, () => invokeToolRuntimeInner(input));
|
|
129
|
-
}
|
|
130
|
-
async function invokeToolRuntimeInner(input) {
|
|
131
|
-
const basePolicy = getToolTimeoutPolicy(input.toolName);
|
|
132
|
-
const policy = {
|
|
133
|
-
...basePolicy,
|
|
134
|
-
...(input.timeoutMs !== undefined ? { timeoutMs: input.timeoutMs } : {}),
|
|
135
|
-
...(input.maxOutputBytes !== undefined ? { maxOutputBytes: input.maxOutputBytes } : {}),
|
|
136
|
-
};
|
|
137
|
-
const inherited = requestContext.getStore();
|
|
138
|
-
const combined = combineSignals([input.signal, inherited?.abortSignal]);
|
|
139
|
-
let timedOut = false;
|
|
140
|
-
const timer = setTimeout(() => {
|
|
141
|
-
timedOut = true;
|
|
142
|
-
combined.abort(new Error(`Tool ${input.toolName} timed out after ${policy.timeoutMs}ms`));
|
|
143
|
-
}, policy.timeoutMs);
|
|
144
|
-
let removeAbortListener = () => { };
|
|
145
|
-
const abortPromise = new Promise((_, reject) => {
|
|
146
|
-
const onAbort = () => {
|
|
147
|
-
reject(makeAbortError(timedOut, input.toolName, policy));
|
|
148
|
-
};
|
|
149
|
-
combined.signal.addEventListener("abort", onAbort, { once: true });
|
|
150
|
-
removeAbortListener = () => combined.signal.removeEventListener("abort", onAbort);
|
|
151
|
-
});
|
|
152
|
-
try {
|
|
153
|
-
const run = () => input.tool.handler({ context: input.context, query: input.query });
|
|
154
|
-
const toolPromise = requestContext.run({
|
|
155
|
-
...inherited,
|
|
156
|
-
abortSignal: combined.signal,
|
|
157
|
-
traceEmitter: input.traceEmitter ?? inherited?.traceEmitter,
|
|
158
|
-
}, run);
|
|
159
|
-
const result = await Promise.race([toolPromise, abortPromise]);
|
|
160
|
-
const outputBytes = new TextEncoder().encode(result).byteLength;
|
|
161
|
-
if (outputBytes > policy.maxOutputBytes) {
|
|
162
|
-
throw new ToolRuntimeError("TOOL_OUTPUT_TOO_LARGE", `Tool ${input.toolName} returned ${outputBytes} bytes, exceeding the ${policy.maxOutputBytes} byte limit.`, input.toolName, policy);
|
|
163
|
-
}
|
|
164
|
-
return result;
|
|
165
|
-
}
|
|
166
|
-
catch (err) {
|
|
167
|
-
if (err instanceof ToolRuntimeError)
|
|
168
|
-
throw err;
|
|
169
|
-
if (combined.signal.aborted) {
|
|
170
|
-
throw makeAbortError(timedOut, input.toolName, policy);
|
|
171
|
-
}
|
|
172
|
-
throw err;
|
|
173
|
-
}
|
|
174
|
-
finally {
|
|
175
|
-
clearTimeout(timer);
|
|
176
|
-
removeAbortListener();
|
|
177
|
-
combined.cleanup();
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
export function toolRuntimeErrorToResult(err) {
|
|
181
|
-
if (!(err instanceof ToolRuntimeError))
|
|
182
|
-
return null;
|
|
183
|
-
return JSON.stringify({
|
|
184
|
-
success: false,
|
|
185
|
-
code: err.code,
|
|
186
|
-
error: err.message,
|
|
187
|
-
data: {
|
|
188
|
-
tool: err.toolName,
|
|
189
|
-
timeoutClass: err.policy.class,
|
|
190
|
-
timeoutMs: err.policy.timeoutMs,
|
|
191
|
-
maxOutputBytes: err.policy.maxOutputBytes,
|
|
192
|
-
},
|
|
193
|
-
});
|
|
194
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Request scope primitives for protocol tools.
|
|
3
|
-
*
|
|
4
|
-
* `scopeType`/`scopeId` describe the user's focused scope, not the full set of
|
|
5
|
-
* networks a caller may read or write. Helper functions derive concrete network
|
|
6
|
-
* id sets from the focused scope plus the caller's memberships.
|
|
7
|
-
*/
|
|
8
|
-
export type ToolScopeType = 'network' | 'intent';
|
|
9
|
-
export interface ToolScopeEnvelope {
|
|
10
|
-
scopeType?: ToolScopeType;
|
|
11
|
-
scopeId?: string;
|
|
12
|
-
}
|
|
13
|
-
export interface ScopeMembership {
|
|
14
|
-
networkId: string;
|
|
15
|
-
isPersonal?: boolean | null;
|
|
16
|
-
}
|
|
17
|
-
export interface DeriveNetworkScopeInput extends ToolScopeEnvelope {
|
|
18
|
-
memberships: ScopeMembership[];
|
|
19
|
-
}
|
|
20
|
-
export declare function scopeFromNetworkId(networkId: string | null | undefined): ToolScopeEnvelope;
|
|
21
|
-
export declare function scopeFromIntentId(intentId: string | null | undefined): ToolScopeEnvelope;
|
|
22
|
-
export declare function hasNetworkScope(scope: ToolScopeEnvelope): scope is {
|
|
23
|
-
scopeType: 'network';
|
|
24
|
-
scopeId: string;
|
|
25
|
-
};
|
|
26
|
-
export declare function hasIntentScope(scope: ToolScopeEnvelope): scope is {
|
|
27
|
-
scopeType: 'intent';
|
|
28
|
-
scopeId: string;
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Returns the focused network id from the canonical scope envelope.
|
|
32
|
-
*
|
|
33
|
-
* This intentionally does not inspect legacy `networkId` fields; callers that
|
|
34
|
-
* still need a transition fallback should pass `scopeFromNetworkId(networkId)`
|
|
35
|
-
* at the boundary so tool logic remains envelope-driven.
|
|
36
|
-
*/
|
|
37
|
-
export declare function focusedNetworkId(scope: ToolScopeEnvelope): string | undefined;
|
|
38
|
-
export declare function focusedIntentId(scope: ToolScopeEnvelope): string | undefined;
|
|
39
|
-
/** Human-readable label for a focused scope, used in scope-restriction notes. */
|
|
40
|
-
export declare function focusedNetworkLabel(scope: ToolScopeEnvelope & {
|
|
41
|
-
indexName?: string;
|
|
42
|
-
}): string;
|
|
43
|
-
export declare function deriveAllowedNetworkIds(input: DeriveNetworkScopeInput): string[];
|
|
44
|
-
export declare function deriveDiscoveryNetworkIds(input: DeriveNetworkScopeInput): string[];
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
function uniqueNetworkIds(ids) {
|
|
2
|
-
return [...new Set(ids.map((id) => id.trim()).filter(Boolean))];
|
|
3
|
-
}
|
|
4
|
-
export function scopeFromNetworkId(networkId) {
|
|
5
|
-
const scopeId = networkId?.trim();
|
|
6
|
-
return scopeId ? { scopeType: 'network', scopeId } : {};
|
|
7
|
-
}
|
|
8
|
-
export function scopeFromIntentId(intentId) {
|
|
9
|
-
const scopeId = intentId?.trim();
|
|
10
|
-
return scopeId ? { scopeType: 'intent', scopeId } : {};
|
|
11
|
-
}
|
|
12
|
-
export function hasNetworkScope(scope) {
|
|
13
|
-
return scope.scopeType === 'network' && typeof scope.scopeId === 'string' && scope.scopeId.trim().length > 0;
|
|
14
|
-
}
|
|
15
|
-
export function hasIntentScope(scope) {
|
|
16
|
-
return scope.scopeType === 'intent' && typeof scope.scopeId === 'string' && scope.scopeId.trim().length > 0;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Returns the focused network id from the canonical scope envelope.
|
|
20
|
-
*
|
|
21
|
-
* This intentionally does not inspect legacy `networkId` fields; callers that
|
|
22
|
-
* still need a transition fallback should pass `scopeFromNetworkId(networkId)`
|
|
23
|
-
* at the boundary so tool logic remains envelope-driven.
|
|
24
|
-
*/
|
|
25
|
-
export function focusedNetworkId(scope) {
|
|
26
|
-
return hasNetworkScope(scope) ? scope.scopeId.trim() : undefined;
|
|
27
|
-
}
|
|
28
|
-
export function focusedIntentId(scope) {
|
|
29
|
-
return hasIntentScope(scope) ? scope.scopeId.trim() : undefined;
|
|
30
|
-
}
|
|
31
|
-
/** Human-readable label for a focused scope, used in scope-restriction notes. */
|
|
32
|
-
export function focusedNetworkLabel(scope) {
|
|
33
|
-
return scope.indexName ?? focusedNetworkId(scope) ?? 'this network';
|
|
34
|
-
}
|
|
35
|
-
export function deriveAllowedNetworkIds(input) {
|
|
36
|
-
if (!hasNetworkScope(input)) {
|
|
37
|
-
return uniqueNetworkIds(input.memberships.map((membership) => membership.networkId));
|
|
38
|
-
}
|
|
39
|
-
return uniqueNetworkIds(input.memberships
|
|
40
|
-
.filter((membership) => membership.networkId === input.scopeId || membership.isPersonal === true)
|
|
41
|
-
.map((membership) => membership.networkId));
|
|
42
|
-
}
|
|
43
|
-
export function deriveDiscoveryNetworkIds(input) {
|
|
44
|
-
if (!hasNetworkScope(input)) {
|
|
45
|
-
return uniqueNetworkIds(input.memberships.map((membership) => membership.networkId));
|
|
46
|
-
}
|
|
47
|
-
return input.memberships.some((membership) => membership.networkId === input.scopeId)
|
|
48
|
-
? [input.scopeId]
|
|
49
|
-
: [];
|
|
50
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { DefineTool, ToolRegistryCompositionDeps } from "./tool.helpers.js";
|
|
2
|
-
/** Host capabilities consumed by URL and profile utility tools. */
|
|
3
|
-
type UtilityToolDeps = Pick<ToolRegistryCompositionDeps, "scraper" | "userDb">;
|
|
4
|
-
/**
|
|
5
|
-
* Tool-surface profile. The restricted `'mcp'` surface omits `scrape_url`
|
|
6
|
-
* (IND-597) and sanitizes `read_docs` guidance so it never advertises the
|
|
7
|
-
* contact/Gmail workflows removed from MCP (IND-596). The default `'rest'`
|
|
8
|
-
* surface (direct HTTP Tool API + chat) retains full behavior.
|
|
9
|
-
*/
|
|
10
|
-
export type ToolSurface = "mcp" | "rest";
|
|
11
|
-
export interface CreateUtilityToolsOptions {
|
|
12
|
-
surface?: ToolSurface;
|
|
13
|
-
}
|
|
14
|
-
export declare function createUtilityTools(defineTool: DefineTool, deps: UtilityToolDeps, options?: CreateUtilityToolsOptions): any[];
|
|
15
|
-
export {};
|