源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s

This commit is contained in:
agent-radar
2026-09-01 20:17:27 +08:00
commit 2ed3415fb7
8018 changed files with 1936476 additions and 0 deletions
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Add `agent.provider_ready` and `agent.chat_ready` analytics events so the first-landing activation funnel (page view → provider bound → chat surface ready → message sent) is measurable regardless of how a provider became ready. `agent.provider_ready` fires on a non-ready→ready provider transition (carrying `became_ready_via` and `previous_status`), closing the blind spot where users who authenticate outside the in-app login button never produced funnel data; `agent.chat_ready` fires when the agent workbench is mounted with a ready provider.
@@ -0,0 +1,9 @@
---
"@tutti-os/agent-activity-core": minor
---
Remove the public `PromptQueueAvailability` type and derive prompt-queue drain
readiness exclusively from post-reduction canonical session, turn, and
interaction lifecycle. Timed-out delivery confirmations now require an exact
turn id and wait for that canonical turn to settle before draining the next
prompt.
@@ -0,0 +1,7 @@
---
"@tutti-os/agent-activity-core": patch
---
Allow hosts that already fence transport identity and ordering to mark a
same-Turn settlement as authoritative across source clock skew, while keeping
the canonical timestamp guard for ordinary realtime and generic projections.
@@ -0,0 +1,6 @@
---
"@tutti-os/agent-gui": patch
"@tutti-os/desktop": patch
---
Drive the "@" mention palette's per-app "view artifact files" (产物文件) entry from the app's real reference capability instead of a hardcoded app-id blocklist. The desktop workspace-app mention provider now threads each app's `references.listSupported` (declared by the app manifest) through the mention presentation, and the palette only renders the entry for apps that can actually provide reference files. Apps without that capability — including agent launchers like Claude Code and Codex — no longer show the entry, and newly added referenceable apps light up automatically without code changes.
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Fix the agent environment check staying stuck on "needs login" after a successful re-login. A runtime 401 (e.g. an expired/revoked Codex token) records an auth-failure flag that overrides the local "logged in" marker; previously only a later _successful run_ cleared it, but re-login is a terminal action that never reports a run — so the dock and wizard stayed red no matter how many times the user re-checked. The probe now self-heals: when the provider's credential file is rewritten by a fresh login (its mtime moves past the recorded failure), the stale flag is dropped and normal detection resumes.
+5
View File
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Improve the codex environment wizard for an outdated CLI. Upgrades are now user-driven: instead of a no-op auto-install (npm can't upgrade an already-present binary), the wizard shows the manual upgrade command and re-checks. The outdated state also surfaces the actual versions — "current X · requires ≥ Y" — sourced from the backend's own version gate.
+5
View File
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Lower the minimum supported Codex version to 0.126.0. The floor is now capability-derived — 0.126.0 is the release that introduced the newest app-server method our codex runtime integrates — instead of an arbitrary "latest at the time" value.
@@ -0,0 +1,9 @@
---
"@tutti-os/agent-gui": minor
---
Add an opt-in participant presentation contract to the standalone Agent
conversation renderers. Hosts can explicitly disable avatars, show stable
loading slots while identity data resolves, or provide user and Agent names and
avatar URLs while Agent GUI owns the shared Avatar rendering and message-side
layout.
@@ -0,0 +1,7 @@
---
"@tutti-os/agent-gui": patch
---
Render custom conversation participant avatars once per speaker and turn
instead of repeating the Agent avatar for each tool-progress message, and keep
subsequent assistant progress aligned with the participant name.
@@ -0,0 +1,7 @@
---
"@tutti-os/agent-activity-core": patch
"@tutti-os/agent-gui": patch
---
Model durable turn-cancel acceptance separately from terminal cancellation so
shared-agent callers remain blocked until the canonical turn settles.
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Add `agent.env_detected` and `agent.env_issue_reported` analytics events for the agent environment wizard. `agent.env_detected` reports each provider's detection outcome automatically — availability, CLI/adapter/auth state, and the network registry/API/proxy reachability — using only privacy-safe booleans and enums (no file paths, account email, or proxy address), and fires once per distinct outcome so routine polling doesn't spam the funnel. When an environment anomaly is detected, the wizard proactively prompts to send a fuller diagnostic payload (CLI paths, endpoints, proxy address, error detail); with reporting already enabled it sends silently. The opt-in lives as an "Agent diagnostics reporting" toggle in Settings → General (the account email is never sent).
@@ -0,0 +1,10 @@
---
"@tutti-os/desktop": patch
"@tutti-os/agent-gui": patch
---
Rework the agent environment setup wizard into one consistent step track shared by the in‑progress and completed states, with each step shown in its done tense ("已安装 CLI") and its info inline. A blocked step states the problem ("未xxx") and offers the inline fix ("进行xxx"). Re‑detect now opens the wizard and re‑runs detection there (the dock action too), and opening the panel no longer silently re‑probes on every open.
Add an active network‑check step that probes connectivity for real and reports each link separately: the npm registry (install path), the provider API (run/login path, skipped when the CLI uses a custom API key/endpoint — detected from env and the CLI config files), and the HTTP proxy (whether configured, its host:port, and reachability).
Rebuild the agent run‑failure error taxonomy around the codes the daemon actually emits (splitting out `cli_not_found`, `cli_version_unsupported`, and `network_error`), with granular provider‑aware copy and a wizard call‑to‑action on every environment‑fixable failure, while transient/server‑side failures get accurate copy and no (misleading) wizard button.
@@ -0,0 +1,6 @@
---
"@tutti-os/desktop": patch
"@tutti-os/agent-gui": patch
---
Close two gaps in routing agent errors to the setup wizard. A failure the provider reports as a plain failed message (e.g. Claude Code's dropped-login 401, "Failed to authenticate … 401 Invalid authentication credentials") now renders as the structured remediation card with a wizard call-to-action instead of dead red text, by recovering the env-fixable code from the message text (auth / CLI-missing / version / network) and routing to the right provider. And opening the wizard from a remediation CTA (auth/install/repair/upgrade/network) now re-probes status instead of reusing the cached snapshot, so it reflects the real problem and can auto-remediate rather than contradicting the error with "ready".
+17
View File
@@ -0,0 +1,17 @@
---
"@tutti-os/agent-gui": minor
"@tutti-os/desktop": patch
---
Replace AgentGUI's public provider-target catalog contract with a required,
host-ordered `agents` directory projected from `/agents`. Agent selection,
filtering, composer caches, workbench state, and launches now use exact
`agentTargetId` identity; names, icons, owner badges, and availability come from
the corresponding agent entry. Empty directories no longer synthesize local
provider entries, one-agent views hide `All`, and multiple agents may share one
runtime provider without being grouped or deduplicated.
Remove the old public `providerTargets`, `providerRailMode`, provider-target
renderers, and `defaultProviderTargetId` surface. Desktop now feeds its agents
snapshot through the new contract. Workbench hydration retains only a one-time
legacy `providerTargetId` to `agentTargetId` state repair.
@@ -0,0 +1,7 @@
---
"@tutti-os/agent-gui": patch
---
Keep pending ask-user interactions available while returning to the main
conversation, and route eligible Composer text through the exact pending
interaction response.
@@ -0,0 +1,6 @@
---
"@tutti-os/agent-activity-core": patch
"@tutti-os/agent-gui": patch
---
Expose composer capability loading state and keep the slash palette visible with a localized loading row during the initial capability request.
+7
View File
@@ -0,0 +1,7 @@
---
"@tutti-os/agent-gui": patch
"@tutti-os/connector-renderer": patch
---
Support host-routed Connector selection as semantic AgentGUI draft content and
keep Composer-local selection distinct from Connector authorization.
@@ -0,0 +1,5 @@
---
"@tutti-os/agent-gui": minor
---
Add an `@tutti-os/agent-gui/agent-conversation` entry point exposing the standalone conversation-flow renderer (`AgentConversationFlow`, `AgentTranscriptView`, `AgentTranscriptSkeleton`) and the higher-level `WorkspaceAgentSessionDetail` wrapper (projects the conversation view model and defaults transcript labels from the package i18n), together with the view-model builders (`buildWorkspaceAgentSessionDetailViewModel`, `projectAgentConversationVM`, `reconcileProjectedAgentConversationVM`, `useProjectedAgentConversation`) and supporting types. This lets consumers render a single agent session's transcript outside the full AgentGUI node by building a session-detail view model from the session's timeline items.
@@ -0,0 +1,10 @@
---
"@tutti-os/agent-gui": minor
"@tutti-os/desktop": patch
"@tutti-os/workbench-surface": patch
---
Add privacy-safe Agent GUI engagement events for true panel exposure, composer
focus modality, and the first user-entered content in each session-scoped panel
visit. Desktop hosts map the semantic package events into the existing
analytics transport for workspace and standalone Agent surfaces.
@@ -0,0 +1,7 @@
---
"@tutti-os/agent-gui": patch
---
Keep explicit agent target selection exact while the host directory is loading
or missing the requested agent, preventing fallback launches through a sibling
directory entry.
@@ -0,0 +1,5 @@
---
"@tutti-os/agent-gui": patch
---
Use host-authoritative ownership metadata when labeling handoff targets so self-owned VM Agents remain distinguishable from other users' shared Agents.
@@ -0,0 +1,5 @@
---
"@tutti-os/agent-gui": minor
---
Add host-owned external prompt entry resolution so local file and folder paste/drop can become live references while remote hosts keep snapshot preparation.
@@ -0,0 +1,5 @@
---
"@tutti-os/agent-gui": minor
---
Replace external dropped-file resolvers with the host-owned `prepareExternalPromptFiles` contract. Prepared files now require a provider-readable path or URL, while failures return typed error codes.
+6
View File
@@ -0,0 +1,6 @@
---
"@tutti-os/agent-activity-core": patch
"@tutti-os/agent-gui": patch
---
Add prompt file attachment support to the agent composer and activity runtime contracts. Workspace reference picks can now carry host file attachments, upload them through the prompt-content runtime, preserve upload state in composer drafts, and submit uploaded file prompt blocks alongside text, images, skills, and mentions.
@@ -0,0 +1,6 @@
---
"@tutti-os/agent-gui": minor
---
Add an independent Handoff Agent directory so hosts can launch conversation
handoffs across local and shared runtimes without merging their session rails.
@@ -0,0 +1,5 @@
---
"@tutti-os/agent-gui": patch
---
Keep the host user-project move capability optional in the public AgentGUI API, matching the runtime capability check and workspace-user-project contract.
@@ -0,0 +1,7 @@
---
"@tutti-os/agent-activity-core": patch
"@tutti-os/agent-gui": patch
"@tutti-os/client-tuttid-ts": patch
---
Preserve typed agent capabilities while loading composer options before a session exists, so new conversations expose the same supported slash commands as existing sessions.
@@ -0,0 +1,7 @@
---
"@tutti-os/agent-gui": patch
---
Keep provider rail selection owned by the canonical conversation filter so
unavailable and compatibility Agent targets render the correct selected state
without conflating readiness with rail scope.
@@ -0,0 +1,6 @@
---
"@tutti-os/agent-gui": minor
---
Expose host-provided reference picker content error recovery actions through
the AgentGUI workspace contract.
+16
View File
@@ -0,0 +1,16 @@
---
"@tutti-os/agent-gui": major
"@tutti-os/agent-activity-core": major
---
Make `AgentGUIRuntime` the sole AgentGUI host contract and remove the legacy
`AgentActivityRuntime` interface, Provider, hooks, and test overrides. Desktop
and TSH now use the narrow contract without duplicating lifecycle callbacks
already owned by `AgentSessionEngine`; Mobile was audited and has no dependency
on the removed contract.
Remove the legacy `EngineCommandPort`,
`EngineExternalCommandExceptPlanDecision`, and `dispatchSessionMutation`
exports from `@tutti-os/agent-activity-core`. Hosts must use
`EngineTypedCommandPort`, `AgentSessionEffectPort`, and the semantic mutation
methods on `AgentSessionEngine`.
@@ -0,0 +1,9 @@
---
"@tutti-os/agent-gui": patch
---
Allow AgentGUI long-paste staging to return a prepared remote file URL as well
as a local archive path. Shared hosts can now pass text/plain pasted content
through their existing attachment upload pipeline without treating a remote
asset as a local file, while conversation lists receive only a safe pasted-text
preview rather than the remote locator.
@@ -0,0 +1,5 @@
---
"@tutti-os/agent-gui": patch
---
Add an optional external Side presentation bridge and reusable Side surface so standalone Agent hosts can place the transient Side conversation in the shared right tool sidebar while existing embedded hosts retain the inline pane.
@@ -0,0 +1,8 @@
---
"@tutti-os/agent-gui": patch
---
Fail closed on Tutti Mode UI unless the host sets
`capabilityMenuState.tuttiMode.enabled` to true, so shared AgentGUI hosts do not
leak the hero toggle, badge activation, or `/tutti` when the lab capability is
omitted or disabled.
+7
View File
@@ -0,0 +1,7 @@
---
"@tutti-os/agent-gui": patch
---
Expose the shared Agent handoff target menu and canonical Agent directory target
projection so host activity surfaces reuse the composer menu, ownership rows,
and hover animation without rebuilding Agent identity presentation.
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Stop the codex CLI install from failing under a slow system proxy. The npm install pulls a large platform binary; direct it's ~6-44s, but through a throttled proxy it's ~76-100s+ — right at the old 90s per-registry cap, so otherwise-succeeding installs were killed and the whole registry chain timed out. Raise the per-registry timeout to 150s (and the overall install budget to 8 min so the chain can still fail over) so a working-but-slow registry can finish.
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Redact credentials from custom npm registry URLs before they reach the setup wizard, telemetry, or logs. A custom registry override can embed `user:token@host` userinfo; the codex installer now surfaces and logs a sanitized URL while still using the raw URL for the npm environment.
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Auto-close the login terminal once authentication succeeds. The "login" action opens a terminal for `codex login` / `claude auth login` (which open the browser for OAuth); previously that terminal lingered after login finished. The terminal now closes automatically when the provider becomes ready, and stays open on failure or timeout so the error remains readable.
@@ -0,0 +1,7 @@
---
"@tutti-os/agent-gui": patch
---
Give composer mention directory navigation an independent cancellable request
lifecycle so slow directory reads are not converted into empty results by the
short keyword-search provider timeout.
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Fix a false "service API unreachable" for Codex in the network check. A ChatGPT-login Codex talks to `chatgpt.com`, not `api.openai.com`, so probing only `api.openai.com` reported the service unreachable for users where that host is blocked even though Codex worked fine. The probe now checks Codex's actual endpoints (`chatgpt.com`, then `api.openai.com`) and counts the service reachable if either answers. Network probe outcomes are also logged for diagnosability.
@@ -0,0 +1,8 @@
---
"@tutti-os/agent-gui": patch
"@tutti-os/ui-system": patch
---
Render Agent owner badges through the shared Avatar primitive so failed images
fall back to the owner initial, and apply a consistent no-referrer default to
Avatar image requests.
@@ -0,0 +1,6 @@
---
"@tutti-os/agent-activity-core": patch
"@tutti-os/agent-gui": patch
---
Keep AgentGUI Prompt submit identities as opaque UUID v4 values and track Plan feedback through explicit pending-submit source metadata instead of encoded ID prefixes.
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Detect a dropped agent login. A runtime authentication failure (e.g. a 401 when sending a message — the local credentials file still says "logged in") is now fed back from the agent runtime into the status probe, which overrides the stale "authenticated" verdict with "needs login" for both Codex and Claude Code. So re-detecting in the environment wizard (or the dock) now surfaces the dropped login and routes the user to re-authenticate, instead of reporting the agent as ready. The override clears on a successful turn. Also renames the diagnostics toggle to "针对上报".
@@ -0,0 +1,12 @@
---
"@tutti-os/agent-gui": patch
"@tutti-os/agent-activity-core": patch
---
Tighten AgentGUI runtime capability contracts and activity-core submit
availability derivation. AgentGUI runtimes can now declare optional command
capabilities, development builds get a default console diagnostic sink when no
runtime sink is provided, and timeline projection rows no longer participate in
durable message paging cursors. Activity-core now treats explicit wire
`submitAvailability.state = "available"` as authoritative and ignores stale
`activeTurnId` values once the turn lifecycle is settled.
@@ -0,0 +1,6 @@
---
"@tutti-os/agent-activity-core": patch
---
Retain active-turn send-now prompts while Session capabilities are unresolved,
then route the same intent after the authoritative capability snapshot arrives.
@@ -0,0 +1,8 @@
---
"@tutti-os/agent-gui": minor
---
Group Agent Session mention results by their exact source Agent when a host
provides a provenance catalog. The session filter continues to constrain the
cloud-backed provider before pagination, while group labels follow the host
catalog order and names.
+6
View File
@@ -0,0 +1,6 @@
---
"@tutti-os/agent-session-replay": patch
---
Extract the provider-neutral Agent Session Replay renderer contract, activity
replay driver, React binding, and Workspace bridge protocol for Desktop and TSH.
+5
View File
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Polish the agent provider setup notice: center the floating pill, space the message and "Set up" action so they no longer butt together, and use neutral copy that fits every not-ready state instead of always saying "install".
+6
View File
@@ -0,0 +1,6 @@
---
"@tutti-os/agent-gui": minor
---
Expose a lazy, product-neutral Agent target information renderer for provider
Rail, Conversation Rail, and Workbench Header icon tooltips.
@@ -0,0 +1,13 @@
---
"@tutti-os/agent-gui": patch
"@tutti-os/ui-rich-text": patch
---
Group Agent target mention results by the owning member declared in the
host-provided provenance catalog, while preserving per-Agent grouping for hosts
without ownership data and uncatalogued targets when no source is selected.
Agent directory owners now expose an optional stable user id so collaboration
hosts can group targets that do not have session history yet.
Keep unavailable shared Agent targets visible in mention directories while
preventing mouse and keyboard selection until the host reports them ready.
@@ -0,0 +1,8 @@
---
"@tutti-os/agent-gui": patch
"@tutti-os/desktop": patch
---
Expose Desktop update checks and developer-log export from Agent mode, normalize
Windows workspace paths before file clipboard writes, and keep standalone app
webviews attached to their live sidebar height while switching tool tabs.
@@ -0,0 +1,6 @@
---
"@tutti-os/workspace-app-center": patch
"@tutti-os/desktop": patch
---
Let App Center hosts independently enable create, archive import, and load-unpacked authoring actions. Declared capabilities fail closed when the matching host callback is absent, and local-only hosts can present the final factory action as Save to my apps while Tutti keeps its existing defaults.
@@ -0,0 +1,6 @@
---
"@tutti-os/workspace-app-center": patch
"@tutti-os/desktop": patch
---
Classify recommended workspace apps with stable category ids so category counts and filtering no longer depend on the active display language.
+5
View File
@@ -0,0 +1,5 @@
---
"@tutti-os/workspace-app-center": patch
---
Allow App Center hosts to select which application tabs are visible.
+5
View File
@@ -0,0 +1,5 @@
---
"@tutti-os/auth-bridge": patch
---
Add the Tutti auth bridge SDK package for desktop app sign-in flows.
+13
View File
@@ -0,0 +1,13 @@
---
"@tutti-os/commerce": minor
"@tutti-os/agent-gui": major
---
Publish the host-neutral Commerce contracts, policies, React Commerce menu
content, tier assets, and registration-credit toast. Keep the Account shell
(avatar, popover, login, settings, logout, and UID copy) in each Host. Move product-specific
insufficient-credit presentation behind AgentGUI's generic Host override and
stop rendering Account/Commerce UI inside AgentGUI. Remove the former
`accountMenuState`, `commercePresentation`, `AgentGUIAccountMenu*`, and
`AgentGUIAccountRewardToast` APIs; hosts must import account and Commerce
presentation from `@tutti-os/commerce` and `@tutti-os/commerce/react`.
@@ -0,0 +1,6 @@
---
"@tutti-os/browser-node": patch
"@tutti-os/workspace-issue-manager": patch
---
Move published dock and illustration assets onto explicit package asset subpaths so consumers can opt in to the default visuals without runtime 404s or unconditional bundle bloat.
@@ -0,0 +1,6 @@
---
"@tutti-os/browser-node": patch
"@tutti-os/agent-gui": patch
---
Add host-rendered Browser Home support and an authenticated Electron BrowserNode automation projection for User and Agent Browser tabs, including stable page selection, leases, network authorization, and explicit `tutti browser` desktop routing.
@@ -0,0 +1,6 @@
---
"@tutti-os/agent-gui": patch
"@tutti-os/claude-sdk-sidecar": patch
---
Normalize Claude SDK `active_goal` messages and native `/goal` Stop-hook `goal_status` attachments, stop inferring Goal completion from ordinary Turn settlement, and settle exact Goal control operations through the Host-owned lifecycle lane instead of transient session runtime context.
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Treat Claude Code API Usage Billing as authenticated in the environment wizard. Claude Code can run on an API key / auth token / apiKeyHelper instead of an Anthropic Console login; `claude auth status` only reflects the stored OAuth session and is blind to those env/settings credentials, so the provider status probe now detects them directly and reports the provider as ready instead of blocking on "未登录". The login step label now distinguishes between a Console OAuth session ("已登录账号") and API Usage Billing ("已配置 API 计费"). A bare custom API endpoint without any credential is not treated as API billing, since the user may still be on an OAuth session against that endpoint.
@@ -0,0 +1,6 @@
---
"@tutti-os/agent-gui": patch
"@tutti-os/claude-sdk-sidecar": patch
---
Settle Claude Goal turns reliably when provider identity and lifecycle events race, and preserve turnless runtime failures as visible session errors.
+5
View File
@@ -0,0 +1,5 @@
---
"@tutti-os/claude-sdk-sidecar": patch
---
Preempt Claude's active response immediately for guidance and publish an explicit response boundary so clients stop rendering the interrupted thinking stream while the canonical Turn continues.
@@ -0,0 +1,5 @@
---
"@tutti-os/claude-sdk-sidecar": patch
---
Ship the complete Claude SDK sidecar runtime import closure and reject incomplete packed artifacts before publishing.
@@ -0,0 +1,9 @@
---
"@tutti-os/agent-gui": patch
"@tutti-os/desktop": patch
"@tutti-os/workbench-launchpad": patch
"@tutti-os/workbench-surface": patch
---
Keep package stylesheet sources on the standard `backdrop-filter` property and
fail builds when optimized renderer CSS drops the Chromium-supported declaration.
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Improve Codex custom-provider support: treat API keys from the environment, `config.toml`, or `auth.json` as authenticated without a ChatGPT login; expose only the configured model for custom `model_provider` endpoints; suppress non-actionable model-metadata warnings; and avoid duplicate assistant replies when Codex replays polished final text.
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Mirror relative Codex `model_catalog_json` files into the run-scoped sandbox `CODEX_HOME`. CC Switch and similar tools write `model_catalog_json = "cc-switch-model-catalog.json"`; Tutti previously copied only `config.toml`, so Codex `thread/start` failed with ENOENT and the UI showed "agent session is not connected".
@@ -0,0 +1,10 @@
---
"@tutti-os/agent-gui": minor
"@tutti-os/desktop": patch
---
Add a host-neutral Commerce Go package for membership, credits, and
registration-reward coordination. Refactor the Tutti account service into an
Account + Commerce adapter, and let AgentGUI hosts expose a right-click
“Copy user ID” action without moving clipboard or notification ownership into
the shared UI package.
+57
View File
@@ -0,0 +1,57 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json",
"access": "public",
"baseBranch": "main",
"bumpVersionsWithWorkspaceProtocolOnly": false,
"changelog": "@changesets/cli/changelog",
"changedFilePatterns": ["src/**", "package.json", "README.md"],
"commit": false,
"fixed": [
[
"@tutti-os/analytics",
"@tutti-os/analytics-debug",
"@tutti-os/event-stream-core",
"@tutti-os/connector-contracts",
"@tutti-os/connector-renderer",
"@tutti-os/workspace-file-manager",
"@tutti-os/workspace-file-reference",
"@tutti-os/workspace-issue-manager",
"@tutti-os/workspace-user-project",
"@tutti-os/workspace-app-center",
"@tutti-os/workspace-external-core",
"@tutti-os/workspace-terminal",
"@tutti-os/agent-activity-core",
"@tutti-os/agent-gui",
"@tutti-os/agent-session-replay",
"@tutti-os/agent-session-replay-runner",
"@tutti-os/commerce",
"@tutti-os/claude-sdk-sidecar",
"@tutti-os/browser-node",
"@tutti-os/workspace-file-preview",
"@tutti-os/workbench-snapshot",
"@tutti-os/workbench-electron",
"@tutti-os/workbench-host",
"@tutti-os/workbench-launchpad",
"@tutti-os/workbench-surface",
"@tutti-os/app-release-tools",
"@tutti-os/auth-bridge",
"@tutti-os/desktop-update-admission",
"@tutti-os/ui-i18n-runtime",
"@tutti-os/ui-notifications",
"@tutti-os/ui-rich-text",
"@tutti-os/ui-react-hooks",
"@tutti-os/ui-system"
]
],
"ignore": [],
"linked": [],
"privatePackages": {
"tag": false,
"version": true
},
"snapshot": {
"prereleaseTemplate": "{tag}-{datetime}",
"useCalculatedVersion": true
},
"updateInternalDependencies": "patch"
}
@@ -0,0 +1,7 @@
---
"@tutti-os/connector-renderer": minor
---
Export a host-neutral Connector access-selection panel with controlled catalog,
selection, localized-label, disabled, and busy-state contracts from
`@tutti-os/connector-renderer/ui`.
@@ -0,0 +1,7 @@
---
"@tutti-os/connector-contracts": minor
"@tutti-os/connector-renderer": minor
"@tutti-os/desktop": patch
---
Add the versioned Connector authorization View/Event protocol, configuration-driven native-secret forms, replaceable authorization rendering, and localized Tencent Docs authorization presentation support.
@@ -0,0 +1,5 @@
---
"@tutti-os/connector-renderer": patch
---
Replace an active Connector authorization attempt through one Host-owned command, wait for managed credential-broker termination before starting the replacement, propagate replacement and cancellation to the account control plane, start managed authorization only after an explicit user action, and keep dialog dismissal separate from explicit cancellation.
@@ -0,0 +1,5 @@
---
"@tutti-os/connector-renderer": patch
---
Recover connector authorization once from a stale market revision while preserving the request identity and submitted secret.
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Stop replaying in-flight connector authorization from durable state, so API-key Connect cannot complete a control-plane session with an empty secret.
@@ -0,0 +1,5 @@
---
"@tutti-os/desktop": patch
---
Keep the control-plane status and session outcome in API-key authorization start errors, so Connect failures are diagnosable instead of collapsing to a generic toast.
@@ -0,0 +1,5 @@
---
"@tutti-os/connector-renderer": patch
---
Converge OAuth authorization from authoritative connector state when callback-driven runtime reconciliation overlaps authorization continuation, and share concurrent authorization requests for one connector.
@@ -0,0 +1,5 @@
---
"@tutti-os/connector-renderer": patch
---
Keep OAuth authorization loading active until its durable operation reaches a terminal state, and prevent a late accepted response from overwriting that terminal result in connector cards.
@@ -0,0 +1,5 @@
---
"@tutti-os/connector-renderer": patch
---
Hide the idle Not installed status on Connector catalog cards so Authorization required stays the distinctive installed-connector mark.
@@ -0,0 +1,6 @@
---
"@tutti-os/connector-renderer": patch
---
Keep the Connector catalog toolbar Refresh spinner for explicit user refresh
commands, not daemon scheduled catalog sync.
@@ -0,0 +1,6 @@
---
"@tutti-os/connector-renderer": patch
---
Rank composer Connector shortcuts by installed authorized state first, then by
installation event, before applying the bounded quick-list limit.
@@ -0,0 +1,11 @@
---
"@tutti-os/agent-gui": patch
"@tutti-os/connector-renderer": minor
"@tutti-os/desktop": patch
---
Standardize Connector Composer integration around the shared Connector Market
package. Connector Market now exports the compact composer menu and the
authoritative dialog-open use case, AgentGUI maps capability options into that
host-neutral entry, and Desktop routes workspace and standalone requests through
the shared dialog state machine.
@@ -0,0 +1,12 @@
---
"@tutti-os/connector-renderer": minor
"@tutti-os/desktop": minor
---
Integrate the signed Connector Market into tutt-id and the desktop renderer.
Connector releases are now verified, installed durably, exposed through the
workspace service, and executed as daemon-owned MCP or sandboxed Node/Python
CLI capabilities. Standardize the reusable surface as the
`@tutti-os/connector-renderer` `/application`, `/i18n`, and `/ui` entrypoints
plus the Connector Daemon Core, Application, SQLite Adapter, Control Plane
Adapter, and Runtime Go modules.
@@ -0,0 +1,7 @@
---
"@tutti-os/connector-renderer": patch
---
Keep physically missing or invalid Connectors in their catalog section while a
repair installation is running, and only classify them as installed after the
new installation receipt is committed.
+6
View File
@@ -0,0 +1,6 @@
---
"@tutti-os/desktop-update-admission": patch
"@tutti-os/desktop": patch
---
Add the shared desktop minimum-version admission package and migrate Tutti Desktop to its common policy validation, updater lease, Electron controller, preload bridge, localization, and React UI. Keep loopback policy configuration exclusively in the mock-server process while clients own current-version and updater simulation.
+5
View File
@@ -0,0 +1,5 @@
---
"@tutti-os/workbench-surface": patch
---
Fix the dock agent-provider "连接/登录" popover button doing nothing when clicked. The hover-panel action fired on `onClick`, but the panel can be torn down between pointerdown and pointerup (a re-render race, or the overlapping workspace-app webview swallowing the pointerup), so the browser never dispatched the click and the button looked dead. The action now triggers on `pointerdown` (the event proven to reliably reach the button), with keyboard activation still flowing through `onClick` and a short dedupe so a mouse press doesn't double-fire.
+11
View File
@@ -0,0 +1,11 @@
---
"@tutti-os/event-stream-core": minor
---
Extract the catalog-agnostic event-stream transport core into a publishable
package. The connection lifecycle, heartbeat, backoff reconnect, frame
encode/decode and subscription registry now live in `@tutti-os/event-stream-core`,
generic over the client/server event and scope types and parameterized by an
injected `EventStreamProtocol`. `@tutti-os/client-tuttid-ts` keeps its public
`createTuttidEventStreamClient` surface unchanged and becomes a thin tutti
binding (workspace `scope.workspaceId`) on top of the core.
@@ -0,0 +1,6 @@
---
"@tutti-os/workspace-file-reference": patch
"@tutti-os/agent-gui": patch
---
Render `WorkspaceFileReferencePicker` on the shared `Dialog` base instead of a hand-rolled `createPortal(document.body)` + `fixed inset-0` overlay, and add a `scoped` prop. When `scoped` is set, the dialog renders inline (non-portaled, `absolute`) with an `absolute` overlay so it stays clipped within the nearest positioned ancestor. The agent GUI node now opens the picker with `scoped` so it is confined to the node window rather than covering the whole viewport.
+5
View File
@@ -0,0 +1,5 @@
---
"@tutti-os/agent-gui": patch
---
Include the registration credits reward background asset in the published package.
@@ -0,0 +1,16 @@
---
"@tutti-os/agent-gui": patch
"@tutti-os/ui-rich-text": minor
"@tutti-os/ui-system": patch
"@tutti-os/workspace-external-core": minor
---
Hydrate mention presentation in readonly rich-text conversations from the same
trigger providers used by the composer, so workspace app icons remain available
without serializing presentation URLs into Markdown.
Render semantic mention icons whenever a supplied image cannot load across the
shared mention pill, AgentGUI composer, and AgentGUI Markdown surfaces.
Add a host-agnostic mention service with bounded stale-while-revalidate cache,
React context integration, exact external-host resolution, and invalidation.
@@ -0,0 +1,6 @@
---
"@tutti-os/ui-rich-text": patch
---
Keep overflowing mention palette tab scroll buttons vertically aligned by
delegating their translation and scaling to the shared UnderlineTabs component.
@@ -0,0 +1,7 @@
---
"@tutti-os/agent-gui": patch
"@tutti-os/client-tuttid-ts": patch
---
Represent Provider-owned account billing, quota completeness, and exact Credits
through Provider-neutral Agent usage fields.
@@ -0,0 +1,11 @@
---
"@tutti-os/agent-gui": minor
"@tutti-os/ui-system": minor
"@tutti-os/desktop": patch
---
Add accessible drag-and-keyboard ordering to the Agent quick-prompt library.
The desktop adapter optimistically projects moves through a versioned
`beforePromptId` daemon contract, while hosts that omit the optional ordering
capability remain compatible. The UI System now exports a reusable Sortable
compound component adapted from the Dice UI shadcn registry.
+6
View File
@@ -0,0 +1,6 @@
---
"@tutti-os/agent-gui": patch
---
Close enlarged image previews from their empty backdrop and present the
top-right action as an explicit close control.
+5
View File
@@ -0,0 +1,5 @@
---
"@tutti-os/agent-gui": patch
---
Show whether each Handoff target is the current user's Agent or a shared Agent, including the shared owner's name and avatar when available.
+5
View File
@@ -0,0 +1,5 @@
---
"@tutti-os/agent-gui": patch
---
Keep the normal empty conversation Home visible for unavailable Agent targets, project offline and revoked-sharing copy through the existing Home status chrome, remove the duplicate Host unavailable-state slot, and block both editing and submission until the selected target is available.
+6
View File
@@ -0,0 +1,6 @@
---
"@tutti-os/workspace-file-reference": patch
"@tutti-os/agent-gui": patch
---
Use each reference source heading as its root navigation target instead of rendering a duplicate synthetic root directory in the picker sidebar. Keep type-only filtering in a cancellable recursive tree that removes directories without matching descendants, constrain keyword results by picker purpose, remove provenance filtering from the shared full picker, and hide opaque node ids from search result subtitles.
@@ -0,0 +1,5 @@
---
"@tutti-os/workspace-file-reference": minor
---
Allow hosts to expose a centered retry action for selected reference-picker content errors.
@@ -0,0 +1,5 @@
---
"@tutti-os/workspace-file-reference": minor
---
Separate reference-picker source tabs, sidebar groups, and directory children into explicit runtime lifecycles. Add stale-while-revalidate tab metadata, per-open asynchronous sidebar loading, in-flight-only read deduplication, and runtime invalidation while keeping selection preparation live on every confirmation.
@@ -0,0 +1,5 @@
---
"@tutti-os/agent-gui": major
---
Remove the obsolete `AgentHostInputApi.agentSessions` activity lifecycle surface and its unused `AgentHostAgentSessionsApi` type. Agent session lifecycle remains owned by the canonical AgentSessionEngine rather than the host capability contract.
@@ -0,0 +1,5 @@
---
"@tutti-os/ui-rich-text": minor
---
Replace the legacy `@tutti-os/ui-rich-text/at-panel` flat grouping helpers with the shared mention palette model and renderer APIs. Consumers should migrate from `buildMentionPaletteState`, `searchHelpers`, and `RichTextAt*` grouping aliases to `buildMentionPaletteModel`, `MentionPaletteFromState`, `createMentionPaletteStateAdapter`, and the `MentionPalette*` category/group types documented in the rich-text README.
@@ -0,0 +1,5 @@
---
"@tutti-os/workspace-file-reference": patch
---
Allow permission-sensitive reference sources to route file-type-only filters through scoped search, and constrain recursive browse filtering to the selected sidebar root.
@@ -0,0 +1,5 @@
---
"@tutti-os/agent-gui": major
---
Keep the AgentGUI All conversation filter unscoped so historical sessions from offline shared Agents remain visible alongside sessions from available Agents. Remove the obsolete `sectionAgentTargetFallbackId` host contract.

Some files were not shown because too many files have changed in this diff Show More