Skip to content

Build(deps): Bump inquirer from 8.2.6 to 12.9.4#114

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/inquirer-12.9.4
Closed

Build(deps): Bump inquirer from 8.2.6 to 12.9.4#114
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/inquirer-12.9.4

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Aug 26, 2025

Bumps inquirer from 8.2.6 to 12.9.4.

Release notes

Sourced from inquirer's releases.

inquirer@12.9.4

  • fix: Remove "easter-egg" vim/emacs bindings conflicting with the type-to-search feature.

inquirer@12.9.3

  • Fix Unix yes not properly being processed by the confirm prompt. (yes | node confirm-script.js)

inquirer@12.9.2

  • Make @types/node an optional peer dependency.

inquirer@12.9.1

  • Replace external-editor dependency with new @inquirer/external-editor. This remove the vulnerable tmp transitive dependency from the dependency tree.

inquirer@12.9.0

  • Search prompt: New instructions config to allow localizing the help tips.

inquirer@12.8.2

  • Fix #1786 select prompt with indexMode: number theme option didn't properly calculate the items indexes if separators where present in between choices.

inquirer@12.8.1

  • Fixes: a transitive dependency (run-aysnc) loaded devDependencies unexpectedly. This is now fixed upstream. Rel #1791

inquirer@12.8.0

  • Select prompt: When pressing a number key, we'll ignore separators in counting the index of the item to jump to.
  • Checkbox prompt: When pressing a number key, we'll ignore separators in counting the index of the item to select.

inquirer@12.7.0

-input prompt: New prefill option to control if the default value is editable inline or only after pressing tab.

inquirer@12.6.3

  • Fix #1743: pagination logic of the select, checkbox and search prompts was fully rewritten to handle edge cases around rendering multi-line choices and pointer positioning.

inquirer@12.6.2

  • Chore: dependencies bump

inquirer@12.6.1

  • Fix #1741: Issue with SIGINT in some scenarios leaving promises unsettled on exit.
  • Fix: Remove monorepo related dependencies from all artifacts published to npm. This removes non-standard version specifiers like workspace:* from the public npm packages.

inquirer@12.6.0

  • Feat(@​inquirer/select): Added an instructions option allowing to customize the messages in the help tips.
  • Feat(@​inquirer/rawlist): Arrow keys will now cycle through the option, just like the @inquirer/select prompt. Also added a loop option to control the list loop behaviour when reaching the boundaries.

inquirer@12.5.2

  • README: Add new sponsor
  • Chore: dependency updates

inquirer@12.5.0

  • Feat (select): Introduce theme.indexMode to control displaying an index prefix in front of each choice. (defaults to hidden)
  • Fix (select): Improve search when number keys are pressed

... (truncated)

