@alisio/server 0.7.0 → 0.8.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 (61) hide show
  1. package/dist/bridges/interaction-bridge.js +5 -0
  2. package/dist/host/sessions.d.ts +3 -1
  3. package/dist/host/sessions.js +4 -1
  4. package/dist/index.js +4 -0
  5. package/dist/routes/commands.js +3 -0
  6. package/dist/routes/goal.d.ts +1 -0
  7. package/dist/routes/goal.js +14 -1
  8. package/dist/routes/proof.d.ts +5 -0
  9. package/dist/routes/proof.js +123 -0
  10. package/dist/web/assets/{AgentPicker-BH-tahQA.js → AgentPicker-CHCnAWFV.js} +1 -1
  11. package/dist/web/assets/{AgentsModal-C3tHYoW2.js → AgentsModal-C9JANTC0.js} +2 -2
  12. package/dist/web/assets/{ArtifactPanel-BSU3p4Me.js → ArtifactPanel-CMy7S56f.js} +3 -3
  13. package/dist/web/assets/{BtwPanel-BDofONkj.js → BtwPanel-DXZdSCeO.js} +1 -1
  14. package/dist/web/assets/{ChangelogDialog-B5zSEON8.js → ChangelogDialog-B1zYDaIS.js} +1 -1
  15. package/dist/web/assets/{CopyButton-CMHaee_H.js → CopyButton-DEf4thwH.js} +1 -1
  16. package/dist/web/assets/{GoalBar-JOJIfBUX.js → GoalBar-CCT6XlB-.js} +1 -1
  17. package/dist/web/assets/{MemoryTab-C3rFMsRH.js → MemoryTab-lph1Kv8C.js} +1 -1
  18. package/dist/web/assets/{PermissionsMenu-9enV9rs4.js → PermissionsMenu-oMuzx7AI.js} +1 -1
  19. package/dist/web/assets/PlanReviewPanel-BXl-gcFF.js +1 -0
  20. package/dist/web/assets/PlanReviewPanel-DebrpVm2.css +1 -0
  21. package/dist/web/assets/{PlanViewer-D05Fnb6D.js → PlanViewer-TxP_h0KX.js} +1 -1
  22. package/dist/web/assets/ProofCard-CxJcKB8q.css +1 -0
  23. package/dist/web/assets/ProofCard-DFVScMg6.js +1 -0
  24. package/dist/web/assets/ScratchTab-f751fxOV.js +1 -0
  25. package/dist/web/assets/SettingsModal-DZhl5vvS.js +1 -0
  26. package/dist/web/assets/{SpreadsheetPanel-BIo8rckB.js → SpreadsheetPanel-Db_lqwkD.js} +1 -1
  27. package/dist/web/assets/{TasksTab-C1obfmnr.js → TasksTab-BnafNW7J.js} +1 -1
  28. package/dist/web/assets/{TextPreview-DPHScW4M.js → TextPreview-DHQCGoiY.js} +1 -1
  29. package/dist/web/assets/{TrajectoryTab-DcmVZkfm.js → TrajectoryTab-DMJw5g-T.js} +1 -1
  30. package/dist/web/assets/{agents.module-Brrjzfmx.js → agents.module-BlfBTz7i.js} +1 -1
  31. package/dist/web/assets/app-BknkHksg.js +3 -0
  32. package/dist/web/assets/{es-DwvaEaQO.js → es-ySPgx3os.js} +1 -1
  33. package/dist/web/assets/goal-B1jQsfH5.js +1 -0
  34. package/dist/web/assets/{i18n-BGlOHOa5.js → i18n-C54K0mc6.js} +1 -1
  35. package/dist/web/assets/{icons-BWy-tv8u.js → icons-DTCoNVsk.js} +1 -1
  36. package/dist/web/assets/index-XYSVNCIf.js +79 -0
  37. package/dist/web/assets/{jsxRuntime-CU76aMLO.js → jsxRuntime-DWBdSTGf.js} +1 -1
  38. package/dist/web/assets/{panel-INm2KdPq.js → panel-LBWYDX9B.js} +1 -1
  39. package/dist/web/assets/{shared-DF0YqvHb.js → shared-DLevBtPm.js} +1 -1
  40. package/dist/web/assets/strings-DDeSYQDZ.js +1 -0
  41. package/dist/web/assets/{tasks-Dlp_xs_J.js → tasks-Sc_vWQpd.js} +1 -1
  42. package/dist/web/assets/{view-B4LIdGiS.js → view-BFzfUho9.js} +1 -1
  43. package/dist/web/assets/{view-CpEZmnjL.js → view-C4NPIs0Y.js} +1 -1
  44. package/dist/web/assets/{view-CjV4GnT8.js → view-CChCbdid.js} +1 -1
  45. package/dist/web/assets/view-Cp3A_Nly.js +1 -0
  46. package/dist/web/assets/{view-DOYsFrMs.js → view-Cs6w0jid.js} +1 -1
  47. package/dist/web/assets/{view-Ce_7xHIu.js → view-DF9hOwPO.js} +1 -1
  48. package/dist/web/assets/{view-Dm0LR0Rz.js → view-D_Sw63-N.js} +1 -1
  49. package/dist/web/assets/{view-BRtrf5cD.js → view-DooqXXnU.js} +1 -1
  50. package/dist/web/assets/{view-D5UQr-hn.js → view-s7NM5Jdr.js} +1 -1
  51. package/dist/web/index.html +7 -7
  52. package/package.json +4 -4
  53. package/dist/web/assets/PlanReviewPanel-Bv7qk6nv.js +0 -1
  54. package/dist/web/assets/PlanReviewPanel-DWit05Bs.css +0 -1
  55. package/dist/web/assets/ScratchTab-Z-Klh15S.js +0 -1
  56. package/dist/web/assets/SettingsModal-Bax8Y4UT.js +0 -1
  57. package/dist/web/assets/app-B_dNXnFa.js +0 -3
  58. package/dist/web/assets/goal-D5qC2_WT.js +0 -1
  59. package/dist/web/assets/index-CcgO2jIy.js +0 -79
  60. package/dist/web/assets/strings-Dn5dLhWb.js +0 -1
  61. package/dist/web/assets/view-CWZ2W6Nn.js +0 -1
