Commit Graph
48 Commits
Author SHA1 Message Date
cat-shark 5947e133de feat: rewrite the Command Code provider on pi's native provider API
Replace the previous implementation with one that registers the Provider API
catalog through pi's own provider layer instead of shipping a custom transport,
cache file, and hand-maintained pricing table.

- models: derive the catalog from the published command-code CLI package
  (context windows, reasoning efforts, image input, output limits, rates) and
  keep it as the offline baseline; scripts/sync-catalog.mjs regenerates it and
  supports --check
- refresh: use refreshModels plus context.publish so pi persists the live
  /provider/v1/models listing in models-store.json and restores it offline
- auth: /login browser transfer through a localhost callback server with a
  pasted-key fallback; $COMMAND_CODE_API_KEY, --api-key and auth.json keep
  working
- streaming: pi's native openai-completions and anthropic-messages adapters;
  the generate-transport fallback and Oh My Pi branches are gone
- keep the context-overflow rewrite that enables pi's compaction retry and the
  /commandcode-quota command
- tests: 51 cases under tests/<module>/ covering models, catalog sync, auth,
  the callback server, overflow handling, quota, and the extension factory

Verified against the live API: chat, tool round trip, image input and
--thinking max on deepseek/deepseek-v4.1-flash, quota output, and catalog
persistence in an interactive session.
2026-09-14 11:19:33 +08:00
cat-shark 8007a6480c fix(models): support DeepSeek V4.1 vision and max effort
CI / typecheck (push) Failing after 51s
CI / format (push) Failing after 4s
CI / Oh My Pi compatibility (push) Failing after 1m7s
CI / CodeQL SAST (push) Failing after 26m15s
CI / Semgrep — pi extension audit (push) Failing after 8m15s
CI / Gitleaks — secrets scan (push) Failing after 8s
CI / Dependency review (push) Skipped
CI / npm audit (push) Failing after 6s
CI / Check lifecycle scripts (push) Failing after 2s
Refresh the generated capability catalog from command-code@1.44.0 to
1.53.1. deepseek/deepseek-v4.1-flash now advertises image input and its
low, high, and max reasoning efforts, so pi forwards attached images and
exposes the full thinking-level selector instead of reporting the model
as text-only without selectable levels. The sync also adds gpt-6-astra,
xai/grok-4.6, and inclusionai/ling-3.0-flash-sante:free metadata.

