Skip to content

Connect an Agent is buried in Setup and in a collapsed Account group; put it where each person looks, and call it Connect an AI Assistant #30895

Closed

Description

@objectstack-fleet

epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

Filing gate: ③ the maintainer's direct order. Asked 「用浏览器试一下,目前连接智能体系平台最核心的功能是否建议优化相关的界面以及把这个菜单放到更明显的位置」, then on the walkthrough's suggestions: 「都同意,立卡」 (2026-11-06). Found in a real-user browser walkthrough of Connect an Agent on main 04f36b63f8 (the widget and its page metadata are unchanged on 8b9cc712ab), as an administrator and as a member, on a local test deployment.

Business reason. Connecting an AI client is something every person does for themselves: the page says each call runs as the caller, with the caller's permissions. It is the platform's main way for people to work through Claude, Doubao, Cursor and the rest. Today nobody meets it on the way: a member does not know it exists, and an administrator finds it among datasource and connector screens.

Reader. The UI lane dev. The entries come from packages/mcp/src/connect-ui.ts:100-139 (navigationContributions), the avatar menu is in ui/packages/app-shell/src/layout/AppHeader.tsx (the 个人资料 item at line 1268), Home's checklist is ui/apps/console/src/pages/settings/FirstRunChecklist.tsx, and the labels are nav_connect_agent and pages.connect_agent in packages/platform-objects/src/apps/translations/zh-CN.ts:30,73,195 and the en.ts twin.

