house-lights 1.2.0 → 1.3.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.
- package/package.json +1 -1
- package/skills/cast-list/assets/map.html +60 -33
- package/skills/cast-list/examples/agents/bodega-cupons/actions/AbrirChamadoERP.mcs.yml +15 -0
- package/skills/cast-list/examples/agents/bodega-cupons/actions/ConsultarCuponsAtivos.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-cupons/actions/EnviarCupomEmail.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-cupons/actions/PromocoesMCP.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-cupons/agent.mcs.yml +12 -0
- package/skills/cast-list/examples/agents/bodega-cupons/connectionreferences.mcs.yml +7 -7
- package/skills/cast-list/examples/agents/bodega-cupons/topics/ConsultarRegulamentoCupons.topic.mcs.yml +3 -3
- package/skills/cast-list/examples/agents/bodega-cupons/topics/Escalate.topic.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-cupons/topics/Fallback.topic.mcs.yml +5 -5
- package/skills/cast-list/examples/agents/bodega-cupons/topics/Greeting.topic.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-cupons/topics/OnError.topic.mcs.yml +7 -7
- package/skills/cast-list/examples/agents/bodega-cupons/topics/RecebimentoOrquestrador.topic.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-devolucoes/actions/AbrirChamadoERP.mcs.yml +15 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/actions/AbrirSolicitacaoDevolucao.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-devolucoes/agent.mcs.yml +13 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/connectionreferences.mcs.yml +2 -2
- package/skills/cast-list/examples/agents/bodega-devolucoes/topics/ConsultarPoliticaDevolucoes.topic.mcs.yml +3 -3
- package/skills/cast-list/examples/agents/bodega-devolucoes/topics/Escalate.topic.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-devolucoes/topics/Fallback.topic.mcs.yml +5 -5
- package/skills/cast-list/examples/agents/bodega-devolucoes/topics/Greeting.topic.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-devolucoes/topics/OnError.topic.mcs.yml +7 -7
- package/skills/cast-list/examples/agents/bodega-devolucoes/topics/RecebimentoOrquestrador.topic.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-frete/actions/EnviarOpcoesFrete.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-frete/agent.mcs.yml +7 -0
- package/skills/cast-list/examples/agents/bodega-frete/connectionreferences.mcs.yml +2 -2
- package/skills/cast-list/examples/agents/bodega-frete/topics/ConsultarTabelaFrete.topic.mcs.yml +3 -3
- package/skills/cast-list/examples/agents/bodega-frete/topics/Desambiguar.topic.mcs.yml +11 -0
- package/skills/cast-list/examples/agents/bodega-frete/topics/Fallback.topic.mcs.yml +5 -5
- package/skills/cast-list/examples/agents/bodega-frete/topics/Greeting.topic.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-frete/topics/OnError.topic.mcs.yml +7 -7
- package/skills/cast-list/examples/agents/bodega-frete/topics/RecebimentoOrquestrador.topic.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-loja-fisica/actions/EnviarInstrucoesRetirada.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-loja-fisica/agent.mcs.yml +12 -0
- package/skills/cast-list/examples/agents/bodega-loja-fisica/connectionreferences.mcs.yml +2 -2
- package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/ConsultarGuiaLojaFisica.topic.mcs.yml +3 -3
- package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/Escalate.topic.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/Fallback.topic.mcs.yml +5 -5
- package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/Greeting.topic.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/OnError.topic.mcs.yml +6 -6
- package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/RecebimentoOrquestrador.topic.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-orquestrador/agent.mcs.yml +2 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/actions/AbrirChamadoERP.mcs.yml +15 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/actions/EnviarResumoPedido.mcs.yml +1 -1
- package/skills/cast-list/examples/agents/bodega-pedidos/agent.mcs.yml +10 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/connectionreferences.mcs.yml +2 -2
- package/skills/cast-list/examples/agents/bodega-pedidos/topics/ConsultarPoliticasPedidos Copy.topic.mcs.yml +56 -0
- package/skills/cast-list/examples/profile.cast.yaml +28 -0
- package/skills/cast-list/references/format.md +10 -3
- package/skills/cast-list/references/keys.md +14 -1
- package/skills/cast-list/references/profile.md +35 -0
- package/skills/cast-list/scripts/build.mjs +6 -4
- package/skills/cast-list/scripts/engine.mjs +132 -129
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "house-lights",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "The command behind the house-lights skills: draw a lesson or a pitch, play an incident drill, map a way of working or a customer journey, compare Copilot Studio agents — one offline HTML file each.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
.cl {
|
|
11
11
|
--bg: #f6f6f3; --card: #ffffff; --ink: #1d2330; --muted: #5f6878; --line: #e2e4e8; --soft: #f3f4f1;
|
|
12
12
|
--has: #2e7d55; --off: #c8442c; --off-bg: #fde8e3; --said: #b7791f;
|
|
13
|
-
--platform: #2e7d55; --platform-bg: #e3f3ea; --specialist: #3b5bdb; --specialist-bg: #e8edff; --orchestrator: #7b4fc9; --orchestrator-bg: #efe8fb;
|
|
13
|
+
--platform: #2e7d55; --platform-bg: #e3f3ea; --specialist: #3b5bdb; --specialist-bg: #e8edff; --orchestrator: #7b4fc9; --orchestrator-bg: #efe8fb; --type: #7b4fc9; --type-bg: #efe8fb;
|
|
14
14
|
--amber: #8a5a00; --amber-bg: #fff6dc; --amber-line: #f0dca4; --focus: #2f5bea; --active: #1d2330; --on-active: #fff;
|
|
15
15
|
font: 14px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; color: var(--ink); background: var(--bg);
|
|
16
16
|
min-height: 100vh; box-sizing: border-box; padding: 24px 16px 40px;
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
.cl:not(.light) {
|
|
20
20
|
--bg: #14171c; --card: #1d2129; --ink: #e8ebf0; --muted: #9aa3b2; --line: #313744; --soft: #23272f;
|
|
21
21
|
--has: #6fcf9a; --off: #ff8a70; --off-bg: #3a221d; --said: #f2c46b;
|
|
22
|
-
--platform: #6fcf9a; --platform-bg: #1c3328; --specialist: #9db0ff; --specialist-bg: #232c4a; --orchestrator: #c6a8ff; --orchestrator-bg: #2e2445;
|
|
22
|
+
--platform: #6fcf9a; --platform-bg: #1c3328; --specialist: #9db0ff; --specialist-bg: #232c4a; --orchestrator: #c6a8ff; --orchestrator-bg: #2e2445; --type: #c6a8ff; --type-bg: #2e2445;
|
|
23
23
|
--amber: #f2c46b; --amber-bg: #2f2716; --amber-line: #5a4a22; --focus: #8fb0ff; --active: #e8ebf0; --on-active: #14171c;
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -65,10 +65,16 @@ body { margin: 0; }
|
|
|
65
65
|
.cl-mark.said button { color: var(--said); }
|
|
66
66
|
.cl-mark.off { background: var(--off-bg); }
|
|
67
67
|
.cl-mark.off button { color: var(--off); font-weight: 700; }
|
|
68
|
+
.cl-mark.var { background: var(--amber-bg); }
|
|
69
|
+
.cl-mark.var button { color: var(--amber); font-weight: 700; }
|
|
70
|
+
.cl-matrix .cl-groups th { font-size: 11px; font-weight: 600; color: var(--muted); padding: 4px 8px 2px; text-align: center; }
|
|
71
|
+
.cl-matrix .cl-groups th.typed { color: var(--type); border-bottom: 2px solid var(--type); }
|
|
68
72
|
.cl-badge { display: inline-block; margin-left: 8px; padding: 0 7px; border-radius: 999px; font-size: 11px; border: 1px solid currentColor; white-space: nowrap; }
|
|
69
73
|
.cl-badge.platform { color: var(--platform); background: var(--platform-bg); }
|
|
70
74
|
.cl-badge.specialist { color: var(--specialist); background: var(--specialist-bg); }
|
|
71
75
|
.cl-badge.orchestrator { color: var(--orchestrator); background: var(--orchestrator-bg); }
|
|
76
|
+
.cl-badge.type { color: var(--type); background: var(--type-bg); }
|
|
77
|
+
.cl-badge.official { color: var(--specialist); background: var(--specialist-bg); }
|
|
72
78
|
.cl-badge.accepted { color: var(--has); }
|
|
73
79
|
.cl-badge.rejected { color: var(--muted); text-decoration: line-through; }
|
|
74
80
|
.cl-legend { margin: 10px 0 0; font-size: 12px; color: var(--muted); }
|
|
@@ -103,49 +109,59 @@ body { margin: 0; }
|
|
|
103
109
|
.cl-table a { color: var(--focus); }
|
|
104
110
|
.cl-empty { color: var(--muted); font-style: italic; margin: 0; }
|
|
105
111
|
.cl-foot { font-size: 12px; color: var(--muted); margin: 0; }
|
|
112
|
+
.cl-text { margin: 4px 0 0; font: 12.5px/1.55 ui-monospace, Menlo, monospace; background: var(--soft); border-radius: 8px; padding: 8px 10px; white-space: pre-wrap; }
|
|
113
|
+
.cl-variant { border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; display: flex; flex-direction: column; gap: 4px; }
|
|
114
|
+
.cl-diff { font: 12.5px/1.6 ui-monospace, Menlo, monospace; }
|
|
115
|
+
.cl-del { background: var(--off-bg); color: var(--off); text-decoration: line-through; border-radius: 3px; padding: 0 2px; }
|
|
116
|
+
.cl-add { background: var(--platform-bg); color: var(--platform); border-radius: 3px; padding: 0 2px; }
|
|
106
117
|
</style>
|
|
107
118
|
</head>
|
|
108
119
|
<body>
|
|
109
120
|
<div class="cl" id="app"></div>
|
|
110
121
|
<script type="application/json" id="cast">{{CAST}}</script>
|
|
111
|
-
<script>(()=>{var B="https://github.com/microsoft/skills-for-copilot-studio/blob/main/patterns",N=[{id:"orchestrator-variables",name:"Orchestrator-Generated Variables",sign:"an OnRecognizedIntent topic with an AutomaticTaskInput that has shouldPromptUser: false"},{id:"rai-error-handling",name:"RAI Error Handling",sign:"the OnError topic reads System.Error.SubCode"},{id:"knowledge-hold-message",name:"Knowledge Hold Message",sign:"an OnKnowledgeRequested topic that sends a message"},{id:"prevent-tool-call-leaks",name:"Prevent Tool Call Leaks",sign:"an OnGeneratedResponse topic that sets System.ContinueResponse"},{id:"dynamic-topic-redirect",name:"Dynamic Topic Redirect",sign:"a BeginDialog whose dialog is a =Switch( expression"},{id:"channel-aware-behavior",name:"Channel-Aware Behavior",sign:"a condition or SetVariable that reads System.Activity.ChannelId (not a tool input)"},{id:"date-context",name:"Date Context",sign:"the instructions use Today() or Now()"},{id:"line-breaks-in-messages",name:"Line Breaks in Messages",sign:"<br /> inside a SendActivity or Question"},{id:"conversation-history-variable",name:"Conversation History Variable"},{id:"chain-of-thought-logging",name:"Chain of Thought Logging"},{id:"deterministic-mcp-calls",name:"Deterministic MCP Calls"},{id:"prevent-child-agent-responses",name:"Prevent Child Agent Responses"},{id:"jit-glossary",name:"JIT Glossary"},{id:"jit-user-context",name:"JIT User Context"},{id:"teams-production-hardening",name:"Teams Production Hardening"}];var R={conversation:{en:"A. Conversation",pt:"A. Conversa"},integrations:{en:"B. Integrations",pt:"B. Integra\xE7\xF5es"},knowledge:{en:"C. Knowledge",pt:"C. Conhecimento"},orchestration:{en:"D. Orchestrator",pt:"D. Orquestrador"},governance:{en:"E. Governance",pt:"E. Governan\xE7a"},microsoft:{en:"Microsoft patterns",pt:"Padr\xF5es Microsoft"},declared:{en:"Declared",pt:"Declarado"}},X={"trigger:OnConversationStart":{dim:"conversation",en:"Greeting",pt:"Boas-vindas"},"trigger:OnUnknownIntent":{dim:"conversation",en:"Fallback (when it does not understand)",pt:"Fallback (quando n\xE3o entende)"},"trigger:OnEscalate":{dim:"conversation",en:"Escalation to a person",pt:"Escalonamento para humano",lacks:{en:["does not escalate to a person","do not escalate to a person"],pt:["n\xE3o escala para humano","n\xE3o escalam para humano"]}},"trigger:OnError":{dim:"conversation",en:"Error handling",pt:"Tratamento de erro",lacks:{en:["does not handle errors","do not handle errors"],pt:["n\xE3o trata erro","n\xE3o tratam erro"]}},"trigger:OnRecognizedIntent":{dim:"conversation",en:"A topic of its own, by intent",pt:"T\xF3pico pr\xF3prio, por inten\xE7\xE3o"},"trigger:OnRedirect":{dim:"orchestration",en:"Takes a call from the orchestrator",pt:"Recebe chamada do orquestrador",lacks:{en:["takes no call from the orchestrator","take no call from the orchestrator"],pt:["n\xE3o recebe chamada do orquestrador","n\xE3o recebem chamada do orquestrador"]}},"trigger:OnSelectIntent":{dim:"conversation",en:"Disambiguation (\xABdid you mean\u2026\xBB)",pt:"Desambigua\xE7\xE3o (\xABvoc\xEA quis dizer\u2026\xBB)"},"trigger:OnSignIn":{dim:"conversation",en:"Sign-in",pt:"Login"},"trigger:OnGeneratedResponse":{dim:"conversation",en:"Reviews the generated answer",pt:"Revisa a resposta gerada"},"trigger:OnKnowledgeRequested":{dim:"knowledge",en:"Before searching knowledge",pt:"Antes de buscar no conhecimento"},"trigger:OnToolSelected":{dim:"orchestration",en:"Child chosen as a tool",pt:"Filho escolhido como ferramenta"},"trigger:OnActivity":{dim:"conversation",en:"On every message",pt:"Em toda mensagem"},"setting:generative=on":{dim:"conversation",en:"Generative orchestration on",pt:"Orquestra\xE7\xE3o generativa ligada"},"setting:generative=off":{dim:"conversation",en:"Generative orchestration off",pt:"Orquestra\xE7\xE3o generativa desligada"},"setting:connectable":{dim:"orchestration",en:"Can be called by an orchestrator",pt:"Pode ser chamado por um orquestrador"},"topics:with-model-description":{dim:"conversation",en:"Topics described for the model",pt:"T\xF3picos descritos para o modelo"},"instructions:present":{dim:"governance",en:"Has instructions",pt:"Tem instru\xE7\xF5es",lacks:{en:["has no instructions","have no instructions"],pt:["n\xE3o tem instru\xE7\xF5es","n\xE3o t\xEAm instru\xE7\xF5es"]}},"node:LogCustomTelemetryEvent":{dim:"governance",en:"Logs telemetry",pt:"Registra telemetria",lacks:{en:["logs no telemetry","log no telemetry"],pt:["n\xE3o registra telemetria","n\xE3o registram telemetria"]}},"node:CSATQuestion":{dim:"governance",en:"Asks for satisfaction (CSAT)",pt:"Pergunta a satisfa\xE7\xE3o (CSAT)",lacks:{en:["does not ask for satisfaction","do not ask for satisfaction"],pt:["n\xE3o pergunta a satisfa\xE7\xE3o","n\xE3o perguntam a satisfa\xE7\xE3o"]}},"node:SearchAndSummarizeContent":{dim:"knowledge",en:"Generative answers from knowledge",pt:"Respostas generativas sobre o conhecimento"},"node:SearchKnowledgeSources":{dim:"knowledge",en:"Searches the knowledge sources",pt:"Busca nas fontes de conhecimento"},"yaml-only:triggerCondition":{dim:"knowledge",en:"Search condition only in YAML (the editor may erase it)",pt:"Condi\xE7\xE3o de busca s\xF3 no YAML (a tela pode apagar)"},"knowledge:SharePointSearchSource":{dim:"knowledge",en:"Knowledge in SharePoint",pt:"Conhecimento no SharePoint"},"declared:kpi":{dim:"declared",en:"KPI declared",pt:"KPI declarado",lacks:{en:["has no KPI declared","have no KPI declared"],pt:["n\xE3o tem KPI declarado","n\xE3o t\xEAm KPI declarado"]}},"declared:owner":{dim:"declared",en:"Owner declared",pt:"Dono declarado",lacks:{en:["has no owner declared","have no owner declared"],pt:["n\xE3o tem dono declarado","n\xE3o t\xEAm dono declarado"]}}},he=Object.fromEntries(N.map(e=>[e.id,e.name])),ge=[["calls:topic:","conversation","Calls the topic","Chama o t\xF3pico"],["trigger:","conversation","Trigger","Gatilho"],["setting:","conversation","Setting","Configura\xE7\xE3o"],["connector:","integrations","Connector","Conector"],["operation:","integrations","Operation","Opera\xE7\xE3o"],["connref:","integrations","Connection reference","Refer\xEAncia de conex\xE3o"],["mcp:","integrations","MCP server","Servidor MCP"],["flow:","integrations","Flow","Fluxo"],["knowledge:","knowledge","Knowledge","Conhecimento"],["node:","governance","Node","N\xF3"],["calls:","orchestration","Calls","Chama"],["child:","orchestration","Child","Filho"],["var-in:","orchestration","Receives from the orchestrator","Recebe do orquestrador"],["var:","orchestration","Global variable","Vari\xE1vel global"],["model:","governance","Model","Modelo"],["auth:","governance","Sign-in","Login"],["ms:","microsoft","Microsoft pattern:","Padr\xE3o Microsoft:"],["declared:","declared","Declared:","Declarado:"]],J=e=>ge.find(([n])=>e.startsWith(n));function A(e){return X[e]?.dim??J(e)?.[1]??"governance"}function j(e,n){let o=X[e];if(o)return o[n];let a=/^knowledge:count=(\d+)$/.exec(e);if(a){let l=Number(a[1]);return n==="pt"?`${l} ${l===1?"fonte":"fontes"} de conhecimento`:`${l} knowledge ${l===1?"source":"sources"}`}let t=J(e);if(!t)return e;let i=e.slice(t[0].length);return t[0]==="ms:"&&(i=he[i]??i),t[0]==="auth:"&&i==="None"?n==="pt"?"Sem login":"No sign-in":`${t[n==="pt"?3:2]} ${i}`}var ue={specialist:{en:["specialist","specialists"],pt:["especialista","especialistas"]},orchestrator:{en:["orchestrator","orchestrators"],pt:["orquestrador","orquestradores"]}},z=(e,n,o)=>ue[e][n][o===1?0:1],U={en:{summary:"Summary",matrix:"Matrix",patterns:"Patterns",off:"Off pattern",gaps:"Gaps",conflicts:"Conflicts",agents:"Cast",evidence:"Evidence",declared:"Declared",unknown:"Not understood",dimension:"Dimension",fact:"Fact",key:"Key",agent:"Who",name:"Name",role:"Role",scope:"Scope",share:"Share",have:"Who has it",lack:"Who lacks it",decision:"Decision",why:"Why",missing:"Missing",accepted:"Accepted pattern",rule:"Rule",says:"Says",notMet:"Who does not meet it",value:"Value",source:"Source",inYaml:"In the YAML",file:"File",line:"Line",facts:"Facts",alone:"Only it has",children:"Children",kind:"Kind",yes:"yes",no:"no",accept:"accepted",reject:"rejected",platform:"platform",specialist:"specialist",orchestrator:"orchestrator",title:"The cast, compared",look:"To look at",nothing:"Nothing to look at",privacy:"This file holds the client\u2019s data: keep it in the client\u2019s environment.",count:{agents:"In the cast",orchestrators:"Orchestrators",specialists:"Specialists",patterns:"Patterns",off:"Off a pattern",gaps:"Rules not met",conflicts:"Conflicts",solos:"Only one has it"},why_:{yaml:"YAML that does not read",empty:"empty",kind:"a kind Copilot Studio does not have",file:"not a Copilot Studio file"}},pt:{summary:"Resumo",matrix:"Matriz",patterns:"Padr\xF5es",off:"Fora do padr\xE3o",gaps:"Lacunas",conflicts:"Conflitos",agents:"Elenco",evidence:"Evid\xEAncias",declared:"Declarado",unknown:"N\xE3o entendeu",dimension:"Dimens\xE3o",fact:"Fato",key:"Chave",agent:"Quem",name:"Nome",role:"Papel",scope:"Escopo",share:"Quantos",have:"Quem tem",lack:"Quem falta",decision:"Decis\xE3o",why:"Por qu\xEA",missing:"Falta",accepted:"Padr\xE3o aceito",rule:"Regra",says:"Diz",notMet:"Quem n\xE3o cumpre",value:"Valor",source:"Fonte",inYaml:"No YAML",file:"Arquivo",line:"Linha",facts:"Fatos",alone:"S\xF3 ele tem",children:"Filhos",kind:"Kind",yes:"sim",no:"n\xE3o",accept:"aceito",reject:"rejeitado",platform:"plataforma",specialist:"especialista",orchestrator:"orquestrador",title:"Elenco comparado",look:"Para olhar",nothing:"Nada para olhar",privacy:"Este arquivo tem dados do cliente: deixe-o no ambiente dele.",count:{agents:"No elenco",orchestrators:"Orquestradores",specialists:"Especialistas",patterns:"Padr\xF5es",off:"Fora do padr\xE3o",gaps:"Regras n\xE3o cumpridas",conflicts:"Conflitos",solos:"S\xF3 um tem"},why_:{yaml:"YAML que n\xE3o se l\xEA",empty:"vazio",kind:"um kind que o Copilot Studio n\xE3o tem",file:"n\xE3o \xE9 arquivo do Copilot Studio"}}};function q(e){let n=o=>o.share===1&&!o.decision&&!e.offPattern.some(a=>a.key===o.key);return{look:e.patterns.filter(o=>!n(o)),everyone:e.patterns.filter(n)}}var Z=new TextEncoder,K=e=>e.replace(/[&<>"]/g,n=>({"&":"&","<":"<",">":">",'"':"""})[n]).replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F]/g,""),M=e=>e<26?String.fromCharCode(65+e):M(Math.floor(e/26)-1)+String.fromCharCode(65+e%26),ye=e=>e.replace(/[:\\/?*[\]]/g," ").slice(0,31)||"Sheet";function $e(e){let n=[{}],o=f=>JSON.stringify([f.bold??!1,f.fill??"",f.color??"",f.center??!1,f.wrap??!1]),a=new Map([[o({}),0]]);for(let f of e)for(let y of f.rows)for(let u of y){if(typeof u!="object")continue;let{v:P,...C}=u,L=o(C);a.has(L)||(a.set(L,n.length),n.push(C))}let t=new Map([["|",0]]),i=new Map([["",0]]),l=f=>{let y=`${f.bold?"b":""}|${f.color??""}`;return t.has(y)||t.set(y,t.size),t.get(y)},r=f=>f.fill?(i.has(f.fill)||i.set(f.fill,i.size+1),i.get(f.fill)):0,m=n.map(f=>{let y=f.center||f.wrap?`<alignment${f.center?' horizontal="center"':""}${f.wrap?' wrapText="1"':""} vertical="top"/>`:'<alignment vertical="top"/>';return`<xf numFmtId="0" fontId="${l(f)}" fillId="${r(f)}" borderId="${f.fill||f.bold?1:0}" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1">${y}</xf>`}),c=[...t.keys()].map(f=>{let[y,u]=f.split("|");return`<font>${y?"<b/>":""}<sz val="11"/>${u?`<color rgb="FF${u}"/>`:""}<name val="Calibri"/><family val="2"/></font>`}),g=['<fill><patternFill patternType="none"/></fill>','<fill><patternFill patternType="gray125"/></fill>',...[...i.keys()].filter(Boolean).map(f=>`<fill><patternFill patternType="solid"><fgColor rgb="FF${f}"/><bgColor indexed="64"/></patternFill></fill>`)];return{xml:`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
122
|
+
<script>(()=>{var Y="https://github.com/microsoft/skills-for-copilot-studio/blob/main/patterns",U=[{id:"orchestrator-variables",name:"Orchestrator-Generated Variables",sign:"an OnRecognizedIntent topic with an AutomaticTaskInput that has shouldPromptUser: false"},{id:"rai-error-handling",name:"RAI Error Handling",sign:"the OnError topic reads System.Error.SubCode"},{id:"knowledge-hold-message",name:"Knowledge Hold Message",sign:"an OnKnowledgeRequested topic that sends a message"},{id:"prevent-tool-call-leaks",name:"Prevent Tool Call Leaks",sign:"an OnGeneratedResponse topic that sets System.ContinueResponse"},{id:"dynamic-topic-redirect",name:"Dynamic Topic Redirect",sign:"a BeginDialog whose dialog is a =Switch( expression"},{id:"channel-aware-behavior",name:"Channel-Aware Behavior",sign:"a condition or SetVariable that reads System.Activity.ChannelId (not a tool input)"},{id:"date-context",name:"Date Context",sign:"the instructions use Today() or Now()"},{id:"line-breaks-in-messages",name:"Line Breaks in Messages",sign:"<br /> inside a SendActivity or Question"},{id:"conversation-history-variable",name:"Conversation History Variable"},{id:"chain-of-thought-logging",name:"Chain of Thought Logging"},{id:"deterministic-mcp-calls",name:"Deterministic MCP Calls"},{id:"prevent-child-agent-responses",name:"Prevent Child Agent Responses"},{id:"jit-glossary",name:"JIT Glossary"},{id:"jit-user-context",name:"JIT User Context"},{id:"teams-production-hardening",name:"Teams Production Hardening"}];var N={conversation:{en:"A. Conversation",pt:"A. Conversa"},integrations:{en:"B. Integrations",pt:"B. Integra\xE7\xF5es"},knowledge:{en:"C. Knowledge",pt:"C. Conhecimento"},orchestration:{en:"D. Orchestrator",pt:"D. Orquestrador"},governance:{en:"E. Governance",pt:"E. Governan\xE7a"},text:{en:"F. Text",pt:"F. Texto"},microsoft:{en:"Microsoft patterns",pt:"Padr\xF5es Microsoft"},declared:{en:"Declared",pt:"Declarado"}},ne={"trigger:OnConversationStart":{dim:"conversation",en:"Greeting",pt:"Boas-vindas"},"trigger:OnUnknownIntent":{dim:"conversation",en:"Fallback (when it does not understand)",pt:"Fallback (quando n\xE3o entende)"},"trigger:OnEscalate":{dim:"conversation",en:"Escalation to a person",pt:"Escalonamento para humano",lacks:{en:["does not escalate to a person","do not escalate to a person"],pt:["n\xE3o escala para humano","n\xE3o escalam para humano"]}},"trigger:OnError":{dim:"conversation",en:"Error handling",pt:"Tratamento de erro",lacks:{en:["does not handle errors","do not handle errors"],pt:["n\xE3o trata erro","n\xE3o tratam erro"]}},"trigger:OnRecognizedIntent":{dim:"conversation",en:"A topic of its own, by intent",pt:"T\xF3pico pr\xF3prio, por inten\xE7\xE3o"},"trigger:OnRedirect":{dim:"orchestration",en:"Takes a call from the orchestrator",pt:"Recebe chamada do orquestrador",lacks:{en:["takes no call from the orchestrator","take no call from the orchestrator"],pt:["n\xE3o recebe chamada do orquestrador","n\xE3o recebem chamada do orquestrador"]}},"trigger:OnSelectIntent":{dim:"conversation",en:"Disambiguation (\xABdid you mean\u2026\xBB)",pt:"Desambigua\xE7\xE3o (\xABvoc\xEA quis dizer\u2026\xBB)"},"trigger:OnSignIn":{dim:"conversation",en:"Sign-in",pt:"Login"},"trigger:OnGeneratedResponse":{dim:"conversation",en:"Reviews the generated answer",pt:"Revisa a resposta gerada"},"trigger:OnKnowledgeRequested":{dim:"knowledge",en:"Before searching knowledge",pt:"Antes de buscar no conhecimento"},"trigger:OnToolSelected":{dim:"orchestration",en:"Child chosen as a tool",pt:"Filho escolhido como ferramenta"},"trigger:OnActivity":{dim:"conversation",en:"On every message",pt:"Em toda mensagem"},"setting:generative=on":{dim:"conversation",en:"Generative orchestration on",pt:"Orquestra\xE7\xE3o generativa ligada"},"setting:generative=off":{dim:"conversation",en:"Generative orchestration off",pt:"Orquestra\xE7\xE3o generativa desligada"},"setting:model-knowledge=on":{dim:"governance",en:"The model's general knowledge on",pt:"Conhecimento geral do modelo ligado"},"setting:model-knowledge=off":{dim:"governance",en:"The model's general knowledge off",pt:"Conhecimento geral do modelo desligado"},"setting:semantic-search=on":{dim:"knowledge",en:"Semantic search on",pt:"Busca sem\xE2ntica ligada"},"setting:semantic-search=off":{dim:"knowledge",en:"Semantic search off",pt:"Busca sem\xE2ntica desligada"},"setting:web-browsing=on":{dim:"knowledge",en:"Web browsing on",pt:"Navega\xE7\xE3o na web ligada"},"setting:web-browsing=off":{dim:"knowledge",en:"Web browsing off",pt:"Navega\xE7\xE3o na web desligada"},"setting:connectable":{dim:"orchestration",en:"Can be called by an orchestrator",pt:"Pode ser chamado por um orquestrador"},"topics:with-model-description":{dim:"conversation",en:"Topics described for the model",pt:"T\xF3picos descritos para o modelo"},"instructions:present":{dim:"governance",en:"Has instructions",pt:"Tem instru\xE7\xF5es",lacks:{en:["has no instructions","have no instructions"],pt:["n\xE3o tem instru\xE7\xF5es","n\xE3o t\xEAm instru\xE7\xF5es"]}},"node:LogCustomTelemetryEvent":{dim:"governance",en:"Logs telemetry",pt:"Registra telemetria",lacks:{en:["logs no telemetry","log no telemetry"],pt:["n\xE3o registra telemetria","n\xE3o registram telemetria"]}},"node:CSATQuestion":{dim:"governance",en:"Asks for satisfaction (CSAT)",pt:"Pergunta a satisfa\xE7\xE3o (CSAT)",lacks:{en:["does not ask for satisfaction","do not ask for satisfaction"],pt:["n\xE3o pergunta a satisfa\xE7\xE3o","n\xE3o perguntam a satisfa\xE7\xE3o"]}},"node:SearchAndSummarizeContent":{dim:"knowledge",en:"Generative answers from knowledge",pt:"Respostas generativas sobre o conhecimento"},"node:SearchKnowledgeSources":{dim:"knowledge",en:"Searches the knowledge sources",pt:"Busca nas fontes de conhecimento"},"yaml-only:triggerCondition":{dim:"knowledge",en:"Search condition only in YAML (the editor may erase it)",pt:"Condi\xE7\xE3o de busca s\xF3 no YAML (a tela pode apagar)"},"knowledge:SharePointSearchSource":{dim:"knowledge",en:"Knowledge in SharePoint",pt:"Conhecimento no SharePoint"},"declared:kpi":{dim:"declared",en:"KPI declared",pt:"KPI declarado",lacks:{en:["has no KPI declared","have no KPI declared"],pt:["n\xE3o tem KPI declarado","n\xE3o t\xEAm KPI declarado"]}},"declared:owner":{dim:"declared",en:"Owner declared",pt:"Dono declarado",lacks:{en:["has no owner declared","have no owner declared"],pt:["n\xE3o tem dono declarado","n\xE3o t\xEAm dono declarado"]}}},we=Object.fromEntries(U.map(e=>[e.id,e.name])),xe=[["reaches:","conversation","A topic leads to it (part of trigger:<value>)","Um t\xF3pico leva a ele (parte de trigger:<valor>)"],["calls:topic:","conversation","Calls the topic (one not found)","Chama o t\xF3pico (n\xE3o encontrado)"],["trigger:","conversation","Trigger","Gatilho"],["setting:","conversation","Setting","Configura\xE7\xE3o"],["connector:","integrations","Connector","Conector"],["operation:","integrations","Operation","Opera\xE7\xE3o"],["connref:","integrations","Connection reference","Refer\xEAncia de conex\xE3o"],["mcp:","integrations","MCP server","Servidor MCP"],["flow:","integrations","Flow","Fluxo"],["knowledge:","knowledge","Knowledge","Conhecimento"],["node:","governance","Node","N\xF3"],["calls:","orchestration","Calls","Chama"],["child:","orchestration","Child","Filho"],["var-in:","orchestration","Receives from the orchestrator","Recebe do orquestrador"],["var:","orchestration","Global variable","Vari\xE1vel global"],["model:","governance","Model","Modelo"],["auth:","governance","Sign-in","Login"],["ms:","microsoft","Microsoft pattern:","Padr\xE3o Microsoft:"],["text:","text","Text:","Texto:"],["declared:","declared","Declared:","Declarado:"]],oe=e=>xe.find(([n])=>e.startsWith(n));function R(e){return e.startsWith("reaches:")?R(`trigger:${e.slice(8)}`):ne[e]?.dim??oe(e)?.[1]??"governance"}var G=e=>e.startsWith("reaches:")?`trigger:${e.slice(8)}`:void 0,te=(e,n)=>n?.[e]??e;function T(e,n,s){let a=ne[e];if(a)return a[n];if(e.startsWith("text:block:")){let p=e.endsWith("~variant"),y=p?e.slice(0,-8):e,$=s?.[y]??y.slice(11);return p?`${$} (${n==="pt"?"varia\xE7\xE3o":"variation"})`:$}if(e.startsWith("text:link-domain:"))return`${n==="pt"?"Link para":"Link to"} ${e.slice(17)}`;if(e==="text:email")return n==="pt"?"Cita um e-mail":"Mentions an e-mail";if(e.startsWith("text:")){let[p,y]=[e.slice(5).split("=")[0],e.includes("=")?e.slice(e.indexOf("=")+1):void 0],$=s?.[`text:${p}`]??p;return y===void 0?$:`${$} = ${y}`}if(e.startsWith("reaches:")){let p=T(`trigger:${e.slice(8)}`,n);return n==="pt"?`Um t\xF3pico leva a \xAB${p}\xBB`:`A topic leads to \xAB${p}\xBB`}let t=/^knowledge:count=(\d+)$/.exec(e);if(t){let p=Number(t[1]);return n==="pt"?`${p} ${p===1?"fonte":"fontes"} de conhecimento`:`${p} knowledge ${p===1?"source":"sources"}`}let r=oe(e);if(!r)return e;let d=e.slice(r[0].length);if(r[0]==="ms:"&&(d=we[d]??d),r[0]==="auth:"&&d==="None")return n==="pt"?"Sem login":"No sign-in";if(e.startsWith("setting:moderation="))return n==="pt"?`Modera\xE7\xE3o de conte\xFAdo: ${e.slice(19)}`:`Content moderation: ${e.slice(19)}`;if(["connector:","connref:","mcp:","calls:","flow:"].includes(r[0])&&(d=te(d,s)),r[0]==="operation:"){let[p,y]=[d.slice(0,d.indexOf("/")),d.slice(d.indexOf("/")+1)];d=`${te(p,s)} \xB7 ${y}`}return`${r[n==="pt"?3:2]} ${d}`}var Se={specialist:{en:["specialist","specialists"],pt:["especialista","especialistas"]},orchestrator:{en:["orchestrator","orchestrators"],pt:["orquestrador","orquestradores"]}},H=(e,n,s)=>Se[e][n][s===1?0:1],W={en:{summary:"Summary",matrix:"Matrix",patterns:"Patterns",text:"Text",off:"Off pattern",gaps:"Gaps",conflicts:"Conflicts",agents:"Cast",evidence:"Evidence",declared:"Declared",unknown:"Not understood",dimension:"Dimension",fact:"Fact",key:"Key",agent:"Who",name:"Name",role:"Role",scope:"Scope",share:"Share",have:"Who has it",lack:"Who lacks it",decision:"Decision",why:"Why",missing:"Missing",accepted:"Accepted pattern",rule:"Rule",says:"Says",notMet:"Who does not meet it",value:"Value",source:"Source",inYaml:"In the YAML",file:"File",line:"Line",facts:"Facts",alone:"Only it has",children:"Children",kind:"Kind",types:"Types",id:"Id",label:"Label",body:"Text",variant:"Variation",official:"Official",type:"type",yes:"yes",no:"no",accept:"accepted",reject:"rejected",platform:"platform",specialist:"specialist",orchestrator:"orchestrator",title:"The cast, compared",look:"To look at",nothing:"Nothing to look at",privacy:"This file holds the client\u2019s data: keep it in the client\u2019s environment.",count:{agents:"In the cast",orchestrators:"Orchestrators",specialists:"Specialists",patterns:"Patterns",off:"Off a pattern",gaps:"Rules not met",conflicts:"Conflicts",solos:"Only one has it"},why_:{yaml:"YAML that does not read",empty:"empty",kind:"a kind Copilot Studio does not have",file:"not a Copilot Studio file"}},pt:{summary:"Resumo",matrix:"Matriz",patterns:"Padr\xF5es",text:"Texto",off:"Fora do padr\xE3o",gaps:"Lacunas",conflicts:"Conflitos",agents:"Elenco",evidence:"Evid\xEAncias",declared:"Declarado",unknown:"N\xE3o entendeu",dimension:"Dimens\xE3o",fact:"Fato",key:"Chave",agent:"Quem",name:"Nome",role:"Papel",scope:"Escopo",share:"Quantos",have:"Quem tem",lack:"Quem falta",decision:"Decis\xE3o",why:"Por qu\xEA",missing:"Falta",accepted:"Padr\xE3o aceito",rule:"Regra",says:"Diz",notMet:"Quem n\xE3o cumpre",value:"Valor",source:"Fonte",inYaml:"No YAML",file:"Arquivo",line:"Linha",facts:"Fatos",alone:"S\xF3 ele tem",children:"Filhos",kind:"Kind",types:"Tipos",id:"Id",label:"R\xF3tulo",body:"Texto",variant:"Varia\xE7\xE3o",official:"Oficial",type:"tipo",yes:"sim",no:"n\xE3o",accept:"aceito",reject:"rejeitado",platform:"plataforma",specialist:"especialista",orchestrator:"orquestrador",title:"Elenco comparado",look:"Para olhar",nothing:"Nada para olhar",privacy:"Este arquivo tem dados do cliente: deixe-o no ambiente dele.",count:{agents:"No elenco",orchestrators:"Orquestradores",specialists:"Especialistas",patterns:"Padr\xF5es",off:"Fora do padr\xE3o",gaps:"Regras n\xE3o cumpridas",conflicts:"Conflitos",solos:"S\xF3 um tem"},why_:{yaml:"YAML que n\xE3o se l\xEA",empty:"vazio",kind:"um kind que o Copilot Studio n\xE3o tem",file:"n\xE3o \xE9 arquivo do Copilot Studio"}}};function q(e){let n=t=>e.offPattern.some(r=>r.key===t.key||r.partOf===t.key),s=t=>t.share===1&&!t.decision&&!n(t),a=e.patterns.filter(t=>!t.partOf);return{look:a.filter(t=>!s(t)),everyone:a.filter(s)}}var se=new TextEncoder,Q=e=>e.replace(/[&<>"]/g,n=>({"&":"&","<":"<",">":">",'"':"""})[n]).replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F]/g,""),P=e=>e<26?String.fromCharCode(65+e):P(Math.floor(e/26)-1)+String.fromCharCode(65+e%26),Oe=e=>e.replace(/[:\\/?*[\]]/g," ").slice(0,31)||"Sheet";function Te(e){let n=[{}],s=i=>JSON.stringify([i.bold??!1,i.fill??"",i.color??"",i.center??!1,i.wrap??!1]),a=new Map([[s({}),0]]);for(let i of e)for(let l of i.rows)for(let h of l){if(typeof h!="object")continue;let{v:O,...D}=h,L=s(D);a.has(L)||(a.set(L,n.length),n.push(D))}let t=new Map([["|",0]]),r=new Map([["",0]]),d=i=>{let l=`${i.bold?"b":""}|${i.color??""}`;return t.has(l)||t.set(l,t.size),t.get(l)},p=i=>i.fill?(r.has(i.fill)||r.set(i.fill,r.size+1),r.get(i.fill)):0,y=n.map(i=>{let l=i.center||i.wrap?`<alignment${i.center?' horizontal="center"':""}${i.wrap?' wrapText="1"':""} vertical="top"/>`:'<alignment vertical="top"/>';return`<xf numFmtId="0" fontId="${d(i)}" fillId="${p(i)}" borderId="${i.fill||i.bold?1:0}" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1">${l}</xf>`}),$=[...t.keys()].map(i=>{let[l,h]=i.split("|");return`<font>${l?"<b/>":""}<sz val="11"/>${h?`<color rgb="FF${h}"/>`:""}<name val="Calibri"/><family val="2"/></font>`}),c=['<fill><patternFill patternType="none"/></fill>','<fill><patternFill patternType="gray125"/></fill>',...[...r.keys()].filter(Boolean).map(i=>`<fill><patternFill patternType="solid"><fgColor rgb="FF${i}"/><bgColor indexed="64"/></patternFill></fill>`)];return{xml:`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
112
123
|
<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
|
|
113
|
-
<fonts count="${
|
|
114
|
-
<fills count="${
|
|
124
|
+
<fonts count="${$.length}">${$.join("")}</fonts>
|
|
125
|
+
<fills count="${c.length}">${c.join("")}</fills>
|
|
115
126
|
<borders count="2"><border><left/><right/><top/><bottom/><diagonal/></border><border><left style="thin"><color rgb="FFD0D7E2"/></left><right style="thin"><color rgb="FFD0D7E2"/></right><top style="thin"><color rgb="FFD0D7E2"/></top><bottom style="thin"><color rgb="FFD0D7E2"/></bottom><diagonal/></border></borders>
|
|
116
127
|
<cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs>
|
|
117
|
-
<cellXfs count="${
|
|
128
|
+
<cellXfs count="${y.length}">${y.join("")}</cellXfs>
|
|
118
129
|
<cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles>
|
|
119
|
-
</styleSheet>`,styleOf:
|
|
130
|
+
</styleSheet>`,styleOf:i=>typeof i=="object"?a.get(s((({v:l,...h})=>h)(i)))??0:0}}function Ce(e,n){let s=Math.max(e.columns.length,...e.rows.map(y=>y.length),1),a=e.rows.map((y,$)=>{let c=y.map((k,i)=>{let l=`${P(i)}${$+1}`,h=typeof k=="object"?k.v:k,O=n(k),D=O?` s="${O}"`:"";return h===""||h===void 0||h===null?O?`<c r="${l}"${D}/>`:"":typeof h=="number"?`<c r="${l}"${D}><v>${h}</v></c>`:`<c r="${l}"${D} t="inlineStr"><is><t xml:space="preserve">${Q(String(h))}</t></is></c>`}).join("");return`<row r="${$+1}">${c}</row>`}),t=`${P(s-1)}${Math.max(1,e.rows.length)}`,r=e.header?'<pane ySplit="1" topLeftCell="A2" activePane="bottomLeft" state="frozen"/><selection pane="bottomLeft" activeCell="A2" sqref="A2"/>':"",d=e.columns.length?`<cols>${e.columns.map((y,$)=>`<col min="${$+1}" max="${$+1}" width="${y.width}" customWidth="1"/>`).join("")}</cols>`:"",p=e.header&&e.rows.length>1?`<autoFilter ref="A1:${P(Math.max(0,e.columns.length-1))}${e.rows.length}"/>`:"";return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
120
131
|
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
|
|
121
|
-
<dimension ref="A1:${t}"/><sheetViews><sheetView workbookViewId="0">${
|
|
122
|
-
</worksheet>`}function
|
|
123
|
-
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>${e.map((
|
|
132
|
+
<dimension ref="A1:${t}"/><sheetViews><sheetView workbookViewId="0">${r}</sheetView></sheetViews><sheetFormatPr defaultRowHeight="15"/>${d}<sheetData>${a.join("")}</sheetData>${p}
|
|
133
|
+
</worksheet>`}function ae(e){let{xml:n,styleOf:s}=Te(e),a=e.map(d=>Oe(d.name)),t=e.map((d,p)=>d.header&&d.rows.length>1?`<definedName name="_xlnm._FilterDatabase" localSheetId="${p}" hidden="1">'${Q(a[p]).replace(/'/g,"''")}'!$A$1:$${P(Math.max(0,d.columns.length-1))}$${d.rows.length}</definedName>`:"").join(""),r=[["[Content_Types].xml",`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
134
|
+
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>${e.map((d,p)=>`<Override PartName="/xl/worksheets/sheet${p+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>`).join("")}</Types>`],["_rels/.rels",`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
124
135
|
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>`],["xl/workbook.xml",`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
125
|
-
<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><bookViews><workbookView/></bookViews><sheets>${a.map((
|
|
126
|
-
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">${e.map((l,r)=>`<Relationship Id="rId${r+1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet${r+1}.xml"/>`).join("")}<Relationship Id="rId${e.length+1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>`],["xl/styles.xml",n],...e.map((l,r)=>[`xl/worksheets/sheet${r+1}.xml`,ke(l,o)])];return ve(i.map(([l,r])=>[l,Z.encode(r)]))}var be=(()=>{let e=new Uint32Array(256);for(let n=0;n<256;n++){let o=n;for(let a=0;a<8;a++)o=o&1?3988292384^o>>>1:o>>>1;e[n]=o>>>0}return e})();function we(e){let n=4294967295;for(let o=0;o<e.length;o++)n=be[(n^e[o])&255]^n>>>8;return(n^4294967295)>>>0}function ve(e){let n=[],o=[],a=0;for(let[c,g]of e){let k=Z.encode(c),f=we(g),y=new DataView(new ArrayBuffer(30));y.setUint32(0,67324752,!0),y.setUint16(4,20,!0),y.setUint16(6,2048,!0),y.setUint16(8,0,!0),y.setUint32(14,f,!0),y.setUint32(18,g.length,!0),y.setUint32(22,g.length,!0),y.setUint16(26,k.length,!0),n.push(new Uint8Array(y.buffer),k,g);let u=new DataView(new ArrayBuffer(46));u.setUint32(0,33639248,!0),u.setUint16(4,20,!0),u.setUint16(6,20,!0),u.setUint16(8,2048,!0),u.setUint32(16,f,!0),u.setUint32(20,g.length,!0),u.setUint32(24,g.length,!0),u.setUint16(28,k.length,!0),u.setUint32(42,a,!0),o.push(new Uint8Array(u.buffer),k),a+=30+k.length+g.length}let t=o.reduce((c,g)=>c+g.length,0),i=new DataView(new ArrayBuffer(22));i.setUint32(0,101010256,!0),i.setUint16(8,e.length,!0),i.setUint16(10,e.length,!0),i.setUint32(12,t,!0),i.setUint32(16,a,!0);let l=[...n,...o,new Uint8Array(i.buffer)],r=new Uint8Array(l.reduce((c,g)=>c+g.length,0)),m=0;for(let c of l)r.set(c,m),m+=c.length;return r}var ne=e=>ee(e),xe={bold:!0,fill:"E8EEF7"},Se={v:"\u25CF",fill:"DDF3E6",center:!0},Oe={v:"\xD7",fill:"FFD5CC",center:!0,bold:!0},Ce={v:"\u25D0",fill:"FFF3C4",center:!0},te=Object.keys(R);function oe(e,n,o,a="en"){let t=U[a],i=(s,h,S)=>({key:s,name:t[s],header:!0,columns:h.map(([D,I])=>({title:D,width:I})),rows:[h.map(([D])=>({v:D,...xe})),...S]}),l=s=>t[e.roles[s]],r=s=>t[s],m=s=>j(s,a),c=[...e.agents].sort((s,h)=>s.role===h.role?s.id.localeCompare(h.id):s.role==="orchestrator"?-1:1),g=[...new Set([...c.flatMap(s=>Object.keys(s.facts)),...e.patterns.map(s=>s.key)])].sort((s,h)=>te.indexOf(A(s))-te.indexOf(A(h))||s.localeCompare(h)),k=new Set(e.offPattern.map(s=>`${s.agent} ${s.key}`)),f=s=>e.agents.filter(h=>h.role===s).length,y={key:"summary",name:t.summary,header:!1,columns:[{title:"",width:28},{title:"",width:100}],rows:[[{v:e.name??t.title,bold:!0},""],[{v:t.privacy,color:"B42318"},""],[t.count.agents,e.agents.length],[t.count.orchestrators,f("orchestrator")],[t.count.specialists,f("specialist")],[t.count.patterns,e.patterns.length],[t.count.off,new Set(e.offPattern.map(s=>s.agent)).size],[t.count.gaps,e.gaps.length],[t.count.conflicts,e.conflicts.length],[t.count.solos,n.filter(s=>s.key==="solo").length],["",""],[{v:n.length?t.look:t.nothing,bold:!0},""],...n.map(s=>["",{v:s[a],wrap:!0}])]},u=i("matrix",[[t.dimension,18],[t.fact,40],[t.key,34],...c.map(s=>[s.id,14])],g.map(s=>[R[A(s)][a],m(s),s,...c.map(h=>s in h.facts?s.startsWith("declared:")?Ce:Se:k.has(`${h.id} ${s}`)?Oe:"")])),{look:P,everyone:C}=q(e),L=i("patterns",[[t.key,34],[t.fact,40],[t.scope,14],[t.role,14],[t.share,10],[t.have,50],[t.lack,40],[t.decision,12],[t.why,50]],[...P,...C].map(s=>{let h=e.offPattern.filter(S=>S.key===s.key).map(S=>S.agent);return[s.key,m(s.key),r(s.scope),t[s.role],`${Math.round(s.share*100)}%`,s.agents.join(", "),h.join(", "),s.decision?t[s.decision.status==="accepted"?"accept":"reject"]:"",s.decision?.why??""]})),le=i("off",[[t.agent,24],[t.role,14],[t.missing,44],[t.key,34],[t.scope,14],[t.accepted,14]],e.offPattern.map(s=>[s.agent,l(s.agent),m(s.key),s.key,r(s.scope),e.patterns.find(h=>h.key===s.key)?.decision?.status==="accepted"?t.yes:""])),ce=i("gaps",[[t.rule,16],[t.says,50],[t.role,14],[t.notMet,60]],e.gaps.map(s=>[s.rule.id,s.rule.says,t[s.rule.role],s.agents.join(", ")])),de=i("conflicts",[[t.agent,24],[t.fact,40],[t.key,34],[t.declared,20],[t.source,40],[t.inYaml,12]],e.conflicts.map(s=>[s.agent,m(s.key),s.key,s.declared,s.source,s.observed?t.yes:t.no])),pe=i("agents",[[t.agent,24],[t.name,32],[t.role,14],[t.facts,8],[t.off,44],[t.alone,44],[t.children,24],[t.unknown,12]],c.map(s=>[s.id,s.displayName??"",t[s.role],Object.keys(s.facts).length,e.offPattern.filter(h=>h.agent===s.id).map(h=>m(h.key)).join("; "),e.solos.filter(h=>h.agents[0]===s.id).map(h=>m(h.key)).join("; "),s.children.map(h=>h.name).join(", "),e.unknown.filter(h=>h.agent===s.id).length||""])),me=i("evidence",[[t.agent,30],[t.fact,40],[t.key,34],[t.file,50],[t.line,8]],c.flatMap(s=>[{who:s.id,facts:s.facts},...s.children.map(h=>({who:`${s.id} \u203A ${h.name}`,facts:h.facts}))]).flatMap(({who:s,facts:h})=>Object.entries(h).sort(([S],[D])=>S.localeCompare(D)).flatMap(([S,D])=>D.map(I=>[s,m(S),S,I.file,I.line??""])))),fe=i("declared",[[t.agent,24],[t.key,34],[t.value,40],[t.source,40]],o.declared.map(s=>[s.agent,s.key,s.value,s.source])),Q=[y,u,L,le,ce,de,pe,me,fe];return e.unknown.length&&Q.push(i("unknown",[[t.agent,24],[t.file,50],[t.why,40],[t.kind,24]],e.unknown.map(s=>[s.agent,s.file,t.why_[s.why],s.kind??""]))),Q}var Te={en:{map:"Map",patterns:"Patterns",cast:"Cast",microsoft:"Microsoft",unknown:e=>`What the analysis did not understand (${e})`,matrix:"Who has what",candidates:"Patterns to decide",everyone:e=>`Everybody already does it (${e})`,all:"All",role:"Role",focus:"Focus",legend:"\u25CF has it (click for the file) \xB7 \xD7 off a pattern of its role \xB7 \u25D0 declared by people",pattern:"pattern",of:(e,n,o)=>`${e} of ${n} ${o}`,who:"Who has it",lacks:"Off it",none:"nobody",decision:"Decision",toDecide:"to decide \u2014 in the workbook or the cast file",alone:"Only one has it: innovation or debt?",orchestratorDoes:"Only the orchestrator does it",sign:"How cast-list knows",follows:"Who follows it",declaredOnly:"only declared",nothingUnknown:"Everything was understood.",facts:"Facts",off:"Off a pattern",solo:"Only it has",children:"Children",close:"Close \u2715",foot:"The facts come from the YAML files; nothing was made up.",summary:(e,n,o,a,t)=>`${e} in the cast \xB7 ${n} patterns \xB7 ${o} off a pattern \xB7 ${a} only one has \xB7 threshold ${t}% of each role`,excel:"\u2B07 Excel",yaml:"\u2B07 cast.yaml",png:"\u2B07 PNG",name:"Name",said:"declared"},pt:{map:"Mapa",patterns:"Padr\xF5es",cast:"Elenco",microsoft:"Microsoft",unknown:e=>`O que a an\xE1lise n\xE3o entendeu (${e})`,matrix:"Quem tem o qu\xEA",candidates:"Padr\xF5es para decidir",everyone:e=>`Todos j\xE1 fazem (${e})`,all:"Todos",role:"Papel",focus:"Foco",legend:"\u25CF tem (clique para ver o arquivo) \xB7 \xD7 fora de um padr\xE3o do seu papel \xB7 \u25D0 declarado por pessoas",pattern:"padr\xE3o",of:(e,n,o)=>`${e} de ${n} ${o}`,who:"Quem tem",lacks:"Fora",none:"ningu\xE9m",decision:"Decis\xE3o",toDecide:"a decidir \u2014 na planilha ou no cast.yaml",alone:"S\xF3 um tem: inova\xE7\xE3o ou d\xEDvida?",orchestratorDoes:"S\xF3 o orquestrador faz",sign:"Como a cast-list sabe",follows:"Quem segue",declaredOnly:"s\xF3 declarado",nothingUnknown:"Tudo foi entendido.",facts:"Fatos",off:"Fora do padr\xE3o",solo:"S\xF3 ele tem",children:"Filhos",close:"Fechar \u2715",foot:"Os fatos v\xEAm dos arquivos YAML; nada foi inventado.",summary:(e,n,o,a,t)=>`${e} no elenco \xB7 ${n} padr\xF5es \xB7 ${o} fora do padr\xE3o \xB7 ${a} s\xF3 um tem \xB7 limite ${t}% de cada papel`,excel:"\u2B07 Excel",yaml:"\u2B07 cast.yaml",png:"\u2B07 PNG",name:"Nome",said:"declarado"}},b=JSON.parse(document.getElementById("cast").textContent),{result:$,lang:x,looks:F}=b,d=Te[x],v=U[x],Y=oe($,F,b.cast,x);document.documentElement.lang=x==="pt"?"pt-BR":"en";document.title=$.name??b.id;var p=e=>String(e??"").replace(/[&<>"']/g,n=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[n]),T=e=>p(j(e,x)),se=[...$.agents].sort((e,n)=>e.role===n.role?e.id.localeCompare(n.id):e.role==="orchestrator"?-1:1),G=e=>$.patterns.find(n=>n.key===e),ae=e=>$.offPattern.filter(n=>n.key===e).map(n=>n.agent),H=e=>{let n=G(e);if(!n)return"";let o=n.decision?`<span class="cl-badge ${n.decision.status}">${p(v[n.decision.status==="accepted"?"accept":"reject"])}</span>`:"";return`<span class="cl-badge ${n.scope}">${d.pattern} \xB7 ${p(v[n.scope])}</span>${o}`},O="map",w,E="all",_,V=document.getElementById("app");function re(){let e=[["map",d.map],["patterns",d.patterns],["cast",d.cast],["microsoft",d.microsoft],["unknown",d.unknown($.unknown.length)]],n=new Set($.offPattern.map(o=>o.agent)).size;V.innerHTML=`<div class="cl-wrap">
|
|
127
|
-
<header><h1 class="cl-title">${
|
|
128
|
-
<div class="cl-bar" role="tablist">${e.map(([
|
|
129
|
-
<span class="cl-space"></span><button class="cl-get" data-get="xlsx">${
|
|
130
|
-
${
|
|
131
|
-
<p class="cl-foot">${
|
|
132
|
-
</div>`}function
|
|
133
|
-
${
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
${
|
|
137
|
-
${l
|
|
138
|
-
|
|
139
|
-
${
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
${
|
|
136
|
+
<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><bookViews><workbookView/></bookViews><sheets>${a.map((d,p)=>`<sheet name="${Q(d)}" sheetId="${p+1}" r:id="rId${p+1}"/>`).join("")}</sheets>${t?`<definedNames>${t}</definedNames>`:""}</workbook>`],["xl/_rels/workbook.xml.rels",`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
137
|
+
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">${e.map((d,p)=>`<Relationship Id="rId${p+1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet${p+1}.xml"/>`).join("")}<Relationship Id="rId${e.length+1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>`],["xl/styles.xml",n],...e.map((d,p)=>[`xl/worksheets/sheet${p+1}.xml`,Ce(d,s)])];return Re(r.map(([d,p])=>[d,se.encode(p)]))}var je=(()=>{let e=new Uint32Array(256);for(let n=0;n<256;n++){let s=n;for(let a=0;a<8;a++)s=s&1?3988292384^s>>>1:s>>>1;e[n]=s>>>0}return e})();function De(e){let n=4294967295;for(let s=0;s<e.length;s++)n=je[(n^e[s])&255]^n>>>8;return(n^4294967295)>>>0}function Re(e){let n=[],s=[],a=0;for(let[$,c]of e){let k=se.encode($),i=De(c),l=new DataView(new ArrayBuffer(30));l.setUint32(0,67324752,!0),l.setUint16(4,20,!0),l.setUint16(6,2048,!0),l.setUint16(8,0,!0),l.setUint32(14,i,!0),l.setUint32(18,c.length,!0),l.setUint32(22,c.length,!0),l.setUint16(26,k.length,!0),n.push(new Uint8Array(l.buffer),k,c);let h=new DataView(new ArrayBuffer(46));h.setUint32(0,33639248,!0),h.setUint16(4,20,!0),h.setUint16(6,20,!0),h.setUint16(8,2048,!0),h.setUint32(16,i,!0),h.setUint32(20,c.length,!0),h.setUint32(24,c.length,!0),h.setUint16(28,k.length,!0),h.setUint32(42,a,!0),s.push(new Uint8Array(h.buffer),k),a+=30+k.length+c.length}let t=s.reduce(($,c)=>$+c.length,0),r=new DataView(new ArrayBuffer(22));r.setUint32(0,101010256,!0),r.setUint16(8,e.length,!0),r.setUint16(10,e.length,!0),r.setUint32(12,t,!0),r.setUint32(16,a,!0);let d=[...n,...s,new Uint8Array(r.buffer)],p=new Uint8Array(d.reduce(($,c)=>$+c.length,0)),y=0;for(let $ of d)p.set($,y),y+=$.length;return p}var ie=e=>ae(e),Ae={bold:!0,fill:"E8EEF7"},Ne={v:"\u25CF",fill:"DDF3E6",center:!0},Me={v:"\xD7",fill:"FFD5CC",center:!0,bold:!0},Fe={v:"\u25D0",fill:"FFF3C4",center:!0},Pe={v:"\u2248",fill:"FFF6DC",center:!0,bold:!0},re=Object.keys(N);function le(e,n,s,a="en"){let t=W[a],r=(o,g,b)=>({key:o,name:t[o],header:!0,columns:g.map(([A,I])=>({title:A,width:I})),rows:[g.map(([A])=>({v:A,...Ae})),...b]}),d=o=>t[e.roles[o]],p=o=>o.startsWith("type:")?`${t.type}:${e.typeNames[o.slice(5)]??o.slice(5)}`:t[o],y=o=>(e.types[o]??[]).map(g=>e.typeNames[g]??g).join(" \xB7 "),$=o=>T(o,a,e.names),c=[...e.agents].sort((o,g)=>o.role===g.role?o.id.localeCompare(g.id):o.role==="orchestrator"?-1:1),k=[...new Set([...c.flatMap(o=>Object.keys(o.facts)),...e.patterns.map(o=>o.key)])].filter(o=>!o.endsWith("~variant")).sort((o,g)=>re.indexOf(R(o))-re.indexOf(R(g))||o.localeCompare(g)),i=new Set(e.offPattern.map(o=>`${o.agent} ${o.key}`)),l=o=>e.agents.filter(g=>g.role===o).length,h={key:"summary",name:t.summary,header:!1,columns:[{title:"",width:28},{title:"",width:100}],rows:[[{v:e.name??t.title,bold:!0},""],[{v:t.privacy,color:"B42318"},""],[t.count.agents,e.agents.length],[t.count.orchestrators,l("orchestrator")],[t.count.specialists,l("specialist")],[t.count.patterns,e.patterns.length],[t.count.off,new Set(e.offPattern.map(o=>o.agent)).size],[t.count.gaps,e.gaps.length],[t.count.conflicts,e.conflicts.length],[t.count.solos,n.filter(o=>o.key==="solo").length],["",""],[{v:n.length?t.look:t.nothing,bold:!0},""],...n.map(o=>["",{v:o[a],wrap:!0}])]},O=r("matrix",[[t.dimension,18],[t.fact,40],[t.key,34],...c.map(o=>[o.id,14])],k.map(o=>[N[R(o)][a],$(o),o,...c.map(g=>o in g.facts?o.startsWith("declared:")?Fe:Ne:`${o}~variant`in g.facts?Pe:i.has(`${g.id} ${o}`)?Me:"")])),{look:D,everyone:L}=q(e),ge=r("patterns",[[t.key,34],[t.fact,40],[t.scope,14],[t.role,14],[t.share,10],[t.have,50],[t.lack,40],[t.decision,12],[t.why,50]],[...D,...L].map(o=>{let g=e.offPattern.filter(b=>b.key===o.key).map(b=>b.agent);return[o.key,$(o.key),p(o.scope),t[o.role],`${Math.round(o.share*100)}%`,o.agents.join(", "),g.join(", "),o.decision?t[o.decision.status==="accepted"?"accept":"reject"]:"",o.decision?.why??""]})),he=r("off",[[t.agent,24],[t.role,14],[t.missing,44],[t.key,34],[t.scope,14],[t.accepted,14]],e.offPattern.map(o=>[o.agent,d(o.agent),$(o.key),o.key,p(o.scope),e.patterns.find(g=>g.key===o.key)?.decision?.status==="accepted"?t.yes:""])),ue=r("gaps",[[t.rule,16],[t.says,50],[t.role,14],[t.notMet,60]],e.gaps.map(o=>[o.rule.id,o.rule.says,o.rule.role?t[o.rule.role]:"",o.agents.join(", ")])),$e=r("conflicts",[[t.agent,24],[t.fact,40],[t.key,34],[t.declared,20],[t.source,40],[t.inYaml,12]],e.conflicts.map(o=>[o.agent,$(o.key),o.key,o.declared,o.source,o.observed?t.yes:t.no])),ye=r("agents",[[t.agent,24],[t.name,32],[t.role,14],[t.types,24],[t.facts,8],[t.off,44],[t.alone,44],[t.children,24],[t.unknown,12]],c.map(o=>[o.id,o.displayName??"",t[o.role],y(o.id),Object.keys(o.facts).length,e.offPattern.filter(g=>g.agent===o.id).map(g=>$(g.key)).join("; "),e.solos.filter(g=>g.agents[0]===o.id).map(g=>$(g.key)).join("; "),o.children.map(g=>g.name).join(", "),e.unknown.filter(g=>g.agent===o.id).length||""])),ke=r("evidence",[[t.agent,30],[t.fact,40],[t.key,34],[t.file,50],[t.line,8]],c.flatMap(o=>[{who:o.id,facts:o.facts},...o.children.map(g=>({who:`${o.id} \u203A ${g.name}`,facts:g.facts}))]).flatMap(({who:o,facts:g})=>Object.entries(g).sort(([b],[A])=>b.localeCompare(A)).flatMap(([b,A])=>A.map(I=>[o,$(b),b,I.file,I.line??""])))),be=r("declared",[[t.agent,24],[t.key,34],[t.value,40],[t.source,40]],s.declared.map(o=>[o.agent,o.key,o.value,o.source])),ve=r("text",[[t.id,28],[t.label,36],[t.body,70],[t.have,50],[t.variant,40],[t.official,10]],e.blocks.map(o=>[o.id,o.official??o.label,{v:o.text,wrap:!0},Object.keys(o.holders).sort().join(", "),Object.entries(o.variants).sort(([g],[b])=>g.localeCompare(b)).map(([g,b])=>`${g} (${Math.round(b.similarity*100)}%)`).join(", "),o.official?t.yes:""])),ee=[h,O,ge,...e.blocks.length?[ve]:[],he,ue,$e,ye,ke,be];return e.unknown.length&&ee.push(r("unknown",[[t.agent,24],[t.file,50],[t.why,40],[t.kind,24]],e.unknown.map(o=>[o.agent,o.file,t.why_[o.why],o.kind??""]))),ee}var Ee={en:{map:"Map",patterns:"Patterns",cast:"Cast",microsoft:"Microsoft",unknown:e=>`What the analysis did not understand (${e})`,matrix:"Who has what",candidates:"Patterns to decide",everyone:e=>`Everybody already does it (${e})`,all:"All",role:"Role",focus:"Focus",legend:"\u25CF has it (click for the file) \xB7 \xD7 off a pattern of its role or type \xB7 \u2248 a variation of the block \xB7 \u25D0 declared by people",pattern:"pattern",type:"Type",noType:"no type",alsoIn:"also in",official:"official block",variation:"Variation",alike:"alike",text:"The text",types:"Types",of:(e,n,s)=>`${e} of ${n} ${s}`,who:"Who has it",lacks:"Off it",none:"nobody",decision:"Decision",toDecide:"to decide \u2014 in the workbook or the cast file",alone:"Only one has it: innovation or debt?",orchestratorDoes:"Only the orchestrator does it",sign:"How cast-list knows",follows:"Who follows it",declaredOnly:"only declared",nothingUnknown:"Everything was understood.",facts:"Facts",off:"Off a pattern",solo:"Only it has",children:"Children",close:"Close \u2715",foot:"The facts come from the YAML files; nothing was made up.",summary:(e,n,s,a,t)=>`${e} in the cast \xB7 ${n} patterns \xB7 ${s} off a pattern \xB7 ${a} only one has \xB7 threshold ${t}% of each role`,excel:"\u2B07 Excel",yaml:"\u2B07 cast.yaml",png:"\u2B07 PNG",name:"Name",said:"declared"},pt:{map:"Mapa",patterns:"Padr\xF5es",cast:"Elenco",microsoft:"Microsoft",unknown:e=>`O que a an\xE1lise n\xE3o entendeu (${e})`,matrix:"Quem tem o qu\xEA",candidates:"Padr\xF5es para decidir",everyone:e=>`Todos j\xE1 fazem (${e})`,all:"Todos",role:"Papel",focus:"Foco",legend:"\u25CF tem (clique para ver o arquivo) \xB7 \xD7 fora de um padr\xE3o do seu papel ou tipo \xB7 \u2248 tem uma varia\xE7\xE3o do bloco \xB7 \u25D0 declarado por pessoas",pattern:"padr\xE3o",type:"Tipo",noType:"sem tipo",alsoIn:"tamb\xE9m em",official:"bloco oficial",variation:"Varia\xE7\xE3o",alike:"parecido",text:"O texto",types:"Tipos",of:(e,n,s)=>`${e} de ${n} ${s}`,who:"Quem tem",lacks:"Fora",none:"ningu\xE9m",decision:"Decis\xE3o",toDecide:"a decidir \u2014 na planilha ou no cast.yaml",alone:"S\xF3 um tem: inova\xE7\xE3o ou d\xEDvida?",orchestratorDoes:"S\xF3 o orquestrador faz",sign:"Como a cast-list sabe",follows:"Quem segue",declaredOnly:"s\xF3 declarado",nothingUnknown:"Tudo foi entendido.",facts:"Fatos",off:"Fora do padr\xE3o",solo:"S\xF3 ele tem",children:"Filhos",close:"Fechar \u2715",foot:"Os fatos v\xEAm dos arquivos YAML; nada foi inventado.",summary:(e,n,s,a,t)=>`${e} no elenco \xB7 ${n} padr\xF5es \xB7 ${s} fora do padr\xE3o \xB7 ${a} s\xF3 um tem \xB7 limite ${t}% de cada papel`,excel:"\u2B07 Excel",yaml:"\u2B07 cast.yaml",png:"\u2B07 PNG",name:"Nome",said:"declarado"}},v=JSON.parse(document.getElementById("cast").textContent),{result:u,lang:x,looks:E}=v,m=Ee[x],S=W[x],X=le(u,E,v.cast,x);document.documentElement.lang=x==="pt"?"pt-BR":"en";document.title=u.name??v.id;var f=e=>String(e??"").replace(/[&<>"']/g,n=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[n]),j=e=>f(T(e,x,u.names)),_=[...u.agents].sort((e,n)=>e.role===n.role?e.id.localeCompare(n.id):e.role==="orchestrator"?-1:1),J=e=>u.patterns.find(n=>n.key===e),ce=e=>[...new Set(u.offPattern.filter(n=>n.key===e||n.partOf===e).map(n=>n.agent))],de=e=>e.startsWith("type:")?u.typeNames[e.slice(5)]??e.slice(5):S[e],pe=e=>e.startsWith("type:")?"type":e,B=Object.keys(u.typeNames),Le=e=>e.startsWith("text:block:")?u.blocks.find(n=>`text:block:${n.id}`===e):void 0,Z=e=>{let n=J(e);if(!n)return"";let s=n.decision?`<span class="cl-badge ${n.decision.status}">${f(S[n.decision.status==="accepted"?"accept":"reject"])}</span>`:"";return`${n.official?`<span class="cl-badge official">${m.official}</span>`:""}<span class="cl-badge ${pe(n.scope)}">${m.pattern} \xB7 ${f(de(n.scope))}</span>${s}`},C="map",w,M="all",V,F,z=document.getElementById("app");function me(){let e=[["map",m.map],["patterns",m.patterns],["cast",m.cast],["microsoft",m.microsoft],["unknown",m.unknown(u.unknown.length)]],n=new Set(u.offPattern.map(s=>s.agent)).size;z.innerHTML=`<div class="cl-wrap">
|
|
138
|
+
<header><h1 class="cl-title">${f(u.name??v.id)}</h1><p class="cl-sub">${m.summary(u.agents.length,u.patterns.length,n,E.filter(s=>s.key==="solo").length,Math.round(v.threshold*100))}</p><p class="cl-private">${f(S.privacy)}</p></header>
|
|
139
|
+
<div class="cl-bar" role="tablist">${e.map(([s,a])=>`<button class="cl-tab" role="tab" aria-selected="${s===C}" data-tab="${s}">${f(a)}</button>`).join("")}
|
|
140
|
+
<span class="cl-space"></span><button class="cl-get" data-get="xlsx">${m.excel}</button><button class="cl-get" data-get="yaml">${m.yaml}</button>${C==="map"?`<button class="cl-get" data-get="png">${m.png}</button>`:""}</div>
|
|
141
|
+
${C==="map"?Ie():C==="patterns"?fe(X.find(s=>s.key==="patterns")):C==="cast"?Ve():C==="microsoft"?Be():ze()}
|
|
142
|
+
<p class="cl-foot">${m.foot}</p>
|
|
143
|
+
</div>`}function Ie(){return`${E.length?`<section class="cl-look"><h2>${f(S.look)}</h2><ul>${E.map((n,s)=>`<li><button data-look="${s}">${f(n[x])}</button></li>`).join("")}</ul></section>`:""}<div class="cl-body${w?" with-detail":""}"><div class="cl-wrap" style="gap:16px">${We()}${qe()}</div>${w?`<aside class="cl-card cl-detail" aria-live="polite">${_e()}</aside>`:""}</div>`}function Ue(){let e=t=>M==="all"||t.role===M;if(!B.length)return[{id:"",name:"",cols:_.filter(e).map(t=>({a:t,also:[]}))}];let n=t=>u.types[t]??[],s=_.filter(t=>t.role==="specialist"&&e(t));return[{id:"orchestrator",name:S.orchestrator,cols:_.filter(t=>t.role==="orchestrator"&&e(t)).map(t=>({a:t,also:[]}))},...B.map(t=>({id:t,name:u.typeNames[t],cols:s.filter(r=>n(r.id).includes(t)).map(r=>({a:r,also:n(r.id).filter(d=>d!==t).map(d=>u.typeNames[d]??d)}))})),{id:"-",name:m.noType,cols:s.filter(t=>!n(t.id).length).map(t=>({a:t,also:[]}))}].filter(t=>t.cols.length&&(!F||t.id===F))}function We(){let e=Ue(),n=e.flatMap(c=>c.cols),s=v.focusAreas.find(c=>c.id===V),a=[...new Set([...u.agents.flatMap(c=>Object.keys(c.facts)),...u.patterns.map(c=>c.key)])].filter(c=>!c.endsWith("~variant")&&(!s||s.facts.includes(c))),t=new Set(u.offPattern.map(c=>`${c.agent} ${c.key}`)),r=(c,k,i,l)=>`<button class="cl-chip" ${c}="${f(k)}" aria-pressed="${i}">${f(l)}</button>`,d=`<div class="cl-filters">${m.role}: ${r("data-role","all",M==="all",m.all)}${r("data-role","specialist",M==="specialist",S.specialist)}${r("data-role","orchestrator",M==="orchestrator",S.orchestrator)}
|
|
144
|
+
${B.length?`<span style="margin-left:10px">${m.type}:</span> ${r("data-type","",!F,m.all)}${B.map(c=>r("data-type",c,F===c,u.typeNames[c])).join("")}${r("data-type","-",F==="-",m.noType)}`:""}
|
|
145
|
+
${v.focusAreas.length?`<span style="margin-left:10px">${m.focus}:</span> ${r("data-focus","",!V,m.all)}${v.focusAreas.map(c=>r("data-focus",c.id,V===c.id,c.name)).join("")}`:""}</div>`,p="";for(let c of Object.keys(N)){let k=l=>G(l)?`${T(G(l),x,u.names)}${T(l,x,u.names)}`:T(l,x,u.names),i=a.filter(l=>R(l)===c).sort((l,h)=>k(l).localeCompare(k(h)));i.length&&(p+=`<tr class="cl-dim"><td colspan="${n.length+1}">${f(N[c][x])}</td></tr>`,p+=i.map(l=>`<tr><th scope="row" style="text-align:left;font-weight:400"><button class="cl-fact${w?.key===l&&!w.agent?" picked":""}" data-key="${f(l)}">${j(l)}</button>${Z(l)}</th>${n.map(({a:h})=>{let O=l in h.facts?l.startsWith("declared:")?["said","\u25D0"]:["has","\u25CF"]:`${l}~variant`in h.facts?["var","\u2248"]:t.has(`${h.id} ${l}`)?["off","\xD7"]:void 0;return`<td class="cl-mark${O?` ${O[0]}`:""}">${O?`<button data-key="${f(l)}" data-agent="${f(h.id)}" aria-label="${f(h.id)}: ${j(l)}">${O[1]}</button>`:""}</td>`}).join("")}</tr>`).join(""))}let y=e.some(c=>c.name)?`<tr class="cl-groups"><th></th>${e.map(c=>`<th colspan="${c.cols.length}" class="${c.id==="orchestrator"?"":"typed"}">${f(c.name)}</th>`).join("")}</tr>`:"",$=n.map(({a:c,also:k})=>`<th scope="col">${f(c.id)}<small>${f(k.length?`${m.alsoIn} ${k.join(", ")}`:S[c.role])}</small></th>`).join("");return`<section class="cl-card"><h2>${m.matrix}</h2>${d}<div class="cl-scroll"><table class="cl-matrix"><thead>${y}<tr><th></th>${$}</tr></thead><tbody>${p}</tbody></table></div><p class="cl-legend">${m.legend}</p></section>`}function qe(){let{look:e,everyone:n}=q(u),s=a=>{let t=J(a),r=u.agents.filter(p=>p.role===t.role).length,d=ce(a);return`<button class="cl-pattern${w?.key===a?" picked":""}" data-pattern="${f(a)}"><b>${j(a)}</b><span>${Z(a)} ${m.of(t.agents.filter(p=>u.roles[p]===t.role).length,r,H(t.role,x,r))}</span>
|
|
146
|
+
${d.length?`<span class="cl-lack">${m.lacks}: ${f(d.join(", "))}</span>`:""}<span>${m.decision}: ${t.decision?`${f(S[t.decision.status==="accepted"?"accept":"reject"])}${t.decision.why?` \u2014 ${f(t.decision.why)}`:""}`:`<i>${m.toDecide}</i>`}</span></button>`};return`<section class="cl-card"><h2>${m.candidates}</h2>${e.length?`<div class="cl-cards">${e.map(a=>s(a.key)).join("")}</div>`:'<p class="cl-empty">\u2014</p>'}
|
|
147
|
+
${n.length?`<details class="cl-everyone"><summary>${m.everyone(n.length)}</summary><ul>${n.map(a=>`<li><button class="cl-fact" data-pattern="${f(a.key)}">${j(a.key)}</button> <span class="cl-badge ${pe(a.scope)}">${f(de(a.scope))}</span></li>`).join("")}</ul></details>`:""}</section>`}function _e(){let{key:e,agent:n}=w,s=J(e),t=u.agents.filter(i=>e in i.facts&&(!n||i.id===n)).map(i=>`<li><b>${f(i.id)}</b>${i.facts[e].map(l=>`<div class="cl-file">${f(l.file)}${l.line?`:${l.line}`:""}</div>`).join("")}</li>`).join(""),r=ce(e).filter(i=>!n||i===n),d=u.solos.some(i=>i.key===e),p=u.orchestratorDoes.some(i=>i.key===e),y=Le(e),$=i=>i.map(l=>l.op==="same"?f(l.text):`<span class="cl-${l.op}">${f(l.text)}</span>`).join(" "),c=y?Object.entries(y.variants).filter(([i])=>!n||i===n):[],k=y?`<div><b>${m.text}</b><pre class="cl-text">${f(y.text)}</pre></div>
|
|
148
|
+
${c.map(([i,l])=>`<div class="cl-variant"><b>${f(i)}</b> <span class="cl-file">${f(l.source.file)}${l.source.line?`:${l.source.line}`:""} \xB7 ${Math.round(l.similarity*100)}% ${m.alike}</span><div class="cl-diff">${$(l.diff)}</div></div>`).join("")}`:"";return`<button class="cl-close" data-close="1">${m.close}</button><span class="cl-kicker">${f(N[R(e)][x])}</span><h3>${j(e)}</h3><code>${f(e)}</code>
|
|
149
|
+
${s?`<div>${Z(e)}</div><div>${m.decision}: ${s.decision?`${f(S[s.decision.status==="accepted"?"accept":"reject"])}${s.decision.why?` \u2014 ${f(s.decision.why)}`:""}`:`<i>${m.toDecide}</i>`}</div>`:""}
|
|
150
|
+
${d?`<div>${m.alone}</div>`:p?`<div>${m.orchestratorDoes}</div>`:""}
|
|
151
|
+
${k}
|
|
152
|
+
<div><b>${m.who}</b>${t?`<ul>${t}</ul>`:` \u2014 ${m.none}`}</div>
|
|
153
|
+
${u.patterns.filter(i=>i.partOf===e).map(i=>{let l=u.offPattern.filter(h=>h.key===i.key).map(h=>h.agent);return`<div><b>${j(i.key)}</b> \u2014 ${l.length?`<span style="color:var(--off)">${m.lacks}: ${f(l.join(", "))}</span>`:`${m.who}: ${i.agents.length}`}</div>`}).join("")}
|
|
154
|
+
${r.length?`<div><b>${m.lacks}</b>: <span style="color:var(--off)">${f(r.join(", "))}</span></div>`:""}`}function Ve(){return`<div class="cl-agents">${_.map(e=>{let n=u.offPattern.filter(t=>t.agent===e.id),s=u.solos.filter(t=>t.agents[0]===e.id),a=u.unknown.filter(t=>t.agent===e.id);return`<section class="cl-card cl-agent"><span class="cl-kicker">${f(S[e.role])}</span><h3>${f(e.id)}</h3>${e.displayName?`<code>${f(e.displayName)}</code>`:""}<dl>
|
|
155
|
+
${(u.types[e.id]??[]).length?`<dt>${m.types}</dt><dd>${f(u.types[e.id].map(t=>u.typeNames[t]??t).join(" \xB7 "))}</dd>`:""}
|
|
156
|
+
<dt>${m.facts}</dt><dd>${Object.keys(e.facts).length}</dd>
|
|
157
|
+
${n.length?`<dt>${m.off}</dt><dd class="cl-lack">${n.map(t=>j(t.key)).join("<br>")}</dd>`:""}
|
|
158
|
+
${s.length?`<dt>${m.solo}</dt><dd>${s.map(t=>j(t.key)).join("<br>")}</dd>`:""}
|
|
159
|
+
${e.children.length?`<dt>${m.children}</dt><dd>${e.children.map(t=>`${f(t.name)} <span class="cl-sub">(${Object.keys(t.facts).map(j).join(", ")})</span>`).join("<br>")}</dd>`:""}
|
|
160
|
+
${a.length?`<dt>${f(S.unknown)}</dt><dd>${a.map(t=>f(t.file)).join("<br>")}</dd>`:""}</dl></section>`}).join("")}</div>`}function Be(){let e=U.map(n=>{let s=u.agents.filter(a=>`ms:${n.id}`in a.facts||`declared:ms:${n.id}`in a.facts).map(a=>a.id);return`<tr><td><a href="${Y}/${n.id}.md" target="_blank" rel="noopener">${f(n.name)}</a></td><td>${f(n.sign??m.declaredOnly)}</td><td>${s.length?f(s.join(", ")):`<span class="cl-sub">${m.none}</span>`}</td></tr>`}).join("");return`<section class="cl-card cl-table"><table><thead><tr><th>${m.microsoft}</th><th>${m.sign}</th><th>${m.follows}</th></tr></thead><tbody>${e}</tbody></table></section>`}function ze(){let e=X.find(n=>n.key==="unknown");return e?fe(e):`<section class="cl-card"><p class="cl-empty">${m.nothingUnknown}</p></section>`}function fe(e){let n=(t,r)=>{let d=typeof t=="object"&&t?t:{v:t},p=r?"th":"td";return`<${p}${d.fill&&!r?` style="background:#${d.fill};color:#1d2330"`:""}>${f(d.v)}</${p}>`},[s,...a]=e.rows;return`<section class="cl-card cl-table" role="tabpanel"><table><thead><tr>${s.map(t=>n(t,!0)).join("")}</tr></thead><tbody>${a.map(t=>`<tr>${t.map(r=>n(r,!1)).join("")}</tr>`).join("")}</tbody></table></section>`}function K(e,n){let s=document.createElement("a");s.href=URL.createObjectURL(e),s.download=n,s.click(),setTimeout(()=>URL.revokeObjectURL(s.href),1e3)}async function Ke(){let e=z.querySelector(".cl-matrix"),[n,s]=[e.scrollWidth+32,e.scrollHeight+32],a=new XMLSerializer().serializeToString(e).replace(/ picked/g,""),t=`<svg xmlns="http://www.w3.org/2000/svg" width="${n}" height="${s}"><foreignObject width="100%" height="100%"><div xmlns="http://www.w3.org/1999/xhtml" class="cl light" style="min-height:0;padding:16px;background:#fff;width:${n}px"><style>/* The cast map: tokens on .cl (not :root) so the PNG, drawn apart, carries them too. */
|
|
145
161
|
.cl {
|
|
146
162
|
--bg: #f6f6f3; --card: #ffffff; --ink: #1d2330; --muted: #5f6878; --line: #e2e4e8; --soft: #f3f4f1;
|
|
147
163
|
--has: #2e7d55; --off: #c8442c; --off-bg: #fde8e3; --said: #b7791f;
|
|
148
|
-
--platform: #2e7d55; --platform-bg: #e3f3ea; --specialist: #3b5bdb; --specialist-bg: #e8edff; --orchestrator: #7b4fc9; --orchestrator-bg: #efe8fb;
|
|
164
|
+
--platform: #2e7d55; --platform-bg: #e3f3ea; --specialist: #3b5bdb; --specialist-bg: #e8edff; --orchestrator: #7b4fc9; --orchestrator-bg: #efe8fb; --type: #7b4fc9; --type-bg: #efe8fb;
|
|
149
165
|
--amber: #8a5a00; --amber-bg: #fff6dc; --amber-line: #f0dca4; --focus: #2f5bea; --active: #1d2330; --on-active: #fff;
|
|
150
166
|
font: 14px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; color: var(--ink); background: var(--bg);
|
|
151
167
|
min-height: 100vh; box-sizing: border-box; padding: 24px 16px 40px;
|
|
@@ -154,7 +170,7 @@ body { margin: 0; }
|
|
|
154
170
|
.cl:not(.light) {
|
|
155
171
|
--bg: #14171c; --card: #1d2129; --ink: #e8ebf0; --muted: #9aa3b2; --line: #313744; --soft: #23272f;
|
|
156
172
|
--has: #6fcf9a; --off: #ff8a70; --off-bg: #3a221d; --said: #f2c46b;
|
|
157
|
-
--platform: #6fcf9a; --platform-bg: #1c3328; --specialist: #9db0ff; --specialist-bg: #232c4a; --orchestrator: #c6a8ff; --orchestrator-bg: #2e2445;
|
|
173
|
+
--platform: #6fcf9a; --platform-bg: #1c3328; --specialist: #9db0ff; --specialist-bg: #232c4a; --orchestrator: #c6a8ff; --orchestrator-bg: #2e2445; --type: #c6a8ff; --type-bg: #2e2445;
|
|
158
174
|
--amber: #f2c46b; --amber-bg: #2f2716; --amber-line: #5a4a22; --focus: #8fb0ff; --active: #e8ebf0; --on-active: #14171c;
|
|
159
175
|
}
|
|
160
176
|
}
|
|
@@ -200,10 +216,16 @@ body { margin: 0; }
|
|
|
200
216
|
.cl-mark.said button { color: var(--said); }
|
|
201
217
|
.cl-mark.off { background: var(--off-bg); }
|
|
202
218
|
.cl-mark.off button { color: var(--off); font-weight: 700; }
|
|
219
|
+
.cl-mark.var { background: var(--amber-bg); }
|
|
220
|
+
.cl-mark.var button { color: var(--amber); font-weight: 700; }
|
|
221
|
+
.cl-matrix .cl-groups th { font-size: 11px; font-weight: 600; color: var(--muted); padding: 4px 8px 2px; text-align: center; }
|
|
222
|
+
.cl-matrix .cl-groups th.typed { color: var(--type); border-bottom: 2px solid var(--type); }
|
|
203
223
|
.cl-badge { display: inline-block; margin-left: 8px; padding: 0 7px; border-radius: 999px; font-size: 11px; border: 1px solid currentColor; white-space: nowrap; }
|
|
204
224
|
.cl-badge.platform { color: var(--platform); background: var(--platform-bg); }
|
|
205
225
|
.cl-badge.specialist { color: var(--specialist); background: var(--specialist-bg); }
|
|
206
226
|
.cl-badge.orchestrator { color: var(--orchestrator); background: var(--orchestrator-bg); }
|
|
227
|
+
.cl-badge.type { color: var(--type); background: var(--type-bg); }
|
|
228
|
+
.cl-badge.official { color: var(--specialist); background: var(--specialist-bg); }
|
|
207
229
|
.cl-badge.accepted { color: var(--has); }
|
|
208
230
|
.cl-badge.rejected { color: var(--muted); text-decoration: line-through; }
|
|
209
231
|
.cl-legend { margin: 10px 0 0; font-size: 12px; color: var(--muted); }
|
|
@@ -238,7 +260,12 @@ body { margin: 0; }
|
|
|
238
260
|
.cl-table a { color: var(--focus); }
|
|
239
261
|
.cl-empty { color: var(--muted); font-style: italic; margin: 0; }
|
|
240
262
|
.cl-foot { font-size: 12px; color: var(--muted); margin: 0; }
|
|
241
|
-
|
|
263
|
+
.cl-text { margin: 4px 0 0; font: 12.5px/1.55 ui-monospace, Menlo, monospace; background: var(--soft); border-radius: 8px; padding: 8px 10px; white-space: pre-wrap; }
|
|
264
|
+
.cl-variant { border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; display: flex; flex-direction: column; gap: 4px; }
|
|
265
|
+
.cl-diff { font: 12.5px/1.6 ui-monospace, Menlo, monospace; }
|
|
266
|
+
.cl-del { background: var(--off-bg); color: var(--off); text-decoration: line-through; border-radius: 3px; padding: 0 2px; }
|
|
267
|
+
.cl-add { background: var(--platform-bg); color: var(--platform); border-radius: 3px; padding: 0 2px; }
|
|
268
|
+
</style>${a}</div></foreignObject></svg>`;try{let r=new Image;r.src=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(t)}`,await r.decode();let d=document.createElement("canvas");d.width=n*2,d.height=s*2;let p=d.getContext("2d");p.scale(2,2),p.drawImage(r,0,0);let y=await new Promise($=>d.toBlob($,"image/png"));if(!y)throw new Error("no PNG");K(y,`${v.id}.png`)}catch{K(new Blob([t],{type:"image/svg+xml"}),`${v.id}.svg`)}}z.addEventListener("click",e=>{let n=e.target.closest("button");if(!n)return;let s=n.dataset;if(s.tab)C=s.tab;else if(s.role)M=s.role;else if(s.focus!==void 0)V=s.focus||void 0;else if(s.type!==void 0)F=s.type||void 0;else if(s.key)w={key:s.key,...s.agent?{agent:s.agent}:{}};else if(s.pattern)w={key:s.pattern};else if(s.close)w=void 0;else if(s.look){let a=E[Number(s.look)];C="map",a.fact&&(w={key:a.fact,...a.agents.length===1?{agent:a.agents[0]}:{}}),(a.key==="off"||a.key==="gap"||a.key==="conflict")&&(w=a.fact?{key:a.fact}:w),a.key==="unknown"&&(C="unknown")}else{if(s.get==="xlsx")return K(new Blob([ie(X)],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),`${v.id}.xlsx`);if(s.get==="yaml")return K(new Blob([v.castYaml],{type:"text/yaml"}),`${v.id}.cast.yaml`);if(s.get==="png")return void Ke()}me(),(s.key||s.pattern||s.look)&&z.querySelector(".cl-detail")?.scrollIntoView({block:"nearest"})});me();})();
|
|
242
269
|
</script>
|
|
243
270
|
</body>
|
|
244
271
|
</html>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
mcs.metadata:
|
|
2
|
+
componentName: Abrir chamado no ERP
|
|
3
|
+
description: Abre um chamado no ERP da Bodega Azul pelo fluxo da solução.
|
|
4
|
+
kind: TaskDialog
|
|
5
|
+
inputs:
|
|
6
|
+
- kind: AutomaticTaskInput
|
|
7
|
+
propertyName: resumo
|
|
8
|
+
description: Resumo do pedido do cliente, em uma frase.
|
|
9
|
+
shouldPromptUser: false
|
|
10
|
+
|
|
11
|
+
modelDisplayName: Abrir chamado no ERP
|
|
12
|
+
modelDescription: Abre um chamado no ERP quando o cliente pede uma ação que a loja precisa executar (troca, cancelamento, reembolso).
|
|
13
|
+
action:
|
|
14
|
+
kind: InvokeFlowTaskAction
|
|
15
|
+
flowId: 7d1c2a4e-3b5f-4c6d-8e9f-0a1b2c3d4e5f
|
package/skills/cast-list/examples/agents/bodega-cupons/actions/ConsultarCuponsAtivos.mcs.yml
CHANGED
|
@@ -25,7 +25,7 @@ modelDisplayName: Consultar cupons ativos
|
|
|
25
25
|
modelDescription: Verifica na lista Cupons do SharePoint se um código de cupom existe, se está ativo e qual a validade. Use quando o cliente informar um código de cupom.
|
|
26
26
|
action:
|
|
27
27
|
kind: InvokeConnectorTaskAction
|
|
28
|
-
connectionReference: cr7b2_bodegaCupons.shared_sharepointonline.shared-sharepointonline-
|
|
28
|
+
connectionReference: cr7b2_bodegaCupons.shared_sharepointonline.shared-sharepointonline-f9f69116-631c-4103-bdd0-e6c557c79a73
|
|
29
29
|
connectionProperties:
|
|
30
30
|
mode: Maker
|
|
31
31
|
|
|
@@ -25,7 +25,7 @@ modelDisplayName: Enviar cupom por e-mail
|
|
|
25
25
|
modelDescription: "Envia ao cliente, pelo Outlook, um e-mail com um código de cupom já validado e as regras de uso. Use somente quando o cliente pedir."
|
|
26
26
|
action:
|
|
27
27
|
kind: InvokeConnectorTaskAction
|
|
28
|
-
connectionReference: cr7b2_bodegaCupons.shared_office365.shared-office365-
|
|
28
|
+
connectionReference: cr7b2_bodegaCupons.shared_office365.shared-office365-8a5ef90d-d584-47ca-b2a1-5c87d8fc6ede
|
|
29
29
|
connectionProperties:
|
|
30
30
|
mode: Maker
|
|
31
31
|
|
|
@@ -11,7 +11,7 @@ modelDisplayName: Servidor MCP de Promoções
|
|
|
11
11
|
modelDescription: Servidor MCP que lista as campanhas promocionais e os cupons vigentes da Bodega Azul.
|
|
12
12
|
action:
|
|
13
13
|
kind: InvokeExternalAgentTaskAction
|
|
14
|
-
connectionReference: cr7b2_bodegaCupons.shared_bodegapromocoesmcp.
|
|
14
|
+
connectionReference: cr7b2_bodegaCupons.shared_bodegapromocoesmcp.zsi3cu
|
|
15
15
|
connectionProperties:
|
|
16
16
|
mode: Maker
|
|
17
17
|
|
|
@@ -15,6 +15,18 @@ instructions: |
|
|
|
15
15
|
- Responda sempre em português do Brasil
|
|
16
16
|
- Nunca crie, invente ou altere códigos de cupom
|
|
17
17
|
- Cupons não são cumulativos, salvo quando o regulamento disser o contrário
|
|
18
|
+
|
|
19
|
+
Links:
|
|
20
|
+
- Formate links assim: [título](url), nunca a URL crua.
|
|
21
|
+
- Um link de ação vai no topo; o link da base de ajuda vai no fim.
|
|
22
|
+
- Nunca escreva as palavras «clique aqui».
|
|
23
|
+
- No máximo 3 links por resposta.
|
|
24
|
+
|
|
25
|
+
Use no máximo 5 frases por resposta.
|
|
26
|
+
|
|
27
|
+
Não use emojis.
|
|
28
|
+
|
|
29
|
+
Para dúvidas gerais, indique https://ajuda.bodega-azul.example/atendimento.
|
|
18
30
|
conversationStarters:
|
|
19
31
|
- title: "Cupom não funciona"
|
|
20
32
|
text: "Meu cupom não está funcionando"
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
kind: ConnectionReferencesSourceFile
|
|
2
2
|
connectionReferences:
|
|
3
|
-
- id:
|
|
4
|
-
connectionReferenceLogicalName: cr7b2_bodegaCupons.shared_office365.shared-office365-
|
|
3
|
+
- id: d9eee619-a353-495f-a0dc-468f7fbe750a
|
|
4
|
+
connectionReferenceLogicalName: cr7b2_bodegaCupons.shared_office365.shared-office365-8a5ef90d-d584-47ca-b2a1-5c87d8fc6ede
|
|
5
5
|
connectorId: /providers/Microsoft.PowerApps/apis/shared_office365
|
|
6
6
|
displayName: Office 365 Outlook
|
|
7
7
|
|
|
8
|
-
- id:
|
|
9
|
-
connectionReferenceLogicalName: cr7b2_bodegaCupons.shared_sharepointonline.shared-sharepointonline-
|
|
8
|
+
- id: 26a5926c-f68c-4981-aaa1-bfe4b58e84ce
|
|
9
|
+
connectionReferenceLogicalName: cr7b2_bodegaCupons.shared_sharepointonline.shared-sharepointonline-f9f69116-631c-4103-bdd0-e6c557c79a73
|
|
10
10
|
connectorId: /providers/Microsoft.PowerApps/apis/shared_sharepointonline
|
|
11
11
|
displayName: SharePoint
|
|
12
12
|
|
|
13
|
-
- id:
|
|
14
|
-
connectionReferenceLogicalName: cr7b2_bodegaCupons.shared_bodegapromocoesmcp.
|
|
13
|
+
- id: b9fa4804-c3ce-45ef-84c8-57371a88d0a7
|
|
14
|
+
connectionReferenceLogicalName: cr7b2_bodegaCupons.shared_bodegapromocoesmcp.zsi3cu
|
|
15
15
|
connectorId: /providers/Microsoft.PowerApps/apis/shared_bodegapromocoesmcp
|
|
16
16
|
displayName: Bodega Azul Promocoes MCP
|
|
17
|
-
customConnectorId:
|
|
17
|
+
customConnectorId: 5b11a407-28a6-4213-b264-a3b0fd5c2ee4
|
|
@@ -15,12 +15,12 @@ beginDialog:
|
|
|
15
15
|
intent: {}
|
|
16
16
|
actions:
|
|
17
17
|
- kind: CreateSearchQuery
|
|
18
|
-
id:
|
|
18
|
+
id: createSearchQuery_T4bsno
|
|
19
19
|
userInput: =Topic.PerguntaCliente
|
|
20
20
|
result: Topic.SearchQuery
|
|
21
21
|
|
|
22
22
|
- kind: SearchAndSummarizeContent
|
|
23
|
-
id:
|
|
23
|
+
id: searchContent_0f3HpC
|
|
24
24
|
autoSend: false
|
|
25
25
|
variable: Topic.SearchResult
|
|
26
26
|
userInput: =Topic.SearchQuery.SearchQuery
|
|
@@ -37,7 +37,7 @@ beginDialog:
|
|
|
37
37
|
responseCaptureType: FullResponse
|
|
38
38
|
|
|
39
39
|
- kind: SetVariable
|
|
40
|
-
id:
|
|
40
|
+
id: setVariable_7GXPBx
|
|
41
41
|
variable: Topic.Resposta
|
|
42
42
|
value: =Topic.SearchResult.Text.Content
|
|
43
43
|
|
|
@@ -16,5 +16,5 @@ beginDialog:
|
|
|
16
16
|
|
|
17
17
|
actions:
|
|
18
18
|
- kind: SendActivity
|
|
19
|
-
id:
|
|
19
|
+
id: sendMessage_81SZFW
|
|
20
20
|
activity: "A transferência para um atendente ainda não está disponível neste canal. Fale com a nossa equipe pelo e-mail promocoes@bodegaazul.example, de segunda a sábado, das 9h às 18h."
|
|
@@ -8,13 +8,13 @@ beginDialog:
|
|
|
8
8
|
priority: -1
|
|
9
9
|
actions:
|
|
10
10
|
- kind: ConditionGroup
|
|
11
|
-
id:
|
|
11
|
+
id: conditionGroup_jc7tt5
|
|
12
12
|
conditions:
|
|
13
|
-
- id:
|
|
13
|
+
- id: conditionItem_8m5nw9
|
|
14
14
|
condition: =System.FallbackCount < 3
|
|
15
15
|
actions:
|
|
16
16
|
- kind: SendActivity
|
|
17
|
-
id:
|
|
17
|
+
id: sendMessage_Bl0mZW
|
|
18
18
|
activity:
|
|
19
19
|
text:
|
|
20
20
|
- "Desculpe, não entendi. Pode reformular a sua pergunta?"
|
|
@@ -22,11 +22,11 @@ beginDialog:
|
|
|
22
22
|
|
|
23
23
|
elseActions:
|
|
24
24
|
- kind: SendActivity
|
|
25
|
-
id:
|
|
25
|
+
id: sendMessage_zfTVpF
|
|
26
26
|
activity:
|
|
27
27
|
text:
|
|
28
28
|
- "Estou com dificuldade para entender o seu pedido. Vou te encaminhar para alguém da equipe Bodega Azul."
|
|
29
29
|
|
|
30
30
|
- kind: BeginDialog
|
|
31
|
-
id:
|
|
31
|
+
id: beginDialog_0NDaL6
|
|
32
32
|
dialog: cr7b2_bodegaCupons.topic.Escalate
|