Commit Graph

6 Commits

Author SHA1 Message Date
can1357 5a044dc0da feat: consolidated and automate changelog management
- Added `rewrite-changelog.ts` and `fix-changelogs.ts` utilities to automate the consolidation of release notes using LLM-assisted processing.
- Updated multiple internal changelog files by consolidating redundant entries and improving phrasing for readability.
- Implemented `previewLine` utility in `coding-agent` to prevent visual spillover in status rows by managing text truncation and whitespace.
- Updated `package.json` with new workflow scripts for managing package-level change histories and documentation indexes.
2026-06-27 03:08:52 +02:00
can1357 f0c6a54f51 fix: handled unknown model limits as null to avoid artificial token caps
- Replaced unknown model contextWindow/maxTokens sentinels with nullable values across types and catalog data.
- Mapped request token calculations to treat null maxTokens as unlimited output caps.
- Updated remote compaction and context checks to ignore unknown limits by using Infinity/0 fallbacks.
- Adjusted CLI/model registry flows to skip cap enforcement for null limits and render unknown values as '-'.
2026-06-13 15:35:40 +02:00
metaphorics 2c1b1bbc59 fix(ai): set xai-oauth max output tokens to mirror context window
The xai-oauth (Grok Build / SuperGrok) curated catalog left maxTokens at
the UNK_MAX_TOKENS (8888) placeholder for half its models and a stale
overlay-baked 30000 on the three grok-4.x entries — an inconsistent,
needlessly short output budget.

xAI's OAuth /v1/models exposes no per-request output limit, so the
curated catalog now owns maxTokens the same way it owns contextWindow:
mergeCuratedIntoModel sets maxTokens = curated.contextWindow on both the
static-seed and online-overlay paths, so an online refresh can no longer
regress it. The openai-responses wire still clamps the actual request to
min(requested, model.maxTokens, OPENAI_MAX_OUTPUT_TOKENS=64000), so this
removes the artificial sub-cap without ever requesting an unbounded
output budget — a catalog maxTokens that tracks the context window is the
documented convention (see the 15.10.8 output-cap note).

models.json was regenerated for the xai-oauth section only, via the
generator's own buildXaiOAuthStaticSeed() + applyGeneratedModelPolicies()
+ localeCompare sort; the section is byte-identical to what a full
`generate-models` run would emit for that provider, with unrelated
other-provider network churn excluded to keep the diff scoped. The
contract test pins maxTokens === contextWindow on both the seed and the
bundle so the 8888 placeholder can never silently leak back.
2026-06-10 08:31:31 +02:00
metaphorics 6d9b2b5a7c feat(ai): add grok-composer-2.5-fast to the SuperGrok catalog
Exposes Cursor's "Composer 2.5 Fast" through the xAI Grok OAuth
(SuperGrok) subscription so it is selectable in the chat picker and
resolves synchronously at boot: non-reasoning, text-only, 200K context,
zero cost.

The single source edit is the XAI_OAUTH_CURATED_MODELS entry in
openai-compat.ts; buildXaiOAuthStaticSeed renders it into models.json so
the synchronous boot-time default-model resolver sees it without waiting
for an online refresh.

Provenance of the models.json hunk: it is byte-identical to the
generator's deterministic xai-oauth output. generate-models.ts pushes
buildXaiOAuthStaticSeed() (offline — xai-oauth has no upstream catalog
source) followed by applyGeneratedModelPolicies(), so a regen reproduces
these exact bytes; the only reason the file was not committed straight
from `generate-models` is that a full run also pulls unrelated
other-provider network churn and would regress grok-4.3 /
grok-4.20-0309-* maxTokens (overlay-baked 30000 -> 8888 placeholder).
That churn was excluded to keep the diff scoped.

The wire id grok-composer-2.5-fast (200K context, no configurable
reasoning effort) matches xAI's Grok Build OAuth surface. A focused
contract test pins the literal attributes (reasoning:false, 200K,
text-only) and the bundled entry's zero-cost invariant, which the
seed<->bundle parity loop cannot catch.
2026-06-10 08:31:31 +02:00
can1357 ae415199dc feat: added build-time compatibility in ModelSpec/buildModel pipeline
- Centralized catalog and registry handling on `ModelSpec` and `buildModel`, resolving compatibility at model build time.
- Removed runtime compatibility detectors and switched provider request flows to direct `model.compat` reads.
- Added compat fields (`supportsReasoningParams`, `alwaysSendMaxTokens`, `strictResponsesPairing`, `whenThinking`).
- Persisted explicit compatibility overrides through `compatConfig` in discovery and cache merge paths.
2026-06-10 06:20:51 +02:00
can1357 1b9d9d0851 refactor(catalog)!: split model catalog from pi-ai
Move bundled models, model cache/manager, thinking metadata, effort helpers,
provider descriptors/discovery, wire constants, and model identity utilities
into the new @oh-my-pi/pi-catalog package.

Update pi-ai to keep provider runtime/auth concerns, move catalog provider
metadata into CATALOG_PROVIDERS, and migrate coding-agent, agent, stats, docs,
and tests to import catalog values from pi-catalog.

Split coding-agent model registry helpers into discovery, roles, and models
config modules while preserving registry orchestration.

BREAKING CHANGE: @oh-my-pi/pi-ai no longer exports catalog subpaths such as
/models, /model-cache, /model-manager, /model-thinking, /effort,
/provider-models*, discovery helpers, and provider wire constants; use the
matching @oh-my-pi/pi-catalog subpaths instead.
2026-06-10 04:06:57 +02:00