@nurix/etna 0.19.66 → 0.19.67
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/bin/etna.js +10 -1
- package/data/harness-index.json +1 -5
- package/data/harnesses/code/CLAUDE.md +2 -0
- package/data/harnesses/code/agents/maintenance.md +3 -1
- package/data/harnesses/code/harness.json +7 -2
- package/data/harnesses/code/hooks/compliance.mjs +1 -0
- package/data/harnesses/code/hooks/lib/frozen.mjs +3 -0
- package/data/harnesses/code/hooks/lib/ownership.mjs +3 -1
- package/data/harnesses/code/skills/documentation/scripts/doc-lint.mjs +1 -1
- package/data/harnesses/delivery/agents/maintenance.md +3 -1
- package/data/harnesses/delivery/harness.json +2 -2
- package/data/harnesses/delivery/skills/documentation/scripts/doc-lint.mjs +1 -1
- package/data/harnesses/etna/agents/maintenance.md +3 -1
- package/data/harnesses/etna/harness.json +2 -2
- package/data/harnesses/etna/skills/documentation/scripts/doc-lint.mjs +1 -1
- package/lib/install/materialize.mjs +51 -57
- package/package.json +2 -2
- package/data/harnesses/apollo/.mcp.json +0 -8
- package/data/harnesses/apollo/.prettierignore +0 -29
- package/data/harnesses/apollo/.prettierrc.json +0 -3
- package/data/harnesses/apollo/.vscode/settings.json +0 -19
- package/data/harnesses/apollo/CLAUDE.md +0 -162
- package/data/harnesses/apollo/agents/bookkeeper.md +0 -28
- package/data/harnesses/apollo/agents/brainstorm.md +0 -144
- package/data/harnesses/apollo/agents/change-review.md +0 -251
- package/data/harnesses/apollo/agents/lld-mode.md +0 -58
- package/data/harnesses/apollo/agents/maintenance.md +0 -234
- package/data/harnesses/apollo/agents/performance-review.md +0 -223
- package/data/harnesses/apollo/agents/retro.md +0 -46
- package/data/harnesses/apollo/codex/agents/bookkeeper.toml +0 -26
- package/data/harnesses/apollo/codex/agents/brainstorm.toml +0 -142
- package/data/harnesses/apollo/codex/agents/change-review.toml +0 -249
- package/data/harnesses/apollo/codex/agents/lld-mode.toml +0 -52
- package/data/harnesses/apollo/codex/agents/maintenance.toml +0 -228
- package/data/harnesses/apollo/codex/agents/performance-review.toml +0 -222
- package/data/harnesses/apollo/codex/agents/retro.toml +0 -45
- package/data/harnesses/apollo/harness.json +0 -19
- package/data/harnesses/apollo/hooks/approved-packages.md +0 -44
- package/data/harnesses/apollo/hooks/awareness.mjs +0 -405
- package/data/harnesses/apollo/hooks/check-bookkeeping-clean.mjs +0 -19
- package/data/harnesses/apollo/hooks/check-changelog-presence.mjs +0 -57
- package/data/harnesses/apollo/hooks/check-completion-integrity.mjs +0 -71
- package/data/harnesses/apollo/hooks/check-ownership.mjs +0 -22
- package/data/harnesses/apollo/hooks/compliance.mjs +0 -457
- package/data/harnesses/apollo/hooks/hooks.json +0 -23
- package/data/harnesses/apollo/hooks/lib/frozen.mjs +0 -58
- package/data/harnesses/apollo/hooks/lib/ownership.mjs +0 -242
- package/data/harnesses/apollo/hooks/lib/state.mjs +0 -170
- package/data/harnesses/apollo/rules/changelog.md +0 -27
- package/data/harnesses/apollo/rules/database.md +0 -34
- package/data/harnesses/apollo/rules/frontend.md +0 -30
- package/data/harnesses/apollo/rules/general.md +0 -40
- package/data/harnesses/apollo/rules/nomenclature.md +0 -30
- package/data/harnesses/apollo/rules/pnpm.md +0 -57
- package/data/harnesses/apollo/rules/testing.md +0 -64
- package/data/harnesses/apollo/skills/boundary/SKILL.md +0 -75
- package/data/harnesses/apollo/skills/boundary/references/index.md +0 -16
- package/data/harnesses/apollo/skills/boundary/references/mechanisms.md +0 -99
- package/data/harnesses/apollo/skills/boundary/references/packs/async-messaging.md +0 -81
- package/data/harnesses/apollo/skills/boundary/references/packs/auth.md +0 -93
- package/data/harnesses/apollo/skills/boundary/references/packs/build-config-runtime.md +0 -93
- package/data/harnesses/apollo/skills/boundary/references/packs/cloudflare.md +0 -93
- package/data/harnesses/apollo/skills/boundary/references/packs/frontend.md +0 -93
- package/data/harnesses/apollo/skills/boundary/references/packs/generic-tail.md +0 -55
- package/data/harnesses/apollo/skills/boundary/references/packs/persistence.md +0 -93
- package/data/harnesses/apollo/skills/boundary/references/packs/wire-api.md +0 -87
- package/data/harnesses/apollo/skills/brainstorm/README.md +0 -56
- package/data/harnesses/apollo/skills/brainstorm/SKILL.md +0 -173
- package/data/harnesses/apollo/skills/brainstorm/references/doctrine.md +0 -98
- package/data/harnesses/apollo/skills/brainstorm/references/harvest.md +0 -86
- package/data/harnesses/apollo/skills/brainstorm/references/session-schema.md +0 -186
- package/data/harnesses/apollo/skills/brainstorm/scripts/detector.mjs +0 -460
- package/data/harnesses/apollo/skills/design/SKILL.md +0 -121
- package/data/harnesses/apollo/skills/design/components/charts.md +0 -76
- package/data/harnesses/apollo/skills/design/components/collections.md +0 -132
- package/data/harnesses/apollo/skills/design/components/feedback.md +0 -47
- package/data/harnesses/apollo/skills/design/components/hooks.md +0 -35
- package/data/harnesses/apollo/skills/design/components/index.md +0 -143
- package/data/harnesses/apollo/skills/design/components/inputs.md +0 -327
- package/data/harnesses/apollo/skills/design/components/layout.md +0 -52
- package/data/harnesses/apollo/skills/design/components/media.md +0 -66
- package/data/harnesses/apollo/skills/design/components/motion.md +0 -82
- package/data/harnesses/apollo/skills/design/components/navigation.md +0 -29
- package/data/harnesses/apollo/skills/design/components/overlays.md +0 -72
- package/data/harnesses/apollo/skills/design/components/setup.md +0 -40
- package/data/harnesses/apollo/skills/design/components/typography.md +0 -46
- package/data/harnesses/apollo/skills/design/components/utils.md +0 -37
- package/data/harnesses/apollo/skills/design/data/blueprints/browse.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/creation-flow.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/dashboard.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/grid.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/queue.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/record-detail.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/settings.md +0 -38
- package/data/harnesses/apollo/skills/design/data/charts/census.csv +0 -58
- package/data/harnesses/apollo/skills/design/data/checklists/browse.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/creation-flow.md +0 -20
- package/data/harnesses/apollo/skills/design/data/checklists/dashboard.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/grid.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/queue.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/record-detail.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/settings.md +0 -21
- package/data/harnesses/apollo/skills/design/data/chrome/board-column.md +0 -68
- package/data/harnesses/apollo/skills/design/data/chrome/data-table.md +0 -63
- package/data/harnesses/apollo/skills/design/data/chrome/side-panel.md +0 -60
- package/data/harnesses/apollo/skills/design/data/chrome/sidebar.md +0 -78
- package/data/harnesses/apollo/skills/design/data/chrome/stat-cards.md +0 -62
- package/data/harnesses/apollo/skills/design/data/chrome/topbar.md +0 -65
- package/data/harnesses/apollo/skills/design/data/elevation/ant-design-directional-shadow.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/apple-liquid-glass-material.md +0 -18
- package/data/harnesses/apollo/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +0 -20
- package/data/harnesses/apollo/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +0 -20
- package/data/harnesses/apollo/skills/design/data/elevation/github-primer-sparing-shadow.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/ibm-carbon-layer-and-border.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/linear-dark-surface-ladder.md +0 -17
- package/data/harnesses/apollo/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/material-3-tonal-elevation.md +0 -21
- package/data/harnesses/apollo/skills/design/data/elevation/neobrutalist-hard-offset.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +0 -18
- package/data/harnesses/apollo/skills/design/data/elevation/notion-warm-minimal-hairline.md +0 -17
- package/data/harnesses/apollo/skills/design/data/elevation/polaris-elevation-inset-bevel.md +0 -21
- package/data/harnesses/apollo/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/shadcn-neutral-derived-radius.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +0 -18
- package/data/harnesses/apollo/skills/design/data/elevation/tailwind-default-utility-scale.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/vercel-geist-shadow-as-border.md +0 -20
- package/data/harnesses/apollo/skills/design/data/iconography.md +0 -199
- package/data/harnesses/apollo/skills/design/data/motion/accordion-expand.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/destructive-hold-confirm.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/drag-dismiss-momentum.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/empty-state-arrive.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/hover-lift.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/modal-center-arrive.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/number-ticker-roll.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/onboarding-bounce.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/panel-slide.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/press-feedback.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/progress-linear-loop.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/route-crossfade.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/rubber-band-overscroll.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/skeleton-shimmer.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/stagger-arrive.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/toast-enter-stack.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/tooltip-chain-instant.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/trigger-anchored-reveal.md +0 -18
- package/data/harnesses/apollo/skills/design/data/tells.csv +0 -34
- package/data/harnesses/apollo/skills/design/data/voices/bright-collaborator.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/direct-operator.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/earnest-helper.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/editorial-composed.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/quiet-concierge.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/warm-guide.md +0 -29
- package/data/harnesses/apollo/skills/design/references/compose.md +0 -23
- package/data/harnesses/apollo/skills/design/references/content.md +0 -28
- package/data/harnesses/apollo/skills/design/references/emission.md +0 -21
- package/data/harnesses/apollo/skills/design/references/existing-apps.md +0 -27
- package/data/harnesses/apollo/skills/design/references/foundations.md +0 -57
- package/data/harnesses/apollo/skills/design/references/intake.md +0 -40
- package/data/harnesses/apollo/skills/design/references/object-pass.md +0 -24
- package/data/harnesses/apollo/skills/design/references/ship-gate.md +0 -29
- package/data/harnesses/apollo/skills/design/references/ux-patterns/Readme.md +0 -195
- package/data/harnesses/apollo/skills/design/references/ux-patterns/ai-layer.md +0 -49
- package/data/harnesses/apollo/skills/design/references/ux-patterns/attributes-lifecycle.md +0 -43
- package/data/harnesses/apollo/skills/design/references/ux-patterns/container-choice.md +0 -44
- package/data/harnesses/apollo/skills/design/references/ux-patterns/creation-paths.md +0 -46
- package/data/harnesses/apollo/skills/design/references/ux-patterns/dashboards.md +0 -42
- package/data/harnesses/apollo/skills/design/references/ux-patterns/modes.md +0 -42
- package/data/harnesses/apollo/skills/design/references/ux-patterns/object-model.md +0 -46
- package/data/harnesses/apollo/skills/design/references/ux-patterns/page-archetype.md +0 -48
- package/data/harnesses/apollo/skills/design/references/ux-patterns/promotion-demotion.md +0 -37
- package/data/harnesses/apollo/skills/design/references/ux-patterns/settings.md +0 -42
- package/data/harnesses/apollo/skills/design/references/ux-patterns/standard-pages.md +0 -46
- package/data/harnesses/apollo/skills/design/references/ux-patterns/state-matrix.md +0 -41
- package/data/harnesses/apollo/skills/design/references/ux-patterns/table-mechanics.md +0 -48
- package/data/harnesses/apollo/skills/design/references/ux-patterns/verbs.md +0 -45
- package/data/harnesses/apollo/skills/design/references/ux-patterns/viewer-context.md +0 -40
- package/data/harnesses/apollo/skills/design/scripts/README-validator.md +0 -27
- package/data/harnesses/apollo/skills/design/scripts/select-chart.mjs +0 -622
- package/data/harnesses/apollo/skills/design/scripts/validate-design-md.mjs +0 -1198
- package/data/harnesses/apollo/skills/documentation/SKILL.md +0 -135
- package/data/harnesses/apollo/skills/documentation/references/examples.md +0 -279
- package/data/harnesses/apollo/skills/documentation/references/frontmatter.md +0 -44
- package/data/harnesses/apollo/skills/documentation/references/instruction-style.md +0 -50
- package/data/harnesses/apollo/skills/documentation/references/style-guide.md +0 -384
- package/data/harnesses/apollo/skills/documentation/references/untemplated.md +0 -38
- package/data/harnesses/apollo/skills/documentation/scripts/doc-lint.mjs +0 -140
- package/data/harnesses/apollo/skills/documentation/templates/Readme.md +0 -35
- package/data/harnesses/apollo/skills/documentation/templates/api-reference.md +0 -20
- package/data/harnesses/apollo/skills/documentation/templates/architecture-decision.md +0 -121
- package/data/harnesses/apollo/skills/documentation/templates/backlog.md +0 -33
- package/data/harnesses/apollo/skills/documentation/templates/behavioral-checklist.md +0 -81
- package/data/harnesses/apollo/skills/documentation/templates/bookkeeping.md +0 -18
- package/data/harnesses/apollo/skills/documentation/templates/changelog-entry.md +0 -57
- package/data/harnesses/apollo/skills/documentation/templates/changelog-index.md +0 -41
- package/data/harnesses/apollo/skills/documentation/templates/docs-readme.md +0 -72
- package/data/harnesses/apollo/skills/documentation/templates/domain-model.md +0 -30
- package/data/harnesses/apollo/skills/documentation/templates/environment-registry.md +0 -15
- package/data/harnesses/apollo/skills/documentation/templates/feature.md +0 -150
- package/data/harnesses/apollo/skills/documentation/templates/glossary.md +0 -11
- package/data/harnesses/apollo/skills/documentation/templates/implementation-map.md +0 -42
- package/data/harnesses/apollo/skills/documentation/templates/journal.md +0 -13
- package/data/harnesses/apollo/skills/documentation/templates/memory-main.md +0 -25
- package/data/harnesses/apollo/skills/documentation/templates/migration-runbook.md +0 -34
- package/data/harnesses/apollo/skills/documentation/templates/non-goals.md +0 -11
- package/data/harnesses/apollo/skills/documentation/templates/operations-procedure.md +0 -36
- package/data/harnesses/apollo/skills/documentation/templates/plan.md +0 -88
- package/data/harnesses/apollo/skills/documentation/templates/protected-files.md +0 -37
- package/data/harnesses/apollo/skills/documentation/templates/root-readme.md +0 -104
- package/data/harnesses/apollo/skills/documentation/templates/security-overview.md +0 -27
- package/data/harnesses/apollo/skills/documentation/templates/structure.md +0 -65
- package/data/harnesses/apollo/skills/documentation/templates/system-overview.md +0 -32
- package/data/harnesses/apollo/skills/documentation/templates/testing-strategy.md +0 -29
- package/data/harnesses/apollo/skills/schema-design/SKILL.md +0 -141
- package/data/harnesses/apollo/skills/test/SKILL.md +0 -104
- package/data/harnesses/apollo/skills/testing/SKILL.md +0 -166
- package/data/harnesses/apollo/skills/workflow-mapper/SKILL.md +0 -451
- package/data/harnesses/apollo/skills/workflow-mapper/references/patterns.md +0 -214
- /package/data/harnesses/{apollo → code}/docs/README.md +0 -0
- /package/data/harnesses/{apollo → code}/docs/history/CHANGELOG.md +0 -0
- /package/data/harnesses/{apollo → code}/docs/history/backlog.md +0 -0
- /package/data/harnesses/{apollo → code}/docs/memory/main.md +0 -0
- /package/data/harnesses/{apollo → code}/docs/structure.md +0 -0
- /package/data/harnesses/{apollo → code}/rules/cloudflare.md +0 -0
|
@@ -1,451 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: workflow-mapper
|
|
3
|
-
description: "Use when mapping a codebase's major workflows — traces call chains from user action to database or external system and produces mermaid sequence diagrams + markdown. Triggers on 'map workflows', 'trace flows', 'sequence diagram', 'how does X work end-to-end'."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Workflow Mapper Skill
|
|
7
|
-
|
|
8
|
-
Identify and document every major workflow in a codebase by tracing execution paths from trigger to terminal effect. Output is a single markdown file with mermaid sequence diagrams.
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Decision Tree
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
User request
|
|
16
|
-
│
|
|
17
|
-
├─ "Map all workflows" ────────────▶ Full Discovery (all phases)
|
|
18
|
-
│
|
|
19
|
-
├─ "Map workflow for {feature}" ───▶ Targeted Discovery (skip Phase 1 broad scan)
|
|
20
|
-
│
|
|
21
|
-
├─ "Update workflow map" ──────────▶ Incremental (diff against existing map)
|
|
22
|
-
│
|
|
23
|
-
└─ "How does X work end-to-end" ──▶ Single Workflow Trace (Phase 2-4 only)
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Phase 1: Entry Point Discovery
|
|
29
|
-
|
|
30
|
-
Find all places where a multi-step process begins. Use parallel sub-agents — one per technique.
|
|
31
|
-
|
|
32
|
-
### Technique 1: Route Harvesting
|
|
33
|
-
|
|
34
|
-
Scan all API route definitions. These are the primary entry points for backend workflows.
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
Search patterns (adapt to framework):
|
|
38
|
-
Express: router.(get|post|put|patch|delete)\(
|
|
39
|
-
Fastify: fastify.(get|post|put|patch|delete)\(
|
|
40
|
-
Next.js: export (async )?function (GET|POST|PUT|PATCH|DELETE)
|
|
41
|
-
Hono: app.(get|post|put|patch|delete)\(
|
|
42
|
-
tRPC: .query\(|.mutation\(
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
For each route, record: `{ method, path, handler_function, file }`.
|
|
46
|
-
|
|
47
|
-
Filter out trivial CRUD (single DB call + response). Keep routes that:
|
|
48
|
-
|
|
49
|
-
- Call `startWorkflow`, `addJob`, `enqueue`, `emit`, `publish` (async dispatch)
|
|
50
|
-
- Call 2+ service functions sequentially
|
|
51
|
-
- Have transaction blocks (`$transaction`, `BEGIN`, `withTransaction`)
|
|
52
|
-
- Return a job/workflow ID for polling
|
|
53
|
-
- Trigger WebSocket/SSE events
|
|
54
|
-
|
|
55
|
-
### Technique 2: Background Job Discovery
|
|
56
|
-
|
|
57
|
-
Find all registered background jobs, workflows, and queues.
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
Search patterns:
|
|
61
|
-
Temporal: export async function .*Workflow|workflowModules|startChild\(
|
|
62
|
-
BullMQ: new Queue\(|new Worker\(|.add\(|.process\(
|
|
63
|
-
Celery: @app.task|@shared_task
|
|
64
|
-
Inngest: createFunction\(|inngest.send\(
|
|
65
|
-
Cron: cron.schedule\(|@Cron\(|node-cron
|
|
66
|
-
EventEmitter: .on\(|.emit\(|EventEmitter
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
For Temporal specifically, also check:
|
|
70
|
-
|
|
71
|
-
- `temporal/config/workflowModules.js` — workflow registry with queues and dependencies
|
|
72
|
-
- `temporal/config/activityModules.js` — activity aggregation
|
|
73
|
-
|
|
74
|
-
### Technique 3: Frontend Action Tracing
|
|
75
|
-
|
|
76
|
-
Find UI-initiated multi-step flows.
|
|
77
|
-
|
|
78
|
-
```
|
|
79
|
-
Search patterns:
|
|
80
|
-
Redux thunks: createAsyncThunk\(|dispatch\(
|
|
81
|
-
API calls: api\.(post|put|patch|delete)\(|axios\.(post|put|patch|delete)\(|fetch\(
|
|
82
|
-
Form submits: onSubmit|handleSubmit
|
|
83
|
-
Custom hooks: use[A-Z].*\(\) that contain API calls
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Focus on actions that:
|
|
87
|
-
|
|
88
|
-
- POST/PUT/PATCH/DELETE to backend (not just GETs)
|
|
89
|
-
- Dispatch multiple Redux actions in sequence
|
|
90
|
-
- Start polling loops (`setInterval`, recursive `setTimeout`, retry patterns)
|
|
91
|
-
- Open WebSocket connections or listen for server-sent events
|
|
92
|
-
|
|
93
|
-
### Technique 4: Event & Message Tracing
|
|
94
|
-
|
|
95
|
-
Find event-driven workflows (WebSocket, pub/sub, SSE).
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
Search patterns:
|
|
99
|
-
WebSocket: socket.on\(|io.on\(|ws.on\(
|
|
100
|
-
SSE: EventSource|text/event-stream
|
|
101
|
-
Redis pub: .publish\(|.subscribe\(
|
|
102
|
-
Message: .sendMessage\(|.postMessage\(
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Technique 5: Scheduled & Lifecycle Workflows
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
Search patterns:
|
|
109
|
-
App startup: app.listen|bootstrap|onModuleInit|main\(\)
|
|
110
|
-
Shutdown: SIGTERM|SIGINT|gracefulShutdown|onModuleDestroy
|
|
111
|
-
Migrations: migrate|seed|up\(\)|down\(\)
|
|
112
|
-
Health checks: /health|/ping|/ready|/live
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## Phase 2: Call Chain Tracing
|
|
118
|
-
|
|
119
|
-
For each discovered entry point, trace the full execution path. Use one sub-agent per workflow for parallelism.
|
|
120
|
-
|
|
121
|
-
### Tracing Algorithm
|
|
122
|
-
|
|
123
|
-
```
|
|
124
|
-
1. Start at the entry point function
|
|
125
|
-
2. Read the function body
|
|
126
|
-
3. For each function call or await:
|
|
127
|
-
a. Is it a DB operation? → Record as "Database" participant action
|
|
128
|
-
b. Is it an external API call? → Record as "{ServiceName}" participant action
|
|
129
|
-
c. Is it a queue/workflow dispatch? → Record as "{QueueSystem}" participant, then recurse into the dispatched handler
|
|
130
|
-
d. Is it a Redux dispatch? → Record as "Redux" participant action
|
|
131
|
-
e. Is it an internal function in the same service? → Recurse (but cap depth at 4)
|
|
132
|
-
f. Is it a WebSocket emit? → Record as "WebSocket" participant action
|
|
133
|
-
4. Record branching (if/else, try/catch, switch) as alt/opt blocks
|
|
134
|
-
5. Record loops (polling, retry, pagination) as loop blocks
|
|
135
|
-
6. Stop when you hit: a return to the caller, a terminal DB write, or an external system response
|
|
136
|
-
7. If a workflow trace exceeds the configured depth cap, stop tracing and note the overflow point with a comment like "→ [continues deeper, capped at depth N]". Do not silently truncate.
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Participant Identification
|
|
140
|
-
|
|
141
|
-
Map code actors to diagram participants using this hierarchy:
|
|
142
|
-
|
|
143
|
-
| Code Pattern | Participant Name |
|
|
144
|
-
| --- | --- |
|
|
145
|
-
| React component, hook, event handler | `User` + `Frontend` |
|
|
146
|
-
| Express/API route handler | `API` |
|
|
147
|
-
| Temporal workflow | `Temporal` |
|
|
148
|
-
| BullMQ worker/processor | `Queue` |
|
|
149
|
-
| Prisma/Sequelize/Knex call | `Database` |
|
|
150
|
-
| External HTTP call (axios, fetch to external URL) | `{ServiceName}` (derive from URL or config) |
|
|
151
|
-
| Redis operation | `Cache` |
|
|
152
|
-
| WebSocket emit/broadcast | `WebSocket` |
|
|
153
|
-
| File system / S3 / storage | `Storage` |
|
|
154
|
-
| Git API calls | `Git` |
|
|
155
|
-
| Email/SMS send | `Notifications` |
|
|
156
|
-
| Auth provider (Keycloak, Better Auth, Auth0) | `Auth` |
|
|
157
|
-
|
|
158
|
-
### Branching Detection
|
|
159
|
-
|
|
160
|
-
Look for conditional logic that represents meaningful workflow forks:
|
|
161
|
-
|
|
162
|
-
```
|
|
163
|
-
- Version conflicts (optimistic locking) → alt block
|
|
164
|
-
- Permission/auth checks → opt block
|
|
165
|
-
- Feature flags → opt block
|
|
166
|
-
- Error handling with different outcomes → alt block
|
|
167
|
-
- Retry with backoff → loop block
|
|
168
|
-
- Polling for completion → loop block
|
|
169
|
-
- Batch processing → loop block
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
---
|
|
173
|
-
|
|
174
|
-
## Phase 3: Classification & Filtering
|
|
175
|
-
|
|
176
|
-
Not every API route is a "workflow". Classify and filter.
|
|
177
|
-
|
|
178
|
-
### Workflow Categories
|
|
179
|
-
|
|
180
|
-
| Category | Criteria | Include? |
|
|
181
|
-
| --- | --- | --- |
|
|
182
|
-
| **Orchestration** | Multi-step, multi-service, async handoffs (save, publish, deploy) | Always |
|
|
183
|
-
| **Auth & Session** | Login, logout, token refresh, SSO flows | Always |
|
|
184
|
-
| **Real-time** | WebSocket connections, live updates, presence | Always |
|
|
185
|
-
| **Event-driven** | Pub/sub chains, webhook handlers, event sourcing | Always |
|
|
186
|
-
| **Scheduled** | Cron jobs, recurring workflows, cleanup tasks | Always |
|
|
187
|
-
| **Data Pipeline** | ETL, import/export, migration, sync between systems | Always |
|
|
188
|
-
| **Simple CRUD** | Single DB call + response, no branching | Skip |
|
|
189
|
-
| **Static Serving** | File serving, asset delivery | Skip |
|
|
190
|
-
| **Health/Config** | Health checks, config endpoints | Skip |
|
|
191
|
-
|
|
192
|
-
### Complexity Scoring
|
|
193
|
-
|
|
194
|
-
Score each workflow to determine diagram detail level:
|
|
195
|
-
|
|
196
|
-
- **Steps**: Count distinct operations (DB calls, API calls, dispatches). 1-2 = simple, 3-5 = moderate, 6+ = complex
|
|
197
|
-
- **Participants**: Count distinct systems involved. 2 = simple, 3-4 = moderate, 5+ = complex
|
|
198
|
-
- **Branching**: Count alt/opt blocks. 0 = linear, 1-2 = moderate, 3+ = complex
|
|
199
|
-
- **Async**: Has polling, callbacks, child workflows? +1 complexity level
|
|
200
|
-
|
|
201
|
-
Simple workflows get a compact diagram. Complex workflows get full detail with alt/opt/loop blocks.
|
|
202
|
-
|
|
203
|
-
---
|
|
204
|
-
|
|
205
|
-
## Phase 4: Mermaid Diagram Generation
|
|
206
|
-
|
|
207
|
-
### Diagram Template
|
|
208
|
-
|
|
209
|
-
````markdown
|
|
210
|
-
### {Workflow Name}
|
|
211
|
-
|
|
212
|
-
**Trigger:** {What initiates this — button click, API call, cron schedule, event} **Participants:** {List of systems involved} **Key files:** {3-5 most important files in the chain}
|
|
213
|
-
|
|
214
|
-
```mermaid
|
|
215
|
-
sequenceDiagram
|
|
216
|
-
participant User
|
|
217
|
-
participant Frontend
|
|
218
|
-
participant API
|
|
219
|
-
participant Database
|
|
220
|
-
|
|
221
|
-
User->>Frontend: {User action}
|
|
222
|
-
Frontend->>API: {HTTP method} {path}
|
|
223
|
-
API->>Database: {Operation}
|
|
224
|
-
Database-->>API: {Result}
|
|
225
|
-
API-->>Frontend: {Response}
|
|
226
|
-
Frontend-->>User: {UI update}
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
**Notes:**
|
|
230
|
-
|
|
231
|
-
- {Important implementation detail not visible in diagram}
|
|
232
|
-
- {Performance consideration, timeout, retry policy}
|
|
233
|
-
- {Known edge cases or failure modes}
|
|
234
|
-
````
|
|
235
|
-
|
|
236
|
-
### Diagram Rules
|
|
237
|
-
|
|
238
|
-
1. **Arrow types**: Solid (`->>`) for calls/requests, dashed (`-->>`) for returns/responses
|
|
239
|
-
2. **Activation bars**: Use `activate`/`deactivate` only for long-running operations (Temporal workflows, polling loops)
|
|
240
|
-
3. **Alt blocks**: Use for real workflow branching (conflict vs success), not for error handling
|
|
241
|
-
4. **Loop blocks**: Use for polling, retry, batch processing — include the condition
|
|
242
|
-
5. **Opt blocks**: Use for conditional steps (feature flags, optional integrations)
|
|
243
|
-
6. **Notes**: Use `Note over` for context that doesn't fit in arrow labels
|
|
244
|
-
7. **Participant order**: Left-to-right follows the data flow direction (User → Frontend → API → Backend → Database)
|
|
245
|
-
8. **Label brevity**: Arrow labels should be ≤8 words. Use the action, not the implementation detail
|
|
246
|
-
9. **Max participants**: 7 per diagram. If more, split into sub-diagrams or collapse internal services
|
|
247
|
-
10. **Max steps**: 15 visible interactions per diagram. For longer workflows, group related steps or use `rect` blocks
|
|
248
|
-
|
|
249
|
-
### Grouping Related Steps
|
|
250
|
-
|
|
251
|
-
For workflows with many sequential same-type operations, collapse them:
|
|
252
|
-
|
|
253
|
-
```mermaid
|
|
254
|
-
sequenceDiagram
|
|
255
|
-
rect rgb(240, 240, 240)
|
|
256
|
-
Note over Temporal,Database: Save all entities (10 types)
|
|
257
|
-
Temporal->>Database: Upsert objects, attributes, pages...
|
|
258
|
-
Database-->>Temporal: Saved
|
|
259
|
-
end
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
---
|
|
263
|
-
|
|
264
|
-
## Phase 5: Output Assembly
|
|
265
|
-
|
|
266
|
-
### Output File Structure
|
|
267
|
-
|
|
268
|
-
Write to the user-specified path, or default to `docs/architecture/workflows.md`. Before writing output files, ensure the target directory exists. Create it with `mkdir -p` if needed.
|
|
269
|
-
|
|
270
|
-
```markdown
|
|
271
|
-
---
|
|
272
|
-
generated: { YYYY-MM-DD }
|
|
273
|
-
scope: { full | feature-name }
|
|
274
|
-
workflows_found: { count }
|
|
275
|
-
---
|
|
276
|
-
|
|
277
|
-
# Codebase Workflows
|
|
278
|
-
|
|
279
|
-
Auto-generated workflow map. Traces execution paths from user action to terminal effect.
|
|
280
|
-
|
|
281
|
-
## Table of Contents
|
|
282
|
-
|
|
283
|
-
| Workflow | Category | Trigger | Participants | Complexity |
|
|
284
|
-
| --- | --- | --- | --- | --- |
|
|
285
|
-
| [{Name}](#{anchor}) | {Category} | {Trigger} | {Count} | {Simple/Moderate/Complex} |
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
## Orchestration Workflows
|
|
290
|
-
|
|
291
|
-
### {Workflow Name}
|
|
292
|
-
|
|
293
|
-
{Diagram + metadata as defined in Phase 4}
|
|
294
|
-
|
|
295
|
-
---
|
|
296
|
-
|
|
297
|
-
## Authentication & Session Workflows
|
|
298
|
-
|
|
299
|
-
### {Workflow Name}
|
|
300
|
-
|
|
301
|
-
{...}
|
|
302
|
-
|
|
303
|
-
---
|
|
304
|
-
|
|
305
|
-
## Real-time Workflows
|
|
306
|
-
|
|
307
|
-
### {Workflow Name}
|
|
308
|
-
|
|
309
|
-
{...}
|
|
310
|
-
|
|
311
|
-
---
|
|
312
|
-
|
|
313
|
-
## Event-driven Workflows
|
|
314
|
-
|
|
315
|
-
### {Workflow Name}
|
|
316
|
-
|
|
317
|
-
{...}
|
|
318
|
-
|
|
319
|
-
---
|
|
320
|
-
|
|
321
|
-
## Scheduled Workflows
|
|
322
|
-
|
|
323
|
-
### {Workflow Name}
|
|
324
|
-
|
|
325
|
-
{...}
|
|
326
|
-
|
|
327
|
-
---
|
|
328
|
-
|
|
329
|
-
## Data Pipeline Workflows
|
|
330
|
-
|
|
331
|
-
### {Workflow Name}
|
|
332
|
-
|
|
333
|
-
{...}
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
### Section Ordering
|
|
337
|
-
|
|
338
|
-
1. Orchestration (the core business logic — save, publish, deploy)
|
|
339
|
-
2. Authentication & Session
|
|
340
|
-
3. Real-time (WebSocket, SSE)
|
|
341
|
-
4. Event-driven (pub/sub, webhooks)
|
|
342
|
-
5. Scheduled (cron, recurring)
|
|
343
|
-
6. Data Pipeline (import/export, sync, migration)
|
|
344
|
-
|
|
345
|
-
Skip empty sections.
|
|
346
|
-
|
|
347
|
-
---
|
|
348
|
-
|
|
349
|
-
## Execution Strategy
|
|
350
|
-
|
|
351
|
-
### Full Discovery (default)
|
|
352
|
-
|
|
353
|
-
Launch 5 parallel sub-agents for Phase 1 (one per technique). Collect results, deduplicate entry points, then launch parallel sub-agents for Phase 2 (one per workflow, max 8 concurrent). Run Phase 3-5 sequentially in the main agent.
|
|
354
|
-
|
|
355
|
-
### Targeted Discovery
|
|
356
|
-
|
|
357
|
-
User specifies a feature name. Skip broad Phase 1 scan. Instead:
|
|
358
|
-
|
|
359
|
-
1. Find the feature's directory/files (grep for feature name in routes, components, workflows)
|
|
360
|
-
2. Trace from those entry points only
|
|
361
|
-
3. Output a single-feature workflow document
|
|
362
|
-
|
|
363
|
-
### Incremental Update
|
|
364
|
-
|
|
365
|
-
Read the existing workflow map file. For each workflow listed, check if the key files have changed (git diff). Re-trace only changed workflows. Preserve unchanged sections.
|
|
366
|
-
|
|
367
|
-
---
|
|
368
|
-
|
|
369
|
-
## Advanced Techniques
|
|
370
|
-
|
|
371
|
-
### Payload Storage Detection
|
|
372
|
-
|
|
373
|
-
Look for patterns where large payloads are stored separately and referenced by ID:
|
|
374
|
-
|
|
375
|
-
```
|
|
376
|
-
storePayload|savePayload|workflow_payload|jobData
|
|
377
|
-
→ then: retrievePayload|fetchPayload|getPayload (in the worker/activity)
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
Note this in the diagram as a "Store payload → reference by ID" pattern.
|
|
381
|
-
|
|
382
|
-
### Optimistic Locking Detection
|
|
383
|
-
|
|
384
|
-
Look for version comparison patterns:
|
|
385
|
-
|
|
386
|
-
```
|
|
387
|
-
version.*!==|version.*conflict|StaleObjectError|OptimisticLock
|
|
388
|
-
if.*serverVersion.*localVersion|if.*version.*mismatch
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
These indicate conflict branching that should appear as `alt` blocks.
|
|
392
|
-
|
|
393
|
-
### Polling Loop Detection
|
|
394
|
-
|
|
395
|
-
Look for patterns where the frontend waits for async completion:
|
|
396
|
-
|
|
397
|
-
```
|
|
398
|
-
setInterval|setTimeout.*recursive|poll|retry.*status
|
|
399
|
-
GET.*status\?.*workflowId|GET.*status\?.*jobId
|
|
400
|
-
```
|
|
401
|
-
|
|
402
|
-
Note the polling interval and timeout in the diagram.
|
|
403
|
-
|
|
404
|
-
### Child Workflow / Sub-job Detection
|
|
405
|
-
|
|
406
|
-
Look for spawned sub-processes:
|
|
407
|
-
|
|
408
|
-
```
|
|
409
|
-
startChild\(|spawnChild|fork\(|.add\(.*queue
|
|
410
|
-
Promise\.all.*map.*startWorkflow
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
These should appear as nested sequences or separate linked diagrams.
|
|
414
|
-
|
|
415
|
-
### Transaction Boundary Detection
|
|
416
|
-
|
|
417
|
-
Look for explicit transaction markers:
|
|
418
|
-
|
|
419
|
-
```
|
|
420
|
-
\$transaction|\$executeRaw|BEGIN|COMMIT|ROLLBACK
|
|
421
|
-
withTransaction|runInTransaction|atomic
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
Group operations within a transaction using `rect` blocks in the diagram.
|
|
425
|
-
|
|
426
|
-
### Rate Limiting & Middleware Detection
|
|
427
|
-
|
|
428
|
-
Look for middleware applied to route groups:
|
|
429
|
-
|
|
430
|
-
```
|
|
431
|
-
rateLimit|rateLimiter|throttle
|
|
432
|
-
authenticate|authorize|requireAuth|requireRole
|
|
433
|
-
validate|validateBody|validateParams
|
|
434
|
-
```
|
|
435
|
-
|
|
436
|
-
Note these as guards in the diagram using `opt` blocks or notes.
|
|
437
|
-
|
|
438
|
-
---
|
|
439
|
-
|
|
440
|
-
## Quality Checks
|
|
441
|
-
|
|
442
|
-
Before outputting, verify:
|
|
443
|
-
|
|
444
|
-
- [ ] Every diagram has ≥3 participants (otherwise it's probably too simple to document)
|
|
445
|
-
- [ ] Every diagram has both request and response arrows (no dangling calls)
|
|
446
|
-
- [ ] Participant names are consistent across all diagrams (same DB = same name everywhere)
|
|
447
|
-
- [ ] Alt/opt/loop blocks have clear conditions written in the block label
|
|
448
|
-
- [ ] Key files listed actually exist in the codebase (verify with glob)
|
|
449
|
-
- [ ] No workflow is documented twice under different names
|
|
450
|
-
- [ ] Mermaid syntax is valid (no unclosed blocks, balanced activate/deactivate)
|
|
451
|
-
- [ ] Table of contents anchors match actual heading anchors
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
# Search Pattern Reference
|
|
2
|
-
|
|
3
|
-
Concrete grep/glob patterns for each discovery technique. Agents should adapt these to the actual framework detected in the codebase.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Framework Detection (run first)
|
|
8
|
-
|
|
9
|
-
Identify the tech stack to select the right patterns:
|
|
10
|
-
|
|
11
|
-
| Check | Pattern | Means |
|
|
12
|
-
| --- | --- | --- |
|
|
13
|
-
| `package.json` contains `express` | `"express"` | Express backend |
|
|
14
|
-
| `package.json` contains `@temporalio` | `"@temporalio"` | Temporal workflows |
|
|
15
|
-
| `package.json` contains `bullmq` | `"bullmq"` | BullMQ job queues |
|
|
16
|
-
| `package.json` contains `@reduxjs/toolkit` | `"@reduxjs/toolkit"` | Redux state management |
|
|
17
|
-
| `package.json` contains `socket.io` | `"socket.io"` | WebSocket via Socket.IO |
|
|
18
|
-
| `app/workflows/` exists | glob `app/workflows/` | Workflow directory convention |
|
|
19
|
-
| `temporal/config/` exists | glob `temporal/config/` | Temporal config convention |
|
|
20
|
-
| Files matching `*.workflow.ts` | glob `**/*.workflow.*` | Workflow file convention |
|
|
21
|
-
| Files matching `*.queue.ts` | glob `**/*.queue.*` | Queue file convention |
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Route Harvesting Patterns
|
|
26
|
-
|
|
27
|
-
### Express
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
# Route definitions
|
|
31
|
-
grep: router\.(get|post|put|patch|delete)\(
|
|
32
|
-
glob: **/routes/**/*.{js,ts}, **/router/**/*.{js,ts}
|
|
33
|
-
|
|
34
|
-
# Route mounting
|
|
35
|
-
grep: app\.use\(.*/api
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### Next.js App Router
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
glob: app/**/route.{js,ts}
|
|
42
|
-
grep: export (async )?function (GET|POST|PUT|PATCH|DELETE)
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Next.js Pages API
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
glob: pages/api/**/*.{js,ts}
|
|
49
|
-
grep: export default (async )?function handler
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### Fastify
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
grep: fastify\.(get|post|put|patch|delete)\(
|
|
56
|
-
grep: (register|plugin).*routes
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## Temporal Workflow Patterns
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
# Workflow definitions
|
|
65
|
-
grep: export async function \w+Workflow
|
|
66
|
-
glob: **/workflow.{js,ts}, **/*.workflow.{js,ts}
|
|
67
|
-
|
|
68
|
-
# Activity definitions
|
|
69
|
-
grep: export async function \w+Activity
|
|
70
|
-
glob: **/activities.{js,ts}, **/*.activities.{js,ts}
|
|
71
|
-
|
|
72
|
-
# Workflow registry
|
|
73
|
-
glob: **/workflowModules.{js,ts}
|
|
74
|
-
grep: workflows\s*=\s*\{
|
|
75
|
-
|
|
76
|
-
# Activity registry
|
|
77
|
-
glob: **/activityModules.{js,ts}
|
|
78
|
-
grep: activities\s*=\s*\{
|
|
79
|
-
|
|
80
|
-
# Workflow dispatch
|
|
81
|
-
grep: startWorkflow\(|startChild\(|executeChild\(
|
|
82
|
-
|
|
83
|
-
# Activity proxy
|
|
84
|
-
grep: proxyActivities\(
|
|
85
|
-
|
|
86
|
-
# Signals and queries
|
|
87
|
-
grep: defineSignal\(|defineQuery\(|setHandler\(
|
|
88
|
-
|
|
89
|
-
# Continue-as-new
|
|
90
|
-
grep: continueAsNew\(
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## BullMQ Patterns
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
# Queue definitions
|
|
99
|
-
grep: new Queue\(|new FlowProducer\(
|
|
100
|
-
glob: **/queue.{js,ts}, **/*.queue.{js,ts}
|
|
101
|
-
|
|
102
|
-
# Worker definitions
|
|
103
|
-
grep: new Worker\(
|
|
104
|
-
glob: **/worker.{js,ts}, **/*.worker.{js,ts}
|
|
105
|
-
|
|
106
|
-
# Job dispatch
|
|
107
|
-
grep: \.add\(|\.addBulk\(|\.addFlow\(
|
|
108
|
-
|
|
109
|
-
# Job processing
|
|
110
|
-
grep: \.process\(|processor:
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## Redux / Frontend Action Patterns
|
|
116
|
-
|
|
117
|
-
```
|
|
118
|
-
# Async thunks (dispatched actions that call APIs)
|
|
119
|
-
grep: createAsyncThunk\(
|
|
120
|
-
glob: **/*Slice.{js,ts}, **/*slice.{js,ts}, **/slices/**/*.{js,ts}
|
|
121
|
-
|
|
122
|
-
# API calls from frontend
|
|
123
|
-
grep: api\.(post|put|patch|delete)\(|axios\.(post|put|patch|delete)\(
|
|
124
|
-
glob: **/hooks/use*.{js,ts,jsx,tsx}, **/services/**/*.{js,ts}
|
|
125
|
-
|
|
126
|
-
# Dispatch sequences
|
|
127
|
-
grep: dispatch\(.*Actions?\.|dispatch\(.*thunk
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## WebSocket Patterns
|
|
133
|
-
|
|
134
|
-
```
|
|
135
|
-
# Socket.IO server
|
|
136
|
-
grep: io\.on\(|socket\.on\(|socket\.emit\(
|
|
137
|
-
glob: **/socket/**/*.{js,ts}, **/ws/**/*.{js,ts}
|
|
138
|
-
|
|
139
|
-
# Socket.IO client
|
|
140
|
-
grep: socket\.on\(|socket\.emit\(|useSocket
|
|
141
|
-
glob: **/hooks/useSocket*.{js,ts,jsx,tsx}
|
|
142
|
-
|
|
143
|
-
# Native WebSocket
|
|
144
|
-
grep: new WebSocket\(|ws\.on\(
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
---
|
|
148
|
-
|
|
149
|
-
## Database Patterns
|
|
150
|
-
|
|
151
|
-
```
|
|
152
|
-
# Prisma
|
|
153
|
-
grep: prisma\.\w+\.(findMany|findFirst|findUnique|create|update|delete|upsert|aggregate|groupBy)
|
|
154
|
-
grep: \$transaction\(|\$executeRaw\(|\$queryRaw\(
|
|
155
|
-
|
|
156
|
-
# Sequelize
|
|
157
|
-
grep: \.findAll\(|\.findOne\(|\.create\(|\.update\(|\.destroy\(
|
|
158
|
-
grep: sequelize\.transaction\(
|
|
159
|
-
|
|
160
|
-
# Raw SQL
|
|
161
|
-
grep: \.query\(|\.execute\(|BEGIN|COMMIT|ROLLBACK
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
## External Service Patterns
|
|
167
|
-
|
|
168
|
-
```
|
|
169
|
-
# Outbound HTTP (to other services)
|
|
170
|
-
grep: axios\.(get|post|put|patch|delete)\(|fetch\(.*https?://
|
|
171
|
-
grep: got\.(get|post|put|patch|delete)\(|request\.(get|post|put|patch|delete)\(
|
|
172
|
-
|
|
173
|
-
# Git operations
|
|
174
|
-
grep: git.*push|git.*commit|createBlob|createTree|createCommit|updateRef
|
|
175
|
-
grep: octokit\.|@octokit/
|
|
176
|
-
|
|
177
|
-
# Email
|
|
178
|
-
grep: sendMail|transporter\.send|sgMail\.send|resend\.send
|
|
179
|
-
|
|
180
|
-
# File storage
|
|
181
|
-
grep: s3\.upload|s3\.putObject|uploadToS3|writeFile.*storage
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
## Workflow Complexity Indicators
|
|
187
|
-
|
|
188
|
-
Patterns that suggest a route is a real workflow (not simple CRUD):
|
|
189
|
-
|
|
190
|
-
```
|
|
191
|
-
# Async dispatch (work happens later)
|
|
192
|
-
grep: startWorkflow\(|\.add\(.*queue|emit\(|publish\(
|
|
193
|
-
|
|
194
|
-
# Multi-step (sequential calls)
|
|
195
|
-
# Look for functions with 3+ await statements to different services
|
|
196
|
-
|
|
197
|
-
# Transaction blocks
|
|
198
|
-
grep: \$transaction|\$executeRaw|BEGIN.*COMMIT|withTransaction
|
|
199
|
-
|
|
200
|
-
# Polling/status endpoints
|
|
201
|
-
grep: /status\?|workflowId|jobId|runId
|
|
202
|
-
|
|
203
|
-
# Version/conflict checks
|
|
204
|
-
grep: version.*conflict|optimistic|stale|409
|
|
205
|
-
|
|
206
|
-
# Retry/backoff
|
|
207
|
-
grep: maximumAttempts|retry|backoff|exponential
|
|
208
|
-
|
|
209
|
-
# Child/sub workflows
|
|
210
|
-
grep: startChild\(|spawnChild|fork\(
|
|
211
|
-
|
|
212
|
-
# Feature flags / conditional steps
|
|
213
|
-
grep: featureFlag|isEnabled|canAccess
|
|
214
|
-
```
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|