conductor-remote 1.131.5 → 1.131.6

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
@@ -25,7 +25,7 @@
25
25
  <title>Conductor Remote</title>
26
26
  <!-- Runs before the module bundle so it can catch a stale shell that fails to boot. -->
27
27
  <script src="/self-heal.js"></script>
28
- <script type="module" crossorigin src="/assets/index-D7ZV7qS_.js"></script>
28
+ <script type="module" crossorigin src="/assets/index-BY3vTp3J.js"></script>
29
29
  <link rel="stylesheet" crossorigin href="/assets/index-Dbu5DOed.css">
30
30
  <link rel="manifest" href="/manifest.webmanifest"></head>
31
31
  <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 l=e||("document"in self?document.currentScript.src:"")||location.href;if(s[l])return;let o={};const t=e=>i(e,l),a={module:{uri:l},exports:o,require:t};s[l]=Promise.all(n.map(e=>a[e]||t(e))).then(e=>(r(...e),o))}}define(["./workbox-dcde9eb3"],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:"4e0b714c0ea53e85c167e6d8f5b767aa"},{url:"index.html",revision:"2f9082c33526aefc0ab3185c27066c56"},{url:"assets/workbox-window.prod.es5-BBnX5xw4.js",revision:null},{url:"assets/pierre-shiki-wasm-C8ETeZem.js",revision:null},{url:"assets/pierre-light-480U9XYS.js",revision:null},{url:"assets/pierre-dark-CyvmCCZW.js",revision:null},{url:"assets/index-Dbu5DOed.css",revision:null},{url:"assets/index-D7ZV7qS_.js",revision:null},{url:"assets/PierrePatch-BExA4mpZ.js",revision:null},{url:"assets/AutoModelSettings-CFlOKb1W.js",revision:null},{url:"apple-touch-icon.png",revision:"1127bb396b4648add53dce3f22c92aee"},{url:"icon-192.png",revision:"c5e01ac58768627e18ee7b8b6a9239ef"},{url:"icon-512.png",revision:"a40638c55e310312457a621c9a0002c8"},{url:"icon-maskable-512.png",revision:"a9b0d962686287452216492cd2247499"},{url:"icon.svg",revision:"c1aee186821798733dd477e69a0ef243"},{url:"manifest.webmanifest",revision:"cf88fbc5755108a7fe0616fa160a8a15"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api\//]})),e.registerRoute(({url:e})=>e.pathname.startsWith("/assets/diff-syntax/"),new e.CacheFirst({cacheName:"diff-syntax",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:31536e3})]}),"GET")});
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 l=e||("document"in self?document.currentScript.src:"")||location.href;if(s[l])return;let o={};const t=e=>i(e,l),a={module:{uri:l},exports:o,require:t};s[l]=Promise.all(n.map(e=>a[e]||t(e))).then(e=>(r(...e),o))}}define(["./workbox-dcde9eb3"],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:"4e0b714c0ea53e85c167e6d8f5b767aa"},{url:"index.html",revision:"ae7f5f4a576844959923e8df23dafac7"},{url:"assets/workbox-window.prod.es5-BBnX5xw4.js",revision:null},{url:"assets/pierre-shiki-wasm-C8ETeZem.js",revision:null},{url:"assets/pierre-light-480U9XYS.js",revision:null},{url:"assets/pierre-dark-CyvmCCZW.js",revision:null},{url:"assets/index-Dbu5DOed.css",revision:null},{url:"assets/index-BY3vTp3J.js",revision:null},{url:"assets/PierrePatch-Dfh5TW8u.js",revision:null},{url:"assets/AutoModelSettings-BV17IdxP.js",revision:null},{url:"apple-touch-icon.png",revision:"1127bb396b4648add53dce3f22c92aee"},{url:"icon-192.png",revision:"c5e01ac58768627e18ee7b8b6a9239ef"},{url:"icon-512.png",revision:"a40638c55e310312457a621c9a0002c8"},{url:"icon-maskable-512.png",revision:"a9b0d962686287452216492cd2247499"},{url:"icon.svg",revision:"c1aee186821798733dd477e69a0ef243"},{url:"manifest.webmanifest",revision:"cf88fbc5755108a7fe0616fa160a8a15"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api\//]})),e.registerRoute(({url:e})=>e.pathname.startsWith("/assets/diff-syntax/"),new e.CacheFirst({cacheName:"diff-syntax",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:31536e3})]}),"GET")});
@@ -7,14 +7,16 @@ import { exec, uiTurn } from "./ui-lock.js";
7
7
  * `sessionId` over Conductor's own dispatch socket (see src/writes/sidecar.ts), so it needs
8
8
  * no window focus and the app UI reflects the turn correctly.
9
9
  *
10
- * Opt-in (WRITE_STRATEGY=sidecar) because it speaks a private, versioned IPC and
11
- * hasn't been validated by an automated live send (that would inject a prompt
12
- * into a running agent). It is the intended default once you've confirmed it on
13
- * your setup.
10
+ * Opt-in (WRITE_STRATEGY=sidecar) because it speaks a private, versioned IPC.
11
+ * BROKEN against current Conductor builds the send payload is rejected
12
+ * upstream (schema drift, see src/writes/sidecar.ts and issue #97). Do not
13
+ * select it expecting sends to land; AppleScript is the working path. There is
14
+ * no fallback to AppleScript on send failure: a failed sidecar send reports
15
+ * failure. Fixes welcome.
14
16
  */
15
17
  export class SidecarActuator {
16
18
  name = 'sidecar';
17
- caveat = 'Delivered straight to the target session over Conductor’s dispatch socket precise per-workspace targeting.';
19
+ caveat = 'Broken against current Conductor builds (see issue #97) AppleScript is the working path.';
18
20
  precise = true;
19
21
  available() {
20
22
  return sidecarAvailable();
@@ -25,11 +27,20 @@ export class SidecarActuator {
25
27
  if (!sessionId)
26
28
  return { ok: false, strategy: this.name, error: 'no session id to target' };
27
29
  try {
28
- await sidecarSendUserMessage(sessionId, text, options.queue ? 'queue' : 'default');
30
+ // `options.queue` has no sidecar equivalent: the live schema accepts
31
+ // only 'default' | 'steering' and rejects the old 'queue' value, so
32
+ // always send 'default' rather than a known-invalid enum.
33
+ void options.queue;
34
+ await sidecarSendUserMessage(sessionId, text, 'default');
29
35
  return { ok: true, strategy: this.name };
30
36
  }
31
37
  catch (err) {
32
- return { ok: false, strategy: this.name, error: err instanceof Error ? err.message : String(err) };
38
+ const raw = err instanceof Error ? err.message : String(err);
39
+ return {
40
+ ok: false,
41
+ strategy: this.name,
42
+ error: `${raw} (sidecar sends are broken against current Conductor builds — see issue #97; AppleScript is the working path)`
43
+ };
33
44
  }
34
45
  }
35
46
  }
@@ -13,14 +13,20 @@ import path from 'node:path';
13
13
  * `sessionId`, so there is no window focus or AppleScript involved and the app's
14
14
  * UI updates correctly because it's the real dispatch path. It is also the most
15
15
  * update-fragile surface (a private, versioned IPC), which is why it lives
16
- * behind the Actuator interface and falls back to AppleScript when the socket
17
- * can't be reached (see src/writes/actuator.ts).
16
+ * behind the Actuator interface as an opt-in (`WRITE_STRATEGY=sidecar`).
17
+ *
18
+ * BROKEN against current Conductor builds: the send payload below is rejected
19
+ * by the live sidecar (`ok:false`, schema drift since the 0.76 recon) and the
20
+ * `type:"query"` shape validates then silently drops the prompt for sessions
21
+ * that aren't live in the sidecar's store. AppleScript is the working send
22
+ * path. Fixes welcome — see issue #97 for the probe handover.
18
23
  *
19
24
  * Reverse-engineered from conductor-runtime (Conductor 0.76):
20
25
  * - socket: `$TMPDIR/conductor-sidecar-v2-<sidecarPid>.sock`
21
26
  * - transport: newline-delimited JSON-RPC 2.0 (`{jsonrpc,id,method,params}`)
22
27
  * - local auth: the literal `{ userId: 'local', auth: 'local' }`
23
- * - send prompt: method `query`, params `{ type: 'sendUserMessageRequest', }`
28
+ * - send prompt (STALE rejected by current builds, see above):
29
+ * method `query`, params `{ type: 'sendUserMessageRequest', … }`
24
30
  * - safe read: method `contextUsage`, params `{ sessionId, …auth }`
25
31
  *
26
32
  * Stale socket files from exited sidecars linger in `$TMPDIR`, so discovery is
@@ -129,7 +135,9 @@ async function rpc(method, params, timeoutMs = 8000) {
129
135
  }
130
136
  throw lastErr instanceof Error ? lastErr : new Error('sidecar unreachable');
131
137
  }
132
- /** Resolve a connectable sidecar socket, or null. Used to decide write strategy. */
138
+ /** True when a sidecar socket accepts connections. Note: a reachable socket
139
+ * does NOT mean sends work — the send payload is currently rejected upstream
140
+ * (see header). Used to decide write strategy. */
133
141
  export function sidecarSocket(timeoutMs = 800) {
134
142
  const candidates = listSidecarSockets();
135
143
  return (async () => {
@@ -165,6 +173,9 @@ export async function sidecarAvailable() {
165
173
  /**
166
174
  * Deliver a prompt to a specific session — the real send path, precisely
167
175
  * targeted. Resolves once the sidecar has accepted (queued/sent) the message.
176
+ *
177
+ * Currently BROKEN upstream (see header): expect rejection against current
178
+ * Conductor builds. Failures must surface, never report success.
168
179
  */
169
180
  export async function sidecarSendUserMessage(sessionId, text, deliveryMode = 'default') {
170
181
  await rpc('query', {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "conductor-remote",
3
- "version": "1.131.5",
3
+ "version": "1.131.6",
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.",