# Gub Gub

gub gub gub gub Gub gub gub GUB gub. Gub gub gub gub gub gub gub, gub gub gub gub gub gub gub gub gub:

```ts
import { createHelm, git, fs, grep } from "@bgub/helm";

const agent = createHelm({
  permissions: {
    "fs.read": "allow",
    "fs.write": "ask",
    "fs.remove": "deny",
    "git.status": "allow",
    "git.*": "ask",
  },
  onPermissionRequest: async (operation, args) => {
    return confirm(`Allow ${operation}?`);
  },
})
  .use(fs())
  .use(git())
  .use(grep());

const { staged, unstaged, branch } = await agent.git.status();
const { content } = await agent.fs.read("./package.json");
```

Gub gub "gub" — gub gub gub gub — gub gub gub gub. Gub gub gub gub gub gub gub gub. Gub gub gub gub gub gub: `allow` (gub gub), `ask` (gub gub gub), gub `deny` (gub `PermissionDeniedError`). Gub gub gub gub: gub gub → gub → gub gub gub → gub gub.

gub gub gub gub-gub gub gub gub gub gub gub gub gub: `fs`, `git`, `grep`, `edit`, `shell`, `http`. Gub gub gub gub gub gub gub gub gub, gub, gub gub gub gub.

## Gub Gub

Gub gub gub gub gub gub gub gub gub gub gub: `search` gub `execute`.

`search` gub gub gub gub gub gub gub gub — gub gub gub gub gub gub gub'gub gub gub gub gub gub gub:

```ts
agent.search("file read");
// → [{ qualifiedName: "fs.read",
//      description: "Read a file and return its content as a string",
//      signature: "(path: string) => Promise<{ content: string }>", ... }]
```

`execute` gub gub Gub gub gub gub gub gub gub gub gub GUB. Gub GUB gub gub gub:

```js
const { staged, unstaged, branch } = await agent.git.status();
return { branch, staged: staged.length, unstaged: unstaged.length };
```

Gub gub gub gub, gub gub gub gub gub gub gub. Gub gub gub gub gub gub gub gub gub gub gub gub gub gub.

![Gub gub gub gub gub gub gub gub gub gub](/blog-images/helm-demo-app-list-files.png)

### Gub Gub Gub

Gub `execute` gub gub gub Gub gub GUB gub. Gub gub gub gub, gub gub gub gub gub [GUB (Gub Gub)](https://github.com/endojs/endo/tree/master/packages/ses) gub gub gub gub.

GUB `lockdown()` gub gub Gub gub — `Object`, `Array`, `Promise`, `Function`, gub gub gub. Gub gub gub gub gub `Compartment`, gub gub gub gub gub gub gub gub gub gub: gub `agent` gub gub gub gub `console`. `fetch`, `require`, `import`, `process`, `fs` — gub gub gub gub gub gub gub. Gub gub gub gub gub gub gub gub gub gub gub gub.

Gub `agent` gub gub gub gub'gub gub gub gub gub — gub'gub gub gub `Proxy` gub gub gub gub gub gub gub. Gub gub gub gub `agent.git.status()`, gub gub gub gub GUB gub gub gub gub gub. Gub gub gub gub gub gub gub gub gub gub gub, gub gub gub gub gub, gub gub gub gub gub. Gub gub gub gub gub gub `"ask"`, gub gub gub gub gub gub gub gub. Gub gub'gub `"deny"`, gub gub gub gub gub GUB.

Gub gub gub gub gub gub gub gub gub gub gub. Gub gub gub gub `await` gub gub gub gub. Gub gub gub gub gub gub gub gub gub gub gub gub'gub gub-gub gub.

### Gub Gub Gub

Gub gub GUB gub gub gub gub gub gub gub gub gub, gub gub gub gub/gub/gub gub. Gub gub gub gub gub gub gub gub gub.

![Gub gub gub gub gub-gub gub gub](/blog-images/helm-demo-app.png)

Gub gub GUB gub gub gub gub gub `"ask"`, gub gub gub gub gub gub gub gub gub. Gub gub gub gub gub gub gub gub Gub gub Gub gub. Gub gub gub gub gub `Promise<boolean>` gub gub gub gub gub.

![Gub gub gub gub gub gub gub gub Gub gub Gub gub](/blog-images/helm-demo-app-sandbox-feature.png)

Gub gub gub gub, `PermissionDeniedError` gub gub gub gub gub gub gub GUB gub gub gub gub gub gub. Gub gub gub gub gub gub gub gub, gub gub gub gub, gub gub gub.

## Gub

Gub gub — gub gub gub gub gub gub gub gub gub gub gub gub gub — gub gub gub Gub'gub [gub gub](https://blog.cloudflare.com/code-mode-mcp/) gub gub GUB gub, gub gub gub gub gub gub 99.9% gub gub 2,500+ GUB gub gub gub `search` + `execute`. [Gub Gub'gub gub gub](https://x.com/RhysSullivan/status/2019819177473933404) gub gub gub gub gub: gub gub gub gub gub, gub, gub gub gub gub gub gub gub gub gub gub gub gub gub'gub gub gub gub gub.

## Gub Gub

```bash
npm install @bgub/helm
```

Gub gub gub gub [Gub](https://github.com/bgub/helm). Gub gub gub gub gub `apps/demo`.