frizz 0.6.0 → 0.7.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.
- package/README.md +9 -6
- package/dist/codex-app-server-daemon.js +12 -3
- package/dist/dev-child.js +196 -66
- package/dist/frizz.js +50 -18
- package/package.json +2 -2
- package/runtime/cc-worker/bin/frizz-mcp.mjs +2 -2
- package/runtime/cc-worker/hooks/session-seed.mjs +2 -2
- package/runtime/cc-worker/skills/gh/SKILL.md +8 -7
- package/runtime/cc-worker/skills/waits/SKILL.md +4 -3
- package/web-dist/assets/{TerminalPane-GfnCbZQ8.js → TerminalPane-DBmtdVkV.js} +1 -1
- package/web-dist/assets/{abnfDiagram-VRR7QNED-By12QfQW.js → abnfDiagram-VRR7QNED-s9x3PTMx.js} +1 -1
- package/web-dist/assets/architecture-TIHT7OUA-Eb73yePg.js +1 -0
- package/web-dist/assets/{architectureDiagram-ZJ3FMSHR-CcXU45QO.js → architectureDiagram-ZJ3FMSHR-CIFfgliT.js} +1 -1
- package/web-dist/assets/{blockDiagram-677ZJIJ3-CmzyO2OF.js → blockDiagram-677ZJIJ3-BC-TeFao.js} +1 -1
- package/web-dist/assets/{c4Diagram-LMCZKHZV-DFGSW_ZS.js → c4Diagram-LMCZKHZV-DoJ_Bulk.js} +1 -1
- package/web-dist/assets/channel-CgSC9ikg.js +1 -0
- package/web-dist/assets/{chunk-32BRIVSS-whgaFxPY.js → chunk-32BRIVSS-BgchlScG.js} +1 -1
- package/web-dist/assets/{chunk-52WLFC77-DCT0MLgl.js → chunk-52WLFC77-D94nMfY5.js} +1 -1
- package/web-dist/assets/{chunk-C7G6YPKG-Br0OaxIX.js → chunk-C7G6YPKG-BNU4g2Rm.js} +1 -1
- package/web-dist/assets/{chunk-EX3LRPZG-CUnQkdEF.js → chunk-EX3LRPZG-DooNeZ0v.js} +1 -1
- package/web-dist/assets/{chunk-FWX5IMBZ-D1NqKRFr.js → chunk-FWX5IMBZ-DuXYfpte.js} +2 -2
- package/web-dist/assets/{chunk-HOUHSVGY-7ZL78OrO.js → chunk-HOUHSVGY-DDtc0Lod.js} +1 -1
- package/web-dist/assets/{chunk-ICXQ74PX-QSgBAuYw.js → chunk-ICXQ74PX-D1soMHlW.js} +1 -1
- package/web-dist/assets/{chunk-MOJQB5TN-DOI-0kaG.js → chunk-MOJQB5TN-BYZZoPrO.js} +1 -1
- package/web-dist/assets/{chunk-OGEWGWER-CZ3ED-QB.js → chunk-OGEWGWER-CSI1op21.js} +1 -1
- package/web-dist/assets/{chunk-PUDLZKDR-BQJElUFX.js → chunk-PUDLZKDR-B2_qeHID.js} +1 -1
- package/web-dist/assets/{chunk-Q4XR5HBZ-5B6Qs7rQ.js → chunk-Q4XR5HBZ-BNiafbsU.js} +1 -1
- package/web-dist/assets/{chunk-V7JOEXUC-DkMaAMFK.js → chunk-V7JOEXUC-D9aOhGjB.js} +1 -1
- package/web-dist/assets/{chunk-VAUOI2AC-Bvq-8GYO.js → chunk-VAUOI2AC-mt04_MVl.js} +1 -1
- package/web-dist/assets/{chunk-VR4S4FIN-DRVTU-HZ.js → chunk-VR4S4FIN-CTbhzN9l.js} +1 -1
- package/web-dist/assets/{chunk-WYO6CB5R-CRxI5d1E.js → chunk-WYO6CB5R-t-QJiLir.js} +1 -1
- package/web-dist/assets/{chunk-ZGVPDNZ5-D_3ow6xU.js → chunk-ZGVPDNZ5-BNBiwqoz.js} +1 -1
- package/web-dist/assets/classDiagram-OUVF2IWQ-DrMJp1ua.js +1 -0
- package/web-dist/assets/classDiagram-v2-EOCWNBFH-DrMJp1ua.js +1 -0
- package/web-dist/assets/{cynefin-VYW2F7L2-Bexf41pD.js → cynefin-VYW2F7L2-CJzDWQw9.js} +1 -1
- package/web-dist/assets/{cynefinDiagram-TSTJHNR4-9gbbl1EH.js → cynefinDiagram-TSTJHNR4-C_wWdWpO.js} +1 -1
- package/web-dist/assets/{dagre-VKFMJZFB-B04shbL0.js → dagre-VKFMJZFB-JcoSMott.js} +1 -1
- package/web-dist/assets/{diagram-FQU43EPY-CGXlhEsB.js → diagram-FQU43EPY-DwPIrxvI.js} +1 -1
- package/web-dist/assets/{diagram-G47NLZAW-DmPCeTOa.js → diagram-G47NLZAW-Bs1Iyjn4.js} +1 -1
- package/web-dist/assets/{diagram-NH7WQ7WH-D8Hthvi7.js → diagram-NH7WQ7WH-DFXMkDQZ.js} +1 -1
- package/web-dist/assets/{diagram-OA4YK3LP-DbLR6tfL.js → diagram-OA4YK3LP-BdeEougN.js} +1 -1
- package/web-dist/assets/{diagram-WEI45ONY-B6YWev_0.js → diagram-WEI45ONY-DOeCVBYO.js} +1 -1
- package/web-dist/assets/{ebnfDiagram-CCIWWBDH-8G1uf683.js → ebnfDiagram-CCIWWBDH-Dm5CrqN3.js} +1 -1
- package/web-dist/assets/{erDiagram-Q63AITRT-U_VRdQHz.js → erDiagram-Q63AITRT-B0ud7ncc.js} +1 -1
- package/web-dist/assets/eventmodeling-45OFAUF4-B52bjxMe.js +1 -0
- package/web-dist/assets/flowDiagram-23GEKE2U-DbFccp_w.js +1 -0
- package/web-dist/assets/{ganttDiagram-NO4QXBWP-Cnsi9uVf.js → ganttDiagram-NO4QXBWP-BdowNjAm.js} +1 -1
- package/web-dist/assets/{gitGraph-TEB2WS4Q-DYf7ka-G.js → gitGraph-TEB2WS4Q-BSDXrBNB.js} +1 -1
- package/web-dist/assets/{gitGraphDiagram-IHSO6WYX-Bvmr7dEH.js → gitGraphDiagram-IHSO6WYX-B3i3egZt.js} +1 -1
- package/web-dist/assets/{index-Czv3R-v0.js → index-BUX0IseR.js} +118 -118
- package/web-dist/assets/index-CjEngYN7.css +1 -0
- package/web-dist/assets/{info-DKCQHKI2-CdP9Q9r0.js → info-DKCQHKI2-B7CT3rc8.js} +1 -1
- package/web-dist/assets/{infoDiagram-FWYZ7A6U-RBcOH3Pi.js → infoDiagram-FWYZ7A6U-Bqmpgcu2.js} +1 -1
- package/web-dist/assets/{ishikawaDiagram-FXEZZL3T-zS0gy3fS.js → ishikawaDiagram-FXEZZL3T-Bd5LBQOn.js} +1 -1
- package/web-dist/assets/{journeyDiagram-5HDEW3XC-cOciJlFY.js → journeyDiagram-5HDEW3XC-lJOF3I7X.js} +1 -1
- package/web-dist/assets/{kanban-definition-HUTT4EX6-B-v0XClo.js → kanban-definition-HUTT4EX6-D4E5PRAv.js} +1 -1
- package/web-dist/assets/{line-z44YXdci.js → line-C9ZcrRyz.js} +1 -1
- package/web-dist/assets/{mermaid-parser.core-0Bg1x4p0.js → mermaid-parser.core-DkaL73Gv.js} +3 -3
- package/web-dist/assets/{mermaid.core-ByFqgcIE.js → mermaid.core-BQ89ySVU.js} +3 -3
- package/web-dist/assets/{mindmap-definition-LN4V7U3C-DiGaAQFh.js → mindmap-definition-LN4V7U3C-CB7JnCHh.js} +1 -1
- package/web-dist/assets/{packet-7NZHBO7P-Bv8ILo_S.js → packet-7NZHBO7P-BvyvpOhm.js} +1 -1
- package/web-dist/assets/{pegDiagram-2B236MQR-CtOUW7n0.js → pegDiagram-2B236MQR-BoygVhix.js} +1 -1
- package/web-dist/assets/{pie-RZYD4A2V-Dz4Bm-Vx.js → pie-RZYD4A2V-ChTjZLeC.js} +1 -1
- package/web-dist/assets/{pieDiagram-ENE6RG2P-VMY_CK3i.js → pieDiagram-ENE6RG2P-B3UNPTpF.js} +1 -1
- package/web-dist/assets/{quadrantDiagram-ABIIQ3AL-V7HZxM7j.js → quadrantDiagram-ABIIQ3AL-DJdWJ4GS.js} +1 -1
- package/web-dist/assets/{radar-I7S5WNFK-CWk6RruH.js → radar-I7S5WNFK-DHi5ReAY.js} +1 -1
- package/web-dist/assets/{railroad-3IZDKUUU-m_8st_Ez.js → railroad-3IZDKUUU-DcLJuGRW.js} +1 -1
- package/web-dist/assets/railroad-abnf-AHOZXSZD-BJcLzkwL.js +1 -0
- package/web-dist/assets/railroad-ebnf-EBAXGLYW-B4jrlWYB.js +1 -0
- package/web-dist/assets/railroad-peg-LSFZ7HO6-BpIzbo9k.js +1 -0
- package/web-dist/assets/{railroadDiagram-RFXS5EU6-Dz80V-7-.js → railroadDiagram-RFXS5EU6-W4vnMFZ2.js} +1 -1
- package/web-dist/assets/{requirementDiagram-TGXJPOKE-DrDDgTwm.js → requirementDiagram-TGXJPOKE-CV_V-9DW.js} +1 -1
- package/web-dist/assets/{sankeyDiagram-HTMAVEWB-D4SeC-Bi.js → sankeyDiagram-HTMAVEWB-DuIIsNBv.js} +1 -1
- package/web-dist/assets/{sequenceDiagram-DBY2YBRQ-CA-ZO_qp.js → sequenceDiagram-DBY2YBRQ-DTT8ETnv.js} +1 -1
- package/web-dist/assets/{stateDiagram-2N3HPSRC-C_ZYvV2s.js → stateDiagram-2N3HPSRC-HVZaDROf.js} +1 -1
- package/web-dist/assets/stateDiagram-v2-6OUMAXLB-DF9q3s7U.js +1 -0
- package/web-dist/assets/{swimlanes-5IMT3BWC-DGMDseYx.js → swimlanes-5IMT3BWC-DpGdPqRB.js} +1 -1
- package/web-dist/assets/swimlanesDiagram-G3AALYLV-BNeW4PCd.js +8 -0
- package/web-dist/assets/{timeline-definition-FHXFAJF6-CEiMp3_j.js → timeline-definition-FHXFAJF6-D9u3mgpd.js} +1 -1
- package/web-dist/assets/{treeView-QDETBFTQ-BSspY0US.js → treeView-QDETBFTQ-Dga6MhEJ.js} +1 -1
- package/web-dist/assets/{treemap-6X3UGDF4-DXNQxmQ7.js → treemap-6X3UGDF4-BwEXmcD6.js} +1 -1
- package/web-dist/assets/{vennDiagram-L72KCM5P-C-khqkdm.js → vennDiagram-L72KCM5P-BMvodYUW.js} +1 -1
- package/web-dist/assets/{wardley-OPB4EBWU-B9QCQ_Tm.js → wardley-OPB4EBWU-BzB6QK8X.js} +1 -1
- package/web-dist/assets/{wardleyDiagram-EHGQE667-vhVpAUzh.js → wardleyDiagram-EHGQE667-4ID7QRJi.js} +1 -1
- package/web-dist/assets/{xychartDiagram-FW5EYKEG-B8ev9zqs.js → xychartDiagram-FW5EYKEG-Ckob9hhW.js} +1 -1
- package/web-dist/index.html +2 -2
- package/web-dist/assets/architecture-TIHT7OUA-XOYod28l.js +0 -1
- package/web-dist/assets/channel-Bqn3pFKp.js +0 -1
- package/web-dist/assets/classDiagram-OUVF2IWQ-DEMCehy_.js +0 -1
- package/web-dist/assets/classDiagram-v2-EOCWNBFH-DEMCehy_.js +0 -1
- package/web-dist/assets/eventmodeling-45OFAUF4-DIpO2jQx.js +0 -1
- package/web-dist/assets/flowDiagram-23GEKE2U-aERDdceE.js +0 -1
- package/web-dist/assets/index-D8iyWUZ0.css +0 -1
- package/web-dist/assets/railroad-abnf-AHOZXSZD-DIaRscxr.js +0 -1
- package/web-dist/assets/railroad-ebnf-EBAXGLYW-CeHpbK-W.js +0 -1
- package/web-dist/assets/railroad-peg-LSFZ7HO6-CbhVIbOj.js +0 -1
- package/web-dist/assets/stateDiagram-v2-6OUMAXLB-BLevFa3H.js +0 -1
- package/web-dist/assets/swimlanesDiagram-G3AALYLV-00mQRq57.js +0 -8
package/README.md
CHANGED
|
@@ -62,7 +62,7 @@ Frizz is a browser tab, a queue, and the agent CLIs you already pay for. It brin
|
|
|
62
62
|
- 🐙 **GitHub integration.** Browse your repo's issues and pull requests without leaving the composer, and turn a selection of them into threads. Workers can read issues, diffs, and CI on their own.
|
|
63
63
|
- 👀 **Built-in CI and PR watchers.** A worker waiting on a build or a review doesn't hand the thread back to you to be told "keep going." It watches, and picks the work back up when the run goes green or a review lands.
|
|
64
64
|
- 📝 **No magic.** A thread behaves like a Claude Code session you started yourself. Frizz adds no worktrees, no branches, no dev server, no build integration, no workflow engine to fight with.
|
|
65
|
-
- 🔒 **Local only.** No cloud, no account, no telemetry. The server binds `127.0.0.1` by default and its state lives in your user directory, never in your checkout.
|
|
65
|
+
- 🔒 **Local only.** No cloud, no account, no telemetry. The server binds `127.0.0.1` by default and its state lives in your user directory, never in your checkout. To reach a board from a phone, put your own tunnel or proxy in front of it — see [Remote access](docs/remote-access.md).
|
|
66
66
|
|
|
67
67
|
### The queue
|
|
68
68
|
|
|
@@ -121,11 +121,12 @@ $ npx frizz --help
|
|
|
121
121
|
|
|
122
122
|
Frizz production launcher
|
|
123
123
|
|
|
124
|
-
Usage: npx frizz [options]
|
|
125
|
-
npx frizz up start the server plus its public tunnel
|
|
124
|
+
Usage: npx frizz [options]
|
|
126
125
|
|
|
127
|
-
|
|
128
|
-
|
|
126
|
+
Run it in the directory you want to work in. One server serves EVERY project on this machine,
|
|
127
|
+
each at its own /project/<name> URL, so a second run joins the one already going. Runs the
|
|
128
|
+
npm-resolved immutable Frizz package, then opens it in your default browser. Use frizz-dev only
|
|
129
|
+
for a source checkout.
|
|
129
130
|
|
|
130
131
|
Options:
|
|
131
132
|
--app use the legacy dedicated app window instead of a browser tab
|
|
@@ -134,6 +135,8 @@ Options:
|
|
|
134
135
|
--host [address] serve on a network address instead of loopback (bare --host means 0.0.0.0)
|
|
135
136
|
--allowed-host <name> with --host, also accept this DNS name as the board's address (repeatable)
|
|
136
137
|
--public-origin <url> serve behind a proxy/tunnel reachable at this exact origin
|
|
138
|
+
--cloud serve at the saved hostname and run its Cloudflare tunnel as a child
|
|
139
|
+
process; asked once, then remembered
|
|
137
140
|
--link print a fresh single-use access link for the running board
|
|
138
141
|
--debug stream the full event feed to the terminal instead of the compact readout
|
|
139
142
|
-h, --help show this help
|
|
@@ -289,7 +292,7 @@ $ node scripts/sync-portable-monitors.mjs --check
|
|
|
289
292
|
$ node --test monitors/*.test.mjs
|
|
290
293
|
```
|
|
291
294
|
|
|
292
|
-
Everything else runs locally. Install with `pnpm install`, typecheck with `pnpm typecheck`, and run the full suite with `pnpm test` — that suite drives real agent CLIs and a real browser, which is why CI does not gate on it. Say in the PR what you ran.
|
|
295
|
+
Everything else runs locally. Install with `pnpm install`, typecheck with `pnpm typecheck`, and run the full suite with `pnpm test` — that suite drives real agent CLIs and a real browser, which is why CI does not gate on it. Say in the PR what you ran. The suite needs a newer Node than the runtime does: early 22.x point releases (22.15 measured) fail `receipt-bus.test.ts` on a since-fixed test-runner defect, so run it on current 22.x or ≥ 23.4.
|
|
293
296
|
|
|
294
297
|
<br/>
|
|
295
298
|
|
|
@@ -12,13 +12,22 @@ import { execFile } from "node:child_process";
|
|
|
12
12
|
import { readdirSync, unlinkSync } from "node:fs";
|
|
13
13
|
import { connect as connectSocket } from "node:net";
|
|
14
14
|
import { join } from "node:path";
|
|
15
|
+
function parseLsofSocketNames(stdout) {
|
|
16
|
+
const referenced = /* @__PURE__ */ new Set();
|
|
17
|
+
for (const line of stdout.split("\n")) {
|
|
18
|
+
if (!line.startsWith("n/")) continue;
|
|
19
|
+
const raw = line.slice(1);
|
|
20
|
+
referenced.add(raw);
|
|
21
|
+
const meta = raw.indexOf(" type=");
|
|
22
|
+
if (meta > 0) referenced.add(raw.slice(0, meta));
|
|
23
|
+
}
|
|
24
|
+
return referenced;
|
|
25
|
+
}
|
|
15
26
|
var defaultListReferenced = (prefix, done) => {
|
|
16
27
|
execFile("lsof", ["-U", "-F", "n"], { timeout: 3e4, maxBuffer: 16 * 1024 * 1024 }, (error, stdout) => {
|
|
17
28
|
if (!stdout) return done(null);
|
|
18
29
|
if (error && !stdout.includes(prefix)) return done(null);
|
|
19
|
-
|
|
20
|
-
for (const line of stdout.split("\n")) if (line.startsWith("n/")) referenced.add(line.slice(1));
|
|
21
|
-
done(referenced);
|
|
30
|
+
done(parseLsofSocketNames(stdout));
|
|
22
31
|
}).unref?.();
|
|
23
32
|
};
|
|
24
33
|
var defaultProbe = (path, verdict) => {
|