frizz-server 0.15.22 → 0.15.23
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/claude-agent-broker.js +347 -27
- package/dist/dev-child.js +4762 -2746
- package/package.json +1 -1
- package/runtime/cc-worker/DECISIONS.md +36 -0
- package/runtime/cc-worker/bin/frizz-mcp.mjs +11 -1850
- package/runtime/cc-worker/bin/frizzctl +14 -0
- package/runtime/cc-worker/bin/frizzctl.cmd +9 -0
- package/runtime/cc-worker/bin/frizzctl.mjs +438 -0
- package/runtime/cc-worker/hooks/agent-dispatch.mjs +2 -2
- package/runtime/cc-worker/hooks/deny-ask.mjs +3 -3
- package/runtime/cc-worker/hooks/deny-plan.mjs +2 -2
- package/runtime/cc-worker/hooks/perm-policy.mjs +42 -0
- package/runtime/cc-worker/hooks/scratchpad.mjs +16 -10
- package/runtime/cc-worker/hooks/session-seed.mjs +1 -1
- package/runtime/cc-worker/lib/frizz-tools.mjs +2241 -0
- package/runtime/cc-worker/skills/gh/SKILL.md +6 -6
- package/web-dist/assets/{abnfDiagram-VRR7QNED-DqTQZ2Ex.js → abnfDiagram-VRR7QNED-BW_CIF9J.js} +1 -1
- package/web-dist/assets/{arc-t56zg8G8.js → arc-B475yv46.js} +1 -1
- package/web-dist/assets/architecture-TIHT7OUA-wAP7tOoN.js +1 -0
- package/web-dist/assets/{architectureDiagram-ZJ3FMSHR-CSdC9-eQ.js → architectureDiagram-ZJ3FMSHR-DkPvFjFp.js} +1 -1
- package/web-dist/assets/{blockDiagram-677ZJIJ3-Dmw8EopV.js → blockDiagram-677ZJIJ3-Rls7Nttu.js} +1 -1
- package/web-dist/assets/{c4Diagram-LMCZKHZV-BCRaFnis.js → c4Diagram-LMCZKHZV-maV0q2bv.js} +1 -1
- package/web-dist/assets/channel-Clg0HJPA.js +1 -0
- package/web-dist/assets/{chunk-32BRIVSS-DqOJDRw_.js → chunk-32BRIVSS-Coi7L0de.js} +1 -1
- package/web-dist/assets/{chunk-52WLFC77-BsibludT.js → chunk-52WLFC77-DZaDe-48.js} +1 -1
- package/web-dist/assets/{chunk-C7G6YPKG-D7Me5JQU.js → chunk-C7G6YPKG-DNQ-JhD9.js} +1 -1
- package/web-dist/assets/{chunk-EX3LRPZG-CTa4YlOO.js → chunk-EX3LRPZG-BQCebwoA.js} +1 -1
- package/web-dist/assets/{chunk-FWX5IMBZ-CjqOt5Jn.js → chunk-FWX5IMBZ-CqiHtpEB.js} +2 -2
- package/web-dist/assets/{chunk-HOUHSVGY-BDIBDR-8.js → chunk-HOUHSVGY-Bop69PFg.js} +1 -1
- package/web-dist/assets/{chunk-ICXQ74PX-C4exiYRm.js → chunk-ICXQ74PX-D3PkeZ6B.js} +1 -1
- package/web-dist/assets/{chunk-MOJQB5TN-g8M_GVaO.js → chunk-MOJQB5TN-lidXw8-C.js} +1 -1
- package/web-dist/assets/{chunk-OGEWGWER-C_80lLFe.js → chunk-OGEWGWER-CzD91FAh.js} +1 -1
- package/web-dist/assets/{chunk-PUDLZKDR-B73Odmxv.js → chunk-PUDLZKDR-Cilkzvck.js} +1 -1
- package/web-dist/assets/{chunk-Q4XR5HBZ-D-VkroM1.js → chunk-Q4XR5HBZ-C37UQCfb.js} +1 -1
- package/web-dist/assets/{chunk-RYQCIY6F-DmPJ8s-8.js → chunk-RYQCIY6F-C0qnX-Ux.js} +1 -1
- package/web-dist/assets/{chunk-V7JOEXUC-BQKrRLYX.js → chunk-V7JOEXUC-Da5vOGHX.js} +1 -1
- package/web-dist/assets/{chunk-VAUOI2AC-DRKYvsWa.js → chunk-VAUOI2AC-FrJadrJY.js} +1 -1
- package/web-dist/assets/{chunk-VR4S4FIN-DaMMs6V-.js → chunk-VR4S4FIN-DYxK2Z50.js} +1 -1
- package/web-dist/assets/{chunk-WYO6CB5R-CQAWjeZH.js → chunk-WYO6CB5R-C164KTfT.js} +1 -1
- package/web-dist/assets/{chunk-XXDRQBXY-DJvt-abB.js → chunk-XXDRQBXY-D4wHtxet.js} +1 -1
- package/web-dist/assets/{chunk-ZGVPDNZ5-B1v24MrX.js → chunk-ZGVPDNZ5-BXKkVljT.js} +1 -1
- package/web-dist/assets/classDiagram-OUVF2IWQ-23bCXfvg.js +1 -0
- package/web-dist/assets/classDiagram-v2-EOCWNBFH-23bCXfvg.js +1 -0
- package/web-dist/assets/{cose-bilkent-JH36ORCC-CeNttASr.js → cose-bilkent-JH36ORCC-BFSgVzNT.js} +1 -1
- package/web-dist/assets/{cynefin-VYW2F7L2-ClJzZ-Yx.js → cynefin-VYW2F7L2-BSoEbT-s.js} +1 -1
- package/web-dist/assets/{cynefinDiagram-TSTJHNR4-BCrL5Bu_.js → cynefinDiagram-TSTJHNR4-BBZgLbdX.js} +1 -1
- package/web-dist/assets/{dagre-VKFMJZFB-DO7qy19A.js → dagre-VKFMJZFB-Dx6giO7u.js} +1 -1
- package/web-dist/assets/{diagram-FQU43EPY-KPbJc2w8.js → diagram-FQU43EPY-BMI3qRca.js} +1 -1
- package/web-dist/assets/{diagram-G47NLZAW-9tqHFXzf.js → diagram-G47NLZAW-CJY-MA3L.js} +1 -1
- package/web-dist/assets/{diagram-NH7WQ7WH-BUbmU0cY.js → diagram-NH7WQ7WH-CbQVFJ3r.js} +1 -1
- package/web-dist/assets/{diagram-OA4YK3LP-QmMo96Qi.js → diagram-OA4YK3LP-CPnrakdY.js} +1 -1
- package/web-dist/assets/{diagram-WEI45ONY-BYAyhW16.js → diagram-WEI45ONY-D9DNwzlo.js} +1 -1
- package/web-dist/assets/{dist-Cewx01EF.js → dist-CO93_xVa.js} +1 -1
- package/web-dist/assets/{ebnfDiagram-CCIWWBDH-BIMiEDl1.js → ebnfDiagram-CCIWWBDH-DNHudB8r.js} +1 -1
- package/web-dist/assets/{erDiagram-Q63AITRT-aLYQSs2d.js → erDiagram-Q63AITRT-Cwt63Xz8.js} +1 -1
- package/web-dist/assets/eventmodeling-45OFAUF4-Q3Nq1ecc.js +1 -0
- package/web-dist/assets/flowDiagram-23GEKE2U-B2snV3ot.js +1 -0
- package/web-dist/assets/{ganttDiagram-NO4QXBWP-Bu6_kuAX.js → ganttDiagram-NO4QXBWP-DiFpSJc2.js} +1 -1
- package/web-dist/assets/{gitGraph-TEB2WS4Q-yz2DuHDq.js → gitGraph-TEB2WS4Q-2-hTvDOu.js} +1 -1
- package/web-dist/assets/{gitGraphDiagram-IHSO6WYX-BXfbKaor.js → gitGraphDiagram-IHSO6WYX-mbc4Il71.js} +1 -1
- package/web-dist/assets/index-C6AXnNpg.css +2 -0
- package/web-dist/assets/index-DewBdeY0.js +352 -0
- package/web-dist/assets/{info-DKCQHKI2-BdItukhP.js → info-DKCQHKI2-BO0ZUEnn.js} +1 -1
- package/web-dist/assets/{infoDiagram-FWYZ7A6U-DXrq8wS3.js → infoDiagram-FWYZ7A6U-Cn3DmnjS.js} +1 -1
- package/web-dist/assets/{ishikawaDiagram-FXEZZL3T-iM2fPeJv.js → ishikawaDiagram-FXEZZL3T-Ckwh42aC.js} +1 -1
- package/web-dist/assets/{journeyDiagram-5HDEW3XC-DNa58xSH.js → journeyDiagram-5HDEW3XC-D26ySLLD.js} +1 -1
- package/web-dist/assets/{kanban-definition-HUTT4EX6-DhSaBCRv.js → kanban-definition-HUTT4EX6-CXKwXGxe.js} +1 -1
- package/web-dist/assets/{line-CQn0ApgD.js → line-BHqhqZTw.js} +1 -1
- package/web-dist/assets/{linear-DMSasryg.js → linear-Xq8ICqCe.js} +1 -1
- package/web-dist/assets/{mermaid-parser.core-BiJ3pVQT.js → mermaid-parser.core-ByagDKoG.js} +3 -3
- package/web-dist/assets/{mermaid.core-8ofZrJs5.js → mermaid.core-CEwbkqrb.js} +3 -3
- package/web-dist/assets/{mindmap-definition-LN4V7U3C-BLr4IGuI.js → mindmap-definition-LN4V7U3C-C3S3nEo5.js} +1 -1
- package/web-dist/assets/{packet-7NZHBO7P-D15LrSHU.js → packet-7NZHBO7P-BjcgqWf7.js} +1 -1
- package/web-dist/assets/{pegDiagram-2B236MQR-C9IcvZ_z.js → pegDiagram-2B236MQR-Due7wPzY.js} +1 -1
- package/web-dist/assets/{pie-RZYD4A2V-79-1CSta.js → pie-RZYD4A2V-C1X-Fm2K.js} +1 -1
- package/web-dist/assets/{pieDiagram-ENE6RG2P-dm_ORKO7.js → pieDiagram-ENE6RG2P-CbKS5jFv.js} +1 -1
- package/web-dist/assets/{quadrantDiagram-ABIIQ3AL-vQkbT0Ej.js → quadrantDiagram-ABIIQ3AL-CVF1CNNO.js} +1 -1
- package/web-dist/assets/{radar-I7S5WNFK-B8xvrM0r.js → radar-I7S5WNFK-Co7Otr5p.js} +1 -1
- package/web-dist/assets/{railroad-3IZDKUUU-G0rN-YuN.js → railroad-3IZDKUUU-BTwZqHtN.js} +1 -1
- package/web-dist/assets/railroad-abnf-AHOZXSZD-CEkmgARz.js +1 -0
- package/web-dist/assets/railroad-ebnf-EBAXGLYW-D2dXzrFd.js +1 -0
- package/web-dist/assets/railroad-peg-LSFZ7HO6-yA2XVaxN.js +1 -0
- package/web-dist/assets/{railroadDiagram-RFXS5EU6-BtGt9H2_.js → railroadDiagram-RFXS5EU6-DCymlvVU.js} +1 -1
- package/web-dist/assets/{requirementDiagram-TGXJPOKE-oHUUvJjC.js → requirementDiagram-TGXJPOKE-CEFbAu30.js} +1 -1
- package/web-dist/assets/{sankeyDiagram-HTMAVEWB-BoO0DzUn.js → sankeyDiagram-HTMAVEWB-fnX7WrAj.js} +1 -1
- package/web-dist/assets/{sequenceDiagram-DBY2YBRQ-B344KPVn.js → sequenceDiagram-DBY2YBRQ-BUvsAYkQ.js} +1 -1
- package/web-dist/assets/{src-BygbIYKj.js → src-V5VjKILh.js} +1 -1
- package/web-dist/assets/{stateDiagram-2N3HPSRC-DMTN-MuE.js → stateDiagram-2N3HPSRC-C9LJKbHM.js} +1 -1
- package/web-dist/assets/stateDiagram-v2-6OUMAXLB-Bm1cPGFT.js +1 -0
- package/web-dist/assets/{swimlanes-5IMT3BWC-DQEhwI0k.js → swimlanes-5IMT3BWC-aq9B5aBs.js} +1 -1
- package/web-dist/assets/swimlanesDiagram-G3AALYLV-DR6Yx_Ic.js +8 -0
- package/web-dist/assets/{timeline-definition-FHXFAJF6-CUoCgDT7.js → timeline-definition-FHXFAJF6-DhJ9Jf4f.js} +1 -1
- package/web-dist/assets/{treeView-QDETBFTQ-BTHFGWtv.js → treeView-QDETBFTQ-D42FrEH4.js} +1 -1
- package/web-dist/assets/{treemap-6X3UGDF4-BI2j1PYm.js → treemap-6X3UGDF4-BV_9JyG6.js} +1 -1
- package/web-dist/assets/{vennDiagram-L72KCM5P-Cc3sJIb2.js → vennDiagram-L72KCM5P-BkwHzxsN.js} +1 -1
- package/web-dist/assets/{wardley-OPB4EBWU-kYXYWMgL.js → wardley-OPB4EBWU-fwm52ei3.js} +1 -1
- package/web-dist/assets/{wardleyDiagram-EHGQE667-KHMHPO99.js → wardleyDiagram-EHGQE667-D_UqvgcE.js} +1 -1
- package/web-dist/assets/{xychartDiagram-FW5EYKEG-DzSZk-Dq.js → xychartDiagram-FW5EYKEG-tKdmcTfS.js} +1 -1
- package/web-dist/index.html +2 -2
- package/web-dist/assets/architecture-TIHT7OUA-Czzg2iAA.js +0 -1
- package/web-dist/assets/channel-CxehNUC2.js +0 -1
- package/web-dist/assets/classDiagram-OUVF2IWQ-BwIDe0nq.js +0 -1
- package/web-dist/assets/classDiagram-v2-EOCWNBFH-BwIDe0nq.js +0 -1
- package/web-dist/assets/eventmodeling-45OFAUF4-jYGf30I4.js +0 -1
- package/web-dist/assets/flowDiagram-23GEKE2U-uJJwGAew.js +0 -1
- package/web-dist/assets/index-DS1RBTF4.js +0 -336
- package/web-dist/assets/index-DX1b-Y8G.css +0 -2
- package/web-dist/assets/railroad-abnf-AHOZXSZD-BaCc6741.js +0 -1
- package/web-dist/assets/railroad-ebnf-EBAXGLYW-cUMY4WQi.js +0 -1
- package/web-dist/assets/railroad-peg-LSFZ7HO6-JS2RjlNP.js +0 -1
- package/web-dist/assets/stateDiagram-v2-6OUMAXLB-4HUOVSEd.js +0 -1
- package/web-dist/assets/swimlanesDiagram-G3AALYLV-PPFuhngt.js +0 -8
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
// what their worker would be told.
|
|
14
14
|
//
|
|
15
15
|
// The maintainer's replacement (chosen deliberately over keeping a canonical doc): the thread gets a
|
|
16
|
-
// free-form scratch DIRECTORY, and compaction recovery moves to `
|
|
17
|
-
//
|
|
16
|
+
// free-form scratch DIRECTORY, and compaction recovery moves to `frizzctl goal`'s
|
|
17
|
+
// post-compaction trigger — the worker writes whatever doc it likes and LINKS it in a prompt frizz
|
|
18
18
|
// re-sends when the context is summarized away. Durable in SQLite, visible in the thread footer,
|
|
19
19
|
// editable by the human. This hook's job is therefore reduced to two honest things:
|
|
20
20
|
//
|
|
@@ -212,6 +212,12 @@ function emitJson(additionalContext, hookEventName) {
|
|
|
212
212
|
|
|
213
213
|
// ── mode: session-start ──────────────────────────────────────────────────────────────────────────
|
|
214
214
|
if (mode === 'session-start') {
|
|
215
|
+
// A CODEX resume loses nothing: the thread is rebuilt from its rollout with the whole conversation in
|
|
216
|
+
// it, and Frizz resumes a thread routinely — its first message after every Frizz restart, and again
|
|
217
|
+
// when a newer Frizz hands it new hooks. Telling that worker "Context was just lost" would be false
|
|
218
|
+
// every time, so the Codex registration says so with a flag and this stays silent. (On Claude a
|
|
219
|
+
// resume is a cold start of the process and keeps the wording below.)
|
|
220
|
+
if (input.source === 'resume' && argv.includes('--resume-keeps-context')) process.exit(0);
|
|
215
221
|
const files = listScratch();
|
|
216
222
|
const written = files.length > 0;
|
|
217
223
|
|
|
@@ -245,8 +251,8 @@ if (mode === 'session-start') {
|
|
|
245
251
|
'⟦scratch directory⟧ Context was just ' + (input.source === 'compact' ? 'compacted' : 'lost') +
|
|
246
252
|
'. You have files in your scratch directory `' + relPath + '`:\n' + describe(files) +
|
|
247
253
|
'\n\nRead whichever of them bears on what you were doing BEFORE acting, and treat what you ' +
|
|
248
|
-
'wrote there as authoritative over anything the summary implies. (A goal armed
|
|
249
|
-
'
|
|
254
|
+
'wrote there as authoritative over anything the summary implies. (A goal armed with ' +
|
|
255
|
+
'`frizzctl goal start --post-compaction` can hand a link back at the next ' +
|
|
250
256
|
'compaction without relying on this note.)' +
|
|
251
257
|
compactedNote,
|
|
252
258
|
);
|
|
@@ -260,7 +266,7 @@ if (mode === 'session-start') {
|
|
|
260
266
|
'`.frizz/threads/*/` directories for a substitute, and do not broadly reload repo docs or ' +
|
|
261
267
|
'skills merely to reconstruct context. Recover from the retained compaction summary and any ' +
|
|
262
268
|
'task-specific handoff it directly names. The directory is still available if you want notes ' +
|
|
263
|
-
'this time, and a goal armed
|
|
269
|
+
'this time, and a goal armed with `frizzctl goal start --post-compaction` can ' +
|
|
264
270
|
're-send a prompt linking them at the next compaction.' +
|
|
265
271
|
compactedNote,
|
|
266
272
|
);
|
|
@@ -270,8 +276,8 @@ if (mode === 'session-start') {
|
|
|
270
276
|
parts.push(
|
|
271
277
|
'⟦scratch directory⟧ `' + relPath + '` is yours: any files you like, no format expected, and ' +
|
|
272
278
|
'nothing in it is read automatically. Use it if you want it. If you ever want a note to come ' +
|
|
273
|
-
'back after a compaction, a goal armed
|
|
274
|
-
'
|
|
279
|
+
'back after a compaction, a goal armed with `frizzctl goal start ' +
|
|
280
|
+
'--post-compaction` re-sends a prompt of your choosing — one that can link a file here.',
|
|
275
281
|
);
|
|
276
282
|
}
|
|
277
283
|
emitJson(parts.join('\n\n'), 'SessionStart');
|
|
@@ -402,13 +408,13 @@ if (mode === 'nudge') {
|
|
|
402
408
|
mtimeMs
|
|
403
409
|
? '⟦scratch notes stale⟧ Your context has grown ~' + k + 'k tokens since you last wrote anything ' +
|
|
404
410
|
'in `' + relPath + '`. Top the notes up in passing if you still want them current (a goal ' +
|
|
405
|
-
'armed with
|
|
411
|
+
'armed with `frizzctl goal start --post-compaction` can link them). This is a background note, NOT a task and ' +
|
|
406
412
|
'NOT a reason to pause: do not stop working to service it, and never end a turn on it while ' +
|
|
407
413
|
'the human\'s instruction still has parts left.'
|
|
408
414
|
: '⟦scratch directory empty⟧ This session is ~' + k + 'k tokens deep and `' + relPath + '` is ' +
|
|
409
415
|
'empty. That is fine — notes are optional and writing them is not doing the work. The ' +
|
|
410
|
-
'directory is available if you want notes, and
|
|
411
|
-
'
|
|
416
|
+
'directory is available if you want notes, and `frizzctl goal start ' +
|
|
417
|
+
'--post-compaction` can re-send a prompt linking them after a compaction. This is a ' +
|
|
412
418
|
'background note, NOT a task and NOT a reason to pause: keep going with what you were asked to do.',
|
|
413
419
|
event,
|
|
414
420
|
);
|
|
@@ -68,7 +68,7 @@ const scratch = sid
|
|
|
68
68
|
// prompt. Trimmed 2026-08-26 (maintainer: "Definitely trim the session seed hook if it's fully
|
|
69
69
|
// repetitive") as part of cutting the per-session token overhead Frizz adds over a plain TUI session.
|
|
70
70
|
const core =
|
|
71
|
-
'⟦frizz worker contract⟧ You are a frizz WORKER driving EXACTLY ONE effort. Your FULL operating contract — the end-of-turn signal fences (```done / ```awaiting — a question is a registered row, `
|
|
71
|
+
'⟦frizz worker contract⟧ You are a frizz WORKER driving EXACTLY ONE effort. Your FULL operating contract — the end-of-turn signal fences (```done / ```awaiting — a question is a registered row, `frizzctl ask`, and the only ```question fence is the EMPTY placement marker naming its id), the scratch-directory rules, the sub-agent rules, the question handback and the stop criterion — lives in your SYSTEM PROMPT; follow it there. ALWAYS SIGN OFF — a fence OR a registration (`frizzctl ask`, `frizzctl done`); an open question is one, so rest normally and write no question fence for it. A rest on running work takes the ```awaiting fence with `status: working|watching|needs_input` — `working` and `watching` are quiet parks and need no write-up.\n' +
|
|
72
72
|
'SCRATCH DIRECTORY (OPTIONAL): `' + scratch + '` — a folder kept FOR YOU, nothing in it read automatically, never a substitute for doing the work. Give each sub-agent its OWN file rather than a shared one.';
|
|
73
73
|
|
|
74
74
|
const grounding =
|