@patze/code-cli 0.11.0 → 0.16.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 (112) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/VERSION +1 -1
  3. package/dist/backend/agent-trace.d.ts +1 -0
  4. package/dist/backend/agent-trace.d.ts.map +1 -1
  5. package/dist/backend/agent-trace.js +1 -0
  6. package/dist/backend/agent-trace.js.map +1 -1
  7. package/dist/backend/preview-payload.d.ts +15 -3
  8. package/dist/backend/preview-payload.d.ts.map +1 -1
  9. package/dist/backend/preview-payload.js +38 -10
  10. package/dist/backend/preview-payload.js.map +1 -1
  11. package/dist/backend/run-stream-client.js +1 -1
  12. package/dist/backend/runs-client.d.ts +35 -0
  13. package/dist/backend/runs-client.d.ts.map +1 -0
  14. package/dist/backend/runs-client.js +87 -0
  15. package/dist/backend/runs-client.js.map +1 -0
  16. package/dist/cli/commands/agent.d.ts +8 -0
  17. package/dist/cli/commands/agent.d.ts.map +1 -0
  18. package/dist/cli/commands/agent.js +72 -0
  19. package/dist/cli/commands/agent.js.map +1 -0
  20. package/dist/cli/commands/plan.d.ts +3 -0
  21. package/dist/cli/commands/plan.d.ts.map +1 -1
  22. package/dist/cli/commands/plan.js +3 -0
  23. package/dist/cli/commands/plan.js.map +1 -1
  24. package/dist/cli/commands/runs-format.d.ts +4 -0
  25. package/dist/cli/commands/runs-format.d.ts.map +1 -0
  26. package/dist/cli/commands/runs-format.js +50 -0
  27. package/dist/cli/commands/runs-format.js.map +1 -0
  28. package/dist/cli/commands/runs.d.ts.map +1 -1
  29. package/dist/cli/commands/runs.js +78 -8
  30. package/dist/cli/commands/runs.js.map +1 -1
  31. package/dist/cli/help.d.ts.map +1 -1
  32. package/dist/cli/help.js +7 -3
  33. package/dist/cli/help.js.map +1 -1
  34. package/dist/cli/interactive/agent-execute-turn.d.ts +4 -0
  35. package/dist/cli/interactive/agent-execute-turn.d.ts.map +1 -1
  36. package/dist/cli/interactive/agent-execute-turn.js +14 -1
  37. package/dist/cli/interactive/agent-execute-turn.js.map +1 -1
  38. package/dist/cli/interactive/agent-stream-format.d.ts +8 -0
  39. package/dist/cli/interactive/agent-stream-format.d.ts.map +1 -1
  40. package/dist/cli/interactive/agent-stream-format.js +88 -5
  41. package/dist/cli/interactive/agent-stream-format.js.map +1 -1
  42. package/dist/cli/interactive/agent-turn.d.ts +1 -0
  43. package/dist/cli/interactive/agent-turn.d.ts.map +1 -1
  44. package/dist/cli/interactive/agent-turn.js +18 -1
  45. package/dist/cli/interactive/agent-turn.js.map +1 -1
  46. package/dist/cli/interactive/cloud-git.d.ts +13 -0
  47. package/dist/cli/interactive/cloud-git.d.ts.map +1 -0
  48. package/dist/cli/interactive/cloud-git.js +43 -0
  49. package/dist/cli/interactive/cloud-git.js.map +1 -0
  50. package/dist/cli/interactive/header.d.ts +2 -1
  51. package/dist/cli/interactive/header.d.ts.map +1 -1
  52. package/dist/cli/interactive/header.js +9 -1
  53. package/dist/cli/interactive/header.js.map +1 -1
  54. package/dist/cli/interactive/launcher.d.ts +3 -0
  55. package/dist/cli/interactive/launcher.d.ts.map +1 -0
  56. package/dist/cli/interactive/launcher.js +53 -0
  57. package/dist/cli/interactive/launcher.js.map +1 -0
  58. package/dist/cli/interactive/line-editor.d.ts +2 -1
  59. package/dist/cli/interactive/line-editor.d.ts.map +1 -1
  60. package/dist/cli/interactive/line-editor.js +22 -9
  61. package/dist/cli/interactive/line-editor.js.map +1 -1
  62. package/dist/cli/interactive/model-command.d.ts +6 -0
  63. package/dist/cli/interactive/model-command.d.ts.map +1 -0
  64. package/dist/cli/interactive/model-command.js +40 -0
  65. package/dist/cli/interactive/model-command.js.map +1 -0
  66. package/dist/cli/interactive/run-replay.d.ts +17 -0
  67. package/dist/cli/interactive/run-replay.d.ts.map +1 -0
  68. package/dist/cli/interactive/run-replay.js +114 -0
  69. package/dist/cli/interactive/run-replay.js.map +1 -0
  70. package/dist/cli/interactive/session-controller.d.ts +22 -0
  71. package/dist/cli/interactive/session-controller.d.ts.map +1 -0
  72. package/dist/cli/interactive/session-controller.js +103 -0
  73. package/dist/cli/interactive/session-controller.js.map +1 -0
  74. package/dist/cli/interactive/session-store.d.ts +20 -0
  75. package/dist/cli/interactive/session-store.d.ts.map +1 -0
  76. package/dist/cli/interactive/session-store.js +88 -0
  77. package/dist/cli/interactive/session-store.js.map +1 -0
  78. package/dist/cli/interactive/session.d.ts +27 -0
  79. package/dist/cli/interactive/session.d.ts.map +1 -1
  80. package/dist/cli/interactive/session.js +61 -0
  81. package/dist/cli/interactive/session.js.map +1 -1
  82. package/dist/cli/interactive/shell.d.ts.map +1 -1
  83. package/dist/cli/interactive/shell.js +14 -51
  84. package/dist/cli/interactive/shell.js.map +1 -1
  85. package/dist/cli/interactive/slash-dispatch.d.ts +3 -0
  86. package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -1
  87. package/dist/cli/interactive/slash-dispatch.js +94 -1
  88. package/dist/cli/interactive/slash-dispatch.js.map +1 -1
  89. package/dist/cli/interactive/slash-registry.d.ts.map +1 -1
  90. package/dist/cli/interactive/slash-registry.js +6 -0
  91. package/dist/cli/interactive/slash-registry.js.map +1 -1
  92. package/dist/cli/main.d.ts.map +1 -1
  93. package/dist/cli/main.js +35 -3
  94. package/dist/cli/main.js.map +1 -1
  95. package/dist/cli/one-shot-args.d.ts +9 -0
  96. package/dist/cli/one-shot-args.d.ts.map +1 -0
  97. package/dist/cli/one-shot-args.js +35 -0
  98. package/dist/cli/one-shot-args.js.map +1 -0
  99. package/dist/cli/read-stdin.d.ts +2 -0
  100. package/dist/cli/read-stdin.d.ts.map +1 -0
  101. package/dist/cli/read-stdin.js +12 -0
  102. package/dist/cli/read-stdin.js.map +1 -0
  103. package/dist/config/config.d.ts +2 -0
  104. package/dist/config/config.d.ts.map +1 -1
  105. package/dist/config/config.js +8 -0
  106. package/dist/config/config.js.map +1 -1
  107. package/dist/config/models.d.ts +11 -0
  108. package/dist/config/models.d.ts.map +1 -0
  109. package/dist/config/models.js +51 -0
  110. package/dist/config/models.js.map +1 -0
  111. package/docs/known-limitations.md +12 -7
  112. package/package.json +4 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,84 @@ All notable changes to `@patze/code-cli` are documented here.
