@xrkseek/harness 0.6.21 → 0.7.0-rc.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 (677) hide show
  1. package/node_modules/@xrkseek/a2a/README.md +45 -45
  2. package/node_modules/@xrkseek/attachment/README.md +23 -23
  3. package/node_modules/@xrkseek/attachment-local/README.md +6 -6
  4. package/node_modules/@xrkseek/attachment-local/package.json +26 -26
  5. package/node_modules/@xrkseek/checkpoint/README.md +90 -90
  6. package/node_modules/@xrkseek/checkpoint/dist/store.d.ts +21 -0
  7. package/node_modules/@xrkseek/checkpoint/dist/store.d.ts.map +1 -1
  8. package/node_modules/@xrkseek/checkpoint/dist/store.js +33 -0
  9. package/node_modules/@xrkseek/checkpoint/dist/store.js.map +1 -1
  10. package/node_modules/@xrkseek/checkpoint/package.json +26 -26
  11. package/node_modules/@xrkseek/claude-code-mods/README.md +152 -0
  12. package/node_modules/@xrkseek/claude-code-mods/README.zh.md +172 -0
  13. package/node_modules/@xrkseek/claude-code-mods/dist/api.d.ts +36 -0
  14. package/node_modules/@xrkseek/claude-code-mods/dist/api.d.ts.map +1 -0
  15. package/node_modules/@xrkseek/claude-code-mods/dist/api.js +215 -0
  16. package/node_modules/@xrkseek/claude-code-mods/dist/api.js.map +1 -0
  17. package/node_modules/@xrkseek/claude-code-mods/dist/attach.d.ts +92 -0
  18. package/node_modules/@xrkseek/claude-code-mods/dist/attach.d.ts.map +1 -0
  19. package/node_modules/@xrkseek/claude-code-mods/dist/attach.js +106 -0
  20. package/node_modules/@xrkseek/claude-code-mods/dist/attach.js.map +1 -0
  21. package/node_modules/@xrkseek/claude-code-mods/dist/chain.d.ts +105 -0
  22. package/node_modules/@xrkseek/claude-code-mods/dist/chain.d.ts.map +1 -0
  23. package/node_modules/@xrkseek/claude-code-mods/dist/chain.js +324 -0
  24. package/node_modules/@xrkseek/claude-code-mods/dist/chain.js.map +1 -0
  25. package/node_modules/@xrkseek/claude-code-mods/dist/define-mod.d.ts +39 -0
  26. package/node_modules/@xrkseek/claude-code-mods/dist/define-mod.d.ts.map +1 -0
  27. package/node_modules/@xrkseek/claude-code-mods/dist/define-mod.js +39 -0
  28. package/node_modules/@xrkseek/claude-code-mods/dist/define-mod.js.map +1 -0
  29. package/node_modules/@xrkseek/claude-code-mods/dist/elements.d.ts +96 -0
  30. package/node_modules/@xrkseek/claude-code-mods/dist/elements.d.ts.map +1 -0
  31. package/node_modules/@xrkseek/claude-code-mods/dist/elements.js +171 -0
  32. package/node_modules/@xrkseek/claude-code-mods/dist/elements.js.map +1 -0
  33. package/node_modules/@xrkseek/claude-code-mods/dist/engine.d.ts +155 -0
  34. package/node_modules/@xrkseek/claude-code-mods/dist/engine.d.ts.map +1 -0
  35. package/node_modules/@xrkseek/claude-code-mods/dist/engine.js +356 -0
  36. package/node_modules/@xrkseek/claude-code-mods/dist/engine.js.map +1 -0
  37. package/node_modules/@xrkseek/claude-code-mods/dist/host-ops.d.ts +72 -0
  38. package/node_modules/@xrkseek/claude-code-mods/dist/host-ops.d.ts.map +1 -0
  39. package/node_modules/@xrkseek/claude-code-mods/dist/host-ops.js +603 -0
  40. package/node_modules/@xrkseek/claude-code-mods/dist/host-ops.js.map +1 -0
  41. package/node_modules/@xrkseek/claude-code-mods/dist/index.d.ts +112 -0
  42. package/node_modules/@xrkseek/claude-code-mods/dist/index.d.ts.map +1 -0
  43. package/node_modules/@xrkseek/claude-code-mods/dist/index.js +654 -0
  44. package/node_modules/@xrkseek/claude-code-mods/dist/index.js.map +1 -0
  45. package/node_modules/@xrkseek/claude-code-mods/dist/matcher.d.ts +45 -0
  46. package/node_modules/@xrkseek/claude-code-mods/dist/matcher.d.ts.map +1 -0
  47. package/node_modules/@xrkseek/claude-code-mods/dist/matcher.js +195 -0
  48. package/node_modules/@xrkseek/claude-code-mods/dist/matcher.js.map +1 -0
  49. package/node_modules/@xrkseek/claude-code-mods/dist/module.d.ts +74 -0
  50. package/node_modules/@xrkseek/claude-code-mods/dist/module.d.ts.map +1 -0
  51. package/node_modules/@xrkseek/claude-code-mods/dist/module.js +167 -0
  52. package/node_modules/@xrkseek/claude-code-mods/dist/module.js.map +1 -0
  53. package/node_modules/@xrkseek/claude-code-mods/dist/native-import.d.ts +31 -0
  54. package/node_modules/@xrkseek/claude-code-mods/dist/native-import.d.ts.map +1 -0
  55. package/node_modules/@xrkseek/claude-code-mods/dist/native-import.js +32 -0
  56. package/node_modules/@xrkseek/claude-code-mods/dist/native-import.js.map +1 -0
  57. package/node_modules/@xrkseek/claude-code-mods/dist/plugin-dir.d.ts +70 -0
  58. package/node_modules/@xrkseek/claude-code-mods/dist/plugin-dir.d.ts.map +1 -0
  59. package/node_modules/@xrkseek/claude-code-mods/dist/plugin-dir.js +167 -0
  60. package/node_modules/@xrkseek/claude-code-mods/dist/plugin-dir.js.map +1 -0
  61. package/node_modules/@xrkseek/claude-code-mods/dist/product-agent.d.ts +57 -0
  62. package/node_modules/@xrkseek/claude-code-mods/dist/product-agent.d.ts.map +1 -0
  63. package/node_modules/@xrkseek/claude-code-mods/dist/product-agent.js +85 -0
  64. package/node_modules/@xrkseek/claude-code-mods/dist/product-agent.js.map +1 -0
  65. package/node_modules/@xrkseek/claude-code-mods/dist/runtime.d.ts +117 -0
  66. package/node_modules/@xrkseek/claude-code-mods/dist/runtime.d.ts.map +1 -0
  67. package/node_modules/@xrkseek/claude-code-mods/dist/runtime.js +252 -0
  68. package/node_modules/@xrkseek/claude-code-mods/dist/runtime.js.map +1 -0
  69. package/node_modules/@xrkseek/claude-code-mods/dist/storage-domain.d.ts +68 -0
  70. package/node_modules/@xrkseek/claude-code-mods/dist/storage-domain.d.ts.map +1 -0
  71. package/node_modules/@xrkseek/claude-code-mods/dist/storage-domain.js +104 -0
  72. package/node_modules/@xrkseek/claude-code-mods/dist/storage-domain.js.map +1 -0
  73. package/node_modules/@xrkseek/claude-code-mods/dist/surfaces.d.ts +82 -0
  74. package/node_modules/@xrkseek/claude-code-mods/dist/surfaces.d.ts.map +1 -0
  75. package/node_modules/@xrkseek/claude-code-mods/dist/surfaces.js +243 -0
  76. package/node_modules/@xrkseek/claude-code-mods/dist/surfaces.js.map +1 -0
  77. package/node_modules/@xrkseek/claude-code-mods/dist/testing.d.ts +157 -0
  78. package/node_modules/@xrkseek/claude-code-mods/dist/testing.d.ts.map +1 -0
  79. package/node_modules/@xrkseek/claude-code-mods/dist/testing.js +266 -0
  80. package/node_modules/@xrkseek/claude-code-mods/dist/testing.js.map +1 -0
  81. package/node_modules/@xrkseek/claude-code-mods/dist/tool-names.d.ts +21 -0
  82. package/node_modules/@xrkseek/claude-code-mods/dist/tool-names.d.ts.map +1 -0
  83. package/node_modules/@xrkseek/claude-code-mods/dist/tool-names.js +37 -0
  84. package/node_modules/@xrkseek/claude-code-mods/dist/tool-names.js.map +1 -0
  85. package/node_modules/@xrkseek/claude-code-mods/dist/types.d.ts +592 -0
  86. package/node_modules/@xrkseek/claude-code-mods/dist/types.d.ts.map +1 -0
  87. package/node_modules/@xrkseek/claude-code-mods/dist/types.js +10 -0
  88. package/node_modules/@xrkseek/claude-code-mods/dist/types.js.map +1 -0
  89. package/node_modules/@xrkseek/claude-code-mods/dist/values.d.ts +58 -0
  90. package/node_modules/@xrkseek/claude-code-mods/dist/values.d.ts.map +1 -0
  91. package/node_modules/@xrkseek/claude-code-mods/dist/values.js +75 -0
  92. package/node_modules/@xrkseek/claude-code-mods/dist/values.js.map +1 -0
  93. package/node_modules/@xrkseek/claude-code-mods/dist/working-directory.d.ts +45 -0
  94. package/node_modules/@xrkseek/claude-code-mods/dist/working-directory.d.ts.map +1 -0
  95. package/node_modules/@xrkseek/claude-code-mods/dist/working-directory.js +29 -0
  96. package/node_modules/@xrkseek/claude-code-mods/dist/working-directory.js.map +1 -0
  97. package/node_modules/@xrkseek/claude-code-mods/package.json +47 -0
  98. package/node_modules/@xrkseek/code-runtime/README.md +20 -20
  99. package/node_modules/@xrkseek/core-agent/dist/index.d.ts +87 -0
  100. package/node_modules/@xrkseek/core-agent/dist/index.d.ts.map +1 -1
  101. package/node_modules/@xrkseek/core-agent/dist/index.js.map +1 -1
  102. package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
  103. package/node_modules/@xrkseek/core-agent-loop/dist/index.js +9 -1
  104. package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
  105. package/node_modules/@xrkseek/core-agent-loop/package.json +42 -42
  106. package/node_modules/@xrkseek/core-session/README.md +35 -35
  107. package/node_modules/@xrkseek/core-session/dist/compaction.d.ts.map +1 -1
  108. package/node_modules/@xrkseek/core-session/dist/compaction.js +62 -37
  109. package/node_modules/@xrkseek/core-session/dist/compaction.js.map +1 -1
  110. package/node_modules/@xrkseek/core-session/dist/freeze.d.ts +6 -0
  111. package/node_modules/@xrkseek/core-session/dist/freeze.d.ts.map +1 -1
  112. package/node_modules/@xrkseek/core-session/dist/freeze.js +9 -0
  113. package/node_modules/@xrkseek/core-session/dist/freeze.js.map +1 -1
  114. package/node_modules/@xrkseek/core-session/dist/index.d.ts +18 -2
  115. package/node_modules/@xrkseek/core-session/dist/index.d.ts.map +1 -1
  116. package/node_modules/@xrkseek/core-session/dist/index.js +53 -12
  117. package/node_modules/@xrkseek/core-session/dist/index.js.map +1 -1
  118. package/node_modules/@xrkseek/core-session/dist/list-hints.d.ts.map +1 -1
  119. package/node_modules/@xrkseek/core-session/dist/list-hints.js +14 -4
  120. package/node_modules/@xrkseek/core-session/dist/list-hints.js.map +1 -1
  121. package/node_modules/@xrkseek/core-session/dist/repair-open-turn.d.ts +8 -1
  122. package/node_modules/@xrkseek/core-session/dist/repair-open-turn.d.ts.map +1 -1
  123. package/node_modules/@xrkseek/core-session/dist/repair-open-turn.js +14 -4
  124. package/node_modules/@xrkseek/core-session/dist/repair-open-turn.js.map +1 -1
  125. package/node_modules/@xrkseek/core-session/dist/sqlite-store.d.ts +55 -0
  126. package/node_modules/@xrkseek/core-session/dist/sqlite-store.d.ts.map +1 -1
  127. package/node_modules/@xrkseek/core-session/dist/sqlite-store.js +670 -92
  128. package/node_modules/@xrkseek/core-session/dist/sqlite-store.js.map +1 -1
  129. package/node_modules/@xrkseek/core-session/dist/store.d.ts +38 -0
  130. package/node_modules/@xrkseek/core-session/dist/store.d.ts.map +1 -1
  131. package/node_modules/@xrkseek/core-session/package.json +34 -34
  132. package/node_modules/@xrkseek/core-system-prompt/README.md +14 -14
  133. package/node_modules/@xrkseek/core-tools/dist/session-query-prompt.d.ts.map +1 -1
  134. package/node_modules/@xrkseek/core-tools/dist/session-query-prompt.js +3 -2
  135. package/node_modules/@xrkseek/core-tools/dist/session-query-prompt.js.map +1 -1
  136. package/node_modules/@xrkseek/core-tools/dist/std-tools.d.ts.map +1 -1
  137. package/node_modules/@xrkseek/core-tools/dist/std-tools.js +1 -13
  138. package/node_modules/@xrkseek/core-tools/dist/std-tools.js.map +1 -1
  139. package/node_modules/@xrkseek/exec-computer-use/README.md +14 -14
  140. package/node_modules/@xrkseek/exec-computer-use/dist/windows-uia.js +402 -402
  141. package/node_modules/@xrkseek/exec-computer-use/package.json +26 -26
  142. package/node_modules/@xrkseek/exec-fs/README.md +12 -12
  143. package/node_modules/@xrkseek/exec-fs/dist/read-image.js +4 -4
  144. package/node_modules/@xrkseek/exec-image-gen/README.md +13 -13
  145. package/node_modules/@xrkseek/exec-image-gen/package.json +28 -28
  146. package/node_modules/@xrkseek/exec-memory/README.md +14 -14
  147. package/node_modules/@xrkseek/exec-memory/dist/live-fragment.d.ts +11 -0
  148. package/node_modules/@xrkseek/exec-memory/dist/live-fragment.d.ts.map +1 -0
  149. package/node_modules/@xrkseek/exec-memory/dist/live-fragment.js +40 -0
  150. package/node_modules/@xrkseek/exec-memory/dist/live-fragment.js.map +1 -0
  151. package/node_modules/@xrkseek/exec-memory/package.json +28 -28
  152. package/node_modules/@xrkseek/exec-sandbox/README.md +15 -15
  153. package/node_modules/@xrkseek/exec-ssh/README.md +19 -19
  154. package/node_modules/@xrkseek/exec-subprocess/README.md +10 -10
  155. package/node_modules/@xrkseek/exec-video-analyze/README.md +11 -11
  156. package/node_modules/@xrkseek/exec-video-analyze/package.json +26 -26
  157. package/node_modules/@xrkseek/exec-video-gen/README.md +26 -26
  158. package/node_modules/@xrkseek/exec-voice/README.md +25 -25
  159. package/node_modules/@xrkseek/exec-web/README.md +11 -11
  160. package/node_modules/@xrkseek/llm-deepseek/README.md +22 -22
  161. package/node_modules/@xrkseek/llm-deepseek/package.json +30 -30
  162. package/node_modules/@xrkseek/llm-registry/dist/index.d.ts +2 -2
  163. package/node_modules/@xrkseek/llm-registry/dist/index.d.ts.map +1 -1
  164. package/node_modules/@xrkseek/llm-registry/dist/index.js +1 -1
  165. package/node_modules/@xrkseek/llm-registry/dist/index.js.map +1 -1
  166. package/node_modules/@xrkseek/llm-registry/dist/types.d.ts +29 -0
  167. package/node_modules/@xrkseek/llm-registry/dist/types.d.ts.map +1 -1
  168. package/node_modules/@xrkseek/llm-registry/dist/types.js +21 -0
  169. package/node_modules/@xrkseek/llm-registry/dist/types.js.map +1 -1
  170. package/node_modules/@xrkseek/mcp/README.md +78 -78
  171. package/node_modules/@xrkseek/policy/README.md +18 -18
  172. package/node_modules/@xrkseek/policy/package.json +31 -31
  173. package/node_modules/@xrkseek/preset-harness/README.md +7 -7
  174. package/node_modules/@xrkseek/preset-harness/dist/mods.d.ts +68 -0
  175. package/node_modules/@xrkseek/preset-harness/dist/mods.d.ts.map +1 -0
  176. package/node_modules/@xrkseek/preset-harness/dist/mods.js +510 -0
  177. package/node_modules/@xrkseek/preset-harness/dist/mods.js.map +1 -0
  178. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts +12 -1
  179. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
  180. package/node_modules/@xrkseek/preset-harness/dist/preset.js +73 -26
  181. package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
  182. package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  183. package/node_modules/@xrkseek/preset-harness/package.json +9 -8
  184. package/node_modules/@xrkseek/preset-minimal/README.md +6 -6
  185. package/node_modules/@xrkseek/preset-minimal/dist/preset.d.ts.map +1 -1
  186. package/node_modules/@xrkseek/preset-minimal/dist/preset.js +9 -3
  187. package/node_modules/@xrkseek/preset-minimal/dist/preset.js.map +1 -1
  188. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  189. package/node_modules/@xrkseek/preset-server/README.md +4 -4
  190. package/node_modules/@xrkseek/preset-server/dist/preset.d.ts.map +1 -1
  191. package/node_modules/@xrkseek/preset-server/dist/preset.js +2 -1
  192. package/node_modules/@xrkseek/preset-server/dist/preset.js.map +1 -1
  193. package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
  194. package/node_modules/@xrkseek/protocol/README.md +34 -34
  195. package/node_modules/@xrkseek/protocol/dist/index.d.ts +3 -2
  196. package/node_modules/@xrkseek/protocol/dist/index.d.ts.map +1 -1
  197. package/node_modules/@xrkseek/protocol/dist/index.js +1 -0
  198. package/node_modules/@xrkseek/protocol/dist/index.js.map +1 -1
  199. package/node_modules/@xrkseek/protocol/dist/json-schema.d.ts +12 -0
  200. package/node_modules/@xrkseek/protocol/dist/json-schema.d.ts.map +1 -1
  201. package/node_modules/@xrkseek/protocol/dist/json-schema.js +9 -0
  202. package/node_modules/@xrkseek/protocol/dist/json-schema.js.map +1 -1
  203. package/node_modules/@xrkseek/protocol/dist/json-value.d.ts +25 -0
  204. package/node_modules/@xrkseek/protocol/dist/json-value.d.ts.map +1 -0
  205. package/node_modules/@xrkseek/protocol/dist/json-value.js +181 -0
  206. package/node_modules/@xrkseek/protocol/dist/json-value.js.map +1 -0
  207. package/node_modules/@xrkseek/protocol/dist/session-events.d.ts +21 -1
  208. package/node_modules/@xrkseek/protocol/dist/session-events.d.ts.map +1 -1
  209. package/node_modules/@xrkseek/protocol/dist/session-events.js +1 -0
  210. package/node_modules/@xrkseek/protocol/dist/session-events.js.map +1 -1
  211. package/node_modules/@xrkseek/protocol/dist/validate.d.ts +4 -1
  212. package/node_modules/@xrkseek/protocol/dist/validate.d.ts.map +1 -1
  213. package/node_modules/@xrkseek/protocol/dist/validate.js +28 -2
  214. package/node_modules/@xrkseek/protocol/dist/validate.js.map +1 -1
  215. package/node_modules/@xrkseek/schemastery/lib/index.cjs +597 -597
  216. package/node_modules/@xrkseek/schemastery/lib/index.mjs +597 -597
  217. package/node_modules/@xrkseek/schemastery/lib/types/index.d.ts +203 -203
  218. package/node_modules/@xrkseek/schemastery/src/index.d.ts +203 -203
  219. package/node_modules/@xrkseek/schemastery/src/index.ts +906 -906
  220. package/node_modules/@xrkseek/server-config/package.json +28 -28
  221. package/node_modules/@xrkseek/server-cron/README.md +12 -12
  222. package/node_modules/@xrkseek/server-cron/package.json +26 -26
  223. package/node_modules/@xrkseek/server-face/dist/adapt/history-paginate.d.ts +22 -0
  224. package/node_modules/@xrkseek/server-face/dist/adapt/history-paginate.d.ts.map +1 -1
  225. package/node_modules/@xrkseek/server-face/dist/adapt/history-paginate.js +40 -3
  226. package/node_modules/@xrkseek/server-face/dist/adapt/history-paginate.js.map +1 -1
  227. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.d.ts.map +1 -1
  228. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js +2 -0
  229. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js.map +1 -1
  230. package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.d.ts +1 -0
  231. package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.d.ts.map +1 -1
  232. package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.js +2 -0
  233. package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.js.map +1 -1
  234. package/node_modules/@xrkseek/server-face/dist/adapt/wire-ids.d.ts +5 -0
  235. package/node_modules/@xrkseek/server-face/dist/adapt/wire-ids.d.ts.map +1 -1
  236. package/node_modules/@xrkseek/server-face/dist/adapt/wire-ids.js +7 -0
  237. package/node_modules/@xrkseek/server-face/dist/adapt/wire-ids.js.map +1 -1
  238. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.d.ts +31 -0
  239. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.d.ts.map +1 -0
  240. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.js +71 -0
  241. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.js.map +1 -0
  242. package/node_modules/@xrkseek/server-face/dist/agent-home.d.ts +18 -0
  243. package/node_modules/@xrkseek/server-face/dist/agent-home.d.ts.map +1 -0
  244. package/node_modules/@xrkseek/server-face/dist/agent-home.js +64 -0
  245. package/node_modules/@xrkseek/server-face/dist/agent-home.js.map +1 -0
  246. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.d.ts +41 -2
  247. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.d.ts.map +1 -1
  248. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js +200 -28
  249. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js.map +1 -1
  250. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js +1 -1
  251. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js.map +1 -1
  252. package/node_modules/@xrkseek/server-face/dist/attach-http.d.ts.map +1 -1
  253. package/node_modules/@xrkseek/server-face/dist/attach-http.js +9 -0
  254. package/node_modules/@xrkseek/server-face/dist/attach-http.js.map +1 -1
  255. package/node_modules/@xrkseek/server-face/dist/boss-status-broadcast.d.ts +55 -0
  256. package/node_modules/@xrkseek/server-face/dist/boss-status-broadcast.d.ts.map +1 -0
  257. package/node_modules/@xrkseek/server-face/dist/boss-status-broadcast.js +167 -0
  258. package/node_modules/@xrkseek/server-face/dist/boss-status-broadcast.js.map +1 -0
  259. package/node_modules/@xrkseek/server-face/dist/collab-board.d.ts +12 -0
  260. package/node_modules/@xrkseek/server-face/dist/collab-board.d.ts.map +1 -1
  261. package/node_modules/@xrkseek/server-face/dist/collab-board.js +101 -19
  262. package/node_modules/@xrkseek/server-face/dist/collab-board.js.map +1 -1
  263. package/node_modules/@xrkseek/server-face/dist/context.d.ts +25 -2
  264. package/node_modules/@xrkseek/server-face/dist/context.d.ts.map +1 -1
  265. package/node_modules/@xrkseek/server-face/dist/dispatch.d.ts.map +1 -1
  266. package/node_modules/@xrkseek/server-face/dist/dispatch.js +6 -2
  267. package/node_modules/@xrkseek/server-face/dist/dispatch.js.map +1 -1
  268. package/node_modules/@xrkseek/server-face/dist/face-schema.d.ts.map +1 -1
  269. package/node_modules/@xrkseek/server-face/dist/face-schema.js +2 -1
  270. package/node_modules/@xrkseek/server-face/dist/face-schema.js.map +1 -1
  271. package/node_modules/@xrkseek/server-face/dist/fork-cut.d.ts.map +1 -1
  272. package/node_modules/@xrkseek/server-face/dist/fork-cut.js +15 -3
  273. package/node_modules/@xrkseek/server-face/dist/fork-cut.js.map +1 -1
  274. package/node_modules/@xrkseek/server-face/dist/fork-lineage.d.ts +7 -0
  275. package/node_modules/@xrkseek/server-face/dist/fork-lineage.d.ts.map +1 -1
  276. package/node_modules/@xrkseek/server-face/dist/fork-lineage.js +23 -8
  277. package/node_modules/@xrkseek/server-face/dist/fork-lineage.js.map +1 -1
  278. package/node_modules/@xrkseek/server-face/dist/handlers/band.d.ts +7 -0
  279. package/node_modules/@xrkseek/server-face/dist/handlers/band.d.ts.map +1 -0
  280. package/node_modules/@xrkseek/server-face/dist/handlers/band.js +40 -0
  281. package/node_modules/@xrkseek/server-face/dist/handlers/band.js.map +1 -0
  282. package/node_modules/@xrkseek/server-face/dist/handlers/checkpoint.d.ts.map +1 -1
  283. package/node_modules/@xrkseek/server-face/dist/handlers/checkpoint.js +81 -3
  284. package/node_modules/@xrkseek/server-face/dist/handlers/checkpoint.js.map +1 -1
  285. package/node_modules/@xrkseek/server-face/dist/handlers/remotes.d.ts.map +1 -1
  286. package/node_modules/@xrkseek/server-face/dist/handlers/remotes.js +4 -1
  287. package/node_modules/@xrkseek/server-face/dist/handlers/remotes.js.map +1 -1
  288. package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts +2 -0
  289. package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts.map +1 -1
  290. package/node_modules/@xrkseek/server-face/dist/handlers/session.js +236 -62
  291. package/node_modules/@xrkseek/server-face/dist/handlers/session.js.map +1 -1
  292. package/node_modules/@xrkseek/server-face/dist/handlers/team.d.ts.map +1 -1
  293. package/node_modules/@xrkseek/server-face/dist/handlers/team.js +100 -9
  294. package/node_modules/@xrkseek/server-face/dist/handlers/team.js.map +1 -1
  295. package/node_modules/@xrkseek/server-face/dist/handlers/worktree.d.ts +8 -1
  296. package/node_modules/@xrkseek/server-face/dist/handlers/worktree.d.ts.map +1 -1
  297. package/node_modules/@xrkseek/server-face/dist/handlers/worktree.js +15 -1
  298. package/node_modules/@xrkseek/server-face/dist/handlers/worktree.js.map +1 -1
  299. package/node_modules/@xrkseek/server-face/dist/index.d.ts +5 -1
  300. package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
  301. package/node_modules/@xrkseek/server-face/dist/index.js +5 -1
  302. package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
  303. package/node_modules/@xrkseek/server-face/dist/instruction-authority-fragment.d.ts +19 -0
  304. package/node_modules/@xrkseek/server-face/dist/instruction-authority-fragment.d.ts.map +1 -0
  305. package/node_modules/@xrkseek/server-face/dist/instruction-authority-fragment.js +28 -0
  306. package/node_modules/@xrkseek/server-face/dist/instruction-authority-fragment.js.map +1 -0
  307. package/node_modules/@xrkseek/server-face/dist/log-cut-reset.d.ts +3 -0
  308. package/node_modules/@xrkseek/server-face/dist/log-cut-reset.d.ts.map +1 -0
  309. package/node_modules/@xrkseek/server-face/dist/log-cut-reset.js +22 -0
  310. package/node_modules/@xrkseek/server-face/dist/log-cut-reset.js.map +1 -0
  311. package/node_modules/@xrkseek/server-face/dist/managed-worktree.d.ts +66 -4
  312. package/node_modules/@xrkseek/server-face/dist/managed-worktree.d.ts.map +1 -1
  313. package/node_modules/@xrkseek/server-face/dist/managed-worktree.js +147 -5
  314. package/node_modules/@xrkseek/server-face/dist/managed-worktree.js.map +1 -1
  315. package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts.map +1 -1
  316. package/node_modules/@xrkseek/server-face/dist/model-catalog.js +60 -5
  317. package/node_modules/@xrkseek/server-face/dist/model-catalog.js.map +1 -1
  318. package/node_modules/@xrkseek/server-face/dist/projections/index.d.ts +2 -2
  319. package/node_modules/@xrkseek/server-face/dist/projections/index.d.ts.map +1 -1
  320. package/node_modules/@xrkseek/server-face/dist/projections/index.js +2 -2
  321. package/node_modules/@xrkseek/server-face/dist/projections/index.js.map +1 -1
  322. package/node_modules/@xrkseek/server-face/dist/projections/list-checkpoint-cache.d.ts +50 -4
  323. package/node_modules/@xrkseek/server-face/dist/projections/list-checkpoint-cache.d.ts.map +1 -1
  324. package/node_modules/@xrkseek/server-face/dist/projections/list-checkpoint-cache.js +167 -19
  325. package/node_modules/@xrkseek/server-face/dist/projections/list-checkpoint-cache.js.map +1 -1
  326. package/node_modules/@xrkseek/server-face/dist/projections/snapshot-keys.d.ts +21 -1
  327. package/node_modules/@xrkseek/server-face/dist/projections/snapshot-keys.d.ts.map +1 -1
  328. package/node_modules/@xrkseek/server-face/dist/projections/snapshot-keys.js +21 -1
  329. package/node_modules/@xrkseek/server-face/dist/projections/snapshot-keys.js.map +1 -1
  330. package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.d.ts.map +1 -1
  331. package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.js +58 -0
  332. package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.js.map +1 -1
  333. package/node_modules/@xrkseek/server-face/dist/projections/units/cost-usage.d.ts.map +1 -1
  334. package/node_modules/@xrkseek/server-face/dist/projections/units/cost-usage.js +85 -0
  335. package/node_modules/@xrkseek/server-face/dist/projections/units/cost-usage.js.map +1 -1
  336. package/node_modules/@xrkseek/server-face/dist/projections/units/session-list-metadata.d.ts.map +1 -1
  337. package/node_modules/@xrkseek/server-face/dist/projections/units/session-list-metadata.js +14 -0
  338. package/node_modules/@xrkseek/server-face/dist/projections/units/session-list-metadata.js.map +1 -1
  339. package/node_modules/@xrkseek/server-face/dist/projections/units/title.d.ts.map +1 -1
  340. package/node_modules/@xrkseek/server-face/dist/projections/units/title.js +14 -0
  341. package/node_modules/@xrkseek/server-face/dist/projections/units/title.js.map +1 -1
  342. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.d.ts.map +1 -1
  343. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.js +24 -0
  344. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.js.map +1 -1
  345. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts +4 -2
  346. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
  347. package/node_modules/@xrkseek/server-face/dist/runtime.js +127 -17
  348. package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
  349. package/node_modules/@xrkseek/server-face/dist/seat-identity.d.ts +26 -0
  350. package/node_modules/@xrkseek/server-face/dist/seat-identity.d.ts.map +1 -0
  351. package/node_modules/@xrkseek/server-face/dist/seat-identity.js +137 -0
  352. package/node_modules/@xrkseek/server-face/dist/seat-identity.js.map +1 -0
  353. package/node_modules/@xrkseek/server-face/dist/seat-titles.d.ts +29 -0
  354. package/node_modules/@xrkseek/server-face/dist/seat-titles.d.ts.map +1 -0
  355. package/node_modules/@xrkseek/server-face/dist/seat-titles.js +74 -0
  356. package/node_modules/@xrkseek/server-face/dist/seat-titles.js.map +1 -0
  357. package/node_modules/@xrkseek/server-face/dist/session-capability.d.ts.map +1 -1
  358. package/node_modules/@xrkseek/server-face/dist/session-capability.js +9 -6
  359. package/node_modules/@xrkseek/server-face/dist/session-capability.js.map +1 -1
  360. package/node_modules/@xrkseek/server-face/dist/session-cwd.d.ts.map +1 -1
  361. package/node_modules/@xrkseek/server-face/dist/session-cwd.js +3 -1
  362. package/node_modules/@xrkseek/server-face/dist/session-cwd.js.map +1 -1
  363. package/node_modules/@xrkseek/server-face/dist/session-event-window.d.ts +37 -0
  364. package/node_modules/@xrkseek/server-face/dist/session-event-window.d.ts.map +1 -0
  365. package/node_modules/@xrkseek/server-face/dist/session-event-window.js +88 -0
  366. package/node_modules/@xrkseek/server-face/dist/session-event-window.js.map +1 -0
  367. package/node_modules/@xrkseek/server-face/dist/session-identity-store.d.ts +20 -0
  368. package/node_modules/@xrkseek/server-face/dist/session-identity-store.d.ts.map +1 -0
  369. package/node_modules/@xrkseek/server-face/dist/session-identity-store.js +82 -0
  370. package/node_modules/@xrkseek/server-face/dist/session-identity-store.js.map +1 -0
  371. package/node_modules/@xrkseek/server-face/dist/session-posture.d.ts +1 -1
  372. package/node_modules/@xrkseek/server-face/dist/session-posture.d.ts.map +1 -1
  373. package/node_modules/@xrkseek/server-face/dist/session-posture.js +20 -5
  374. package/node_modules/@xrkseek/server-face/dist/session-posture.js.map +1 -1
  375. package/node_modules/@xrkseek/server-face/dist/session-query-tools.d.ts +1 -0
  376. package/node_modules/@xrkseek/server-face/dist/session-query-tools.d.ts.map +1 -1
  377. package/node_modules/@xrkseek/server-face/dist/session-query-tools.js +172 -25
  378. package/node_modules/@xrkseek/server-face/dist/session-query-tools.js.map +1 -1
  379. package/node_modules/@xrkseek/server-face/dist/session-search.d.ts +20 -2
  380. package/node_modules/@xrkseek/server-face/dist/session-search.d.ts.map +1 -1
  381. package/node_modules/@xrkseek/server-face/dist/session-search.js +125 -19
  382. package/node_modules/@xrkseek/server-face/dist/session-search.js.map +1 -1
  383. package/node_modules/@xrkseek/server-face/dist/session-status.d.ts +1 -1
  384. package/node_modules/@xrkseek/server-face/dist/session-status.d.ts.map +1 -1
  385. package/node_modules/@xrkseek/server-face/dist/session-status.js +143 -21
  386. package/node_modules/@xrkseek/server-face/dist/session-status.js.map +1 -1
  387. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts.map +1 -1
  388. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js +5 -0
  389. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js.map +1 -1
  390. package/node_modules/@xrkseek/server-face/dist/session-tool-copy.d.ts.map +1 -1
  391. package/node_modules/@xrkseek/server-face/dist/session-tool-copy.js +2 -1
  392. package/node_modules/@xrkseek/server-face/dist/session-tool-copy.js.map +1 -1
  393. package/node_modules/@xrkseek/server-face/dist/settings-credentials.d.ts.map +1 -1
  394. package/node_modules/@xrkseek/server-face/dist/settings-credentials.js +10 -2
  395. package/node_modules/@xrkseek/server-face/dist/settings-credentials.js.map +1 -1
  396. package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
  397. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +48 -10
  398. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
  399. package/node_modules/@xrkseek/server-face/dist/skill-documents.d.ts.map +1 -1
  400. package/node_modules/@xrkseek/server-face/dist/skill-documents.js +14 -4
  401. package/node_modules/@xrkseek/server-face/dist/skill-documents.js.map +1 -1
  402. package/node_modules/@xrkseek/server-face/dist/skill-list.d.ts +4 -2
  403. package/node_modules/@xrkseek/server-face/dist/skill-list.d.ts.map +1 -1
  404. package/node_modules/@xrkseek/server-face/dist/skill-list.js +10 -4
  405. package/node_modules/@xrkseek/server-face/dist/skill-list.js.map +1 -1
  406. package/node_modules/@xrkseek/server-face/dist/skill-read.d.ts.map +1 -1
  407. package/node_modules/@xrkseek/server-face/dist/skill-read.js +9 -2
  408. package/node_modules/@xrkseek/server-face/dist/skill-read.js.map +1 -1
  409. package/node_modules/@xrkseek/server-face/dist/skill-source.d.ts +2 -1
  410. package/node_modules/@xrkseek/server-face/dist/skill-source.d.ts.map +1 -1
  411. package/node_modules/@xrkseek/server-face/dist/skill-source.js +12 -2
  412. package/node_modules/@xrkseek/server-face/dist/skill-source.js.map +1 -1
  413. package/node_modules/@xrkseek/server-face/dist/slash.d.ts +10 -1
  414. package/node_modules/@xrkseek/server-face/dist/slash.d.ts.map +1 -1
  415. package/node_modules/@xrkseek/server-face/dist/slash.js +97 -22
  416. package/node_modules/@xrkseek/server-face/dist/slash.js.map +1 -1
  417. package/node_modules/@xrkseek/server-face/dist/status-snapshot-cache.d.ts.map +1 -1
  418. package/node_modules/@xrkseek/server-face/dist/status-snapshot-cache.js +53 -0
  419. package/node_modules/@xrkseek/server-face/dist/status-snapshot-cache.js.map +1 -1
  420. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
  421. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +10 -5
  422. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
  423. package/node_modules/@xrkseek/server-face/dist/types.d.ts +23 -0
  424. package/node_modules/@xrkseek/server-face/dist/types.d.ts.map +1 -1
  425. package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.d.ts +6 -1
  426. package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.d.ts.map +1 -1
  427. package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.js +17 -1
  428. package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.js.map +1 -1
  429. package/node_modules/@xrkseek/server-face/dist/workspace-face.d.ts.map +1 -1
  430. package/node_modules/@xrkseek/server-face/dist/workspace-face.js +19 -14
  431. package/node_modules/@xrkseek/server-face/dist/workspace-face.js.map +1 -1
  432. package/node_modules/@xrkseek/server-face/dist/workspace-member-look.d.ts +22 -0
  433. package/node_modules/@xrkseek/server-face/dist/workspace-member-look.d.ts.map +1 -0
  434. package/node_modules/@xrkseek/server-face/dist/workspace-member-look.js +35 -0
  435. package/node_modules/@xrkseek/server-face/dist/workspace-member-look.js.map +1 -0
  436. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.d.ts +3 -2
  437. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.d.ts.map +1 -1
  438. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.js +74 -57
  439. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.js.map +1 -1
  440. package/node_modules/@xrkseek/server-face/dist/workspace-registry.d.ts +31 -0
  441. package/node_modules/@xrkseek/server-face/dist/workspace-registry.d.ts.map +1 -1
  442. package/node_modules/@xrkseek/server-face/dist/workspace-registry.js +109 -0
  443. package/node_modules/@xrkseek/server-face/dist/workspace-registry.js.map +1 -1
  444. package/node_modules/@xrkseek/server-face/dist/workspace-store.d.ts +2 -0
  445. package/node_modules/@xrkseek/server-face/dist/workspace-store.d.ts.map +1 -1
  446. package/node_modules/@xrkseek/server-face/dist/workspace-store.js +7 -0
  447. package/node_modules/@xrkseek/server-face/dist/workspace-store.js.map +1 -1
  448. package/node_modules/@xrkseek/server-face/package.json +60 -60
  449. package/node_modules/@xrkseek/server-host/dist/agent-cache.d.ts +16 -2
  450. package/node_modules/@xrkseek/server-host/dist/agent-cache.d.ts.map +1 -1
  451. package/node_modules/@xrkseek/server-host/dist/agent-cache.js +84 -36
  452. package/node_modules/@xrkseek/server-host/dist/agent-cache.js.map +1 -1
  453. package/node_modules/@xrkseek/server-host/dist/index.d.ts +37 -6
  454. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  455. package/node_modules/@xrkseek/server-host/dist/index.js +124 -27
  456. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  457. package/node_modules/@xrkseek/server-host/dist/log.d.ts +6 -0
  458. package/node_modules/@xrkseek/server-host/dist/log.d.ts.map +1 -1
  459. package/node_modules/@xrkseek/server-host/dist/sidebar-face-bridge.d.ts.map +1 -1
  460. package/node_modules/@xrkseek/server-host/dist/sidebar-face-bridge.js +17 -2
  461. package/node_modules/@xrkseek/server-host/dist/sidebar-face-bridge.js.map +1 -1
  462. package/node_modules/@xrkseek/server-host/dist/standing-tools.d.ts.map +1 -1
  463. package/node_modules/@xrkseek/server-host/dist/standing-tools.js +3 -3
  464. package/node_modules/@xrkseek/server-host/dist/standing-tools.js.map +1 -1
  465. package/node_modules/@xrkseek/server-host/package.json +75 -75
  466. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-types.d.ts +5 -0
  467. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-types.d.ts.map +1 -1
  468. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-tool-pre.d.ts +1 -1
  469. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-tool-pre.d.ts.map +1 -1
  470. package/node_modules/@xrkseek/server-http/dist/dsh-compat/generic-plugin-http.d.ts.map +1 -1
  471. package/node_modules/@xrkseek/server-http/dist/dsh-compat/generic-plugin-http.js +41 -6
  472. package/node_modules/@xrkseek/server-http/dist/dsh-compat/generic-plugin-http.js.map +1 -1
  473. package/node_modules/@xrkseek/server-http/dist/dsh-compat/genui-browser-runtime.js +188 -188
  474. package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.d.ts +1 -1
  475. package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.d.ts.map +1 -1
  476. package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.js +1 -1
  477. package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.js.map +1 -1
  478. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access-auth.d.ts.map +1 -1
  479. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access-auth.js +292 -24
  480. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access-auth.js.map +1 -1
  481. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access-gate.d.ts.map +1 -1
  482. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access-gate.js +12 -1
  483. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access-gate.js.map +1 -1
  484. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access.d.ts +16 -1
  485. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access.d.ts.map +1 -1
  486. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access.js +47 -2
  487. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access.js.map +1 -1
  488. package/node_modules/@xrkseek/server-http/dist/dsh-compat/skin-center.d.ts +1 -1
  489. package/node_modules/@xrkseek/server-http/dist/dsh-compat/token-usage-stats-dash.js +53 -53
  490. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/mobile-gate-kit.d.ts +9 -4
  491. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/mobile-gate-kit.d.ts.map +1 -1
  492. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/mobile-gate-kit.js +39 -20
  493. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/mobile-gate-kit.js.map +1 -1
  494. package/node_modules/@xrkseek/server-http/dist/index.d.ts +2 -1
  495. package/node_modules/@xrkseek/server-http/dist/index.d.ts.map +1 -1
  496. package/node_modules/@xrkseek/server-http/dist/index.js +2 -1
  497. package/node_modules/@xrkseek/server-http/dist/index.js.map +1 -1
  498. package/node_modules/@xrkseek/server-http/dist/sunflower-free/ensure.d.ts +11 -0
  499. package/node_modules/@xrkseek/server-http/dist/sunflower-free/ensure.d.ts.map +1 -0
  500. package/node_modules/@xrkseek/server-http/dist/sunflower-free/ensure.js +85 -0
  501. package/node_modules/@xrkseek/server-http/dist/sunflower-free/ensure.js.map +1 -0
  502. package/node_modules/@xrkseek/server-http/package.json +72 -72
  503. package/node_modules/@xrkseek/server-loader/dist/load.d.ts.map +1 -1
  504. package/node_modules/@xrkseek/server-loader/dist/load.js +132 -0
  505. package/node_modules/@xrkseek/server-loader/dist/load.js.map +1 -1
  506. package/node_modules/@xrkseek/session-projection/README.md +26 -26
  507. package/node_modules/@xrkseek/session-projection/dist/index.d.ts +31 -2
  508. package/node_modules/@xrkseek/session-projection/dist/index.d.ts.map +1 -1
  509. package/node_modules/@xrkseek/session-projection/dist/index.js +135 -19
  510. package/node_modules/@xrkseek/session-projection/dist/index.js.map +1 -1
  511. package/node_modules/@xrkseek/session-telemetry/README.md +11 -11
  512. package/node_modules/@xrkseek/session-telemetry/dist/index.d.ts +1 -0
  513. package/node_modules/@xrkseek/session-telemetry/dist/index.d.ts.map +1 -1
  514. package/node_modules/@xrkseek/session-telemetry/dist/index.js +1 -0
  515. package/node_modules/@xrkseek/session-telemetry/dist/index.js.map +1 -1
  516. package/node_modules/@xrkseek/session-telemetry/dist/redact.d.ts +14 -0
  517. package/node_modules/@xrkseek/session-telemetry/dist/redact.d.ts.map +1 -0
  518. package/node_modules/@xrkseek/session-telemetry/dist/redact.js +58 -0
  519. package/node_modules/@xrkseek/session-telemetry/dist/redact.js.map +1 -0
  520. package/node_modules/@xrkseek/session-telemetry/dist/wrap-store.d.ts +7 -0
  521. package/node_modules/@xrkseek/session-telemetry/dist/wrap-store.d.ts.map +1 -1
  522. package/node_modules/@xrkseek/session-telemetry/dist/wrap-store.js +43 -12
  523. package/node_modules/@xrkseek/session-telemetry/dist/wrap-store.js.map +1 -1
  524. package/node_modules/@xrkseek/session-telemetry/package.json +27 -27
  525. package/node_modules/@xrkseek/workspace/dist/durable-inject.d.ts +13 -0
  526. package/node_modules/@xrkseek/workspace/dist/durable-inject.d.ts.map +1 -1
  527. package/node_modules/@xrkseek/workspace/dist/durable-inject.js +40 -4
  528. package/node_modules/@xrkseek/workspace/dist/durable-inject.js.map +1 -1
  529. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.d.ts +10 -9
  530. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.d.ts.map +1 -1
  531. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js +67 -19
  532. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js.map +1 -1
  533. package/node_modules/@xrkseek/workspace/dist/index.d.ts +19 -20
  534. package/node_modules/@xrkseek/workspace/dist/index.d.ts.map +1 -1
  535. package/node_modules/@xrkseek/workspace/dist/index.js +43 -20
  536. package/node_modules/@xrkseek/workspace/dist/index.js.map +1 -1
  537. package/node_modules/@xrkseek/workspace/dist/inject-fingerprint.d.ts +2 -0
  538. package/node_modules/@xrkseek/workspace/dist/inject-fingerprint.d.ts.map +1 -1
  539. package/node_modules/@xrkseek/workspace/dist/inject-fingerprint.js +23 -12
  540. package/node_modules/@xrkseek/workspace/dist/inject-fingerprint.js.map +1 -1
  541. package/node_modules/@xrkseek/workspace/dist/inject-sources.d.ts +7 -4
  542. package/node_modules/@xrkseek/workspace/dist/inject-sources.d.ts.map +1 -1
  543. package/node_modules/@xrkseek/workspace/dist/inject-sources.js +10 -0
  544. package/node_modules/@xrkseek/workspace/dist/inject-sources.js.map +1 -1
  545. package/node_modules/@xrkseek/workspace/dist/instruction-authority.d.ts +27 -0
  546. package/node_modules/@xrkseek/workspace/dist/instruction-authority.d.ts.map +1 -0
  547. package/node_modules/@xrkseek/workspace/dist/instruction-authority.js +78 -0
  548. package/node_modules/@xrkseek/workspace/dist/instruction-authority.js.map +1 -0
  549. package/node_modules/@xrkseek/workspace/dist/skill-dirs.d.ts +7 -0
  550. package/node_modules/@xrkseek/workspace/dist/skill-dirs.d.ts.map +1 -1
  551. package/node_modules/@xrkseek/workspace/dist/skill-dirs.js +4 -2
  552. package/node_modules/@xrkseek/workspace/dist/skill-dirs.js.map +1 -1
  553. package/node_modules/@xrkseek/workspace/dist/skill-tools.js +1 -1
  554. package/node_modules/@xrkseek/workspace/dist/skill-tools.js.map +1 -1
  555. package/node_modules/@xrkseek/workspace/dist/skills.d.ts +13 -1
  556. package/node_modules/@xrkseek/workspace/dist/skills.d.ts.map +1 -1
  557. package/node_modules/@xrkseek/workspace/dist/skills.js +45 -5
  558. package/node_modules/@xrkseek/workspace/dist/skills.js.map +1 -1
  559. package/node_modules/@xrkseek/workspace/dist/standing-skill-dirs.d.ts +26 -0
  560. package/node_modules/@xrkseek/workspace/dist/standing-skill-dirs.d.ts.map +1 -0
  561. package/node_modules/@xrkseek/workspace/dist/standing-skill-dirs.js +80 -0
  562. package/node_modules/@xrkseek/workspace/dist/standing-skill-dirs.js.map +1 -0
  563. package/node_modules/@xrkseek/workspace/dist/workspace-anchor.d.ts +7 -1
  564. package/node_modules/@xrkseek/workspace/dist/workspace-anchor.d.ts.map +1 -1
  565. package/node_modules/@xrkseek/workspace/dist/workspace-anchor.js +21 -1
  566. package/node_modules/@xrkseek/workspace/dist/workspace-anchor.js.map +1 -1
  567. package/node_modules/@xrkseek/workspace/package.json +28 -28
  568. package/node_modules/@xrkseek/xrk-agent/lib/index.js +1 -793
  569. package/node_modules/@xrkseek/xrk-agent/lib/invariant.js +1 -23
  570. package/node_modules/@xrkseek/xrk-attachment/lib/index.js +1 -1
  571. package/node_modules/@xrkseek/xrk-attachment/lib/invariant.js +1 -0
  572. package/node_modules/@xrkseek/xrk-attachment/lib/types/brand.js +10 -0
  573. package/node_modules/@xrkseek/xrk-attachment/lib/types/error.js +48 -0
  574. package/node_modules/@xrkseek/xrk-attachment/lib/types/index.js +42 -0
  575. package/node_modules/@xrkseek/xrk-attachment/lib/types/invariant.js +16 -0
  576. package/node_modules/@xrkseek/xrk-attachment/lib/types/types.d.ts +6 -0
  577. package/node_modules/@xrkseek/xrk-attachment/lib/types/types.js +3 -0
  578. package/node_modules/@xrkseek/xrk-attachment/package.json +1 -0
  579. package/node_modules/@xrkseek/xrk-brand/lib/index.js +1 -1
  580. package/node_modules/@xrkseek/xrk-brand/lib/invariant.js +1 -0
  581. package/node_modules/@xrkseek/xrk-brand/lib/types/index.js +24 -0
  582. package/node_modules/@xrkseek/xrk-brand/lib/types/invariant.js +22 -0
  583. package/node_modules/@xrkseek/xrk-brand/package.json +1 -0
  584. package/node_modules/@xrkseek/xrk-commands/lib/index.js +1 -1
  585. package/node_modules/@xrkseek/xrk-commands/lib/invariant.js +1 -0
  586. package/node_modules/@xrkseek/xrk-file-reference-local/README.md +46 -46
  587. package/node_modules/@xrkseek/xrk-file-reference-local/README.zh.md +46 -46
  588. package/node_modules/@xrkseek/xrk-file-reference-local/package.json +30 -30
  589. package/node_modules/@xrkseek/xrk-invariants/lib/index.js +1 -1
  590. package/node_modules/@xrkseek/xrk-invariants/lib/invariant.js +1 -0
  591. package/node_modules/@xrkseek/xrk-invariants/lib/types/index.js +148 -0
  592. package/node_modules/@xrkseek/xrk-invariants/lib/types/invariant.js +22 -0
  593. package/node_modules/@xrkseek/xrk-invariants/package.json +1 -0
  594. package/node_modules/@xrkseek/xrk-llm/lib/index.js +1 -1
  595. package/node_modules/@xrkseek/xrk-llm/lib/invariant.js +1 -0
  596. package/node_modules/@xrkseek/xrk-llm/lib/types/index.js +4 -0
  597. package/node_modules/@xrkseek/xrk-llm/lib/types/types.d.ts +11 -0
  598. package/node_modules/@xrkseek/xrk-permission-presets/lib/index.js +1 -1
  599. package/node_modules/@xrkseek/xrk-permission-presets/lib/invariant.js +1 -0
  600. package/node_modules/@xrkseek/xrk-scope/lib/index.js +1 -0
  601. package/node_modules/@xrkseek/xrk-scope/lib/types/index.d.ts +129 -0
  602. package/node_modules/@xrkseek/xrk-scope/lib/types/index.js +243 -0
  603. package/node_modules/@xrkseek/xrk-scope/package.json +34 -0
  604. package/node_modules/@xrkseek/xrk-session/lib/index.js +1 -1
  605. package/node_modules/@xrkseek/xrk-session/lib/invariant.js +1 -0
  606. package/node_modules/@xrkseek/xrk-session-projection/lib/index.js +1 -1
  607. package/node_modules/@xrkseek/xrk-session-projection/lib/invariant.js +1 -0
  608. package/node_modules/@xrkseek/xrk-session-reference/README.md +50 -50
  609. package/node_modules/@xrkseek/xrk-session-reference/README.zh.md +50 -50
  610. package/node_modules/@xrkseek/xrk-session-reference/dist/prepare-face.js +13 -13
  611. package/node_modules/@xrkseek/xrk-session-reference/dist/spill.js +2 -2
  612. package/node_modules/@xrkseek/xrk-session-reference/package.json +56 -56
  613. package/node_modules/@xrkseek/xrk-settings/lib/index.js +1 -638
  614. package/node_modules/@xrkseek/xrk-settings/lib/invariant.js +1 -67
  615. package/node_modules/@xrkseek/xrk-system-prompt/package.json +15 -15
  616. package/node_modules/@xrkseek/xrk-system-prompt/src/index.ts +144 -144
  617. package/node_modules/@xrkseek/xrk-token-meter/README.i18n.yaml +6 -0
  618. package/node_modules/@xrkseek/xrk-token-meter/README.md +68 -0
  619. package/node_modules/@xrkseek/xrk-token-meter/README.zh.md +68 -0
  620. package/node_modules/@xrkseek/xrk-token-meter/lib/index.js +1 -0
  621. package/node_modules/@xrkseek/xrk-token-meter/lib/invariant.js +1 -0
  622. package/node_modules/@xrkseek/xrk-token-meter/lib/types/breakdown-projection.d.ts +29 -0
  623. package/node_modules/@xrkseek/xrk-token-meter/lib/types/breakdown-projection.js +56 -0
  624. package/node_modules/@xrkseek/xrk-token-meter/lib/types/client.d.ts +9 -0
  625. package/node_modules/@xrkseek/xrk-token-meter/lib/types/client.js +7 -0
  626. package/node_modules/@xrkseek/xrk-token-meter/lib/types/estimate.d.ts +42 -0
  627. package/node_modules/@xrkseek/xrk-token-meter/lib/types/estimate.js +79 -0
  628. package/node_modules/@xrkseek/xrk-token-meter/lib/types/index.d.ts +62 -0
  629. package/node_modules/@xrkseek/xrk-token-meter/lib/types/index.js +250 -0
  630. package/node_modules/@xrkseek/xrk-token-meter/lib/types/invariant.d.ts +16 -0
  631. package/node_modules/@xrkseek/xrk-token-meter/lib/types/invariant.js +30 -0
  632. package/node_modules/@xrkseek/xrk-token-meter/lib/types/projection.d.ts +74 -0
  633. package/node_modules/@xrkseek/xrk-token-meter/lib/types/projection.js +7 -0
  634. package/node_modules/@xrkseek/xrk-token-meter/lib/types/surface-fold.d.ts +38 -0
  635. package/node_modules/@xrkseek/xrk-token-meter/lib/types/surface-fold.js +47 -0
  636. package/node_modules/@xrkseek/xrk-token-meter/lib/types/surface-projection.d.ts +59 -0
  637. package/node_modules/@xrkseek/xrk-token-meter/lib/types/surface-projection.js +66 -0
  638. package/node_modules/@xrkseek/xrk-token-meter/lib/types/turn-usage.d.ts +33 -0
  639. package/node_modules/@xrkseek/xrk-token-meter/lib/types/turn-usage.js +247 -0
  640. package/node_modules/@xrkseek/xrk-token-meter/lib/types/types.d.ts +44 -0
  641. package/node_modules/@xrkseek/xrk-token-meter/lib/types/types.js +7 -0
  642. package/node_modules/@xrkseek/xrk-token-meter/lib/types/usage-projection.d.ts +64 -0
  643. package/node_modules/@xrkseek/xrk-token-meter/lib/types/usage-projection.js +161 -0
  644. package/node_modules/@xrkseek/xrk-token-meter/package.json +57 -0
  645. package/node_modules/@xrkseek/xrk-tools/lib/index.js +1 -1
  646. package/node_modules/@xrkseek/xrk-tools/lib/invariant.js +1 -1
  647. package/node_modules/@xrkseek/xrk-tools/src/presentation.ts +39 -39
  648. package/node_modules/@xrkseek/xrk-typert-protocol/lib/index.js +1 -1
  649. package/node_modules/@xrkseek/xrk-typert-protocol/lib/invariant.js +1 -0
  650. package/node_modules/@xrkseek/xrk-workflow/README.md +73 -73
  651. package/node_modules/@xrkseek/xrk-workflow/README.zh.md +72 -72
  652. package/node_modules/@xrkseek/xrk-workflow/lib/types/index.js +118 -118
  653. package/package.json +7 -1
  654. package/node_modules/@xrkseek/llm/dist/reasoning-effort.d.ts +0 -14
  655. package/node_modules/@xrkseek/llm/dist/reasoning-effort.d.ts.map +0 -1
  656. package/node_modules/@xrkseek/llm/dist/reasoning-effort.js +0 -21
  657. package/node_modules/@xrkseek/llm/dist/reasoning-effort.js.map +0 -1
  658. package/node_modules/@xrkseek/server-face/dist/index.d.mts +0 -3734
  659. package/node_modules/@xrkseek/server-face/dist/index.d.mts.map +0 -1
  660. package/node_modules/@xrkseek/server-face/dist/index.mjs +0 -22085
  661. package/node_modules/@xrkseek/server-face/dist/index.mjs.map +0 -1
  662. package/node_modules/@xrkseek/server-face/dist/model-reasoning.d.ts +0 -51
  663. package/node_modules/@xrkseek/server-face/dist/model-reasoning.d.ts.map +0 -1
  664. package/node_modules/@xrkseek/server-face/dist/model-reasoning.js +0 -104
  665. package/node_modules/@xrkseek/server-face/dist/model-reasoning.js.map +0 -1
  666. package/node_modules/@xrkseek/server-host/dist/sidebar-pty-agent.d.ts +0 -2
  667. package/node_modules/@xrkseek/server-host/dist/sidebar-pty-agent.d.ts.map +0 -1
  668. package/node_modules/@xrkseek/server-host/dist/sidebar-pty-agent.js +0 -98
  669. package/node_modules/@xrkseek/server-host/dist/sidebar-pty-agent.js.map +0 -1
  670. package/node_modules/@xrkseek/server-host/dist/sidebar-pty-worker.d.ts +0 -18
  671. package/node_modules/@xrkseek/server-host/dist/sidebar-pty-worker.d.ts.map +0 -1
  672. package/node_modules/@xrkseek/server-host/dist/sidebar-pty-worker.js +0 -141
  673. package/node_modules/@xrkseek/server-host/dist/sidebar-pty-worker.js.map +0 -1
  674. package/node_modules/@xrkseek/server-host/dist/win-fd-inherit.d.ts +0 -30
  675. package/node_modules/@xrkseek/server-host/dist/win-fd-inherit.d.ts.map +0 -1
  676. package/node_modules/@xrkseek/server-host/dist/win-fd-inherit.js +0 -96
  677. package/node_modules/@xrkseek/server-host/dist/win-fd-inherit.js.map +0 -1
