@patze/code-cli 0.18.0 → 0.24.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 (129) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/VERSION +1 -1
  3. package/dist/backend/agent-trace.d.ts +4 -0
  4. package/dist/backend/agent-trace.d.ts.map +1 -1
  5. package/dist/backend/agent-trace.js +13 -0
  6. package/dist/backend/agent-trace.js.map +1 -1
  7. package/dist/backend/cancel-client.d.ts +19 -0
  8. package/dist/backend/cancel-client.d.ts.map +1 -0
  9. package/dist/backend/cancel-client.js +45 -0
  10. package/dist/backend/cancel-client.js.map +1 -0
  11. package/dist/backend/execute-client.d.ts +2 -0
  12. package/dist/backend/execute-client.d.ts.map +1 -1
  13. package/dist/backend/execute-client.js +2 -0
  14. package/dist/backend/execute-client.js.map +1 -1
  15. package/dist/backend/preview-payload.d.ts +8 -0
  16. package/dist/backend/preview-payload.d.ts.map +1 -1
  17. package/dist/backend/preview-payload.js +36 -1
  18. package/dist/backend/preview-payload.js.map +1 -1
  19. package/dist/backend/run-record.d.ts +2 -0
  20. package/dist/backend/run-record.d.ts.map +1 -1
  21. package/dist/backend/run-record.js +3 -1
  22. package/dist/backend/run-record.js.map +1 -1
  23. package/dist/cli/commands/agent.d.ts.map +1 -1
  24. package/dist/cli/commands/agent.js +34 -11
  25. package/dist/cli/commands/agent.js.map +1 -1
  26. package/dist/cli/commands/exec.d.ts +5 -0
  27. package/dist/cli/commands/exec.d.ts.map +1 -0
  28. package/dist/cli/commands/exec.js +80 -0
  29. package/dist/cli/commands/exec.js.map +1 -0
  30. package/dist/cli/help.d.ts.map +1 -1
  31. package/dist/cli/help.js +1 -0
  32. package/dist/cli/help.js.map +1 -1
  33. package/dist/cli/interactive/agent-activity.d.ts +11 -0
  34. package/dist/cli/interactive/agent-activity.d.ts.map +1 -0
  35. package/dist/cli/interactive/agent-activity.js +41 -0
  36. package/dist/cli/interactive/agent-activity.js.map +1 -0
  37. package/dist/cli/interactive/agent-event-feed.d.ts +14 -0
  38. package/dist/cli/interactive/agent-event-feed.d.ts.map +1 -0
  39. package/dist/cli/interactive/agent-event-feed.js +151 -0
  40. package/dist/cli/interactive/agent-event-feed.js.map +1 -0
  41. package/dist/cli/interactive/agent-events.d.ts +45 -0
  42. package/dist/cli/interactive/agent-events.d.ts.map +1 -0
  43. package/dist/cli/interactive/agent-events.js +70 -0
  44. package/dist/cli/interactive/agent-events.js.map +1 -0
  45. package/dist/cli/interactive/agent-execute-turn.d.ts +7 -0
  46. package/dist/cli/interactive/agent-execute-turn.d.ts.map +1 -1
  47. package/dist/cli/interactive/agent-execute-turn.js +163 -119
  48. package/dist/cli/interactive/agent-execute-turn.js.map +1 -1
  49. package/dist/cli/interactive/agent-stream-format.d.ts +6 -2
  50. package/dist/cli/interactive/agent-stream-format.d.ts.map +1 -1
  51. package/dist/cli/interactive/agent-stream-format.js +71 -18
  52. package/dist/cli/interactive/agent-stream-format.js.map +1 -1
  53. package/dist/cli/interactive/agent-turn-classify.d.ts +1 -1
  54. package/dist/cli/interactive/agent-turn-classify.d.ts.map +1 -1
  55. package/dist/cli/interactive/agent-turn-classify.js +25 -9
  56. package/dist/cli/interactive/agent-turn-classify.js.map +1 -1
  57. package/dist/cli/interactive/agent-turn-context.d.ts +2 -0
  58. package/dist/cli/interactive/agent-turn-context.d.ts.map +1 -1
  59. package/dist/cli/interactive/agent-turn-context.js +8 -2
  60. package/dist/cli/interactive/agent-turn-context.js.map +1 -1
  61. package/dist/cli/interactive/agent-turn-format.d.ts +2 -0
  62. package/dist/cli/interactive/agent-turn-format.d.ts.map +1 -1
  63. package/dist/cli/interactive/agent-turn-format.js +38 -7
  64. package/dist/cli/interactive/agent-turn-format.js.map +1 -1
  65. package/dist/cli/interactive/agent-turn.d.ts +6 -0
  66. package/dist/cli/interactive/agent-turn.d.ts.map +1 -1
  67. package/dist/cli/interactive/agent-turn.js +48 -45
  68. package/dist/cli/interactive/agent-turn.js.map +1 -1
  69. package/dist/cli/interactive/feed-run-stats.d.ts +9 -0
  70. package/dist/cli/interactive/feed-run-stats.d.ts.map +1 -0
  71. package/dist/cli/interactive/feed-run-stats.js +51 -0
  72. package/dist/cli/interactive/feed-run-stats.js.map +1 -0
  73. package/dist/cli/interactive/header.d.ts +6 -1
  74. package/dist/cli/interactive/header.d.ts.map +1 -1
  75. package/dist/cli/interactive/header.js +7 -3
  76. package/dist/cli/interactive/header.js.map +1 -1
  77. package/dist/cli/interactive/json-agent-stream.d.ts +8 -0
  78. package/dist/cli/interactive/json-agent-stream.d.ts.map +1 -0
  79. package/dist/cli/interactive/json-agent-stream.js +14 -0
  80. package/dist/cli/interactive/json-agent-stream.js.map +1 -0
  81. package/dist/cli/interactive/model-command.d.ts.map +1 -1
  82. package/dist/cli/interactive/model-command.js +37 -3
  83. package/dist/cli/interactive/model-command.js.map +1 -1
  84. package/dist/cli/interactive/plain-agent-render.d.ts +16 -0
  85. package/dist/cli/interactive/plain-agent-render.d.ts.map +1 -0
  86. package/dist/cli/interactive/plain-agent-render.js +69 -0
  87. package/dist/cli/interactive/plain-agent-render.js.map +1 -0
  88. package/dist/cli/interactive/session-controller.d.ts +4 -0
  89. package/dist/cli/interactive/session-controller.d.ts.map +1 -1
  90. package/dist/cli/interactive/session-controller.js +23 -2
  91. package/dist/cli/interactive/session-controller.js.map +1 -1
  92. package/dist/cli/interactive/session-store.d.ts +3 -0
  93. package/dist/cli/interactive/session-store.d.ts.map +1 -1
  94. package/dist/cli/interactive/session-store.js +3 -0
  95. package/dist/cli/interactive/session-store.js.map +1 -1
  96. package/dist/cli/interactive/session.d.ts +19 -0
  97. package/dist/cli/interactive/session.d.ts.map +1 -1
  98. package/dist/cli/interactive/session.js +44 -0
  99. package/dist/cli/interactive/session.js.map +1 -1
  100. package/dist/cli/interactive/slash-dispatch.d.ts +3 -0
  101. package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -1
  102. package/dist/cli/interactive/slash-dispatch.js +3 -0
  103. package/dist/cli/interactive/slash-dispatch.js.map +1 -1
  104. package/dist/cli/interactive/tool-arg-summary.d.ts +7 -0
  105. package/dist/cli/interactive/tool-arg-summary.d.ts.map +1 -0
  106. package/dist/cli/interactive/tool-arg-summary.js +86 -0
  107. package/dist/cli/interactive/tool-arg-summary.js.map +1 -0
  108. package/dist/cli/interactive/trace-glyphs.d.ts +13 -0
  109. package/dist/cli/interactive/trace-glyphs.d.ts.map +1 -0
  110. package/dist/cli/interactive/trace-glyphs.js +175 -0
  111. package/dist/cli/interactive/trace-glyphs.js.map +1 -0
  112. package/dist/cli/interactive/transcript-line-parse.js +2 -2
  113. package/dist/cli/interactive/transcript-line-parse.js.map +1 -1
  114. package/dist/cli/interactive/transcript-upsert.d.ts.map +1 -1
  115. package/dist/cli/interactive/transcript-upsert.js +21 -4
  116. package/dist/cli/interactive/transcript-upsert.js.map +1 -1
  117. package/dist/cli/main.d.ts.map +1 -1
  118. package/dist/cli/main.js +5 -0
  119. package/dist/cli/main.js.map +1 -1
  120. package/dist/config/model-preferences.d.ts +13 -0
  121. package/dist/config/model-preferences.d.ts.map +1 -0
  122. package/dist/config/model-preferences.js +50 -0
  123. package/dist/config/model-preferences.js.map +1 -0
  124. package/dist/config/models.d.ts +2 -1
  125. package/dist/config/models.d.ts.map +1 -1
  126. package/dist/config/models.js +5 -2
  127. package/dist/config/models.js.map +1 -1
  128. package/opentui/src/App.tsx +40 -5
  129. package/package.json +1 -1
@@ -38,14 +38,17 @@ export function resolveEffectiveModel(input) {
38
38
  }
39
39
  return DEFAULT_PATZE_MODEL;
40
40
  }
41
- export function formatModelPickerLines(current) {
41
+ export function formatModelPickerLines(current, prefs) {
42
42
  const lines = [`Model · current: ${current}`, ""];
43
+ if (prefs) {
44
+ lines.push(` thinking ${prefs.thinking === null ? "auto" : prefs.thinking ? "on" : "off"} · fast ${prefs.fast === null ? "auto" : prefs.fast ? "on" : "off"}`, "");
45
+ }
43
46
  for (const model of PATZE_SUPPORTED_MODELS) {
44
47
  const marker = model.toLowerCase() === current.toLowerCase() ? "›" : " ";
45
48
  lines.push(` ${marker} ${model}`);
46
49
  }
47
50
  lines.push("");
48
- lines.push("Usage: /model <id> · /model clear");
51
+ lines.push("Usage: /model <id> · /model thinking on|off · /model fast on|off · /model clear");
49
52
  return lines;
50
53
  }
51
54
  //# sourceMappingURL=models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/config/models.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAA;AAEtD,wFAAwF;AACxF,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,mBAAmB;IACnB,cAAc;IACd,YAAY;IACZ,cAAc;IACd,SAAS;CACV,CAAA;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAgC;IAC/D,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAA;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IACnC,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAA;IACnF,OAAO,KAAK,IAAI,OAAO,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC,CAAA;AACjG,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAGrC;IACC,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IAC3D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC9D,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACtD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,KAAK,GAAG,CAAC,oBAAoB,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;IACjD,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QACxE,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,KAAK,EAAE,CAAC,CAAA;IACpC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;IAC/C,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/config/models.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAA;AAEtD,wFAAwF;AACxF,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,mBAAmB;IACnB,cAAc;IACd,YAAY;IACZ,cAAc;IACd,SAAS;CACV,CAAA;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAgC;IAC/D,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAA;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IACnC,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAA;IACnF,OAAO,KAAK,IAAI,OAAO,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC,CAAA;AACjG,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAGrC;IACC,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IAC3D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC9D,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACtD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,KAAwB;IAC9E,MAAM,KAAK,GAAG,CAAC,oBAAoB,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;IACjD,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CACR,cAAc,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,WAC5E,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KACrD,EAAE,EACF,EAAE,CACH,CAAA;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QACxE,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,KAAK,EAAE,CAAC,CAAA;IACpC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAA;IAC7F,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -23,6 +23,8 @@ import {
23
23
  } from "./transcript-render.js"
