@kontextmind/kxm 0.7.94 → 0.7.96

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 (140) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.kxm/README.md +39 -9
  3. package/CHANGELOG.md +1 -1
  4. package/README.md +147 -257
  5. package/SECURITY.md +21 -12
  6. package/docs/README.md +133 -54
  7. package/docs/adr/ADR-0002-browser-automation-steel-doks.md +24 -18
  8. package/docs/adr/ADR-0003-sqlite-only-store.md +100 -0
  9. package/docs/adr/ADR-0004-edge-identity-authentik.md +99 -0
  10. package/docs/adr/README.md +33 -0
  11. package/docs/concepts/architecture.md +262 -0
  12. package/docs/concepts/data-and-storage.md +194 -0
  13. package/docs/concepts/trust-model.md +152 -0
  14. package/docs/contracts/README.md +22 -14
  15. package/docs/contracts/effects-and-recovery.md +3 -0
  16. package/docs/contracts/migration.md +2 -2
  17. package/docs/contracts/routing.md +6 -5
  18. package/docs/contributing/assignment-runner.md +388 -0
  19. package/docs/contributing/ci-and-release.md +231 -0
  20. package/docs/contributing/development.md +362 -0
  21. package/docs/contributing/harness-routing-internals.md +192 -0
  22. package/docs/{packages.md → contributing/packages.md} +13 -15
  23. package/docs/{skills → contributing}/repo-work-delivery.md +20 -21
  24. package/docs/contributing/test-matrix.md +208 -0
  25. package/docs/{tui-components.md → contributing/tui-components.md} +30 -22
  26. package/docs/contributing/writing-docs.md +340 -0
  27. package/docs/glossary.md +471 -0
  28. package/docs/guides/agent-skills.md +137 -0
  29. package/docs/guides/browser-automation.md +160 -0
  30. package/docs/guides/context-and-memory.md +352 -0
  31. package/docs/guides/continuous-improvement.md +228 -0
  32. package/docs/guides/governed-skills.md +173 -0
  33. package/docs/guides/nous-providers.md +186 -0
  34. package/docs/guides/peer-messaging.md +304 -0
  35. package/docs/guides/pi-workers.md +219 -0
  36. package/docs/guides/provenance-gates.md +313 -0
  37. package/docs/guides/webhook-workflows.md +364 -0
  38. package/docs/kb/how-credentials-retrieved-safely.md +38 -12
  39. package/docs/kb/how-to-capture-and-annotate-section.md +15 -13
  40. package/docs/kb/how-to-connect-playwright-to-steel.md +16 -11
  41. package/docs/kb/how-to-recover-expired-session-or-orphan.md +26 -16
  42. package/docs/kb/how-to-resume-after-mfa.md +19 -11
  43. package/docs/kb/how-to-take-over-session.md +17 -13
  44. package/docs/kb/why-authentication-disappeared.md +22 -14
  45. package/docs/kb/why-automation-opened-different-browser.md +23 -14
  46. package/docs/kb/why-session-viewer-cannot-control.md +13 -12
  47. package/docs/operations/backup-and-restore.md +248 -0
  48. package/docs/operations/deploy.md +307 -0
  49. package/docs/operations/monitoring.md +209 -0
  50. package/docs/operations/runtime-sync.md +192 -0
  51. package/docs/operations/troubleshooting.md +265 -0
  52. package/docs/operations/upgrade.md +124 -0
  53. package/docs/prompts/browser-annotate-feedback.md +7 -7
  54. package/docs/prompts/browser-diagnose-recover.md +11 -10
  55. package/docs/prompts/browser-explore.md +7 -7
  56. package/docs/prompts/browser-repro-fix.md +7 -7
  57. package/docs/prompts/browser-start.md +12 -11
  58. package/docs/prompts/browser-takeover.md +8 -8
  59. package/docs/{cli-reference.md → reference/cli-reference.md} +83 -41
  60. package/docs/{config-reference.md → reference/config-reference.md} +159 -148
  61. package/docs/reference/configuration.md +299 -0
  62. package/docs/reference/harness-routing.md +508 -0
  63. package/docs/reference/http-api.md +203 -0
  64. package/docs/reference/tools.md +370 -0
  65. package/docs/{workflow-guide.md → reference/workflow-catalog.md} +92 -153
  66. package/docs/reference/workflow-definitions.md +286 -0
  67. package/docs/start/first-workflow.md +287 -0
  68. package/docs/start/install.md +146 -0
  69. package/docs/start/quickstart-claude-code.md +405 -0
  70. package/docs/start/quickstart-pi.md +213 -0
  71. package/docs/templates/README.md +78 -73
  72. package/docs/templates/adr.md +13 -13
  73. package/docs/templates/architecture.md +55 -71
  74. package/docs/templates/bug-fix.md +13 -16
  75. package/docs/templates/feature.md +14 -19
  76. package/docs/templates/handoff.md +44 -46
  77. package/docs/templates/postmortem.md +30 -43
  78. package/docs/templates/research.md +15 -20
  79. package/docs/templates/review.md +49 -50
  80. package/docs/templates/runbook.md +38 -30
  81. package/docs/templates/test-plan.md +16 -23
  82. package/docs/templates/test-report.md +14 -17
  83. package/examples/README.md +9 -5
  84. package/examples/provenance-workflow.json +1 -1
  85. package/examples/webhook-workflows/jira-development.json +59 -0
  86. package/examples/webhook-workflows/jira-issue-updated.json +12 -0
  87. package/package.json +2 -2
  88. package/packages/core/tui/README.md +1 -1
  89. package/plugins/kxm/.claude-plugin/plugin.json +1 -1
  90. package/plugins/kxm/README.md +31 -32
  91. package/plugins/kxm/dist/cli.js +5 -5
  92. package/plugins/kxm/dist/mcp-server.js +1 -1
  93. package/plugins/kxm/dist/runtime.js +1 -1
  94. package/plugins/kxm/package.json +1 -1
  95. package/plugins/kxm/skills/kxm/references/protocol.md +3 -1
  96. package/plugins/kxm/skills/kxm-browser-auth/SKILL.md +1 -1
  97. package/plugins/kxm/skills/kxm-browser-diagnostics/SKILL.md +5 -5
  98. package/plugins/kxm/skills/kxm-browser-explore/SKILL.md +2 -2
  99. package/plugins/kxm/skills/kxm-browser-session/SKILL.md +10 -13
  100. package/plugins/kxm/skills/kxm-browser-takeover/SKILL.md +1 -1
  101. package/plugins/kxm/skills/kxm-browser-verify/SKILL.md +1 -1
  102. package/plugins/kxm/skills/kxm-context-memory/SKILL.md +13 -4
  103. package/plugins/kxm/skills/kxm-hub-ops/SKILL.md +3 -1
  104. package/plugins/kxm/skills/kxm-mind-setup/SKILL.md +2 -1
  105. package/plugins/kxm/skills/kxm-project-setup/SKILL.md +31 -54
  106. package/plugins/kxm/skills/kxm-projects/SKILL.md +1 -1
  107. package/plugins/kxm/skills/kxm-protocol/SKILL.md +1 -1
  108. package/plugins/kxm/skills/kxm-routing-improve/SKILL.md +15 -7
  109. package/plugins/kxm/skills/kxm-runs/SKILL.md +11 -5
  110. package/plugins/kxm/skills/kxm-session/SKILL.md +1 -1
  111. package/plugins/kxm/skills/kxm-tasks/SKILL.md +9 -7
  112. package/plugins/kxm/skills/kxm-workflow/SKILL.md +10 -2
  113. package/plugins/kxm/src/cli/system.ts +1 -1
  114. package/plugins/kxm/src/cli.ts +3 -3
  115. package/plugins/kxm/src/init-guide-setup.ts +1 -1
  116. package/plugins/kxm/src/mcp-server.ts +1 -1
  117. package/plugins/kxm/src/modes.ts +1 -1
  118. package/schemas/README.md +1 -1
  119. package/docs/agent-communication-envelopes-and-gates.md +0 -553
  120. package/docs/agent-skills.md +0 -198
  121. package/docs/architecture.md +0 -245
  122. package/docs/assignment-runner.md +0 -264
  123. package/docs/browser-automation.md +0 -139
  124. package/docs/configuration.md +0 -437
  125. package/docs/continuous-improvement.md +0 -226
  126. package/docs/getting-started.md +0 -277
  127. package/docs/harness-routing.md +0 -616
  128. package/docs/kb/qa-authentik-authentication.md +0 -97
  129. package/docs/kb/qa-extension-install-and-hub-bootstrap.md +0 -85
  130. package/docs/kb/qa-hub-on-a-public-host.md +0 -48
  131. package/docs/kb/qa-sqlite-vs-duckdb.md +0 -35
  132. package/docs/kb/qa-what-the-hub-stores.md +0 -64
  133. package/docs/kxm-handbook.md +0 -1181
  134. package/docs/operations.md +0 -510
  135. package/docs/operator-pi-packages.md +0 -67
  136. package/docs/provenance-gates.md +0 -295
  137. package/docs/skills.md +0 -47
  138. package/docs/test-matrix.md +0 -132
  139. package/docs/troubleshooting.md +0 -293
  140. package/docs/webhook-workflows.md +0 -240