@@ -16,33 +16,33 @@ export const DEFAULT_POWERSHELL_TIMEOUT_MS = 25_000;
16
16
  * mangles every CJK `Name` when decoded as UTF-8. The prelude pins both streams
17
17
  * to UTF-8 so the JSON payload survives round-trip.
18
18
  */
19
- const PS_PRELUDE = `
20
- $ErrorActionPreference = 'Stop'
21
- try { [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 } catch {}
22
- try { [Console]::ErrorEncoding = [System.Text.Encoding]::UTF8 } catch {}
23
- Add-Type -AssemblyName UIAutomationClient
24
- Add-Type -AssemblyName UIAutomationTypes
25
- function XrkSafeInt {
26
- param([double]$Value)
27
- if ([double]::IsNaN($Value) -or [double]::IsInfinity($Value)) { return $null }
28
- if ($Value -lt [int]::MinValue -or $Value -gt [int]::MaxValue) { return $null }
29
- return [int][Math]::Round($Value, [System.MidpointRounding]::AwayFromZero)
30
- }
31
- function XrkTopWindows {
32
- $cond = New-Object System.Windows.Automation.PropertyCondition(
33
- [System.Windows.Automation.AutomationElement]::ControlTypeProperty,
34
- [System.Windows.Automation.ControlType]::Window)
35
- return [System.Windows.Automation.AutomationElement]::RootElement.FindAll(
36
- [System.Windows.Automation.TreeScope]::Children, $cond)
37
- }
38
- function XrkProcName([int]$targetPid) {
39
- try { return (Get-Process -Id $targetPid -ErrorAction SilentlyContinue).ProcessName } catch { return '' }
40
- }
41
- function XrkMatch([string]$hay, [string]$needle) {
42
- if ([string]::IsNullOrWhiteSpace($needle)) { return $true }
43
- if ([string]::IsNullOrEmpty($hay)) { return $false }
44
- return ($hay.IndexOf($needle, [System.StringComparison]::OrdinalIgnoreCase) -ge 0)
45
- }
19
+ const PS_PRELUDE = `
20
+ $ErrorActionPreference = 'Stop'
21
+ try { [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 } catch {}
22
+ try { [Console]::ErrorEncoding = [System.Text.Encoding]::UTF8 } catch {}
23
+ Add-Type -AssemblyName UIAutomationClient
24
+ Add-Type -AssemblyName UIAutomationTypes
25
+ function XrkSafeInt {
26
+ param([double]$Value)
27
+ if ([double]::IsNaN($Value) -or [double]::IsInfinity($Value)) { return $null }
28
+ if ($Value -lt [int]::MinValue -or $Value -gt [int]::MaxValue) { return $null }
29
+ return [int][Math]::Round($Value, [System.MidpointRounding]::AwayFromZero)
30
+ }
31
+ function XrkTopWindows {
32
+ $cond = New-Object System.Windows.Automation.PropertyCondition(
33
+ [System.Windows.Automation.AutomationElement]::ControlTypeProperty,
34
+ [System.Windows.Automation.ControlType]::Window)
35
+ return [System.Windows.Automation.AutomationElement]::RootElement.FindAll(
36
+ [System.Windows.Automation.TreeScope]::Children, $cond)
37
+ }
38
+ function XrkProcName([int]$targetPid) {
39
+ try { return (Get-Process -Id $targetPid -ErrorAction SilentlyContinue).ProcessName } catch { return '' }
40
+ }
41
+ function XrkMatch([string]$hay, [string]$needle) {
42
+ if ([string]::IsNullOrWhiteSpace($needle)) { return $true }
43
+ if ([string]::IsNullOrEmpty($hay)) { return $false }
44
+ return ($hay.IndexOf($needle, [System.StringComparison]::OrdinalIgnoreCase) -ge 0)
45
+ }
46
46
  `;
47
47
  /**
48
48
  * `powershell.exe` is resolvable only when the parent process inherited the
@@ -133,270 +133,270 @@ export function captureScript(options = {}) {
133
133
  const keepOffscreen = options.includeOffscreen ? "$true" : "$false";
134
134
  const includeShot = options.includeScreenshot ? "$true" : "$false";
135
135
  const annotateSom = options.annotateSom ? "$true" : "$false";
136
- return `${PS_PRELUDE}
137
- $appFilter = ${appLit}
138
- $max = ${max}
139
- $keepOffscreen = ${keepOffscreen}
140
- $includeScreenshot = ${includeShot}
141
- $annotateSom = ${annotateSom}
142
- $maxDepth = 60
143
- # Cross-process UIA calls are expensive; bound the walk so a giant browser tree
144
- # cannot outrun the PowerShell timeout.
145
- $visitCap = [Math]::Max(300, $max * 12 + 200)
146
- $walker = [System.Windows.Automation.TreeWalker]::ControlViewWalker
147
-
148
- $focusedWin = $null
149
- try {
150
- $fe = [System.Windows.Automation.AutomationElement]::FocusedElement
151
- $cur = $fe
152
- while ($cur -and $cur.Current.ControlType -ne [System.Windows.Automation.ControlType]::Window) {
153
- $p = $walker.GetParent($cur)
154
- if (-not $p) { break }
155
- $cur = $p
156
- }
157
- if ($cur) { $focusedWin = $cur }
158
- } catch {}
159
-
160
- $all = XrkTopWindows
161
- $win = $null
162
- $byProc = $null
163
- $byTitle = $null
164
- $candidates = New-Object System.Collections.Generic.List[string]
165
- foreach ($w in $all) {
166
- $t = ''
167
- try { $t = $w.Current.Name } catch {}
168
- $pn = XrkProcName $w.Current.ProcessId
169
- $cn = ''
170
- try { $cn = $w.Current.ClassName } catch {}
171
- if (-not [string]::IsNullOrWhiteSpace($t)) { $candidates.Add($t + ' [' + $pn + ']') }
172
- if ($appFilter -eq '') {
173
- if (-not $win -and $focusedWin -and $w.Current.NativeWindowHandle -eq $focusedWin.Current.NativeWindowHandle) {
174
- $win = $w
175
- } elseif (-not $win -and -not [string]::IsNullOrWhiteSpace($t)) {
176
- $win = $w
177
- }
178
- continue
179
- }
180
- # A process/class hit beats a title that merely mentions the app (a browser tab
181
- # titled "...QQ..." must not shadow the real QQ window).
182
- if (-not $byProc -and ((XrkMatch $pn $appFilter) -or (XrkMatch $cn $appFilter))) { $byProc = $w }
183
- if (-not $byTitle -and (XrkMatch $t $appFilter)) { $byTitle = $w }
184
- }
185
- if ($appFilter -ne '' -and -not $win) {
186
- if ($focusedWin) {
187
- $ft = ''
188
- try { $ft = $focusedWin.Current.Name } catch {}
189
- $fpn = XrkProcName $focusedWin.Current.ProcessId
190
- if ((XrkMatch $fpn $appFilter) -or (XrkMatch $ft $appFilter)) { $win = $focusedWin }
191
- }
192
- if (-not $win) { $win = $byProc }
193
- if (-not $win) { $win = $byTitle }
194
- }
195
- if (-not $win) {
196
- @{ error = 'app-not-found'; app = ''; windowTitle = ''; elements = @(); candidates = $candidates } | ConvertTo-Json -Depth 6 -Compress
197
- return
198
- }
199
-
200
- $title = ''
201
- try { $title = $win.Current.Name } catch {}
202
- $targetPid = $win.Current.ProcessId
203
- $appLabel = XrkProcName $targetPid
204
- if ([string]::IsNullOrWhiteSpace($appLabel)) { $appLabel = $title }
205
-
206
- $elements = New-Object System.Collections.Generic.List[object]
207
- $seen = New-Object System.Collections.Generic.HashSet[string]
208
- $queue = New-Object System.Collections.Generic.Queue[object]
209
- $queue.Enqueue(@{ el = $win; d = 0 })
210
- $idx = 0
211
- $visited = 0
212
- $dropped = 0
213
- $exhausted = $true
214
- while ($queue.Count -gt 0 -and $idx -lt $max -and $visited -lt $visitCap) {
215
- $item = $queue.Dequeue()
216
- $el = $item.el
217
- $depth = $item.d
218
- $visited++
219
- $rid = ''
220
- try { $rid = ($el.GetRuntimeId() -join ',') } catch {}
221
- if ($rid -ne '' -and -not $seen.Add($rid)) { continue }
222
- $ct = ''
223
- try { $ct = $el.Current.ControlType.ProgrammaticName } catch {}
224
- $name = ''
225
- try { $name = $el.Current.Name } catch {}
226
- # Always expand (bounded by depth): gating expansion on $depth -gt 0 meant the
227
- # root window never yielded children and every capture came back empty.
228
- if ($depth -lt $maxDepth) {
229
- try {
230
- $child = $walker.GetFirstChild($el)
231
- $guard = 0
232
- while ($child -and $guard -lt 500 -and ($visited + $guard) -lt $visitCap) {
233
- $queue.Enqueue(@{ el = $child; d = ($depth + 1) })
234
- $guard++
235
- $child = $walker.GetNextSibling($child)
236
- }
237
- } catch { $dropped++ }
238
- }
239
- try {
240
- if ($el.Current.ProcessId -ne $targetPid) { continue }
241
- $role = ($ct -replace '^ControlType\\.','')
242
- if ($depth -eq 0) { continue }
243
- if (($role -eq 'Window' -or $role -eq 'Pane') -and [string]::IsNullOrWhiteSpace($name)) { continue }
244
- $r = $el.Current.BoundingRectangle
245
- $x = XrkSafeInt $r.X
246
- $y = XrkSafeInt $r.Y
247
- $wd = XrkSafeInt $r.Width
248
- $ht = XrkSafeInt $r.Height
249
- $offscreen = ($null -eq $x -or $null -eq $y -or $null -eq $wd -or $null -eq $ht -or $wd -le 0 -or $ht -le 0)
250
- if ($offscreen -and -not $keepOffscreen) { continue }
251
- if ([string]::IsNullOrWhiteSpace($name) -and [string]::IsNullOrWhiteSpace($role)) { continue }
252
- $idx++
253
- $display = $name
254
- if ([string]::IsNullOrWhiteSpace($display)) { $display = $ct }
255
- $elements.Add([pscustomobject]@{
256
- index = $idx
257
- role = $role
258
- name = $display
259
- x = $x; y = $y; width = $wd; height = $ht
260
- runtimeId = $rid
261
- })
262
- } catch { $dropped++ }
263
- }
264
- if ($queue.Count -gt 0 -and $visited -ge $visitCap) { $exhausted = $false }
265
-
266
- $screenshotBase64 = ''
267
- $screenshotError = ''
268
- if ($includeScreenshot) {
269
- try {
270
- Add-Type -AssemblyName System.Drawing
271
- $br = $win.Current.BoundingRectangle
272
- $sx = XrkSafeInt $br.X
273
- $sy = XrkSafeInt $br.Y
274
- $sw = XrkSafeInt $br.Width
275
- $sh = XrkSafeInt $br.Height
276
- if ($null -eq $sx -or $null -eq $sy -or $null -eq $sw -or $null -eq $sh -or $sw -le 0 -or $sh -le 0) {
277
- $screenshotError = 'window has no on-screen bounds for screenshot'
278
- } else {
279
- $maxW = 1280; $maxH = 720
280
- $scale = [Math]::Min(1.0, [Math]::Min(($maxW / [double]$sw), ($maxH / [double]$sh)))
281
- $dw = [Math]::Max(1, [int][Math]::Round($sw * $scale))
282
- $dh = [Math]::Max(1, [int][Math]::Round($sh * $scale))
283
- $src = New-Object System.Drawing.Bitmap $sw, $sh
284
- $gs = [System.Drawing.Graphics]::FromImage($src)
285
- $gs.CopyFromScreen($sx, $sy, 0, 0, (New-Object System.Drawing.Size($sw, $sh)))
286
- $gs.Dispose()
287
- $bmp = $src
288
- if ($scale -lt 1.0) {
289
- $bmp = New-Object System.Drawing.Bitmap $dw, $dh
290
- $g = [System.Drawing.Graphics]::FromImage($bmp)
291
- $g.DrawImage($src, 0, 0, $dw, $dh)
292
- $g.Dispose()
293
- $src.Dispose()
294
- }
295
- if ($annotateSom) {
296
- $g2 = [System.Drawing.Graphics]::FromImage($bmp)
297
- $font = New-Object System.Drawing.Font 'Consolas', 10, ([System.Drawing.FontStyle]::Bold)
298
- $fill = New-Object System.Drawing.SolidBrush ([System.Drawing.Color]::FromArgb(220, 255, 220, 0))
299
- $ink = New-Object System.Drawing.SolidBrush ([System.Drawing.Color]::Black)
300
- foreach ($e in $elements) {
301
- if ($null -eq $e.x -or $null -eq $e.y) { continue }
302
- $lx = [int][Math]::Round(($e.x - $sx) * $scale)
303
- $ly = [int][Math]::Round(($e.y - $sy) * $scale)
304
- if ($lx -lt 0 -or $ly -lt 0 -or $lx -gt $dw -or $ly -gt $dh) { continue }
305
- $label = [string]$e.index
306
- $g2.FillRectangle($fill, $lx, $ly, 18, 14)
307
- $g2.DrawString($label, $font, $ink, $lx, $ly)
308
- }
309
- $g2.Dispose(); $font.Dispose(); $fill.Dispose(); $ink.Dispose()
310
- }
311
- $ms = New-Object System.IO.MemoryStream
312
- $bmp.Save($ms, [System.Drawing.Imaging.ImageFormat]::Png)
313
- $screenshotBase64 = [Convert]::ToBase64String($ms.ToArray())
314
- $ms.Dispose(); $bmp.Dispose()
315
- }
316
- } catch {
317
- $screenshotError = $_.Exception.Message
318
- }
319
- }
320
-
321
- @{
322
- app = $appLabel
323
- windowTitle = $title
324
- elements = $elements
325
- visited = $visited
326
- dropped = $dropped
327
- exhausted = $exhausted
328
- screenshotBase64 = $screenshotBase64
329
- screenshotError = $screenshotError
330
- } | ConvertTo-Json -Depth 6 -Compress
136
+ return `${PS_PRELUDE}
137
+ $appFilter = ${appLit}
138
+ $max = ${max}
139
+ $keepOffscreen = ${keepOffscreen}
140
+ $includeScreenshot = ${includeShot}
141
+ $annotateSom = ${annotateSom}
142
+ $maxDepth = 60
143
+ # Cross-process UIA calls are expensive; bound the walk so a giant browser tree
144
+ # cannot outrun the PowerShell timeout.
145
+ $visitCap = [Math]::Max(300, $max * 12 + 200)
146
+ $walker = [System.Windows.Automation.TreeWalker]::ControlViewWalker
147
+
148
+ $focusedWin = $null
149
+ try {
150
+ $fe = [System.Windows.Automation.AutomationElement]::FocusedElement
151
+ $cur = $fe
152
+ while ($cur -and $cur.Current.ControlType -ne [System.Windows.Automation.ControlType]::Window) {
153
+ $p = $walker.GetParent($cur)
154
+ if (-not $p) { break }
155
+ $cur = $p
156
+ }
157
+ if ($cur) { $focusedWin = $cur }
158
+ } catch {}
159
+
160
+ $all = XrkTopWindows
161
+ $win = $null
162
+ $byProc = $null
163
+ $byTitle = $null
164
+ $candidates = New-Object System.Collections.Generic.List[string]
165
+ foreach ($w in $all) {
166
+ $t = ''
167
+ try { $t = $w.Current.Name } catch {}
168
+ $pn = XrkProcName $w.Current.ProcessId
169
+ $cn = ''
170
+ try { $cn = $w.Current.ClassName } catch {}
171
+ if (-not [string]::IsNullOrWhiteSpace($t)) { $candidates.Add($t + ' [' + $pn + ']') }
172
+ if ($appFilter -eq '') {
173
+ if (-not $win -and $focusedWin -and $w.Current.NativeWindowHandle -eq $focusedWin.Current.NativeWindowHandle) {
174
+ $win = $w
175
+ } elseif (-not $win -and -not [string]::IsNullOrWhiteSpace($t)) {
176
+ $win = $w
177
+ }
178
+ continue
179
+ }
180
+ # A process/class hit beats a title that merely mentions the app (a browser tab
181
+ # titled "...QQ..." must not shadow the real QQ window).
182
+ if (-not $byProc -and ((XrkMatch $pn $appFilter) -or (XrkMatch $cn $appFilter))) { $byProc = $w }
183
+ if (-not $byTitle -and (XrkMatch $t $appFilter)) { $byTitle = $w }
184
+ }
185
+ if ($appFilter -ne '' -and -not $win) {
186
+ if ($focusedWin) {
187
+ $ft = ''
188
+ try { $ft = $focusedWin.Current.Name } catch {}
189
+ $fpn = XrkProcName $focusedWin.Current.ProcessId
190
+ if ((XrkMatch $fpn $appFilter) -or (XrkMatch $ft $appFilter)) { $win = $focusedWin }
191
+ }
192
+ if (-not $win) { $win = $byProc }
193
+ if (-not $win) { $win = $byTitle }
194
+ }
195
+ if (-not $win) {
196
+ @{ error = 'app-not-found'; app = ''; windowTitle = ''; elements = @(); candidates = $candidates } | ConvertTo-Json -Depth 6 -Compress
197
+ return
198
+ }
199
+
200
+ $title = ''
201
+ try { $title = $win.Current.Name } catch {}
202
+ $targetPid = $win.Current.ProcessId
203
+ $appLabel = XrkProcName $targetPid
204
+ if ([string]::IsNullOrWhiteSpace($appLabel)) { $appLabel = $title }
205
+
206
+ $elements = New-Object System.Collections.Generic.List[object]
207
+ $seen = New-Object System.Collections.Generic.HashSet[string]
208
+ $queue = New-Object System.Collections.Generic.Queue[object]
209
+ $queue.Enqueue(@{ el = $win; d = 0 })
210
+ $idx = 0
211
+ $visited = 0
212
+ $dropped = 0
213
+ $exhausted = $true
214
+ while ($queue.Count -gt 0 -and $idx -lt $max -and $visited -lt $visitCap) {
215
+ $item = $queue.Dequeue()
216
+ $el = $item.el
217
+ $depth = $item.d
218
+ $visited++
219
+ $rid = ''
220
+ try { $rid = ($el.GetRuntimeId() -join ',') } catch {}
221
+ if ($rid -ne '' -and -not $seen.Add($rid)) { continue }
222
+ $ct = ''
223
+ try { $ct = $el.Current.ControlType.ProgrammaticName } catch {}
224
+ $name = ''
225
+ try { $name = $el.Current.Name } catch {}
226
+ # Always expand (bounded by depth): gating expansion on $depth -gt 0 meant the
227
+ # root window never yielded children and every capture came back empty.
228
+ if ($depth -lt $maxDepth) {
229
+ try {
230
+ $child = $walker.GetFirstChild($el)
231
+ $guard = 0
232
+ while ($child -and $guard -lt 500 -and ($visited + $guard) -lt $visitCap) {
233
+ $queue.Enqueue(@{ el = $child; d = ($depth + 1) })
234
+ $guard++
235
+ $child = $walker.GetNextSibling($child)
236
+ }
237
+ } catch { $dropped++ }
238
+ }
239
+ try {
240
+ if ($el.Current.ProcessId -ne $targetPid) { continue }
241
+ $role = ($ct -replace '^ControlType\\.','')
242
+ if ($depth -eq 0) { continue }
243
+ if (($role -eq 'Window' -or $role -eq 'Pane') -and [string]::IsNullOrWhiteSpace($name)) { continue }
244
+ $r = $el.Current.BoundingRectangle
245
+ $x = XrkSafeInt $r.X
246
+ $y = XrkSafeInt $r.Y
247
+ $wd = XrkSafeInt $r.Width
248
+ $ht = XrkSafeInt $r.Height
249
+ $offscreen = ($null -eq $x -or $null -eq $y -or $null -eq $wd -or $null -eq $ht -or $wd -le 0 -or $ht -le 0)
250
+ if ($offscreen -and -not $keepOffscreen) { continue }
251
+ if ([string]::IsNullOrWhiteSpace($name) -and [string]::IsNullOrWhiteSpace($role)) { continue }
252
+ $idx++
253
+ $display = $name
254
+ if ([string]::IsNullOrWhiteSpace($display)) { $display = $ct }
255
+ $elements.Add([pscustomobject]@{
256
+ index = $idx
257
+ role = $role
258
+ name = $display
259
+ x = $x; y = $y; width = $wd; height = $ht
260
+ runtimeId = $rid
261
+ })
262
+ } catch { $dropped++ }
263
+ }
264
+ if ($queue.Count -gt 0 -and $visited -ge $visitCap) { $exhausted = $false }
265
+
266
+ $screenshotBase64 = ''
267
+ $screenshotError = ''
268
+ if ($includeScreenshot) {
269
+ try {
270
+ Add-Type -AssemblyName System.Drawing
271
+ $br = $win.Current.BoundingRectangle
272
+ $sx = XrkSafeInt $br.X
273
+ $sy = XrkSafeInt $br.Y
274
+ $sw = XrkSafeInt $br.Width
275
+ $sh = XrkSafeInt $br.Height
276
+ if ($null -eq $sx -or $null -eq $sy -or $null -eq $sw -or $null -eq $sh -or $sw -le 0 -or $sh -le 0) {
277
+ $screenshotError = 'window has no on-screen bounds for screenshot'
278
+ } else {
279
+ $maxW = 1280; $maxH = 720
280
+ $scale = [Math]::Min(1.0, [Math]::Min(($maxW / [double]$sw), ($maxH / [double]$sh)))
281
+ $dw = [Math]::Max(1, [int][Math]::Round($sw * $scale))
282
+ $dh = [Math]::Max(1, [int][Math]::Round($sh * $scale))
283
+ $src = New-Object System.Drawing.Bitmap $sw, $sh
284
+ $gs = [System.Drawing.Graphics]::FromImage($src)
285
+ $gs.CopyFromScreen($sx, $sy, 0, 0, (New-Object System.Drawing.Size($sw, $sh)))
286
+ $gs.Dispose()
287
+ $bmp = $src
288
+ if ($scale -lt 1.0) {
289
+ $bmp = New-Object System.Drawing.Bitmap $dw, $dh
290
+ $g = [System.Drawing.Graphics]::FromImage($bmp)
291
+ $g.DrawImage($src, 0, 0, $dw, $dh)
292
+ $g.Dispose()
293
+ $src.Dispose()
294
+ }
295
+ if ($annotateSom) {
296
+ $g2 = [System.Drawing.Graphics]::FromImage($bmp)
297
+ $font = New-Object System.Drawing.Font 'Consolas', 10, ([System.Drawing.FontStyle]::Bold)
298
+ $fill = New-Object System.Drawing.SolidBrush ([System.Drawing.Color]::FromArgb(220, 255, 220, 0))
299
+ $ink = New-Object System.Drawing.SolidBrush ([System.Drawing.Color]::Black)
300
+ foreach ($e in $elements) {
301
+ if ($null -eq $e.x -or $null -eq $e.y) { continue }
302
+ $lx = [int][Math]::Round(($e.x - $sx) * $scale)
303
+ $ly = [int][Math]::Round(($e.y - $sy) * $scale)
304
+ if ($lx -lt 0 -or $ly -lt 0 -or $lx -gt $dw -or $ly -gt $dh) { continue }
305
+ $label = [string]$e.index
306
+ $g2.FillRectangle($fill, $lx, $ly, 18, 14)
307
+ $g2.DrawString($label, $font, $ink, $lx, $ly)
308
+ }
309
+ $g2.Dispose(); $font.Dispose(); $fill.Dispose(); $ink.Dispose()
310
+ }
311
+ $ms = New-Object System.IO.MemoryStream
312
+ $bmp.Save($ms, [System.Drawing.Imaging.ImageFormat]::Png)
313
+ $screenshotBase64 = [Convert]::ToBase64String($ms.ToArray())
314
+ $ms.Dispose(); $bmp.Dispose()
315
+ }
316
+ } catch {
317
+ $screenshotError = $_.Exception.Message
318
+ }
319
+ }
320
+
321
+ @{
322
+ app = $appLabel
323
+ windowTitle = $title
324
+ elements = $elements
325
+ visited = $visited
326
+ dropped = $dropped
327
+ exhausted = $exhausted
328
+ screenshotBase64 = $screenshotBase64
329
+ screenshotError = $screenshotError
330
+ } | ConvertTo-Json -Depth 6 -Compress
331
331
  `.trim();
332
332
  }
