oxe-cc 1.14.0 → 1.16.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 (40) hide show
  1. package/.github/dependabot.yml +31 -0
  2. package/.github/workflows/ci.yml +141 -56
  3. package/.github/workflows/release.yml +114 -89
  4. package/CHANGELOG.md +866 -779
  5. package/README.md +600 -736
  6. package/bin/lib/oxe-agent-install.cjs +299 -284
  7. package/bin/lib/oxe-artifact-catalog.cjs +376 -0
  8. package/bin/lib/oxe-command-registry.cjs +31 -0
  9. package/bin/lib/oxe-context-engine.cjs +11 -11
  10. package/bin/lib/oxe-core-command-handlers.cjs +82 -0
  11. package/bin/lib/oxe-dashboard.cjs +140 -140
  12. package/bin/lib/oxe-manifest.cjs +20 -20
  13. package/bin/lib/oxe-npm-version.cjs +6 -4
  14. package/bin/lib/oxe-plugin-cli.cjs +95 -0
  15. package/bin/lib/oxe-plugins.cjs +94 -3
  16. package/bin/lib/oxe-process.cjs +67 -0
  17. package/bin/lib/oxe-project-health.cjs +2846 -2856
  18. package/bin/lib/oxe-runtime-semantics.cjs +68 -69
  19. package/bin/oxe-cc.js +179 -325
  20. package/docs/INTEGRATION.md +182 -152
  21. package/docs/QUALITY-GATES.md +46 -0
  22. package/docs/RELEASE-READINESS.md +86 -61
  23. package/docs/RUNTIME-SMOKE-MATRIX.md +137 -135
  24. package/docs/oxe-artifact-map.html +1172 -1172
  25. package/lib/sdk/index.cjs +18 -0
  26. package/lib/sdk/index.d.ts +969 -900
  27. package/lib/sdk/index.types.ts +933 -0
  28. package/oxe/templates/PLUGINS.md +8 -1
  29. package/oxe/templates/STATE-REFERENCE.md +125 -0
  30. package/oxe/templates/STATE.md +11 -121
  31. package/oxe/workflows/help.md +2 -0
  32. package/package.json +129 -108
  33. package/packages/runtime/package.json +18 -18
  34. package/packages/runtime/src/evidence/evidence-store.ts +2 -2
  35. package/packages/runtime/src/scheduler/multi-agent-coordinator.ts +728 -728
  36. package/packages/runtime/src/workspace/strategies/git-worktree.ts +24 -24
  37. package/packages/runtime/tsconfig.json +8 -2
  38. package/vscode-extension/.vscodeignore +2 -0
  39. package/vscode-extension/package.json +193 -185
  40. package/vscode-extension/src/extension.js +11 -1