Commits
  • fdc9201 Publish
  • 3deee5c fix(@​inquirer/core): Remove vim/emacs easter eggs conflicting with type-to-se...
  • df341a8 Publish
  • 2d8ddcc fix(@​inquirer/confirm): Fix when using with unix yes command. (#1815)
  • f5c39a8 chore: Document known issue with setRawMode(true). Closes #1721
  • daf4d6f Publish
  • b4992d3 fix: lockfile regenerated
  • 7ddf02b chore (@​inquirer/external-editor): Add keyword to help search
  • 82df7a2 fix (@​inquirer/external-editor): Make @​types/node an optional peer dependency
  • 28c2f20 chore (@​inquirer/external-editor): Add note to README about being a replacement
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [inquirer](https://github.com/SBoudrias/Inquirer.js) from 8.2.6 to 12.9.4.
- [Release notes](https://github.com/SBoudrias/Inquirer.js/releases)
- [Commits](https://github.com/SBoudrias/Inquirer.js/compare/inquirer@8.2.6...inquirer@12.9.4)

---
updated-dependencies:
- dependency-name: inquirer
  dependency-version: 12.9.4
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Aug 26, 2025
@dependabot dependabot Bot requested a review from joelteply August 26, 2025 15:37
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github Sep 15, 2025

Superseded by #123.

@dependabot dependabot Bot closed this Sep 15, 2025
@dependabot dependabot Bot deleted the dependabot/npm_and_yarn/inquirer-12.9.4 branch September 15, 2025 21:22
joelteply added a commit that referenced this pull request Jun 2, 2026
Enumerates every direct adapter.generate_text call site in the
tree as of 2026-05-31. 19 hits total; classified as:

- 4 canonical paths (the command + handle store implementations
  themselves; can%27t go through themselves)
- 6 confirmed bypasses (cognition / persona / agent / http) — should
  route through InferenceHandleStore / Commands.execute
- 1 debatable (rag_inspect probe — acceptable as a one-shot)
- 8 test-only call sites (allowed; testing the adapter contract)

The 6 bypasses split into 3 priority tiers and become tasks #112
(persona response — highest, the hot path), #113 (cognition gating
+ validation — medium), and #114 (agent + http — lower).

The audit doc explains the boundary (when adapter.generate_text
is canonical vs bypass), provides the grep command for re-running
the audit before merging new inference-using code, and documents
when to update the doc.
joelteply added a commit that referenced this pull request Jun 2, 2026
…trict opt-in (#128)

## Why

Joel (2026-06-01) called out a recurring failure mode: "You mix this
fake shit in and it's going live ALL THE TIME. Why fallbacks are
forbidden. The fake shit is a CHOSEN model adapter no other form.
Declaration. Gating in test is smart."

The HeuristicInferenceAdapter was registered unconditionally at boot
in `modules::ai_provider`, and its `supports_model()` returned `true`
for any model name including production IDs like
`anthropic/claude-opus-4-7`. Two structural leaks: auto-discovery
could pick it via tier-3 walk in `AdapterRegistry::select()` when
callers passed `model: None`; explicit-by-name lookups for real
production models silently degraded to it when no real adapter was
registered first. Both paths "go live ALL THE TIME."

This commit closes the leaks structurally — not via runtime guards
that can be forgotten, but via the compiler.

## What ships

### 1. Compile-time elimination (the no-going-back gate)

- `Cargo.toml`: new `test-fixtures` feature flag. Production builds
  do not enable it.
- `src/ai/mod.rs`: `pub mod heuristic_adapter` and re-exports gated
  behind `#[cfg(any(test, feature = "test-fixtures"))]`. Without the
  feature, the entire module + struct + constants don't exist in the
  binary. Unit tests in continuum-core get it free via `cfg(test)`;
  external test code / fixtures opts in via the feature.
- `Cargo.toml`: `airc_chat_demo` bin target now declares
  `required-features = ["test-fixtures"]` — it uses heuristic and
  must opt in like any other test-fixture consumer.

### 2. Removal of unconditional production registration

- `src/modules/ai_provider.rs`: deleted the unconditional
  `registry.register(HeuristicInferenceAdapter::new(), 99)` block.
  The comment about "lowest priority so never auto-selects" was
  wrong; nothing prevented `select()` with `model: None` from
  landing there. Tests that legitimately want heuristic register it
  explicitly in setup (no global default registration).

### 3. Trait-level self-declaration (belt-and-suspenders)

- `src/ai/adapter.rs`: new `fn is_production_capable(&self) -> bool`
  on `AIProviderAdapter` (default `true`). Real adapters keep the
  default; heuristic returns `false`.
- `src/ai/adapter.rs`: new `AdapterSelectionError` type with `Display`
  impl that names what was requested, what's registered, and what
  remediation looks like. Designed for downstream `select_production`
  callers in follow-up slices.
- `src/ai/adapter.rs`: `AdapterRegistry::select()` now refuses calls
  with no `preferred_provider` AND no `model` — the textbook
  auto-discovery path forbidden by [[no-fallbacks-ever]]. Hard return
  None with a diagnostic. Callers must specify intent.

### 4. Heuristic strict opt-in

- `src/ai/heuristic_adapter.rs`: `supports_model()` overridden to
  match ONLY model names starting with "heuristic" (case-insensitive).
  Previously returned `true` unconditionally — THE leak path. The
  test asserting that behavior (renamed:
  `supports_only_heuristic_model_names_never_substitutes_for_real_models`)
  now pins the opposite: production model names like
  `anthropic/claude-opus-4-7`, `gpt-4`,
  `qwen3.5-4b-code-forged-Q4_K_M` MUST NOT match.
- `supported_model_prefixes()` declares `vec!["heuristic"]` (was
  empty + comment claimed "opt-in only" but the empty list combined
  with always-true `supports_model` meant anything went). The two
  methods now agree and the registry's prefix-based auto-routing
  cannot pick heuristic for any real model name.

## Layered defense

Heuristic adapter cannot reach production traffic via FOUR independent barriers:
1. cfg-gate: not in the binary unless `test-fixtures` is on
2. No auto-registration: even with the feature, nothing in production code registers it
3. Trait self-declaration: `is_production_capable() = false` for `select_production` (follow-up #128 slice 2)
4. Strict model match: even at test time, only "heuristic-*" model names route here

Joel: "No fallbacks ever it's forbidden." Now structural, not policy.

## Tests (47 passing, no regression)

- `ai::heuristic_adapter::tests` — 10/10 pass with `test-fixtures`
  including the rewritten
  `supports_only_heuristic_model_names_never_substitutes_for_real_models`.
- `ai::adapter::tests` — pass
- `modules::generator::tests` — 8/8 pass (regression check)
- `persona::hw_tier_descriptor::tests` — 11/11 pass (regression check)
- `persona::orm_entity_registration_tests` — 2/2 pass (regression check)
- `orm::entity::tests` — 10/10 pass (regression check)
- Full lib test sweep with `test-fixtures` green (regression sweep)
- Production build (`cargo build --lib --features metal,accelerate`)
  with NO test-fixtures: clean, heuristic adapter physically absent
  from the binary

## Follow-up (deferred)

- Wire qwen3.5-4b-code-forged-Q4_K_M (the local GGUF on this Intel
  MacBookPro15,1) through the persona path so we have a REAL model
  running. The chat-flawless work continues on top of this clean
  base.
- `select_production()` method that wraps `select()` and additionally
  filters `is_production_capable()`. Will land when the first
  production cognition call site is migrated to use it.
- Audit existing `select()` callers — anyone passing `model: None`
  is now broken loud; either give them a real model or refactor.

References: [[no-fallbacks-ever]], [[no-if-statements-use-llms-for-
cognition]], [[persona-chat-flawless-before-video]],
[[persona-webrtc-all-tiers-latency-obsessed]], #103 (heuristic
promotion that this constrains), #105 (bypass audit), #112-#114
(routing the cognition path through inference command — chat-flawless
slices C+).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code size: L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants