@prestyj/cli 5.29.0 → 5.30.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 (137) hide show
  1. package/assets/motion/skills/app-walkthrough/SKILL.md +4 -0
  2. package/assets/motion/skills/before-after/SKILL.md +4 -0
  3. package/assets/motion/skills/dev-tool-video/SKILL.md +4 -0
  4. package/assets/motion/skills/launch-video/SKILL.md +4 -0
  5. package/assets/motion/skills/match-reference/SKILL.md +4 -0
  6. package/assets/motion/skills/motion/SKILL.md +78 -21
  7. package/assets/motion/skills/website-video/SKILL.md +47 -30
  8. package/assets/skills/bulletproof/SKILL.md +1 -1
  9. package/assets/skills/compliance-guard/references/us.md +1 -1
  10. package/assets/skills/lean/SKILL.md +1 -1
  11. package/assets/skills/refactoring/SKILL.md +3 -1
  12. package/dist/app-error.d.ts +21 -0
  13. package/dist/app-error.js +39 -0
  14. package/dist/app-error.js.map +1 -0
  15. package/dist/app-sidecar.js +42 -35
  16. package/dist/app-sidecar.js.map +1 -1
  17. package/dist/cli/thinking-arg.d.ts +6 -0
  18. package/dist/cli/thinking-arg.js +13 -0
  19. package/dist/cli/thinking-arg.js.map +1 -0
  20. package/dist/cli.d.ts +1 -2
  21. package/dist/cli.js +5 -8
  22. package/dist/cli.js.map +1 -1
  23. package/dist/core/agent-session.d.ts +3 -2
  24. package/dist/core/agent-session.js +34 -10
  25. package/dist/core/agent-session.js.map +1 -1
  26. package/dist/core/checklist-detection.d.ts +11 -0
  27. package/dist/core/checklist-detection.js +238 -0
  28. package/dist/core/checklist-detection.js.map +1 -0
  29. package/dist/core/checklist-items.d.ts +180 -0
  30. package/dist/core/checklist-items.js +204 -0
  31. package/dist/core/checklist-items.js.map +1 -0
  32. package/dist/core/checklist-prompt.d.ts +3 -0
  33. package/dist/core/checklist-prompt.js +34 -0
  34. package/dist/core/checklist-prompt.js.map +1 -0
  35. package/dist/core/checklist-snapshot.d.ts +13 -0
  36. package/dist/core/checklist-snapshot.js +29 -0
  37. package/dist/core/checklist-snapshot.js.map +1 -0
  38. package/dist/core/checklist-store.d.ts +59 -0
  39. package/dist/core/checklist-store.js +242 -0
  40. package/dist/core/checklist-store.js.map +1 -0
  41. package/dist/core/codex-request-shape.d.ts +12 -0
  42. package/dist/core/codex-request-shape.js +31 -0
  43. package/dist/core/codex-request-shape.js.map +1 -0
  44. package/dist/core/compaction/compactor.js +6 -0
  45. package/dist/core/compaction/compactor.js.map +1 -1
  46. package/dist/core/lsp/client.d.ts +4 -0
  47. package/dist/core/lsp/client.js +71 -3
  48. package/dist/core/lsp/client.js.map +1 -1
  49. package/dist/core/lsp/manager.d.ts +1 -0
  50. package/dist/core/lsp/manager.js +9 -3
  51. package/dist/core/lsp/manager.js.map +1 -1
  52. package/dist/core/lsp/project-root.d.ts +9 -0
  53. package/dist/core/lsp/project-root.js +75 -0
  54. package/dist/core/lsp/project-root.js.map +1 -0
  55. package/dist/core/lsp/reference-project.d.ts +6 -0
  56. package/dist/core/lsp/reference-project.js +110 -0
  57. package/dist/core/lsp/reference-project.js.map +1 -0
  58. package/dist/core/lsp/servers.js +1 -0
  59. package/dist/core/lsp/servers.js.map +1 -1
  60. package/dist/core/nolan-context.js +7 -3
  61. package/dist/core/nolan-context.js.map +1 -1
  62. package/dist/core/prompt-commands.js +95 -0
  63. package/dist/core/prompt-commands.js.map +1 -1
  64. package/dist/core/settings-manager.d.ts +10 -0
  65. package/dist/core/settings-manager.js +10 -0
  66. package/dist/core/settings-manager.js.map +1 -1
  67. package/dist/core/subagent-manager.d.ts +2 -1
  68. package/dist/core/subagent-manager.js +8 -5
  69. package/dist/core/subagent-manager.js.map +1 -1
  70. package/dist/core/subagent-receipt.js +3 -1
  71. package/dist/core/subagent-receipt.js.map +1 -1
  72. package/dist/modes/acp-mode.d.ts +2 -1
  73. package/dist/modes/acp-mode.js +4 -1
  74. package/dist/modes/acp-mode.js.map +1 -1
  75. package/dist/modes/subagent-worker-mode.d.ts +2 -0
  76. package/dist/modes/subagent-worker-mode.js +1 -3
  77. package/dist/modes/subagent-worker-mode.js.map +1 -1
  78. package/dist/motion-agent/motion-prompt.d.ts +1 -1
  79. package/dist/motion-agent/motion-prompt.js +4 -3
  80. package/dist/motion-agent/motion-prompt.js.map +1 -1
  81. package/dist/motion-agent/motion-review-session.js +7 -3
  82. package/dist/motion-agent/motion-review-session.js.map +1 -1
  83. package/dist/system-prompt.js +15 -13
  84. package/dist/system-prompt.js.map +1 -1
  85. package/dist/tools/bash.d.ts +4 -1
  86. package/dist/tools/bash.js +32 -7
  87. package/dist/tools/bash.js.map +1 -1
  88. package/dist/tools/checklist.d.ts +56 -0
  89. package/dist/tools/checklist.js +178 -0
  90. package/dist/tools/checklist.js.map +1 -0
  91. package/dist/tools/code-nav.d.ts +1 -1
  92. package/dist/tools/code-nav.js +3 -2
  93. package/dist/tools/code-nav.js.map +1 -1
  94. package/dist/tools/edit-targets.d.ts +10 -0
  95. package/dist/tools/edit-targets.js +31 -0
  96. package/dist/tools/edit-targets.js.map +1 -0
  97. package/dist/tools/edit.d.ts +11 -3
  98. package/dist/tools/edit.js +386 -312
  99. package/dist/tools/edit.js.map +1 -1
  100. package/dist/tools/exit-plan.d.ts +2 -2
  101. package/dist/tools/exit-plan.js +7 -1
  102. package/dist/tools/exit-plan.js.map +1 -1
  103. package/dist/tools/index.d.ts +5 -3
  104. package/dist/tools/index.js +5 -1
  105. package/dist/tools/index.js.map +1 -1
  106. package/dist/tools/prompt-hints.js +6 -1
  107. package/dist/tools/prompt-hints.js.map +1 -1
  108. package/dist/tools/skill.js +6 -3
  109. package/dist/tools/skill.js.map +1 -1
  110. package/dist/tools/subagent-shared.d.ts +6 -8
  111. package/dist/tools/subagent-shared.js +17 -11
  112. package/dist/tools/subagent-shared.js.map +1 -1
  113. package/dist/tools/subagent.d.ts +8 -1
  114. package/dist/tools/subagent.js +21 -9
  115. package/dist/tools/subagent.js.map +1 -1
  116. package/dist/tools/tasks.d.ts +1 -1
  117. package/dist/tools/tool-tiers.d.ts +6 -0
  118. package/dist/tools/tool-tiers.js +8 -1
  119. package/dist/tools/tool-tiers.js.map +1 -1
  120. package/dist/tools/verification-review.d.ts +2 -0
  121. package/dist/tools/verification-review.js +41 -0
  122. package/dist/tools/verification-review.js.map +1 -0
  123. package/dist/ui/App.js +8 -3
  124. package/dist/ui/App.js.map +1 -1
  125. package/dist/ui/components/ToolExecution.js +3 -2
  126. package/dist/ui/components/ToolExecution.js.map +1 -1
  127. package/dist/ui/hooks/useModeState.js +15 -0
  128. package/dist/ui/hooks/useModeState.js.map +1 -1
  129. package/dist/ui/terminal-history.js +3 -1
  130. package/dist/ui/terminal-history.js.map +1 -1
  131. package/dist/ui/tool-line-summary.js +14 -2
  132. package/dist/ui/tool-line-summary.js.map +1 -1
  133. package/dist/ui/transcript/tool-presentation.js +1 -1
  134. package/dist/ui/transcript/tool-presentation.js.map +1 -1
  135. package/dist/utils/format.js +5 -1
  136. package/dist/utils/format.js.map +1 -1
  137. package/package.json +4 -4
