@verboo/code 0.9.2 → 0.9.4
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/cli.mjs +119 -153
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -174111,6 +174111,7 @@ function getStreamStats(state) {
|
|
|
174111
174111
|
// src/services/api/openaiShim.ts
|
|
174112
174112
|
var exports_openaiShim = {};
|
|
174113
174113
|
__export(exports_openaiShim, {
|
|
174114
|
+
setOpenAIShimRouterStatusHandler: () => setOpenAIShimRouterStatusHandler,
|
|
174114
174115
|
createOpenAIShimClient: () => createOpenAIShimClient
|
|
174115
174116
|
});
|
|
174116
174117
|
import { randomUUID as randomUUID4 } from "crypto";
|
|
@@ -174580,6 +174581,9 @@ function repairPossiblyTruncatedObjectJson(raw) {
|
|
|
174580
174581
|
return null;
|
|
174581
174582
|
}
|
|
174582
174583
|
}
|
|
174584
|
+
function setOpenAIShimRouterStatusHandler(fn) {
|
|
174585
|
+
routerStatusHandler = fn;
|
|
174586
|
+
}
|
|
174583
174587
|
async function* openaiStreamToAnthropic(response, model2, signal) {
|
|
174584
174588
|
const messageId = makeMessageId2();
|
|
174585
174589
|
let contentBlockIndex = 0;
|
|
@@ -174591,6 +174595,7 @@ async function* openaiStreamToAnthropic(response, model2, signal) {
|
|
|
174591
174595
|
let lastStopReason = null;
|
|
174592
174596
|
let hasEmittedFinalUsage = false;
|
|
174593
174597
|
let hasProcessedFinishReason = false;
|
|
174598
|
+
let routerWarmingActive = false;
|
|
174594
174599
|
const streamState = createStreamState();
|
|
174595
174600
|
yield {
|
|
174596
174601
|
type: "message_start",
|
|
@@ -174701,6 +174706,14 @@ async function* openaiStreamToAnthropic(response, model2, signal) {
|
|
|
174701
174706
|
} catch {
|
|
174702
174707
|
continue;
|
|
174703
174708
|
}
|
|
174709
|
+
const routerStatus = chunk.router_status;
|
|
174710
|
+
if (typeof routerStatus === "string") {
|
|
174711
|
+
if (routerStatus === "warming" && !routerWarmingActive) {
|
|
174712
|
+
routerWarmingActive = true;
|
|
174713
|
+
routerStatusHandler?.("warming-up");
|
|
174714
|
+
}
|
|
174715
|
+
continue;
|
|
174716
|
+
}
|
|
174704
174717
|
const inStreamError = chunk.error;
|
|
174705
174718
|
if (inStreamError && typeof inStreamError === "object") {
|
|
174706
174719
|
const message = typeof inStreamError.message === "string" ? inStreamError.message : "Provider returned an in-stream error";
|
|
@@ -174714,6 +174727,10 @@ async function* openaiStreamToAnthropic(response, model2, signal) {
|
|
|
174714
174727
|
throw APIError.generate(response.status ?? 200, errorPayload, message, response.headers);
|
|
174715
174728
|
}
|
|
174716
174729
|
const chunkUsage = convertChunkUsage(chunk.usage);
|
|
174730
|
+
if (routerWarmingActive && Array.isArray(chunk.choices) && chunk.choices.length > 0) {
|
|
174731
|
+
routerWarmingActive = false;
|
|
174732
|
+
routerStatusHandler?.(null);
|
|
174733
|
+
}
|
|
174717
174734
|
for (const choice of chunk.choices ?? []) {
|
|
174718
174735
|
const delta = choice.delta;
|
|
174719
174736
|
if (delta.reasoning_content != null && delta.reasoning_content !== "") {
|
|
@@ -175504,7 +175521,7 @@ function createOpenAIShimClient(options2) {
|
|
|
175504
175521
|
messages: beta.messages
|
|
175505
175522
|
};
|
|
175506
175523
|
}
|
|
175507
|
-
var GITHUB_429_MAX_RETRIES = 3, GITHUB_429_BASE_DELAY_SEC = 1, GITHUB_429_MAX_DELAY_SEC = 32, GEMINI_API_HOST = "generativelanguage.googleapis.com", COPILOT_HEADERS2, JSON_REPAIR_SUFFIXES, OpenAIShimStream;
|
|
175524
|
+
var GITHUB_429_MAX_RETRIES = 3, GITHUB_429_BASE_DELAY_SEC = 1, GITHUB_429_MAX_DELAY_SEC = 32, GEMINI_API_HOST = "generativelanguage.googleapis.com", COPILOT_HEADERS2, JSON_REPAIR_SUFFIXES, routerStatusHandler = null, OpenAIShimStream;
|
|
175508
175525
|
var init_openaiShim = __esm(() => {
|
|
175509
175526
|
init_sdk();
|
|
175510
175527
|
init_codexCredentials();
|
|
@@ -286039,7 +286056,7 @@ var init_coreSchemas = __esm(() => {
|
|
|
286039
286056
|
"unknown",
|
|
286040
286057
|
"max_output_tokens"
|
|
286041
286058
|
]));
|
|
286042
|
-
SDKStatusSchema = lazySchema(() => exports_external.union([exports_external.literal("compacting"), exports_external.null()]));
|
|
286059
|
+
SDKStatusSchema = lazySchema(() => exports_external.union([exports_external.literal("compacting"), exports_external.literal("warming-up"), exports_external.null()]));
|
|
286043
286060
|
SDKUserMessageContentSchema = lazySchema(() => exports_external.object({
|
|
286044
286061
|
type: exports_external.literal("user"),
|
|
286045
286062
|
message: APIUserMessagePlaceholder(),
|
|
@@ -382199,7 +382216,7 @@ function getAnthropicEnvMetadata() {
|
|
|
382199
382216
|
function getBuildAgeMinutes() {
|
|
382200
382217
|
if (false)
|
|
382201
382218
|
;
|
|
382202
|
-
const buildTime = new Date("2026-05-
|
|
382219
|
+
const buildTime = new Date("2026-05-19T20:11:05.617Z").getTime();
|
|
382203
382220
|
if (isNaN(buildTime))
|
|
382204
382221
|
return;
|
|
382205
382222
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -395897,7 +395914,7 @@ function stripCallerFieldFromAssistantMessage(message) {
|
|
|
395897
395914
|
id: block2.id,
|
|
395898
395915
|
name: block2.name,
|
|
395899
395916
|
input: block2.input,
|
|
395900
|
-
...
|
|
395917
|
+
...block2.extra_content ? { extra_content: block2.extra_content } : {}
|
|
395901
395918
|
};
|
|
395902
395919
|
})
|
|
395903
395920
|
}
|
|
@@ -396174,7 +396191,7 @@ function normalizeMessagesForAPI(messages, tools = []) {
|
|
|
396174
396191
|
...restBlock,
|
|
396175
396192
|
name: canonicalName,
|
|
396176
396193
|
input: normalizedInput,
|
|
396177
|
-
...
|
|
396194
|
+
...extra_content ? { extra_content } : {}
|
|
396178
396195
|
};
|
|
396179
396196
|
}
|
|
396180
396197
|
return {
|
|
@@ -396182,7 +396199,7 @@ function normalizeMessagesForAPI(messages, tools = []) {
|
|
|
396182
396199
|
id: block2.id,
|
|
396183
396200
|
name: canonicalName,
|
|
396184
396201
|
input: normalizedInput,
|
|
396185
|
-
...
|
|
396202
|
+
...block2.extra_content ? { extra_content: block2.extra_content } : {}
|
|
396186
396203
|
};
|
|
396187
396204
|
}
|
|
396188
396205
|
return block2;
|
|
@@ -398321,7 +398338,6 @@ Goal: Write your final plan to the plan file (the only file you can edit).
|
|
|
398321
398338
|
- End with the single verification command
|
|
398322
398339
|
- **Hard limit: 40 lines.** If the plan is longer, delete prose — not file paths.`;
|
|
398323
398340
|
var init_messages3 = __esm(() => {
|
|
398324
|
-
init_providers();
|
|
398325
398341
|
init_isObject();
|
|
398326
398342
|
init_last();
|
|
398327
398343
|
init_prompt2();
|
|
@@ -410430,7 +410446,7 @@ function buildPrimarySection() {
|
|
|
410430
410446
|
});
|
|
410431
410447
|
return [{
|
|
410432
410448
|
label: "Version",
|
|
410433
|
-
value: "0.9.
|
|
410449
|
+
value: "0.9.4"
|
|
410434
410450
|
}, {
|
|
410435
410451
|
label: "Session name",
|
|
410436
410452
|
value: nameValue
|
|
@@ -423357,7 +423373,7 @@ function getReleaseTagUrl(version2 = publicBuildVersion) {
|
|
|
423357
423373
|
return `${VERBOO_RELEASES_URL}/tag/v${normalizePublicVersion(version2)}`;
|
|
423358
423374
|
}
|
|
423359
423375
|
function getPublicBuildVersion() {
|
|
423360
|
-
return "0.9.
|
|
423376
|
+
return "0.9.4";
|
|
423361
423377
|
}
|
|
423362
423378
|
var import_semver9, VERBOO_RELEASES_URL = "https://github.com/verbeux-ai/code/releases", fallbackBuildVersion, publicBuildVersion;
|
|
423363
423379
|
var init_version = __esm(() => {
|
|
@@ -478705,7 +478721,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
478705
478721
|
var call63 = async () => {
|
|
478706
478722
|
return {
|
|
478707
478723
|
type: "text",
|
|
478708
|
-
value: `${"99.0.0"} (built ${"2026-05-
|
|
478724
|
+
value: `${"99.0.0"} (built ${"2026-05-19T20:11:05.617Z"})`
|
|
478709
478725
|
};
|
|
478710
478726
|
}, version2, version_default;
|
|
478711
478727
|
var init_version2 = __esm(() => {
|
|
@@ -505251,12 +505267,15 @@ async function* ask({
|
|
|
505251
505267
|
orphanedPermission,
|
|
505252
505268
|
...{}
|
|
505253
505269
|
});
|
|
505270
|
+
const { setOpenAIShimRouterStatusHandler: setOpenAIShimRouterStatusHandler2 } = await Promise.resolve().then(() => (init_openaiShim(), exports_openaiShim));
|
|
505271
|
+
setOpenAIShimRouterStatusHandler2(setSDKStatus ? (s) => setSDKStatus(s) : null);
|
|
505254
505272
|
try {
|
|
505255
505273
|
yield* engine.submitMessage(prompt, {
|
|
505256
505274
|
uuid: promptUuid,
|
|
505257
505275
|
isMeta
|
|
505258
505276
|
});
|
|
505259
505277
|
} finally {
|
|
505278
|
+
setOpenAIShimRouterStatusHandler2(null);
|
|
505260
505279
|
setReadFileCache(engine.getReadFileState());
|
|
505261
505280
|
}
|
|
505262
505281
|
}
|
|
@@ -508169,8 +508188,6 @@ var init_types15 = __esm(() => {
|
|
|
508169
508188
|
sandbox: SandboxSettingsSchema().optional(),
|
|
508170
508189
|
feedbackSurveyRate: exports_external.number().min(0).max(1).optional().describe("Probability (0–1) that the session quality survey appears when eligible. 0.05 is a reasonable starting point."),
|
|
508171
508190
|
spinnerTipsEnabled: exports_external.boolean().optional().describe("Whether to show tips in the spinner"),
|
|
508172
|
-
sponsoredTipsEnabled: exports_external.boolean().optional().describe("Whether to show sponsored partner tips alongside regular tips (default: true). Disabling does not affect regular tips."),
|
|
508173
|
-
sponsoredTipsFrequency: exports_external.number().int().min(0).optional().describe("Show at most 1 sponsored tip per N spinner picks. Default 10. Set 0 to disable sponsored tips."),
|
|
508174
508191
|
spinnerVerbs: exports_external.object({
|
|
508175
508192
|
mode: exports_external.enum(["append", "replace"]),
|
|
508176
508193
|
verbs: exports_external.array(exports_external.string())
|
|
@@ -509986,7 +510003,6 @@ var init_config7 = __esm(() => {
|
|
|
509986
510003
|
"diffTool",
|
|
509987
510004
|
"env",
|
|
509988
510005
|
"tipsHistory",
|
|
509989
|
-
"sponsoredTipsHistory",
|
|
509990
510006
|
"todoFeatureEnabled",
|
|
509991
510007
|
"showExpandedTodos",
|
|
509992
510008
|
"messageIdleNotifThresholdMs",
|
|
@@ -510868,7 +510884,7 @@ function printStartupScreen(modelOverride) {
|
|
|
510868
510884
|
const home = process.env.HOME || process.env.USERPROFILE || "";
|
|
510869
510885
|
const cwd2 = process.cwd();
|
|
510870
510886
|
const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
|
|
510871
|
-
const version3 = "0.9.
|
|
510887
|
+
const version3 = "0.9.4";
|
|
510872
510888
|
const bold2 = `${ESC4}1m`;
|
|
510873
510889
|
const PURPLE = rgb3(...ACCENT);
|
|
510874
510890
|
const SOFT = rgb3(...CREAM);
|
|
@@ -529135,7 +529151,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
529135
529151
|
function getSemverPart(version3) {
|
|
529136
529152
|
return `${import_semver12.major(version3, { loose: true })}.${import_semver12.minor(version3, { loose: true })}.${import_semver12.patch(version3, { loose: true })}`;
|
|
529137
529153
|
}
|
|
529138
|
-
function useUpdateNotification(updatedVersion, initialVersion = "0.9.
|
|
529154
|
+
function useUpdateNotification(updatedVersion, initialVersion = "0.9.4") {
|
|
529139
529155
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react221.useState(() => getSemverPart(initialVersion));
|
|
529140
529156
|
const [pendingNotification2, setPendingNotification] = import_react221.useState(null);
|
|
529141
529157
|
if (updatedVersion) {
|
|
@@ -529175,7 +529191,7 @@ function AutoUpdater({
|
|
|
529175
529191
|
return;
|
|
529176
529192
|
}
|
|
529177
529193
|
if (false) {}
|
|
529178
|
-
const currentVersion = "0.9.
|
|
529194
|
+
const currentVersion = "0.9.4";
|
|
529179
529195
|
const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
529180
529196
|
let latestVersion = await getLatestVersion(channel2);
|
|
529181
529197
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -529526,17 +529542,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
529526
529542
|
const maxVersion = await getMaxVersion();
|
|
529527
529543
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
529528
529544
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
529529
|
-
if (gte("0.9.
|
|
529530
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"0.9.
|
|
529545
|
+
if (gte("0.9.4", maxVersion)) {
|
|
529546
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"0.9.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
529531
529547
|
setUpdateAvailable(false);
|
|
529532
529548
|
return;
|
|
529533
529549
|
}
|
|
529534
529550
|
latest = maxVersion;
|
|
529535
529551
|
}
|
|
529536
|
-
const hasUpdate = latest && !gte("0.9.
|
|
529552
|
+
const hasUpdate = latest && !gte("0.9.4", latest) && !shouldSkipVersion(latest);
|
|
529537
529553
|
setUpdateAvailable(!!hasUpdate);
|
|
529538
529554
|
if (hasUpdate) {
|
|
529539
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.9.
|
|
529555
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.9.4"} -> ${latest}`);
|
|
529540
529556
|
}
|
|
529541
529557
|
};
|
|
529542
529558
|
$2[0] = t1;
|
|
@@ -529570,7 +529586,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
529570
529586
|
wrap: "truncate",
|
|
529571
529587
|
children: [
|
|
529572
529588
|
"currentVersion: ",
|
|
529573
|
-
"0.9.
|
|
529589
|
+
"0.9.4"
|
|
529574
529590
|
]
|
|
529575
529591
|
});
|
|
529576
529592
|
$2[3] = verbose;
|
|
@@ -543549,10 +543565,21 @@ function convertStatusMessage(msg) {
|
|
|
543549
543565
|
if (!msg.status) {
|
|
543550
543566
|
return null;
|
|
543551
543567
|
}
|
|
543568
|
+
let content;
|
|
543569
|
+
switch (msg.status) {
|
|
543570
|
+
case "compacting":
|
|
543571
|
+
content = "Compacting conversation…";
|
|
543572
|
+
break;
|
|
543573
|
+
case "warming-up":
|
|
543574
|
+
content = "Warming up vast.ai worker (cold start, ~1–3 min)…";
|
|
543575
|
+
break;
|
|
543576
|
+
default:
|
|
543577
|
+
content = `Status: ${msg.status}`;
|
|
543578
|
+
}
|
|
543552
543579
|
return {
|
|
543553
543580
|
type: "system",
|
|
543554
543581
|
subtype: "informational",
|
|
543555
|
-
content
|
|
543582
|
+
content,
|
|
543556
543583
|
level: "info",
|
|
543557
543584
|
uuid: msg.uuid,
|
|
543558
543585
|
timestamp: new Date().toISOString()
|
|
@@ -543684,6 +543711,7 @@ function useRemoteSession({
|
|
|
543684
543711
|
}, [setAppState]);
|
|
543685
543712
|
const responseTimeoutRef = import_react256.useRef(null);
|
|
543686
543713
|
const isCompactingRef = import_react256.useRef(false);
|
|
543714
|
+
const isWarmingUpRef = import_react256.useRef(false);
|
|
543687
543715
|
const managerRef = import_react256.useRef(null);
|
|
543688
543716
|
const hasUpdatedTitleRef = import_react256.useRef(false);
|
|
543689
543717
|
const sentUUIDsRef = import_react256.useRef(new BoundedUUIDSet(50));
|
|
@@ -543734,10 +543762,13 @@ function useRemoteSession({
|
|
|
543734
543762
|
}
|
|
543735
543763
|
if (sdkMessage.subtype === "status") {
|
|
543736
543764
|
const wasCompacting = isCompactingRef.current;
|
|
543765
|
+
const wasWarming = isWarmingUpRef.current;
|
|
543737
543766
|
isCompactingRef.current = sdkMessage.status === "compacting";
|
|
543738
|
-
|
|
543767
|
+
isWarmingUpRef.current = sdkMessage.status === "warming-up";
|
|
543768
|
+
if (wasCompacting && isCompactingRef.current)
|
|
543769
|
+
return;
|
|
543770
|
+
if (wasWarming && isWarmingUpRef.current)
|
|
543739
543771
|
return;
|
|
543740
|
-
}
|
|
543741
543772
|
}
|
|
543742
543773
|
if (sdkMessage.subtype === "compact_boundary") {
|
|
543743
543774
|
isCompactingRef.current = false;
|
|
@@ -543920,7 +543951,7 @@ function useRemoteSession({
|
|
|
543920
543951
|
}
|
|
543921
543952
|
}
|
|
543922
543953
|
if (!config3?.viewerOnly) {
|
|
543923
|
-
const timeoutMs = isCompactingRef.current ? COMPACTION_TIMEOUT_MS : RESPONSE_TIMEOUT_MS;
|
|
543954
|
+
const timeoutMs = isCompactingRef.current || isWarmingUpRef.current ? COMPACTION_TIMEOUT_MS : RESPONSE_TIMEOUT_MS;
|
|
543924
543955
|
responseTimeoutRef.current = setTimeout((setMessages2, manager2) => {
|
|
543925
543956
|
logForDebugging("[useRemoteSession] Response timeout - attempting reconnect");
|
|
543926
543957
|
const warningMessage = createSystemMessage("Remote session may be unresponsive. Attempting to reconnect…", "warning");
|
|
@@ -551010,71 +551041,6 @@ var init_usePromptsFromClaudeInChrome = __esm(() => {
|
|
|
551010
551041
|
}));
|
|
551011
551042
|
});
|
|
551012
551043
|
|
|
551013
|
-
// src/services/tips/sponsoredTips.ts
|
|
551014
|
-
function sponsoredTipsEnabled() {
|
|
551015
|
-
const settings = getSettings_DEPRECATED();
|
|
551016
|
-
if (settings.sponsoredTipsEnabled === false)
|
|
551017
|
-
return false;
|
|
551018
|
-
if (settings.sponsoredTipsFrequency === 0)
|
|
551019
|
-
return false;
|
|
551020
|
-
return true;
|
|
551021
|
-
}
|
|
551022
|
-
function getSponsoredTipsFrequency() {
|
|
551023
|
-
const settings = getSettings_DEPRECATED();
|
|
551024
|
-
const f = settings.sponsoredTipsFrequency;
|
|
551025
|
-
if (typeof f === "number" && f >= 0)
|
|
551026
|
-
return f;
|
|
551027
|
-
return DEFAULT_FREQUENCY;
|
|
551028
|
-
}
|
|
551029
|
-
function renderSponsoredTip(sponsor, body, ctx) {
|
|
551030
|
-
const green2 = color("success", ctx.theme);
|
|
551031
|
-
const label = sponsor.label ?? "Sponsored";
|
|
551032
|
-
const badge = green2(`${label} · ${sponsor.name}`);
|
|
551033
|
-
const text2 = green2(body);
|
|
551034
|
-
const url3 = sponsor.url ? ` ${source_default.dim(sponsor.url)}` : "";
|
|
551035
|
-
return `${badge} — ${text2}${url3}`;
|
|
551036
|
-
}
|
|
551037
|
-
var DEFAULT_FREQUENCY = 10, ATOMIC, sponsoredTips;
|
|
551038
|
-
var init_sponsoredTips = __esm(() => {
|
|
551039
|
-
init_source2();
|
|
551040
|
-
init_color();
|
|
551041
|
-
init_settings2();
|
|
551042
|
-
ATOMIC = {
|
|
551043
|
-
name: "Atomic Chat",
|
|
551044
|
-
url: "https://atomic.chat/"
|
|
551045
|
-
};
|
|
551046
|
-
sponsoredTips = [
|
|
551047
|
-
{
|
|
551048
|
-
id: "atomic-setup-local",
|
|
551049
|
-
sponsor: ATOMIC,
|
|
551050
|
-
content: async (ctx) => renderSponsoredTip(ATOMIC, "Setup free local models with Atomic Chat", ctx),
|
|
551051
|
-
cooldownSessions: 20,
|
|
551052
|
-
isRelevant: async () => sponsoredTipsEnabled()
|
|
551053
|
-
},
|
|
551054
|
-
{
|
|
551055
|
-
id: "atomic-free-access",
|
|
551056
|
-
sponsor: ATOMIC,
|
|
551057
|
-
content: async (ctx) => renderSponsoredTip(ATOMIC, "Atomic Chat local models give you free access to OpenClaude", ctx),
|
|
551058
|
-
cooldownSessions: 20,
|
|
551059
|
-
isRelevant: async () => sponsoredTipsEnabled()
|
|
551060
|
-
},
|
|
551061
|
-
{
|
|
551062
|
-
id: "atomic-turboquant-context",
|
|
551063
|
-
sponsor: ATOMIC,
|
|
551064
|
-
content: async (ctx) => renderSponsoredTip(ATOMIC, "Increase your context window with TurboQuant in Atomic Chat local models", ctx),
|
|
551065
|
-
cooldownSessions: 20,
|
|
551066
|
-
isRelevant: async () => sponsoredTipsEnabled()
|
|
551067
|
-
},
|
|
551068
|
-
{
|
|
551069
|
-
id: "atomic-ram-savings",
|
|
551070
|
-
sponsor: ATOMIC,
|
|
551071
|
-
content: async (ctx) => renderSponsoredTip(ATOMIC, "30% less RAM usage with Atomic Chat local models", ctx),
|
|
551072
|
-
cooldownSessions: 20,
|
|
551073
|
-
isRelevant: async () => sponsoredTipsEnabled()
|
|
551074
|
-
}
|
|
551075
|
-
];
|
|
551076
|
-
});
|
|
551077
|
-
|
|
551078
551044
|
// src/services/tips/tipHistory.ts
|
|
551079
551045
|
function recordTipShown(tipId) {
|
|
551080
551046
|
const numStartups = getGlobalConfig().numStartups;
|
|
@@ -551092,26 +551058,6 @@ function getSessionsSinceLastShown(tipId) {
|
|
|
551092
551058
|
return Infinity;
|
|
551093
551059
|
return config3.numStartups - lastShown;
|
|
551094
551060
|
}
|
|
551095
|
-
function recordSponsoredTipShown() {
|
|
551096
|
-
const numStartups = getGlobalConfig().numStartups;
|
|
551097
|
-
saveGlobalConfig((c6) => {
|
|
551098
|
-
const prev = c6.sponsoredTipsHistory ?? { lastShownAt: 0, totalShown: 0 };
|
|
551099
|
-
return {
|
|
551100
|
-
...c6,
|
|
551101
|
-
sponsoredTipsHistory: {
|
|
551102
|
-
lastShownAt: numStartups,
|
|
551103
|
-
totalShown: prev.totalShown + 1
|
|
551104
|
-
}
|
|
551105
|
-
};
|
|
551106
|
-
});
|
|
551107
|
-
}
|
|
551108
|
-
function getSessionsSinceLastSponsored() {
|
|
551109
|
-
const config3 = getGlobalConfig();
|
|
551110
|
-
const lastShown = config3.sponsoredTipsHistory?.lastShownAt;
|
|
551111
|
-
if (!lastShown)
|
|
551112
|
-
return Infinity;
|
|
551113
|
-
return config3.numStartups - lastShown;
|
|
551114
|
-
}
|
|
551115
551061
|
var init_tipHistory = __esm(() => {
|
|
551116
551062
|
init_config7();
|
|
551117
551063
|
});
|
|
@@ -551354,7 +551300,7 @@ async function getRelevantTips(context2) {
|
|
|
551354
551300
|
if (override?.excludeDefault && customTips.length > 0) {
|
|
551355
551301
|
return customTips;
|
|
551356
551302
|
}
|
|
551357
|
-
const tips = [...externalTips, ...internalOnlyTips
|
|
551303
|
+
const tips = [...externalTips, ...internalOnlyTips];
|
|
551358
551304
|
const isRelevant = await Promise.all(tips.map((_) => _.isRelevant(context2)));
|
|
551359
551305
|
const filtered = tips.filter((_, index) => isRelevant[index]).filter((_) => getSessionsSinceLastShown(_.id) >= _.cooldownSessions);
|
|
551360
551306
|
return [...filtered, ...customTips];
|
|
@@ -551388,7 +551334,6 @@ var init_tipRegistry = __esm(() => {
|
|
|
551388
551334
|
init_growthbook();
|
|
551389
551335
|
init_overageCreditGrant();
|
|
551390
551336
|
init_referral();
|
|
551391
|
-
init_sponsoredTips();
|
|
551392
551337
|
init_tipHistory();
|
|
551393
551338
|
externalTips = [
|
|
551394
551339
|
{
|
|
@@ -551861,12 +551806,6 @@ function selectTipWithLongestTimeSinceShown(availableTips) {
|
|
|
551861
551806
|
tipsWithSessions.sort((a2, b) => b.sessions - a2.sessions);
|
|
551862
551807
|
return tipsWithSessions[0]?.tip;
|
|
551863
551808
|
}
|
|
551864
|
-
function isSponsoredSlotEligible() {
|
|
551865
|
-
const frequency = getSponsoredTipsFrequency();
|
|
551866
|
-
if (frequency === 0)
|
|
551867
|
-
return false;
|
|
551868
|
-
return getSessionsSinceLastSponsored() >= frequency;
|
|
551869
|
-
}
|
|
551870
551809
|
async function getTipToShowOnSpinner(context2) {
|
|
551871
551810
|
if (getSettings_DEPRECATED().spinnerTipsEnabled === false) {
|
|
551872
551811
|
return;
|
|
@@ -551875,20 +551814,10 @@ async function getTipToShowOnSpinner(context2) {
|
|
|
551875
551814
|
if (tips.length === 0) {
|
|
551876
551815
|
return;
|
|
551877
551816
|
}
|
|
551878
|
-
|
|
551879
|
-
const regular = tips.filter((t) => !t.sponsor);
|
|
551880
|
-
if (sponsored.length > 0 && isSponsoredSlotEligible()) {
|
|
551881
|
-
const pick3 = selectTipWithLongestTimeSinceShown(sponsored);
|
|
551882
|
-
if (pick3)
|
|
551883
|
-
return pick3;
|
|
551884
|
-
}
|
|
551885
|
-
return selectTipWithLongestTimeSinceShown(regular);
|
|
551817
|
+
return selectTipWithLongestTimeSinceShown(tips);
|
|
551886
551818
|
}
|
|
551887
551819
|
function recordShownTip(tip) {
|
|
551888
551820
|
recordTipShown(tip.id);
|
|
551889
|
-
if (tip.sponsor) {
|
|
551890
|
-
recordSponsoredTipShown();
|
|
551891
|
-
}
|
|
551892
551821
|
logEvent("tengu_tip_shown", {
|
|
551893
551822
|
tipIdLength: tip.id,
|
|
551894
551823
|
cooldownSessions: tip.cooldownSessions
|
|
@@ -551896,7 +551825,6 @@ function recordShownTip(tip) {
|
|
|
551896
551825
|
}
|
|
551897
551826
|
var init_tipScheduler = __esm(() => {
|
|
551898
551827
|
init_settings2();
|
|
551899
|
-
init_sponsoredTips();
|
|
551900
551828
|
init_tipHistory();
|
|
551901
551829
|
init_tipRegistry();
|
|
551902
551830
|
});
|
|
@@ -557898,6 +557826,44 @@ function REPL({
|
|
|
557898
557826
|
const [spinnerMessage, setSpinnerMessage] = import_react314.useState(null);
|
|
557899
557827
|
const [spinnerColor, setSpinnerColor] = import_react314.useState(null);
|
|
557900
557828
|
const [spinnerShimmerColor, setSpinnerShimmerColor] = import_react314.useState(null);
|
|
557829
|
+
import_react314.useEffect(() => {
|
|
557830
|
+
const warmingMessages = [
|
|
557831
|
+
"\uD83D\uDD25 Verboo Intelligence is firing up the engines",
|
|
557832
|
+
"☕ Verboo Intelligence is brewing a fresh cup",
|
|
557833
|
+
"\uD83E\uDDE0 Verboo Intelligence is waking up the neurons",
|
|
557834
|
+
"\uD83D\uDE80 Verboo Intelligence is fueling the rockets",
|
|
557835
|
+
"⚡ Verboo Intelligence is charging its capacitors",
|
|
557836
|
+
"\uD83E\uDDBE Verboo Intelligence is stretching its muscles",
|
|
557837
|
+
"✨ Verboo Intelligence is summoning brilliance",
|
|
557838
|
+
"\uD83C\uDFA9 Verboo Intelligence is putting on the thinking cap",
|
|
557839
|
+
"\uD83E\uDE84 Verboo Intelligence is polishing the wand",
|
|
557840
|
+
"\uD83D\uDD2E Verboo Intelligence is polishing the crystal ball",
|
|
557841
|
+
"\uD83D\uDEE0️ Verboo Intelligence is calibrating sensors",
|
|
557842
|
+
"\uD83D\uDCDA Verboo Intelligence is loading wisdom modules",
|
|
557843
|
+
"\uD83C\uDFAF Verboo Intelligence is locking onto the target",
|
|
557844
|
+
"\uD83C\uDFAC Verboo Intelligence is setting the scene",
|
|
557845
|
+
"\uD83C\uDFAA Verboo Intelligence is rolling out the red carpet"
|
|
557846
|
+
];
|
|
557847
|
+
let cancelled = false;
|
|
557848
|
+
Promise.resolve().then(() => (init_openaiShim(), exports_openaiShim)).then((mod) => {
|
|
557849
|
+
if (cancelled)
|
|
557850
|
+
return;
|
|
557851
|
+
mod.setOpenAIShimRouterStatusHandler((status2) => {
|
|
557852
|
+
if (status2 === "warming-up") {
|
|
557853
|
+
const msg = warmingMessages[Math.floor(Math.random() * warmingMessages.length)];
|
|
557854
|
+
setSpinnerMessage(msg);
|
|
557855
|
+
} else {
|
|
557856
|
+
setSpinnerMessage(null);
|
|
557857
|
+
}
|
|
557858
|
+
});
|
|
557859
|
+
});
|
|
557860
|
+
return () => {
|
|
557861
|
+
cancelled = true;
|
|
557862
|
+
Promise.resolve().then(() => (init_openaiShim(), exports_openaiShim)).then((mod) => {
|
|
557863
|
+
mod.setOpenAIShimRouterStatusHandler(null);
|
|
557864
|
+
});
|
|
557865
|
+
};
|
|
557866
|
+
}, []);
|
|
557901
557867
|
const [isMessageSelectorVisible, setIsMessageSelectorVisible] = import_react314.useState(false);
|
|
557902
557868
|
const [messageSelectorPreselect, setMessageSelectorPreselect] = import_react314.useState(undefined);
|
|
557903
557869
|
const [showCostDialog, setShowCostDialog] = import_react314.useState(false);
|
|
@@ -562065,7 +562031,7 @@ function WelcomeV2() {
|
|
|
562065
562031
|
dimColor: true,
|
|
562066
562032
|
children: [
|
|
562067
562033
|
"v",
|
|
562068
|
-
"0.9.
|
|
562034
|
+
"0.9.4",
|
|
562069
562035
|
" "
|
|
562070
562036
|
]
|
|
562071
562037
|
})
|
|
@@ -562252,7 +562218,7 @@ function WelcomeV2() {
|
|
|
562252
562218
|
dimColor: true,
|
|
562253
562219
|
children: [
|
|
562254
562220
|
"v",
|
|
562255
|
-
"0.9.
|
|
562221
|
+
"0.9.4",
|
|
562256
562222
|
" "
|
|
562257
562223
|
]
|
|
562258
562224
|
})
|
|
@@ -562468,7 +562434,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
562468
562434
|
dimColor: true,
|
|
562469
562435
|
children: [
|
|
562470
562436
|
"v",
|
|
562471
|
-
"0.9.
|
|
562437
|
+
"0.9.4",
|
|
562472
562438
|
" "
|
|
562473
562439
|
]
|
|
562474
562440
|
});
|
|
@@ -562677,7 +562643,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
562677
562643
|
dimColor: true,
|
|
562678
562644
|
children: [
|
|
562679
562645
|
"v",
|
|
562680
|
-
"0.9.
|
|
562646
|
+
"0.9.4",
|
|
562681
562647
|
" "
|
|
562682
562648
|
]
|
|
562683
562649
|
});
|
|
@@ -580089,7 +580055,7 @@ __export(exports_update, {
|
|
|
580089
580055
|
async function update() {
|
|
580090
580056
|
if (getAPIProvider() !== "firstParty") {
|
|
580091
580057
|
writeToStdout(source_default.yellow(`Auto-update is not available for third-party provider builds.
|
|
580092
|
-
`) + `Current version: ${"0.9.
|
|
580058
|
+
`) + `Current version: ${"0.9.4"}
|
|
580093
580059
|
|
|
580094
580060
|
` + `To update, reinstall from npm:
|
|
580095
580061
|
` + source_default.bold(` npm install -g ${"@verboo/code"}@latest`) + `
|
|
@@ -580100,7 +580066,7 @@ async function update() {
|
|
|
580100
580066
|
await gracefulShutdown(0);
|
|
580101
580067
|
}
|
|
580102
580068
|
logEvent("tengu_update_check", {});
|
|
580103
|
-
writeToStdout(`Current version: ${"0.9.
|
|
580069
|
+
writeToStdout(`Current version: ${"0.9.4"}
|
|
580104
580070
|
`);
|
|
580105
580071
|
const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
580106
580072
|
writeToStdout(`Checking for updates to ${channel2} version...
|
|
@@ -580185,8 +580151,8 @@ async function update() {
|
|
|
580185
580151
|
writeToStdout(`Verboo Code is managed by Homebrew.
|
|
580186
580152
|
`);
|
|
580187
580153
|
const latest = await getLatestVersion(channel2);
|
|
580188
|
-
if (latest && !gte("0.9.
|
|
580189
|
-
writeToStdout(`Update available: ${"0.9.
|
|
580154
|
+
if (latest && !gte("0.9.4", latest)) {
|
|
580155
|
+
writeToStdout(`Update available: ${"0.9.4"} → ${latest}
|
|
580190
580156
|
`);
|
|
580191
580157
|
writeToStdout(`
|
|
580192
580158
|
`);
|
|
@@ -580202,8 +580168,8 @@ async function update() {
|
|
|
580202
580168
|
writeToStdout(`Verboo Code is managed by winget.
|
|
580203
580169
|
`);
|
|
580204
580170
|
const latest = await getLatestVersion(channel2);
|
|
580205
|
-
if (latest && !gte("0.9.
|
|
580206
|
-
writeToStdout(`Update available: ${"0.9.
|
|
580171
|
+
if (latest && !gte("0.9.4", latest)) {
|
|
580172
|
+
writeToStdout(`Update available: ${"0.9.4"} → ${latest}
|
|
580207
580173
|
`);
|
|
580208
580174
|
writeToStdout(`
|
|
580209
580175
|
`);
|
|
@@ -580219,8 +580185,8 @@ async function update() {
|
|
|
580219
580185
|
writeToStdout(`Verboo Code is managed by apk.
|
|
580220
580186
|
`);
|
|
580221
580187
|
const latest = await getLatestVersion(channel2);
|
|
580222
|
-
if (latest && !gte("0.9.
|
|
580223
|
-
writeToStdout(`Update available: ${"0.9.
|
|
580188
|
+
if (latest && !gte("0.9.4", latest)) {
|
|
580189
|
+
writeToStdout(`Update available: ${"0.9.4"} → ${latest}
|
|
580224
580190
|
`);
|
|
580225
580191
|
writeToStdout(`
|
|
580226
580192
|
`);
|
|
@@ -580273,11 +580239,11 @@ async function update() {
|
|
|
580273
580239
|
`);
|
|
580274
580240
|
await gracefulShutdown(1);
|
|
580275
580241
|
}
|
|
580276
|
-
if (result.latestVersion === "0.9.
|
|
580277
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.9.
|
|
580242
|
+
if (result.latestVersion === "0.9.4") {
|
|
580243
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.9.4"})`) + `
|
|
580278
580244
|
`);
|
|
580279
580245
|
} else {
|
|
580280
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.9.
|
|
580246
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.9.4"} to version ${result.latestVersion}`) + `
|
|
580281
580247
|
`);
|
|
580282
580248
|
await regenerateCompletionCache();
|
|
580283
580249
|
}
|
|
@@ -580337,12 +580303,12 @@ async function update() {
|
|
|
580337
580303
|
`);
|
|
580338
580304
|
await gracefulShutdown(1);
|
|
580339
580305
|
}
|
|
580340
|
-
if (latestVersion === "0.9.
|
|
580341
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.9.
|
|
580306
|
+
if (latestVersion === "0.9.4") {
|
|
580307
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.9.4"})`) + `
|
|
580342
580308
|
`);
|
|
580343
580309
|
await gracefulShutdown(0);
|
|
580344
580310
|
}
|
|
580345
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"0.9.
|
|
580311
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"0.9.4"})
|
|
580346
580312
|
`);
|
|
580347
580313
|
writeToStdout(`Installing update...
|
|
580348
580314
|
`);
|
|
@@ -580387,7 +580353,7 @@ async function update() {
|
|
|
580387
580353
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
580388
580354
|
switch (status2) {
|
|
580389
580355
|
case "success":
|
|
580390
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.9.
|
|
580356
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.9.4"} to version ${latestVersion}`) + `
|
|
580391
580357
|
`);
|
|
580392
580358
|
await regenerateCompletionCache();
|
|
580393
580359
|
break;
|
|
@@ -581642,7 +581608,7 @@ ${customInstructions}` : customInstructions;
|
|
|
581642
581608
|
is_native_binary: isInBundledMode()
|
|
581643
581609
|
});
|
|
581644
581610
|
logMemoryDiagnostics("start", {
|
|
581645
|
-
version: "0.9.
|
|
581611
|
+
version: "0.9.4",
|
|
581646
581612
|
debug: debug2,
|
|
581647
581613
|
debugToStderr,
|
|
581648
581614
|
print: print ?? false,
|
|
@@ -582448,7 +582414,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
582448
582414
|
pendingHookMessages
|
|
582449
582415
|
}, renderAndRun);
|
|
582450
582416
|
}
|
|
582451
|
-
}).version(`0.9.
|
|
582417
|
+
}).version(`0.9.4 (${cliDesc})`, "-v, --version", "Output the version number");
|
|
582452
582418
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
582453
582419
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
582454
582420
|
if (canUserConfigureAdvisor()) {
|
|
@@ -583022,7 +582988,7 @@ if (false) {}
|
|
|
583022
582988
|
async function main2() {
|
|
583023
582989
|
const args = process.argv.slice(2);
|
|
583024
582990
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
583025
|
-
console.log(`${"0.9.
|
|
582991
|
+
console.log(`${"0.9.4"} (Verboo Code)`);
|
|
583026
582992
|
return;
|
|
583027
582993
|
}
|
|
583028
582994
|
if (!IS_VERBOO_CLI && args.includes("--provider")) {
|
|
@@ -583196,4 +583162,4 @@ async function main2() {
|
|
|
583196
583162
|
}
|
|
583197
583163
|
main2();
|
|
583198
583164
|
|
|
583199
|
-
//# debugId=
|
|
583165
|
+
//# debugId=94DCB71FC361235664756E2164756E21
|