24
24
  import { classifyPlainOutput, createTranscriptSink, inferErrorKind } from "./tui-sink.js"
25
25
  import { upsertTranscriptEntry } from "../../dist/cli/interactive/transcript-upsert.js"
26
+ import { applyAgentEvent } from "../../dist/cli/interactive/agent-event-feed.js"
27
+ import type { AgentEvent } from "../../dist/cli/interactive/agent-events.js"
26
28
 
27
29
  extend({ "tui-input": InputRenderable })
28
30
 
@@ -65,7 +67,12 @@ type InteractiveController = {
65
67
  processLine: (
66
68
  rawLine: string,
67
69
  output: { line: (text?: string) => void },
68
- context?: { signal?: AbortSignal }
70
+ context?: {
71
+ signal?: AbortSignal
72
+ onActivity?: (label: string | null) => void
73
+ useActivitySpinner?: boolean
74
+ onAgentEvent?: (event: AgentEvent) => void
75
+ }
69
76
  ) => Promise<{ exitShell: boolean; exitCode: number; streamed?: boolean }>
70
77
  }
71
78
 
@@ -92,6 +99,8 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
92
99
  const [ready, setReady] = useState(false)
93
100
  const [bootError, setBootError] = useState<string | null>(null)
94
101
  const [busy, setBusy] = useState(false)
