Design an agent by clicking, not by filling a form - #67
Merged
Merged
Conversation
Making an agent was a column of text fields: type a name, type a role, type a path, pick from two dropdowns, press a button that explains it cannot save. Almost every choice there is a choice from a set this workbench already holds, so it should be a thing you click. It is five questions now — purpose, project, model, sandbox, review — one per step, each answered by a card, with the next unlocked as the current one is answered and any answered step reachable again from its own chip. A locked step says which answer is missing rather than nothing. Purpose is an object in the engine. `domain::AgentPurpose` carries a role, a suggested name, instructions and the patterns, skills, servers and tools that belong with them — review, implement, verify, audit, write, explore. Choosing one fills the blueprint, and the review step shows exactly what it filled, each line marked with what it is, above what the agent would be allowed to do: the folder, the network, the shell, the model, and every permission the chosen skills and servers would ask of the sandbox. A test asserts no purpose names a pattern, skill, server or tool the library does not have, so the wizard stays a shortcut through the editor rather than a second source of truth. A purpose also says in one line what the work needs of a model, and the model cards show where each one runs, whether it is ready, and what it costs — per token, per month, or in electricity. Choosing is then informed rather than alphabetical. The draft is restored before it is saved back. Written the other way round, the empty default overwrote the stored design the moment the panel reopened, and the panel came back blank. Creating still reports that an agent is written by the daemon, which owns the account it would run as. Closes #61
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.
Change
Making an agent was a column of text fields: type a name, type a role, type a path, pick from two dropdowns, press a button that explains it cannot save. Almost every choice there is a choice from a set this workbench already holds — so it should be a thing you click.
Five questions, one per step: purpose → project → model → sandbox → review. The next step unlocks as the current one is answered, any answered step is reachable again from its own chip, and a locked chip says which answer is missing.
Purpose is an object in the engine
domain::AgentPurposecarries a role, a suggested name, instructions, and the patterns, skills, servers and tools that belong with them — review changes, implement a change, run the tests, audit the interface, write the release notes, answer questions about the code. Choosing one fills the blueprint.The review step then shows what the purpose filled, each line marked with what it is (instructions, patterns, skills, servers, tools), and what the agent would be allowed to do: the folder, the network from its sandbox, the shell, the model, and every permission the chosen skills and servers would ask of the sandbox — blocked ones included.
A test asserts no purpose names a pattern, skill, server or tool the library does not have, so the wizard stays a shortcut through the editor rather than a second source of truth.
Informed choices, not alphabetical ones
A purpose carries one line about what the work needs of a model, shown above the model cards. The cards show where each model runs, whether it is ready, and what it costs — per token, per month, or in electricity. Sandbox cards show isolation, network and the account the work would run as.
One bug worth naming
The draft is restored before it is saved back. Written the other way round — save effect declared after the load effect but running with the pre-restore value — the empty default overwrote the stored design the moment the panel reopened, and it came back blank. Reopening now also returns to the first unanswered step.
Validation
cargo test -p open-cube-core— 27 tests, one new: every purpose names only patterns, skills, servers and tools the library actually has, and none hands an agent empty instructions.pnpm fallback,pnpm buildclean.tests, showed the role as coming from the purpose, listed what was filled, and listed the folder, network, shell, model and derived permissions. Reopened the tab and the draft came back.Security impact
None. Creating still reports that an agent is written by the daemon, which owns the account it would run as. The panel writes only its own draft to browser storage.
Closes #61.