@alisio/server 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/index.js +6 -0
  2. package/dist/routes/files.js +16 -0
  3. package/dist/routes/management.js +24 -2
  4. package/dist/routes/scratch.d.ts +8 -0
  5. package/dist/routes/scratch.js +77 -0
  6. package/dist/sse/inflight.js +6 -1
  7. package/dist/web/assets/{AgentPicker-Cl47N-cj.js → AgentPicker-BH-tahQA.js} +1 -1
  8. package/dist/web/assets/{AgentsModal-h5tfJEeX.js → AgentsModal-C3tHYoW2.js} +2 -2
  9. package/dist/web/assets/ArtifactPanel-BSU3p4Me.js +5 -0
  10. package/dist/web/assets/{BtwPanel-Dq4_mguL.js → BtwPanel-BDofONkj.js} +1 -1
  11. package/dist/web/assets/{ChangelogDialog-DKij7ZgR.js → ChangelogDialog-B5zSEON8.js} +1 -1
  12. package/dist/web/assets/{CopyButton-DsWaaJHr.js → CopyButton-CMHaee_H.js} +1 -1
  13. package/dist/web/assets/{GoalBar-Dk2Cst9Y.js → GoalBar-JOJIfBUX.js} +1 -1
  14. package/dist/web/assets/{MemoryTab-C9XUOnpA.js → MemoryTab-C3rFMsRH.js} +1 -1
  15. package/dist/web/assets/PermissionsMenu-9enV9rs4.js +1 -0
  16. package/dist/web/assets/PlanReviewPanel-Bv7qk6nv.js +1 -0
  17. package/dist/web/assets/{PlanViewer-CeY05Jhh.js → PlanViewer-D05Fnb6D.js} +1 -1
  18. package/dist/web/assets/ScratchTab-Z-Klh15S.js +1 -0
  19. package/dist/web/assets/ScratchTab-c1awgFsM.css +1 -0
  20. package/dist/web/assets/SettingsModal-Bax8Y4UT.js +1 -0
  21. package/dist/web/assets/{SpreadsheetPanel-CaPNTLXV.js → SpreadsheetPanel-BIo8rckB.js} +1 -1
  22. package/dist/web/assets/{TasksTab-CxB3XymZ.js → TasksTab-C1obfmnr.js} +1 -1
  23. package/dist/web/assets/TextPreview-DPHScW4M.js +1 -0
  24. package/dist/web/assets/TrajectoryTab-DcmVZkfm.js +1 -0
  25. package/dist/web/assets/{agents.module-SodPbgcJ.js → agents.module-Brrjzfmx.js} +1 -1
  26. package/dist/web/assets/app-B_dNXnFa.js +3 -0
  27. package/dist/web/assets/{es-CLK996jq.js → es-DwvaEaQO.js} +1 -1
  28. package/dist/web/assets/forge-page-BuIg49Im.js +1 -0
  29. package/dist/web/assets/{goal-ChMqHxdJ.js → goal-D5qC2_WT.js} +1 -1
  30. package/dist/web/assets/{i18n-BZax1Psk.js → i18n-BGlOHOa5.js} +1 -1
  31. package/dist/web/assets/{icons-nQx96NOf.js → icons-BWy-tv8u.js} +1 -1
  32. package/dist/web/assets/index-CcgO2jIy.js +79 -0
  33. package/dist/web/assets/index-DoBakzIL.css +1 -0
  34. package/dist/web/assets/{jsxRuntime-C-CM9h-f.js → jsxRuntime-CU76aMLO.js} +1 -1
  35. package/dist/web/assets/{panel-Drs6RETP.js → panel-INm2KdPq.js} +1 -1
  36. package/dist/web/assets/settings-DdWABXsT.css +1 -0
  37. package/dist/web/assets/settings.module-BClxMWCR.js +1 -0
  38. package/dist/web/assets/{shared-CyriJLTb.js → shared-DF0YqvHb.js} +1 -1
  39. package/dist/web/assets/{strings-im5j6AkX.js → strings-Dn5dLhWb.js} +1 -1
  40. package/dist/web/assets/{tasks-CwT_L2cD.js → tasks-Dlp_xs_J.js} +1 -1
  41. package/dist/web/assets/{view-siaTb2If.js → view-B4LIdGiS.js} +1 -1
  42. package/dist/web/assets/view-BRtrf5cD.js +1 -0
  43. package/dist/web/assets/view-CWZ2W6Nn.js +1 -0
  44. package/dist/web/assets/{view-2dNgOSpB.js → view-Ce_7xHIu.js} +1 -1
  45. package/dist/web/assets/{view-B8k9wN-a.js → view-CjV4GnT8.js} +1 -1
  46. package/dist/web/assets/{view-BEMrRtHS.js → view-CpEZmnjL.js} +1 -1
  47. package/dist/web/assets/{view-CYrBJLQz.js → view-D5UQr-hn.js} +1 -1
  48. package/dist/web/assets/{view-D7gclAAt.js → view-DOYsFrMs.js} +1 -1
  49. package/dist/web/assets/{view-5vTUSCyJ.js → view-Dm0LR0Rz.js} +1 -1
  50. package/dist/web/index.html +8 -8
  51. package/package.json +4 -4
  52. package/dist/web/assets/ArtifactPanel-C6ipdg_g.js +0 -5
  53. package/dist/web/assets/PermissionsMenu-DPV6xncG.js +0 -1
  54. package/dist/web/assets/PlanReviewPanel-TPQ-MbDK.js +0 -1
  55. package/dist/web/assets/SettingsModal-CPOy4DEJ.js +0 -1
  56. package/dist/web/assets/TrajectoryTab-BChapHNU.js +0 -1
  57. package/dist/web/assets/app-D95B_PAO.js +0 -3
  58. package/dist/web/assets/index-Bfl4EFzp.js +0 -74
  59. package/dist/web/assets/index-DtwMJ910.css +0 -1
  60. package/dist/web/assets/settings-DTaiQjCk.css +0 -1
  61. package/dist/web/assets/settings.module-DoTtRfeo.js +0 -1
  62. package/dist/web/assets/view-BKUCEmox.js +0 -1
  63. package/dist/web/assets/view-chgkTSYd.js +0 -1
  64. /package/dist/web/assets/{ArtifactPanel-Cfi5Lgi8.css → TextPreview-Cfi5Lgi8.css} +0 -0
package/dist/index.js CHANGED
@@ -40,6 +40,7 @@ import { registerManagementRoutes, WorkspaceRecycler } from "./routes/management
40
40
  import { registerPluginViewRoutes } from "./routes/plugin-views.js";
41
41
  import { registerPromptRoutes } from "./routes/prompts.js";
42
42
  import { registerProviderRoutes } from "./routes/providers.js";
43
+ import { registerScratchRoutes } from "./routes/scratch.js";
43
44
  import { registerSessionViewRoutes } from "./routes/session-views.js";
44
45
  import { registerSessionRoutes } from "./routes/sessions.js";
45
46
  import { registerSideQuestionRoutes } from "./routes/side-questions.js";
@@ -389,6 +390,11 @@ export async function startServer(options = {}) {
389
390
  ...(options.views?.maxBytes !== undefined ? { maxBytes: options.views.maxBytes } : {}),
390
391
  });
391
392
  registerFileRoutes(router, { workspaces, catalog, sessions });
393
+ registerScratchRoutes(router, {
394
+ sessions,
395
+ catalog,
396
+ ...(base.readOnly ? { readOnly: true } : {}),
397
+ });
392
398
  registerBlobRoutes(router, { blobs });
393
399
  registerArtifactRoutes(router, {
394
400
  artifacts,
@@ -283,6 +283,22 @@ export function registerFileRoutes(router, ctx) {
283
283
  after = last.seq;
284
284
  }
285
285
  }
286
+ // Nested writes of Forja scripts (`js_run`, `python_run`) never appear as `write` calls of the
287
+ // session: their journal rows carry the paths instead (D-31).
288
+ for (const id of ids) {
289
+ for (const nested of catalog.forgeWriteCalls(id)) {
290
+ for (const path of nested.paths) {
291
+ const absolute = resolve(workspace, path);
292
+ if (!inside(workspace, absolute))
293
+ continue;
294
+ const rel = toPosix(relative(workspace, absolute));
295
+ const at = nested.startedAt ?? 0;
296
+ const prev = latest.get(rel);
297
+ if (!prev || at >= prev.at)
298
+ latest.set(rel, { ...(nested.runId ? { runId: nested.runId } : {}), at });
299
+ }
300
+ }
301
+ }
286
302
  const top = latest.size ? await gitRoot(workspace) : undefined;
287
303
  const marks = top ? await gitStatus(workspace, top) : new Map();
288
304
  const files = [...latest.entries()]
@@ -383,11 +383,29 @@ export function registerManagementRoutes(router, ctx, recycler) {
383
383
  runtime: app.analysis.runtime,
384
384
  oci: () => app.analysis.oci.runtime(),
385
385
  janitor: app.analysis.janitor,
386
+ backends: (signal) => app.analysis.backends(signal),
386
387
  enabled: app.analysis.enabled,
387
388
  readOnly: !!ctx.base.readOnly,
388
389
  });
389
390
  return { body };
390
391
  });