@@ -2,43 +2,44 @@
2
2
  schema: "kxm.doc.v1"
3
3
  id: "PROMPT-BROWSER-004"
4
4
  type: "prompt"
5
- title: "Diagnosing and Recovering a Failed Browser Session"
5
+ title: "Diagnose and recover a failed browser session"
6
6
  project: "kxm"
7
7
  status: "accepted"
8
8
  owner: "@operator"
9
9
  created: "2026-09-14"
10
- updated: "2026-09-15"
10
+ updated: "2026-09-23"
11
11
  authority: "instruction"
12
12
  confidence: "verified"
13
13
  summary: "Troubleshoot unresponsive Steel sessions, CDP attachment errors, auth loops, and orphaned browser containers."
14
14
  tags: ["browser", "diagnostics", "recovery", "prompt"]
15
- related: ["docs/browser-automation.md", "docs/kb/how-to-recover-expired-session-or-orphan.md"]
15
+ related: ["docs/guides/browser-automation.md", "docs/kb/how-to-recover-expired-session-or-orphan.md"]
16
16
  ---
17
17
 
18
- # Task Template: Diagnosing and Recovering a Failed Browser Session
18
+ # Task template: diagnose and recover a failed browser session
19
19
 
20
20
  ## Purpose
21
21
 
22
- Use this prompt to troubleshoot unresponsive sessions, CDP attachment errors, authentication loops, or orphaned browser containers on DOKS Steel infrastructure.
22
+ Use this prompt to troubleshoot unresponsive sessions, CDP attachment errors, authentication loops, or orphaned browser containers on your Steel deployment.
23
23
 
24
- ## Canonical Skill References
24
+ ## Canonical skill references
25
25
 
26
26
  - `kxm-browser-diagnostics`
27
27
  - `kxm-browser-session`
28
28
 
29
- ## Parameters & Placeholders
29
+ ## Parameters and placeholders
30
30
 
31
31
  - **PROJECT_ID**: `{{PROJECT_ID}}`
32
+ - **STEEL_API_URL**: `{{STEEL_API_URL}}` (your Steel API base URL, from `STEEL_API_URL`)
32
33
  - **SESSION_ID**: `{{SESSION_ID}}` (Optional, if specific session is failing)
33
34
  - **FAILURE_SYMPTOM**: `{{FAILURE_SYMPTOM}}` (e.g. `CDP_ATTACHMENT_FAILED` | `TIMEOUT_EXPIRED` | `AUTH_LOOP` | `ORPHAN_CLEANUP`)
34
35
  - **MAX_IDLE_MINUTES**: `{{MAX_IDLE_MINUTES}}` (Default: `10`)
35
36
 
36
37
  ---
37
38
 
38
- ## Instructions for Agent
39
+ ## Instructions for the agent
39
40
 
40
41
  1. **Check Steel Health**:
41
- - Query `https://steel.kontextmind.com/v1/health`.
42
+ - Query `{{STEEL_API_URL}}/v1/health`.
42
43
  - If HTTP 200, Steel server and Chromium engine are healthy.
43
44
 
44
45
  2. **Inspect Session Status**:
@@ -51,5 +52,5 @@ Use this prompt to troubleshoot unresponsive sessions, CDP attachment errors, au
51
52
  - For each orphan, invoke `POST /v1/sessions/:id/release`.
52
53
 
53
54
  4. **Verify WebSocket / CDP Ingress**:
54
- - Ensure WebSocket upgrades are properly proxied through `nginx.ingress.kubernetes.io/websocket-services: "steel"`.
55
+ - Ensure the reverse proxy or ingress in front of Steel passes WebSocket upgrades through. On Kubernetes with ingress-nginx, that is the `nginx.ingress.kubernetes.io/websocket-services` annotation.
55
56
  - If CDP fails with 401, verify `x-steel-api-key` header or `?apiKey=` query parameter.
@@ -2,32 +2,32 @@
2
2
  schema: "kxm.doc.v1"
3
3
  id: "PROMPT-BROWSER-002"
4
4
  type: "prompt"
5
- title: "Exploring an Application with an Authenticated Session"
5
+ title: "Explore an application with an authenticated session"
6
6
  project: "kxm"
7
7
  status: "accepted"
8
8
  owner: "@operator"
9
9
  created: "2026-09-14"
10
- updated: "2026-09-15"
10
+ updated: "2026-09-23"
11
11
  authority: "instruction"
12
12
  confidence: "verified"
13
13
  summary: "Exploratory discovery, DOM mapping, and journey inspection via agent-browser attached to a remote Steel session."
14
14
  tags: ["browser", "explore", "agent-browser", "prompt"]
15
- related: ["docs/browser-automation.md", "docs/kb/how-to-connect-playwright-to-steel.md"]
15
+ related: ["docs/guides/browser-automation.md", "docs/kb/how-to-connect-playwright-to-steel.md"]
16
16
  ---
17
17
 
18
- # Task Template: Exploring an Application with an Authenticated Session
18
+ # Task template: explore an application with an authenticated session
19
19
 
20
20
  ## Purpose
21
21
 
22
22
  Use this prompt to perform exploratory discovery, DOM mapping, flow analysis, or user-journey inspection using `agent-browser` connected to a remote Steel session.
23
23
 
24
- ## Canonical Skill References
24
+ ## Canonical skill references
25
25
 
26
26
  - `kxm-browser-explore`
27
27
  - `kxm-browser-session`
28
28
  - `kxm-browser-takeover`
29
29
 
30
- ## Parameters & Placeholders
30
+ ## Parameters and placeholders
31
31
 
32
32
  - **PROJECT_ID**: `{{PROJECT_ID}}`
33
33
  - **TASK_ID**: `{{TASK_ID}}`
@@ -39,7 +39,7 @@ Use this prompt to perform exploratory discovery, DOM mapping, flow analysis, or
39
39
 
40
40
  ---
41
41
 
42
- ## Instructions for Agent
42
+ ## Instructions for the agent
43
43
 
44
44
  1. **Attach to Active Session**:
45
45
  - Verify `sessionId` and connect `agent-browser` via the remote CDP endpoint.
@@ -2,32 +2,32 @@
2
2
  schema: "kxm.doc.v1"
3
3
  id: "PROMPT-BROWSER-005"
4
4
  type: "prompt"
5
- title: "Reproducing a UI Bug and Producing a Playwright Regression Test"
5
+ title: "Reproduce a UI bug and produce a Playwright regression test"
6
6
  project: "kxm"
7
7
  status: "accepted"
8
8
  owner: "@operator"
9
9
  created: "2026-09-14"
10
- updated: "2026-09-15"
10
+ updated: "2026-09-23"
11
11
  authority: "instruction"
12
12
  confidence: "verified"
13
13
  summary: "Reproduce a UI defect on Steel, collect evidence, write a Playwright regression, and prove RED then GREEN."
14
14
  tags: ["browser", "playwright", "repro", "prompt"]
15
- related: ["docs/browser-automation.md", "docs/kb/how-to-connect-playwright-to-steel.md"]
15
+ related: ["docs/guides/browser-automation.md", "docs/kb/how-to-connect-playwright-to-steel.md"]
16
16
  ---
17
17
 
18
- # Task Template: Reproducing a UI Bug and Producing a Playwright Regression Test
18
+ # Task template: reproduce a UI bug and produce a Playwright regression test
19
19
 
20
20
  ## Purpose
21
21
 
22
22
  Use this prompt to execute the full UI defect lifecycle: reproducing reported symptoms on self-hosted Steel, collecting diagnostic evidence, writing a durable Playwright test, demonstrating failure before fix (RED), applying the code fix, and demonstrating success afterward (GREEN).