4
4
 
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
+ ## [0.16.0] - 2026-05-29
8
+
9
+ ### Added
10
+
11
+ - **Cookbook-style OpenTUI (default)** — transcript scroll, slash command picker, model picker, markdown assistant rendering; uses Patze `session-controller` + trust loop.
12
+ - **`opentui/src/App.tsx`** — port of Cursor cookbook TUI layout wired to Patze server preview/execute path.
13
+ - **`tests/opentui-cookbook.test.mjs`** — line parse + transcript render smoke.
14
+
15
+ ### Changed
16
+
17
+ - **`patze` (no args)** defaults to OpenTUI when Bun + opentui deps are installed; opt out with `PATZE_USE_JS=1` or `PATZE_USE_OPENTUI=0`.
18
+
19
+ ## [0.15.1] - 2026-05-29
20
+
21
+ ### Fixed
22
+
23
+ - **Composer redraw** — TTY bordered input no longer stacks ghost boxes on each keystroke (full-frame erase before redraw).
24
+
25
+ ## [0.15.0] - 2026-05-29
26
+
27
+ ### Added
28
+
29
+ - **`npm run e2e:cloud`** / **`e2e:cloud:interactive`** / **`e2e:cloud:all`** — dev-server cloud E2E (API + interactive `/cloud` flow).
30
+ - **Cloud execute (opt-in)** — `run-cloud.mjs` + server `FEATURE_PATZE_CODE_CLI_CLOUD_EXECUTE`; `/cloud` validates GitHub `origin`.
31
+ - **OpenTUI shell (optional)** — `PATZE_USE_OPENTUI=1` + Bun; falls back to Node readline shell.
32
+ - **`session-controller`** — shared interactive turn loop for Node shell and OpenTUI.
33
+
34
+ ### Changed
35
+
36
+ - Preview payload sends `metadata.execution_mode`, `cloud_repo_url`, `cloud_repo_ref`.
37
+ - Cloud no longer hard-blocked at CLI when server flag enables it.
38
+
39
+ ## [0.14.0] - 2026-05-29
40
+
41
+ ### Added
42
+
43
+ - **`patze runs list|open [--stream]`** — read-only sync with server run history.
44
+ - **Session persistence** — `~/.patze/sessions/<cwd-hash>.json` restores transcript, model, last run, execution mode.
45
+ - **Multi-turn context** — prior CLI turns forwarded as `metadata.conversation_context` to SDK prompt.
46
+ - **`/local`**, **`/cloud`**, **`/runs`** slash commands (cloud execute blocked honestly in beta).
47
+
48
+ ### Changed
49
+
50
+ - **`patze config`** shows resolved config paths (read-only).
51
+ - **`/reset`** starts a fresh conversation epoch without clearing model override.
52
+
53
+ ## [0.13.0] - 2026-05-29
54
+
55
+ ### Added
56
+
57
+ - **Cookbook one-shot mode:** `patze "task"`, `patze agent "task"`, piped stdin; flags `--model`, `--cwd`, `--dry-run`.
58
+ - **`/model`** session model picker + `metadata.model_hint` wired to server SDK execute.
59
+ - **`/run`** SSE replay (or stored trace fallback) and **`/last`** run summary.
60
+ - **Live tool/thinking upsert** during stream (`[~]`/`[x]`/`[…]` prefixes).
61
+
62
+ ### Changed
63
+
64
+ - Interactive header shows current model.
65
+
66
+ ## [0.12.0] - 2026-05-29
67
+
68
+ ### Added
69
+
70
+ - **Cookbook execute parity (local):** CLI pins `metadata.workspace_cwd` + `cookbook_cli_task` workflow; server runs Cursor SDK against the user's directory (not monorepo root).
71
+ - **Live assistant deltas** during SSE execute (`stream_delta` / partial transcript on TTY).
72
+ - **Streaming subprocess timeout** enforced while PATZE_TRACE lines are still arriving.
73
+
74
+ ### Changed
75
+
76
+ - Default SDK execute budget: **600s** (`PATZE_CODE_SDK_EXECUTE_TIMEOUT_SECONDS`).
77
+ - Run stream client default timeout: **600s**.
78
+
79
+ ## [0.11.1] - 2026-05-29
80
+
81
+ ### Fixed
82
+
83
+ - **Composer cursor** — TTY bordered input placed the cursor one line too high (on the top border). Cursor now aligns inside the input row.
84
+
7
85
  ## [0.11.0] - 2026-05-29
8
86
 
9
87
  ### Added
package/VERSION CHANGED
@@ -1 +1 @@
1
- 0.11.0
1
+ 0.16.0
@@ -7,6 +7,7 @@ export type AgentTraceEvent = {
7
7
  detail?: string;
8
8
  status?: AgentTraceStatus;
9
9
  toolName?: string;
10
+ streamDelta?: boolean;
10
11
  };
11
12
  export declare function parseAgentTraceItem(raw: unknown): AgentTraceEvent | null;
12
13
  export declare function isIgnorableStatusTrace(event: AgentTraceEvent): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-trace.d.ts","sourceRoot":"","sources":["../../src/backend/agent-trace.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;AAC7E,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAA;AAE3D,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAyBxE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAkBtE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAShE"}
1
+ {"version":3,"file":"agent-trace.d.ts","sourceRoot":"","sources":["../../src/backend/agent-trace.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;AAC7E,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAA;AAE3D,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CA0BxE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAkBtE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAShE"}
@@ -20,6 +20,7 @@ export function parseAgentTraceItem(raw) {
20
20
  detail: typeof record.detail === "string" ? record.detail : undefined,
21
21
  status,
22
22
  toolName: typeof record.toolName === "string" ? record.toolName : undefined,
23
+ streamDelta: record.stream_delta === true,
23
24
  };
24
25
  }