392
+ // Forja: the engines with their live state. JavaScript first, then the Python backends (the
393
+ // same descriptors `GET /api/analysis` reports under `backends`).
394
+ router.get("/api/forge", async ({ url }) => {
395
+ const opened = await open(url.searchParams.get("workspace"));
396
+ const { app } = opened;
397
+ const status = await app.forge.runtime.status();
398
+ const python = await app.analysis.backends();
399
+ const body = {
400
+ ...status,
401
+ engines: [...status.engines, ...python],
402
+ python: {
403
+ runtime: app.config.analysis.runtime,
404
+ isolation: app.config.analysis.isolation,
405
+ },
406
+ };
407
+ return { body };
408
+ });
391
409
  router.patch("/api/settings", async ({ req }) => {
392
410
  const input = validate(await readJson(req), {
393
411
  workspace: { check: is.nonEmpty(4096), required: true },
@@ -413,8 +431,12 @@ export function registerManagementRoutes(router, ctx, recycler) {
413
431
  if (key.startsWith("agents."))
414
432
  recycler.announce(opened.id, ["agents"]);
415
433
  // Analysis tools are registered when the workspace application starts: rebuild it (after its
416
- // runs) so `analysis.enabled` applies without restarting the server.
417
- if (key === "analysis.enabled" || key === "analysis.smartDashboard" || key === "tasks.enabled")
434
+ // runs) so `analysis.enabled` (and the Forja switches) apply without restarting the server.
435
+ if (key === "analysis.enabled" ||
436
+ key === "analysis.smartDashboard" ||
437
+ key === "tasks.enabled" ||
438
+ key === "forge.javascript.enabled" ||
439
+ key === "forge.guides.enabled")
418
440
  void recycler.request(opened.id).catch(() => undefined);
419
441
  return { body: { message: `Saved ${key}` } };
420
442
  });
@@ -0,0 +1,8 @@
1
+ import { type SQLiteStore } from "@alisio/core";
2
+ import type { SessionService } from "../host/sessions.ts";
3
+ import type { Router } from "../http/router.ts";
4
+ export declare function registerScratchRoutes(router: Router, ctx: {
5
+ sessions: SessionService;
6
+ catalog: SQLiteStore;
7
+ readOnly?: boolean;
8
+ }): void;
@@ -0,0 +1,77 @@
1
+ /**
2
+ * The scratchpad of a session over HTTP (Forja spec §9.4, §11.1): list, download one file and empty
3
+ * it. The scratchpad belongs to the ROOT session (children share it). Responses carry names relative
4
+ * to the folder, never a host path; downloads never follow a symlink; emptying is refused with
5
+ * `409 runs_active` while a Forja execution of the session still runs.
6
+ */
7
+ import { pipeline } from "node:stream/promises";
8
+ import { emptyScratch, ForgeError, listScratch, openScratchFile, } from "@alisio/core";
9
+ import { HttpError } from "../http/errors.js";
10
+ import { attachmentDisposition } from "./artifacts.js";
11
+ const TERMINAL = new Set(["succeeded", "failed", "cancelled", "timed_out"]);
12
+ export function registerScratchRoutes(router, ctx) {
13
+ const { sessions } = ctx;
14
+ /**
15
+ * The session, its application and its scratchpad folder. `available` is false when the gate of
16
+ * the write root is closed (engine not verified, `--read-only`, Forja off); `pad` is undefined
17
+ * until the model first writes there: looking never creates it.
18
+ */
19
+ async function scratchOf(sid) {
20
+ const session = sessions.get(sid);
21
+ const opened = await sessions.app(session);
22
+ const view = opened.app.forge.scratchpadView;
23
+ const state = view ? await view(session.id) : { available: false };
24
+ return { session, opened, available: state.available, pad: state.path };
25
+ }
26
+ router.get("/api/sessions/:sid/scratch", async ({ params }) => {
27
+ const { opened, available, pad } = await scratchOf(params.sid ?? "");
28
+ const quotaBytes = opened.app.config.forge.scratch.maxBytes;
29
+ if (!available) {
30
+ const body = { available: false, files: [], usedBytes: 0, quotaBytes };
31
+ return { body };
32
+ }
33
+ if (!pad) {
34
+ const body = { available: true, files: [], usedBytes: 0, quotaBytes };
35
+ return { body };
36
+ }
37
+ const { files, usedBytes, truncated } = await listScratch(pad);
38
+ const body = {
39
+ available: true,
40
+ files,
41
+ usedBytes,
42
+ quotaBytes,
43
+ ...(truncated ? { truncated: true } : {}),
44
+ };
45
+ return { body };
46
+ });
47
+ router.get("/api/sessions/:sid/scratch/files/*", async ({ params, res }) => {
48
+ const { pad } = await scratchOf(params.sid ?? "");
49
+ if (!pad)
50
+ throw new HttpError("not_found", "File not found");
51
+ const opened = await openScratchFile(pad, params["*"] ?? "").catch((error) => {
52
+ // A missing file, a link and an escape all look the same from outside.
53
+ if (error instanceof ForgeError || error.code === "ENOENT")
54
+ throw new HttpError("not_found", "File not found");
55
+ throw error;
56
+ });
57
+ res.writeHead(200, {
58
+ "Content-Type": "application/octet-stream",
59
+ "Content-Length": opened.size,
60
+ "Content-Disposition": attachmentDisposition(opened.name),
61
+ "X-Content-Type-Options": "nosniff",
62
+ "Cache-Control": "private, no-store",
63
+ });
64
+ await pipeline(opened.handle.createReadStream(), res);
65
+ return undefined;
66
+ });
67
+ router.delete("/api/sessions/:sid/scratch", async ({ params }) => {
68
+ if (ctx.readOnly)
69
+ throw new HttpError("capability_ceiling", "The scratchpad cannot be emptied in read-only mode");
70
+ const { session, opened, pad } = await scratchOf(params.sid ?? "");
71
+ const root = sessions.rootOf(session.id);
72
+ if (opened.app.forge.journal.listByRoot(root).some((execution) => !TERMINAL.has(execution.status)))
73
+ throw new HttpError("runs_active", "Wait for the running script to finish, then retry");
74
+ const body = pad ? await emptyScratch(pad) : { removed: 0, freedBytes: 0 };
75
+ return { body };
76
+ });
77
+ }
@@ -57,7 +57,12 @@ export class InflightTracker {
57
57
  break;
58
58
  case "tool_progress": {
59
59
  const tool = run.tools.get(String(data.id));
60
- if (tool)
60
+ if (!tool)
61
+ break;
62
+ // A Forja execution reports structured progress: keep the latest one, out of the text tail.
63
+ if (data.data?.kind === "forge")
64
+ tool.forge = data.data;
65
+ else
61
66
  tool.tail = (tool.tail + progressChunk(data.data)).slice(-MAX_TAIL);
62
67
  break;
63
68
  }
@@ -1 +1 @@
1
- import{a as e,b as t,g as n,y as r}from"./i18n-BZax1Psk.js";import{a as i,d as a,k as o,o as s,t as c}from"./app-D95B_PAO.js";import{t as l}from"./jsxRuntime-C-CM9h-f.js";import{t as u}from"./icons-nQx96NOf.js";import{b as d,t as f,u as p}from"./agents.module-SodPbgcJ.js";import{t as m}from"./settings.module-DoTtRfeo.js";import{a as h,c as g,i as _,l as v,r as y}from"./shared-CyriJLTb.js";function b(){let b=g(),x=v(b?()=>a.agents(b.id):void 0,[b?.id],[`agents`]),S=v(()=>a.agentDefinitions(b?.id),[b?.id],[`agents`]),[C,w]=r(``),[T,E]=r(0),D=n(null);t(()=>{let e=document.activeElement;return D.current?.querySelector(`input`)?.focus(),()=>e?.focus()},[]);let O=()=>{i.value=!1},k=o.value?.agent??x.data?.find(e=>e.default)?.id,A=p(x.data??[],C),j=e=>{O(),c(e.id)},M=t=>{let n=d(t,S.data?.agents??[]);return n?l(y,{tone:n===`project`?`ok`:`off`,children:e(`agentsWin.scope.${n}`)}):l(y,{tone:`off`,children:t.source===`builtin`?e(`agentsWin.builtin`):e(`agentsWin.plugin`)})};return l(`div`,{class:m.backdrop,onMouseDown:e=>{e.target===e.currentTarget&&O()},children:l(`div`,{ref:D,class:`${m.dialog} ${f.picker}`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`agent-picker-title`,onKeyDown:e=>{if(e.key===`Escape`)e.preventDefault(),O();else if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=e.key===`ArrowDown`?1:-1;E(e=>A.length?(e+t+A.length)%A.length:0)}else if(e.key===`Enter`&&e.target.tagName===`INPUT`){e.preventDefault();let t=A[Math.min(T,A.length-1)];t&&j(t)}},children:[l(`div`,{class:f.pickerHead,children:[l(`div`,{class:f.listHead,children:[l(`div`,{children:[l(`h3`,{class:m.pageTitle,id:`agent-picker-title`,children:e(`agentsWin.picker`)}),l(`p`,{class:m.note,children:e(`agentsWin.pickerLead`)})]}),l(`button`,{type:`button`,class:`icon-btn`,"aria-label":e(`common.close`),onClick:O,children:l(u,{name:`x`,size:18})})]}),l(_,{value:C,label:e(`agentsWin.pickerSearch`),onInput:e=>{w(e),E(0)}})]}),l(`div`,{style:{padding:`0 18px`},children:l(h,{loading:x.loading&&!x.data,error:x.error,empty:b?void 0:`settings.noWorkspace`})}),l(`ul`,{class:f.pickerList,"aria-label":e(`agentsWin.picker`),children:[x.data&&!A.length?l(`li`,{class:m.note,children:e(`agentsWin.pickerEmpty`,{query:C})}):null,A.map((t,n)=>l(`li`,{children:l(`button`,{type:`button`,class:f.pickerItem,"data-selected":n===T,"aria-current":t.id===k?`true`:void 0,onMouseEnter:()=>E(n),onClick:()=>j(t),children:[l(`span`,{class:f.pickerTitle,children:[t.name,M(t),t.id===k?l(y,{tone:`ok`,children:e(`agentsWin.current`)}):null,t.id===`build`?l(y,{tone:`off`,children:e(`agentsWin.defaultAgent`)}):null,t.readOnly?l(y,{tone:`warn`,children:e(`agents.readOnly`)}):null]}),l(`span`,{class:m.cardText,children:t.description})]})},t.id)),l(`li`,{children:l(`button`,{type:`button`,class:f.pickerItem,onClick:()=>{O(),s.value=!0},children:l(`span`,{class:f.pickerTitle,children:[l(u,{name:`users`,size:15}),e(`agentsWin.manage`)]})})})]})]})})}export{b as AgentPicker};
1
+ import{a as e,b as t,g as n,y as r}from"./i18n-BGlOHOa5.js";import{a as i,d as a,k as o,o as s,t as c}from"./app-B_dNXnFa.js";import{t as l}from"./jsxRuntime-CU76aMLO.js";import{t as u}from"./icons-BWy-tv8u.js";import{b as d,t as f,u as p}from"./agents.module-Brrjzfmx.js";import{t as m}from"./settings.module-BClxMWCR.js";import{a as h,c as g,i as _,l as v,r as y}from"./shared-DF0YqvHb.js";function b(){let b=g(),x=v(b?()=>a.agents(b.id):void 0,[b?.id],[`agents`]),S=v(()=>a.agentDefinitions(b?.id),[b?.id],[`agents`]),[C,w]=r(``),[T,E]=r(0),D=n(null);t(()=>{let e=document.activeElement;return D.current?.querySelector(`input`)?.focus(),()=>e?.focus()},[]);let O=()=>{i.value=!1},k=o.value?.agent??x.data?.find(e=>e.default)?.id,A=p(x.data??[],C),j=e=>{O(),c(e.id)},M=t=>{let n=d(t,S.data?.agents??[]);return n?l(y,{tone:n===`project`?`ok`:`off`,children:e(`agentsWin.scope.${n}`)}):l(y,{tone:`off`,children:t.source===`builtin`?e(`agentsWin.builtin`):e(`agentsWin.plugin`)})};return l(`div`,{class:m.backdrop,onMouseDown:e=>{e.target===e.currentTarget&&O()},children:l(`div`,{ref:D,class:`${m.dialog} ${f.picker}`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`agent-picker-title`,onKeyDown:e=>{if(e.key===`Escape`)e.preventDefault(),O();else if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=e.key===`ArrowDown`?1:-1;E(e=>A.length?(e+t+A.length)%A.length:0)}else if(e.key===`Enter`&&e.target.tagName===`INPUT`){e.preventDefault();let t=A[Math.min(T,A.length-1)];t&&j(t)}},children:[l(`div`,{class:f.pickerHead,children:[l(`div`,{class:f.listHead,children:[l(`div`,{children:[l(`h3`,{class:m.pageTitle,id:`agent-picker-title`,children:e(`agentsWin.picker`)}),l(`p`,{class:m.note,children:e(`agentsWin.pickerLead`)})]}),l(`button`,{type:`button`,class:`icon-btn`,"aria-label":e(`common.close`),onClick:O,children:l(u,{name:`x`,size:18})})]}),l(_,{value:C,label:e(`agentsWin.pickerSearch`),onInput:e=>{w(e),E(0)}})]}),l(`div`,{style:{padding:`0 18px`},children:l(h,{loading:x.loading&&!x.data,error:x.error,empty:b?void 0:`settings.noWorkspace`})}),l(`ul`,{class:f.pickerList,"aria-label":e(`agentsWin.picker`),children:[x.data&&!A.length?l(`li`,{class:m.note,children:e(`agentsWin.pickerEmpty`,{query:C})}):null,A.map((t,n)=>l(`li`,{children:l(`button`,{type:`button`,class:f.pickerItem,"data-selected":n===T,"aria-current":t.id===k?`true`:void 0,onMouseEnter:()=>E(n),onClick:()=>j(t),children:[l(`span`,{class:f.pickerTitle,children:[t.name,M(t),t.id===k?l(y,{tone:`ok`,children:e(`agentsWin.current`)}):null,t.id===`build`?l(y,{tone:`off`,children:e(`agentsWin.defaultAgent`)}):null,t.readOnly?l(y,{tone:`warn`,children:e(`agents.readOnly`)}):null]}),l(`span`,{class:m.cardText,children:t.description})]})},t.id)),l(`li`,{children:l(`button`,{type:`button`,class:f.pickerItem,onClick:()=>{O(),s.value=!0},children:l(`span`,{class:f.pickerTitle,children:[l(u,{name:`users`,size:15}),e(`agentsWin.manage`)]})})})]})]})})}export{b as AgentPicker};
@@ -1,2 +1,2 @@
1
- import{T as e,_ as t,a as n,b as r,c as i,g as a,l as o,y as s}from"./i18n-BZax1Psk.js";import{Rt as c,W as l,d as u,dt as d,et as f,lt as p,o as m,pt as h}from"./app-D95B_PAO.js";import{t as g}from"./jsxRuntime-C-CM9h-f.js";import{t as _}from"./icons-nQx96NOf.js";import{t as v}from"./CopyButton-DsWaaJHr.js";import{S as y,_ as b,a as x,c as S,d as C,f as ee,g as w,h as T,i as E,l as D,m as te,n as O,o as k,p as ne,r as A,s as re,t as j,v as ie,x as ae,y as oe}from"./agents.module-SodPbgcJ.js";import{t as M}from"./settings.module-DoTtRfeo.js";import{a as N,c as P,l as F,r as I}from"./shared-CyriJLTb.js";var L=new Set([`minimal`,`low`,`medium`,`high`,`xhigh`]),R=e=>L.has(e)?n(`agentsWin.level.${e}`):e;function se(e){let[t,n]=s(!0);return g(`section`,{class:j.section,children:[g(`button`,{type:`button`,class:j.sectionHead,"aria-expanded":t,onClick:()=>n(!t),children:[g(_,{name:t?`chevronDown`:`chevronRight`,size:15}),e.title]}),t?g(`div`,{class:j.sectionBody,children:e.children}):null]})}function z(e){return g(`label`,{class:j.field,children:[g(`span`,{class:j.fieldLabel,children:[e.label,e.hint?g(`span`,{class:j.fieldHint,children:e.hint}):null]}),e.children,e.error?g(`span`,{class:j.fieldError,children:e.error}):null]})}function ce(e){let t=e.text.split(`
2
- `);return g(`section`,{class:j.code,"aria-label":n(`agentsWin.config`),children:[g(`div`,{class:j.codeHead,children:[g(`span`,{children:n(`agentsWin.config`)}),g(v,{text:()=>e.text,label:n(`agentsWin.configCopy`)})]}),g(`p`,{class:M.note,style:{margin:`8px 16px 0`},children:n(`agentsWin.configLead`)}),g(`pre`,{class:j.codeBody,children:g(`code`,{children:t.map((e,t)=>g(`span`,{class:j.codeLine,children:[g(`span`,{class:j.lineNo,"aria-hidden":`true`,children:t+1}),g(`span`,{children:y(e).map((e,t)=>g(`span`,{class:j[`tok-${e.kind}`],children:e.text},t))})]},t))})})]})}function le(e){let[t,i]=s(Date.now()),o=a(null);return r(()=>{o.current?.focus();let e=setInterval(()=>i(Date.now()),1e3);return()=>clearInterval(e)},[]),g(`div`,{class:j.overlay,role:`alertdialog`,"aria-modal":`true`,"aria-labelledby":`building-title`,"aria-describedby":`building-body`,onKeyDown:t=>{t.key===`Escape`&&(t.preventDefault(),e.onCancel())},children:g(`div`,{class:j.overlayCard,children:[g(`div`,{class:j.spinner,"aria-hidden":`true`}),g(`h3`,{class:j.overlayTitle,id:`building-title`,children:n(`agentsWin.building`)}),g(`p`,{class:M.note,id:`building-body`,role:`status`,children:n(`agentsWin.buildingBody`,{model:e.model})}),g(`div`,{class:j.progress,"aria-hidden":`true`,children:g(`div`,{class:j.progressBar})}),g(`p`,{class:M.meta,children:n(`agentsWin.buildingElapsed`,{seconds:Math.max(0,Math.round((t-e.started)/1e3))})}),g(`div`,{class:j.overlayActions,children:g(`button`,{ref:o,type:`button`,class:M.secondary,onClick:e.onCancel,children:n(`common.cancel`)})})]})})}function ue(e){let t=a(null);return r(()=>t.current?.focus(),[]),g(`div`,{class:j.overlay,role:`alertdialog`,"aria-modal":`true`,"aria-labelledby":`created-title`,onKeyDown:t=>{t.key===`Escape`&&(t.preventDefault(),e.onStay())},children:g(`div`,{class:j.overlayCard,children:[g(`h3`,{class:j.overlayTitle,id:`created-title`,children:n(`agentsWin.createdTitle`,{name:e.name})}),g(`p`,{class:M.note,children:e.live?n(`agentsWin.createdBody`):n(`agentsWin.createdRestart`)}),g(`div`,{class:j.overlayActions,children:[e.live?g(`button`,{ref:t,type:`button`,class:M.primary,onClick:e.onTry,children:n(`agentsWin.tryIt`)}):null,g(`button`,{ref:e.live?void 0:t,type:`button`,class:M.secondary,onClick:e.onStay,children:n(`agentsWin.stay`)})]})]})})}function B(i){let{workspace:a,models:o}=i,[v,y]=s(i.initial),[D,te]=s(i.saved),[P,I]=s(`setup`),[L,B]=s(``),[V,H]=s(),[U,W]=s(),[de,G]=s(!1),[K,q]=s(),[fe,pe]=s(!b());r(()=>{if(!v.model&&o?.length){let e=o.find(e=>e.active)??o[0];e&&y(t=>C({...t,model:e.reference},e.capabilities))}},[o]);let me=!D||T(v)!==T(D);r(()=>i.onDirty(me&&!!D),[me,D]);let J=re(o,v.model),Y=F(D?.id?()=>u.agentSessions(D.id):void 0,[D?.id],[`agents`]),X=i.overview?.scopes??(a?[`project`,`global`]:[`global`]),Z=e=>y(t=>({...t,...e})),he=t(()=>x(v,{origin:typeof location<`u`?location.origin:`http://127.0.0.1:4096`,...a?{workspace:a.id}:{}}),[v,a?.id]),ge=o?.find(e=>e.active)?.id??`Alisio`,Q=!!v.instructions.trim(),_e=async e=>{G(!0);try{let t={...w(e),scope:e.scope,...a?{workspace:a.id}:{}},r=e.id?await u.updateAgent(e.id,t):await u.createAgent(t),o=ee(r.agent);y(o),te(o),i.onSaved(o),e.scope===`project`&&f(),d(n(r.live?`agentsWin.saved`:`agentsWin.savedRestart`)),e.id||q({form:o,live:r.live})}catch(e){d(n(`agentsWin.saveFailed`,{message:c(e)}))}finally{G(!1)}},ve=async()=>{if(!a)return;let e=new AbortController;W(void 0),H({controller:e,started:Date.now()});let t;try{let r=await u.draftAgent({workspace:a.id,description:L.trim(),...Q?{base:{name:v.name,description:v.description,instructions:v.instructions}}:{}},e.signal);t=C(ne(v,r),J),y(t),B(``),d(n(`agentsWin.buildDone`,{model:r.generatedBy,guidance:r.guidance}))}catch(t){e.signal.aborted||W(c(t))}finally{H(void 0)}t&&!t.id&&k(t,void 0)&&await _e(t)},$=oe(v.name),ye=ie({saved:!!D?.id,workspace:!!a,sessions:Y.data?.items??[]}),be={define:[`agentsWin.step.define`,`agentsWin.step.defineBody`],runtime:[`agentsWin.step.runtime`,`agentsWin.step.runtimeBody`],session:[`agentsWin.step.session`,`agentsWin.step.sessionBody`],events:[`agentsWin.step.events`,`agentsWin.step.eventsBody`]},xe=async e=>{a&&e.id&&await h(a.id,e.id,e.model||void 0)&&(m.value=!1)};return g(`div`,{style:{position:`relative`},children:[g(`div`,{class:M.tabs,role:`tablist`,"aria-label":n(`agentsWin.title`),children:[`setup`,`sessions`].map(e=>g(`button`,{type:`button`,role:`tab`,class:M.tab,"aria-selected":P===e,onClick:()=>I(e),children:n(`agentsWin.${e}`)},e))}),P===`sessions`?g(`div`,{role:`tabpanel`,children:D?.id?g(e,{children:[g(N,{loading:Y.loading&&!Y.data,error:Y.error}),Y.data&&!Y.data.items.length?g(`p`,{class:M.note,children:n(`agentsWin.sessionsEmpty`)}):null,g(`ul`,{class:M.rows,children:(Y.data?.items??[]).map(e=>g(`li`,{class:M.row,children:g(`button`,{type:`button`,class:j.rowButton,onClick:()=>{m.value=!1,l(e.id)},children:[g(`span`,{class:M.cardName,children:e.title??n(`agentsWin.untitled`)}),g(`p`,{class:M.meta,children:[e.model,` · `,e.workspace]})]})},e.id))}),a?g(`button`,{type:`button`,class:`${M.primary} ${M.addButton}`,onClick:()=>void xe(D),children:n(`agentsWin.startSession`)}):g(`p`,{class:M.note,children:n(`agentsWin.noWorkspace`)})]}):g(`p`,{class:M.note,children:n(`agentsWin.sessionsUnsaved`)})}):g(`div`,{class:j.columns,role:`tabpanel`,children:[g(`div`,{class:j.column,children:[a?g(`section`,{class:j.assist,"aria-labelledby":`assist-title`,children:[g(`h4`,{class:j.assistTitle,id:`assist-title`,children:[g(_,{name:`sparkle`,size:16}),n(Q?`agentsWin.assistRefine`:`agentsWin.assistTitle`)]}),g(`p`,{class:M.note,children:n(Q?`agentsWin.assistRefineLead`:`agentsWin.assistLead`)}),g(`textarea`,{class:j.control,style:{minHeight:`64px`},value:L,placeholder:n(`agentsWin.assistPlaceholder`),"aria-label":n(`agentsWin.assistTitle`),maxLength:2e3,onInput:e=>B(e.target.value)}),U?g(`p`,{class:M.errorText,role:`alert`,children:n(`agentsWin.buildFailed`,{message:U})}):null,g(`div`,{class:j.assistActions,children:g(`button`,{type:`button`,class:M.primary,disabled:!!V||!Q&&!L.trim(),onClick:()=>void ve(),children:n(Q?`agentsWin.assistRefine`:`agentsWin.assistCreate`)})})]}):null,g(se,{title:n(`agentsWin.definition`),children:[g(z,{label:n(`agentsWin.name`),error:$?n(`agentsWin.nameError.${$}`):void 0,children:g(`input`,{class:j.control,value:v.name,maxLength:80,"aria-invalid":$?`true`:void 0,onInput:e=>Z({name:e.target.value})})}),g(z,{label:n(`agentsWin.description`),children:g(`input`,{class:j.control,value:v.description,maxLength:300,placeholder:n(`agentsWin.descriptionPlaceholder`),onInput:e=>Z({description:e.target.value})})}),g(z,{label:n(`agentsWin.instructions`),hint:`${v.instructions.length} / 24000`,children:g(`textarea`,{class:j.control,value:v.instructions,maxLength:24e3,placeholder:n(`agentsWin.instructionsPlaceholder`),onInput:e=>Z({instructions:e.target.value})})}),!v.id&&X.length>1?g(z,{label:n(`agentsWin.scope`),hint:n(`agentsWin.scopeHint`),children:g(`select`,{class:j.control,value:v.scope,title:i.overview?.dirs[v.scope]??``,onChange:e=>Z({scope:e.target.value}),children:X.map(e=>g(`option`,{value:e,title:i.overview?.dirs[e]??``,children:[n(`agentsWin.scope.${e}`),i.overview?.dirs[e]?` — ${ae(e,i.overview.dirs[e])}`:``]},e))})}):g(`p`,{class:M.meta,children:[n(`agentsWin.scope`),`: `,n(`agentsWin.scope.${v.scope}`)]}),v.scope===`project`&&i.overview&&!i.overview.trusted?g(`div`,{class:M.callout,role:`note`,children:[g(_,{name:`shield`,size:16}),g(`div`,{class:M.stack,children:[g(`span`,{children:n(`agentsWin.scopeUntrusted`)}),a?g(`button`,{type:`button`,class:M.secondary,style:{justifySelf:`start`},onClick:async()=>{await p(a,!0)&&i.onTrusted()},children:n(`trust.grant`)}):null]})]}):null]}),g(se,{title:n(`agentsWin.modelSection`),children:[g(z,{label:n(`agentsWin.model`),children:g(`select`,{class:j.control,value:v.model,onChange:e=>{let t=e.target.value;y(e=>C({...e,model:t},re(o,t)))},children:[g(`option`,{value:``,disabled:!0,children:n(`agentsWin.chooseModel`)}),v.model&&!o?.some(e=>e.reference===v.model)?g(`option`,{value:v.model,children:v.model}):null,(o??[]).map(e=>g(`option`,{value:e.reference,children:[e.active?n(`agentsWin.modelActive`,{name:e.name??e.id}):e.name??e.id,` `,`· `,e.providerName,e.labels.length?` — ${e.labels.join(` · `)}`:``]},e.reference))]})}),i.modelsError?g(`p`,{class:M.errorText,children:i.modelsError}):J.known?null:g(`p`,{class:j.fieldHint,children:n(`agentsWin.capsUnknown`)}),g(`div`,{class:j.settingsGrid,children:[g(z,{label:n(`agentsWin.textFormat`),children:g(`select`,{class:j.control,value:v.format,onChange:e=>Z({format:e.target.value}),children:A.filter(e=>J.textFormats.includes(e)).map(e=>g(`option`,{value:e,children:n(`agentsWin.format.${e}`)},e))})}),g(z,{label:n(`agentsWin.effort`),hint:J.reasoning?void 0:n(`agentsWin.unsupported`),children:g(`select`,{class:j.control,value:v.effort,disabled:!J.reasoning,onChange:e=>Z({effort:e.target.value}),children:[g(`option`,{value:``,children:[n(`agentsWin.modelDefault`),J.defaultEffort?` (${R(J.defaultEffort)})`:``]}),J.effortLevels.map(e=>g(`option`,{value:e,children:R(e)},e))]})}),g(z,{label:n(`agentsWin.verbosity`),hint:J.verbosity?void 0:n(`agentsWin.unsupported`),children:g(`select`,{class:j.control,value:v.verbosity,disabled:!J.verbosity,onChange:e=>Z({verbosity:e.target.value}),children:[g(`option`,{value:``,children:n(`agentsWin.modelDefault`)}),E.map(e=>g(`option`,{value:e,children:R(e)},e))]})}),g(z,{label:n(`agentsWin.summary`),hint:J.summary?void 0:n(`agentsWin.unsupported`),children:g(`select`,{class:j.control,value:v.summary,disabled:!J.summary,onChange:e=>Z({summary:e.target.value}),children:[g(`option`,{value:``,children:n(`agentsWin.modelDefault`)}),O.map(e=>g(`option`,{value:e,children:n(`agentsWin.summary.${e}`)},e))]})})]})]}),g(`button`,{type:`button`,class:`${M.primary} ${j.saveButton}`,disabled:de||!!V||!k(v,D),onClick:()=>void _e(v),children:n(`agentsWin.save`)})]}),g(`div`,{class:j.column,children:[g(ce,{text:he}),fe?g(`section`,{class:j.stepper,"aria-labelledby":`getting-started`,children:[g(`h4`,{class:j.stepperHead,id:`getting-started`,children:[n(`agentsWin.gettingStarted`),g(`button`,{type:`button`,class:`icon-btn`,"aria-label":n(`agentsWin.dismiss`),title:n(`agentsWin.dismiss`),onClick:()=>{S(),pe(!1)},children:g(_,{name:`x`,size:15})})]}),g(`ol`,{class:j.steps,children:ye.map((e,t)=>{let[r,i]=be[e.id];return g(`li`,{class:j.step,"data-done":e.done,children:[g(`span`,{class:j.stepNode,"aria-hidden":`true`,children:e.done?`✓`:t+1}),g(`div`,{children:[g(`p`,{class:j.stepTitle,children:[n(r),g(`span`,{class:`sr-only`,children:e.done?` ✓`:``})]}),g(`p`,{class:j.stepText,children:n(i)})]})]},e.id)})})]}):null]})]}),V?g(le,{model:ge,started:V.started,onCancel:()=>V.controller.abort()}):null,K?g(ue,{name:K.form.name,live:K.live&&!!a,onTry:()=>{let e=K.form;q(void 0),xe(e)},onStay:()=>q(void 0)}):null]})}var V=`alisio.agents.maximized`,H=`button:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex='0']`;function U(t){let{agent:r}=t;return g(e,{children:[g(I,{tone:r.scope===`project`?`ok`:`off`,children:n(`agentsWin.scope.${r.scope}`)}),r.overridesGlobal?g(I,{tone:`warn`,children:n(`agentsWin.overrides`)}):null,r.overriddenByProject?g(I,{tone:`off`,children:n(`agentsWin.overridden`)}):null]})}function W(){let t=P(),[l,f]=s({kind:`list`}),[p,h]=s(!1),[v,y]=s(()=>i(V)===`1`),b=a(null),x=F(()=>u.agentDefinitions(t?.id),[t?.id],[`agents`]),S=F(()=>u.agentTemplates(),[]),C=F(t?()=>u.agentModels(t.id):void 0,[t?.id]);r(()=>{let e=document.activeElement;return b.current?.querySelector(`button`)?.focus(),()=>e?.focus()},[]);let w=x.data?.defaultScope??(t?`project`:`global`),T=()=>C.data?.find(e=>e.active)?.reference??``,E=()=>l.kind===`editor`&&p&&!window.confirm(n(`agentsWin.unsavedLeave`))?!1:(h(!1),f({kind:`list`}),!0),O=()=>{(l.kind!==`editor`||!p||window.confirm(n(`agentsWin.unsavedLeave`)))&&(m.value=!1)},k=e=>f({kind:`editor`,key:`template:${e.id}:${Date.now()}`,form:te(e,w,T()),assist:!0}),ne=async e=>{if(window.confirm(n(`agentsWin.deleteConfirm`,{path:e.path})))try{let r=await u.deleteAgent(e.id,e.scope,t?.id);d(n(r.live?`agentsWin.deleted`:`agentsWin.deletedRestart`)),x.reload()}catch(e){d(c(e))}},A=x.data?.agents??[];return g(`div`,{class:M.backdrop,onMouseDown:e=>{e.target===e.currentTarget&&O()},children:g(`div`,{ref:b,class:`${M.dialog} ${j.shell}${v?` ${j.maximized}`:``}`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`agents-title`,onKeyDown:e=>{if(e.key===`Escape`&&!e.defaultPrevented&&(e.preventDefault(),l.kind===`editor`?E():O()),e.key===`Tab`){let t=[...b.current?.querySelectorAll(H)??[]],n=t[0],r=t.at(-1);e.shiftKey&&document.activeElement===n?(e.preventDefault(),r?.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n?.focus())}},children:g(`div`,{class:`${M.content} ${j.scroll}`,children:[g(`div`,{class:M.topBar,children:[g(`nav`,{class:j.breadcrumb,"aria-label":n(`agentsWin.title`),children:l.kind===`editor`?g(e,{children:[g(`button`,{type:`button`,class:j.crumbLink,onClick:E,children:n(`agentsWin.back`)}),g(_,{name:`chevronRight`,size:14}),g(`span`,{class:j.crumbCurrent,id:`agents-title`,"aria-current":`page`,children:l.form.id?l.form.name:n(`agentsWin.newAgent`)})]}):g(`span`,{class:j.crumbCurrent,id:`agents-title`,children:n(`agentsWin.title`)})}),g(`button`,{type:`button`,class:`icon-btn`,"aria-label":n(v?`agentsWin.restore`:`agentsWin.maximize`),title:n(v?`agentsWin.restore`:`agentsWin.maximize`),"aria-pressed":v,onClick:()=>{let e=!v;y(e),o(V,e?`1`:void 0)},children:g(_,{name:v?`shrink`:`expand`,size:16})}),g(`button`,{type:`button`,class:`icon-btn`,"aria-label":n(`common.close`),onClick:O,children:g(_,{name:`x`,size:18})})]}),l.kind===`editor`?g(B,{initial:l.form,...l.saved?{saved:l.saved}:{},assist:l.assist,workspace:t,overview:x.data,models:C.data,modelsError:C.error,onDirty:h,onTrusted:()=>{x.reload(),C.reload()},onSaved:e=>{x.reload(),f(t=>t.kind===`editor`?{...t,form:e,saved:e}:t)}},l.key):g(e,{children:[g(`header`,{class:`${M.intro} ${j.listHead}`,children:[g(`div`,{children:[g(`h3`,{class:M.pageTitle,children:n(`agentsWin.title`)}),g(`p`,{class:M.lead,children:n(`agentsWin.lead`)}),t?null:g(`p`,{class:M.note,children:n(`agentsWin.noWorkspace`)})]}),g(`button`,{type:`button`,class:M.primary,onClick:()=>f({kind:`editor`,key:`new:${Date.now()}`,form:D(w,T()),assist:!0}),children:n(`agentsWin.create`)})]}),g(`h4`,{class:M.listTitle,children:[n(`agentsWin.yours`),g(`span`,{class:M.count,children:A.length})]}),g(N,{loading:x.loading&&!x.data,error:x.error}),x.data&&!A.length?g(`p`,{class:M.note,children:n(`agentsWin.none`)}):null,g(`ul`,{class:M.rows,children:A.map(e=>g(`li`,{class:M.row,"data-muted":e.overriddenByProject?`true`:void 0,children:[g(`button`,{type:`button`,class:j.rowButton,onClick:()=>{let t=ee(e);f({kind:`editor`,key:`${e.scope}:${e.id}`,form:t,saved:t,assist:!1})},children:[g(`span`,{class:M.rowTitle,children:[g(`span`,{class:M.cardName,children:e.name}),g(U,{agent:e})]}),g(`p`,{class:M.cardText,children:e.description}),g(`p`,{class:M.meta,children:[e.model||`—`,` · `,g(`code`,{children:e.id})]})]}),g(`div`,{class:M.rowActions,children:g(`button`,{type:`button`,class:`icon-btn`,"aria-label":`${n(`agentsWin.delete`)} ${e.name}`,title:n(`agentsWin.delete`),onClick:()=>void ne(e),children:g(_,{name:`archive`,size:16})})})]},`${e.scope}:${e.id}`))}),g(`h4`,{class:M.listTitle,children:n(`agentsWin.templates`)}),g(N,{loading:S.loading&&!S.data,error:S.error}),g(`ul`,{class:M.grid,children:(S.data??[]).map(e=>g(`li`,{children:g(`button`,{type:`button`,class:j.templateCard,onClick:()=>k(e),children:[g(`span`,{class:j.templateName,children:e.name}),g(`span`,{class:j.templateText,children:e.description})]})},e.id))})]})]})})})}export{W as AgentsModal};
1
+ import{T as e,_ as t,a as n,b as r,c as i,g as a,l as o,y as s}from"./i18n-BGlOHOa5.js";import{W as c,d as l,et as u,ft as d,lt as f,mt as p,o as m,zt as h}from"./app-B_dNXnFa.js";import{t as g}from"./jsxRuntime-CU76aMLO.js";import{t as _}from"./icons-BWy-tv8u.js";import{t as v}from"./CopyButton-CMHaee_H.js";import{S as y,_ as b,a as x,c as S,d as C,f as ee,g as w,h as T,i as E,l as D,m as te,n as O,o as k,p as ne,r as A,s as re,t as j,v as ie,x as ae,y as oe}from"./agents.module-Brrjzfmx.js";import{t as M}from"./settings.module-BClxMWCR.js";import{a as N,c as P,l as F,r as I}from"./shared-DF0YqvHb.js";var L=new Set([`minimal`,`low`,`medium`,`high`,`xhigh`]),R=e=>L.has(e)?n(`agentsWin.level.${e}`):e;function se(e){let[t,n]=s(!0);return g(`section`,{class:j.section,children:[g(`button`,{type:`button`,class:j.sectionHead,"aria-expanded":t,onClick:()=>n(!t),children:[g(_,{name:t?`chevronDown`:`chevronRight`,size:15}),e.title]}),t?g(`div`,{class:j.sectionBody,children:e.children}):null]})}function z(e){return g(`label`,{class:j.field,children:[g(`span`,{class:j.fieldLabel,children:[e.label,e.hint?g(`span`,{class:j.fieldHint,children:e.hint}):null]}),e.children,e.error?g(`span`,{class:j.fieldError,children:e.error}):null]})}function ce(e){let t=e.text.split(`
2
+ `);return g(`section`,{class:j.code,"aria-label":n(`agentsWin.config`),children:[g(`div`,{class:j.codeHead,children:[g(`span`,{children:n(`agentsWin.config`)}),g(v,{text:()=>e.text,label:n(`agentsWin.configCopy`)})]}),g(`p`,{class:M.note,style:{margin:`8px 16px 0`},children:n(`agentsWin.configLead`)}),g(`pre`,{class:j.codeBody,children:g(`code`,{children:t.map((e,t)=>g(`span`,{class:j.codeLine,children:[g(`span`,{class:j.lineNo,"aria-hidden":`true`,children:t+1}),g(`span`,{children:y(e).map((e,t)=>g(`span`,{class:j[`tok-${e.kind}`],children:e.text},t))})]},t))})})]})}function le(e){let[t,i]=s(Date.now()),o=a(null);return r(()=>{o.current?.focus();let e=setInterval(()=>i(Date.now()),1e3);return()=>clearInterval(e)},[]),g(`div`,{class:j.overlay,role:`alertdialog`,"aria-modal":`true`,"aria-labelledby":`building-title`,"aria-describedby":`building-body`,onKeyDown:t=>{t.key===`Escape`&&(t.preventDefault(),e.onCancel())},children:g(`div`,{class:j.overlayCard,children:[g(`div`,{class:j.spinner,"aria-hidden":`true`}),g(`h3`,{class:j.overlayTitle,id:`building-title`,children:n(`agentsWin.building`)}),g(`p`,{class:M.note,id:`building-body`,role:`status`,children:n(`agentsWin.buildingBody`,{model:e.model})}),g(`div`,{class:j.progress,"aria-hidden":`true`,children:g(`div`,{class:j.progressBar})}),g(`p`,{class:M.meta,children:n(`agentsWin.buildingElapsed`,{seconds:Math.max(0,Math.round((t-e.started)/1e3))})}),g(`div`,{class:j.overlayActions,children:g(`button`,{ref:o,type:`button`,class:M.secondary,onClick:e.onCancel,children:n(`common.cancel`)})})]})})}function ue(e){let t=a(null);return r(()=>t.current?.focus(),[]),g(`div`,{class:j.overlay,role:`alertdialog`,"aria-modal":`true`,"aria-labelledby":`created-title`,onKeyDown:t=>{t.key===`Escape`&&(t.preventDefault(),e.onStay())},children:g(`div`,{class:j.overlayCard,children:[g(`h3`,{class:j.overlayTitle,id:`created-title`,children:n(`agentsWin.createdTitle`,{name:e.name})}),g(`p`,{class:M.note,children:e.live?n(`agentsWin.createdBody`):n(`agentsWin.createdRestart`)}),g(`div`,{class:j.overlayActions,children:[e.live?g(`button`,{ref:t,type:`button`,class:M.primary,onClick:e.onTry,children:n(`agentsWin.tryIt`)}):null,g(`button`,{ref:e.live?void 0:t,type:`button`,class:M.secondary,onClick:e.onStay,children:n(`agentsWin.stay`)})]})]})})}function B(i){let{workspace:a,models:o}=i,[v,y]=s(i.initial),[D,te]=s(i.saved),[P,I]=s(`setup`),[L,B]=s(``),[V,H]=s(),[U,W]=s(),[de,G]=s(!1),[K,q]=s(),[fe,pe]=s(!b());r(()=>{if(!v.model&&o?.length){let e=o.find(e=>e.active)??o[0];e&&y(t=>C({...t,model:e.reference},e.capabilities))}},[o]);let me=!D||T(v)!==T(D);r(()=>i.onDirty(me&&!!D),[me,D]);let J=re(o,v.model),Y=F(D?.id?()=>l.agentSessions(D.id):void 0,[D?.id],[`agents`]),X=i.overview?.scopes??(a?[`project`,`global`]:[`global`]),Z=e=>y(t=>({...t,...e})),he=t(()=>x(v,{origin:typeof location<`u`?location.origin:`http://127.0.0.1:4096`,...a?{workspace:a.id}:{}}),[v,a?.id]),ge=o?.find(e=>e.active)?.id??`Alisio`,Q=!!v.instructions.trim(),_e=async e=>{G(!0);try{let t={...w(e),scope:e.scope,...a?{workspace:a.id}:{}},r=e.id?await l.updateAgent(e.id,t):await l.createAgent(t),o=ee(r.agent);y(o),te(o),i.onSaved(o),e.scope===`project`&&u(),d(n(r.live?`agentsWin.saved`:`agentsWin.savedRestart`)),e.id||q({form:o,live:r.live})}catch(e){d(n(`agentsWin.saveFailed`,{message:h(e)}))}finally{G(!1)}},ve=async()=>{if(!a)return;let e=new AbortController;W(void 0),H({controller:e,started:Date.now()});let t;try{let r=await l.draftAgent({workspace:a.id,description:L.trim(),...Q?{base:{name:v.name,description:v.description,instructions:v.instructions}}:{}},e.signal);t=C(ne(v,r),J),y(t),B(``),d(n(`agentsWin.buildDone`,{model:r.generatedBy,guidance:r.guidance}))}catch(t){e.signal.aborted||W(h(t))}finally{H(void 0)}t&&!t.id&&k(t,void 0)&&await _e(t)},$=oe(v.name),ye=ie({saved:!!D?.id,workspace:!!a,sessions:Y.data?.items??[]}),be={define:[`agentsWin.step.define`,`agentsWin.step.defineBody`],runtime:[`agentsWin.step.runtime`,`agentsWin.step.runtimeBody`],session:[`agentsWin.step.session`,`agentsWin.step.sessionBody`],events:[`agentsWin.step.events`,`agentsWin.step.eventsBody`]},xe=async e=>{a&&e.id&&await p(a.id,e.id,e.model||void 0)&&(m.value=!1)};return g(`div`,{style:{position:`relative`},children:[g(`div`,{class:M.tabs,role:`tablist`,"aria-label":n(`agentsWin.title`),children:[`setup`,`sessions`].map(e=>g(`button`,{type:`button`,role:`tab`,class:M.tab,"aria-selected":P===e,onClick:()=>I(e),children:n(`agentsWin.${e}`)},e))}),P===`sessions`?g(`div`,{role:`tabpanel`,children:D?.id?g(e,{children:[g(N,{loading:Y.loading&&!Y.data,error:Y.error}),Y.data&&!Y.data.items.length?g(`p`,{class:M.note,children:n(`agentsWin.sessionsEmpty`)}):null,g(`ul`,{class:M.rows,children:(Y.data?.items??[]).map(e=>g(`li`,{class:M.row,children:g(`button`,{type:`button`,class:j.rowButton,onClick:()=>{m.value=!1,c(e.id)},children:[g(`span`,{class:M.cardName,children:e.title??n(`agentsWin.untitled`)}),g(`p`,{class:M.meta,children:[e.model,` · `,e.workspace]})]})},e.id))}),a?g(`button`,{type:`button`,class:`${M.primary} ${M.addButton}`,onClick:()=>void xe(D),children:n(`agentsWin.startSession`)}):g(`p`,{class:M.note,children:n(`agentsWin.noWorkspace`)})]}):g(`p`,{class:M.note,children:n(`agentsWin.sessionsUnsaved`)})}):g(`div`,{class:j.columns,role:`tabpanel`,children:[g(`div`,{class:j.column,children:[a?g(`section`,{class:j.assist,"aria-labelledby":`assist-title`,children:[g(`h4`,{class:j.assistTitle,id:`assist-title`,children:[g(_,{name:`sparkle`,size:16}),n(Q?`agentsWin.assistRefine`:`agentsWin.assistTitle`)]}),g(`p`,{class:M.note,children:n(Q?`agentsWin.assistRefineLead`:`agentsWin.assistLead`)}),g(`textarea`,{class:j.control,style:{minHeight:`64px`},value:L,placeholder:n(`agentsWin.assistPlaceholder`),"aria-label":n(`agentsWin.assistTitle`),maxLength:2e3,onInput:e=>B(e.target.value)}),U?g(`p`,{class:M.errorText,role:`alert`,children:n(`agentsWin.buildFailed`,{message:U})}):null,g(`div`,{class:j.assistActions,children:g(`button`,{type:`button`,class:M.primary,disabled:!!V||!Q&&!L.trim(),onClick:()=>void ve(),children:n(Q?`agentsWin.assistRefine`:`agentsWin.assistCreate`)})})]}):null,g(se,{title:n(`agentsWin.definition`),children:[g(z,{label:n(`agentsWin.name`),error:$?n(`agentsWin.nameError.${$}`):void 0,children:g(`input`,{class:j.control,value:v.name,maxLength:80,"aria-invalid":$?`true`:void 0,onInput:e=>Z({name:e.target.value})})}),g(z,{label:n(`agentsWin.description`),children:g(`input`,{class:j.control,value:v.description,maxLength:300,placeholder:n(`agentsWin.descriptionPlaceholder`),onInput:e=>Z({description:e.target.value})})}),g(z,{label:n(`agentsWin.instructions`),hint:`${v.instructions.length} / 24000`,children:g(`textarea`,{class:j.control,value:v.instructions,maxLength:24e3,placeholder:n(`agentsWin.instructionsPlaceholder`),onInput:e=>Z({instructions:e.target.value})})}),!v.id&&X.length>1?g(z,{label:n(`agentsWin.scope`),hint:n(`agentsWin.scopeHint`),children:g(`select`,{class:j.control,value:v.scope,title:i.overview?.dirs[v.scope]??``,onChange:e=>Z({scope:e.target.value}),children:X.map(e=>g(`option`,{value:e,title:i.overview?.dirs[e]??``,children:[n(`agentsWin.scope.${e}`),i.overview?.dirs[e]?` — ${ae(e,i.overview.dirs[e])}`:``]},e))})}):g(`p`,{class:M.meta,children:[n(`agentsWin.scope`),`: `,n(`agentsWin.scope.${v.scope}`)]}),v.scope===`project`&&i.overview&&!i.overview.trusted?g(`div`,{class:M.callout,role:`note`,children:[g(_,{name:`shield`,size:16}),g(`div`,{class:M.stack,children:[g(`span`,{children:n(`agentsWin.scopeUntrusted`)}),a?g(`button`,{type:`button`,class:M.secondary,style:{justifySelf:`start`},onClick:async()=>{await f(a,!0)&&i.onTrusted()},children:n(`trust.grant`)}):null]})]}):null]}),g(se,{title:n(`agentsWin.modelSection`),children:[g(z,{label:n(`agentsWin.model`),children:g(`select`,{class:j.control,value:v.model,onChange:e=>{let t=e.target.value;y(e=>C({...e,model:t},re(o,t)))},children:[g(`option`,{value:``,disabled:!0,children:n(`agentsWin.chooseModel`)}),v.model&&!o?.some(e=>e.reference===v.model)?g(`option`,{value:v.model,children:v.model}):null,(o??[]).map(e=>g(`option`,{value:e.reference,children:[e.active?n(`agentsWin.modelActive`,{name:e.name??e.id}):e.name??e.id,` `,`· `,e.providerName,e.labels.length?` — ${e.labels.join(` · `)}`:``]},e.reference))]})}),i.modelsError?g(`p`,{class:M.errorText,children:i.modelsError}):J.known?null:g(`p`,{class:j.fieldHint,children:n(`agentsWin.capsUnknown`)}),g(`div`,{class:j.settingsGrid,children:[g(z,{label:n(`agentsWin.textFormat`),children:g(`select`,{class:j.control,value:v.format,onChange:e=>Z({format:e.target.value}),children:A.filter(e=>J.textFormats.includes(e)).map(e=>g(`option`,{value:e,children:n(`agentsWin.format.${e}`)},e))})}),g(z,{label:n(`agentsWin.effort`),hint:J.reasoning?void 0:n(`agentsWin.unsupported`),children:g(`select`,{class:j.control,value:v.effort,disabled:!J.reasoning,onChange:e=>Z({effort:e.target.value}),children:[g(`option`,{value:``,children:[n(`agentsWin.modelDefault`),J.defaultEffort?` (${R(J.defaultEffort)})`:``]}),J.effortLevels.map(e=>g(`option`,{value:e,children:R(e)},e))]})}),g(z,{label:n(`agentsWin.verbosity`),hint:J.verbosity?void 0:n(`agentsWin.unsupported`),children:g(`select`,{class:j.control,value:v.verbosity,disabled:!J.verbosity,onChange:e=>Z({verbosity:e.target.value}),children:[g(`option`,{value:``,children:n(`agentsWin.modelDefault`)}),E.map(e=>g(`option`,{value:e,children:R(e)},e))]})}),g(z,{label:n(`agentsWin.summary`),hint:J.summary?void 0:n(`agentsWin.unsupported`),children:g(`select`,{class:j.control,value:v.summary,disabled:!J.summary,onChange:e=>Z({summary:e.target.value}),children:[g(`option`,{value:``,children:n(`agentsWin.modelDefault`)}),O.map(e=>g(`option`,{value:e,children:n(`agentsWin.summary.${e}`)},e))]})})]})]}),g(`button`,{type:`button`,class:`${M.primary} ${j.saveButton}`,disabled:de||!!V||!k(v,D),onClick:()=>void _e(v),children:n(`agentsWin.save`)})]}),g(`div`,{class:j.column,children:[g(ce,{text:he}),fe?g(`section`,{class:j.stepper,"aria-labelledby":`getting-started`,children:[g(`h4`,{class:j.stepperHead,id:`getting-started`,children:[n(`agentsWin.gettingStarted`),g(`button`,{type:`button`,class:`icon-btn`,"aria-label":n(`agentsWin.dismiss`),title:n(`agentsWin.dismiss`),onClick:()=>{S(),pe(!1)},children:g(_,{name:`x`,size:15})})]}),g(`ol`,{class:j.steps,children:ye.map((e,t)=>{let[r,i]=be[e.id];return g(`li`,{class:j.step,"data-done":e.done,children:[g(`span`,{class:j.stepNode,"aria-hidden":`true`,children:e.done?`✓`:t+1}),g(`div`,{children:[g(`p`,{class:j.stepTitle,children:[n(r),g(`span`,{class:`sr-only`,children:e.done?` ✓`:``})]}),g(`p`,{class:j.stepText,children:n(i)})]})]},e.id)})})]}):null]})]}),V?g(le,{model:ge,started:V.started,onCancel:()=>V.controller.abort()}):null,K?g(ue,{name:K.form.name,live:K.live&&!!a,onTry:()=>{let e=K.form;q(void 0),xe(e)},onStay:()=>q(void 0)}):null]})}var V=`alisio.agents.maximized`,H=`button:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex='0']`;function U(t){let{agent:r}=t;return g(e,{children:[g(I,{tone:r.scope===`project`?`ok`:`off`,children:n(`agentsWin.scope.${r.scope}`)}),r.overridesGlobal?g(I,{tone:`warn`,children:n(`agentsWin.overrides`)}):null,r.overriddenByProject?g(I,{tone:`off`,children:n(`agentsWin.overridden`)}):null]})}function W(){let t=P(),[c,u]=s({kind:`list`}),[f,p]=s(!1),[v,y]=s(()=>i(V)===`1`),b=a(null),x=F(()=>l.agentDefinitions(t?.id),[t?.id],[`agents`]),S=F(()=>l.agentTemplates(),[]),C=F(t?()=>l.agentModels(t.id):void 0,[t?.id]);r(()=>{let e=document.activeElement;return b.current?.querySelector(`button`)?.focus(),()=>e?.focus()},[]);let w=x.data?.defaultScope??(t?`project`:`global`),T=()=>C.data?.find(e=>e.active)?.reference??``,E=()=>c.kind===`editor`&&f&&!window.confirm(n(`agentsWin.unsavedLeave`))?!1:(p(!1),u({kind:`list`}),!0),O=()=>{(c.kind!==`editor`||!f||window.confirm(n(`agentsWin.unsavedLeave`)))&&(m.value=!1)},k=e=>u({kind:`editor`,key:`template:${e.id}:${Date.now()}`,form:te(e,w,T()),assist:!0}),ne=async e=>{if(window.confirm(n(`agentsWin.deleteConfirm`,{path:e.path})))try{let r=await l.deleteAgent(e.id,e.scope,t?.id);d(n(r.live?`agentsWin.deleted`:`agentsWin.deletedRestart`)),x.reload()}catch(e){d(h(e))}},A=x.data?.agents??[];return g(`div`,{class:M.backdrop,onMouseDown:e=>{e.target===e.currentTarget&&O()},children:g(`div`,{ref:b,class:`${M.dialog} ${j.shell}${v?` ${j.maximized}`:``}`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`agents-title`,onKeyDown:e=>{if(e.key===`Escape`&&!e.defaultPrevented&&(e.preventDefault(),c.kind===`editor`?E():O()),e.key===`Tab`){let t=[...b.current?.querySelectorAll(H)??[]],n=t[0],r=t.at(-1);e.shiftKey&&document.activeElement===n?(e.preventDefault(),r?.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n?.focus())}},children:g(`div`,{class:`${M.content} ${j.scroll}`,children:[g(`div`,{class:M.topBar,children:[g(`nav`,{class:j.breadcrumb,"aria-label":n(`agentsWin.title`),children:c.kind===`editor`?g(e,{children:[g(`button`,{type:`button`,class:j.crumbLink,onClick:E,children:n(`agentsWin.back`)}),g(_,{name:`chevronRight`,size:14}),g(`span`,{class:j.crumbCurrent,id:`agents-title`,"aria-current":`page`,children:c.form.id?c.form.name:n(`agentsWin.newAgent`)})]}):g(`span`,{class:j.crumbCurrent,id:`agents-title`,children:n(`agentsWin.title`)})}),g(`button`,{type:`button`,class:`icon-btn`,"aria-label":n(v?`agentsWin.restore`:`agentsWin.maximize`),title:n(v?`agentsWin.restore`:`agentsWin.maximize`),"aria-pressed":v,onClick:()=>{let e=!v;y(e),o(V,e?`1`:void 0)},children:g(_,{name:v?`shrink`:`expand`,size:16})}),g(`button`,{type:`button`,class:`icon-btn`,"aria-label":n(`common.close`),onClick:O,children:g(_,{name:`x`,size:18})})]}),c.kind===`editor`?g(B,{initial:c.form,...c.saved?{saved:c.saved}:{},assist:c.assist,workspace:t,overview:x.data,models:C.data,modelsError:C.error,onDirty:p,onTrusted:()=>{x.reload(),C.reload()},onSaved:e=>{x.reload(),u(t=>t.kind===`editor`?{...t,form:e,saved:e}:t)}},c.key):g(e,{children:[g(`header`,{class:`${M.intro} ${j.listHead}`,children:[g(`div`,{children:[g(`h3`,{class:M.pageTitle,children:n(`agentsWin.title`)}),g(`p`,{class:M.lead,children:n(`agentsWin.lead`)}),t?null:g(`p`,{class:M.note,children:n(`agentsWin.noWorkspace`)})]}),g(`button`,{type:`button`,class:M.primary,onClick:()=>u({kind:`editor`,key:`new:${Date.now()}`,form:D(w,T()),assist:!0}),children:n(`agentsWin.create`)})]}),g(`h4`,{class:M.listTitle,children:[n(`agentsWin.yours`),g(`span`,{class:M.count,children:A.length})]}),g(N,{loading:x.loading&&!x.data,error:x.error}),x.data&&!A.length?g(`p`,{class:M.note,children:n(`agentsWin.none`)}):null,g(`ul`,{class:M.rows,children:A.map(e=>g(`li`,{class:M.row,"data-muted":e.overriddenByProject?`true`:void 0,children:[g(`button`,{type:`button`,class:j.rowButton,onClick:()=>{let t=ee(e);u({kind:`editor`,key:`${e.scope}:${e.id}`,form:t,saved:t,assist:!1})},children:[g(`span`,{class:M.rowTitle,children:[g(`span`,{class:M.cardName,children:e.name}),g(U,{agent:e})]}),g(`p`,{class:M.cardText,children:e.description}),g(`p`,{class:M.meta,children:[e.model||`—`,` · `,g(`code`,{children:e.id})]})]}),g(`div`,{class:M.rowActions,children:g(`button`,{type:`button`,class:`icon-btn`,"aria-label":`${n(`agentsWin.delete`)} ${e.name}`,title:n(`agentsWin.delete`),onClick:()=>void ne(e),children:g(_,{name:`archive`,size:16})})})]},`${e.scope}:${e.id}`))}),g(`h4`,{class:M.listTitle,children:n(`agentsWin.templates`)}),g(N,{loading:S.loading&&!S.data,error:S.error}),g(`ul`,{class:M.grid,children:(S.data??[]).map(e=>g(`li`,{children:g(`button`,{type:`button`,class:j.templateCard,onClick:()=>k(e),children:[g(`span`,{class:j.templateName,children:e.name}),g(`span`,{class:j.templateText,children:e.description})]})},e.id))})]})]})})})}export{W as AgentsModal};
@@ -0,0 +1,5 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PlanViewer-D05Fnb6D.js","assets/i18n-BGlOHOa5.js","assets/preload-helper-B3nfOi5I.js","assets/app-B_dNXnFa.js","assets/jsxRuntime-CU76aMLO.js","assets/panel-INm2KdPq.js","assets/index-CcgO2jIy.js","assets/icons-BWy-tv8u.js","assets/clipboard-hOiC7lD8.js","assets/CopyButton-CMHaee_H.js","assets/visible-DLChI0F-.js","assets/index-DoBakzIL.css","assets/strings-Dn5dLhWb.js","assets/view-Ce_7xHIu.js","assets/view-DWcZ1gKW.css","assets/PlanViewer-CPifoQAf.css","assets/SpreadsheetPanel-BIo8rckB.js","assets/SpreadsheetPanel-CYyWl0en.css"])))=>i.map(i=>d[i]);
2
+ import{T as e,a as t,b as n,g as r,y as i}from"./i18n-BGlOHOa5.js";import{t as a}from"./preload-helper-B3nfOi5I.js";import{Ct as o,E as s,St as c,Tt as l,_t as u,d,wt as f}from"./app-B_dNXnFa.js";import{t as p}from"./jsxRuntime-CU76aMLO.js";import{t as m}from"./icons-BWy-tv8u.js";import{c as h,f as g}from"./panel-INm2KdPq.js";import{A as _,B as v,D as ee,E as y,F as te,I as b,L as ne,O as re,P as ie,j as x,k as ae,n as S,t as C,z as w}from"./index-CcgO2jIy.js";import{r as T}from"./forge-page-BuIg49Im.js";import{r as E,t as D}from"./TextPreview-DPHScW4M.js";var O=`plan.md`,k=`plan.json`,A=/^diagrams\/[a-z0-9]+(?:-[a-z0-9]+)*\.mmd$/,j=[`overview`,`flow`,`components`,`architecture`,`sequence`,`data`,`state`,`other`];function M(e){return e.entry===`plan.md`&&!!e.files?.some(e=>e.path===`plan.json`)}var N=(e,t=2e3)=>typeof e==`string`&&e.trim()?e.trim().slice(0,t):void 0,P=e=>Array.isArray(e)?e:[],F=e=>e&&typeof e==`object`?e:{};function I(e){let t;try{t=JSON.parse(e)}catch{return}let n=F(t);if(typeof n.version!=`number`||!Number.isFinite(n.version)||n.version<1)return;let r=N(n.title,200);if(!r)return;let i=[],a=new Set;for(let e of P(n.diagrams)){let t=F(e),n=N(t.id,60),r=N(t.file,120),o=N(t.title,120);if(!n||!o||!r||!A.test(r)||a.has(n))continue;a.add(n);let s=j.includes(t.type)?t.type:`other`,c=t.status===`new`||t.status===`updated`?t.status:`unchanged`,l=N(t.section,80);i.push({id:n,title:o,explanation:N(t.explanation,600)??``,...l?{section:l}:{},type:s,syntax:N(t.syntax,40)??``,file:r,hash:N(t.hash,80)??``,status:c})}return{version:1,planId:N(n.planId,80)??``,revision:typeof n.revision==`number`&&n.revision>=1?Math.floor(n.revision):1,title:r,hash:N(n.hash,80)??``,summary:N(n.summary,1e3)??``,goals:P(n.goals).map(e=>N(e,400)).filter(e=>!!e),stages:P(n.stages).flatMap(e=>{let t=F(e),n=N(t.title,300),r=N(t.detail,1e3);return n?[{title:n,...r?{detail:r}:{}}]:[]}),considerations:P(n.considerations).flatMap(e=>{let t=F(e),n=N(t.text,1e3),r=t.kind===`decision`||t.kind===`risk`?t.kind:`verification`;return n?[{kind:r,text:n}]:[]}),sections:P(n.sections).flatMap(e=>{let t=F(e),n=N(t.id,80),r=N(t.title,200);return n&&r?[{id:n,title:r,level:typeof t.level==`number`?t.level:2}]:[]}),diagrams:i,removed:P(n.removed).flatMap(e=>{let t=F(e),n=N(t.id,60);return n?[{id:n,title:N(t.title,120)??n}]:[]})}}function L(e){return e.normalize(`NFKD`).replace(/[̀-ͯ]/g,``).toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,60).replace(/-+$/,``)||`section`}function R(e){return e.replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/(\*\*|__)(.*?)\1/g,`$2`).replace(/(^|[^\w*])([*_])(?!\s)(.+?)\2(?!\w)/g,`$1$3`).replace(/`([^`]*)`/g,`$1`).replace(/~~(.*?)~~/g,`$1`).replace(/\s+/g,` `).trim()}function z(e){let t=[],n=new Map,r,i,a=()=>{i&&=(i.section.text=i.lines.join(`
3
+ `).replace(/\s+$/,``),(i.section.id||i.section.text.trim())&&t.push(i.section),void 0)};i={section:{id:``,title:``,level:0,text:``},lines:[]};for(let t of e.replace(/\r\n?/g,`
4
+ `).split(`
5
+ `)){let e=/^\s{0,3}(`{3,}|~{3,})/.exec(t)?.[1];if(e)r?t.trim().startsWith(r)&&(r=void 0):r=e[0]?.repeat(e.length);else if(!r){let e=/^\s{0,3}(#{1,6})\s+(.+?)\s*#*\s*$/.exec(t),r=e?.[2]?R(e[2]):``;if(e?.[1]&&r){a();let o=L(r),s=(n.get(o)??0)+1;n.set(o,s),i={section:{id:s===1?o:`${o}-${s}`,title:r,level:e[1].length,text:``},lines:[t]};continue}}i?.lines.push(t)}return a(),t}function B(e){return{components:e.filter(e=>e.type===`components`||e.type===`architecture`),others:e.filter(e=>e.type!==`components`&&e.type!==`architecture`)}}function V(e){let t=new Map;for(let n of e)n.section&&t.set(n.section,[...t.get(n.section)??[],n]);return t}function H(e,t){if(!(e.revision<=1))return t.status===`new`||t.status===`updated`?t.status:void 0}var U=e=>`plan-section-${e||`top`}`,W=e=>`plan-diagram-${e}`,G=e=>`plan-part-${e}`,K=e=>e instanceof Error?e.message:String(e);async function q(e){let{files:t,fetchText:n}=e,r=e=>t.some(t=>t.path===e),i=await n(O),a=[],o;if(!r(`plan.json`))a.push(`manifest-missing`);else{try{o=I(await n(k))}catch{o=void 0}o||a.push(`manifest-invalid`)}let s=o?[]:t.map(e=>e.path).filter(e=>A.test(e)).sort().map(e=>{let t=e.slice(9,-4);return{id:t,title:t.replace(/-/g,` `),explanation:``,type:`other`,syntax:``,file:e,hash:``,status:`unchanged`}}),c=o?o.diagrams:s,l={};return await Promise.all(c.map(async e=>{if(!r(e.file)){l[e.id]={error:`${e.file} is not in this plan folder`};return}try{l[e.id]={source:await n(e.file)}}catch(t){l[e.id]={error:K(t)}}})),{...o?{manifest:o}:{},markdown:i,diagrams:l,fallbackDiagrams:s,issues:a}}function J(e){let t=0;return async n=>{let r=++t;try{let i=await e(n);return r===t?i:void 0}catch(e){if(r!==t)return;throw e}}}var oe={"os-container":!0,"wasm-isolate":!0,"wasm-process":!0,none:!0},Y=e=>typeof e==`string`&&e?e:void 0;function se(n){let{detail:r}=n,i=r.provenance,a=i.runtime,s=Array.isArray(i.inputs)?i.inputs:[],c=o(i),u=S(i),d=u?.isolation&&Object.hasOwn(oe,u.isolation)?t(T(u.isolation)):u?.isolation,f=[[t(`artifactPanel.created`),new Date(r.createdAt).toLocaleString()],[t(`artifactPanel.size`),l(r.bytes)],[t(`artifactPanel.files`),String(r.files.length||r.fileCount)],...Y(i.model)?[[t(`artifactPanel.model`),Y(i.model)]]:[],...Y(i.provider)?[[t(`artifactPanel.provider`),Y(i.provider)]]:[],...c?[[t(`artifactPanel.dashboard`),[t(c.planner===`rules`?`artifactPanel.plannerRules`:`artifactPanel.plannerDecisions`),c.decisionProvider].filter(Boolean).join(` · `)]]:[],...a?[[t(`artifactPanel.runtime`),[a.mode,a.engine,a.python?`Python ${a.python}`:void 0,a.image?.replace(/(@sha256:[a-f0-9]{12})[a-f0-9]+$/,`$1…`),a.extras?.length?a.extras.join(`, `):void 0,a.runtimeVersion].filter(Boolean).join(` · `)]]:[],...u?.engine?[[t(`artifactPanel.engine`),u.engine]]:[],...d?[[t(`artifactPanel.isolation`),d]]:[],...u?.reason?[[t(`artifactPanel.engineReason`),u.reason]]:[],...u?.startupMs===void 0?[]:[[t(`artifactPanel.startup`),`${(u.startupMs/1e3).toFixed(1)} s`]],...u?.peakRssMb===void 0?[]:[[t(`artifactPanel.peakMemory`),`${u.peakRssMb} MB`]],...s.length?[[t(`artifactPanel.inputs`),p(`ul`,{class:E.mono,children:s.map(e=>p(`li`,{children:[e.name,` · `,e.sha256?.slice(0,12)]},`${e.name}-${e.sha256}`))},`inputs`)]]:[],...Y(i.executionId)?[[t(`artifactPanel.execution`),p(`span`,{class:E.mono,children:Y(i.executionId)})]]:[],...Y(i.rerunOf)?[[t(`artifactPanel.rerunOf`),p(`span`,{class:E.mono,children:Y(i.rerunOf)})]]:[],...r.status===`ready`?[]:[[t(`artifactPanel.status`),t(r.status===`expired`?`artifact.expired`:`artifact.deleted`)]],...Y(i.scriptSha256)?[[t(`artifactPanel.script`),p(`span`,{class:E.mono,children:Y(i.scriptSha256)?.slice(0,16)})]]:[]];return p(`section`,{class:E.sheet,"aria-label":t(`artifactPanel.detailsTitle`),children:[p(`h3`,{children:t(`artifactPanel.detailsTitle`)}),p(`dl`,{class:E.details,children:f.map(([n,r])=>p(e,{children:[p(`dt`,{children:n}),p(`dd`,{children:r??t(`artifactPanel.none`)})]},n))})]})}var ce=e=>`${t(`artifact.kind.${e.kind}`)}${e.status===`expired`?` · ${t(`artifact.expired`)}`:``}`;function le(e){let[a,o]=i(e.initialFilter??``),s=h(e.list.filter(e=>e.status===`ready`||e.status===`expired`),a),[l,u]=i(()=>Math.max(0,s.findIndex(t=>t.id===e.current))),d=r(null),f=r(null),g=r({text:``,at:0}),_=e.list.length>8||!!e.initialFilter;n(()=>{(_?f.current:d.current)?.focus()},[_]),n(()=>{l>=s.length&&u(Math.max(0,s.length-1))},[s.length,l]);let v=t=>`${e.id}-opt-${t}`;return p(`div`,{class:E.popup,onKeyDown:t=>{if(t.key===`Escape`){t.preventDefault(),t.stopPropagation(),e.onClose();return}if(t.key===`ArrowDown`||t.key===`ArrowUp`){t.preventDefault();let e=t.key===`ArrowDown`?1:-1;u(t=>Math.min(s.length-1,Math.max(0,t+e)));return}if(t.key===`Enter`){let n=s[l];n&&(t.preventDefault(),e.onPick(n.id));return}if(t.target!==f.current&&t.key.length===1&&!t.ctrlKey){let e=Date.now();g.current={text:(e-g.current.at<700?g.current.text:``)+t.key.toLowerCase(),at:e};let n=s.findIndex(e=>e.fileName.toLowerCase().startsWith(g.current.text));n>=0&&u(n)}},children:[_?p(`input`,{ref:f,class:E.filter,type:`search`,value:a,placeholder:t(`artifactPanel.filter`),"aria-label":t(`artifactPanel.filter`),"aria-controls":`${e.id}-list`,"aria-activedescendant":s.length?v(l):void 0,onInput:e=>{o(e.currentTarget.value),u(0)}}):null,p(`ul`,{ref:d,id:`${e.id}-list`,class:E.listbox,role:`listbox`,"aria-label":t(`artifactPanel.switch`),tabIndex:0,"aria-activedescendant":s.length?v(l):void 0,children:s.length?s.map((n,r)=>p(`li`,{id:v(r),role:`option`,class:E.option,"aria-selected":n.id===e.current,"data-active":r===l?`true`:void 0,onClick:()=>e.onPick(n.id),onMouseMove:()=>u(r),children:[p(m,{name:c[n.kind],size:16}),p(`span`,{class:E.optionName,title:n.fileName,children:[n.title===n.fileName?n.fileName:n.title,e.unseen.has(n.id)?p(`span`,{class:E.dot,role:`img`,"aria-label":t(`artifactPanel.new`)}):null]}),p(`span`,{class:E.optionKind,children:ce(n)})]},n.id)):p(`li`,{class:E.muted,children:e.list.length?t(`artifactPanel.noMatch`):t(`artifactPanel.empty`)})}),e.actions.length?p(`div`,{class:E.menu,children:e.actions.map(t=>t.href?p(`a`,{class:E.action,href:t.href,...t.download?{download:``}:{},onClick:()=>e.onClose(),children:[t.icon?p(m,{name:t.icon,size:15}):null,t.label]},t.key):p(`button`,{type:`button`,class:`${E.action}${t.danger?` ${E.danger}`:``}`,onClick:()=>t.onSelect?.(),children:[t.icon?p(m,{name:t.icon,size:15}):null,t.label]},t.key))}):null]})}function X(e){let{artifact:n}=e;return p(`div`,{class:E.state,children:[p(`span`,{class:E.fallbackIcon,children:p(m,{name:c[n.kind],size:26})}),p(`span`,{class:E.fallbackName,title:n.fileName,children:n.fileName}),p(`span`,{children:l(n.bytes)}),p(`p`,{children:e.reason===`tooLarge`?t(`artifact.tooLarge`,{size:l(n.bytes)}):t(`artifact.noPreview`)}),p(`a`,{class:`${E.button} ${E.primary}`,href:f(n.id),download:``,children:t(`artifact.download`)})]})}var ue=15e3;function de(e){let{artifact:r}=e,[a,o]=i(),[s,c]=i(`loading`),[l,u]=i(0);return n(()=>{let e=!0;c(`loading`),o(void 0),b(r.id).then(t=>{e&&o(t)},t=>{e&&(c(`error`),x(t)&&w(r.id,t instanceof Error?t.message:String(t)))});let t=setTimeout(()=>{e&&c(e=>e===`loading`?`error`:e)},ue);return()=>{e=!1,clearTimeout(t)}},[r.id,l]),s===`error`?p(`div`,{class:`${E.state} ${E.stateError}`,role:`status`,children:[p(`p`,{children:t(`artifactPanel.loadFailed`)}),p(`button`,{type:`button`,class:E.button,onClick:()=>u(e=>e+1),children:t(`artifactPanel.reload`)})]}):p(`div`,{class:E.frameWrap,children:[a?p(`iframe`,{class:E.frame,src:a,title:t(`artifactPanel.frameTitle`,{name:r.title}),sandbox:`allow-scripts allow-downloads`,referrerpolicy:`no-referrer`,allow:``,loading:`lazy`,onLoad:()=>c(`ready`)},`${a}#${l}`):null,s===`loading`?p(`div`,{class:E.skeleton,"aria-busy":`true`,children:t(`artifact.loading`)}):null]})}function fe(e){let{artifact:n}=e,[r,a]=i(!0),[o,s]=i(!1);return o?p(`div`,{class:`${E.state} ${E.stateError}`,role:`status`,children:t(`artifactPanel.loadFailed`)}):p(`div`,{children:[p(`div`,{class:E.imageBar,children:[p(`button`,{type:`button`,class:`${E.button} ${E.toggle}`,"aria-pressed":r,onClick:()=>a(!0),children:t(`artifactPanel.fit`)}),p(`button`,{type:`button`,class:`${E.button} ${E.toggle}`,"aria-pressed":!r,onClick:()=>a(!1),children:t(`artifactPanel.actualSize`)})]}),p(`div`,{class:E.imageWrap,children:p(`img`,{class:E.image,"data-fit":r?`true`:`false`,src:d.artifactFileUrl(n.id,e.entry),alt:n.title,onError:()=>s(!0)})})]})}function pe(e){let[r,o]=i(),[s,c]=i(!1);return n(()=>{let e=!0;return a(()=>import(`./PlanViewer-D05Fnb6D.js`).then(t=>{e&&o(t)},()=>{e&&c(!0)}),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])),()=>{e=!1}},[]),s?p(D,{artifact:e.artifact,entry:e.entry,as:`markdown`},e.artifact.id):r?p(r.default,{artifactId:e.artifact.id,title:e.artifact.title,files:e.files,entry:e.entry},e.artifact.id):p(`div`,{class:E.state,"aria-busy":`true`,children:t(`artifact.loading`)})}function Z(e){let[r,o]=i(),[s,c]=i(!1);return n(()=>{let e=!0;return a(()=>import(`./SpreadsheetPanel-BIo8rckB.js`).then(t=>{e&&o(t)},()=>{e&&c(!0)}),__vite__mapDeps([16,1,2,3,4,7,8,17])),()=>{e=!1}},[]),s?p(`div`,{class:`${E.state} ${E.stateError}`,role:`status`,children:t(`sheet.error`)}):r?`dataset`in e?p(r.DatasetSpreadsheet,{dataset:e.dataset,original:!0}):p(r.ArtifactSpreadsheet,{artifactId:e.artifactId,name:e.name}):p(`div`,{class:E.state,"aria-busy":`true`,children:t(`artifact.loading`)})}function me(e){let{artifact:r}=e,[a,o]=i(),[s,c]=i(!1),l=typeof navigator>`u`||navigator.pdfViewerEnabled!==!1;return n(()=>{if(!l)return;let e=!0;return c(!1),b(r.id).then(t=>{e&&o(t)},t=>{e&&(c(!0),x(t)&&w(r.id,t instanceof Error?t.message:String(t)))}),()=>{e=!1}},[r.id,l]),l?s?p(`div`,{class:`${E.state} ${E.stateError}`,role:`status`,children:t(`artifactPanel.loadFailed`)}):p(`div`,{class:E.frameWrap,children:a?p(`iframe`,{class:E.frame,src:a,title:t(`artifactPanel.frameTitle`,{name:r.title}),referrerpolicy:`no-referrer`}):p(`div`,{class:E.skeleton,"aria-busy":`true`,children:t(`artifact.loading`)})}):p(X,{artifact:r,reason:`noPreview`})}var Q=`artifact-panel`,$=`artifact-panel-title`,he=`a[href], button:not([disabled]), input:not([disabled]), iframe, [tabindex]:not([tabindex="-1"])`;function ge(e){let{detail:t}=e,n=t.entry??t.fileName,r=g(t);if(r.kind===`markdown`&&M(t))return p(pe,{artifact:t,entry:n,files:t.files});switch(r.kind){case`html`:return p(de,{artifact:t});case`pdf`:return p(me,{artifact:t});case`image`:return p(fe,{artifact:t,entry:n});case`spreadsheet`:return p(Z,{artifactId:t.id,name:t.fileName},t.id);case`markdown`:case`json`:case`code`:return p(D,{artifact:t,entry:n,as:r.kind},t.id);default:return p(X,{artifact:t,reason:r.reason})}}function _e(e){let[a,o]=i(`.`),[s,c]=i(!1),[l,d]=i(!1),f=r(null);return n(()=>f.current?.focus(),[]),p(`form`,{class:E.sheet,"aria-label":t(`artifactPanel.exportTitle`),onSubmit:async n=>{n.preventDefault(),d(!0);let r=await _(e.artifact.id,a,s);d(!1),r&&(u.value=t(`artifactPanel.exportStarted`,{name:e.artifact.fileName}),e.onDone())},children:[p(`h3`,{children:t(`artifactPanel.exportTitle`)}),p(`label`,{children:[t(`artifactPanel.exportTarget`),p(`input`,{ref:f,type:`text`,value:a,spellcheck:!1,autocomplete:`off`,onInput:e=>o(e.currentTarget.value)})]}),p(`p`,{class:E.hint,children:t(`artifactPanel.exportHint`)}),p(`label`,{class:E.check,children:[p(`input`,{type:`checkbox`,checked:s,onChange:e=>c(e.currentTarget.checked)}),t(`artifactPanel.overwrite`)]}),p(`div`,{class:E.row,children:[p(`button`,{type:`button`,class:E.button,onClick:e.onDone,children:t(`common.cancel`)}),p(`button`,{type:`submit`,class:`${E.button} ${E.primary}`,disabled:l,children:t(`artifactPanel.exportSubmit`)})]})]})}function ve(e){let a=y.value,o=s.value,l=(o?ee.value[o]:void 0)??[],h=a?.id,g=a?.dataset,[_,S]=i({status:`loading`}),[T,D]=i(!!a?.listOpen||!h&&!g),[O,k]=i(),[A,j]=i(!1),[M,N]=i(0),P=r(null),F=r(null);n(()=>{D(!!a?.listOpen||!a?.id&&!a?.dataset)},[a]),n(()=>{if(k(void 0),!h)return;let e=!0;return S({status:`loading`}),d.artifact(h).then(t=>{e&&(t.status===`ready`?S({status:`ready`,detail:t}):(S({status:`gone`,detail:t}),D(!0)))},t=>{if(!e)return;let n=t instanceof Error?t.message:String(t);x(t)?(w(h,n),S({status:`gone`}),D(!0)):S({status:`error`,message:n})}),()=>{e=!1}},[h,M]),n(()=>{y.peek()?.listOpen||F.current?.focus()},[h]),n(()=>{let e=()=>j(document.fullscreenElement===P.current);return document.addEventListener(`fullscreenchange`,e),()=>document.removeEventListener(`fullscreenchange`,e)},[]);let I=_.status===`ready`?_.detail:void 0,L=l.find(e=>e.id===h),R=I??L,z=R?t(`artifact.kind.${R.kind}`):``,B=!!I&&(I.kind===`dashboard`||I.mimeType===`application/pdf`),V=()=>{document.fullscreenElement===P.current&&document.exitFullscreen?.(),re()},H=()=>{let t=P.current;if(t){if(document.fullscreenElement===t){document.exitFullscreen();return}if(typeof t.requestFullscreen!=`function`||document.fullscreenEnabled===!1){C(!e.expanded);return}t.requestFullscreen().catch(()=>C(!e.expanded))}},U=()=>{D(!1),F.current?.focus()},W=_.status===`gone`?_.detail:void 0,G=e=>typeof e?.provenance.executionId==`string`,K=e=>({key:`rerun`,label:t(`artifactPanel.rerun`),icon:`refresh`,onSelect:()=>{D(!1),ne(e.id,e.fileName)}}),q=()=>({key:`details`,label:t(`artifactPanel.details`),icon:`info`,onSelect:()=>{k(O===`details`?void 0:`details`),D(!1)}}),J=I?[...B?[{key:`tab`,label:t(`artifactPanel.openNewTab`),icon:`globe`,onSelect:()=>{let e=window.open(`about:blank`,`_blank`);D(!1),b(I.id).then(t=>{e&&(e.opener=null,e.location.href=t)},()=>e?.close())}}]:[],...e.narrow?[]:[{key:`expand`,label:t(e.expanded?`artifactPanel.restore`:`artifactPanel.expand`),icon:e.expanded?`shrink`:`expand`,onSelect:()=>{C(!e.expanded),D(!1)}}],...typeof I.provenance.executionId==`string`?[{key:`sources`,label:t(`artifactPanel.sources`),icon:`terminal`,href:d.artifactSourcesUrl(I.id),download:!0}]:[],{key:`export`,label:t(`artifactPanel.export`),icon:`folder`,onSelect:()=>{k(`export`),D(!1)}},q(),...G(I)?[K(I)]:[],{key:`delete`,label:t(`artifactPanel.delete`),icon:`x`,danger:!0,onSelect:()=>{k(`delete`),D(!1)}}]:W?.status===`expired`?[q(),...G(W)?[K(W)]:[]]:[];return p(`aside`,{ref:P,id:Q,class:E.panel,style:e.width&&!e.expanded&&!e.narrow?{width:`${e.width}px`}:void 0,"data-expanded":e.expanded?`true`:void 0,"data-narrow":e.narrow?`true`:void 0,role:e.narrow?`dialog`:`complementary`,"aria-modal":e.narrow?`true`:void 0,"aria-labelledby":$,inert:e.inert,onKeyDown:t=>{if(t.key===`Escape`&&!t.defaultPrevented){t.preventDefault(),T&&h?U():O?k(void 0):V();return}if(t.key===`Tab`&&e.narrow&&P.current){let e=[...P.current.querySelectorAll(he)].filter(e=>e.offsetParent!==null||e===document.activeElement),n=e[0],r=e.at(-1);if(!n||!r)return;t.shiftKey&&document.activeElement===n?(t.preventDefault(),r.focus()):!t.shiftKey&&document.activeElement===r&&(t.preventDefault(),n.focus())}},children:[e.narrow?p(`span`,{tabIndex:0,class:`sr-only`,onFocus:()=>{let e=P.current?.querySelectorAll(`header button, header a[href]`);e?.[e.length-1]?.focus()}}):null,p(`header`,{class:E.head,children:[p(`button`,{ref:F,id:$,type:`button`,class:E.titleButton,"aria-haspopup":`listbox`,"aria-expanded":T,title:g?.name??R?.fileName??t(`artifactPanel.label`),onClick:()=>T?U():D(!0),children:[R||g?p(`span`,{class:E.kindIcon,children:p(m,{name:g?`fileTable`:c[R.kind],size:17})}):null,p(`span`,{class:E.titleText,children:[g?g.name:R?R.title:t(`artifactPanel.label`),p(`span`,{class:`sr-only`,children:[R?`, ${z}. `:`. `,t(`artifactPanel.switch`)]})]}),p(m,{name:`chevronDown`,size:14})]}),p(`div`,{class:E.actions,children:[I?p(`a`,{class:E.iconButton,href:f(I.id),download:``,"aria-label":t(`artifact.downloadNamed`,{name:I.fileName}),title:t(`artifact.download`),children:p(m,{name:`download`,size:16})}):null,p(`button`,{type:`button`,class:E.iconButton,"aria-pressed":A,"aria-label":t(A?`artifactPanel.exitFullscreen`:`artifactPanel.fullscreen`),title:t(A?`artifactPanel.exitFullscreen`:`artifactPanel.fullscreen`),onClick:H,children:p(m,{name:A?`shrink`:`expand`,size:16})}),p(`button`,{type:`button`,class:E.iconButton,"aria-label":t(`artifactPanel.close`),title:t(`artifactPanel.close`),onClick:V,children:p(m,{name:`x`,size:16})})]}),T?p(le,{id:`${Q}-switcher`,list:l,...h?{current:h}:{},unseen:v.value,...a?.filter?{initialFilter:a.filter}:{},actions:J,onPick:e=>{D(!1),e===h?F.current?.focus():te(e)},onClose:U}):null]}),O===`export`&&I?p(_e,{artifact:I,onDone:()=>k(void 0)}):null,O===`details`&&(I??W)?p(se,{detail:I??W}):null,O===`delete`&&I?p(`div`,{class:E.sheet,role:`alertdialog`,"aria-label":t(`artifactPanel.delete`),children:[p(`p`,{children:t(`artifactPanel.deleteConfirm`,{name:I.fileName})}),p(`div`,{class:E.row,children:[p(`button`,{type:`button`,class:E.button,onClick:()=>k(void 0),ref:e=>e?.focus(),children:t(`common.cancel`)}),p(`button`,{type:`button`,class:`${E.button} ${E.danger}`,onClick:async()=>{try{await ae(I.id),k(void 0),S({status:`gone`}),D(!0)}catch(e){u.value=e instanceof Error?e.message:String(e)}},children:t(`artifactPanel.delete`)})]})]}):null,p(`div`,{class:E.body,children:g?p(Z,{dataset:g},g.id):h?_.status===`loading`?p(`div`,{class:E.state,"aria-busy":`true`,children:t(`artifact.loading`)}):_.status===`error`?p(`div`,{class:`${E.state} ${E.stateError}`,role:`status`,children:[p(`p`,{children:t(`artifactPanel.loadFailed`)}),p(`p`,{children:_.message}),p(`button`,{type:`button`,class:E.button,onClick:()=>{N(e=>e+1),o&&ie(o)},children:t(`artifact.retry`)})]}):_.status===`gone`?p(`div`,{class:E.state,role:`status`,children:[p(`p`,{children:_.detail?.status===`expired`?t(`artifact.expired`):t(`artifact.deleted`)}),p(`p`,{children:_.detail?.status===`expired`?t(`artifactPanel.expiredHint`):t(`artifactPanel.gone`)})]}):p(ge,{detail:_.detail}):l.some(e=>e.status===`ready`)?null:p(`div`,{class:E.state,children:t(`artifactPanel.empty`)})}),e.narrow?p(`span`,{tabIndex:0,class:`sr-only`,onFocus:()=>F.current?.focus()}):null]})}export{ve as ArtifactPanel,B as a,U as c,V as i,z as l,H as n,q as o,W as r,G as s,J as t};
@@ -1 +1 @@
1
- import{T as e,a as t,b as n,g as r}from"./i18n-BZax1Psk.js";import{cn as i,h as a,ln as o,sn as s,un as c,x as l}from"./app-D95B_PAO.js";import{t as u}from"./jsxRuntime-C-CM9h-f.js";import{t as d}from"./icons-nQx96NOf.js";import{t as f}from"./CopyButton-DsWaaJHr.js";import{b as p}from"./index-Bfl4EFzp.js";var m={panel:`_panel_ses4f_2`,rise:`_rise_ses4f_1`,head:`_head_ses4f_46`,badge:`_badge_ses4f_54`,titles:`_titles_ses4f_63`,title:`_title_ses4f_63`,eyebrow:`_eyebrow_ses4f_75`,nav:`_nav_ses4f_84`,position:`_position_ses4f_90`,flip:`_flip_ses4f_97`,body:`_body_ses4f_101`,question:`_question_ses4f_106`,answer:`_answer_ses4f_115`,pending:`_pending_ses4f_119`,spinner:`_spinner_ses4f_126`,cancel:`_cancel_ses4f_134`,error:`_error_ses4f_148`,usage:`_usage_ses4f_156`,foot:`_foot_ses4f_166`},h=e=>e instanceof HTMLElement&&(e.isContentEditable||[`INPUT`,`TEXTAREA`,`SELECT`].includes(e.tagName));function g(){let g=a.value,_=r(null);if(n(()=>{_.current?.focus()},[g?.sessionId,g?.pending?.question]),n(()=>{let e=e=>{let t=a.value;t&&!e.defaultPrevented&&(e.key===`Escape`?(e.preventDefault(),l()):(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&!h(e.target)&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.preventDefault(),a.value=c(t,e.key===`ArrowLeft`?-1:1)))};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[]),!g)return null;let v=i(g),y=o(g),b=g.pending?.question??g.error?.question??v?.question,x=e=>{a.value&&(a.value=c(a.value,e))};return u(`aside`,{ref:_,class:m.panel,role:`dialog`,"aria-modal":`false`,"aria-labelledby":`btw-title`,tabIndex:-1,children:[u(`header`,{class:m.head,children:[u(`span`,{class:m.badge,"aria-hidden":`true`,children:`btw`}),u(`div`,{class:m.titles,children:[u(`h2`,{id:`btw-title`,class:m.title,children:t(`btw.title`)}),u(`p`,{class:m.eyebrow,children:t(`btw.subtitle`)})]}),g.entries.length&&!g.usage?u(`nav`,{class:m.nav,"aria-label":t(`btw.history`),children:[u(`button`,{type:`button`,class:`icon-btn`,"aria-label":t(`btw.earlier`),title:t(`btw.earlier`),disabled:!y.earlier,onClick:()=>x(-1),children:u(d,{name:`chevronRight`,size:16,class:m.flip})}),u(`span`,{class:m.position,"aria-live":`polite`,children:v?t(`btw.position`,{n:g.index+1,total:g.entries.length}):``}),u(`button`,{type:`button`,class:`icon-btn`,"aria-label":t(`btw.later`),title:t(`btw.later`),disabled:!y.later,onClick:()=>x(1),children:u(d,{name:`chevronRight`,size:16})})]}):null,v?u(f,{text:()=>v.answer,label:t(`btw.copy`)}):null,u(`button`,{type:`button`,class:`icon-btn`,"aria-label":t(`common.close`),title:t(`common.close`),onClick:()=>l(),children:u(d,{name:`x`,size:16})})]}),u(`div`,{class:m.body,children:g.usage?u(`div`,{class:m.usage,children:[u(`code`,{children:s}),u(`p`,{children:t(`btw.usage`)})]}):u(e,{children:[b?u(`p`,{class:m.question,children:b}):null,g.pending?u(`div`,{class:m.pending,role:`status`,children:[u(`span`,{class:`${m.spinner} spin`,"aria-hidden":`true`}),u(`span`,{children:t(`btw.thinking`)}),u(`button`,{type:`button`,class:m.cancel,onClick:()=>l(),children:t(`common.cancel`)})]}):g.error?u(`p`,{class:m.error,role:`alert`,children:g.error.message}):v?u(`div`,{class:m.answer,children:u(p,{text:v.answer})}):null]})}),v?u(`footer`,{class:m.foot,children:[t(`btw.tokens`,{model:v.model,input:v.usage.input.toLocaleString(),output:v.usage.output.toLocaleString()}),v.truncated?` · ${t(`btw.truncated`)}`:``]}):null]})}export{g as BtwPanel};
1
+ import{T as e,a as t,b as n,g as r}from"./i18n-BGlOHOa5.js";import{an as i,h as a,in as o,on as s,sn as c,x as l}from"./app-B_dNXnFa.js";import{t as u}from"./jsxRuntime-CU76aMLO.js";import{t as d}from"./icons-BWy-tv8u.js";import{t as f}from"./CopyButton-CMHaee_H.js";import{x as p}from"./index-CcgO2jIy.js";var m={panel:`_panel_ses4f_2`,rise:`_rise_ses4f_1`,head:`_head_ses4f_46`,badge:`_badge_ses4f_54`,titles:`_titles_ses4f_63`,title:`_title_ses4f_63`,eyebrow:`_eyebrow_ses4f_75`,nav:`_nav_ses4f_84`,position:`_position_ses4f_90`,flip:`_flip_ses4f_97`,body:`_body_ses4f_101`,question:`_question_ses4f_106`,answer:`_answer_ses4f_115`,pending:`_pending_ses4f_119`,spinner:`_spinner_ses4f_126`,cancel:`_cancel_ses4f_134`,error:`_error_ses4f_148`,usage:`_usage_ses4f_156`,foot:`_foot_ses4f_166`},h=e=>e instanceof HTMLElement&&(e.isContentEditable||[`INPUT`,`TEXTAREA`,`SELECT`].includes(e.tagName));function g(){let g=a.value,_=r(null);if(n(()=>{_.current?.focus()},[g?.sessionId,g?.pending?.question]),n(()=>{let e=e=>{let t=a.value;t&&!e.defaultPrevented&&(e.key===`Escape`?(e.preventDefault(),l()):(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&!h(e.target)&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.preventDefault(),a.value=c(t,e.key===`ArrowLeft`?-1:1)))};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[]),!g)return null;let v=i(g),y=s(g),b=g.pending?.question??g.error?.question??v?.question,x=e=>{a.value&&(a.value=c(a.value,e))};return u(`aside`,{ref:_,class:m.panel,role:`dialog`,"aria-modal":`false`,"aria-labelledby":`btw-title`,tabIndex:-1,children:[u(`header`,{class:m.head,children:[u(`span`,{class:m.badge,"aria-hidden":`true`,children:`btw`}),u(`div`,{class:m.titles,children:[u(`h2`,{id:`btw-title`,class:m.title,children:t(`btw.title`)}),u(`p`,{class:m.eyebrow,children:t(`btw.subtitle`)})]}),g.entries.length&&!g.usage?u(`nav`,{class:m.nav,"aria-label":t(`btw.history`),children:[u(`button`,{type:`button`,class:`icon-btn`,"aria-label":t(`btw.earlier`),title:t(`btw.earlier`),disabled:!y.earlier,onClick:()=>x(-1),children:u(d,{name:`chevronRight`,size:16,class:m.flip})}),u(`span`,{class:m.position,"aria-live":`polite`,children:v?t(`btw.position`,{n:g.index+1,total:g.entries.length}):``}),u(`button`,{type:`button`,class:`icon-btn`,"aria-label":t(`btw.later`),title:t(`btw.later`),disabled:!y.later,onClick:()=>x(1),children:u(d,{name:`chevronRight`,size:16})})]}):null,v?u(f,{text:()=>v.answer,label:t(`btw.copy`)}):null,u(`button`,{type:`button`,class:`icon-btn`,"aria-label":t(`common.close`),title:t(`common.close`),onClick:()=>l(),children:u(d,{name:`x`,size:16})})]}),u(`div`,{class:m.body,children:g.usage?u(`div`,{class:m.usage,children:[u(`code`,{children:o}),u(`p`,{children:t(`btw.usage`)})]}):u(e,{children:[b?u(`p`,{class:m.question,children:b}):null,g.pending?u(`div`,{class:m.pending,role:`status`,children:[u(`span`,{class:`${m.spinner} spin`,"aria-hidden":`true`}),u(`span`,{children:t(`btw.thinking`)}),u(`button`,{type:`button`,class:m.cancel,onClick:()=>l(),children:t(`common.cancel`)})]}):g.error?u(`p`,{class:m.error,role:`alert`,children:g.error.message}):v?u(`div`,{class:m.answer,children:u(p,{text:v.answer})}):null]})}),v?u(`footer`,{class:m.foot,children:[t(`btw.tokens`,{model:v.model,input:v.usage.input.toLocaleString(),output:v.usage.output.toLocaleString()}),v.truncated?` · ${t(`btw.truncated`)}`:``]}):null]})}export{g as BtwPanel};
@@ -1 +1 @@
1
- import{a as e,b as t,g as n,y as r}from"./i18n-BZax1Psk.js";import{b as i,d as a,j as o}from"./app-D95B_PAO.js";import{t as s}from"./jsxRuntime-C-CM9h-f.js";import{t as c}from"./icons-nQx96NOf.js";import{t as l}from"./settings.module-DoTtRfeo.js";var u={dialog:`_dialog_rbvxx_1`,head:`_head_rbvxx_17`,title:`_title_rbvxx_26`,lead:`_lead_rbvxx_32`,body:`_body_rbvxx_38`,entry:`_entry_rbvxx_43`,version:`_version_rbvxx_51`,badge:`_badge_rbvxx_60`,section:`_section_rbvxx_69`,items:`_items_rbvxx_78`,note:`_note_rbvxx_88`,link:`_link_rbvxx_92`},d=e=>e.split(/(`[^`]+`)/).map((e,t)=>e.startsWith("`")&&e.endsWith("`")&&e.length>2?s(`code`,{children:e.slice(1,-1)},t):e);function f(f){let p=n(null),m=f.version,[h,g]=r({});t(()=>{let e=!0;return g({}),a.changelog(m?{version:m}:{}).then(t=>e&&g({view:t}),()=>e&&g({error:!0})),()=>{e=!1}},[m]),t(()=>(p.current?.focus(),()=>{o.value++}),[]);let _=()=>{i.value=void 0},v=h.view;return s(`div`,{class:l.backdrop,onMouseDown:e=>{e.target===e.currentTarget&&_()},children:s(`div`,{ref:p,class:u.dialog,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`changelog-title`,tabIndex:-1,onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),_())},children:[s(`div`,{class:u.head,children:[s(`div`,{children:[s(`h3`,{class:u.title,id:`changelog-title`,children:e(`changelog.title`)}),v?s(`p`,{class:u.lead,children:v.current}):null]}),s(`button`,{type:`button`,class:`icon-btn`,"aria-label":e(`common.close`),onClick:_,children:s(c,{name:`x`,size:18})})]}),s(`div`,{class:u.body,children:h.error?s(`p`,{class:u.note,role:`alert`,children:e(`changelog.loadFailed`)}):v?v.found?v.entries.map(t=>s(`section`,{class:u.entry,children:[s(`h4`,{class:u.version,children:[t.date?`${t.version} · ${t.date}`:t.version,t.unreleased?s(`span`,{class:u.badge,children:e(`changelog.unreleased`)}):null]}),t.sections.map(e=>s(`div`,{children:[s(`p`,{class:u.section,children:e.title}),s(`ul`,{class:u.items,children:e.items.map(e=>s(`li`,{children:d(e)},e))})]},e.title))]},t.version)):s(`p`,{class:u.note,children:e(`changelog.notFound`,{version:m})}):s(`p`,{class:u.note,children:e(`common.loading`)})})]})})}export{f as ChangelogDialog};
1
+ import{a as e,b as t,g as n,y as r}from"./i18n-BGlOHOa5.js";import{b as i,d as a,j as o}from"./app-B_dNXnFa.js";import{t as s}from"./jsxRuntime-CU76aMLO.js";import{t as c}from"./icons-BWy-tv8u.js";import{t as l}from"./settings.module-BClxMWCR.js";var u={dialog:`_dialog_rbvxx_1`,head:`_head_rbvxx_17`,title:`_title_rbvxx_26`,lead:`_lead_rbvxx_32`,body:`_body_rbvxx_38`,entry:`_entry_rbvxx_43`,version:`_version_rbvxx_51`,badge:`_badge_rbvxx_60`,section:`_section_rbvxx_69`,items:`_items_rbvxx_78`,note:`_note_rbvxx_88`,link:`_link_rbvxx_92`},d=e=>e.split(/(`[^`]+`)/).map((e,t)=>e.startsWith("`")&&e.endsWith("`")&&e.length>2?s(`code`,{children:e.slice(1,-1)},t):e);function f(f){let p=n(null),m=f.version,[h,g]=r({});t(()=>{let e=!0;return g({}),a.changelog(m?{version:m}:{}).then(t=>e&&g({view:t}),()=>e&&g({error:!0})),()=>{e=!1}},[m]),t(()=>(p.current?.focus(),()=>{o.value++}),[]);let _=()=>{i.value=void 0},v=h.view;return s(`div`,{class:l.backdrop,onMouseDown:e=>{e.target===e.currentTarget&&_()},children:s(`div`,{ref:p,class:u.dialog,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`changelog-title`,tabIndex:-1,onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),_())},children:[s(`div`,{class:u.head,children:[s(`div`,{children:[s(`h3`,{class:u.title,id:`changelog-title`,children:e(`changelog.title`)}),v?s(`p`,{class:u.lead,children:v.current}):null]}),s(`button`,{type:`button`,class:`icon-btn`,"aria-label":e(`common.close`),onClick:_,children:s(c,{name:`x`,size:18})})]}),s(`div`,{class:u.body,children:h.error?s(`p`,{class:u.note,role:`alert`,children:e(`changelog.loadFailed`)}):v?v.found?v.entries.map(t=>s(`section`,{class:u.entry,children:[s(`h4`,{class:u.version,children:[t.date?`${t.version} · ${t.date}`:t.version,t.unreleased?s(`span`,{class:u.badge,children:e(`changelog.unreleased`)}):null]}),t.sections.map(e=>s(`div`,{children:[s(`p`,{class:u.section,children:e.title}),s(`ul`,{class:u.items,children:e.items.map(e=>s(`li`,{children:d(e)},e))})]},e.title))]},t.version)):s(`p`,{class:u.note,children:e(`changelog.notFound`,{version:m})}):s(`p`,{class:u.note,children:e(`common.loading`)})})]})})}export{f as ChangelogDialog};
@@ -1 +1 @@
1
- import{a as e,y as t}from"./i18n-BZax1Psk.js";import{t as n}from"./jsxRuntime-C-CM9h-f.js";import{t as r}from"./icons-nQx96NOf.js";import{t as i}from"./clipboard-hOiC7lD8.js";function a(a){let[o,s]=t(!1),c=o?e(`common.copied`):a.label??e(`common.copy`);return n(`button`,{type:`button`,class:a.class??`icon-btn`,"aria-label":a.showText?void 0:c,title:c,onClick:async()=>{await i(a.text())&&(s(!0),setTimeout(()=>s(!1),1500))},children:[n(r,{name:o?`check`:`copy`,size:15}),a.showText?n(`span`,{children:c}):null]})}export{a as t};
1
+ import{a as e,y as t}from"./i18n-BGlOHOa5.js";import{t as n}from"./jsxRuntime-CU76aMLO.js";import{t as r}from"./icons-BWy-tv8u.js";import{t as i}from"./clipboard-hOiC7lD8.js";function a(a){let[o,s]=t(!1),c=o?e(`common.copied`):a.label??e(`common.copy`);return n(`button`,{type:`button`,class:a.class??`icon-btn`,"aria-label":a.showText?void 0:c,title:c,onClick:async()=>{await i(a.text())&&(s(!0),setTimeout(()=>s(!1),1500))},children:[n(r,{name:o?`check`:`copy`,size:15}),a.showText?n(`span`,{children:c}):null]})}export{a as t};
@@ -1 +1 @@
1
- import{b as e,g as t,y as n}from"./i18n-BZax1Psk.js";import{M as r,j as i}from"./app-D95B_PAO.js";import{t as a}from"./jsxRuntime-C-CM9h-f.js";import{barActions as o,budgetLevel as s,budgetPercent as c,clearGoal as l,compactTokens as u,editing as d,formatElapsed as f,hasReport as p,i as m,n as h,pauseGoal as g,r as _,resumeGoal as v,saveGoal as y,t as b,working as x}from"./goal-ChMqHxdJ.js";var S={wrap:`_wrap_jqhpt_1`,bar:`_bar_jqhpt_5`,head:`_head_jqhpt_35`,chip:`_chip_jqhpt_42`,objective:`_objective_jqhpt_70`,actions:`_actions_jqhpt_80`,formActions:`_formActions_jqhpt_87`,primary:`_primary_jqhpt_106`,meta:`_meta_jqhpt_111`,budget:`_budget_jqhpt_120`,track:`_track_jqhpt_126`,fill:`_fill_jqhpt_136`,stat:`_stat_jqhpt_151`,why:`_why_jqhpt_155`,report:`_report_jqhpt_179`,form:`_form_jqhpt_87`,field:`_field_jqhpt_203`},C=4e3;function w(r){let{goal:o}=r,[s,c]=n(o.objective),[l,u]=n(o.tokenBudget===void 0?``:String(o.tokenBudget)),f=t(null);e(()=>{f.current?.focus()},[]);let p=()=>{d.value=!1,i.value++},m=async()=>{!x.value&&s.trim()&&await y(o,{objective:s,budget:l})&&i.value++};return a(`form`,{class:S.form,onSubmit:e=>{e.preventDefault(),m()},onKeyDown:e=>{e.key===`Escape`?(e.preventDefault(),p()):e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),m())},children:[a(`label`,{class:S.field,children:[a(`span`,{children:b(`objective`)}),a(`textarea`,{ref:f,rows:3,maxLength:C,value:s,onInput:e=>c(e.currentTarget.value)})]}),a(`label`,{class:S.field,children:[a(`span`,{children:b(`budget`)}),a(`input`,{type:`text`,inputMode:`text`,autocomplete:`off`,value:l,placeholder:`50k`,"aria-describedby":`goal-budget-hint`,onInput:e=>u(e.currentTarget.value)}),a(`small`,{id:`goal-budget-hint`,children:b(`budgetHint`)})]}),a(`div`,{class:S.formActions,children:[a(`button`,{type:`submit`,class:S.primary,disabled:x.value||!s.trim(),children:b(`save`)}),a(`button`,{type:`button`,onClick:p,children:b(`cancel`)})]})]})}function T(e){let{goal:t}=e,n=c(t);return n===void 0?a(`span`,{class:S.stat,title:b(`noLimit`),children:b(`noBudget`,{used:u(t.tokensUsed)})}):a(`span`,{class:S.budget,children:[a(`span`,{class:S.track,role:`progressbar`,"aria-label":b(`budgetBar`),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n,"data-level":s(n),children:a(`span`,{class:S.fill,style:{width:`${n}%`}})}),a(`span`,{class:S.stat,children:b(`budgetLabel`,{used:u(t.tokensUsed),budget:u(t.tokenBudget??0)})})]})}function E(){let e=r.value;if(!e)return null;let t=(e.waiting?m(e.waiting):void 0)??(e.status===`active`?``:h(e.reason,e.detail)),n=o(e),i=x.value;return a(`section`,{class:S.wrap,"aria-label":b(`label`),children:a(`div`,{class:S.bar,"data-status":e.status,children:[a(`div`,{class:S.head,children:[a(`span`,{class:S.chip,"data-status":e.status,children:_(e.status)}),d.value?null:a(`p`,{class:S.objective,title:e.objective,children:e.objective}),d.value?null:a(`div`,{class:S.actions,children:[n.includes(`pause`)?a(`button`,{type:`button`,disabled:i,onClick:()=>void g(e),children:b(`pause`)}):null,n.includes(`resume`)?a(`button`,{type:`button`,class:S.primary,disabled:i,onClick:()=>void v(e),children:b(`resume`)}):null,n.includes(`edit`)?a(`button`,{type:`button`,disabled:i,onClick:()=>{d.value=!0},children:b(`edit`)}):null,n.includes(`clear`)?a(`button`,{type:`button`,disabled:i,onClick:()=>void l(e),children:b(`clear`)}):null]})]}),d.value?a(w,{goal:e}):null,a(`div`,{class:S.meta,children:[a(T,{goal:e}),a(`span`,{class:S.stat,children:b(`turns`,{used:e.turnsUsed,max:e.maxTurns})}),a(`span`,{class:S.stat,children:b(`time`,{time:f(e.activeMs)})})]}),a(`p`,{class:S.why,role:`status`,"aria-live":`polite`,"data-tone":e.waiting?`wait`:e.status,children:t}),p(e)?a(`details`,{class:S.report,children:[a(`summary`,{children:b(`report`)}),a(`p`,{children:e.summary}),e.evidence?.length?a(`ul`,{children:e.evidence.map((e,t)=>a(`li`,{children:[a(`code`,{children:e.kind}),` `,e.detail]},`${e.kind}-${t}`))}):null]}):null]})})}export{E as GoalBar};
1
+ import{b as e,g as t,y as n}from"./i18n-BGlOHOa5.js";import{M as r,j as i}from"./app-B_dNXnFa.js";import{t as a}from"./jsxRuntime-CU76aMLO.js";import{barActions as o,budgetLevel as s,budgetPercent as c,clearGoal as l,compactTokens as u,editing as d,formatElapsed as f,hasReport as p,i as m,n as h,pauseGoal as g,r as _,resumeGoal as v,saveGoal as y,t as b,working as x}from"./goal-D5qC2_WT.js";var S={wrap:`_wrap_jqhpt_1`,bar:`_bar_jqhpt_5`,head:`_head_jqhpt_35`,chip:`_chip_jqhpt_42`,objective:`_objective_jqhpt_70`,actions:`_actions_jqhpt_80`,formActions:`_formActions_jqhpt_87`,primary:`_primary_jqhpt_106`,meta:`_meta_jqhpt_111`,budget:`_budget_jqhpt_120`,track:`_track_jqhpt_126`,fill:`_fill_jqhpt_136`,stat:`_stat_jqhpt_151`,why:`_why_jqhpt_155`,report:`_report_jqhpt_179`,form:`_form_jqhpt_87`,field:`_field_jqhpt_203`},C=4e3;function w(r){let{goal:o}=r,[s,c]=n(o.objective),[l,u]=n(o.tokenBudget===void 0?``:String(o.tokenBudget)),f=t(null);e(()=>{f.current?.focus()},[]);let p=()=>{d.value=!1,i.value++},m=async()=>{!x.value&&s.trim()&&await y(o,{objective:s,budget:l})&&i.value++};return a(`form`,{class:S.form,onSubmit:e=>{e.preventDefault(),m()},onKeyDown:e=>{e.key===`Escape`?(e.preventDefault(),p()):e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),m())},children:[a(`label`,{class:S.field,children:[a(`span`,{children:b(`objective`)}),a(`textarea`,{ref:f,rows:3,maxLength:C,value:s,onInput:e=>c(e.currentTarget.value)})]}),a(`label`,{class:S.field,children:[a(`span`,{children:b(`budget`)}),a(`input`,{type:`text`,inputMode:`text`,autocomplete:`off`,value:l,placeholder:`50k`,"aria-describedby":`goal-budget-hint`,onInput:e=>u(e.currentTarget.value)}),a(`small`,{id:`goal-budget-hint`,children:b(`budgetHint`)})]}),a(`div`,{class:S.formActions,children:[a(`button`,{type:`submit`,class:S.primary,disabled:x.value||!s.trim(),children:b(`save`)}),a(`button`,{type:`button`,onClick:p,children:b(`cancel`)})]})]})}function T(e){let{goal:t}=e,n=c(t);return n===void 0?a(`span`,{class:S.stat,title:b(`noLimit`),children:b(`noBudget`,{used:u(t.tokensUsed)})}):a(`span`,{class:S.budget,children:[a(`span`,{class:S.track,role:`progressbar`,"aria-label":b(`budgetBar`),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n,"data-level":s(n),children:a(`span`,{class:S.fill,style:{width:`${n}%`}})}),a(`span`,{class:S.stat,children:b(`budgetLabel`,{used:u(t.tokensUsed),budget:u(t.tokenBudget??0)})})]})}function E(){let e=r.value;if(!e)return null;let t=(e.waiting?m(e.waiting):void 0)??(e.status===`active`?``:h(e.reason,e.detail)),n=o(e),i=x.value;return a(`section`,{class:S.wrap,"aria-label":b(`label`),children:a(`div`,{class:S.bar,"data-status":e.status,children:[a(`div`,{class:S.head,children:[a(`span`,{class:S.chip,"data-status":e.status,children:_(e.status)}),d.value?null:a(`p`,{class:S.objective,title:e.objective,children:e.objective}),d.value?null:a(`div`,{class:S.actions,children:[n.includes(`pause`)?a(`button`,{type:`button`,disabled:i,onClick:()=>void g(e),children:b(`pause`)}):null,n.includes(`resume`)?a(`button`,{type:`button`,class:S.primary,disabled:i,onClick:()=>void v(e),children:b(`resume`)}):null,n.includes(`edit`)?a(`button`,{type:`button`,disabled:i,onClick:()=>{d.value=!0},children:b(`edit`)}):null,n.includes(`clear`)?a(`button`,{type:`button`,disabled:i,onClick:()=>void l(e),children:b(`clear`)}):null]})]}),d.value?a(w,{goal:e}):null,a(`div`,{class:S.meta,children:[a(T,{goal:e}),a(`span`,{class:S.stat,children:b(`turns`,{used:e.turnsUsed,max:e.maxTurns})}),a(`span`,{class:S.stat,children:b(`time`,{time:f(e.activeMs)})})]}),a(`p`,{class:S.why,role:`status`,"aria-live":`polite`,"data-tone":e.waiting?`wait`:e.status,children:t}),p(e)?a(`details`,{class:S.report,children:[a(`summary`,{children:b(`report`)}),a(`p`,{children:e.summary}),e.evidence?.length?a(`ul`,{children:e.evidence.map((e,t)=>a(`li`,{children:[a(`code`,{children:e.kind}),` `,e.detail]},`${e.kind}-${t}`))}):null]}):null]})})}export{E as GoalBar};
@@ -1,2 +1,2 @@
1
- import{T as e,b as t,g as n,h as r,o as i,r as a,y as o}from"./i18n-BZax1Psk.js";import{E as s,d as c}from"./app-D95B_PAO.js";import{t as l}from"./jsxRuntime-C-CM9h-f.js";import{t as u}from"./icons-nQx96NOf.js";import{b as d}from"./index-Bfl4EFzp.js";function f(e,t,n={}){let r=new URLSearchParams;for(let[e,t]of Object.entries(n))t!==void 0&&t!==``&&r.set(e,String(t));let i=r.toString();return`/api/sessions/${encodeURIComponent(e)}/views/memory/${t}${i?`?${i}`:``}`}var p=()=>({status:`loading`,items:[],loadingMore:!1}),m=(e=``,t=``,n=``)=>({sessionId:e,type:t,query:n,records:p(),summary:{status:`loading`},context:{status:`loading`}}),h=e=>e instanceof Error?e.message:String(e),g=e=>e instanceof Error&&e.name===`AbortError`;function _(e,t){let n=new Set(e.map(e=>e.id));return[...e,...t.filter(e=>!n.has(e.id))]}function v(e,t={}){let n=t.pageSize??20,i=r(m()),a={records:0,summary:0,context:0},o={},s=e=>{o[e]?.abort();let t=new AbortController;return o[e]=t,{id:++a[e],signal:t.signal}},c=(e,t,n)=>a[e]===t&&i.value.sessionId===n,l=e=>{i.value={...i.value,...e}};function u(t){let{sessionId:r,type:a,query:o,records:u}=i.value;if(t&&(!u.next||u.loadingMore||u.status!==`ready`))return;let{id:d,signal:f}=s(`records`),m=t?u.next:void 0;i.value={...i.value,records:t?{...u,loadingMore:!0,loadMoreError:void 0}:p()},e(r,`records`,{limit:n,...a?{type:a}:{},...o?{q:o}:{},...m?{cursor:m}:{}},f).then(e=>{if(!c(`records`,d,r))return;let n=e,a=i.value.records;l({records:{status:`ready`,items:t?_(a.items,n.items):n.items,...n.total===void 0?{}:{total:n.total},...n.next?{next:n.next}:{},loadingMore:!1}})},e=>{if(g(e)||!c(`records`,d,r))return;let n=i.value.records;l({records:t?{...n,loadingMore:!1,loadMoreError:h(e)}:{...p(),status:`error`,error:h(e)}})})}function d(t){let{sessionId:n}=i.value,{id:r,signal:a}=s(t);l({[t]:{status:`loading`}}),e(n,t,{},a).then(e=>{if(!c(t,r,n))return;let i=e[t];l({[t]:{status:`ready`,value:i?{content:i.content,truncated:i.truncated,at:i.updatedAt??i.injectedAt??0}:null}})},e=>{!g(e)&&c(t,r,n)&&l({[t]:{status:`error`,error:h(e)}})})}let f=()=>{u(!1),d(`summary`),d(`context`)};return{state:i,open(e){i.value=m(e),f()},refresh(){i.value.sessionId&&(i.value=m(i.value.sessionId,i.value.type,i.value.query),f())},setType(e){e!==i.value.type&&(l({type:e}),u(!1))},setQuery(e){let t=e.trim();t!==i.value.query&&(l({query:t}),u(!1))},loadMore:()=>u(!0),retry(e){e===`records`?u(!1):d(e)},close(){for(let e of[`records`,`summary`,`context`])o[e]?.abort(),a[e]++}}}var y={tab:`_tab_1bxw2_2`,top:`_top_1bxw2_15`,lead:`_lead_1bxw2_23`,hint:`_hint_1bxw2_24`,muted:`_muted_1bxw2_25`,empty:`_empty_1bxw2_35`,section:`_section_1bxw2_41`,heading:`_heading_1bxw2_50`,count:`_count_1bxw2_59`,button:`_button_1bxw2_65`,link:`_link_1bxw2_90`,field:`_field_1bxw2_91`,filters:`_filters_1bxw2_112`,grow:`_grow_1bxw2_128`,list:`_list_1bxw2_144`,entry:`_entry_1bxw2_153`,entryHead:`_entryHead_1bxw2_165`,entryTitle:`_entryTitle_1bxw2_173`,kind:`_kind_1bxw2_181`,pin:`_pin_1bxw2_182`,body:`_body_1bxw2_198`,meta:`_meta_1bxw2_211`,note:`_note_1bxw2_225`,json:`_json_1bxw2_231`,error:`_error_1bxw2_242`,errorDetail:`_errorDetail_1bxw2_261`,skeleton:`_skeleton_1bxw2_265`,pulse:`_pulse_1bxw2_1`},b={title:`Memory of this chat`,lead:`Read-only view of what the memory plugin holds for this chat. Nothing here can be edited.`,refresh:`Refresh`,empty:`No memory stored for this chat yet`,savedTitle:`Saved in this chat`,savedHint:`Memories saved while this chat was open. Pinned first, then newest.`,summaryTitle:`Session summary`,summaryEmpty:`No session summary has been stored for this chat yet.`,contextTitle:`Context loaded`,contextHint:`The memory context the plugin added when this chat started.`,contextEmpty:`No memory context was loaded when this chat started.`,filterType:`Type`,allTypes:`All types`,search:`Search saved memories`,searchPlaceholder:`Search title, content or topic`,noResults:`No saved memory matches this filter.`,savedEmpty:`Nothing was saved while this chat was open.`,count:`{shown} of {total}`,loadMore:`Load more`,loading:`Loading…`,retry:`Retry`,error:`Couldn't load this section.`,loadMoreError:`Couldn't load more memories.`,expand:`Show more`,collapse:`Show less`,details:`Details`,hideDetails:`Hide details`,pinned:`Pinned`,updated:`Updated {time}`,created:`Created {time}`,loadedAt:`Loaded {time}`,source:`Source: {source}`,scopeProject:`Project`,scopePersonal:`Personal`,shortened:`Shortened for display.`,"type.decision":`Decision`,"type.bugfix":`Bug fix`,"type.discovery":`Discovery`,"type.pattern":`Pattern`,"type.architecture":`Architecture`,"type.config":`Configuration`,"type.preference":`Preference`,"type.learning":`Learning`},x={en:b,es:{title:`Memoria de este chat`,lead:`Vista de solo lectura de lo que el plugin de memoria guarda para este chat. Nada de aquí se puede editar.`,refresh:`Actualizar`,empty:`Aún no hay memoria guardada para este chat`,savedTitle:`Guardado en este chat`,savedHint:`Memorias guardadas mientras este chat estaba abierto. Primero las fijadas, luego las más recientes.`,summaryTitle:`Resumen de la sesión`,summaryEmpty:`Todavía no se guardó un resumen de la sesión para este chat.`,contextTitle:`Contexto cargado`,contextHint:`El contexto de memoria que el plugin añadió cuando empezó este chat.`,contextEmpty:`No se cargó contexto de memoria cuando empezó este chat.`,filterType:`Tipo`,allTypes:`Todos los tipos`,search:`Buscar en las memorias guardadas`,searchPlaceholder:`Buscar en título, contenido o tema`,noResults:`Ninguna memoria guardada coincide con este filtro.`,savedEmpty:`No se guardó nada mientras este chat estaba abierto.`,count:`{shown} de {total}`,loadMore:`Cargar más`,loading:`Cargando…`,retry:`Reintentar`,error:`No se pudo cargar esta sección.`,loadMoreError:`No se pudieron cargar más memorias.`,expand:`Ver más`,collapse:`Ver menos`,details:`Detalles`,hideDetails:`Ocultar detalles`,pinned:`Fijada`,updated:`Actualizada {time}`,created:`Creada {time}`,loadedAt:`Cargado {time}`,source:`Origen: {source}`,scopeProject:`Proyecto`,scopePersonal:`Personal`,shortened:`Acortado para mostrarlo.`,"type.decision":`Decisión`,"type.bugfix":`Corrección`,"type.discovery":`Descubrimiento`,"type.pattern":`Patrón`,"type.architecture":`Arquitectura`,"type.config":`Configuración`,"type.preference":`Preferencia`,"type.learning":`Aprendizaje`}},S=(e,t)=>i(x[a.value][e]??b[e],t),C=v((e,t,n,r)=>c.request(`GET`,f(e,t,n),void 0,{signal:r})),w=[`decision`,`bugfix`,`discovery`,`pattern`,`architecture`,`config`,`preference`,`learning`],T=new Set(w),E=300,D=320,O=6,k=e=>e?new Date(e).toLocaleString():`—`,A=e=>e.length>D||e.split(`
1
+ import{T as e,b as t,g as n,h as r,o as i,r as a,y as o}from"./i18n-BGlOHOa5.js";import{E as s,d as c}from"./app-B_dNXnFa.js";import{t as l}from"./jsxRuntime-CU76aMLO.js";import{t as u}from"./icons-BWy-tv8u.js";import{x as d}from"./index-CcgO2jIy.js";function f(e,t,n={}){let r=new URLSearchParams;for(let[e,t]of Object.entries(n))t!==void 0&&t!==``&&r.set(e,String(t));let i=r.toString();return`/api/sessions/${encodeURIComponent(e)}/views/memory/${t}${i?`?${i}`:``}`}var p=()=>({status:`loading`,items:[],loadingMore:!1}),m=(e=``,t=``,n=``)=>({sessionId:e,type:t,query:n,records:p(),summary:{status:`loading`},context:{status:`loading`}}),h=e=>e instanceof Error?e.message:String(e),g=e=>e instanceof Error&&e.name===`AbortError`;function _(e,t){let n=new Set(e.map(e=>e.id));return[...e,...t.filter(e=>!n.has(e.id))]}function v(e,t={}){let n=t.pageSize??20,i=r(m()),a={records:0,summary:0,context:0},o={},s=e=>{o[e]?.abort();let t=new AbortController;return o[e]=t,{id:++a[e],signal:t.signal}},c=(e,t,n)=>a[e]===t&&i.value.sessionId===n,l=e=>{i.value={...i.value,...e}};function u(t){let{sessionId:r,type:a,query:o,records:u}=i.value;if(t&&(!u.next||u.loadingMore||u.status!==`ready`))return;let{id:d,signal:f}=s(`records`),m=t?u.next:void 0;i.value={...i.value,records:t?{...u,loadingMore:!0,loadMoreError:void 0}:p()},e(r,`records`,{limit:n,...a?{type:a}:{},...o?{q:o}:{},...m?{cursor:m}:{}},f).then(e=>{if(!c(`records`,d,r))return;let n=e,a=i.value.records;l({records:{status:`ready`,items:t?_(a.items,n.items):n.items,...n.total===void 0?{}:{total:n.total},...n.next?{next:n.next}:{},loadingMore:!1}})},e=>{if(g(e)||!c(`records`,d,r))return;let n=i.value.records;l({records:t?{...n,loadingMore:!1,loadMoreError:h(e)}:{...p(),status:`error`,error:h(e)}})})}function d(t){let{sessionId:n}=i.value,{id:r,signal:a}=s(t);l({[t]:{status:`loading`}}),e(n,t,{},a).then(e=>{if(!c(t,r,n))return;let i=e[t];l({[t]:{status:`ready`,value:i?{content:i.content,truncated:i.truncated,at:i.updatedAt??i.injectedAt??0}:null}})},e=>{!g(e)&&c(t,r,n)&&l({[t]:{status:`error`,error:h(e)}})})}let f=()=>{u(!1),d(`summary`),d(`context`)};return{state:i,open(e){i.value=m(e),f()},refresh(){i.value.sessionId&&(i.value=m(i.value.sessionId,i.value.type,i.value.query),f())},setType(e){e!==i.value.type&&(l({type:e}),u(!1))},setQuery(e){let t=e.trim();t!==i.value.query&&(l({query:t}),u(!1))},loadMore:()=>u(!0),retry(e){e===`records`?u(!1):d(e)},close(){for(let e of[`records`,`summary`,`context`])o[e]?.abort(),a[e]++}}}var y={tab:`_tab_1bxw2_2`,top:`_top_1bxw2_15`,lead:`_lead_1bxw2_23`,hint:`_hint_1bxw2_24`,muted:`_muted_1bxw2_25`,empty:`_empty_1bxw2_35`,section:`_section_1bxw2_41`,heading:`_heading_1bxw2_50`,count:`_count_1bxw2_59`,button:`_button_1bxw2_65`,link:`_link_1bxw2_90`,field:`_field_1bxw2_91`,filters:`_filters_1bxw2_112`,grow:`_grow_1bxw2_128`,list:`_list_1bxw2_144`,entry:`_entry_1bxw2_153`,entryHead:`_entryHead_1bxw2_165`,entryTitle:`_entryTitle_1bxw2_173`,kind:`_kind_1bxw2_181`,pin:`_pin_1bxw2_182`,body:`_body_1bxw2_198`,meta:`_meta_1bxw2_211`,note:`_note_1bxw2_225`,json:`_json_1bxw2_231`,error:`_error_1bxw2_242`,errorDetail:`_errorDetail_1bxw2_261`,skeleton:`_skeleton_1bxw2_265`,pulse:`_pulse_1bxw2_1`},b={title:`Memory of this chat`,lead:`Read-only view of what the memory plugin holds for this chat. Nothing here can be edited.`,refresh:`Refresh`,empty:`No memory stored for this chat yet`,savedTitle:`Saved in this chat`,savedHint:`Memories saved while this chat was open. Pinned first, then newest.`,summaryTitle:`Session summary`,summaryEmpty:`No session summary has been stored for this chat yet.`,contextTitle:`Context loaded`,contextHint:`The memory context the plugin added when this chat started.`,contextEmpty:`No memory context was loaded when this chat started.`,filterType:`Type`,allTypes:`All types`,search:`Search saved memories`,searchPlaceholder:`Search title, content or topic`,noResults:`No saved memory matches this filter.`,savedEmpty:`Nothing was saved while this chat was open.`,count:`{shown} of {total}`,loadMore:`Load more`,loading:`Loading…`,retry:`Retry`,error:`Couldn't load this section.`,loadMoreError:`Couldn't load more memories.`,expand:`Show more`,collapse:`Show less`,details:`Details`,hideDetails:`Hide details`,pinned:`Pinned`,updated:`Updated {time}`,created:`Created {time}`,loadedAt:`Loaded {time}`,source:`Source: {source}`,scopeProject:`Project`,scopePersonal:`Personal`,shortened:`Shortened for display.`,"type.decision":`Decision`,"type.bugfix":`Bug fix`,"type.discovery":`Discovery`,"type.pattern":`Pattern`,"type.architecture":`Architecture`,"type.config":`Configuration`,"type.preference":`Preference`,"type.learning":`Learning`},x={en:b,es:{title:`Memoria de este chat`,lead:`Vista de solo lectura de lo que el plugin de memoria guarda para este chat. Nada de aquí se puede editar.`,refresh:`Actualizar`,empty:`Aún no hay memoria guardada para este chat`,savedTitle:`Guardado en este chat`,savedHint:`Memorias guardadas mientras este chat estaba abierto. Primero las fijadas, luego las más recientes.`,summaryTitle:`Resumen de la sesión`,summaryEmpty:`Todavía no se guardó un resumen de la sesión para este chat.`,contextTitle:`Contexto cargado`,contextHint:`El contexto de memoria que el plugin añadió cuando empezó este chat.`,contextEmpty:`No se cargó contexto de memoria cuando empezó este chat.`,filterType:`Tipo`,allTypes:`Todos los tipos`,search:`Buscar en las memorias guardadas`,searchPlaceholder:`Buscar en título, contenido o tema`,noResults:`Ninguna memoria guardada coincide con este filtro.`,savedEmpty:`No se guardó nada mientras este chat estaba abierto.`,count:`{shown} de {total}`,loadMore:`Cargar más`,loading:`Cargando…`,retry:`Reintentar`,error:`No se pudo cargar esta sección.`,loadMoreError:`No se pudieron cargar más memorias.`,expand:`Ver más`,collapse:`Ver menos`,details:`Detalles`,hideDetails:`Ocultar detalles`,pinned:`Fijada`,updated:`Actualizada {time}`,created:`Creada {time}`,loadedAt:`Cargado {time}`,source:`Origen: {source}`,scopeProject:`Proyecto`,scopePersonal:`Personal`,shortened:`Acortado para mostrarlo.`,"type.decision":`Decisión`,"type.bugfix":`Corrección`,"type.discovery":`Descubrimiento`,"type.pattern":`Patrón`,"type.architecture":`Arquitectura`,"type.config":`Configuración`,"type.preference":`Preferencia`,"type.learning":`Aprendizaje`}},S=(e,t)=>i(x[a.value][e]??b[e],t),C=v((e,t,n,r)=>c.request(`GET`,f(e,t,n),void 0,{signal:r})),w=[`decision`,`bugfix`,`discovery`,`pattern`,`architecture`,`config`,`preference`,`learning`],T=new Set(w),E=300,D=320,O=6,k=e=>e?new Date(e).toLocaleString():`—`,A=e=>e.length>D||e.split(`
2
2
  `).length>O;function j(){return l(`div`,{class:y.skeleton,role:`status`,"aria-label":S(`loading`),children:[l(`span`,{}),l(`span`,{}),l(`span`,{})]})}function M(e){return l(`div`,{class:y.error,role:`alert`,children:[l(`p`,{children:[e.label,e.message?l(`span`,{class:y.errorDetail,children:[` `,e.message]}):null]}),l(`button`,{type:`button`,class:y.button,onClick:e.onRetry,children:S(`retry`)})]})}function N(t){let[n,r]=o(!1),i=A(t.text);return l(e,{children:[l(`div`,{id:t.id,class:y.body,"data-clamped":i&&!n?`true`:void 0,children:l(d,{text:t.text})}),i?l(`button`,{type:`button`,class:y.link,"aria-expanded":n,"aria-controls":t.id,onClick:()=>r(!n),children:S(n?`collapse`:`expand`)}):null]})}function P({entry:e}){let[t,n]=o(!1),r=T.has(e.type)?S(`type.${e.type}`):e.type;return l(`li`,{class:y.entry,"data-pinned":e.pinned?`true`:void 0,children:[l(`div`,{class:y.entryHead,children:[l(`span`,{class:y.kind,children:r}),e.pinned?l(`span`,{class:y.pin,children:[l(u,{name:`pin`,size:13}),S(`pinned`)]}):null,l(`h4`,{class:y.entryTitle,children:e.title})]}),l(N,{id:`memory-entry-${e.id}`,text:e.content}),e.contentTruncated?l(`p`,{class:y.note,children:S(`shortened`)}):null,l(`p`,{class:y.meta,children:[l(`span`,{children:e.updatedAt?S(`updated`,{time:k(e.updatedAt)}):S(`created`,{time:k(e.createdAt)})}),e.source?l(`span`,{children:S(`source`,{source:e.source})}):null,l(`span`,{children:e.scope===`personal`?S(`scopePersonal`):S(`scopeProject`)}),e.topicKey?l(`code`,{children:e.topicKey}):null]}),l(`button`,{type:`button`,class:y.link,"aria-expanded":t,"aria-controls":`memory-json-${e.id}`,onClick:()=>n(!t),children:S(t?`hideDetails`:`details`)}),t?l(`pre`,{id:`memory-json-${e.id}`,class:y.json,children:JSON.stringify(e,null,2)}):null]})}function F(e){let[r,i]=o(e.query),a=n(!0);return t(()=>{if(a.current){a.current=!1;return}let e=setTimeout(()=>C.setQuery(r),E);return()=>clearTimeout(e)},[r]),l(`div`,{class:y.filters,children:[l(`label`,{class:y.field,children:[l(`span`,{children:S(`filterType`)}),l(`select`,{value:e.type,onChange:e=>C.setType(e.target.value),children:[l(`option`,{value:``,children:S(`allTypes`)}),w.map(e=>l(`option`,{value:e,children:S(`type.${e}`)},e))]})]}),l(`label`,{class:`${y.field} ${y.grow}`,children:[l(`span`,{children:S(`search`)}),l(`input`,{type:`search`,value:r,maxLength:200,placeholder:S(`searchPlaceholder`),onInput:e=>i(e.target.value)})]})]})}function I(t){let{records:n}=t,r=!!t.type||!!t.query;return l(`section`,{class:y.section,"aria-labelledby":`memory-saved`,children:[l(`h3`,{id:`memory-saved`,class:y.heading,children:[S(`savedTitle`),n.status===`ready`&&n.total!==void 0?l(`span`,{class:y.count,children:S(`count`,{shown:n.items.length,total:n.total})}):null]}),l(`p`,{class:y.hint,children:S(`savedHint`)}),n.status===`error`?l(M,{label:S(`error`),message:n.error,onRetry:()=>C.retry(`records`)}):n.status===`loading`?l(j,{}):l(e,{children:[n.items.length||r?l(F,{type:t.type,query:t.query}):null,n.items.length?l(`ul`,{class:y.list,children:n.items.map(e=>l(P,{entry:e},e.id))}):l(`p`,{class:y.muted,children:S(r?`noResults`:`savedEmpty`)}),n.loadMoreError?l(M,{label:S(`loadMoreError`),message:n.loadMoreError,onRetry:C.loadMore}):null,n.next?l(`button`,{type:`button`,class:y.button,disabled:n.loadingMore,onClick:C.loadMore,children:n.loadingMore?S(`loading`):S(`loadMore`)}):null]})]})}function L(t){let{state:n}=t;return l(`section`,{class:y.section,"aria-labelledby":t.id,children:[l(`h3`,{id:t.id,class:y.heading,children:t.title}),t.hint?l(`p`,{class:y.hint,children:t.hint}):null,n.status===`loading`?l(j,{}):n.status===`error`?l(M,{label:S(`error`),message:n.error,onRetry:t.onRetry}):n.value?l(e,{children:[l(N,{id:`${t.id}-body`,text:n.value.content}),n.value.truncated?l(`p`,{class:y.note,children:S(`shortened`)}):null,l(`p`,{class:y.meta,children:l(`span`,{children:S(t.stamp,{time:k(n.value.at)})})})]}):l(`p`,{class:y.muted,children:t.empty})]})}function R(n){t(()=>(C.open(n.id),()=>C.close()),[n.id]);let r=C.state.value;if(r.sessionId!==n.id)return l(j,{});let{records:i,summary:a,context:o}=r,s=i.status===`ready`&&a.status===`ready`&&o.status===`ready`&&!i.items.length&&!r.type&&!r.query&&!a.value&&!o.value;return l(e,{children:[l(`div`,{class:y.top,children:[l(`p`,{class:y.lead,children:S(`lead`)}),l(`button`,{type:`button`,class:y.button,onClick:C.refresh,children:[l(u,{name:`refresh`,size:14}),S(`refresh`)]})]}),s?l(`p`,{class:y.empty,children:S(`empty`)}):l(e,{children:[l(I,{records:i,type:r.type,query:r.query}),l(L,{id:`memory-summary`,title:S(`summaryTitle`),empty:S(`summaryEmpty`),stamp:`updated`,state:a,onRetry:()=>C.retry(`summary`)}),l(L,{id:`memory-context`,title:S(`contextTitle`),hint:S(`contextHint`),empty:S(`contextEmpty`),stamp:`loadedAt`,state:o,onRetry:()=>C.retry(`context`)})]})]})}function z(){let e=s.value;return l(`section`,{class:y.tab,"aria-label":S(`title`),children:e?l(R,{id:e},e):null})}export{z as MemoryTab};
@@ -0,0 +1 @@
1
+ import{a as e,b as t,g as n,y as r}from"./i18n-BGlOHOa5.js";import{E as i,J as a,Lt as o,ct as s,k as c}from"./app-B_dNXnFa.js";import{t as l}from"./jsxRuntime-CU76aMLO.js";import{M as u,N as d,R as f,v as p}from"./index-CcgO2jIy.js";var m=[`ask`,`auto`,`full`];function h(e,t){return m.flatMap(n=>{let r=e.find(e=>e.mode===n);return r?[{mode:n,preset:r.id,available:r.available,checked:r.id===t,...r.reason?{reason:r.reason}:{}}]:[]})}var g={"analysis.run":`permissions.analysisRun`},_=(t,n)=>e(t===`auto`?`mode.auto`:`preset.${n}`),v=e=>new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`});function y(){let m=n(null),[y,b]=r(!1),x=c.value,S=x?h(x.presets,x.preset):[],C=S.find(e=>e.checked),w=i.value,T=u.value?.sessionId===w?u.value:void 0,E=T?d(T.items):[];return t(()=>{m.current?.focus();let e=e=>{e instanceof KeyboardEvent&&e.key!==`Escape`||e instanceof MouseEvent&&m.current?.contains(e.target)||(a.value=!1)};return document.addEventListener(`keydown`,e),document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`keydown`,e),document.removeEventListener(`mousedown`,e)}},[]),l(`div`,{ref:m,class:p.popover,role:`dialog`,"aria-label":e(`permissions.title`),tabIndex:-1,children:[l(`p`,{class:p.popoverTitle,children:e(`modes.title`)}),l(`ul`,{class:p.modes,role:`radiogroup`,"aria-label":e(`modes.title`),children:S.map(t=>l(`li`,{children:l(`button`,{type:`button`,role:`radio`,"aria-checked":t.checked,disabled:!t.available,class:p.mode,"data-checked":t.checked?`true`:void 0,onClick:()=>{x&&!t.checked&&(!o(t.preset,x.preset)||window.confirm(e(`modes.fullConfirm`)))&&s(t.preset)},children:[l(`strong`,{children:_(t.mode,t.preset)}),l(`span`,{class:p.grantMeta,children:t.reason??e(`presetHint.${t.preset}`)})]})},t.mode))}),l(`p`,{class:p.modeStatus,role:`status`,children:C?e(`modes.status`,{mode:_(C.mode,C.preset)}):e(`modes.statusReadOnly`)}),l(`button`,{type:`button`,class:p.manage,"aria-expanded":y,onClick:()=>b(!y),children:e(`modes.manage`)}),y?T?T.error?l(`p`,{class:p.popoverEmpty,children:e(`permissions.loadFailed`)}):E.length?l(`ul`,{class:p.grants,children:E.map(t=>l(`li`,{class:p.grant,children:[l(`span`,{children:[l(`strong`,{children:e(g[t.capability]??`permissions.analysisRun`)}),l(`span`,{class:p.grantMeta,children:e(`permissions.allowedSession`,{time:v(t.createdAt)})})]}),l(`button`,{type:`button`,class:p.revoke,onClick:()=>w&&void f(w,t.id),children:e(`permissions.revoke`)})]},t.id))}):l(`p`,{class:p.popoverEmpty,children:e(`permissions.none`)}):l(`p`,{class:p.popoverEmpty,children:e(`common.loading`)}):null]})}export{y as PermissionsMenu};
@@ -0,0 +1 @@
1
+ import{T as e,a as t,b as n,g as r,y as i}from"./i18n-BGlOHOa5.js";import{u as a}from"./app-B_dNXnFa.js";import{t as o}from"./jsxRuntime-CU76aMLO.js";import{t as s}from"./icons-BWy-tv8u.js";import{F as c,V as l,a as u,c as d,i as f,o as p,r as m,s as h}from"./index-CcgO2jIy.js";import{n as g,t as _}from"./strings-Dn5dLhWb.js";var v={planTitle:`_planTitle_swilh_1`,contextField:`_contextField_swilh_8`,contextInput:`_contextInput_swilh_13`,diagramsLine:`_diagramsLine_swilh_32`,viewerButton:`_viewerButton_swilh_42`};function y({interaction:y}){let b=h(y),x=r(null),S=r(null),[C,w]=i(`choose`),[T,E]=i(``),[D,O]=i(!1);if(n(()=>{w(`choose`),E(``),O(!1),x.current?.focus()},[y.interactionId]),n(()=>{C===`text`?S.current?.focus():x.current?.focus()},[C]),!b)return null;let k=e=>{D||(O(!0),a(y.interactionId,p(b.question,e,T)))},A=`plan-review-${y.interactionId}`;return o(`div`,{class:l.dock,children:o(`div`,{ref:x,class:l.panel,role:`dialog`,"aria-labelledby":A,tabIndex:-1,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),C===`text`?w(`choose`):k(`skip`))},children:[o(`div`,{class:l.head,children:[o(`span`,{class:l.badge,children:o(s,{name:`file`,size:16})}),o(`p`,{class:l.eyebrow,children:[t(`plan.review.eyebrow`),b.plan.revision>1?` · ${t(`plan.review.revision`,{n:b.plan.revision})}`:``]})]}),o(`div`,{class:l.body,children:[o(`h2`,{id:A,class:l.title,children:t(`plan.review.title`)}),o(`p`,{class:v.planTitle,children:b.plan.title}),b.plan.artifact?o(d,{artifact:b.plan.artifact,compact:!0}):null,b.plan.diagrams?.length?o(`p`,{class:v.diagramsLine,children:[o(`span`,{children:_(b.plan.diagrams.length)}),b.plan.artifact?o(`button`,{type:`button`,class:v.viewerButton,"aria-controls":`artifact-panel`,onClick:e=>c(b.plan.artifact.id,e.currentTarget),children:g(`openViewer`)}):null]}):null,C===`choose`?o(`div`,{class:l.options,role:`group`,"aria-labelledby":A,children:b.question.options.map(e=>{let n=u(e.value)?e.value:void 0,r=n!==void 0;return o(`button`,{type:`button`,class:l.option,"data-primary":n===`approve`?`true`:void 0,disabled:D,onClick:()=>{n===`context`?w(`text`):n?k(n):D||(O(!0),a(y.interactionId,{[b.question.id]:e.value}))},children:[o(`span`,{class:l.optionLabel,children:r?t(f[n]):e.label}),r?o(`span`,{class:l.optionDescription,children:t(m[n])}):e.description?o(`span`,{class:l.optionDescription,children:e.description}):null]},e.value)})}):o(`label`,{class:v.contextField,children:[o(`span`,{class:`sr-only`,children:t(`plan.review.contextLabel`)}),o(`textarea`,{ref:S,class:v.contextInput,rows:4,value:T,disabled:D,maxLength:2e4,placeholder:t(`plan.review.contextPlaceholder`),onInput:e=>E(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),T.trim()&&k(`context`))}})]})]}),o(`div`,{class:l.actions,children:C===`text`?o(e,{children:[o(`button`,{type:`button`,class:l.secondary,disabled:D,onClick:()=>w(`choose`),children:t(`plan.review.back`)}),o(`span`,{class:l.gap}),o(`button`,{type:`button`,class:l.primary,disabled:D||!T.trim(),onClick:()=>k(`context`),children:t(`plan.review.send`)})]}):null})]})})}export{y as PlanReviewPanel};
@@ -1 +1 @@
1
- import{_ as e,b as t,g as n,y as r}from"./i18n-BZax1Psk.js";import{d as i}from"./app-D95B_PAO.js";import{t as a}from"./jsxRuntime-C-CM9h-f.js";import{r as o}from"./panel-Drs6RETP.js";import{b as s,x as c}from"./index-Bfl4EFzp.js";import{n as l}from"./strings-im5j6AkX.js";import{a as u,c as d,i as f,l as p,n as m,o as h,r as g,s as _,t as v}from"./ArtifactPanel-C6ipdg_g.js";import y from"./view-2dNgOSpB.js";var b={viewer:`_viewer_t9xlp_2`,top:`_top_t9xlp_10`,heading:`_heading_t9xlp_22`,revision:`_revision_t9xlp_33`,nav:`_nav_t9xlp_39`,navButton:`_navButton_t9xlp_48`,link:`_link_t9xlp_66`,part:`_part_t9xlp_67`,card:`_card_t9xlp_68`,retry:`_retry_t9xlp_69`,partTitle:`_partTitle_t9xlp_80`,summary:`_summary_t9xlp_89`,goals:`_goals_t9xlp_96`,goal:`_goal_t9xlp_96`,stepper:`_stepper_t9xlp_125`,stage:`_stage_t9xlp_132`,bubble:`_bubble_t9xlp_150`,stageTitle:`_stageTitle_t9xlp_163`,stageDetail:`_stageDetail_t9xlp_170`,cards:`_cards_t9xlp_178`,cardHead:`_cardHead_t9xlp_196`,cardTitle:`_cardTitle_t9xlp_203`,chip:`_chip_t9xlp_210`,badge:`_badge_t9xlp_219`,explanation:`_explanation_t9xlp_233`,diagram:`_diagram_t9xlp_241`,diagramError:`_diagramError_t9xlp_249`,removed:`_removed_t9xlp_278`,notes:`_notes_t9xlp_284`,note:`_note_t9xlp_284`,noteKind:`_noteKind_t9xlp_312`,planBody:`_planBody_t9xlp_322`,planSection:`_planSection_t9xlp_326`,related:`_related_t9xlp_332`,hint:`_hint_t9xlp_342`,state:`_state_t9xlp_351`,stateError:`_stateError_t9xlp_361`};function x(e){let t=document.getElementById(e);if(!t)return;let n=!window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches;t.scrollIntoView({block:`start`,behavior:n?`smooth`:`auto`}),t.focus({preventScroll:!0})}var S=e=>l(`type_${e}`);function C(e){let{diagram:t,load:n,manifest:r}=e,i=r?m(r,t):void 0,o=`${g(t.id)}-title`;return a(`article`,{id:g(t.id),class:b.card,tabIndex:-1,"aria-labelledby":o,"aria-describedby":t.explanation?`${o}-text`:void 0,children:[a(`div`,{class:b.cardHead,children:[a(`h4`,{id:o,class:b.cardTitle,children:t.title}),a(`span`,{class:b.chip,children:S(t.type)}),i&&r?a(`span`,{class:b.badge,"data-kind":i,children:l(i===`new`?`badgeNew`:`badgeUpdated`,{n:r.revision})}):null]}),t.explanation?a(`p`,{id:`${o}-text`,class:b.explanation,children:t.explanation}):null,a(`div`,{class:b.diagram,children:n?.source===void 0?n?.error?a(`p`,{class:b.diagramError,role:`note`,children:l(`diagramFailed`,{error:n.error})}):null:a(y,{block:{kind:`mermaid`,source:n.source,title:t.id},themed:!0})}),t.section&&e.sectionTitle?a(`button`,{type:`button`,class:b.link,"aria-label":l(`goToSection`,{name:e.sectionTitle}),onClick:()=>x(d(t.section)),children:l(`planSection`,{name:e.sectionTitle})}):null]})}function w(e){let t=`${_(e.id)}-title`;return a(`section`,{id:_(e.id),class:b.part,tabIndex:-1,"aria-labelledby":t,children:[a(`h3`,{id:t,class:b.partTitle,children:e.title}),e.children]})}function T(e){if(![`ArrowRight`,`ArrowLeft`,`Home`,`End`].includes(e.key))return;let t=[...e.currentTarget.querySelectorAll(`button`)],n=t.indexOf(document.activeElement);n<0||(e.preventDefault(),t[e.key===`Home`?0:e.key===`End`?t.length-1:(n+(e.key===`ArrowRight`?1:-1)+t.length)%t.length]?.focus())}function E(o){let{artifactId:s,files:c}=o,[u,d]=r({status:`loading`}),[f,p]=r(0),m=n({artifactId:s,files:c});m.current={artifactId:s,files:c};let g=e(()=>v(e=>h({files:m.current.files,fetchText:t=>i.artifactText(e,t)})),[]);return t(()=>{d({status:`loading`}),g(s).then(e=>{e&&d({status:`ready`,bundle:e})},e=>d({status:`error`,message:e instanceof Error?e.message:String(e)}))},[s,f,g]),u.status===`loading`?a(`div`,{class:b.state,"aria-busy":`true`,children:l(`loading`)}):u.status===`error`?a(`div`,{class:`${b.state} ${b.stateError}`,role:`status`,children:[a(`p`,{children:l(`loadFailed`)}),a(`p`,{children:u.message}),a(`button`,{type:`button`,class:b.retry,onClick:()=>p(e=>e+1),children:l(`retry`)})]}):a(D,{bundle:u.bundle,...o})}function D(t){let{bundle:n,artifactId:r}=t,i=n.manifest,m=i?i.diagrams:n.fallbackDiagrams,{components:h,others:v}=u(m),y=e(()=>p(n.markdown),[n.markdown]),S=e(()=>{let e=new Map;for(let t of y)e.set(t.id,t.title);return e},[y]),E=e(()=>f(m),[m]),D=e(()=>({image:e=>o(e,r,t.entry),workspaceLinks:!1}),[r,t.entry]),O=i?.considerations??[],k=[...i?.summary?[{id:`summary`,label:l(`part.summary`)}]:[],...i?.goals.length?[{id:`goals`,label:l(`part.goals`)}]:[],...i?.stages.length?[{id:`stages`,label:l(`part.stages`)}]:[],...v.length?[{id:`diagrams`,label:l(`part.diagrams`)}]:[],...h.length?[{id:`components`,label:l(`part.components`)}]:[],...O.length?[{id:`considerations`,label:l(`part.considerations`)}]:[],{id:`plan`,label:l(`part.plan`)}],A=e=>a(C,{diagram:e,load:n.diagrams[e.id],manifest:i,sectionTitle:e.section?S.get(e.section):void 0},e.id);return a(`div`,{class:b.viewer,role:`region`,"aria-label":l(`label`),children:[a(`div`,{class:b.top,children:[a(`h2`,{class:b.heading,children:[a(`span`,{children:i?.title??t.title}),i&&i.revision>1?a(`span`,{class:b.revision,children:l(`revision`,{n:i.revision})}):null]}),a(`nav`,{class:b.nav,"aria-label":l(`nav`),onKeyDown:T,children:k.map(e=>a(`button`,{type:`button`,class:b.navButton,onClick:()=>x(_(e.id)),children:e.label},e.id))})]}),i?null:a(`p`,{class:b.hint,children:l(`noManifest`)}),i?.summary?a(w,{id:`summary`,title:l(`part.summary`),children:a(`p`,{class:b.summary,children:i.summary})}):null,i?.goals.length?a(w,{id:`goals`,title:l(`part.goals`),children:a(`ul`,{class:b.goals,children:i.goals.map((e,t)=>a(`li`,{class:b.goal,children:e},t))})}):null,i?.stages.length?a(w,{id:`stages`,title:l(`part.stages`),children:a(`ol`,{class:b.stepper,children:i.stages.map((e,t)=>a(`li`,{class:b.stage,children:[a(`span`,{class:b.bubble,"aria-hidden":`true`,children:t+1}),a(`div`,{children:[a(`p`,{class:b.stageTitle,children:[a(`span`,{class:`sr-only`,children:[l(`stage`,{n:t+1}),`: `]}),e.title]}),e.detail?a(`p`,{class:b.stageDetail,children:e.detail}):null]})]},t))})}):null,v.length?a(w,{id:`diagrams`,title:l(`part.diagrams`),children:[a(`div`,{class:b.cards,children:v.map(A)}),i?.removed.length?a(`p`,{class:b.removed,children:l(`removed`,{n:i.revision,names:i.removed.map(e=>e.title).join(`, `)})}):null]}):null,h.length?a(w,{id:`components`,title:l(`part.components`),children:[a(`div`,{class:b.cards,children:h.map(A)}),!v.length&&i?.removed.length?a(`p`,{class:b.removed,children:l(`removed`,{n:i.revision,names:i.removed.map(e=>e.title).join(`, `)})}):null]}):null,!m.length&&i?.removed.length?a(w,{id:`diagrams`,title:l(`part.diagrams`),children:a(`p`,{class:b.removed,children:l(`removed`,{n:i.revision,names:i.removed.map(e=>e.title).join(`, `)})})}):null,O.length?a(w,{id:`considerations`,title:l(`part.considerations`),children:a(`div`,{class:b.notes,children:O.map((e,t)=>a(`p`,{class:b.note,"data-kind":e.kind,children:[a(`span`,{class:b.noteKind,children:l(`kind.${e.kind}`)}),e.text]},t))})}):null,a(w,{id:`plan`,title:l(`part.plan`),children:a(`div`,{class:b.planBody,children:a(c.Provider,{value:D,children:y.length?y.map((e,t)=>{let n=E.get(e.id)??[];return a(`section`,{id:d(e.id),class:b.planSection,tabIndex:-1,children:[a(s,{text:e.text}),n.length?a(`p`,{class:b.related,children:[a(`span`,{children:[l(`diagramsFor`),`:`]}),n.map(e=>a(`button`,{type:`button`,class:b.link,"aria-label":l(`goToDiagram`,{name:e.title}),onClick:()=>x(g(e.id)),children:e.title},e.id))]}):null]},`${e.id}-${t}`)}):a(`p`,{class:b.explanation,children:l(`empty`)})})})})]})}export{E as default};
1
+ import{_ as e,b as t,g as n,y as r}from"./i18n-BGlOHOa5.js";import{d as i}from"./app-B_dNXnFa.js";import{t as a}from"./jsxRuntime-CU76aMLO.js";import{r as o}from"./panel-INm2KdPq.js";import{S as s,x as c}from"./index-CcgO2jIy.js";import{n as l}from"./strings-Dn5dLhWb.js";import{a as u,c as d,i as f,l as p,n as m,o as h,r as g,s as _,t as v}from"./ArtifactPanel-BSU3p4Me.js";import y from"./view-Ce_7xHIu.js";var b={viewer:`_viewer_t9xlp_2`,top:`_top_t9xlp_10`,heading:`_heading_t9xlp_22`,revision:`_revision_t9xlp_33`,nav:`_nav_t9xlp_39`,navButton:`_navButton_t9xlp_48`,link:`_link_t9xlp_66`,part:`_part_t9xlp_67`,card:`_card_t9xlp_68`,retry:`_retry_t9xlp_69`,partTitle:`_partTitle_t9xlp_80`,summary:`_summary_t9xlp_89`,goals:`_goals_t9xlp_96`,goal:`_goal_t9xlp_96`,stepper:`_stepper_t9xlp_125`,stage:`_stage_t9xlp_132`,bubble:`_bubble_t9xlp_150`,stageTitle:`_stageTitle_t9xlp_163`,stageDetail:`_stageDetail_t9xlp_170`,cards:`_cards_t9xlp_178`,cardHead:`_cardHead_t9xlp_196`,cardTitle:`_cardTitle_t9xlp_203`,chip:`_chip_t9xlp_210`,badge:`_badge_t9xlp_219`,explanation:`_explanation_t9xlp_233`,diagram:`_diagram_t9xlp_241`,diagramError:`_diagramError_t9xlp_249`,removed:`_removed_t9xlp_278`,notes:`_notes_t9xlp_284`,note:`_note_t9xlp_284`,noteKind:`_noteKind_t9xlp_312`,planBody:`_planBody_t9xlp_322`,planSection:`_planSection_t9xlp_326`,related:`_related_t9xlp_332`,hint:`_hint_t9xlp_342`,state:`_state_t9xlp_351`,stateError:`_stateError_t9xlp_361`};function x(e){let t=document.getElementById(e);if(!t)return;let n=!window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches;t.scrollIntoView({block:`start`,behavior:n?`smooth`:`auto`}),t.focus({preventScroll:!0})}var S=e=>l(`type_${e}`);function C(e){let{diagram:t,load:n,manifest:r}=e,i=r?m(r,t):void 0,o=`${g(t.id)}-title`;return a(`article`,{id:g(t.id),class:b.card,tabIndex:-1,"aria-labelledby":o,"aria-describedby":t.explanation?`${o}-text`:void 0,children:[a(`div`,{class:b.cardHead,children:[a(`h4`,{id:o,class:b.cardTitle,children:t.title}),a(`span`,{class:b.chip,children:S(t.type)}),i&&r?a(`span`,{class:b.badge,"data-kind":i,children:l(i===`new`?`badgeNew`:`badgeUpdated`,{n:r.revision})}):null]}),t.explanation?a(`p`,{id:`${o}-text`,class:b.explanation,children:t.explanation}):null,a(`div`,{class:b.diagram,children:n?.source===void 0?n?.error?a(`p`,{class:b.diagramError,role:`note`,children:l(`diagramFailed`,{error:n.error})}):null:a(y,{block:{kind:`mermaid`,source:n.source,title:t.id},themed:!0})}),t.section&&e.sectionTitle?a(`button`,{type:`button`,class:b.link,"aria-label":l(`goToSection`,{name:e.sectionTitle}),onClick:()=>x(d(t.section)),children:l(`planSection`,{name:e.sectionTitle})}):null]})}function w(e){let t=`${_(e.id)}-title`;return a(`section`,{id:_(e.id),class:b.part,tabIndex:-1,"aria-labelledby":t,children:[a(`h3`,{id:t,class:b.partTitle,children:e.title}),e.children]})}function T(e){if(![`ArrowRight`,`ArrowLeft`,`Home`,`End`].includes(e.key))return;let t=[...e.currentTarget.querySelectorAll(`button`)],n=t.indexOf(document.activeElement);n<0||(e.preventDefault(),t[e.key===`Home`?0:e.key===`End`?t.length-1:(n+(e.key===`ArrowRight`?1:-1)+t.length)%t.length]?.focus())}function E(o){let{artifactId:s,files:c}=o,[u,d]=r({status:`loading`}),[f,p]=r(0),m=n({artifactId:s,files:c});m.current={artifactId:s,files:c};let g=e(()=>v(e=>h({files:m.current.files,fetchText:t=>i.artifactText(e,t)})),[]);return t(()=>{d({status:`loading`}),g(s).then(e=>{e&&d({status:`ready`,bundle:e})},e=>d({status:`error`,message:e instanceof Error?e.message:String(e)}))},[s,f,g]),u.status===`loading`?a(`div`,{class:b.state,"aria-busy":`true`,children:l(`loading`)}):u.status===`error`?a(`div`,{class:`${b.state} ${b.stateError}`,role:`status`,children:[a(`p`,{children:l(`loadFailed`)}),a(`p`,{children:u.message}),a(`button`,{type:`button`,class:b.retry,onClick:()=>p(e=>e+1),children:l(`retry`)})]}):a(D,{bundle:u.bundle,...o})}function D(t){let{bundle:n,artifactId:r}=t,i=n.manifest,m=i?i.diagrams:n.fallbackDiagrams,{components:h,others:v}=u(m),y=e(()=>p(n.markdown),[n.markdown]),S=e(()=>{let e=new Map;for(let t of y)e.set(t.id,t.title);return e},[y]),E=e(()=>f(m),[m]),D=e(()=>({image:e=>o(e,r,t.entry),workspaceLinks:!1}),[r,t.entry]),O=i?.considerations??[],k=[...i?.summary?[{id:`summary`,label:l(`part.summary`)}]:[],...i?.goals.length?[{id:`goals`,label:l(`part.goals`)}]:[],...i?.stages.length?[{id:`stages`,label:l(`part.stages`)}]:[],...v.length?[{id:`diagrams`,label:l(`part.diagrams`)}]:[],...h.length?[{id:`components`,label:l(`part.components`)}]:[],...O.length?[{id:`considerations`,label:l(`part.considerations`)}]:[],{id:`plan`,label:l(`part.plan`)}],A=e=>a(C,{diagram:e,load:n.diagrams[e.id],manifest:i,sectionTitle:e.section?S.get(e.section):void 0},e.id);return a(`div`,{class:b.viewer,role:`region`,"aria-label":l(`label`),children:[a(`div`,{class:b.top,children:[a(`h2`,{class:b.heading,children:[a(`span`,{children:i?.title??t.title}),i&&i.revision>1?a(`span`,{class:b.revision,children:l(`revision`,{n:i.revision})}):null]}),a(`nav`,{class:b.nav,"aria-label":l(`nav`),onKeyDown:T,children:k.map(e=>a(`button`,{type:`button`,class:b.navButton,onClick:()=>x(_(e.id)),children:e.label},e.id))})]}),i?null:a(`p`,{class:b.hint,children:l(`noManifest`)}),i?.summary?a(w,{id:`summary`,title:l(`part.summary`),children:a(`p`,{class:b.summary,children:i.summary})}):null,i?.goals.length?a(w,{id:`goals`,title:l(`part.goals`),children:a(`ul`,{class:b.goals,children:i.goals.map((e,t)=>a(`li`,{class:b.goal,children:e},t))})}):null,i?.stages.length?a(w,{id:`stages`,title:l(`part.stages`),children:a(`ol`,{class:b.stepper,children:i.stages.map((e,t)=>a(`li`,{class:b.stage,children:[a(`span`,{class:b.bubble,"aria-hidden":`true`,children:t+1}),a(`div`,{children:[a(`p`,{class:b.stageTitle,children:[a(`span`,{class:`sr-only`,children:[l(`stage`,{n:t+1}),`: `]}),e.title]}),e.detail?a(`p`,{class:b.stageDetail,children:e.detail}):null]})]},t))})}):null,v.length?a(w,{id:`diagrams`,title:l(`part.diagrams`),children:[a(`div`,{class:b.cards,children:v.map(A)}),i?.removed.length?a(`p`,{class:b.removed,children:l(`removed`,{n:i.revision,names:i.removed.map(e=>e.title).join(`, `)})}):null]}):null,h.length?a(w,{id:`components`,title:l(`part.components`),children:[a(`div`,{class:b.cards,children:h.map(A)}),!v.length&&i?.removed.length?a(`p`,{class:b.removed,children:l(`removed`,{n:i.revision,names:i.removed.map(e=>e.title).join(`, `)})}):null]}):null,!m.length&&i?.removed.length?a(w,{id:`diagrams`,title:l(`part.diagrams`),children:a(`p`,{class:b.removed,children:l(`removed`,{n:i.revision,names:i.removed.map(e=>e.title).join(`, `)})})}):null,O.length?a(w,{id:`considerations`,title:l(`part.considerations`),children:a(`div`,{class:b.notes,children:O.map((e,t)=>a(`p`,{class:b.note,"data-kind":e.kind,children:[a(`span`,{class:b.noteKind,children:l(`kind.${e.kind}`)}),e.text]},t))})}):null,a(w,{id:`plan`,title:l(`part.plan`),children:a(`div`,{class:b.planBody,children:a(s.Provider,{value:D,children:y.length?y.map((e,t)=>{let n=E.get(e.id)??[];return a(`section`,{id:d(e.id),class:b.planSection,tabIndex:-1,children:[a(c,{text:e.text}),n.length?a(`p`,{class:b.related,children:[a(`span`,{children:[l(`diagramsFor`),`:`]}),n.map(e=>a(`button`,{type:`button`,class:b.link,"aria-label":l(`goToDiagram`,{name:e.title}),onClick:()=>x(g(e.id)),children:e.title},e.id))]}):null]},`${e.id}-${t}`)}):a(`p`,{class:b.explanation,children:l(`empty`)})})})})]})}export{E as default};
@@ -0,0 +1 @@
1
+ import{T as e,b as t,h as n,o as r,r as i,y as a}from"./i18n-BGlOHOa5.js";import{E as o,Tt as s,_n as c,d as l,gn as u,mn as d,nt as f,vn as p,yn as m}from"./app-B_dNXnFa.js";import{t as h}from"./jsxRuntime-CU76aMLO.js";import{t as g}from"./icons-BWy-tv8u.js";import{n as _}from"./TextPreview-DPHScW4M.js";var v=()=>({sessionId:``,status:`idle`,clearing:!1}),y=n(v()),b=()=>{y.value=v()},x=e=>e instanceof Error?e.message:String(e);async function S(e){y.value={...y.value.sessionId===e?y.value:v(),sessionId:e,status:`loading`};try{let t=await l.scratch(e);if(y.value.sessionId!==e)return;let{selected:n}=y.value,{selected:r,error:i,...a}=y.value;y.value={...a,status:`ready`,listing:t,...n&&t.files.some(e=>e.name===n)?{selected:n}:{}}}catch(t){if(y.value.sessionId!==e)return;let{listing:n,selected:r,...i}=y.value;y.value={...i,status:`error`,error:x(t)}}}function C(e){let t=y.value;if(e!==void 0&&!t.listing?.files.some(t=>t.name===e))return;let{selected:n,...r}=t;y.value=e===void 0?r:{...r,selected:e}}async function w(e){if(y.value.sessionId!==e)return;let{notice:t,...n}=y.value;y.value={...n,clearing:!0};try{let t=await l.clearScratch(e);if(y.value.sessionId!==e)return;let{selected:n,...r}=y.value;y.value={...r,clearing:!1,...r.listing?{listing:{...r.listing,files:[],usedBytes:0}}:{},notice:{kind:`cleared`,removed:t.removed,freedBytes:t.freedBytes}}}catch(t){if(y.value.sessionId!==e)return;let n=t instanceof d&&t.code===`runs_active`?{kind:`runsActive`}:t instanceof d&&t.status===403?{kind:`readOnly`}:{kind:`failed`,message:x(t)};y.value={...y.value,clearing:!1,notice:n}}}var T={tab:`_tab_1plr6_1`,detail:`_detail_1plr6_2`,lead:`_lead_1plr6_13`,note:`_note_1plr6_14`,error:`_error_1plr6_21`,live:`_live_1plr6_28`,quota:`_quota_1plr6_41`,meter:`_meter_1plr6_46`,list:`_list_1plr6_68`,item:`_item_1plr6_77`,file:`_file_1plr6_83`,name:`_name_1plr6_101`,meta:`_meta_1plr6_109`,iconLink:`_iconLink_1plr6_117`,detailHead:`_detailHead_1plr6_131`,back:`_back_1plr6_138`,fileTitle:`_fileTitle_1plr6_154`,row:`_row_1plr6_164`,button:`_button_1plr6_169`,danger:`_danger_1plr6_182`,confirm:`_confirm_1plr6_187`},E={title:`Scratchpad`,lead:`Work files the agent's scripts saved in this session. They are temporary and are removed after a while without use.`,loading:`Loading…`,loadFailed:`Couldn't load the scratchpad.`,retry:`Retry`,unavailable:`The scratchpad is off for this session. Turn on JavaScript in Settings → Forja, and check forge.scratch.enabled.`,empty:`No files yet. Scripts can save intermediate work here.`,files:`Files`,quota:`{used} of {total} used`,truncated:`Showing the first {count} files; the quota counts all of them.`,modified:`Modified {time}`,download:`Download {name}`,back:`Back to files`,noPreview:`No preview for this file type. Download it to open it.`,previewFailed:`Couldn't load the file.`,cancel:`Cancel`,emptyAction:`Empty`,confirm:`Delete all files from the scratchpad? This cannot be undone.`,confirmAction:`Empty the scratchpad`,cleared:`Scratchpad emptied: {removed} files, {size} freed.`,runsActive:`A script is still running. Wait for it to finish, then empty the scratchpad.`,readOnly:`The scratchpad can't be emptied while the server is read-only.`,failed:`Couldn't empty the scratchpad: {error}`,working:`Emptying…`},D={en:E,es:{title:`Scratchpad`,lead:`Archivos de trabajo que los scripts del agente guardaron en esta sesión. Son temporales y se eliminan tras un tiempo sin uso.`,loading:`Cargando…`,loadFailed:`No se pudo cargar el scratchpad.`,retry:`Reintentar`,unavailable:`El scratchpad está desactivado en esta sesión. Activa JavaScript en Ajustes → Forja y revisa forge.scratch.enabled.`,empty:`Aún no hay archivos. Los scripts pueden guardar aquí su trabajo intermedio.`,files:`Archivos`,quota:`{used} de {total} usados`,truncated:`Se muestran los primeros {count} archivos; la cuota cuenta todos.`,modified:`Modificado {time}`,download:`Descargar {name}`,back:`Volver a los archivos`,noPreview:`No hay vista previa para este tipo de archivo. Descárgalo para abrirlo.`,previewFailed:`No se pudo cargar el archivo.`,cancel:`Cancelar`,emptyAction:`Vaciar`,confirm:`¿Eliminar todos los archivos del scratchpad? No se puede deshacer.`,confirmAction:`Vaciar el scratchpad`,cleared:`Scratchpad vaciado: {removed} archivos, {size} liberados.`,runsActive:`Un script sigue en ejecución. Espera a que termine y vacía el scratchpad.`,readOnly:`El scratchpad no se puede vaciar mientras el servidor está en solo lectura.`,failed:`No se pudo vaciar el scratchpad: {error}`,working:`Vaciando…`}},O=(e,t)=>r(D[i.value][e]??E[e],t),k=e=>{switch(e.kind){case`cleared`:return O(`cleared`,{removed:e.removed,size:s(e.freedBytes)});case`runsActive`:return O(`runsActive`);case`readOnly`:return O(`readOnly`);case`failed`:return O(`failed`,{error:e.message})}};function A(e){let{sessionId:n,file:r}=e,i=c(r),[o,s]=a(),[u,d]=a(!1);return t(()=>{if(s(void 0),d(!1),!i)return;let e=!0;return l.scratchText(n,r.name).then(t=>e&&s(t),()=>e&&d(!0)),()=>{e=!1}},[n,r.name,r.mtime,r.size]),i?u?h(`p`,{class:T.error,role:`status`,children:O(`previewFailed`)}):o===void 0?h(`p`,{class:T.note,"aria-busy":`true`,children:O(`loading`)}):h(_,{text:o,as:i.as,entry:i.entry}):h(`p`,{class:T.note,children:O(`noPreview`)})}function j(e){let{percent:t,level:n}=p(e.used,e.total),r=O(`quota`,{used:s(e.used),total:s(e.total)});return h(`div`,{class:T.quota,children:[h(`div`,{class:T.meter,role:`meter`,"aria-label":O(`title`),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":t,"aria-valuetext":r,"data-level":n,children:h(`span`,{style:{width:`${t}%`}})}),h(`p`,{class:T.note,children:r})]})}function M(){let n=o.value,r=y.value,[i,c]=a(!1);if(t(()=>{c(!1),n?S(n):b()},[n,f.value]),!n)return null;let{listing:l}=r,d=l?u(l.files):[],p=d.find(e=>e.name===r.selected);return h(`div`,{class:T.tab,children:[h(`p`,{class:T.lead,children:O(`lead`)}),h(`div`,{class:T.live,role:`status`,"aria-live":`polite`,children:r.notice?k(r.notice):``}),r.status===`error`?h(`div`,{role:`alert`,children:[h(`p`,{class:T.error,children:[O(`loadFailed`),` `,r.error]}),h(`button`,{type:`button`,class:T.button,onClick:()=>void S(n),children:O(`retry`)})]}):r.status!==`ready`||!l?h(`p`,{class:T.note,"aria-busy":`true`,children:O(`loading`)}):l.available?h(e,{children:[h(j,{used:l.usedBytes,total:l.quotaBytes}),l.truncated?h(`p`,{class:T.note,children:O(`truncated`,{count:l.files.length})}):null,p?h(`div`,{class:T.detail,children:[h(`div`,{class:T.detailHead,children:[h(`button`,{type:`button`,class:T.back,onClick:()=>C(void 0),children:[h(`span`,{"aria-hidden":`true`,children:`←`}),O(`back`)]}),h(`a`,{class:T.iconLink,href:m(n,p.name),download:``,"aria-label":O(`download`,{name:p.name}),title:O(`download`,{name:p.name}),children:h(g,{name:`download`,size:15})})]}),h(`h4`,{class:T.fileTitle,title:p.name,children:p.name}),h(A,{sessionId:n,file:p})]}):d.length?h(e,{children:[h(`ul`,{class:T.list,"aria-label":O(`files`),children:d.map(e=>h(`li`,{class:T.item,children:[h(`button`,{type:`button`,class:T.file,onClick:()=>C(e.name),children:[h(`span`,{class:T.name,title:e.name,children:e.name}),h(`span`,{class:T.meta,children:[h(`span`,{children:s(e.size)}),h(`span`,{children:O(`modified`,{time:new Date(e.mtime).toLocaleString()})})]})]}),h(`a`,{class:T.iconLink,href:m(n,e.name),download:``,"aria-label":O(`download`,{name:e.name}),title:O(`download`,{name:e.name}),children:h(g,{name:`download`,size:15})})]},e.name))}),i?h(`div`,{class:T.confirm,role:`alertdialog`,"aria-label":O(`confirmAction`),children:[h(`p`,{children:O(`confirm`)}),h(`div`,{class:T.row,children:[h(`button`,{type:`button`,class:T.button,ref:e=>e?.focus(),onClick:()=>c(!1),children:O(`cancel`)}),h(`button`,{type:`button`,class:`${T.button} ${T.danger}`,disabled:r.clearing,onClick:()=>{c(!1),w(n)},children:r.clearing?O(`working`):O(`confirmAction`)})]})]}):h(`div`,{class:T.row,children:h(`button`,{type:`button`,class:`${T.button} ${T.danger}`,disabled:r.clearing,onClick:()=>c(!0),children:O(`emptyAction`)})})]}):h(`p`,{class:T.note,children:O(`empty`)})]}):h(`p`,{class:T.note,children:O(`unavailable`)})]})}export{M as ScratchTab};
@@ -0,0 +1 @@
1
+ ._tab_1plr6_1,._detail_1plr6_2{flex-direction:column;gap:8px;padding:4px 10px 10px;display:flex}._detail_1plr6_2{padding:0}._lead_1plr6_13,._note_1plr6_14{color:var(--muted);margin:0;font-size:12.5px;line-height:1.45}._error_1plr6_21{color:var(--danger);margin:0 0 6px;font-size:12.5px}._live_1plr6_28{min-height:0;color:var(--muted);font-size:12.5px}._live_1plr6_28:not(:empty){border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--panel);padding:6px 9px}._quota_1plr6_41{gap:4px;display:grid}._meter_1plr6_46{background:var(--border);border-radius:3px;height:6px;overflow:hidden}._meter_1plr6_46 span{background:var(--accent);height:100%;transition:width .25s var(--ease);display:block}._meter_1plr6_46[data-level=warn] span{background:var(--warn)}._meter_1plr6_46[data-level=full] span{background:var(--danger)}._list_1plr6_68{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}._item_1plr6_77{align-items:stretch;gap:4px;display:flex}._file_1plr6_83{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--panel);min-width:0;color:var(--text);text-align:left;flex-direction:column;flex:1;gap:3px;padding:7px 9px;display:flex}._file_1plr6_83:hover{background:var(--hover)}._name_1plr6_101{font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}._meta_1plr6_109{color:var(--faint);flex-wrap:wrap;gap:4px 12px;font-size:12px;display:flex}._iconLink_1plr6_117{border-radius:var(--radius-sm);width:34px;color:var(--muted);flex:none;place-items:center;display:grid}._iconLink_1plr6_117:hover{background:var(--hover);color:var(--text)}._detailHead_1plr6_131{justify-content:space-between;align-items:center;gap:8px;display:flex}._back_1plr6_138{border-radius:var(--radius-sm);color:var(--muted);background:0 0;border:0;align-items:center;gap:6px;padding:3px 6px;font-size:13px;display:inline-flex}._back_1plr6_138:hover{color:var(--text)}._fileTitle_1plr6_154{font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;font-weight:600;overflow:hidden}._row_1plr6_164{gap:8px;display:flex}._button_1plr6_169{border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);background:0 0;padding:5px 12px;font-size:13px}._button_1plr6_169:hover:not(:disabled){background:var(--hover)}._danger_1plr6_182{border-color:var(--danger);color:var(--danger)}._confirm_1plr6_187{border:1px solid var(--danger);border-radius:var(--radius-sm);background:var(--danger-soft);gap:8px;padding:10px;display:grid}._confirm_1plr6_187 p{margin:0;font-size:13px}