333
333
  /** Re-resolve an element by runtime id; Invoke → Select → focus + mouse click. */
334
334
  function clickScript(runtimeId) {
335
335
  const idLit = psStr(runtimeId);
336
- return `${PS_PRELUDE}
337
- $ids = @((${idLit}) -split ',' | ForEach-Object { [int]$_ })
338
- $el = [System.Windows.Automation.AutomationElement]::AutomationElementFromRuntimeId($ids)
339
- if (-not $el) { throw 'element not found (window changed? capture again)' }
340
- $inv = $null
341
- if ($el.TryGetCurrentPattern([System.Windows.Automation.InvokePattern]::Pattern, [ref]$inv)) {
342
- $inv.Invoke()
343
- 'clicked-invoke'
344
- return
345
- }
346
- $sel = $null
347
- if ($el.TryGetCurrentPattern([System.Windows.Automation.SelectionItemPattern]::Pattern, [ref]$sel)) {
348
- $sel.Select()
349
- 'clicked-select'
350
- return
351
- }
352
- $box = $el.Current.BoundingRectangle
353
- if ($null -eq (XrkSafeInt $box.X) -or $null -eq (XrkSafeInt $box.Y)) {
354
- throw 'element is not invokable via UIA and has no on-screen bounds to click'
355
- }
356
- Add-Type -AssemblyName System.Windows.Forms
357
- Add-Type -AssemblyName System.Drawing
358
- Add-Type @"
359
- using System;
360
- using System.Runtime.InteropServices;
361
- public static class XrkClick {
362
- [DllImport("user32.dll")] public static extern bool SetCursorPos(int x, int y);
363
- [DllImport("user32.dll")] public static extern void mouse_event(uint f, uint dx, uint dy, int data, UIntPtr extra);
364
- public const uint LEFTDOWN = 0x0002;
365
- public const uint LEFTUP = 0x0004;
366
- }
367
- "@
368
- try { $el.SetFocus() } catch {}
369
- Start-Sleep -Milliseconds 40
370
- $r = $el.Current.BoundingRectangle
371
- $x = XrkSafeInt ($r.X + $r.Width / 2)
372
- $y = XrkSafeInt ($r.Y + $r.Height / 2)
373
- [void][XrkClick]::SetCursorPos($x, $y)
374
- [void][XrkClick]::mouse_event([XrkClick]::LEFTDOWN, 0, 0, 0, [UIntPtr]::Zero)
375
- Start-Sleep -Milliseconds 30
376
- [void][XrkClick]::mouse_event([XrkClick]::LEFTUP, 0, 0, 0, [UIntPtr]::Zero)
377
- 'clicked-point'
336
+ return `${PS_PRELUDE}
337
+ $ids = @((${idLit}) -split ',' | ForEach-Object { [int]$_ })
338
+ $el = [System.Windows.Automation.AutomationElement]::AutomationElementFromRuntimeId($ids)
339
+ if (-not $el) { throw 'element not found (window changed? capture again)' }
340
+ $inv = $null
341
+ if ($el.TryGetCurrentPattern([System.Windows.Automation.InvokePattern]::Pattern, [ref]$inv)) {
342
+ $inv.Invoke()
343
+ 'clicked-invoke'
344
+ return
345
+ }
346
+ $sel = $null
347
+ if ($el.TryGetCurrentPattern([System.Windows.Automation.SelectionItemPattern]::Pattern, [ref]$sel)) {
348
+ $sel.Select()
349
+ 'clicked-select'
350
+ return
351
+ }
352
+ $box = $el.Current.BoundingRectangle
353
+ if ($null -eq (XrkSafeInt $box.X) -or $null -eq (XrkSafeInt $box.Y)) {
354
+ throw 'element is not invokable via UIA and has no on-screen bounds to click'
355
+ }
356
+ Add-Type -AssemblyName System.Windows.Forms
357
+ Add-Type -AssemblyName System.Drawing
358
+ Add-Type @"
359
+ using System;
360
+ using System.Runtime.InteropServices;
361
+ public static class XrkClick {
362
+ [DllImport("user32.dll")] public static extern bool SetCursorPos(int x, int y);
363
+ [DllImport("user32.dll")] public static extern void mouse_event(uint f, uint dx, uint dy, int data, UIntPtr extra);
364
+ public const uint LEFTDOWN = 0x0002;
365
+ public const uint LEFTUP = 0x0004;
366
+ }
367
+ "@
368
+ try { $el.SetFocus() } catch {}
369
+ Start-Sleep -Milliseconds 40
370
+ $r = $el.Current.BoundingRectangle
371
+ $x = XrkSafeInt ($r.X + $r.Width / 2)
372
+ $y = XrkSafeInt ($r.Y + $r.Height / 2)
373
+ [void][XrkClick]::SetCursorPos($x, $y)
374
+ [void][XrkClick]::mouse_event([XrkClick]::LEFTDOWN, 0, 0, 0, [UIntPtr]::Zero)
375
+ Start-Sleep -Milliseconds 30
376
+ [void][XrkClick]::mouse_event([XrkClick]::LEFTUP, 0, 0, 0, [UIntPtr]::Zero)
377
+ 'clicked-point'
378
378
  `.trim();
379
379
  }
380
380
  /** Absolute screen-pixel click (Codex vision path when no AX element). */
381
381
  function clickCoordinateScript(x, y) {
382
- return `${PS_PRELUDE}
383
- Add-Type @"
384
- using System;
385
- using System.Runtime.InteropServices;
386
- public static class XrkClickAt {
387
- [DllImport("user32.dll")] public static extern bool SetCursorPos(int x, int y);
388
- [DllImport("user32.dll")] public static extern void mouse_event(uint f, uint dx, uint dy, int data, UIntPtr extra);
389
- public const uint LEFTDOWN = 0x0002;
390
- public const uint LEFTUP = 0x0004;
391
- }
392
- "@
393
- $x = ${Math.trunc(x)}
394
- $y = ${Math.trunc(y)}
395
- [void][XrkClickAt]::SetCursorPos($x, $y)
396
- [void][XrkClickAt]::mouse_event([XrkClickAt]::LEFTDOWN, 0, 0, 0, [UIntPtr]::Zero)
397
- Start-Sleep -Milliseconds 30
398
- [void][XrkClickAt]::mouse_event([XrkClickAt]::LEFTUP, 0, 0, 0, [UIntPtr]::Zero)
399
- "clicked-coordinate:$x,$y"
382
+ return `${PS_PRELUDE}
383
+ Add-Type @"
384
+ using System;
385
+ using System.Runtime.InteropServices;
386
+ public static class XrkClickAt {
387
+ [DllImport("user32.dll")] public static extern bool SetCursorPos(int x, int y);
388
+ [DllImport("user32.dll")] public static extern void mouse_event(uint f, uint dx, uint dy, int data, UIntPtr extra);
389
+ public const uint LEFTDOWN = 0x0002;
390
+ public const uint LEFTUP = 0x0004;
391
+ }
392
+ "@
393
+ $x = ${Math.trunc(x)}
394
+ $y = ${Math.trunc(y)}
395
+ [void][XrkClickAt]::SetCursorPos($x, $y)
396
+ [void][XrkClickAt]::mouse_event([XrkClickAt]::LEFTDOWN, 0, 0, 0, [UIntPtr]::Zero)
397
+ Start-Sleep -Milliseconds 30
398
+ [void][XrkClickAt]::mouse_event([XrkClickAt]::LEFTUP, 0, 0, 0, [UIntPtr]::Zero)
399
+ "clicked-coordinate:$x,$y"
400
400
  `.trim();
401
401
  }
