conductor-remote 1.58.0 → 1.58.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.html CHANGED
@@ -13,7 +13,7 @@
13
13
  <title>Conductor Remote</title>
14
14
  <!-- Runs before the module bundle so it can catch a stale shell that fails to boot. -->
15
15
  <script src="/self-heal.js"></script>
16
- <script type="module" crossorigin src="/assets/index-CMxd5e5V.js"></script>
16
+ <script type="module" crossorigin src="/assets/index-yoen_tHL.js"></script>
17
17
  <link rel="stylesheet" crossorigin href="/assets/index-DT9enoqA.css">
18
18
  <link rel="manifest" href="/manifest.webmanifest"></head>
19
19
  <body>
package/dist/sw.js CHANGED
@@ -1 +1 @@
1
- if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,r)=>{const o=e||("document"in self?document.currentScript.src:"")||location.href;if(s[o])return;let l={};const t=e=>i(e,o),c={module:{uri:o},exports:l,require:t};s[o]=Promise.all(n.map(e=>c[e]||t(e))).then(e=>(r(...e),l))}}define(["./workbox-9c191d2f"],function(e){"use strict";importScripts("/push-sw.js"),self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"self-heal.js",revision:"49bd63adb25a09341f8d2610e8bd3c76"},{url:"push-sw.js",revision:"e1e682e2e5e88fa03b7808ae9db8e098"},{url:"index.html",revision:"8afe112eb6da3ec563b88bfa8e71924c"},{url:"assets/workbox-window.prod.es5-BBnX5xw4.js",revision:null},{url:"assets/index-DT9enoqA.css",revision:null},{url:"assets/index-CMxd5e5V.js",revision:null},{url:"apple-touch-icon.png",revision:"2b9301416b880d45d4bb655f2600d1f2"},{url:"icon-192.png",revision:"c5e01ac58768627e18ee7b8b6a9239ef"},{url:"icon-512.png",revision:"a40638c55e310312457a621c9a0002c8"},{url:"icon-maskable-512.png",revision:"a40638c55e310312457a621c9a0002c8"},{url:"icon.svg",revision:"c1aee186821798733dd477e69a0ef243"},{url:"manifest.webmanifest",revision:"cf88fbc5755108a7fe0616fa160a8a15"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api\//]}))});
1
+ if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,r)=>{const o=e||("document"in self?document.currentScript.src:"")||location.href;if(s[o])return;let l={};const c=e=>i(e,o),t={module:{uri:o},exports:l,require:c};s[o]=Promise.all(n.map(e=>t[e]||c(e))).then(e=>(r(...e),l))}}define(["./workbox-9c191d2f"],function(e){"use strict";importScripts("/push-sw.js"),self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"self-heal.js",revision:"49bd63adb25a09341f8d2610e8bd3c76"},{url:"push-sw.js",revision:"e1e682e2e5e88fa03b7808ae9db8e098"},{url:"index.html",revision:"bccefb2a435fb6775bac9dc39985ea8d"},{url:"assets/workbox-window.prod.es5-BBnX5xw4.js",revision:null},{url:"assets/index-yoen_tHL.js",revision:null},{url:"assets/index-DT9enoqA.css",revision:null},{url:"apple-touch-icon.png",revision:"2b9301416b880d45d4bb655f2600d1f2"},{url:"icon-192.png",revision:"c5e01ac58768627e18ee7b8b6a9239ef"},{url:"icon-512.png",revision:"a40638c55e310312457a621c9a0002c8"},{url:"icon-maskable-512.png",revision:"a40638c55e310312457a621c9a0002c8"},{url:"icon.svg",revision:"c1aee186821798733dd477e69a0ef243"},{url:"manifest.webmanifest",revision:"cf88fbc5755108a7fe0616fa160a8a15"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api\//]}))});
@@ -4,6 +4,14 @@ import path from 'node:path';
4
4
  import { describeRepoIcon, resolveRepoIcon } from "./icons.js";
5
5
  import { workspaceTitle } from "./shared.js";
6
6
  import { parseMessage } from "./transcript.js";
7
+ /** Keep the stable wire field in sync with whichever provider owns the chat. */
8
+ function toSessionRow(row) {
9
+ const { codex_thinking_level, ...session } = row;
10
+ return {
11
+ ...session,
12
+ claude_effort_level: row.agent_type === 'codex' ? codex_thinking_level : row.claude_effort_level
13
+ };
14
+ }
7
15
  const worktreeCache = new Map();
8
16
  /**
9
17
  * Neutralize LIKE's own wildcards in a user's search word. `queryTokens` already
@@ -232,7 +240,8 @@ export class Reads {
232
240
  // have `sent_at` NULL and are skipped, which is why a queued message can't blip the
233
241
  // timer while the previous answer is still going. Served straight off
234
242
  // idx_session_messages_sent_at(session_id, sent_at) — measured free at this poll rate.
235
- return this.db.query(`SELECT s.id, s.status, s.title, s.model, s.permission_mode, s.claude_effort_level, s.fast_mode, s.agent_type,
243
+ const rows = this.db.query(`SELECT s.id, s.status, s.title, s.model, s.permission_mode,
244
+ s.claude_effort_level, s.codex_thinking_level, s.fast_mode, s.agent_type,
236
245
  s.context_used_percent, s.unread_count,
237
246
  s.created_at, s.updated_at, s.last_user_message_at,
238
247
  (SELECT MAX(m.sent_at) FROM session_messages m
@@ -240,6 +249,7 @@ export class Reads {
240
249
  FROM sessions s
241
250
  WHERE s.workspace_id = ? AND COALESCE(s.is_hidden, 0) = 0
242
251
  ORDER BY s.created_at ASC`, [workspaceId]);
252
+ return rows.map(toSessionRow);
243
253
  }
244
254
  /**
245
255
  * Every live chat's status, across all workspaces — what the notifier watches for
@@ -501,10 +501,11 @@ my joinInstantHotspot()`.trim();
501
501
  }
502
502
  }
503
503
  /**
504
- * Conductor stores the effort level as `sessions.claude_effort_level`, but the
505
- * composer button is labelled with the human name and *cycles* through them in
506
- * this order. Both directions are needed: the label to press toward, and the DB
507
- * value to confirm against.
504
+ * Conductor stores the effort level in a provider-specific session column
505
+ * (`codex_thinking_level` or `claude_effort_level`), normalized by Reads onto the
506
+ * relay's stable wire field. The composer button is labelled with the human name
507
+ * and *cycles* through these values, so both directions are needed: the label to
508
+ * press toward, and the normalized DB value to confirm against.
508
509
  */
509
510
  export const EFFORT_LABELS = {
510
511
  low: 'Low',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "conductor-remote",
3
- "version": "1.58.0",
3
+ "version": "1.58.2",
4
4
  "type": "module",
5
5
  "packageManager": "yarn@4.15.0",
6
6
  "description": "Phone control panel for local Conductor agents. Reads ride SQLite + git; prompts ride Conductor's own dispatch path.",