Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FDC3 for Web specification #1191

Open
wants to merge 191 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
191 commits
Select commit Hold shift + click to select a range
1ba26e0
First pass browser-resident DAs
thorsent Feb 29, 2024
fd94343
Add BCP definitions
thorsent Mar 1, 2024
253dc93
Finish protocols
thorsent Mar 4, 2024
28c7a95
Update docs/specs/getAgent.md
kriswest Apr 15, 2024
02d0322
Merge branch 'fdc3-for-web' into thorsent/fdc3-for-web-spec
kriswest Apr 15, 2024
3ebd5f2
Merge pull request #1167 from thorsent/thorsent/fdc3-for-web-spec
kriswest Apr 15, 2024
ac7723f
50% complete json schemas for api wire protocol messages
kriswest Apr 16, 2024
de724be
completing most API call messages in wire protocol
kriswest Apr 16, 2024
8bcaab2
adding messages for managing context and intent listeners
kriswest Apr 17, 2024
bc8ec0f
Completing private channel message exchanges and all event messages
kriswest Apr 17, 2024
fbf7598
prettier
kriswest Apr 17, 2024
971f62d
minor jsdoc correction
kriswest Apr 19, 2024
3d72ff0
Merge branch 'main' into fdc3-for-web
kriswest Apr 30, 2024
68121b7
Updating getAgent and Errors docs pages for fdc3-for-the-web
kriswest Apr 30, 2024
7d975e9
minor clarification in Private Channel content
kriswest Apr 30, 2024
4def718
moving new DA specs files
kriswest Apr 30, 2024
278eca6
Updates to API spec based on PR feedback
kriswest Apr 30, 2024
f5366a0
improving supported platforms content
kriswest May 1, 2024
a43c7a1
Updating raiseIntent API messages to include a NeedsResolution message
kriswest May 13, 2024
5d45c1d
Adding Web Connection protocol messages
kriswest May 13, 2024
ce2e30d
Merge branch 'DOTNET-FDC3-signatures' into fdc3-for-web
kriswest May 13, 2024
cdd5737
Corrections to API schemas from testing
kriswest May 13, 2024
eebb133
fixing further minor schema errors
kriswest May 14, 2024
6c5d5aa
failed attempts to resolve an issue with compiling the WCPConnectionS…
kriswest May 14, 2024
8b439c1
Merge branch 'DOTNET-FDC3-signatures' into fdc3-for-web
kriswest May 14, 2024
47af92d
Further corrections to API schemas
kriswest May 14, 2024
ae9e50d
Further schema fixes + first generated typescript output
kriswest May 14, 2024
944cb82
missed from last commit
kriswest May 14, 2024
07f8886
adding getCurrentContext request/response
kriswest May 15, 2024
803128d
adding a broadcast event for the DA to use to communicate with listeners
kriswest May 15, 2024
0ef87c8
Adding first pass on iframe messages
kriswest May 24, 2024
ccdfa29
adjustments to resolver messages
kriswest May 24, 2024
46e00b0
Adding event message to feed intents raised to handlers for addIntent…
kriswest May 24, 2024
e724955
First channel selector messages (setup and selection)
kriswest May 24, 2024
903262b
Adding drag and resize messages for channel selector
kriswest May 24, 2024
3414716
Correcting titles in WCP schemas and hence naming in generated types
kriswest Jun 19, 2024
50fe214
making originatingApp optional in intentEvent as its optional in the…
kriswest Jun 27, 2024
b750b19
Merge branch 'main' into fdc3-for-web
kriswest Jul 1, 2024
4e1f59e
Regenerating types from schemas + migrating merged correction to find…
kriswest Jul 1, 2024
b225a08
Merge branch 'DOTNET-FDC3-signatures' into fdc3-for-web
kriswest Jul 1, 2024
b566ee1
Fixing extraneous closing tags in Errors.md
kriswest Jul 1, 2024
01b9284
Navigation and requirements tweaks
kriswest Jul 4, 2024
fcc5bf4
Tidy up compliance requirements + a note in BCP
kriswest Jul 5, 2024
d941719
add originating app metadata to broadcast event
kriswest Jul 16, 2024
14952ae
Fix OpenRequest context omission and FIndIntentsByContextResponse typo
kriswest Jul 23, 2024
9ac3ab4
Fix to typescript generation from schema scripts
kriswest Jul 23, 2024
5c592c9
Fix privateChannelOnUnsubscribeEvent name and an issue with the type…
kriswest Jul 23, 2024
0527fb2
Merge branch 'main' into fdc3-for-web
kriswest Jul 23, 2024
49a7f2b
regenerating after merging main (IntentMetadata.displayName is optional)
kriswest Jul 23, 2024
5deeb5d
Fix issue in privateChanneladdEventListenerRequestSchema.json
kriswest Jul 26, 2024
aa276dd
small tweaks to supported-platforms and glossary (WIP)
kriswest Jul 26, 2024
3cada7f
rework getAgent for using URLs + add glossary entries
kriswest Jul 29, 2024
c93c58b
rename 'Browser Communication Protocol' to 'Desktop Agent Communicato…
kriswest Jul 29, 2024
77f0023
Adding addEventListener messages
kriswest Jul 30, 2024
689038e
Added notes on retrieval of current context when adding context liste…
kriswest Jul 30, 2024
3465739
fix docusaurus sidebar + edits to getAgent, supported platforms, sche…
kriswest Jul 30, 2024
d21a179
Switch to more readable syntax highlighting theme
kriswest Jul 31, 2024
0b87318
Reworked GetAgent page and source file
kriswest Jul 31, 2024
b0bca64
rework supported-platforms
kriswest Jul 31, 2024
df3680f
Merge branch 'DOTNET-FDC3-signatures' into fdc3-for-web
kriswest Jul 31, 2024
3af5b3c
Tweak to supported platforms content for native after merging changes
kriswest Jul 31, 2024
69a4c08
Update errors page
kriswest Jul 31, 2024
d46ab5d
minor tweaks to docusaurus config and supported platforms
kriswest Aug 1, 2024
70ea90f
Adding missing messages and docs for Intent Results
kriswest Aug 1, 2024
a628009
Update WCP to use identityUrl rather than appId/appDUrl for identity
kriswest Aug 1, 2024
71f0a37
Minor addition to API access details in API overview
kriswest Aug 2, 2024
204e736
Correct spelling of FindIntentsByContextResponse
kriswest Aug 2, 2024
a42798c
Make channelId nullable in broadcastEvent (for use with fdc3.open)
kriswest Aug 20, 2024
f9fddc1
Add eventListenerUnsubscribeRequest/Response
kriswest Aug 21, 2024
fec9f8b
Merge branch 'DOTNET-FDC3-signatures' into fdc3-for-web
kriswest Aug 21, 2024
f38e89b
Merge branch 'DOTNET-FDC3-signatures' into fdc3-for-web
kriswest Aug 23, 2024
23020b1
Make all getAgent params optional
kriswest Aug 23, 2024
56a41bb
Adding disconnection step WCP6Goodbye to WCP
kriswest Aug 23, 2024
b71d622
Correct jsdoc for dontSetWindowFdc3
kriswest Aug 27, 2024
54dbdb1
Adding a note to fdc3Ready that its not needed if using getAgent()
kriswest Aug 27, 2024
f29753a
Adding acronyms and bridge protocol names to glossary + differentiate…
kriswest Aug 27, 2024
6bb5699
Adjusting iframe messages
kriswest Aug 29, 2024
0dbdf24
Adding heartbeat event and responses to DACP
kriswest Aug 29, 2024
a91951c
Update docs/api/ref/GetAgent.md
robmoffat Aug 29, 2024
c042309
Rename `heartbeatResponseRequest` to `heartbestAcknowledgment`
kriswest Aug 30, 2024
522319a
WIP DA specifications
kriswest Sep 2, 2024
b990d3d
Merge branch 'main' into fdc3-for-web
kriswest Sep 2, 2024
3543edd
Fixing HeartbeatAcknowledgementRequest type
kriswest Sep 3, 2024
acc03b9
Adding actualUrl to WCP messages
kriswest Sep 3, 2024
6738758
Update validateIdentity function
kriswest Sep 3, 2024
c546535
remove `validateIdentity()`
kriswest Sep 4, 2024
ed60bfc
adding eventUuid reference to intentResultRequest
kriswest Sep 4, 2024
abcc577
Adjusting iframe messages
kriswest Sep 4, 2024
065c0d7
Adjusting module exports and adding BrowserTypes
kriswest Sep 4, 2024
f4f6009
renaming type declaration for getAgent to GetAgentType
kriswest Sep 5, 2024
a696f63
correct a type in getAgent example
kriswest Sep 5, 2024
e2a8a55
Fix naming inconsistency in WCP1Hello and WCP3Handshake
kriswest Sep 5, 2024
1d1e53b
Updates to Browser Resident DA specs
kriswest Sep 5, 2024
dd81ea6
correcting admonition in browser specs
kriswest Sep 5, 2024
59c3d0d
another admonition + moving disconnects into WCP section of Browser s…
kriswest Sep 5, 2024
a161739
Clarifying disconnect content
kriswest Sep 5, 2024
6e0881e
Merge branch 'main' into fdc3-for-web
kriswest Sep 5, 2024
99918b2
Update glossary references and intro to Web Connection protocol
kriswest Sep 6, 2024
2cf84b4
WIP Web Connection Protocol (WCP) documentation
kriswest Sep 9, 2024
29ba0a2
deleting defunct protocol files
kriswest Sep 10, 2024
f9eeeb7
WIP Web Connection Protocol docs
kriswest Sep 10, 2024
acf8064
adding raiseIntentRequestUuid reference field to intentEvent and inte…
kriswest Sep 11, 2024
391c923
Move AgentError into Errors.ts
kriswest Sep 11, 2024
8bf2972
Near complete WCP docs
kriswest Sep 11, 2024
c66088a
Adjusting WCP diagram rendering
kriswest Sep 11, 2024
a501d99
Improvements to WCP protocol diagram
kriswest Sep 11, 2024
707601b
resuffling sections for better reading in WCP spec
kriswest Sep 11, 2024
efc7e7c
fix rendering of WCP diagram in docusaurus
kriswest Sep 11, 2024
e18792d
All null listeners types in addEventListenerRequest
kriswest Sep 11, 2024
3d373e5
Introduction to and skeleton of DACP reference doc
kriswest Sep 11, 2024
e9153df
Adjustments to WCP flow diagram and adding some implementation tips
kriswest Sep 12, 2024
2d28bb8
more minor WCP flow diagram tweaks
kriswest Sep 12, 2024
7ae1421
Making all CSS properties in iframeHello optional
kriswest Sep 12, 2024
dcf0e6b
Merge branch 'main' into fdc3-for-web
kriswest Sep 12, 2024
c60dcfa
Removing `addEventListenerEvent` as it was superseded by `ChannelChan…
kriswest Sep 12, 2024
6d864a7
improving WCP schema intro and WIP draft of DACP docs
kriswest Sep 12, 2024
45a737f
Complete first draft of DACP protocol docs
kriswest Sep 13, 2024
c2609fa
Adjust name of Browser-resident DA section
kriswest Sep 13, 2024
8096473
Add missing `"type": "object"` to RaiseIntentResultErrorResponsePayload
kriswest Sep 13, 2024
ce844eb
completing final section of DACP 'Routing, Registering Listeners & M…
kriswest Sep 13, 2024
f4b44a1
Simplify heart message fields and use the eventUuid to link response …
kriswest Sep 16, 2024
07469da
minor formatting in browser spec
kriswest Sep 16, 2024
32acca7
Update docs/api/specs/browserResidentDesktopAgents.md
kriswest Sep 16, 2024
96cfe6d
Update docs/api/specs/browserResidentDesktopAgents.md
kriswest Sep 16, 2024
743ede1
Making Robs requested change to WCP step metadata
kriswest Sep 18, 2024
169e6c9
Fix references to Page Lifecycle API
kriswest Sep 18, 2024
ef5fc76
Adding detail about initial styling of interface iframes
kriswest Sep 19, 2024
d4e45c4
Formatting and other corrections from review meeting 20240919
kriswest Sep 19, 2024
91f3e5d
further clarifying iframe positioning/position fixed
kriswest Sep 19, 2024
3e8d0e7
Correcting minor spelling errors
kriswest Sep 19, 2024
910c3cf
Merge branch 'main' into fdc3-for-web
kriswest Sep 19, 2024
2e5da98
Standardize spacing on javascript import examples
kriswest Sep 20, 2024
bac6162
Merge branch 'main' into fdc3-for-web
kriswest Sep 20, 2024
81a3518
typo fix in GetAgent
kriswest Sep 20, 2024
5af5d06
typo: alloted
kriswest Sep 20, 2024
4b43047
typo corrections
kriswest Sep 20, 2024
a9ba621
Typos in DACP
kriswest Sep 20, 2024
afb0991
Clarifying open in the DACP based on feedback
kriswest Sep 20, 2024
8f79cdd
Use double quotes in code examples
kriswest Sep 24, 2024
c5046e2
typing in loadIframe example
kriswest Sep 24, 2024
01f862f
formatting and correction to WCP1Hello example
kriswest Sep 24, 2024
7c089d2
minor indentation corrections
kriswest Sep 24, 2024
9f0bc4d
Typos in Preload Desktop Agents spec
kriswest Sep 24, 2024
8c2cdfe
Typos in Browser Resident Desktop Agents spec
kriswest Sep 24, 2024
e3ce1db
missing space in browser spec
kriswest Sep 24, 2024
dda1f27
make error enums consistent
kriswest Sep 24, 2024
3c087a8
switch to `const desktopAgent` from `const fdc3` to break form the past
kriswest Sep 24, 2024
03d1c91
Changing the name of iframe messages (namespacing) to avoid potential…
kriswest Sep 24, 2024
0d2c9a4
correcting some capitalization
kriswest Sep 24, 2024
f126aa4
Merge branch 'main' into fdc3-for-web
kriswest Sep 24, 2024
ae793ca
Merge branch 'fdc3-for-web' into fdc3-for-web-namespace-iframe-messages
kriswest Sep 24, 2024
2c89b4d
adjusting language in WCP1 and WCP3 field descriptions relating to us…
kriswest Sep 24, 2024
be131b6
Fixes from @novavi's review
kriswest Sep 25, 2024
eeb96f8
Merge pull request #1375 from finos/fdc3-for-web-namespace-iframe-mes…
kriswest Sep 25, 2024
d255556
more typos in web connection protocol
kriswest Sep 25, 2024
b2d2ef0
More fixes from review
kriswest Sep 25, 2024
5e8ba8b
more fixes from review
kriswest Sep 25, 2024
62dd2b6
More fixes from review
kriswest Sep 25, 2024
22cb6be
note on render thread crashes
kriswest Sep 25, 2024
4a9715e
Capitalization in flow chart
kriswest Sep 25, 2024
976af80
More fixes from review
kriswest Sep 25, 2024
a0a43c4
Change WebDesktopAgentType to PascalCase
kriswest Sep 26, 2024
abc2b7f
Adding warnings about CSPs and injected iframes
kriswest Sep 26, 2024
de42a30
Fixing casing issue in schema file names part 1
kriswest Oct 1, 2024
ff4347c
Fixing casing issue in schema file names part 2
kriswest Oct 1, 2024
c94e694
Apply suggestions from code review
kriswest Oct 1, 2024
12d3de5
Make window.fdc3 optional
Roaders Oct 15, 2024
d6c5dae
fix failing lint check
Roaders Oct 15, 2024
2f2e5ad
Update CHANGELOG.md
Roaders Oct 15, 2024
97ef68d
added GetAgent root export
Roaders Oct 15, 2024
1a21b02
Merge branch 'main' into fdc3-for-web
kriswest Oct 15, 2024
cb40194
Update CHANGELOG.md
kriswest Oct 21, 2024
001b6cc
Merge pull request #1386 from Roaders/window-fdc3-optional
kriswest Oct 21, 2024
33e8532
Deprecating functions in Methods.ts
kriswest Oct 25, 2024
15e9214
Merge pull request #1403 from finos/fdc3-for-web-deprecate-methods.ts…
kriswest Oct 31, 2024
95ad54f
Corrections to CHANGELOG.md
kriswest Nov 4, 2024
43154ab
Grammatical correction in agent bridging spec
kriswest Nov 4, 2024
56c8c4e
Update fdc3-glossary.md
kriswest Nov 4, 2024
2bc609b
Correcting copy on AgentError.InvalidFailover
kriswest Nov 4, 2024
2123c59
type in GetAgent docs
kriswest Nov 4, 2024
5b726e6
correction in PrivateChannel
kriswest Nov 4, 2024
3777b4d
Corrections to browser resident spec from review
kriswest Nov 4, 2024
ffca8c4
More corrections to browser resident spec from review
kriswest Nov 4, 2024
34587f7
Corrections from review
kriswest Nov 4, 2024
3896bc3
corrections from review
kriswest Nov 4, 2024
4e866f1
Corrections from review
kriswest Nov 4, 2024
93226f9
Corrections from review
kriswest Nov 4, 2024
e48bf19
Corrections to message schemas from review
kriswest Nov 4, 2024
f44482d
Corrections to schema comments an generated code, from review
kriswest Nov 4, 2024
120f450
More corrections to schemas, generated bridging types and Method.ts f…
kriswest Nov 4, 2024
b063ee4
comment correction
kriswest Nov 4, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 17 additions & 8 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,22 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* 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))
* Added optional validateAppIdentity() function to DesktopAgent interface. ([#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))

### 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))

### Deprecated

Expand Down Expand Up @@ -70,7 +79,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* 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-compatability of types. ([#1093](https://github.com/finos/FDC3/pull/1093))
* 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

Expand All @@ -86,7 +95,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* 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 ussing a `url` rather than `src` field are caught by the schemas when used to validate. ([#1037](https://github.com/finos/FDC3/pull/1037))
* 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))

Expand Down Expand Up @@ -114,8 +123,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* 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 targetted 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 targetting 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 `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))
Expand Down Expand Up @@ -143,7 +152,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* 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 `getAppMetdata()` 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))
* 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

