atoo-studio 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.github.md +322 -0
- package/README.md +112 -0
- package/README.npm.md +112 -0
- package/bin/atoo-studio.js +90 -0
- package/dist/src/agents/claude-code-terminal/adapter.d.ts +42 -0
- package/dist/src/agents/claude-code-terminal/adapter.js +166 -0
- package/dist/src/agents/claude-code-terminal/index.d.ts +13 -0
- package/dist/src/agents/claude-code-terminal/index.js +45 -0
- package/dist/src/agents/claude-code-terminal/spawner.d.ts +9 -0
- package/dist/src/agents/claude-code-terminal/spawner.js +37 -0
- package/dist/src/agents/claude-code-terminal-chatro/adapter.d.ts +51 -0
- package/dist/src/agents/claude-code-terminal-chatro/adapter.js +301 -0
- package/dist/src/agents/claude-code-terminal-chatro/index.d.ts +13 -0
- package/dist/src/agents/claude-code-terminal-chatro/index.js +45 -0
- package/dist/src/agents/claude-code-terminal-chatro/jsonl-watcher.d.ts +67 -0
- package/dist/src/agents/claude-code-terminal-chatro/jsonl-watcher.js +431 -0
- package/dist/src/agents/claude-code-terminal-chatro/spawner.d.ts +9 -0
- package/dist/src/agents/claude-code-terminal-chatro/spawner.js +37 -0
- package/dist/src/agents/codex-terminal/adapter.d.ts +40 -0
- package/dist/src/agents/codex-terminal/adapter.js +160 -0
- package/dist/src/agents/codex-terminal/index.d.ts +13 -0
- package/dist/src/agents/codex-terminal/index.js +47 -0
- package/dist/src/agents/codex-terminal/spawner.d.ts +9 -0
- package/dist/src/agents/codex-terminal/spawner.js +56 -0
- package/dist/src/agents/codex-terminal-chatro/adapter.d.ts +58 -0
- package/dist/src/agents/codex-terminal-chatro/adapter.js +266 -0
- package/dist/src/agents/codex-terminal-chatro/index.d.ts +13 -0
- package/dist/src/agents/codex-terminal-chatro/index.js +50 -0
- package/dist/src/agents/codex-terminal-chatro/jsonl-watcher.d.ts +36 -0
- package/dist/src/agents/codex-terminal-chatro/jsonl-watcher.js +205 -0
- package/dist/src/agents/codex-terminal-chatro/spawner.d.ts +9 -0
- package/dist/src/agents/codex-terminal-chatro/spawner.js +57 -0
- package/dist/src/agents/lib/chain-builder.d.ts +21 -0
- package/dist/src/agents/lib/chain-builder.js +139 -0
- package/dist/src/agents/lib/claude/fs-sessions.d.ts +31 -0
- package/dist/src/agents/lib/claude/fs-sessions.js +329 -0
- package/dist/src/agents/lib/claude/jsonl-writer.d.ts +32 -0
- package/dist/src/agents/lib/claude/jsonl-writer.js +342 -0
- package/dist/src/agents/lib/claude/workspace-trust.d.ts +1 -0
- package/dist/src/agents/lib/claude/workspace-trust.js +29 -0
- package/dist/src/agents/lib/codex/fs-sessions.d.ts +34 -0
- package/dist/src/agents/lib/codex/fs-sessions.js +255 -0
- package/dist/src/agents/lib/codex/jsonl-mapper.d.ts +11 -0
- package/dist/src/agents/lib/codex/jsonl-mapper.js +154 -0
- package/dist/src/agents/lib/codex/jsonl-writer.d.ts +8 -0
- package/dist/src/agents/lib/codex/jsonl-writer.js +440 -0
- package/dist/src/agents/lib/fs-tracking.d.ts +36 -0
- package/dist/src/agents/lib/fs-tracking.js +109 -0
- package/dist/src/agents/lib/pty-activity-tracker.d.ts +37 -0
- package/dist/src/agents/lib/pty-activity-tracker.js +105 -0
- package/dist/src/agents/lib/session-id-utils.d.ts +46 -0
- package/dist/src/agents/lib/session-id-utils.js +147 -0
- package/dist/src/agents/lib/session-precreate.d.ts +17 -0
- package/dist/src/agents/lib/session-precreate.js +177 -0
- package/dist/src/agents/registry.d.ts +72 -0
- package/dist/src/agents/registry.js +337 -0
- package/dist/src/agents/types.d.ts +135 -0
- package/dist/src/agents/types.js +1 -0
- package/dist/src/auth/crypto-key.d.ts +6 -0
- package/dist/src/auth/crypto-key.js +45 -0
- package/dist/src/auth/middleware.d.ts +18 -0
- package/dist/src/auth/middleware.js +54 -0
- package/dist/src/auth/password.d.ts +2 -0
- package/dist/src/auth/password.js +12 -0
- package/dist/src/auth/session.d.ts +10 -0
- package/dist/src/auth/session.js +33 -0
- package/dist/src/auth/totp.d.ts +12 -0
- package/dist/src/auth/totp.js +61 -0
- package/dist/src/auth/webauthn.d.ts +6 -0
- package/dist/src/auth/webauthn.js +117 -0
- package/dist/src/config.d.ts +10 -0
- package/dist/src/config.js +16 -0
- package/dist/src/database/connection-manager.d.ts +25 -0
- package/dist/src/database/connection-manager.js +211 -0
- package/dist/src/database/discovery/container.d.ts +6 -0
- package/dist/src/database/discovery/container.js +226 -0
- package/dist/src/database/discovery/env-parser.d.ts +9 -0
- package/dist/src/database/discovery/env-parser.js +525 -0
- package/dist/src/database/discovery/local-files.d.ts +6 -0
- package/dist/src/database/discovery/local-files.js +58 -0
- package/dist/src/database/discovery/port-scan.d.ts +7 -0
- package/dist/src/database/discovery/port-scan.js +61 -0
- package/dist/src/database/drivers/cassandra.d.ts +12 -0
- package/dist/src/database/drivers/cassandra.js +91 -0
- package/dist/src/database/drivers/clickhouse.d.ts +11 -0
- package/dist/src/database/drivers/clickhouse.js +127 -0
- package/dist/src/database/drivers/elasticsearch.d.ts +12 -0
- package/dist/src/database/drivers/elasticsearch.js +169 -0
- package/dist/src/database/drivers/influxdb.d.ts +14 -0
- package/dist/src/database/drivers/influxdb.js +194 -0
- package/dist/src/database/drivers/memcached.d.ts +11 -0
- package/dist/src/database/drivers/memcached.js +117 -0
- package/dist/src/database/drivers/mongodb.d.ts +12 -0
- package/dist/src/database/drivers/mongodb.js +128 -0
- package/dist/src/database/drivers/mysql.d.ts +11 -0
- package/dist/src/database/drivers/mysql.js +112 -0
- package/dist/src/database/drivers/neo4j.d.ts +11 -0
- package/dist/src/database/drivers/neo4j.js +158 -0
- package/dist/src/database/drivers/postgresql.d.ts +11 -0
- package/dist/src/database/drivers/postgresql.js +133 -0
- package/dist/src/database/drivers/redis.d.ts +11 -0
- package/dist/src/database/drivers/redis.js +91 -0
- package/dist/src/database/drivers/sqlite.d.ts +10 -0
- package/dist/src/database/drivers/sqlite.js +100 -0
- package/dist/src/database/query-stream.d.ts +5 -0
- package/dist/src/database/query-stream.js +75 -0
- package/dist/src/database/types.d.ts +71 -0
- package/dist/src/database/types.js +1 -0
- package/dist/src/events/index.d.ts +3 -0
- package/dist/src/events/index.js +3 -0
- package/dist/src/events/types.d.ts +214 -0
- package/dist/src/events/types.js +22 -0
- package/dist/src/events/wire.d.ts +114 -0
- package/dist/src/events/wire.js +296 -0
- package/dist/src/fs-monitor-types.d.ts +24 -0
- package/dist/src/fs-monitor-types.js +1 -0
- package/dist/src/fs-monitor.d.ts +80 -0
- package/dist/src/fs-monitor.js +637 -0
- package/dist/src/handlers/auth.d.ts +1 -0
- package/dist/src/handlers/auth.js +170 -0
- package/dist/src/handlers/changes.d.ts +1 -0
- package/dist/src/handlers/changes.js +203 -0
- package/dist/src/handlers/containers.d.ts +12 -0
- package/dist/src/handlers/containers.js +379 -0
- package/dist/src/handlers/databases.d.ts +3 -0
- package/dist/src/handlers/databases.js +327 -0
- package/dist/src/handlers/environments.d.ts +3 -0
- package/dist/src/handlers/environments.js +286 -0
- package/dist/src/handlers/github.d.ts +1 -0
- package/dist/src/handlers/github.js +153 -0
- package/dist/src/handlers/projects.d.ts +1 -0
- package/dist/src/handlers/projects.js +895 -0
- package/dist/src/handlers/ssh.d.ts +1 -0
- package/dist/src/handlers/ssh.js +162 -0
- package/dist/src/handlers/users.d.ts +1 -0
- package/dist/src/handlers/users.js +195 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +228 -0
- package/dist/src/mcp/config.d.ts +32 -0
- package/dist/src/mcp/config.js +227 -0
- package/dist/src/mcp/server.d.ts +1 -0
- package/dist/src/mcp/server.js +574 -0
- package/dist/src/serial/cuse-device.d.ts +19 -0
- package/dist/src/serial/cuse-device.js +260 -0
- package/dist/src/serial/manager.d.ts +63 -0
- package/dist/src/serial/manager.js +206 -0
- package/dist/src/serial/pty-pair.d.ts +16 -0
- package/dist/src/serial/pty-pair.js +68 -0
- package/dist/src/services/fs-browser.d.ts +14 -0
- package/dist/src/services/fs-browser.js +98 -0
- package/dist/src/services/git-ops.d.ts +78 -0
- package/dist/src/services/git-ops.js +288 -0
- package/dist/src/services/github-ops.d.ts +104 -0
- package/dist/src/services/github-ops.js +192 -0
- package/dist/src/services/obfuscation.d.ts +2 -0
- package/dist/src/services/obfuscation.js +16 -0
- package/dist/src/services/preview/headless-backend.d.ts +62 -0
- package/dist/src/services/preview/headless-backend.js +698 -0
- package/dist/src/services/preview/injected-scripts.d.ts +9 -0
- package/dist/src/services/preview/injected-scripts.js +232 -0
- package/dist/src/services/preview/preview-backend.d.ts +92 -0
- package/dist/src/services/preview/preview-backend.js +15 -0
- package/dist/src/services/preview/universal-setter.d.ts +7 -0
- package/dist/src/services/preview/universal-setter.js +46 -0
- package/dist/src/services/preview-manager.d.ts +50 -0
- package/dist/src/services/preview-manager.js +216 -0
- package/dist/src/services/project-watcher.d.ts +6 -0
- package/dist/src/services/project-watcher.js +307 -0
- package/dist/src/services/remote-fs-browser.d.ts +11 -0
- package/dist/src/services/remote-fs-browser.js +50 -0
- package/dist/src/services/remote-git-ops.d.ts +71 -0
- package/dist/src/services/remote-git-ops.js +215 -0
- package/dist/src/services/session-search.d.ts +56 -0
- package/dist/src/services/session-search.js +303 -0
- package/dist/src/services/ssh-manager.d.ts +44 -0
- package/dist/src/services/ssh-manager.js +359 -0
- package/dist/src/session-writer.d.ts +9 -0
- package/dist/src/session-writer.js +66 -0
- package/dist/src/spawner.d.ts +56 -0
- package/dist/src/spawner.js +135 -0
- package/dist/src/state/db.d.ts +214 -0
- package/dist/src/state/db.js +897 -0
- package/dist/src/state/store.d.ts +37 -0
- package/dist/src/state/store.js +108 -0
- package/dist/src/state/types.d.ts +13 -0
- package/dist/src/state/types.js +1 -0
- package/dist/src/web/devtools-proxy.d.ts +7 -0
- package/dist/src/web/devtools-proxy.js +176 -0
- package/dist/src/web/port-proxy.d.ts +15 -0
- package/dist/src/web/port-proxy.js +124 -0
- package/dist/src/web/preview-ws.d.ts +5 -0
- package/dist/src/web/preview-ws.js +207 -0
- package/dist/src/web/server.d.ts +6 -0
- package/dist/src/web/server.js +1694 -0
- package/dist/src/ws/agent-ws.d.ts +5 -0
- package/dist/src/ws/agent-ws.js +93 -0
- package/frontend/dist/assets/_basePickBy-B-LibQ4-.js +1 -0
- package/frontend/dist/assets/_baseUniq-CprifHap.js +1 -0
- package/frontend/dist/assets/_createAssigner-ByDUqGii.js +1 -0
- package/frontend/dist/assets/abap-DuT-3z4x.js +1 -0
- package/frontend/dist/assets/addon-fit-CxQet2ja.js +1 -0
- package/frontend/dist/assets/addon-web-links-D_jRkPIl.js +1 -0
- package/frontend/dist/assets/apex-B-em86xX.js +1 -0
- package/frontend/dist/assets/api-SUPuHhSY.js +2 -0
- package/frontend/dist/assets/arc-Z0_eVteO.js +1 -0
- package/frontend/dist/assets/architecture-PBZL5I3N-hvVXGhqd.js +1 -0
- package/frontend/dist/assets/architectureDiagram-2XIMDMQ5-DiHPxX4j.js +36 -0
- package/frontend/dist/assets/array-CwG8vNfn.js +1 -0
- package/frontend/dist/assets/auth-store-R7eW5SVu.js +1 -0
- package/frontend/dist/assets/azcli-Bg9wQloi.js +1 -0
- package/frontend/dist/assets/bat-BM46z99L.js +1 -0
- package/frontend/dist/assets/bicep-DcBsJUfh.js +2 -0
- package/frontend/dist/assets/blockDiagram-WCTKOSBZ-C40u_hLo.js +132 -0
- package/frontend/dist/assets/c4Diagram-IC4MRINW-Ct7LjWFQ.js +10 -0
- package/frontend/dist/assets/cameligo-zw7JTtim.js +1 -0
- package/frontend/dist/assets/channel-ClCsE6HN.js +1 -0
- package/frontend/dist/assets/chunk-4BX2VUAB-zZ6P90VO.js +1 -0
- package/frontend/dist/assets/chunk-55IACEB6-DXllTDQl.js +1 -0
- package/frontend/dist/assets/chunk-7E7YKBS2-7zRaOLjj.js +1 -0
- package/frontend/dist/assets/chunk-7R4GIKGN-Csst1274.js +80 -0
- package/frontend/dist/assets/chunk-C72U2L5F-_JbQPbLN.js +1 -0
- package/frontend/dist/assets/chunk-CFjPhJqf.js +1 -0
- package/frontend/dist/assets/chunk-EGIJ26TM-B--aFyPw.js +1 -0
- package/frontend/dist/assets/chunk-FMBD7UC4-DVR34RNb.js +15 -0
- package/frontend/dist/assets/chunk-GEFDOKGD-CnmN6cC8.js +2 -0
- package/frontend/dist/assets/chunk-JSJVCQXG-CWxHBzeJ.js +1 -0
- package/frontend/dist/assets/chunk-KX2RTZJC-DkRk56s7.js +1 -0
- package/frontend/dist/assets/chunk-KYZI473N-DCCsG2dK.js +53 -0
- package/frontend/dist/assets/chunk-L3YUKLVL-C-DkZTMr.js +1 -0
- package/frontend/dist/assets/chunk-MX3YWQON-OUdzv5sZ.js +1 -0
- package/frontend/dist/assets/chunk-NQ4KR5QH-Bpu9FsM7.js +220 -0
- package/frontend/dist/assets/chunk-O4XLMI2P-BMLK6_ib.js +7 -0
- package/frontend/dist/assets/chunk-OZEHJAEY-CNNiJtG0.js +1 -0
- package/frontend/dist/assets/chunk-PQ6SQG4A-evVHD3KM.js +1 -0
- package/frontend/dist/assets/chunk-PU5JKC2W-DPFTYuvl.js +70 -0
- package/frontend/dist/assets/chunk-QZHKN3VN-JRdddPvu.js +1 -0
- package/frontend/dist/assets/chunk-R5LLSJPH-CHQzVVOV.js +1 -0
- package/frontend/dist/assets/chunk-WL4C6EOR-BNFU6IIi.js +189 -0
- package/frontend/dist/assets/chunk-XIRO2GV7-98T93G85.js +1 -0
- package/frontend/dist/assets/chunk-XZSTWKYB-BcW3cyNp.js +94 -0
- package/frontend/dist/assets/chunk-YBOYWFTD-BgKO1qAJ.js +1 -0
- package/frontend/dist/assets/classDiagram-VBA2DB6C-DikXzgcD.js +1 -0
- package/frontend/dist/assets/classDiagram-v2-RAHNMMFH-D7E3tQUK.js +1 -0
- package/frontend/dist/assets/clojure-FspFoNNQ.js +1 -0
- package/frontend/dist/assets/clone-mOXuZa7C.js +1 -0
- package/frontend/dist/assets/codicon-ngg6Pgfi.ttf +0 -0
- package/frontend/dist/assets/coffee-13n8Bk2W.js +1 -0
- package/frontend/dist/assets/cose-bilkent-S5V4N54A-zUOWQqLe.js +1 -0
- package/frontend/dist/assets/cpp-BVm2xGEs.js +1 -0
- package/frontend/dist/assets/csharp-D2kAWmUm.js +1 -0
- package/frontend/dist/assets/csp-Ezvgpf0e.js +1 -0
- package/frontend/dist/assets/css-CYxRwcFy.js +3 -0
- package/frontend/dist/assets/css.worker-Cd5h-ZOL.js +89 -0
- package/frontend/dist/assets/cssMode-CrXej49V.js +1 -0
- package/frontend/dist/assets/cypher-jg3SGErc.js +1 -0
- package/frontend/dist/assets/cytoscape.esm-kyyvzxNV.js +321 -0
- package/frontend/dist/assets/dagre-DH4bgZO7.js +1 -0
- package/frontend/dist/assets/dagre-KLK3FWXG-DNSqDkwT.js +4 -0
- package/frontend/dist/assets/dart-179jqhK4.js +1 -0
- package/frontend/dist/assets/defaultLocale-Dda4OpKy.js +1 -0
- package/frontend/dist/assets/diagram-E7M64L7V-RqPNT5Vs.js +24 -0
- package/frontend/dist/assets/diagram-IFDJBPK2-B-5NRyaE.js +43 -0
- package/frontend/dist/assets/diagram-P4PSJMXO-BrP69Hk0.js +24 -0
- package/frontend/dist/assets/dist-CU_Nb1G5.js +1 -0
- package/frontend/dist/assets/dockerfile-CIAtSGxS.js +1 -0
- package/frontend/dist/assets/ecl-CGVKfDxD.js +1 -0
- package/frontend/dist/assets/editor-Br_kD0ds.css +1 -0
- package/frontend/dist/assets/editor.api2-YXkDn0Gm.js +872 -0
- package/frontend/dist/assets/editor.main-fBaXZjJ0.js +6 -0
- package/frontend/dist/assets/elixir-BZ-6w0y3.js +1 -0
- package/frontend/dist/assets/erDiagram-INFDFZHY-BYiB9NYg.js +70 -0
- package/frontend/dist/assets/flow9-CVuOjTMv.js +1 -0
- package/frontend/dist/assets/flowDiagram-PKNHOUZH-Cwq47rsR.js +162 -0
- package/frontend/dist/assets/freemarker2-DM-pztJU.js +3 -0
- package/frontend/dist/assets/fsharp-q0pGJYr6.js +1 -0
- package/frontend/dist/assets/ganttDiagram-A5KZAMGK-Dnx3szD9.js +292 -0
- package/frontend/dist/assets/gitGraph-HDMCJU4V-COlTQ7bA.js +1 -0
- package/frontend/dist/assets/gitGraphDiagram-K3NZZRJ6-BaUxboNc.js +65 -0
- package/frontend/dist/assets/go-dzSPfdEO.js +1 -0
- package/frontend/dist/assets/graphlib-kEFlkt3U.js +1 -0
- package/frontend/dist/assets/graphql-CG4OUoEV.js +1 -0
- package/frontend/dist/assets/handlebars-BbK53Vec.js +1 -0
- package/frontend/dist/assets/hcl-Cy14JPk3.js +1 -0
- package/frontend/dist/assets/html-DYtTQNOG.js +1 -0
- package/frontend/dist/assets/html.worker-BjVEKLoU.js +502 -0
- package/frontend/dist/assets/htmlMode-C6GTouth.js +1 -0
- package/frontend/dist/assets/index-DMLxes_u.js +157 -0
- package/frontend/dist/assets/index-DmzeqkB1.css +1 -0
- package/frontend/dist/assets/info-3K5VOQVL-DBtHyA4C.js +1 -0
- package/frontend/dist/assets/infoDiagram-LFFYTUFH-yBXLgMPI.js +2 -0
- package/frontend/dist/assets/ini-Pbg8HGVD.js +1 -0
- package/frontend/dist/assets/init-D6KNwrax.js +1 -0
- package/frontend/dist/assets/ishikawaDiagram-PHBUUO56-Bld4two_.js +70 -0
- package/frontend/dist/assets/java-BmVu6Qrl.js +1 -0
- package/frontend/dist/assets/javascript-PbfQEdcJ.js +1 -0
- package/frontend/dist/assets/journeyDiagram-4ABVD52K-4HyMd4R2.js +139 -0
- package/frontend/dist/assets/json.worker-DqU5Wxnl.js +58 -0
- package/frontend/dist/assets/jsonMode-CASsGppE.js +7 -0
- package/frontend/dist/assets/julia-3cGnieBq.js +1 -0
- package/frontend/dist/assets/kanban-definition-K7BYSVSG-DpgsZmpG.js +89 -0
- package/frontend/dist/assets/katex-CEw3x5bf.js +261 -0
- package/frontend/dist/assets/kotlin-BuWkVcfV.js +1 -0
- package/frontend/dist/assets/less-CJ_VPy2C.js +2 -0
- package/frontend/dist/assets/lexon-BygAuZPu.js +1 -0
- package/frontend/dist/assets/line-CA_wh_TY.js +1 -0
- package/frontend/dist/assets/linear-BAcLW45z.js +1 -0
- package/frontend/dist/assets/liquid-kz84dle6.js +1 -0
- package/frontend/dist/assets/lspLanguageFeatures-C7hAHFn1.js +4 -0
- package/frontend/dist/assets/lua-C8Xs3dCx.js +1 -0
- package/frontend/dist/assets/m3-DTJeKBk4.js +1 -0
- package/frontend/dist/assets/markdown-QCgx8JqZ.js +1 -0
- package/frontend/dist/assets/math-D0YcMJAn.js +1 -0
- package/frontend/dist/assets/mdx-yRw0ap-E.js +1 -0
- package/frontend/dist/assets/mermaid-parser.core-DAeTodBQ.js +4 -0
- package/frontend/dist/assets/mindmap-definition-YRQLILUH-CoNlFyVl.js +68 -0
- package/frontend/dist/assets/mips-DopWaYgE.js +1 -0
- package/frontend/dist/assets/monaco.contribution-DeY0Qei-.js +2 -0
- package/frontend/dist/assets/msdax-BDis4ARV.js +1 -0
- package/frontend/dist/assets/mysql-BV6MLsOI.js +1 -0
- package/frontend/dist/assets/objective-c-B1UuzKs6.js +1 -0
- package/frontend/dist/assets/ordinal-jM7S0YHN.js +1 -0
- package/frontend/dist/assets/packet-RMMSAZCW-FF6-Tmai.js +1 -0
- package/frontend/dist/assets/pascal-BkvESCrc.js +1 -0
- package/frontend/dist/assets/pascaligo-lTy0kZYr.js +1 -0
- package/frontend/dist/assets/path-DNPd7Py7.js +1 -0
- package/frontend/dist/assets/perl-CrtUPXLV.js +1 -0
- package/frontend/dist/assets/pgsql-B9IbNWx2.js +1 -0
- package/frontend/dist/assets/php-CXvQBY2p.js +1 -0
- package/frontend/dist/assets/pie-UPGHQEXC-CFvXY2o-.js +1 -0
- package/frontend/dist/assets/pieDiagram-SKSYHLDU-CM_hbCcn.js +30 -0
- package/frontend/dist/assets/pla-DxBxuqWu.js +1 -0
- package/frontend/dist/assets/postiats-OkEuT5YF.js +1 -0
- package/frontend/dist/assets/powerquery-CMx5Tq4K.js +1 -0
- package/frontend/dist/assets/powershell-CstRxrEc.js +1 -0
- package/frontend/dist/assets/preload-helper-D4M6sveU.js +1 -0
- package/frontend/dist/assets/protobuf-Bx0Z-uRj.js +2 -0
- package/frontend/dist/assets/pug--W8vanWl.js +1 -0
- package/frontend/dist/assets/python-DA0rnlw3.js +1 -0
- package/frontend/dist/assets/qsharp-CRtr0YbN.js +1 -0
- package/frontend/dist/assets/quadrantDiagram-337W2JSQ-B3n3IUhC.js +7 -0
- package/frontend/dist/assets/r-C6E1d6iv.js +1 -0
- package/frontend/dist/assets/radar-KQ55EAFF-MPZu7SdX.js +1 -0
- package/frontend/dist/assets/razor-yd73uata.js +1 -0
- package/frontend/dist/assets/redis-Dx13voP3.js +1 -0
- package/frontend/dist/assets/redshift-D66HwlyV.js +1 -0
- package/frontend/dist/assets/requirementDiagram-Z7DCOOCP-CorP7L7F.js +73 -0
- package/frontend/dist/assets/restructuredtext-DQT2NKJ2.js +1 -0
- package/frontend/dist/assets/rough.esm-DxAX5Vpo.js +1 -0
- package/frontend/dist/assets/ruby-iFXI8hwH.js +1 -0
- package/frontend/dist/assets/rust-CSKiei34.js +1 -0
- package/frontend/dist/assets/sankeyDiagram-WA2Y5GQK-RDx6Bd-B.js +10 -0
- package/frontend/dist/assets/sb-Bo3ttdP2.js +1 -0
- package/frontend/dist/assets/scala-BC1D-Nxp.js +1 -0
- package/frontend/dist/assets/scheme-Z4OAo4Lv.js +1 -0
- package/frontend/dist/assets/scss-BvrdPs6B.js +3 -0
- package/frontend/dist/assets/sequenceDiagram-2WXFIKYE-JMqJSFq6.js +145 -0
- package/frontend/dist/assets/shell-Bh_aCyF-.js +1 -0
- package/frontend/dist/assets/solidity-CWHj6tSe.js +1 -0
- package/frontend/dist/assets/sophia-raoNtKtm.js +1 -0
- package/frontend/dist/assets/sparql-XzmoGnue.js +1 -0
- package/frontend/dist/assets/sql-BD0i9Gvg.js +1 -0
- package/frontend/dist/assets/src-Bn-kKzs7.js +1 -0
- package/frontend/dist/assets/st-DtVKyms6.js +1 -0
- package/frontend/dist/assets/stateDiagram-RAJIS63D-CgFfENdy.js +1 -0
- package/frontend/dist/assets/stateDiagram-v2-FVOUBMTO-C4Hh2P-U.js +1 -0
- package/frontend/dist/assets/swift--UZs77wT.js +1 -0
- package/frontend/dist/assets/systemverilog-CDnBSWUd.js +1 -0
- package/frontend/dist/assets/tcl-DdCEuTHZ.js +1 -0
- package/frontend/dist/assets/timeline-definition-YZTLITO2-BnatPBR5.js +61 -0
- package/frontend/dist/assets/treemap-KZPCXAKY-qb1Pl9la.js +1 -0
- package/frontend/dist/assets/ts.worker-DyPAEIuH.js +67719 -0
- package/frontend/dist/assets/tsMode-iuvyEpyO.js +11 -0
- package/frontend/dist/assets/twig-SSL-Altf.js +1 -0
- package/frontend/dist/assets/typescript-17918Hud.js +1 -0
- package/frontend/dist/assets/typespec-BT7S0ETg.js +1 -0
- package/frontend/dist/assets/vb-CrIgucua.js +1 -0
- package/frontend/dist/assets/vennDiagram-LZ73GAT5-DygS4Zzd.js +34 -0
- package/frontend/dist/assets/wgsl-BeKc3oEp.js +298 -0
- package/frontend/dist/assets/workers-DTfwKVoM.js +1 -0
- package/frontend/dist/assets/xml-CBMr_Wbw.js +1 -0
- package/frontend/dist/assets/xterm-BrP-ENHg.css +1 -0
- package/frontend/dist/assets/xterm-CBX2m0YM.js +36 -0
- package/frontend/dist/assets/xychartDiagram-JWTSCODW-D6wY1Jwd.js +7 -0
- package/frontend/dist/assets/yaml-CTjCH7Bv.js +1 -0
- package/frontend/dist/fonts/inter-300.ttf +0 -0
- package/frontend/dist/fonts/inter-400.ttf +0 -0
- package/frontend/dist/fonts/inter-500.ttf +0 -0
- package/frontend/dist/fonts/inter-600.ttf +0 -0
- package/frontend/dist/fonts/inter-700.ttf +0 -0
- package/frontend/dist/index.html +49 -0
- package/frontend/dist/logo_192x192.png +0 -0
- package/frontend/dist/logo_32x32.png +0 -0
- package/frontend/dist/logo_512x512.png +0 -0
- package/frontend/dist/logo_64x64.png +0 -0
- package/frontend/dist/logobg_192x192.png +0 -0
- package/frontend/dist/logobg_512x512.png +0 -0
- package/frontend/dist/logobg_64x64.png +0 -0
- package/frontend/dist/manifest.json +25 -0
- package/frontend/dist/sw.js +22 -0
- package/package.json +74 -7
- package/preload/Makefile +12 -0
- package/preload/atoo-studio-preload.c +647 -0
- package/preload/atoo-studio-preload.so +0 -0
- package/setup-cuse.sh +260 -0
- package/setup.sh +81 -0
- package/src/serial/native/binding.gyp +10 -0
- package/src/serial/native/pty_pair.c +222 -0
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import readline from 'readline';
|
|
5
|
+
const CLAUDE_PROJECTS_DIR = path.join(os.homedir(), '.claude', 'projects');
|
|
6
|
+
const CLAUDE_HISTORY_PATH = path.join(os.homedir(), '.claude', 'history.jsonl');
|
|
7
|
+
const CACHE_TTL = 30_000; // 30s
|
|
8
|
+
/**
|
|
9
|
+
* Load session titles from ~/.claude/history.jsonl.
|
|
10
|
+
* Returns map of sessionId → first display text.
|
|
11
|
+
*/
|
|
12
|
+
function loadHistoryTitles() {
|
|
13
|
+
const titles = new Map();
|
|
14
|
+
try {
|
|
15
|
+
const content = fs.readFileSync(CLAUDE_HISTORY_PATH, 'utf-8');
|
|
16
|
+
for (const line of content.split('\n')) {
|
|
17
|
+
if (!line.trim())
|
|
18
|
+
continue;
|
|
19
|
+
try {
|
|
20
|
+
const entry = JSON.parse(line);
|
|
21
|
+
if (entry.sessionId && entry.display && !titles.has(entry.sessionId)) {
|
|
22
|
+
const d = entry.display.trim();
|
|
23
|
+
// Skip slash commands and system prompts
|
|
24
|
+
if (d && !d.startsWith('/')) {
|
|
25
|
+
titles.set(entry.sessionId, d.substring(0, 100));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch { }
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch { }
|
|
33
|
+
return titles;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Strip XML/HTML-like tags from text (e.g. <local-command-caveat>...</local-command-caveat>).
|
|
37
|
+
*/
|
|
38
|
+
function stripXmlTags(text) {
|
|
39
|
+
return text.replace(/<[^>]+>/g, '').trim();
|
|
40
|
+
}
|
|
41
|
+
class FsSessionScanner {
|
|
42
|
+
cache = new Map();
|
|
43
|
+
lastScanTime = 0;
|
|
44
|
+
async scan() {
|
|
45
|
+
const now = Date.now();
|
|
46
|
+
if (now - this.lastScanTime < CACHE_TTL && this.cache.size > 0) {
|
|
47
|
+
return Array.from(this.cache.values());
|
|
48
|
+
}
|
|
49
|
+
// Load titles from history.jsonl for better session names
|
|
50
|
+
const historyTitles = loadHistoryTitles();
|
|
51
|
+
const results = [];
|
|
52
|
+
try {
|
|
53
|
+
const projectDirs = fs.readdirSync(CLAUDE_PROJECTS_DIR, { withFileTypes: true });
|
|
54
|
+
for (const dirEntry of projectDirs) {
|
|
55
|
+
if (!dirEntry.isDirectory())
|
|
56
|
+
continue;
|
|
57
|
+
const dirHash = dirEntry.name;
|
|
58
|
+
const dirPath = path.join(CLAUDE_PROJECTS_DIR, dirHash);
|
|
59
|
+
try {
|
|
60
|
+
const files = fs.readdirSync(dirPath);
|
|
61
|
+
for (const file of files) {
|
|
62
|
+
if (!file.endsWith('.jsonl'))
|
|
63
|
+
continue;
|
|
64
|
+
const uuid = file.replace('.jsonl', '');
|
|
65
|
+
// Skip non-UUID filenames
|
|
66
|
+
if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(uuid))
|
|
67
|
+
continue;
|
|
68
|
+
const jsonlPath = path.join(dirPath, file);
|
|
69
|
+
try {
|
|
70
|
+
const meta = await this.parseSessionMeta(jsonlPath, dirHash, uuid, historyTitles);
|
|
71
|
+
if (meta)
|
|
72
|
+
results.push(meta);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Skip unparseable files
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Skip unreadable directories
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// ~/.claude/projects doesn't exist
|
|
86
|
+
}
|
|
87
|
+
this.cache.clear();
|
|
88
|
+
for (const meta of results) {
|
|
89
|
+
this.cache.set(meta.uuid, meta);
|
|
90
|
+
}
|
|
91
|
+
this.lastScanTime = now;
|
|
92
|
+
return results;
|
|
93
|
+
}
|
|
94
|
+
async parseSessionMeta(jsonlPath, dirHash, uuid, historyTitles) {
|
|
95
|
+
const stat = fs.statSync(jsonlPath);
|
|
96
|
+
if (stat.size === 0)
|
|
97
|
+
return null;
|
|
98
|
+
let title = '';
|
|
99
|
+
let directory = '';
|
|
100
|
+
let lineCount = 0;
|
|
101
|
+
let bytesRead = 0;
|
|
102
|
+
let hasConversationEvent = false;
|
|
103
|
+
const MAX_LINES = 30;
|
|
104
|
+
const MAX_BYTES = 64 * 1024; // 64KB max for metadata extraction
|
|
105
|
+
return new Promise((resolve) => {
|
|
106
|
+
const stream = fs.createReadStream(jsonlPath, {
|
|
107
|
+
encoding: 'utf-8',
|
|
108
|
+
start: 0,
|
|
109
|
+
end: Math.min(stat.size, MAX_BYTES) - 1,
|
|
110
|
+
});
|
|
111
|
+
const rl = readline.createInterface({ input: stream, crlfDelay: Infinity });
|
|
112
|
+
rl.on('line', (line) => {
|
|
113
|
+
lineCount++;
|
|
114
|
+
bytesRead += line.length + 1;
|
|
115
|
+
try {
|
|
116
|
+
const event = JSON.parse(line);
|
|
117
|
+
// Track whether file has real conversation events (not just snapshots)
|
|
118
|
+
if (event.type && event.type !== 'file-history-snapshot') {
|
|
119
|
+
hasConversationEvent = true;
|
|
120
|
+
}
|
|
121
|
+
// Extract cwd from first event that has it
|
|
122
|
+
if (!directory && event.cwd) {
|
|
123
|
+
directory = event.cwd;
|
|
124
|
+
}
|
|
125
|
+
// Extract title from first real user message (skip meta, commands, system tags)
|
|
126
|
+
if (!title && event.type === 'user' && !event.isMeta && event.message?.content) {
|
|
127
|
+
const content = event.message.content;
|
|
128
|
+
let raw = '';
|
|
129
|
+
if (typeof content === 'string') {
|
|
130
|
+
raw = content.trim();
|
|
131
|
+
}
|
|
132
|
+
else if (Array.isArray(content)) {
|
|
133
|
+
const textBlock = content.find((b) => b.type === 'text');
|
|
134
|
+
if (textBlock?.text)
|
|
135
|
+
raw = textBlock.text.trim();
|
|
136
|
+
}
|
|
137
|
+
// Skip slash commands, XML-tagged system messages, and /remote-control prompt
|
|
138
|
+
if (raw && !raw.startsWith('/') && !raw.startsWith('<') && raw !== 'remote-control') {
|
|
139
|
+
title = raw.substring(0, 100);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Skip unparseable lines
|
|
145
|
+
}
|
|
146
|
+
if (lineCount >= MAX_LINES && title && directory) {
|
|
147
|
+
rl.close();
|
|
148
|
+
stream.destroy();
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
rl.on('close', () => {
|
|
152
|
+
// Skip files that only contain file-history-snapshot events (ghost files
|
|
153
|
+
// created by Claude CLI on --resume without any actual conversation)
|
|
154
|
+
if (!hasConversationEvent) {
|
|
155
|
+
resolve(null);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
// Extrapolate event count from partial read
|
|
159
|
+
let eventCount = lineCount;
|
|
160
|
+
if (bytesRead > 0 && bytesRead < stat.size) {
|
|
161
|
+
eventCount = Math.round((stat.size / bytesRead) * lineCount);
|
|
162
|
+
}
|
|
163
|
+
// Fallback directory from dir hash
|
|
164
|
+
if (!directory) {
|
|
165
|
+
directory = dirHashToPath(dirHash);
|
|
166
|
+
}
|
|
167
|
+
// Resolve title: history.jsonl display > stripped user message > 'Untitled'
|
|
168
|
+
const historyTitle = historyTitles.get(uuid);
|
|
169
|
+
const resolvedTitle = historyTitle || (title ? stripXmlTags(title) : '') || 'Untitled';
|
|
170
|
+
resolve({
|
|
171
|
+
uuid,
|
|
172
|
+
dirHash,
|
|
173
|
+
directory,
|
|
174
|
+
title: resolvedTitle,
|
|
175
|
+
lastModified: stat.mtime.toISOString(),
|
|
176
|
+
fileSize: stat.size,
|
|
177
|
+
eventCount,
|
|
178
|
+
jsonlPath,
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
rl.on('error', () => resolve(null));
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
async readEvents(uuid) {
|
|
185
|
+
const meta = this.cache.get(uuid);
|
|
186
|
+
if (!meta)
|
|
187
|
+
return [];
|
|
188
|
+
const jsonlPath = meta.jsonlPath;
|
|
189
|
+
const content = fs.readFileSync(jsonlPath, 'utf-8');
|
|
190
|
+
const events = [];
|
|
191
|
+
for (const line of content.split('\n')) {
|
|
192
|
+
if (!line.trim())
|
|
193
|
+
continue;
|
|
194
|
+
try {
|
|
195
|
+
const event = JSON.parse(line);
|
|
196
|
+
// Skip file-history-snapshot events
|
|
197
|
+
if (event.type === 'file-history-snapshot')
|
|
198
|
+
continue;
|
|
199
|
+
// Map JSONL fields to SessionEvent format, preserving fields needed
|
|
200
|
+
// for chain building (cwd, parentUuid, version, etc.)
|
|
201
|
+
const mapped = {
|
|
202
|
+
uuid: event.uuid,
|
|
203
|
+
parentUuid: event.parentUuid,
|
|
204
|
+
session_id: event.sessionId || event.session_id,
|
|
205
|
+
type: event.type,
|
|
206
|
+
message: event.message,
|
|
207
|
+
timestamp: event.timestamp,
|
|
208
|
+
cwd: event.cwd,
|
|
209
|
+
version: event.version,
|
|
210
|
+
gitBranch: event.gitBranch,
|
|
211
|
+
userType: event.userType,
|
|
212
|
+
isSidechain: event.isSidechain,
|
|
213
|
+
permissionMode: event.permissionMode,
|
|
214
|
+
};
|
|
215
|
+
// Copy optional fields that some event types have
|
|
216
|
+
if (event.subtype)
|
|
217
|
+
mapped.subtype = event.subtype;
|
|
218
|
+
if (event.data)
|
|
219
|
+
mapped.data = event.data;
|
|
220
|
+
if (event.content)
|
|
221
|
+
mapped.content = event.content;
|
|
222
|
+
if (event.toolUseResult)
|
|
223
|
+
mapped.toolUseResult = event.toolUseResult;
|
|
224
|
+
if (event.hookCount !== undefined)
|
|
225
|
+
mapped.hookCount = event.hookCount;
|
|
226
|
+
if (event.hookInfos)
|
|
227
|
+
mapped.hookInfos = event.hookInfos;
|
|
228
|
+
if (event.hookErrors)
|
|
229
|
+
mapped.hookErrors = event.hookErrors;
|
|
230
|
+
if (event.hasOutput !== undefined)
|
|
231
|
+
mapped.hasOutput = event.hasOutput;
|
|
232
|
+
if (event.preventedContinuation !== undefined)
|
|
233
|
+
mapped.preventedContinuation = event.preventedContinuation;
|
|
234
|
+
if (event.level)
|
|
235
|
+
mapped.level = event.level;
|
|
236
|
+
if (event.toolUseID)
|
|
237
|
+
mapped.toolUseID = event.toolUseID;
|
|
238
|
+
// Map parentUuid + isSidechain to parent_tool_use_id
|
|
239
|
+
// Only set when actually present — null/undefined should be omitted
|
|
240
|
+
// so the writer doesn't emit "parent_tool_use_id": null
|
|
241
|
+
if (event.isSidechain && event.parentUuid) {
|
|
242
|
+
mapped.parent_tool_use_id = event.parentUuid;
|
|
243
|
+
}
|
|
244
|
+
else if (event.parent_tool_use_id) {
|
|
245
|
+
mapped.parent_tool_use_id = event.parent_tool_use_id;
|
|
246
|
+
}
|
|
247
|
+
events.push(mapped);
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
// Skip unparseable lines
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return events;
|
|
254
|
+
}
|
|
255
|
+
getByUuid(uuid) {
|
|
256
|
+
return this.cache.get(uuid);
|
|
257
|
+
}
|
|
258
|
+
invalidate() {
|
|
259
|
+
this.cache.clear();
|
|
260
|
+
this.lastScanTime = 0;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Find the most recently modified session UUID for a given working directory.
|
|
264
|
+
* Useful as a fallback when hook-based CLI session discovery fails.
|
|
265
|
+
*/
|
|
266
|
+
async findMostRecentForCwd(cwd) {
|
|
267
|
+
await this.scan();
|
|
268
|
+
let best = null;
|
|
269
|
+
for (const meta of this.cache.values()) {
|
|
270
|
+
if (meta.directory !== cwd)
|
|
271
|
+
continue;
|
|
272
|
+
if (!best || new Date(meta.lastModified).getTime() > new Date(best.lastModified).getTime()) {
|
|
273
|
+
best = meta;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return best?.uuid ?? null;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Return all JSONL file paths (sessions + subagents) for sessions
|
|
280
|
+
* whose working directory matches any of the given cwds.
|
|
281
|
+
*/
|
|
282
|
+
async getFilesForProject(cwds) {
|
|
283
|
+
await this.scan();
|
|
284
|
+
const cwdSet = new Set(cwds);
|
|
285
|
+
// Filter matching sessions and sort by lastModified descending (most recent first)
|
|
286
|
+
const matching = Array.from(this.cache.values())
|
|
287
|
+
.filter(meta => cwdSet.has(meta.directory))
|
|
288
|
+
.sort((a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime());
|
|
289
|
+
const files = [];
|
|
290
|
+
const seen = new Set();
|
|
291
|
+
for (const meta of matching) {
|
|
292
|
+
// Add main session file
|
|
293
|
+
if (!seen.has(meta.jsonlPath)) {
|
|
294
|
+
seen.add(meta.jsonlPath);
|
|
295
|
+
files.push(meta.jsonlPath);
|
|
296
|
+
}
|
|
297
|
+
// Add subagent files: <dirHash>/<uuid>/subagents/*.jsonl
|
|
298
|
+
const subagentsDir = path.join(path.dirname(meta.jsonlPath), meta.uuid, 'subagents');
|
|
299
|
+
try {
|
|
300
|
+
const entries = fs.readdirSync(subagentsDir, { withFileTypes: true });
|
|
301
|
+
for (const entry of entries) {
|
|
302
|
+
if (entry.isFile() && entry.name.endsWith('.jsonl')) {
|
|
303
|
+
const subPath = path.join(subagentsDir, entry.name);
|
|
304
|
+
if (!seen.has(subPath)) {
|
|
305
|
+
seen.add(subPath);
|
|
306
|
+
files.push(subPath);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
catch {
|
|
312
|
+
// No subagents directory
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return files;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Convert dir hash back to path: "-home-furti-myproject" → "/home/furti/myproject"
|
|
320
|
+
* Validates with fs.existsSync().
|
|
321
|
+
*/
|
|
322
|
+
function dirHashToPath(dirHash) {
|
|
323
|
+
// Replace leading dash, then remaining dashes with /
|
|
324
|
+
const candidate = '/' + dirHash.replace(/^-/, '').replace(/-/g, '/');
|
|
325
|
+
if (fs.existsSync(candidate))
|
|
326
|
+
return candidate;
|
|
327
|
+
return dirHash; // fallback: return as-is
|
|
328
|
+
}
|
|
329
|
+
export const fsSessionScanner = new FsSessionScanner();
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { SessionEvent } from '../../../events/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Reconstruct SessionEvent[] as a Claude Code JSONL file for `claude --resume`.
|
|
4
|
+
* Path: ~/.claude/projects/<project-dir-hash>/<targetUuid>.jsonl
|
|
5
|
+
*
|
|
6
|
+
* Each SessionEvent is reconstructed into Claude's native JSONL format
|
|
7
|
+
* from its typed fields — not passed through as raw JSON. This enables
|
|
8
|
+
* cross-agent forking: events from any agent type can be written as
|
|
9
|
+
* valid Claude JSONL.
|
|
10
|
+
*
|
|
11
|
+
* @param events - Array of SessionEvents to write
|
|
12
|
+
* @param targetUuid - The UUID for the new session file (no "sess_" prefix)
|
|
13
|
+
* @param directory - The project working directory (for path hashing)
|
|
14
|
+
* @returns The full path to the written JSONL file
|
|
15
|
+
*/
|
|
16
|
+
export declare function writeForkedClaudeJsonl(events: SessionEvent[], targetUuid: string, directory: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Fork a slice of SessionEvents into a resumable JSONL file.
|
|
19
|
+
* Handles event slicing, range-fork synthetic init, UUID generation, and writing.
|
|
20
|
+
*
|
|
21
|
+
* @returns The resume UUID, or null if the fork point wasn't found.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Fork a slice of SessionEvents into a resumable JSONL file.
|
|
25
|
+
* Handles event slicing, range-fork synthetic init, UUID generation, and writing.
|
|
26
|
+
*
|
|
27
|
+
* The returned UUID is parent-linked: its first 16 hex chars are the last 16 hex chars
|
|
28
|
+
* of the parent session ID, enabling tree-view reconstruction in session history.
|
|
29
|
+
*
|
|
30
|
+
* @returns The resume UUID, or null if the fork point wasn't found.
|
|
31
|
+
*/
|
|
32
|
+
export declare function forkEventsToResumable(events: SessionEvent[], afterEventUuid: string, directory: string, parentSessionId: string, fromEventUuid?: string): string | null;
|