@@ -37,6 +37,11 @@ export class InteractionBridge {
37
37
  const textKeys = new Set(request.questions
38
38
  .filter((q) => q.options.some((o) => o.textInput))
39
39
  .map((q) => `${q.id}:text`));
40
+ // `"<questionId>:criteria"` carries the user's per-draft choices of a plan review that
41
+ // lists acceptance criteria (a JSON string the core validates; bounded like free text).
42
+ if (request.plan?.acceptanceCriteria?.length)
43
+ for (const q of request.questions)
44
+ textKeys.add(`${q.id}:criteria`);
40
45
  return this.ask({
41
46
  interactionId: randomUUID(),
42
47
  ...(request.session ? { sessionId: request.session } : {}),
@@ -1,4 +1,4 @@
1
- import { type Policy, type Session, type SQLiteStore } from "@alisio/core";
1
+ import { type Policy, ProofStore, type Session, type SQLiteStore } from "@alisio/core";
2
2
  import type { ServerFrame, SessionDetail, SessionDetailWire, SessionSummary, SessionUiStatus } from "@alisio/sdk";
3
3
  import { type Ceiling } from "./presets.ts";
4
4
  import type { RunScheduler } from "./run-scheduler.ts";
@@ -26,6 +26,8 @@ export declare class SessionService {
26
26
  private policies;
27
27
  readonly ceiling: Ceiling;
28
28
  private readonly goals;
29
+ /** Reads of the Proof ledger over the server's own store connection (writes use the app). */
30
+ readonly proof: ProofStore;
29
31
  constructor(options: SessionServiceOptions);
30
32
  /** A session by id, or 404. */
31
33
  get(id: string): Session;
@@ -1,4 +1,4 @@
1
- import { agentCatalogFromState, agentRunOptions, GoalStore, goalOptInTools, PLAN_AGENT_ID, resolveActiveAgent, } from "@alisio/core";
1
+ import { agentCatalogFromState, agentRunOptions, GoalStore, goalOptInTools, PLAN_AGENT_ID, ProofStore, resolveActiveAgent, } from "@alisio/core";
2
2
  import { HttpError } from "../http/errors.js";
3
3
  import { presetInfos, sessionPreset } from "./presets.js";
4
4
  import { workspaceId, } from "./workspace-host.js";
@@ -13,9 +13,12 @@ export class SessionService {
13
13
  policies = new Map();
14
14
  ceiling;
15
15
  goals;
16
+ /** Reads of the Proof ledger over the server's own store connection (writes use the app). */
17
+ proof;
16
18
  constructor(options) {
17
19
  this.options = options;
18
20
  this.goals = new GoalStore(options.catalog.db);
21
+ this.proof = new ProofStore(options.catalog.db);
19
22
  const base = options.base;
20
23
  const readOnly = !!base.readOnly;
21
24
  this.ceiling = {
package/dist/index.js CHANGED
@@ -39,6 +39,7 @@ import { registerIconThemeRoutes } from "./routes/icon-theme.js";
39
39
  import { registerManagementRoutes, WorkspaceRecycler } from "./routes/management.js";
40
40
  import { registerPluginViewRoutes } from "./routes/plugin-views.js";
41
41
  import { registerPromptRoutes } from "./routes/prompts.js";
42
+ import { registerProofRoutes } from "./routes/proof.js";
42
43
  import { registerProviderRoutes } from "./routes/providers.js";
43
44
  import { registerScratchRoutes } from "./routes/scratch.js";
44
45
  import { registerSessionViewRoutes } from "./routes/session-views.js";
@@ -176,6 +177,7 @@ export async function startServer(options = {}) {
176
177
  const service = sessions;
177
178
  const session = service.get(sessionId);
178
179
  const current = inflight.get(sessionId);
180
+ const proofCount = sessions.proof.criteriaCount(sessionId);
179
181
  return {
180
182
  t: "snapshot",
181
183
  sessionId,
@@ -188,6 +190,7 @@ export async function startServer(options = {}) {
188
190
  interactions: interactions?.pending(sessionId) ?? [],
189
191
  },
190
192
  ...(goalDriver?.info(sessionId) ? { goal: goalDriver.info(sessionId) } : {}),
193
+ ...(proofCount ? { proof: { criteria: proofCount } } : {}),
191
194
  };
192
195
  },
193
196
  messagesAfter: (sessionId, after) => catalog.messagesPage(sessionId, { after, limit: 200 }),
@@ -418,6 +421,7 @@ export async function startServer(options = {}) {
418
421
  });
419
422
  registerPromptRoutes(router, { sessions, scheduler });
420
423
  registerGoalRoutes(router, { sessions, goals: goalDriver });
424
+ registerProofRoutes(router, { sessions });
421
425
  const management = {
422
426
  workspaces,
423
427
  scheduler,
@@ -136,6 +136,9 @@ export function registerCommandRoutes(router, ctx) {
136
136
  case "clear":
137
137
  check(service.clear(session.id));
138
138
  return done("Goal cleared.");
139
+ case "override":
140
+ check(service.overrideComplete(session.id, { reason: parsed.reason }));
141
+ return done("Goal completed by your override; the reason is kept with the goal.");
139
142
  case "edit":
140
143
  if (parsed.objective === undefined) {
141
144
  const current = service.get(session.id);
@@ -7,6 +7,7 @@
7
7
  * also makes it continue now; changes arrive in every window as `goal_changed` frames.
8
8
  *
9
9
  * Only the user changes a goal through here; the model has `update_goal` (complete / blocked).
10
+ * `POST …/goal/override` is the user's way past unmet required Proof criteria (a reason is required).
10
11
  */
11
12
  import type { GoalErrorCode } from "@alisio/core";
12
13
  import type { GoalDriver } from "../host/goal.ts";
@@ -1,4 +1,4 @@
1
- import { GOAL_OBJECTIVE_MAX } from "@alisio/core";
1
+ import { GOAL_OBJECTIVE_MAX, GOAL_OVERRIDE_REASON_MAX } from "@alisio/core";
2
2
  import { readJson } from "../http/body.js";
3
3
  import { HttpError } from "../http/errors.js";
4
4
  import { is, validate } from "../schemas.js";
@@ -105,6 +105,19 @@ export function registerGoalRoutes(router, ctx) {
105
105
  goals.refresh(session.id);
106
106
  return reply(session.id);
107
107
  });
108
+ // The USER completes the goal over unmet required Proof criteria (O6). The model has no route
109
+ // here: `update_goal` cannot carry an override. A reason is required and kept in the goal.
110
+ router.post("/api/sessions/:sid/goal/override", async ({ req, params }) => {
111
+ const input = validate(await readJson(req), {
112
+ reason: { check: is.nonEmpty(GOAL_OVERRIDE_REASON_MAX + 200), required: true },
113
+ expect: { check: EXPECT },
114
+ });
115
+ const { session, service } = await open(params.sid, true);
116
+ const outcome = service.overrideComplete(session.id, { reason: input.reason }, input.expect);
117
+ if (!outcome.ok)
118
+ throw goalError(outcome.code, outcome.message);
119
+ return settled(session.id);
120
+ });
108
121
  for (const action of ["pause", "resume"])
109
122
  router.post(`/api/sessions/:sid/goal/${action}`, async ({ req, params }) => {
110
123
  const input = validate(await readJson(req), {
@@ -0,0 +1,5 @@
1
+ import type { SessionService } from "../host/sessions.ts";
2
+ import type { Router } from "../http/router.ts";
3
+ export declare function registerProofRoutes(router: Router, ctx: {
4
+ sessions: SessionService;
5
+ }): void;
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Proof (specs/011 phase 5): the ledger of a session and what only the user may do to it. Reads
3
+ * come from the server's own store connection (no workspace is opened to show a card); writes go
4
+ * through the workspace application. The same auth, Host and Origin rules as every `/api` route.
5
+ *
6
+ * - `GET /api/sessions/:sid/proof` the ledger (`ProofLedger`)
7
+ * - `POST /api/sessions/:sid/proof/criteria` create a criterion, or edit one
8
+ * (`criterionId` + `text`/`required`)
9
+ * - `POST /api/sessions/:sid/proof/criteria/:id/not-applicable` `{reason}`; user only (O2)
10
+ * - `GET /api/sessions/:sid/proof/export?format=md|json` the `proof.md` / `proof/v1` download
11
+ *
12
+ * A tool result, a plan text or the model can never reach these: criteria change only here, in
13
+ * the plan decision of the user (`exit_plan`) and through `--criterion`/`--proof-file`.
14
+ */
15
+ import { parseCriteriaInput, renderProofJson, renderProofMarkdown, } from "@alisio/core";
16
+ import { readJson } from "../http/body.js";
17
+ import { HttpError } from "../http/errors.js";
18
+ import { is, validate } from "../schemas.js";
19
+ import { attachmentDisposition } from "./artifacts.js";
20
+ const TEXT_MAX = 600;
21
+ const REASON_MAX = 500;
22
+ const SCOPE = is.array(is.nonEmpty(256), 20);
23
+ /** The field a criterion parsing error is about (its message names it), for validation details. */
24
+ const fieldOf = (reason) => /verifier|command|cwd|exit|pattern|path/i.test(reason)
25
+ ? "verifier"
26
+ : /scope/i.test(reason)
27
+ ? "scope"
28
+ : "text";
29
+ export function registerProofRoutes(router, ctx) {
30
+ const { sessions } = ctx;
31
+ const read = (sid) => {
32
+ const session = sessions.get(sid ?? "");
33
+ return sessions.proof.view(session.id);
34
+ };
35
+ /** The session and the writable store of its workspace (user actions only). */
36
+ const open = async (sid) => {
37
+ const session = sessions.get(sid ?? "");
38
+ if (session.parentId)
39
+ throw new HttpError("validation_failed", "Criteria belong to a root session.", {
40
+ fields: ["sid"],
41
+ });
42
+ if (session.archivedAt)
43
+ throw new HttpError("validation_failed", "The session is archived.", { fields: ["sid"] });
44
+ const { app } = await sessions.app(session);
45
+ return { id: session.id, proof: app.proof };
46
+ };
47
+ router.get("/api/sessions/:sid/proof", ({ params }) => ({ body: read(params.sid) }));
48
+ router.post("/api/sessions/:sid/proof/criteria", async ({ req, params }) => {
49
+ const input = validate(await readJson(req), {
50
+ criterionId: { check: is.nonEmpty(64) },
51
+ text: { check: is.nonEmpty(TEXT_MAX) },
52
+ required: { check: is.boolean() },
53
+ verify: { check: is.nonEmpty(1_000) },
54
+ verifier: { check: is.object() },
55
+ scope: { check: SCOPE },
56
+ });
57
+ const { id, proof } = await open(params.sid);
58
+ if (input.criterionId !== undefined) {
59
+ // An edit changes the wording and the required flag only: evidence stays tied to what was
60
+ // verified, so a different check is a new criterion.
61
+ const forbidden = ["verify", "verifier", "scope"].filter((key) => input[key] !== undefined);
62
+ if (forbidden.length)
63
+ throw new HttpError("validation_failed", "A criterion's verifier and scope are fixed.", {
64
+ fields: forbidden,
65
+ });
66
+ const current = proof.criterion(input.criterionId);
67
+ if (!current || current.sessionId !== id)
68
+ throw new HttpError("not_found", "Criterion not found");
69
+ proof.updateCriterion(current.criterionId, {
70
+ ...(input.text !== undefined ? { text: input.text } : {}),
71
+ ...(input.required !== undefined ? { required: input.required } : {}),
72
+ });
73
+ }
74
+ else {
75
+ if (input.text === undefined)
76
+ throw new HttpError("validation_failed", "A criterion needs text", { fields: ["text"] });
77
+ const parsed = parseCriteriaInput([
78
+ {
79
+ text: input.text,
80
+ required: input.required ?? false,
81
+ ...(input.verify !== undefined ? { verify: input.verify } : {}),
82
+ ...(input.verifier !== undefined ? { verifier: input.verifier } : {}),
83
+ ...(input.scope !== undefined ? { scope: input.scope } : {}),
84
+ },
85
+ ], { origin: "user", defaultRequired: false });
86
+ const failed = parsed.errors[0];
87
+ const criterion = parsed.criteria[0];
88
+ if (failed || !criterion)
89
+ throw new HttpError("validation_failed", failed?.reason ?? "Invalid criterion", {
90
+ fields: [fieldOf(failed?.reason ?? "")],
91
+ });
92
+ proof.addCriterion({ sessionId: id, ...criterion });
93
+ }
94
+ return { body: sessions.proof.view(id) };
95
+ });
96
+ router.post("/api/sessions/:sid/proof/criteria/:cid/not-applicable", async ({ req, params }) => {
97
+ const input = validate(await readJson(req), {
98
+ reason: { check: is.nonEmpty(REASON_MAX), required: true },
99
+ });
100
+ const { id, proof } = await open(params.sid);
101
+ const current = proof.criterion(params.cid ?? "");
102
+ if (!current || current.sessionId !== id)
103
+ throw new HttpError("not_found", "Criterion not found");
104
+ proof.markNotApplicable(current.criterionId, input.reason);
105
+ return { body: sessions.proof.view(id) };
106
+ });
107
+ router.get("/api/sessions/:sid/proof/export", ({ params, url, res }) => {
108
+ const format = url.searchParams.get("format") ?? "json";
109
+ if (format !== "json" && format !== "md")
110
+ throw new HttpError("validation_failed", "format must be md or json", { fields: ["format"] });
111
+ const ledger = read(params.sid);
112
+ const markdown = format === "md";
113
+ const body = markdown ? renderProofMarkdown(ledger) : renderProofJson(ledger);
114
+ res.writeHead(200, {
115
+ "Content-Type": markdown ? "text/markdown; charset=utf-8" : "application/json; charset=utf-8",
116
+ "Content-Length": Buffer.byteLength(body),
117
+ "Content-Disposition": attachmentDisposition(markdown ? "proof.md" : "proof.json"),
118
+ "Cache-Control": "private, no-store",
119
+ });
120
+ res.end(body);
121
+ return undefined;
122
+ });
123
+ }
@@ -1 +1 @@
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
+ import{a as e,b as t,g as n,y as r}from"./i18n-C54K0mc6.js";import{a as i,d as a,k as o,o as s,t as c}from"./app-BknkHksg.js";import{t as l}from"./jsxRuntime-DWBdSTGf.js";import{t as u}from"./icons-DTCoNVsk.js";import{b as d,t as f,u as p}from"./agents.module-BlfBTz7i.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-DLevBtPm.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-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};
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-C54K0mc6.js";import{Vt as c,W as l,d as u,dt as d,gt as f,mt as p,nt as m,o as h}from"./app-BknkHksg.js";import{t as g}from"./jsxRuntime-DWBdSTGf.js";import{t as _}from"./icons-DTCoNVsk.js";import{t as v}from"./CopyButton-DEf4thwH.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-BlfBTz7i.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-DLevBtPm.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`&&m(),p(n(r.live?`agentsWin.saved`:`agentsWin.savedRestart`)),e.id||q({form:o,live:r.live})}catch(e){p(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(``),p(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 f(a.id,e.id,e.model||void 0)&&(h.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:()=>{h.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 d(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,d]=s({kind:`list`}),[f,m]=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`&&f&&!window.confirm(n(`agentsWin.unsavedLeave`))?!1:(m(!1),d({kind:`list`}),!0),O=()=>{(l.kind!==`editor`||!f||window.confirm(n(`agentsWin.unsavedLeave`)))&&(h.value=!1)},k=e=>d({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);p(n(r.live?`agentsWin.deleted`:`agentsWin.deletedRestart`)),x.reload()}catch(e){p(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:m,onTrusted:()=>{x.reload(),C.reload()},onSaved:e=>{x.reload(),d(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:()=>d({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);d({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,5 +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(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PlanViewer-TxP_h0KX.js","assets/i18n-C54K0mc6.js","assets/preload-helper-B3nfOi5I.js","assets/app-BknkHksg.js","assets/jsxRuntime-DWBdSTGf.js","assets/panel-LBWYDX9B.js","assets/index-XYSVNCIf.js","assets/icons-DTCoNVsk.js","assets/clipboard-hOiC7lD8.js","assets/CopyButton-DEf4thwH.js","assets/visible-DLChI0F-.js","assets/index-DoBakzIL.css","assets/strings-DDeSYQDZ.js","assets/view-DF9hOwPO.js","assets/view-DWcZ1gKW.css","assets/PlanViewer-CPifoQAf.css","assets/SpreadsheetPanel-Db_lqwkD.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-C54K0mc6.js";import{t as a}from"./preload-helper-B3nfOi5I.js";import{Dt as o,E as s,Et as c,Tt as l,d as u,wt as d,yt as f}from"./app-BknkHksg.js";import{t as p}from"./jsxRuntime-DWBdSTGf.js";import{t as m}from"./icons-DTCoNVsk.js";import{c as h,f as g}from"./panel-LBWYDX9B.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-XYSVNCIf.js";import{r as T}from"./forge-page-BuIg49Im.js";import{r as E,t as D}from"./TextPreview-DHQCGoiY.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
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
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};
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=l(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`),o(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),[c,l]=i(()=>Math.max(0,s.findIndex(t=>t.id===e.current))),u=r(null),f=r(null),g=r({text:``,at:0}),_=e.list.length>8||!!e.initialFilter;n(()=>{(_?f.current:u.current)?.focus()},[_]),n(()=>{c>=s.length&&l(Math.max(0,s.length-1))},[s.length,c]);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;l(t=>Math.min(s.length-1,Math.max(0,t+e)));return}if(t.key===`Enter`){let n=s[c];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&&l(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(c):void 0,onInput:e=>{o(e.currentTarget.value),l(0)}}):null,p(`ul`,{ref:u,id:`${e.id}-list`,class:E.listbox,role:`listbox`,"aria-label":t(`artifactPanel.switch`),tabIndex:0,"aria-activedescendant":s.length?v(c):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===c?`true`:void 0,onClick:()=>e.onPick(n.id),onMouseMove:()=>l(r),children:[p(m,{name:d[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:d[n.kind],size:26})}),p(`span`,{class:E.fallbackName,title:n.fileName,children:n.fileName}),p(`span`,{children:o(n.bytes)}),p(`p`,{children:e.reason===`tooLarge`?t(`artifact.tooLarge`,{size:o(n.bytes)}):t(`artifact.noPreview`)}),p(`a`,{class:`${E.button} ${E.primary}`,href:c(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:u.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-TxP_h0KX.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-Db_lqwkD.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,u]=i(!1),d=r(null);return n(()=>d.current?.focus(),[]),p(`form`,{class:E.sheet,"aria-label":t(`artifactPanel.exportTitle`),onSubmit:async n=>{n.preventDefault(),u(!0);let r=await _(e.artifact.id,a,s);u(!1),r&&(f.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:d,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`}),u.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:u.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`:d[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:c(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){f.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-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
+ import{T as e,a as t,b as n,g as r}from"./i18n-C54K0mc6.js";import{cn as i,h as a,ln as o,sn as s,un as c,x as l}from"./app-BknkHksg.js";import{t as u}from"./jsxRuntime-DWBdSTGf.js";import{t as d}from"./icons-DTCoNVsk.js";import{t as f}from"./CopyButton-DEf4thwH.js";import{x as p}from"./index-XYSVNCIf.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 +1 @@
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
+ import{a as e,b as t,g as n,y as r}from"./i18n-C54K0mc6.js";import{b as i,d as a,j as o}from"./app-BknkHksg.js";import{t as s}from"./jsxRuntime-DWBdSTGf.js";import{t as c}from"./icons-DTCoNVsk.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-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
+ import{a as e,y as t}from"./i18n-C54K0mc6.js";import{t as n}from"./jsxRuntime-DWBdSTGf.js";import{t as r}from"./icons-DTCoNVsk.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-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
+ import{b as e,g as t,y as n}from"./i18n-C54K0mc6.js";import{M as r,j as i}from"./app-BknkHksg.js";import{t as a}from"./jsxRuntime-DWBdSTGf.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-B1jQsfH5.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-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(`
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-C54K0mc6.js";import{E as s,d as c}from"./app-BknkHksg.js";import{t as l}from"./jsxRuntime-DWBdSTGf.js";import{t as u}from"./icons-DTCoNVsk.js";import{x as d}from"./index-XYSVNCIf.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};
@@ -1 +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};
1
+ import{a as e,b as t,g as n,y as r}from"./i18n-C54K0mc6.js";import{E as i,J as a,k as o,ut as s,zt as c}from"./app-BknkHksg.js";import{t as l}from"./jsxRuntime-DWBdSTGf.js";import{M as u,N as d,R as f,v as p}from"./index-XYSVNCIf.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=o.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&&(!c(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};