23
23
 
24
- ## Canonical Skill References
24
+ ## Canonical skill references
25
25
 
26
26
  - `kxm-browser-verify`
27
27
  - `kxm-browser-session`
28
28
  - `kxm-browser-diagnostics`
29
29
 
30
- ## Parameters & Placeholders
30
+ ## Parameters and placeholders
31
31
 
32
32
  - **PROJECT_ID**: `{{PROJECT_ID}}`
33
33
  - **BUG_ID**: `{{BUG_ID}}` (e.g. `BUG-402-DROPDOWN-CLIPPING`)
@@ -39,7 +39,7 @@ Use this prompt to execute the full UI defect lifecycle: reproducing reported sy
39
39
 
40
40
  ---
41
41
 
42
- ## Instructions for Agent
42
+ ## Instructions for the agent
43
43
 
44
44
  1. **Step 1: Reproduce**:
45
45
  - Connect to a Steel browser session and manually or scriptedly walk the repro steps.
@@ -2,50 +2,51 @@
2
2
  schema: "kxm.doc.v1"
3
3
  id: "PROMPT-BROWSER-001"
4
4
  type: "prompt"
5
- title: "Starting Browser Work in a KXM Project"
5
+ title: "Start browser work in a KXM project"
6
6
  project: "kxm"
7
7
  status: "accepted"
8
8
  owner: "@operator"
9
9
  created: "2026-09-14"
10
- updated: "2026-09-15"
10
+ updated: "2026-09-23"
11
11
  authority: "instruction"
12
12
  confidence: "verified"
13
13
  summary: "Initialize a remote Steel browser session for a project task, verifying credentials, connectivity, and attachment endpoints before automation."
14
14
  tags: ["browser", "steel", "session", "prompt"]
15
- related: ["docs/browser-automation.md", "docs/kb/how-credentials-retrieved-safely.md"]
15
+ related: ["docs/guides/browser-automation.md", "docs/kb/how-credentials-retrieved-safely.md"]
16
16
  ---
17
17
 
18
- # Task Template: Starting Browser Work in a KXM Project
18
+ # Task template: start browser work in a KXM project
19
19
 
20
20
  ## Purpose
21
21
 
22
22
  Use this prompt to initialize a remote browser session on self-hosted Steel for a specific project task, verifying infrastructure connectivity, credentials, and attachment endpoints before executing automation.
23
23
 
24
- ## Canonical Skill References
24
+ ## Canonical skill references
25
25
 
26
26
  - `kxm-browser-session`
27
27
  - `kxm-browser-auth`
28
28
 
29
- ## Parameters & Placeholders
29
+ ## Parameters and placeholders
30
30
 
31
- - **PROJECT_ID**: `{{PROJECT_ID}}` (e.g. `kxm`, `agentic-hub`, `southlake-technical`)
31
+ - **PROJECT_ID**: `{{PROJECT_ID}}` (e.g. `my-app`)
32
+ - **STEEL_API_URL**: `{{STEEL_API_URL}}` (your Steel API base URL, from `STEEL_API_URL`)
32
33
  - **TASK_ID**: `{{TASK_ID}}` (e.g. `TASK-104-AUTH-VERIFY`)
33
34
  - **TARGET_BASE_URL**: `{{TARGET_BASE_URL}}` (e.g. `https://staging.app.example.com`)
34
35
  - **PERMISSION_LEVEL**: `{{PERMISSION_LEVEL}}` (Choose one: `INSPECT_ONLY` | `MUTATE_APPROVED_FORMS` | `FULL_ADMIN`)
35
- - **CREDENTIAL_REF**: `{{CREDENTIAL_REF}}` (Proton Pass vault and item title, e.g. `Personal -> staging.example.com`)
36
+ - **CREDENTIAL_REF**: `{{CREDENTIAL_REF}}` (a secret manager reference, never a value, e.g. `<vault> -> <item>`)
36
37
  - **ARTIFACT_DIR**: `{{ARTIFACT_DIR}}` (e.g. `.kxm/artifacts/browser/{{TASK_ID}}`)
37
38
  - **TIMEOUT_MS**: `{{TIMEOUT_MS}}` (Default: `300000`)
