@youdie006/prodex 0.36.1 → 0.36.2

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.
@@ -632,6 +632,46 @@ export function responseChoiceBlocksThisSend(input) {
632
632
  return false;
633
633
  return !input.newChat && input.project === undefined && input.projectNew === undefined;
634
634
  }
635
+ /**
636
+ * Why a requested Pro sub-mode did not make it onto a power-slider picker.
637
+ *
638
+ * The current picker is one five-step slider whose top step IS Pro, and it has
639
+ * no 기본/확장 anywhere - measured: `{ok:true, position:4, max:4, model:"GPT-5.6
640
+ * Sol", effort:"Pro"}`. The send takes that branch and returns, reading
641
+ * `effort ?? model`, so a sub-mode request was dropped on the way past. A run
642
+ * with `--model Pro --pro-mode 확장` finished clean and recorded no warning at
643
+ * all, having never applied 확장. The older picker refuses the same request
644
+ * out loud; silence on one machine and an error on another, for one command,
645
+ * is the half worth fixing. The send is still a correct Pro send, so this is a
646
+ * warning and not a refusal.
647
+ */
648
+ export function proModeNotAppliedWarning(proMode, sliderEffort) {
649
+ if (!proMode)
650
+ return undefined;
651
+ const step = sliderEffort ? `the slider's "${sliderEffort}" step` : "the slider's current step";
652
+ return (`pro_mode_not_applied: this ChatGPT picker is a power slider with no "Pro ${proMode}" step, ` +
653
+ `so --pro-mode ${proMode} was not applied and the send used ${step}. ` +
654
+ "Drop --pro-mode here, or clear a saved default with `prodex setup --clear-pro-mode`.");
655
+ }
656
+ /**
657
+ * Which of two flags the slider actually obeyed.
658
+ *
659
+ * On this picker one control carries both: "Pro" is the top EFFORT step, not a
660
+ * model. Naming a model AND an effort therefore asks for two positions of the
661
+ * same slider, and the send takes `effort ?? model` - so the model is dropped.
662
+ * Measured: `--model Pro --effort 중간` answered from gpt-5-6-thinking with an
663
+ * empty warnings list. Asking for Pro and quietly getting a cheaper model is
664
+ * the kind of thing a receipt exists to catch.
665
+ */
666
+ export function modelIgnoredForEffortWarning(model, effort) {
667
+ if (!model || !effort)
668
+ return undefined;
669
+ if (model.trim().toLowerCase() === effort.trim().toLowerCase())
670
+ return undefined;
671
+ return (`model_ignored: this ChatGPT picker sets the model and the effort with one slider, ` +
672
+ `so --model ${model} and --effort ${effort} name two positions of it. The send used ${effort}. ` +
673
+ `Pass only one of them to say which you meant.`);
674
+ }
635
675
  export function chatGptBusyBlocker(state) {
636
676
  // Waiting for a choice is not generating. Conflating them turned a click
637
677
  // away from ready into a full send budget spent on "still generating".
@@ -1614,6 +1654,14 @@ async function selectModelReasoning(cdp, options, selectionWarnings = []) {
1614
1654
  if (wanted) {
1615
1655
  await selectPowerStep(cdp, wanted);
1616
1656
  }
1657
+ // This branch cannot honour a sub-mode, and used to return without
1658
+ // saying so - the caller got a clean receipt for a 확장 it never got.
1659
+ const proModeWarning = proModeNotAppliedWarning(options.proMode, sliderState.effort ?? undefined);
1660
+ if (proModeWarning)
1661
+ selectionWarnings.push(proModeWarning);
1662
+ const modelWarning = modelIgnoredForEffortWarning(options.model, options.effort);
1663
+ if (modelWarning)
1664
+ selectionWarnings.push(modelWarning);
1617
1665
  await dispatchEscapeKey(cdp);
1618
1666
  return;
1619
1667
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@youdie006/prodex",
3
- "version": "0.36.1",
3
+ "version": "0.36.2",
4
4
  "description": "Local receipt bus for coordinating Codex execution with ChatGPT Pro/Projects consultation.",
5
5
  "author": "youdie006",
6
6
  "license": "MIT",