night-orch 0.12.0 → 0.12.1

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.
@@ -49,6 +49,19 @@ export interface LoadRunsOptions {
49
49
  offset?: number;
50
50
  repo?: string;
51
51
  status?: string;
52
+ /**
53
+ * When false, rows whose `terminated_at` is set are excluded from the
54
+ * result — i.e. only the one live head per `(repo, issue_number)` is
55
+ * returned. This is what the web UI's "Active" tab and the MCP list
56
+ * runs tool's default view want: superseded Continue/Retry predecessors
57
+ * stay in the history panel instead of masquerading as duplicate
58
+ * active rows.
59
+ *
60
+ * Defaults to `true` so the TUI's issue-grouped view (which renders
61
+ * the full attempt chain under each issue) keeps its existing
62
+ * behaviour.
63
+ */
64
+ includeTerminated?: boolean;
52
65
  }
53
66
  export declare function loadRuns(db: Database.Database, limitOrOptions?: number | LoadRunsOptions): RunListRow[];
54
67
  export declare function buildIssueList(runs: RunListRow[]): IssueListRow[];
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAG1C,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,UAAU,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,QAAQ,CACtB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,cAAc,CAAC,EAAE,MAAM,GAAG,eAAe,GACxC,UAAU,EAAE,CA2Md;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,CA6EjE;AAcD,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAWvG;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,SAAI,GAAG,aAAa,EAAE,CAUlF"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAG1C,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,UAAU,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,wBAAgB,QAAQ,CACtB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,cAAc,CAAC,EAAE,MAAM,GAAG,eAAe,GACxC,UAAU,EAAE,CAyNd;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,CA6EjE;AAcD,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAWvG;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,SAAI,GAAG,aAAa,EAAE,CAUlF"}
@@ -3,6 +3,7 @@ export function loadRuns(db, limitOrOptions) {
3
3
  const options = typeof limitOrOptions === 'number'
4
4
  ? { limit: limitOrOptions }
5
5
  : (limitOrOptions ?? {});
6
+ const includeTerminated = options.includeTerminated ?? true;
6
7
  const conditions = [];
7
8
  const params = [];
8
9
  if (options.repo) {
@@ -14,6 +15,15 @@ export function loadRuns(db, limitOrOptions) {
14
15
  params.push(options.status);
15
16
  }
16
17
  const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
18
+ // When `includeTerminated` is false, terminated attempts must be
19
+ // excluded *before* the `ranked_runs` window function picks the top
20
+ // row. Otherwise a chain like
21
+ // live queued <- terminated error (from /orch continue) <- terminated running
22
+ // ranks the most-recently-created terminated row as run_rank=1, and the
23
+ // active view shows the whole zombie chain.
24
+ const runsSourceClause = includeTerminated
25
+ ? 'FROM runs r'
26
+ : 'FROM runs r WHERE r.terminated_at IS NULL';
17
27
  const query = `WITH ranked_runs AS (
18
28
  SELECT
19
29
  r.repo,
@@ -27,7 +37,7 @@ export function loadRuns(db, limitOrOptions) {
27
37
  r.rowid DESC,
28
38
  r.id DESC
29
39
  ) AS run_rank
30
- FROM runs r
40
+ ${runsSourceClause}
31
41
  ),
32
42
  unresolved_issues AS (
33
43
  SELECT rr.repo, rr.issue_number
@@ -91,6 +101,7 @@ export function loadRuns(db, limitOrOptions) {
91
101
  INNER JOIN unresolved_issues u
92
102
  ON u.repo = r.repo
93
103
  AND u.issue_number = r.issue_number
104
+ ${includeTerminated ? '' : 'WHERE r.terminated_at IS NULL'}
94
105
  ),
95
106
  issue_override_rows AS (
96
107
  SELECT
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/cli/tui/data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/cli/tui/data.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AA+LnD,wBAAsB,YAAY,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAwCnG;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBtG;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACxF,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,OAAO,CAAC,CA6ElB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CA2DvG;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACvC,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,OAAO,CAAC,CA+ClB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvD,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AA+LnD,wBAAsB,YAAY,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAwCnG;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBtG;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACxF,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,OAAO,CAAC,CAiFlB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CA2DvG;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACvC,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,OAAO,CAAC,CA+ClB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvD,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
@@ -200,11 +200,15 @@ export async function handleListRuns(args, deps) {
200
200
  view: view ?? null,
201
201
  };
202
202
  }
203
+ // Active view: exclude terminated attempts so Continue/Retry
204
+ // predecessors stay in the history panel instead of surfacing as
205
+ // duplicate rows for the same issue in the dashboard's "Active" tab.
203
206
  const filteredRows = loadRuns(deps.db, {
204
207
  limit: limit + 1,
205
208
  offset,
206
209
  repo: args.repo,
207
210
  status: args.status,
211
+ includeTerminated: false,
208
212
  });
209
213
  const hasMore = filteredRows.length > limit;
210
214
  const pageRows = hasMore ? filteredRows.slice(0, limit) : filteredRows;
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/mcp/tools/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/mcp/tools/status.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "night-orch",
3
- "version": "0.12.0",
3
+ "version": "0.12.1",
4
4
  "description": "Nightly GitHub/Forgejo issue orchestrator — autonomous AI agent coding tool",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -14,4 +14,4 @@ Error generating stack: `+n.message+`
14
14
  0%, 100% { opacity: 1; }
15
15
  50% { opacity: 0.4; }
16
16
  }
17
- `;function qx({status:l,serverUnreachable:o=!1,elapsedSeconds:i}){const u=Ux(l.installMethod);return r.jsxs("div",{"data-theme":"black",style:{position:"fixed",inset:0,zIndex:9999,display:"grid",placeItems:"center",backgroundColor:"rgba(0, 0, 0, 0.78)",backdropFilter:"blur(4px)",padding:"1rem"},role:"dialog","aria-modal":"true","aria-label":"Self update in progress",children:[r.jsx("style",{children:Hx}),r.jsxs("section",{className:"w-full max-w-xl rounded-box border border-base-300/80 bg-base-100/95 p-5 shadow-2xl",children:[r.jsx("h2",{className:"text-lg font-semibold",children:"Applying self-update"}),(l.previousCommit||l.targetCommit)&&r.jsxs("p",{className:"mt-1 font-mono text-xs text-base-content/60",children:[l.previousCommit?.slice(0,8),l.targetCommit&&r.jsxs(r.Fragment,{children:[" → ",l.targetCommit.slice(0,8)]})]}),r.jsxs("div",{className:"mt-3 flex items-center gap-3 text-sm text-base-content/80",children:[r.jsx("span",{className:"loading loading-spinner loading-md text-info"}),r.jsxs("span",{children:["Update in progress",i!=null&&i>0&&r.jsxs(r.Fragment,{children:[" — ",kx(i)]})]})]}),r.jsx("ul",{className:"steps steps-vertical mt-4 w-full",children:u.map(f=>{const h=Bx(f.id,l.state,u),g=h==="done"?"step step-success":h==="active"?"step step-info update-step-active":"step",v=h==="done"?"✓":h==="active"?"●":"○";return r.jsx("li",{className:g,"data-content":v,children:r.jsx("span",{className:h==="pending"?"text-base-content/50":void 0,children:f.label})},f.id)})}),o&&r.jsxs("div",{className:"mt-4 flex items-center gap-2 rounded border border-info/35 bg-info/10 p-2.5 text-xs text-info-content",children:[r.jsx("span",{className:"loading loading-dots loading-xs"}),r.jsx("span",{children:"Server is restarting — reconnecting automatically..."})]}),l.state==="rolling-back"&&r.jsx("div",{className:"mt-4 rounded border border-warning/35 bg-warning/10 p-2 text-xs text-warning-content",children:"Health checks failed. Rolling back to the previous known-good build."}),r.jsx("p",{className:"mt-4 text-xs text-base-content/70",children:"Dashboard controls are temporarily blocked. This page refreshes automatically after a healthy restart."})]})]})}function Yx(l){return eg.createPortal(r.jsx(qx,{...l}),document.body)}function Gx(l){if(!l||typeof l!="object")return null;const o=l.runId,i=l.events,u=l.lastEventId;return typeof o!="string"||!Array.isArray(i)||typeof u!="number"?null:{runId:o,events:i.filter(f=>!f||typeof f!="object"?!1:typeof f.id=="number"),lastEventId:u}}function Vx(l,o){const i=new Set(l.map(f=>f.id)),u=[...l];for(const f of o)i.has(f.id)||(i.add(f.id),u.push(f));return u.sort((f,h)=>f.id-h.id),u}const Qx="Start self-update now? This pulls latest code, rebuilds, and restarts Night-Orch services.",Xx="Start self-update now? This installs the latest version from npm and restarts Night-Orch services.";function Zx(l,o="unknown"){return l(o==="npm"?Xx:Qx)}const Kx=6e3;function $x(l){return{startedAtMs:l,sawActiveState:!1}}function oc(){return{startedAtMs:null,sawActiveState:!1}}function cc(l){return l!=null&&l.state!=="idle"&&l.state!=="failed"}function Jx(l){return cc(l)?l:null}function Px(l,o,i){return l.startedAtMs==null||l.sawActiveState?!0:o-l.startedAtMs>=i}function Fx(l,o,i,u){return cc(l)?{nextTransition:{startedAtMs:o.startedAtMs,sawActiveState:!0},nextStatus:l,errorMessage:null,shouldReload:!1}:Px(o,i,u)?l.state==="failed"?{nextTransition:oc(),nextStatus:l,errorMessage:`Update failed: ${l.error??"unknown error"}`,shouldReload:!1}:{nextTransition:oc(),nextStatus:l,errorMessage:null,shouldReload:l.state==="idle"}:{nextTransition:o,nextStatus:null,errorMessage:null,shouldReload:!1}}async function Ix(l){const o=await l.fetchUpdateStatus();if(!o)return l.transition;const i=Fx(o,l.transition,l.nowMs?l.nowMs():Date.now(),l.graceMs??Kx);return i.nextStatus&&l.onStatus(i.nextStatus),i.errorMessage&&l.onError(i.errorMessage),i.shouldReload&&l.onReload(),i.nextTransition}const Vu="x-night-orch-intent",Qu="mutate",Wx="x-night-orch-web-token",e1="0.12.0",t1=6e4,Ep=20;function Cp(l){if(!l)return null;try{return decodeURIComponent(l)}catch{return l}}function a1(l){return l===null?"null":typeof l=="boolean"?l?"true":"false":Array.isArray(l)||typeof l=="object"&&l!==null?JSON.stringify(l):String(l)}function ac({activePage:l,issueDetailRunId:o=null,projectDetailRepo:i=null}){const u=sf(),[f,h]=w.useState(null),[g,v]=w.useState(null),[b,m]=w.useState(null),[j,y]=w.useState(!0),[x,S]=w.useState(!0),[T,E]=w.useState(!0),[D,M]=w.useState(!1),[H,Z]=w.useState("all"),[X,I]=w.useState("active"),[ee,V]=w.useState([]),[W,$]=w.useState(!1),[se,Q]=w.useState(!1),[ue,de]=w.useState(0),[Ye,Ee]=w.useState(!1),[B,K]=w.useState(""),[le,Me]=w.useState([]),[Ne,R]=w.useState(null),[q,P]=w.useState(null),[J,ce]=w.useState(null),[he,ve]=w.useState(!1),[Ce,He]=w.useState(null),[tt,na]=w.useState(!0),[ma,Bn]=w.useState(!1),[Ot,Dt]=w.useState(!1),[Pa,xt]=w.useState(!1),[la,St]=w.useState(""),[Fa,zt]=w.useState(null),[kn,Hn]=w.useState(!1),[me,it]=w.useState({}),[jt,vl]=w.useState(""),[ut,gc]=w.useState({repo:"",issueNumber:"",amount:""}),[Ra,qn]=w.useState(null),[rs,Yn]=w.useState(null),[bt,sa]=w.useState(0),Je=w.useRef(null),us=w.useRef(null),fs=w.useRef(""),ds=w.useRef(""),Qt=w.useRef(oc()),Gn=w.useRef(Date.now()),Vn=w.useRef(tt),pa=w.useRef(J),Qn=w.useRef(Ce),ia=w.useRef(0),Xn=f?.config.repos??[],Ia=f?.runs.runs??[],Wa=f?.stats.overview.runningRuns??0,Ta=f?.stats.overview.queuedRuns??0,en=cc(Ra),hs=w.useMemo(()=>H==="all"?Ia:Ia.filter(A=>A.repo===H),[Ia,H]),Ei=w.useMemo(()=>X==="active"?hs:ee,[hs,ee,X]),Ci=X==="active"?j:W,ms=X!=="active"&&Ye,yl=w.useMemo(()=>{const A=new Map;for(const F of Ia)A.set(F.runId,F);for(const F of ee)A.set(F.runId,F);return A},[Ia,ee]),oa=w.useMemo(()=>Cp(o),[o]),ps=w.useMemo(()=>Cp(i),[i]),Xt=w.useMemo(()=>oa?yl.get(oa)??null:null,[oa,yl]),Ge=Xt?.hasRun?Xt.runId:"",ft=w.useMemo(()=>en?{label:`updating ${Ra?.state??"starting"}`,toneClass:"badge-warning"}:D?Wa>0?{label:"processing",toneClass:"badge-success"}:Ta>0?{label:"queued",toneClass:"badge-info"}:{label:"idle",toneClass:"badge-neutral"}:{label:"reconnecting",toneClass:"badge-error"},[Ta,Wa,D,en,Ra?.state]),tn=w.useMemo(()=>{const A=f?.build?.version??e1,F=f?.build?.gitSha;return f?.build?.installMethod==="git"&&F?`v${A} · ${F.slice(0,8)}`:`v${A}`},[f?.build]),ga=w.useCallback(async()=>{const A=await fetch("/api/dashboard");if(!A.ok)throw new Error(`Failed to load dashboard (${A.status})`);const F=await A.json();h(F)},[]),Ma=w.useCallback(async(A={})=>{if(X==="active")return;const F=A.append??!1,_e=++ia.current,ct=F?A.offset??0:0;F?Q(!0):(V([]),de(0),Ee(!1),$(!0),Q(!1));try{const Re=new URLSearchParams;H!=="all"&&Re.set("repo",H),Re.set("view",X),Re.set("limit",String(Ep)),Re.set("offset",String(ct));const Le=await fetch(`/api/runs?${Re.toString()}`);if(!Le.ok)throw new Error(`Failed to load runs (${Le.status})`);const ge=await Le.json();if(_e!==ia.current)return;const Rt=typeof ge.hasMore=="boolean"?ge.hasMore:ge.runs.length>=Ep,Zt=typeof ge.nextOffset=="number"?ge.nextOffset:ct+ge.runs.length;V(ua=>{if(!F)return ge.runs;const Ea=new Set(ua.map(Ca=>Ca.runId)),js=[...ua];for(const Ca of ge.runs)Ea.has(Ca.runId)||(Ea.add(Ca.runId),js.push(Ca));return js}),Ee(Rt),de(Zt)}catch(Re){_e===ia.current&&R(Re.message)}finally{_e===ia.current&&($(!1),Q(!1))}},[X,H]),an=w.useCallback(async()=>{const A=await fetch("/api/update-status");return A.ok?await A.json():null},[]),gs=w.useCallback(async()=>{const A=await fetch("/api/session");if(!A.ok)throw new Error(`Failed to initialize web session (${A.status})`);const F=await A.json();na(F.operationsEnabled??!0);const _e=F.requiresExternalAuth??F.mutationToken===null;if(Bn(_e),!_e&&F.mutationToken){He(F.mutationToken),Dt(!0);return}try{const ct=await fetch("/api/auth/session");if(ct.ok&&(await ct.json()).authenticated===!0){Dt(!0);return}}catch{}Dt(!1),xt(!0)},[]),nn=w.useCallback(async()=>{if(!la.trim()){zt("Token is required.");return}Hn(!0),zt(null);try{const A=await fetch("/api/auth/session",{method:"POST",headers:{"Content-Type":"application/json",[Vu]:Qu},body:JSON.stringify({token:la.trim()})});if(A.status===204){Dt(!0),xt(!1),St(""),zt(null);return}if(A.status===401){zt("Invalid token. Check NIGHT_ORCH_WEB_AUTH_TOKEN on the server.");return}zt(`Login failed (${A.status}).`)}catch(A){zt(A.message)}finally{Hn(!1)}},[la]),bs=w.useCallback(async()=>{try{await fetch("/api/auth/logout",{method:"POST",headers:{"Content-Type":"application/json",[Vu]:Qu}})}catch{}Dt(!1),xt(!0)},[]),ca=w.useCallback(async()=>{const A=await fetch("/api/projects");if(!A.ok)throw new Error(`Failed to load projects (${A.status})`);const F=await A.json();v(F)},[]),Lt=w.useCallback(async()=>{const A=await fetch("/api/settings");if(!A.ok)throw new Error(`Failed to load settings (${A.status})`);const F=await A.json();m(F),it(Object.fromEntries(F.settings.map(_e=>[_e.key,a1(_e.effectiveValue)])))},[]);w.useEffect(()=>{(async()=>{try{y(!0),S(!0),E(!0),await Promise.all([ga(),gs(),ca(),Lt()])}catch(A){R(A.message)}finally{y(!1),S(!1),E(!1)}})()},[ga,ca,gs,Lt]),w.useEffect(()=>{let A=!1;return(async()=>{try{const F=await an();if(!F||A)return;cc(F)?Qt.current={startedAtMs:null,sawActiveState:!0}:Qt.current=oc(),qn(_e=>_e&&!F.installMethod?{...F,installMethod:_e.installMethod}:F)}catch{}})(),()=>{A=!0}},[an]),w.useEffect(()=>{Z(A=>A==="all"||Xn.includes(A)?A:"all")},[Xn]),w.useEffect(()=>{if(X==="active"){ia.current+=1,V([]),de(0),Ee(!1),$(!1),Q(!1);return}Ma({append:!1,offset:0})},[Ma,X]),w.useEffect(()=>{Vn.current=tt},[tt]),w.useEffect(()=>{pa.current=J},[J]),w.useEffect(()=>{Qn.current=Ce},[Ce]),w.useEffect(()=>{oa&&K(oa)},[oa]),w.useEffect(()=>{let A=!1;const F=()=>{const _e=window.location.protocol==="https:"?"wss":"ws",ct=Ce?`?token=${encodeURIComponent(Ce)}`:"",Re=new WebSocket(`${_e}://${window.location.host}/ws${ct}`);Je.current=Re,Re.onopen=()=>{if(A)return;M(!0),Re.send(JSON.stringify({type:"refresh"}));const Le=fs.current;Le&&Re.send(JSON.stringify({type:"subscribe-run-events",runId:Le,since:0}))},Re.onmessage=Le=>{try{const ge=JSON.parse(Le.data);if(ge.type==="snapshot"&&ge.payload){h(ge.payload);return}if(ge.type==="run-events"&&ge.payload){const Rt=Gx(ge.payload);if(!Rt||Rt.runId!==fs.current)return;Me(Zt=>Vx(Zt,Rt.events));return}ge.type==="error"&&ge.error&&P(ge.error)}catch{}},Re.onclose=()=>{Je.current===Re&&(Je.current=null),M(!1),!A&&(us.current=window.setTimeout(F,2e3))},Re.onerror=()=>{Re.close()}};return F(),()=>{A=!0,us.current!==null&&window.clearTimeout(us.current),Je.current?.close(),Je.current=null}},[Ce]),w.useEffect(()=>{fs.current=Ge,Me([]);const A=Je.current;if(!A||A.readyState!==WebSocket.OPEN){ds.current=Ge;return}const F=ds.current;F&&F!==Ge&&A.send(JSON.stringify({type:"unsubscribe-run-events",runId:F})),Ge&&A.send(JSON.stringify({type:"subscribe-run-events",runId:Ge,since:0})),ds.current=Ge},[Ge,D]);const[Zn,ba]=w.useState(!1);w.useEffect(()=>{if(!en)return;let A=!1,F=0;const _e=async()=>{try{const Re=await Ix({fetchUpdateStatus:an,transition:Qt.current,onStatus:Le=>{A||(F=0,ba(!1),qn(ge=>ge&&!Le.installMethod?{...Le,installMethod:ge.installMethod}:Le))},onError:Le=>{A||(F=0,ba(!1),R(Le))},onReload:()=>{A||window.location.reload()}});A||(Qt.current=Re)}catch{F++,!A&&F>=2&&(ba(!0),qn(Re=>{if(!Re)return Re;const Le=Re.installMethod==="npm"?Lx:zx,ge=Le.indexOf(Re.state);if(ge<0||ge>=Le.length-1)return Re;if(F*2>=4*(ge+1)){const Zt=Le[ge+1];if(Zt)return{...Re,state:Zt}}return Re}))}};_e();const ct=window.setInterval(()=>{_e()},2e3);return()=>{A=!0,window.clearInterval(ct)}},[an,en]),w.useEffect(()=>{if(!rs)return;const A=window.setInterval(()=>{sa(Math.floor((Date.now()-rs)/1e3))},1e3);return()=>window.clearInterval(A)},[rs]);const re=w.useCallback(async(A,F,_e,ct,Re)=>{try{if(ce(A),R(null),!Ce&&!Ot)throw xt(!0),new Error("Log in first.");if(!tt)throw new Error("Web operations are disabled by server policy.");const Le={"Content-Type":"application/json",[Vu]:Qu};Ce&&(Le[Wx]=Ce);const ge=await fetch(F,{method:"POST",headers:Le,credentials:"same-origin",body:JSON.stringify(_e)});if(ge.status===401&&ma)throw Dt(!1),xt(!0),new Error("Session expired. Log in again.");const Rt=await ge.json();if(!ge.ok){const ua=typeof Rt.error=="string"?Rt.error:`Operation failed (${ge.status})`;throw new Error(ua)}const Zt=xy(Rt)??ct;return P(Zt),(Re?.refreshAfterSuccess??!0)&&(await Promise.all([ga(),Lt()]),X!=="active"&&await Ma({append:!1,offset:0})),!0}catch(Le){return R(Le.message),!1}finally{ce(null)}},[ga,Ma,Lt,tt,ma,X,Ot,Ce]),wi=w.useCallback(async()=>{try{ve(!0),R(null);const A=[ga(),ca(),Lt()];l==="issues"&&X!=="active"&&A.push(Ma({append:!1,offset:0})),await Promise.all(A),Je.current?.readyState===WebSocket.OPEN&&Je.current.send(JSON.stringify({type:"refresh"}))}catch(A){R(A.message)}finally{ve(!1)}},[l,ga,Ma,ca,Lt,X]),xl=w.useCallback(()=>{Gn.current=Date.now(),re("poll","/api/operations/poll",{},"Manual poll requested")},[re]);w.useEffect(()=>{const A=()=>{if(document.visibilityState!=="visible")return;const F=Date.now()-Gn.current>=t1,_e=Vn.current&&pa.current===null&&Qn.current!==null;F&&_e&&xl()};return document.addEventListener("visibilitychange",A),()=>{document.removeEventListener("visibilitychange",A)}},[xl]);const _a=w.useCallback(()=>{re("sync","/api/operations/sync",{},"Sync completed")},[re]),ln=w.useCallback(()=>{re("cleanup","/api/operations/cleanup",{},"Cleanup completed")},[re]),bc=w.useCallback(A=>{A!==X&&(A!=="active"&&($(!0),Q(!1)),I(A))},[X]),vs=w.useCallback(A=>{u({to:"/$page",params:{page:A}})},[u]),Ai=w.useCallback(A=>{K(A),u({to:"/$page/$detailId",params:{page:"issues",detailId:A}})},[u]),vc=w.useCallback(()=>{u({to:"/$page",params:{page:"issues"}})},[u]),Sl=w.useCallback(A=>{u({to:"/$page/$detailId",params:{page:"projects",detailId:A}})},[u]),jl=w.useCallback(()=>{u({to:"/$page",params:{page:"projects"}})},[u]),ra=w.useCallback(async()=>{const A=f?.build?.installMethod;if(!(!Zx(ct=>window.confirm(ct),A==="git"||A==="npm"?A:"unknown")||!await re("update","/api/operations/update",{},"Update initiated - pulling and rebuilding...",{refreshAfterSuccess:!1}))){Qt.current=$x(Date.now()),qn({state:"draining",installMethod:A==="git"||A==="npm"?A:void 0}),Yn(Date.now()),sa(0);try{const ct=await an();if(!ct)return;const Re=Jx(ct);Re&&(Qt.current={startedAtMs:Qt.current.startedAtMs,sawActiveState:!0},qn(Re))}catch{}}},[an,re]),$e=w.useCallback(async(A,F)=>{window.confirm(F.confirmMessage)&&await re(F.operationName,F.endpoint,{repo:A.repo,issueNumber:A.issue,...F.payload},F.fallbackMessage)},[re]),Oi=w.useCallback(A=>{$e(A,{operationName:"retry",endpoint:"/api/operations/retry",confirmMessage:`Queue fresh retry for ${A.repo}#${A.issue}?`,fallbackMessage:`Fresh retry queued for ${A.repo}#${A.issue}`})},[$e]),yc=w.useCallback(A=>{$e(A,{operationName:"rebase",endpoint:"/api/operations/rebase",confirmMessage:`Queue rebase for ${A.repo}#${A.issue}?`,fallbackMessage:`Rebase queued for ${A.repo}#${A.issue}`})},[$e]),ys=w.useCallback(A=>{$e(A,{operationName:"continue",endpoint:"/api/operations/continue",confirmMessage:`Queue continue pass for ${A.repo}#${A.issue}?`,fallbackMessage:`Continue pass queued for ${A.repo}#${A.issue}`})},[$e]),Di=w.useCallback((A,F)=>{$e(A,{operationName:"delete-entry",endpoint:"/api/operations/delete-entry",confirmMessage:F?`Force delete local entry for ${A.repo}#${A.issue}? This can remove run-local state while shared issue state is still active elsewhere.`:`Delete local entry for ${A.repo}#${A.issue}?`,fallbackMessage:F?`Force-deleted local entry for ${A.repo}#${A.issue}`:`Deleted local entry for ${A.repo}#${A.issue}`,payload:{force:F}})},[$e]),Nl=w.useCallback(A=>{$e(A,{operationName:"cost-reset",endpoint:"/api/operations/cost-reset",confirmMessage:`Reset accumulated costs for ${A.repo}#${A.issue}? If cost-blocked, it will be re-queued.`,fallbackMessage:`Reset costs for ${A.repo}#${A.issue}`})},[$e]),xc=w.useCallback(A=>{window.confirm(`Bootstrap orchestration labels for ${A}?`)&&re("labels-init","/api/operations/labels-init",{repo:A},`Labels initialized for ${A}`)},[re]),Nt=w.useCallback(async A=>{const F=me[A];if(F===void 0){R(`No draft value found for ${A}`);return}await re(`setting:set:${A}`,"/api/operations/settings/set",{key:A,value:F},`Updated ${A}`)},[re,me]),xs=w.useCallback(async A=>{await re(`setting:clear:${A}`,"/api/operations/settings/clear",{key:A},`Cleared override for ${A}`)},[re]),zi=w.useCallback(async A=>{A.preventDefault();const F=Number.parseFloat(jt);if(!Number.isFinite(F)||F<=0){R("Daily override requires a positive number (USD)");return}await re("daily-cost-override:set","/api/operations/daily-cost-override/set",{amountUsd:F},`Raised today's daily cap to $${F.toFixed(2)}`)},[jt,re]),Ss=w.useCallback(async()=>{await re("daily-cost-override:clear","/api/operations/daily-cost-override/clear",{},"Cleared today's daily cap override")},[re]),sn=w.useCallback(async()=>{window.confirm("Reset today's accumulated cost counters? Cost-blocked runs will be re-queued.")&&await re("daily-cost-reset","/api/operations/daily-cost-reset",{},"Reset today's daily costs and resumed cost-blocked runs")},[re]),Li=w.useCallback(async A=>{A.preventDefault();const F=Number.parseInt(ut.issueNumber,10),_e=Number.parseFloat(ut.amount);if(!ut.repo||!Number.isFinite(F)||F<=0){R("Per-issue override requires a repo and a positive issue number");return}if(!Number.isFinite(_e)||_e<=0){R("Per-issue override requires a positive amount (USD)");return}await re("cost-override:set","/api/operations/cost-override/set",{repo:ut.repo,issueNumber:F,amountUsd:_e},`Set cost override for ${ut.repo}#${F} to $${_e.toFixed(2)}`)},[ut,re]),Ui=w.useCallback(async()=>{const A=Number.parseInt(ut.issueNumber,10);if(!ut.repo||!Number.isFinite(A)||A<=0){R("Clearing a per-issue override requires a repo and a positive issue number");return}await re("cost-override:clear","/api/operations/cost-override/clear",{repo:ut.repo,issueNumber:A},`Cleared cost override for ${ut.repo}#${A}`)},[ut,re]),on=l==="issues"&&oa!==null,Sc=l==="projects"&&ps!==null;return r.jsxs("main",{"data-theme":"black",className:"min-h-screen bg-orch-admin",children:[Pa&&r.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4",role:"dialog","aria-modal":"true","aria-labelledby":"norch-login-title",children:r.jsxs("div",{className:"w-full max-w-sm rounded-lg border border-slate-700 bg-slate-900 p-5 shadow-2xl",children:[r.jsx("h2",{id:"norch-login-title",className:"text-base font-semibold text-slate-100",children:"Sign in"}),r.jsxs("p",{className:"mt-1 text-xs text-slate-400",children:["Enter the ",r.jsx("code",{className:"font-mono",children:"NIGHT_ORCH_WEB_AUTH_TOKEN"})," configured on the server. The browser will keep you signed in via an HttpOnly cookie for 7 days."]}),r.jsx("input",{type:"password",autoFocus:!0,autoComplete:"off",value:la,onChange:A=>St(A.target.value),onKeyDown:A=>{A.key==="Enter"&&!kn&&nn()},className:"mt-3 w-full rounded border border-slate-600 bg-slate-950 px-3 py-2 font-mono text-sm text-slate-100 focus:border-orch-accent focus:outline-none",placeholder:"Paste token here"}),Fa&&r.jsx("p",{className:"mt-2 text-xs text-rose-400",role:"alert",children:Fa}),r.jsx("div",{className:"mt-4 flex justify-end gap-2",children:r.jsx("button",{type:"button",disabled:kn,onClick:()=>{nn()},className:"rounded bg-orch-accent px-3 py-2 text-sm font-medium text-slate-950 hover:bg-orch-accent/90 disabled:opacity-50",children:kn?"Signing in…":"Sign in"})})]})}),r.jsx(Ty,{currentStateLabel:ft.label,currentStateToneClass:ft.toneClass,isWorking:Wa>0||J!==null||en,socketConnected:D,lastRefreshAt:f?.generatedAt??null,pollIntervalSeconds:f?.config.pollIntervalSeconds??null,reposCount:Xn.length,activeRuns:f?.status.activeRuns??0,runningRuns:Wa,queuedRuns:Ta,operationsEnabled:tt,activeOperation:J,isRefreshing:he,onRefresh:()=>{wi()},onPoll:xl,onSync:_a,onCleanup:ln,onGoToSettings:()=>{vs("settings")},onLogout:ma&&Ot?()=>{bs()}:void 0}),r.jsxs("div",{className:"mx-auto flex w-full max-w-[1550px] flex-col gap-5 px-4 pb-24 pt-5 sm:px-6 md:pb-6 lg:px-8",children:[Ne&&r.jsx("div",{className:"alert alert-error shadow-sm",children:r.jsx("span",{children:Ne})}),q&&r.jsx("div",{className:"alert alert-info shadow-sm",children:r.jsx("span",{children:q})}),r.jsxs("div",{className:"grid gap-5 md:grid-cols-[auto_minmax(0,1fr)] md:items-stretch md:gap-0",children:[r.jsx(Ly,{activePage:l,onPageChange:vs}),r.jsxs("div",{className:"flex min-w-0 flex-col gap-5 md:pl-6",children:[l==="issues"&&(on?r.jsx(Yy,{run:Xt,runId:oa??"",runEvents:le,operationsEnabled:tt,activeOperation:J,onRetry:Oi,onRebase:yc,onContinue:ys,onDeleteEntry:Di,onResetCost:Nl,onBack:vc}):r.jsxs("div",{className:"flex flex-col gap-5",children:[r.jsx(Fu,{snapshot:f}),r.jsxs("section",{className:"grid gap-5 xl:grid-cols-[1.65fr_1fr]",children:[r.jsx(dx,{isLoading:Ci,isLoadingMore:se,repos:Xn,selectedRepo:H,onSelectedRepoChange:Z,runsView:X,onRunsViewChange:bc,filteredRuns:Ei,canLoadMore:ms,onLoadMore:()=>{Ma({append:!0,offset:ue})},selectedRunId:B,onOpenRun:Ai,statusTone:ax}),r.jsx(Vy,{operationsEnabled:tt,activeOperation:J,updateStatus:Ra,installMethod:f?.build?.installMethod,onUpdate:()=>{ra()}})]})]})),l==="stats"&&r.jsx(Dx,{snapshot:f,socketConnected:D}),l==="projects"&&(Sc?r.jsx(Wy,{snapshot:g,repo:ps??"",isLoading:x,operationsEnabled:tt,activeOperation:J,onLabelsInit:xc,onBack:jl}):r.jsx(tx,{snapshot:g,isLoading:x,onOpenRepo:Sl})),l==="settings"&&r.jsxs("div",{className:"flex flex-col gap-5",children:[r.jsx(Ry,{baseDailyBudgetUsd:f?.cost.dailyBudgetUsd??0,dailyBudgetOverrideUsd:f?.cost.dailyBudgetOverrideUsd??null,effectiveDailyBudgetUsd:f?.cost.effectiveDailyBudgetUsd??f?.cost.dailyBudgetUsd??0,todayCostUsd:f?.status.dailyCostUsd??0,activeOperation:J,dailyDraft:jt,onDailyDraftChange:vl,onDailySubmit:A=>{zi(A)},onDailyClear:()=>{Ss()},onDailyReset:()=>{sn()},issueDraft:ut,repos:Xn,onIssueDraftChange:A=>{gc(F=>({...F,...A}))},onIssueSubmit:A=>{Li(A)},onIssueClear:()=>{Ui()}}),r.jsx(wx,{settings:b?.settings??[],generatedAt:b?.generatedAt??null,isLoading:T,activeOperation:J,drafts:me,onDraftChange:(A,F)=>{it(_e=>({..._e,[A]:F}))},onApply:A=>{Nt(A)},onClear:A=>{xs(A)}})]})]})]}),r.jsxs("div",{className:"flex flex-col items-center gap-2 pb-16 pt-1 md:pb-2",children:[r.jsx("button",{type:"button",className:"btn btn-outline btn-sm border-primary/55 bg-base-200/45 text-primary hover:bg-primary/15",onClick:()=>{window.location.reload()},children:"UI reload"}),r.jsx("span",{className:"text-[10px] text-base-content/50",children:tn})]})]}),en&&Ra&&r.jsx(Yx,{status:Ra,serverUnreachable:Zn,elapsedSeconds:bt})]})}const n1=["issues","stats","projects","settings"];function fg(l){return n1.some(o=>o===l)}function l1(){return r.jsx(lg,{})}function s1(){const{page:l}=dc({from:"/$page"});return r.jsx(ac,{activePage:l})}function i1(){const{page:l,detailId:o}=dc({from:"/$page/$detailId"});return l==="issues"?r.jsx(ac,{activePage:"issues",issueDetailRunId:o}):l==="projects"?r.jsx(ac,{activePage:"projects",projectDetailRepo:o}):r.jsx(ac,{activePage:l})}const pc=ey({component:l1}),o1=of({getParentRoute:()=>pc,path:"/",loader:()=>ji({to:"/$page",params:{page:"issues"},replace:!0,throw:!0}),component:()=>null}),c1=of({getParentRoute:()=>pc,path:"$page",loader:({params:l})=>{if(!fg(l.page))return ji({to:"/$page",params:{page:"issues"},replace:!0,throw:!0})},component:s1}),r1=of({getParentRoute:()=>pc,path:"$page/$detailId",loader:({params:l})=>{if(!fg(l.page))return ji({to:"/$page",params:{page:"issues"},replace:!0,throw:!0});if(l.page!=="issues"&&l.page!=="projects")return ji({to:"/$page",params:{page:l.page},replace:!0,throw:!0})},component:i1}),u1=pc.addChildren([o1,c1,r1]);function f1(){return typeof window>"u"?mv({initialEntries:["/issues"]}):Gp()}function d1(l={}){return fy({routeTree:u1,history:l.history??f1(),isServer:l.isServer})}const h1=d1(),dg=document.getElementById("root");if(!dg)throw new Error("Root container not found");R0.createRoot(dg).render(r.jsx(is.StrictMode,{children:r.jsx(my,{router:h1})}));"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js").catch(()=>{})});
17
+ `;function qx({status:l,serverUnreachable:o=!1,elapsedSeconds:i}){const u=Ux(l.installMethod);return r.jsxs("div",{"data-theme":"black",style:{position:"fixed",inset:0,zIndex:9999,display:"grid",placeItems:"center",backgroundColor:"rgba(0, 0, 0, 0.78)",backdropFilter:"blur(4px)",padding:"1rem"},role:"dialog","aria-modal":"true","aria-label":"Self update in progress",children:[r.jsx("style",{children:Hx}),r.jsxs("section",{className:"w-full max-w-xl rounded-box border border-base-300/80 bg-base-100/95 p-5 shadow-2xl",children:[r.jsx("h2",{className:"text-lg font-semibold",children:"Applying self-update"}),(l.previousCommit||l.targetCommit)&&r.jsxs("p",{className:"mt-1 font-mono text-xs text-base-content/60",children:[l.previousCommit?.slice(0,8),l.targetCommit&&r.jsxs(r.Fragment,{children:[" → ",l.targetCommit.slice(0,8)]})]}),r.jsxs("div",{className:"mt-3 flex items-center gap-3 text-sm text-base-content/80",children:[r.jsx("span",{className:"loading loading-spinner loading-md text-info"}),r.jsxs("span",{children:["Update in progress",i!=null&&i>0&&r.jsxs(r.Fragment,{children:[" — ",kx(i)]})]})]}),r.jsx("ul",{className:"steps steps-vertical mt-4 w-full",children:u.map(f=>{const h=Bx(f.id,l.state,u),g=h==="done"?"step step-success":h==="active"?"step step-info update-step-active":"step",v=h==="done"?"✓":h==="active"?"●":"○";return r.jsx("li",{className:g,"data-content":v,children:r.jsx("span",{className:h==="pending"?"text-base-content/50":void 0,children:f.label})},f.id)})}),o&&r.jsxs("div",{className:"mt-4 flex items-center gap-2 rounded border border-info/35 bg-info/10 p-2.5 text-xs text-info-content",children:[r.jsx("span",{className:"loading loading-dots loading-xs"}),r.jsx("span",{children:"Server is restarting — reconnecting automatically..."})]}),l.state==="rolling-back"&&r.jsx("div",{className:"mt-4 rounded border border-warning/35 bg-warning/10 p-2 text-xs text-warning-content",children:"Health checks failed. Rolling back to the previous known-good build."}),r.jsx("p",{className:"mt-4 text-xs text-base-content/70",children:"Dashboard controls are temporarily blocked. This page refreshes automatically after a healthy restart."})]})]})}function Yx(l){return eg.createPortal(r.jsx(qx,{...l}),document.body)}function Gx(l){if(!l||typeof l!="object")return null;const o=l.runId,i=l.events,u=l.lastEventId;return typeof o!="string"||!Array.isArray(i)||typeof u!="number"?null:{runId:o,events:i.filter(f=>!f||typeof f!="object"?!1:typeof f.id=="number"),lastEventId:u}}function Vx(l,o){const i=new Set(l.map(f=>f.id)),u=[...l];for(const f of o)i.has(f.id)||(i.add(f.id),u.push(f));return u.sort((f,h)=>f.id-h.id),u}const Qx="Start self-update now? This pulls latest code, rebuilds, and restarts Night-Orch services.",Xx="Start self-update now? This installs the latest version from npm and restarts Night-Orch services.";function Zx(l,o="unknown"){return l(o==="npm"?Xx:Qx)}const Kx=6e3;function $x(l){return{startedAtMs:l,sawActiveState:!1}}function oc(){return{startedAtMs:null,sawActiveState:!1}}function cc(l){return l!=null&&l.state!=="idle"&&l.state!=="failed"}function Jx(l){return cc(l)?l:null}function Px(l,o,i){return l.startedAtMs==null||l.sawActiveState?!0:o-l.startedAtMs>=i}function Fx(l,o,i,u){return cc(l)?{nextTransition:{startedAtMs:o.startedAtMs,sawActiveState:!0},nextStatus:l,errorMessage:null,shouldReload:!1}:Px(o,i,u)?l.state==="failed"?{nextTransition:oc(),nextStatus:l,errorMessage:`Update failed: ${l.error??"unknown error"}`,shouldReload:!1}:{nextTransition:oc(),nextStatus:l,errorMessage:null,shouldReload:l.state==="idle"}:{nextTransition:o,nextStatus:null,errorMessage:null,shouldReload:!1}}async function Ix(l){const o=await l.fetchUpdateStatus();if(!o)return l.transition;const i=Fx(o,l.transition,l.nowMs?l.nowMs():Date.now(),l.graceMs??Kx);return i.nextStatus&&l.onStatus(i.nextStatus),i.errorMessage&&l.onError(i.errorMessage),i.shouldReload&&l.onReload(),i.nextTransition}const Vu="x-night-orch-intent",Qu="mutate",Wx="x-night-orch-web-token",e1="0.12.1",t1=6e4,Ep=20;function Cp(l){if(!l)return null;try{return decodeURIComponent(l)}catch{return l}}function a1(l){return l===null?"null":typeof l=="boolean"?l?"true":"false":Array.isArray(l)||typeof l=="object"&&l!==null?JSON.stringify(l):String(l)}function ac({activePage:l,issueDetailRunId:o=null,projectDetailRepo:i=null}){const u=sf(),[f,h]=w.useState(null),[g,v]=w.useState(null),[b,m]=w.useState(null),[j,y]=w.useState(!0),[x,S]=w.useState(!0),[T,E]=w.useState(!0),[D,M]=w.useState(!1),[H,Z]=w.useState("all"),[X,I]=w.useState("active"),[ee,V]=w.useState([]),[W,$]=w.useState(!1),[se,Q]=w.useState(!1),[ue,de]=w.useState(0),[Ye,Ee]=w.useState(!1),[B,K]=w.useState(""),[le,Me]=w.useState([]),[Ne,R]=w.useState(null),[q,P]=w.useState(null),[J,ce]=w.useState(null),[he,ve]=w.useState(!1),[Ce,He]=w.useState(null),[tt,na]=w.useState(!0),[ma,Bn]=w.useState(!1),[Ot,Dt]=w.useState(!1),[Pa,xt]=w.useState(!1),[la,St]=w.useState(""),[Fa,zt]=w.useState(null),[kn,Hn]=w.useState(!1),[me,it]=w.useState({}),[jt,vl]=w.useState(""),[ut,gc]=w.useState({repo:"",issueNumber:"",amount:""}),[Ra,qn]=w.useState(null),[rs,Yn]=w.useState(null),[bt,sa]=w.useState(0),Je=w.useRef(null),us=w.useRef(null),fs=w.useRef(""),ds=w.useRef(""),Qt=w.useRef(oc()),Gn=w.useRef(Date.now()),Vn=w.useRef(tt),pa=w.useRef(J),Qn=w.useRef(Ce),ia=w.useRef(0),Xn=f?.config.repos??[],Ia=f?.runs.runs??[],Wa=f?.stats.overview.runningRuns??0,Ta=f?.stats.overview.queuedRuns??0,en=cc(Ra),hs=w.useMemo(()=>H==="all"?Ia:Ia.filter(A=>A.repo===H),[Ia,H]),Ei=w.useMemo(()=>X==="active"?hs:ee,[hs,ee,X]),Ci=X==="active"?j:W,ms=X!=="active"&&Ye,yl=w.useMemo(()=>{const A=new Map;for(const F of Ia)A.set(F.runId,F);for(const F of ee)A.set(F.runId,F);return A},[Ia,ee]),oa=w.useMemo(()=>Cp(o),[o]),ps=w.useMemo(()=>Cp(i),[i]),Xt=w.useMemo(()=>oa?yl.get(oa)??null:null,[oa,yl]),Ge=Xt?.hasRun?Xt.runId:"",ft=w.useMemo(()=>en?{label:`updating ${Ra?.state??"starting"}`,toneClass:"badge-warning"}:D?Wa>0?{label:"processing",toneClass:"badge-success"}:Ta>0?{label:"queued",toneClass:"badge-info"}:{label:"idle",toneClass:"badge-neutral"}:{label:"reconnecting",toneClass:"badge-error"},[Ta,Wa,D,en,Ra?.state]),tn=w.useMemo(()=>{const A=f?.build?.version??e1,F=f?.build?.gitSha;return f?.build?.installMethod==="git"&&F?`v${A} · ${F.slice(0,8)}`:`v${A}`},[f?.build]),ga=w.useCallback(async()=>{const A=await fetch("/api/dashboard");if(!A.ok)throw new Error(`Failed to load dashboard (${A.status})`);const F=await A.json();h(F)},[]),Ma=w.useCallback(async(A={})=>{if(X==="active")return;const F=A.append??!1,_e=++ia.current,ct=F?A.offset??0:0;F?Q(!0):(V([]),de(0),Ee(!1),$(!0),Q(!1));try{const Re=new URLSearchParams;H!=="all"&&Re.set("repo",H),Re.set("view",X),Re.set("limit",String(Ep)),Re.set("offset",String(ct));const Le=await fetch(`/api/runs?${Re.toString()}`);if(!Le.ok)throw new Error(`Failed to load runs (${Le.status})`);const ge=await Le.json();if(_e!==ia.current)return;const Rt=typeof ge.hasMore=="boolean"?ge.hasMore:ge.runs.length>=Ep,Zt=typeof ge.nextOffset=="number"?ge.nextOffset:ct+ge.runs.length;V(ua=>{if(!F)return ge.runs;const Ea=new Set(ua.map(Ca=>Ca.runId)),js=[...ua];for(const Ca of ge.runs)Ea.has(Ca.runId)||(Ea.add(Ca.runId),js.push(Ca));return js}),Ee(Rt),de(Zt)}catch(Re){_e===ia.current&&R(Re.message)}finally{_e===ia.current&&($(!1),Q(!1))}},[X,H]),an=w.useCallback(async()=>{const A=await fetch("/api/update-status");return A.ok?await A.json():null},[]),gs=w.useCallback(async()=>{const A=await fetch("/api/session");if(!A.ok)throw new Error(`Failed to initialize web session (${A.status})`);const F=await A.json();na(F.operationsEnabled??!0);const _e=F.requiresExternalAuth??F.mutationToken===null;if(Bn(_e),!_e&&F.mutationToken){He(F.mutationToken),Dt(!0);return}try{const ct=await fetch("/api/auth/session");if(ct.ok&&(await ct.json()).authenticated===!0){Dt(!0);return}}catch{}Dt(!1),xt(!0)},[]),nn=w.useCallback(async()=>{if(!la.trim()){zt("Token is required.");return}Hn(!0),zt(null);try{const A=await fetch("/api/auth/session",{method:"POST",headers:{"Content-Type":"application/json",[Vu]:Qu},body:JSON.stringify({token:la.trim()})});if(A.status===204){Dt(!0),xt(!1),St(""),zt(null);return}if(A.status===401){zt("Invalid token. Check NIGHT_ORCH_WEB_AUTH_TOKEN on the server.");return}zt(`Login failed (${A.status}).`)}catch(A){zt(A.message)}finally{Hn(!1)}},[la]),bs=w.useCallback(async()=>{try{await fetch("/api/auth/logout",{method:"POST",headers:{"Content-Type":"application/json",[Vu]:Qu}})}catch{}Dt(!1),xt(!0)},[]),ca=w.useCallback(async()=>{const A=await fetch("/api/projects");if(!A.ok)throw new Error(`Failed to load projects (${A.status})`);const F=await A.json();v(F)},[]),Lt=w.useCallback(async()=>{const A=await fetch("/api/settings");if(!A.ok)throw new Error(`Failed to load settings (${A.status})`);const F=await A.json();m(F),it(Object.fromEntries(F.settings.map(_e=>[_e.key,a1(_e.effectiveValue)])))},[]);w.useEffect(()=>{(async()=>{try{y(!0),S(!0),E(!0),await Promise.all([ga(),gs(),ca(),Lt()])}catch(A){R(A.message)}finally{y(!1),S(!1),E(!1)}})()},[ga,ca,gs,Lt]),w.useEffect(()=>{let A=!1;return(async()=>{try{const F=await an();if(!F||A)return;cc(F)?Qt.current={startedAtMs:null,sawActiveState:!0}:Qt.current=oc(),qn(_e=>_e&&!F.installMethod?{...F,installMethod:_e.installMethod}:F)}catch{}})(),()=>{A=!0}},[an]),w.useEffect(()=>{Z(A=>A==="all"||Xn.includes(A)?A:"all")},[Xn]),w.useEffect(()=>{if(X==="active"){ia.current+=1,V([]),de(0),Ee(!1),$(!1),Q(!1);return}Ma({append:!1,offset:0})},[Ma,X]),w.useEffect(()=>{Vn.current=tt},[tt]),w.useEffect(()=>{pa.current=J},[J]),w.useEffect(()=>{Qn.current=Ce},[Ce]),w.useEffect(()=>{oa&&K(oa)},[oa]),w.useEffect(()=>{let A=!1;const F=()=>{const _e=window.location.protocol==="https:"?"wss":"ws",ct=Ce?`?token=${encodeURIComponent(Ce)}`:"",Re=new WebSocket(`${_e}://${window.location.host}/ws${ct}`);Je.current=Re,Re.onopen=()=>{if(A)return;M(!0),Re.send(JSON.stringify({type:"refresh"}));const Le=fs.current;Le&&Re.send(JSON.stringify({type:"subscribe-run-events",runId:Le,since:0}))},Re.onmessage=Le=>{try{const ge=JSON.parse(Le.data);if(ge.type==="snapshot"&&ge.payload){h(ge.payload);return}if(ge.type==="run-events"&&ge.payload){const Rt=Gx(ge.payload);if(!Rt||Rt.runId!==fs.current)return;Me(Zt=>Vx(Zt,Rt.events));return}ge.type==="error"&&ge.error&&P(ge.error)}catch{}},Re.onclose=()=>{Je.current===Re&&(Je.current=null),M(!1),!A&&(us.current=window.setTimeout(F,2e3))},Re.onerror=()=>{Re.close()}};return F(),()=>{A=!0,us.current!==null&&window.clearTimeout(us.current),Je.current?.close(),Je.current=null}},[Ce]),w.useEffect(()=>{fs.current=Ge,Me([]);const A=Je.current;if(!A||A.readyState!==WebSocket.OPEN){ds.current=Ge;return}const F=ds.current;F&&F!==Ge&&A.send(JSON.stringify({type:"unsubscribe-run-events",runId:F})),Ge&&A.send(JSON.stringify({type:"subscribe-run-events",runId:Ge,since:0})),ds.current=Ge},[Ge,D]);const[Zn,ba]=w.useState(!1);w.useEffect(()=>{if(!en)return;let A=!1,F=0;const _e=async()=>{try{const Re=await Ix({fetchUpdateStatus:an,transition:Qt.current,onStatus:Le=>{A||(F=0,ba(!1),qn(ge=>ge&&!Le.installMethod?{...Le,installMethod:ge.installMethod}:Le))},onError:Le=>{A||(F=0,ba(!1),R(Le))},onReload:()=>{A||window.location.reload()}});A||(Qt.current=Re)}catch{F++,!A&&F>=2&&(ba(!0),qn(Re=>{if(!Re)return Re;const Le=Re.installMethod==="npm"?Lx:zx,ge=Le.indexOf(Re.state);if(ge<0||ge>=Le.length-1)return Re;if(F*2>=4*(ge+1)){const Zt=Le[ge+1];if(Zt)return{...Re,state:Zt}}return Re}))}};_e();const ct=window.setInterval(()=>{_e()},2e3);return()=>{A=!0,window.clearInterval(ct)}},[an,en]),w.useEffect(()=>{if(!rs)return;const A=window.setInterval(()=>{sa(Math.floor((Date.now()-rs)/1e3))},1e3);return()=>window.clearInterval(A)},[rs]);const re=w.useCallback(async(A,F,_e,ct,Re)=>{try{if(ce(A),R(null),!Ce&&!Ot)throw xt(!0),new Error("Log in first.");if(!tt)throw new Error("Web operations are disabled by server policy.");const Le={"Content-Type":"application/json",[Vu]:Qu};Ce&&(Le[Wx]=Ce);const ge=await fetch(F,{method:"POST",headers:Le,credentials:"same-origin",body:JSON.stringify(_e)});if(ge.status===401&&ma)throw Dt(!1),xt(!0),new Error("Session expired. Log in again.");const Rt=await ge.json();if(!ge.ok){const ua=typeof Rt.error=="string"?Rt.error:`Operation failed (${ge.status})`;throw new Error(ua)}const Zt=xy(Rt)??ct;return P(Zt),(Re?.refreshAfterSuccess??!0)&&(await Promise.all([ga(),Lt()]),X!=="active"&&await Ma({append:!1,offset:0})),!0}catch(Le){return R(Le.message),!1}finally{ce(null)}},[ga,Ma,Lt,tt,ma,X,Ot,Ce]),wi=w.useCallback(async()=>{try{ve(!0),R(null);const A=[ga(),ca(),Lt()];l==="issues"&&X!=="active"&&A.push(Ma({append:!1,offset:0})),await Promise.all(A),Je.current?.readyState===WebSocket.OPEN&&Je.current.send(JSON.stringify({type:"refresh"}))}catch(A){R(A.message)}finally{ve(!1)}},[l,ga,Ma,ca,Lt,X]),xl=w.useCallback(()=>{Gn.current=Date.now(),re("poll","/api/operations/poll",{},"Manual poll requested")},[re]);w.useEffect(()=>{const A=()=>{if(document.visibilityState!=="visible")return;const F=Date.now()-Gn.current>=t1,_e=Vn.current&&pa.current===null&&Qn.current!==null;F&&_e&&xl()};return document.addEventListener("visibilitychange",A),()=>{document.removeEventListener("visibilitychange",A)}},[xl]);const _a=w.useCallback(()=>{re("sync","/api/operations/sync",{},"Sync completed")},[re]),ln=w.useCallback(()=>{re("cleanup","/api/operations/cleanup",{},"Cleanup completed")},[re]),bc=w.useCallback(A=>{A!==X&&(A!=="active"&&($(!0),Q(!1)),I(A))},[X]),vs=w.useCallback(A=>{u({to:"/$page",params:{page:A}})},[u]),Ai=w.useCallback(A=>{K(A),u({to:"/$page/$detailId",params:{page:"issues",detailId:A}})},[u]),vc=w.useCallback(()=>{u({to:"/$page",params:{page:"issues"}})},[u]),Sl=w.useCallback(A=>{u({to:"/$page/$detailId",params:{page:"projects",detailId:A}})},[u]),jl=w.useCallback(()=>{u({to:"/$page",params:{page:"projects"}})},[u]),ra=w.useCallback(async()=>{const A=f?.build?.installMethod;if(!(!Zx(ct=>window.confirm(ct),A==="git"||A==="npm"?A:"unknown")||!await re("update","/api/operations/update",{},"Update initiated - pulling and rebuilding...",{refreshAfterSuccess:!1}))){Qt.current=$x(Date.now()),qn({state:"draining",installMethod:A==="git"||A==="npm"?A:void 0}),Yn(Date.now()),sa(0);try{const ct=await an();if(!ct)return;const Re=Jx(ct);Re&&(Qt.current={startedAtMs:Qt.current.startedAtMs,sawActiveState:!0},qn(Re))}catch{}}},[an,re]),$e=w.useCallback(async(A,F)=>{window.confirm(F.confirmMessage)&&await re(F.operationName,F.endpoint,{repo:A.repo,issueNumber:A.issue,...F.payload},F.fallbackMessage)},[re]),Oi=w.useCallback(A=>{$e(A,{operationName:"retry",endpoint:"/api/operations/retry",confirmMessage:`Queue fresh retry for ${A.repo}#${A.issue}?`,fallbackMessage:`Fresh retry queued for ${A.repo}#${A.issue}`})},[$e]),yc=w.useCallback(A=>{$e(A,{operationName:"rebase",endpoint:"/api/operations/rebase",confirmMessage:`Queue rebase for ${A.repo}#${A.issue}?`,fallbackMessage:`Rebase queued for ${A.repo}#${A.issue}`})},[$e]),ys=w.useCallback(A=>{$e(A,{operationName:"continue",endpoint:"/api/operations/continue",confirmMessage:`Queue continue pass for ${A.repo}#${A.issue}?`,fallbackMessage:`Continue pass queued for ${A.repo}#${A.issue}`})},[$e]),Di=w.useCallback((A,F)=>{$e(A,{operationName:"delete-entry",endpoint:"/api/operations/delete-entry",confirmMessage:F?`Force delete local entry for ${A.repo}#${A.issue}? This can remove run-local state while shared issue state is still active elsewhere.`:`Delete local entry for ${A.repo}#${A.issue}?`,fallbackMessage:F?`Force-deleted local entry for ${A.repo}#${A.issue}`:`Deleted local entry for ${A.repo}#${A.issue}`,payload:{force:F}})},[$e]),Nl=w.useCallback(A=>{$e(A,{operationName:"cost-reset",endpoint:"/api/operations/cost-reset",confirmMessage:`Reset accumulated costs for ${A.repo}#${A.issue}? If cost-blocked, it will be re-queued.`,fallbackMessage:`Reset costs for ${A.repo}#${A.issue}`})},[$e]),xc=w.useCallback(A=>{window.confirm(`Bootstrap orchestration labels for ${A}?`)&&re("labels-init","/api/operations/labels-init",{repo:A},`Labels initialized for ${A}`)},[re]),Nt=w.useCallback(async A=>{const F=me[A];if(F===void 0){R(`No draft value found for ${A}`);return}await re(`setting:set:${A}`,"/api/operations/settings/set",{key:A,value:F},`Updated ${A}`)},[re,me]),xs=w.useCallback(async A=>{await re(`setting:clear:${A}`,"/api/operations/settings/clear",{key:A},`Cleared override for ${A}`)},[re]),zi=w.useCallback(async A=>{A.preventDefault();const F=Number.parseFloat(jt);if(!Number.isFinite(F)||F<=0){R("Daily override requires a positive number (USD)");return}await re("daily-cost-override:set","/api/operations/daily-cost-override/set",{amountUsd:F},`Raised today's daily cap to $${F.toFixed(2)}`)},[jt,re]),Ss=w.useCallback(async()=>{await re("daily-cost-override:clear","/api/operations/daily-cost-override/clear",{},"Cleared today's daily cap override")},[re]),sn=w.useCallback(async()=>{window.confirm("Reset today's accumulated cost counters? Cost-blocked runs will be re-queued.")&&await re("daily-cost-reset","/api/operations/daily-cost-reset",{},"Reset today's daily costs and resumed cost-blocked runs")},[re]),Li=w.useCallback(async A=>{A.preventDefault();const F=Number.parseInt(ut.issueNumber,10),_e=Number.parseFloat(ut.amount);if(!ut.repo||!Number.isFinite(F)||F<=0){R("Per-issue override requires a repo and a positive issue number");return}if(!Number.isFinite(_e)||_e<=0){R("Per-issue override requires a positive amount (USD)");return}await re("cost-override:set","/api/operations/cost-override/set",{repo:ut.repo,issueNumber:F,amountUsd:_e},`Set cost override for ${ut.repo}#${F} to $${_e.toFixed(2)}`)},[ut,re]),Ui=w.useCallback(async()=>{const A=Number.parseInt(ut.issueNumber,10);if(!ut.repo||!Number.isFinite(A)||A<=0){R("Clearing a per-issue override requires a repo and a positive issue number");return}await re("cost-override:clear","/api/operations/cost-override/clear",{repo:ut.repo,issueNumber:A},`Cleared cost override for ${ut.repo}#${A}`)},[ut,re]),on=l==="issues"&&oa!==null,Sc=l==="projects"&&ps!==null;return r.jsxs("main",{"data-theme":"black",className:"min-h-screen bg-orch-admin",children:[Pa&&r.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4",role:"dialog","aria-modal":"true","aria-labelledby":"norch-login-title",children:r.jsxs("div",{className:"w-full max-w-sm rounded-lg border border-slate-700 bg-slate-900 p-5 shadow-2xl",children:[r.jsx("h2",{id:"norch-login-title",className:"text-base font-semibold text-slate-100",children:"Sign in"}),r.jsxs("p",{className:"mt-1 text-xs text-slate-400",children:["Enter the ",r.jsx("code",{className:"font-mono",children:"NIGHT_ORCH_WEB_AUTH_TOKEN"})," configured on the server. The browser will keep you signed in via an HttpOnly cookie for 7 days."]}),r.jsx("input",{type:"password",autoFocus:!0,autoComplete:"off",value:la,onChange:A=>St(A.target.value),onKeyDown:A=>{A.key==="Enter"&&!kn&&nn()},className:"mt-3 w-full rounded border border-slate-600 bg-slate-950 px-3 py-2 font-mono text-sm text-slate-100 focus:border-orch-accent focus:outline-none",placeholder:"Paste token here"}),Fa&&r.jsx("p",{className:"mt-2 text-xs text-rose-400",role:"alert",children:Fa}),r.jsx("div",{className:"mt-4 flex justify-end gap-2",children:r.jsx("button",{type:"button",disabled:kn,onClick:()=>{nn()},className:"rounded bg-orch-accent px-3 py-2 text-sm font-medium text-slate-950 hover:bg-orch-accent/90 disabled:opacity-50",children:kn?"Signing in…":"Sign in"})})]})}),r.jsx(Ty,{currentStateLabel:ft.label,currentStateToneClass:ft.toneClass,isWorking:Wa>0||J!==null||en,socketConnected:D,lastRefreshAt:f?.generatedAt??null,pollIntervalSeconds:f?.config.pollIntervalSeconds??null,reposCount:Xn.length,activeRuns:f?.status.activeRuns??0,runningRuns:Wa,queuedRuns:Ta,operationsEnabled:tt,activeOperation:J,isRefreshing:he,onRefresh:()=>{wi()},onPoll:xl,onSync:_a,onCleanup:ln,onGoToSettings:()=>{vs("settings")},onLogout:ma&&Ot?()=>{bs()}:void 0}),r.jsxs("div",{className:"mx-auto flex w-full max-w-[1550px] flex-col gap-5 px-4 pb-24 pt-5 sm:px-6 md:pb-6 lg:px-8",children:[Ne&&r.jsx("div",{className:"alert alert-error shadow-sm",children:r.jsx("span",{children:Ne})}),q&&r.jsx("div",{className:"alert alert-info shadow-sm",children:r.jsx("span",{children:q})}),r.jsxs("div",{className:"grid gap-5 md:grid-cols-[auto_minmax(0,1fr)] md:items-stretch md:gap-0",children:[r.jsx(Ly,{activePage:l,onPageChange:vs}),r.jsxs("div",{className:"flex min-w-0 flex-col gap-5 md:pl-6",children:[l==="issues"&&(on?r.jsx(Yy,{run:Xt,runId:oa??"",runEvents:le,operationsEnabled:tt,activeOperation:J,onRetry:Oi,onRebase:yc,onContinue:ys,onDeleteEntry:Di,onResetCost:Nl,onBack:vc}):r.jsxs("div",{className:"flex flex-col gap-5",children:[r.jsx(Fu,{snapshot:f}),r.jsxs("section",{className:"grid gap-5 xl:grid-cols-[1.65fr_1fr]",children:[r.jsx(dx,{isLoading:Ci,isLoadingMore:se,repos:Xn,selectedRepo:H,onSelectedRepoChange:Z,runsView:X,onRunsViewChange:bc,filteredRuns:Ei,canLoadMore:ms,onLoadMore:()=>{Ma({append:!0,offset:ue})},selectedRunId:B,onOpenRun:Ai,statusTone:ax}),r.jsx(Vy,{operationsEnabled:tt,activeOperation:J,updateStatus:Ra,installMethod:f?.build?.installMethod,onUpdate:()=>{ra()}})]})]})),l==="stats"&&r.jsx(Dx,{snapshot:f,socketConnected:D}),l==="projects"&&(Sc?r.jsx(Wy,{snapshot:g,repo:ps??"",isLoading:x,operationsEnabled:tt,activeOperation:J,onLabelsInit:xc,onBack:jl}):r.jsx(tx,{snapshot:g,isLoading:x,onOpenRepo:Sl})),l==="settings"&&r.jsxs("div",{className:"flex flex-col gap-5",children:[r.jsx(Ry,{baseDailyBudgetUsd:f?.cost.dailyBudgetUsd??0,dailyBudgetOverrideUsd:f?.cost.dailyBudgetOverrideUsd??null,effectiveDailyBudgetUsd:f?.cost.effectiveDailyBudgetUsd??f?.cost.dailyBudgetUsd??0,todayCostUsd:f?.status.dailyCostUsd??0,activeOperation:J,dailyDraft:jt,onDailyDraftChange:vl,onDailySubmit:A=>{zi(A)},onDailyClear:()=>{Ss()},onDailyReset:()=>{sn()},issueDraft:ut,repos:Xn,onIssueDraftChange:A=>{gc(F=>({...F,...A}))},onIssueSubmit:A=>{Li(A)},onIssueClear:()=>{Ui()}}),r.jsx(wx,{settings:b?.settings??[],generatedAt:b?.generatedAt??null,isLoading:T,activeOperation:J,drafts:me,onDraftChange:(A,F)=>{it(_e=>({..._e,[A]:F}))},onApply:A=>{Nt(A)},onClear:A=>{xs(A)}})]})]})]}),r.jsxs("div",{className:"flex flex-col items-center gap-2 pb-16 pt-1 md:pb-2",children:[r.jsx("button",{type:"button",className:"btn btn-outline btn-sm border-primary/55 bg-base-200/45 text-primary hover:bg-primary/15",onClick:()=>{window.location.reload()},children:"UI reload"}),r.jsx("span",{className:"text-[10px] text-base-content/50",children:tn})]})]}),en&&Ra&&r.jsx(Yx,{status:Ra,serverUnreachable:Zn,elapsedSeconds:bt})]})}const n1=["issues","stats","projects","settings"];function fg(l){return n1.some(o=>o===l)}function l1(){return r.jsx(lg,{})}function s1(){const{page:l}=dc({from:"/$page"});return r.jsx(ac,{activePage:l})}function i1(){const{page:l,detailId:o}=dc({from:"/$page/$detailId"});return l==="issues"?r.jsx(ac,{activePage:"issues",issueDetailRunId:o}):l==="projects"?r.jsx(ac,{activePage:"projects",projectDetailRepo:o}):r.jsx(ac,{activePage:l})}const pc=ey({component:l1}),o1=of({getParentRoute:()=>pc,path:"/",loader:()=>ji({to:"/$page",params:{page:"issues"},replace:!0,throw:!0}),component:()=>null}),c1=of({getParentRoute:()=>pc,path:"$page",loader:({params:l})=>{if(!fg(l.page))return ji({to:"/$page",params:{page:"issues"},replace:!0,throw:!0})},component:s1}),r1=of({getParentRoute:()=>pc,path:"$page/$detailId",loader:({params:l})=>{if(!fg(l.page))return ji({to:"/$page",params:{page:"issues"},replace:!0,throw:!0});if(l.page!=="issues"&&l.page!=="projects")return ji({to:"/$page",params:{page:l.page},replace:!0,throw:!0})},component:i1}),u1=pc.addChildren([o1,c1,r1]);function f1(){return typeof window>"u"?mv({initialEntries:["/issues"]}):Gp()}function d1(l={}){return fy({routeTree:u1,history:l.history??f1(),isServer:l.isServer})}const h1=d1(),dg=document.getElementById("root");if(!dg)throw new Error("Root container not found");R0.createRoot(dg).render(r.jsx(is.StrictMode,{children:r.jsx(my,{router:h1})}));"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js").catch(()=>{})});
@@ -15,7 +15,7 @@
15
15
  rel="stylesheet"
16
16
  />
17
17
  <title>night-orch web</title>
18
- <script type="module" crossorigin src="/assets/index-DwI0yk6R.js"></script>
18
+ <script type="module" crossorigin src="/assets/index-BBreAjV5.js"></script>
19
19
  <link rel="stylesheet" crossorigin href="/assets/index-DJDwanCU.css">
20
20
  </head>
21
21
  <body>