frizz 0.7.8 → 0.8.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 +5 -0
- package/dist/claude-agent-broker.js +65 -5
- package/dist/dev-child.js +457 -553
- package/dist/frizz.js +96 -9
- package/package.json +1 -1
- package/runtime/cc-worker/.claude-plugin/plugin.json +1 -1
- package/runtime/cc-worker/DECISIONS.md +29 -1
- package/runtime/cc-worker/agents/high.md +7 -0
- package/runtime/cc-worker/agents/low.md +7 -0
- package/runtime/cc-worker/agents/max.md +7 -0
- package/runtime/cc-worker/agents/medium.md +7 -0
- package/runtime/cc-worker/agents/xhigh.md +7 -0
- package/runtime/cc-worker/hooks/agent-dispatch.mjs +10 -9
- package/runtime/cc-worker/hooks/hooks.json +0 -2
- package/runtime/cc-worker/hooks/scratchpad.mjs +5 -3
- package/runtime/cc-worker/hooks/session-seed.mjs +17 -17
- package/runtime/cc-worker/skills/gh/SKILL.md +5 -19
- package/web-dist/assets/{TerminalPane-ubcEP7X3.js → TerminalPane-BM_laA_I.js} +1 -1
- package/web-dist/assets/{abnfDiagram-VRR7QNED-0brfnieb.js → abnfDiagram-VRR7QNED-C5FCLi1n.js} +1 -1
- package/web-dist/assets/architecture-TIHT7OUA-ngY1F0r2.js +1 -0
- package/web-dist/assets/{architectureDiagram-ZJ3FMSHR-Dji-XBdF.js → architectureDiagram-ZJ3FMSHR-Dm7tUnwt.js} +1 -1
- package/web-dist/assets/{blockDiagram-677ZJIJ3-BQMyz3Q9.js → blockDiagram-677ZJIJ3-3EhpmwKM.js} +1 -1
- package/web-dist/assets/{c4Diagram-LMCZKHZV-BMNws0Oi.js → c4Diagram-LMCZKHZV-Ca-BjDxw.js} +1 -1
- package/web-dist/assets/channel-BpyNaJoi.js +1 -0
- package/web-dist/assets/{chunk-32BRIVSS-CVv1ae7n.js → chunk-32BRIVSS-xGbaUlTN.js} +1 -1
- package/web-dist/assets/{chunk-52WLFC77-BYhPlKCT.js → chunk-52WLFC77-YYhE3F1a.js} +1 -1
- package/web-dist/assets/{chunk-C7G6YPKG-Cn4HhNwb.js → chunk-C7G6YPKG-SYKXFtUg.js} +1 -1
- package/web-dist/assets/{chunk-EX3LRPZG-P3ZYFC1W.js → chunk-EX3LRPZG-cqjtdM_c.js} +1 -1
- package/web-dist/assets/{chunk-FWX5IMBZ-Ba3NpEQa.js → chunk-FWX5IMBZ-qyaTngKT.js} +2 -2
- package/web-dist/assets/{chunk-HOUHSVGY-BCWyMhwJ.js → chunk-HOUHSVGY-DBFt1HnE.js} +1 -1
- package/web-dist/assets/{chunk-ICXQ74PX-DWAAqHL7.js → chunk-ICXQ74PX-Bme_2_gm.js} +1 -1
- package/web-dist/assets/{chunk-MOJQB5TN-pc5VJ4Nq.js → chunk-MOJQB5TN-DupTmWhN.js} +1 -1
- package/web-dist/assets/{chunk-OGEWGWER-DUxmbiuX.js → chunk-OGEWGWER-DSqmbKCq.js} +1 -1
- package/web-dist/assets/{chunk-PUDLZKDR-DRdZWzxX.js → chunk-PUDLZKDR-DVnHUoFN.js} +1 -1
- package/web-dist/assets/{chunk-Q4XR5HBZ-Bafzu7s-.js → chunk-Q4XR5HBZ-BIZh_Yuh.js} +1 -1
- package/web-dist/assets/{chunk-V7JOEXUC-Bj0A8ftW.js → chunk-V7JOEXUC-e2G7UgOg.js} +1 -1
- package/web-dist/assets/{chunk-VAUOI2AC-DBgVQKIO.js → chunk-VAUOI2AC-uYgyYWPh.js} +1 -1
- package/web-dist/assets/{chunk-VR4S4FIN-DU-1KtuM.js → chunk-VR4S4FIN-BjGjcexQ.js} +1 -1
- package/web-dist/assets/{chunk-WYO6CB5R-DzVb3-Rj.js → chunk-WYO6CB5R-BKKd_W3B.js} +1 -1
- package/web-dist/assets/{chunk-ZGVPDNZ5-BPKQvduj.js → chunk-ZGVPDNZ5-D5_hsjnF.js} +1 -1
- package/web-dist/assets/classDiagram-OUVF2IWQ-DTEWwxt7.js +1 -0
- package/web-dist/assets/classDiagram-v2-EOCWNBFH-DTEWwxt7.js +1 -0
- package/web-dist/assets/{cynefin-VYW2F7L2-lo8PqVCk.js → cynefin-VYW2F7L2-bkFv7EpV.js} +1 -1
- package/web-dist/assets/{cynefinDiagram-TSTJHNR4-BtQLaDV0.js → cynefinDiagram-TSTJHNR4-Du2-dyuZ.js} +1 -1
- package/web-dist/assets/{dagre-VKFMJZFB-BJ2-f-A0.js → dagre-VKFMJZFB-CU7w00Ul.js} +1 -1
- package/web-dist/assets/{diagram-FQU43EPY-CLM-8r74.js → diagram-FQU43EPY-BxvVgxWb.js} +1 -1
- package/web-dist/assets/{diagram-G47NLZAW-CfuoJGpN.js → diagram-G47NLZAW-D8VvetwQ.js} +1 -1
- package/web-dist/assets/{diagram-NH7WQ7WH-DfxxRwH8.js → diagram-NH7WQ7WH-CwsChkED.js} +1 -1
- package/web-dist/assets/{diagram-OA4YK3LP-D7knxZee.js → diagram-OA4YK3LP-BIPYbe6L.js} +1 -1
- package/web-dist/assets/{diagram-WEI45ONY-C2WfMXWl.js → diagram-WEI45ONY-BoyH4dKl.js} +1 -1
- package/web-dist/assets/{ebnfDiagram-CCIWWBDH-DRSZ24tF.js → ebnfDiagram-CCIWWBDH-9A3WRDfU.js} +1 -1
- package/web-dist/assets/{erDiagram-Q63AITRT-DXe0OrbY.js → erDiagram-Q63AITRT-D3Y9WA4H.js} +1 -1
- package/web-dist/assets/eventmodeling-45OFAUF4-D7g9kDF0.js +1 -0
- package/web-dist/assets/flowDiagram-23GEKE2U-BqKnxVr3.js +1 -0
- package/web-dist/assets/{ganttDiagram-NO4QXBWP-wGqOgjvs.js → ganttDiagram-NO4QXBWP-Bk2-LClm.js} +1 -1
- package/web-dist/assets/{gitGraph-TEB2WS4Q-BygokG6y.js → gitGraph-TEB2WS4Q-CXvPrsio.js} +1 -1
- package/web-dist/assets/{gitGraphDiagram-IHSO6WYX-CV1933_M.js → gitGraphDiagram-IHSO6WYX-BC9D72kT.js} +1 -1
- package/web-dist/assets/index-CCtNIGi6.js +491 -0
- package/web-dist/assets/index-Cq79m8AR.css +1 -0
- package/web-dist/assets/{info-DKCQHKI2-DLavbzui.js → info-DKCQHKI2-Beag76kE.js} +1 -1
- package/web-dist/assets/{infoDiagram-FWYZ7A6U-Biouxd9G.js → infoDiagram-FWYZ7A6U-DaqYXHYB.js} +1 -1
- package/web-dist/assets/{ishikawaDiagram-FXEZZL3T-DJxwwS3R.js → ishikawaDiagram-FXEZZL3T-D-d4tmLU.js} +1 -1
- package/web-dist/assets/{journeyDiagram-5HDEW3XC-Clx_WkdW.js → journeyDiagram-5HDEW3XC-kkFYzNg1.js} +1 -1
- package/web-dist/assets/{kanban-definition-HUTT4EX6-Bf7bX_96.js → kanban-definition-HUTT4EX6-BYRPjbfv.js} +1 -1
- package/web-dist/assets/{line-CV2v49IN.js → line-C8l7y6rG.js} +1 -1
- package/web-dist/assets/{mermaid-parser.core-BPsFhEi6.js → mermaid-parser.core-BG3fgy77.js} +3 -3
- package/web-dist/assets/{mermaid.core-0EWDNL_R.js → mermaid.core-BCDzcbhr.js} +3 -3
- package/web-dist/assets/{mindmap-definition-LN4V7U3C-C1y4yy3Z.js → mindmap-definition-LN4V7U3C-CP_bgQm8.js} +1 -1
- package/web-dist/assets/{packet-7NZHBO7P-CpcpxruB.js → packet-7NZHBO7P-Dgd69pFS.js} +1 -1
- package/web-dist/assets/{pegDiagram-2B236MQR-CVlVP4cH.js → pegDiagram-2B236MQR-BJUb_DOD.js} +1 -1
- package/web-dist/assets/{pie-RZYD4A2V-BcVPOhTZ.js → pie-RZYD4A2V-DPbVRAuL.js} +1 -1
- package/web-dist/assets/{pieDiagram-ENE6RG2P-DZv4Tfae.js → pieDiagram-ENE6RG2P-DavUeOqM.js} +1 -1
- package/web-dist/assets/{quadrantDiagram-ABIIQ3AL-DOzS_U_a.js → quadrantDiagram-ABIIQ3AL-BdvoSedu.js} +1 -1
- package/web-dist/assets/{radar-I7S5WNFK-8YADxkdT.js → radar-I7S5WNFK-C2TAta9K.js} +1 -1
- package/web-dist/assets/{railroad-3IZDKUUU-DzndPrRy.js → railroad-3IZDKUUU-DEMjzYqC.js} +1 -1
- package/web-dist/assets/railroad-abnf-AHOZXSZD-_4FByoRI.js +1 -0
- package/web-dist/assets/railroad-ebnf-EBAXGLYW-DKAvMIMu.js +1 -0
- package/web-dist/assets/railroad-peg-LSFZ7HO6-CkJl3c69.js +1 -0
- package/web-dist/assets/{railroadDiagram-RFXS5EU6-CPJAH-r7.js → railroadDiagram-RFXS5EU6-C4rERo6H.js} +1 -1
- package/web-dist/assets/{requirementDiagram-TGXJPOKE-BVFJZfwl.js → requirementDiagram-TGXJPOKE-DlIG9D0n.js} +1 -1
- package/web-dist/assets/{sankeyDiagram-HTMAVEWB-CUhvFPmE.js → sankeyDiagram-HTMAVEWB-DVMrG-qY.js} +1 -1
- package/web-dist/assets/{sequenceDiagram-DBY2YBRQ-Cy9CGhNq.js → sequenceDiagram-DBY2YBRQ-DDcDM_-e.js} +1 -1
- package/web-dist/assets/{stateDiagram-2N3HPSRC-CqOnmPLp.js → stateDiagram-2N3HPSRC-DuCRKU5t.js} +1 -1
- package/web-dist/assets/stateDiagram-v2-6OUMAXLB-90dqEQum.js +1 -0
- package/web-dist/assets/{swimlanes-5IMT3BWC-c_zBqkb9.js → swimlanes-5IMT3BWC-CY0fdvUm.js} +1 -1
- package/web-dist/assets/swimlanesDiagram-G3AALYLV-BETWueIt.js +8 -0
- package/web-dist/assets/{timeline-definition-FHXFAJF6-y_QM62SK.js → timeline-definition-FHXFAJF6-De0fDNdU.js} +1 -1
- package/web-dist/assets/{treeView-QDETBFTQ-T3y_1KXV.js → treeView-QDETBFTQ-AIoMhcen.js} +1 -1
- package/web-dist/assets/{treemap-6X3UGDF4-CzvqucqY.js → treemap-6X3UGDF4-CPZ1Ln05.js} +1 -1
- package/web-dist/assets/{vennDiagram-L72KCM5P-6-HNOpN0.js → vennDiagram-L72KCM5P-FrSO6pmh.js} +1 -1
- package/web-dist/assets/{wardley-OPB4EBWU-BrsaqsLL.js → wardley-OPB4EBWU-BbET6cjs.js} +1 -1
- package/web-dist/assets/{wardleyDiagram-EHGQE667-Cr_rCzwd.js → wardleyDiagram-EHGQE667-DqvcCBjr.js} +1 -1
- package/web-dist/assets/{xychartDiagram-FW5EYKEG-BnX6ccx4.js → xychartDiagram-FW5EYKEG-91xKEO07.js} +1 -1
- package/web-dist/index.html +2 -2
- package/runtime/cc-worker/agents/fable-high.md +0 -8
- package/runtime/cc-worker/agents/fable-low.md +0 -8
- package/runtime/cc-worker/agents/fable-max.md +0 -8
- package/runtime/cc-worker/agents/fable-medium.md +0 -8
- package/runtime/cc-worker/agents/fable-xhigh.md +0 -8
- package/runtime/cc-worker/agents/haiku.md +0 -7
- package/runtime/cc-worker/agents/opus-high.md +0 -8
- package/runtime/cc-worker/agents/opus-low.md +0 -8
- package/runtime/cc-worker/agents/opus-max.md +0 -8
- package/runtime/cc-worker/agents/opus-medium.md +0 -8
- package/runtime/cc-worker/agents/opus-xhigh.md +0 -8
- package/runtime/cc-worker/agents/sonnet-high.md +0 -8
- package/runtime/cc-worker/agents/sonnet-low.md +0 -8
- package/runtime/cc-worker/agents/sonnet-max.md +0 -8
- package/runtime/cc-worker/agents/sonnet-medium.md +0 -8
- package/runtime/cc-worker/agents/sonnet-xhigh.md +0 -8
- package/runtime/cc-worker/bin/browser-mcp-tools.json +0 -1192
- package/runtime/cc-worker/bin/browser-mcp.mjs +0 -730
- package/runtime/cc-worker/hooks/precompact-instructions.mjs +0 -133
- package/runtime/cc-worker/skills/waits/SKILL.md +0 -84
- package/web-dist/assets/architecture-TIHT7OUA-DksosNDW.js +0 -1
- package/web-dist/assets/channel-DqoPvfQz.js +0 -1
- package/web-dist/assets/classDiagram-OUVF2IWQ-DwUs74RB.js +0 -1
- package/web-dist/assets/classDiagram-v2-EOCWNBFH-DwUs74RB.js +0 -1
- package/web-dist/assets/eventmodeling-45OFAUF4-CUIjQ7kE.js +0 -1
- package/web-dist/assets/flowDiagram-23GEKE2U-Dka-3F3n.js +0 -1
- package/web-dist/assets/index-CmrDpsD8.css +0 -1
- package/web-dist/assets/index-DB1d3eMJ.js +0 -491
- package/web-dist/assets/railroad-abnf-AHOZXSZD-CCnWa6K9.js +0 -1
- package/web-dist/assets/railroad-ebnf-EBAXGLYW-jtVdzv7e.js +0 -1
- package/web-dist/assets/railroad-peg-LSFZ7HO6-B8D6TyEe.js +0 -1
- package/web-dist/assets/stateDiagram-v2-6OUMAXLB-DWKW-4qu.js +0 -1
- package/web-dist/assets/swimlanesDiagram-G3AALYLV-DZKoB7ae.js +0 -8
package/README.md
CHANGED
|
@@ -142,6 +142,9 @@ for a source checkout.
|
|
|
142
142
|
Options:
|
|
143
143
|
--no-app print the URL without opening a browser
|
|
144
144
|
--port <port> request a fixed port for a new workspace server
|
|
145
|
+
--sandbox a disposable Frizz to try things in: throwaway home and project, its
|
|
146
|
+
own port, deleted when this terminal closes; credentials (gh,
|
|
147
|
+
cloudflared, Claude, Codex, the machine's frizz.sh key) are shared
|
|
145
148
|
--link print a fresh single-use access link for the running board
|
|
146
149
|
--debug stream the full event feed to the terminal instead of the compact readout
|
|
147
150
|
-h, --help show this help
|
|
@@ -204,6 +207,8 @@ shows a single-use sign-in link as a QR; press L for a fresh one, or run --link
|
|
|
204
207
|
|
|
205
208
|
> Yes. Press **R** in the terminal running Frizz. A short walkthrough sets up one of four ways to reach the board — a name on frizz.sh, a Cloudflare Tunnel you own, Tailscale, or any proxy you run — checks what each needs, prints the commands, and remembers your choice. From then on a plain `npx frizz` serves it; pick **Off** in the same place to go back to loopback only.
|
|
206
209
|
>
|
|
210
|
+
> To try any of this without touching the board you run, launch a second one with `npx frizz --sandbox` — a throwaway home and project on its own port, deleted on ctrl-c.
|
|
211
|
+
>
|
|
207
212
|
> The board stays bound to `127.0.0.1` in every case. Something in front of it — the frizz.sh relay, the tunnel, Tailscale, your proxy — carries the traffic, and Frizz gates the first visit with a single-use sign-in link shown as a QR. Press **L** for a fresh link any time, or `npx frizz --link` from another shell (over SSH, for a headless box). See [Remote access](docs/remote-access.md) for what each option needs.
|
|
208
213
|
|
|
209
214
|
</details>
|
|
@@ -20353,6 +20353,7 @@ var RealClaudeQueryHandle = class {
|
|
|
20353
20353
|
await this.ready();
|
|
20354
20354
|
this.assertOpen();
|
|
20355
20355
|
const result = await this.awaitOpenControl(this.sdkQuery.reloadPlugins());
|
|
20356
|
+
this.skillSourcesPromise = null;
|
|
20356
20357
|
return {
|
|
20357
20358
|
plugins: Array.isArray(result?.plugins) ? result.plugins.length : 0,
|
|
20358
20359
|
commands: Array.isArray(result?.commands) ? result.commands.length : 0,
|
|
@@ -20371,16 +20372,59 @@ var RealClaudeQueryHandle = class {
|
|
|
20371
20372
|
// `supportedCommands()` would re-serve from its cache), and the init frame's `skills` array is the
|
|
20372
20373
|
// harness's own verdict on which of those are skills rather than built-in commands. The intersection
|
|
20373
20374
|
// is exactly "what `/name` invokes a skill", with descriptions, and zero frizz-side discovery.
|
|
20375
|
+
//
|
|
20376
|
+
// Where each one CAME FROM is a second question, and claude answers it in exactly one place:
|
|
20377
|
+
// `getContextUsage().skills.skillFrontmatter[].source`. Not in `SlashCommand`, which carries only
|
|
20378
|
+
// {name, description, argumentHint, aliases}. The tempting free alternative — the CLI appends the
|
|
20379
|
+
// source to the description as a parenthetical, " (user)" / " (project)" — was measured and rejected:
|
|
20380
|
+
// it names only those two of the four roots, and the same regex false-positives on descriptions that
|
|
20381
|
+
// legitimately end in a parenthetical (`/deep-research` ends "(dynamic workflow)", `/clear`
|
|
20382
|
+
// "(resumable with /resume)", `/fast` "(Opus 4.8)"). A wrong label is worse than none.
|
|
20374
20383
|
async listSkills() {
|
|
20375
20384
|
const initialization = await this.initializationResult();
|
|
20385
|
+
const sources = await this.skillSources();
|
|
20376
20386
|
const skillNames = new Set(this.initSkills);
|
|
20377
20387
|
const skills = [];
|
|
20378
20388
|
for (const command of initialization.commands) {
|
|
20379
20389
|
if (!command.name || !skillNames.has(command.name)) continue;
|
|
20380
|
-
|
|
20390
|
+
const source = sources.get(command.name);
|
|
20391
|
+
skills.push({ name: command.name, description: withoutRedundantSource(command.description, source).slice(0, 1024), source });
|
|
20381
20392
|
}
|
|
20382
20393
|
return skills;
|
|
20383
20394
|
}
|
|
20395
|
+
// The name→source map behind listSkills, fetched ONCE per session and memoized on the promise.
|
|
20396
|
+
//
|
|
20397
|
+
// `getContextUsage()` is a real control round trip that re-counts tokens every time — measured at
|
|
20398
|
+
// 1222ms then 1105ms against claude 2.1.246, so the CLI does not cache it either. Paying that on
|
|
20399
|
+
// every `/` would be felt; paying it once, lazily, on the first `/` a thread ever opens is not, and
|
|
20400
|
+
// the web caches the finished listing per slug on top of that. Deliberately NOT prefetched at init:
|
|
20401
|
+
// most threads never open the menu, and taxing every session start for a menu nobody asked for is
|
|
20402
|
+
// the wrong trade.
|
|
20403
|
+
//
|
|
20404
|
+
// A failure resolves to an EMPTY map rather than rejecting: the source is decoration, and losing it
|
|
20405
|
+
// must never cost the operator the listing itself.
|
|
20406
|
+
skillSourcesPromise = null;
|
|
20407
|
+
skillSources() {
|
|
20408
|
+
this.skillSourcesPromise ??= this.fetchSkillSources().catch(() => /* @__PURE__ */ new Map());
|
|
20409
|
+
return this.skillSourcesPromise;
|
|
20410
|
+
}
|
|
20411
|
+
async fetchSkillSources() {
|
|
20412
|
+
this.assertOpen();
|
|
20413
|
+
const usage = await this.awaitOpenControl(this.sdkQuery.getContextUsage());
|
|
20414
|
+
const rows = boundedArray(usage?.skills?.skillFrontmatter, "contextUsage.skills.skillFrontmatter", 1024);
|
|
20415
|
+
const sources = /* @__PURE__ */ new Map();
|
|
20416
|
+
for (const [index, entry] of rows.entries()) {
|
|
20417
|
+
try {
|
|
20418
|
+
const row = objectValue(entry, `contextUsage.skills.skillFrontmatter[${index}]`);
|
|
20419
|
+
const name = safeText(row.name, `contextUsage.skills.skillFrontmatter[${index}].name`, 512);
|
|
20420
|
+
const source = claudeSkillSource(safeText(row.source, `contextUsage.skills.skillFrontmatter[${index}].source`, 64));
|
|
20421
|
+
if (name && source) sources.set(name, source);
|
|
20422
|
+
} catch {
|
|
20423
|
+
continue;
|
|
20424
|
+
}
|
|
20425
|
+
}
|
|
20426
|
+
return sources;
|
|
20427
|
+
}
|
|
20384
20428
|
// Unqueue a follow-up the operator has taken back.
|
|
20385
20429
|
//
|
|
20386
20430
|
// `cancelAsyncMessage` is present at runtime in @anthropic-ai/claude-agent-sdk 0.3.207 but absent
|
|
@@ -20667,11 +20711,14 @@ function startClaudeQuery(executablePath, options) {
|
|
|
20667
20711
|
// `user,project,local` reported it applied.
|
|
20668
20712
|
settingSources: options.settingSources ?? ["user", "project", "local"],
|
|
20669
20713
|
// The frizz worker environment (see ClaudeQueryStartOptions): load the local cc-worker plugin so a
|
|
20670
|
-
// broker session gets the frizz sub-agent profiles + hooks, mount the MCP
|
|
20671
|
-
//
|
|
20714
|
+
// broker session gets the frizz sub-agent profiles + hooks, mount the frizz MCP server, and
|
|
20715
|
+
// pre-approve it. EMPTY is skipped, not passed: since frizz stopped mounting a browser (2026-08-26)
|
|
20716
|
+
// a resolved-nothing worker env is a real state, and `{}`/`[]` are truthy — handing the SDK an
|
|
20717
|
+
// empty allowlist is not the same as handing it none. The project's own `.mcp.json` servers are
|
|
20718
|
+
// loaded by settingSources, independently of this.
|
|
20672
20719
|
...options.pluginDir ? { plugins: [{ type: "local", path: options.pluginDir }] } : {},
|
|
20673
|
-
...options.mcpServers ? { mcpServers: options.mcpServers } : {},
|
|
20674
|
-
...options.allowedTools ? { allowedTools: options.allowedTools } : {},
|
|
20720
|
+
...options.mcpServers && Object.keys(options.mcpServers).length > 0 ? { mcpServers: options.mcpServers } : {},
|
|
20721
|
+
...options.allowedTools?.length ? { allowedTools: options.allowedTools } : {},
|
|
20675
20722
|
...options.disallowedTools?.length ? { disallowedTools: [...options.disallowedTools] } : {},
|
|
20676
20723
|
persistSession: options.persistSession ?? false,
|
|
20677
20724
|
// Keep Claude's default (preset) system prompt and APPEND the frizz worker contract, the SDK
|
|
@@ -21252,6 +21299,19 @@ function mapModelContextWindows(raw) {
|
|
|
21252
21299
|
}
|
|
21253
21300
|
return count === 0 ? void 0 : out;
|
|
21254
21301
|
}
|
|
21302
|
+
var CLAUDE_SOURCE_SUFFIX = { user: " (user)", project: " (project)" };
|
|
21303
|
+
function withoutRedundantSource(description, source) {
|
|
21304
|
+
const suffix = source && CLAUDE_SOURCE_SUFFIX[source];
|
|
21305
|
+
if (!suffix || !description.endsWith(suffix)) return description;
|
|
21306
|
+
return description.slice(0, -suffix.length).trimEnd();
|
|
21307
|
+
}
|
|
21308
|
+
function claudeSkillSource(source) {
|
|
21309
|
+
if (source === "projectSettings") return "project";
|
|
21310
|
+
if (source === "userSettings") return "user";
|
|
21311
|
+
if (source === "built-in") return "builtin";
|
|
21312
|
+
if (source === "plugin") return "plugin";
|
|
21313
|
+
return void 0;
|
|
21314
|
+
}
|
|
21255
21315
|
function mapControlInitialization(raw) {
|
|
21256
21316
|
const commands = boundedArray(raw.commands, "initialization.commands", 256).map((entry, index) => {
|
|
21257
21317
|
const command = objectValue(entry, `initialization.commands[${index}]`);
|