402
402
  /**
@@ -408,124 +408,124 @@ function typeScript(runtimeId, text) {
408
408
  const idLit = psStr(runtimeId);
409
409
  const textLit = psStr(text);
410
410
  const keysLit = psStr(escapeSendKeys(text));
411
- return `${PS_PRELUDE}
412
- Add-Type -AssemblyName System.Windows.Forms
413
- $text = ${textLit}
414
- $escaped = ${keysLit}
415
- $ids = @((${idLit}) -split ',' | ForEach-Object { [int]$_ })
416
- $el = [System.Windows.Automation.AutomationElement]::AutomationElementFromRuntimeId($ids)
417
- if (-not $el) { throw 'element not found (window changed? capture again)' }
418
- $val = $null
419
- if ($el.TryGetCurrentPattern([System.Windows.Automation.ValuePattern]::Pattern, [ref]$val)) {
420
- try {
421
- if (-not $val.Current.IsReadOnly) {
422
- $val.SetValue($text)
423
- 'typed-value'
424
- return
425
- }
426
- } catch {}
427
- }
428
- try { $el.SetFocus() } catch {}
429
- Start-Sleep -Milliseconds 40
430
- $pasted = $false
431
- $old = $null
432
- $clipReadable = $false
433
- try { $old = Get-Clipboard -ErrorAction Stop; $clipReadable = $true } catch {
434
- try { $old = Get-Clipboard -Raw -ErrorAction Stop; $clipReadable = $true } catch {}
435
- }
436
- try {
437
- Set-Clipboard -Value $text
438
- [System.Windows.Forms.SendKeys]::SendWait('^v')
439
- Start-Sleep -Milliseconds 30
440
- $pasted = $true
441
- } catch {}
442
- if ($pasted -and $clipReadable) {
443
- try {
444
- if ($null -ne $old) { Set-Clipboard -Value ($old -join [Environment]::NewLine) } else { Set-Clipboard -Value '' }
445
- } catch {}
446
- }
447
- if ($pasted) { 'typed-paste' } else {
448
- [System.Windows.Forms.SendKeys]::SendWait($escaped)
449
- 'typed-sendkeys'
450
- }
411
+ return `${PS_PRELUDE}
412
+ Add-Type -AssemblyName System.Windows.Forms
413
+ $text = ${textLit}
414
+ $escaped = ${keysLit}
415
+ $ids = @((${idLit}) -split ',' | ForEach-Object { [int]$_ })
416
+ $el = [System.Windows.Automation.AutomationElement]::AutomationElementFromRuntimeId($ids)
417
+ if (-not $el) { throw 'element not found (window changed? capture again)' }
418
+ $val = $null
419
+ if ($el.TryGetCurrentPattern([System.Windows.Automation.ValuePattern]::Pattern, [ref]$val)) {
420
+ try {
421
+ if (-not $val.Current.IsReadOnly) {
422
+ $val.SetValue($text)
423
+ 'typed-value'
424
+ return
425
+ }
426
+ } catch {}
427
+ }
428
+ try { $el.SetFocus() } catch {}
429
+ Start-Sleep -Milliseconds 40
430
+ $pasted = $false
431
+ $old = $null
432
+ $clipReadable = $false
433
+ try { $old = Get-Clipboard -ErrorAction Stop; $clipReadable = $true } catch {
434
+ try { $old = Get-Clipboard -Raw -ErrorAction Stop; $clipReadable = $true } catch {}
435
+ }
436
+ try {
437
+ Set-Clipboard -Value $text
438
+ [System.Windows.Forms.SendKeys]::SendWait('^v')
439
+ Start-Sleep -Milliseconds 30
440
+ $pasted = $true
441
+ } catch {}
442
+ if ($pasted -and $clipReadable) {
443
+ try {
444
+ if ($null -ne $old) { Set-Clipboard -Value ($old -join [Environment]::NewLine) } else { Set-Clipboard -Value '' }
445
+ } catch {}
446
+ }
447
+ if ($pasted) { 'typed-paste' } else {
448
+ [System.Windows.Forms.SendKeys]::SendWait($escaped)
449
+ 'typed-sendkeys'
450
+ }
451
451
  `.trim();
452
452
  }
453
453
  function keyScript(keysSendWait, runtimeId) {
454
454
  const keysLit = psStr(keysSendWait);
455
455
  const focusBlock = runtimeId
456
- ? `
457
- $ids = @((${psStr(runtimeId)}) -split ',' | ForEach-Object { [int]$_ })
458
- $el = [System.Windows.Automation.AutomationElement]::AutomationElementFromRuntimeId($ids)
459
- if (-not $el) { throw 'element not found (window changed? capture again)' }
460
- try { $el.SetFocus() } catch {}
461
- Start-Sleep -Milliseconds 40
456
+ ? `
457
+ $ids = @((${psStr(runtimeId)}) -split ',' | ForEach-Object { [int]$_ })
458
+ $el = [System.Windows.Automation.AutomationElement]::AutomationElementFromRuntimeId($ids)
459
+ if (-not $el) { throw 'element not found (window changed? capture again)' }
460
+ try { $el.SetFocus() } catch {}
461
+ Start-Sleep -Milliseconds 40
462
462
  `
463
463
  : "";
464
- return `${PS_PRELUDE}${focusBlock}Add-Type -AssemblyName System.Windows.Forms
465
- [System.Windows.Forms.SendKeys]::SendWait(${keysLit})
466
- 'keyed'
464
+ return `${PS_PRELUDE}${focusBlock}Add-Type -AssemblyName System.Windows.Forms
465
+ [System.Windows.Forms.SendKeys]::SendWait(${keysLit})
466
+ 'keyed'
467
467
  `.trim();
468
468
  }
469
469
  function scrollScript(options) {
470
470
  const amount = Math.max(1, Math.min(50, Math.floor(options.amount)));
471
471
  const dir = options.direction;
472
472
  const idLit = options.runtimeId ? psStr(options.runtimeId) : "''";
473
- return `${PS_PRELUDE}
474
- Add-Type -AssemblyName System.Windows.Forms
475
- Add-Type -AssemblyName System.Drawing
476
- $dir = ${psStr(dir)}
477
- $amount = ${amount}
478
- $runtimeId = ${idLit}
479
- $el = $null
480
- if ($runtimeId -ne '') {
481
- $ids = @(($runtimeId) -split ',' | ForEach-Object { [int]$_ })
482
- $el = [System.Windows.Automation.AutomationElement]::AutomationElementFromRuntimeId($ids)
483
- if (-not $el) { throw 'element not found (window changed? capture again)' }
484
- }
485
- if ($el) {
486
- $scroll = $null
487
- if ($el.TryGetCurrentPattern([System.Windows.Automation.ScrollPattern]::Pattern, [ref]$scroll)) {
488
- $horiz = [System.Windows.Automation.ScrollAmount]::NoAmount
489
- $vert = [System.Windows.Automation.ScrollAmount]::NoAmount
490
- $large = [System.Windows.Automation.ScrollAmount]::LargeIncrement
491
- $largeNeg = [System.Windows.Automation.ScrollAmount]::LargeDecrement
492
- $small = [System.Windows.Automation.ScrollAmount]::SmallIncrement
493
- $smallNeg = [System.Windows.Automation.ScrollAmount]::SmallDecrement
494
- for ($i = 0; $i -lt $amount; $i++) {
495
- if ($dir -eq 'down') { $vert = $large }
496
- elseif ($dir -eq 'up') { $vert = $largeNeg }
497
- elseif ($dir -eq 'right') { $horiz = $small }
498
- elseif ($dir -eq 'left') { $horiz = $smallNeg }
499
- $scroll.Scroll($horiz, $vert)
500
- }
501
- 'scrolled-pattern'
502
- return
503
- }
504
- try { $el.SetFocus() } catch {}
505
- Start-Sleep -Milliseconds 40
506
- $r = $el.Current.BoundingRectangle
507
- $x = XrkSafeInt ($r.X + $r.Width / 2)
508
- $y = XrkSafeInt ($r.Y + $r.Height / 2)
509
- if ($null -ne $x -and $null -ne $y) {
510
- [System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y)
511
- }
512
- }
513
- Add-Type @"
514
- using System;
515
- using System.Runtime.InteropServices;
516
- public static class XrkMouseWheel {
517
- [DllImport("user32.dll")]
518
- public static extern void mouse_event(uint dwFlags, uint dx, uint dy, int dwData, UIntPtr dwExtraInfo);
519
- public const uint MOUSEEVENTF_WHEEL = 0x0800;
520
- public const uint MOUSEEVENTF_HWHEEL = 0x01000;
521
- }
522
- "@
523
- $delta = 120 * $amount
524
- if ($dir -eq 'down' -or $dir -eq 'right') { $delta = -$delta }
525
- $flags = [XrkMouseWheel]::MOUSEEVENTF_WHEEL
526
- if ($dir -eq 'left' -or $dir -eq 'right') { $flags = [XrkMouseWheel]::MOUSEEVENTF_HWHEEL }
527
- [XrkMouseWheel]::mouse_event($flags, 0, 0, $delta, [UIntPtr]::Zero)
528
- 'scrolled-wheel'
473
+ return `${PS_PRELUDE}
474
+ Add-Type -AssemblyName System.Windows.Forms
475
+ Add-Type -AssemblyName System.Drawing
476
+ $dir = ${psStr(dir)}
477
+ $amount = ${amount}
478
+ $runtimeId = ${idLit}
479
+ $el = $null
480
+ if ($runtimeId -ne '') {
481
+ $ids = @(($runtimeId) -split ',' | ForEach-Object { [int]$_ })
482
+ $el = [System.Windows.Automation.AutomationElement]::AutomationElementFromRuntimeId($ids)
483
+ if (-not $el) { throw 'element not found (window changed? capture again)' }
484
+ }
485
+ if ($el) {
486
+ $scroll = $null
487
+ if ($el.TryGetCurrentPattern([System.Windows.Automation.ScrollPattern]::Pattern, [ref]$scroll)) {
488
+ $horiz = [System.Windows.Automation.ScrollAmount]::NoAmount
489
+ $vert = [System.Windows.Automation.ScrollAmount]::NoAmount
490
+ $large = [System.Windows.Automation.ScrollAmount]::LargeIncrement
491
+ $largeNeg = [System.Windows.Automation.ScrollAmount]::LargeDecrement
492
+ $small = [System.Windows.Automation.ScrollAmount]::SmallIncrement
493
+ $smallNeg = [System.Windows.Automation.ScrollAmount]::SmallDecrement
494
+ for ($i = 0; $i -lt $amount; $i++) {
495
+ if ($dir -eq 'down') { $vert = $large }
496
+ elseif ($dir -eq 'up') { $vert = $largeNeg }
497
+ elseif ($dir -eq 'right') { $horiz = $small }
498
+ elseif ($dir -eq 'left') { $horiz = $smallNeg }
499
+ $scroll.Scroll($horiz, $vert)
500
+ }
501
+ 'scrolled-pattern'
502
+ return
503
+ }
504
+ try { $el.SetFocus() } catch {}
505
+ Start-Sleep -Milliseconds 40
506
+ $r = $el.Current.BoundingRectangle
507
+ $x = XrkSafeInt ($r.X + $r.Width / 2)
508
+ $y = XrkSafeInt ($r.Y + $r.Height / 2)
509
+ if ($null -ne $x -and $null -ne $y) {
510
+ [System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y)
511
+ }
512
+ }
513
+ Add-Type @"
514
+ using System;
515
+ using System.Runtime.InteropServices;
516
+ public static class XrkMouseWheel {
517
+ [DllImport("user32.dll")]
518
+ public static extern void mouse_event(uint dwFlags, uint dx, uint dy, int dwData, UIntPtr dwExtraInfo);
519
+ public const uint MOUSEEVENTF_WHEEL = 0x0800;
520
+ public const uint MOUSEEVENTF_HWHEEL = 0x01000;
521
+ }
522
+ "@
523
+ $delta = 120 * $amount
524
+ if ($dir -eq 'down' -or $dir -eq 'right') { $delta = -$delta }
525
+ $flags = [XrkMouseWheel]::MOUSEEVENTF_WHEEL
526
+ if ($dir -eq 'left' -or $dir -eq 'right') { $flags = [XrkMouseWheel]::MOUSEEVENTF_HWHEEL }
527
+ [XrkMouseWheel]::mouse_event($flags, 0, 0, $delta, [UIntPtr]::Zero)
528
+ 'scrolled-wheel'
529
529
  `.trim();
530
530
  }
531
531
  /**
@@ -535,21 +535,21 @@ if ($dir -eq 'left' -or $dir -eq 'right') { $flags = [XrkMouseWheel]::MOUSEEVENT
535
535
  * "Argument types do not match".
536
536
  */
