mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-15 06:04:43 +00:00
refactor: generalize permissions example
This commit is contained in:
parent
6e6d94be38
commit
5127b2c4ed
5 changed files with 17 additions and 14 deletions
|
|
@ -157,7 +157,7 @@ await claude.prompt([
|
|||
]);
|
||||
```
|
||||
|
||||
See `examples/claude-permissions/src/index.ts` for a complete Claude example with interactive approve/reject handling.
|
||||
See `examples/permissions/src/index.ts` for a complete permissions example that works with Claude and Codex.
|
||||
|
||||
## Destroy a session
|
||||
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ const options = await session.getConfigOptions();
|
|||
const modes = await session.getModes();
|
||||
```
|
||||
|
||||
Claude permission modes use the same surface:
|
||||
Permission modes use the same surface:
|
||||
|
||||
```ts
|
||||
const claude = await sdk.createSession({
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "@sandbox-agent/example-claude-permissions",
|
||||
"name": "@sandbox-agent/example-permissions",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
|
|
@ -6,11 +6,12 @@ import {
|
|||
type SessionPermissionRequest,
|
||||
} from "sandbox-agent";
|
||||
|
||||
const permissionMode = process.env.CLAUDE_PERMISSION_MODE?.trim() || "default";
|
||||
const autoReply = parsePermissionReply(process.env.CLAUDE_PERMISSION_REPLY);
|
||||
const agent = (process.env.PERMISSIONS_AGENT?.trim() || "claude").toLowerCase();
|
||||
const requestedPermissionMode = process.env.PERMISSION_MODE?.trim();
|
||||
const autoReply = parsePermissionReply(process.env.PERMISSION_REPLY);
|
||||
const promptText =
|
||||
process.env.CLAUDE_PERMISSION_PROMPT?.trim() ||
|
||||
"Create ./permission-example.txt with the text 'hello from Claude permissions example'.";
|
||||
process.env.PERMISSION_PROMPT?.trim() ||
|
||||
`Create ./permission-example.txt with the text 'hello from the ${agent} permissions example'.`;
|
||||
|
||||
const sdk = await SandboxAgent.start({
|
||||
spawn: {
|
||||
|
|
@ -20,19 +21,21 @@ const sdk = await SandboxAgent.start({
|
|||
});
|
||||
|
||||
try {
|
||||
await sdk.installAgent("claude");
|
||||
await sdk.installAgent(agent);
|
||||
|
||||
const agents = await sdk.listAgents({ config: true });
|
||||
const claude = agents.agents.find((agent) => agent.id === "claude");
|
||||
const configOptions = Array.isArray(claude?.configOptions)
|
||||
? (claude.configOptions as Array<{ category?: string; options?: unknown[] }>)
|
||||
const selectedAgent = agents.agents.find((entry) => entry.id === agent);
|
||||
const configOptions = Array.isArray(selectedAgent?.configOptions)
|
||||
? (selectedAgent.configOptions as Array<{ category?: string; currentValue?: string; options?: unknown[] }>)
|
||||
: [];
|
||||
const modeOption = configOptions.find((option) => option.category === "mode");
|
||||
const availableModes = extractOptionValues(modeOption);
|
||||
const permissionMode = requestedPermissionMode || modeOption?.currentValue || availableModes[0] || "default";
|
||||
|
||||
console.log(`Claude permission mode: ${permissionMode}`);
|
||||
console.log(`Agent: ${agent}`);
|
||||
console.log(`Permission mode: ${permissionMode}`);
|
||||
if (availableModes.length > 0) {
|
||||
console.log(`Available Claude modes: ${availableModes.join(", ")}`);
|
||||
console.log(`Available modes: ${availableModes.join(", ")}`);
|
||||
}
|
||||
console.log(`Working directory: ${process.cwd()}`);
|
||||
console.log(`Prompt: ${promptText}`);
|
||||
|
|
@ -43,7 +46,7 @@ try {
|
|||
}
|
||||
|
||||
const session = await sdk.createSession({
|
||||
agent: "claude",
|
||||
agent,
|
||||
permissionMode,
|
||||
sessionInit: {
|
||||
cwd: process.cwd(),
|
||||
Loading…
Add table
Add a link
Reference in a new issue