@mseep/clawdcursor 1.5.5

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 (354) hide show
  1. package/CHANGELOG.md +2264 -0
  2. package/LICENSE +21 -0
  3. package/README.md +385 -0
  4. package/SECURITY.md +44 -0
  5. package/SKILL.md +503 -0
  6. package/dist/core/agent-loop/agent.d.ts +42 -0
  7. package/dist/core/agent-loop/agent.js +1023 -0
  8. package/dist/core/agent-loop/agent.js.map +1 -0
  9. package/dist/core/agent-loop/batch-tool.d.ts +25 -0
  10. package/dist/core/agent-loop/batch-tool.js +218 -0
  11. package/dist/core/agent-loop/batch-tool.js.map +1 -0
  12. package/dist/core/agent-loop/coord-scale.d.ts +72 -0
  13. package/dist/core/agent-loop/coord-scale.js +89 -0
  14. package/dist/core/agent-loop/coord-scale.js.map +1 -0
  15. package/dist/core/agent-loop/focus-guard.d.ts +24 -0
  16. package/dist/core/agent-loop/focus-guard.js +29 -0
  17. package/dist/core/agent-loop/focus-guard.js.map +1 -0
  18. package/dist/core/agent-loop/project-mcp.d.ts +97 -0
  19. package/dist/core/agent-loop/project-mcp.js +253 -0
  20. package/dist/core/agent-loop/project-mcp.js.map +1 -0
  21. package/dist/core/agent-loop/prompt.d.ts +45 -0
  22. package/dist/core/agent-loop/prompt.js +426 -0
  23. package/dist/core/agent-loop/prompt.js.map +1 -0
  24. package/dist/core/agent-loop/tool-meta.d.ts +93 -0
  25. package/dist/core/agent-loop/tool-meta.js +651 -0
  26. package/dist/core/agent-loop/tool-meta.js.map +1 -0
  27. package/dist/core/agent-loop/tools.d.ts +38 -0
  28. package/dist/core/agent-loop/tools.js +2134 -0
  29. package/dist/core/agent-loop/tools.js.map +1 -0
  30. package/dist/core/agent-loop/types.d.ts +170 -0
  31. package/dist/core/agent-loop/types.js +12 -0
  32. package/dist/core/agent-loop/types.js.map +1 -0
  33. package/dist/core/agent.d.ts +51 -0
  34. package/dist/core/agent.js +245 -0
  35. package/dist/core/agent.js.map +1 -0
  36. package/dist/core/app-categories.d.ts +67 -0
  37. package/dist/core/app-categories.js +108 -0
  38. package/dist/core/app-categories.js.map +1 -0
  39. package/dist/core/banner.d.ts +70 -0
  40. package/dist/core/banner.js +245 -0
  41. package/dist/core/banner.js.map +1 -0
  42. package/dist/core/classify/capability.d.ts +45 -0
  43. package/dist/core/classify/capability.js +78 -0
  44. package/dist/core/classify/capability.js.map +1 -0
  45. package/dist/core/decompose/llm-decomposer.d.ts +35 -0
  46. package/dist/core/decompose/llm-decomposer.js +156 -0
  47. package/dist/core/decompose/llm-decomposer.js.map +1 -0
  48. package/dist/core/decompose/parser.d.ts +27 -0
  49. package/dist/core/decompose/parser.js +101 -0
  50. package/dist/core/decompose/parser.js.map +1 -0
  51. package/dist/core/observability/correlation.d.ts +19 -0
  52. package/dist/core/observability/correlation.js +36 -0
  53. package/dist/core/observability/correlation.js.map +1 -0
  54. package/dist/core/observability/cost-meter.d.ts +51 -0
  55. package/dist/core/observability/cost-meter.js +134 -0
  56. package/dist/core/observability/cost-meter.js.map +1 -0
  57. package/dist/core/observability/logger.d.ts +61 -0
  58. package/dist/core/observability/logger.js +550 -0
  59. package/dist/core/observability/logger.js.map +1 -0
  60. package/dist/core/router/aliases.d.ts +50 -0
  61. package/dist/core/router/aliases.js +104 -0
  62. package/dist/core/router/aliases.js.map +1 -0
  63. package/dist/core/router/normalize.d.ts +41 -0
  64. package/dist/core/router/normalize.js +80 -0
  65. package/dist/core/router/normalize.js.map +1 -0
  66. package/dist/core/safety.d.ts +126 -0
  67. package/dist/core/safety.js +568 -0
  68. package/dist/core/safety.js.map +1 -0
  69. package/dist/core/sense/a11y-resolver.d.ts +73 -0
  70. package/dist/core/sense/a11y-resolver.js +76 -0
  71. package/dist/core/sense/a11y-resolver.js.map +1 -0
  72. package/dist/core/sense/fingerprint.d.ts +41 -0
  73. package/dist/core/sense/fingerprint.js +123 -0
  74. package/dist/core/sense/fingerprint.js.map +1 -0
  75. package/dist/core/sense/rank.d.ts +70 -0
  76. package/dist/core/sense/rank.js +192 -0
  77. package/dist/core/sense/rank.js.map +1 -0
  78. package/dist/core/sense/reactive-check.d.ts +40 -0
  79. package/dist/core/sense/reactive-check.js +48 -0
  80. package/dist/core/sense/reactive-check.js.map +1 -0
  81. package/dist/core/sense/snapshot.d.ts +19 -0
  82. package/dist/core/sense/snapshot.js +100 -0
  83. package/dist/core/sense/snapshot.js.map +1 -0
  84. package/dist/core/sense/types.d.ts +66 -0
  85. package/dist/core/sense/types.js +9 -0
  86. package/dist/core/sense/types.js.map +1 -0
  87. package/dist/core/sense/ui-map-anchors.d.ts +7 -0
  88. package/dist/core/sense/ui-map-anchors.js +24 -0
  89. package/dist/core/sense/ui-map-anchors.js.map +1 -0
  90. package/dist/core/sense/ui-map-elements.d.ts +5 -0
  91. package/dist/core/sense/ui-map-elements.js +33 -0
  92. package/dist/core/sense/ui-map-elements.js.map +1 -0
  93. package/dist/core/sense/ui-map-find.d.ts +56 -0
  94. package/dist/core/sense/ui-map-find.js +153 -0
  95. package/dist/core/sense/ui-map-find.js.map +1 -0
  96. package/dist/core/sense/ui-map-fuse.d.ts +4 -0
  97. package/dist/core/sense/ui-map-fuse.js +44 -0
  98. package/dist/core/sense/ui-map-fuse.js.map +1 -0
  99. package/dist/core/sense/ui-map-geom.d.ts +3 -0
  100. package/dist/core/sense/ui-map-geom.js +16 -0
  101. package/dist/core/sense/ui-map-geom.js.map +1 -0
  102. package/dist/core/sense/ui-map-holder.d.ts +58 -0
  103. package/dist/core/sense/ui-map-holder.js +87 -0
  104. package/dist/core/sense/ui-map-holder.js.map +1 -0
  105. package/dist/core/sense/ui-map-normalize.d.ts +19 -0
  106. package/dist/core/sense/ui-map-normalize.js +65 -0
  107. package/dist/core/sense/ui-map-normalize.js.map +1 -0
  108. package/dist/core/sense/ui-map-render.d.ts +4 -0
  109. package/dist/core/sense/ui-map-render.js +34 -0
  110. package/dist/core/sense/ui-map-render.js.map +1 -0
  111. package/dist/core/sense/ui-map-resolve.d.ts +41 -0
  112. package/dist/core/sense/ui-map-resolve.js +59 -0
  113. package/dist/core/sense/ui-map-resolve.js.map +1 -0
  114. package/dist/core/sense/ui-map-types.d.ts +66 -0
  115. package/dist/core/sense/ui-map-types.js +11 -0
  116. package/dist/core/sense/ui-map-types.js.map +1 -0
  117. package/dist/core/sense/ui-map.d.ts +29 -0
  118. package/dist/core/sense/ui-map.js +113 -0
  119. package/dist/core/sense/ui-map.js.map +1 -0
  120. package/dist/core/verify/assertions.d.ts +132 -0
  121. package/dist/core/verify/assertions.js +284 -0
  122. package/dist/core/verify/assertions.js.map +1 -0
  123. package/dist/index.d.ts +21 -0
  124. package/dist/index.js +24 -0
  125. package/dist/index.js.map +1 -0
  126. package/dist/llm/browser-config.d.ts +36 -0
  127. package/dist/llm/browser-config.js +83 -0
  128. package/dist/llm/browser-config.js.map +1 -0
  129. package/dist/llm/client.d.ts +268 -0
  130. package/dist/llm/client.js +1094 -0
  131. package/dist/llm/client.js.map +1 -0
  132. package/dist/llm/config.d.ts +79 -0
  133. package/dist/llm/config.js +375 -0
  134. package/dist/llm/config.js.map +1 -0
  135. package/dist/llm/credentials.d.ts +35 -0
  136. package/dist/llm/credentials.js +491 -0
  137. package/dist/llm/credentials.js.map +1 -0
  138. package/dist/llm/external-creds.d.ts +42 -0
  139. package/dist/llm/external-creds.js +169 -0
  140. package/dist/llm/external-creds.js.map +1 -0
  141. package/dist/llm/providers.d.ts +123 -0
  142. package/dist/llm/providers.js +717 -0
  143. package/dist/llm/providers.js.map +1 -0
  144. package/dist/paths.d.ts +31 -0
  145. package/dist/paths.js +147 -0
  146. package/dist/paths.js.map +1 -0
  147. package/dist/platform/accessibility.d.ts +139 -0
  148. package/dist/platform/accessibility.js +670 -0
  149. package/dist/platform/accessibility.js.map +1 -0
  150. package/dist/platform/cdp-driver.d.ts +318 -0
  151. package/dist/platform/cdp-driver.js +1179 -0
  152. package/dist/platform/cdp-driver.js.map +1 -0
  153. package/dist/platform/index.d.ts +11 -0
  154. package/dist/platform/index.js +69 -0
  155. package/dist/platform/index.js.map +1 -0
  156. package/dist/platform/keys.d.ts +17 -0
  157. package/dist/platform/keys.js +129 -0
  158. package/dist/platform/keys.js.map +1 -0
  159. package/dist/platform/launch-poll.d.ts +101 -0
  160. package/dist/platform/launch-poll.js +177 -0
  161. package/dist/platform/launch-poll.js.map +1 -0
  162. package/dist/platform/linux.d.ts +173 -0
  163. package/dist/platform/linux.js +1253 -0
  164. package/dist/platform/linux.js.map +1 -0
  165. package/dist/platform/macos.d.ts +136 -0
  166. package/dist/platform/macos.js +976 -0
  167. package/dist/platform/macos.js.map +1 -0
  168. package/dist/platform/native-desktop.d.ts +145 -0
  169. package/dist/platform/native-desktop.js +936 -0
  170. package/dist/platform/native-desktop.js.map +1 -0
  171. package/dist/platform/native-helper.d.ts +130 -0
  172. package/dist/platform/native-helper.js +592 -0
  173. package/dist/platform/native-helper.js.map +1 -0
  174. package/dist/platform/ocr-engine.d.ts +78 -0
  175. package/dist/platform/ocr-engine.js +363 -0
  176. package/dist/platform/ocr-engine.js.map +1 -0
  177. package/dist/platform/ps-runner.d.ts +28 -0
  178. package/dist/platform/ps-runner.js +228 -0
  179. package/dist/platform/ps-runner.js.map +1 -0
  180. package/dist/platform/types.d.ts +397 -0
  181. package/dist/platform/types.js +15 -0
  182. package/dist/platform/types.js.map +1 -0
  183. package/dist/platform/uri-handler.d.ts +75 -0
  184. package/dist/platform/uri-handler.js +273 -0
  185. package/dist/platform/uri-handler.js.map +1 -0
  186. package/dist/platform/wayland-backend.d.ts +53 -0
  187. package/dist/platform/wayland-backend.js +348 -0
  188. package/dist/platform/wayland-backend.js.map +1 -0
  189. package/dist/platform/windows.d.ts +232 -0
  190. package/dist/platform/windows.js +1210 -0
  191. package/dist/platform/windows.js.map +1 -0
  192. package/dist/postbuild.d.ts +10 -0
  193. package/dist/postbuild.js +98 -0
  194. package/dist/postbuild.js.map +1 -0
  195. package/dist/schema/snapshot.d.ts +33 -0
  196. package/dist/schema/snapshot.js +90 -0
  197. package/dist/schema/snapshot.js.map +1 -0
  198. package/dist/shortcuts.d.ts +30 -0
  199. package/dist/shortcuts.js +261 -0
  200. package/dist/shortcuts.js.map +1 -0
  201. package/dist/surface/cli.d.ts +7 -0
  202. package/dist/surface/cli.js +1556 -0
  203. package/dist/surface/cli.js.map +1 -0
  204. package/dist/surface/dashboard.d.ts +8 -0
  205. package/dist/surface/dashboard.js +1193 -0
  206. package/dist/surface/dashboard.js.map +1 -0
  207. package/dist/surface/doctor.d.ts +29 -0
  208. package/dist/surface/doctor.js +1514 -0
  209. package/dist/surface/doctor.js.map +1 -0
  210. package/dist/surface/format.d.ts +10 -0
  211. package/dist/surface/format.js +37 -0
  212. package/dist/surface/format.js.map +1 -0
  213. package/dist/surface/http-utility.d.ts +65 -0
  214. package/dist/surface/http-utility.js +336 -0
  215. package/dist/surface/http-utility.js.map +1 -0
  216. package/dist/surface/mcp-server.d.ts +91 -0
  217. package/dist/surface/mcp-server.js +280 -0
  218. package/dist/surface/mcp-server.js.map +1 -0
  219. package/dist/surface/onboarding.d.ts +15 -0
  220. package/dist/surface/onboarding.js +184 -0
  221. package/dist/surface/onboarding.js.map +1 -0
  222. package/dist/surface/pidfile.d.ts +79 -0
  223. package/dist/surface/pidfile.js +263 -0
  224. package/dist/surface/pidfile.js.map +1 -0
  225. package/dist/surface/readiness.d.ts +45 -0
  226. package/dist/surface/readiness.js +230 -0
  227. package/dist/surface/readiness.js.map +1 -0
  228. package/dist/surface/report.d.ts +68 -0
  229. package/dist/surface/report.js +341 -0
  230. package/dist/surface/report.js.map +1 -0
  231. package/dist/surface/skill-register.d.ts +14 -0
  232. package/dist/surface/skill-register.js +150 -0
  233. package/dist/surface/skill-register.js.map +1 -0
  234. package/dist/surface/version.d.ts +6 -0
  235. package/dist/surface/version.js +27 -0
  236. package/dist/surface/version.js.map +1 -0
  237. package/dist/tools/a11y.d.ts +8 -0
  238. package/dist/tools/a11y.js +545 -0
  239. package/dist/tools/a11y.js.map +1 -0
  240. package/dist/tools/a11y_depth.d.ts +19 -0
  241. package/dist/tools/a11y_depth.js +455 -0
  242. package/dist/tools/a11y_depth.js.map +1 -0
  243. package/dist/tools/agent.d.ts +15 -0
  244. package/dist/tools/agent.js +248 -0
  245. package/dist/tools/agent.js.map +1 -0
  246. package/dist/tools/batch.d.ts +46 -0
  247. package/dist/tools/batch.js +230 -0
  248. package/dist/tools/batch.js.map +1 -0
  249. package/dist/tools/cdp.d.ts +8 -0
  250. package/dist/tools/cdp.js +233 -0
  251. package/dist/tools/cdp.js.map +1 -0
  252. package/dist/tools/compact.d.ts +63 -0
  253. package/dist/tools/compact.js +418 -0
  254. package/dist/tools/compact.js.map +1 -0
  255. package/dist/tools/cost-class.d.ts +38 -0
  256. package/dist/tools/cost-class.js +117 -0
  257. package/dist/tools/cost-class.js.map +1 -0
  258. package/dist/tools/desktop.d.ts +9 -0
  259. package/dist/tools/desktop.js +346 -0
  260. package/dist/tools/desktop.js.map +1 -0
  261. package/dist/tools/electron_bridge.d.ts +41 -0
  262. package/dist/tools/electron_bridge.js +261 -0
  263. package/dist/tools/electron_bridge.js.map +1 -0
  264. package/dist/tools/extras.d.ts +22 -0
  265. package/dist/tools/extras.js +942 -0
  266. package/dist/tools/extras.js.map +1 -0
  267. package/dist/tools/favorites.d.ts +13 -0
  268. package/dist/tools/favorites.js +137 -0
  269. package/dist/tools/favorites.js.map +1 -0
  270. package/dist/tools/introspection.d.ts +13 -0
  271. package/dist/tools/introspection.js +55 -0
  272. package/dist/tools/introspection.js.map +1 -0
  273. package/dist/tools/ocr.d.ts +8 -0
  274. package/dist/tools/ocr.js +66 -0
  275. package/dist/tools/ocr.js.map +1 -0
  276. package/dist/tools/orchestration.d.ts +7 -0
  277. package/dist/tools/orchestration.js +377 -0
  278. package/dist/tools/orchestration.js.map +1 -0
  279. package/dist/tools/playbooks/extract-compose.d.ts +22 -0
  280. package/dist/tools/playbooks/extract-compose.js +85 -0
  281. package/dist/tools/playbooks/extract-compose.js.map +1 -0
  282. package/dist/tools/playbooks/find-replace.d.ts +11 -0
  283. package/dist/tools/playbooks/find-replace.js +56 -0
  284. package/dist/tools/playbooks/find-replace.js.map +1 -0
  285. package/dist/tools/playbooks/index.d.ts +63 -0
  286. package/dist/tools/playbooks/index.js +70 -0
  287. package/dist/tools/playbooks/index.js.map +1 -0
  288. package/dist/tools/playbooks/keys-blocklist.d.ts +24 -0
  289. package/dist/tools/playbooks/keys-blocklist.js +89 -0
  290. package/dist/tools/playbooks/keys-blocklist.js.map +1 -0
  291. package/dist/tools/registry.d.ts +40 -0
  292. package/dist/tools/registry.js +560 -0
  293. package/dist/tools/registry.js.map +1 -0
  294. package/dist/tools/safety-gate.d.ts +16 -0
  295. package/dist/tools/safety-gate.js +70 -0
  296. package/dist/tools/safety-gate.js.map +1 -0
  297. package/dist/tools/scheduler.d.ts +76 -0
  298. package/dist/tools/scheduler.js +413 -0
  299. package/dist/tools/scheduler.js.map +1 -0
  300. package/dist/tools/shortcuts.d.ts +13 -0
  301. package/dist/tools/shortcuts.js +205 -0
  302. package/dist/tools/shortcuts.js.map +1 -0
  303. package/dist/tools/smart.d.ts +15 -0
  304. package/dist/tools/smart.js +785 -0
  305. package/dist/tools/smart.js.map +1 -0
  306. package/dist/tools/types.d.ts +174 -0
  307. package/dist/tools/types.js +67 -0
  308. package/dist/tools/types.js.map +1 -0
  309. package/dist/tools/window-text.d.ts +15 -0
  310. package/dist/tools/window-text.js +39 -0
  311. package/dist/tools/window-text.js.map +1 -0
  312. package/dist/types.d.ts +122 -0
  313. package/dist/types.js +41 -0
  314. package/dist/types.js.map +1 -0
  315. package/native/Package.swift +38 -0
  316. package/native/README.md +113 -0
  317. package/native/Sources/ClawdCursorHelper/main.swift +602 -0
  318. package/native/Sources/ClawdCursorHost/main.swift +182 -0
  319. package/native/Sources/PermissionCheck/main.swift +53 -0
  320. package/native/Sources/ScreenshotHelper/main.swift +219 -0
  321. package/native/build.sh +139 -0
  322. package/native/entitlements.plist +12 -0
  323. package/package.json +115 -0
  324. package/scripts/banner.ps1 +112 -0
  325. package/scripts/coord-accuracy.ps1 +140 -0
  326. package/scripts/coord-uwp.ps1 +80 -0
  327. package/scripts/edge-glow.ps1 +180 -0
  328. package/scripts/find-element.ps1 +198 -0
  329. package/scripts/get-foreground-window.ps1 +71 -0
  330. package/scripts/get-screen-context.ps1 +183 -0
  331. package/scripts/get-windows.ps1 +66 -0
  332. package/scripts/install-panic-hotkey.ps1 +46 -0
  333. package/scripts/interact-element.ps1 +431 -0
  334. package/scripts/invoke-element.ps1 +314 -0
  335. package/scripts/linux/atspi-bridge.py +356 -0
  336. package/scripts/linux/ocr-recognize.py +154 -0
  337. package/scripts/mac/_window-picker.jxa +163 -0
  338. package/scripts/mac/find-element.jxa +0 -0
  339. package/scripts/mac/find-element.sh +161 -0
  340. package/scripts/mac/focus-window.jxa +284 -0
  341. package/scripts/mac/get-focused-element.jxa +102 -0
  342. package/scripts/mac/get-foreground-window.jxa +173 -0
  343. package/scripts/mac/get-screen-context.jxa +197 -0
  344. package/scripts/mac/get-ui-tree.sh +141 -0
  345. package/scripts/mac/get-windows.jxa +117 -0
  346. package/scripts/mac/interact-element.sh +235 -0
  347. package/scripts/mac/invoke-element.jxa +408 -0
  348. package/scripts/mac/ocr-recognize.swift +124 -0
  349. package/scripts/ocr-recognize.ps1 +102 -0
  350. package/scripts/postinstall-native.js +48 -0
  351. package/scripts/ps-bridge.ps1 +830 -0
  352. package/scripts/smoke-mcp.ps1 +119 -0
  353. package/scripts/sync-version.ts +178 -0
  354. package/scripts/verify-install.js +81 -0
