{"_id":"@anygap/anycode","_rev":"6-9edf26ce96aa4f37135ee0a5d30ddfd5","name":"@anygap/anycode","dist-tags":{"latest":"0.4.1"},"versions":{"0.2.0":{"name":"@anygap/anycode","version":"0.2.0","keywords":["anygap","anycode","cli","coding-agent","llm"],"author":{"name":"Anygap"},"license":"MIT","_id":"@anygap/anycode@0.2.0","maintainers":[{"name":"aliibanisaeid","email":"ali1383.banisaeid@gmail.com"}],"homepage":"https://anygap.ir","bugs":{"url":"https://anygap.ir"},"bin":{"anycode":"bin/anycode.js"},"dist":{"shasum":"35bc48a881fc1b64a94fb8e18e415d3aadc493dc","tarball":"https://registry.npmjs.org/@anygap/anycode/-/anycode-0.2.0.tgz","fileCount":3,"integrity":"sha512-R52VShq5ZEZJKdvTuJCjOJbViA3vAdIU2I/ZH3vC1IthEjsUnfiSxORgqU0dASa8LxHbuBdApa0pxSFIcAjE2g==","signatures":[{"sig":"MEUCICfUB+Ix37G4ZcrrKknzox0zNMh7ENVOmFWtQhd3IjOzAiEA869/5owz6D/6chevtTgRjVF7Ik/dTaHBnKcwgIoiHwM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35086},"type":"module","engines":{"node":">=18"},"gitHead":"720755c89b4a132dc740fc90d97cb800321bae09","_npmUser":{"name":"aliibanisaeid","email":"ali1383.banisaeid@gmail.com"},"deprecated":"Broken: bin was stripped by npm on publish (no 'anycode' command). Use @anygap/anycode@>=0.2.1 (latest 0.3.0).","_npmVersion":"11.13.0","description":"AnyCode — a coding-agent CLI for Anygap (anygap.ir): stream chat completions and run an agentic tool-use loop against a compatible endpoint.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/anycode_0.2.0_1781653571916_0.5523502859548344","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@anygap/anycode","version":"0.2.1","keywords":["anygap","anycode","cli","coding-agent","llm"],"author":{"name":"Anygap"},"license":"MIT","_id":"@anygap/anycode@0.2.1","maintainers":[{"name":"aliibanisaeid","email":"ali1383.banisaeid@gmail.com"}],"homepage":"https://anygap.ir","bugs":{"url":"https://anygap.ir"},"bin":{"anycode":"bin/anycode.js"},"dist":{"shasum":"bad29aea072f299c8e394763c92abecd7715f505","tarball":"https://registry.npmjs.org/@anygap/anycode/-/anycode-0.2.1.tgz","fileCount":3,"integrity":"sha512-qdHqYXYEBZcyt5Rat86muKdox4Ml/h1QpoCwheLl17lYA0OVQO6OYIojqn+wdJwcOIgNKNajfSi6ViFkVJ1MkA==","signatures":[{"sig":"MEQCIDDIy8mSozUAluwc5SSkF5XEX7F+TkBvbMGjgqmTWhd2AiAWZ3bzc/9WpEPdllUPVOQaB20VskR90DgmOdr/lzcriA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35084},"type":"module","engines":{"node":">=18"},"gitHead":"720755c89b4a132dc740fc90d97cb800321bae09","_npmUser":{"name":"aliibanisaeid","email":"ali1383.banisaeid@gmail.com"},"_npmVersion":"11.13.0","description":"AnyCode — a coding-agent CLI for Anygap (anygap.ir): stream chat completions and run an agentic tool-use loop against a compatible endpoint.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/anycode_0.2.1_1781654031743_0.9882421465478513","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@anygap/anycode","version":"0.3.0","keywords":["anygap","anycode","cli","coding-agent","llm"],"author":{"name":"Anygap"},"license":"MIT","_id":"@anygap/anycode@0.3.0","maintainers":[{"name":"aliibanisaeid","email":"ali1383.banisaeid@gmail.com"}],"homepage":"https://anygap.ir","bugs":{"url":"https://anygap.ir"},"bin":{"anycode":"bin/anycode.js"},"dist":{"shasum":"bcf0185c87e1b3a8fa6fa4035dbf3885b1253d80","tarball":"https://registry.npmjs.org/@anygap/anycode/-/anycode-0.3.0.tgz","fileCount":6,"integrity":"sha512-oy5TLt8PUVWsh8MmymaihlMbwk91CahOIirFyEtA2UeaY/SWa+X1gFnwuIaEAsBh89oA1FkoiVtI/t0/NWUWQw==","signatures":[{"sig":"MEUCIQCu3VQeuAgyBltY4JHa6RvpejJKQ8xjV4JqLOf7iTRE5wIgfF4p8+JzR6YAcUU27bzSzJUZ971liEwq1PCq8DO69GA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83511},"type":"module","engines":{"node":">=18"},"gitHead":"720755c89b4a132dc740fc90d97cb800321bae09","_npmUser":{"name":"aliibanisaeid","email":"ali1383.banisaeid@gmail.com"},"_npmVersion":"11.13.0","description":"AnyCode — a coding-agent CLI for Anygap (anygap.ir): stream chat completions and run an agentic tool-use loop against a compatible endpoint.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/anycode_0.3.0_1781693099755_0.2625676150196825","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@anygap/anycode","version":"0.4.0","keywords":["anygap","anycode","cli","coding-agent","llm","mcp","agent"],"author":{"name":"Anygap"},"license":"MIT","_id":"@anygap/anycode@0.4.0","maintainers":[{"name":"aliibanisaeid","email":"ali1383.banisaeid@gmail.com"}],"homepage":"https://anygap.ir","bugs":{"url":"https://anygap.ir"},"bin":{"anycode":"bin/anycode.js"},"dist":{"shasum":"cf6db77fc34381ef60090d4979f86fcc466eb7ee","tarball":"https://registry.npmjs.org/@anygap/anycode/-/anycode-0.4.0.tgz","fileCount":18,"integrity":"sha512-gv3u0RPnjp4AK1iIQXPxjua09sE/Zc4F3KEv95VkaG6yaAgrtWujkEX0HiIvU6NMn73MWB9WeTstB4gJMpMpUg==","signatures":[{"sig":"MEUCIDpZP72NdQ4mVSUP4ZUjBnHcqPXPryDar/1W0IYddCr9AiEAv3lGWItP0WPoI2GMN9XSGRpqqUQSFZWqP1rG4zjiLH0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200076},"type":"module","engines":{"node":">=18"},"gitHead":"720755c89b4a132dc740fc90d97cb800321bae09","_npmUser":{"name":"aliibanisaeid","email":"ali1383.banisaeid@gmail.com"},"_npmVersion":"11.13.0","description":"AnyCode — a coding-agent CLI for Anygap (anygap.ir): an agentic tool-use REPL with plan mode, approval-with-diff, MCP, themes, and a chalk-rendered terminal UI.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ora":"^9.4.1","diff":"^7.0.0","boxen":"^8.0.1","chalk":"^5.6.2","marked":"^15.0.12","cli-truncate":"^6.0.1","string-width":"^8.2.1","cli-highlight":"^2.1.11","gradient-string":"^3.0.0","marked-terminal":"^7.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/anycode_0.4.0_1782503764268_0.5487614770980602","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@anygap/anycode","version":"0.4.1","description":"AnyCode — a coding-agent CLI for Anygap (anygap.ir): an agentic tool-use REPL with plan mode, approval-with-diff, MCP, themes, and a chalk-rendered terminal UI.","type":"module","engines":{"node":">=18"},"publishConfig":{"access":"public"},"homepage":"https://anygap.ir","author":{"name":"Anygap"},"bugs":{"url":"https://anygap.ir"},"keywords":["anygap","anycode","cli","coding-agent","llm","mcp","agent"],"license":"MIT","bin":{"anycode":"bin/anycode.js"},"dependencies":{"boxen":"^8.0.1","chalk":"^5.6.2","cli-highlight":"^2.1.11","cli-truncate":"^6.0.1","diff":"^7.0.0","gradient-string":"^3.0.0","marked":"^15.0.12","marked-terminal":"^7.3.0","ora":"^9.4.1","string-width":"^8.2.1"},"gitHead":"720755c89b4a132dc740fc90d97cb800321bae09","_id":"@anygap/anycode@0.4.1","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-8Wrx0/D/kshUW1w0bU/NK19KFXI4Y2Bdm8QSUNyYi/29ocRAJIqPXy2pMj96D9jMY4YT3lHRiYbJxg9JzPie3w==","shasum":"9d7e4b5252e1bcac9d2f74946ad9e2d0811353b2","tarball":"https://registry.npmjs.org/@anygap/anycode/-/anycode-0.4.1.tgz","fileCount":18,"unpackedSize":200626,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIG6eI524aiF8QXQkeOLv3Lm/ZhlbgTQdThnJRN6puNCwAiADS7lhF2fp3FvSUgDoS58B+USeB1d9Mp/D5fqEdqGUUA=="}]},"_npmUser":{"name":"aliibanisaeid","email":"ali1383.banisaeid@gmail.com"},"directories":{},"maintainers":[{"name":"aliibanisaeid","email":"ali1383.banisaeid@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/anycode_0.4.1_1782506094325_0.4980947149556272"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-16T23:46:11.661Z","modified":"2026-06-26T20:34:54.576Z","0.2.0":"2026-06-16T23:46:12.068Z","0.2.1":"2026-06-16T23:53:51.890Z","0.3.0":"2026-06-17T10:44:59.908Z","0.4.0":"2026-06-26T19:56:04.408Z","0.4.1":"2026-06-26T20:34:54.462Z"},"bugs":{"url":"https://anygap.ir"},"author":{"name":"Anygap"},"license":"MIT","homepage":"https://anygap.ir","keywords":["anygap","anycode","cli","coding-agent","llm","mcp","agent"],"description":"AnyCode — a coding-agent CLI for Anygap (anygap.ir): an agentic tool-use REPL with plan mode, approval-with-diff, MCP, themes, and a chalk-rendered terminal UI.","maintainers":[{"name":"aliibanisaeid","email":"ali1383.banisaeid@gmail.com"}],"readme":"# AnyCode CLI\n\nA small, **agentic coding CLI** for **Anygap** (آنی‌گپ · [anygap.ir](https://anygap.ir)).\nRun `anycode` in any project and it streams from a compatible endpoint at `https://anygap.ir/v1`,\nthen **reads, writes, edits (with diffs), searches, and runs** your code — with your approval —\nright in the terminal, like Codex or Claude Code.\n\nThe terminal UI renders **streaming Markdown**, **syntax-highlighted code**, **colored unified\ndiffs** with real `@@` hunk headers, a persistent **status/footer line** (model · mode · cwd ·\ntoken budget · estimated Toman cost), framed **tool-call cards**, and a gradient **AnyCode**\nwordmark in your chosen **color theme**. Color auto-degrades truecolor → 256 → 16 → none, and all\nrich output no-ops cleanly when piped or under `NO_COLOR`. The core (config, network, sandbox, agent\nloop, MCP client, raw-mode widgets) stays on Node.js built-ins (`readline`, `fs`, `child_process`,\n`fetch`); a thin `bin/render/` layer adds the presentation. Requires **Node 18+**.\n\nNew in this wave: a read-only **Plan Mode** (`/plan` → propose, `/approve` → execute), a\n**3-way approval** prompt (`y` / `n` / `a`lways) with the diff shown first, **MCP** support\n(connect stdio servers from `~/.anycode/mcp.json` and use their tools), selectable **themes**,\nan estimated **Toman cost** in the status line, and a friendly **first-run setup** wizard.\n\n> **Meet Andy** — AnyCode's little purple coding robot, who waves hello every time you start.\n\n---\n\n## Install\n\n```bash\n# Global install from npm (the package is scoped; the command stays `anycode`)\nnpm i -g @anygap/anycode\n```\n\nThe package name is `@anygap/anycode`, but it still installs an **`anycode`** command on your PATH.\n\n### Install from source (for development)\n\n```bash\ncd tools/anycode-cli\nnpm link\n```\n\nThis links this folder and gives you the same `anycode` command for local development.\n\n## Authenticate\n\nThe **first time** you run `anycode` with no config, a friendly setup wizard walks you through it:\npaste your API key, pick a default model, and choose a theme. Create an API key first at\n<https://anygap.ir/dashboard/keys> (it looks like `agp-...`). You can re-run setup any time with:\n\n```bash\nanycode login\n```\n\nThis stores your key and a default model slug at `~/.anycode/config.json` (chmod `600`).\nYou can also override values per-session with environment variables:\n\n```bash\nexport ANYCODE_API_KEY=agp-xxxxxxxx\nexport ANYCODE_MODEL=nex-n2-pro\nexport ANYCODE_THEME=ocean\n```\n\n> Pricing is a flat per-request charge in Toman, debited from your wallet — top up at\n> <https://anygap.ir/dashboard/wallet>. There is no per-token billing.\n\n## Usage\n\n```bash\nanycode                 # start the agentic REPL (default)\nanycode --plan          # start the REPL in read-only plan mode\nanycode agent \"<task>\"  # start the REPL seeded with a task\nanycode exec \"<task>\"   # run a task non-interactively, print result, exit\nanycode --continue      # resume your most recent session (alias: -c)\nanycode --resume        # pick a past session to resume (↑/↓), or --resume=<id>\nanycode models          # list models and pick a default (↑/↓)\nanycode login           # store/refresh your API key + default model\nanycode --help          # full help\n```\n\n### The agentic REPL\n\n`anycode` drops you into a conversational agent. Ask it to build, fix, or run something and it\nuses real tools to do it — creating files, editing them (shown as **diffs**), searching the\nproject, and running commands — instead of just printing code at you.\n\nIn-REPL commands and inline shortcuts:\n\n| Command / input    | Effect                                                  |\n| ------------------ | ------------------------------------------------------- |\n| `/plan [goal]`     | Read-only: investigate and **propose** a step plan      |\n| `/approve`         | Lift plan mode and **execute** the proposed plan        |\n| `/model` `/models` | Pick the active model with ↑/↓                          |\n| `/mode`            | Switch approval mode (suggest · auto-edit · full-auto)  |\n| `/theme`           | Switch the color theme (↑/↓)                            |\n| `/config`          | Show the active config and where it lives               |\n| `/mcp`             | List connected MCP servers and their tools              |\n| `/skills`          | List saved skills (reusable playbooks)                  |\n| `/skill <name>`    | Apply a saved skill to the next task                    |\n| `/sessions` `/resume` | Resume a past session (↑/↓), or `/resume <id>`       |\n| `/compress`        | Summarize older turns to free up context                |\n| `/diff`            | Show the git diff of your working tree                  |\n| `/init`            | Scaffold an `AGENTS.md` project-context file            |\n| `/status`          | Model, mode, cwd, tokens, estimated cost, turn count    |\n| `/tools`           | List the tools the agent can call                       |\n| `/clear` `/cwd` `/help` `/exit` | Reset · print cwd · help · quit            |\n| `@path`            | Attach a file's contents as context (**Tab** completes) |\n| `!command`         | Run a shell command directly                            |\n\nOpen the **slash-command palette** by pressing Enter on a bare `/` (or an unknown command): it's a\nfilterable ↑/↓ menu of every command. The line prompt also has **Tab-completion** — a leading `/`\ncompletes slash commands, and `@` completes file paths from the current directory.\n\n### Plan Mode\n\n`/plan` (or starting with `--plan`) puts AnyCode into a **read-only** state: it can read, search,\nand list to investigate, but every edit and command is refused. It produces a concise, numbered\n**plan** of what it would change and which commands it would run, then waits. Review it, and when\nyou're happy run `/approve` — plan mode lifts (back to `auto-edit` by default) and the agent\nexecutes the plan step by step. Nothing touches your files until you approve.\n\n### Approval modes\n\nAnyCode won't touch your files or run commands behind your back unless you let it:\n\n| Mode        | Behavior                                       |\n| ----------- | ---------------------------------------------- |\n| `plan`      | Read-only — propose a plan, make **no** changes |\n| `suggest`   | Ask before every edit and command *(default)*  |\n| `auto-edit` | Auto-apply file edits, ask before commands     |\n| `full-auto` | Apply edits and run commands automatically      |\n\nSwitch any time with `/mode`, or start with `--plan` / `--auto-edit` / `--full-auto`. Before each\nedit AnyCode shows the **colored diff** and then a **3-way prompt** — press `y` to apply once, `n`\nto skip, or `a` to apply this and **auto-approve** the rest of this session's edits. A built-in\ndeny-list refuses obviously catastrophic commands (`rm -rf /`, fork bombs, writing to raw devices,\n…) in *every* mode. `anycode exec` runs in `full-auto` since nothing can answer prompts.\n\n### Tools\n\nThe agent is given a small toolset and loops until the task is done:\n\n- `read_file` / `list_dir` — read a file / list a directory\n- `search` / `glob` — grep across files / find files by pattern\n- `write_file` — create or overwrite a file (diff shown, gated by approval)\n- `edit_file` — replace a unique snippet in a file (diff shown, gated by approval)\n- `multi_edit` — apply several edits to one file **atomically** (one diff, one round-trip)\n- `run_command` — run a shell command (gated by approval; destructive commands blocked)\n- `save_skill` — save a reusable playbook the agent can recall later (see **Skills** below)\n\nAll paths are sandboxed to the current working directory. Tool results are **classified**\n(`done` · `empty` · `error` · `refused` · `skipped`) so the agent reacts deliberately — e.g. it\nwon't keep retrying a command you declined. The system prompt also includes a compact, depth-limited\n**file-tree hint** of the project so the agent orients itself without a first `list_dir` call.\n\n### Sessions — persistence & resume\n\nEvery REPL session is saved under `~/.anycode/sessions/<id>.json` (the full transcript, model, cwd,\nand an auto-generated title) after each turn. Pick up where you left off with `anycode --continue`\n(most recent) or `anycode --resume` (a picker), and switch between past sessions mid-REPL with\n`/sessions` / `/resume`. When the conversation approaches the model's context budget AnyCode\n**auto-compacts** older turns into a summary (or run `/compress` yourself) so long sessions keep going.\n\n### Skills — reusable playbooks\n\nA **skill** is a short Markdown playbook the agent can recall on demand. Drop `*.md` files in\n`~/.anycode/skills/` (global) or `./.anycode/skills/` (per-repo, project wins on a name clash), with\nan optional front-matter `description:`. List them with `/skills`, apply one with `/skill <name>`,\nand the agent can write new ones for itself via the `save_skill` tool after it works out a\nrepeatable procedure.\n\n### Project context — `AGENTS.md`\n\nIf a `./AGENTS.md` (or `~/.anycode/AGENTS.md`) exists, AnyCode loads it into its system prompt so\nit knows your conventions, commands, and layout. Run `/init` to scaffold one.\n\n### MCP — connect external tools\n\nAnyCode speaks the **Model Context Protocol** (stdio transport). Configure servers in\n`~/.anycode/mcp.json` and AnyCode spawns each one at startup, runs the handshake, and exposes its\ntools to the agent under namespaced names (`mcp__<server>__<tool>`) alongside the built-ins:\n\n```json\n{\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-filesystem\", \".\"]\n    },\n    \"git\": { \"command\": \"uvx\", \"args\": [\"mcp-server-git\"] }\n  }\n}\n```\n\nEach server entry takes `command`, optional `args`, optional `env`, and optional `disabled: true`.\nA server that fails to start is reported but never blocks the REPL or the other servers. List what's\nconnected with `/mcp`. MCP tool calls are gated like commands, so plan/suggest mode still asks\nbefore a server with side effects runs.\n\n### Themes\n\nPick a color theme with `/theme` (or set `theme` in your config / `ANYCODE_THEME=`). Built-in\nthemes: `anygap` *(default)*, `ocean`, `sunset`, `slate`, and `mono`. The theme repaints the\nwordmark, accents, spinners, and status line on the next launch.\n\n## Coding models\n\n| Display name            | Slug                     | Context | Notes                                   |\n| ----------------------- | ------------------------ | ------- | --------------------------------------- |\n| Laguna M.1              | `laguna-m1`              | 256K    | Poolside's code-tuned model. *(default)* |\n| Nemotron 3 Super 120B   | `nemotron-3-super-120b`  | 1M      | NVIDIA, strong long-context reasoning.  |\n| Nex N2 Pro              | `nex-n2-pro`             | 256K    | Agentic coding & tool use.              |\n| GPT-OSS 120B            | `gpt-oss-120b`           | 131K    | OpenAI open-weight, general + code.     |\n| Nemotron 3 Ultra 550B   | `nemotron-3-ultra-550b`  | 1M      | NVIDIA flagship, deepest reasoning.     |\n| Hermes 3 405B           | `hermes-3-405b`          | 128K    | Nous Research, steerable agentic coding. |\n| North Mini Code         | `north-mini-code`        | 256K    | Cohere, fast code edits & tool use.     |\n\n## API\n\nAnyCode talks to a compatible endpoint:\n\n- Base URL: `https://anygap.ir/v1`\n- `POST /chat/completions` — SSE streaming and tool/function calling are forwarded\n- `GET /models`\n- Auth header: `Authorization: Bearer agp-...`\n\n## Configuration\n\n`~/.anycode/config.json`:\n\n```json\n{\n  \"apiKey\": \"agp-xxxxxxxx\",\n  \"model\": \"laguna-m1\",\n  \"approvalMode\": \"suggest\",\n  \"theme\": \"anygap\"\n}\n```\n\nThe file is written with `600` permissions. Environment variables\n(`ANYCODE_API_KEY`, `ANYCODE_MODEL`, `ANYCODE_THEME`) take precedence over the stored values.\nMCP servers live in a separate file, `~/.anycode/mcp.json` (see **MCP** above).\n\n> The status line shows an **approximate** Toman cost for the session, derived from token usage and\n> a per-model rate — a convenience estimate only. Your wallet at\n> <https://anygap.ir/dashboard/wallet> is the source of truth for actual charges.\n\n## Notice\n\nAnyCode's session persistence/resume, context compaction, skills, tool-result classification, and\nfile-tree hints are **original implementations** inspired by the public feature set of\n[NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent) (MIT, © 2025 Nous\nResearch). Its plan mode, 3-way approval-with-diff, tool-call cards, slash-command palette, usage\nline, MCP client, themes, and onboarding are **original implementations** written from scratch,\ninspired only by the public feature sets and terminal-UX patterns of tools like\n[Claude Code](https://claude.com/claude-code) and the\n[OpenAI Codex CLI](https://github.com/openai/codex). No source was copied — the file formats,\nschemas, protocol code, and designs here are our own.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}