38
39
 
39
40
  ---
40
41
 
41
- ## Instructions for Agent
42
+ ## Instructions for the agent
42
43
 
43
44
  1. **Verify Credential Reference**:
44
- - Query `pass-cli` for target credentials and `STEEL_API_KEY` without logging raw values.
45
+ - Resolve the target credentials and `STEEL_API_KEY` from the secret manager, for example with `pass-cli`, without logging raw values.
45
46
  - Do not print credentials to the chat or save them to tracked files.
46
47
 
47
48
  2. **Launch Remote Steel Session**:
48
- - Create a session on `https://steel.kontextmind.com/v1/sessions` with timeout `{{TIMEOUT_MS}}`.
49
+ - Create a session with `POST {{STEEL_API_URL}}/v1/sessions` and timeout `{{TIMEOUT_MS}}`.
49
50
  - Capture `sessionId`, `websocketUrl`, and `sessionViewerUrl`.
50
51
 
51
52
  3. **Verify Target Endpoint Connectivity**:
@@ -2,32 +2,32 @@
2
2
  schema: "kxm.doc.v1"
3
3
  id: "PROMPT-BROWSER-003"
4
4
  type: "prompt"
5
- title: "Requesting Human Authentication and Resuming Afterward"
5
+ title: "Request human authentication and resume afterward"
6
6
  project: "kxm"
7
7
  status: "accepted"
8
8
  owner: "@operator"
9
9
  created: "2026-09-14"
10
- updated: "2026-09-15"
10
+ updated: "2026-09-23"
11
11
  authority: "instruction"
12
12
  confidence: "verified"
13
13
  summary: "Pause automation for MFA, OAuth, or CAPTCHA takeover, then resume after verified human success."
14
14
  tags: ["browser", "takeover", "mfa", "prompt"]
15
- related: ["docs/browser-automation.md", "docs/kb/how-to-take-over-session.md", "docs/kb/how-to-resume-after-mfa.md"]
15
+ related: ["docs/guides/browser-automation.md", "docs/kb/how-to-take-over-session.md", "docs/kb/how-to-resume-after-mfa.md"]
16
16
  ---
17
17
 
18
- # Task Template: Requesting Human Authentication and Resuming Afterward
18
+ # Task template: request human authentication and resume afterward
19
19
 
20
20
  ## Purpose
21
21
 
22
22
  Use this prompt to pause automation and request operator intervention for multi-factor authentication (MFA), OAuth consent, credential challenges, or CAPTCHAs, then safely resume automation after verified success.
23
23
 
24
- ## Canonical Skill References
24
+ ## Canonical skill references
25
25
 
26
26
  - `kxm-browser-takeover`
27
27
  - `kxm-browser-session`
28
28
  - `kxm-browser-auth`
29
29
 
30
- ## Parameters & Placeholders
30
+ ## Parameters and placeholders
31
31
 
32
32
  - **PROJECT_ID**: `{{PROJECT_ID}}`
33
33
  - **TASK_ID**: `{{TASK_ID}}`
@@ -35,11 +35,11 @@ Use this prompt to pause automation and request operator intervention for multi-
35
35
  - **REASON_FOR_TAKEOVER**: `{{REASON_FOR_TAKEOVER}}` (e.g. "SMS / TOTP MFA challenge detected on login form")
36
36
  - **EXPECTED_POST_AUTH_URL**: `{{EXPECTED_POST_AUTH_URL}}` (e.g. `https://app.example.com/dashboard`)
37
37
  - **EXPECTED_INDICATOR**: `{{EXPECTED_INDICATOR}}` (e.g. "Header user avatar or dashboard navigation visible")
38
- - **TAKEOVER_URL**: `https://steel.kontextmind.com/ui?sessionId={{SESSION_ID}}`
38
+ - **TAKEOVER_URL**: `{{STEEL_UI_URL}}?sessionId={{SESSION_ID}}` (`STEEL_UI_URL`, or `{{STEEL_API_URL}}/ui` when that is unset)
39
39
 
40
40
  ---
41
41
 
42
- ## Instructions for Agent
42
+ ## Instructions for the agent
43
43
 
44
44
  1. **Halt Automated Actions Immediately**:
45
45
  - Stop issuing automated clicks, keystrokes, or page reloads.