102
+ const [activityLabel, setActivityLabel] = useState<string | null>(null)
103
+ const [activityFrame, setActivityFrame] = useState(0)
95
104
  const [input, setInput] = useState("")
96
105
  const [mode, setMode] = useState<ViewMode>("input")
97
106
  const [modelSearch, setModelSearch] = useState("")
@@ -219,6 +228,18 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
219
228
  }
220
229
  }, [])
221
230
 
231
+ useEffect(() => {
232
+ if (!activityLabel) {
233
+ return
234
+ }
235
+ const timer = setInterval(() => {
236
+ setActivityFrame((frame) => frame + 1)
237
+ }, 80)
238
+ return () => {
239
+ clearInterval(timer)
240
+ }
241
+ }, [activityLabel])
242
+
222
243
  useEffect(() => {
223
244
  let cancelled = false
224
245
 
@@ -305,9 +326,11 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
305
326
  }
306
327
 
307
328
  setBusy(true)
329
+ setActivityLabel(null)
308
330
  clearStreaming()
309
331
  markScrollPinned()
310
332
 
333
+ const turnAssistantId = nextId()
311
334
  const abort = new AbortController()
312
335
  activeAbortRef.current = abort
313
336
 
@@ -325,7 +348,16 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
325
348
  })
326
349
 
327
350
  try {
328
- const result = await controller.processLine(value, sink, { signal: abort.signal })
351
+ const result = await controller.processLine(value, sink, {
352
+ signal: abort.signal,
353
+ onActivity: setActivityLabel,
354
+ useActivitySpinner: false,
355
+ onAgentEvent: (event) => {
356
+ setActivityLabel(null)
357
+ setTranscript((items) => applyAgentEvent(items, event, turnAssistantId))
358
+ followTranscript()
359
+ },
360
+ })
329
361
  if (result.streamed) {
330
362
  clearStreaming()
331
363
  }
@@ -336,6 +368,7 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
336
368
  } finally {
337
369
  activeAbortRef.current = null
338
370
  setBusy(false)
371
+ setActivityLabel(null)
339
372
  clearStreaming()
340
373
  }
341
374
  },
@@ -701,7 +734,9 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
701
734
  createElement(TuiInput, {
702
735
  focused: ready && !busy,
703
736
  placeholder: busy
704
- ? "Ctrl+C cancel · waiting for run…"
737
+ ? activityLabel
738
+ ? `${["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"][activityFrame % 10]} ${activityLabel}… · Ctrl+C cancel`
739
+ : "Ctrl+C cancel · waiting for agent…"
705
740
  : ready
706
741
  ? "Ask or type /help"
707
742
  : "Loading Patze Code…",
@@ -722,8 +757,8 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
722
757
  ),
723
758
  createElement("text", {
724
759
  content: busy
725
- ? "Esc exit · Ctrl+C cancel run · preview-first trust loop"
726
- : "Esc exit · Ctrl+C quit · Patze trust loop (preview-first)",
760
+ ? "Esc exit · Ctrl+C cancel run · agent executing"
761
+ : "Esc exit · Ctrl+C quit · /diff · /approve · /apply when patch ready",
727
762
  attributes: TextAttributes.DIM,
728
763
  })
729
764
  )
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patze/code-cli",
3
- "version": "0.18.0",
3
+ "version": "0.24.0",
4
4
  "description": "Patze Code — local terminal coding agent client for PatzeAgents",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",