openfox 2.0.20 → 2.0.22
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/{chunk-YYXOZJYE.js → chunk-3JPTXSR7.js} +2 -2
- package/dist/{chunk-3QQ4QKAU.js → chunk-EH27R2J3.js} +2 -2
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/languages.json +403 -0
- package/dist/package.json +2 -2
- package/dist/{serve-24IV7E3C.js → serve-F7G655XI.js} +2 -2
- package/dist/server/index.js +1 -1
- package/dist/web/assets/{index-00migM5L.js → index-D61sh6SX.js} +1 -1
- package/dist/web/index.html +1 -1
- package/dist/web/sw.js +1 -1
- package/package.json +2 -2
|
@@ -196,7 +196,7 @@ async function runCli(options) {
|
|
|
196
196
|
if (!configExists) {
|
|
197
197
|
await runNetworkSetup(mode);
|
|
198
198
|
}
|
|
199
|
-
const { runServe } = await import("./serve-
|
|
199
|
+
const { runServe } = await import("./serve-F7G655XI.js");
|
|
200
200
|
const serveOptions = { mode };
|
|
201
201
|
if (values.port) serveOptions.port = parseInt(values.port);
|
|
202
202
|
if (values["no-browser"] === true) serveOptions.openBrowser = false;
|
|
@@ -208,4 +208,4 @@ async function runCli(options) {
|
|
|
208
208
|
export {
|
|
209
209
|
runCli
|
|
210
210
|
};
|
|
211
|
-
//# sourceMappingURL=chunk-
|
|
211
|
+
//# sourceMappingURL=chunk-3JPTXSR7.js.map
|
|
@@ -3443,7 +3443,7 @@ import { Router as Router6 } from "express";
|
|
|
3443
3443
|
import { spawn as spawn2 } from "child_process";
|
|
3444
3444
|
|
|
3445
3445
|
// src/constants.ts
|
|
3446
|
-
var VERSION = "2.0.
|
|
3446
|
+
var VERSION = "2.0.22";
|
|
3447
3447
|
|
|
3448
3448
|
// src/server/routes/auto-update.ts
|
|
3449
3449
|
var updateInProgress = false;
|
|
@@ -4843,4 +4843,4 @@ export {
|
|
|
4843
4843
|
createServerHandle,
|
|
4844
4844
|
createServer
|
|
4845
4845
|
};
|
|
4846
|
-
//# sourceMappingURL=chunk-
|
|
4846
|
+
//# sourceMappingURL=chunk-EH27R2J3.js.map
|
package/dist/cli/dev.js
CHANGED
package/dist/cli/index.js
CHANGED
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "typescript",
|
|
4
|
+
"name": "TypeScript",
|
|
5
|
+
"extensions": [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"],
|
|
6
|
+
"serverCommand": "typescript-language-server",
|
|
7
|
+
"serverArgs": ["--stdio"],
|
|
8
|
+
"rootPatterns": ["tsconfig.json", "jsconfig.json", "package.json"],
|
|
9
|
+
"languageIds": {
|
|
10
|
+
".ts": "typescript",
|
|
11
|
+
".tsx": "typescriptreact",
|
|
12
|
+
".js": "javascript",
|
|
13
|
+
".jsx": "javascriptreact",
|
|
14
|
+
".mjs": "javascript",
|
|
15
|
+
".cjs": "javascript"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "python",
|
|
20
|
+
"name": "Python",
|
|
21
|
+
"extensions": [".py", ".pyi", ".pyw"],
|
|
22
|
+
"serverCommand": "pyright-langserver",
|
|
23
|
+
"serverArgs": ["--stdio"],
|
|
24
|
+
"rootPatterns": ["pyproject.toml", "setup.py", "requirements.txt", "Pipfile"]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "rust",
|
|
28
|
+
"name": "Rust",
|
|
29
|
+
"extensions": [".rs"],
|
|
30
|
+
"serverCommand": "rust-analyzer",
|
|
31
|
+
"serverArgs": [],
|
|
32
|
+
"rootPatterns": ["Cargo.toml"]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "go",
|
|
36
|
+
"name": "Go",
|
|
37
|
+
"extensions": [".go"],
|
|
38
|
+
"serverCommand": "gopls",
|
|
39
|
+
"serverArgs": ["serve"],
|
|
40
|
+
"rootPatterns": ["go.mod", "go.sum"]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "cpp",
|
|
44
|
+
"name": "C/C++",
|
|
45
|
+
"extensions": [".c", ".cpp", ".cc", ".cxx", ".h", ".hpp", ".hxx", ".hh"],
|
|
46
|
+
"serverCommand": "clangd",
|
|
47
|
+
"serverArgs": ["--background-index"],
|
|
48
|
+
"rootPatterns": ["compile_commands.json", "CMakeLists.txt", ".clangd", "Makefile"]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "zig",
|
|
52
|
+
"name": "Zig",
|
|
53
|
+
"extensions": [".zig"],
|
|
54
|
+
"serverCommand": "zls",
|
|
55
|
+
"serverArgs": [],
|
|
56
|
+
"rootPatterns": ["build.zig", "build.zig.zon"]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "lua",
|
|
60
|
+
"name": "Lua",
|
|
61
|
+
"extensions": [".lua"],
|
|
62
|
+
"serverCommand": "lua-language-server",
|
|
63
|
+
"serverArgs": [],
|
|
64
|
+
"rootPatterns": [".luarc.json", ".luarc.jsonc", ".luacheckrc"]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "ruby",
|
|
68
|
+
"name": "Ruby",
|
|
69
|
+
"extensions": [".rb", ".rake", ".gemspec"],
|
|
70
|
+
"serverCommand": "solargraph",
|
|
71
|
+
"serverArgs": ["stdio"],
|
|
72
|
+
"rootPatterns": ["Gemfile", ".ruby-version"]
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "elixir",
|
|
76
|
+
"name": "Elixir",
|
|
77
|
+
"extensions": [".ex", ".exs"],
|
|
78
|
+
"serverCommand": "elixir-ls",
|
|
79
|
+
"serverArgs": [],
|
|
80
|
+
"rootPatterns": ["mix.exs"]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "haskell",
|
|
84
|
+
"name": "Haskell",
|
|
85
|
+
"extensions": [".hs", ".lhs"],
|
|
86
|
+
"serverCommand": "haskell-language-server-wrapper",
|
|
87
|
+
"serverArgs": ["--lsp"],
|
|
88
|
+
"rootPatterns": ["stack.yaml", "cabal.project", "*.cabal"]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"id": "ocaml",
|
|
92
|
+
"name": "OCaml",
|
|
93
|
+
"extensions": [".ml", ".mli"],
|
|
94
|
+
"serverCommand": "ocamllsp",
|
|
95
|
+
"serverArgs": [],
|
|
96
|
+
"rootPatterns": ["dune-project", "dune", "*.opam"]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "scala",
|
|
100
|
+
"name": "Scala",
|
|
101
|
+
"extensions": [".scala", ".sc"],
|
|
102
|
+
"serverCommand": "metals",
|
|
103
|
+
"serverArgs": [],
|
|
104
|
+
"rootPatterns": ["build.sbt", "build.sc", ".metals"]
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "kotlin",
|
|
108
|
+
"name": "Kotlin",
|
|
109
|
+
"extensions": [".kt", ".kts"],
|
|
110
|
+
"serverCommand": "kotlin-language-server",
|
|
111
|
+
"serverArgs": [],
|
|
112
|
+
"rootPatterns": ["build.gradle.kts", "build.gradle", "settings.gradle.kts"]
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"id": "java",
|
|
116
|
+
"name": "Java",
|
|
117
|
+
"extensions": [".java"],
|
|
118
|
+
"serverCommand": "jdtls",
|
|
119
|
+
"serverArgs": [],
|
|
120
|
+
"rootPatterns": ["pom.xml", "build.gradle", ".project"]
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "csharp",
|
|
124
|
+
"name": "C#",
|
|
125
|
+
"extensions": [".cs", ".csx"],
|
|
126
|
+
"serverCommand": "OmniSharp",
|
|
127
|
+
"serverArgs": ["-lsp"],
|
|
128
|
+
"rootPatterns": ["*.csproj", "*.sln"]
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"id": "swift",
|
|
132
|
+
"name": "Swift",
|
|
133
|
+
"extensions": [".swift"],
|
|
134
|
+
"serverCommand": "sourcekit-lsp",
|
|
135
|
+
"serverArgs": [],
|
|
136
|
+
"rootPatterns": ["Package.swift", "*.xcodeproj", "*.xcworkspace"]
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"id": "php",
|
|
140
|
+
"name": "PHP",
|
|
141
|
+
"extensions": [".php", ".phtml"],
|
|
142
|
+
"serverCommand": "phpactor",
|
|
143
|
+
"serverArgs": ["language-server"],
|
|
144
|
+
"rootPatterns": ["composer.json", "phpunit.xml"]
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "yaml",
|
|
148
|
+
"name": "YAML",
|
|
149
|
+
"extensions": [".yaml", ".yml"],
|
|
150
|
+
"serverCommand": "yaml-language-server",
|
|
151
|
+
"serverArgs": ["--stdio"],
|
|
152
|
+
"rootPatterns": []
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"id": "json",
|
|
156
|
+
"name": "JSON",
|
|
157
|
+
"extensions": [".json", ".jsonc"],
|
|
158
|
+
"serverCommand": "vscode-json-language-server",
|
|
159
|
+
"serverArgs": ["--stdio"],
|
|
160
|
+
"rootPatterns": []
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"id": "html",
|
|
164
|
+
"name": "HTML",
|
|
165
|
+
"extensions": [".html", ".htm", ".xhtml"],
|
|
166
|
+
"serverCommand": "vscode-html-language-server",
|
|
167
|
+
"serverArgs": ["--stdio"],
|
|
168
|
+
"rootPatterns": []
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"id": "css",
|
|
172
|
+
"name": "CSS",
|
|
173
|
+
"extensions": [".css", ".scss", ".sass", ".less"],
|
|
174
|
+
"serverCommand": "vscode-css-language-server",
|
|
175
|
+
"serverArgs": ["--stdio"],
|
|
176
|
+
"rootPatterns": []
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"id": "vue",
|
|
180
|
+
"name": "Vue",
|
|
181
|
+
"extensions": [".vue"],
|
|
182
|
+
"serverCommand": "vue-language-server",
|
|
183
|
+
"serverArgs": ["--stdio"],
|
|
184
|
+
"rootPatterns": ["vite.config.ts", "vite.config.js", "vue.config.js"]
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"id": "svelte",
|
|
188
|
+
"name": "Svelte",
|
|
189
|
+
"extensions": [".svelte"],
|
|
190
|
+
"serverCommand": "svelteserver",
|
|
191
|
+
"serverArgs": ["--stdio"],
|
|
192
|
+
"rootPatterns": ["svelte.config.js", "svelte.config.ts"]
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"id": "terraform",
|
|
196
|
+
"name": "Terraform",
|
|
197
|
+
"extensions": [".tf", ".tfvars"],
|
|
198
|
+
"serverCommand": "terraform-ls",
|
|
199
|
+
"serverArgs": ["serve"],
|
|
200
|
+
"rootPatterns": [".terraform", "main.tf"]
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"id": "dockerfile",
|
|
204
|
+
"name": "Docker",
|
|
205
|
+
"extensions": [],
|
|
206
|
+
"serverCommand": "docker-langserver",
|
|
207
|
+
"serverArgs": ["--stdio"],
|
|
208
|
+
"rootPatterns": ["Dockerfile", "docker-compose.yml"]
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"id": "bash",
|
|
212
|
+
"name": "Bash",
|
|
213
|
+
"extensions": [".sh", ".bash", ".zsh"],
|
|
214
|
+
"serverCommand": "bash-language-server",
|
|
215
|
+
"serverArgs": ["start"],
|
|
216
|
+
"rootPatterns": []
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"id": "sql",
|
|
220
|
+
"name": "SQL",
|
|
221
|
+
"extensions": [".sql"],
|
|
222
|
+
"serverCommand": "sql-language-server",
|
|
223
|
+
"serverArgs": ["up", "--method", "stdio"],
|
|
224
|
+
"rootPatterns": [],
|
|
225
|
+
"installHint": "npm install -g sql-language-server"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"id": "graphql",
|
|
229
|
+
"name": "GraphQL",
|
|
230
|
+
"extensions": [".graphql", ".gql"],
|
|
231
|
+
"serverCommand": "graphql-lsp",
|
|
232
|
+
"serverArgs": ["server", "-m", "stream"],
|
|
233
|
+
"rootPatterns": [".graphqlrc", ".graphqlrc.yml", ".graphqlrc.json", "graphql.config.js"]
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"id": "nix",
|
|
237
|
+
"name": "Nix",
|
|
238
|
+
"extensions": [".nix"],
|
|
239
|
+
"serverCommand": "nil",
|
|
240
|
+
"serverArgs": [],
|
|
241
|
+
"rootPatterns": ["flake.nix", "default.nix", "shell.nix"]
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"id": "gleam",
|
|
245
|
+
"name": "Gleam",
|
|
246
|
+
"extensions": [".gleam"],
|
|
247
|
+
"serverCommand": "gleam",
|
|
248
|
+
"serverArgs": ["lsp"],
|
|
249
|
+
"rootPatterns": ["gleam.toml"]
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"id": "elm",
|
|
253
|
+
"name": "Elm",
|
|
254
|
+
"extensions": [".elm"],
|
|
255
|
+
"serverCommand": "elm-language-server",
|
|
256
|
+
"serverArgs": [],
|
|
257
|
+
"rootPatterns": ["elm.json"]
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"id": "dart",
|
|
261
|
+
"name": "Dart",
|
|
262
|
+
"extensions": [".dart"],
|
|
263
|
+
"serverCommand": "dart",
|
|
264
|
+
"serverArgs": ["language-server", "--protocol=lsp"],
|
|
265
|
+
"rootPatterns": ["pubspec.yaml"]
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"id": "julia",
|
|
269
|
+
"name": "Julia",
|
|
270
|
+
"extensions": [".jl"],
|
|
271
|
+
"serverCommand": "julia",
|
|
272
|
+
"serverArgs": ["--startup-file=no", "--history-file=no", "-e", "using LanguageServer; runserver()"],
|
|
273
|
+
"rootPatterns": ["Project.toml"]
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"id": "r",
|
|
277
|
+
"name": "R",
|
|
278
|
+
"extensions": [".r", ".R", ".rmd", ".Rmd"],
|
|
279
|
+
"serverCommand": "R",
|
|
280
|
+
"serverArgs": ["--slave", "-e", "languageserver::run()"],
|
|
281
|
+
"rootPatterns": ["DESCRIPTION", ".Rproj"]
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"id": "clojure",
|
|
285
|
+
"name": "Clojure",
|
|
286
|
+
"extensions": [".clj", ".cljs", ".cljc", ".edn"],
|
|
287
|
+
"serverCommand": "clojure-lsp",
|
|
288
|
+
"serverArgs": [],
|
|
289
|
+
"rootPatterns": ["deps.edn", "project.clj", "shadow-cljs.edn"]
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"id": "nim",
|
|
293
|
+
"name": "Nim",
|
|
294
|
+
"extensions": [".nim", ".nims"],
|
|
295
|
+
"serverCommand": "nimlsp",
|
|
296
|
+
"serverArgs": [],
|
|
297
|
+
"rootPatterns": ["*.nimble"]
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"id": "vlang",
|
|
301
|
+
"name": "V",
|
|
302
|
+
"extensions": [".v", ".vv"],
|
|
303
|
+
"serverCommand": "vls",
|
|
304
|
+
"serverArgs": [],
|
|
305
|
+
"rootPatterns": ["v.mod"]
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"id": "crystal",
|
|
309
|
+
"name": "Crystal",
|
|
310
|
+
"extensions": [".cr"],
|
|
311
|
+
"serverCommand": "crystalline",
|
|
312
|
+
"serverArgs": [],
|
|
313
|
+
"rootPatterns": ["shard.yml"]
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"id": "d",
|
|
317
|
+
"name": "D",
|
|
318
|
+
"extensions": [".d"],
|
|
319
|
+
"serverCommand": "serve-d",
|
|
320
|
+
"serverArgs": [],
|
|
321
|
+
"rootPatterns": ["dub.json", "dub.sdl"]
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"id": "erlang",
|
|
325
|
+
"name": "Erlang",
|
|
326
|
+
"extensions": [".erl", ".hrl"],
|
|
327
|
+
"serverCommand": "erlang_ls",
|
|
328
|
+
"serverArgs": [],
|
|
329
|
+
"rootPatterns": ["rebar.config", "erlang.mk"]
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"id": "fsharp",
|
|
333
|
+
"name": "F#",
|
|
334
|
+
"extensions": [".fs", ".fsx", ".fsi"],
|
|
335
|
+
"serverCommand": "fsautocomplete",
|
|
336
|
+
"serverArgs": ["--adaptive-lsp-server-enabled"],
|
|
337
|
+
"rootPatterns": ["*.fsproj"]
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"id": "fortran",
|
|
341
|
+
"name": "Fortran",
|
|
342
|
+
"extensions": [".f", ".f90", ".f95", ".f03", ".f08"],
|
|
343
|
+
"serverCommand": "fortls",
|
|
344
|
+
"serverArgs": [],
|
|
345
|
+
"rootPatterns": []
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"id": "latex",
|
|
349
|
+
"name": "LaTeX",
|
|
350
|
+
"extensions": [".tex", ".bib"],
|
|
351
|
+
"serverCommand": "texlab",
|
|
352
|
+
"serverArgs": [],
|
|
353
|
+
"rootPatterns": ["*.tex"]
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"id": "markdown",
|
|
357
|
+
"name": "Markdown",
|
|
358
|
+
"extensions": [".md", ".markdown"],
|
|
359
|
+
"serverCommand": "marksman",
|
|
360
|
+
"serverArgs": [],
|
|
361
|
+
"rootPatterns": []
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"id": "toml",
|
|
365
|
+
"name": "TOML",
|
|
366
|
+
"extensions": [".toml"],
|
|
367
|
+
"serverCommand": "taplo",
|
|
368
|
+
"serverArgs": ["lsp", "stdio"],
|
|
369
|
+
"rootPatterns": []
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"id": "protobuf",
|
|
373
|
+
"name": "Protocol Buffers",
|
|
374
|
+
"extensions": [".proto"],
|
|
375
|
+
"serverCommand": "bufls",
|
|
376
|
+
"serverArgs": ["serve"],
|
|
377
|
+
"rootPatterns": ["buf.yaml", "buf.gen.yaml"]
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
"id": "asm",
|
|
381
|
+
"name": "Assembly",
|
|
382
|
+
"extensions": [".asm", ".s", ".S"],
|
|
383
|
+
"serverCommand": "asm-lsp",
|
|
384
|
+
"serverArgs": [],
|
|
385
|
+
"rootPatterns": []
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
"id": "cmake",
|
|
389
|
+
"name": "CMake",
|
|
390
|
+
"extensions": [".cmake"],
|
|
391
|
+
"serverCommand": "cmake-language-server",
|
|
392
|
+
"serverArgs": [],
|
|
393
|
+
"rootPatterns": ["CMakeLists.txt"]
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
"id": "perl",
|
|
397
|
+
"name": "Perl",
|
|
398
|
+
"extensions": [".pl", ".pm"],
|
|
399
|
+
"serverCommand": "pls",
|
|
400
|
+
"serverArgs": [],
|
|
401
|
+
"rootPatterns": ["cpanfile", "Makefile.PL"]
|
|
402
|
+
}
|
|
403
|
+
]
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openfox",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.22",
|
|
4
4
|
"description": "Local-LLM-first agentic coding assistant",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"dev": "OPENFOX_DEV=true tsx watch src/cli/dev.ts --no-browser",
|
|
28
28
|
"dev:web": "vite --config web/vite.config.ts",
|
|
29
29
|
"build": "FORCE_COLOR=1 npm run build:server && FORCE_COLOR=1 npm run build:web",
|
|
30
|
-
"build:server": "FORCE_COLOR=1 tsup && mkdir -p dist/command-defaults dist/skill-defaults dist/agent-defaults dist/workflow-defaults && cp src/server/commands/defaults/*.md dist/command-defaults/ && cp src/server/skills/defaults/*.md dist/skill-defaults/ && cp src/server/agents/defaults/*.md dist/agent-defaults/ && cp src/server/workflows/defaults/*.json dist/workflow-defaults/ && cp src/cli/update.sh dist/cli/ && chmod +x dist/cli/update.sh && cp package.json dist/ && cp -r src/server/public dist/server/",
|
|
30
|
+
"build:server": "FORCE_COLOR=1 tsup && mkdir -p dist/command-defaults dist/skill-defaults dist/agent-defaults dist/workflow-defaults && cp src/server/commands/defaults/*.md dist/command-defaults/ && cp src/server/skills/defaults/*.md dist/skill-defaults/ && cp src/server/agents/defaults/*.md dist/agent-defaults/ && cp src/server/workflows/defaults/*.json dist/workflow-defaults/ && cp src/server/lsp/languages.json dist/languages.json && cp src/cli/update.sh dist/cli/ && chmod +x dist/cli/update.sh && cp package.json dist/ && cp -r src/server/public dist/server/",
|
|
31
31
|
"build:web": "cd web && FORCE_COLOR=1 vite build --outDir ../dist/web",
|
|
32
32
|
"start": "node dist/cli/index.js",
|
|
33
33
|
"start:dev": "node dist/cli/dev.js",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
VERSION,
|
|
3
3
|
createServer
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-EH27R2J3.js";
|
|
5
5
|
import "./chunk-T67KB6ZS.js";
|
|
6
6
|
import "./chunk-ASM2Z7JU.js";
|
|
7
7
|
import "./chunk-VDC2QL2O.js";
|
|
@@ -193,4 +193,4 @@ async function runServe(options) {
|
|
|
193
193
|
export {
|
|
194
194
|
runServe
|
|
195
195
|
};
|
|
196
|
-
//# sourceMappingURL=serve-
|
|
196
|
+
//# sourceMappingURL=serve-F7G655XI.js.map
|
package/dist/server/index.js
CHANGED
|
@@ -282,7 +282,7 @@ XID_Start XIDS`.split(/\s/).map(e=>[dd(e),e])),DP=new Map([["s",an(383)],[an(383
|
|
|
282
282
|
[`)&&!t.startsWith("[")).map(t=>t.replace(/^\d+: /,"")).join(`
|
|
283
283
|
`)}const L6=D.memo(function({result:t,metadata:n,filePath:s,heightExpanded:a=!1}){const[l,u]=D.useState(!1),c=D.useMemo(()=>md(s),[s]),d=n==null?void 0:n.mimeType,f=n==null?void 0:n.base64Data;if(d!=null&&d.startsWith("image/")&&f){const C=`data:${d};base64,${f}`;return o.jsxs(o.Fragment,{children:[o.jsx("div",{className:`rounded overflow-hidden border border-border ${a?"":"max-h-[45vh]"} flex items-center justify-center cursor-pointer hover:border-accent-primary transition-colors`,onClick:()=>u(!0),children:o.jsx("img",{src:C,alt:s,className:"max-w-full max-h-[45vh] object-contain"})}),o.jsx(OC,{src:C,alt:s,isOpen:l,onClose:()=>u(!1)})]})}if(!t)return o.jsx("div",{className:"text-xs text-text-muted italic p-2",children:"Empty file"});const m=t;if(c==="markdown"){const C=P0(m);return o.jsx("div",{className:`rounded overflow-hidden border border-border ${a?"":"max-h-[45vh]"} overflow-y-auto p-2`,children:o.jsx(ds,{content:C})})}const p=P0(m),_=m.split(`
|
|
284
284
|
`)[0],x=_==null?void 0:_.match(/^(\d+): /),w=x?parseInt(x[1],10):1;return o.jsx("div",{className:`rounded overflow-hidden border border-border ${a?"":"max-h-[45vh]"} overflow-y-auto`,children:o.jsx(za,{code:p,language:c,variant:"block",showLineNumbers:!0,startLine:w})})}),D6={error:{icon:"✗",color:"text-accent-error",bg:"bg-red-500/10",border:"border-red-500/30"},warning:{icon:"⚠",color:"text-accent-warning",bg:"bg-yellow-500/10",border:"border-yellow-500/30"},info:{icon:"ℹ",color:"text-accent-info",bg:"bg-blue-500/10",border:"border-blue-500/30"},hint:{icon:"💡",color:"text-text-muted",bg:"bg-gray-500/10",border:"border-gray-500/30"}},B0=D.memo(function({diagnostics:t}){if(t.length===0)return null;const n=t.filter(l=>l.severity==="error"),s=t.filter(l=>l.severity==="warning"),a=t.filter(l=>l.severity==="info"||l.severity==="hint");return o.jsxs("div",{className:"rounded border border-border overflow-hidden mt-2",children:[o.jsxs("div",{className:"flex items-center gap-3 px-2 py-1.5 bg-bg-tertiary border-b border-border",children:[o.jsx("span",{className:"text-xs font-medium text-text-secondary",children:"LSP Diagnostics"}),n.length>0&&o.jsxs("span",{className:"text-xs text-accent-error font-medium",children:[n.length," error",n.length!==1?"s":""]}),s.length>0&&o.jsxs("span",{className:"text-xs text-accent-warning font-medium",children:[s.length," warning",s.length!==1?"s":""]}),a.length>0&&o.jsxs("span",{className:"text-xs text-text-muted",children:[a.length," info"]})]}),o.jsx("div",{className:"max-h-48 overflow-y-auto",children:t.map((l,u)=>{const c=D6[l.severity];return o.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${c.bg} border-b border-border last:border-b-0`,children:[o.jsx("span",{className:`${c.color} text-xs flex-shrink-0 w-4 text-center`,children:c.icon}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("span",{className:"text-[10px] text-text-muted font-mono",children:["Ln ",l.range.start.line+1,":",l.range.start.character+1]}),l.code&&o.jsxs("span",{className:"text-[10px] text-text-muted font-mono",children:["[",l.code,"]"]})]}),o.jsx("div",{className:"text-xs text-text-primary break-words",children:l.message})]})]},u)})})]})}),R6=D.memo(function({command:t,timeout:n,startedAt:s,streamingOutput:a,status:l,result:u,error:c,durationMs:d}){const f=D.useRef(null),[m,p]=D.useState(0);D.useEffect(()=>{f.current&&l==="pending"&&(f.current.scrollTop=f.current.scrollHeight)},[a,l]),D.useEffect(()=>{if(l!=="pending"||!s)return;const C=setInterval(()=>{p(Date.now()-s)},100);return()=>clearInterval(C)},[l,s]);const _=n/1e3,x=l==="pending"?m/1e3:(d??0)/1e3,w=l==="pending"?(a==null?void 0:a.map(C=>C.content).join(""))??"":u??"";return o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex items-center justify-between gap-4",children:[o.jsxs("div",{className:"flex items-center gap-2 text-xs flex-1 min-w-0",children:[o.jsx("span",{className:"text-text-muted flex-shrink-0",children:"$"}),o.jsx("code",{className:"text-text-primary break-all",children:t})]}),o.jsxs("div",{className:"flex items-center gap-2 text-xs text-text-muted flex-shrink-0",children:[l==="pending"&&o.jsx("span",{className:"animate-pulse text-accent-warning",children:"running"}),l==="interrupted"&&o.jsx("span",{className:"text-red-400",children:"interrupted"}),o.jsxs("span",{className:l==="pending"?"text-text-secondary":"text-text-muted",children:[x.toFixed(1),"s / ",_,"s"]})]})]}),l==="pending"&&o.jsx("div",{className:"h-1 bg-bg-tertiary rounded overflow-hidden",children:o.jsx("div",{className:"h-full bg-accent-warning transition-all duration-100",style:{width:`${Math.min(100,m/n*100)}%`}})}),(w||l==="pending")&&o.jsx("pre",{ref:f,className:`text-xs bg-bg-primary p-2 rounded max-h-64 overflow-y-auto ${l==="pending"?"border border-accent-warning/30":""}`,style:{overflowX:"hidden",whiteSpace:"normal"},children:l==="pending"&&a?a.map((C,v)=>o.jsx("span",{className:C.stream==="stderr"?"text-accent-warning":"",children:xu(C.content)},v)):xu(w)}),l==="error"&&c&&o.jsx("div",{className:"text-xs text-accent-error bg-accent-error/10 p-2 rounded",children:c}),l!=="pending"&&d!==void 0&&o.jsxs("div",{className:"text-[10px] text-text-muted",children:["Completed in ",(d/1e3).toFixed(2),"s"]})]})});function O6(e){switch(e){case"sensitive_file":return{title:"Sensitive File Access",description:"Accessing files that may contain secrets"};case"both":return{title:"Sensitive File Access",description:"Accessing sensitive files outside project"};case"dangerous_command":return{title:"Dangerous Command",description:"Running potentially dangerous command"};case"git_no_verify":return{title:"Git --no-verify",description:"Bypassing git hooks/pre-commit checks"};case"outside_workdir":default:return{title:"Path Access Request",description:"Accessing paths outside project directory"}}}function M6({confirmation:e}){const t=we(p=>p.confirmPath),n=we(p=>p.currentSession),s=we(p=>p.switchDangerLevel),{title:a,description:l}=O6(e.reason),u=e.reason==="sensitive_file"||e.reason==="both",c=u?"border-red-500/50":"border-amber-500/50",d=u?"bg-red-500/10":"bg-amber-500/10",f=e.reason==="git_no_verify",m=()=>{n!=null&&n.id&&s("dangerous"),t(e.callId,!0,!1)};return o.jsxs("div",{className:`border ${c} ${d} rounded p-3 my-2`,children:[o.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[o.jsx(jm,{}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:`text-sm font-medium ${u?"text-red-400":"text-amber-400"}`,children:a}),o.jsx("div",{className:"text-xs text-text-muted",children:l})]})]}),o.jsxs("div",{className:"text-xs text-text-muted mb-2",children:[o.jsx("span",{className:"font-medium",children:e.tool})," wants to access:"]}),o.jsx("div",{className:"bg-bg-primary rounded p-2 mb-3 max-h-24 overflow-y-auto",children:o.jsx("ul",{className:"space-y-0.5",children:e.paths.map((p,_)=>o.jsx("li",{className:`text-xs font-mono ${u?"text-red-300":"text-amber-300"} break-all`,children:p},_))})}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx("button",{onClick:()=>t(e.callId,!1),className:"flex-1 px-3 py-1.5 text-xs font-medium rounded bg-bg-tertiary hover:bg-bg-tertiary/80 text-text-secondary border border-border transition-colors",children:"Deny"}),o.jsx("button",{onClick:()=>t(e.callId,!0,!1),className:"flex-1 px-3 py-1.5 text-xs font-medium rounded bg-accent-primary hover:bg-accent-primary/80 text-text-primary transition-colors",children:"Allow"}),o.jsx("button",{onClick:m,className:`flex-1 px-3 py-1.5 text-xs font-medium rounded transition-colors ${f?"hidden":"bg-red-600 hover:bg-red-700 text-white"}`,title:"Enable dangerous mode and allow this request",children:"Allow Everything"})]})]})}function I6(e,t){if(e==="read_file"){const s=String(t.path??""),a=t.offset,l=t.limit,u=[];return a!==void 0&&a!==1&&u.push(`offset=${a}`),l!==void 0&&u.push(`limit=${l}`),u.length>0?`${s} [${u.join(", ")}]`:s}if(e==="write_file"||e==="edit_file")return String(t.path??"");if(e==="run_command"||e==="bash")return String(t.command??"");if(e==="return_value"){const s=String(t.content??"");return s.length>60?s.slice(0,60)+"...":s}const n=JSON.stringify(t);return n.length>50?n.slice(0,50)+"...":n}function z0(e,t,n){return I6(e,t)}function P6(e){return JSON.stringify(e,null,2)}const B6={pending:{icon:"●",color:"text-accent-warning",animate:!0},success:{icon:"✓",color:"text-accent-success",animate:!1},error:{icon:"✗",color:"text-accent-error",animate:!1},interrupted:{icon:"✗",color:"text-red-400",animate:!1}},z6=D.memo(function({tool:t,args:n,status:s,variant:a="compact",forceCompact:l,result:u,error:c,durationMs:d,diagnostics:f,editContext:m,startedAt:p,streamingOutput:_,metadata:x,callId:w}){var G;const C=t==="edit_file"||t==="write_file",v=t==="run_command"&&s==="pending",S=t==="read_file",y=l?!1:C||v||t==="return_value",[E,N]=D.useState(y),T=B6[s],L=on(W=>W.settings[ze.DISPLAY_SHOW_OPEN_IN_EDITOR])==="true",A=t==="edit_file"?(G=m==null?void 0:m.regions[0])==null?void 0:G.startLine:t==="read_file"?(()=>{const W=u==null?void 0:u.split(`
|
|
285
|
-
`)[0],O=W==null?void 0:W.match(/^(\d+): /);return O?parseInt(O[1],10):void 0})():void 0,R=we(W=>W.pendingPathConfirmations),M=s==="pending"&&w?R.find(W=>W.callId===w)??null:null;return a==="compact"?o.jsxs("div",{className:"flex items-center gap-1.5 text-xs bg-secondary rounded px-2 py-1.5",children:[o.jsx(RC,{tool:t}),o.jsx("span",{className:"text-accent-primary font-medium",children:t}),o.jsx("span",{className:"text-text-muted truncate flex-1",children:z0(t,n)}),o.jsx("span",{className:`${T.color} ${T.animate?"animate-pulse":""}`,children:s==="pending"?"...":"done"})]}):o.jsxs("div",{className:"border border-border rounded overflow-hidden my-1 min-w-0",children:[o.jsxs("button",{className:"w-full flex items-center gap-1.5 p-2 bg-secondary hover:bg-secondary/80 text-left",onClick:()=>N(!E),children:[o.jsx("span",{className:`${T.color} ${T.animate?"animate-pulse":""}`,children:T.icon}),o.jsx("span",{className:"font-mono text-accent-primary text-sm",children:t}),o.jsx("span",{className:"text-text-muted text-xs flex-1 truncate",children:z0(t,n)}),o.jsx("span",{className:"text-text-muted text-xs",children:E?"▼":"▶"})]}),M&&o.jsx(M6,{confirmation:M}),(E||S)&&o.jsxs("div",{className:"p-2 bg-primary border-t border-border space-y-2 min-w-0",children:[t==="run_command"&&o.jsx(R6,{command:String(n.command??""),timeout:n.timeout??12e4,startedAt:p,streamingOutput:_,status:s,result:u,error:c,durationMs:d}),t==="edit_file"&&s==="success"&&o.jsxs(o.Fragment,{children:[m&&m.regions.length>0?o.jsx(j6,{regions:m.regions,filePath:String(n.path??"")}):o.jsx(k6,{oldString:String(n.old_string??""),newString:String(n.new_string??""),filePath:String(n.path??"")}),f&&f.length>0&&o.jsx(B0,{diagnostics:f})]}),t==="write_file"&&s==="success"&&o.jsxs(o.Fragment,{children:[o.jsx(E6,{content:String(n.content??""),filePath:String(n.path??"")}),f&&f.length>0&&o.jsx(B0,{diagnostics:f})]}),t==="read_file"&&s==="success"&&o.jsx(L6,{result:u,metadata:x,filePath:String(n.path??""),heightExpanded:E}),t==="return_value"&&(()=>{const W=(_==null?void 0:_.map(U=>U.content).join(""))??"",O=s==="pending"&&W?W:String(n.content??"");return o.jsxs("div",{children:[o.jsx("div",{className:"text-[10px] text-accent-primary font-medium mb-1 uppercase tracking-wide",children:"Sub-Agent Summary"}),o.jsx("div",{className:"text-xs prose prose-invert prose-sm max-w-none",children:o.jsx(ds,{content:O})})]})})(),t!=="edit_file"&&t!=="write_file"&&t!=="run_command"&&t!=="read_file"&&t!=="return_value"&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-[10px] text-text-muted mb-0.5",children:"Arguments:"}),o.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded overflow-x-auto",children:P6(n)})]}),s==="success"&&u!==void 0&&o.jsxs("div",{children:[o.jsxs("div",{className:"text-[10px] text-text-muted mb-0.5",children:["Result",d!==void 0&&` (${d}ms)`,":"]}),o.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded overflow-x-auto max-h-32",children:u||"No output"})]})]}),s==="success"&&(t==="edit_file"||t==="write_file"||t==="read_file")&&d!==void 0&&o.jsxs("div",{className:"text-[10px] text-text-muted flex items-center gap-2",children:[o.jsxs("span",{children:["Completed in ",d,"ms"]}),L&&(t==="read_file"||t==="write_file"||t==="edit_file")&&String((x==null?void 0:x.path)??n.path??"")&&o.jsx("a",{href:`vscode://file/${String((x==null?void 0:x.path)??n.path)}${A?`:${A}`:""}`,className:"text-accent-primary hover:underline ml-auto",children:"Open in VSCode"})]}),s==="error"&&c&&t!=="run_command"&&o.jsxs("div",{children:[o.jsx("div",{className:"text-[10px] text-accent-error mb-0.5",children:"Error:"}),o.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded text-accent-error",children:c})]})]})]})}),$6={read_file:"Reading file",write_file:"Writing file",edit_file:"Editing file",run_command:"Running command",glob:"Searching files",grep:"Searching content",ask_user:"Asking user",criterion:"Managing criterion",session_metadata:"Managing",todo_write:"Updating tasks"},H6={criteria:"criteria",review_findings:"review findings",todos:"tasks"};function U6(e,t){const n=$6[e];if(!n)return`Preparing ${e}`;if(e==="session_metadata"&&t)try{const a=JSON.parse(t).key;if(a){const l=H6[a]??a;return`${n} ${l}`}}catch{}return n}function F6(e){try{const t=e.replace(/\s*\}\s*$/,""),n=JSON.parse(t);if(typeof n.command=="string")return n.command}catch{const t=e.match(/"command"\s*:\s*"([^"]*)/);if(t&&t[1])return t[1]}return null}const V6=D.memo(function({name:t,arguments:n}){let a=U6(t,n)+"...";if(t==="run_command"&&n){const l=F6(n);l&&(a=l)}return o.jsx("div",{className:"border border-border rounded overflow-hidden my-1 min-w-0 animate-pulse",children:o.jsxs("div",{className:"flex items-center gap-1.5 p-2 bg-bg-tertiary",children:[o.jsx("span",{className:"text-accent-warning animate-pulse",children:"..."}),o.jsx(RC,{tool:t}),o.jsx("span",{className:"font-mono text-accent-primary text-sm",children:t}),t==="run_command"&&n?o.jsx("code",{className:"text-text-muted text-xs flex-1 truncate",children:a}):o.jsx("span",{className:"text-text-muted text-xs flex-1",children:a})]})})}),G6={pending:{icon:"○",color:"text-text-muted"},in_progress:{icon:"●",color:"text-accent-warning",animate:!0},completed:{icon:"✓",color:"text-accent-success"}},W6=D.memo(function({todos:t}){return Array.isArray(t)?t.length===0?o.jsx("div",{className:"text-xs text-text-muted italic my-1",children:"No tasks"}):o.jsxs("div",{className:"my-1 rounded border border-border bg-bg-tertiary overflow-hidden",children:[o.jsx("div",{className:"px-2 py-1.5 border-b border-border bg-bg-secondary",children:o.jsx("span",{className:"text-xs font-medium text-text-muted",children:"Tasks"})}),o.jsx("div",{children:t.map((n,s)=>{const a=G6[n.status];return o.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${s>0?"border-t border-border":""}`,children:[o.jsx("span",{className:`${(a==null?void 0:a.color)??"text-text-muted"} ${a!=null&&a.animate?"animate-pulse":""} text-sm leading-tight`,children:(a==null?void 0:a.icon)??"○"}),o.jsx("span",{className:`text-sm leading-tight ${n.status==="completed"?"text-text-muted":"text-text-primary"}`,children:n.content})]},s)})})]}):o.jsx("div",{className:"text-xs text-accent-warning italic my-1",children:"⚠️ Invalid todos data"})});function q6({toolCall:e}){var E;const t=we(N=>N.pendingQuestions),n=we(N=>N.answerQuestion),[s,a]=D.useState(""),l=D.useRef(null),u=D.useRef(null),c=t.find(N=>N.callId===e.id),d=e.arguments.question??(c==null?void 0:c.question)??"",f=e.arguments.type??(c==null?void 0:c.type)??"text",m=e.arguments.options??(c==null?void 0:c.options)??void 0,p=e.result!==void 0,_=c!==void 0&&!p,x=((E=e.result)==null?void 0:E.output)??"",w=x==="[user skipped]";D.useEffect(()=>{_&&l.current&&l.current.focus()},[_]),D.useEffect(()=>{_&&u.current&&u.current.scrollIntoView({behavior:"smooth",block:"nearest"})},[_]);const C=D.useCallback(()=>{c&&n(c.callId,s)},[c,s,n]),v=D.useCallback(()=>{c&&n(c.callId,"",!0)},[c,n]),S=D.useCallback(N=>{N.key==="Enter"&&!N.shiftKey&&(N.preventDefault(),C()),N.key==="Escape"&&!N.shiftKey&&(N.preventDefault(),v())},[C,v]),b=D.useCallback(N=>{c&&n(c.callId,N)},[c,n]),y="px-3 py-1.5 text-xs font-medium rounded transition-colors";return o.jsxs("div",{ref:u,className:"my-1",children:[o.jsx("div",{className:"text-sm text-text-primary",children:d}),_&&o.jsx("div",{className:"mt-2 border border-border rounded overflow-hidden",children:o.jsx("div",{className:"p-3 bg-primary space-y-2",children:f==="confirm"?o.jsxs("div",{className:"flex gap-2",children:[o.jsx("button",{onClick:()=>b("yes"),className:`${y} flex-1 bg-accent-success/20 hover:bg-accent-success/30 text-accent-success border border-accent-success/30`,children:"Yes"}),o.jsx("button",{onClick:()=>b("no"),className:`${y} flex-1 bg-accent-error/20 hover:bg-accent-error/30 text-accent-error border border-accent-error/30`,children:"No"}),o.jsx("button",{onClick:v,className:`${y} bg-bg-tertiary hover:bg-bg-tertiary/80 text-text-secondary border border-border`,children:"Skip"})]}):f==="choice"&&m&&m.length>0?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"flex flex-col gap-1.5",children:m.map(N=>o.jsx("button",{onClick:()=>b(N),className:`${y} text-left w-full bg-bg-tertiary hover:bg-accent-primary/20 text-text-primary border border-border hover:border-accent-primary/50`,children:N},N))}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx("textarea",{ref:l,value:s,onChange:N=>a(N.target.value),onKeyDown:S,placeholder:"Or type your own answer... (Enter to submit)",className:"flex-1 min-h-[36px] max-h-[80px] px-2 py-1.5 bg-bg-tertiary border border-border rounded text-xs text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-accent-primary/50 resize-y",rows:1}),o.jsx("button",{onClick:C,disabled:!s.trim(),className:`${y} bg-accent-primary/25 hover:bg-accent-primary/40 text-text-primary disabled:opacity-50 disabled:cursor-not-allowed`,children:"Send"}),o.jsx("button",{onClick:v,className:`${y} bg-bg-tertiary hover:bg-bg-tertiary/80 text-text-secondary border border-border`,children:"Skip"})]})]}):o.jsxs(o.Fragment,{children:[o.jsx("textarea",{ref:l,value:s,onChange:N=>a(N.target.value),onKeyDown:S,placeholder:"Type your answer here... (Enter to submit, Shift+Enter for new line)",className:"w-full min-h-[80px] px-3 py-2 bg-bg-tertiary border border-border rounded text-sm text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-accent-primary/50 resize-y",autoFocus:!0}),o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsx("button",{onClick:v,className:`${y} bg-bg-tertiary hover:bg-bg-tertiary/80 text-text-secondary border border-border`,children:"Skip"}),o.jsx("button",{onClick:C,disabled:!s.trim(),className:`${y} bg-accent-primary/25 hover:bg-accent-primary/40 text-text-primary disabled:opacity-50 disabled:cursor-not-allowed`,children:"Send Answer"})]})]})})}),p&&o.jsx("div",{className:"mt-1 flex items-center gap-2",children:o.jsx("span",{className:`text-xs ${w?"text-amber-400":"text-accent-success"}`,children:w?"Skipped":`Answered: ${x}`})})]})}const $0={add:{icon:"○",color:"text-text-muted"},update:{icon:"○",color:"text-text-muted"},remove:{icon:"○",color:"text-text-muted"},complete:{icon:"◉",color:"text-purple-400"},pass:{icon:"✓",color:"text-accent-success"},fail:{icon:"✗",color:"text-accent-error"},get:{icon:"○",color:"text-text-muted"},list:{icon:"○",color:"text-text-muted"},schema:{icon:"○",color:"text-text-muted"}},MC=D.memo(function({toolCalls:t,criteria:n}){if(t.length===0)return null;const s=new Map((n==null?void 0:n.map(d=>[d.id,d]))??[]),a=t.find(d=>{var f,m;return d.arguments.action==="get"&&((f=d.result)==null?void 0:f.success)&&((m=d.result)==null?void 0:m.output)}),l=t.some(d=>d.name==="session_metadata"),u={criteria:"Acceptance Criteria",review_findings:"Review Findings",todos:"Tasks"},c=(()=>{if(!l)return"Acceptance Criteria";const d=new Set(t.map(f=>f.arguments.key).filter(Boolean));if(d.size===1){const f=d.values().next().value;return f?u[f]??f:"Session Data"}return"Session Data"})();return o.jsxs("div",{className:"my-1 rounded border border-border bg-secondary overflow-hidden",children:[o.jsx("div",{className:"px-2 py-1.5 border-b border-border bg-secondary",children:o.jsx("span",{className:"text-xs font-medium text-text-muted",children:c})}),o.jsx("div",{className:"bg-primary",children:a?(()=>{const d=a.result.output;if(d==="No criteria defined yet.")return o.jsxs("div",{className:"flex items-start gap-2 px-2 py-1.5",children:[o.jsx("span",{className:"text-text-muted text-sm leading-tight flex-shrink-0",children:"○"}),o.jsx("div",{className:"flex-1 min-w-0 text-text-muted text-sm",children:"No criteria defined yet."})]});try{return JSON.parse(d).map((m,p)=>o.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${p>0?"border-t border-border":""}`,children:[o.jsx("span",{className:"text-text-muted text-sm leading-tight flex-shrink-0",children:"○"}),o.jsx("div",{className:"flex-1 min-w-0",children:o.jsx(ds,{content:`[${m.id}] ${m.description}`})})]},m.id??p))}catch{return t.map((f,m)=>o.jsx(H0,{tc:f,index:m,criteriaMap:s},f.id??m))}})():t.map((d,f)=>o.jsx(H0,{tc:d,index:f,criteriaMap:s},d.id??f))})]})});function H0({tc:e,index:t,criteriaMap:n}){const s=e.arguments.action,a=e.arguments,l=e.name==="session_metadata",u=s==="remove",c=a.id,d=a.description,f=c?n.get(c):void 0,m=d??(f==null?void 0:f.description)??(u&&c?`[${c}]`:"Criterion updated"),p=a.reason,_=s==="fail";return o.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${t>0?"border-t border-border":""}`,children:[l?o.jsx(Ku,{status:a.status,className:"text-sm leading-tight flex-shrink-0"}):(()=>{const x=s&&$0[s]?$0[s]:{icon:"○",color:"text-text-muted"};return o.jsx("span",{className:`${x.color} text-sm leading-tight flex-shrink-0`,children:x.icon})})(),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:u?"line-through text-text-muted":"",children:o.jsx(ds,{content:m})}),p&&o.jsxs("div",{className:`mt-1 text-sm ${_?"text-accent-error":"text-text-muted"}`,children:[o.jsx("span",{className:"text-text-muted",children:"└ "}),'"',p,'"']})]})]})}function K6(e){return e==="criterion"||e==="session_metadata"}function Y6(e){const t=[];let n=[];const s=()=>{n.length>0&&(t.push({type:"criteria_group",toolCalls:n}),n=[])};for(const a of e)a.type==="tool_call"&&K6(a.toolCall.name)?n.push(a.toolCall):(s(),t.push(a));return s(),t}function X6(e,t){if(e.segments&&e.segments.length>0)return Q6(e.segments,e.toolCalls??[],e.preparingToolCalls??[],e.stats,t);const n=[];if(e.thinkingContent&&n.push({type:"thinking",content:e.thinkingContent}),e.content&&n.push({type:"text",content:e.content}),e.toolCalls)for(const s of e.toolCalls)n.push({type:"tool_call",toolCall:s});if(e.preparingToolCalls)for(const s of e.preparingToolCalls)n.push({type:"preparing_tool_call",preparing:s});return t&&e.stats&&n.push({type:"stats",stats:e.stats}),n}function Q6(e,t,n,s,a){const l=[],u=new Map(t.map(c=>[c.id,c]));for(const c of e)switch(c.type){case"text":l.push({type:"text",content:c.content});break;case"thinking":c.content&&c.content.trim().length>0&&l.push({type:"thinking",content:c.content});break;case"tool_call":{const d=u.get(c.toolCallId);d&&l.push({type:"tool_call",toolCall:d});break}}for(const c of n)l.push({type:"preparing_tool_call",preparing:c});return a&&s&&l.push({type:"stats",stats:s}),l}const cg=D.memo(function({message:t,showStats:n=!0,showThinking:s=!0,showVerboseToolOutput:a=!0}){const l=we(_=>{var x,w;return(w=(x=_.currentSession)==null?void 0:x.metadataEntries)==null?void 0:w.criteria}),u=gt(_=>_.defaults),c=gt(_=>_.userItems),d=[...u,...c],f=X6(t,n),m=s?f:f.filter(_=>_.type!=="thinking"),p=Y6(m);return p.length===0?null:o.jsx("div",{className:"feed-item",children:o.jsxs("div",{className:"min-w-0",children:[p.map((_,x)=>{var w,C;switch(_.type){case"thinking":return o.jsx(C6,{content:_.content},x);case"text":return o.jsx("div",{className:"prose prose-sm prose-invert max-w-none",children:o.jsx(ds,{content:_.content})},x);case"preparing_tool_call":return o.jsx(V6,{name:_.preparing.name,arguments:_.preparing.arguments},`preparing-${_.preparing.index}`);case"tool_call":{const v=_.toolCall,S=v.result;if(v.name==="ask_user")return o.jsx(q6,{toolCall:v},x);if(v.name==="todo_write"){const E=v.arguments.todos,N=Array.isArray(E)?E:[];return o.jsx(W6,{todos:N},x)}const b=(w=S==null?void 0:S.output)==null?void 0:w.includes("[interrupted by user]"),y=S?b?"interrupted":S.success?"success":"error":"pending";return o.jsx(z6,{tool:v.name,args:v.arguments,status:y,variant:"expandable",forceCompact:!a,result:S==null?void 0:S.output,error:S==null?void 0:S.error,durationMs:S==null?void 0:S.durationMs,diagnostics:S==null?void 0:S.diagnostics,editContext:S==null?void 0:S.editContext,startedAt:v.startedAt,streamingOutput:v.streamingOutput,metadata:S==null?void 0:S.metadata,callId:v.id},x)}case"criteria_group":return o.jsx(MC,{toolCalls:_.toolCalls,criteria:l},x);case"stats":{const v=_.stats;if(!v||"error"in v)return null;const S=((C=v.model.split("/").pop())==null?void 0:C.split("-").slice(0,2).join("-"))??v.model,b=ol(d,v.mode),y=N=>N>=1e3?`${(N/1e3).toFixed(1)}k`:N.toString(),E=N=>N>=1e3?`${(N/1e3).toFixed(1)}k`:N.toFixed(1);return o.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-[10px] text-text-muted mt-3",children:[o.jsx("span",{className:"flex-1 h-px bg-border"}),o.jsx("span",{className:"text-text-secondary",children:S}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsx("span",{style:{color:b},children:v.mode}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsxs("span",{children:[v.totalTime.toFixed(1),"s"]}),v.toolTime>0&&o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsxs("span",{children:[v.toolTime.toFixed(1),"s tools"]})]}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsxs("span",{children:[y(v.prefillTokens)," @ ",E(v.prefillSpeed)," pp"]}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsxs("span",{children:[y(v.generationTokens)," @ ",E(v.generationSpeed)," tg"]}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsx("button",{type:"button",className:"text-text-muted hover:text-text-secondary transition-colors",title:"View detailed stats",onClick:()=>{const N=new CustomEvent("open-turn-stats",{detail:{stats:v}});window.dispatchEvent(N)},children:o.jsx(CS,{className:"w-3 h-3"})}),o.jsx("span",{className:"flex-1 h-px bg-border"})]},x)}}}),t.partial&&o.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] text-accent-warning mt-1",children:[o.jsx(jm,{}),o.jsx("span",{children:"Aborted"})]}),t.completeReason==="truncated"&&o.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] text-amber-400/80 mt-1",children:[o.jsx(jm,{}),o.jsx("span",{children:"Response was truncated — the model ran out of output tokens."})]})]})})});function Ou(e,t){const n=parseInt(e.slice(1,3),16),s=parseInt(e.slice(3,5),16),a=parseInt(e.slice(5,7),16);return`rgba(${n},${s},${a},${t})`}function J6(e){if(e<60)return`${e}s`;const t=Math.floor(e/60),n=Math.round(e%60);return n>0?`${t}m ${n}s`:`${t}m`}function Z6(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}const eB=D.memo(function({data:t}){var u;const n=jt(c=>c.defaults),s=jt(c=>c.userItems),l=((u=[...n,...s].find(c=>c.id===t.workflowId))==null?void 0:u.color)??t.workflowColor??"#8b949e";return o.jsxs("div",{className:"feed-item rounded p-3 border",style:{borderColor:Ou(l,.3),backgroundColor:Ou(l,.08)},children:[o.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[o.jsx($j,{color:l}),o.jsx("span",{className:"text-sm font-medium",style:{color:l},children:t.workflowName??"Task Completed"})]}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-5 gap-2",children:[o.jsx(Yo,{label:"Iterations",value:String(t.iterations)}),o.jsx(Yo,{label:"Total time",value:J6(t.totalTimeSeconds)}),o.jsx(Yo,{label:"Tool calls",value:String(t.totalToolCalls)}),o.jsx(Yo,{label:"Tokens",value:Z6(t.totalTokensGenerated)}),o.jsx(Yo,{label:"Speed",value:t.avgGenerationSpeed>0?`${t.avgGenerationSpeed} tok/s`:"-"})]})]})});function Yo({label:e,value:t}){return o.jsxs("div",{className:"bg-bg-primary/50 rounded px-2 py-1",children:[o.jsx("div",{className:"text-sm text-text-muted",children:e}),o.jsx("div",{className:"text-sm text-text-primary font-medium",children:t})]})}const tB=D.memo(function({data:t}){var u;const n=jt(c=>c.defaults),s=jt(c=>c.userItems),l=((u=[...n,...s].find(c=>c.id===t.workflowId))==null?void 0:u.color)??t.workflowColor??"#6b7280";return o.jsxs("div",{className:"feed-item flex items-center gap-2 px-3 py-2 rounded border",style:{borderColor:Ou(l,.3),backgroundColor:Ou(l,.08)},children:[o.jsx(Oj,{className:"w-3 h-3 shrink-0",color:l}),o.jsx("span",{className:"text-sm font-medium",style:{color:l},children:t.workflowName}),o.jsx("span",{className:"text-text-muted text-sm",children:"started"})]})});function nB({attachments:e,messageId:t}){const[n,s]=D.useState(null),a=we(m=>m.visionFallbackByMessage),l=we(m=>m.messages),u=D.useMemo(()=>{const m=l.findIndex(p=>p.id===t);if(m===-1)return null;for(let p=m+1;p<l.length;p++){const _=l[p];if(_&&_.role==="assistant")return _.id}return null},[l,t]),c=m=>{s(m)},d=()=>{s(null)},f=m=>{const p=`${t}-${m}`;if(a[p])return a[p];if(u){const _=`${u}-${m}`;return a[_]}return null};return e.length===0?null:o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"mt-3 flex flex-wrap gap-3",children:e.map(m=>{const p=f(m.id);return o.jsxs("div",{className:"relative inline-block",children:[o.jsxs("button",{onClick:()=>c(m.data),className:"group relative inline-block",title:m.filename,disabled:(p==null?void 0:p.type)==="start",children:[o.jsx("img",{src:m.data,alt:m.filename,className:"max-w-[256px] max-h-[256px] object-contain rounded-lg border border-border hover:border-accent-primary transition-colors cursor-pointer"}),(p==null?void 0:p.type)==="start"&&o.jsx("div",{className:"absolute inset-0 bg-black/60 flex items-center justify-center rounded-lg",children:o.jsx("span",{className:"text-xs text-text-primary animate-pulse",children:"Describing image..."})})]}),(p==null?void 0:p.type)==="done"&&p.description&&o.jsxs("div",{className:"mt-2 p-2 bg-bg-tertiary rounded text-xs text-text-secondary max-w-[256px]",children:[p.description.slice(0,200),p.description.length>200?"...":""]})]},m.id)})}),n&&o.jsx(OC,{src:n,alt:"Attached image",isOpen:!0,onClose:d})]})}function rB({content:e,align:t="right",messageIndex:n,sessionId:s}){const[a,l]=D.useState(!1),[u,c]=D.useState(!1),[d,f]=D.useState("left"),m=D.useRef(null),p=D.useRef(null),_=we(S=>S.loadSession),x=t==="right",w=()=>{if(!p.current)return"left";const S=p.current.getBoundingClientRect(),b=window.innerWidth-S.right,y=S.left,E=160,N=b>=E,T=y>=E;return T&&N||T?"left":N?"right":y>=b?"left":"right"};D.useEffect(()=>{const S=b=>{m.current&&!m.current.contains(b.target)&&l(!1)};return a&&document.addEventListener("mousedown",S),()=>document.removeEventListener("mousedown",S)},[a]);const C=async()=>{try{if(navigator.clipboard)await navigator.clipboard.writeText(e);else{const S=document.createElement("textarea");S.value=e,S.style.position="fixed",S.style.left="-999999px",document.body.appendChild(S),S.select(),document.execCommand("copy"),document.body.removeChild(S)}c(!0),l(!1),window.setTimeout(()=>c(!1),1500)}catch(S){console.error("Failed to copy:",S)}},v=async()=>{!s||n===void 0||(l(!1),await w2(s,n),_(s))};return o.jsx(o.Fragment,{children:o.jsxs("div",{className:`flex items-start gap-1.5 ${x?"":"order-first"}`,children:[u&&o.jsx(Pr,{className:"w-4 h-4 text-accent-success"}),o.jsxs("div",{ref:m,className:"relative",children:[o.jsx("button",{ref:p,onClick:()=>{a||f(w()),l(!a)},className:"p-1 rounded hover:bg-bg-tertiary text-text-muted hover:text-text-primary",title:"Message options",children:o.jsx(mp,{})}),a&&o.jsxs("div",{className:`absolute top-full mt-1 bg-bg-secondary border border-border rounded shadow-xl z-50 py-1 min-w-36 ${d==="right"?"left-0":"right-0"}`,children:[o.jsxs("button",{onClick:C,className:"w-full px-3 py-1.5 text-left text-sm text-text-primary hover:bg-bg-tertiary flex items-center gap-2",children:[o.jsx(fp,{className:"w-4 h-4"}),"Copy"]}),s&&n!==void 0&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"border-t border-border my-1"}),o.jsxs("button",{onClick:v,className:"w-full px-3 py-1.5 text-left text-sm text-text-primary hover:bg-bg-tertiary flex items-center gap-2",children:[o.jsx(pp,{className:"w-4 h-4"}),"Replay"]})]})]})]})]})})}function sB({message:e}){const[t,n]=D.useState(!1);if(e.messageKind!=="auto-prompt")return null;const s=e.metadata,a=(s==null?void 0:s.color)??"#6b7280",l=(s==null?void 0:s.name)??"Agent",u=(s==null?void 0:s.type)??"agent",d={agent:(s==null?void 0:s.kind)==="reminder"?"reminder":"definition injected",workflow:"instructions",compaction:"prompt injected",subagent:"instructions"}[u]??"injected",f=u==="workflow"||u==="subagent";return o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-[10px] text-text-muted font-mono mt-3 mb-4",children:[o.jsx("span",{className:"flex-1 h-px bg-border"}),o.jsx("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${f?"":"cursor-pointer"}`,style:{backgroundColor:a},onClick:()=>!f&&n(!0)}),o.jsx("span",{className:f?"":"cursor-pointer hover:text-text-secondary transition-colors",style:{color:a},onClick:()=>!f&&n(!0),children:l}),o.jsx("span",{children:"·"}),o.jsx("span",{className:f?"":"cursor-pointer hover:text-text-secondary transition-colors",onClick:()=>!f&&n(!0),children:d}),o.jsx("span",{className:"flex-1 h-px bg-border"})]}),f&&o.jsx("div",{className:"flex justify-center feed-item mb-4",children:o.jsx("div",{className:"max-w-[75%] rounded p-3 bg-bg-tertiary/50 text-text-secondary text-sm",style:{borderLeft:`3px solid ${a}`},children:o.jsx("pre",{className:"whitespace-pre-wrap font-mono text-xs",children:e.content})})}),o.jsx(Ot,{isOpen:t,onClose:()=>n(!1),title:`${l} Prompt`,size:"lg",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"w-3 h-3 rounded-full",style:{backgroundColor:a}}),o.jsx("span",{className:"text-sm text-text-primary font-medium",children:l}),o.jsxs("span",{className:"text-xs text-text-muted",children:["(",u,")"]})]}),o.jsx("div",{className:"h-full min-h-96",children:o.jsx("pre",{className:"text-sm text-text-secondary whitespace-pre-wrap bg-bg-tertiary rounded p-4 h-full min-h-96 overflow-auto font-mono",children:e.content})})]})})]})}function iB({message:e,messageIndex:t,sessionId:n}){const s=e.messageKind==="auto-prompt",a=e.messageKind==="command",l=e.isSystemGenerated;return o.jsxs("div",{className:"flex justify-end items-start gap-1.5 feed-item",children:[!l&&o.jsx(rB,{content:e.content,align:"right",messageIndex:t,sessionId:n}),o.jsxs("div",{className:`max-w-[75%] rounded p-2 ${l?a?"bg-teal-500/10 border border-teal-500/30":s?"bg-slate-500/10 border border-slate-500/30":"bg-amber-500/10 border border-amber-500/30":"bg-accent-primary/15 text-text-primary"}`,children:[l&&o.jsx("span",{className:`text-[10px] block mb-0.5 ${a?"text-teal-400":s?"text-slate-400":"text-amber-400"}`,children:a?"Command":s?"Auto":"System"}),o.jsx("div",{className:`whitespace-pre-wrap text-sm ${l?`${a?"text-teal-200":s?"text-slate-200":"text-amber-200 italic"}`:""}`,children:e.content}),e.attachments&&e.attachments.length>0&&o.jsx(nB,{attachments:e.attachments,messageId:e.id})]})]})}const IC=D.memo(function({message:t,isLastAssistantMessage:n=!1,messageIndex:s,sessionId:a}){const l=t.role==="user",u=t.role==="assistant",c=t.role==="system",d=t.role==="tool";if(u)return o.jsx(cg,{message:t,showStats:n});if(c&&t.isCompacted)return o.jsxs("div",{className:"feed-item bg-bg-tertiary/50 border border-border rounded p-2",children:[o.jsx("div",{className:"text-text-muted text-xs mb-0.5",children:"[Compacted]"}),o.jsx("div",{className:"text-text-secondary text-xs whitespace-pre-wrap",children:t.content.replace(`[COMPACTED HISTORY]
|
|
285
|
+
`)[0],O=W==null?void 0:W.match(/^(\d+): /);return O?parseInt(O[1],10):void 0})():void 0,R=we(W=>W.pendingPathConfirmations),M=s==="pending"&&w?R.find(W=>W.callId===w)??null:null;return a==="compact"?o.jsxs("div",{className:"flex items-center gap-1.5 text-xs bg-secondary rounded px-2 py-1.5",children:[o.jsx(RC,{tool:t}),o.jsx("span",{className:"text-accent-primary font-medium",children:t}),o.jsx("span",{className:"text-text-muted truncate flex-1",children:z0(t,n)}),o.jsx("span",{className:`${T.color} ${T.animate?"animate-pulse":""}`,children:s==="pending"?"...":"done"})]}):o.jsxs("div",{className:"border border-border rounded overflow-hidden my-1 min-w-0",children:[o.jsxs("button",{className:"w-full flex items-center gap-1.5 p-2 bg-secondary hover:bg-secondary/80 text-left",onClick:()=>N(!E),children:[o.jsx("span",{className:`${T.color} ${T.animate?"animate-pulse":""}`,children:T.icon}),o.jsx("span",{className:"font-mono text-accent-primary text-sm",children:t}),o.jsx("span",{className:"text-text-muted text-xs flex-1 truncate",children:z0(t,n)}),o.jsx("span",{className:"text-text-muted text-xs",children:E?"▼":"▶"})]}),M&&o.jsx(M6,{confirmation:M}),(E||S)&&o.jsxs("div",{className:"p-2 bg-primary border-t border-border space-y-2 min-w-0",children:[t==="run_command"&&o.jsx(R6,{command:String(n.command??""),timeout:n.timeout??12e4,startedAt:p,streamingOutput:_,status:s,result:u,error:c,durationMs:d}),t==="edit_file"&&s==="success"&&o.jsxs(o.Fragment,{children:[m&&m.regions.length>0?o.jsx(j6,{regions:m.regions,filePath:String(n.path??"")}):o.jsx(k6,{oldString:String(n.old_string??""),newString:String(n.new_string??""),filePath:String(n.path??"")}),f&&f.length>0&&o.jsx(B0,{diagnostics:f})]}),t==="write_file"&&s==="success"&&o.jsxs(o.Fragment,{children:[o.jsx(E6,{content:String(n.content??""),filePath:String(n.path??"")}),f&&f.length>0&&o.jsx(B0,{diagnostics:f})]}),t==="read_file"&&s==="success"&&o.jsx(L6,{result:u,metadata:x,filePath:String(n.path??""),heightExpanded:E}),t==="return_value"&&(()=>{const W=(_==null?void 0:_.map(U=>U.content).join(""))??"",O=s==="pending"&&W?W:String(n.content??"");return o.jsxs("div",{children:[o.jsx("div",{className:"text-[10px] text-accent-primary font-medium mb-1 uppercase tracking-wide",children:"Sub-Agent Summary"}),o.jsx("div",{className:"text-xs prose prose-invert prose-sm max-w-none",children:o.jsx(ds,{content:O})})]})})(),t!=="edit_file"&&t!=="write_file"&&t!=="run_command"&&t!=="read_file"&&t!=="return_value"&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-[10px] text-text-muted mb-0.5",children:"Arguments:"}),o.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded overflow-x-auto",children:P6(n)})]}),s==="success"&&u!==void 0&&o.jsxs("div",{children:[o.jsxs("div",{className:"text-[10px] text-text-muted mb-0.5",children:["Result",d!==void 0&&` (${d}ms)`,":"]}),o.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded overflow-x-auto max-h-32",children:u||"No output"})]})]}),s==="success"&&(t==="edit_file"||t==="write_file"||t==="read_file")&&d!==void 0&&o.jsxs("div",{className:"text-[10px] text-text-muted flex items-center gap-2",children:[o.jsxs("span",{children:["Completed in ",d,"ms"]}),L&&(t==="read_file"||t==="write_file"||t==="edit_file")&&String((x==null?void 0:x.path)??n.path??"")&&o.jsx("a",{href:`vscode://file/${String((x==null?void 0:x.path)??n.path)}${A?`:${A}`:""}`,className:"text-accent-primary hover:underline ml-auto",children:"Open in VSCode"})]}),s==="error"&&c&&t!=="run_command"&&o.jsxs("div",{children:[o.jsx("div",{className:"text-[10px] text-accent-error mb-0.5",children:"Error:"}),o.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded text-accent-error",children:c})]})]})]})}),$6={read_file:"Reading file",write_file:"Writing file",edit_file:"Editing file",run_command:"Running command",glob:"Searching files",grep:"Searching content",ask_user:"Asking user",criterion:"Managing criterion",session_metadata:"Managing",todo_write:"Updating tasks"},H6={criteria:"criteria",review_findings:"review findings",todos:"tasks"};function U6(e,t){const n=$6[e];if(!n)return`Preparing ${e}`;if(e==="session_metadata"&&t)try{const a=JSON.parse(t).key;if(a){const l=H6[a]??a;return`${n} ${l}`}}catch{}return n}function F6(e){try{const t=e.replace(/\s*\}\s*$/,""),n=JSON.parse(t);if(typeof n.command=="string")return n.command}catch{const t=e.match(/"command"\s*:\s*"([^"]*)/);if(t&&t[1])return t[1]}return null}const V6=D.memo(function({name:t,arguments:n}){let a=U6(t,n)+"...";if(t==="run_command"&&n){const l=F6(n);l&&(a=l)}return o.jsx("div",{className:"border border-border rounded overflow-hidden my-1 min-w-0 animate-pulse",children:o.jsxs("div",{className:"flex items-center gap-1.5 p-2 bg-bg-tertiary",children:[o.jsx("span",{className:"text-accent-warning animate-pulse",children:"..."}),o.jsx(RC,{tool:t}),o.jsx("span",{className:"font-mono text-accent-primary text-sm",children:t}),t==="run_command"&&n?o.jsx("code",{className:"text-text-muted text-xs flex-1 truncate",children:a}):o.jsx("span",{className:"text-text-muted text-xs flex-1",children:a})]})})}),G6={pending:{icon:"○",color:"text-text-muted"},in_progress:{icon:"●",color:"text-accent-warning",animate:!0},completed:{icon:"✓",color:"text-accent-success"}},W6=D.memo(function({todos:t}){return Array.isArray(t)?t.length===0?o.jsx("div",{className:"text-xs text-text-muted italic my-1",children:"No tasks"}):o.jsxs("div",{className:"my-1 rounded border border-border bg-bg-tertiary overflow-hidden",children:[o.jsx("div",{className:"px-2 py-1.5 border-b border-border bg-bg-secondary",children:o.jsx("span",{className:"text-xs font-medium text-text-muted",children:"Tasks"})}),o.jsx("div",{children:t.map((n,s)=>{const a=G6[n.status];return o.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${s>0?"border-t border-border":""}`,children:[o.jsx("span",{className:`${(a==null?void 0:a.color)??"text-text-muted"} ${a!=null&&a.animate?"animate-pulse":""} text-sm leading-tight`,children:(a==null?void 0:a.icon)??"○"}),o.jsx("span",{className:`text-sm leading-tight ${n.status==="completed"?"text-text-muted":"text-text-primary"}`,children:n.content})]},s)})})]}):o.jsx("div",{className:"text-xs text-accent-warning italic my-1",children:"⚠️ Invalid todos data"})});function q6({toolCall:e}){var E;const t=we(N=>N.pendingQuestions),n=we(N=>N.answerQuestion),[s,a]=D.useState(""),l=D.useRef(null),u=D.useRef(null),c=t.find(N=>N.callId===e.id),d=e.arguments.question??(c==null?void 0:c.question)??"",f=e.arguments.type??(c==null?void 0:c.type)??"text",m=e.arguments.options??(c==null?void 0:c.options)??void 0,p=e.result!==void 0,_=c!==void 0&&!p,x=((E=e.result)==null?void 0:E.output)??"",w=x==="[user skipped]";D.useEffect(()=>{_&&l.current&&l.current.focus()},[_]),D.useEffect(()=>{_&&u.current&&u.current.scrollIntoView({behavior:"smooth",block:"nearest"})},[_]);const C=D.useCallback(()=>{c&&n(c.callId,s)},[c,s,n]),v=D.useCallback(()=>{c&&n(c.callId,"",!0)},[c,n]),S=D.useCallback(N=>{N.key==="Enter"&&!N.shiftKey&&(N.preventDefault(),C()),N.key==="Escape"&&!N.shiftKey&&(N.preventDefault(),v())},[C,v]),b=D.useCallback(N=>{c&&n(c.callId,N)},[c,n]),y="px-3 py-1.5 text-xs font-medium rounded transition-colors";return o.jsxs("div",{ref:u,className:"my-1",children:[o.jsx("div",{className:"text-sm text-text-primary",children:d}),_&&o.jsx("div",{className:"mt-2 border border-border rounded overflow-hidden",children:o.jsx("div",{className:"p-3 bg-primary space-y-2",children:f==="confirm"?o.jsxs("div",{className:"flex gap-2",children:[o.jsx("button",{onClick:()=>b("yes"),className:`${y} flex-1 bg-accent-success/20 hover:bg-accent-success/30 text-accent-success border border-accent-success/30`,children:"Yes"}),o.jsx("button",{onClick:()=>b("no"),className:`${y} flex-1 bg-accent-error/20 hover:bg-accent-error/30 text-accent-error border border-accent-error/30`,children:"No"}),o.jsx("button",{onClick:v,className:`${y} bg-bg-tertiary hover:bg-bg-tertiary/80 text-text-secondary border border-border`,children:"Skip"})]}):f==="choice"&&m&&m.length>0?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"flex flex-col gap-1.5",children:m.map(N=>o.jsx("button",{onClick:()=>b(N),className:`${y} text-left w-full bg-bg-tertiary hover:bg-accent-primary/20 text-text-primary border border-border hover:border-accent-primary/50`,children:N},N))}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx("textarea",{ref:l,value:s,onChange:N=>a(N.target.value),onKeyDown:S,placeholder:"Or type your own answer... (Enter to submit)",className:"flex-1 min-h-[36px] max-h-[80px] px-2 py-1.5 bg-bg-tertiary border border-border rounded text-xs text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-accent-primary/50 resize-y",rows:1}),o.jsx("button",{onClick:C,disabled:!s.trim(),className:`${y} bg-accent-primary/25 hover:bg-accent-primary/40 text-text-primary disabled:opacity-50 disabled:cursor-not-allowed`,children:"Send"}),o.jsx("button",{onClick:v,className:`${y} bg-bg-tertiary hover:bg-bg-tertiary/80 text-text-secondary border border-border`,children:"Skip"})]})]}):o.jsxs(o.Fragment,{children:[o.jsx("textarea",{ref:l,value:s,onChange:N=>a(N.target.value),onKeyDown:S,placeholder:"Type your answer here... (Enter to submit, Shift+Enter for new line)",className:"w-full min-h-[80px] px-3 py-2 bg-bg-tertiary border border-border rounded text-sm text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-accent-primary/50 resize-y",autoFocus:!0}),o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsx("button",{onClick:v,className:`${y} bg-bg-tertiary hover:bg-bg-tertiary/80 text-text-secondary border border-border`,children:"Skip"}),o.jsx("button",{onClick:C,disabled:!s.trim(),className:`${y} bg-accent-primary/25 hover:bg-accent-primary/40 text-text-primary disabled:opacity-50 disabled:cursor-not-allowed`,children:"Send Answer"})]})]})})}),p&&o.jsx("div",{className:"mt-1 flex items-center gap-2",children:o.jsx("span",{className:`text-xs ${w?"text-amber-400":"text-accent-success"}`,children:w?"Skipped":`Answered: ${x}`})})]})}const $0={add:{icon:"○",color:"text-text-muted"},update:{icon:"○",color:"text-text-muted"},remove:{icon:"○",color:"text-text-muted"},complete:{icon:"◉",color:"text-purple-400"},pass:{icon:"✓",color:"text-accent-success"},fail:{icon:"✗",color:"text-accent-error"},get:{icon:"○",color:"text-text-muted"},list:{icon:"○",color:"text-text-muted"},schema:{icon:"○",color:"text-text-muted"}},MC=D.memo(function({toolCalls:t,criteria:n}){if(t.length===0)return null;const s=new Map((n==null?void 0:n.map(d=>[d.id,d]))??[]),a=t.find(d=>{var f,m;return d.arguments.action==="get"&&((f=d.result)==null?void 0:f.success)&&((m=d.result)==null?void 0:m.output)}),l=t.some(d=>d.name==="session_metadata"),u={criteria:"Acceptance Criteria",review_findings:"Review Findings",todos:"Tasks"},c=(()=>{if(!l)return"Acceptance Criteria";const d=new Set(t.map(f=>f.arguments.key).filter(Boolean));if(d.size===1){const f=d.values().next().value;return f?u[f]??f:"Session Data"}return"Session Data"})();return o.jsxs("div",{className:"my-1 rounded border border-border bg-secondary overflow-hidden",children:[o.jsx("div",{className:"px-2 py-1.5 border-b border-border bg-secondary",children:o.jsx("span",{className:"text-xs font-medium text-text-muted",children:c})}),o.jsx("div",{className:"bg-primary",children:a?(()=>{const d=a.result.output;if(d==="No criteria defined yet.")return o.jsxs("div",{className:"flex items-start gap-2 px-2 py-1.5",children:[o.jsx("span",{className:"text-text-muted text-sm leading-tight flex-shrink-0",children:"○"}),o.jsx("div",{className:"flex-1 min-w-0 text-text-muted text-sm",children:"No criteria defined yet."})]});try{return JSON.parse(d).map((m,p)=>o.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${p>0?"border-t border-border":""}`,children:[o.jsx("span",{className:"text-text-muted text-sm leading-tight flex-shrink-0",children:"○"}),o.jsx("div",{className:"flex-1 min-w-0",children:o.jsx(ds,{content:`[${m.id}] ${m.description}`})})]},m.id??p))}catch{return t.map((f,m)=>o.jsx(H0,{tc:f,index:m,criteriaMap:s},f.id??m))}})():t.map((d,f)=>o.jsx(H0,{tc:d,index:f,criteriaMap:s},d.id??f))})]})});function H0({tc:e,index:t,criteriaMap:n}){const s=e.arguments.action,a=e.arguments,l=e.name==="session_metadata",u=s==="remove",c=a.id,d=a.description,f=c?n.get(c):void 0,m=d??(f==null?void 0:f.description)??(u&&c?`[${c}]`:"Criterion updated"),p=a.reason,_=s==="fail";return o.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${t>0?"border-t border-border":""}`,children:[l?o.jsx(Ku,{status:a.status,className:"text-sm leading-tight flex-shrink-0"}):(()=>{const x=s&&$0[s]?$0[s]:{icon:"○",color:"text-text-muted"};return o.jsx("span",{className:`${x.color} text-sm leading-tight flex-shrink-0`,children:x.icon})})(),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:u?"line-through text-text-muted":"",children:o.jsx(ds,{content:m})}),p&&o.jsxs("div",{className:`mt-1 text-sm ${_?"text-accent-error":"text-text-muted"}`,children:[o.jsx("span",{className:"text-text-muted",children:"└ "}),'"',p,'"']})]})]})}function K6(e){return e==="criterion"||e==="session_metadata"}function Y6(e){const t=[];let n=[];const s=()=>{n.length>0&&(t.push({type:"criteria_group",toolCalls:n}),n=[])};for(const a of e)a.type==="tool_call"&&K6(a.toolCall.name)?n.push(a.toolCall):(s(),t.push(a));return s(),t}function X6(e,t){if(e.segments&&e.segments.length>0)return Q6(e.segments,e.toolCalls??[],e.preparingToolCalls??[],e.stats,t);const n=[];if(e.thinkingContent&&n.push({type:"thinking",content:e.thinkingContent}),e.content&&n.push({type:"text",content:e.content}),e.toolCalls)for(const s of e.toolCalls)n.push({type:"tool_call",toolCall:s});if(e.preparingToolCalls)for(const s of e.preparingToolCalls)n.push({type:"preparing_tool_call",preparing:s});return t&&e.stats&&n.push({type:"stats",stats:e.stats}),n}function Q6(e,t,n,s,a){const l=[],u=new Map(t.map(c=>[c.id,c]));for(const c of e)switch(c.type){case"text":l.push({type:"text",content:c.content});break;case"thinking":c.content&&c.content.trim().length>0&&l.push({type:"thinking",content:c.content});break;case"tool_call":{const d=u.get(c.toolCallId);d&&l.push({type:"tool_call",toolCall:d});break}}for(const c of n)l.push({type:"preparing_tool_call",preparing:c});return a&&s&&l.push({type:"stats",stats:s}),l}const cg=D.memo(function({message:t,showStats:n=!0,showThinking:s=!0,showVerboseToolOutput:a=!0}){const l=we(_=>{var x,w;return(w=(x=_.currentSession)==null?void 0:x.metadataEntries)==null?void 0:w.criteria}),u=gt(_=>_.defaults),c=gt(_=>_.userItems),d=[...u,...c],f=X6(t,n),m=s?f:f.filter(_=>_.type!=="thinking"),p=Y6(m);return p.length===0?null:o.jsx("div",{className:"feed-item",children:o.jsxs("div",{className:"min-w-0",children:[p.map((_,x)=>{var w,C;switch(_.type){case"thinking":return o.jsx(C6,{content:_.content},x);case"text":return o.jsx("div",{className:"prose prose-sm prose-invert max-w-none",children:o.jsx(ds,{content:_.content})},x);case"preparing_tool_call":return o.jsx(V6,{name:_.preparing.name,arguments:_.preparing.arguments},`preparing-${_.preparing.index}`);case"tool_call":{const v=_.toolCall,S=v.result;if(v.name==="ask_user")return o.jsx(q6,{toolCall:v},x);if(v.name==="todo_write"){const E=v.arguments.todos,N=Array.isArray(E)?E:[];return o.jsx(W6,{todos:N},x)}const b=(w=S==null?void 0:S.output)==null?void 0:w.includes("[interrupted by user]"),y=S?b?"interrupted":S.success?"success":"error":"pending";return o.jsx(z6,{tool:v.name,args:v.arguments,status:y,variant:"expandable",forceCompact:!a,result:S==null?void 0:S.output,error:S==null?void 0:S.error,durationMs:S==null?void 0:S.durationMs,diagnostics:S==null?void 0:S.diagnostics,editContext:S==null?void 0:S.editContext,startedAt:v.startedAt,streamingOutput:v.streamingOutput,metadata:S==null?void 0:S.metadata,callId:v.id},x)}case"criteria_group":return o.jsx(MC,{toolCalls:_.toolCalls,criteria:l},x);case"stats":{const v=_.stats;if(!v||"error"in v)return null;const S=((C=v.model.split("/").pop())==null?void 0:C.split("-").slice(0,2).join("-"))??v.model,b=ol(d,v.mode),y=N=>N>=1e3?`${(N/1e3).toFixed(1)}k`:N.toString(),E=N=>N>=1e3?`${(N/1e3).toFixed(1)}k`:N.toFixed(1);return o.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-[10px] text-text-muted mt-3",children:[o.jsx("span",{className:"flex-1 h-px bg-border"}),o.jsx("span",{className:"text-text-secondary",children:S}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsx("span",{style:{color:b},children:v.mode}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsxs("span",{children:[v.totalTime.toFixed(1),"s"]}),v.toolTime>0&&o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsxs("span",{children:[v.toolTime.toFixed(1),"s tools"]})]}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsxs("span",{children:[y(v.prefillTokens)," @ ",E(v.prefillSpeed)," pp"]}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsxs("span",{children:[y(v.generationTokens)," @ ",E(v.generationSpeed)," tg"]}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsx("button",{type:"button",className:"text-text-muted hover:text-text-secondary transition-colors",title:"View detailed stats",onClick:()=>{const N=new CustomEvent("open-turn-stats",{detail:{stats:v}});window.dispatchEvent(N)},children:o.jsx(CS,{className:"w-3 h-3"})}),o.jsx("span",{className:"flex-1 h-px bg-border"})]},x)}}}),t.partial&&o.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] text-accent-warning mt-1",children:[o.jsx(jm,{}),o.jsx("span",{children:"Aborted"})]}),t.completeReason==="truncated"&&o.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] text-amber-400/80 mt-1",children:[o.jsx(jm,{}),o.jsx("span",{children:"Response was truncated — the model ran out of output tokens."})]})]})})});function Ou(e,t){const n=parseInt(e.slice(1,3),16),s=parseInt(e.slice(3,5),16),a=parseInt(e.slice(5,7),16);return`rgba(${n},${s},${a},${t})`}function J6(e){if(e<60)return`${e}s`;const t=Math.floor(e/60),n=Math.round(e%60);return n>0?`${t}m ${n}s`:`${t}m`}function Z6(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}const eB=D.memo(function({data:t}){var u;const n=jt(c=>c.defaults),s=jt(c=>c.userItems),l=((u=[...n,...s].find(c=>c.id===t.workflowId))==null?void 0:u.color)??t.workflowColor??"#8b949e";return o.jsxs("div",{"data-testid":"task-completed-card",className:"feed-item rounded p-3 border",style:{borderColor:Ou(l,.3),backgroundColor:Ou(l,.08)},children:[o.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[o.jsx($j,{color:l}),o.jsx("span",{className:"text-sm font-medium",style:{color:l},children:t.workflowName??"Task Completed"})]}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-5 gap-2",children:[o.jsx(Yo,{label:"Iterations",value:String(t.iterations)}),o.jsx(Yo,{label:"Total time",value:J6(t.totalTimeSeconds)}),o.jsx(Yo,{label:"Tool calls",value:String(t.totalToolCalls)}),o.jsx(Yo,{label:"Tokens",value:Z6(t.totalTokensGenerated)}),o.jsx(Yo,{label:"Speed",value:t.avgGenerationSpeed>0?`${t.avgGenerationSpeed} tok/s`:"-"})]})]})});function Yo({label:e,value:t}){return o.jsxs("div",{className:"bg-bg-primary/50 rounded px-2 py-1",children:[o.jsx("div",{className:"text-sm text-text-muted",children:e}),o.jsx("div",{className:"text-sm text-text-primary font-medium",children:t})]})}const tB=D.memo(function({data:t}){var u;const n=jt(c=>c.defaults),s=jt(c=>c.userItems),l=((u=[...n,...s].find(c=>c.id===t.workflowId))==null?void 0:u.color)??t.workflowColor??"#6b7280";return o.jsxs("div",{className:"feed-item flex items-center gap-2 px-3 py-2 rounded border",style:{borderColor:Ou(l,.3),backgroundColor:Ou(l,.08)},children:[o.jsx(Oj,{className:"w-3 h-3 shrink-0",color:l}),o.jsx("span",{className:"text-sm font-medium",style:{color:l},children:t.workflowName}),o.jsx("span",{className:"text-text-muted text-sm",children:"started"})]})});function nB({attachments:e,messageId:t}){const[n,s]=D.useState(null),a=we(m=>m.visionFallbackByMessage),l=we(m=>m.messages),u=D.useMemo(()=>{const m=l.findIndex(p=>p.id===t);if(m===-1)return null;for(let p=m+1;p<l.length;p++){const _=l[p];if(_&&_.role==="assistant")return _.id}return null},[l,t]),c=m=>{s(m)},d=()=>{s(null)},f=m=>{const p=`${t}-${m}`;if(a[p])return a[p];if(u){const _=`${u}-${m}`;return a[_]}return null};return e.length===0?null:o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"mt-3 flex flex-wrap gap-3",children:e.map(m=>{const p=f(m.id);return o.jsxs("div",{className:"relative inline-block",children:[o.jsxs("button",{onClick:()=>c(m.data),className:"group relative inline-block",title:m.filename,disabled:(p==null?void 0:p.type)==="start",children:[o.jsx("img",{src:m.data,alt:m.filename,className:"max-w-[256px] max-h-[256px] object-contain rounded-lg border border-border hover:border-accent-primary transition-colors cursor-pointer"}),(p==null?void 0:p.type)==="start"&&o.jsx("div",{className:"absolute inset-0 bg-black/60 flex items-center justify-center rounded-lg",children:o.jsx("span",{className:"text-xs text-text-primary animate-pulse",children:"Describing image..."})})]}),(p==null?void 0:p.type)==="done"&&p.description&&o.jsxs("div",{className:"mt-2 p-2 bg-bg-tertiary rounded text-xs text-text-secondary max-w-[256px]",children:[p.description.slice(0,200),p.description.length>200?"...":""]})]},m.id)})}),n&&o.jsx(OC,{src:n,alt:"Attached image",isOpen:!0,onClose:d})]})}function rB({content:e,align:t="right",messageIndex:n,sessionId:s}){const[a,l]=D.useState(!1),[u,c]=D.useState(!1),[d,f]=D.useState("left"),m=D.useRef(null),p=D.useRef(null),_=we(S=>S.loadSession),x=t==="right",w=()=>{if(!p.current)return"left";const S=p.current.getBoundingClientRect(),b=window.innerWidth-S.right,y=S.left,E=160,N=b>=E,T=y>=E;return T&&N||T?"left":N?"right":y>=b?"left":"right"};D.useEffect(()=>{const S=b=>{m.current&&!m.current.contains(b.target)&&l(!1)};return a&&document.addEventListener("mousedown",S),()=>document.removeEventListener("mousedown",S)},[a]);const C=async()=>{try{if(navigator.clipboard)await navigator.clipboard.writeText(e);else{const S=document.createElement("textarea");S.value=e,S.style.position="fixed",S.style.left="-999999px",document.body.appendChild(S),S.select(),document.execCommand("copy"),document.body.removeChild(S)}c(!0),l(!1),window.setTimeout(()=>c(!1),1500)}catch(S){console.error("Failed to copy:",S)}},v=async()=>{!s||n===void 0||(l(!1),await w2(s,n),_(s))};return o.jsx(o.Fragment,{children:o.jsxs("div",{className:`flex items-start gap-1.5 ${x?"":"order-first"}`,children:[u&&o.jsx(Pr,{className:"w-4 h-4 text-accent-success"}),o.jsxs("div",{ref:m,className:"relative",children:[o.jsx("button",{ref:p,onClick:()=>{a||f(w()),l(!a)},className:"p-1 rounded hover:bg-bg-tertiary text-text-muted hover:text-text-primary",title:"Message options",children:o.jsx(mp,{})}),a&&o.jsxs("div",{className:`absolute top-full mt-1 bg-bg-secondary border border-border rounded shadow-xl z-50 py-1 min-w-36 ${d==="right"?"left-0":"right-0"}`,children:[o.jsxs("button",{onClick:C,className:"w-full px-3 py-1.5 text-left text-sm text-text-primary hover:bg-bg-tertiary flex items-center gap-2",children:[o.jsx(fp,{className:"w-4 h-4"}),"Copy"]}),s&&n!==void 0&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"border-t border-border my-1"}),o.jsxs("button",{onClick:v,className:"w-full px-3 py-1.5 text-left text-sm text-text-primary hover:bg-bg-tertiary flex items-center gap-2",children:[o.jsx(pp,{className:"w-4 h-4"}),"Replay"]})]})]})]})]})})}function sB({message:e}){const[t,n]=D.useState(!1);if(e.messageKind!=="auto-prompt")return null;const s=e.metadata,a=(s==null?void 0:s.color)??"#6b7280",l=(s==null?void 0:s.name)??"Agent",u=(s==null?void 0:s.type)??"agent",d={agent:(s==null?void 0:s.kind)==="reminder"?"reminder":"definition injected",workflow:"instructions",compaction:"prompt injected",subagent:"instructions"}[u]??"injected",f=u==="workflow"||u==="subagent";return o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-[10px] text-text-muted font-mono mt-3 mb-4",children:[o.jsx("span",{className:"flex-1 h-px bg-border"}),o.jsx("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${f?"":"cursor-pointer"}`,style:{backgroundColor:a},onClick:()=>!f&&n(!0)}),o.jsx("span",{className:f?"":"cursor-pointer hover:text-text-secondary transition-colors",style:{color:a},onClick:()=>!f&&n(!0),children:l}),o.jsx("span",{children:"·"}),o.jsx("span",{className:f?"":"cursor-pointer hover:text-text-secondary transition-colors",onClick:()=>!f&&n(!0),children:d}),o.jsx("span",{className:"flex-1 h-px bg-border"})]}),f&&o.jsx("div",{className:"flex justify-center feed-item mb-4",children:o.jsx("div",{className:"max-w-[75%] rounded p-3 bg-bg-tertiary/50 text-text-secondary text-sm",style:{borderLeft:`3px solid ${a}`},children:o.jsx("pre",{className:"whitespace-pre-wrap font-mono text-xs",children:e.content})})}),o.jsx(Ot,{isOpen:t,onClose:()=>n(!1),title:`${l} Prompt`,size:"lg",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"w-3 h-3 rounded-full",style:{backgroundColor:a}}),o.jsx("span",{className:"text-sm text-text-primary font-medium",children:l}),o.jsxs("span",{className:"text-xs text-text-muted",children:["(",u,")"]})]}),o.jsx("div",{className:"h-full min-h-96",children:o.jsx("pre",{className:"text-sm text-text-secondary whitespace-pre-wrap bg-bg-tertiary rounded p-4 h-full min-h-96 overflow-auto font-mono",children:e.content})})]})})]})}function iB({message:e,messageIndex:t,sessionId:n}){const s=e.messageKind==="auto-prompt",a=e.messageKind==="command",l=e.isSystemGenerated;return o.jsxs("div",{className:"flex justify-end items-start gap-1.5 feed-item",children:[!l&&o.jsx(rB,{content:e.content,align:"right",messageIndex:t,sessionId:n}),o.jsxs("div",{className:`max-w-[75%] rounded p-2 ${l?a?"bg-teal-500/10 border border-teal-500/30":s?"bg-slate-500/10 border border-slate-500/30":"bg-amber-500/10 border border-amber-500/30":"bg-accent-primary/15 text-text-primary"}`,children:[l&&o.jsx("span",{className:`text-[10px] block mb-0.5 ${a?"text-teal-400":s?"text-slate-400":"text-amber-400"}`,children:a?"Command":s?"Auto":"System"}),o.jsx("div",{className:`whitespace-pre-wrap text-sm ${l?`${a?"text-teal-200":s?"text-slate-200":"text-amber-200 italic"}`:""}`,children:e.content}),e.attachments&&e.attachments.length>0&&o.jsx(nB,{attachments:e.attachments,messageId:e.id})]})]})}const IC=D.memo(function({message:t,isLastAssistantMessage:n=!1,messageIndex:s,sessionId:a}){const l=t.role==="user",u=t.role==="assistant",c=t.role==="system",d=t.role==="tool";if(u)return o.jsx(cg,{message:t,showStats:n});if(c&&t.isCompacted)return o.jsxs("div",{className:"feed-item bg-bg-tertiary/50 border border-border rounded p-2",children:[o.jsx("div",{className:"text-text-muted text-xs mb-0.5",children:"[Compacted]"}),o.jsx("div",{className:"text-text-secondary text-xs whitespace-pre-wrap",children:t.content.replace(`[COMPACTED HISTORY]
|
|
286
286
|
`,"")})]});if(d)return o.jsxs("div",{className:"feed-item bg-bg-tertiary/30 border-l-2 border-accent-primary rounded-r p-2",children:[o.jsxs("div",{className:"text-accent-primary text-xs mb-0.5",children:["Tool: ",t.toolName]}),o.jsxs("pre",{className:"text-text-secondary text-xs whitespace-pre-wrap overflow-x-auto max-h-32",children:[t.content.slice(0,500),t.content.length>500&&"..."]})]});if(t.messageKind==="workflow-started")try{const f=JSON.parse(t.content);return o.jsx(tB,{data:f})}catch{}if(t.messageKind==="task-completed")try{const f=JSON.parse(t.content);return o.jsx(eB,{data:f})}catch{}return t.messageKind==="context-reset"?o.jsxs("div",{className:"flex items-center gap-4 mb-6 text-text-muted text-xs uppercase tracking-wide",children:[o.jsx("div",{className:"flex-1 border-t border-border"}),o.jsx("span",{children:t.content}),o.jsx("div",{className:"flex-1 border-t border-border"})]}):t.messageKind==="auto-prompt"&&t.isSystemGenerated?o.jsx(sB,{message:t}):t.messageKind==="correction"&&t.isSystemGenerated?o.jsx("div",{className:"flex justify-end feed-item",children:o.jsxs("div",{className:"max-w-[75%] rounded p-2 bg-amber-500/10 border border-amber-500/30",children:[o.jsx("span",{className:"text-[10px] block mb-0.5 text-amber-400",children:"System"}),o.jsx("div",{className:"whitespace-pre-wrap text-sm text-amber-200 italic",children:t.content})]})}):l?o.jsx(iB,{message:t,messageIndex:s,sessionId:a}):o.jsx("div",{className:"flex justify-start feed-item",children:o.jsx("div",{className:"max-w-[75%] rounded p-2 bg-bg-tertiary text-text-primary",children:o.jsx(ds,{content:t.content})})})}),aB={verifier:"Verification",code_reviewer:"Code Review",test_generator:"Test Generation",debugger:"Debug"};function oB(e){return{backgroundColor:`${e}20`,color:e,borderColor:`${e}4d`}}function U0(e,t){return t||e>85?"text-accent-error":e>60?"text-accent-warning":"text-text-muted"}function lB({contextState:e}){const{currentTokens:t,maxTokens:n,compactionCount:s,dangerZone:a}=e,l=Math.round(t/n*100);return o.jsxs("div",{className:"flex items-center gap-1.5 text-[10px]",children:[o.jsxs("span",{className:U0(l,a),children:[pu(t),"/",pu(n)]}),o.jsxs("span",{className:U0(l,a),children:["(",l,"%)"]}),o.jsx(t1,{percent:l,dangerZone:a,size:"sm"}),a&&o.jsx("span",{className:"text-accent-error animate-pulse",children:"Low!"}),s>0&&o.jsxs("span",{className:"text-text-muted bg-bg-tertiary px-1 rounded",children:[s,"x"]})]})}const cB=D.memo(function({messages:t,subAgentType:n,subAgentId:s,isStreaming:a}){const l=D.useRef(null),u=D.useRef(null),[c,d]=D.useState(!1),f=gt(L=>L.defaults),m=gt(L=>L.userItems),p=[...f,...m],_=we(L=>L.subAgentContextStates[s]),{showThinking:x,showVerboseToolOutput:w}=Pu(),{isAutoScrollActive:C,setAutoScroll:v}=Yu(u,null);D.useEffect(()=>{a||v(!0)},[a]);const S=D.useCallback(()=>{const L=!c;d(L),L&&setTimeout(()=>{var A;(A=l.current)==null||A.scrollIntoView({block:"start",behavior:"smooth"})},220)},[c]),b=p.find(L=>L.id===n),y=(b==null?void 0:b.name)??aB[n]??n,E=ol(p,n),N=oB(E),T=t.filter(L=>L.role!=="tool");return o.jsxs("div",{ref:l,className:"feed-item border border-border rounded overflow-hidden bg-secondary",children:[o.jsxs("div",{className:"w-full flex items-center justify-between px-2 py-1 border-b relative",style:N,children:[o.jsx("span",{className:"text-xs font-medium",children:y}),o.jsx("div",{className:"absolute left-1/2 -translate-x-1/2",children:_&&o.jsx(lB,{contextState:_})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("button",{type:"button",className:"text-sm text-text-muted hover:text-text-primary flex items-center gap-1.5",onClick:()=>v(!C),children:[o.jsx("span",{className:`w-1 h-1 rounded-full ${C?"bg-accent-success":"border border-text-muted"}`}),"live"]}),o.jsxs("button",{type:"button",className:"text-[10px] px-1.5 py-0.5 rounded bg-bg-tertiary",onClick:S,children:[c?"▼":"▶"," Expand"]})]})]}),o.jsx("div",{ref:u,className:`${c?"max-h-[calc(100vh-10rem)]":"max-h-80"} overflow-y-auto p-2 transition-[max-height] duration-200`,children:T.map(L=>L.role==="assistant"?o.jsx(cg,{message:L,showStats:!0,showThinking:x,showVerboseToolOutput:w},L.id):o.jsx(IC,{message:L,isLastAssistantMessage:!1},L.id))})]})});function PC(e,t,n=!0){D.useEffect(()=>{if(!n)return;const s=a=>{var l;(l=e.current)!=null&&l.contains(a.target)||t()};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[e,t,n])}const uB=[],dB=D.memo(function({displayItems:t,scrollContainerRef:n,highlightedMessageId:s}){const a=we(R=>{var M,G;return((G=(M=R.currentSession)==null?void 0:M.metadataEntries)==null?void 0:G.criteria)??uB}),l=we(R=>{var M;return(M=R.currentSession)==null?void 0:M.id}),u=we(R=>{var M;return(M=R.currentSession)==null?void 0:M.mode}),c=we(R=>{var M;return(M=R.currentSession)==null?void 0:M.phase}),d=we(R=>R.error),f=we(R=>R.clearError),m=we(R=>R.acceptAndBuild),p=$u(),{showThinking:_,showVerboseToolOutput:x,showStats:w,showAgentDefinitions:C,showWorkflowBars:v}=Pu(),S=jt(R=>R.defaults),b=jt(R=>R.userItems),y=[...S,...b],E=u==="planner",N=a.length>0,T=c==="done",L=t.some(R=>R.type==="message"&&R.message.role==="assistant"),A=E&&N&&!p&&L&&!T;return o.jsxs("div",{ref:n,"data-testid":"chat-scroll-container",className:"flex-1 min-w-0 overflow-y-auto relative bg-primary",children:[o.jsx("div",{className:"pt-4",children:t.map((R,M)=>{if(R.type==="context-divider")return o.jsxs("div",{"data-item-index":M,className:"flex items-center gap-2 feed-item px-2 md:px-4",children:[o.jsx("div",{className:"flex-1 border-t border-border"}),o.jsx("span",{className:"text-[10px] text-text-muted font-medium px-2",children:"Earlier context summarized"}),o.jsx("div",{className:"flex-1 border-t border-border"})]},M);if(R.type==="subagent"){const U=R.messages.some(V=>V.isStreaming);return o.jsx("div",{"data-item-index":M,className:"px-2 md:px-4",children:o.jsx(cB,{messages:R.messages,subAgentType:R.subAgentType,subAgentId:R.subAgentId,isStreaming:U})},M)}if(R.type==="criteria-batch")return o.jsx("div",{"data-item-index":M,className:"feed-item px-2 md:px-4",children:o.jsx(MC,{toolCalls:R.toolCalls,criteria:a})},M);const G=R.message;if(G.role==="assistant")return o.jsx("div",{"data-item-index":M,className:"px-2 md:px-4",children:o.jsx(cg,{message:G,showStats:w,showThinking:_,showVerboseToolOutput:x})},M);const W=!C&&G.messageKind==="auto-prompt",O=!v&&(G.messageKind==="workflow-started"||G.messageKind==="task-completed");return W||O?null:o.jsx("div",{"data-item-index":M,className:"px-2 md:px-4",children:o.jsx("div",{"data-message-id":G.id,className:s===G.id?"rounded animate-highlight-fade":void 0,children:o.jsx(IC,{message:G,messageIndex:M,sessionId:l,isLastAssistantMessage:!1})})},M)})}),o.jsxs("div",{className:"px-2 md:px-4 pb-4",children:[d&&o.jsx("div",{className:"feed-item bg-red-500/10 border border-red-500/50 rounded p-2",children:o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-red-400 text-sm font-medium",children:d.code}),o.jsx("div",{className:"text-red-300 text-xs mt-0.5",children:d.message})]}),o.jsx(bl,{onClick:f,className:"text-red-400 hover:text-red-300 p-0.5",size:"sm"})]})}),A&&o.jsx("div",{className:"flex justify-center gap-2 feed-item flex-wrap",children:y.map(R=>{const M=R.color??"#3b82f6",G=parseInt(M.slice(1,3),16),W=parseInt(M.slice(3,5),16),O=parseInt(M.slice(5,7),16),U=`rgba(${G},${W},${O},0.12)`,V=`rgba(${G},${W},${O},0.22)`,z=`rgba(${G},${W},${O},0.25)`;return o.jsx(hB,{workflowName:R.name,color:M,bg:U,bgHover:V,border:z,subGroups:R.subGroups,onLaunch:X=>m(R.id,void 0,void 0,X)},R.id)})})]})]})});function hB({workflowName:e,color:t,bg:n,bgHover:s,border:a,subGroups:l,onLaunch:u}){const[c,d]=D.useState(!1),f=D.useRef(null);return PC(f,()=>d(!1),c),o.jsxs("div",{className:"relative flex",children:[o.jsxs("button",{onClick:()=>u(),"data-testid":"workflow-run-button",className:"px-4 py-1.5 rounded-l text-sm font-medium transition-colors",style:{backgroundColor:n,color:t,border:`1px solid ${a}`,borderRight:"none"},onMouseEnter:m=>{m.currentTarget.style.backgroundColor=s},onMouseLeave:m=>{m.currentTarget.style.backgroundColor=n},children:["▶ ",e]}),l&&l.length>0&&o.jsxs("div",{ref:f,className:"relative",children:[o.jsx("button",{onClick:()=>d(!c),className:"px-1.5 py-1.5 rounded-r text-sm font-medium transition-colors",style:{backgroundColor:n,color:t,border:`1px solid ${a}`},onMouseEnter:m=>{m.currentTarget.style.backgroundColor=s},onMouseLeave:m=>{m.currentTarget.style.backgroundColor=n},children:"⋮"}),c&&o.jsxs("div",{className:"absolute top-full right-0 mt-1 w-40 bg-bg-secondary border border-border rounded-lg shadow-xl z-50 overflow-hidden",children:[o.jsx("button",{onClick:()=>{u(),d(!1)},className:"w-full text-left px-3 py-2 text-sm text-text-primary hover:bg-bg-tertiary transition-colors",children:"Full workflow"}),o.jsx("div",{className:"border-t border-border/50"}),l.map(m=>o.jsx("button",{onClick:()=>{u(m),d(!1)},className:"w-full text-left px-3 py-2 text-sm text-text-primary hover:bg-bg-tertiary transition-colors",children:m},m))]})]})]})}function fB(){const e=we(s=>s.connectionStatus),t=we(s=>s.reconnect);if(e==="connected")return null;const n=e==="reconnecting";return o.jsxs("div",{className:`
|
|
287
287
|
flex items-center justify-between px-4 py-2
|
|
288
288
|
text-sm font-medium
|
package/dist/web/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<link rel="icon" type="image/png" href="/assets/openfox.png" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, height=device-height" />
|
|
7
7
|
<title>OpenFox</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-D61sh6SX.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-Bq9rJ9jH.css">
|
|
10
10
|
<link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script></head>
|
|
11
11
|
<body class="bg-bg-primary text-text-primary font-mono">
|
package/dist/web/sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
if(!self.define){let s,l={};const e=(e,r)=>(e=new URL(e+".js",r).href,l[e]||new Promise(l=>{if("document"in self){const s=document.createElement("script");s.src=e,s.onload=l,document.head.appendChild(s)}else s=e,importScripts(e),l()}).then(()=>{let s=l[e];if(!s)throw new Error(`Module ${e} didn’t register its module`);return s}));self.define=(r,i)=>{const n=s||("document"in self?document.currentScript.src:"")||location.href;if(l[n])return;let u={};const a=s=>e(s,n),t={module:{uri:n},exports:u,require:a};l[n]=Promise.all(r.map(s=>t[s]||a(s))).then(s=>(i(...s),u))}}define(["./workbox-8c29f6e4"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"index.html",revision:"c3b851ae62fbfb34368dbc108c69fe2c"},{url:"__inspect__.js",revision:"878b477aaf1805c028895f3d3bb4af71"},{url:"assets/zig-VOosw3JB.js",revision:null},{url:"assets/zenscript-DVFEvuxE.js",revision:null},{url:"assets/yaml-Buea-lGh.js",revision:null},{url:"assets/xsl-CtQFsRM5.js",revision:null},{url:"assets/xml-sdJ4AIDG.js",revision:null},{url:"assets/wolfram-lXgVvXCa.js",revision:null},{url:"assets/wit-5i3qLPDT.js",revision:null},{url:"assets/wikitext-BhOHFoWU.js",revision:null},{url:"assets/wgsl-Dx-B1_4e.js",revision:null},{url:"assets/wenyan-BV7otONQ.js",revision:null},{url:"assets/wasm-MzD3tlZU.js",revision:null},{url:"assets/wasm-CG6Dc4jp.js",revision:null},{url:"assets/vyper-CDx5xZoG.js",revision:null},{url:"assets/vue-vine-BoDAl6tE.js",revision:null},{url:"assets/vue-html-AaS7Mt5G.js",revision:null},{url:"assets/vue-D2xRrEX4.js",revision:null},{url:"assets/vitesse-light-CVO1_9PV.js",revision:null},{url:"assets/vitesse-dark-D0r3Knsf.js",revision:null},{url:"assets/vitesse-black-Bkuqu6BP.js",revision:null},{url:"assets/viml-CJc9bBzg.js",revision:null},{url:"assets/vhdl-CeAyd5Ju.js",revision:null},{url:"assets/vesper-DRje8inN.js",revision:null},{url:"assets/verilog-BQ8w6xss.js",revision:null},{url:"assets/vb-D17OF-Vu.js",revision:null},{url:"assets/vala-CsfeWuGM.js",revision:null},{url:"assets/v-BcVCzyr7.js",revision:null},{url:"assets/typst-DHCkPAjA.js",revision:null},{url:"assets/typespec-CAFt9gP4.js",revision:null},{url:"assets/typescript-BPQ3VLAy.js",revision:null},{url:"assets/twig-CW1WmMYd.js",revision:null},{url:"assets/turtle-BsS91CYL.js",revision:null},{url:"assets/tsx-COt5Ahok.js",revision:null},{url:"assets/tsv-B_m7g4N7.js",revision:null},{url:"assets/ts-tags-D351s5mN.js",revision:null},{url:"assets/toml-vGWfd6FD.js",revision:null},{url:"assets/tokyo-night-hegEt444.js",revision:null},{url:"assets/tex-idrVyKtj.js",revision:null},{url:"assets/terraform-BETggiCN.js",revision:null},{url:"assets/templ-DhtptRzy.js",revision:null},{url:"assets/tcl-dwOrl1Do.js",revision:null},{url:"assets/tasl-QIJgUcNo.js",revision:null},{url:"assets/talonscript-CkByrt1z.js",revision:null},{url:"assets/systemd-4A_iFExJ.js",revision:null},{url:"assets/system-verilog-CnnmHF94.js",revision:null},{url:"assets/synthwave-84-CbfX1IO0.js",revision:null},{url:"assets/swift-D82vCrfD.js",revision:null},{url:"assets/svelte-Cy7k_4gC.js",revision:null},{url:"assets/surrealql-Bq5Q-fJD.js",revision:null},{url:"assets/stylus-BEDo0Tqx.js",revision:null},{url:"assets/stata-DI20mbqo.js",revision:null},{url:"assets/ssh-config-_ykCGR6B.js",revision:null},{url:"assets/sql-CRqJ_cUM.js",revision:null},{url:"assets/splunk-BtCnVYZw.js",revision:null},{url:"assets/sparql-rVzFXLq3.js",revision:null},{url:"assets/soy-8wufbnw4.js",revision:null},{url:"assets/solidity-rGO070M0.js",revision:null},{url:"assets/solarized-light-L9t79GZl.js",revision:null},{url:"assets/solarized-dark-DXbdFlpD.js",revision:null},{url:"assets/snazzy-light-Bw305WKR.js",revision:null},{url:"assets/smalltalk-BERRCDM3.js",revision:null},{url:"assets/slack-ochin-DqwNpetd.js",revision:null},{url:"assets/slack-dark-BthQWCQV.js",revision:null},{url:"assets/shellsession-BADoaaVG.js",revision:null},{url:"assets/shellscript-Yzrsuije.js",revision:null},{url:"assets/shaderlab-Dg9Lc6iA.js",revision:null},{url:"assets/sdbl-DVxCFoDh.js",revision:null},{url:"assets/scss-D5BDwBP9.js",revision:null},{url:"assets/scheme-C98Dy4si.js",revision:null},{url:"assets/scala-C151Ov-r.js",revision:null},{url:"assets/sass-Cj5Yp3dK.js",revision:null},{url:"assets/sas-DEy46yEz.js",revision:null},{url:"assets/rust-B1yitclQ.js",revision:null},{url:"assets/ruby-DyJCeAvU.js",revision:null},{url:"assets/rst-CpCqk9r5.js",revision:null},{url:"assets/rosmsg-BJDFO7_C.js",revision:null},{url:"assets/rose-pine-qdsjHGoJ.js",revision:null},{url:"assets/rose-pine-moon-D4_iv3hh.js",revision:null},{url:"assets/rose-pine-dawn-DHQR4-dF.js",revision:null},{url:"assets/ron-D8l8udqQ.js",revision:null},{url:"assets/riscv-BM1_JUlF.js",revision:null},{url:"assets/rel-C3B-1QV4.js",revision:null},{url:"assets/regexp-CDVJQ6XC.js",revision:null},{url:"assets/reg-C-SQnVFl.js",revision:null},{url:"assets/red-bN70gL4F.js",revision:null},{url:"assets/razor-BjBPvh-w.js",revision:null},{url:"assets/raku-DXvB9xmW.js",revision:null},{url:"assets/racket-BqYA7rlc.js",revision:null},{url:"assets/r-Dspwwk_N.js",revision:null},{url:"assets/qss-IeuSbFQv.js",revision:null},{url:"assets/qmldir-C8lEn-DE.js",revision:null},{url:"assets/qml-3beO22l8.js",revision:null},{url:"assets/python-B6aJPvgy.js",revision:null},{url:"assets/purescript-CklMAg4u.js",revision:null},{url:"assets/puppet-BMWR74SV.js",revision:null},{url:"assets/pug-DKIMFp6K.js",revision:null},{url:"assets/proto-C7zT0LnQ.js",revision:null},{url:"assets/prolog-CbFg5uaA.js",revision:null},{url:"assets/prisma-Dd19v3D-.js",revision:null},{url:"assets/powershell-Dpen1YoG.js",revision:null},{url:"assets/powerquery-CEu0bR-o.js",revision:null},{url:"assets/postcss-CXtECtnM.js",revision:null},{url:"assets/polar-C0HS_06l.js",revision:null},{url:"assets/poimandres-CS3Unz2-.js",revision:null},{url:"assets/po-BTJTHyun.js",revision:null},{url:"assets/plsql-ChMvpjG-.js",revision:null},{url:"assets/plastic-3e1v2bzS.js",revision:null},{url:"assets/pkl-u5AG7uiY.js",revision:null},{url:"assets/php-Csjmro_R.js",revision:null},{url:"assets/perl-B9cMNwum.js",revision:null},{url:"assets/pascal-D93ZcfNL.js",revision:null},{url:"assets/openscad-C4EeE6gA.js",revision:null},{url:"assets/one-light-C3Wv6jpd.js",revision:null},{url:"assets/one-dark-pro-DVMEJ2y_.js",revision:null},{url:"assets/odin-BBf5iR-q.js",revision:null},{url:"assets/ocaml-C0hk2d4L.js",revision:null},{url:"assets/objective-cpp-CLxacb5B.js",revision:null},{url:"assets/objective-c-DXmwc3jG.js",revision:null},{url:"assets/nushell-Cz2AlsmD.js",revision:null},{url:"assets/nord-Ddv68eIx.js",revision:null},{url:"assets/nix-CwoSXNpI.js",revision:null},{url:"assets/nim-BIad80T-.js",revision:null},{url:"assets/night-owl-light-CMTm3GFP.js",revision:null},{url:"assets/night-owl-C39BiMTA.js",revision:null},{url:"assets/nginx-BpAMiNFr.js",revision:null},{url:"assets/nextflow-groovy-vE_lwT2v.js",revision:null},{url:"assets/nextflow-C-mBbutL.js",revision:null},{url:"assets/narrat-DRg8JJMk.js",revision:null},{url:"assets/move-IF9eRakj.js",revision:null},{url:"assets/moonbit-_H4v1dQx.js",revision:null},{url:"assets/monokai-D4h5O-jR.js",revision:null},{url:"assets/mojo-rZm6bMo-.js",revision:null},{url:"assets/mipsasm-CKIfxQSi.js",revision:null},{url:"assets/min-light-CTRr51gU.js",revision:null},{url:"assets/min-dark-CafNBF8u.js",revision:null},{url:"assets/mermaid-mWjccvbQ.js",revision:null},{url:"assets/mdx-Cmh6b_Ma.js",revision:null},{url:"assets/mdc-DTYItulj.js",revision:null},{url:"assets/matlab-D7o27uSR.js",revision:null},{url:"assets/material-theme-palenight-Csfq5Kiy.js",revision:null},{url:"assets/material-theme-ocean-CyktbL80.js",revision:null},{url:"assets/material-theme-lighter-B0m2ddpp.js",revision:null},{url:"assets/material-theme-darker-BfHTSMKl.js",revision:null},{url:"assets/material-theme-D5KoaKCx.js",revision:null},{url:"assets/marko-DjSrsDqO.js",revision:null},{url:"assets/markdown-Cvjx9yec.js",revision:null},{url:"assets/make-CHLpvVh8.js",revision:null},{url:"assets/luau-KW6xsasC.js",revision:null},{url:"assets/lua-BaeVxFsk.js",revision:null},{url:"assets/logo-BtOb2qkB.js",revision:null},{url:"assets/log-2UxHyX5q.js",revision:null},{url:"assets/llvm-DjAJT7YJ.js",revision:null},{url:"assets/liquid-C0sCDyMI.js",revision:null},{url:"assets/light-plus-B7mTdjB0.js",revision:null},{url:"assets/less-B1dDrJ26.js",revision:null},{url:"assets/lean-BZvkOJ9d.js",revision:null},{url:"assets/latex-CaSxy8MP.js",revision:null},{url:"assets/laserwave-DUszq2jm.js",revision:null},{url:"assets/kusto-wEQ09or8.js",revision:null},{url:"assets/kotlin-BdnUsdx6.js",revision:null},{url:"assets/kdl-DV7GczEv.js",revision:null},{url:"assets/kanagawa-wave-DWedfzmr.js",revision:null},{url:"assets/kanagawa-lotus-CfQXZHmo.js",revision:null},{url:"assets/kanagawa-dragon-CkXjmgJE.js",revision:null},{url:"assets/just-CUsbIsdP.js",revision:null},{url:"assets/julia-D7OTSIA_.js",revision:null},{url:"assets/jsx-g9-lgVsj.js",revision:null},{url:"assets/jssm-C2t-YnRu.js",revision:null},{url:"assets/jsonnet-DFQXde-d.js",revision:null},{url:"assets/jsonl-DcaNXYhu.js",revision:null},{url:"assets/jsonc-Des-eS-w.js",revision:null},{url:"assets/json5-C9tS-k6U.js",revision:null},{url:"assets/json-Cp-IABpG.js",revision:null},{url:"assets/jison-wvAkD_A8.js",revision:null},{url:"assets/jinja-f2NsQr07.js",revision:null},{url:"assets/javascript-wDzz0qaB.js",revision:null},{url:"assets/java-CylS5w8V.js",revision:null},{url:"assets/ini-BEwlwnbL.js",revision:null},{url:"assets/index-Bq9rJ9jH.css",revision:null},{url:"assets/index-00migM5L.js",revision:null},{url:"assets/imba-DGztddWO.js",revision:null},{url:"assets/hy-DFXneXwc.js",revision:null},{url:"assets/hxml-Bvhsp5Yf.js",revision:null},{url:"assets/hurl-irOxFIW8.js",revision:null},{url:"assets/http-jrhK8wxY.js",revision:null},{url:"assets/html2canvas.esm-QH1iLAAe.js",revision:null},{url:"assets/html-pp8916En.js",revision:null},{url:"assets/html-derivative-DlHx6ybY.js",revision:null},{url:"assets/houston-DnULxvSX.js",revision:null},{url:"assets/horizon-bright-CUuTKBJd.js",revision:null},{url:"assets/horizon-BUw7H-hv.js",revision:null},{url:"assets/hlsl-D3lLCCz7.js",revision:null},{url:"assets/hjson-D5-asLiD.js",revision:null},{url:"assets/hcl-BWvSN4gD.js",revision:null},{url:"assets/haxe-CzTSHFRz.js",revision:null},{url:"assets/haskell-Df6bDoY_.js",revision:null},{url:"assets/handlebars-BpdQsYii.js",revision:null},{url:"assets/haml-D5jkg6IW.js",revision:null},{url:"assets/hack-DbPARsA_.js",revision:null},{url:"assets/gruvbox-light-soft-hJgmCMqR.js",revision:null},{url:"assets/gruvbox-light-medium-DRw_LuNl.js",revision:null},{url:"assets/gruvbox-light-hard-CH1njM8p.js",revision:null},{url:"assets/gruvbox-dark-soft-CVdnzihN.js",revision:null},{url:"assets/gruvbox-dark-medium-GsRaNv29.js",revision:null},{url:"assets/gruvbox-dark-hard-CFHQjOhq.js",revision:null},{url:"assets/groovy-gcz8RCvz.js",revision:null},{url:"assets/graphql-ChdNCCLP.js",revision:null},{url:"assets/go-C27-OAKa.js",revision:null},{url:"assets/gnuplot-DdkO51Og.js",revision:null},{url:"assets/gn-n2N0HUVH.js",revision:null},{url:"assets/glsl-DplSGwfg.js",revision:null},{url:"assets/glimmer-ts-BfAWNZQY.js",revision:null},{url:"assets/glimmer-js-ByusRIyA.js",revision:null},{url:"assets/gleam-BspZqrRM.js",revision:null},{url:"assets/github-light-high-contrast-BfjtVDDH.js",revision:null},{url:"assets/github-light-default-D7oLnXFd.js",revision:null},{url:"assets/github-light-DAi9KRSo.js",revision:null},{url:"assets/github-dark-high-contrast-E3gJ1_iC.js",revision:null},{url:"assets/github-dark-dimmed-DH5Ifo-i.js",revision:null},{url:"assets/github-dark-default-Cuk6v7N8.js",revision:null},{url:"assets/github-dark-DHJKELXO.js",revision:null},{url:"assets/git-rebase-r7XF79zn.js",revision:null},{url:"assets/git-commit-F4YmCXRG.js",revision:null},{url:"assets/gherkin-DyxjwDmM.js",revision:null},{url:"assets/genie-D0YGMca9.js",revision:null},{url:"assets/gdshader-DkwncUOv.js",revision:null},{url:"assets/gdscript-C5YyOfLZ.js",revision:null},{url:"assets/gdresource-BOOCDP_w.js",revision:null},{url:"assets/fsharp-CXgrBDvD.js",revision:null},{url:"assets/fortran-free-form-BxgE0vQu.js",revision:null},{url:"assets/fortran-fixed-form-CkoXwp7k.js",revision:null},{url:"assets/fluent-C4IJs8-o.js",revision:null},{url:"assets/fish-BvzEVeQv.js",revision:null},{url:"assets/fennel-BYunw83y.js",revision:null},{url:"assets/everforest-light-C8M2exoo.js",revision:null},{url:"assets/everforest-dark-BgDCqdQA.js",revision:null},{url:"assets/erlang-DsQrWhSR.js",revision:null},{url:"assets/erb-Dm6A9KJ5.js",revision:null},{url:"assets/emacs-lisp-CXvaQtF9.js",revision:null},{url:"assets/elm-DbKCFpqz.js",revision:null},{url:"assets/elixir-CkH2-t6x.js",revision:null},{url:"assets/edge-FbVlp4U3.js",revision:null},{url:"assets/dream-maker-BtqSS_iP.js",revision:null},{url:"assets/dracula-soft-BXkSAIEj.js",revision:null},{url:"assets/dracula-BzJJZx-M.js",revision:null},{url:"assets/dotenv-Da5cRb03.js",revision:null},{url:"assets/docker-BcOcwvcX.js",revision:null},{url:"assets/diff-D97Zzqfu.js",revision:null},{url:"assets/desktop-BmXAJ9_W.js",revision:null},{url:"assets/dax-CEL-wOlO.js",revision:null},{url:"assets/dart-bE4Kk8sk.js",revision:null},{url:"assets/dark-plus-C3mMm8J8.js",revision:null},{url:"assets/d-85-TOEBH.js",revision:null},{url:"assets/cypher-COkxafJQ.js",revision:null},{url:"assets/cue-D82EKSYY.js",revision:null},{url:"assets/csv-fuZLfV_i.js",revision:null},{url:"assets/css-CLj8gQPS.js",revision:null},{url:"assets/csharp-DSvCPggb.js",revision:null},{url:"assets/crystal-DGywbUpC.js",revision:null},{url:"assets/cpp-UfJy6YNI.js",revision:null},{url:"assets/coq-DkFqJrB1.js",revision:null},{url:"assets/common-lisp-Cg-RD9OK.js",revision:null},{url:"assets/coffee-Ch7k5sss.js",revision:null},{url:"assets/codeql-DsOJ9woJ.js",revision:null},{url:"assets/codeowners-Bp6g37R7.js",revision:null},{url:"assets/cobol-nBiQ_Alo.js",revision:null},{url:"assets/cmake-D1j8_8rp.js",revision:null},{url:"assets/clojure-P80f7IUj.js",revision:null},{url:"assets/clarity-D53aC0YG.js",revision:null},{url:"assets/catppuccin-mocha-D87Tk5Gz.js",revision:null},{url:"assets/catppuccin-macchiato-DQyhUUbL.js",revision:null},{url:"assets/catppuccin-latte-C9dUb6Cb.js",revision:null},{url:"assets/catppuccin-frappe-DFWUc33u.js",revision:null},{url:"assets/cairo-KRGpt6FW.js",revision:null},{url:"assets/cadence-Bv_4Rxtq.js",revision:null},{url:"assets/c3-MRO5bC_T.js",revision:null},{url:"assets/c-BIGW1oBm.js",revision:null},{url:"assets/bsl-BO_Y6i37.js",revision:null},{url:"assets/blade-2xfisSek.js",revision:null},{url:"assets/bird2-BIv1doCn.js",revision:null},{url:"assets/bicep-Bmn6On1c.js",revision:null},{url:"assets/bibtex-CHM0blh-.js",revision:null},{url:"assets/berry-uYugtg8r.js",revision:null},{url:"assets/beancount-k_qm7-4y.js",revision:null},{url:"assets/bat-BkioyH1T.js",revision:null},{url:"assets/ballerina-BFfxhgS-.js",revision:null},{url:"assets/ayu-mirage-32ctXXKs.js",revision:null},{url:"assets/ayu-light-BA47KaF1.js",revision:null},{url:"assets/ayu-dark-DYE7WIF3.js",revision:null},{url:"assets/awk-DMzUqQB5.js",revision:null},{url:"assets/aurora-x-D-2ljcwZ.js",revision:null},{url:"assets/astro-HNnZUWAn.js",revision:null},{url:"assets/asm-D_Q5rh1f.js",revision:null},{url:"assets/asciidoc-Ve4PFQV2.js",revision:null},{url:"assets/ara-BRHolxvo.js",revision:null},{url:"assets/applescript-Co6uUVPk.js",revision:null},{url:"assets/apl-CORt7UWP.js",revision:null},{url:"assets/apex-Dqspr-GT.js",revision:null},{url:"assets/apache-Pmp26Uib.js",revision:null},{url:"assets/angular-ts-BrjP3tb8.js",revision:null},{url:"assets/angular-html-DA-rfuFy.js",revision:null},{url:"assets/andromeeda-C4gqWexZ.js",revision:null},{url:"assets/ada-bCR0ucgS.js",revision:null},{url:"assets/actionscript-3-CoDkCxhg.js",revision:null},{url:"assets/abap-BdImnpbu.js",revision:null},{url:"assets/openfox-192.png",revision:"79feeb86d692c274854e37959a7dae67"},{url:"assets/openfox-512.png",revision:"fee24b214220594b4f595a467e73036e"},{url:"manifest.webmanifest",revision:"c25f372c782e623ab1e768a8dfe350ca"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))});
|
|
1
|
+
if(!self.define){let s,l={};const e=(e,r)=>(e=new URL(e+".js",r).href,l[e]||new Promise(l=>{if("document"in self){const s=document.createElement("script");s.src=e,s.onload=l,document.head.appendChild(s)}else s=e,importScripts(e),l()}).then(()=>{let s=l[e];if(!s)throw new Error(`Module ${e} didn’t register its module`);return s}));self.define=(r,i)=>{const n=s||("document"in self?document.currentScript.src:"")||location.href;if(l[n])return;let u={};const a=s=>e(s,n),t={module:{uri:n},exports:u,require:a};l[n]=Promise.all(r.map(s=>t[s]||a(s))).then(s=>(i(...s),u))}}define(["./workbox-8c29f6e4"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"index.html",revision:"004cc945af53af6f6b1c9675d2245b8c"},{url:"__inspect__.js",revision:"878b477aaf1805c028895f3d3bb4af71"},{url:"assets/zig-VOosw3JB.js",revision:null},{url:"assets/zenscript-DVFEvuxE.js",revision:null},{url:"assets/yaml-Buea-lGh.js",revision:null},{url:"assets/xsl-CtQFsRM5.js",revision:null},{url:"assets/xml-sdJ4AIDG.js",revision:null},{url:"assets/wolfram-lXgVvXCa.js",revision:null},{url:"assets/wit-5i3qLPDT.js",revision:null},{url:"assets/wikitext-BhOHFoWU.js",revision:null},{url:"assets/wgsl-Dx-B1_4e.js",revision:null},{url:"assets/wenyan-BV7otONQ.js",revision:null},{url:"assets/wasm-MzD3tlZU.js",revision:null},{url:"assets/wasm-CG6Dc4jp.js",revision:null},{url:"assets/vyper-CDx5xZoG.js",revision:null},{url:"assets/vue-vine-BoDAl6tE.js",revision:null},{url:"assets/vue-html-AaS7Mt5G.js",revision:null},{url:"assets/vue-D2xRrEX4.js",revision:null},{url:"assets/vitesse-light-CVO1_9PV.js",revision:null},{url:"assets/vitesse-dark-D0r3Knsf.js",revision:null},{url:"assets/vitesse-black-Bkuqu6BP.js",revision:null},{url:"assets/viml-CJc9bBzg.js",revision:null},{url:"assets/vhdl-CeAyd5Ju.js",revision:null},{url:"assets/vesper-DRje8inN.js",revision:null},{url:"assets/verilog-BQ8w6xss.js",revision:null},{url:"assets/vb-D17OF-Vu.js",revision:null},{url:"assets/vala-CsfeWuGM.js",revision:null},{url:"assets/v-BcVCzyr7.js",revision:null},{url:"assets/typst-DHCkPAjA.js",revision:null},{url:"assets/typespec-CAFt9gP4.js",revision:null},{url:"assets/typescript-BPQ3VLAy.js",revision:null},{url:"assets/twig-CW1WmMYd.js",revision:null},{url:"assets/turtle-BsS91CYL.js",revision:null},{url:"assets/tsx-COt5Ahok.js",revision:null},{url:"assets/tsv-B_m7g4N7.js",revision:null},{url:"assets/ts-tags-D351s5mN.js",revision:null},{url:"assets/toml-vGWfd6FD.js",revision:null},{url:"assets/tokyo-night-hegEt444.js",revision:null},{url:"assets/tex-idrVyKtj.js",revision:null},{url:"assets/terraform-BETggiCN.js",revision:null},{url:"assets/templ-DhtptRzy.js",revision:null},{url:"assets/tcl-dwOrl1Do.js",revision:null},{url:"assets/tasl-QIJgUcNo.js",revision:null},{url:"assets/talonscript-CkByrt1z.js",revision:null},{url:"assets/systemd-4A_iFExJ.js",revision:null},{url:"assets/system-verilog-CnnmHF94.js",revision:null},{url:"assets/synthwave-84-CbfX1IO0.js",revision:null},{url:"assets/swift-D82vCrfD.js",revision:null},{url:"assets/svelte-Cy7k_4gC.js",revision:null},{url:"assets/surrealql-Bq5Q-fJD.js",revision:null},{url:"assets/stylus-BEDo0Tqx.js",revision:null},{url:"assets/stata-DI20mbqo.js",revision:null},{url:"assets/ssh-config-_ykCGR6B.js",revision:null},{url:"assets/sql-CRqJ_cUM.js",revision:null},{url:"assets/splunk-BtCnVYZw.js",revision:null},{url:"assets/sparql-rVzFXLq3.js",revision:null},{url:"assets/soy-8wufbnw4.js",revision:null},{url:"assets/solidity-rGO070M0.js",revision:null},{url:"assets/solarized-light-L9t79GZl.js",revision:null},{url:"assets/solarized-dark-DXbdFlpD.js",revision:null},{url:"assets/snazzy-light-Bw305WKR.js",revision:null},{url:"assets/smalltalk-BERRCDM3.js",revision:null},{url:"assets/slack-ochin-DqwNpetd.js",revision:null},{url:"assets/slack-dark-BthQWCQV.js",revision:null},{url:"assets/shellsession-BADoaaVG.js",revision:null},{url:"assets/shellscript-Yzrsuije.js",revision:null},{url:"assets/shaderlab-Dg9Lc6iA.js",revision:null},{url:"assets/sdbl-DVxCFoDh.js",revision:null},{url:"assets/scss-D5BDwBP9.js",revision:null},{url:"assets/scheme-C98Dy4si.js",revision:null},{url:"assets/scala-C151Ov-r.js",revision:null},{url:"assets/sass-Cj5Yp3dK.js",revision:null},{url:"assets/sas-DEy46yEz.js",revision:null},{url:"assets/rust-B1yitclQ.js",revision:null},{url:"assets/ruby-DyJCeAvU.js",revision:null},{url:"assets/rst-CpCqk9r5.js",revision:null},{url:"assets/rosmsg-BJDFO7_C.js",revision:null},{url:"assets/rose-pine-qdsjHGoJ.js",revision:null},{url:"assets/rose-pine-moon-D4_iv3hh.js",revision:null},{url:"assets/rose-pine-dawn-DHQR4-dF.js",revision:null},{url:"assets/ron-D8l8udqQ.js",revision:null},{url:"assets/riscv-BM1_JUlF.js",revision:null},{url:"assets/rel-C3B-1QV4.js",revision:null},{url:"assets/regexp-CDVJQ6XC.js",revision:null},{url:"assets/reg-C-SQnVFl.js",revision:null},{url:"assets/red-bN70gL4F.js",revision:null},{url:"assets/razor-BjBPvh-w.js",revision:null},{url:"assets/raku-DXvB9xmW.js",revision:null},{url:"assets/racket-BqYA7rlc.js",revision:null},{url:"assets/r-Dspwwk_N.js",revision:null},{url:"assets/qss-IeuSbFQv.js",revision:null},{url:"assets/qmldir-C8lEn-DE.js",revision:null},{url:"assets/qml-3beO22l8.js",revision:null},{url:"assets/python-B6aJPvgy.js",revision:null},{url:"assets/purescript-CklMAg4u.js",revision:null},{url:"assets/puppet-BMWR74SV.js",revision:null},{url:"assets/pug-DKIMFp6K.js",revision:null},{url:"assets/proto-C7zT0LnQ.js",revision:null},{url:"assets/prolog-CbFg5uaA.js",revision:null},{url:"assets/prisma-Dd19v3D-.js",revision:null},{url:"assets/powershell-Dpen1YoG.js",revision:null},{url:"assets/powerquery-CEu0bR-o.js",revision:null},{url:"assets/postcss-CXtECtnM.js",revision:null},{url:"assets/polar-C0HS_06l.js",revision:null},{url:"assets/poimandres-CS3Unz2-.js",revision:null},{url:"assets/po-BTJTHyun.js",revision:null},{url:"assets/plsql-ChMvpjG-.js",revision:null},{url:"assets/plastic-3e1v2bzS.js",revision:null},{url:"assets/pkl-u5AG7uiY.js",revision:null},{url:"assets/php-Csjmro_R.js",revision:null},{url:"assets/perl-B9cMNwum.js",revision:null},{url:"assets/pascal-D93ZcfNL.js",revision:null},{url:"assets/openscad-C4EeE6gA.js",revision:null},{url:"assets/one-light-C3Wv6jpd.js",revision:null},{url:"assets/one-dark-pro-DVMEJ2y_.js",revision:null},{url:"assets/odin-BBf5iR-q.js",revision:null},{url:"assets/ocaml-C0hk2d4L.js",revision:null},{url:"assets/objective-cpp-CLxacb5B.js",revision:null},{url:"assets/objective-c-DXmwc3jG.js",revision:null},{url:"assets/nushell-Cz2AlsmD.js",revision:null},{url:"assets/nord-Ddv68eIx.js",revision:null},{url:"assets/nix-CwoSXNpI.js",revision:null},{url:"assets/nim-BIad80T-.js",revision:null},{url:"assets/night-owl-light-CMTm3GFP.js",revision:null},{url:"assets/night-owl-C39BiMTA.js",revision:null},{url:"assets/nginx-BpAMiNFr.js",revision:null},{url:"assets/nextflow-groovy-vE_lwT2v.js",revision:null},{url:"assets/nextflow-C-mBbutL.js",revision:null},{url:"assets/narrat-DRg8JJMk.js",revision:null},{url:"assets/move-IF9eRakj.js",revision:null},{url:"assets/moonbit-_H4v1dQx.js",revision:null},{url:"assets/monokai-D4h5O-jR.js",revision:null},{url:"assets/mojo-rZm6bMo-.js",revision:null},{url:"assets/mipsasm-CKIfxQSi.js",revision:null},{url:"assets/min-light-CTRr51gU.js",revision:null},{url:"assets/min-dark-CafNBF8u.js",revision:null},{url:"assets/mermaid-mWjccvbQ.js",revision:null},{url:"assets/mdx-Cmh6b_Ma.js",revision:null},{url:"assets/mdc-DTYItulj.js",revision:null},{url:"assets/matlab-D7o27uSR.js",revision:null},{url:"assets/material-theme-palenight-Csfq5Kiy.js",revision:null},{url:"assets/material-theme-ocean-CyktbL80.js",revision:null},{url:"assets/material-theme-lighter-B0m2ddpp.js",revision:null},{url:"assets/material-theme-darker-BfHTSMKl.js",revision:null},{url:"assets/material-theme-D5KoaKCx.js",revision:null},{url:"assets/marko-DjSrsDqO.js",revision:null},{url:"assets/markdown-Cvjx9yec.js",revision:null},{url:"assets/make-CHLpvVh8.js",revision:null},{url:"assets/luau-KW6xsasC.js",revision:null},{url:"assets/lua-BaeVxFsk.js",revision:null},{url:"assets/logo-BtOb2qkB.js",revision:null},{url:"assets/log-2UxHyX5q.js",revision:null},{url:"assets/llvm-DjAJT7YJ.js",revision:null},{url:"assets/liquid-C0sCDyMI.js",revision:null},{url:"assets/light-plus-B7mTdjB0.js",revision:null},{url:"assets/less-B1dDrJ26.js",revision:null},{url:"assets/lean-BZvkOJ9d.js",revision:null},{url:"assets/latex-CaSxy8MP.js",revision:null},{url:"assets/laserwave-DUszq2jm.js",revision:null},{url:"assets/kusto-wEQ09or8.js",revision:null},{url:"assets/kotlin-BdnUsdx6.js",revision:null},{url:"assets/kdl-DV7GczEv.js",revision:null},{url:"assets/kanagawa-wave-DWedfzmr.js",revision:null},{url:"assets/kanagawa-lotus-CfQXZHmo.js",revision:null},{url:"assets/kanagawa-dragon-CkXjmgJE.js",revision:null},{url:"assets/just-CUsbIsdP.js",revision:null},{url:"assets/julia-D7OTSIA_.js",revision:null},{url:"assets/jsx-g9-lgVsj.js",revision:null},{url:"assets/jssm-C2t-YnRu.js",revision:null},{url:"assets/jsonnet-DFQXde-d.js",revision:null},{url:"assets/jsonl-DcaNXYhu.js",revision:null},{url:"assets/jsonc-Des-eS-w.js",revision:null},{url:"assets/json5-C9tS-k6U.js",revision:null},{url:"assets/json-Cp-IABpG.js",revision:null},{url:"assets/jison-wvAkD_A8.js",revision:null},{url:"assets/jinja-f2NsQr07.js",revision:null},{url:"assets/javascript-wDzz0qaB.js",revision:null},{url:"assets/java-CylS5w8V.js",revision:null},{url:"assets/ini-BEwlwnbL.js",revision:null},{url:"assets/index-D61sh6SX.js",revision:null},{url:"assets/index-Bq9rJ9jH.css",revision:null},{url:"assets/imba-DGztddWO.js",revision:null},{url:"assets/hy-DFXneXwc.js",revision:null},{url:"assets/hxml-Bvhsp5Yf.js",revision:null},{url:"assets/hurl-irOxFIW8.js",revision:null},{url:"assets/http-jrhK8wxY.js",revision:null},{url:"assets/html2canvas.esm-QH1iLAAe.js",revision:null},{url:"assets/html-pp8916En.js",revision:null},{url:"assets/html-derivative-DlHx6ybY.js",revision:null},{url:"assets/houston-DnULxvSX.js",revision:null},{url:"assets/horizon-bright-CUuTKBJd.js",revision:null},{url:"assets/horizon-BUw7H-hv.js",revision:null},{url:"assets/hlsl-D3lLCCz7.js",revision:null},{url:"assets/hjson-D5-asLiD.js",revision:null},{url:"assets/hcl-BWvSN4gD.js",revision:null},{url:"assets/haxe-CzTSHFRz.js",revision:null},{url:"assets/haskell-Df6bDoY_.js",revision:null},{url:"assets/handlebars-BpdQsYii.js",revision:null},{url:"assets/haml-D5jkg6IW.js",revision:null},{url:"assets/hack-DbPARsA_.js",revision:null},{url:"assets/gruvbox-light-soft-hJgmCMqR.js",revision:null},{url:"assets/gruvbox-light-medium-DRw_LuNl.js",revision:null},{url:"assets/gruvbox-light-hard-CH1njM8p.js",revision:null},{url:"assets/gruvbox-dark-soft-CVdnzihN.js",revision:null},{url:"assets/gruvbox-dark-medium-GsRaNv29.js",revision:null},{url:"assets/gruvbox-dark-hard-CFHQjOhq.js",revision:null},{url:"assets/groovy-gcz8RCvz.js",revision:null},{url:"assets/graphql-ChdNCCLP.js",revision:null},{url:"assets/go-C27-OAKa.js",revision:null},{url:"assets/gnuplot-DdkO51Og.js",revision:null},{url:"assets/gn-n2N0HUVH.js",revision:null},{url:"assets/glsl-DplSGwfg.js",revision:null},{url:"assets/glimmer-ts-BfAWNZQY.js",revision:null},{url:"assets/glimmer-js-ByusRIyA.js",revision:null},{url:"assets/gleam-BspZqrRM.js",revision:null},{url:"assets/github-light-high-contrast-BfjtVDDH.js",revision:null},{url:"assets/github-light-default-D7oLnXFd.js",revision:null},{url:"assets/github-light-DAi9KRSo.js",revision:null},{url:"assets/github-dark-high-contrast-E3gJ1_iC.js",revision:null},{url:"assets/github-dark-dimmed-DH5Ifo-i.js",revision:null},{url:"assets/github-dark-default-Cuk6v7N8.js",revision:null},{url:"assets/github-dark-DHJKELXO.js",revision:null},{url:"assets/git-rebase-r7XF79zn.js",revision:null},{url:"assets/git-commit-F4YmCXRG.js",revision:null},{url:"assets/gherkin-DyxjwDmM.js",revision:null},{url:"assets/genie-D0YGMca9.js",revision:null},{url:"assets/gdshader-DkwncUOv.js",revision:null},{url:"assets/gdscript-C5YyOfLZ.js",revision:null},{url:"assets/gdresource-BOOCDP_w.js",revision:null},{url:"assets/fsharp-CXgrBDvD.js",revision:null},{url:"assets/fortran-free-form-BxgE0vQu.js",revision:null},{url:"assets/fortran-fixed-form-CkoXwp7k.js",revision:null},{url:"assets/fluent-C4IJs8-o.js",revision:null},{url:"assets/fish-BvzEVeQv.js",revision:null},{url:"assets/fennel-BYunw83y.js",revision:null},{url:"assets/everforest-light-C8M2exoo.js",revision:null},{url:"assets/everforest-dark-BgDCqdQA.js",revision:null},{url:"assets/erlang-DsQrWhSR.js",revision:null},{url:"assets/erb-Dm6A9KJ5.js",revision:null},{url:"assets/emacs-lisp-CXvaQtF9.js",revision:null},{url:"assets/elm-DbKCFpqz.js",revision:null},{url:"assets/elixir-CkH2-t6x.js",revision:null},{url:"assets/edge-FbVlp4U3.js",revision:null},{url:"assets/dream-maker-BtqSS_iP.js",revision:null},{url:"assets/dracula-soft-BXkSAIEj.js",revision:null},{url:"assets/dracula-BzJJZx-M.js",revision:null},{url:"assets/dotenv-Da5cRb03.js",revision:null},{url:"assets/docker-BcOcwvcX.js",revision:null},{url:"assets/diff-D97Zzqfu.js",revision:null},{url:"assets/desktop-BmXAJ9_W.js",revision:null},{url:"assets/dax-CEL-wOlO.js",revision:null},{url:"assets/dart-bE4Kk8sk.js",revision:null},{url:"assets/dark-plus-C3mMm8J8.js",revision:null},{url:"assets/d-85-TOEBH.js",revision:null},{url:"assets/cypher-COkxafJQ.js",revision:null},{url:"assets/cue-D82EKSYY.js",revision:null},{url:"assets/csv-fuZLfV_i.js",revision:null},{url:"assets/css-CLj8gQPS.js",revision:null},{url:"assets/csharp-DSvCPggb.js",revision:null},{url:"assets/crystal-DGywbUpC.js",revision:null},{url:"assets/cpp-UfJy6YNI.js",revision:null},{url:"assets/coq-DkFqJrB1.js",revision:null},{url:"assets/common-lisp-Cg-RD9OK.js",revision:null},{url:"assets/coffee-Ch7k5sss.js",revision:null},{url:"assets/codeql-DsOJ9woJ.js",revision:null},{url:"assets/codeowners-Bp6g37R7.js",revision:null},{url:"assets/cobol-nBiQ_Alo.js",revision:null},{url:"assets/cmake-D1j8_8rp.js",revision:null},{url:"assets/clojure-P80f7IUj.js",revision:null},{url:"assets/clarity-D53aC0YG.js",revision:null},{url:"assets/catppuccin-mocha-D87Tk5Gz.js",revision:null},{url:"assets/catppuccin-macchiato-DQyhUUbL.js",revision:null},{url:"assets/catppuccin-latte-C9dUb6Cb.js",revision:null},{url:"assets/catppuccin-frappe-DFWUc33u.js",revision:null},{url:"assets/cairo-KRGpt6FW.js",revision:null},{url:"assets/cadence-Bv_4Rxtq.js",revision:null},{url:"assets/c3-MRO5bC_T.js",revision:null},{url:"assets/c-BIGW1oBm.js",revision:null},{url:"assets/bsl-BO_Y6i37.js",revision:null},{url:"assets/blade-2xfisSek.js",revision:null},{url:"assets/bird2-BIv1doCn.js",revision:null},{url:"assets/bicep-Bmn6On1c.js",revision:null},{url:"assets/bibtex-CHM0blh-.js",revision:null},{url:"assets/berry-uYugtg8r.js",revision:null},{url:"assets/beancount-k_qm7-4y.js",revision:null},{url:"assets/bat-BkioyH1T.js",revision:null},{url:"assets/ballerina-BFfxhgS-.js",revision:null},{url:"assets/ayu-mirage-32ctXXKs.js",revision:null},{url:"assets/ayu-light-BA47KaF1.js",revision:null},{url:"assets/ayu-dark-DYE7WIF3.js",revision:null},{url:"assets/awk-DMzUqQB5.js",revision:null},{url:"assets/aurora-x-D-2ljcwZ.js",revision:null},{url:"assets/astro-HNnZUWAn.js",revision:null},{url:"assets/asm-D_Q5rh1f.js",revision:null},{url:"assets/asciidoc-Ve4PFQV2.js",revision:null},{url:"assets/ara-BRHolxvo.js",revision:null},{url:"assets/applescript-Co6uUVPk.js",revision:null},{url:"assets/apl-CORt7UWP.js",revision:null},{url:"assets/apex-Dqspr-GT.js",revision:null},{url:"assets/apache-Pmp26Uib.js",revision:null},{url:"assets/angular-ts-BrjP3tb8.js",revision:null},{url:"assets/angular-html-DA-rfuFy.js",revision:null},{url:"assets/andromeeda-C4gqWexZ.js",revision:null},{url:"assets/ada-bCR0ucgS.js",revision:null},{url:"assets/actionscript-3-CoDkCxhg.js",revision:null},{url:"assets/abap-BdImnpbu.js",revision:null},{url:"assets/openfox-192.png",revision:"79feeb86d692c274854e37959a7dae67"},{url:"assets/openfox-512.png",revision:"fee24b214220594b4f595a467e73036e"},{url:"manifest.webmanifest",revision:"c25f372c782e623ab1e768a8dfe350ca"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openfox",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.22",
|
|
4
4
|
"description": "Local-LLM-first agentic coding assistant",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"dev": "OPENFOX_DEV=true tsx watch src/cli/dev.ts --no-browser",
|
|
28
28
|
"dev:web": "vite --config web/vite.config.ts",
|
|
29
29
|
"build": "FORCE_COLOR=1 npm run build:server && FORCE_COLOR=1 npm run build:web",
|
|
30
|
-
"build:server": "FORCE_COLOR=1 tsup && mkdir -p dist/command-defaults dist/skill-defaults dist/agent-defaults dist/workflow-defaults && cp src/server/commands/defaults/*.md dist/command-defaults/ && cp src/server/skills/defaults/*.md dist/skill-defaults/ && cp src/server/agents/defaults/*.md dist/agent-defaults/ && cp src/server/workflows/defaults/*.json dist/workflow-defaults/ && cp src/cli/update.sh dist/cli/ && chmod +x dist/cli/update.sh && cp package.json dist/ && cp -r src/server/public dist/server/",
|
|
30
|
+
"build:server": "FORCE_COLOR=1 tsup && mkdir -p dist/command-defaults dist/skill-defaults dist/agent-defaults dist/workflow-defaults && cp src/server/commands/defaults/*.md dist/command-defaults/ && cp src/server/skills/defaults/*.md dist/skill-defaults/ && cp src/server/agents/defaults/*.md dist/agent-defaults/ && cp src/server/workflows/defaults/*.json dist/workflow-defaults/ && cp src/server/lsp/languages.json dist/languages.json && cp src/cli/update.sh dist/cli/ && chmod +x dist/cli/update.sh && cp package.json dist/ && cp -r src/server/public dist/server/",
|
|
31
31
|
"build:web": "cd web && FORCE_COLOR=1 vite build --outDir ../dist/web",
|
|
32
32
|
"start": "node dist/cli/index.js",
|
|
33
33
|
"start:dev": "node dist/cli/dev.js",
|