@components-kit/open-workbook-excel-core 0.1.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/LICENSE +21 -0
- package/README.md +22 -0
- package/dist/backup-manager.d.ts +31 -0
- package/dist/backup-manager.d.ts.map +1 -0
- package/dist/backup-manager.js +61 -0
- package/dist/backup-manager.js.map +1 -0
- package/dist/batch-compiler.d.ts +11 -0
- package/dist/batch-compiler.d.ts.map +1 -0
- package/dist/batch-compiler.js +103 -0
- package/dist/batch-compiler.js.map +1 -0
- package/dist/chunking.d.ts +6 -0
- package/dist/chunking.d.ts.map +1 -0
- package/dist/chunking.js +19 -0
- package/dist/chunking.js.map +1 -0
- package/dist/conflicts.d.ts +26 -0
- package/dist/conflicts.d.ts.map +1 -0
- package/dist/conflicts.js +269 -0
- package/dist/conflicts.js.map +1 -0
- package/dist/fingerprint.d.ts +6 -0
- package/dist/fingerprint.d.ts.map +1 -0
- package/dist/fingerprint.js +41 -0
- package/dist/fingerprint.js.map +1 -0
- package/dist/formula-dependencies.d.ts +16 -0
- package/dist/formula-dependencies.d.ts.map +1 -0
- package/dist/formula-dependencies.js +453 -0
- package/dist/formula-dependencies.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/lock-manager.d.ts +39 -0
- package/dist/lock-manager.d.ts.map +1 -0
- package/dist/lock-manager.js +246 -0
- package/dist/lock-manager.js.map +1 -0
- package/dist/permissions.d.ts +11 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +21 -0
- package/dist/permissions.js.map +1 -0
- package/dist/plan-manager.d.ts +37 -0
- package/dist/plan-manager.d.ts.map +1 -0
- package/dist/plan-manager.js +167 -0
- package/dist/plan-manager.js.map +1 -0
- package/dist/range-address.d.ts +16 -0
- package/dist/range-address.d.ts.map +1 -0
- package/dist/range-address.js +90 -0
- package/dist/range-address.js.map +1 -0
- package/dist/snapshot-manager.d.ts +20 -0
- package/dist/snapshot-manager.d.ts.map +1 -0
- package/dist/snapshot-manager.js +64 -0
- package/dist/snapshot-manager.js.map +1 -0
- package/dist/task-registry.d.ts +34 -0
- package/dist/task-registry.d.ts.map +1 -0
- package/dist/task-registry.js +141 -0
- package/dist/task-registry.js.map +1 -0
- package/dist/template-registry.d.ts +46 -0
- package/dist/template-registry.d.ts.map +1 -0
- package/dist/template-registry.js +60 -0
- package/dist/template-registry.js.map +1 -0
- package/dist/transaction-manager.d.ts +33 -0
- package/dist/transaction-manager.d.ts.map +1 -0
- package/dist/transaction-manager.js +118 -0
- package/dist/transaction-manager.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type A1Range, type DiffSummary, type SnapshotId, type SnapshotRef, type WorkbookId, type WorkbookSnapshotResponse } from "@components-kit/open-workbook-protocol";
|
|
2
|
+
export interface WorkbookSnapshotRecord extends SnapshotRef {
|
|
3
|
+
payload: WorkbookSnapshotResponse;
|
|
4
|
+
invalidatedAt?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class SnapshotManager {
|
|
7
|
+
private readonly snapshots;
|
|
8
|
+
createSnapshot(input: {
|
|
9
|
+
workbookId: WorkbookId;
|
|
10
|
+
reason: string;
|
|
11
|
+
affectedRanges: A1Range[];
|
|
12
|
+
payload: WorkbookSnapshotResponse;
|
|
13
|
+
}): WorkbookSnapshotRecord;
|
|
14
|
+
getSnapshot(snapshotId: SnapshotId): WorkbookSnapshotRecord | undefined;
|
|
15
|
+
listSnapshots(workbookId: WorkbookId): WorkbookSnapshotRecord[];
|
|
16
|
+
invalidate(snapshotId: SnapshotId): WorkbookSnapshotRecord | undefined;
|
|
17
|
+
deleteSnapshot(snapshotId: SnapshotId): boolean;
|
|
18
|
+
compare(leftId: SnapshotId, rightId: SnapshotId): DiffSummary | undefined;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=snapshot-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-manager.d.ts","sourceRoot":"","sources":["../src/snapshot-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,wBAAwB,EAE9B,MAAM,wCAAwC,CAAC;AAEhD,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,OAAO,EAAE,wBAAwB,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiD;IAE3E,cAAc,CAAC,KAAK,EAAE;QACpB,UAAU,EAAE,UAAU,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,OAAO,EAAE,CAAC;QAC1B,OAAO,EAAE,wBAAwB,CAAC;KACnC,GAAG,sBAAsB;IAc1B,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,sBAAsB,GAAG,SAAS;IAIvE,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,sBAAsB,EAAE;IAM/D,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,sBAAsB,GAAG,SAAS;IAStE,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAI/C,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS;CAiC1E"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { makeId } from "@components-kit/open-workbook-protocol";
|
|
2
|
+
export class SnapshotManager {
|
|
3
|
+
snapshots = new Map();
|
|
4
|
+
createSnapshot(input) {
|
|
5
|
+
const snapshotId = makeId("snapshot");
|
|
6
|
+
const snapshot = {
|
|
7
|
+
snapshotId,
|
|
8
|
+
workbookId: input.workbookId,
|
|
9
|
+
createdAt: new Date().toISOString(),
|
|
10
|
+
reason: input.reason,
|
|
11
|
+
affectedRanges: input.affectedRanges,
|
|
12
|
+
payload: input.payload
|
|
13
|
+
};
|
|
14
|
+
this.snapshots.set(snapshotId, snapshot);
|
|
15
|
+
return snapshot;
|
|
16
|
+
}
|
|
17
|
+
getSnapshot(snapshotId) {
|
|
18
|
+
return this.snapshots.get(snapshotId);
|
|
19
|
+
}
|
|
20
|
+
listSnapshots(workbookId) {
|
|
21
|
+
return [...this.snapshots.values()]
|
|
22
|
+
.filter((snapshot) => snapshot.workbookId === workbookId)
|
|
23
|
+
.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
|
|
24
|
+
}
|
|
25
|
+
invalidate(snapshotId) {
|
|
26
|
+
const snapshot = this.snapshots.get(snapshotId);
|
|
27
|
+
if (!snapshot) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
snapshot.invalidatedAt = new Date().toISOString();
|
|
31
|
+
return snapshot;
|
|
32
|
+
}
|
|
33
|
+
deleteSnapshot(snapshotId) {
|
|
34
|
+
return this.snapshots.delete(snapshotId);
|
|
35
|
+
}
|
|
36
|
+
compare(leftId, rightId) {
|
|
37
|
+
const left = this.snapshots.get(leftId);
|
|
38
|
+
const right = this.snapshots.get(rightId);
|
|
39
|
+
if (!left || !right) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
const changedRanges = [];
|
|
43
|
+
let cellsChanged = 0;
|
|
44
|
+
for (const rightRange of right.payload.rangeSnapshots) {
|
|
45
|
+
const leftRange = left.payload.rangeSnapshots.find((candidate) => candidate.fingerprint.range.sheetName === rightRange.fingerprint.range.sheetName &&
|
|
46
|
+
candidate.fingerprint.range.address === rightRange.fingerprint.range.address);
|
|
47
|
+
if (!leftRange || leftRange.fingerprint.hash !== rightRange.fingerprint.hash) {
|
|
48
|
+
changedRanges.push(rightRange.fingerprint.range);
|
|
49
|
+
cellsChanged += rightRange.fingerprint.cellCount;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
title: `Snapshot diff ${leftId} -> ${rightId}`,
|
|
54
|
+
changedRanges,
|
|
55
|
+
cellsChanged,
|
|
56
|
+
formulasChanged: 0,
|
|
57
|
+
stylesChanged: 0,
|
|
58
|
+
tablesChanged: 0,
|
|
59
|
+
sheetsChanged: left.payload.workbookFingerprint.structureHash === right.payload.workbookFingerprint.structureHash ? 0 : 1,
|
|
60
|
+
destructiveLevel: changedRanges.length > 0 ? "values" : "none"
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=snapshot-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-manager.js","sourceRoot":"","sources":["../src/snapshot-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { AgentId, TaskBlocker, TaskId, WorkbookId, WorkbookScope } from "@components-kit/open-workbook-protocol";
|
|
2
|
+
import { type TaskRecord, type TransactionId, type PlanId, type BackupId } from "@components-kit/open-workbook-protocol";
|
|
3
|
+
export interface CreateTaskInput {
|
|
4
|
+
workbookId: WorkbookId;
|
|
5
|
+
goal: string;
|
|
6
|
+
role?: string | undefined;
|
|
7
|
+
priority?: TaskRecord["priority"] | undefined;
|
|
8
|
+
assignedAgentId?: AgentId | undefined;
|
|
9
|
+
allowedScopes?: WorkbookScope[] | undefined;
|
|
10
|
+
dependencies?: TaskId[] | undefined;
|
|
11
|
+
}
|
|
12
|
+
export declare class TaskRegistry {
|
|
13
|
+
private readonly tasks;
|
|
14
|
+
create(input: CreateTaskInput): TaskRecord;
|
|
15
|
+
claim(taskId: TaskId, agentId: AgentId): TaskRecord;
|
|
16
|
+
update(taskId: TaskId, patch: Partial<Pick<TaskRecord, "goal" | "role" | "priority" | "status" | "progress" | "currentStep" | "blockers" | "assignedAgentId" | "allowedScopes" | "dependencies" | "errorMessage">>): TaskRecord;
|
|
17
|
+
setProgress(taskId: TaskId, progress: number, currentStep?: string | undefined): TaskRecord;
|
|
18
|
+
addBlocker(taskId: TaskId, input: Pick<TaskBlocker, "message" | "severity"> & {
|
|
19
|
+
scope?: TaskBlocker["scope"] | undefined;
|
|
20
|
+
}): TaskRecord;
|
|
21
|
+
resolveBlocker(taskId: TaskId, blockerId: string): TaskRecord;
|
|
22
|
+
attachPlan(taskId: TaskId, planId: PlanId): TaskRecord | undefined;
|
|
23
|
+
attachTransaction(taskId: TaskId, transactionId: TransactionId): TaskRecord | undefined;
|
|
24
|
+
attachBackups(taskId: TaskId, backupIds: BackupId[]): TaskRecord | undefined;
|
|
25
|
+
complete(taskId: TaskId): TaskRecord;
|
|
26
|
+
fail(taskId: TaskId, errorMessage: string): TaskRecord;
|
|
27
|
+
cancel(taskId: TaskId): TaskRecord;
|
|
28
|
+
get(taskId: TaskId): TaskRecord | undefined;
|
|
29
|
+
list(workbookId?: WorkbookId): TaskRecord[];
|
|
30
|
+
load(records: TaskRecord[]): void;
|
|
31
|
+
dump(): TaskRecord[];
|
|
32
|
+
private require;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=task-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-registry.d.ts","sourceRoot":"","sources":["../src/task-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACtH,OAAO,EAAU,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAEjI,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;IAC9C,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,aAAa,CAAC,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACrC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IAEvD,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU;IA4B1C,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU;IAInD,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,CACZ,IAAI,CACF,UAAU,EACV,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,UAAU,GAAG,iBAAiB,GAAG,eAAe,GAAG,cAAc,GAAG,cAAc,CAC1J,CACF,GACA,UAAU;IAYb,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU;IAK3F,UAAU,CACR,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,UAAU,CAAC,GAAG;QACjD,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;KAC1C,GACA,UAAU;IAeb,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU;IAgB7D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAUlE,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,UAAU,GAAG,SAAS;IAUvF,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,UAAU,GAAG,SAAS;IAU5E,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAIpC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,UAAU;IAItD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAIlC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI3C,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE;IAM3C,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAWjC,IAAI,IAAI,UAAU,EAAE;IAIpB,OAAO,CAAC,OAAO;CAOhB"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { makeId } from "@components-kit/open-workbook-protocol";
|
|
2
|
+
export class TaskRegistry {
|
|
3
|
+
tasks = new Map();
|
|
4
|
+
create(input) {
|
|
5
|
+
const now = new Date().toISOString();
|
|
6
|
+
const task = {
|
|
7
|
+
taskId: makeId("task"),
|
|
8
|
+
workbookId: input.workbookId,
|
|
9
|
+
goal: input.goal,
|
|
10
|
+
priority: input.priority ?? "normal",
|
|
11
|
+
status: input.assignedAgentId ? "claimed" : "open",
|
|
12
|
+
progress: 0,
|
|
13
|
+
blockers: [],
|
|
14
|
+
allowedScopes: input.allowedScopes ?? [],
|
|
15
|
+
dependencies: input.dependencies ?? [],
|
|
16
|
+
planIds: [],
|
|
17
|
+
transactionIds: [],
|
|
18
|
+
rollbackBackupIds: [],
|
|
19
|
+
createdAt: now,
|
|
20
|
+
updatedAt: now
|
|
21
|
+
};
|
|
22
|
+
if (input.role !== undefined) {
|
|
23
|
+
task.role = input.role;
|
|
24
|
+
}
|
|
25
|
+
if (input.assignedAgentId !== undefined) {
|
|
26
|
+
task.assignedAgentId = input.assignedAgentId;
|
|
27
|
+
}
|
|
28
|
+
this.tasks.set(task.taskId, task);
|
|
29
|
+
return task;
|
|
30
|
+
}
|
|
31
|
+
claim(taskId, agentId) {
|
|
32
|
+
return this.update(taskId, { assignedAgentId: agentId, status: "claimed" });
|
|
33
|
+
}
|
|
34
|
+
update(taskId, patch) {
|
|
35
|
+
const task = this.require(taskId);
|
|
36
|
+
Object.assign(task, patch, { updatedAt: new Date().toISOString() });
|
|
37
|
+
if (patch.status === "completed") {
|
|
38
|
+
task.completedAt = new Date().toISOString();
|
|
39
|
+
}
|
|
40
|
+
if (patch.status === "failed") {
|
|
41
|
+
task.failedAt = new Date().toISOString();
|
|
42
|
+
}
|
|
43
|
+
return task;
|
|
44
|
+
}
|
|
45
|
+
setProgress(taskId, progress, currentStep) {
|
|
46
|
+
const clamped = Math.max(0, Math.min(100, Math.round(progress)));
|
|
47
|
+
return this.update(taskId, currentStep === undefined ? { progress: clamped } : { progress: clamped, currentStep });
|
|
48
|
+
}
|
|
49
|
+
addBlocker(taskId, input) {
|
|
50
|
+
const task = this.require(taskId);
|
|
51
|
+
const blocker = {
|
|
52
|
+
blockerId: makeId("blocker"),
|
|
53
|
+
message: input.message,
|
|
54
|
+
severity: input.severity,
|
|
55
|
+
status: "open",
|
|
56
|
+
createdAt: new Date().toISOString()
|
|
57
|
+
};
|
|
58
|
+
if (input.scope !== undefined) {
|
|
59
|
+
blocker.scope = input.scope;
|
|
60
|
+
}
|
|
61
|
+
return this.update(taskId, { blockers: [...task.blockers, blocker], status: input.severity === "blocked" ? "blocked" : task.status });
|
|
62
|
+
}
|
|
63
|
+
resolveBlocker(taskId, blockerId) {
|
|
64
|
+
const task = this.require(taskId);
|
|
65
|
+
const now = new Date().toISOString();
|
|
66
|
+
return this.update(taskId, {
|
|
67
|
+
blockers: task.blockers.map((blocker) => blocker.blockerId === blockerId
|
|
68
|
+
? {
|
|
69
|
+
...blocker,
|
|
70
|
+
status: "resolved",
|
|
71
|
+
resolvedAt: now
|
|
72
|
+
}
|
|
73
|
+
: blocker)
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
attachPlan(taskId, planId) {
|
|
77
|
+
const task = this.tasks.get(taskId);
|
|
78
|
+
if (!task) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
task.planIds = [...new Set([...task.planIds, planId])];
|
|
82
|
+
task.updatedAt = new Date().toISOString();
|
|
83
|
+
return task;
|
|
84
|
+
}
|
|
85
|
+
attachTransaction(taskId, transactionId) {
|
|
86
|
+
const task = this.tasks.get(taskId);
|
|
87
|
+
if (!task) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
task.transactionIds = [...new Set([...task.transactionIds, transactionId])];
|
|
91
|
+
task.updatedAt = new Date().toISOString();
|
|
92
|
+
return task;
|
|
93
|
+
}
|
|
94
|
+
attachBackups(taskId, backupIds) {
|
|
95
|
+
const task = this.tasks.get(taskId);
|
|
96
|
+
if (!task) {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
task.rollbackBackupIds = [...new Set([...task.rollbackBackupIds, ...backupIds])];
|
|
100
|
+
task.updatedAt = new Date().toISOString();
|
|
101
|
+
return task;
|
|
102
|
+
}
|
|
103
|
+
complete(taskId) {
|
|
104
|
+
return this.update(taskId, { status: "completed" });
|
|
105
|
+
}
|
|
106
|
+
fail(taskId, errorMessage) {
|
|
107
|
+
return this.update(taskId, { status: "failed", errorMessage });
|
|
108
|
+
}
|
|
109
|
+
cancel(taskId) {
|
|
110
|
+
return this.update(taskId, { status: "cancelled" });
|
|
111
|
+
}
|
|
112
|
+
get(taskId) {
|
|
113
|
+
return this.tasks.get(taskId);
|
|
114
|
+
}
|
|
115
|
+
list(workbookId) {
|
|
116
|
+
return [...this.tasks.values()]
|
|
117
|
+
.filter((task) => workbookId === undefined || task.workbookId === workbookId)
|
|
118
|
+
.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
|
|
119
|
+
}
|
|
120
|
+
load(records) {
|
|
121
|
+
this.tasks.clear();
|
|
122
|
+
for (const record of records) {
|
|
123
|
+
this.tasks.set(record.taskId, {
|
|
124
|
+
...record,
|
|
125
|
+
progress: record.progress ?? 0,
|
|
126
|
+
blockers: record.blockers ?? []
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
dump() {
|
|
131
|
+
return [...this.tasks.values()].map((task) => ({ ...task }));
|
|
132
|
+
}
|
|
133
|
+
require(taskId) {
|
|
134
|
+
const task = this.tasks.get(taskId);
|
|
135
|
+
if (!task) {
|
|
136
|
+
throw new Error(`Task not found: ${taskId}`);
|
|
137
|
+
}
|
|
138
|
+
return task;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=task-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-registry.js","sourceRoot":"","sources":["../src/task-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAmE,MAAM,wCAAwC,CAAC;AAYjI,MAAM,OAAO,YAAY;IACN,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEvD,MAAM,CAAC,KAAsB;QAC3B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,GAAe;YACvB,MAAM,EAAE,MAAM,CAAS,MAAM,CAAC;YAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ;YACpC,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YAClD,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,EAAE;YACZ,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,EAAE;YACxC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;YACtC,OAAO,EAAE,EAAE;YACX,cAAc,EAAE,EAAE;YAClB,iBAAiB,EAAE,EAAE;YACrB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;QACF,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACzB,CAAC;QACD,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,OAAgB;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,CACJ,MAAc,EACd,KAKC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,QAAgB,EAAE,WAAgC;QAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IACrH,CAAC;IAED,UAAU,CACR,MAAc,EACd,KAEC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,OAAO,GAAgB;YAC3B,SAAS,EAAE,MAAM,CAAS,SAAS,CAAC;YACpC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxI,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,SAAiB;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACtC,OAAO,CAAC,SAAS,KAAK,SAAS;gBAC7B,CAAC,CAAC;oBACE,GAAG,OAAO;oBACV,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,GAAG;iBAChB;gBACH,CAAC,CAAC,OAAO,CACZ;SACF,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,MAAc;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,MAAc,EAAE,aAA4B;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,MAAc,EAAE,SAAqB;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,MAAc;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,CAAC,MAAc,EAAE,YAAoB;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,UAAuB;QAC1B,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aAC5B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC;aAC5E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,OAAqB;QACxB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC5B,GAAG,MAAM;gBACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;gBAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;aAChC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEO,OAAO,CAAC,MAAc;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { TemplateId, TemplateRef, WorkbookId } from "@components-kit/open-workbook-protocol";
|
|
2
|
+
export interface TemplateFingerprint {
|
|
3
|
+
structureHash: string;
|
|
4
|
+
formulaHash: string;
|
|
5
|
+
styleHash: string;
|
|
6
|
+
filterHash: string;
|
|
7
|
+
tableHash: string;
|
|
8
|
+
printLayoutHash: string;
|
|
9
|
+
}
|
|
10
|
+
export interface TemplateFingerprintPayload {
|
|
11
|
+
structure: unknown;
|
|
12
|
+
formulas: unknown;
|
|
13
|
+
styles: unknown;
|
|
14
|
+
filters: unknown;
|
|
15
|
+
tables: unknown;
|
|
16
|
+
printLayout: unknown;
|
|
17
|
+
}
|
|
18
|
+
export interface TemplateRecord extends TemplateRef {
|
|
19
|
+
workbookId?: WorkbookId;
|
|
20
|
+
sourceSheetName: string;
|
|
21
|
+
fingerprint: TemplateFingerprint;
|
|
22
|
+
fingerprintPayload: TemplateFingerprintPayload;
|
|
23
|
+
dataRegions: string[];
|
|
24
|
+
createdAt: string;
|
|
25
|
+
updatedAt: string;
|
|
26
|
+
}
|
|
27
|
+
export interface RegisterTemplateInput {
|
|
28
|
+
name: string;
|
|
29
|
+
scope: "workbook" | "local";
|
|
30
|
+
sourceSheetName: string;
|
|
31
|
+
workbookId?: WorkbookId;
|
|
32
|
+
dataRegions?: string[];
|
|
33
|
+
fingerprintPayload: TemplateFingerprintPayload;
|
|
34
|
+
}
|
|
35
|
+
export declare class TemplateRegistry {
|
|
36
|
+
private readonly records;
|
|
37
|
+
register(input: RegisterTemplateInput): TemplateRecord;
|
|
38
|
+
get(templateId: TemplateId): TemplateRecord | undefined;
|
|
39
|
+
unregister(templateId: TemplateId): boolean;
|
|
40
|
+
list(options?: {
|
|
41
|
+
workbookId?: WorkbookId;
|
|
42
|
+
}): TemplateRecord[];
|
|
43
|
+
load(records: TemplateRecord[]): void;
|
|
44
|
+
dump(): TemplateRecord[];
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=template-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-registry.d.ts","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAIlG,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,mBAAmB,CAAC;IACjC,kBAAkB,EAAE,0BAA0B,CAAC;IAC/C,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,EAAE,0BAA0B,CAAC;CAChD;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IAEjE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,GAAG,cAAc;IAiCtD,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS;IAIvD,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAI3C,IAAI,CAAC,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,UAAU,CAAA;KAAO,GAAG,cAAc,EAAE;IASjE,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI;IAOrC,IAAI,IAAI,cAAc,EAAE;CAGzB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { makeId } from "@components-kit/open-workbook-protocol";
|
|
2
|
+
import { hashStable } from "./fingerprint.js";
|
|
3
|
+
export class TemplateRegistry {
|
|
4
|
+
records = new Map();
|
|
5
|
+
register(input) {
|
|
6
|
+
if (input.scope === "workbook" && !input.workbookId) {
|
|
7
|
+
throw new Error("Workbook templates require workbookId");
|
|
8
|
+
}
|
|
9
|
+
const templateId = makeId("template");
|
|
10
|
+
const now = new Date().toISOString();
|
|
11
|
+
const record = {
|
|
12
|
+
templateId,
|
|
13
|
+
name: input.name,
|
|
14
|
+
scope: input.scope,
|
|
15
|
+
version: 1,
|
|
16
|
+
sourceSheetName: input.sourceSheetName,
|
|
17
|
+
dataRegions: input.dataRegions ?? [],
|
|
18
|
+
fingerprint: {
|
|
19
|
+
structureHash: hashStable(input.fingerprintPayload.structure),
|
|
20
|
+
formulaHash: hashStable(input.fingerprintPayload.formulas),
|
|
21
|
+
styleHash: hashStable(input.fingerprintPayload.styles),
|
|
22
|
+
filterHash: hashStable(input.fingerprintPayload.filters),
|
|
23
|
+
tableHash: hashStable(input.fingerprintPayload.tables),
|
|
24
|
+
printLayoutHash: hashStable(input.fingerprintPayload.printLayout)
|
|
25
|
+
},
|
|
26
|
+
fingerprintPayload: input.fingerprintPayload,
|
|
27
|
+
createdAt: now,
|
|
28
|
+
updatedAt: now
|
|
29
|
+
};
|
|
30
|
+
if (input.workbookId !== undefined) {
|
|
31
|
+
record.workbookId = input.workbookId;
|
|
32
|
+
}
|
|
33
|
+
this.records.set(templateId, record);
|
|
34
|
+
return record;
|
|
35
|
+
}
|
|
36
|
+
get(templateId) {
|
|
37
|
+
return this.records.get(templateId);
|
|
38
|
+
}
|
|
39
|
+
unregister(templateId) {
|
|
40
|
+
return this.records.delete(templateId);
|
|
41
|
+
}
|
|
42
|
+
list(options = {}) {
|
|
43
|
+
return [...this.records.values()].filter((record) => {
|
|
44
|
+
if (record.scope === "local") {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
return !options.workbookId || record.workbookId === options.workbookId;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
load(records) {
|
|
51
|
+
this.records.clear();
|
|
52
|
+
for (const record of records) {
|
|
53
|
+
this.records.set(record.templateId, { ...record });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
dump() {
|
|
57
|
+
return [...this.records.values()].map((record) => ({ ...record }));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=template-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-registry.js","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type AgentId, type BackupId, type DiffSummary, type LockId, type OperationTelemetry, type OperationWarning, type PlanId, type RangeFingerprint, type TaskId, type TransactionId, type TransactionRecord, type WorkbookId, type WorkbookScope, type DestructiveLevel } from "@components-kit/open-workbook-protocol";
|
|
2
|
+
export interface CreateTransactionInput {
|
|
3
|
+
workbookId: WorkbookId;
|
|
4
|
+
agentId?: AgentId | undefined;
|
|
5
|
+
taskId?: TaskId | undefined;
|
|
6
|
+
planId?: PlanId | undefined;
|
|
7
|
+
goal: string;
|
|
8
|
+
scopes: WorkbookScope[];
|
|
9
|
+
baseFingerprints?: RangeFingerprint[];
|
|
10
|
+
destructiveLevel: DestructiveLevel;
|
|
11
|
+
}
|
|
12
|
+
export declare class TransactionManager {
|
|
13
|
+
private readonly transactions;
|
|
14
|
+
create(input: CreateTransactionInput): TransactionRecord;
|
|
15
|
+
markApplying(transactionId: TransactionId, locks: LockId[]): TransactionRecord;
|
|
16
|
+
markApplied(transactionId: TransactionId, result: {
|
|
17
|
+
backups: BackupId[];
|
|
18
|
+
warnings: OperationWarning[];
|
|
19
|
+
diffSummary?: DiffSummary | undefined;
|
|
20
|
+
telemetry?: OperationTelemetry | undefined;
|
|
21
|
+
}): TransactionRecord;
|
|
22
|
+
markFailed(transactionId: TransactionId, errorCode: string, errorMessage: string, warnings?: OperationWarning[]): TransactionRecord;
|
|
23
|
+
markBlocked(transactionId: TransactionId, errorCode: string, errorMessage: string, warnings?: OperationWarning[]): TransactionRecord;
|
|
24
|
+
markRolledBack(transactionId: TransactionId): TransactionRecord;
|
|
25
|
+
get(transactionId: TransactionId): TransactionRecord | undefined;
|
|
26
|
+
getLaterApplied(transaction: TransactionRecord): TransactionRecord[];
|
|
27
|
+
list(workbookId?: WorkbookId): TransactionRecord[];
|
|
28
|
+
load(records: TransactionRecord[]): void;
|
|
29
|
+
dump(): TransactionRecord[];
|
|
30
|
+
markInterrupted(message?: string): TransactionRecord[];
|
|
31
|
+
private update;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=transaction-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-manager.d.ts","sourceRoot":"","sources":["../src/transaction-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAEtB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACtC,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+C;IAE5E,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,iBAAiB;IA2BxD,YAAY,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,iBAAiB;IAQ9E,WAAW,CACT,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE;QACN,OAAO,EAAE,QAAQ,EAAE,CAAC;QACpB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;QAC7B,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;QACtC,SAAS,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;KAC5C,GACA,iBAAiB;IAgBpB,UAAU,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,GAAE,gBAAgB,EAAO,GAAG,iBAAiB;IAUvI,WAAW,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,GAAE,gBAAgB,EAAO,GAAG,iBAAiB;IAUxI,cAAc,CAAC,aAAa,EAAE,aAAa,GAAG,iBAAiB;IAI/D,GAAG,CAAC,aAAa,EAAE,aAAa,GAAG,iBAAiB,GAAG,SAAS;IAIhE,eAAe,CAAC,WAAW,EAAE,iBAAiB,GAAG,iBAAiB,EAAE;IAOpE,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,iBAAiB,EAAE;IAMlD,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAOxC,IAAI,IAAI,iBAAiB,EAAE;IAI3B,eAAe,CAAC,OAAO,SAAsD,GAAG,iBAAiB,EAAE;IAcnG,OAAO,CAAC,MAAM;CAQf"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { makeId } from "@components-kit/open-workbook-protocol";
|
|
2
|
+
export class TransactionManager {
|
|
3
|
+
transactions = new Map();
|
|
4
|
+
create(input) {
|
|
5
|
+
const transaction = {
|
|
6
|
+
transactionId: makeId("txn"),
|
|
7
|
+
workbookId: input.workbookId,
|
|
8
|
+
status: "queued",
|
|
9
|
+
goal: input.goal,
|
|
10
|
+
scopes: input.scopes,
|
|
11
|
+
locks: [],
|
|
12
|
+
baseFingerprints: input.baseFingerprints ?? [],
|
|
13
|
+
backups: [],
|
|
14
|
+
warnings: [],
|
|
15
|
+
destructiveLevel: input.destructiveLevel,
|
|
16
|
+
queuedAt: new Date().toISOString()
|
|
17
|
+
};
|
|
18
|
+
if (input.agentId !== undefined) {
|
|
19
|
+
transaction.agentId = input.agentId;
|
|
20
|
+
}
|
|
21
|
+
if (input.taskId !== undefined) {
|
|
22
|
+
transaction.taskId = input.taskId;
|
|
23
|
+
}
|
|
24
|
+
if (input.planId !== undefined) {
|
|
25
|
+
transaction.planId = input.planId;
|
|
26
|
+
}
|
|
27
|
+
this.transactions.set(transaction.transactionId, transaction);
|
|
28
|
+
return transaction;
|
|
29
|
+
}
|
|
30
|
+
markApplying(transactionId, locks) {
|
|
31
|
+
return this.update(transactionId, {
|
|
32
|
+
status: "applying",
|
|
33
|
+
locks,
|
|
34
|
+
startedAt: new Date().toISOString()
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
markApplied(transactionId, result) {
|
|
38
|
+
const patch = {
|
|
39
|
+
status: "applied",
|
|
40
|
+
backups: result.backups,
|
|
41
|
+
warnings: result.warnings,
|
|
42
|
+
finishedAt: new Date().toISOString()
|
|
43
|
+
};
|
|
44
|
+
if (result.diffSummary !== undefined) {
|
|
45
|
+
patch.diffSummary = result.diffSummary;
|
|
46
|
+
}
|
|
47
|
+
if (result.telemetry !== undefined) {
|
|
48
|
+
patch.telemetry = result.telemetry;
|
|
49
|
+
}
|
|
50
|
+
return this.update(transactionId, patch);
|
|
51
|
+
}
|
|
52
|
+
markFailed(transactionId, errorCode, errorMessage, warnings = []) {
|
|
53
|
+
return this.update(transactionId, {
|
|
54
|
+
status: "failed",
|
|
55
|
+
errorCode,
|
|
56
|
+
errorMessage,
|
|
57
|
+
warnings,
|
|
58
|
+
finishedAt: new Date().toISOString()
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
markBlocked(transactionId, errorCode, errorMessage, warnings = []) {
|
|
62
|
+
return this.update(transactionId, {
|
|
63
|
+
status: "blocked",
|
|
64
|
+
errorCode,
|
|
65
|
+
errorMessage,
|
|
66
|
+
warnings,
|
|
67
|
+
finishedAt: new Date().toISOString()
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
markRolledBack(transactionId) {
|
|
71
|
+
return this.update(transactionId, { status: "rolled_back", finishedAt: new Date().toISOString() });
|
|
72
|
+
}
|
|
73
|
+
get(transactionId) {
|
|
74
|
+
return this.transactions.get(transactionId);
|
|
75
|
+
}
|
|
76
|
+
getLaterApplied(transaction) {
|
|
77
|
+
const ordered = [...this.transactions.values()];
|
|
78
|
+
const index = ordered.findIndex((candidate) => candidate.transactionId === transaction.transactionId);
|
|
79
|
+
const candidates = index >= 0 ? ordered.slice(index + 1) : ordered;
|
|
80
|
+
return candidates.filter((candidate) => candidate.workbookId === transaction.workbookId && candidate.status === "applied");
|
|
81
|
+
}
|
|
82
|
+
list(workbookId) {
|
|
83
|
+
return [...this.transactions.values()]
|
|
84
|
+
.filter((transaction) => workbookId === undefined || transaction.workbookId === workbookId)
|
|
85
|
+
.sort((a, b) => (b.finishedAt ?? b.startedAt ?? b.queuedAt).localeCompare(a.finishedAt ?? a.startedAt ?? a.queuedAt));
|
|
86
|
+
}
|
|
87
|
+
load(records) {
|
|
88
|
+
this.transactions.clear();
|
|
89
|
+
for (const record of records) {
|
|
90
|
+
this.transactions.set(record.transactionId, { ...record });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
dump() {
|
|
94
|
+
return [...this.transactions.values()].map((transaction) => ({ ...transaction }));
|
|
95
|
+
}
|
|
96
|
+
markInterrupted(message = "Daemon restarted before the transaction finished.") {
|
|
97
|
+
const interrupted = [];
|
|
98
|
+
for (const transaction of this.transactions.values()) {
|
|
99
|
+
if (transaction.status === "queued" || transaction.status === "applying") {
|
|
100
|
+
transaction.status = "blocked";
|
|
101
|
+
transaction.errorCode = "DAEMON_RESTARTED";
|
|
102
|
+
transaction.errorMessage = message;
|
|
103
|
+
transaction.finishedAt = new Date().toISOString();
|
|
104
|
+
interrupted.push(transaction);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return interrupted;
|
|
108
|
+
}
|
|
109
|
+
update(transactionId, patch) {
|
|
110
|
+
const transaction = this.transactions.get(transactionId);
|
|
111
|
+
if (!transaction) {
|
|
112
|
+
throw new Error(`Transaction not found: ${transactionId}`);
|
|
113
|
+
}
|
|
114
|
+
Object.assign(transaction, patch);
|
|
115
|
+
return transaction;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=transaction-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-manager.js","sourceRoot":"","sources":["../src/transaction-manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@components-kit/open-workbook-excel-core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Core planning, backup, snapshot, template, permission, and range utilities for Open Workbook.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"homepage": "https://github.com/components-kit/open-workbook#readme",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/components-kit/open-workbook.git",
|
|
11
|
+
"directory": "packages/excel-core"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/components-kit/open-workbook/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"excel",
|
|
18
|
+
"spreadsheet",
|
|
19
|
+
"planning",
|
|
20
|
+
"backup",
|
|
21
|
+
"template"
|
|
22
|
+
],
|
|
23
|
+
"main": "dist/index.js",
|
|
24
|
+
"types": "dist/index.d.ts",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"default": "./dist/index.js"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"dist",
|
|
33
|
+
"!dist/**/*.test.*",
|
|
34
|
+
"README.md"
|
|
35
|
+
],
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@components-kit/open-workbook-protocol": "0.1.0"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"typescript": "^5.7.3",
|
|
44
|
+
"vitest": "^2.1.8"
|
|
45
|
+
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "tsc -p tsconfig.json",
|
|
48
|
+
"check": "tsc -p tsconfig.json --noEmit",
|
|
49
|
+
"test": "vitest run --passWithNoTests"
|
|
50
|
+
}
|
|
51
|
+
}
|