@semacode/cli 2.1.0 → 2.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.
Files changed (154) hide show
  1. package/README.md +107 -4
  2. package/dist/agentContext.d.ts +1 -1
  3. package/dist/agentContextPack.js +6 -1
  4. package/dist/agentContextTipos.d.ts +4 -2
  5. package/dist/agentContextTipos.js +7 -0
  6. package/dist/agentEntryPoints.js +70 -19
  7. package/dist/comandos.js +6 -0
  8. package/dist/discovery/catalog.d.ts +11 -0
  9. package/dist/discovery/catalog.js +521 -0
  10. package/dist/discovery/command.d.ts +11 -0
  11. package/dist/discovery/command.js +226 -0
  12. package/dist/discovery/index.d.ts +5 -0
  13. package/dist/discovery/index.js +8 -0
  14. package/dist/discovery/ranker.d.ts +3 -0
  15. package/dist/discovery/ranker.js +310 -0
  16. package/dist/discovery/redaction.d.ts +2 -0
  17. package/dist/discovery/redaction.js +21 -0
  18. package/dist/discovery/render.d.ts +2 -0
  19. package/dist/discovery/render.js +100 -0
  20. package/dist/discovery/types.d.ts +119 -0
  21. package/dist/discovery/types.js +13 -0
  22. package/dist/execucoesExternas.js +19 -5
  23. package/dist/exemplosOficiais.js +29 -8
  24. package/dist/iaPrompts.d.ts +1 -1
  25. package/dist/iaPrompts.js +3 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.js +24 -5
  28. package/dist/index.part01.d.ts +1 -1
  29. package/dist/index.part01.js +47 -3
  30. package/dist/index.part06.js +3 -0
  31. package/dist/initTemplatesBase.js +3 -2
  32. package/dist/pipelineConteudo/adapters.d.ts +84 -0
  33. package/dist/pipelineConteudo/adapters.js +449 -0
  34. package/dist/pipelineConteudo/canonical.d.ts +18 -0
  35. package/dist/pipelineConteudo/canonical.js +107 -0
  36. package/dist/pipelineConteudo/command.d.ts +3 -0
  37. package/dist/pipelineConteudo/command.js +572 -0
  38. package/dist/pipelineConteudo/index.d.ts +9 -0
  39. package/dist/pipelineConteudo/index.js +12 -0
  40. package/dist/pipelineConteudo/ledger.d.ts +68 -0
  41. package/dist/pipelineConteudo/ledger.js +732 -0
  42. package/dist/pipelineConteudo/planner.d.ts +12 -0
  43. package/dist/pipelineConteudo/planner.js +366 -0
  44. package/dist/pipelineConteudo/projection.d.ts +16 -0
  45. package/dist/pipelineConteudo/projection.js +57 -0
  46. package/dist/pipelineConteudo/state.d.ts +23 -0
  47. package/dist/pipelineConteudo/state.js +615 -0
  48. package/dist/pipelineConteudo/trust.d.ts +17 -0
  49. package/dist/pipelineConteudo/trust.js +750 -0
  50. package/dist/pipelineConteudo/types.d.ts +331 -0
  51. package/dist/pipelineConteudo/types.js +4 -0
  52. package/dist/profileArtefatoValidadores.d.ts +3 -2
  53. package/dist/profileArtefatoValidadores.js +81 -0
  54. package/dist/profileAuthorTipos.d.ts +4 -3
  55. package/dist/profileCatalogo.d.ts +5 -5
  56. package/dist/profileCatalogo.js +30 -0
  57. package/dist/profileCommand.d.ts +8 -2
  58. package/dist/profileCommand.js +15 -5
  59. package/dist/profileRegras.d.ts +5 -5
  60. package/dist/profileRegras.js +13 -1
  61. package/dist/profileRulePacks.js +68 -0
  62. package/dist/sistemasInterativos/adapterProtocol.d.ts +3 -0
  63. package/dist/sistemasInterativos/adapterProtocol.js +240 -0
  64. package/dist/sistemasInterativos/advancedCatalog.d.ts +5 -0
  65. package/dist/sistemasInterativos/advancedCatalog.js +442 -0
  66. package/dist/sistemasInterativos/autonomy.d.ts +230 -0
  67. package/dist/sistemasInterativos/autonomy.js +753 -0
  68. package/dist/sistemasInterativos/canonical.d.ts +3 -0
  69. package/dist/sistemasInterativos/canonical.js +43 -0
  70. package/dist/sistemasInterativos/catalog.d.ts +116 -0
  71. package/dist/sistemasInterativos/catalog.js +543 -0
  72. package/dist/sistemasInterativos/command.d.ts +7 -0
  73. package/dist/sistemasInterativos/command.js +311 -0
  74. package/dist/sistemasInterativos/controlRun.d.ts +56 -0
  75. package/dist/sistemasInterativos/controlRun.js +391 -0
  76. package/dist/sistemasInterativos/evidence.d.ts +5 -0
  77. package/dist/sistemasInterativos/evidence.js +306 -0
  78. package/dist/sistemasInterativos/experienceIr.d.ts +12 -0
  79. package/dist/sistemasInterativos/experienceIr.js +895 -0
  80. package/dist/sistemasInterativos/experienceIrSemantics.d.ts +30 -0
  81. package/dist/sistemasInterativos/experienceIrSemantics.js +368 -0
  82. package/dist/sistemasInterativos/experienceIrTypes.d.ts +370 -0
  83. package/dist/sistemasInterativos/experienceIrTypes.js +5 -0
  84. package/dist/sistemasInterativos/extensionCommand.d.ts +391 -0
  85. package/dist/sistemasInterativos/extensionCommand.js +383 -0
  86. package/dist/sistemasInterativos/index.d.ts +19 -0
  87. package/dist/sistemasInterativos/index.js +22 -0
  88. package/dist/sistemasInterativos/operations.d.ts +40 -0
  89. package/dist/sistemasInterativos/operations.js +1167 -0
  90. package/dist/sistemasInterativos/operationsTypes.d.ts +297 -0
  91. package/dist/sistemasInterativos/operationsTypes.js +11 -0
  92. package/dist/sistemasInterativos/planner.d.ts +2 -0
  93. package/dist/sistemasInterativos/planner.js +159 -0
  94. package/dist/sistemasInterativos/portability.d.ts +164 -0
  95. package/dist/sistemasInterativos/portability.js +539 -0
  96. package/dist/sistemasInterativos/render.d.ts +3 -0
  97. package/dist/sistemasInterativos/render.js +179 -0
  98. package/dist/sistemasInterativos/temporal.d.ts +183 -0
  99. package/dist/sistemasInterativos/temporal.js +543 -0
  100. package/dist/sistemasInterativos/types.d.ts +215 -0
  101. package/dist/sistemasInterativos/types.js +4 -0
  102. package/dist/sistemasInterativos/validator.d.ts +2 -0
  103. package/dist/sistemasInterativos/validator.js +305 -0
  104. package/docs/README.md +9 -0
  105. package/docs/ai-integration.md +7 -1
  106. package/docs/ai-workflow.md +5 -4
  107. package/docs/commands.md +43 -1
  108. package/docs/descoberta-capacidades.md +106 -0
  109. package/docs/documentation.md +11 -2
  110. package/docs/pipeline-conteudo.md +246 -0
  111. package/docs/profiles.md +11 -2
  112. package/docs/sistemas-interativos.md +381 -0
  113. package/docs/testing.md +11 -2
  114. package/exemplos/pipeline-conteudo/README.md +44 -0
  115. package/exemplos/pipeline-conteudo/alvos.json +23 -0
  116. package/exemplos/pipeline-conteudo/definicao.json +136 -0
  117. package/exemplos/profile_simulation.sema +211 -0
  118. package/exemplos/sistemas-interativos/README.md +100 -0
  119. package/exemplos/sistemas-interativos/advanced/acceptance-context-evaluate-valid.json +5 -0
  120. package/exemplos/sistemas-interativos/advanced/acceptance-lock-valid.json +16 -0
  121. package/exemplos/sistemas-interativos/advanced/asset-provenance-valid.json +32 -0
  122. package/exemplos/sistemas-interativos/advanced/autonomy-repair-valid.json +93 -0
  123. package/exemplos/sistemas-interativos/advanced/control-run-definition-valid.json +78 -0
  124. package/exemplos/sistemas-interativos/advanced/control-run-valid.json +27 -0
  125. package/exemplos/sistemas-interativos/advanced/distributed-workers-valid.json +79 -0
  126. package/exemplos/sistemas-interativos/advanced/editor-state-valid.json +42 -0
  127. package/exemplos/sistemas-interativos/advanced/engine-snapshot-after-valid.json +32 -0
  128. package/exemplos/sistemas-interativos/advanced/engine-snapshot-before-valid.json +23 -0
  129. package/exemplos/sistemas-interativos/advanced/job-orchestration-valid.json +39 -0
  130. package/exemplos/sistemas-interativos/advanced/multimodal-evidence-valid.json +46 -0
  131. package/exemplos/sistemas-interativos/advanced/multiplayer-authority-valid.json +39 -0
  132. package/exemplos/sistemas-interativos/advanced/playtest-fuzz-valid.json +37 -0
  133. package/exemplos/sistemas-interativos/advanced/portability-valid.json +104 -0
  134. package/exemplos/sistemas-interativos/advanced/temporal-evidence-valid.json +27 -0
  135. package/exemplos/sistemas-interativos/advanced/temporal-valid.json +118 -0
  136. package/exemplos/sistemas-interativos/experience-ir-valid.json +459 -0
  137. package/exemplos/sistemas-interativos/game-2d.json +83 -0
  138. package/exemplos/sistemas-interativos/game-3d-human.json +81 -0
  139. package/exemplos/sistemas-interativos/game-pixel-16-bit.json +97 -0
  140. package/exemplos/sistemas-interativos/game-pixel-8-bit.json +94 -0
  141. package/exemplos/sistemas-interativos/game-xr-human.json +80 -0
  142. package/exemplos/sistemas-interativos/hybrid-2-5d.json +108 -0
  143. package/exemplos/sistemas-interativos/protocol-mutating-rollback-valid.json +75 -0
  144. package/exemplos/sistemas-interativos/protocol-read-only-valid.json +58 -0
  145. package/exemplos/sistemas-interativos/simulation-2d-controlled.json +97 -0
  146. package/exemplos/sistemas-interativos/simulation-3d-calibrated-autonomous.json +141 -0
  147. package/exemplos/sistemas-interativos/simulation-headless-autonomous-batch.json +112 -0
  148. package/exemplos/sistemas-interativos/simulation-pixel-16-bit.json +103 -0
  149. package/exemplos/sistemas-interativos/simulation-text-controlled.json +95 -0
  150. package/node_modules/@sema/gerador-lua/dist/index.js +78 -4
  151. package/node_modules/@sema/gerador-lua/dist/index.js.map +1 -1
  152. package/node_modules/@sema/gerador-php/dist/index.js +8 -0
  153. package/node_modules/@sema/gerador-php/dist/index.js.map +1 -1
  154. package/package.json +8 -1
