@cerbur/clutch-dsh-worktree 0.1.5 → 0.1.7
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/README.md +167 -24
- package/README.zh.md +141 -19
- package/cordis.patch.yml +21 -0
- package/lib/client/WorktreeContext.d.ts.map +1 -1
- package/lib/client/WorktreeContext.js +2 -2
- package/lib/client/WorktreeContext.js.map +1 -1
- package/lib/client/WorktreeHeroContext.d.ts +1 -1
- package/lib/client/WorktreeHeroContext.js +1 -1
- package/lib/client/WorktreeSurface.d.ts +2 -2
- package/lib/client/WorktreeSurface.d.ts.map +1 -1
- package/lib/client/WorktreeSurface.js +592 -124
- package/lib/client/WorktreeSurface.js.map +1 -1
- package/lib/client/entry.d.ts.map +1 -1
- package/lib/client/entry.js +87 -2
- package/lib/client/entry.js.map +1 -1
- package/lib/client/index.d.ts +3 -0
- package/lib/client/index.d.ts.map +1 -1
- package/lib/client/index.js +2 -0
- package/lib/client/index.js.map +1 -1
- package/lib/client/locales.d.ts +82 -0
- package/lib/client/locales.d.ts.map +1 -1
- package/lib/client/locales.js +84 -2
- package/lib/client/locales.js.map +1 -1
- package/lib/client/session-view.d.ts +34 -0
- package/lib/client/session-view.d.ts.map +1 -1
- package/lib/client/session-view.js +119 -1
- package/lib/client/session-view.js.map +1 -1
- package/lib/client/virtual-workspace-membership.js +1 -1
- package/lib/client/virtual-workspace-membership.js.map +1 -1
- package/lib/client/worktree-connection.d.ts +6 -2
- package/lib/client/worktree-connection.d.ts.map +1 -1
- package/lib/client/worktree-connection.js +8 -0
- package/lib/client/worktree-connection.js.map +1 -1
- package/lib/client/worktree-error-copy.d.ts +2 -0
- package/lib/client/worktree-error-copy.d.ts.map +1 -1
- package/lib/client/worktree-error-copy.js +22 -0
- package/lib/client/worktree-error-copy.js.map +1 -1
- package/lib/client/worktree-expand-state.d.ts +33 -0
- package/lib/client/worktree-expand-state.d.ts.map +1 -0
- package/lib/client/worktree-expand-state.js +83 -0
- package/lib/client/worktree-expand-state.js.map +1 -0
- package/lib/client/worktree-permission-icon.d.ts +7 -0
- package/lib/client/worktree-permission-icon.d.ts.map +1 -0
- package/lib/client/worktree-permission-icon.js +119 -0
- package/lib/client/worktree-permission-icon.js.map +1 -0
- package/lib/client/worktree-permission.d.ts +21 -0
- package/lib/client/worktree-permission.d.ts.map +1 -0
- package/lib/client/worktree-permission.js +70 -0
- package/lib/client/worktree-permission.js.map +1 -0
- package/lib/client/worktree-session-fork.d.ts +65 -0
- package/lib/client/worktree-session-fork.d.ts.map +1 -0
- package/lib/client/worktree-session-fork.js +174 -0
- package/lib/client/worktree-session-fork.js.map +1 -0
- package/lib/client/worktree-session-order.d.ts +36 -0
- package/lib/client/worktree-session-order.d.ts.map +1 -0
- package/lib/client/worktree-session-order.js +215 -0
- package/lib/client/worktree-session-order.js.map +1 -0
- package/lib/client/worktree-session-position.d.ts +2 -0
- package/lib/client/worktree-session-position.d.ts.map +1 -0
- package/lib/client/worktree-session-position.js +11 -0
- package/lib/client/worktree-session-position.js.map +1 -0
- package/lib/client/worktree-session.d.ts +34 -1
- package/lib/client/worktree-session.d.ts.map +1 -1
- package/lib/client/worktree-session.js +98 -2
- package/lib/client/worktree-session.js.map +1 -1
- package/lib/client/worktree-surface-dialogs.d.ts +1 -1
- package/lib/client/worktree-surface-dialogs.d.ts.map +1 -1
- package/lib/client/worktree-surface-dialogs.js +30 -13
- package/lib/client/worktree-surface-dialogs.js.map +1 -1
- package/lib/client/worktree-surface-rows.d.ts +4 -4
- package/lib/client/worktree-surface-rows.d.ts.map +1 -1
- package/lib/client/worktree-surface-rows.js +132 -47
- package/lib/client/worktree-surface-rows.js.map +1 -1
- package/lib/client/worktree-surface-selectors.d.ts +18 -0
- package/lib/client/worktree-surface-selectors.d.ts.map +1 -1
- package/lib/client/worktree-surface-selectors.js +62 -0
- package/lib/client/worktree-surface-selectors.js.map +1 -1
- package/lib/client/worktree-surface-types.d.ts +73 -3
- package/lib/client/worktree-surface-types.d.ts.map +1 -1
- package/lib/client/worktree-view-actions.d.ts +11 -3
- package/lib/client/worktree-view-actions.d.ts.map +1 -1
- package/lib/client/worktree-view-actions.js +31 -2
- package/lib/client/worktree-view-actions.js.map +1 -1
- package/lib/client/worktree-view-errors.d.ts +10 -0
- package/lib/client/worktree-view-errors.d.ts.map +1 -1
- package/lib/client/worktree-view-errors.js +22 -1
- package/lib/client/worktree-view-errors.js.map +1 -1
- package/lib/client/worktree-view-read.d.ts +8 -0
- package/lib/client/worktree-view-read.d.ts.map +1 -1
- package/lib/client/worktree-view-read.js +19 -0
- package/lib/client/worktree-view-read.js.map +1 -1
- package/lib/client.js +2047 -264
- package/lib/client.js.map +1 -1
- package/lib/contract/index.contract.js +16 -0
- package/lib/contract/index.contract.js.map +1 -1
- package/lib/contract/index.d.ts +26 -2
- package/lib/contract/index.d.ts.map +1 -1
- package/lib/contract/index.js +8 -0
- package/lib/contract/index.js.map +1 -1
- package/lib/contract/worktree-permission.d.ts +73 -0
- package/lib/contract/worktree-permission.d.ts.map +1 -0
- package/lib/contract/worktree-permission.js +32 -0
- package/lib/contract/worktree-permission.js.map +1 -0
- package/lib/host/index.d.ts +4 -0
- package/lib/host/index.d.ts.map +1 -1
- package/lib/host/index.js +2 -0
- package/lib/host/index.js.map +1 -1
- package/lib/host/remote.d.ts +2 -2
- package/lib/host/remote.d.ts.map +1 -1
- package/lib/host/remote.js +9 -1
- package/lib/host/remote.js.map +1 -1
- package/lib/host/service.d.ts +10 -1
- package/lib/host/service.d.ts.map +1 -1
- package/lib/host/service.js +48 -2
- package/lib/host/service.js.map +1 -1
- package/lib/host/worktree-permission-manager.d.ts +14 -0
- package/lib/host/worktree-permission-manager.d.ts.map +1 -0
- package/lib/host/worktree-permission-manager.js +111 -0
- package/lib/host/worktree-permission-manager.js.map +1 -0
- package/lib/host/worktree-permission.d.ts +38 -0
- package/lib/host/worktree-permission.d.ts.map +1 -0
- package/lib/host/worktree-permission.js +156 -0
- package/lib/host/worktree-permission.js.map +1 -0
- package/lib/index.d.ts +4 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/manage/manager-support.d.ts +2 -0
- package/lib/manage/manager-support.d.ts.map +1 -1
- package/lib/manage/manager-support.js +9 -0
- package/lib/manage/manager-support.js.map +1 -1
- package/lib/manage/manager-worktrees.d.ts +10 -1
- package/lib/manage/manager-worktrees.d.ts.map +1 -1
- package/lib/manage/manager-worktrees.js +121 -5
- package/lib/manage/manager-worktrees.js.map +1 -1
- package/lib/manage/manager.d.ts +8 -1
- package/lib/manage/manager.d.ts.map +1 -1
- package/lib/manage/manager.js +7 -1
- package/lib/manage/manager.js.map +1 -1
- package/lib/manage/worktree-permission.d.ts +3 -0
- package/lib/manage/worktree-permission.d.ts.map +1 -0
- package/lib/manage/worktree-permission.js +3 -0
- package/lib/manage/worktree-permission.js.map +1 -0
- package/lib/provider/git.d.ts +2 -0
- package/lib/provider/git.d.ts.map +1 -1
- package/lib/provider/git.js +23 -1
- package/lib/provider/git.js.map +1 -1
- package/lib/provider/index.d.ts +1 -1
- package/lib/provider/index.d.ts.map +1 -1
- package/lib/provider/index.js +1 -1
- package/lib/provider/index.js.map +1 -1
- package/lib/provider/sidecar-schema.d.ts +1 -1
- package/lib/provider/sidecar-schema.d.ts.map +1 -1
- package/lib/provider/sidecar-schema.js +33 -37
- package/lib/provider/sidecar-schema.js.map +1 -1
- package/lib/provider/sidecar.d.ts.map +1 -1
- package/lib/provider/sidecar.js +3 -1
- package/lib/provider/sidecar.js.map +1 -1
- package/lib/provider/types.d.ts +9 -1
- package/lib/provider/types.d.ts.map +1 -1
- package/lib/provider/types.js +2 -1
- package/lib/provider/types.js.map +1 -1
- package/lib/typert.host.js +214 -21
- package/lib/typert.remote-client.d.ts +9 -1
- package/lib/typert.remote-client.d.ts.map +1 -1
- package/lib/typert.remote-client.js +214 -21
- package/package.json +30 -30
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { createSnapshotStore as runtimeCreateSnapshotStore, SnapshotStore } from '@deepseek-ai/dsh-client-runtime/client';
|
|
2
|
+
/** Browser-only persistence key; this state never crosses the DSH or sidecar boundary. */
|
|
3
|
+
export declare const WORKTREE_SESSION_ORDER_STORAGE_KEY = "clutch-dsh-worktree.session-order";
|
|
4
|
+
export interface SessionOrderAccountState {
|
|
5
|
+
order: string[];
|
|
6
|
+
observedUpdatedAt: Record<string, number>;
|
|
7
|
+
}
|
|
8
|
+
export interface WorktreeSessionOrderState {
|
|
9
|
+
accounts: Record<string, SessionOrderAccountState>;
|
|
10
|
+
}
|
|
11
|
+
export interface WorktreeSessionOrderActions {
|
|
12
|
+
reconcile: (accountKey: string, baseIds: readonly string[], updatedAtById: Readonly<Record<string, number | undefined>>) => void;
|
|
13
|
+
setOrder: (accountKey: string, order: readonly string[]) => void;
|
|
14
|
+
retain: (accountKeys: readonly string[]) => void;
|
|
15
|
+
}
|
|
16
|
+
export interface WorktreeSessionOrderStore extends SnapshotStore<WorktreeSessionOrderState> {
|
|
17
|
+
readonly actions: WorktreeSessionOrderActions;
|
|
18
|
+
readonly dispose: () => void;
|
|
19
|
+
}
|
|
20
|
+
export type SnapshotStoreFactory = typeof runtimeCreateSnapshotStore;
|
|
21
|
+
/** Normalize persisted state without trusting any browser-local JSON shape. */
|
|
22
|
+
export declare function normalizeWorktreeSessionOrderState(value: unknown): WorktreeSessionOrderState;
|
|
23
|
+
/**
|
|
24
|
+
* Native-style activity order transition. The first observation records timestamps
|
|
25
|
+
* without turning an existing list into a recency sort.
|
|
26
|
+
*/
|
|
27
|
+
export declare function nextSessionOrderAccount(input: {
|
|
28
|
+
readonly baseIds: readonly string[];
|
|
29
|
+
readonly updatedAtById: Readonly<Record<string, number | undefined>>;
|
|
30
|
+
readonly previous?: Readonly<SessionOrderAccountState>;
|
|
31
|
+
}): SessionOrderAccountState;
|
|
32
|
+
/** Apply a successful manual drag without dropping IDs hidden by search. */
|
|
33
|
+
export declare function reorderSessionIds(order: readonly string[], sessionId: string, overSessionId: string, half: 'before' | 'after'): string[];
|
|
34
|
+
/** Create one apply-scoped, browser-local Session ordering store. */
|
|
35
|
+
export declare function createWorktreeSessionOrderStore(snapshotStoreFactory: SnapshotStoreFactory): WorktreeSessionOrderStore;
|
|
36
|
+
//# sourceMappingURL=worktree-session-order.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-session-order.d.ts","sourceRoot":"","sources":["../../src/client/worktree-session-order.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,IAAI,0BAA0B,EACjD,aAAa,EACd,MAAM,wCAAwC,CAAC;AAEhD,0FAA0F;AAC1F,eAAO,MAAM,kCAAkC,sCAAsC,CAAC;AAEtF,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,CACT,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,KACxD,IAAI,CAAC;IACV,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;IACjE,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,yBAA0B,SAAQ,aAAa,CAAC,yBAAyB,CAAC;IACzF,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,MAAM,MAAM,oBAAoB,GAAG,OAAO,0BAA0B,CAAC;AAuCrE,+EAA+E;AAC/E,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,OAAO,GAAG,yBAAyB,CAS5F;AA6BD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAAC;CACxD,GAAG,wBAAwB,CA4D3B;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,QAAQ,GAAG,OAAO,GACvB,MAAM,EAAE,CAMV;AASD,qEAAqE;AACrE,wBAAgB,+BAA+B,CAC7C,oBAAoB,EAAE,oBAAoB,GACzC,yBAAyB,CAyD3B"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/** Browser-only persistence key; this state never crosses the DSH or sidecar boundary. */
|
|
2
|
+
export const WORKTREE_SESSION_ORDER_STORAGE_KEY = 'clutch-dsh-worktree.session-order';
|
|
3
|
+
function emptyState() {
|
|
4
|
+
return { accounts: {} };
|
|
5
|
+
}
|
|
6
|
+
function isRecord(value) {
|
|
7
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
8
|
+
}
|
|
9
|
+
function isValidTimestamp(value) {
|
|
10
|
+
return typeof value === 'number' && Number.isFinite(value);
|
|
11
|
+
}
|
|
12
|
+
function normalizeIds(value) {
|
|
13
|
+
if (!Array.isArray(value))
|
|
14
|
+
return [];
|
|
15
|
+
const seen = new Set();
|
|
16
|
+
const ids = [];
|
|
17
|
+
for (const id of value) {
|
|
18
|
+
if (typeof id !== 'string' || id.length === 0 || seen.has(id))
|
|
19
|
+
continue;
|
|
20
|
+
seen.add(id);
|
|
21
|
+
ids.push(id);
|
|
22
|
+
}
|
|
23
|
+
return ids;
|
|
24
|
+
}
|
|
25
|
+
function normalizeAccount(value) {
|
|
26
|
+
if (!isRecord(value))
|
|
27
|
+
return undefined;
|
|
28
|
+
const order = normalizeIds(value.order);
|
|
29
|
+
const allowed = new Set(order);
|
|
30
|
+
const observedUpdatedAt = {};
|
|
31
|
+
if (isRecord(value.observedUpdatedAt)) {
|
|
32
|
+
for (const [id, timestamp] of Object.entries(value.observedUpdatedAt)) {
|
|
33
|
+
if (allowed.has(id) && isValidTimestamp(timestamp))
|
|
34
|
+
observedUpdatedAt[id] = timestamp;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return { order, observedUpdatedAt };
|
|
38
|
+
}
|
|
39
|
+
/** Normalize persisted state without trusting any browser-local JSON shape. */
|
|
40
|
+
export function normalizeWorktreeSessionOrderState(value) {
|
|
41
|
+
if (!isRecord(value) || !isRecord(value.accounts))
|
|
42
|
+
return emptyState();
|
|
43
|
+
const accounts = {};
|
|
44
|
+
for (const [accountKey, account] of Object.entries(value.accounts)) {
|
|
45
|
+
if (accountKey.length === 0)
|
|
46
|
+
continue;
|
|
47
|
+
const normalized = normalizeAccount(account);
|
|
48
|
+
if (normalized !== undefined)
|
|
49
|
+
accounts[accountKey] = normalized;
|
|
50
|
+
}
|
|
51
|
+
return { accounts };
|
|
52
|
+
}
|
|
53
|
+
function validIds(ids) {
|
|
54
|
+
return normalizeIds([...ids]);
|
|
55
|
+
}
|
|
56
|
+
function sameRecord(left, right) {
|
|
57
|
+
if (left === undefined)
|
|
58
|
+
return false;
|
|
59
|
+
const leftKeys = Object.keys(left);
|
|
60
|
+
const rightKeys = Object.keys(right);
|
|
61
|
+
if (leftKeys.length !== rightKeys.length)
|
|
62
|
+
return false;
|
|
63
|
+
return rightKeys.every((key) => left[key] === right[key]);
|
|
64
|
+
}
|
|
65
|
+
function sameAccount(left, right) {
|
|
66
|
+
return (left !== undefined &&
|
|
67
|
+
left.order.length === right.order.length &&
|
|
68
|
+
left.order.every((id, index) => id === right.order[index]) &&
|
|
69
|
+
sameRecord(left.observedUpdatedAt, right.observedUpdatedAt));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Native-style activity order transition. The first observation records timestamps
|
|
73
|
+
* without turning an existing list into a recency sort.
|
|
74
|
+
*/
|
|
75
|
+
export function nextSessionOrderAccount(input) {
|
|
76
|
+
const baseIds = validIds(input.baseIds);
|
|
77
|
+
const previous = input.previous;
|
|
78
|
+
if (previous === undefined) {
|
|
79
|
+
const observedUpdatedAt = {};
|
|
80
|
+
for (const id of baseIds) {
|
|
81
|
+
const timestamp = input.updatedAtById[id];
|
|
82
|
+
if (isValidTimestamp(timestamp))
|
|
83
|
+
observedUpdatedAt[id] = timestamp;
|
|
84
|
+
}
|
|
85
|
+
return { order: baseIds, observedUpdatedAt };
|
|
86
|
+
}
|
|
87
|
+
const available = new Set(baseIds);
|
|
88
|
+
const order = [];
|
|
89
|
+
const seen = new Set();
|
|
90
|
+
for (const id of previous.order) {
|
|
91
|
+
if (available.has(id) && !seen.has(id)) {
|
|
92
|
+
seen.add(id);
|
|
93
|
+
order.push(id);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
for (const id of baseIds) {
|
|
97
|
+
if (!seen.has(id)) {
|
|
98
|
+
seen.add(id);
|
|
99
|
+
order.push(id);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const observedUpdatedAt = {};
|
|
103
|
+
const previousIds = new Set(previous.order);
|
|
104
|
+
const newlyObserved = [];
|
|
105
|
+
const promoted = [];
|
|
106
|
+
for (const [index, id] of order.entries()) {
|
|
107
|
+
if (!previousIds.has(id))
|
|
108
|
+
newlyObserved.push(id);
|
|
109
|
+
const previousTimestamp = previous.observedUpdatedAt[id];
|
|
110
|
+
const timestamp = input.updatedAtById[id];
|
|
111
|
+
if (isValidTimestamp(previousTimestamp))
|
|
112
|
+
observedUpdatedAt[id] = previousTimestamp;
|
|
113
|
+
if (isValidTimestamp(timestamp)) {
|
|
114
|
+
if (!isValidTimestamp(previousTimestamp) || timestamp > previousTimestamp) {
|
|
115
|
+
if (isValidTimestamp(previousTimestamp)) {
|
|
116
|
+
promoted.push({ id, timestamp, index });
|
|
117
|
+
}
|
|
118
|
+
observedUpdatedAt[id] = Math.max(observedUpdatedAt[id] ?? timestamp, timestamp);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
promoted.sort((left, right) => right.timestamp - left.timestamp || left.index - right.index);
|
|
123
|
+
const promotedIds = new Set([
|
|
124
|
+
...newlyObserved,
|
|
125
|
+
...promoted.map(({ id }) => id),
|
|
126
|
+
]);
|
|
127
|
+
return {
|
|
128
|
+
order: [
|
|
129
|
+
...newlyObserved,
|
|
130
|
+
...promoted.map(({ id }) => id),
|
|
131
|
+
...order.filter((id) => !promotedIds.has(id)),
|
|
132
|
+
],
|
|
133
|
+
observedUpdatedAt,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/** Apply a successful manual drag without dropping IDs hidden by search. */
|
|
137
|
+
export function reorderSessionIds(order, sessionId, overSessionId, half) {
|
|
138
|
+
const next = order.filter((id) => id !== sessionId);
|
|
139
|
+
const targetIndex = next.indexOf(overSessionId);
|
|
140
|
+
if (targetIndex === -1)
|
|
141
|
+
return [...order];
|
|
142
|
+
next.splice(half === 'before' ? targetIndex : targetIndex + 1, 0, sessionId);
|
|
143
|
+
return next;
|
|
144
|
+
}
|
|
145
|
+
function cloneAccount(account) {
|
|
146
|
+
return {
|
|
147
|
+
order: [...account.order],
|
|
148
|
+
observedUpdatedAt: { ...account.observedUpdatedAt },
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/** Create one apply-scoped, browser-local Session ordering store. */
|
|
152
|
+
export function createWorktreeSessionOrderStore(snapshotStoreFactory) {
|
|
153
|
+
let store;
|
|
154
|
+
try {
|
|
155
|
+
store = snapshotStoreFactory(emptyState(), {
|
|
156
|
+
persist: { name: WORKTREE_SESSION_ORDER_STORAGE_KEY },
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
store = snapshotStoreFactory(emptyState());
|
|
161
|
+
}
|
|
162
|
+
store.set(normalizeWorktreeSessionOrderState(store.getSnapshot()));
|
|
163
|
+
let disposed = false;
|
|
164
|
+
const actions = {
|
|
165
|
+
reconcile: (accountKey, baseIds, updatedAtById) => {
|
|
166
|
+
if (disposed || accountKey.length === 0)
|
|
167
|
+
return;
|
|
168
|
+
store.update((draft) => {
|
|
169
|
+
const next = nextSessionOrderAccount({
|
|
170
|
+
baseIds,
|
|
171
|
+
updatedAtById,
|
|
172
|
+
previous: draft.accounts[accountKey],
|
|
173
|
+
});
|
|
174
|
+
if (sameAccount(draft.accounts[accountKey], next))
|
|
175
|
+
return;
|
|
176
|
+
draft.accounts[accountKey] = cloneAccount(next);
|
|
177
|
+
});
|
|
178
|
+
},
|
|
179
|
+
setOrder: (accountKey, order) => {
|
|
180
|
+
if (disposed || accountKey.length === 0)
|
|
181
|
+
return;
|
|
182
|
+
store.update((draft) => {
|
|
183
|
+
const current = draft.accounts[accountKey] ?? {
|
|
184
|
+
order: [],
|
|
185
|
+
observedUpdatedAt: {},
|
|
186
|
+
};
|
|
187
|
+
const next = {
|
|
188
|
+
order: validIds(order),
|
|
189
|
+
observedUpdatedAt: { ...current.observedUpdatedAt },
|
|
190
|
+
};
|
|
191
|
+
if (sameAccount(current, next))
|
|
192
|
+
return;
|
|
193
|
+
draft.accounts[accountKey] = next;
|
|
194
|
+
});
|
|
195
|
+
},
|
|
196
|
+
retain: (accountKeys) => {
|
|
197
|
+
if (disposed)
|
|
198
|
+
return;
|
|
199
|
+
store.update((draft) => {
|
|
200
|
+
const allowed = new Set(accountKeys);
|
|
201
|
+
for (const accountKey of Object.keys(draft.accounts)) {
|
|
202
|
+
if (!allowed.has(accountKey))
|
|
203
|
+
delete draft.accounts[accountKey];
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
return Object.assign(store, {
|
|
209
|
+
actions,
|
|
210
|
+
dispose: () => {
|
|
211
|
+
disposed = true;
|
|
212
|
+
},
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=worktree-session-order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-session-order.js","sourceRoot":"","sources":["../../src/client/worktree-session-order.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-session-position.d.ts","sourceRoot":"","sources":["../../src/client/worktree-session-position.ts"],"names":[],"mappings":"AAAA,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,UAAU,GAAG,IAAI,EACvB,SAAS,EAAE,MAAM,GAChB,OAAO,CAOT"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function scrollCurrentSessionIntoView(root, sessionId) {
|
|
2
|
+
if (root === null)
|
|
3
|
+
return false;
|
|
4
|
+
const row = Array.from(root.querySelectorAll('[data-session-id]'))
|
|
5
|
+
.find((candidate) => candidate.dataset.sessionId === sessionId);
|
|
6
|
+
if (row === undefined)
|
|
7
|
+
return false;
|
|
8
|
+
row.scrollIntoView({ block: 'nearest' });
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=worktree-session-position.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-session-position.js","sourceRoot":"","sources":["../../src/client/worktree-session-position.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,4BAA4B,CAC1C,IAAuB,EACvB,SAAiB;IAEjB,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAChC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,mBAAmB,CAAC,CAAC;SAC5E,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IAClE,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACpC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { SessionBinding, WorktreeHealth, WorktreeManager, WorktreeStatus } from '../contract/index.js';
|
|
1
|
+
import type { SessionBinding, WorktreeHealth, WorktreeManager, WorktreePermissionManager, WorktreePermissionResult, WorktreeStatus } from '../contract/index.js';
|
|
2
2
|
import { type CreateSessionForWorktreeInput } from './worktree-view.js';
|
|
3
|
+
export { WorktreeSessionPermissionError } from './worktree-view-errors.js';
|
|
3
4
|
export interface WorktreeSessionSummary {
|
|
4
5
|
readonly blank?: boolean;
|
|
5
6
|
readonly cwd?: string;
|
|
@@ -59,6 +60,19 @@ export interface WorktreeSessionConnectorOptions {
|
|
|
59
60
|
}) => Promise<string>;
|
|
60
61
|
readonly ensureSessionWorkspace: (workspaceId: string, sessionId: string) => void;
|
|
61
62
|
readonly openSession: (sessionId: string) => void;
|
|
63
|
+
readonly permission?: Pick<WorktreePermissionManager, 'ensureWorktreePermission'>;
|
|
64
|
+
readonly confirmFullAccess?: (input: {
|
|
65
|
+
readonly workspaceId: string;
|
|
66
|
+
readonly worktreeId: string;
|
|
67
|
+
readonly sessionId: string;
|
|
68
|
+
readonly cwd: string;
|
|
69
|
+
}) => boolean | Promise<boolean>;
|
|
70
|
+
readonly onPermissionResult?: (input: {
|
|
71
|
+
readonly workspaceId: string;
|
|
72
|
+
readonly worktreeId: string;
|
|
73
|
+
readonly sessionId: string;
|
|
74
|
+
readonly cwd: string;
|
|
75
|
+
}, result: WorktreePermissionResult) => void;
|
|
62
76
|
}
|
|
63
77
|
export interface WorktreeSessionConnector {
|
|
64
78
|
create(input: CreateSessionForWorktreeInput): Promise<string>;
|
|
@@ -66,7 +80,23 @@ export interface WorktreeSessionConnector {
|
|
|
66
80
|
}
|
|
67
81
|
export interface PendingWorktreeSessionBinding extends CreateSessionForWorktreeInput {
|
|
68
82
|
readonly sessionId: string;
|
|
83
|
+
readonly permissionRequired?: boolean;
|
|
84
|
+
}
|
|
85
|
+
interface EnsureWorktreeSessionPermissionInput {
|
|
86
|
+
readonly permission?: Pick<WorktreePermissionManager, 'ensureWorktreePermission'>;
|
|
87
|
+
readonly confirmFullAccess?: WorktreeSessionConnectorOptions['confirmFullAccess'];
|
|
88
|
+
readonly onPermissionResult?: WorktreeSessionConnectorOptions['onPermissionResult'];
|
|
89
|
+
readonly sessionId: string;
|
|
90
|
+
readonly workspaceId: string;
|
|
91
|
+
readonly worktreeId: string;
|
|
92
|
+
readonly cwd: string;
|
|
93
|
+
readonly createdSession: boolean;
|
|
69
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Keep the confirmation and second permission call in one place for new,
|
|
97
|
+
* reused, and retried Sessions. The Host still validates the relation.
|
|
98
|
+
*/
|
|
99
|
+
export declare function ensureWorktreeSessionPermission(input: EnsureWorktreeSessionPermissionInput): Promise<void>;
|
|
70
100
|
export declare function resolveWorktreeSessionAction(input: ResolveWorktreeSessionActionInput): WorktreeSessionAction;
|
|
71
101
|
export declare function retryWorktreeSessionBinding(input: {
|
|
72
102
|
readonly manager: Pick<WorktreeManager, 'bindSession'>;
|
|
@@ -74,6 +104,9 @@ export declare function retryWorktreeSessionBinding(input: {
|
|
|
74
104
|
readonly archived: boolean;
|
|
75
105
|
readonly ensureSessionWorkspace: (workspaceId: string, sessionId: string) => void;
|
|
76
106
|
readonly openSession: (sessionId: string) => void;
|
|
107
|
+
readonly permission?: Pick<WorktreePermissionManager, 'ensureWorktreePermission'>;
|
|
108
|
+
readonly confirmFullAccess?: WorktreeSessionConnectorOptions['confirmFullAccess'];
|
|
109
|
+
readonly onPermissionResult?: WorktreeSessionConnectorOptions['onPermissionResult'];
|
|
77
110
|
}): Promise<string>;
|
|
78
111
|
/**
|
|
79
112
|
* Browser-only Worktree `+` connector. It owns the read/resolve/bind/create/open
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-session.d.ts","sourceRoot":"","sources":["../../src/client/worktree-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"worktree-session.d.ts","sourceRoot":"","sources":["../../src/client/worktree-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { createSessionForWorktree, WorktreeSessionBindingError, } from './worktree-view.js';
|
|
2
|
+
import { WorktreeSessionPermissionError } from './worktree-view-errors.js';
|
|
3
|
+
export { WorktreeSessionPermissionError } from './worktree-view-errors.js';
|
|
2
4
|
export class WorktreeSessionActionError extends Error {
|
|
3
5
|
code;
|
|
4
6
|
retryable;
|
|
@@ -11,6 +13,61 @@ export class WorktreeSessionActionError extends Error {
|
|
|
11
13
|
this.details = details;
|
|
12
14
|
}
|
|
13
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Keep the confirmation and second permission call in one place for new,
|
|
18
|
+
* reused, and retried Sessions. The Host still validates the relation.
|
|
19
|
+
*/
|
|
20
|
+
export async function ensureWorktreeSessionPermission(input) {
|
|
21
|
+
if (input.permission === undefined)
|
|
22
|
+
return;
|
|
23
|
+
const request = {
|
|
24
|
+
workspaceId: input.workspaceId,
|
|
25
|
+
worktreeId: input.worktreeId,
|
|
26
|
+
sessionId: input.sessionId,
|
|
27
|
+
binding: 'active',
|
|
28
|
+
};
|
|
29
|
+
let result;
|
|
30
|
+
try {
|
|
31
|
+
result = await input.permission.ensureWorktreePermission(request);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession, error);
|
|
35
|
+
}
|
|
36
|
+
if (result.status === 'confirmation-required') {
|
|
37
|
+
let confirmed;
|
|
38
|
+
try {
|
|
39
|
+
confirmed = input.confirmFullAccess === undefined
|
|
40
|
+
? false
|
|
41
|
+
: await input.confirmFullAccess({
|
|
42
|
+
workspaceId: input.workspaceId,
|
|
43
|
+
worktreeId: input.worktreeId,
|
|
44
|
+
sessionId: input.sessionId,
|
|
45
|
+
cwd: input.cwd,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession, error);
|
|
50
|
+
}
|
|
51
|
+
if (!confirmed) {
|
|
52
|
+
throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession);
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
result = await input.permission.ensureWorktreePermission({ ...request, confirmed: true });
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession, error);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (result.status === 'confirmation-required') {
|
|
62
|
+
throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession);
|
|
63
|
+
}
|
|
64
|
+
input.onPermissionResult?.({
|
|
65
|
+
workspaceId: input.workspaceId,
|
|
66
|
+
worktreeId: input.worktreeId,
|
|
67
|
+
sessionId: input.sessionId,
|
|
68
|
+
cwd: input.cwd,
|
|
69
|
+
}, result);
|
|
70
|
+
}
|
|
14
71
|
export function resolveWorktreeSessionAction(input) {
|
|
15
72
|
if (input.target.status !== 'active' || input.target.health === 'repair') {
|
|
16
73
|
return { kind: 'reject', reason: 'worktree-not-available' };
|
|
@@ -91,6 +148,16 @@ export async function retryWorktreeSessionBinding(input) {
|
|
|
91
148
|
catch (error) {
|
|
92
149
|
throw new WorktreeSessionBindingError(input.pending.sessionId, error);
|
|
93
150
|
}
|
|
151
|
+
await ensureWorktreeSessionPermission({
|
|
152
|
+
permission: input.permission,
|
|
153
|
+
confirmFullAccess: input.confirmFullAccess,
|
|
154
|
+
onPermissionResult: input.onPermissionResult,
|
|
155
|
+
sessionId: input.pending.sessionId,
|
|
156
|
+
workspaceId: input.pending.workspaceId,
|
|
157
|
+
worktreeId: input.pending.worktreeId,
|
|
158
|
+
cwd: input.pending.cwd,
|
|
159
|
+
createdSession: true,
|
|
160
|
+
});
|
|
94
161
|
input.ensureSessionWorkspace(input.pending.workspaceId, input.pending.sessionId);
|
|
95
162
|
input.openSession(input.pending.sessionId);
|
|
96
163
|
return input.pending.sessionId;
|
|
@@ -121,6 +188,16 @@ export function createWorktreeSessionConnector(options) {
|
|
|
121
188
|
bindings,
|
|
122
189
|
});
|
|
123
190
|
if (action.kind === 'open-bound') {
|
|
191
|
+
await ensureWorktreeSessionPermission({
|
|
192
|
+
permission: options.permission,
|
|
193
|
+
confirmFullAccess: options.confirmFullAccess,
|
|
194
|
+
onPermissionResult: options.onPermissionResult,
|
|
195
|
+
sessionId: action.sessionId,
|
|
196
|
+
workspaceId: input.workspaceId,
|
|
197
|
+
worktreeId: input.worktreeId,
|
|
198
|
+
cwd: input.cwd,
|
|
199
|
+
createdSession: false,
|
|
200
|
+
});
|
|
124
201
|
options.ensureSessionWorkspace(input.workspaceId, action.sessionId);
|
|
125
202
|
if (!disposed)
|
|
126
203
|
options.openSession(action.sessionId);
|
|
@@ -137,6 +214,16 @@ export function createWorktreeSessionConnector(options) {
|
|
|
137
214
|
catch (error) {
|
|
138
215
|
throw new WorktreeSessionBindingError(action.sessionId, error);
|
|
139
216
|
}
|
|
217
|
+
await ensureWorktreeSessionPermission({
|
|
218
|
+
permission: options.permission,
|
|
219
|
+
confirmFullAccess: options.confirmFullAccess,
|
|
220
|
+
onPermissionResult: options.onPermissionResult,
|
|
221
|
+
sessionId: action.sessionId,
|
|
222
|
+
workspaceId: input.workspaceId,
|
|
223
|
+
worktreeId: input.worktreeId,
|
|
224
|
+
cwd: input.cwd,
|
|
225
|
+
createdSession: false,
|
|
226
|
+
});
|
|
140
227
|
if (!disposed) {
|
|
141
228
|
options.ensureSessionWorkspace(input.workspaceId, action.sessionId);
|
|
142
229
|
if (!disposed)
|
|
@@ -152,10 +239,19 @@ export function createWorktreeSessionConnector(options) {
|
|
|
152
239
|
...input,
|
|
153
240
|
createSession: options.createSession,
|
|
154
241
|
manager: options.manager,
|
|
155
|
-
beforeOpen: (sessionId) => {
|
|
242
|
+
beforeOpen: async (sessionId) => {
|
|
156
243
|
if (disposed)
|
|
157
244
|
throw new WorktreeSessionActionError('CLIENT_DISPOSED', '', false);
|
|
158
|
-
|
|
245
|
+
await ensureWorktreeSessionPermission({
|
|
246
|
+
permission: options.permission,
|
|
247
|
+
confirmFullAccess: options.confirmFullAccess,
|
|
248
|
+
onPermissionResult: options.onPermissionResult,
|
|
249
|
+
sessionId,
|
|
250
|
+
workspaceId: input.workspaceId,
|
|
251
|
+
worktreeId: input.worktreeId,
|
|
252
|
+
cwd: input.cwd,
|
|
253
|
+
createdSession: true,
|
|
254
|
+
});
|
|
159
255
|
},
|
|
160
256
|
openSession: (sessionId) => {
|
|
161
257
|
if (!disposed)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-session.js","sourceRoot":"","sources":["../../src/client/worktree-session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worktree-session.js","sourceRoot":"","sources":["../../src/client/worktree-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,6 @@ import type { SessionRenameDialogProps, WorktreeCreateDialogProps, WorktreeRemov
|
|
|
2
2
|
export declare function WorktreeSessionRenameDialog({ t, target, draft, pending, error, onClose, onDraftChange, onSubmit, }: SessionRenameDialogProps): import("react").JSX.Element;
|
|
3
3
|
export declare function WorktreeWorkspaceRenameDialog({ t, target, draft, pending, duplicate, error, onClose, onDraftChange, onSubmit, }: WorkspaceRenameDialogProps): import("react").JSX.Element | null;
|
|
4
4
|
export declare function WorktreeWorkspaceDeleteDialog({ t, target, pending, error, onClose, onSubmit, }: WorkspaceDeleteDialogProps): import("react").JSX.Element | null;
|
|
5
|
-
export declare function WorktreeCreateDialog({ t, workspace, view, setupStatus, canCreate, selectedBranch, newBranch, actionPending, onClose, onSelectedBranchChange, onNewBranchChange, onSubmit, }: WorktreeCreateDialogProps): import("react").JSX.Element | null;
|
|
5
|
+
export declare function WorktreeCreateDialog({ t, workspace, view, readError, setupStatus, canCreate, mode, importCandidates, selectedImportPath, selectedBranch, newBranch, actionPending, onClose, onRetry, onModeChange, onRetryImportCandidates, onSelectedImportPathChange, onSelectedBranchChange, onNewBranchChange, onSubmit, }: WorktreeCreateDialogProps): import("react").JSX.Element | null;
|
|
6
6
|
export declare function WorktreeRemovalDialog({ t, worktree, actionPending, onClose, onSubmit, }: WorktreeRemovalDialogProps): import("react").JSX.Element | null;
|
|
7
7
|
//# sourceMappingURL=worktree-surface-dialogs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-surface-dialogs.d.ts","sourceRoot":"","sources":["../../src/client/worktree-surface-dialogs.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAE1B,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,6BAA6B,CAAC;AAmBrC,wBAAgB,2BAA2B,CAAC,EAC1C,CAAC,EACD,MAAM,EACN,KAAK,EACL,OAAO,EACP,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,GACT,EAAE,wBAAwB,+BAkD1B;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,CAAC,EACD,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,GACT,EAAE,0BAA0B,sCA8D5B;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,CAAC,EACD,MAAM,EACN,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,0BAA0B,sCAkC5B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,CAAC,EACD,SAAS,EACT,IAAI,EACJ,WAAW,EACX,SAAS,EACT,cAAc,EACd,SAAS,EACT,aAAa,EACb,OAAO,EACP,sBAAsB,EACtB,iBAAiB,EACjB,QAAQ,GACT,EAAE,yBAAyB,
|
|
1
|
+
{"version":3,"file":"worktree-surface-dialogs.d.ts","sourceRoot":"","sources":["../../src/client/worktree-surface-dialogs.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAE1B,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,6BAA6B,CAAC;AAmBrC,wBAAgB,2BAA2B,CAAC,EAC1C,CAAC,EACD,MAAM,EACN,KAAK,EACL,OAAO,EACP,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,GACT,EAAE,wBAAwB,+BAkD1B;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,CAAC,EACD,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,GACT,EAAE,0BAA0B,sCA8D5B;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,CAAC,EACD,MAAM,EACN,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,0BAA0B,sCAkC5B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,CAAC,EACD,SAAS,EACT,IAAI,EACJ,SAAS,EACT,WAAW,EACX,SAAS,EACT,IAAI,EACJ,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,aAAa,EACb,OAAO,EACP,OAAO,EACP,YAAY,EACZ,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,iBAAiB,EACjB,QAAQ,GACT,EAAE,yBAAyB,sCAiM3B;AAED,wBAAgB,qBAAqB,CAAC,EACpC,CAAC,EACD,QAAQ,EACR,aAAa,EACb,OAAO,EACP,QAAQ,GACT,EAAE,0BAA0B,sCAiC5B"}
|