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/README.md +4 -4
- package/dist/assets/{AutoModelSettings-CFlOKb1W.js → AutoModelSettings-BV17IdxP.js} +1 -1
- package/dist/assets/{PierrePatch-BExA4mpZ.js → PierrePatch-Dfh5TW8u.js} +1 -1
- package/dist/assets/{index-D7ZV7qS_.js → index-BY3vTp3J.js} +4 -4
- package/dist/index.html +1 -1
- package/dist/sw.js +1 -1
- package/dist-node/src/writes/actuator.js +18 -7
- package/dist-node/src/writes/sidecar.js +15 -4
- package/package.json +1 -1
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-
|
|
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:"
|
|
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
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
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 = '
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
17
|
-
*
|
|
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
|
|
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
|
-
/**
|
|
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.
|
|
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.",
|