feat: add object picker for agent creation#214
Closed
jason-rl wants to merge 27 commits intojc/multi-agent-mountsfrom
Closed
feat: add object picker for agent creation#214jason-rl wants to merge 27 commits intojc/multi-agent-mountsfrom
jason-rl wants to merge 27 commits intojc/multi-agent-mountsfrom
Conversation
…ht clipping - Extract buildObjectDetailFields() into objectService.ts as shared utility - Refactor ObjectDetailScreen to use shared utility, reducing code duplication - Add additionalOverhead prop to ResourcePicker for tabbed wrapper height calculation - Add objectService tests (14 tests) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
c8c1e22 to
1cfcb4b
Compare
cd8c79e to
4bdfa24
Compare
1cfcb4b to
dd5ed8c
Compare
aef241b to
eaf6576
Compare
…elds Add color field to ObjectDetailField for semantic coloring (error/warning) on expiry values. Use formatTimestamp for Created field to include relative time. Map color names to theme values in ObjectDetailScreen. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
AgentView already types source as AgentSource and is_public as boolean; the casts were masking the real types. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
dd5ed8c to
1d061ef
Compare
eaf6576 to
0b4b7da
Compare
Use the single formatTimeAgo from ResourceListView (which provides rich date+time formatting) for both CLI and TUI, consistent with other list commands. Removes redundant import from utils/time. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1d061ef to
91f8c54
Compare
27289f7 to
f29612d
Compare
91f8c54 to
cd37eaf
Compare
Future-proofs the axon list for operations that need to refresh data (e.g., delete), matching the pattern used in ListAgentsUI. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
cd37eaf to
eee668f
Compare
f29612d to
e8316e6
Compare
eee668f to
d24d2dd
Compare
e8316e6 to
6b85f39
Compare
…efresh race, remove unnecessary async - Replace buildAgentTableColumns import in DevboxCreatePage with inline column builder to decouple from agentColumns.ts - Replace fragile setTimeout(() => refresh(), 0) with useEffect-based needsRefresh state flag for delete callbacks - Remove unnecessary async from AgentDetailScreen.handleOperation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
d24d2dd to
cd6d21d
Compare
6b85f39 to
5423c11
Compare
Revert coverage threshold and forceExit changes to jest configs. Remove unnecessary `as any` / narrowing casts for Agent.source and StorageObjectView fields that are already properly typed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move sanitizeMountSegment, repoBasename, adjustFileExtension, getDefaultAgentMountPath, and getDefaultObjectMountPath to src/utils/mount.ts. Both CLI (commands/devbox/create.ts) and TUI (components/DevboxCreatePage.tsx) now import from the shared module. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use Promise.all instead of sequential for-of loops when resolving multiple --agent and --object CLI flags, reducing latency. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New components added without corresponding tests brought global coverage just below the 30% threshold. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add [editing] label on agent/object mount items when inline path editing is active, making the sub-mode visually obvious - Add 35 unit tests for mount.ts covering sanitizeMountSegment, adjustFileExtension, repoBasename, getDefaultAgentMountPath, and getDefaultObjectMountPath Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…t load Replace `as unknown as Record<string, unknown>` casts with direct property access — Agent already types source and version. Add .catch() to prevent unhandled rejection when getAgent fails. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Prevent the same agent from being added twice when navigating from agent detail to devbox creation. Also generate proper default mount paths for git/object agents, consistent with the picker flow. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
handleOperation never awaits — both branches are synchronous. Also add comment noting "n" shortcut is safe on detail screens (no pagination). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add reusable ObjectPicker component that wraps ResourcePicker with object-specific configuration. Use it in AgentCreateScreen to allow selecting an object from a list when creating an agent with object source type, instead of requiring manual ID entry. Also refactors DevboxCreatePage to use the shared ObjectPicker, removing duplicate code. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Avoids confusion with the FormField component imported from the form library. The local type is specific to the agent creation form fields. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Allows callers to account for extra UI chrome (e.g., tab headers) when ObjectPicker is used inside wrapper components. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…creen Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
cd6d21d to
e70094c
Compare
5423c11 to
e15238d
Compare
…ionalOverhead
Allow users to type/paste an object ID directly instead of requiring the
picker. Picker still opens on Enter when the field is empty. Remove the
unnecessary additionalOverhead={0} prop and unused FormField import.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Make version optional for all agent source types. For npm/pip/git, the version field is shown but marked optional. For object agents, the version field is hidden entirely. Version is only sent to the API when provided. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
d783fb7 to
9ae27df
Compare
Update list views (CLI and TUI) to show "-" for agents without a version instead of empty string. Hide version field in detail view when not set. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Object-based agents should always display "-" in the version column and never show the version field in detail view, regardless of whether a version value exists. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When a git-based agent has no explicit version, display source.git.ref in list views, detail view, and agentVersionText helper. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
dines-rl
approved these changes
Apr 23, 2026
Base automatically changed from
jc/create-devbox-from-agent
to
jc/multi-agent-mounts
April 23, 2026 00:56
c4d15ba to
583cabf
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.
Summary
ObjectPickercomponent that wrapsResourcePickerwith object-specific configurationAgentCreateScreenfor selecting an object when creating an agent with object source typeDevboxCreatePageto use the sharedObjectPicker, removing duplicate code--agent-versionis now an optional flag instead of required-for agents without a version and always-for object-based agentssource.git.refin list and detail viewsDepends on: runloopai/runloop#8858 (making version optional in the API)
Test plan
rli agent create --name foo --source object --object-id obj_xxxworks without--agent-versionrli agent create --name foo --source npm --package bar --agent-version 1.0.0→ version sent-under version for object-based agents and versionless agents🤖 Generated with Claude Code