@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,535 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { McpActivityCallerSchema } from '../shared/agent/activity-projection.js';
|
|
3
|
-
/** Canonical MCP permission actions. */
|
|
4
|
-
export const MCP_PERMISSION_ACTIONS = [
|
|
5
|
-
'manage:identity',
|
|
6
|
-
'manage:premises',
|
|
7
|
-
'manage:intents',
|
|
8
|
-
'manage:networks',
|
|
9
|
-
'manage:opportunities',
|
|
10
|
-
'manage:negotiations',
|
|
11
|
-
];
|
|
12
|
-
export const McpPermissionActionSchema = z.enum(MCP_PERMISSION_ACTIONS);
|
|
13
|
-
export const McpToolPermissionRequirementSchema = z.object({
|
|
14
|
-
action: McpPermissionActionSchema,
|
|
15
|
-
/**
|
|
16
|
-
* Capability reach only. Entity ownership, membership, approval, and exact
|
|
17
|
-
* scope checks remain in the capability handler.
|
|
18
|
-
*/
|
|
19
|
-
reach: z.enum(['principal', 'network']).default('principal'),
|
|
20
|
-
}).strict();
|
|
21
|
-
const McpToolPermissionMapSchema = z.record(z.string().min(1), McpToolPermissionRequirementSchema);
|
|
22
|
-
/**
|
|
23
|
-
* Runtime-validates a capability-owned tool-to-permission mapping.
|
|
24
|
-
*/
|
|
25
|
-
export function defineMcpToolPermissionMap(mapping) {
|
|
26
|
-
const parsed = McpToolPermissionMapSchema.parse(mapping);
|
|
27
|
-
return new Map(Object.entries(parsed));
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Exact full-standalone Hermes MCP surface. Every admitted tool maps to one
|
|
31
|
-
* canonical action; absence is denial, including human-only, deletion,
|
|
32
|
-
* permission-management, agent-administration, and retired aliases.
|
|
33
|
-
*/
|
|
34
|
-
export const HERMES_AGENT_MCP_TOOL_PERMISSIONS = defineMcpToolPermissionMap({
|
|
35
|
-
read_user_contexts: { action: 'manage:identity', reach: 'principal' },
|
|
36
|
-
preview_user_context: { action: 'manage:identity', reach: 'principal' },
|
|
37
|
-
confirm_user_context: { action: 'manage:identity', reach: 'principal' },
|
|
38
|
-
create_user_context: { action: 'manage:identity', reach: 'principal' },
|
|
39
|
-
update_user_context: { action: 'manage:identity', reach: 'principal' },
|
|
40
|
-
get_enrichment_run: { action: 'manage:identity', reach: 'principal' },
|
|
41
|
-
cancel_enrichment_run: { action: 'manage:identity', reach: 'principal' },
|
|
42
|
-
read_intents: { action: 'manage:intents', reach: 'network' },
|
|
43
|
-
search_intents: { action: 'manage:intents', reach: 'network' },
|
|
44
|
-
create_intent: { action: 'manage:intents', reach: 'network' },
|
|
45
|
-
update_intent: { action: 'manage:intents', reach: 'network' },
|
|
46
|
-
read_intent_indexes: { action: 'manage:intents', reach: 'network' },
|
|
47
|
-
create_intent_index: { action: 'manage:intents', reach: 'network' },
|
|
48
|
-
list_negotiations: { action: 'manage:negotiations', reach: 'network' },
|
|
49
|
-
get_negotiation: { action: 'manage:negotiations', reach: 'network' },
|
|
50
|
-
respond_to_negotiation: { action: 'manage:negotiations', reach: 'network' },
|
|
51
|
-
read_networks: { action: 'manage:networks', reach: 'network' },
|
|
52
|
-
read_network_memberships: { action: 'manage:networks', reach: 'network' },
|
|
53
|
-
create_network: { action: 'manage:networks', reach: 'network' },
|
|
54
|
-
update_network: { action: 'manage:networks', reach: 'network' },
|
|
55
|
-
create_network_membership: { action: 'manage:networks', reach: 'network' },
|
|
56
|
-
list_opportunities: { action: 'manage:opportunities', reach: 'network' },
|
|
57
|
-
update_opportunity: { action: 'manage:opportunities', reach: 'network' },
|
|
58
|
-
confirm_opportunity_delivery: { action: 'manage:opportunities', reach: 'network' },
|
|
59
|
-
read_premises: { action: 'manage:premises', reach: 'principal' },
|
|
60
|
-
create_premise: { action: 'manage:premises', reach: 'principal' },
|
|
61
|
-
update_premise: { action: 'manage:premises', reach: 'principal' },
|
|
62
|
-
retract_premise: { action: 'manage:premises', reach: 'principal' },
|
|
63
|
-
read_activity_summary: { action: 'manage:identity', reach: 'principal' },
|
|
64
|
-
read_docs: { action: 'manage:identity', reach: 'principal' },
|
|
65
|
-
});
|
|
66
|
-
export const McpToolAccessRuleSchema = z.object({
|
|
67
|
-
access: z.enum([
|
|
68
|
-
'permission',
|
|
69
|
-
'authenticated',
|
|
70
|
-
'human_only',
|
|
71
|
-
'agent_admin',
|
|
72
|
-
'informational',
|
|
73
|
-
'delivery_only',
|
|
74
|
-
'removed',
|
|
75
|
-
]),
|
|
76
|
-
actions: z.array(McpPermissionActionSchema).optional(),
|
|
77
|
-
reach: z.enum(['principal', 'network']),
|
|
78
|
-
}).strict().superRefine((rule, ctx) => {
|
|
79
|
-
if (rule.access === 'permission' && (!rule.actions || rule.actions.length === 0)) {
|
|
80
|
-
ctx.addIssue({
|
|
81
|
-
code: z.ZodIssueCode.custom,
|
|
82
|
-
path: ['actions'],
|
|
83
|
-
message: 'Permission rules require at least one action.',
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
if (rule.access !== 'permission' && rule.actions !== undefined) {
|
|
87
|
-
ctx.addIssue({
|
|
88
|
-
code: z.ZodIssueCode.custom,
|
|
89
|
-
path: ['actions'],
|
|
90
|
-
message: 'Only permission rules may declare actions.',
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
const McpToolAccessRuleMapSchema = z.record(z.string().min(1), McpToolAccessRuleSchema);
|
|
95
|
-
/** Runtime-validates a complete static MCP tool access matrix. */
|
|
96
|
-
export function defineMcpToolAccessRules(rules) {
|
|
97
|
-
const parsed = McpToolAccessRuleMapSchema.parse(rules);
|
|
98
|
-
return new Map(Object.entries(parsed));
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Canonical MCP tool authorization matrix.
|
|
102
|
-
*
|
|
103
|
-
* Every tool registered by `createToolRegistry` is classified. Tool handlers
|
|
104
|
-
* retain domain ownership, membership, exact-scope, and approval checks.
|
|
105
|
-
*/
|
|
106
|
-
export const CANONICAL_MCP_TOOL_ACCESS_RULES = defineMcpToolAccessRules({
|
|
107
|
-
// Participant identity/context.
|
|
108
|
-
read_user_contexts: { access: 'permission', actions: ['manage:identity'], reach: 'principal' },
|
|
109
|
-
preview_user_context: { access: 'permission', actions: ['manage:identity'], reach: 'principal' },
|
|
110
|
-
confirm_user_context: { access: 'permission', actions: ['manage:identity'], reach: 'principal' },
|
|
111
|
-
create_user_context: { access: 'permission', actions: ['manage:identity'], reach: 'principal' },
|
|
112
|
-
update_user_context: { access: 'permission', actions: ['manage:identity'], reach: 'principal' },
|
|
113
|
-
get_enrichment_run: { access: 'permission', actions: ['manage:identity'], reach: 'principal' },
|
|
114
|
-
cancel_enrichment_run: { access: 'permission', actions: ['manage:identity'], reach: 'principal' },
|
|
115
|
-
// Premises are meta-network; a network-scoped agent retains principal reach.
|
|
116
|
-
read_premises: { access: 'permission', actions: ['manage:premises'], reach: 'principal' },
|
|
117
|
-
create_premise: { access: 'permission', actions: ['manage:premises'], reach: 'principal' },
|
|
118
|
-
update_premise: { access: 'permission', actions: ['manage:premises'], reach: 'principal' },
|
|
119
|
-
retract_premise: { access: 'permission', actions: ['manage:premises'], reach: 'principal' },
|
|
120
|
-
// Signals.
|
|
121
|
-
read_intents: { access: 'authenticated', reach: 'network' },
|
|
122
|
-
search_intents: { access: 'authenticated', reach: 'network' },
|
|
123
|
-
create_intent: { access: 'permission', actions: ['manage:intents'], reach: 'network' },
|
|
124
|
-
update_intent: { access: 'permission', actions: ['manage:intents'], reach: 'network' },
|
|
125
|
-
delete_intent: { access: 'permission', actions: ['manage:intents'], reach: 'network' },
|
|
126
|
-
read_intent_indexes: { access: 'authenticated', reach: 'network' },
|
|
127
|
-
create_intent_index: { access: 'permission', actions: ['manage:intents'], reach: 'network' },
|
|
128
|
-
delete_intent_index: { access: 'permission', actions: ['manage:intents'], reach: 'network' },
|
|
129
|
-
// Communities.
|
|
130
|
-
read_networks: { access: 'authenticated', reach: 'network' },
|
|
131
|
-
read_network_memberships: { access: 'authenticated', reach: 'network' },
|
|
132
|
-
create_network: { access: 'permission', actions: ['manage:networks'], reach: 'network' },
|
|
133
|
-
update_network: { access: 'permission', actions: ['manage:networks'], reach: 'network' },
|
|
134
|
-
delete_network: { access: 'human_only', reach: 'network' },
|
|
135
|
-
create_network_membership: { access: 'permission', actions: ['manage:networks'], reach: 'network' },
|
|
136
|
-
delete_network_membership: { access: 'permission', actions: ['manage:networks'], reach: 'network' },
|
|
137
|
-
// Opportunities and delivery.
|
|
138
|
-
list_opportunities: { access: 'authenticated', reach: 'network' },
|
|
139
|
-
update_opportunity: { access: 'permission', actions: ['manage:opportunities'], reach: 'network' },
|
|
140
|
-
confirm_opportunity_delivery: { access: 'delivery_only', reach: 'network' },
|
|
141
|
-
// A2A negotiations.
|
|
142
|
-
list_negotiations: { access: 'permission', actions: ['manage:negotiations'], reach: 'network' },
|
|
143
|
-
get_negotiation: { access: 'permission', actions: ['manage:negotiations'], reach: 'network' },
|
|
144
|
-
respond_to_negotiation: { access: 'permission', actions: ['manage:negotiations'], reach: 'network' },
|
|
145
|
-
// H2A chat history.
|
|
146
|
-
list_conversations: { access: 'human_only', reach: 'principal' },
|
|
147
|
-
get_conversation: { access: 'human_only', reach: 'principal' },
|
|
148
|
-
// Agent administration.
|
|
149
|
-
read_own_agent: { access: 'agent_admin', reach: 'principal' },
|
|
150
|
-
register_agent: { access: 'agent_admin', reach: 'principal' },
|
|
151
|
-
list_agents: { access: 'agent_admin', reach: 'principal' },
|
|
152
|
-
update_agent: { access: 'agent_admin', reach: 'principal' },
|
|
153
|
-
delete_agent: { access: 'agent_admin', reach: 'principal' },
|
|
154
|
-
grant_agent_permission: { access: 'agent_admin', reach: 'principal' },
|
|
155
|
-
revoke_agent_permission: { access: 'agent_admin', reach: 'principal' },
|
|
156
|
-
// Protocol guidance.
|
|
157
|
-
read_docs: { access: 'informational', reach: 'principal' },
|
|
158
|
-
// Aggregate activity reporting. Any activity-domain permission admits the
|
|
159
|
-
// call; the handler then projects each domain by the caller's exact grants
|
|
160
|
-
// via the centralized activity projection, and a network agent's
|
|
161
|
-
// network-bound aggregates are narrowed to its bound community at the
|
|
162
|
-
// query/adapter layer.
|
|
163
|
-
read_activity_summary: {
|
|
164
|
-
access: 'permission',
|
|
165
|
-
actions: [
|
|
166
|
-
'manage:identity',
|
|
167
|
-
'manage:premises',
|
|
168
|
-
'manage:intents',
|
|
169
|
-
'manage:opportunities',
|
|
170
|
-
'manage:negotiations',
|
|
171
|
-
],
|
|
172
|
-
reach: 'principal',
|
|
173
|
-
},
|
|
174
|
-
// Restricted MCP surface still registered by the shared registry. The contact
|
|
175
|
-
// and Gmail-import tools, scrape_url, the deprecated profile/profile-run
|
|
176
|
-
// aliases, and the retired report_agent_activity name are no longer
|
|
177
|
-
// classified here because they are omitted from the MCP registry composition
|
|
178
|
-
// entirely (IND-596/597/598/605) — an unregistered tool is rejected as
|
|
179
|
-
// unknown before any authorization work. read_activity_summary (above) is
|
|
180
|
-
// the only public activity-reporting name; no legacy alias is retained.
|
|
181
|
-
});
|
|
182
|
-
/** Tools visible on the REST Tool API while web/CLI onboarding is incomplete. MCP does not use this allowlist. */
|
|
183
|
-
export const ONBOARDING_ALLOWED = new Set([
|
|
184
|
-
'register_agent',
|
|
185
|
-
'read_docs',
|
|
186
|
-
'preview_user_context',
|
|
187
|
-
'get_enrichment_run',
|
|
188
|
-
'cancel_enrichment_run',
|
|
189
|
-
'confirm_user_context',
|
|
190
|
-
'create_user_context',
|
|
191
|
-
'read_user_contexts',
|
|
192
|
-
'complete_onboarding',
|
|
193
|
-
'read_networks',
|
|
194
|
-
'create_network_membership',
|
|
195
|
-
'create_intent',
|
|
196
|
-
]);
|
|
197
|
-
/** Agent administration inventory. */
|
|
198
|
-
export const MCP_AGENT_ADMIN_TOOLS = new Set([
|
|
199
|
-
'read_own_agent',
|
|
200
|
-
'register_agent',
|
|
201
|
-
'list_agents',
|
|
202
|
-
'update_agent',
|
|
203
|
-
'delete_agent',
|
|
204
|
-
'grant_agent_permission',
|
|
205
|
-
'revoke_agent_permission',
|
|
206
|
-
]);
|
|
207
|
-
/** Informational inventory retained as a convenience export. */
|
|
208
|
-
export const MCP_INFORMATIONAL_TOOLS = new Set([
|
|
209
|
-
'read_docs',
|
|
210
|
-
]);
|
|
211
|
-
const McpPolicyAgentPermissionSchema = z.object({
|
|
212
|
-
agentId: z.string().min(1),
|
|
213
|
-
userId: z.string().min(1),
|
|
214
|
-
scope: z.enum(['global', 'node', 'network']),
|
|
215
|
-
scopeId: z.string().min(1).nullable(),
|
|
216
|
-
actions: z.array(z.string()),
|
|
217
|
-
}).strict();
|
|
218
|
-
export const McpPolicyAgentSnapshotSchema = z.object({
|
|
219
|
-
id: z.string().min(1),
|
|
220
|
-
ownerId: z.string().min(1),
|
|
221
|
-
type: z.enum(['personal', 'external', 'system']),
|
|
222
|
-
status: z.enum(['active', 'inactive']),
|
|
223
|
-
permissions: z.array(McpPolicyAgentPermissionSchema),
|
|
224
|
-
}).strict();
|
|
225
|
-
export const McpPrincipalProfileSchema = z.enum([
|
|
226
|
-
'session_human',
|
|
227
|
-
'enrollment_key',
|
|
228
|
-
'unregistered_key',
|
|
229
|
-
'registered_global_agent',
|
|
230
|
-
'registered_network_agent',
|
|
231
|
-
'hermes_agent',
|
|
232
|
-
'delivery_agent',
|
|
233
|
-
'invalid_agent',
|
|
234
|
-
]);
|
|
235
|
-
export const McpCapabilitySubjectSchema = z.object({
|
|
236
|
-
profile: McpPrincipalProfileSchema,
|
|
237
|
-
userId: z.string().min(1),
|
|
238
|
-
agentId: z.string().min(1).optional(),
|
|
239
|
-
agentType: z.enum(['personal', 'external', 'system']).optional(),
|
|
240
|
-
networkScopeId: z.string().min(1).nullable(),
|
|
241
|
-
permissions: z.array(McpPermissionActionSchema),
|
|
242
|
-
}).strict();
|
|
243
|
-
/**
|
|
244
|
-
* Retired durable grant actions and the canonical capabilities each projects to
|
|
245
|
-
* at the permission-loading boundary. TEMPORARY rolling-data compatibility
|
|
246
|
-
* (IND-607): while a mixed-version fleet is live, old replicas (current `dev`)
|
|
247
|
-
* still WRITE `manage:profile` / `manage:contacts` rows AFTER the pre-deploy
|
|
248
|
-
* `0109` migration runs, and un-migrated rows may also remain. The new runtime
|
|
249
|
-
* must therefore interpret these residual STORED rows so no agent loses access
|
|
250
|
-
* during the rolling window and none is over-authorized:
|
|
251
|
-
*
|
|
252
|
-
* - `manage:profile` -> `manage:identity` + `manage:premises`
|
|
253
|
-
* - `manage:contacts` -> (no capability)
|
|
254
|
-
*
|
|
255
|
-
* This is NOT a public alias: the legacy names are never accepted as INPUT
|
|
256
|
-
* (grant validation and tool schemas are canonical-only) and never surfaced in
|
|
257
|
-
* documentation or `tools/list`. They are tolerated ONLY as pre-existing stored
|
|
258
|
-
* data, and only until the post-drain final sweep sets `retired_remaining = 0`
|
|
259
|
-
* and the compatibility-removal gate is met (see the IND-609 rollout doc).
|
|
260
|
-
*/
|
|
261
|
-
const LEGACY_STORED_ACTION_PROJECTION = {
|
|
262
|
-
'manage:profile': ['manage:identity', 'manage:premises'],
|
|
263
|
-
'manage:contacts': [],
|
|
264
|
-
};
|
|
265
|
-
/**
|
|
266
|
-
* Central capability-loading interpretation of a stored permission row's raw
|
|
267
|
-
* actions. Canonical actions pass through; retired actions project per
|
|
268
|
-
* {@link LEGACY_STORED_ACTION_PROJECTION}; every unknown action fails closed
|
|
269
|
-
* (ignored). Owner/scope matching is applied by the caller BEFORE this runs, so
|
|
270
|
-
* this function never widens the scope a grant applies to.
|
|
271
|
-
*/
|
|
272
|
-
export function projectStoredPermissionActions(actions) {
|
|
273
|
-
const granted = new Set();
|
|
274
|
-
for (const action of actions) {
|
|
275
|
-
const projected = LEGACY_STORED_ACTION_PROJECTION[action];
|
|
276
|
-
if (projected !== undefined) {
|
|
277
|
-
for (const capability of projected)
|
|
278
|
-
granted.add(capability);
|
|
279
|
-
continue;
|
|
280
|
-
}
|
|
281
|
-
const parsed = McpPermissionActionSchema.safeParse(action);
|
|
282
|
-
if (parsed.success)
|
|
283
|
-
granted.add(parsed.data);
|
|
284
|
-
// Unknown actions are ignored — fail closed.
|
|
285
|
-
}
|
|
286
|
-
return [...granted];
|
|
287
|
-
}
|
|
288
|
-
function resolveAgentPermissions(identity, agent) {
|
|
289
|
-
const granted = new Set();
|
|
290
|
-
for (const permission of agent.permissions) {
|
|
291
|
-
if (permission.agentId !== identity.agentId || permission.userId !== identity.userId)
|
|
292
|
-
continue;
|
|
293
|
-
const scopeApplies = permission.scope === 'global' ||
|
|
294
|
-
(permission.scope === 'network' &&
|
|
295
|
-
identity.networkScopeId !== null &&
|
|
296
|
-
identity.networkScopeId !== undefined &&
|
|
297
|
-
permission.scopeId === identity.networkScopeId);
|
|
298
|
-
if (!scopeApplies)
|
|
299
|
-
continue;
|
|
300
|
-
// Canonical-only going forward, plus temporary interpretation of residual
|
|
301
|
-
// legacy stored rows during the mixed-version rolling window.
|
|
302
|
-
for (const action of projectStoredPermissionActions(permission.actions)) {
|
|
303
|
-
granted.add(action);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
return [...granted];
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* Resolves a request-local, runtime-validated principal profile.
|
|
310
|
-
*/
|
|
311
|
-
export function resolveMcpCapabilitySubject(input) {
|
|
312
|
-
const { identity } = input;
|
|
313
|
-
if (identity.isSessionAuth === true) {
|
|
314
|
-
return McpCapabilitySubjectSchema.parse({
|
|
315
|
-
profile: 'session_human',
|
|
316
|
-
userId: identity.userId,
|
|
317
|
-
networkScopeId: null,
|
|
318
|
-
permissions: [],
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
if (!identity.agentId) {
|
|
322
|
-
return McpCapabilitySubjectSchema.parse({
|
|
323
|
-
profile: identity.enrollmentCapable === true ? 'enrollment_key' : 'unregistered_key',
|
|
324
|
-
userId: identity.userId,
|
|
325
|
-
networkScopeId: null,
|
|
326
|
-
permissions: [],
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
const parsedAgent = McpPolicyAgentSnapshotSchema.safeParse(input.agent);
|
|
330
|
-
if (!parsedAgent.success ||
|
|
331
|
-
parsedAgent.data.id !== identity.agentId ||
|
|
332
|
-
parsedAgent.data.ownerId !== identity.userId ||
|
|
333
|
-
parsedAgent.data.status !== 'active') {
|
|
334
|
-
return McpCapabilitySubjectSchema.parse({
|
|
335
|
-
profile: 'invalid_agent',
|
|
336
|
-
userId: identity.userId,
|
|
337
|
-
agentId: identity.agentId,
|
|
338
|
-
networkScopeId: identity.networkScopeId ?? null,
|
|
339
|
-
permissions: [],
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
const agent = parsedAgent.data;
|
|
343
|
-
const profile = identity.isHermesAgent === true
|
|
344
|
-
? 'hermes_agent'
|
|
345
|
-
: identity.isDeliveryAgent === true
|
|
346
|
-
? 'delivery_agent'
|
|
347
|
-
: identity.networkScopeId
|
|
348
|
-
? 'registered_network_agent'
|
|
349
|
-
: 'registered_global_agent';
|
|
350
|
-
return McpCapabilitySubjectSchema.parse({
|
|
351
|
-
profile,
|
|
352
|
-
userId: identity.userId,
|
|
353
|
-
agentId: identity.agentId,
|
|
354
|
-
agentType: agent.type,
|
|
355
|
-
networkScopeId: identity.networkScopeId ?? null,
|
|
356
|
-
permissions: resolveAgentPermissions(identity, agent),
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
/**
|
|
360
|
-
* Maps a resolved capability subject to the typed caller context consumed by
|
|
361
|
-
* the centralized activity-summary projection. Session humans own the
|
|
362
|
-
* summarized data and receive the full owner view; every other profile is
|
|
363
|
-
* projected as an agent bounded by its granted permissions and (for network
|
|
364
|
-
* agents) its bound community.
|
|
365
|
-
*/
|
|
366
|
-
export function resolveMcpActivityCaller(subject) {
|
|
367
|
-
const isHuman = subject.profile === 'session_human';
|
|
368
|
-
return McpActivityCallerSchema.parse({
|
|
369
|
-
kind: isHuman ? 'human' : 'agent',
|
|
370
|
-
permissions: isHuman ? [] : subject.permissions,
|
|
371
|
-
networkScopeId: isHuman ? null : subject.networkScopeId,
|
|
372
|
-
});
|
|
373
|
-
}
|
|
374
|
-
export const McpCapabilityDecisionReasonSchema = z.enum([
|
|
375
|
-
'session_human',
|
|
376
|
-
'enrollment',
|
|
377
|
-
'authenticated',
|
|
378
|
-
'agent_self_read',
|
|
379
|
-
'informational',
|
|
380
|
-
'permission_granted',
|
|
381
|
-
'delivery',
|
|
382
|
-
'enrollment_required',
|
|
383
|
-
'unregistered_principal',
|
|
384
|
-
'invalid_agent',
|
|
385
|
-
'agent_admin_denied',
|
|
386
|
-
'human_read_own_agent_denied',
|
|
387
|
-
'human_only',
|
|
388
|
-
'permission_missing',
|
|
389
|
-
'delivery_required',
|
|
390
|
-
'removed',
|
|
391
|
-
'tool_unclassified',
|
|
392
|
-
]);
|
|
393
|
-
/**
|
|
394
|
-
* Builds a safe denial event from a resolved subject and a denial decision.
|
|
395
|
-
* Only whitelisted, non-sensitive fields are copied across; the caller's
|
|
396
|
-
* granted permissions, credentials, headers, and tool arguments are never
|
|
397
|
-
* included.
|
|
398
|
-
*/
|
|
399
|
-
export function buildMcpAuthorizationDenialEvent(input) {
|
|
400
|
-
const { phase, toolName, subject, decision } = input;
|
|
401
|
-
return {
|
|
402
|
-
phase,
|
|
403
|
-
toolName,
|
|
404
|
-
profile: subject.profile,
|
|
405
|
-
reason: decision.reason,
|
|
406
|
-
...(decision.reach ? { reach: decision.reach } : {}),
|
|
407
|
-
...(decision.requiredPermissions && decision.requiredPermissions.length > 0
|
|
408
|
-
? { requiredPermissions: [...decision.requiredPermissions] }
|
|
409
|
-
: {}),
|
|
410
|
-
userId: subject.userId,
|
|
411
|
-
...(subject.agentId ? { agentId: subject.agentId } : {}),
|
|
412
|
-
networkScopeId: subject.networkScopeId,
|
|
413
|
-
};
|
|
414
|
-
}
|
|
415
|
-
/**
|
|
416
|
-
* Reusable MCP capability policy. It stores static rules only; caller-specific
|
|
417
|
-
* subjects and decisions are never retained.
|
|
418
|
-
*/
|
|
419
|
-
export class McpCapabilityPolicy {
|
|
420
|
-
constructor(options = {}) {
|
|
421
|
-
const parsedRules = McpToolAccessRuleMapSchema.parse(Object.fromEntries(options.toolRules ?? CANONICAL_MCP_TOOL_ACCESS_RULES));
|
|
422
|
-
this.toolRules = new Map(Object.entries(parsedRules));
|
|
423
|
-
}
|
|
424
|
-
/**
|
|
425
|
-
* Decides whether a resolved caller may use one classified tool.
|
|
426
|
-
*/
|
|
427
|
-
authorize(subject, toolName) {
|
|
428
|
-
const rule = this.toolRules.get(toolName);
|
|
429
|
-
if (!rule)
|
|
430
|
-
return { allowed: false, reason: 'tool_unclassified' };
|
|
431
|
-
if (rule.access === 'removed') {
|
|
432
|
-
return { allowed: false, reason: 'removed', reach: rule.reach };
|
|
433
|
-
}
|
|
434
|
-
if (subject.profile === 'invalid_agent') {
|
|
435
|
-
return { allowed: false, reason: 'invalid_agent', reach: rule.reach };
|
|
436
|
-
}
|
|
437
|
-
if (subject.profile === 'unregistered_key') {
|
|
438
|
-
return { allowed: false, reason: 'unregistered_principal', reach: rule.reach };
|
|
439
|
-
}
|
|
440
|
-
if (subject.profile === 'enrollment_key') {
|
|
441
|
-
return toolName === 'register_agent'
|
|
442
|
-
? { allowed: true, reason: 'enrollment', reach: rule.reach }
|
|
443
|
-
: { allowed: false, reason: 'enrollment_required', reach: rule.reach };
|
|
444
|
-
}
|
|
445
|
-
if (subject.profile === 'hermes_agent') {
|
|
446
|
-
const requirement = HERMES_AGENT_MCP_TOOL_PERMISSIONS.get(toolName);
|
|
447
|
-
if (!requirement)
|
|
448
|
-
return { allowed: false, reason: 'tool_unclassified' };
|
|
449
|
-
return subject.permissions.includes(requirement.action)
|
|
450
|
-
? {
|
|
451
|
-
allowed: true,
|
|
452
|
-
reason: 'permission_granted',
|
|
453
|
-
reach: requirement.reach,
|
|
454
|
-
requiredPermissions: [requirement.action],
|
|
455
|
-
}
|
|
456
|
-
: {
|
|
457
|
-
allowed: false,
|
|
458
|
-
reason: 'permission_missing',
|
|
459
|
-
reach: requirement.reach,
|
|
460
|
-
requiredPermissions: [requirement.action],
|
|
461
|
-
};
|
|
462
|
-
}
|
|
463
|
-
if (rule.access === 'delivery_only') {
|
|
464
|
-
return subject.profile === 'delivery_agent'
|
|
465
|
-
? { allowed: true, reason: 'delivery', reach: rule.reach }
|
|
466
|
-
: { allowed: false, reason: 'delivery_required', reach: rule.reach };
|
|
467
|
-
}
|
|
468
|
-
// Agent administration is split by principal kind and must be decided
|
|
469
|
-
// BEFORE the generic session-human blanket allow below — otherwise a
|
|
470
|
-
// session human would be admitted to read_own_agent (an agent-only tool)
|
|
471
|
-
// by the blanket allow before this rule is ever reached (IND-599).
|
|
472
|
-
if (rule.access === 'agent_admin') {
|
|
473
|
-
// read_own_agent is the ONLY agent_admin tool available to a registered
|
|
474
|
-
// active agent, and it returns that agent's own record (no target). Every
|
|
475
|
-
// other agent_admin tool is an owner/admin action reserved for humans.
|
|
476
|
-
if (subject.profile === 'registered_global_agent' ||
|
|
477
|
-
subject.profile === 'registered_network_agent' ||
|
|
478
|
-
subject.profile === 'delivery_agent') {
|
|
479
|
-
return toolName === 'read_own_agent'
|
|
480
|
-
? { allowed: true, reason: 'agent_self_read', reach: rule.reach }
|
|
481
|
-
: { allowed: false, reason: 'agent_admin_denied', reach: rule.reach };
|
|
482
|
-
}
|
|
483
|
-
// Session humans get every agent_admin tool EXCEPT read_own_agent,
|
|
484
|
-
// which is reserved for agent principals.
|
|
485
|
-
if (subject.profile === 'session_human') {
|
|
486
|
-
return toolName === 'read_own_agent'
|
|
487
|
-
? { allowed: false, reason: 'human_read_own_agent_denied', reach: rule.reach }
|
|
488
|
-
: { allowed: true, reason: 'session_human', reach: rule.reach };
|
|
489
|
-
}
|
|
490
|
-
// Every other profile (enrollment/unregistered/invalid) is handled above
|
|
491
|
-
// and never reaches here; fail closed for completeness.
|
|
492
|
-
return { allowed: false, reason: 'agent_admin_denied', reach: rule.reach };
|
|
493
|
-
}
|
|
494
|
-
if (subject.profile === 'session_human') {
|
|
495
|
-
return { allowed: true, reason: 'session_human', reach: rule.reach };
|
|
496
|
-
}
|
|
497
|
-
if (rule.access === 'human_only') {
|
|
498
|
-
return { allowed: false, reason: 'human_only', reach: rule.reach };
|
|
499
|
-
}
|
|
500
|
-
if (rule.access === 'informational') {
|
|
501
|
-
return { allowed: true, reason: 'informational', reach: rule.reach };
|
|
502
|
-
}
|
|
503
|
-
if (rule.access === 'authenticated') {
|
|
504
|
-
return { allowed: true, reason: 'authenticated', reach: rule.reach };
|
|
505
|
-
}
|
|
506
|
-
const requiredPermissions = rule.actions ?? [];
|
|
507
|
-
return requiredPermissions.some((action) => subject.permissions.includes(action))
|
|
508
|
-
? {
|
|
509
|
-
allowed: true,
|
|
510
|
-
reason: 'permission_granted',
|
|
511
|
-
reach: rule.reach,
|
|
512
|
-
requiredPermissions,
|
|
513
|
-
}
|
|
514
|
-
: {
|
|
515
|
-
allowed: false,
|
|
516
|
-
reason: 'permission_missing',
|
|
517
|
-
reach: rule.reach,
|
|
518
|
-
requiredPermissions,
|
|
519
|
-
};
|
|
520
|
-
}
|
|
521
|
-
/**
|
|
522
|
-
* Filters a static inventory and returns a fresh, uncached caller list.
|
|
523
|
-
*/
|
|
524
|
-
visibleToolNames(subject, toolNames) {
|
|
525
|
-
return toolNames.filter((toolName) => this.authorize(subject, toolName).allowed);
|
|
526
|
-
}
|
|
527
|
-
/** Returns the static classification for inventory tests and host composition. */
|
|
528
|
-
ruleFor(toolName) {
|
|
529
|
-
return this.toolRules.get(toolName);
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
/** Canonical production options explicitly passed by the host composition. */
|
|
533
|
-
export const CANONICAL_MCP_CAPABILITY_POLICY_OPTIONS = {
|
|
534
|
-
toolRules: CANONICAL_MCP_TOOL_ACCESS_RULES,
|
|
535
|
-
};
|
package/dist/mcp/mcp.server.d.ts
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Server Factory — creates an McpServer instance with all protocol tools
|
|
3
|
-
* registered from the existing tool registry. Each tool invocation resolves
|
|
4
|
-
* auth from the HTTP request, builds a ResolvedToolContext, and delegates
|
|
5
|
-
* to the raw tool handler.
|
|
6
|
-
*/
|
|
7
|
-
import { McpServer, fromJsonSchema } from '@modelcontextprotocol/server';
|
|
8
|
-
import type { JsonSchemaType } from '@modelcontextprotocol/server';
|
|
9
|
-
import type { McpAuthResolver } from '../shared/interfaces/auth.interface.js';
|
|
10
|
-
import type { ToolDeps, ResolvedToolContext, RawToolDefinition } from '../shared/agent/tool.helpers.js';
|
|
11
|
-
import type { ToolRegistryDeps } from '../shared/agent/tool.registry.js';
|
|
12
|
-
import type { McpAuthorizationObserver, McpCapabilityPolicyOptions } from './mcp.authorization-policy.js';
|
|
13
|
-
/**
|
|
14
|
-
* Static registration metadata for one MCP tool — schema conversion artifacts
|
|
15
|
-
* that depend only on registry-shaping feature flags, not on per-request
|
|
16
|
-
* database scope.
|
|
17
|
-
*/
|
|
18
|
-
type McpToolRegistrationMetadata = Pick<RawToolDefinition, 'name' | 'description' | 'schema'> & {
|
|
19
|
-
jsonSchema: JsonSchemaType;
|
|
20
|
-
inputSchema: ReturnType<typeof fromJsonSchema>;
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Builds a cache key from registry-shaping dependency booleans.
|
|
24
|
-
* When a feature flag changes the tool set, the cache key changes so
|
|
25
|
-
* the cached metadata set is automatically invalidated.
|
|
26
|
-
*/
|
|
27
|
-
export declare function getMcpToolMetadataCacheKey(deps: Pick<ToolDeps, 'chatSession' | 'agentDatabase' | 'agentDispatcher' | 'questionerEnqueue'>): string;
|
|
28
|
-
/**
|
|
29
|
-
* Clears the metadata cache. Used in tests to ensure fresh state between cases.
|
|
30
|
-
*/
|
|
31
|
-
export declare function clearMcpToolMetadataCacheForTests(): void;
|
|
32
|
-
/**
|
|
33
|
-
* Returns cached (or builds and caches) static MCP tool registration metadata.
|
|
34
|
-
* The first call per cache key runs the full registry creation + schema
|
|
35
|
-
* conversion; subsequent calls return the cached metadata array for the same
|
|
36
|
-
* registry-shaping dependency profile.
|
|
37
|
-
*
|
|
38
|
-
* Does NOT store tool handlers — those remain request-scoped because they
|
|
39
|
-
* capture per-request userDb/systemDb.
|
|
40
|
-
*/
|
|
41
|
-
export declare function getCachedMcpToolMetadata(deps: ToolRegistryDeps): readonly McpToolRegistrationMetadata[];
|
|
42
|
-
/**
|
|
43
|
-
* Runtime/auth failures are converted into structured MCP `isError` tool
|
|
44
|
-
* results for the caller. Reporting them as application exceptions produces
|
|
45
|
-
* Sentry noise for expected client failures and policy-enforced timeouts.
|
|
46
|
-
*/
|
|
47
|
-
export declare function shouldReportMcpToolError(err: unknown): boolean;
|
|
48
|
-
/**
|
|
49
|
-
* Strips internal `_`-prefixed keys from `data` and promotes `isError`
|
|
50
|
-
* from the inner `success: false` signal to the MCP envelope level.
|
|
51
|
-
* Fail-open: if JSON parsing throws, returns the original text with isError: false.
|
|
52
|
-
*/
|
|
53
|
-
export declare function sanitizeMcpResult(text: string): {
|
|
54
|
-
text: string;
|
|
55
|
-
isError: boolean;
|
|
56
|
-
};
|
|
57
|
-
/**
|
|
58
|
-
* Factory for creating per-request scoped database instances.
|
|
59
|
-
* Injected from the controller/handler layer to keep the protocol layer
|
|
60
|
-
* free of direct adapter imports.
|
|
61
|
-
*/
|
|
62
|
-
export interface ScopedDepsFactory {
|
|
63
|
-
/** Creates scoped userDb and systemDb for the given user and allowed network IDs. */
|
|
64
|
-
create(userId: string, allowedNetworkIds: string[]): Pick<ToolDeps, 'userDb' | 'systemDb'>;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Promotes a network-scoped agent's bound network into the resolved tool
|
|
68
|
-
* context as the implicit chat scope. Every tool derives its focused network
|
|
69
|
-
* from the `scopeType`/`scopeId` envelope; without this step scoped API-key
|
|
70
|
-
* calls would still resolve an unscoped/global view.
|
|
71
|
-
*
|
|
72
|
-
* No-op when there is no scope, or when an explicit scope is already set
|
|
73
|
-
* (a user-driven network-scoped chat must keep precedence over the agent
|
|
74
|
-
* binding — which would be a strict subset anyway, since the API key cannot
|
|
75
|
-
* reach beyond its bound network).
|
|
76
|
-
*/
|
|
77
|
-
export declare const applyNetworkScopeToContext: (context: ResolvedToolContext, networkScopeId: string | null | undefined) => void;
|
|
78
|
-
export { ONBOARDING_ALLOWED } from './mcp.authorization-policy.js';
|
|
79
|
-
/**
|
|
80
|
-
* Builds the onboarding gate message for REST Tool API callers. Condensed
|
|
81
|
-
* from the chat onboarding flow into a 6-step tool-error guide. MCP does
|
|
82
|
-
* not use this gate.
|
|
83
|
-
*/
|
|
84
|
-
export declare function buildMcpOnboardingMessage(ctx: ResolvedToolContext): string;
|
|
85
|
-
export declare const MCP_INSTRUCTIONS: string;
|
|
86
|
-
/**
|
|
87
|
-
* Extracts a Bearer token from an HTTP Authorization header.
|
|
88
|
-
*/
|
|
89
|
-
export declare function extractBearerToken(req: Request): string | undefined;
|
|
90
|
-
export declare function createMcpServer(deps: ToolRegistryDeps, authResolver: McpAuthResolver, scopedDepsFactory: ScopedDepsFactory, policyOptions?: McpCapabilityPolicyOptions, authorizationObserver?: McpAuthorizationObserver): McpServer;
|