@viberaven/cli 0.1.0-beta.6 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +49 -106
- package/README.md +70 -85
- package/SECURITY.md +52 -36
- package/assets/report/assets/provider-authjs.svg +5 -5
- package/assets/report/assets/provider-aws.svg +5 -5
- package/assets/report/assets/provider-logrocket.svg +4 -4
- package/assets/report/station.js +8319 -0
- package/dist/cli.js +4048 -4592
- package/dist/cli.js.map +4 -4
- package/dist/report/assets/provider-authjs.svg +5 -5
- package/dist/report/assets/provider-aws.svg +5 -5
- package/dist/report/assets/provider-logrocket.svg +4 -4
- package/dist/report/station.js +8319 -0
- package/package.json +6 -8
- package/templates/AGENTS.snippet.md +51 -41
- package/templates/CLAUDE.snippet.md +16 -0
- package/templates/CURSOR.snippet.md +16 -0
package/AGENTS.md
CHANGED
|
@@ -1,106 +1,49 @@
|
|
|
1
|
-
# VibeRaven CLI
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
npx -y @viberaven/cli
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
Then scan again. Agents should use `scan` without `--open`; open the report only when the user wants the browser map.
|
|
52
|
-
|
|
53
|
-
If scan output says `LOGIN_REQUIRED`, stop and ask the user to complete:
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
npx -y @viberaven/cli@beta login
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Then rerun:
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
npx -y @viberaven/cli@beta scan
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
## Read
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
1. `.viberaven/agent-summary.md` — short briefing and top gaps
|
|
72
|
-
|
|
73
|
-
2. `.viberaven/last-scan.json` — full mission map, providers, checks
|
|
74
|
-
|
|
75
|
-
3. `.viberaven/report.html` — visual map for the user (human menu or `--open`)
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
## Fix loop
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
1. `npx -y @viberaven/cli@beta prompt` — stdout = copy-ready prompt for the top gap
|
|
84
|
-
|
|
85
|
-
Or: `viberaven prompt --gap <id>` / `--area database` / `--provider supabase`
|
|
86
|
-
|
|
87
|
-
2. Implement the change in the repo.
|
|
88
|
-
|
|
89
|
-
3. `npx -y @viberaven/cli@beta scan` — verify production core % and gap count improved.
|
|
90
|
-
|
|
91
|
-
4. Tell the user to review `.viberaven/report.html` for the provider map.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
## Rules
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
- Do not skip the scan — VibeRaven uses repo evidence plus managed analysis, not generic checklists.
|
|
100
|
-
|
|
101
|
-
- Prefer fixing **critical** gaps first unless the user names an area.
|
|
102
|
-
|
|
103
|
-
- Do not claim external dashboard setup is done unless checks pass or the user confirmed manually.
|
|
104
|
-
|
|
105
|
-
- Do not claim human-provider actions as repo-code fixes. Human-provider actions include dashboard setup, billing/product configuration, DNS, webhooks, provider credentials, quota upgrades, and read-only MCP/provider-live verification.
|
|
106
|
-
|
|
1
|
+
# VibeRaven CLI - Agent Instructions
|
|
2
|
+
|
|
3
|
+
Use VibeRaven when the user asks whether an app is production-ready, launch-ready, safe to deploy, or missing auth, database, payments, deployment, monitoring, security, provider setup, Vercel, or Supabase checks.
|
|
4
|
+
|
|
5
|
+
VibeRaven is the Agent Context + Production Gate.
|
|
6
|
+
|
|
7
|
+
## Required Agent Loop
|
|
8
|
+
|
|
9
|
+
Run from the project root:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx -y @viberaven/cli --agent-mode
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Read in this order:
|
|
16
|
+
|
|
17
|
+
1. `.viberaven/agent-tasklist.md` - the tasklist-first gate
|
|
18
|
+
2. `.viberaven/gate-result.json` - the machine verdict
|
|
19
|
+
3. `.viberaven/context-map.json` - compact context for the next agent step
|
|
20
|
+
4. `.viberaven/agent-summary.md` - scan context
|
|
21
|
+
5. `.viberaven/launch-playbook.md` - full launch checklist
|
|
22
|
+
|
|
23
|
+
Fix one repo-code gap at a time. Prefer:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx -y @viberaven/cli next --json
|
|
27
|
+
npx -y @viberaven/cli prompt --gap <id>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
After a fix:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx -y @viberaven/cli --verify
|
|
34
|
+
npx -y @viberaven/cli --strict
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
For Vercel + Supabase checks:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npx -y @viberaven/cli audit --vercel-supabase
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Rules
|
|
44
|
+
|
|
45
|
+
- Do not skip VibeRaven before deploy/build/cleanup when production readiness is in scope.
|
|
46
|
+
- Do not claim provider dashboard checks are fixed by repo-code edits.
|
|
47
|
+
- Provider dashboard checks, billing/product configuration, DNS, webhooks, credentials, quotas, and live provider verification must be completed or verified in the provider dashboard or through read-only provider evidence.
|
|
48
|
+
- If VibeRaven prints `LOGIN_URL_READY`, open that URL for the user. Say: "I opened VibeRaven sign-in so you can approve access; I will continue after approval."
|
|
49
|
+
- Do not ask for passwords, tokens, cookies, or secrets.
|
package/README.md
CHANGED
|
@@ -1,85 +1,70 @@
|
|
|
1
|
-
# @viberaven/cli
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npx -y @viberaven/cli
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
viberaven
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
npm run cli:build
|
|
74
|
-
npm run cli:test
|
|
75
|
-
node packages/cli/dist/cli.js scan
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
Inside `packages/cli`:
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
npm run typecheck # tsc against the shared station engine
|
|
82
|
-
npm run demo-report # render a sample report.html and open it
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
The report reuses the Station Mission Map visual language (`src/report/reportStyles.ts`) for parity with the extension.
|
|
1
|
+
# @viberaven/cli
|
|
2
|
+
|
|
3
|
+
VibeRaven is the Agent Context + Production Gate for AI-built apps. It gives Claude Code, Codex, Cursor, and other coding agents a production-readiness loop before Vercel/Supabase deployment.
|
|
4
|
+
|
|
5
|
+
## Humans
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx -y @viberaven/cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
No subcommand is needed in a real terminal. It opens the interactive menu for sign-in, scan, report, provider guides, dashboards, prompts, and sign-out.
|
|
12
|
+
|
|
13
|
+
## Coding Agents
|
|
14
|
+
|
|
15
|
+
Agents should run:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx -y @viberaven/cli --agent-mode
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Then read artifacts in this order:
|
|
22
|
+
|
|
23
|
+
1. `.viberaven/agent-tasklist.md`
|
|
24
|
+
2. `.viberaven/gate-result.json`
|
|
25
|
+
3. `.viberaven/context-map.json`
|
|
26
|
+
4. `.viberaven/agent-summary.md`
|
|
27
|
+
5. `.viberaven/launch-playbook.md`
|
|
28
|
+
|
|
29
|
+
Fix one repo-code gap, then run:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx -y @viberaven/cli --verify
|
|
33
|
+
npx -y @viberaven/cli --strict
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
For focused work:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npx -y @viberaven/cli next --json
|
|
40
|
+
npx -y @viberaven/cli prompt --gap <id>
|
|
41
|
+
npx -y @viberaven/cli audit --vercel-supabase
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Provider dashboard checks are not cleared by repo-code edits. Billing/product configuration, DNS, webhooks, credentials, quotas, and live provider verification must be completed or verified in the provider dashboard or through read-only provider evidence.
|
|
45
|
+
|
|
46
|
+
## Machine Output
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npx -y @viberaven/cli --agent-mode --json
|
|
50
|
+
npx -y @viberaven/cli --agent-mode --jsonl
|
|
51
|
+
npx -y @viberaven/cli --strict --json
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Machine artifact contract:
|
|
55
|
+
|
|
56
|
+
```text
|
|
57
|
+
docs/contracts/artifacts.md
|
|
58
|
+
https://viberaven.dev/schemas/gate-result.schema.json
|
|
59
|
+
https://viberaven.dev/schemas/context-map.schema.json
|
|
60
|
+
https://viberaven.dev/schemas/gap.schema.json
|
|
61
|
+
https://viberaven.dev/schemas/heal-result.schema.json
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Development
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npm run cli:build
|
|
68
|
+
npm run cli:test
|
|
69
|
+
node packages/cli/dist/cli.js scan
|
|
70
|
+
```
|
package/SECURITY.md
CHANGED
|
@@ -1,36 +1,52 @@
|
|
|
1
|
-
# Security
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
|
|
5
|
-
The
|
|
6
|
-
|
|
7
|
-
- API keys for model calls live on the
|
|
8
|
-
- Local credentials store only a
|
|
9
|
-
- Never commit `credentials.json` or paste tokens into chat.
|
|
10
|
-
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
1
|
+
# Security - `@viberaven/cli`
|
|
2
|
+
|
|
3
|
+
## Managed Scan Boundary
|
|
4
|
+
|
|
5
|
+
The npm CLI does not read `OPENAI_API_KEY` and does not accept a bring-your-own-key scan path. Scans use the VibeRaven managed API after device login, same as the signed-in VS Code extension.
|
|
6
|
+
|
|
7
|
+
- API keys for model calls live on the server, not in the published npm package.
|
|
8
|
+
- Local credentials store only a VibeRaven access token in `%APPDATA%\viberaven\credentials.json` or `~/.config/viberaven/`.
|
|
9
|
+
- Never commit `credentials.json` or paste tokens into chat.
|
|
10
|
+
|
|
11
|
+
## Safe Commands
|
|
12
|
+
|
|
13
|
+
Human terminal:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npx -y @viberaven/cli
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Agent or CI gate:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx -y @viberaven/cli --agent-mode
|
|
23
|
+
npx -y @viberaven/cli --verify
|
|
24
|
+
npx -y @viberaven/cli --strict
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
VibeRaven is the Agent Context + Production Gate. Agents should read `.viberaven/agent-tasklist.md`, `.viberaven/gate-result.json`, and `.viberaven/context-map.json` before claiming an app is safe to deploy.
|
|
28
|
+
|
|
29
|
+
## Written Artifacts
|
|
30
|
+
|
|
31
|
+
After a scan, the CLI may create:
|
|
32
|
+
|
|
33
|
+
| Path | Contents |
|
|
34
|
+
|------|----------|
|
|
35
|
+
| `.viberaven/last-scan.json` | Full scan payload |
|
|
36
|
+
| `.viberaven/agent-tasklist.md` | Agent tasklist |
|
|
37
|
+
| `.viberaven/gate-result.json` | Machine gate verdict |
|
|
38
|
+
| `.viberaven/context-map.json` | Compact agent context |
|
|
39
|
+
| `.viberaven/gaps/<gapId>.json` | Per-gap evidence |
|
|
40
|
+
| `.viberaven/agent-summary.md` | Human/agent summary |
|
|
41
|
+
| `.viberaven/launch-playbook.md` | Launch checklist |
|
|
42
|
+
| `.viberaven/report.html` | Local HTML report |
|
|
43
|
+
|
|
44
|
+
Repo scanners redact common key patterns in evidence strings; the CLI runs an extra redaction pass before writing files.
|
|
45
|
+
|
|
46
|
+
## Provider Boundaries
|
|
47
|
+
|
|
48
|
+
Provider dashboard checks are not cleared by repo-code edits. Billing/product configuration, DNS, webhooks, credentials, quotas, and live provider verification must be completed or verified in the provider dashboard or through read-only provider evidence.
|
|
49
|
+
|
|
50
|
+
## Reporting Issues
|
|
51
|
+
|
|
52
|
+
If you believe a scan artifact leaked a secret, rotate the key immediately and open an issue at https://github.com/ohad6k/VibeRaven/issues with the redacted file path only.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" aria-hidden="true">
|
|
2
|
-
<path fill="#412991" d="M32 5 11 16.8v13.7c0 12.2 8.9 23.3 21 27 12.1-3.7 21-14.8 21-27V16.8L32 5Z"/>
|
|
3
|
-
<path fill="#EB5424" d="M32 5v48.7c-3.1-1.1-6.1-2.7-8.7-4.7L32 5Z"/>
|
|
4
|
-
<path fill="#FBC22C" d="m32 5 8.7 44c-2.6 2-5.6 3.6-8.7 4.7V5Z"/>
|
|
5
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" aria-hidden="true">
|
|
2
|
+
<path fill="#412991" d="M32 5 11 16.8v13.7c0 12.2 8.9 23.3 21 27 12.1-3.7 21-14.8 21-27V16.8L32 5Z"/>
|
|
3
|
+
<path fill="#EB5424" d="M32 5v48.7c-3.1-1.1-6.1-2.7-8.7-4.7L32 5Z"/>
|
|
4
|
+
<path fill="#FBC22C" d="m32 5 8.7 44c-2.6 2-5.6 3.6-8.7 4.7V5Z"/>
|
|
5
|
+
</svg>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 64" aria-hidden="true">
|
|
2
|
-
<text x="48" y="31" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="21" font-weight="800" letter-spacing="-1.4" fill="#111827">AWS</text>
|
|
3
|
-
<path fill="#FF9900" d="M23.6 42.4c13.9 7.5 31.5 7.5 45.1-.1 1.1-.6 2.2.8 1.3 1.7-12.3 12.5-34.3 12.6-47.2.8-.9-.8-.3-2.9.8-2.4Z"/>
|
|
4
|
-
<path fill="#FF9900" d="M66.8 39.8c2.4-.3 7.8-.8 8.8 1 .9 1.6-1 5.8-2.5 8.2-.5.8-1.7.4-1.5-.6.5-2.1 1.3-4.8.5-5.8-.8-1-3.8-.8-5.4-.6-1 .1-1.2-2-.1-2.2h.2Z"/>
|
|
5
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 64" aria-hidden="true">
|
|
2
|
+
<text x="48" y="31" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="21" font-weight="800" letter-spacing="-1.4" fill="#111827">AWS</text>
|
|
3
|
+
<path fill="#FF9900" d="M23.6 42.4c13.9 7.5 31.5 7.5 45.1-.1 1.1-.6 2.2.8 1.3 1.7-12.3 12.5-34.3 12.6-47.2.8-.9-.8-.3-2.9.8-2.4Z"/>
|
|
4
|
+
<path fill="#FF9900" d="M66.8 39.8c2.4-.3 7.8-.8 8.8 1 .9 1.6-1 5.8-2.5 8.2-.5.8-1.7.4-1.5-.6.5-2.1 1.3-4.8.5-5.8-.8-1-3.8-.8-5.4-.6-1 .1-1.2-2-.1-2.2h.2Z"/>
|
|
5
|
+
</svg>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" aria-hidden="true">
|
|
2
|
-
<path fill="#764ABC" fill-rule="evenodd" clip-rule="evenodd" d="M26.8 12.9A20.8 20.8 0 0 1 32.3 7a20.5 20.5 0 0 1 5.5 5.8 29.3 29.3 0 0 1 5.1 17.1c1.1.9 2.3 1.8 3.4 2.7a6.2 6.2 0 0 1 2 5.7c-.5 2.6-1.1 5.2-1.6 7.8a2.2 2.2 0 0 1-3.3 1.1c-1.8-1.5-3.6-3-5.4-4.5a8.4 8.4 0 0 1-5.2 2.3 8.5 8.5 0 0 1-6.1-2.2c-1.3 1-2.5 2.1-3.8 3.2-.6.6-1.2 1-1.9 1.4a2.2 2.2 0 0 1-2.9-1.4c-.6-2.5-1.2-5.1-1.8-7.6a6.3 6.3 0 0 1 2.1-6c1-.8 2-1.6 3-2.3.3-.2.1-.5.2-.7a29.3 29.3 0 0 1 5.2-16.5Zm2.2 8.2a4.3 4.3 0 0 0 .4 5.8 4.8 4.8 0 0 0 6.5.1 4.3 4.3 0 0 0 1.1-4.8 4.4 4.4 0 0 0-3.9-2.9 4.5 4.5 0 0 0-4.1 1.8Zm3.3 4.9a2.1 2.1 0 1 0 0-4.2 2.1 2.1 0 0 0 0 4.2Z"/>
|
|
3
|
-
<path fill="#764ABC" d="M26.4 48.1a1.1 1.1 0 0 1 1.6-.9 10.4 10.4 0 0 0 9 0 1.1 1.1 0 0 1 1.6.8v4.8a1.1 1.1 0 0 1-1.7.8c-.5-.4-.9-.9-1.4-1.3-.7 1.4-1.4 2.8-2.1 4.1a1.1 1.1 0 0 1-1.8 0c-.8-1.4-1.4-2.8-2.2-4.1-.4.4-.9.9-1.3 1.3a1.1 1.1 0 0 1-1.7-.8v-4.7Z"/>
|
|
4
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" aria-hidden="true">
|
|
2
|
+
<path fill="#764ABC" fill-rule="evenodd" clip-rule="evenodd" d="M26.8 12.9A20.8 20.8 0 0 1 32.3 7a20.5 20.5 0 0 1 5.5 5.8 29.3 29.3 0 0 1 5.1 17.1c1.1.9 2.3 1.8 3.4 2.7a6.2 6.2 0 0 1 2 5.7c-.5 2.6-1.1 5.2-1.6 7.8a2.2 2.2 0 0 1-3.3 1.1c-1.8-1.5-3.6-3-5.4-4.5a8.4 8.4 0 0 1-5.2 2.3 8.5 8.5 0 0 1-6.1-2.2c-1.3 1-2.5 2.1-3.8 3.2-.6.6-1.2 1-1.9 1.4a2.2 2.2 0 0 1-2.9-1.4c-.6-2.5-1.2-5.1-1.8-7.6a6.3 6.3 0 0 1 2.1-6c1-.8 2-1.6 3-2.3.3-.2.1-.5.2-.7a29.3 29.3 0 0 1 5.2-16.5Zm2.2 8.2a4.3 4.3 0 0 0 .4 5.8 4.8 4.8 0 0 0 6.5.1 4.3 4.3 0 0 0 1.1-4.8 4.4 4.4 0 0 0-3.9-2.9 4.5 4.5 0 0 0-4.1 1.8Zm3.3 4.9a2.1 2.1 0 1 0 0-4.2 2.1 2.1 0 0 0 0 4.2Z"/>
|
|
3
|
+
<path fill="#764ABC" d="M26.4 48.1a1.1 1.1 0 0 1 1.6-.9 10.4 10.4 0 0 0 9 0 1.1 1.1 0 0 1 1.6.8v4.8a1.1 1.1 0 0 1-1.7.8c-.5-.4-.9-.9-1.4-1.3-.7 1.4-1.4 2.8-2.1 4.1a1.1 1.1 0 0 1-1.8 0c-.8-1.4-1.4-2.8-2.2-4.1-.4.4-.9.9-1.3 1.3a1.1 1.1 0 0 1-1.7-.8v-4.7Z"/>
|
|
4
|
+
</svg>
|