@semacode/cli 2.2.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 (127) hide show
  1. package/README.md +91 -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 +4 -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/exemplosOficiais.js +29 -8
  23. package/dist/iaPrompts.d.ts +1 -1
  24. package/dist/iaPrompts.js +3 -0
  25. package/dist/index.d.ts +2 -0
  26. package/dist/index.js +23 -5
  27. package/dist/index.part01.d.ts +1 -1
  28. package/dist/index.part01.js +39 -4
  29. package/dist/index.part06.js +3 -0
  30. package/dist/initTemplatesBase.js +3 -2
  31. package/dist/profileArtefatoValidadores.d.ts +3 -2
  32. package/dist/profileArtefatoValidadores.js +81 -0
  33. package/dist/profileAuthorTipos.d.ts +4 -3
  34. package/dist/profileCatalogo.d.ts +5 -5
  35. package/dist/profileCatalogo.js +30 -0
  36. package/dist/profileCommand.d.ts +8 -2
  37. package/dist/profileCommand.js +15 -5
  38. package/dist/profileRegras.d.ts +5 -5
  39. package/dist/profileRegras.js +13 -1
  40. package/dist/profileRulePacks.js +68 -0
  41. package/dist/sistemasInterativos/adapterProtocol.d.ts +3 -0
  42. package/dist/sistemasInterativos/adapterProtocol.js +240 -0
  43. package/dist/sistemasInterativos/advancedCatalog.d.ts +5 -0
  44. package/dist/sistemasInterativos/advancedCatalog.js +442 -0
  45. package/dist/sistemasInterativos/autonomy.d.ts +230 -0
  46. package/dist/sistemasInterativos/autonomy.js +753 -0
  47. package/dist/sistemasInterativos/canonical.d.ts +3 -0
  48. package/dist/sistemasInterativos/canonical.js +43 -0
  49. package/dist/sistemasInterativos/catalog.d.ts +116 -0
  50. package/dist/sistemasInterativos/catalog.js +543 -0
  51. package/dist/sistemasInterativos/command.d.ts +7 -0
  52. package/dist/sistemasInterativos/command.js +311 -0
  53. package/dist/sistemasInterativos/controlRun.d.ts +56 -0
  54. package/dist/sistemasInterativos/controlRun.js +391 -0
  55. package/dist/sistemasInterativos/evidence.d.ts +5 -0
  56. package/dist/sistemasInterativos/evidence.js +306 -0
  57. package/dist/sistemasInterativos/experienceIr.d.ts +12 -0
  58. package/dist/sistemasInterativos/experienceIr.js +895 -0
  59. package/dist/sistemasInterativos/experienceIrSemantics.d.ts +30 -0
  60. package/dist/sistemasInterativos/experienceIrSemantics.js +368 -0
  61. package/dist/sistemasInterativos/experienceIrTypes.d.ts +370 -0
  62. package/dist/sistemasInterativos/experienceIrTypes.js +5 -0
  63. package/dist/sistemasInterativos/extensionCommand.d.ts +391 -0
  64. package/dist/sistemasInterativos/extensionCommand.js +383 -0
  65. package/dist/sistemasInterativos/index.d.ts +19 -0
  66. package/dist/sistemasInterativos/index.js +22 -0
  67. package/dist/sistemasInterativos/operations.d.ts +40 -0
  68. package/dist/sistemasInterativos/operations.js +1167 -0
  69. package/dist/sistemasInterativos/operationsTypes.d.ts +297 -0
  70. package/dist/sistemasInterativos/operationsTypes.js +11 -0
  71. package/dist/sistemasInterativos/planner.d.ts +2 -0
  72. package/dist/sistemasInterativos/planner.js +159 -0
  73. package/dist/sistemasInterativos/portability.d.ts +164 -0
  74. package/dist/sistemasInterativos/portability.js +539 -0
  75. package/dist/sistemasInterativos/render.d.ts +3 -0
  76. package/dist/sistemasInterativos/render.js +179 -0
  77. package/dist/sistemasInterativos/temporal.d.ts +183 -0
  78. package/dist/sistemasInterativos/temporal.js +543 -0
  79. package/dist/sistemasInterativos/types.d.ts +215 -0
  80. package/dist/sistemasInterativos/types.js +4 -0
  81. package/dist/sistemasInterativos/validator.d.ts +2 -0
  82. package/dist/sistemasInterativos/validator.js +305 -0
  83. package/docs/README.md +6 -0
  84. package/docs/ai-integration.md +7 -1
  85. package/docs/ai-workflow.md +5 -4
  86. package/docs/commands.md +43 -1
  87. package/docs/descoberta-capacidades.md +106 -0
  88. package/docs/documentation.md +11 -2
  89. package/docs/profiles.md +11 -2
  90. package/docs/sistemas-interativos.md +381 -0
  91. package/docs/testing.md +11 -2
  92. package/exemplos/profile_simulation.sema +211 -0
  93. package/exemplos/sistemas-interativos/README.md +100 -0
  94. package/exemplos/sistemas-interativos/advanced/acceptance-context-evaluate-valid.json +5 -0
  95. package/exemplos/sistemas-interativos/advanced/acceptance-lock-valid.json +16 -0
  96. package/exemplos/sistemas-interativos/advanced/asset-provenance-valid.json +32 -0
  97. package/exemplos/sistemas-interativos/advanced/autonomy-repair-valid.json +93 -0
  98. package/exemplos/sistemas-interativos/advanced/control-run-definition-valid.json +78 -0
  99. package/exemplos/sistemas-interativos/advanced/control-run-valid.json +27 -0
  100. package/exemplos/sistemas-interativos/advanced/distributed-workers-valid.json +79 -0
  101. package/exemplos/sistemas-interativos/advanced/editor-state-valid.json +42 -0
  102. package/exemplos/sistemas-interativos/advanced/engine-snapshot-after-valid.json +32 -0
  103. package/exemplos/sistemas-interativos/advanced/engine-snapshot-before-valid.json +23 -0
  104. package/exemplos/sistemas-interativos/advanced/job-orchestration-valid.json +39 -0
  105. package/exemplos/sistemas-interativos/advanced/multimodal-evidence-valid.json +46 -0
  106. package/exemplos/sistemas-interativos/advanced/multiplayer-authority-valid.json +39 -0
  107. package/exemplos/sistemas-interativos/advanced/playtest-fuzz-valid.json +37 -0
  108. package/exemplos/sistemas-interativos/advanced/portability-valid.json +104 -0
  109. package/exemplos/sistemas-interativos/advanced/temporal-evidence-valid.json +27 -0
  110. package/exemplos/sistemas-interativos/advanced/temporal-valid.json +118 -0
  111. package/exemplos/sistemas-interativos/experience-ir-valid.json +459 -0
  112. package/exemplos/sistemas-interativos/game-2d.json +83 -0
  113. package/exemplos/sistemas-interativos/game-3d-human.json +81 -0
  114. package/exemplos/sistemas-interativos/game-pixel-16-bit.json +97 -0
  115. package/exemplos/sistemas-interativos/game-pixel-8-bit.json +94 -0
  116. package/exemplos/sistemas-interativos/game-xr-human.json +80 -0
  117. package/exemplos/sistemas-interativos/hybrid-2-5d.json +108 -0
  118. package/exemplos/sistemas-interativos/protocol-mutating-rollback-valid.json +75 -0
  119. package/exemplos/sistemas-interativos/protocol-read-only-valid.json +58 -0
  120. package/exemplos/sistemas-interativos/simulation-2d-controlled.json +97 -0
  121. package/exemplos/sistemas-interativos/simulation-3d-calibrated-autonomous.json +141 -0
  122. package/exemplos/sistemas-interativos/simulation-headless-autonomous-batch.json +112 -0
  123. package/exemplos/sistemas-interativos/simulation-pixel-16-bit.json +103 -0
  124. package/exemplos/sistemas-interativos/simulation-text-controlled.json +95 -0
  125. package/node_modules/@sema/gerador-lua/dist/index.js +31 -2
  126. package/node_modules/@sema/gerador-lua/dist/index.js.map +1 -1
  127. package/package.json +1 -1
