@vibedeckx/linux-x64 0.1.10
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/dist/agent-provider.d.ts +92 -0
- package/dist/agent-provider.js +8 -0
- package/dist/agent-session-manager.d.ts +165 -0
- package/dist/agent-session-manager.js +985 -0
- package/dist/agent-types.d.ts +148 -0
- package/dist/agent-types.js +4 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +4 -0
- package/dist/browser-manager.d.ts +46 -0
- package/dist/browser-manager.js +182 -0
- package/dist/chat-session-manager.d.ts +101 -0
- package/dist/chat-session-manager.js +1425 -0
- package/dist/command.d.ts +1 -0
- package/dist/command.js +163 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.js +5 -0
- package/dist/conversation-patch.d.ts +103 -0
- package/dist/conversation-patch.js +69 -0
- package/dist/dialog.d.ts +1 -0
- package/dist/dialog.js +41 -0
- package/dist/entry-index-provider.d.ts +74 -0
- package/dist/entry-index-provider.js +105 -0
- package/dist/event-bus.d.ts +47 -0
- package/dist/event-bus.js +16 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/plugins/shared-services.d.ts +8 -0
- package/dist/plugins/shared-services.js +65 -0
- package/dist/process-manager.d.ts +146 -0
- package/dist/process-manager.js +779 -0
- package/dist/providers/claude-code-provider.d.ts +13 -0
- package/dist/providers/claude-code-provider.js +127 -0
- package/dist/providers/codex-provider.d.ts +41 -0
- package/dist/providers/codex-provider.js +354 -0
- package/dist/providers/index.d.ts +5 -0
- package/dist/providers/index.js +19 -0
- package/dist/remote-patch-cache.d.ts +67 -0
- package/dist/remote-patch-cache.js +190 -0
- package/dist/reverse-connect-client.d.ts +27 -0
- package/dist/reverse-connect-client.js +255 -0
- package/dist/reverse-connect-manager.d.ts +31 -0
- package/dist/reverse-connect-manager.js +287 -0
- package/dist/reverse-connect-types.d.ts +55 -0
- package/dist/reverse-connect-types.js +7 -0
- package/dist/routes/agent-session-routes.d.ts +4 -0
- package/dist/routes/agent-session-routes.js +442 -0
- package/dist/routes/browser-proxy-routes.d.ts +25 -0
- package/dist/routes/browser-proxy-routes.js +421 -0
- package/dist/routes/browser-routes.d.ts +4 -0
- package/dist/routes/browser-routes.js +73 -0
- package/dist/routes/chat-session-routes.d.ts +7 -0
- package/dist/routes/chat-session-routes.js +69 -0
- package/dist/routes/diff-routes.d.ts +4 -0
- package/dist/routes/diff-routes.js +208 -0
- package/dist/routes/event-routes.d.ts +4 -0
- package/dist/routes/event-routes.js +52 -0
- package/dist/routes/executor-group-routes.d.ts +4 -0
- package/dist/routes/executor-group-routes.js +76 -0
- package/dist/routes/executor-routes.d.ts +4 -0
- package/dist/routes/executor-routes.js +106 -0
- package/dist/routes/file-routes.d.ts +4 -0
- package/dist/routes/file-routes.js +331 -0
- package/dist/routes/process-routes.d.ts +4 -0
- package/dist/routes/process-routes.js +183 -0
- package/dist/routes/project-remote-routes.d.ts +4 -0
- package/dist/routes/project-remote-routes.js +82 -0
- package/dist/routes/project-routes.d.ts +4 -0
- package/dist/routes/project-routes.js +286 -0
- package/dist/routes/remote-routes.d.ts +4 -0
- package/dist/routes/remote-routes.js +59 -0
- package/dist/routes/remote-server-routes.d.ts +4 -0
- package/dist/routes/remote-server-routes.js +157 -0
- package/dist/routes/reverse-connect-routes.d.ts +4 -0
- package/dist/routes/reverse-connect-routes.js +33 -0
- package/dist/routes/settings-routes.d.ts +4 -0
- package/dist/routes/settings-routes.js +129 -0
- package/dist/routes/task-routes.d.ts +4 -0
- package/dist/routes/task-routes.js +107 -0
- package/dist/routes/terminal-routes.d.ts +4 -0
- package/dist/routes/terminal-routes.js +187 -0
- package/dist/routes/translate-routes.d.ts +4 -0
- package/dist/routes/translate-routes.js +38 -0
- package/dist/routes/websocket-routes.d.ts +4 -0
- package/dist/routes/websocket-routes.js +604 -0
- package/dist/routes/worktree-routes.d.ts +4 -0
- package/dist/routes/worktree-routes.js +511 -0
- package/dist/server-types.d.ts +41 -0
- package/dist/server-types.js +1 -0
- package/dist/server.d.ts +23 -0
- package/dist/server.js +238 -0
- package/dist/storage/sqlite.d.ts +2 -0
- package/dist/storage/sqlite.js +1073 -0
- package/dist/storage/types.d.ts +281 -0
- package/dist/storage/types.js +1 -0
- package/dist/ui/404/index.html +1 -0
- package/dist/ui/404.html +1 -0
- package/dist/ui/__next.__PAGE__.txt +10 -0
- package/dist/ui/__next._full.txt +25 -0
- package/dist/ui/__next._head.txt +6 -0
- package/dist/ui/__next._index.txt +9 -0
- package/dist/ui/__next._tree.txt +6 -0
- package/dist/ui/_next/static/7vIIuOQPJu8rdb6uAhwtg/_buildManifest.js +11 -0
- package/dist/ui/_next/static/7vIIuOQPJu8rdb6uAhwtg/_clientMiddlewareManifest.json +1 -0
- package/dist/ui/_next/static/7vIIuOQPJu8rdb6uAhwtg/_ssgManifest.js +1 -0
- package/dist/ui/_next/static/chunks/002f5a047b8d07d4.js +1 -0
- package/dist/ui/_next/static/chunks/01178e167ba3e5b4.js +1 -0
- package/dist/ui/_next/static/chunks/020d675d21be28d4.js +1 -0
- package/dist/ui/_next/static/chunks/024926197424b4a5.js +1 -0
- package/dist/ui/_next/static/chunks/02c93f6ca211a65d.js +1 -0
- package/dist/ui/_next/static/chunks/0364437dee56dc96.js +1 -0
- package/dist/ui/_next/static/chunks/03fc6b527b16efdc.js +1 -0
- package/dist/ui/_next/static/chunks/04f9a7932751cf2d.js +1 -0
- package/dist/ui/_next/static/chunks/0624b8204e5ae457.js +136 -0
- package/dist/ui/_next/static/chunks/067d8978cf41b901.js +1 -0
- package/dist/ui/_next/static/chunks/06d96238e85cdbb3.js +1 -0
- package/dist/ui/_next/static/chunks/071b9575dbdf1dcb.js +1 -0
- package/dist/ui/_next/static/chunks/073d5b9dc87ceab0.js +1 -0
- package/dist/ui/_next/static/chunks/0876a7111934d6f7.js +1 -0
- package/dist/ui/_next/static/chunks/08ffc3bf406c665d.js +1 -0
- package/dist/ui/_next/static/chunks/0969e8274c92c2d8.js +1 -0
- package/dist/ui/_next/static/chunks/0a3f62f00d7bec78.js +1 -0
- package/dist/ui/_next/static/chunks/0b80166023d89049.js +5 -0
- package/dist/ui/_next/static/chunks/0c2a941e61c395b6.js +1 -0
- package/dist/ui/_next/static/chunks/0c5eac8493334420.js +1 -0
- package/dist/ui/_next/static/chunks/0cc61d37b2333469.js +1 -0
- package/dist/ui/_next/static/chunks/0d440843348b2871.js +1 -0
- package/dist/ui/_next/static/chunks/0da3d15845f17208.js +1 -0
- package/dist/ui/_next/static/chunks/0e1982b1a6cbd127.js +53 -0
- package/dist/ui/_next/static/chunks/0e81d5bc1c725b75.js +1 -0
- package/dist/ui/_next/static/chunks/0e862e51b01e904b.js +63 -0
- package/dist/ui/_next/static/chunks/0ed7b6d86744b723.js +1 -0
- package/dist/ui/_next/static/chunks/0f0b3025f4e268b1.js +1 -0
- package/dist/ui/_next/static/chunks/10a30eb52825da36.js +1 -0
- package/dist/ui/_next/static/chunks/10c48da576fd8eef.js +1 -0
- package/dist/ui/_next/static/chunks/133e9f1435ca5f45.js +29 -0
- package/dist/ui/_next/static/chunks/16f4db3a54f167fd.js +1 -0
- package/dist/ui/_next/static/chunks/1988e3ecf5ad06d3.js +1 -0
- package/dist/ui/_next/static/chunks/1acfae010fd77014.js +152 -0
- package/dist/ui/_next/static/chunks/1ae53c2f1fff8cc2.js +1 -0
- package/dist/ui/_next/static/chunks/1af4fbc6c1256fae.js +1 -0
- package/dist/ui/_next/static/chunks/1b758c732032b236.js +1 -0
- package/dist/ui/_next/static/chunks/1ba26455a9f70c08.js +1 -0
- package/dist/ui/_next/static/chunks/1d22644cb4049d6b.css +1 -0
- package/dist/ui/_next/static/chunks/1d241f3b57c14cf7.js +1 -0
- package/dist/ui/_next/static/chunks/1d640bbe1c2c7869.js +1 -0
- package/dist/ui/_next/static/chunks/1da6354c9cb6f0de.js +1 -0
- package/dist/ui/_next/static/chunks/1dcd49914412f67b.js +1 -0
- package/dist/ui/_next/static/chunks/1e3b3771294825a4.js +1 -0
- package/dist/ui/_next/static/chunks/1eaa8ad7eca7f957.js +1 -0
- package/dist/ui/_next/static/chunks/1ebc88f60cadb128.js +1 -0
- package/dist/ui/_next/static/chunks/1ecb57b258088259.js +1 -0
- package/dist/ui/_next/static/chunks/1f5ba6b80fe19200.js +1 -0
- package/dist/ui/_next/static/chunks/20a5531534828366.js +1 -0
- package/dist/ui/_next/static/chunks/20b511fc299dfe9a.js +1 -0
- package/dist/ui/_next/static/chunks/20bff4eb9a0a6872.css +1 -0
- package/dist/ui/_next/static/chunks/219b7d9e437c6bd8.js +15 -0
- package/dist/ui/_next/static/chunks/21b32f530e0df2c5.js +1 -0
- package/dist/ui/_next/static/chunks/21fc6dc60e7647b1.js +1 -0
- package/dist/ui/_next/static/chunks/221a27e65aa5fbfd.js +1 -0
- package/dist/ui/_next/static/chunks/23a1e247c32bcc61.js +93 -0
- package/dist/ui/_next/static/chunks/2473c16c0c2f6b5f.css +2 -0
- package/dist/ui/_next/static/chunks/2615c71c0f8fe9bd.js +1 -0
- package/dist/ui/_next/static/chunks/263327288d5e2703.js +1 -0
- package/dist/ui/_next/static/chunks/2663fbaf43239e38.js +1 -0
- package/dist/ui/_next/static/chunks/27332c590d59f4e5.js +1 -0
- package/dist/ui/_next/static/chunks/27ca4a4e8191093f.js +1 -0
- package/dist/ui/_next/static/chunks/29b7618dcaa8edba.js +1 -0
- package/dist/ui/_next/static/chunks/2ba1d2b55b82f4da.js +21 -0
- package/dist/ui/_next/static/chunks/2cb23686e72468c8.js +1 -0
- package/dist/ui/_next/static/chunks/2d46f05dcbf1cbc2.js +1 -0
- package/dist/ui/_next/static/chunks/2d4c0fd06ca34510.js +2 -0
- package/dist/ui/_next/static/chunks/2f3d1d07474b8f79.js +1 -0
- package/dist/ui/_next/static/chunks/2f85c2849249a0dd.js +1 -0
- package/dist/ui/_next/static/chunks/3001d378f166eec9.js +1 -0
- package/dist/ui/_next/static/chunks/3018714f3827e360.js +1 -0
- package/dist/ui/_next/static/chunks/301cc25e0d489351.js +1 -0
- package/dist/ui/_next/static/chunks/305242b22ba8b49b.js +1 -0
- package/dist/ui/_next/static/chunks/3067c6e369066bd6.js +1 -0
- package/dist/ui/_next/static/chunks/311a77c9d5cb9de9.js +1 -0
- package/dist/ui/_next/static/chunks/320c001380e81470.js +1 -0
- package/dist/ui/_next/static/chunks/329db6c551df0faf.js +1 -0
- package/dist/ui/_next/static/chunks/33da178724072b3d.js +1 -0
- package/dist/ui/_next/static/chunks/33e8248c9296537a.js +1 -0
- package/dist/ui/_next/static/chunks/35a9992a8958f93b.js +1 -0
- package/dist/ui/_next/static/chunks/35bb90cf09892b72.js +1 -0
- package/dist/ui/_next/static/chunks/379f91b92366dc15.js +1 -0
- package/dist/ui/_next/static/chunks/391f22359769763f.js +1 -0
- package/dist/ui/_next/static/chunks/39231cb1044f7823.js +1 -0
- package/dist/ui/_next/static/chunks/394e8b7a1c2c58c6.js +1 -0
- package/dist/ui/_next/static/chunks/3a2cfdeb5f76ebd2.js +1 -0
- package/dist/ui/_next/static/chunks/3a3bd015fd042386.js +1 -0
- package/dist/ui/_next/static/chunks/3ad1bee238af9b5a.js +1 -0
- package/dist/ui/_next/static/chunks/3b2b2f7a9b7b130d.js +1 -0
- package/dist/ui/_next/static/chunks/3b586f80547e3a22.js +1 -0
- package/dist/ui/_next/static/chunks/3ca412e72bd3707a.js +1 -0
- package/dist/ui/_next/static/chunks/3cbb3bdceb4230af.js +1 -0
- package/dist/ui/_next/static/chunks/3ed1465109fecc2d.js +1 -0
- package/dist/ui/_next/static/chunks/3fd0801238b3b099.js +1 -0
- package/dist/ui/_next/static/chunks/401df66bd5da2115.js +15 -0
- package/dist/ui/_next/static/chunks/4211f4efe510f7ac.js +1 -0
- package/dist/ui/_next/static/chunks/43085364d0a41d1d.js +1 -0
- package/dist/ui/_next/static/chunks/4310c821dbee7a16.js +1 -0
- package/dist/ui/_next/static/chunks/46382f31f63e59cf.js +1 -0
- package/dist/ui/_next/static/chunks/468836b90ddf24d6.js +1 -0
- package/dist/ui/_next/static/chunks/470d091143104517.js +1 -0
- package/dist/ui/_next/static/chunks/4712e4f7e6b6ddc1.js +1 -0
- package/dist/ui/_next/static/chunks/4899f1e3f21c077e.js +1 -0
- package/dist/ui/_next/static/chunks/492ce6930bf61811.js +1 -0
- package/dist/ui/_next/static/chunks/494485a20952ffa3.js +1 -0
- package/dist/ui/_next/static/chunks/49535db309898f43.js +1 -0
- package/dist/ui/_next/static/chunks/4b8d2612d69e2013.js +1 -0
- package/dist/ui/_next/static/chunks/4c4a0f67891826a3.js +1 -0
- package/dist/ui/_next/static/chunks/4cc11ce32f4453b0.js +1 -0
- package/dist/ui/_next/static/chunks/4d03a0bc963fc3d4.js +1 -0
- package/dist/ui/_next/static/chunks/4d603a66c067134e.js +1 -0
- package/dist/ui/_next/static/chunks/4d8d7e62c2743f71.js +15 -0
- package/dist/ui/_next/static/chunks/4da42f10a5460b36.js +1 -0
- package/dist/ui/_next/static/chunks/4e832ffb65e75807.js +1 -0
- package/dist/ui/_next/static/chunks/4e954e1cec89a9ea.js +1 -0
- package/dist/ui/_next/static/chunks/4f2bc7a7a6b05a8b.js +55 -0
- package/dist/ui/_next/static/chunks/4f9c934abf34ceb9.js +1 -0
- package/dist/ui/_next/static/chunks/4fa248b0d2586928.js +1 -0
- package/dist/ui/_next/static/chunks/4fafbac2156844ca.js +1 -0
- package/dist/ui/_next/static/chunks/502039e483cc5e48.js +1 -0
- package/dist/ui/_next/static/chunks/509c91c38224448a.js +1 -0
- package/dist/ui/_next/static/chunks/5159d6f8d4307f36.js +1 -0
- package/dist/ui/_next/static/chunks/5179ab56aaaed42d.js +1 -0
- package/dist/ui/_next/static/chunks/5269ea07faff562d.js +1 -0
- package/dist/ui/_next/static/chunks/529f3f0f7d42444a.js +1 -0
- package/dist/ui/_next/static/chunks/5317db6783ee8dc9.js +1 -0
- package/dist/ui/_next/static/chunks/53a7b7c0ab020902.js +1 -0
- package/dist/ui/_next/static/chunks/544869c670c1dd8e.js +1 -0
- package/dist/ui/_next/static/chunks/547c0db6a433370e.js +1 -0
- package/dist/ui/_next/static/chunks/54d5670f5fa2abbe.css +1 -0
- package/dist/ui/_next/static/chunks/55761e35a8946a1d.js +15 -0
- package/dist/ui/_next/static/chunks/558f73c16b7ff14f.js +1 -0
- package/dist/ui/_next/static/chunks/55c76f605958d671.js +1 -0
- package/dist/ui/_next/static/chunks/55dc6750fb117bf9.js +1 -0
- package/dist/ui/_next/static/chunks/584bad9cf2498405.js +1 -0
- package/dist/ui/_next/static/chunks/593b85b9abea3ea6.js +1 -0
- package/dist/ui/_next/static/chunks/5a79af73c96155d4.js +1 -0
- package/dist/ui/_next/static/chunks/5ee54b9b6b400134.js +1 -0
- package/dist/ui/_next/static/chunks/5f27ee48dc820109.js +1 -0
- package/dist/ui/_next/static/chunks/5ffd50a08d82e2f3.js +1 -0
- package/dist/ui/_next/static/chunks/61d65fe807f69413.js +62 -0
- package/dist/ui/_next/static/chunks/626a650bcaaecdb8.js +1 -0
- package/dist/ui/_next/static/chunks/62baecafed4dbced.js +1 -0
- package/dist/ui/_next/static/chunks/634a4b5b6a38ccab.js +1 -0
- package/dist/ui/_next/static/chunks/643c359cf3f7364e.js +1 -0
- package/dist/ui/_next/static/chunks/649e65f4820a772b.js +1 -0
- package/dist/ui/_next/static/chunks/65028938188a230c.js +1 -0
- package/dist/ui/_next/static/chunks/65b3658348e8d4fd.js +1 -0
- package/dist/ui/_next/static/chunks/65eed220466cbdbc.js +1 -0
- package/dist/ui/_next/static/chunks/66714687cfd91953.js +1 -0
- package/dist/ui/_next/static/chunks/66ccaa3e69ed7a69.js +1 -0
- package/dist/ui/_next/static/chunks/6754600af0c6b3a8.js +1 -0
- package/dist/ui/_next/static/chunks/67a1d37727697340.js +1 -0
- package/dist/ui/_next/static/chunks/67e965a7f9531cee.js +1 -0
- package/dist/ui/_next/static/chunks/6816bf02e4c22a55.js +1 -0
- package/dist/ui/_next/static/chunks/68621b90909ec4e6.js +1 -0
- package/dist/ui/_next/static/chunks/6929ceb718c6e4c6.js +1 -0
- package/dist/ui/_next/static/chunks/69362fff2240a17b.js +1 -0
- package/dist/ui/_next/static/chunks/69dab47a307b1a37.js +1 -0
- package/dist/ui/_next/static/chunks/6afa71c8b3358dd5.js +1 -0
- package/dist/ui/_next/static/chunks/6bf54dc328e667f7.js +1 -0
- package/dist/ui/_next/static/chunks/6c44508faf13f6f0.js +1 -0
- package/dist/ui/_next/static/chunks/6c9c2b61c905a2de.js +1 -0
- package/dist/ui/_next/static/chunks/6cc2e3d7873522b9.js +1 -0
- package/dist/ui/_next/static/chunks/6d01e8902e85bfe0.js +1 -0
- package/dist/ui/_next/static/chunks/6dc69e4a91f7a353.js +1 -0
- package/dist/ui/_next/static/chunks/6e832e016b60ae19.js +1 -0
- package/dist/ui/_next/static/chunks/6eab0d8815c18a6d.js +1 -0
- package/dist/ui/_next/static/chunks/6f862eb588fa3b7e.js +1 -0
- package/dist/ui/_next/static/chunks/6ff7b0a8653036b2.js +1 -0
- package/dist/ui/_next/static/chunks/710ce144a9645f3c.js +1 -0
- package/dist/ui/_next/static/chunks/71293e300c639b6b.js +1 -0
- package/dist/ui/_next/static/chunks/7186d7cce354a012.js +1 -0
- package/dist/ui/_next/static/chunks/7215d586009e8158.js +1 -0
- package/dist/ui/_next/static/chunks/726fdeaff53a89ac.js +1 -0
- package/dist/ui/_next/static/chunks/7322a00d61e7ffad.js +1 -0
- package/dist/ui/_next/static/chunks/73c60ee9f233051d.js +1 -0
- package/dist/ui/_next/static/chunks/740f5627b5c57baa.js +1 -0
- package/dist/ui/_next/static/chunks/74438794a8e9ba80.js +1 -0
- package/dist/ui/_next/static/chunks/74ffcd7d13b3fea0.js +1 -0
- package/dist/ui/_next/static/chunks/7510496048ab1ad4.js +1 -0
- package/dist/ui/_next/static/chunks/7636f89f38cbc3e3.js +1 -0
- package/dist/ui/_next/static/chunks/782a93ec4348b666.js +1 -0
- package/dist/ui/_next/static/chunks/7850bbac1925646c.js +1 -0
- package/dist/ui/_next/static/chunks/790dcc1e825d2504.js +1 -0
- package/dist/ui/_next/static/chunks/798597a1c1248d29.js +1 -0
- package/dist/ui/_next/static/chunks/7a70641f70a5c72d.js +60 -0
- package/dist/ui/_next/static/chunks/7c62789391c35dce.js +1 -0
- package/dist/ui/_next/static/chunks/7d533d3f2ab624f2.js +1 -0
- package/dist/ui/_next/static/chunks/7d6087c3fabf9ded.js +1 -0
- package/dist/ui/_next/static/chunks/7d84c9cb810e6902.js +1 -0
- package/dist/ui/_next/static/chunks/7dc4f5ba8c25c409.js +1 -0
- package/dist/ui/_next/static/chunks/7e10c0644fbb99d1.js +1 -0
- package/dist/ui/_next/static/chunks/7e7aaacf104c17f4.js +1 -0
- package/dist/ui/_next/static/chunks/7e92979509de57ed.js +1 -0
- package/dist/ui/_next/static/chunks/7f9a52e36f9f001e.js +1 -0
- package/dist/ui/_next/static/chunks/7fc4ae2e7cf2e37e.js +1 -0
- package/dist/ui/_next/static/chunks/801232fdde8ce252.js +1 -0
- package/dist/ui/_next/static/chunks/808ed0f189237446.js +1 -0
- package/dist/ui/_next/static/chunks/8199e6b3fa54b2ff.js +1 -0
- package/dist/ui/_next/static/chunks/81fa0fa05a94eb02.js +1 -0
- package/dist/ui/_next/static/chunks/821b5389566b82d2.js +1 -0
- package/dist/ui/_next/static/chunks/82b9e04f88e657df.js +1 -0
- package/dist/ui/_next/static/chunks/830c79cc12f2c5a4.js +1 -0
- package/dist/ui/_next/static/chunks/8388ae863590404b.js +4 -0
- package/dist/ui/_next/static/chunks/83ab70f11a82a8c6.js +1 -0
- package/dist/ui/_next/static/chunks/83faf7904ac18d7f.js +1 -0
- package/dist/ui/_next/static/chunks/850d850bd879606f.js +1 -0
- package/dist/ui/_next/static/chunks/864d4b5cf4ae2226.js +1 -0
- package/dist/ui/_next/static/chunks/86d8962196053f53.js +139 -0
- package/dist/ui/_next/static/chunks/8723d7000b263475.js +1 -0
- package/dist/ui/_next/static/chunks/87e5597a4336e2c1.js +1 -0
- package/dist/ui/_next/static/chunks/899fe56c4c707c65.js +1 -0
- package/dist/ui/_next/static/chunks/8bda52f55493ae9b.js +1 -0
- package/dist/ui/_next/static/chunks/8ce5668c3da0679a.js +1 -0
- package/dist/ui/_next/static/chunks/8d1c22aafb4783c5.js +1 -0
- package/dist/ui/_next/static/chunks/8deda0adfe811d18.js +1 -0
- package/dist/ui/_next/static/chunks/8eed597098a27801.js +1 -0
- package/dist/ui/_next/static/chunks/8ff7a1947b8d114b.js +1 -0
- package/dist/ui/_next/static/chunks/90367a2ee1e720b2.js +1 -0
- package/dist/ui/_next/static/chunks/9097640e1931c0de.js +1 -0
- package/dist/ui/_next/static/chunks/912457473a4c91c3.js +1 -0
- package/dist/ui/_next/static/chunks/91f7dd388c6b88c6.js +1 -0
- package/dist/ui/_next/static/chunks/932d4334e5f98b7c.js +1 -0
- package/dist/ui/_next/static/chunks/94b1efc14d44707b.js +1 -0
- package/dist/ui/_next/static/chunks/956107bc3ba52911.js +1 -0
- package/dist/ui/_next/static/chunks/962e5cad8ea716fc.js +36 -0
- package/dist/ui/_next/static/chunks/96acf903dff8ecf7.js +1 -0
- package/dist/ui/_next/static/chunks/96b274c82c194b4f.js +1 -0
- package/dist/ui/_next/static/chunks/96b3c1b1afe3201d.js +1 -0
- package/dist/ui/_next/static/chunks/9880c26551206d33.js +1 -0
- package/dist/ui/_next/static/chunks/98ea228d01556617.js +1 -0
- package/dist/ui/_next/static/chunks/9951c25a8b05148f.js +1 -0
- package/dist/ui/_next/static/chunks/9b10895d33be5f6e.js +1 -0
- package/dist/ui/_next/static/chunks/9b50a76ddbe4934d.js +1 -0
- package/dist/ui/_next/static/chunks/9bbb1c0146042008.js +1 -0
- package/dist/ui/_next/static/chunks/9ccab70823e99451.js +1 -0
- package/dist/ui/_next/static/chunks/9cd7bcb29e0b3418.js +24 -0
- package/dist/ui/_next/static/chunks/9d06bd5d701ace73.js +1 -0
- package/dist/ui/_next/static/chunks/9e5d9fc30c12fbdd.js +1 -0
- package/dist/ui/_next/static/chunks/9ec3bc5544bcc15a.js +1 -0
- package/dist/ui/_next/static/chunks/9f47133184a7455a.js +1 -0
- package/dist/ui/_next/static/chunks/a002d3850b7c7c59.js +1 -0
- package/dist/ui/_next/static/chunks/a0bc5573cadd1377.js +1 -0
- package/dist/ui/_next/static/chunks/a1d3de9e7615662e.js +160 -0
- package/dist/ui/_next/static/chunks/a2ce60768a8373e7.js +1 -0
- package/dist/ui/_next/static/chunks/a305087b1a55b367.js +1 -0
- package/dist/ui/_next/static/chunks/a41df0d443f66c68.js +1 -0
- package/dist/ui/_next/static/chunks/a49d2e9f31886b5e.js +1 -0
- package/dist/ui/_next/static/chunks/a50922e0883f65cd.js +1 -0
- package/dist/ui/_next/static/chunks/a60e84ee8b6c5ffc.js +43 -0
- package/dist/ui/_next/static/chunks/a6dad97d9634a72d.js +1 -0
- package/dist/ui/_next/static/chunks/a6dad97d9634a72d.js.map +1 -0
- package/dist/ui/_next/static/chunks/a7c40c289b5e2384.js +1 -0
- package/dist/ui/_next/static/chunks/a7fdfeea5fd894c1.js +59 -0
- package/dist/ui/_next/static/chunks/a81381241f4f484c.js +1 -0
- package/dist/ui/_next/static/chunks/a8a3989305bcc136.js +215 -0
- package/dist/ui/_next/static/chunks/a8cf26088e63128c.js +1 -0
- package/dist/ui/_next/static/chunks/aac4ca816d9ccdb6.js +1 -0
- package/dist/ui/_next/static/chunks/ab432bc28a971c8f.js +1 -0
- package/dist/ui/_next/static/chunks/abccff1b09b6effa.js +1 -0
- package/dist/ui/_next/static/chunks/ac8a8986f09ec520.js +1 -0
- package/dist/ui/_next/static/chunks/accbf306b5ddb732.js +1 -0
- package/dist/ui/_next/static/chunks/af7b09aba1d477ff.js +1 -0
- package/dist/ui/_next/static/chunks/af8114430894d79e.js +1 -0
- package/dist/ui/_next/static/chunks/afe2ff5d0727a240.js +1 -0
- package/dist/ui/_next/static/chunks/b096fa008120f0ae.js +1 -0
- package/dist/ui/_next/static/chunks/b0bc568eaff56dad.js +1 -0
- package/dist/ui/_next/static/chunks/b225dddc0852f85c.js +215 -0
- package/dist/ui/_next/static/chunks/b2342c5099957971.js +1 -0
- package/dist/ui/_next/static/chunks/b2d8c64d7d6a06b7.js +1 -0
- package/dist/ui/_next/static/chunks/b331c855cfc8fd57.js +1 -0
- package/dist/ui/_next/static/chunks/b356ee8615740392.js +1 -0
- package/dist/ui/_next/static/chunks/b3beaac9b7957d3f.js +1 -0
- package/dist/ui/_next/static/chunks/b4e7d4a109c4c080.js +1 -0
- package/dist/ui/_next/static/chunks/b5010f2ea9df9d00.js +77 -0
- package/dist/ui/_next/static/chunks/b5f9d21bd1b51a48.js +1 -0
- package/dist/ui/_next/static/chunks/b6a16eb77c5c9831.js +1 -0
- package/dist/ui/_next/static/chunks/b6a8e7c2216683ca.js +262 -0
- package/dist/ui/_next/static/chunks/b873c4d327a450e0.js +1 -0
- package/dist/ui/_next/static/chunks/b8aec8caed569fd2.js +24 -0
- package/dist/ui/_next/static/chunks/b8e7601e2379fd74.js +1 -0
- package/dist/ui/_next/static/chunks/ba3d03bf2f33f2a3.js +1 -0
- package/dist/ui/_next/static/chunks/ba698805336b2cb2.js +1 -0
- package/dist/ui/_next/static/chunks/bc48735eee7d1345.js +1 -0
- package/dist/ui/_next/static/chunks/bcb48aab1bdae96a.js +1 -0
- package/dist/ui/_next/static/chunks/bde2ca9d150d96ff.js +1 -0
- package/dist/ui/_next/static/chunks/be4af851547fc916.js +1 -0
- package/dist/ui/_next/static/chunks/be70ba8c4ba5cdb6.js +1 -0
- package/dist/ui/_next/static/chunks/be87578ee895734b.js +1 -0
- package/dist/ui/_next/static/chunks/c0aeb40fcca7d006.js +1 -0
- package/dist/ui/_next/static/chunks/c32156843c32ebca.js +1 -0
- package/dist/ui/_next/static/chunks/c57a3e045f3722c1.js +1 -0
- package/dist/ui/_next/static/chunks/c5add23cde4a234a.js +1 -0
- package/dist/ui/_next/static/chunks/c60897f3554a9388.js +1 -0
- package/dist/ui/_next/static/chunks/c648a36722afd12a.js +1 -0
- package/dist/ui/_next/static/chunks/c652f05e0a0d7b81.js +1 -0
- package/dist/ui/_next/static/chunks/c678d9303ed453b4.js +1 -0
- package/dist/ui/_next/static/chunks/c681430c24597d06.js +1 -0
- package/dist/ui/_next/static/chunks/c890870fb65940bc.js +1 -0
- package/dist/ui/_next/static/chunks/c94c394aeec71e21.js +1 -0
- package/dist/ui/_next/static/chunks/ca1eb1e2978389e4.js +1 -0
- package/dist/ui/_next/static/chunks/ca3512025a981c82.js +1 -0
- package/dist/ui/_next/static/chunks/ca6db0d999bad46b.js +1 -0
- package/dist/ui/_next/static/chunks/ca926babdf75597c.js +1 -0
- package/dist/ui/_next/static/chunks/cb0877764d4a31f2.js +1 -0
- package/dist/ui/_next/static/chunks/cb15e0c2ff49cf52.js +1 -0
- package/dist/ui/_next/static/chunks/cb1ae84204260ecd.js +1 -0
- package/dist/ui/_next/static/chunks/cb2ef733c53d80f7.js +1 -0
- package/dist/ui/_next/static/chunks/cbaa87ba8930fb75.js +1 -0
- package/dist/ui/_next/static/chunks/cbd29ba61906e19f.js +1 -0
- package/dist/ui/_next/static/chunks/ccf1e618faea3d02.js +148 -0
- package/dist/ui/_next/static/chunks/cd91712ea04f43ba.js +13 -0
- package/dist/ui/_next/static/chunks/cdd85dc039d450f3.js +1 -0
- package/dist/ui/_next/static/chunks/ce663833f73b1ec5.js +1 -0
- package/dist/ui/_next/static/chunks/ceda8fcac21d8e70.js +1 -0
- package/dist/ui/_next/static/chunks/cf565875b66f8cad.js +1 -0
- package/dist/ui/_next/static/chunks/d127ded39a594c84.js +1 -0
- package/dist/ui/_next/static/chunks/d34124988f5b8f6d.js +1 -0
- package/dist/ui/_next/static/chunks/d36807add3e11d59.js +60 -0
- package/dist/ui/_next/static/chunks/d3f2e4603faebed8.js +1 -0
- package/dist/ui/_next/static/chunks/d414302c23047b9b.js +1 -0
- package/dist/ui/_next/static/chunks/d42adc0237103e65.js +1 -0
- package/dist/ui/_next/static/chunks/d4a06b205f0a641b.js +1 -0
- package/dist/ui/_next/static/chunks/d4e5289ace3acef0.js +1 -0
- package/dist/ui/_next/static/chunks/d53b4725d3328076.js +1 -0
- package/dist/ui/_next/static/chunks/d5bd04634f922925.js +1 -0
- package/dist/ui/_next/static/chunks/d642c9229900dc48.js +1 -0
- package/dist/ui/_next/static/chunks/d6651bb78c09d144.js +5 -0
- package/dist/ui/_next/static/chunks/d7276c56aa62ceed.js +1 -0
- package/dist/ui/_next/static/chunks/d85cd9cda46f2d1b.js +1 -0
- package/dist/ui/_next/static/chunks/d8978f4b468bbad4.js +1 -0
- package/dist/ui/_next/static/chunks/d8fb9668a83c0603.js +1 -0
- package/dist/ui/_next/static/chunks/d95c62472fc41baf.js +1 -0
- package/dist/ui/_next/static/chunks/da13170b983f7ebf.js +1 -0
- package/dist/ui/_next/static/chunks/dae86e12c7741e6c.js +19 -0
- package/dist/ui/_next/static/chunks/db44023a744297d1.js +1 -0
- package/dist/ui/_next/static/chunks/dbe7840308be36b8.js +1 -0
- package/dist/ui/_next/static/chunks/dc0a4df8f7080b29.js +1 -0
- package/dist/ui/_next/static/chunks/dc4a6f59be156511.js +1 -0
- package/dist/ui/_next/static/chunks/dcda5e7b57ed88e0.js +1 -0
- package/dist/ui/_next/static/chunks/de9ff8c97f75b947.js +1 -0
- package/dist/ui/_next/static/chunks/df6abcdb3eb0b236.js +1 -0
- package/dist/ui/_next/static/chunks/df8a0933ca385a63.js +1 -0
- package/dist/ui/_next/static/chunks/dff6434c44c2dfaa.js +1 -0
- package/dist/ui/_next/static/chunks/e037ec5e62b2bdc3.js +1 -0
- package/dist/ui/_next/static/chunks/e212cf1f5a503899.js +1 -0
- package/dist/ui/_next/static/chunks/e2bfdac0a2305cc1.js +1 -0
- package/dist/ui/_next/static/chunks/e2dce648399ad4d4.js +1 -0
- package/dist/ui/_next/static/chunks/e318291bb8d74aee.js +1 -0
- package/dist/ui/_next/static/chunks/e33e40c2e7ab7629.js +1 -0
- package/dist/ui/_next/static/chunks/e410dfbcccddc478.js +1 -0
- package/dist/ui/_next/static/chunks/e411d58b52ab342b.js +1 -0
- package/dist/ui/_next/static/chunks/e57f7ffd0803a922.js +117 -0
- package/dist/ui/_next/static/chunks/e6b56ceb762e84c4.js +1 -0
- package/dist/ui/_next/static/chunks/e6d9a6ca68017eef.js +1 -0
- package/dist/ui/_next/static/chunks/e6ec2663605cf5a7.js +29 -0
- package/dist/ui/_next/static/chunks/e834330589be0639.js +1 -0
- package/dist/ui/_next/static/chunks/e8f662ba8bc76802.js +1 -0
- package/dist/ui/_next/static/chunks/e9e8e72d7ff45812.js +1 -0
- package/dist/ui/_next/static/chunks/eadd25eb66104a63.js +1 -0
- package/dist/ui/_next/static/chunks/ec3a7a7f48a8aca9.js +1 -0
- package/dist/ui/_next/static/chunks/ed62e349fb1ce14c.js +1 -0
- package/dist/ui/_next/static/chunks/ed6caa113f5769a5.js +1 -0
- package/dist/ui/_next/static/chunks/f02ac565bb5bc450.js +1 -0
- package/dist/ui/_next/static/chunks/f1a7a173e3da4ff4.js +1 -0
- package/dist/ui/_next/static/chunks/f268093817d3b260.js +1 -0
- package/dist/ui/_next/static/chunks/f6f811ccfe79e963.js +1 -0
- package/dist/ui/_next/static/chunks/f8955634331fd956.js +1 -0
- package/dist/ui/_next/static/chunks/f8c965a996875e30.js +56 -0
- package/dist/ui/_next/static/chunks/f9bb8411d37b06d7.js +1 -0
- package/dist/ui/_next/static/chunks/f9d4f77d8c130497.js +1 -0
- package/dist/ui/_next/static/chunks/fba113a516eb485f.js +1 -0
- package/dist/ui/_next/static/chunks/fc069e49a569d83c.js +1 -0
- package/dist/ui/_next/static/chunks/fc245016ffebdde3.js +1 -0
- package/dist/ui/_next/static/chunks/fc2d01d74dcf3921.js +1 -0
- package/dist/ui/_next/static/chunks/fe2ad0e00041a87d.js +1 -0
- package/dist/ui/_next/static/chunks/fe571740188dea3a.js +1 -0
- package/dist/ui/_next/static/chunks/turbopack-a5ce95b200d58f7a.js +4 -0
- package/dist/ui/_next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
- package/dist/ui/_next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
- package/dist/ui/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
- package/dist/ui/_next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_AMS-Regular.892f691b.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_AMS-Regular.c30af439.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_AMS-Regular.e6a3cada.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Caligraphic-Bold.2f97783e.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Caligraphic-Bold.a36b8125.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Caligraphic-Bold.db991531.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Caligraphic-Regular.2b13f013.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Caligraphic-Regular.7c50032c.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Caligraphic-Regular.c20eee08.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Fraktur-Bold.5fa2f5e4.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Fraktur-Bold.d514bd28.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Fraktur-Bold.e311399d.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Fraktur-Regular.18139813.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Fraktur-Regular.2a73476d.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Fraktur-Regular.5d62e468.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Main-Bold.6d137c77.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Main-Bold.c24b5ba7.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Main-Bold.f4e2828d.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Main-BoldItalic.079b33ae.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Main-BoldItalic.c003d3ec.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Main-BoldItalic.f1884480.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Main-Italic.26a3619b.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Main-Italic.61da3e93.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Main-Italic.a3746929.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Main-Regular.12644167.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Main-Regular.876b86ad.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Main-Regular.d511f158.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Math-BoldItalic.5c6a6a93.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Math-BoldItalic.ad4dffd5.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Math-BoldItalic.e73b3bf0.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Math-Italic.03974bc4.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Math-Italic.1cd2c488.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Math-Italic.d8564edb.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_SansSerif-Bold.a03f9428.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_SansSerif-Bold.d4608ed5.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_SansSerif-Bold.ff51ef5c.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_SansSerif-Italic.8ed740d6.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_SansSerif-Italic.9245afda.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_SansSerif-Italic.c0b22b1e.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_SansSerif-Regular.128c9bc2.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_SansSerif-Regular.156dbd4e.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_SansSerif-Regular.ee7b0a16.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Script-Regular.00d9a561.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Script-Regular.186c7155.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Script-Regular.afc2fd5a.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Size1-Regular.4450ef36.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Size1-Regular.9aaff96b.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Size1-Regular.e5bf4c74.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Size2-Regular.6a97527b.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Size2-Regular.8fbd32af.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Size2-Regular.f11810ed.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Size3-Regular.45ae8eba.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Size3-Regular.54b7ce9d.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Size3-Regular.9812ade2.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Size4-Regular.44a4d487.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Size4-Regular.927fc5b9.woff2 +0 -0
- package/dist/ui/_next/static/media/KaTeX_Size4-Regular.b211e3d3.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Typewriter-Regular.68b6c3a9.woff +0 -0
- package/dist/ui/_next/static/media/KaTeX_Typewriter-Regular.a1a7ff52.ttf +0 -0
- package/dist/ui/_next/static/media/KaTeX_Typewriter-Regular.ff99d643.woff2 +0 -0
- package/dist/ui/_next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
- package/dist/ui/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
- package/dist/ui/_next/static/media/favicon.0b3bf435.ico +0 -0
- package/dist/ui/_not-found/__next._full.txt +18 -0
- package/dist/ui/_not-found/__next._head.txt +6 -0
- package/dist/ui/_not-found/__next._index.txt +9 -0
- package/dist/ui/_not-found/__next._not-found.__PAGE__.txt +5 -0
- package/dist/ui/_not-found/__next._not-found.txt +4 -0
- package/dist/ui/_not-found/__next._tree.txt +3 -0
- package/dist/ui/_not-found/index.html +1 -0
- package/dist/ui/_not-found/index.txt +18 -0
- package/dist/ui/favicon.ico +0 -0
- package/dist/ui/file.svg +1 -0
- package/dist/ui/globe.svg +1 -0
- package/dist/ui/index.html +1 -0
- package/dist/ui/index.txt +25 -0
- package/dist/ui/next.svg +1 -0
- package/dist/ui/vercel.svg +1 -0
- package/dist/ui/window.svg +1 -0
- package/dist/utils/chat-model.d.ts +11 -0
- package/dist/utils/chat-model.js +37 -0
- package/dist/utils/diff-parser.d.ts +20 -0
- package/dist/utils/diff-parser.js +100 -0
- package/dist/utils/proxy-manager.d.ts +18 -0
- package/dist/utils/proxy-manager.js +42 -0
- package/dist/utils/remote-proxy.d.ts +40 -0
- package/dist/utils/remote-proxy.js +145 -0
- package/dist/utils/worktree-paths.d.ts +13 -0
- package/dist/utils/worktree-paths.js +64 -0
- package/dist/virtual-ws-adapter.d.ts +26 -0
- package/dist/virtual-ws-adapter.js +54 -0
- package/package.json +19 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const program: import("@stricli/core").Application<import("@stricli/core").CommandContext>;
|
package/dist/command.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { buildApplication, buildCommand, buildRouteMap } from "@stricli/core";
|
|
3
|
+
import { createSqliteStorage } from "./storage/sqlite.js";
|
|
4
|
+
import { createServer } from "./server.js";
|
|
5
|
+
import { ReverseConnectClient } from "./reverse-connect-client.js";
|
|
6
|
+
import { DB_PATH, DEFAULT_PORT } from "./constants.js";
|
|
7
|
+
import open from "open";
|
|
8
|
+
const startCommand = buildCommand({
|
|
9
|
+
parameters: {
|
|
10
|
+
flags: {
|
|
11
|
+
port: {
|
|
12
|
+
kind: "parsed",
|
|
13
|
+
parse: parseInt,
|
|
14
|
+
brief: "Port to run the server on",
|
|
15
|
+
optional: true,
|
|
16
|
+
},
|
|
17
|
+
auth: {
|
|
18
|
+
kind: "boolean",
|
|
19
|
+
brief: "Enable Clerk authentication (requires CLERK_SECRET_KEY and CLERK_PUBLISHABLE_KEY env vars)",
|
|
20
|
+
optional: true,
|
|
21
|
+
},
|
|
22
|
+
"data-dir": {
|
|
23
|
+
kind: "parsed",
|
|
24
|
+
parse: String,
|
|
25
|
+
brief: "Directory for storing database file (default: ~/.vibedeckx)",
|
|
26
|
+
optional: true,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
func: async (flags) => {
|
|
31
|
+
const port = flags.port ?? DEFAULT_PORT;
|
|
32
|
+
const authEnabled = flags.auth ?? false;
|
|
33
|
+
console.log("Starting vibedeckx...");
|
|
34
|
+
const dbPath = flags["data-dir"]
|
|
35
|
+
? path.join(flags["data-dir"], "data.sqlite")
|
|
36
|
+
: DB_PATH;
|
|
37
|
+
const storage = await createSqliteStorage(dbPath);
|
|
38
|
+
const server = await createServer({ storage, authEnabled });
|
|
39
|
+
const url = await server.start(port);
|
|
40
|
+
console.log(`Server running at ${url}`);
|
|
41
|
+
// 打开浏览器
|
|
42
|
+
await open(url);
|
|
43
|
+
// Graceful shutdown with re-entrancy guard and force-exit timeout
|
|
44
|
+
let shuttingDown = false;
|
|
45
|
+
const cleanup = async () => {
|
|
46
|
+
if (shuttingDown) {
|
|
47
|
+
console.log("\nForce exiting...");
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
shuttingDown = true;
|
|
51
|
+
console.log("\nShutting down...");
|
|
52
|
+
// Force exit after 5 seconds if cleanup hangs
|
|
53
|
+
const forceExit = setTimeout(() => {
|
|
54
|
+
console.log("Shutdown timed out, force exiting...");
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}, 5000);
|
|
57
|
+
forceExit.unref();
|
|
58
|
+
try {
|
|
59
|
+
await server.close(); // triggers onClose hooks that kill child processes
|
|
60
|
+
storage.close();
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
console.error("Error during shutdown:", err);
|
|
64
|
+
}
|
|
65
|
+
process.exit(0);
|
|
66
|
+
};
|
|
67
|
+
process.on("SIGINT", cleanup);
|
|
68
|
+
process.on("SIGTERM", cleanup);
|
|
69
|
+
},
|
|
70
|
+
docs: {
|
|
71
|
+
brief: "Start the vibedeckx server",
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
const connectCommand = buildCommand({
|
|
75
|
+
parameters: {
|
|
76
|
+
flags: {
|
|
77
|
+
"connect-to": {
|
|
78
|
+
kind: "parsed",
|
|
79
|
+
parse: String,
|
|
80
|
+
brief: "URL of the Vibedeckx server to connect to",
|
|
81
|
+
},
|
|
82
|
+
token: {
|
|
83
|
+
kind: "parsed",
|
|
84
|
+
parse: String,
|
|
85
|
+
brief: "Authentication token for the reverse connection",
|
|
86
|
+
},
|
|
87
|
+
port: {
|
|
88
|
+
kind: "parsed",
|
|
89
|
+
parse: parseInt,
|
|
90
|
+
brief: "Local port for the server (default: 5173)",
|
|
91
|
+
optional: true,
|
|
92
|
+
},
|
|
93
|
+
"data-dir": {
|
|
94
|
+
kind: "parsed",
|
|
95
|
+
parse: String,
|
|
96
|
+
brief: "Directory for storing database file (default: ~/.vibedeckx)",
|
|
97
|
+
optional: true,
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
func: async (flags) => {
|
|
102
|
+
const requestedPort = flags.port ?? 0;
|
|
103
|
+
console.log("Starting vibedeckx in reverse-connect mode...");
|
|
104
|
+
const dbPath = flags["data-dir"]
|
|
105
|
+
? path.join(flags["data-dir"], "data.sqlite")
|
|
106
|
+
: DB_PATH;
|
|
107
|
+
const storage = await createSqliteStorage(dbPath);
|
|
108
|
+
const server = await createServer({ storage });
|
|
109
|
+
// Start local server on localhost only (not publicly exposed)
|
|
110
|
+
// Port 0 lets the OS pick a random available port
|
|
111
|
+
const { instance, port: localPort } = await server.startLocal(requestedPort);
|
|
112
|
+
console.log(`Local server running on 127.0.0.1:${localPort}`);
|
|
113
|
+
// Create and start the reverse-connect client
|
|
114
|
+
const client = new ReverseConnectClient(instance, flags["connect-to"], flags.token, localPort);
|
|
115
|
+
client.connect();
|
|
116
|
+
console.log(`Connecting to ${flags["connect-to"]}...`);
|
|
117
|
+
// Graceful shutdown
|
|
118
|
+
let shuttingDown = false;
|
|
119
|
+
const cleanup = async () => {
|
|
120
|
+
if (shuttingDown) {
|
|
121
|
+
console.log("\nForce exiting...");
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|
|
124
|
+
shuttingDown = true;
|
|
125
|
+
console.log("\nShutting down...");
|
|
126
|
+
const forceExit = setTimeout(() => {
|
|
127
|
+
console.log("Shutdown timed out, force exiting...");
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}, 5000);
|
|
130
|
+
forceExit.unref();
|
|
131
|
+
try {
|
|
132
|
+
client.shutdown();
|
|
133
|
+
await server.close();
|
|
134
|
+
storage.close();
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
console.error("Error during shutdown:", err);
|
|
138
|
+
}
|
|
139
|
+
process.exit(0);
|
|
140
|
+
};
|
|
141
|
+
process.on("SIGINT", cleanup);
|
|
142
|
+
process.on("SIGTERM", cleanup);
|
|
143
|
+
},
|
|
144
|
+
docs: {
|
|
145
|
+
brief: "Connect to a remote Vibedeckx server as an inbound node",
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
const routes = buildRouteMap({
|
|
149
|
+
routes: {
|
|
150
|
+
start: startCommand,
|
|
151
|
+
connect: connectCommand,
|
|
152
|
+
},
|
|
153
|
+
defaultCommand: "start",
|
|
154
|
+
docs: {
|
|
155
|
+
brief: "Vibedeckx - AI-powered app generator",
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
export const program = buildApplication(routes, {
|
|
159
|
+
name: "vibedeckx",
|
|
160
|
+
versionInfo: {
|
|
161
|
+
currentVersion: "0.1.0",
|
|
162
|
+
},
|
|
163
|
+
});
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RFC 6902 JSON Patch utilities for conversation updates
|
|
3
|
+
*/
|
|
4
|
+
import type { AgentMessage } from "./agent-types.js";
|
|
5
|
+
export type PatchOperation = "add" | "replace" | "remove";
|
|
6
|
+
export interface PatchEntry {
|
|
7
|
+
op: PatchOperation;
|
|
8
|
+
path: string;
|
|
9
|
+
value?: PatchValue;
|
|
10
|
+
}
|
|
11
|
+
export type Patch = PatchEntry[];
|
|
12
|
+
/**
|
|
13
|
+
* PatchType discriminated union
|
|
14
|
+
*/
|
|
15
|
+
export type PatchValue = {
|
|
16
|
+
type: "ENTRY";
|
|
17
|
+
content: AgentMessage;
|
|
18
|
+
} | {
|
|
19
|
+
type: "STATUS";
|
|
20
|
+
content: AgentSessionStatus;
|
|
21
|
+
} | {
|
|
22
|
+
type: "READY";
|
|
23
|
+
content: true;
|
|
24
|
+
} | {
|
|
25
|
+
type: "FINISHED";
|
|
26
|
+
content: true;
|
|
27
|
+
};
|
|
28
|
+
export type AgentSessionStatus = "running" | "stopped" | "error";
|
|
29
|
+
/**
|
|
30
|
+
* Messages sent over WebSocket to frontend
|
|
31
|
+
*/
|
|
32
|
+
export type AgentWsMessage = {
|
|
33
|
+
JsonPatch: Patch;
|
|
34
|
+
} | {
|
|
35
|
+
Ready: true;
|
|
36
|
+
} | {
|
|
37
|
+
finished: true;
|
|
38
|
+
} | {
|
|
39
|
+
error: string;
|
|
40
|
+
} | {
|
|
41
|
+
taskCompleted: {
|
|
42
|
+
duration_ms?: number;
|
|
43
|
+
cost_usd?: number;
|
|
44
|
+
input_tokens?: number;
|
|
45
|
+
output_tokens?: number;
|
|
46
|
+
};
|
|
47
|
+
} | {
|
|
48
|
+
browserCommand: BrowserCommand;
|
|
49
|
+
} | {
|
|
50
|
+
openPreviewFrame: {
|
|
51
|
+
projectId: string;
|
|
52
|
+
url: string;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Browser command sent from backend to frontend via WebSocket.
|
|
57
|
+
* Frontend forwards to iframe's injected script via postMessage.
|
|
58
|
+
*/
|
|
59
|
+
export interface BrowserCommand {
|
|
60
|
+
id: string;
|
|
61
|
+
action: "click" | "fill" | "select" | "pressKey" | "getText" | "getHTML" | "querySelector";
|
|
62
|
+
selector?: string;
|
|
63
|
+
value?: string;
|
|
64
|
+
key?: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Browser command result sent from frontend back to backend via WebSocket.
|
|
68
|
+
*/
|
|
69
|
+
export interface BrowserCommandResult {
|
|
70
|
+
id: string;
|
|
71
|
+
success: boolean;
|
|
72
|
+
error?: string;
|
|
73
|
+
content?: string;
|
|
74
|
+
found?: boolean;
|
|
75
|
+
tag?: string;
|
|
76
|
+
text?: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* ConversationPatch - Static utility for creating RFC 6902 patches
|
|
80
|
+
*/
|
|
81
|
+
export declare const ConversationPatch: {
|
|
82
|
+
/**
|
|
83
|
+
* Create an ADD patch for a new entry at the given index
|
|
84
|
+
*/
|
|
85
|
+
addEntry(entryIndex: number, entry: AgentMessage): Patch;
|
|
86
|
+
/**
|
|
87
|
+
* Create a REPLACE patch for updating an existing entry
|
|
88
|
+
*/
|
|
89
|
+
replaceEntry(entryIndex: number, entry: AgentMessage): Patch;
|
|
90
|
+
/**
|
|
91
|
+
* Create a REMOVE patch for deleting an entry
|
|
92
|
+
*/
|
|
93
|
+
removeEntry(entryIndex: number): Patch;
|
|
94
|
+
/**
|
|
95
|
+
* Create a status update patch
|
|
96
|
+
*/
|
|
97
|
+
updateStatus(status: AgentSessionStatus): Patch;
|
|
98
|
+
/**
|
|
99
|
+
* Create a patch to clear all entries (for session restart)
|
|
100
|
+
* Uses a special path "/entries" with "replace" to signal full clear
|
|
101
|
+
*/
|
|
102
|
+
clearAll(): Patch;
|
|
103
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RFC 6902 JSON Patch utilities for conversation updates
|
|
3
|
+
*/
|
|
4
|
+
// ============ Conversation Patch Builder ============
|
|
5
|
+
/**
|
|
6
|
+
* ConversationPatch - Static utility for creating RFC 6902 patches
|
|
7
|
+
*/
|
|
8
|
+
export const ConversationPatch = {
|
|
9
|
+
/**
|
|
10
|
+
* Create an ADD patch for a new entry at the given index
|
|
11
|
+
*/
|
|
12
|
+
addEntry(entryIndex, entry) {
|
|
13
|
+
return [
|
|
14
|
+
{
|
|
15
|
+
op: "add",
|
|
16
|
+
path: `/entries/${entryIndex}`,
|
|
17
|
+
value: { type: "ENTRY", content: entry },
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
},
|
|
21
|
+
/**
|
|
22
|
+
* Create a REPLACE patch for updating an existing entry
|
|
23
|
+
*/
|
|
24
|
+
replaceEntry(entryIndex, entry) {
|
|
25
|
+
return [
|
|
26
|
+
{
|
|
27
|
+
op: "replace",
|
|
28
|
+
path: `/entries/${entryIndex}`,
|
|
29
|
+
value: { type: "ENTRY", content: entry },
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
},
|
|
33
|
+
/**
|
|
34
|
+
* Create a REMOVE patch for deleting an entry
|
|
35
|
+
*/
|
|
36
|
+
removeEntry(entryIndex) {
|
|
37
|
+
return [
|
|
38
|
+
{
|
|
39
|
+
op: "remove",
|
|
40
|
+
path: `/entries/${entryIndex}`,
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
},
|
|
44
|
+
/**
|
|
45
|
+
* Create a status update patch
|
|
46
|
+
*/
|
|
47
|
+
updateStatus(status) {
|
|
48
|
+
return [
|
|
49
|
+
{
|
|
50
|
+
op: "replace",
|
|
51
|
+
path: "/status",
|
|
52
|
+
value: { type: "STATUS", content: status },
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
},
|
|
56
|
+
/**
|
|
57
|
+
* Create a patch to clear all entries (for session restart)
|
|
58
|
+
* Uses a special path "/entries" with "replace" to signal full clear
|
|
59
|
+
*/
|
|
60
|
+
clearAll() {
|
|
61
|
+
return [
|
|
62
|
+
{
|
|
63
|
+
op: "replace",
|
|
64
|
+
path: "/entries",
|
|
65
|
+
value: { type: "ENTRY", content: { type: "system", content: "__CLEAR_ALL__", timestamp: Date.now() } },
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
},
|
|
69
|
+
};
|
package/dist/dialog.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const selectFolder: () => Promise<string | null>;
|
package/dist/dialog.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { exec } from "child_process";
|
|
2
|
+
import { promisify } from "util";
|
|
3
|
+
import { platform } from "os";
|
|
4
|
+
const execAsync = promisify(exec);
|
|
5
|
+
export const selectFolder = async () => {
|
|
6
|
+
const os = platform();
|
|
7
|
+
try {
|
|
8
|
+
if (os === "darwin") {
|
|
9
|
+
// macOS: 使用 osascript
|
|
10
|
+
const { stdout } = await execAsync(`osascript -e 'set folderPath to POSIX path of (choose folder with prompt "Select a project folder")' -e 'return folderPath'`);
|
|
11
|
+
const path = stdout.trim();
|
|
12
|
+
return path || null;
|
|
13
|
+
}
|
|
14
|
+
else if (os === "win32") {
|
|
15
|
+
// Windows: 使用 PowerShell
|
|
16
|
+
const { stdout } = await execAsync(`powershell -Command "Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.ShowDialog() | Out-Null; $f.SelectedPath"`);
|
|
17
|
+
const path = stdout.trim();
|
|
18
|
+
return path || null;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
// Linux: 尝试 zenity,然后 kdialog
|
|
22
|
+
try {
|
|
23
|
+
const { stdout } = await execAsync(`zenity --file-selection --directory --title="Select a project folder"`);
|
|
24
|
+
return stdout.trim() || null;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
try {
|
|
28
|
+
const { stdout } = await execAsync(`kdialog --getexistingdirectory ~`);
|
|
29
|
+
return stdout.trim() || null;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
throw new Error("No file dialog available. Please install zenity or kdialog.");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
// 用户取消选择
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EntryIndexProvider - Provides monotonically increasing indices for entries
|
|
3
|
+
* Matches vibe-kanban's pattern for thread-safe index management
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Provides unique, monotonically increasing indices for conversation entries.
|
|
7
|
+
* Can be cloned to share the same counter across multiple processors.
|
|
8
|
+
*/
|
|
9
|
+
export declare class EntryIndexProvider {
|
|
10
|
+
private currentIndex;
|
|
11
|
+
constructor(startAt?: number);
|
|
12
|
+
/**
|
|
13
|
+
* Get the next available index (increments the counter)
|
|
14
|
+
*/
|
|
15
|
+
next(): number;
|
|
16
|
+
/**
|
|
17
|
+
* Get the current index without incrementing
|
|
18
|
+
*/
|
|
19
|
+
current(): number;
|
|
20
|
+
/**
|
|
21
|
+
* Reset the counter to 0
|
|
22
|
+
*/
|
|
23
|
+
reset(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Set the counter to a specific value
|
|
26
|
+
*/
|
|
27
|
+
setIndex(index: number): void;
|
|
28
|
+
/**
|
|
29
|
+
* Clone the provider (shares nothing - creates independent copy)
|
|
30
|
+
* For shared state, use the same instance directly
|
|
31
|
+
*/
|
|
32
|
+
clone(): EntryIndexProvider;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Tracks which message index corresponds to which entry index.
|
|
36
|
+
* Useful for tracking the last assistant message for streaming updates.
|
|
37
|
+
*/
|
|
38
|
+
export declare class EntryTracker {
|
|
39
|
+
private entryIndices;
|
|
40
|
+
private indexProvider;
|
|
41
|
+
constructor(indexProvider: EntryIndexProvider);
|
|
42
|
+
/**
|
|
43
|
+
* Get or create an entry index for a given key.
|
|
44
|
+
* Returns { index, isNew } to indicate if this is a new entry.
|
|
45
|
+
*/
|
|
46
|
+
getOrCreate(key: string): {
|
|
47
|
+
index: number;
|
|
48
|
+
isNew: boolean;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Get the entry index for a key, or undefined if not tracked
|
|
52
|
+
*/
|
|
53
|
+
get(key: string): number | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Check if a key is being tracked
|
|
56
|
+
*/
|
|
57
|
+
has(key: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Directly set an entry index for a key (used during session restoration)
|
|
60
|
+
*/
|
|
61
|
+
set(key: string, index: number): void;
|
|
62
|
+
/**
|
|
63
|
+
* Remove tracking for a key
|
|
64
|
+
*/
|
|
65
|
+
remove(key: string): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Clear all tracked entries
|
|
68
|
+
*/
|
|
69
|
+
clear(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Get the underlying index provider
|
|
72
|
+
*/
|
|
73
|
+
getProvider(): EntryIndexProvider;
|
|
74
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EntryIndexProvider - Provides monotonically increasing indices for entries
|
|
3
|
+
* Matches vibe-kanban's pattern for thread-safe index management
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Provides unique, monotonically increasing indices for conversation entries.
|
|
7
|
+
* Can be cloned to share the same counter across multiple processors.
|
|
8
|
+
*/
|
|
9
|
+
export class EntryIndexProvider {
|
|
10
|
+
currentIndex;
|
|
11
|
+
constructor(startAt = 0) {
|
|
12
|
+
this.currentIndex = startAt;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get the next available index (increments the counter)
|
|
16
|
+
*/
|
|
17
|
+
next() {
|
|
18
|
+
return this.currentIndex++;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get the current index without incrementing
|
|
22
|
+
*/
|
|
23
|
+
current() {
|
|
24
|
+
return this.currentIndex;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Reset the counter to 0
|
|
28
|
+
*/
|
|
29
|
+
reset() {
|
|
30
|
+
this.currentIndex = 0;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Set the counter to a specific value
|
|
34
|
+
*/
|
|
35
|
+
setIndex(index) {
|
|
36
|
+
this.currentIndex = index;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Clone the provider (shares nothing - creates independent copy)
|
|
40
|
+
* For shared state, use the same instance directly
|
|
41
|
+
*/
|
|
42
|
+
clone() {
|
|
43
|
+
return new EntryIndexProvider(this.currentIndex);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Tracks which message index corresponds to which entry index.
|
|
48
|
+
* Useful for tracking the last assistant message for streaming updates.
|
|
49
|
+
*/
|
|
50
|
+
export class EntryTracker {
|
|
51
|
+
entryIndices = new Map();
|
|
52
|
+
indexProvider;
|
|
53
|
+
constructor(indexProvider) {
|
|
54
|
+
this.indexProvider = indexProvider;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get or create an entry index for a given key.
|
|
58
|
+
* Returns { index, isNew } to indicate if this is a new entry.
|
|
59
|
+
*/
|
|
60
|
+
getOrCreate(key) {
|
|
61
|
+
const existing = this.entryIndices.get(key);
|
|
62
|
+
if (existing !== undefined) {
|
|
63
|
+
return { index: existing, isNew: false };
|
|
64
|
+
}
|
|
65
|
+
const newIndex = this.indexProvider.next();
|
|
66
|
+
this.entryIndices.set(key, newIndex);
|
|
67
|
+
return { index: newIndex, isNew: true };
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get the entry index for a key, or undefined if not tracked
|
|
71
|
+
*/
|
|
72
|
+
get(key) {
|
|
73
|
+
return this.entryIndices.get(key);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Check if a key is being tracked
|
|
77
|
+
*/
|
|
78
|
+
has(key) {
|
|
79
|
+
return this.entryIndices.has(key);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Directly set an entry index for a key (used during session restoration)
|
|
83
|
+
*/
|
|
84
|
+
set(key, index) {
|
|
85
|
+
this.entryIndices.set(key, index);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Remove tracking for a key
|
|
89
|
+
*/
|
|
90
|
+
remove(key) {
|
|
91
|
+
return this.entryIndices.delete(key);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Clear all tracked entries
|
|
95
|
+
*/
|
|
96
|
+
clear() {
|
|
97
|
+
this.entryIndices.clear();
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get the underlying index provider
|
|
101
|
+
*/
|
|
102
|
+
getProvider() {
|
|
103
|
+
return this.indexProvider;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export type GlobalEvent = {
|
|
2
|
+
type: "session:status";
|
|
3
|
+
projectId: string;
|
|
4
|
+
branch: string | null;
|
|
5
|
+
sessionId: string;
|
|
6
|
+
status: "running" | "stopped" | "error";
|
|
7
|
+
agentType?: string;
|
|
8
|
+
} | {
|
|
9
|
+
type: "session:finished";
|
|
10
|
+
projectId: string;
|
|
11
|
+
branch: string | null;
|
|
12
|
+
sessionId: string;
|
|
13
|
+
duration_ms?: number;
|
|
14
|
+
cost_usd?: number;
|
|
15
|
+
agentType?: string;
|
|
16
|
+
} | {
|
|
17
|
+
type: "task:created";
|
|
18
|
+
projectId: string;
|
|
19
|
+
task: Record<string, unknown>;
|
|
20
|
+
} | {
|
|
21
|
+
type: "task:updated";
|
|
22
|
+
projectId: string;
|
|
23
|
+
task: Record<string, unknown>;
|
|
24
|
+
} | {
|
|
25
|
+
type: "task:deleted";
|
|
26
|
+
projectId: string;
|
|
27
|
+
taskId: string;
|
|
28
|
+
} | {
|
|
29
|
+
type: "executor:started";
|
|
30
|
+
projectId: string;
|
|
31
|
+
executorId: string;
|
|
32
|
+
processId: string;
|
|
33
|
+
target?: string;
|
|
34
|
+
} | {
|
|
35
|
+
type: "executor:stopped";
|
|
36
|
+
projectId: string;
|
|
37
|
+
executorId: string;
|
|
38
|
+
processId: string;
|
|
39
|
+
exitCode: number;
|
|
40
|
+
target?: string;
|
|
41
|
+
};
|
|
42
|
+
export declare class EventBus {
|
|
43
|
+
private emitter;
|
|
44
|
+
constructor();
|
|
45
|
+
emit(event: GlobalEvent): void;
|
|
46
|
+
subscribe(listener: (event: GlobalEvent) => void): () => void;
|
|
47
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EventEmitter } from "events";
|
|
2
|
+
export class EventBus {
|
|
3
|
+
emitter = new EventEmitter();
|
|
4
|
+
constructor() {
|
|
5
|
+
this.emitter.setMaxListeners(100);
|
|
6
|
+
}
|
|
7
|
+
emit(event) {
|
|
8
|
+
this.emitter.emit("event", event);
|
|
9
|
+
}
|
|
10
|
+
subscribe(listener) {
|
|
11
|
+
this.emitter.on("event", listener);
|
|
12
|
+
return () => {
|
|
13
|
+
this.emitter.off("event", listener);
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { FastifyPluginAsync } from "fastify";
|
|
2
|
+
import type { Storage } from "../storage/types.js";
|
|
3
|
+
import "../server-types.js";
|
|
4
|
+
interface SharedServicesOptions {
|
|
5
|
+
storage: Storage;
|
|
6
|
+
}
|
|
7
|
+
declare const _default: FastifyPluginAsync<SharedServicesOptions>;
|
|
8
|
+
export default _default;
|