@ascenda-one/history-import 0.1.15 → 0.1.17
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 +107 -13
- package/dist/activeSplit.js +159 -0
- package/dist/activeSplit.js.map +1 -0
- package/dist/activeUnion.js +215 -0
- package/dist/activeUnion.js.map +1 -0
- package/dist/archive.js +2 -0
- package/dist/archive.js.map +1 -1
- package/dist/cli.js +3163 -550
- package/dist/cli.js.map +1 -1
- package/dist/daySlice.js +27 -6
- package/dist/daySlice.js.map +1 -1
- package/dist/extractors/claudeCode.js +141 -22
- package/dist/extractors/claudeCode.js.map +1 -1
- package/dist/extractors/codex.js +725 -0
- package/dist/extractors/codex.js.map +1 -0
- package/dist/localHandoff.js +287 -21
- package/dist/localHandoff.js.map +1 -1
- package/dist/scan.js +64 -0
- package/dist/scan.js.map +1 -1
- package/dist/ship.js +79 -4
- package/dist/ship.js.map +1 -1
- package/dist/stores.js +3 -0
- package/dist/stores.js.map +1 -1
- package/dist/types.js +19 -2
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# @ascenda-one/history-import
|
|
2
2
|
|
|
3
3
|
Retrospective AI-usage import: extracts the baseline that already exists on
|
|
4
|
-
an engineer's machine — Claude Code transcripts, Cursor's
|
|
5
|
-
VS Code local history and Copilot sessions, git — and
|
|
6
|
-
provenance-classed historical events on the existing telemetry
|
|
4
|
+
an engineer's machine — Claude Code transcripts, Codex CLI rollouts, Cursor's
|
|
5
|
+
conversation store, VS Code local history and Copilot sessions, git — and
|
|
6
|
+
ships it as provenance-classed historical events on the existing telemetry
|
|
7
|
+
wire.
|
|
7
8
|
|
|
8
9
|
The store formats these extractors read are reverse-engineered and
|
|
9
10
|
undocumented upstream, so they can change without notice. Each extractor's
|
|
@@ -20,11 +21,15 @@ command (same pattern as hooks pairing) and this CLI does the reading.
|
|
|
20
21
|
## Design rules (non-negotiable)
|
|
21
22
|
|
|
22
23
|
1. **Evaporation order.** Claude Code first — its 30-day rolling purge is
|
|
23
|
-
deleting a day of baseline per day. Then
|
|
24
|
+
deleting a day of baseline per day. Then Codex (no purge observed on its
|
|
25
|
+
rollouts; it sits second because it is the same transcript shape and
|
|
26
|
+
costs nothing to read, not because of measured risk), then Cursor, then
|
|
27
|
+
VS Code, then git.
|
|
24
28
|
2. **Copy, then parse.** Extraction only ever reads a staged snapshot
|
|
25
29
|
(`src/staging.ts`), never live files. SQLite snapshots carry their `-wal`.
|
|
26
30
|
3. **Sniff per record, dispatch on the self-labelled version** (`version` on
|
|
27
|
-
Claude lines, `
|
|
31
|
+
Claude lines, `cli_version` on a Codex rollout's `session_meta`, `_v` on
|
|
32
|
+
Cursor records, `version: 1` in VS Code entries).
|
|
28
33
|
Unknown shapes become `historical_unparsed` — raw retained in staging,
|
|
29
34
|
nothing inferred. Fixture tests per known (tool, version) pair.
|
|
30
35
|
4. **Metrics only by default.** Prompt/response text, thinking blocks and
|
|
@@ -53,7 +58,9 @@ command (same pattern as hooks pairing) and this CLI does the reading.
|
|
|
53
58
|
| Staging/snapshot (copy-then-parse, WAL-aware, **torn down by the run that makes it**) | implemented |
|
|
54
59
|
| `archive` (durable content-addressed copy, dedup, verify, restore, prune) | **implemented, verified on a real 4.1 GB store** |
|
|
55
60
|
| **Claude Code extractor** (human-prompt/tool-result split, session folds incl. recursive subagent transcripts, after-hours, compaction, tool failures, context-window peak, human-corrected edits, correction cadence, gap-split active minutes, epoch marker) | **implemented, verified live** |
|
|
56
|
-
| **
|
|
61
|
+
| **Codex extractor** (`~/.codex/sessions` and `archived_sessions` rollouts: `user_message` prompts, per-turn model mix, issued tool calls, tool and runtime failures, cumulative tokens, context peak against the window the rollout itself records, compaction items, long turns, gap-split active minutes, epoch marker) | **implemented; fixture-tested and run against a developer machine's rollouts** |
|
|
62
|
+
| **Active-time split** (hands-on vs agent-supervising, per session, per local day and per project digest; autonomy bands off the transcript's own `permissionMode`) | **implemented, verified against a real 400-session store** |
|
|
63
|
+
| **Tool-call counting, all four stores** (`tool_use` items / tool-call `response_item`s / `toolFormerData` / `toolInvocationSerialized`, one `ai_tool_call_started` per call) | **implemented; exercised end to end against all four stores on a developer machine** |
|
|
57
64
|
| **Batch shipper** (`POST /v1/tool-events/batch`, salted hashes, stable importKey) | **implemented, verified live** |
|
|
58
65
|
| **Cursor extractor** (composerHeaders + bubble aggregation via SQL-side `json_extract`, prompt text never parsed into the process, subagent-composer folding, epoch marker) | **implemented, verified live** |
|
|
59
66
|
| **VS Code extractor** (Timeline-history Chat-Edit day×workspace aggregation, Copilot chatSessions folding, workspace identity via `workspace.json` longest-prefix match, epoch marker) | **implemented, verified live** |
|
|
@@ -66,12 +73,99 @@ user-role transcript lines are tool-result round-trips, not typed prompts.
|
|
|
66
73
|
Conflating the two inflates every prompt metric by roughly an order of
|
|
67
74
|
magnitude, so its fixtures are the ones to keep green.
|
|
68
75
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
76
|
+
Codex has the same trap in a different place. A prompt is an `event_msg` of
|
|
77
|
+
type `user_message`; the `response_item` copy that follows it shares
|
|
78
|
+
`role: "user"` with injected environment context and aborted-turn notices,
|
|
79
|
+
and counting those roughly doubles every prompt figure. Codex rollouts also
|
|
80
|
+
carry things Claude Code transcripts do not: the model's real
|
|
81
|
+
`model_context_window` (so the context ratio needs no assumed 200k), a
|
|
82
|
+
per-turn `duration_ms` (so long turns are the store's own number, bucketed
|
|
83
|
+
through the same function the live hooks use), and no `permission_mode` at
|
|
84
|
+
all — the rollout records `approval_policy` and `sandbox_policy`, which the
|
|
85
|
+
live Codex hooks deliberately leave unmapped, so every agent-supervising
|
|
86
|
+
minute on this store lands in the `unknown` band. That is a blind spot stated
|
|
87
|
+
as one, not a posture. On the wire Codex rides `cli_agent` with
|
|
88
|
+
`metadata.host: "codex"`, exactly as the live hooks do, so historical and
|
|
89
|
+
live rows are one population.
|
|
90
|
+
|
|
91
|
+
## Active time is two figures, never one
|
|
92
|
+
|
|
93
|
+
`activeMinutes` answers "how much of this session was not idle": every
|
|
94
|
+
known-line timestamp, main thread and subagents merged, gap-split at five
|
|
95
|
+
minutes. It has always been the honest alternative to wall clock, and it is
|
|
96
|
+
unchanged.
|
|
97
|
+
|
|
98
|
+
It is not, on its own, an answer to "how long did this take me". One prompt can
|
|
99
|
+
drive a forty-minute agent run, and forty minutes of an agent working is not
|
|
100
|
+
forty minutes of a person at a keyboard. So the same material is also reported
|
|
101
|
+
split:
|
|
102
|
+
|
|
103
|
+
| Figure | What it is |
|
|
104
|
+
|---|---|
|
|
105
|
+
| `handsOnMinutes` | The interval immediately **preceding** a human prompt. The prompt at its end is the evidence: someone read the previous output and typed. |
|
|
106
|
+
| `agentSupervisingMinutes` | Every other active interval. The agent produced the lines that bound it. |
|
|
107
|
+
|
|
108
|
+
The two partition `activeMinutes` exactly and there is **no third key holding
|
|
109
|
+
their sum**, at session, day or project scale. Adding them reconstructs
|
|
110
|
+
`activeMinutes`, which already exists; a differently-named total would be the
|
|
111
|
+
same number wearing a claim it cannot support. On a real 400-session store the
|
|
112
|
+
split came out 1,074 hands-on minutes against 36,948 supervising — quoting the
|
|
113
|
+
combined 38,035 as time spent is off by a factor of thirty-five for the half a
|
|
114
|
+
person would recognise as their own.
|
|
115
|
+
|
|
116
|
+
**`agentSupervisingMinutes` does not claim anyone was watching**, and nothing
|
|
117
|
+
in a transcript could show that they were. It is time the agent was working
|
|
118
|
+
which the person did not spend typing. Rendering it as attention is a
|
|
119
|
+
fabrication the name invites and the data does not support; the honest gloss is
|
|
120
|
+
"the agent was working".
|
|
121
|
+
|
|
122
|
+
### Autonomy bands
|
|
123
|
+
|
|
124
|
+
`permissionMode` is on the transcript's human-prompt lines and nowhere else —
|
|
125
|
+
across 120 real stores it appears on 6.7% of `user` lines and on no
|
|
126
|
+
`assistant`, `system` or `attachment` line. So posture is known at prompt
|
|
127
|
+
boundaries and carried forward between them, and supervising minutes are banded
|
|
128
|
+
by it through `autonomyBand`. Time before the first declaration lands in
|
|
129
|
+
`unknown` and is never folded into a neighbouring band.
|
|
130
|
+
|
|
131
|
+
The band map rides in the local handoff only (`autonomySplit`), never on the
|
|
132
|
+
wire: banding is a reader's vocabulary derived from the stored token at query
|
|
133
|
+
time, and storing the band would freeze a decision deliberately left open.
|
|
134
|
+
|
|
135
|
+
### The counters
|
|
136
|
+
|
|
137
|
+
Three diagnostics ship with the split, read by neither the backend nor the
|
|
138
|
+
handoff on purpose:
|
|
139
|
+
|
|
140
|
+
- `activeSplitInstants` — distinct timestamps the split ran over. Two minutes
|
|
141
|
+
off four instants and off four hundred are not the same measurement.
|
|
142
|
+
- `activeSplitUndatedLines` — known lines whose `timestamp` would not parse.
|
|
143
|
+
They still move the session's wall clock by string comparison, so only this
|
|
144
|
+
says both active figures are short.
|
|
145
|
+
- `activeSplitUnposturedInstants` — instants reached before any
|
|
146
|
+
`permissionMode` was declared. The posture blind spot as a count, not
|
|
147
|
+
inferred from the `unknown` band being present.
|
|
148
|
+
|
|
149
|
+
### The defect this replaced
|
|
150
|
+
|
|
151
|
+
The per-day slices used to gap-split the **prompt timestamps** while the
|
|
152
|
+
session figure gap-split the **whole timeline**. The threshold was shared and
|
|
153
|
+
commented as keeping one definition of "active"; the material was not. Across
|
|
154
|
+
200 real sessions the prompts-only reading came to 2,730 minutes against
|
|
155
|
+
18,938 — an 85.6% under-report, concentrated exactly on the sessions where an
|
|
156
|
+
agent did the most work. Both now cross the call, and
|
|
157
|
+
`tests/activeSplit.test.mjs` pins it against a real transcript.
|
|
158
|
+
|
|
159
|
+
## What the backend enforces on a second run
|
|
160
|
+
|
|
161
|
+
Both of the blockers this section used to list — the consent scope and
|
|
162
|
+
idempotency — are enforced by the deployed backend, and have been since
|
|
163
|
+
20 Aug 2026 (verified against a real backfill on 25 Aug 2026). They stopped
|
|
164
|
+
gating publication then, and the package ships from the release tag like
|
|
165
|
+
every other CLI here. Two things stand apart from them and are decided
|
|
166
|
+
elsewhere: which tier the batch ship belongs to, and the consent surface that
|
|
167
|
+
grants the lease. Without that grant every event of a backfill is rejected
|
|
168
|
+
`consent_missing_or_expired` — the gate working, not a broken token.
|
|
75
169
|
|
|
76
170
|
- **Consent scope.** `historical_import` is a distinct `ToolConsentScope`,
|
|
77
171
|
separate from the lease granted for live IDE telemetry, and a backfill
|
|
@@ -120,7 +214,7 @@ Still open, and worth knowing before trusting a second run completely:
|
|
|
120
214
|
ascenda-history-import scan # human-readable inventory
|
|
121
215
|
ascenda-history-import scan --json # what the app's consent surface renders
|
|
122
216
|
ascenda-history-import fix-retention # dry-run; --apply to write
|
|
123
|
-
ascenda-history-import import # Claude Code + Cursor + VS Code, dry run; --ship to send
|
|
217
|
+
ascenda-history-import import # Claude Code + Codex + Cursor + VS Code, dry run; --ship to send
|
|
124
218
|
ascenda-history-import archive # the durable copy; --verify / --list / --restore <dir> / --prune
|
|
125
219
|
```
|
|
126
220
|
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active time, split by who was doing the work.
|
|
3
|
+
*
|
|
4
|
+
* `activeMinutes` already answers "how much of this session was not idle" by
|
|
5
|
+
* gap-splitting every known-line timestamp. It cannot answer the question the
|
|
6
|
+
* Reveal actually wants to ask, which is what that time *was*: one prompt can
|
|
7
|
+
* drive a forty-minute agent run, and forty minutes of watching an agent is
|
|
8
|
+
* not forty minutes of a person at a keyboard. A single figure reports them as
|
|
9
|
+
* the same thing.
|
|
10
|
+
*
|
|
11
|
+
* This module splits the same gap-split material in two:
|
|
12
|
+
*
|
|
13
|
+
* - **hands-on** — the interval immediately *preceding* a human prompt. The
|
|
14
|
+
* prompt at its end is the evidence: someone read the previous output and
|
|
15
|
+
* typed. It is the only interval in a transcript where a person is
|
|
16
|
+
* demonstrably present, because it is the only one a person signed.
|
|
17
|
+
* - **agent-supervising** — every other active interval. The agent produced
|
|
18
|
+
* the lines that bound it.
|
|
19
|
+
*
|
|
20
|
+
* **What "supervising" does not claim.** It does not claim the person was
|
|
21
|
+
* watching, and nothing in a transcript could show that they were. It is time
|
|
22
|
+
* the agent was working which the person did not spend typing — no more. A
|
|
23
|
+
* reader that renders it as attention is reading a fabrication into it; the
|
|
24
|
+
* name is the plan's, the bound is this paragraph. The honest gloss is
|
|
25
|
+
* "the agent was working", not "you were supervising".
|
|
26
|
+
*
|
|
27
|
+
* **Two figures, never one total.** Nothing here returns their sum. They
|
|
28
|
+
* partition the same active milliseconds exactly (pinned by test), so a caller
|
|
29
|
+
* *can* add them — but adding them reconstructs `activeMinutes`, which already
|
|
30
|
+
* exists and already has readers. A third number spelled like a new
|
|
31
|
+
* measurement would be the same number wearing a claim it cannot support, and
|
|
32
|
+
* the whole point of the split is that the two halves differ.
|
|
33
|
+
*
|
|
34
|
+
* ## Posture
|
|
35
|
+
*
|
|
36
|
+
* `permissionMode` is on the transcript's human prompt lines and nowhere else
|
|
37
|
+
* — checked across 120 real stores: 6.7% of `user` lines carry it, no
|
|
38
|
+
* `assistant`, `system` or `attachment` line ever does. So posture is known at
|
|
39
|
+
* prompt boundaries and interpolated between them: the mode declared by the
|
|
40
|
+
* most recent human prompt at or before an interval governs that interval,
|
|
41
|
+
* because that is when the person last told the runtime what it could do
|
|
42
|
+
* unasked.
|
|
43
|
+
*
|
|
44
|
+
* Before the first declaration there is nothing to carry forward, and those
|
|
45
|
+
* milliseconds land in `unknown` — never folded into a neighbouring band, for
|
|
46
|
+
* the reason `autonomyBand` states at length: a guess there would look exactly
|
|
47
|
+
* like a measurement. `unknown` being non-zero is normal and is not a defect.
|
|
48
|
+
*
|
|
49
|
+
* Only supervising time is banded. Posture describes how much latitude the
|
|
50
|
+
* agent had while working; applied to the interval where the person was typing
|
|
51
|
+
* it would describe nothing.
|
|
52
|
+
*/
|
|
53
|
+
import { autonomyBand } from "@ascenda-one/tool-kit";
|
|
54
|
+
/**
|
|
55
|
+
* Upstream's `permissionMode` spellings, snake-cased — the same one
|
|
56
|
+
* transformation `AutonomyMode` documents, applied here because the transcript
|
|
57
|
+
* writes camelCase where the hook payloads write snake_case. Mirroring rather
|
|
58
|
+
* than translating: a mode this table has never seen is passed through
|
|
59
|
+
* verbatim, so it reaches `autonomyBand` as an unrecognised token and lands in
|
|
60
|
+
* `unknown` instead of being quietly mapped onto whichever rung looks close.
|
|
61
|
+
*/
|
|
62
|
+
export function snakeCasePermissionMode(mode) {
|
|
63
|
+
return mode.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toLowerCase();
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The active spans of a timeline, in order.
|
|
67
|
+
*
|
|
68
|
+
* **Ties are collapsed, not ordered.** A parallel tool batch writes several
|
|
69
|
+
* lines on one millisecond, and a human prompt can share an instant with the
|
|
70
|
+
* attachment lines that accompany it. Sorting such lines against each other
|
|
71
|
+
* would make the split depend on a within-millisecond order the store does not
|
|
72
|
+
* promise and the reader cannot see. So every line at one epoch millisecond
|
|
73
|
+
* becomes one instant, `human` if *any* of them was a human prompt and
|
|
74
|
+
* carrying whichever posture was declared there. Intervals between tied lines
|
|
75
|
+
* are zero-length and are not spans, so nothing is lost by it.
|
|
76
|
+
*/
|
|
77
|
+
export function activeSpans(points, options) {
|
|
78
|
+
const collapsed = new Map();
|
|
79
|
+
let undatedPoints = 0;
|
|
80
|
+
for (const point of points) {
|
|
81
|
+
if (!Number.isFinite(point.at)) {
|
|
82
|
+
undatedPoints += 1;
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const existing = collapsed.get(point.at);
|
|
86
|
+
if (existing) {
|
|
87
|
+
existing.human = existing.human || point.human;
|
|
88
|
+
if (point.autonomyMode)
|
|
89
|
+
existing.autonomyMode = point.autonomyMode;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
collapsed.set(point.at, { human: point.human, autonomyMode: point.autonomyMode });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const instants = [...collapsed.keys()].sort((a, b) => a - b);
|
|
96
|
+
const report = {
|
|
97
|
+
spans: [],
|
|
98
|
+
undatedPoints,
|
|
99
|
+
instants: instants.length,
|
|
100
|
+
unposturedInstants: 0
|
|
101
|
+
};
|
|
102
|
+
if (instants.length === 0)
|
|
103
|
+
return report;
|
|
104
|
+
// The posture in force, carried forward from the last human prompt that
|
|
105
|
+
// declared one. Seeded from the first instant before the loop so a session
|
|
106
|
+
// whose opening prompt declares a mode is not credited with an unknown
|
|
107
|
+
// stretch it never had.
|
|
108
|
+
let posture = collapsed.get(instants[0])?.autonomyMode ?? null;
|
|
109
|
+
if (posture === null)
|
|
110
|
+
report.unposturedInstants += 1;
|
|
111
|
+
for (let i = 1; i < instants.length; i += 1) {
|
|
112
|
+
const from = instants[i - 1];
|
|
113
|
+
const to = instants[i];
|
|
114
|
+
const here = collapsed.get(to);
|
|
115
|
+
const gap = to - from;
|
|
116
|
+
if (gap > 0 && gap <= options.activeGapMs) {
|
|
117
|
+
// `autonomyBand` maps a null or unrecognised token to `unknown` on its
|
|
118
|
+
// own; passing the raw carried value keeps that decision in the one
|
|
119
|
+
// place that documents it.
|
|
120
|
+
report.spans.push({ from, to, handsOn: here.human, band: autonomyBand(posture) });
|
|
121
|
+
}
|
|
122
|
+
if (here.autonomyMode)
|
|
123
|
+
posture = here.autonomyMode;
|
|
124
|
+
else if (posture === null)
|
|
125
|
+
report.unposturedInstants += 1;
|
|
126
|
+
}
|
|
127
|
+
return report;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Splits a session's timeline into hands-on and agent-supervising time, by
|
|
131
|
+
* summing {@link activeSpans}.
|
|
132
|
+
*/
|
|
133
|
+
export function splitActiveTime(points, options) {
|
|
134
|
+
const report = activeSpans(points, options);
|
|
135
|
+
const split = {
|
|
136
|
+
handsOnMs: 0,
|
|
137
|
+
agentSupervisingMs: 0,
|
|
138
|
+
supervisingMsByBand: {},
|
|
139
|
+
undatedPoints: report.undatedPoints,
|
|
140
|
+
instants: report.instants,
|
|
141
|
+
unposturedInstants: report.unposturedInstants
|
|
142
|
+
};
|
|
143
|
+
for (const span of report.spans) {
|
|
144
|
+
const ms = span.to - span.from;
|
|
145
|
+
if (span.handsOn) {
|
|
146
|
+
split.handsOnMs += ms;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
split.agentSupervisingMs += ms;
|
|
150
|
+
split.supervisingMsByBand[span.band] = (split.supervisingMsByBand[span.band] ?? 0) + ms;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return split;
|
|
154
|
+
}
|
|
155
|
+
/** Whole minutes, rounded once at the edge. */
|
|
156
|
+
export function minutesOf(ms) {
|
|
157
|
+
return Math.round(ms / 60_000);
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=activeSplit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activeSplit.js","sourceRoot":"","sources":["../src/activeSplit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { addSpanByLocalDay } from "./daySlice.js";
|
|
2
|
+
/**
|
|
3
|
+
* Merges overlapping and touching intervals into a minimal ordered set.
|
|
4
|
+
*
|
|
5
|
+
* Touching counts as merging: `[10, 20)` and `[20, 30)` are twenty
|
|
6
|
+
* milliseconds of one stretch, not two stretches with a zero-width hole. The
|
|
7
|
+
* input is not mutated.
|
|
8
|
+
*/
|
|
9
|
+
export function mergeIntervals(intervals) {
|
|
10
|
+
const sorted = [...intervals]
|
|
11
|
+
.filter((i) => i.to > i.from)
|
|
12
|
+
.sort((a, b) => a.from - b.from || a.to - b.to);
|
|
13
|
+
const merged = [];
|
|
14
|
+
for (const interval of sorted) {
|
|
15
|
+
const last = merged[merged.length - 1];
|
|
16
|
+
if (last && interval.from <= last.to) {
|
|
17
|
+
if (interval.to > last.to)
|
|
18
|
+
last.to = interval.to;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
merged.push({ from: interval.from, to: interval.to });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return merged;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* `minuend` with every part of `subtrahend` removed. Both are merged first, so
|
|
28
|
+
* the caller need not hand over normalised input, and the result is merged by
|
|
29
|
+
* construction.
|
|
30
|
+
*/
|
|
31
|
+
export function subtractIntervals(minuend, subtrahend) {
|
|
32
|
+
const holes = mergeIntervals(subtrahend);
|
|
33
|
+
const out = [];
|
|
34
|
+
for (const span of mergeIntervals(minuend)) {
|
|
35
|
+
let cursor = span.from;
|
|
36
|
+
for (const hole of holes) {
|
|
37
|
+
if (hole.to <= cursor)
|
|
38
|
+
continue;
|
|
39
|
+
if (hole.from >= span.to)
|
|
40
|
+
break;
|
|
41
|
+
if (hole.from > cursor)
|
|
42
|
+
out.push({ from: cursor, to: hole.from });
|
|
43
|
+
cursor = Math.max(cursor, hole.to);
|
|
44
|
+
if (cursor >= span.to)
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
if (cursor < span.to)
|
|
48
|
+
out.push({ from: cursor, to: span.to });
|
|
49
|
+
}
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
52
|
+
/** Total length of a set of intervals, which is only the elapsed time if they
|
|
53
|
+
* do not overlap — pass merged input, or use {@link unionActiveTime}. */
|
|
54
|
+
export function totalMs(intervals) {
|
|
55
|
+
return intervals.reduce((sum, i) => sum + (i.to - i.from), 0);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The deepest number of spans covering any single instant.
|
|
59
|
+
*
|
|
60
|
+
* A sweep over start/end events rather than a scan of pairs, so a project with
|
|
61
|
+
* a hundred thousand spans costs a sort rather than a quadratic.
|
|
62
|
+
*/
|
|
63
|
+
function peakOverlap(intervals) {
|
|
64
|
+
const edges = [];
|
|
65
|
+
for (const interval of intervals) {
|
|
66
|
+
if (interval.to <= interval.from)
|
|
67
|
+
continue;
|
|
68
|
+
edges.push({ at: interval.from, delta: 1 });
|
|
69
|
+
edges.push({ at: interval.to, delta: -1 });
|
|
70
|
+
}
|
|
71
|
+
// Ends before starts at a shared instant: a span ending exactly where the
|
|
72
|
+
// next begins is a handover, not an overlap.
|
|
73
|
+
edges.sort((a, b) => a.at - b.at || a.delta - b.delta);
|
|
74
|
+
let depth = 0;
|
|
75
|
+
let peak = 0;
|
|
76
|
+
for (const edge of edges) {
|
|
77
|
+
depth += edge.delta;
|
|
78
|
+
if (depth > peak)
|
|
79
|
+
peak = depth;
|
|
80
|
+
}
|
|
81
|
+
return peak;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Unions classified spans from any number of sessions into one elapsed-time
|
|
85
|
+
* reading.
|
|
86
|
+
*
|
|
87
|
+
* Spans may be handed in in any order and from any number of sessions; the
|
|
88
|
+
* result does not depend on which session they came from, which is the point —
|
|
89
|
+
* the person lived one timeline regardless of how many transcripts recorded it.
|
|
90
|
+
*/
|
|
91
|
+
export function unionActiveTime(spans) {
|
|
92
|
+
const handsOn = [];
|
|
93
|
+
const supervising = [];
|
|
94
|
+
for (const span of spans) {
|
|
95
|
+
if (span.to <= span.from)
|
|
96
|
+
continue;
|
|
97
|
+
(span.handsOn ? handsOn : supervising).push({ from: span.from, to: span.to });
|
|
98
|
+
}
|
|
99
|
+
const mergedHandsOn = mergeIntervals(handsOn);
|
|
100
|
+
// Hands-on wins the overlap; see the module note.
|
|
101
|
+
const mergedSupervising = subtractIntervals(supervising, mergedHandsOn);
|
|
102
|
+
const handsOnMs = totalMs(mergedHandsOn);
|
|
103
|
+
const agentSupervisingMs = totalMs(mergedSupervising);
|
|
104
|
+
const summedHandsOnMs = totalMs(handsOn);
|
|
105
|
+
const summedAgentSupervisingMs = totalMs(supervising);
|
|
106
|
+
const unionedMs = handsOnMs + agentSupervisingMs;
|
|
107
|
+
return {
|
|
108
|
+
handsOnMs,
|
|
109
|
+
agentSupervisingMs,
|
|
110
|
+
summedHandsOnMs,
|
|
111
|
+
summedAgentSupervisingMs,
|
|
112
|
+
meanConcurrency: unionedMs > 0 ? (summedHandsOnMs + summedAgentSupervisingMs) / unionedMs : null,
|
|
113
|
+
peakConcurrency: peakOverlap([...handsOn, ...supervising])
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* The unioned spans themselves, hands-on and supervising kept apart, for a
|
|
118
|
+
* caller that needs to place them on days rather than only total them.
|
|
119
|
+
*/
|
|
120
|
+
export function unionActiveSpans(spans) {
|
|
121
|
+
const handsOn = [];
|
|
122
|
+
const supervising = [];
|
|
123
|
+
for (const span of spans) {
|
|
124
|
+
if (span.to <= span.from)
|
|
125
|
+
continue;
|
|
126
|
+
(span.handsOn ? handsOn : supervising).push({ from: span.from, to: span.to });
|
|
127
|
+
}
|
|
128
|
+
const mergedHandsOn = mergeIntervals(handsOn);
|
|
129
|
+
return {
|
|
130
|
+
handsOn: mergedHandsOn,
|
|
131
|
+
agentSupervising: subtractIntervals(supervising, mergedHandsOn)
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* The unioned time placed on local days, with the material a window needs to
|
|
136
|
+
* state its own concurrency.
|
|
137
|
+
*
|
|
138
|
+
* Splitting happens after the union, never before: merging Monday's spans and
|
|
139
|
+
* Tuesday's separately would be correct here but would need the day boundary
|
|
140
|
+
* applied twice, and a span that runs 23:50 -> 00:10 has to be cut by the same
|
|
141
|
+
* rule the per-session slices use. That rule lives in `daySlice.ts` and is
|
|
142
|
+
* imported rather than restated.
|
|
143
|
+
*/
|
|
144
|
+
export function unionActiveByLocalDay(spans) {
|
|
145
|
+
const merged = unionActiveSpans(spans);
|
|
146
|
+
const handsOnByDay = new Map();
|
|
147
|
+
const supervisingByDay = new Map();
|
|
148
|
+
for (const interval of merged.handsOn) {
|
|
149
|
+
addSpanByLocalDay(handsOnByDay, new Date(interval.from), new Date(interval.to));
|
|
150
|
+
}
|
|
151
|
+
for (const interval of merged.agentSupervising) {
|
|
152
|
+
addSpanByLocalDay(supervisingByDay, new Date(interval.from), new Date(interval.to));
|
|
153
|
+
}
|
|
154
|
+
// The sums use the raw spans, deliberately unmerged: this is the figure the
|
|
155
|
+
// rollup used to report on its own, kept per day so the gap between it and
|
|
156
|
+
// the union stays visible at whatever grain a reader asks about.
|
|
157
|
+
const summedHandsOnByDay = new Map();
|
|
158
|
+
const summedSupervisingByDay = new Map();
|
|
159
|
+
// Raw spans clipped per day, for the peak. A span crossing midnight
|
|
160
|
+
// contributes its depth to both days it touches, which is what a peak *in a
|
|
161
|
+
// day* means: the person's Tuesday is not made shallower by work that began
|
|
162
|
+
// on Monday.
|
|
163
|
+
const spansByDay = new Map();
|
|
164
|
+
for (const span of spans) {
|
|
165
|
+
if (span.to <= span.from)
|
|
166
|
+
continue;
|
|
167
|
+
addSpanByLocalDay(span.handsOn ? summedHandsOnByDay : summedSupervisingByDay, new Date(span.from), new Date(span.to));
|
|
168
|
+
for (const [day, clipped] of clipByLocalDay(span)) {
|
|
169
|
+
const bucket = spansByDay.get(day);
|
|
170
|
+
if (bucket)
|
|
171
|
+
bucket.push(clipped);
|
|
172
|
+
else
|
|
173
|
+
spansByDay.set(day, [clipped]);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const days = [
|
|
177
|
+
...new Set([
|
|
178
|
+
...handsOnByDay.keys(),
|
|
179
|
+
...supervisingByDay.keys(),
|
|
180
|
+
...summedHandsOnByDay.keys(),
|
|
181
|
+
...summedSupervisingByDay.keys()
|
|
182
|
+
])
|
|
183
|
+
].sort();
|
|
184
|
+
return new Map(days.map((day) => [
|
|
185
|
+
day,
|
|
186
|
+
{
|
|
187
|
+
handsOnMs: handsOnByDay.get(day) ?? 0,
|
|
188
|
+
agentSupervisingMs: supervisingByDay.get(day) ?? 0,
|
|
189
|
+
summedHandsOnMs: summedHandsOnByDay.get(day) ?? 0,
|
|
190
|
+
summedAgentSupervisingMs: summedSupervisingByDay.get(day) ?? 0,
|
|
191
|
+
peakConcurrency: peakOverlap(spansByDay.get(day) ?? [])
|
|
192
|
+
}
|
|
193
|
+
]));
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* One interval per local day the span touches, each clipped to that day.
|
|
197
|
+
*
|
|
198
|
+
* The boundary comes from `addSpanByLocalDay` rather than a second midnight
|
|
199
|
+
* calculation: the midnight a span is cut at must be the midnight its minutes
|
|
200
|
+
* were credited to, and there is only one way to guarantee that. Replaying the
|
|
201
|
+
* per-day durations it records, in order, from the span's start reconstructs
|
|
202
|
+
* the cut points exactly.
|
|
203
|
+
*/
|
|
204
|
+
function clipByLocalDay(interval) {
|
|
205
|
+
const perDay = new Map();
|
|
206
|
+
addSpanByLocalDay(perDay, new Date(interval.from), new Date(interval.to));
|
|
207
|
+
const out = [];
|
|
208
|
+
let cursor = interval.from;
|
|
209
|
+
for (const [day, ms] of perDay) {
|
|
210
|
+
out.push([day, { from: cursor, to: cursor + ms }]);
|
|
211
|
+
cursor += ms;
|
|
212
|
+
}
|
|
213
|
+
return out;
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=activeUnion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activeUnion.js","sourceRoot":"","sources":["../src/activeUnion.ts"],"names":[],"mappings":"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"}
|
package/dist/archive.js
CHANGED
|
@@ -62,6 +62,8 @@ export function defaultArchiveRoot(home) {
|
|
|
62
62
|
export function defaultArchiveSources(paths, includeVsCodeSessions = false) {
|
|
63
63
|
const sources = [
|
|
64
64
|
{ store: "claude_code", root: paths.claudeProjects, label: "projects" },
|
|
65
|
+
{ store: "codex", root: paths.codexSessions, label: "sessions" },
|
|
66
|
+
{ store: "codex", root: paths.codexArchivedSessions, label: "archived_sessions" },
|
|
65
67
|
{ store: "cursor", root: paths.cursorStateDb, siblings: ["-wal", "-shm"], label: "state" },
|
|
66
68
|
{ store: "vscode", root: paths.vscodeHistory, label: "history" }
|
|
67
69
|
];
|
package/dist/archive.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../src/archive.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../src/archive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIhD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAClE,CAAC;AA+BD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAiB,EACjB,qBAAqB,GAAG,KAAK;IAE7B,MAAM,OAAO,GAAoB;QAC/B,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE;QACvE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE;QAChE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,EAAE;QACjF,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;QAC1F,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE;KACjE,CAAC;IACF,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,sBAAsB,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ,CAAC,WAAmB,EAAE,MAAc;IACnD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,WAAW,CAAC,WAAmB;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,4EAA4E;IAC5E,wEAAwE;IACxE,wDAAwD;IACxD,MAAM,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,2EAA2E;AAC3E,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,IAAI,EAAE,CAAC;IACP,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;QAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElF,MAAM,KAAK,GAA6C,EAAE,CAAC;IAC3D,KAAK,UAAU,IAAI,CAAC,GAAW,EAAE,MAAc;QAC7C,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,gEAAgE;QAC1E,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YACjE,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;iBACnD,IAAI,KAAK,CAAC,MAAM,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB;IACrD,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;aAChD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aACvC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,WAAmB,EACnB,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,GAAG,UAAU,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QACjG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;QAClD,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc;YAAE,OAAO,IAAI,CAAC;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,WAAmB;IAC1D,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AA2BD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAuB;IACzD,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAC1D,MAAM,MAAM,GAAkB;QAC5B,UAAU;QACV,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,GAAG,UAAU,OAAO,CAAC;QACvE,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,CAAC;QACpB,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,CAAC;KACd,CAAC;IAEF,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;QACzC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,KAAK,GAA2B,EAAE,CAAC;IAEzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QACvD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;YAAC,MAAM,CAAC;gBACP,2DAA2D;YAC7D,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK;YACxE,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;QAEH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,uEAAuE;YACvE,MAAM,YAAY,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC1D,IAAI,EAAE,CAAC;YACP,IAAI,CAAC;gBACH,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;gBACvB,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC,CAAC;YACnE,IAAI,MAAM,GAAkB,IAAI,CAAC;YAEjC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;gBACpE,mEAAmE;gBACnE,8CAA8C;gBAC9C,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oBACnD,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,GAAG,IAAI,CAAC,CAAC,kDAAkD;gBACnE,CAAC;YACH,CAAC;YAED,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3C,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;oBACvB,SAAS;gBACX,CAAC;YACH,CAAC;YAED,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,WAAW,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,WAAW,GAAG,KAAK,CAAC;YACtB,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/D,sEAAsE;gBACtE,qEAAqE;gBACrE,sDAAsD;gBACtD,MAAM,SAAS,GAAG,GAAG,WAAW,QAAQ,UAAU,EAAE,CAAC;gBACrD,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAC9C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBACxC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC;oBAC3B,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC;gBACjC,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;oBACvB,SAAS;gBACX,CAAC;YACH,CAAC;YAED,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,YAAY;gBACZ,MAAM;gBACN,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,OAAO,EAAE,EAAE,CAAC,OAAO;aACpB,CAAC,CAAC;YACH,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;YAC1B,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI,CAAC;YAC7B,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAoB;QAChC,MAAM,EAAE,cAAc;QACtB,UAAU;QACV,SAAS,EAAE,GAAG;QACd,KAAK;QACL,KAAK;KACN,CAAC;IACF,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,YAAY,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAChF,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,QAAyB,EACzB,IAAI,GAAG,IAAI;IAEX,MAAM,MAAM,GAAiB,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACzG,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,SAAS;QAC/C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QACD,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAYD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,QAAyB,EACzB,WAAmB;IAEnB,MAAM,MAAM,GAAkB,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;IACvE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAChC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAYD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAmB,EAAE,IAAY;IAClE,MAAM,MAAM,GAAgB,EAAE,kBAAkB,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IACvF,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEjG,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,GAAG,UAAU,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACxF,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,kDAAkD;QACpD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,UAAU,IAAI,MAAM,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC7D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,KAAK,IAAI,EAAE;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,MAAM,GAAa,EAAE,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;aAC9D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,uEAAuE;YACvE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACnD,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,CAAC;gBACH,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;gBACzB,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,qEAAqE;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAa,EAAE,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;aAC9D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrE,CAAC;YAAC,MAAM,CAAC;gBACP,uEAAuE;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|