@@ -0,0 +1,297 @@
1
+ export declare const OPERATION_RESULT_SCHEMA_V1: "sema.interactive.operation-result/v1";
2
+ export declare const ENGINE_SNAPSHOT_SCHEMA_V1: "sema.interactive.engine-snapshot/v1";
3
+ export declare const ENGINE_DIFF_SCHEMA_V1: "sema.interactive.engine-diff/v1";
4
+ export declare const ASSET_PROVENANCE_SCHEMA_V1: "sema.interactive.asset-provenance/v1";
5
+ export declare const EDITOR_STATE_SCHEMA_V1: "sema.interactive.editor-state/v1";
6
+ export declare const JOB_ORCHESTRATION_SCHEMA_V1: "sema.interactive.job-orchestration/v1";
7
+ export declare const ACCEPTANCE_LOCK_SCHEMA_V1: "sema.interactive.acceptance-lock/v1";
8
+ export declare const MULTIMODAL_EVIDENCE_SCHEMA_V1: "sema.interactive.multimodal-evidence/v1";
9
+ export type Sha256 = string & {
10
+ readonly __sha256Brand: unique symbol;
11
+ };
12
+ export type OpaqueSha256 = string & {
13
+ readonly __opaqueSha256Brand: unique symbol;
14
+ };
15
+ export interface OperationIssue {
16
+ readonly code: string;
17
+ readonly field: string;
18
+ }
19
+ export interface OperationResult<T> {
20
+ readonly schemaVersion: typeof OPERATION_RESULT_SCHEMA_V1;
21
+ readonly valid: boolean;
22
+ readonly issues: readonly OperationIssue[];
23
+ readonly value?: T;
24
+ readonly digest?: Sha256;
25
+ readonly executed: false;
26
+ readonly workspaceMutated: false;
27
+ readonly engineProbed: false;
28
+ readonly editorInspected: false;
29
+ readonly processesInspected: false;
30
+ readonly resourcesReserved: false;
31
+ readonly authoritative: false;
32
+ }
33
+ export interface EngineSemanticObjectSnapshot {
34
+ readonly semanticId: string;
35
+ readonly kind: string;
36
+ readonly parentSemanticId?: string;
37
+ readonly stateDigest: Sha256;
38
+ readonly componentDigests: Readonly<Record<string, Sha256>>;
39
+ }
40
+ export interface EngineSnapshotV1 {
41
+ readonly schemaVersion: typeof ENGINE_SNAPSHOT_SCHEMA_V1;
42
+ readonly snapshotId: string;
43
+ readonly projectId: string;
44
+ readonly sceneId: string;
45
+ readonly adapter: {
46
+ readonly adapterId: string;
47
+ readonly adapterVersion: string;
48
+ };
49
+ readonly semanticObjects: readonly EngineSemanticObjectSnapshot[];
50
+ readonly artifactDigest: Sha256;
51
+ readonly readOnly: true;
52
+ readonly authoritative: false;
53
+ }
54
+ export interface ValidatedEngineSnapshot {
55
+ readonly snapshot: EngineSnapshotV1;
56
+ readonly snapshotDigest: Sha256;
57
+ readonly localValidationOnly: true;
58
+ }
59
+ export interface EngineSnapshotChange {
60
+ readonly semanticId: string;
61
+ readonly change: "ADDED" | "REMOVED" | "MODIFIED";
62
+ readonly beforeDigest?: Sha256;
63
+ readonly afterDigest?: Sha256;
64
+ }
65
+ export interface EngineSnapshotDiffV1 {
66
+ readonly schemaVersion: typeof ENGINE_DIFF_SCHEMA_V1;
67
+ readonly beforeSnapshotDigest: Sha256;
68
+ readonly afterSnapshotDigest: Sha256;
69
+ readonly bindingDigest: Sha256;
70
+ readonly artifactDigestChanged: boolean;
71
+ readonly changes: readonly EngineSnapshotChange[];
72
+ readonly diffDigest: Sha256;
73
+ readonly readOnly: true;
74
+ readonly authoritative: false;
75
+ }
76
+ export interface AssetProvenanceV1 {
77
+ readonly schemaVersion: typeof ASSET_PROVENANCE_SCHEMA_V1;
78
+ readonly assetId: string;
79
+ readonly sourceUriRef: OpaqueSha256;
80
+ readonly sourceUriRedacted: true;
81
+ readonly license: {
82
+ readonly licenseId: string;
83
+ readonly evidenceDigest: Sha256;
84
+ readonly redistributable: boolean;
85
+ };
86
+ readonly sourceHash: Sha256;
87
+ readonly contentHash: Sha256;
88
+ readonly transforms: readonly {
89
+ readonly transformId: string;
90
+ readonly toolRef: string;
91
+ readonly toolVersion: string;
92
+ readonly inputDigest: Sha256;
93
+ readonly outputDigest: Sha256;
94
+ readonly parametersDigest: Sha256;
95
+ }[];
96
+ readonly derivatives: readonly {
97
+ readonly assetId: string;
98
+ readonly parentContentHash: Sha256;
99
+ readonly contentHash: Sha256;
100
+ readonly transformDigest: Sha256;
101
+ }[];
102
+ readonly authoritative: false;
103
+ }
104
+ export interface EditorStateV1 {
105
+ readonly schemaVersion: typeof EDITOR_STATE_SCHEMA_V1;
106
+ readonly editorSessionId: string;
107
+ readonly adapter: {
108
+ readonly adapterId: string;
109
+ readonly adapterVersion: string;
110
+ };
111
+ readonly scene: {
112
+ readonly semanticId: string;
113
+ readonly artifactDigest: Sha256;
114
+ };
115
+ readonly selection: readonly string[];
116
+ readonly mode: "EDIT" | "PLAY" | "PAUSED";
117
+ readonly unsavedChanges: boolean;
118
+ readonly shaderJobs: readonly {
119
+ readonly jobId: string;
120
+ readonly status: string;
121
+ readonly progressBasisPoints: number;
122
+ }[];
123
+ readonly importJobs: readonly {
124
+ readonly jobId: string;
125
+ readonly status: string;
126
+ readonly progressBasisPoints: number;
127
+ }[];
128
+ readonly plugins: readonly {
129
+ readonly pluginId: string;
130
+ readonly version: string;
131
+ readonly enabled: boolean;
132
+ readonly provenanceDigest: Sha256;
133
+ }[];
134
+ readonly modals: readonly {
135
+ readonly modalId: string;
136
+ readonly kind: string;
137
+ readonly blocking: boolean;
138
+ }[];
139
+ readonly processes: readonly {
140
+ readonly processRef: OpaqueSha256;
141
+ readonly role: string;
142
+ readonly state: string;
143
+ }[];
144
+ readonly observedAt: string;
145
+ readonly readOnly: true;
146
+ readonly authoritative: false;
147
+ }
148
+ export type ResourceLock = "GPU" | "EDITOR" | "CACHE";
149
+ export interface JobOrchestrationRequestV1 {
150
+ readonly schemaVersion: typeof JOB_ORCHESTRATION_SCHEMA_V1;
151
+ readonly queueId: string;
152
+ readonly capacity: {
153
+ readonly ramMb: number;
154
+ readonly vramMb: number;
155
+ readonly diskMb: number;
156
+ };
157
+ readonly lockCapacity: Readonly<Record<ResourceLock, number>>;
158
+ readonly jobs: readonly {
159
+ readonly jobId: string;
160
+ readonly kind: string;
161
+ readonly priority: number;
162
+ readonly dependencies: readonly string[];
163
+ readonly locks: readonly ResourceLock[];
164
+ readonly budget: {
165
+ readonly ramMb: number;
166
+ readonly vramMb: number;
167
+ readonly diskMb: number;
168
+ };
169
+ readonly heartbeat: {
170
+ readonly intervalMs: number;
171
+ readonly timeoutMs: number;
172
+ };
173
+ readonly checkpoint: {
174
+ readonly intervalMs: number;
175
+ readonly resume: boolean;
176
+ readonly checkpointDigest?: Sha256;
177
+ readonly recoveryToken: OpaqueSha256;
178
+ };
179
+ readonly adapter: {
180
+ readonly adapterId: string;
181
+ readonly adapterVersion: string;
182
+ };
183
+ }[];
184
+ }
185
+ export interface JobOrchestrationPlanV1 {
186
+ readonly schemaVersion: typeof JOB_ORCHESTRATION_SCHEMA_V1;
187
+ readonly queueId: string;
188
+ readonly queue: readonly {
189
+ readonly position: number;
190
+ readonly jobId: string;
191
+ readonly kind: string;
192
+ readonly priority: number;
193
+ readonly adapter: {
194
+ readonly adapterId: string;
195
+ readonly adapterVersion: string;
196
+ };
197
+ readonly dependencies: readonly string[];
198
+ readonly locks: readonly ResourceLock[];
199
+ readonly budget: {
200
+ readonly ramMb: number;
201
+ readonly vramMb: number;
202
+ readonly diskMb: number;
203
+ };
204
+ readonly heartbeatIntervalMs: number;
205
+ readonly heartbeatTimeoutMs: number;
206
+ readonly checkpointIntervalMs: number;
207
+ readonly resume: boolean;
208
+ readonly checkpointDigest?: Sha256;
209
+ readonly recoveryToken: OpaqueSha256;
210
+ }[];
211
+ readonly requestDigest: Sha256;
212
+ readonly planDigest: Sha256;
213
+ readonly externalRunnerRequired: true;
214
+ readonly resourcesReserved: false;
215
+ readonly authoritative: false;
216
+ }
217
+ export type AcceptanceOperation = "VALIDATE" | "EVALUATE" | "INVALIDATE";
218
+ export type AcceptanceInvalidationReason = "ARTIFACT_CHANGED" | "SCENE_CHANGED" | "TIME_RANGE_CHANGED" | "APPROVER_REVOKED" | "MANUAL_WITHDRAWAL";
219
+ export type AcceptanceTimeRange = {
220
+ readonly start: number;
221
+ readonly end: number;
222
+ readonly unit: "FRAME" | "TICK" | "SECOND";
223
+ };
224
+ export interface AcceptanceLockV1 {
225
+ readonly schemaVersion: typeof ACCEPTANCE_LOCK_SCHEMA_V1;
226
+ readonly lockId: string;
227
+ readonly artifactDigest: Sha256;
228
+ readonly sceneId: string;
229
+ readonly timeRange: AcceptanceTimeRange;
230
+ readonly approver: {
231
+ readonly approverIdDigest: Sha256;
232
+ readonly role: string;
233
+ readonly method: "HUMAN" | "POLICY";
234
+ };
235
+ readonly decision: "ACCEPTED";
236
+ readonly status: "ACTIVE" | "INVALIDATED";
237
+ readonly createdAt: string;
238
+ readonly invalidation?: {
239
+ readonly previousLockDigest: Sha256;
240
+ readonly invalidatedByDigest: Sha256;
241
+ readonly reasonCode: AcceptanceInvalidationReason;
242
+ readonly invalidatedAt: string;
243
+ };
244
+ readonly authoritative: false;
245
+ }
246
+ export interface AcceptanceOperationValue {
247
+ readonly operation: AcceptanceOperation;
248
+ readonly accepted: boolean;
249
+ readonly bindingMatches: boolean;
250
+ readonly invalidated: boolean;
251
+ readonly blockers: readonly string[];
252
+ readonly lock: AcceptanceLockV1;
253
+ readonly lockDigest: Sha256;
254
+ }
255
+ export type MultimodalChannelType = "SCREENSHOT" | "VIDEO" | "DEPTH" | "NORMALS" | "OBJECT_ID" | "MOTION" | "TRANSFORMS" | "EVENTS" | "AUDIO" | "TELEMETRY";
256
+ export interface MultimodalEvidenceDescriptorV1 {
257
+ readonly schemaVersion: typeof MULTIMODAL_EVIDENCE_SCHEMA_V1;
258
+ readonly evidenceId: string;
259
+ readonly runId: string;
260
+ readonly claimId: string;
261
+ readonly definitionDigest: Sha256;
262
+ readonly planDigest: Sha256;
263
+ readonly contractDigest: Sha256;
264
+ readonly claimBindingDigest: Sha256;
265
+ readonly artifactDigest: Sha256;
266
+ readonly sceneId: string;
267
+ readonly timeRange: AcceptanceTimeRange;
268
+ readonly requiredModalities: readonly MultimodalChannelType[];
269
+ readonly channels: readonly {
270
+ readonly channelId: string;
271
+ readonly type: MultimodalChannelType;
272
+ readonly artifactDigest: Sha256;
273
+ readonly mediaType: string;
274
+ readonly metadataDigest: Sha256;
275
+ readonly sampleCount: number;
276
+ }[];
277
+ readonly producer: {
278
+ readonly producerIdDigest: Sha256;
279
+ readonly producerType: "ENGINE" | "EDITOR" | "RUNNER" | "MODEL" | "HUMAN" | "SENSOR";
280
+ readonly version: string;
281
+ readonly configurationDigest: Sha256;
282
+ };
283
+ readonly verifier: {
284
+ readonly verifierIdDigest: Sha256;
285
+ readonly verifierType: "RULE" | "MODEL" | "HUMAN" | "SENSOR";
286
+ readonly version: string;
287
+ readonly independent: true;
288
+ readonly configurationDigest: Sha256;
289
+ };
290
+ readonly decision: {
291
+ readonly verdict: "PASS" | "FAIL" | "INCONCLUSIVE";
292
+ readonly reasonCodes: readonly string[];
293
+ readonly confidenceBasisPoints: number;
294
+ };
295
+ readonly observedAt: string;
296
+ readonly authoritative: false;
297
+ }
@@ -0,0 +1,11 @@
1
+ // SEMA-GOVERNED: sema.produto.sistemas_interativos.operacao
2
+ // Descricao: schemas JSON v1 e tipos estaveis da fundacao operacional interativa.
3
+ export const OPERATION_RESULT_SCHEMA_V1 = "sema.interactive.operation-result/v1";
4
+ export const ENGINE_SNAPSHOT_SCHEMA_V1 = "sema.interactive.engine-snapshot/v1";
5
+ export const ENGINE_DIFF_SCHEMA_V1 = "sema.interactive.engine-diff/v1";
6
+ export const ASSET_PROVENANCE_SCHEMA_V1 = "sema.interactive.asset-provenance/v1";
7
+ export const EDITOR_STATE_SCHEMA_V1 = "sema.interactive.editor-state/v1";
8
+ export const JOB_ORCHESTRATION_SCHEMA_V1 = "sema.interactive.job-orchestration/v1";
9
+ export const ACCEPTANCE_LOCK_SCHEMA_V1 = "sema.interactive.acceptance-lock/v1";
10
+ export const MULTIMODAL_EVIDENCE_SCHEMA_V1 = "sema.interactive.multimodal-evidence/v1";
11
+ //# sourceMappingURL=operationsTypes.js.map
@@ -0,0 +1,2 @@
1
+ import type { DefinicaoSistemaInterativo, ResultadoPlanejamentoSistemaInterativo } from "./types.js";
2
+ export declare function planejarSistemaInterativo(definicao: DefinicaoSistemaInterativo): ResultadoPlanejamentoSistemaInterativo;
@@ -0,0 +1,159 @@
1
+ // SEMA-GOVERNED: sema.produto.sistemas_interativos
2
+ // Descricao: expande pipelines e adapters em plano deterministico sem executar ou escrever no workspace.
3
+ import { digestJsonSistemaInterativo } from "./canonical.js";
4
+ import { CATALOGO_ADAPTADORES_INTERATIVOS, obterPipelineSistemaInterativo, } from "./catalog.js";
5
+ import { validarDefinicaoSistemaInterativo } from "./validator.js";
6
+ function adapterCompativel(adapter, definicao) {
7
+ return adapter.kinds.includes(definicao.kind)
8
+ && adapter.spatialModels.includes(definicao.spatialModel)
9
+ && adapter.renderModes.includes(definicao.renderMode)
10
+ && adapter.visualProfiles.includes(definicao.visualProfile)
11
+ && Array.isArray(definicao.controlModes)
12
+ && definicao.controlModes.every((modo) => adapter.controlModes.includes(modo))
13
+ && adapter.timeModels.includes(definicao.timeModel)
14
+ && adapter.fidelities.includes(definicao.fidelity);
15
+ }
16
+ function expandirPipelines(definicao) {
17
+ const pipelines = [];
18
+ const stages = [];
19
+ for (const pipelineId of definicao.pipelines) {
20
+ const descriptor = obterPipelineSistemaInterativo(pipelineId);
21
+ if (!descriptor)
22
+ continue;
23
+ const stageInstanceIds = descriptor.stages.map((stage) => `${pipelineId}/${stage.stageId}`);
24
+ pipelines.push({
25
+ pipelineId,
26
+ version: descriptor.version,
27
+ stageInstanceIds,
28
+ requiredEvidence: [...descriptor.requiredEvidence],
29
+ });
30
+ for (const stage of descriptor.stages) {
31
+ stages.push({
32
+ ...stage,
33
+ pipelineId,
34
+ stageInstanceId: `${pipelineId}/${stage.stageId}`,
35
+ dependsOn: stage.dependsOn.map((dependencia) => `${pipelineId}/${dependencia}`),
36
+ });
37
+ }
38
+ }
39
+ return { pipelines, stages };
40
+ }
41
+ function planoComDigest(plano) {
42
+ return { ...plano, planDigest: digestJsonSistemaInterativo(plano) };
43
+ }
44
+ function mapearProvedores(stages, candidatos, selecionados) {
45
+ return stages.map((stage) => {
46
+ const candidateAdapterIds = candidatos
47
+ .filter((adapter) => adapter.capabilities.includes(stage.capability))
48
+ .map((adapter) => adapter.adapterId)
49
+ .sort();
50
+ const selectedAdapterIds = selecionados
51
+ .filter((adapter) => adapter.capabilities.includes(stage.capability))
52
+ .map((adapter) => adapter.adapterId)
53
+ .sort();
54
+ return {
55
+ stageInstanceId: stage.stageInstanceId,
56
+ capability: stage.capability,
57
+ candidateAdapterIds,
58
+ selectedAdapterIds,
59
+ coveredBySelection: selectedAdapterIds.length > 0,
60
+ };
61
+ });
62
+ }
63
+ function recomendarComposicao(mapa, idsJaSelecionados) {
64
+ let pendentes = mapa.filter((item) => !item.coveredBySelection);
65
+ const recomendados = [];
66
+ for (let iteracao = 0; pendentes.length > 0 && iteracao < mapa.length; iteracao += 1) {
67
+ const candidatos = [...new Set(pendentes.flatMap((item) => item.candidateAdapterIds))]
68
+ .filter((adapterId) => !idsJaSelecionados.has(adapterId) && !recomendados.includes(adapterId))
69
+ .sort();
70
+ const melhor = candidatos.map((adapterId) => ({
71
+ adapterId,
72
+ cobertura: pendentes.filter((item) => item.candidateAdapterIds.includes(adapterId)).length,
73
+ })).sort((a, b) => b.cobertura - a.cobertura || a.adapterId.localeCompare(b.adapterId))[0];
74
+ if (!melhor || melhor.cobertura === 0)
75
+ break;
76
+ recomendados.push(melhor.adapterId);
77
+ const restantes = pendentes.filter((item) => !item.candidateAdapterIds.includes(melhor.adapterId));
78
+ if (restantes.length >= pendentes.length)
79
+ break;
80
+ pendentes = restantes;
81
+ }
82
+ return recomendados;
83
+ }
84
+ export function planejarSistemaInterativo(definicao) {
85
+ const validacao = validarDefinicaoSistemaInterativo(definicao);
86
+ const bloqueios = [...validacao.bloqueios];
87
+ const declaradas = new Set(Array.isArray(definicao.capabilities) ? definicao.capabilities : []);
88
+ const capabilitiesAusentes = validacao.capabilitiesRequeridas.filter((item) => !declaradas.has(item));
89
+ const expandidos = validacao.valida ? expandirPipelines(definicao) : { pipelines: [], stages: [] };
90
+ const alvos = Array.isArray(definicao.adapterTargets) ? definicao.adapterTargets : [];
91
+ const adapterSelectionExplicit = alvos.length > 0;
92
+ const candidatos = validacao.valida
93
+ ? CATALOGO_ADAPTADORES_INTERATIVOS.filter((adapter) => adapterCompativel(adapter, definicao))
94
+ : [];
95
+ const selecionados = candidatos.filter((adapter) => alvos.includes(adapter.adapterId));
96
+ const adaptersCompativeis = candidatos.map((adapter) => adapter.adapterId).sort();
97
+ const adaptersSelecionados = selecionados.map((adapter) => adapter.adapterId).sort();
98
+ const selecionadosSet = new Set(adaptersSelecionados);
99
+ if (capabilitiesAusentes.length > 0)
100
+ bloqueios.push("capabilities_obrigatorias_ausentes");
101
+ if (validacao.valida && adaptersCompativeis.length === 0)
102
+ bloqueios.push("adapter_compativel_ausente");
103
+ if (validacao.valida && !adapterSelectionExplicit)
104
+ bloqueios.push("adapter_selecao_explicita_ausente");
105
+ if (validacao.valida) {
106
+ for (const [indice, adapterId] of alvos.entries()) {
107
+ const conhecido = CATALOGO_ADAPTADORES_INTERATIVOS.some((adapter) => adapter.adapterId === adapterId);
108
+ if (conhecido && !selecionadosSet.has(adapterId))
109
+ bloqueios.push(`adapter_target_incompativel_indice:${indice}`);
110
+ }
111
+ }
112
+ const stageProviderMap = mapearProvedores(expandidos.stages, candidatos, selecionados);
113
+ const capabilitiesSemAdapter = [...new Set(stageProviderMap
114
+ .filter((item) => !item.coveredBySelection)
115
+ .map((item) => item.capability))].sort();
116
+ const semCandidato = stageProviderMap.some((item) => item.candidateAdapterIds.length === 0);
117
+ const adapterCoverageComplete = adapterSelectionExplicit
118
+ && stageProviderMap.length > 0
119
+ && stageProviderMap.every((item) => item.coveredBySelection);
120
+ if (validacao.valida && semCandidato)
121
+ bloqueios.push("adapter_provedor_candidato_ausente");
122
+ if (validacao.valida && adapterSelectionExplicit && !adapterCoverageComplete) {
123
+ bloqueios.push("adapter_capability_coverage_incompleta");
124
+ }
125
+ const nextActions = [];
126
+ for (const bloqueio of [...new Set(bloqueios)].sort())
127
+ nextActions.push(`corrigir:${bloqueio}`);
128
+ for (const capability of capabilitiesAusentes)
129
+ nextActions.push(`declarar_capability:${capability}`);
130
+ for (const adapterId of recomendarComposicao(stageProviderMap, selecionadosSet)) {
131
+ nextActions.push(`${adapterSelectionExplicit ? "adicionar" : "selecionar"}_adapter_externo:${adapterId}`);
132
+ }
133
+ for (const evidenceType of [...new Set(expandidos.stages.flatMap((stage) => stage.requiredEvidence))].sort()) {
134
+ nextActions.push(`coletar_evidencia_externa:${evidenceType}`);
135
+ }
136
+ if (validacao.valida && bloqueios.length === 0)
137
+ nextActions.push("entregar_plano_ao_runner_externo");
138
+ const plano = planoComDigest({
139
+ systemId: validacao.bloqueios.includes("system_id_invalido") ? "INVALID" : definicao.systemId,
140
+ definitionDigest: validacao.definitionDigest,
141
+ capabilitiesRequeridas: validacao.capabilitiesRequeridas,
142
+ capabilitiesAusentes,
143
+ pipelines: expandidos.pipelines,
144
+ adaptersCompativeis,
145
+ adaptersSelecionados,
146
+ adapterSelectionExplicit,
147
+ adapterCoverageComplete,
148
+ capabilitiesSemAdapter,
149
+ stageProviderMap,
150
+ stages: expandidos.stages,
151
+ nextActions,
152
+ executed: false,
153
+ });
154
+ return {
155
+ plano,
156
+ bloqueios: [...new Set(bloqueios)].sort(),
157
+ };
158
+ }
159
+ //# sourceMappingURL=planner.js.map
@@ -0,0 +1,164 @@
1
+ export declare const SCHEMA_PORTABILIDADE: "sema.interactive.portability/v1";
2
+ export declare const SCHEMA_WORKERS_DISTRIBUIDOS: "sema.interactive.distributed-jobs/v1";
3
+ export type StatusMapeamentoPortabilidade = "EXACT" | "APPROXIMATE" | "UNSUPPORTED";
4
+ export interface EntradaManifestoFontePortabilidade {
5
+ readonly semanticId: string;
6
+ readonly sourceKind: string;
7
+ readonly contentDigest: string;
8
+ readonly required: boolean;
9
+ }
10
+ export interface ManifestoFontePortabilidade {
11
+ readonly experienceIrDigest: string;
12
+ readonly snapshotDigest: string;
13
+ readonly entries: readonly EntradaManifestoFontePortabilidade[];
14
+ readonly manifestDigest: string;
15
+ }
16
+ export interface OrigemPortabilidade {
17
+ readonly engine: string;
18
+ readonly version: string;
19
+ readonly snapshotDigest: string;
20
+ readonly coordinateSystem: string;
21
+ }
22
+ export interface MapeamentoPortabilidade {
23
+ readonly mappingId: string;
24
+ readonly semanticId: string;
25
+ readonly sourceKind: string;
26
+ readonly targetKind: string;
27
+ readonly status: StatusMapeamentoPortabilidade;
28
+ readonly losses: readonly string[];
29
+ readonly fallback?: string;
30
+ readonly acceptanceCriteria: readonly string[];
31
+ }
32
+ export interface AlvoPortabilidade {
33
+ readonly targetId: string;
34
+ readonly engine: string;
35
+ readonly version: string;
36
+ readonly outputFormat: string;
37
+ readonly mappings: readonly MapeamentoPortabilidade[];
38
+ }
39
+ export interface MigracaoEngine {
40
+ readonly migrationId: string;
41
+ readonly targetId: string;
42
+ readonly engine: string;
43
+ readonly fromVersion: string;
44
+ readonly toVersion: string;
45
+ readonly backupDigest: string;
46
+ readonly compatibilityReportDigest: string;
47
+ readonly testPlanDigest: string;
48
+ readonly rollbackPlanDigest: string;
49
+ }
50
+ export interface PlanoPortabilidadeInterativa {
51
+ readonly schemaVersion: typeof SCHEMA_PORTABILIDADE;
52
+ readonly planId: string;
53
+ readonly systemId: string;
54
+ readonly experienceIrDigest: string;
55
+ readonly source: OrigemPortabilidade;
56
+ readonly sourceManifest: ManifestoFontePortabilidade;
57
+ readonly targets: readonly AlvoPortabilidade[];
58
+ readonly migrations: readonly MigracaoEngine[];
59
+ readonly acceptance: {
60
+ readonly maxUnsupportedPerTarget: number;
61
+ readonly allowApproximate: boolean;
62
+ readonly requiredEvidence: readonly string[];
63
+ };
64
+ }
65
+ export interface RelatorioAlvoPortabilidade {
66
+ readonly targetId: string;
67
+ readonly exact: number;
68
+ readonly approximate: number;
69
+ readonly unsupported: number;
70
+ readonly sourceCoverageComplete: boolean;
71
+ readonly mappingsBoundToSource: boolean;
72
+ readonly migrationLinked: boolean;
73
+ readonly readyForExternalMigration: boolean;
74
+ readonly requiresExternalValidation: true;
75
+ readonly converted: false;
76
+ }
77
+ export interface PerdaPortabilidade {
78
+ readonly targetId: string;
79
+ readonly mappingId: string;
80
+ readonly status: "APPROXIMATE" | "UNSUPPORTED";
81
+ readonly lossCodes: readonly string[];
82
+ readonly fallback: string;
83
+ }
84
+ export interface ResultadoPortabilidadeInterativa {
85
+ readonly valido: boolean;
86
+ readonly planDigest: string;
87
+ readonly targetReports: readonly RelatorioAlvoPortabilidade[];
88
+ readonly declaredLosses: readonly PerdaPortabilidade[];
89
+ readonly migrationGaps: readonly string[];
90
+ readonly nextActions: readonly string[];
91
+ readonly converted: false;
92
+ readonly authoritative: false;
93
+ readonly executed: false;
94
+ readonly bloqueios: readonly string[];
95
+ }
96
+ export interface WorkerDistribuido {
97
+ readonly workerId: string;
98
+ readonly capabilities: readonly string[];
99
+ readonly ramMb: number;
100
+ readonly vramMb: number;
101
+ readonly diskMb: number;
102
+ readonly maxConcurrency: number;
103
+ readonly isolation: "CONTAINER" | "VM" | "PROCESS_SANDBOX";
104
+ }
105
+ export interface JobDistribuido {
106
+ readonly jobId: string;
107
+ readonly type: "COOK" | "SHADERS" | "RENDER" | "TEST";
108
+ readonly inputDigest: string;
109
+ readonly dependsOn: readonly string[];
110
+ readonly requiredCapabilities: readonly string[];
111
+ readonly budgets: {
112
+ readonly ramMb: number;
113
+ readonly vramMb: number;
114
+ readonly diskMb: number;
115
+ readonly runtimeSeconds: number;
116
+ };
117
+ readonly idempotencyKey: string;
118
+ readonly checkpointIntervalSeconds: number;
119
+ readonly retry: {
120
+ readonly maxAttempts: number;
121
+ readonly backoffSeconds: number;
122
+ };
123
+ readonly resourceLockIds: readonly string[];
124
+ readonly requiredEvidence: readonly string[];
125
+ }
126
+ export interface LeaseRecursoDistribuido {
127
+ readonly lockId: string;
128
+ readonly resourceId: string;
129
+ readonly resourceType: "GPU" | "EDITOR" | "CACHE";
130
+ readonly ownerJobId: string;
131
+ readonly exclusive: boolean;
132
+ readonly ttlSeconds: number;
133
+ readonly heartbeatSeconds: number;
134
+ readonly checkpointDigest: string;
135
+ }
136
+ export interface PlanoWorkersDistribuidos {
137
+ readonly schemaVersion: typeof SCHEMA_WORKERS_DISTRIBUIDOS;
138
+ readonly planId: string;
139
+ readonly systemId: string;
140
+ readonly inputDigest: string;
141
+ readonly workers: readonly WorkerDistribuido[];
142
+ readonly jobs: readonly JobDistribuido[];
143
+ readonly leases: readonly LeaseRecursoDistribuido[];
144
+ readonly evidenceRequirements: readonly string[];
145
+ }
146
+ export interface ResultadoWorkersDistribuidos {
147
+ readonly valido: boolean;
148
+ readonly planDigest: string;
149
+ readonly topologicalOrder: readonly string[];
150
+ readonly assignments: readonly {
151
+ readonly jobId: string;
152
+ readonly workerId: string;
153
+ }[];
154
+ readonly capabilityGaps: readonly string[];
155
+ readonly lockConflicts: readonly string[];
156
+ readonly nextActions: readonly string[];
157
+ readonly completed: false;
158
+ readonly authoritative: false;
159
+ readonly executed: false;
160
+ readonly bloqueios: readonly string[];
161
+ }
162
+ export declare function digestManifestoFontePortabilidade(manifesto: Omit<ManifestoFontePortabilidade, "manifestDigest">): string;
163
+ export declare function analisarPlanoPortabilidadeInterativa(entrada: unknown): ResultadoPortabilidadeInterativa;
164
+ export declare function validarPlanoWorkersDistribuidos(entrada: unknown): ResultadoWorkersDistribuidos;