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,227 @@
|
|
|
1
|
+
import crypto from 'crypto';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import os from 'os';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
import { WEB_PORT, PROJECT_ROOT } from '../config.js';
|
|
7
|
+
const CONFIG_DIR = path.join(os.homedir(), '.atoo-studio');
|
|
8
|
+
const CONFIG_PATH = path.join(CONFIG_DIR, 'mcp-config.json');
|
|
9
|
+
// Detect dev mode: when running via tsx, __filename is in src/; when compiled, it's in dist/src/
|
|
10
|
+
const __mcp_config_dir = path.dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
const IS_DEV = !__mcp_config_dir.includes('/dist/src');
|
|
12
|
+
let cachedPath = null;
|
|
13
|
+
// ═══════════════════════════════════════════════════════
|
|
14
|
+
// Per-session MCP token registry
|
|
15
|
+
// ═══════════════════════════════════════════════════════
|
|
16
|
+
const mcpTokens = new Set();
|
|
17
|
+
/** Register an MCP token as valid. */
|
|
18
|
+
export function registerMcpToken(token) {
|
|
19
|
+
mcpTokens.add(token);
|
|
20
|
+
}
|
|
21
|
+
/** Remove an MCP token (called on session cleanup). */
|
|
22
|
+
export function removeMcpToken(token) {
|
|
23
|
+
mcpTokens.delete(token);
|
|
24
|
+
}
|
|
25
|
+
/** Check if an MCP token is valid. */
|
|
26
|
+
export function validateMcpToken(token) {
|
|
27
|
+
return mcpTokens.has(token);
|
|
28
|
+
}
|
|
29
|
+
/** Returns the command, args, and env needed to launch the MCP server process. */
|
|
30
|
+
export function getMcpServerDef() {
|
|
31
|
+
const command = IS_DEV ? 'tsx' : 'node';
|
|
32
|
+
const serverScript = IS_DEV
|
|
33
|
+
? path.join(PROJECT_ROOT, 'src', 'mcp', 'server.ts')
|
|
34
|
+
: path.join(PROJECT_ROOT, 'dist', 'src', 'mcp', 'server.js');
|
|
35
|
+
return {
|
|
36
|
+
command,
|
|
37
|
+
args: [serverScript],
|
|
38
|
+
env: {
|
|
39
|
+
ATOO_WEB_PORT: String(WEB_PORT),
|
|
40
|
+
ATOO_WEB_PROTO: 'https',
|
|
41
|
+
NODE_TLS_REJECT_UNAUTHORIZED: '0',
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export const MCP_SYSTEM_PROMPT = [
|
|
46
|
+
'You have a "atoo-studio" MCP server available with tools for interacting with the development UI.',
|
|
47
|
+
'IMPORTANT: Whenever you start ANY service, server, or process that listens on a TCP port',
|
|
48
|
+
'(dev servers, databases, API servers, preview servers, etc.), you MUST immediately discover',
|
|
49
|
+
'and call the mcp__atoo-studio__report_tcp_services tool to report it. Search your deferred tools',
|
|
50
|
+
'for "atoo-studio" or "report_tcp" to find it. Never skip this step.',
|
|
51
|
+
'When you need to start an HTTPS server, use mcp__atoo-studio__generate_certificate to generate',
|
|
52
|
+
'TLS cert files signed by the proxy CA. Specify the output directory and hostnames — the tool',
|
|
53
|
+
'writes cert.pem, key.pem, and ca.pem there. The preview browser trusts this CA.',
|
|
54
|
+
'When you need to interact with a serial device (ESP32, Arduino, etc.) connected to the user\'s',
|
|
55
|
+
'machine, use mcp__atoo-studio__request_serial_device to get a virtual serial port path. The user',
|
|
56
|
+
'will be prompted to connect the device in their browser. Once connected, use the returned path',
|
|
57
|
+
'with any serial tool (screen, minicom, esptool.py, idf.py monitor, etc.).',
|
|
58
|
+
'IMPORTANT: Whenever you make ANY change to a GitHub issue or pull request (commenting,',
|
|
59
|
+
'editing title/body, changing state, adding labels, etc.), you MUST call',
|
|
60
|
+
'mcp__atoo-studio__github_issue_pr_changed with the repository, type (issue/pr), and number.',
|
|
61
|
+
'This ensures the UI stays in sync with your changes. Never skip this step.',
|
|
62
|
+
'When you need to recall previous decisions, implementation reasoning, discussed approaches,',
|
|
63
|
+
'or any context from past sessions for this project, use mcp__atoo-studio__search_session_history.',
|
|
64
|
+
'It searches across ALL session history files (including subagent sessions) for the current project.',
|
|
65
|
+
'You can search with type "FullProjectSearch" (default, all sessions) or "CurrentSessionChain"',
|
|
66
|
+
'(only sessions in the current chain — use this when you need context from earlier in the',
|
|
67
|
+
'current conversation that was continued across session boundaries).',
|
|
68
|
+
'You can provide multiple queries as an array, and control sort order (newest_first or oldest_first).',
|
|
69
|
+
'Results are ordered by most recent session first by default.',
|
|
70
|
+
'IMPORTANT: Prefer delegating search_session_history calls to a subagent when possible, so the',
|
|
71
|
+
'main conversation context is not polluted with potentially large search results.',
|
|
72
|
+
'\n## MANDATORY: Track project changes\n',
|
|
73
|
+
'IMPORTANT: You MUST use mcp__atoo-studio__track_project_changes to help the user keep track of',
|
|
74
|
+
'what was accomplished. This is NON-NEGOTIABLE. The user often runs multiple agents in parallel',
|
|
75
|
+
'on the same project. When they are done, they need to know what was actually done across all',
|
|
76
|
+
'sessions so they can review and test everything.',
|
|
77
|
+
'At the START of your session, call the tool with mode "get" to see what other sessions have logged.',
|
|
78
|
+
'After completing a meaningful task (bug fix, feature, refactor), call with mode "set" to log',
|
|
79
|
+
'a concise summary of what you accomplished and what the user should review or test.',
|
|
80
|
+
'Write from the user\'s perspective — NOT file-level noise like "modified src/foo.ts".',
|
|
81
|
+
'Good: short_description: "Fixed login redirect loop" + long_description: "Test login with expired tokens".',
|
|
82
|
+
'Good: short_description: "Added dark mode toggle" + tags: ["settings page", "UI"].',
|
|
83
|
+
'Bad: "Modified 3 files" or "Made changes".',
|
|
84
|
+
'To update an existing entry, pass its id. To create a new entry, omit the id.',
|
|
85
|
+
'IMPORTANT: There is NO "description" parameter. Use short_description and long_description instead.',
|
|
86
|
+
'\n## MANDATORY: Set session metadata\n',
|
|
87
|
+
'IMPORTANT: Whenever you start working on a feature, bug fix, or any distinct task, you MUST',
|
|
88
|
+
'set session metadata using mcp__atoo-studio__set_session_metadata. First call',
|
|
89
|
+
'mcp__atoo-studio__get_session_metadata to see what is already set, then update as needed.',
|
|
90
|
+
'Set a short session name (used as tab title), tags (displayed as badges), and optionally a',
|
|
91
|
+
'markdown description. Keep tags short (max 5 words). Examples: "auth refactor", "fix login bug".',
|
|
92
|
+
'Update metadata whenever the focus shifts to a new task.',
|
|
93
|
+
'\n## MANDATORY: Search before any feature or bug fix\n',
|
|
94
|
+
'IMPORTANT: Before starting ANY feature implementation or bug fix, you MUST search session history',
|
|
95
|
+
'using mcp__atoo-studio__search_session_history with type "FullProjectSearch" to check if another',
|
|
96
|
+
'session has already worked on the same feature, files, or area. Do NOT skip this step.',
|
|
97
|
+
'If a relevant session is found, use mcp__atoo-studio__suggest_continue_in_other_session to suggest',
|
|
98
|
+
'the user switches to that session instead. Provide the session UUID and a refined prompt.',
|
|
99
|
+
'The tool blocks until the user responds. If they reject, continue working in the current session.',
|
|
100
|
+
'Strong signals that prior work exists: untracked files, uncommitted changes, or existing code',
|
|
101
|
+
'that already addresses the requested feature.',
|
|
102
|
+
'\n## When stuck or unsure\n',
|
|
103
|
+
'When you encounter an obstacle or something is unclear:\n',
|
|
104
|
+
'1. First, search the current session chain using mcp__atoo-studio__search_session_history with',
|
|
105
|
+
'type "CurrentSessionChain" — the answer may already exist earlier in this conversation\'s history.\n',
|
|
106
|
+
'2. If questions remain unresolved, escalate to a "FullProjectSearch" to find relevant context',
|
|
107
|
+
'from any session in the project.\n\n',
|
|
108
|
+
'Do not rely on documentation, comments, or README files as a source of truth — they are likely outdated.',
|
|
109
|
+
'Session history contains the actual reasoning behind decisions, failed approaches, and tradeoffs',
|
|
110
|
+
'that led to the current code.\n',
|
|
111
|
+
'Search history before:\n',
|
|
112
|
+
'- Making architectural decisions that might contradict past choices\n',
|
|
113
|
+
'- Refactoring code whose purpose isn\'t clear from reading it\n',
|
|
114
|
+
'- Debugging issues that seem like they were solved before\n',
|
|
115
|
+
'- Choosing between multiple implementation approaches',
|
|
116
|
+
].join(' ');
|
|
117
|
+
/**
|
|
118
|
+
* Additional system prompt appended for chain continuation sessions.
|
|
119
|
+
* Tells the LLM that this is a continuation and how to search previous chain links.
|
|
120
|
+
*/
|
|
121
|
+
export const CHAIN_SYSTEM_PROMPT = [
|
|
122
|
+
'\n\n## Session Chain Continuation\n',
|
|
123
|
+
'This session is a chain continuation of a previous session. The conversation context',
|
|
124
|
+
'from earlier session(s) has been partially carried forward (all user messages + recent events).',
|
|
125
|
+
'If you need more context about what was discussed or decided earlier, use',
|
|
126
|
+
'mcp__atoo-studio__search_session_history with type "CurrentSessionChain" to search through',
|
|
127
|
+
'all previous sessions in this chain. The results are ordered by most recent first by default.',
|
|
128
|
+
'If you think there might be more relevant information that was cut off, search again with',
|
|
129
|
+
'different queries or increase max_results_per_query.',
|
|
130
|
+
].join(' ');
|
|
131
|
+
/**
|
|
132
|
+
* Get or create an MCP config file.
|
|
133
|
+
* When sessionUuid is provided, creates a per-session config that includes
|
|
134
|
+
* ATOO_CURRENT_SESSION_UUID in the env — enabling chain-scoped search.
|
|
135
|
+
*/
|
|
136
|
+
export function getMcpConfigPath(sessionUuid) {
|
|
137
|
+
// No session UUID — use the shared (cached) config
|
|
138
|
+
if (!sessionUuid) {
|
|
139
|
+
if (cachedPath)
|
|
140
|
+
return cachedPath;
|
|
141
|
+
const token = crypto.randomUUID();
|
|
142
|
+
registerMcpToken(token);
|
|
143
|
+
const def = getMcpServerDef();
|
|
144
|
+
const config = {
|
|
145
|
+
mcpServers: {
|
|
146
|
+
'atoo-studio': {
|
|
147
|
+
command: def.command,
|
|
148
|
+
args: def.args,
|
|
149
|
+
env: { ...def.env, ATOO_MCP_TOKEN: token },
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
154
|
+
fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2));
|
|
155
|
+
console.log(`[mcp] Wrote MCP config to ${CONFIG_PATH} (${IS_DEV ? 'dev' : 'production'} mode)`);
|
|
156
|
+
cachedPath = CONFIG_PATH;
|
|
157
|
+
return CONFIG_PATH;
|
|
158
|
+
}
|
|
159
|
+
// Per-session config with session UUID and unique MCP token
|
|
160
|
+
const sessionConfigPath = path.join(CONFIG_DIR, `mcp-config-${sessionUuid}.json`);
|
|
161
|
+
const token = crypto.randomUUID();
|
|
162
|
+
registerMcpToken(token);
|
|
163
|
+
const def = getMcpServerDef();
|
|
164
|
+
const config = {
|
|
165
|
+
mcpServers: {
|
|
166
|
+
'atoo-studio': {
|
|
167
|
+
command: def.command,
|
|
168
|
+
args: def.args,
|
|
169
|
+
env: {
|
|
170
|
+
...def.env,
|
|
171
|
+
ATOO_CURRENT_SESSION_UUID: sessionUuid,
|
|
172
|
+
ATOO_MCP_TOKEN: token,
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
178
|
+
fs.writeFileSync(sessionConfigPath, JSON.stringify(config, null, 2));
|
|
179
|
+
console.log(`[mcp] Wrote per-session MCP config to ${sessionConfigPath}`);
|
|
180
|
+
return sessionConfigPath;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Clean up a per-session MCP config file.
|
|
184
|
+
*/
|
|
185
|
+
export function cleanupMcpConfig(sessionUuid) {
|
|
186
|
+
const sessionConfigPath = path.join(CONFIG_DIR, `mcp-config-${sessionUuid}.json`);
|
|
187
|
+
try {
|
|
188
|
+
// Remove the MCP token from the registry before deleting the config file
|
|
189
|
+
const content = fs.readFileSync(sessionConfigPath, 'utf-8');
|
|
190
|
+
const config = JSON.parse(content);
|
|
191
|
+
const token = config?.mcpServers?.['atoo-studio']?.env?.ATOO_MCP_TOKEN;
|
|
192
|
+
if (token)
|
|
193
|
+
removeMcpToken(token);
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// File may not exist or be unparseable
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
fs.unlinkSync(sessionConfigPath);
|
|
200
|
+
}
|
|
201
|
+
catch { }
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Clean up stale per-session MCP config files older than maxAgeMs.
|
|
205
|
+
*/
|
|
206
|
+
export function cleanupStaleMcpConfigs(maxAgeMs = 24 * 60 * 60 * 1000) {
|
|
207
|
+
try {
|
|
208
|
+
const files = fs.readdirSync(CONFIG_DIR);
|
|
209
|
+
const now = Date.now();
|
|
210
|
+
for (const file of files) {
|
|
211
|
+
if (!file.startsWith('mcp-config-') || !file.endsWith('.json'))
|
|
212
|
+
continue;
|
|
213
|
+
if (file === 'mcp-config.json')
|
|
214
|
+
continue; // Skip shared config
|
|
215
|
+
const filePath = path.join(CONFIG_DIR, file);
|
|
216
|
+
try {
|
|
217
|
+
const stat = fs.statSync(filePath);
|
|
218
|
+
if (now - stat.mtimeMs > maxAgeMs) {
|
|
219
|
+
fs.unlinkSync(filePath);
|
|
220
|
+
console.log(`[mcp] Cleaned up stale config: ${file}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
catch { }
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
catch { }
|
|
227
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|