@prestyj/cli 5.28.0 → 5.29.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/README.md +2 -2
  2. package/assets/motion/THIRD-PARTY.md +14 -19
  3. package/assets/motion/bin/contact-sheet.mjs +9 -3
  4. package/assets/motion/bin/cues.mjs +337 -0
  5. package/assets/motion/bin/flash-check.mjs +314 -0
  6. package/assets/motion/bin/fonts.mjs +17 -13
  7. package/assets/motion/bin/library.mjs +61 -18
  8. package/assets/motion/bin/motion-blur.mjs +943 -0
  9. package/assets/motion/bin/motion-check.mjs +366 -9
  10. package/assets/motion/bin/music-fit.mjs +436 -0
  11. package/assets/motion/bin/pdf-extract.mjs +22 -10
  12. package/assets/motion/bin/reference-study.mjs +346 -0
  13. package/assets/motion/bin/score-synth.mjs +1052 -93
  14. package/assets/motion/fonts/finger-paint/OFL.txt +93 -0
  15. package/assets/motion/fonts/finger-paint/finger-paint-normal.woff2 +0 -0
  16. package/assets/motion/fonts/fonts.json +56 -0
  17. package/assets/motion/fonts/short-stack/OFL.txt +94 -0
  18. package/assets/motion/fonts/short-stack/short-stack-normal.woff2 +0 -0
  19. package/assets/motion/fonts/sora/OFL.txt +93 -0
  20. package/assets/motion/fonts/sora/sora-normal.woff2 +0 -0
  21. package/assets/motion/fonts/specimen.jpg +0 -0
  22. package/assets/motion/fonts/unbounded/OFL.txt +93 -0
  23. package/assets/motion/fonts/unbounded/unbounded-normal.woff2 +0 -0
  24. package/assets/motion/library/README.md +52 -14
  25. package/assets/motion/library/kit/moves.js +1981 -0
  26. package/assets/motion/library/library.json +232 -0
  27. package/assets/motion/library/pieces/camera-rig/meta.json +13 -0
  28. package/assets/motion/library/pieces/camera-rig/piece.html +153 -0
  29. package/assets/motion/library/pieces/camera-rig/preview.jpg +0 -0
  30. package/assets/motion/library/pieces/chain-knock/meta.json +13 -0
  31. package/assets/motion/library/pieces/chain-knock/piece.html +195 -0
  32. package/assets/motion/library/pieces/chain-knock/preview.jpg +0 -0
  33. package/assets/motion/library/pieces/gather-to-logo/meta.json +13 -0
  34. package/assets/motion/library/pieces/gather-to-logo/piece.html +159 -0
  35. package/assets/motion/library/pieces/gather-to-logo/preview.jpg +0 -0
  36. package/assets/motion/library/pieces/morph-carry/meta.json +13 -0
  37. package/assets/motion/library/pieces/morph-carry/piece.html +173 -0
  38. package/assets/motion/library/pieces/morph-carry/preview.jpg +0 -0
  39. package/assets/motion/library/pieces/one-shape-journey/meta.json +13 -0
  40. package/assets/motion/library/pieces/one-shape-journey/piece.html +195 -0
  41. package/assets/motion/library/pieces/one-shape-journey/preview.jpg +0 -0
  42. package/assets/motion/library/pieces/open-from-subject/meta.json +13 -0
  43. package/assets/motion/library/pieces/open-from-subject/piece.html +168 -0
  44. package/assets/motion/library/pieces/open-from-subject/preview.jpg +0 -0
  45. package/assets/motion/library/pieces/request-to-result/meta.json +13 -0
  46. package/assets/motion/library/pieces/request-to-result/piece.html +212 -0
  47. package/assets/motion/library/pieces/request-to-result/preview.jpg +0 -0
  48. package/assets/motion/library/pieces/scale-dive/meta.json +13 -0
  49. package/assets/motion/library/pieces/scale-dive/piece.html +321 -0
  50. package/assets/motion/library/pieces/scale-dive/preview.jpg +0 -0
  51. package/assets/motion/library/pieces/screen-replica-steps/meta.json +13 -0
  52. package/assets/motion/library/pieces/screen-replica-steps/piece.html +366 -0
  53. package/assets/motion/library/pieces/screen-replica-steps/preview.jpg +0 -0
  54. package/assets/motion/library/pieces/zoom-into-card/meta.json +13 -0
  55. package/assets/motion/library/pieces/zoom-into-card/piece.html +179 -0
  56. package/assets/motion/library/pieces/zoom-into-card/preview.jpg +0 -0
  57. package/assets/motion/library/sheets/diagram.jpg +0 -0
  58. package/assets/motion/library/sheets/frame.jpg +0 -0
  59. package/assets/motion/library/sheets/transition.jpg +0 -0
  60. package/assets/motion/library/sheets/ui.jpg +0 -0
  61. package/assets/motion/plugin.json +1 -1
  62. package/assets/motion/references/build-sheet.md +206 -0
  63. package/assets/motion/references/runtime/determinism-rules.md +3 -3
  64. package/assets/motion/references/runtime/gsap-easing-and-stagger.md +28 -28
  65. package/assets/motion/references/runtime/gsap.md +3 -3
  66. package/assets/motion/references/runtime/inputs-and-assets.md +21 -16
  67. package/assets/motion/references/runtime/lint-validate-inspect.md +3 -3
  68. package/assets/motion/references/runtime/minimal-composition.md +6 -0
  69. package/assets/motion/references/runtime/preview-render.md +3 -3
  70. package/assets/motion/skills/app-walkthrough/SKILL.md +66 -0
  71. package/assets/motion/skills/before-after/SKILL.md +53 -0
  72. package/assets/motion/skills/brand-kit/SKILL.md +17 -16
  73. package/assets/motion/skills/dev-tool-video/SKILL.md +57 -0
  74. package/assets/motion/skills/launch-video/SKILL.md +62 -0
  75. package/assets/motion/skills/match-reference/SKILL.md +58 -0
  76. package/assets/motion/skills/motion/SKILL.md +167 -98
  77. package/assets/motion/skills/source-ingest/SKILL.md +23 -15
  78. package/assets/motion/skills/website-video/SKILL.md +59 -0
  79. package/assets/skills/bulletproof/SKILL.md +36 -11
  80. package/assets/skills/bulletproof/references/agent-surface.md +19 -9
  81. package/assets/skills/bulletproof/references/audit-protocol.md +20 -5
  82. package/assets/skills/bulletproof/references/platform-playbooks.md +5 -4
  83. package/assets/skills/bulletproof/references/provenance.md +26 -1
  84. package/assets/skills/bulletproof/references/secure-defaults.md +6 -5
  85. package/assets/skills/bulletproof/references/supply-chain.md +21 -17
  86. package/assets/skills/bulletproof/references/threat-landscape.md +28 -26
  87. package/assets/skills/bulletproof/references/verification.md +2 -0
  88. package/assets/skills/clarify/SKILL.md +25 -16
  89. package/assets/skills/code-review/SKILL.md +71 -13
  90. package/assets/skills/code-review/references/agent-diffs.md +27 -0
  91. package/assets/skills/code-review/references/tests.md +19 -0
  92. package/assets/skills/compliance-guard/SKILL.md +20 -5
  93. package/assets/skills/compliance-guard/references/artifacts.md +1 -1
  94. package/assets/skills/compliance-guard/references/eu-uk.md +16 -16
  95. package/assets/skills/compliance-guard/references/lawsuit-vectors.md +5 -5
  96. package/assets/skills/compliance-guard/references/provenance.md +41 -2
  97. package/assets/skills/compliance-guard/references/sector-gates.md +3 -3
  98. package/assets/skills/compliance-guard/references/security-baseline.md +2 -2
  99. package/assets/skills/compliance-guard/references/trigger-map.md +5 -5
  100. package/assets/skills/compliance-guard/references/us.md +27 -21
  101. package/assets/skills/durable/SKILL.md +87 -79
  102. package/assets/skills/durable/references/agent-db-safety.md +69 -0
  103. package/assets/skills/durable/references/backups-and-runtime.md +19 -12
  104. package/assets/skills/durable/references/migrations-and-schema.md +13 -6
  105. package/assets/skills/evidence-led-ui/SKILL.md +69 -127
  106. package/assets/skills/evidence-led-ui/references/anti-defaults.md +107 -208
  107. package/assets/skills/evidence-led-ui/references/direction.md +124 -0
  108. package/assets/skills/evidence-led-ui/references/production-contract.md +8 -0
  109. package/assets/skills/evidence-led-ui/references/provenance.md +24 -1
  110. package/assets/skills/lean/SKILL.md +90 -71
  111. package/assets/skills/lean/references/memory-and-processes.md +3 -2
  112. package/assets/skills/lean/references/playbooks.md +37 -12
  113. package/assets/skills/refactoring/SKILL.md +24 -3
  114. package/assets/skills/refactoring/references/agent-pitfalls.md +4 -1
  115. package/assets/skills/refactoring/references/legacy.md +21 -0
  116. package/assets/skills/root-cause/SKILL.md +20 -10
  117. package/assets/skills/shared-language/SKILL.md +16 -14
  118. package/assets/skills/tdd/SKILL.md +27 -15
  119. package/dist/app-sidecar.js +203 -47
  120. package/dist/app-sidecar.js.map +1 -1
  121. package/dist/cli.js +20 -28
  122. package/dist/cli.js.map +1 -1
  123. package/dist/core/acceptance-checks.d.ts +48 -0
  124. package/dist/core/acceptance-checks.js +144 -0
  125. package/dist/core/acceptance-checks.js.map +1 -0
  126. package/dist/core/agent-session.d.ts +119 -75
  127. package/dist/core/agent-session.js +561 -395
  128. package/dist/core/agent-session.js.map +1 -1
  129. package/dist/core/agents.d.ts +6 -5
  130. package/dist/core/agents.js +12 -3
  131. package/dist/core/agents.js.map +1 -1
  132. package/dist/core/ask-user.d.ts +90 -8
  133. package/dist/core/ask-user.js +124 -13
  134. package/dist/core/ask-user.js.map +1 -1
  135. package/dist/core/auth-providers.js +1 -1
  136. package/dist/core/auth-providers.js.map +1 -1
  137. package/dist/core/autopilot-verdict.d.ts +5 -1
  138. package/dist/core/autopilot-verdict.js +30 -13
  139. package/dist/core/autopilot-verdict.js.map +1 -1
  140. package/dist/core/bundled-agents.js +1 -3
  141. package/dist/core/bundled-agents.js.map +1 -1
  142. package/dist/core/cache-diagnostics.d.ts +68 -0
  143. package/dist/core/cache-diagnostics.js +196 -0
  144. package/dist/core/cache-diagnostics.js.map +1 -0
  145. package/dist/core/cache-expiry.d.ts +87 -0
  146. package/dist/core/cache-expiry.js +111 -0
  147. package/dist/core/cache-expiry.js.map +1 -0
  148. package/dist/core/compaction/compactor.js +78 -48
  149. package/dist/core/compaction/compactor.js.map +1 -1
  150. package/dist/core/compaction/plan-step-policy.d.ts +46 -0
  151. package/dist/core/compaction/plan-step-policy.js +57 -0
  152. package/dist/core/compaction/plan-step-policy.js.map +1 -0
  153. package/dist/core/destructive-git-guard.d.ts +90 -0
  154. package/dist/core/destructive-git-guard.js +871 -0
  155. package/dist/core/destructive-git-guard.js.map +1 -0
  156. package/dist/core/event-bus.d.ts +3 -0
  157. package/dist/core/event-bus.js +5 -0
  158. package/dist/core/event-bus.js.map +1 -1
  159. package/dist/core/fast-apply-benchmark.d.ts +1 -1
  160. package/dist/core/fast-apply-benchmark.js +2 -2
  161. package/dist/core/fast-apply-benchmark.js.map +1 -1
  162. package/dist/core/injection-detect.d.ts +38 -0
  163. package/dist/core/injection-detect.js +232 -0
  164. package/dist/core/injection-detect.js.map +1 -0
  165. package/dist/core/keep-awake.d.ts +88 -0
  166. package/dist/core/keep-awake.js +251 -0
  167. package/dist/core/keep-awake.js.map +1 -0
  168. package/dist/core/mcp/client.d.ts +72 -0
  169. package/dist/core/mcp/client.js +264 -41
  170. package/dist/core/mcp/client.js.map +1 -1
  171. package/dist/core/mcp/content.js +6 -2
  172. package/dist/core/mcp/content.js.map +1 -1
  173. package/dist/core/mcp/store.d.ts +6 -1
  174. package/dist/core/mcp/store.js +12 -1
  175. package/dist/core/mcp/store.js.map +1 -1
  176. package/dist/core/mcp/types.d.ts +18 -0
  177. package/dist/core/model-unavailable.d.ts +14 -0
  178. package/dist/core/model-unavailable.js +23 -0
  179. package/dist/core/model-unavailable.js.map +1 -0
  180. package/dist/core/node-debugger.d.ts +148 -0
  181. package/dist/core/node-debugger.js +642 -0
  182. package/dist/core/node-debugger.js.map +1 -0
  183. package/dist/core/nolan-context.d.ts +7 -5
  184. package/dist/core/nolan-context.js +106 -16
  185. package/dist/core/nolan-context.js.map +1 -1
  186. package/dist/core/nolan-prompt.js +24 -21
  187. package/dist/core/nolan-prompt.js.map +1 -1
  188. package/dist/core/package-threats.d.ts +18 -0
  189. package/dist/core/package-threats.js +168 -0
  190. package/dist/core/package-threats.js.map +1 -0
  191. package/dist/core/persistent-shell.d.ts +58 -6
  192. package/dist/core/persistent-shell.js +331 -49
  193. package/dist/core/persistent-shell.js.map +1 -1
  194. package/dist/core/process-manager.d.ts +14 -0
  195. package/dist/core/process-manager.js +61 -0
  196. package/dist/core/process-manager.js.map +1 -1
  197. package/dist/core/progress/git-xp.js +8 -14
  198. package/dist/core/progress/git-xp.js.map +1 -1
  199. package/dist/core/project-discovery.js +77 -26
  200. package/dist/core/project-discovery.js.map +1 -1
  201. package/dist/core/semantic-search-benchmark.d.ts +1 -1
  202. package/dist/core/semantic-search-benchmark.js +2 -2
  203. package/dist/core/semantic-search-benchmark.js.map +1 -1
  204. package/dist/core/session-history.d.ts +12 -0
  205. package/dist/core/session-history.js +27 -0
  206. package/dist/core/session-history.js.map +1 -1
  207. package/dist/core/session-manager.d.ts +13 -1
  208. package/dist/core/session-manager.js +38 -18
  209. package/dist/core/session-manager.js.map +1 -1
  210. package/dist/core/session-summary-index.d.ts +37 -0
  211. package/dist/core/session-summary-index.js +172 -0
  212. package/dist/core/session-summary-index.js.map +1 -0
  213. package/dist/core/settings-manager.d.ts +2 -0
  214. package/dist/core/settings-manager.js +10 -0
  215. package/dist/core/settings-manager.js.map +1 -1
  216. package/dist/core/shell-threats-popular-packages.d.ts +11 -0
  217. package/dist/core/shell-threats-popular-packages.js +675 -0
  218. package/dist/core/shell-threats-popular-packages.js.map +1 -0
  219. package/dist/core/shell-threats.d.ts +8 -0
  220. package/dist/core/shell-threats.js +186 -0
  221. package/dist/core/shell-threats.js.map +1 -0
  222. package/dist/core/skills.js +16 -4
  223. package/dist/core/skills.js.map +1 -1
  224. package/dist/core/stream-rules.d.ts +30 -0
  225. package/dist/core/stream-rules.js +151 -0
  226. package/dist/core/stream-rules.js.map +1 -0
  227. package/dist/core/subagent-manager.d.ts +23 -6
  228. package/dist/core/subagent-manager.js +25 -9
  229. package/dist/core/subagent-manager.js.map +1 -1
  230. package/dist/core/subagent-policy.js +1 -1
  231. package/dist/core/subagent-policy.js.map +1 -1
  232. package/dist/core/subagent-receipt.d.ts +54 -0
  233. package/dist/core/subagent-receipt.js +276 -0
  234. package/dist/core/subagent-receipt.js.map +1 -0
  235. package/dist/core/subagent-turn-record.d.ts +2 -0
  236. package/dist/core/subagent-turn-record.js.map +1 -1
  237. package/dist/core/test-impact.d.ts +73 -0
  238. package/dist/core/test-impact.js +467 -0
  239. package/dist/core/test-impact.js.map +1 -0
  240. package/dist/core/thinking-level.d.ts +1 -1
  241. package/dist/core/thinking-level.js +1 -1
  242. package/dist/core/thinking-level.js.map +1 -1
  243. package/dist/core/verification-gate.d.ts +2 -0
  244. package/dist/core/verification-gate.js +4 -0
  245. package/dist/core/verification-gate.js.map +1 -1
  246. package/dist/core/verification-snapshot.js +3 -5
  247. package/dist/core/verification-snapshot.js.map +1 -1
  248. package/dist/core/workspace-guard.d.ts +18 -7
  249. package/dist/core/workspace-guard.js +227 -60
  250. package/dist/core/workspace-guard.js.map +1 -1
  251. package/dist/core/worktree-setup.d.ts +23 -0
  252. package/dist/core/worktree-setup.js +128 -9
  253. package/dist/core/worktree-setup.js.map +1 -1
  254. package/dist/core/worktree.d.ts +20 -2
  255. package/dist/core/worktree.js +74 -31
  256. package/dist/core/worktree.js.map +1 -1
  257. package/dist/interactive.js +2 -1
  258. package/dist/interactive.js.map +1 -1
  259. package/dist/modes/json-mode.js +11 -2
  260. package/dist/modes/json-mode.js.map +1 -1
  261. package/dist/modes/subagent-worker-mode.d.ts +36 -1
  262. package/dist/modes/subagent-worker-mode.js +100 -42
  263. package/dist/modes/subagent-worker-mode.js.map +1 -1
  264. package/dist/motion-agent/motion-agent.d.ts +7 -3
  265. package/dist/motion-agent/motion-agent.js +6 -8
  266. package/dist/motion-agent/motion-agent.js.map +1 -1
  267. package/dist/motion-agent/motion-prompt.d.ts +1 -1
  268. package/dist/motion-agent/motion-prompt.js +16 -25
  269. package/dist/motion-agent/motion-prompt.js.map +1 -1
  270. package/dist/motion-agent/motion-review-session.js +1 -1
  271. package/dist/motion-agent/motion-review-session.js.map +1 -1
  272. package/dist/motion-agent/motion-review.d.ts +10 -3
  273. package/dist/motion-agent/motion-review.js +15 -7
  274. package/dist/motion-agent/motion-review.js.map +1 -1
  275. package/dist/motion-agent/motion-studio-context.js +1 -1
  276. package/dist/motion-agent/motion-studio-context.js.map +1 -1
  277. package/dist/system-prompt.d.ts +2 -1
  278. package/dist/system-prompt.js +15 -4
  279. package/dist/system-prompt.js.map +1 -1
  280. package/dist/test-support/keep-alive.d.ts +14 -0
  281. package/dist/test-support/keep-alive.js +17 -0
  282. package/dist/test-support/keep-alive.js.map +1 -0
  283. package/dist/tools/ask-user.js +3 -3
  284. package/dist/tools/ask-user.js.map +1 -1
  285. package/dist/tools/bash-read-evidence.d.ts +10 -0
  286. package/dist/tools/bash-read-evidence.js +133 -0
  287. package/dist/tools/bash-read-evidence.js.map +1 -0
  288. package/dist/tools/bash.d.ts +10 -1
  289. package/dist/tools/bash.js +179 -7
  290. package/dist/tools/bash.js.map +1 -1
  291. package/dist/tools/debug.d.ts +54 -0
  292. package/dist/tools/debug.js +233 -0
  293. package/dist/tools/debug.js.map +1 -0
  294. package/dist/tools/edit.js +13 -5
  295. package/dist/tools/edit.js.map +1 -1
  296. package/dist/tools/goals.d.ts +1 -1
  297. package/dist/tools/index.d.ts +25 -2
  298. package/dist/tools/index.js +48 -7
  299. package/dist/tools/index.js.map +1 -1
  300. package/dist/tools/prompt-hints.js +2 -0
  301. package/dist/tools/prompt-hints.js.map +1 -1
  302. package/dist/tools/read-tracker.d.ts +35 -2
  303. package/dist/tools/read-tracker.js +108 -11
  304. package/dist/tools/read-tracker.js.map +1 -1
  305. package/dist/tools/read.js +39 -7
  306. package/dist/tools/read.js.map +1 -1
  307. package/dist/tools/skill.js +5 -0
  308. package/dist/tools/skill.js.map +1 -1
  309. package/dist/tools/subagent-control.js +44 -8
  310. package/dist/tools/subagent-control.js.map +1 -1
  311. package/dist/tools/subagent-shared.d.ts +48 -8
  312. package/dist/tools/subagent-shared.js +75 -14
  313. package/dist/tools/subagent-shared.js.map +1 -1
  314. package/dist/tools/subagent.d.ts +8 -2
  315. package/dist/tools/subagent.js +28 -10
  316. package/dist/tools/subagent.js.map +1 -1
  317. package/dist/tools/task-output.js +3 -2
  318. package/dist/tools/task-output.js.map +1 -1
  319. package/dist/tools/task-send.d.ts +1 -1
  320. package/dist/tools/task-send.js +15 -1
  321. package/dist/tools/task-send.js.map +1 -1
  322. package/dist/tools/tool-tiers.d.ts +2 -2
  323. package/dist/tools/tool-tiers.js +3 -2
  324. package/dist/tools/tool-tiers.js.map +1 -1
  325. package/dist/tools/truncate.d.ts +21 -0
  326. package/dist/tools/truncate.js +187 -0
  327. package/dist/tools/truncate.js.map +1 -1
  328. package/dist/tools/ui-adopt.js +2 -0
  329. package/dist/tools/ui-adopt.js.map +1 -1
  330. package/dist/tools/write.js +4 -3
  331. package/dist/tools/write.js.map +1 -1
  332. package/dist/ui/App.d.ts +0 -4
  333. package/dist/ui/App.js +5 -28
  334. package/dist/ui/App.js.map +1 -1
  335. package/dist/ui/components/ActivityIndicator.js +1 -0
  336. package/dist/ui/components/ActivityIndicator.js.map +1 -1
  337. package/dist/ui/components/Footer.js +1 -1
  338. package/dist/ui/components/Footer.js.map +1 -1
  339. package/dist/ui/hooks/useAgentLoop.d.ts +1 -8
  340. package/dist/ui/hooks/useAgentLoop.js +1 -119
  341. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  342. package/dist/ui/render.d.ts +2 -4
  343. package/dist/ui/render.js +3 -2
  344. package/dist/ui/render.js.map +1 -1
  345. package/dist/utils/git.d.ts +77 -0
  346. package/dist/utils/git.js +285 -21
  347. package/dist/utils/git.js.map +1 -1
  348. package/dist/utils/github-ci.js +2 -1
  349. package/dist/utils/github-ci.js.map +1 -1
  350. package/dist/utils/github.js +11 -9
  351. package/dist/utils/github.js.map +1 -1
  352. package/dist/utils/image.d.ts +14 -0
  353. package/dist/utils/image.js +16 -0
  354. package/dist/utils/image.js.map +1 -1
  355. package/dist/utils/process.d.ts +20 -0
  356. package/dist/utils/process.js +98 -0
  357. package/dist/utils/process.js.map +1 -1
  358. package/dist/utils/text.d.ts +12 -0
  359. package/dist/utils/text.js +11 -0
  360. package/dist/utils/text.js.map +1 -1
  361. package/package.json +6 -6
  362. package/assets/motion/skills/mixkit-split-text-617/SKILL.md +0 -115
  363. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-480.json +0 -1
  364. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-494.json +0 -1
  365. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-5.json +0 -1
  366. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-508.json +0 -1
  367. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6525.json +0 -1
  368. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6539.json +0 -1
  369. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6647.json +0 -1
  370. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6663.json +0 -1
  371. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6677.json +0 -1
  372. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6691.json +0 -1
  373. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6706.json +0 -1
  374. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6722.json +0 -1
  375. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6736.json +0 -1
  376. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6750.json +0 -1
  377. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6764.json +0 -1
  378. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6780.json +0 -1
  379. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6794.json +0 -1
  380. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6810.json +0 -1
  381. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6823.json +0 -1
  382. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6872.json +0 -1
  383. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6936.json +0 -1
  384. package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-76.json +0 -1
  385. package/assets/motion/skills/mixkit-split-text-617/data/manifest.json +0 -495
  386. package/assets/motion/skills/mixkit-split-text-617/references/RECONSTRUCTION.md +0 -201
  387. package/assets/motion/skills/mixkit-split-text-617/references/VERIFICATION.md +0 -107
  388. package/assets/motion/skills/mixkit-split-text-617/tools/inspect_motion.py +0 -130
  389. package/assets/motion/skills/video-qa/SKILL.md +0 -66
  390. package/dist/core/ideal-review-subagent.d.ts +0 -42
  391. package/dist/core/ideal-review-subagent.js +0 -95
  392. package/dist/core/ideal-review-subagent.js.map +0 -1
  393. package/dist/core/ideal-review.d.ts +0 -82
  394. package/dist/core/ideal-review.js +0 -242
  395. package/dist/core/ideal-review.js.map +0 -1
  396. package/dist/motion-agent/motion-check-tool.d.ts +0 -21
  397. package/dist/motion-agent/motion-check-tool.js +0 -206
  398. package/dist/motion-agent/motion-check-tool.js.map +0 -1
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Keep the computer from idle-sleeping while the agent works.
3
+ *
4
+ * Autopilot cycles, task sweeps and long runs die halfway when a laptop idles
5
+ * into system sleep. This holds an OS power assertion for as long as any agent
6
+ * work is in flight. Only idle SYSTEM sleep is prevented — the display may
7
+ * still turn off, and an explicit sleep (lid close, menu) still wins.
8
+ *
9
+ * No native dependencies: each platform's own tool holds the assertion in a
10
+ * child process, and the assertion dies with that child.
11
+ *
12
+ * - macOS: `caffeinate -i -w <pid>` — exits by itself when our process dies.
13
+ * - Linux: `systemd-inhibit --what=idle:sleep … tail --pid=<pid> -f /dev/null`
14
+ * — the inhibitor lock lives as long as `tail`, which exits when our process
15
+ * dies. Spawned as its own process group so release kills both. No
16
+ * systemd-inhibit (non-systemd distro) → logged no-op.
17
+ * - Windows: a hidden PowerShell that P/Invokes `SetThreadExecutionState(
18
+ * ES_CONTINUOUS | ES_SYSTEM_REQUIRED)` and then `Wait-Process`es our PID.
19
+ * The execution state is per-thread, so it is cleared when that process ends.
20
+ *
21
+ * Reference-counted: overlapping runs (several windows, a run plus a Nolan reply,
22
+ * background sub-agents) share one OS assertion, which is dropped when the last
23
+ * holder releases.
24
+ */
25
+ import { spawn } from "node:child_process";
26
+ import { log } from "./logger.js";
27
+ /** ES_CONTINUOUS (0x80000000) | ES_SYSTEM_REQUIRED (0x00000001). */
28
+ const WINDOWS_EXECUTION_STATE = 2147483649;
29
+ const LINUX_WHY = "Agent is working";
30
+ function windowsScript(pid) {
31
+ return [
32
+ "$ErrorActionPreference = 'Stop'",
33
+ "$k = Add-Type -Name KeepAwake -Namespace GG -PassThru -MemberDefinition " +
34
+ "'[DllImport(\"kernel32.dll\")] public static extern uint SetThreadExecutionState(uint esFlags);'",
35
+ `if ($k::SetThreadExecutionState([uint32]${WINDOWS_EXECUTION_STATE}) -eq 0) { exit 1 }`,
36
+ // Blocks this (assertion-holding) thread until our process exits; release
37
+ // terminates PowerShell first, which clears the execution state.
38
+ `Wait-Process -Id ${pid} -ErrorAction SilentlyContinue`,
39
+ ].join("\n");
40
+ }
41
+ /** The OS tool that holds an idle-sleep assertion tied to `pid`, or null if none. */
42
+ export function keepAwakeCommand(platform, pid) {
43
+ switch (platform) {
44
+ case "darwin":
45
+ return { command: "caffeinate", args: ["-i", "-w", String(pid)] };
46
+ case "linux":
47
+ return {
48
+ command: "systemd-inhibit",
49
+ args: [
50
+ "--what=idle:sleep",
51
+ "--who=GG",
52
+ `--why=${LINUX_WHY}`,
53
+ "--mode=block",
54
+ "tail",
55
+ `--pid=${pid}`,
56
+ "-f",
57
+ "/dev/null",
58
+ ],
59
+ };
60
+ case "win32":
61
+ return {
62
+ command: "powershell.exe",
63
+ args: [
64
+ "-NoProfile",
65
+ "-NonInteractive",
66
+ "-ExecutionPolicy",
67
+ "Bypass",
68
+ "-WindowStyle",
69
+ "Hidden",
70
+ "-EncodedCommand",
71
+ Buffer.from(windowsScript(pid), "utf16le").toString("base64"),
72
+ ],
73
+ };
74
+ default:
75
+ return null;
76
+ }
77
+ }
78
+ /** Real spawner: argv array, no shell, hidden window, stdio ignored. */
79
+ export function spawnKeepAwakeProcess(cmd) {
80
+ // Linux gets its own process group so release can kill systemd-inhibit AND
81
+ // the `tail` it runs; macOS/Windows holders have no children of their own.
82
+ const group = process.platform === "linux";
83
+ const child = spawn(cmd.command, cmd.args, {
84
+ stdio: "ignore",
85
+ windowsHide: true,
86
+ shell: false,
87
+ detached: group,
88
+ });
89
+ // The holder must never keep the sidecar's event loop alive.
90
+ child.unref();
91
+ return {
92
+ stop() {
93
+ if (child.exitCode !== null || child.signalCode !== null)
94
+ return;
95
+ if (group && child.pid !== undefined) {
96
+ try {
97
+ process.kill(-child.pid, "SIGTERM");
98
+ return;
99
+ }
100
+ catch {
101
+ // Fall through to the single-process kill.
102
+ }
103
+ }
104
+ try {
105
+ child.kill();
106
+ }
107
+ catch {
108
+ // Already gone.
109
+ }
110
+ },
111
+ onExit(listener) {
112
+ child.once("exit", () => listener());
113
+ },
114
+ onError(listener) {
115
+ child.once("error", (error) => listener(error));
116
+ },
117
+ };
118
+ }
119
+ /** Reference-counted holder of one OS idle-sleep assertion. */
120
+ export class KeepAwake {
121
+ holds = new Map();
122
+ nextId = 0;
123
+ enabled;
124
+ child = null;
125
+ /** The platform tool is missing — permanently a no-op for this process. */
126
+ unavailable = false;
127
+ /** The holder died on its own; don't respawn until holders drop to zero. */
128
+ suspended = false;
129
+ exitHookInstalled = false;
130
+ platform;
131
+ pid;
132
+ spawner;
133
+ logLine;
134
+ onProcessExit;
135
+ constructor(options = {}) {
136
+ this.platform = options.platform ?? process.platform;
137
+ this.pid = options.pid ?? process.pid;
138
+ this.enabled = options.enabled ?? true;
139
+ this.spawner = options.spawner ?? spawnKeepAwakeProcess;
140
+ this.logLine =
141
+ options.log ?? ((level, message, data) => log(level, "keep-awake", message, data));
142
+ this.onProcessExit = options.onProcessExit ?? ((cleanup) => process.once("exit", cleanup));
143
+ }
144
+ /** Hold the assertion until the returned release runs. Release is idempotent. */
145
+ acquire(reason) {
146
+ const id = ++this.nextId;
147
+ this.holds.set(id, reason);
148
+ this.sync();
149
+ let released = false;
150
+ return () => {
151
+ if (released)
152
+ return;
153
+ released = true;
154
+ this.holds.delete(id);
155
+ this.sync();
156
+ };
157
+ }
158
+ /** Apply the `keepAwake` setting live; outstanding holds survive a toggle. */
159
+ setEnabled(enabled) {
160
+ if (this.enabled === enabled)
161
+ return;
162
+ this.enabled = enabled;
163
+ this.suspended = false;
164
+ this.sync();
165
+ }
166
+ get isEnabled() {
167
+ return this.enabled;
168
+ }
169
+ get holderCount() {
170
+ return this.holds.size;
171
+ }
172
+ /** True while an OS assertion holder process is running. */
173
+ get asserting() {
174
+ return this.child !== null;
175
+ }
176
+ /** Drop every hold and the OS assertion (shutdown). */
177
+ dispose() {
178
+ this.holds.clear();
179
+ this.suspended = false;
180
+ this.stopChild();
181
+ }
182
+ sync() {
183
+ if (this.holds.size === 0)
184
+ this.suspended = false;
185
+ const want = this.enabled && this.holds.size > 0 && !this.unavailable && !this.suspended;
186
+ if (want && !this.child)
187
+ this.startChild();
188
+ else if (!want && this.child)
189
+ this.stopChild();
190
+ }
191
+ startChild() {
192
+ const cmd = keepAwakeCommand(this.platform, this.pid);
193
+ if (!cmd) {
194
+ this.unavailable = true;
195
+ this.logLine("INFO", "keep-awake unsupported on this platform; skipping", {
196
+ platform: this.platform,
197
+ });
198
+ return;
199
+ }
200
+ let child;
201
+ try {
202
+ child = this.spawner(cmd);
203
+ }
204
+ catch (error) {
205
+ this.markUnavailable(cmd, error);
206
+ return;
207
+ }
208
+ this.child = child;
209
+ if (!this.exitHookInstalled) {
210
+ this.exitHookInstalled = true;
211
+ this.onProcessExit(() => this.dispose());
212
+ }
213
+ child.onError((error) => {
214
+ if (this.child !== child)
215
+ return;
216
+ this.child = null;
217
+ this.markUnavailable(cmd, error);
218
+ });
219
+ child.onExit(() => {
220
+ // A holder we stopped, or a superseded one, is expected to exit.
221
+ if (this.child !== child)
222
+ return;
223
+ this.child = null;
224
+ this.suspended = true;
225
+ this.logLine("WARN", "keep-awake holder exited unexpectedly", { command: cmd.command });
226
+ });
227
+ this.logLine("INFO", "keep-awake on", {
228
+ command: cmd.command,
229
+ reasons: [...new Set(this.holds.values())].join(","),
230
+ });
231
+ }
232
+ stopChild() {
233
+ const child = this.child;
234
+ if (!child)
235
+ return;
236
+ this.child = null;
237
+ child.stop();
238
+ this.logLine("INFO", "keep-awake off");
239
+ }
240
+ markUnavailable(cmd, error) {
241
+ this.unavailable = true;
242
+ const code = error?.code;
243
+ this.logLine("INFO", code === "ENOENT"
244
+ ? "keep-awake tool not found; skipping"
245
+ : "keep-awake tool failed to start; skipping", {
246
+ command: cmd.command,
247
+ error: error instanceof Error ? error.message : String(error),
248
+ });
249
+ }
250
+ }
251
+ //# sourceMappingURL=keep-awake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keep-awake.js","sourceRoot":"","sources":["../../src/core/keep-awake.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,29 @@ import type { AgentTool } from "@prestyj/agent";
3
3
  import type { MCPServerConfig } from "./types.js";
4
4
  import { McpCatalogCache } from "./catalog-cache.js";
5
5
  import { type SharedMcpPool } from "./shared-pool.js";
6
+ /**
7
+ * How long a stdio server may sit with no call in flight before its process is
8
+ * stopped. It is respawned transparently on the next call.
9
+ *
10
+ * 15 min, deliberately longer than pi-mcp-adapter's 10 min default: one pooled
11
+ * child here serves every window in the daemon, so a premature stop is paid as
12
+ * a cold start (`npx`/node boot + handshake, often seconds) by whichever chat
13
+ * calls next. 15 min still covers the read/think/edit pauses inside one task
14
+ * while reclaiming servers a session touched once and moved on from.
15
+ */
16
+ export declare const MCP_DEFAULT_IDLE_TIMEOUT_MS: number;
17
+ /**
18
+ * Default per-call window without a response or progress notification. Equal
19
+ * to the SDK's own `DEFAULT_REQUEST_TIMEOUT_MSEC`; `config.timeout` overrides.
20
+ */
21
+ export declare const MCP_DEFAULT_CALL_TIMEOUT_MS = 60000;
22
+ /**
23
+ * Default hard cap on one tool call, however much progress it reports — so a
24
+ * server stuck in a progress loop cannot hold a turn forever. Generous because
25
+ * the tools that report progress are the long ones (builds, crawls, renders);
26
+ * `config.maxTotalTimeout` overrides.
27
+ */
28
+ export declare const MCP_DEFAULT_MAX_TOTAL_TIMEOUT_MS: number;
6
29
  /** Per-server connection outcome for the dashboard / non-interactive list. */
7
30
  export interface MCPConnectResult {
8
31
  name: string;
@@ -20,6 +43,15 @@ export interface MCPLoginResult {
20
43
  toolCount: number;
21
44
  error?: string;
22
45
  }
46
+ /**
47
+ * A failed MCP tool call. Thrown (not returned as text) so the agent loop
48
+ * records the result as an error: the app shows it as failed and receipts,
49
+ * the loop breaker and verification all see a failure, not a success whose
50
+ * text happens to say "error". The message is what the model reads.
51
+ */
52
+ export declare class McpToolError extends Error {
53
+ readonly name = "McpToolError";
54
+ }
23
55
  /** Terminal state of one server's connection attempt, awaited by `whenConnected`. */
24
56
  type ConnectionOutcome = {
25
57
  ok: true;
@@ -88,13 +120,53 @@ export declare class MCPClientManager {
88
120
  private readonly onServerClosed?;
89
121
  /** Set while `dispose` runs, so our own teardown is not reported as a death. */
90
122
  private disposing;
123
+ /** Idle period before a stdio server is stopped; 0 disables idle shutdown. */
124
+ private readonly idleTimeoutMs;
125
+ /** Idle bookkeeping per server name, for servers eligible for idle shutdown. */
126
+ private idle;
127
+ /**
128
+ * Clients we closed ON PURPOSE for idleness. Their `onclose` must not be
129
+ * reported as a death — that would make the pool evict a connection whose
130
+ * tools are still published and which will respawn on the next call.
131
+ */
132
+ private idleStopped;
91
133
  constructor(opts?: {
92
134
  catalogCache?: McpCatalogCache;
93
135
  modernProtocol?: boolean;
94
136
  onElicit?: MCPElicitHandler;
95
137
  sharedPool?: SharedMcpPool;
96
138
  onServerClosed?: (name: string) => void;
139
+ /** Override `MCP_DEFAULT_IDLE_TIMEOUT_MS`; 0 disables idle shutdown. */
140
+ idleTimeoutMs?: number;
97
141
  });
142
+ /**
143
+ * Does this server get stopped when idle?
144
+ *
145
+ * Only stdio servers: idle shutdown exists to reclaim a child PROCESS, and an
146
+ * HTTP server has none on our side. Closing one would save nothing locally
147
+ * while throwing away its `Mcp-Session-Id` (server-side state) and forcing a
148
+ * fresh handshake — possibly an OAuth refresh — on the next call.
149
+ * `keepAlive: true` opts a stdio server out for state held in its process.
150
+ */
151
+ private idleEligible;
152
+ private idleState;
153
+ /** (Re)start the idle countdown for a server, unless a call is in flight. */
154
+ private armIdleTimer;
155
+ /**
156
+ * Stop an idle server's process, keeping its published tools. The entry is
157
+ * removed from `this.servers` synchronously, so a call landing during the
158
+ * close sees "not running" and respawns rather than using a closing client.
159
+ */
160
+ private stopIdleServer;
161
+ /**
162
+ * Make sure an idle-stopped server is running again before a call. Concurrent
163
+ * calls share one respawn. The fresh tool list is persisted to the catalog
164
+ * cache by `connectServer` but NOT republished: the model keeps the tools it
165
+ * already has, so a stop/restart cycle never churns the prompt.
166
+ */
167
+ private ensureRunning;
168
+ /** Is this server's connection currently live? Diagnostic/test use. */
169
+ isServerRunning(name: string): boolean;
98
170
  /**
99
171
  * Build a `Client` for one server, declaring elicitation support and wiring
100
172
  * the handler when the host can actually prompt the user.