537
537
  function listWindowsScript() {
538
- return `${PS_PRELUDE}
539
- $root = [System.Windows.Automation.AutomationElement]::RootElement
540
- $cond = New-Object System.Windows.Automation.PropertyCondition(
541
- [System.Windows.Automation.AutomationElement]::ControlTypeProperty,
542
- [System.Windows.Automation.ControlType]::Window)
543
- $wins = $root.FindAll([System.Windows.Automation.TreeScope]::Children, $cond)
544
- $list = New-Object System.Collections.Generic.List[object]
545
- foreach ($w in $wins) {
546
- $n = ''
547
- try { $n = $w.Current.Name } catch {}
548
- $proc = XrkProcName $w.Current.ProcessId
549
- if ([string]::IsNullOrWhiteSpace($n) -and [string]::IsNullOrWhiteSpace($proc)) { continue }
550
- $list.Add([pscustomobject]@{ title = $n; pid = $w.Current.ProcessId; app = $proc })
551
- }
552
- @{ windows = $list } | ConvertTo-Json -Depth 5 -Compress
538
+ return `${PS_PRELUDE}
539
+ $root = [System.Windows.Automation.AutomationElement]::RootElement
540
+ $cond = New-Object System.Windows.Automation.PropertyCondition(
541
+ [System.Windows.Automation.AutomationElement]::ControlTypeProperty,
542
+ [System.Windows.Automation.ControlType]::Window)
543
+ $wins = $root.FindAll([System.Windows.Automation.TreeScope]::Children, $cond)
544
+ $list = New-Object System.Collections.Generic.List[object]
545
+ foreach ($w in $wins) {
546
+ $n = ''
547
+ try { $n = $w.Current.Name } catch {}
548
+ $proc = XrkProcName $w.Current.ProcessId
549
+ if ([string]::IsNullOrWhiteSpace($n) -and [string]::IsNullOrWhiteSpace($proc)) { continue }
550
+ $list.Add([pscustomobject]@{ title = $n; pid = $w.Current.ProcessId; app = $proc })
551
+ }
552
+ @{ windows = $list } | ConvertTo-Json -Depth 5 -Compress
553
553
  `.trim();
554
554
  }
555
555
  function finite(...values) {