@beeos-ai/device-agent 0.4.0

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 (398) hide show
  1. package/.pi/extensions/android-tools.ts +139 -0
  2. package/.pi/skills/.gitkeep +0 -0
  3. package/.pi/skills/ground-mobile-fallback/SKILL.md +50 -0
  4. package/LICENSE +201 -0
  5. package/dist/action/handler.d.ts +9 -0
  6. package/dist/action/handler.js +124 -0
  7. package/dist/action/handler.js.map +1 -0
  8. package/dist/adapters/agent-gateway-client.d.ts +256 -0
  9. package/dist/adapters/agent-gateway-client.js +332 -0
  10. package/dist/adapters/agent-gateway-client.js.map +1 -0
  11. package/dist/adapters/agentcore-inner-loop.d.ts +29 -0
  12. package/dist/adapters/agentcore-inner-loop.js +72 -0
  13. package/dist/adapters/agentcore-inner-loop.js.map +1 -0
  14. package/dist/adapters/agentcore-pi.d.ts +215 -0
  15. package/dist/adapters/agentcore-pi.js +464 -0
  16. package/dist/adapters/agentcore-pi.js.map +1 -0
  17. package/dist/adapters/agentcore-runner.d.ts +70 -0
  18. package/dist/adapters/agentcore-runner.js +255 -0
  19. package/dist/adapters/agentcore-runner.js.map +1 -0
  20. package/dist/adapters/device-android-adb.d.ts +41 -0
  21. package/dist/adapters/device-android-adb.js +279 -0
  22. package/dist/adapters/device-android-adb.js.map +1 -0
  23. package/dist/adapters/device-desktop.d.ts +37 -0
  24. package/dist/adapters/device-desktop.js +101 -0
  25. package/dist/adapters/device-desktop.js.map +1 -0
  26. package/dist/adapters/identity-file.d.ts +30 -0
  27. package/dist/adapters/identity-file.js +50 -0
  28. package/dist/adapters/identity-file.js.map +1 -0
  29. package/dist/adapters/transport-bridge-ws.d.ts +39 -0
  30. package/dist/adapters/transport-bridge-ws.js +49 -0
  31. package/dist/adapters/transport-bridge-ws.js.map +1 -0
  32. package/dist/adapters/vlm-inner-loop.d.ts +88 -0
  33. package/dist/adapters/vlm-inner-loop.js +199 -0
  34. package/dist/adapters/vlm-inner-loop.js.map +1 -0
  35. package/dist/agent-runtime/adapters/base.d.ts +145 -0
  36. package/dist/agent-runtime/adapters/base.js +29 -0
  37. package/dist/agent-runtime/adapters/base.js.map +1 -0
  38. package/dist/agent-runtime/adapters/index.d.ts +17 -0
  39. package/dist/agent-runtime/adapters/index.js +17 -0
  40. package/dist/agent-runtime/adapters/index.js.map +1 -0
  41. package/dist/agent-runtime/adapters/mock.d.ts +44 -0
  42. package/dist/agent-runtime/adapters/mock.js +54 -0
  43. package/dist/agent-runtime/adapters/mock.js.map +1 -0
  44. package/dist/agent-runtime/adapters/openai.d.ts +63 -0
  45. package/dist/agent-runtime/adapters/openai.js +302 -0
  46. package/dist/agent-runtime/adapters/openai.js.map +1 -0
  47. package/dist/agent-runtime/adapters/registry.d.ts +49 -0
  48. package/dist/agent-runtime/adapters/registry.js +129 -0
  49. package/dist/agent-runtime/adapters/registry.js.map +1 -0
  50. package/dist/agent-runtime/adapters/ui-tars.d.ts +13 -0
  51. package/dist/agent-runtime/adapters/ui-tars.js +22 -0
  52. package/dist/agent-runtime/adapters/ui-tars.js.map +1 -0
  53. package/dist/agent-runtime/agent-runner.d.ts +149 -0
  54. package/dist/agent-runtime/agent-runner.js +356 -0
  55. package/dist/agent-runtime/agent-runner.js.map +1 -0
  56. package/dist/agent-runtime/core.d.ts +170 -0
  57. package/dist/agent-runtime/core.js +624 -0
  58. package/dist/agent-runtime/core.js.map +1 -0
  59. package/dist/agent-runtime/index.d.ts +16 -0
  60. package/dist/agent-runtime/index.js +17 -0
  61. package/dist/agent-runtime/index.js.map +1 -0
  62. package/dist/agent-runtime/plan-executor.d.ts +118 -0
  63. package/dist/agent-runtime/plan-executor.js +501 -0
  64. package/dist/agent-runtime/plan-executor.js.map +1 -0
  65. package/dist/agent-runtime/planner/base.d.ts +128 -0
  66. package/dist/agent-runtime/planner/base.js +157 -0
  67. package/dist/agent-runtime/planner/base.js.map +1 -0
  68. package/dist/agent-runtime/planner/llm-planner.d.ts +58 -0
  69. package/dist/agent-runtime/planner/llm-planner.js +112 -0
  70. package/dist/agent-runtime/planner/llm-planner.js.map +1 -0
  71. package/dist/agent-runtime/planner/noop-planner.d.ts +13 -0
  72. package/dist/agent-runtime/planner/noop-planner.js +30 -0
  73. package/dist/agent-runtime/planner/noop-planner.js.map +1 -0
  74. package/dist/agent-runtime/planner/prompts.d.ts +33 -0
  75. package/dist/agent-runtime/planner/prompts.js +165 -0
  76. package/dist/agent-runtime/planner/prompts.js.map +1 -0
  77. package/dist/agent-runtime/reflection.d.ts +81 -0
  78. package/dist/agent-runtime/reflection.js +189 -0
  79. package/dist/agent-runtime/reflection.js.map +1 -0
  80. package/dist/agent-runtime/reflectors/action-reflector.d.ts +97 -0
  81. package/dist/agent-runtime/reflectors/action-reflector.js +233 -0
  82. package/dist/agent-runtime/reflectors/action-reflector.js.map +1 -0
  83. package/dist/agent-runtime/reflectors/policy.d.ts +53 -0
  84. package/dist/agent-runtime/reflectors/policy.js +106 -0
  85. package/dist/agent-runtime/reflectors/policy.js.map +1 -0
  86. package/dist/agent-runtime/reflectors/trajectory-reflector.d.ts +94 -0
  87. package/dist/agent-runtime/reflectors/trajectory-reflector.js +223 -0
  88. package/dist/agent-runtime/reflectors/trajectory-reflector.js.map +1 -0
  89. package/dist/agent-runtime/skills/embedding.d.ts +53 -0
  90. package/dist/agent-runtime/skills/embedding.js +134 -0
  91. package/dist/agent-runtime/skills/embedding.js.map +1 -0
  92. package/dist/agent-runtime/skills/fs-store.d.ts +88 -0
  93. package/dist/agent-runtime/skills/fs-store.js +483 -0
  94. package/dist/agent-runtime/skills/fs-store.js.map +1 -0
  95. package/dist/agent-runtime/skills/index.d.ts +10 -0
  96. package/dist/agent-runtime/skills/index.js +10 -0
  97. package/dist/agent-runtime/skills/index.js.map +1 -0
  98. package/dist/agent-runtime/skills/matcher-evolver.d.ts +88 -0
  99. package/dist/agent-runtime/skills/matcher-evolver.js +110 -0
  100. package/dist/agent-runtime/skills/matcher-evolver.js.map +1 -0
  101. package/dist/agent-runtime/skills/memory-store.d.ts +23 -0
  102. package/dist/agent-runtime/skills/memory-store.js +94 -0
  103. package/dist/agent-runtime/skills/memory-store.js.map +1 -0
  104. package/dist/agent-runtime/skills/normalise.d.ts +40 -0
  105. package/dist/agent-runtime/skills/normalise.js +152 -0
  106. package/dist/agent-runtime/skills/normalise.js.map +1 -0
  107. package/dist/agent-runtime/skills/replay.d.ts +46 -0
  108. package/dist/agent-runtime/skills/replay.js +106 -0
  109. package/dist/agent-runtime/skills/replay.js.map +1 -0
  110. package/dist/agent-runtime/skills/sqlite-store.d.ts +60 -0
  111. package/dist/agent-runtime/skills/sqlite-store.js +234 -0
  112. package/dist/agent-runtime/skills/sqlite-store.js.map +1 -0
  113. package/dist/agent-runtime/skills/types.d.ts +99 -0
  114. package/dist/agent-runtime/skills/types.js +14 -0
  115. package/dist/agent-runtime/skills/types.js.map +1 -0
  116. package/dist/agent.d.ts +110 -0
  117. package/dist/agent.js +162 -0
  118. package/dist/agent.js.map +1 -0
  119. package/dist/api.d.ts +27 -0
  120. package/dist/api.js +48 -0
  121. package/dist/api.js.map +1 -0
  122. package/dist/app/agent-host.d.ts +59 -0
  123. package/dist/app/agent-host.js +263 -0
  124. package/dist/app/agent-host.js.map +1 -0
  125. package/dist/app/device-manager.d.ts +28 -0
  126. package/dist/app/device-manager.js +64 -0
  127. package/dist/app/device-manager.js.map +1 -0
  128. package/dist/app/message-store.d.ts +55 -0
  129. package/dist/app/message-store.js +99 -0
  130. package/dist/app/message-store.js.map +1 -0
  131. package/dist/app/session-manager.d.ts +132 -0
  132. package/dist/app/session-manager.js +350 -0
  133. package/dist/app/session-manager.js.map +1 -0
  134. package/dist/bootstrap.d.ts +94 -0
  135. package/dist/bootstrap.js +459 -0
  136. package/dist/bootstrap.js.map +1 -0
  137. package/dist/chat.d.ts +16 -0
  138. package/dist/chat.js +175 -0
  139. package/dist/chat.js.map +1 -0
  140. package/dist/config/loader.d.ts +77 -0
  141. package/dist/config/loader.js +292 -0
  142. package/dist/config/loader.js.map +1 -0
  143. package/dist/config/schema.d.ts +162 -0
  144. package/dist/config/schema.js +243 -0
  145. package/dist/config/schema.js.map +1 -0
  146. package/dist/core/actions.d.ts +60 -0
  147. package/dist/core/actions.js +120 -0
  148. package/dist/core/actions.js.map +1 -0
  149. package/dist/core/errors.d.ts +8 -0
  150. package/dist/core/errors.js +9 -0
  151. package/dist/core/errors.js.map +1 -0
  152. package/dist/core/screen.d.ts +7 -0
  153. package/dist/core/screen.js +8 -0
  154. package/dist/core/screen.js.map +1 -0
  155. package/dist/core/session.d.ts +42 -0
  156. package/dist/core/session.js +29 -0
  157. package/dist/core/session.js.map +1 -0
  158. package/dist/debug/dump-system-prompt.d.ts +1 -0
  159. package/dist/debug/dump-system-prompt.js +34 -0
  160. package/dist/debug/dump-system-prompt.js.map +1 -0
  161. package/dist/device/android.d.ts +25 -0
  162. package/dist/device/android.js +231 -0
  163. package/dist/device/android.js.map +1 -0
  164. package/dist/device/apps.d.ts +3 -0
  165. package/dist/device/apps.js +77 -0
  166. package/dist/device/apps.js.map +1 -0
  167. package/dist/device/base.d.ts +20 -0
  168. package/dist/device/base.js +2 -0
  169. package/dist/device/base.js.map +1 -0
  170. package/dist/device/ui-xml.d.ts +29 -0
  171. package/dist/device/ui-xml.js +194 -0
  172. package/dist/device/ui-xml.js.map +1 -0
  173. package/dist/fleet/adapters/process/node-process-manager.d.ts +157 -0
  174. package/dist/fleet/adapters/process/node-process-manager.js +664 -0
  175. package/dist/fleet/adapters/process/node-process-manager.js.map +1 -0
  176. package/dist/fleet/adapters/sources/local-adb.d.ts +105 -0
  177. package/dist/fleet/adapters/sources/local-adb.js +353 -0
  178. package/dist/fleet/adapters/sources/local-adb.js.map +1 -0
  179. package/dist/fleet/adapters/sources/remote-adb.d.ts +97 -0
  180. package/dist/fleet/adapters/sources/remote-adb.js +138 -0
  181. package/dist/fleet/adapters/sources/remote-adb.js.map +1 -0
  182. package/dist/fleet/adapters/state/beeos-cli-store.d.ts +72 -0
  183. package/dist/fleet/adapters/state/beeos-cli-store.js +250 -0
  184. package/dist/fleet/adapters/state/beeos-cli-store.js.map +1 -0
  185. package/dist/fleet/adapters/state/port-allocator.d.ts +43 -0
  186. package/dist/fleet/adapters/state/port-allocator.js +173 -0
  187. package/dist/fleet/adapters/state/port-allocator.js.map +1 -0
  188. package/dist/fleet/domain/device.d.ts +138 -0
  189. package/dist/fleet/domain/device.js +49 -0
  190. package/dist/fleet/domain/device.js.map +1 -0
  191. package/dist/fleet/domain/events.d.ts +102 -0
  192. package/dist/fleet/domain/events.js +15 -0
  193. package/dist/fleet/domain/events.js.map +1 -0
  194. package/dist/fleet/domain/fsm.d.ts +122 -0
  195. package/dist/fleet/domain/fsm.js +475 -0
  196. package/dist/fleet/domain/fsm.js.map +1 -0
  197. package/dist/fleet/http/status-client.d.ts +31 -0
  198. package/dist/fleet/http/status-client.js +115 -0
  199. package/dist/fleet/http/status-client.js.map +1 -0
  200. package/dist/fleet/http/status-server.d.ts +64 -0
  201. package/dist/fleet/http/status-server.js +200 -0
  202. package/dist/fleet/http/status-server.js.map +1 -0
  203. package/dist/fleet/index.d.ts +27 -0
  204. package/dist/fleet/index.js +17 -0
  205. package/dist/fleet/index.js.map +1 -0
  206. package/dist/fleet/installer/index.d.ts +12 -0
  207. package/dist/fleet/installer/index.js +13 -0
  208. package/dist/fleet/installer/index.js.map +1 -0
  209. package/dist/fleet/installer/launchd-mac.d.ts +73 -0
  210. package/dist/fleet/installer/launchd-mac.js +291 -0
  211. package/dist/fleet/installer/launchd-mac.js.map +1 -0
  212. package/dist/fleet/installer/service-spec.d.ts +70 -0
  213. package/dist/fleet/installer/service-spec.js +43 -0
  214. package/dist/fleet/installer/service-spec.js.map +1 -0
  215. package/dist/fleet/installer/spawn-env.d.ts +45 -0
  216. package/dist/fleet/installer/spawn-env.js +224 -0
  217. package/dist/fleet/installer/spawn-env.js.map +1 -0
  218. package/dist/fleet/ports/clock.d.ts +19 -0
  219. package/dist/fleet/ports/clock.js +26 -0
  220. package/dist/fleet/ports/clock.js.map +1 -0
  221. package/dist/fleet/ports/device-source.d.ts +28 -0
  222. package/dist/fleet/ports/device-source.js +18 -0
  223. package/dist/fleet/ports/device-source.js.map +1 -0
  224. package/dist/fleet/ports/process-manager.d.ts +110 -0
  225. package/dist/fleet/ports/process-manager.js +27 -0
  226. package/dist/fleet/ports/process-manager.js.map +1 -0
  227. package/dist/fleet/ports/state-registry.d.ts +49 -0
  228. package/dist/fleet/ports/state-registry.js +12 -0
  229. package/dist/fleet/ports/state-registry.js.map +1 -0
  230. package/dist/fleet/supervisor.d.ts +107 -0
  231. package/dist/fleet/supervisor.js +508 -0
  232. package/dist/fleet/supervisor.js.map +1 -0
  233. package/dist/grounding/grounder.d.ts +46 -0
  234. package/dist/grounding/grounder.js +82 -0
  235. package/dist/grounding/grounder.js.map +1 -0
  236. package/dist/inbound/acp/handlers/device.d.ts +43 -0
  237. package/dist/inbound/acp/handlers/device.js +153 -0
  238. package/dist/inbound/acp/handlers/device.js.map +1 -0
  239. package/dist/inbound/acp/handlers/initialize.d.ts +71 -0
  240. package/dist/inbound/acp/handlers/initialize.js +53 -0
  241. package/dist/inbound/acp/handlers/initialize.js.map +1 -0
  242. package/dist/inbound/acp/handlers/models.d.ts +16 -0
  243. package/dist/inbound/acp/handlers/models.js +23 -0
  244. package/dist/inbound/acp/handlers/models.js.map +1 -0
  245. package/dist/inbound/acp/handlers/session.d.ts +51 -0
  246. package/dist/inbound/acp/handlers/session.js +61 -0
  247. package/dist/inbound/acp/handlers/session.js.map +1 -0
  248. package/dist/inbound/acp/handlers/skills.d.ts +8 -0
  249. package/dist/inbound/acp/handlers/skills.js +9 -0
  250. package/dist/inbound/acp/handlers/skills.js.map +1 -0
  251. package/dist/inbound/acp/notifier.d.ts +35 -0
  252. package/dist/inbound/acp/notifier.js +45 -0
  253. package/dist/inbound/acp/notifier.js.map +1 -0
  254. package/dist/inbound/acp/router.d.ts +67 -0
  255. package/dist/inbound/acp/router.js +179 -0
  256. package/dist/inbound/acp/router.js.map +1 -0
  257. package/dist/inbound/cli/fleet-command.d.ts +34 -0
  258. package/dist/inbound/cli/fleet-command.js +792 -0
  259. package/dist/inbound/cli/fleet-command.js.map +1 -0
  260. package/dist/inbound/cli/main.d.ts +38 -0
  261. package/dist/inbound/cli/main.js +364 -0
  262. package/dist/inbound/cli/main.js.map +1 -0
  263. package/dist/inbound/cli/run-command.d.ts +101 -0
  264. package/dist/inbound/cli/run-command.js +405 -0
  265. package/dist/inbound/cli/run-command.js.map +1 -0
  266. package/dist/inbound/cli/skills-command.d.ts +39 -0
  267. package/dist/inbound/cli/skills-command.js +333 -0
  268. package/dist/inbound/cli/skills-command.js.map +1 -0
  269. package/dist/inbound/http/server.d.ts +7 -0
  270. package/dist/inbound/http/server.js +8 -0
  271. package/dist/inbound/http/server.js.map +1 -0
  272. package/dist/index.d.ts +66 -0
  273. package/dist/index.js +48 -0
  274. package/dist/index.js.map +1 -0
  275. package/dist/logger/index.d.ts +37 -0
  276. package/dist/logger/index.js +84 -0
  277. package/dist/logger/index.js.map +1 -0
  278. package/dist/mcp-client/autospawn.d.ts +67 -0
  279. package/dist/mcp-client/autospawn.js +173 -0
  280. package/dist/mcp-client/autospawn.js.map +1 -0
  281. package/dist/mcp-client/client.d.ts +78 -0
  282. package/dist/mcp-client/client.js +168 -0
  283. package/dist/mcp-client/client.js.map +1 -0
  284. package/dist/mcp-client/index.d.ts +7 -0
  285. package/dist/mcp-client/index.js +4 -0
  286. package/dist/mcp-client/index.js.map +1 -0
  287. package/dist/mcp-client/inproc.d.ts +47 -0
  288. package/dist/mcp-client/inproc.js +229 -0
  289. package/dist/mcp-client/inproc.js.map +1 -0
  290. package/dist/mcp-client/runtime.d.ts +34 -0
  291. package/dist/mcp-client/runtime.js +15 -0
  292. package/dist/mcp-client/runtime.js.map +1 -0
  293. package/dist/model/adapters/autoglm.d.ts +31 -0
  294. package/dist/model/adapters/autoglm.js +409 -0
  295. package/dist/model/adapters/autoglm.js.map +1 -0
  296. package/dist/model/adapters/base.d.ts +13 -0
  297. package/dist/model/adapters/base.js +27 -0
  298. package/dist/model/adapters/base.js.map +1 -0
  299. package/dist/model/adapters/guiowl.d.ts +1 -0
  300. package/dist/model/adapters/guiowl.js +253 -0
  301. package/dist/model/adapters/guiowl.js.map +1 -0
  302. package/dist/model/adapters/index.d.ts +6 -0
  303. package/dist/model/adapters/index.js +8 -0
  304. package/dist/model/adapters/index.js.map +1 -0
  305. package/dist/model/adapters/maiui.d.ts +1 -0
  306. package/dist/model/adapters/maiui.js +117 -0
  307. package/dist/model/adapters/maiui.js.map +1 -0
  308. package/dist/model/adapters/qwenvl.d.ts +1 -0
  309. package/dist/model/adapters/qwenvl.js +108 -0
  310. package/dist/model/adapters/qwenvl.js.map +1 -0
  311. package/dist/model/adapters/showui.d.ts +1 -0
  312. package/dist/model/adapters/showui.js +132 -0
  313. package/dist/model/adapters/showui.js.map +1 -0
  314. package/dist/model/adapters/tool-call.d.ts +6 -0
  315. package/dist/model/adapters/tool-call.js +102 -0
  316. package/dist/model/adapters/tool-call.js.map +1 -0
  317. package/dist/model/adapters/uitars.d.ts +1 -0
  318. package/dist/model/adapters/uitars.js +180 -0
  319. package/dist/model/adapters/uitars.js.map +1 -0
  320. package/dist/model/base.d.ts +32 -0
  321. package/dist/model/base.js +2 -0
  322. package/dist/model/base.js.map +1 -0
  323. package/dist/model/client.d.ts +26 -0
  324. package/dist/model/client.js +300 -0
  325. package/dist/model/client.js.map +1 -0
  326. package/dist/model/image/compress.d.ts +53 -0
  327. package/dist/model/image/compress.js +89 -0
  328. package/dist/model/image/compress.js.map +1 -0
  329. package/dist/model/image/transport.d.ts +134 -0
  330. package/dist/model/image/transport.js +154 -0
  331. package/dist/model/image/transport.js.map +1 -0
  332. package/dist/orchestrator-system-prompt.d.ts +6 -0
  333. package/dist/orchestrator-system-prompt.js +81 -0
  334. package/dist/orchestrator-system-prompt.js.map +1 -0
  335. package/dist/pi-context.d.ts +82 -0
  336. package/dist/pi-context.js +62 -0
  337. package/dist/pi-context.js.map +1 -0
  338. package/dist/pi-local-skills.d.ts +17 -0
  339. package/dist/pi-local-skills.js +24 -0
  340. package/dist/pi-local-skills.js.map +1 -0
  341. package/dist/plugins/acp/index.d.ts +46 -0
  342. package/dist/plugins/acp/index.js +111 -0
  343. package/dist/plugins/acp/index.js.map +1 -0
  344. package/dist/plugins/agent-sync/index.d.ts +40 -0
  345. package/dist/plugins/agent-sync/index.js +98 -0
  346. package/dist/plugins/agent-sync/index.js.map +1 -0
  347. package/dist/plugins/http-debug/index.d.ts +30 -0
  348. package/dist/plugins/http-debug/index.js +64 -0
  349. package/dist/plugins/http-debug/index.js.map +1 -0
  350. package/dist/plugins/http-debug/server.d.ts +92 -0
  351. package/dist/plugins/http-debug/server.js +464 -0
  352. package/dist/plugins/http-debug/server.js.map +1 -0
  353. package/dist/ports/agent-core.d.ts +158 -0
  354. package/dist/ports/agent-core.js +2 -0
  355. package/dist/ports/agent-core.js.map +1 -0
  356. package/dist/ports/agent-host.d.ts +125 -0
  357. package/dist/ports/agent-host.js +23 -0
  358. package/dist/ports/agent-host.js.map +1 -0
  359. package/dist/ports/device.d.ts +53 -0
  360. package/dist/ports/device.js +13 -0
  361. package/dist/ports/device.js.map +1 -0
  362. package/dist/ports/identity.d.ts +22 -0
  363. package/dist/ports/identity.js +9 -0
  364. package/dist/ports/identity.js.map +1 -0
  365. package/dist/ports/plugin.d.ts +62 -0
  366. package/dist/ports/plugin.js +35 -0
  367. package/dist/ports/plugin.js.map +1 -0
  368. package/dist/ports/transport.d.ts +32 -0
  369. package/dist/ports/transport.js +12 -0
  370. package/dist/ports/transport.js.map +1 -0
  371. package/dist/ports/vlm.d.ts +59 -0
  372. package/dist/ports/vlm.js +14 -0
  373. package/dist/ports/vlm.js.map +1 -0
  374. package/dist/test-lan-autoglm.d.ts +7 -0
  375. package/dist/test-lan-autoglm.js +46 -0
  376. package/dist/test-lan-autoglm.js.map +1 -0
  377. package/dist/test-mem-breakdown.d.ts +1 -0
  378. package/dist/test-mem-breakdown.js +103 -0
  379. package/dist/test-mem-breakdown.js.map +1 -0
  380. package/dist/test-mem.d.ts +1 -0
  381. package/dist/test-mem.js +60 -0
  382. package/dist/test-mem.js.map +1 -0
  383. package/dist/test-mobile-use.d.ts +1 -0
  384. package/dist/test-mobile-use.js +18 -0
  385. package/dist/test-mobile-use.js.map +1 -0
  386. package/dist/test-screenshot-loop.d.ts +1 -0
  387. package/dist/test-screenshot-loop.js +43 -0
  388. package/dist/test-screenshot-loop.js.map +1 -0
  389. package/dist/test-screenshot.d.ts +1 -0
  390. package/dist/test-screenshot.js +10 -0
  391. package/dist/test-screenshot.js.map +1 -0
  392. package/dist/test-ui-xml-dump.d.ts +15 -0
  393. package/dist/test-ui-xml-dump.js +49 -0
  394. package/dist/test-ui-xml-dump.js.map +1 -0
  395. package/dist/types.d.ts +69 -0
  396. package/dist/types.js +23 -0
  397. package/dist/types.js.map +1 -0
  398. package/package.json +94 -0
