Skip to content

Build(deps-dev): Bump @typescript-eslint/parser from 8.29.1 to 8.41.0#111

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/typescript-eslint/parser-8.41.0
Closed

Build(deps-dev): Bump @typescript-eslint/parser from 8.29.1 to 8.41.0#111
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/typescript-eslint/parser-8.41.0

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

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

Bumps @typescript-eslint/parser from 8.29.1 to 8.41.0.

Release notes

Sourced from @​typescript-eslint/parser's releases.

v8.41.0

8.41.0 (2025-08-25)

🚀 Features

  • tighten tsconfigRootDir validation (#11463)

🩹 Fixes

  • resolve type error in eslint config (#11500)
  • deps: update babel monorepo (#11174)
  • deps: update dependency prettier to v3.6.2 (#11496)

❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.40.0

8.40.0 (2025-08-18)

🩹 Fixes

  • typescript-eslint: export plugin, parser, and configs that are compatible with both defineConfig() and tseslint.config() (#11475)
  • typescript-estree: correct range of import assertion with trailing comma (#11478)
  • utils: correct calculateConfigForFile return type (#11451)

❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.39.1

8.39.1 (2025-08-11)

🩹 Fixes

  • typescript-eslint: handle file:// urls in stack trace when inferring tsconfigRootDir (#11464)

❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.39.0

8.39.0 (2025-08-04)

... (truncated)

Changelog

Sourced from @​typescript-eslint/parser's changelog.

8.41.0 (2025-08-25)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

8.40.0 (2025-08-18)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

8.39.1 (2025-08-11)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

8.39.0 (2025-08-04)

🚀 Features

  • update to TypeScript 5.9.2 (#11445)

❤️ Thank You

You can read about our versioning strategy and releases on our website.

8.38.0 (2025-07-21)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

8.37.0 (2025-07-14)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

8.36.0 (2025-07-07)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

8.35.1 (2025-06-30)

... (truncated)

Commits
  • 31a7336 chore(release): publish 8.41.0
  • 60c3b26 chore(release): publish 8.40.0
  • b2ee794 chore(release): publish 8.39.1
  • c98d513 chore(release): publish 8.39.0
  • 2112d58 feat: update to TypeScript 5.9.2 (#11445)
  • d11e79e chore(release): publish 8.38.0
  • 816be17 chore(release): publish 8.37.0
  • 84b7a2e chore(release): publish 8.36.0
  • e2ecca6 chore: fix issues introduced by updated nx configuration (#11230)
  • f9bd7d8 chore(release): publish 8.35.1
  • 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 [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.29.1 to 8.41.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.41.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.41.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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 14:38
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github Sep 8, 2025

Superseded by #116.

@dependabot dependabot Bot closed this Sep 8, 2025
@dependabot dependabot Bot deleted the dependabot/npm_and_yarn/typescript-eslint/parser-8.41.0 branch September 8, 2025 21:31
joelteply added a commit that referenced this pull request Jun 2, 2026
… eviction automatically (task #111)

Closes the substrate's pressure-response loop for inference lanes.
Before this commit the coordinator had `evict_under_pressure` but
nothing called it; now the substrate's existing `PressureBroker`
tier-monitoring loop fires lane eviction the same way it fires
VRAM eviction on the Docker tier — automatically when global
pressure crosses the configured threshold.

### What ships

- `inference::coordinator::InferenceCoordinator` grows three
  helper methods used by the wrapper:
  - `config() -> &CoordinatorConfig` — read-only view
  - `lanes_usage_bytes() -> u64` — sum of seed KV across active
    lanes
  - `capacity_bytes() -> u64` — sum of lane-budget capacity
  - `lanes_snapshot() -> Vec<ResourcePoolEntry>` — one entry per
    lane keyed by handle_id, with size_bytes + pinned_count

- `inference::coordinator_pool::CoordinatorResourcePool` —
  adapter wrapping `Arc<InferenceCoordinator>` and implementing
  `paging::pool::ResourcePool`:
  - `tier_name()` → "inference-lanes" (overridable via
    `with_tier_name` for multi-coordinator processes)
  - `capacity_bytes()` → coordinator's or override
  - `usage_bytes()` → sum of lane KV bytes
  - `evict_at_least(want_bytes)` → delegates to
    `coordinator.evict_under_pressure`, returns actual bytes
    freed (NOT the target — the broker reads the return value)
  - `snapshot()` → per-lane entries
  - Closure-typed clock for deterministic tests
    (`with_clock(|| 1_500_000)`)
  - `with_capacity_bytes(n)` — decouples pressure threshold from
    admission threshold (admission may allow 64GB lane
    configuration; broker should evict at 28GB host pressure)

### Doctrine alignment

- Wrapper sits in `inference::` not `paging::` — the layering
  goes inference → paging, not the other way; the coordinator
  has no `paging` dependency.
- [[inference-scarcity-economics]] §"commands cannot negotiate
  this" — the wrapper is internal substrate plumbing. Callers
  never see it. Pressure response is automatic once registered
  with the broker.
- [[observability-is-half-the-architecture]] — every
  `evict_at_least` call surfaces through the coordinator's
  existing `LaneCaptureSink` (each evicted lane emits
  LaneEvicted with reason). The wrapper itself stays thin.

### Tests (13, all green)

Pure-trait tests (no broker):
- tier_name_defaults_to_canonical_constant
- tier_name_override_takes_effect
- capacity_bytes_sums_lane_budgets_times_bytes_per_token
- usage_bytes_zero_with_no_lanes_open
- usage_bytes_scales_with_open_lanes (8K + 4K → 12K)
- snapshot_returns_one_entry_per_lane_with_handle_id_as_key
  (one Realtime + one Interactive → 2 entries, one pinned)
- evict_at_least_delegates_to_coordinator_evict_under_pressure
  (target 1 → Hard-class Background goes, freed=32K)
- evict_at_least_returns_actual_bytes_freed_not_target
  (target 100K, only 8K available → freed=8K)
- evict_at_least_with_only_pinned_lanes_frees_zero
- pressure_default_impl_returns_usage_over_capacity
- pressure_is_zero_when_capacity_is_zero

PressureBroker end-to-end (the substrate's pressure-relief loop
calling through to coordinator):
- broker_relief_evicts_through_coordinator_pool_when_pressure_high
  — register with real PressureBroker; pressure=2.5 (Critical);
  broker.relieve() acts; Hard-class lane evicted.
- broker_relief_with_only_pinned_lanes_emits_zero_freed_alert
  — all Realtime lanes; pressure=4.0 (Critical); broker tries
  to evict; freed=0; report.triggered=false; all lanes survive.
  The pinned-realtime guarantee holds even under critical
  pressure — the substrate's defining promise to active voice/
  video chat personas.

### What unblocks now

With #109 (coordinator + eviction) + #110 (model-arch probe) +
#111 (broker hookup) all landed, the substrate's pressure-driven
lane lifecycle is structurally complete:

```
HOST PRESSURE RISES (broker tick observes)
    │
    ▼
PressureBroker.relieve() → wrapper.evict_at_least(want_bytes)
    │
    ▼
CoordinatorResourcePool delegates → coordinator.evict_under_pressure
    │
    ▼
Walk lanes: expired → Hard → Graceful (never Pinned)
    │
    ▼
LaneCaptureSink fires LaneEvicted per lane (with reason)
    │
    ▼
Broker emits PressureAlert (sinks + WARN log)
```

All five steps are tested end-to-end on the heuristic adapter
without any GGUFs required.

### Remaining for production wiring

The AIProviderModule registration of the LlamaCppAdapter still
needs:
1. Construct an InferenceCoordinator with realistic-floor defaults
   at module init.
2. Wrap it in CoordinatorResourcePool and register with the
   process-wide PressureBroker singleton.
3. Pass coordinator config's max_concurrency through to
   LlamaCppAdapter::with_n_seq_max() (per #110's probe-guarded
   safety).

That's pure plumbing in `modules/ai_provider.rs::register_adapters`
— next focused commit.
joelteply added a commit that referenced this pull request Jun 2, 2026
… wire (task #108, slices A+B+C)

Joel (2026-05-31): %22grid inference and they%27re just the same command
just executed across the wire and airc substrate delivered
payloads.%22 This commit ships the substrate-side architecture for
the AircRemoteInferenceAdapter — three of the five slices that
make up #108 (production airc transport + peer-side handler are
the two follow-up slices).

### Architecture proven

The AircRemoteInferenceAdapter implements AIProviderAdapter. The
caller sees:

    // LOCAL: heuristic adapter on this host
    let response = local_adapter.generate_text(request).await?;

    // REMOTE: same call, transport is airc
    let response = remote_adapter.generate_text(request).await?;

No difference at the call site. Composes with everything we
shipped earlier this session: the coordinator (#109) can hold a
mix of local + remote handles; the rag-inspect chain (#104) works
through remote adapters; the lane scheduler eviction (#111) treats
remote handles the same as local; the substrate%27s defining boast
— %22the Intel Mac participates as a citizen via grid offload%22 —
is now structurally realizable.

### Slice A — protocol.rs (wire types)

- RemoteInferenceRequest { correlation_id, text_request,
  target_peer? }
- RemoteInferenceResponse { correlation_id, served_by,
  text_response }
- RemoteInferenceError variants: Transport, NoPeerReachable,
  Timeout, CorrelationMismatch, PeerAdapterFailed, PolicyDenied
- ts-rs exports to shared/generated/airc_remote/
- Pure data; no transport, no I/O

### Slice B — transport.rs (the trait + test impls)

- AircInferenceTransport trait — one method, send_request
  (async, &self so adapter can hold Arc<dyn Transport> and
  concurrent-call across in-flight requests)
- StubInferenceTransport — closure-driven for unit tests, with
  `always_failing(err)` convenience
- **LocalAdapterTransport — the architecture proof.** Wraps an
  Arc<dyn AIProviderAdapter>; send_request unpacks the text
  request, calls adapter.generate_text, packages the response
  back into an envelope. With this transport, the remote adapter
  is functionally identical to calling the wrapped adapter
  directly — the substrate can%27t tell.

### Slice C — adapter.rs (the AIProviderAdapter impl)

- AircRemoteInferenceAdapter::new(Arc<dyn AircInferenceTransport>)
- .with_target_peer(peer) — pin every outgoing request to a
  specific peer (when substrate has reason)
- AIRC_REMOTE_PROVIDER_ID = %22airc-remote%22; the adapter rewrites
  response.provider to this so observability sees %22this came
  through the grid%22 even when the actual transport was local
- All trait methods implemented; future capability-discovery +
  health-handshake slices documented as pending

### Tests (27 new, all green)

Protocol (7):
- new_request_assigns_fresh_correlation_id_each_time
- new_request_defaults_target_peer_to_none
- with_target_peer_sets_the_field
- request_serializes_and_round_trips (full serde round-trip)
- error_display_is_human_readable (all 6 variants)
- error_correlation_mismatch_displays_both_ids
- errors_round_trip_via_serde
+ 3 ts-rs export bindings tests

Transport (6):
- stub_transport_returns_canned_response
- stub_transport_can_return_typed_error
- **local_adapter_transport_round_trips_via_heuristic** —
  THE architecture proof at the transport level
- local_adapter_transport_propagates_peer_adapter_errors
- local_adapter_transport_preserves_correlation_id
- local_adapter_transport_with_custom_peer_id

Adapter (11):
- adapter_reports_canonical_provider_id
- adapter_capabilities_admit_text_and_chat_not_local (is_local=false)
- adapter_supports_any_model_name_by_default (peer decides)
- **remote_adapter_over_local_heuristic_transport_round_trips** —
  THE architecture proof at the adapter level. AircRemote wrapped
  around LocalAdapterTransport(heuristic) produces exactly what
  calling heuristic directly produces.
- **remote_adapter_deterministic_when_peer_is_deterministic** —
  replay-safety holds across the wire. Same prompt, different
  remote-adapter instances over different heuristic instances →
  byte-identical responses.
- transport_error_surfaces_as_adapter_error_string
- timeout_error_surfaces_with_elapsed_ms
- policy_denied_surfaces_through_adapter
- with_target_peer_threads_through_to_transport_envelope
- without_target_peer_sends_envelope_with_none
- health_check_reports_healthy_with_pending_message

### What slices A+B+C deliberately do NOT ship

- **Production airc transport** (slice D) — the actual
  airc_lib::Airc-backed AircInferenceTransport that frames
  requests into airc events with correlation headers, awaits the
  paired response event, handles timeouts + retries. The trait
  shape is stable; the impl plugs in without touching the
  adapter or wire types.
- **Peer-side handler** (slice E) — the receiving end: when a
  peer%27s airc daemon delivers a %22remote inference request%22
  envelope, route it through the peer%27s local
  InferenceLlmModule (or ai/inference/generate ServiceModule)
  and send the response back.
- **Peer discovery + capacity advertising** — open questions Q8
  + Q12 in `docs/planning/AI-LANE-OPEN-QUESTIONS.md`. The
  substrate needs to know which peers run which models warm.
- **Persona identity projection on remote peer** — open question
  Q9. How does Paige%27s identity flow over airc to a peer that
  serves her inference?

Each of these is its own focused commit. The substrate-side
architecture proven by this commit doesn%27t change shape when
they land.

### What this unblocks NOW

A contributor writing the production airc transport (slice D)
has a stable trait to implement against. A contributor writing
the peer-side handler (slice E) has typed wire envelopes to
route. The substrate-as-grid architecture per
[[the-substrate-is-the-grid-tron-frame]] is now real in code.
Intel Mac + 1080 Ti + 5090 + Apple Silicon — same command,
different transport, transparent to everything above the
adapter trait.
joelteply added a commit that referenced this pull request Jun 2, 2026
…ask #120)

## Doctrine (Joel, 2026-06-01)

> "We don't get away with singular AI's. We are just clever with
> resources."

Multi-persona is the floor, not a luxury. Even the lowest tier (Intel
Mac discrete-Metal, CPU-only) runs Helper + Coder, sharing a base
model and paging per-persona LoRAs. The substrate's
`defaults_for_tier(tier)` function ALWAYS returns >= 2 templates;
"singular AI" is structurally impossible.

## What ships

`persona/role_template.rs`:

- `RoleId` — Helper, Coder, Sentinel, Custom
- `SpawnPriority` — Required (Helper), HighlyRecommended (Coder),
  OnRequest (Sentinel and explicit-need roles)
- `ModelChoice` — model_id + gguf_file + size + quant + optional
  base_model_id (the lever for shared-base LoRA paging)
- `ModelChoicePerTier` with a safety-floor `choose(tier)` fallback so
  any unmapped tier still gets the lowest known runnable choice
- `IdentityDefaults` (name_pool + bio_template) — feeds the
  deterministic identity projection from
  `persona-identity-derives-from-source-id`
- `CognitionDefaults` (depth_preference, voice, max_response_chars,
  asks_before_guessing) — Helper sits clippy-shaped (depth=20,
  voice="clippy", 400 chars, asks); Coder sits engineer-shaped
  (depth=70, voice="engineer", 4000 chars, doesn't ask)
- `RoleTemplate` bundles all of the above
- `helper_template()` + `coder_template()` populated concretely across
  the HwCapabilityTier ladder, from CpuOnly (Qwen2.5-0.5B-Instruct for
  Helper, DeepSeek-Coder-1.3B for Coder) up through Sm120 / M5UmaProMax
  (14B classes)
- `defaults_for_tier(tier)` ALWAYS returns >= Helper + Coder

## Tier-shaped expectations

| Tier                       | Helper                       | Coder                              |
|----------------------------|------------------------------|------------------------------------|
| CpuOnly / MacIntelMetalDsc | Qwen2.5-0.5B Q4_K_M (380 MiB)| DeepSeek-Coder-1.3B Q4_K_M (870)   |
| M1Uma8Gb                   | Qwen2.5-1.5B (1.1 GiB)       | Qwen2.5-Coder-1.5B (1.1 GiB)       |
| M1Uma16Gb                  | Qwen2.5-3B (2 GiB)           | Qwen2.5-Coder-3B (2 GiB)           |
| M3UmaProMax / Sm60         | Qwen2.5-7B (4.4 GiB)         | Qwen2.5-Coder-7B (4.4 GiB)         |
| M5UmaProMax / Sm120        | Qwen2.5-14B (8.5 GiB)        | Qwen2.5-Coder-14B (8.5 GiB)        |

Same role identity + cognition shape; just bigger models at higher
tiers. At low tiers Helper and Coder may share a base model family
(both qwen2.5-1.5b family at M1Uma8Gb, for example) — the
base_model_id field is the lever a future LoRA-paging module uses
to share weights.

## Tests (9 / 9 green)

- `defaults_for_tier_returns_at_least_helper_and_coder_for_every_tier`
  — the load-bearing invariant. Every variant of HwCapabilityTier
  yields at least Helper + Coder. If a future refactor narrows the
  floor at any tier, the test screams. "No singular AI" is structural.
- `helper_priority_is_required` — Helper's SpawnPriority pins the
  always-on contract.
- `coder_priority_is_highly_recommended` — Coder shows up by default
  but is disable-able.
- `helper_model_choice_resolves_for_every_tier` — including tiers
  the template doesn't cover, via the safety floor.
- `coder_low_tier_targets_swiss_army_code_family` — names the
  acceptable model families (Qwen-Coder / DeepSeek-Coder / StarCoder),
  catches accidental swaps to non-code-capable models.
- `helper_cognition_defaults_are_brief_and_friendly` — pins clippy DNA
  (depth <= 30, max_chars <= 600, asks_before_guessing, voice=clippy).
- `coder_cognition_defaults_allow_depth` — pins the contrasting
  engineer profile (depth >= 50, max_chars >= 2000).
- `model_choice_per_tier_falls_back_to_first_entry` — the safety
  floor stays operative.
- `role_id_stable_strings` — header / kanban metadata strings pinned.

## What this enables (follow-ups, separate cards)

1. **PersonaSpawnerModule** — ever-present substrate ServiceModule
   that reconciles `defaults_for_tier(current_tier)` against
   currently-running personas. Required → always-spawned.
   HighlyRecommended → spawn unless explicitly opted out.
2. **Shared-base + LoRA paging** — when Helper + Coder pick the same
   `base_model_id` at the current tier, the substrate hosts ONE
   model in memory and pages LoRAs. `[[host-the-seemingly-impossible]]`
   in concrete form on a laptop.
3. **Hardware-probe wiring** — `HostCapabilityProbe` (already exists,
   task #115) reports tier; substrate spawns Helper + Coder by
   default; the user never sees a model selector.
4. **Bootstrap experience** — `airc init` (or continuum equivalent)
   on first run probes hardware, picks templates from this layer,
   downloads the GGUFs, spawns the personas, posts a greeting in the
   default room. Naive users get a working substrate on day 1.

## References

- `[[host-the-seemingly-impossible]]` — shared base, page LoRAs
- `[[individuality-is-the-substrate-strength]]` — diversity via LoRA
- `[[personas-have-names-not-function-labels]]` — role in bio,
  identity from deterministic projection
- `[[substrate-is-communities-of-specialization]]` — even N=2 is a
  community
- Built on: #87 PersonaInstanceManagerModule, #115 HwCapabilityTier,
  #116 FilesystemPersonaResolver, #109/#110/#111 InferenceCoordinator

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: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants