screenhand 0.2.0 → 0.3.1

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 (212) hide show
  1. package/README.md +165 -446
  2. package/bin/darwin-arm64/macos-bridge +0 -0
  3. package/dist/mcp-desktop.js +3615 -400
  4. package/dist/scripts/export-help-center.js +112 -0
  5. package/dist/scripts/marketing-loop.js +117 -0
  6. package/dist/scripts/observer-daemon.js +288 -0
  7. package/dist/scripts/orchestrator-daemon.js +399 -0
  8. package/dist/scripts/threads-campaign.js +208 -0
  9. package/dist/src/community/fetcher.js +109 -0
  10. package/dist/src/community/index.js +6 -0
  11. package/dist/src/community/publisher.js +191 -0
  12. package/dist/src/community/remote-api.js +121 -0
  13. package/dist/src/community/types.js +3 -0
  14. package/dist/src/community/validator.js +95 -0
  15. package/dist/src/context-tracker.js +489 -0
  16. package/dist/src/ingestion/coverage-auditor.js +233 -0
  17. package/dist/src/ingestion/doc-parser.js +164 -0
  18. package/dist/src/ingestion/index.js +8 -0
  19. package/dist/src/ingestion/menu-scanner.js +152 -0
  20. package/dist/src/ingestion/reference-merger.js +186 -0
  21. package/dist/src/ingestion/shortcut-extractor.js +180 -0
  22. package/dist/src/ingestion/tutorial-extractor.js +170 -0
  23. package/dist/src/ingestion/types.js +3 -0
  24. package/dist/src/jobs/manager.js +82 -14
  25. package/dist/src/jobs/runner.js +138 -15
  26. package/dist/src/learning/engine.js +356 -0
  27. package/dist/src/learning/index.js +9 -0
  28. package/dist/src/learning/locator-policy.js +120 -0
  29. package/dist/src/learning/pattern-policy.js +89 -0
  30. package/dist/src/learning/recovery-policy.js +116 -0
  31. package/dist/src/learning/sensor-policy.js +115 -0
  32. package/dist/src/learning/timing-model.js +204 -0
  33. package/dist/src/learning/topology-policy.js +90 -0
  34. package/dist/src/learning/types.js +9 -0
  35. package/dist/src/logging/timeline-logger.js +4 -1
  36. package/dist/src/memory/playbook-seeds.js +200 -0
  37. package/dist/src/memory/recall.js +60 -8
  38. package/dist/src/memory/service.js +30 -5
  39. package/dist/src/memory/store.js +34 -5
  40. package/dist/src/native/bridge-client.js +253 -31
  41. package/dist/src/observer/state.js +199 -0
  42. package/dist/src/observer/types.js +43 -0
  43. package/dist/src/orchestrator/state.js +68 -0
  44. package/dist/src/orchestrator/types.js +22 -0
  45. package/dist/src/perception/ax-source.js +162 -0
  46. package/dist/src/perception/cdp-source.js +162 -0
  47. package/dist/src/perception/coordinator.js +771 -0
  48. package/dist/src/perception/frame-differ.js +287 -0
  49. package/dist/src/perception/index.js +22 -0
  50. package/dist/src/perception/manager.js +199 -0
  51. package/dist/src/perception/types.js +47 -0
  52. package/dist/src/perception/vision-source.js +399 -0
  53. package/dist/src/planner/deterministic.js +298 -0
  54. package/dist/src/planner/executor.js +870 -0
  55. package/dist/src/planner/goal-store.js +92 -0
  56. package/dist/src/planner/index.js +21 -0
  57. package/dist/src/planner/planner.js +520 -0
  58. package/dist/src/planner/tool-registry.js +71 -0
  59. package/dist/src/planner/types.js +22 -0
  60. package/dist/src/platform/explorer.js +213 -0
  61. package/dist/src/platform/help-center-markdown.js +527 -0
  62. package/dist/src/platform/learner.js +257 -0
  63. package/dist/src/playbook/engine.js +296 -11
  64. package/dist/src/playbook/mcp-recorder.js +204 -0
  65. package/dist/src/playbook/recorder.js +3 -2
  66. package/dist/src/playbook/runner.js +1 -1
  67. package/dist/src/playbook/store.js +139 -10
  68. package/dist/src/recovery/detectors.js +156 -0
  69. package/dist/src/recovery/engine.js +327 -0
  70. package/dist/src/recovery/index.js +20 -0
  71. package/dist/src/recovery/strategies.js +274 -0
  72. package/dist/src/recovery/types.js +20 -0
  73. package/dist/src/runtime/accessibility-adapter.js +55 -18
  74. package/dist/src/runtime/applescript-adapter.js +8 -2
  75. package/dist/src/runtime/cdp-chrome-adapter.js +1 -1
  76. package/dist/src/runtime/executor.js +23 -3
  77. package/dist/src/runtime/locator-cache.js +24 -2
  78. package/dist/src/runtime/service.js +59 -15
  79. package/dist/src/runtime/session-manager.js +4 -1
  80. package/dist/src/runtime/vision-adapter.js +2 -1
  81. package/dist/src/state/app-map-types.js +72 -0
  82. package/dist/src/state/app-map.js +1974 -0
  83. package/dist/src/state/entity-tracker.js +108 -0
  84. package/dist/src/state/fusion.js +96 -0
  85. package/dist/src/state/index.js +21 -0
  86. package/dist/src/state/ladder-generator.js +236 -0
  87. package/dist/src/state/persistence.js +156 -0
  88. package/dist/src/state/types.js +17 -0
  89. package/dist/src/state/world-model.js +1456 -0
  90. package/dist/src/util/atomic-write.js +19 -4
  91. package/dist/src/util/sanitize.js +146 -0
  92. package/dist-app-maps/com.figma.Desktop.json +959 -0
  93. package/dist-app-maps/com.hnc.Discord.json +1146 -0
  94. package/dist-app-maps/notion.id.json +2831 -0
  95. package/dist-playbooks/canva-screenhand-carousel.json +445 -0
  96. package/dist-playbooks/codex-desktop.json +76 -0
  97. package/dist-playbooks/competitor-research-stack.json +122 -0
  98. package/dist-playbooks/davinci-color-grade.json +153 -0
  99. package/dist-playbooks/davinci-edit-timeline.json +162 -0
  100. package/dist-playbooks/davinci-render.json +114 -0
  101. package/dist-playbooks/devto.json +52 -0
  102. package/dist-playbooks/discord.json +41 -0
  103. package/dist-playbooks/google-flow-create-project.json +59 -0
  104. package/dist-playbooks/google-flow-edit-image.json +90 -0
  105. package/dist-playbooks/google-flow-edit-video.json +90 -0
  106. package/dist-playbooks/google-flow-generate-image.json +68 -0
  107. package/dist-playbooks/google-flow-generate-video.json +191 -0
  108. package/dist-playbooks/google-flow-open-project.json +48 -0
  109. package/dist-playbooks/google-flow-open-scenebuilder.json +64 -0
  110. package/dist-playbooks/google-flow-search-assets.json +64 -0
  111. package/dist-playbooks/instagram.json +57 -0
  112. package/dist-playbooks/linkedin.json +52 -0
  113. package/dist-playbooks/n8n.json +43 -0
  114. package/dist-playbooks/reddit.json +52 -0
  115. package/dist-playbooks/threads.json +59 -0
  116. package/dist-playbooks/x-twitter.json +59 -0
  117. package/dist-playbooks/youtube.json +59 -0
  118. package/dist-references/canva.json +646 -0
  119. package/dist-references/codex-desktop.json +305 -0
  120. package/dist-references/davinci-resolve-keyboard.json +594 -0
  121. package/dist-references/davinci-resolve-menu-map.json +1139 -0
  122. package/dist-references/davinci-resolve-menus-batch1.json +116 -0
  123. package/dist-references/davinci-resolve-menus-batch2.json +372 -0
  124. package/dist-references/davinci-resolve-menus-batch3.json +330 -0
  125. package/dist-references/davinci-resolve-menus-batch4.json +297 -0
  126. package/dist-references/davinci-resolve-shortcuts.json +333 -0
  127. package/dist-references/devpost.json +186 -0
  128. package/dist-references/devto.json +317 -0
  129. package/dist-references/discord.json +549 -0
  130. package/dist-references/figma.json +1186 -0
  131. package/dist-references/finder.json +146 -0
  132. package/dist-references/google-ads-transparency.json +95 -0
  133. package/dist-references/google-flow.json +649 -0
  134. package/dist-references/instagram.json +341 -0
  135. package/dist-references/linkedin.json +324 -0
  136. package/dist-references/meta-ad-library.json +86 -0
  137. package/dist-references/n8n.json +387 -0
  138. package/dist-references/notes.json +27 -0
  139. package/dist-references/notion.json +163 -0
  140. package/dist-references/reddit.json +341 -0
  141. package/dist-references/threads.json +337 -0
  142. package/dist-references/x-twitter.json +403 -0
  143. package/dist-references/youtube.json +373 -0
  144. package/native/macos-bridge/Package.swift +22 -0
  145. package/native/macos-bridge/Sources/AccessibilityBridge.swift +482 -0
  146. package/native/macos-bridge/Sources/AppManagement.swift +339 -0
  147. package/native/macos-bridge/Sources/CoreGraphicsBridge.swift +537 -0
  148. package/native/macos-bridge/Sources/ObserverBridge.swift +120 -0
  149. package/native/macos-bridge/Sources/StreamCapture.swift +136 -0
  150. package/native/macos-bridge/Sources/VisionBridge.swift +238 -0
  151. package/native/macos-bridge/Sources/main.swift +498 -0
  152. package/native/windows-bridge/AppManagement.cs +234 -0
  153. package/native/windows-bridge/InputBridge.cs +436 -0
  154. package/native/windows-bridge/Program.cs +270 -0
  155. package/native/windows-bridge/ScreenCapture.cs +453 -0
  156. package/native/windows-bridge/UIAutomationBridge.cs +571 -0
  157. package/native/windows-bridge/WindowsBridge.csproj +17 -0
  158. package/package.json +12 -1
  159. package/scripts/postinstall.cjs +127 -0
  160. package/dist/.audit-log.jsonl +0 -55
  161. package/dist/.screenhand/memory/.lock +0 -1
  162. package/dist/.screenhand/memory/actions.jsonl +0 -85
  163. package/dist/.screenhand/memory/errors.jsonl +0 -5
  164. package/dist/.screenhand/memory/errors.jsonl.bak +0 -4
  165. package/dist/.screenhand/memory/state.json +0 -35
  166. package/dist/.screenhand/memory/state.json.bak +0 -35
  167. package/dist/.screenhand/memory/strategies.jsonl +0 -12
  168. package/dist/agent/cli.js +0 -73
  169. package/dist/agent/loop.js +0 -258
  170. package/dist/config.js +0 -9
  171. package/dist/index.js +0 -56
  172. package/dist/logging/timeline-logger.js +0 -29
  173. package/dist/mcp/mcp-stdio-server.js +0 -448
  174. package/dist/mcp/server.js +0 -347
  175. package/dist/mcp-entry.js +0 -59
  176. package/dist/memory/recall.js +0 -160
  177. package/dist/memory/research.js +0 -98
  178. package/dist/memory/seeds.js +0 -89
  179. package/dist/memory/session.js +0 -161
  180. package/dist/memory/store.js +0 -391
  181. package/dist/memory/types.js +0 -4
  182. package/dist/monitor/codex-monitor.js +0 -377
  183. package/dist/monitor/task-queue.js +0 -84
  184. package/dist/monitor/types.js +0 -49
  185. package/dist/native/bridge-client.js +0 -174
  186. package/dist/native/macos-bridge-client.js +0 -5
  187. package/dist/npm-publish-helper.js +0 -117
  188. package/dist/npm-token-cdp.js +0 -113
  189. package/dist/npm-token-create.js +0 -135
  190. package/dist/npm-token-finish.js +0 -126
  191. package/dist/playbook/engine.js +0 -193
  192. package/dist/playbook/index.js +0 -4
  193. package/dist/playbook/recorder.js +0 -519
  194. package/dist/playbook/runner.js +0 -392
  195. package/dist/playbook/store.js +0 -166
  196. package/dist/playbook/types.js +0 -4
  197. package/dist/runtime/accessibility-adapter.js +0 -377
  198. package/dist/runtime/app-adapter.js +0 -48
  199. package/dist/runtime/applescript-adapter.js +0 -283
  200. package/dist/runtime/ax-role-map.js +0 -80
  201. package/dist/runtime/browser-adapter.js +0 -36
  202. package/dist/runtime/cdp-chrome-adapter.js +0 -505
  203. package/dist/runtime/composite-adapter.js +0 -205
  204. package/dist/runtime/executor.js +0 -250
  205. package/dist/runtime/locator-cache.js +0 -12
  206. package/dist/runtime/planning-loop.js +0 -47
  207. package/dist/runtime/service.js +0 -372
  208. package/dist/runtime/session-manager.js +0 -28
  209. package/dist/runtime/state-observer.js +0 -105
  210. package/dist/runtime/vision-adapter.js +0 -208
  211. package/dist/test-mcp-protocol.js +0 -138
  212. package/dist/types.js +0 -1