Expand Down Expand Up @@ -248,7 +257,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### 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 standardised `Intents` and `ContextTypes` ([#264](https://github.com/finos/FDC3/pull/264))
* 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))

Expand Down Expand Up @@ -318,13 +327,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Changed

* General cleanup of spelling, grammar and punctuation ([#34](https://github.com/finos/FDC3/pull/34))
* Use cases callout on website landing page ([#54](https://github.com/finos/FDC3/pull/54))
* 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 colouring on responsive website ([#56](https://github.com/finos/FDC3/pull/56))
* 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))
Expand Down
16 changes: 8 additions & 8 deletions docs/agent-bridging/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ In any Desktop Agent Bridging scenario, it is expected that each DA is being ope

The Desktop Agent Bridging Part of the FDC3 Standard is composed of three components:

- **[Connection](#connection)**: A means for Desktop Agents to communicate with a bridge, and through that bridge, with each other.
- **[Connection Protocol](#connection-protocol)**: A protocol defining message exchanges necessary to connect to a Bridge and to perform initial state synchronization.
- **[Messaging Protocol](#messaging-protocol)**: A protocol defining message exchanges that allow FDC3 API interop to extend across multiple Desktop Agents.
- **[Bridge Connection](#connection)**: A means for Desktop Agents to communicate with a bridge, and through that bridge, with each other.
- **[Bridge Connection Protocol (BCP)](#bridge-connection-protocol)**: A protocol defining message exchanges necessary to connect to a Bridge and to perform initial state synchronization.
- **[Bridge Messaging Protocol (BMP)](#bridge-messaging-protocol)**: A protocol defining message exchanges that allow FDC3 API interop to extend across multiple Desktop Agents.

Detail on each of these components is defined in the following sections.

Expand All @@ -69,7 +69,7 @@ Agent Bridging is introduced in FDC3 2.1 as an [@experimental](../fdc3-complianc

### JSON Message Protocol & JSON Schema

The connection and messaging protocols that the Desktop Agent Bridging Part defines are based on messages encoded in JSON. [JSON Schema](https://json-schema.org/) is used to define the format of each message in the protocol and should be considered the 'source of truth' for each and may be used to validate that individual messages are in the correct format. However, examples are provided in the documentation in TypeScript and JavaScript formats for convenience. TypeScript interfaces for individual messages, included in the FDC3 NPM module, are generated from the JSON Schema source files using [quicktype](https://quicktype.io/).
The Bridge Connection Protocol (BCP) and Bridge Messaging Protocols (BMP) that the Desktop Agent Bridging Part defines are based on messages encoded in JSON. [JSON Schema](https://json-schema.org/) is used to define the format of each message in the protocol. These schema files should be considered the 'source of truth' for each and may be used to validate that individual messages are in the correct format. However, examples are provided in the documentation in TypeScript and JavaScript formats for convenience. TypeScript interfaces for individual messages, included in the FDC3 NPM module, are generated from the JSON Schema source files using [quicktype](https://quicktype.io/).

## Connection

Expand Down Expand Up @@ -156,7 +156,7 @@ Both DAs and bridge implementations SHOULD support at least connection to the re

As the bridge binds its websocket on the loopback address (127.0.0.1) it cannot be connected to from another device. Hence, an instance of the standalone bridge may be run on each device and those instances exchange messages by other means in order to implement the bridge cross-device.

## Connection Protocol
## Bridge Connection Protocol

On connection to the bridge's websocket, a handshake must be completed that may include an authentication step before a name is assigned to the Desktop Agent for use in routing messages. The purpose of the handshake is to allow:

Expand Down Expand Up @@ -435,7 +435,7 @@ Desktop Agents SHOULD provide visual feedback to end users when they or other ag

Although not part of the connection protocol, it should be noted that the `connectedAgentsUpdate` message sent in step 6 should also be sent whenever an agent disconnects from the bridge to update other agents. If any agents remain connected, then the `channelState` does not change and can be omitted. However, if the last agent disconnects the bridge SHOULD discard its internal `channelState`, instead of issuing the update.

## Messaging Protocol
## Bridge Messaging Protocol

In order for Desktop Agents to communicate with the Desktop Agent Bridge and thereby other Desktop Agents, a messaging protocol is required. FDC3 supports both 'fire and forget' interactions (such as the broadcast of context messages) and interactions with specific responses (such as raising intents and returning a resolution and optional result), both of which must be handled by that messaging protocol and message formats it defines, as described in this section.

Expand Down Expand Up @@ -836,7 +836,7 @@ And an error enumeration is created for errors related to bridging that may occu
```typescript
enum BridgingError {
/** Returned if a Desktop Agent did not return a response, via Desktop Agent Bridging,
* within the alloted timeout. */
* within the allotted timeout. */
ResponseTimedOut = 'ResponseToBridgeTimedOut',
/** Returned if a Desktop Agent that has been targeted by a particular request has
* been disconnected from the Bridge before a response has been received from it. */
Expand Down Expand Up @@ -1006,7 +1006,7 @@ However, `PrivateChannel` instances allow the registration of additional event h

#### Message Schemas and generated sources

JSONSchema definitions are provided for all Desktop Agent Bridging message exchanges (see links in each reference page), which may be used to validate the correct generation of messages to or from a bridge (a separate schema is provided for the agent and bridge versions of each message).
JSONSchema definitions are provided for all Desktop Agent Bridging message exchanges defined by the Bridge Messaging Protocol (see links in each reference page), which may be used to validate the correct generation of messages to or from a bridge (a separate schema is provided for the agent and bridge versions of each message).

The JSONSchema definitions are also used to generate TypeScript interfaces for the messages to aid in implementation of a Desktop Agent Bridge or client library. These may be imported from the FDC3 npm module:

Expand Down
Loading