@claudexor/daemon 1.0.1 → 2.1.2

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.
Files changed (105) hide show
  1. package/dist/client.d.ts +29 -1
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +24 -4
  4. package/dist/client.js.map +1 -1
  5. package/dist/command-authority.d.ts +11 -0
  6. package/dist/command-authority.d.ts.map +1 -0
  7. package/dist/command-authority.js +15 -0
  8. package/dist/command-authority.js.map +1 -0
  9. package/dist/command-retention.d.ts +5 -0
  10. package/dist/command-retention.d.ts.map +1 -0
  11. package/dist/command-retention.js +18 -0
  12. package/dist/command-retention.js.map +1 -0
  13. package/dist/command-store.d.ts +41 -0
  14. package/dist/command-store.d.ts.map +1 -0
  15. package/dist/command-store.js +197 -0
  16. package/dist/command-store.js.map +1 -0
  17. package/dist/events.d.ts +2 -3
  18. package/dist/events.d.ts.map +1 -1
  19. package/dist/events.js +2 -3
  20. package/dist/events.js.map +1 -1
  21. package/dist/index.d.ts +13 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +13 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/interactions.d.ts +32 -22
  26. package/dist/interactions.d.ts.map +1 -1
  27. package/dist/interactions.js +183 -56
  28. package/dist/interactions.js.map +1 -1
  29. package/dist/journal-events.d.ts +4 -0
  30. package/dist/journal-events.d.ts.map +1 -0
  31. package/dist/journal-events.js +23 -0
  32. package/dist/journal-events.js.map +1 -0
  33. package/dist/journal-manager.d.ts +72 -0
  34. package/dist/journal-manager.d.ts.map +1 -0
  35. package/dist/journal-manager.js +463 -0
  36. package/dist/journal-manager.js.map +1 -0
  37. package/dist/journal-projection.d.ts +11 -0
  38. package/dist/journal-projection.d.ts.map +1 -0
  39. package/dist/journal-projection.js +2 -0
  40. package/dist/journal-projection.js.map +1 -0
  41. package/dist/journal-recovery-files.d.ts +27 -0
  42. package/dist/journal-recovery-files.d.ts.map +1 -0
  43. package/dist/journal-recovery-files.js +209 -0
  44. package/dist/journal-recovery-files.js.map +1 -0
  45. package/dist/operator-decisions.d.ts +30 -0
  46. package/dist/operator-decisions.d.ts.map +1 -0
  47. package/dist/operator-decisions.js +137 -0
  48. package/dist/operator-decisions.js.map +1 -0
  49. package/dist/project-partitions.d.ts +167 -0
  50. package/dist/project-partitions.d.ts.map +1 -0
  51. package/dist/project-partitions.js +365 -0
  52. package/dist/project-partitions.js.map +1 -0
  53. package/dist/projects.d.ts +29 -0
  54. package/dist/projects.d.ts.map +1 -0
  55. package/dist/projects.js +180 -0
  56. package/dist/projects.js.map +1 -0
  57. package/dist/quota-registry.d.ts +75 -0
  58. package/dist/quota-registry.d.ts.map +1 -0
  59. package/dist/quota-registry.js +208 -0
  60. package/dist/quota-registry.js.map +1 -0
  61. package/dist/resource-store.d.ts +22 -0
  62. package/dist/resource-store.d.ts.map +1 -0
  63. package/dist/resource-store.js +272 -0
  64. package/dist/resource-store.js.map +1 -0
  65. package/dist/run-events.d.ts +15 -0
  66. package/dist/run-events.d.ts.map +1 -0
  67. package/dist/run-events.js +29 -0
  68. package/dist/run-events.js.map +1 -0
  69. package/dist/server.d.ts +33 -33
  70. package/dist/server.d.ts.map +1 -1
  71. package/dist/server.js +231 -238
  72. package/dist/server.js.map +1 -1
  73. package/dist/spec-sessions.d.ts +72 -0
  74. package/dist/spec-sessions.d.ts.map +1 -0
  75. package/dist/spec-sessions.js +301 -0
  76. package/dist/spec-sessions.js.map +1 -0
  77. package/dist/terminate.d.ts +52 -0
  78. package/dist/terminate.d.ts.map +1 -0
  79. package/dist/terminate.js +111 -0
  80. package/dist/terminate.js.map +1 -0
  81. package/dist/thread-head-ping.d.ts +35 -0
  82. package/dist/thread-head-ping.d.ts.map +1 -0
  83. package/dist/thread-head-ping.js +67 -0
  84. package/dist/thread-head-ping.js.map +1 -0
  85. package/dist/thread-lifecycle.d.ts +5 -0
  86. package/dist/thread-lifecycle.d.ts.map +1 -0
  87. package/dist/thread-lifecycle.js +57 -0
  88. package/dist/thread-lifecycle.js.map +1 -0
  89. package/dist/thread-store-support.d.ts +37 -0
  90. package/dist/thread-store-support.d.ts.map +1 -0
  91. package/dist/thread-store-support.js +94 -0
  92. package/dist/thread-store-support.js.map +1 -0
  93. package/dist/threads.d.ts +59 -13
  94. package/dist/threads.d.ts.map +1 -1
  95. package/dist/threads.js +254 -141
  96. package/dist/threads.js.map +1 -1
  97. package/dist/token.d.ts +13 -4
  98. package/dist/token.d.ts.map +1 -1
  99. package/dist/token.js +134 -29
  100. package/dist/token.js.map +1 -1
  101. package/dist/writer-lease.d.ts +21 -0
  102. package/dist/writer-lease.d.ts.map +1 -0
  103. package/dist/writer-lease.js +94 -0
  104. package/dist/writer-lease.js.map +1 -0
  105. package/package.json +5 -4
