house-lights 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +7 -3
  2. package/cli.mjs +3 -2
  3. package/package.json +4 -3
  4. package/skills/cast-list/assets/VERSION +2 -0
  5. package/skills/cast-list/assets/lesson.html +182 -0
  6. package/skills/cast-list/assets/map.html +244 -0
  7. package/skills/cast-list/examples/LICENSE-microsoft-skills-for-copilot-studio +21 -0
  8. package/skills/cast-list/examples/NOTICE.md +27 -0
  9. package/skills/cast-list/examples/agents/bodega-cupons/actions/ConsultarCuponsAtivos.mcs.yml +34 -0
  10. package/skills/cast-list/examples/agents/bodega-cupons/actions/EnviarCupomEmail.mcs.yml +34 -0
  11. package/skills/cast-list/examples/agents/bodega-cupons/actions/PromocoesMCP.mcs.yml +20 -0
  12. package/skills/cast-list/examples/agents/bodega-cupons/agent.mcs.yml +27 -0
  13. package/skills/cast-list/examples/agents/bodega-cupons/connectionreferences.mcs.yml +17 -0
  14. package/skills/cast-list/examples/agents/bodega-cupons/knowledge/RegulamentoCupons.knowledge.mcs.yml +7 -0
  15. package/skills/cast-list/examples/agents/bodega-cupons/settings.mcs.yml +13 -0
  16. package/skills/cast-list/examples/agents/bodega-cupons/topics/ConsultarRegulamentoCupons.topic.mcs.yml +56 -0
  17. package/skills/cast-list/examples/agents/bodega-cupons/topics/Escalate.topic.mcs.yml +20 -0
  18. package/skills/cast-list/examples/agents/bodega-cupons/topics/Fallback.topic.mcs.yml +32 -0
  19. package/skills/cast-list/examples/agents/bodega-cupons/topics/Greeting.topic.mcs.yml +14 -0
  20. package/skills/cast-list/examples/agents/bodega-cupons/topics/OnError.topic.mcs.yml +48 -0
  21. package/skills/cast-list/examples/agents/bodega-cupons/topics/RecebimentoOrquestrador.topic.mcs.yml +16 -0
  22. package/skills/cast-list/examples/agents/bodega-cupons/variables/CategoriaSolicitacao.mcs.yml +10 -0
  23. package/skills/cast-list/examples/agents/bodega-devolucoes/actions/AbrirSolicitacaoDevolucao.mcs.yml +32 -0
  24. package/skills/cast-list/examples/agents/bodega-devolucoes/agent.mcs.yml +26 -0
  25. package/skills/cast-list/examples/agents/bodega-devolucoes/connectionreferences.mcs.yml +6 -0
  26. package/skills/cast-list/examples/agents/bodega-devolucoes/knowledge/PoliticaTrocasDevolucoes.knowledge.mcs.yml +7 -0
  27. package/skills/cast-list/examples/agents/bodega-devolucoes/settings.mcs.yml +13 -0
  28. package/skills/cast-list/examples/agents/bodega-devolucoes/topics/ConsultarPoliticaDevolucoes.topic.mcs.yml +56 -0
  29. package/skills/cast-list/examples/agents/bodega-devolucoes/topics/Escalate.topic.mcs.yml +20 -0
  30. package/skills/cast-list/examples/agents/bodega-devolucoes/topics/Fallback.topic.mcs.yml +32 -0
  31. package/skills/cast-list/examples/agents/bodega-devolucoes/topics/Greeting.topic.mcs.yml +14 -0
  32. package/skills/cast-list/examples/agents/bodega-devolucoes/topics/OnError.topic.mcs.yml +48 -0
  33. package/skills/cast-list/examples/agents/bodega-devolucoes/topics/RecebimentoOrquestrador.topic.mcs.yml +16 -0
  34. package/skills/cast-list/examples/agents/bodega-devolucoes/variables/CategoriaSolicitacao.mcs.yml +10 -0
  35. package/skills/cast-list/examples/agents/bodega-frete/actions/EnviarOpcoesFrete.mcs.yml +34 -0
  36. package/skills/cast-list/examples/agents/bodega-frete/agent.mcs.yml +26 -0
  37. package/skills/cast-list/examples/agents/bodega-frete/connectionreferences.mcs.yml +6 -0
  38. package/skills/cast-list/examples/agents/bodega-frete/knowledge/TabelaFreteEntregas.knowledge.mcs.yml +7 -0
  39. package/skills/cast-list/examples/agents/bodega-frete/settings.mcs.yml +13 -0
  40. package/skills/cast-list/examples/agents/bodega-frete/topics/ConsultarTabelaFrete.topic.mcs.yml +56 -0
  41. package/skills/cast-list/examples/agents/bodega-frete/topics/Fallback.topic.mcs.yml +31 -0
  42. package/skills/cast-list/examples/agents/bodega-frete/topics/Greeting.topic.mcs.yml +14 -0
  43. package/skills/cast-list/examples/agents/bodega-frete/topics/OnError.topic.mcs.yml +48 -0
  44. package/skills/cast-list/examples/agents/bodega-frete/topics/RecebimentoOrquestrador.topic.mcs.yml +16 -0
  45. package/skills/cast-list/examples/agents/bodega-frete/variables/CategoriaSolicitacao.mcs.yml +10 -0
  46. package/skills/cast-list/examples/agents/bodega-loja-fisica/actions/EnviarInstrucoesRetirada.mcs.yml +34 -0
  47. package/skills/cast-list/examples/agents/bodega-loja-fisica/agent.mcs.yml +27 -0
  48. package/skills/cast-list/examples/agents/bodega-loja-fisica/connectionreferences.mcs.yml +6 -0
  49. package/skills/cast-list/examples/agents/bodega-loja-fisica/knowledge/GuiaLojaFisica.knowledge.mcs.yml +8 -0
  50. package/skills/cast-list/examples/agents/bodega-loja-fisica/settings.mcs.yml +13 -0
  51. package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/ConsultarGuiaLojaFisica.topic.mcs.yml +56 -0
  52. package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/Escalate.topic.mcs.yml +20 -0
  53. package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/Fallback.topic.mcs.yml +32 -0
  54. package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/Greeting.topic.mcs.yml +14 -0
  55. package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/OnError.topic.mcs.yml +43 -0
  56. package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/RecebimentoOrquestrador.topic.mcs.yml +16 -0
  57. package/skills/cast-list/examples/agents/bodega-loja-fisica/variables/CategoriaSolicitacao.mcs.yml +10 -0
  58. package/skills/cast-list/examples/agents/bodega-orquestrador/actions/AgenteCupons.mcs.yml +24 -0
  59. package/skills/cast-list/examples/agents/bodega-orquestrador/actions/AgenteDevolucoes.mcs.yml +24 -0
  60. package/skills/cast-list/examples/agents/bodega-orquestrador/actions/AgenteFrete.mcs.yml +24 -0
  61. package/skills/cast-list/examples/agents/bodega-orquestrador/actions/AgenteLojaFisica.mcs.yml +24 -0
  62. package/skills/cast-list/examples/agents/bodega-orquestrador/actions/AgentePedidos.mcs.yml +24 -0
  63. package/skills/cast-list/examples/agents/bodega-orquestrador/agent.mcs.yml +35 -0
  64. package/skills/cast-list/examples/agents/bodega-orquestrador/agents/SobreBodegaAzul/agent.mcs.yml +32 -0
  65. package/skills/cast-list/examples/agents/bodega-orquestrador/settings.mcs.yml +12 -0
  66. package/skills/cast-list/examples/agents/bodega-orquestrador/topics/ClassificarSolicitacao.topic.mcs.yml +35 -0
  67. package/skills/cast-list/examples/agents/bodega-orquestrador/topics/Escalate.topic.mcs.yml +20 -0
  68. package/skills/cast-list/examples/agents/bodega-orquestrador/topics/Fallback.topic.mcs.yml +32 -0
  69. package/skills/cast-list/examples/agents/bodega-orquestrador/topics/Greeting.topic.mcs.yml +14 -0
  70. package/skills/cast-list/examples/agents/bodega-orquestrador/topics/OnError.topic.mcs.yml +48 -0
  71. package/skills/cast-list/examples/agents/bodega-orquestrador/variables/CategoriaSolicitacao.mcs.yml +9 -0
  72. package/skills/cast-list/examples/agents/bodega-pedidos/actions/EnviarResumoPedido.mcs.yml +34 -0
  73. package/skills/cast-list/examples/agents/bodega-pedidos/agent.mcs.yml +26 -0
  74. package/skills/cast-list/examples/agents/bodega-pedidos/connectionreferences.mcs.yml +6 -0
  75. package/skills/cast-list/examples/agents/bodega-pedidos/knowledge/PoliticasPedidos.knowledge.mcs.yml +7 -0
  76. package/skills/cast-list/examples/agents/bodega-pedidos/settings.mcs.yml +13 -0
  77. package/skills/cast-list/examples/agents/bodega-pedidos/topics/ConsultarPoliticasPedidos.topic.mcs.yml +56 -0
  78. package/skills/cast-list/examples/agents/bodega-pedidos/topics/Escalate.topic.mcs.yml +20 -0
  79. package/skills/cast-list/examples/agents/bodega-pedidos/topics/Fallback.topic.mcs.yml +32 -0
  80. package/skills/cast-list/examples/agents/bodega-pedidos/topics/Greeting.topic.mcs.yml +14 -0
  81. package/skills/cast-list/examples/agents/bodega-pedidos/topics/OnError.topic.mcs.yml +48 -0
  82. package/skills/cast-list/examples/agents/bodega-pedidos/topics/RecebimentoOrquestrador.topic.mcs.yml +16 -0
  83. package/skills/cast-list/examples/agents/bodega-pedidos/variables/CategoriaSolicitacao.mcs.yml +10 -0
  84. package/skills/cast-list/examples/demo.cast.yaml +10 -0
  85. package/skills/cast-list/examples/profile.cast.yaml +15 -0
  86. package/skills/cast-list/references/format.md +50 -0
  87. package/skills/cast-list/references/keys.md +107 -0
  88. package/skills/cast-list/references/profile.md +32 -0
  89. package/skills/cast-list/scripts/browser.mjs +198 -0
  90. package/skills/cast-list/scripts/build.mjs +179 -0
  91. package/skills/cast-list/scripts/engine.mjs +155 -0
  92. package/skills/cast-list/scripts/page.mjs +15 -0
  93. package/skills/cast-list/scripts/read-xlsx.mjs +67 -0
  94. package/skills/cast-list/vendor/microsoft/LICENSE +21 -0
  95. package/skills/cast-list/vendor/microsoft/NOTICE +9 -0
  96. package/skills/cast-list/vendor/microsoft/package.json +1 -0
  97. package/skills/cast-list/vendor/microsoft/reference/bot.schema.yaml-authoring.json +27605 -0
  98. package/skills/cast-list/vendor/microsoft/scripts/schema-lookup.bundle.js +3495 -0
@@ -0,0 +1,48 @@
1
+ mcs.metadata:
2
+ componentName: Em caso de erro
3
+ description: Tratamento de erros do agente.
4
+ kind: AdaptiveDialog
5
+ startBehavior: UseLatestPublishedContentAndCancelOtherTopics
6
+ beginDialog:
7
+ kind: OnError
8
+ id: main
9
+ actions:
10
+ - kind: SetVariable
11
+ id: setVariable_RIabDw
12
+ variable: init:Topic.CurrentTime
13
+ value: =Text(Now(), DateTimeFormat.UTC)
14
+
15
+ - kind: ConditionGroup
16
+ id: conditionGroup_7KIeB2
17
+ conditions:
18
+ - id: conditionItem_OUWMhQ
19
+ condition: =System.Conversation.InTestMode = true
20
+ actions:
21
+ - kind: SendActivity
22
+ id: sendMessage_oRG6YM
23
+ activity: |-
24
+ Mensagem de erro: {System.Error.Message}
25
+ Código do erro: {System.Error.Code}
26
+ Id da conversa: {System.Conversation.Id}
27
+ Horário (UTC): {Topic.CurrentTime}
28
+
29
+ elseActions:
30
+ - kind: SendActivity
31
+ id: sendMessage_gs4KHI
32
+ activity:
33
+ text:
34
+ - |-
35
+ Ocorreu um erro.
36
+ Código do erro: {System.Error.Code}
37
+ Id da conversa: {System.Conversation.Id}
38
+ Horário (UTC): {Topic.CurrentTime}.
39
+ speak:
40
+ - Ocorreu um erro, por favor tente novamente.
41
+
42
+ - kind: LogCustomTelemetryEvent
43
+ id: logTelemetry_g4OeHX
44
+ eventName: BodegaOrquestrador_OnError
45
+ properties: "={Agente: \"bodega-orquestrador\", ErrorMessage: System.Error.Message, ErrorCode: System.Error.Code, TimeUTC: Topic.CurrentTime, ConversationId: System.Conversation.Id}"
46
+
47
+ - kind: CancelAllDialogs
48
+ id: cancelAllDialogs_BYhsPO
@@ -0,0 +1,9 @@
1
+ # Name: Categoria da Solicitação
2
+ # Categoria da solicitação do cliente definida pelo orquestrador Bodega Azul (Pedidos, Devolucoes, Frete, Cupons, LojaFisica, Outro).
3
+ name: CategoriaSolicitacao
4
+ aIVisibility: UseInAIContext
5
+ scope: Conversation
6
+ description: Categoria da solicitação do cliente definida pelo orquestrador Bodega Azul (Pedidos, Devolucoes, Frete, Cupons, LojaFisica, Outro).
7
+ schemaName: cr7b2_bodegaOrquestrador.globalvariable.CategoriaSolicitacao
8
+ kind: GlobalVariableComponent
9
+ defaultValue: Outro
@@ -0,0 +1,34 @@
1
+ mcs.metadata:
2
+ componentName: Enviar resumo do pedido por e-mail
3
+ description: "Envia ao cliente um e-mail com o resumo do atendimento sobre o pedido."
4
+ kind: TaskDialog
5
+ inputs:
6
+ - kind: AutomaticTaskInput
7
+ propertyName: To
8
+ description: "Endereço de e-mail do cliente que vai receber o resumo do pedido."
9
+ entity: EmailPrebuiltEntity
10
+ shouldPromptUser: true
11
+
12
+ - kind: AutomaticTaskInput
13
+ propertyName: Subject
14
+ description: Assunto do e-mail, curto e em português.
15
+ entity: StringPrebuiltEntity
16
+ shouldPromptUser: false
17
+
18
+ - kind: AutomaticTaskInput
19
+ propertyName: Body
20
+ description: Corpo do e-mail em HTML simples, em português, com o resumo do que foi tratado na conversa.
21
+ entity: StringPrebuiltEntity
22
+ shouldPromptUser: false
23
+
24
+ modelDisplayName: Enviar resumo do pedido por e-mail
25
+ modelDescription: "Envia ao cliente, pelo Outlook, um e-mail com o resumo do atendimento sobre o pedido. Use somente quando o cliente pedir o resumo por e-mail."
26
+ action:
27
+ kind: InvokeConnectorTaskAction
28
+ connectionReference: cr7b2_bodegaPedidos.shared_office365.shared-office365-1fd81bee-61e1-4016-a98e-c7e0977d7f43
29
+ connectionProperties:
30
+ mode: Maker
31
+
32
+ operationId: SendEmailV2
33
+
34
+ outputMode: All
@@ -0,0 +1,26 @@
1
+ mcs.metadata:
2
+ componentName: Bodega Azul - Pedidos
3
+ kind: GptComponentMetadata
4
+ displayName: Bodega Azul - Pedidos
5
+ instructions: |
6
+ Você é o especialista em pedidos da Bodega Azul, uma loja online.
7
+
8
+ Responsabilidades:
9
+ - Explicar status de pedido, prazos de processamento e formas de pagamento aceitas
10
+ - Usar a base "Políticas de Pedidos" para responder dúvidas sobre regras de compra
11
+ - Enviar ao cliente, quando ele pedir, um e-mail com o resumo do atendimento
12
+
13
+ Regras:
14
+ - Responda sempre em português do Brasil, de forma curta e cordial
15
+ - Nunca invente números de pedido, valores ou prazos
16
+ - Se a dúvida for sobre devolução, frete, cupom ou loja física, diga que é outro especialista que cuida disso
17
+ conversationStarters:
18
+ - title: "Status do pedido"
19
+ text: "Como acompanho o meu pedido?"
20
+
21
+ - title: "Pagamento"
22
+ text: "Quais formas de pagamento vocês aceitam?"
23
+
24
+ aISettings:
25
+ model:
26
+ modelNameHint: GPT5Chat
@@ -0,0 +1,6 @@
1
+ kind: ConnectionReferencesSourceFile
2
+ connectionReferences:
3
+ - id: eea3db2a-a0a9-4d63-b0d6-612861c4c67c
4
+ connectionReferenceLogicalName: cr7b2_bodegaPedidos.shared_office365.shared-office365-1fd81bee-61e1-4016-a98e-c7e0977d7f43
5
+ connectorId: /providers/Microsoft.PowerApps/apis/shared_office365
6
+ displayName: Office 365 Outlook
@@ -0,0 +1,7 @@
1
+ mcs.metadata:
2
+ componentName: Políticas de Pedidos
3
+ description: "Políticas de compra, status de pedido, cancelamento e formas de pagamento da Bodega Azul."
4
+ kind: KnowledgeSourceConfiguration
5
+ source:
6
+ kind: SharePointSearchSource
7
+ site: https://bodegaazul.sharepoint.com/sites/Atendimento/Shared%20Documents/Pedidos
@@ -0,0 +1,13 @@
1
+ displayName: Bodega Azul - Pedidos
2
+ schemaName: cr7b2_bodegaPedidos
3
+ accessControlPolicy: ChatbotReaders
4
+ authenticationMode: None
5
+ configuration:
6
+ isAgentConnectable: true
7
+ settings:
8
+ GenerativeActionsEnabled: true
9
+
10
+ recognizer:
11
+ kind: GenerativeAIRecognizer
12
+
13
+ language: 1046
@@ -0,0 +1,56 @@
1
+ mcs.metadata:
2
+ componentName: Consultar Políticas de Pedidos
3
+ description: "Responde dúvidas sobre pedidos com base nas políticas publicadas no SharePoint."
4
+ kind: AdaptiveDialog
5
+ inputs:
6
+ - kind: AutomaticTaskInput
7
+ propertyName: PerguntaCliente
8
+ description: "A pergunta do cliente sobre pedidos, status, cancelamento ou pagamento."
9
+ shouldPromptUser: true
10
+
11
+ modelDescription: "Responde perguntas sobre status de pedido, prazos de processamento, cancelamento antes do envio e formas de pagamento da Bodega Azul."
12
+ beginDialog:
13
+ kind: OnRecognizedIntent
14
+ id: main
15
+ intent: {}
16
+ actions:
17
+ - kind: CreateSearchQuery
18
+ id: createSearchQuery_UGdqz4
19
+ userInput: =Topic.PerguntaCliente
20
+ result: Topic.SearchQuery
21
+
22
+ - kind: SearchAndSummarizeContent
23
+ id: searchContent_eeKb0X
24
+ autoSend: false
25
+ variable: Topic.SearchResult
26
+ userInput: =Topic.SearchQuery.SearchQuery
27
+ fileSearchDataSource:
28
+ searchFilesMode:
29
+ kind: DoNotSearchFiles
30
+
31
+ knowledgeSources:
32
+ kind: SearchSpecificKnowledgeSources
33
+ knowledgeSources:
34
+ - cr7b2_bodegaPedidos.knowledge.PoliticasPedidos
35
+
36
+ applyModelKnowledgeSetting: false
37
+ responseCaptureType: FullResponse
38
+
39
+ - kind: SetVariable
40
+ id: setVariable_0EUmtv
41
+ variable: Topic.Resposta
42
+ value: =Topic.SearchResult.Text.Content
43
+
44
+ inputType:
45
+ properties:
46
+ PerguntaCliente:
47
+ displayName: PerguntaCliente
48
+ description: "A pergunta do cliente sobre pedidos, status, cancelamento ou pagamento."
49
+ type: String
50
+
51
+ outputType:
52
+ properties:
53
+ Resposta:
54
+ displayName: Resposta
55
+ description: Resposta fundamentada na base de conhecimento do agente.
56
+ type: String
@@ -0,0 +1,20 @@
1
+ mcs.metadata:
2
+ componentName: Escalar
3
+ description: Acionado quando o cliente pede para falar com uma pessoa.
4
+ kind: AdaptiveDialog
5
+ beginDialog:
6
+ kind: OnEscalate
7
+ id: main
8
+ intent:
9
+ displayName: Escalar
10
+ includeInOnSelectIntent: false
11
+ triggerQueries:
12
+ - Falar com um atendente
13
+ - Quero falar com uma pessoa
14
+ - Atendimento humano
15
+ - Me transfere para alguém
16
+
17
+ actions:
18
+ - kind: SendActivity
19
+ id: sendMessage_X7qDFG
20
+ activity: "A transferência para um atendente ainda não está disponível neste canal. Fale com a nossa equipe pelo e-mail pedidos@bodegaazul.example, de segunda a sábado, das 9h às 18h."
@@ -0,0 +1,32 @@
1
+ mcs.metadata:
2
+ componentName: Fallback
3
+ description: Acionado quando nenhum tópico ou ferramenta corresponde à mensagem do cliente.
4
+ kind: AdaptiveDialog
5
+ beginDialog:
6
+ kind: OnUnknownIntent
7
+ id: main
8
+ priority: -1
9
+ actions:
10
+ - kind: ConditionGroup
11
+ id: conditionGroup_izfoCA
12
+ conditions:
13
+ - id: conditionItem_5rqart
14
+ condition: =System.FallbackCount < 3
15
+ actions:
16
+ - kind: SendActivity
17
+ id: sendMessage_fkqT0j
18
+ activity:
19
+ text:
20
+ - "Desculpe, não entendi. Pode reformular a sua pergunta?"
21
+ - "Não captei bem. Pode tentar explicar de outro jeito?"
22
+
23
+ elseActions:
24
+ - kind: SendActivity
25
+ id: sendMessage_b7FkRT
26
+ activity:
27
+ text:
28
+ - "Estou com dificuldade para entender o seu pedido. Vou te encaminhar para alguém da equipe Bodega Azul."
29
+
30
+ - kind: BeginDialog
31
+ id: beginDialog_wvH06B
32
+ dialog: cr7b2_bodegaPedidos.topic.Escalate
@@ -0,0 +1,14 @@
1
+ mcs.metadata:
2
+ componentName: Saudação
3
+ description: Mensagem de boas-vindas enviada no início da conversa.
4
+ kind: AdaptiveDialog
5
+ beginDialog:
6
+ kind: OnConversationStart
7
+ id: main
8
+ actions:
9
+ - kind: SendActivity
10
+ id: sendMessage_u1hET4
11
+ activity:
12
+ text:
13
+ - "Olá! Eu sou o {System.Bot.Name}. Posso te ajudar com o seu pedido na Bodega Azul?"
14
+ - "Oi! Aqui é o especialista em pedidos da Bodega Azul. Em que posso ajudar?"
@@ -0,0 +1,48 @@
1
+ mcs.metadata:
2
+ componentName: Em caso de erro
3
+ description: Tratamento de erros do agente.
4
+ kind: AdaptiveDialog
5
+ startBehavior: UseLatestPublishedContentAndCancelOtherTopics
6
+ beginDialog:
7
+ kind: OnError
8
+ id: main
9
+ actions:
10
+ - kind: SetVariable
11
+ id: setVariable_gMi1ol
12
+ variable: init:Topic.CurrentTime
13
+ value: =Text(Now(), DateTimeFormat.UTC)
14
+
15
+ - kind: ConditionGroup
16
+ id: conditionGroup_lvYXTl
17
+ conditions:
18
+ - id: conditionItem_kUCycx
19
+ condition: =System.Conversation.InTestMode = true
20
+ actions:
21
+ - kind: SendActivity
22
+ id: sendMessage_vRisIU
23
+ activity: |-
24
+ Mensagem de erro: {System.Error.Message}
25
+ Código do erro: {System.Error.Code}
26
+ Id da conversa: {System.Conversation.Id}
27
+ Horário (UTC): {Topic.CurrentTime}
28
+
29
+ elseActions:
30
+ - kind: SendActivity
31
+ id: sendMessage_AHsENQ
32
+ activity:
33
+ text:
34
+ - |-
35
+ Ocorreu um erro.
36
+ Código do erro: {System.Error.Code}
37
+ Id da conversa: {System.Conversation.Id}
38
+ Horário (UTC): {Topic.CurrentTime}.
39
+ speak:
40
+ - Ocorreu um erro, por favor tente novamente.
41
+
42
+ - kind: LogCustomTelemetryEvent
43
+ id: logTelemetry_4FeX9f
44
+ eventName: BodegaPedidos_OnError
45
+ properties: "={Agente: \"bodega-pedidos\", ErrorMessage: System.Error.Message, ErrorCode: System.Error.Code, TimeUTC: Topic.CurrentTime, ConversationId: System.Conversation.Id}"
46
+
47
+ - kind: CancelAllDialogs
48
+ id: cancelAllDialogs_BwS5B0
@@ -0,0 +1,16 @@
1
+ mcs.metadata:
2
+ componentName: Recebimento do Orquestrador
3
+ description: Ponto de entrada quando o agente é chamado pelo orquestrador Bodega Azul como agente conectado.
4
+ kind: AdaptiveDialog
5
+ modelDescription: Inicializa o agente quando ele é chamado pelo orquestrador Bodega Azul e recebe a categoria da solicitação.
6
+ beginDialog:
7
+ kind: OnRedirect
8
+ id: main
9
+ actions:
10
+ - kind: SetVariable
11
+ id: setVariable_JFCD4c
12
+ variable: Global.CategoriaSolicitacao
13
+ value: =System.Activity.Value.CategoriaSolicitacao
14
+
15
+ inputType: {}
16
+ outputType: {}
@@ -0,0 +1,10 @@
1
+ # Name: Categoria da Solicitação
2
+ # Categoria da solicitação do cliente definida pelo orquestrador Bodega Azul (Pedidos, Devolucoes, Frete, Cupons, LojaFisica, Outro).
3
+ name: CategoriaSolicitacao
4
+ aIVisibility: UseInAIContext
5
+ scope: Conversation
6
+ description: Categoria da solicitação do cliente definida pelo orquestrador Bodega Azul (Pedidos, Devolucoes, Frete, Cupons, LojaFisica, Outro).
7
+ schemaName: cr7b2_bodegaPedidos.globalvariable.CategoriaSolicitacao
8
+ kind: GlobalVariableComponent
9
+ isExternalInitializationAllowed: true
10
+ defaultValue: =Blank()
@@ -0,0 +1,10 @@
1
+ # What people said about the agents, and what was decided. build.mjs keeps it up to date; edit it, or fill the
2
+ # workbook's «Declared» sheet and the «Decision» column and read it back with --from.
3
+ format: cast-list/cast-v1
4
+ name: Bodega Azul — atendimento
5
+ declared:
6
+ # the handoff document says frete escalates; the YAML says it does not
7
+ - { agent: bodega-frete, key: "trigger:OnEscalate", value: sim, source: "handoff do frete, seção 4" }
8
+ - { agent: bodega-pedidos, key: kpi, value: "tempo até a resposta < 2 min", source: backlog }
9
+ decisions:
10
+ - { key: "trigger:OnEscalate", status: accepted, scope: platform, why: "Ninguém fica sem saída para uma pessoa" }
@@ -0,0 +1,15 @@
1
+ # The team's standard, written so a run can check it. Private: it names your agents — keep it in your environment.
2
+ format: cast-list/profile-v1
3
+ name: Bodega Azul — atendimento
4
+ roles:
5
+ orchestrator: [bodega-orquestrador]
6
+ specialist: "*"
7
+ threshold: 0.7 # a pattern: in at least 70% of the agents of a role…
8
+ min_agents: 3 # …with at least 3 agents in that role
9
+ rules:
10
+ - { id: escala, role: specialist, has: "trigger:OnEscalate", says: "Todo especialista escala para humano" }
11
+ - { id: kpi, role: specialist, has: "declared:kpi", says: "Todo especialista tem KPI" }
12
+ focus_areas:
13
+ - { id: confiabilidade, name: Confiabilidade, facts: ["trigger:OnError", "node:LogCustomTelemetryEvent", "ms:rai-error-handling"] }
14
+ ignore: ["trigger:OnConversationStart"]
15
+ microsoft_patterns: on
@@ -0,0 +1,50 @@
1
+ # The cast file and the facts
2
+
3
+ ## `<id>.cast.yaml` — `cast-list/cast-v1`
4
+
5
+ What people said about the agents and what was decided. `scripts/build.mjs` writes it on the first run and keeps it
6
+ up to date (it is read again on every run); its comments and layout stay. Edit it by hand, or fill the workbook and read
7
+ it back with `--from` / `--take`. A problem in it is an error with its line.
8
+
9
+ ```yaml
10
+ format: cast-list/cast-v1
11
+ name: Customer service agents
12
+ agents: # the roles of the last run (an agent the profile does not name keeps its role here)
13
+ - { id: main-orchestrator, role: orchestrator }
14
+ - { id: returns, role: specialist }
15
+ declared: # what a document or a person says — always with its source
16
+ - { agent: returns, key: kpi, value: "time to answer < 2 min", source: "backlog, epic 12" }
17
+ - { agent: shipping, key: "trigger:OnEscalate", value: "yes", source: "handoff, section 4" }
18
+ decisions: # what the team decided about a pattern
19
+ - { key: "trigger:OnEscalate", status: accepted, scope: platform, why: "Nobody is left without a person" }
20
+ ```
21
+
22
+ - **declared**: `key` is either something only people know (`kpi`, `owner`, any word: it becomes `declared:<key>`) or a
23
+ fact key (`trigger:OnEscalate`, `references/keys.md`) when a document claims the agent does it. `value` `no` / `não` /
24
+ `false` claims it does **not**. A claim never changes what the YAML shows: when they disagree, it is a conflict.
25
+ - **decisions**: `status` is `accepted` or `rejected`; `scope` is `platform` (every agent), `specialist` or
26
+ `orchestrator`; `why` says it. An accepted pattern is checked on every agent of its scope on the next run — even when
27
+ its share would no longer make it a pattern. A rejected one is shown and nobody is off it.
28
+
29
+ ## The workbook back
30
+
31
+ In Excel, fill the **Declared** sheet (who, key, value, source) and the **Decision** column of **Patterns** (`accepted` /
32
+ `aceito`, `rejected` / `rejeitado`; **Scope** and **Why** beside it). Then:
33
+
34
+ ```
35
+ node scripts/build.mjs <agents-folder> --from <filled>.xlsx the changes, each with a key (d1…, p1…)
36
+ node scripts/build.mjs <agents-folder> --from <filled>.xlsx --take d1,p1 writes the chosen ones (or --take all)
37
+ ```
38
+
39
+ A line deleted or a decision cleared is a change too.
40
+
41
+ ## `<id>.facts.json` — `cast-list/facts-v1`
42
+
43
+ `--facts` writes what was seen, for a model to read before it adds what people declared:
44
+
45
+ ```json
46
+ { "format": "cast-list/facts-v1",
47
+ "agents": [ { "id": "shipping", "schemaName": "cr7b2_shipping", "displayName": "Shipping",
48
+ "facts": { "trigger:OnUnknownIntent": [ { "file": "topics/Fallback.topic.mcs.yml", "line": 7 } ] },
49
+ "children": [], "unknown": [] } ] }
50
+ ```
@@ -0,0 +1,107 @@
1
+ # Keys
2
+
3
+ GENERATED from dev/cast-list/src/labels.ts and microsoft.ts by tools/assets.mjs — do not edit.
4
+
5
+ Every fact cast-list finds is a key. The keys below have a name; any other key keeps its kind and value
6
+ («Connector shared_office365»), and a kind cast-list does not know stays as it is.
7
+
8
+ ## A. Conversation — Conversa
9
+
10
+ | Key | Name | Nome |
11
+ |---|---|---|
12
+ | `trigger:OnConversationStart` | Greeting | Boas-vindas |
13
+ | `trigger:OnUnknownIntent` | Fallback (when it does not understand) | Fallback (quando não entende) |
14
+ | `trigger:OnEscalate` | Escalation to a person | Escalonamento para humano |
15
+ | `trigger:OnError` | Error handling | Tratamento de erro |
16
+ | `trigger:OnRecognizedIntent` | A topic of its own, by intent | Tópico próprio, por intenção |
17
+ | `trigger:OnSelectIntent` | Disambiguation («did you mean…») | Desambiguação («você quis dizer…») |
18
+ | `trigger:OnSignIn` | Sign-in | Login |
19
+ | `trigger:OnGeneratedResponse` | Reviews the generated answer | Revisa a resposta gerada |
20
+ | `trigger:OnActivity` | On every message | Em toda mensagem |
21
+ | `setting:generative=on` | Generative orchestration on | Orquestração generativa ligada |
22
+ | `setting:generative=off` | Generative orchestration off | Orquestração generativa desligada |
23
+ | `topics:with-model-description` | Topics described for the model | Tópicos descritos para o modelo |
24
+ | `calls:topic:<value>` | Calls the topic <value> | Chama o tópico <valor> |
25
+ | `trigger:<value>` | Trigger <value> | Gatilho <valor> |
26
+ | `setting:<value>` | Setting <value> | Configuração <valor> |
27
+
28
+ ## B. Integrations — Integrações
29
+
30
+ | Key | Name | Nome |
31
+ |---|---|---|
32
+ | `connector:<value>` | Connector <value> | Conector <valor> |
33
+ | `operation:<value>` | Operation <value> | Operação <valor> |
34
+ | `connref:<value>` | Connection reference <value> | Referência de conexão <valor> |
35
+ | `mcp:<value>` | MCP server <value> | Servidor MCP <valor> |
36
+ | `flow:<value>` | Flow <value> | Fluxo <valor> |
37
+
38
+ ## C. Knowledge — Conhecimento
39
+
40
+ | Key | Name | Nome |
41
+ |---|---|---|
42
+ | `trigger:OnKnowledgeRequested` | Before searching knowledge | Antes de buscar no conhecimento |
43
+ | `node:SearchAndSummarizeContent` | Generative answers from knowledge | Respostas generativas sobre o conhecimento |
44
+ | `node:SearchKnowledgeSources` | Searches the knowledge sources | Busca nas fontes de conhecimento |
45
+ | `yaml-only:triggerCondition` | Search condition only in YAML (the editor may erase it) | Condição de busca só no YAML (a tela pode apagar) |
46
+ | `knowledge:SharePointSearchSource` | Knowledge in SharePoint | Conhecimento no SharePoint |
47
+ | `knowledge:<value>` | Knowledge <value> | Conhecimento <valor> |
48
+
49
+ ## D. Orchestrator — Orquestrador
50
+
51
+ | Key | Name | Nome |
52
+ |---|---|---|
53
+ | `trigger:OnRedirect` | Takes a call from the orchestrator | Recebe chamada do orquestrador |
54
+ | `trigger:OnToolSelected` | Child chosen as a tool | Filho escolhido como ferramenta |
55
+ | `setting:connectable` | Can be called by an orchestrator | Pode ser chamado por um orquestrador |
56
+ | `calls:<value>` | Calls <value> | Chama <valor> |
57
+ | `child:<value>` | Child <value> | Filho <valor> |
58
+ | `var-in:<value>` | Receives from the orchestrator <value> | Recebe do orquestrador <valor> |
59
+ | `var:<value>` | Global variable <value> | Variável global <valor> |
60
+
61
+ ## E. Governance — Governança
62
+
63
+ | Key | Name | Nome |
64
+ |---|---|---|
65
+ | `instructions:present` | Has instructions | Tem instruções |
66
+ | `node:LogCustomTelemetryEvent` | Logs telemetry | Registra telemetria |
67
+ | `node:CSATQuestion` | Asks for satisfaction (CSAT) | Pergunta a satisfação (CSAT) |
68
+ | `node:<value>` | Node <value> | Nó <valor> |
69
+ | `model:<value>` | Model <value> | Modelo <valor> |
70
+ | `auth:<value>` | Sign-in <value> | Login <valor> |
71
+
72
+ ## Microsoft patterns — Padrões Microsoft
73
+
74
+ | Key | Name | Nome |
75
+ |---|---|---|
76
+ | `ms:<value>` | Microsoft pattern: <value> | Padrão Microsoft: <valor> |
77
+
78
+ ## Declared — Declarado
79
+
80
+ | Key | Name | Nome |
81
+ |---|---|---|
82
+ | `declared:kpi` | KPI declared | KPI declarado |
83
+ | `declared:owner` | Owner declared | Dono declarado |
84
+ | `declared:<value>` | Declared: <value> | Declarado: <valor> |
85
+
86
+ ## The Microsoft patterns
87
+
88
+ From [microsoft/skills-for-copilot-studio](https://github.com/microsoft/skills-for-copilot-studio/blob/main/patterns). With a mark in the YAML, cast-list finds them (`ms:<id>`);
89
+ the others only a person can say (in the cast file, `declared` with the key `ms:<id>`).
90
+
91
+ | Pattern | How cast-list knows |
92
+ |---|---|
93
+ | `orchestrator-variables` — Orchestrator-Generated Variables | an OnRecognizedIntent topic with an AutomaticTaskInput that has shouldPromptUser: false |
94
+ | `rai-error-handling` — RAI Error Handling | the OnError topic reads System.Error.SubCode |
95
+ | `knowledge-hold-message` — Knowledge Hold Message | an OnKnowledgeRequested topic that sends a message |
96
+ | `prevent-tool-call-leaks` — Prevent Tool Call Leaks | an OnGeneratedResponse topic that sets System.ContinueResponse |
97
+ | `dynamic-topic-redirect` — Dynamic Topic Redirect | a BeginDialog whose dialog is a =Switch( expression |
98
+ | `channel-aware-behavior` — Channel-Aware Behavior | a condition or SetVariable that reads System.Activity.ChannelId (not a tool input) |
99
+ | `date-context` — Date Context | the instructions use Today() or Now() |
100
+ | `line-breaks-in-messages` — Line Breaks in Messages | <br /> inside a SendActivity or Question |
101
+ | `conversation-history-variable` — Conversation History Variable | declared only |
102
+ | `chain-of-thought-logging` — Chain of Thought Logging | declared only |
103
+ | `deterministic-mcp-calls` — Deterministic MCP Calls | declared only |
104
+ | `prevent-child-agent-responses` — Prevent Child Agent Responses | declared only |
105
+ | `jit-glossary` — JIT Glossary | declared only |
106
+ | `jit-user-context` — JIT User Context | declared only |
107
+ | `teams-production-hardening` — Teams Production Hardening | declared only |
@@ -0,0 +1,32 @@
1
+ # The profile — `cast-list/profile-v1`
2
+
3
+ The team's standard, written so a run can check it. **Private**: it names the team's agents. Pass it with
4
+ `--profile <file>`; with none, the defaults below hold. A field that is not one of these (a typo) is an error with its
5
+ line, so a misspelled `treshold` never goes unnoticed.
6
+
7
+ ```yaml
8
+ format: cast-list/profile-v1
9
+ name: Customer service agents # the title of the map and the lesson
10
+ roles:
11
+ orchestrator: [main-orchestrator] # agent folders by name, or "*"
12
+ specialist: "*" # everyone not named elsewhere
13
+ threshold: 0.7 # a pattern: in at least 70% of a role's agents…
14
+ min_agents: 3 # …when the role has at least 3 agents
15
+ rules: # what every agent of a role must have
16
+ - { id: escalate, role: specialist, has: "trigger:OnEscalate", says: "Every specialist escalates to a person" }
17
+ - { id: kpi, role: specialist, has: "declared:kpi", says: "Every specialist has a KPI" }
18
+ focus_areas: # filters on the map
19
+ - { id: reliability, name: Reliability, facts: ["trigger:OnError", "node:LogCustomTelemetryEvent"] }
20
+ ignore: ["trigger:OnConversationStart"] # facts left out everywhere
21
+ microsoft_patterns: on # off leaves the ms: facts out
22
+ ```
23
+
24
+ | Field | Default | What it does |
25
+ |---|---|---|
26
+ | `roles` | the orchestrator is whoever calls another agent; the rest are specialists | An agent named here has that role; then the role in the cast file; then `"*"`; then the default. A name with no folder is told in «to look at». |
27
+ | `threshold`, `min_agents` | 0.7, 3 | A pattern of a role. It is the **platform's** when the other role has it too. With one orchestrator there is no majority among orchestrators: what only it does is shown apart. |
28
+ | `rules` | none | `role` is `orchestrator` or `specialist`; `has` is a key (`references/keys.md`), `declared:<thing>` for what only people know. |
29
+ | `focus_areas` | none | Each a filter of the matrix. |
30
+ | `ignore` | none | Keys that say nothing for this team. |
31
+
32
+ The keys are the same in any language; only the screen words change with `--lang`.