chore: upstream reconcile through reference 99eaa993b - #323
Merged
Merged
Conversation
Close the session, wait for listeners to finish journal and live-state cleanup, then remove it and broadcast a workspace-scoped deletion event so clients can drop the session without races.
Arm terminal-notification suppression at the start of agent teardown so late background-task settlements cannot wake the model during quiescence or after the agent is gone.
Save MCP media that the model cannot take into session attachment storage, surface recoverable references in the tool result, and let Read open those daemon attachment URLs.
Mark sessions dirty on mirror writes and reconcile only those sessions on restart, replacing full mtime rescans with a schema-versioned checkpoint and session count.
Expose suggestFiles on the SDK and prefer the engine fs suggest path for extension @ mentions, with the existing directory browse and local search kept as fallbacks.
Seed config synchronously so experimental tower assembles at startup, and return typed enter failures so clients can name the real blocker.
Replace the agent telemetry context service with parent-linked ambient context so session, agent, and turn fields reach every event, and bind scopes from session and agent lifecycle.
Keep the free-row sweep acceptance ledger untracked.
Import a rebranded full-tree snapshot for the deferred engine wave so local main can merge it through the recorded sync path.
Land the rebranded engine-wave freeze on a sync branch so deferred loop-machine and related rows can clear through the recorded merge path.
Keep the English-only product surface after the vendor merge.
Keep a single implementation after the engine-wave snapshot merge left two copies of the helper in the same file.
Restore silently deleted kosong and protocol trees, drop orphaned pre-machine AgentRuntime and turn-budget services, and reapply the local auth surface so the stripped oauth package matches callers.
Align config, kosong, session, and workspace surfaces after the engine-wave vendor merge, strip managed oauth callers, and quarantine obsolete tests that still target deleted pre-machine APIs.
Drop Chinese PR/workflow shipping text brought in by the engine-wave snapshot so the sync branch can clear the English-only brand gate.
Replace Chinese comments and docs residue from the engine-wave snapshot with English so the sync branch does not grow the English-only surface.
Clear remaining Han fixture text and rewrite product CDN/site hosts away from kimi.com product surfaces while keeping provider API hosts.
Strip Han from migration snapshot fixtures and drop product-host parentheticals from login region flags.
Align docs, install URLs, telemetry endpoints, and tests with the Pythinker product hostnames after the engine-wave import.
Bring the loop-machine and human-layer engine snapshot onto main after typecheck and brand gates cleared on the sync branch.
Port Settings Plugins marketplace, permission labels, Esc panel behavior, diff wrap, mention Tab-complete, splash stages, file-preview refresh, skill reload, thicker scrollbar, media ordinals/mention/reorder, and tower mode UI; restage dist-web via build:web without adopting reference bundles.
Large tunnel payloads no longer trip V8 Irregexp stack overflow. Also point credential load at resolveOAuthTokenStorageName after the engine-wave import drift.
Rewritten assets keep a weak ETag so unchanged GETs/HEADs can return 304 instead of retransferring the body.
Strategies return self-describing records with optional prepare effects; the engine chains credentials recovery ahead of configured strategies.
PYTHINKER_CODE_PERMISSION_MODE_REMINDER=0 skips injecting the auto-mode reminder into model context.
Notify the turn via llm.request.retrying so interrupted tool-call streams cannot leak into the next attempt; settle duplicate tool call ids safely.
…agents Rebuild wire persistence so the machine journal projects the same file, flip agent DI ownership to session-spawned actors, and add human-domain compaction. Share model-catalog error codes between kosong and llm-adapter so barrel imports no longer double-register provider.not_found.
Remove the experimental auto_session_title flag so title generation is always available as a surface. Keep the local stub backend (no managed title call). Restore the oauth toolkit modules required by the SDK harness and fix engine import paths broken by the human-wire rename.
Native installs report staged-for-next-start copy. runShell uses the v2 harness unless the legacy flag is set. MoonLoader uses moon frames when style is moon so AgentDynamicWorkflow can host the moon spinner.
Replace oauth-strip stubs with the real CacheHintDialog, evaluateCacheHint, and cache-hint-config so idle intercept and cold-fetch dialogs work again.
Restore device login QR/box UI and feedback archive/upload helpers that were reduced to empty stubs during the managed oauth strip.
- Task storage stub gains size/mtime for output snapshots - Env overlay resolves pythinker default/proxy baseUrl without registry - Pyaos UTF-8 error fixtures expect 中/文 bytes - Migration result lines wrap sibling filenames under 80 cols - CLI options expect rc before server - API surface snapshot refresh - VS Code harness enables MCP management experimental flag - Identity headers restore X-Msh-Version/Platform/Device-Id - Boot tolerates missing managed auth/login route - Prompt attachment path regex accepts em dash notice text - Search route fixture title zh; remote-control env URL + login token seed
Default outbound headers stay User-Agent only. Tests that required X-Msh-* on the default path now assert User-Agent instead.
Moon waiting-state unit tests expect MOON_SPINNER_FRAMES. SDK/host header tests assert User-Agent only under the product boundary.
Avoid hard-coded pythinker providerType gate in env overlay. Align unsigned feedback signup URL and moon-loader verb label assertions.
…feedback Restore oauth formatDuration seconds→human, register codex login routes, relax brittle compaction token fixtures, restore feedback attachments/codebase. Local-only until 0122b22 matrix settles.
Complete storage stub size hooks, isolate workspace add-dir fixtures, restore ellipsis assertions stripped as brand false-positives.
Align RC setup copy assertion with the three-step product text. Add missing listWorkspaceSkills on the vscode bridge harness mock.
…logout Unpack LocalPlatformSelection and route non-device login through SDK runLogin. Default thinking for non-current model picks. Isolate logout target fixture. Swallow Codex OAuth abort on cancel mid-config.
… API Reinstate FeedbackAttachmentLevel prompts and input dialog. Add auth create/complete feedback upload methods. Coerce feedbackId to number.
…fixtures Guard catalogProviderId and normalize string/object platform selection. Restore TUI banner ● logo path, Remote Control relayKey resolution, V2 export harness, drainStdio exit, fd no auto-download, task/roster routing wire, Chinese search fixtures, and related test/fixture alignment.
Mock rg/spawn for toolExecutor Glob spill recovery so CI without system rg stays green. Align klient model catalog set_default URL with fixture model id. Stub getActiveToolNames on tower profile mocks; optional-call in tower service.
Use mkdtemp for doctor/config/reload/tower fixtures. Unbiased task-id alphabet sampling. Strict Vertex host parse. Cache-dir originals with O_EXCL write. Config domain allowlist. Inspect joinApiUrl + loopback-only base/WS. CodeQL paths-ignore for committed dist-web vendor bundles.
Drop catch comments in towerFeature tests. Always spawn C:\Windows\System32\cmd.exe for .bat/.cmd (never ComSpec).
Keep a single braille activity spinner for waiting, tool, and progress UI.
Merged
elkaix
pushed a commit
that referenced
this pull request
Sep 20, 2026
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @pymodel/pythinker-code@0.43.0 ### Minor Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Delete sessions from the session picker: press Ctrl+X on a session, then y to confirm. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Drop the experimental flat entity message protocol and history API; session inspect returns to the transcript surface. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Add per-server deferred MCP tool disclosure so large tool lists stay hidden until selected. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Delete sessions with serialized cleanup so journal and live listeners finish before the session is removed, and broadcast a workspace-scoped deletion event. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Rebuild telemetry as a scope-bound layered context registry so session, agent, and turn fields flow into every event without a separate agent telemetry context service. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Serve workspace @ file suggestions through the engine fs suggest API so the editor extension matches gateway search scoring. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Turn filesystem watch off by default. Set `[watch] enabled = true` or `PYTHINKER_CODE_WATCH=1` to attach watchers. ### Patch Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Make the compaction attempt limit configurable with loop_control.compaction_max_attempts (default 5). - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Stop telling the model that the current working directory is always the project root. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Honor dynamically_loaded_tools from official model catalogs when building tool lists. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Preserve original MCP attachments that are omitted from model output, and let Read open those session attachment references. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Exclude time spent with the session closed from goal time budgets. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Rebaseline the terminal UI library native platform modules and mouse/search behavior. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Include the server token in the Remote Control Local UI link so it opens already signed in. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Remove the 24-hour limit on goal time budgets. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Skip the confirmation prompt for rm -rf commands that target only /tmp or /temp paths. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Track session-index freshness with a dirty journal so restarts reconcile only changed sessions instead of rescanning every mtime. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Deliver session approval and question events past agent filters, and stamp the requesting agent on the wire shape. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Session title generation no longer requires the experimental auto_session_title flag. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Allow steering messages to interrupt waits for background tasks. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Do not record a steer event when an unconsumed steer seeds the next turn after cancel. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Suppress background-task terminal notifications as soon as an agent starts closing, so teardown no longer wakes the model with late task settlements. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode (experimental, `PYTHINKER_CODE_EXPERIMENTAL_TOWER=1`): fix tower mode never starting when enabled through `[experimental] tower = true` in `config.toml` instead of the environment variable. When tower mode cannot be enabled, the error now names the actual blocker — the disabled experiment, a required restart, or the owning session. When another live session owns the workspace tower, the message also names the owning session's title alongside its id. /tower now also works in a directory that is not a git repository — it runs git init and commits what is there (an empty initial commit for empty directories). - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode reliability fixes across messaging, worktrees, and the review-to-merge gate. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Compress Remote Control tunnel responses with gzip. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Keep live turn ids above the wire-wide maximum and fold cold transcript rebuilds over the active branch chain. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Add `-y, --yes` to `pythinker upgrade` (alias `pythinker update`) to skip the confirmation prompt and install the update directly. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Warn at startup when a [models] entry in config.toml is missing the model field and cannot be used. ## @pymodel/pythinker-desktop@1.2.0 ### Minor Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Delete sessions from the session picker: press Ctrl+X on a session, then y to confirm. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Drop the experimental flat entity message protocol and history API; session inspect returns to the transcript surface. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Add per-server deferred MCP tool disclosure so large tool lists stay hidden until selected. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Delete sessions with serialized cleanup so journal and live listeners finish before the session is removed, and broadcast a workspace-scoped deletion event. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Rebuild telemetry as a scope-bound layered context registry so session, agent, and turn fields flow into every event without a separate agent telemetry context service. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Serve workspace @ file suggestions through the engine fs suggest API so the editor extension matches gateway search scoring. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Turn filesystem watch off by default. Set `[watch] enabled = true` or `PYTHINKER_CODE_WATCH=1` to attach watchers. ### Patch Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Make the compaction attempt limit configurable with loop_control.compaction_max_attempts (default 5). - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Stop telling the model that the current working directory is always the project root. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Honor dynamically_loaded_tools from official model catalogs when building tool lists. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Preserve original MCP attachments that are omitted from model output, and let Read open those session attachment references. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Exclude time spent with the session closed from goal time budgets. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Rebaseline the terminal UI library native platform modules and mouse/search behavior. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Include the server token in the Remote Control Local UI link so it opens already signed in. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Remove the 24-hour limit on goal time budgets. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Skip the confirmation prompt for rm -rf commands that target only /tmp or /temp paths. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Track session-index freshness with a dirty journal so restarts reconcile only changed sessions instead of rescanning every mtime. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Deliver session approval and question events past agent filters, and stamp the requesting agent on the wire shape. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Session title generation no longer requires the experimental auto_session_title flag. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Allow steering messages to interrupt waits for background tasks. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Do not record a steer event when an unconsumed steer seeds the next turn after cancel. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Suppress background-task terminal notifications as soon as an agent starts closing, so teardown no longer wakes the model with late task settlements. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode (experimental, `PYTHINKER_CODE_EXPERIMENTAL_TOWER=1`): fix tower mode never starting when enabled through `[experimental] tower = true` in `config.toml` instead of the environment variable. When tower mode cannot be enabled, the error now names the actual blocker — the disabled experiment, a required restart, or the owning session. When another live session owns the workspace tower, the message also names the owning session's title alongside its id. /tower now also works in a directory that is not a git repository — it runs git init and commits what is there (an empty initial commit for empty directories). - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode reliability fixes across messaging, worktrees, and the review-to-merge gate. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Compress Remote Control tunnel responses with gzip. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Keep live turn ids above the wire-wide maximum and fold cold transcript rebuilds over the active branch chain. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Add `-y, --yes` to `pythinker upgrade` (alias `pythinker update`) to skip the confirmation prompt and install the update directly. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Warn at startup when a [models] entry in config.toml is missing the model field and cannot be used. ## @pymodel/agent-core-v2@0.5.0 ### Minor Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Persist the human runtime mirror in the agent wire journal and spawn agent DI scopes from the session layer. ### Patch Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Discard streamed attempt state when the LLM requester retries below the turn so interrupted tool-call ids cannot leak into the next attempt. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Compose LLM recovery strategies outside the turn machine with self-describing proposals and opaque prepare effects. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Add `PYTHINKER_CODE_PERMISSION_MODE_REMINDER`: set it to `0` to stop injecting auto permission-mode reminders into the model context. ## @pymodel/pythinker-code-sdk@0.21.0 ### Minor Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Serve workspace @ file suggestions through the engine fs suggest API so the editor extension matches gateway search scoring. ### Patch Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Rebuild telemetry as a scope-bound layered context registry so session, agent, and turn fields flow into every event without a separate agent telemetry context service. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Persist the human runtime mirror in the agent wire journal and spawn agent DI scopes from the session layer. ## @pymodel/pi-tui@0.85.0 ### Minor Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Rebaseline the terminal UI library native platform modules and mouse/search behavior. ## pythinker@0.7.6 ### Patch Changes - Updated dependencies [[`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c)]: - @pymodel/pythinker-code-sdk@0.21.0 - @pymodel/migration-legacy@0.1.17 ## @pymodel/acp-server@0.0.2 ### Patch Changes - Updated dependencies [[`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c)]: - @pymodel/agent-core-v2@0.5.0 - @pymodel/klient@0.1.3 ## @pymodel/agent-gateway@0.2.4 ### Patch Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Persist the human runtime mirror in the agent wire journal and spawn agent DI scopes from the session layer. - Updated dependencies [[`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c)]: - @pymodel/agent-core-v2@0.5.0 - @pymodel/remote-control@0.0.1 ## @pymodel/klient@0.1.3 ### Patch Changes - Updated dependencies [[`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c)]: - @pymodel/agent-core-v2@0.5.0 ## @pymodel/migration-legacy@0.1.17 ### Patch Changes - Updated dependencies [[`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c)]: - @pymodel/agent-core-v2@0.5.0 ## @pymodel/remote-control@0.0.1 ### Patch Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Validate Remote Control tunnel request base64 with a linear scan so large payloads no longer crash the tunnel as a generic connection failure. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Reuse unchanged Remote Control assets across page loads with ETag validation instead of retransferring them. - Updated dependencies [[`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c)]: - @pymodel/agent-core-v2@0.5.0 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
elkaix
added a commit
that referenced
this pull request
Sep 20, 2026
## Related Issue No issue. Unblocks Release on `main`. ## Problem `#323` copied upstream identity onto `main`: - CLI version `2.1.0` (already on npm) rewound to `0.42.0`, then `#324` published a fake `0.43.0` GitHub tag that npm never received - VS Code publisher `pymodel` (live Marketplace id `pymodel.pythinker` 0.9.7) became `moonshot-ai`, so vsce refused every target: extension name `pythinker` already exists - Homebrew 404'd on `pythinker-code-0.42.0.tgz`; native upload looked for a `@pymodel/pythinker-code@0.42.0` release that does not exist; consistency check compared local `0.42.0` to npm `latest` `2.1.0` Required CI (build/test/lint/typecheck/nix) was already green. Only Release was red. ## What changed - Restore CLI to `2.1.0` and the 2.x changelog - Restore VS Code to publisher `pymodel`, id `pymodel.pythinker`, version `0.9.7`, and the 0.9.x changelog - Put the `#323` changesets back so the next `ci: release packages` PR bumps from `2.1.0` (likely `2.2.0`) instead of from `0.43.0` - Replace leftover `moonshot-ai` branding (capability marker, vis filter comment, migration doc). Left the Moonshot LLM provider id in `packages/oauth` — that names `api.moonshot.ai`, not our publisher After merge, Release should skip-publish npm `2.1.0`, skip-or-no-op native assets already on that tag, and skip Marketplace `0.9.7`. Then merge the regenerated version PR to ship the reconcile work on the 2.x line. ## Checklist - [x] I have read the CONTRIBUTING document. - [ ] I have linked a related issue (external PRs: the issue must have a maintainer's `/approve`. - [x] I have added tests that prove my feature works. - [x] Ran skill, or this PR needs no changeset. - [x] Ran skill, or this PR needs no doc update. EOF ) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added session deletion, workspace file suggestions, configurable compaction attempts, automatic session titles, noninteractive upgrades, and improved Tower mode. - Added deferred MCP tools, attachment access, Remote Control authentication and performance improvements, and configurable filesystem watching. - Rebranded the VS Code extension as Pythinker. - **Improvements** - Improved steering, session cleanup, telemetry, recovery, session indexing, diagnostics, and model configuration warnings. - Closed sessions no longer consume goal time, and the goal-time cap was removed. - **Breaking Changes** - Removed the experimental flat entity protocol and history API. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Lands the local upstream-reconcile wave onto
PyModel/pythinker-codemain.origin/main(268d6914c→d91c801a4)99eaa993bHighlights (recent tips)
goods_versionparseTest plan