Drop the now-obsolete manual Meta Muse Spark effort overrides because
upstream publishes efforts for meta/muse-spark-1.1 through 1.3-contributor
and MiniMaxAI/MiniMax-M3, and add a regression test for the V4.1
capabilities.
2026-09-13 22:27:51 +08:00
f9879a20ee chore(models): sync Command Code catalog (#81)
Co-authored-by: patlux <4481570+patlux@users.noreply.github.com>
2026-09-03 13:27:02 +02:00
9296d3dc31 fix(auth): stop the API key placeholder from shadowing Oh My Pi /login credentials (#78)
Oh My Pi kept the unresolved $COMMAND_CODE_API_KEY placeholder as a literal config API key that shadowed its /login credential store and was sent as the Bearer token (401). The placeholder is now registered only on pi, where it keeps the API-key auth method and --api-key working next to OAuth; on OMP the provider omits apiKey unless a real key is configured. Host-supplied placeholders are resolved or stripped on every stream path, and the legacy generate transport uses the same rule.

Stored /login OAuth and API-key credentials, --api-key, and env keys are now covered end to end on both pi and Oh My Pi, and CI runs the pi suite against a real binary.

Co-authored-by: ebreen <ebreen@users.noreply.github.com>
2026-09-02 22:43:23 +02:00
Patrick Wozniak 20877bd362 docs(readme): fold the extension compat note into Usage
The standalone section read like a commit message and sat between Install
and Authentication as if it were a core topic. Keep the part users need
(sibling extensions share the connection and credentials, so their
requests count against Command Code usage) as one sentence under Usage;
the registry mechanics stay in index.ts and the changelog.
2026-09-02 00:29:44 +02:00
Patrick Wozniak a1bfafa556 test(e2e): default the GOAT vision phase to gpt-5.6-luna
google/gemini-3.7-flash currently fails on the Provider API with a
zero-data-retention routing 404 for every request, which made the GOAT
live suite red regardless of provider changes. GPT-5.6 Luna is available
on every plan, accepts image input, and completes the vision request.
2026-09-02 00:22:26 +02:00
Patrick Wozniak d3c9832d28 feat(models): move manual reasoning efforts into a catalog override
PR #69 added efforts for meta/muse-spark-* directly to the generated
catalog, which the drift check flags and the daily sync job reverts.

Keep src/commandcode-catalog.ts byte-identical to upstream and merge a
separate src/commandcode-catalog-overrides.ts over it at load time. A
test fails as soon as upstream publishes efforts for an overridden model
so the override gets removed instead of shadowing the CLI catalog.

Verified against the live endpoint: pi --thinking xhigh sends
reasoning_effort="xhigh" for meta/muse-spark-1.2-contributor and the
request succeeds; --thinking off sends none.

Closes #69
2026-09-02 00:03:45 +02:00
Patrick Wozniak be110c6046 docs(readme): explain reasoning models without selectable efforts
The official CLI marks meta/muse-spark-* as reasoning models but ships no
effort levels for them and sends no effort parameter, so the thinking level
stays off in pi. Document that so the locked footer is not mistaken for a
provider bug.

Refs #69

(cherry picked from commit 263310635a89e35cf0b3da527474555c9687903e)
2026-09-01 23:29:34 +02:00
Patrick Wozniak 59322e4ffa perf(models): start from the cached catalog and refresh in the background
Every host start awaited a full catalog request before the provider
registered, costing one HTTPS round-trip (up to the discovery timeout on a
hanging connection) even when a cache written seconds earlier was on disk.

Register the cached catalog immediately and run the live refresh in the
background; the live result re-registers the provider when it arrives. A
first start without a cache still awaits the live catalog. The background
refresh is aborted on session_shutdown so print mode does not wait for it.

Closes #63

(cherry picked from commit 142191f9420fe90460cdc3cbae70e26d0c000860)
2026-09-01 23:29:33 +02:00
Patrick Wozniak 0700d9b61d fix(core): register the custom api in the pi-ai compat registry
pi routes the main chat through the registered provider, but sibling
extensions that call streamSimple from @earendil-works/pi-ai/compat with
the active Command Code model resolve model.api through the compat
api-registry, which only knows built-in APIs. On plain pi that failed
with "No API provider registered for api: commandcode-custom".

Register commandcode-custom there and delegate to the transport router.
The registry resolves no credentials for extension providers, so fall
back to the configured Command Code key when the caller passes none.

Closes #68

(cherry picked from commit 7e9659e672771c6a9223b95938e50fb2a051a0a7)
2026-09-01 23:29:30 +02:00
Patrick Wozniak b6e0e07c01 feat(models): sync model catalog with command-code@1.40.1
Add claude-fable-5-1, deepseek/deepseek-v4-flash-fast, and
tencent/hy4-preview with their reasoning efforts, add moonshotai/Kimi-K3
efforts, and drop minimax/minimax-m3-free, which the CLI no longer lists.
2026-09-01 23:29:16 +02:00
Thomas Byr 5ac0dbeedd feat(models): add Qwen 3.8 Flash and GLM 5.3 Flash
Synchronize the static model catalog with command-code@1.36.0, which adds
Qwen/Qwen3.8-Flash (reasoning efforts low, medium, xhigh) and
z-ai/glm-5.3-flash (low, high, max), the free minimax/minimax-m3-free
model, and the glm-5.3-flash output limit, and drops the retired
stealth/ox-alpha.
2026-08-28 16:38:25 +02:00
Patrick Wozniak 98ed83fc9c merge main into fix/tool-call-streaming 2026-08-25 17:18:02 +02:00
Patrick Wozniak cee0d7cc96 test(e2e): cover live Go and GOAT accounts 2026-08-25 16:37:24 +02:00
Patrick Wozniak 804ba5862e docs(core): document Command Code CLI parity 2026-08-25 15:54:37 +02:00
Patrick Wozniak c3a383447c ci(models): open PRs for Command Code catalog updates 2026-08-25 15:08:29 +02:00
Patrick Wozniak f23863d326 ci(models): check Command Code metadata daily 2026-08-25 14:14:44 +02:00
Patrick Wozniak 003d571b5e fix(models): refresh Command Code capabilities 2026-08-25 14:12:00 +02:00
Patrick Wozniak 96356698fa fix(quota): harden dashboard integration 2026-08-25 13:34:54 +02:00
Patrick Wozniak 63dd92da09 Merge remote-tracking branch 'origin/main' into review/pr-52
# Conflicts:
#	CHANGELOG.md
2026-08-25 13:33:55 +02:00
Thomas Byr d637a73e06 fix(docs): update Command Code version to 1.32.1 2026-08-22 23:25:06 +02:00
José Galliano 307714b051 feat(quota): add live commandcode-quota dashboard and OMP auth fix
Fetches live account quota from Command Code alpha usage endpoints
(whoami, billing/credits, billing/subscriptions, usage/summary) and
renders a plain-text dashboard via ui.notify.

- Graceful degradation: optional endpoint transport/timeout/parse
  failures degrade to null sections instead of aborting; only 401/403
  are hard failures. 429 is transient, not fatal.
- Overall deadline bounds the whole command to QUOTA_TIMEOUT_MS
  (per-request controllers are chained; post-deadline phases fail fast).
- OMP auth: filter unresolved $COMMANDCODE_API_KEY placeholder and fall
  back to the host resolver via pickCommandCodeApiKey.
- ZDR privacy header respected on quota requests.
- Redaction reuses redactCommandCodeErrorText plus JSON-quoted
  credential fields; outer-catch errors are redacted too.
- resetAt parsed from seconds, ms, numeric string, or ISO string.
- 21 hermetic unit tests wired into npm test (test:quota).
2026-08-21 11:21:25 -06:00
Patrick Wozniak f07ece7731 docs(api): document provider follow-up fixes 2026-08-20 00:13:56 +02:00
Patrick Wozniak 33c405c060 docs(tests): document live account credentials 2026-08-18 17:20:51 +02:00
Patrick Wozniak 9103272217 docs(api): explain automatic transport selection 2026-08-18 12:11:47 +02:00
Patrick Wozniak 864538e146 fix(ci): satisfy provider audit checks 2026-08-18 11:01:12 +02:00
Patrick Wozniak c04f3907b5 docs(api): document provider api migration 2026-08-18 10:56:12 +02:00
Patrick WozniakandGitHub a367aed63c feat(models): add vision input capabilities (#43) 2026-08-11 00:28:03 +02:00
Patrick Wozniak ea55ead662 fix(stream): omit prior reasoning from request history 2026-08-07 16:39:18 +02:00
Patrick Wozniak af2a4d1759 test(tests): add provider hardening end-to-end coverage 2026-08-07 14:06:36 +02:00
Patrick Wozniak b100d553c1 feat(tests): add isolated pi launchers 2026-08-07 09:55:02 +02:00
Patrick Wozniak 2028322a22 docs(readme): refresh setup and usage guide 2026-08-04 11:09:14 +02:00
Patrick Wozniak 8d35530bd3 docs(readme): add workflow status badges 2026-08-04 10:31:29 +02:00
Patrick Wozniak b1a60da6b4 fix(models): store cache in agent directory
Resolve the Command Code model cache through the host's getAgentDir helper so pi, OMP, and PI_CODING_AGENT_DIR use their own agent state directory instead of the official Command Code client directory.
2026-08-02 01:37:34 +02:00
Patrick Wozniak 070ef3c07a fix(models): cache catalog for offline startup
Persist the last valid Command Code model catalog and use it when live model discovery fails. Keep first-time offline startup non-fatal, surface clear warnings, and cover cached model selection with unit and pi integration regression tests.
2026-08-02 01:16:39 +02:00
Patrick Wozniak fe49146892 Merge remote-tracking branch 'origin/main' into fix/pr-7-review
# Conflicts:
#	index.ts
#	package.json
#	tests/test-pi-local.mjs
2026-05-28 22:07:51 +02:00
Patrick Wozniak 27abe72faa docs(readme): fix pricing test file reference
README pointed to tests/test-models.ts but pricing assertions live in
tests/test-pricing.ts.
2026-05-28 22:05:25 +02:00
AlexVagrantandwh.huajieyu c2497ed098 feat: add OMP (Oh My Pi) provider compatibility
Support OMP as a host alongside pi:
- Convert OMP's array-format system prompts to string via systemPromptToText
- Guard against OMP passing the literal env-var name as the API key value
- Add ~/.omp/agent/auth.json to default auth path lookup
- Fix --list-models output to check both stdout and stderr
- Add OMP compatibility smoke test with isolated temp HOME and mock server
- Deduplicate usage section in README, add OMP install and usage docs
2026-05-28 04:12:35 -04:00
Fei Yan 93864879b2 docs: add 0.2.0 changelog entry and pricing section to README
Document the incremental reasoning-delta streaming, live display pricing,
and dynamic model fetch in CHANGELOG.md. Add a Pricing section to
README.md explaining the MODEL_COSTS overlay and how to update prices.
2026-05-27 07:32:50 +08:00
Patrick Wozniak b850558199 docs(contributing): add contribution and release guides 2026-05-26 23:26:52 +02:00
Patrick Wozniak cc05faa526 Release 0.1.1 2026-05-26 23:05:21 +02:00
Patrick Wozniak 418f4c925b Fetch Command Code models at startup 2026-05-26 21:51:41 +02:00
Tao Yang 960d0d1f23 feat: extract models from command-code dist, load via models.json
- Add scripts/extract-models.ts to parse command-code npm dist file
- Generate models.json (21 models, 15 pricing entries) with contextWindow
  and maxOutputTokens pre-filled; no nulls or hardcoded fallbacks in index.ts
- Rewrite index.ts to load model list and costs from models.json
- Cap gateway model maxOutputTokens at 65536 (API limit for Baseten/Vercel)
- Add 'Update models' section to README documenting the generation flow
- Add npm run extract-models script
2026-05-25 16:37:08 +08:00
Patrick WozniakandGitHub b5b109c63c Update README.md 2026-05-05 14:58:48 +02:00
Patrick Wozniak b8853ab0d6 Add Command Code browser login fallback 2026-05-05 14:48:06 +02:00
Patrick Wozniak e9853eb4a4 chore: add CI workflow (typecheck + prettier format check), tsconfig, and prettier formatting 2026-05-05 13:56:41 +02:00
Patrick Wozniak be6d17ea56 docs: add disclaimer, 4x DeepSeek V4 offer, and DeepSeek V4 model 2026-05-05 13:40:04 +02:00
Patrick Wozniak e283cd0677 chore: add README, LICENSE, publish workflow, and npm metadata for pi.dev/packages 2026-05-05 13:29:46 +02:00