@tryglen/cli 0.37.1 → 0.38.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 +21 -4
- package/dist/_generated/contract/index.js +3 -0
- package/dist/_generated/contract/index.js.map +1 -0
- package/dist/_generated/contract/procedures.gen.js +34 -0
- package/dist/_generated/contract/procedures.gen.js.map +1 -0
- package/dist/_generated/contract/types.gen.js +3 -0
- package/dist/_generated/contract/types.gen.js.map +1 -0
- package/dist/_generated/contract/zod.gen.js +799 -0
- package/dist/_generated/contract/zod.gen.js.map +1 -0
- package/dist/bin.js +137 -560
- package/dist/bin.js.map +1 -1
- package/dist/clients/agents/agent-bin.js +67 -0
- package/dist/clients/agents/agent-bin.js.map +1 -0
- package/dist/clients/agents/agent-path-overrides.js +23 -0
- package/dist/clients/agents/agent-path-overrides.js.map +1 -0
- package/dist/clients/agents/agents-table.js +91 -0
- package/dist/clients/agents/agents-table.js.map +1 -0
- package/dist/{_utils → clients/agents}/managed-block.js +8 -4
- package/dist/clients/agents/managed-block.js.map +1 -0
- package/dist/clients/agents/normalize-transcript-timestamp.js.map +1 -0
- package/dist/clients/agents/plugin-status.js +74 -0
- package/dist/clients/agents/plugin-status.js.map +1 -0
- package/dist/clients/agents/run-agent-steps.js +21 -0
- package/dist/clients/agents/run-agent-steps.js.map +1 -0
- package/dist/{_utils → clients/claude}/extract-claude-segments.js +9 -5
- package/dist/clients/claude/extract-claude-segments.js.map +1 -0
- package/dist/clients/claude/parse-claude-transcript.js +114 -0
- package/dist/clients/claude/parse-claude-transcript.js.map +1 -0
- package/dist/clients/codex/codex-app-server.js +102 -0
- package/dist/clients/codex/codex-app-server.js.map +1 -0
- package/dist/clients/codex/codex-hooks-file.js +65 -0
- package/dist/clients/codex/codex-hooks-file.js.map +1 -0
- package/dist/clients/codex/codex-hooks-merge.js +9 -0
- package/dist/clients/codex/codex-hooks-merge.js.map +1 -0
- package/dist/clients/codex/codex-hooks-setup.js +167 -0
- package/dist/clients/codex/codex-hooks-setup.js.map +1 -0
- package/dist/clients/codex/codex-paths.js +13 -0
- package/dist/clients/codex/codex-paths.js.map +1 -0
- package/dist/clients/codex/codex-repair-trace.js +36 -0
- package/dist/clients/codex/codex-repair-trace.js.map +1 -0
- package/dist/clients/codex/codex-rules-setup.js +27 -0
- package/dist/clients/codex/codex-rules-setup.js.map +1 -0
- package/dist/{_utils → clients/codex}/codex-trust-toml.js +6 -5
- package/dist/clients/codex/codex-trust-toml.js.map +1 -0
- package/dist/clients/codex/extract-codex-segments.js +64 -0
- package/dist/clients/codex/extract-codex-segments.js.map +1 -0
- package/dist/clients/codex/parse-codex-transcript.js +123 -0
- package/dist/clients/codex/parse-codex-transcript.js.map +1 -0
- package/dist/clients/cursor/parse-cursor-db.js +185 -0
- package/dist/clients/cursor/parse-cursor-db.js.map +1 -0
- package/dist/clients/git/canonical-remote-url.js +13 -0
- package/dist/clients/git/canonical-remote-url.js.map +1 -0
- package/dist/clients/git/git-context.js +60 -0
- package/dist/clients/git/git-context.js.map +1 -0
- package/dist/clients/git/git-hook-setup.js +128 -0
- package/dist/clients/git/git-hook-setup.js.map +1 -0
- package/dist/{_utils → clients/git}/pr-review-link.js +5 -4
- package/dist/clients/git/pr-review-link.js.map +1 -0
- package/dist/clients/glen-api/config.js +11 -0
- package/dist/clients/glen-api/config.js.map +1 -0
- package/dist/clients/glen-api/glen-api.js +199 -0
- package/dist/clients/glen-api/glen-api.js.map +1 -0
- package/dist/{_utils → clients/glen-api}/glen-headers.js +1 -1
- package/dist/clients/glen-api/glen-headers.js.map +1 -0
- package/dist/clients/glen-api/refresh-control-state.js +18 -0
- package/dist/clients/glen-api/refresh-control-state.js.map +1 -0
- package/dist/clients/glen-api/report-cli-install.js +20 -0
- package/dist/clients/glen-api/report-cli-install.js.map +1 -0
- package/dist/clients/glen-api/sync-mode-from-server.js +45 -0
- package/dist/clients/glen-api/sync-mode-from-server.js.map +1 -0
- package/dist/clients/indicator/indicator-app.js +127 -0
- package/dist/clients/indicator/indicator-app.js.map +1 -0
- package/dist/clients/indicator/indicator-health.js +40 -0
- package/dist/clients/indicator/indicator-health.js.map +1 -0
- package/dist/clients/jcode/jcode-bundle.js +19 -0
- package/dist/clients/jcode/jcode-bundle.js.map +1 -0
- package/dist/clients/jcode/jcode-event.js +74 -0
- package/dist/clients/jcode/jcode-event.js.map +1 -0
- package/dist/{_utils → clients/jcode}/jcode-hook-lines.js +1 -1
- package/dist/clients/jcode/jcode-hook-lines.js.map +1 -0
- package/dist/{_utils → clients/jcode}/jcode-hooks-toml.js +21 -29
- package/dist/clients/jcode/jcode-hooks-toml.js.map +1 -0
- package/dist/clients/jcode/jcode-paths.js +14 -0
- package/dist/clients/jcode/jcode-paths.js.map +1 -0
- package/dist/clients/jcode/jcode-setup.js +148 -0
- package/dist/clients/jcode/jcode-setup.js.map +1 -0
- package/dist/clients/jcode/jcode-skills-sync.js +84 -0
- package/dist/clients/jcode/jcode-skills-sync.js.map +1 -0
- package/dist/{_utils → clients/jcode}/parse-jcode-session.js +38 -35
- package/dist/clients/jcode/parse-jcode-session.js.map +1 -0
- package/dist/clients/npm/semver-newer.js +8 -0
- package/dist/clients/npm/semver-newer.js.map +1 -0
- package/dist/clients/npm/update.js +147 -0
- package/dist/clients/npm/update.js.map +1 -0
- package/dist/{_utils → clients/pi}/extract-pi-segments.js +7 -3
- package/dist/clients/pi/extract-pi-segments.js.map +1 -0
- package/dist/clients/pi/parse-pi-transcript.js +149 -0
- package/dist/clients/pi/parse-pi-transcript.js.map +1 -0
- package/dist/clients/telemetry/send-events.js +32 -0
- package/dist/clients/telemetry/send-events.js.map +1 -0
- package/dist/commands/_utils/forget-or-restore-observation-or-message.js +41 -0
- package/dist/commands/_utils/forget-or-restore-observation-or-message.js.map +1 -0
- package/dist/commands/artifact/_utils/explain-artifact-error.js +31 -0
- package/dist/commands/artifact/_utils/explain-artifact-error.js.map +1 -0
- package/dist/commands/artifact/_utils/require-slug.js +14 -0
- package/dist/commands/artifact/_utils/require-slug.js.map +1 -0
- package/dist/commands/artifact/artifact.options.js +43 -0
- package/dist/commands/artifact/artifact.options.js.map +1 -0
- package/dist/commands/artifact/create.js +87 -0
- package/dist/commands/artifact/create.js.map +1 -0
- package/dist/commands/artifact/delete.js +18 -0
- package/dist/commands/artifact/delete.js.map +1 -0
- package/dist/commands/artifact/get.js +21 -0
- package/dist/commands/artifact/get.js.map +1 -0
- package/dist/commands/artifact/list.js +4 -0
- package/dist/commands/artifact/list.js.map +1 -0
- package/dist/commands/artifact/search.js +25 -0
- package/dist/commands/artifact/search.js.map +1 -0
- package/dist/commands/artifact/share.js +42 -0
- package/dist/commands/artifact/share.js.map +1 -0
- package/dist/commands/code-search/code-search.options.js +10 -0
- package/dist/commands/code-search/code-search.options.js.map +1 -0
- package/dist/commands/code-search/index.js +106 -0
- package/dist/commands/code-search/index.js.map +1 -0
- package/dist/commands/dependency/dependency.options.js +10 -0
- package/dist/commands/dependency/dependency.options.js.map +1 -0
- package/dist/commands/dependency/index.js +25 -0
- package/dist/commands/dependency/index.js.map +1 -0
- package/dist/{_utils → commands/doctor/_utils}/ingest-diagnosis.js +16 -17
- package/dist/commands/doctor/_utils/ingest-diagnosis.js.map +1 -0
- package/dist/commands/doctor/_utils/login-check.js +48 -0
- package/dist/commands/doctor/_utils/login-check.js.map +1 -0
- package/dist/commands/doctor/doctor.options.js +17 -0
- package/dist/commands/doctor/doctor.options.js.map +1 -0
- package/dist/commands/doctor/index.js +366 -0
- package/dist/commands/doctor/index.js.map +1 -0
- package/dist/commands/feedback/feedback.options.js +82 -0
- package/dist/commands/feedback/feedback.options.js.map +1 -0
- package/dist/commands/feedback/index.js +64 -0
- package/dist/commands/feedback/index.js.map +1 -0
- package/dist/commands/forget/forget.options.js +12 -0
- package/dist/commands/forget/forget.options.js.map +1 -0
- package/dist/commands/forget/index.js +30 -0
- package/dist/commands/forget/index.js.map +1 -0
- package/dist/commands/git-hooks/git-hooks.options.js +17 -0
- package/dist/commands/git-hooks/git-hooks.options.js.map +1 -0
- package/dist/commands/git-hooks/index.js +21 -0
- package/dist/commands/git-hooks/index.js.map +1 -0
- package/dist/commands/git-hooks/write-commit-trailer.js +38 -0
- package/dist/commands/git-hooks/write-commit-trailer.js.map +1 -0
- package/dist/commands/import/_utils/collect-import-files.js +54 -0
- package/dist/commands/import/_utils/collect-import-files.js.map +1 -0
- package/dist/commands/import/_utils/detect-transcript-format.js +46 -0
- package/dist/commands/import/_utils/detect-transcript-format.js.map +1 -0
- package/dist/{_utils → commands/import/_utils}/parse-harbor-atif.js +28 -51
- package/dist/commands/import/_utils/parse-harbor-atif.js.map +1 -0
- package/dist/{_utils → commands/import/_utils}/resolve-import-workspace.js +12 -17
- package/dist/commands/import/_utils/resolve-import-workspace.js.map +1 -0
- package/dist/{_utils → commands/import/_utils}/transcript-turns.js +47 -52
- package/dist/commands/import/_utils/transcript-turns.js.map +1 -0
- package/dist/commands/import/import.options.js +18 -0
- package/dist/commands/import/import.options.js.map +1 -0
- package/dist/commands/import/import.schema.js +28 -0
- package/dist/commands/import/import.schema.js.map +1 -0
- package/dist/commands/import/index.js +284 -0
- package/dist/commands/import/index.js.map +1 -0
- package/dist/commands/incognito/incognito.options.js +7 -0
- package/dist/commands/incognito/incognito.options.js.map +1 -0
- package/dist/commands/incognito/index.js +5 -0
- package/dist/commands/incognito/index.js.map +1 -0
- package/dist/commands/indicator/index.js +59 -0
- package/dist/commands/indicator/index.js.map +1 -0
- package/dist/commands/indicator/indicator.options.js +7 -0
- package/dist/commands/indicator/indicator.options.js.map +1 -0
- package/dist/commands/ingest/_utils/agent-adapter.js +37 -0
- package/dist/commands/ingest/_utils/agent-adapter.js.map +1 -0
- package/dist/{_utils → commands/ingest/_utils}/build-turn-body.js +8 -6
- package/dist/commands/ingest/_utils/build-turn-body.js.map +1 -0
- package/dist/{_utils → commands/ingest/_utils}/format-turn-nudges.js +14 -31
- package/dist/commands/ingest/_utils/format-turn-nudges.js.map +1 -0
- package/dist/commands/ingest/_utils/idempotency-key.js +4 -0
- package/dist/commands/ingest/_utils/idempotency-key.js.map +1 -0
- package/dist/commands/ingest/_utils/ingest-failure-memo.js +58 -0
- package/dist/commands/ingest/_utils/ingest-failure-memo.js.map +1 -0
- package/dist/commands/ingest/_utils/parse-transcript.js +76 -0
- package/dist/commands/ingest/_utils/parse-transcript.js.map +1 -0
- package/dist/commands/ingest/_utils/turn-cache.js +73 -0
- package/dist/commands/ingest/_utils/turn-cache.js.map +1 -0
- package/dist/commands/ingest/index.js +379 -0
- package/dist/commands/ingest/index.js.map +1 -0
- package/dist/commands/ingest/ingest.options.js +13 -0
- package/dist/commands/ingest/ingest.options.js.map +1 -0
- package/dist/commands/install/_utils/claude-statusline.js +58 -0
- package/dist/commands/install/_utils/claude-statusline.js.map +1 -0
- package/dist/commands/install/_utils/codex-post-install.js +56 -0
- package/dist/commands/install/_utils/codex-post-install.js.map +1 -0
- package/dist/{_utils → commands/install/_utils}/ensure-global-cli.js +49 -52
- package/dist/commands/install/_utils/ensure-global-cli.js.map +1 -0
- package/dist/commands/install/_utils/finish-install.js +67 -0
- package/dist/commands/install/_utils/finish-install.js.map +1 -0
- package/dist/commands/install/_utils/jcode-install.js +29 -0
- package/dist/commands/install/_utils/jcode-install.js.map +1 -0
- package/dist/{_utils → commands/install/_utils}/npm-error-cause.js +1 -2
- package/dist/commands/install/_utils/npm-error-cause.js.map +1 -0
- package/dist/commands/install/_utils/prepare-machine.js +85 -0
- package/dist/commands/install/_utils/prepare-machine.js.map +1 -0
- package/dist/commands/install/codex-hooks-repair.js +17 -0
- package/dist/commands/install/codex-hooks-repair.js.map +1 -0
- package/dist/commands/install/index.js +186 -0
- package/dist/commands/install/index.js.map +1 -0
- package/dist/commands/install/install.options.js +41 -0
- package/dist/commands/install/install.options.js.map +1 -0
- package/dist/commands/invite/index.js +47 -0
- package/dist/commands/invite/index.js.map +1 -0
- package/dist/commands/invite/invite.options.js +24 -0
- package/dist/commands/invite/invite.options.js.map +1 -0
- package/dist/commands/login/_utils/open-browser.js +9 -0
- package/dist/commands/login/_utils/open-browser.js.map +1 -0
- package/dist/commands/login/_utils/parse-start.js +25 -0
- package/dist/commands/login/_utils/parse-start.js.map +1 -0
- package/dist/commands/login/_utils/poll-for-approval.js +55 -0
- package/dist/commands/login/_utils/poll-for-approval.js.map +1 -0
- package/dist/commands/login/index.js +101 -0
- package/dist/commands/login/index.js.map +1 -0
- package/dist/commands/login/login.options.js +12 -0
- package/dist/commands/login/login.options.js.map +1 -0
- package/dist/commands/logout/index.js +16 -0
- package/dist/commands/logout/index.js.map +1 -0
- package/dist/commands/logout/logout.options.js +4 -0
- package/dist/commands/logout/logout.options.js.map +1 -0
- package/dist/commands/onboard/index.js +20 -0
- package/dist/commands/onboard/index.js.map +1 -0
- package/dist/commands/org/_utils/apply-switch.js +37 -0
- package/dist/commands/org/_utils/apply-switch.js.map +1 -0
- package/dist/commands/org/_utils/fetch-orgs.js +19 -0
- package/dist/commands/org/_utils/fetch-orgs.js.map +1 -0
- package/dist/commands/org/list.js +14 -0
- package/dist/commands/org/list.js.map +1 -0
- package/dist/commands/org/org.options.js +10 -0
- package/dist/commands/org/org.options.js.map +1 -0
- package/dist/commands/org/switch.js +37 -0
- package/dist/commands/org/switch.js.map +1 -0
- package/dist/commands/pr-link/_utils/is-commit-command.js +14 -0
- package/dist/commands/pr-link/_utils/is-commit-command.js.map +1 -0
- package/dist/commands/pr-link/_utils/record-commit-anchor.js +46 -0
- package/dist/commands/pr-link/_utils/record-commit-anchor.js.map +1 -0
- package/dist/commands/pr-link/index.js +74 -0
- package/dist/commands/pr-link/index.js.map +1 -0
- package/dist/commands/pr-link/pr-link.options.js +13 -0
- package/dist/commands/pr-link/pr-link.options.js.map +1 -0
- package/dist/commands/restore/index.js +27 -0
- package/dist/commands/restore/index.js.map +1 -0
- package/dist/commands/restore/restore.options.js +12 -0
- package/dist/commands/restore/restore.options.js.map +1 -0
- package/dist/{_utils → commands/search/_utils}/format-search-result.js +5 -4
- package/dist/commands/search/_utils/format-search-result.js.map +1 -0
- package/dist/commands/search/_utils/runtime-timezone.js +12 -0
- package/dist/commands/search/_utils/runtime-timezone.js.map +1 -0
- package/dist/commands/search/index.js +36 -0
- package/dist/commands/search/index.js.map +1 -0
- package/dist/commands/search/search.options.js +7 -0
- package/dist/commands/search/search.options.js.map +1 -0
- package/dist/commands/session-start/index.js +119 -0
- package/dist/commands/session-start/index.js.map +1 -0
- package/dist/commands/session-start/session-start.options.js +13 -0
- package/dist/commands/session-start/session-start.options.js.map +1 -0
- package/dist/commands/set-mode/index.js +38 -0
- package/dist/commands/set-mode/index.js.map +1 -0
- package/dist/commands/set-mode/set-mode.options.js +8 -0
- package/dist/commands/set-mode/set-mode.options.js.map +1 -0
- package/dist/commands/skill/_utils/download-file.js +28 -0
- package/dist/commands/skill/_utils/download-file.js.map +1 -0
- package/dist/commands/skill/_utils/explain-skill-error.js +31 -0
- package/dist/commands/skill/_utils/explain-skill-error.js.map +1 -0
- package/dist/commands/skill/_utils/skill-cache.js +136 -0
- package/dist/commands/skill/_utils/skill-cache.js.map +1 -0
- package/dist/commands/skill/create/_utils/pack-skill-dir.js +160 -0
- package/dist/commands/skill/create/_utils/pack-skill-dir.js.map +1 -0
- package/dist/commands/skill/create/index.js +108 -0
- package/dist/commands/skill/create/index.js.map +1 -0
- package/dist/commands/skill/search.js +38 -0
- package/dist/commands/skill/search.js.map +1 -0
- package/dist/commands/skill/share.js +52 -0
- package/dist/commands/skill/share.js.map +1 -0
- package/dist/commands/skill/skill.options.js +58 -0
- package/dist/commands/skill/skill.options.js.map +1 -0
- package/dist/commands/skill/use.js +72 -0
- package/dist/commands/skill/use.js.map +1 -0
- package/dist/commands/status/index.js +33 -0
- package/dist/commands/status/index.js.map +1 -0
- package/dist/commands/status/status.options.js +4 -0
- package/dist/commands/status/status.options.js.map +1 -0
- package/dist/commands/statusline/index.js +33 -0
- package/dist/commands/statusline/index.js.map +1 -0
- package/dist/commands/statusline/statusline.options.js +4 -0
- package/dist/commands/statusline/statusline.options.js.map +1 -0
- package/dist/commands/suggestions/index.js +36 -0
- package/dist/commands/suggestions/index.js.map +1 -0
- package/dist/commands/suggestions/suggestions.options.js +12 -0
- package/dist/commands/suggestions/suggestions.options.js.map +1 -0
- package/dist/commands/takeover/_utils/agent-paths.js +13 -7
- package/dist/commands/takeover/_utils/agent-paths.js.map +1 -1
- package/dist/commands/takeover/_utils/agent-process.js +111 -0
- package/dist/commands/takeover/_utils/agent-process.js.map +1 -0
- package/dist/commands/takeover/_utils/archive-codex-desktop-thread.js +17 -58
- package/dist/commands/takeover/_utils/archive-codex-desktop-thread.js.map +1 -1
- package/dist/commands/takeover/_utils/canonical-digest.js +2 -2
- package/dist/commands/takeover/_utils/canonical-digest.js.map +1 -1
- package/dist/commands/takeover/_utils/codex-desktop-recovery.js +77 -95
- package/dist/commands/takeover/_utils/codex-desktop-recovery.js.map +1 -1
- package/dist/commands/takeover/_utils/context-fit.js +7 -4
- package/dist/commands/takeover/_utils/context-fit.js.map +1 -1
- package/dist/commands/takeover/_utils/cursor-store.js +333 -281
- package/dist/commands/takeover/_utils/cursor-store.js.map +1 -1
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.js +138 -282
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.js.map +1 -1
- package/dist/commands/takeover/_utils/launch-desktop-url.js +19 -24
- package/dist/commands/takeover/_utils/launch-desktop-url.js.map +1 -1
- package/dist/commands/takeover/_utils/native-file.js +86 -73
- package/dist/commands/takeover/_utils/native-file.js.map +1 -1
- package/dist/commands/takeover/_utils/probe-agent.js +12 -9
- package/dist/commands/takeover/_utils/probe-agent.js.map +1 -1
- package/dist/commands/takeover/_utils/staged-session.js +18 -17
- package/dist/commands/takeover/_utils/staged-session.js.map +1 -1
- package/dist/commands/takeover/_utils/write-claude-session.js +10 -13
- package/dist/commands/takeover/_utils/write-claude-session.js.map +1 -1
- package/dist/commands/takeover/_utils/write-codex-desktop-session.js +39 -37
- package/dist/commands/takeover/_utils/write-codex-desktop-session.js.map +1 -1
- package/dist/commands/takeover/_utils/write-codex-session.js +34 -25
- package/dist/commands/takeover/_utils/write-codex-session.js.map +1 -1
- package/dist/commands/takeover/_utils/write-cursor-session.js +8 -19
- package/dist/commands/takeover/_utils/write-cursor-session.js.map +1 -1
- package/dist/commands/takeover/_utils/write-pi-session.js +34 -22
- package/dist/commands/takeover/_utils/write-pi-session.js.map +1 -1
- package/dist/commands/takeover/index.js +129 -164
- package/dist/commands/takeover/index.js.map +1 -1
- package/dist/commands/takeover/takeover.options.js +6 -0
- package/dist/commands/takeover/takeover.options.js.map +1 -0
- package/dist/commands/takeover/takeover.schema.js +17 -55
- package/dist/commands/takeover/takeover.schema.js.map +1 -1
- package/dist/commands/telemetry/index.js +33 -0
- package/dist/commands/telemetry/index.js.map +1 -0
- package/dist/commands/telemetry/send.js +7 -0
- package/dist/commands/telemetry/send.js.map +1 -0
- package/dist/commands/telemetry/telemetry.options.js +12 -0
- package/dist/commands/telemetry/telemetry.options.js.map +1 -0
- package/dist/commands/uninstall/_utils/purge-agent-plugins.js +58 -0
- package/dist/commands/uninstall/_utils/purge-agent-plugins.js.map +1 -0
- package/dist/commands/uninstall/_utils/purge-claude-statusline.js +51 -0
- package/dist/commands/uninstall/_utils/purge-claude-statusline.js.map +1 -0
- package/dist/commands/uninstall/_utils/purge-local-state.js +52 -0
- package/dist/commands/uninstall/_utils/purge-local-state.js.map +1 -0
- package/dist/commands/uninstall/index.js +138 -0
- package/dist/commands/uninstall/index.js.map +1 -0
- package/dist/commands/uninstall/uninstall.options.js +4 -0
- package/dist/commands/uninstall/uninstall.options.js.map +1 -0
- package/dist/commands/update/index.js +117 -0
- package/dist/commands/update/index.js.map +1 -0
- package/dist/commands/update/self-update.js +7 -0
- package/dist/commands/update/self-update.js.map +1 -0
- package/dist/commands/update/update.options.js +7 -0
- package/dist/commands/update/update.options.js.map +1 -0
- package/dist/core/errors/cli-error.js +22 -0
- package/dist/core/errors/cli-error.js.map +1 -0
- package/dist/core/errors/result.js +21 -0
- package/dist/core/errors/result.js.map +1 -0
- package/dist/core/errors/settle.js +18 -0
- package/dist/core/errors/settle.js.map +1 -0
- package/dist/core/json/is-record.js +3 -0
- package/dist/core/json/is-record.js.map +1 -0
- package/dist/core/json/json-field.js +5 -0
- package/dist/core/json/json-field.js.map +1 -0
- package/dist/core/json/jsonl-records.js +15 -0
- package/dist/core/json/jsonl-records.js.map +1 -0
- package/dist/core/json/parse-json.js +4 -0
- package/dist/core/json/parse-json.js.map +1 -0
- package/dist/core/run/cli-input.js +116 -0
- package/dist/core/run/cli-input.js.map +1 -0
- package/dist/core/run/hook-agents.js +4 -0
- package/dist/core/run/hook-agents.js.map +1 -0
- package/dist/{_utils → core/run}/normalize-boolean-flags.js +0 -1
- package/dist/core/run/normalize-boolean-flags.js.map +1 -0
- package/dist/core/run/run-hook.js +18 -0
- package/dist/core/run/run-hook.js.map +1 -0
- package/dist/core/run/run.js +16 -0
- package/dist/core/run/run.js.map +1 -0
- package/dist/core/state/credentials.js +34 -0
- package/dist/core/state/credentials.js.map +1 -0
- package/dist/core/state/ephemeral-session.js +11 -0
- package/dist/core/state/ephemeral-session.js.map +1 -0
- package/dist/core/state/glen-home.js +9 -0
- package/dist/core/state/glen-home.js.map +1 -0
- package/dist/core/state/ingest-heartbeat.js +56 -0
- package/dist/core/state/ingest-heartbeat.js.map +1 -0
- package/dist/core/state/install-receipt.js +174 -0
- package/dist/core/state/install-receipt.js.map +1 -0
- package/dist/core/state/session-map.js +22 -0
- package/dist/core/state/session-map.js.map +1 -0
- package/dist/core/state/state-line-memo.js +52 -0
- package/dist/core/state/state-line-memo.js.map +1 -0
- package/dist/{_utils → core/state}/state-line.js +1 -1
- package/dist/core/state/state-line.js.map +1 -0
- package/dist/core/state/state.js +51 -0
- package/dist/core/state/state.js.map +1 -0
- package/dist/core/system/env.js +74 -0
- package/dist/core/system/env.js.map +1 -0
- package/dist/core/system/files.js +102 -0
- package/dist/core/system/files.js.map +1 -0
- package/dist/core/system/glen-base-url.js +4 -0
- package/dist/core/system/glen-base-url.js.map +1 -0
- package/dist/core/system/http.js +146 -0
- package/dist/core/system/http.js.map +1 -0
- package/dist/core/system/run-program.js +55 -0
- package/dist/core/system/run-program.js.map +1 -0
- package/dist/core/system/sha256-hex.js +4 -0
- package/dist/core/system/sha256-hex.js.map +1 -0
- package/dist/{_utils → core/system}/shell-profile.js +43 -56
- package/dist/core/system/shell-profile.js.map +1 -0
- package/dist/core/system/spawn-detached.js +10 -0
- package/dist/core/system/spawn-detached.js.map +1 -0
- package/dist/core/system/spawn-self.js +5 -0
- package/dist/core/system/spawn-self.js.map +1 -0
- package/dist/core/system/sqlite.js +55 -0
- package/dist/core/system/sqlite.js.map +1 -0
- package/dist/core/system/version.js +16 -0
- package/dist/core/system/version.js.map +1 -0
- package/dist/core/telemetry/build-event.js +27 -0
- package/dist/core/telemetry/build-event.js.map +1 -0
- package/dist/core/telemetry/events-store.js +62 -0
- package/dist/core/telemetry/events-store.js.map +1 -0
- package/dist/core/telemetry/finish-telemetry.js +32 -0
- package/dist/core/telemetry/finish-telemetry.js.map +1 -0
- package/dist/core/telemetry/install-id.js +18 -0
- package/dist/core/telemetry/install-id.js.map +1 -0
- package/dist/core/telemetry/note-if-err.js +8 -0
- package/dist/core/telemetry/note-if-err.js.map +1 -0
- package/dist/core/telemetry/record-event.js +7 -0
- package/dist/core/telemetry/record-event.js.map +1 -0
- package/dist/core/telemetry/telemetry-context.js +10 -0
- package/dist/core/telemetry/telemetry-context.js.map +1 -0
- package/dist/core/telemetry/telemetry-settings.js +32 -0
- package/dist/core/telemetry/telemetry-settings.js.map +1 -0
- package/dist/core/terminal/attention-summary.js +14 -0
- package/dist/core/terminal/attention-summary.js.map +1 -0
- package/dist/core/terminal/out.js +86 -0
- package/dist/core/terminal/out.js.map +1 -0
- package/dist/core/terminal/prompt.js +34 -0
- package/dist/core/terminal/prompt.js.map +1 -0
- package/dist/core/terminal/read-hook-event.js +17 -0
- package/dist/core/terminal/read-hook-event.js.map +1 -0
- package/dist/core/terminal/read-stdin.js +23 -0
- package/dist/core/terminal/read-stdin.js.map +1 -0
- package/dist/jcode/plugin.json +1 -1
- package/dist/jcode/skills/feedback/SKILL.md +8 -8
- package/dist/jcode/skills/invite/SKILL.md +4 -4
- package/dist/jcode/skills/setup/SKILL.md +6 -4
- package/dist/macos/glen.app/Contents/MacOS/glen +0 -0
- package/package.json +16 -7
- package/dist/_utils/agent-adapter.d.ts +0 -9
- package/dist/_utils/agent-adapter.js +0 -49
- package/dist/_utils/agent-adapter.js.map +0 -1
- package/dist/_utils/agents-table.d.ts +0 -11
- package/dist/_utils/agents-table.js +0 -35
- package/dist/_utils/agents-table.js.map +0 -1
- package/dist/_utils/build-turn-body.d.ts +0 -17
- package/dist/_utils/build-turn-body.js.map +0 -1
- package/dist/_utils/cli-error.d.ts +0 -12
- package/dist/_utils/cli-error.js +0 -21
- package/dist/_utils/cli-error.js.map +0 -1
- package/dist/_utils/codex-app-server.d.ts +0 -11
- package/dist/_utils/codex-app-server.js +0 -94
- package/dist/_utils/codex-app-server.js.map +0 -1
- package/dist/_utils/codex-hooks-merge.d.ts +0 -22
- package/dist/_utils/codex-hooks-merge.js +0 -60
- package/dist/_utils/codex-hooks-merge.js.map +0 -1
- package/dist/_utils/codex-hooks-setup.d.ts +0 -14
- package/dist/_utils/codex-hooks-setup.js +0 -162
- package/dist/_utils/codex-hooks-setup.js.map +0 -1
- package/dist/_utils/codex-paths.d.ts +0 -5
- package/dist/_utils/codex-paths.js +0 -10
- package/dist/_utils/codex-paths.js.map +0 -1
- package/dist/_utils/codex-repair-trace.d.ts +0 -11
- package/dist/_utils/codex-repair-trace.js +0 -39
- package/dist/_utils/codex-repair-trace.js.map +0 -1
- package/dist/_utils/codex-rules-setup.d.ts +0 -4
- package/dist/_utils/codex-rules-setup.js +0 -34
- package/dist/_utils/codex-rules-setup.js.map +0 -1
- package/dist/_utils/codex-trust-toml.d.ts +0 -7
- package/dist/_utils/codex-trust-toml.js.map +0 -1
- package/dist/_utils/collect-import-files.d.ts +0 -4
- package/dist/_utils/collect-import-files.js +0 -50
- package/dist/_utils/collect-import-files.js.map +0 -1
- package/dist/_utils/config.d.ts +0 -45
- package/dist/_utils/config.js +0 -47
- package/dist/_utils/config.js.map +0 -1
- package/dist/_utils/confirm.d.ts +0 -7
- package/dist/_utils/confirm.js +0 -35
- package/dist/_utils/confirm.js.map +0 -1
- package/dist/_utils/credentials.d.ts +0 -15
- package/dist/_utils/credentials.js +0 -62
- package/dist/_utils/credentials.js.map +0 -1
- package/dist/_utils/detect-transcript-format.d.ts +0 -2
- package/dist/_utils/detect-transcript-format.js +0 -57
- package/dist/_utils/detect-transcript-format.js.map +0 -1
- package/dist/_utils/ensure-global-cli.d.ts +0 -4
- package/dist/_utils/ensure-global-cli.js.map +0 -1
- package/dist/_utils/ephemeral-session.d.ts +0 -2
- package/dist/_utils/ephemeral-session.js +0 -12
- package/dist/_utils/ephemeral-session.js.map +0 -1
- package/dist/_utils/extract-claude-segments.d.ts +0 -2
- package/dist/_utils/extract-claude-segments.js.map +0 -1
- package/dist/_utils/extract-codex-segments.d.ts +0 -2
- package/dist/_utils/extract-codex-segments.js +0 -65
- package/dist/_utils/extract-codex-segments.js.map +0 -1
- package/dist/_utils/extract-pi-segments.d.ts +0 -2
- package/dist/_utils/extract-pi-segments.js.map +0 -1
- package/dist/_utils/find-bin.d.ts +0 -7
- package/dist/_utils/find-bin.js +0 -89
- package/dist/_utils/find-bin.js.map +0 -1
- package/dist/_utils/format-search-result.d.ts +0 -2
- package/dist/_utils/format-search-result.js.map +0 -1
- package/dist/_utils/format-turn-nudges.d.ts +0 -2
- package/dist/_utils/format-turn-nudges.js.map +0 -1
- package/dist/_utils/git-context.d.ts +0 -13
- package/dist/_utils/git-context.js +0 -82
- package/dist/_utils/git-context.js.map +0 -1
- package/dist/_utils/git-hook-setup.d.ts +0 -18
- package/dist/_utils/git-hook-setup.js +0 -115
- package/dist/_utils/git-hook-setup.js.map +0 -1
- package/dist/_utils/glen-headers.d.ts +0 -8
- package/dist/_utils/glen-headers.js.map +0 -1
- package/dist/_utils/http.d.ts +0 -23
- package/dist/_utils/http.js +0 -97
- package/dist/_utils/http.js.map +0 -1
- package/dist/_utils/idempotency-key.d.ts +0 -2
- package/dist/_utils/idempotency-key.js +0 -7
- package/dist/_utils/idempotency-key.js.map +0 -1
- package/dist/_utils/indicator-app.d.ts +0 -9
- package/dist/_utils/indicator-app.js +0 -91
- package/dist/_utils/indicator-app.js.map +0 -1
- package/dist/_utils/indicator-health.d.ts +0 -8
- package/dist/_utils/indicator-health.js +0 -37
- package/dist/_utils/indicator-health.js.map +0 -1
- package/dist/_utils/ingest-diagnosis.d.ts +0 -24
- package/dist/_utils/ingest-diagnosis.js.map +0 -1
- package/dist/_utils/ingest-failure-memo.d.ts +0 -2
- package/dist/_utils/ingest-failure-memo.js +0 -58
- package/dist/_utils/ingest-failure-memo.js.map +0 -1
- package/dist/_utils/ingest-heartbeat.d.ts +0 -9
- package/dist/_utils/ingest-heartbeat.js +0 -48
- package/dist/_utils/ingest-heartbeat.js.map +0 -1
- package/dist/_utils/install-receipt.d.ts +0 -51
- package/dist/_utils/install-receipt.js +0 -202
- package/dist/_utils/install-receipt.js.map +0 -1
- package/dist/_utils/jcode-bundle.d.ts +0 -3
- package/dist/_utils/jcode-bundle.js +0 -16
- package/dist/_utils/jcode-bundle.js.map +0 -1
- package/dist/_utils/jcode-event.d.ts +0 -3
- package/dist/_utils/jcode-event.js +0 -66
- package/dist/_utils/jcode-event.js.map +0 -1
- package/dist/_utils/jcode-hook-lines.d.ts +0 -5
- package/dist/_utils/jcode-hook-lines.js.map +0 -1
- package/dist/_utils/jcode-hooks-toml.d.ts +0 -8
- package/dist/_utils/jcode-hooks-toml.js.map +0 -1
- package/dist/_utils/jcode-paths.d.ts +0 -7
- package/dist/_utils/jcode-paths.js +0 -10
- package/dist/_utils/jcode-paths.js.map +0 -1
- package/dist/_utils/jcode-setup.d.ts +0 -27
- package/dist/_utils/jcode-setup.js +0 -151
- package/dist/_utils/jcode-setup.js.map +0 -1
- package/dist/_utils/jcode-skills-sync.d.ts +0 -8
- package/dist/_utils/jcode-skills-sync.js +0 -74
- package/dist/_utils/jcode-skills-sync.js.map +0 -1
- package/dist/_utils/login-check.d.ts +0 -2
- package/dist/_utils/login-check.js +0 -57
- package/dist/_utils/login-check.js.map +0 -1
- package/dist/_utils/managed-block.d.ts +0 -4
- package/dist/_utils/managed-block.js.map +0 -1
- package/dist/_utils/normalize-boolean-flags.d.ts +0 -2
- package/dist/_utils/normalize-boolean-flags.js.map +0 -1
- package/dist/_utils/normalize-transcript-timestamp.d.ts +0 -2
- package/dist/_utils/normalize-transcript-timestamp.js.map +0 -1
- package/dist/_utils/npm-error-cause.d.ts +0 -5
- package/dist/_utils/npm-error-cause.js.map +0 -1
- package/dist/_utils/open-browser.d.ts +0 -2
- package/dist/_utils/open-browser.js +0 -18
- package/dist/_utils/open-browser.js.map +0 -1
- package/dist/_utils/parse-claude-transcript.d.ts +0 -3
- package/dist/_utils/parse-claude-transcript.js +0 -145
- package/dist/_utils/parse-claude-transcript.js.map +0 -1
- package/dist/_utils/parse-codex-transcript.d.ts +0 -3
- package/dist/_utils/parse-codex-transcript.js +0 -132
- package/dist/_utils/parse-codex-transcript.js.map +0 -1
- package/dist/_utils/parse-cursor-db.d.ts +0 -5
- package/dist/_utils/parse-cursor-db.js +0 -212
- package/dist/_utils/parse-cursor-db.js.map +0 -1
- package/dist/_utils/parse-harbor-atif.d.ts +0 -3
- package/dist/_utils/parse-harbor-atif.js.map +0 -1
- package/dist/_utils/parse-jcode-session.d.ts +0 -14
- package/dist/_utils/parse-jcode-session.js.map +0 -1
- package/dist/_utils/parse-pi-transcript.d.ts +0 -3
- package/dist/_utils/parse-pi-transcript.js +0 -164
- package/dist/_utils/parse-pi-transcript.js.map +0 -1
- package/dist/_utils/parse-transcript.d.ts +0 -14
- package/dist/_utils/parse-transcript.js +0 -94
- package/dist/_utils/parse-transcript.js.map +0 -1
- package/dist/_utils/plugin-status.d.ts +0 -4
- package/dist/_utils/plugin-status.js +0 -76
- package/dist/_utils/plugin-status.js.map +0 -1
- package/dist/_utils/post-route.d.ts +0 -6
- package/dist/_utils/post-route.js +0 -66
- package/dist/_utils/post-route.js.map +0 -1
- package/dist/_utils/pr-review-link.d.ts +0 -11
- package/dist/_utils/pr-review-link.js.map +0 -1
- package/dist/_utils/proactive-ticket-log.d.ts +0 -3
- package/dist/_utils/proactive-ticket-log.js +0 -21
- package/dist/_utils/proactive-ticket-log.js.map +0 -1
- package/dist/_utils/purge-agent-plugins.d.ts +0 -8
- package/dist/_utils/purge-agent-plugins.js +0 -62
- package/dist/_utils/purge-agent-plugins.js.map +0 -1
- package/dist/_utils/purge-claude-statusline.d.ts +0 -12
- package/dist/_utils/purge-claude-statusline.js +0 -57
- package/dist/_utils/purge-claude-statusline.js.map +0 -1
- package/dist/_utils/purge-local-state.d.ts +0 -7
- package/dist/_utils/purge-local-state.js +0 -40
- package/dist/_utils/purge-local-state.js.map +0 -1
- package/dist/_utils/record-commit-anchor.d.ts +0 -8
- package/dist/_utils/record-commit-anchor.js +0 -73
- package/dist/_utils/record-commit-anchor.js.map +0 -1
- package/dist/_utils/refresh-control-state.d.ts +0 -6
- package/dist/_utils/refresh-control-state.js +0 -30
- package/dist/_utils/refresh-control-state.js.map +0 -1
- package/dist/_utils/render-callback-page.d.ts +0 -2
- package/dist/_utils/render-callback-page.js +0 -90
- package/dist/_utils/render-callback-page.js.map +0 -1
- package/dist/_utils/report-cli-install.d.ts +0 -2
- package/dist/_utils/report-cli-install.js +0 -17
- package/dist/_utils/report-cli-install.js.map +0 -1
- package/dist/_utils/resolve-import-workspace.d.ts +0 -4
- package/dist/_utils/resolve-import-workspace.js.map +0 -1
- package/dist/_utils/result.d.ts +0 -14
- package/dist/_utils/result.js +0 -12
- package/dist/_utils/result.js.map +0 -1
- package/dist/_utils/run-bin.d.ts +0 -14
- package/dist/_utils/run-bin.js +0 -60
- package/dist/_utils/run-bin.js.map +0 -1
- package/dist/_utils/runtime-timezone.d.ts +0 -1
- package/dist/_utils/runtime-timezone.js +0 -13
- package/dist/_utils/runtime-timezone.js.map +0 -1
- package/dist/_utils/session-map.d.ts +0 -4
- package/dist/_utils/session-map.js +0 -38
- package/dist/_utils/session-map.js.map +0 -1
- package/dist/_utils/shell-profile.d.ts +0 -13
- package/dist/_utils/shell-profile.js.map +0 -1
- package/dist/_utils/state-line-memo.d.ts +0 -2
- package/dist/_utils/state-line-memo.js +0 -47
- package/dist/_utils/state-line-memo.js.map +0 -1
- package/dist/_utils/state-line.d.ts +0 -3
- package/dist/_utils/state-line.js.map +0 -1
- package/dist/_utils/state.d.ts +0 -15
- package/dist/_utils/state.js +0 -53
- package/dist/_utils/state.js.map +0 -1
- package/dist/_utils/sync-mode-from-server.d.ts +0 -3
- package/dist/_utils/sync-mode-from-server.js +0 -44
- package/dist/_utils/sync-mode-from-server.js.map +0 -1
- package/dist/_utils/transcript-turns.d.ts +0 -51
- package/dist/_utils/transcript-turns.js.map +0 -1
- package/dist/_utils/turn-cache.d.ts +0 -7
- package/dist/_utils/turn-cache.js +0 -56
- package/dist/_utils/turn-cache.js.map +0 -1
- package/dist/_utils/update.d.ts +0 -19
- package/dist/_utils/update.js +0 -196
- package/dist/_utils/update.js.map +0 -1
- package/dist/_utils/version.d.ts +0 -2
- package/dist/_utils/version.js +0 -18
- package/dist/_utils/version.js.map +0 -1
- package/dist/_utils/which.d.ts +0 -2
- package/dist/_utils/which.js +0 -4
- package/dist/_utils/which.js.map +0 -1
- package/dist/_utils/write-commit-trailer.d.ts +0 -2
- package/dist/_utils/write-commit-trailer.js +0 -25
- package/dist/_utils/write-commit-trailer.js.map +0 -1
- package/dist/bin.d.ts +0 -2
- package/dist/commands/_utils/materialize-skill.d.ts +0 -30
- package/dist/commands/_utils/materialize-skill.js +0 -207
- package/dist/commands/_utils/materialize-skill.js.map +0 -1
- package/dist/commands/_utils/mutate-evidence.d.ts +0 -17
- package/dist/commands/_utils/mutate-evidence.js +0 -80
- package/dist/commands/_utils/mutate-evidence.js.map +0 -1
- package/dist/commands/_utils/pack-skill-dir.d.ts +0 -15
- package/dist/commands/_utils/pack-skill-dir.js +0 -169
- package/dist/commands/_utils/pack-skill-dir.js.map +0 -1
- package/dist/commands/artifact.d.ts +0 -18
- package/dist/commands/artifact.js +0 -139
- package/dist/commands/artifact.js.map +0 -1
- package/dist/commands/code-search.d.ts +0 -4
- package/dist/commands/code-search.js +0 -164
- package/dist/commands/code-search.js.map +0 -1
- package/dist/commands/dependency.d.ts +0 -4
- package/dist/commands/dependency.js +0 -23
- package/dist/commands/dependency.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -7
- package/dist/commands/doctor.js +0 -243
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/feedback.d.ts +0 -15
- package/dist/commands/feedback.js +0 -112
- package/dist/commands/feedback.js.map +0 -1
- package/dist/commands/forget.d.ts +0 -4
- package/dist/commands/forget.js +0 -29
- package/dist/commands/forget.js.map +0 -1
- package/dist/commands/git-hooks.d.ts +0 -9
- package/dist/commands/git-hooks.js +0 -18
- package/dist/commands/git-hooks.js.map +0 -1
- package/dist/commands/import.d.ts +0 -8
- package/dist/commands/import.js +0 -414
- package/dist/commands/import.js.map +0 -1
- package/dist/commands/incognito.d.ts +0 -4
- package/dist/commands/incognito.js +0 -13
- package/dist/commands/incognito.js.map +0 -1
- package/dist/commands/indicator.d.ts +0 -4
- package/dist/commands/indicator.js +0 -65
- package/dist/commands/indicator.js.map +0 -1
- package/dist/commands/ingest.d.ts +0 -3
- package/dist/commands/ingest.js +0 -367
- package/dist/commands/ingest.js.map +0 -1
- package/dist/commands/install.d.ts +0 -9
- package/dist/commands/install.js +0 -431
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/invite.d.ts +0 -4
- package/dist/commands/invite.js +0 -61
- package/dist/commands/invite.js.map +0 -1
- package/dist/commands/login.d.ts +0 -4
- package/dist/commands/login.js +0 -145
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -4
- package/dist/commands/logout.js +0 -26
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/onboard.d.ts +0 -4
- package/dist/commands/onboard.js +0 -18
- package/dist/commands/onboard.js.map +0 -1
- package/dist/commands/org.d.ts +0 -5
- package/dist/commands/org.js +0 -157
- package/dist/commands/org.js.map +0 -1
- package/dist/commands/pr-link.d.ts +0 -2
- package/dist/commands/pr-link.js +0 -69
- package/dist/commands/pr-link.js.map +0 -1
- package/dist/commands/restore.d.ts +0 -4
- package/dist/commands/restore.js +0 -23
- package/dist/commands/restore.js.map +0 -1
- package/dist/commands/search.d.ts +0 -4
- package/dist/commands/search.js +0 -85
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/session-start.d.ts +0 -2
- package/dist/commands/session-start.js +0 -114
- package/dist/commands/session-start.js.map +0 -1
- package/dist/commands/set-mode.d.ts +0 -5
- package/dist/commands/set-mode.js +0 -96
- package/dist/commands/set-mode.js.map +0 -1
- package/dist/commands/skill.d.ts +0 -18
- package/dist/commands/skill.js +0 -309
- package/dist/commands/skill.js.map +0 -1
- package/dist/commands/status.d.ts +0 -4
- package/dist/commands/status.js +0 -33
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/statusline.d.ts +0 -2
- package/dist/commands/statusline.js +0 -37
- package/dist/commands/statusline.js.map +0 -1
- package/dist/commands/suggestions.d.ts +0 -4
- package/dist/commands/suggestions.js +0 -84
- package/dist/commands/suggestions.js.map +0 -1
- package/dist/commands/takeover/_utils/agent-paths.d.ts +0 -6
- package/dist/commands/takeover/_utils/archive-codex-desktop-thread.d.ts +0 -5
- package/dist/commands/takeover/_utils/canonical-digest.d.ts +0 -5
- package/dist/commands/takeover/_utils/codex-desktop-recovery.d.ts +0 -16
- package/dist/commands/takeover/_utils/context-fit.d.ts +0 -18
- package/dist/commands/takeover/_utils/cursor-store.d.ts +0 -49
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.d.ts +0 -14
- package/dist/commands/takeover/_utils/launch-desktop-url.d.ts +0 -4
- package/dist/commands/takeover/_utils/native-file.d.ts +0 -14
- package/dist/commands/takeover/_utils/probe-agent.d.ts +0 -20
- package/dist/commands/takeover/_utils/provenance-context.d.ts +0 -7
- package/dist/commands/takeover/_utils/staged-session.d.ts +0 -64
- package/dist/commands/takeover/_utils/write-claude-desktop-session.d.ts +0 -47
- package/dist/commands/takeover/_utils/write-claude-session.d.ts +0 -53
- package/dist/commands/takeover/_utils/write-codex-desktop-session.d.ts +0 -96
- package/dist/commands/takeover/_utils/write-codex-session.d.ts +0 -52
- package/dist/commands/takeover/_utils/write-cursor-session.d.ts +0 -57
- package/dist/commands/takeover/_utils/write-pi-session.d.ts +0 -52
- package/dist/commands/takeover/index.d.ts +0 -21
- package/dist/commands/takeover/takeover.schema.d.ts +0 -24
- package/dist/commands/uninstall.d.ts +0 -8
- package/dist/commands/uninstall.js +0 -130
- package/dist/commands/uninstall.js.map +0 -1
- package/dist/commands/update.d.ts +0 -4
- package/dist/commands/update.js +0 -127
- package/dist/commands/update.js.map +0 -1
- package/dist/jcode/skills/session-takeover/SKILL.md +0 -67
- /package/dist/{_utils → clients/agents}/normalize-transcript-timestamp.js +0 -0
|
@@ -1,104 +1,117 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { constants } from "node:fs";
|
|
3
|
-
import { copyFile, link, mkdir, mkdtemp, readFile, rm, writeFile, } from "node:fs/promises";
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
4
2
|
import { tmpdir } from "node:os";
|
|
5
3
|
import { basename, dirname, join } from "node:path";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import { cliErr } from "../../../core/errors/cli-error.js";
|
|
5
|
+
import { files } from "../../../core/system/files.js";
|
|
6
|
+
import { err, ok } from "../../../core/errors/result.js";
|
|
7
|
+
import { agentProcess } from "./agent-process.js";
|
|
8
|
+
const readStaged = async (stagedPath) => {
|
|
9
|
+
const staged = await files.readBytes(stagedPath);
|
|
10
|
+
return staged.ok
|
|
11
|
+
? staged
|
|
12
|
+
: err(files.toError(staged.error, {
|
|
13
|
+
code: "takeover.staged_unreadable",
|
|
14
|
+
what: "could not read the verified staged session",
|
|
15
|
+
remedy: "retry the takeover command",
|
|
16
|
+
}));
|
|
17
|
+
};
|
|
18
|
+
const alreadyInstalled = async (targetPath, staged) => {
|
|
19
|
+
const existing = await files.readBytes(targetPath);
|
|
20
|
+
if (!existing.ok)
|
|
21
|
+
return existing.error.errno === "ENOENT"
|
|
22
|
+
? ok(false)
|
|
23
|
+
: err(files.toError(existing.error, {
|
|
24
|
+
code: "takeover.target_unreadable",
|
|
25
|
+
what: "could not check the target agent's session store",
|
|
26
|
+
remedy: "check the folder's permissions, then retry",
|
|
27
|
+
}));
|
|
28
|
+
return existing.value.equals(staged)
|
|
29
|
+
? ok(true)
|
|
30
|
+
: err(cliErr("Usage", {
|
|
31
|
+
code: "takeover.destination_exists",
|
|
32
|
+
what: "the destination session ID already exists with different content",
|
|
33
|
+
path: targetPath,
|
|
34
|
+
remedy: "ask the sender for a new takeover command; nothing was overwritten",
|
|
35
|
+
}));
|
|
36
|
+
};
|
|
37
|
+
// Hard-link into place: link fails if the target exists, so a concurrent takeover is never overwritten.
|
|
38
|
+
const linkIntoPlace = async (stagedPath, targetPath, staged) => {
|
|
39
|
+
const temporary = join(dirname(targetPath), `.${basename(targetPath)}.${process.pid}.tmp`);
|
|
40
|
+
const copied = await files.copyFile(stagedPath, temporary);
|
|
41
|
+
if (!copied.ok)
|
|
42
|
+
return err(files.toError(copied.error, {
|
|
43
|
+
code: "takeover.copy_failed",
|
|
44
|
+
what: "could not copy the verified session into the target store",
|
|
45
|
+
remedy: "remove the reported temporary file if present, then retry",
|
|
46
|
+
}));
|
|
47
|
+
const linked = await files.hardLink(temporary, targetPath);
|
|
48
|
+
void (await files.remove(temporary));
|
|
49
|
+
if (linked.ok)
|
|
50
|
+
return ok(undefined);
|
|
51
|
+
const raced = await files.readBytes(targetPath);
|
|
52
|
+
if (raced.ok && raced.value.equals(staged))
|
|
53
|
+
return ok(undefined);
|
|
54
|
+
return err(files.toError(linked.error, {
|
|
55
|
+
code: "takeover.install_failed",
|
|
56
|
+
what: "could not atomically install the native session",
|
|
57
|
+
remedy: "ask the sender for a new takeover command if that destination now exists; nothing was overwritten",
|
|
58
|
+
}));
|
|
59
|
+
};
|
|
8
60
|
const nativeFile = {
|
|
9
61
|
async stage(prefix, lines) {
|
|
10
|
-
const directory =
|
|
11
|
-
|
|
12
|
-
|
|
62
|
+
const directory = join(tmpdir(), `${prefix}${randomUUID()}`);
|
|
63
|
+
const made = await files.ensureDir(directory);
|
|
64
|
+
if (!made.ok)
|
|
65
|
+
return err(files.toError(made.error, {
|
|
66
|
+
code: "takeover.staging_dir_failed",
|
|
13
67
|
what: "could not create a private takeover staging directory",
|
|
14
|
-
why: causeOf(directory.error),
|
|
15
68
|
remedy: "check temporary-directory permissions, then retry",
|
|
16
69
|
}));
|
|
17
|
-
const path = join(directory
|
|
18
|
-
const written = await
|
|
19
|
-
mode: 0o600,
|
|
20
|
-
flag: "wx",
|
|
21
|
-
}));
|
|
70
|
+
const path = join(directory, "session.jsonl");
|
|
71
|
+
const written = await files.writeAtomic(path, `${lines.map((line) => JSON.stringify(line)).join("\n")}\n`, { mode: 0o600 });
|
|
22
72
|
if (!written.ok) {
|
|
23
|
-
await
|
|
24
|
-
return err(
|
|
73
|
+
void (await files.remove(directory, { recursive: true }));
|
|
74
|
+
return err(files.toError(written.error, {
|
|
75
|
+
code: "takeover.stage_failed",
|
|
25
76
|
what: "could not stage the native takeover session",
|
|
26
|
-
why: causeOf(written.error),
|
|
27
|
-
path,
|
|
28
77
|
remedy: "check disk space and temporary-directory permissions, then retry",
|
|
29
78
|
}));
|
|
30
79
|
}
|
|
31
80
|
return ok({ path, recoveryCommand: "" });
|
|
32
81
|
},
|
|
33
82
|
async install(stagedPath, targetPath, recoveryCommand) {
|
|
34
|
-
const staged = await
|
|
83
|
+
const staged = await readStaged(stagedPath);
|
|
35
84
|
if (!staged.ok)
|
|
36
|
-
return
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
})
|
|
42
|
-
const
|
|
43
|
-
if (existing.ok) {
|
|
44
|
-
if (existing.value.equals(staged.value))
|
|
45
|
-
return ok({ recoveryCommand });
|
|
46
|
-
return err(cliErr({
|
|
47
|
-
what: "the destination session ID already exists with different content",
|
|
48
|
-
path: targetPath,
|
|
49
|
-
remedy: "ask the sender for a new takeover command; nothing was overwritten",
|
|
50
|
-
}));
|
|
51
|
-
}
|
|
52
|
-
const made = await fromPromise(mkdir(dirname(targetPath), { recursive: true, mode: 0o700 }));
|
|
85
|
+
return staged;
|
|
86
|
+
const existing = await alreadyInstalled(targetPath, staged.value);
|
|
87
|
+
if (!existing.ok)
|
|
88
|
+
return existing;
|
|
89
|
+
if (existing.value)
|
|
90
|
+
return ok({ recoveryCommand });
|
|
91
|
+
const made = await files.ensureDir(dirname(targetPath));
|
|
53
92
|
if (!made.ok)
|
|
54
|
-
return err(
|
|
93
|
+
return err(files.toError(made.error, {
|
|
94
|
+
code: "takeover.target_dir_failed",
|
|
55
95
|
what: "could not create the target agent session directory",
|
|
56
|
-
why: causeOf(made.error),
|
|
57
|
-
path: dirname(targetPath),
|
|
58
96
|
remedy: "check directory permissions, then retry",
|
|
59
97
|
}));
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
if (!copied.ok)
|
|
63
|
-
return err(cliErr({
|
|
64
|
-
what: "could not copy the verified session into the target store",
|
|
65
|
-
why: causeOf(copied.error),
|
|
66
|
-
path: temporary,
|
|
67
|
-
remedy: "remove the reported temporary file if present, then retry",
|
|
68
|
-
}));
|
|
69
|
-
const linked = await fromPromise(link(temporary, targetPath));
|
|
70
|
-
await rm(temporary, { force: true });
|
|
71
|
-
if (!linked.ok) {
|
|
72
|
-
const raced = await fromPromise(readFile(targetPath));
|
|
73
|
-
if (raced.ok && raced.value.equals(staged.value))
|
|
74
|
-
return ok({ recoveryCommand });
|
|
75
|
-
return err(cliErr({
|
|
76
|
-
what: "could not atomically install the native session",
|
|
77
|
-
why: causeOf(linked.error),
|
|
78
|
-
path: targetPath,
|
|
79
|
-
remedy: "ask the sender for a new takeover command if that destination now exists; nothing was overwritten",
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
return ok({ recoveryCommand });
|
|
98
|
+
const linked = await linkIntoPlace(stagedPath, targetPath, staged.value);
|
|
99
|
+
return linked.ok ? ok({ recoveryCommand }) : linked;
|
|
83
100
|
},
|
|
84
101
|
async cleanup(stagedPath) {
|
|
85
|
-
await
|
|
102
|
+
void (await files.remove(dirname(stagedPath), { recursive: true }));
|
|
86
103
|
},
|
|
87
104
|
launch(binary, args, workspace) {
|
|
88
|
-
const launched =
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return err(cliErr({
|
|
105
|
+
const launched = agentProcess.runInteractive(binary, args, workspace);
|
|
106
|
+
return launched.ok
|
|
107
|
+
? launched
|
|
108
|
+
: err(cliErr("Exec", {
|
|
109
|
+
code: "takeover.agent_exited",
|
|
94
110
|
what: "the target agent process exited before continuing the session",
|
|
95
|
-
why: launched.error
|
|
96
|
-
? causeOf(launched.error)
|
|
97
|
-
: `exit status ${launched.status ?? "unknown"}`,
|
|
111
|
+
why: launched.error,
|
|
98
112
|
path: binary,
|
|
99
113
|
remedy: "launch the installed session manually",
|
|
100
114
|
}));
|
|
101
|
-
return ok(undefined);
|
|
102
115
|
},
|
|
103
116
|
};
|
|
104
117
|
export { nativeFile };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-file.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/native-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"native-file.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/native-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import { cliErr } from "../../../
|
|
2
|
-
import {
|
|
3
|
-
import { err, ok } from "../../../
|
|
4
|
-
import {
|
|
1
|
+
import { cliErr } from "../../../core/errors/cli-error.js";
|
|
2
|
+
import { agentBin } from "../../../clients/agents/agent-bin.js";
|
|
3
|
+
import { err, ok } from "../../../core/errors/result.js";
|
|
4
|
+
import { runProgram } from "../../../core/system/run-program.js";
|
|
5
5
|
const probeAgent = (input) => {
|
|
6
|
-
const binary = input.binaryOverride ??
|
|
6
|
+
const binary = input.binaryOverride ?? agentBin.resolve(input.binName);
|
|
7
7
|
if (!binary)
|
|
8
|
-
return err(cliErr({
|
|
8
|
+
return err(cliErr("Usage", {
|
|
9
|
+
code: "takeover.agent_not_installed",
|
|
9
10
|
what: `${input.displayName} is not installed or discoverable`,
|
|
10
11
|
remedy: `install ${input.displayName}, then run \`glen install --agent ${input.binName}\` and retry`,
|
|
11
12
|
}));
|
|
12
|
-
const version =
|
|
13
|
+
const version = runProgram(binary, ["--version"], { timeoutMs: 5000 });
|
|
13
14
|
if (!version.ok)
|
|
14
|
-
return err(cliErr({
|
|
15
|
+
return err(cliErr("Exec", {
|
|
16
|
+
code: "takeover.agent_version_failed",
|
|
15
17
|
what: `could not verify the installed ${input.displayName} version`,
|
|
16
18
|
why: version.error.spawnError ?? version.error.stderrTail,
|
|
17
19
|
path: binary,
|
|
@@ -19,7 +21,8 @@ const probeAgent = (input) => {
|
|
|
19
21
|
}));
|
|
20
22
|
const normalized = version.value.stdout.trim();
|
|
21
23
|
if (!input.versionPattern.test(normalized))
|
|
22
|
-
return err(cliErr({
|
|
24
|
+
return err(cliErr("Usage", {
|
|
25
|
+
code: "takeover.agent_version_unsupported",
|
|
23
26
|
what: `this ${input.displayName} version is not supported for transcript takeover`,
|
|
24
27
|
why: normalized || "the version command returned no version",
|
|
25
28
|
remedy: "update Glen and the target agent; no native session was written",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probe-agent.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/probe-agent.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"probe-agent.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/probe-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEjE,MAAM,UAAU,GAAG,CAAC,KASnB,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,CAAC,MAAM;QACT,OAAO,GAAG,CACR,MAAM,CAAC,OAAO,EAAE;YACd,IAAI,EAAE,8BAA8B;YACpC,IAAI,EAAE,GAAG,KAAK,CAAC,WAAW,mCAAmC;YAC7D,MAAM,EAAE,WAAW,KAAK,CAAC,WAAW,qCAAqC,KAAK,CAAC,OAAO,cAAc;SACrG,CAAC,CACH,CAAC;IACJ,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,OAAO,CAAC,EAAE;QACb,OAAO,GAAG,CACR,MAAM,CAAC,MAAM,EAAE;YACb,IAAI,EAAE,+BAA+B;YACrC,IAAI,EAAE,kCAAkC,KAAK,CAAC,WAAW,UAAU;YACnE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU;YACzD,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,aAAa,KAAK,CAAC,OAAO,gCAAgC;SACnE,CAAC,CACH,CAAC;IACJ,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;QACxC,OAAO,GAAG,CACR,MAAM,CAAC,OAAO,EAAE;YACd,IAAI,EAAE,oCAAoC;YAC1C,IAAI,EAAE,QAAQ,KAAK,CAAC,WAAW,mDAAmD;YAClF,GAAG,EAAE,UAAU,IAAI,yCAAyC;YAC5D,MAAM,EACJ,iEAAiE;SACpE,CAAC,CACH,CAAC;IACJ,OAAO,EAAE,CAAC;QACR,MAAM;QACN,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,UAAU;QACnB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;KACnD,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { cliErr } from "../../../
|
|
2
|
-
import { err, ok } from "../../../
|
|
1
|
+
import { cliErr } from "../../../core/errors/cli-error.js";
|
|
2
|
+
import { err, ok } from "../../../core/errors/result.js";
|
|
3
3
|
import { writeClaudeDesktopSession } from "./write-claude-desktop-session.js";
|
|
4
4
|
import { writeClaudeSession } from "./write-claude-session.js";
|
|
5
5
|
import { writeCodexDesktopSession } from "./write-codex-desktop-session.js";
|
|
@@ -7,22 +7,23 @@ import { writeCodexSession } from "./write-codex-session.js";
|
|
|
7
7
|
import { writeCursorSession } from "./write-cursor-session.js";
|
|
8
8
|
import { writePiSession } from "./write-pi-session.js";
|
|
9
9
|
const stagedSession = {
|
|
10
|
-
async forTarget(
|
|
11
|
-
if (
|
|
12
|
-
return ok(writeClaudeSession(
|
|
13
|
-
if (
|
|
14
|
-
return ok(writeClaudeDesktopSession(
|
|
15
|
-
if (
|
|
16
|
-
return ok(writeCodexSession(
|
|
17
|
-
if (
|
|
18
|
-
return ok(writeCodexDesktopSession(
|
|
19
|
-
if (
|
|
20
|
-
return ok(writeCursorSession(
|
|
21
|
-
if (
|
|
22
|
-
return ok(writePiSession(
|
|
23
|
-
return err(cliErr({
|
|
10
|
+
async forTarget(target, payload, workspace) {
|
|
11
|
+
if (target === "claude-code" || target === "claude-code-cli")
|
|
12
|
+
return ok(writeClaudeSession(payload, workspace));
|
|
13
|
+
if (target === "claude-code-desktop")
|
|
14
|
+
return ok(writeClaudeDesktopSession(payload, workspace));
|
|
15
|
+
if (target === "codex" || target === "codex-cli")
|
|
16
|
+
return ok(writeCodexSession(payload, workspace));
|
|
17
|
+
if (target === "codex-desktop")
|
|
18
|
+
return ok(writeCodexDesktopSession(payload, workspace));
|
|
19
|
+
if (target === "cursor")
|
|
20
|
+
return ok(writeCursorSession(payload, workspace));
|
|
21
|
+
if (target === "pi")
|
|
22
|
+
return ok(writePiSession(payload, workspace));
|
|
23
|
+
return err(cliErr("Usage", {
|
|
24
|
+
code: "takeover.unsupportedtarget",
|
|
24
25
|
what: "this target agent adapter is not supported for takeover",
|
|
25
|
-
remedy: "update Glen
|
|
26
|
+
remedy: "update Glen, then retry; no session was created",
|
|
26
27
|
}));
|
|
27
28
|
},
|
|
28
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staged-session.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/staged-session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"staged-session.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/staged-session.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA0CvD,MAAM,aAAa,GAAG;IACpB,KAAK,CAAC,SAAS,CACb,MAA+B,EAC/B,OAOC,EACD,SAAiB;QAEjB,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,iBAAiB;YAC1D,OAAO,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACpD,IAAI,MAAM,KAAK,qBAAqB;YAClC,OAAO,EAAE,CAAC,yBAAyB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAC3D,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,WAAW;YAC9C,OAAO,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACnD,IAAI,MAAM,KAAK,eAAe;YAC5B,OAAO,EAAE,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAC1D,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAC3E,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACnE,OAAO,GAAG,CACR,MAAM,CAAC,OAAO,EAAE;YACd,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE,yDAAyD;YAC/D,MAAM,EAAE,iDAAiD;SAC1D,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { parseClaudeTranscript } from "../../../
|
|
5
|
-
import { err,
|
|
2
|
+
import { cliErr } from "../../../core/errors/cli-error.js";
|
|
3
|
+
import { files } from "../../../core/system/files.js";
|
|
4
|
+
import { parseClaudeTranscript } from "../../../clients/claude/parse-claude-transcript.js";
|
|
5
|
+
import { err, ok } from "../../../core/errors/result.js";
|
|
6
6
|
import { agentPaths } from "./agent-paths.js";
|
|
7
7
|
import { nativeFile } from "./native-file.js";
|
|
8
8
|
import { probeAgent } from "./probe-agent.js";
|
|
@@ -12,9 +12,6 @@ const writeClaudeSession = (payload, workspace) => {
|
|
|
12
12
|
const probe = async () => probeAgent({
|
|
13
13
|
displayName: "Claude Code",
|
|
14
14
|
binName: "claude",
|
|
15
|
-
...(process.env.GLEN_CLAUDE_BIN
|
|
16
|
-
? { binaryOverride: process.env.GLEN_CLAUDE_BIN }
|
|
17
|
-
: {}),
|
|
18
15
|
versionPattern: /^2\.1\.\d+/,
|
|
19
16
|
model: "claude-fable-5",
|
|
20
17
|
contextWindowTokens: 200_000,
|
|
@@ -97,22 +94,22 @@ const writeClaudeSession = (payload, workspace) => {
|
|
|
97
94
|
: staged;
|
|
98
95
|
};
|
|
99
96
|
const parse = async (staged) => {
|
|
100
|
-
const raw = await
|
|
97
|
+
const raw = await files.readText(staged.path);
|
|
101
98
|
if (!raw.ok)
|
|
102
|
-
return err(
|
|
99
|
+
return err(files.toError(raw.error, {
|
|
100
|
+
code: "takeover.staged_unreadable",
|
|
103
101
|
what: "could not re-read the staged Claude Code session",
|
|
104
|
-
why: causeOf(raw.error),
|
|
105
|
-
path: staged.path,
|
|
106
102
|
remedy: "retry the takeover command",
|
|
107
103
|
}));
|
|
108
104
|
const parsed = parseClaudeTranscript(raw.value.split(/\r?\n/).filter(Boolean), payload.destinationSessionId);
|
|
109
105
|
if (!parsed)
|
|
110
|
-
return err(cliErr({
|
|
106
|
+
return err(cliErr("Internal", {
|
|
107
|
+
code: "takeover.staged_unparseable",
|
|
111
108
|
what: "Claude Code could not parse the staged transcript",
|
|
112
109
|
path: staged.path,
|
|
113
110
|
remedy: "update Glen and Claude Code, then retry",
|
|
114
111
|
}));
|
|
115
|
-
return ok(parsed.messages.map(({ role,
|
|
112
|
+
return ok(parsed.messages.map(({ role, content }) => ({ role, content })));
|
|
116
113
|
};
|
|
117
114
|
return {
|
|
118
115
|
probe,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-claude-session.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/write-claude-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"write-claude-session.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/write-claude-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import { cliErr } from "../../../core/errors/cli-error.js";
|
|
3
|
+
import { agentBin } from "../../../clients/agents/agent-bin.js";
|
|
4
|
+
import { files } from "../../../core/system/files.js";
|
|
5
|
+
import { field } from "../../../core/json/json-field.js";
|
|
6
|
+
import { jsonlRecords } from "../../../core/json/jsonl-records.js";
|
|
7
|
+
import { err, ok } from "../../../core/errors/result.js";
|
|
7
8
|
import { agentPaths } from "./agent-paths.js";
|
|
8
9
|
import { archiveCodexDesktopThread } from "./archive-codex-desktop-thread.js";
|
|
9
10
|
import { codexDesktopRecovery } from "./codex-desktop-recovery.js";
|
|
@@ -16,12 +17,12 @@ const transcriptMessage = (role, content) => ({
|
|
|
16
17
|
role,
|
|
17
18
|
content,
|
|
18
19
|
});
|
|
19
|
-
const removeCodexDesktopSource = (path) =>
|
|
20
|
+
const removeCodexDesktopSource = (path) => files.remove(path);
|
|
20
21
|
const writeCodexDesktopSession = (payload, workspace, options = {}) => {
|
|
21
22
|
const recovery = options.recovery ?? codexDesktopRecovery;
|
|
22
23
|
const archiveThread = options.archiveThread ?? archiveCodexDesktopThread;
|
|
23
24
|
const removeSource = options.removeSource ?? removeCodexDesktopSource;
|
|
24
|
-
const resolveBinary = () => options.binary ??
|
|
25
|
+
const resolveBinary = () => options.binary ?? agentBin.codexDesktop() ?? agentBin.resolve("codex");
|
|
25
26
|
const timestamp = new Date().toISOString();
|
|
26
27
|
const records = [
|
|
27
28
|
...payload.messages.map((message) => ({
|
|
@@ -50,39 +51,29 @@ const writeCodexDesktopSession = (payload, workspace, options = {}) => {
|
|
|
50
51
|
],
|
|
51
52
|
};
|
|
52
53
|
const parseRecords = async (path) => {
|
|
53
|
-
const raw = await
|
|
54
|
+
const raw = await files.readText(path);
|
|
54
55
|
if (!raw.ok)
|
|
55
|
-
return err(
|
|
56
|
+
return err(files.toError(raw.error, {
|
|
57
|
+
code: "takeover.staged_unreadable",
|
|
56
58
|
what: "could not re-read the staged Codex Desktop transcript",
|
|
57
59
|
remedy: "retry the takeover command",
|
|
58
60
|
}));
|
|
59
|
-
const parsed = raw.value
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
try {
|
|
64
|
-
return JSON.parse(line);
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
if (parsed.some((item) => item === null))
|
|
71
|
-
return err(cliErr({
|
|
61
|
+
const parsed = jsonlRecords(raw.value.split(/\r?\n/));
|
|
62
|
+
if (parsed.unreadable > 0)
|
|
63
|
+
return err(cliErr("Internal", {
|
|
64
|
+
code: "takeover.staged_unparseable",
|
|
72
65
|
what: "Codex Desktop could not parse the staged transcript",
|
|
73
66
|
path,
|
|
74
67
|
remedy: "update Glen and Codex Desktop, then retry",
|
|
75
68
|
}));
|
|
76
|
-
return ok(parsed);
|
|
69
|
+
return ok(parsed.records);
|
|
77
70
|
};
|
|
78
71
|
const messagesFromRecords = (parsed) => parsed.flatMap((record) => {
|
|
79
72
|
if (record.type !== "user" && record.type !== "assistant")
|
|
80
73
|
return [];
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return typeof message?.content === "string"
|
|
85
|
-
? [transcriptMessage(record.type, message.content)]
|
|
74
|
+
const content = field(record.message, "content");
|
|
75
|
+
return typeof content === "string"
|
|
76
|
+
? [transcriptMessage(record.type, content)]
|
|
86
77
|
: [];
|
|
87
78
|
});
|
|
88
79
|
const installedFromId = (destinationSessionId) => {
|
|
@@ -95,7 +86,8 @@ const writeCodexDesktopSession = (payload, workspace, options = {}) => {
|
|
|
95
86
|
const archiveAndClear = async (destinationSessionId) => {
|
|
96
87
|
const binary = resolveBinary();
|
|
97
88
|
if (!binary)
|
|
98
|
-
return err(cliErr({
|
|
89
|
+
return err(cliErr("Exec", {
|
|
90
|
+
code: "takeover.codex_archive_unavailable",
|
|
99
91
|
what: "could not archive the superseded Codex Desktop task",
|
|
100
92
|
remedy: `open Codex Desktop and archive task ${destinationSessionId}`,
|
|
101
93
|
}));
|
|
@@ -104,7 +96,8 @@ const writeCodexDesktopSession = (payload, workspace, options = {}) => {
|
|
|
104
96
|
threadId: destinationSessionId,
|
|
105
97
|
});
|
|
106
98
|
if (!archived)
|
|
107
|
-
return err(cliErr({
|
|
99
|
+
return err(cliErr("Exec", {
|
|
100
|
+
code: "takeover.codex_archive_failed",
|
|
108
101
|
what: "the superseded Codex Desktop task could not be archived",
|
|
109
102
|
remedy: `archive task ${destinationSessionId} in Codex Desktop, then retry the takeover`,
|
|
110
103
|
}));
|
|
@@ -140,7 +133,8 @@ const writeCodexDesktopSession = (payload, workspace, options = {}) => {
|
|
|
140
133
|
install: async (staged) => {
|
|
141
134
|
const binary = resolveBinary();
|
|
142
135
|
if (!binary)
|
|
143
|
-
return err(cliErr({
|
|
136
|
+
return err(cliErr("Usage", {
|
|
137
|
+
code: "takeover.agent_not_installed",
|
|
144
138
|
what: "Codex Desktop is not installed or discoverable",
|
|
145
139
|
remedy: "install or update Codex Desktop, then retry",
|
|
146
140
|
}));
|
|
@@ -168,15 +162,18 @@ const writeCodexDesktopSession = (payload, workspace, options = {}) => {
|
|
|
168
162
|
threadId: imported.value,
|
|
169
163
|
});
|
|
170
164
|
if (!archived)
|
|
171
|
-
return err(cliErr({
|
|
165
|
+
return err(cliErr("Exec", {
|
|
166
|
+
code: "takeover.codex_cleanup_failed",
|
|
172
167
|
what: "temporary Codex import cleanup failed and the imported task remains",
|
|
173
168
|
path: sourcePath,
|
|
174
169
|
remedy: `archive task ${imported.value} in Codex Desktop, remove the reported temporary session, then retry`,
|
|
175
170
|
}));
|
|
176
171
|
}
|
|
177
|
-
return err(cliErr({
|
|
172
|
+
return err(cliErr("Fs", {
|
|
173
|
+
code: "takeover.codex_source_cleanup_failed",
|
|
178
174
|
what: "could not remove the temporary Codex import source",
|
|
179
175
|
path: sourcePath,
|
|
176
|
+
cause: sourceRemoved.error.cause,
|
|
180
177
|
remedy: "remove the reported temporary session, then retry the takeover",
|
|
181
178
|
}));
|
|
182
179
|
}
|
|
@@ -194,9 +191,11 @@ const writeCodexDesktopSession = (payload, workspace, options = {}) => {
|
|
|
194
191
|
});
|
|
195
192
|
return archived
|
|
196
193
|
? saved
|
|
197
|
-
: err(cliErr({
|
|
194
|
+
: err(cliErr("Exec", {
|
|
195
|
+
code: "takeover.codex_recovery_unsaved",
|
|
198
196
|
what: "Codex Desktop imported a task but recovery could not be saved",
|
|
199
197
|
why: saved.error.why ?? saved.error.what,
|
|
198
|
+
cause: saved.error,
|
|
200
199
|
remedy: `archive task ${imported.value} in Codex Desktop, then retry`,
|
|
201
200
|
}));
|
|
202
201
|
}
|
|
@@ -206,7 +205,8 @@ const writeCodexDesktopSession = (payload, workspace, options = {}) => {
|
|
|
206
205
|
threadId: imported.value,
|
|
207
206
|
});
|
|
208
207
|
if (!archived)
|
|
209
|
-
return err(cliErr({
|
|
208
|
+
return err(cliErr("Exec", {
|
|
209
|
+
code: "takeover.codex_extra_task",
|
|
210
210
|
what: "a concurrent Codex Desktop takeover created an extra task",
|
|
211
211
|
remedy: `archive task ${imported.value} in Codex Desktop, then retry`,
|
|
212
212
|
}));
|
|
@@ -245,7 +245,8 @@ const writeCodexDesktopSession = (payload, workspace, options = {}) => {
|
|
|
245
245
|
},
|
|
246
246
|
rollback: async (installed) => {
|
|
247
247
|
if (!installed.destinationSessionId)
|
|
248
|
-
return err(cliErr({
|
|
248
|
+
return err(cliErr("Exec", {
|
|
249
|
+
code: "takeover.codex_archive_unavailable",
|
|
249
250
|
what: "could not archive the rejected Codex Desktop task",
|
|
250
251
|
remedy: "open Codex Desktop and archive the task from the failed takeover",
|
|
251
252
|
}));
|
|
@@ -253,7 +254,8 @@ const writeCodexDesktopSession = (payload, workspace, options = {}) => {
|
|
|
253
254
|
},
|
|
254
255
|
launch: async (installed) => {
|
|
255
256
|
if (!installed.destinationSessionId)
|
|
256
|
-
return err(cliErr({
|
|
257
|
+
return err(cliErr("Contract", {
|
|
258
|
+
code: "takeover.codex_no_task_id",
|
|
257
259
|
what: "Codex Desktop returned no task ID",
|
|
258
260
|
remedy: "update Glen and Codex Desktop, then retry",
|
|
259
261
|
}));
|