@tryglen/cli 0.24.9 → 0.26.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/README.md +55 -28
- package/dist/_utils/cli-error.d.ts +1 -0
- package/dist/_utils/cli-error.js.map +1 -1
- package/dist/_utils/config.d.ts +7 -0
- package/dist/_utils/config.js +7 -0
- package/dist/_utils/config.js.map +1 -1
- package/dist/_utils/normalize-transcript-timestamp.d.ts +2 -0
- package/dist/_utils/normalize-transcript-timestamp.js +19 -0
- package/dist/_utils/normalize-transcript-timestamp.js.map +1 -0
- package/dist/_utils/parse-claude-transcript.js +12 -2
- package/dist/_utils/parse-claude-transcript.js.map +1 -1
- package/dist/_utils/parse-codex-transcript.js +7 -3
- package/dist/_utils/parse-codex-transcript.js.map +1 -1
- package/dist/_utils/parse-cursor-db.js +5 -1
- package/dist/_utils/parse-cursor-db.js.map +1 -1
- package/dist/_utils/parse-pi-transcript.js +14 -6
- package/dist/_utils/parse-pi-transcript.js.map +1 -1
- package/dist/_utils/refresh-control-state.d.ts +3 -0
- package/dist/_utils/refresh-control-state.js +24 -0
- package/dist/_utils/refresh-control-state.js.map +1 -0
- package/dist/_utils/sync-mode-from-server.d.ts +1 -2
- package/dist/_utils/sync-mode-from-server.js +28 -13
- package/dist/_utils/sync-mode-from-server.js.map +1 -1
- package/dist/_utils/transcript-turns.d.ts +2 -0
- package/dist/_utils/transcript-turns.js +12 -2
- package/dist/_utils/transcript-turns.js.map +1 -1
- package/dist/bin.js +10 -0
- package/dist/bin.js.map +1 -1
- package/dist/commands/import.js +18 -8
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/ingest.js +8 -4
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/org.js +51 -4
- package/dist/commands/org.js.map +1 -1
- package/dist/commands/session-start.js +5 -1
- package/dist/commands/session-start.js.map +1 -1
- package/dist/commands/set-mode.d.ts +3 -4
- package/dist/commands/set-mode.js +20 -15
- package/dist/commands/set-mode.js.map +1 -1
- package/dist/commands/takeover/_utils/agent-paths.d.ts +6 -0
- package/dist/commands/takeover/_utils/agent-paths.js +23 -0
- package/dist/commands/takeover/_utils/agent-paths.js.map +1 -0
- package/dist/commands/takeover/_utils/archive-codex-desktop-thread.d.ts +5 -0
- package/dist/commands/takeover/_utils/archive-codex-desktop-thread.js +63 -0
- package/dist/commands/takeover/_utils/archive-codex-desktop-thread.js.map +1 -0
- package/dist/commands/takeover/_utils/canonical-digest.d.ts +5 -0
- package/dist/commands/takeover/_utils/canonical-digest.js +4 -0
- package/dist/commands/takeover/_utils/canonical-digest.js.map +1 -0
- package/dist/commands/takeover/_utils/codex-desktop-recovery.d.ts +16 -0
- package/dist/commands/takeover/_utils/codex-desktop-recovery.js +102 -0
- package/dist/commands/takeover/_utils/codex-desktop-recovery.js.map +1 -0
- package/dist/commands/takeover/_utils/context-fit.d.ts +18 -0
- package/dist/commands/takeover/_utils/context-fit.js +30 -0
- package/dist/commands/takeover/_utils/context-fit.js.map +1 -0
- package/dist/commands/takeover/_utils/cursor-store.d.ts +49 -0
- package/dist/commands/takeover/_utils/cursor-store.js +359 -0
- package/dist/commands/takeover/_utils/cursor-store.js.map +1 -0
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.d.ts +9 -0
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.js +143 -0
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.js.map +1 -0
- package/dist/commands/takeover/_utils/launch-desktop-url.d.ts +4 -0
- package/dist/commands/takeover/_utils/launch-desktop-url.js +40 -0
- package/dist/commands/takeover/_utils/launch-desktop-url.js.map +1 -0
- package/dist/commands/takeover/_utils/native-file.d.ts +14 -0
- package/dist/commands/takeover/_utils/native-file.js +105 -0
- package/dist/commands/takeover/_utils/native-file.js.map +1 -0
- package/dist/commands/takeover/_utils/probe-agent.d.ts +20 -0
- package/dist/commands/takeover/_utils/probe-agent.js +37 -0
- package/dist/commands/takeover/_utils/probe-agent.js.map +1 -0
- package/dist/commands/takeover/_utils/provenance-context.d.ts +7 -0
- package/dist/commands/takeover/_utils/provenance-context.js +12 -0
- package/dist/commands/takeover/_utils/provenance-context.js.map +1 -0
- package/dist/commands/takeover/_utils/staged-session.d.ts +64 -0
- package/dist/commands/takeover/_utils/staged-session.js +30 -0
- package/dist/commands/takeover/_utils/staged-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-claude-desktop-session.d.ts +47 -0
- package/dist/commands/takeover/_utils/write-claude-desktop-session.js +24 -0
- package/dist/commands/takeover/_utils/write-claude-desktop-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-claude-session.d.ts +53 -0
- package/dist/commands/takeover/_utils/write-claude-session.js +132 -0
- package/dist/commands/takeover/_utils/write-claude-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-codex-desktop-session.d.ts +94 -0
- package/dist/commands/takeover/_utils/write-codex-desktop-session.js +233 -0
- package/dist/commands/takeover/_utils/write-codex-desktop-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-codex-session.d.ts +52 -0
- package/dist/commands/takeover/_utils/write-codex-session.js +117 -0
- package/dist/commands/takeover/_utils/write-codex-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-cursor-session.d.ts +57 -0
- package/dist/commands/takeover/_utils/write-cursor-session.js +174 -0
- package/dist/commands/takeover/_utils/write-cursor-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-pi-session.d.ts +52 -0
- package/dist/commands/takeover/_utils/write-pi-session.js +173 -0
- package/dist/commands/takeover/_utils/write-pi-session.js.map +1 -0
- package/dist/commands/takeover/index.d.ts +21 -0
- package/dist/commands/takeover/index.js +201 -0
- package/dist/commands/takeover/index.js.map +1 -0
- package/dist/commands/takeover/takeover.schema.d.ts +24 -0
- package/dist/commands/takeover/takeover.schema.js +66 -0
- package/dist/commands/takeover/takeover.schema.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,34 +11,59 @@ glen login
|
|
|
11
11
|
|
|
12
12
|
## Commands
|
|
13
13
|
|
|
14
|
-
| Command
|
|
15
|
-
|
|
16
|
-
| `glen login`
|
|
17
|
-
| `glen logout`
|
|
18
|
-
| `glen status`
|
|
19
|
-
| `glen search "<query>"`
|
|
20
|
-
| `glen
|
|
21
|
-
| `glen
|
|
22
|
-
| `glen
|
|
23
|
-
| `glen org
|
|
24
|
-
| `glen
|
|
25
|
-
| `glen
|
|
26
|
-
| `glen
|
|
27
|
-
| `glen
|
|
28
|
-
| `glen
|
|
29
|
-
| `glen
|
|
30
|
-
| `glen
|
|
31
|
-
| `glen
|
|
14
|
+
| Command | Description |
|
|
15
|
+
| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
16
|
+
| `glen login` | Connect via browser sign-in; writes credentials and initial session state. |
|
|
17
|
+
| `glen logout` | Sign out and remove credentials + session state. |
|
|
18
|
+
| `glen status` | Show connection status, active org, incognito state, and CLI version. |
|
|
19
|
+
| `glen search "<query>"` | Search the team's shared glen memory. |
|
|
20
|
+
| `glen takeover <code>` | Redeem a transcript-page handoff into a fresh native Claude Code, Codex, Cursor, or Pi session, then open it. The complete transcript must fit; Glen never truncates or summarizes it. |
|
|
21
|
+
| `glen import <path…> [--dry-run]` | Import old local agent transcripts (Claude Code `~/.claude/projects`, Codex `~/.codex/sessions`, Cursor `state.vscdb`, Pi `~/.pi/agent/sessions`) into glen memory. Idempotent — re-running skips already-imported turns. `--dry-run` previews without writing. |
|
|
22
|
+
| `glen incognito on\|off` | Toggle incognito mode: while on, nothing is recorded (recall keeps working). |
|
|
23
|
+
| `glen org list` | List your organizations; active one is marked with `✓`. |
|
|
24
|
+
| `glen org switch [slug]` | Switch the active organization for this machine (interactive picker without `slug`). |
|
|
25
|
+
| `glen ingest [--agent <name>]` | Ingest a turn from stdin — used by agent hooks (`claude-code`, `codex`, `cursor`, or `pi`). |
|
|
26
|
+
| `glen install [--agent <claude\|codex\|cursor\|pi>]` | Set up or update glen for detected coding agents (plugin + hooks); idempotent, so re-running repairs a broken setup. `--claude-path <path>` / `--codex-path <path>` / `--pi-path <path>` point at a binary when auto-detection fails. |
|
|
27
|
+
| `glen uninstall` | Permanently remove Glen's local plugins, marketplaces, hooks, PATH entries, credentials, state, caches, and global npm CLI. |
|
|
28
|
+
| `glen update` | Update the glen CLI **and** any installed glen plugins, and re-verify the Codex hook registration. Never installs a plugin that isn't already installed — that's `glen install`'s job. |
|
|
29
|
+
| `glen doctor [--auto]` | Print machine-readable `status:` lines (CLI version/latest/channel, login + org, per-agent plugin + hook state) plus `→` remedy lines — the setup skill branches on them. `--auto` runs background updates silently (used by hooks). |
|
|
30
|
+
| `glen statusline` | Output a single status line for the agent's UI status bar — used by hooks. |
|
|
31
|
+
| `glen session-start [--agent <name>]` | Output hook JSON for the agent's `SessionStart` event — used by hooks. |
|
|
32
|
+
| `glen version` | Print the CLI version. |
|
|
32
33
|
|
|
33
34
|
## Files
|
|
34
35
|
|
|
35
|
-
| File
|
|
36
|
-
|
|
37
|
-
| `~/.glen/credentials.json` | API key credential — mode `0600`, never logged or sent to anyone but `tryglen.com`.
|
|
38
|
-
| `~/.glen/state.json`
|
|
36
|
+
| File | Description |
|
|
37
|
+
| -------------------------- | --------------------------------------------------------------------------------------------------- |
|
|
38
|
+
| `~/.glen/credentials.json` | API key credential — mode `0600`, never logged or sent to anyone but `tryglen.com`. |
|
|
39
|
+
| `~/.glen/state.json` | Client-owned session state: `{ activeOrgId, activeOrgSlug, activeOrgName, incognito }`. Non-secret. |
|
|
39
40
|
|
|
40
41
|
The state file is what the CLI sends as `x-glen-org-id` / `x-glen-incognito` headers on every request. The server validates org membership on every call — no state is stored server-side.
|
|
41
42
|
|
|
43
|
+
## Transcript takeover
|
|
44
|
+
|
|
45
|
+
Open a shared agent-session transcript in Glen, choose **Take over**, select the
|
|
46
|
+
destination agent, and run the generated command from the destination project:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
glen takeover <code>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The code is bound to the signed-in recipient and active organization and expires
|
|
53
|
+
after 15 minutes. Glen checks the installed agent version, native history format,
|
|
54
|
+
launcher, and a conservative context-window budget before it writes anything. It
|
|
55
|
+
then stages a fresh session, parses that native session back, verifies the full
|
|
56
|
+
message digest, installs it without overwriting an existing session, records the
|
|
57
|
+
handoff, and launches the agent. The source transcript is never changed.
|
|
58
|
+
|
|
59
|
+
If any check fails, Glen prints what failed and how to retry. If installation
|
|
60
|
+
succeeds but launch fails, it prints the native resume command. Cursor takeover
|
|
61
|
+
requires Cursor 3.9.x to be fully closed and Node.js 22.5 or newer; Glen backs up
|
|
62
|
+
both Cursor SQLite stores and updates them in one transaction. Claude Code 2.1.x,
|
|
63
|
+
Codex CLI 0.143.x–0.144.x, and Pi v3 session trees are supported by this release.
|
|
64
|
+
Unknown versions, schemas, models, or context capacities fail closed. Running
|
|
65
|
+
tools, terminals, approvals, and other live runtime state do not transfer.
|
|
66
|
+
|
|
42
67
|
## Uninstall
|
|
43
68
|
|
|
44
69
|
`glen uninstall` permanently removes Glen's local agent plugins, marketplaces,
|
|
@@ -52,12 +77,12 @@ is addressed.
|
|
|
52
77
|
|
|
53
78
|
## Environment variables
|
|
54
79
|
|
|
55
|
-
| Variable
|
|
56
|
-
|
|
57
|
-
| `GLEN_BASE_URL`
|
|
58
|
-
| `GLEN_CREDENTIALS_PATH` | `~/.glen/credentials.json` | Override credentials file location.
|
|
59
|
-
| `GLEN_STATE_PATH`
|
|
60
|
-
| `GLEN_NO_AUTO_UPDATE`
|
|
80
|
+
| Variable | Default | Description |
|
|
81
|
+
| ----------------------- | -------------------------- | --------------------------------------------------------------------------------- |
|
|
82
|
+
| `GLEN_BASE_URL` | `https://app.tryglen.com` | Override the glen server URL (useful for local dev). |
|
|
83
|
+
| `GLEN_CREDENTIALS_PATH` | `~/.glen/credentials.json` | Override credentials file location. |
|
|
84
|
+
| `GLEN_STATE_PATH` | `~/.glen/state.json` | Override state file location. |
|
|
85
|
+
| `GLEN_NO_AUTO_UPDATE` | unset | Set to `1` to disable automatic background updates. Also disabled when `CI=true`. |
|
|
61
86
|
|
|
62
87
|
## Update behavior
|
|
63
88
|
|
|
@@ -68,6 +93,7 @@ The CLI uses layered silent auto-update so you stay current without thinking abo
|
|
|
68
93
|
3. **Server-driven 426 floor:** if the server requires a newer CLI version (breaking API change), it responds with `HTTP 426 Upgrade Required`. The CLI then runs a synchronous self-update and re-execs your original command with `GLEN_REEXEC=1` set to prevent infinite loops. If the update fails or you are below the minimum after re-exec, it exits with a message to run `npm i -g @tryglen/cli@latest` manually.
|
|
69
94
|
|
|
70
95
|
Escape hatches:
|
|
96
|
+
|
|
71
97
|
- `GLEN_NO_AUTO_UPDATE=1` disables all background update attempts.
|
|
72
98
|
- `CI=true` (set automatically in GitHub Actions and most CI systems) also disables them.
|
|
73
99
|
- The CLI only self-updates when installed globally via npm (it detects this by comparing the binary's real path against `npm prefix -g`). If you installed via another package manager, you get a hint to update with your own tooling instead.
|
|
@@ -85,6 +111,7 @@ The server requires a newer CLI version. Run `npm i -g @tryglen/cli@latest` (or
|
|
|
85
111
|
|
|
86
112
|
**Stuck update lock**
|
|
87
113
|
If a previous update was interrupted, a stale lock can prevent future auto-updates:
|
|
114
|
+
|
|
88
115
|
```bash
|
|
89
116
|
rm -rf ~/.glen/update.lock
|
|
90
117
|
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-error.js","sourceRoot":"","sources":["../../src/_utils/cli-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-error.js","sourceRoot":"","sources":["../../src/_utils/cli-error.ts"],"names":[],"mappings":"AAaA,4EAA4E;AAC5E,oEAAoE;AACpE,MAAM,MAAM,GAAG,CAAC,CAAW,EAAY,EAAE,CAAC,CAAC,CAAC;AAE5C,8DAA8D;AAC9D,MAAM,OAAO,GAAG,CAAC,CAAU,EAAU,EAAE;IACrC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,GAAI,CAA2B,CAAC,IAAI,CAAC;QAC/C,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACpD,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,CAAW,EAAU,EAAE;IAC7C,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,CAAC,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9B,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
package/dist/_utils/config.d.ts
CHANGED
|
@@ -18,8 +18,13 @@ declare const config: {
|
|
|
18
18
|
commitAnchorUrl: string;
|
|
19
19
|
codeSearchUrl: string;
|
|
20
20
|
importUrl: string;
|
|
21
|
+
prepareTakeoverUrl: string;
|
|
22
|
+
completeTakeoverUrl: string;
|
|
21
23
|
setRecordingUrl: string;
|
|
22
24
|
setSuggestionsUrl: string;
|
|
25
|
+
controlStatusUrl: string;
|
|
26
|
+
beginOrgSwitchUrl: string;
|
|
27
|
+
finishOrgSwitchUrl: string;
|
|
23
28
|
ingestTimeoutMs: number;
|
|
24
29
|
searchTimeoutMs: number;
|
|
25
30
|
forgetTimeoutMs: number;
|
|
@@ -27,7 +32,9 @@ declare const config: {
|
|
|
27
32
|
commitAnchorTimeoutMs: number;
|
|
28
33
|
codeSearchTimeoutMs: number;
|
|
29
34
|
importTimeoutMs: number;
|
|
35
|
+
takeoverTimeoutMs: number;
|
|
30
36
|
setRecordingTimeoutMs: number;
|
|
31
37
|
setSuggestionsTimeoutMs: number;
|
|
38
|
+
controlStatusTimeoutMs: number;
|
|
32
39
|
};
|
|
33
40
|
export { config };
|
package/dist/_utils/config.js
CHANGED
|
@@ -21,8 +21,13 @@ const config = {
|
|
|
21
21
|
commitAnchorUrl: `${baseUrl}/api/mcp/route/commitAnchor`,
|
|
22
22
|
codeSearchUrl: `${baseUrl}/api/mcp/route/codeSearch`,
|
|
23
23
|
importUrl: `${baseUrl}/api/mcp/route/importTranscript`,
|
|
24
|
+
prepareTakeoverUrl: `${baseUrl}/api/mcp/route/prepareTakeover`,
|
|
25
|
+
completeTakeoverUrl: `${baseUrl}/api/mcp/route/completeTakeover`,
|
|
24
26
|
setRecordingUrl: `${baseUrl}/api/mcp/route/setRecording`,
|
|
25
27
|
setSuggestionsUrl: `${baseUrl}/api/mcp/route/setSuggestions`,
|
|
28
|
+
controlStatusUrl: `${baseUrl}/api/mcp/route/controlStatus`,
|
|
29
|
+
beginOrgSwitchUrl: `${baseUrl}/api/mcp/route/beginOrgSwitch`,
|
|
30
|
+
finishOrgSwitchUrl: `${baseUrl}/api/mcp/route/finishOrgSwitch`,
|
|
26
31
|
ingestTimeoutMs: 8000,
|
|
27
32
|
searchTimeoutMs: 60_000,
|
|
28
33
|
forgetTimeoutMs: 15_000,
|
|
@@ -32,8 +37,10 @@ const config = {
|
|
|
32
37
|
codeSearchTimeoutMs: 30_000,
|
|
33
38
|
// Per-turn write; generous because imported turns can carry near-cap content.
|
|
34
39
|
importTimeoutMs: 15_000,
|
|
40
|
+
takeoverTimeoutMs: 30_000,
|
|
35
41
|
setRecordingTimeoutMs: 10_000,
|
|
36
42
|
setSuggestionsTimeoutMs: 10_000,
|
|
43
|
+
controlStatusTimeoutMs: 3000,
|
|
37
44
|
};
|
|
38
45
|
export { config };
|
|
39
46
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/_utils/config.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gEAAgE;AAChE,MAAM,OAAO,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,yBAAyB,CACvD,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEtB,MAAM,MAAM,GAAG;IACb,OAAO;IACP,UAAU,EAAE,GAAG,OAAO,cAAc;IACpC,WAAW,EAAE,GAAG,OAAO,2BAA2B;IAClD,OAAO,EAAE,GAAG,OAAO,qBAAqB;IACxC,SAAS,EAAE,GAAG,OAAO,uBAAuB;IAC5C,SAAS,EAAE,GAAG,OAAO,uBAAuB;IAC5C,UAAU,EAAE,GAAG,OAAO,wBAAwB;IAC9C,SAAS,EAAE,GAAG,OAAO,6BAA6B;IAClD,WAAW,EAAE,GAAG,OAAO,yBAAyB;IAChD,cAAc,EAAE,GAAG,OAAO,4BAA4B;IACtD,WAAW,EAAE,GAAG,OAAO,yBAAyB;IAChD,cAAc,EAAE,GAAG,OAAO,4BAA4B;IACtD,mBAAmB,EAAE,GAAG,OAAO,iCAAiC;IAChE,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,cAAc,EAAE,GAAG,OAAO,4BAA4B;IACtD,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,eAAe,EAAE,GAAG,OAAO,6BAA6B;IACxD,aAAa,EAAE,GAAG,OAAO,2BAA2B;IACpD,SAAS,EAAE,GAAG,OAAO,iCAAiC;IACtD,eAAe,EAAE,GAAG,OAAO,6BAA6B;IACxD,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,MAAM;IACzB,qBAAqB,EAAE,IAAI;IAC3B,oFAAoF;IACpF,mBAAmB,EAAE,MAAM;IAC3B,8EAA8E;IAC9E,eAAe,EAAE,MAAM;IACvB,qBAAqB,EAAE,MAAM;IAC7B,uBAAuB,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/_utils/config.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gEAAgE;AAChE,MAAM,OAAO,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,yBAAyB,CACvD,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEtB,MAAM,MAAM,GAAG;IACb,OAAO;IACP,UAAU,EAAE,GAAG,OAAO,cAAc;IACpC,WAAW,EAAE,GAAG,OAAO,2BAA2B;IAClD,OAAO,EAAE,GAAG,OAAO,qBAAqB;IACxC,SAAS,EAAE,GAAG,OAAO,uBAAuB;IAC5C,SAAS,EAAE,GAAG,OAAO,uBAAuB;IAC5C,UAAU,EAAE,GAAG,OAAO,wBAAwB;IAC9C,SAAS,EAAE,GAAG,OAAO,6BAA6B;IAClD,WAAW,EAAE,GAAG,OAAO,yBAAyB;IAChD,cAAc,EAAE,GAAG,OAAO,4BAA4B;IACtD,WAAW,EAAE,GAAG,OAAO,yBAAyB;IAChD,cAAc,EAAE,GAAG,OAAO,4BAA4B;IACtD,mBAAmB,EAAE,GAAG,OAAO,iCAAiC;IAChE,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,cAAc,EAAE,GAAG,OAAO,4BAA4B;IACtD,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,eAAe,EAAE,GAAG,OAAO,6BAA6B;IACxD,aAAa,EAAE,GAAG,OAAO,2BAA2B;IACpD,SAAS,EAAE,GAAG,OAAO,iCAAiC;IACtD,kBAAkB,EAAE,GAAG,OAAO,gCAAgC;IAC9D,mBAAmB,EAAE,GAAG,OAAO,iCAAiC;IAChE,eAAe,EAAE,GAAG,OAAO,6BAA6B;IACxD,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,gBAAgB,EAAE,GAAG,OAAO,8BAA8B;IAC1D,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,kBAAkB,EAAE,GAAG,OAAO,gCAAgC;IAC9D,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,MAAM;IACzB,qBAAqB,EAAE,IAAI;IAC3B,oFAAoF;IACpF,mBAAmB,EAAE,MAAM;IAC3B,8EAA8E;IAC9E,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,MAAM;IACzB,qBAAqB,EAAE,MAAM;IAC7B,uBAAuB,EAAE,MAAM;IAC/B,sBAAsB,EAAE,IAAI;CAC7B,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const EPOCH_MILLISECONDS_THRESHOLD = 100_000_000_000;
|
|
2
|
+
const normalizeTranscriptTimestamp = (value) => {
|
|
3
|
+
const numeric = typeof value === "number"
|
|
4
|
+
? value
|
|
5
|
+
: typeof value === "string" && /^\d+(?:\.\d+)?$/.test(value.trim())
|
|
6
|
+
? Number(value)
|
|
7
|
+
: null;
|
|
8
|
+
const candidate = numeric === null
|
|
9
|
+
? value
|
|
10
|
+
: Math.abs(numeric) < EPOCH_MILLISECONDS_THRESHOLD
|
|
11
|
+
? numeric * 1_000
|
|
12
|
+
: numeric;
|
|
13
|
+
if (typeof candidate !== "string" && typeof candidate !== "number")
|
|
14
|
+
return undefined;
|
|
15
|
+
const date = new Date(candidate);
|
|
16
|
+
return Number.isNaN(date.getTime()) ? undefined : date.toISOString();
|
|
17
|
+
};
|
|
18
|
+
export { normalizeTranscriptTimestamp };
|
|
19
|
+
//# sourceMappingURL=normalize-transcript-timestamp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-transcript-timestamp.js","sourceRoot":"","sources":["../../src/_utils/normalize-transcript-timestamp.ts"],"names":[],"mappings":"AAAA,MAAM,4BAA4B,GAAG,eAAe,CAAC;AAErD,MAAM,4BAA4B,GAAG,CAAC,KAAc,EAAsB,EAAE;IAC1E,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACjE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACf,CAAC,CAAC,IAAI,CAAC;IACb,MAAM,SAAS,GACb,OAAO,KAAK,IAAI;QACd,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,4BAA4B;YAChD,CAAC,CAAC,OAAO,GAAG,KAAK;YACjB,CAAC,CAAC,OAAO,CAAC;IAChB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ;QAChE,OAAO,SAAS,CAAC;IACnB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACvE,CAAC,CAAC;AAEF,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { normalizeTranscriptTimestamp } from "./normalize-transcript-timestamp.js";
|
|
1
2
|
const parseLine = (line) => {
|
|
2
3
|
try {
|
|
3
4
|
const parsed = JSON.parse(line);
|
|
@@ -97,16 +98,25 @@ const parseClaudeTranscript = (lines, fallbackSessionId) => {
|
|
|
97
98
|
});
|
|
98
99
|
const messages = [];
|
|
99
100
|
for (const e of conversation) {
|
|
101
|
+
const occurredAt = normalizeTranscriptTimestamp(e.timestamp);
|
|
100
102
|
if (e.type === "user") {
|
|
101
103
|
if (isToolResult(e))
|
|
102
104
|
continue;
|
|
103
105
|
const text = textOf(messageOf(e)?.content);
|
|
104
106
|
if (INJECTED_PREFIXES.some((p) => text.startsWith(p)))
|
|
105
107
|
continue;
|
|
106
|
-
messages.push({
|
|
108
|
+
messages.push({
|
|
109
|
+
role: "user",
|
|
110
|
+
text,
|
|
111
|
+
...(occurredAt ? { occurredAt } : {}),
|
|
112
|
+
});
|
|
107
113
|
}
|
|
108
114
|
else {
|
|
109
|
-
messages.push({
|
|
115
|
+
messages.push({
|
|
116
|
+
role: "assistant",
|
|
117
|
+
text: textOf(messageOf(e)?.content),
|
|
118
|
+
...(occurredAt ? { occurredAt } : {}),
|
|
119
|
+
});
|
|
110
120
|
}
|
|
111
121
|
}
|
|
112
122
|
if (messages.every((m) => m.text.trim() === ""))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-claude-transcript.js","sourceRoot":"","sources":["../../src/_utils/parse-claude-transcript.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-claude-transcript.js","sourceRoot":"","sources":["../../src/_utils/parse-claude-transcript.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { normalizeTranscriptTimestamp } from "./normalize-transcript-timestamp.js";
|
|
1
2
|
const parseLine = (line) => {
|
|
2
3
|
try {
|
|
3
4
|
const parsed = JSON.parse(line);
|
|
@@ -33,7 +34,7 @@ const textOf = (content) => {
|
|
|
33
34
|
.map((p) => p.text)
|
|
34
35
|
.join("\n");
|
|
35
36
|
};
|
|
36
|
-
const messageFrom = (item) => {
|
|
37
|
+
const messageFrom = (item, timestamp) => {
|
|
37
38
|
if (item.type !== "message")
|
|
38
39
|
return null;
|
|
39
40
|
const role = item.role;
|
|
@@ -42,7 +43,8 @@ const messageFrom = (item) => {
|
|
|
42
43
|
const text = textOf(item.content);
|
|
43
44
|
if (role === "user" && INJECTED_PREFIXES.some((p) => text.startsWith(p)))
|
|
44
45
|
return null;
|
|
45
|
-
|
|
46
|
+
const occurredAt = normalizeTranscriptTimestamp(timestamp);
|
|
47
|
+
return { role, text, ...(occurredAt ? { occurredAt } : {}) };
|
|
46
48
|
};
|
|
47
49
|
// Parse one Codex CLI rollout file (~/.codex/sessions/YYYY/MM/DD/
|
|
48
50
|
// rollout-<date>-<uuid>.jsonl) into the normalized transcript shape. Only
|
|
@@ -92,7 +94,9 @@ const parseCodexTranscript = (lines, fallbackSessionId) => {
|
|
|
92
94
|
: payload === null && line.type === "message"
|
|
93
95
|
? line
|
|
94
96
|
: null;
|
|
95
|
-
const message = item
|
|
97
|
+
const message = item
|
|
98
|
+
? messageFrom(item, line.timestamp ?? item.timestamp)
|
|
99
|
+
: null;
|
|
96
100
|
if (message)
|
|
97
101
|
result.messages.push(message);
|
|
98
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-codex-transcript.js","sourceRoot":"","sources":["../../src/_utils/parse-codex-transcript.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-codex-transcript.js","sourceRoot":"","sources":["../../src/_utils/parse-codex-transcript.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { copyFile, mkdtemp, open, rm } from "node:fs/promises";
|
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
4
|
import { basename, join } from "node:path";
|
|
5
5
|
import { causeOf, cliErr } from "./cli-error.js";
|
|
6
|
+
import { normalizeTranscriptTimestamp } from "./normalize-transcript-timestamp.js";
|
|
6
7
|
import { err, ok } from "./result.js";
|
|
7
8
|
const loadSqlite = async () => {
|
|
8
9
|
try {
|
|
@@ -35,6 +36,8 @@ const parseJson = (value) => {
|
|
|
35
36
|
// "user"/"ai" strings in some builds. Bubbles with empty text but populated
|
|
36
37
|
// tool data are tool steps, not blank messages — skipped via empty text.
|
|
37
38
|
const bubbleMessage = (bubble) => {
|
|
39
|
+
if (bubble.glenTakeoverProvenance === true)
|
|
40
|
+
return null;
|
|
38
41
|
const role = bubble.type === 1 || bubble.type === "user"
|
|
39
42
|
? "user"
|
|
40
43
|
: bubble.type === 2 || bubble.type === "ai"
|
|
@@ -58,7 +61,8 @@ const bubbleMessage = (bubble) => {
|
|
|
58
61
|
.join("\n\n")
|
|
59
62
|
: "";
|
|
60
63
|
const text = direct.trim() !== "" ? direct : fromCodeBlocks;
|
|
61
|
-
|
|
64
|
+
const occurredAt = normalizeTranscriptTimestamp(bubble.timestamp ?? bubble.createdAt ?? bubble.created_at);
|
|
65
|
+
return { role, text, ...(occurredAt ? { occurredAt } : {}) };
|
|
62
66
|
};
|
|
63
67
|
// A query against a table that may not exist in this generation of the db
|
|
64
68
|
// (workspace dbs have no cursorDiskKV, some have no chat keys at all).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-cursor-db.js","sourceRoot":"","sources":["../../src/_utils/parse-cursor-db.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"parse-cursor-db.js","sourceRoot":"","sources":["../../src/_utils/parse-cursor-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { normalizeTranscriptTimestamp } from "./normalize-transcript-timestamp.js";
|
|
1
2
|
const parseLine = (line) => {
|
|
2
3
|
try {
|
|
3
4
|
const parsed = JSON.parse(line);
|
|
@@ -84,12 +85,19 @@ const parsePiTranscript = (lines, fallbackSessionId) => {
|
|
|
84
85
|
const message = messageOf(e);
|
|
85
86
|
if (!message)
|
|
86
87
|
continue;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
88
|
+
const occurredAt = normalizeTranscriptTimestamp(e.timestamp);
|
|
89
|
+
if (message.role === "user")
|
|
90
|
+
messages.push({
|
|
91
|
+
role: "user",
|
|
92
|
+
text: textOf(message.content),
|
|
93
|
+
...(occurredAt ? { occurredAt } : {}),
|
|
94
|
+
});
|
|
95
|
+
else
|
|
96
|
+
messages.push({
|
|
97
|
+
role: "assistant",
|
|
98
|
+
text: textOf(message.content),
|
|
99
|
+
...(occurredAt ? { occurredAt } : {}),
|
|
100
|
+
});
|
|
93
101
|
}
|
|
94
102
|
if (messages.every((m) => m.text.trim() === ""))
|
|
95
103
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-pi-transcript.js","sourceRoot":"","sources":["../../src/_utils/parse-pi-transcript.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-pi-transcript.js","sourceRoot":"","sources":["../../src/_utils/parse-pi-transcript.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { config } from "./config.js";
|
|
2
|
+
import { buildGlenHeaders } from "./glen-headers.js";
|
|
3
|
+
import { httpJson } from "./http.js";
|
|
4
|
+
import { syncModeFromServer } from "./sync-mode-from-server.js";
|
|
5
|
+
import { cliVersion } from "./version.js";
|
|
6
|
+
// Content-free account-state poll used before a locally-off hook short-circuits.
|
|
7
|
+
// Best-effort and privacy-safe: an unavailable or invalid server response leaves
|
|
8
|
+
// the current local mode in place.
|
|
9
|
+
const refreshControlState = async (key, state) => {
|
|
10
|
+
const response = await httpJson(config.controlStatusUrl, {
|
|
11
|
+
method: "POST",
|
|
12
|
+
headers: {
|
|
13
|
+
"content-type": "application/json",
|
|
14
|
+
...buildGlenHeaders({ key, state, version: cliVersion }),
|
|
15
|
+
},
|
|
16
|
+
body: JSON.stringify({}),
|
|
17
|
+
timeoutMs: config.controlStatusTimeoutMs,
|
|
18
|
+
});
|
|
19
|
+
if (!response || !response.ok || !response.value.isOk)
|
|
20
|
+
return state;
|
|
21
|
+
return (await syncModeFromServer(response.value.json)) ?? state;
|
|
22
|
+
};
|
|
23
|
+
export { refreshControlState };
|
|
24
|
+
//# sourceMappingURL=refresh-control-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-control-state.js","sourceRoot":"","sources":["../../src/_utils/refresh-control-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,iFAAiF;AACjF,iFAAiF;AACjF,mCAAmC;AACnC,MAAM,mBAAmB,GAAG,KAAK,EAC/B,GAAW,EACX,KAAgB,EACI,EAAE;IACtB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE;QACvD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,gBAAgB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;SACzD;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC,sBAAsB;KACzC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACpE,OAAO,CAAC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAClE,CAAC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { type GlenState } from "./state.js";
|
|
2
2
|
/**
|
|
3
3
|
* Mirror the server-side recording preference (the source of truth, echoed on
|
|
4
|
-
* every turn response
|
|
4
|
+
* every turn response and returned by the content-free control-status endpoint)
|
|
5
5
|
* into local state, so a dashboard or other-machine toggle reaches this
|
|
6
6
|
* machine within one turn. Returns the freshest state for display (re-read
|
|
7
7
|
* here — the state the caller read before its POST may be stale by now).
|
|
8
8
|
*
|
|
9
9
|
* Rules:
|
|
10
|
-
* - `off` is machine-local (hooks short-circuit) and is never overridden remotely.
|
|
11
10
|
* - Last-writer-wins on SERVER timestamps: only apply an echo strictly newer
|
|
12
11
|
* than the last value this machine pushed/applied, so a stale in-flight turn
|
|
13
12
|
* can't undo a `glen incognito|silent|on` that just ran.
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { readState, writeState } from "./state.js";
|
|
2
2
|
/**
|
|
3
3
|
* Mirror the server-side recording preference (the source of truth, echoed on
|
|
4
|
-
* every turn response
|
|
4
|
+
* every turn response and returned by the content-free control-status endpoint)
|
|
5
5
|
* into local state, so a dashboard or other-machine toggle reaches this
|
|
6
6
|
* machine within one turn. Returns the freshest state for display (re-read
|
|
7
7
|
* here — the state the caller read before its POST may be stale by now).
|
|
8
8
|
*
|
|
9
9
|
* Rules:
|
|
10
|
-
* - `off` is machine-local (hooks short-circuit) and is never overridden remotely.
|
|
11
10
|
* - Last-writer-wins on SERVER timestamps: only apply an echo strictly newer
|
|
12
11
|
* than the last value this machine pushed/applied, so a stale in-flight turn
|
|
13
12
|
* can't undo a `glen incognito|silent|on` that just ran.
|
|
@@ -17,23 +16,39 @@ import { readState, writeState } from "./state.js";
|
|
|
17
16
|
*/
|
|
18
17
|
const syncModeFromServer = async (json) => {
|
|
19
18
|
const state = await readState();
|
|
20
|
-
if (!state
|
|
19
|
+
if (!state)
|
|
21
20
|
return state;
|
|
22
21
|
const d = json;
|
|
23
|
-
if (!d
|
|
22
|
+
if (!d)
|
|
24
23
|
return state;
|
|
25
|
-
|
|
24
|
+
const canonical = d.serverMode === "on" ||
|
|
25
|
+
d.serverMode === "off" ||
|
|
26
|
+
d.serverMode === "incognito" ||
|
|
27
|
+
d.serverMode === "silent"
|
|
28
|
+
? d.serverMode
|
|
29
|
+
: d.mode === "on" ||
|
|
30
|
+
d.mode === "off" ||
|
|
31
|
+
d.mode === "incognito" ||
|
|
32
|
+
d.mode === "silent"
|
|
33
|
+
? d.mode
|
|
34
|
+
: null;
|
|
35
|
+
if (canonical === null && typeof d.serverIncognito !== "boolean")
|
|
36
|
+
return state;
|
|
37
|
+
const updatedAt = typeof d.updatedAt === "string"
|
|
38
|
+
? d.updatedAt
|
|
39
|
+
: typeof d.serverIncognitoUpdatedAt === "string"
|
|
40
|
+
? d.serverIncognitoUpdatedAt
|
|
41
|
+
: null;
|
|
42
|
+
if (updatedAt === null)
|
|
26
43
|
return state;
|
|
27
|
-
const updatedAt = d.serverIncognitoUpdatedAt;
|
|
28
44
|
// One preference row, one timestamp: serverIncognitoUpdatedAt covers both
|
|
29
45
|
// flags. An old server never sends serverSilent — treat missing as false.
|
|
30
|
-
const desired =
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return state;
|
|
46
|
+
const desired = canonical ??
|
|
47
|
+
(d.serverIncognito
|
|
48
|
+
? "incognito"
|
|
49
|
+
: d.serverSilent === true
|
|
50
|
+
? "silent"
|
|
51
|
+
: "on");
|
|
37
52
|
// ISO-8601 UTC timestamps compare correctly as strings.
|
|
38
53
|
if (state.modeUpdatedAt !== undefined && updatedAt <= state.modeUpdatedAt)
|
|
39
54
|
return state;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-mode-from-server.js","sourceRoot":"","sources":["../../src/_utils/sync-mode-from-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnE
|
|
1
|
+
{"version":3,"file":"sync-mode-from-server.js","sourceRoot":"","sources":["../../src/_utils/sync-mode-from-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;;;;;;;;;;;GAcG;AACH,MAAM,kBAAkB,GAAG,KAAK,EAAE,IAAa,EAA6B,EAAE;IAC5E,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,CAAC,GAAG,IAOF,CAAC;IACT,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,MAAM,SAAS,GACb,CAAC,CAAC,UAAU,KAAK,IAAI;QACrB,CAAC,CAAC,UAAU,KAAK,KAAK;QACtB,CAAC,CAAC,UAAU,KAAK,WAAW;QAC5B,CAAC,CAAC,UAAU,KAAK,QAAQ;QACvB,CAAC,CAAC,CAAC,CAAC,UAAU;QACd,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI;YACb,CAAC,CAAC,IAAI,KAAK,KAAK;YAChB,CAAC,CAAC,IAAI,KAAK,WAAW;YACtB,CAAC,CAAC,IAAI,KAAK,QAAQ;YACrB,CAAC,CAAC,CAAC,CAAC,IAAI;YACR,CAAC,CAAC,IAAI,CAAC;IACb,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,SAAS;QAC9D,OAAO,KAAK,CAAC;IACf,MAAM,SAAS,GACb,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC7B,CAAC,CAAC,CAAC,CAAC,SAAS;QACb,CAAC,CAAC,OAAO,CAAC,CAAC,wBAAwB,KAAK,QAAQ;YAC9C,CAAC,CAAC,CAAC,CAAC,wBAAwB;YAC5B,CAAC,CAAC,IAAI,CAAC;IACb,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACrC,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,OAAO,GACX,SAAS;QACT,CAAC,CAAC,CAAC,eAAe;YAChB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI;gBACvB,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,IAAI,CAAC,CAAC;IACd,wDAAwD;IACxD,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,SAAS,IAAI,KAAK,CAAC,aAAa;QACvE,OAAO,KAAK,CAAC;IACf,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;IACnE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,CAAC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|