typebulb 0.25.0 → 0.26.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/dist/agents/claude/client.js +309 -304
- package/dist/agents/claude/styles.css +79 -11
- package/dist/agents/pi/client.js +244 -239
- package/dist/agents/pi/matchu-patchu.ts +1 -1
- package/dist/agents/pi/styles.css +79 -11
- package/dist/ai/providers/gemini.d.ts +11 -1
- package/dist/ai/providers/gemini.d.ts.map +1 -1
- package/dist/ai/providers/gemini.js +24 -16
- package/dist/ai/providers/gemini.js.map +1 -1
- package/dist/format/config.d.ts +5 -0
- package/dist/format/config.d.ts.map +1 -1
- package/dist/format/config.js +20 -0
- package/dist/format/config.js.map +1 -1
- package/dist/index.js +193 -192
- package/dist/servers.js +97 -97
- package/package.json +1 -1
|
@@ -2217,7 +2217,7 @@ var Patcher = class _Patcher {
|
|
|
2217
2217
|
|
|
2218
2218
|
// cli/agents/pi/server/piPatcherExtension.ts
|
|
2219
2219
|
var DESCRIPTION = true ? "Apply unified diffs to files \u2014 tolerant of form, strict about intent. Repairs sloppy AI-generated diffs (mangled headers, whitespace drift, missing prefixes; line numbers can be wrong or absent \u2014 hunks anchor by fuzzy-matched context lines) and applies all hunks atomically when the intent is unambiguous; fails with a precise, typed error when it isn't. Use for multi-hunk edits in one step, or when exact string-replacement editing fails on whitespace or invisible characters." : "Apply unified diffs to files.";
|
|
2220
|
-
var BUILD_TAG = true ? "matchu-patchu-pi 0.2.0, built 2026-07-
|
|
2220
|
+
var BUILD_TAG = true ? "matchu-patchu-pi 0.2.0, built 2026-07-15 08:57:22" : "matchu-patchu-pi dev";
|
|
2221
2221
|
var errorBlocks = (errors) => {
|
|
2222
2222
|
const parts = [`Patch failed with ${errors.length} error(s):`];
|
|
2223
2223
|
for (const e of errors) parts.push("", e.toString());
|
|
@@ -178,13 +178,13 @@ body {
|
|
|
178
178
|
session list). Wrap = positioning context; the popover anchors bottom/right and
|
|
179
179
|
grows up-and-left — the chips sit in the right-aligned cluster, so left:0 would
|
|
180
180
|
run them off the viewport's right edge. */
|
|
181
|
-
.token-wrap, .sid-wrap, .servers-wrap, .model-wrap { position: relative; display: inline-block; }
|
|
181
|
+
.token-wrap, .sid-wrap, .servers-wrap, .model-wrap, .gitdiff-wrap { position: relative; display: inline-block; }
|
|
182
182
|
/* Each pill renders its wrap unconditionally, emitting an empty div when it has
|
|
183
183
|
nothing to show (no tokens / no session / nothing running). An empty wrap is
|
|
184
184
|
still a flex child, so .statusbar-actions' gap lands on both its sides —
|
|
185
185
|
doubling the visible gap between its neighbours. Collapse the empties so the
|
|
186
186
|
cluster spaces evenly regardless of which pills are present. */
|
|
187
|
-
.token-wrap:empty, .sid-wrap:empty, .servers-wrap:empty, .model-wrap:empty { display: none; }
|
|
187
|
+
.token-wrap:empty, .sid-wrap:empty, .servers-wrap:empty, .model-wrap:empty, .gitdiff-wrap:empty { display: none; }
|
|
188
188
|
.picker, .servers-pop {
|
|
189
189
|
--menu-h: 428px; /* one height for both statusbar menus — they sit side by side, so a
|
|
190
190
|
mismatched cap reads as a glitch; .picker grows to it, .servers-pop
|
|
@@ -913,6 +913,73 @@ a.server-port:hover { text-decoration: underline; }
|
|
|
913
913
|
color: var(--fg);
|
|
914
914
|
}
|
|
915
915
|
.bulb-log-text { white-space: pre-wrap; word-break: break-word; }
|
|
916
|
+
|
|
917
|
+
/* ── Git diff pill + menu (TB-Agent-Mirror.md): a `± N` chip (custom two-color glyph, icons.ts, +
|
|
918
|
+
changed-file count) that exists only when the tree is dirty — presence is the signal, so the glyph
|
|
919
|
+
keeps its red/green at rest (no grayscale: the chip can't be "idle", a clean tree removes it) and
|
|
920
|
+
the accent border stays reserved for latched, like every pill. Picking a menu row swaps the
|
|
921
|
+
transcript for a full-context unified diff. Flex like the square glyph pills (an svg mis-seats
|
|
922
|
+
under the word-pill text-box trim), width freed for the count. ── */
|
|
923
|
+
/* Three classes to out-specify .pill.glyph's fixed square (width: var(--pill-h); padding: 0) —
|
|
924
|
+
this is the one glyph pill that carries content beside its icon, so its width must be free. */
|
|
925
|
+
.pill.glyph.gitdiff-pill { width: auto; padding: 0 .45rem; gap: .3rem; }
|
|
926
|
+
/* 2:3, the cropped viewBox's aspect — a square box would re-add the side margins. */
|
|
927
|
+
.gitdiff-pill .icon { width: 8px; height: 12px; }
|
|
928
|
+
.gitdiff-count { font-size: var(--pill-font); font-variant-numeric: tabular-nums; }
|
|
929
|
+
.gitdiff-pop { width: min(480px, calc(100vw - 2rem)); }
|
|
930
|
+
.gitdiff-list { display: flex; flex-direction: column; gap: .15rem; flex: 1; min-height: 0; overflow-y: auto; padding-right: 4px; }
|
|
931
|
+
.gitdiff-row { display: flex; align-items: center; gap: .55rem; flex: none; min-height: var(--menu-row-h); padding: .05rem .45rem; border-radius: 6px; font-size: .85rem; cursor: pointer; }
|
|
932
|
+
.gitdiff-row:hover { background: color-mix(in srgb, var(--accent) 10%, transparent); }
|
|
933
|
+
.gitdiff-row.active { background: color-mix(in srgb, var(--accent) 16%, transparent); }
|
|
934
|
+
.gitdiff-row.viewing .gitdiff-path { color: var(--accent); }
|
|
935
|
+
/* One status letter, VS Code's palette: modified/renamed amber, added/untracked green, deleted red. */
|
|
936
|
+
.gitdiff-status { flex: none; width: 1rem; text-align: center; font: 600 .74rem ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; color: var(--muted); }
|
|
937
|
+
.gitdiff-status.s-M, .gitdiff-status.s-R { color: var(--warn); }
|
|
938
|
+
.gitdiff-status.s-A, .gitdiff-status.s-U { color: var(--diff-add); }
|
|
939
|
+
.gitdiff-status.s-D { color: var(--err); }
|
|
940
|
+
.gitdiff-path { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
941
|
+
.gitdiff-counts { flex: none; display: inline-flex; gap: .35rem; font-size: .72rem; font-variant-numeric: tabular-nums; }
|
|
942
|
+
.gitdiff-counts .count-add { color: var(--diff-add); }
|
|
943
|
+
.gitdiff-counts .count-del { color: var(--err); }
|
|
944
|
+
|
|
945
|
+
/* The diff doc — takes the transcript's slot in .chat (same flex geometry as .messages). Full-bleed
|
|
946
|
+
like a code surface (no --content-max column: diff lines want the width); the body is the scroll
|
|
947
|
+
surface, its bottom padding clearing the overlaid statusbar like .messages' does. The ± markers and
|
|
948
|
+
red/green bands are the shared .udiff-* rules the tool cards use. */
|
|
949
|
+
.diff-doc { flex: 1; min-height: 0; display: flex; flex-direction: column; outline: none; }
|
|
950
|
+
.diff-doc-head { display: flex; align-items: center; gap: .6rem; padding: .5rem 1.75rem .4rem; font-size: .8rem; border-bottom: 1px solid var(--border); }
|
|
951
|
+
.diff-doc-path { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--accent); cursor: pointer; }
|
|
952
|
+
.diff-doc-path:hover { text-decoration: underline; }
|
|
953
|
+
.diff-doc-head .bulb-log-back { margin-left: auto; }
|
|
954
|
+
.diff-doc-body {
|
|
955
|
+
flex: 1; min-height: 0; overflow: auto;
|
|
956
|
+
scrollbar-gutter: stable both-edges;
|
|
957
|
+
padding: .75rem 1.75rem 2.5rem;
|
|
958
|
+
font: .78rem/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
959
|
+
white-space: pre-wrap; word-break: break-word;
|
|
960
|
+
}
|
|
961
|
+
.diff-doc-empty, .diff-doc-trunc { color: var(--muted); padding: .4rem 0; }
|
|
962
|
+
/* The wrong-cwd empty state (Root.#cwdHint): centered over the empty transcript. */
|
|
963
|
+
.cwd-hint { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; gap: .5rem; padding: 2rem; color: var(--muted); font-size: .9rem; max-width: 40rem; margin-inline: auto; }
|
|
964
|
+
.cwd-hint-head { font-weight: 600; color: var(--fg); }
|
|
965
|
+
.cwd-hint-dir { color: var(--accent); }
|
|
966
|
+
/* With token colors under them, the full-strength (24%) bands compete — red tokens on a red band
|
|
967
|
+
turn to mud — so the doc view's bands drop to a tint: polarity is still carried per-line by the
|
|
968
|
+
gutter ± glyphs and at file scale by the ruler. Scoped: the tool-card hunks keep 24%, where the
|
|
969
|
+
unhighlighted band is the only signal. Del a touch stronger than add — red-leaning tokens
|
|
970
|
+
camouflage against red tint more than anything does against green. */
|
|
971
|
+
.diff-doc-body .udiff-add { background: color-mix(in srgb, var(--diff-add) 10%, transparent); }
|
|
972
|
+
.diff-doc-body .udiff-del { background: color-mix(in srgb, var(--err) 13%, transparent); }
|
|
973
|
+
/* The overview ruler — VS Code's scrollbar change-marks, owned since the native scrollbar can't be
|
|
974
|
+
painted: a thin track beside the scrollbar (17px clears Windows Chromium's classic bar — plain px
|
|
975
|
+
on a desktop-only surface, the menus' own stance), red/green marks at each change run's fractional
|
|
976
|
+
position, min-height so a one-line change stays visible. The wrapper keeps it overlaid rather than
|
|
977
|
+
scrolling with the body. Marks are pointer-inert so a click anywhere on the track jumps. */
|
|
978
|
+
.diff-doc-scroll { position: relative; flex: 1; min-height: 0; display: flex; flex-direction: column; }
|
|
979
|
+
.diff-ruler { position: absolute; top: 2px; bottom: 2px; right: 17px; width: 6px; cursor: pointer; z-index: 5; }
|
|
980
|
+
.diff-ruler-mark { position: absolute; left: 0; right: 0; min-height: 3px; border-radius: 1px; pointer-events: none; }
|
|
981
|
+
.diff-ruler-mark.add { background: var(--diff-add); opacity: .8; }
|
|
982
|
+
.diff-ruler-mark.del { background: var(--err); opacity: .8; }
|
|
916
983
|
/* messages */
|
|
917
984
|
.messages {
|
|
918
985
|
flex: 1;
|
|
@@ -1364,24 +1431,25 @@ html[data-theme="dark"] .masthead-logo.dark { display: block; }
|
|
|
1364
1431
|
background: transparent;
|
|
1365
1432
|
overflow-x: auto;
|
|
1366
1433
|
}
|
|
1367
|
-
/* hljs token colors for the code view,
|
|
1434
|
+
/* hljs token colors for the code view AND the diff doc (one palette, or the same file reads as two
|
|
1435
|
+
languages across surfaces), mapped to the bulb's own theme vars (no hljs
|
|
1368
1436
|
theme stylesheet) so highlighting follows light/dark rather than baking a palette
|
|
1369
1437
|
that would clash in dark mode. Minimal token set — enough for legible TS/HTML/CSS/
|
|
1370
1438
|
JSON/markdown without chasing every grammar scope. */
|
|
1371
|
-
.bulb-code .hljs-comment, .bulb-code .hljs-quote { color: var(--muted); font-style: italic; }
|
|
1372
|
-
.bulb-code .hljs-keyword, .bulb-code .hljs-literal, .bulb-code .hljs-built_in { color: var(--accent); }
|
|
1373
|
-
.bulb-code .hljs-tag, .bulb-code .hljs-name, .bulb-code .hljs-selector-tag { color: var(--accent); }
|
|
1374
|
-
.bulb-code .hljs-string, .bulb-code .hljs-regexp, .bulb-code .hljs-meta .hljs-string {
|
|
1439
|
+
.bulb-code .hljs-comment, .diff-doc-body .hljs-comment, .bulb-code .hljs-quote, .diff-doc-body .hljs-quote { color: var(--muted); font-style: italic; }
|
|
1440
|
+
.bulb-code .hljs-keyword, .diff-doc-body .hljs-keyword, .bulb-code .hljs-literal, .diff-doc-body .hljs-literal, .bulb-code .hljs-built_in, .diff-doc-body .hljs-built_in { color: var(--accent); }
|
|
1441
|
+
.bulb-code .hljs-tag, .diff-doc-body .hljs-tag, .bulb-code .hljs-name, .diff-doc-body .hljs-name, .bulb-code .hljs-selector-tag, .diff-doc-body .hljs-selector-tag { color: var(--accent); }
|
|
1442
|
+
.bulb-code .hljs-string, .diff-doc-body .hljs-string, .bulb-code .hljs-regexp, .diff-doc-body .hljs-regexp, .bulb-code .hljs-meta .hljs-string, .diff-doc-body .hljs-meta .hljs-string {
|
|
1375
1443
|
color: color-mix(in srgb, var(--diff-add) 85%, var(--fg));
|
|
1376
1444
|
}
|
|
1377
|
-
.bulb-code .hljs-number { color: color-mix(in srgb, var(--accent) 55%, var(--fg)); }
|
|
1378
|
-
.bulb-code .hljs-attr, .bulb-code .hljs-attribute, .bulb-code .hljs-property, .bulb-code .hljs-type {
|
|
1445
|
+
.bulb-code .hljs-number, .diff-doc-body .hljs-number { color: color-mix(in srgb, var(--accent) 55%, var(--fg)); }
|
|
1446
|
+
.bulb-code .hljs-attr, .diff-doc-body .hljs-attr, .bulb-code .hljs-attribute, .diff-doc-body .hljs-attribute, .bulb-code .hljs-property, .diff-doc-body .hljs-property, .bulb-code .hljs-type, .diff-doc-body .hljs-type {
|
|
1379
1447
|
color: color-mix(in srgb, var(--accent) 75%, var(--fg));
|
|
1380
1448
|
}
|
|
1381
|
-
.bulb-code .hljs-title, .bulb-code .hljs-title.function_, .bulb-code .hljs-section {
|
|
1449
|
+
.bulb-code .hljs-title, .diff-doc-body .hljs-title, .bulb-code .hljs-title.function_, .diff-doc-body .hljs-title.function_, .bulb-code .hljs-section, .diff-doc-body .hljs-section {
|
|
1382
1450
|
color: var(--fg); font-weight: 600;
|
|
1383
1451
|
}
|
|
1384
|
-
.bulb-code .hljs-symbol, .bulb-code .hljs-bullet, .bulb-code .hljs-punctuation { color: var(--muted); }
|
|
1452
|
+
.bulb-code .hljs-symbol, .diff-doc-body .hljs-symbol, .bulb-code .hljs-bullet, .diff-doc-body .hljs-bullet, .bulb-code .hljs-punctuation, .diff-doc-body .hljs-punctuation { color: var(--muted); }
|
|
1385
1453
|
/* Draft-streaming bulb card (#draftBulbCard): the code view wearing a progress header — never a
|
|
1386
1454
|
live mount; the durable row's BulbEmbed takes this slot when the entry lands. Cap tighter than
|
|
1387
1455
|
.bulb-code's resting 480px: ambient progress, not reading material. */
|
|
@@ -18,11 +18,14 @@ export interface GeminiGoogleSearchTool {
|
|
|
18
18
|
google_search: Record<string, never>;
|
|
19
19
|
}
|
|
20
20
|
export type GeminiTool = GeminiGoogleSearchTool;
|
|
21
|
+
export type GeminiThinkingLevel = 'minimal' | 'low' | 'medium' | 'high';
|
|
21
22
|
export interface GeminiThinkingConfig {
|
|
22
23
|
/** Surface thought summaries as `thought` parts in the response. */
|
|
23
24
|
includeThoughts?: boolean;
|
|
24
25
|
/** Token budget for thinking; -1 = dynamic (model self-regulates depth). */
|
|
25
26
|
thinkingBudget?: number;
|
|
27
|
+
/** Semantic depth dial for Gemini 3.x+; replaces numeric budgets. */
|
|
28
|
+
thinkingLevel?: GeminiThinkingLevel;
|
|
26
29
|
}
|
|
27
30
|
export interface GeminiGenerationConfig {
|
|
28
31
|
temperature?: number;
|
|
@@ -57,12 +60,19 @@ export declare class GeminiProvider extends AIProvider {
|
|
|
57
60
|
protected readonly providerName = "Gemini";
|
|
58
61
|
readonly defaultBaseUrl = "https://generativelanguage.googleapis.com";
|
|
59
62
|
readonly path = "/v1beta/models";
|
|
63
|
+
private readonly budgetMap;
|
|
60
64
|
getPath(model: string, stream: boolean): string;
|
|
61
65
|
buildHeaders(apiKey: string): Record<string, string>;
|
|
62
|
-
buildPayload(messages: ChatMessageDto[],
|
|
66
|
+
buildPayload(messages: ChatMessageDto[], model: string, opts: ChatRequestOpts, _stream: boolean): GeminiRequestPayload;
|
|
63
67
|
parseError(errorText: string, status: number): UpstreamErrorDto;
|
|
64
68
|
parseNonStreamingResponse(json: ProviderResponseDto): ChatResponseDto;
|
|
65
69
|
protected parseProviderStreamChunk(json: ProviderStreamEventDto): ChatStreamPieceDto | null;
|
|
70
|
+
/** Major.minor from a versioned model name (`gemini-3.5-flash` → 3.5); null for aliases. */
|
|
71
|
+
private geminiVersion;
|
|
72
|
+
/** Dial → level, clamped to the family's supported enum: `minimal` is 3.5+; earlier 3.x floors at
|
|
73
|
+
* `low`. (gemini-3-pro-preview's low|high-only enum would need a wider clamp, but Google retired
|
|
74
|
+
* the model — 404 verified 2026-07-15.) */
|
|
75
|
+
private thinkingLevelFor;
|
|
66
76
|
private isGeminiResponse;
|
|
67
77
|
/** Split a candidate's parts into answer text and thought (reasoning) summaries — Gemini marks
|
|
68
78
|
* thought parts with `thought: true`. Returns the `{ text?, reasoning? }` stream-piece shape. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../ai/src/providers/gemini.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAEhB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,UAAU,EAAuB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAIxF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEpD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,EAAE,cAAc,EAAE,CAAA;CACxB;AAGD,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CACrC;AAED,MAAM,MAAM,UAAU,GAAG,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../ai/src/providers/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ export class GeminiProvider extends AIProvider {
|
|
|
5
5
|
this.providerName = 'Gemini';
|
|
6
6
|
this.defaultBaseUrl = 'https://generativelanguage.googleapis.com';
|
|
7
7
|
this.path = '/v1beta/models';
|
|
8
|
+
this.budgetMap = { 0: 0, 1: 1024, 2: 8192, 3: -1 };
|
|
8
9
|
}
|
|
9
10
|
// ── Request building ─────────────────────────────────────────────
|
|
10
11
|
getPath(model, stream) {
|
|
@@ -18,7 +19,7 @@ export class GeminiProvider extends AIProvider {
|
|
|
18
19
|
'x-goog-api-key': apiKey
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
|
-
buildPayload(messages,
|
|
22
|
+
buildPayload(messages, model, opts, _stream) {
|
|
22
23
|
const { system, conversationMessages } = this.extractSystemMessages(messages, '\n');
|
|
23
24
|
const contents = conversationMessages.map(m => ({
|
|
24
25
|
role: m.role === 'assistant' ? 'model' : 'user',
|
|
@@ -35,24 +36,19 @@ export class GeminiProvider extends AIProvider {
|
|
|
35
36
|
parts: [{ text: system }]
|
|
36
37
|
};
|
|
37
38
|
}
|
|
38
|
-
// Map the 1-3 reasoning dial to a thinking budget so the effort selector actually controls depth
|
|
39
|
-
// — mirroring how the OpenRouter path honors `effort` per level (native previously hardcoded
|
|
40
|
-
// `thinkingBudget: -1`, always thinking maximally and ignoring the dial, which made native Gemini
|
|
41
|
-
// look like it "always reasons" while OpenRouter respected the dial). `low` gets a small budget
|
|
42
|
-
// (often below the summary threshold → blank, matching OpenRouter's `effort:'low'`); `high` uses
|
|
43
|
-
// `-1` (dynamic, always in-range, no per-model max risk). `includeThoughts` streams thought
|
|
44
|
-
// summaries as `thought` parts, which the parser maps to AiChunk `{ kind: "reasoning" }`.
|
|
45
39
|
const effort = opts?.effort;
|
|
46
40
|
if (effort !== undefined) {
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
//
|
|
50
|
-
|
|
51
|
-
|
|
41
|
+
// Generation-gated like anthropic.ts: 3.x+ takes Google's semantic `thinkingLevel`; 2.5-era
|
|
42
|
+
// and unrecognized aliases stay on numeric budgets (2.5's native dial, and the safe fallback —
|
|
43
|
+
// Google back-compat remaps budgets on 3.x). Low's small budget often streams blank reasoning
|
|
44
|
+
// (intended); `includeThoughts` streams thought summaries as `thought` parts (parser maps
|
|
45
|
+
// them to reasoning), and at effort 0 there is nothing to stream, so it's dropped.
|
|
46
|
+
const version = this.geminiVersion(model);
|
|
47
|
+
const dial = version !== null && version >= 3
|
|
48
|
+
? { thinkingLevel: this.thinkingLevelFor(version, effort) }
|
|
49
|
+
: { thinkingBudget: this.budgetMap[effort] };
|
|
52
50
|
payload.generationConfig = {
|
|
53
|
-
thinkingConfig:
|
|
54
|
-
? { thinkingBudget: 0 }
|
|
55
|
-
: { includeThoughts: true, thinkingBudget },
|
|
51
|
+
thinkingConfig: effort === 0 ? dial : { includeThoughts: true, ...dial },
|
|
56
52
|
};
|
|
57
53
|
}
|
|
58
54
|
return payload;
|
|
@@ -110,6 +106,18 @@ export class GeminiProvider extends AIProvider {
|
|
|
110
106
|
return (piece.text || piece.reasoning) ? piece : null;
|
|
111
107
|
}
|
|
112
108
|
// ── Private helpers ──────────────────────────────────────────────
|
|
109
|
+
/** Major.minor from a versioned model name (`gemini-3.5-flash` → 3.5); null for aliases. */
|
|
110
|
+
geminiVersion(model) {
|
|
111
|
+
const m = model.match(/^gemini-(\d+(?:\.\d+)?)/);
|
|
112
|
+
return m ? Number(m[1]) : null;
|
|
113
|
+
}
|
|
114
|
+
/** Dial → level, clamped to the family's supported enum: `minimal` is 3.5+; earlier 3.x floors at
|
|
115
|
+
* `low`. (gemini-3-pro-preview's low|high-only enum would need a wider clamp, but Google retired
|
|
116
|
+
* the model — 404 verified 2026-07-15.) */
|
|
117
|
+
thinkingLevelFor(version, effort) {
|
|
118
|
+
const level = ['minimal', 'low', 'medium', 'high'][effort];
|
|
119
|
+
return level === 'minimal' && version < 3.5 ? 'low' : level;
|
|
120
|
+
}
|
|
113
121
|
isGeminiResponse(json) {
|
|
114
122
|
return (typeof json === 'object' &&
|
|
115
123
|
json !== null &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../ai/src/providers/gemini.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAwB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../ai/src/providers/gemini.ts"],"names":[],"mappings":"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"}
|
package/dist/format/config.d.ts
CHANGED
|
@@ -14,4 +14,9 @@ export interface BulbConfig {
|
|
|
14
14
|
}
|
|
15
15
|
/** Parse the `config.json` block, returning {} for empty or malformed JSON. */
|
|
16
16
|
export declare function parseConfig(config: string): BulbConfig;
|
|
17
|
+
/** Strip inline markdown (links, emphasis, code, headings) for plain-text contexts like meta descriptions. */
|
|
18
|
+
export declare function stripMarkdown(text: string): string;
|
|
19
|
+
/** Plain-text description from a `config.json` string: markdown stripped, single line, ≤200 chars.
|
|
20
|
+
* Logic duplicated in client/_worker.js (edge runtime, no build step). */
|
|
21
|
+
export declare function extractDescription(config: string | undefined): string;
|
|
17
22
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../format/src/config.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAE/F,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,EAAE,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAClC;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAOtD"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../format/src/config.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAE/F,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,EAAE,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAClC;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAOtD;AAID,8GAA8G;AAC9G,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOlD;AAED;0EAC0E;AAC1E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMrE"}
|
package/dist/format/config.js
CHANGED
|
@@ -10,4 +10,24 @@ export function parseConfig(config) {
|
|
|
10
10
|
return {};
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
+
const DEFAULT_DESCRIPTION = 'A Typebulb bulb.';
|
|
14
|
+
/** Strip inline markdown (links, emphasis, code, headings) for plain-text contexts like meta descriptions. */
|
|
15
|
+
export function stripMarkdown(text) {
|
|
16
|
+
return text
|
|
17
|
+
.replace(/\[([^\]]*)\]\([^)]*\)/g, '$1')
|
|
18
|
+
.replace(/\*\*([^*]+)\*\*/g, '$1')
|
|
19
|
+
.replace(/\*([^*]+)\*/g, '$1')
|
|
20
|
+
.replace(/`([^`]+)`/g, '$1')
|
|
21
|
+
.replace(/^#{1,6}\s+/gm, '');
|
|
22
|
+
}
|
|
23
|
+
/** Plain-text description from a `config.json` string: markdown stripped, single line, ≤200 chars.
|
|
24
|
+
* Logic duplicated in client/_worker.js (edge runtime, no build step). */
|
|
25
|
+
export function extractDescription(config) {
|
|
26
|
+
const desc = parseConfig(config ?? '').description?.trim();
|
|
27
|
+
if (!desc)
|
|
28
|
+
return DEFAULT_DESCRIPTION;
|
|
29
|
+
const stripped = stripMarkdown(desc);
|
|
30
|
+
const truncated = stripped.length > 200 ? stripped.slice(0, 197) + '...' : stripped;
|
|
31
|
+
return truncated.replace(/\n/g, ' ');
|
|
32
|
+
}
|
|
13
33
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../format/src/config.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAe/F,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAA;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../format/src/config.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAe/F,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAA;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,mBAAmB,GAAG,kBAAkB,CAAA;AAE9C,8GAA8G;AAC9G,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI;SACR,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC;SACvC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;SACjC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;SAC7B,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;SAC3B,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;AAChC,CAAC;AAED;0EAC0E;AAC1E,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAA;IAC1D,IAAI,CAAC,IAAI;QAAE,OAAO,mBAAmB,CAAA;IACrC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;IACnF,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACtC,CAAC"}
|