25
26
  export function isIgnorableStatusTrace(event) {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-trace.js","sourceRoot":"","sources":["../../src/backend/agent-trace.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,MAAM,GAAG,GAA8B,CAAA;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAoB,CAAA;IAC/D,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IACxD,MAAM,MAAM,GACV,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;IAEvE,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC9C,IAAI;QACJ,KAAK;QACL,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACrE,MAAM;QACN,QAAQ,EAAE,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KAC5E,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAsB;IAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC9C,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACxD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,CACL,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,QAAQ;QAClB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QACzB,MAAM,KAAK,SAAS;QACpB,MAAM,KAAK,SAAS,CACrB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,GAAG,GAAG,GAAG;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAA;AAC3C,CAAC"}
1
+ {"version":3,"file":"agent-trace.js","sourceRoot":"","sources":["../../src/backend/agent-trace.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,MAAM,GAAG,GAA8B,CAAA;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAoB,CAAA;IAC/D,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IACxD,MAAM,MAAM,GACV,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;IAEvE,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC9C,IAAI;QACJ,KAAK;QACL,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACrE,MAAM;QACN,QAAQ,EAAE,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QAC3E,WAAW,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI;KAC1C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAsB;IAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC9C,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACxD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,CACL,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,QAAQ;QAClB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QACzB,MAAM,KAAK,SAAS;QACpB,MAAM,KAAK,SAAS,CACrB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,GAAG,GAAG,GAAG;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAA;AAC3C,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import type { ResolvedConfig } from "../config/config.js";
2
+ export declare const CLI_PINNED_WORKSPACE_SCOPE = "cli-local";
3
+ export declare const CLI_WORKFLOW_MODE = "cookbook_cli_task";
2
4
  export type PreviewTaskPayload = {
3
5
  owner_user_id: string;
4
6
  task_input: {
@@ -23,6 +25,12 @@ export type PreviewTaskPayload = {
23
25
  canary_requested: false;
24
26
  metadata: {
25
27
  source: string;
28
+ workspace_cwd?: string;
29
+ model_hint?: string;
30
+ conversation_context?: string;
31
+ execution_mode?: "local" | "cloud";
32
+ cloud_repo_url?: string;
33
+ cloud_repo_ref?: string;
26
34
  };
27
35
  repo_metadata: {
28
36
  repo: string;
@@ -33,7 +41,7 @@ export type PreviewTaskPayload = {
33
41
  repo_allowlist: string[];
34
42
  no_auto_apply: true;
35
43
  auto_apply_requested: false;
36
- cloud_requested: false;
44
+ cloud_requested: boolean;
37
45
  pr_requested: false;
38
46
  public_route_requested: false;
39
47
  ui_requested: false;
@@ -42,9 +50,13 @@ export type PreviewTaskPayload = {
42
50
  require_review_artifact_for_canary: true;
43
51
  };
44
52
  };
45
- export declare function buildPreviewPayload(input: {
53
+ export type PreviewBuildOptions = {
46
54
  objective: string;
47
55
  cwd: string;
48
56
  config: ResolvedConfig;
49
- }): PreviewTaskPayload;
57
+ modelHint?: string | null;
58
+ conversationContext?: string | null;
59
+ executionMode?: "local" | "cloud";
60
+ };
61
+ export declare function buildPreviewPayload(input: PreviewBuildOptions): PreviewTaskPayload;
50
62
  //# sourceMappingURL=preview-payload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preview-payload.d.ts","sourceRoot":"","sources":["../../src/backend/preview-payload.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGzD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE;QACV,SAAS,EAAE,MAAM,CAAA;QACjB,aAAa,EAAE,MAAM,CAAA;QACrB,OAAO,EAAE,MAAM,CAAA;QACf,eAAe,EAAE,MAAM,CAAA;QACvB,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,YAAY,EAAE,MAAM,EAAE,CAAA;QACtB,OAAO,EAAE;YACP,MAAM,EAAE,SAAS,CAAA;YACjB,cAAc,EAAE,MAAM,CAAA;YACtB,iBAAiB,EAAE,MAAM,CAAA;SAC1B,CAAA;QACD,oBAAoB,EAAE;YACpB,QAAQ,EAAE,IAAI,CAAA;YACd,MAAM,EAAE,MAAM,CAAA;YACd,sBAAsB,EAAE,MAAM,CAAA;SAC/B,CAAA;QACD,kBAAkB,EAAE,MAAM,EAAE,CAAA;QAC5B,cAAc,EAAE,MAAM,EAAE,CAAA;QACxB,gBAAgB,EAAE,KAAK,CAAA;QACvB,QAAQ,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAA;QAC5B,aAAa,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAChC,CAAA;IACD,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,cAAc,EAAE,MAAM,EAAE,CAAA;QACxB,aAAa,EAAE,IAAI,CAAA;QACnB,oBAAoB,EAAE,KAAK,CAAA;QAC3B,eAAe,EAAE,KAAK,CAAA;QACtB,YAAY,EAAE,KAAK,CAAA;QACnB,sBAAsB,EAAE,KAAK,CAAA;QAC7B,YAAY,EAAE,KAAK,CAAA;QACnB,uBAAuB,EAAE,KAAK,CAAA;QAC9B,gCAAgC,EAAE,KAAK,CAAA;QACvC,kCAAkC,EAAE,IAAI,CAAA;KACzC,CAAA;CACF,CAAA;AA6CD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,cAAc,CAAA;CACvB,GAAG,kBAAkB,CAmDrB"}
1
+ {"version":3,"file":"preview-payload.d.ts","sourceRoot":"","sources":["../../src/backend/preview-payload.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAIzD,eAAO,MAAM,0BAA0B,cAAc,CAAA;AACrD,eAAO,MAAM,iBAAiB,sBAAsB,CAAA;AAEpD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE;QACV,SAAS,EAAE,MAAM,CAAA;QACjB,aAAa,EAAE,MAAM,CAAA;QACrB,OAAO,EAAE,MAAM,CAAA;QACf,eAAe,EAAE,MAAM,CAAA;QACvB,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,YAAY,EAAE,MAAM,EAAE,CAAA;QACtB,OAAO,EAAE;YACP,MAAM,EAAE,SAAS,CAAA;YACjB,cAAc,EAAE,MAAM,CAAA;YACtB,iBAAiB,EAAE,MAAM,CAAA;SAC1B,CAAA;QACD,oBAAoB,EAAE;YACpB,QAAQ,EAAE,IAAI,CAAA;YACd,MAAM,EAAE,MAAM,CAAA;YACd,sBAAsB,EAAE,MAAM,CAAA;SAC/B,CAAA;QACD,kBAAkB,EAAE,MAAM,EAAE,CAAA;QAC5B,cAAc,EAAE,MAAM,EAAE,CAAA;QACxB,gBAAgB,EAAE,KAAK,CAAA;QACvB,QAAQ,EAAE;YACR,MAAM,EAAE,MAAM,CAAA;YACd,aAAa,CAAC,EAAE,MAAM,CAAA;YACtB,UAAU,CAAC,EAAE,MAAM,CAAA;YACnB,oBAAoB,CAAC,EAAE,MAAM,CAAA;YAC7B,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;YAClC,cAAc,CAAC,EAAE,MAAM,CAAA;YACvB,cAAc,CAAC,EAAE,MAAM,CAAA;SACxB,CAAA;QACD,aAAa,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAChC,CAAA;IACD,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,cAAc,EAAE,MAAM,EAAE,CAAA;QACxB,aAAa,EAAE,IAAI,CAAA;QACnB,oBAAoB,EAAE,KAAK,CAAA;QAC3B,eAAe,EAAE,OAAO,CAAA;QACxB,YAAY,EAAE,KAAK,CAAA;QACnB,sBAAsB,EAAE,KAAK,CAAA;QAC7B,YAAY,EAAE,KAAK,CAAA;QACnB,uBAAuB,EAAE,KAAK,CAAA;QAC9B,gCAAgC,EAAE,KAAK,CAAA;QACvC,kCAAkC,EAAE,IAAI,CAAA;KACzC,CAAA;CACF,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,cAAc,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAClC,CAAA;AA6CD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,kBAAkB,CA4ElF"}
@@ -2,6 +2,9 @@ import { createHash } from "node:crypto";
2
2
  import { existsSync, readFileSync } from "node:fs";
3
3
  import { basename, relative, resolve } from "node:path";
4
4
  import { guessWorkspaceRoot } from "../runtime/workspace.js";
5
+ import { detectCloudRepository } from "../cli/interactive/cloud-git.js";
6
+ export const CLI_PINNED_WORKSPACE_SCOPE = "cli-local";
7
+ export const CLI_WORKFLOW_MODE = "cookbook_cli_task";
5
8
  const BROAD_SCOPES = new Set(["", ".", "./", "/", "**", "*", "repo", "workspace", "all"]);
6
9
  function sha256Hex(value) {
7
10
  return createHash("sha256").update(value, "utf8").digest("hex");
@@ -39,23 +42,48 @@ function resolveAllowedPaths(config, scope) {
39
42
  if (!isBroadScope(scope)) {
40
43
  return [scope];
41
44
  }
42
- return ["packages/patze-code-cli"];
45
+ return ["."];
43
46
  }
44
47
  export function buildPreviewPayload(input) {
45
- const root = guessWorkspaceRoot(input.cwd);
46
- const scopeRaw = relative(root, input.cwd).replace(/\\/g, "/") || ".";
47
- const scope = isBroadScope(scopeRaw) ? "packages/patze-code-cli" : scopeRaw;
48
+ const absoluteCwd = resolve(input.cwd);
49
+ const root = guessWorkspaceRoot(absoluteCwd);
50
+ const scopeRaw = relative(root, absoluteCwd).replace(/\\/g, "/") || ".";
51
+ const pinnedWorkspace = isBroadScope(scopeRaw);
52
+ const workspaceScope = pinnedWorkspace ? CLI_PINNED_WORKSPACE_SCOPE : scopeRaw;
48
53
  const repoId = resolveRepoId(root);
49
- const allowedPaths = resolveAllowedPaths(input.config, scope);
54
+ const allowedPaths = pinnedWorkspace ? ["."] : resolveAllowedPaths(input.config, workspaceScope);
50
55
  const deniedPaths = input.config.defaultDeny.map((pattern) => pattern.replace(/^\*\*\//, "").replace(/\/\*\*$/, ""));
51
56
  const userDigest = sha256Hex(`patze-code-cli:user:${input.config.userId ?? "anonymous"}`);
57
+ const modelHint = input.modelHint?.trim();
58
+ const conversationContext = input.conversationContext?.trim() ?? "";
59
+ const executionMode = input.executionMode ?? "local";
60
+ const metadata = {
61
+ source: "patze_code_cli",
62
+ workspace_cwd: absoluteCwd,
63
+ };
64
+ if (modelHint) {
65
+ metadata.model_hint = modelHint;
66
+ }
67
+ if (conversationContext) {
68
+ metadata.conversation_context = conversationContext.slice(0, 4000);
69
+ }
70
+ metadata.execution_mode = executionMode;
71
+ if (executionMode === "cloud") {
72
+ const cloud = detectCloudRepository(absoluteCwd);
73
+ if (cloud.ok) {
74
+ metadata.cloud_repo_url = cloud.url;
75
+ if (cloud.startingRef) {
76
+ metadata.cloud_repo_ref = cloud.startingRef;
77
+ }
78
+ }
79
+ }
52
80
  return {
53
81
  owner_user_id: input.config.userId ?? "",
54
82
  task_input: {
55
83
  objective: input.objective,
56
- workflow_mode: "cookbook_quickstart_local",
84
+ workflow_mode: CLI_WORKFLOW_MODE,
57
85
  repo_id: repoId,
58
- workspace_scope: scope,
86
+ workspace_scope: workspaceScope,
59
87
  allowed_paths: allowedPaths,
60
88
  denied_paths: deniedPaths.length ? deniedPaths : [".env", "node_modules", ".git"],
61
89
  consent: {
@@ -69,9 +97,9 @@ export function buildPreviewPayload(input) {
69
97
  review_artifact_digest: "",
70
98
  },
71
99
  expected_artifacts: ["preview"],
72
- rollback_notes: ["Patze CLI preview only — no apply or execute."],
100
+ rollback_notes: ["Patze CLI preview + execute — no auto-apply."],
73
101
  canary_requested: false,
74
- metadata: { source: "patze_code_cli" },
102
+ metadata,
75
103
  repo_metadata: { repo: repoId },
76
104
  },
77
105
  policy: {
@@ -79,7 +107,7 @@ export function buildPreviewPayload(input) {
79
107
  repo_allowlist: [repoId],
80
108
  no_auto_apply: true,
81
109
  auto_apply_requested: false,
82
- cloud_requested: false,
110
+ cloud_requested: executionMode === "cloud",
83
111
  pr_requested: false,
84
112
  public_route_requested: false,
85
113
  ui_requested: false,
@@ -1 +1 @@
1
- {"version":3,"file":"preview-payload.js","sourceRoot":"","sources":["../../src/backend/preview-payload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preview-payload.js","sourceRoot":"","sources":["../../src/backend/preview-payload.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export async function streamPatzeCodeRun(input) {
5
5
  const fetchImpl = input.fetchImpl ?? fetch;
6
6
  const url = new URL(`/internal/patze-code/user-task-runs/${encodeURIComponent(input.runId)}/stream`, input.apiBase);
7
7
  const controller = new AbortController();
8
- const timer = setTimeout(() => controller.abort(), input.timeoutMs ?? 180_000);
8
+ const timer = setTimeout(() => controller.abort(), input.timeoutMs ?? 600_000);
9
9
  try {
10
10
  const response = await fetchImpl(url, {
11
11
  method: "GET",
@@ -0,0 +1,35 @@
1
+ import type { ResolvedConfig } from "../config/config.js";
2
+ import type { FetchLike } from "./preview-client.js";
3
+ import { type PatzeCodeRunRecord } from "./run-record.js";
4
+ export type PatzeCodeRunListItem = PatzeCodeRunRecord & {
5
+ created_at: string;
6
+ updated_at: string;
7
+ workflow_mode: string;
8
+ outcome_summary: string;
9
+ };
10
+ export type ListRunsResult = {
11
+ ok: true;
12
+ runs: PatzeCodeRunListItem[];
13
+ } | {
14
+ ok: false;
15
+ kind: "auth" | "network" | "blocked";
16
+ message: string;
17
+ };
18
+ export declare function fetchPatzeCodeRuns(input: {
19
+ apiBase: string;
20
+ headers: Record<string, string>;
21
+ limit?: number;
22
+ fetchImpl?: FetchLike;
23
+ }): Promise<ListRunsResult>;
24
+ export declare function fetchPatzeCodeRunDetail(input: {
25
+ apiBase: string;
26
+ headers: Record<string, string>;
27
+ runId: string;
28
+ fetchImpl?: FetchLike;
29
+ }): Promise<PatzeCodeRunListItem | null>;
30
+ export declare function listPatzeCodeRunsForConfig(input: {
31
+ config: ResolvedConfig;
32
+ limit?: number;
33
+ fetchImpl?: FetchLike;
34
+ }): Promise<ListRunsResult>;
35
+ //# sourceMappingURL=runs-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs-client.d.ts","sourceRoot":"","sources":["../../src/backend/runs-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAA;AAExB,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG;IACtD,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,oBAAoB,EAAE,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAiBxE,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyC1B;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAmBvC;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,MAAM,EAAE,cAAc,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GAAG,OAAO,CAAC,cAAc,CAAC,CAY1B"}
@@ -0,0 +1,87 @@
1
+ import { PatzeBackendClient } from "./client.js";
2
+ import { normalizePatzeCodeRunRecord, } from "./run-record.js";
3
+ function normalizeRunListItem(raw) {
4
+ const base = normalizePatzeCodeRunRecord(raw);
5
+ if (!base) {
6
+ return null;
7
+ }
8
+ const row = raw;
9
+ return {
10
+ ...base,
11
+ created_at: String(row.created_at ?? ""),
12
+ updated_at: String(row.updated_at ?? ""),
13
+ workflow_mode: String(row.workflow_mode ?? ""),
14
+ outcome_summary: String(row.outcome_summary ?? base.outcome_summary ?? ""),
15
+ };
16
+ }
17
+ export async function fetchPatzeCodeRuns(input) {
18
+ const fetchImpl = input.fetchImpl ?? fetch;
19
+ const url = new URL("/internal/patze-code/user-task-runs", input.apiBase);
20
+ if (input.limit) {
21
+ url.searchParams.set("limit", String(input.limit));
22
+ }
23
+ try {
24
+ const response = await fetchImpl(url, {
25
+ method: "GET",
26
+ headers: { ...input.headers, Accept: "application/json" },
27
+ });
28
+ const body = (await response.json().catch(() => ({})));
29
+ if (response.status === 401 || response.status === 403) {
30
+ return {
31
+ ok: false,
32
+ kind: response.status === 401 ? "auth" : "blocked",
33
+ message: String(body.error_code ?? body.detail ?? `runs list failed (${response.status})`),
34
+ };
35
+ }
36
+ if (!response.ok) {
37
+ return {
38
+ ok: false,
39
+ kind: "network",
40
+ message: `runs list failed (${response.status})`,
41
+ };
42
+ }
43
+ const runsRaw = body.runs;
44
+ const runs = Array.isArray(runsRaw)
45
+ ? runsRaw
46
+ .map((row) => normalizeRunListItem(row))
47
+ .filter((row) => row !== null)
48
+ : [];
49
+ return { ok: true, runs };
50
+ }
51
+ catch (error) {
52
+ const message = error instanceof Error ? error.message : "runs list failed";
53
+ return { ok: false, kind: "network", message };
54
+ }
55
+ }
56
+ export async function fetchPatzeCodeRunDetail(input) {
57
+ const fetchImpl = input.fetchImpl ?? fetch;
58
+ const url = new URL(`/internal/patze-code/user-task-runs/${encodeURIComponent(input.runId)}`, input.apiBase);
59
+ try {
60
+ const response = await fetchImpl(url, {
61
+ method: "GET",
62
+ headers: { ...input.headers, Accept: "application/json" },
63
+ });
64
+ if (!response.ok) {
65
+ return null;
66
+ }
67
+ const body = (await response.json());
68
+ return normalizeRunListItem(body.run);
69
+ }
70
+ catch {
71
+ return null;
72
+ }
73
+ }
74
+ export async function listPatzeCodeRunsForConfig(input) {
75
+ const config = input.config;
76
+ if (!config.api || !config.token || !config.userId) {
77
+ return { ok: false, kind: "auth", message: "Auth incomplete — run patze login first." };
78
+ }
79
+ const client = new PatzeBackendClient(config);
80
+ return fetchPatzeCodeRuns({
81
+ apiBase: client.baseUrl,
82
+ headers: client.buildHeaders(),
83
+ limit: input.limit,
84
+ fetchImpl: input.fetchImpl,
85
+ });
86
+ }
87
+ //# sourceMappingURL=runs-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs-client.js","sourceRoot":"","sources":["../../src/backend/runs-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { FetchLike } from "../../backend/preview-client.js";
2
+ import type { OneShotAgentOptions } from "../one-shot-args.js";
3
+ import type { Printer } from "../ui/printer.js";
4
+ import type { ParsedArgv } from "../argv.js";
5
+ export declare function runOneShotAgent(options: OneShotAgentOptions, printer: Printer, fetchImpl?: FetchLike): Promise<number>;
6
+ export declare function resolveOneShotPrompt(options: OneShotAgentOptions | null, argv: ParsedArgv): Promise<OneShotAgentOptions | null>;
7
+ export declare function formatOneShotModelLine(cwd: string): string;
8
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAIhE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAI/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,MAAM,CAAC,CA4CjB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,mBAAmB,GAAG,IAAI,EACnC,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAsBrC;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI1D"}
@@ -0,0 +1,72 @@
1
+ import { loadConfig } from "../../config/config.js";
2
+ import { resolveEffectiveModel } from "../../config/models.js";
3
+ import { readStdinPrompt } from "../read-stdin.js";
4
+ import { InteractiveSession } from "../interactive/session.js";
5
+ import { runAgentTurn } from "../interactive/agent-turn.js";
6
+ import { runGoal } from "./goal.js";
7
+ import { flagBoolean } from "../argv.js";
8
+ export async function runOneShotAgent(options, printer, fetchImpl) {
9
+ const session = new InteractiveSession(options.cwd);
10
+ if (options.model) {
11
+ session.setModelOverride(options.model);
12
+ }
13
+ if (options.dryRun) {
14
+ const parsed = {
15
+ command: ["goal"],
16
+ positional: [options.prompt],
17
+ flags: new Map([["dry-run", true]]),
18
+ raw: [],
19
+ };
20
+ return runGoal(parsed, printer);
21
+ }
22
+ let partialActive = false;
23
+ const canStreamPartials = Boolean(process.stdout.isTTY);
24
+ const result = await runAgentTurn(session, options.prompt, {
25
+ cwd: options.cwd,
26
+ fetchImpl,
27
+ onTranscriptLine: (line) => {
28
+ printer.line(line);
29
+ },
30
+ onTranscriptPartial: canStreamPartials
31
+ ? (chunk) => {
32
+ partialActive = true;
33
+ process.stdout.write(chunk);
34
+ }
35
+ : undefined,
36
+ });
37
+ if (partialActive) {
38
+ process.stdout.write("\n");
39
+ }
40
+ if (!result.streamed) {
41
+ for (const line of result.lines) {
42
+ printer.line(line);
43
+ }
44
+ }
45
+ return result.exitCode;
46
+ }
47
+ export async function resolveOneShotPrompt(options, argv) {
48
+ if (options?.prompt) {
49
+ return options;
50
+ }
51
+ if (argv.command.length > 0) {
52
+ return null;
53
+ }
54
+ const stdinPrompt = await readStdinPrompt();
55
+ if (!stdinPrompt) {
56
+ return null;
57
+ }
58
+ const cwdFlag = argv.flags.get("cwd") ?? argv.flags.get("C");
59
+ const modelFlag = argv.flags.get("model") ?? argv.flags.get("m");
60
+ return {
61
+ prompt: stdinPrompt,
62
+ cwd: typeof cwdFlag === "string" ? cwdFlag : process.cwd(),
63
+ model: typeof modelFlag === "string" ? modelFlag : null,
64
+ dryRun: flagBoolean(argv.flags, "dry-run"),
65
+ };
66
+ }
67
+ export function formatOneShotModelLine(cwd) {
68
+ const config = loadConfig(cwd);
69
+ const model = resolveEffectiveModel({ configModel: config.model ?? null });
70
+ return `model · ${model}`;
71
+ }
72
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,9 @@ export type PlanPreviewResult = {
8
8
  export type PlanPreviewOptions = {
9
9
  cwd?: string;
10
10
  fetchImpl?: FetchLike;
11
+ modelHint?: string | null;
12
+ conversationContext?: string | null;
13
+ executionMode?: "local" | "cloud";
11
14
  };
12
15
  export declare function runPlanPreview(objective: string, options?: PlanPreviewOptions): Promise<PlanPreviewResult>;
13
16
  //# sourceMappingURL=plan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAA;AAKxC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACnC,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,CAAA;AASD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAsD5B"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAA;AAKxC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACnC,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAClC,CAAA;AASD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAyD5B"}
@@ -40,6 +40,9 @@ export async function runPlanPreview(objective, options = {}) {
40
40
  objective: objective.trim(),
41
41
  cwd,
42
42
  config,
43
+ modelHint: options.modelHint,
44
+ conversationContext: options.conversationContext,
45
+ executionMode: options.executionMode,
43
46
  });
44
47
  const result = await postUserTaskPreview({
45
48
  apiBase: client.baseUrl,
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EACL,mBAAmB,GAGpB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAuB,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAc1D,SAAS,kBAAkB,CAAC,MAAsB;IAChD,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,CAAC,MAAM,CAAC,GAAG;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxC,OAAO,6BAA6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sDAAsD,CAAA;AAC9G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,UAA8B,EAAE;IAEhC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACxC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAE9B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtB,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE;gBACN,6CAA6C;gBAC7C,qBAAqB;gBACrB,qDAAqD;aACtD,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,KAAK;SACnB,CAAA;IACH,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC;YAClC,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,KAAK;SACnB,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,mBAAmB,CAAC;QAClC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE;QAC3B,GAAG;QACH,MAAM;KACP,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC;QACvC,OAAO,EAAE,MAAM,CAAC,OAAQ;QACxB,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE;QAC9B,OAAO;QACP,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,uBAAuB,CAAC;QACrC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE;QAC3B,MAAM;KACP,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IACpE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IACpE,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AACpE,CAAC"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EACL,mBAAmB,GAGpB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAuB,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAiB1D,SAAS,kBAAkB,CAAC,MAAsB;IAChD,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,CAAC,MAAM,CAAC,GAAG;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxC,OAAO,6BAA6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sDAAsD,CAAA;AAC9G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,UAA8B,EAAE;IAEhC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACxC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAE9B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtB,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE;gBACN,6CAA6C;gBAC7C,qBAAqB;gBACrB,qDAAqD;aACtD,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,KAAK;SACnB,CAAA;IACH,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC;YAClC,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,KAAK;SACnB,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,mBAAmB,CAAC;QAClC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE;QAC3B,GAAG;QACH,MAAM;QACN,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC;QACvC,OAAO,EAAE,MAAM,CAAC,OAAQ;QACxB,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE;QAC9B,OAAO;QACP,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,uBAAuB,CAAC;QACrC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE;QAC3B,MAAM;KACP,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IACpE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IACpE,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AACpE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { PatzeCodeRunListItem } from "../../backend/runs-client.js";
2
+ export declare function formatRunsListLines(runs: PatzeCodeRunListItem[]): string[];
3
+ export declare function formatRunOpenLines(run: PatzeCodeRunListItem): string[];
4
+ //# sourceMappingURL=runs-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs-format.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/runs-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAcxE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAkB1E;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAyBtE"}
@@ -0,0 +1,50 @@
1
+ import { pickRunReplyText } from "../../backend/run-record.js";
2
+ function formatTimestamp(value) {
3
+ if (!value) {
4
+ return "—";
5
+ }
6
+ const parsed = Date.parse(value);
7
+ if (Number.isNaN(parsed)) {
8
+ return value.slice(0, 19);
9
+ }
10
+ return new Date(parsed).toISOString().replace("T", " ").slice(0, 19);
11
+ }
12
+ export function formatRunsListLines(runs) {
13
+ if (!runs.length) {
14
+ return ["No runs yet.", "Complete a coding task to populate run history."];
15
+ }
16
+ const lines = [`Runs (${runs.length}):`, ""];
17
+ for (const run of runs) {
18
+ const summary = pickRunReplyText(run).replace(/\s+/g, " ").slice(0, 72);
19
+ lines.push(` ${run.run_id} ${run.phase || run.status} ${formatTimestamp(run.created_at)} ${run.agent_model || "model?"}`);
20
+ if (summary) {
21
+ lines.push(` ${summary}${summary.length >= 72 ? "…" : ""}`);
22
+ }
23
+ }
24
+ lines.push("");
25
+ lines.push("Open details: patze runs open <id> · Replay: /run <id>");
26
+ return lines;
27
+ }
28
+ export function formatRunOpenLines(run) {
29
+ const lines = [
30
+ `Run ${run.run_id}`,
31
+ ` phase: ${run.phase || run.status}`,
32
+ ` model: ${run.agent_model || "unknown"}`,
33
+ ` workflow: ${run.workflow_mode || "—"}`,
34
+ ` created: ${formatTimestamp(run.created_at)}`,
35
+ ];
36
+ const summary = run.outcome_summary.trim() || pickRunReplyText(run);
37
+ if (summary) {
38
+ lines.push(` summary: ${summary.replace(/\s+/g, " ").slice(0, 240)}`);
39
+ }
40
+ if (run.deliverable_paths.length) {
41
+ lines.push(` deliverables: ${run.deliverable_paths.slice(0, 5).join(", ")}`);
42
+ }
43
+ if (run.error_code) {
44
+ lines.push(` error: ${run.error_code}`);
45
+ }
46
+ lines.push("");
47
+ lines.push("Replay trace: patze runs open --stream <id> or /run " + run.run_id);
48
+ return lines;
49
+ }
50
+ //# sourceMappingURL=runs-format.js.map