Duplicates. Searched connect agent in:title (23 hits, all closed: the client cards, the Account door #16746, key naming, copy fixes), Connect an Agent home (373, none about placement) and first-run checklist (the checklist itself, #30206 / #30868, closed). None moves the entry.

Measured

Who Path today What they see
Administrator Setup → 集成 (the second-last of 8 groups) → item 36 of the 40 shown (35 of 39 on 8b9cc712ab, which drops 功能开关) Between 数据源 and 连接器凭据
Member (chen@example.test) Account → 开发者 → 连接智能体 开发者 is collapsed by default (expanded: false); Setup answers 403
Everyone Home, the avatar menu, the app switcher No entry

The avatar menu holds 个人资料, 我的组织, theme, language and notifications, and sign out: the person's own things, which is where this belongs.

Expected

  1. The avatar menu has an item that opens the page, for every signed-in person.
  2. Home shows a dismissible card that says, in plain words, that you can work in this system from Claude, Doubao and similar AI assistants, with one button to the page. It is hidden once dismissed or once the person has connected one.
  3. The administrator's first-run checklist on Home gains a row for it. Its done state is read from a real record (an authorization or an API key the person holds), like the other rows, never from a click.
  4. In Account the entry leaves 开发者 for a group of its own, expanded by default. In Setup it moves out of the bottom of 集成 to the top part of the nav.
  5. The page and its entries are called 连接 AI 助手 / Connect an AI Assistant. Studio already has 智能体 for the agents you build, and Setup has AI 与 Embedder, so the current name reads as one of those.

Nothing in the top bar: it is already full. Items 2 and 3 can follow #30894, since both need to know whether the person has connected anything.

Activity

  1. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p2 · domain:ui · 2026-11-06T09:55Z

    ⛔ Not a claim.

    • From the maintainer's Connect an Agent walkthrough (「都同意,立卡」, 2026-11-06). The maintainer called it the platform's most central feature. p2: it is how a person reaches and uses that feature.

    Generated by Claude Code

  2. added
    domain:uiDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 6, 2026
  3. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#2 · os-tesla · session_01L9qibw7DekEe3wx5f3zphf

    Claim: PM loop round 5 · 2026-11-06T11:03Z
    Session: session_01L9qibz5UZefuR7CExjD9VX (card thread, dev) · seat session_01L9qibw7DekEe3wx5f3zphf
    Account: os-tesla
    Branch: claude/project-thread-j4vink (a cloud card thread can push only its designated branch)
    Worktree: objectstack-issue-30895
    Domain: domain:ui
    Seat: domain:ui#2
    File surface: packages/mcp/src/connect-ui.ts (navigationContributions), ui/packages/app-shell/src/layout/AppHeader.tsx (avatar menu), packages/platform-objects/src/apps/translations/*.ts (nav_connect_agent, pages.connect_agent) and the Account / Setup nav definitions they target, the console i18n packs for the avatar item, their tests, root .changeset/; ConnectAgentWidget.tsx ⛔
    Container & model: M, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (placement and naming of the Connect an Agent entry)
    Thread-read: 6682141676
    Premise: holds (packages/mcp/src/connect-ui.ts L100–139 on origin/main still contributes nav_connect_agent to setup/group_integrations and account/grp_account_developer; no avatar-menu item) · measured live first by the dev
    Serial constraints cleared: #30894 (ui seat 3, split 6683276259) edits ui/packages/app-shell/src/console/connect/**; this claim does not touch that directory. Expected 2–3 (Home card, checklist row) wait for #30894's "has connected" read and are a second PR Part of #30895.
    Scope this claim: Expected 1, 4, 5; the PR says Part of #30895.

  4. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#2 · os-tesla · session_01L9qibz5UZefuR7CExjD9VX
    os-dev-report

    {
      "issue": 30895,
      "status": "done",
      "branch": "claude/project-thread-j4vink",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/30935",
      "session": "session_01L9qibz5UZefuR7CExjD9VX",
      "premise_still_valid": true,
      "summary": "Part of #30895 (Expected 1, 4, 5). The page and both nav entries are renamed Connect an AI Assistant in en/zh-CN/ja-JP/es-ES (source digests re-recorded). Account: new expanded grp_account_ai_assistant slot after Inbox, filled by the MCP contribution. Setup: the entry moves to group_overview behind System Overview (same manage_platform_settings gate). Console avatar menu: a Connect an AI Assistant item under Profile, drawn only while the served Account app carries the connect_agent page; label in all ten console locales. Path text made false by the move fixed in plugin.ts, keys.ts, server.json, mcp README and five docs pages (surface extended by the seat). Measured live before/after as admin and member, en and zh.",
      "tests": "mcp 56 files/681 tests pass; platform-objects 117/1591 pass; ui packages/i18n + app-shell/src/layout 237 files, 2431 pass, 13 skipped; cli 4 pin files pass; runtime keys 21 pass; ablation of the avatar page gate (ablation-replace, anchor 1->0) reds the MCP-off case (1 failed | 7 passed), restored blob == HEAD. Head 0264ecd7.",
      "gates": "dispatch-gates --commands: 100 derived, 100 run, all exit 0 (check-plugin-teardown-shape --self-test exit 3 until the pinned commit was fetched, then 0); --ran reconciliation: 100 derived, 100 run, 0 NOT-MEASURED, 0 UNRUN. Extra: check:app-nav-i18n exit 0 (account 13 ids), check:changeset-fixed exit 0, ui check:new-line-citations 0 new; typecheck mcp/platform-objects/runtime/cloud-connection/service-automation/cli and type-check @object-ui/i18n/@object-ui/app-shell exit 0. CI: in_progress at report time.",
      "line_budget": "38 files at 0264ecd7, +299 / -104 = 403 changed lines (under 3000)",
      "files_changed": 38,
      "deviations": "File surface extended by the seat (wording only): packages/mcp/src/plugin.ts, packages/runtime/src/domains/keys.ts, packages/mcp/server.json, four named docs pages, plus content/docs/deployment/environment-variables.mdx and packages/mcp/README.md (announced to the seat). Comment-only edits in packages/cloud-connection/src/cloud-connection-ui.ts and packages/services/service-automation/src/connector-credentials-ui.ts (their priority headers named the moved entry), and packages/cli/scripts/check-app-nav-i18n.mjs comments; listed in the PR body. Local test:repo not run (CI's).",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "4 reads (issue_read x3, pull_request_read x1); 0 write tools",
      "api_writes": "2 relay writes: pr_create (fleet-write run 42217903031, PR #30935) and this os-dev-report comment (post-stamped)",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [
        "carrier: #30894 / seat · ConnectAgentWidget.tsx registry label 'Connect an Agent' (palette label) left while #30894 holds that directory · noted, not filed"
      ]
    }
  5. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#2 · os-tesla · session_01L9qibw7DekEe3wx5f3zphf

    ACCEPT → PR #30935 comment 6686013236 · 2026-11-06T13:31Z · head 34e84800 (Connect an AI Assistant: rename, Setup Overview, Account group, avatar item; 403 lines, Tier S path, Part of #30895). Landing through the merge queue. Expected 2 and 3 follow in a second PR after #30894.

  6. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#2 · os-tesla · session_01L9qibw7DekEe3wx5f3zphf

    Landed (part 1: rename, Setup Overview, Account group, avatar item) at 2026-11-06T14:01Z: PR #30935 merged as 78eb35253a (seat ACCEPT 6686013236 on head 34e84800). The PR said Part of #30895, so the card stays open.

    probe reading
    git grep -c grp_account_ai_assistant origin/main -- packages/platform-objects/src/apps/account.app.ts 1
    git grep -n "group: 'group_overview'" origin/main -- packages/mcp/src/connect-ui.ts line 121
    git grep -c header-connect-ai-assistant origin/main -- ui/packages/app-shell/src/layout/AppHeader.tsx 1

    Release: session_01L9qibw7DekEe3wx5f3zphf (domain:ui#2, claim 6683345034) · because part 1 has landed and part 2 cannot start · back to pm:queue, assignee cleared in this stroke.
    Resume-from: main@78eb35253ae672b41ab78c6ee2cc6c0e7784f72a
    Remainder: Expected 2 (the Home card) and Expected 3 (the first-run checklist row) both need "has this person connected anything", which #30894 provides. #30894 is pm:blocked (ui seat 3; server #30345 and #30918). The card's last PR (Fixes #30895) is dispatched once #30894 lands.

  7. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    on Nov 6, 2026
  8. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 7, 2026
  9. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · os-project-manager · session_01FEkQ5nLA7wiVY5YWjT9Svr

    Claim: PM loop round 1 · 2026-11-07T15:41Z
    Session: session_01FEkQ5pMhSEyeAKtt6btsBe (card thread, dev) · seat session_01FEkQ5nLA7wiVY5YWjT9Svr
    Account: os-project-manager
    Branch: claude/project-thread-l2jntk
    Worktree: objectstack-issue-30895
    Domain: domain:ui
    Seat: domain:ui#1
    File surface: Home: ui/apps/console/src/pages/settings/FirstRunChecklist.tsx and the Home page card, the shared "has connected" read in ui/packages/app-shell/src/console/connect/** (built by #30898), their i18n strings and tests, root .changeset/
    Container & model: M, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (placement of the Connect an AI Assistant entry)
    Thread-read: 6686623178
    Premise: holds: part 1 landed (PR #30935); Expected 2 and 3 waited on #30894, closed 2026-11-07 (PR #31125)
    Serial constraints cleared: second in this thread, after #30898's PR merges; the branch restarts on main then (Resume-from of Release 6686623178 is superseded by that restart)

    Scope: Expected 2 (Home card) and Expected 3 (first-run checklist row read from a real record); PR says Fixes #30895. Order: /mnt/project-files/pm-orders/ui/order-30898.md. Summons: the maintainer's 「开一个 devx 席位,开一个 spec 席位,开一个 ui 席位」 (this project, 2026-11-07).

  10. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · os-project-manager · session_01FEkQ5nLA7wiVY5YWjT9Svr

    Progress · 2026-11-07T19:08Z · answering triage's knock 6711762389

    #30895 is serial behind #30898 on the same card thread (claim's branch claude/project-thread-l2jntk). It could not start until PR #31198 merged (2026-11-07T17:50Z); the seat sent the start at 2026-11-07T17:53Z, with the branch restarted on main and the "has connected" read #30898 built to be reused, not copied. No commit is pushed yet.
    Next act: a draft PR with Fixes #30895 (Expected 2, the dismissible Home card; Expected 3, the administrator first-run checklist row read from a real authorization or API key).
    ETA: about three hours from this comment, for the draft PR and the dev report.

  11. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · os-project-manager · session_01FEkQ5pMhSEyeAKtt6btsBe

    os-dev-report

    {
    "issue": 30895,
    "status": "done",
    "branch": "claude/project-thread-l2jntk",
    "pr": "#31236",
    "head": "68ff0b24",
    "session": "session_01FEkQ5pMhSEyeAKtt6btsBe",
    "premise_still_valid": true,
    "summary": "Expected 2: a dismissible Home card for every signed-in person (one plain sentence, one button to Connect an AI Assistant), drawn only when MCP is on, the person has not closed it on this browser, and useConnectedAccess answered nothing connected (no authorized assistant, no working API key); no card while the read is out or failed. Dismissal measured first: Home has no server-side preference store, its two dismissible items use browser localStorage, so the card does too, keyed per person. Expected 3: first-run checklist row 7 connect_assistant, done from the same read (never a click), left out when unreadable or MCP is off, read only once the checklist draws. One read reused from PR #31198 (gains { enabled } and a failure-safe assistants read); the avatar menu's path rule moved to console/connect/connectAssistantPath.ts and is shared by all three entries. Eight new keys per pack; Clause-② measured yes (widening), same as the seat's corrected arm.",
    "tests": "ui vitest home/ + connect/ + layout/ + console settings/ + packages/i18n/ on 68ff0b2: 318 files, 3263 passed, 13 skipped (new: card 9/9, checklist 7/7); type-check app-shell, i18n, console exit 0; ablations (restored blob == HEAD each): card shown while connected 3 failed / 6 passed; stored dismissal ignored 1 failed / 8 passed; row never done 2 failed / 15 passed; live showcase: admin en/zh (card + row not done, button opens the page, after an API key mint no card and row done 3 of 7), member zh (card, close survives reload, no checklist).",
    "gates": "dispatch-gates --commands on 68ff0b2: 38 derived, 38 exit 0; --ran: 38 derived, 38 run, 0 NOT-MEASURED, 0 UNRUN (record: project files pm-orders/ui/30895-gates-ran.txt); eslint touched files 0 errors, new files 0 warnings. PR check-runs: in_progress at report time.",
    "line_budget": "723 changed lines (+694 / -29, 22 files) vs 3000",
    "files_changed": 22,
    "deviations": [
    "File surface: ui/packages/app-shell/src/layout/AppHeader.tsx (its copy of the Connect path rule moved to console/connect/connectAssistantPath.ts, behaviour unchanged) and ui/packages/app-shell/src/index.ts (exports useConnectedAccess, connectAssistantPath for the console) are outside the listed files.",
    "Changeset also names @object-ui/console (patch): it is not private and ships dist.",
    "After the branch restart a fresh pnpm install was needed (lint gained a metadata-core link on main) before the console closure would build.",
    "Local test:repo not run (CI's)."
    ],
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "1 — issue_read x1 (claim read, reads only); 0 writes",
    "api_writes": "2 — relay pr_create (fleet-write run 42405228431, PR #31236), this os-dev-report comment (post-stamped)",
    "open_questions": [],
    "security_findings": "none",
    "out_of_scope_findings": [
    "carrier: none · an administrator with nothing connected gets both the Home card and the checklist row, each reading the two records once; noted in Acceptance notes, not filed"
    ]
    }


    Generated by Claude Code

  12. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · os-project-manager · session_01FEkQ5nLA7wiVY5YWjT9Svr

    Claim amendment · 2026-11-07T19:17Z · claim 6709202999 · the declaration, measured by the dev

    Clause-②: yes (widening)
    Metadata-protocol: none

    The claim said Clause-②: no as a default. The diff adds eight keys to every published @object-ui/i18n locale pack (home.connectAssistant.* and console.firstRunChecklist.connectAssistant.*) and removes or rewords none, so it widens a published surface. The new @object-ui/app-shell exports are on a private package. The seat owes a TIER_DEFAULT review of the declaration before landing. Everything else in the claim stands.

  13. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · os-project-manager · session_01FEkQ5nLA7wiVY5YWjT9Svr

    ACCEPT → PR #31236 comment 6712049162 · 2026-11-07T19:34Z · head 68ff0b24d8f7246075ba39a7b6b46023b68ff439; declaration review PASS 6711875180. Landing by relay pr_ready + automerge_enable.

  14. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · os-project-manager · session_01FEkQ5nLA7wiVY5YWjT9Svr

    Landed · 2026-11-07T20:02Z

    Reading Value
    PR #31236 MERGED 2026-11-07T20:01Z, merge commit a0b40f2a29af9ed111f758f891acfcf3b2ea2d45 on main
    #30895 closed completed by Fixes #30895; no other domain:ui card left the open inventory

    State: pm:dispatched removed, assignee cleared.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:uiDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestpriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions