jarvis-ai-framework 1.1.0 → 2.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 +59 -60
- package/README.md +24 -10
- package/agents/AGENTS.md +8 -5
- package/agents/README.md +8 -12
- package/agents/engineering/data/eng.data-engineer.agent.md +6 -6
- package/agents/engineering/eng.agent.md +19 -36
- package/agents/engineering/eng.bug-hunter.md +13 -12
- package/agents/engineering/eng.cybersecurity.agent.md +20 -35
- package/agents/engineering/eng.docs-writer.md +2 -2
- package/agents/engineering/eng.frontend.agent.md +17 -22
- package/agents/engineering/eng.rpa.agent.md +5 -15
- package/agents/engineering/qa/eng.qa.test-architect.md +4 -4
- package/agents/engineering/qa/eng.qa.test-planner.md +3 -3
- package/agents/engineering/qa/eng.qa.testing-engineer.md +3 -3
- package/agents/product/prod.discovery-interviewer.md +2 -2
- package/bin/commands/init.js +5 -5
- package/bin/jarvis.js +1 -1
- package/bin/lib/config/constants.js +35 -0
- package/package.json +1 -1
- package/rules/AGENTS.md +5 -3
- package/rules/engineering/eng-rules.md +5 -3
- package/rules/engineering/eng-security-rules.md +4 -4
- package/rules/engineering/eng.docs-scraping-rules.md +1 -1
- package/rules/engineering/eng.downstream-flow-rules.md +1 -1
- package/rules/engineering/eng.integrations-rules.md +2 -2
- package/rules/engineering/eng.pre-pr-rules.md +1 -1
- package/rules/engineering/eng.skills-rules.md +60 -0
- package/rules/engineering/eng.specializations-rules.md +69 -0
- package/rules/engineering/frontend/eng.frontend-rules.md +70 -69
- package/rules/product/prod-rules.md +4 -4
- package/skills/AGENTS.md +111 -47
- package/skills/SKILLS-ROADMAP.md +24 -39
- package/skills/eng-ai-engineer/SKILL.md +1 -0
- package/skills/eng-backend/SKILL.md +142 -644
- package/skills/eng-backend/references/1-fundamentos-programacao.md +41 -0
- package/skills/eng-backend/references/10-seguranca.md +61 -0
- package/skills/eng-backend/references/11-performance.md +49 -0
- package/skills/eng-backend/references/12-erros-logging.md +42 -0
- package/skills/eng-backend/references/13-qualidade-codigo.md +51 -0
- package/skills/eng-backend/references/2-design-arquitetura.md +48 -0
- package/skills/eng-backend/references/3-design-patterns.md +50 -0
- package/skills/eng-backend/references/4-algoritmos-estruturas.md +43 -0
- package/skills/eng-backend/references/5-banco-dados.md +53 -0
- package/skills/eng-backend/references/6-api-comunicacao.md +42 -0
- package/skills/eng-backend/references/7-concorrencia-async.md +49 -0
- package/skills/eng-backend/references/8-arquitetura-servidor.md +49 -0
- package/skills/eng-backend/references/9-testes.md +43 -0
- package/skills/{eng-arch-c4 → eng-backend-arch-c4}/SKILL.md +12 -7
- package/skills/{eng-ms-trace → eng-backend-microservices-trace}/SKILL.md +6 -4
- package/skills/{eng-nestjs → eng-backend-nestjs}/SKILL.md +3 -1
- package/skills/{eng-rabbitmq → eng-backend-rabbitmq}/SKILL.md +3 -1
- package/skills/eng-data-bi/SKILL.md +1 -0
- package/skills/eng-data-debug/SKILL.md +2 -1
- package/skills/eng-data-engineer/SKILL.md +1 -0
- package/skills/eng-data-onboard/SKILL.md +1 -0
- package/skills/eng-data-orchestrator/SKILL.md +1 -0
- package/skills/{eng-performance-engineer → eng-devops-performance-engineer}/SKILL.md +2 -1
- package/skills/eng-frontend/SKILL.md +145 -782
- package/skills/eng-frontend/references/1-fundamentos-programacao.md +37 -0
- package/skills/eng-frontend/references/10-testes.md +47 -0
- package/skills/eng-frontend/references/11-seguranca.md +56 -0
- package/skills/eng-frontend/references/12-qualidade-codigo.md +51 -0
- package/skills/eng-frontend/references/2-html-fundamentals.md +51 -0
- package/skills/eng-frontend/references/3-css-responsive.md +61 -0
- package/skills/eng-frontend/references/4-javascript-dom.md +60 -0
- package/skills/eng-frontend/references/5-state-management.md +55 -0
- package/skills/eng-frontend/references/6-uiux-design.md +59 -0
- package/skills/eng-frontend/references/7-acessibilidade.md +46 -0
- package/skills/eng-frontend/references/8-performance.md +58 -0
- package/skills/eng-frontend/references/9-browser-apis.md +54 -0
- package/skills/{eng-design-system → eng-frontend-design-system}/SKILL.md +4 -2
- package/skills/{eng-microfrontend → eng-frontend-microfrontend}/SKILL.md +4 -2
- package/skills/{eng-browser-extension-builder → eng-global-browser-extension-builder}/SKILL.md +2 -1
- package/skills/{eng-docs-write → eng-global-docs-write}/SKILL.md +8 -4
- package/skills/eng-global-jira-comment/SKILL.md +21 -0
- package/skills/{eng-pr → eng-global-pr}/SKILL.md +7 -3
- package/skills/{eng-task-comment → eng-global-task-comment}/SKILL.md +6 -2
- package/skills/eng-qa-a11y-audit/SKILL.md +1 -0
- package/skills/eng-qa-bug-report/SKILL.md +2 -1
- package/skills/eng-qa-bug-report/TASK_MANAGERS.md +1 -1
- package/skills/eng-qa-cypress-e2e/SKILL.md +1 -0
- package/skills/eng-qa-dev-guide/SKILL.md +1 -0
- package/skills/eng-qa-e2e/SKILL.md +1 -0
- package/skills/eng-qa-e2e-spec-writer/SKILL.md +1 -0
- package/skills/eng-qa-exploratory/SKILL.md +1 -0
- package/skills/eng-qa-gate/SKILL.md +3 -2
- package/skills/eng-qa-graphql-contract/SKILL.md +1 -0
- package/skills/eng-qa-quality-report/SKILL.md +3 -2
- package/skills/eng-qa-test-plan/SKILL.md +1 -0
- package/skills/eng-qa-testsprite/SKILL.md +2 -1
- package/skills/eng-qa-unit-test/SKILL.md +1 -0
- package/skills/eng-scraper/SKILL.md +1 -0
- package/skills/eng-scraper-robot-builder/SKILL.md +1 -0
- package/skills/{eng-cybersecurity → eng-security-cybersecurity}/SKILL.md +3 -2
- package/skills/eng-security-patch/SKILL.md +6 -2
- package/skills/{eng-threat-model → eng-security-threat-model}/SKILL.md +6 -2
- package/skills/eng-security-triage/SKILL.md +4 -0
- package/skills/{context-detect → jarvis-context-detect}/SKILL.md +6 -5
- package/skills/{context-detect → jarvis-context-detect}/assets/context-profile-template.md +3 -3
- package/skills/jarvis-create-specialization/SKILL.md +230 -0
- package/skills/jarvis-create-specialization/assets/referencia-template.md +39 -0
- package/skills/jarvis-create-specialization/assets/skill-especializacao-template.md +78 -0
- package/skills/{docs-central → jarvis-docs-central}/README.md +1 -1
- package/skills/{docs-central → jarvis-docs-central}/SKILL.md +3 -40
- package/skills/{docs-index → jarvis-docs-index}/SKILL.md +8 -4
- package/skills/{init-jarvis → jarvis-init}/SKILL.md +41 -18
- package/skills/{init-jarvis → jarvis-init}/assets/mcp-configs.md +3 -3
- package/skills/{init-jarvis → jarvis-init}/assets/onboarding-checklist.md +1 -1
- package/skills/jarvis-init/assets/passo-adicionar-stacks.md +163 -0
- package/skills/{init-jarvis → jarvis-init}/assets/setup-guide.md +1 -1
- package/skills/jarvis-init/assets/sinais-de-stack.md +54 -0
- package/skills/jarvis-list-specializations/SKILL.md +148 -0
- package/skills/{report-issue → jarvis-report-issue}/SKILL.md +3 -2
- package/skills/{prod-roadmap-report → product-roadmap-report}/SKILL.md +2 -1
- package/skills/{prod-specs → product-specs}/SKILL.md +2 -1
- package/skills/{prod-specs-update → product-specs-update}/SKILL.md +3 -2
- package/taxonomy.md +3 -21
- package/templates/CDD aplicado a Prompts.md +5 -5
- package/templates/ENV-template.md +11 -8
- package/templates/engineering/AGENTS-template.md +1 -1
- package/templates/engineering/CONTACTS-template.md +1 -1
- package/workflows/engineering/eng.bug-audit.md +2 -2
- package/workflows/engineering/eng.build-tech-spec.md +1 -1
- package/workflows/engineering/eng.debug.md +10 -10
- package/workflows/engineering/eng.docs.md +2 -2
- package/workflows/engineering/eng.plan.md +5 -5
- package/workflows/engineering/eng.pr.md +8 -8
- package/workflows/engineering/eng.pre-pr.md +16 -20
- package/workflows/engineering/eng.review.md +5 -10
- package/workflows/engineering/eng.rpa.robot.md +3 -3
- package/workflows/engineering/eng.security-audit.md +5 -5
- package/workflows/engineering/eng.security-incident.md +2 -2
- package/workflows/engineering/eng.security-pipeline.md +2 -2
- package/workflows/engineering/eng.start.md +16 -50
- package/workflows/engineering/eng.work.md +8 -11
- package/workflows/engineering/frontend/eng.frontend-component.md +68 -96
- package/workflows/engineering/frontend/eng.frontend-perf-audit.md +90 -220
- package/workflows/engineering/frontend/eng.frontend-review.md +57 -63
- package/workflows/product/prod.roadmap.preview.md +2 -2
- package/workflows/product/prod.spec.discovery.md +3 -3
- package/workflows/product/prod.spec.issue.md +1 -1
- package/workflows/taxonomy.md +1 -1
- package/workflows/warm-up.md +5 -26
- package/agents/engineering/eng.tech-analyst.agent.md +0 -102
- package/skills/churn-audit/SKILL.md +0 -385
- package/skills/eng-jira-comment/SKILL.md +0 -17
- package/skills/eng-tech-analyst/SKILL.md +0 -529
- package/skills/lovable-prompt-generator/SKILL.md +0 -304
- package/workflows/engineering/ta/eng.ta.atendimento.md +0 -93
- /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-code.md +0 -0
- /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-component.md +0 -0
- /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-container.md +0 -0
- /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-context.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/README.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.compiled.single.team.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.list.projects.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.memory.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.roadmap.preview.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/references/detailed-guide.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/rules/detailed-guide.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/rules/status-report-rules.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-multiple-teams-compiled-status.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-projects-list.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-single-team-compiled-status.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-single-team-status.md +0 -0
package/skills/SKILLS-ROADMAP.md
CHANGED
|
@@ -16,7 +16,7 @@ Skills existentes e planejadas do framework Jarvis.
|
|
|
16
16
|
- **Escopo**: NestJS, JWT/OAuth2/RBAC, RabbitMQ, Redis, webhooks, circuit breaker
|
|
17
17
|
- **Status**: `criado`
|
|
18
18
|
|
|
19
|
-
### `eng-nestjs` ✅
|
|
19
|
+
### `eng-backend-nestjs` ✅
|
|
20
20
|
- **Trigger**: framework NestJS — DI, guards, interceptors, pipes, Passport/JWT, circular deps
|
|
21
21
|
- **Escopo**: módulos, providers, middleware, ConfigModule, testes com `Test.createTestingModule`
|
|
22
22
|
- **Status**: `criado`
|
|
@@ -31,37 +31,32 @@ Skills existentes e planejadas do framework Jarvis.
|
|
|
31
31
|
- **Escopo**: exploração com `act()`/`observe()`, geração de script Playwright TypeScript
|
|
32
32
|
- **Status**: `criado`
|
|
33
33
|
|
|
34
|
-
### `eng-
|
|
35
|
-
- **Trigger**: triagem de chamados, diagnóstico de bugs, classificação por área, escalonamento
|
|
36
|
-
- **Escopo**: fluxo de triagem, avaliação de impacto, frequência de bugs, comunicação adaptada
|
|
37
|
-
- **Status**: `criado`
|
|
38
|
-
|
|
39
|
-
### `eng-design-system` ✅
|
|
34
|
+
### `eng-frontend-design-system` ✅
|
|
40
35
|
- **Trigger**: tokens, CVA, Storybook, versionamento de componentes, auditoria visual
|
|
41
36
|
- **Escopo**: design tokens, variantes com `cva`, componentes reutilizáveis, changelog de UI
|
|
42
37
|
- **Status**: `criado`
|
|
43
38
|
|
|
44
|
-
### `eng-microfrontend` ✅
|
|
39
|
+
### `eng-frontend-microfrontend` ✅
|
|
45
40
|
- **Trigger**: Module Federation, shell/remote, contratos de interface, event bus
|
|
46
41
|
- **Escopo**: Webpack MF, standalone/integrado, shared dependencies, versionamento
|
|
47
42
|
- **Status**: `criado`
|
|
48
43
|
|
|
49
|
-
### `eng-rabbitmq` ✅
|
|
44
|
+
### `eng-backend-rabbitmq` ✅
|
|
50
45
|
- **Trigger**: mensageria, filas, events, consumers, producers, DLX
|
|
51
46
|
- **Escopo**: RabbitMQ, `@golevelup/nestjs-rabbitmq`, retry, DLQ, idempotência
|
|
52
47
|
- **Status**: `criado`
|
|
53
48
|
|
|
54
|
-
### `eng-
|
|
49
|
+
### `eng-backend-microservices-trace` ✅
|
|
55
50
|
- **Trigger**: bug cross-service, rastreamento HTTP + AMQP
|
|
56
51
|
- **Escopo**: correlation ID, tracing distribuído, diagnóstico de falhas entre microsserviços
|
|
57
52
|
- **Status**: `criado`
|
|
58
53
|
|
|
59
|
-
### `eng-performance-engineer` ✅
|
|
54
|
+
### `eng-devops-performance-engineer` ✅
|
|
60
55
|
- **Trigger**: performance, latência, throughput, profiling, otimização
|
|
61
56
|
- **Escopo**: Core Web Vitals, bundle analysis, lazy loading, caching, memory leaks
|
|
62
57
|
- **Status**: `criado`
|
|
63
58
|
|
|
64
|
-
### `eng-arch-c4` ✅
|
|
59
|
+
### `eng-backend-arch-c4` ✅
|
|
65
60
|
- **Trigger**: arquitetura C4, diagramas de contexto/container/componente
|
|
66
61
|
- **Escopo**: modelagem C4, documentação arquitetural, decisões de design
|
|
67
62
|
- **Status**: `criado`
|
|
@@ -71,24 +66,24 @@ Skills existentes e planejadas do framework Jarvis.
|
|
|
71
66
|
- **Escopo**: integração de LLMs, prompts, RAG, automação com IA
|
|
72
67
|
- **Status**: `criado`
|
|
73
68
|
|
|
74
|
-
### `eng-browser-extension-builder` ✅
|
|
69
|
+
### `eng-global-browser-extension-builder` ✅
|
|
75
70
|
- **Trigger**: extensões de navegador, Chrome extensions, content scripts
|
|
76
71
|
- **Escopo**: manifest v3, background workers, content scripts, popup UI
|
|
77
72
|
- **Status**: `criado`
|
|
78
73
|
|
|
79
|
-
### `eng-pr` ✅
|
|
74
|
+
### `eng-global-pr` ✅
|
|
80
75
|
- **Trigger**: criação de branch, commit, Merge Request
|
|
81
|
-
- **Escopo**: git flow, MR description, `eng-task-comment`, code review automation
|
|
76
|
+
- **Escopo**: git flow, MR description, `eng-global-task-comment`, code review automation
|
|
82
77
|
- **Status**: `criado`
|
|
83
78
|
|
|
84
|
-
### `eng-docs-write` ✅
|
|
79
|
+
### `eng-global-docs-write` ✅
|
|
85
80
|
- **Trigger**: documentação técnica, ADRs, RFCs, tech specs
|
|
86
81
|
- **Escopo**: geração e atualização de docs de engenharia
|
|
87
82
|
- **Status**: `criado`
|
|
88
83
|
|
|
89
|
-
### `eng-task-comment` ✅
|
|
84
|
+
### `eng-global-task-comment` ✅
|
|
90
85
|
- **Trigger**: comentários técnicos em cards do task manager
|
|
91
|
-
- **Escopo**: Jira/Linear/GitHub/Asana via adapter; alias `eng-jira-comment`
|
|
86
|
+
- **Escopo**: Jira/Linear/GitHub/Asana via adapter; alias `eng-global-jira-comment`
|
|
92
87
|
- **Status**: `criado`
|
|
93
88
|
|
|
94
89
|
---
|
|
@@ -193,17 +188,17 @@ Skills existentes e planejadas do framework Jarvis.
|
|
|
193
188
|
|
|
194
189
|
## Skills Criadas — Produto
|
|
195
190
|
|
|
196
|
-
### `
|
|
191
|
+
### `product-specs` ✅
|
|
197
192
|
- **Trigger**: pedido de especificação de produto (PRD, FRD, épico, história, discovery), inclusive em linguagem natural
|
|
198
193
|
- **Escopo**: skill fina, só porta de entrada: aponta para os workflows `prod.spec.*`, que são a fonte única de cada comando
|
|
199
194
|
- **Status**: `criado`
|
|
200
195
|
|
|
201
|
-
### `
|
|
196
|
+
### `product-specs-update` ✅
|
|
202
197
|
- **Trigger**: atualização de specs existentes
|
|
203
198
|
- **Escopo**: revisão e evolução de requisitos
|
|
204
199
|
- **Status**: `criado`
|
|
205
200
|
|
|
206
|
-
### `
|
|
201
|
+
### `product-roadmap-report` ✅
|
|
207
202
|
- **Trigger**: relatório de roadmap de produto
|
|
208
203
|
- **Status**: `criado`
|
|
209
204
|
|
|
@@ -217,17 +212,12 @@ Removidas: `checkin`, `checkout`, `daily`, `task-log`, `send-priority`, `sent-pr
|
|
|
217
212
|
|
|
218
213
|
## Skills Criadas — Utilitários / Framework
|
|
219
214
|
|
|
220
|
-
### `init
|
|
215
|
+
### `jarvis-init` ✅
|
|
221
216
|
- **Trigger**: inicialização do framework
|
|
222
217
|
- **Escopo**: criação de ENV.md, validação de MCPs, onboarding
|
|
223
218
|
- **Status**: `criado`
|
|
224
219
|
|
|
225
|
-
### `
|
|
226
|
-
- **Trigger**: análise de churn SaaS por squad
|
|
227
|
-
- **Escopo**: coleta via `$MESSAGE_COMUNICATOR`, classificação por taxonomy.md, relatório narrativo
|
|
228
|
-
- **Status**: `criado` (v1.5.0)
|
|
229
|
-
|
|
230
|
-
### `report-issue` ✅
|
|
220
|
+
### `jarvis-report-issue` ✅
|
|
231
221
|
- **Trigger**: auto-report de bugs no framework Jarvis via GitLab API
|
|
232
222
|
- **Status**: `criado`
|
|
233
223
|
|
|
@@ -235,14 +225,10 @@ Removidas: `checkin`, `checkout`, `daily`, `task-log`, `send-priority`, `sent-pr
|
|
|
235
225
|
- **Trigger**: criação de novos skills
|
|
236
226
|
- **Status**: `criado`
|
|
237
227
|
|
|
238
|
-
### `docs-index` / `docs-central` / `context-detect` ✅
|
|
228
|
+
### `jarvis-docs-index` / `jarvis-docs-central` / `jarvis-context-detect` ✅
|
|
239
229
|
- **Trigger**: indexação de docs, sync com repo central, detecção de contexto
|
|
240
230
|
- **Status**: `criado`
|
|
241
231
|
|
|
242
|
-
### `lovable-prompt-generator` ✅
|
|
243
|
-
- **Trigger**: gerar prompts para frontend React via Lovable
|
|
244
|
-
- **Status**: `criado`
|
|
245
|
-
|
|
246
232
|
---
|
|
247
233
|
|
|
248
234
|
## Skills Planejadas
|
|
@@ -257,7 +243,7 @@ Removidas: `checkin`, `checkout`, `daily`, `task-log`, `send-priority`, `sent-pr
|
|
|
257
243
|
- **Escopo**: Docker, Kubernetes, GitHub Actions, Terraform, AWS/GCP, logs/métricas/tracing
|
|
258
244
|
- **Status**: `planejado`
|
|
259
245
|
|
|
260
|
-
### `eng-cybersecurity` ✅
|
|
246
|
+
### `eng-security-cybersecurity` ✅
|
|
261
247
|
- **Trigger**: segurança de aplicação, OWASP, hardening, secrets, supply chain, compliance
|
|
262
248
|
- **Escopo**: OWASP Top 10, secrets management, sanitização, headers de segurança, SAST, supply chain, LGPD/GDPR
|
|
263
249
|
- **Status**: `criado`
|
|
@@ -295,13 +281,12 @@ Removidas: `checkin`, `checkout`, `daily`, `task-log`, `send-priority`, `sent-pr
|
|
|
295
281
|
|---|-------|--------|--------------|
|
|
296
282
|
| 1 | `eng-frontend` | ✅ criado | Alta demanda, dois contextos (React + PHP/Blade) |
|
|
297
283
|
| 2 | `eng-backend` | ✅ criado | APIs, auth, workers RabbitMQ — core do produto |
|
|
298
|
-
| 3 | `eng-nestjs` | ✅ criado | Framework principal — DI, guards, Passport/JWT |
|
|
284
|
+
| 3 | `eng-backend-nestjs` | ✅ criado | Framework principal — DI, guards, Passport/JWT |
|
|
299
285
|
| 4 | `eng-scraper` | ✅ criado | Puppeteer como primário, ETL pipelines NestJS |
|
|
300
|
-
|
|
|
301
|
-
|
|
|
302
|
-
| 7 | `eng-microfrontend` | ✅ criado | Module Federation, shell/remote |
|
|
286
|
+
| 6 | `eng-frontend-design-system` | ✅ criado | Tokens, CVA, Storybook, versionamento |
|
|
287
|
+
| 7 | `eng-frontend-microfrontend` | ✅ criado | Module Federation, shell/remote |
|
|
303
288
|
| 8 | `eng-database` | planejado | Área densa com muitos anti-patterns críticos |
|
|
304
|
-
| 9 | `eng-cybersecurity` | ✅ criado | Transversal — impacta todas as outras áreas |
|
|
289
|
+
| 9 | `eng-security-cybersecurity` | ✅ criado | Transversal — impacta todas as outras áreas |
|
|
305
290
|
| 10 | `eng-infrastructure` | planejado | Necessário para squads com CI/CD próprio |
|
|
306
291
|
| 11 | `eng-back-for-frontend` | planejado | BFF, GraphQL gateway — demanda crescente |
|
|
307
292
|
| 12 | `eng-ui` | planejado | Nicho — criar sob demanda |
|