@@ -2,9 +2,9 @@ import { z } from "zod";
2
2
  import type { AgentTool } from "@prestyj/agent";
3
3
  declare const TasksParams: z.ZodObject<{
4
4
  action: z.ZodEnum<{
5
+ update: "update";
5
6
  done: "done";
6
7
  list: "list";
7
- update: "update";
8
8
  add: "add";
9
9
  remove: "remove";
10
10
  }>;
@@ -24,6 +24,12 @@ export declare const CORE_TOOL_NAMES: readonly string[];
24
24
  * called. Each one is either rare (image generation, screenshots, the
25
25
  * debugger, package source resolution) or only reachable after another tool has already run
26
26
  * (the child-agent control cluster follows `spawn_agent`).
27
+ *
28
+ * `web_search` moved here after a 30-day usage count over 718 local sessions
29
+ * found it in ~6% of working sessions. `task_send`
30
+ * stays core even though it is rarer: bash's own description points at it,
31
+ * and promoting it mid-session would change the tool list, which restarts
32
+ * Anthropic's prompt cache (tools are cached ahead of system and messages).
27
33
  */
28
34
  export declare const DEFERRED_TOOL_NAMES: readonly string[];
29
35
  export interface ToolTierPartition {
@@ -31,7 +31,6 @@ export const CORE_TOOL_NAMES = [
31
31
  "ls",
32
32
  "code_search",
33
33
  "code_nav",
34
- "web_search",
35
34
  "web_fetch",
36
35
  "steroids",
37
36
  "task_output",
@@ -50,8 +49,15 @@ export const CORE_TOOL_NAMES = [
50
49
  * called. Each one is either rare (image generation, screenshots, the
51
50
  * debugger, package source resolution) or only reachable after another tool has already run
52
51
  * (the child-agent control cluster follows `spawn_agent`).
52
+ *
53
+ * `web_search` moved here after a 30-day usage count over 718 local sessions
54
+ * found it in ~6% of working sessions. `task_send`
55
+ * stays core even though it is rarer: bash's own description points at it,
56
+ * and promoting it mid-session would change the tool list, which restarts
57
+ * Anthropic's prompt cache (tools are cached ahead of system and messages).
53
58
  */
54
59
  export const DEFERRED_TOOL_NAMES = [
60
+ "web_search",
55
61
  "ui_registry",
56
62
  "ui_adopt",
57
63
  "source_path",
@@ -59,6 +65,7 @@ export const DEFERRED_TOOL_NAMES = [
59
65
  "debug",
60
66
  "generate_image",
61
67
  "tasks",
68
+ "checklist",
62
69
  "send_message",
63
70
  "followup_task",
64
71
  "wait_agent",
@@ -1 +1 @@
1
- {"version":3,"file":"tool-tiers.js","sourceRoot":"","sources":["../../src/tools/tool-tiers.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsB;IAChD,0EAA0E;IAC1E,sEAAsE;IACtE,4EAA4E;IAC5E,UAAU;IACV,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,aAAa;IACb,UAAU;IACV,YAAY;IACZ,WAAW;IACX,UAAU;IACV,aAAa;IACb,WAAW;IACX,WAAW;IACX,UAAU;IACV,aAAa;IACb,OAAO;IACP,YAAY;IACZ,WAAW;IACX,aAAa;IACb,OAAO;CACR,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,aAAa;IACb,UAAU;IACV,aAAa;IACb,YAAY;IACZ,OAAO;IACP,gBAAgB;IAChB,OAAO;IACP,cAAc;IACd,eAAe;IACf,YAAY;IACZ,aAAa;IACb,iBAAiB;CAClB,CAAC;AAEF,MAAM,YAAY,GAAwB,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;AASvE;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAA2B;IAC9D,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAChD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"tool-tiers.js","sourceRoot":"","sources":["../../src/tools/tool-tiers.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsB;IAChD,0EAA0E;IAC1E,sEAAsE;IACtE,4EAA4E;IAC5E,UAAU;IACV,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,aAAa;IACb,UAAU;IACV,WAAW;IACX,UAAU;IACV,aAAa;IACb,WAAW;IACX,WAAW;IACX,UAAU;IACV,aAAa;IACb,OAAO;IACP,YAAY;IACZ,WAAW;IACX,aAAa;IACb,OAAO;CACR,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,YAAY;IACZ,aAAa;IACb,UAAU;IACV,aAAa;IACb,YAAY;IACZ,OAAO;IACP,gBAAgB;IAChB,OAAO;IACP,WAAW;IACX,cAAc;IACd,eAAe;IACf,YAAY;IACZ,aAAa;IACb,iBAAiB;CAClB,CAAC;AAEF,MAAM,YAAY,GAAwB,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;AASvE;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAA2B;IAC9D,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAChD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** Read-only companion to a completed check; never supplies verification evidence. */
2
+ export declare function collectVerificationReview(cwd: string, signal: AbortSignal): Promise<string>;
@@ -0,0 +1,41 @@
1
+ import { runBackgroundGit } from "../utils/git.js";
2
+ import { log } from "../core/logger.js";
3
+ /** Read-only companion to a completed check; never supplies verification evidence. */
4
+ export async function collectVerificationReview(cwd, signal) {
5
+ if (signal.aborted)
6
+ return "Review not collected: cancelled. The check result above is unchanged.";
7
+ const controller = new AbortController();
8
+ const combined = AbortSignal.any([signal, controller.signal]);
9
+ const timer = setTimeout(() => controller.abort(), 5_000);
10
+ const started = performance.now();
11
+ try {
12
+ const options = { cwd, signal: combined, timeoutMs: 3_000, maxBuffer: 128 * 1024 };
13
+ // Use the existing hardened runner: no repo hooks, filters, external diff,
14
+ // textconv, submodule traversal or lazy network fetch. No model shell text.
15
+ const [status, diff] = await Promise.all([
16
+ runBackgroundGit(["status", "--short", "--untracked-files=normal", "--", "."], options),
17
+ runBackgroundGit(["diff", "--no-color", "--no-renames", "--ignore-submodules=all", "--", "."], options),
18
+ ]);
19
+ log("DEBUG", "verification-review", "Collected worktree review", {
20
+ cwd,
21
+ ms: Math.round(performance.now() - started),
22
+ });
23
+ return ("Read-only review (not another verification check). Tracked worktree diff against the index only; staged/untracked contents are not shown. Submodule contents are excluded. Inspect relevant omitted files separately.\n\n" +
24
+ "Status:\n" +
25
+ (status.stdout || "(clean)\n") +
26
+ "\nWorktree diff:\n" +
27
+ (diff.stdout || "(no tracked worktree changes)\n"));
28
+ }
29
+ catch {
30
+ log("DEBUG", "verification-review", "Worktree review unavailable or incomplete", {
31
+ cwd,
32
+ ms: Math.round(performance.now() - started),
33
+ });
34
+ return "Review unavailable or incomplete (not a Git repo, output limit, timeout, or cancellation). The check result above is unchanged; do not claim the diff was reviewed.";
35
+ }
36
+ finally {
37
+ clearTimeout(timer);
38
+ controller.abort();
39
+ }
40
+ }
41
+ //# sourceMappingURL=verification-review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-review.js","sourceRoot":"","sources":["../../src/tools/verification-review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,GAAW,EAAE,MAAmB;IAC9E,IAAI,MAAM,CAAC,OAAO;QAChB,OAAO,uEAAuE,CAAC;IACjF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,GAAG,IAAI,EAAE,CAAC;QACnF,2EAA2E;QAC3E,4EAA4E;QAC5E,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,0BAA0B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;YACvF,gBAAgB,CACd,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,yBAAyB,EAAE,IAAI,EAAE,GAAG,CAAC,EAC5E,OAAO,CACR;SACF,CAAC,CAAC;QACH,GAAG,CAAC,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE;YAC/D,GAAG;YACH,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;SAC5C,CAAC,CAAC;QACH,OAAO,CACL,2NAA2N;YAC3N,WAAW;YACX,CAAC,MAAM,CAAC,MAAM,IAAI,WAAW,CAAC;YAC9B,oBAAoB;YACpB,CAAC,IAAI,CAAC,MAAM,IAAI,iCAAiC,CAAC,CACnD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,OAAO,EAAE,qBAAqB,EAAE,2CAA2C,EAAE;YAC/E,GAAG;YACH,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;SAC5C,CAAC,CAAC;QACH,OAAO,qKAAqK,CAAC;IAC/K,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
package/dist/ui/App.js CHANGED
@@ -19,6 +19,7 @@ import { VerificationGate, isCodeFilePath, isVerificationCommand, } from "../cor
19
19
  import { useAgentLoop } from "./hooks/useAgentLoop.js";
20
20
  import { useTranscriptHistory } from "./hooks/useTranscriptHistory.js";
21
21
  import { createWebSearchTool } from "../tools/web-search.js";
22
+ import { editTargetPaths } from "../tools/edit-targets.js";
22
23
  import { ChatScreen } from "./components/ChatScreen.js";
23
24
  import { LIVE_TOOL_PANEL_ROWS } from "./components/LiveToolPanel.js";
24
25
  import { FullScreenOverlayRouter } from "./components/FullScreenOverlayRouter.js";
@@ -347,6 +348,7 @@ export function App(props) {
347
348
  const currentToolsRef = useRef(props.tools);
348
349
  const [thinkingLevel, setThinkingLevel] = useState(props.thinking);
349
350
  const thinkingLevelRef = useRef(props.thinking);
351
+ currentProviderRef.current = currentProvider;
350
352
  currentModelRef.current = currentModel;
351
353
  thinkingLevelRef.current = thinkingLevel;
352
354
  const [renderMarkdown, setRenderMarkdown] = useState(true);
@@ -1139,9 +1141,12 @@ export function App(props) {
1139
1141
  // Verification-gate bookkeeping, mirroring AgentSession.trackHookEvent:
1140
1142
  // successful code mutations vs completed foreground verification runs.
1141
1143
  if (!isError && args) {
1142
- const filePath = String(args.file_path ?? "");
1143
- if ((name === "edit" || name === "write") && isCodeFilePath(filePath)) {
1144
- verificationGateRef.current.recordMutation(filePath);
1144
+ if (name === "edit" || name === "write") {
1145
+ // A multi-file edit has no top-level file_path: record every target.
1146
+ for (const filePath of editTargetPaths(args)) {
1147
+ if (isCodeFilePath(filePath))
1148
+ verificationGateRef.current.recordMutation(filePath);
1149
+ }
1145
1150
  }
1146
1151
  if (name === "bash" &&
1147
1152
  !args.run_in_background &&