Full Code of finos/FDC3 for AI

main cc84068e60fd cached
1659 files
6.7 MB
1.8M tokens
2320 symbols
1 requests
Download .txt
Showing preview only (7,385K chars total). Download the full file or copy to clipboard to get everything.
Repository: finos/FDC3
Branch: main
Commit: cc84068e60fd
Files: 1659
Total size: 6.7 MB

Directory structure:
gitextract_bew5gbqd/

├── .editorconfig
├── .eslintignore
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── ---context_or_intent_proposal.md
│   │   ├── ---enhancement-request.md
│   │   ├── ---minor-issue.md
│   │   ├── ---question.md
│   │   ├── general-meeting.md
│   │   ├── identity-and-security-meeting.md
│   │   ├── maintainers-meeting.md
│   │   ├── standard-wg-meeting.md
│   │   ├── use-cases-and-workflows-meeting.md
│   │   └── web-browsers-meeting.md
│   ├── pull_request_template.md
│   └── workflows/
│       ├── coverage.yml
│       ├── cve-scanning.yml
│       ├── release.yml
│       ├── scorecard.yml
│       └── semgrep.yml
├── .gitignore
├── .husky/
│   └── pre-commit
├── .node-version
├── .npmrc
├── .nvmrc
├── .prettierignore
├── .semgrepignore
├── .vscode/
│   └── settings.json
├── CHANGELOG.md
├── CNAME
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── GOVERNANCE.md
├── LICENSE.md
├── LICENSE.spdx
├── NOTICES.md
├── PATENTS-FDC3-1.0.md
├── README.md
├── SCOPE.md
├── SECURITY.md
├── allow-list.json
├── comment-template.md
├── netlify.toml
├── package.json
├── packages/
│   ├── fdc3/
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   ├── fdc3-agent-proxy/
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── DesktopAgentProxy.ts
│   │   │   ├── Messaging.ts
│   │   │   ├── apps/
│   │   │   │   ├── AppSupport.ts
│   │   │   │   └── DefaultAppSupport.ts
│   │   │   ├── channels/
│   │   │   │   ├── ChannelSupport.ts
│   │   │   │   ├── DefaultChannel.ts
│   │   │   │   ├── DefaultChannelSupport.ts
│   │   │   │   └── DefaultPrivateChannel.ts
│   │   │   ├── heartbeat/
│   │   │   │   ├── DefaultHeartbeatSupport.ts
│   │   │   │   └── HeartbeatSupport.ts
│   │   │   ├── index.ts
│   │   │   ├── intents/
│   │   │   │   ├── DefaultIntentResolution.ts
│   │   │   │   ├── DefaultIntentSupport.ts
│   │   │   │   └── IntentSupport.ts
│   │   │   ├── listeners/
│   │   │   │   ├── AbstractListener.ts
│   │   │   │   ├── DefaultContextListener.ts
│   │   │   │   ├── DefaultIntentListener.ts
│   │   │   │   ├── DesktopAgentEventListener.ts
│   │   │   │   ├── EventListener.ts
│   │   │   │   ├── HeartbeatListener.ts
│   │   │   │   ├── PrivateChannelEventListener.ts
│   │   │   │   ├── RegisterableListener.ts
│   │   │   │   └── UserChannelContextListener.ts
│   │   │   ├── messaging/
│   │   │   │   └── AbstractMessaging.ts
│   │   │   └── util/
│   │   │       ├── AbstractFDC3Logger.ts
│   │   │       ├── Logger.ts
│   │   │       └── throwIfUndefined.ts
│   │   ├── test/
│   │   │   ├── features/
│   │   │   │   ├── app-channels.feature
│   │   │   │   ├── app-metadata.feature
│   │   │   │   ├── broadcast.feature
│   │   │   │   ├── find-intents.feature
│   │   │   │   ├── heartbeat.feature
│   │   │   │   ├── intent-listener.feature
│   │   │   │   ├── intent-results.feature
│   │   │   │   ├── open.feature
│   │   │   │   ├── private-channels-deprecated.feature
│   │   │   │   ├── private-channels.feature
│   │   │   │   ├── raise-intents.feature
│   │   │   │   ├── user-channel-selector.feature
│   │   │   │   ├── user-channel-sync.feature
│   │   │   │   ├── user-channels-set-by-agent.feature
│   │   │   │   ├── user-channels.feature
│   │   │   │   └── utils.feature
│   │   │   ├── step-definitions/
│   │   │   │   ├── channelSelector.steps.ts
│   │   │   │   ├── channels.steps.ts
│   │   │   │   ├── generic.steps.ts
│   │   │   │   ├── intents.steps.ts
│   │   │   │   └── util.steps.ts
│   │   │   ├── steps.ts
│   │   │   ├── support/
│   │   │   │   ├── TestChannelSelector.ts
│   │   │   │   ├── TestMessaging.ts
│   │   │   │   └── responses/
│   │   │   │       ├── AddEventListener.ts
│   │   │   │       ├── ChannelState.ts
│   │   │   │       ├── CreatePrivateChannel.ts
│   │   │   │       ├── DisconnectPrivateChannel.ts
│   │   │   │       ├── FindInstances.ts
│   │   │   │       ├── FindIntent.ts
│   │   │   │       ├── FindIntentByContext.ts
│   │   │   │       ├── GetAppMetadata.ts
│   │   │   │       ├── GetInfo.ts
│   │   │   │       ├── GetOrCreateChannel.ts
│   │   │   │       ├── GetUserChannels.ts
│   │   │   │       ├── IntentResult.ts
│   │   │   │       ├── Open.ts
│   │   │   │       ├── RaiseIntent.ts
│   │   │   │       ├── RaiseIntentForContext.ts
│   │   │   │       ├── RegisterListeners.ts
│   │   │   │       ├── UnsubscribeListeners.ts
│   │   │   │       └── support.ts
│   │   │   └── world/
│   │   │       └── index.ts
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   ├── fdc3-commonjs/
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── rollup.config.mjs
│   │   └── src/
│   │       └── index.ts
│   ├── fdc3-context/
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── generated/
│   │   │   └── context/
│   │   │       └── ContextTypes.ts
│   │   ├── package.json
│   │   ├── s2tQuicktypeUtil.cjs
│   │   ├── schemas/
│   │   │   └── context/
│   │   │       ├── action.schema.json
│   │   │       ├── chart.schema.json
│   │   │       ├── chatInitSettings.schema.json
│   │   │       ├── chatMessage.schema.json
│   │   │       ├── chatRoom.schema.json
│   │   │       ├── chatSearchCriteria.schema.json
│   │   │       ├── contact.schema.json
│   │   │       ├── contactList.schema.json
│   │   │       ├── context.schema.json
│   │   │       ├── country.schema.json
│   │   │       ├── currency.schema.json
│   │   │       ├── email.schema.json
│   │   │       ├── fileAttachment.schema.json
│   │   │       ├── instrument.schema.json
│   │   │       ├── instrumentList.schema.json
│   │   │       ├── interaction.schema.json
│   │   │       ├── message.schema.json
│   │   │       ├── nothing.schema.json
│   │   │       ├── order.schema.json
│   │   │       ├── orderList.schema.json
│   │   │       ├── organization.schema.json
│   │   │       ├── portfolio.schema.json
│   │   │       ├── position.schema.json
│   │   │       ├── product.schema.json
│   │   │       ├── timeRange.schema.json
│   │   │       ├── trade.schema.json
│   │   │       ├── tradeList.schema.json
│   │   │       ├── transactionresult.schema.json
│   │   │       └── valuation.schema.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   └── validate-schema-examples.test.ts
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   ├── fdc3-get-agent/
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── Fdc3Version.ts
│   │   │   ├── apps/
│   │   │   │   └── NoopAppSupport.ts
│   │   │   ├── index.ts
│   │   │   ├── messaging/
│   │   │   │   ├── MessagePortMessaging.ts
│   │   │   │   └── message-port.ts
│   │   │   ├── sessionStorage/
│   │   │   │   └── DesktopAgentDetails.ts
│   │   │   ├── strategies/
│   │   │   │   ├── DesktopAgentPreloadLoader.ts
│   │   │   │   ├── FailoverHandler.ts
│   │   │   │   ├── HelloHandler.ts
│   │   │   │   ├── IdentityValidationHandler.ts
│   │   │   │   ├── Loader.ts
│   │   │   │   ├── PostMessageLoader.ts
│   │   │   │   ├── Timeouts.ts
│   │   │   │   └── getAgent.ts
│   │   │   ├── ui/
│   │   │   │   ├── AbstractUIComponent.ts
│   │   │   │   ├── DefaultDesktopAgentChannelSelector.ts
│   │   │   │   ├── DefaultDesktopAgentIntentResolver.ts
│   │   │   │   ├── NullChannelSelector.ts
│   │   │   │   └── NullIntentResolver.ts
│   │   │   └── util/
│   │   │       ├── Logger.ts
│   │   │       └── Uuid.ts
│   │   ├── test/
│   │   │   ├── README.md
│   │   │   ├── features/
│   │   │   │   ├── default-channel-selector.feature
│   │   │   │   ├── default-intent-resolver.feature
│   │   │   │   ├── desktop-agent-disconnect.feature
│   │   │   │   ├── desktop-agent-strategy.feature
│   │   │   │   ├── proxy-timeouts.feature
│   │   │   │   └── utils.feature
│   │   │   ├── step-definitions/
│   │   │   │   ├── channel-selector.steps.ts
│   │   │   │   ├── desktop-agent-api.steps.ts
│   │   │   │   ├── desktop-agent.steps.ts
│   │   │   │   ├── generic.steps.ts
│   │   │   │   ├── intent-resolver.steps.ts
│   │   │   │   ├── port-creation.steps.ts
│   │   │   │   └── util.steps.ts
│   │   │   ├── steps.ts
│   │   │   ├── support/
│   │   │   │   ├── EventHandler.ts
│   │   │   │   ├── FrameTypes.ts
│   │   │   │   ├── MockCSSStyleDeclaration.ts
│   │   │   │   ├── MockDocument.ts
│   │   │   │   ├── MockElement.ts
│   │   │   │   ├── MockFDC3Server.ts
│   │   │   │   ├── MockIFrame.ts
│   │   │   │   ├── MockStorage.ts
│   │   │   │   ├── MockWindow.ts
│   │   │   │   ├── TestServerContext.ts
│   │   │   │   └── responses/
│   │   │   │       ├── AddEventListener.ts
│   │   │   │       ├── AutomaticResponses.ts
│   │   │   │       ├── Broadcast.ts
│   │   │   │       ├── CurrentChannel.ts
│   │   │   │       ├── FindIntent.ts
│   │   │   │       ├── GetInfo.ts
│   │   │   │       ├── Handshake.ts
│   │   │   │       ├── RaiseIntent.ts
│   │   │   │       ├── UnsubscribeEventListener.ts
│   │   │   │       └── UserChannels.ts
│   │   │   └── world/
│   │   │       └── index.ts
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   ├── fdc3-schema/
│   │   ├── README.md
│   │   ├── code-generation/
│   │   │   └── generate-type-predicates.ts
│   │   ├── eslint.config.mjs
│   │   ├── generated/
│   │   │   ├── api/
│   │   │   │   └── BrowserTypes.ts
│   │   │   └── bridging/
│   │   │       └── BridgingTypes.ts
│   │   ├── package.json
│   │   ├── s2tQuicktypeUtil.cjs
│   │   ├── schemas/
│   │   │   ├── api/
│   │   │   │   ├── README.md
│   │   │   │   ├── WCP1Hello.schema.json
│   │   │   │   ├── WCP2LoadUrl.schema.json
│   │   │   │   ├── WCP3Handshake.schema.json
│   │   │   │   ├── WCP4ValidateAppIdentity.schema.json
│   │   │   │   ├── WCP5ValidateAppIdentityFailedResponse.schema.json
│   │   │   │   ├── WCP5ValidateAppIdentityResponse.schema.json
│   │   │   │   ├── WCP6Goodbye.schema.json
│   │   │   │   ├── WCPConnectionStep.schema.json
│   │   │   │   ├── addContextListenerRequest.schema.json
│   │   │   │   ├── addContextListenerResponse.schema.json
│   │   │   │   ├── addEventListenerRequest.schema.json
│   │   │   │   ├── addEventListenerResponse.schema.json
│   │   │   │   ├── addIntentListenerRequest.schema.json
│   │   │   │   ├── addIntentListenerResponse.schema.json
│   │   │   │   ├── agentEvent.schema.json
│   │   │   │   ├── agentResponse.schema.json
│   │   │   │   ├── api.schema.json
│   │   │   │   ├── appRequest.schema.json
│   │   │   │   ├── broadcastEvent.schema.json
│   │   │   │   ├── broadcastRequest.schema.json
│   │   │   │   ├── broadcastResponse.schema.json
│   │   │   │   ├── channelChangedEvent.schema.json
│   │   │   │   ├── clearContextRequest.schema.json
│   │   │   │   ├── clearContextResponse.schema.json
│   │   │   │   ├── common.schema.json
│   │   │   │   ├── contextClearedEvent.schema.json
│   │   │   │   ├── contextListenerUnsubscribeRequest.schema.json
│   │   │   │   ├── contextListenerUnsubscribeResponse.schema.json
│   │   │   │   ├── createPrivateChannelRequest.schema.json
│   │   │   │   ├── createPrivateChannelResponse.schema.json
│   │   │   │   ├── eventListenerUnsubscribeRequest.schema.json
│   │   │   │   ├── eventListenerUnsubscribeResponse.schema.json
│   │   │   │   ├── fdc3UserInterfaceChannelSelected.schema.json
│   │   │   │   ├── fdc3UserInterfaceChannels.schema.json
│   │   │   │   ├── fdc3UserInterfaceDrag.schema.json
│   │   │   │   ├── fdc3UserInterfaceHandshake.schema.json
│   │   │   │   ├── fdc3UserInterfaceHello.schema.json
│   │   │   │   ├── fdc3UserInterfaceMessage.schema.json
│   │   │   │   ├── fdc3UserInterfaceResolve.schema.json
│   │   │   │   ├── fdc3UserInterfaceResolveAction.schema.json
│   │   │   │   ├── fdc3UserInterfaceRestyle.schema.json
│   │   │   │   ├── findInstancesRequest.schema.json
│   │   │   │   ├── findInstancesResponse.schema.json
│   │   │   │   ├── findIntentRequest.schema.json
│   │   │   │   ├── findIntentResponse.schema.json
│   │   │   │   ├── findIntentsByContextRequest.schema.json
│   │   │   │   ├── findIntentsByContextResponse.schema.json
│   │   │   │   ├── getAppMetadataRequest.schema.json
│   │   │   │   ├── getAppMetadataResponse.schema.json
│   │   │   │   ├── getCurrentChannelRequest.schema.json
│   │   │   │   ├── getCurrentChannelResponse.schema.json
│   │   │   │   ├── getCurrentContextRequest.schema.json
│   │   │   │   ├── getCurrentContextResponse.schema.json
│   │   │   │   ├── getInfoRequest.schema.json
│   │   │   │   ├── getInfoResponse.schema.json
│   │   │   │   ├── getOrCreateChannelRequest.schema.json
│   │   │   │   ├── getOrCreateChannelResponse.schema.json
│   │   │   │   ├── getUserChannelsRequest.schema.json
│   │   │   │   ├── getUserChannelsResponse.schema.json
│   │   │   │   ├── heartbeatAcknowledgmentRequest.schema.json
│   │   │   │   ├── heartbeatEvent.schema.json
│   │   │   │   ├── intentEvent.schema.json
│   │   │   │   ├── intentListenerUnsubscribeRequest.schema.json
│   │   │   │   ├── intentListenerUnsubscribeResponse.schema.json
│   │   │   │   ├── intentResultRequest.schema.json
│   │   │   │   ├── intentResultResponse.schema.json
│   │   │   │   ├── joinUserChannelRequest.schema.json
│   │   │   │   ├── joinUserChannelResponse.schema.json
│   │   │   │   ├── leaveCurrentChannelRequest.schema.json
│   │   │   │   ├── leaveCurrentChannelResponse.schema.json
│   │   │   │   ├── openRequest.schema.json
│   │   │   │   ├── openResponse.schema.json
│   │   │   │   ├── privateChannelAddEventListenerRequest.schema.json
│   │   │   │   ├── privateChannelAddEventListenerResponse.schema.json
│   │   │   │   ├── privateChannelDisconnectRequest.schema.json
│   │   │   │   ├── privateChannelDisconnectResponse.schema.json
│   │   │   │   ├── privateChannelOnAddContextListenerEvent.schema.json
│   │   │   │   ├── privateChannelOnDisconnectEvent.schema.json
│   │   │   │   ├── privateChannelOnUnsubscribeEvent.schema.json
│   │   │   │   ├── privateChannelUnsubscribeEventListenerRequest.schema.json
│   │   │   │   ├── privateChannelUnsubscribeEventListenerResponse.schema.json
│   │   │   │   ├── raiseIntentForContextRequest.schema.json
│   │   │   │   ├── raiseIntentForContextResponse.schema.json
│   │   │   │   ├── raiseIntentRequest.schema.json
│   │   │   │   ├── raiseIntentResponse.schema.json
│   │   │   │   ├── raiseIntentResultResponse.schema.json
│   │   │   │   └── t2sQuicktypeUtil.js
│   │   │   ├── bridging/
│   │   │   │   ├── agentErrorResponse.schema.json
│   │   │   │   ├── agentRequest.schema.json
│   │   │   │   ├── agentResponse.schema.json
│   │   │   │   ├── bridgeErrorResponse.schema.json
│   │   │   │   ├── bridgeRequest.schema.json
│   │   │   │   ├── bridgeResponse.schema.json
│   │   │   │   ├── broadcastAgentRequest.schema.json
│   │   │   │   ├── broadcastBridgeRequest.schema.json
│   │   │   │   ├── common.schema.json
│   │   │   │   ├── connectionStep.schema.json
│   │   │   │   ├── connectionStep2Hello.schema.json
│   │   │   │   ├── connectionStep3Handshake.schema.json
│   │   │   │   ├── connectionStep4AuthenticationFailed.schema.json
│   │   │   │   ├── connectionStep6ConnectedAgentsUpdate.schema.json
│   │   │   │   ├── findInstancesAgentErrorResponse.schema.json
│   │   │   │   ├── findInstancesAgentRequest.schema.json
│   │   │   │   ├── findInstancesAgentResponse.schema.json
│   │   │   │   ├── findInstancesBridgeErrorResponse.schema.json
│   │   │   │   ├── findInstancesBridgeRequest.schema.json
│   │   │   │   ├── findInstancesBridgeResponse.schema.json
│   │   │   │   ├── findIntentAgentErrorResponse.schema.json
│   │   │   │   ├── findIntentAgentRequest.schema.json
│   │   │   │   ├── findIntentAgentResponse.schema.json
│   │   │   │   ├── findIntentBridgeErrorResponse.schema.json
│   │   │   │   ├── findIntentBridgeRequest.schema.json
│   │   │   │   ├── findIntentBridgeResponse.schema.json
│   │   │   │   ├── findIntentsByContextAgentErrorResponse.schema.json
│   │   │   │   ├── findIntentsByContextAgentRequest.schema.json
│   │   │   │   ├── findIntentsByContextAgentResponse.schema.json
│   │   │   │   ├── findIntentsByContextBridgeErrorResponse.schema.json
│   │   │   │   ├── findIntentsByContextBridgeRequest.schema.json
│   │   │   │   ├── findIntentsByContextBridgeResponse.schema.json
│   │   │   │   ├── getAppMetadataAgentErrorResponse.schema.json
│   │   │   │   ├── getAppMetadataAgentRequest.schema.json
│   │   │   │   ├── getAppMetadataAgentResponse.schema.json
│   │   │   │   ├── getAppMetadataBridgeErrorResponse.schema.json
│   │   │   │   ├── getAppMetadataBridgeRequest.schema.json
│   │   │   │   ├── getAppMetadataBridgeResponse.schema.json
│   │   │   │   ├── openAgentErrorResponse.schema.json
│   │   │   │   ├── openAgentRequest.schema.json
│   │   │   │   ├── openAgentResponse.schema.json
│   │   │   │   ├── openBridgeErrorResponse.schema.json
│   │   │   │   ├── openBridgeRequest.schema.json
│   │   │   │   ├── openBridgeResponse.schema.json
│   │   │   │   ├── privateChannelBroadcastAgentRequest.schema.json
│   │   │   │   ├── privateChannelBroadcastBridgeRequest.schema.json
│   │   │   │   ├── privateChannelEventListenerAddedAgentRequest.schema.json
│   │   │   │   ├── privateChannelEventListenerAddedBridgeRequest.schema.json
│   │   │   │   ├── privateChannelEventListenerRemovedAgentRequest.schema.json
│   │   │   │   ├── privateChannelEventListenerRemovedBridgeRequest.schema.json
│   │   │   │   ├── privateChannelOnAddContextListenerAgentRequest.schema.json
│   │   │   │   ├── privateChannelOnAddContextListenerBridgeRequest.schema.json
│   │   │   │   ├── privateChannelOnDisconnectAgentRequest.schema.json
│   │   │   │   ├── privateChannelOnDisconnectBridgeRequest.schema.json
│   │   │   │   ├── privateChannelOnUnsubscribeAgentRequest.schema.json
│   │   │   │   ├── privateChannelOnUnsubscribeBridgeRequest.schema.json
│   │   │   │   ├── raiseIntentAgentErrorResponse.schema.json
│   │   │   │   ├── raiseIntentAgentRequest.schema.json
│   │   │   │   ├── raiseIntentAgentResponse.schema.json
│   │   │   │   ├── raiseIntentBridgeErrorResponse.schema.json
│   │   │   │   ├── raiseIntentBridgeRequest.schema.json
│   │   │   │   ├── raiseIntentBridgeResponse.schema.json
│   │   │   │   ├── raiseIntentResultAgentErrorResponse.schema.json
│   │   │   │   ├── raiseIntentResultAgentResponse.schema.json
│   │   │   │   ├── raiseIntentResultBridgeErrorResponse.schema.json
│   │   │   │   └── raiseIntentResultBridgeResponse.schema.json
│   │   │   └── bridgingAsyncAPI/
│   │   │       ├── README.md
│   │   │       └── bridgingAsyncAPI.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   ├── fdc3-standard/
│   │   ├── .eslintrc.json
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── api/
│   │   │   │   ├── AppIdentifier.ts
│   │   │   │   ├── AppIntent.ts
│   │   │   │   ├── AppMetadata.ts
│   │   │   │   ├── Channel.ts
│   │   │   │   ├── ContextMetadata.ts
│   │   │   │   ├── DesktopAgent.ts
│   │   │   │   ├── DesktopAgentIdentifier.ts
│   │   │   │   ├── DisplayMetadata.ts
│   │   │   │   ├── Errors.ts
│   │   │   │   ├── Events.ts
│   │   │   │   ├── GetAgent.ts
│   │   │   │   ├── Icon.ts
│   │   │   │   ├── Image.ts
│   │   │   │   ├── ImplementationMetadata.ts
│   │   │   │   ├── IntentMetadata.ts
│   │   │   │   ├── IntentResolution.ts
│   │   │   │   ├── Listener.ts
│   │   │   │   ├── Methods.ts
│   │   │   │   ├── PrivateChannel.ts
│   │   │   │   ├── RecommendedChannels.ts
│   │   │   │   └── Types.ts
│   │   │   ├── app-directory/
│   │   │   │   └── specification/
│   │   │   │       ├── appd.schema.json
│   │   │   │       └── examples/
│   │   │   │           └── application/
│   │   │   │               ├── fdc3-workbench.json
│   │   │   │               └── myApplication.json
│   │   │   ├── context/
│   │   │   │   └── ContextType.ts
│   │   │   ├── index.ts
│   │   │   ├── intents/
│   │   │   │   ├── Intents.ts
│   │   │   │   └── standard intents.json
│   │   │   ├── internal/
│   │   │   │   ├── contextConfiguration.ts
│   │   │   │   ├── intentConfiguration.ts
│   │   │   │   └── typeHelpers.ts
│   │   │   └── ui/
│   │   │       ├── ChannelSelector.ts
│   │   │       ├── Connectable.ts
│   │   │       └── IntentResolver.ts
│   │   ├── test/
│   │   │   ├── AppDirectory.test.ts
│   │   │   ├── ContextTypeSync.test.ts
│   │   │   ├── ContextTypes.test.ts
│   │   │   ├── Methods.test.ts
│   │   │   └── window.test.ts
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   └── testing/
│       ├── package.json
│       ├── src/
│       │   ├── agent/
│       │   │   └── index.ts
│       │   ├── index.ts
│       │   ├── steps/
│       │   │   ├── generic.impl.ts
│       │   │   └── generic.steps.ts
│       │   ├── support/
│       │   │   └── matching.ts
│       │   └── world/
│       │       └── PropsWorldLike.ts
│       └── tsconfig.json
├── scripts/
│   └── version-check.js
├── toolbox/
│   ├── fdc3-conformance/
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── instructions.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── constants.ts
│   │   │   ├── context-types.ts
│   │   │   ├── mock/
│   │   │   │   ├── basic.ts
│   │   │   │   ├── channel-command.ts
│   │   │   │   ├── channel.ts
│   │   │   │   ├── constants.ts
│   │   │   │   ├── general.ts
│   │   │   │   ├── intent-a.ts
│   │   │   │   ├── intent-b.ts
│   │   │   │   ├── intent-c.ts
│   │   │   │   ├── intent-d.ts
│   │   │   │   ├── intent-e.ts
│   │   │   │   ├── intent-f.ts
│   │   │   │   ├── intent-g.ts
│   │   │   │   ├── intent-h.ts
│   │   │   │   ├── intent-i.ts
│   │   │   │   ├── intent-j.ts
│   │   │   │   ├── intent-k.ts
│   │   │   │   ├── interfaces.ts
│   │   │   │   ├── metadata.ts
│   │   │   │   ├── mock-functions.ts
│   │   │   │   ├── open-a.ts
│   │   │   │   └── support/
│   │   │   │       └── channel-support.ts
│   │   │   ├── test/
│   │   │   │   ├── advanced/
│   │   │   │   │   ├── fdc3.app-channels.ts
│   │   │   │   │   ├── fdc3.findInstances.ts
│   │   │   │   │   ├── fdc3.findIntent.ts
│   │   │   │   │   ├── fdc3.findIntentsByContext.ts
│   │   │   │   │   ├── fdc3.getAppMetadata.ts
│   │   │   │   │   ├── fdc3.getInfo.ts
│   │   │   │   │   ├── fdc3.open.ts
│   │   │   │   │   ├── fdc3.raiseIntent-NoAppsFound.ts
│   │   │   │   │   ├── fdc3.raiseIntent-Result.ts
│   │   │   │   │   ├── fdc3.raiseIntent.ts
│   │   │   │   │   └── fdc3.user-channels.ts
│   │   │   │   ├── basic/
│   │   │   │   │   └── fdc3.basic.ts
│   │   │   │   ├── fdc3-conformance-utils.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── manual/
│   │   │   │   │   └── fdc3.manual.ts
│   │   │   │   ├── progressReporter.ts
│   │   │   │   ├── support/
│   │   │   │   │   ├── apiDocuments.ts
│   │   │   │   │   ├── channel-control.ts
│   │   │   │   │   ├── channels-support.ts
│   │   │   │   │   ├── intent-support.ts
│   │   │   │   │   ├── metadata-support.ts
│   │   │   │   │   ├── open-control.ts
│   │   │   │   │   └── open-support.ts
│   │   │   │   └── testSuite.ts
│   │   │   └── utils.ts
│   │   ├── static/
│   │   │   ├── apps/
│   │   │   │   ├── app/
│   │   │   │   │   └── index.html
│   │   │   │   ├── basic/
│   │   │   │   │   └── index.html
│   │   │   │   ├── channels/
│   │   │   │   │   └── index.html
│   │   │   │   ├── general/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-a/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-b/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-c/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-d/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-e/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-f/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-g/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-h/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-i/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-j/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-k/
│   │   │   │   │   └── index.html
│   │   │   │   ├── metadata/
│   │   │   │   │   └── index.html
│   │   │   │   ├── open-a/
│   │   │   │   │   └── index.html
│   │   │   │   └── open-b/
│   │   │   │       └── index.html
│   │   │   ├── directories/
│   │   │   │   └── website-conformance.json
│   │   │   └── lib/
│   │   │       └── index.css
│   │   ├── terms-conditions/
│   │   │   ├── branding.md
│   │   │   ├── graphics/
│   │   │   │   ├── 1.2/
│   │   │   │   │   ├── 2022_FDC3_CompliantBadge_1.2.eps
│   │   │   │   │   ├── 2022_FDC3_CompliantBadge_1.2_BLK.eps
│   │   │   │   │   └── 2022_FDC3_CompliantBadge_1.2_WHT.eps
│   │   │   │   ├── 2.0/
│   │   │   │   │   ├── 2022_FDC3_CompliantBadge_2.0.eps
│   │   │   │   │   ├── 2022_FDC3_CompliantBadge_2.0_BLK.eps
│   │   │   │   │   └── 2022_FDC3_CompliantBadge_2.0_WHT.eps
│   │   │   │   └── 2.2/
│   │   │   │       ├── 2024_FDC3_ConformanceBadge.eps
│   │   │   │       ├── 2024_FDC3_ConformanceBadge_BLK.eps
│   │   │   │       └── 2024_FDC3_ConformanceBadge_WHT.eps
│   │   │   └── participation-form.md
│   │   ├── tsconfig.json
│   │   ├── vitest.config.ts
│   │   └── webpack.config.js
│   ├── fdc3-explained/
│   │   ├── 1.0/
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   └── styles.css
│   │   ├── 1.1/
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   └── styles.css
│   │   ├── 1.2/
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   └── styles.css
│   │   ├── README.md
│   │   └── index.html
│   ├── fdc3-for-web/
│   │   ├── demo/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── eslint.config.mjs
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── client/
│   │   │   │   │   ├── apps/
│   │   │   │   │   │   ├── app1.ts
│   │   │   │   │   │   ├── app2.ts
│   │   │   │   │   │   ├── app3.ts
│   │   │   │   │   │   ├── app4.ts
│   │   │   │   │   │   ├── app5.ts
│   │   │   │   │   │   ├── app6.ts
│   │   │   │   │   │   └── app7.ts
│   │   │   │   │   ├── da/
│   │   │   │   │   │   ├── DemoServerContext.ts
│   │   │   │   │   │   ├── FDC3_2_1_JSONDirectory.ts
│   │   │   │   │   │   ├── dummy-desktop-agent.ts
│   │   │   │   │   │   ├── embed.ts
│   │   │   │   │   │   └── util.ts
│   │   │   │   │   ├── ui/
│   │   │   │   │   │   ├── channel-selector.ts
│   │   │   │   │   │   ├── contrast.ts
│   │   │   │   │   │   ├── drag.ts
│   │   │   │   │   │   └── intent-resolver.ts
│   │   │   │   │   └── vite-env.d.ts
│   │   │   │   ├── message-types.ts
│   │   │   │   └── server/
│   │   │   │       └── main.ts
│   │   │   ├── static/
│   │   │   │   ├── app1/
│   │   │   │   │   └── index.html
│   │   │   │   ├── app2/
│   │   │   │   │   └── index.html
│   │   │   │   ├── app3/
│   │   │   │   │   └── index.html
│   │   │   │   ├── app4/
│   │   │   │   │   └── index.html
│   │   │   │   ├── app5/
│   │   │   │   │   └── index.html
│   │   │   │   ├── app6/
│   │   │   │   │   └── index.html
│   │   │   │   ├── app7/
│   │   │   │   │   └── index.html
│   │   │   │   ├── da/
│   │   │   │   │   ├── appd.json
│   │   │   │   │   ├── channel-selector.html
│   │   │   │   │   ├── embed.html
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── intent-resolver.html
│   │   │   │   │   └── local-conformance.v2.json
│   │   │   │   ├── dnd/
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── movable.html
│   │   │   │   └── embed/
│   │   │   │       └── index.html
│   │   │   └── tsconfig.json
│   │   ├── fdc3-web-impl/
│   │   │   ├── README.md
│   │   │   ├── eslint.config.mjs
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── BasicFDC3Server.ts
│   │   │   │   ├── FDC3Server.ts
│   │   │   │   ├── ServerContext.ts
│   │   │   │   ├── directory/
│   │   │   │   │   ├── BasicDirectory.ts
│   │   │   │   │   └── DirectoryInterface.ts
│   │   │   │   ├── handlers/
│   │   │   │   │   ├── BroadcastHandler.ts
│   │   │   │   │   ├── HeartbeatHandler.ts
│   │   │   │   │   ├── IntentHandler.ts
│   │   │   │   │   ├── OpenHandler.ts
│   │   │   │   │   └── support.ts
│   │   │   │   └── index.ts
│   │   │   ├── test/
│   │   │   │   ├── features/
│   │   │   │   │   ├── apps.feature
│   │   │   │   │   ├── broadcast.feature
│   │   │   │   │   ├── disconnect-cleanup.feature
│   │   │   │   │   ├── event-listeners.feature
│   │   │   │   │   ├── find-intent.feature
│   │   │   │   │   ├── heartbeat.feature
│   │   │   │   │   ├── intent-result.feature
│   │   │   │   │   ├── private-channel.feature
│   │   │   │   │   ├── raise-intent-with-context.feature
│   │   │   │   │   ├── raise-intent.feature
│   │   │   │   │   └── user-channels.feature
│   │   │   │   ├── step-definitions/
│   │   │   │   │   ├── app-channel.steps.ts
│   │   │   │   │   ├── broadcast.steps.ts
│   │   │   │   │   ├── event-listeners.steps.ts
│   │   │   │   │   ├── generic.steps.ts
│   │   │   │   │   ├── heartbeat.steps.ts
│   │   │   │   │   ├── intents.steps.ts
│   │   │   │   │   ├── messaging.steps.ts
│   │   │   │   │   ├── private-channel.steps.ts
│   │   │   │   │   ├── start-app.steps.ts
│   │   │   │   │   └── user-channel.steps.ts
│   │   │   │   ├── steps.ts
│   │   │   │   ├── support/
│   │   │   │   │   └── TestServerContext.ts
│   │   │   │   └── world/
│   │   │   │       └── index.ts
│   │   │   ├── tsconfig.json
│   │   │   └── vitest.config.ts
│   │   └── reference-ui/
│   │       ├── .gitignore
│   │       ├── channel_selector.html
│   │       ├── eslint.config.mjs
│   │       ├── intent_resolver.html
│   │       ├── package.json
│   │       ├── src/
│   │       │   ├── channel_selector.ts
│   │       │   ├── contrast.ts
│   │       │   ├── intent_resolver.ts
│   │       │   └── vite-env.d.ts
│   │       ├── tsconfig.json
│   │       └── vite.config.ts
│   └── fdc3-workbench/
│       ├── .gitignore
│       ├── NOTICE
│       ├── README.md
│       ├── eslint.config.mjs
│       ├── index.html
│       ├── package.json
│       ├── public/
│       │   ├── manifest.json
│       │   └── robots.txt
│       ├── src/
│       │   ├── App.css
│       │   ├── App.tsx
│       │   ├── components/
│       │   │   ├── AppChannels.tsx
│       │   │   ├── ChannelField.tsx
│       │   │   ├── Channels.tsx
│       │   │   ├── ContextCreate.tsx
│       │   │   ├── ContextLinking.tsx
│       │   │   ├── ContextTemplates.tsx
│       │   │   ├── Header.tsx
│       │   │   ├── IntentResolutionField.tsx
│       │   │   ├── Intents.tsx
│       │   │   ├── Workbench/
│       │   │   │   ├── AppChannelListeners.tsx
│       │   │   │   ├── ContextListeners.tsx
│       │   │   │   ├── CurrentContext.tsx
│       │   │   │   ├── IntentListeners.tsx
│       │   │   │   ├── PrivateChannelListeners.tsx
│       │   │   │   ├── ReceivedField.tsx
│       │   │   │   ├── SystemLog.tsx
│       │   │   │   ├── SystemLogItem.tsx
│       │   │   │   └── Workbench.tsx
│       │   │   └── common/
│       │   │       ├── AccordionContent.tsx
│       │   │       ├── AccordionList.tsx
│       │   │       ├── CopyToClipboard.tsx
│       │   │       ├── DialogModal.tsx
│       │   │       ├── JsonInput.tsx
│       │   │       ├── TabPanel.tsx
│       │   │       └── TemplateTextField.tsx
│       │   ├── fixtures/
│       │   │   ├── codeExamples.ts
│       │   │   ├── contexts.ts
│       │   │   ├── intentTypes.ts
│       │   │   ├── logMessages.ts
│       │   │   └── openApiDocs.ts
│       │   ├── index.tsx
│       │   ├── store/
│       │   │   ├── AppChannelStore.tsx
│       │   │   ├── ChannelStore.ts
│       │   │   ├── ContextStore.ts
│       │   │   ├── IntentStore.ts
│       │   │   ├── PrivateChannelStore.tsx
│       │   │   ├── SnackbarStore.ts
│       │   │   └── SystemLogStore.ts
│       │   └── utility/
│       │       └── Fdc3Api.ts
│       ├── tsconfig.json
│       ├── tsconfig.node.json
│       └── vite.config.ts
├── tsconfig.root.json
└── website/
    ├── .nvmrc
    ├── README.md
    ├── core/
    │   └── Showcase.js
    ├── data/
    │   ├── community.json
    │   ├── get-involved/
    │   │   ├── 1.mdx
    │   │   ├── 2.mdx
    │   │   ├── 3.mdx
    │   │   ├── 4.mdx
    │   │   └── 5.mdx
    │   ├── pending-community.json
    │   ├── training.json
    │   └── users.json
    ├── docs/
    │   ├── .markdownlint.jsonc
    │   ├── agent-bridging/
    │   │   ├── ref/
    │   │   │   ├── PrivateChannel.broadcast.md
    │   │   │   ├── PrivateChannel.eventListenerAdded.md
    │   │   │   ├── PrivateChannel.eventListenerRemoved.md
    │   │   │   ├── PrivateChannel.onAddContextListener.md
    │   │   │   ├── PrivateChannel.onDisconnect.md
    │   │   │   ├── PrivateChannel.onUnsubscribe.md
    │   │   │   ├── broadcast.md
    │   │   │   ├── findInstances.md
    │   │   │   ├── findIntent.md
    │   │   │   ├── findIntentsByContext.md
    │   │   │   ├── getAppMetadata.md
    │   │   │   ├── open.md
    │   │   │   └── raiseIntent.md
    │   │   └── spec.md
    │   ├── api/
    │   │   ├── conformance/
    │   │   │   ├── App-Channel-Tests.md
    │   │   │   ├── Basic-Tests.md
    │   │   │   ├── Intents-Tests.md
    │   │   │   ├── Metadata-Tests.md
    │   │   │   ├── Open-Tests.md
    │   │   │   ├── Overview.md
    │   │   │   └── User-Channel-Tests.md
    │   │   ├── ref/
    │   │   │   ├── Channel.md
    │   │   │   ├── DesktopAgent.md
    │   │   │   ├── Errors.md
    │   │   │   ├── Events.md
    │   │   │   ├── GetAgent.md
    │   │   │   ├── Metadata.md
    │   │   │   ├── PrivateChannel.md
    │   │   │   └── Types.md
    │   │   ├── spec.md
    │   │   ├── specs/
    │   │   │   ├── browserResidentDesktopAgents.md
    │   │   │   ├── desktopAgentCommunicationProtocol.md
    │   │   │   ├── preloadDesktopAgents.md
    │   │   │   └── webConnectionProtocol.md
    │   │   └── supported-platforms.md
    │   ├── app-directory/
    │   │   ├── overview.md
    │   │   └── spec.md
    │   ├── context/
    │   │   ├── ref/
    │   │   │   ├── Action.md
    │   │   │   ├── BaseContext.md
    │   │   │   ├── Chart.md
    │   │   │   ├── ChatInitSettings.md
    │   │   │   ├── ChatMessage.md
    │   │   │   ├── ChatRoom.md
    │   │   │   ├── ChatSearchCriteria.md
    │   │   │   ├── Contact.md
    │   │   │   ├── ContactList.md
    │   │   │   ├── Context.md
    │   │   │   ├── Country.md
    │   │   │   ├── Currency.md
    │   │   │   ├── DocumentedContext.md
    │   │   │   ├── Email.md
    │   │   │   ├── FileAttachment.md
    │   │   │   ├── Instrument.md
    │   │   │   ├── InstrumentList.md
    │   │   │   ├── Interaction.md
    │   │   │   ├── Message.md
    │   │   │   ├── Nothing.md
    │   │   │   ├── Order.md
    │   │   │   ├── OrderList.md
    │   │   │   ├── Organization.md
    │   │   │   ├── Portfolio.md
    │   │   │   ├── Position.md
    │   │   │   ├── Product.md
    │   │   │   ├── TimeRange.md
    │   │   │   ├── Trade.md
    │   │   │   ├── TradeList.md
    │   │   │   ├── TransactionResult.md
    │   │   │   └── Valuation.md
    │   │   └── spec.md
    │   ├── fdc3-charter.md
    │   ├── fdc3-compliance.md
    │   ├── fdc3-glossary.md
    │   ├── fdc3-intro.md
    │   ├── fdc3-standard.md
    │   ├── guides/
    │   │   └── submit-new-intent.md
    │   ├── intents/
    │   │   ├── ref/
    │   │   │   ├── CreateInteraction.md
    │   │   │   ├── CreateOrUpdateProfile.md
    │   │   │   ├── SendChatMessage.md
    │   │   │   ├── StartCall.md
    │   │   │   ├── StartChat.md
    │   │   │   ├── StartEmail.md
    │   │   │   ├── ViewAnalysis.md
    │   │   │   ├── ViewChart.md
    │   │   │   ├── ViewChat.md
    │   │   │   ├── ViewContact.md
    │   │   │   ├── ViewHoldings.md
    │   │   │   ├── ViewInstrument.md
    │   │   │   ├── ViewInteractions.md
    │   │   │   ├── ViewMessages.md
    │   │   │   ├── ViewNews.md
    │   │   │   ├── ViewOrders.md
    │   │   │   ├── ViewProfile.md
    │   │   │   ├── ViewQuote.md
    │   │   │   └── ViewResearch.md
    │   │   └── spec.md
    │   ├── references.md
    │   ├── trademarks.md
    │   ├── use-cases/
    │   │   ├── 001-equity-sell-side-trader.md
    │   │   ├── 002-buy-side-portfolio-manager.md
    │   │   ├── 003-inhouse-cross-platform-launcher.md
    │   │   ├── 004-client-side-fx-trader.md
    │   │   ├── 005-buy-side-treasurer.md
    │   │   ├── 006-call-transcription-to-crm.md
    │   │   ├── 007-realtime-trade-ticket-population.md
    │   │   ├── 008-user-launches-multiple-apps-from-a-single-container.md
    │   │   ├── 009-sales-floor-base-workflow.md
    │   │   ├── 010-quantifying-fdc3-interactions.md
    │   │   ├── 011-fine-tuning-interop-with-channels.md
    │   │   ├── meeting-minutes/
    │   │   │   ├── 2020-01-16 uc-wg meeting notes.md
    │   │   │   ├── 2020-02-20 uc-wg meeting notes.md
    │   │   │   └── 2020-03-19 uc-wg meeting notes.md
    │   │   ├── overview.md
    │   │   └── readme.md
    │   └── why-fdc3.md
    ├── docusaurus.config.js
    ├── package.json
    ├── replaceConformanceUrls.js
    ├── schema2Markdown.js
    ├── sidebars.json
    ├── src/
    │   ├── components/
    │   │   ├── Benefits/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── Callout/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── Carousel1/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── Conformance/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── ConformanceShowcase/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── Container/
    │   │   │   └── index.js
    │   │   ├── Feature/
    │   │   │   └── index.js
    │   │   ├── GetInvolved/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── GridBlock/
    │   │   │   └── index.js
    │   │   ├── HomeSection/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── HomeSection2/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── HomeSplash/
    │   │   │   └── index.js
    │   │   ├── ImageBullet/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── MonoIcon/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── NewSplashTop/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── Parts/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── Training/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── TypeText/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── UseCases/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── UserShowcase/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── WhatIsIt/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   └── implementationFilters.js
    │   ├── css/
    │   │   └── customTheme.css
    │   └── pages/
    │       ├── community.js
    │       ├── community.styles.css
    │       ├── get-involved.js
    │       ├── index.js
    │       ├── schemas/
    │       │   ├── 1.1/
    │       │   │   └── app-directory.html
    │       │   ├── 1.2/
    │       │   │   └── app-directory.html
    │       │   ├── 2.0/
    │       │   │   └── app-directory.html
    │       │   └── next/
    │       │       └── app-directory.html
    │       ├── showcase.styles.css
    │       ├── training.js
    │       ├── users.js
    │       └── versions.js
    ├── static/
    │   └── schemas/
    │       ├── 1.0/
    │       │   └── app-directory.html
    │       ├── 1.1/
    │       │   ├── app-directory.html
    │       │   ├── app-directory.yaml
    │       │   ├── contact.schema.json
    │       │   ├── contactList.schema.json
    │       │   ├── context.schema.json
    │       │   ├── country.schema.json
    │       │   ├── instrument.schema.json
    │       │   ├── instrumentList.schema.json
    │       │   ├── organization.schema.json
    │       │   ├── portfolio.schema.json
    │       │   └── position.schema.json
    │       ├── 1.2/
    │       │   ├── app-directory.html
    │       │   ├── app-directory.yaml
    │       │   ├── contact.schema.json
    │       │   ├── contactList.schema.json
    │       │   ├── context.schema.json
    │       │   ├── country.schema.json
    │       │   ├── instrument.schema.json
    │       │   ├── instrumentList.schema.json
    │       │   ├── organization.schema.json
    │       │   ├── portfolio.schema.json
    │       │   └── position.schema.json
    │       ├── 2.0/
    │       │   ├── app-directory.html
    │       │   ├── app-directory.yaml
    │       │   ├── chart.schema.json
    │       │   ├── chatInitSettings.schema.json
    │       │   ├── contact.schema.json
    │       │   ├── contactList.schema.json
    │       │   ├── context.schema.json
    │       │   ├── country.schema.json
    │       │   ├── currency.schema.json
    │       │   ├── email.schema.json
    │       │   ├── instrument.schema.json
    │       │   ├── instrumentList.schema.json
    │       │   ├── nothing.schema.json
    │       │   ├── organization.schema.json
    │       │   ├── portfolio.schema.json
    │       │   ├── position.schema.json
    │       │   ├── timerange.schema.json
    │       │   └── valuation.schema.json
    │       ├── 2.1/
    │       │   ├── api/
    │       │   │   ├── README.md
    │       │   │   ├── api.schema.json
    │       │   │   ├── baseImplementationMetadata.schema.json
    │       │   │   └── t2sQuicktypeUtil.js
    │       │   ├── app-directory.html
    │       │   ├── appd.schema.json
    │       │   ├── bridging/
    │       │   │   ├── agentErrorResponse.schema.json
    │       │   │   ├── agentRequest.schema.json
    │       │   │   ├── agentResponse.schema.json
    │       │   │   ├── bridgeErrorResponse.schema.json
    │       │   │   ├── bridgeRequest.schema.json
    │       │   │   ├── bridgeResponse.schema.json
    │       │   │   ├── broadcastAgentRequest.schema.json
    │       │   │   ├── broadcastBridgeRequest.schema.json
    │       │   │   ├── common.schema.json
    │       │   │   ├── connectionStep.schema.json
    │       │   │   ├── connectionStep2Hello.schema.json
    │       │   │   ├── connectionStep3Handshake.schema.json
    │       │   │   ├── connectionStep4AuthenticationFailed.schema.json
    │       │   │   ├── connectionStep6ConnectedAgentsUpdate.schema.json
    │       │   │   ├── findInstancesAgentErrorResponse.schema.json
    │       │   │   ├── findInstancesAgentRequest.schema.json
    │       │   │   ├── findInstancesAgentResponse.schema.json
    │       │   │   ├── findInstancesBridgeErrorResponse.schema.json
    │       │   │   ├── findInstancesBridgeRequest.schema.json
    │       │   │   ├── findInstancesBridgeResponse.schema.json
    │       │   │   ├── findIntentAgentErrorResponse.schema.json
    │       │   │   ├── findIntentAgentRequest.schema.json
    │       │   │   ├── findIntentAgentResponse.schema.json
    │       │   │   ├── findIntentBridgeErrorResponse.schema.json
    │       │   │   ├── findIntentBridgeRequest.schema.json
    │       │   │   ├── findIntentBridgeResponse.schema.json
    │       │   │   ├── findIntentsByContextAgentErrorResponse.schema.json
    │       │   │   ├── findIntentsByContextAgentRequest.schema.json
    │       │   │   ├── findIntentsByContextAgentResponse.schema.json
    │       │   │   ├── findIntentsByContextBridgeErrorResponse.schema.json
    │       │   │   ├── findIntentsByContextBridgeRequest.schema.json
    │       │   │   ├── findIntentsByContextBridgeResponse.schema.json
    │       │   │   ├── getAppMetadataAgentErrorResponse.schema.json
    │       │   │   ├── getAppMetadataAgentRequest.schema.json
    │       │   │   ├── getAppMetadataAgentResponse.schema.json
    │       │   │   ├── getAppMetadataBridgeErrorResponse.schema.json
    │       │   │   ├── getAppMetadataBridgeRequest.schema.json
    │       │   │   ├── getAppMetadataBridgeResponse.schema.json
    │       │   │   ├── openAgentErrorResponse.schema.json
    │       │   │   ├── openAgentRequest.schema.json
    │       │   │   ├── openAgentResponse.schema.json
    │       │   │   ├── openBridgeErrorResponse.schema.json
    │       │   │   ├── openBridgeRequest.schema.json
    │       │   │   ├── openBridgeResponse.schema.json
    │       │   │   ├── privateChannelBroadcastAgentRequest.schema.json
    │       │   │   ├── privateChannelBroadcastBridgeRequest.schema.json
    │       │   │   ├── privateChannelEventListenerAddedAgentRequest.schema.json
    │       │   │   ├── privateChannelEventListenerAddedBridgeRequest.schema.json
    │       │   │   ├── privateChannelEventListenerRemovedAgentRequest.schema.json
    │       │   │   ├── privateChannelEventListenerRemovedBridgeRequest.schema.json
    │       │   │   ├── privateChannelOnAddContextListenerAgentRequest.schema.json
    │       │   │   ├── privateChannelOnAddContextListenerBridgeRequest.schema.json
    │       │   │   ├── privateChannelOnDisconnectAgentRequest.schema.json
    │       │   │   ├── privateChannelOnDisconnectBridgeRequest.schema.json
    │       │   │   ├── privateChannelOnUnsubscribeAgentRequest.schema.json
    │       │   │   ├── privateChannelOnUnsubscribeBridgeRequest.schema.json
    │       │   │   ├── raiseIntentAgentErrorResponse.schema.json
    │       │   │   ├── raiseIntentAgentRequest.schema.json
    │       │   │   ├── raiseIntentAgentResponse.schema.json
    │       │   │   ├── raiseIntentBridgeErrorResponse.schema.json
    │       │   │   ├── raiseIntentBridgeRequest.schema.json
    │       │   │   ├── raiseIntentBridgeResponse.schema.json
    │       │   │   ├── raiseIntentResultAgentErrorResponse.schema.json
    │       │   │   ├── raiseIntentResultAgentResponse.schema.json
    │       │   │   ├── raiseIntentResultBridgeErrorResponse.schema.json
    │       │   │   └── raiseIntentResultBridgeResponse.schema.json
    │       │   ├── bridgingAsyncAPI/
    │       │   │   ├── README.md
    │       │   │   └── bridgingAsyncAPI.json
    │       │   └── context/
    │       │       ├── action.schema.json
    │       │       ├── chart.schema.json
    │       │       ├── chatInitSettings.schema.json
    │       │       ├── chatMessage.schema.json
    │       │       ├── chatRoom.schema.json
    │       │       ├── chatSearchCriteria.schema.json
    │       │       ├── contact.schema.json
    │       │       ├── contactList.schema.json
    │       │       ├── context.schema.json
    │       │       ├── country.schema.json
    │       │       ├── currency.schema.json
    │       │       ├── email.schema.json
    │       │       ├── instrument.schema.json
    │       │       ├── instrumentList.schema.json
    │       │       ├── interaction.schema.json
    │       │       ├── message.schema.json
    │       │       ├── nothing.schema.json
    │       │       ├── order.schema.json
    │       │       ├── orderList.schema.json
    │       │       ├── organization.schema.json
    │       │       ├── portfolio.schema.json
    │       │       ├── position.schema.json
    │       │       ├── product.schema.json
    │       │       ├── timeRange.schema.json
    │       │       ├── trade.schema.json
    │       │       ├── tradeList.schema.json
    │       │       ├── transactionresult.schema.json
    │       │       └── valuation.schema.json
    │       └── 2.2/
    │           ├── api/
    │           │   ├── README.md
    │           │   ├── WCP1Hello.schema.json
    │           │   ├── WCP2LoadUrl.schema.json
    │           │   ├── WCP3Handshake.schema.json
    │           │   ├── WCP4ValidateAppIdentity.schema.json
    │           │   ├── WCP5ValidateAppIdentityFailedResponse.schema.json
    │           │   ├── WCP5ValidateAppIdentityResponse.schema.json
    │           │   ├── WCP6Goodbye.schema.json
    │           │   ├── WCPConnectionStep.schema.json
    │           │   ├── addContextListenerRequest.schema.json
    │           │   ├── addContextListenerResponse.schema.json
    │           │   ├── addEventListenerRequest.schema.json
    │           │   ├── addEventListenerResponse.schema.json
    │           │   ├── addIntentListenerRequest.schema.json
    │           │   ├── addIntentListenerResponse.schema.json
    │           │   ├── agentEvent.schema.json
    │           │   ├── agentResponse.schema.json
    │           │   ├── api.schema.json
    │           │   ├── appRequest.schema.json
    │           │   ├── broadcastEvent.schema.json
    │           │   ├── broadcastRequest.schema.json
    │           │   ├── broadcastResponse.schema.json
    │           │   ├── channelChangedEvent.schema.json
    │           │   ├── common.schema.json
    │           │   ├── contextListenerUnsubscribeRequest.schema.json
    │           │   ├── contextListenerUnsubscribeResponse.schema.json
    │           │   ├── createPrivateChannelRequest.schema.json
    │           │   ├── createPrivateChannelResponse.schema.json
    │           │   ├── eventListenerUnsubscribeRequest.schema.json
    │           │   ├── eventListenerUnsubscribeResponse.schema.json
    │           │   ├── fdc3UserInterfaceChannelSelected.schema.json
    │           │   ├── fdc3UserInterfaceChannels.schema.json
    │           │   ├── fdc3UserInterfaceDrag.schema.json
    │           │   ├── fdc3UserInterfaceHandshake.schema.json
    │           │   ├── fdc3UserInterfaceHello.schema.json
    │           │   ├── fdc3UserInterfaceMessage.schema.json
    │           │   ├── fdc3UserInterfaceResolve.schema.json
    │           │   ├── fdc3UserInterfaceResolveAction.schema.json
    │           │   ├── fdc3UserInterfaceRestyle.schema.json
    │           │   ├── findInstancesRequest.schema.json
    │           │   ├── findInstancesResponse.schema.json
    │           │   ├── findIntentRequest.schema.json
    │           │   ├── findIntentResponse.schema.json
    │           │   ├── findIntentsByContextRequest.schema.json
    │           │   ├── findIntentsByContextResponse.schema.json
    │           │   ├── getAppMetadataRequest.schema.json
    │           │   ├── getAppMetadataResponse.schema.json
    │           │   ├── getCurrentChannelRequest.schema.json
    │           │   ├── getCurrentChannelResponse.schema.json
    │           │   ├── getCurrentContextRequest.schema.json
    │           │   ├── getCurrentContextResponse.schema.json
    │           │   ├── getInfoRequest.schema.json
    │           │   ├── getInfoResponse.schema.json
    │           │   ├── getOrCreateChannelRequest.schema.json
    │           │   ├── getOrCreateChannelResponse.schema.json
    │           │   ├── getUserChannelsRequest.schema.json
    │           │   ├── getUserChannelsResponse.schema.json
    │           │   ├── heartbeatAcknowledgmentRequest.schema.json
    │           │   ├── heartbeatEvent.schema.json
    │           │   ├── intentEvent.schema.json
    │           │   ├── intentListenerUnsubscribeRequest.schema.json
    │           │   ├── intentListenerUnsubscribeResponse.schema.json
    │           │   ├── intentResultRequest.schema.json
    │           │   ├── intentResultResponse.schema.json
    │           │   ├── joinUserChannelRequest.schema.json
    │           │   ├── joinUserChannelResponse.schema.json
    │           │   ├── leaveCurrentChannelRequest.schema.json
    │           │   ├── leaveCurrentChannelResponse.schema.json
    │           │   ├── openRequest.schema.json
    │           │   ├── openResponse.schema.json
    │           │   ├── privateChannelAddEventListenerRequest.schema.json
    │           │   ├── privateChannelAddEventListenerResponse.schema.json
    │           │   ├── privateChannelDisconnectRequest.schema.json
    │           │   ├── privateChannelDisconnectResponse.schema.json
    │           │   ├── privateChannelOnAddContextListenerEvent.schema.json
    │           │   ├── privateChannelOnDisconnectEvent.schema.json
    │           │   ├── privateChannelOnUnsubscribeEvent.schema.json
    │           │   ├── privateChannelUnsubscribeEventListenerRequest.schema.json
    │           │   ├── privateChannelUnsubscribeEventListenerResponse.schema.json
    │           │   ├── raiseIntentForContextRequest.schema.json
    │           │   ├── raiseIntentForContextResponse.schema.json
    │           │   ├── raiseIntentRequest.schema.json
    │           │   ├── raiseIntentResponse.schema.json
    │           │   ├── raiseIntentResultResponse.schema.json
    │           │   └── t2sQuicktypeUtil.js
    │           ├── app-directory.html
    │           ├── appd.schema.json
    │           ├── bridging/
    │           │   ├── agentErrorResponse.schema.json
    │           │   ├── agentRequest.schema.json
    │           │   ├── agentResponse.schema.json
    │           │   ├── bridgeErrorResponse.schema.json
    │           │   ├── bridgeRequest.schema.json
    │           │   ├── bridgeResponse.schema.json
    │           │   ├── broadcastAgentRequest.schema.json
    │           │   ├── broadcastBridgeRequest.schema.json
    │           │   ├── common.schema.json
    │           │   ├── connectionStep.schema.json
    │           │   ├── connectionStep2Hello.schema.json
    │           │   ├── connectionStep3Handshake.schema.json
    │           │   ├── connectionStep4AuthenticationFailed.schema.json
    │           │   ├── connectionStep6ConnectedAgentsUpdate.schema.json
    │           │   ├── findInstancesAgentErrorResponse.schema.json
    │           │   ├── findInstancesAgentRequest.schema.json
    │           │   ├── findInstancesAgentResponse.schema.json
    │           │   ├── findInstancesBridgeErrorResponse.schema.json
    │           │   ├── findInstancesBridgeRequest.schema.json
    │           │   ├── findInstancesBridgeResponse.schema.json
    │           │   ├── findIntentAgentErrorResponse.schema.json
    │           │   ├── findIntentAgentRequest.schema.json
    │           │   ├── findIntentAgentResponse.schema.json
    │           │   ├── findIntentBridgeErrorResponse.schema.json
    │           │   ├── findIntentBridgeRequest.schema.json
    │           │   ├── findIntentBridgeResponse.schema.json
    │           │   ├── findIntentsByContextAgentErrorResponse.schema.json
    │           │   ├── findIntentsByContextAgentRequest.schema.json
    │           │   ├── findIntentsByContextAgentResponse.schema.json
    │           │   ├── findIntentsByContextBridgeErrorResponse.schema.json
    │           │   ├── findIntentsByContextBridgeRequest.schema.json
    │           │   ├── findIntentsByContextBridgeResponse.schema.json
    │           │   ├── getAppMetadataAgentErrorResponse.schema.json
    │           │   ├── getAppMetadataAgentRequest.schema.json
    │           │   ├── getAppMetadataAgentResponse.schema.json
    │           │   ├── getAppMetadataBridgeErrorResponse.schema.json
    │           │   ├── getAppMetadataBridgeRequest.schema.json
    │           │   ├── getAppMetadataBridgeResponse.schema.json
    │           │   ├── openAgentErrorResponse.schema.json
    │           │   ├── openAgentRequest.schema.json
    │           │   ├── openAgentResponse.schema.json
    │           │   ├── openBridgeErrorResponse.schema.json
    │           │   ├── openBridgeRequest.schema.json
    │           │   ├── openBridgeResponse.schema.json
    │           │   ├── privateChannelBroadcastAgentRequest.schema.json
    │           │   ├── privateChannelBroadcastBridgeRequest.schema.json
    │           │   ├── privateChannelEventListenerAddedAgentRequest.schema.json
    │           │   ├── privateChannelEventListenerAddedBridgeRequest.schema.json
    │           │   ├── privateChannelEventListenerRemovedAgentRequest.schema.json
    │           │   ├── privateChannelEventListenerRemovedBridgeRequest.schema.json
    │           │   ├── privateChannelOnAddContextListenerAgentRequest.schema.json
    │           │   ├── privateChannelOnAddContextListenerBridgeRequest.schema.json
    │           │   ├── privateChannelOnDisconnectAgentRequest.schema.json
    │           │   ├── privateChannelOnDisconnectBridgeRequest.schema.json
    │           │   ├── privateChannelOnUnsubscribeAgentRequest.schema.json
    │           │   ├── privateChannelOnUnsubscribeBridgeRequest.schema.json
    │           │   ├── raiseIntentAgentErrorResponse.schema.json
    │           │   ├── raiseIntentAgentRequest.schema.json
    │           │   ├── raiseIntentAgentResponse.schema.json
    │           │   ├── raiseIntentBridgeErrorResponse.schema.json
    │           │   ├── raiseIntentBridgeRequest.schema.json
    │           │   ├── raiseIntentBridgeResponse.schema.json
    │           │   ├── raiseIntentResultAgentErrorResponse.schema.json
    │           │   ├── raiseIntentResultAgentResponse.schema.json
    │           │   ├── raiseIntentResultBridgeErrorResponse.schema.json
    │           │   └── raiseIntentResultBridgeResponse.schema.json
    │           ├── bridgingAsyncAPI/
    │           │   ├── README.md
    │           │   └── bridgingAsyncAPI.json
    │           └── context/
    │               ├── action.schema.json
    │               ├── chart.schema.json
    │               ├── chatInitSettings.schema.json
    │               ├── chatMessage.schema.json
    │               ├── chatRoom.schema.json
    │               ├── chatSearchCriteria.schema.json
    │               ├── contact.schema.json
    │               ├── contactList.schema.json
    │               ├── context.schema.json
    │               ├── country.schema.json
    │               ├── currency.schema.json
    │               ├── email.schema.json
    │               ├── fileAttachment.schema.json
    │               ├── instrument.schema.json
    │               ├── instrumentList.schema.json
    │               ├── interaction.schema.json
    │               ├── message.schema.json
    │               ├── nothing.schema.json
    │               ├── order.schema.json
    │               ├── orderList.schema.json
    │               ├── organization.schema.json
    │               ├── portfolio.schema.json
    │               ├── position.schema.json
    │               ├── product.schema.json
    │               ├── timeRange.schema.json
    │               ├── trade.schema.json
    │               ├── tradeList.schema.json
    │               ├── transactionresult.schema.json
    │               └── valuation.schema.json
    ├── versioned_docs/
    │   ├── version-1.0/
    │   │   ├── api/
    │   │   │   ├── Context.md
    │   │   │   ├── DesktopAgent.md
    │   │   │   ├── Errors.md
    │   │   │   ├── api-intro.md
    │   │   │   └── api-spec.md
    │   │   ├── appd-discovery.md
    │   │   ├── appd-intro.md
    │   │   ├── appd-spec.md
    │   │   ├── appd-use.md
    │   │   ├── context-intro.md
    │   │   ├── context-spec.md
    │   │   ├── fdc3-charter.md
    │   │   ├── fdc3-compliance.md
    │   │   ├── fdc3-intro.md
    │   │   ├── fdc3-standard.md
    │   │   ├── intents-intro.md
    │   │   ├── intents-spec.md
    │   │   ├── use-cases/
    │   │   │   ├── 001-equity-sell-side-trader.md
    │   │   │   ├── 002-buy-side-portfolio-manager.md
    │   │   │   ├── 003-inhouse-cross-platform-launcher.md
    │   │   │   ├── 004-client-side-fx-trader.md
    │   │   │   ├── 005-buy-side-treasurer.md
    │   │   │   ├── 009-call-transcription-to-crm.md
    │   │   │   ├── 010-realtime-trade-ticket-population.md
    │   │   │   ├── 013-user-launches-multiple-apps-from-a-single-container.md
    │   │   │   ├── 015-sales-floor-base-workflow.md
    │   │   │   ├── 016-quantifying-fdc3-interactions.md
    │   │   │   ├── 017-fine-tuning-interop-with-channels.md
    │   │   │   ├── meeting-minutes/
    │   │   │   │   ├── 2020-01-16 uc-wg meeting notes.md
    │   │   │   │   ├── 2020-02-20 uc-wg meeting notes.md
    │   │   │   │   └── 2020-03-19 uc-wg meeting notes.md
    │   │   │   ├── overview.md
    │   │   │   └── readme.md
    │   │   └── why-fdc3.md
    │   ├── version-1.1/
    │   │   ├── api/
    │   │   │   ├── Context.md
    │   │   │   ├── DesktopAgent.md
    │   │   │   ├── Errors.md
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── AppIntent.md
    │   │   │   │   ├── AppMetadata.md
    │   │   │   │   ├── Channel.md
    │   │   │   │   ├── ChannelError.md
    │   │   │   │   ├── Context.md
    │   │   │   │   ├── ContextHandler.md
    │   │   │   │   ├── DesktopAgent.md
    │   │   │   │   ├── DisplayMetadata.md
    │   │   │   │   ├── IntentMetadata.md
    │   │   │   │   ├── IntentResolution.md
    │   │   │   │   ├── Listener.md
    │   │   │   │   ├── OpenError.md
    │   │   │   │   └── ResolveError.md
    │   │   │   └── spec.md
    │   │   ├── app-directory/
    │   │   │   ├── discovery.md
    │   │   │   ├── overview.md
    │   │   │   ├── spec.md
    │   │   │   └── usage.md
    │   │   ├── context/
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── Contact.md
    │   │   │   │   ├── ContactList.md
    │   │   │   │   ├── Context.md
    │   │   │   │   ├── Country.md
    │   │   │   │   ├── Instrument.md
    │   │   │   │   ├── InstrumentList.md
    │   │   │   │   ├── Organization.md
    │   │   │   │   ├── Portfolio.md
    │   │   │   │   └── Position.md
    │   │   │   └── spec.md
    │   │   ├── fdc3-charter.md
    │   │   ├── fdc3-compliance.md
    │   │   ├── fdc3-intro.md
    │   │   ├── fdc3-standard.md
    │   │   ├── intents/
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── StartCall.md
    │   │   │   │   ├── StartChat.md
    │   │   │   │   ├── ViewAnalysis.md
    │   │   │   │   ├── ViewChart.md
    │   │   │   │   ├── ViewContact.md
    │   │   │   │   ├── ViewInstrument.md
    │   │   │   │   ├── ViewNews.md
    │   │   │   │   └── ViewQuote.md
    │   │   │   └── spec.md
    │   │   ├── use-cases/
    │   │   │   ├── 001-equity-sell-side-trader.md
    │   │   │   ├── 002-buy-side-portfolio-manager.md
    │   │   │   ├── 003-inhouse-cross-platform-launcher.md
    │   │   │   ├── 004-client-side-fx-trader.md
    │   │   │   ├── 005-buy-side-treasurer.md
    │   │   │   ├── 009-call-transcription-to-crm.md
    │   │   │   ├── 010-realtime-trade-ticket-population.md
    │   │   │   ├── 013-user-launches-multiple-apps-from-a-single-container.md
    │   │   │   ├── 015-sales-floor-base-workflow.md
    │   │   │   ├── 016-quantifying-fdc3-interactions.md
    │   │   │   ├── 017-fine-tuning-interop-with-channels.md
    │   │   │   └── overview.md
    │   │   └── why-fdc3.md
    │   ├── version-1.2/
    │   │   ├── api/
    │   │   │   ├── Context.md
    │   │   │   ├── DesktopAgent.md
    │   │   │   ├── Errors.md
    │   │   │   ├── api-intro.md
    │   │   │   ├── api-spec.md
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── AppIntent.md
    │   │   │   │   ├── AppMetadata.md
    │   │   │   │   ├── Channel.md
    │   │   │   │   ├── ChannelError.md
    │   │   │   │   ├── Context.md
    │   │   │   │   ├── ContextHandler.md
    │   │   │   │   ├── DesktopAgent.md
    │   │   │   │   ├── DisplayMetadata.md
    │   │   │   │   ├── Errors.md
    │   │   │   │   ├── Globals.md
    │   │   │   │   ├── IntentMetadata.md
    │   │   │   │   ├── IntentResolution.md
    │   │   │   │   ├── Listener.md
    │   │   │   │   ├── Metadata.md
    │   │   │   │   ├── OpenError.md
    │   │   │   │   ├── ResolveError.md
    │   │   │   │   └── Types.md
    │   │   │   └── spec.md
    │   │   ├── app-directory/
    │   │   │   ├── discovery.md
    │   │   │   ├── overview.md
    │   │   │   ├── spec.md
    │   │   │   └── usage.md
    │   │   ├── context/
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── Contact.md
    │   │   │   │   ├── ContactList.md
    │   │   │   │   ├── Context.md
    │   │   │   │   ├── Country.md
    │   │   │   │   ├── Instrument.md
    │   │   │   │   ├── InstrumentList.md
    │   │   │   │   ├── Organization.md
    │   │   │   │   ├── Portfolio.md
    │   │   │   │   └── Position.md
    │   │   │   └── spec.md
    │   │   ├── fdc3-charter.md
    │   │   ├── fdc3-compliance.md
    │   │   ├── fdc3-intro.md
    │   │   ├── fdc3-standard.md
    │   │   ├── intents/
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── StartCall.md
    │   │   │   │   ├── StartChat.md
    │   │   │   │   ├── ViewAnalysis.md
    │   │   │   │   ├── ViewChart.md
    │   │   │   │   ├── ViewContact.md
    │   │   │   │   ├── ViewInstrument.md
    │   │   │   │   ├── ViewNews.md
    │   │   │   │   └── ViewQuote.md
    │   │   │   └── spec.md
    │   │   ├── supported-platforms.md
    │   │   ├── use-cases/
    │   │   │   ├── 001-equity-sell-side-trader.md
    │   │   │   ├── 002-buy-side-portfolio-manager.md
    │   │   │   ├── 003-inhouse-cross-platform-launcher.md
    │   │   │   ├── 004-client-side-fx-trader.md
    │   │   │   ├── 005-buy-side-treasurer.md
    │   │   │   ├── 009-call-transcription-to-crm.md
    │   │   │   ├── 010-realtime-trade-ticket-population.md
    │   │   │   ├── 013-user-launches-multiple-apps-from-a-single-container.md
    │   │   │   ├── 015-sales-floor-base-workflow.md
    │   │   │   ├── 016-quantifying-fdc3-interactions.md
    │   │   │   ├── 017-fine-tuning-interop-with-channels.md
    │   │   │   └── overview.md
    │   │   └── why-fdc3.md
    │   ├── version-2.0/
    │   │   ├── api/
    │   │   │   ├── conformance/
    │   │   │   │   ├── App-Channel-Tests.md
    │   │   │   │   ├── Basic-Tests.md
    │   │   │   │   ├── Intents-Tests.md
    │   │   │   │   ├── Metadata-Tests.md
    │   │   │   │   ├── Open-Tests.md
    │   │   │   │   ├── Overview.md
    │   │   │   │   └── User-Channel-Tests.md
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── Channel.md
    │   │   │   │   ├── DesktopAgent.md
    │   │   │   │   ├── Errors.md
    │   │   │   │   ├── Globals.md
    │   │   │   │   ├── Metadata.md
    │   │   │   │   ├── PrivateChannel.md
    │   │   │   │   └── Types.md
    │   │   │   └── spec.md
    │   │   ├── app-directory/
    │   │   │   ├── overview.md
    │   │   │   └── spec.md
    │   │   ├── context/
    │   │   │   ├── ref/
    │   │   │   │   ├── Chart.md
    │   │   │   │   ├── ChatInitSettings.md
    │   │   │   │   ├── Contact.md
    │   │   │   │   ├── ContactList.md
    │   │   │   │   ├── Context.md
    │   │   │   │   ├── Country.md
    │   │   │   │   ├── Currency.md
    │   │   │   │   ├── Email.md
    │   │   │   │   ├── Instrument.md
    │   │   │   │   ├── InstrumentList.md
    │   │   │   │   ├── Nothing.md
    │   │   │   │   ├── Organization.md
    │   │   │   │   ├── Portfolio.md
    │   │   │   │   ├── Position.md
    │   │   │   │   ├── TimeRange.md
    │   │   │   │   └── Valuation.md
    │   │   │   └── spec.md
    │   │   ├── fdc3-charter.md
    │   │   ├── fdc3-compliance.md
    │   │   ├── fdc3-glossary.md
    │   │   ├── fdc3-intro.md
    │   │   ├── fdc3-standard.md
    │   │   ├── guides/
    │   │   │   └── submit-new-intent.md
    │   │   ├── intents/
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── StartCall.md
    │   │   │   │   ├── StartChat.md
    │   │   │   │   ├── StartEmail.md
    │   │   │   │   ├── ViewAnalysis.md
    │   │   │   │   ├── ViewChart.md
    │   │   │   │   ├── ViewContact.md
    │   │   │   │   ├── ViewHoldings.md
    │   │   │   │   ├── ViewInstrument.md
    │   │   │   │   ├── ViewInteractions.md
    │   │   │   │   ├── ViewNews.md
    │   │   │   │   ├── ViewOrders.md
    │   │   │   │   ├── ViewProfile.md
    │   │   │   │   ├── ViewQuote.md
    │   │   │   │   └── ViewResearch.md
    │   │   │   └── spec.md
    │   │   ├── references.md
    │   │   ├── supported-platforms.md
    │   │   ├── trademarks.md
    │   │   ├── use-cases/
    │   │   │   ├── 001-equity-sell-side-trader.md
    │   │   │   ├── 002-buy-side-portfolio-manager.md
    │   │   │   ├── 003-inhouse-cross-platform-launcher.md
    │   │   │   ├── 004-client-side-fx-trader.md
    │   │   │   ├── 005-buy-side-treasurer.md
    │   │   │   ├── 009-call-transcription-to-crm.md
    │   │   │   ├── 010-realtime-trade-ticket-population.md
    │   │   │   ├── 013-user-launches-multiple-apps-from-a-single-container.md
    │   │   │   ├── 015-sales-floor-base-workflow.md
    │   │   │   ├── 016-quantifying-fdc3-interactions.md
    │   │   │   ├── 017-fine-tuning-interop-with-channels.md
    │   │   │   └── overview.md
    │   │   └── why-fdc3.md
    │   ├── version-2.1/
    │   │   ├── .markdownlint.jsonc
    │   │   ├── agent-bridging/
    │   │   │   ├── ref/
    │   │   │   │   ├── PrivateChannel.broadcast.md
    │   │   │   │   ├── PrivateChannel.eventListenerAdded.md
    │   │   │   │   ├── PrivateChannel.eventListenerRemoved.md
    │   │   │   │   ├── PrivateChannel.onAddContextListener.md
    │   │   │   │   ├── PrivateChannel.onDisconnect.md
    │   │   │   │   ├── PrivateChannel.onUnsubscribe.md
    │   │   │   │   ├── broadcast.md
    │   │   │   │   ├── findInstances.md
    │   │   │   │   ├── findIntent.md
    │   │   │   │   ├── findIntentsByContext.md
    │   │   │   │   ├── getAppMetadata.md
    │   │   │   │   ├── open.md
    │   │   │   │   └── raiseIntent.md
    │   │   │   └── spec.md
    │   │   ├── api/
    │   │   │   ├── conformance/
    │   │   │   │   ├── App-Channel-Tests.md
    │   │   │   │   ├── Basic-Tests.md
    │   │   │   │   ├── Intents-Tests.md
    │   │   │   │   ├── Metadata-Tests.md
    │   │   │   │   ├── Open-Tests.md
    │   │   │   │   ├── Overview.md
    │   │   │   │   └── User-Channel-Tests.md
    │   │   │   ├── ref/
    │   │   │   │   ├── Channel.md
    │   │   │   │   ├── DesktopAgent.md
    │   │   │   │   ├── Errors.md
    │   │   │   │   ├── Globals.md
    │   │   │   │   ├── Metadata.md
    │   │   │   │   ├── PrivateChannel.md
    │   │   │   │   └── Types.md
    │   │   │   └── spec.md
    │   │   ├── app-directory/
    │   │   │   ├── overview.md
    │   │   │   └── spec.md
    │   │   ├── context/
    │   │   │   ├── ref/
    │   │   │   │   ├── Action.md
    │   │   │   │   ├── Chart.md
    │   │   │   │   ├── ChatInitSettings.md
    │   │   │   │   ├── ChatMessage.md
    │   │   │   │   ├── ChatRoom.md
    │   │   │   │   ├── ChatSearchCriteria.md
    │   │   │   │   ├── Contact.md
    │   │   │   │   ├── ContactList.md
    │   │   │   │   ├── Context.md
    │   │   │   │   ├── Country.md
    │   │   │   │   ├── Currency.md
    │   │   │   │   ├── Email.md
    │   │   │   │   ├── Instrument.md
    │   │   │   │   ├── InstrumentList.md
    │   │   │   │   ├── Interaction.md
    │   │   │   │   ├── Message.md
    │   │   │   │   ├── Nothing.md
    │   │   │   │   ├── Order.md
    │   │   │   │   ├── OrderList.md
    │   │   │   │   ├── Organization.md
    │   │   │   │   ├── Portfolio.md
    │   │   │   │   ├── Position.md
    │   │   │   │   ├── Product.md
    │   │   │   │   ├── TimeRange.md
    │   │   │   │   ├── Trade.md
    │   │   │   │   ├── TradeList.md
    │   │   │   │   ├── TransactionResult.md
    │   │   │   │   └── Valuation.md
    │   │   │   └── spec.md
    │   │   ├── fdc3-charter.md
    │   │   ├── fdc3-compliance.md
    │   │   ├── fdc3-glossary.md
    │   │   ├── fdc3-intro.md
    │   │   ├── fdc3-standard.md
    │   │   ├── guides/
    │   │   │   └── submit-new-intent.md
    │   │   ├── intents/
    │   │   │   ├── ref/
    │   │   │   │   ├── CreateInteraction.md
    │   │   │   │   ├── SendChatMessage.md
    │   │   │   │   ├── StartCall.md
    │   │   │   │   ├── StartChat.md
    │   │   │   │   ├── StartEmail.md
    │   │   │   │   ├── ViewAnalysis.md
    │   │   │   │   ├── ViewChart.md
    │   │   │   │   ├── ViewChat.md
    │   │   │   │   ├── ViewContact.md
    │   │   │   │   ├── ViewHoldings.md
    │   │   │   │   ├── ViewInstrument.md
    │   │   │   │   ├── ViewInteractions.md
    │   │   │   │   ├── ViewMessages.md
    │   │   │   │   ├── ViewNews.md
    │   │   │   │   ├── ViewOrders.md
    │   │   │   │   ├── ViewProfile.md
    │   │   │   │   ├── ViewQuote.md
    │   │   │   │   └── ViewResearch.md
    │   │   │   └── spec.md
    │   │   ├── references.md
    │   │   ├── supported-platforms.md
    │   │   ├── trademarks.md
    │   │   ├── use-cases/
    │   │   │   ├── 001-equity-sell-side-trader.md
    │   │   │   ├── 002-buy-side-portfolio-manager.md
    │   │   │   ├── 003-inhouse-cross-platform-launcher.md
    │   │   │   ├── 004-client-side-fx-trader.md
    │   │   │   ├── 005-buy-side-treasurer.md
    │   │   │   ├── 009-call-transcription-to-crm.md
    │   │   │   ├── 010-realtime-trade-ticket-population.md
    │   │   │   ├── 013-user-launches-multiple-apps-from-a-single-container.md
    │   │   │   ├── 015-sales-floor-base-workflow.md
    │   │   │   ├── 016-quantifying-fdc3-interactions.md
    │   │   │   ├── 017-fine-tuning-interop-with-channels.md
    │   │   │   ├── meeting-minutes/
    │   │   │   │   ├── 2020-01-16 uc-wg meeting notes.md
    │   │   │   │   ├── 2020-02-20 uc-wg meeting notes.md
    │   │   │   │   └── 2020-03-19 uc-wg meeting notes.md
    │   │   │   ├── overview.md
    │   │   │   └── readme.md
    │   │   └── why-fdc3.md
    │   └── version-2.2/
    │       ├── .markdownlint.jsonc
    │       ├── agent-bridging/
    │       │   ├── ref/
    │       │   │   ├── PrivateChannel.broadcast.md
    │       │   │   ├── PrivateChannel.eventListenerAdded.md
    │       │   │   ├── PrivateChannel.eventListenerRemoved.md
    │       │   │   ├── PrivateChannel.onAddContextListener.md
    │       │   │   ├── PrivateChannel.onDisconnect.md
    │       │   │   ├── PrivateChannel.onUnsubscribe.md
    │       │   │   ├── broadcast.md
    │       │   │   ├── findInstances.md
    │       │   │   ├── findIntent.md
    │       │   │   ├── findIntentsByContext.md
    │       │   │   ├── getAppMetadata.md
    │       │   │   ├── open.md
    │       │   │   └── raiseIntent.md
    │       │   └── spec.md
    │       ├── api/
    │       │   ├── conformance/
    │       │   │   ├── App-Channel-Tests.md
    │       │   │   ├── Basic-Tests.md
    │       │   │   ├── Intents-Tests.md
    │       │   │   ├── Metadata-Tests.md
    │       │   │   ├── Open-Tests.md
    │       │   │   ├── Overview.md
    │       │   │   └── User-Channel-Tests.md
    │       │   ├── ref/
    │       │   │   ├── Channel.md
    │       │   │   ├── DesktopAgent.md
    │       │   │   ├── Errors.md
    │       │   │   ├── Events.md
    │       │   │   ├── GetAgent.md
    │       │   │   ├── Metadata.md
    │       │   │   ├── PrivateChannel.md
    │       │   │   └── Types.md
    │       │   ├── spec.md
    │       │   ├── specs/
    │       │   │   ├── browserResidentDesktopAgents.md
    │       │   │   ├── desktopAgentCommunicationProtocol.md
    │       │   │   ├── preloadDesktopAgents.md
    │       │   │   └── webConnectionProtocol.md
    │       │   └── supported-platforms.md
    │       ├── app-directory/
    │       │   ├── overview.md
    │       │   └── spec.md
    │       ├── context/
    │       │   ├── ref/
    │       │   │   ├── Action.md
    │       │   │   ├── BaseContext.md
    │       │   │   ├── Chart.md
    │       │   │   ├── ChatInitSettings.md
    │       │   │   ├── ChatMessage.md
    │       │   │   ├── ChatRoom.md
    │       │   │   ├── ChatSearchCriteria.md
    │       │   │   ├── Contact.md
    │       │   │   ├── ContactList.md
    │       │   │   ├── Context.md
    │       │   │   ├── Country.md
    │       │   │   ├── Currency.md
    │       │   │   ├── DocumentedContext.md
    │       │   │   ├── Email.md
    │       │   │   ├── FileAttachment.md
    │       │   │   ├── Instrument.md
    │       │   │   ├── InstrumentList.md
    │       │   │   ├── Interaction.md
    │       │   │   ├── Message.md
    │       │   │   ├── Nothing.md
    │       │   │   ├── Order.md
    │       │   │   ├── OrderList.md
    │       │   │   ├── Organization.md
    │       │   │   ├── Portfolio.md
    │       │   │   ├── Position.md
    │       │   │   ├── Product.md
    │       │   │   ├── TimeRange.md
    │       │   │   ├── Trade.md
    │       │   │   ├── TradeList.md
    │       │   │   ├── TransactionResult.md
    │       │   │   └── Valuation.md
    │       │   └── spec.md
    │       ├── fdc3-charter.md
    │       ├── fdc3-compliance.md
    │       ├── fdc3-glossary.md
    │       ├── fdc3-intro.md
    │       ├── fdc3-standard.md
    │       ├── guides/
    │       │   └── submit-new-intent.md
    │       ├── intents/
    │       │   ├── ref/
    │       │   │   ├── CreateInteraction.md
    │       │   │   ├── CreateOrUpdateProfile.md
    │       │   │   ├── SendChatMessage.md
    │       │   │   ├── StartCall.md
    │       │   │   ├── StartChat.md
    │       │   │   ├── StartEmail.md
    │       │   │   ├── ViewAnalysis.md
    │       │   │   ├── ViewChart.md
    │       │   │   ├── ViewChat.md
    │       │   │   ├── ViewContact.md
    │       │   │   ├── ViewHoldings.md
    │       │   │   ├── ViewInstrument.md
    │       │   │   ├── ViewInteractions.md
    │       │   │   ├── ViewMessages.md
    │       │   │   ├── ViewNews.md
    │       │   │   ├── ViewOrders.md
    │       │   │   ├── ViewProfile.md
    │       │   │   ├── ViewQuote.md
    │       │   │   └── ViewResearch.md
    │       │   └── spec.md
    │       ├── references.md
    │       ├── trademarks.md
    │       ├── use-cases/
    │       │   ├── 001-equity-sell-side-trader.md
    │       │   ├── 002-buy-side-portfolio-manager.md
    │       │   ├── 003-inhouse-cross-platform-launcher.md
    │       │   ├── 004-client-side-fx-trader.md
    │       │   ├── 005-buy-side-treasurer.md
    │       │   ├── 006-call-transcription-to-crm.md
    │       │   ├── 007-realtime-trade-ticket-population.md
    │       │   ├── 008-user-launches-multiple-apps-from-a-single-container.md
    │       │   ├── 009-sales-floor-base-workflow.md
    │       │   ├── 010-quantifying-fdc3-interactions.md
    │       │   ├── 011-fine-tuning-interop-with-channels.md
    │       │   ├── meeting-minutes/
    │       │   │   ├── 2020-01-16 uc-wg meeting notes.md
    │       │   │   ├── 2020-02-20 uc-wg meeting notes.md
    │       │   │   └── 2020-03-19 uc-wg meeting notes.md
    │       │   ├── overview.md
    │       │   └── readme.md
    │       └── why-fdc3.md
    ├── versioned_sidebars/
    │   ├── version-1.0-sidebars.json
    │   ├── version-1.1-sidebars.json
    │   ├── version-1.2-sidebars.json
    │   ├── version-2.0-sidebars.json
    │   ├── version-2.1-sidebars.json
    │   └── version-2.2-sidebars.json
    └── versions.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
# http://editorconfig.org

# A special property that should be specified at the top of the file outside of
# any sections. Set to true to stop .editor config file search on current file
root = true

[*]
# Indentation style
# Possible values - tab, space
indent_style = space

# Indentation size in single-spaced characters
# Possible values - an integer, tab
indent_size = 2

# Line ending file format
# Possible values - lf, crlf, cr
end_of_line = lf

# File character encoding
# Possible values - latin1, utf-8, utf-16be, utf-16le
charset = utf-8

# Denotes whether to trim whitespace at the end of lines
# Possible values - true, false
trim_trailing_whitespace = true

# Denotes whether file should end with a newline
# Possible values - true, false
insert_final_newline = true

================================================
FILE: .eslintignore
================================================
/node_modules/
dist/
/website/schema2Markdown.js

================================================
FILE: .github/CODEOWNERS
================================================
# fdc3-maintainers will be default reviewers for everything in the repo unless a later match takes precedence
* @finos/fdc3-maintainers

# Any changes to this CODEOWNERS file should be reviewed by finos-admins
/.github/CODEOWNERS @finos/finos-admins


================================================
FILE: .github/ISSUE_TEMPLATE/---context_or_intent_proposal.md
================================================
---
name: "✉️ Context or Intent proposal"
about: Propose new contexts and intents to help implement a particular use-case!
title: ''
labels: enhancement, Context Data & Intents
assignees: ''
---

## Enhancement Request

### Use Case

<!--- 
Please specify at least one use case that the proposed additions would support

For example:
> User may want to view current positions for a list of securities
--->

### Intents

#### \<intent name goes here\>

<!---
Brief description of purpose
Include indication of input and output context types (if any)
--->

### Contexts

#### \<context name goes here\>

<!--- Brief description of purpose
--->

##### Details

| Property    | Type    | Required | Example Value       |
|-------------|---------|----------|---------------------|
| `type`      | string  | Yes      | `'fdc3.instrument'` |
| `name`      | string  | No       | `'Microsoft'`       |
| `id.ticker` | string  | No       | `'MSFT'`            |
| `id.BBG`    | string  | No       | `'MSFT:US'`         |

##### Example

<!---
```js
const instrument = {
    type: 'fdc3.instrument',
    name: 'International Business Machines',
    id: {
        ticker: 'ibm'
    }
}
```
--->

### Additional Information
<!---
Please add any other information that can provide additional detail for this enhancement request
--->

================================================
FILE: .github/ISSUE_TEMPLATE/---enhancement-request.md
================================================
---
name: "\U0001F680 Enhancement Request"
about: Propose an addition or change to the FDC3 standard!
title: ''
labels: enhancement
assignees: ''
---

## Enhancement Request

### Use Case

<!--- Please specify at least one use case that this enhancement would support

A use case should not be a solution, but a description of a problem from an end user point of view.  

For example: 
> Often, end users want to link from one app to another to dynamically create a workflow without prior knowledge of the app they want to connect to.  For example, using the 'share' feature allows an end user to dynamically discover what apps they have that support social sharing and no advanced knowledge is required by the end user. --->

### Workflow Description

<!--- clearly and concisely describe the target workflow for the proposed enhancement --->

### Workflow Examples

<!--- provide one or more concrete examples of the proposed workflow --->

### Additional Information

<!--- please add any other information that can provide additional detail for this enhancement request --->


================================================
FILE: .github/ISSUE_TEMPLATE/---minor-issue.md
================================================
---
name: "\U0001F41B Minor Issue"
about: "If something isn't as expected \U0001F914."
title: ''
labels: bug
assignees: ''
---

## Minor Issue

<!-- Please use minor issues for discrepancies or errors found in the spec or supporting documentation, examples, and other materials.  If you wish to propose a new feature or a revision to an existing feature, please use the *Enhancement Request* template. -->

### Area of Issue

- [ ] App Directory
- [ ] API
- [ ] Context Data
- [ ] Intents
- [ ] Desktop Agent Bridging
- [ ] Use Cases
- [ ] Other

### Issue Description

<!--- please provide a detailed description of the issue  --->

### Additional Context

<!--- Add any other context about the problem here. If applicable, add screenshots to help explain...  --->


================================================
FILE: .github/ISSUE_TEMPLATE/---question.md
================================================
---
name: "\U0001F917 Question"
about: "If you have a questions about FDC3. \U0001F4AC"
title: 'Question: '
labels: 'question'
assignees: ''
---

### Question Area

- [ ] App Directory
- [ ] API
- [ ] Context Data
- [ ] Intents
- [ ] Use Cases
- [ ] Other

### Question


================================================
FILE: .github/ISSUE_TEMPLATE/general-meeting.md
================================================
---
name: General Meeting
about: minutes for an FDC3 General Meeting
title: 'General Meeting - mmm dd, yyyy'
labels: General meeting, meeting
assignees: ''
---

## Date

DD MMM yyyy - 10am EST / 3pm GMT

### Zoom info

- **[Join Zoom Meeting](https://zoom.us/j/96940294948?pwd=SjFibVdiN25QSWxva3FqRHY2RUFCdz09)**
- **Meeting ID:** 969 4029 4948
- **Passcode:** 636931
- **Dial-in:**
    | Country      | International Dial-in | Toll-free Dial-in |
    | :---        | :---        | :---        |
    | **US** | [+1 929 205 6099 (New York)](tel:+19292056099) | [877 853 5247](tel:8778535247) |
    | **UK** | [+44 330 088 5830](tel:+443300885830) | [0800 031 5717](tel:08000315717) |
    | **France** | [+33 1 8699 5831](tel:+33186995831) | [0 800 940 415](tel:0800940415) 
    | Find your local number | <https://zoom.us/u/ad2WVnBzb8> | |

## Meeting notices

- FINOS **Project leads** are responsible for observing the FINOS guidelines for [running project meetings](https://community.finos.org/docs/governance/meeting-procedures/). Project maintainers can find additional resources in the [FINOS Maintainers Cheatsheet](https://community.finos.org/docs/finos-maintainers-cheatsheet).

- **All participants** in FINOS project meetings are subject to the [LF Antitrust Policy](https://www.linuxfoundation.org/antitrust-policy/), the [FINOS Community Code of Conduct](https://community.finos.org/docs/governance/code-of-conduct) and all other [FINOS policies](https://community.finos.org/docs/governance/#policies).

- FINOS meetings involve participation by industry competitors, and it is the intention of FINOS and the Linux Foundation to conduct all of its activities in accordance with applicable antitrust and competition laws. It is therefore extremely important that attendees adhere to meeting agendas, and be aware of, and not participate in, any activities that are prohibited under applicable US state, federal or foreign antitrust and competition laws. Please contact <legal@finos.org> with any questions.

- FINOS project meetings may be recorded for use solely by the FINOS team for administration purposes. In very limited instances, and with explicit approval, recordings may be made more widely available.

## Participation Requirements

**Note:** Meeting participants are expected to accept the terms of the FDC3 license (Community Specification License), understand the governance process and have a CLA in place.  

Please click the following links at the start of the meeting if you have not done so previously.

- [View the CSL](https://github.com/finos/FDC3/blob/main/LICENSE.md)
- [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/main/GOVERNANCE.md)
- [Click here to start a PR](https://github.com/finos/FDC3/edit/main/NOTICES.md). 
  - Edit the page to add your details.
  - Hit the save button.
  - Click "Create Pull Request".
  - Click "Accept" on the EasyCLA dialog in the PR's discussion section.
- [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&amp;body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FLICENSE%20.%20Thank%20you!")

## Tracking Attendance

**Note:** Meeting participants are expected to _add a comment to this GitHub issue_ in order that we can track attendance of FDC3 project meetings.  Please do this at the start of the meeting.

## Agenda

- [ ] Convene & roll call, review meeting notices (5mins)
- [ ] Review action items from previous meeting (5mins)
- [ ] Agenda item 1
- [ ] Agenda item 2
- [ ] ...
- [ ] AOB & Adjourn (10mins)

## Decisions Made

- ...

## Action Items

- [ ] ...

## Untracked attendees

| Full name | Affiliation | GitHub username |
|-----------|-------------|-----------------|
|           |             |                 |


================================================
FILE: .github/ISSUE_TEMPLATE/identity-and-security-meeting.md
================================================
---
name: Identity and Security group meeting
about: Overview and notes for a discussion group
title: 'Identity and Security group meeting - mmm dd, yyyy'
labels: identity-security, meeting
assignees: ''
---

## Meeting Date

Thursday DD MMM yyyy - 10am (US eastern timezone EST/EDT) / 3pm (London, GMT/BST)

### Zoom info

Register to the meeting series and receive and invitation:
https://zoom-lfx.platform.linuxfoundation.org/meeting/92600977319?password=17e9e8f8-7d4e-47b4-b8f0-8c68b02005de&invite=true

Join Zoom Meeting:
https://zoom-lfx.platform.linuxfoundation.org/meeting/92600977319?password=17e9e8f8-7d4e-47b4-b8f0-8c68b02005de


## Meeting notices

- FINOS **Project leads** are responsible for observing the FINOS guidelines for [running project meetings](https://community.finos.org/docs/governance/meeting-procedures/). Project maintainers can find additional resources in the [FINOS Maintainers Cheatsheet](https://community.finos.org/docs/finos-maintainers-cheatsheet).

- **All participants** in FINOS project meetings are subject to the [LF Antitrust Policy](https://www.linuxfoundation.org/antitrust-policy/), the [FINOS Community Code of Conduct](https://community.finos.org/docs/governance/code-of-conduct) and all other [FINOS policies](https://community.finos.org/docs/governance/#policies).

- FINOS meetings involve participation by industry competitors, and it is the intention of FINOS and the Linux Foundation to conduct all of its activities in accordance with applicable antitrust and competition laws. It is therefore extremely important that attendees adhere to meeting agendas, and be aware of, and not participate in, any activities that are prohibited under applicable US state, federal or foreign antitrust and competition laws. Please contact <legal@finos.org> with any questions.

- FINOS project meetings may be recorded for use solely by the FINOS team for administration purposes. In very limited instances, and with explicit approval, recordings may be made more widely available.
  
- A Discussion Group has no direct decision-making power regarding the FDC3 standard - rather it is intended that anything they propose or work on will result in proposals (via Github issues and PRs) for the Standards Working Group participants to consider and vote on for inclusion in the standard.

## Participation Requirements

**Note:** Meeting participants are expected to accept the terms of the FDC3 license (Community Specification License), understand the governance process and have a CLA in place.  

Please click the following links at the start of the meeting if you have not done so previously.

- [View the CSL](https://github.com/finos/FDC3/blob/main/LICENSE.md)
- [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/main/GOVERNANCE.md)
- [Click here to start a PR](https://github.com/finos/FDC3/edit/main/NOTICES.md).
  - Edit the page to add your details.
  - Hit the save button.
  - Click "Create Pull Request".
  - Click "Accept" on the EasyCLA dialog in the PR's discussion section.
- [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&amp;body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FLICENSE%20.%20Thank%20you!")

## Agenda

- [ ] Convene & roll call, review meeting notices (5mins)
- [ ] Review action items from previous meeting (5mins)
- [ ] Agenda item 1
- [ ] Agenda item 2
- [ ] ...
- [ ] AOB & Adjourn (5mins)

## Minutes

- ...


================================================
FILE: .github/ISSUE_TEMPLATE/maintainers-meeting.md
================================================
---
name: FDC3 Maintainers Meeting
about: minutes for an FDC3 Maintainers Meeting
title: 'FDC3 Maintainers Meeting - mmm dd, yyyy'
labels: project governance, meeting
assignees: ''
---

## Date

Wednesday DD MMM yyyy - 9am (US eastern timezone EST/EDT) / 2pm (London, GMT/BST)

### Zoom info

See calendar invite

## Meeting notices

- FINOS **Project leads** are responsible for observing the FINOS guidelines for [running project meetings](https://community.finos.org/docs/governance/meeting-procedures/). Project maintainers can find additional resources in the [FINOS Maintainers Cheatsheet](https://community.finos.org/docs/finos-maintainers-cheatsheet).

- **All participants** in FINOS project meetings are subject to the [LF Antitrust Policy](https://www.linuxfoundation.org/antitrust-policy/), the [FINOS Community Code of Conduct](https://community.finos.org/docs/governance/code-of-conduct) and all other [FINOS policies](https://community.finos.org/docs/governance/#policies).

- FINOS meetings involve participation by industry competitors, and it is the intention of FINOS and the Linux Foundation to conduct all of its activities in accordance with applicable antitrust and competition laws. It is therefore extremely important that attendees adhere to meeting agendas, and be aware of, and not participate in, any activities that are prohibited under applicable US state, federal or foreign antitrust and competition laws. Please contact legal@finos.org with any questions.

- FINOS project meetings may be recorded for use solely by the FINOS team for administration purposes. In very limited instances, and with explicit approval, recordings may be made more widely available.

## Participation Requirements

By invitation of the FDC3 maintainers

[View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/main/GOVERNANCE.md)

## Agenda

- [ ] Convene & roll call, review meeting notices (5mins)
- [ ] Review action items from previous meeting (5mins)
- [ ] Agenda item 1
- [ ] Agenda item 2
- [ ] ...
- [ ] AOB & Adjourn (5mins)

## Minutes

- ...


================================================
FILE: .github/ISSUE_TEMPLATE/standard-wg-meeting.md
================================================
---
name: Standard WG Meeting
about: minutes for an FDC3 Standard Working Group Meeting
title: 'Standard WG Meeting - mmm dd, yyyy'
labels: Standard WG Meeting, meeting
assignees: ''
---

## Date

Thursday DD MMM yyyy - 10am (US eastern timezone EST/EDT) / 3pm (London, GMT/BST)

### Zoom info

Register to the meeting series to receive an invitation:
https://zoom-lfx.platform.linuxfoundation.org/meeting/96839365264?password=b5c2bc6a-bc47-43a5-bc49-7be3e0b422c3&invite=true

Join Zoom Meeting:
https://zoom-lfx.platform.linuxfoundation.org/meeting/96839365264?password=b5c2bc6a-bc47-43a5-bc49-7be3e0b422c3


## Meeting notices

- FINOS **Project leads** are responsible for observing the FINOS guidelines for [running project meetings](https://community.finos.org/docs/governance/meeting-procedures/). Project maintainers can find additional resources in the [FINOS Maintainers Cheatsheet](https://community.finos.org/docs/finos-maintainers-cheatsheet).

- **All participants** in FINOS project meetings are subject to the [LF Antitrust Policy](https://www.linuxfoundation.org/antitrust-policy/), the [FINOS Community Code of Conduct](https://community.finos.org/docs/governance/code-of-conduct) and all other [FINOS policies](https://community.finos.org/docs/governance/#policies).

- FINOS meetings involve participation by industry competitors, and it is the intention of FINOS and the Linux Foundation to conduct all of its activities in accordance with applicable antitrust and competition laws. It is therefore extremely important that attendees adhere to meeting agendas, and be aware of, and not participate in, any activities that are prohibited under applicable US state, federal or foreign antitrust and competition laws. Please contact legal@finos.org with any questions.

- FINOS project meetings may be recorded for use solely by the FINOS team for administration purposes. In very limited instances, and with explicit approval, recordings may be made more widely available.

## Participation Requirements

 **Note:** Meeting participants are expected to accept the terms of the FDC3 license (Community Specification License), understand the governance process and have a CLA in place.  

 Please click the following links at the start of the meeting if you have not done so previously.

- [View the CSL](https://github.com/finos/FDC3/blob/main/LICENSE.md)
- [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/main/GOVERNANCE.md)
- [Click here to start a PR](https://github.com/finos/FDC3/edit/main/NOTICES.md).
  - Edit the page to add your details.
  - Hit the save button.
  - Click "Create Pull Request".
  - Click "Accept" on the EasyCLA dialog in the PR's discussion section.
- [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&amp;body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FLICENSE%20.%20Thank%20you!")

## Agenda

- [ ] Convene & roll call, review meeting notices (5mins)
- [ ] Review action items from previous meeting (5mins)
- [ ] Agenda item 1
- [ ] Agenda item 2
- [ ] ...
- [ ] AOB & Adjourn (5mins)

## Minutes

- ...


================================================
FILE: .github/ISSUE_TEMPLATE/use-cases-and-workflows-meeting.md
================================================
---
name: Use Cases and Workflows group meeting
about: Overview and notes for a discussion group
title: 'Use Cases and Workflows group meeting - mmm dd, yyyy'
labels: Use cases, meeting
assignees: ''
---

## Meeting Date

Thursday DD MMM yyyy - 10am (US eastern timezone EST/EDT) / 3pm (London, GMT/BST)

### Zoom info


Register to the meeting series and receive an invitation:
https://zoom-lfx.platform.linuxfoundation.org/meeting/91001005768?password=0c878e0c-b8a4-42d3-9786-e8c1524d6d1c&invite=true

Join Zoom Meeting:
https://zoom-lfx.platform.linuxfoundation.org/meeting/91001005768?password=0c878e0c-b8a4-42d3-9786-e8c1524d6d1c



## Meeting notices

- FINOS **Project leads** are responsible for observing the FINOS guidelines for [running project meetings](https://community.finos.org/docs/governance/meeting-procedures/). Project maintainers can find additional resources in the [FINOS Maintainers Cheatsheet](https://community.finos.org/docs/finos-maintainers-cheatsheet).

- **All participants** in FINOS project meetings are subject to the [LF Antitrust Policy](https://www.linuxfoundation.org/antitrust-policy/), the [FINOS Community Code of Conduct](https://community.finos.org/docs/governance/code-of-conduct) and all other [FINOS policies](https://community.finos.org/docs/governance/#policies).

- FINOS meetings involve participation by industry competitors, and it is the intention of FINOS and the Linux Foundation to conduct all of its activities in accordance with applicable antitrust and competition laws. It is therefore extremely important that attendees adhere to meeting agendas, and be aware of, and not participate in, any activities that are prohibited under applicable US state, federal or foreign antitrust and competition laws. Please contact <legal@finos.org> with any questions.

- FINOS project meetings may be recorded for use solely by the FINOS team for administration purposes. In very limited instances, and with explicit approval, recordings may be made more widely available.
  
- A Discussion Group has no direct decision-making power regarding the FDC3 standard - rather it is intended that anything they propose or work on will result in proposals (via Github issues and PRs) for the Standards Working Group participants to consider and vote on for inclusion in the standard.

## Participation Requirements

**Note:** Meeting participants are expected to accept the terms of the FDC3 license (Community Specification License), understand the governance process and have a CLA in place.  

Please click the following links at the start of the meeting if you have not done so previously.

- [View the CSL](https://github.com/finos/FDC3/blob/main/LICENSE.md)
- [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/main/GOVERNANCE.md)
- [Click here to start a PR](https://github.com/finos/FDC3/edit/main/NOTICES.md).
  - Edit the page to add your details.
  - Hit the save button.
  - Click "Create Pull Request".
  - Click "Accept" on the EasyCLA dialog in the PR's discussion section.
- [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&amp;body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FLICENSE%20.%20Thank%20you!")

## Agenda

- [ ] Convene & roll call, review meeting notices (5mins)
- [ ] Review action items from previous meeting (5mins)
- [ ] Agenda item 1
- [ ] Agenda item 2
- [ ] ...
- [ ] AOB & Adjourn (5mins)

## Minutes

- ...

================================================
FILE: .github/ISSUE_TEMPLATE/web-browsers-meeting.md
================================================
---
name: Web Browsers group meeting
about: Overview and notes for a discussion group
title: 'Web Browsers group meeting - mmm dd, yyyy'
labels: FDC3 for Web Browsers, meeting
assignees: ''
---

## Meeting Date

Thursday DD MMM yyyy - 10am (US eastern timezone EST/EDT) / 3pm (London, GMT/BST)

### Zoom info


Register to the meeting series to receive an invitation:
https://zoom-lfx.platform.linuxfoundation.org/meeting/96615992377?password=88ed4841-afa2-41a6-8de3-e246967e5566&invite=true

Join Zoom Meeting:
https://zoom-lfx.platform.linuxfoundation.org/meeting/96615992377?password=88ed4841-afa2-41a6-8de3-e246967e5566

## Meeting notices

- FINOS **Project leads** are responsible for observing the FINOS guidelines for [running project meetings](https://community.finos.org/docs/governance/meeting-procedures/). Project maintainers can find additional resources in the [FINOS Maintainers Cheatsheet](https://community.finos.org/docs/finos-maintainers-cheatsheet).

- **All participants** in FINOS project meetings are subject to the [LF Antitrust Policy](https://www.linuxfoundation.org/antitrust-policy/), the [FINOS Community Code of Conduct](https://community.finos.org/docs/governance/code-of-conduct) and all other [FINOS policies](https://community.finos.org/docs/governance/#policies).

- FINOS meetings involve participation by industry competitors, and it is the intention of FINOS and the Linux Foundation to conduct all of its activities in accordance with applicable antitrust and competition laws. It is therefore extremely important that attendees adhere to meeting agendas, and be aware of, and not participate in, any activities that are prohibited under applicable US state, federal or foreign antitrust and competition laws. Please contact <legal@finos.org> with any questions.

- FINOS project meetings may be recorded for use solely by the FINOS team for administration purposes. In very limited instances, and with explicit approval, recordings may be made more widely available.
  
- A Discussion Group has no direct decision-making power regarding the FDC3 standard - rather it is intended that anything they propose or work on will result in proposals (via Github issues and PRs) for the Standards Working Group participants to consider and vote on for inclusion in the standard.

## Participation Requirements

**Note:** Meeting participants are expected to accept the terms of the FDC3 license (Community Specification License), understand the governance process and have a CLA in place.  

Please click the following links at the start of the meeting if you have not done so previously.

- [View the CSL](https://github.com/finos/FDC3/blob/main/LICENSE.md)
- [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/main/GOVERNANCE.md)
- [Click here to start a PR](https://github.com/finos/FDC3/edit/main/NOTICES.md).
  - Edit the page to add your details.
  - Hit the save button.
  - Click "Create Pull Request".
  - Click "Accept" on the EasyCLA dialog in the PR's discussion section.
- [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&amp;body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FLICENSE%20.%20Thank%20you!")

## Agenda

- [ ] Convene & roll call, review meeting notices (5mins)
- [ ] Review action items from previous meeting (5mins)
- [ ] Agenda item 1
- [ ] Agenda item 2
- [ ] ...
- [ ] AOB & Adjourn (5mins)

## Minutes

- ...

## Action Items

- [ ] ...

## Untracked attendees

| Full name | Affiliation | GitHub username |
|-----------|-------------|-----------------|
|           |             |                 |


================================================
FILE: .github/pull_request_template.md
================================================
## Describe your change

<!--- Describe your change here-->

### Related Issue
<!--- This project prefers to accept pull requests related to open issues -->
<!--- If suggesting a new feature or change, please discuss it in an issue first -->
<!--- Please [link to the issue here](https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue) by writing "resolves #123456" here: -->

## Contributor License Agreement

<!--- All contributions to FDC3 must be made under an active contributor license agreement and the [Community Specification License](https://github.com/finos/FDC3/blob/main/LICENSE.md). This will be checked by the EasyCLA tool (https://easycla.lfx.linuxfoundation.org/) that runs automatically on every PR. If you've not contributed to FDC3 before, look for a comment on your PR shortly after it is raised and follow the instructions to establish a CLA or have it acknowledged by the EasyCLA tool. -->

- [ ] I acknowledge that a contributor license agreement is required and that I have one in place or will seek to put one in place ASAP.

## Review Checklist

<!--- 
If you've changed docs or schemas make sure you run code and documentation tasks before raising your PR.
To do so, run: 
    - Code generation and build: `npm run build`
    - Docs generation and preview `cd website; npm run start`
Once run, any modified files can be committed and added to your PR for review.
--->
<!--- Checklist to be completed by reviewers, and pre-checked by the authors of a PR -->

- [ ] **Issue**: If a change was made to the FDC3 Standard, was an issue linked above?
- [ ] **CHANGELOG**: Is a *CHANGELOG.md* entry included?
- [ ] **API changes**: Does this PR include changes to any of the FDC3 APIs (`DesktopAgent`, `Channel`, `PrivateChannel`, `Listener`, `Bridging`)?
  - [ ] **Docs & Sources**: If yes, were both documentation (/docs) and sources updated?<br/>
        *JSDoc comments on interfaces and types should be matched to the main documentation in /docs*
  - [ ] **Conformance tests**: If yes, are conformance test definitions (/toolbox/fdc3-conformance) still correct and complete?<br/>
        *Conformance test definitions should cover all **required** aspects of an FDC3 Desktop Agent implementation, which are usually marked with a **MUST** keyword, and  optional features (**SHOULD** or **MAY**) where the format of those features is defined*
  - [ ] **Schemas**: If yes, were changes applied to the Bridging and FDC3 for Web protocol schemas?<br/>
        *The Web Connection protocol and Desktop Agent Communication Protocol schemas must be able to support all necessary aspects of the Desktop Agent API, while Bridging must support those aspects necessary for Desktop Agents to communicate with each other*
    - [ ] If yes, was code generation (`npm run build`) run and the results checked in?<br/>
        *Generated code will be found at `/src/api/BrowserTypes.ts` and/or `/src/bridging/BridgingTypes.ts`*
- [ ] **Context types**: Were new Context type schemas created or modified in this PR?
  - [ ] Were the [field type conventions](https://fdc3.finos.org/docs/context/spec#field-type-conventions) adhered to?
  - [ ] Was the `BaseContext` schema applied via `allOf` (as it is in existing types)?
  - [ ] Was a `title` and `description` provided for all properties defined in the schema?
  - [ ] Was at least one example provided?
  - [ ] Was code generation (`npm run build`) run and the results checked in?<br/>
        *Generated code will be found at `/src/context/ContextTypes.ts`*
- [ ] **Intents**: Were new Intents created in this PR?
  - [ ] Were the [intent name prefixes](https://fdc3.finos.org/docs/intents/spec#intent-name-prefixes) and other [naming conventions & characteristics](https://fdc3.finos.org/docs/intents/spec#naming-conventions) adhered to?
  - [ ] Was the new intent added to the list in the [Intents Overview](https://fdc3.finos.org/docs/intents/spec#standard-intents)?


================================================
FILE: .github/workflows/coverage.yml
================================================
name: Node.js CI Tests and Coverage

# Controls when the workflow will run on any branch
on:
  push:
    branches:
      - main
  pull_request:

# Allows Coverage to be written back as a PR comment
permissions: 
  pull-requests: write

# Define the jobs for this workflow
jobs:
  test:
    runs-on: ubuntu-latest

    permissions:
      contents: read
      id-token: write
      pull-requests: write

    steps:
    - name: Checkout repository
      uses: actions/checkout@v6

    - name: Set up Node.js
      uses: actions/setup-node@v6
      with:
        node-version: 20.x

    - name: Install dependencies
      run: npm ci

    - name: Lint
      run: npm run lint

    - name: Run tests
      run: npm run test

    - name: Codecov
      uses: codecov/codecov-action@v6
      with:
        use_oidc: true


================================================
FILE: .github/workflows/cve-scanning.yml
================================================
name: Node.js CVE Scanning

on:
  pull_request:
    types: [opened, reopened, synchronize, ready_for_review]
    paths:
      - 'allow-list.json'
      - 'package.json'
      - 'toolbox/fdc3-workbench/package.json'
      - '.github/workflows/cve-scanning.yml'
      - 'website/package.json'
  # push:
  #   paths:
  #     - 'package.json'
  #     - 'toolbox/fdc3-workbench/package.json'
  #     - '.github/workflows/cve-scanning.yml'
  #     - 'website/package.json'
  schedule:
    # Run every day at 5am and 5pm
    - cron: '0 5,17 * * *'

permissions:
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [20]
    steps:
      - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
        with:
          node-version: ${{ matrix.node-version }}
          
      - run: npm install
      
      - run: npm install
        working-directory: toolbox/fdc3-workbench

      - run: npm install
        working-directory: website

      - run: npx --yes auditjs ossi --whitelist allow-list.json -u ${{ secrets.OSS_INDEX_USERNAME }} -p ${{ secrets.OSS_INDEX_TOKEN }}
        if: success() || failure()
        
      - run: npx --yes auditjs ossi --whitelist ../allow-list.json -u ${{ secrets.OSS_INDEX_USERNAME }} -p ${{ secrets.OSS_INDEX_TOKEN }}
        working-directory: website
        if: success() || failure()


================================================
FILE: .github/workflows/release.yml
================================================

name: Publish To NPM

on:
  release:
    types: [published]

permissions:
  contents: read
  id-token: write     # required for npm provenance
  packages: write     # required for GitHub Packages publish

jobs:
  build_and_pack:
    name: Build and pack workspaces (once)
    runs-on: ubuntu-latest
    outputs:
      is_prerelease: ${{ steps.version.outputs.is_prerelease }}
      publish_tag: ${{ steps.version.outputs.publish_tag }}
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4

      - name: Configure Node
        uses: actions/setup-node@v4
        with:
          node-version: 22

      - name: Install dependencies
        run: npm ci

      - name: Lint
        run: npm run lint

      - name: Run tests
        run: npm run test

      - name: Build
        run: npm run build

      - name: Verify version consistency across workspaces
        run: npm run version-check

      # Compute prerelease flag & desired dist-tag from top-level package.json version
      - name: Determine prerelease tag
        id: version
        run: |
          set -euo pipefail
          VERSION="$(node -p 'JSON.parse(require("fs").readFileSync("./package.json","utf8")).version')"
          echo "Detected version: $VERSION"

          # If version contains a hyphen, it's a prerelease (e.g., 1.2.3-alpha.1)
          if [[ "$VERSION" == *-* ]]; then
            echo "is_prerelease=true"  >> "$GITHUB_OUTPUT"
            echo "publish_tag=prerelease" >> "$GITHUB_OUTPUT"
            echo "This is a prerelease. Will use tag 'prerelease'."
          else
            echo "is_prerelease=false" >> "$GITHUB_OUTPUT"
            echo "publish_tag=latest"  >> "$GITHUB_OUTPUT"
            echo "This is a stable release. Will use tag 'latest'."
          fi

      # Create tarballs for each public workspace so we can publish the exact same artifacts twice
      - name: Pack workspaces (skip private)
        run: |
          set -euo pipefail
          for ws in $(node -e '
            const fs = require("fs");
            const read = (p) => JSON.parse(fs.readFileSync(p, "utf8"));
            const root = read("./package.json");
            for (const dir of root.workspaces || []) {
              const pkg = read("./" + dir + "/package.json");
              if (!pkg.private) console.log(dir);
            }
          '); do
            echo "Packing $ws ..."
            npm pack --workspace "$ws"
          done
          echo "Packed tarballs:"
          ls -1 *.tgz

      - name: Upload packed artifacts
        uses: actions/upload-artifact@v4
        with:
          name: npm-tarballs
          path: |
            ./*.tgz
          if-no-files-found: error
          retention-days: 7

  publish_npm:
    name: Publish to npmjs.org
    runs-on: ubuntu-latest
    needs: build_and_pack
    steps:
      - name: Checkout repo (required for npm provenance)
        uses: actions/checkout@v4

      - name: Download packed artifacts
        uses: actions/download-artifact@v4
        with:
          name: npm-tarballs
          path: ./dist-tarballs

      - name: Configure Node for npmjs.org
        uses: actions/setup-node@v4
        with:
          node-version: 22
          registry-url: https://registry.npmjs.org
          always-auth: true

      - name: Publish tarballs to npmjs.org (with provenance and dist-tag)
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}   # npm automation token
          PUBLISH_TAG: ${{ needs.build_and_pack.outputs.publish_tag }}
        run: |
          set -euo pipefail
          shopt -s nullglob
          for tgz in ./dist-tarballs/*.tgz; do
            echo "Publishing $tgz to npmjs.org with tag '${PUBLISH_TAG}' ..."
            # --access public needed for first publish of public packages
            npm publish "$tgz" --provenance --access public --tag "${PUBLISH_TAG}"
          done

  publish_github:
    name: Publish to GitHub Packages
    runs-on: ubuntu-latest
    needs: build_and_pack
    steps:
      - name: Download packed artifacts
        uses: actions/download-artifact@v4
        with:
          name: npm-tarballs
          path: ./dist-tarballs

      - name: Configure Node for GitHub Packages
        uses: actions/setup-node@v4
        with:
          node-version: 22
          registry-url: https://npm.pkg.github.com
          scope: '@finos'
          always-auth: true

      - name: Publish tarballs to GitHub Packages (with dist-tag)
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}  # has packages: write via permissions
          PUBLISH_TAG: ${{ needs.build_and_pack.outputs.publish_tag }}
        run: |
          set -euo pipefail
          shopt -s nullglob
          for tgz in ./dist-tarballs/*.tgz; do
            echo "Publishing $tgz to GitHub Packages with tag '${PUBLISH_TAG}' ..."
            # GitHub Packages does not support npm provenance; omit --provenance and --access
            npm publish "$tgz" --tag "${PUBLISH_TAG}"
          done


================================================
FILE: .github/workflows/scorecard.yml
================================================
# This workflow uses actions that are not certified by GitHub. They are provided
# by a third-party and are governed by separate terms of service, privacy
# policy, and support documentation.

name: Scorecard supply-chain security
on:
  # For Branch-Protection check. Only the default branch is supported. See
  # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
  branch_protection_rule:
  # To guarantee Maintained check is occasionally updated. See
  # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
  schedule:
    # “At 17:05 on Friday”
    - cron: '5 17 * * 5'
  push:
    branches: [ "main" ]

# Declare default permissions as read only.
permissions: read-all

jobs:
  analysis:
    name: Scorecard analysis
    runs-on: ubuntu-latest
    permissions:
      # Needed to upload the results to code-scanning dashboard.
      security-events: write
      # Needed to publish results and get a badge (see publish_results below).
      id-token: write
      # Uncomment the permissions below if installing in a private repository.
      # contents: read
      # actions: read

    steps:
      - name: "Checkout code"
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
        with:
          persist-credentials: false

      - name: "Run analysis"
        uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0
        with:
          results_file: results.sarif
          results_format: sarif
          # (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
          # - you want to enable the Branch-Protection check on a *public* repository, or
          # - you are installing Scorecard on a *private* repository
          # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional.
          repo_token: ${{ secrets.SCORECARD_TOKEN }}

          # Public repositories:
          #   - Publish results to OpenSSF REST API for easy access by consumers
          #   - Allows the repository to include the Scorecard badge.
          #   - See https://github.com/ossf/scorecard-action#publishing-results.
          # For private repositories:
          #   - `publish_results` will always be set to `false`, regardless
          #     of the value entered here.
          publish_results: false

      # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
      # format to the repository Actions tab.
      - name: "Upload artifact"
        uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
        with:
          name: SARIF file
          path: results.sarif
          retention-days: 5

      # Upload the results to GitHub's code scanning dashboard (optional).
      # Commenting out will disable upload of results to your repo's Code Scanning dashboard
      - name: "Upload to code-scanning"
        uses: github/codeql-action/upload-sarif@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8
        with:
          sarif_file: results.sarif


================================================
FILE: .github/workflows/semgrep.yml
================================================
name: Static code analysis

on:
  pull_request:
    types: [opened, reopened, synchronize, ready_for_review]
  schedule:
    # Run every day at 5am and 5pm
    - cron: '0 5,17 * * *'

permissions:
  contents: read

jobs:
  semgrep:
    name: run-semgrep
    runs-on: ubuntu-latest
    container:
      image: returntocorp/semgrep
    steps:
    - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
    - run: semgrep scan --error --config auto
      env:
        SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}


================================================
FILE: .gitignore
================================================
*.log
.DS_Store
node_modules
dist
coverage
.project

lib/core/metadata.js
lib/core/MetadataBlog.js

website/translated_docs
website/build/
website/static/toolbox
website/node_modules
website/i18n/*
website/.docusaurus/
website/static/schemas/next/*
website/static/ui
test-results.xml


.idea/
*.iml
website/.yarn
.nyc_output
toolbox/fdc3-for-web/fdc3-web-impl/generated/
cucumber-report.html
nyc-coverage-report/
.history/
.rollup.cache
tsconfig.tsbuildinfo
.vscode/launch.json

================================================
FILE: .husky/pre-commit
================================================
#!/bin/sh
npx lint-staged 


================================================
FILE: .node-version
================================================
22


================================================
FILE: .npmrc
================================================
# Omit the registry url which can be an organization's internal npm mirror when generating package-lock.json file
# see: https://github.com/npm/cli/pull/4874
# and https://docs.npmjs.com/cli/v8/using-npm/config#omit-lockfile-registry-resolved
omit-lockfile-registry-resolved = true

================================================
FILE: .nvmrc
================================================
22


================================================
FILE: .prettierignore
================================================
# ignore files
*.md
*.html
*.yml
*.yaml
*.json

# ignore folders
website
dist
src/app-directory/*/target
node_modules
coverage
.nyc_output
build

================================================
FILE: .semgrepignore
================================================
website/**

# Just used for build so ignoring
s2tQuicktypeUtil.cjs
t2sQuicktypeUtil.js

# API schema set for localhost gets picked up by semgrep rule
schemas/bridgingAsyncAPI/bridgingAsyncAPI.json

# demo apps get picked up for not having integrity headers
toolbox/fdc3-for-web/demo/src/client/apps/**

# Test utilities using controlled paths (false positive for path traversal)
packages/testing/src/steps/generic.impl.ts


================================================
FILE: .vscode/settings.json
================================================
{
    "typescript.tsdk": "node_modules/typescript/lib",
    "editor.tabSize": 2,
    "editor.insertSpaces": true
}

================================================
FILE: CHANGELOG.md
================================================
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## [Unreleased]

### Added

* Added Go language binding. ([#1483](https://github.com/finos/FDC3/pull/1483))
* Added details of and procedures for resolving fully-qualified appIds and unqualified appIds in the API and Bridging Parts of the Standard. ([#1523](https://github.com/finos/FDC3/pull/1523))
* Added clarification regarding expected behavior upon repeated calls to `addContextListener` on same or overlapping types (allowed) and `addIntentListener` on same intent (rejected; new error type added). ([#1394](https://github.com/finos/FDC3/pull/1394))
* Added `clearContext` function and associated `contextClearedEvent` to the `Channel` API, to be able to clear specific or all context types from the channel. ([#1379](https://github.com/finos/FDC3/pull/1379))
* Added `version-check` script and integrated it into the `syncpack` script and Publish To NPM workflow to prevent version mismatches causing incorrect npm dist-tags. ([#1864](https://github.com/finos/FDC3/pull/1864))

### Changed

* Updated "Releasing FDC3 to NPM" instructions in README to reflect the current GitHub Actions release workflow. ([#1864](https://github.com/finos/FDC3/pull/1864))

### Deprecated

### Fixed

## [npm v2.2.2] - 2026-04-13

### Added

* Added a notes field to Trade type ([#1563](https://github.com/finos/FDC3/pull/1563))
* Added a notes field to Order and Product types ([#1597](https://github.com/finos/FDC3/pull/1597))
* Added dynamic intent listener support to the reference Desktop Agent implementation ([#1613](https://github.com/finos/FDC3/pull/1613))
* Ported FDC3 Conformance Project as-is into the FDC3 Monorepo, just including minimal fixes for typescript compilation. ([#1576](https://github.com/finos/FDC3/pull/1576))
* Added Conformance tests for FDC3 2.2 ([#1586](https://github.com/finos/FDC3/pull/1586))
* Added custom mocha test runner for conformance tests to better display test progress. ([#1769](https://github.com/finos/FDC3/pull/1769))

### Changed

* Converted the standalone app-directory specification test from `src/app-directory/specification/test/` into a test that runs as part of CI. ([#1720](https://github.com/finos/FDC3/pull/1720))
* Fix for channel change listeners not sending addEventListenerRequests ([#1606](https://github.com/finos/FDC3/pull/1606))
* When adding a listener on the current channel, the payload.channelId should be null ([#1611](https://github.com/finos/FDC3/pull/1611))
* Increased FDC3 Conformance Test WindowCloseWaitTime to 2000 (from 1000). ([#1586](https://github.com/finos/FDC3/issues/1586))
* Enhanced method binding for FDC3 API objects to support destructuring. All public methods of `Channel`, `PrivateChannel`, and `IntentResolution` objects are now properly bound to their instances using `.bind(this)` in their constructors. ([#1645](https://github.com/finos/FDC3/issues/1645))
* Changed fdc3-web-impl to not deliver broadcast messages back to the sending application, as recommended (SHOULD) in the Standard. [#1749](https://github.com/finos/FDC3/pull/1749)
* Removed version number prefix from conformance test names and implementation to simplify future maintenance. ([#1726](https://github.com/finos/FDC3/pull/1726))
* Updated workbench from MUI 4 to MUI 5 ([#1714](https://github.com/finos/FDC3/pull/1714))
* Modernized and standardised eslint configuration in all packages. ([#1823](https://github.com/finos/FDC3/pull/1823))
* Reduced log messages in fdc3-web-impl to the debug level and removed logging of all messages recevied in the BroadcastHandler. ([#1851](https://github.com/finos/FDC3/pull/1851))

### Fixed

* Added support for passing `originatingApp` metadata to context listeners in `fdc3-agent-proxy` and `fdc3-web-impl`, matching the `ContextMetadata` spec for `addContextListener` callbacks. ([#1819](https://github.com/finos/FDC3/pull/1819))
* Corrected /toolbox/fdc3-for-web/demo to only use MessagePort communication when 'Parent Post-Message' selected in the demo. ([#1695](https://github.com/finos/FDC3/pull/1695))
* Corrected the property set in WCP1Hello by getAgent that indicates whether an intent resolver is needed. ([#1684](https://github.com/finos/FDC3/issues/1684))
* Added unit tests to the fdc3-context package for validating context examples are valid schema.
* Reverted schema of `fdc3.timeRange` context type back to use anyOf in place of oneOf for the `startTime` and `endTime` property combinations.  This will allow existence of one of either, or both, and pass schema validation.  When defined with oneOf, validation would fail due to multiple entries being valid and it could not identify which to apply. ([#1592](https://github.com/finos/FDC3/issues/1592))
* Reverted schema of `fdc3.interaction` context type back to use anyOf in place of oneOf for the `interactionType` property.  Since it could be a string enum or a string, validation could not differentiate. ([#1598](https://github.com/finos/FDC3/issues/1598))
* Fixed `fdc3.timeRange` context example to use correctly formatted dateTime. ([#1599](https://github.com/finos/FDC3/issues/1599))
* Removed broken sourcemaps from npm package output ([#1589](https://github.com/finos/FDC3/issues/1589))
* Fixed the `fdc3-commonjs` build to include `d.ts` files and corrects the config for easier consumption in different environments. ([#1694](https://github.com/finos/FDC3/issues/1694))
* Updated .NET API documentation for IListener.Unsubscribe to be async for 2.2 and current. ([#1690](https://github.com/finos/FDC3/pull/1690))
* Fix for channel change listeners not sending addEventListenerRequests ([#1606](https://github.com/finos/FDC3/pull/1606))
* Fix to ensure that Adding A Channel Change Event Listener Doesn't Send addEventListenerRequest - Conformance 2.2 ([#1606](https://github.com/finos/FDC3/pull/1606))
* Updated Conformance tests to allow agents that fully qualify app Ids (as recommended in the Standard) to pass the conformance tests ([#1767](https://github.com/finos/FDC3/pull/1767))
* Fixed import file extensions and module type to be esm module compliant ([#1677](https://github.com/finos/FDC3/pull/1677))
* Added mising context types to types and enums in. ContextTypes.ts and implemented tests to ensure they stay in sync with the fdc3-context package ([#1796](https://github.com/finos/FDC3/pull/1796))
* Allowed retrieval of User channels as App channels via getOrCreateChannel and getCurrentChannel in fdc3-web-impl. ([#1835](https://github.com/finos/FDC3/pull/1835))
* Corrected description of UCBasic3 in the fdc-conformance framework implementation. ([#1823](https://github.com/finos/FDC3/pull/1823))
* Fixed a race condition in fdc3-workbench's context store which caused the context listeners on user channels to miss replay of current context in some cases. ([#1823](https://github.com/finos/FDC3/pull/1823))
* Fixed lint in the fdc3-workbench implementation. ([#1823](https://github.com/finos/FDC3/pull/1823))
* Stopped fdc3-workbench flagging FDC3 version 2.2 as unsupported. ([#1841](https://github.com/finos/FDC3/pull/1841))
* Resolved vulnerable dependencies (esbuild, serialize-javascript, elliptic) and consolidated shared devDependencies to simplify future maintenance. ([#1841](https://github.com/finos/FDC3/pull/1841))
* Fixed the lack of handling of WCP6Disconnect messages in MessagePort example in the FDC3 Web reference implementation. ([#1854](https://github.com/finos/FDC3/pull/1854))
* Fixed handling of DesktopAgents that start apps joined to a user channel by the agent-proxy by retrieving the current user channel on start-up. ([#1858](https://github.com/finos/FDC3/pull/1858))
* Fixed a race condition in `DefaultChannelSupport` initialization where the current user channel was retrieved asynchronously without being awaited, which could cause apps started on a user channel by the Desktop Agent to miss their initial channel assignment. ([#1858](https://github.com/finos/FDC3/pull/1858))

## [FDC3 Standard 2.2](https://github.com/finos/FDC3/compare/v2.1..v2.2) - 2025-03-12

### Added

* Added clarification that `id` field values SHOULD always be strings to context schema definition (a restriction that can't easily be represented in the generated types). ([#1149](https://github.com/finos/FDC3/pull/1149))
* Added requirement that Standard versions SHOULD avoid the use unions in context and API definitions wherever possible as these can be hard to replicate and MUST avoid unions of primitive types as these can be impossible to replicate in other languages. ([#120](https://github.com/finos/FDC3/pull/1200))
* Added `addEventListener` to the `DesktopAgent` API to provide support for event listener for non-context and non-intent events, including a `userChannelChanged` event ([#1207](https://github.com/finos/FDC3/pull/1207))
* Added an `async` `addEventListener` function to the `PrivateChannel` API to replace the deprecated, synchronous `onAddContextListener`, `onUnsubscribe` and `onDisconnect` functions and to keep consistency with the DesktopAgent API. ([#1305](https://github.com/finos/FDC3/pull/1305))
* Added reference materials and supported platforms information for FDC3 in .NET via the [finos/fdc3-dotnet](https://github.com/finos/fdc3-dotnet) project. ([#1108](https://github.com/finos/FDC3/pull/1108))
* Specifications for getAgent() and Browser-Resident Desktop Agents. ([#1191](https://github.com/finos/FDC3/pull/1191))
* Specification for Preload Desktop Agents. This content was previously in the supported platforms section. It had been revised and amended to include recommended behavior related to the new validateAppIdentity() function. ([#1191](https://github.com/finos/FDC3/pull/1191))
* Typescript definitions for getAgent() and related types. ([#1191](https://github.com/finos/FDC3/pull/1191))
* Typescript definitions for Desktop Agent Communication Protocol (DACP). These constitute the internal "wire protocol" that the "@finos/fdc3" library uses to communicate with Browser-Resident DAs. ([#1191](https://github.com/finos/FDC3/pull/1191))
* Typescript definitions for Web Connection Protocol (WCP). These constitute the messages used to establish connectivity between "@finos/fdc3" and a Browser-Resident DA. ([#1191](https://github.com/finos/FDC3/pull/1191))
* Added support for broadcast actions to the `fdc3.action` context type, allowing an Action to represent the broadcast of a specified context to an app or user channel. ([#1368](https://github.com/finos/FDC3/pull/1368))
* Added utility functions `isStandardContextType(contextType: string)`, `isStandardIntent(intent: string)`,`getPossibleContextsForIntent(intent: StandardIntent)`. ([#1139](https://github.com/finos/FDC3/pull/1139))
* Added support for event listening outside of intent or context listnener. Added new function `addEventListener`, type `EventHandler`,  enum `FDC3EventType` and interfaces `FDC3Event` and `FDC3ChannelChangedEvent`. ([#1207](https://github.com/finos/FDC3/pull/1207))
* Added new `CreateOrUpdateProfile` intent. ([#1359](https://github.com/finos/FDC3/pull/1359))
* Added conformance tests into the FDC3 API documentation in the current version and back-ported into 2.0 and 2.1. Removed outdated 1.2 conformance tests (which are preserved in the older 2.0 and 2.1 versions). ([#1417](https://github.com/finos/FDC3/pull/1417)).
* Added conformance tests to documentation for features introduced in FDC3 2.2 (`fdc3.addEventListener`, `PrivateChannel.addEventListener` and `getAgent`). ([#1425](https://github.com/finos/FDC3/pull/1425))
* Added separate `fdc3-commonjs` module for compatibility with older projects that use CommonJS. ([#1452](https://github.com/finos/FDC3/pull/1452))
* Added testing policy to [Contributing](CONTRIBUTING) page to address ([810](https://github.com/finos/FDC3/issues/810))
* Added the ability to control logging to the JS console from getAgent() and the DesktopAgentProxy via arguments to getAgent(). ([#1495](https://github.com/finos/FDC3/pull/1495))
* Added the ability for a browser-based DesktopAgent to control the timeouts used in the DesktopAgentProxy when making calls to it, via properties in WCP3Handshake message. ([#1497](https://github.com/finos/FDC3/pull/1497))
* Added .NET docs for Events to API reference. ([#1441](https://github.com/finos/FDC3/pull/1441))
* Setup package publishing for mono-repo packages. ([#1520](https://github.com/finos/FDC3/pull/1520))
* Implementation PR for FDC3 for the Web ([#896](https://github.com/finos/FDC3/pull/896))
  * resolves ([#1209](https://github.com/finos/FDC3/issues/1209))
  * resolves ([#1297](https://github.com/finos/FDC3/issues/1297))
  * resolves ([#1429](https://github.com/finos/FDC3/issues/1429))
  * resolves ([#1430](https://github.com/finos/FDC3/issues/1430))
  * resolves ([#1431](https://github.com/finos/FDC3/issues/1431))
  * resolves ([#1432](https://github.com/finos/FDC3/issues/1432))
  * resolves ([#1433](https://github.com/finos/FDC3/issues/1433))
  * resolves ([#1468](https://github.com/finos/FDC3/issues/1468))
  * resolves ([#810](https://github.com/finos/FDC3/issues/810))
  * resolves ([#832](https://github.com/finos/FDC3/issues/832))
  * resolves ([#1487](https://github.com/finos/FDC3/issues/1487))
  * resolves ([#1488](https://github.com/finos/FDC3/issues/1488))
* Adjusted reference Desktop Agent implementation for FDC3 for Web to open a new app instance when raiseIntent is called with an appId but no instanceId ([#1556](https://github.com/finos/FDC3/pull/1556))

### Changed

* `window.fdc3` is now an optional property and may or may not be defined. Applications should now use `getAgent()` as the recommended way of retrieving a reference to the FDC3 API. ([#1386](https://github.com/finos/FDC3/pull/1386))
* `Listener.unsubscribe()` was made async (the return type was changed from `void` to `Promise<void>`) for consistency with the rest of the API. ([#1305](https://github.com/finos/FDC3/pull/1305))
* Added reference materials and supported platforms information for FDC3 in .NET via the [finos/fdc3-dotnet](https://github.com/finos/fdc3-dotnet) project. ([#1108](https://github.com/finos/FDC3/pull/1108))
* The supported platforms page in the FDC3 documentation was moved into the API section as the information it provides all relates to FDC3 Desktop Agent API implementations. ([#1108](https://github.com/finos/FDC3/pull/1108))
* FDC3 apps are now encouraged to instantiate their FDC3 interface (DesktopAgent) using the `getAgent()` function provided by the `@finos/fdc3` module. This will allow apps to interoperate in either traditional Preload DAs (i.e. Electron) as well as the new Browser-Resident DAs. ([#1191](https://github.com/finos/FDC3/pull/1191))
* `ContextType` and `Intent` (`string`) types were created for use in DesktopAgent API signatures - they are unions of standardized values and `string`, enabling autocomplete/IntelliSense in IDEs when working with the FDC3 API. ([#1139](https://github.com/finos/FDC3/pull/1139))
* SessionStorage use by `getAgent` was updated to scope the stored data by `window.name` and the app's `identityUrl`. ([#1442](https://github.com/finos/FDC3/pull/1442))
* FDC3 Workbench updated to use `getAgent()` rather than `fdc3Ready()`

### Deprecated

* Made `IntentMetadata.displayName` optional as it is deprecated. ([#1280](https://github.com/finos/FDC3/pull/1280))
* Deprecated `PrivateChannel`'s synchronous `onAddContextListener`, `onUnsubscribe` and `onDisconnect` functions in favour of an `async` `addEventListener` function consistent with the one added to `DesktopAgent` in #1207. ([#1305](https://github.com/finos/FDC3/pull/1305))
* The `ContextTypes` and `Intents` enums were deprecated in favour of the new ContextType and Intent unions. ([#1139](https://github.com/finos/FDC3/pull/1139))

### Fixed

* Spin off fileAttachment into its own schema, and correct related examples ([1255](https://github.com/finos/FDC3/issues/1255))
* Added missing `desktopAgent` field to ImplementationMetadata objects returned for all agents connect to a DesktopAgent bridge in Connection Step 6 connectAgentsUpdate messages and refined the schema used to collect this info in step 3 handshake. ([#1177](https://github.com/finos/FDC3/pull/1177))
* Removed the `version` field from `IntentResolution` as there are no version fields for intents in the FDC3 API definitions and hence the field has no purpose. ([#1170](https://github.com/finos/FDC3/pull/1170))
* Fixed error in the Client-side example from `PrivateChannel` and `addIntentListener` by correcting `id.symbol` to `id.ticker` to align with the `fdc3.instrument` context. ([#1314](https://github.com/finos/FDC3/pull/1314))
* Added missing `resultType` argument to `findIntent` agent request in the Bridging Schema. ([#1154](https://github.com/finos/FDC3/pull/1154))
* Added missing `resultType` argument to `findIntentByContext` agent request in the Bridging Schema. ([#1212](https://github.com/finos/FDC3/pull/1212))
* Added missing id and name fields from the context base schema to respective context schemas (`Contact`, `ContactList`, `Country`, `InstrumentList`, `OrderList`, `Organization`, `Portfolio`, `Position`, `TradeList`). ([#1360](https://github.com/finos/FDC3/pull/1360))
* Revised FDC3 charter to include well-known language from the FDC3 introduction, better describe FDC3's scope, focus on financial applications, update application types, etc. ([#1079](https://github.com/finos/FDC3/pull/1079))
* Ensured that `PrivateChannelEvent` extends `ApiEvent` in both sourcecode and documentation. ([#1474](https://github.com/finos/FDC3/pull/1474))
* Standardized prettier config for fdc3-workbench with other packages. ([#1520](https://github.com/finos/FDC3/pull/1520))
* Ensured that user channel changes made by the DA without a call to joinUserChannel (i.e. those driven by an external channel selector) are applied by the Desktop Agent Proxy. ([#1541](https://github.com/finos/FDC3/pull/1541))
* Ensured that the FDC3 Workbench and apps like it that are migrated to getAgent will still work with FDC3 1.2 Preload-based DAs by not requiring appMetadata properties to be present in getInfo() responses. ([#1550](https://github.com/finos/FDC3/pull/1550))
* Bound all DesktopAgentProxy functions to enable destructuring. ([#1550](https://github.com/finos/FDC3/pull/1550))
* Fixed polyfill of node.js JS modules in fdc3-workbench. ([#1550](https://github.com/finos/FDC3/pull/1550))

## [npm v2.1.1] - 2024-06-28

### Fixed

* Corrected inconsistent camel-casing of the `fdc3.timeRange` context type which appeared as `fdc3.timerange` in a number of places. ([#1240](https://github.com/finos/FDC3/pull/1240))
* Corrected an error in the `fdc3.TransactionResult` schema which resulted in the `message` property being omitted from the generated TypeScript types for it. ([#1251](https://github.com/finos/FDC3/pull/1251))

## [FDC3 Standard 2.1](https://github.com/finos/FDC3/compare/v2.0..v2.1) - 2023-09-13

### Added

* Added `CreateInteraction` intent. To be used when a user wants to record an interaction into a system.  New context `Interaction` also introduced. An interaction might be a call, IM, email, a meeting (physical or virtual) or the preparation of some specialist data. ([#747](https://github.com/finos/FDC3/pull/747))
* Added `TransactionResult` context. A context type representing the result of a transaction initiated via FDC3. Its purpose is to provide a status and message (where needed) for the transaction and MAY wrap a returned context object. ([#761](https://github.com/finos/FDC3/pull/761))
* Added a `MalformedContext` error to the `OpenError`, `ChannelError` and `ResolveError` enumerations, to be used when `broadcast`, `open`, `findIntents`, `raiseIntents`, and other related functions are passed an invalid context Object. ([#972](https://github.com/finos/FDC3/pull/972))
* Added error examples to the /v2 App Directory API routes ([#973](https://github.com/finos/FDC3/pull/973))
* Added a `SendChatMessage` intent to be used when a user wants to send a message to an existing chat room. ([#794](https://github.com/finos/FDC3/pull/794))
* Added a context type representing a chat message (`fdc3.chat.message`). ([#794](https://github.com/finos/FDC3/pull/794))
* Added a context type representing a chat room (`fdc3.chat.room`). ([#794](https://github.com/finos/FDC3/pull/794))
* Added a chat `Message` type in order to describe messages with rich content and attachments. ([#779](https://github.com/finos/FDC3/pull/779))
* Added an `Action` type, encapsulating either a `Context` or the association of a `Context` with an `Intent` inside another object.  ([#779](https://github.com/finos/FDC3/pull/779))
* Added a `ViewChat` Intent to be used when a user wants to open an existing chat room. ([#796](https://github.com/finos/FDC3/pull/796))
* Added a `ViewMessages` intent to be used when a user wants to search and see a list of messages. ([#797](https://github.com/finos/FDC3/pull/797))
* Added a context type representing a ChatSearchCriteria (`fdc3.chat.searchCriteria`). ([#797](https://github.com/finos/FDC3/pull/797))
* Added an indication that applications, that can be launched to receive intents or context via a raised intent or open with context, SHOULD add their context or intent listeners via the API within 15 seconds, and that Desktop Agents MUST allow at least a 15 second timeout for them to do so, and MAY set a longer timeout  ([#987](https://github.com/finos/FDC3/pull/987))
* Added [@experimental](https://fdc3.finos.org/docs/fdc3-compliance#experimental-features) `Order`, `OrderList`, `Product`, `Trade` & `TradeList` context types. ([#1021](https://github.com/finos/FDC3/pull/1021))
* Added Agent Bridging as an [@experimental](https://fdc3.finos.org/docs/fdc3-compliance#experimental-features) 5th part of the FDC3 Standard. ([#968](https://github.com/finos/FDC3/pull/968))
* Added a description of the standards use of JSON Schema to define context types and Bridging messages. ([#1020](https://github.com/finos/FDC3/pull/1020))
* Documentation for standardized Context types was added to their JSON Schema files and TypeScript interfaces generated from them, so that they may act as a 'single source of truth' for Context definitions. ([#1020](https://github.com/finos/FDC3/pull/1020))

### Changed

* Updated definition of the `ChatInitSettings` context type to use the new `Message` type.  ([#779](https://github.com/finos/FDC3/pull/779))
* Updated the `StartChat` intent to return a reference to the room. ([#794](https://github.com/finos/FDC3/pull/794))
* Updated definition of the `Instrument` context type to include optional market identifiers ([#819](https://github.com/finos/FDC3/pull/819))
* Corrected API functions and object types to always use `string` instead of `String` ([#924](https://github.com/finos/FDC3/pull/924))
* Updated definition of the `otherConfig` element of the `Chart` context type from an Object to an array of Contexts as this allows the `type` of each additional item of config to be examined before it is used ([#985](https://github.com/finos/FDC3/pull/985))
* Corrected the appD `interop.appChannels` metadata to use an `id` field to identify channels, rather than `name` ([#981](https://github.com/finos/FDC3/pull/981))
* The App Directory OpenAPI schema was converted from YAML to JSON Schema, containing the same definitions. ([#1035](https://github.com/finos/FDC3/pull/1035))
* Switched to union types (from enums) for constrained string values in generated source files as they provide better type checking and cross-compatibility of types. ([#1093](https://github.com/finos/FDC3/pull/1093))

### Deprecated

* Deprecated the `name` field in AppD records, to match the deprecation of API signatures and metadata objects using `name` (see [#722](https://github.com/finos/FDC3/pull/722)) in 2.0. ([#928](https://github.com/finos/FDC3/pull/928))
* Deprecated `IntentMetadata.displayName` and the appD record's `interop.intents.listensFor[].displayName` field in favor of using intent names for display (which are required to be recognizable) as it can be set differently for each application in the appD ([#926](https://github.com/finos/FDC3/pull/926))
* Deprecated the `customConfig` field in an AppD record due to the lack of a standard API to retrieve it. To be replaced with an `applicationConfig` element with a Desktop Agent API call to retrieve it in a future version (see [#1006](https://github.com/finos/FDC3/issues/1006) for more details). Also deprecates the `customCOnfig` element of an Intent configuration due to a lack of documented use cases. ([#982](https://github.com/finos/FDC3/pull/982))

### Fixed

* Removed the union type for the `ChatMessage` context, which caused issues for languages not having union types. This is a breaking change (made before the final version of 2.1 is released).
* Corrected chatInitSettings context schema to incorporate the Context schema. ([#869](https://github.com/finos/FDC3/pull/869))
* Corrected schema syntax in chatInitSettings and renamed the `public` property to `isPublic` (as `public` is a reserved keyword in javascript). ([#875](https://github.com/finos/FDC3/pull/875))
* Further clarified the difference between the behavior of User channels and other channel types on joinUserChannel/addContextListener. ([#971](https://github.com/finos/FDC3/pull/971))
* Clarified description of the behavior of `IntentResolution.getResult()` when the intent handler returned void (which is not an error). ([#1004](https://github.com/finos/FDC3/pull/1004))
* An error was fixed in the appD schema where launch details sub-schemas were combined with `oneOf`, rather than `anyOf`. This causes validation errors for web or online native apps as their details elements overlap on a `url` field. ([#1034](https://github.com/finos/FDC3/pull/1034))
* The appD `icon` and `screenshot` sub-schemas were updated to require the `src` value is set and restrict additional values, ensuring that common mistakes (such as using a `url` rather than `src` field are caught by the schemas when used to validate). ([#1037](https://github.com/finos/FDC3/pull/1037))
* Linting, spell checking other corrections were applied to markdown syntax throughout the FDC3 documentation ([#1032](https://github.com/finos/FDC3/pull/1032))
* Corrected bad example URLs in the App Directory overview/discovery page in the current and past versions as they did not agree with the paths provided in the API specification and OpenAPI schema.  ([#1060](https://github.com/finos/FDC3/pull/1060))

## [npm v2.0.3] - 2023-05-31

### Changed

* Applied missing `readonly` tags to `ImplementationMetadata.optionalFeatures` sub-properties. ([#1008](https://github.com/finos/FDC3/pull/1008))

## [npm v2.0.2] - 2023-05-24

### Changed

* Removed source files from the NPM module as they are not necessary, increase the bundle size and include POM files that lack license info, causing issues for enterprise onboarding. ([#999](https://github.com/finos/FDC3/pull/999))

## [FDC3 Standard 2.0](https://github.com/finos/FDC3/compare/v1.2..v2.0) - 2022-07-01

### Added

* Definition of the `icons` property of `AppMetadata`, based on PWA icon spec ([#319](https://github.com/finos/FDC3/pull/319))
* Added support for raiseIntent without a context via the addition of the `fdc3.nothing` context type ([#375](https://github.com/finos/FDC3/pull/375))
* Added [**FDC3 Workbench**](https://fdc3.finos.org/toolbox/fdc3-workbench/), an FDC3 API developer application ([#457](https://github.com/finos/FDC3/pull/457))
* Added advice on how to `broadcast` complex context types, composed of other types, so that other apps can listen for both the complex type and simpler constituent types ([#464](https://github.com/finos/FDC3/pull/464))
* Added the ability to return data from an intent, via the addition of an IntentHandler type and a `getResult()` to IntentResolution, both of which return a Promise of a Context object. ([#495](https://github.com/finos/FDC3/pull/495))
* Added a field to specify the Context type that intent can return to the AppD Application schema and extended the findIntent API calls to be able to use it for resolution. ([#499](https://github.com/finos/FDC3/pull/499))
* Added the ability to return a Channel from an intent (via the `IntentResult` type), resolver support for intents that return Channels and the concept of PrivateChannels. ([#508](https://github.com/finos/FDC3/pull/508))
* Added error `UserCancelled` to the `ResolveError` enumeration to be used when user closes the resolver UI or otherwise cancels resolution of a raised intent ([#522](https://github.com/finos/FDC3/pull/522))
* Added `IntentDeliveryFailed` to the `ResolveError` enumeration to be used when delivery of an intent and context to a targeted app or instance fails. ([#601](https://github.com/finos/FDC3/pull/601))
* Added an `instanceId` (and optional `instanceMetadata`) field to `AppMetadata` allowing it to refer to specific app instances and thereby supporting targeting of intents to specific app instances. Also added a `findInstances()` function to the desktop agent and `TargetAppUnavailable` and `TargetInstanceUnavailable` Errors to the `ResolveError` enumeration. ([#509](https://github.com/finos/FDC3/pull/509))
* Added a References and Bibliography section to the Standard's documentation to hold links to 'normative references' and other documentation that is useful for understanding the standard ([#530](https://github.com/finos/FDC3/pull/530))
* Added a Trademarks page to website to acknowledge trademarks used within the Standard not owned by FINOS or the Linux Foundation ([#534](https://github.com/finos/FDC3/pull/534))
* Added details of FDC3's existing versioning and deprecation policies to the FDC3 compliance page ([#539](https://github.com/finos/FDC3/pull/539))
* Added a new experimental features policy, which exempts features designated as experimental from the versioning and deprecation policies, to the FDC3 compliance page ([#549](https://github.com/finos/FDC3/pull/549))
* Added a recommended set of user channel definitions to the API docs and typescript sources ([#727](https://github.com/finos/FDC3/pull/727))
* Added the optional exposure of originating app metadata to messages received via `addContextListener` and `addIntentListener` via the new `ContextMetadata` type. ([#725](https://github.com/finos/FDC3/pull/725))
* Added the current app's `AppMetadata` to the `ImplementationMetadata` returned by `fdc3.getInfo()` allowing an app to retrieve its own metadata, according to the Desktop Agent ([#726](https://github.com/finos/FDC3/pull/726))
* Added a context type representing a range of time (`fdc3.timeRange`). ([#706](https://github.com/finos/FDC3/pull/706))
* Added a context type representing a Currency (`fdc3.currency`). ([#708](https://github.com/finos/FDC3/pull/708))
* Added a context type representing the price and value of a holding (`fdc3.valuation`). ([#709](https://github.com/finos/FDC3/pull/709))
* Added a context type representing a Chart (`fdc3.chart`). ([#715](https://github.com/finos/FDC3/pull/715))
* Added a context type `ChatInitSettings` to initialize a chat creation with new optional parameters ([#620](https://github.com/finos/FDC3/pull/620))
* Added guide on how to submit a new Intent. ([#624](https://github.com/finos/FDC3/pull/624))
* Added a `ViewResearch` Intent to be used when a user wants to see the latest research on a particular stock ([#623](https://github.com/finos/FDC3/pull/623))
* Added a `ViewProfile` intent, which supersedes the `ViewContact` intent which is deprecated. ([#619](https://github.com/finos/FDC3/pull/619))
* Added a `ViewInteractions` intent to be used when a user wants to see the latest interactions (calls, meetings, conferences, roadshows) on a particular stock or with an individual or organization. ([#625](https://github.com/finos/FDC3/pull/625))
* Added a `ViewOrders` intent to be used when a user wants to see the order history of an individual, an institution or of a particular instrument. ([#672](https://github.com/finos/FDC3/pull/672))
* Added a `StartEmail` intent and `fdc3.email` context type to be used to initiate an email with a contact or list of contacts provided as part of the context. ([#632](https://github.com/finos/FDC3/pull/632))
* Added a definition for "app directory record" to the FDC3 glossary to be used to refer to a single appD record ([#658](https://github.com/finos/FDC3/pull/658))
* Added `/v2/` paths to the AppD's specification, allowing a single implementation to support serving both FDC3 v1.2 and v2.0 application records, enabling simpler migration ([#666](https://github.com/finos/FDC3/pull/666))
* Added a `moreInfo` URL field to AppD application records to enable linking to a web page with more information on an app ([#669](https://github.com/finos/FDC3/pull/669))
* Added `lang` field to AppD application records to specify the primary language of an app and its appD record. ([#670](https://github.com/finos/FDC3/pull/670))
* Added `localizedVersions` field to AppD application records to support localized versions of descriptive fields in the app records and alternative launch details for localized versions of the applications themselves. ([#670](https://github.com/finos/FDC3/pull/670))
* Added `type` and `details` elements to AppD application records to support vendor-agnostic launch details for both web and native apps ([#671](https://github.com/finos/FDC3/pull/671))
* Added `categories` field and recommended categories list to AppD application records to enable category based browsing of AppDs ([#673](https://github.com/finos/FDC3/pull/673))
* Added an `interop` field to AppD application records, replacing the `intents` field, to more fully describe an app's use of FDC3 and enable search for apps that 'interoperate' with a selected app ([#697](https://github.com/finos/FDC3/pull/697))
* Added `AppIdentifier` type, which is a new parent of `AppMetadata` and clarifies required fields for API call parameters which now prefer `appId` and `instanceId` over `name` ([#722](https://github.com/finos/FDC3/pull/722))
* Added a `getAppMetadata()` function to the desktop agent that can be used to retrieve the full `AppMetadata` for an `AppIdentifier` and reduced types such as `IntentResolution.source` and `ContextMetadata.source` from `AppMetadata` to `AppIdentifier` to clarify what fields a developer can rely on and that they should manually retrieve the full `AppMetadata` when they need it for display purposes. ([#751](https://github.com/finos/FDC3/pull/751))

### Changed

* Consolidated `Listener` documentation with other types ([#404](https://github.com/finos/FDC3/pull/404))
* Updated definition of the `Position` context type to support negative (short) positions ([#419](https://github.com/finos/FDC3/pull/419))
* Upgraded web access statements from SHOULD to MUST in the API specification ([#440](https://github.com/finos/FDC3/pull/440))
* Updated copyright notices ([#467](https://github.com/finos/FDC3/pull/467))
* Adjusted wording in API spec and documentation to acknowledge the possibility of methods of intent resolution other than a resolver UI ([#461](https://github.com/finos/FDC3/pull/461))
* Replaced 'System channels' with 'User channels' throughout the spec, documentation, API and methods.ts. Clarified spec and documentation where it is referring to User channels vs. App channels. Added support to methods.ts for automatic fallback to `getSystemChannels` if `getUserChannels` doesn't exist. ([#470](https://github.com/finos/FDC3/pull/479))
* Moved the Icon type definition into the Types documentation page for consistency with other types. ([#493](https://github.com/finos/FDC3/pull/493)
* The `fdc3.joinChannel()`, `fdc3.getCurrentChannel()` and `fdc3.leaveCurrentChannel()` functions have been made optional for FDC3 API compliance, but are recommended through the application of the SHOULD keyword. ([#512](https://github.com/finos/FDC3/pull/512))
* All DesktopAgent and Channel API functions are now async for consistency, changing the return type of the `broadcast`, `addIntentListener`, `addContextListener` and `getInfo` functions ([#516](https://github.com/finos/FDC3/pull/516))
* `IntentResolution` now requires the name of the intent raised to included, allowing it to be used to determine the intent raised via `fdc3.raiseIntentForContext()`. ([#507](https://github.com/finos/FDC3/pull/507))
* The App Directory record schema (Application) has had the `manifestType` and `manifest` properties removed and replaced with the new `type` (required), `details` and `hostManifests` properties ([#437](https://github.com/finos/FDC3/pull/437))
* App Directory `images` field was replaced with `screenshots` to better align the application record with web application manifest and match its format to that used by `icons` ([#675](https://github.com/finos/FDC3/pull/675))
* API `AppMetadata` type was updated to replace the `images` field with a `screenshots` field (an array of `Image` objects) matching the spec of the App Directory's `screenshots` field entries ([#736](https://github.com/finos/FDC3/pull/736))
* App Directory endpoint for creating applications was removed as these will often be implementation dependent and should not be required for compliance ([#695](https://github.com/finos/FDC3/pull/695))
* App Directory endpoint for searching applications was removed as searches over multiple app directories are better implemented by retrieving all the records and searching over the resulting combined dataset ([#696](https://github.com/finos/FDC3/pull/696))
* Extended Intent Naming conventions and added hyperlinks for existing Intent spec definitions ([#701](https://github.com/finos/FDC3/pull/701))
* Extended recommended field type conventions for contexts to include types for ids, times, dates, currency codes and country codes. The `fdc3.country` context type was updated to comply with the recommended field name for country codes (`COUNTRY_ISOALPHA2`). ([#704](https://github.com/finos/FDC3/pull/704))
* The `intents` field of an AppD application records has been replaced with the `interop` field, to more fully describe an app's use of FDC3 and enable search for apps that 'interoperate' with a selected app ([#697](https://github.com/finos/FDC3/pull/697))

### Deprecated

* Deprecated the `ViewContact` intent, which is superseded by `ViewProfile` ([#619](https://github.com/finos/FDC3/pull/619))
* Removed details of the 'global' channel that was deprecated in FDC3 1.2. ([#496](https://github.com/finos/FDC3/pull/496))
* `open`, `raiseIntent` and `raiseIntentForContext` function signatures that make use of the app `name` have been deprecated in favour of using `AppIdentifier` (which is a new parent of `AppMetadata` that clarifies required fields for API call parameters) ([#722](https://github.com/finos/FDC3/pull/722))

### Fixed

* Removed trailing slashes from schema references (which break refs for schema parsers) ([#374](https://github.com/finos/FDC3/pull/374))
* Corrected the definition of the `Context` type in documentation ([#406](https://github.com/finos/FDC3/pull/406)])
* Corrected syntax errors in context schema examples ([#424](https://github.com/finos/FDC3/pull/424))
* Corrected a minor error in the ViewQuote Intent example ([#439](https://github.com/finos/FDC3/pull/439))
* Clarified behavior of `fdc3.addContextListener` when not joined to a channel ([#449](https://github.com/finos/FDC3/pull/449))
* Clarified existing behavior of `joinChannel` and `addContextListener` when joining a channel ([#454](https://github.com/finos/FDC3/pull/454))
* Clarified numerous aspects of the existing `raiseIntent` behavior in the spec and documentation ([#461](https://github.com/finos/FDC3/pull/461))
* Updated Methods.ts to support the updated signature for `addContextListener` introduced in FDC3 1.2 ([#462](https://github.com/finos/FDC3/pull/462))
* Clarified the description of the addContextListener functions from the Desktop Agent and Channel APIs in spec and docs. ([#492](https://github.com/finos/FDC3/pull/492))
* Clarified that implementing `fdc3.getInfo()` is required for compliance with the FDC3 standard ([#515](https://github.com/finos/FDC3/pull/515))
* Corrected syntax errors in valuation schema ([#834](https://github.com/finos/FDC3/pull/834))
* Clarified that API errors are promises rejected with a JavaScript (or language appropriate) Error Object with a message chosen from the error enumerations. ([#843](https://github.com/finos/FDC3/pull/843))
* Clarified that `findIntent` functions should return the `ResolveError.NoAppsFound` error, rather than an `AppIntent` with an empty `apps` array when no apps are fund during intent resolution. ([#843](https://github.com/finos/FDC3/pull/843))
* Clarified spec requirements for registration of intent handlers (SHOULD support `interop.intents.listensFor` in an appD record, may support other routes including dynamic registration at runtime) ([#844](https://github.com/finos/FDC3/pull/844))
* Corrected schema definition for appD `interop.intents.listensFor` element ([#847](https://github.com/finos/FDC3/pull/847))

## [npm v1.2.0] - 2021-04-19

### Added

* ES6 functions for `getInfo()` and `raiseIntentForContext()` ([#268](https://github.com/finos/FDC3/pull/268), [#324](https://github.com/finos/FDC3/pull/324))
* `fdc3Ready()` utility function that wraps checks for the window.fdc3 global object and new `fdc3Ready` event ([#360](https://github.com/finos/FDC3/pull/360))
* `compareVersionNumbers()` and `versionIsAtLeast()` utility functions to complement `getInfo()` ([#324](https://github.com/finos/FDC3/pull/324))
* An example application definition ([#437](https://github.com/finos/FDC3/pull/437)
* A test environment for the app directory specification and the example application definition ([#437](https://github.com/finos/FDC3/pull/437)

### Changed

* `addContextListener(contextType, handler)` now supports passing `null` as the context type ([#329](https://github.com/finos/FDC3/pull/329))
* All other API type changes and additions from the [FDC3 Standard 1.2](https://github.com/finos/FDC3/releases/tag/v1.2) release

### Deprecated

* `addContextListener(handler)` ([#329](https://github.com/finos/FDC3/pull/329))
* `IntentResolution.data` ([#341](https://github.com/finos/FDC3/pull/341))

## [FDC3 Standard 1.2] - 2021-04-19

### Added

* New `raiseIntentForContext()` method ([#268](https://github.com/finos/FDC3/pull/268))
* New `fdc3Ready` event ([#269](https://github.com/finos/FDC3/pull/269))
* New `getInfo()` method that returns implementation metadata ([#324](https://github.com/finos/FDC3/pull/324))

### Changed

* `fdc3.open()` and `fdc3.raiseIntent()` now takes `TargetApp`, which resolves to `string | AppMetadata` ([#272](https://github.com/finos/FDC3/pull/272))
* `AppMetadata` return type can now optionally include `appId` and `version` ([#273](https://github.com/finos/FDC3/pull/273))
* `addContextListener(contextType, handler)` now supports passing `null` as the context type ([#329](https://github.com/finos/FDC3/pull/329))
* Simplify API reference documentation and add info about supported platforms, including npm package ([#349](https://github.com/finos/FDC3/pull/349))

### Deprecated

* `addContextListener(handler)` ([#329](https://github.com/finos/FDC3/pull/329))
* `IntentResolution.data` and `'global'` channel concept ([#341](https://github.com/finos/FDC3/pull/341))

### Fixed

* Return type of `getCurrentChannel()` should be `Promise<Channel | null>` ([#282](https://github.com/finos/FDC3/pull/282))
* `leaveCurrentChannel()` is missing from `DesktopAgent` interface ([#283](https://github.com/finos/FDC3/pull/283))

## [npm v1.1.1] - 2021-04-15

### Fixed

* `Intents` enum should contain `StartChat` not `StartChart` ([#364](https://github.com/finos/FDC3/pull/364))
* Return type of `getCurrentChannel()` should be `Promise<Channel | null>` ([#282](https://github.com/finos/FDC3/pull/282))
* Missing `leaveCurrentChannel()` export ([#283](https://github.com/finos/FDC3/pull/283))

## [npm v1.1.0] - 2021-04-14

### Added

* Build an npm package with exported TypeScript typings for API, Context Data and `window.fdc3` global ([#252](https://github.com/finos/FDC3/pull/252))
* Export helper enums for names of standardized `Intents` and `ContextTypes` ([#264](https://github.com/finos/FDC3/pull/264))
* Export API operations as ES6 functions that can be directly imported ([#266](https://github.com/finos/FDC3/pull/266))
* Check for the existence of `window.fdc3` in ES6 functions, and reject or throw if not defined ([#356](https://github.com/finos/FDC3/pull/356))

### Fixed

* Return type of `getCurrentChannel()` should be `Promise<Channel>` ([#222](https://github.com/finos/FDC3/pull/222))

## [FDC3 Standard 1.1] - 2020-04-09

### Added

* JSON Schema definitions for agreed context types ([#119](https://github.com/finos/FDC3/pull/119)):
  * `fdc3.context`
  * `fdc3.instrument`
  * `fdc3.instrumentList`
  * `fdc3.contact`
  * `fdc3.contactList`
  * `fdc3.organization`
  * `fdc3.country`
  * `fdc3.position`
  * `fdc3.portfolio`
* API entry point for web - `window.fdc3` ([#139](https://github.com/finos/FDC3/pull/139))
* Use Case 17 ([#153](https://github.com/finos/FDC3/pull/153))
* Channels API ([#154](https://github.com/finos/FDC3/pull/154)):
  * `fdc3.getSystemChannels`
  * `fdc3.getOrCreateChannel`
  * `fdc3.joinChannel`
  * `fdc3.leaveCurrentChannel`
  * `fdc3.getCurrentChannel`
  * `Channel` interface
  * `DisplayMetadata` interface
  * `ChannelError` type
* Type filtering support for `getCurrentContext` ([#161](https://github.com/finos/FDC3/pull/161))
* Publish versioned JSON schemas to FDC3 website ([#170](https://github.com/finos/FDC3/pull/170))
* Intent Reference and Context Data Reference documentation ([#172](https://github.com/finos/FDC3/pull/172))

### Changed

* Remove FactSet-specific examples from docs ([#88](https://github.com/finos/FDC3/pull/88))
* Apply FINOS branding, styles and logos to the website ([#96](https://github.com/finos/FDC3/pull/96))
* Include ChartIQ in "Who is using FDC3?" section on website ([#100](https://github.com/finos/FDC3/pull/100))
* Expand `AppMetadata` interface with more application properties ([#157](https://github.com/finos/FDC3/pull/157))
* Restructure some docs ([#190](https://github.com/finos/FDC3/pull/190))

### Fixed

* Several typos and broken links in docs
* Various security vulnerabilities

## [FDC3 Standard 1.0] - 2019-03-28

### Added

* Documentation website (generated with [Docusaurus]) and content from old separate FDC3 repos ([#5](https://github.com/finos/FDC3/pull/5)):
  * [FDC3/API](https://github.com/FDC3/API)
  * [FDC3/ContextData](https://github.com/FDC3/ContextData)
  * [FDC3/Intents](https://github.com/FDC3/Intents)
  * [FDC3/appd-api](https://github.com/FDC3/appd-api)
  * [FDC3/use-cases](https://github.com/FDC3/use-cases)
* Use Case 15 ([#49](https://github.com/finos/FDC3/pull/49))
* FDC3 Roadmap ([#55](https://github.com/finos/FDC3/pull/55))
* FDC3 feature icons on website landing page ([#57](https://github.com/finos/FDC3/pull/57))
* Participant showcase on website landing page ([#67](https://github.com/finos/FDC3/pull/67))

[Docusaurus]: https://docusaurus.io

### Changed

* General cleanup of spelling, grammar and punctuation ([#34](https://github.com/finos/FDC3/pull/34))
* Use cases call-out on website landing page ([#54](https://github.com/finos/FDC3/pull/54))
* Proofreading of docs ([#62](https://github.com/finos/FDC3/pull/62))

### Fixed

* Remove unnecessary dates from use case file names ([#41](https://github.com/finos/FDC3/pull/41))
* Header coloring on responsive website ([#56](https://github.com/finos/FDC3/pull/56))
* Workflow numbers in Use Case 1 ([#60](https://github.com/finos/FDC3/pull/60))
* Examples in Intent Overview ([#65](https://github.com/finos/FDC3/pull/65))
* Errors in DesktopAgent API Reference ([#66](https://github.com/finos/FDC3/pull/66))

[Unreleased]: https://github.com/finos/FDC3/compare/v1.2..HEAD
[npm v1.2.0]: https://github.com/finos/FDC3/compare/v1.1.0..v1.2.0
[FDC3 Standard 1.2]: https://github.com/finos/FDC3/compare/v1.2..v1.1
[npm v1.1.1]: https://github.com/finos/FDC3/compare/v1.1.0..v1.1.1
[npm v1.1.0]: https://github.com/finos/FDC3/compare/v1.1..v1.1.0
[FDC3 Standard 1.1]: https://github.com/finos/FDC3/compare/v1.1..v1.0
[FDC3 Standard 1.0]: https://github.com/finos/FDC3/v1.0


================================================
FILE: CNAME
================================================
fdc3.finos.org

================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Code of Conduct for FDC3

Please see the [Community Code of Conduct](https://www.finos.org/code-of-conduct).


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to FDC3

This document provides the contribution policy for the FDC3 Standard (the [Working Group](GOVERNANCE.md)) and is based on the [Community Specification Contribution Policy 1.0](https://spdx.org/licenses/Community-Spec-1.0.html).

_NOTE:_ Commits and pull requests to FINOS repositories will only be accepted from those participants with an active, executed Individual Contributor License Agreement (ICLA) with FINOS, _OR_ who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the [Linux Foundation `EasyCLA` tool](https://easycla.lfx.linuxfoundation.org/#/). Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA.

*Need an ICLA? Unsure if you are covered under an existing CCLA? Email [help@finos.org](mailto:help@finos.org).*

## 1.	Contribution Guidelines.

This Working Group accepts contributions via pull requests. The following section outlines the process for merging contributions to the specification

**1.1.	Issues.**  Issues are used as the primary method for tracking anything to do with this specification Working Group.

**1.1.1.	Issue Types.**  A number of issue templates are available in the FDC3 respository:

**1.1.1.1.	Meetings.** Templates for issues that represent meetings and include agendas, teleconference details and minutes.

**1.1.1.2.	Proposals and Enhancement Requests.** Used for items that propose a new ideas or functionality that require a larger discussion. This allows for feedback from others before a specification change is actually written.

**1.1.1.3.	Minor Issue:** These track minor changes or corrections that don't alter the Standard significantly but rather correct minor errors or ommisions.

**1.1.1.4.	Question:** May be used to ask questions about FDC3, requests support etc..

## 2.	Issue Lifecycle.

The issue lifecycle is mainly driven by the Maintainer.  All issue types follow the same general lifecycle. Differences are noted below.

**Prerequisites**

 * Have you [searched for duplicates](https://github.com/finos/FDC3/issues?utf8=%E2%9C%93&q=)?  A simple search for exception error messages or a summary of the unexpected behaviour should suffice.
 * Are you using the latest version of the Standard?
   * Changes that have been merged but not yet released can be found in the [next](https://fdc3.finos.org/docs/next/fdc3-standard) version of the website and details found in the [CHANGELOG](https://github.com/finos/FDC3/blob/main/CHANGELOG.md)
 * Are you sure this is a bug or missing capability?

**2.1.	Issue Creation.**

 * Create your issue [here](https://github.com/finos/FDC3/issues/new).
 * New issues contain two templates in the description: bug report and enhancement request. Please pick the most appropriate for your issue, **then delete the other**.

 * Please also tag the new issue with either "Bug" or "Enhancement".

 * Please use [Markdown formatting](https://help.github.com/categories/writing-on-github/)
liberally to assist in readability.
 
 * [Code fences](https://help.github.com/articles/creating-and-highlighting-code-blocks/) for exception stack traces and log entries, for example, massively improve readability.

**2.2.	Triage.**

- The FDC3 Maintainers will apply the proper labels for the issue. This may include labels for priority, type, and metadata.

- (If needed) Clean up the title to succinctly and clearly state the issue.

**2.3.	Discussion.**

- Issues that change the Standard usually need discussion. You can post comments directly on the issue or can ask for it to be added to a Standards Working Group meeting agenda by emailing [fdc3@finos.org](mailto:fdc3@finos.org), sending a message to the [#fdc3 channel on the FINOS slack](https://finos-lf.slack.com/messages/fdc3/) or tag the FDC3 maintainers (`@finos/fdc3-maintainers`) in your issue.

- Issues that enhance or otherwise change the Standard should be connected to the pull request that resolves it. That can be achieved by prefixing your pull request's description with a keyword and issue number, e.g. `resolves #123`. For more details on linking issues and PRs see [Github's documentation](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue).

**2.4.	Issue Closure.**

## 3.	How to Contribute a Patch.

The Working Group uses pull requests to track changes. To submit a change to the Standard:

**3.1.	Fork the Repo**
- (<https://github.com/finos/FDC3/fork>)

**3.2.	Create your feature branch**
- `git checkout -b feature/fooBar`

**3.3.	Commit your changes**
- `git commit -am 'Describe what you changed'`

**3.4.	Push to the branch**
- `git push origin feature/fooBar`

**3.5.	Create a Pull Request**
- For help creating a pull request from your fork, [see Github's documentation](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)

To contribute a patch for a New Intent, see the [Submit New Intent](docs/guides/submit-new-intent) guide.

**3.6. Test Policy**

- The FDC3 project takes very seriously code quality, especially with respect to production-grade sub-modules.  This includes:

|Module | Test Policy |
|---|---|
|`packages/fdc3` | Code should not be added here - just `import` / `export` in `index.ts` |
|`packages/fdc3-agent-proxy` | Contributions must improve or maintain coverage at the current level |
|`packages/fdc3-commonjs` | Code should not be added here |
|`packages/fdc3-context` | Must contain only JSON Schemas and source code generated from them |
|`packages/fdc3-get-agent` |Contributions must improve or maintain coverage at the current level 
|`packages/fdc3-schema` | Must contain only JSON Schemas and source code generated from them |
|`packages/fdc3-standard` | Contributions must improve or maintain coverage at the current level |
|`toolbox/fdc3-for-web/fdc3-web-impl` | Contributions must improve or maintain coverage at the current level |

Please note that the FDC3 project uses the following test policy:

  * Code should have tests (coverage is reported in the PR comments)
  * All tests must pass. (checked automatically by the PR comments)
  * All tests must be meaningful.
  * All tests must be kept up-to-date.
  * All tests must be run locally before submitting a PR.
  * Finally, the `toolbox/fdc3-for-web/demo` project is expected to pass the FDC3 conformance framework prior to new FDC3 releases (not currently automated).

## 4.	Pull Request Workflow.

The next section contains more information on the workflow followed for Pull Requests.

**4.1.	Pull Request Creation.**

- We welcome pull requests that are currently in progress. They are a great way to keep track of important work that is in-flight, but useful for others to see. If a pull request is a work in progress, it should be prefaced with "WIP: [title]". Once the pull request is ready for review, remove "WIP" from the title and label.

- It is preferred, but not required, to have a pull request tied to a specific issue. Prefix your PR's description with `resolves #<issue number>` to link it to your issue.

- There can be circumstances where if it is a quick fix then an issue might be overkill. The details provided in the pull request description would suffice in this case.

- Ensure that pull requests include a proposed update to the [FDC3 Changelog (CHANGELOG.md)](CHANGELOG.md)

To make review of PRs easier, please:

 * Please make sure your PRs will merge cleanly - PRs that don't are unlikely to be accepted.
 
 * For code contributions, follow the existing code layout.
 
 * For documentation contributions, follow the general structure, language, and tone of the [existing docs](https://fdc3.finos.org).
 
 * Keep commits small and cohesive - if you have multiple contributions, please submit them as independent commits (and ideally as independent PRs too).
 
 * Reference issue #s if your PR has anything to do with an issue (even if it doesn't address it).
 
 * Minimise non-functional changes (e.g. whitespace shenanigans).
 
 * Ensure all new source files include a header comment block containing the [Apache License v2.0 and your copyright information](http://www.apache.org/licenses/LICENSE-2.0#apply).
 
 * If necessary (e.g. due to 3rd party dependency licensing requirements), update the [NOTICES.md file](https://github.com/finos/FDC3/blob/main/NOTICES.md) with any new attribution or other notices

**4.2.	Triage**

- The Maintainers will apply the proper labels for the issue. This may include an indication of the subject area or type (e.g. `deprecation`).

**4.3.	Reviewing/Discussion.**

- All PRs will be reviewed by at least one of the FDC3 Maintainers and any appointed Editors. PRs are also open to review by FDC3 Participants.

- The FDC3 Maintainers are responsible for ensuring that the Standard Working Group has been consulted on either an issue (that provides a high-level of detail on the proposed changes) or on the PR itself, a decision has been reached that the change should be made and that that decision has been documented.

- All reviews will be completed using the Github review tool.

- A "Comment" review should be used when there are questions about the spec that should be answered, but that don't involve spec changes. This type of review does not count as approval.

- A "Changes Requested" review indicates that changes to the spec need to be made before they will be merged.

- Reviewers should update labels as needed (such as needs rebase).

- When a review is approved, the reviewer should add LGTM as a comment.

**4.4.	Responsive.** Pull request owner should try to be responsive to comments by answering questions or changing text. Once all comments have been addressed, the pull request is ready to be merged.

**4.5.	Merge or Close.**

- A pull request should stay open until a Maintainer has marked the pull request as approved.

- Pull requests can be closed by the author without merging.

- Pull requests may be closed by a Maintainer if the decision is made that it is not going to be merged.

## 5. Adoption of Contributions.
Contributions merged into the main branch of the FDC3 repository will form part of the next pre-draft of the FDC3 Standard (as defined by the [FDC3 Governance document](./GOVERNANCE.md)), which must be approved by the Standard Working Group voting participants before it is accepted as a draft and subsequently released as the next version of the Standard.




================================================
FILE: GOVERNANCE.md
================================================
# FDC3 Governance Policy

This document provides the governance policy for the development of the FDC3 specification and related materials in the FDC3 Standard (the “Working Group”).

## 1.	Roles.

The Working Group includes the following roles:

### 1.1. Participants

“Participants” are those that have made Contributions to the Working Group subject to the [Community Specification Contribution Policy 1.0](https://spdx.org/licenses/Community-Spec-1.0.html).  The [FDC3 Standard Working Group](https://github.com/finos/FDC3/issues?q=label%3A%22Standard+WG+Meeting%22) has the specific purpose of defining and releasing subsequent updates to the Standard. In practice, that means people that attend and contribute to meetings, raise issues, pull requests (to submit patches to the Standard) and reviews.

#### How do you become a Participant?

Becoming an FDC3 Participant is as easy as attending a meeting and/or raising issues for changes you'd like see in the Standard, commenting on issues others have raised or even asking questions (which can often result in the clarification of the Standard's documentation to help others with the same questions in future).

#### Register to vote
Participants may register to vote on changes to the FDC3 Standard (see [Section 2](#2decision-making) below). To do so use this link: [fdc3-participants+subscribe@finos.org](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FLICENSE%20.%20Thank%20you!) to send a templated email email to join the enrolled voting participants group.

Upon enrollment as an [FDC3 voting participant](https://github.com/orgs/finos/teams/fdc3-participants), you will be invited to join the [FINOS GitHub organization](https://github.com/orgs/finos/people) and the [fdc3-participants](https://github.com/orgs/finos/teams/fdc3-participants) GitHub team.

- [View the FDC3 Participants GitHub Team](https://github.com/orgs/finos/teams/fdc3-participants)

### 1.2. Discussion Groups

The Working Group may form one or more "Discussion Groups" to organize collaboration around a particular aspect of a specification. Discussion Groups are for discussion only.  Approval of all portions of a specification is subject to the consensus-based decision-making process of the FDC3 Standard Working Group.

### 1.3. Maintainers & Editors

“Maintainers” are responsible for organizing activities around developing, maintaining, and updating the specification(s) developed by the Working Group.  Maintainers are also responsible for determining consensus and coordinating appeals.  The Working Group will designate one or more Maintainer(s). The Working Group may select a new or additional Maintainer(s) upon Approval of the Working Group Participants.  

- [View the FDC3 Maintainers GitHub Team](https://github.com/orgs/finos/teams/fdc3-maintainers)

“Editors” are responsible for ensuring that the contents of the document accurately reflect the decisions that have been made by the group, and that the specification adheres to formatting and content guidelines. The Working Group will designate one or more Editor(s). The Working Group may select a new Editor upon Approval of the Working Group Participants.

- [View the FDC3 Editors GitHub Team](https://github.com/orgs/finos/teams/fdc3-editors)

#### How do you become an Editor or Maintainer?

Once you are an enrolled participant in FDC3, you can apply to become an **editor** or **maintainer** by contacting the existing FDC3 maintainers at [fdc3-maintainers@finos.org](mailto:fdc3-maintainers@finos.org) and then seeking the approval of the FDC3 Standards Working Group. Generally, the maintainers will look for both a history of contribution to FDC3 and a commitment to investing sufficient time in the role from any prospective candidates before proposing them to the Standards Working Group for approval. 

If you are new to FDC3, but willing to make the investment of time, the maintainers can work with you to build up a history of contribution.

## 2.	Decision Making.

**2.1.	Consensus-Based Decision Making.**  The Working Group makes decisions through a consensus process (“Approval” or “Approved”).  While the agreement of all Participants is preferred, it is not required for consensus.  Rather, the Maintainer(s) will determine consensus based on their good faith consideration of a number of factors, including the dominant view of the Working Group Participants and nature of support and objections.  The Maintainer(s) will document evidence of consensus in accordance with these requirements. 

**2.2.	Appeal Process.**  Decisions may be appealed be via a pull request or an issue. The Maintainer(s) will consider each appeal in good faith and will respond in writing within a reasonable time.

## 3.	Ways of Working.

Inspired by [ANSI’s Essential Requirements for Due Process](https://share.ansi.org/Shared%20Documents/Standards%20Activities/American%20National%20Standards/Procedures,%20Guides,%20and%20Forms/2020_ANSI_Essential_Requirements.pdf), the Working Group adheres to consensus-based due process requirements.  These requirements apply to activities related to the development of consensus for approval, revision, reaffirmation, and withdrawal of specifications.  Due process means that any person (organization, company, government agency, individual, etc.) with a direct and material interest has a right to participate by: a) expressing a position and its basis, b) having that position considered, and c) having the right to appeal. Due process allows for equity and fair play. The following constitute the minimum acceptable due process requirements for the development of consensus.

**3.1.	Openness.**  Participation shall be open to all persons who are directly and materially affected by the activity in question. There shall be no undue financial barriers to participation. Voting membership on the consensus body shall not be conditional upon membership in any organization, nor unreasonably restricted on the basis of technical qualifications or other such requirements.  Membership in a Working Group’s parent organization, if any, may be required.

**3.2.	Lack of Dominance.**  The development process shall not be dominated by any single interest category, individual or organization. Dominance means a position or exercise of dominant authority, leadership, or influence by reason of superior leverage, strength, or representation to the exclusion of fair and equitable consideration of other viewpoints.

**3.3.	Balance.**  The development process should have a balance of interests. Participants from diverse interest categories shall be sought with the objective of achieving balance.

**3.4.	Coordination and Harmonization.**  Good faith efforts shall be made to resolve potential conflicts between and among deliverables developed under this Working Group and existing industry standards.

**3.5.	Consideration of Views and Objections.**  Prompt consideration shall be given to the written views and objections of all Participants.

**3.6.	Written procedures.**  This governance document and other materials documenting the specification development process shall be available to any interested person.

## 4.	Standard Development Process.  

**4.1.	Pre-Draft.**  Any Participant may submit a proposed initial draft document as a candidate Draft Specification of the Working Group.  The Maintainer(s) will designate each submission as a “Pre-Draft” document.

**4.2.	Draft.**  Each Pre-Draft document of the Working Group must first be Approved to become a “Draft Specification”.  Once the Working Group approves a document as a Draft Specification, the Draft Specification becomes the basis for all going forward work on that specification.

**4.3.	Working Group Approval.**  Once the Working Group believes it has achieved the objectives for its specification as described in the [Scope](./SCOPE), it will Approve that Draft Specification and progress it to “Approved Specification” status. 

**4.4.	Publication and Submission.**  Upon the designation of a Draft Specification as an Approved Specification, the Maintainer(s) will publish the Approved Specification in a manner agreed upon by the Working Group Participants (i.e., Working Group Participant only location, publicly available location, Working Group maintained website, Working Group member website, etc.).  The publication of an Approved Specification in a publicly accessible manner must include the terms under which the Approved Specification is being made available under.

**4.5.	Submissions to Standards Bodies.**  No Draft Specification or Approved Specification may be submitted to another standards development organization without Working Group Approval. Upon reaching Approval, the Maintainer(s) will coordinate the submission of the applicable Draft Specification or Approved Specification to another standards development organization. Working Group Participants that developed that Draft Specification or Approved Specification agree to grant the copyright rights necessary to make those submissions.

## 5. Non-Confidential, Restricted Disclosure.

Information disclosed in connection with any Working Group activity, including but not limited to meetings, Contributions, and submissions, is not confidential, regardless of any markings or statements to the contrary.  Notwithstanding the foregoing, if the Working Group is collaborating via a private repository, the Participants will not make any public disclosures of that information contained in that private repository without the Approval of the Working Group.  


================================================
FILE: LICENSE.md
================================================
# Community Specification License 1.0

**The Purpose of this License.**  This License sets forth the terms under which 1) Contributor will participate in and contribute to the development of specifications, standards, best practices, guidelines, and other similar materials under this Working Group, and 2) how the materials developed under this License may be used.  It is not intended for source code.  Capitalized terms are defined in the License’s last section.

**1.	Copyright.**

**1.1.	Copyright License.**  Contributor grants everyone a non-sublicensable, perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as expressly stated in this License) copyright license, without any obligation for accounting, to reproduce, prepare derivative works of, publicly display, publicly perform, and distribute any materials it submits to the full extent of its copyright interest in those materials. Contributor also acknowledges that the Working Group may exercise copyright rights in the Specification, including the rights to submit the Specification to another standards organization.

**1.2.	Copyright Attribution.**  As a condition, anyone exercising this copyright license must include attribution to the Working Group in any derivative work based on materials developed by the Working Group.  That attribution must include, at minimum, the material’s name, version number, and source from where the materials were retrieved.  Attribution is not required for implementations of the Specification.

**2.	Patents.**

**2.1.	Patent License.**

**2.1.1.	As a Result of Contributions.**

**2.1.1.1.	As a Result of Contributions to Draft Specifications.**  Contributor grants Licensee a non-sublicensable, perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as expressly stated in this License) license to its Necessary Claims in 1) Contributor’s Contributions and 2) to the Draft Specification that is within Scope as of the date of that Contribution, in both cases for Licensee’s Implementation of the Draft Specification, except for those patent claims excluded by Contributor under Section 3.  

**2.1.1.2.	For Approved Specifications.**  Contributor grants Licensee a non-sublicensable, perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as expressly stated in this License) license to its Necessary Claims included the Approved Specification that are within Scope for Licensee’s Implementation of the Approved Specification, except for those patent claims excluded by Contributor under Section 3.

**2.1.2.	Patent Grant from Licensee.**  Licensee grants each other Licensee a non-sublicensable, perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as expressly stated in this License) license to its Necessary Claims for its Implementation, except for those patent claims excluded under Section 3.

**2.1.3.	Licensee Acceptance.**  The patent grants set forth in Section 2.1 extend only to Licensees that have indicated their agreement to this License as follows: 

**2.1.3.1.	Source Code Distributions.**  For distribution in source code, by including this License in the root directory of the source code with the Implementation;

**2.1.3.2.	Non-Source Code Distributions.**  For distribution in any form other than source code, by including this License in the documentation, legal notices, via notice in the software, and/or other written materials provided with the Implementation; or

**2.1.3.3.	Via Notices.md.**  By issuing pull request or commit to the Specification’s repository’s Notices.md file by the Implementer’s authorized representative, including the Implementer’s name, authorized individual and system identifier, and Specification version.

**2.1.4.	Defensive Termination.**  If any Licensee files or maintains a claim in a court asserting that a Necessary Claim is infringed by an Implementation, any licenses granted under this License to the Licensee are immediately terminated unless 1) that claim is directly in response to a claim against Licensee regarding an Implementation, or 2) that claim was brought to enforce the terms of this License, including intervention in a third-party action by a Licensee.

**2.1.5.	Additional Conditions.**  This License is not an assurance (i) that any of Contributor’s copyrights or issued patent claims cover an Implementation of the Specification or are enforceable or (ii) that an Implementation of the Specification would not infringe intellectual property rights of any third party.

**2.2.	Patent Licensing Commitment.**  In addition to the rights granted in Section 2.1, Contributor agrees to grant everyone a no charge, royalty-free license on reasonable and non-discriminatory terms to Contributor’s Necessary Claims that are within Scope for:
1) Implementations of a Draft Specification, where such license applies only to those Necessary Claims infringed by implementing Contributor's Contribution(s) included in that Draft Specification, and
2) Implementations of the Approved Specification. 

This patent licensing commitment does not apply to those claims subject to Contributor’s Exclusion Notice under Section 3.

**2.3.	Effect of Withdrawal.**  Contributor may withdraw from the Working Group by issuing a pull request or commit providing notice of withdrawal to the Working Group repository’s Notices.md file.  All of Contributor’s existing commitments and obligations with respect to the Working Group up to the date of that withdrawal notice will remain in effect, but no new obligations will be incurred. 

**2.4.	Binding Encumbrance.**  This License is binding on any future owner, assignee, or party who has been given the right to enforce any Necessary Claims against third parties.

**3.	Patent Exclusion.**

**3.1.	As a Result of Contributions.**  Contributor may exclude Necessary Claims from its licensing commitments incurred under Section 2.1.1 by issuing an Exclusion Notice within 45 days of the date of that Contribution.  Contributor may not issue an Exclusion Notice for any material that has been included in a Draft Deliverable for more than 45 days prior to the date of that Contribution.

**3.2.	As a Result of a Draft Specification Becoming an Approved Specification.**  Prior to the adoption of a Draft Specification as an Approved Specification, Contributor may exclude Necessary Claims from its licensing commitments under this Agreement by issuing an Exclusion Notice.  Contributor may not issue an Exclusion Notice for patents that were eligible to have been excluded pursuant to Section 3.1.

**4.	Source Code License.**  Any source code developed by the Working Group is solely subject the source code license included in the Working Group’s repository for that code.  If no source code license is included, the source code will be subject to the MIT License.

**5.	No Other Rights.**  Except as specifically set forth in this License, no other express or implied patent, trademark, copyright, or other rights are granted under this License, including by implication, waiver, or estoppel.

**6.	Antitrust Compliance.**  Contributor acknowledge that it may compete with other participants in various lines of business and that it is therefore imperative that they and their respective representatives act in a manner that does not violate any applicable antitrust laws and regulations.  This License does not restrict any Contributor from engaging in similar specification development projects. Each Contributor may design, develop, manufacture, acquire or market competitive deliverables, products, and services, and conduct its business, in whatever way it chooses.  No Contributor is obligated to announce or market any products or services.  Without limiting the generality of the foregoing, the Contributors agree not to have any discussion relating to any product pricing, methods or channels of product distribution, division of markets, allocation of customers or any other topic that should not be discussed among competitors under the auspices of the Working Group.

**7.	Non-Circumvention.**  Contributor agrees that it will not intentionally take or willfully assist any third party to take any action for the purpose of circumventing any obligations under this License.

**8.	Representations, Warranties and Disclaimers.**

**8.1.  Representations, Warranties and Disclaimers.**  Contributor and Licensee represents and warrants that 1) it is legally entitled to grant the rights set forth in this License and 2) it will not intentionally include any third party materials in any Contribution unless those materials are available under terms that do not conflict with this License.  IN ALL OTHER RESPECTS ITS CONTRIBUTIONS ARE PROVIDED "AS IS." The entire risk as to implementing or otherwise using the Contribution or the Specification is assumed by the implementer and user. Except as stated herein, CONTRIBUTOR AND LICENSEE EXPRESSLY DISCLAIM ANY WARRANTIES (EXPRESS, IMPLIED, OR OTHERWISE), INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, CONDITIONS OF QUALITY, OR TITLE, RELATED TO THE CONTRIBUTION OR THE SPECIFICATION.  IN NO EVENT WILL ANY PARTY BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH RESPECT TO THIS AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Any obligations regarding the transfer, successors in interest, or assignment of Necessary Claims will be satisfied if Contributor or Licensee notifies the transferee or assignee of any patent that it knows contains Necessary Claims or necessary claims under this License. Nothing in this License requires Contributor to undertake a patent search. If Contributor is 1) employed by or acting on behalf of an employer, 2) is making a Contribution under the direction or control of a third party, or 3) is making the Contribution as a consultant, contractor, or under another similar relationship with a third party, Contributor represents that they have been authorized by that party to enter into this License on its behalf.

**8.2.  Distribution Disclaimer.**  Any distributions of technical information to third parties must include a notice materially similar to the following: “THESE MATERIALS ARE PROVIDED “AS IS.” The Contributors and Licensees expressly disclaim any warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringement, fitness for a particular purpose, or title, related to the materials.  The entire risk as to implementing or otherwise using the materials is assumed by the implementer and user. IN NO EVENT WILL THE CONTRIBUTORS OR LICENSEES BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH RESPECT TO THIS DELIVERABLE OR ITS GOVERNING AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER MEMBER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.”

**9.	Definitions.**

**9.1.	Affiliate.** “Affiliate” means an entity that directly or indirectly Controls, is Controlled by, or is under common Control of that party.

**9.2.	Approved Specification.**  “Approved Specification” means the final version and contents of any Draft Specification designated as an Approved Specification as set forth in the accompanying Governance.md file.

**9.3.	Contribution.**  “Contribution” means any original work of authorship, including any modifications or additions to an existing work, that Contributor submits for inclusion in a Draft Specification, which is included in a Draft Specification or Approved Specification.

**9.4.	Contributor.** “Contributor” means any person or entity that has indicated its acceptance of the License 1) by making a Contribution to the Specification, or 2) by entering into the Community Specification Contributor License Agreement for the Specification.  Contributor includes its Affiliates, assigns, agents, and successors in interest.

**9.5.	Control.**  “Control” means direct or indirect control of more than 50% of the voting power to elect directors of that corporation, or for any other entity, the power to direct management of such entity.

**9.6.	Draft Specification.**  “Draft Specification” means all versions of the material (except an Approved Specification) developed by this Working Group for the purpose of creating, commenting on, revising, updating, modifying, or adding to any document that is to be considered for inclusion in the Approved Specification. 

**9.7.	Exclusion Notice.**  “Exclusion Notice” means a written notice made by making a pull request or commit to the repository’s Notices.md file that identifies patents that Contributor is excluding from its patent licensing commitments under this License.  The Exclusion Notice for issued patents and published applications must include the Draft Specification’s name, patent number(s) or title and application number(s), as the case may be, for each of the issued patent(s) or pending patent application(s) that the Contributor is excluding from the royalty-free licensing commitment set forth in this License.  If an issued patent or pending patent application that may contain Necessary Claims is not set forth in the Exclusion Notice, those Necessary Claims shall continue to be subject to the licensing commitments under this License.  The Exclusion Notice for unpublished patent applications must provide either: (i) the text of the filed application; or (ii) identification of the specific part(s) of the Draft Specification whose implementation makes the excluded claim a Necessary Claim.  If (ii) is chosen, the effect of the exclusion will be limited to the identified part(s) of the Draft Specification.

**9.8.	Implementation.**  “Implementation” means making, using, selling, offering for sale, importing or distributing any implementation of the Specification 1) only to the extent it implements the Specification and 2) so long as all required portions of the Specification are implemented.

**9.9.	License.**  “License” means this Community Specification License.

**9.10.	Licensee.**  “Licensee” means any person or entity that has indicated its acceptance of the License as set forth in Section 2.1.3.  Licensee includes its Affiliates, assigns, agents, and successors in interest.

**9.11.	Necessary Claims.**  “Necessary Claims” are those patent claims, if any, that a party owns or controls, including those claims later acquired, that are necessary to implement the required portions (including the required elements of optional portions) of the Specification that are described in detail and not merely referenced in the Specification.

**9.12.	Specification.**  “Specification” means a Draft Specification or Approved Specification included in the Working Group’s repository subject to this License, and the version of the Specification implemented by the Licensee.

**9.13.	Scope.**  “Scope” has the meaning as set forth in the accompanying Scope.md file included in this Specification’s repository. Changes to Scope do not apply retroactively.  If no Scope is provided, each Contributor’s Necessary Claims are limited to that Contributor’s Contributions.

**9.14.	Working Group.**  “Working Group” means this project to develop specifications, standards, best practices, guidelines, and other similar materials under this License.



*The text of this Community Specification License is Copyright 2020 Joint Development Foundation and is licensed under the Creative Commons Attribution 4.0 International License available at https://creativecommons.org/licenses/by/4.0/.*

SPDX-License-Identifier: CC-BY-4.0


================================================
FILE: LICENSE.spdx
================================================
SPDXVersion: SPDX-2.0
DataLicense: CC0-1.0
Creator: FDC3
PackageName: FDC3
PackageOriginator: FDC3
PackageHomePage: https://github.com/finos/FDC3
PackageLicenseDeclared: Apache-2.0


================================================
FILE: NOTICES.md
================================================
# Notices

FDC3 - Fintech Open Source Foundation (https://www.finos.org/)

Copyright OpenFin Inc. (info@openfin.co)
Copyright FINOS (info@finos.org)
Copyright Participants of the FDC3 standards project (fdc3-participants@finos.org)

THIS STANDARD IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NON-INFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS STANDARD SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE FOUNDATION, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS STANDARD.

## Code of Conduct

Contact for Code of Conduct issues or inquiries:  legal@linuxfoundation.org

Please see the [Community Code of Conduct](https://www.finos.org/code-of-conduct).

## License Acceptance

Per Community Specification License 1.0 Section 2.1.3.3, Licensees may indicate their acceptance of the Community Specification License by issuing a pull request to the Specification’s repository’s Notice.md file, including the Licensee’s name, authorized individuals' names, and repository system identifier (e.g. GitHub ID), and specification version.

A Licensee may consent to accepting the current Community Specification License version or any future version of the Community Specification License by indicating "or later" after their specification version.

---------------------------------------------------------------------------------

Licensee’s name:

Authorized individual and system identifier:

Specification version:

---------------------------------------------------------------------------------

## Withdrawals

Name of party withdrawing:

Date of withdrawal:  

---------------------------------------------------------------------------------

## Exclusions

This section includes any Exclusion Notices made against a Draft Deliverable or Approved Deliverable as set forth in the Community Specification Development License.  Each Exclusion Notice must include the following information:

-	Name of party making the Exclusion Notice:

-	Name of patent owner:

-	Specification:

-	Version number:

**For issued patents and published patent applications:**

	(i)	patent number(s) or title and application number(s), as the case may be:

	(ii)	identification of the specific part(s) of the Specification whose implementation makes the excluded claim a Necessary Claim.

**For unpublished patent applications must provide either:**

	(i) the text of the filed application; or
    
	(ii) identification of the specific part(s) of the Specification whose implementation makes the excluded claim a Necessary Claim.

-----------------------------------------------------------------------------------------

================================================
FILE: PATENTS-FDC3-1.0.md
================================================
# FDC3 v. 1.0 Final Specification Agreement 
 
## 1. The Purpose of this Agreement.  

This Agreement sets forth the terms under which I make certain copyright and patent rights available to you for your Permitted Uses of the Specification.  Capitalized terms are defined in the Agreement’s last section.

## 2. Copyrights.
 
**2.1 Copyright Grant.**   I grant to you a perpetual (for the duration of the applicable copyright), worldwide, non-exclusive, no-charge, royalty-free, copyright license, without any obligation for accounting to me, to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, distribute, and implement the Specification to the full extent of my copyright interest in the Specification.

**2.2 Attribution.**  As a condition of the copyright grant, you must include an attribution to the Specification in any derivative work you make based on the Specification.  That attribution must include, at minimum, the Specification name and version number. 

## 3. Patents.
 
### 3.1. Patent Non-Assert.

#### 3.1.1. The Promise.  

I, on behalf of myself and my successors in interest and assigns, irrevocably promise not to assert my Granted Claims against you for your Permitted Uses, subject to the terms and conditions of Section 3.1.  This is a personal promise directly from me to you, and you acknowledge as a condition of benefiting from it that no rights from me are received from suppliers, distributors, or otherwise in connection with this promise. This promise also applies to your Permitted Uses of any other specifications incorporating all required portions of the Specification.

#### 3.1.2. Termination.

**3.1.2.1. As a Result of Claims by You.**  All rights, grants, and promises made by me to you under this Agreement are terminated if you file, maintain, or voluntarily participate in a lawsuit against me or any person or entity asserting that its Permitted Uses infringe any Granted Claims you would have had the right to enforce had you signed this Agreement, unless that suit was in response to a corresponding suit first brought against you.
 
**3.1.2.2. As a Result of Claims by a Related Entity of Mine.**  If a Related Entity of mine files, maintains, or voluntarily participates in a lawsuit asserting that a Permitted Use infringes any Granted Claims it would have had the right to enforce had it signed this Agreement, then I relinquish any rights, grants, and promises I have received for the Specification from other signatories of this Agreement, unless a) my promise to you was terminated pursuant to section 3.1.2.1, or b) that suit was in response to a corresponding suit first brought by you against the Related Entity.

#### 3.1.3. Additional Conditions.  

This promise is not an assurance (i) that any of my copyrights or issued patent claims cover an implementation of the Specification or are enforceable or (ii) that an implementation of the Specification would not infringe intellectual property rights of any third party. Notwithstanding the personal nature of my promise, this promise is intended to be binding on any future owner, assignee or exclusive licensee to whom has been given the right to enforce any Granted Claims against third parties.

#### 3.1.4. Bankruptcy.

Solely for purposes of Section 365(n) of Title 11, United States Bankruptcy Code and any equivalent law in any foreign jurisdiction, this promise will be treated as if it were a license and you may elect to retain your rights under this promise if I (or any owner of any patents or patent applications referenced herein), as a debtor in possession, or a bankruptcy trustee, reject this non-assert.

### 3.2. Patent License Commitment. 

In addition to rights granted in 3.1, on behalf of me and my successors in interest and assigns, I agree to grant to you a no charge, royalty free license to my Granted Claims on reasonable and non-discriminatory terms, where such license applies only to those Granted Claims infringed by the implementation of the Specification, solely for your Permitted Uses.

## 4. No Other Rights. 

Except as specifically set forth in this Agreement, no other express or implied patent, trademark, copyright, or other property rights are granted under this Agreement, including by implication, waiver, or estoppel.
 
## 5. Antitrust Compliance.  

I acknowledge that I may compete with other participants, that I am under no obligation to implement the Specification, that each participant is free to develop competing technologies and standards, and that each party is free to license its patent rights to third parties, including for the purpose of enabling competing technologies and standards.

## 6. Non-Circumvention.  

I agree that I will not intentionally take or willfully assist any third party to take any action for the purpose of circumventing my obligations under this Agreement.

## 7. Representations, Warranties and Disclaimers.  

I represent and warrant that I am legally entitled to grant the rights and promises set forth in this Agreement. IN ALL OTHER RESPECTS THE SPECIFICATION IS PROVIDED "AS IS."  The entire risk as to implementing or otherwise using the Specification is assumed by the implementer and user. Except as stated herein, I expressly disclaim any warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringement, fitness for a particular purpose, or title, related to the Specification. IN NO EVENT WILL ANY PARTY BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH RESPECT TO THIS AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. All of my obligations under Section 3 regarding the transfer, successors in interest, or assignment of Granted Claims will be satisfied if I notify the transferee or assignee of any patent that I know contains Granted Claims of the obligations under Section 3. Nothing in this Agreement requires me to undertake a patent search.

## 8. Definitions.

**8.1. Agreement.**  “Agreement” means this Final Specification Agreement, which sets forth the rights, grants, promises, limitations, conditions, obligations, and disclaimers made available for the particular Specification.

**8.2. Bound Entities.**  “Bound Entities” means the entity listed below and any entities that the Bound Entity Controls.

**8.3. Control.**  “Control” means direct or indirect control of more than 50% of the voting power to elect directors of that corporation, or for any other entity, the power to direct management of such entity.

**8.4. Granted Claims.**  "Granted Claims" are those patent claims that I own or control, including those patent claims I acquire or control after the Date below, that are infringed by Permitted Uses. Granted Claims include only those patent claims that are infringed by the implementation of any portions of the Specification where the Specification describes the functionality causing the infringement in detail and does not merely reference the functionality causing the infringement. 

**8.5. I, Me, or My.**   “I,” “me,” or “my” refers to the signatory below and its Bound Entities, if applicable.

**8.6. Permitted Uses.**  “Permitted Uses” means making, using, selling, offering for sale, importing or distributing any implementation of the Specification 1) only to the extent it implements the Specification and 2) so long as all required portions of the Specification are implemented. Permitted Uses do not extend to any portion of an implementation that is not included in the Specification.

**8.7. Related Entities.**  “Related Entities” means 1) any entity that Controls the Bound Entity (“Upstream Entity”), and 2) any other entity that is Controlled by an Upstream Entity that is not itself a Bound Entity.

**8.8. Specification.**  “Specification” means the Specification identified below.

**8.9. You or Your.**  “You,” “you,” or “your” means any person or entity who exercises copyright or patent rights granted under this Agreement, and any person or entity you Control.
 
 
# Scope


Specification and version this Agreement applies to:
FDC3 version 1.0, comprising the following specifications:
API (https://fdc3.finos.org/docs/1.0/api/api-spec)
Intents (https://fdc3.finos.org/docs/1.0/intents-spec)
Context Data (https://fdc3.finos.org/docs/1.0/context-spec)
App Directory (https://fdc3.finos.org/docs/1.0/appd-spec)
 
The “required portions” of the specifications as referenced in Section 8.6 (“Permitted Uses”) are defined by https://fdc3.finos.org/docs/1.0/fdc3-compliance.


# Signatures

I certify that I am authorized to execute this agreement on behalf of the Bound Entity named below, and that all promises made herein relating to this Specification are commitments of the Bound Entity.

* Adaptive Financial Consulting, 110 Bishopsgate, London EC2N 4AY, UK (2019-03-13)
* ChartIQ, Inc., 609 East Market St, Suite 111, Charlottesville, VA 22902 (2019-03-12)
* Cloud9 Technologies LLC, 565 5th Avenue, 18th Floor, NY, NY 10017 (2019-03-21)
* FactSet Research Systems Inc., 601 Merritt 7, 3rd Floor, Norwalk, CT 06851 (2019-05-28)
* Green Key Technologies, 55 W Monroe St Suite 1650, Chicago IL 60603 (2019-04-04)
* IHS Markit, 450 West 33rd Street, New York, NY 10001 (2019-04-05)
* OpenFin Inc., 25 Broadway, FL9, New York, NY 10004 (2019-03-12)
* Refinitiv, 3 Times Square, New York, NY 10036 (2019-03-14)
* Scott Logic, 1 St. James Gate, Newcastle, NE1 4XF, UK
* Tick42 OOD, 31 Aleksandar Malinov Blvd, Sofia 1729, Bulgaria


================================================
FILE: README.md
================================================
# FDC3 - Financial Desktop Connectivity and Collaboration Consortium

<a href='http://fdc3.finos.org'><img src='./website/static/img/fdc3-logo-2019-color.png' height='150' alt='FDC3 Logo' aria-label='fdc3.finos.org' /></a>

[![Latest Standard](https://img.shields.io/badge/release-2.2-blue)](https://github.com/finos/fdc3/releases/v2.2)
[![npm](https://img.shields.io/npm/v/@finos/fdc3)](https://www.npmjs.com/package/@finos/fdc3)
[![FINOS - Released](https://cdn.jsdelivr.net/gh/finos/contrib-toolbox@main/images/badge-released.svg)](https://finosfoundation.atlassian.net/wiki/display/FINOS/Released)
[![License Code](https://img.shields.io/badge/code_license-Apache_2.0-blue)](https://opensource.org/licenses/Apache-2.0)
[![License Standard](https://img.shields.io/badge/standard_license-CSL_1.0-blue)](https://github.com/finos/FDC3?tab=License-1-ov-file#readme)
[![Stack Overflow](https://img.shields.io/badge/stackoverflow-fdc3-orange.svg)](https://stackoverflow.com/questions/tagged/fdc3)
[![npm-build](https://github.com/finos/FDC3/workflows/npm-build/badge.svg)](https://github.com/finos/FDC3/actions?query=workflow%3Anpm-build)
[![Slack](https://img.shields.io/badge/slack-@finos/fdc3-green.svg?logo=slack)](https://finos-lf.slack.com/messages/fdc3/)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6579/badge)](https://bestpractices.coreinfrastructure.org/projects/6579)
[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/finos/FDC3/badge)](https://scorecard.dev/viewer/?uri=github.com/finos/FDC3)

## What Is It?

[FDC3](https://fdc3.finos.org) is an open standard for applications on financial desktop to interoperate and exchange data with each other.  

- Users benefit from a more joined-up experience, which reduces the "friction" in getting common tasks done,
- By enabling applications to:
  - launch other apps (build a launcher),
  - respond to activity in other apps (context sharing),
  - request functionality from other apps (raising intents).

### What Are The Benefits?

#### 📇 Help Manage Information Overload

> Finance is an information-dense environment.  
> Typically, traders will use serveral different displays so that they can keep track of multiple information sources at once.
> FDC3 helps with this by sharing the "context" between multiple applications, so that they collectively track the topic the user is focused on.

#### 🏃‍♂️ Work Faster

> FDC3 standardizes a way to call actions between applications (called "intents").
> Applications can raise intents for other apps to resolve, extending each other's functionality.
> Instead of the user copy-and-pasting bits of data from one application to another, FDC3 makes sure the intents have the data they need to seamlessly transition activity between applications.

#### 🖥️  Platform Agnostic

> As an open standard, FDC3 can be implemented on any platform and in any language.
> All that is required is a "Desktop Agent" that implements the FDC3 standard, which is responsible for co-ordinating application interactions.  (For a list of open source and proprietary desktop agents, see "Platform providers" [here](https://fdc3.finos.org/community#type-platform-provider).)
> FDC3 is successfully running on Web and Native platforms in financial institutions around the world.

#### 🔌  End the Integration Nightmare

> By providing support for FDC3, vendors and financial organizations alike can avoid the bilateral or trilateral integration projects that plague desktop app roll-out, cause vendor lock-in and result in a slow pace of change on the Financial Services desktop.

#### 👐 Open Standards Promote Innovation

> FDC3 is developed collaboratively by a [consortium of industry participants](https://fdc3.finos.org/community#type-all) including banks, agent vendors, app developers and FinTech firms.  By design, FDC3 is open to extension.  We have an active community working on growing and improving the standard with new data and intents.

## How Does It Work?

FDC3 includes a standardized API for a Desktop agent, an OpenAPI App Directory, standard verbs to invoke actions between applications (called "intents"), standard formats for data passed between applications (called "context data") and a wire-protocol for Desktop Agents to communicate with each other (called "Desktop Agent Bridging").

Hence, the standard currently consists of five parts:

1. [API Part](https://fdc3.finos.org/docs/api/spec)
2. [App Directory Part](https://fdc3.finos.org/docs/app-directory/overview)
3. [Intents part](https://fdc3.finos.org/docs/intents/spec)
4. [Context Data Part](https://fdc3.finos.org/docs/context/spec)
5. [Agent Bridging Part](https://fdc3.finos.org/docs/next/agent-bridging/spec) [`@experimental`](https://fdc3.finos.org/docs/fdc3-compliance#experimental-features)

The specifications are informed by agreed [business use cases](https://fdc3.finos.org/docs/use-cases/overview), and implemented and used by leading [financial industry participants](https://fdc3.finos.org/community#type-all).

### More Resources

- See <https://fdc3.finos.org> for more information, including on [Compliance](https://fdc3.finos.org/docs/fdc3-compliance) and the [FDC3 charter](https://fdc3.finos.org/docs/fdc3-charter), as well as a comprehensive [API Reference](https://fdc3.finos.org/docs/api/ref/DesktopAgent).
- You can also take the free [FDC3 Training](https://www.edx.org/course/fdc3-interoperability-for-the-financial-desktop) for an introduction to FDC3's core concepts and usage.
- The [FDC3 Community Page Training Tab](https://fdc3.finos.org/community#type-examples-and-training) also contains a selection of online resources to browse.
- FINOS' open source Desktop Agent, [FDC3 Sail](https://github.com/finos/FDC3-Sail) project written with Node / Electron.

## Supported Platforms

- As an open standard, FDC3 can be implemented on any platform and in any language.
- All that is required is a "desktop agent" that supports the FDC3 standard, which is responsible for coordinating application interactions.
- Get started using FDC3 on the web with TypeScript by reading the [supported platforms](https://fdc3.finos.org/docs/supported-platforms) page.

## FDC3 Project Structure

This project (the FDC3 Standard repo) is now a monorepo containing the following modules:

| Directory                            | Release Coordinates                                    | Purpose                                                                                                                                                                                                                | Testing / Coverage    |
|--------------------------------------|--------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|
| `packages/fdc3-schema`               | `@finos/fdc3-schema` (npm)                             | Contains the FDC3 For The Web and Desktop Agent Bridging protocol schemas.   Generates `BridgingTypes.ts` and `BrowserTypes.ts` versions of those schemas for consumption in typescript code.                          | n/a                   |
| `packages/fdc3-context`              | `@finos/fdc3-context` (npm)                            | Contains the schemas for standard FDC3 context types.  Generates the `ContextTypes.ts` typescript version of the schema for consumption in typescript/javascript.                                                      | n/a                   |
| `packages/fdc3-standard`             | `@finos/fdc3-standard` (npm)                           | Interface definitions for the FDC3 standard in typescript (e.g. the `DesktopAgent` interface) and the app directory schema.                                                                                            | Jest, embedded NYC    |
| `packages/fdc3-agent-proxy`          | `@finos/fdc3-agent-proxy` (npm)                        | Contains a complete implementation of the FDC3 DACP.  Written in a platform-agnostic manner.                                                                                                                            | Cucumber, NYC         |
| `packages/fdc3-get-agent`            | `@finos/fdc3-get-agent` (npm)                          | Implements the `getAgent` and `fdc3Ready()` functions as well as the FDC3 Web Connection protocol to allow FDC3 to work on the web or in an electron container.                                                     | Cucumber, NYC         |
| `packages/testing`                   | -not released-                                         | Contains testing tools used by the cucumber tests used within other modules of this project.                                                                                                                           |                       |
| `toolbox/fdc3-conformance`           | -not released-                                         | Contains definitions of the [FDC3 conformance test suite](https://fdc3.finos.org/docs/api/conformance/Conformance-Overview)                                                         | Test Definitions Only |
| `toolbox/fdc3-workbench`             | [here](https://fdc3.finos.org/toolbox/fdc3-workbench/) | Contains an FDC3-For-Web ready version of the [FDC3 Workbench](toolbox/fdc3-workbench/README.md).                                                                                                                      |                       |
| `toolbox/fdc3-explained`             | [Here](https://fdc3.finos.org/toolbox/fdc3-explained)  | [Readme Here](toolbox/fdc3-explained/README.md)                                                                                                                                                                        |                       |
| `toolbox/fdc3-for-web/fdc3-web-impl` | `@finos/fdc3-web-impl` (npm)                           | Portable and reusable implementation of the FDC3 For-The-Web Desktop Agent-Side protocol,                                                                                                                              | Cucumber, NYC         |
| `toolbox/fdc3-for-web/demo`          | -not released-                                         | A reference implementation of an FDC3-For-The-Web Desktop Agent, using the above implementation and conforming to  the conformance test suite (see above) |                       |
| `packages/fdc3`                      | `@finos/fdc3` (npm)                                    | Imports `fdc3-standard`, `fdc3-context`, `fdc3-schema` and `fdc3-get-agent` sub-modules.  This is intended to be the main entry point for typescript / javascript applications using FDC3         |                       |
| `packages/fdc3-commonjs`                      | `@finos/fdc3-commonjs` (npm)                                    | A roll-up of the `fdc3` sub-module.  This is for **backwards compatibility where CommonJS is required**.  May not be provided in future versions of FDC3.         |                       |


### Building and Running The FDC3 Modules

From the root package, you can run `npm run build` to build all the modules, or `npm run test` to run all the tests.  `npm run dev` will start the `demo` and `fdc3-workbench` modules.  You can play with both of these components in your browser at <http://localhost:4000/static/da/index.html>.  Additionally, the conformance suite is included as one of the demo apps, and can also be run.  

For installation and usage instructions, see: <https://fdc3.finos.org/docs/supported-platforms#usage>

### Releasing FDC3 to NPM (for maintainers)

Publishing to npm is handled automatically by the [Publish To NPM](.github/workflows/release.yml) GitHub Actions workflow, which is triggered when a GitHub Release is published. The workflow will lint, test and build the project, then publish all public workspace packages to both npmjs.org and GitHub Packages.

The npm dist-tag is determined by the version in the root `package.json`: versions containing a hyphen (e.g. `2.3.0-beta.1`) are published with the `prerelease` tag, while all other versions are published with the `latest` tag.

1.  **Create a release branch**

  ```bash
  git checkout -b release/v2.3
  ```

2.  **Update version numbers**

  All workspace versions and the root `package.json` version must match. Update them as follows:

  ```bash
  npm version <new-version> --include-workspace-root --workspaces
  npm run syncpack   # synchronizes @finos/* dependency versions and verifies consistency
  npm up             # fixes node_module references
  npm run build      # builds all modules against the new version
  ```

  The `syncpack` script will automatically run `version-check` to verify that the root version matches all public workspace versions. You can also run `npm run version-check` independently at any time.

3.  **Push the branch and create a PR**

  ```bash
  git add .
  git commit -m "Updated to version v2.3.0"
  git push origin release/v2.3
  ```

  Create a PR to merge the release branch into main. You will need other FDC3 maintainers to review and approve the PR.

4.  **Create a GitHub Release to publish to npm**

  Once the PR is merged, [create a new GitHub Release](https://github.com/finos/FDC3/releases/new) targeting the main branch. Publishing the release will trigger the workflow, which will publish all packages to npm and GitHub Packages.

  The workflow also runs a version consistency check before publishing — if the root version doesn't match the workspace versions, the workflow will fail before any packages are published.

### Releasing the FDC3 Website (for maintainers)

Please see instructions in the [website README](./website/README.md).

## Getting Involved

### Using the standard? Let us know

If you are an existing individual or corporate user of the FDC3 standard, we would love to hear from you: just email [fdc3@finos.org](mailto:fdc3@finos.org) with details about how you are using the standard.

- If you'd like to be listed as on the community page, please fill out the [Usage Form](https://share.hsforms.com/1gOo0_A70QqyahOygzryVQg1fux8).
- If listing your logo publicly requires legal evaluation, you can reach out **privately** to the [FDC3 Maintainers](mailto:fdc3-maintainers-private@finos.org).

### Interact with the FDC3 community

#### GitHub

- FDC3 activity primarily happens in this [FDC3 GitHub repository](https://github.com/finos/fdc3). [Watch](https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository) the repository in order to be notified of new Pull Requests and issues.

#### Slack

- The fastest and more interactive way to connect and ask questions to the FDC3 community is to join the [#fdc3 channel on the FINOS slack](https://finos-lf.slack.com/messages/fdc3/).

#### Email

- If you'd like to receive official updates, and/or you don't have access to Slack, please send an email to [fdc3@finos.org](mailto:fdc3@finos.org). You can join the list by sending an email to [fdc3+subscribe@finos.org](mailto:fdc3+subscribe@finos.org).
- To contact the FDC3 maintainers, send an email to [fdc3-maintainers@finos.org](mailto:fdc3-maintainers@finos.org).

#### Meetings

Another great way to interact with the community is to attend one of the following meetings:

- **FDC3 General Meeting** - *Every 6 months on the third Tuesday* ([Join Meeting](https://calendar.finos.org/signup?eventId=6stt9c3m0r4boisrb6tjt4q0v7_20260317T140000Z&title=FDC3+General+Meeting))
- **FDC3 Identity & Security Working Group** - *Monthly on the second Thursday* ([Join Meeting](https://zoom-lfx.platform.linuxfoundation.org/meeting/92600977319?password=17e9e8f8-7d4e-47b4-b8f0-8c68b02005de&invite=true))
- **FDC3 Standard Working Group** - *Monthly on the fourth Thursday* ([Join Meeting](https://zoom-lfx.platform.linuxfoundation.org/meeting/96839365264?password=b5c2bc6a-bc47-43a5-bc49-7be3e0b422c3&invite=true))
- **FDC3 Use Cases and Workflows Discussion Group** - *Monthly on the first Thursday* ([Join Meeting](https://zoom-lfx.platform.linuxfoundation.org/meeting/91001005768?password=0c878e0c-b8a4-42d3-9786-e8c1524d6d1c&invite=true))
- **FDC3 Web Browsers + Bridging Discussion group** - *Monthly on the third Thursday* ([Join Meeting](https://zoom-lfx.platform.linuxfoundation.org/meeting/96615992377?password=88ed4841-afa2-41a6-8de3-e246967e5566&invite=true))

Also consider:

- **FDC3 Sail Project Meeting** - *Every 2 weeks on Mondays* ([Join Meeting](https://zoom-lfx.platform.linuxfoundation.org/meeting/95252800112?password=90638454-991c-4ab0-8aed-791fc372623c&invite=true))



#### Need help?

- Email [fdc3@finos.org](mailto:fdc3@finos.org) if you need help getting started in the FDC3 Community.
- If you encounter technical difficulties accessing repositories, joining Slack, mailing lists or meetings, please email [help@finos.org](mailto:help@finos.org).

### Roadmap

Work on FDC3 is split into several [discussion groups](GOVERNANCE.md#1roles) and releases.  

- Discussion groups each have their own regular meetings in the [FINOS Community Calendar](https://calendar.google.com/calendar/embed?src=finos.org_fac8mo1rfc6ehscg0d80fi8jig%40group.calendar.google.com).  

- Releases can be tracked on the [FDC3 Milestones](https://github.com/finos/FDC3/milestones) page.

### Contributing

Please see the [Contributing](CONTRIBUTING.md) guide for details on how to contribute to FDC3.

_NOTE:_

- Issues that change the Standard usually need discussion. You can post comments directly on the issue or can ask for it to be added to a Standards Working Group meeting agenda by emailing [fdc3@finos.org](mailto:fdc3@finos.org), sending a message to the [#fdc3 channel on the FINOS slack](https://finos-lf.slack.com/messages/fdc3/) or tag the FDC3 maintainers (`@finos/fdc3-maintainers`) in your issue.
- Contributions merged into the main branch of the FDC3 repository will form part of the next pre-draft of the FDC3 Standard (as defined by the [FDC3 Governance document](./GOVERNANCE.md)), which must be approved by a Standard Working Group vote before it is accepted as a draft and subsequently released as the next version of the Standard.

### Why should you get involved in FDC3?

If you or your firm intends to make use of the FDC3 Standard (by implementing a Desktop Agent or App Directory, by adding support to apps to interoperate with others via FDC3, or even by using apps, Desktop Agents or App Directories written by others) then contributing to the governance, maintenance and onward development of the FDC3 Standard will help to protect and strengthen the ecosystem developing around FDC3. Doing so will also empower you to help guide the Standard in directions that are relevant to your use or that of your firm.

If you or your firm are new to contributing to open source projects, please see the variety of resources available from FINOS, (such as the [Open Source readiness project](https://www.finos.org/open-source-readiness)), Linux Foundation ([Participating in Open Source communities](https://www.linuxfoundation.org/tools/participating-in-open-source-communities/)) and others (e.g. [opensource.guide](https://opensource.guide/)).

### What Roles Do Participants Hold?

Please refer to the FDC3 [Governance document](GOVERNANCE.md#1roles) for details of the different roles on the FDC3 project.

### FINOS Code of Conduct

Participants of FINOS standards projects should follow the FINOS Code of Conduct, which can be found at: <https://community.finos.org/docs/governance/code-of-conduct>

## License & Patents

- This version of the FDC3 Standard is licensed under the [Community Specification License](LICENSE.md).  SPDX-License-Identifier: [Community-Spec-1.0](https://spdx.org/licenses/Community-Spec-1.0). 

- Reference implementations and other software contained in FDC3 repositories is licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.html). SPDX-License-Identifier: [Apache-2.0](https://spdx.org/licenses/Apache-2.0). 

- See [Licenses in the FDC3 Charter](https://fdc3.finos.org/docs/fdc3-charter) for details of licensing for previous versions of the FDC3 Standard and [NOTICES.md](./NOTICES.md) for details of license acceptance, withdrawals and exclusions. 

- See [Intellectual Property Claims in the FDC3 Charter](https://fdc3.finos.org/docs/fdc3-charter#intellectual-property-claims) for details of patents in the 1.1-present versions of FDC3.  

- See [PATENTS-FDC3-1.0](PATENTS-FDC3-1.0.md) for details of patents in the 1.0 version of FDC3.

## Vulnerabilities / Security

Please see our [Security Policy](SECURITY.md)

## Intellectual Property Claims

Users of the FDC3 standard are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.

THIS STANDARD IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NON-INFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS STANDARD SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE FOUNDATION, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS STANDARD.

## FDC3 Archive

An archive of FDC3 documentation and meeting notes from the early days of FDC3 is available at <https://finosfoundation.atlassian.net/wiki/spaces/FDC3/overview>. Later meeting minutes cam be found in closed Github issues.

The mailing list archive for [fdc3@finos.org](mailto:fdc3@finos.org) is available at <https://groups.google.com/a/finos.org/g/fdc3>


================================================
FILE: SCOPE.md
================================================
# Scope

The FDC3 Standard specifies protocols and taxonomies to enable applications in financial services workflows to interoperate in a plug-and-play fashion, without prior bi-lateral agreements between app developers.

Financial applications include any type of application used in common financial workflows, including:

* Containerized Web applications - Interoperability platforms extending Chromium (e.g. Electron, OpenFin, interop.io's io.Connect)
* PWAs & Web applications running in a commercial browser
* Traditional native applications implemented in C++, .NET, Java, Python, etc.
* Hybrid web/native applications - stand alone native apps embedding a WebView (e.g. Electron, CEF, WebView2, NW.js etc.)
* Common desktop applications not specific to finance, but critical to workflows - such as Excel, Outlook, Slack, etc.

This standards group is focused specifically on establishing and promoting standards for the interoperability of front-end applications, hence, its activities are focused on:

* The discovery, configuration, identity and use of financial services applications (e.g. the FDC3 [App Directory](https://fdc3.finos.org/docs/app-directory/overview)),
* APIs for communication and interaction between applications (e.g. the [Desktop Agent API](https://fdc3.finos.org/docs/api/spec) and [Agent Bridging API](https://fdc3.finos.org/docs/agent-bridging/spec)),
* Message formats used for communication (e.g. [Context Data](https://fdc3.finos.org/docs/context/spec))
* Names for requested functionality and workflow steps (e.g. [Intents](https://fdc3.finos.org/docs/intents/spec))
* Creating and promoting tests for conformance to these standards (e.g. the FDC3 Conformance Framework) and training & certification programs that relate to them (e.g. [Introduction to FDC3](https://training.linuxfoundation.org/express-learning/introduction-to-fdc3-lfel1000/))


The group's activities do not include:

* Interoperability or communication between back-end platforms.
* Defining financial objects - where existing standards are well established and can be reused.

Any changes of Scope are not retroactive.


================================================
FILE: SECURITY.md
================================================
# Security Policy

## Supported Versions

Use this section to tell people about which versions of your project are currently being supported with security updates.

| Version | Supported          |
| ------- | ------------------ |
| 1.2     | :white_check_mark: |
| 2.0     | :white_check_mark: |
| < 1.2   | :x:                |

## Reporting a Vulnerability

If you uncover vulnerabilities in this software, please contact `help@finos.org` privately.  We aim to respond within 3 working days.

## FINOS Security Scanning

The FDC3 project is scanned using [GitHub Actions](https://github.com/finos/FDC3/actions) provided by the [FINOS Security Scanning](https://github.com/finos/security-scanning) project. If, as a maintainer, you can't access the results of these, please contact [FINOS Help](mailto:help@finos.org).


================================================
FILE: allow-list.json
================================================
{
    "ignore": [
        { "id": "CVE-2023-45857", "reason": "False positive as already on 0.28.1" }
    ]
}


================================================
FILE: comment-template.md
================================================
## Coverage Report

Commit: [{{short_commit_sha}}]({{commit_link}})
Base: [{{base_ref}}@{{base_short_commit_sha}}]({{base_commit_link}})

| Type                      | Base                                       | This PR                                                                            |
|---------------------------|--------------------------------------------|------------------------------------------------------------------------------------|
| Total Statements Coverage | {{base_total_statements_coverage_percent}} | {{total_statements_coverage_percent}} ({{total_statements_coverage_percent_diff}}) |
| Total Branches Coverage   | {{base_total_branches_coverage_percent}}   | {{total_branches_coverage_percent}} ({{total_branches_coverage_percent_diff}})     |
| Total Functions Coverage  | {{base_total_functions_coverage_percent}}  | {{total_functions_coverage_percent}} ({{total_functions_coverage_percent_diff}})   |
| Total Lines Coverage      | {{base_total_lines_coverage_percent}}      | {{total_lines_coverage_percent}} ({{total_lines_coverage_percent_diff}})           |

<details>
<summary>Details (changed files)</summary>
{{changed_files_coverage_table}}
</details>
<details>
<summary>Details (all files)</summary>
{{files_coverage_table}}
</details>

================================================
FILE: netlify.toml
================================================
[build]
  ignore = "git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF . ../{packages,website,toolbox}/"

[[headers]]
  # Define which paths this specific [[headers]] block will cover.
  for = "/*"
    [headers.values]
    Access-Control-Allow-Origin = "*"
    
[build.environment]
  NODE_VERSION = "22"


================================================
FILE: package.json
================================================
{
  "name": "@finos/fdc3",
  "version": "2.2.2",
  "author": "Fintech Open Source Foundation (FINOS)",
  "homepage": "https://fdc3.finos.org",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/finos/FDC3.git"
  },
  "publishConfig": {
    "tag": "latest"
  },
  "license": "Apache-2.0",
  "main": "dist/index.js",
  "typings": "dist/index.d.ts",
  "module": "dist/fdc3.esm.js",
  "files": [
    "dist"
  ],
  "workspaces": [
    "packages/fdc3-schema",
    "packages/fdc3-context",
    "packages/fdc3-standard",
    "packages/testing",
    "packages/fdc3-agent-proxy",
    "toolbox/fdc3-for-web/fdc3-web-impl",
    "packages/fdc3-get-agent",
    "packages/fdc3",
    "packages/fdc3-commonjs",
    "toolbox/fdc3-for-web/reference-ui",
    "toolbox/fdc3-for-web/demo",
    "toolbox/fdc3-workbench",
    "toolbox/fdc3-conformance"
  ],
  "scripts": {
    "clean": "npm run clean --workspaces --if-present",
    "build": "npm run build --workspaces --if-present",
    "test": "npm run test --workspaces --if-present",
    "merge": "istanbul-merge --out coverage/complete.json packages/fdc3-standard/coverage/coverage-final.json packages/fdc3-get-agent/coverage/coverage-final.json packages/fdc3-agent-proxy/coverage/coverage-final.json toolbox/fdc3-for-web/fdc3-web-impl/coverage/coverage-final.json",
    "report": "nyc report --reporter json-summary --report-dir nyc-coverage-report --exclude-after-remap false --temp-dir coverage",
    "lint": "npm run lint --workspaces --if-present",
    "syncpack": "npm exec syncpack -- fix --dependencies \"@finos/*\" && npm run version-check",
    "version-check": "node scripts/version-check.js",
    "dev": "concurrently \"cd toolbox/fdc3-conformance && npm run dev\" \"cd toolbox/fdc3-workbench && npm run dev\" \"cd toolbox/fdc3-for-web/reference-ui && npm run dev\" \"cd toolbox/fdc3-for-web/demo && npm run dev\"",
    "prepare": "husky"
  },
  "prettier": {
    "semi": true,
    "singleQuote": true,
    "arrowParens": "avoid",
    "trailingComma": "es5",
    "endOfLine": "auto",
    "printWidth": 120
  },
  "dependencies": {
    "syncpack": "^14.0.0"
  },
  "devDependencies": {
    "@eslint/js": "^9.19.0",
    "@types/mocha": "^10.0.10",
    "@types/node": "^20.16.11",
    "@vitest/coverage-v8": "^3.2.4",
    "concurrently": "^8.2.2",
    "eslint": "^9.32.0",
    "eslint-config-prettier": "^9.1.0",
    "globals": "^15.14.0",
    "husky": "^9.1.7",
    "istanbul-merge": "^2.0.0",
    "lint-staged": "^15.2.10",
    "nyc": "17.1.0",
    "pixelmatch": "^7.1.0",
    "prettier": "3.4.1",
    "rimraf": "^6.0.1",
    "tsx": "^4.19.1",
    "typescript": "^5.6.3",
    "typescript-eslint": "^8.17.0",
    "vitest": "^3.2.4"
  },
  "overrides": {
    "serialize-javascript": "^7.0.5"
  },
  "lint-staged": {
    "**/*": "prettier --write --ignore-unknown"
  }
}


================================================
FILE: packages/fdc3/README.md
================================================
# FDC3

This npm module is the main entry point for the Financial Desktop Connectivity and Collaboration Consortium (FDC3) JavaScript API.

Since version 2.2.0 this module only provides an ES6 module. Applications requiring a CommonJS module should either update to ES6 or switch to the [@finos/fdc3-commonjs module](https://npmjs.com/package/@finos/fdc3-commonjs) (provided for backwards compatibility).

## Installation

To install the FDC3 module, use npm:

```bash
npm install @finos/fdc3
```

## Usage

To use the FDC3 module in your project, import it as follows:

```javascript
import { getAgent } from '@finos/fdc3';
// getAgent() returns the FDC3 Desktop Agent
const fdc3 = getAgent();

// Example usage
const contact = {
  type: 'fdc3.contact',
  name: 'Jane Doe',
  id: {
    email: 'jane@mail.com'
  }
};

fdc3.raiseIntent('ViewProfile', contact);
```

## Documentation

For detailed documentation and API reference, please visit the [official FDC3 documentation](https://fdc3.finos.org/docs/api/spec).

## Contributing

We welcome contributions to the FDC3 project. Please see our [contributing guidelines](https://github.com/finos/FDC3/blob/main/CONTRIBUTING.md) for more information.

## License

This project is licensed under the [Apache 2.0 License](LICENSE).

## Contact

For any questions or support, please reach out to the FDC3 community on our [Slack channel](https://finos-lf.slack.com/archives/CJ8Q8H4Q1) or [mailing list](mailto:fdc3@finos.org).

## Further Details

Further details are avilable in the main [FDC3 Project README](https://github.com/finos/FDC3)


================================================
FILE: packages/fdc3/package.json
================================================
{
  "name": "@finos/fdc3",
  "version": "2.2.2",
  "author": "Fintech Open Source Foundation (FINOS)",
  "homepage": "https://fdc3.finos.org",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/finos/FDC3.git"
  },
  "publishConfig": {
    "tag": "latest"
  },
  "license": "Apache-2.0",
  "main": "dist/src/index.js",
  "types": "dist/src/index.d.ts",
  "files": [
    "dist"
  ],
  "scripts": {
    "clean": "npx rimraf dist",
    "build": "tsc"
  },
  "dependencies": {
    "@finos/fdc3-context": "2.2.2",
    "@finos/fdc3-get-agent": "2.2.2",
    "@finos/fdc3-schema": "2.2.2",
    "@finos/fdc3-standard": "2.2.2"
  },
  "type": "module"
}


================================================
FILE: packages/fdc3/src/index.ts
================================================
export * from '@finos/fdc3-context';

import { BrowserTypes, BridgingTypes } from '@finos/fdc3-schema';
export { BridgingTypes, BrowserTypes };

import { DesktopAgent, AppIdentifier } from '@finos/fdc3-standard';
export * from '@finos/fdc3-standard';
export { AppIdentifier };

import { getAgent, fdc3Ready } from '@finos/fdc3-get-agent';
export { getAgent, fdc3Ready };

declare global {
  interface Window {
    fdc3?: DesktopAgent;
  }
}


================================================
FILE: packages/fdc3/tsconfig.json
================================================
{
  "extends": "../../tsconfig.root.json",
  "compilerOptions": {
    "rootDirs": [
      "src"
    ],
    "outDir": "dist",
  },
  "include": [
    "src",
  ],
  "exclude": [],
  "references": [
    {
      "path": "../fdc3-schema"
    },
    {
      "path": "../fdc3-context"
    },
    {
      "path": "../fdc3-get-agent"
    },
    {
      "path": "../fdc3-standard"
    }
  ]
}

================================================
FILE: packages/fdc3-agent-proxy/README.md
================================================
# FDC3 Agent Proxy

This package contains complete implementation of the FDC3 Desktop Agent Communication Protocol (DACP).  

Further details:
 - https://github.com/finos/FDC3
 - [FDC3 Specification](https://fdc3.finos.org/)
 - Main FDC3 module: https://www.npmjs.com/package/@finos/fdc3

================================================
FILE: packages/fdc3-agent-proxy/eslint.config.mjs
================================================
import globals from 'globals';
import pluginJs from '@eslint/js';
import tseslint from 'typescript-eslint';
import eslintConfigPrettier from 'eslint-config-prettier';

/** @type {import('eslint').Linter.Config[]} */
export default [
  {
    languageOptions: {
      parserOptions: {
        tsconfigRootDir: import.meta.dirname,
      },
    },
  },
  { files: ['**/*.{js,mjs,cjs,ts}'] },
  { languageOptions: { globals: globals.browser } },
  pluginJs.configs.recommended,
  ...tseslint.configs.recommended,
  eslintConfigPrettier,
];


================================================
FILE: packages/fdc3-agent-proxy/package.json
================================================
{
  "name": "@finos/fdc3-agent-proxy",
  "version": "2.2.2",
  "author": "Fintech Open Source Foundation (FINOS)",
  "homepage": "https://fdc3.finos.org",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/finos/FDC3.git"
  },
  "publishConfig": {
    "tag": "latest"
  },
  "license": "Apache-2.0",
  "type": "module",
  "main": "dist/src/index.js",
  "types": "dist/src/index.d.ts",
  "files": [
    "dist"
  ],
  "scripts": {
    "build": "tsc",
    "test": "tsc && vitest run",
    "test:watch": "vitest",
    "test:coverage": "vitest run --coverage",
    "clean": "rimraf dist coverage node_modules",
    "lint": "eslint src/"
  },
  "dependencies": {
    "@finos/fdc3-standard": "2.2.2"
  },
  "devDependencies": {
    "@cucumber/cucumber": "10.3.1",
    "@finos/testing": "2.2.2",
    "@types/uuid": "^10.0.0",
    "eslint-plugin-import": "^2.31.0",
    "eslint-plugin-prettier": "3.3.1",
    "is-ci": "2.0.0",
    "jsonpath-plus": "^10.1.0",
    "quickpickle": "^1.0.0",
    "uuid": "^9.0.1"
  }
}


================================================
FILE: packages/fdc3-agent-proxy/src/DesktopAgentProxy.ts
================================================
import {
  AppIdentifier,
  AppMetadata,
  ContextHandler,
  DesktopAgent,
  EventHandler,
  FDC3EventTypes,
  ImplementationMetadata,
  IntentHandler,
  IntentResolution,
  Listener,
  LogLevel,
} from '@finos/fdc3-standard';
import { ChannelSupport } from './channels/ChannelSupport.js';
import { AppSupport } from './apps/AppSupport.js';
import { IntentSupport } from './intents/IntentSupport.js';
import { Connectable, Channel } from '@finos/fdc3-standard';
import { Context } from '@finos/fdc3-context';
import { HeartbeatSupport } from './heartbeat/HeartbeatSupport.js';
import { Logger } from './util/Logger.js';

/**
 * This splits out the functionality of the desktop agent into
 * app, channels and intents concerns.
 */
export class DesktopAgentProxy implements DesktopAgent, Connectable {
  readonly heartbeat: HeartbeatSupport;
  readonly channels: ChannelSupport;
  readonly intents: IntentSupport;
  readonly apps: AppSupport;
  readonly connectables: Connectable[];

  constructor(
    heartbeat: HeartbeatSupport,
    channels: ChannelSupport,
    intents: IntentSupport,
    apps: AppSupport,
    connectables: Connectable[],
    logLevel: LogLevel | null
  ) {
    this.heartbeat = heartbeat;
    this.intents = intents;
    this.channels = channels;
    this.apps = apps;
    this.connectables = connectables;
    //Default log level is set in the Logger utility
    if (logLevel) {
      Logger.setLogLevel(logLevel);
    }

    //bind all functions to allow destructuring
    this.addEventListener = this.addEventListener.bind(this);
    this.getInfo = this.getInfo.bind(this);
    this.broadcast = this.broadcast.bind(this);
    this.addContextListener = this.addContextListener.bind(this);
    this.getUserChannels = this.getUserChannels.bind(this);
    this.getSystemChannels = this.getSystemChannels.bind(this);
    this.getOrCreateChannel = this.getOrCreateChannel.bind(this);
    this.createPrivateChannel = this.createPrivateChannel.bind(this);
    this.leaveCurrentChannel = this.leaveCurrentChannel.bind(this);
    this.joinUserChannel = this.joinUserChannel.bind(this);
    this.joinChannel = this.joinChannel.bind(this);
    this.getCurrentChannel = this.getCurrentChannel.bind(this);
    this.joinChannel = this.joinChannel.bind(this);
    this.findIntent = this.findIntent.bind(this);
    this.findIntentsByContext = this.findIntentsByContext.bind(this);
    this.raiseIntent = this.raiseIntent.bind(this);
    this.addIntentListener = this.addIntentListener.bind(this);
    this.raiseIntentForContext = this.raiseIntentForContext.bind(this);
    this.open = this.open.bind(this);
    this.findInstances = this.findInstances.bind(this);
    this.getAppMetadata = this.getAppMetadata.bind(this);
    this.disconnect = this.disconnect.bind(this);
    this.connect = this.connect.bind(this);
  }

  addEventListener(type: FDC3EventTypes | null, handler: EventHandler): Promise<Listener> {
    return this.channels.addEventListener(handler, type);
  }

  getInfo(): Promise<ImplementationMetadata> {
    return this.apps.getImplementationMetadata();
  }

  async broadcast(context: Context): Promise<void> {
    const channel = await this.channels.getUserChannel();
    if (channel) {
      return channel.broadcast(context);
    } else {
      return Promise.resolve();
    }
  }

  addContextListener(
    contextTypeOrHandler: ContextHandler | string | null,
    handler?: ContextHandler
  ): Promise<Listener> {
    let theContextType: string | null;
    let theHandler: ContextHandler;

    if (contextTypeOrHandler == null && typeof handler === 'function') {
      theContextType = null;
      theHandler = handler;
    } else if (typeof contextTypeOrHandler === 'string' && typeof handler === 'function') {
      theContextType = contextTypeOrHandler;
      theHandler = handler;
    } else if (typeof contextTypeOrHandler === 'function') {
      // deprecated one-arg version
      theContextType = null;
      theHandler = contextTypeOrHandler as ContextHandler;
    } else {
      //invalid call
      // TODO: Replace with Standardized error when #1490 is resolved
      throw new Error('Invalid arguments passed to addContextListener!');
    }

    return this.channels.addContextListener(theHandler, theContextType);
  }

  getUserChannels() {
    return this.channels.getUserChannels();
  }

  getSystemChannels() {
    return this.channels.getUserChannels();
  }

  getOrCreateChannel(channelId: string) {
    return this.channels.getOrCreate(channelId);
  }

  createPrivateChannel() {
    return this.channels.createPrivateChannel();
  }

  leaveCurrentChannel() {
    return this.channels.leaveUserChannel();
  }

  joinUserChannel(channelId: string) {
    return this.channels.joinUserChannel(channelId);
  }

  joinChannel(channelId: string) {
    return this.channels.joinUserChannel(channelId);
  }

  getCurrentChannel(): Promise<Channel | null> {
    return this.channels.getUserChannel();
  }

  findIntent(intent: string, context: Context, resultType: string | undefined) {
    return this.intents.findIntent(intent, context, resultType);
  }

  findIntentsByContext(context: Context) {
    return this.intents.findIntentsByContext(context);
  }

  private ensureAppId(app?: string | AppIdentifier): AppIdentifier | undefined {
    if (typeof app === 'string') {
      return {
        appId: app,
      };
    } else if (app?.appId) {
      return app as AppIdentifier;
    } else {
      return undefined;
    }
  }

  raiseIntent(intent: string, context: Context, app?: string | AppIdentifier) {
    return this.intents.raiseIntent(intent, context, this.ensureAppId(app));
  }

  addIntentListener(intent: string, handler: IntentHandler) {
    return this.intents.addIntentListener(intent, handler);
  }

  raiseIntentForContext(context: Context, app?: string | AppIdentifier): Promise<IntentResolution> {
    return this.intents.raiseIntentForContext(context, this.ensureAppId(app));
  }

  open(app: string | AppIdentifier, context?: Context | undefined) {
    return this.apps.open(this.ensureAppId(app)!, context);
  }

  findInstances(app: AppIdentifier) {
    return this.apps.findInstances(app);
  }

  getAppMetadata(app: AppIdentifier): Promise<AppMetadata> {
    return this.apps.getAppMetadata(app);
  }

  async disconnect(): Promise<void> {
    await Promise.all(this.connectables.map(c => c.disconnect()));
  }

  async connect(): Promise<void> {
    await Promise.all(this.connectables.map(c => c.connect()));
  }
}


================================================
FILE: packages/fdc3-agent-proxy/src/Messaging.ts
================================================
import { AppIdentifier } from '@finos/fdc3-standard';
import { RegisterableListener } from './listeners/RegisterableListener.js';
import {
  AppRequestMessage,
  AgentResponseMessage,
  WebConnectionProtocol6Goodbye,
} from '@finos/fdc3-schema/dist/generated/api/BrowserTypes.js';

export interface Messaging {
  /**
   * Creates UUIDs used in outgoing messages
   */
  createUUID(): string;

  /**
   * Post an outgoing message
   */
  post(message: AppRequestMessage | WebConnectionProtocol6Goodbye): Promise<void>;

  /**
   * Registers a listener for incoming messages.
   */
  register(l: RegisterableListener): void;

  /**
   * Unregister a listener with the given id
   * @param id
   */
  unregister(id: string): void;

  /** Create a metadata element to attach to outgoing messages. */
  createMeta(): AppRequestMessage['meta'];

  /**
   * Waits for a specific matching message
   */
  waitFor<X extends AgentResponseMessage>(
    filter: (m: X) => boolean,
    timeoutMs?: number,
    timeoutErrorMessage?: string
  ): Promise<X>;

  /**
   * Sends a request message and waits for a response. If the response contains a payload.error, it is thrown.
   * @param message The request message to send.
   */
  exchange<X extends AgentResponseMessage>(
    message: AppRequestMessage,
    expectedTypeName: string,
    timeoutMs: number
  ): Promise<X>;

  /**
   * App identification used to provide source information used in
   * message meta elements, IntentResolution etc..
   */
  getAppIdentifier(): AppIdentifier;

  /** Disconnects the underlying message transport. */
  disconnect(): Promise<void>;
}


================================================
FILE: packages/fdc3-agent-proxy/src/apps/AppSupport.ts
================================================
import { AppIdentifier, AppMetadata, ImplementationMetadata } from '@finos/fdc3-standard';
import { Context } from '@finos/fdc3-context';

export interface AppSupport {
  findInstances(app: AppIdentifier): Promise<Array<AppIdentifier>>;
  getAppMetadata(app: AppIdentifier): Promise<AppMetadata>;
  open(app: AppIdentifier, context?: Context): Promise<AppIdentifier>;
  getImplementationMetadata(): Promise<ImplementationMetadata>;
}


================================================
FILE: packages/fdc3-agent-proxy/src/apps/DefaultAppSupport.ts
================================================
import { AppIdentifier, AppMetadata, ImplementationMetadata, OpenError, ResolveError } from '@finos/fdc3-standard';
import { Context } from '@finos/fdc3-context';
import { AppSupport } from './AppSupport.js';
import { Messaging } from '../Messaging.js';
import {
  FindInstancesRequest,
  FindInstancesResponse,
  GetAppMetadataRequest,
  GetAppMetadataResponse,
  GetInfoRequest,
  GetInfoResponse,
  OpenRequest,
  OpenResponse,
} from '@finos/fdc3-schema/dist/generated/api/BrowserTypes.js';
import { throwIfUndefined } from '../util/throwIfUndefined.js';
import { Logger } from '../util/Logger.js';

export class DefaultAppSupport implements AppSupport {
  readonly messaging: Messaging;
  readonly messageExchangeTimeout: number;
  readonly appLaunchTimeout: number;

  constructor(messaging: Messaging, messageExchangeTimeout: number, appLaunchTimeout: number) {
    this.messaging = messaging;
    this.messageExchangeTimeout = messageExchangeTimeout;
    this.appLaunchTimeout = appLaunchTimeout;
  }

  async findInstances(app: AppIdentifier): Promise<AppIdentifier[]> {
    const request: FindInstancesRequest = {
      type: 'findInstancesRequest',
      payload: {
        app,
      },
      meta: this.messaging.createMeta(),
    };

    const out = await this.messaging.exchange<FindInstancesResponse>(
      request,
      'findInstancesResponse',
      this.messageExchangeTimeout
    );
    return out.payload.appIdentifiers ?? [];
  }

  async getAppMetadata(app: AppIdentifier): Promise<AppMetadata> {
    const request: GetAppMetadataRequest = {
      type: 'getAppMetadataRequest',
      payload: {
        app: app as AppIdentifier,
      },
      meta: this.messaging.createMeta(),
    };

    const response = await this.messaging.exchange<GetAppMetadataResponse>(
      request,
      'getAppMetadataResponse',
      this.messageExchangeTimeout
    );

    throwIfUndefined(
      response.payload.appMetadata,
      'Invalid response from Desktop Agent to getAppMetadata!',
      response,
      ResolveError.TargetAppUnavailable
    );

    return response.payload.appMetadata!;
  }

  async open(app: AppIdentifier, context?: Context | undefined): Promise<AppIdentifier> {
    const request: OpenRequest = {
      type: 'openRequest',
      payload: {
        app: {
          appId: app.appId,
          instanceId: app.instanceId,
        },
        context,
      },
      meta: this.messaging.createMeta(),
    };

    const response = await this.messaging.exchange<OpenResponse>(request, 'openResponse', this.appLaunchTimeout);

    throwIfUndefined(
      response.payload.appIdentifier,
      'Invalid response from Desktop Agent to open!',
      response,
      OpenError.AppNotFound
    );

    return response.payload.appIdentifier!;
  }

  async getImplementationMetadata(): Promise<ImplementationMetadata> {
    const request: GetInfoRequest = {
      type: 'getInfoRequest',
      payload: {},
      meta: this.messaging.createMeta(),
    };

    const response = await this.messaging.exchange<GetInfoResponse>(
      request,
      'getInfoResponse',
      this.messageExchangeTimeout
    );

    if (response.payload.implementationMetadata) {
      return response.payload.implementationMetadata;
    } else {
      //This will only happen if the DA implementation returns an invalid message with a missing implementationMetadata property
      Logger.error('Invalid response from Desktop Agent to open!', response);
      const unknownImpl: ImplementationMetadata = {
        fdc3Version: 'unknown',
        provider: 'unknown',
        appMetadata: { appId: 'unknown', instanceId: 'unknown' },
        optionalFeatures: {
          OriginatingAppMetadata: false,
          UserChannelMembershipAPIs: false,
          DesktopAgentBridging: false,
        },
      };
      return unknownImpl;
    }
  }
}


================================================
FILE: packages/fdc3-agent-proxy/src/channels/ChannelSupport.ts
================================================
import {
  Channel,
  Connectable,
  ContextHandler,
  EventHandler,
  FDC3EventTypes,
  Listener,
  PrivateChannel,
} from '@finos/fdc3-standard';

export interface ChannelSupport extends Connectable {
  getUserChannel(): Promise<Channel | null>;
  getUserChannels(): Promise<Channel[]>;
  getOrCreate(id: string): Promise<Channel>;
  createPrivateChannel(): Promise<PrivateChannel>;
  leaveUserChannel(): Promise<void>;
  joinUserChannel(id: string): Promise<void>;
  addContextListener(handler: ContextHandler, type: string | null): Promise<Listener>;

  /**
   * TODO: Move handling for userChannelChanged out of ChannelSupport and update type to filter to channel events only.
   */
  addEventListener(handler: EventHandler, type: FDC3EventTypes | null): Promise<Listener>;
}


================================================
FILE: packages/fdc3-agent-proxy/src/channels/DefaultChannel.ts
================================================
import { ContextHandler, DisplayMetadata, Listener, Channel, EventHandler } from '@finos/fdc3-standard';
import { Context } from '@finos/fdc3-context';
import { Messaging } from '../Messaging.js';
import { DefaultContextListener } from '../listeners/DefaultContextListener.js';
import {
  BroadcastRequest,
  BroadcastResponse,
  ClearContextRequest,
  ClearContextResponse,
  GetCurrentContextRequest,
  GetCurrentContextResponse,
} from '@finos/fdc3-schema/generated/api/BrowserTypes.js';
import { RegisterableListener } from '../listeners/RegisterableListener.js';
import { EventListener } from '../listeners/EventListener.js';

export class DefaultChannel implements Channel {
  protected readonly messaging: Messaging;
  protected readonly messageExchangeTimeout;
  readonly id: string;
  readonly type: 'user' | 'app' | 'private';
  readonly displayMetadata?: DisplayMetadata | undefined;

  constructor(
    messaging: Messaging,
    messageExchangeTimeout: number,
    id: string,
    type: 'user' | 'app' | 'private',
    displayMetadata?: DisplayMetadata
  ) {
    this.messaging = messaging;
    this.messageExchangeTimeout = messageExchangeTimeout;
    this.id = id;
    this.type = type;
    this.displayMetadata = displayMetadata;

    //bind all functions to allow destructuring
    this.broadcast = this.broadcast.bind(this);
    this.getCurrentContext = this.getCurrentContext.bind(this);
    this.addContextListener = this.addContextListener.bind(this);
  }

  async broadcast(context: Context): Promise<void> {
    const request: BroadcastRequest = {
      meta: this.messaging.createMeta(),
      payload: {
        channelId: this.id,
        context,
      },
      type: 'broadcastRequest',
    };
    await this.messaging.exchange<BroadcastResponse>(request, 'broadcastResponse', this.messageExchangeTimeout);
  }

  async getCurrentContext(contextType?: string | undefined): Promise<Context | null> {
    // first, ensure channel state is up-to-date
    const request: GetCurrentContextRequest = {
      meta: this.messaging.createMeta(),
      payload: {
        channelId: this.id,
        contextType: contextType ?? null,
      },
      type: 'getCurrentContextRequest',
    };
    const response = await this.messaging.exchange<GetCurrentContextResponse>(
      request,
      'getCurrentContextResponse',
      this.messageExchangeTimeout
    );

    return response.payload.context ?? null;
  }

  async addContextListener(
    contextTypeOrHandler: string | null | ContextHandler,
    handler?: ContextHandler
  ): Promise<Listener> {
    let theContextType: string | null;
    let theHandler: ContextHandler;

    if (contextTypeOrHandler == null && typeof handler === 'function') {
      theContextType = null;
      theHandler = handler;
    } else if (typeof contextTypeOrHandler === 'string' && typeof handler === 'function') {
      theContextType = contextTypeOrHandler;
      theHandler = handler;
    } else if (typeof contextTypeOrHandler === 'function') {
      // deprecated one-arg version
      theContextType = null;
      theHandler = contextTypeOrHandler as ContextHandler;
    } else {
      //invalid call
      // TODO: Replace with Standardized error when #1490 is resolved
      throw new Error('Invalid arguments passed to addContextListener!');
    }

    return await 
Download .txt
gitextract_bew5gbqd/

├── .editorconfig
├── .eslintignore
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── ---context_or_intent_proposal.md
│   │   ├── ---enhancement-request.md
│   │   ├── ---minor-issue.md
│   │   ├── ---question.md
│   │   ├── general-meeting.md
│   │   ├── identity-and-security-meeting.md
│   │   ├── maintainers-meeting.md
│   │   ├── standard-wg-meeting.md
│   │   ├── use-cases-and-workflows-meeting.md
│   │   └── web-browsers-meeting.md
│   ├── pull_request_template.md
│   └── workflows/
│       ├── coverage.yml
│       ├── cve-scanning.yml
│       ├── release.yml
│       ├── scorecard.yml
│       └── semgrep.yml
├── .gitignore
├── .husky/
│   └── pre-commit
├── .node-version
├── .npmrc
├── .nvmrc
├── .prettierignore
├── .semgrepignore
├── .vscode/
│   └── settings.json
├── CHANGELOG.md
├── CNAME
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── GOVERNANCE.md
├── LICENSE.md
├── LICENSE.spdx
├── NOTICES.md
├── PATENTS-FDC3-1.0.md
├── README.md
├── SCOPE.md
├── SECURITY.md
├── allow-list.json
├── comment-template.md
├── netlify.toml
├── package.json
├── packages/
│   ├── fdc3/
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   ├── fdc3-agent-proxy/
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── DesktopAgentProxy.ts
│   │   │   ├── Messaging.ts
│   │   │   ├── apps/
│   │   │   │   ├── AppSupport.ts
│   │   │   │   └── DefaultAppSupport.ts
│   │   │   ├── channels/
│   │   │   │   ├── ChannelSupport.ts
│   │   │   │   ├── DefaultChannel.ts
│   │   │   │   ├── DefaultChannelSupport.ts
│   │   │   │   └── DefaultPrivateChannel.ts
│   │   │   ├── heartbeat/
│   │   │   │   ├── DefaultHeartbeatSupport.ts
│   │   │   │   └── HeartbeatSupport.ts
│   │   │   ├── index.ts
│   │   │   ├── intents/
│   │   │   │   ├── DefaultIntentResolution.ts
│   │   │   │   ├── DefaultIntentSupport.ts
│   │   │   │   └── IntentSupport.ts
│   │   │   ├── listeners/
│   │   │   │   ├── AbstractListener.ts
│   │   │   │   ├── DefaultContextListener.ts
│   │   │   │   ├── DefaultIntentListener.ts
│   │   │   │   ├── DesktopAgentEventListener.ts
│   │   │   │   ├── EventListener.ts
│   │   │   │   ├── HeartbeatListener.ts
│   │   │   │   ├── PrivateChannelEventListener.ts
│   │   │   │   ├── RegisterableListener.ts
│   │   │   │   └── UserChannelContextListener.ts
│   │   │   ├── messaging/
│   │   │   │   └── AbstractMessaging.ts
│   │   │   └── util/
│   │   │       ├── AbstractFDC3Logger.ts
│   │   │       ├── Logger.ts
│   │   │       └── throwIfUndefined.ts
│   │   ├── test/
│   │   │   ├── features/
│   │   │   │   ├── app-channels.feature
│   │   │   │   ├── app-metadata.feature
│   │   │   │   ├── broadcast.feature
│   │   │   │   ├── find-intents.feature
│   │   │   │   ├── heartbeat.feature
│   │   │   │   ├── intent-listener.feature
│   │   │   │   ├── intent-results.feature
│   │   │   │   ├── open.feature
│   │   │   │   ├── private-channels-deprecated.feature
│   │   │   │   ├── private-channels.feature
│   │   │   │   ├── raise-intents.feature
│   │   │   │   ├── user-channel-selector.feature
│   │   │   │   ├── user-channel-sync.feature
│   │   │   │   ├── user-channels-set-by-agent.feature
│   │   │   │   ├── user-channels.feature
│   │   │   │   └── utils.feature
│   │   │   ├── step-definitions/
│   │   │   │   ├── channelSelector.steps.ts
│   │   │   │   ├── channels.steps.ts
│   │   │   │   ├── generic.steps.ts
│   │   │   │   ├── intents.steps.ts
│   │   │   │   └── util.steps.ts
│   │   │   ├── steps.ts
│   │   │   ├── support/
│   │   │   │   ├── TestChannelSelector.ts
│   │   │   │   ├── TestMessaging.ts
│   │   │   │   └── responses/
│   │   │   │       ├── AddEventListener.ts
│   │   │   │       ├── ChannelState.ts
│   │   │   │       ├── CreatePrivateChannel.ts
│   │   │   │       ├── DisconnectPrivateChannel.ts
│   │   │   │       ├── FindInstances.ts
│   │   │   │       ├── FindIntent.ts
│   │   │   │       ├── FindIntentByContext.ts
│   │   │   │       ├── GetAppMetadata.ts
│   │   │   │       ├── GetInfo.ts
│   │   │   │       ├── GetOrCreateChannel.ts
│   │   │   │       ├── GetUserChannels.ts
│   │   │   │       ├── IntentResult.ts
│   │   │   │       ├── Open.ts
│   │   │   │       ├── RaiseIntent.ts
│   │   │   │       ├── RaiseIntentForContext.ts
│   │   │   │       ├── RegisterListeners.ts
│   │   │   │       ├── UnsubscribeListeners.ts
│   │   │   │       └── support.ts
│   │   │   └── world/
│   │   │       └── index.ts
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   ├── fdc3-commonjs/
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── rollup.config.mjs
│   │   └── src/
│   │       └── index.ts
│   ├── fdc3-context/
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── generated/
│   │   │   └── context/
│   │   │       └── ContextTypes.ts
│   │   ├── package.json
│   │   ├── s2tQuicktypeUtil.cjs
│   │   ├── schemas/
│   │   │   └── context/
│   │   │       ├── action.schema.json
│   │   │       ├── chart.schema.json
│   │   │       ├── chatInitSettings.schema.json
│   │   │       ├── chatMessage.schema.json
│   │   │       ├── chatRoom.schema.json
│   │   │       ├── chatSearchCriteria.schema.json
│   │   │       ├── contact.schema.json
│   │   │       ├── contactList.schema.json
│   │   │       ├── context.schema.json
│   │   │       ├── country.schema.json
│   │   │       ├── currency.schema.json
│   │   │       ├── email.schema.json
│   │   │       ├── fileAttachment.schema.json
│   │   │       ├── instrument.schema.json
│   │   │       ├── instrumentList.schema.json
│   │   │       ├── interaction.schema.json
│   │   │       ├── message.schema.json
│   │   │       ├── nothing.schema.json
│   │   │       ├── order.schema.json
│   │   │       ├── orderList.schema.json
│   │   │       ├── organization.schema.json
│   │   │       ├── portfolio.schema.json
│   │   │       ├── position.schema.json
│   │   │       ├── product.schema.json
│   │   │       ├── timeRange.schema.json
│   │   │       ├── trade.schema.json
│   │   │       ├── tradeList.schema.json
│   │   │       ├── transactionresult.schema.json
│   │   │       └── valuation.schema.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   └── validate-schema-examples.test.ts
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   ├── fdc3-get-agent/
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── Fdc3Version.ts
│   │   │   ├── apps/
│   │   │   │   └── NoopAppSupport.ts
│   │   │   ├── index.ts
│   │   │   ├── messaging/
│   │   │   │   ├── MessagePortMessaging.ts
│   │   │   │   └── message-port.ts
│   │   │   ├── sessionStorage/
│   │   │   │   └── DesktopAgentDetails.ts
│   │   │   ├── strategies/
│   │   │   │   ├── DesktopAgentPreloadLoader.ts
│   │   │   │   ├── FailoverHandler.ts
│   │   │   │   ├── HelloHandler.ts
│   │   │   │   ├── IdentityValidationHandler.ts
│   │   │   │   ├── Loader.ts
│   │   │   │   ├── PostMessageLoader.ts
│   │   │   │   ├── Timeouts.ts
│   │   │   │   └── getAgent.ts
│   │   │   ├── ui/
│   │   │   │   ├── AbstractUIComponent.ts
│   │   │   │   ├── DefaultDesktopAgentChannelSelector.ts
│   │   │   │   ├── DefaultDesktopAgentIntentResolver.ts
│   │   │   │   ├── NullChannelSelector.ts
│   │   │   │   └── NullIntentResolver.ts
│   │   │   └── util/
│   │   │       ├── Logger.ts
│   │   │       └── Uuid.ts
│   │   ├── test/
│   │   │   ├── README.md
│   │   │   ├── features/
│   │   │   │   ├── default-channel-selector.feature
│   │   │   │   ├── default-intent-resolver.feature
│   │   │   │   ├── desktop-agent-disconnect.feature
│   │   │   │   ├── desktop-agent-strategy.feature
│   │   │   │   ├── proxy-timeouts.feature
│   │   │   │   └── utils.feature
│   │   │   ├── step-definitions/
│   │   │   │   ├── channel-selector.steps.ts
│   │   │   │   ├── desktop-agent-api.steps.ts
│   │   │   │   ├── desktop-agent.steps.ts
│   │   │   │   ├── generic.steps.ts
│   │   │   │   ├── intent-resolver.steps.ts
│   │   │   │   ├── port-creation.steps.ts
│   │   │   │   └── util.steps.ts
│   │   │   ├── steps.ts
│   │   │   ├── support/
│   │   │   │   ├── EventHandler.ts
│   │   │   │   ├── FrameTypes.ts
│   │   │   │   ├── MockCSSStyleDeclaration.ts
│   │   │   │   ├── MockDocument.ts
│   │   │   │   ├── MockElement.ts
│   │   │   │   ├── MockFDC3Server.ts
│   │   │   │   ├── MockIFrame.ts
│   │   │   │   ├── MockStorage.ts
│   │   │   │   ├── MockWindow.ts
│   │   │   │   ├── TestServerContext.ts
│   │   │   │   └── responses/
│   │   │   │       ├── AddEventListener.ts
│   │   │   │       ├── AutomaticResponses.ts
│   │   │   │       ├── Broadcast.ts
│   │   │   │       ├── CurrentChannel.ts
│   │   │   │       ├── FindIntent.ts
│   │   │   │       ├── GetInfo.ts
│   │   │   │       ├── Handshake.ts
│   │   │   │       ├── RaiseIntent.ts
│   │   │   │       ├── UnsubscribeEventListener.ts
│   │   │   │       └── UserChannels.ts
│   │   │   └── world/
│   │   │       └── index.ts
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   ├── fdc3-schema/
│   │   ├── README.md
│   │   ├── code-generation/
│   │   │   └── generate-type-predicates.ts
│   │   ├── eslint.config.mjs
│   │   ├── generated/
│   │   │   ├── api/
│   │   │   │   └── BrowserTypes.ts
│   │   │   └── bridging/
│   │   │       └── BridgingTypes.ts
│   │   ├── package.json
│   │   ├── s2tQuicktypeUtil.cjs
│   │   ├── schemas/
│   │   │   ├── api/
│   │   │   │   ├── README.md
│   │   │   │   ├── WCP1Hello.schema.json
│   │   │   │   ├── WCP2LoadUrl.schema.json
│   │   │   │   ├── WCP3Handshake.schema.json
│   │   │   │   ├── WCP4ValidateAppIdentity.schema.json
│   │   │   │   ├── WCP5ValidateAppIdentityFailedResponse.schema.json
│   │   │   │   ├── WCP5ValidateAppIdentityResponse.schema.json
│   │   │   │   ├── WCP6Goodbye.schema.json
│   │   │   │   ├── WCPConnectionStep.schema.json
│   │   │   │   ├── addContextListenerRequest.schema.json
│   │   │   │   ├── addContextListenerResponse.schema.json
│   │   │   │   ├── addEventListenerRequest.schema.json
│   │   │   │   ├── addEventListenerResponse.schema.json
│   │   │   │   ├── addIntentListenerRequest.schema.json
│   │   │   │   ├── addIntentListenerResponse.schema.json
│   │   │   │   ├── agentEvent.schema.json
│   │   │   │   ├── agentResponse.schema.json
│   │   │   │   ├── api.schema.json
│   │   │   │   ├── appRequest.schema.json
│   │   │   │   ├── broadcastEvent.schema.json
│   │   │   │   ├── broadcastRequest.schema.json
│   │   │   │   ├── broadcastResponse.schema.json
│   │   │   │   ├── channelChangedEvent.schema.json
│   │   │   │   ├── clearContextRequest.schema.json
│   │   │   │   ├── clearContextResponse.schema.json
│   │   │   │   ├── common.schema.json
│   │   │   │   ├── contextClearedEvent.schema.json
│   │   │   │   ├── contextListenerUnsubscribeRequest.schema.json
│   │   │   │   ├── contextListenerUnsubscribeResponse.schema.json
│   │   │   │   ├── createPrivateChannelRequest.schema.json
│   │   │   │   ├── createPrivateChannelResponse.schema.json
│   │   │   │   ├── eventListenerUnsubscribeRequest.schema.json
│   │   │   │   ├── eventListenerUnsubscribeResponse.schema.json
│   │   │   │   ├── fdc3UserInterfaceChannelSelected.schema.json
│   │   │   │   ├── fdc3UserInterfaceChannels.schema.json
│   │   │   │   ├── fdc3UserInterfaceDrag.schema.json
│   │   │   │   ├── fdc3UserInterfaceHandshake.schema.json
│   │   │   │   ├── fdc3UserInterfaceHello.schema.json
│   │   │   │   ├── fdc3UserInterfaceMessage.schema.json
│   │   │   │   ├── fdc3UserInterfaceResolve.schema.json
│   │   │   │   ├── fdc3UserInterfaceResolveAction.schema.json
│   │   │   │   ├── fdc3UserInterfaceRestyle.schema.json
│   │   │   │   ├── findInstancesRequest.schema.json
│   │   │   │   ├── findInstancesResponse.schema.json
│   │   │   │   ├── findIntentRequest.schema.json
│   │   │   │   ├── findIntentResponse.schema.json
│   │   │   │   ├── findIntentsByContextRequest.schema.json
│   │   │   │   ├── findIntentsByContextResponse.schema.json
│   │   │   │   ├── getAppMetadataRequest.schema.json
│   │   │   │   ├── getAppMetadataResponse.schema.json
│   │   │   │   ├── getCurrentChannelRequest.schema.json
│   │   │   │   ├── getCurrentChannelResponse.schema.json
│   │   │   │   ├── getCurrentContextRequest.schema.json
│   │   │   │   ├── getCurrentContextResponse.schema.json
│   │   │   │   ├── getInfoRequest.schema.json
│   │   │   │   ├── getInfoResponse.schema.json
│   │   │   │   ├── getOrCreateChannelRequest.schema.json
│   │   │   │   ├── getOrCreateChannelResponse.schema.json
│   │   │   │   ├── getUserChannelsRequest.schema.json
│   │   │   │   ├── getUserChannelsResponse.schema.json
│   │   │   │   ├── heartbeatAcknowledgmentRequest.schema.json
│   │   │   │   ├── heartbeatEvent.schema.json
│   │   │   │   ├── intentEvent.schema.json
│   │   │   │   ├── intentListenerUnsubscribeRequest.schema.json
│   │   │   │   ├── intentListenerUnsubscribeResponse.schema.json
│   │   │   │   ├── intentResultRequest.schema.json
│   │   │   │   ├── intentResultResponse.schema.json
│   │   │   │   ├── joinUserChannelRequest.schema.json
│   │   │   │   ├── joinUserChannelResponse.schema.json
│   │   │   │   ├── leaveCurrentChannelRequest.schema.json
│   │   │   │   ├── leaveCurrentChannelResponse.schema.json
│   │   │   │   ├── openRequest.schema.json
│   │   │   │   ├── openResponse.schema.json
│   │   │   │   ├── privateChannelAddEventListenerRequest.schema.json
│   │   │   │   ├── privateChannelAddEventListenerResponse.schema.json
│   │   │   │   ├── privateChannelDisconnectRequest.schema.json
│   │   │   │   ├── privateChannelDisconnectResponse.schema.json
│   │   │   │   ├── privateChannelOnAddContextListenerEvent.schema.json
│   │   │   │   ├── privateChannelOnDisconnectEvent.schema.json
│   │   │   │   ├── privateChannelOnUnsubscribeEvent.schema.json
│   │   │   │   ├── privateChannelUnsubscribeEventListenerRequest.schema.json
│   │   │   │   ├── privateChannelUnsubscribeEventListenerResponse.schema.json
│   │   │   │   ├── raiseIntentForContextRequest.schema.json
│   │   │   │   ├── raiseIntentForContextResponse.schema.json
│   │   │   │   ├── raiseIntentRequest.schema.json
│   │   │   │   ├── raiseIntentResponse.schema.json
│   │   │   │   ├── raiseIntentResultResponse.schema.json
│   │   │   │   └── t2sQuicktypeUtil.js
│   │   │   ├── bridging/
│   │   │   │   ├── agentErrorResponse.schema.json
│   │   │   │   ├── agentRequest.schema.json
│   │   │   │   ├── agentResponse.schema.json
│   │   │   │   ├── bridgeErrorResponse.schema.json
│   │   │   │   ├── bridgeRequest.schema.json
│   │   │   │   ├── bridgeResponse.schema.json
│   │   │   │   ├── broadcastAgentRequest.schema.json
│   │   │   │   ├── broadcastBridgeRequest.schema.json
│   │   │   │   ├── common.schema.json
│   │   │   │   ├── connectionStep.schema.json
│   │   │   │   ├── connectionStep2Hello.schema.json
│   │   │   │   ├── connectionStep3Handshake.schema.json
│   │   │   │   ├── connectionStep4AuthenticationFailed.schema.json
│   │   │   │   ├── connectionStep6ConnectedAgentsUpdate.schema.json
│   │   │   │   ├── findInstancesAgentErrorResponse.schema.json
│   │   │   │   ├── findInstancesAgentRequest.schema.json
│   │   │   │   ├── findInstancesAgentResponse.schema.json
│   │   │   │   ├── findInstancesBridgeErrorResponse.schema.json
│   │   │   │   ├── findInstancesBridgeRequest.schema.json
│   │   │   │   ├── findInstancesBridgeResponse.schema.json
│   │   │   │   ├── findIntentAgentErrorResponse.schema.json
│   │   │   │   ├── findIntentAgentRequest.schema.json
│   │   │   │   ├── findIntentAgentResponse.schema.json
│   │   │   │   ├── findIntentBridgeErrorResponse.schema.json
│   │   │   │   ├── findIntentBridgeRequest.schema.json
│   │   │   │   ├── findIntentBridgeResponse.schema.json
│   │   │   │   ├── findIntentsByContextAgentErrorResponse.schema.json
│   │   │   │   ├── findIntentsByContextAgentRequest.schema.json
│   │   │   │   ├── findIntentsByContextAgentResponse.schema.json
│   │   │   │   ├── findIntentsByContextBridgeErrorResponse.schema.json
│   │   │   │   ├── findIntentsByContextBridgeRequest.schema.json
│   │   │   │   ├── findIntentsByContextBridgeResponse.schema.json
│   │   │   │   ├── getAppMetadataAgentErrorResponse.schema.json
│   │   │   │   ├── getAppMetadataAgentRequest.schema.json
│   │   │   │   ├── getAppMetadataAgentResponse.schema.json
│   │   │   │   ├── getAppMetadataBridgeErrorResponse.schema.json
│   │   │   │   ├── getAppMetadataBridgeRequest.schema.json
│   │   │   │   ├── getAppMetadataBridgeResponse.schema.json
│   │   │   │   ├── openAgentErrorResponse.schema.json
│   │   │   │   ├── openAgentRequest.schema.json
│   │   │   │   ├── openAgentResponse.schema.json
│   │   │   │   ├── openBridgeErrorResponse.schema.json
│   │   │   │   ├── openBridgeRequest.schema.json
│   │   │   │   ├── openBridgeResponse.schema.json
│   │   │   │   ├── privateChannelBroadcastAgentRequest.schema.json
│   │   │   │   ├── privateChannelBroadcastBridgeRequest.schema.json
│   │   │   │   ├── privateChannelEventListenerAddedAgentRequest.schema.json
│   │   │   │   ├── privateChannelEventListenerAddedBridgeRequest.schema.json
│   │   │   │   ├── privateChannelEventListenerRemovedAgentRequest.schema.json
│   │   │   │   ├── privateChannelEventListenerRemovedBridgeRequest.schema.json
│   │   │   │   ├── privateChannelOnAddContextListenerAgentRequest.schema.json
│   │   │   │   ├── privateChannelOnAddContextListenerBridgeRequest.schema.json
│   │   │   │   ├── privateChannelOnDisconnectAgentRequest.schema.json
│   │   │   │   ├── privateChannelOnDisconnectBridgeRequest.schema.json
│   │   │   │   ├── privateChannelOnUnsubscribeAgentRequest.schema.json
│   │   │   │   ├── privateChannelOnUnsubscribeBridgeRequest.schema.json
│   │   │   │   ├── raiseIntentAgentErrorResponse.schema.json
│   │   │   │   ├── raiseIntentAgentRequest.schema.json
│   │   │   │   ├── raiseIntentAgentResponse.schema.json
│   │   │   │   ├── raiseIntentBridgeErrorResponse.schema.json
│   │   │   │   ├── raiseIntentBridgeRequest.schema.json
│   │   │   │   ├── raiseIntentBridgeResponse.schema.json
│   │   │   │   ├── raiseIntentResultAgentErrorResponse.schema.json
│   │   │   │   ├── raiseIntentResultAgentResponse.schema.json
│   │   │   │   ├── raiseIntentResultBridgeErrorResponse.schema.json
│   │   │   │   └── raiseIntentResultBridgeResponse.schema.json
│   │   │   └── bridgingAsyncAPI/
│   │   │       ├── README.md
│   │   │       └── bridgingAsyncAPI.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   ├── fdc3-standard/
│   │   ├── .eslintrc.json
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── api/
│   │   │   │   ├── AppIdentifier.ts
│   │   │   │   ├── AppIntent.ts
│   │   │   │   ├── AppMetadata.ts
│   │   │   │   ├── Channel.ts
│   │   │   │   ├── ContextMetadata.ts
│   │   │   │   ├── DesktopAgent.ts
│   │   │   │   ├── DesktopAgentIdentifier.ts
│   │   │   │   ├── DisplayMetadata.ts
│   │   │   │   ├── Errors.ts
│   │   │   │   ├── Events.ts
│   │   │   │   ├── GetAgent.ts
│   │   │   │   ├── Icon.ts
│   │   │   │   ├── Image.ts
│   │   │   │   ├── ImplementationMetadata.ts
│   │   │   │   ├── IntentMetadata.ts
│   │   │   │   ├── IntentResolution.ts
│   │   │   │   ├── Listener.ts
│   │   │   │   ├── Methods.ts
│   │   │   │   ├── PrivateChannel.ts
│   │   │   │   ├── RecommendedChannels.ts
│   │   │   │   └── Types.ts
│   │   │   ├── app-directory/
│   │   │   │   └── specification/
│   │   │   │       ├── appd.schema.json
│   │   │   │       └── examples/
│   │   │   │           └── application/
│   │   │   │               ├── fdc3-workbench.json
│   │   │   │               └── myApplication.json
│   │   │   ├── context/
│   │   │   │   └── ContextType.ts
│   │   │   ├── index.ts
│   │   │   ├── intents/
│   │   │   │   ├── Intents.ts
│   │   │   │   └── standard intents.json
│   │   │   ├── internal/
│   │   │   │   ├── contextConfiguration.ts
│   │   │   │   ├── intentConfiguration.ts
│   │   │   │   └── typeHelpers.ts
│   │   │   └── ui/
│   │   │       ├── ChannelSelector.ts
│   │   │       ├── Connectable.ts
│   │   │       └── IntentResolver.ts
│   │   ├── test/
│   │   │   ├── AppDirectory.test.ts
│   │   │   ├── ContextTypeSync.test.ts
│   │   │   ├── ContextTypes.test.ts
│   │   │   ├── Methods.test.ts
│   │   │   └── window.test.ts
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   └── testing/
│       ├── package.json
│       ├── src/
│       │   ├── agent/
│       │   │   └── index.ts
│       │   ├── index.ts
│       │   ├── steps/
│       │   │   ├── generic.impl.ts
│       │   │   └── generic.steps.ts
│       │   ├── support/
│       │   │   └── matching.ts
│       │   └── world/
│       │       └── PropsWorldLike.ts
│       └── tsconfig.json
├── scripts/
│   └── version-check.js
├── toolbox/
│   ├── fdc3-conformance/
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── instructions.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── constants.ts
│   │   │   ├── context-types.ts
│   │   │   ├── mock/
│   │   │   │   ├── basic.ts
│   │   │   │   ├── channel-command.ts
│   │   │   │   ├── channel.ts
│   │   │   │   ├── constants.ts
│   │   │   │   ├── general.ts
│   │   │   │   ├── intent-a.ts
│   │   │   │   ├── intent-b.ts
│   │   │   │   ├── intent-c.ts
│   │   │   │   ├── intent-d.ts
│   │   │   │   ├── intent-e.ts
│   │   │   │   ├── intent-f.ts
│   │   │   │   ├── intent-g.ts
│   │   │   │   ├── intent-h.ts
│   │   │   │   ├── intent-i.ts
│   │   │   │   ├── intent-j.ts
│   │   │   │   ├── intent-k.ts
│   │   │   │   ├── interfaces.ts
│   │   │   │   ├── metadata.ts
│   │   │   │   ├── mock-functions.ts
│   │   │   │   ├── open-a.ts
│   │   │   │   └── support/
│   │   │   │       └── channel-support.ts
│   │   │   ├── test/
│   │   │   │   ├── advanced/
│   │   │   │   │   ├── fdc3.app-channels.ts
│   │   │   │   │   ├── fdc3.findInstances.ts
│   │   │   │   │   ├── fdc3.findIntent.ts
│   │   │   │   │   ├── fdc3.findIntentsByContext.ts
│   │   │   │   │   ├── fdc3.getAppMetadata.ts
│   │   │   │   │   ├── fdc3.getInfo.ts
│   │   │   │   │   ├── fdc3.open.ts
│   │   │   │   │   ├── fdc3.raiseIntent-NoAppsFound.ts
│   │   │   │   │   ├── fdc3.raiseIntent-Result.ts
│   │   │   │   │   ├── fdc3.raiseIntent.ts
│   │   │   │   │   └── fdc3.user-channels.ts
│   │   │   │   ├── basic/
│   │   │   │   │   └── fdc3.basic.ts
│   │   │   │   ├── fdc3-conformance-utils.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── manual/
│   │   │   │   │   └── fdc3.manual.ts
│   │   │   │   ├── progressReporter.ts
│   │   │   │   ├── support/
│   │   │   │   │   ├── apiDocuments.ts
│   │   │   │   │   ├── channel-control.ts
│   │   │   │   │   ├── channels-support.ts
│   │   │   │   │   ├── intent-support.ts
│   │   │   │   │   ├── metadata-support.ts
│   │   │   │   │   ├── open-control.ts
│   │   │   │   │   └── open-support.ts
│   │   │   │   └── testSuite.ts
│   │   │   └── utils.ts
│   │   ├── static/
│   │   │   ├── apps/
│   │   │   │   ├── app/
│   │   │   │   │   └── index.html
│   │   │   │   ├── basic/
│   │   │   │   │   └── index.html
│   │   │   │   ├── channels/
│   │   │   │   │   └── index.html
│   │   │   │   ├── general/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-a/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-b/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-c/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-d/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-e/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-f/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-g/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-h/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-i/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-j/
│   │   │   │   │   └── index.html
│   │   │   │   ├── intent-k/
│   │   │   │   │   └── index.html
│   │   │   │   ├── metadata/
│   │   │   │   │   └── index.html
│   │   │   │   ├── open-a/
│   │   │   │   │   └── index.html
│   │   │   │   └── open-b/
│   │   │   │       └── index.html
│   │   │   ├── directories/
│   │   │   │   └── website-conformance.json
│   │   │   └── lib/
│   │   │       └── index.css
│   │   ├── terms-conditions/
│   │   │   ├── branding.md
│   │   │   ├── graphics/
│   │   │   │   ├── 1.2/
│   │   │   │   │   ├── 2022_FDC3_CompliantBadge_1.2.eps
│   │   │   │   │   ├── 2022_FDC3_CompliantBadge_1.2_BLK.eps
│   │   │   │   │   └── 2022_FDC3_CompliantBadge_1.2_WHT.eps
│   │   │   │   ├── 2.0/
│   │   │   │   │   ├── 2022_FDC3_CompliantBadge_2.0.eps
│   │   │   │   │   ├── 2022_FDC3_CompliantBadge_2.0_BLK.eps
│   │   │   │   │   └── 2022_FDC3_CompliantBadge_2.0_WHT.eps
│   │   │   │   └── 2.2/
│   │   │   │       ├── 2024_FDC3_ConformanceBadge.eps
│   │   │   │       ├── 2024_FDC3_ConformanceBadge_BLK.eps
│   │   │   │       └── 2024_FDC3_ConformanceBadge_WHT.eps
│   │   │   └── participation-form.md
│   │   ├── tsconfig.json
│   │   ├── vitest.config.ts
│   │   └── webpack.config.js
│   ├── fdc3-explained/
│   │   ├── 1.0/
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   └── styles.css
│   │   ├── 1.1/
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   └── styles.css
│   │   ├── 1.2/
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   └── styles.css
│   │   ├── README.md
│   │   └── index.html
│   ├── fdc3-for-web/
│   │   ├── demo/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── eslint.config.mjs
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── client/
│   │   │   │   │   ├── apps/
│   │   │   │   │   │   ├── app1.ts
│   │   │   │   │   │   ├── app2.ts
│   │   │   │   │   │   ├── app3.ts
│   │   │   │   │   │   ├── app4.ts
│   │   │   │   │   │   ├── app5.ts
│   │   │   │   │   │   ├── app6.ts
│   │   │   │   │   │   └── app7.ts
│   │   │   │   │   ├── da/
│   │   │   │   │   │   ├── DemoServerContext.ts
│   │   │   │   │   │   ├── FDC3_2_1_JSONDirectory.ts
│   │   │   │   │   │   ├── dummy-desktop-agent.ts
│   │   │   │   │   │   ├── embed.ts
│   │   │   │   │   │   └── util.ts
│   │   │   │   │   ├── ui/
│   │   │   │   │   │   ├── channel-selector.ts
│   │   │   │   │   │   ├── contrast.ts
│   │   │   │   │   │   ├── drag.ts
│   │   │   │   │   │   └── intent-resolver.ts
│   │   │   │   │   └── vite-env.d.ts
│   │   │   │   ├── message-types.ts
│   │   │   │   └── server/
│   │   │   │       └── main.ts
│   │   │   ├── static/
│   │   │   │   ├── app1/
│   │   │   │   │   └── index.html
│   │   │   │   ├── app2/
│   │   │   │   │   └── index.html
│   │   │   │   ├── app3/
│   │   │   │   │   └── index.html
│   │   │   │   ├── app4/
│   │   │   │   │   └── index.html
│   │   │   │   ├── app5/
│   │   │   │   │   └── index.html
│   │   │   │   ├── app6/
│   │   │   │   │   └── index.html
│   │   │   │   ├── app7/
│   │   │   │   │   └── index.html
│   │   │   │   ├── da/
│   │   │   │   │   ├── appd.json
│   │   │   │   │   ├── channel-selector.html
│   │   │   │   │   ├── embed.html
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── intent-resolver.html
│   │   │   │   │   └── local-conformance.v2.json
│   │   │   │   ├── dnd/
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── movable.html
│   │   │   │   └── embed/
│   │   │   │       └── index.html
│   │   │   └── tsconfig.json
│   │   ├── fdc3-web-impl/
│   │   │   ├── README.md
│   │   │   ├── eslint.config.mjs
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   ├── BasicFDC3Server.ts
│   │   │   │   ├── FDC3Server.ts
│   │   │   │   ├── ServerContext.ts
│   │   │   │   ├── directory/
│   │   │   │   │   ├── BasicDirectory.ts
│   │   │   │   │   └── DirectoryInterface.ts
│   │   │   │   ├── handlers/
│   │   │   │   │   ├── BroadcastHandler.ts
│   │   │   │   │   ├── HeartbeatHandler.ts
│   │   │   │   │   ├── IntentHandler.ts
│   │   │   │   │   ├── OpenHandler.ts
│   │   │   │   │   └── support.ts
│   │   │   │   └── index.ts
│   │   │   ├── test/
│   │   │   │   ├── features/
│   │   │   │   │   ├── apps.feature
│   │   │   │   │   ├── broadcast.feature
│   │   │   │   │   ├── disconnect-cleanup.feature
│   │   │   │   │   ├── event-listeners.feature
│   │   │   │   │   ├── find-intent.feature
│   │   │   │   │   ├── heartbeat.feature
│   │   │   │   │   ├── intent-result.feature
│   │   │   │   │   ├── private-channel.feature
│   │   │   │   │   ├── raise-intent-with-context.feature
│   │   │   │   │   ├── raise-intent.feature
│   │   │   │   │   └── user-channels.feature
│   │   │   │   ├── step-definitions/
│   │   │   │   │   ├── app-channel.steps.ts
│   │   │   │   │   ├── broadcast.steps.ts
│   │   │   │   │   ├── event-listeners.steps.ts
│   │   │   │   │   ├── generic.steps.ts
│   │   │   │   │   ├── heartbeat.steps.ts
│   │   │   │   │   ├── intents.steps.ts
│   │   │   │   │   ├── messaging.steps.ts
│   │   │   │   │   ├── private-channel.steps.ts
│   │   │   │   │   ├── start-app.steps.ts
│   │   │   │   │   └── user-channel.steps.ts
│   │   │   │   ├── steps.ts
│   │   │   │   ├── support/
│   │   │   │   │   └── TestServerContext.ts
│   │   │   │   └── world/
│   │   │   │       └── index.ts
│   │   │   ├── tsconfig.json
│   │   │   └── vitest.config.ts
│   │   └── reference-ui/
│   │       ├── .gitignore
│   │       ├── channel_selector.html
│   │       ├── eslint.config.mjs
│   │       ├── intent_resolver.html
│   │       ├── package.json
│   │       ├── src/
│   │       │   ├── channel_selector.ts
│   │       │   ├── contrast.ts
│   │       │   ├── intent_resolver.ts
│   │       │   └── vite-env.d.ts
│   │       ├── tsconfig.json
│   │       └── vite.config.ts
│   └── fdc3-workbench/
│       ├── .gitignore
│       ├── NOTICE
│       ├── README.md
│       ├── eslint.config.mjs
│       ├── index.html
│       ├── package.json
│       ├── public/
│       │   ├── manifest.json
│       │   └── robots.txt
│       ├── src/
│       │   ├── App.css
│       │   ├── App.tsx
│       │   ├── components/
│       │   │   ├── AppChannels.tsx
│       │   │   ├── ChannelField.tsx
│       │   │   ├── Channels.tsx
│       │   │   ├── ContextCreate.tsx
│       │   │   ├── ContextLinking.tsx
│       │   │   ├── ContextTemplates.tsx
│       │   │   ├── Header.tsx
│       │   │   ├── IntentResolutionField.tsx
│       │   │   ├── Intents.tsx
│       │   │   ├── Workbench/
│       │   │   │   ├── AppChannelListeners.tsx
│       │   │   │   ├── ContextListeners.tsx
│       │   │   │   ├── CurrentContext.tsx
│       │   │   │   ├── IntentListeners.tsx
│       │   │   │   ├── PrivateChannelListeners.tsx
│       │   │   │   ├── ReceivedField.tsx
│       │   │   │   ├── SystemLog.tsx
│       │   │   │   ├── SystemLogItem.tsx
│       │   │   │   └── Workbench.tsx
│       │   │   └── common/
│       │   │       ├── AccordionContent.tsx
│       │   │       ├── AccordionList.tsx
│       │   │       ├── CopyToClipboard.tsx
│       │   │       ├── DialogModal.tsx
│       │   │       ├── JsonInput.tsx
│       │   │       ├── TabPanel.tsx
│       │   │       └── TemplateTextField.tsx
│       │   ├── fixtures/
│       │   │   ├── codeExamples.ts
│       │   │   ├── contexts.ts
│       │   │   ├── intentTypes.ts
│       │   │   ├── logMessages.ts
│       │   │   └── openApiDocs.ts
│       │   ├── index.tsx
│       │   ├── store/
│       │   │   ├── AppChannelStore.tsx
│       │   │   ├── ChannelStore.ts
│       │   │   ├── ContextStore.ts
│       │   │   ├── IntentStore.ts
│       │   │   ├── PrivateChannelStore.tsx
│       │   │   ├── SnackbarStore.ts
│       │   │   └── SystemLogStore.ts
│       │   └── utility/
│       │       └── Fdc3Api.ts
│       ├── tsconfig.json
│       ├── tsconfig.node.json
│       └── vite.config.ts
├── tsconfig.root.json
└── website/
    ├── .nvmrc
    ├── README.md
    ├── core/
    │   └── Showcase.js
    ├── data/
    │   ├── community.json
    │   ├── get-involved/
    │   │   ├── 1.mdx
    │   │   ├── 2.mdx
    │   │   ├── 3.mdx
    │   │   ├── 4.mdx
    │   │   └── 5.mdx
    │   ├── pending-community.json
    │   ├── training.json
    │   └── users.json
    ├── docs/
    │   ├── .markdownlint.jsonc
    │   ├── agent-bridging/
    │   │   ├── ref/
    │   │   │   ├── PrivateChannel.broadcast.md
    │   │   │   ├── PrivateChannel.eventListenerAdded.md
    │   │   │   ├── PrivateChannel.eventListenerRemoved.md
    │   │   │   ├── PrivateChannel.onAddContextListener.md
    │   │   │   ├── PrivateChannel.onDisconnect.md
    │   │   │   ├── PrivateChannel.onUnsubscribe.md
    │   │   │   ├── broadcast.md
    │   │   │   ├── findInstances.md
    │   │   │   ├── findIntent.md
    │   │   │   ├── findIntentsByContext.md
    │   │   │   ├── getAppMetadata.md
    │   │   │   ├── open.md
    │   │   │   └── raiseIntent.md
    │   │   └── spec.md
    │   ├── api/
    │   │   ├── conformance/
    │   │   │   ├── App-Channel-Tests.md
    │   │   │   ├── Basic-Tests.md
    │   │   │   ├── Intents-Tests.md
    │   │   │   ├── Metadata-Tests.md
    │   │   │   ├── Open-Tests.md
    │   │   │   ├── Overview.md
    │   │   │   └── User-Channel-Tests.md
    │   │   ├── ref/
    │   │   │   ├── Channel.md
    │   │   │   ├── DesktopAgent.md
    │   │   │   ├── Errors.md
    │   │   │   ├── Events.md
    │   │   │   ├── GetAgent.md
    │   │   │   ├── Metadata.md
    │   │   │   ├── PrivateChannel.md
    │   │   │   └── Types.md
    │   │   ├── spec.md
    │   │   ├── specs/
    │   │   │   ├── browserResidentDesktopAgents.md
    │   │   │   ├── desktopAgentCommunicationProtocol.md
    │   │   │   ├── preloadDesktopAgents.md
    │   │   │   └── webConnectionProtocol.md
    │   │   └── supported-platforms.md
    │   ├── app-directory/
    │   │   ├── overview.md
    │   │   └── spec.md
    │   ├── context/
    │   │   ├── ref/
    │   │   │   ├── Action.md
    │   │   │   ├── BaseContext.md
    │   │   │   ├── Chart.md
    │   │   │   ├── ChatInitSettings.md
    │   │   │   ├── ChatMessage.md
    │   │   │   ├── ChatRoom.md
    │   │   │   ├── ChatSearchCriteria.md
    │   │   │   ├── Contact.md
    │   │   │   ├── ContactList.md
    │   │   │   ├── Context.md
    │   │   │   ├── Country.md
    │   │   │   ├── Currency.md
    │   │   │   ├── DocumentedContext.md
    │   │   │   ├── Email.md
    │   │   │   ├── FileAttachment.md
    │   │   │   ├── Instrument.md
    │   │   │   ├── InstrumentList.md
    │   │   │   ├── Interaction.md
    │   │   │   ├── Message.md
    │   │   │   ├── Nothing.md
    │   │   │   ├── Order.md
    │   │   │   ├── OrderList.md
    │   │   │   ├── Organization.md
    │   │   │   ├── Portfolio.md
    │   │   │   ├── Position.md
    │   │   │   ├── Product.md
    │   │   │   ├── TimeRange.md
    │   │   │   ├── Trade.md
    │   │   │   ├── TradeList.md
    │   │   │   ├── TransactionResult.md
    │   │   │   └── Valuation.md
    │   │   └── spec.md
    │   ├── fdc3-charter.md
    │   ├── fdc3-compliance.md
    │   ├── fdc3-glossary.md
    │   ├── fdc3-intro.md
    │   ├── fdc3-standard.md
    │   ├── guides/
    │   │   └── submit-new-intent.md
    │   ├── intents/
    │   │   ├── ref/
    │   │   │   ├── CreateInteraction.md
    │   │   │   ├── CreateOrUpdateProfile.md
    │   │   │   ├── SendChatMessage.md
    │   │   │   ├── StartCall.md
    │   │   │   ├── StartChat.md
    │   │   │   ├── StartEmail.md
    │   │   │   ├── ViewAnalysis.md
    │   │   │   ├── ViewChart.md
    │   │   │   ├── ViewChat.md
    │   │   │   ├── ViewContact.md
    │   │   │   ├── ViewHoldings.md
    │   │   │   ├── ViewInstrument.md
    │   │   │   ├── ViewInteractions.md
    │   │   │   ├── ViewMessages.md
    │   │   │   ├── ViewNews.md
    │   │   │   ├── ViewOrders.md
    │   │   │   ├── ViewProfile.md
    │   │   │   ├── ViewQuote.md
    │   │   │   └── ViewResearch.md
    │   │   └── spec.md
    │   ├── references.md
    │   ├── trademarks.md
    │   ├── use-cases/
    │   │   ├── 001-equity-sell-side-trader.md
    │   │   ├── 002-buy-side-portfolio-manager.md
    │   │   ├── 003-inhouse-cross-platform-launcher.md
    │   │   ├── 004-client-side-fx-trader.md
    │   │   ├── 005-buy-side-treasurer.md
    │   │   ├── 006-call-transcription-to-crm.md
    │   │   ├── 007-realtime-trade-ticket-population.md
    │   │   ├── 008-user-launches-multiple-apps-from-a-single-container.md
    │   │   ├── 009-sales-floor-base-workflow.md
    │   │   ├── 010-quantifying-fdc3-interactions.md
    │   │   ├── 011-fine-tuning-interop-with-channels.md
    │   │   ├── meeting-minutes/
    │   │   │   ├── 2020-01-16 uc-wg meeting notes.md
    │   │   │   ├── 2020-02-20 uc-wg meeting notes.md
    │   │   │   └── 2020-03-19 uc-wg meeting notes.md
    │   │   ├── overview.md
    │   │   └── readme.md
    │   └── why-fdc3.md
    ├── docusaurus.config.js
    ├── package.json
    ├── replaceConformanceUrls.js
    ├── schema2Markdown.js
    ├── sidebars.json
    ├── src/
    │   ├── components/
    │   │   ├── Benefits/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── Callout/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── Carousel1/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── Conformance/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── ConformanceShowcase/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── Container/
    │   │   │   └── index.js
    │   │   ├── Feature/
    │   │   │   └── index.js
    │   │   ├── GetInvolved/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── GridBlock/
    │   │   │   └── index.js
    │   │   ├── HomeSection/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── HomeSection2/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── HomeSplash/
    │   │   │   └── index.js
    │   │   ├── ImageBullet/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── MonoIcon/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── NewSplashTop/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── Parts/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── Training/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── TypeText/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── UseCases/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── UserShowcase/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   ├── WhatIsIt/
    │   │   │   ├── index.js
    │   │   │   └── styles.module.css
    │   │   └── implementationFilters.js
    │   ├── css/
    │   │   └── customTheme.css
    │   └── pages/
    │       ├── community.js
    │       ├── community.styles.css
    │       ├── get-involved.js
    │       ├── index.js
    │       ├── schemas/
    │       │   ├── 1.1/
    │       │   │   └── app-directory.html
    │       │   ├── 1.2/
    │       │   │   └── app-directory.html
    │       │   ├── 2.0/
    │       │   │   └── app-directory.html
    │       │   └── next/
    │       │       └── app-directory.html
    │       ├── showcase.styles.css
    │       ├── training.js
    │       ├── users.js
    │       └── versions.js
    ├── static/
    │   └── schemas/
    │       ├── 1.0/
    │       │   └── app-directory.html
    │       ├── 1.1/
    │       │   ├── app-directory.html
    │       │   ├── app-directory.yaml
    │       │   ├── contact.schema.json
    │       │   ├── contactList.schema.json
    │       │   ├── context.schema.json
    │       │   ├── country.schema.json
    │       │   ├── instrument.schema.json
    │       │   ├── instrumentList.schema.json
    │       │   ├── organization.schema.json
    │       │   ├── portfolio.schema.json
    │       │   └── position.schema.json
    │       ├── 1.2/
    │       │   ├── app-directory.html
    │       │   ├── app-directory.yaml
    │       │   ├── contact.schema.json
    │       │   ├── contactList.schema.json
    │       │   ├── context.schema.json
    │       │   ├── country.schema.json
    │       │   ├── instrument.schema.json
    │       │   ├── instrumentList.schema.json
    │       │   ├── organization.schema.json
    │       │   ├── portfolio.schema.json
    │       │   └── position.schema.json
    │       ├── 2.0/
    │       │   ├── app-directory.html
    │       │   ├── app-directory.yaml
    │       │   ├── chart.schema.json
    │       │   ├── chatInitSettings.schema.json
    │       │   ├── contact.schema.json
    │       │   ├── contactList.schema.json
    │       │   ├── context.schema.json
    │       │   ├── country.schema.json
    │       │   ├── currency.schema.json
    │       │   ├── email.schema.json
    │       │   ├── instrument.schema.json
    │       │   ├── instrumentList.schema.json
    │       │   ├── nothing.schema.json
    │       │   ├── organization.schema.json
    │       │   ├── portfolio.schema.json
    │       │   ├── position.schema.json
    │       │   ├── timerange.schema.json
    │       │   └── valuation.schema.json
    │       ├── 2.1/
    │       │   ├── api/
    │       │   │   ├── README.md
    │       │   │   ├── api.schema.json
    │       │   │   ├── baseImplementationMetadata.schema.json
    │       │   │   └── t2sQuicktypeUtil.js
    │       │   ├── app-directory.html
    │       │   ├── appd.schema.json
    │       │   ├── bridging/
    │       │   │   ├── agentErrorResponse.schema.json
    │       │   │   ├── agentRequest.schema.json
    │       │   │   ├── agentResponse.schema.json
    │       │   │   ├── bridgeErrorResponse.schema.json
    │       │   │   ├── bridgeRequest.schema.json
    │       │   │   ├── bridgeResponse.schema.json
    │       │   │   ├── broadcastAgentRequest.schema.json
    │       │   │   ├── broadcastBridgeRequest.schema.json
    │       │   │   ├── common.schema.json
    │       │   │   ├── connectionStep.schema.json
    │       │   │   ├── connectionStep2Hello.schema.json
    │       │   │   ├── connectionStep3Handshake.schema.json
    │       │   │   ├── connectionStep4AuthenticationFailed.schema.json
    │       │   │   ├── connectionStep6ConnectedAgentsUpdate.schema.json
    │       │   │   ├── findInstancesAgentErrorResponse.schema.json
    │       │   │   ├── findInstancesAgentRequest.schema.json
    │       │   │   ├── findInstancesAgentResponse.schema.json
    │       │   │   ├── findInstancesBridgeErrorResponse.schema.json
    │       │   │   ├── findInstancesBridgeRequest.schema.json
    │       │   │   ├── findInstancesBridgeResponse.schema.json
    │       │   │   ├── findIntentAgentErrorResponse.schema.json
    │       │   │   ├── findIntentAgentRequest.schema.json
    │       │   │   ├── findIntentAgentResponse.schema.json
    │       │   │   ├── findIntentBridgeErrorResponse.schema.json
    │       │   │   ├── findIntentBridgeRequest.schema.json
    │       │   │   ├── findIntentBridgeResponse.schema.json
    │       │   │   ├── findIntentsByContextAgentErrorResponse.schema.json
    │       │   │   ├── findIntentsByContextAgentRequest.schema.json
    │       │   │   ├── findIntentsByContextAgentResponse.schema.json
    │       │   │   ├── findIntentsByContextBridgeErrorResponse.schema.json
    │       │   │   ├── findIntentsByContextBridgeRequest.schema.json
    │       │   │   ├── findIntentsByContextBridgeResponse.schema.json
    │       │   │   ├── getAppMetadataAgentErrorResponse.schema.json
    │       │   │   ├── getAppMetadataAgentRequest.schema.json
    │       │   │   ├── getAppMetadataAgentResponse.schema.json
    │       │   │   ├── getAppMetadataBridgeErrorResponse.schema.json
    │       │   │   ├── getAppMetadataBridgeRequest.schema.json
    │       │   │   ├── getAppMetadataBridgeResponse.schema.json
    │       │   │   ├── openAgentErrorResponse.schema.json
    │       │   │   ├── openAgentRequest.schema.json
    │       │   │   ├── openAgentResponse.schema.json
    │       │   │   ├── openBridgeErrorResponse.schema.json
    │       │   │   ├── openBridgeRequest.schema.json
    │       │   │   ├── openBridgeResponse.schema.json
    │       │   │   ├── privateChannelBroadcastAgentRequest.schema.json
    │       │   │   ├── privateChannelBroadcastBridgeRequest.schema.json
    │       │   │   ├── privateChannelEventListenerAddedAgentRequest.schema.json
    │       │   │   ├── privateChannelEventListenerAddedBridgeRequest.schema.json
    │       │   │   ├── privateChannelEventListenerRemovedAgentRequest.schema.json
    │       │   │   ├── privateChannelEventListenerRemovedBridgeRequest.schema.json
    │       │   │   ├── privateChannelOnAddContextListenerAgentRequest.schema.json
    │       │   │   ├── privateChannelOnAddContextListenerBridgeRequest.schema.json
    │       │   │   ├── privateChannelOnDisconnectAgentRequest.schema.json
    │       │   │   ├── privateChannelOnDisconnectBridgeRequest.schema.json
    │       │   │   ├── privateChannelOnUnsubscribeAgentRequest.schema.json
    │       │   │   ├── privateChannelOnUnsubscribeBridgeRequest.schema.json
    │       │   │   ├── raiseIntentAgentErrorResponse.schema.json
    │       │   │   ├── raiseIntentAgentRequest.schema.json
    │       │   │   ├── raiseIntentAgentResponse.schema.json
    │       │   │   ├── raiseIntentBridgeErrorResponse.schema.json
    │       │   │   ├── raiseIntentBridgeRequest.schema.json
    │       │   │   ├── raiseIntentBridgeResponse.schema.json
    │       │   │   ├── raiseIntentResultAgentErrorResponse.schema.json
    │       │   │   ├── raiseIntentResultAgentResponse.schema.json
    │       │   │   ├── raiseIntentResultBridgeErrorResponse.schema.json
    │       │   │   └── raiseIntentResultBridgeResponse.schema.json
    │       │   ├── bridgingAsyncAPI/
    │       │   │   ├── README.md
    │       │   │   └── bridgingAsyncAPI.json
    │       │   └── context/
    │       │       ├── action.schema.json
    │       │       ├── chart.schema.json
    │       │       ├── chatInitSettings.schema.json
    │       │       ├── chatMessage.schema.json
    │       │       ├── chatRoom.schema.json
    │       │       ├── chatSearchCriteria.schema.json
    │       │       ├── contact.schema.json
    │       │       ├── contactList.schema.json
    │       │       ├── context.schema.json
    │       │       ├── country.schema.json
    │       │       ├── currency.schema.json
    │       │       ├── email.schema.json
    │       │       ├── instrument.schema.json
    │       │       ├── instrumentList.schema.json
    │       │       ├── interaction.schema.json
    │       │       ├── message.schema.json
    │       │       ├── nothing.schema.json
    │       │       ├── order.schema.json
    │       │       ├── orderList.schema.json
    │       │       ├── organization.schema.json
    │       │       ├── portfolio.schema.json
    │       │       ├── position.schema.json
    │       │       ├── product.schema.json
    │       │       ├── timeRange.schema.json
    │       │       ├── trade.schema.json
    │       │       ├── tradeList.schema.json
    │       │       ├── transactionresult.schema.json
    │       │       └── valuation.schema.json
    │       └── 2.2/
    │           ├── api/
    │           │   ├── README.md
    │           │   ├── WCP1Hello.schema.json
    │           │   ├── WCP2LoadUrl.schema.json
    │           │   ├── WCP3Handshake.schema.json
    │           │   ├── WCP4ValidateAppIdentity.schema.json
    │           │   ├── WCP5ValidateAppIdentityFailedResponse.schema.json
    │           │   ├── WCP5ValidateAppIdentityResponse.schema.json
    │           │   ├── WCP6Goodbye.schema.json
    │           │   ├── WCPConnectionStep.schema.json
    │           │   ├── addContextListenerRequest.schema.json
    │           │   ├── addContextListenerResponse.schema.json
    │           │   ├── addEventListenerRequest.schema.json
    │           │   ├── addEventListenerResponse.schema.json
    │           │   ├── addIntentListenerRequest.schema.json
    │           │   ├── addIntentListenerResponse.schema.json
    │           │   ├── agentEvent.schema.json
    │           │   ├── agentResponse.schema.json
    │           │   ├── api.schema.json
    │           │   ├── appRequest.schema.json
    │           │   ├── broadcastEvent.schema.json
    │           │   ├── broadcastRequest.schema.json
    │           │   ├── broadcastResponse.schema.json
    │           │   ├── channelChangedEvent.schema.json
    │           │   ├── common.schema.json
    │           │   ├── contextListenerUnsubscribeRequest.schema.json
    │           │   ├── contextListenerUnsubscribeResponse.schema.json
    │           │   ├── createPrivateChannelRequest.schema.json
    │           │   ├── createPrivateChannelResponse.schema.json
    │           │   ├── eventListenerUnsubscribeRequest.schema.json
    │           │   ├── eventListenerUnsubscribeResponse.schema.json
    │           │   ├── fdc3UserInterfaceChannelSelected.schema.json
    │           │   ├── fdc3UserInterfaceChannels.schema.json
    │           │   ├── fdc3UserInterfaceDrag.schema.json
    │           │   ├── fdc3UserInterfaceHandshake.schema.json
    │           │   ├── fdc3UserInterfaceHello.schema.json
    │           │   ├── fdc3UserInterfaceMessage.schema.json
    │           │   ├── fdc3UserInterfaceResolve.schema.json
    │           │   ├── fdc3UserInterfaceResolveAction.schema.json
    │           │   ├── fdc3UserInterfaceRestyle.schema.json
    │           │   ├── findInstancesRequest.schema.json
    │           │   ├── findInstancesResponse.schema.json
    │           │   ├── findIntentRequest.schema.json
    │           │   ├── findIntentResponse.schema.json
    │           │   ├── findIntentsByContextRequest.schema.json
    │           │   ├── findIntentsByContextResponse.schema.json
    │           │   ├── getAppMetadataRequest.schema.json
    │           │   ├── getAppMetadataResponse.schema.json
    │           │   ├── getCurrentChannelRequest.schema.json
    │           │   ├── getCurrentChannelResponse.schema.json
    │           │   ├── getCurrentContextRequest.schema.json
    │           │   ├── getCurrentContextResponse.schema.json
    │           │   ├── getInfoRequest.schema.json
    │           │   ├── getInfoResponse.schema.json
    │           │   ├── getOrCreateChannelRequest.schema.json
    │           │   ├── getOrCreateChannelResponse.schema.json
    │           │   ├── getUserChannelsRequest.schema.json
    │           │   ├── getUserChannelsResponse.schema.json
    │           │   ├── heartbeatAcknowledgmentRequest.schema.json
    │           │   ├── heartbeatEvent.schema.json
    │           │   ├── intentEvent.schema.json
    │           │   ├── intentListenerUnsubscribeRequest.schema.json
    │           │   ├── intentListenerUnsubscribeResponse.schema.json
    │           │   ├── intentResultRequest.schema.json
    │           │   ├── intentResultResponse.schema.json
    │           │   ├── joinUserChannelRequest.schema.json
    │           │   ├── joinUserChannelResponse.schema.json
    │           │   ├── leaveCurrentChannelRequest.schema.json
    │           │   ├── leaveCurrentChannelResponse.schema.json
    │           │   ├── openRequest.schema.json
    │           │   ├── openResponse.schema.json
    │           │   ├── privateChannelAddEventListenerRequest.schema.json
    │           │   ├── privateChannelAddEventListenerResponse.schema.json
    │           │   ├── privateChannelDisconnectRequest.schema.json
    │           │   ├── privateChannelDisconnectResponse.schema.json
    │           │   ├── privateChannelOnAddContextListenerEvent.schema.json
    │           │   ├── privateChannelOnDisconnectEvent.schema.json
    │           │   ├── privateChannelOnUnsubscribeEvent.schema.json
    │           │   ├── privateChannelUnsubscribeEventListenerRequest.schema.json
    │           │   ├── privateChannelUnsubscribeEventListenerResponse.schema.json
    │           │   ├── raiseIntentForContextRequest.schema.json
    │           │   ├── raiseIntentForContextResponse.schema.json
    │           │   ├── raiseIntentRequest.schema.json
    │           │   ├── raiseIntentResponse.schema.json
    │           │   ├── raiseIntentResultResponse.schema.json
    │           │   └── t2sQuicktypeUtil.js
    │           ├── app-directory.html
    │           ├── appd.schema.json
    │           ├── bridging/
    │           │   ├── agentErrorResponse.schema.json
    │           │   ├── agentRequest.schema.json
    │           │   ├── agentResponse.schema.json
    │           │   ├── bridgeErrorResponse.schema.json
    │           │   ├── bridgeRequest.schema.json
    │           │   ├── bridgeResponse.schema.json
    │           │   ├── broadcastAgentRequest.schema.json
    │           │   ├── broadcastBridgeRequest.schema.json
    │           │   ├── common.schema.json
    │           │   ├── connectionStep.schema.json
    │           │   ├── connectionStep2Hello.schema.json
    │           │   ├── connectionStep3Handshake.schema.json
    │           │   ├── connectionStep4AuthenticationFailed.schema.json
    │           │   ├── connectionStep6ConnectedAgentsUpdate.schema.json
    │           │   ├── findInstancesAgentErrorResponse.schema.json
    │           │   ├── findInstancesAgentRequest.schema.json
    │           │   ├── findInstancesAgentResponse.schema.json
    │           │   ├── findInstancesBridgeErrorResponse.schema.json
    │           │   ├── findInstancesBridgeRequest.schema.json
    │           │   ├── findInstancesBridgeResponse.schema.json
    │           │   ├── findIntentAgentErrorResponse.schema.json
    │           │   ├── findIntentAgentRequest.schema.json
    │           │   ├── findIntentAgentResponse.schema.json
    │           │   ├── findIntentBridgeErrorResponse.schema.json
    │           │   ├── findIntentBridgeRequest.schema.json
    │           │   ├── findIntentBridgeResponse.schema.json
    │           │   ├── findIntentsByContextAgentErrorResponse.schema.json
    │           │   ├── findIntentsByContextAgentRequest.schema.json
    │           │   ├── findIntentsByContextAgentResponse.schema.json
    │           │   ├── findIntentsByContextBridgeErrorResponse.schema.json
    │           │   ├── findIntentsByContextBridgeRequest.schema.json
    │           │   ├── findIntentsByContextBridgeResponse.schema.json
    │           │   ├── getAppMetadataAgentErrorResponse.schema.json
    │           │   ├── getAppMetadataAgentRequest.schema.json
    │           │   ├── getAppMetadataAgentResponse.schema.json
    │           │   ├── getAppMetadataBridgeErrorResponse.schema.json
    │           │   ├── getAppMetadataBridgeRequest.schema.json
    │           │   ├── getAppMetadataBridgeResponse.schema.json
    │           │   ├── openAgentErrorResponse.schema.json
    │           │   ├── openAgentRequest.schema.json
    │           │   ├── openAgentResponse.schema.json
    │           │   ├── openBridgeErrorResponse.schema.json
    │           │   ├── openBridgeRequest.schema.json
    │           │   ├── openBridgeResponse.schema.json
    │           │   ├── privateChannelBroadcastAgentRequest.schema.json
    │           │   ├── privateChannelBroadcastBridgeRequest.schema.json
    │           │   ├── privateChannelEventListenerAddedAgentRequest.schema.json
    │           │   ├── privateChannelEventListenerAddedBridgeRequest.schema.json
    │           │   ├── privateChannelEventListenerRemovedAgentRequest.schema.json
    │           │   ├── privateChannelEventListenerRemovedBridgeRequest.schema.json
    │           │   ├── privateChannelOnAddContextListenerAgentRequest.schema.json
    │           │   ├── privateChannelOnAddContextListenerBridgeRequest.schema.json
    │           │   ├── privateChannelOnDisconnectAgentRequest.schema.json
    │           │   ├── privateChannelOnDisconnectBridgeRequest.schema.json
    │           │   ├── privateChannelOnUnsubscribeAgentRequest.schema.json
    │           │   ├── privateChannelOnUnsubscribeBridgeRequest.schema.json
    │           │   ├── raiseIntentAgentErrorResponse.schema.json
    │           │   ├── raiseIntentAgentRequest.schema.json
    │           │   ├── raiseIntentAgentResponse.schema.json
    │           │   ├── raiseIntentBridgeErrorResponse.schema.json
    │           │   ├── raiseIntentBridgeRequest.schema.json
    │           │   ├── raiseIntentBridgeResponse.schema.json
    │           │   ├── raiseIntentResultAgentErrorResponse.schema.json
    │           │   ├── raiseIntentResultAgentResponse.schema.json
    │           │   ├── raiseIntentResultBridgeErrorResponse.schema.json
    │           │   └── raiseIntentResultBridgeResponse.schema.json
    │           ├── bridgingAsyncAPI/
    │           │   ├── README.md
    │           │   └── bridgingAsyncAPI.json
    │           └── context/
    │               ├── action.schema.json
    │               ├── chart.schema.json
    │               ├── chatInitSettings.schema.json
    │               ├── chatMessage.schema.json
    │               ├── chatRoom.schema.json
    │               ├── chatSearchCriteria.schema.json
    │               ├── contact.schema.json
    │               ├── contactList.schema.json
    │               ├── context.schema.json
    │               ├── country.schema.json
    │               ├── currency.schema.json
    │               ├── email.schema.json
    │               ├── fileAttachment.schema.json
    │               ├── instrument.schema.json
    │               ├── instrumentList.schema.json
    │               ├── interaction.schema.json
    │               ├── message.schema.json
    │               ├── nothing.schema.json
    │               ├── order.schema.json
    │               ├── orderList.schema.json
    │               ├── organization.schema.json
    │               ├── portfolio.schema.json
    │               ├── position.schema.json
    │               ├── product.schema.json
    │               ├── timeRange.schema.json
    │               ├── trade.schema.json
    │               ├── tradeList.schema.json
    │               ├── transactionresult.schema.json
    │               └── valuation.schema.json
    ├── versioned_docs/
    │   ├── version-1.0/
    │   │   ├── api/
    │   │   │   ├── Context.md
    │   │   │   ├── DesktopAgent.md
    │   │   │   ├── Errors.md
    │   │   │   ├── api-intro.md
    │   │   │   └── api-spec.md
    │   │   ├── appd-discovery.md
    │   │   ├── appd-intro.md
    │   │   ├── appd-spec.md
    │   │   ├── appd-use.md
    │   │   ├── context-intro.md
    │   │   ├── context-spec.md
    │   │   ├── fdc3-charter.md
    │   │   ├── fdc3-compliance.md
    │   │   ├── fdc3-intro.md
    │   │   ├── fdc3-standard.md
    │   │   ├── intents-intro.md
    │   │   ├── intents-spec.md
    │   │   ├── use-cases/
    │   │   │   ├── 001-equity-sell-side-trader.md
    │   │   │   ├── 002-buy-side-portfolio-manager.md
    │   │   │   ├── 003-inhouse-cross-platform-launcher.md
    │   │   │   ├── 004-client-side-fx-trader.md
    │   │   │   ├── 005-buy-side-treasurer.md
    │   │   │   ├── 009-call-transcription-to-crm.md
    │   │   │   ├── 010-realtime-trade-ticket-population.md
    │   │   │   ├── 013-user-launches-multiple-apps-from-a-single-container.md
    │   │   │   ├── 015-sales-floor-base-workflow.md
    │   │   │   ├── 016-quantifying-fdc3-interactions.md
    │   │   │   ├── 017-fine-tuning-interop-with-channels.md
    │   │   │   ├── meeting-minutes/
    │   │   │   │   ├── 2020-01-16 uc-wg meeting notes.md
    │   │   │   │   ├── 2020-02-20 uc-wg meeting notes.md
    │   │   │   │   └── 2020-03-19 uc-wg meeting notes.md
    │   │   │   ├── overview.md
    │   │   │   └── readme.md
    │   │   └── why-fdc3.md
    │   ├── version-1.1/
    │   │   ├── api/
    │   │   │   ├── Context.md
    │   │   │   ├── DesktopAgent.md
    │   │   │   ├── Errors.md
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── AppIntent.md
    │   │   │   │   ├── AppMetadata.md
    │   │   │   │   ├── Channel.md
    │   │   │   │   ├── ChannelError.md
    │   │   │   │   ├── Context.md
    │   │   │   │   ├── ContextHandler.md
    │   │   │   │   ├── DesktopAgent.md
    │   │   │   │   ├── DisplayMetadata.md
    │   │   │   │   ├── IntentMetadata.md
    │   │   │   │   ├── IntentResolution.md
    │   │   │   │   ├── Listener.md
    │   │   │   │   ├── OpenError.md
    │   │   │   │   └── ResolveError.md
    │   │   │   └── spec.md
    │   │   ├── app-directory/
    │   │   │   ├── discovery.md
    │   │   │   ├── overview.md
    │   │   │   ├── spec.md
    │   │   │   └── usage.md
    │   │   ├── context/
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── Contact.md
    │   │   │   │   ├── ContactList.md
    │   │   │   │   ├── Context.md
    │   │   │   │   ├── Country.md
    │   │   │   │   ├── Instrument.md
    │   │   │   │   ├── InstrumentList.md
    │   │   │   │   ├── Organization.md
    │   │   │   │   ├── Portfolio.md
    │   │   │   │   └── Position.md
    │   │   │   └── spec.md
    │   │   ├── fdc3-charter.md
    │   │   ├── fdc3-compliance.md
    │   │   ├── fdc3-intro.md
    │   │   ├── fdc3-standard.md
    │   │   ├── intents/
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── StartCall.md
    │   │   │   │   ├── StartChat.md
    │   │   │   │   ├── ViewAnalysis.md
    │   │   │   │   ├── ViewChart.md
    │   │   │   │   ├── ViewContact.md
    │   │   │   │   ├── ViewInstrument.md
    │   │   │   │   ├── ViewNews.md
    │   │   │   │   └── ViewQuote.md
    │   │   │   └── spec.md
    │   │   ├── use-cases/
    │   │   │   ├── 001-equity-sell-side-trader.md
    │   │   │   ├── 002-buy-side-portfolio-manager.md
    │   │   │   ├── 003-inhouse-cross-platform-launcher.md
    │   │   │   ├── 004-client-side-fx-trader.md
    │   │   │   ├── 005-buy-side-treasurer.md
    │   │   │   ├── 009-call-transcription-to-crm.md
    │   │   │   ├── 010-realtime-trade-ticket-population.md
    │   │   │   ├── 013-user-launches-multiple-apps-from-a-single-container.md
    │   │   │   ├── 015-sales-floor-base-workflow.md
    │   │   │   ├── 016-quantifying-fdc3-interactions.md
    │   │   │   ├── 017-fine-tuning-interop-with-channels.md
    │   │   │   └── overview.md
    │   │   └── why-fdc3.md
    │   ├── version-1.2/
    │   │   ├── api/
    │   │   │   ├── Context.md
    │   │   │   ├── DesktopAgent.md
    │   │   │   ├── Errors.md
    │   │   │   ├── api-intro.md
    │   │   │   ├── api-spec.md
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── AppIntent.md
    │   │   │   │   ├── AppMetadata.md
    │   │   │   │   ├── Channel.md
    │   │   │   │   ├── ChannelError.md
    │   │   │   │   ├── Context.md
    │   │   │   │   ├── ContextHandler.md
    │   │   │   │   ├── DesktopAgent.md
    │   │   │   │   ├── DisplayMetadata.md
    │   │   │   │   ├── Errors.md
    │   │   │   │   ├── Globals.md
    │   │   │   │   ├── IntentMetadata.md
    │   │   │   │   ├── IntentResolution.md
    │   │   │   │   ├── Listener.md
    │   │   │   │   ├── Metadata.md
    │   │   │   │   ├── OpenError.md
    │   │   │   │   ├── ResolveError.md
    │   │   │   │   └── Types.md
    │   │   │   └── spec.md
    │   │   ├── app-directory/
    │   │   │   ├── discovery.md
    │   │   │   ├── overview.md
    │   │   │   ├── spec.md
    │   │   │   └── usage.md
    │   │   ├── context/
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── Contact.md
    │   │   │   │   ├── ContactList.md
    │   │   │   │   ├── Context.md
    │   │   │   │   ├── Country.md
    │   │   │   │   ├── Instrument.md
    │   │   │   │   ├── InstrumentList.md
    │   │   │   │   ├── Organization.md
    │   │   │   │   ├── Portfolio.md
    │   │   │   │   └── Position.md
    │   │   │   └── spec.md
    │   │   ├── fdc3-charter.md
    │   │   ├── fdc3-compliance.md
    │   │   ├── fdc3-intro.md
    │   │   ├── fdc3-standard.md
    │   │   ├── intents/
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── StartCall.md
    │   │   │   │   ├── StartChat.md
    │   │   │   │   ├── ViewAnalysis.md
    │   │   │   │   ├── ViewChart.md
    │   │   │   │   ├── ViewContact.md
    │   │   │   │   ├── ViewInstrument.md
    │   │   │   │   ├── ViewNews.md
    │   │   │   │   └── ViewQuote.md
    │   │   │   └── spec.md
    │   │   ├── supported-platforms.md
    │   │   ├── use-cases/
    │   │   │   ├── 001-equity-sell-side-trader.md
    │   │   │   ├── 002-buy-side-portfolio-manager.md
    │   │   │   ├── 003-inhouse-cross-platform-launcher.md
    │   │   │   ├── 004-client-side-fx-trader.md
    │   │   │   ├── 005-buy-side-treasurer.md
    │   │   │   ├── 009-call-transcription-to-crm.md
    │   │   │   ├── 010-realtime-trade-ticket-population.md
    │   │   │   ├── 013-user-launches-multiple-apps-from-a-single-container.md
    │   │   │   ├── 015-sales-floor-base-workflow.md
    │   │   │   ├── 016-quantifying-fdc3-interactions.md
    │   │   │   ├── 017-fine-tuning-interop-with-channels.md
    │   │   │   └── overview.md
    │   │   └── why-fdc3.md
    │   ├── version-2.0/
    │   │   ├── api/
    │   │   │   ├── conformance/
    │   │   │   │   ├── App-Channel-Tests.md
    │   │   │   │   ├── Basic-Tests.md
    │   │   │   │   ├── Intents-Tests.md
    │   │   │   │   ├── Metadata-Tests.md
    │   │   │   │   ├── Open-Tests.md
    │   │   │   │   ├── Overview.md
    │   │   │   │   └── User-Channel-Tests.md
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── Channel.md
    │   │   │   │   ├── DesktopAgent.md
    │   │   │   │   ├── Errors.md
    │   │   │   │   ├── Globals.md
    │   │   │   │   ├── Metadata.md
    │   │   │   │   ├── PrivateChannel.md
    │   │   │   │   └── Types.md
    │   │   │   └── spec.md
    │   │   ├── app-directory/
    │   │   │   ├── overview.md
    │   │   │   └── spec.md
    │   │   ├── context/
    │   │   │   ├── ref/
    │   │   │   │   ├── Chart.md
    │   │   │   │   ├── ChatInitSettings.md
    │   │   │   │   ├── Contact.md
    │   │   │   │   ├── ContactList.md
    │   │   │   │   ├── Context.md
    │   │   │   │   ├── Country.md
    │   │   │   │   ├── Currency.md
    │   │   │   │   ├── Email.md
    │   │   │   │   ├── Instrument.md
    │   │   │   │   ├── InstrumentList.md
    │   │   │   │   ├── Nothing.md
    │   │   │   │   ├── Organization.md
    │   │   │   │   ├── Portfolio.md
    │   │   │   │   ├── Position.md
    │   │   │   │   ├── TimeRange.md
    │   │   │   │   └── Valuation.md
    │   │   │   └── spec.md
    │   │   ├── fdc3-charter.md
    │   │   ├── fdc3-compliance.md
    │   │   ├── fdc3-glossary.md
    │   │   ├── fdc3-intro.md
    │   │   ├── fdc3-standard.md
    │   │   ├── guides/
    │   │   │   └── submit-new-intent.md
    │   │   ├── intents/
    │   │   │   ├── overview.md
    │   │   │   ├── ref/
    │   │   │   │   ├── StartCall.md
    │   │   │   │   ├── StartChat.md
    │   │   │   │   ├── StartEmail.md
    │   │   │   │   ├── ViewAnalysis.md
    │   │   │   │   ├── ViewChart.md
    │   │   │   │   ├── ViewContact.md
    │   │   │   │   ├── ViewHoldings.md
    │   │   │   │   ├── ViewInstrument.md
    │   │   │   │   ├── ViewInteractions.md
    │   │   │   │   ├── ViewNews.md
    │   │   │   │   ├── ViewOrders.md
    │   │   │   │   ├── ViewProfile.md
    │   │   │   │   ├── ViewQuote.md
    │   │   │   │   └── ViewResearch.md
    │   │   │   └── spec.md
    │   │   ├── references.md
    │   │   ├── supported-platforms.md
    │   │   ├── trademarks.md
    │   │   ├── use-cases/
    │   │   │   ├── 001-equity-sell-side-trader.md
    │   │   │   ├── 002-buy-side-portfolio-manager.md
    │   │   │   ├── 003-inhouse-cross-platform-launcher.md
    │   │   │   ├── 004-client-side-fx-trader.md
    │   │   │   ├── 005-buy-side-treasurer.md
    │   │   │   ├── 009-call-transcription-to-crm.md
    │   │   │   ├── 010-realtime-trade-ticket-population.md
    │   │   │   ├── 013-user-launches-multiple-apps-from-a-single-container.md
    │   │   │   ├── 015-sales-floor-base-workflow.md
    │   │   │   ├── 016-quantifying-fdc3-interactions.md
    │   │   │   ├── 017-fine-tuning-interop-with-channels.md
    │   │   │   └── overview.md
    │   │   └── why-fdc3.md
    │   ├── version-2.1/
    │   │   ├── .markdownlint.jsonc
    │   │   ├── agent-bridging/
    │   │   │   ├── ref/
    │   │   │   │   ├── PrivateChannel.broadcast.md
    │   │   │   │   ├── PrivateChannel.eventListenerAdded.md
    │   │   │   │   ├── PrivateChannel.eventListenerRemoved.md
    │   │   │   │   ├── PrivateChannel.onAddContextListener.md
    │   │   │   │   ├── PrivateChannel.onDisconnect.md
    │   │   │   │   ├── PrivateChannel.onUnsubscribe.md
    │   │   │   │   ├── broadcast.md
    │   │   │   │   ├── findInstances.md
    │   │   │   │   ├── findIntent.md
    │   │   │   │   ├── findIntentsByContext.md
    │   │   │   │   ├── getAppMetadata.md
    │   │   │   │   ├── open.md
    │   │   │   │   └── raiseIntent.md
    │   │   │   └── spec.md
    │   │   ├── api/
    │   │   │   ├── conformance/
    │   │   │   │   ├── App-Channel-Tests.md
    │   │   │   │   ├── Basic-Tests.md
    │   │   │   │   ├── Intents-Tests.md
    │   │   │   │   ├── Metadata-Tests.md
    │   │   │   │   ├── Open-Tests.md
    │   │   │   │   ├── Overview.md
    │   │   │   │   └── User-Channel-Tests.md
    │   │   │   ├── ref/
    │   │   │   │   ├── Channel.md
    │   │   │   │   ├── DesktopAgent.md
    │   │   │   │   ├── Errors.md
    │   │   │   │   ├── Globals.md
    │   │   │   │   ├── Metadata.md
    │   │   │   │   ├── PrivateChannel.md
    │   │   │   │   └── Types.md
    │   │   │   └── spec.md
    │   │   ├── app-directory/
    │   │   │   ├── overview.md
    │   │   │   └── spec.md
    │   │   ├── context/
    │   │   │   ├── ref/
    │   │   │   │   ├── Action.md
    │   │   │   │   ├── Chart.md
    │   │   │   │   ├── ChatInitSettings.md
    │   │   │   │   ├── ChatMessage.md
    │   │   │   │   ├── ChatRoom.md
    │   │   │   │   ├── ChatSearchCriteria.md
    │   │   │   │   ├── Contact.md
    │   │   │   │   ├── ContactList.md
    │   │   │   │   ├── Context.md
    │   │   │   │   ├── Country.md
    │   │   │   │   ├── Currency.md
    │   │   │   │   ├── Email.md
    │   │   │   │   ├── Instrument.md
    │   │   │   │   ├── InstrumentList.md
    │   │   │   │   ├── Interaction.md
    │   │   │   │   ├── Message.md
    │   │   │   │   ├── Nothing.md
    │   │   │   │   ├── Order.md
    │   │   │   │   ├── OrderList.md
    │   │   │   │   ├── Organization.md
    │   │   │   │   ├── Portfolio.md
    │   │   │   │   ├── Position.md
    │   │   │   │   ├── Product.md
    │   │   │   │   ├── TimeRange.md
    │   │   │   │   ├── Trade.md
    │   │   │   │   ├── TradeList.md
    │   │   │   │   ├── TransactionResult.md
    │   │   │   │   └── Valuation.md
    │   │   │   └── spec.md
    │   │   ├── fdc3-charter.md
    │   │   ├── fdc3-compliance.md
    │   │   ├── fdc3-glossary.md
    │   │   ├── fdc3-intro.md
    │   │   ├── fdc3-standard.md
    │   │   ├── guides/
    │   │   │   └── submit-new-intent.md
    │   │   ├── intents/
    │   │   │   ├── ref/
    │   │   │   │   ├── CreateInteraction.md
    │   │   │   │   ├── SendChatMessage.md
    │   │   │   │   ├── StartCall.md
    │   │   │   │   ├── StartChat.md
    │   │   │   │   ├── StartEmail.md
    │   │   │   │   ├── ViewAnalysis.md
    │   │   │   │   ├── ViewChart.md
    │   │   │   │   ├── ViewChat.md
    │   │   │   │   ├── ViewContact.md
    │   │   │   │   ├── ViewHoldings.md
    │   │   │   │   ├── ViewInstrument.md
    │   │   │   │   ├── ViewInteractions.md
    │   │   │   │   ├── ViewMessages.md
    │   │   │   │   ├── ViewNews.md
    │   │   │   │   ├── ViewOrders.md
    │   │   │   │   ├── ViewProfile.md
    │   │   │   │   ├── ViewQuote.md
    │   │   │   │   └── ViewResearch.md
    │   │   │   └── spec.md
    │   │   ├── references.md
    │   │   ├── supported-platforms.md
    │   │   ├── trademarks.md
    │   │   ├── use-cases/
    │   │   │   ├── 001-equity-sell-side-trader.md
    │   │   │   ├── 002-buy-side-portfolio-manager.md
    │   │   │   ├── 003-inhouse-cross-platform-launcher.md
    │   │   │   ├── 004-client-side-fx-trader.md
    │   │   │   ├── 005-buy-side-treasurer.md
    │   │   │   ├── 009-call-transcription-to-crm.md
    │   │   │   ├── 010-realtime-trade-ticket-population.md
    │   │   │   ├── 013-user-launches-multiple-apps-from-a-single-container.md
    │   │   │   ├── 015-sales-floor-base-workflow.md
    │   │   │   ├── 016-quantifying-fdc3-interactions.md
    │   │   │   ├── 017-fine-tuning-interop-with-channels.md
    │   │   │   ├── meeting-minutes/
    │   │   │   │   ├── 2020-01-16 uc-wg meeting notes.md
    │   │   │   │   ├── 2020-02-20 uc-wg meeting notes.md
    │   │   │   │   └── 2020-03-19 uc-wg meeting notes.md
    │   │   │   ├── overview.md
    │   │   │   └── readme.md
    │   │   └── why-fdc3.md
    │   └── version-2.2/
    │       ├── .markdownlint.jsonc
    │       ├── agent-bridging/
    │       │   ├── ref/
    │       │   │   ├── PrivateChannel.broadcast.md
    │       │   │   ├── PrivateChannel.eventListenerAdded.md
    │       │   │   ├── PrivateChannel.eventListenerRemoved.md
    │       │   │   ├── PrivateChannel.onAddContextListener.md
    │       │   │   ├── PrivateChannel.onDisconnect.md
    │       │   │   ├── PrivateChannel.onUnsubscribe.md
    │       │   │   ├── broadcast.md
    │       │   │   ├── findInstances.md
    │       │   │   ├── findIntent.md
    │       │   │   ├── findIntentsByContext.md
    │       │   │   ├── getAppMetadata.md
    │       │   │   ├── open.md
    │       │   │   └── raiseIntent.md
    │       │   └── spec.md
    │       ├── api/
    │       │   ├── conformance/
    │       │   │   ├── App-Channel-Tests.md
    │       │   │   ├── Basic-Tests.md
    │       │   │   ├── Intents-Tests.md
    │       │   │   ├── Metadata-Tests.md
    │       │   │   ├── Open-Tests.md
    │       │   │   ├── Overview.md
    │       │   │   └── User-Channel-Tests.md
    │       │   ├── ref/
    │       │   │   ├── Channel.md
    │       │   │   ├── DesktopAgent.md
    │       │   │   ├── Errors.md
    │       │   │   ├── Events.md
    │       │   │   ├── GetAgent.md
    │       │   │   ├── Metadata.md
    │       │   │   ├── PrivateChannel.md
    │       │   │   └── Types.md
    │       │   ├── spec.md
    │       │   ├── specs/
    │       │   │   ├── browserResidentDesktopAgents.md
    │       │   │   ├── desktopAgentCommunicationProtocol.md
    │       │   │   ├── preloadDesktopAgents.md
    │       │   │   └── webConnectionProtocol.md
    │       │   └── supported-platforms.md
    │       ├── app-directory/
    │       │   ├── overview.md
    │       │   └── spec.md
    │       ├── context/
    │       │   ├── ref/
    │       │   │   ├── Action.md
    │       │   │   ├── BaseContext.md
    │       │   │   ├── Chart.md
    │       │   │   ├── ChatInitSettings.md
    │       │   │   ├── ChatMessage.md
    │       │   │   ├── ChatRoom.md
    │       │   │   ├── ChatSearchCriteria.md
    │       │   │   ├── Contact.md
    │       │   │   ├── ContactList.md
    │       │   │   ├── Context.md
    │       │   │   ├── Country.md
    │       │   │   ├── Currency.md
    │       │   │   ├── DocumentedContext.md
    │       │   │   ├── Email.md
    │       │   │   ├── FileAttachment.md
    │       │   │   ├── Instrument.md
    │       │   │   ├── InstrumentList.md
    │       │   │   ├── Interaction.md
    │       │   │   ├── Message.md
    │       │   │   ├── Nothing.md
    │       │   │   ├── Order.md
    │       │   │   ├── OrderList.md
    │       │   │   ├── Organization.md
    │       │   │   ├── Portfolio.md
    │       │   │   ├── Position.md
    │       │   │   ├── Product.md
    │       │   │   ├── TimeRange.md
    │       │   │   ├── Trade.md
    │       │   │   ├── TradeList.md
    │       │   │   ├── TransactionResult.md
    │       │   │   └── Valuation.md
    │       │   └── spec.md
    │       ├── fdc3-charter.md
    │       ├── fdc3-compliance.md
    │       ├── fdc3-glossary.md
    │       ├── fdc3-intro.md
    │       ├── fdc3-standard.md
    │       ├── guides/
    │       │   └── submit-new-intent.md
    │       ├── intents/
    │       │   ├── ref/
    │       │   │   ├── CreateInteraction.md
    │       │   │   ├── CreateOrUpdateProfile.md
    │       │   │   ├── SendChatMessage.md
    │       │   │   ├── StartCall.md
    │       │   │   ├── StartChat.md
    │       │   │   ├── StartEmail.md
    │       │   │   ├── ViewAnalysis.md
    │       │   │   ├── ViewChart.md
    │       │   │   ├── ViewChat.md
    │       │   │   ├── ViewContact.md
    │       │   │   ├── ViewHoldings.md
    │       │   │   ├── ViewInstrument.md
    │       │   │   ├── ViewInteractions.md
    │       │   │   ├── ViewMessages.md
    │       │   │   ├── ViewNews.md
    │       │   │   ├── ViewOrders.md
    │       │   │   ├── ViewProfile.md
    │       │   │   ├── ViewQuote.md
    │       │   │   └── ViewResearch.md
    │       │   └── spec.md
    │       ├── references.md
    │       ├── trademarks.md
    │       ├── use-cases/
    │       │   ├── 001-equity-sell-side-trader.md
    │       │   ├── 002-buy-side-portfolio-manager.md
    │       │   ├── 003-inhouse-cross-platform-launcher.md
    │       │   ├── 004-client-side-fx-trader.md
    │       │   ├── 005-buy-side-treasurer.md
    │       │   ├── 006-call-transcription-to-crm.md
    │       │   ├── 007-realtime-trade-ticket-population.md
    │       │   ├── 008-user-launches-multiple-apps-from-a-single-container.md
    │       │   ├── 009-sales-floor-base-workflow.md
    │       │   ├── 010-quantifying-fdc3-interactions.md
    │       │   ├── 011-fine-tuning-interop-with-channels.md
    │       │   ├── meeting-minutes/
    │       │   │   ├── 2020-01-16 uc-wg meeting notes.md
    │       │   │   ├── 2020-02-20 uc-wg meeting notes.md
    │       │   │   └── 2020-03-19 uc-wg meeting notes.md
    │       │   ├── overview.md
    │       │   └── readme.md
    │       └── why-fdc3.md
    ├── versioned_sidebars/
    │   ├── version-1.0-sidebars.json
    │   ├── version-1.1-sidebars.json
    │   ├── version-1.2-sidebars.json
    │   ├── version-2.0-sidebars.json
    │   ├── version-2.1-sidebars.json
    │   └── version-2.2-sidebars.json
    └── versions.json
Download .txt
Showing preview only (237K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2320 symbols across 235 files)

FILE: packages/fdc3-agent-proxy/src/DesktopAgentProxy.ts
  class DesktopAgentProxy (line 26) | class DesktopAgentProxy implements DesktopAgent, Connectable {
    method constructor (line 33) | constructor(
    method addEventListener (line 77) | addEventListener(type: FDC3EventTypes | null, handler: EventHandler): ...
    method getInfo (line 81) | getInfo(): Promise<ImplementationMetadata> {
    method broadcast (line 85) | async broadcast(context: Context): Promise<void> {
    method addContextListener (line 94) | addContextListener(
    method getUserChannels (line 120) | getUserChannels() {
    method getSystemChannels (line 124) | getSystemChannels() {
    method getOrCreateChannel (line 128) | getOrCreateChannel(channelId: string) {
    method createPrivateChannel (line 132) | createPrivateChannel() {
    method leaveCurrentChannel (line 136) | leaveCurrentChannel() {
    method joinUserChannel (line 140) | joinUserChannel(channelId: string) {
    method joinChannel (line 144) | joinChannel(channelId: string) {
    method getCurrentChannel (line 148) | getCurrentChannel(): Promise<Channel | null> {
    method findIntent (line 152) | findIntent(intent: string, context: Context, resultType: string | unde...
    method findIntentsByContext (line 156) | findIntentsByContext(context: Context) {
    method ensureAppId (line 160) | private ensureAppId(app?: string | AppIdentifier): AppIdentifier | und...
    method raiseIntent (line 172) | raiseIntent(intent: string, context: Context, app?: string | AppIdenti...
    method addIntentListener (line 176) | addIntentListener(intent: string, handler: IntentHandler) {
    method raiseIntentForContext (line 180) | raiseIntentForContext(context: Context, app?: string | AppIdentifier):...
    method open (line 184) | open(app: string | AppIdentifier, context?: Context | undefined) {
    method findInstances (line 188) | findInstances(app: AppIdentifier) {
    method getAppMetadata (line 192) | getAppMetadata(app: AppIdentifier): Promise<AppMetadata> {
    method disconnect (line 196) | async disconnect(): Promise<void> {
    method connect (line 200) | async connect(): Promise<void> {

FILE: packages/fdc3-agent-proxy/src/Messaging.ts
  type Messaging (line 9) | interface Messaging {

FILE: packages/fdc3-agent-proxy/src/apps/AppSupport.ts
  type AppSupport (line 4) | interface AppSupport {

FILE: packages/fdc3-agent-proxy/src/apps/DefaultAppSupport.ts
  class DefaultAppSupport (line 18) | class DefaultAppSupport implements AppSupport {
    method constructor (line 23) | constructor(messaging: Messaging, messageExchangeTimeout: number, appL...
    method findInstances (line 29) | async findInstances(app: AppIdentifier): Promise<AppIdentifier[]> {
    method getAppMetadata (line 46) | async getAppMetadata(app: AppIdentifier): Promise<AppMetadata> {
    method open (line 71) | async open(app: AppIdentifier, context?: Context | undefined): Promise...
    method getImplementationMetadata (line 96) | async getImplementationMetadata(): Promise<ImplementationMetadata> {

FILE: packages/fdc3-agent-proxy/src/channels/ChannelSupport.ts
  type ChannelSupport (line 11) | interface ChannelSupport extends Connectable {

FILE: packages/fdc3-agent-proxy/src/channels/DefaultChannel.ts
  class DefaultChannel (line 16) | class DefaultChannel implements Channel {
    method constructor (line 23) | constructor(
    method broadcast (line 42) | async broadcast(context: Context): Promise<void> {
    method getCurrentContext (line 54) | async getCurrentContext(contextType?: string | undefined): Promise<Con...
    method addContextListener (line 73) | async addContextListener(
    method addContextListenerInner (line 99) | async addContextListenerInner(contextType: string | null, theHandler: ...
    method clearContext (line 111) | async clearContext(contextType?: string): Promise<void> {
    method addEventListener (line 124) | async addEventListener(type: string | null, handler: EventHandler): Pr...

FILE: packages/fdc3-agent-proxy/src/channels/DefaultChannelSupport.ts
  class DefaultChannelSupport (line 39) | class DefaultChannelSupport implements ChannelSupport, Connectable {
    method constructor (line 47) | constructor(messaging: Messaging, channelSelector: ChannelSelector, me...
    method connect (line 61) | async connect(): Promise<void> {
    method disconnect (line 95) | async disconnect(): Promise<void> {
    method addEventListener (line 99) | async addEventListener(handler: EventHandler, type: FDC3EventTypes | n...
    method getUserChannel (line 105) | async getUserChannel(): Promise<Channel | null> {
    method getUserChannels (line 148) | async getUserChannels(): Promise<Channel[]> {
    method getOrCreate (line 173) | async getOrCreate(id: string): Promise<Channel> {
    method createPrivateChannel (line 204) | async createPrivateChannel(): Promise<PrivateChannel> {
    method leaveUserChannel (line 226) | async leaveUserChannel(): Promise<void> {
    method joinUserChannel (line 241) | async joinUserChannel(id: string) {
    method addContextListener (line 266) | async addContextListener(handler: ContextHandler, type: string | null)...

FILE: packages/fdc3-agent-proxy/src/channels/DefaultPrivateChannel.ts
  class DefaultPrivateChannel (line 24) | class DefaultPrivateChannel extends DefaultChannel implements PrivateCha...
    method constructor (line 25) | constructor(messaging: Messaging, messageExchangeTimeout: number, id: ...
    method addEventListener (line 34) | async addEventListener(type: PrivateChannelEventTypes | null, handler:...
    method onAddContextListener (line 57) | onAddContextListener(handler: (contextType?: string) => void): Listener {
    method onUnsubscribe (line 72) | onUnsubscribe(handler: (contextType?: string) => void): Listener {
    method onDisconnect (line 87) | onDisconnect(handler: () => void): Listener {
    method disconnect (line 102) | async disconnect(): Promise<void> {
    method addContextListenerInner (line 117) | async addContextListenerInner(contextType: string | null, theHandler: ...

FILE: packages/fdc3-agent-proxy/src/heartbeat/DefaultHeartbeatSupport.ts
  class DefaultHeartbeatSupport (line 8) | class DefaultHeartbeatSupport implements HeartbeatSupport {
    method constructor (line 12) | constructor(messaging: Messaging) {
    method connect (line 16) | async connect(): Promise<void> {
    method disconnect (line 21) | async disconnect(): Promise<void> {

FILE: packages/fdc3-agent-proxy/src/heartbeat/HeartbeatSupport.ts
  type HeartbeatSupport (line 4) | interface HeartbeatSupport extends Connectable { }

FILE: packages/fdc3-agent-proxy/src/intents/DefaultIntentResolution.ts
  class DefaultIntentResolution (line 4) | class DefaultIntentResolution implements IntentResolution {
    method constructor (line 10) | constructor(messaging: Messaging, result: Promise<IntentResult>, sourc...
    method getResult (line 20) | getResult(): Promise<IntentResult> {

FILE: packages/fdc3-agent-proxy/src/intents/DefaultIntentSupport.ts
  class DefaultIntentSupport (line 57) | class DefaultIntentSupport implements IntentSupport {
    method constructor (line 63) | constructor(
    method findIntent (line 75) | async findIntent(intent: string, context: Context, resultType: string ...
    method findIntentsByContext (line 102) | async findIntentsByContext(context: Context): Promise<AppIntent[]> {
    method createResultPromise (line 124) | private async createResultPromise(request: RaiseIntentRequest | RaiseI...
    method raiseIntent (line 133) | async raiseIntent(intent: string, context: Context, app: AppIdentifier...
    method raiseIntentForContext (line 177) | async raiseIntentForContext(context: Context, app?: AppIdentifier | un...
    method addIntentListener (line 219) | async addIntentListener(intent: string, handler: IntentHandler): Promi...

FILE: packages/fdc3-agent-proxy/src/intents/IntentSupport.ts
  type IntentSupport (line 4) | interface IntentSupport {

FILE: packages/fdc3-agent-proxy/src/listeners/AbstractListener.ts
  type SubscriptionRequest (line 25) | type SubscriptionRequest =
  type SubscriptionResponse (line 30) | type SubscriptionResponse =
  type UnsubscribeRequest (line 35) | type UnsubscribeRequest =
  type UnsubscribeResponse (line 40) | type UnsubscribeResponse =
  method constructor (line 61) | constructor(
  method unsubscribe (line 85) | async unsubscribe(): Promise<void> {
  method register (line 108) | async register(): Promise<void> {

FILE: packages/fdc3-agent-proxy/src/listeners/DefaultContextListener.ts
  class DefaultContextListener (line 7) | class DefaultContextListener
    method constructor (line 15) | constructor(
    method filter (line 38) | filter(m: BroadcastEvent): boolean {
    method action (line 46) | action(m: BroadcastEvent): void {

FILE: packages/fdc3-agent-proxy/src/listeners/DefaultIntentListener.ts
  class DefaultIntentListener (line 13) | class DefaultIntentListener extends AbstractListener<IntentHandler, AddI...
    method constructor (line 16) | constructor(messaging: Messaging, intent: string, action: IntentHandle...
    method filter (line 30) | filter(m: IntentEvent): boolean {
    method action (line 34) | action(m: IntentEvent): void {
    method intentResultRequestMessage (line 42) | private intentResultRequestMessage(ir: IntentResult, m: IntentEvent): ...
    method handleIntentResult (line 59) | private handleIntentResult(done: Promise<IntentResult> | void, m: Inte...
  function convertIntentResult (line 80) | function convertIntentResult(intentResult: IntentResult): IntentResultRe...

FILE: packages/fdc3-agent-proxy/src/listeners/DesktopAgentEventListener.ts
  function wrapHandler (line 11) | function wrapHandler(handler: EventHandler): (msg: AgentEventMessage) =>...
  function getRequestPayload (line 33) | function getRequestPayload(type: FDC3EventTypes | null): AddEventListene...
  function getEventType (line 47) | function getEventType(type: FDC3EventTypes | null): ChannelChangedEvent[...
  class DesktopAgentEventListener (line 60) | class DesktopAgentEventListener extends AbstractListener<
    method constructor (line 66) | constructor(
    method action (line 85) | action(m: AgentEventMessage): void {
    method filter (line 89) | filter(m: AgentEventMessage): boolean {

FILE: packages/fdc3-agent-proxy/src/listeners/EventListener.ts
  class EventListener (line 6) | class EventListener implements RegisterableListener {
    method constructor (line 12) | constructor(messaging: Messaging, type: string, handler: EventHandler) {
    method filter (line 19) | filter(m: AgentEventMessage): boolean {
    method action (line 23) | action(m: AgentEventMessage): void {
    method register (line 32) | async register(): Promise<void> {
    method unsubscribe (line 36) | async unsubscribe(): Promise<void> {

FILE: packages/fdc3-agent-proxy/src/listeners/HeartbeatListener.ts
  class HeartbeatListener (line 10) | class HeartbeatListener implements RegisterableListener {
    method constructor (line 14) | constructor(messaging: Messaging) {
    method filter (line 19) | filter(m: AgentEventMessage): boolean {
    method action (line 23) | action(_m: AgentEventMessage): void {
    method register (line 38) | async register(): Promise<void> {
    method unsubscribe (line 42) | async unsubscribe(): Promise<void> {

FILE: packages/fdc3-agent-proxy/src/listeners/PrivateChannelEventListener.ts
  type PrivateChannelAddEventListenerRequest (line 19) | type PrivateChannelAddEventListenerRequest = BrowserTypes.PrivateChannel...
  type PrivateChannelOnAddContextListenerEvent (line 20) | type PrivateChannelOnAddContextListenerEvent = BrowserTypes.PrivateChann...
  type PrivateChannelOnDisconnectEvent (line 21) | type PrivateChannelOnDisconnectEvent = BrowserTypes.PrivateChannelOnDisc...
  type PrivateChannelOnUnsubscribeEvent (line 22) | type PrivateChannelOnUnsubscribeEvent = BrowserTypes.PrivateChannelOnUns...
  type PrivateChannelEventMessages (line 24) | type PrivateChannelEventMessages =
  type PrivateChannelEventMessageTypes (line 28) | type PrivateChannelEventMessageTypes = PrivateChannelEventMessages['type'];
  method constructor (line 37) | constructor(
  method filter (line 59) | filter(m: PrivateChannelEventMessages): boolean {
  method action (line 63) | action(m: PrivateChannelEventMessages): void {
  class PrivateChannelNullEventListener (line 68) | class PrivateChannelNullEventListener extends AbstractPrivateChannelEven...
    method constructor (line 69) | constructor(messaging: Messaging, messageExchangeTimeout: number, chan...
  class PrivateChannelDisconnectEventListener (line 113) | class PrivateChannelDisconnectEventListener extends AbstractPrivateChann...
    method constructor (line 114) | constructor(messaging: Messaging, messageExchangeTimeout: number, chan...
  class PrivateChannelAddContextEventListener (line 138) | class PrivateChannelAddContextEventListener extends AbstractPrivateChann...
    method constructor (line 139) | constructor(messaging: Messaging, messageExchangeTimeout: number, chan...
  class PrivateChannelUnsubscribeEventListener (line 162) | class PrivateChannelUnsubscribeEventListener extends AbstractPrivateChan...
    method constructor (line 163) | constructor(messaging: Messaging, messageExchangeTimeout: number, chan...

FILE: packages/fdc3-agent-proxy/src/listeners/RegisterableListener.ts
  type RegisterableListener (line 9) | interface RegisterableListener extends Listener {

FILE: packages/fdc3-agent-proxy/src/listeners/UserChannelContextListener.ts
  type UserChannelContextListener (line 9) | interface UserChannelContextListener extends Listener, RegisterableListe...

FILE: packages/fdc3-agent-proxy/src/messaging/AbstractMessaging.ts
  method constructor (line 20) | constructor(appIdentifier: AppIdentifier) {
  method waitFor (line 24) | waitFor<X extends AgentResponseMessage>(
  method exchange (line 69) | async exchange<X extends AgentResponseMessage>(
  method getAppIdentifier (line 100) | getAppIdentifier(): AppIdentifier {

FILE: packages/fdc3-agent-proxy/src/util/AbstractFDC3Logger.ts
  type ColorFn (line 23) | type ColorFn = (aString: string) => string;
  method prefix (line 28) | static get prefix(): string {
  method setLogLevel (line 35) | public static setLogLevel(level: LogLevel) {
  method debugColor (line 46) | protected static debugColor(value: string): string {
  method logColor (line 49) | protected static logColor(value: string): string {
  method warnColor (line 52) | protected static warnColor(value: string): string {
  method errorColor (line 55) | protected static errorColor(value: string): string {
  method debug (line 59) | public static debug(...params: any[]) {
  method log (line 65) | public static log(...params: any[]) {
  method warn (line 71) | public static warn(...params: any[]) {
  method error (line 77) | public static error(...params: any[]) {

FILE: packages/fdc3-agent-proxy/src/util/Logger.ts
  class Logger (line 10) | class Logger extends AbstractFDC3Logger {
    method prefix (line 11) | static override get prefix(): string {

FILE: packages/fdc3-agent-proxy/src/util/throwIfUndefined.ts
  type ErrorMessages (line 5) | type ErrorMessages = ChannelError | OpenError | ResolveError;

FILE: packages/fdc3-agent-proxy/test/step-definitions/generic.steps.ts
  function createDesktopAgent (line 23) | function createDesktopAgent(world: CustomWorld, field: string, initialCh...

FILE: packages/fdc3-agent-proxy/test/step-definitions/util.steps.ts
  constant TEST_ERROR (line 63) | const TEST_ERROR = 'Test error - This is expected on the console';

FILE: packages/fdc3-agent-proxy/test/support/TestChannelSelector.ts
  class TestChannelSelector (line 3) | class TestChannelSelector implements ChannelSelector {
    method constructor (line 8) | constructor() { }
    method updateChannel (line 10) | async updateChannel(channelId: string | null, availableChannels: Chann...
    method setChannelChangeCallback (line 15) | setChannelChangeCallback(callback: (channelId: string | null) => void)...
    method connect (line 19) | async connect(): Promise<void> {
    method disconnect (line 23) | async disconnect(): Promise<void> {
    method selectChannel (line 27) | selectChannel(channelId: string | null): void {
    method selectFirstChannel (line 36) | selectFirstChannel(): void {
    method selectSecondChannel (line 40) | selectSecondChannel(): void {
    method deselectChannel (line 44) | deselectChannel(): void {

FILE: packages/fdc3-agent-proxy/test/support/TestMessaging.ts
  type IntentDetail (line 31) | interface IntentDetail {
  type AutomaticResponse (line 38) | interface AutomaticResponse {
  type PossibleIntentResult (line 43) | interface PossibleIntentResult {
  function matchStringOrUndefined (line 50) | function matchStringOrUndefined(expected: string | undefined, actual: st...
  function matchString (line 58) | function matchString(expected: string | undefined, actual: string | unde...
  function removeGenericType (line 62) | function removeGenericType(t: string) {
  function matchResultTypes (line 71) | function matchResultTypes(expected: string | undefined, actual: string |...
  function intentDetailMatches (line 89) | function intentDetailMatches(
  class TestMessaging (line 105) | class TestMessaging extends AbstractMessaging {
    method constructor (line 114) | constructor(channelState: { [key: string]: Context[] }, initialChannel...
    method createUUID (line 139) | createUUID(): string {
    method getTimeoutMs (line 143) | getTimeoutMs(): number {
    method disconnect (line 147) | async disconnect(): Promise<void> {
    method post (line 158) | post(message: AppRequestMessage | WebConnectionProtocol6Goodbye): Prom...
    method addAppIntentDetail (line 173) | addAppIntentDetail(id: IntentDetail) {
    method register (line 177) | register(l: RegisterableListener) {
    method unregister (line 185) | unregister(id: string) {
    method createMeta (line 189) | createMeta() {
    method createResponseMeta (line 200) | createResponseMeta() {
    method createEventMeta (line 210) | createEventMeta() {
    method receive (line 217) | receive(m: AgentResponseMessage | AgentEventMessage, log?: (s: string)...
    method getIntentResult (line 234) | getIntentResult() {
    method setIntentResult (line 238) | setIntentResult(o: PossibleIntentResult) {

FILE: packages/fdc3-agent-proxy/test/support/responses/AddEventListener.ts
  class AddEventListener (line 5) | class AddEventListener implements AutomaticResponse {
    method filter (line 8) | filter(t: string) {
    method action (line 12) | action(input: object, m: TestMessaging) {
    method createResponse (line 21) | private createResponse(i: AddEventListenerRequest): AddEventListenerRe...

FILE: packages/fdc3-agent-proxy/test/support/responses/ChannelState.ts
  class ChannelState (line 24) | class ChannelState implements AutomaticResponse {
    method constructor (line 29) | constructor(contextHistory: { [channel: string]: Context[] }, initialC...
    method filter (line 34) | filter(t: string) {
    method action (line 46) | action(input: AppRequestMessage, m: TestMessaging) {
    method createBroadcastResponse (line 85) | private createBroadcastResponse(i: BroadcastRequest): BroadcastResponse {
    method createJoinResponse (line 98) | private createJoinResponse(i: JoinUserChannelRequest): JoinUserChannel...
    method createGetContextResponse (line 117) | private createGetContextResponse(input: GetCurrentContextRequest): Get...
    method createLeaveResponse (line 135) | private createLeaveResponse(i: LeaveCurrentChannelRequest): LeaveCurre...
    method createAddListenerResponse (line 144) | private createAddListenerResponse(i: AddContextListenerRequest): AddCo...
    method createUnsubscribeResponse (line 162) | private createUnsubscribeResponse(i: ContextListenerUnsubscribeRequest...
    method createGetChannelResponse (line 175) | private createGetChannelResponse(i: GetCurrentChannelRequest): GetCurr...

FILE: packages/fdc3-agent-proxy/test/support/responses/CreatePrivateChannel.ts
  class CreatePrivateChannel (line 9) | class CreatePrivateChannel implements AutomaticResponse {
    method filter (line 12) | filter(t: string) {
    method action (line 16) | action(input: object, m: TestMessaging) {
    method createResponse (line 25) | private createResponse(i: CreatePrivateChannelRequest): CreatePrivateC...

FILE: packages/fdc3-agent-proxy/test/support/responses/DisconnectPrivateChannel.ts
  class DisconnectPrivateChannel (line 8) | class DisconnectPrivateChannel implements AutomaticResponse {
    method filter (line 11) | filter(t: string) {
    method action (line 15) | action(input: object, m: TestMessaging) {
    method createResponse (line 24) | private createResponse(i: PrivateChannelDisconnectRequest): PrivateCha...

FILE: packages/fdc3-agent-proxy/test/support/responses/FindInstances.ts
  class FindInstances (line 5) | class FindInstances implements AutomaticResponse {
    method filter (line 6) | filter(t: string) {
    method action (line 10) | action(input: object, m: TestMessaging) {
    method createFindInstancesResponse (line 19) | private createFindInstancesResponse(m: FindInstancesRequest): FindInst...

FILE: packages/fdc3-agent-proxy/test/support/responses/FindIntent.ts
  class FindIntent (line 10) | class FindIntent implements AutomaticResponse {
    method filter (line 11) | filter(t: string) {
    method action (line 15) | action(input: AppRequestMessage, m: TestMessaging) {
    method createFindIntentResponseMessage (line 36) | private createFindIntentResponseMessage(m: FindIntentRequest, relevant...

FILE: packages/fdc3-agent-proxy/test/support/responses/FindIntentByContext.ts
  class FindIntentByContext (line 8) | class FindIntentByContext implements AutomaticResponse {
    method filter (line 9) | filter(t: string) {
    method action (line 13) | action(input: object, m: TestMessaging) {
    method createFindIntentsByContextResponseMessage (line 29) | private createFindIntentsByContextResponseMessage(

FILE: packages/fdc3-agent-proxy/test/support/responses/GetAppMetadata.ts
  class GetAppMetadata (line 5) | class GetAppMetadata implements AutomaticResponse {
    method filter (line 6) | filter(t: string) {
    method action (line 10) | action(input: object, m: TestMessaging) {
    method createMetadataResponseMessage (line 19) | private createMetadataResponseMessage(m: GetAppMetadataRequest): GetAp...

FILE: packages/fdc3-agent-proxy/test/support/responses/GetInfo.ts
  class GetInfo (line 5) | class GetInfo implements AutomaticResponse {
    method filter (line 6) | filter(t: string) {
    method action (line 10) | action(input: object, m: TestMessaging) {
    method createInfoResponseMessage (line 19) | private createInfoResponseMessage(m: GetInfoRequest): GetInfoResponse {

FILE: packages/fdc3-agent-proxy/test/support/responses/GetOrCreateChannel.ts
  type ChannelType (line 10) | type ChannelType = { [channelId: string]: 'user' | 'app' | 'private' };
  class GetOrCreateChannel (line 12) | class GetOrCreateChannel implements AutomaticResponse {
    method filter (line 15) | filter(t: string) {
    method action (line 19) | action(input: AppRequestMessage, m: TestMessaging) {
    method registerChannel (line 28) | registerChannel(r: GetOrCreateChannelRequest): GetOrCreateChannelRespo...

FILE: packages/fdc3-agent-proxy/test/support/responses/GetUserChannels.ts
  class GetUserChannels (line 9) | class GetUserChannels implements AutomaticResponse {
    method filter (line 10) | filter(t: string) {
    method action (line 14) | action(input: object, m: TestMessaging) {
    method createResponse (line 23) | private createResponse(i: GetUserChannelsRequest, m: TestMessaging): G...

FILE: packages/fdc3-agent-proxy/test/support/responses/IntentResult.ts
  class IntentResult (line 4) | class IntentResult implements AutomaticResponse {
    method filter (line 5) | filter(t: string) {
    method createIntentResultResponseMessage (line 9) | createIntentResultResponseMessage(intentRequest: IntentResultRequest, ...
    method action (line 22) | action(input: object, m: TestMessaging) {

FILE: packages/fdc3-agent-proxy/test/support/responses/Open.ts
  class Open (line 5) | class Open implements AutomaticResponse {
    method filter (line 6) | filter(t: string) {
    method action (line 10) | action(input: object, m: TestMessaging) {
    method createOpenResponse (line 19) | private createOpenResponse(m: OpenRequest, tm: TestMessaging): OpenRes...

FILE: packages/fdc3-agent-proxy/test/support/responses/RaiseIntent.ts
  class RaiseIntent (line 10) | class RaiseIntent implements AutomaticResponse {
    method filter (line 11) | filter(t: string) {
    method createCannedRaiseIntentResponseMessage (line 15) | createCannedRaiseIntentResponseMessage(intentRequest: RaiseIntentReque...
    method createRaiseIntentResponseMessage (line 55) | private createRaiseIntentResponseMessage(
    method createRaiseIntentResultResponseMessage (line 112) | createRaiseIntentResultResponseMessage(
    method action (line 134) | action(input: object, m: TestMessaging) {

FILE: packages/fdc3-agent-proxy/test/support/responses/RaiseIntentForContext.ts
  class RaiseIntentForContext (line 10) | class RaiseIntentForContext implements AutomaticResponse {
    method filter (line 11) | filter(t: string) {
    method createCannedRaiseIntentForContextResponseMessage (line 15) | createCannedRaiseIntentForContextResponseMessage(
    method createRaiseIntentForContextResponseMessage (line 55) | private createRaiseIntentForContextResponseMessage(
    method createRaiseIntentResultResponseMessage (line 118) | createRaiseIntentResultResponseMessage(
    method action (line 143) | action(input: object, m: TestMessaging) {

FILE: packages/fdc3-agent-proxy/test/support/responses/RegisterListeners.ts
  type Requests (line 16) | type Requests =
  type Responses (line 21) | type Responses =
  class RegisterListeners (line 27) | class RegisterListeners implements AutomaticResponse {
    method filter (line 28) | filter(t: string) {
    method action (line 37) | action(input: AppRequestMessage, m: TestMessaging) {
    method createResponse (line 46) | private createResponse(i: Requests): Responses {

FILE: packages/fdc3-agent-proxy/test/support/responses/UnsubscribeListeners.ts
  type Requests (line 15) | type Requests =
  type Responses (line 20) | type Responses =
  class UnsubscribeListeners (line 26) | class UnsubscribeListeners implements AutomaticResponse {
    method filter (line 27) | filter(t: string) {
    method action (line 36) | action(input: AppRequestMessage, m: TestMessaging) {
    method createResponse (line 45) | private createResponse(i: Requests): Responses {

FILE: packages/fdc3-agent-proxy/test/support/responses/support.ts
  function createResponseMeta (line 4) | function createResponseMeta(m: AppRequestMessageMeta): AgentResponseMess...

FILE: packages/fdc3-agent-proxy/test/world/index.ts
  type CustomWorldInterface (line 4) | interface CustomWorldInterface extends QuickPickleWorldInterface {
  class CustomWorld (line 10) | class CustomWorld extends QuickPickleWorld implements CustomWorldInterfa...
    method log (line 14) | log(message: string): void {

FILE: packages/fdc3-context/generated/context/ContextTypes.ts
  type Action (line 51) | interface Action {
  type ActionType (line 104) | type ActionType = 'broadcast' | 'raiseIntent';
  type AppIdentifier (line 119) | interface AppIdentifier {
  type ContextElement (line 155) | interface ContextElement {
  type Chart (line 217) | interface Chart {
  type InstrumentElement (line 249) | interface InstrumentElement {
  type PurpleInstrumentIdentifiers (line 295) | interface PurpleInstrumentIdentifiers {
  type OrganizationMarket (line 340) | interface OrganizationMarket {
  type TimeRangeObject (line 403) | interface TimeRangeObject {
  type ChartStyle (line 430) | type ChartStyle =
  type ChatInitSettings (line 452) | interface ChatInitSettings {
  type ContactListObject (line 486) | interface ContactListObject {
  type ContactElement (line 509) | interface ContactElement {
  type PurpleContactIdentifiers (line 525) | interface PurpleContactIdentifiers {
  type MessageObject (line 557) | interface MessageObject {
  type EntityValue (line 588) | interface EntityValue {
  type EntityData (line 632) | interface EntityData {
  type EntityType (line 650) | type EntityType = 'fdc3.action' | 'fdc3.fileAttachment';
  type PurpleMessageText (line 655) | interface PurpleMessageText {
  type ChatOptions (line 677) | interface ChatOptions {
  type ChatMessage (line 712) | interface ChatMessage {
  type ChatRoomObject (line 724) | interface ChatRoomObject {
  type ChatRoom (line 763) | interface ChatRoom {
  type ChatSearchCriteria (line 789) | interface ChatSearchCriteria {
  type OrganizationObject (line 823) | interface OrganizationObject {
  type Identifiers (line 881) | interface Identifiers {
  type TentacledInteractionType (line 944) | type TentacledInteractionType = 'fdc3.instrument' | 'fdc3.organization' ...
  type Contact (line 956) | interface Contact {
  type FluffyContactIdentifiers (line 972) | interface FluffyContactIdentifiers {
  type ContactList (line 991) | interface ContactList {
  type Context (line 1022) | interface Context {
  type Country (line 1080) | interface Country {
  type CountryID (line 1090) | interface CountryID {
  type Currency (line 1122) | interface Currency {
  type CurrencyID (line 1132) | interface CurrencyID {
  type Email (line 1151) | interface Email {
  type EmailRecipients (line 1187) | interface EmailRecipients {
  type ContactTIdentifiers (line 1215) | interface ContactTIdentifiers {
  type EmailRecipientsType (line 1233) | type EmailRecipientsType = 'fdc3.contact' | 'fdc3.contactList';
  type FileAttachment (line 1245) | interface FileAttachment {
  type FileAttachmentData (line 1253) | interface FileAttachmentData {
  type Instrument (line 1275) | interface Instrument {
  type FluffyInstrumentIdentifiers (line 1321) | interface FluffyInstrumentIdentifiers {
  type PurpleMarket (line 1366) | interface PurpleMarket {
  type InstrumentList (line 1396) | interface InstrumentList {
  type Interaction (line 1427) | interface Interaction {
  type InteractionID (line 1474) | interface InteractionID {
  type Message (line 1505) | interface Message {
  type FluffyMessageText (line 1524) | interface FluffyMessageText {
  type Nothing (line 1550) | interface Nothing {
  type Order (line 1575) | interface Order {
  type PurpleOrderDetails (line 1602) | interface PurpleOrderDetails {
  type ProductObject (line 1620) | interface ProductObject {
  type OrderList (line 1664) | interface OrderList {
  type OrderElement (line 1693) | interface OrderElement {
  type FluffyOrderDetails (line 1720) | interface FluffyOrderDetails {
  type Organization (line 1739) | interface Organization {
  type OrganizationIdentifiers (line 1755) | interface OrganizationIdentifiers {
  type Portfolio (line 1796) | interface Portfolio {
  type PositionElement (line 1828) | interface PositionElement {
  type Position (line 1875) | interface Position {
  type Product (line 1905) | interface Product {
  type TimeRange (line 1959) | interface TimeRange {
  type Trade (line 1989) | interface Trade {
  type TradeList (line 2026) | interface TradeList {
  type TradeElement (line 2057) | interface TradeElement {
  type TransactionResult (line 2092) | interface TransactionResult {
  type TransactionStatus (line 2114) | type TransactionStatus = 'Created' | 'Deleted' | 'Updated' | 'Failed';
  type Valuation (line 2126) | interface Valuation {
  class Convert (line 2165) | class Convert {
    method toAction (line 2166) | public static toAction(json: string): Action {
    method actionToJson (line 2170) | public static actionToJson(value: Action): string {
    method toChart (line 2174) | public static toChart(json: string): Chart {
    method chartToJson (line 2178) | public static chartToJson(value: Chart): string {
    method toChatInitSettings (line 2182) | public static toChatInitSettings(json: string): ChatInitSettings {
    method chatInitSettingsToJson (line 2186) | public static chatInitSettingsToJson(value: ChatInitSettings): string {
    method toChatMessage (line 2190) | public static toChatMessage(json: string): ChatMessage {
    method chatMessageToJson (line 2194) | public static chatMessageToJson(value: ChatMessage): string {
    method toChatRoom (line 2198) | public static toChatRoom(json: string): ChatRoom {
    method chatRoomToJson (line 2202) | public static chatRoomToJson(value: ChatRoom): string {
    method toChatSearchCriteria (line 2206) | public static toChatSearchCriteria(json: string): ChatSearchCriteria {
    method chatSearchCriteriaToJson (line 2210) | public static chatSearchCriteriaToJson(value: ChatSearchCriteria): str...
    method toContact (line 2214) | public static toContact(json: string): Contact {
    method contactToJson (line 2218) | public static contactToJson(value: Contact): string {
    method toContactList (line 2222) | public static toContactList(json: string): ContactList {
    method contactListToJson (line 2226) | public static contactListToJson(value: ContactList): string {
    method toContext (line 2230) | public static toContext(json: string): Context {
    method contextToJson (line 2234) | public static contextToJson(value: Context): string {
    method toCountry (line 2238) | public static toCountry(json: string): Country {
    method countryToJson (line 2242) | public static countryToJson(value: Country): string {
    method toCurrency (line 2246) | public static toCurrency(json: string): Currency {
    method currencyToJson (line 2250) | public static currencyToJson(value: Currency): string {
    method toEmail (line 2254) | public static toEmail(json: string): Email {
    method emailToJson (line 2258) | public static emailToJson(value: Email): string {
    method toFileAttachment (line 2262) | public static toFileAttachment(json: string): FileAttachment {
    method fileAttachmentToJson (line 2266) | public static fileAttachmentToJson(value: FileAttachment): string {
    method toInstrument (line 2270) | public static toInstrument(json: string): Instrument {
    method instrumentToJson (line 2274) | public static instrumentToJson(value: Instrument): string {
    method toInstrumentList (line 2278) | public static toInstrumentList(json: string): InstrumentList {
    method instrumentListToJson (line 2282) | public static instrumentListToJson(value: InstrumentList): string {
    method toInteraction (line 2286) | public static toInteraction(json: string): Interaction {
    method interactionToJson (line 2290) | public static interactionToJson(value: Interaction): string {
    method toMessage (line 2294) | public static toMessage(json: string): Message {
    method messageToJson (line 2298) | public static messageToJson(value: Message): string {
    method toNothing (line 2302) | public static toNothing(json: string): Nothing {
    method nothingToJson (line 2306) | public static nothingToJson(value: Nothing): string {
    method toOrder (line 2310) | public static toOrder(json: string): Order {
    method orderToJson (line 2314) | public static orderToJson(value: Order): string {
    method toOrderList (line 2318) | public static toOrderList(json: string): OrderList {
    method orderListToJson (line 2322) | public static orderListToJson(value: OrderList): string {
    method toOrganization (line 2326) | public static toOrganization(json: string): Organization {
    method organizationToJson (line 2330) | public static organizationToJson(value: Organization): string {
    method toPortfolio (line 2334) | public static toPortfolio(json: string): Portfolio {
    method portfolioToJson (line 2338) | public static portfolioToJson(value: Portfolio): string {
    method toPosition (line 2342) | public static toPosition(json: string): Position {
    method positionToJson (line 2346) | public static positionToJson(value: Position): string {
    method toProduct (line 2350) | public static toProduct(json: string): Product {
    method productToJson (line 2354) | public static productToJson(value: Product): string {
    method toTimeRange (line 2358) | public static toTimeRange(json: string): TimeRange {
    method timeRangeToJson (line 2362) | public static timeRangeToJson(value: TimeRange): string {
    method toTrade (line 2366) | public static toTrade(json: string): Trade {
    method tradeToJson (line 2370) | public static tradeToJson(value: Trade): string {
    method toTradeList (line 2374) | public static toTradeList(json: string): TradeList {
    method tradeListToJson (line 2378) | public static tradeListToJson(value: TradeList): string {
    method toTransactionResult (line 2382) | public static toTransactionResult(json: string): TransactionResult {
    method transactionResultToJson (line 2386) | public static transactionResultToJson(value: TransactionResult): string {
    method toValuation (line 2390) | public static toValuation(json: string): Valuation {
    method valuationToJson (line 2394) | public static valuationToJson(value: Valuation): string {
  function invalidValue (line 2399) | function invalidValue(typ: any, val: any, key: any, parent: any = ''): n...
  function prettyTypeName (line 2406) | function prettyTypeName(typ: any): string {
  function jsonToJSProps (line 2424) | function jsonToJSProps(typ: any): any {
  function jsToJSONProps (line 2433) | function jsToJSONProps(typ: any): any {
  function transform (line 2442) | function transform(val: any, typ: any, getProps: any, key: any = '', par...
  function cast (line 2533) | function cast<T>(val: any, typ: any): T {
  function uncast (line 2537) | function uncast<T>(val: T, typ: any): any {
  function l (line 2541) | function l(typ: any) {
  function a (line 2545) | function a(typ: any) {
  function u (line 2549) | function u(...typs: any[]) {
  function o (line 2553) | function o(props: any[], additional: any) {
  function m (line 2557) | function m(additional: any) {
  function r (line 2561) | function r(name: string) {

FILE: packages/fdc3-context/test/validate-schema-examples.test.ts
  function rewriteRefs (line 28) | function rewriteRefs(schema: any, refMap: Record<string, string>) {

FILE: packages/fdc3-get-agent/src/Fdc3Version.ts
  constant FDC3_VERSION (line 1) | const FDC3_VERSION = '2.2';

FILE: packages/fdc3-get-agent/src/apps/NoopAppSupport.ts
  class NoopAppSupport (line 5) | class NoopAppSupport extends DefaultAppSupport {
    method constructor (line 6) | constructor(messaging: Messaging, messageExchangeTimeout: number, appL...
    method getAppMetadata (line 10) | async getAppMetadata(app: AppIdentifier): Promise<AppMetadata> {

FILE: packages/fdc3-get-agent/src/index.ts
  constant DEFAULT_WAIT_FOR_MS (line 9) | const DEFAULT_WAIT_FOR_MS = 20000;
  function fdc3Ready (line 29) | function fdc3Ready(waitForMs = DEFAULT_WAIT_FOR_MS): Promise<DesktopAgen...

FILE: packages/fdc3-get-agent/src/messaging/MessagePortMessaging.ts
  type ConnectionDetails (line 13) | type ConnectionDetails = {
  class MessagePortMessaging (line 24) | class MessagePortMessaging extends AbstractMessaging {
    method constructor (line 28) | constructor(cd: ConnectionDetails, appIdentifier: AppIdentifier) {
    method createUUID (line 41) | createUUID(): string {
    method post (line 45) | async post(message: AppRequestMessage | WebConnectionProtocol6Goodbye)...
    method register (line 50) | register(l: RegisterableListener): void {
    method unregister (line 54) | unregister(id: string): void {
    method createMeta (line 58) | createMeta(): AppRequestMessage['meta'] {
    method disconnect (line 66) | async disconnect(): Promise<void> {

FILE: packages/fdc3-get-agent/src/messaging/message-port.ts
  function createDesktopAgentAPI (line 21) | async function createDesktopAgentAPI(
  function populateChannelSelector (line 76) | async function populateChannelSelector(cs: ChannelSupport, channelSelect...
  function handleDisconnectOnPageHide (line 82) | function handleDisconnectOnPageHide(da: DesktopAgentProxy, messaging: Me...

FILE: packages/fdc3-get-agent/src/sessionStorage/DesktopAgentDetails.ts
  function sessionKey (line 8) | function sessionKey(): string {
  function storeDesktopAgentDetails (line 21) | function storeDesktopAgentDetails(details: DesktopAgentDetails) {
  function retrieveAllDesktopAgentDetails (line 35) | function retrieveAllDesktopAgentDetails(): Record<string, DesktopAgentDe...
  function retrieveDesktopAgentDetails (line 64) | function retrieveDesktopAgentDetails(identityUrl: string): DesktopAgentD...

FILE: packages/fdc3-get-agent/src/strategies/DesktopAgentPreloadLoader.ts
  class DesktopAgentPreloadLoader (line 11) | class DesktopAgentPreloadLoader implements Loader {
    method poll (line 26) | async poll(resolve: (value: DesktopAgentSelection) => void) {
    method prepareSelection (line 37) | async prepareSelection(fdc3: DesktopAgent, resolve: (value: DesktopAge...
    method get (line 62) | get(options: GetAgentParams): Promise<DesktopAgentSelection> {
    method cancel (line 95) | async cancel(): Promise<void> {

FILE: packages/fdc3-get-agent/src/strategies/FailoverHandler.ts
  function isDesktopAgent (line 18) | function isDesktopAgent(da: WindowProxy | DesktopAgent): da is DesktopAg...
  function isWindow (line 23) | function isWindow(da: Window | DesktopAgent): da is Window {
  class FailoverHandler (line 27) | class FailoverHandler {
    method constructor (line 28) | constructor(options: GetAgentParams) {
    method handleFailover (line 52) | async handleFailover(): Promise<DesktopAgentSelection> {
    method failoverResultIsProxyWindow (line 78) | private async failoverResultIsProxyWindow(failoverResult: Window, hand...
    method failoverResultIsDesktopAgent (line 125) | private async failoverResultIsDesktopAgent(failoverResult: DesktopAgen...
    method cancel (line 145) | cancel() {

FILE: packages/fdc3-get-agent/src/strategies/HelloHandler.ts
  type WebConnectionProtocolMessage (line 7) | type WebConnectionProtocolMessage = BrowserTypes.WebConnectionProtocolMe...
  type WebConnectionProtocol1Hello (line 8) | type WebConnectionProtocol1Hello = BrowserTypes.WebConnectionProtocol1He...
  class HelloHandler (line 10) | class HelloHandler {
    method constructor (line 11) | constructor(
    method sendWCP1Hello (line 45) | sendWCP1Hello(w: MessageEventSource, origin: string) {
    method openFrame (line 70) | openFrame(url: string) {
    method listenForHelloResponses (line 110) | listenForHelloResponses(): Promise<ConnectionDetails> {
    method cancel (line 159) | cancel() {

FILE: packages/fdc3-get-agent/src/strategies/IdentityValidationHandler.ts
  type WebConnectionProtocol4ValidateAppIdentity (line 10) | type WebConnectionProtocol4ValidateAppIdentity = BrowserTypes.WebConnect...
  type WebConnectionProtocol5ValidateAppIdentitySuccessResponse (line 11) | type WebConnectionProtocol5ValidateAppIdentitySuccessResponse =
  type WebConnectionProtocolMessage (line 13) | type WebConnectionProtocolMessage = BrowserTypes.WebConnectionProtocolMe...
  constant ID_VALIDATION_TIMEOUT (line 18) | const ID_VALIDATION_TIMEOUT = 5000;
  class IdentityValidationHandler (line 20) | class IdentityValidationHandler {
    method constructor (line 21) | constructor(mp: MessagePort, options: GetAgentParams, connectionAttemp...
    method sendIdValidationMessage (line 46) | sendIdValidationMessage() {
    method listenForIDValidationResponses (line 73) | listenForIDValidationResponses(): Promise<WebConnectionProtocol5Valida...
    method cancel (line 135) | cancel(): void {

FILE: packages/fdc3-get-agent/src/strategies/Loader.ts
  type Loader (line 7) | interface Loader {
  type DesktopAgentSelection (line 22) | interface DesktopAgentSelection {

FILE: packages/fdc3-get-agent/src/strategies/PostMessageLoader.ts
  function collectPossibleTargets (line 16) | function collectPossibleTargets(startWindow: Window, found: Window[]) {
  function _recursePossibleTargets (line 21) | function _recursePossibleTargets(startWindow: Window, w: Window, found: ...
  class PostMessageLoader (line 43) | class PostMessageLoader implements Loader {
    method constructor (line 47) | constructor(options: GetAgentParams, previousUrl?: string) {
    method get (line 66) | get(options: GetAgentParams): Promise<DesktopAgentSelection> {
    method cancel (line 164) | async cancel(): Promise<void> {

FILE: packages/fdc3-get-agent/src/strategies/Timeouts.ts
  constant DEFAULT_GETAGENT_TIMEOUT_MS (line 4) | const DEFAULT_GETAGENT_TIMEOUT_MS = 1000;
  constant DEFAULT_MESSAGE_EXCHANGE_TIMEOUT_MS (line 11) | const DEFAULT_MESSAGE_EXCHANGE_TIMEOUT_MS = 10000;
  constant DEFAULT_APP_LAUNCH_TIMEOUT_MS (line 18) | const DEFAULT_APP_LAUNCH_TIMEOUT_MS = 100000;

FILE: packages/fdc3-get-agent/src/strategies/getAgent.ts
  constant CLEAR_PROMISE_DELAY (line 30) | const CLEAR_PROMISE_DELAY = 500;
  function clearAgentPromise (line 32) | function clearAgentPromise() {
  function initAgentPromise (line 36) | function initAgentPromise(options: GetAgentParams): Promise<DesktopAgent> {
  function handleSetWindowFdc3 (line 222) | async function handleSetWindowFdc3(da: DesktopAgent) {

FILE: packages/fdc3-get-agent/src/ui/AbstractUIComponent.ts
  type Fdc3UserInterfaceHandshake (line 5) | type Fdc3UserInterfaceHandshake = BrowserTypes.Fdc3UserInterfaceHandshake;
  type InitialCSS (line 6) | type InitialCSS = BrowserTypes.InitialCSS;
  type UpdatedCSS (line 7) | type UpdatedCSS = BrowserTypes.UpdatedCSS;
  type CSSPositioning (line 9) | interface CSSPositioning {
  constant INITIAL_CONTAINER_CSS (line 13) | const INITIAL_CONTAINER_CSS = {
  constant ALLOWED_CSS_ELEMENTS (line 19) | const ALLOWED_CSS_ELEMENTS = [
  constant DEFAULT_UI_ROOT_URL (line 34) | const DEFAULT_UI_ROOT_URL = 'https://fdc3.finos.org/toolbox/fdc3-referen...
  method constructor (line 48) | constructor(url: string, name: string) {
  method connect (line 62) | connect(): Promise<void> {
  method disconnect (line 75) | async disconnect() {
  method setupMessagePort (line 82) | async setupMessagePort(port: MessagePort): Promise<void> {
  method messagePortReady (line 95) | async messagePortReady(port: MessagePort) {
  method awaitHello (line 108) | private awaitHello(): Promise<MessagePort> {
  method openFrame (line 140) | private openFrame(): void {
  method toKebabCase (line 154) | private toKebabCase(str: string) {
  method themeContainer (line 158) | themeContainer(css: UpdatedCSS | InitialCSS) {
  method themeFrame (line 171) | themeFrame(ifrm: HTMLIFrameElement) {

FILE: packages/fdc3-get-agent/src/ui/DefaultDesktopAgentChannelSelector.ts
  type Fdc3UserInterfaceChannels (line 7) | type Fdc3UserInterfaceChannels = BrowserTypes.Fdc3UserInterfaceChannels;
  class DefaultDesktopAgentChannelSelector (line 12) | class DefaultDesktopAgentChannelSelector extends AbstractUIComponent imp...
    method constructor (line 15) | constructor(url: string | null) {
    method setupMessagePort (line 20) | async setupMessagePort(port: MessagePort): Promise<void> {
    method updateChannel (line 37) | async updateChannel(channelId: string | null, availableChannels: Chann...
    method setChannelChangeCallback (line 59) | setChannelChangeCallback(callback: (channelId: string | null) => void)...

FILE: packages/fdc3-get-agent/src/ui/DefaultDesktopAgentIntentResolver.ts
  type Fdc3UserInterfaceResolve (line 8) | type Fdc3UserInterfaceResolve = BrowserTypes.Fdc3UserInterfaceResolve;
  class DefaultDesktopAgentIntentResolver (line 13) | class DefaultDesktopAgentIntentResolver extends AbstractUIComponent impl...
    method constructor (line 16) | constructor(url: string | null) {
    method setupMessagePort (line 21) | async setupMessagePort(port: MessagePort): Promise<void> {
    method chooseIntent (line 46) | async chooseIntent(appIntents: AppIntent[], context: Context): Promise...

FILE: packages/fdc3-get-agent/src/ui/NullChannelSelector.ts
  class NullChannelSelector (line 5) | class NullChannelSelector implements ChannelSelector, Connectable {
    method disconnect (line 6) | async disconnect(): Promise<void> { }
    method connect (line 7) | async connect(): Promise<void> { }
    method updateChannel (line 8) | async updateChannel(): Promise<void> { }
    method setChannelChangeCallback (line 9) | setChannelChangeCallback(): void { }

FILE: packages/fdc3-get-agent/src/ui/NullIntentResolver.ts
  class NullIntentResolver (line 4) | class NullIntentResolver implements IntentResolver {
    method disconnect (line 5) | async disconnect(): Promise<void> { }
    method connect (line 6) | async connect(): Promise<void> { }
    method chooseIntent (line 7) | async chooseIntent(): Promise<IntentResolutionChoice | void> { }

FILE: packages/fdc3-get-agent/src/util/Logger.ts
  class Logger (line 8) | class Logger extends AbstractFDC3Logger {
    method prefix (line 9) | static override get prefix(): string {

FILE: packages/fdc3-get-agent/src/util/Uuid.ts
  function createUUID (line 3) | function createUUID(): string {

FILE: packages/fdc3-get-agent/test/step-definitions/desktop-agent.steps.ts
  type MockPageTransitionEvent (line 23) | interface MockPageTransitionEvent extends Event {
  method getInfo (line 201) | async getInfo(): Promise<ImplementationMetadata> {

FILE: packages/fdc3-get-agent/test/step-definitions/util.steps.ts
  constant TEST_ERROR (line 6) | const TEST_ERROR = 'Test error - This is expected on the console';

FILE: packages/fdc3-get-agent/test/support/EventHandler.ts
  type EventHandler (line 1) | type EventHandler = {

FILE: packages/fdc3-get-agent/test/support/FrameTypes.ts
  function handleEmbeddedIframeComms (line 15) | function handleEmbeddedIframeComms(_value: string, parent: MockWindow, s...
  function handleChannelSelectorComms (line 56) | function handleChannelSelectorComms(
  function handleIntentResolverComms (line 106) | function handleIntentResolverComms(

FILE: packages/fdc3-get-agent/test/support/MockCSSStyleDeclaration.ts
  class MockCSSStyleDeclaration (line 1) | class MockCSSStyleDeclaration {
    method setProperty (line 2) | setProperty(name: string, value: string) {
    method removeProperty (line 6) | removeProperty(name: string) {

FILE: packages/fdc3-get-agent/test/support/MockDocument.ts
  class MockDocument (line 5) | class MockDocument {
    method constructor (line 11) | constructor(name: string, window: MockWindow) {
    method createElement (line 20) | createElement(tag: string): HTMLElement {
    method getElementById (line 37) | getElementById(/*_id: string*/): HTMLElement | null {
    method shutdown (line 43) | shutdown() {
    method shutdownAllDocuments (line 48) | static shutdownAllDocuments() {

FILE: packages/fdc3-get-agent/test/support/MockElement.ts
  class MockElement (line 4) | class MockElement {
    method constructor (line 9) | constructor(tag: string) {
    method setAttribute (line 15) | setAttribute(name: string, value: string) {
    method removeAttribute (line 19) | removeAttribute(name: string) {
    method appendChild (line 23) | appendChild(child: HTMLElement) {
    method removeChild (line 32) | removeChild(child: HTMLElement) {
    method remove (line 36) | remove() {}

FILE: packages/fdc3-get-agent/test/support/MockFDC3Server.ts
  constant EMBED_URL (line 20) | const EMBED_URL = 'http://localhost:8080/static/da/embed.html';
  constant CHANNEL_SELECTOR_URL (line 21) | const CHANNEL_SELECTOR_URL = 'https://mock.fdc3.com/channelSelector';
  constant INTENT_RESOLVER_URL (line 22) | const INTENT_RESOLVER_URL = 'https://mock.fdc3.com/resolver';
  class MockFDC3Server (line 24) | class MockFDC3Server implements FDC3Server {
    method constructor (line 36) | constructor(
    method cleanup (line 83) | cleanup(instanceId: InstanceID): void {
    method receive (line 88) | async receive(message: AppRequestMessage, from: string): Promise<void> {
    method shutdown (line 97) | shutdown() {
    method hasReceivedGoodbye (line 101) | hasReceivedGoodbye(): boolean {
    method init (line 105) | init() {

FILE: packages/fdc3-get-agent/test/support/MockIFrame.ts
  class MockIFrame (line 6) | class MockIFrame extends MockWindow {
    method constructor (line 12) | constructor(tag: string, cw: CustomWorld, parent: MockWindow, name: st...
    method load (line 22) | load(): void {
    method setAttribute (line 35) | setAttribute(name: string, value: string): void {
    method shutdown (line 81) | shutdown() {

FILE: packages/fdc3-get-agent/test/support/MockStorage.ts
  class MockStorage (line 1) | class MockStorage implements Storage {
    method length (line 4) | get length(): number {
    method clear (line 8) | clear(): void {
    method getItem (line 12) | getItem(key: string): string | null {
    method key (line 16) | key(index: number): string | null {
    method removeItem (line 20) | removeItem(key: string): void {
    method setItem (line 24) | setItem(key: string, value: string): void {

FILE: packages/fdc3-get-agent/test/support/MockWindow.ts
  type STANDARD_MESSAGES (line 14) | type STANDARD_MESSAGES =
  class MockWindow (line 21) | class MockWindow extends MockElement {
    method constructor (line 26) | constructor(tag: string, cw: CustomWorld, name: string) {
    method addEventListener (line 50) | addEventListener(type: string, callback: (e: Event) => void): void {
    method removeEventListener (line 57) | removeEventListener(type: string, el: EventListener): void {
    method dispatchEvent (line 67) | dispatchEvent(event: Event): void {
    method postMessage (line 76) | postMessage(msg: STANDARD_MESSAGES, targetOrigin: string, transfer: Me...
    method shutdown (line 107) | shutdown() {

FILE: packages/fdc3-get-agent/test/support/TestServerContext.ts
  type ConnectionDetails (line 6) | type ConnectionDetails = AppRegistration & {
  type MessageRecord (line 14) | type MessageRecord = {
  class TestServerContext (line 25) | class TestServerContext implements ServerContext<ConnectionDetails> {
    method constructor (line 34) | constructor(cw: CustomWorld) {
    method setFDC3Server (line 38) | setFDC3Server(server: FDC3Server): void {
    method narrowIntents (line 42) | async narrowIntents(_raiser: AppIdentifier, appIntents: AppIntent[] /*...
    method getInstanceDetails (line 46) | getInstanceDetails(uuid: string) {
    method setInstanceDetails (line 50) | setInstanceDetails(uuid: InstanceID, appId: ConnectionDetails) {
    method getMatchingInstance (line 58) | getMatchingInstance(url: string): ConnectionDetails | undefined {
    method shutdown (line 75) | async shutdown(): Promise<void> {
    method open (line 81) | async open(appId: string): Promise<InstanceID> {
    method getConnectedApps (line 118) | async getConnectedApps(): Promise<AppRegistration[]> {
    method isAppConnected (line 122) | async isAppConnected(app: InstanceID): Promise<boolean> {
    method setAppState (line 127) | async setAppState(app: InstanceID, newState: State): Promise<void> {
    method getAllApps (line 138) | async getAllApps(): Promise<AppRegistration[]> {
    method provider (line 148) | provider(): string {
    method providerVersion (line 151) | providerVersion(): string {
    method fdc3Version (line 154) | fdc3Version(): string {
    method createUUID (line 158) | createUUID(): string {
    method getInstanceUUID (line 165) | getInstanceUUID(appId: AppIdentifier): InstanceID | undefined {
    method getFirstInstance (line 174) | getFirstInstance() {
    method post (line 178) | post(msg: object, to: InstanceID): Promise<void> {
    method log (line 184) | log(message: string): void {

FILE: packages/fdc3-get-agent/test/support/responses/AddEventListener.ts
  class AddEventListener (line 7) | class AddEventListener implements AutomaticResponse {
    method filter (line 10) | filter(t: string) {
    method action (line 14) | action(input: object, m: TestServerContext, from: InstanceID) {
    method createResponse (line 23) | private createResponse(i: AddEventListenerRequest): AddEventListenerRe...

FILE: packages/fdc3-get-agent/test/support/responses/AutomaticResponses.ts
  type AutomaticResponse (line 4) | interface AutomaticResponse {

FILE: packages/fdc3-get-agent/test/support/responses/Broadcast.ts
  class Broadcast (line 7) | class Broadcast implements AutomaticResponse {
    method filter (line 8) | filter(t: string) {
    method action (line 12) | action(input: object, m: TestServerContext, from: InstanceID) {
    method createBroadcastResponseMessage (line 21) | private createBroadcastResponseMessage(m: BroadcastRequest): Broadcast...

FILE: packages/fdc3-get-agent/test/support/responses/CurrentChannel.ts
  class CurrentChannel (line 9) | class CurrentChannel implements AutomaticResponse {
    method filter (line 10) | filter(t: string) {
    method action (line 14) | action(input: object, m: TestServerContext, from: InstanceID) {
    method createResponse (line 22) | private createResponse(i: GetCurrentChannelRequest, m: TestServerConte...

FILE: packages/fdc3-get-agent/test/support/responses/FindIntent.ts
  class FindIntent (line 7) | class FindIntent implements AutomaticResponse {
    method filter (line 8) | filter(t: string) {
    method action (line 12) | action(input: object, m: TestServerContext, from: InstanceID) {
    method createFindIntentResponseMessage (line 21) | private createFindIntentResponseMessage(m: FindIntentRequest): FindInt...

FILE: packages/fdc3-get-agent/test/support/responses/GetInfo.ts
  class GetInfo (line 6) | class GetInfo implements AutomaticResponse {
    method filter (line 7) | filter(t: string) {
    method action (line 11) | action(input: object, m: TestServerContext, from: InstanceID) {
    method createResponse (line 19) | private createResponse(i: GetInfoRequest, m: TestServerContext): GetIn...

FILE: packages/fdc3-get-agent/test/support/responses/Handshake.ts
  constant BAD_INSTANCE_ID (line 10) | const BAD_INSTANCE_ID = 'BAD_INSTANCE';
  constant EXPECTED_IDENTITY_URL (line 11) | const EXPECTED_IDENTITY_URL = 'https://dummyOrigin.test/path';
  constant ALTERNATIVE_IDENTITY_URL (line 12) | const ALTERNATIVE_IDENTITY_URL = 'https://dummyOrigin.test/alternativePa...
  class Handshake (line 14) | class Handshake implements AutomaticResponse {
    method constructor (line 17) | constructor(timeOut: boolean = false) {
    method filter (line 21) | filter(t: string) {
    method action (line 25) | action(input: object, m: TestServerContext, from: InstanceID) {
    method createResponse (line 37) | private createResponse(

FILE: packages/fdc3-get-agent/test/support/responses/RaiseIntent.ts
  class RaiseIntent (line 6) | class RaiseIntent implements AutomaticResponse {
    method filter (line 7) | filter(t: string) {
    method createRaiseIntentAgentResponseMessage (line 11) | createRaiseIntentAgentResponseMessage(intentRequest: RaiseIntentReques...
    method action (line 29) | action(input: object, m: TestServerContext, from: InstanceID) {

FILE: packages/fdc3-get-agent/test/support/responses/UnsubscribeEventListener.ts
  class UnsubscribeEventListener (line 10) | class UnsubscribeEventListener implements AutomaticResponse {
    method filter (line 11) | filter(t: string) {
    method action (line 15) | action(input: object, m: TestServerContext, from: InstanceID) {
    method createResponse (line 24) | private createResponse(i: EventListenerUnsubscribeRequest): EventListe...

FILE: packages/fdc3-get-agent/test/support/responses/UserChannels.ts
  constant USER_CHANNELS (line 6) | const USER_CHANNELS = [
  class UserChannels (line 21) | class UserChannels implements AutomaticResponse {
    method filter (line 22) | filter(t: string) {
    method action (line 26) | action(input: object, m: TestServerContext, from: InstanceID) {
    method createResponse (line 35) | private createResponse(i: GetUserChannelsRequest, m: TestServerContext...

FILE: packages/fdc3-get-agent/test/world/index.ts
  type CustomWorldInterface (line 5) | interface CustomWorldInterface extends QuickPickleWorldInterface {
  class CustomWorld (line 13) | class CustomWorld extends QuickPickleWorld implements CustomWorldInterfa...
    method log (line 19) | log(message: string): void {

FILE: packages/fdc3-schema/code-generation/generate-type-predicates.ts
  constant APP_REQUEST_MESSAGE (line 18) | const APP_REQUEST_MESSAGE = 'AppRequestMessage';
  constant AGENT_RESPONSE_MESSAGE (line 19) | const AGENT_RESPONSE_MESSAGE = 'AgentResponseMessage';
  constant AGENT_EVENT_MESSAGE (line 20) | const AGENT_EVENT_MESSAGE = 'AgentEventMessage';
  function writeMessageUnionTypes (line 34) | function writeMessageUnionTypes() {
  function writeMessageUnion (line 42) | function writeMessageUnion(unionName: string, typeUnionName: string, typ...
  function writeTypePredicates (line 65) | function writeTypePredicates() {
  function findUnionType (line 119) | function findUnionType(typeAliases: TypeAliasDeclaration[], name: string...
  function findExisting (line 138) | function findExisting<T extends SyntaxKind>(name: string, kind: T, allDe...
  function writeValidPredicate (line 153) | function writeValidPredicate(
  function writeFastPredicate (line 182) | function writeFastPredicate(
  function writeTypeConstant (line 206) | function writeTypeConstant(matchingInterface: InterfaceDeclaration): void {
  function writeUnionType (line 232) | function writeUnionType(unionName: string, typeValues: string[]): void {
  function extractTypePropertyValue (line 258) | function extractTypePropertyValue(parentInterface: InterfaceDeclaration)...
  function isDefined (line 272) | function isDefined<T>(value: T | null | undefined): value is T {

FILE: packages/fdc3-schema/generated/api/BrowserTypes.ts
  type WebConnectionProtocol1Hello (line 100) | interface WebConnectionProtocol1Hello {
  type WebConnectionProtocol1HelloMeta (line 118) | interface WebConnectionProtocol1HelloMeta {
  type WebConnectionProtocol1HelloPayload (line 126) | interface WebConnectionProtocol1HelloPayload {
  type WebConnectionProtocol2LoadURL (line 166) | interface WebConnectionProtocol2LoadURL {
  type WebConnectionProtocol2LoadURLPayload (line 184) | interface WebConnectionProtocol2LoadURLPayload {
  type WebConnectionProtocol3Handshake (line 204) | interface WebConnectionProtocol3Handshake {
  type WebConnectionProtocol3HandshakePayload (line 222) | interface WebConnectionProtocol3HandshakePayload {
  type WebConnectionProtocol4ValidateAppIdentity (line 262) | interface WebConnectionProtocol4ValidateAppIdentity {
  type WebConnectionProtocol4ValidateAppIdentityPayload (line 280) | interface WebConnectionProtocol4ValidateAppIdentityPayload {
  type WebConnectionProtocol5ValidateAppIdentityFailedResponse (line 312) | interface WebConnectionProtocol5ValidateAppIdentityFailedResponse {
  type WebConnectionProtocol5ValidateAppIdentityFailedResponsePayload (line 330) | interface WebConnectionProtocol5ValidateAppIdentityFailedResponsePayload {
  type WebConnectionProtocol5ValidateAppIdentitySuccessResponse (line 344) | interface WebConnectionProtocol5ValidateAppIdentitySuccessResponse {
  type WebConnectionProtocol5ValidateAppIdentitySuccessResponsePayload (line 362) | interface WebConnectionProtocol5ValidateAppIdentitySuccessResponsePayload {
  type ImplementationMetadata (line 391) | interface ImplementationMetadata {
  type AppMetadata (line 433) | interface AppMetadata {
  type Icon (line 499) | interface Icon {
  type Image (line 518) | interface Image {
  type OptionalFeatures (line 541) | interface OptionalFeatures {
  type WebConnectionProtocol6Goodbye (line 573) | interface WebConnectionProtocol6Goodbye {
  type WebConnectionProtocol6GoodbyeMeta (line 587) | interface WebConnectionProtocol6GoodbyeMeta {
  type WebConnectionProtocolMessage (line 599) | interface WebConnectionProtocolMessage {
  type ConnectionStepMetadata (line 617) | interface ConnectionStepMetadata {
  type ConnectionStepMessageType (line 625) | type ConnectionStepMessageType =
  type AddContextListenerRequest (line 643) | interface AddContextListenerRequest {
  type AddContextListenerRequestMeta (line 662) | interface AddContextListenerRequestMeta {
  type AppIdentifier (line 702) | interface AppIdentifier {
  type AddContextListenerRequestPayload (line 724) | interface AddContextListenerRequestPayload {
  type AddContextListenerResponse (line 751) | interface AddContextListenerResponse {
  type AddContextListenerResponseMeta (line 772) | interface AddContextListenerResponseMeta {
  type AddContextListenerResponsePayload (line 788) | interface AddContextListenerResponsePayload {
  type PurpleError (line 801) | type PurpleError =
  type AddEventListenerRequest (line 819) | interface AddEventListenerRequest {
  type AddEventListenerRequestPayload (line 838) | interface AddEventListenerRequestPayload {
  type AddEventListenerResponse (line 861) | interface AddEventListenerResponse {
  type AddEventListenerResponsePayload (line 884) | interface AddEventListenerResponsePayload {
  type ResponsePayloadError (line 897) | type ResponsePayloadError =
  type AddIntentListenerRequest (line 933) | interface AddIntentListenerRequest {
  type AddIntentListenerRequestPayload (line 952) | interface AddIntentListenerRequestPayload {
  type AddIntentListenerResponse (line 970) | interface AddIntentListenerResponse {
  type PayloadObject (line 993) | interface PayloadObject {
  type FluffyError (line 1007) | type FluffyError =
  type AgentEventMessageMeta (line 1024) | interface AgentEventMessageMeta {
  type EventMessageType (line 1033) | type EventMessageType =
  type AgentResponseMessageMeta (line 1047) | interface AgentResponseMessageMeta {
  type AgentResponseMessageResponsePayload (line 1063) | interface AgentResponseMessageResponsePayload {
  type ResponseMessageType (line 1072) | type ResponseMessageType =
  type AppRequestMessageMeta (line 1105) | interface AppRequestMessageMeta {
  type RequestMessageType (line 1121) | type RequestMessageType =
  type BroadcastEvent (line 1158) | interface BroadcastEvent {
  type BroadcastEventMeta (line 1177) | interface BroadcastEventMeta {
  type BroadcastEventPayload (line 1185) | interface BroadcastEventPayload {
  type Context (line 1224) | interface Context {
  type BroadcastRequest (line 1275) | interface BroadcastRequest {
  type BroadcastRequestPayload (line 1294) | interface BroadcastRequestPayload {
  type BroadcastResponse (line 1316) | interface BroadcastResponse {
  type BroadcastResponseResponsePayload (line 1339) | interface BroadcastResponseResponsePayload {
  type ChannelChangedEvent (line 1355) | interface ChannelChangedEvent {
  type ChannelChangedEventPayload (line 1374) | interface ChannelChangedEventPayload {
  type ClearContextRequest (line 1397) | interface ClearContextRequest {
  type ClearContextRequestPayload (line 1416) | interface ClearContextRequestPayload {
  type ClearContextResponse (line 1439) | interface ClearContextResponse {
  type ContextClearedEvent (line 1468) | interface ContextClearedEvent {
  type ContextClearedEventPayload (line 1487) | interface ContextClearedEventPayload {
  type ContextListenerUnsubscribeRequest (line 1508) | interface ContextListenerUnsubscribeRequest {
  type ContextListenerUnsubscribeRequestPayload (line 1527) | interface ContextListenerUnsubscribeRequestPayload {
  type ContextListenerUnsubscribeResponse (line 1542) | interface ContextListenerUnsubscribeResponse {
  type CreatePrivateChannelRequest (line 1571) | interface CreatePrivateChannelRequest {
  type CreatePrivateChannelRequestPayload (line 1590) | interface CreatePrivateChannelRequestPayload {}
  type CreatePrivateChannelResponse (line 1603) | interface CreatePrivateChannelResponse {
  type CreatePrivateChannelResponsePayload (line 1626) | interface CreatePrivateChannelResponsePayload {
  type Channel (line 1645) | interface Channel {
  type DisplayMetadata (line 1674) | interface DisplayMetadata {
  type Type (line 1694) | type Type = 'app' | 'private' | 'user';
  type EventListenerUnsubscribeRequest (line 1706) | interface EventListenerUnsubscribeRequest {
  type EventListenerUnsubscribeRequestPayload (line 1725) | interface EventListenerUnsubscribeRequestPayload {
  type EventListenerUnsubscribeResponse (line 1740) | interface EventListenerUnsubscribeResponse {
  type Fdc3UserInterfaceChannelSelected (line 1771) | interface Fdc3UserInterfaceChannelSelected {
  type Fdc3UserInterfaceChannelSelectedPayload (line 1785) | interface Fdc3UserInterfaceChannelSelectedPayload {
  type Fdc3UserInterfaceChannels (line 1805) | interface Fdc3UserInterfaceChannels {
  type Fdc3UserInterfaceChannelsPayload (line 1819) | interface Fdc3UserInterfaceChannelsPayload {
  type Fdc3UserInterfaceDrag (line 1845) | interface Fdc3UserInterfaceDrag {
  type Fdc3UserInterfaceDragPayload (line 1859) | interface Fdc3UserInterfaceDragPayload {
  type MouseOffsets (line 1869) | interface MouseOffsets {
  type Fdc3UserInterfaceHandshake (line 1887) | interface Fdc3UserInterfaceHandshake {
  type Fdc3UserInterfaceHandshakePayload (line 1901) | interface Fdc3UserInterfaceHandshakePayload {
  type Fdc3UserInterfaceHello (line 1921) | interface Fdc3UserInterfaceHello {
  type Fdc3UserInterfaceHelloPayload (line 1935) | interface Fdc3UserInterfaceHelloPayload {
  type InitialCSS (line 1951) | interface InitialCSS {
  type Fdc3UserInterfaceMessage (line 2004) | interface Fdc3UserInterfaceMessage {
  type Fdc3UserInterfaceMessageType (line 2018) | type Fdc3UserInterfaceMessageType =
  type Fdc3UserInterfaceResolve (line 2036) | interface Fdc3UserInterfaceResolve {
  type Fdc3UserInterfaceResolvePayload (line 2050) | interface Fdc3UserInterfaceResolvePayload {
  type AppIntent (line 2064) | interface AppIntent {
  type IntentMetadata (line 2080) | interface IntentMetadata {
  type Fdc3UserInterfaceResolveAction (line 2103) | interface Fdc3UserInterfaceResolveAction {
  type Fdc3UserInterfaceResolveActionPayload (line 2117) | interface Fdc3UserInterfaceResolveActionPayload {
  type Action (line 2129) | type Action = 'hover' | 'click' | 'cancel';
  type Fdc3UserInterfaceRestyle (line 2144) | interface Fdc3UserInterfaceRestyle {
  type Fdc3UserInterfaceRestylePayload (line 2158) | interface Fdc3UserInterfaceRestylePayload {
  type UpdatedCSS (line 2170) | interface UpdatedCSS {
  type FindInstancesRequest (line 2223) | interface FindInstancesRequest {
  type FindInstancesRequestPayload (line 2242) | interface FindInstancesRequestPayload {
  type FindInstancesResponse (line 2257) | interface FindInstancesResponse {
  type FindInstancesResponsePayload (line 2284) | interface FindInstancesResponsePayload {
  type FindInstancesErrors (line 2314) | type FindInstancesErrors =
  type FindIntentRequest (line 2342) | interface FindIntentRequest {
  type FindIntentRequestPayload (line 2361) | interface FindIntentRequestPayload {
  type FindIntentResponse (line 2378) | interface FindIntentResponse {
  type FindIntentResponsePayload (line 2401) | interface FindIntentResponsePayload {
  type FindIntentsByContextRequest (line 2417) | interface FindIntentsByContextRequest {
  type FindIntentsByContextRequestPayload (line 2436) | interface FindIntentsByContextRequestPayload {
  type FindIntentsByContextResponse (line 2452) | interface FindIntentsByContextResponse {
  type FindIntentsByContextResponsePayload (line 2475) | interface FindIntentsByContextResponsePayload {
  type GetAppMetadataRequest (line 2490) | interface GetAppMetadataRequest {
  type GetAppMetadataRequestPayload (line 2509) | interface GetAppMetadataRequestPayload {
  type GetAppMetadataResponse (line 2524) | interface GetAppMetadataResponse {
  type GetAppMetadataResponsePayload (line 2547) | interface GetAppMetadataResponsePayload {
  type GetCurrentChannelRequest (line 2563) | interface GetCurrentChannelRequest {
  type GetCurrentChannelRequestPayload (line 2582) | interface GetCurrentChannelRequestPayload {}
  type GetCurrentChannelResponse (line 2595) | interface GetCurrentChannelResponse {
  type GetCurrentChannelResponsePayload (line 2618) | interface GetCurrentChannelResponsePayload {
  type GetCurrentContextRequest (line 2635) | interface GetCurrentContextRequest {
  type GetCurrentContextRequestPayload (line 2654) | interface GetCurrentContextRequestPayload {
  type GetCurrentContextResponse (line 2677) | interface GetCurrentContextResponse {
  type GetCurrentContextResponsePayload (line 2700) | interface GetCurrentContextResponsePayload {
  type GetInfoRequest (line 2720) | interface GetInfoRequest {
  type GetInfoRequestPayload (line 2739) | interface GetInfoRequestPayload {}
  type GetInfoResponse (line 2752) | interface GetInfoResponse {
  type GetInfoResponsePayload (line 2775) | interface GetInfoResponsePayload {
  type GetOrCreateChannelRequest (line 2791) | interface GetOrCreateChannelRequest {
  type GetOrCreateChannelRequestPayload (line 2810) | interface GetOrCreateChannelRequestPayload {
  type GetOrCreateChannelResponse (line 2828) | interface GetOrCreateChannelResponse {
  type GetOrCreateChannelResponsePayload (line 2851) | interface GetOrCreateChannelResponsePayload {
  type GetUserChannelsRequest (line 2866) | interface GetUserChannelsRequest {
  type GetUserChannelsRequestPayload (line 2885) | interface GetUserChannelsRequestPayload {}
  type GetUserChannelsResponse (line 2898) | interface GetUserChannelsResponse {
  type GetUserChannelsResponsePayload (line 2921) | interface GetUserChannelsResponsePayload {
  type HeartbeatAcknowledgementRequest (line 2937) | interface HeartbeatAcknowledgementRequest {
  type HeartbeatAcknowledgementRequestPayload (line 2956) | interface HeartbeatAcknowledgementRequestPayload {
  type HeartbeatEvent (line 2975) | interface HeartbeatEvent {
  type HeartbeatEventPayload (line 2994) | interface HeartbeatEventPayload {}
  type IntentEvent (line 3007) | interface IntentEvent {
  type IntentEventPayload (line 3026) | interface IntentEventPayload {
  type IntentListenerUnsubscribeRequest (line 3056) | interface IntentListenerUnsubscribeRequest {
  type IntentListenerUnsubscribeRequestPayload (line 3075) | interface IntentListenerUnsubscribeRequestPayload {
  type IntentListenerUnsubscribeResponse (line 3090) | interface IntentListenerUnsubscribeResponse {
  type IntentResultRequest (line 3120) | interface IntentResultRequest {
  type IntentResultRequestPayload (line 3139) | interface IntentResultRequestPayload {
  type IntentResult (line 3151) | interface IntentResult {
  type IntentResultResponse (line 3167) | interface IntentResultResponse {
  type JoinUserChannelRequest (line 3197) | interface JoinUserChannelRequest {
  type JoinUserChannelRequestPayload (line 3216) | interface JoinUserChannelRequestPayload {
  type JoinUserChannelResponse (line 3236) | interface JoinUserChannelResponse {
  type JoinUserChannelResponsePayload (line 3259) | interface JoinUserChannelResponsePayload {
  type LeaveCurrentChannelRequest (line 3273) | interface LeaveCurrentChannelRequest {
  type LeaveCurrentChannelRequestPayload (line 3292) | interface LeaveCurrentChannelRequestPayload {}
  type LeaveCurrentChannelResponse (line 3305) | interface LeaveCurrentChannelResponse {
  type LeaveCurrentChannelResponsePayload (line 3328) | interface LeaveCurrentChannelResponsePayload {
  type OpenRequest (line 3342) | interface OpenRequest {
  type OpenRequestPayload (line 3361) | interface OpenRequestPayload {
  type OpenResponse (line 3382) | interface OpenResponse {
  type OpenResponsePayload (line 3405) | interface OpenResponsePayload {
  type OpenErrorResponsePayload (line 3418) | type OpenErrorResponsePayload =
  type PrivateChannelAddEventListenerRequest (line 3442) | interface PrivateChannelAddEventListenerRequest {
  type PrivateChannelAddEventListenerRequestPayload (line 3461) | interface PrivateChannelAddEventListenerRequestPayload {
  type PrivateChannelEventType (line 3476) | type PrivateChannelEventType = 'addContextListener' | 'unsubscribe' | 'd...
  type PrivateChannelAddEventListenerResponse (line 3489) | interface PrivateChannelAddEventListenerResponse {
  type PrivateChannelAddEventListenerResponsePayload (line 3512) | interface PrivateChannelAddEventListenerResponsePayload {
  type PrivateChannelDisconnectRequest (line 3528) | interface PrivateChannelDisconnectRequest {
  type PrivateChannelDisconnectRequestPayload (line 3547) | interface PrivateChannelDisconnectRequestPayload {
  type PrivateChannelDisconnectResponse (line 3565) | interface PrivateChannelDisconnectResponse {
  type PrivateChannelDisconnectResponsePayload (line 3588) | interface PrivateChannelDisconnectResponsePayload {
  type PrivateChannelOnAddContextListenerEvent (line 3603) | interface PrivateChannelOnAddContextListenerEvent {
  type PrivateChannelOnAddContextListenerEventPayload (line 3622) | interface PrivateChannelOnAddContextListenerEventPayload {
  type PrivateChannelOnDisconnectEvent (line 3645) | interface PrivateChannelOnDisconnectEvent {
  type PrivateChannelOnDisconnectEventPayload (line 3664) | interface PrivateChannelOnDisconnectEventPayload {
  type PrivateChannelOnUnsubscribeEvent (line 3682) | interface PrivateChannelOnUnsubscribeEvent {
  type PrivateChannelOnUnsubscribeEventPayload (line 3701) | interface PrivateChannelOnUnsubscribeEventPayload {
  type PrivateChannelUnsubscribeEventListenerRequest (line 3723) | interface PrivateChannelUnsubscribeEventListenerRequest {
  type PrivateChannelUnsubscribeEventListenerRequestPayload (line 3742) | interface PrivateChannelUnsubscribeEventListenerRequestPayload {
  type PrivateChannelUnsubscribeEventListenerResponse (line 3757) | interface PrivateChannelUnsubscribeEventListenerResponse {
  type RaiseIntentForContextRequest (line 3785) | interface RaiseIntentForContextRequest {
  type RaiseIntentForContextRequestPayload (line 3804) | interface RaiseIntentForContextRequestPayload {
  type RaiseIntentForContextResponse (line 3820) | interface RaiseIntentForContextResponse {
  type RaiseIntentForContextResponsePayload (line 3856) | interface RaiseIntentForContextResponsePayload {
  type IntentResolution (line 3900) | interface IntentResolution {
  type RaiseIntentRequest (line 3924) | interface RaiseIntentRequest {
  type RaiseIntentRequestPayload (line 3943) | interface RaiseIntentRequestPayload {
  type RaiseIntentResponse (line 3960) | interface RaiseIntentResponse {
  type RaiseIntentResponsePayload (line 3996) | interface RaiseIntentResponsePayload {
  type RaiseIntentResultResponse (line 4025) | interface RaiseIntentResultResponse {
  type RaiseIntentResultResponsePayload (line 4048) | interface RaiseIntentResultResponsePayload {
  class Convert (line 4060) | class Convert {
    method toWebConnectionProtocol1Hello (line 4061) | public static toWebConnectionProtocol1Hello(json: string): WebConnecti...
    method webConnectionProtocol1HelloToJson (line 4065) | public static webConnectionProtocol1HelloToJson(value: WebConnectionPr...
    method toWebConnectionProtocol2LoadURL (line 4069) | public static toWebConnectionProtocol2LoadURL(json: string): WebConnec...
    method webConnectionProtocol2LoadURLToJson (line 4073) | public static webConnectionProtocol2LoadURLToJson(value: WebConnection...
    method toWebConnectionProtocol3Handshake (line 4077) | public static toWebConnectionProtocol3Handshake(json: string): WebConn...
    method webConnectionProtocol3HandshakeToJson (line 4081) | public static webConnectionProtocol3HandshakeToJson(value: WebConnecti...
    method toWebConnectionProtocol4ValidateAppIdentity (line 4085) | public static toWebConnectionProtocol4ValidateAppIdentity(json: string...
    method webConnectionProtocol4ValidateAppIdentityToJson (line 4089) | public static webConnectionProtocol4ValidateAppIdentityToJson(
    method toWebConnectionProtocol5ValidateAppIdentityFailedResponse (line 4095) | public static toWebConnectionProtocol5ValidateAppIdentityFailedResponse(
    method webConnectionProtocol5ValidateAppIdentityFailedResponseToJson (line 4101) | public static webConnectionProtocol5ValidateAppIdentityFailedResponseT...
    method toWebConnectionProtocol5ValidateAppIdentitySuccessResponse (line 4107) | public static toWebConnectionProtocol5ValidateAppIdentitySuccessResponse(
    method webConnectionProtocol5ValidateAppIdentitySuccessResponseToJson (line 4113) | public static webConnectionProtocol5ValidateAppIdentitySuccessResponse...
    method toWebConnectionProtocol6Goodbye (line 4119) | public static toWebConnectionProtocol6Goodbye(json: string): WebConnec...
    method webConnectionProtocol6GoodbyeToJson (line 4123) | public static webConnectionProtocol6GoodbyeToJson(value: WebConnection...
    method toWebConnectionProtocolMessage (line 4127) | public static toWebConnectionProtocolMessage(json: string): WebConnect...
    method webConnectionProtocolMessageToJson (line 4131) | public static webConnectionProtocolMessageToJson(value: WebConnectionP...
    method toAddContextListenerRequest (line 4135) | public static toAddContextListenerRequest(json: string): AddContextLis...
    method addContextListenerRequestToJson (line 4139) | public static addContextListenerRequestToJson(value: AddContextListene...
    method toAddContextListenerResponse (line 4143) | public static toAddContextListenerResponse(json: string): AddContextLi...
    method addContextListenerResponseToJson (line 4147) | public static addContextListenerResponseToJson(value: AddContextListen...
    method toAddEventListenerRequest (line 4151) | public static toAddEventListenerRequest(json: string): AddEventListene...
    method addEventListenerRequestToJson (line 4155) | public static addEventListenerRequestToJson(value: AddEventListenerReq...
    method toAddEventListenerResponse (line 4159) | public static toAddEventListenerResponse(json: string): AddEventListen...
    method addEventListenerResponseToJson (line 4163) | public static addEventListenerResponseToJson(value: AddEventListenerRe...
    method toAddIntentListenerRequest (line 4167) | public static toAddIntentListenerRequest(json: string): AddIntentListe...
    method addIntentListenerRequestToJson (line 4171) | public static addIntentListenerRequestToJson(value: AddIntentListenerR...
    method toAddIntentListenerResponse (line 4175) | public static toAddIntentListenerResponse(json: string): AddIntentList...
    method addIntentListenerResponseToJson (line 4179) | public static addIntentListenerResponseToJson(value: AddIntentListener...
    method toAgentEventMessage (line 4183) | public static toAgentEventMessage(json: string): AgentEventMessage {
    method agentEventMessageToJson (line 4187) | public static agentEventMessageToJson(value: AgentEventMessage): string {
    method toAgentResponseMessage (line 4191) | public static toAgentResponseMessage(json: string): AgentResponseMessa...
    method agentResponseMessageToJson (line 4195) | public static agentResponseMessageToJson(value: AgentResponseMessage):...
    method toAppRequestMessage (line 4199) | public static toAppRequestMessage(json: string): AppRequestMessage {
    method appRequestMessageToJson (line 4203) | public static appRequestMessageToJson(value: AppRequestMessage): string {
    method toBroadcastEvent (line 4207) | public static toBroadcastEvent(json: string): BroadcastEvent {
    method broadcastEventToJson (line 4211) | public static broadcastEventToJson(value: BroadcastEvent): string {
    method toBroadcastRequest (line 4215) | public static toBroadcastRequest(json: string): BroadcastRequest {
    method broadcastRequestToJson (line 4219) | public static broadcastRequestToJson(value: BroadcastRequest): string {
    method toBroadcastResponse (line 4223) | public static toBroadcastResponse(json: string): BroadcastResponse {
    method broadcastResponseToJson (line 4227) | public static broadcastResponseToJson(value: BroadcastResponse): string {
    method toChannelChangedEvent (line 4231) | public static toChannelChangedEvent(json: string): ChannelChangedEvent {
    method channelChangedEventToJson (line 4235) | public static channelChangedEventToJson(value: ChannelChangedEvent): s...
    method toClearContextRequest (line 4239) | public static toClearContextRequest(json: string): ClearContextRequest {
    method clearContextRequestToJson (line 4243) | public static clearContextRequestToJson(value: ClearContextRequest): s...
    method toClearContextResponse (line 4247) | public static toClearContextResponse(json: string): ClearContextRespon...
    method clearContextResponseToJson (line 4251) | public static clearContextResponseToJson(value: ClearContextResponse):...
    method toContextClearedEvent (line 4255) | public static toContextClearedEvent(json: string): ContextClearedEvent {
    method contextClearedEventToJson (line 4259) | public static contextClearedEventToJson(value: ContextClearedEvent): s...
    method toContextListenerUnsubscribeRequest (line 4263) | public static toContextListenerUnsubscribeRequest(json: string): Conte...
    method contextListenerUnsubscribeRequestToJson (line 4267) | public static contextListenerUnsubscribeRequestToJson(value: ContextLi...
    method toContextListenerUnsubscribeResponse (line 4271) | public static toContextListenerUnsubscribeResponse(json: string): Cont...
    method contextListenerUnsubscribeResponseToJson (line 4275) | public static contextListenerUnsubscribeResponseToJson(value: ContextL...
    method toCreatePrivateChannelRequest (line 4279) | public static toCreatePrivateChannelRequest(json: string): CreatePriva...
    method createPrivateChannelRequestToJson (line 4283) | public static createPrivateChannelRequestToJson(value: CreatePrivateCh...
    method toCreatePrivateChannelResponse (line 4287) | public static toCreatePrivateChannelResponse(json: string): CreatePriv...
    method createPrivateChannelResponseToJson (line 4291) | public static createPrivateChannelResponseToJson(value: CreatePrivateC...
    method toEventListenerUnsubscribeRequest (line 4295) | public static toEventListenerUnsubscribeRequest(json: string): EventLi...
    method eventListenerUnsubscribeRequestToJson (line 4299) | public static eventListenerUnsubscribeRequestToJson(value: EventListen...
    method toEventListenerUnsubscribeResponse (line 4303) | public static toEventListenerUnsubscribeResponse(json: string): EventL...
    method eventListenerUnsubscribeResponseToJson (line 4307) | public static eventListenerUnsubscribeResponseToJson(value: EventListe...
    method toFdc3UserInterfaceChannelSelected (line 4311) | public static toFdc3UserInterfaceChannelSelected(json: string): Fdc3Us...
    method fdc3UserInterfaceChannelSelectedToJson (line 4315) | public static fdc3UserInterfaceChannelSelectedToJson(value: Fdc3UserIn...
    method toFdc3UserInterfaceChannels (line 4319) | public static toFdc3UserInterfaceChannels(json: string): Fdc3UserInter...
    method fdc3UserInterfaceChannelsToJson (line 4323) | public static fdc3UserInterfaceChannelsToJson(value: Fdc3UserInterface...
    method toFdc3UserInterfaceDrag (line 4327) | public static toFdc3UserInterfaceDrag(json: string): Fdc3UserInterface...
    method fdc3UserInterfaceDragToJson (line 4331) | public static fdc3UserInterfaceDragToJson(value: Fdc3UserInterfaceDrag...
    method toFdc3UserInterfaceHandshake (line 4335) | public static toFdc3UserInterfaceHandshake(json: string): Fdc3UserInte...
    method fdc3UserInterfaceHandshakeToJson (line 4339) | public static fdc3UserInterfaceHandshakeToJson(value: Fdc3UserInterfac...
    method toFdc3UserInterfaceHello (line 4343) | public static toFdc3UserInterfaceHello(json: string): Fdc3UserInterfac...
    method fdc3UserInterfaceHelloToJson (line 4347) | public static fdc3UserInterfaceHelloToJson(value: Fdc3UserInterfaceHel...
    method toFdc3UserInterfaceMessage (line 4351) | public static toFdc3UserInterfaceMessage(json: string): Fdc3UserInterf...
    method fdc3UserInterfaceMessageToJson (line 4355) | public static fdc3UserInterfaceMessageToJson(value: Fdc3UserInterfaceM...
    method toFdc3UserInterfaceResolve (line 4359) | public static toFdc3UserInterfaceResolve(json: string): Fdc3UserInterf...
    method fdc3UserInterfaceResolveToJson (line 4363) | public static fdc3UserInterfaceResolveToJson(value: Fdc3UserInterfaceR...
    method toFdc3UserInterfaceResolveAction (line 4367) | public static toFdc3UserInterfaceResolveAction(json: string): Fdc3User...
    method fdc3UserInterfaceResolveActionToJson (line 4371) | public static fdc3UserInterfaceResolveActionToJson(value: Fdc3UserInte...
    method toFdc3UserInterfaceRestyle (line 4375) | public static toFdc3UserInterfaceRestyle(json: string): Fdc3UserInterf...
    method fdc3UserInterfaceRestyleToJson (line 4379) | public static fdc3UserInterfaceRestyleToJson(value: Fdc3UserInterfaceR...
    method toFindInstancesRequest (line 4383) | public static toFindInstancesRequest(json: string): FindInstancesReque...
    method findInstancesRequestToJson (line 4387) | public static findInstancesRequestToJson(value: FindInstancesRequest):...
    method toFindInstancesResponse (line 4391) | public static toFindInstancesResponse(json: string): FindInstancesResp...
    method findInstancesResponseToJson (line 4395) | public static findInstancesResponseToJson(value: FindInstancesResponse...
    method toFindIntentRequest (line 4399) | public static toFindIntentRequest(json: string): FindIntentRequest {
    method findIntentRequestToJson (line 4403) | public static findIntentRequestToJson(value: FindIntentRequest): string {
    method toFindIntentResponse (line 4407) | public static toFindIntentResponse(json: string): FindIntentResponse {
    method findIntentResponseToJson (line 4411) | public static findIntentResponseToJson(value: FindIntentResponse): str...
    method toFindIntentsByContextRequest (line 4415) | public static toFindIntentsByContextRequest(json: string): FindIntents...
    method findIntentsByContextRequestToJson (line 4419) | public static findIntentsByContextRequestToJson(value: FindIntentsByCo...
    method toFindIntentsByContextResponse (line 4423) | public static toFindIntentsByContextResponse(json: string): FindIntent...
    method findIntentsByContextResponseToJson (line 4427) | public static findIntentsByContextResponseToJson(value: FindIntentsByC...
    method toGetAppMetadataRequest (line 4431) | public static toGetAppMetadataRequest(json: string): GetAppMetadataReq...
    method getAppMetadataRequestToJson (line 4435) | public static getAppMetadataRequestToJson(value: GetAppMetadataRequest...
    method toGetAppMetadataResponse (line 4439) | public static toGetAppMetadataResponse(json: string): GetAppMetadataRe...
    method getAppMetadataResponseToJson (line 4443) | public static getAppMetadataResponseToJson(value: GetAppMetadataRespon...
    method toGetCurrentChannelRequest (line 4447) | public static toGetCurrentChannelRequest(json: string): GetCurrentChan...
    method getCurrentChannelRequestToJson (line 4451) | public static getCurrentChannelRequestToJson(value: GetCurrentChannelR...
    method toGetCurrentChannelResponse (line 4455) | public static toGetCurrentChannelResponse(json: string): GetCurrentCha...
    method getCurrentChannelResponseToJson (line 4459) | public static getCurrentChannelResponseToJson(value: GetCurrentChannel...
    method toGetCurrentContextRequest (line 4463) | public static toGetCurrentContextRequest(json: string): GetCurrentCont...
    method getCurrentContextRequestToJson (line 4467) | public static getCurrentContextRequestToJson(value: GetCurrentContextR...
    method toGetCurrentContextResponse (line 4471) | public static toGetCurrentContextResponse(json: string): GetCurrentCon...
    method getCurrentContextResponseToJson (line 4475) | public static getCurrentContextResponseToJson(value: GetCurrentContext...
    method toGetInfoRequest (line 4479) | public static toGetInfoRequest(json: string): GetInfoRequest {
    method getInfoRequestToJson (line 4483) | public static getInfoRequestToJson(value: GetInfoRequest): string {
    method toGetInfoResponse (line 4487) | public static toGetInfoResponse(json: string): GetInfoResponse {
    method getInfoResponseToJson (line 4491) | public static getInfoResponseToJson(value: GetInfoResponse): string {
    method toGetOrCreateChannelRequest (line 4495) | public static toGetOrCreateChannelRequest(json: string): GetOrCreateCh...
    method getOrCreateChannelRequestToJson (line 4499) | public static getOrCreateChannelRequestToJson(value: GetOrCreateChanne...
    method toGetOrCreateChannelResponse (line 4503) | public static toGetOrCreateChannelResponse(json: string): GetOrCreateC...
    method getOrCreateChannelResponseToJson (line 4507) | public static getOrCreateChannelResponseToJson(value: GetOrCreateChann...
    method toGetUserChannelsRequest (line 4511) | public static toGetUserChannelsRequest(json: string): GetUserChannelsR...
    method getUserChannelsRequestToJson (line 4515) | public static getUserChannelsRequestToJson(value: GetUserChannelsReque...
    method toGetUserChannelsResponse (line 4519) | public static toGetUserChannelsResponse(json: string): GetUserChannels...
    method getUserChannelsResponseToJson (line 4523) | public static getUserChannelsResponseToJson(value: GetUserChannelsResp...
    method toHeartbeatAcknowledgementRequest (line 4527) | public static toHeartbeatAcknowledgementRequest(json: string): Heartbe...
    method heartbeatAcknowledgementRequestToJson (line 4531) | public static heartbeatAcknowledgementRequestToJson(value: HeartbeatAc...
    method toHeartbeatEvent (line 4535) | public static toHeartbeatEvent(json: string): HeartbeatEvent {
    method heartbeatEventToJson (line 4539) | public static heartbeatEventToJson(value: HeartbeatEvent): string {
    method toIntentEvent (line 4543) | public static toIntentEvent(json: string): IntentEvent {
    method intentEventToJson (line 4547) | public static intentEventToJson(value: IntentEvent): string {
    method toIntentListenerUnsubscribeRequest (line 4551) | public static toIntentListenerUnsubscribeRequest(json: string): Intent...
    method intentListenerUnsubscribeRequestToJson (line 4555) | public static intentListenerUnsubscribeRequestToJson(value: IntentList...
    method toIntentListenerUnsubscribeResponse (line 4559) | public static toIntentListenerUnsubscribeResponse(json: string): Inten...
    method intentListenerUnsubscribeResponseToJson (line 4563) | public static intentListenerUnsubscribeResponseToJson(value: IntentLis...
    method toIntentResultRequest (line 4567) | public static toIntentResultRequest(json: string): IntentResultRequest {
    method intentResultRequestToJson (line 4571) | public static intentResultRequestToJson(value: IntentResultRequest): s...
    method toIntentResultResponse (line 4575) | public static toIntentResultResponse(json: string): IntentResultRespon...
    method intentResultResponseToJson (line 4579) | public static intentResultResponseToJson(value: IntentResultResponse):...
    method toJoinUserChannelRequest (line 4583) | public static toJoinUserChannelRequest(json: string): JoinUserChannelR...
    method joinUserChannelRequestToJson (line 4587) | public static joinUserChannelRequestToJson(value: JoinUserChannelReque...
    method toJoinUserChannelResponse (line 4591) | public static toJoinUserChannelResponse(json: string): JoinUserChannel...
    method joinUserChannelResponseToJson (line 4595) | public static joinUserChannelResponseToJson(value: JoinUserChannelResp...
    method toLeaveCurrentChannelRequest (line 4599) | public static toLeaveCurrentChannelRequest(json: string): LeaveCurrent...
    method leaveCurrentChannelRequestToJson (line 4603) | public static leaveCurrentChannelRequestToJson(value: LeaveCurrentChan...
    method toLeaveCurrentChannelResponse (line 4607) | public static toLeaveCurrentChannelResponse(json: string): LeaveCurren...
    method leaveCurrentChannelResponseToJson (line 4611) | public static leaveCurrentChannelResponseToJson(value: LeaveCurrentCha...
    method toOpenRequest (line 4615) | public static toOpenRequest(json: string): OpenRequest {
    method openRequestToJson (line 4619) | public static openRequestToJson(value: OpenRequest): string {
    method toOpenResponse (line 4623) | public static toOpenResponse(json: string): OpenResponse {
    method openResponseToJson (line 4627) | public static openResponseToJson(value: OpenResponse): string {
    method toPrivateChannelAddEventListenerRequest (line 4631) | public static toPrivateChannelAddEventListenerRequest(json: string): P...
    method privateChannelAddEventListenerRequestToJson (line 4635) | public static privateChannelAddEventListenerRequestToJson(value: Priva...
    method toPrivateChannelAddEventListenerResponse (line 4639) | public static toPrivateChannelAddEventListenerResponse(json: string): ...
    method privateChannelAddEventListenerResponseToJson (line 4643) | public static privateChannelAddEventListenerResponseToJson(value: Priv...
    method toPrivateChannelDisconnectRequest (line 4647) | public static toPrivateChannelDisconnectRequest(json: string): Private...
    method privateChannelDisconnectRequestToJson (line 4651) | public static privateChannelDisconnectRequestToJson(value: PrivateChan...
    method toPrivateChannelDisconnectResponse (line 4655) | public static toPrivateChannelDisconnectResponse(json: string): Privat...
    method privateChannelDisconnectResponseToJson (line 4659) | public static privateChannelDisconnectResponseToJson(value: PrivateCha...
    method toPrivateChannelOnAddContextListenerEvent (line 4663) | public static toPrivateChannelOnAddContextListenerEvent(json: string):...
    method privateChannelOnAddContextListenerEventToJson (line 4667) | public static privateChannelOnAddContextListenerEventToJson(value: Pri...
    method toPrivateChannelOnDisconnectEvent (line 4671) | public static toPrivateChannelOnDisconnectEvent(json: string): Private...
    method privateChannelOnDisconnectEventToJson (line 4675) | public static privateChannelOnDisconnectEventToJson(value: PrivateChan...
    method toPrivateChannelOnUnsubscribeEvent (line 4679) | public static toPrivateChannelOnUnsubscribeEvent(json: string): Privat...
    method privateChannelOnUnsubscribeEventToJson (line 4683) | public static privateChannelOnUnsubscribeEventToJson(value: PrivateCha...
    method toPrivateChannelUnsubscribeEventListenerRequest (line 4687) | public static toPrivateChannelUnsubscribeEventListenerRequest(
    method privateChannelUnsubscribeEventListenerRequestToJson (line 4693) | public static privateChannelUnsubscribeEventListenerRequestToJson(
    method toPrivateChannelUnsubscribeEventListenerResponse (line 4699) | public static toPrivateChannelUnsubscribeEventListenerResponse(
    method privateChannelUnsubscribeEventListenerResponseToJson (line 4705) | public static privateChannelUnsubscribeEventListenerResponseToJson(
    method toRaiseIntentForContextRequest (line 4711) | public static toRaiseIntentForContextRequest(json: string): RaiseInten...
    method raiseIntentForContextRequestToJson (line 4715) | public static raiseIntentForContextRequestToJson(value: RaiseIntentFor...
    method toRaiseIntentForContextResponse (line 4719) | public static toRaiseIntentForContextResponse(json: string): RaiseInte...
    method raiseIntentForContextResponseToJson (line 4723) | public static raiseIntentForContextResponseToJson(value: RaiseIntentFo...
    method toRaiseIntentRequest (line 4727) | public static toRaiseIntentRequest(json: string): RaiseIntentRequest {
    method raiseIntentRequestToJson (line 4731) | public static raiseIntentRequestToJson(value: RaiseIntentRequest): str...
    method toRaiseIntentResponse (line 4735) | public static toRaiseIntentResponse(json: string): RaiseIntentResponse {
    method raiseIntentResponseToJson (line 4739) | public static raiseIntentResponseToJson(value: RaiseIntentResponse): s...
    method toRaiseIntentResultResponse (line 4743) | public static toRaiseIntentResultResponse(json: string): RaiseIntentRe...
    method raiseIntentResultResponseToJson (line 4747) | public static raiseIntentResultResponseToJson(value: RaiseIntentResult...
  function invalidValue (line 4752) | function invalidValue(typ: any, val: any, key: any, parent: any = ''): n...
  function prettyTypeName (line 4759) | function prettyTypeName(typ: any): string {
  function jsonToJSProps (line 4777) | function jsonToJSProps(typ: any): any {
  function jsToJSONProps (line 4786) | function jsToJSONProps(typ: any): any {
  function transform (line 4795) | function transform(val: any, typ: any, getProps: any, key: any = '', par...
  function cast (line 4886) | function cast<T>(val: any, typ: any): T {
  function uncast (line 4890) | function uncast<T>(val: T, typ: any): any {
  function l (line 4894) | function l(typ: any) {
  function a (line 4898) | function a(typ: any) {
  function u (line 4902) | function u(...typs: any[]) {
  function o (line 4906) | function o(props: any[], additional: any) {
  function m (line 4910) | function m(additional: any) {
  function r (line 4914) | function r(name: string) {
  type AppRequestMessage (line 6413) | type AppRequestMessage =
  type AgentResponseMessage (line 6443) | type AgentResponseMessage =
  type AgentEventMessage (line 6473) | type AgentEventMessage =
  function isWebConnectionProtocol1Hello (line 6486) | function isWebConnectionProtocol1Hello(value: any): value is WebConnecti...
  function isValidWebConnectionProtocol1Hello (line 6493) | function isValidWebConnectionProtocol1Hello(value: any): value is WebCon...
  constant WEB_CONNECTION_PROTOCOL1_HELLO_TYPE (line 6502) | const WEB_CONNECTION_PROTOCOL1_HELLO_TYPE = 'WebConnectionProtocol1Hello';
  function isWebConnectionProtocol2LoadURL (line 6507) | function isWebConnectionProtocol2LoadURL(value: any): value is WebConnec...
  function isValidWebConnectionProtocol2LoadURL (line 6514) | function isValidWebConnectionProtocol2LoadURL(value: any): value is WebC...
  constant WEB_CONNECTION_PROTOCOL2_LOAD_U_R_L_TYPE (line 6523) | const WEB_CONNECTION_PROTOCOL2_LOAD_U_R_L_TYPE = 'WebConnectionProtocol2...
  function isWebConnectionProtocol3Handshake (line 6528) | function isWebConnectionProtocol3Handshake(value: any): value is WebConn...
  function isValidWebConnectionProtocol3Handshake (line 6535) | function isValidWebConnectionProtocol3Handshake(value: any): value is We...
  constant WEB_CONNECTION_PROTOCOL3_HANDSHAKE_TYPE (line 6544) | const WEB_CONNECTION_PROTOCOL3_HANDSHAKE_TYPE = 'WebConnectionProtocol3H...
  function isWebConnectionProtocol4ValidateAppIdentity (line 6549) | function isWebConnectionProtocol4ValidateAppIdentity(
  function isValidWebConnectionProtocol4ValidateAppIdentity (line 6558) | function isValidWebConnectionProtocol4ValidateAppIdentity(
  constant WEB_CONNECTION_PROTOCOL4_VALIDATE_APP_IDENTITY_TYPE (line 6569) | const WEB_CONNECTION_PROTOCOL4_VALIDATE_APP_IDENTITY_TYPE = 'WebConnecti...
  function isWebConnectionProtocol5ValidateAppIdentityFailedResponse (line 6574) | function isWebConnectionProtocol5ValidateAppIdentityFailedResponse(
  function isValidWebConnectionProtocol5ValidateAppIdentityFailedResponse (line 6583) | function isValidWebConnectionProtocol5ValidateAppIdentityFailedResponse(
  constant WEB_CONNECTION_PROTOCOL5_VALIDATE_APP_IDENTITY_FAILED_RESPONSE_TYPE (line 6594) | const WEB_CONNECTION_PROTOCOL5_VALIDATE_APP_IDENTITY_FAILED_RESPONSE_TYPE =
  function isWebConnectionProtocol5ValidateAppIdentitySuccessResponse (line 6600) | function isWebConnectionProtocol5ValidateAppIdentitySuccessResponse(
  function isValidWebConnectionProtocol5ValidateAppIdentitySuccessResponse (line 6609) | function isValidWebConnectionProtocol5ValidateAppIdentitySuccessResponse(
  constant WEB_CONNECTION_PROTOCOL5_VALIDATE_APP_IDENTITY_SUCCESS_RESPONSE_TYPE (line 6620) | const WEB_CONNECTION_PROTOCOL5_VALIDATE_APP_IDENTITY_SUCCESS_RESPONSE_TY...
  function isWebConnectionProtocol6Goodbye (line 6626) | function isWebConnectionProtocol6Goodbye(value: any): value is WebConnec...
  function isValidWebConnectionProtocol6Goodbye (line 6633) | function isValidWebConnectionProtocol6Goodbye(value: any): value is WebC...
  constant WEB_CONNECTION_PROTOCOL6_GOODBYE_TYPE (line 6642) | const WEB_CONNECTION_PROTOCOL6_GOODBYE_TYPE = 'WebConnectionProtocol6Goo...
  function isValidWebConnectionProtocolMessage (line 6647) | function isValidWebConnectionProtocolMessage(value: any): value is WebCo...
  constant WEB_CONNECTION_PROTOCOL_MESSAGE_TYPE (line 6656) | const WEB_CONNECTION_PROTOCOL_MESSAGE_TYPE = 'WebConnectionProtocolMessa...
  function isAddContextListenerRequest (line 6661) | function isAddContextListenerRequest(value: any): value is AddContextLis...
  function isValidAddContextListenerRequest (line 6668) | function isValidAddContextListenerRequest(value: any): value is AddConte...
  constant ADD_CONTEXT_LISTENER_REQUEST_TYPE (line 6677) | const ADD_CONTEXT_LISTENER_REQUEST_TYPE = 'AddContextListenerRequest';
  function isAddContextListenerResponse (line 6682) | function isAddContextListenerResponse(value: any): value is AddContextLi...
  function isValidAddContextListenerResponse (line 6689) | function isValidAddContextListenerResponse(value: any): value is AddCont...
  constant ADD_CONTEXT_LISTENER_RESPONSE_TYPE (line 6698) | const ADD_CONTEXT_LISTENER_RESPONSE_TYPE = 'AddContextListenerResponse';
  function isAddEventListenerRequest (line 6703) | function isAddEventListenerRequest(value: any): value is AddEventListene...
  function isValidAddEventListenerRequest (line 6710) | function isValidAddEventListenerRequest(value: any): value is AddEventLi...
  constant ADD_EVENT_LISTENER_REQUEST_TYPE (line 6719) | const ADD_EVENT_LISTENER_REQUEST_TYPE = 'AddEventListenerRequest';
  function isAddEventListenerResponse (line 6724) | function isAddEventListenerResponse(value: any): value is AddEventListen...
  function isValidAddEventListenerResponse (line 6731) | function isValidAddEventListenerResponse(value: any): value is AddEventL...
  constant ADD_EVENT_LISTENER_RESPONSE_TYPE (line 6740) | const ADD_EVENT_LISTENER_RESPONSE_TYPE = 'AddEventListenerResponse';
  function isAddIntentListenerRequest (line 6745) | function isAddIntentListenerRequest(value: any): value is AddIntentListe...
  function isValidAddIntentListenerRequest (line 6752) | function isValidAddIntentListenerRequest(value: any): value is AddIntent...
  constant ADD_INTENT_LISTENER_REQUEST_TYPE (line 6761) | const ADD_INTENT_LISTENER_REQUEST_TYPE = 'AddIntentListenerRequest';
  function isAddIntentListenerResponse (line 6766) | function isAddIntentListenerResponse(value: any): value is AddIntentList...
  function isValidAddIntentListenerResponse (line 6773) | function isValidAddIntentListenerResponse(value: any): value is AddInten...
  constant ADD_INTENT_LISTENER_RESPONSE_TYPE (line 6782) | const ADD_INTENT_LISTENER_RESPONSE_TYPE = 'AddIntentListenerResponse';
  function isBroadcastEvent (line 6787) | function isBroadcastEvent(value: any): value is BroadcastEvent {
  function isValidBroadcastEvent (line 6794) | function isValidBroadcastEvent(value: any): value is BroadcastEvent {
  constant BROADCAST_EVENT_TYPE (line 6803) | const BROADCAST_EVENT_TYPE = 'BroadcastEvent';
  function isBroadcastRequest (line 6808) | function isBroadcastRequest(value: any): value is BroadcastRequest {
  function isValidBroadcastRequest (line 6815) | function isValidBroadcastRequest(value: any): value is BroadcastRequest {
  constant BROADCAST_REQUEST_TYPE (line 6824) | const BROADCAST_REQUEST_TYPE = 'BroadcastRequest';
  function isBroadcastResponse (line 6829) | function isBroadcastResponse(value: any): value is BroadcastResponse {
  function isValidBroadcastResponse (line 6836) | function isValidBroadcastResponse(value: any): value is BroadcastResponse {
  constant BROADCAST_RESPONSE_TYPE (line 6845) | const BROADCAST_RESPONSE_TYPE = 'BroadcastResponse';
  function isChannelChangedEvent (line 6850) | function isChannelChangedEvent(value: any): value is ChannelChangedEvent {
  function isValidChannelChangedEvent (line 6857) | function isValidChannelChangedEvent(value: any): value is ChannelChanged...
  constant CHANNEL_CHANGED_EVENT_TYPE (line 6866) | const CHANNEL_CHANGED_EVENT_TYPE = 'ChannelChangedEvent';
  function isClearContextRequest (line 6871) | function isClearContextRequest(value: any): value is ClearContextRequest {
  function isValidClearContextRequest (line 6878) | function isValidClearContextRequest(value: any): value is ClearContextRe...
  constant CLEAR_CONTEXT_REQUEST_TYPE (line 6887) | const CLEAR_CONTEXT_REQUEST_TYPE = 'ClearContextRequest';
  function isClearContextResponse (line 6892) | function isClearContextResponse(value: any): value is ClearContextRespon...
  function isValidClearContextResponse (line 6899) | function isValidClearContextResponse(value: any): value is ClearContextR...
  constant CLEAR_CONTEXT_RESPONSE_TYPE (line 6908) | const CLEAR_CONTEXT_RESPONSE_TYPE = 'ClearContextResponse';
  function isContextClearedEvent (line 6913) | function isContextClearedEvent(value: any): value is ContextClearedEvent {
  function isValidContextClearedEvent (line 6920) | function isValidContextClearedEvent(value: any): value is ContextCleared...
  constant CONTEXT_CLEARED_EVENT_TYPE (line 6929) | const CONTEXT_CLEARED_EVENT_TYPE = 'ContextClearedEvent';
  function isContextListenerUnsubscribeRequest (line 6934) | function isContextListenerUnsubscribeRequest(value: any): value is Conte...
  function isValidContextListenerUnsubscribeRequest (line 6941) | function isValidContextListenerUnsubscribeRequest(value: any): value is ...
  constant CONTEXT_LISTENER_UNSUBSCRIBE_REQUEST_TYPE (line 6950) | const CONTEXT_LISTENER_UNSUBSCRIBE_REQUEST_TYPE = 'ContextListenerUnsubs...
  function isContextListenerUnsubscribeResponse (line 6955) | function isContextListenerUnsubscribeResponse(value: any): value is Cont...
  function isValidContextListenerUnsubscribeResponse (line 6962) | function isValidContextListenerUnsubscribeResponse(value: any): value is...
  constant CONTEXT_LISTENER_UNSUBSCRIBE_RESPONSE_TYPE (line 6971) | const CONTEXT_LISTENER_UNSUBSCRIBE_RESPONSE_TYPE = 'ContextListenerUnsub...
  function isCreatePrivateChannelRequest (line 6976) | function isCreatePrivateChannelRequest(value: any): value is CreatePriva...
  function isValidCreatePrivateChannelRequest (line 6983) | function isValidCreatePrivateChannelRequest(value: any): value is Create...
  constant CREATE_PRIVATE_CHANNEL_REQUEST_TYPE (line 6992) | const CREATE_PRIVATE_CHANNEL_REQUEST_TYPE = 'CreatePrivateChannelRequest';
  function isCreatePrivateChannelResponse (line 6997) | function isCreatePrivateChannelResponse(value: any): value is CreatePriv...
  function isValidCreatePrivateChannelResponse (line 7004) | function isValidCreatePrivateChannelResponse(value: any): value is Creat...
  constant CREATE_PRIVATE_CHANNEL_RESPONSE_TYPE (line 7013) | const CREATE_PRIVATE_CHANNEL_RESPONSE_TYPE = 'CreatePrivateChannelRespon...
  function isEventListenerUnsubscribeRequest (line 7018) | function isEventListenerUnsubscribeRequest(value: any): value is EventLi...
  function isValidEventListenerUnsubscribeRequest (line 7025) | function isValidEventListenerUnsubscribeRequest(value: any): value is Ev...
  constant EVENT_LISTENER_UNSUBSCRIBE_REQUEST_TYPE (line 7034) | const EVENT_LISTENER_UNSUBSCRIBE_REQUEST_TYPE = 'EventListenerUnsubscrib...
  function isEventListenerUnsubscribeResponse (line 7039) | function isEventListenerUnsubscribeResponse(value: any): value is EventL...
  function isValidEventListenerUnsubscribeResponse (line 7046) | function isValidEventListenerUnsubscribeResponse(value: any): value is E...
  constant EVENT_LISTENER_UNSUBSCRIBE_RESPONSE_TYPE (line 7055) | const EVENT_LISTENER_UNSUBSCRIBE_RESPONSE_TYPE = 'EventListenerUnsubscri...
  function isFdc3UserInterfaceChannelSelected (line 7060) | function isFdc3UserInterfaceChannelSelected(value: any): value is Fdc3Us...
  function isValidFdc3UserInterfaceChannelSelected (line 7067) | function isValidFdc3UserInterfaceChannelSelected(value: any): value is F...
  constant FDC3_USER_INTERFACE_CHANNEL_SELECTED_TYPE (line 7076) | const FDC3_USER_INTERFACE_CHANNEL_SELECTED_TYPE = 'Fdc3UserInterfaceChan...
  function isFdc3UserInterfaceChannels (line 7081) | function isFdc3UserInterfaceChannels(value: any): value is Fdc3UserInter...
  function isValidFdc3UserInterfaceChannels (line 7088) | function isValidFdc3UserInterfaceChannels(value: any): value is Fdc3User...
  constant FDC3_USER_INTERFACE_CHANNELS_TYPE (line 7097) | const FDC3_USER_INTERFACE_CHANNELS_TYPE = 'Fdc3UserInterfaceChannels';
  function isFdc3UserInterfaceDrag (line 7102) | function isFdc3UserInterfaceDrag(value: any): value is Fdc3UserInterface...
  function isValidFdc3UserInterfaceDrag (line 7109) | function isValidFdc3UserInterfaceDrag(value: any): value is Fdc3UserInte...
  constant FDC3_USER_INTERFACE_DRAG_TYPE (line 7118) | const FDC3_USER_INTERFACE_DRAG_TYPE = 'Fdc3UserInterfaceDrag';
  function isFdc3UserInterfaceHandshake (line 7123) | function isFdc3UserInterfaceHandshake(value: any): value is Fdc3UserInte...
  function isValidFdc3UserInterfaceHandshake (line 7130) | function isValidFdc3UserInterfaceHandshake(value: any): value is Fdc3Use...
  constant FDC3_USER_INTERFACE_HANDSHAKE_TYPE (line 7139) | const FDC3_USER_INTERFACE_HANDSHAKE_TYPE = 'Fdc3UserInterfaceHandshake';
  function isFdc3UserInterfaceHello (line 7144) | function isFdc3UserInterfaceHello(value: any): value is Fdc3UserInterfac...
  function isValidFdc3UserInterfaceHello (line 7151) | function isValidFdc3UserInterfaceHello(value: any): value is Fdc3UserInt...
  constant FDC3_USER_INTERFACE_HELLO_TYPE (line 7160) | const FDC3_USER_INTERFACE_HELLO_TYPE = 'Fdc3UserInterfaceHello';
  function isValidFdc3UserInterfaceMessage (line 7165) | function isValidFdc3UserInterfaceMessage(value: any): value is Fdc3UserI...
  constant FDC3_USER_INTERFACE_MESSAGE_TYPE (line 7174) | const FDC3_USER_INTERFACE_MESSAGE_TYPE = 'Fdc3UserInterfaceMessage';
  function isFdc3UserInterfaceResolve (line 7179) | function isFdc3UserInterfaceResolve(value: any): value is Fdc3UserInterf...
  function isValidFdc3UserInterfaceResolve (line 7186) | function isValidFdc3UserInterfaceResolve(value: any): value is Fdc3UserI...
  constant FDC3_USER_INTERFACE_RESOLVE_TYPE (line 7195) | const FDC3_USER_INTERFACE_RESOLVE_TYPE = 'Fdc3UserInterfaceResolve';
  function isFdc3UserInterfaceResolveAction (line 7200) | function isFdc3UserInterfaceResolveAction(value: any): value is Fdc3User...
  function isValidFdc3UserInterfaceResolveAction (line 7207) | function isValidFdc3UserInterfaceResolveAction(value: any): value is Fdc...
  constant FDC3_USER_INTERFACE_RESOLVE_ACTION_TYPE (line 7216) | const FDC3_USER_INTERFACE_RESOLVE_ACTION_TYPE = 'Fdc3UserInterfaceResolv...
  function isFdc3UserInterfaceRestyle (line 7221) | function isFdc3UserInterfaceRestyle(value: any): value is Fdc3UserInterf...
  function isValidFdc3UserInterfaceRestyle (line 7228) | function isValidFdc3UserInterfaceRestyle(value: any): value is Fdc3UserI...
  constant FDC3_USER_INTERFACE_RESTYLE_TYPE (line 7237) | const FDC3_USER_INTERFACE_RESTYLE_TYPE = 'Fdc3UserInterfaceRestyle';
  function isFindInstancesRequest (line 7242) | function isFindInstancesRequest(value: any): value is FindInstancesReque...
  function isValidFindInstancesRequest (line 7249) | function isValidFindInstancesRequest(value: any): value is FindInstances...
  constant FIND_INSTANCES_REQUEST_TYPE (line 7258) | const FIND_INSTANCES_REQUEST_TYPE = 'FindInstancesRequest';
  function isFindInstancesResponse (line 7263) | function isFindInstancesResponse(value: any): value is FindInstancesResp...
  function isValidFindInstancesResponse (line 7270) | function isValidFindInstancesResponse(value: any): value is FindInstance...
  constant FIND_INSTANCES_RESPONSE_TYPE (line 7279) | const FIND_INSTANCES_RESPONSE_TYPE = 'FindInstancesResponse';
  function isFindIntentRequest (line 7284) | function isFindIntentRequest(value: any): value is FindIntentRequest {
  function isValidFindIntentRequest (line 7291) | function isValidFindIntentRequest(value: any): value is FindIntentRequest {
  constant FIND_INTENT_REQUEST_TYPE (line 7300) | const FIND_INTENT_REQUEST_TYPE = 'FindIntentRequest';
  function isFindIntentResponse (line 7305) | function isFindIntentResponse(value: any): value is FindIntentResponse {
  function isValidFindIntentResponse (line 7312) | function isValidFindIntentResponse(value: any): value is FindIntentRespo...
  constant FIND_INTENT_RESPONSE_TYPE (line 7321) | const FIND_INTENT_RESPONSE_TYPE = 'FindIntentResponse';
  function isFindIntentsByContextRequest (line 7326) | function isFindIntentsByContextRequest(value: any): value is FindIntents...
  function isValidFindIntentsByContextRequest (line 7333) | function isValidFindIntentsByContextRequest(value: any): value is FindIn...
  constant FIND_INTENTS_BY_CONTEXT_REQUEST_TYPE (line 7342) | const FIND_INTENTS_BY_CONTEXT_REQUEST_TYPE = 'FindIntentsByContextRequest';
  function isFindIntentsByContextResponse (line 7347) | function isFindIntentsByContextResponse(value: any): value is FindIntent...
  function isValidFindIntentsByContextResponse (line 7354) | function isValidFindIntentsByContextResponse(value: any): value is FindI...
  constant FIND_INTENTS_BY_CONTEXT_RESPONSE_TYPE (line 7363) | const FIND_INTENTS_BY_CONTEXT_RESPONSE_TYPE = 'FindIntentsByContextRespo...
  function isGetAppMetadataRequest (line 7368) | function isGetAppMetadataRequest(value: any): value is GetAppMetadataReq...
  function isValidGetAppMetadataRequest (line 7375) | function isValidGetAppMetadataRequest(value: any): value is GetAppMetada...
  constant GET_APP_METADATA_REQUEST_TYPE (line 7384) | const GET_APP_METADATA_REQUEST_TYPE = 'GetAppMetadataRequest';
  function isGetAppMetadataResponse (line 7389) | function isGetAppMetadataResponse(value: any): value is GetAppMetadataRe...
  function isValidGetAppMetadataResponse (line 7396) | function isValidGetAppMetadataResponse(value: any): value is GetAppMetad...
  constant GET_APP_METADATA_RESPONSE_TYPE (line 7405) | const GET_APP_METADATA_RESPONSE_TYPE = 'GetAppMetadataResponse';
  function isGetCurrentChannelRequest (line 7410) | function isGetCurrentChannelRequest(value: any): value is GetCurrentChan...
  function isValidGetCurrentChannelRequest (line 7417) | function isValidGetCurrentChannelRequest(value: any): value is GetCurren...
  constant GET_CURRENT_CHANNEL_REQUEST_TYPE (line 7426) | const GET_CURRENT_CHANNEL_REQUEST_TYPE = 'GetCurrentChannelRequest';
  function isGetCurrentChannelResponse (line 7431) | function isGetCurrentChannelResponse(value: any): value is GetCurrentCha...
  function isValidGetCurrentChannelResponse (line 7438) | function isValidGetCurrentChannelResponse(value: any): value is GetCurre...
  constant GET_CURRENT_CHANNEL_RESPONSE_TYPE (line 7447) | const GET_CURRENT_CHANNEL_RESPONSE_TYPE = 'GetCurrentChannelResponse';
  function isGetCurrentContextRequest (line 7452) | function isGetCurrentContextRequest(value: any): value is GetCurrentCont...
  function isValidGetCurrentContextRequest (line 7459) | function isValidGetCurrentContextRequest(value: any): value is GetCurren...
  constant GET_CURRENT_CONTEXT_REQUEST_TYPE (line 7468) | const GET_CURRENT_CONTEXT_REQUEST_TYPE = 'GetCurrentContextRequest';
  function isGetCurrentContextResponse (line 7473) | function isGetCurrentContextResponse(value: any): value is GetCurrentCon...
  function isValidGetCurrentContextResponse (line 7480) | function isValidGetCurrentContextResponse(value: any): value is GetCurre...
  constant GET_CURRENT_CONTEXT_RESPONSE_TYPE (line 7489) | const GET_CURRENT_CONTEXT_RESPONSE_TYPE = 'GetCurrentContextResponse';
  function isGetInfoRequest (line 7494) | function isGetInfoRequest(value: any): value is GetInfoRequest {
  function isValidGetInfoRequest (line 7501) | function isValidGetInfoRequest(value: any): value is GetInfoRequest {
  constant GET_INFO_REQUEST_TYPE (line 7510) | const GET_INFO_REQUEST_TYPE = 'GetInfoRequest';
  function isGetInfoResponse (line 7515) | function isGetInfoResponse(value: any): value is GetInfoResponse {
  function isValidGetInfoResponse (line 7522) | function isValidGetInfoResponse(value: any): value is GetInfoResponse {
  constant GET_INFO_RESPONSE_TYPE (line 7531) | const GET_INFO_RESPONSE_TYPE = 'GetInfoResponse';
  function isGetOrCreateChannelRequest (line 7536) | function isGetOrCreateChannelRequest(value: any): value is GetOrCreateCh...
  function isValidGetOrCreateChannelRequest (line 7543) | function isValidGetOrCreateChannelRequest(value: any): value is GetOrCre...
  constant GET_OR_CREATE_CHANNEL_REQUEST_TYPE (line 7552) | const GET_OR_CREATE_CHANNEL_REQUEST_TYPE = 'GetOrCreateChannelRequest';
  function isGetOrCreateChannelResponse (line 7557) | function isGetOrCreateChannelResponse(value: any): value is GetOrCreateC...
  function isValidGetOrCreateChannelResponse (line 7564) | function isValidGetOrCreateChannelResponse(value: any): value is GetOrCr...
  constant GET_OR_CREATE_CHANNEL_RESPONSE_TYPE (line 7573) | const GET_OR_CREATE_CHANNEL_RESPONSE_TYPE = 'GetOrCreateChannelResponse';
  function isGetUserChannelsRequest (line 7578) | function isGetUserChannelsRequest(value: any): value is GetUserChannelsR...
  function isValidGetUserChannelsRequest (line 7585) | function isValidGetUserChannelsRequest(value: any): value is GetUserChan...
  constant GET_USER_CHANNELS_REQUEST_TYPE (line 7594) | const GET_USER_CHANNELS_REQUEST_TYPE = 'GetUserChannelsRequest';
  function isGetUserChannelsResponse (line 7599) | function isGetUserChannelsResponse(value: any): value is GetUserChannels...
  function isValidGetUserChannelsResponse (line 7606) | function isValidGetUserChannelsResponse(value: any): value is GetUserCha...
  constant GET_USER_CHANNELS_RESPONSE_TYPE (line 7615) | const GET_USER_CHANNELS_RESPONSE_TYPE = 'GetUserChannelsResponse';
  function isHeartbeatAcknowledgementRequest (line 7620) | function isHeartbeatAcknowledgementRequest(value: any): value is Heartbe...
  function isValidHeartbeatAcknowledgementRequest (line 7627) | function isValidHeartbeatAcknowledgementRequest(value: any): value is He...
  constant HEARTBEAT_ACKNOWLEDGEMENT_REQUEST_TYPE (line 7636) | const HEARTBEAT_ACKNOWLEDGEMENT_REQUEST_TYPE = 'HeartbeatAcknowledgement...
  function isHeartbeatEvent (line 7641) | function isHeartbeatEvent(value: any): value is HeartbeatEvent {
  function isValidHeartbeatEvent (line 7648) | function isValidHeartbeatEvent(value: any): value is HeartbeatEvent {
  constant HEARTBEAT_EVENT_TYPE (line 7657) | const HEARTBEAT_EVENT_TYPE = 'HeartbeatEvent';
  function isIntentEvent (line 7662) | function isIntentEvent(value: any): value is IntentEvent {
  function isValidIntentEvent (line 7669) | function isValidIntentEvent(value: any): value is IntentEvent {
  constant INTENT_EVENT_TYPE (line 7678) | const INTENT_EVENT_TYPE = 'IntentEvent';
  function isIntentListenerUnsubscribeRequest (line 7683) | function isIntentListenerUnsubscribeRequest(value: any): value is Intent...
  function isValidIntentListenerUnsubscribeRequest (line 7690) | function isValidIntentListenerUnsubscribeRequest(value: any): value is I...
  constant INTENT_LISTENER_UNSUBSCRIBE_REQUEST_TYPE (line 7699) | const INTENT_LISTENER_UNSUBSCRIBE_REQUEST_TYPE = 'IntentListenerUnsubscr...
  function isIntentListenerUnsubscribeResponse (line 7704) | function isIntentListenerUnsubscribeResponse(value: any): value is Inten...
  function isValidIntentListenerUnsubscribeResponse (line 7711) | function isValidIntentListenerUnsubscribeResponse(value: any): value is ...
  constant INTENT_LISTENER_UNSUBSCRIBE_RESPONSE_TYPE (line 7720) | const INTENT_LISTENER_UNSUBSCRIBE_RESPONSE_TYPE = 'IntentListenerUnsubsc...
  function isIntentResultRequest (line 7725) | function isIntentResultRequest(value: any): value is IntentResultRequest {
  function isValidIntentResultRequest (line 7732) | function isValidIntentResultRequest(value: any): value is IntentResultRe...
  constant INTENT_RESULT_REQUEST_TYPE (line 7741) | const INTENT_RESULT_REQUEST_TYPE = 'IntentResultRequest';
  function isIntentResultResponse (line 7746) | function isIntentResultResponse(value: any): value is IntentResultRespon...
  function isValidIntentResultResponse (line 7753) | function isValidIntentResultResponse(value: any): value is IntentResultR...
  constant INTENT_RESULT_RESPONSE_TYPE (line 7762) | const INTENT_RESULT_RESPONSE_TYPE = 'IntentResultResponse';
  function isJoinUserChannelRequest (line 7767) | function isJoinUserChannelRequest(value: any): value is JoinUserChannelR...
  function isValidJoinUserChannelRequest (line 7774) | function isValidJoinUserChannelRequest(value: any): value is JoinUserCha...
  constant JOIN_USER_CHANNEL_REQUEST_TYPE (line 7783) | const JOIN_USER_CHANNEL_REQUEST_TYPE = 'JoinUserChannelRequest';
  function isJoinUserChannelResponse (line 7788) | function isJoinUserChannelResponse(value: any): value is JoinUserChannel...
  function isValidJoinUserChannelResponse (line 7795) | function isValidJoinUserChannelResponse(value: any): value is JoinUserCh...
  constant JOIN_USER_CHANNEL_RESPONSE_TYPE (line 7804) | const JOIN_USER_CHANNEL_RESPONSE_TYPE = 'JoinUserChannelResponse';
  function isLeaveCurrentChannelRequest (line 7809) | function isLeaveCurrentChannelRequest(value: any): value is LeaveCurrent...
  function isValidLeaveCurrentChannelRequest (line 7816) | function isValidLeaveCurrentChannelRequest(value: any): value is LeaveCu...
  constant LEAVE_CURRENT_CHANNEL_REQUEST_TYPE (line 7825) | const LEAVE_CURRENT_CHANNEL_REQUEST_TYPE = 'LeaveCurrentChannelRequest';
  function isLeaveCurrentChannelResponse (line 7830) | function isLeaveCurrentChannelResponse(value: any): value is LeaveCurren...
  function isValidLeaveCurrentChannelResponse (line 7837) | function isValidLeaveCurrentChannelResponse(value: any): value is LeaveC...
  constant LEAVE_CURRENT_CHANNEL_RESPONSE_TYPE (line 7846) | const LEAVE_CURRENT_CHANNEL_RESPONSE_TYPE = 'LeaveCurrentChannelResponse';
  function isOpenRequest (line 7851) | function isOpenRequest(value: any): value is OpenRequest {
  function isValidOpenRequest (line 7858) | function isValidOpenRequest(value: any): value is OpenRequest {
  constant OPEN_REQUEST_TYPE (line 7867) | const OPEN_REQUEST_TYPE = 'OpenRequest';
  function isOpenResponse (line 7872) | function isOpenResponse(value: any): value is OpenResponse {
  function isValidOpenResponse (line 7879) | function isValidOpenResponse(value: any): value is OpenResponse {
  constant OPEN_RESPONSE_TYPE (line 7888) | const OPEN_RESPONSE_TYPE = 'OpenResponse';
  function isPrivateChannelAddEventListenerRequest (line 7893) | function isPrivateChannelAddEventListenerRequest(value: any): value is P...
  function isValidPrivateChannelAddEventListenerRequest (line 7900) | function isValidPrivateChannelAddEventListenerRequest(
  constant PRIVATE_CHANNEL_ADD_EVENT_LISTENER_REQUEST_TYPE (line 7911) | const PRIVATE_CHANNEL_ADD_EVENT_LISTENER_REQUEST_TYPE = 'PrivateChannelA...
  function isPrivateChannelAddEventListenerResponse (line 7916) | function isPrivateChannelAddEventListenerResponse(value: any): value is ...
  function isValidPrivateChannelAddEventListenerResponse (line 7923) | function isValidPrivateChannelAddEventListenerResponse(
  constant PRIVATE_CHANNEL_ADD_EVENT_LISTENER_RESPONSE_TYPE (line 7934) | const PRIVATE_CHANNEL_ADD_EVENT_LISTENER_RESPONSE_TYPE = 'PrivateChannel...
  function isPrivateChannelDisconnectRequest (line 7939) | function isPrivateChannelDisconnectRequest(value: any): value is Private...
  function isValidPrivateChannelDisconnectRequest (line 7946) | function isValidPrivateChannelDisconnectRequest(value: any): value is Pr...
  constant PRIVATE_CHANNEL_DISCONNECT_REQUEST_TYPE (line 7955) | const PRIVATE_CHANNEL_DISCONNECT_REQUEST_TYPE = 'PrivateChannelDisconnec...
  function isPrivateChannelDisconnectResponse (line 7960) | function isPrivateChannelDisconnectResponse(value: any): value is Privat...
  function isValidPrivateChannelDisconnectResponse (line 7967) | function isValidPrivateChannelDisconnectResponse(value: any): value is P...
  constant PRIVATE_CHANNEL_DISCONNECT_RESPONSE_TYPE (line 7976) | const PRIVATE_CHANNEL_DISCONNECT_RESPONSE_TYPE = 'PrivateChannelDisconne...
  function isPrivateChannelOnAddContextListenerEvent (line 7981) | function isPrivateChannelOnAddContextListenerEvent(
  function isValidPrivateChannelOnAddContextListenerEvent (line 7990) | function isValidPrivateChannelOnAddContextListenerEvent(
  constant PRIVATE_CHANNEL_ON_ADD_CONTEXT_LISTENER_EVENT_TYPE (line 8001) | const PRIVATE_CHANNEL_ON_ADD_CONTEXT_LISTENER_EVENT_TYPE = 'PrivateChann...
  function isPrivateChannelOnDisconnectEvent (line 8006) | function isPrivateChannelOnDisconnectEvent(value: any): value is Private...
  function isValidPrivateChannelOnDisconnectEvent (line 8013) | function isValidPrivateChannelOnDisconnectEvent(value: any): value is Pr...
  constant PRIVATE_CHANNEL_ON_DISCONNECT_EVENT_TYPE (line 8022) | const PRIVATE_CHANNEL_ON_DISCONNECT_EVENT_TYPE = 'PrivateChannelOnDiscon...
  function isPrivateChannelOnUnsubscribeEvent (line 8027) | function isPrivateChannelOnUnsubscribeEvent(value: any): value is Privat...
  function isValidPrivateChannelOnUnsubscribeEvent (line 8034) | function isValidPrivateChannelOnUnsubscribeEvent(value: any): value is P...
  constant PRIVATE_CHANNEL_ON_UNSUBSCRIBE_EVENT_TYPE (line 8043) | const PRIVATE_CHANNEL_ON_UNSUBSCRIBE_EVENT_TYPE = 'PrivateChannelOnUnsub...
  function isPrivateChannelUnsubscribeEventListenerRequest (line 8048) | function isPrivateChannelUnsubscribeEventListenerRequest(
  function isValidPrivateChannelUnsubscribeEventListenerRequest (line 8057) | function isValidPrivateChannelUnsubscribeEventListenerRequest(
  constant PRIVATE_CHANNEL_UNSUBSCRIBE_EVENT_LISTENER_REQUEST_TYPE (line 8068) | const PRIVATE_CHANNEL_UNSUBSCRIBE_EVENT_LISTENER_REQUEST_TYPE = 'Private...
  function isPrivateChannelUnsubscribeEventListenerResponse (line 8073) | function isPrivateChannelUnsubscribeEventListenerResponse(
  function isValidPrivateChannelUnsubscribeEventListenerResponse (line 8082) | function isValidPrivateChannelUnsubscribeEventListenerResponse(
  constant PRIVATE_CHANNEL_UNSUBSCRIBE_EVENT_LISTENER_RESPONSE_TYPE (line 8093) | const PRIVATE_CHANNEL_UNSUBSCRIBE_EVENT_LISTENER_RESPONSE_TYPE =
  function isRaiseIntentForContextRequest (line 8099) | function isRaiseIntentForContextRequest(value: any): value is RaiseInten...
  function isValidRaiseIntentForContextRequest (line 8106) | function isValidRaiseIntentForContextRequest(value: any): value is Raise...
  constant RAISE_INTENT_FOR_CONTEXT_REQUEST_TYPE (line 8115) | const RAISE_INTENT_FOR_CONTEXT_REQUEST_TYPE = 'RaiseIntentForContextRequ...
  function isRaiseIntentForContextResponse (line 8120) | function isRaiseIntentForContextResponse(value: any): value is RaiseInte...
  function isValidRaiseIntentForContextResponse (line 8127) | function isValidRaiseIntentForContextResponse(value: any): value is Rais...
  constant RAISE_INTENT_FOR_CONTEXT_RESPONSE_TYPE (line 8136) | const RAISE_INTENT_FOR_CONTEXT_RESPONSE_TYPE = 'RaiseIntentForContextRes...
  function isRaiseIntentRequest (line 8141) | function isRaiseIntentRequest(value: any): value is RaiseIntentRequest {
  function isValidRaiseIntentRequest (line 8148) | function isValidRaiseIntentRequest(value: any): value is RaiseIntentRequ...
  constant RAISE_INTENT_REQUEST_TYPE (line 8157) | const RAISE_INTENT_REQUEST_TYPE = 'RaiseIntentRequest';
  function isRaiseIntentResponse (line 8162) | function isRaiseIntentResponse(value: any): value is RaiseIntentResponse {
  function isValidRaiseIntentResponse (line 8169) | function isValidRaiseIntentResponse(value: any): value is RaiseIntentRes...
  constant RAISE_INTENT_RESPONSE_TYPE (line 8178) | const RAISE_INTENT_RESPONSE_TYPE = 'RaiseIntentResponse';
  function isRaiseIntentResultResponse (line 8183) | function isRaiseIntentResultResponse(value: any): value is RaiseIntentRe...
  function isValidRaiseIntentResultResponse (line 8190) | function isValidRaiseIntentResultResponse(value: any): value is RaiseInt...
  constant RAISE_INTENT_RESULT_RESPONSE_TYPE (line 8199) | const RAISE_INTENT_RESULT_RESPONSE_TYPE = 'RaiseIntentResultResponse';

FILE: packages/fdc3-schema/generated/bridging/BridgingTypes.ts
  type AgentErrorResponseMessage (line 79) | interface AgentErrorResponseMessage {
  type AgentResponseMetadata (line 95) | interface AgentResponseMetadata {
  type ErrorResponseMessagePayload (line 104) | interface ErrorResponseMessagePayload {
  type ResponseErrorDetail (line 121) | type ResponseErrorDetail =
  type ResponseMessageType (line 151) | type ResponseMessageType =
  type AgentRequestMessage (line 163) | interface AgentRequestMessage {
  type AgentRequestMetadata (line 179) | interface AgentRequestMetadata {
  type BridgeParticipantIdentifier (line 243) | interface BridgeParticipantIdentifier {
  type SourceIdentifier (line 305) | interface SourceIdentifier {
  type RequestMessageType (line 331) | type RequestMessageType =
  type AgentResponseMessage (line 349) | interface AgentResponseMessage {
  type BridgeErrorResponseMessage (line 366) | interface BridgeErrorResponseMessage {
  type BridgeErrorResponseMessageMeta (line 383) | interface BridgeErrorResponseMessageMeta {
  type DesktopAgentIdentifier (line 409) | interface DesktopAgentIdentifier {
  type ResponseErrorMessagePayload (line 422) | interface ResponseErrorMessagePayload {
  type BridgeRequestMessage (line 430) | interface BridgeRequestMessage {
  type BridgeRequestMetadata (line 446) | interface BridgeRequestMetadata {
  type BridgeResponseMessage (line 467) | interface BridgeResponseMessage {
  type BridgeResponseMessageMeta (line 483) | interface BridgeResponseMessageMeta {
  type BroadcastAgentRequest (line 497) | interface BroadcastAgentRequest {
  type BroadcastAgentRequestMeta (line 513) | interface BroadcastAgentRequestMeta {
  type SourceObject (line 563) | interface SourceObject {
  type BroadcastAgentRequestPayload (line 588) | interface BroadcastAgentRequestPayload {
  type Context (line 616) | interface Context {
  type BroadcastBridgeRequest (line 672) | interface BroadcastBridgeRequest {
  type BroadcastBridgeRequestMeta (line 688) | interface BroadcastBridgeRequestMeta {
  type MetaSource (line 747) | interface MetaSource {
  type BroadcastBridgeRequestPayload (line 772) | interface BroadcastBridgeRequestPayload {
  type ConnectionStepMessage (line 787) | interface ConnectionStepMessage {
  type ConnectionStepMetadata (line 802) | interface ConnectionStepMetadata {
  type ConnectionStepMessageType (line 811) | type ConnectionStepMessageType = 'hello' | 'handshake' | 'authentication...
  type ConnectionStep2Hello (line 820) | interface ConnectionStep2Hello {
  type ConnectionStep2HelloMeta (line 835) | interface ConnectionStep2HelloMeta {
  type ConnectionStep2HelloPayload (line 842) | interface ConnectionStep2HelloPayload {
  type ConnectionStep3Handshake (line 873) | interface ConnectionStep3Handshake {
  type ConnectionStep3HandshakeMeta (line 888) | interface ConnectionStep3HandshakeMeta {
  type ConnectionStep3HandshakePayload (line 896) | interface ConnectionStep3HandshakePayload {
  type ConnectingAgentImplementationMetadata (line 919) | interface ConnectingAgentImplementationMetadata {
  type OptionalFeatures (line 945) | interface OptionalFeatures {
  type ConnectionStep4AuthenticationFailed (line 974) | interface ConnectionStep4AuthenticationFailed {
  type ConnectionStep4AuthenticationFailedMeta (line 989) | interface ConnectionStep4AuthenticationFailedMeta {
  type ConnectionStep4AuthenticationFailedPayload (line 998) | interface ConnectionStep4AuthenticationFailedPayload {
  type ConnectionStep6ConnectedAgentsUpdate (line 1014) | interface ConnectionStep6ConnectedAgentsUpdate {
  type ConnectionStep6ConnectedAgentsUpdateMeta (line 1029) | interface ConnectionStep6ConnectedAgentsUpdateMeta {
  type ConnectionStep6ConnectedAgentsUpdatePayload (line 1038) | interface ConnectionStep6ConnectedAgentsUpdatePayload {
  type DesktopAgentImplementationMetadata (line 1064) | interface DesktopAgentImplementationMetadata {
  type FindInstancesAgentErrorResponse (line 1101) | interface FindInstancesAgentErrorResponse {
  type FindInstancesAgentErrorResponseMeta (line 1117) | interface FindInstancesAgentErrorResponseMeta {
  type PayloadClass (line 1126) | interface PayloadClass {
  type FindInstancesErrors (line 1149) | type FindInstancesErrors =
  type FindInstancesAgentRequest (line 1182) | interface FindInstancesAgentRequest {
  type FindInstancesAgentRequestMeta (line 1198) | interface FindInstancesAgentRequestMeta {
  type DestinationObject (line 1262) | interface DestinationObject {
  type FindInstancesAgentRequestPayload (line 1287) | interface FindInstancesAgentRequestPayload {
  type AppIdentifier (line 1308) | interface AppIdentifier {
  type FindInstancesAgentResponse (line 1342) | interface FindInstancesAgentResponse {
  type FindInstancesAgentResponsePayload (line 1362) | interface FindInstancesAgentResponsePayload {
  type AppMetadata (line 1378) | interface AppMetadata {
  type Icon (line 1444) | interface Icon {
  type Image (line 1463) | interface Image {
  type FindInstancesBridgeErrorResponse (line 1488) | interface FindInstancesBridgeErrorResponse {
  type FindInstancesBridgeErrorResponseMeta (line 1505) | interface FindInstancesBridgeErrorResponseMeta {
  type MessagePayload (line 1517) | interface MessagePayload {
  type FindInstancesBridgeRequest (line 1526) | interface FindInstancesBridgeRequest {
  type FindInstancesBridgeRequestMeta (line 1542) | interface FindInstancesBridgeRequestMeta {
  type MetaSourceObject (line 1613) | interface MetaSourceObject {
  type FindInstancesBridgeRequestPayload (line 1638) | interface FindInstancesBridgeRequestPayload {
  type FindInstancesBridgeResponse (line 1648) | interface FindInstancesBridgeResponse {
  type FindInstancesBridgeResponsePayload (line 1668) | interface FindInstancesBridgeResponsePayload {
  type FindIntentAgentErrorResponse (line 1678) | interface FindIntentAgentErrorResponse {
  type FindIntentAgentErrorResponseMeta (line 1694) | interface FindIntentAgentErrorResponseMeta {
  type FindIntentAgentErrorResponsePayload (line 1703) | interface FindIntentAgentErrorResponsePayload {
  type FindIntentAgentRequest (line 1722) | interface FindIntentAgentRequest {
  type FindIntentAgentRequestMeta (line 1738) | interface FindIntentAgentRequestMeta {
  type FindIntentAgentRequestPayload (line 1757) | interface FindIntentAgentRequestPayload {
  type FindIntentAgentResponse (line 1778) | interface FindIntentAgentResponse {
  type FindIntentAgentResponseMeta (line 1794) | interface FindIntentAgentResponseMeta {
  type FindIntentAgentResponsePayload (line 1803) | interface FindIntentAgentResponsePayload {
  type AppIntent (line 1810) | interface AppIntent {
  type IntentMetadata (line 1826) | interface IntentMetadata {
  type FindIntentBridgeErrorResponse (line 1843) | interface FindIntentBridgeErrorResponse {
  type FindIntentBridgeErrorResponseMeta (line 1860) | interface FindIntentBridgeErrorResponseMeta {
  type FindIntentBridgeErrorResponsePayload (line 1872) | interface FindIntentBridgeErrorResponsePayload {
  type FindIntentBridgeRequest (line 1881) | interface FindIntentBridgeRequest {
  type FindIntentBridgeRequestMeta (line 1897) | interface FindIntentBridgeRequestMeta {
  type FindIntentBridgeRequestPayload (line 1917) | interface FindIntentBridgeRequestPayload {
  type FindIntentBridgeResponse (line 1929) | interface FindIntentBridgeResponse {
  type FindIntentBridgeResponseMeta (line 1945) | interface FindIntentBridgeResponseMeta {
  type FindIntentBridgeResponsePayload (line 1957) | interface FindIntentBridgeResponsePayload {
  type FindIntentsByContextAgentErrorResponse (line 1967) | interface FindIntentsByContextAgentErrorResponse {
  type FindIntentsByContextAgentErrorResponseMeta (line 1983) | interface FindIntentsByContextAgentErrorResponseMeta {
  type FindIntentsByContextAgentErrorResponsePayload (line 1992) | interface FindIntentsByContextAgentErrorResponsePayload {
  type FindIntentsByContextAgentRequest (line 2012) | interface FindIntentsByContextAgentRequest {
  type FindIntentsByContextAgentRequestMeta (line 2028) | interface FindIntentsByContextAgentRequestMeta {
  type FindIntentsByContextAgentRequestPayload (line 2047) | interface FindIntentsByContextAgentRequestPayload {
  type FindIntentsByContextAgentResponse (line 2067) | interface FindIntentsByContextAgentResponse {
  type FindIntentsByContextAgentResponseMeta (line 2083) | interface FindIntentsByContextAgentResponseMeta {
  type FindIntentsByContextAgentResponsePayload (line 2092) | interface FindIntentsByContextAgentResponsePayload {
  type FindIntentsByContextBridgeErrorResponse (line 2102) | interface FindIntentsByContextBridgeErrorResponse {
  type FindIntentsByContextBridgeErrorResponseMeta (line 2119) | interface FindIntentsByContextBridgeErrorResponseMeta {
  type FindIntentsByContextBridgeErrorResponsePayload (line 2131) | interface FindIntentsByContextBridgeErrorResponsePayload {
  type FindIntentsByContextBridgeRequest (line 2141) | interface FindIntentsByContextBridgeRequest {
  type FindIntentsByContextBridgeRequestMeta (line 2157) | interface FindIntentsByContextBridgeRequestMeta {
  type FindIntentsByContextBridgeRequestPayload (line 2177) | interface FindIntentsByContextBridgeRequestPayload {
  type FindIntentsByContextBridgeResponse (line 2188) | interface FindIntentsByContextBridgeResponse {
  type FindIntentsByContextBridgeResponseMeta (line 2204) | interface FindIntentsByContextBridgeResponseMeta {
  type FindIntentsByContextBridgeResponsePayload (line 2216) | interface FindIntentsByContextBridgeResponsePayload {
  type GetAppMetadataAgentErrorResponse (line 2226) | interface GetAppMetadataAgentErrorResponse {
  type GetAppMetadataAgentErrorResponseMeta (line 2242) | interface GetAppMetadataAgentErrorResponseMeta {
  type GetAppMetadataAgentErrorResponsePayload (line 2251) | interface GetAppMetadataAgentErrorResponsePayload {
  type GetAppMetadataAgentRequest (line 2270) | interface GetAppMetadataAgentRequest {
  type GetAppMetadataAgentRequestMeta (line 2286) | interface GetAppMetadataAgentRequestMeta {
  type GetAppMetadataAgentRequestPayload (line 2305) | interface GetAppMetadataAgentRequestPayload {
  type AppObject (line 2346) | interface AppObject {
  type GetAppMetadataAgentResponse (line 2383) | interface GetAppMetadataAgentResponse {
  type GetAppMetadataAgentResponseMeta (line 2399) | interface GetAppMetadataAgentResponseMeta {
  type GetAppMetadataAgentResponsePayload (line 2408) | interface GetAppMetadataAgentResponsePayload {
  type GetAppMetadataBridgeErrorResponse (line 2418) | interface GetAppMetadataBridgeErrorResponse {
  type GetAppMetadataBridgeErrorResponseMeta (line 2435) | interface GetAppMetadataBridgeErrorResponseMeta {
  type GetAppMetadataBridgeErrorResponsePayload (line 2447) | interface GetAppMetadataBridgeErrorResponsePayload {
  type GetAppMetadataBridgeRequest (line 2456) | interface GetAppMetadataBridgeRequest {
  type GetAppMetadataBridgeRequestMeta (line 2472) | interface GetAppMetadataBridgeRequestMeta {
  type GetAppMetadataBridgeRequestPayload (line 2492) | interface GetAppMetadataBridgeRequestPayload {
  type GetAppMetadataBridgeResponse (line 2502) | interface GetAppMetadataBridgeResponse {
  type GetAppMetadataBridgeResponseMeta (line 2518) | interface GetAppMetadataBridgeResponseMeta {
  type GetAppMetadataBridgeResponsePayload (line 2530) | interface GetAppMetadataBridgeResponsePayload {
  type OpenAgentErrorResponse (line 2540) | interface OpenAgentErrorResponse {
  type OpenAgentErrorResponseMeta (line 2556) | interface OpenAgentErrorResponseMeta {
  type OpenAgentErrorResponsePayload (line 2565) | interface OpenAgentErrorResponsePayload {
  type OpenErrorResponsePayload (line 2581) | type OpenErrorResponsePayload =
  type OpenAgentRequest (line 2610) | interface OpenAgentRequest {
  type OpenAgentRequestMeta (line 2626) | interface OpenAgentRequestMeta {
  type OpenAgentRequestPayload (line 2645) | interface OpenAgentRequestPayload {
  type AppToOpen (line 2689) | interface AppToOpen {
  type OpenAgentResponse (line 2726) | interface OpenAgentResponse {
  type OpenAgentResponseMeta (line 2742) | interface OpenAgentResponseMeta {
  type OpenAgentResponsePayload (line 2751) | interface OpenAgentResponsePayload {
  type OpenBridgeErrorResponse (line 2761) | interface OpenBridgeErrorResponse {
  type OpenBridgeErrorResponseMeta (line 2778) | interface OpenBridgeErrorResponseMeta {
  type OpenBridgeErrorResponsePayload (line 2790) | interface OpenBridgeErrorResponsePayload {
  type OpenBridgeRequest (line 2799) | interface OpenBridgeRequest {
  type OpenBridgeRequestMeta (line 2815) | interface OpenBridgeRequestMeta {
  type OpenBridgeRequestPayload (line 2835) | interface OpenBridgeRequestPayload {
  type OpenBridgeResponse (line 2849) | interface OpenBridgeResponse {
  type OpenBridgeResponseMeta (line 2865) | interface OpenBridgeResponseMeta {
  type OpenBridgeResponsePayload (line 2877) | interface OpenBridgeResponsePayload {
  type PrivateChannelBroadcastAgentRequest (line 2886) | interface PrivateChannelBroadcastAgentRequest {
  type PrivateChannelBroadcastAgentRequestMeta (line 2902) | interface PrivateChannelBroadcastAgentRequestMeta {
  type MetaDestination (line 2966) | interface MetaDestination {
  type PrivateChannelBroadcastAgentRequestPayload (line 2991) | interface PrivateChannelBroadcastAgentRequestPayload {
  type PrivateChannelBroadcastBridgeRequest (line 3017) | interface PrivateChannelBroadcastBridgeRequest {
  type PrivateChannelBroadcastBridgeRequestMeta (line 3033) | interface PrivateChannelBroadcastBridgeRequestMeta {
  type PrivateChannelBroadcastBridgeRequestPayload (line 3053) | interface PrivateChannelBroadcastBridgeRequestPayload {
  type PrivateChannelEventListenerAddedAgentRequest (line 3069) | interface PrivateChannelEventListenerAddedAgentRequest {
  type PrivateChannelEventListenerAddedAgentRequestMeta (line 3085) | interface PrivateChannelEventListenerAddedAgentRequestMeta {
  type PrivateChannelEventListenerAddedAgentRequestPayload (line 3104) | interface PrivateChannelEventListenerAddedAgentRequestPayload {
  type PrivateChannelEventType (line 3115) | type PrivateChannelEventType = 'addContextListener' | 'unsubscribe' | 'd...
  type PrivateChannelEventListenerAddedBridgeRequest (line 3132) | interface PrivateChannelEventListenerAddedBridgeRequest {
  type PrivateChannelEventListenerAddedBridgeRequestMeta (line 3148) | interface PrivateChannelEventListenerAddedBridgeRequestMeta {
  type PrivateChannelEventListenerAddedBridgeRequestPayload (line 3168) | interface PrivateChannelEventListenerAddedBridgeRequestPayload {
  type PrivateChannelEventListenerRemovedAgentRequest (line 3181) | interface PrivateChannelEventListenerRemovedAgentRequest {
  type PrivateChannelEventListenerRemovedAgentRequestMeta (line 3197) | interface PrivateChannelEventListenerRemovedAgentRequestMeta {
  type PrivateChannelEventListenerRemovedAgentRequestPayload (line 3216) | interface PrivateChannelEventListenerRemovedAgentRequestPayload {
  type PrivateChannelEventListenerRemovedBridgeRequest (line 3239) | interface PrivateChannelEventListenerRemovedBridgeRequest {
  type PrivateChannelEventListenerRemovedBridgeRequestMeta (line 3255) | interface PrivateChannelEventListenerRemovedBridgeRequestMeta {
  type PrivateChannelEventListenerRemovedBridgeRequestPayload (line 3275) | interface PrivateChannelEventListenerRemovedBridgeRequestPayload {
  type PrivateChannelOnAddContextListenerAgentRequest (line 3288) | interface PrivateChannelOnAddContextListenerAgentRequest {
  type PrivateChannelOnAddContextListenerAgentRequestMeta (line 3304) | interface PrivateChannelOnAddContextListenerAgentRequestMeta {
  type PrivateChannelOnAddContextListenerAgentRequestPayload (line 3323) | interface PrivateChannelOnAddContextListenerAgentRequestPayload {
  type PrivateChannelOnAddContextListenerBridgeRequest (line 3349) | interface PrivateChannelOnAddContextListenerBridgeRequest {
  type PrivateChannelOnAddContextListenerBridgeRequestMeta (line 3365) | interface PrivateChannelOnAddContextListenerBridgeRequestMeta {
  type PrivateChannelOnAddContextListenerBridgeRequestPayload (line 3385) | interface PrivateChannelOnAddContextListenerBridgeRequestPayload {
  type PrivateChannelOnDisconnectAgentRequest (line 3401) | interface PrivateChannelOnDisconnectAgentRequest {
  type PrivateChannelOnDisconnectAgentRequestMeta (line 3417) | interface PrivateChannelOnDisconnectAgentRequestMeta {
  type PrivateChannelOnDisconnectAgentRequestPayload (line 3436) | interface PrivateChannelOnDisconnectAgentRequestPayload {
  type PrivateChannelOnDisconnectBridgeRequest (line 3458) | interface PrivateChannelOnDisconnectBridgeRequest {
  type PrivateChannelOnDisconnectBridgeRequestMeta (line 3474) | interface PrivateChannelOnDisconnectBridgeRequestMeta {
  type PrivateChannelOnDisconnectBridgeRequestPayload (line 3494) | interface PrivateChannelOnDisconnectBridgeRequestPayload {
  type PrivateChannelOnUnsubscribeAgentRequest (line 3506) | interface PrivateChannelOnUnsubscribeAgentRequest {
  type PrivateChannelOnUnsubscribeAgentRequestMeta (line 3522) | interface PrivateChannelOnUnsubscribeAgentRequestMeta {
  type PrivateChannelOnUnsubscribeAgentRequestPayload (line 3541) | interface PrivateChannelOnUnsubscribeAgentRequestPayload {
  type PrivateChannelOnUnsubscribeBridgeRequest (line 3568) | interface PrivateChannelOnUnsubscribeBridgeRequest {
  type ERequestMetadata (line 3584) | interface ERequestMetadata {
  type PrivateChannelOnUnsubscribeBridgeRequestPayload (line 3604) | interface PrivateChannelOnUnsubscribeBridgeRequestPayload {
  type RaiseIntentAgentErrorResponse (line 3622) | interface RaiseIntentAgentErrorResponse {
  type RaiseIntentAgentErrorResponseMeta (line 3638) | interface RaiseIntentAgentErrorResponseMeta {
  type RaiseIntentAgentErrorResponsePayload (line 3649) | interface RaiseIntentAgentErrorResponsePayload {
  type RaiseIntentAgentRequest (line 3671) | interface RaiseIntentAgentRequest {
  type RaiseIntentAgentRequestMeta (line 3687) | interface RaiseIntentAgentRequestMeta {
  type RaiseIntentAgentRequestPayload (line 3706) | interface RaiseIntentAgentRequestPayload {
  type AppDestinationIdentifier (line 3749) | interface AppDestinationIdentifier {
  type RaiseIntentAgentResponse (line 3786) | interface RaiseIntentAgentResponse {
  type RaiseIntentAgentResponseMeta (line 3802) | interface RaiseIntentAgentResponseMeta {
  type RaiseIntentAgentResponsePayload (line 3811) | interface RaiseIntentAgentResponsePayload {
  type IntentResolution (line 3846) | interface IntentResolution {
  type RaiseIntentBridgeErrorResponse (line 3866) | interface RaiseIntentBridgeErrorResponse {
  type RaiseIntentBridgeErrorResponseMeta (line 3883) | interface RaiseIntentBridgeErrorResponseMeta {
  type RaiseIntentBridgeErrorResponsePayload (line 3897) | interface RaiseIntentBridgeErrorResponsePayload {
  type RaiseIntentBridgeRequest (line 3909) | interface RaiseIntentBridgeRequest {
  type RaiseIntentBridgeRequestMeta (line 3925) | interface RaiseIntentBridgeRequestMeta {
  type RaiseIntentBridgeRequestPayload (line 3945) | interface RaiseIntentBridgeRequestPayload {
  type RaiseIntentBridgeResponse (line 3957) | interface RaiseIntentBridgeResponse {
  type RaiseIntentBridgeResponseMeta (line 3973) | interface RaiseIntentBridgeResponseMeta {
  type RaiseIntentBridgeResponsePayload (line 3985) | interface RaiseIntentBridgeResponsePayload {
  type RaiseIntentResultAgentErrorResponse (line 3999) | interface RaiseIntentResultAgentErrorResponse {
  type RaiseIntentResultAgentErrorResponseMeta (line 4015) | interface RaiseIntentResultAgentErrorResponseMeta {
  type RaiseIntentResultAgentErrorResponsePayload (line 4024) | interface RaiseIntentResultAgentErrorResponsePayload {
  type RaiseIntentResultErrorMessage (line 4040) | type RaiseIntentResultErrorMessage =
  type RaiseIntentResultAgentResponse (line 4064) | interface RaiseIntentResultAgentResponse {
  type RaiseIntentResultAgentResponseMeta (line 4080) | interface RaiseIntentResultAgentResponseMeta {
  type RaiseIntentResultAgentResponsePayload (line 4089) | interface RaiseIntentResultAgentResponsePayload {
  type IntentResult (line 4093) | interface IntentResult {
  type Channel (line 4112) | interface Channel {
  type DisplayMetadata (line 4141) | interface DisplayMetadata {
  type Type (line 4161) | type Type = 'app' | 'private' | 'user';
  type RaiseIntentResultBridgeErrorResponse (line 4170) | interface RaiseIntentResultBridgeErrorResponse {
  type RaiseIntentResultBridgeErrorResponseMeta (line 4187) | interface RaiseIntentResultBridgeErrorResponseMeta {
  type RaiseIntentResultBridgeErrorResponsePayload (line 4199) | interface RaiseIntentResultBridgeErrorResponsePayload {
  type RaiseIntentResultBridgeResponse (line 4209) | interface RaiseIntentResultBridgeResponse {
  type RaiseIntentResultBridgeResponseMeta (line 4225) | interface RaiseIntentResultBridgeResponseMeta {
  type RaiseIntentResultBridgeResponsePayload (line 4237) | interface RaiseIntentResultBridgeResponsePayload {
  class Convert (line 4243) | class Convert {
    method toAgentErrorResponseMessage (line 4244) | public static toAgentErrorResponseMessage(json: string): AgentErrorRes...
    method agentErrorResponseMessageToJson (line 4248) | public static agentErrorResponseMessageToJson(value: AgentErrorRespons...
    method toAgentRequestMessage (line 4252) | public static toAgentRequestMessage(json: string): AgentRequestMessage {
    method agentRequestMessageToJson (line 4256) | public static agentRequestMessageToJson(value: AgentRequestMessage): s...
    method toAgentResponseMessage (line 4260) | public static toAgentResponseMessage(json: string): AgentResponseMessa...
    method agentResponseMessageToJson (line 4264) | public static agentResponseMessageToJson(value: AgentResponseMessage):...
    method toBridgeErrorResponseMessage (line 4268) | public static toBridgeErrorResponseMessage(json: string): BridgeErrorR...
    method bridgeErrorResponseMessageToJson (line 4272) | public static bridgeErrorResponseMessageToJson(value: BridgeErrorRespo...
    method toBridgeRequestMessage (line 4276) | public static toBridgeRequestMessage(json: string): BridgeRequestMessa...
    method bridgeRequestMessageToJson (line 4280) | public static bridgeRequestMessageToJson(value: BridgeRequestMessage):...
    method toBridgeResponseMessage (line 4284) | public static toBridgeResponseMessage(json: string): BridgeResponseMes...
    method bridgeResponseMessageToJson (line 4288) | public static bridgeResponseMessageToJson(value: BridgeResponseMessage...
    method toBroadcastAgentRequest (line 4292) | public static toBroadcastAgentRequest(json: string): BroadcastAgentReq...
    method broadcastAgentRequestToJson (line 4296) | public static broadcastAgentRequestToJson(value: BroadcastAgentRequest...
    method toBroadcastBridgeRequest (line 4300) | public static toBroadcastBridgeRequest(json: string): BroadcastBridgeR...
    method broadcastBridgeRequestToJson (line 4304) | public static broadcastBridgeRequestToJson(value: BroadcastBridgeReque...
    method toBridgeCommonDefinitions (line 4308) | public static toBridgeCommonDefinitions(json: string): { [key: string]...
    method bridgeCommonDefinitionsToJson (line 4312) | public static bridgeCommonDefinitionsToJson(value: { [key: string]: an...
    method toConnectionStepMessage (line 4316) | public static toConnectionStepMessage(json: string): ConnectionStepMes...
    method connectionStepMessageToJson (line 4320) | public static connectionStepMessageToJson(value: ConnectionStepMessage...
    method toConnectionStep2Hello (line 4324) | public static toConnectionStep2Hello(json: string): ConnectionStep2Hel...
    method connectionStep2HelloToJson (line 4328) | public static connectionStep2HelloToJson(value: ConnectionStep2Hello):...
    method toConnectionStep3Handshake (line 4332) | public static toConnectionStep3Handshake(json: string): ConnectionStep...
    method connectionStep3HandshakeToJson (line 4336) | public static connectionStep3HandshakeToJson(value: ConnectionStep3Han...
    method toConnectionStep4AuthenticationFailed (line 4340) | public static toConnectionStep4AuthenticationFailed(json: string): Con...
    method connectionStep4AuthenticationFailedToJson (line 4344) | public static connectionStep4AuthenticationFailedToJson(value: Connect...
    method toConnectionStep6ConnectedAgentsUpdate (line 4348) | public static toConnectionStep6ConnectedAgentsUpdate(json: string): Co...
    method connectionStep6ConnectedAgentsUpdateToJson (line 4352) | public static connectionStep6ConnectedAgentsUpdateToJson(value: Connec...
    method toFindInstancesAgentErrorResponse (line 4356) | public static toFindInstancesAgentErrorResponse(json: string): FindIns...
    method findInstancesAgentErrorResponseToJson (line 4360) | public static findInstancesAgentErrorResponseToJson(value: FindInstanc...
    method toFindInstancesAgentRequest (line 4364) | public static toFindInstancesAgentRequest(json: string): FindInstances...
    method findInstancesAgentRequestToJson (line 4368) | public static findInstancesAgentRequestToJson(value: FindInstancesAgen...
    method toFindInstancesAgentResponse (line 4372) | public static toFindInstancesAgentResponse(json: string): FindInstance...
    method findInstancesAgentResponseToJson (line 4376) | public static findInstancesAgentResponseToJson(value: FindInstancesAge...
    method toFindInstancesBridgeErrorResponse (line 4380) | public static toFindInstancesBridgeErrorResponse(json: string): FindIn...
    method findInstancesBridgeErrorResponseToJson (line 4384) | public static findInstancesBridgeErrorResponseToJson(value: FindInstan...
    method toFindInstancesBridgeRequest (line 4388) | public static toFindInstancesBridgeRequest(json: string): FindInstance...
    method findInstancesBridgeRequestToJson (line 4392) | public static findInstancesBridgeRequestToJson(value: FindInstancesBri...
    method toFindInstancesBridgeResponse (line 4396) | public static toFindInstancesBridgeResponse(json: string): FindInstanc...
    method findInstancesBridgeResponseToJson (line 4400) | public static findInstancesBridgeResponseToJson(value: FindInstancesBr...
    method toFindIntentAgentErrorResponse (line 4404) | public static toFindIntentAgentErrorResponse(json: string): FindIntent...
    method findIntentAgentErrorResponseToJson (line 4408) | public static findIntentAgentErrorResponseToJson(value: FindIntentAgen...
    method toFindIntentAgentRequest (line 4412) | public static toFindIntentAgentRequest(json: string): FindIntentAgentR...
    method findIntentAgentRequestToJson (line 4416) | public static findIntentAgentRequestToJson(value: FindIntentAgentReque...
    method toFindIntentAgentResponse (line 4420) | public static toFindIntentAgentResponse(json: string): FindIntentAgent...
    method findIntentAgentResponseToJson (line 4424) | public static findIntentAgentResponseToJson(value: FindIntentAgentResp...
    method toFindIntentBridgeErrorResponse (line 4428) | public static toFindIntentBridgeErrorResponse(json: string): FindInten...
    method findIntentBridgeErrorResponseToJson (line 4432) | public static findIntentBridgeErrorResponseToJson(value: FindIntentBri...
    method toFindIntentBridgeRequest (line 4436) | public static toFindIntentBridgeRequest(json: string): FindIntentBridg...
    method findIntentBridgeRequestToJson (line 4440) | public static findIntentBridgeRequestToJson(value: FindIntentBridgeReq...
    method toFindIntentBridgeResponse (line 4444) | public static toFindIntentBridgeResponse(json: string): FindIntentBrid...
    method findIntentBridgeResponseToJson (line 4448) | public static findIntentBridgeResponseToJson(value: FindIntentBridgeRe...
    method toFindIntentsByContextAgentErrorResponse (line 4452) | public static toFindIntentsByContextAgentErrorResponse(json: string): ...
    method findIntentsByContextAgentErrorResponseToJson (line 4456) | public static findIntentsByContextAgentErrorResponseToJson(value: Find...
    method toFindIntentsByContextAgentRequest (line 4460) | public static toFindIntentsByContextAgentRequest(json: string): FindIn...
    method findIntentsByContextAgentRequestToJson (line 4464) | public static findIntentsByContextAgentRequestToJson(value: FindIntent...
    method toFindIntentsByContextAgentResponse (line 4468) | public static toFindIntentsByContextAgentResponse(json: string): FindI...
    method findIntentsByContextAgentResponseToJson (line 4472) | public static findIntentsByContextAgentResponseToJson(value: FindInten...
    method toFindIntentsByContextBridgeErrorResponse (line 4476) | public static toFindIntentsByContextBridgeErrorResponse(json: string):...
    method findIntentsByContextBridgeErrorResponseToJson (line 4480) | public static findIntentsByContextBridgeErrorResponseToJson(value: Fin...
    method toFindIntentsByContextBridgeRequest (line 4484) | public static toFindIntentsByContextBridgeRequest(json: string): FindI...
    method findIntentsByContextBridgeRequestToJson (line 4488) | public static findIntentsByContextBridgeRequestToJson(value: FindInten...
    method toFindIntentsByContextBridgeResponse (line 4492) | public static toFindIntentsByContextBridgeResponse(json: string): Find...
    method findIntentsByContextBridgeResponseToJson (line 4496) | public static findIntentsByContextBridgeResponseToJson(value: FindInte...
    method toGetAppMetadataAgentErrorResponse (line 4500) | public static toGetAppMetadataAgentErrorResponse(json: string): GetApp...
    method getAppMetadataAgentErrorResponseToJson (line 4504) | public static getAppMetadataAgentErrorResponseToJson(value: GetAppMeta...
    method toGetAppMetadataAgentRequest (line 4508) | public static toGetAppMetadataAgentRequest(json: string): GetAppMetada...
    method getAppMetadataAgentRequestToJson (line 4512) | public static getAppMetadataAgentRequestToJson(value: GetAppMetadataAg...
    method toGetAppMetadataAgentResponse (line 4516) | public static toGetAppMetadataAgentResponse(json: string): GetAppMetad...
    method getAppMetadataAgentResponseToJson (line 4520) | public static getAppMetadataAgentResponseToJson(value: GetAppMetadataA...
    method toGetAppMetadataBridgeErrorResponse (line 4524) | public static toGetAppMetadataBridgeErrorResponse(json: string): GetAp...
    method getAppMetadataBridgeErrorResponseToJson (line 4528) | public static getAppMetadataBridgeErrorResponseToJson(value: GetAppMet...
    method toGetAppMetadataBridgeRequest (line 4532) | public static toGetAppMetadataBridgeRequest(json: string): GetAppMetad...
    method getAppMetadataBridgeRequestToJson (line 4536) | public static getAppMetadataBridgeRequestToJson(value: GetAppMetadataB...
    method toGetAppMetadataBridgeResponse (line 4540) | public static toGetAppMetadataBridgeResponse(json: string): GetAppMeta...
    method getAppMetadataBridgeResponseToJson (line 4544) | public static getAppMetadataBridgeResponseToJson(value: GetAppMetadata...
    method toOpenAgentErrorResponse (line 4548) | public static toOpenAgentErrorResponse(json: string): OpenAgentErrorRe...
    method openAgentErrorResponseToJson (line 4552) | public static openAgentErrorResponseToJson(value: OpenAgentErrorRespon...
    method toOpenAgentRequest (line 4556) | public static toOpenAgentRequest(json: string): OpenAgentRequest {
    method openAgentRequestToJson (line 4560) | public static openAgentRequestToJson(value: OpenAgentRequest): string {
    method toOpenAgentResponse (line 4564) | public static toOpenAgentResponse(json: string): OpenAgentResponse {
    method openAgentResponseToJson (line 4568) | public static openAgentResponseToJson(value: OpenAgentResponse): string {
    method toOpenBridgeErrorResponse (line 4572) | public static toOpenBridgeErrorResponse(json: string): OpenBridgeError...
    method openBridgeErrorResponseToJson (line 4576) | public static openBridgeErrorResponseToJson(value: OpenBridgeErrorResp...
    method toOpenBridgeRequest (line 4580) | public static toOpenBridgeRequest(json: string): OpenBridgeRequest {
    method openBridgeRequestToJson (line 4584) | public static openBridgeRequestToJson(value: OpenBridgeRequest): string {
    method toOpenBridgeResponse (line 4588) | public static toOpenBridgeResponse(json: string): OpenBridgeResponse {
    method openBridgeResponseToJson (line 4592) | public static openBridgeResponseToJson(value: OpenBridgeResponse): str...
    method toPrivateChannelBroadcastAgentRequest (line 4596) | public static toPrivateChannelBroadcastAgentRequest(json: string): Pri...
    method privateChannelBroadcastAgentRequestToJson (line 4600) | public static privateChannelBroadcastAgentRequestToJson(value: Private...
    method toPrivateChannelBroadcastBridgeRequest (line 4604) | public static toPrivateChannelBroadcastBridgeRequest(json: string): Pr...
    method privateChannelBroadcastBridgeRequestToJson (line 4608) | public static privateChannelBroadcastBridgeRequestToJson(value: Privat...
    method toPrivateChannelEventListenerAddedAgentRequest (line 4612) | public static toPrivateChannelEventListenerAddedAgentRequest(
    method privateChannelEventListenerAddedAgentRequestToJson (line 4618) | public static privateChannelEventListenerAddedAgentRequestToJson(
    method toPrivateChannelEventListenerAddedBridgeRequest (line 4624) | public static toPrivateChannelEventListenerAddedBridgeRequest(
    method privateChannelEventListenerAddedBridgeRequestToJson (line 4630) | public static privateChannelEventListenerAddedBridgeRequestToJson(
    method toPrivateChannelEventListenerRemovedAgentRequest (line 4636) | public static toPrivateChannelEventListenerRemovedAgentRequest(
    method privateChannelEventListenerRemovedAgentRequestToJson (line 4642) | public static privateChannelEventListenerRemovedAgentRequestToJson(
    method toPrivateChannelEventListenerRemovedBridgeRequest (line 4648) | public static toPrivateChannelEventListenerRemovedBridgeRequest(
    method privateChannelEventListenerRemovedBridgeRequestToJson (line 4654) | public static privateChannelEventListenerRemovedBridgeRequestToJson(
    method toPrivateChannelOnAddContextListenerAgentRequest (line 4660) | public static toPrivateChannelOnAddContextListenerAgentRequest(
    method privateChannelOnAddContextListenerAgentRequestToJson (line 4666) | public static privateChannelOnAddContextListenerAgentRequestToJson(
    method toPrivateChannelOnAddContextListenerBridgeRequest (line 4672) | public static toPrivateChannelOnAddContextListenerBridgeRequest(
    method privateChannelOnAddContextListenerBridgeRequestToJson (line 4678) | public static privateChannelOnAddContextListenerBridgeRequestToJson(
    method toPrivateChannelOnDisconnectAgentRequest (line 4684) | public static toPrivateChannelOnDisconnectAgentRequest(json: string): ...
    method privateChannelOnDisconnectAgentRequestToJson (line 4688) | public static privateChannelOnDisconnectAgentRequestToJson(value: Priv...
    method toPrivateChannelOnDisconnectBridgeRequest (line 4692) | public static toPrivateChannelOnDisconnectBridgeRequest(json: string):...
    method privateChannelOnDisconnectBridgeRequestToJson (line 4696) | public static privateChannelOnDisconnectBridgeRequestToJson(value: Pri...
    method toPrivateChannelOnUnsubscribeAgentRequest (line 4700) | public static toPrivateChannelOnUnsubscribeAgentRequest(json: string):...
    method privateChannelOnUnsubscribeAgentRequestToJson (line 4704) | public static privateChannelOnUnsubscribeAgentRequestToJson(value: Pri...
    method toPrivateChannelOnUnsubscribeBridgeRequest (line 4708) | public static toPrivateChannelOnUnsubscribeBridgeRequest(json: string)...
    method privateChannelOnUnsubscribeBridgeRequestToJson (line 4712) | public static privateChannelOnUnsubscribeBridgeRequestToJson(
    method toRaiseIntentAgentErrorResponse (line 4718) | public static toRaiseIntentAgentErrorResponse(json: string): RaiseInte...
    method raiseIntentAgentErrorResponseToJson (line 4722) | public static raiseIntentAgentErrorResponseToJson(value: RaiseIntentAg...
    method toRaiseIntentAgentRequest (line 4726) | public static toRaiseIntentAgentRequest(json: string): RaiseIntentAgen...
    method raiseIntentAgentRequestToJson (line 4730) | public static raiseIntentAgentRequestToJson(value: RaiseIntentAgentReq...
    method toRaiseIntentAgentResponse (line 4734) | public static toRaiseIntentAgentResponse(json: string): RaiseIntentAge...
    method raiseIntentAgentResponseToJson (line 4738) | public static raiseIntentAgentResponseToJson(value: RaiseIntentAgentRe...
    method toRaiseIntentBridgeErrorResponse (line 4742) | public static toRaiseIntentBridgeErrorResponse(json: string): RaiseInt...
    method raiseIntentBridgeErrorResponseToJson (line 4746) | public static raiseIntentBridgeErrorResponseToJson(value: RaiseIntentB...
    method toRaiseIntentBridgeRequest (line 4750) | public static toRaiseIntentBridgeRequest(json: string): RaiseIntentBri...
    method raiseIntentBridgeRequestToJson (line 4754) | public static raiseIntentBridgeRequestToJson(value: RaiseIntentBridgeR...
    method toRaiseIntentBridgeResponse (line 4758) | public static toRaiseIntentBridgeResponse(json: string): RaiseIntentBr...
    method raiseIntentBridgeResponseToJson (line 4762) | public static raiseIntentBridgeResponseToJson(value: RaiseIntentBridge...
    method toRaiseIntentResultAgentErrorResponse (line 4766) | public static toRaiseIntentResultAgentErrorResponse(json: string): Rai...
    method raiseIntentResultAgentErrorResponseToJson (line 4770) | public static raiseIntentResultAgentErrorResponseToJson(value: RaiseIn...
    method toRaiseIntentResultAgentResponse (line 4774) | public static toRaiseIntentResultAgentResponse(json: string): RaiseInt...
    method raiseIntentResultAgentResponseToJson (line 4778) | public static raiseIntentResultAgentResponseToJson(value: RaiseIntentR...
    method toRaiseIntentResultBridgeErrorResponse (line 4782) | public static toRaiseIntentResultBridgeErrorResponse(json: string): Ra...
    method raiseIntentResultBridgeErrorResponseToJson (line 4786) | public static raiseIntentResultBridgeErrorResponseToJson(value: RaiseI...
    method toRaiseIntentResultBridgeResponse (line 4790) | public static toRaiseIntentResultBridgeResponse(json: string): RaiseIn...
    method raiseIntentResultBridgeResponseToJson (line 4794) | public static raiseIntentResultBridgeResponseToJson(value: RaiseIntent...
  function invalidValue (line 4799) | function invalidValue(typ: any, val: any, key: any, parent: any = ''): n...
  function prettyTypeName (line 4806) | function prettyTypeName(typ: any): string {
  function jsonToJSProps (line 4824) | function jsonToJSProps(typ: any): any {
  function jsToJSONProps (line 4833) | function jsToJSONProps(typ: any): any {
  function transform (line 4842) | function transform(val: any, typ: any, getProps: any, key: any = '', par...
  function cast (line 4933) | function cast<T>(val: any, typ: any): T {
  function uncast (line 4937) | function uncast<T>(val: T, typ: any): any {
  function l (line 4941) | function l(typ: any) {
  function a (line 4945) | function a(typ: any) {
  function u (line 4949) | function u(...typs: any[]) {
  function o (line 4953) | function o(props: any[], additional: any) {
  function m (line 4957) | function m(additional: any) {
  function r (line 4961) | function r(name: string) {

FILE: packages/fdc3-standard/src/api/AppIdentifier.ts
  type AppIdentifier (line 13) | interface AppIdentifier {

FILE: packages/fdc3-standard/src/api/AppIntent.ts
  type AppIntent (line 12) | interface AppIntent {

FILE: packages/fdc3-standard/src/api/AppMetadata.ts
  type AppMetadata (line 17) | interface AppMetadata extends AppIdentifier {

FILE: packages/fdc3-standard/src/api/Channel.ts
  type Channel (line 26) | interface Channel {

FILE: packages/fdc3-standard/src/api/ContextMetadata.ts
  type ContextMetadata (line 14) | interface ContextMetadata {

FILE: packages/fdc3-standard/src/api/DesktopAgent.ts
  type DesktopAgent (line 30) | interface DesktopAgent {

FILE: packages/fdc3-standard/src/api/DesktopAgentIdentifier.ts
  type DesktopAgentIdentifier (line 14) | interface DesktopAgentIdentifier {

FILE: packages/fdc3-standard/src/api/DisplayMetadata.ts
  type DisplayMetadata (line 11) | interface DisplayMetadata {

FILE: packages/fdc3-standard/src/api/Errors.ts
  type AgentError (line 9) | enum AgentError {
  type OpenError (line 35) | enum OpenError {
  type ResolveError (line 62) | enum ResolveError {
  type ResultError (line 100) | enum ResultError {
  type ChannelError (line 111) | enum ChannelError {
  type BridgingError (line 131) | enum BridgingError {

FILE: packages/fdc3-standard/src/api/Events.ts
  type ApiEvent (line 11) | interface ApiEvent {
  type EventHandler (line 23) | type EventHandler = (event: ApiEvent) => void;
  type FDC3EventTypes (line 28) | type FDC3EventTypes = 'userChannelChanged' | 'contextCleared';
  type FDC3Event (line 34) | interface FDC3Event extends ApiEvent {
  type FDC3ChannelChangedEvent (line 42) | interface FDC3ChannelChangedEvent extends FDC3Event {
  type FDC3ContextClearedEvent (line 52) | interface FDC3ContextClearedEvent extends FDC3Event {
  type PrivateChannelEventTypes (line 62) | type PrivateChannelEventTypes = 'addContextListener' | 'unsubscribe' | '...
  type PrivateChannelEvent (line 68) | interface PrivateChannelEvent extends ApiEvent {
  type PrivateChannelAddContextListenerEvent (line 82) | interface PrivateChannelAddContextListenerEvent extends PrivateChannelEv...
  type PrivateChannelUnsubscribeEvent (line 97) | interface PrivateChannelUnsubscribeEvent extends PrivateChannelEvent {
  type PrivateChannelDisconnectEvent (line 110) | interface PrivateChannelDisconnectEvent extends PrivateChannelEvent {

FILE: packages/fdc3-standard/src/api/GetAgent.ts
  type GetAgentType (line 39) | type GetAgentType = (params?: GetAgentParams) => Promise<DesktopAgent>;
  type GetAgentParams (line 89) | type GetAgentParams = {
  type GetAgentLogLevels (line 113) | type GetAgentLogLevels = {
  type LogLevel (line 121) | enum LogLevel {
  type SessionStorageFormat (line 132) | type SessionStorageFormat = {
  type DesktopAgentDetails (line 142) | type DesktopAgentDetails = {
  type WebDesktopAgentType (line 185) | enum WebDesktopAgentType {
  constant DESKTOP_AGENT_SESSION_STORAGE_KEY_PREFIX (line 206) | const DESKTOP_AGENT_SESSION_STORAGE_KEY_PREFIX = 'fdc3-desktop-agent-det...

FILE: packages/fdc3-standard/src/api/Icon.ts
  type Icon (line 6) | interface Icon {

FILE: packages/fdc3-standard/src/api/Image.ts
  type Image (line 6) | interface Image {

FILE: packages/fdc3-standard/src/api/ImplementationMetadata.ts
  type ImplementationMetadata (line 11) | interface ImplementationMetadata {

FILE: packages/fdc3-standard/src/api/IntentMetadata.ts
  type IntentMetadata (line 11) | interface IntentMetadata {

FILE: packages/fdc3-standard/src/api/IntentResolution.ts
  type IntentResolution (line 36) | interface IntentResolution {

FILE: packages/fdc3-standard/src/api/Listener.ts
  type Listener (line 6) | interface Listener {

FILE: packages/fdc3-standard/src/api/Methods.ts
  function rejectIfNoGlobal (line 35) | function rejectIfNoGlobal(f: (fdc3: DesktopAgent) => Promise<any>) {
  function isString (line 39) | function isString(app: AppIdentifier | string | undefined): app is string {
  function open (line 47) | function open(app: AppIdentifier | string, context?: Context): Promise<A...
  function findIntent (line 59) | function findIntent(intent: Intent, context?: Context, resultType?: stri...
  function findIntentsByContext (line 67) | function findIntentsByContext(context: Context, resultType?: string): Pr...
  function broadcast (line 75) | function broadcast(context: Context): Promise<void> {
  function raiseIntent (line 83) | function raiseIntent(intent: Intent, context: Context, app?: AppIdentifi...
  function raiseIntentForContext (line 95) | function raiseIntentForContext(context: Context, app?: AppIdentifier | s...
  function addIntentListener (line 107) | function addIntentListener(intent: Intent, handler: IntentHandler): Prom...
  function addContextListener (line 115) | function addContextListener(
  function addEventListener (line 135) | function addEventListener(eventType: FDC3EventTypes, handler: EventHandl...
  function getUserChannels (line 143) | function getUserChannels(): Promise<Channel[]> {
  function getSystemChannels (line 160) | function getSystemChannels(): Promise<Channel[]> {
  function joinUserChannel (line 169) | function joinUserChannel(channelId: string): Promise<void> {
  function joinChannel (line 186) | function joinChannel(channelId: string): Promise<void> {
  function getOrCreateChannel (line 195) | function getOrCreateChannel(channelId: string): Promise<Channel> {
  function getCurrentChannel (line 203) | function getCurrentChannel(): Promise<Channel | null> {
  function leaveCurrentChannel (line 211) | function leaveCurrentChannel(): Promise<void> {
  function createPrivateChannel (line 219) | function createPrivateChannel(): Promise<PrivateChannel> {
  function getInfo (line 227) | function getInfo(): Promise<ImplementationMetadata> {
  function getAppMetadata (line 235) | function getAppMetadata(app: AppIdentifier): Promise<AppMetadata> {
  function findInstances (line 243) | function findInstances(app: AppIdentifier): Promise<AppIdentifier[]> {
  function isStandardContextType (line 251) | function isStandardContextType(contextType: ContextType): contextType is...
  function isStandardIntent (line 259) | function isStandardIntent(intent: Intent): intent is StandardIntent {

FILE: packages/fdc3-standard/src/api/PrivateChannel.ts
  type PrivateChannel (line 23) | interface PrivateChannel extends Channel {

FILE: packages/fdc3-standard/src/api/RecommendedChannels.ts
  type UserChannelTemplate (line 9) | interface UserChannelTemplate {

FILE: packages/fdc3-standard/src/api/Types.ts
  type ContextHandler (line 17) | type ContextHandler = (context: Context, metadata?: ContextMetadata) => ...
  type IntentResult (line 22) | type IntentResult = Context | Channel | void;
  type IntentHandler (line 32) | type IntentHandler = (context: Context, metadata?: ContextMetadata) => P...

FILE: packages/fdc3-standard/src/context/ContextType.ts
  type StandardContextType (line 9) | type StandardContextType =
  type ExperimentalContextType (line 37) | type ExperimentalContextType =
  type ContextType (line 47) | type ContextType = StandardContextType | ExperimentalContextType | (stri...
  type ContextTypes (line 52) | enum ContextTypes {

FILE: packages/fdc3-standard/src/index.ts
  constant FDC3_VERSION (line 36) | const FDC3_VERSION = '2.2';
  type Window (line 39) | interface Window {

FILE: packages/fdc3-standard/src/intents/Intents.ts
  type StandardIntent (line 9) | type StandardIntent =
  type Intent (line 33) | type Intent = StandardIntent | (string & {});
  type Intents (line 38) | enum Intents {

FILE: packages/fdc3-standard/src/internal/contextConfiguration.ts
  constant STANDARD_CONTEXT_TYPES (line 4) | const STANDARD_CONTEXT_TYPES = exhaustiveStringTuple<StandardContextType...

FILE: packages/fdc3-standard/src/internal/intentConfiguration.ts
  constant STANDARD_INTENTS (line 4) | const STANDARD_INTENTS = exhaustiveStringTuple<StandardIntent>()(

FILE: packages/fdc3-standard/src/internal/typeHelpers.ts
  type AtLeastOne (line 1) | type AtLeastOne<T> = [T, ...T[]];

FILE: packages/fdc3-standard/src/ui/ChannelSelector.ts
  type ChannelSelector (line 7) | interface ChannelSelector extends Connectable {

FILE: packages/fdc3-standard/src/ui/Connectable.ts
  type Connectable (line 2) | interface Connectable {

FILE: packages/fdc3-standard/src/ui/IntentResolver.ts
  type IntentResolutionChoice (line 6) | type IntentResolutionChoice = {
  type IntentResolver (line 14) | interface IntentResolver extends Connectable {

FILE: packages/fdc3-standard/test/ContextTypeSync.test.ts
  function extractContextType (line 13) | function extractContextType(schemaPath: string): string | null {
  function getSchemaContextTypes (line 28) | function getSchemaContextTypes(): Set<string> {

FILE: packages/fdc3-standard/test/Methods.test.ts
  method toRejectWithUnavailableError (line 43) | toRejectWithUnavailableError(received) {
  method toThrowUnavailableError (line 47) | toThrowUnavailableError(received) {

FILE: packages/fdc3/src/index.ts
  type Window (line 14) | interface Window {

FILE: packages/testing/src/agent/index.ts
  class SimpleIntentResolver (line 10) | class SimpleIntentResolver implements IntentResolver {
    method constructor (line 13) | constructor(cw: PropsWorldLike) {
    method connect (line 17) | async connect(): Promise<void> {}
    method disconnect (line 19) | async disconnect(): Promise<void> {}
    method intentChosen (line 21) | async intentChosen(ir: IntentResult): Promise<IntentResult> {
    method chooseIntent (line 26) | async chooseIntent(appIntents: AppIntent[], ctx: Context): Promise<Int...
  constant CHANNEL_STATE (line 44) | const CHANNEL_STATE = 'CHANNEL_STATE';
  class SimpleChannelSelector (line 46) | class SimpleChannelSelector implements ChannelSelector {
    method constructor (line 49) | constructor(cw: PropsWorldLike) {
    method updateChannel (line 53) | async updateChannel(channelId: string | null, availableChannels: Chann...
    method setChannelChangeCallback (line 58) | setChannelChangeCallback(_callback: (channelId: string | null) => void...
    method connect (line 60) | async connect(): Promise<void> {}
    method disconnect (line 62) | async disconnect(): Promise<void> {}

FILE: packages/testing/src/steps/generic.impl.ts
  function promiseShouldResolve (line 16) | async function promiseShouldResolve(world: PropsWorldLike, field: string...
  function promiseShouldResolveWithin10Seconds (line 26) | async function promiseShouldResolveWithin10Seconds(world: PropsWorldLike...
  function callWithMethod (line 36) | async function callWithMethod(world: PropsWorldLike, field: string, fnNa...
  function callWithMethodAndParam (line 47) | async function callWithMethodAndParam(
  function callWithMethodAndTwoParams (line 63) | async function callWithMethodAndTwoParams(
  function callWithMethodAndThreeParams (line 80) | async function callWithMethodAndThreeParams(
  function referToAs (line 103) | function referToAs(world: PropsWorldLike, from: string, to: string): void {
  function isArrayOfObjectsWithContents (line 107) | function isArrayOfObjectsWithContents(world: PropsWorldLike, field: stri...
  function isArrayOfObjectsWithLength (line 111) | function isArrayOfObjectsWithLength(world: PropsWorldLike, field: string...
  function isArrayOfStringsWithValues (line 117) | function isArrayOfStringsWithValues(world: PropsWorldLike, field: string...
  function isObjectWithContents (line 124) | function isObjectWithContents(world: PropsWorldLike, field: string, para...
  function isNull (line 129) | function isNull(world: PropsWorldLike, field: string): void {
  function isNotNull (line 133) | function isNotNull(world: PropsWorldLike, field: string): void {
  function isTrue (line 137) | function isTrue(world: PropsWorldLike, field: string): void {
  function isFalse (line 141) | function isFalse(world: PropsWorldLike, field: string): void {
  function isUndefined (line 145) | function isUndefined(world: PropsWorldLike, field: string): void {
  function isEmpty (line 149) | function isEmpty(world: PropsWorldLike, field: string): void {
  function isEqual (line 153) | function isEqual(world: PropsWorldLike, field: string, expected: string)...
  function isErrorWithMessage (line 159) | function isErrorWithMessage(world: PropsWorldLike, field: string, errorT...
  function isError (line 163) | function isError(world: PropsWorldLike, field: string): void {
  function isInvocationCounter (line 167) | function isInvocationCounter(world: PropsWorldLike, handlerName: string,...
  function isFunctionReturningPromiseOf (line 176) | function isFunctionReturningPromiseOf(world: PropsWorldLike, fnName: str...
  function waitForPeriod (line 183) | function waitForPeriod(_world: PropsWorldLike, ms: string): Promise<void> {
  function schemasLoaded (line 189) | async function schemasLoaded(world: PropsWorldLike, schemaBasePath: stri...

FILE: packages/testing/src/steps/generic.steps.ts
  function setupGenericSteps (line 6) | function setupGenericSteps(schemaBasePath: string): void {

FILE: packages/testing/src/support/matching.ts
  type HashesProvider (line 5) | interface HashesProvider {
  function doesRowMatch (line 10) | function doesRowMatch(cw: PropsWorldLike, t: Record<string, string>, dat...
  function indexOf (line 57) | function indexOf(cw: PropsWorldLike, rows: Record<string, string>[], dat...
  function isNumeric (line 67) | function isNumeric(n: string) {
  function handleResolve (line 72) | function handleResolve(name: string, on: PropsWorldLike): any {
  function matchData (line 93) | function matchData(cw: PropsWorldLike, actual: any[], dt: HashesProvider) {

FILE: packages/testing/src/world/PropsWorldLike.ts
  type PropsWorldLike (line 1) | interface PropsWorldLike {

FILE: toolbox/fdc3-conformance/src/context-types.ts
  type CommonContext (line 1) | interface CommonContext {
  type AppControlContext (line 9) | interface AppControlContext extends CommonContext {
  type AppControlContextListener (line 16) | interface AppControlContextListener {
  type IntentUtilityContext (line 20) | interface IntentUtilityContext extends CommonContext {

FILE: toolbox/fdc3-conformance/src/mock/channel-command.ts
  class Fdc3CommandExecutor (line 6) | class Fdc3CommandExecutor {
    method executeCommands (line 7) | async executeCommands(orderedCommands: string[], config: ChannelsAppCo...

FILE: toolbox/fdc3-conformance/src/mock/general.ts
  type ContextSender (line 34) | interface ContextSender extends Context {

FILE: toolbox/fdc3-conformance/src/mock/intent-a.ts
  function delayExecution (line 41) | async function delayExecution(delayMilliseconds: number | undefined): Pr...

FILE: toolbox/fdc3-conformance/src/mock/interfaces.ts
  type IChannelService (line 3) | interface IChannelService {
  type IBroadcastService (line 15) | interface IBroadcastService {

FILE: toolbox/fdc3-conformance/src/mock/support/channel-support.ts
  class ChannelServiceImpl (line 7) | class ChannelServiceImpl implements IChannelService {
    method constructor (line 8) | constructor(fdc3: DesktopAgent) {
    method joinRetrievedUserChannel (line 14) | async joinRetrievedUserChannel(channelId: string): Promise<Channel> {
    method retrieveTestAppChannel (line 25) | async retrieveTestAppChannel(channelId: string): Promise<Channel> {
    method broadcastContextItem (line 29) | async broadcastContextItem(
    method closeWindowOnCompletion (line 39) | async closeWindowOnCompletion(testId: string): Promise<void> {
    method notifyTestOnCompletion (line 52) | async notifyTestOnCompletion(testId: string): Promise<void> {
    method getBroadcastService (line 58) | private getBroadcastService(currentChannelType: string): IBroadcastSer...

FILE: toolbox/fdc3-conformance/src/test/advanced/fdc3.findInstances.ts
  function validateResolutionSource (line 74) | function validateResolutionSource(resolution: IntentResolution, appIdent...
  function validateInstances (line 86) | function validateInstances(instances: AppIdentifier[], appIdentifier: Ap...

FILE: toolbox/fdc3-conformance/src/test/advanced/fdc3.findIntent.ts
  function validateAppIntent (line 140) | function validateAppIntent(

FILE: toolbox/fdc3-conformance/src/test/advanced/fdc3.findIntentsByContext.ts
  function validateIntents (line 52) | function validateIntents(

FILE: toolbox/fdc3-conformance/src/test/advanced/fdc3.getAppMetadata.ts
  function validateMatchingInstanceIds (line 75) | function validateMatchingInstanceIds(instanceId1: string, instanceId2: s...

FILE: toolbox/fdc3-conformance/src/test/advanced/fdc3.user-channels.ts
  function checkIfBothContextsReceived (line 282) | function checkIfBothContextsReceived() {

FILE: toolbox/fdc3-conformance/src/test/fdc3-conformance-utils.ts
  function closeMockAppWindow (line 8) | async function closeMockAppWindow(testId: string, count: number = 1) {

FILE: toolbox/fdc3-conformance/src/test/index.ts
  function executeTests (line 29) | function executeTests() {
  function executeManualTests (line 42) | function executeManualTests() {
  function returnToTestSelection (line 56) | function returnToTestSelection() {
  function toggleVersionSelector (line 60) | function toggleVersionSelector() {
  function toggleBackButton (line 72) | function toggleBackButton() {

FILE: toolbox/fdc3-conformance/src/test/progressReporter.ts
  class ProgressReporter (line 5) | class ProgressReporter extends Mocha.reporters.Base {
    method constructor (line 15) | constructor(runner: Mocha.Runner, options?: Mocha.MochaOptions) {
    method onSuite (line 66) | private onSuite(suite: Mocha.Suite) {
    method onSuiteEnd (line 81) | private onSuiteEnd(suite: Mocha.Suite) {
    method onTest (line 86) | private onTest(test: Mocha.Test) {
    method onPass (line 97) | private onPass(test: Mocha.Test) {
    method onFail (line 106) | private onFail(test: Mocha.Test, err: Error) {
    method onEnd (line 119) | private onEnd() {
    method getSpeedClass (line 124) | private getSpeedClass(test: Mocha.Test): string {
    method addDuration (line 132) | private addDuration(li: HTMLElement, test: Mocha.Test) {
    method buildStatItem (line 142) | private buildStatItem(parent: HTMLElement, label: string, initialValue...
    method updateDuration (line 156) | private updateDuration() {
    method updateStats (line 161) | private updateStats() {

FILE: toolbox/fdc3-conformance/src/test/support/channel-control.ts
  type ChannelControl (line 6) | interface ChannelControl {
  type ChannelsAppContext (line 50) | type ChannelsAppContext = Context & {
  type ChannelsAppConfig (line 61) | type ChannelsAppConfig = {
  constant APP_CHANNEL_AND_BROADCAST (line 76) | const APP_CHANNEL_AND_BROADCAST = [commands.retrieveTestAppChannel, comm...
  constant APP_CHANNEL_AND_BROADCAST_TWICE (line 78) | const APP_CHANNEL_AND_BROADCAST_TWICE = [
  constant JOIN_AND_BROADCAST (line 84) | const JOIN_AND_BROADCAST = [commands.joinRetrievedUserChannel, commands....
  constant JOIN_AND_BROADCAST_TWICE (line 86) | const JOIN_AND_BROADCAST_TWICE = [

FILE: toolbox/fdc3-conformance/src/test/support/channels-support.ts
  class ChannelControlImpl (line 7) | class ChannelControlImpl implements ChannelControl {
    method constructor (line 11) | constructor(fdc3: DesktopAgent) {
    method closeMockApp (line 87) | async closeMockApp(testId: string) {
    method getRandomId (line 141) | getRandomId(): string {
  function validateListenerObject (line 148) | function validateListenerObject(listenerObject: Listener) {
  function buildChannelsAppContext (line 153) | function buildChannelsAppContext(mockAppCommands: string[], config: Chan...

FILE: toolbox/fdc3-conformance/src/test/support/intent-support.ts
  class RaiseIntentControl (line 20) | class RaiseIntentControl {
    method constructor (line 23) | constructor(fdc3: DesktopAgent) {
    method receiveContext (line 27) | async receiveContext(contextType: string, waitTime?: number, count: nu...
    method openIntentApp (line 52) | async openIntentApp(appId: string): Promise<AppIdentifier> {
    method createAppChannel (line 60) | async createAppChannel(channelId: string): Promise<Channel> {
    method createPrivateChannel (line 64) | async createPrivateChannel(): Promise<PrivateChannel> {
    method validatePrivateChannel (line 68) | validatePrivateChannel(privChan: PrivateChannel): void {
    method raiseIntent (line 72) | async raiseIntent(
    method findInstances (line 99) | async findInstances(appId: string): Promise<AppIdentifier[]> {
    method getIntentResult (line 107) | getIntentResult(intentResolution: IntentResolution): Promise<IntentRes...
    method failIfResponseTimesOut (line 118) | failIfResponseTimesOut() {
    method privateChannelBroadcast (line 128) | async privateChannelBroadcast(privateChannel: PrivateChannel, contextT...
    method validateIntentResult (line 132) | validateIntentResult(
    method validateInstances (line 178) | validateInstances(
    method listenForError (line 201) | async listenForError() {
    method receiveContextStreamFromMockApp (line 208) | async receiveContextStreamFromMockApp(
    method unsubscribeListener (line 238) | unsubscribeListener(listener: Listener): void {
    method disconnectPrivateChannel (line 242) | disconnectPrivateChannel(privateChannel: PrivateChannel): void {
  type IntentResultType (line 247) | enum IntentResultType {
  type IntentApp (line 254) | enum IntentApp {
  type ContextType (line 269) | enum ContextType {
  type ControlContextType (line 278) | enum ControlContextType {
  type Intent (line 291) | enum Intent {

FILE: toolbox/fdc3-conformance/src/test/support/metadata-support.ts
  class MetadataValidator (line 31) | class MetadataValidator {
    method validateAppMetadata (line 32) | validateAppMetadata(metadata: AppMetadata) {
    method validateImplementationMetadata (line 45) | validateImplementationMetadata(implMetadata: ImplementationMetadata) {
    method validateAppIdentifier (line 72) | validateAppIdentifier(appIdentifier: AppIdentifier | undefined) {
  class MetadataFdc3Api (line 83) | class MetadataFdc3Api {
    method openMetadataApp (line 84) | async openMetadataApp(contextType?: string): Promise<AppIdentifier> {
    method getAppInstances (line 99) | async getAppInstances(): Promise<AppIdentifier[]> {
    method getAppMetadata (line 103) | async getAppMetadata(appIdentifier?: AppIdentifier): Promise<AppMetada...
    method retrieveAppControlChannel (line 113) | async retrieveAppControlChannel(): Promise<Channel> {
    method raiseIntent (line 117) | async raiseIntent(intent: string, contextType: string, appIdentifier: ...
    method getInfo (line 121) | async getInfo(): Promise<ImplementationMetadata> {
  type MetadataContext (line 126) | interface MetadataContext extends Context {

FILE: toolbox/fdc3-conformance/src/test/support/open-control.ts
  type OpenControl (line 3) | interface OpenControl {
  type OpenCommonConfig (line 46) | type OpenCommonConfig = {

FILE: toolbox/fdc3-conformance/src/test/support/open-support.ts
  class OpenControlImpl (line 14) | class OpenControlImpl implements OpenControl {
    method constructor (line 17) | constructor(fdc3: DesktopAgent) {
    method closeMockApp (line 64) | async closeMockApp(testId: string) {
    method createTargetAppIdentifier (line 68) | createTargetAppIdentifier(appId: string) {

FILE: toolbox/fdc3-conformance/src/test/testSuite.ts
  type testSet (line 34) | type testSet = { [key: string]: (() => Promise<Mocha.Suite>)[] };
  function stripSuites (line 71) | function stripSuites(ts: testSet[]): (() => Promise<Mocha.Suite>)[] {
  function getPackNames (line 96) | function getPackNames(): string[] {
  function getPackMembers (line 100) | function getPackMembers(packName: string): string[] {

FILE: toolbox/fdc3-conformance/src/utils.ts
  function failAfterTimeout (line 4) | function failAfterTimeout(timeoutMs: number = constants.WaitTime): Promi...
  function wait (line 12) | async function wait(timeoutMs?: number): Promise<void> {
  function wrapPromise (line 20) | function wrapPromise(): {
  function handleFail (line 40) | function handleFail(documentation: string, ex: unknown): never {
  function appIdMatches (line 50) | function appIdMatches(received: string, expected: string): boolean {

FILE: toolbox/fdc3-explained/1.0/main.js
  function fdc3Init (line 12) | function fdc3Init(callback) {
  function enablePage (line 33) | function enablePage() {
  function updateProviderDetails (line 49) | function updateProviderDetails(details) {
  function broadcastFDC3Context (line 53) | function broadcastFDC3Context() {

FILE: toolbox/fdc3-explained/1.1/main.js
  function fdc3OnReady (line 10) | function fdc3OnReady(success, error) {
  function main (line 32) | function main() {
  function displayFDC3Support (line 45) | function displayFDC3Support() {
  function getPlatform (line 58) | function getPlatform() {
  function updateProviderDetails (line 70) | function updateProviderDetails(details) {
  function populateHTML (line 75) | async function populateHTML() {
  function setUpEventListeners (line 106) | function setUpEventListeners() {
  function populateChannelsDropDown (line 128) | function populateChannelsDropDown(newOptionText) {
  function joinChannel (line 142) | function joinChannel() {
  function broadcastFDC3Context (line 152) | async function broadcastFDC3Context() {
  function getContext (line 161) | async function getContext(contextType) {
  function addAppChannel (line 180) | async function addAppChannel() {
  function raiseIntent (line 208) | async function raiseIntent() {

FILE: toolbox/fdc3-explained/1.2/main.js
  function fdc3OnReady (line 7) | function fdc3OnReady(success, error) {
  function documentLoaded (line 17) | function documentLoaded(cb) {
  function main (line 34) | function main() {
  function displayFDC3Support (line 47) | function displayFDC3Support() {
  function getPlatform (line 60) | function getPlatform() {
  function updateProviderDetails (line 69) | function updateProviderDetails(details) {
  function updateFDC3Version (line 74) | function updateFDC3Version(details) {
  function populateHTML (line 79) | async function populateHTML() {
  function setUpEventListeners (line 111) | function setUpEventListeners() {
  function populateChannelsDropDown (line 133) | function populateChannelsDropDown(newOptionText) {
  function joinChannel (line 147) | function joinChannel() {
  function broadcastFDC3Context (line 157) | async function broadcastFDC3Context() {
  function getContext (line 166) | async function getContext(contextType) {
  function displayContext (line 183) | function displayContext(text) {
  function addAppChannel (line 188) | async function addAppChannel() {
  function raiseIntent (line 216) | async function raiseIntent() {

FILE: toolbox/fdc3-for-web/demo/src/client/apps/app1.ts
  function createContext (line 3) | function createContext(i: number) {
  function startBroadcasting (line 16) | async function startBroadcasting() {

FILE: toolbox/fdc3-for-web/demo/src/client/da/DemoServerContext.ts
  type Opener (line 15) | enum Opener {
  type RunningAppRegistration (line 20) | type RunningAppRegistration = AppRegistration & {
  type LaunchingAppRegistration (line 26) | type LaunchingAppRegistration = AppRegistration & {
  type DemoAppRegistration (line 31) | type DemoAppRegistration = RunningAppRegistration | LaunchingAppRegistra...
  function isWebApp
Condensed preview — 1659 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,492K chars).
[
  {
    "path": ".editorconfig",
    "chars": 780,
    "preview": "# http://editorconfig.org\n\n# A special property that should be specified at the top of the file outside of\n# any section"
  },
  {
    "path": ".eslintignore",
    "chars": 48,
    "preview": "/node_modules/\ndist/\n/website/schema2Markdown.js"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 250,
    "preview": "# fdc3-maintainers will be default reviewers for everything in the repo unless a later match takes precedence\n* @finos/f"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/---context_or_intent_proposal.md",
    "chars": 1319,
    "preview": "---\nname: \"✉️ Context or Intent proposal\"\nabout: Propose new contexts and intents to help implement a particular use-cas"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/---enhancement-request.md",
    "chars": 1079,
    "preview": "---\nname: \"\\U0001F680 Enhancement Request\"\nabout: Propose an addition or change to the FDC3 standard!\ntitle: ''\nlabels: "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/---minor-issue.md",
    "chars": 766,
    "preview": "---\nname: \"\\U0001F41B Minor Issue\"\nabout: \"If something isn't as expected \\U0001F914.\"\ntitle: ''\nlabels: bug\nassignees: "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/---question.md",
    "chars": 270,
    "preview": "---\nname: \"\\U0001F917 Question\"\nabout: \"If you have a questions about FDC3. \\U0001F4AC\"\ntitle: 'Question: '\nlabels: 'que"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/general-meeting.md",
    "chars": 4283,
    "preview": "---\nname: General Meeting\nabout: minutes for an FDC3 General Meeting\ntitle: 'General Meeting - mmm dd, yyyy'\nlabels: Gen"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/identity-and-security-meeting.md",
    "chars": 3969,
    "preview": "---\nname: Identity and Security group meeting\nabout: Overview and notes for a discussion group\ntitle: 'Identity and Secu"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/maintainers-meeting.md",
    "chars": 2081,
    "preview": "---\nname: FDC3 Maintainers Meeting\nabout: minutes for an FDC3 Maintainers Meeting\ntitle: 'FDC3 Maintainers Meeting - mmm"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/standard-wg-meeting.md",
    "chars": 3635,
    "preview": "---\nname: Standard WG Meeting\nabout: minutes for an FDC3 Standard Working Group Meeting\ntitle: 'Standard WG Meeting - mm"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/use-cases-and-workflows-meeting.md",
    "chars": 3965,
    "preview": "---\nname: Use Cases and Workflows group meeting\nabout: Overview and notes for a discussion group\ntitle: 'Use Cases and W"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/web-browsers-meeting.md",
    "chars": 4144,
    "preview": "---\nname: Web Browsers group meeting\nabout: Overview and notes for a discussion group\ntitle: 'Web Browsers group meeting"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 3989,
    "preview": "## Describe your change\n\n<!--- Describe your change here-->\n\n### Related Issue\n<!--- This project prefers to accept pull"
  },
  {
    "path": ".github/workflows/coverage.yml",
    "chars": 813,
    "preview": "name: Node.js CI Tests and Coverage\n\n# Controls when the workflow will run on any branch\non:\n  push:\n    branches:\n     "
  },
  {
    "path": ".github/workflows/cve-scanning.yml",
    "chars": 1530,
    "preview": "name: Node.js CVE Scanning\n\non:\n  pull_request:\n    types: [opened, reopened, synchronize, ready_for_review]\n    paths:\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 5014,
    "preview": "\nname: Publish To NPM\n\non:\n  release:\n    types: [published]\n\npermissions:\n  contents: read\n  id-token: write     # requ"
  },
  {
    "path": ".github/workflows/scorecard.yml",
    "chars": 3149,
    "preview": "# This workflow uses actions that are not certified by GitHub. They are provided\n# by a third-party and are governed by "
  },
  {
    "path": ".github/workflows/semgrep.yml",
    "chars": 537,
    "preview": "name: Static code analysis\n\non:\n  pull_request:\n    types: [opened, reopened, synchronize, ready_for_review]\n  schedule:"
  },
  {
    "path": ".gitignore",
    "chars": 477,
    "preview": "*.log\n.DS_Store\nnode_modules\ndist\ncoverage\n.project\n\nlib/core/metadata.js\nlib/core/MetadataBlog.js\n\nwebsite/translated_d"
  },
  {
    "path": ".husky/pre-commit",
    "chars": 27,
    "preview": "#!/bin/sh\nnpx lint-staged \n"
  },
  {
    "path": ".node-version",
    "chars": 3,
    "preview": "22\n"
  },
  {
    "path": ".npmrc",
    "chars": 281,
    "preview": "# Omit the registry url which can be an organization's internal npm mirror when generating package-lock.json file\n# see:"
  },
  {
    "path": ".nvmrc",
    "chars": 3,
    "preview": "22\n"
  },
  {
    "path": ".prettierignore",
    "chars": 144,
    "preview": "# ignore files\n*.md\n*.html\n*.yml\n*.yaml\n*.json\n\n# ignore folders\nwebsite\ndist\nsrc/app-directory/*/target\nnode_modules\nco"
  },
  {
    "path": ".semgrepignore",
    "chars": 422,
    "preview": "website/**\n\n# Just used for build so ignoring\ns2tQuicktypeUtil.cjs\nt2sQuicktypeUtil.js\n\n# API schema set for localhost g"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 114,
    "preview": "{\n    \"typescript.tsdk\": \"node_modules/typescript/lib\",\n    \"editor.tabSize\": 2,\n    \"editor.insertSpaces\": true\n}"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 48610,
    "preview": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Change"
  },
  {
    "path": "CNAME",
    "chars": 14,
    "preview": "fdc3.finos.org"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 111,
    "preview": "# Code of Conduct for FDC3\n\nPlease see the [Community Code of Conduct](https://www.finos.org/code-of-conduct).\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 10617,
    "preview": "# Contributing to FDC3\n\nThis document provides the contribution policy for the FDC3 Standard (the [Working Group](GOVERN"
  },
  {
    "path": "GOVERNANCE.md",
    "chars": 10098,
    "preview": "# FDC3 Governance Policy\n\nThis document provides the governance policy for the development of the FDC3 specification and"
  },
  {
    "path": "LICENSE.md",
    "chars": 16023,
    "preview": "# Community Specification License 1.0\n\n**The Purpose of this License.**  This License sets forth the terms under which 1"
  },
  {
    "path": "LICENSE.spdx",
    "chars": 181,
    "preview": "SPDXVersion: SPDX-2.0\nDataLicense: CC0-1.0\nCreator: FDC3\nPackageName: FDC3\nPackageOriginator: FDC3\nPackageHomePage: http"
  },
  {
    "path": "NOTICES.md",
    "chars": 2822,
    "preview": "# Notices\n\nFDC3 - Fintech Open Source Foundation (https://www.finos.org/)\n\nCopyright OpenFin Inc. (info@openfin.co)\nCopy"
  },
  {
    "path": "PATENTS-FDC3-1.0.md",
    "chars": 9841,
    "preview": "# FDC3 v. 1.0 Final Specification Agreement \r\n \r\n## 1. The Purpose of this Agreement.  \r\n\r\nThis Agreement sets forth the"
  },
  {
    "path": "README.md",
    "chars": 22179,
    "preview": "# FDC3 - Financial Desktop Connectivity and Collaboration Consortium\n\n<a href='http://fdc3.finos.org'><img src='./websit"
  },
  {
    "path": "SCOPE.md",
    "chars": 2128,
    "preview": "# Scope\n\nThe FDC3 Standard specifies protocols and taxonomies to enable applications in financial services workflows to "
  },
  {
    "path": "SECURITY.md",
    "chars": 821,
    "preview": "# Security Policy\n\n## Supported Versions\n\nUse this section to tell people about which versions of your project are curre"
  },
  {
    "path": "allow-list.json",
    "chars": 110,
    "preview": "{\n    \"ignore\": [\n        { \"id\": \"CVE-2023-45857\", \"reason\": \"False positive as already on 0.28.1\" }\n    ]\n}\n"
  },
  {
    "path": "comment-template.md",
    "chars": 1280,
    "preview": "## Coverage Report\n\nCommit: [{{short_commit_sha}}]({{commit_link}})\nBase: [{{base_ref}}@{{base_short_commit_sha}}]({{bas"
  },
  {
    "path": "netlify.toml",
    "chars": 301,
    "preview": "[build]\n  ignore = \"git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF . ../{packages,website,toolbox}/\"\n\n[[headers]]\n  # D"
  },
  {
    "path": "package.json",
    "chars": 2832,
    "preview": "{\n  \"name\": \"@finos/fdc3\",\n  \"version\": \"2.2.2\",\n  \"author\": \"Fintech Open Source Foundation (FINOS)\",\n  \"homepage\": \"ht"
  },
  {
    "path": "packages/fdc3/README.md",
    "chars": 1587,
    "preview": "# FDC3\n\nThis npm module is the main entry point for the Financial Desktop Connectivity and Collaboration Consortium (FDC"
  },
  {
    "path": "packages/fdc3/package.json",
    "chars": 665,
    "preview": "{\n  \"name\": \"@finos/fdc3\",\n  \"version\": \"2.2.2\",\n  \"author\": \"Fintech Open Source Foundation (FINOS)\",\n  \"homepage\": \"ht"
  },
  {
    "path": "packages/fdc3/src/index.ts",
    "chars": 441,
    "preview": "export * from '@finos/fdc3-context';\n\nimport { BrowserTypes, BridgingTypes } from '@finos/fdc3-schema';\nexport { Bridgin"
  },
  {
    "path": "packages/fdc3/tsconfig.json",
    "chars": 382,
    "preview": "{\n  \"extends\": \"../../tsconfig.root.json\",\n  \"compilerOptions\": {\n    \"rootDirs\": [\n      \"src\"\n    ],\n    \"outDir\": \"di"
  },
  {
    "path": "packages/fdc3-agent-proxy/README.md",
    "chars": 287,
    "preview": "# FDC3 Agent Proxy\n\nThis package contains complete implementation of the FDC3 Desktop Agent Communication Protocol (DACP"
  },
  {
    "path": "packages/fdc3-agent-proxy/eslint.config.mjs",
    "chars": 536,
    "preview": "import globals from 'globals';\nimport pluginJs from '@eslint/js';\nimport tseslint from 'typescript-eslint';\nimport eslin"
  },
  {
    "path": "packages/fdc3-agent-proxy/package.json",
    "chars": 1027,
    "preview": "{\n  \"name\": \"@finos/fdc3-agent-proxy\",\n  \"version\": \"2.2.2\",\n  \"author\": \"Fintech Open Source Foundation (FINOS)\",\n  \"ho"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/DesktopAgentProxy.ts",
    "chars": 6491,
    "preview": "import {\n  AppIdentifier,\n  AppMetadata,\n  ContextHandler,\n  DesktopAgent,\n  EventHandler,\n  FDC3EventTypes,\n  Implement"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/Messaging.ts",
    "chars": 1618,
    "preview": "import { AppIdentifier } from '@finos/fdc3-standard';\nimport { RegisterableListener } from './listeners/RegisterableList"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/apps/AppSupport.ts",
    "chars": 434,
    "preview": "import { AppIdentifier, AppMetadata, ImplementationMetadata } from '@finos/fdc3-standard';\nimport { Context } from '@fin"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/apps/DefaultAppSupport.ts",
    "chars": 3850,
    "preview": "import { AppIdentifier, AppMetadata, ImplementationMetadata, OpenError, ResolveError } from '@finos/fdc3-standard';\nimpo"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/channels/ChannelSupport.ts",
    "chars": 781,
    "preview": "import {\n  Channel,\n  Connectable,\n  ContextHandler,\n  EventHandler,\n  FDC3EventTypes,\n  Listener,\n  PrivateChannel,\n} f"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/channels/DefaultChannel.ts",
    "chars": 4588,
    "preview": "import { ContextHandler, DisplayMetadata, Listener, Channel, EventHandler } from '@finos/fdc3-standard';\nimport { Contex"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/channels/DefaultChannelSupport.ts",
    "chars": 11316,
    "preview": "import {\n  Channel,\n  Connectable,\n  ContextHandler,\n  Listener,\n  PrivateChannel,\n  ChannelSelector,\n  EventHandler,\n  "
  },
  {
    "path": "packages/fdc3-agent-proxy/src/channels/DefaultPrivateChannel.ts",
    "chars": 4353,
    "preview": "import {\n  ApiEvent,\n  ContextHandler,\n  EventHandler,\n  Listener,\n  PrivateChannel,\n  PrivateChannelEventTypes,\n} from "
  },
  {
    "path": "packages/fdc3-agent-proxy/src/heartbeat/DefaultHeartbeatSupport.ts",
    "chars": 756,
    "preview": "import { HeartbeatListener } from '../listeners/HeartbeatListener.js';\nimport { Messaging } from '../Messaging.js';\nimpo"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/heartbeat/HeartbeatSupport.ts",
    "chars": 179,
    "preview": "import { Connectable } from '@finos/fdc3-standard';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/index.ts",
    "chars": 1217,
    "preview": "import { DesktopAgentProxy } from './DesktopAgentProxy.js';\nimport { Messaging } from './Messaging.js';\nimport { Abstrac"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/intents/DefaultIntentResolution.ts",
    "chars": 725,
    "preview": "import { AppIdentifier, IntentResolution, IntentResult } from '@finos/fdc3-standard';\nimport { Messaging } from '../Mess"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/intents/DefaultIntentSupport.ts",
    "chars": 7160,
    "preview": "import {\n  AppIntent,\n  AppIdentifier,\n  IntentResolution,\n  IntentHandler,\n  Listener,\n  ResolveError,\n  IntentResult,\n"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/intents/IntentSupport.ts",
    "chars": 623,
    "preview": "import { AppIdentifier, AppIntent, IntentHandler, IntentResolution, Listener } from '@finos/fdc3-standard';\nimport { Con"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/listeners/AbstractListener.ts",
    "chars": 4679,
    "preview": "import {\n  AgentEventMessage,\n  AddContextListenerRequest,\n  AddIntentListenerRequest,\n  AddEventListenerRequest,\n  Priv"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/listeners/DefaultContextListener.ts",
    "chars": 1603,
    "preview": "import { AppIdentifier, ContextHandler } from '@finos/fdc3-standard';\nimport { Messaging } from '../Messaging.js';\nimpor"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/listeners/DefaultIntentListener.ts",
    "chars": 2982,
    "preview": "import { IntentHandler, IntentResult, AppIdentifier } from '@finos/fdc3-standard';\nimport { Context } from '@finos/fdc3-"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/listeners/DesktopAgentEventListener.ts",
    "chars": 2446,
    "preview": "import { EventHandler, FDC3ChannelChangedEvent, FDC3EventTypes } from '@finos/fdc3-standard';\nimport {\n  AddEventListene"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/listeners/EventListener.ts",
    "chars": 1075,
    "preview": "import { ApiEvent, EventHandler } from '@finos/fdc3-standard';\nimport { Messaging } from '../Messaging.js';\nimport { Reg"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/listeners/HeartbeatListener.ts",
    "chars": 1243,
    "preview": "import {\n  AgentEventMessage,\n  HeartbeatAcknowledgementRequest,\n  HeartbeatEvent,\n} from '@finos/fdc3-schema/dist/gener"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/listeners/PrivateChannelEventListener.ts",
    "chars": 6209,
    "preview": "import { Messaging } from '../Messaging.js';\nimport { AbstractListener } from './AbstractListener.js';\nimport {\n  ApiEve"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/listeners/RegisterableListener.ts",
    "chars": 685,
    "preview": "import { AgentEventMessage, AgentResponseMessage } from '@finos/fdc3-schema/dist/generated/api/BrowserTypes.js';\nimport "
  },
  {
    "path": "packages/fdc3-agent-proxy/src/listeners/UserChannelContextListener.ts",
    "chars": 689,
    "preview": "import { Listener } from '@finos/fdc3-standard';\nimport { RegisterableListener } from './RegisterableListener.js';\n\n/**\n"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/messaging/AbstractMessaging.ts",
    "chars": 3014,
    "preview": "import { AgentError, AppIdentifier } from '@finos/fdc3-standard';\nimport { Messaging } from '../Messaging.js';\nimport { "
  },
  {
    "path": "packages/fdc3-agent-proxy/src/util/AbstractFDC3Logger.ts",
    "chars": 3307,
    "preview": "/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { LogLevel } from '@finos/fdc3-standard';\n\n//check if co"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/util/Logger.ts",
    "chars": 658,
    "preview": "import { LogLevel } from '@finos/fdc3-standard';\nimport { AbstractFDC3Logger } from './AbstractFDC3Logger.js';\n\n/**\n * L"
  },
  {
    "path": "packages/fdc3-agent-proxy/src/util/throwIfUndefined.ts",
    "chars": 908,
    "preview": "import { AgentEventMessage, AgentResponseMessage } from '@finos/fdc3-schema/dist/generated/api/BrowserTypes.js';\nimport "
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/app-channels.feature",
    "chars": 7661,
    "preview": "Feature: Channel Listeners Support\n\n  Background: Desktop Agent API\n    Given schemas loaded\n    Given User Channels one"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/app-metadata.feature",
    "chars": 1473,
    "preview": "Feature: Desktop Agent Information\n\n  Background: Desktop Agent API\n    Given schemas loaded\n    And A Desktop Agent in "
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/broadcast.feature",
    "chars": 2619,
    "preview": "Feature: Broadcasting\n\n  Background: Desktop Agent API\n    Given schemas loaded\n    Given User Channels one, two and thr"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/find-intents.feature",
    "chars": 3831,
    "preview": "Feature: Basic Intents Support\n\n  Background: Desktop Agent API\n    Given schemas loaded\n    And A Desktop Agent in \"api"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/heartbeat.feature",
    "chars": 497,
    "preview": "Feature: Heartbeats\n\n  Background: Desktop Agent API\n    Given A Desktop Agent in \"api\"\n    And schemas loaded\n\n  Scenar"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/intent-listener.feature",
    "chars": 2261,
    "preview": "Feature: Intent Listeners\n\n  Background: Desktop Agent API\n    Given schemas loaded\n    And \"instrumentContext\" is a \"fd"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/intent-results.feature",
    "chars": 7149,
    "preview": "Feature: Intents Can Return Different Results\n\n  Background: Desktop Agent API\n    Given schemas loaded\n    And A Deskto"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/open.feature",
    "chars": 2614,
    "preview": "Feature: Desktop Agent Information\n\n  Background: Desktop Agent API\n    Given A Desktop Agent in \"api\"\n    And schemas l"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/private-channels-deprecated.feature",
    "chars": 5018,
    "preview": "Feature: Basic Private Channels Support\n\n  Background: Desktop Agent API\n    Given schemas loaded\n    And User Channels "
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/private-channels.feature",
    "chars": 10288,
    "preview": "Feature: Basic Private Channels Support\n\n  Background: Desktop Agent API\n    Given schemas loaded\n    And User Channels "
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/raise-intents.feature",
    "chars": 4720,
    "preview": "Feature: Basic Intents Support\n\n  Background: Desktop Agent API\n    Given A Desktop Agent in \"api\"\n    And schemas loade"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/user-channel-selector.feature",
    "chars": 782,
    "preview": "Feature: Updating User Channel State\n\n  Background:\n    Given schemas loaded\n    Given User Channels one, two and three\n"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/user-channel-sync.feature",
    "chars": 2319,
    "preview": "Feature: Updating User Channel State\n\n  Background:\n    Given schemas loaded\n    Given User Channels one, two and three\n"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/user-channels-set-by-agent.feature",
    "chars": 2352,
    "preview": "Feature: User Channels Support where the Desktop Agent puts the app on a channel\n\n  Background: Desktop Agent API\n    Gi"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/user-channels.feature",
    "chars": 20341,
    "preview": "Feature: Basic User Channels Support\n\n  Background: Desktop Agent API\n    Given User Channels one, two and three\n    Giv"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/features/utils.feature",
    "chars": 375,
    "preview": "Feature: Utility functions\n\n\tScenario: throwIfUndefined is used to check properties\n\t\tWhen I call throwIfUndefined it th"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/step-definitions/channelSelector.steps.ts",
    "chars": 2383,
    "preview": "import { Given, When } from 'quickpickle';\nimport { SimpleIntentResolver } from '@finos/testing';\nimport { CustomWorld }"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/step-definitions/channels.steps.ts",
    "chars": 9419,
    "preview": "import { Given, Then, When } from 'quickpickle';\nimport { DataTable } from '@cucumber/cucumber';\nimport { Context } from"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/step-definitions/generic.steps.ts",
    "chars": 2301,
    "preview": "import { TestMessaging } from '../support/TestMessaging.js';\nimport { Given, When } from 'quickpickle';\nimport { CustomW"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/step-definitions/intents.steps.ts",
    "chars": 5294,
    "preview": "import { Given } from 'quickpickle';\nimport { CustomWorld } from '../world/index.js';\nimport { handleResolve } from '@fi"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/step-definitions/util.steps.ts",
    "chars": 2551,
    "preview": "import { When } from 'quickpickle';\nimport { CustomWorld } from '../world/index.js';\nimport { throwIfUndefined } from '."
  },
  {
    "path": "packages/fdc3-agent-proxy/test/steps.ts",
    "chars": 536,
    "preview": "// Main step definitions entry point for quickpickle\n// This file is loaded by vitest as a setupFile\n\nimport { setWorldC"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/TestChannelSelector.ts",
    "chars": 1244,
    "preview": "import { Channel, ChannelSelector } from '@finos/fdc3-standard';\n\nexport class TestChannelSelector implements ChannelSel"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/TestMessaging.ts",
    "chars": 6902,
    "preview": "import { AppIdentifier, ResolveError } from '@finos/fdc3-standard';\nimport { Context } from '@finos/fdc3-context';\nimpor"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/AddEventListener.ts",
    "chars": 861,
    "preview": "import { AutomaticResponse, TestMessaging } from '../TestMessaging';\nimport { createResponseMeta } from './support';\nimp"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/ChannelState.ts",
    "chars": 5603,
    "preview": "import { AutomaticResponse, TestMessaging } from '../TestMessaging.js';\nimport { Context } from '@finos/fdc3-context';\ni"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/CreatePrivateChannel.ts",
    "chars": 1134,
    "preview": "import {\n  CreatePrivateChannelRequest,\n  CreatePrivateChannelResponse,\n} from '@finos/fdc3-schema/dist/generated/api/Br"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/DisconnectPrivateChannel.ts",
    "chars": 884,
    "preview": "import { AutomaticResponse, TestMessaging } from '../TestMessaging.js';\nimport { createResponseMeta } from './support.js"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/FindInstances.ts",
    "chars": 976,
    "preview": "import { FindInstancesRequest, FindInstancesResponse } from '@finos/fdc3-schema/dist/generated/api/BrowserTypes.js';\nimp"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/FindIntent.ts",
    "chars": 1844,
    "preview": "import { AppMetadata } from '@finos/fdc3-standard';\nimport { AutomaticResponse, IntentDetail, TestMessaging, intentDetai"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/FindIntentByContext.ts",
    "chars": 1765,
    "preview": "import {\n  FindIntentsByContextRequest,\n  FindIntentsByContextResponse,\n} from '@finos/fdc3-schema/dist/generated/api/Br"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/GetAppMetadata.ts",
    "chars": 966,
    "preview": "import { GetAppMetadataRequest, GetAppMetadataResponse } from '@finos/fdc3-schema/dist/generated/api/BrowserTypes.js';\ni"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/GetInfo.ts",
    "chars": 1190,
    "preview": "import { AutomaticResponse, TestMessaging } from '../TestMessaging.js';\nimport { createResponseMeta } from './support.js"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/GetOrCreateChannel.ts",
    "chars": 1664,
    "preview": "import { AutomaticResponse, TestMessaging } from '../TestMessaging.js';\nimport { ChannelError } from '@finos/fdc3-standa"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/GetUserChannels.ts",
    "chars": 1170,
    "preview": "import {\n  Channel,\n  GetUserChannelsRequest,\n  GetUserChannelsResponse,\n} from '@finos/fdc3-schema/dist/generated/api/B"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/IntentResult.ts",
    "chars": 1039,
    "preview": "import { IntentResultRequest, IntentResultResponse } from '@finos/fdc3-schema/dist/generated/api/BrowserTypes.js';\nimpor"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/Open.ts",
    "chars": 1181,
    "preview": "import { OpenRequest, OpenResponse } from '@finos/fdc3-schema/dist/generated/api/BrowserTypes.js';\nimport { AutomaticRes"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/RaiseIntent.ts",
    "chars": 4890,
    "preview": "import {\n  RaiseIntentRequest,\n  RaiseIntentResponse,\n  RaiseIntentResultResponse,\n} from '@finos/fdc3-schema/dist/gener"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/RaiseIntentForContext.ts",
    "chars": 5227,
    "preview": "import {\n  RaiseIntentForContextRequest,\n  RaiseIntentForContextResponse,\n  RaiseIntentResultResponse,\n} from '@finos/fd"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/RegisterListeners.ts",
    "chars": 1608,
    "preview": "import {\n  AddContextListenerRequest,\n  AddContextListenerResponse,\n  AddEventListenerRequest,\n  AddEventListenerRespons"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/UnsubscribeListeners.ts",
    "chars": 1699,
    "preview": "import {\n  AppRequestMessage,\n  ContextListenerUnsubscribeRequest,\n  ContextListenerUnsubscribeResponse,\n  EventListener"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/support/responses/support.ts",
    "chars": 426,
    "preview": "import { AppRequestMessageMeta, AgentResponseMessage } from '@finos/fdc3-schema/dist/generated/api/BrowserTypes.js';\nimp"
  },
  {
    "path": "packages/fdc3-agent-proxy/test/world/index.ts",
    "chars": 538,
    "preview": "import { TestMessaging } from '../support/TestMessaging.js';\nimport { QuickPickleWorld, QuickPickleWorldInterface } from"
  },
  {
    "path": "packages/fdc3-agent-proxy/tsconfig.json",
    "chars": 465,
    "preview": "{\n  \"extends\": \"../../tsconfig.root.json\",\n  \"compilerOptions\": {\n    \"rootDirs\": [\n      \"src\",\n      \"test\"\n    ],\n   "
  },
  {
    "path": "packages/fdc3-agent-proxy/vitest.config.ts",
    "chars": 638,
    "preview": "import { defineConfig } from 'vitest/config';\nimport { quickpickle } from 'quickpickle';\n\nexport default defineConfig({\n"
  },
  {
    "path": "packages/fdc3-commonjs/README.md",
    "chars": 1683,
    "preview": "# FDC3 CommonJS Module\n\nThis is the CommonJS module version of the Financial Desktop Connectivity and Collaboration Cons"
  },
  {
    "path": "packages/fdc3-commonjs/package.json",
    "chars": 877,
    "preview": "{\n  \"name\": \"@finos/fdc3-commonjs\",\n  \"version\": \"2.2.2\",\n  \"author\": \"Fintech Open Source Foundation (FINOS)\",\n  \"homep"
  },
  {
    "path": "packages/fdc3-commonjs/rollup.config.mjs",
    "chars": 1007,
    "preview": "import { nodeResolve } from '@rollup/plugin-node-resolve';\nimport commonjs from '@rollup/plugin-commonjs';\nimport json f"
  },
  {
    "path": "packages/fdc3-commonjs/src/index.ts",
    "chars": 29,
    "preview": "export * from '@finos/fdc3';\n"
  },
  {
    "path": "packages/fdc3-context/README.md",
    "chars": 4752,
    "preview": "# Context types generation README\n\nThis folder contains Typescript interfaces, in ContextTypes.ts generated from the con"
  },
  {
    "path": "packages/fdc3-context/eslint.config.mjs",
    "chars": 968,
    "preview": "import globals from 'globals';\nimport pluginJs from '@eslint/js';\nimport tseslint from 'typescript-eslint';\nimport eslin"
  },
  {
    "path": "packages/fdc3-context/generated/context/ContextTypes.ts",
    "chars": 106902,
    "preview": "// To parse this data:\n//\n//   import { Convert, Action, Chart, ChatInitSettings, ChatMessage, ChatRoom, ChatSearchCrite"
  },
  {
    "path": "packages/fdc3-context/package.json",
    "chars": 1293,
    "preview": "{\n  \"name\": \"@finos/fdc3-context\",\n  \"version\": \"2.2.2\",\n  \"author\": \"Fintech Open Source Foundation (FINOS)\",\n  \"homepa"
  },
  {
    "path": "packages/fdc3-context/s2tQuicktypeUtil.cjs",
    "chars": 2856,
    "preview": "/**\n * SPDX-License-Identifier: Apache-2.0\n * Copyright FINOS FDC3 contributors - see NOTICE file\n */\n\n/** Utility for p"
  },
  {
    "path": "packages/fdc3-context/schemas/context/action.schema.json",
    "chars": 4455,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/action.s"
  },
  {
    "path": "packages/fdc3-context/schemas/context/chart.schema.json",
    "chars": 3231,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/chart.sc"
  },
  {
    "path": "packages/fdc3-context/schemas/context/chatInitSettings.schema.json",
    "chars": 3659,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/chatInit"
  },
  {
    "path": "packages/fdc3-context/schemas/context/chatMessage.schema.json",
    "chars": 1470,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/chatMess"
  },
  {
    "path": "packages/fdc3-context/schemas/context/chatRoom.schema.json",
    "chars": 1542,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/chatRoom"
  },
  {
    "path": "packages/fdc3-context/schemas/context/chatSearchCriteria.schema.json",
    "chars": 2217,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/chatSear"
  },
  {
    "path": "packages/fdc3-context/schemas/context/contact.schema.json",
    "chars": 1469,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/contact."
  },
  {
    "path": "packages/fdc3-context/schemas/context/contactList.schema.json",
    "chars": 1984,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/contactL"
  },
  {
    "path": "packages/fdc3-context/schemas/context/context.schema.json",
    "chars": 3969,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/context."
  },
  {
    "path": "packages/fdc3-context/schemas/context/country.schema.json",
    "chars": 2449,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/country."
  },
  {
    "path": "packages/fdc3-context/schemas/context/currency.schema.json",
    "chars": 1239,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/currency"
  },
  {
    "path": "packages/fdc3-context/schemas/context/email.schema.json",
    "chars": 1476,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/email.sc"
  },
  {
    "path": "packages/fdc3-context/schemas/context/fileAttachment.schema.json",
    "chars": 1425,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/fileAtta"
  },
  {
    "path": "packages/fdc3-context/schemas/context/instrument.schema.json",
    "chars": 4649,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/instrume"
  },
  {
    "path": "packages/fdc3-context/schemas/context/instrumentList.schema.json",
    "chars": 2208,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/instrume"
  },
  {
    "path": "packages/fdc3-context/schemas/context/interaction.schema.json",
    "chars": 4984,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/interact"
  },
  {
    "path": "packages/fdc3-context/schemas/context/message.schema.json",
    "chars": 2976,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/message."
  },
  {
    "path": "packages/fdc3-context/schemas/context/nothing.schema.json",
    "chars": 1047,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/nothing."
  },
  {
    "path": "packages/fdc3-context/schemas/context/order.schema.json",
    "chars": 2757,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/order.sc"
  },
  {
    "path": "packages/fdc3-context/schemas/context/orderList.schema.json",
    "chars": 1917,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/orderLis"
  },
  {
    "path": "packages/fdc3-context/schemas/context/organization.schema.json",
    "chars": 2309,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/organiza"
  },
  {
    "path": "packages/fdc3-context/schemas/context/portfolio.schema.json",
    "chars": 2748,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/portfoli"
  },
  {
    "path": "packages/fdc3-context/schemas/context/position.schema.json",
    "chars": 2270,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/position"
  },
  {
    "path": "packages/fdc3-context/schemas/context/product.schema.json",
    "chars": 1874,
    "preview": "{\n\t\"$schema\": \"http://json-schema.org/draft-07/schema#\",\n\t\"$id\": \"https://fdc3.finos.org/schemas/next/context/product.sc"
  },
  {
    "path": "packages/fdc3-context/schemas/context/timeRange.schema.json",
    "chars": 3013,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/timeRang"
  },
  {
    "path": "packages/fdc3-context/schemas/context/trade.schema.json",
    "chars": 2253,
    "preview": "{\n\t\"$schema\": \"http://json-schema.org/draft-07/schema#\",\n\t\"$id\": \"https://fdc3.finos.org/schemas/next/context/trade.sche"
  },
  {
    "path": "packages/fdc3-context/schemas/context/tradeList.schema.json",
    "chars": 2532,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/tradeLis"
  },
  {
    "path": "packages/fdc3-context/schemas/context/transactionresult.schema.json",
    "chars": 1872,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/transact"
  },
  {
    "path": "packages/fdc3-context/schemas/context/valuation.schema.json",
    "chars": 2045,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://fdc3.finos.org/schemas/next/context/valuatio"
  },
  {
    "path": "packages/fdc3-context/src/index.ts",
    "chars": 54,
    "preview": "export * from '../generated/context/ContextTypes.js';\n"
  },
  {
    "path": "packages/fdc3-context/test/validate-schema-examples.test.ts",
    "chars": 4647,
    "preview": "/**\n * SPDX-License-Identifier: Apache-2.0\n * Copyright FINOS FDC3 contributors - see NOTICE file\n */\n\n// This test vali"
  },
  {
    "path": "packages/fdc3-context/tsconfig.json",
    "chars": 364,
    "preview": "{\n    \"extends\": \"../../tsconfig.root.json\",\n    \"compilerOptions\": {\n        \"rootDirs\": [\n            \"src\",\n         "
  },
  {
    "path": "packages/fdc3-context/vitest.config.ts",
    "chars": 205,
    "preview": "import { defineConfig } from 'vitest/config';\n\nexport default defineConfig({\n  test: {\n    include: ['test/**/*.test.ts'"
  },
  {
    "path": "packages/fdc3-get-agent/README.md",
    "chars": 1379,
    "preview": "# FDC3 Agent Proxy\n\nContains the main entry point for the Financial Desktop Connectivity and Collaboration Consortium (F"
  },
  {
    "path": "packages/fdc3-get-agent/eslint.config.mjs",
    "chars": 536,
    "preview": "import globals from 'globals';\nimport pluginJs from '@eslint/js';\nimport tseslint from 'typescript-eslint';\nimport eslin"
  },
  {
    "path": "packages/fdc3-get-agent/package.json",
    "chars": 1198,
    "preview": "{\n  \"name\": \"@finos/fdc3-get-agent\",\n  \"version\": \"2.2.2\",\n  \"author\": \"Fintech Open Source Foundation (FINOS)\",\n  \"home"
  },
  {
    "path": "packages/fdc3-get-agent/src/Fdc3Version.ts",
    "chars": 35,
    "preview": "export const FDC3_VERSION = '2.2';\n"
  },
  {
    "path": "packages/fdc3-get-agent/src/apps/NoopAppSupport.ts",
    "chars": 520,
    "preview": "import { AppIdentifier, AppMetadata } from '@finos/fdc3-standard';\nimport { Messaging } from '@finos/fdc3-agent-proxy';\n"
  },
  {
    "path": "packages/fdc3-get-agent/src/index.ts",
    "chars": 1350,
    "preview": "import { DesktopAgent } from '@finos/fdc3-standard';\nimport { getAgent } from './strategies/getAgent.js';\nimport { Abstr"
  },
  {
    "path": "packages/fdc3-get-agent/src/messaging/MessagePortMessaging.ts",
    "chars": 2049,
    "preview": "import { AbstractMessaging, RegisterableListener } from '@finos/fdc3-agent-proxy';\nimport { AppIdentifier, GetAgentParam"
  },
  {
    "path": "packages/fdc3-get-agent/src/messaging/message-port.ts",
    "chars": 4036,
    "preview": "import { AppIdentifier, DesktopAgent, LogLevel } from '@finos/fdc3-standard';\nimport {\n  DesktopAgentProxy,\n  DefaultCha"
  },
  {
    "path": "packages/fdc3-get-agent/src/sessionStorage/DesktopAgentDetails.ts",
    "chars": 3470,
    "preview": "import { DesktopAgentDetails, DESKTOP_AGENT_SESSION_STORAGE_KEY_PREFIX } from '@finos/fdc3-standard';\nimport { Logger } "
  },
  {
    "path": "packages/fdc3-get-agent/src/strategies/DesktopAgentPreloadLoader.ts",
    "chars": 4216,
    "preview": "import { AgentError, DesktopAgent, WebDesktopAgentType } from '@finos/fdc3-standard';\nimport { GetAgentParams } from '@f"
  },
  {
    "path": "packages/fdc3-get-agent/src/strategies/FailoverHandler.ts",
    "chars": 5775,
    "preview": "import {\n  GetAgentParams,\n  DesktopAgent,\n  WebDesktopAgentType,\n  AgentError,\n  AppIdentifier,\n  LogLevel,\n} from '@fi"
  },
  {
    "path": "packages/fdc3-get-agent/src/strategies/HelloHandler.ts",
    "chars": 6398,
    "preview": "import { FDC3_VERSION, GetAgentParams, WebDesktopAgentType } from '@finos/fdc3-standard';\nimport { ConnectionDetails } f"
  },
  {
    "path": "packages/fdc3-get-agent/src/strategies/IdentityValidationHandler.ts",
    "chars": 5941,
    "preview": "import { GetAgentParams, AgentError } from '@finos/fdc3-standard';\nimport { retrieveDesktopAgentDetails } from '../sessi"
  },
  {
    "path": "packages/fdc3-get-agent/src/strategies/Loader.ts",
    "chars": 860,
    "preview": "import { DesktopAgent, WebDesktopAgentType } from '@finos/fdc3-standard';\nimport { GetAgentParams } from '@finos/fdc3-st"
  },
  {
    "path": "packages/fdc3-get-agent/src/strategies/PostMessageLoader.ts",
    "chars": 6727,
    "preview": "import { AgentError, AppIdentifier, GetAgentParams, LogLevel } from '@finos/fdc3-standard';\nimport { createDesktopAgentA"
  },
  {
    "path": "packages/fdc3-get-agent/src/strategies/Timeouts.ts",
    "chars": 785,
    "preview": "/**\n * The default timeout used by getAgent when discovering Desktop Agents.\n */\nexport const DEFAULT_GETAGENT_TIMEOUT_M"
  },
  {
    "path": "packages/fdc3-get-agent/src/strategies/getAgent.ts",
    "chars": 9012,
    "preview": "import {\n  DesktopAgent,\n  GetAgentType,\n  GetAgentParams,\n  AgentError,\n  DesktopAgentDetails,\n  WebDesktopAgentType,\n}"
  },
  {
    "path": "packages/fdc3-get-agent/src/ui/AbstractUIComponent.ts",
    "chars": 5625,
    "preview": "import { Connectable, FDC3_VERSION } from '@finos/fdc3-standard';\nimport { Logger } from '../util/Logger.js';\nimport { B"
  },
  {
    "path": "packages/fdc3-get-agent/src/ui/DefaultDesktopAgentChannelSelector.ts",
    "chars": 2194,
    "preview": "import { Channel } from '@finos/fdc3-standard';\nimport { ChannelSelector } from '@finos/fdc3-standard';\nimport { Abstrac"
  },
  {
    "path": "packages/fdc3-get-agent/src/ui/DefaultDesktopAgentIntentResolver.ts",
    "chars": 2287,
    "preview": "import { AppIntent } from '@finos/fdc3-standard';\nimport { IntentResolver, IntentResolutionChoice } from '@finos/fdc3-st"
  },
  {
    "path": "packages/fdc3-get-agent/src/ui/NullChannelSelector.ts",
    "chars": 421,
    "preview": "import { Connectable } from '@finos/fdc3-standard';\nimport { ChannelSelector } from '@finos/fdc3-standard';\n\n/** Impleme"
  },
  {
    "path": "packages/fdc3-get-agent/src/ui/NullIntentResolver.ts",
    "chars": 360,
    "preview": "import { IntentResolver, IntentResolutionChoice } from '@finos/fdc3-standard';\n\n/** Implementation used when an injected"
  },
  {
    "path": "packages/fdc3-get-agent/src/util/Logger.ts",
    "chars": 527,
    "preview": "import { AbstractFDC3Logger } from '@finos/fdc3-agent-proxy';\nimport { LogLevel } from '@finos/fdc3-standard';\n\n/**\n * L"
  },
  {
    "path": "packages/fdc3-get-agent/src/util/Uuid.ts",
    "chars": 98,
    "preview": "import { v4 as uuidv4 } from 'uuid';\n\nexport function createUUID(): string {\n  return uuidv4();\n}\n"
  },
  {
    "path": "packages/fdc3-get-agent/test/README.md",
    "chars": 516,
    "preview": "# FDC3 GetAgent Test Infrastructure\n\nThe test infrastructure for fdc3-get-agent is complex as it has to mock a collectio"
  },
  {
    "path": "packages/fdc3-get-agent/test/features/default-channel-selector.feature",
    "chars": 1104,
    "preview": "Feature: Default Channel Selector\n\n  Background: Desktop Agent API\n    Given a parent window document in \"parentDoc\", wi"
  },
  {
    "path": "packages/fdc3-get-agent/test/features/default-intent-resolver.feature",
    "chars": 1424,
    "preview": "Feature: Default Intent Resolver\n\n  Background: Desktop Agent API\n    Given a parent window document in \"parentDoc\", win"
  },
  {
    "path": "packages/fdc3-get-agent/test/features/desktop-agent-disconnect.feature",
    "chars": 1069,
    "preview": "Feature: Death of the Desktop Agent\n\n  Background: Desktop Agent API\n    # Given a browser document in \"document\" and wi"
  },
  {
    "path": "packages/fdc3-get-agent/test/features/desktop-agent-strategy.feature",
    "chars": 24462,
    "preview": "Feature: Different Strategies for Accessing the Desktop Agent\n\n  Background: Desktop Agent API\n    Given a parent window"
  },
  {
    "path": "packages/fdc3-get-agent/test/features/proxy-timeouts.feature",
    "chars": 3694,
    "preview": "Feature: Message exchange timeouts\n\n  Background: Desktop Agent API\n    Given a parent window document in \"parentDoc\", w"
  },
  {
    "path": "packages/fdc3-get-agent/test/features/utils.feature",
    "chars": 490,
    "preview": "Feature: Utility functions\n\n  Scenario: Logger utility\n    When All log functions are used with a message\n    When All l"
  },
  {
    "path": "packages/fdc3-get-agent/test/step-definitions/channel-selector.steps.ts",
    "chars": 1590,
    "preview": "import { Given } from 'quickpickle';\nimport { handleResolve } from '@finos/testing';\nimport { DefaultDesktopAgentChannel"
  },
  {
    "path": "packages/fdc3-get-agent/test/step-definitions/desktop-agent-api.steps.ts",
    "chars": 1447,
    "preview": "import { When } from 'quickpickle';\nimport { handleResolve } from '@finos/testing';\nimport { CustomWorld } from '../worl"
  },
  {
    "path": "packages/fdc3-get-agent/test/step-definitions/desktop-agent.steps.ts",
    "chars": 16485,
    "preview": "import { After, Given, Then, When } from 'quickpickle';\nimport { DataTable } from '@cucumber/cucumber';\nimport { CustomW"
  },
  {
    "path": "packages/fdc3-get-agent/test/step-definitions/generic.steps.ts",
    "chars": 234,
    "preview": "import { setupGenericSteps } from '@finos/testing';\nimport path from 'path';\n\n// Register shared generic steps from @fin"
  },
  {
    "path": "packages/fdc3-get-agent/test/step-definitions/intent-resolver.steps.ts",
    "chars": 3925,
    "preview": "import { Given, When } from 'quickpickle';\nimport { CustomWorld } from '../world/index.js';\nimport { handleResolve } fro"
  }
]

// ... and 1459 more files (download for full content)

About this extraction

This page contains the full source code of the finos/FDC3 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1659 files (6.7 MB), approximately 1.8M tokens, and a symbol index with 2320 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!