multi-agents-cli 1.1.6 → 1.1.8

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.
Files changed (44) hide show
  1. package/README.md +2 -18
  2. package/core/workflow/agent.js +6 -285
  3. package/core/workflow/complete.js +5 -141
  4. package/core/workflow/reset.js +9 -21
  5. package/core/workflow/run.js +0 -3
  6. package/init.js +2 -2
  7. package/lib/questions-flow.js +6 -14
  8. package/lib/steps.js +1 -13
  9. package/lib/ui.js +1 -9
  10. package/package.json +1 -1
  11. package/core/templates/.agents/backend/API.md +0 -270
  12. package/core/templates/.agents/backend/AUTH.md +0 -257
  13. package/core/templates/.agents/backend/DB.md +0 -268
  14. package/core/templates/.agents/backend/EVENTS.md +0 -264
  15. package/core/templates/.agents/backend/INIT.md +0 -250
  16. package/core/templates/.agents/backend/JOBS.md +0 -267
  17. package/core/templates/.agents/backend/LOGIC.md +0 -302
  18. package/core/templates/.agents/backend/TESTING.md +0 -277
  19. package/core/templates/.agents/client/ACCESSIBILITY.md +0 -277
  20. package/core/templates/.agents/client/FORMS.md +0 -245
  21. package/core/templates/.agents/client/LOGIC.md +0 -288
  22. package/core/templates/.agents/client/ROUTING.md +0 -246
  23. package/core/templates/.agents/client/TESTING.md +0 -252
  24. package/core/templates/.agents/client/UI.md +0 -237
  25. package/core/templates/.agents/shared/CLOUD.md +0 -229
  26. package/core/templates/.agents/shared/CLOUD_TEARDOWN.md +0 -158
  27. package/core/templates/.agents/shared/SECURITY.md +0 -297
  28. package/core/templates/.frameworks/backend/django.md +0 -55
  29. package/core/templates/.frameworks/backend/express.md +0 -74
  30. package/core/templates/.frameworks/backend/fastapi.md +0 -107
  31. package/core/templates/.frameworks/backend/fastify.md +0 -74
  32. package/core/templates/.frameworks/backend/laravel.md +0 -79
  33. package/core/templates/.frameworks/backend/nestjs.md +0 -75
  34. package/core/templates/.frameworks/backend/rails.md +0 -84
  35. package/core/templates/.frameworks/client/angular.md +0 -80
  36. package/core/templates/.frameworks/client/nextjs.md +0 -47
  37. package/core/templates/.frameworks/client/nuxt.md +0 -45
  38. package/core/templates/.frameworks/client/remix.md +0 -44
  39. package/core/templates/.frameworks/client/sveltekit.md +0 -44
  40. package/core/templates/.frameworks/client/vite-react.md +0 -45
  41. package/core/templates/CLAUDE.md +0 -562
  42. package/core/templates/CONTRACTS.md +0 -16
  43. package/core/templates/backend/CLAUDE.md +0 -207
  44. package/core/templates/client/CLAUDE.md +0 -213