@@ -1,28 +1,122 @@
1
- import { InteractionAnswerSet as InteractionAnswerSetSchema } from "@claudexor/schema";
2
- /**
3
- * Daemon-side registry of questions waiting for the user (waiting_on_user).
4
- *
5
- * The orchestrator's RunInput.onInteraction is wired to `register()`, which
6
- * parks the attempt's promise here; control-api lists pending entries for the
7
- * UI and delivers answers via `answer()`. The orchestrator owns the timeout —
8
- * entries self-expire here only as hygiene so a timed-out question cannot be
9
- * answered into a session that already moved on.
10
- */
11
- export class InteractionRegistry {
1
+ import { ControlPendingInteraction as PendingInteractionSchema, InteractionAnswerSet as InteractionAnswerSetSchema, } from "@claudexor/schema";
2
+ const REQUESTED = "interaction.requested";
3
+ const RESOLVED = "interaction.resolved";
4
+ /** Journal-backed authority for pending interaction projections. */
5
+ export class InteractionStore {
6
+ journal;
12
7
  pending = new Map();
13
- /**
14
- * Entries are keyed by (runId, interactionId): interaction ids originate
15
- * from the harness's native request ids, which only need to be unique
16
- * within one session — two concurrent runs may legally collide.
17
- */
18
- key(runId, interactionId) {
19
- return `${runId}\u0000${interactionId}`;
20
- }
21
- register(ctx) {
8
+ resolved = new Set();
9
+ constructor(journal) {
10
+ this.journal = journal;
11
+ this.replay();
12
+ this.interruptAfterRestart();
13
+ }
14
+ request(ctx) {
15
+ const value = PendingInteractionSchema.parse({
16
+ interactionId: ctx.request.interaction_id,
17
+ runId: ctx.runId,
18
+ attemptId: ctx.attemptId,
19
+ harnessId: ctx.harnessId,
20
+ sourceTool: ctx.request.source_tool,
21
+ questions: ctx.request.questions,
22
+ requestedAt: ctx.requestedAt,
23
+ timeoutAt: ctx.timeoutAt,
24
+ });
25
+ const key = interactionKey(value.runId, value.interactionId);
26
+ if (this.pending.has(key) || this.resolved.has(key)) {
27
+ throw new Error(`duplicate interaction '${value.interactionId}' for run '${value.runId}'`);
28
+ }
29
+ this.journal.append(REQUESTED, value);
30
+ this.pending.set(key, value);
31
+ return value;
32
+ }
33
+ resolve(runId, interactionId, terminal) {
34
+ const key = interactionKey(runId, interactionId);
35
+ if (this.resolved.has(key))
36
+ return "already_resolved";
37
+ if (!this.pending.has(key))
38
+ return "not_found";
39
+ this.commitResolution({ runId, interactionIds: [interactionId], terminal });
40
+ return "resolved";
41
+ }
42
+ resolveRun(runId, terminal) {
43
+ const interactionIds = this.pendingForRun(runId).map((value) => value.interactionId);
44
+ if (interactionIds.length > 0)
45
+ this.commitResolution({ runId, interactionIds, terminal });
46
+ return interactionIds;
47
+ }
48
+ status(runId, interactionId) {
49
+ const key = interactionKey(runId, interactionId);
50
+ if (this.pending.has(key))
51
+ return "pending";
52
+ return this.resolved.has(key) ? "resolved" : "missing";
53
+ }
54
+ pendingForRun(runId) {
55
+ return [...this.pending.values()].filter((value) => value.runId === runId);
56
+ }
57
+ validateProjection() {
58
+ for (const value of this.pending.values())
59
+ PendingInteractionSchema.parse(value);
60
+ for (const key of this.pending.keys()) {
61
+ if (this.resolved.has(key))
62
+ throw new Error("interaction is both pending and resolved");
63
+ }
64
+ }
65
+ replay() {
66
+ for (const record of this.journal.records()) {
67
+ if (record.type === REQUESTED) {
68
+ const value = PendingInteractionSchema.parse(record.payload);
69
+ const key = interactionKey(value.runId, value.interactionId);
70
+ if (this.pending.has(key) || this.resolved.has(key)) {
71
+ throw new Error("duplicate interaction request history");
72
+ }
73
+ this.pending.set(key, value);
74
+ }
75
+ else if (record.type === RESOLVED) {
76
+ this.applyResolution(parseResolution(record.payload));
77
+ }
78
+ }
79
+ this.validateProjection();
80
+ }
81
+ interruptAfterRestart() {
82
+ const byRun = new Map();
83
+ for (const value of this.pending.values()) {
84
+ const ids = byRun.get(value.runId) ?? [];
85
+ ids.push(value.interactionId);
86
+ byRun.set(value.runId, ids);
87
+ }
88
+ for (const [runId, interactionIds] of byRun) {
89
+ this.commitResolution({ runId, interactionIds, terminal: "interrupted" });
90
+ }
91
+ }
92
+ commitResolution(value) {
93
+ const parsed = parseResolution(value);
94
+ this.journal.append(RESOLVED, parsed);
95
+ this.applyResolution(parsed);
96
+ }
97
+ applyResolution(value) {
98
+ for (const interactionId of value.interactionIds) {
99
+ const key = interactionKey(value.runId, interactionId);
100
+ if (!this.pending.delete(key))
101
+ throw new Error("interaction resolution precedes request");
102
+ this.resolved.add(key);
103
+ }
104
+ }
105
+ }
106
+ /** Live answer bridge; durable state remains owned by InteractionStore. */
107
+ export class InteractionRegistry {
108
+ stores;
109
+ live = new Map();
110
+ constructor(stores) {
111
+ this.stores = stores;
112
+ }
113
+ register(ctx, params) {
22
114
  this.prune();
115
+ const store = this.stores.forRequest(params);
116
+ store.request(ctx);
23
117
  return new Promise((resolve) => {
24
- this.pending.set(this.key(ctx.runId, ctx.request.interaction_id), {
25
- ctx,
118
+ this.live.set(interactionKey(ctx.runId, ctx.request.interaction_id), {
119
+ store,
26
120
  resolve,
27
121
  expiresAtMs: Date.parse(ctx.timeoutAt) || Date.now() + 900_000,
28
122
  });
@@ -30,52 +124,85 @@ export class InteractionRegistry {
30
124
  }
31
125
  answer(runId, interactionId, rawAnswers) {
32
126
  this.prune();
33
- const entry = this.pending.get(this.key(runId, interactionId));
34
- if (!entry)
35
- return { status: "not_found", message: `no pending interaction '${interactionId}' for run '${runId}'` };
36
127
  const parsed = InteractionAnswerSetSchema.safeParse(rawAnswers);
37
- if (!parsed.success)
128
+ if (!parsed.success) {
38
129
  return { status: "rejected", message: parsed.error.issues[0]?.message ?? "invalid answers" };
39
- this.pending.delete(this.key(runId, interactionId));
40
- entry.resolve(parsed.data);
130
+ }
131
+ const store = this.stores
132
+ .all()
133
+ .find((candidate) => candidate.status(runId, interactionId) !== "missing");
134
+ if (!store)
135
+ return { status: "not_found", message: missingMessage(runId, interactionId) };
136
+ const status = store.resolve(runId, interactionId, "answered");
137
+ if (status !== "resolved") {
138
+ return {
139
+ status: status === "already_resolved" ? "already_resolved" : "not_found",
140
+ message: status === "not_found" ? missingMessage(runId, interactionId) : undefined,
141
+ };
142
+ }
143
+ const key = interactionKey(runId, interactionId);
144
+ const entry = this.live.get(key);
145
+ this.live.delete(key);
146
+ entry?.resolve(parsed.data);
41
147
  return { status: "delivered" };
42
148
  }
43
- /** Resolve-and-drop every pending question of a run that reached a terminal
44
- * (cancel/failed/succeeded): a dead run must not advertise waiting_on_user
45
- * for up to the interaction timeout. Resolving null mirrors the
46
- * orchestrator's own decline path. */
47
149
  dropForRun(runId) {
48
- for (const [id, entry] of this.pending) {
49
- if (entry.ctx.runId === runId) {
50
- this.pending.delete(id);
51
- entry.resolve(null);
52
- }
150
+ for (const store of this.stores.all())
151
+ store.resolveRun(runId, "run_terminal");
152
+ for (const [key, entry] of this.live) {
153
+ if (!key.startsWith(`${runId}\u0000`))
154
+ continue;
155
+ this.live.delete(key);
156
+ entry.resolve(null);
53
157
  }
54
158
  }
55
159
  pendingForRun(runId) {
56
160
  this.prune();
57
- return [...this.pending.values()]
58
- .filter((e) => e.ctx.runId === runId)
59
- .map((e) => ({
60
- interactionId: e.ctx.request.interaction_id,
61
- runId: e.ctx.runId,
62
- attemptId: e.ctx.attemptId,
63
- harnessId: e.ctx.harnessId,
64
- sourceTool: e.ctx.request.source_tool,
65
- questions: e.ctx.request.questions,
66
- requestedAt: e.ctx.requestedAt,
67
- timeoutAt: e.ctx.timeoutAt,
68
- }));
69
- }
70
- /** Drop expired entries (the orchestrator already declined them). */
161
+ return this.stores.all().flatMap((store) => store.pendingForRun(runId));
162
+ }
71
163
  prune() {
72
164
  const now = Date.now();
73
- for (const [id, entry] of this.pending) {
74
- if (entry.expiresAtMs <= now) {
75
- this.pending.delete(id);
76
- entry.resolve(null);
77
- }
165
+ for (const [key, entry] of this.live) {
166
+ if (entry.expiresAtMs > now)
167
+ continue;
168
+ const split = key.indexOf("\u0000");
169
+ const runId = key.slice(0, split);
170
+ const interactionId = key.slice(split + 1);
171
+ entry.store.resolve(runId, interactionId, "timeout");
172
+ this.live.delete(key);
173
+ entry.resolve(null);
78
174
  }
79
175
  }
80
176
  }
177
+ export function interactionProjection() {
178
+ return {
179
+ name: "interactions",
180
+ create: (journal) => new InteractionStore(journal),
181
+ validate: (store) => store.validateProjection(),
182
+ };
183
+ }
184
+ function interactionKey(runId, interactionId) {
185
+ return `${runId}\u0000${interactionId}`;
186
+ }
187
+ function parseResolution(value) {
188
+ if (!value || typeof value !== "object" || Array.isArray(value))
189
+ throw new Error("invalid interaction resolution");
190
+ const input = value;
191
+ const terminals = ["answered", "timeout", "run_terminal", "interrupted"];
192
+ if (typeof input.runId !== "string" ||
193
+ !Array.isArray(input.interactionIds) ||
194
+ input.interactionIds.length === 0 ||
195
+ input.interactionIds.some((id) => typeof id !== "string" || !id) ||
196
+ !terminals.includes(input.terminal)) {
197
+ throw new Error("invalid interaction resolution");
198
+ }
199
+ return {
200
+ runId: input.runId,
201
+ interactionIds: [...input.interactionIds],
202
+ terminal: input.terminal,
203
+ };
204
+ }
205
+ function missingMessage(runId, interactionId) {
206
+ return `no pending interaction '${interactionId}' for run '${runId}'`;
207
+ }
81
208
  //# sourceMappingURL=interactions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interactions.js","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactions.js","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { DurableJournal, type JournalRecoveryState } from "@claudexor/journal";
2
+ import type { ControlJournalEvent } from "@claudexor/schema";
3
+ export declare function journalEvents(journal: DurableJournal | null, recovery: JournalRecoveryState, afterCursor?: string): ControlJournalEvent[];
4
+ //# sourceMappingURL=journal-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-events.d.ts","sourceRoot":"","sources":["../src/journal-events.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,CAAC,EAAE,MAAM,GACnB,mBAAmB,EAAE,CAsBvB"}
@@ -0,0 +1,23 @@
1
+ import { JournalRecoveryRequiredError, } from "@claudexor/journal";
2
+ export function journalEvents(journal, recovery, afterCursor) {
3
+ if (!journal || recovery.status === "recovery_required") {
4
+ throw new JournalRecoveryRequiredError(recovery.status === "recovery_required"
5
+ ? recovery
6
+ : {
7
+ status: "recovery_required",
8
+ location: { kind: "byte", byteOffset: 0 },
9
+ reason: "journal partition is unavailable",
10
+ discardedTailBytes: 0,
11
+ });
12
+ }
13
+ const afterSeq = afterCursor ? journal.sequenceAfter(afterCursor) : 0;
14
+ return journal.records(afterSeq).map((record) => ({
15
+ schemaVersion: 1,
16
+ cursor: journal.cursorAt(record.seq),
17
+ partition: record.partition,
18
+ type: record.type,
19
+ observedAt: record.time,
20
+ payload: record.payload,
21
+ }));
22
+ }
23
+ //# sourceMappingURL=journal-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-events.js","sourceRoot":"","sources":["../src/journal-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,4BAA4B,GAE7B,MAAM,oBAAoB,CAAC;AAG5B,MAAM,UAAU,aAAa,CAC3B,OAA8B,EAC9B,QAA8B,EAC9B,WAAoB;IAEpB,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;QACxD,MAAM,IAAI,4BAA4B,CACpC,QAAQ,CAAC,MAAM,KAAK,mBAAmB;YACrC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC;gBACE,MAAM,EAAE,mBAAmB;gBAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE;gBACzC,MAAM,EAAE,kCAAkC;gBAC1C,kBAAkB,EAAE,CAAC;aACtB,CACN,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChD,aAAa,EAAE,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;QACpC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { type ControlJournalExportReceipt, type ControlJournalInspection, type ControlJournalQuarantineReceipt, type ControlJournalQuarantineRequest, type ControlJournalValidation } from "@claudexor/schema";
2
+ import type { JournalProjectionDescriptor, JournalProjectionSlot } from "./journal-projection.js";
3
+ export type { JournalProjectionDescriptor, JournalProjectionSlot } from "./journal-projection.js";
4
+ export type JournalQuarantineRequest = ControlJournalQuarantineRequest & {
5
+ idempotencyKey: string;
6
+ };
7
+ type JournalManagerFault = "afterQuarantineRename" | "afterQuarantineReceipt";
8
+ export interface JournalManagerOptions {
9
+ partition?: string;
10
+ now?: () => Date;
11
+ faults?: Partial<Record<JournalManagerFault, () => void>>;
12
+ }
13
+ export declare class JournalManager {
14
+ readonly rootDir: string;
15
+ readonly partition: string;
16
+ readonly journalRoot: string;
17
+ readonly partitionDir: string;
18
+ private readonly operationsDir;
19
+ private readonly quarantineDir;
20
+ private readonly artifactPrefix;
21
+ private readonly now;
22
+ private readonly faults;
23
+ private readonly registrations;
24
+ private journal;
25
+ private recovery;
26
+ private generationValue;
27
+ private started;
28
+ private closed;
29
+ constructor(rootDir: string, options?: JournalManagerOptions);
30
+ registerProjection<T>(descriptor: JournalProjectionDescriptor<T>): JournalProjectionSlot<T>;
31
+ start(): ControlJournalInspection;
32
+ inspect(): ControlJournalInspection;
33
+ ready(): boolean;
34
+ validate(): ControlJournalValidation;
35
+ events(afterCursor?: string): {
36
+ type: string;
37
+ cursor: string;
38
+ observedAt: string;
39
+ schemaVersion: 1;
40
+ partition: string;
41
+ payload?: unknown;
42
+ }[];
43
+ exportRecovery(): ControlJournalExportReceipt;
44
+ preflightQuarantine(input: JournalQuarantineRequest): {
45
+ disposition: string;
46
+ receipt: {
47
+ schemaVersion: 1;
48
+ completedAt: string;
49
+ partition: string;
50
+ operationId: string;
51
+ previousFingerprint: string;
52
+ quarantineArtifactId: string;
53
+ quarantinePath: string;
54
+ newEpoch: string;
55
+ };
56
+ } | {
57
+ disposition: string;
58
+ receipt: null;
59
+ };
60
+ quarantineAndStartFresh(input: JournalQuarantineRequest): ControlJournalQuarantineReceipt;
61
+ close(): void;
62
+ private openGeneration;
63
+ private resume;
64
+ private completeFromReceipt;
65
+ private reconcilePrepared;
66
+ private inspection;
67
+ private enterRecovery;
68
+ private clearSlots;
69
+ private assertStarted;
70
+ private assertOpen;
71
+ }
72
+ //# sourceMappingURL=journal-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-manager.d.ts","sourceRoot":"","sources":["../src/journal-manager.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACpC,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,EAC9B,MAAM,mBAAmB,CAAC;AAiB3B,OAAO,KAAK,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAClG,YAAY,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAElG,MAAM,MAAM,wBAAwB,GAAG,+BAA+B,GAAG;IACvE,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAkBF,KAAK,mBAAmB,GAAG,uBAAuB,GAAG,wBAAwB,CAAC;AAE9E,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;CAC3D;AAED,qBAAa,cAAc;IAiBvB,QAAQ,CAAC,OAAO,EAAE,MAAM;IAhB1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;IAC1E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6C;IAC3E,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,QAAQ,CAAoE;IACpF,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;gBAGZ,OAAO,EAAE,MAAM,EACxB,OAAO,GAAE,qBAA0B;IAcrC,kBAAkB,CAAC,CAAC,EAAE,UAAU,EAAE,2BAA2B,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAW3F,KAAK,IAAI,wBAAwB;IASjC,OAAO,IAAI,wBAAwB;IASnC,KAAK,IAAI,OAAO;IAShB,QAAQ,IAAI,wBAAwB;IA6BpC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM;;;;;;;;IAK3B,cAAc,IAAI,2BAA2B;IAmD7C,mBAAmB,CAAC,KAAK,EAAE,wBAAwB;;;;;;;;;;;;;;;;IA8BnD,uBAAuB,CAAC,KAAK,EAAE,wBAAwB,GAAG,+BAA+B;IA+BzF,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,MAAM;IAsDd,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;CAGnB"}