@@ -0,0 +1,550 @@
1
+ "use strict";
2
+ /**
3
+ * Leveled logger with TTY pretty-print + JSON file log.
4
+ *
5
+ * Two output surfaces:
6
+ *
7
+ * 1. JSON file log (stable machine-readable contract) — one
8
+ * `{ts, level, msg, meta}` line per event, rotated at 10 MB, 5 backups,
9
+ * never changes format between releases. Greppable, tailable.
10
+ *
11
+ * 2. TTY pretty-print (the default when stderr is a TTY) — layer-tagged,
12
+ * color-coded, one visual block per meaningful event. Redundant events
13
+ * (`safety.decision=allow`, `agent.turn.end`) are suppressed. Correlation
14
+ * ID + task + model lineup are printed ONCE in a header, not repeated on
15
+ * every line.
16
+ *
17
+ * The format is designed so the reader sees "router doing X", "blind
18
+ * agent turn 3 thinking Y, calling tool Z", "vision fallback turn 5"
19
+ * at a glance — every line carries its LAYER, so there is never
20
+ * ambiguity about which part of the pipeline is running.
21
+ *
22
+ * `CLAWD_LOG=json` disables pretty-print (useful for piping to a file
23
+ * or CI). `CLAWD_NO_COLOR=1` / `NO_COLOR=1` keeps pretty-print but
24
+ * without ANSI colors.
25
+ */
26
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
27
+ if (k2 === undefined) k2 = k;
28
+ var desc = Object.getOwnPropertyDescriptor(m, k);
29
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
30
+ desc = { enumerable: true, get: function() { return m[k]; } };
31
+ }
32
+ Object.defineProperty(o, k2, desc);
33
+ }) : (function(o, m, k, k2) {
34
+ if (k2 === undefined) k2 = k;
35
+ o[k2] = m[k];
36
+ }));
37
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
38
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
39
+ }) : function(o, v) {
40
+ o["default"] = v;
41
+ });
42
+ var __importStar = (this && this.__importStar) || (function () {
43
+ var ownKeys = function(o) {
44
+ ownKeys = Object.getOwnPropertyNames || function (o) {
45
+ var ar = [];
46
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
47
+ return ar;
48
+ };
49
+ return ownKeys(o);
50
+ };
51
+ return function (mod) {
52
+ if (mod && mod.__esModule) return mod;
53
+ var result = {};
54
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
55
+ __setModuleDefault(result, mod);
56
+ return result;
57
+ };
58
+ })();
59
+ var __importDefault = (this && this.__importDefault) || function (mod) {
60
+ return (mod && mod.__esModule) ? mod : { "default": mod };
61
+ };
62
+ Object.defineProperty(exports, "__esModule", { value: true });
63
+ exports.logger = exports.EVENTS = void 0;
64
+ exports.beginSpan = beginSpan;
65
+ const fs = __importStar(require("fs"));
66
+ const path = __importStar(require("path"));
67
+ const os = __importStar(require("os"));
68
+ const picocolors_1 = __importDefault(require("picocolors"));
69
+ const LEVEL_ORDER = { debug: 0, info: 1, warn: 2, error: 3 };
70
+ const MAX_BYTES = 10 * 1024 * 1024; // 10 MB per file
71
+ const KEEP_FILES = 5;
72
+ const envLevel = (process.env.CLAWD_LOG_LEVEL || 'info').toLowerCase();
73
+ const minLevel = LEVEL_ORDER[envLevel] ?? LEVEL_ORDER.info;
74
+ // Output modes. Default: pretty on TTY, json-only when piped. Override via
75
+ // CLAWD_LOG={json|pretty|stream|off}.
76
+ const logModeEnv = (process.env.CLAWD_LOG || '').toLowerCase();
77
+ const isTty = process.stderr.isTTY === true;
78
+ const prettyMode = logModeEnv === 'pretty' || logModeEnv === 'stream' ||
79
+ (isTty && logModeEnv !== 'json' && logModeEnv !== 'off');
80
+ const ttySink = logModeEnv === 'off' ? null : 'stderr';
81
+ const tsFormat = (() => {
82
+ const raw = (process.env.CLAWD_LOG_TIMESTAMPS || '').toLowerCase();
83
+ if (raw === 'off' || raw === 'none' || raw === 'false')
84
+ return 'off';
85
+ if (raw === 'iso')
86
+ return 'iso';
87
+ if (raw === 'ms' || raw === 'millis' || raw === 'millisecond')
88
+ return 'ms';
89
+ return 'short';
90
+ })();
91
+ function formatTtyTimestamp(d = new Date()) {
92
+ if (tsFormat === 'off')
93
+ return '';
94
+ if (tsFormat === 'iso')
95
+ return d.toISOString();
96
+ const hh = String(d.getHours()).padStart(2, '0');
97
+ const mm = String(d.getMinutes()).padStart(2, '0');
98
+ const ss = String(d.getSeconds()).padStart(2, '0');
99
+ if (tsFormat === 'ms') {
100
+ const ms = String(d.getMilliseconds()).padStart(3, '0');
101
+ return `${hh}:${mm}:${ss}.${ms}`;
102
+ }
103
+ return `${hh}:${mm}:${ss}`;
104
+ }
105
+ /** Width reserved for the timestamp column so the rest of the line aligns. */
106
+ const TS_WIDTH = tsFormat === 'off' ? 0
107
+ : tsFormat === 'iso' ? 24
108
+ : tsFormat === 'ms' ? 12
109
+ : 8;
110
+ const TS_INDENT = tsFormat === 'off' ? '' : ' '.repeat(TS_WIDTH + 1);
111
+ // Color support — picocolors auto-detects (NO_COLOR, isTTY, etc.) but we
112
+ // keep the historic stderr-TTY check and the CLAWD_NO_COLOR opt-out, since
113
+ // the logger writes to stderr (not stdout, which is what picocolors checks)
114
+ // and CLAWD_NO_COLOR is documented in the file header.
115
+ const supportsColor = isTty &&
116
+ process.env.TERM !== 'dumb' &&
117
+ !process.env.NO_COLOR &&
118
+ !process.env.CLAWD_NO_COLOR;
119
+ const colors = picocolors_1.default.createColors(supportsColor);
120
+ const C = {
121
+ dim: colors.dim,
122
+ bold: colors.bold,
123
+ gray: colors.gray,
124
+ red: colors.red,
125
+ green: colors.green,
126
+ yellow: colors.yellow,
127
+ blue: colors.blue,
128
+ magenta: colors.magenta,
129
+ cyan: colors.cyan,
130
+ };
131
+ let logDir = null;
132
+ function getLogDir() {
133
+ if (logDir)
134
+ return logDir;
135
+ logDir = path.join(os.homedir(), '.clawdcursor', 'logs');
136
+ try {
137
+ fs.mkdirSync(logDir, { recursive: true });
138
+ }
139
+ catch { /* best-effort */ }
140
+ return logDir;
141
+ }
142
+ function currentLogPath() {
143
+ const d = new Date();
144
+ const day = `${d.getUTCFullYear()}${String(d.getUTCMonth() + 1).padStart(2, '0')}${String(d.getUTCDate()).padStart(2, '0')}`;
145
+ return path.join(getLogDir(), `clawdcursor-${day}.log`);
146
+ }
147
+ function rotateIfNeeded(filePath) {
148
+ try {
149
+ const stat = fs.statSync(filePath);
150
+ if (stat.size < MAX_BYTES)
151
+ return;
152
+ for (let i = KEEP_FILES - 2; i >= 0; i--) {
153
+ const src = i === 0 ? filePath : `${filePath}.${i - 1}`;
154
+ const dst = `${filePath}.${i}`;
155
+ try {
156
+ if (fs.existsSync(src))
157
+ fs.renameSync(src, dst);
158
+ }
159
+ catch { /* best-effort */ }
160
+ }
161
+ }
162
+ catch { /* file doesn't exist — fine */ }
163
+ }
164
+ function writeJsonLine(line) {
165
+ const filePath = currentLogPath();
166
+ rotateIfNeeded(filePath);
167
+ try {
168
+ fs.appendFileSync(filePath, line + '\n');
169
+ }
170
+ catch { /* logger must never throw */ }
171
+ }
172
+ // ─── Event catalog ───────────────────────────────────────────────────
173
+ exports.EVENTS = {
174
+ PIPELINE_START: 'pipeline.start',
175
+ PIPELINE_PREPROCESS: 'pipeline.preprocess',
176
+ PIPELINE_SUBTASK: 'pipeline.subtask',
177
+ PIPELINE_RUNG: 'pipeline.rung',
178
+ PIPELINE_DONE: 'pipeline.done',
179
+ AGENT_TURN_START: 'agent.turn.start',
180
+ AGENT_THINK: 'agent.think',
181
+ AGENT_TOOL_CALL: 'agent.tool.call',
182
+ AGENT_TOOL_RESULT: 'agent.tool.result',
183
+ AGENT_TURN_END: 'agent.turn.end',
184
+ AGENT_STAGNATION: 'agent.stagnation',
185
+ ADAPTER_CALL: 'adapter.call',
186
+ };
187
+ // Per-task state — tracks the currently-active rung so subsequent
188
+ // `agent.*` events render with the correct layer tag even when the event
189
+ // meta itself doesn't carry `mode`. Reset on each pipeline.start.
190
+ const taskState = {
191
+ currentMode: '',
192
+ currentPath: '',
193
+ subtaskIndex: 0,
194
+ subtaskTotal: 0,
195
+ lastSafety: null,
196
+ };
197
+ /** Map event + meta → layer tag used in the pretty output. */
198
+ function layerTag(event, meta) {
199
+ if (event.startsWith('safety.'))
200
+ return { label: 'safety', color: C.red };
201
+ if (event.startsWith('adapter.'))
202
+ return { label: 'adapter', color: C.magenta };
203
+ if (event.startsWith('pipeline.')) {
204
+ // Router vs agent rung is distinguishable by meta.strategy on pipeline.rung.
205
+ if (event === exports.EVENTS.PIPELINE_RUNG && typeof meta?.strategy === 'string') {
206
+ return mapStrategyTag(meta.strategy);
207
+ }
208
+ return { label: 'pipeline', color: C.cyan };
209
+ }
210
+ if (event.startsWith('agent.')) {
211
+ // Prefer meta.mode when present (set on turn.start); fall back to taskState.
212
+ const mode = (typeof meta?.mode === 'string' && meta.mode) || taskState.currentMode;
213
+ return mapStrategyTag(String(mode || 'agent'));
214
+ }
215
+ return { label: 'log', color: C.gray };
216
+ }
217
+ function mapStrategyTag(strategy) {
218
+ switch (strategy) {
219
+ case 'router': return { label: 'router', color: C.green };
220
+ case 'blind': return { label: 'blind', color: C.blue };
221
+ case 'hybrid': return { label: 'hybrid', color: C.magenta };
222
+ case 'vision': return { label: 'vision', color: C.yellow };
223
+ default: return { label: strategy, color: C.cyan };
224
+ }
225
+ }
226
+ /**
227
+ * Observe-vs-act badge derived from a tool's cost class (+ name for the
228
+ * a11y / OCR / DOM split). Rendered on each tool-call line so the reader can
229
+ * watch the cheap-first ladder happen: WHEN the agent read the screen and HOW
230
+ * — `obs·a11y` (accessibility tree), `obs·ocr` (OCR), `obs·dom` (browser DOM),
231
+ * `obs·vision` (screenshot) — vs WHEN it `act`ed on it. `null` ⇒ no badge
232
+ * (terminal/control verbs like `done`, which carry no cost class).
233
+ */
234
+ function observeActBadge(costClass, tool) {
235
+ switch (costClass) {
236
+ case 'act': return { label: 'act', color: C.blue };
237
+ case 'inspect': return { label: 'obs·a11y', color: C.green };
238
+ case 'perceive-text':
239
+ if (/ocr/i.test(tool))
240
+ return { label: 'obs·ocr', color: C.yellow };
241
+ if (/cdp|dom|browser/i.test(tool))
242
+ return { label: 'obs·dom', color: C.cyan };
243
+ return { label: 'obs·a11y', color: C.green };
244
+ case 'perceive-image': return { label: 'obs·vision', color: C.magenta };
245
+ default: return null;
246
+ }
247
+ }
248
+ function colorize(text, color) {
249
+ return color(text);
250
+ }
251
+ // ANSI escape regex used by pad() to compute visible width. Built from a
252
+ // fromCharCode literal rather than \xNN / \uNNNN inline so static scanners
253
+ // don't flag this as "obfuscated content" (the codes themselves are
254
+ // emitted at runtime by picocolors — that's fine; only source matters).
255
+ const ANSI_RE = new RegExp(`${String.fromCharCode(27)}\\[[0-9;]*m`, 'g');
256
+ function pad(text, len) {
257
+ // ANSI-aware right-pad so the visible width matches `len` even with
258
+ // escape sequences in `text`.
259
+ const visible = text.replace(ANSI_RE, '');
260
+ const delta = len - visible.length;
261
+ return delta > 0 ? text + ' '.repeat(delta) : text;
262
+ }
263
+ function truncate(s, max) {
264
+ return s.length > max ? s.slice(0, max - 1) + '…' : s;
265
+ }
266
+ /**
267
+ * Compact inline meta — excludes redundant fields (correlationId, task) that
268
+ * are already rendered in the header.
269
+ */
270
+ function compactArgs(args) {
271
+ if (!args)
272
+ return '';
273
+ const parts = [];
274
+ for (const [k, v] of Object.entries(args)) {
275
+ if (v === undefined || v === null)
276
+ continue;
277
+ let val;
278
+ if (typeof v === 'string')
279
+ val = `"${truncate(v, 40)}"`;
280
+ else if (typeof v === 'number' || typeof v === 'boolean')
281
+ val = String(v);
282
+ else
283
+ val = truncate(JSON.stringify(v), 40);
284
+ parts.push(`${k}=${val}`);
285
+ }
286
+ return parts.join(' ');
287
+ }
288
+ /**
289
+ * Write one pretty-formatted line to the TTY with the standard timestamp
290
+ * prefix. Every callable line goes through here so the stamp column is
291
+ * always aligned — callers hand in the already-formatted line body.
292
+ */
293
+ function writePrettyLine(body) {
294
+ const ts = formatTtyTimestamp();
295
+ const prefix = ts ? colorize(ts, C.gray) + ' ' : '';
296
+ process.stderr.write(`${prefix}${body}\n`);
297
+ }
298
+ /**
299
+ * Write a continuation line that visually belongs to the previous log
300
+ * entry (e.g. the "run <cid>" row inside the task banner). Pads the
301
+ * timestamp column with whitespace so everything aligns.
302
+ */
303
+ function writePrettyContinuation(body) {
304
+ process.stderr.write(`${TS_INDENT}${body}\n`);
305
+ }
306
+ /**
307
+ * TTY pretty-print — renders one visual line (or none, for suppressed events).
308
+ * Never throws; falls back to a raw-ish line if the event isn't recognized.
309
+ */
310
+ function prettyEmit(level, event, meta) {
311
+ if (LEVEL_ORDER[level] < minLevel)
312
+ return;
313
+ if (!ttySink)
314
+ return;
315
+ // ── Suppressed noise ───────────────────────────────────────────
316
+ // allow-decisions flood the log; we only surface blocks/confirms.
317
+ if (event === 'safety.decision' && meta?.decision === 'allow') {
318
+ // Stash so the next tool.call can display "· safety=allow" inline.
319
+ taskState.lastSafety = {
320
+ tool: String(meta.tool ?? ''),
321
+ decision: 'allow',
322
+ tier: String(meta.tier ?? ''),
323
+ };
324
+ return;
325
+ }
326
+ // turn.end is just the closing bracket of turn.start — already implied by
327
+ // the next turn.start or the pipeline.done footer.
328
+ if (event === exports.EVENTS.AGENT_TURN_END)
329
+ return;
330
+ const tag = layerTag(event, meta);
331
+ const tagStr = colorize(`[${pad(tag.label, 7)}]`, tag.color);
332
+ // ── Per-event rendering ───────────────────────────────────────
333
+ if (event === exports.EVENTS.PIPELINE_START) {
334
+ // Header block — correlation id + task + model lineup. Printed ONCE per task.
335
+ taskState.currentMode = '';
336
+ taskState.currentPath = '';
337
+ taskState.subtaskIndex = 0;
338
+ taskState.subtaskTotal = 0;
339
+ taskState.lastSafety = null;
340
+ const task = String(meta?.task ?? '');
341
+ const cid = String(meta?.correlationId ?? '');
342
+ const shortCid = cid.length >= 8 ? cid.slice(0, 8) : cid;
343
+ const models = meta?.models
344
+ ? ` · models ${meta.models}`
345
+ : '';
346
+ const bar = colorize('━'.repeat(72), C.gray);
347
+ // Blank separator between tasks, then the divider + header rows.
348
+ process.stderr.write('\n');
349
+ writePrettyContinuation(bar);
350
+ writePrettyLine(`${colorize('▸ task', C.bold)} ${task}`);
351
+ writePrettyContinuation(`${colorize(' run', C.dim)} ${shortCid}${models}`);
352
+ writePrettyContinuation(bar);
353
+ return;
354
+ }
355
+ if (event === exports.EVENTS.PIPELINE_PREPROCESS) {
356
+ const strategy = String(meta?.strategy ?? '');
357
+ const reason = String(meta?.reason ?? '');
358
+ const subtasks = Number(meta?.subtasks ?? 0);
359
+ const capability = typeof meta?.capability === 'string' ? meta.capability : '';
360
+ const stratColor = mapStrategyTag(strategy).color;
361
+ const subInfo = subtasks > 0 ? ` · ${subtasks} subtasks` : '';
362
+ const capInfo = capability && capability !== 'general' ? ` · cap=${capability}` : '';
363
+ writePrettyLine(`${tagStr} preprocess → ${colorize(strategy, stratColor)}${subInfo}${capInfo} ${colorize(`· ${reason}`, C.dim)}`);
364
+ return;
365
+ }
366
+ if (event === exports.EVENTS.PIPELINE_SUBTASK) {
367
+ const idx = Number(meta?.index ?? 0);
368
+ const total = Number(meta?.of ?? 0);
369
+ const subtask = String(meta?.subtask ?? '');
370
+ taskState.subtaskIndex = idx;
371
+ taskState.subtaskTotal = total;
372
+ // Blank line between subtasks for visual breathing room.
373
+ process.stderr.write('\n');
374
+ writePrettyLine(`${tagStr} ${colorize(`▸ subtask ${idx}/${total}`, C.bold)} "${subtask}"`);
375
+ return;
376
+ }
377
+ if (event === exports.EVENTS.PIPELINE_RUNG) {
378
+ const strategy = String(meta?.strategy ?? '');
379
+ const attempt = Number(meta?.attempt ?? 1);
380
+ taskState.currentMode = (strategy === 'blind' || strategy === 'hybrid' || strategy === 'vision')
381
+ ? strategy
382
+ : '';
383
+ taskState.currentPath = strategy === 'router' ? 'router' : 'agent';
384
+ const stratColor = mapStrategyTag(strategy).color;
385
+ const attemptLabel = attempt > 1 ? ` (retry ${attempt})` : '';
386
+ writePrettyLine(`${tagStr} ↳ ${colorize(strategy, stratColor)}${attemptLabel}`);
387
+ return;
388
+ }
389
+ if (event === 'pipeline.rung.failed') {
390
+ const strategy = String(meta?.strategy ?? '');
391
+ const reason = String(meta?.reason ?? '');
392
+ writePrettyLine(`${tagStr} ${colorize('↳ miss', C.yellow)} ${strategy} · ${reason}`);
393
+ return;
394
+ }
395
+ if (event === exports.EVENTS.PIPELINE_DONE) {
396
+ const success = !!meta?.success;
397
+ const pathStr = String(meta?.path ?? '');
398
+ const costUsd = Number(meta?.costUsd ?? 0);
399
+ const durationMs = Number(meta?.durationMs ?? 0);
400
+ const subTotal = meta?.subtasksTotal !== undefined ? Number(meta.subtasksTotal) : null;
401
+ const subDone = meta?.subtasksCompleted !== undefined ? Number(meta.subtasksCompleted) : null;
402
+ const subSoft = meta?.subtasksSoftFailed !== undefined ? Number(meta.subtasksSoftFailed) : 0;
403
+ const abortReason = meta?.abortReason ? String(meta.abortReason) : '';
404
+ const icon = success ? colorize('✅', C.green) : colorize('❌', C.red);
405
+ const verdict = success
406
+ ? colorize('done', C.bold)
407
+ : abortReason
408
+ ? `${colorize('failed', C.bold)} (${colorize(abortReason, C.red)})`
409
+ : colorize('failed', C.bold);
410
+ const subStr = subTotal !== null && subDone !== null
411
+ ? ` · ${subDone}/${subTotal} subtasks${subSoft > 0 ? ` (${subSoft} soft)` : ''}`
412
+ : '';
413
+ const bar = colorize('━'.repeat(72), C.gray);
414
+ process.stderr.write('\n');
415
+ writePrettyContinuation(bar);
416
+ writePrettyLine(` ${icon} ${verdict} · path=${pathStr}${subStr} · $${costUsd.toFixed(4)} · ${formatMs(durationMs)}`);
417
+ writePrettyContinuation(bar);
418
+ return;
419
+ }
420
+ if (event === exports.EVENTS.AGENT_TURN_START) {
421
+ const turn = Number(meta?.turn ?? 0);
422
+ const mode = String(meta?.mode ?? taskState.currentMode ?? '');
423
+ taskState.currentMode = (mode === 'blind' || mode === 'hybrid' || mode === 'vision') ? mode : taskState.currentMode;
424
+ writePrettyLine(`${tagStr} ${colorize(` turn ${turn}`, C.dim)}`);
425
+ return;
426
+ }
427
+ if (event === exports.EVENTS.AGENT_THINK) {
428
+ const text = String(meta?.text ?? '').trim();
429
+ if (!text)
430
+ return;
431
+ const clipped = truncate(text, 140);
432
+ writePrettyLine(`${tagStr} ${colorize(' think', C.dim)} ${clipped}`);
433
+ return;
434
+ }
435
+ if (event === exports.EVENTS.AGENT_TOOL_CALL) {
436
+ const tool = String(meta?.tool ?? '');
437
+ const args = (meta?.args ?? {});
438
+ const argsStr = compactArgs(args);
439
+ const safety = taskState.lastSafety;
440
+ const safetyInline = safety && safety.decision !== 'allow'
441
+ ? ` ${colorize(`· safety=${safety.decision}(${safety.tier})`, C.red)}`
442
+ : '';
443
+ taskState.lastSafety = null;
444
+ // Observe-vs-act badge so the cheap-first ladder is visible at a glance:
445
+ // which calls read the screen (a11y / OCR / DOM / vision) vs which act.
446
+ const badge = observeActBadge(String(meta?.costClass ?? ''), tool);
447
+ const badgeStr = badge ? colorize(pad(badge.label, 10), badge.color) : pad('', 10);
448
+ writePrettyLine(`${tagStr} ${colorize(' →', C.cyan)} ${badgeStr} ${colorize(tool, C.bold)}(${argsStr})${safetyInline}`);
449
+ return;
450
+ }
451
+ if (event === exports.EVENTS.AGENT_TOOL_RESULT) {
452
+ const success = !!meta?.success;
453
+ const text = String(meta?.text ?? '');
454
+ const ms = Number(meta?.ms ?? 0);
455
+ const mark = success ? colorize(' ✓', C.green) : colorize(' ✗', C.red);
456
+ const latency = colorize(`(${formatMs(ms)})`, C.dim);
457
+ writePrettyLine(`${tagStr} ${mark} ${truncate(text, 90)} ${latency}`);
458
+ return;
459
+ }
460
+ if (event === exports.EVENTS.AGENT_STAGNATION) {
461
+ const window = Number(meta?.window ?? 0);
462
+ writePrettyLine(`${tagStr} ${colorize(` ⚠ stagnation`, C.yellow)} — last ${window} screens unchanged`);
463
+ return;
464
+ }
465
+ // safety block/confirm paths (allow was suppressed above)
466
+ if (event === 'safety.decision') {
467
+ const decision = String(meta?.decision ?? '');
468
+ const reason = String(meta?.reason ?? '');
469
+ writePrettyLine(`${tagStr} ${colorize(`⛔ ${decision}`, C.red)} — ${reason}`);
470
+ return;
471
+ }
472
+ // Unknown or less-common events — one compact line.
473
+ if (level === 'warn' || level === 'error') {
474
+ const reason = meta?.reason || meta?.error || meta?.text || '';
475
+ const rest = compactArgs(stripHeaderMeta(meta));
476
+ const levelPrefix = level === 'error' ? colorize('✗ error', C.red) : colorize('! warn', C.yellow);
477
+ writePrettyLine(`${tagStr} ${levelPrefix} ${event} ${reason ? `· ${truncate(String(reason), 80)}` : ''}${rest ? ` ${colorize(rest, C.dim)}` : ''}`);
478
+ return;
479
+ }
480
+ if (level === 'debug')
481
+ return; // stay quiet at debug
482
+ // Default info rendering for anything not explicitly handled.
483
+ const rest = compactArgs(stripHeaderMeta(meta));
484
+ writePrettyLine(`${tagStr} ${event}${rest ? ` ${colorize(rest, C.dim)}` : ''}`);
485
+ }
486
+ function stripHeaderMeta(meta) {
487
+ if (!meta)
488
+ return undefined;
489
+ const out = {};
490
+ for (const [k, v] of Object.entries(meta)) {
491
+ if (k === 'correlationId' || k === 'task' || k === 'mode')
492
+ continue;
493
+ out[k] = v;
494
+ }
495
+ return out;
496
+ }
497
+ function formatMs(ms) {
498
+ if (ms < 1000)
499
+ return `${Math.round(ms)}ms`;
500
+ if (ms < 60_000)
501
+ return `${(ms / 1000).toFixed(1)}s`;
502
+ const min = Math.floor(ms / 60_000);
503
+ const sec = Math.round((ms % 60_000) / 1000);
504
+ return `${min}m${sec}s`;
505
+ }
506
+ // ─── Public logger entry points ─────────────────────────────────────
507
+ function emit(level, msg, meta) {
508
+ if (LEVEL_ORDER[level] < minLevel)
509
+ return;
510
+ // File log ALWAYS gets the full JSON record (machine contract).
511
+ const record = {
512
+ ts: new Date().toISOString(),
513
+ level,
514
+ msg,
515
+ ...(meta && Object.keys(meta).length ? { meta } : {}),
516
+ };
517
+ writeJsonLine(JSON.stringify(record));
518
+ // TTY: pretty if we're a TTY / user opted in. Otherwise raw JSON-line.
519
+ if (prettyMode) {
520
+ prettyEmit(level, msg, meta);
521
+ }
522
+ else if (ttySink === 'stderr') {
523
+ const metaStr = meta && Object.keys(meta).length ? ` ${JSON.stringify(meta)}` : '';
524
+ process.stderr.write(`[${level}] ${msg}${metaStr}\n`);
525
+ }
526
+ }
527
+ /**
528
+ * Begin a nested span. Currently a no-op on pretty format (indentation is
529
+ * baked into per-event rendering); kept for API compatibility with callers
530
+ * that wrap turns / playbook steps in spans.
531
+ */
532
+ function beginSpan() {
533
+ let ended = false;
534
+ return { end: () => { ended = true; void ended; } };
535
+ }
536
+ exports.logger = {
537
+ debug: (msg, meta) => emit('debug', msg, meta),
538
+ info: (msg, meta) => emit('info', msg, meta),
539
+ warn: (msg, meta) => emit('warn', msg, meta),
540
+ error: (msg, meta) => emit('error', msg, meta),
541
+ /** Child logger bound to a correlation ID — inlined into every JSON record's meta. */
542
+ with: (extra) => ({
543
+ debug: (msg, meta) => emit('debug', msg, { ...extra, ...(meta || {}) }),
544
+ info: (msg, meta) => emit('info', msg, { ...extra, ...(meta || {}) }),
545
+ warn: (msg, meta) => emit('warn', msg, { ...extra, ...(meta || {}) }),
546
+ error: (msg, meta) => emit('error', msg, { ...extra, ...(meta || {}) }),
547
+ }),
548
+ span: beginSpan,
549
+ };
550
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/observability/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * APP_ALIASES — the 40-app, 3-OS canonical app table.
3
+ *
4
+ * Ported verbatim from src/action-router.ts (v0.6.3 heritage). Each row
5
+ * maps a user-facing natural-language name to the set of actual process
6
+ * names on each OS plus the macOS app bundle name.
7
+ *
8
+ * Adding an app = one row here, nothing else. No business-logic file
9
+ * should reference raw process names — they go through this table.
10
+ */
11
+ export interface AppAlias {
12
+ /** Process names to look for when checking "is this app running?". */
13
+ processNames: string[];
14
+ /** Human-friendly search term for UIA-tree search (window title matching). */
15
+ searchTerm: string;
16
+ /** macOS app bundle name for `open -a`. */
17
+ macOSAppName?: string;
18
+ /** Windows fallback exe, used when Start-Process can't find by name. */
19
+ executable?: string;
20
+ /**
21
+ * Windows UWP AppsFolder ID (e.g. `Microsoft.WindowsCalculator_8wekyb3d8bbwe!App`).
22
+ * When present, the launcher uses `explorer.exe shell:AppsFolder\<id>` which
23
+ * works reliably for Store / UWP apps where `Start-Process -FilePath <exe>`
24
+ * silently fails. If omitted, the launcher falls back to Start Menu search,
25
+ * which is slower but universal.
26
+ */
27
+ uwpAppId?: string;
28
+ /**
29
+ * If true, the user typically wants a FRESH instance (mspaint: new
30
+ * canvas, notepad: new document). Launch with -n on macOS, or by
31
+ * executable path on Windows.
32
+ */
33
+ alwaysNewInstance?: boolean;
34
+ }
35
+ export declare const APP_ALIASES: Record<string, AppAlias>;
36
+ /**
37
+ * Resolve a user-facing app name to its alias row. Goes through
38
+ * `normalizeAppName` first so phrasings like "the Outlook app",
39
+ * "Edge browser", or '"chrome"' all match the same canonical key as
40
+ * the bare app name. Returns null for unknown apps — caller should
41
+ * fall back to `launchApp(name)` with the raw string.
42
+ *
43
+ * This is the single choke point for "name → alias row". Every caller
44
+ * (router, agent's `open_app`, MCP `mcp__clawdcursor__window`, REST
45
+ * `/execute`) hits this function, so adding normalization here means
46
+ * we don't have to push the same logic into every entry point.
47
+ */
48
+ export declare function resolveAlias(name: string): (AppAlias & {
49
+ key: string;
50
+ }) | null;