oxe-cc 0.6.5 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/commands/oxe-ask.md +11 -0
- package/.cursor/commands/oxe-capabilities.md +11 -0
- package/.cursor/commands/oxe-dashboard.md +11 -0
- package/.github/prompts/oxe-ask.prompt.md +12 -0
- package/.github/prompts/oxe-capabilities.prompt.md +12 -0
- package/.github/prompts/oxe-dashboard.prompt.md +12 -0
- package/CHANGELOG.md +33 -0
- package/README.md +189 -34
- package/assets/oxe-framework-artifacts-paper.png +0 -0
- package/bin/banner.txt +1 -1
- package/bin/lib/oxe-azure.cjs +1445 -0
- package/bin/lib/oxe-dashboard.cjs +588 -0
- package/bin/lib/oxe-install-resolve.cjs +4 -1
- package/bin/lib/oxe-operational.cjs +670 -0
- package/bin/lib/oxe-project-health.cjs +655 -118
- package/bin/oxe-cc.js +1404 -17
- package/commands/oxe/ask.md +14 -0
- package/commands/oxe/capabilities.md +13 -0
- package/commands/oxe/dashboard.md +14 -0
- package/lib/sdk/README.md +9 -7
- package/lib/sdk/index.cjs +56 -0
- package/lib/sdk/index.d.ts +73 -0
- package/oxe/templates/ACTIVE-RUN.template.json +32 -0
- package/oxe/templates/CAPABILITIES.template.md +7 -0
- package/oxe/templates/CAPABILITY.template.md +45 -0
- package/oxe/templates/CHECKPOINTS.template.md +7 -0
- package/oxe/templates/CONFIG.md +3 -2
- package/oxe/templates/EXECUTION-RUNTIME.template.md +68 -0
- package/oxe/templates/INVESTIGATION.template.md +38 -0
- package/oxe/templates/NOTES.template.md +16 -0
- package/oxe/templates/PLAN-REVIEW.template.md +31 -0
- package/oxe/templates/PLAN.template.md +22 -7
- package/oxe/templates/RESEARCH.template.md +11 -4
- package/oxe/templates/SPEC.template.md +6 -4
- package/oxe/templates/STATE.md +45 -7
- package/oxe/templates/config.template.json +14 -5
- package/oxe/workflows/ask.md +71 -0
- package/oxe/workflows/capabilities.md +23 -0
- package/oxe/workflows/dashboard.md +23 -0
- package/oxe/workflows/discuss.md +11 -9
- package/oxe/workflows/execute.md +46 -17
- package/oxe/workflows/help.md +273 -239
- package/oxe/workflows/next.md +10 -8
- package/oxe/workflows/obs.md +70 -20
- package/oxe/workflows/plan-agent.md +2 -1
- package/oxe/workflows/plan.md +70 -21
- package/oxe/workflows/quick.md +14 -6
- package/oxe/workflows/references/adaptive-discovery.md +27 -0
- package/oxe/workflows/references/flow-robustness-contract.md +80 -0
- package/oxe/workflows/research.md +12 -8
- package/oxe/workflows/retro.md +30 -5
- package/oxe/workflows/scan.md +1 -0
- package/oxe/workflows/spec.md +58 -33
- package/oxe/workflows/verify.md +40 -10
- package/package.json +2 -2
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oxe:ask
|
|
3
|
+
description: "Perguntar ao OXE sobre a situação atual com leitura robusta de STATE, sessão ativa e artefatos da trilha"
|
|
4
|
+
argument-hint: "[pergunta em texto livre]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Bash
|
|
8
|
+
- Glob
|
|
9
|
+
- Grep
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
**Workflow canónico:** `oxe/workflows/ask.md`
|
|
13
|
+
|
|
14
|
+
Execute integralmente esse ficheiro na raiz do repositório em que estás a trabalhar. Usa o texto em `$ARGUMENTS` como pergunta e foco.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oxe:capabilities
|
|
3
|
+
description: "Gerir capabilities nativas do projeto OXE"
|
|
4
|
+
argument-hint: "[list|install <id>|remove <id>|update]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Bash
|
|
8
|
+
- Glob
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
**Workflow canónico:** `oxe/workflows/capabilities.md`
|
|
12
|
+
|
|
13
|
+
Execute integralmente esse ficheiro na raiz do repositório em que estás a trabalhar. Usa o texto em `$ARGUMENTS` como ação sobre capabilities.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oxe:dashboard
|
|
3
|
+
description: "Visualizar o runtime operacional, ondas, checkpoints e sinais principais da trilha OXE"
|
|
4
|
+
argument-hint: "[foco opcional]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Bash
|
|
8
|
+
- Glob
|
|
9
|
+
- Grep
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
**Workflow canónico:** `oxe/workflows/dashboard.md`
|
|
13
|
+
|
|
14
|
+
Execute integralmente esse ficheiro na raiz do repositório em que estás a trabalhar. Usa o texto em `$ARGUMENTS` como foco opcional.
|
package/lib/sdk/README.md
CHANGED
|
@@ -47,19 +47,21 @@ const { options, warnings: w } = oxe.install.resolveOptionsFromConfig(dir, {
|
|
|
47
47
|
| **health** | `loadOxeConfigMerged`, `validateConfigShape`, `buildHealthReport`, `suggestNextStep`, `oxePaths`, constantes de config |
|
|
48
48
|
| **workflows** | `resolveWorkflowsDir`, `listWorkflowMdFiles`, `diffWorkflows`, `validateWorkflowShapes` (avisos `WORKFLOW_SHAPE`) |
|
|
49
49
|
| **install** | `resolveOptionsFromConfig` |
|
|
50
|
-
| **manifest** | `loadFileManifest`, `writeFileManifest`, `sha256File`, `collectFilesRecursive` |
|
|
51
|
-
| **agents** | `adjustWorkflowPathsForNestedLayout`, `parseCursorCommandFrontmatter` |
|
|
52
|
-
| **
|
|
50
|
+
| **manifest** | `loadFileManifest`, `writeFileManifest`, `sha256File`, `collectFilesRecursive` |
|
|
51
|
+
| **agents** | `adjustWorkflowPathsForNestedLayout`, `parseCursorCommandFrontmatter` |
|
|
52
|
+
| **azure** | `azurePaths`, `detectAzureCli`, `loadAzureProfile`, `syncAzureInventory`, `planAzureOperation`, `applyAzureOperation`, `azureDoctor` |
|
|
53
|
+
| **doctor** | `runDoctorChecks` — resultado estruturado (erros + avisos + diff de workflows + `workflowShape` com lint leve dos `.md`) |
|
|
53
54
|
|
|
54
55
|
TypeScript: ver `index.d.ts` junto deste ficheiro.
|
|
55
56
|
|
|
56
57
|
## `health.buildHealthReport` e `parseLastCompactDate`
|
|
57
58
|
|
|
58
59
|
- **`parseLastCompactDate(stateText)`** — lê a data em **`.oxe/STATE.md`** na secção **Último compact** (mesma convenção que **Último scan**). Devolve `Date | null` se a linha for placeholder ou ilegível.
|
|
59
|
-
- **`buildHealthReport(projectRoot)`** — agrega fase, datas, avisos de SPEC/PLAN/VERIFY e o próximo passo sugerido. Campos usados em CI e em `oxe-cc status --json`:
|
|
60
|
-
- **`scanDate`**, **`stale`** — último scan e idade face a `scan_max_age_days` (`stale: { stale, days }`).
|
|
61
|
-
- **`compactDate`**, **`staleCompact`** — último compact e idade face a `compact_max_age_days`.
|
|
62
|
-
- **`
|
|
60
|
+
- **`buildHealthReport(projectRoot)`** — agrega fase, datas, avisos de SPEC/PLAN/VERIFY e o próximo passo sugerido. Campos usados em CI e em `oxe-cc status --json`:
|
|
61
|
+
- **`scanDate`**, **`stale`** — último scan e idade face a `scan_max_age_days` (`stale: { stale, days }`).
|
|
62
|
+
- **`compactDate`**, **`staleCompact`** — último compact e idade face a `compact_max_age_days`.
|
|
63
|
+
- **`azureActive`**, **`azure`** — contexto Azure resolvido, inventário materializado, warnings e pendências do provider.
|
|
64
|
+
- **`next`** — `{ step, cursorCmd, reason, artifacts }` (espelha a lógica de `suggestNextStep`).
|
|
63
65
|
|
|
64
66
|
## `runDoctorChecks` e relatório de saúde
|
|
65
67
|
|
package/lib/sdk/index.cjs
CHANGED
|
@@ -14,6 +14,9 @@ const installResolve = require('../../bin/lib/oxe-install-resolve.cjs');
|
|
|
14
14
|
const agentInstall = require('../../bin/lib/oxe-agent-install.cjs');
|
|
15
15
|
const security = require('../../bin/lib/oxe-security.cjs');
|
|
16
16
|
const plugins = require('../../bin/lib/oxe-plugins.cjs');
|
|
17
|
+
const dashboard = require('../../bin/lib/oxe-dashboard.cjs');
|
|
18
|
+
const operational = require('../../bin/lib/oxe-operational.cjs');
|
|
19
|
+
const azure = require('../../bin/lib/oxe-azure.cjs');
|
|
17
20
|
|
|
18
21
|
const PACKAGE_ROOT = path.join(__dirname, '..', '..');
|
|
19
22
|
|
|
@@ -543,6 +546,59 @@ module.exports = {
|
|
|
543
546
|
initPluginsDir: plugins.initPluginsDir,
|
|
544
547
|
},
|
|
545
548
|
|
|
549
|
+
/** Dashboard local: contexto consolidado e persistência de revisão do plano. */
|
|
550
|
+
dashboard: {
|
|
551
|
+
loadDashboardContext: dashboard.loadDashboardContext,
|
|
552
|
+
savePlanReviewStatus: dashboard.savePlanReviewStatus,
|
|
553
|
+
addPlanReviewComment: dashboard.addPlanReviewComment,
|
|
554
|
+
updatePlanReviewCommentStatus: dashboard.updatePlanReviewCommentStatus,
|
|
555
|
+
},
|
|
556
|
+
|
|
557
|
+
/** Runtime operacional: tracing, active run, catálogo de capabilities e memória em camadas. */
|
|
558
|
+
operational: {
|
|
559
|
+
operationalPaths: operational.operationalPaths,
|
|
560
|
+
appendEvent: operational.appendEvent,
|
|
561
|
+
readEvents: operational.readEvents,
|
|
562
|
+
summarizeEvents: operational.summarizeEvents,
|
|
563
|
+
writeRunState: operational.writeRunState,
|
|
564
|
+
readRunState: operational.readRunState,
|
|
565
|
+
buildOperationalGraph: operational.buildOperationalGraph,
|
|
566
|
+
applyRuntimeAction: operational.applyRuntimeAction,
|
|
567
|
+
parseCapabilityManifest: operational.parseCapabilityManifest,
|
|
568
|
+
readCapabilityCatalog: operational.readCapabilityCatalog,
|
|
569
|
+
buildMemoryLayers: operational.buildMemoryLayers,
|
|
570
|
+
},
|
|
571
|
+
|
|
572
|
+
/** Provider Azure nativo via Azure CLI. */
|
|
573
|
+
azure: {
|
|
574
|
+
MIN_AZURE_CLI_MAJOR: azure.MIN_AZURE_CLI_MAJOR,
|
|
575
|
+
AZURE_CAPABILITY_IDS: azure.AZURE_CAPABILITY_IDS,
|
|
576
|
+
RESOURCE_GRAPH_QUERY: azure.RESOURCE_GRAPH_QUERY,
|
|
577
|
+
DEFAULT_AZURE_PROFILE: azure.DEFAULT_AZURE_PROFILE,
|
|
578
|
+
azurePaths: azure.azurePaths,
|
|
579
|
+
ensureAzureArtifacts: azure.ensureAzureArtifacts,
|
|
580
|
+
isAzureContextEnabled: azure.isAzureContextEnabled,
|
|
581
|
+
detectAzureCli: azure.detectAzureCli,
|
|
582
|
+
loadAzureProfile: azure.loadAzureProfile,
|
|
583
|
+
loadAzureAuthStatus: azure.loadAzureAuthStatus,
|
|
584
|
+
loadAzureInventory: azure.loadAzureInventory,
|
|
585
|
+
listAzureOperations: azure.listAzureOperations,
|
|
586
|
+
summarizeInventory: azure.summarizeInventory,
|
|
587
|
+
searchAzureInventory: azure.searchAzureInventory,
|
|
588
|
+
diffInventory: azure.diffInventory,
|
|
589
|
+
statusAzure: azure.statusAzure,
|
|
590
|
+
ensureAzureCapabilities: azure.ensureAzureCapabilities,
|
|
591
|
+
getAzureContext: azure.getAzureContext,
|
|
592
|
+
loginAzure: azure.loginAzure,
|
|
593
|
+
setAzureSubscription: azure.setAzureSubscription,
|
|
594
|
+
syncAzureInventory: azure.syncAzureInventory,
|
|
595
|
+
executeAzureRead: azure.executeAzureRead,
|
|
596
|
+
planAzureOperation: azure.planAzureOperation,
|
|
597
|
+
applyAzureOperation: azure.applyAzureOperation,
|
|
598
|
+
azureDoctor: azure.azureDoctor,
|
|
599
|
+
redactObject: azure.redactObject,
|
|
600
|
+
},
|
|
601
|
+
|
|
546
602
|
/** Um único objeto com verificações tipo `doctor` + relatório de saúde. */
|
|
547
603
|
runDoctorChecks,
|
|
548
604
|
};
|
package/lib/sdk/index.d.ts
CHANGED
|
@@ -45,6 +45,27 @@ export interface OxeNextSuggestion {
|
|
|
45
45
|
artifacts: string[];
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
export interface AzureInventorySummary {
|
|
49
|
+
total: number;
|
|
50
|
+
servicebus: number;
|
|
51
|
+
eventgrid: number;
|
|
52
|
+
sql: number;
|
|
53
|
+
other: number;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface AzureHealthContext {
|
|
57
|
+
profile: Record<string, unknown> | null;
|
|
58
|
+
authStatus: Record<string, unknown> | null;
|
|
59
|
+
inventorySummary: AzureInventorySummary | null;
|
|
60
|
+
inventoryPath: string;
|
|
61
|
+
operationsPath: string;
|
|
62
|
+
inventorySyncedAt: string | null;
|
|
63
|
+
inventoryStale: { stale: boolean; hours: number | null };
|
|
64
|
+
pendingOperations: number;
|
|
65
|
+
lastOperation: Record<string, unknown> | null;
|
|
66
|
+
warnings: string[];
|
|
67
|
+
}
|
|
68
|
+
|
|
48
69
|
/** Relatório retornado por `health.buildHealthReport` e incluído em `runDoctorChecks`.healthReport. */
|
|
49
70
|
export interface OxeHealthReport {
|
|
50
71
|
configPath: string | null;
|
|
@@ -63,6 +84,8 @@ export interface OxeHealthReport {
|
|
|
63
84
|
specWarn: string[];
|
|
64
85
|
planWarn: string[];
|
|
65
86
|
next: OxeNextSuggestion;
|
|
87
|
+
azureActive?: boolean;
|
|
88
|
+
azure?: AzureHealthContext | null;
|
|
66
89
|
scanFocusGlobs?: unknown;
|
|
67
90
|
scanIgnoreGlobs?: unknown;
|
|
68
91
|
}
|
|
@@ -281,6 +304,56 @@ export interface OxeSdk {
|
|
|
281
304
|
initPluginsDir: (projectRoot: string) => void;
|
|
282
305
|
};
|
|
283
306
|
|
|
307
|
+
dashboard: {
|
|
308
|
+
loadDashboardContext: (projectRoot: string, opts?: { activeSession?: string | null }) => Record<string, unknown>;
|
|
309
|
+
savePlanReviewStatus: (projectRoot: string, input?: Record<string, unknown>) => Record<string, unknown>;
|
|
310
|
+
addPlanReviewComment: (projectRoot: string, input?: Record<string, unknown>) => Record<string, unknown>;
|
|
311
|
+
updatePlanReviewCommentStatus: (projectRoot: string, input?: Record<string, unknown>) => Record<string, unknown> | null;
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
operational: {
|
|
315
|
+
operationalPaths: (projectRoot: string, activeSession: string | null) => Record<string, string | null>;
|
|
316
|
+
appendEvent: (projectRoot: string, activeSession: string | null, event?: Record<string, unknown>) => Record<string, unknown>;
|
|
317
|
+
readEvents: (projectRoot: string, activeSession: string | null) => Array<Record<string, unknown>>;
|
|
318
|
+
summarizeEvents: (events: Array<Record<string, unknown>>) => Record<string, unknown>;
|
|
319
|
+
writeRunState: (projectRoot: string, activeSession: string | null, runState?: Record<string, unknown>) => Record<string, unknown>;
|
|
320
|
+
readRunState: (projectRoot: string, activeSession: string | null) => Record<string, unknown> | null;
|
|
321
|
+
buildOperationalGraph: (runState?: Record<string, unknown>) => { nodes: Array<Record<string, unknown>>; edges: Array<Record<string, unknown>> };
|
|
322
|
+
applyRuntimeAction: (projectRoot: string, activeSession: string | null, input?: Record<string, unknown>) => Record<string, unknown>;
|
|
323
|
+
parseCapabilityManifest: (text: string) => Record<string, unknown>;
|
|
324
|
+
readCapabilityCatalog: (projectRoot: string) => Array<Record<string, unknown>>;
|
|
325
|
+
buildMemoryLayers: (projectRoot: string, activeSession: string | null) => Record<string, unknown>;
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
azure: {
|
|
329
|
+
MIN_AZURE_CLI_MAJOR: number;
|
|
330
|
+
AZURE_CAPABILITY_IDS: string[];
|
|
331
|
+
RESOURCE_GRAPH_QUERY: string;
|
|
332
|
+
DEFAULT_AZURE_PROFILE: Record<string, unknown>;
|
|
333
|
+
azurePaths: (projectRoot: string) => Record<string, string>;
|
|
334
|
+
ensureAzureArtifacts: (projectRoot: string) => Record<string, string>;
|
|
335
|
+
isAzureContextEnabled: (projectRoot: string, config?: Record<string, unknown>) => boolean;
|
|
336
|
+
detectAzureCli: (projectRoot: string, options?: Record<string, unknown>) => Record<string, unknown>;
|
|
337
|
+
loadAzureProfile: (projectRoot: string) => Record<string, unknown>;
|
|
338
|
+
loadAzureAuthStatus: (projectRoot: string) => Record<string, unknown> | null;
|
|
339
|
+
loadAzureInventory: (projectRoot: string) => Record<string, unknown> | null;
|
|
340
|
+
listAzureOperations: (projectRoot: string) => Array<Record<string, unknown>>;
|
|
341
|
+
summarizeInventory: (items: Array<Record<string, unknown>>) => AzureInventorySummary;
|
|
342
|
+
searchAzureInventory: (projectRoot: string, query: string, filters?: { type?: string; resourceGroup?: string }) => Array<Record<string, unknown>>;
|
|
343
|
+
diffInventory: (previousItems: Array<Record<string, unknown>>, currentItems: Array<Record<string, unknown>>) => { added: Array<Record<string, unknown>>; removed: Array<Record<string, unknown>>; unchanged: number };
|
|
344
|
+
statusAzure: (projectRoot: string, config?: Record<string, unknown>, options?: Record<string, unknown>) => Record<string, unknown>;
|
|
345
|
+
ensureAzureCapabilities: (projectRoot: string) => string[];
|
|
346
|
+
getAzureContext: (projectRoot: string, options?: Record<string, unknown>) => Record<string, unknown>;
|
|
347
|
+
loginAzure: (projectRoot: string, options?: Record<string, unknown>) => Record<string, unknown>;
|
|
348
|
+
setAzureSubscription: (projectRoot: string, subscription: string, options?: Record<string, unknown>) => Record<string, unknown>;
|
|
349
|
+
syncAzureInventory: (projectRoot: string, options?: Record<string, unknown>) => Record<string, unknown>;
|
|
350
|
+
executeAzureRead: (projectRoot: string, activeSession: string | null, domain: string, verb: string, input: Record<string, unknown>, options?: Record<string, unknown>) => unknown;
|
|
351
|
+
planAzureOperation: (projectRoot: string, activeSession: string | null, domain: string, input: Record<string, unknown>, options?: Record<string, unknown>) => Record<string, unknown>;
|
|
352
|
+
applyAzureOperation: (projectRoot: string, activeSession: string | null, domain: string, input: Record<string, unknown>, options?: Record<string, unknown>) => Record<string, unknown>;
|
|
353
|
+
azureDoctor: (projectRoot: string, config?: Record<string, unknown>, options?: Record<string, unknown>) => Record<string, unknown>;
|
|
354
|
+
redactObject: (value: unknown) => unknown;
|
|
355
|
+
};
|
|
356
|
+
|
|
284
357
|
runDoctorChecks: (args: {
|
|
285
358
|
projectRoot: string;
|
|
286
359
|
packageRoot?: string;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"run_id": "oxe-run-YYYYMMDD-001",
|
|
3
|
+
"status": "planned",
|
|
4
|
+
"created_at": "YYYY-MM-DDTHH:mm:ssZ",
|
|
5
|
+
"updated_at": "YYYY-MM-DDTHH:mm:ssZ",
|
|
6
|
+
"plan_ref": "PLAN.md",
|
|
7
|
+
"session_id": null,
|
|
8
|
+
"current_wave": null,
|
|
9
|
+
"cursor": {
|
|
10
|
+
"wave": null,
|
|
11
|
+
"task": null,
|
|
12
|
+
"mode": null
|
|
13
|
+
},
|
|
14
|
+
"active_tasks": [],
|
|
15
|
+
"pending_checkpoints": [],
|
|
16
|
+
"retries": [],
|
|
17
|
+
"failures": [],
|
|
18
|
+
"evidence": [],
|
|
19
|
+
"provider_context": {
|
|
20
|
+
"azure": null
|
|
21
|
+
},
|
|
22
|
+
"graph": {
|
|
23
|
+
"nodes": [],
|
|
24
|
+
"edges": []
|
|
25
|
+
},
|
|
26
|
+
"metrics": {
|
|
27
|
+
"predicted_confidence": null,
|
|
28
|
+
"coverage_ratio": null,
|
|
29
|
+
"retry_count": 0,
|
|
30
|
+
"checkpoint_count": 0
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# OXE — Capabilities Instaladas
|
|
2
|
+
|
|
3
|
+
> Catálogo local de capabilities do projeto. Cada capability vive em `.oxe/capabilities/<id>/`.
|
|
4
|
+
|
|
5
|
+
| ID | Tipo | Status | Escopo | Política | Side effects | Requer env | Evidência | Resumo |
|
|
6
|
+
|----|------|--------|--------|-----------|--------------|------------|-----------|--------|
|
|
7
|
+
| (vazio) | — | — | — | — | — | — | — | Nenhuma capability instalada |
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_capability: true
|
|
3
|
+
id: sample-capability
|
|
4
|
+
version: 1
|
|
5
|
+
type: script
|
|
6
|
+
status: active
|
|
7
|
+
scope: execute
|
|
8
|
+
requires_env: []
|
|
9
|
+
entrypoint: ""
|
|
10
|
+
approval_policy: require_approval_if_external_side_effect
|
|
11
|
+
side_effects: []
|
|
12
|
+
evidence_outputs: []
|
|
13
|
+
session_compatibility: [legacy, session]
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# OXE — Capability
|
|
17
|
+
|
|
18
|
+
## Objetivo
|
|
19
|
+
|
|
20
|
+
- O que esta capability faz.
|
|
21
|
+
|
|
22
|
+
## Escopo OXE
|
|
23
|
+
|
|
24
|
+
- `scan` | `ask` | `research` | `spec` | `plan` | `execute` | `verify`
|
|
25
|
+
|
|
26
|
+
## Operações
|
|
27
|
+
|
|
28
|
+
- Operação 1
|
|
29
|
+
|
|
30
|
+
## Entradas e saídas
|
|
31
|
+
|
|
32
|
+
- Entradas esperadas
|
|
33
|
+
- Saídas produzidas
|
|
34
|
+
|
|
35
|
+
## Requisitos
|
|
36
|
+
|
|
37
|
+
- Variáveis de ambiente
|
|
38
|
+
- Dependências externas
|
|
39
|
+
- Aprovação necessária ou bypass permitido
|
|
40
|
+
|
|
41
|
+
## Evidência e segurança
|
|
42
|
+
|
|
43
|
+
- Como a capability produz evidência útil.
|
|
44
|
+
- Limites e riscos.
|
|
45
|
+
- Side effects possíveis e como são governados.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# OXE — Checkpoints
|
|
2
|
+
|
|
3
|
+
> Índice de checkpoints formais do ciclo atual. Usado para aprovações humanas e gates sensíveis.
|
|
4
|
+
|
|
5
|
+
| ID | Tipo | Fase | Escopo | Estado | Política | Decisão | Override | Criado em | Resolvido em | Notas |
|
|
6
|
+
|----|------|------|--------|--------|----------|---------|----------|-----------|--------------|-------|
|
|
7
|
+
| CP-01 | approval | spec | definição de escopo | pending_approval | require_approval | — | — | YYYY-MM-DD | — | — |
|
package/oxe/templates/CONFIG.md
CHANGED
|
@@ -8,8 +8,9 @@ Copie `oxe/templates/config.template.json` para **`.oxe/config.json`** no seu pr
|
|
|
8
8
|
|-------|------|-------------|
|
|
9
9
|
| `profile` | string | Profile de execução: `balanced` (padrão) \| `strict` \| `fast` \| `legacy`. Expande automaticamente outras keys — keys explícitas prevalecem. Ver tabela abaixo. |
|
|
10
10
|
| `discuss_before_plan` | boolean | Se `true`, o fluxo recomenda **`oxe:discuss`** entre spec e plan. |
|
|
11
|
-
| `verification_depth` | string | Profundidade da verificação: `standard` (padrão) \| `thorough` (ativa Camada 5 — validate-gaps automático) \| `quick` (skip camadas 3–4 e UAT). |
|
|
12
|
-
| `
|
|
11
|
+
| `verification_depth` | string | Profundidade da verificação: `standard` (padrão) \| `thorough` (ativa Camada 5 — validate-gaps automático) \| `quick` (skip camadas 3–4 e UAT). |
|
|
12
|
+
| `plan_confidence_threshold` | number | Limiar mínimo de confiança para o `execute` aceitar um `PLAN.md`. Padrão: `70`. Abaixo disso, o fluxo deve reduzir incerteza antes de implementar. |
|
|
13
|
+
| `security_in_verify` | boolean | Se `true`, executa auditoria OWASP automaticamente no **verify** como **Camada 6** (produz `.oxe/SECURITY.md`). Achados P0 bloqueiam `verify_complete`. Padrão: `false`. |
|
|
13
14
|
| `after_verify_suggest_pr` | boolean | Se `true`, o workflow **verify** inclui checklist de PR no fim. |
|
|
14
15
|
| `after_verify_draft_commit` | boolean | Se `true`, o **verify** propõe rascunho de mensagem de commit alinhado aos critérios de aceite. |
|
|
15
16
|
| `after_verify_suggest_uat` | boolean | Se `true`, o **verify** gera checklist UAT (Camada 4). Ativo automaticamente com `profile: strict`. |
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_doc: execution_runtime
|
|
3
|
+
status: active
|
|
4
|
+
updated: YYYY-MM-DD
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# OXE — Runtime Operacional
|
|
8
|
+
|
|
9
|
+
> Estado tático da execução. Este ficheiro complementa `PLAN.md` e `STATE.md`, mas não os substitui.
|
|
10
|
+
|
|
11
|
+
## Contexto
|
|
12
|
+
|
|
13
|
+
- **Sessão / escopo:** …
|
|
14
|
+
- **Plano vinculado:** `PLAN.md`
|
|
15
|
+
- **Run ID:** `oxe-run-YYYYMMDD-001`
|
|
16
|
+
- **Active run:** `.oxe/ACTIVE-RUN.json` ou artefato equivalente de sessão
|
|
17
|
+
- **Trace log:** `.oxe/OXE-EVENTS.ndjson` ou artefato equivalente de sessão
|
|
18
|
+
- **Autoavaliação do plano:** melhor=`sim|não` | confiança=`NN%`
|
|
19
|
+
- **Limiar de execução:** `70%`
|
|
20
|
+
|
|
21
|
+
## Onda atual
|
|
22
|
+
|
|
23
|
+
- **Onda:** —
|
|
24
|
+
- **Estado:** planned | running | paused | waiting_approval | failed | completed | replaying | aborted
|
|
25
|
+
- **Tarefas ativas:** —
|
|
26
|
+
- **Última atualização:** YYYY-MM-DD
|
|
27
|
+
|
|
28
|
+
## Agentes ativos
|
|
29
|
+
|
|
30
|
+
| ID | Papel | Tarefas | Estado | Último handoff |
|
|
31
|
+
|----|-------|---------|--------|----------------|
|
|
32
|
+
| … | … | T1, T2 | active | — |
|
|
33
|
+
|
|
34
|
+
## Checkpoints
|
|
35
|
+
|
|
36
|
+
| ID | Tipo | Escopo | Estado | Política | Decisão | Evidência |
|
|
37
|
+
|----|------|--------|--------|----------|---------|-----------|
|
|
38
|
+
| CP-01 | approval | Onda 1 | pending_approval | require_approval | — | — |
|
|
39
|
+
|
|
40
|
+
## Handoffs
|
|
41
|
+
|
|
42
|
+
- W1 · `agent-a -> agent-b`: …
|
|
43
|
+
|
|
44
|
+
## Grafo operacional
|
|
45
|
+
|
|
46
|
+
- **Nós:** agent-a, capability-x, checkpoint-CP-01
|
|
47
|
+
- **Arestas:** handoff, dependency, blocked_by
|
|
48
|
+
|
|
49
|
+
## Evidências produzidas
|
|
50
|
+
|
|
51
|
+
- `path/ou/artefato`: resumo curto
|
|
52
|
+
|
|
53
|
+
## Bloqueios
|
|
54
|
+
|
|
55
|
+
- (nenhum ou lista)
|
|
56
|
+
|
|
57
|
+
## Iterações / retries
|
|
58
|
+
|
|
59
|
+
- Tarefa/onda | Tentativa | Resultado | Nota
|
|
60
|
+
|
|
61
|
+
## Tracing operacional
|
|
62
|
+
|
|
63
|
+
- `run_started` → `phase_entered` → `handoff` → `checkpoint_opened` → `checkpoint_resolved` → `verification_completed`
|
|
64
|
+
|
|
65
|
+
## Próximo movimento operacional
|
|
66
|
+
|
|
67
|
+
- **Ação:** …
|
|
68
|
+
- **Motivo:** …
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_doc: investigation
|
|
3
|
+
status: draft
|
|
4
|
+
updated: YYYY-MM-DD
|
|
5
|
+
objective: ""
|
|
6
|
+
mode: surface
|
|
7
|
+
sources: []
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# OXE — Investigação Estruturada
|
|
11
|
+
|
|
12
|
+
## Objetivo
|
|
13
|
+
|
|
14
|
+
- Pergunta principal a responder.
|
|
15
|
+
|
|
16
|
+
## Fontes
|
|
17
|
+
|
|
18
|
+
- Fonte / path / sistema
|
|
19
|
+
|
|
20
|
+
## Método
|
|
21
|
+
|
|
22
|
+
- Como a investigação foi conduzida.
|
|
23
|
+
|
|
24
|
+
## Evidências
|
|
25
|
+
|
|
26
|
+
- Evidência 1
|
|
27
|
+
|
|
28
|
+
## Conclusões
|
|
29
|
+
|
|
30
|
+
- Conclusão 1
|
|
31
|
+
|
|
32
|
+
## Impacto em spec/plan
|
|
33
|
+
|
|
34
|
+
- Como isto altera a SPEC, o plano ou a confiança.
|
|
35
|
+
|
|
36
|
+
## Próximo passo
|
|
37
|
+
|
|
38
|
+
- O que ainda falta validar.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_doc: notes
|
|
3
|
+
updated: YYYY-MM-DD
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OXE — Notes
|
|
7
|
+
|
|
8
|
+
Fila leve de anotações do projeto. Cada bullet é consumido em `/oxe-discuss` ou `/oxe-plan` e depois movido para **Notas incorporadas**.
|
|
9
|
+
|
|
10
|
+
## Notas em aberto
|
|
11
|
+
|
|
12
|
+
- YYYY-MM-DD — (nota aqui)
|
|
13
|
+
|
|
14
|
+
## Notas incorporadas
|
|
15
|
+
|
|
16
|
+
<!-- Notas movidas automaticamente após consumidas pelo discuss ou plan -->
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_doc: plan_review
|
|
3
|
+
status: draft
|
|
4
|
+
updated: YYYY-MM-DD
|
|
5
|
+
plan_ref: PLAN.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# OXE — Revisão do Plano
|
|
9
|
+
|
|
10
|
+
## Estado
|
|
11
|
+
|
|
12
|
+
- **Status:** draft
|
|
13
|
+
- **Atualizado em:** YYYY-MM-DDTHH:mm:ssZ
|
|
14
|
+
- **Origem:** dashboard local ou revisão textual
|
|
15
|
+
|
|
16
|
+
## Decisão
|
|
17
|
+
|
|
18
|
+
- **Resultado:** pendente
|
|
19
|
+
- **Justificativa:** —
|
|
20
|
+
|
|
21
|
+
## Comentários abertos
|
|
22
|
+
|
|
23
|
+
- Nenhum
|
|
24
|
+
|
|
25
|
+
## Comentários resolvidos
|
|
26
|
+
|
|
27
|
+
- Nenhum
|
|
28
|
+
|
|
29
|
+
## Próxima ação recomendada
|
|
30
|
+
|
|
31
|
+
- `/oxe-dashboard` para revisar visualmente, ou `/oxe-plan --replan` se houver ajustes estruturais.
|
|
@@ -14,13 +14,28 @@ inputs: []
|
|
|
14
14
|
|
|
15
15
|
> Gerado a partir de `.oxe/SPEC.md`. Cada tarefa deve ter bloco **Verificar**.
|
|
16
16
|
|
|
17
|
-
## Resumo
|
|
18
|
-
|
|
19
|
-
- **Spec vinculada:** (data ou versão informal)
|
|
20
|
-
- **Ondas:** (número)
|
|
21
|
-
- **Tarefas:** (número)
|
|
22
|
-
|
|
23
|
-
##
|
|
17
|
+
## Resumo
|
|
18
|
+
|
|
19
|
+
- **Spec vinculada:** (data ou versão informal)
|
|
20
|
+
- **Ondas:** (número)
|
|
21
|
+
- **Tarefas:** (número)
|
|
22
|
+
|
|
23
|
+
## Autoavaliação do Plano
|
|
24
|
+
|
|
25
|
+
- **Melhor plano atual:** sim
|
|
26
|
+
- **Confiança:** 80%
|
|
27
|
+
- **Base da confiança:**
|
|
28
|
+
- Completude dos requisitos: 20/25
|
|
29
|
+
- Dependências conhecidas: 12/15
|
|
30
|
+
- Risco técnico: 15/20
|
|
31
|
+
- Impacto no código existente: 12/15
|
|
32
|
+
- Clareza da validação / testes: 13/15
|
|
33
|
+
- Lacunas externas / decisões pendentes: 8/10
|
|
34
|
+
- **Principais incertezas:** (0–3 bullets)
|
|
35
|
+
- **Alternativas descartadas:** (1–2 linhas)
|
|
36
|
+
- **Condição para replanejar:** (critério objetivo)
|
|
37
|
+
|
|
38
|
+
## Dependências globais
|
|
24
39
|
|
|
25
40
|
- (ex.: branch base, feature flags, migrations)
|
|
26
41
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# OXE — Nota de pesquisa
|
|
1
|
+
# OXE — Nota de pesquisa
|
|
2
2
|
|
|
3
3
|
> Um ficheiro por sessão: copie para `.oxe/research/YYYY-MM-DD-<slug-kebab>.md` (data ISO; slug curto e único).
|
|
4
4
|
|
|
@@ -7,9 +7,16 @@
|
|
|
7
7
|
- Ligação à SPEC: objetivo, IDs **A*** tocados (ou *N/A — SPEC ainda não existe* + recomendação de `oxe:spec`).
|
|
8
8
|
- Entrada do utilizador / âmbito (paths, módulos, perguntas).
|
|
9
9
|
|
|
10
|
-
## Perguntas em aberto
|
|
11
|
-
|
|
12
|
-
1. … (critério para considerar “fechado”)
|
|
10
|
+
## Perguntas em aberto
|
|
11
|
+
|
|
12
|
+
1. … (critério para considerar “fechado”)
|
|
13
|
+
|
|
14
|
+
## Investigação estruturada
|
|
15
|
+
|
|
16
|
+
- **Objetivo:** …
|
|
17
|
+
- **Modo:** `surface` | `standard` | `deep`
|
|
18
|
+
- **Fontes:** …
|
|
19
|
+
- **Profundidade:** …
|
|
13
20
|
|
|
14
21
|
## Evidência
|
|
15
22
|
|
|
@@ -19,10 +19,12 @@ inputs: []
|
|
|
19
19
|
|
|
20
20
|
(Uma frase: o que entregar.)
|
|
21
21
|
|
|
22
|
-
## Contexto
|
|
23
|
-
|
|
24
|
-
- Repositório / produto: …
|
|
25
|
-
- Links úteis: …
|
|
22
|
+
## Contexto
|
|
23
|
+
|
|
24
|
+
- Repositório / produto: …
|
|
25
|
+
- Links úteis: …
|
|
26
|
+
- Tipo de demanda: feature | bugfix | refactor | research | ops | mixed
|
|
27
|
+
- Incertezas estruturadas: …
|
|
26
28
|
|
|
27
29
|
## Escopo
|
|
28
30
|
|
package/oxe/templates/STATE.md
CHANGED
|
@@ -20,11 +20,32 @@
|
|
|
20
20
|
- **Notas:** (opcional; ex.: "só STRUCTURE e TESTING")
|
|
21
21
|
- **last_retro:** (YYYY-MM-DD — preenchido por **`/oxe-retro`** ao concluir retrospectiva; lido por `oxe-cc doctor` para rastrear ciclos sem lições)
|
|
22
22
|
|
|
23
|
-
## Contexto do plano / quick (opcional)
|
|
24
|
-
|
|
25
|
-
- **Spec / plano:** (revisão informal ou data de `.oxe/SPEC.md` / `.oxe/PLAN.md`)
|
|
26
|
-
- **Última onda executada:** (número ou —)
|
|
27
|
-
- **Tarefas concluídas:** (ex.: T1, T2 ou passos 1–3 do QUICK.md)
|
|
23
|
+
## Contexto do plano / quick (opcional)
|
|
24
|
+
|
|
25
|
+
- **Spec / plano:** (revisão informal ou data de `.oxe/SPEC.md` / `.oxe/PLAN.md`)
|
|
26
|
+
- **Última onda executada:** (número ou —)
|
|
27
|
+
- **Tarefas concluídas:** (ex.: T1, T2 ou passos 1–3 do QUICK.md)
|
|
28
|
+
|
|
29
|
+
## Checkpoints de aprovação (opcional)
|
|
30
|
+
|
|
31
|
+
- **checkpoint_status:** `pending_approval` | `approved` | `rejected` | `overridden` | —
|
|
32
|
+
- **checkpoint_ref:** `.oxe/CHECKPOINTS.md` ou artefato de sessão correspondente
|
|
33
|
+
- **Notas:** (ex.: aguardando aprovação para Onda 2)
|
|
34
|
+
|
|
35
|
+
## Runtime operacional (opcional)
|
|
36
|
+
|
|
37
|
+
- **runtime_status:** `planned` | `running` | `paused` | `waiting_approval` | `failed` | `completed` | `replaying` | `aborted` | —
|
|
38
|
+
- **runtime_ref:** `.oxe/EXECUTION-RUNTIME.md` ou artefato de sessão correspondente
|
|
39
|
+
- **active_run_ref:** `.oxe/ACTIVE-RUN.json` ou artefato de sessão correspondente
|
|
40
|
+
- **events_ref:** `.oxe/OXE-EVENTS.ndjson` ou artefato de sessão correspondente
|
|
41
|
+
- **Notas:** (agentes ativos, bloqueio principal, handoff pendente)
|
|
42
|
+
|
|
43
|
+
## Revisão do plano (opcional — dashboard / aprovação)
|
|
44
|
+
|
|
45
|
+
- **plan_review_status:** `draft` | `in_review` | `approved` | `rejected` | `needs_revision` | —
|
|
46
|
+
- **plan_review_updated:** (ISO legível — ex.: `2026-04-10T14:22:00-03:00`)
|
|
47
|
+
- **plan_review_ref:** `.oxe/PLAN-REVIEW.md` ou artefato de sessão correspondente
|
|
48
|
+
- **Notas:** (ex.: aprovado para execute; revisão pendente da onda 2)
|
|
28
49
|
|
|
29
50
|
## Blueprint de agentes (sessão) (opcional — `/oxe-plan-agent`)
|
|
30
51
|
|
|
@@ -81,11 +102,28 @@ _(O agente pode preencher após cada onda.)_
|
|
|
81
102
|
|
|
82
103
|
- (nome do workstream ativo — ou — para pipeline principal)
|
|
83
104
|
|
|
84
|
-
## Memory (sidecars de sessão) (opcional — `/oxe-memory`)
|
|
105
|
+
## Memory (sidecars de sessão) (opcional — `/oxe-memory`)
|
|
85
106
|
|
|
86
107
|
Sidecars de memória persistente por agente/sessão. Armazenados em `.oxe/memory/`.
|
|
87
108
|
|
|
88
|
-
- (nenhum ou lista: ex.: `architect-2025-01-15.md`, `researcher-auth-2025-01-14.md`)
|
|
109
|
+
- (nenhum ou lista: ex.: `architect-2025-01-15.md`, `researcher-auth-2025-01-14.md`)
|
|
110
|
+
|
|
111
|
+
## Camadas de memória (contrato)
|
|
112
|
+
|
|
113
|
+
- **memory_read_order:** `runtime_state -> session_memory -> project_memory -> evidence`
|
|
114
|
+
- **session_memory_ref:** `SESSION.md` ou —
|
|
115
|
+
- **project_memory_ref:** `.oxe/global/LESSONS.md`
|
|
116
|
+
- **evidence_ref:** `INVESTIGATIONS.md`, `VERIFY.md` e derivados
|
|
117
|
+
|
|
118
|
+
## Capabilities nativas (opcional)
|
|
119
|
+
|
|
120
|
+
- **capabilities_ref:** `.oxe/CAPABILITIES.md`
|
|
121
|
+
- **Capabilities ativas:** (IDs ou —)
|
|
122
|
+
|
|
123
|
+
## Investigações estruturadas (opcional)
|
|
124
|
+
|
|
125
|
+
- **investigations_ref:** `.oxe/INVESTIGATIONS.md` ou índice de sessão
|
|
126
|
+
- **Última investigação:** (path ou —)
|
|
89
127
|
|
|
90
128
|
## Decisões persistentes
|
|
91
129
|
|