link: two-step workspace picker + cross-workspace --app-id#568
Open
netanelgilad wants to merge 1 commit into
Open
link: two-step workspace picker + cross-workspace --app-id#568netanelgilad wants to merge 1 commit into
netanelgilad wants to merge 1 commit into
Conversation
Contributor
🚀 Package Preview Available!Install this PR's preview build with npm: npm i @base44-preview/cli@0.1.3-pr.568.e436c11Prefer not to change any import paths? Install using npm alias so your code still imports npm i "base44@npm:@base44-preview/cli@0.1.3-pr.568.e436c11"Or add it to your {
"dependencies": {
"base44": "npm:@base44-preview/cli@0.1.3-pr.568.e436c11"
}
}
Preview published to npm registry — try new features instantly! |
netanelgilad
force-pushed
the
claude/cli-link-workspace-picker-h5x81l
branch
from
July 15, 2026 14:51
f1c286a to
33cadb1
Compare
The `link` existing-app picker was scoped to the caller's personal workspace
(the server defaults app listing to the active workspace), so apps in other
workspaces were unreachable — and `--app-id` for such an app was rejected by
the personal-scoped pre-validation.
- Interactive "link existing" now picks a workspace first (skipped when you
belong to only one), then lists apps scoped to that workspace via the new
listProjects({ workspaceId }) (workspace_id query param).
- `--workspace <id>` scopes that picker (in addition to its --create meaning).
- `--app-id` is now validated by fetching the app directly (getApp), so it
links any app you can access regardless of workspace; managed-source apps
are rejected with a clear message, and unknown/inaccessible ids get a
friendly "not found" error.
Adds resolveListingWorkspaceId (all memberships, since linking only reads),
is_managed_source_code on getApp/AppDetail, and link specs for the
cross-workspace, managed-source, and not-found paths.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0171Y6jogaAWB1suBYaEULp1
netanelgilad
force-pushed
the
claude/cli-link-workspace-picker-h5x81l
branch
from
July 15, 2026 15:06
33cadb1 to
983dab3
Compare
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.
Note
Description
Reworks the
base44 linkcommand's existing-app selection to be workspace-aware. Interactive linking now uses a two-step flow — pick a workspace (skipped when you belong to only one), then pick an app scoped to that workspace — while--app-idis validated directly viagetAppso it can link any app you can access, including apps in workspaces other than your personal one. Managed-source apps are rejected with a clear message.Related Issue
None
Type of Change
Changes Made
resolveExplicitAppId()tolink.ts: validates--app-idby fetching the app directly, so cross-workspace apps become linkable; surfaces a helpfulInvalidInputErroron 404/403 and rejects managed-source apps.chooseProjectInteractively(): resolves the target workspace (viaresolveWorkspaceId, prompting only when in more than one workspace), then lists and picks a linkable app scoped to that workspace.resolveWorkspaceId()with an optionalpromptMessagesolinkcan ask "Which workspace is the app in?" instead of the create-oriented wording.listProjects()now accepts an optionalworkspaceIdand passesworkspace_idtoGET /api/appsto scope the app list.getApp()now requestsis_managed_source_code;AppDetailSchemaparses/transforms it toisManagedSourceCode.-w, --workspacehelp text to reflect that it also scopes the app picker.TestAPIServer.mockGetApp()(keyed off the response's ownid) and updatedlink.spec.tsto cover cross-workspace linking, managed-source rejection, and the not-found error path.Testing
Checklist
Additional Notes
The server remains the source of truth for permissions — the CLI never filters or validates by role. Existing-app links via
--app-idno longer require the app to appear in the caller's personal-scoped project list, which was the previous limitation.🤖 Generated by Claude | 2026-07-15 15:07 UTC | e436c11