@repo-prism/dispatch-hub 1.1.14 → 1.1.15
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 +7 -0
- package/dist/bin.js +21 -0
- package/dist/bin.js.map +1 -1
- package/dist/dashboard/app.css +1 -1
- package/dist/dashboard/app.js +107 -107
- package/dist/dashboard/app.js.map +3 -3
- package/dist/dashboard/hub.css +1 -1
- package/dist/hub-record.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +19 -1
- package/dist/server.js.map +1 -1
- package/dist/statusline.d.ts +33 -0
- package/dist/statusline.d.ts.map +1 -0
- package/dist/statusline.js +102 -0
- package/dist/statusline.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -14,5 +14,12 @@ npx prism-hub
|
|
|
14
14
|
`PRISM_HUB=0` on the MCP process skips spawn. `PRISM_HUB_HOME` and
|
|
15
15
|
`PRISM_HUB_PORT` override the state directory and bind port (tests).
|
|
16
16
|
|
|
17
|
+
## Claude Code statusLine (M-066)
|
|
18
|
+
|
|
19
|
+
`prism-hub statusline` prints one line of live job state for Claude Code's
|
|
20
|
+
footer — it reads the same `.prism/dispatch/` files, so it works with no
|
|
21
|
+
daemon running. `--setup` prints the `statusLine` block to merge into
|
|
22
|
+
`~/.claude/settings.json`.
|
|
23
|
+
|
|
17
24
|
**Must never** be imported by `@repo-prism/core` or any engine package. The
|
|
18
25
|
IDE extension talks to it over HTTP rather than importing this package.
|
package/dist/bin.js
CHANGED
|
@@ -1,6 +1,27 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { startHub } from "./server.js";
|
|
3
|
+
import { buildStatusline, statuslineSetupSnippet } from "./statusline.js";
|
|
4
|
+
async function readStdin() {
|
|
5
|
+
if (process.stdin.isTTY)
|
|
6
|
+
return "";
|
|
7
|
+
const chunks = [];
|
|
8
|
+
for await (const chunk of process.stdin) {
|
|
9
|
+
chunks.push(chunk);
|
|
10
|
+
}
|
|
11
|
+
return Buffer.concat(chunks).toString("utf8");
|
|
12
|
+
}
|
|
3
13
|
async function main() {
|
|
14
|
+
const command = process.argv[2];
|
|
15
|
+
// Claude Code statusLine: print one line, exit. Never starts the daemon.
|
|
16
|
+
if (command === "statusline") {
|
|
17
|
+
if (process.argv.includes("--setup")) {
|
|
18
|
+
process.stdout.write(`${statuslineSetupSnippet()}\n\nAdd this to ~/.claude/settings.json (merge with any existing keys).\n`);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const line = await buildStatusline(await readStdin());
|
|
22
|
+
process.stdout.write(`${line}\n`);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
4
25
|
const started = await startHub();
|
|
5
26
|
if ("alreadyRunning" in started) {
|
|
6
27
|
process.exit(0);
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,KAAK,UAAU,SAAS;IACtB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEhC,yEAAyE;IACzE,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,sBAAsB,EAAE,2EAA2E,CACvG,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,EAAE,CAAC;IACjC,IAAI,gBAAgB,IAAI,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,MAAM,IAAI,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/dashboard/app.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
html,body{background:var(--prism-canvas);color:var(--prism-ink);font-family:var(--prism-font,Inter,system-ui,sans-serif);min-height:100%;margin:0}#root{min-height:100vh}.hub{max-width:960px;margin:0 auto;padding:32px 24px 64px}.hub-header{display:flex;justify-content:space-between;align-items: flex-end;gap:16px;margin-bottom:28px}.hub-kicker{color:var(--prism-brand);letter-spacing:.08em;text-transform:uppercase;margin:0 0 4px;font-size:12px}.hub h1{margin:0;font-size:28px;font-weight:600}.hub-meta,.hub-error,.ov-empty{color:var(--prism-ink-muted)}.hub-error{color:var(--prism-rose)}.hub-repo{margin-top:28px}.hub-repo h2{color:var(--prism-ink-muted);margin:0 0 12px;font-size:14px;font-weight:600}.hub-list{list-style:none;display:grid;gap:12px;margin:0;padding:0}.hub-card{background:var(--prism-panel);border:1px solid var(--prism-line);border-radius:12px;padding:16px 18px}.hub-card-top{display:flex;justify-content:space-between;align-items: center;gap:12px}.hub-activity{color:var(--prism-ink-muted);margin:8px 0 0;font-size:14px}.hub-facts{display:flex;flex-wrap:wrap;gap:16px;margin:12px 0 0}.hub-facts dt{text-transform:uppercase;letter-spacing:.06em;color:var(--prism-ink-muted);font-size:11px}.hub-facts dd{margin:2px 0 0;font-size:13px}.hub-facts code{font-family:var(--prism-mono,ui-monospace,monospace);font-size:12px}.hub-pill{text-transform:capitalize;border-radius:999px;padding:2px 10px;font-size:12px}.hub-pill-brand{background:color-mix(in srgb,var(--prism-brand)18%,transparent);color:var(--prism-brand-strong)}.hub-pill-emerald{background:color-mix(in srgb,var(--prism-emerald)18%,transparent);color:var(--prism-emerald)}.hub-pill-rose{background:color-mix(in srgb,var(--prism-rose)18%,transparent);color:var(--prism-rose)}.hub-pill-amber{background:color-mix(in srgb,var(--prism-amber)18%,transparent);color:var(--prism-amber)}.hub-pill-muted{background:var(--prism-tile);color:var(--prism-ink-muted)}.hub-actions{display:flex;gap:8px;margin-top:12px}.hub-actions button{appearance:none;border:1px solid var(--prism-line);background:var(--prism-tile);color:var(--prism-ink);cursor:pointer;font:inherit;border-radius:8px;padding:6px 12px;font-size:13px}.hub-actions button:hover{border-color:var(--prism-brand)}
|
|
1
|
+
html,body{background:var(--prism-canvas);color:var(--prism-ink);font-family:var(--prism-font,Inter,system-ui,sans-serif);min-height:100%;margin:0}#root{min-height:100vh}.hub{max-width:960px;margin:0 auto;padding:32px 24px 64px}.hub-header{display:flex;justify-content:space-between;align-items: flex-end;gap:16px;margin-bottom:28px}.hub-kicker{color:var(--prism-brand);letter-spacing:.08em;text-transform:uppercase;margin:0 0 4px;font-size:12px}.hub h1{margin:0;font-size:28px;font-weight:600}.hub-meta,.hub-error,.ov-empty{color:var(--prism-ink-muted)}.hub-error{color:var(--prism-rose)}.hub-repo{margin-top:28px}.hub-repo h2{color:var(--prism-ink-muted);margin:0 0 12px;font-size:14px;font-weight:600}.hub-list{list-style:none;display:grid;gap:12px;margin:0;padding:0}.hub-card{background:var(--prism-panel);border:1px solid var(--prism-line);border-radius:12px;padding:16px 18px}.hub-card-top{display:flex;justify-content:space-between;align-items: center;gap:12px}.hub-activity{color:var(--prism-ink-muted);margin:8px 0 0;font-size:14px}.hub-facts{display:flex;flex-wrap:wrap;gap:16px;margin:12px 0 0}.hub-facts dt{text-transform:uppercase;letter-spacing:.06em;color:var(--prism-ink-muted);font-size:11px}.hub-facts dd{margin:2px 0 0;font-size:13px}.hub-facts code{font-family:var(--prism-mono,ui-monospace,monospace);font-size:12px}.hub-pill{text-transform:capitalize;border-radius:999px;padding:2px 10px;font-size:12px}.hub-pill-brand{background:color-mix(in srgb,var(--prism-brand)18%,transparent);color:var(--prism-brand-strong)}.hub-pill-emerald{background:color-mix(in srgb,var(--prism-emerald)18%,transparent);color:var(--prism-emerald)}.hub-pill-rose{background:color-mix(in srgb,var(--prism-rose)18%,transparent);color:var(--prism-rose)}.hub-pill-amber{background:color-mix(in srgb,var(--prism-amber)18%,transparent);color:var(--prism-amber)}.hub-pill-muted{background:var(--prism-tile);color:var(--prism-ink-muted)}.hub-actions{display:flex;gap:8px;margin-top:12px}.hub-actions button{appearance:none;border:1px solid var(--prism-line);background:var(--prism-tile);color:var(--prism-ink);cursor:pointer;font:inherit;border-radius:8px;padding:6px 12px;font-size:13px}.hub-actions button:hover{border-color:var(--prism-brand)}.hub-console{border:1px solid var(--prism-line);background:var(--prism-tile);overflow-y:auto;font-family:var(--prism-font-mono,ui-monospace,monospace);border-radius:8px;max-height:320px;margin-top:12px;padding:10px 12px;font-size:12px;line-height:1.5}.hub-console-empty{color:var(--prism-ink-muted);margin:0}.hub-console-line{color:var(--prism-ink);word-break:break-word;margin:2px 0}.hub-console-phase{color:var(--prism-ink-muted);text-transform:uppercase;letter-spacing:.04em;margin-right:8px;font-size:10px}.hub-console-sub{border-left:2px solid var(--prism-line);color:var(--prism-ink-muted);margin-left:18px;padding-left:8px}.hub-console-err{color:var(--prism-rose,#e11d48)}
|