@jmanuelcorral/openteam 0.2.2 → 0.9.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/.opencode/command/openteam.md +2 -1
- package/.opencode/openteam.example.json +27 -8
- package/AGENTS.md +5 -2
- package/README.es.md +155 -59
- package/README.md +418 -62
- package/dist/capabilities/types.d.ts +3 -3
- package/dist/capabilities/types.d.ts.map +1 -1
- package/dist/classifier/localClassifier.d.ts +0 -2
- package/dist/classifier/localClassifier.d.ts.map +1 -1
- package/dist/cli/consoleServe.d.ts +21 -1
- package/dist/cli/consoleServe.d.ts.map +1 -1
- package/dist/cli/graphOperator.d.ts +22 -0
- package/dist/cli/graphOperator.d.ts.map +1 -0
- package/dist/cli/graphStatusSnapshot.d.ts +16 -0
- package/dist/cli/graphStatusSnapshot.d.ts.map +1 -0
- package/dist/cli/migrateAdapter.d.ts +12 -0
- package/dist/cli/migrateAdapter.d.ts.map +1 -0
- package/dist/cli/purgeAdapter.d.ts +10 -0
- package/dist/cli/purgeAdapter.d.ts.map +1 -0
- package/dist/cli/setupAdapters.d.ts.map +1 -1
- package/dist/cli.js +13394 -6121
- package/dist/commands/agents.d.ts +102 -2
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/baseline.d.ts.map +1 -1
- package/dist/commands/clearCache.d.ts +23 -0
- package/dist/commands/clearCache.d.ts.map +1 -0
- package/dist/commands/dispatch.d.ts +196 -4
- package/dist/commands/dispatch.d.ts.map +1 -1
- package/dist/commands/doctor.d.ts +40 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/frontierCatalog.d.ts +8 -14
- package/dist/commands/frontierCatalog.d.ts.map +1 -1
- package/dist/commands/graph.d.ts +0 -27
- package/dist/commands/graph.d.ts.map +1 -1
- package/dist/commands/local.d.ts.map +1 -1
- package/dist/commands/migrate.d.ts +11 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/purge.d.ts +132 -0
- package/dist/commands/purge.d.ts.map +1 -0
- package/dist/commands/report.d.ts +1 -0
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/setup.d.ts +62 -5
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/config/errors.d.ts +10 -0
- package/dist/config/errors.d.ts.map +1 -0
- package/dist/config/legacyMigration.d.ts +82 -0
- package/dist/config/legacyMigration.d.ts.map +1 -0
- package/dist/config/legacyPaths.d.ts +105 -0
- package/dist/config/legacyPaths.d.ts.map +1 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/opencode.d.ts +63 -0
- package/dist/config/opencode.d.ts.map +1 -0
- package/dist/config/persist.d.ts +8 -0
- package/dist/config/persist.d.ts.map +1 -1
- package/dist/config/resolve.d.ts +1 -1
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/runtime.d.ts +62 -0
- package/dist/config/runtime.d.ts.map +1 -0
- package/dist/config/schema.d.ts +142 -79
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/console/assets.d.ts +2 -2
- package/dist/console/assets.d.ts.map +1 -1
- package/dist/console/configView.d.ts +74 -0
- package/dist/console/configView.d.ts.map +1 -0
- package/dist/console/opencodeClient.d.ts +8 -6
- package/dist/console/opencodeClient.d.ts.map +1 -1
- package/dist/console/protocol.d.ts +30 -6
- package/dist/console/protocol.d.ts.map +1 -1
- package/dist/console/render.d.ts +30 -1
- package/dist/console/render.d.ts.map +1 -1
- package/dist/console/types.d.ts +1 -1
- package/dist/console/types.d.ts.map +1 -1
- package/dist/context/redaction.d.ts +19 -19
- package/dist/context/redaction.d.ts.map +1 -1
- package/dist/context/schema.d.ts +26 -26
- package/dist/context/schema.d.ts.map +1 -1
- package/dist/context/types.d.ts +3 -3
- package/dist/contract/opencode.d.ts +39 -23
- package/dist/contract/opencode.d.ts.map +1 -1
- package/dist/graph/certificate.d.ts +37 -16
- package/dist/graph/certificate.d.ts.map +1 -1
- package/dist/graph/langgraph/adapter.d.ts +56 -0
- package/dist/graph/langgraph/adapter.d.ts.map +1 -0
- package/dist/graph/langgraph/certification.d.ts +64 -0
- package/dist/graph/langgraph/certification.d.ts.map +1 -0
- package/dist/graph/langgraph/checkpointReplay.d.ts +49 -0
- package/dist/graph/langgraph/checkpointReplay.d.ts.map +1 -0
- package/dist/graph/langgraph/checkpointer.d.ts +49 -0
- package/dist/graph/langgraph/checkpointer.d.ts.map +1 -0
- package/dist/graph/langgraph/engine.d.ts +34 -0
- package/dist/graph/langgraph/engine.d.ts.map +1 -0
- package/dist/graph/langgraph/graphModel.d.ts +37 -0
- package/dist/graph/langgraph/graphModel.d.ts.map +1 -0
- package/dist/graph/langgraph/reducer.d.ts +18 -0
- package/dist/graph/langgraph/reducer.d.ts.map +1 -0
- package/dist/graph/langgraph/retirement.d.ts +59 -0
- package/dist/graph/langgraph/retirement.d.ts.map +1 -0
- package/dist/graph/langgraph/types.d.ts +65 -0
- package/dist/graph/langgraph/types.d.ts.map +1 -0
- package/dist/graph/privacyPolicy.d.ts +7 -0
- package/dist/graph/privacyPolicy.d.ts.map +1 -1
- package/dist/graph/soakLedger.d.ts.map +1 -1
- package/dist/graph/types.d.ts +0 -2
- package/dist/graph/types.d.ts.map +1 -1
- package/dist/index.d.ts +46 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11083 -5009
- package/dist/local/cacheAdapter.d.ts +7 -0
- package/dist/local/cacheAdapter.d.ts.map +1 -0
- package/dist/local/concurrency.d.ts +52 -0
- package/dist/local/concurrency.d.ts.map +1 -0
- package/dist/local/embeddings.d.ts +10 -10
- package/dist/local/embeddings.d.ts.map +1 -1
- package/dist/local/extractClient.d.ts +13 -10
- package/dist/local/extractClient.d.ts.map +1 -1
- package/dist/local/lemonade.d.ts +4 -0
- package/dist/local/lemonade.d.ts.map +1 -0
- package/dist/local/registry.d.ts +16 -0
- package/dist/local/registry.d.ts.map +1 -1
- package/dist/local/types.d.ts +1 -1
- package/dist/local/types.d.ts.map +1 -1
- package/dist/mcp/semanticRecall.d.ts +18 -1
- package/dist/mcp/semanticRecall.d.ts.map +1 -1
- package/dist/mcp/server.d.ts +41 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/memory/embedText.d.ts +4 -0
- package/dist/memory/embedText.d.ts.map +1 -0
- package/dist/memory/extract.d.ts +33 -18
- package/dist/memory/extract.d.ts.map +1 -1
- package/dist/memory/fold.d.ts +3 -2
- package/dist/memory/fold.d.ts.map +1 -1
- package/dist/memory/index.d.ts +1 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/inject.d.ts.map +1 -1
- package/dist/memory/log.d.ts +15 -4
- package/dist/memory/log.d.ts.map +1 -1
- package/dist/memory/merge.d.ts +18 -1
- package/dist/memory/merge.d.ts.map +1 -1
- package/dist/memory/traverse.d.ts +80 -0
- package/dist/memory/traverse.d.ts.map +1 -0
- package/dist/memory/types.d.ts +53 -7
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/messages/commands.d.ts +84 -0
- package/dist/messages/commands.d.ts.map +1 -0
- package/dist/messages/index.d.ts +46 -0
- package/dist/messages/index.d.ts.map +1 -0
- package/dist/opencodeArtifacts/index.d.ts +33 -0
- package/dist/opencodeArtifacts/index.d.ts.map +1 -0
- package/dist/opencodeArtifacts/orchestratorAgent.d.ts +29 -0
- package/dist/opencodeArtifacts/orchestratorAgent.d.ts.map +1 -0
- package/dist/opencodeArtifacts/slashCommand.d.ts +31 -0
- package/dist/opencodeArtifacts/slashCommand.d.ts.map +1 -0
- package/dist/orchestrator/coordinator.d.ts +152 -1
- package/dist/orchestrator/coordinator.d.ts.map +1 -1
- package/dist/orchestrator/graphCancellation.d.ts +40 -37
- package/dist/orchestrator/graphCancellation.d.ts.map +1 -1
- package/dist/orchestrator/graphEffects.d.ts +24 -24
- package/dist/orchestrator/graphEffects.d.ts.map +1 -1
- package/dist/orchestrator/graphFacade.d.ts +16 -16
- package/dist/orchestrator/graphFacade.d.ts.map +1 -1
- package/dist/orchestrator/graphIngress.d.ts +49 -45
- package/dist/orchestrator/graphIngress.d.ts.map +1 -1
- package/dist/orchestrator/graphReview.d.ts +24 -23
- package/dist/orchestrator/graphReview.d.ts.map +1 -1
- package/dist/orchestrator/graphRuntime.d.ts +27 -26
- package/dist/orchestrator/graphRuntime.d.ts.map +1 -1
- package/dist/orchestrator/graphShadow.d.ts +70 -69
- package/dist/orchestrator/graphShadow.d.ts.map +1 -1
- package/dist/orchestrator/opencodeSessionAdapter.d.ts +25 -25
- package/dist/orchestrator/opencodeSessionAdapter.d.ts.map +1 -1
- package/dist/orchestrator/permissions.d.ts.map +1 -1
- package/dist/orchestrator/ralphLoop.d.ts +57 -0
- package/dist/orchestrator/ralphLoop.d.ts.map +1 -0
- package/dist/orchestrator/roles.d.ts +50 -8
- package/dist/orchestrator/roles.d.ts.map +1 -1
- package/dist/orchestrator/roster.d.ts +103 -0
- package/dist/orchestrator/roster.d.ts.map +1 -0
- package/dist/orchestrator/rosterPersistence.d.ts +22 -0
- package/dist/orchestrator/rosterPersistence.d.ts.map +1 -0
- package/dist/orchestrator/runtimeSelection.d.ts +46 -0
- package/dist/orchestrator/runtimeSelection.d.ts.map +1 -0
- package/dist/orchestrator/sddCompiler.d.ts +34 -34
- package/dist/orchestrator/sddCompiler.d.ts.map +1 -1
- package/dist/orchestrator/sessionReconciler.d.ts +31 -29
- package/dist/orchestrator/sessionReconciler.d.ts.map +1 -1
- package/dist/orchestrator/shadowComparator.d.ts +23 -23
- package/dist/orchestrator/shadowComparator.d.ts.map +1 -1
- package/dist/orchestrator/subsessions.d.ts.map +1 -1
- package/dist/orchestrator/worktreeAdapter.d.ts +12 -12
- package/dist/orchestrator/worktreeAdapter.d.ts.map +1 -1
- package/dist/orchestrator/worktreeDispatch.d.ts +34 -34
- package/dist/orchestrator/worktreeDispatch.d.ts.map +1 -1
- package/dist/orchestrator/worktreeReconciler.d.ts +37 -36
- package/dist/orchestrator/worktreeReconciler.d.ts.map +1 -1
- package/dist/plugin/availability.d.ts.map +1 -1
- package/dist/plugin/capture.d.ts +12 -12
- package/dist/plugin/capture.d.ts.map +1 -1
- package/dist/plugin/commandTool.d.ts +1 -1
- package/dist/plugin/commandTool.d.ts.map +1 -1
- package/dist/plugin/graphShadowIngress.d.ts +50 -48
- package/dist/plugin/graphShadowIngress.d.ts.map +1 -1
- package/dist/plugin/graphTool.d.ts +25 -23
- package/dist/plugin/graphTool.d.ts.map +1 -1
- package/dist/plugin/hooks.d.ts +10 -10
- package/dist/plugin/hooks.d.ts.map +1 -1
- package/dist/plugin/legacyRunProducer.d.ts +22 -22
- package/dist/plugin/legacyRunProducer.d.ts.map +1 -1
- package/dist/plugin/memoryInject.d.ts +6 -6
- package/dist/plugin/memoryInject.d.ts.map +1 -1
- package/dist/plugin/memoryTool.d.ts +36 -0
- package/dist/plugin/memoryTool.d.ts.map +1 -0
- package/dist/plugin/orchestrateTool.d.ts +35 -2
- package/dist/plugin/orchestrateTool.d.ts.map +1 -1
- package/dist/plugin/reportRunSchema.d.ts +8 -8
- package/dist/plugin/reportRunSchema.d.ts.map +1 -1
- package/dist/plugin/sessionTracker.d.ts +15 -15
- package/dist/plugin/sessionTracker.d.ts.map +1 -1
- package/dist/plugin/shadowPipeline.d.ts +2 -1
- package/dist/plugin/shadowPipeline.d.ts.map +1 -1
- package/dist/plugin/soakObserver.d.ts +18 -11
- package/dist/plugin/soakObserver.d.ts.map +1 -1
- package/dist/plugin/toolcalls.d.ts +3 -3
- package/dist/router/chooseModel.d.ts.map +1 -1
- package/dist/router/frontierBaseline.d.ts +3 -3
- package/dist/router/modelSelection.d.ts +12 -4
- package/dist/router/modelSelection.d.ts.map +1 -1
- package/dist/router/types.d.ts +6 -1
- package/dist/router/types.d.ts.map +1 -1
- package/dist/storage/graph/snapshot.d.ts.map +1 -1
- package/dist/storage/graph/soakRecorder.d.ts +14 -1
- package/dist/storage/graph/soakRecorder.d.ts.map +1 -1
- package/dist/storage/graph/workspaceLease.d.ts +1 -1
- package/dist/storage/graph/workspaceLease.d.ts.map +1 -1
- package/dist/storage/graph/worktreeRegistry.d.ts +1 -1
- package/dist/storage/graph/worktreeRegistry.d.ts.map +1 -1
- package/dist/storage/httpStorageProvider.d.ts +2 -2
- package/dist/storage/index/bunSqlite.d.ts +1 -0
- package/dist/storage/index/bunSqlite.d.ts.map +1 -1
- package/dist/storage/index/memoryConsolidate.d.ts +2 -0
- package/dist/storage/index/memoryConsolidate.d.ts.map +1 -1
- package/dist/storage/index/memoryEmbeddings.d.ts +51 -0
- package/dist/storage/index/memoryEmbeddings.d.ts.map +1 -0
- package/dist/storage/index/memoryIndex.d.ts +36 -4
- package/dist/storage/index/memoryIndex.d.ts.map +1 -1
- package/dist/storage/index/memoryRecall.d.ts +1 -1
- package/dist/storage/index/memoryRecall.d.ts.map +1 -1
- package/dist/storage/index/memoryRuntime.d.ts +2 -0
- package/dist/storage/index/memoryRuntime.d.ts.map +1 -1
- package/dist/storage/index/sqliteIndex.d.ts +18 -1
- package/dist/storage/index/sqliteIndex.d.ts.map +1 -1
- package/dist/storage/path.d.ts.map +1 -1
- package/dist/telemetry/aggregate.d.ts +12 -12
- package/dist/telemetry/aggregate.d.ts.map +1 -1
- package/dist/telemetry/cost.d.ts.map +1 -1
- package/dist/telemetry/decisions.d.ts +11 -11
- package/dist/telemetry/decisions.d.ts.map +1 -1
- package/dist/telemetry/eventLog.d.ts +41 -25
- package/dist/telemetry/eventLog.d.ts.map +1 -1
- package/dist/telemetry/events.d.ts +44 -36
- package/dist/telemetry/events.d.ts.map +1 -1
- package/dist/telemetry/fanout.d.ts +18 -0
- package/dist/telemetry/fanout.d.ts.map +1 -0
- package/dist/telemetry/graphProjection.d.ts +12 -12
- package/dist/telemetry/graphProjection.d.ts.map +1 -1
- package/dist/telemetry/graphRuntimeHealth.d.ts +26 -26
- package/dist/telemetry/graphRuntimeHealth.d.ts.map +1 -1
- package/dist/telemetry/graphView.d.ts +20 -20
- package/dist/telemetry/graphView.d.ts.map +1 -1
- package/dist/telemetry/otel.d.ts +86 -0
- package/dist/telemetry/otel.d.ts.map +1 -0
- package/dist/telemetry/otelConfig.d.ts +128 -0
- package/dist/telemetry/otelConfig.d.ts.map +1 -0
- package/dist/telemetry/otelExporter.d.ts +7 -0
- package/dist/telemetry/otelExporter.d.ts.map +1 -0
- package/dist/telemetry/read.d.ts +18 -4
- package/dist/telemetry/read.d.ts.map +1 -1
- package/dist/telemetry/types.d.ts +3 -2
- package/dist/telemetry/types.d.ts.map +1 -1
- package/dist/web/configApi.d.ts +154 -0
- package/dist/web/configApi.d.ts.map +1 -0
- package/dist/web/configRoute.d.ts +57 -0
- package/dist/web/configRoute.d.ts.map +1 -0
- package/dist/web/console.d.ts +8 -0
- package/dist/web/console.d.ts.map +1 -1
- package/dist/web/paths.d.ts +4 -3
- package/dist/web/paths.d.ts.map +1 -1
- package/dist/web/server.d.ts +30 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/start.d.ts +15 -0
- package/dist/web/start.d.ts.map +1 -1
- package/dist/web/storageRoute.d.ts +2 -2
- package/package.json +13 -7
- package/dist/cli/tunnel.d.ts +0 -89
- package/dist/cli/tunnel.d.ts.map +0 -1
- package/dist/commands/orchestratorAgent.d.ts +0 -30
- package/dist/commands/orchestratorAgent.d.ts.map +0 -1
- package/dist/commands/slashCommand.d.ts +0 -39
- package/dist/commands/slashCommand.d.ts.map +0 -1
- package/dist/orchestrator/ledger.d.ts +0 -28
- package/dist/orchestrator/ledger.d.ts.map +0 -1
- package/dist/storage/graph/importLegacy.d.ts +0 -62
- package/dist/storage/graph/importLegacy.d.ts.map +0 -1
- package/dist/storage/graph/migration.d.ts +0 -91
- package/dist/storage/graph/migration.d.ts.map +0 -1
- package/dist/storage/graph/projections.d.ts +0 -31
- package/dist/storage/graph/projections.d.ts.map +0 -1
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* **Shadow parity** comparator and idempotent projection tally (GE-044).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* **
|
|
6
|
-
* fixes
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* Compares a legacy run with its side-effect-free shadow mirror over
|
|
5
|
+
* **normalized** dimensions: terminal state, node order, roles, models, number
|
|
6
|
+
* of fixes, and outcome. Lack of evidence on either side is `inconclusive`.
|
|
7
|
+
* The report is **reference-only**: only codes and verdict, never raw content.
|
|
8
|
+
* The projection tally is **idempotent** per run: a duplicate projection is not
|
|
9
|
+
* counted again.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
11
|
+
* Pure and deterministic: no I/O, clock, random, or global state.
|
|
12
12
|
*/
|
|
13
|
-
/**
|
|
13
|
+
/** Normalized role of a run node. */
|
|
14
14
|
export type ShadowNodeRole = "implementer" | "reviewer";
|
|
15
|
-
/**
|
|
15
|
+
/** Normalized terminal status of a run. */
|
|
16
16
|
export type ShadowRunStatus = "completed" | "failed" | "cancelled";
|
|
17
|
-
/**
|
|
17
|
+
/** Normalized outcome of a run review. */
|
|
18
18
|
export type ShadowRunOutcome = "approved" | "rejected" | "inconclusive";
|
|
19
|
-
/**
|
|
19
|
+
/** Normalized node summary (only references/bounded labels). */
|
|
20
20
|
export type ShadowNodeSummary = {
|
|
21
21
|
readonly id: string;
|
|
22
22
|
readonly role: ShadowNodeRole;
|
|
23
23
|
readonly model: string;
|
|
24
24
|
};
|
|
25
|
-
/**
|
|
25
|
+
/** Normalized run summary, suitable for comparing parity. */
|
|
26
26
|
export type ShadowRunSummary = {
|
|
27
27
|
readonly runID: string;
|
|
28
28
|
readonly status: ShadowRunStatus;
|
|
@@ -30,33 +30,33 @@ export type ShadowRunSummary = {
|
|
|
30
30
|
readonly fixes: number;
|
|
31
31
|
readonly nodes: readonly ShadowNodeSummary[];
|
|
32
32
|
};
|
|
33
|
-
/**
|
|
33
|
+
/** Dimension in which legacy and shadow diverge. */
|
|
34
34
|
export type ShadowDivergenceCode = "status" | "order" | "roles" | "models" | "fixes" | "outcome";
|
|
35
|
-
/**
|
|
35
|
+
/** Parity verdict. */
|
|
36
36
|
export type ShadowParityVerdict = "match" | "divergent" | "inconclusive";
|
|
37
|
-
/**
|
|
37
|
+
/** Reference-only report of shadow parity. */
|
|
38
38
|
export type ShadowParityReport = {
|
|
39
39
|
readonly verdict: ShadowParityVerdict;
|
|
40
40
|
readonly divergences: readonly ShadowDivergenceCode[];
|
|
41
41
|
};
|
|
42
42
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
43
|
+
* Compares parity between the legacy run and its shadow mirror. If evidence is
|
|
44
|
+
* missing on either side, the verdict is `inconclusive`. Otherwise it reports
|
|
45
|
+
* the divergent dimensions deterministically.
|
|
46
46
|
*/
|
|
47
47
|
export declare function compareShadowRun(legacy: ShadowRunSummary | undefined, shadow: ShadowRunSummary | undefined): ShadowParityReport;
|
|
48
|
-
/**
|
|
48
|
+
/** Idempotent accumulator of parity verdicts per run. */
|
|
49
49
|
export type ShadowParityTally = {
|
|
50
50
|
readonly seen: ReadonlySet<string>;
|
|
51
51
|
readonly match: number;
|
|
52
52
|
readonly divergent: number;
|
|
53
53
|
readonly inconclusive: number;
|
|
54
54
|
};
|
|
55
|
-
/**
|
|
55
|
+
/** Empty tally. */
|
|
56
56
|
export declare function emptyShadowTally(): ShadowParityTally;
|
|
57
57
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
58
|
+
* Projects a verdict into the tally. **Idempotent per run**: if the `runID` has
|
|
59
|
+
* already been counted, it returns the tally unchanged (no double counting).
|
|
60
60
|
*/
|
|
61
61
|
export declare function tallyShadowParity(tally: ShadowParityTally, runID: string, report: ShadowParityReport): ShadowParityTally;
|
|
62
62
|
//# sourceMappingURL=shadowComparator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shadowComparator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/shadowComparator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,
|
|
1
|
+
{"version":3,"file":"shadowComparator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/shadowComparator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,qCAAqC;AACrC,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,UAAU,CAAC;AAExD,2CAA2C;AAC3C,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEnE,0CAA0C;AAC1C,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,GAAG,cAAc,CAAC;AAExE,gEAAgE;AAChE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC9C,CAAC;AAEF,oDAAoD;AACpD,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,GACR,OAAO,GACP,OAAO,GACP,QAAQ,GACR,OAAO,GACP,SAAS,CAAC;AAEd,sBAAsB;AACtB,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,WAAW,GAAG,cAAc,CAAC;AAEzE,8CAA8C;AAC9C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACvD,CAAC;AASF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,MAAM,EAAE,gBAAgB,GAAG,SAAS,GACnC,kBAAkB,CA4CpB;AAED,yDAAyD;AACzD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,mBAAmB;AACnB,wBAAgB,gBAAgB,IAAI,iBAAiB,CAEpD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,kBAAkB,GACzB,iBAAiB,CAanB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subsessions.d.ts","sourceRoot":"","sources":["../../src/orchestrator/subsessions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,IAAI,EAAE;QACJ,KAAK,CAAC,EAAE,cAAc,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC9C,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE;QACP,MAAM,EAAE,CACN,IAAI,EAAE,yBAAyB,KAC5B,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAA;aAAE,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACzD,MAAM,EAAE,CACN,IAAI,EAAE,yBAAyB,KAC5B,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KACnD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,cAAc,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;
|
|
1
|
+
{"version":3,"file":"subsessions.d.ts","sourceRoot":"","sources":["../../src/orchestrator/subsessions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,IAAI,EAAE;QACJ,KAAK,CAAC,EAAE,cAAc,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC9C,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE;QACP,MAAM,EAAE,CACN,IAAI,EAAE,yBAAyB,KAC5B,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAA;aAAE,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACzD,MAAM,EAAE,CACN,IAAI,EAAE,yBAAyB,KAC5B,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KACnD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,cAAc,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAiQF,wBAAsB,aAAa,CACjC,MAAM,EAAE,qBAAqB,EAC7B,GAAG,EAAE,iBAAiB,EACtB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAuE3B"}
|
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
import type { ExecLike } from "../local/foundry-local";
|
|
2
|
-
/**
|
|
2
|
+
/** Closed taxonomy of worktree adapter errors. */
|
|
3
3
|
export type WorktreeErrorCode = "invalid-run" | "git-failed" | "corrupt-list";
|
|
4
|
-
/**
|
|
4
|
+
/** Typed error for an invalid worktree lifecycle operation. */
|
|
5
5
|
export declare class WorktreeError extends Error {
|
|
6
6
|
readonly code: WorktreeErrorCode;
|
|
7
7
|
readonly detail: string;
|
|
8
8
|
constructor(code: WorktreeErrorCode, detail: string);
|
|
9
9
|
}
|
|
10
|
-
/**
|
|
10
|
+
/** Observed information for a worktree in the openteam namespace. */
|
|
11
11
|
export type WorktreeInfo = {
|
|
12
12
|
readonly runID: string;
|
|
13
|
-
/**
|
|
13
|
+
/** Path reported by git (separators `/`, usable by `node:fs`). */
|
|
14
14
|
readonly path: string;
|
|
15
15
|
readonly head: string | undefined;
|
|
16
16
|
readonly detached: boolean;
|
|
17
17
|
readonly locked: boolean;
|
|
18
18
|
};
|
|
19
|
-
/**
|
|
19
|
+
/** Injected adapter configuration. */
|
|
20
20
|
export type WorktreeAdapterConfig = {
|
|
21
21
|
readonly exec: ExecLike;
|
|
22
|
-
/**
|
|
22
|
+
/** Main working tree of the repository (target for `git -C`). */
|
|
23
23
|
readonly repoRoot: string;
|
|
24
|
-
/**
|
|
24
|
+
/** Root directory of the per-run worktree namespace. */
|
|
25
25
|
readonly worktreesDir: string;
|
|
26
26
|
};
|
|
27
|
-
/**
|
|
27
|
+
/** Contract for the idempotent and crash-safe worktree lifecycle. */
|
|
28
28
|
export interface WorktreeAdapter {
|
|
29
|
-
/**
|
|
29
|
+
/** Creates (or adopts) the run's worktree; rebuilds after a crash. */
|
|
30
30
|
create(runID: string): Promise<WorktreeInfo>;
|
|
31
|
-
/**
|
|
31
|
+
/** Lists worktrees in the openteam namespace. */
|
|
32
32
|
list(): Promise<WorktreeInfo[]>;
|
|
33
|
-
/**
|
|
33
|
+
/** Removes the run's worktree (idempotent). */
|
|
34
34
|
remove(runID: string): Promise<void>;
|
|
35
|
-
/**
|
|
35
|
+
/** Prunes orphaned administrative entries (idempotent). */
|
|
36
36
|
prune(): Promise<void>;
|
|
37
37
|
}
|
|
38
38
|
export declare function createWorktreeAdapter(config: WorktreeAdapterConfig): WorktreeAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktreeAdapter.d.ts","sourceRoot":"","sources":["../../src/orchestrator/worktreeAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAqCvD,
|
|
1
|
+
{"version":3,"file":"worktreeAdapter.d.ts","sourceRoot":"","sources":["../../src/orchestrator/worktreeAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAqCvD,kDAAkD;AAClD,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,YAAY,GAAG,cAAc,CAAC;AAE9E,+DAA+D;AAC/D,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAKlD;CACF;AAED,qEAAqE;AACrE,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,sCAAsC;AACtC,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7C,iDAAiD;IACjD,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAChC,+CAA+C;IAC/C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,2DAA2D;IAC3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAuFD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,GAC5B,eAAe,CA8IjB"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import type { WorktreeBinding } from "../storage/graph/worktreeRegistry";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Dispatch seam to the run's worktree (GE-073, D-W3).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* `PluginInput.directory`/`worktree` (GE-005).
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* Decides, for a Graph runtime effect, the `directory` used to create the
|
|
6
|
+
* child sub-session (`query.directory`) and verifies the correlation of the
|
|
7
|
+
* `PluginInput.directory`/`worktree` contract (GE-005). It is pure and
|
|
8
|
+
* deterministic logic: no I/O, SDK, clock, or global state; the worktree
|
|
9
|
+
* health probe and the registry lookup (GE-072) are done by the caller, which
|
|
10
|
+
* provides their results as data.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
* (`graph.worktrees.enabled` = `false`,
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
12
|
+
* UX-neutrality invariant: with isolation **disabled**
|
|
13
|
+
* (`graph.worktrees.enabled` = `false`, the default), the resolved directory is
|
|
14
|
+
* exactly the current workspace, so dispatch is identical to today's behavior.
|
|
15
|
+
* With isolation enabled, a healthy worktree bound to the run is required, and
|
|
16
|
+
* it fails closed (`WorktreeDispatchError`) if the binding is missing, the
|
|
17
|
+
* directory disappeared (`missing`), or it is dirty (`unclean`). No live path
|
|
18
|
+
* calls this seam yet; the executor integration will consume it.
|
|
19
19
|
*/
|
|
20
|
-
/**
|
|
20
|
+
/** Observed health of a run's worktree (result of the caller's probe). */
|
|
21
21
|
export type WorktreeHealth = "ready" | "missing" | "unclean";
|
|
22
|
-
/**
|
|
22
|
+
/** Dispatch state with respect to the run's per-worktree isolation. */
|
|
23
23
|
export type WorktreeDispatchState = {
|
|
24
24
|
readonly kind: "disabled";
|
|
25
25
|
} | {
|
|
@@ -34,33 +34,33 @@ export type WorktreeDispatchState = {
|
|
|
34
34
|
readonly kind: "ready";
|
|
35
35
|
readonly worktreePath: string;
|
|
36
36
|
};
|
|
37
|
-
/**
|
|
37
|
+
/** Closed taxonomy of failures when binding dispatch to a worktree. */
|
|
38
38
|
export type WorktreeDispatchErrorCode = "unbound" | "missing" | "unclean" | "mismatch";
|
|
39
|
-
/**
|
|
39
|
+
/** Typed error for a dispatch that cannot be bound to a healthy worktree. */
|
|
40
40
|
export declare class WorktreeDispatchError extends Error {
|
|
41
41
|
readonly code: WorktreeDispatchErrorCode;
|
|
42
42
|
readonly detail: string;
|
|
43
43
|
constructor(code: WorktreeDispatchErrorCode, detail: string);
|
|
44
44
|
}
|
|
45
|
-
/**
|
|
45
|
+
/** Effective dispatch directory for an effect. */
|
|
46
46
|
export type DispatchDirectory = {
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
49
|
-
* (
|
|
48
|
+
* Directory to pass as `query.directory`. `undefined` = workspace root
|
|
49
|
+
* (current behavior when isolation is disabled).
|
|
50
50
|
*/
|
|
51
51
|
readonly directory: string | undefined;
|
|
52
|
-
/**
|
|
52
|
+
/** Correlated worktree; `undefined` except with active isolation. */
|
|
53
53
|
readonly worktree: string | undefined;
|
|
54
54
|
};
|
|
55
|
-
/**
|
|
55
|
+
/** Observed correlation of a sub-session's `PluginInput` contract. */
|
|
56
56
|
export type ObservedWorktreeCorrelation = {
|
|
57
57
|
readonly directory: string;
|
|
58
58
|
readonly worktree: string;
|
|
59
59
|
};
|
|
60
60
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
61
|
+
* Combines the isolation flag, the registry binding (GE-072), and observed
|
|
62
|
+
* worktree health into a dispatch state. Fails closed by default: absent or
|
|
63
|
+
* unknown health is treated as `missing`.
|
|
64
64
|
*/
|
|
65
65
|
export declare function worktreeDispatchState(input: {
|
|
66
66
|
readonly enabled: boolean;
|
|
@@ -68,17 +68,17 @@ export declare function worktreeDispatchState(input: {
|
|
|
68
68
|
readonly health: WorktreeHealth | undefined;
|
|
69
69
|
}): WorktreeDispatchState;
|
|
70
70
|
/**
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
71
|
+
* Resolves the effective dispatch directory. With isolation disabled, returns
|
|
72
|
+
* the `workspaceDirectory` unchanged (identical to the current behavior); with
|
|
73
|
+
* a healthy worktree, returns its path as `directory` and `worktree`; in any
|
|
74
|
+
* other state, fails closed with `WorktreeDispatchError`.
|
|
75
75
|
*/
|
|
76
76
|
export declare function resolveDispatchDirectory(state: WorktreeDispatchState, workspaceDirectory: string | undefined): DispatchDirectory;
|
|
77
77
|
/**
|
|
78
|
-
*
|
|
79
|
-
* `directory`/`worktree`
|
|
80
|
-
* worktree
|
|
81
|
-
*
|
|
78
|
+
* Verifies the correlation of the `PluginInput` contract (GE-005): the
|
|
79
|
+
* sub-session's observed `directory`/`worktree` must match the run's leased
|
|
80
|
+
* worktree. Throws `WorktreeDispatchError("mismatch")` if either differs;
|
|
81
|
+
* platform-normalized path comparison.
|
|
82
82
|
*/
|
|
83
83
|
export declare function assertWorktreeCorrelation(observed: ObservedWorktreeCorrelation, leasedWorktree: string): void;
|
|
84
84
|
//# sourceMappingURL=worktreeDispatch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktreeDispatch.d.ts","sourceRoot":"","sources":["../../src/orchestrator/worktreeDispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEzE;;;;;;;;;;;;;;;;;GAiBG;AAEH,
|
|
1
|
+
{"version":3,"file":"worktreeDispatch.d.ts","sourceRoot":"","sources":["../../src/orchestrator/worktreeDispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEzE;;;;;;;;;;;;;;;;;GAiBG;AAEH,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7D,uEAAuE;AACvE,MAAM,MAAM,qBAAqB,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,uEAAuE;AACvE,MAAM,MAAM,yBAAyB,GACjC,SAAS,GACT,SAAS,GACT,SAAS,GACT,UAAU,CAAC;AAEf,6EAA6E;AAC7E,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM,EAK1D;CACF;AAED,kDAAkD;AAClD,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,sEAAsE;AACtE,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAUF;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;CAC7C,GAAG,qBAAqB,CAgBxB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,qBAAqB,EAC5B,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC,iBAAiB,CAanB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,2BAA2B,EACrC,cAAc,EAAE,MAAM,GACrB,IAAI,CAaN"}
|
|
@@ -1,61 +1,62 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Orphaned worktree reconciler after a crash (GE-074, D-W4).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* `src/commands/graph.ts`):
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* wiring
|
|
4
|
+
* It follows the same dry-run contract as the operator commands (GE-045,
|
|
5
|
+
* `src/commands/graph.ts`): it is **pure and deterministic logic** that
|
|
6
|
+
* receives an already-observed snapshot (worktrees listed by the GE-071
|
|
7
|
+
* adapter, which runs remain active according to the GE-025 run registry, and
|
|
8
|
+
* the merge-back state probed by the caller) and decides, without executing
|
|
9
|
+
* anything, which action is safe for each worktree. Actual execution
|
|
10
|
+
* (`prune`/merge-back) lives in the wiring layer and only runs when the plan
|
|
11
|
+
* authorizes it.
|
|
11
12
|
*
|
|
12
|
-
*
|
|
13
|
-
* - **
|
|
14
|
-
* - **
|
|
15
|
-
* - **
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* - **
|
|
13
|
+
* Reconciliation policy:
|
|
14
|
+
* - **Active run** → `retain`: never touch a worktree whose run is still alive.
|
|
15
|
+
* - **Clean orphan with no commits** → `prune`: safe and reported removal.
|
|
16
|
+
* - **Clean orphan with commits** → `merge-back`: explicit and idempotent;
|
|
17
|
+
* never silently discards the run branch. A second pass, when the branch is
|
|
18
|
+
* already integrated (`alreadyMerged`), plans `prune` instead of merging
|
|
19
|
+
* again.
|
|
20
|
+
* - **Dirty or ambiguous** → `block`: stop for an operator decision.
|
|
20
21
|
*
|
|
21
|
-
*
|
|
22
|
-
* (
|
|
23
|
-
*
|
|
22
|
+
* UX-neutrality invariant (D-W4): with `graph.worktrees.enabled` = `false`
|
|
23
|
+
* (the default), the reconciler is a **no-op** — it returns an empty report,
|
|
24
|
+
* and plans, creates, or prunes no worktree. No live path calls it yet.
|
|
24
25
|
*/
|
|
25
|
-
/**
|
|
26
|
+
/** Observed merge-back state of a worktree (the caller's git probe). */
|
|
26
27
|
export type WorktreeMergeState = "clean-empty" | "clean-ahead" | "dirty";
|
|
27
|
-
/**
|
|
28
|
+
/** Observed snapshot of a worktree candidate for reconciliation. */
|
|
28
29
|
export type WorktreeObservation = {
|
|
29
30
|
readonly runID: string;
|
|
30
31
|
readonly path: string;
|
|
31
|
-
/**
|
|
32
|
+
/** The run is still active according to the run registry (valid lease). */
|
|
32
33
|
readonly runActive: boolean;
|
|
33
|
-
/**
|
|
34
|
+
/** Observed merge-back state. */
|
|
34
35
|
readonly mergeState: WorktreeMergeState;
|
|
35
36
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
37
|
+
* Only relevant with `mergeState: "clean-ahead"`: the run branch is already
|
|
38
|
+
* integrated into the base, so reconciliation is idempotent and can prune
|
|
39
|
+
* instead of merging again.
|
|
39
40
|
*/
|
|
40
41
|
readonly alreadyMerged?: boolean;
|
|
41
42
|
};
|
|
42
|
-
/**
|
|
43
|
+
/** Planned action for a worktree, decided without executing it. */
|
|
43
44
|
export type WorktreeReconcileAction = "retain" | "prune" | "merge-back" | "block";
|
|
44
|
-
/**
|
|
45
|
+
/** Reconciliation plan for a specific worktree. */
|
|
45
46
|
export type WorktreeReconcilePlan = {
|
|
46
47
|
readonly runID: string;
|
|
47
48
|
readonly path: string;
|
|
48
49
|
readonly action: WorktreeReconcileAction;
|
|
49
|
-
/**
|
|
50
|
+
/** Stable, machine-readable reason for the decision. */
|
|
50
51
|
readonly reason: string;
|
|
51
|
-
/** `true`
|
|
52
|
+
/** `true` when the action preserves invariants without an operator override. */
|
|
52
53
|
readonly safe: boolean;
|
|
53
54
|
};
|
|
54
|
-
/**
|
|
55
|
+
/** Aggregate reconciliation report. */
|
|
55
56
|
export type WorktreeReconcileReport = {
|
|
56
|
-
/**
|
|
57
|
+
/** State of the isolation flag at reconciliation time. */
|
|
57
58
|
readonly enabled: boolean;
|
|
58
|
-
/** Plan
|
|
59
|
+
/** Plan per worktree, in observed order. */
|
|
59
60
|
readonly plans: readonly WorktreeReconcilePlan[];
|
|
60
61
|
readonly retained: number;
|
|
61
62
|
readonly pruned: number;
|
|
@@ -63,9 +64,9 @@ export type WorktreeReconcileReport = {
|
|
|
63
64
|
readonly blocked: number;
|
|
64
65
|
};
|
|
65
66
|
/**
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
67
|
+
* Plans reconciliation for a set of observed worktrees. With isolation
|
|
68
|
+
* disabled, returns an empty report (no-op). Pure: does not execute git or
|
|
69
|
+
* touch I/O.
|
|
69
70
|
*/
|
|
70
71
|
export declare function planWorktreeReconciliation(input: {
|
|
71
72
|
readonly enabled: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktreeReconciler.d.ts","sourceRoot":"","sources":["../../src/orchestrator/worktreeReconciler.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"worktreeReconciler.d.ts","sourceRoot":"","sources":["../../src/orchestrator/worktreeReconciler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,wEAAwE;AACxE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,aAAa,GAAG,OAAO,CAAC;AAEzE,oEAAoE;AACpE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,uBAAuB,GAC/B,QAAQ,GACR,OAAO,GACP,YAAY,GACZ,OAAO,CAAC;AAEZ,mDAAmD;AACnD,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,uCAAuC;AACvC,MAAM,MAAM,uBAAuB,GAAG;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAkCF;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACpD,GAAG,uBAAuB,CAwB1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"availability.d.ts","sourceRoot":"","sources":["../../src/plugin/availability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,iBAAiB,CAAC;AAEtE,MAAM,MAAM,oBAAoB,GAAG,MAAM,cAAc,EAAE,CAAC;AAE1D,KAAK,aAAa,GAAG;IACnB,KAAK,CACH,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,GAC5C,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,IAAI,cAAc,EAAE,CAAC;IACxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3C,CAAC;
|
|
1
|
+
{"version":3,"file":"availability.d.ts","sourceRoot":"","sources":["../../src/plugin/availability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,iBAAiB,CAAC;AAEtE,MAAM,MAAM,oBAAoB,GAAG,MAAM,cAAc,EAAE,CAAC;AAE1D,KAAK,aAAa,GAAG;IACnB,KAAK,CACH,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,GAC5C,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,IAAI,cAAc,EAAE,CAAC;IACxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3C,CAAC;AAiFF,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,oBAAoB,EAAE,EACjC,MAAM,EAAE,cAAc,GACrB,cAAc,EAAE,CAkClB;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,wBAAwB,GAChC,iBAAiB,CAyBnB"}
|
package/dist/plugin/capture.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type ActivityEvent, type MessageEvent, type SessionEndpointEvent } from "../telemetry/events";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* **Pure** mapping of opencode events to redacted `OpenTeamEvent`s. No I/O,
|
|
4
|
+
* network, clock (`now` is injected), randomness, or env vars.
|
|
5
5
|
*/
|
|
6
|
-
/**
|
|
6
|
+
/** Minimal structural shape of an opencode `AssistantMessage`. */
|
|
7
7
|
export type AssistantInfoLike = {
|
|
8
8
|
role?: string;
|
|
9
9
|
sessionID?: string;
|
|
@@ -27,15 +27,15 @@ export type AssistantInfoLike = {
|
|
|
27
27
|
};
|
|
28
28
|
};
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
31
|
-
* (
|
|
32
|
-
*
|
|
30
|
+
* Builds a `message` event from a **completed** assistant message
|
|
31
|
+
* (real cost and tokens). Returns `undefined` if the message is not from the assistant,
|
|
32
|
+
* has not finished, or is missing session/model.
|
|
33
33
|
*/
|
|
34
34
|
export declare function messageEventFrom(info: AssistantInfoLike, now: () => number): MessageEvent | undefined;
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
36
|
+
* Builds a `session-endpoint` event to announce the opencode server for a
|
|
37
|
+
* session. `url` is normalized to only the **origin** (`protocol//host:port`): never
|
|
38
|
+
* paths, query strings, or credentials. Returns `undefined` if `url` is not parseable.
|
|
39
39
|
*/
|
|
40
40
|
export declare function sessionEndpointEventFrom(sessionID: string, url: string | URL, now: () => number, meta?: {
|
|
41
41
|
directory?: string;
|
|
@@ -48,9 +48,9 @@ type OpencodeEventLike = {
|
|
|
48
48
|
};
|
|
49
49
|
export declare function sessionIDFromEvent(event: OpencodeEventLike): string | undefined;
|
|
50
50
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* `undefined`
|
|
51
|
+
* Builds a redacted `activity` event (only the event type, never
|
|
52
|
+
* content) from a session lifecycle event. Returns
|
|
53
|
+
* `undefined` outside the allow-list or if `sessionID` is missing.
|
|
54
54
|
*/
|
|
55
55
|
export declare function activityEventFrom(event: OpencodeEventLike, now: () => number): ActivityEvent | undefined;
|
|
56
56
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/plugin/capture.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AAEH,
|
|
1
|
+
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/plugin/capture.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AAEH,kEAAkE;AAClE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC3C,CAAC;CACH,CAAC;AAMF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,iBAAiB,EACvB,GAAG,EAAE,MAAM,MAAM,GAChB,YAAY,GAAG,SAAS,CA0C1B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,GAAG,EAAE,MAAM,MAAM,EACjB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACnE,oBAAoB,GAAG,SAAS,CA4BlC;AAQD,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,iBAAiB,GACvB,MAAM,GAAG,SAAS,CAgBpB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,MAAM,MAAM,GAChB,aAAa,GAAG,SAAS,CAiB3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ToolDefinition } from "@opencode-ai/plugin";
|
|
2
2
|
import { type CliDeps } from "../commands/dispatch";
|
|
3
|
-
export type CommandAction = "show" | "set" | "auto" | "doctor" | "report" | "agents" | "console";
|
|
3
|
+
export type CommandAction = "show" | "set" | "auto" | "doctor" | "report" | "agents" | "console" | "clear-cache";
|
|
4
4
|
/**
|
|
5
5
|
* Map a tool action (+ optional model) to the argv understood by {@link runCli}.
|
|
6
6
|
* Pure so it can be unit-tested without the opencode runtime.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandTool.d.ts","sourceRoot":"","sources":["../../src/plugin/commandTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAQ,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,sBAAsB,CAAC;AAE5D,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,KAAK,GACL,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"commandTool.d.ts","sourceRoot":"","sources":["../../src/plugin/commandTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAQ,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,sBAAsB,CAAC;AAE5D,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,KAAK,GACL,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,aAAa,CAAC;AAElB;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB3E;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CA2B/D"}
|