@@ -0,0 +1,933 @@
1
+ /**
2
+ * OXE SDK (`oxe-cc`) — tipos para consumo em TypeScript.
3
+ * O pacote é CommonJS; use `import oxe = require('oxe-cc')` ou `createRequire`.
4
+ */
5
+
6
+ interface PackageMeta {
7
+ version: string;
8
+ name: string;
9
+ }
10
+
11
+ interface WorkflowDiff {
12
+ expected: string[];
13
+ actual: string[];
14
+ missing: string[];
15
+ extra: string[];
16
+ ok: boolean;
17
+ }
18
+
19
+ interface DoctorIssue {
20
+ code: string;
21
+ message: string;
22
+ detail?: unknown;
23
+ }
24
+
25
+ interface WorkflowShapeFileResult {
26
+ file: string;
27
+ warnings: string[];
28
+ }
29
+
30
+ interface WorkflowShapeResult {
31
+ fileResults: WorkflowShapeFileResult[];
32
+ warnings: DoctorIssue[];
33
+ }
34
+
35
+ /** Idade do scan ou do compact face a `scan_max_age_days` / `compact_max_age_days`. */
36
+ interface HealthStaleInfo {
37
+ stale: boolean;
38
+ days: number | null;
39
+ }
40
+
41
+ interface OxeNextSuggestion {
42
+ step: string;
43
+ cursorCmd: string;
44
+ reason: string;
45
+ artifacts: string[];
46
+ }
47
+
48
+ /** Compact, host-facing projection of the health report (versioned). */
49
+ interface OxeStatusSummary {
50
+ oxeSummarySchema: number;
51
+ workspaceMode: string;
52
+ phase: string | null;
53
+ healthStatus: string | null;
54
+ activeSession: string | null;
55
+ nextStep: string | null;
56
+ cursorCmd: string | null;
57
+ reason: string | null;
58
+ eventsCount: number;
59
+ warningsCount: number;
60
+ }
61
+
62
+ /** Per-agent OXE skills/integration status for a workspace. */
63
+ interface AgentSkillsStatus {
64
+ agent: string;
65
+ detected: boolean;
66
+ skillsInstalled: boolean;
67
+ skillsPath: string;
68
+ status: string;
69
+ issues: string[];
70
+ }
71
+
72
+ interface AzureInventorySummary {
73
+ total: number;
74
+ servicebus: number;
75
+ eventgrid: number;
76
+ sql: number;
77
+ other: number;
78
+ }
79
+
80
+ interface AzureHealthContext {
81
+ profile: Record<string, unknown> | null;
82
+ authStatus: Record<string, unknown> | null;
83
+ inventorySummary: AzureInventorySummary | null;
84
+ inventoryPath: string;
85
+ operationsPath: string;
86
+ inventorySyncedAt: string | null;
87
+ inventoryStale: { stale: boolean; hours: number | null };
88
+ pendingOperations: number;
89
+ lastOperation: Record<string, unknown> | null;
90
+ warnings: string[];
91
+ }
92
+
93
+ type CopilotPromptSource = 'workspace' | 'legacy_global' | 'missing';
94
+
95
+ interface CopilotWorkspaceIntegration {
96
+ root: string;
97
+ promptsDir: string;
98
+ instructions: string;
99
+ manifest: string;
100
+ promptFiles: string[];
101
+ hasInstructions: boolean;
102
+ hasOxeBlock: boolean;
103
+ }
104
+
105
+ interface CopilotLegacyIntegration {
106
+ root: string;
107
+ promptsDir: string;
108
+ instructions: string;
109
+ promptFiles: string[];
110
+ hasInstructions: boolean;
111
+ hasOxeBlock: boolean;
112
+ hasOtherManagedBlocks: boolean;
113
+ detected: boolean;
114
+ }
115
+
116
+ interface CopilotIntegrationReport {
117
+ status: 'healthy' | 'warning' | 'broken' | 'not_installed';
118
+ detected: boolean;
119
+ target: 'workspace';
120
+ promptSource: CopilotPromptSource;
121
+ workspace: CopilotWorkspaceIntegration;
122
+ legacy: CopilotLegacyIntegration;
123
+ manifest: Record<string, unknown> | null;
124
+ warnings: string[];
125
+ }
126
+
127
+ interface VerificationSummary {
128
+ total: number;
129
+ pass: number;
130
+ fail: number;
131
+ skip: number;
132
+ error: number;
133
+ allPassed: boolean;
134
+ profile: string | null;
135
+ manifestPath: string;
136
+ }
137
+
138
+ interface ResidualRiskSummary {
139
+ total: number;
140
+ highOrCritical: number;
141
+ ledgerPath: string;
142
+ }
143
+
144
+ interface EvidenceCoverageSummary {
145
+ total_checks: number;
146
+ checks_with_evidence: number;
147
+ total_evidence_refs: number;
148
+ coverage_percent: number;
149
+ }
150
+
151
+ interface PendingGatesSummary {
152
+ path: string;
153
+ total: number;
154
+ gateSlaHours?: number;
155
+ staleGateCount?: number;
156
+ pending: Array<Record<string, unknown>>;
157
+ stalePending: Array<Record<string, unknown>>;
158
+ }
159
+
160
+ interface GateQueueSnapshot {
161
+ path: string;
162
+ total: number;
163
+ gate_sla_hours?: number;
164
+ staleCount?: number;
165
+ pending: Array<Record<string, unknown>>;
166
+ stale_pending?: Array<Record<string, unknown>>;
167
+ resolved_recent?: Array<Record<string, unknown>>;
168
+ byRun?: Record<string, number>;
169
+ byScope?: Record<string, number>;
170
+ all?: Array<Record<string, unknown>>;
171
+ }
172
+
173
+ interface MultiAgentStatusSummary {
174
+ path: string | null;
175
+ enabled: boolean;
176
+ runId: string | null;
177
+ mode: string | null;
178
+ workspaceIsolationEnforced: boolean;
179
+ agents: Array<Record<string, unknown>>;
180
+ ownership: Array<Record<string, unknown>>;
181
+ orphanReassignments: Array<Record<string, unknown>>;
182
+ handoffs: Array<Record<string, unknown>>;
183
+ arbitrationResults: Array<Record<string, unknown>>;
184
+ summary?: Record<string, unknown> | null;
185
+ }
186
+
187
+ type WorkspaceMode = 'product_package' | 'oxe_project';
188
+
189
+ interface ReleaseManifest {
190
+ schema_version: number;
191
+ generated_at: string;
192
+ project_root: string;
193
+ package_root: string;
194
+ release_contract: Record<string, unknown>;
195
+ versions: Record<string, unknown>;
196
+ runtime_compiled: { path: string; ok: boolean };
197
+ canonical_source?: Record<string, unknown>;
198
+ semantics?: Record<string, unknown>;
199
+ wrappers: Record<string, unknown>;
200
+ reports: Record<string, unknown>;
201
+ }
202
+
203
+ interface ReleaseConsistencyResult {
204
+ ok: boolean;
205
+ blockers: string[];
206
+ warnings: string[];
207
+ manifest: ReleaseManifest;
208
+ manifestPath: string;
209
+ }
210
+
211
+ interface RuntimeSmokeReport {
212
+ path: string;
213
+ present: boolean;
214
+ ok: boolean;
215
+ total: number;
216
+ failures: string[];
217
+ missingRequired: string[];
218
+ results: Array<Record<string, unknown>>;
219
+ raw: Record<string, unknown> | null;
220
+ }
221
+
222
+ interface PolicyDecisionSummary {
223
+ total: number;
224
+ denied: number;
225
+ gated: number;
226
+ overridesWithoutRationale: number;
227
+ }
228
+
229
+ interface QuotaSummary {
230
+ limits: {
231
+ maxWorkItemsPerRun: number | null;
232
+ maxMutationsPerRun: number | null;
233
+ maxRetriesPerRun: number | null;
234
+ };
235
+ consumed: {
236
+ workItems: number;
237
+ mutations: number;
238
+ retries: number;
239
+ };
240
+ violations: string[];
241
+ exceeded: boolean;
242
+ }
243
+
244
+ interface AuditSummary {
245
+ path: string;
246
+ totalEntries: number;
247
+ runEntries: number;
248
+ warn: number;
249
+ critical: number;
250
+ oldest: string | null;
251
+ newest: string | null;
252
+ actors: string[];
253
+ actions: Record<string, number>;
254
+ }
255
+
256
+ interface PromotionSummary {
257
+ status: string | null;
258
+ targetKind: string | null;
259
+ remote: string | null;
260
+ targetRef: string | null;
261
+ prUrl: string | null;
262
+ prNumber: number | null;
263
+ coveragePercent: number | null;
264
+ reasons: string[];
265
+ path: string;
266
+ }
267
+
268
+ interface ExecutionImplementationPackSummary {
269
+ path: string | null;
270
+ exists: boolean;
271
+ parseError: string | null;
272
+ ready: boolean;
273
+ tasks: Array<Record<string, unknown>>;
274
+ taskCount: number;
275
+ mutatingTasks: number;
276
+ criticalGaps: string[];
277
+ }
278
+
279
+ interface ExecutionReferenceAnchorsSummary {
280
+ path: string | null;
281
+ exists: boolean;
282
+ ready: boolean;
283
+ anchors: Array<Record<string, unknown>>;
284
+ missingCriticalCount: number;
285
+ staleCount: number;
286
+ criticalGaps: string[];
287
+ }
288
+
289
+ interface ExecutionFixturePackSummary {
290
+ path: string | null;
291
+ exists: boolean;
292
+ parseError: string | null;
293
+ ready: boolean;
294
+ fixtures: Array<Record<string, unknown>>;
295
+ fixtureCount: number;
296
+ criticalGaps: string[];
297
+ }
298
+
299
+ interface ExecutionRationalitySummary {
300
+ applicable: boolean;
301
+ planTaskCount: number;
302
+ externalReferenceCount: number;
303
+ implementationPackReady: boolean;
304
+ referenceAnchorsReady: boolean;
305
+ fixturePackReady: boolean;
306
+ executionRationalityReady: boolean;
307
+ criticalExecutionGaps: string[];
308
+ implementationPack: ExecutionImplementationPackSummary;
309
+ referenceAnchors: ExecutionReferenceAnchorsSummary;
310
+ fixturePack: ExecutionFixturePackSummary;
311
+ }
312
+
313
+ /** Relatório retornado por `health.buildHealthReport` e incluído em `runDoctorChecks`.healthReport. */
314
+ interface OxeHealthReport {
315
+ workspaceMode?: WorkspaceMode;
316
+ configPath: string | null;
317
+ configParseError: string | null;
318
+ unknownConfigKeys: string[];
319
+ typeErrors: string[];
320
+ phase: string | null;
321
+ scanDate: Date | null;
322
+ stale: HealthStaleInfo;
323
+ compactDate: Date | null;
324
+ staleCompact: HealthStaleInfo;
325
+ retroDate: Date | null;
326
+ staleLessons: HealthStaleInfo;
327
+ phaseWarn: string[];
328
+ runtimeWarn?: string[];
329
+ reviewWarn?: string[];
330
+ capabilityWarn?: string[];
331
+ investigationWarn?: string[];
332
+ sessionWarn?: string[];
333
+ installWarn?: string[];
334
+ copilotWarn?: string[];
335
+ copilot?: CopilotIntegrationReport | null;
336
+ summaryGapWarn: string | null;
337
+ specWarn: string[];
338
+ planWarn: string[];
339
+ planSelfEvaluation?: Record<string, unknown> | null;
340
+ implementationPackReady?: boolean;
341
+ referenceAnchorsReady?: boolean;
342
+ fixturePackReady?: boolean;
343
+ executionRationalityReady?: boolean;
344
+ criticalExecutionGaps?: string[];
345
+ executionRationality?: ExecutionRationalitySummary | null;
346
+ planReviewStatus?: string | null;
347
+ activeRun?: Record<string, unknown> | null;
348
+ eventsSummary?: Record<string, unknown> | null;
349
+ memoryLayers?: Record<string, unknown> | null;
350
+ verificationSummary?: VerificationSummary | null;
351
+ residualRiskSummary?: ResidualRiskSummary | null;
352
+ evidenceCoverage?: EvidenceCoverageSummary | null;
353
+ pendingGates?: PendingGatesSummary | null;
354
+ policyDecisionSummary?: PolicyDecisionSummary | null;
355
+ enterpriseWarn?: string[];
356
+ quotaSummary?: QuotaSummary | null;
357
+ auditSummary?: AuditSummary | null;
358
+ promotionSummary?: PromotionSummary | null;
359
+ multiAgent?: MultiAgentStatusSummary | null;
360
+ next: OxeNextSuggestion;
361
+ azureActive?: boolean;
362
+ azure?: AzureHealthContext | null;
363
+ contextWarn?: string[];
364
+ semanticsWarn?: string[];
365
+ contextPacks?: Record<string, ContextPackSummary>;
366
+ contextQuality?: ContextQualitySummary;
367
+ semanticsDrift?: SemanticsDriftSummary;
368
+ releaseReadiness?: ReleaseConsistencyResult | null;
369
+ packFreshness?: Record<string, PackFreshness>;
370
+ activeSummaryRefs?: { project: string | null; session: string | null; phase: string | null };
371
+ scanFocusGlobs?: unknown;
372
+ scanIgnoreGlobs?: unknown;
373
+ }
374
+
375
+ interface SecurityReport {
376
+ secretFiles: string[];
377
+ pluginsValid: boolean;
378
+ }
379
+
380
+ interface DoctorChecksResult {
381
+ ok: boolean;
382
+ errors: DoctorIssue[];
383
+ warnings: DoctorIssue[];
384
+ node: { currentMajor: number; minimumMajor: number; ok: boolean };
385
+ workflowDiff: WorkflowDiff | null;
386
+ projectWorkflowsDir: string | null;
387
+ packageWorkflowsDir: string;
388
+ config: {
389
+ config: Record<string, unknown>;
390
+ path: string | null;
391
+ parseError: string | null;
392
+ };
393
+ validation: { unknownKeys: string[]; typeErrors: string[] };
394
+ healthReport: OxeHealthReport;
395
+ workflowShape: WorkflowShapeResult | null;
396
+ securityReport: SecurityReport | null;
397
+ }
398
+
399
+ /** Tarefa parseada de PLAN.md. */
400
+ interface ParsedTask {
401
+ id: string;
402
+ title: string;
403
+ wave: number | null;
404
+ dependsOn: string[];
405
+ files: string[];
406
+ verifyCommand: string | null;
407
+ aceite: string[];
408
+ decisions: string[];
409
+ done: boolean;
410
+ meta: Record<string, unknown> | null;
411
+ }
412
+
413
+ type ContextPackMode = 'standard' | 'auditor';
414
+
415
+ interface LessonOutcome {
416
+ cycle: string;
417
+ verify_status: string;
418
+ saved_hours?: number;
419
+ failure_condition?: string;
420
+ }
421
+
422
+ interface LessonMetric {
423
+ id: string;
424
+ rule: string;
425
+ type: string;
426
+ applied_cycles: string[];
427
+ outcomes: LessonOutcome[];
428
+ success_rate: number;
429
+ status: 'active' | 'deprecated' | 'conditional';
430
+ deprecation_threshold: number;
431
+ }
432
+
433
+ interface ConfidenceDimension {
434
+ name: string;
435
+ score: number;
436
+ weight: number;
437
+ note: string;
438
+ }
439
+
440
+ interface ConfidenceVector {
441
+ cycle: string | null;
442
+ generated_at: string | null;
443
+ dimensions: ConfidenceDimension[];
444
+ global: { score: number; gate: string };
445
+ }
446
+
447
+ interface CriticalHypothesis {
448
+ id: string;
449
+ condition: string;
450
+ validation: string;
451
+ on_failure: string;
452
+ checkpoint: string | null;
453
+ status: 'pending' | 'validated' | 'refuted' | 'skipped';
454
+ }
455
+
456
+ interface ParsedPlan {
457
+ tasks: ParsedTask[];
458
+ waves: Record<number, string[]>;
459
+ totalTasks: number;
460
+ }
461
+
462
+ interface ParsedCriterion {
463
+ id: string;
464
+ criterion: string;
465
+ howToVerify: string;
466
+ }
467
+
468
+ interface ParsedSpec {
469
+ objective: string | null;
470
+ criteria: ParsedCriterion[];
471
+ requiredSections: string[];
472
+ }
473
+
474
+ interface ParsedState {
475
+ phase: string | null;
476
+ lastScanDate: string | null;
477
+ lastRetroDate: string | null;
478
+ nextStep: string | null;
479
+ decisions: string[];
480
+ activeWorkstreams: string[];
481
+ activeMilestone: string | null;
482
+ /** run_id do blueprint ativo extraído da seção "Blueprint de agentes" em STATE.md. */
483
+ runId: string | null;
484
+ /** lifecycle_status do blueprint: pending_execute | executing | closed | invalidated. */
485
+ lifecycleStatus: string | null;
486
+ /** loop_status da sessão de loop: retrying | passed | escalated. */
487
+ loopStatus: string | null;
488
+ }
489
+
490
+ interface DecisionFidelityResult {
491
+ ok: boolean;
492
+ gaps: Array<{ decisionId: string; decision: string }>;
493
+ covered: Array<{ decisionId: string; taskIds: string[] }>;
494
+ }
495
+
496
+ interface PathSafetyResult {
497
+ safe: boolean;
498
+ reason: string | null;
499
+ }
500
+
501
+ interface SecretMatch {
502
+ line: number;
503
+ pattern: string;
504
+ preview: string;
505
+ }
506
+
507
+ interface SecretScanResult {
508
+ hasSecrets: boolean;
509
+ matches: SecretMatch[];
510
+ }
511
+
512
+ interface PlanPathsResult {
513
+ ok: boolean;
514
+ issues: Array<{ path: string; reason: string }>;
515
+ }
516
+
517
+ interface OxePermissionRule {
518
+ pattern: string;
519
+ action: 'allow' | 'deny' | 'ask';
520
+ scope?: 'execute' | 'apply' | 'all';
521
+ }
522
+
523
+ interface PermissionCheckResult {
524
+ denied: string[];
525
+ needsApproval: string[];
526
+ allowed: string[];
527
+ }
528
+
529
+ interface ReplayReport {
530
+ events: Array<Record<string, unknown>>;
531
+ totalEvents: number;
532
+ duration_ms: number | null;
533
+ runId: string | null;
534
+ waveIds: number[];
535
+ taskSequence: string[];
536
+ checkpointSequence: string[];
537
+ failureEvents: Array<Record<string, unknown>>;
538
+ _reportPath?: string;
539
+ }
540
+
541
+ interface ContextArtifactSelection {
542
+ alias: string;
543
+ path: string | null;
544
+ exists: boolean;
545
+ required: boolean;
546
+ using_fallback: boolean;
547
+ scope: string;
548
+ summary: string;
549
+ }
550
+
551
+ interface ContextGap {
552
+ alias: string;
553
+ severity: 'critical' | 'warning';
554
+ reason: string;
555
+ }
556
+
557
+ interface ContextConflict {
558
+ alias: string;
559
+ reason: string;
560
+ primary_path: string | null;
561
+ fallback_path: string | null;
562
+ }
563
+
564
+ interface PackFreshness {
565
+ generated_at: string | null;
566
+ latest_source_at: string | null;
567
+ pack_age_hours: number | null;
568
+ max_pack_age_hours: number;
569
+ stale: boolean;
570
+ reason: 'fresh' | 'pack_age_exceeded' | 'source_newer_than_pack' | 'fallback_required';
571
+ }
572
+
573
+ interface ContextQualityScore {
574
+ score: number;
575
+ status: 'excellent' | 'good' | 'fragile' | 'critical';
576
+ requiredMissing: number;
577
+ optionalMissing: number;
578
+ conflicts: number;
579
+ fallbackCount: number;
580
+ }
581
+
582
+ interface ContextPackSummary {
583
+ path?: string;
584
+ context_tier: string;
585
+ semantics_hash: string | null;
586
+ read_order: string[];
587
+ selected_artifacts: ContextArtifactSelection[];
588
+ gaps: ContextGap[];
589
+ conflicts: ContextConflict[];
590
+ fallback_required: boolean;
591
+ freshness: PackFreshness;
592
+ context_quality: ContextQualityScore;
593
+ }
594
+
595
+ interface ContextQualitySummary {
596
+ primaryWorkflow: string | null;
597
+ primaryScore: number | null;
598
+ primaryStatus: string | null;
599
+ byWorkflow: Record<string, Record<string, unknown>>;
600
+ }
601
+
602
+ interface SemanticsDriftSummary {
603
+ ok: boolean;
604
+ contractVersion: string;
605
+ manifestPath: string;
606
+ manifest: Record<string, unknown> | null;
607
+ audit: {
608
+ ok: boolean;
609
+ warnings: string[];
610
+ mismatchCount: number;
611
+ mismatches: Array<Record<string, unknown>>;
612
+ targets: Record<string, { path: string; checked: number; missing: boolean }>;
613
+ };
614
+ }
615
+
616
+ interface PluginSource {
617
+ source: string;
618
+ version?: string;
619
+ }
620
+
621
+ interface OxePlugin {
622
+ name: string;
623
+ version?: string;
624
+ hooks: Record<string, (ctx: Record<string, unknown>) => Promise<void> | void>;
625
+ }
626
+
627
+ interface PluginLoadResult {
628
+ plugins: OxePlugin[];
629
+ errors: Array<{ file: string; error: string }>;
630
+ }
631
+
632
+ interface PluginValidationResult {
633
+ valid: boolean;
634
+ issues: Array<{ file: string; issue: string }>;
635
+ }
636
+
637
+ interface ManifestAPI {
638
+ loadFileManifest: (home: string) => Record<string, unknown>;
639
+ writeFileManifest: (home: string, manifest: Record<string, unknown>) => void;
640
+ sha256File: (filePath: string) => string;
641
+ collectFilesRecursive: (dir: string) => string[];
642
+ MANIFEST_DIR: string;
643
+ PATCHES_DIR: string;
644
+ }
645
+
646
+ interface AgentsAPI {
647
+ adjustWorkflowPathsForNestedLayout: (content: string, layout?: string) => string;
648
+ parseCursorCommandFrontmatter: (mdContent: string) => Record<string, unknown>;
649
+ }
650
+
651
+ interface ContextAPI {
652
+ contextPaths: (projectRoot: string, activeSession?: string | null) => Record<string, unknown>;
653
+ resolveArtifactCandidates: (projectRoot: string, activeSession?: string | null) => Record<string, unknown>;
654
+ buildProjectSummary: (projectRoot: string, activeSession?: string | null, options?: Record<string, unknown>) => Record<string, unknown>;
655
+ buildSessionSummary: (projectRoot: string, activeSession?: string | null, options?: Record<string, unknown>) => Record<string, unknown> | null;
656
+ buildPhaseSummary: (projectRoot: string, activeSession?: string | null, options?: Record<string, unknown>) => Record<string, unknown>;
657
+ buildContextIndex: (projectRoot: string, activeSession?: string | null, options?: Record<string, unknown>) => Record<string, unknown>;
658
+ buildContextPack: (projectRoot: string, input?: Record<string, unknown>) => Record<string, unknown>;
659
+ inspectContextPack: (projectRoot: string, input?: Record<string, unknown>) => Record<string, unknown>;
660
+ buildAllContextPacks: (projectRoot: string, input?: Record<string, unknown>) => Array<Record<string, unknown>>;
661
+ computeContextQuality: (pack: Record<string, unknown>) => Record<string, unknown>;
662
+ computePackFreshness: (pack: Record<string, unknown>, contract?: Record<string, unknown>) => Record<string, unknown>;
663
+ resolvePackFile: (projectRoot: string, workflow: string, activeSession?: string | null) => string;
664
+ summarizeText: (text: string, maxChars?: number, maxLines?: number) => string;
665
+ extractSemanticFragment: (text: string, options?: { intent?: string; maxChars?: number; preserveMarkers?: string[] }) => string;
666
+ parseHypotheses: (planText: string) => CriticalHypothesis[];
667
+ parseConfidenceVector: (planText: string) => ConfidenceVector | null;
668
+ }
669
+
670
+ interface RuntimeSemanticsAPI {
671
+ CONTRACT_VERSION: string;
672
+ CONTRACTS_PATH: string;
673
+ CONTRACTS_REGISTRY: Record<string, unknown>;
674
+ REQUIRED_CONTRACT_FIELDS: string[];
675
+ RUNTIME_METADATA_KEYS: string[];
676
+ validateWorkflowContractsRegistry: (registry?: Record<string, unknown>) => string[];
677
+ getWorkflowContract: (slug: string) => Record<string, unknown> | null;
678
+ getAllWorkflowContracts: () => Array<Record<string, unknown>>;
679
+ computeSemanticsHash: (slug: string) => string | null;
680
+ getRuntimeMetadataForSlug: (slug: string, options?: Record<string, unknown>) => Record<string, string>;
681
+ renderRuntimeMetadataLines: (meta: Record<string, string>) => string[];
682
+ buildReasoningContractBlock: (meta: Record<string, string>, options?: Record<string, unknown>) => string;
683
+ pickRuntimeMetadata: (frontmatter: Record<string, string>) => Record<string, string>;
684
+ splitFrontmatter: (raw: string) => { frontmatter: string; body: string };
685
+ parseFrontmatterMap: (raw: string) => Record<string, string>;
686
+ slugFromPromptFilename: (name: string) => string;
687
+ slugFromCommandFilename: (name: string) => string;
688
+ auditWrapperText: (slug: string, raw: string) => Record<string, unknown>;
689
+ auditRuntimeTargets: (projectRoot: string) => Record<string, unknown>;
690
+ }
691
+
692
+ interface OxeSdk {
693
+ version: string;
694
+ name: string;
695
+ PACKAGE_ROOT: string;
696
+ readPackageMeta: (root?: string) => PackageMeta;
697
+ readMinNode: (packageRoot: string) => number;
698
+
699
+ /** Parsing de artefatos OXE. */
700
+ parsePlan: (planMd: string) => ParsedPlan;
701
+ parseHypotheses: (planText: string) => CriticalHypothesis[];
702
+ parseConfidenceVector: (planText: string) => ConfidenceVector | null;
703
+ parseExecutionPlanTasks: (planPath: string | null) => Array<Record<string, unknown>>;
704
+ parseSpec: (specMd: string) => ParsedSpec;
705
+ parseState: (stateMd: string) => ParsedState;
706
+ validateDecisionFidelity: (discussMd: string, planMd: string) => DecisionFidelityResult;
707
+ parseLessonsMetrics: (metricsJson: string) => LessonMetric[];
708
+ updateLessonMetric: (metrics: LessonMetric[], lessonId: string, outcome: LessonOutcome) => LessonMetric[];
709
+ deprecateLowEffectiveness: (metrics: LessonMetric[], threshold?: number, minObservations?: number) => LessonMetric[];
710
+ verifyRun?: (input: {
711
+ projectRoot: string;
712
+ runId: string;
713
+ workItemId: string;
714
+ cwd: string;
715
+ suite: Record<string, unknown>;
716
+ pluginRegistry?: Record<string, unknown>;
717
+ evidenceStore?: Record<string, unknown>;
718
+ attemptNumber?: number;
719
+ timeoutMs?: number;
720
+ }) => Promise<Record<string, unknown>>;
721
+
722
+ health: {
723
+ loadOxeConfigMerged: (targetProject: string) => { config: Record<string, unknown>; path: string | null; parseError: string | null; sources: { system: string | null; user: string | null; project: string | null } };
724
+ validateConfigShape: (cfg: Record<string, unknown>) => { unknownKeys: string[]; typeErrors: string[] };
725
+ buildHealthReport: (target: string) => OxeHealthReport;
726
+ buildStatusSummary: (report: OxeHealthReport) => OxeStatusSummary;
727
+ agentSkillsReport: (target: string) => AgentSkillsStatus[];
728
+ detectWorkspaceMode: (target: string) => { workspaceMode: WorkspaceMode; packageName: string | null; canonicalTreePresent: boolean; commandsTreePresent: boolean };
729
+ shouldSuppressExecutionWorkspaceGates: (workspaceMode: WorkspaceMode, phase?: string | null, activeSession?: string | null, activeRun?: Record<string, unknown> | null) => boolean;
730
+ suggestNextStep: (target: string, cfg?: { discuss_before_plan?: boolean }) => OxeNextSuggestion;
731
+ oxePaths: (target: string) => Record<string, string>;
732
+ parseStatePhase: (stateText: string) => string | null;
733
+ parseLastScanDate: (stateText: string) => Date | null;
734
+ parseLastCompactDate: (stateText: string) => Date | null;
735
+ parseLastRetroDate: (stateText: string) => Date | null;
736
+ isStaleScan: (scanDate: Date | null, maxAgeDays: number) => HealthStaleInfo;
737
+ isStaleLessons: (retroDate: Date | null, maxAgeDays: number) => HealthStaleInfo;
738
+ copilotWorkspacePaths: (target: string) => { root: string; promptsDir: string; instructions: string; manifest: string };
739
+ copilotLegacyPaths: () => { root: string; promptsDir: string; instructions: string };
740
+ copilotIntegrationReport: (target: string) => CopilotIntegrationReport;
741
+ planAgentsWarnings: (target: string) => string[];
742
+ phaseCoherenceWarnings: (phase: string, paths: Record<string, string>) => string[];
743
+ specSectionWarnings: (specPath: string, requiredHeadings: string[]) => string[];
744
+ planWaveWarningsFixed: (planPath: string, maxPerWave: number) => string[];
745
+ planTaskAceiteWarnings: (planPath: string) => string[];
746
+ buildExecutionRationality: (paths?: Record<string, string | null | undefined>) => ExecutionRationalitySummary;
747
+ executionRationalityWarningsFromSummary: (summary: ExecutionRationalitySummary) => string[];
748
+ verifyGapsWithoutSummaryWarning: (verifyPath: string, summaryPath: string) => string | null;
749
+ expandExecutionProfile: (profile: string) => Record<string, unknown>;
750
+ ALLOWED_CONFIG_KEYS: string[];
751
+ EXECUTION_PROFILES: string[];
752
+ VERIFICATION_DEPTHS: string[];
753
+ INSTALL_PROFILES: string[];
754
+ INSTALL_REPO_LAYOUTS: string[];
755
+ INSTALL_OBJECT_KEYS: string[];
756
+ EXPECTED_CODEBASE_MAPS: string[];
757
+ };
758
+
759
+ workflows: {
760
+ resolveWorkflowsDir: (targetProject: string) => string | null;
761
+ listWorkflowMdFiles: (workflowsDir: string) => string[];
762
+ diffWorkflows: (expectedDir: string, actualDir: string) => WorkflowDiff;
763
+ validateWorkflowShapes: (
764
+ workflowsDir: string,
765
+ options?: { maxBytesSoft?: number }
766
+ ) => WorkflowShapeResult;
767
+ DEFAULT_MAX_BYTES_SOFT: number;
768
+ SUCCESS_CRITERIA_EXCEPTIONS: Set<string>;
769
+ };
770
+
771
+ install: {
772
+ resolveOptionsFromConfig: (
773
+ projectRoot: string,
774
+ optsIn: Record<string, unknown>
775
+ ) => { options: Record<string, unknown>; warnings: string[] };
776
+ };
777
+
778
+ manifest: ManifestAPI;
779
+ agents: AgentsAPI;
780
+
781
+ security: {
782
+ checkPathSafety: (filePath: string, projectRoot: string, options?: {
783
+ allowedRoots?: string[];
784
+ deniedPatterns?: RegExp[];
785
+ secretPatterns?: RegExp[];
786
+ }) => PathSafetyResult;
787
+ scanFileForSecrets: (filePath: string, options?: { contentPatterns?: RegExp[] }) => SecretScanResult;
788
+ scanDirForSecretFiles: (dir: string, options?: { secretPatterns?: RegExp[]; maxDepth?: number }) => string[];
789
+ validatePlanPaths: (filePaths: string[], projectRoot: string) => PlanPathsResult;
790
+ checkFilePermission: (filePath: string, permissions: OxePermissionRule[], currentScope?: string) => { action: string; rule: OxePermissionRule | null };
791
+ checkPermissions: (fileList: string[], permissions: OxePermissionRule[], scope?: string) => PermissionCheckResult;
792
+ globToRegex: (glob: string) => RegExp;
793
+ DEFAULT_SECRET_PATTERNS: RegExp[];
794
+ DEFAULT_SECRET_CONTENT_PATTERNS: RegExp[];
795
+ DEFAULT_DENIED_PATH_PATTERNS: RegExp[];
796
+ };
797
+
798
+ /** Plugin system — hooks de ciclo de vida em `.oxe/plugins/*.cjs`. */
799
+ plugins: {
800
+ loadPlugins: (projectRoot: string) => PluginLoadResult;
801
+ runHook: (plugins: OxePlugin[], hookName: string, ctx: Record<string, unknown>) => Promise<Array<{ plugin: string; error: string }>>;
802
+ validatePlugins: (projectRoot: string) => PluginValidationResult;
803
+ initPluginsDir: (projectRoot: string) => void;
804
+ resolvePluginSources: (projectRoot: string, pluginsSources: Array<string | PluginSource>) => { resolved: string[]; errors: Array<{ source: string; error: string }> };
805
+ installNpmPlugin: (projectRoot: string, pkgName: string, version?: string) => { ok: boolean; path: string; error: string };
806
+ };
807
+
808
+ dashboard: {
809
+ loadDashboardContext: (projectRoot: string, opts?: { activeSession?: string | null }) => Record<string, unknown>;
810
+ savePlanReviewStatus: (projectRoot: string, input?: Record<string, unknown>) => Record<string, unknown>;
811
+ addPlanReviewComment: (projectRoot: string, input?: Record<string, unknown>) => Record<string, unknown>;
812
+ updatePlanReviewCommentStatus: (projectRoot: string, input?: Record<string, unknown>) => Record<string, unknown> | null;
813
+ };
814
+
815
+ release: {
816
+ REQUIRED_RUNTIMES: string[];
817
+ WRAPPER_TARGETS: Array<Record<string, unknown>>;
818
+ releasePaths: (projectRoot: string) => Record<string, string>;
819
+ collectWrapperHashes: (projectRoot: string) => Record<string, unknown>;
820
+ loadRuntimeSmokeReport: (projectRoot: string) => RuntimeSmokeReport;
821
+ loadRecoveryFixtureReport: (projectRoot: string) => RuntimeSmokeReport;
822
+ loadMultiAgentSoakReport: (projectRoot: string) => RuntimeSmokeReport;
823
+ buildReleaseManifest: (projectRoot: string, options?: Record<string, unknown>) => ReleaseManifest;
824
+ inspectCanonicalSource: (projectRoot: string) => Record<string, unknown>;
825
+ evaluateReleaseManifest: (manifest: ReleaseManifest, options?: Record<string, unknown>) => ReleaseConsistencyResult;
826
+ inspectReleaseReadiness: (projectRoot: string, options?: Record<string, unknown>) => ReleaseConsistencyResult;
827
+ checkReleaseConsistency: (projectRoot: string, options?: Record<string, unknown>) => ReleaseConsistencyResult;
828
+ };
829
+
830
+ context: ContextAPI;
831
+ runtimeSemantics: RuntimeSemanticsAPI;
832
+
833
+ operational: {
834
+ operationalPaths: (projectRoot: string, activeSession: string | null) => Record<string, string | null>;
835
+ appendEvent: (projectRoot: string, activeSession: string | null, event?: Record<string, unknown>) => Record<string, unknown>;
836
+ readEvents: (projectRoot: string, activeSession: string | null) => Array<Record<string, unknown>>;
837
+ summarizeEvents: (events: Array<Record<string, unknown>>) => Record<string, unknown>;
838
+ writeRunState: (projectRoot: string, activeSession: string | null, runState?: Record<string, unknown>) => Record<string, unknown>;
839
+ readRunState: (projectRoot: string, activeSession: string | null) => Record<string, unknown> | null;
840
+ buildOperationalGraph: (runState?: Record<string, unknown>) => { nodes: Array<Record<string, unknown>>; edges: Array<Record<string, unknown>> };
841
+ serializeCanonicalState: (state: unknown) => Record<string, unknown> | null;
842
+ hydrateCanonicalState: (serialized: unknown) => Record<string, unknown>;
843
+ reduceCanonicalRunState: (projectRoot: string, activeSession: string | null, options?: Record<string, unknown>) => Record<string, unknown> | null;
844
+ compileExecutionGraphFromArtifacts: (projectRoot: string, activeSession: string | null, options?: Record<string, unknown>) => Record<string, unknown>;
845
+ compileVerificationSuiteFromArtifacts: (projectRoot: string, activeSession: string | null, options?: Record<string, unknown>) => Record<string, unknown>;
846
+ projectRuntimeArtifacts: (projectRoot: string, activeSession: string | null, options?: Record<string, unknown>) => Record<string, unknown>;
847
+ runRuntimeCiChecks: (projectRoot: string, activeSession: string | null, options?: Record<string, unknown>) => Promise<Record<string, unknown>>;
848
+ buildRuntimePluginRegistry: (projectRoot: string) => Record<string, unknown> | null;
849
+ readRuntimeGates: (projectRoot: string, activeSession: string | null, options?: Record<string, unknown>) => GateQueueSnapshot;
850
+ resolveRuntimeGate: (projectRoot: string, activeSession: string | null, options?: Record<string, unknown>) => Promise<Record<string, unknown>>;
851
+ runRuntimeVerify: (projectRoot: string, activeSession: string | null, options?: Record<string, unknown>) => Promise<Record<string, unknown>>;
852
+ runRuntimePromotion: (projectRoot: string, activeSession: string | null, options?: Record<string, unknown>) => Promise<Record<string, unknown>>;
853
+ recoverRuntimeState: (projectRoot: string, activeSession: string | null, options?: Record<string, unknown>) => Record<string, unknown>;
854
+ applyRuntimeAction: (projectRoot: string, activeSession: string | null, input?: Record<string, unknown>) => Record<string, unknown>;
855
+ parseCapabilityManifest: (text: string) => Record<string, unknown>;
856
+ readCapabilityCatalog: (projectRoot: string) => Array<Record<string, unknown>>;
857
+ buildMemoryLayers: (projectRoot: string, activeSession: string | null) => Record<string, unknown>;
858
+ replayEvents: (projectRoot: string, activeSession: string | null, options?: {
859
+ fromEventId?: string;
860
+ runId?: string;
861
+ waveId?: number;
862
+ limit?: number;
863
+ writeReport?: boolean;
864
+ }) => ReplayReport;
865
+ replayRuntimeState: (projectRoot: string, activeSession: string | null, options?: Record<string, unknown>) => Record<string, unknown>;
866
+ readRuntimeMultiAgentStatus: (projectRoot: string, activeSession: string | null, options?: Record<string, unknown>) => MultiAgentStatusSummary;
867
+ multiAgentStatus: (projectRoot: string, activeSession: string | null, options?: Record<string, unknown>) => MultiAgentStatusSummary;
868
+ };
869
+
870
+ azure: {
871
+ MIN_AZURE_CLI_MAJOR: number;
872
+ AZURE_CAPABILITY_IDS: string[];
873
+ RESOURCE_GRAPH_QUERY: string;
874
+ DEFAULT_AZURE_PROFILE: Record<string, unknown>;
875
+ azurePaths: (projectRoot: string) => Record<string, string>;
876
+ ensureAzureArtifacts: (projectRoot: string) => Record<string, string>;
877
+ isAzureContextEnabled: (projectRoot: string, config?: Record<string, unknown>) => boolean;
878
+ detectAzureCli: (projectRoot: string, options?: Record<string, unknown>) => Record<string, unknown>;
879
+ loadAzureProfile: (projectRoot: string) => Record<string, unknown>;
880
+ loadAzureAuthStatus: (projectRoot: string) => Record<string, unknown> | null;
881
+ loadAzureInventory: (projectRoot: string) => Record<string, unknown> | null;
882
+ listAzureOperations: (projectRoot: string) => Array<Record<string, unknown>>;
883
+ summarizeInventory: (items: Array<Record<string, unknown>>) => AzureInventorySummary;
884
+ searchAzureInventory: (projectRoot: string, query: string, filters?: { type?: string; resourceGroup?: string }) => Array<Record<string, unknown>>;
885
+ diffInventory: (previousItems: Array<Record<string, unknown>>, currentItems: Array<Record<string, unknown>>) => { added: Array<Record<string, unknown>>; removed: Array<Record<string, unknown>>; unchanged: number };
886
+ statusAzure: (projectRoot: string, config?: Record<string, unknown>, options?: Record<string, unknown>) => Record<string, unknown>;
887
+ ensureAzureCapabilities: (projectRoot: string) => string[];
888
+ getAzureContext: (projectRoot: string, options?: Record<string, unknown>) => Record<string, unknown>;
889
+ loginAzure: (projectRoot: string, options?: Record<string, unknown>) => Record<string, unknown>;
890
+ setAzureSubscription: (projectRoot: string, subscription: string, options?: Record<string, unknown>) => Record<string, unknown>;
891
+ syncAzureInventory: (projectRoot: string, options?: Record<string, unknown>) => Record<string, unknown>;
892
+ executeAzureRead: (projectRoot: string, activeSession: string | null, domain: string, verb: string, input: Record<string, unknown>, options?: Record<string, unknown>) => unknown;
893
+ planAzureOperation: (projectRoot: string, activeSession: string | null, domain: string, input: Record<string, unknown>, options?: Record<string, unknown>) => Record<string, unknown>;
894
+ applyAzureOperation: (projectRoot: string, activeSession: string | null, domain: string, input: Record<string, unknown>, options?: Record<string, unknown>) => Record<string, unknown>;
895
+ azureDoctor: (projectRoot: string, config?: Record<string, unknown>, options?: Record<string, unknown>) => Record<string, unknown>;
896
+ redactObject: (value: unknown) => unknown;
897
+ };
898
+
899
+ artifacts: {
900
+ ARTIFACT_CATALOG: Array<{ path: string; kind: 'file' | 'dir'; purpose: string; createdBy: string; group: string }>;
901
+ GROUPS: Array<{ key: string; label: string; order: number }>;
902
+ CORE_INSTALL_PATHS: string[];
903
+ SOURCE_LABELS: Record<string, string>;
904
+ sourceLabel: (createdBy: string) => string;
905
+ renderLegend: () => string;
906
+ classifyEntry: (oxeDir: string, entry: { path: string; kind: string }) => 'absent' | 'empty' | 'active';
907
+ buildMapModel: (
908
+ target: string,
909
+ opts?: { staleScan?: boolean }
910
+ ) => {
911
+ projectRoot: string;
912
+ oxeExists: boolean;
913
+ groups: Array<{ key: string; label: string; present: Array<Record<string, unknown>>; available: Array<Record<string, unknown>> }>;
914
+ present: Array<Record<string, unknown>>;
915
+ available: Array<Record<string, unknown>>;
916
+ extras: string[];
917
+ counts: { total: number; present: number; active: number; empty: number; stale: number; available: number; extras: number };
918
+ };
919
+ renderMap: (model: Record<string, unknown>, opts?: { paint?: (s: string, kind: string) => string }) => string;
920
+ };
921
+
922
+ runDoctorChecks: (args: {
923
+ projectRoot: string;
924
+ packageRoot?: string;
925
+ nodeMajor?: number;
926
+ includeWorkflowLint?: boolean;
927
+ workflowLintOptions?: { maxBytesSoft?: number };
928
+ includeSecurity?: boolean;
929
+ }) => DoctorChecksResult;
930
+ }
931
+
932
+ declare const sdk: OxeSdk & typeof import('../runtime/index');
933
+ export = sdk;