@@ -0,0 +1,521 @@
1
+ // SEMA-GOVERNED: sema.produto.descoberta_capacidades
2
+ // Descrição: registro canônico derivado de profiles, conteúdo e sistemas interativos.
3
+ import { ALIASES_PROFILE, CAPABILITY_MATRIX_GOVERNANCA, PRESETS_PROFILE, } from "../profileCatalogo.js";
4
+ import { CAPABILITIES_CONTEUDO_PADRAO } from "../pipelineConteudo/adapters.js";
5
+ import { CATALOGO_ADAPTADORES_INTERATIVOS, CATALOGO_CAPABILITIES_INTERATIVAS, CATALOGO_PIPELINES_INTERATIVOS, } from "../sistemasInterativos/catalog.js";
6
+ import { DISCOVERY_KINDS, DISCOVERY_SCHEMA_VERSION, } from "./types.js";
7
+ import { redigirTextoControladoDescoberta } from "./redaction.js";
8
+ const PROFILE_LABELS = {
9
+ software: "Software",
10
+ workflow: "Workflow",
11
+ ops: "Operações",
12
+ game: "Game",
13
+ simulation: "Simulação",
14
+ legal: "Legal",
15
+ research: "Pesquisa",
16
+ redacao: "Redação",
17
+ propostas: "Propostas comerciais",
18
+ conversas: "Conversas",
19
+ };
20
+ const ALVOS_GERACAO = [
21
+ "typescript",
22
+ "python",
23
+ "dart",
24
+ "lua",
25
+ "javascript",
26
+ "html",
27
+ "css",
28
+ "php",
29
+ "dotnet",
30
+ "cpp",
31
+ ];
32
+ const CONTEUDO_METADATA = {
33
+ "content.topic.plan": {
34
+ label: "Planejamento de pauta",
35
+ summary: "Planeja tema, público, objetivo e entregáveis antes da produção.",
36
+ signals: ["pauta", "tema", "briefing", "planejar conteúdo"],
37
+ },
38
+ "content.research.collect": {
39
+ label: "Pesquisa de conteúdo",
40
+ summary: "Coleta evidências e fontes para sustentar o conteúdo mestre.",
41
+ signals: ["pesquisar fontes", "coletar evidências", "pesquisa editorial"],
42
+ },
43
+ "content.master.compose": {
44
+ label: "Composição mestre",
45
+ summary: "Compõe o artefato mestre do qual deriva a adaptação por destino.",
46
+ signals: ["conteúdo mestre", "roteiro mestre", "compor conteúdo"],
47
+ },
48
+ "content.target.adapt": {
49
+ label: "Adaptação por destino",
50
+ summary: "Adapta o conteúdo mestre para cada canal, formato e conta isolada.",
51
+ signals: ["adaptar por canal", "multicanal", "multi-formato", "formato por destino"],
52
+ },
53
+ "content.qa.deterministic": {
54
+ label: "QA determinístico",
55
+ summary: "Verifica limites e propriedades observáveis sem decisão subjetiva.",
56
+ signals: ["qa determinístico", "limite de duração", "tamanho do artefato"],
57
+ },
58
+ "content.qa.semantic": {
59
+ label: "QA semântico",
60
+ summary: "Representa avaliação semântica especializada com evidência e atestação.",
61
+ signals: ["qa semântico", "avaliar qualidade", "avaliação especializada"],
62
+ },
63
+ "content.target.deliver": {
64
+ label: "Entrega por destino",
65
+ summary: "Representa a entrega externa isolada por destino e conta.",
66
+ signals: ["entregar", "publicar", "enviar por canal", "delivery"],
67
+ },
68
+ "content.target.confirm": {
69
+ label: "Confirmação de entrega",
70
+ summary: "Confirma entrega por evidência externa, sem confiar apenas no executor.",
71
+ signals: ["confirmar publicação", "confirmar entrega", "atestar entrega"],
72
+ },
73
+ };
74
+ const EXECUTION_BOUNDARY = {
75
+ executed: false,
76
+ workspaceMutated: false,
77
+ externalCalls: false,
78
+ requiresExplicitRun: true,
79
+ };
80
+ function unicos(valores) {
81
+ return [...new Set(valores.filter((valor) => typeof valor === "string").map((valor) => valor.trim()).filter(Boolean))];
82
+ }
83
+ function normalizar(valor) {
84
+ return valor
85
+ .normalize("NFD")
86
+ .replace(/[\u0300-\u036f]/gu, "")
87
+ .toLowerCase()
88
+ .replace(/[^a-z0-9.]+/gu, "_")
89
+ .replace(/^_+|_+$/gu, "");
90
+ }
91
+ export function normalizarDiscoveryKind(valor) {
92
+ if (!valor)
93
+ return null;
94
+ const chave = normalizar(valor).replace(/\./gu, "_").toUpperCase();
95
+ return DISCOVERY_KINDS.find((kind) => kind === chave) ?? null;
96
+ }
97
+ function template(id, command, effectClass, mutatesWorkspace = false, executesExternalRuntime = false) {
98
+ return { id, command, effectClass, mutatesWorkspace, executesExternalRuntime };
99
+ }
100
+ function entradasGovernanca() {
101
+ return [
102
+ {
103
+ id: "flow.governed-change",
104
+ kind: "GOVERNANCE_FLOW",
105
+ domains: ["governanca", "mudanca"],
106
+ label: "Mudança governada",
107
+ summary: "Descobre contrato, documentação, drift e impacto antes de alterar comportamento.",
108
+ useWhen: ["editar código, contrato, workflow, profile, documentação operacional ou deploy"],
109
+ avoidWhen: ["a solicitação é apenas informativa e não altera o workspace"],
110
+ intentSignals: ["alterar código", "editar contrato", "drift", "impacto", "mudança governada"],
111
+ negativeSignals: ["somente explicar", "sem alteração"],
112
+ requiredInputs: ["<intenção>", "<contrato.sema>"],
113
+ commandTemplates: [
114
+ template("docs-impacto", "sema docs-impacto --intencao <intenção> --arquivo <contrato.sema> --json", "WORKSPACE_VERIFICATION", true),
115
+ template("inspecionar", "sema inspecionar <contrato.sema> --json", "READ_ONLY_VALIDATION"),
116
+ template("drift", "sema drift <contrato.sema> --escopo modulo --json", "READ_ONLY_VALIDATION"),
117
+ template("impacto", "sema impacto <contrato.sema> --alvo <token> --mudanca <descrição> --json", "READ_ONLY_VALIDATION"),
118
+ template("finalizar", "sema finalizar-mudanca --intencao <intenção> --doc-lida <documento> --json", "WORKSPACE_VERIFICATION"),
119
+ ],
120
+ related: ["flow.contract-verification"],
121
+ source: "contratos/sema/governanca_ia.sema",
122
+ extensible: false,
123
+ aliases: ["mudanca", "change", "governanca"],
124
+ },
125
+ {
126
+ id: "flow.contract-verification",
127
+ kind: "GOVERNANCE_FLOW",
128
+ domains: ["governanca", "validacao"],
129
+ label: "Verificação de contrato",
130
+ summary: "Valida contrato, implementação vinculada e testes locais antes do fechamento.",
131
+ useWhen: ["validar um contrato ou verificar a aderência final da implementação"],
132
+ avoidWhen: ["ainda não existe contrato aplicável"],
133
+ intentSignals: ["validar contrato", "verificar projeto", "testar contrato", "fechar mudança"],
134
+ negativeSignals: ["iniciar projeto sem contrato"],
135
+ requiredInputs: ["<contrato.sema>"],
136
+ commandTemplates: [
137
+ template("validar", "sema validar <contrato.sema> --json", "READ_ONLY_VALIDATION"),
138
+ template("verificar", "sema verificar <contrato.sema> --saida <diretório-temporário> --json", "WORKSPACE_VERIFICATION", true),
139
+ ],
140
+ related: ["flow.governed-change"],
141
+ source: "contratos/sema/governanca_ia_qualidade_contrato.sema",
142
+ extensible: false,
143
+ aliases: ["validacao", "verification", "checks"],
144
+ },
145
+ {
146
+ id: "flow.project-adoption",
147
+ kind: "GOVERNANCE_FLOW",
148
+ domains: ["governanca", "adocao"],
149
+ label: "Adoção do Sema",
150
+ summary: "Inicializa a governança local e materializa o entrypoint oficial para agentes.",
151
+ useWhen: ["o projeto ainda não possui contrato Sema ou AGENTS.md gerado"],
152
+ avoidWhen: ["o workspace já está governado e a tarefa é uma mudança comum"],
153
+ intentSignals: ["iniciar sema", "semantizar projeto", "sync codex", "criar primeiro contrato"],
154
+ negativeSignals: ["projeto ja governado", "validar contrato existente"],
155
+ requiredInputs: [],
156
+ commandTemplates: [
157
+ template("iniciar", "sema iniciar --template base", "WORKSPACE_BOOTSTRAP", true),
158
+ template("sync-codex", "sema sync-codex --json", "WORKSPACE_BOOTSTRAP", true),
159
+ ],
160
+ related: ["flow.governed-change"],
161
+ source: "contratos/sema/cli_init_templates.sema",
162
+ extensible: false,
163
+ aliases: ["bootstrap", "adocao", "iniciar"],
164
+ },
165
+ ];
166
+ }
167
+ function entradasProfiles() {
168
+ return Object.values(CAPABILITY_MATRIX_GOVERNANCA)
169
+ .filter((capability) => capability.profile !== "author")
170
+ .map((capability) => {
171
+ const profile = capability.profile;
172
+ const aliases = Object.entries(ALIASES_PROFILE)
173
+ .filter(([, destino]) => destino === profile)
174
+ .map(([alias]) => alias);
175
+ const sinais = unicos([
176
+ profile,
177
+ PROFILE_LABELS[profile],
178
+ ...aliases,
179
+ ...PRESETS_PROFILE[profile],
180
+ ...capability.rulePacksSugeridos,
181
+ ]);
182
+ return {
183
+ id: `profile.${profile}`,
184
+ kind: "PROFILE_GATE",
185
+ domains: [profile],
186
+ label: `Profile ${PROFILE_LABELS[profile]}`,
187
+ summary: `Gate semântico para validar contrato e artefato no domínio ${PROFILE_LABELS[profile]}.`,
188
+ useWhen: [`validar aderência de contrato ou artefato de ${PROFILE_LABELS[profile]}`],
189
+ avoidWhen: ["a intenção exige uma orquestração multietapas, execução ou publicação"],
190
+ intentSignals: sinais,
191
+ negativeSignals: ["pipeline multietapas", "executar ferramenta", "publicar multicanal"],
192
+ requiredInputs: ["<contrato.sema>"],
193
+ commandTemplates: [
194
+ template("validar", `sema profile validar ${profile} <contrato.sema> --json`, "READ_ONLY_VALIDATION"),
195
+ ],
196
+ related: ["flow.governed-change"],
197
+ source: "CAPABILITY_MATRIX_GOVERNANCA",
198
+ extensible: false,
199
+ aliases: unicos([`profile.${profile}`, `profile ${profile}`, ...aliases, ...PRESETS_PROFILE[profile]]),
200
+ };
201
+ });
202
+ }
203
+ function entradaAuthor() {
204
+ const capability = CAPABILITY_MATRIX_GOVERNANCA.author;
205
+ return {
206
+ id: "workflow.author",
207
+ kind: "SPECIALIZED_WORKFLOW",
208
+ domains: ["author", "narrativa", "escrita"],
209
+ label: "Author",
210
+ summary: "Workflow especializado para briefing, continuidade e validação narrativa de obras autorais.",
211
+ useWhen: ["escrever ou validar conto, romance, roteiro, lore, campanha ou continuidade de capítulos"],
212
+ avoidWhen: ["validar código, game loop ou conteúdo editorial multicanal"],
213
+ intentSignals: unicos([
214
+ "author", "autoria", "conto", "romance", "roteiro", "lore", "campanha narrativa",
215
+ "capitulos", "continuidade", "personagem", ...capability.rulePacksSugeridos,
216
+ ]),
217
+ negativeSignals: ["profile validar author", "playtest", "multicanal", "deploy"],
218
+ requiredInputs: ["<contrato.sema>"],
219
+ commandTemplates: [
220
+ template("briefing", "sema author briefing <contrato.sema> --json", "READ_ONLY_VALIDATION"),
221
+ template("validar", "sema author validar <contrato.sema> --json", "READ_ONLY_VALIDATION"),
222
+ template("revisar", "sema author revisar-cliches <contrato.sema> --texto-arquivo <texto> --json", "READ_ONLY_VALIDATION"),
223
+ ],
224
+ related: ["flow.governed-change", "profile.redacao"],
225
+ source: "CAPABILITY_MATRIX_GOVERNANCA.author",
226
+ extensible: false,
227
+ aliases: ["author", "autoria", "escrita autoral", "narrativa longa"],
228
+ };
229
+ }
230
+ export const SUPERFICIES_CLI_PIPELINES_AVANCADOS = Object.freeze({
231
+ "interactive.experience_ir": { command: "sema interativo validar-ir <experience-ir.json> --json", requiredInputs: ["<experience-ir.json>"], effectClass: "READ_ONLY_VALIDATION" },
232
+ "interactive.observe": { command: "sema interativo validar-engine-snapshot <engine-snapshot.json> --json", requiredInputs: ["<engine-snapshot.json>"], effectClass: "READ_ONLY_VALIDATION" },
233
+ "interactive.asset_provenance": { command: "sema interativo validar-asset-provenance <asset-provenance.json> --json", requiredInputs: ["<asset-provenance.json>"], effectClass: "READ_ONLY_VALIDATION" },
234
+ "interactive.editor_state": { command: "sema interativo validar-editor-state <editor-state.json> --json", requiredInputs: ["<editor-state.json>"], effectClass: "READ_ONLY_VALIDATION" },
235
+ "interactive.evidence_capture": { command: "sema interativo validar-multimodal <multimodal-evidence.json> --json", requiredInputs: ["<multimodal-evidence.json>"], effectClass: "READ_ONLY_VALIDATION" },
236
+ "interactive.job_recovery": { command: "sema interativo planejar-jobs <job-orchestration.json> --json", requiredInputs: ["<job-orchestration.json>"], effectClass: "DECLARATIVE_PLANNING" },
237
+ "interactive.acceptance_lock": { command: "sema interativo validar-acceptance <acceptance-lock.json> --json", requiredInputs: ["<acceptance-lock.json>"], effectClass: "READ_ONLY_VALIDATION" },
238
+ "interactive.temporal_validate": { command: "sema interativo validar-temporal <temporal-contract.json> --json", requiredInputs: ["<temporal-contract.json>"], effectClass: "READ_ONLY_VALIDATION" },
239
+ "interactive.shot_validate": { command: "sema interativo validar-temporal <temporal-contract.json> --json", requiredInputs: ["<temporal-contract.json>"], effectClass: "READ_ONLY_VALIDATION" },
240
+ "interactive.physics_validate": { command: "sema interativo validar-temporal <temporal-contract.json> --json", requiredInputs: ["<temporal-contract.json>"], effectClass: "READ_ONLY_VALIDATION" },
241
+ "interactive.temporal_qa": { command: "sema interativo validar-evidencia-temporal <temporal-contract.json> --bundle-arquivo <temporal-evidence.json> --json", requiredInputs: ["<temporal-contract.json>", "<temporal-evidence.json>"], effectClass: "READ_ONLY_VALIDATION" },
242
+ "interactive.clean_install_smoke": { command: "sema interativo validar-evidencia-temporal <temporal-contract.json> --bundle-arquivo <temporal-evidence.json> --json", requiredInputs: ["<temporal-contract.json>", "<temporal-evidence.json>"], effectClass: "READ_ONLY_VALIDATION" },
243
+ "interactive.hardware_budget": { command: "sema interativo validar-evidencia-temporal <temporal-contract.json> --bundle-arquivo <temporal-evidence.json> --json", requiredInputs: ["<temporal-contract.json>", "<temporal-evidence.json>"], effectClass: "READ_ONLY_VALIDATION" },
244
+ "interactive.autonomous_repair": { command: "sema interativo validar-autonomia <autonomy-repair.json> --json", requiredInputs: ["<autonomy-repair.json>"], effectClass: "READ_ONLY_VALIDATION" },
245
+ "interactive.bot_playtest": { command: "sema interativo validar-playtest-fuzz <playtest-fuzz.json> --json", requiredInputs: ["<playtest-fuzz.json>"], effectClass: "READ_ONLY_VALIDATION" },
246
+ "interactive.state_fuzz": { command: "sema interativo validar-playtest-fuzz <playtest-fuzz.json> --json", requiredInputs: ["<playtest-fuzz.json>"], effectClass: "READ_ONLY_VALIDATION" },
247
+ "interactive.multiplayer_authority": { command: "sema interativo validar-multiplayer <multiplayer-authority.json> --json", requiredInputs: ["<multiplayer-authority.json>"], effectClass: "READ_ONLY_VALIDATION" },
248
+ "interactive.engine_migration": { command: "sema interativo analisar-portabilidade <portability-plan.json> --json", requiredInputs: ["<portability-plan.json>"], effectClass: "DECLARATIVE_PLANNING" },
249
+ "interactive.portability": { command: "sema interativo analisar-portabilidade <portability-plan.json> --json", requiredInputs: ["<portability-plan.json>"], effectClass: "DECLARATIVE_PLANNING" },
250
+ "interactive.distributed_jobs": { command: "sema interativo validar-workers <distributed-workers.json> --json", requiredInputs: ["<distributed-workers.json>"], effectClass: "READ_ONLY_VALIDATION" },
251
+ });
252
+ function entradasConteudo() {
253
+ const pipeline = {
254
+ id: "pipeline.content",
255
+ kind: "ORCHESTRATION_PIPELINE",
256
+ domains: ["conteudo", "editorial", "multicanal"],
257
+ label: "Pipeline de conteúdo",
258
+ summary: "Orquestra declarativamente conteúdo multicanal e multi-formato com DAG, gates, ledger e adapters externos.",
259
+ useWhen: ["produzir, adaptar, avaliar e confirmar vários artefatos ou destinos como uma única execução governada"],
260
+ avoidWhen: ["a necessidade é somente validar um contrato por profile ou executar uma ferramenta isolada"],
261
+ intentSignals: [
262
+ "pipeline de conteudo", "multicanal", "multi-formato", "dag", "trailer", "thumbnail", "post",
263
+ "publicacao", "publicar por canal", "adaptar por destino", "ledger de conteudo",
264
+ ],
265
+ negativeSignals: ["somente validar contrato", "playtest", "balanceamento", "romance com capitulos"],
266
+ requiredInputs: ["<definicao.json>"],
267
+ commandTemplates: [
268
+ template("validar", "sema conteudo validar <definicao.json> --json", "READ_ONLY_VALIDATION"),
269
+ template("planejar", "sema conteudo planejar <definicao.json> --alvos-arquivo <alvos.json> --json", "DECLARATIVE_PLANNING"),
270
+ ],
271
+ related: CAPABILITIES_CONTEUDO_PADRAO,
272
+ source: "CAPABILITIES_CONTEUDO_PADRAO",
273
+ extensible: true,
274
+ aliases: ["pipeline conteudo", "content pipeline", "conteudo multicanal"],
275
+ };
276
+ const capabilities = CAPABILITIES_CONTEUDO_PADRAO.map((capability) => {
277
+ const metadata = CONTEUDO_METADATA[capability];
278
+ return {
279
+ id: capability,
280
+ kind: "CAPABILITY_TOKEN",
281
+ domains: ["conteudo"],
282
+ label: metadata.label,
283
+ summary: metadata.summary,
284
+ useWhen: [metadata.summary],
285
+ avoidWhen: ["a capability isolada está sendo tratada como pipeline completo ou autorização de execução"],
286
+ intentSignals: unicos([capability, ...capability.split("."), ...metadata.signals]),
287
+ negativeSignals: ["executar automaticamente", "aprovar sem evidencia"],
288
+ requiredInputs: ["<definicao.json>"],
289
+ commandTemplates: [
290
+ template("planejar", "sema conteudo planejar <definicao.json> --alvos-arquivo <alvos.json> --json", "DECLARATIVE_PLANNING"),
291
+ ],
292
+ related: ["pipeline.content"],
293
+ source: "CAPABILITIES_CONTEUDO_PADRAO",
294
+ extensible: true,
295
+ aliases: [capability],
296
+ };
297
+ });
298
+ return [pipeline, ...capabilities];
299
+ }
300
+ function entradasInterativas() {
301
+ const pipelines = CATALOGO_PIPELINES_INTERATIVOS.map((pipeline) => {
302
+ const superficie = SUPERFICIES_CLI_PIPELINES_AVANCADOS[pipeline.pipelineId];
303
+ return {
304
+ id: pipeline.pipelineId,
305
+ kind: "ORCHESTRATION_PIPELINE",
306
+ domains: unicos(["sistemas-interativos", ...pipeline.kinds]),
307
+ label: pipeline.label,
308
+ summary: pipeline.summary,
309
+ useWhen: [...pipeline.useWhen],
310
+ avoidWhen: [...pipeline.avoidWhen],
311
+ intentSignals: unicos([
312
+ pipeline.pipelineId,
313
+ pipeline.label,
314
+ pipeline.summary,
315
+ ...pipeline.kinds,
316
+ ...pipeline.spatialModels,
317
+ ...pipeline.renderModes,
318
+ ...pipeline.controlModes,
319
+ ...pipeline.capabilities,
320
+ ...pipeline.useWhen,
321
+ ]),
322
+ negativeSignals: [...pipeline.avoidWhen],
323
+ requiredInputs: superficie?.requiredInputs ?? [`<definition.json> with pipelines including ${pipeline.pipelineId}`],
324
+ commandTemplates: [
325
+ superficie
326
+ ? template("operar-local", superficie.command, superficie.effectClass)
327
+ : template("planejar", "sema interativo planejar <definition.json> --json", "DECLARATIVE_PLANNING"),
328
+ template("descrever", `sema descobrir pipeline descrever ${pipeline.pipelineId} --json`, "READ_ONLY_DISCOVERY"),
329
+ ],
330
+ related: [...pipeline.capabilities],
331
+ source: "CATALOGO_PIPELINES_INTERATIVOS",
332
+ extensible: false,
333
+ aliases: [pipeline.pipelineId, pipeline.label],
334
+ };
335
+ });
336
+ const porCapability = new Map();
337
+ for (const pipeline of CATALOGO_PIPELINES_INTERATIVOS) {
338
+ for (const capability of pipeline.capabilities) {
339
+ const atuais = porCapability.get(capability) ?? [];
340
+ atuais.push(pipeline);
341
+ porCapability.set(capability, atuais);
342
+ }
343
+ }
344
+ const idsPipelines = new Set(CATALOGO_PIPELINES_INTERATIVOS.map((pipeline) => pipeline.pipelineId));
345
+ const metadataCapabilities = new Map(CATALOGO_CAPABILITIES_INTERATIVAS.map((capability) => [capability.capability, capability]));
346
+ const capabilities = [...porCapability.entries()]
347
+ .filter(([capability]) => !idsPipelines.has(capability))
348
+ .map(([capability, donos]) => {
349
+ const metadata = metadataCapabilities.get(capability);
350
+ return {
351
+ id: capability,
352
+ kind: "CAPABILITY_TOKEN",
353
+ domains: unicos(["sistemas-interativos", ...donos.flatMap((pipeline) => pipeline.kinds)]),
354
+ label: metadata?.label ?? capability.split(".").map((parte) => parte.charAt(0).toUpperCase() + parte.slice(1)).join(" "),
355
+ summary: metadata?.summary ?? `Capability declarada por ${donos.map((pipeline) => pipeline.label).join(", ")}.`,
356
+ useWhen: unicos(donos.flatMap((pipeline) => pipeline.useWhen)),
357
+ avoidWhen: unicos(donos.flatMap((pipeline) => pipeline.avoidWhen)),
358
+ intentSignals: unicos([
359
+ capability,
360
+ metadata?.label,
361
+ metadata?.summary,
362
+ ]),
363
+ negativeSignals: unicos(donos.flatMap((pipeline) => pipeline.avoidWhen)),
364
+ requiredInputs: ["<definition.json> with a related pipeline selected"],
365
+ commandTemplates: [
366
+ template("planejar", "sema interativo planejar <definition.json> --json", "DECLARATIVE_PLANNING"),
367
+ ...donos.map((pipeline) => template(`descrever-${pipeline.pipelineId}`, `sema descobrir pipeline descrever ${pipeline.pipelineId} --json`, "READ_ONLY_DISCOVERY")),
368
+ ],
369
+ related: donos.map((pipeline) => pipeline.pipelineId),
370
+ source: "CATALOGO_PIPELINES_INTERATIVOS.capabilities",
371
+ extensible: false,
372
+ aliases: [capability],
373
+ };
374
+ });
375
+ const adapters = CATALOGO_ADAPTADORES_INTERATIVOS.map((adapter) => ({
376
+ id: adapter.adapterId,
377
+ kind: "ADAPTER",
378
+ domains: unicos([
379
+ "sistemas-interativos",
380
+ adapter.role,
381
+ adapter.engine,
382
+ ...adapter.kinds,
383
+ ...adapter.spatialModels,
384
+ ...adapter.renderModes,
385
+ ]),
386
+ label: `Adapter ${adapter.engine}`,
387
+ summary: `Adapter externo ${adapter.role.toLowerCase()} para modelos espaciais ${adapter.spatialModels.join(", ")} e render ${adapter.renderModes.join(", ")}.`,
388
+ useWhen: [`selecionar runtime ou ferramenta externa compatível com ${adapter.engine}`],
389
+ avoidWhen: ["o adapter está sendo tratado como autorização ou execução implícita"],
390
+ intentSignals: unicos([
391
+ adapter.adapterId,
392
+ adapter.engine,
393
+ adapter.role,
394
+ ...adapter.kinds,
395
+ ...adapter.spatialModels,
396
+ ...adapter.renderModes,
397
+ ...adapter.capabilities,
398
+ ]),
399
+ negativeSignals: ["executar automaticamente", "plugin instalado"],
400
+ requiredInputs: [],
401
+ commandTemplates: [
402
+ template("explicar", `sema descobrir explicar ${adapter.adapterId} --json`, "READ_ONLY_DISCOVERY"),
403
+ ],
404
+ related: [...adapter.capabilities],
405
+ source: "CATALOGO_ADAPTADORES_INTERATIVOS",
406
+ extensible: false,
407
+ aliases: [adapter.adapterId, adapter.engine],
408
+ }));
409
+ return [...pipelines, ...capabilities, ...adapters];
410
+ }
411
+ function entradasGeradores() {
412
+ return ALVOS_GERACAO.map((alvo) => ({
413
+ id: `generator.${alvo}`,
414
+ kind: "GENERATOR",
415
+ domains: ["codigo", "geracao", alvo],
416
+ label: `Gerador ${alvo}`,
417
+ summary: `Gera artefatos ${alvo} derivados de contrato Sema validado.`,
418
+ useWhen: [`materializar código ${alvo} a partir de um contrato aplicável`],
419
+ avoidWhen: ["o contrato ainda não foi validado ou a intenção é editar código vivo manualmente"],
420
+ intentSignals: [alvo, `gerar ${alvo}`, `compilar ${alvo}`, "gerar codigo"],
421
+ negativeSignals: ["sem contrato", "editar manualmente"],
422
+ requiredInputs: ["<contrato.sema>", "<diretório>"],
423
+ commandTemplates: [
424
+ template("compilar", `sema compilar <contrato.sema> --alvo ${alvo} --saida <diretório>`, "WORKSPACE_GENERATION", true),
425
+ ],
426
+ related: ["flow.contract-verification"],
427
+ source: "@sema/padroes.AlvoGeracao",
428
+ extensible: false,
429
+ aliases: [`gerador ${alvo}`, `generator ${alvo}`],
430
+ }));
431
+ }
432
+ function criarRegistro() {
433
+ const entries = [
434
+ ...entradasGovernanca(),
435
+ ...entradasProfiles(),
436
+ entradaAuthor(),
437
+ ...entradasConteudo(),
438
+ ...entradasInterativas(),
439
+ ...entradasGeradores(),
440
+ ].sort((a, b) => a.id.localeCompare(b.id));
441
+ const ids = new Set();
442
+ for (const entry of entries) {
443
+ if (ids.has(entry.id))
444
+ throw new Error(`discovery_id_duplicado:${entry.id}`);
445
+ ids.add(entry.id);
446
+ }
447
+ return entries;
448
+ }
449
+ const REGISTRO_DESCOBERTA = criarRegistro();
450
+ function clonarEntrada(entry) {
451
+ return {
452
+ ...entry,
453
+ domains: [...entry.domains],
454
+ useWhen: [...entry.useWhen],
455
+ avoidWhen: [...entry.avoidWhen],
456
+ intentSignals: [...entry.intentSignals],
457
+ negativeSignals: [...entry.negativeSignals],
458
+ requiredInputs: [...entry.requiredInputs],
459
+ commandTemplates: entry.commandTemplates.map((item) => ({ ...item })),
460
+ related: [...entry.related],
461
+ aliases: entry.aliases ? [...entry.aliases] : undefined,
462
+ };
463
+ }
464
+ export function montarCatalogoCapacidades(filtros = {}) {
465
+ const kind = normalizarDiscoveryKind(filtros.kind);
466
+ if (filtros.kind && !kind)
467
+ throw new TypeError("discovery_kind_invalido");
468
+ const id = filtros.id?.trim() || null;
469
+ const domain = filtros.domain?.trim() || null;
470
+ const idNormalizado = id ? normalizar(id) : null;
471
+ const dominioNormalizado = domain ? normalizar(domain) : null;
472
+ const entries = REGISTRO_DESCOBERTA
473
+ .filter((entry) => !kind || entry.kind === kind)
474
+ .filter((entry) => !idNormalizado || normalizar(entry.id) === idNormalizado)
475
+ .filter((entry) => !dominioNormalizado || entry.domains.some((item) => normalizar(item) === dominioNormalizado))
476
+ .map(clonarEntrada);
477
+ return {
478
+ schemaVersion: DISCOVERY_SCHEMA_VERSION,
479
+ command: "descobrir catalogo",
480
+ success: true,
481
+ mode: "catalog",
482
+ ...EXECUTION_BOUNDARY,
483
+ filters: {
484
+ kind,
485
+ id: redigirTextoControladoDescoberta(id),
486
+ domain: redigirTextoControladoDescoberta(domain),
487
+ },
488
+ entries,
489
+ };
490
+ }
491
+ export function obterEntradaDescoberta(id) {
492
+ const idNormalizado = normalizar(id);
493
+ const entry = REGISTRO_DESCOBERTA.find((item) => normalizar(item.id) === idNormalizado);
494
+ if (entry)
495
+ return clonarEntrada(entry);
496
+ const porAlias = REGISTRO_DESCOBERTA.filter((item) => ((item.aliases ?? []).some((alias) => normalizar(alias) === idNormalizado)));
497
+ return porAlias.length === 1 ? clonarEntrada(porAlias[0]) : null;
498
+ }
499
+ export function criarResumoDescobertaAgentContext() {
500
+ const entries = montarCatalogoCapacidades().entries;
501
+ const kinds = DISCOVERY_KINDS.filter((kind) => entries.some((entry) => entry.kind === kind));
502
+ const pipelinesPrincipais = entries
503
+ .filter((entry) => entry.kind === "ORCHESTRATION_PIPELINE")
504
+ .map((entry) => ({
505
+ id: entry.id,
506
+ label: entry.label,
507
+ command: entry.commandTemplates[0]?.command ?? `sema descobrir explicar ${entry.id} --json`,
508
+ }));
509
+ return {
510
+ schemaVersion: DISCOVERY_SCHEMA_VERSION,
511
+ command: "sema descobrir catalogo --json",
512
+ kinds,
513
+ pipelinesPrincipais,
514
+ commands: {
515
+ catalogo: "sema descobrir catalogo --json",
516
+ recomendar: "sema descobrir recomendar --intencao <texto> --json",
517
+ explicar: "sema descobrir explicar <id> --json",
518
+ },
519
+ };
520
+ }
521
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1,11 @@
1
+ import { type DiscoveryCommandResult } from "./types.js";
2
+ export declare function comandoDescobertaCapacidades(subcomando: string | undefined, argumentos?: readonly string[]): DiscoveryCommandResult;
3
+ export type DiscoveryCliHandler = (posicionais: string[], args: string[], emJson: boolean) => Promise<number>;
4
+ export declare const comandoDescobrirHandler: DiscoveryCliHandler;
5
+ export declare const comandoPipelineDescobertaHandler: DiscoveryCliHandler;
6
+ export declare const comandoCapabilitiesDescobertaHandler: DiscoveryCliHandler;
7
+ export declare const REGISTRO_HANDLERS_DESCOBERTA: {
8
+ readonly descobrir: DiscoveryCliHandler;
9
+ readonly pipeline: DiscoveryCliHandler;
10
+ readonly capabilities: DiscoveryCliHandler;
11
+ };