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.5-pr.568.1f028a6Prefer not to change any import paths? Install using npm alias so your code still imports npm i "base44@npm:@base44-preview/cli@0.1.5-pr.568.1f028a6"Or add it to your {
"dependencies": {
"base44": "npm:@base44-preview/cli@0.1.5-pr.568.1f028a6"
}
}
Preview published to npm registry — try new features instantly! |
netanelgilad
force-pushed
the
claude/cli-link-workspace-picker-h5x81l
branch
2 times, most recently
from
July 15, 2026 15:06
33cadb1 to
983dab3
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 19, 2026 09:09
983dab3 to
9beb9a4
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
base44 linkso it can link apps across any workspace the user can access, not just their personal one. The interactive flow now uses a two-step picker — choose a workspace, then choose an app scoped to it — while an explicit--app-idis validated by fetching the app directly, so linking works cross-workspace regardless of the picker's scope. Managed-source apps are rejected up front with a clear message.Related Issue
None
Type of Change
Changes Made
resolveExplicitAppId()inlink.ts: validates--app-idby callinggetApp()directly (works cross-workspace), maps 404/403 to a friendlyInvalidInputErrorwith hints, and rejects managed-source apps.chooseProjectInteractively(): a two-step picker that resolves the target workspace first (skipped when the user has a single workspace) and then lists/selects apps scoped to that workspace.resolveWorkspaceId()with an optionalpromptMessagesolinkcan ask "Which workspace is the app in?" instead of the create-oriented copy; clarify its doc comment.workspaceIdscoping tolistProjects()(passesworkspace_idtoGET /api/appswhen provided).is_managed_source_codeongetApp()/AppDetailSchema(isManagedSourceCode).--workspaceflag help to reflect it now scopes the app picker as well as create.mockGetApp()keyed off the app's own id; updatelinktests to mockgetApp, and add cases for cross-workspace link, managed-source rejection, and not-found errors.Testing
Checklist
Additional Notes
Behavior change:
--app-idno longer needs the app to appear in the personal-workspace project list; it is validated viagetAppand thus supports team/cross-workspace apps. Legacy--project-id/--projectIdaliases continue to work.🤖 Generated by Claude | 2026-07-19 09:09 UTC | 1f028a6