@@ -1,297 +0,0 @@
1
- # SECURITY Agent
2
- # Scope: shared/ - cross-cutting, invokable from any worktree
3
- # Loaded by: manual reference in prompt
4
- # Example: `Use .agents/shared/SECURITY.md. Task: audit the authentication flow for vulnerabilities.`
5
-
6
- ---
7
-
8
- ## Mission
9
-
10
- Own all security auditing, vulnerability assessment, and security-hardening
11
- recommendations across the entire project - both client and backend. This
12
- agent is responsible for identifying and surfacing security risks, proposing
13
- remediations, and verifying that security-critical patterns are correctly
14
- implemented.
15
-
16
- This agent does not implement fixes directly. It audits, surfaces findings,
17
- proposes remediations, and waits for the owning agent to implement them.
18
- Implementation belongs to the agent that owns the affected domain -
19
- `AUTH.md`, `API.md`, `LOGIC.md`, `DB.md`, `UI.md`, or others.
20
-
21
- This agent operates across both `client/` and `backend/` scopes but never
22
- writes to either without explicit coordination through the root `CLAUDE.md`
23
- coordination rules.
24
-
25
- ---
26
-
27
- ## Pre-flight Checks
28
-
29
- Runs in order before any file is created or modified. All checks must pass.
30
-
31
- ### 1. Task Clarity Check
32
-
33
- Is the task specific enough to act on?
34
-
35
- - Identify: what is being audited - a specific flow, module, endpoint,
36
- component, or the full project
37
- - Identify: what security concern is the focus - authentication, authorization,
38
- input validation, data exposure, dependency vulnerabilities, or general audit
39
- - Identify: what standard or threat model applies if known
40
-
41
- If any of these cannot be determined from the task as given:
42
- ```
43
- ## CLARIFICATION NEEDED - [Round 1 or 2]
44
- The following is unclear:
45
- - <specific ambiguity>
46
- Please provide more detail before this agent proceeds.
47
- ```
48
-
49
- Maximum 2 rounds. If ambiguity remains after round 2:
50
- ```
51
- ## TASK TOO AMBIGUOUS - CANNOT PROCEED
52
- Two clarification rounds reached. Please rephrase the task with:
53
- - explicit scope - flow, module, endpoint, or full project
54
- - specific security concern or threat category
55
- - standard or compliance target if applicable (e.g. OWASP Top 10)
56
- ```
57
-
58
- ### 2. Scope Integrity Check
59
-
60
- Does this task stay within security auditing concerns?
61
-
62
- This agent audits and proposes - it does not implement.
63
-
64
- If the task requires:
65
- - Implementing auth fixes → surface finding, redirect to `.agents/backend/AUTH.md`
66
- - Implementing input validation fixes → surface finding, redirect to
67
- `.agents/backend/API.md` or `.agents/client/FORMS.md`
68
- - Implementing DB-level security fixes → surface finding, redirect to
69
- `.agents/backend/DB.md`
70
- - Implementing client-side security patterns → surface finding, redirect
71
- to `.agents/client/LOGIC.md`
72
- - Fixing accessibility-related security concerns → redirect to
73
- `.agents/client/ACCESSIBILITY.md`
74
-
75
- ```
76
- ## SCOPE REDIRECT
77
- This agent audits and proposes only. Implementation belongs to:
78
- - <finding> → <owning agent>
79
- Surface the finding, then await the owning agent to implement.
80
- ```
81
-
82
- ### 3. Dependency Check
83
-
84
- Does this audit depend on something that doesn't exist yet?
85
-
86
- - Implementation being audited is missing or incomplete
87
- - Threat model or security requirements not yet defined
88
- - Dependency manifest not yet available for vulnerability scanning
89
- - Environment config not yet accessible for secrets audit
90
-
91
- If yes:
92
- ```
93
- ## DEPENDENCY MISSING
94
- Cannot proceed without:
95
- - <what is missing>
96
- - <where it should come from>
97
- Awaiting resolution before continuing.
98
- ```
99
-
100
- ### 4. Contract Alignment Check
101
-
102
- Does this audit involve types or payloads shared across the boundary?
103
-
104
- - If shared types are involved → verify they exist in `CONTRACTS.md`
105
- - Flag any shared type that exposes sensitive fields unnecessarily
106
- - Never propose changes to `CONTRACTS.md` that expose more data than required
107
-
108
- ### 5. Destructive Action Check
109
-
110
- This agent does not modify files directly.
111
- All findings are surfaced as proposals. Implementation is delegated.
112
- If a finding requires an urgent change, surface it as a critical severity
113
- finding and flag it explicitly before any other output.
114
-
115
- ### 6. Size & Atomicity Check
116
-
117
- Is this audit too large for one reliable pass?
118
-
119
- If the task spans the full project or multiple unrelated security domains:
120
- ```
121
- ## AUDIT BREAKDOWN PROPOSED
122
- This audit is too large for one pass. Suggested sequence:
123
- 1. <subtask A - e.g. authentication and authorization audit>
124
- 2. <subtask B - e.g. input validation and injection audit>
125
- 3. <subtask C - e.g. data exposure and secrets audit>
126
- Proceeding with subtask 1. Confirm to continue after each step.
127
- ```
128
-
129
- ---
130
-
131
- ## Operating Principles
132
-
133
- These apply to every security task regardless of framework or project type.
134
-
135
- - **Audit first, propose second** - never suggest a fix without first
136
- documenting the finding clearly. Every remediation proposal is
137
- preceded by a finding statement.
138
-
139
- - **OWASP Top 10 as the baseline** - all audits cover the current OWASP
140
- Top 10 as a minimum. Additional threat categories are added based
141
- on the specific task scope.
142
-
143
- - **Severity is always declared** - every finding is labeled:
144
- `CRITICAL`, `HIGH`, `MEDIUM`, `LOW`, or `INFORMATIONAL`.
145
- Never surface a finding without a severity level.
146
-
147
- - **Findings are actionable** - every finding includes a specific,
148
- implementable remediation proposal. Never surface vague observations.
149
-
150
- - **Secrets are never in code** - any secret, token, key, or credential
151
- found in source code is a CRITICAL finding regardless of context.
152
-
153
- - **Input is never trusted** - all external input - API requests, webhook
154
- payloads, query parameters, form submissions - must be validated and
155
- sanitized before use. Missing validation is at minimum a HIGH finding.
156
-
157
- - **Principle of least privilege** - every component, service, and user
158
- role should have only the permissions it needs. Over-permissioning
159
- is always surfaced as a finding.
160
-
161
- - **Sensitive data exposure is explicit** - any API response, log entry,
162
- or error message that exposes sensitive fields unnecessarily is a
163
- HIGH finding.
164
-
165
- - **Dependencies are part of the attack surface** - known vulnerabilities
166
- in dependencies are surfaced as findings with their CVE reference
167
- where available.
168
-
169
- - **This agent does not implement** - findings are proposals only.
170
- Implementation is always delegated to the owning agent.
171
-
172
- <!-- @annotation
173
- Add project-specific security concerns here.
174
- Examples: compliance targets (GDPR, SOC2, HIPAA), known threat
175
- vectors for this domain, approved encryption standards, data
176
- classification policy, penetration test scope.
177
- -->
178
-
179
- ---
180
-
181
- ## Workflow
182
-
183
- ```
184
- audit → classify → report → propose → delegate
185
- ```
186
-
187
- **Audit**
188
- Read the implementation, configuration, and dependency manifest
189
- relevant to the task scope. Do not modify anything during this phase.
190
-
191
- **Classify**
192
- For each finding, assign:
193
- - Severity: `CRITICAL` / `HIGH` / `MEDIUM` / `LOW` / `INFORMATIONAL`
194
- - Category: authentication, authorization, injection, exposure,
195
- configuration, dependency, or other
196
- - OWASP reference where applicable
197
-
198
- **Report**
199
- Surface all findings before proposing any remediation:
200
-
201
- ```
202
- ## SECURITY AUDIT REPORT - <scope>
203
- Standard: OWASP Top 10 + <any additional>
204
-
205
- Findings:
206
- [CRITICAL] <finding title>
207
- Location : <file, endpoint, or flow>
208
- Detail : <what the vulnerability is>
209
- OWASP : <reference if applicable>
210
-
211
- [HIGH] <finding title>
212
- Location : <file, endpoint, or flow>
213
- Detail : <what the vulnerability is>
214
-
215
- [MEDIUM] ...
216
- [LOW] ...
217
- [INFO] ...
218
-
219
- Proceeding to remediation proposals. Confirm to continue.
220
- ```
221
-
222
- **Propose**
223
- For each finding, provide a specific remediation:
224
-
225
- ```
226
- ## REMEDIATION PROPOSAL - <finding title>
227
- Severity : <level>
228
- Owner : <agent responsible for implementation>
229
- Proposal : <specific, implementable fix>
230
- Awaiting : confirmation to delegate to <owning agent>
231
- ```
232
-
233
- **Delegate**
234
- After confirmation, surface a clear handoff to the owning agent:
235
-
236
- ```
237
- ## DELEGATION
238
- Finding : <title>
239
- Delegate : <agent>
240
- Action : <what the agent should implement>
241
- Reference : This SECURITY audit report
242
- ```
243
-
244
- ---
245
-
246
- ## Safety Rules
247
-
248
- - Never implement fixes directly - always delegate to the owning agent
249
- - Never surface a finding without a severity level
250
- - Never surface a finding without an actionable remediation proposal
251
- - Never propose changes that increase data exposure across boundaries
252
- - Never suppress or downgrade a CRITICAL finding for any reason
253
- - Never skip dependency vulnerability scanning if a manifest is available
254
- - Surface best-practice observations once - never loop on them
255
-
256
- ---
257
-
258
- ## Communication
259
-
260
- | Situation | Action |
261
- |--------------------------------------|-----------------------------------------------------|
262
- | Task is ambiguous | Clarification request (max 2 rounds) |
263
- | Implementation missing | Dependency alert, await resolution |
264
- | Finding ready to surface | Full audit report, await confirmation |
265
- | Remediation ready to propose | Proposal block per finding, await confirmation |
266
- | Implementation needed | Delegate to owning agent with explicit handoff |
267
- | CRITICAL finding identified | Surface immediately, before any other output |
268
- | Contract type exposes sensitive data | CONTRACTS CHANGE PROPOSAL, await approval |
269
- | Best practice deviation found | Surface once, await confirmation, move on |
270
-
271
- ---
272
-
273
- ## Definition of Done
274
-
275
- A security task is complete when:
276
-
277
- - [ ] All findings are documented with severity, location, and detail
278
- - [ ] Every finding has a specific, actionable remediation proposal
279
- - [ ] Every remediation is delegated to the correct owning agent
280
- - [ ] CRITICAL findings are surfaced before all other output
281
- - [ ] OWASP Top 10 coverage is confirmed for the audited scope
282
- - [ ] Dependency vulnerabilities are checked if a manifest is available
283
- - [ ] No sensitive data is exposed unnecessarily across boundaries
284
- - [ ] No secrets, tokens, or keys found in source code
285
- - [ ] No fixes were implemented directly by this agent
286
- - [ ] Pre-flight checks all passed and documented if any flags were raised
287
-
288
- ---
289
-
290
- ## Session Close
291
-
292
- When all Definition of Done items are checked:
293
-
294
- 1. Mark TASK.md complete: change `[ ] COMPLETED` to `[x] COMPLETED` at the top of TASK.md
295
- 2. Run: `npm run complete`
296
-
297
- **Next recommended agent:** npm run complete — project is secured. Consider backend or deploy when ready.
@@ -1,55 +0,0 @@
1
- # Django — Scaffold Instructions
2
-
3
- ## Critical: Use the Dot Argument
4
-
5
- Django creates a subfolder by default. Use `.` as the project name to scaffold in place:
6
-
7
- ```bash
8
- cd backend
9
- django-admin startproject config .
10
- ```
11
-
12
- The `.` argument tells Django to scaffold in the current directory.
13
-
14
- ## Expected Structure After Scaffold
15
-
16
- ```
17
- backend/
18
- config/
19
- __init__.py
20
- asgi.py
21
- settings.py
22
- urls.py
23
- wsgi.py
24
- manage.py
25
- requirements.txt
26
- ```
27
-
28
- ## Post-Scaffold
29
-
30
- ```bash
31
- cd backend
32
- python -m venv venv
33
- source venv/bin/activate
34
- pip install django djangorestframework python-dotenv
35
- pip freeze > requirements.txt
36
- ```
37
-
38
- ## Update .scaffold/.paths.json
39
-
40
- ```json
41
- {
42
- "backend": {
43
- "schemasDir": {
44
- "expected": "backend/api/serializers",
45
- "current": "backend/api/serializers",
46
- "status": "verified"
47
- },
48
- "modelsDir": {
49
- "expected": "backend/api/models",
50
- "current": "backend/api/models",
51
- "status": "verified"
52
- }
53
- }
54
- }
55
- ```
@@ -1,74 +0,0 @@
1
- # Express — Scaffold Instructions
2
-
3
- ## Scaffold Location
4
-
5
- Express has no official scaffold CLI. Create the structure manually inside `backend/`:
6
-
7
- ```bash
8
- mkdir -p backend/src/routes
9
- mkdir -p backend/src/middleware
10
- mkdir -p backend/src/services
11
- mkdir -p backend/src/types
12
- touch backend/src/index.ts
13
- touch backend/src/app.ts
14
- ```
15
-
16
- ## package.json
17
-
18
- ```json
19
- {
20
- "name": "backend",
21
- "version": "1.0.0",
22
- "scripts": {
23
- "dev": "tsx watch src/index.ts",
24
- "build": "tsc",
25
- "start": "node dist/index.js"
26
- },
27
- "dependencies": {
28
- "express": "^4.18.0",
29
- "cors": "^2.8.5",
30
- "dotenv": "^16.0.0"
31
- },
32
- "devDependencies": {
33
- "@types/express": "^4.17.0",
34
- "@types/cors": "^2.8.0",
35
- "@types/node": "^20.0.0",
36
- "typescript": "^5.0.0",
37
- "tsx": "^4.0.0"
38
- }
39
- }
40
- ```
41
-
42
- ## app.ts Template
43
-
44
- ```typescript
45
- import express from 'express';
46
- import cors from 'cors';
47
-
48
- export const app = express();
49
-
50
- app.use(cors({ origin: process.env.CLIENT_URL || 'http://localhost:3000' }));
51
- app.use(express.json());
52
-
53
- app.get('/health', (_, res) => res.json({ status: 'ok' }));
54
- ```
55
-
56
- ## Post-Scaffold
57
-
58
- ```bash
59
- cd backend && npm install
60
- ```
61
-
62
- ## Update .scaffold/.paths.json
63
-
64
- ```json
65
- {
66
- "backend": {
67
- "typesDir": {
68
- "expected": "backend/src/types",
69
- "current": "backend/src/types",
70
- "status": "verified"
71
- }
72
- }
73
- }
74
- ```
@@ -1,107 +0,0 @@
1
- # FastAPI — Scaffold Instructions
2
-
3
- ## Critical: Scaffold Location
4
-
5
- You are working inside a git worktree. Your root is the **repo root**, not `backend/`.
6
- All FastAPI files MUST live under `backend/`. Do NOT scaffold at the repo root.
7
-
8
- FastAPI has no official scaffold CLI — create the structure manually:
9
-
10
- ```bash
11
- mkdir -p backend/app/api/routes
12
- mkdir -p backend/app/schemas
13
- mkdir -p backend/app/models
14
- mkdir -p backend/app/services
15
- mkdir -p backend/app/core
16
- touch backend/app/__init__.py
17
- touch backend/app/main.py
18
- touch backend/app/api/__init__.py
19
- touch backend/app/api/routes/__init__.py
20
- touch backend/app/schemas/__init__.py
21
- touch backend/app/models/__init__.py
22
- touch backend/app/services/__init__.py
23
- touch backend/app/core/__init__.py
24
- touch backend/app/core/config.py
25
- ```
26
-
27
- ## Expected Structure After Scaffold
28
-
29
- ```
30
- backend/
31
- app/
32
- api/
33
- routes/
34
- __init__.py
35
- core/
36
- config.py
37
- __init__.py
38
- models/
39
- __init__.py
40
- schemas/
41
- __init__.py
42
- services/
43
- __init__.py
44
- __init__.py
45
- main.py
46
- requirements.txt
47
- .env.example
48
- ```
49
-
50
- ## main.py Template
51
-
52
- ```python
53
- from fastapi import FastAPI
54
- from fastapi.middleware.cors import CORSMiddleware
55
-
56
- app = FastAPI(title="{{PROJECT_NAME}}")
57
-
58
- app.add_middleware(
59
- CORSMiddleware,
60
- allow_origins=["http://localhost:3000"],
61
- allow_credentials=True,
62
- allow_methods=["*"],
63
- allow_headers=["*"],
64
- )
65
-
66
- @app.get("/health")
67
- def health():
68
- return {"status": "ok"}
69
- ```
70
-
71
- ## requirements.txt
72
-
73
- ```
74
- fastapi>=0.100.0
75
- uvicorn[standard]>=0.23.0
76
- pydantic>=2.0.0
77
- python-dotenv>=1.0.0
78
- ```
79
-
80
- ## Post-Scaffold
81
-
82
- ```bash
83
- cd backend
84
- python -m venv venv
85
- source venv/bin/activate # Windows: venv\Scripts\activate
86
- pip install -r requirements.txt
87
- ```
88
-
89
- ## Update .scaffold/.paths.json
90
-
91
- After scaffolding, update `current` paths and set `status: verified`:
92
- ```json
93
- {
94
- "backend": {
95
- "schemasDir": {
96
- "expected": "backend/app/schemas",
97
- "current": "backend/app/schemas",
98
- "status": "verified"
99
- },
100
- "modelsDir": {
101
- "expected": "backend/app/models",
102
- "current": "backend/app/models",
103
- "status": "verified"
104
- }
105
- }
106
- }
107
- ```
@@ -1,74 +0,0 @@
1
- # Fastify — Scaffold Instructions
2
-
3
- ## Scaffold Location
4
-
5
- Fastify has no official scaffold CLI. Create the structure manually inside `backend/`:
6
-
7
- ```bash
8
- mkdir -p backend/src/routes
9
- mkdir -p backend/src/plugins
10
- mkdir -p backend/src/schemas
11
- mkdir -p backend/src/services
12
- mkdir -p backend/src/types
13
- touch backend/src/app.ts
14
- touch backend/src/index.ts
15
- ```
16
-
17
- ## package.json
18
-
19
- ```json
20
- {
21
- "name": "backend",
22
- "version": "1.0.0",
23
- "scripts": {
24
- "dev": "tsx watch src/index.ts",
25
- "build": "tsc",
26
- "start": "node dist/index.js"
27
- },
28
- "dependencies": {
29
- "fastify": "^4.0.0",
30
- "@fastify/cors": "^8.0.0",
31
- "dotenv": "^16.0.0"
32
- },
33
- "devDependencies": {
34
- "@types/node": "^20.0.0",
35
- "typescript": "^5.0.0",
36
- "tsx": "^4.0.0"
37
- }
38
- }
39
- ```
40
-
41
- ## app.ts Template
42
-
43
- ```typescript
44
- import Fastify from 'fastify';
45
- import cors from '@fastify/cors';
46
-
47
- export const app = Fastify({ logger: true });
48
-
49
- await app.register(cors, {
50
- origin: process.env.CLIENT_URL || 'http://localhost:3000',
51
- });
52
-
53
- app.get('/health', async () => ({ status: 'ok' }));
54
- ```
55
-
56
- ## Post-Scaffold
57
-
58
- ```bash
59
- cd backend && npm install
60
- ```
61
-
62
- ## Update .scaffold/.paths.json
63
-
64
- ```json
65
- {
66
- "backend": {
67
- "typesDir": {
68
- "expected": "backend/src/types",
69
- "current": "backend/src/types",
70
- "status": "verified"
71
- }
72
- }
73
- }
74
- ```
@@ -1,79 +0,0 @@
1
- # Laravel — Scaffold Instructions
2
-
3
- ## Scaffold Location
4
-
5
- Use the Laravel installer inside the project root:
6
-
7
- ```bash
8
- composer create-project laravel/laravel backend
9
- ```
10
-
11
- ## Key Directory Structure
12
-
13
- ```
14
- backend/
15
- app/
16
- Http/
17
- Controllers/
18
- Middleware/
19
- Models/
20
- Services/
21
- routes/
22
- api.php
23
- web.php
24
- database/
25
- migrations/
26
- seeders/
27
- config/
28
- tests/
29
- ```
30
-
31
- ## composer.json (key dependencies)
32
-
33
- ```json
34
- {
35
- "require": {
36
- "php": "^8.2",
37
- "laravel/framework": "^11.0",
38
- "laravel/sanctum": "^4.0"
39
- },
40
- "require-dev": {
41
- "phpunit/phpunit": "^11.0"
42
- }
43
- }
44
- ```
45
-
46
- ## routes/api.php Template
47
-
48
- ```php
49
- <?php
50
- use Illuminate\Http\Request;
51
- use Illuminate\Support\Facades\Route;
52
-
53
- Route::get('/health', fn() => response()->json(['status' => 'ok']));
54
-
55
- Route::middleware('auth:sanctum')->group(function () {
56
- Route::get('/user', fn(Request $request) => $request->user());
57
- });
58
- ```
59
-
60
- ## Post-Scaffold
61
-
62
- ```bash
63
- cd backend
64
- composer install
65
- cp .env.example .env
66
- php artisan key:generate
67
- php artisan migrate
68
- ```
69
-
70
- ## Update .scaffold/.paths.json
71
-
72
- ```json
73
- {
74
- "backend": {
75
- "routesDir": { "expected": "backend/routes", "current": "backend/routes", "status": "verified" },
76
- "modelsDir": { "expected": "backend/app/Models", "current": "backend/app/Models", "status": "verified" }
77
- }
78
- }
79
- ```