mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-09-09 11:21:50 +02:00
Renaming the second workspace was the mechanism, not the news: what matters is that this document already produced a workspace, so importing it here copies it instead of updating it. The plan says that outright, names the workspace, and does it on key overlap rather than on the name — so it holds after either side has been renamed, and stays quiet when the import is merging into that very workspace. Plan notes carry a level so the ones worth a second thought read as cautions, and the destination row gets its "new" chip back. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
108 lines
2.7 KiB
TypeScript
Generated
108 lines
2.7 KiB
TypeScript
Generated
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
|
import type {
|
|
Environment,
|
|
Folder,
|
|
GrpcRequest,
|
|
HttpRequest,
|
|
WebsocketRequest,
|
|
Workspace,
|
|
} from "./gen_models";
|
|
|
|
export type BatchUpsertResult = {
|
|
workspaces: Array<Workspace>;
|
|
environments: Array<Environment>;
|
|
folders: Array<Folder>;
|
|
httpRequests: Array<HttpRequest>;
|
|
grpcRequests: Array<GrpcRequest>;
|
|
websocketRequests: Array<WebsocketRequest>;
|
|
};
|
|
|
|
export type ImportConflictResolution = "keep_mine" | "take_source";
|
|
|
|
/**
|
|
* Where a staged import will be committed.
|
|
*
|
|
* The destination workspace and optional folder IDs are captured in the plan so the preview describes
|
|
* the exact destination that confirmation will use.
|
|
*/
|
|
export type ImportDestination =
|
|
| { type: "new_workspace" }
|
|
| { type: "existing_workspace"; workspaceId: string; folderId?: string };
|
|
|
|
/**
|
|
* Where an import's contents came from, used to link the committed workspace back to it.
|
|
*/
|
|
export type ImportOrigin = {
|
|
/**
|
|
* The absolute file path or URL the contents were read from.
|
|
*/
|
|
origin: string;
|
|
label: string;
|
|
};
|
|
|
|
export type ImportPlan = {
|
|
importer: string;
|
|
destination: ImportDestination;
|
|
resources: BatchUpsertResult;
|
|
warnings: Array<ImportPlanWarning>;
|
|
/**
|
|
* Stable source key for every model in `resources`, keyed by its planned ID.
|
|
*/
|
|
sourceKeys: { [key in string]?: string };
|
|
/**
|
|
* One entry per plannable resource; commit applies only the selected ones.
|
|
*/
|
|
items: Array<ImportPlanItem>;
|
|
origin?: ImportOrigin;
|
|
};
|
|
|
|
export type ImportPlanAction =
|
|
| "create"
|
|
| "update"
|
|
| "delete"
|
|
| "unchanged"
|
|
| "keep_local"
|
|
| "conflict"
|
|
| "ignored";
|
|
|
|
export type ImportPlanItem = {
|
|
action: ImportPlanAction;
|
|
model: ImportResourceType;
|
|
modelId: string;
|
|
name: string;
|
|
/**
|
|
* Planned parent folder ID for incoming resources; current parent for deletions.
|
|
*/
|
|
parentId?: string;
|
|
selected: boolean;
|
|
resolution?: ImportConflictResolution;
|
|
reason?: ImportPlanReason;
|
|
/**
|
|
* Fields where the source and the local copy disagree, so the preview can say why
|
|
*/
|
|
changedFields: Array<string>;
|
|
};
|
|
|
|
/**
|
|
* Extra context for an action that would otherwise be indistinguishable from its plain form.
|
|
*/
|
|
export type ImportPlanReason = "moved_into_ignored_folder";
|
|
|
|
export type ImportPlanWarning = { title: string; detail: string; level: ImportPlanWarningLevel };
|
|
|
|
/**
|
|
* Whether a plan's note is something to know or something to think twice about.
|
|
*/
|
|
export type ImportPlanWarningLevel = "info" | "warning";
|
|
|
|
/**
|
|
* The model types an import plan can contain.
|
|
*/
|
|
export type ImportResourceType =
|
|
| "environment"
|
|
| "folder"
|
|
| "grpc_request"
|
|
| "http_request"
|
|
| "websocket_request"
|
|
| "workspace";
|