mirror of
http://10.0.2.1:3031/sauer/claude-code.git
synced 2026-06-30 17:06:57 +10:00
210 lines
23 KiB
TypeScript
210 lines
23 KiB
TypeScript
|
|
import { c as _c } from "react/compiler-runtime";
|
||
|
|
import React, { useMemo, useState } from 'react';
|
||
|
|
import type { CommandResultDisplay, LocalJSXCommandContext } from '../../commands.js';
|
||
|
|
import { type OptionWithDescription, Select } from '../../components/CustomSelect/select.js';
|
||
|
|
import { Dialog } from '../../components/design-system/Dialog.js';
|
||
|
|
import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js';
|
||
|
|
import { logEvent } from '../../services/analytics/index.js';
|
||
|
|
import { useClaudeAiLimits } from '../../services/claudeAiLimitsHook.js';
|
||
|
|
import type { ToolUseContext } from '../../Tool.js';
|
||
|
|
import type { LocalJSXCommandOnDone } from '../../types/command.js';
|
||
|
|
import { getOauthAccountInfo, getRateLimitTier, getSubscriptionType } from '../../utils/auth.js';
|
||
|
|
import { hasClaudeAiBillingAccess } from '../../utils/billing.js';
|
||
|
|
import { call as extraUsageCall } from '../extra-usage/extra-usage.js';
|
||
|
|
import { extraUsage } from '../extra-usage/index.js';
|
||
|
|
import upgrade from '../upgrade/index.js';
|
||
|
|
import { call as upgradeCall } from '../upgrade/upgrade.js';
|
||
|
|
type RateLimitOptionsMenuOptionType = 'upgrade' | 'extra-usage' | 'cancel';
|
||
|
|
type RateLimitOptionsMenuProps = {
|
||
|
|
onDone: (result?: string, options?: {
|
||
|
|
display?: CommandResultDisplay | undefined;
|
||
|
|
} | undefined) => void;
|
||
|
|
context: ToolUseContext & LocalJSXCommandContext;
|
||
|
|
};
|
||
|
|
function RateLimitOptionsMenu(t0) {
|
||
|
|
const $ = _c(25);
|
||
|
|
const {
|
||
|
|
onDone,
|
||
|
|
context
|
||
|
|
} = t0;
|
||
|
|
const [subCommandJSX, setSubCommandJSX] = useState(null);
|
||
|
|
const claudeAiLimits = useClaudeAiLimits();
|
||
|
|
let t1;
|
||
|
|
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t1 = getSubscriptionType();
|
||
|
|
$[0] = t1;
|
||
|
|
} else {
|
||
|
|
t1 = $[0];
|
||
|
|
}
|
||
|
|
const subscriptionType = t1;
|
||
|
|
let t2;
|
||
|
|
if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t2 = getRateLimitTier();
|
||
|
|
$[1] = t2;
|
||
|
|
} else {
|
||
|
|
t2 = $[1];
|
||
|
|
}
|
||
|
|
const rateLimitTier = t2;
|
||
|
|
const hasExtraUsageEnabled = getOauthAccountInfo()?.hasExtraUsageEnabled === true;
|
||
|
|
const isMax = subscriptionType === "max";
|
||
|
|
const isMax20x = isMax && rateLimitTier === "default_claude_max_20x";
|
||
|
|
const isTeamOrEnterprise = subscriptionType === "team" || subscriptionType === "enterprise";
|
||
|
|
const buyFirst = getFeatureValue_CACHED_MAY_BE_STALE("tengu_jade_anvil_4", false);
|
||
|
|
let t3;
|
||
|
|
bb0: {
|
||
|
|
let actionOptions;
|
||
|
|
if ($[2] !== claudeAiLimits.overageDisabledReason || $[3] !== claudeAiLimits.overageStatus) {
|
||
|
|
actionOptions = [];
|
||
|
|
if (extraUsage.isEnabled()) {
|
||
|
|
const hasBillingAccess = hasClaudeAiBillingAccess();
|
||
|
|
const needsToRequestFromAdmin = isTeamOrEnterprise && !hasBillingAccess;
|
||
|
|
const isOrgSpendCapDepleted = claudeAiLimits.overageDisabledReason === "out_of_credits" || claudeAiLimits.overageDisabledReason === "org_level_disabled_until" || claudeAiLimits.overageDisabledReason === "org_service_zero_credit_limit";
|
||
|
|
if (needsToRequestFromAdmin && isOrgSpendCapDepleted) {} else {
|
||
|
|
const isOverageState = claudeAiLimits.overageStatus === "rejected" || claudeAiLimits.overageStatus === "allowed_warning";
|
||
|
|
let label;
|
||
|
|
if (needsToRequestFromAdmin) {
|
||
|
|
label = isOverageState ? "Request more" : "Request extra usage";
|
||
|
|
} else {
|
||
|
|
label = hasExtraUsageEnabled ? "Add funds to continue with extra usage" : "Switch to extra usage";
|
||
|
|
}
|
||
|
|
let t4;
|
||
|
|
if ($[5] !== label) {
|
||
|
|
t4 = {
|
||
|
|
label,
|
||
|
|
value: "extra-usage"
|
||
|
|
};
|
||
|
|
$[5] = label;
|
||
|
|
$[6] = t4;
|
||
|
|
} else {
|
||
|
|
t4 = $[6];
|
||
|
|
}
|
||
|
|
actionOptions.push(t4);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (!isMax20x && !isTeamOrEnterprise && upgrade.isEnabled()) {
|
||
|
|
let t4;
|
||
|
|
if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t4 = {
|
||
|
|
label: "Upgrade your plan",
|
||
|
|
value: "upgrade"
|
||
|
|
};
|
||
|
|
$[7] = t4;
|
||
|
|
} else {
|
||
|
|
t4 = $[7];
|
||
|
|
}
|
||
|
|
actionOptions.push(t4);
|
||
|
|
}
|
||
|
|
$[2] = claudeAiLimits.overageDisabledReason;
|
||
|
|
$[3] = claudeAiLimits.overageStatus;
|
||
|
|
$[4] = actionOptions;
|
||
|
|
} else {
|
||
|
|
actionOptions = $[4];
|
||
|
|
}
|
||
|
|
let t4;
|
||
|
|
if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t4 = {
|
||
|
|
label: "Stop and wait for limit to reset",
|
||
|
|
value: "cancel"
|
||
|
|
};
|
||
|
|
$[8] = t4;
|
||
|
|
} else {
|
||
|
|
t4 = $[8];
|
||
|
|
}
|
||
|
|
const cancelOption = t4;
|
||
|
|
if (buyFirst) {
|
||
|
|
let t5;
|
||
|
|
if ($[9] !== actionOptions) {
|
||
|
|
t5 = [...actionOptions, cancelOption];
|
||
|
|
$[9] = actionOptions;
|
||
|
|
$[10] = t5;
|
||
|
|
} else {
|
||
|
|
t5 = $[10];
|
||
|
|
}
|
||
|
|
t3 = t5;
|
||
|
|
break bb0;
|
||
|
|
}
|
||
|
|
let t5;
|
||
|
|
if ($[11] !== actionOptions) {
|
||
|
|
t5 = [cancelOption, ...actionOptions];
|
||
|
|
$[11] = actionOptions;
|
||
|
|
$[12] = t5;
|
||
|
|
} else {
|
||
|
|
t5 = $[12];
|
||
|
|
}
|
||
|
|
t3 = t5;
|
||
|
|
}
|
||
|
|
const options = t3;
|
||
|
|
let t4;
|
||
|
|
if ($[13] !== onDone) {
|
||
|
|
t4 = function handleCancel() {
|
||
|
|
logEvent("tengu_rate_limit_options_menu_cancel", {});
|
||
|
|
onDone(undefined, {
|
||
|
|
display: "skip"
|
||
|
|
});
|
||
|
|
};
|
||
|
|
$[13] = onDone;
|
||
|
|
$[14] = t4;
|
||
|
|
} else {
|
||
|
|
t4 = $[14];
|
||
|
|
}
|
||
|
|
const handleCancel = t4;
|
||
|
|
let t5;
|
||
|
|
if ($[15] !== context || $[16] !== handleCancel || $[17] !== onDone) {
|
||
|
|
t5 = function handleSelect(value) {
|
||
|
|
if (value === "upgrade") {
|
||
|
|
logEvent("tengu_rate_limit_options_menu_select_upgrade", {});
|
||
|
|
upgradeCall(onDone, context).then(jsx => {
|
||
|
|
if (jsx) {
|
||
|
|
setSubCommandJSX(jsx);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
} else {
|
||
|
|
if (value === "extra-usage") {
|
||
|
|
logEvent("tengu_rate_limit_options_menu_select_extra_usage", {});
|
||
|
|
extraUsageCall(onDone, context).then(jsx_0 => {
|
||
|
|
if (jsx_0) {
|
||
|
|
setSubCommandJSX(jsx_0);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
} else {
|
||
|
|
if (value === "cancel") {
|
||
|
|
handleCancel();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
};
|
||
|
|
$[15] = context;
|
||
|
|
$[16] = handleCancel;
|
||
|
|
$[17] = onDone;
|
||
|
|
$[18] = t5;
|
||
|
|
} else {
|
||
|
|
t5 = $[18];
|
||
|
|
}
|
||
|
|
const handleSelect = t5;
|
||
|
|
if (subCommandJSX) {
|
||
|
|
return subCommandJSX;
|
||
|
|
}
|
||
|
|
let t6;
|
||
|
|
if ($[19] !== handleSelect || $[20] !== options) {
|
||
|
|
t6 = <Select options={options} onChange={handleSelect} visibleOptionCount={options.length} />;
|
||
|
|
$[19] = handleSelect;
|
||
|
|
$[20] = options;
|
||
|
|
$[21] = t6;
|
||
|
|
} else {
|
||
|
|
t6 = $[21];
|
||
|
|
}
|
||
|
|
let t7;
|
||
|
|
if ($[22] !== handleCancel || $[23] !== t6) {
|
||
|
|
t7 = <Dialog title="What do you want to do?" onCancel={handleCancel} color="suggestion">{t6}</Dialog>;
|
||
|
|
$[22] = handleCancel;
|
||
|
|
$[23] = t6;
|
||
|
|
$[24] = t7;
|
||
|
|
} else {
|
||
|
|
t7 = $[24];
|
||
|
|
}
|
||
|
|
return t7;
|
||
|
|
}
|
||
|
|
export async function call(onDone: LocalJSXCommandOnDone, context: ToolUseContext & LocalJSXCommandContext): Promise<React.ReactNode> {
|
||
|
|
return <RateLimitOptionsMenu onDone={onDone} context={context} />;
|
||
|
|
}
|
||
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsIkNvbW1hbmRSZXN1bHREaXNwbGF5IiwiTG9jYWxKU1hDb21tYW5kQ29udGV4dCIsIk9wdGlvbldpdGhEZXNjcmlwdGlvbiIsIlNlbGVjdCIsIkRpYWxvZyIsImdldEZlYXR1cmVWYWx1ZV9DQUNIRURfTUFZX0JFX1NUQUxFIiwibG9nRXZlbnQiLCJ1c2VDbGF1ZGVBaUxpbWl0cyIsIlRvb2xVc2VDb250ZXh0IiwiTG9jYWxKU1hDb21tYW5kT25Eb25lIiwiZ2V0T2F1dGhBY2NvdW50SW5mbyIsImdldFJhdGVMaW1pdFRpZXIiLCJnZXRTdWJzY3JpcHRpb25UeXBlIiwiaGFzQ2xhdWRlQWlCaWxsaW5nQWNjZXNzIiwiY2FsbCIsImV4dHJhVXNhZ2VDYWxsIiwiZXh0cmFVc2FnZSIsInVwZ3JhZGUiLCJ1cGdyYWRlQ2FsbCIsIlJhdGVMaW1pdE9wdGlvbnNNZW51T3B0aW9uVHlwZSIsIlJhdGVMaW1pdE9wdGlvbnNNZW51UHJvcHMiLCJvbkRvbmUiLCJyZXN1bHQiLCJvcHRpb25zIiwiZGlzcGxheSIsImNvbnRleHQiLCJSYXRlTGltaXRPcHRpb25zTWVudSIsInQwIiwiJCIsIl9jIiwic3ViQ29tbWFuZEpTWCIsInNldFN1YkNvbW1hbmRKU1giLCJjbGF1ZGVBaUxpbWl0cyIsInQxIiwiU3ltYm9sIiwiZm9yIiwic3Vic2NyaXB0aW9uVHlwZSIsInQyIiwicmF0ZUxpbWl0VGllciIsImhhc0V4dHJhVXNhZ2VFbmFibGVkIiwiaXNNYXgiLCJpc01heDIweCIsImlzVGVhbU9yRW50ZXJwcmlzZSIsImJ1eUZpcnN0IiwidDMiLCJiYjAiLCJhY3Rpb25PcHRpb25zIiwib3ZlcmFnZURpc2FibGVkUmVhc29uIiwib3ZlcmFnZVN0YXR1cyIsImlzRW5hYmxlZCIsImhhc0JpbGxpbmdBY2Nlc3MiLCJuZWVkc1RvUmVxdWVzdEZyb21BZG1pbiIsImlzT3JnU3BlbmRDYXBEZXBsZXRlZCIsImlzT3ZlcmFnZVN0YXRlIiwibGFiZWwiLCJ0NCIsInZhbHVlIiwicHVzaCIsImNhbmNlbE9wdGlvbiIsInQ1IiwiaGFuZGxlQ2FuY2VsIiwidW5kZWZpbmVkIiwiaGFuZGxlU2VsZWN0IiwidGhlbiIsImpzeCIsImpzeF8wIiwidDYiLCJsZW5ndGgiLCJ0NyIsIlByb21pc2UiLCJSZWFjdE5vZGUiXSwic291cmNlcyI6WyJyYXRlLWxpbWl0LW9wdGlvbnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUge1xuICBDb21tYW5kUmVzdWx0RGlzcGxheSxcbiAgTG9jYWxKU1hDb21tYW5kQ29udGV4dCxcbn0gZnJvbSAnLi4vLi4vY29tbWFuZHMuanMnXG5pbXBvcnQge1xuICB0eXBlIE9wdGlvbldpdGhEZXNjcmlwdGlvbixcbiAgU2VsZWN0LFxufSBmcm9tICcuLi8uLi9jb21wb25lbnRzL0N1c3RvbVNlbGVjdC9zZWxlY3QuanMnXG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Rlc2lnbi1zeXN0ZW0vRGlhbG9nLmpzJ1xuaW1wb3J0IHsgZ2V0RmVhdHVyZVZhbHVlX0NBQ0hFRF9NQVlfQkVfU1RBTEUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hbmFseXRpY3MvZ3Jvd3RoYm9vay5qcydcbmltcG9ydCB7IGxvZ0V2ZW50IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYW5hbHl0aWNzL2luZGV4LmpzJ1xuaW1wb3J0IHsgdXNlQ2xhdWRlQWlMaW1pdHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGF1ZGVBaUxpbWl0c0hvb2suanMnXG5pbXBvcnQgdHlwZSB7IFRvb2xVc2VDb250ZXh0IH0gZnJvbSAnLi4vLi4vVG9vbC5qcydcbmltcG9ydCB0eXBlIHsgTG9jYWxKU1hDb21tYW5kT25Eb25lIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29tbWFuZC5qcydcbmltcG9ydCB7XG4gIGdldE9hdXRoQWNjb3VudEluZm8sXG4gIGdldFJhdGVMaW1pdFRpZXIsXG4gIGdldFN1YnNjcmlwdGlvblR5cGUsXG59IGZyb20gJy4uLy4uL3V0aWxzL2F1dGguanMnXG5pbXBvcnQgeyBoYXNDbGF1ZGVBaUJpbGxpbmdBY2Nlc3MgfSBmcm9tICcuLi8uLi91dGlscy9iaWxsaW5nLmpzJ1xuaW1wb3J0IHsgY2FsbCBhcyBleHRyYVVzYWdlQ2FsbCB9IGZyb20gJy4uL2V4dHJhLXVzYWdlL2V4dHJhLXVzYWdlLmpzJ1xuaW1wb3J0IHsgZXh0cmFVc2FnZSB9IGZyb20gJy4uL2V4dHJhLXVzYWdlL2luZGV4LmpzJ1xuaW1wb3J0IHVwZ3JhZGUgZnJvbSAnLi4vdXBncmFkZS9pbmRleC5qcydcbmltcG9ydCB7IGNhbGwgYXMgdXBncmFkZUNhbGwgfSBmcm9tICcuLi91cGdyYWRlL3VwZ3JhZGUuanMnXG5cbnR5cGUgUmF0ZUxpbWl0T3B0aW9uc01lbnVPcHRpb25UeXBlID0gJ3VwZ3JhZGUnIHwgJ2V4dHJhLXVzYWdlJyB8ICdjYW5jZWwnXG5cbnR5cGUgUmF0ZUxpbWl0T3B0aW9uc01lbnVQcm9wcyA9IHtcbiAgb25Eb25lOiAoXG4gICAgcmVzdWx0Pzogc3RyaW5nLFxuICAgIG9wdGlvbnM/OlxuICAgICAgfCB7XG4gICAgICAgICAgZGlzcGxheT86IENvbW1hbmRSZXN1bHREaXNwbGF5IHwgdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgIHwgdW5kZWZpbmVkLFxuICApID0+IHZvaWRcbiAgY29udGV4dDogVG9vbFVzZUNvbnRleHQgJiBMb2NhbEpTWENvbW1hbmRDb250ZXh0XG59XG5cbmZ1bmN0aW9uIFJhdGVMaW1pdE9wdGlvbnNNZW51KHtcbiAgb25Eb25lLFxuICBjb250ZXh0LFxufTogUmF0ZUxpbWl0T3B0aW9uc01lbnVQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IFtzdWJDb21tYW5kSlNYLCBzZXRTdWJDb21tYW5kSlNYXSA9IHVzZVN0YXRlPFJlYWN0LlJlYWN0Tm9kZT4obnVsbClcbiAgY29uc3QgY2xhdWRlQWlMaW1pdHMgPSB1c2VDbGF1ZGVBaUxpbWl0cygpXG4gIGNvbnN0IHN1YnNjcmlwdGlvblR5cGUgPSBnZXRTdWJzY3JpcHRpb25UeXBlKClcbiAgY29uc3QgcmF0ZUxpbWl0VGllciA9IGdldFJhdGVMaW1pdFRpZXIoKVxuICBjb25zdCBoYXNFeHRyYVVzYWdlRW5hYmxlZCA9XG4gICAgZ2V0T2F1dGhBY2NvdW50SW5mbygpPy5oYXNFeHRyYVVzYWdlRW5hYmxlZCA9PT0gdHJ1ZVxuICBjb25zdCBpc01heCA9IHN1YnNjcmlwdGlvblR5cGUgPT09ICdtYXgnXG4gIGNvbnN0IGlzTWF4MjB4ID0gaXNNYXggJiYgcmF0ZUxpbWl0VGllciA9PT0gJ2RlZmF1bHR
|