@@ -0,0 +1,333 @@
1
+ {
2
+ "global": {
3
+ "DaVinci Resolve/Hide DaVinci Resolve": "Cmd+H",
4
+ "DaVinci Resolve/Hide Others": "Cmd+Alt+H",
5
+ "DaVinci Resolve/Keyboard Customization…": "Cmd+Alt+K",
6
+ "DaVinci Resolve/Preferences…": "Cmd+,",
7
+ "DaVinci Resolve/Quit DaVinci Resolve": "Cmd+Q",
8
+ "File/Create Timeline Backup…": "Cmd+Alt+S",
9
+ "File/Export Project…": "Cmd+E",
10
+ "File/Export/Timeline…": "Cmd+Shift+O",
11
+ "File/Import/Media…": "Cmd+I",
12
+ "File/Import/Timeline…": "Cmd+Shift+I",
13
+ "File/New Bin": "Cmd+Shift+N",
14
+ "File/New Timeline…": "Cmd+N",
15
+ "File/Project Manager…": "Shift+1",
16
+ "File/Project Settings…": "Shift+9",
17
+ "File/Save Project": "Cmd+S",
18
+ "File/Save Project As…": "Cmd+Shift+S",
19
+ "Workspace/Active Panel Selection/Effects": "Cmd+6",
20
+ "Workspace/Active Panel Selection/Index": "Cmd+7",
21
+ "Workspace/Active Panel Selection/Inspector": "Cmd+9",
22
+ "Workspace/Active Panel Selection/Media Clips": "Cmd+2",
23
+ "Workspace/Active Panel Selection/Media Folders": "Cmd+1",
24
+ "Workspace/Active Panel Selection/Source Viewer": "Cmd+3",
25
+ "Workspace/Active Panel Selection/Timeline": "Cmd+4",
26
+ "Workspace/Active Panel Selection/Timeline Viewer": "Cmd+5",
27
+ "Workspace/Switch to Page/Color": "Shift+6",
28
+ "Workspace/Switch to Page/Cut": "Shift+3",
29
+ "Workspace/Switch to Page/Deliver": "Shift+8",
30
+ "Workspace/Switch to Page/Edit": "Shift+4",
31
+ "Workspace/Switch to Page/Fairlight": "Shift+7",
32
+ "Workspace/Switch to Page/Fusion": "Shift+5",
33
+ "Workspace/Switch to Page/Media": "Shift+2",
34
+ "Workspace/Video Scopes/On": "Cmd+Shift+W",
35
+ "Workspace/Viewer Mode/Cinema Viewer": "Cmd+F",
36
+ "Workspace/Viewer Mode/Enhanced Viewer": "Alt+F",
37
+ "Workspace/Viewer Mode/Full Page Viewer": "Shift+F"
38
+ },
39
+ "edit_page": {
40
+ "Edit/Append to End of Timeline": "Shift+F12",
41
+ "Edit/Copy": "Cmd+C",
42
+ "Edit/Cut": "Cmd+X",
43
+ "Edit/Delete Selected": "Delete",
44
+ "Edit/Deselect All": "Cmd+Shift+A",
45
+ "Edit/Edit Options/Switch to Timeline After Edit": "Shift+Alt+Q",
46
+ "Edit/Fit to Fill": "Shift+F11",
47
+ "Edit/Insert": "F9",
48
+ "Edit/Multicam/Audio Only": "Shift+Alt+\\",
49
+ "Edit/Multicam/Next Angle": "Cmd+Shift+Right",
50
+ "Edit/Multicam/Next Page": "Shift+Alt+Right",
51
+ "Edit/Multicam/Previous Angle": "Cmd+Shift+Left",
52
+ "Edit/Multicam/Previous Page": "Shift+Alt+Left",
53
+ "Edit/Multicam/Video and Audio": "Shift+Alt+[",
54
+ "Edit/Multicam/Video Only": "Shift+Alt+]",
55
+ "Edit/Overwrite": "F10",
56
+ "Edit/Paste": "Cmd+V",
57
+ "Edit/Paste Attributes…": "Alt+V",
58
+ "Edit/Paste Insert": "Cmd+Shift+V",
59
+ "Edit/Paste Value": "Shift+Alt+V",
60
+ "Edit/Place on Top": "F12",
61
+ "Edit/Redo": "Cmd+Shift+Z",
62
+ "Edit/Replace": "F11",
63
+ "Edit/Ripple Cut": "Cmd+Shift+X",
64
+ "Edit/Ripple Delete": "Shift+Delete",
65
+ "Edit/Ripple Overwrite": "Shift+F10",
66
+ "Edit/Select All": "Cmd+A",
67
+ "Edit/Select/Above": "Cmd+Up",
68
+ "Edit/Select/Below": "Cmd+Down",
69
+ "Edit/Select/Next": "Cmd+Right",
70
+ "Edit/Select/Previous": "Cmd+Left",
71
+ "Edit/Swap Clips Towards Left": "Cmd+Shift+,",
72
+ "Edit/Swap Clips Towards Right": "Cmd+Shift+.",
73
+ "Edit/Undo": "Cmd+Z",
74
+ "Mark/Add and Modify Marker…": "Cmd+M",
75
+ "Mark/Add Flag/Current Selected": "G",
76
+ "Mark/Add Keyframe": "Cmd+[",
77
+ "Mark/Add Marker/Current Selected": "M",
78
+ "Mark/Add Static Keyframe": "Cmd+]",
79
+ "Mark/Clear Audio In and Out": "Cmd+Alt+X",
80
+ "Mark/Clear In": "Alt+I",
81
+ "Mark/Clear In and Out": "Alt+X",
82
+ "Mark/Clear Out": "Alt+O",
83
+ "Mark/Clear Video In and Out": "Shift+Alt+X",
84
+ "Mark/Create Subclip": "Alt+B",
85
+ "Mark/Delete Keyframe": "Alt+]",
86
+ "Mark/Delete Marker": "Alt+M",
87
+ "Mark/Favorite Keywords/Clear Keywords": "Shift+Alt+0",
88
+ "Mark/Favorite Keywords/Unassigned": "Shift+Alt+1",
89
+ "Mark/Mark Audio In": "Cmd+Alt+I",
90
+ "Mark/Mark Audio Out": "Cmd+Alt+O",
91
+ "Mark/Mark Clip": "X",
92
+ "Mark/Mark In": "I",
93
+ "Mark/Mark Out": "O",
94
+ "Mark/Mark Selection": "Shift+A",
95
+ "Mark/Mark Video In": "Shift+Alt+I",
96
+ "Mark/Mark Video Out": "Shift+Alt+O",
97
+ "Mark/Modify Marker…": "Shift+M",
98
+ "Playback/Cintel Scanner/Slip Film Forward": "Cmd+Right",
99
+ "Playback/Cintel Scanner/Slip Film Reverse": "Cmd+Left",
100
+ "Playback/Cintel Scanner/Step One Perforation Forward": "Cmd+L",
101
+ "Playback/Cintel Scanner/Step One Perforation Reverse": "Cmd+J",
102
+ "Playback/Fast Forward": "Shift+L",
103
+ "Playback/Fast Reverse": "Shift+J",
104
+ "Playback/Go To/First Frame": ";",
105
+ "Playback/Go To/In": "Shift+I",
106
+ "Playback/Go To/Last Frame": "'",
107
+ "Playback/Go To/Mouse Pointer": "C",
108
+ "Playback/Go To/Out": "Shift+O",
109
+ "Playback/Go To/Timecode": "=",
110
+ "Playback/Go To/Timeline End": "End",
111
+ "Playback/Go To/Timeline Start": "Home",
112
+ "Playback/Jump Left": "Cmd+Alt+Left",
113
+ "Playback/Jump Right": "Cmd+Alt+Right",
114
+ "Playback/Loop/Unloop": "Cmd+/",
115
+ "Playback/Next/Clip": "Down",
116
+ "Playback/Next/Gap": "Cmd+Alt+'",
117
+ "Playback/Next/Keyframe": "]",
118
+ "Playback/Next/Marker": "Shift+Down",
119
+ "Playback/Pause/Start Playback": "Space",
120
+ "Playback/Play Again": "Alt+L",
121
+ "Playback/Play Around/To/Play Around Current Clip": "Shift+/",
122
+ "Playback/Play Around/To/Play Around Current Selection": "/",
123
+ "Playback/Play Around/To/Play In to Out": "Alt+/",
124
+ "Playback/Play Around/To/Play to Out": "Cmd+Alt+/",
125
+ "Playback/Play Forward": "L",
126
+ "Playback/Play Reverse": "J",
127
+ "Playback/Play Slow": "Shift+K",
128
+ "Playback/Previous/Clip": "Up",
129
+ "Playback/Previous/Gap": "Cmd+Alt+;",
130
+ "Playback/Previous/Keyframe": "[",
131
+ "Playback/Previous/Marker": "Shift+Up",
132
+ "Playback/Step One/Frame Forward": "Right",
133
+ "Playback/Step One/Frame Reverse": "Left",
134
+ "Playback/Step One/Second Forward": "Shift+Right",
135
+ "Playback/Step One/Second Reverse": "Shift+Left",
136
+ "Playback/Stop": "K",
137
+ "Playback/Timecode/Decrement Timecode": "-",
138
+ "Playback/Timecode/Increment Timecode": "+",
139
+ "Timeline/Add Transition": "Cmd+T",
140
+ "Timeline/Snapping": "N",
141
+ "Trim/Blade Edit Mode": "B",
142
+ "Trim/Normal Edit Mode": "A",
143
+ "Trim/Trim Mode": "T",
144
+ "View/Bypass Color and Fusion/Bypass All Grades": "Shift+D",
145
+ "View/Source Clip/Source Tape": "Shift+Q",
146
+ "View/Source/Timeline Viewer": "Q",
147
+ "View/Toggle Source Timeline": "Alt+Q",
148
+ "View/Viewer Overlay/Toggle On/Off": "Shift+`",
149
+ "View/Zoom/Zoom In": "Cmd+=",
150
+ "View/Zoom/Zoom Out": "Cmd+-",
151
+ "View/Zoom/Zoom to Fit": "Shift+Z",
152
+ "Workspace/Switch to Page/Edit": "Shift+4",
153
+ "Edit/Select Nearest Edit Point": "V",
154
+ "Edit/Select Nearest Video Edit Point": "Alt+E",
155
+ "Edit/Select Nearest Audio Edit Point": "Shift+E",
156
+ "Edit/Toggle Selected Edit Half": "U",
157
+ "Edit/Toggle Selected Edit A/V Scope": "Alt+U",
158
+ "Playback/Play Around/To/Play Around Out": "Shift+Space"
159
+ },
160
+ "color_page": {
161
+ "Color/Apply Grade from One Clip Prior": "Shift+=",
162
+ "Color/Apply Grade from Two Clips Prior": "Shift+-",
163
+ "Color/Auto Color": "Shift+Alt+C",
164
+ "Color/Full Printer Light/Blue -": "6",
165
+ "Color/Full Printer Light/Blue +": "9",
166
+ "Color/Full Printer Light/Cyan -": "-",
167
+ "Color/Full Printer Light/Cyan +": "1",
168
+ "Color/Full Printer Light/Green -": "5",
169
+ "Color/Full Printer Light/Green +": "8",
170
+ "Color/Full Printer Light/Magenta -": "0",
171
+ "Color/Full Printer Light/Magenta +": "2",
172
+ "Color/Full Printer Light/Master -": "Enter",
173
+ "Color/Full Printer Light/Master +": "+",
174
+ "Color/Full Printer Light/Red -": "4",
175
+ "Color/Full Printer Light/Red +": "7",
176
+ "Color/Full Printer Light/Yellow -": ".",
177
+ "Color/Full Printer Light/Yellow +": "3",
178
+ "Color/Grade Version/Add": "Cmd+Y",
179
+ "Color/Grade Version/Default": "Cmd+U",
180
+ "Color/Grade Version/Next": "Cmd+N",
181
+ "Color/Grade Version/Previous": "Cmd+B",
182
+ "Color/Memories/Save Memory A": "Alt+1",
183
+ "Color/Memories/Save Memory B": "Alt+2",
184
+ "Color/Memories/Save Memory C": "Alt+3",
185
+ "Color/Memories/Save Memory D": "Alt+4",
186
+ "Color/Memories/Save Memory E": "Alt+5",
187
+ "Color/Memories/Save Memory F": "Alt+6",
188
+ "Color/Memories/Save Memory G": "Alt+7",
189
+ "Color/Memories/Save Memory H": "Alt+8",
190
+ "Color/Nodes/Add Layer Node": "Alt+L",
191
+ "Color/Nodes/Add Outside Node": "Alt+O",
192
+ "Color/Nodes/Add Parallel Node": "Alt+P",
193
+ "Color/Nodes/Add Serial Before Current": "Shift+S",
194
+ "Color/Nodes/Add Serial Node": "Alt+S",
195
+ "Color/Nodes/Add Serial Node + CPW": "Alt+C",
196
+ "Color/Nodes/Add Serial Node + LPW": "Alt+Q",
197
+ "Color/Nodes/Add Serial Node + PCW": "Alt+B",
198
+ "Color/Nodes/Add Serial Node + PPW": "Alt+G",
199
+ "Color/Nodes/Add Splitter Combiner Node": "Alt+Y",
200
+ "Color/Nodes/Append a Node": "Alt+K",
201
+ "Color/Nodes/Enable/Disable All Nodes": "Alt+D",
202
+ "Color/Nodes/Enable/Disable Selected Nodes": "Cmd+D",
203
+ "Color/Nodes/Extract Current Node": "E",
204
+ "Color/Nodes/Next Node": "Shift+Alt+'",
205
+ "Color/Nodes/Previous Node": "Shift+Alt+;",
206
+ "Color/Original Memory": "Shift+Alt+O",
207
+ "Color/Preview Memory": "Shift+Alt+P",
208
+ "Color/Printer Light Hotkeys": "Cmd+Alt+`",
209
+ "Color/Quarter Printer Light/Blue -": "Cmd+6",
210
+ "Color/Quarter Printer Light/Blue +": "Cmd+9",
211
+ "Color/Quarter Printer Light/Cyan -": "Cmd+-",
212
+ "Color/Quarter Printer Light/Cyan +": "Cmd+1",
213
+ "Color/Quarter Printer Light/Green -": "Cmd+5",
214
+ "Color/Quarter Printer Light/Green +": "Cmd+8",
215
+ "Color/Quarter Printer Light/Magenta -": "Cmd+0",
216
+ "Color/Quarter Printer Light/Magenta +": "Cmd+2",
217
+ "Color/Quarter Printer Light/Master -": "Cmd+Enter",
218
+ "Color/Quarter Printer Light/Master +": "Cmd++",
219
+ "Color/Quarter Printer Light/Red -": "Cmd+4",
220
+ "Color/Quarter Printer Light/Red +": "Cmd+7",
221
+ "Color/Quarter Printer Light/Yellow -": "Cmd+.",
222
+ "Color/Quarter Printer Light/Yellow +": "Cmd+3",
223
+ "Color/Reset/All Grades and Nodes": "Cmd+Home",
224
+ "Color/Reset/Grades and Keep Nodes": "Cmd+Shift+Home",
225
+ "Color/Reset/Selected Node Grade": "Shift+Home",
226
+ "Color/Resolve Live/Freeze": "Cmd+Shift+R",
227
+ "Color/Resolve Live/On": "Cmd+R",
228
+ "Color/Resolve Live/Snapshot": "Cmd+Alt+R",
229
+ "Color/Step Timeline Wipe/One Frame Forward": "Cmd+Alt+Right",
230
+ "Color/Step Timeline Wipe/One Frame Reverse": "Cmd+Alt+Left",
231
+ "Color/Stills/Grab Still": "Cmd+Alt+G",
232
+ "Color/Stills/Next Still": "Cmd+Alt+N",
233
+ "Color/Stills/Play Still": "Cmd+Alt+F",
234
+ "Color/Stills/Previous Still": "Cmd+Alt+B",
235
+ "Color/Tracker/Forward": "Cmd+T",
236
+ "Color/Tracker/One Frame Forward": "Alt+Right",
237
+ "Color/Tracker/One Frame Reverse": "Alt+Left",
238
+ "Color/Tracker/Reverse": "Alt+T",
239
+ "Color/Tracker/Stop": "Cmd+Alt+T",
240
+ "Workspace/Switch to Page/Color": "Shift+6",
241
+ "Color/Primary Balance/Auto Color": "Shift+Alt+C",
242
+ "Color/Primary Balance/Enable Printer Light Hotkeys": "Cmd+Alt+`",
243
+ "Color/Nodes/Add Windowed Node (Circle)": "Alt+C",
244
+ "Color/Nodes/Add Windowed Node (Linear)": "Alt+Q",
245
+ "Color/Nodes/Add Windowed Node (Polygon)": "Alt+B",
246
+ "Color/Nodes/Add Windowed Node (Power Curve)": "Alt+G"
247
+ },
248
+ "fusion_page": {
249
+ "Fusion/Select Tool Dialog": "Shift+Space",
250
+ "Workspace/Switch to Page/Fusion": "Shift+5",
251
+ "Fusion/Viewer/Toggle Selected Node in Left Viewer": "1",
252
+ "Fusion/Viewer/Toggle Selected Node in Right Viewer": "2",
253
+ "Fusion/Viewer/Clear Both Viewers": "`",
254
+ "Fusion/Viewer/Display RGB": "C",
255
+ "Fusion/Viewer/Display Red Channel": "R",
256
+ "Fusion/Viewer/Display Green Channel": "G",
257
+ "Fusion/Viewer/Display Blue Channel": "B",
258
+ "Fusion/Viewer/Display Alpha Channel": "A",
259
+ "Fusion/Viewer/Display Z Channel": "Z",
260
+ "Fusion/Playback/Play or Stop": "Space",
261
+ "Fusion/Playback/Reverse Play": "Shift+Space",
262
+ "Fusion/Playback/Previous Frame": "Left",
263
+ "Fusion/Playback/Next Frame": "Right",
264
+ "Fusion/Playback/Back 10 Frames": "Shift+Left",
265
+ "Fusion/Playback/Forward 10 Frames": "Shift+Right",
266
+ "Fusion/Playback/First Frame": "Cmd+Left",
267
+ "Fusion/Playback/Last Frame": "Cmd+Right",
268
+ "Fusion/3D/Transform Position Mode": "Q",
269
+ "Fusion/3D/Transform Rotation Mode": "W",
270
+ "Fusion/3D/Transform Scale Mode": "E",
271
+ "Fusion/Nodes/Deselect All": "Cmd+Shift+A",
272
+ "Fusion/Nodes/Delete Selected": "Delete",
273
+ "Mark/Add Keyframe": "Cmd+["
274
+ },
275
+ "fairlight_page": {
276
+ "Workspace/Switch to Page/Fairlight": "Shift+7",
277
+ "Fairlight/Playback/Play or Stop": "Space",
278
+ "Fairlight/Playback/Reverse Play": "Shift+Space",
279
+ "Fairlight/Playback/Play Forward": "L",
280
+ "Fairlight/Playback/Play Reverse": "J",
281
+ "Fairlight/Playback/Stop": "K",
282
+ "Fairlight/Transport/Move Playhead Left by Clip or Marker": "Cmd+Alt+Left",
283
+ "Fairlight/Transport/Move Playhead Right by Clip or Marker": "Cmd+Alt+Right",
284
+ "Fairlight/Tracks/Select Track Above": "Cmd+Alt+Up",
285
+ "Fairlight/Tracks/Select Track Below": "Cmd+Alt+Down",
286
+ "Fairlight/Timeline/Zoom In": "Cmd+=",
287
+ "Fairlight/Timeline/Zoom Out": "Cmd+-",
288
+ "Mark/Mark In": "I",
289
+ "Mark/Mark Out": "O"
290
+ },
291
+ "deliver_page": {
292
+ "Workspace/Switch to Page/Deliver": "Shift+8",
293
+ "Mark/Mark In": "I",
294
+ "Mark/Mark Out": "O",
295
+ "Mark/Clear In and Out": "Alt+X",
296
+ "Playback/Pause/Start Playback": "Space",
297
+ "Playback/Play Reverse": "J",
298
+ "Playback/Stop": "K",
299
+ "Playback/Play Forward": "L",
300
+ "Playback/Go To/Timeline Start": "Home",
301
+ "Playback/Go To/Timeline End": "End",
302
+ "Playback/Step One/Frame Reverse": "Left",
303
+ "Playback/Step One/Frame Forward": "Right"
304
+ },
305
+ "cut_page": {
306
+ "Workspace/Switch to Page/Cut": "Shift+3",
307
+ "File/Import/Media…": "Cmd+I",
308
+ "File/New Timeline…": "Cmd+N",
309
+ "Workspace/Active Panel Selection/Media Clips": "Cmd+2",
310
+ "Workspace/Active Panel Selection/Timeline": "Cmd+4",
311
+ "Edit/Insert": "F9",
312
+ "Edit/Overwrite": "F10",
313
+ "Edit/Append to End of Timeline": "Shift+F12",
314
+ "Timeline/Add Transition": "Cmd+T",
315
+ "Trim/Blade Edit Mode": "B",
316
+ "Trim/Trim Mode": "T",
317
+ "Trim/Normal Edit Mode": "A",
318
+ "Timeline/Snapping": "N",
319
+ "Mark/Add Marker/Current Selected": "M",
320
+ "Mark/Modify Marker…": "Shift+M",
321
+ "Mark/Delete Marker": "Alt+M",
322
+ "Playback/Pause/Start Playback": "Space",
323
+ "Playback/Play Reverse": "J",
324
+ "Playback/Stop": "K",
325
+ "Playback/Play Forward": "L",
326
+ "Playback/Previous/Clip": "Up",
327
+ "Playback/Next/Clip": "Down",
328
+ "Playback/Step One/Frame Reverse": "Left",
329
+ "Playback/Step One/Frame Forward": "Right",
330
+ "Playback/Go To/Timeline Start": "Home",
331
+ "Playback/Go To/Timeline End": "End"
332
+ }
333
+ }
@@ -0,0 +1,186 @@
1
+ {
2
+ "platform": "devpost",
3
+ "version": "1.0.0",
4
+ "updated": "2026-03-05",
5
+ "description": "Devpost — hackathon platform for project submissions, portfolios, and team collaboration",
6
+
7
+ "urls": {
8
+ "signup": "https://secure.devpost.com/users/register?ref_content=signup_global_nav&ref_feature=signup&ref_medium=button",
9
+ "login": "https://secure.devpost.com/users/login",
10
+ "welcome": "https://devpost.com/users/welcome",
11
+ "onboarding": "https://devpost.com/settings/hackathon-recommendations?return_to=https%3A%2F%2Fdevpost.com%2F",
12
+ "settings": "https://devpost.com/settings",
13
+ "portfolio": "https://devpost.com/portfolio/redirect?page=projects",
14
+ "profile": "https://devpost.com/{username}",
15
+ "create_project": "https://devpost.com/software/new",
16
+ "edit_project": "https://devpost.com/software/{slug}/edit",
17
+ "public_project": "https://devpost.com/software/{slug}",
18
+ "hackathons": "https://devpost.com/hackathons",
19
+ "software_gallery": "https://devpost.com/software",
20
+ "logout": "https://devpost.com/users/logout"
21
+ },
22
+
23
+ "flows": {
24
+ "signup": {
25
+ "steps": [
26
+ "Navigate to signup URL",
27
+ "Click 'Sign up with email' link to reveal email form",
28
+ "Fill #user_first_name, #user_last_name, #user_email, #user_password",
29
+ "MANUAL: Solve reCAPTCHA (cannot be automated)",
30
+ "Click 'Sign up with email' submit button",
31
+ "MANUAL: Verify email via link in inbox",
32
+ "Redirects to /users/welcome → onboarding"
33
+ ],
34
+ "selectors": {
35
+ "first_name": "#user_first_name",
36
+ "last_name": "#user_last_name",
37
+ "email": "#user_email",
38
+ "password": "#user_password",
39
+ "email_signup_button": "button or a matching /sign up with email/i",
40
+ "recaptcha_token": "#g-recaptcha-response",
41
+ "recaptcha_iframe": "iframe[src*='recaptcha']"
42
+ }
43
+ },
44
+
45
+ "onboarding": {
46
+ "steps": [
47
+ "Navigate to onboarding URL",
48
+ "Select specialty checkbox",
49
+ "Fill skills tag list",
50
+ "Check interest checkboxes",
51
+ "Fill location and select timezone",
52
+ "Select career status (Professional to skip school fields)",
53
+ "Click Continue button",
54
+ "May need multiple fill+continue passes"
55
+ ],
56
+ "selectors": {
57
+ "specialty_fullstack": "#user_employed_as_full-stack_developer",
58
+ "skills": "#user_tag_list",
59
+ "interest_ai": "#user_theme_ids_6",
60
+ "interest_web": "#user_theme_ids_25",
61
+ "interest_beginner": "#user_theme_ids_23",
62
+ "interest_open_ended": "#user_theme_ids_22",
63
+ "location": "#user_address",
64
+ "timezone": "#user_timezone",
65
+ "career_professional": "#user_career_status_professional__post_grad",
66
+ "employed_in_tech": "#user_employed_in_software_or_tech_true",
67
+ "no_company_hackathons": "#user_company_has_internal_hackathons_false",
68
+ "school_name": "#user_school_name",
69
+ "grad_month": "#user_graduation_date_2i",
70
+ "grad_year": "#user_graduation_date_1i",
71
+ "continue_button": "input[type='submit'] or button matching /continue|next/i"
72
+ },
73
+ "tips": [
74
+ "Choose 'Professional (post grad)' to bypass school-required fields",
75
+ "Timezone: search for 'chennai' or 'kolkata' or 'new delhi' in select options"
76
+ ]
77
+ },
78
+
79
+ "settings": {
80
+ "steps": [
81
+ "Navigate to /settings",
82
+ "Fill tagline, GitHub, website, Twitter fields",
83
+ "Click Save button"
84
+ ],
85
+ "selectors": {
86
+ "first_name": "#user_first_name",
87
+ "last_name": "#user_last_name",
88
+ "tagline": "#user_user_setting_attributes_tagline",
89
+ "github": "#user_user_setting_attributes_github_login",
90
+ "website": "#user_user_setting_attributes_website",
91
+ "twitter": "#user_user_setting_attributes_twitter",
92
+ "save_button": "button matching /save changes|save|update/i"
93
+ }
94
+ },
95
+
96
+ "create_project": {
97
+ "steps": [
98
+ "Navigate to portfolio or /software/new",
99
+ "Click 'Add a new project' if on portfolio page",
100
+ "Fill project name in #software_name",
101
+ "Click #software_name_save_button or submit form",
102
+ "Redirects to /software/{slug}/edit",
103
+ "Fill tagline, description, built-with, try-it URL",
104
+ "Click Save (#software-save)",
105
+ "Click Publish button",
106
+ "MANUAL: May need reCAPTCHA solve again"
107
+ ],
108
+ "selectors": {
109
+ "add_project_button": "a or button matching /add a new project/i",
110
+ "project_name": "#software_name",
111
+ "project_name_save": "#software_name_save_button",
112
+ "hackathon_picker_modal": "#hackathon-picker",
113
+ "project_form": "#software_editor",
114
+ "tagline": "#software_tagline",
115
+ "built_with": "#software_tag_list",
116
+ "try_it_url": "#software_urls_attributes_0_url",
117
+ "description": "#software_description",
118
+ "save_draft": "#software-save",
119
+ "publish_button": "button matching /publish|submit|post/i"
120
+ },
121
+ "description_template": "## Inspiration\n[Why you built it]\n\n## What it does\n[Core functionality]\n\n## How we built it\n[Tech stack and architecture]\n\n## Challenges we ran into\n[Problems solved]\n\n## Accomplishments that we're proud of\n[Key wins]\n\n## What we learned\n[Takeaways]\n\n## What's next for [Project Name]\n[Future plans]"
122
+ }
123
+ },
124
+
125
+ "detection": {
126
+ "is_logged_in": "!!document.querySelector('a[href*=\"/users/logout\"]')",
127
+ "on_signup": "location.href.includes('/users/register')",
128
+ "on_welcome": "location.href.includes('/users/welcome')",
129
+ "on_onboarding": "location.href.includes('/settings/hackathon-recommendations')",
130
+ "on_settings": "location.href.startsWith('https://devpost.com/settings') && !location.href.includes('/hackathon-recommendations')",
131
+ "on_profile": "/^https:\\/\\/devpost\\.com\\/[^\\/?#]+\\/?$/.test(location.href)",
132
+ "has_captcha": "!!document.querySelector('iframe[src*=\"recaptcha\"], iframe[title*=\"reCAPTCHA\"], #g-recaptcha-response')",
133
+ "captcha_solved": "(document.querySelector('#g-recaptcha-response')?.value?.length || 0) > 0"
134
+ },
135
+
136
+ "errors": [
137
+ {
138
+ "error": "reCAPTCHA cannot be automated",
139
+ "context": "Signup and project creation both have reCAPTCHA",
140
+ "solution": "Must be solved manually by user. Use browser_wait to poll for captcha_solved state, then continue automation after user solves it.",
141
+ "severity": "blocker"
142
+ },
143
+ {
144
+ "error": "Email signup form not visible / collapses back to social signup",
145
+ "context": "The signup page shows Google/GitHub buttons by default, email form is hidden",
146
+ "solution": "Click the 'Sign up with email' link first. If it collapses, force visibility via JS: find the container and set display:block",
147
+ "severity": "medium"
148
+ },
149
+ {
150
+ "error": "el.value = text ignored by form (React-style)",
151
+ "context": "Devpost forms use event-driven validation",
152
+ "solution": "After setting el.value, dispatch both 'input' and 'change' events with bubbles:true. Or use browser_fill_form for CDP keyboard events.",
153
+ "severity": "high"
154
+ },
155
+ {
156
+ "error": "el.click() on submit button doesn't work",
157
+ "context": "Some Devpost buttons require real mouse events",
158
+ "solution": "Use browser_human_click with CSS selector, or browser_click (now uses CDP Input.dispatchMouseEvent)",
159
+ "severity": "high"
160
+ },
161
+ {
162
+ "error": "Onboarding has required fields that block Continue",
163
+ "context": "School fields are required if career status is 'Student'",
164
+ "solution": "Select 'Professional (post grad)' career status to bypass school-required fields entirely",
165
+ "severity": "medium"
166
+ },
167
+ {
168
+ "error": "Project name save button hidden or disabled",
169
+ "context": "The #software_name_save_button may be display:none",
170
+ "solution": "Set saveBtn.style.display = 'inline-block' and saveBtn.disabled = false before clicking. Or submit the form directly.",
171
+ "severity": "medium"
172
+ },
173
+ {
174
+ "error": "Tab/window coordinate mismatch for click",
175
+ "context": "CDP targets a tab but native click targets screen coordinates — if Chrome shows a different tab, clicks hit wrong content",
176
+ "solution": "Always use browser_click or browser_human_click with CSS selector instead of native click with coordinates. Or ensure correct tab is focused with browser_navigate first.",
177
+ "severity": "high"
178
+ },
179
+ {
180
+ "error": "navigator.webdriver detected by site",
181
+ "context": "Sites with anti-bot detection check this flag",
182
+ "solution": "Call browser_stealth tool once after navigating to the site. It hides webdriver flag and patches plugins/languages/permissions.",
183
+ "severity": "high"
184
+ }
185
+ ]
186
+ }