@@ -0,0 +1,483 @@
1
+ /**
2
+ * agent-runtime/skills/fs-store — FileSystem-backed
3
+ * {@link SkillCacheStore}.
4
+ *
5
+ * Layout:
6
+ * ```
7
+ * <root>/
8
+ * ├── _meta/
9
+ * │ └── version # plain text "1"
10
+ * ├── com.tencent.mm/
11
+ * │ ├── 8dc7bafa-...-e58122.json # main record (atomic tmp+rename)
12
+ * │ └── 8dc7bafa-...-e58122.deltas.jsonl # append-only counter log
13
+ * └── com.xunmeng.pinduoduo/
14
+ * └── ...
15
+ * ```
16
+ *
17
+ * The default root is `~/.beeos/device-agent/skills/`. Cloud
18
+ * deployments mount a `ReadWriteMany` PVC at `$HOME/.beeos` so multiple
19
+ * pods see one shared cache; on a developer laptop / EdgeAgent host the
20
+ * directory is just a local folder, naturally shared by every
21
+ * `device-agent` process running on that machine.
22
+ *
23
+ * Counter atomicity relies on POSIX O_APPEND semantics: each
24
+ * `recordSuccess` / `recordFailure` writes a single ≤30-byte line via
25
+ * `fs.appendFileSync`, which the kernel guarantees to be atomic across
26
+ * processes (line ≤ PIPE_BUF). When `deltas.jsonl` exceeds
27
+ * `compactThresholdBytes` (default 4 KB) the next writer folds the
28
+ * accumulated deltas into the main JSON via tmp+rename and truncates
29
+ * the deltas file. Read paths always fold the live deltas plus any
30
+ * orphaned `*.compacting` files left by a crashed writer.
31
+ *
32
+ * The schema is intentionally diff-friendly (one self-contained JSON
33
+ * per skill, base64-encoded embedding) so users can inspect / git-track
34
+ * / rsync the cache directly.
35
+ */
36
+ import * as fs from "node:fs";
37
+ import path from "node:path";
38
+ import { homedir } from "node:os";
39
+ import { randomUUID } from "node:crypto";
40
+ import { cosine } from "./embedding.js";
41
+ const STORE_VERSION = "1";
42
+ const META_DIR = "_meta";
43
+ const META_VERSION_FILE = "version";
44
+ /**
45
+ * Trigger compaction once the per-skill deltas file crosses this size.
46
+ * Comfortably under PIPE_BUF (4096 on Linux/macOS) so per-line appends
47
+ * stay atomic across processes.
48
+ */
49
+ const DEFAULT_COMPACT_THRESHOLD_BYTES = 4096;
50
+ /**
51
+ * Default cache root: `~/.beeos/device-agent/skills/` unless
52
+ * `SKILL_CACHE_PATH` overrides it. Returns a directory path (the
53
+ * legacy SQLite store returned a `.sqlite` *file*; the new layout is
54
+ * directory-based).
55
+ */
56
+ export function defaultSkillCachePath() {
57
+ const env = process.env.SKILL_CACHE_PATH;
58
+ if (env && env.length > 0)
59
+ return env;
60
+ return path.join(homedir(), ".beeos", "device-agent", "skills");
61
+ }
62
+ /* -------------------------------------------------------------------------- */
63
+ /* store */
64
+ /* -------------------------------------------------------------------------- */
65
+ export class FileSystemSkillCacheStore {
66
+ root;
67
+ compactThreshold;
68
+ constructor(opts = {}) {
69
+ this.root = opts.root ?? defaultSkillCachePath();
70
+ this.compactThreshold = opts.compactThresholdBytes ?? DEFAULT_COMPACT_THRESHOLD_BYTES;
71
+ if (!opts.noMkdir) {
72
+ fs.mkdirSync(this.root, { recursive: true });
73
+ fs.mkdirSync(path.join(this.root, META_DIR), { recursive: true });
74
+ }
75
+ this.writeVersionIfMissing();
76
+ }
77
+ insert(input) {
78
+ const now = Date.now();
79
+ const id = randomUUID();
80
+ const appDir = this.appDir(input.appPackage);
81
+ fs.mkdirSync(appDir, { recursive: true });
82
+ const persisted = {
83
+ id,
84
+ appPackage: input.appPackage,
85
+ taskSummary: input.taskSummary,
86
+ taskEmbeddingB64: input.taskEmbedding ? embeddingToB64(input.taskEmbedding) : undefined,
87
+ actionSequence: cloneActions(input.actionSequence),
88
+ successCount: 1,
89
+ failCount: 0,
90
+ lastUsedAt: now,
91
+ createdAt: now,
92
+ };
93
+ atomicWriteJson(this.skillJsonPath(appDir, id), persisted);
94
+ return persistedToSkill(persisted);
95
+ }
96
+ get(id) {
97
+ const located = this.locate(id);
98
+ if (!located)
99
+ return undefined;
100
+ return this.readSkill(located.appDir, id);
101
+ }
102
+ listByApp(appPackage, limit = 50) {
103
+ const dir = this.appDir(appPackage);
104
+ if (!fs.existsSync(dir))
105
+ return [];
106
+ const out = [];
107
+ for (const id of this.skillIdsIn(dir)) {
108
+ const skill = this.readSkill(dir, id);
109
+ if (skill)
110
+ out.push(skill);
111
+ }
112
+ out.sort((a, b) => b.lastUsedAt - a.lastUsedAt);
113
+ return out.slice(0, Math.max(0, limit));
114
+ }
115
+ listAll(limit = 200) {
116
+ if (!fs.existsSync(this.root))
117
+ return [];
118
+ const out = [];
119
+ for (const dir of this.appDirs()) {
120
+ for (const id of this.skillIdsIn(dir)) {
121
+ const skill = this.readSkill(dir, id);
122
+ if (skill)
123
+ out.push(skill);
124
+ }
125
+ }
126
+ out.sort((a, b) => b.lastUsedAt - a.lastUsedAt);
127
+ return out.slice(0, Math.max(0, limit));
128
+ }
129
+ search(appPackage, query, k) {
130
+ const dir = this.appDir(appPackage);
131
+ if (!fs.existsSync(dir))
132
+ return [];
133
+ const matches = [];
134
+ for (const id of this.skillIdsIn(dir)) {
135
+ const skill = this.readSkill(dir, id);
136
+ if (!skill || !skill.taskEmbedding)
137
+ continue;
138
+ if (skill.taskEmbedding.length !== query.length)
139
+ continue;
140
+ const score = cosine(query, skill.taskEmbedding);
141
+ matches.push({ skill, score });
142
+ }
143
+ matches.sort((a, b) => b.score - a.score);
144
+ return matches.slice(0, Math.max(0, k));
145
+ }
146
+ recordSuccess(id, now = Date.now()) {
147
+ this.appendDelta(id, { ts: now, r: "ok" });
148
+ }
149
+ recordFailure(id, now = Date.now()) {
150
+ this.appendDelta(id, { ts: now, r: "fail" });
151
+ }
152
+ delete(id) {
153
+ const located = this.locate(id);
154
+ if (!located)
155
+ return false;
156
+ const jsonPath = this.skillJsonPath(located.appDir, id);
157
+ let removed = false;
158
+ try {
159
+ fs.unlinkSync(jsonPath);
160
+ removed = true;
161
+ }
162
+ catch {
163
+ // ignore — already gone
164
+ }
165
+ safeUnlink(this.skillDeltasPath(located.appDir, id));
166
+ for (const orphan of this.findCompacting(located.appDir, id)) {
167
+ safeUnlink(orphan);
168
+ }
169
+ return removed;
170
+ }
171
+ clear() {
172
+ if (!fs.existsSync(this.root))
173
+ return;
174
+ for (const appDir of this.appDirs()) {
175
+ try {
176
+ fs.rmSync(appDir, { recursive: true, force: true });
177
+ }
178
+ catch {
179
+ // best effort
180
+ }
181
+ }
182
+ }
183
+ close() {
184
+ // No-op: the store has no long-lived handles. Kept on the
185
+ // interface for parity with InMemorySkillCacheStore (the SQLite
186
+ // store used to actually close a DB handle here).
187
+ }
188
+ /* ----------------------------------------------------------------- */
189
+ /* internals */
190
+ /* ----------------------------------------------------------------- */
191
+ writeVersionIfMissing() {
192
+ const p = path.join(this.root, META_DIR, META_VERSION_FILE);
193
+ try {
194
+ if (!fs.existsSync(p))
195
+ fs.writeFileSync(p, STORE_VERSION);
196
+ }
197
+ catch {
198
+ // best effort — _meta is informational only
199
+ }
200
+ }
201
+ appDir(appPackage) {
202
+ return path.join(this.root, sanitizeAppPackage(appPackage));
203
+ }
204
+ skillJsonPath(appDir, id) {
205
+ return path.join(appDir, `${id}.json`);
206
+ }
207
+ skillDeltasPath(appDir, id) {
208
+ return path.join(appDir, `${id}.deltas.jsonl`);
209
+ }
210
+ appDirs() {
211
+ if (!fs.existsSync(this.root))
212
+ return [];
213
+ const out = [];
214
+ for (const name of fs.readdirSync(this.root)) {
215
+ if (name === META_DIR)
216
+ continue;
217
+ const full = path.join(this.root, name);
218
+ let stat;
219
+ try {
220
+ stat = fs.statSync(full);
221
+ }
222
+ catch {
223
+ continue;
224
+ }
225
+ if (stat.isDirectory())
226
+ out.push(full);
227
+ }
228
+ return out;
229
+ }
230
+ skillIdsIn(appDir) {
231
+ const out = [];
232
+ for (const name of fs.readdirSync(appDir)) {
233
+ // Take just the canonical `<id>.json`. tmp files (`<id>.json.<...>.tmp`)
234
+ // and deltas files (`<id>.deltas.jsonl`, `*.compacting`) are excluded
235
+ // by the suffix check.
236
+ if (!name.endsWith(".json"))
237
+ continue;
238
+ if (name.includes(".deltas."))
239
+ continue;
240
+ out.push(name.slice(0, -".json".length));
241
+ }
242
+ return out;
243
+ }
244
+ locate(id) {
245
+ for (const dir of this.appDirs()) {
246
+ if (fs.existsSync(this.skillJsonPath(dir, id))) {
247
+ return { appDir: dir };
248
+ }
249
+ }
250
+ return undefined;
251
+ }
252
+ readSkill(appDir, id) {
253
+ let raw;
254
+ try {
255
+ raw = fs.readFileSync(this.skillJsonPath(appDir, id), "utf8");
256
+ }
257
+ catch {
258
+ return undefined;
259
+ }
260
+ let persisted;
261
+ try {
262
+ persisted = JSON.parse(raw);
263
+ }
264
+ catch {
265
+ return undefined;
266
+ }
267
+ const fold = this.foldDeltaFiles(appDir, id);
268
+ return persistedToSkill({
269
+ ...persisted,
270
+ successCount: persisted.successCount + fold.success,
271
+ failCount: persisted.failCount + fold.fail,
272
+ lastUsedAt: fold.lastUsedAt !== undefined
273
+ ? Math.max(persisted.lastUsedAt, fold.lastUsedAt)
274
+ : persisted.lastUsedAt,
275
+ });
276
+ }
277
+ foldDeltaFiles(appDir, id) {
278
+ let success = 0;
279
+ let fail = 0;
280
+ let lastUsedAt;
281
+ const sources = [this.skillDeltasPath(appDir, id), ...this.findCompacting(appDir, id)];
282
+ for (const src of sources) {
283
+ let raw;
284
+ try {
285
+ raw = fs.readFileSync(src, "utf8");
286
+ }
287
+ catch {
288
+ continue;
289
+ }
290
+ for (const line of raw.split("\n")) {
291
+ if (!line)
292
+ continue;
293
+ try {
294
+ const obj = JSON.parse(line);
295
+ if (obj.r === "ok")
296
+ success += 1;
297
+ else if (obj.r === "fail")
298
+ fail += 1;
299
+ if (typeof obj.ts === "number") {
300
+ if (lastUsedAt === undefined || obj.ts > lastUsedAt)
301
+ lastUsedAt = obj.ts;
302
+ }
303
+ }
304
+ catch {
305
+ // skip malformed line
306
+ }
307
+ }
308
+ }
309
+ return { success, fail, lastUsedAt };
310
+ }
311
+ findCompacting(appDir, id) {
312
+ let names;
313
+ try {
314
+ names = fs.readdirSync(appDir);
315
+ }
316
+ catch {
317
+ return [];
318
+ }
319
+ const prefix = `${id}.deltas.`;
320
+ const out = [];
321
+ for (const name of names) {
322
+ if (name.startsWith(prefix) && name.endsWith(".compacting")) {
323
+ out.push(path.join(appDir, name));
324
+ }
325
+ }
326
+ return out;
327
+ }
328
+ appendDelta(id, line) {
329
+ const located = this.locate(id);
330
+ if (!located)
331
+ return;
332
+ const deltasPath = this.skillDeltasPath(located.appDir, id);
333
+ const payload = `${JSON.stringify(line)}\n`;
334
+ try {
335
+ // POSIX O_APPEND atomic for ≤PIPE_BUF writes — multiple
336
+ // processes can hammer this concurrently without losing lines.
337
+ fs.appendFileSync(deltasPath, payload);
338
+ }
339
+ catch {
340
+ return;
341
+ }
342
+ this.maybeCompact(located.appDir, id);
343
+ }
344
+ maybeCompact(appDir, id) {
345
+ const deltasPath = this.skillDeltasPath(appDir, id);
346
+ let stat;
347
+ try {
348
+ stat = fs.statSync(deltasPath);
349
+ }
350
+ catch {
351
+ return;
352
+ }
353
+ if (stat.size < this.compactThreshold)
354
+ return;
355
+ // Claim the current deltas via atomic rename. New appends from
356
+ // concurrent writers go into a freshly-created `deltas.jsonl`;
357
+ // any orphaned `*.compacting` files are picked up by readers.
358
+ const claim = path.join(appDir, `${id}.deltas.${process.pid}.${Date.now()}.${Math.floor(Math.random() * 1e6)}.compacting`);
359
+ try {
360
+ fs.renameSync(deltasPath, claim);
361
+ }
362
+ catch {
363
+ // Another writer beat us to it.
364
+ return;
365
+ }
366
+ const claimed = readDeltasFile(claim);
367
+ const jsonPath = this.skillJsonPath(appDir, id);
368
+ let raw;
369
+ try {
370
+ raw = fs.readFileSync(jsonPath, "utf8");
371
+ }
372
+ catch {
373
+ // JSON gone — nothing to fold into; drop the orphan.
374
+ safeUnlink(claim);
375
+ return;
376
+ }
377
+ let persisted;
378
+ try {
379
+ persisted = JSON.parse(raw);
380
+ }
381
+ catch {
382
+ safeUnlink(claim);
383
+ return;
384
+ }
385
+ persisted.successCount += claimed.success;
386
+ persisted.failCount += claimed.fail;
387
+ if (claimed.lastUsedAt !== undefined) {
388
+ persisted.lastUsedAt = Math.max(persisted.lastUsedAt, claimed.lastUsedAt);
389
+ }
390
+ atomicWriteJson(jsonPath, persisted);
391
+ safeUnlink(claim);
392
+ }
393
+ }
394
+ /* -------------------------------------------------------------------------- */
395
+ /* helpers */
396
+ /* -------------------------------------------------------------------------- */
397
+ function readDeltasFile(p) {
398
+ let success = 0;
399
+ let fail = 0;
400
+ let lastUsedAt;
401
+ let raw;
402
+ try {
403
+ raw = fs.readFileSync(p, "utf8");
404
+ }
405
+ catch {
406
+ return { success, fail, lastUsedAt };
407
+ }
408
+ for (const line of raw.split("\n")) {
409
+ if (!line)
410
+ continue;
411
+ try {
412
+ const obj = JSON.parse(line);
413
+ if (obj.r === "ok")
414
+ success += 1;
415
+ else if (obj.r === "fail")
416
+ fail += 1;
417
+ if (typeof obj.ts === "number") {
418
+ if (lastUsedAt === undefined || obj.ts > lastUsedAt)
419
+ lastUsedAt = obj.ts;
420
+ }
421
+ }
422
+ catch {
423
+ // skip malformed line
424
+ }
425
+ }
426
+ return { success, fail, lastUsedAt };
427
+ }
428
+ function persistedToSkill(p) {
429
+ return {
430
+ id: p.id,
431
+ appPackage: p.appPackage,
432
+ taskSummary: p.taskSummary,
433
+ taskEmbedding: p.taskEmbeddingB64 ? b64ToEmbedding(p.taskEmbeddingB64) : undefined,
434
+ actionSequence: p.actionSequence,
435
+ successCount: p.successCount,
436
+ failCount: p.failCount,
437
+ lastUsedAt: p.lastUsedAt,
438
+ createdAt: p.createdAt,
439
+ };
440
+ }
441
+ function embeddingToB64(v) {
442
+ return Buffer.from(v.buffer, v.byteOffset, v.byteLength).toString("base64");
443
+ }
444
+ function b64ToEmbedding(s) {
445
+ const buf = Buffer.from(s, "base64");
446
+ const out = new Float32Array(buf.byteLength / 4);
447
+ for (let i = 0; i < out.length; i++)
448
+ out[i] = buf.readFloatLE(i * 4);
449
+ return out;
450
+ }
451
+ function atomicWriteJson(target, payload) {
452
+ // Random suffix avoids the dual-writer collision: two compactors
453
+ // can produce different tmp files that won't clobber each other
454
+ // before rename. POSIX `rename` is atomic so readers always see
455
+ // either the old or new file, never partial bytes.
456
+ const tmp = `${target}.${process.pid}.${Date.now()}.${Math.floor(Math.random() * 1e6)}.tmp`;
457
+ fs.writeFileSync(tmp, JSON.stringify(payload, null, 2));
458
+ fs.renameSync(tmp, target);
459
+ }
460
+ function safeUnlink(p) {
461
+ try {
462
+ fs.unlinkSync(p);
463
+ }
464
+ catch {
465
+ // best effort
466
+ }
467
+ }
468
+ function cloneActions(seq) {
469
+ return seq.map((a) => ({ ...a }));
470
+ }
471
+ function sanitizeAppPackage(pkg) {
472
+ if (!pkg) {
473
+ throw new Error('FileSystemSkillCacheStore: appPackage must be non-empty');
474
+ }
475
+ if (pkg === "." || pkg === ".." || pkg.includes("/") || pkg.includes("\\")) {
476
+ throw new Error(`FileSystemSkillCacheStore: invalid appPackage "${pkg}"`);
477
+ }
478
+ if (pkg === META_DIR) {
479
+ throw new Error(`FileSystemSkillCacheStore: appPackage "${META_DIR}" is reserved`);
480
+ }
481
+ return pkg;
482
+ }
483
+ //# sourceMappingURL=fs-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-store.js","sourceRoot":"","sources":["../../../src/agent-runtime/skills/fs-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * agent-runtime/skills — barrel export for the Phase 3 skill memory.
3
+ */
4
+ export { bufferToEmbedding, cosine, DEFAULT_EMBEDDING_DIM, embeddingToBuffer, HashEmbeddingProvider, type EmbeddingProvider, } from "./embedding.js";
5
+ export { normaliseActionSequence, similarityRatio, type NormaliseOptions, } from "./normalise.js";
6
+ export { InMemorySkillCacheStore } from "./memory-store.js";
7
+ export { defaultSkillCachePath, FileSystemSkillCacheStore, type FileSystemSkillCacheStoreOptions, } from "./fs-store.js";
8
+ export { type NewSkillInput, type Skill, type SkillActionSequence, type SkillCacheStore, type SkillMatch, type SkillSummary, } from "./types.js";
9
+ export { evolveSkill, matchSkill, summariseSkill, type SkillEvolverOptions, type SkillMatchOutcome, type SkillMatcherOptions, } from "./matcher-evolver.js";
10
+ export { replaySkill, type SkillReplayOptions, type SkillReplayResult, } from "./replay.js";
@@ -0,0 +1,10 @@
1
+ /**
2
+ * agent-runtime/skills — barrel export for the Phase 3 skill memory.
3
+ */
4
+ export { bufferToEmbedding, cosine, DEFAULT_EMBEDDING_DIM, embeddingToBuffer, HashEmbeddingProvider, } from "./embedding.js";
5
+ export { normaliseActionSequence, similarityRatio, } from "./normalise.js";
6
+ export { InMemorySkillCacheStore } from "./memory-store.js";
7
+ export { defaultSkillCachePath, FileSystemSkillCacheStore, } from "./fs-store.js";
8
+ export { evolveSkill, matchSkill, summariseSkill, } from "./matcher-evolver.js";
9
+ export { replaySkill, } from "./replay.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent-runtime/skills/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,MAAM,EACN,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,GAEtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,eAAe,GAEhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAE1B,MAAM,eAAe,CAAC;AAWvB,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,GAIf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,WAAW,GAGZ,MAAM,aAAa,CAAC"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * agent-runtime/skills/matcher-evolver — Phase 3.2 / 3.3.
3
+ *
4
+ * Provides:
5
+ * - {@link matchSkill}: cosine + success-rate gated lookup that the
6
+ * `AgentRunner` consults at task entry. Returns either a confident
7
+ * hit ({@link SkillMatchOutcome} with `replay: true`) or a miss
8
+ * that still surfaces the top candidate so callers can log telemetry.
9
+ * - {@link evolveSkill}: post-task hook that updates counters or
10
+ * persists a new skill row from a successful run.
11
+ *
12
+ * Both functions are pure data-transformations over a
13
+ * {@link SkillCacheStore} — no IO outside the store and no awareness
14
+ * of the executor. That keeps Phase 3.4 (CLI) and Phase 3.5 (bench)
15
+ * decoupled.
16
+ */
17
+ import type { Action } from "@beeos-ai/device-common";
18
+ import { type EmbeddingProvider } from "./embedding.js";
19
+ import type { Skill, SkillCacheStore, SkillMatch } from "./types.js";
20
+ export interface SkillMatcherOptions {
21
+ /** Cosine ≥ this score qualifies a hit. Plan default: 0.85. */
22
+ cosineThreshold?: number;
23
+ /**
24
+ * Minimum success rate (success / (success + fail)) for replay.
25
+ * Plan default: 0.7.
26
+ */
27
+ successRateThreshold?: number;
28
+ /**
29
+ * Minimum total invocations before we trust the success rate. New
30
+ * skills with a single success will still pass cosine alone — this
31
+ * prevents one accidental hit from disqualifying a future replay.
32
+ */
33
+ minInvocations?: number;
34
+ /** Top-K to consider. Plan default: 3 (we only return the best). */
35
+ topK?: number;
36
+ }
37
+ export interface SkillMatchOutcome {
38
+ /** Should the executor enter SkillReplay mode? */
39
+ replay: boolean;
40
+ /** Best match (defined whether we replay or not). */
41
+ best?: SkillMatch;
42
+ /** All inspected candidates, best score first. */
43
+ candidates: readonly SkillMatch[];
44
+ /** When `replay === false`, why we declined. */
45
+ declineReason?: "no_candidates" | "score_too_low" | "success_rate_too_low";
46
+ }
47
+ export declare function matchSkill(args: {
48
+ store: SkillCacheStore;
49
+ appPackage: string;
50
+ taskSummary: string;
51
+ embedding?: EmbeddingProvider;
52
+ options?: SkillMatcherOptions;
53
+ }): Promise<SkillMatchOutcome>;
54
+ export interface SkillEvolverOptions {
55
+ /**
56
+ * Minimum number of normalised steps required before a new plan-run
57
+ * is persisted. Avoids polluting the cache with trivial single-tap
58
+ * runs the planner could re-derive cheaply.
59
+ */
60
+ minStepsToCache?: number;
61
+ /**
62
+ * Similarity ratio (over normalised actions) at which we "merge" a
63
+ * fresh successful run into an existing skill instead of creating
64
+ * a new one. Default 0.8.
65
+ */
66
+ mergeRatio?: number;
67
+ }
68
+ export interface EvolveArgs {
69
+ store: SkillCacheStore;
70
+ appPackage: string;
71
+ taskSummary: string;
72
+ rawSequence: readonly Action[];
73
+ /** Whether the live run completed successfully. */
74
+ success: boolean;
75
+ /**
76
+ * Set when the run started by replaying a cached skill — counters
77
+ * land on this row instead of creating a new entry.
78
+ */
79
+ replayedSkillId?: string;
80
+ embedding?: EmbeddingProvider;
81
+ options?: SkillEvolverOptions;
82
+ }
83
+ export declare function evolveSkill(args: EvolveArgs): Promise<{
84
+ action: "skipped" | "incremented_success" | "incremented_failure" | "merged" | "inserted";
85
+ skillId?: string;
86
+ }>;
87
+ /** Helper used by tests + CLI to summarise a skill row. */
88
+ export declare function summariseSkill(skill: Skill): string;