diff --git a/CHANGELOG.md b/CHANGELOG.md index bdd9e972d..3b9ef15b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] ### Added + ### Changed diff --git a/packages/fdc3-standard/src/api/DesktopAgent.ts b/packages/fdc3-standard/src/api/DesktopAgent.ts index d97f99e62..dd0811c9b 100644 --- a/packages/fdc3-standard/src/api/DesktopAgent.ts +++ b/packages/fdc3-standard/src/api/DesktopAgent.ts @@ -547,6 +547,9 @@ export interface DesktopAgent { */ getAppMetadata(app: AppIdentifier): Promise; + // TODO: add getSubAgent definition + // TODO: add close or disconnect definition + //--------------------------------------------------------------------------------------------- // Deprecated function signatures //--------------------------------------------------------------------------------------------- diff --git a/website/docs/api/ref/DesktopAgent.md b/website/docs/api/ref/DesktopAgent.md index 0ba9a9eb9..283ec8013 100644 --- a/website/docs/api/ref/DesktopAgent.md +++ b/website/docs/api/ref/DesktopAgent.md @@ -25,6 +25,8 @@ interface DesktopAgent { open(app: AppIdentifier, context?: Context): Promise; findInstances(app: AppIdentifier): Promise>; getAppMetadata(app: AppIdentifier): Promise; + // TODO: add getSubAgent + // TODO: add a close or disconnect function (for subAgents or maybe all agents?) // context broadcast(context: Context): Promise; @@ -412,6 +414,10 @@ _desktopAgent.Broadcast(instrument); - [addContextListener](#addcontextlistener) +### `close` + + + ### `createPrivateChannel` @@ -1105,6 +1111,10 @@ var redChannel = userChannels.First(c => c.Id == "red"); - [`Channel`](Channel) +### `getSubAgent` + + + ### `joinUserChannel` diff --git a/website/docs/api/spec.md b/website/docs/api/spec.md index f7e4bc54f..538b3590b 100644 --- a/website/docs/api/spec.md +++ b/website/docs/api/spec.md @@ -121,6 +121,8 @@ An FDC3 Standard compliant Desktop Agent implementation **MUST**: - Provide details of whether they implement optional features of the Desktop Agent API in the `optionalFeatures` property of the [`ImplementationMetadata`](ref/Metadata#implementationmetadata) object returned by the [`fdc3.getInfo()`](ref/DesktopAgent#getinfo) function. - Allow, by default, at least a 15 second timeout for an application, launched via [`fdc3.open`](../api/ref/DesktopAgent#open), [`fdc3.raiseIntent`](../api/ref/DesktopAgent#raiseintent) or [`fdc3.raiseIntentForContext`](../api/ref/DesktopAgent#raiseintentforcontext) to add any context listener (via [`fdc3.addContextListener`](../api/ref/DesktopAgent#addcontextlistener)) or intent listener (via [`fdc3.addIntentListener`](../api/ref/DesktopAgent#addintentlistener)) necessary to deliver context or intent and context to it on launch. This timeout only applies to listeners needed to receive context on launch; further intent and context listeners not required on launch MAY be added later. + + An FDC3 Standard compliant Desktop Agent implementation **SHOULD**: - Support connection to one or more App Directories meeting the [FDC3 App Directory Standard](../app-directory/overview). @@ -132,6 +134,8 @@ An FDC3 Standard compliant Desktop Agent implementation **SHOULD**: - Prevent external apps from listening or publishing on a [`PrivateChannel`](ref/PrivateChannel) that they did not request or provide. - Enforce compliance with the expected behavior of intents (where Intents specify a contract that is enforceable by schema, for example, return object types) and return an error if the interface is not met. + + An FDC3 Standard compliant Desktop Agent implementation **MAY**: - Make the Desktop Agent API available through modules, imports, or other means. @@ -234,6 +238,12 @@ Additional metadata for an application can be retrieved via the [`fdc3.getAppMet Identifiers for instances of an application may be retrieved via the [`fdc3.findInstances(appIdentifier)`](ref/DesktopAgent#findinstances) function. +### Start sub-applications with their own identity + + + ## Raising Intents Raising an Intent is a method for an application to request functionality from another application and, if desired, defer the discovery and launching of the destination app to the Desktop Agent. @@ -843,3 +853,7 @@ To facilitate context linking in such situations it is recommended that applicat ### Originating App Metadata Optional metadata about each context message received, including the app that originated the message, SHOULD be provided by the desktop agent implementation to registered context handlers on all types of channel. As this metadata is optional, apps making use of it MUST handle cases where it is not provided. + +## Sub-applications + + \ No newline at end of file diff --git a/website/docs/api/specs/browserResidentDesktopAgents.md b/website/docs/api/specs/browserResidentDesktopAgents.md index 5ae6e6257..c038c9fa0 100644 --- a/website/docs/api/specs/browserResidentDesktopAgents.md +++ b/website/docs/api/specs/browserResidentDesktopAgents.md @@ -263,3 +263,7 @@ Communication between the `DesktopAgentProxy` and the iframes it injects is achi A further set of messages are provided for working with the injected user interfaces over their `MessageChannel` as part of the DACP, these are: `Fdc3UserInterfaceRestyle`, `Fdc3UserInterfaceDrag`, `Fdc3UserInterfaceChannels`, `Fdc3UserInterfaceChannelSelected`, `Fdc3UserInterfaceResolve` and `Fdc3UserInterfaceResolveAction`. See the [Desktop Agent Communication Protocol](./desktopAgentCommunicationProtocol) (DACP) for more details. + +## Requesting a sub-agent for an embedded application + + \ No newline at end of file diff --git a/website/docs/api/specs/desktopAgentCommunicationProtocol.md b/website/docs/api/specs/desktopAgentCommunicationProtocol.md index bd004772b..26c109dff 100644 --- a/website/docs/api/specs/desktopAgentCommunicationProtocol.md +++ b/website/docs/api/specs/desktopAgentCommunicationProtocol.md @@ -280,6 +280,10 @@ Request and response used to implement the [`getUserChannels()`](../ref/DesktopA - [`getUserChannelsRequest`](pathname:///schemas/next/api/getUserChannelsRequest.schema.json) - [`getUserChannelsResponse`](pathname:///schemas/next/api/getUserChannelsResponse.schema.json) +#### `getSubAgent()` + + + #### `joinUserChannel()` Request and response used to implement the [`joinUserChannel()`](../ref/DesktopAgent#joinuserchannel) API call: @@ -463,6 +467,10 @@ Additional procedures are defined in the [Browser Resident Desktop Agents specif ::: +### Requesting a sub-agent + + + ### Controlling Injected User Interfaces Desktop Agent implementations, such as those based on the [Browser Resident Desktop Agents specification](./browserResidentDesktopAgents) and [Web Connection Protocol](./webConnectionProtocol), may either provide their own user interfaces (or other appropriate mechanisms) for the selection of User Channels or Intent Resolution, or they may work with implementations injected into the application (for example, as described in the [Web Connection Protocol](./webConnectionProtocol#providing-channel-selector-and-intent-resolver-uis) and implemented in [`getAgent()`](../ref/GetAgent)). diff --git a/website/docs/api/specs/preloadDesktopAgents.md b/website/docs/api/specs/preloadDesktopAgents.md index 7d59b6b22..828175efa 100644 --- a/website/docs/api/specs/preloadDesktopAgents.md +++ b/website/docs/api/specs/preloadDesktopAgents.md @@ -26,3 +26,7 @@ However, implementors SHOULD also ensure that the global is made available as so Prior to FDC3 2.2, apps were advised to check for the existence of the FDC3 API at `window.fdc3` and then add a listener for the `fdc3Ready` event if it was not found. This has since been superseded by the recommendation to use `getAgent()`, which handles those steps internally, alongside supporting FDC3 in web browsers ( via the [Browser Resident Desktop Agent spec](./browserResidentDesktopAgents)). ::: + +## Requesting a sub-agent for an embedded application + + \ No newline at end of file diff --git a/website/docs/api/specs/webConnectionProtocol.md b/website/docs/api/specs/webConnectionProtocol.md index f3d2dbcc4..02c9f3528 100644 --- a/website/docs/api/specs/webConnectionProtocol.md +++ b/website/docs/api/specs/webConnectionProtocol.md @@ -393,3 +393,7 @@ The WCP allows applications to indicate to the `getAgent()` implementation wheth - [`WCP3Handshake`](pathname:///schemas/next/api/WCP3Handshake.schema.json): Response sent by the Desktop Agent and incorporating `payload.intentResolverUrl` and `payload.channelSelectorUrl` fields, which should be set to the URL for each UI implementation that should be loaded into an iframe to provide the UI (defaults to URLs for reference UI implementations provided by the FDC3 project), or set to `false` to indicate that the respective UI is not needed. Setting these fields to `true` will cause the `getAgent()` implementation to use its default URLs representing a reference implementation of each UI. When UI iframes are created, the user interfaces may use the `Fdc3UserInterface` messages incorporated into the [Desktop Agent Communication Protocol (DACP)](./desktopAgentCommunicationProtocol#controlling-injected-user-interfaces) to communicate with the `getAgent()` implementation and through it the Desktop Agent. + +### Requesting a sub-agent + + \ No newline at end of file