Skip to content

Commit 8d305e7

Browse files
committed
Update requirements
1 parent 4ced8ec commit 8d305e7

1 file changed

Lines changed: 102 additions & 46 deletions

File tree

Lines changed: 102 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,124 @@
1-
## Object Model Requirements
1+
# Object Model Requirements
22

3-
#### Definition
3+
## **Types**
44

5-
Name|Copilot Studio|Foundry|Note
6-
:--|:--:|:--:|:--
7-
ActionScope|✔|✔|Container for actions
8-
ActivateExternalTrigger|✔|❌
5+
-**Message**
6+
- Corresponds with user input or an agent response.
7+
- Requires robust support for how to access, identify most recent, transfer, count, etc...
8+
9+
-**Thread**
10+
- Every workflow invocation is associated with a single "user thread"
11+
- Each agent is associated with its own dedicated thread that is implicitly managed.
12+
- Exposing an explicit thread primative within a workflow introduces additional complexity that is not required.
13+
14+
## **Actions**
15+
16+
The following table enumerates the actions currently supported by _Copilot Studio_
17+
and those to be introduced specific to _Foundry_ workflows.
18+
_CopilotStudio_ actions not supported by _Foundry_ workflows are marked with ``.
19+
20+
Name|Copilot Studio|Foundry|Priority|Note
21+
:--|:--:|:--:|:--:|:--
22+
ActionScope|✔|✔|✔|Container for actions
23+
ActivateExternalTrigger|✔|❓||Not supported for v0. Evaluate trigger actions in next phase.
924
AdaptiveCardPrompt|✔|❌
10-
AnswerQuestionWithAI|✔|✔|Requires additional property: model (`ExternalModelConfiguration`)
25+
AnswerQuestionWithAI|✔|❌||Insufficient definition for _Foundry_. Use `InvokeChatCompletion` instead.
1126
BeginDialog|✔|❌
12-
BreakLoop|✔|✔
27+
BreakLoop|✔|✔|✔
1328
CSATQuestion|✔|❌
1429
CancelAllDialogs|✔|❌
1530
CancelDialog|✔|❌
16-
ClearAllVariables|✔|✔
17-
ConditionGroup|✔|✔|Includes one or more `ConditionItem` and an `ElseActions`
18-
ContinueLoop|✔|✔
31+
ClearAllVariables|✔|✔|✔
32+
ConditionGroup|✔|✔|✔|Includes one or more `ConditionItem` and an `ElseActions`.
33+
ContinueLoop|✔|✔|✔
1934
CreateSearchQuery|✔|❌
20-
DeleteActivity|✔|❓
21-
DisableTrigger|✔|
35+
DeleteActivity|✔|❓|❓|How does an _Activity_ differ from a _Message_?
36+
DisableTrigger|✔|❓||Not supported for v0. Evaluate trigger actions in next phase.
2237
DisconnectedNodeContainer|✔|❌
23-
EditTable|✔|
24-
EditTableV2|✔|✔|Are both `EditTable*` actions needed?
25-
EmitEvent|✔|
26-
EndConversation|✔|✔
38+
EditTable|✔|❌||Favor `EditTableV2` instead.
39+
EditTableV2|✔|✔|
40+
EmitEvent|✔|
41+
EndConversation|✔|✔|✔|Terminal action when specified. A sequential workflow will automatically end after the final action.
2742
EndDialog|✔|❌
28-
Foreach|✔|✔
29-
GetActivityMembers|✔|
30-
GetConversationMembers|✔|
31-
GotoAction|✔|✔
32-
HttpRequestAction|✔|❌
43+
Foreach|✔|✔|✔
44+
GetActivityMembers|✔|
45+
GetConversationMembers|✔|
46+
GotoAction|✔|✔|✔
47+
HttpRequestAction|✔|❌||Favor usage of `InvokeTool` instead.
3348
InvokeAIBuilderModelAction|✔|❌
34-
InvokeFoundryAgent|❌|✔|Based on _Foundry_ agent identifier
49+
InvokeAgent|❌|✔|✔|Produce a response for _Foundry_ agent based on its name or identifier.
50+
InvokeChatCompletion|❌|✔|✔|Invoke model using chat-completion API.
3551
InvokeConnectorAction|✔|❌
3652
InvokeCustomModelAction|✔|❌
3753
InvokeFlowAction|✔|❌
54+
InvokeResponse|❌|✔||Invoke model using response API. Not supported for v0.
3855
InvokeSkillAction|✔|❌
39-
LogCustomTelemetryEvent|✔|✔
56+
InvokeTool|❌|✔|❓|Unify how tools are defined and invoke directly (outside of agent invocation). Can include _Open API_, _Azure Function_, _Search_, etc...
57+
LogCustomTelemetryEvent|✔|❓||Not supported for v0. Could be captured as part of a [_Foundry_ Observability](https://learn.microsoft.com/azure/ai-foundry/agents/concepts/tracing).
4058
OAuthInput|✔|❌
41-
ParseValue|✔|✔
42-
Question|✔|❓|Solicits user input
43-
RecognizeIntent|✔|
59+
ParseValue|✔|✔|✔
60+
Question|✔|✔|✔|Solicits user input (human-in-the-loop).
61+
RecognizeIntent|✔|
4462
RepeatDialog|✔|❌
4563
ReplaceDialog|✔|❌
46-
ResetVariable|✔|✔
64+
ResetVariable|✔|✔|✔
4765
SearchAndSummarizeContent|✔|❌
4866
SearchAndSummarizeWithCustomModel|✔|❌
4967
SearchKnowledgeSources|✔|❌
50-
SendActivity|✔|
51-
SetTextVariable|✔|✔
52-
SetVariable|✔|✔
68+
SendActivity|✔|❓|❓|How does an _Activity_ differ from a _Message_?
69+
SetTextVariable|✔|✔|✔
70+
SetVariable|✔|✔|✔
5371
SignOutUser|✔|❌
54-
TransferConversation|✔|❌
55-
TransferConversationV2|✔|❌
56-
UnknownDialogAction|✔|❓
57-
UpdateActivity|✔|❓
58-
WaitForConnectorTrigger|✔|❌
59-
60-
#### Open Questions
61-
- Can a _Copilot Studio_ workflow be hosted in _Foundry_? **NO**
62-
- Can a _Foundry_ workflow be utlized in _Copilot Studio_? **NO**
63-
- Can a _Foundry_ workflow be hosted in different projects without modification? **NO**
64-
(Agent identifiers differ even if model deployments match.)
65-
- Is a _Foundry_ workfow specific to a single _Foundry_ project? **YES**
66-
- Can user defined workflow YAML be uploaded to a _Foundry_ project? **YES**
67-
(YAML can be authored in VS Code via a designer extension.)
68-
- What is the validation process for a declarative YAML workflow?
72+
TransferConversation|✔|❌||Favor `TransferConversationV2` instead, if at all.
73+
TransferConversationV2|✔|❌||Not supported for v0. Could invoke invoke a different workflow; although, overloading action may be undesirable.
74+
UnknownDialogAction|✔|❌||Serialization construct that represents an unknown action. Not explicitly expressed as a workflow action.
75+
UpdateActivity|✔|❓|❓|How does an _Activity_ differ from a _Message_?
76+
WaitForConnectorTrigger|✔|❓||Not supported for v0. Evaluate trigger actions in next phase.
77+
78+
## Behaviors
79+
80+
### Is a _Foundry_ workfow specific to a single _Foundry_ project?
81+
82+
Always.
83+
This implies that a _Foundry_ workflow has access to the resources associated with its project,
84+
including: models, agents, and connections.
85+
86+
### Can user defined workflow YAML be uploaded to a _Foundry_ project?
87+
88+
Yes.
89+
As _VS Code_ extension will support the authoring of _Foundry_ workflows in YAML.
90+
The resulting YAML can be uploaded to a _Foundry_ project.
91+
Ostensibly, one could directly author raw YAML and upload.
92+
93+
94+
### Can a Foundry workflow be hosted in different projects without modification?
95+
96+
Agent identifiers differ across projects even if model deployments match.
97+
This creates an incompatibility between projects,
98+
exception in the case where an agent is identified by name only.
99+
100+
101+
### Can a _Copilot Studio_ workflow be hosted in _Foundry_ or vice-versa?
102+
103+
Since the actions diverge between what is supported for _Copilot Studio_ and _Foundry_,
104+
interoperability between platforms is not generally supported.
105+
The special case where a workflow contains only the core actions that are supported by both platforms
106+
might allow for interoperablity.
107+
108+
### How and when are declarative workflows (YAML) validated?
109+
110+
Validating a declarative workflow prior to execution provides a superior user experience.
111+
This validation should be triggered for any workflow update:
112+
- Uploading a YAML file that creates or overwrites a workflow.
113+
- Creating or editing a workflow from the designer.
114+
115+
Validation must include:
116+
- Schema validation:
117+
Can the YAML be deserialized and parsed?
118+
- Functional validation:
119+
Does the YAML consist of only the actions supported by the _Foundry_ object model?
120+
Is each action properly defined with valid identifiers?
121+
- Reference validation:
122+
Are all referenced resources (models, agents, connections) valid and accessible?
123+
124+
At runtime the references shall be re-validated and, where relevant, logical names translated into physical identifiers.

0 commit comments

Comments
 (0)