@patze/code-cli 0.43.1 → 0.55.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 (188) hide show
  1. package/CHANGELOG.md +256 -0
  2. package/README.md +84 -57
  3. package/VERSION +1 -1
  4. package/dist/backend/auth-token-kind.d.ts +3 -0
  5. package/dist/backend/auth-token-kind.d.ts.map +1 -0
  6. package/dist/backend/auth-token-kind.js +6 -0
  7. package/dist/backend/auth-token-kind.js.map +1 -0
  8. package/dist/backend/client.d.ts.map +1 -1
  9. package/dist/backend/client.js +7 -1
  10. package/dist/backend/client.js.map +1 -1
  11. package/dist/backend/execute-client.d.ts +1 -1
  12. package/dist/backend/execute-client.d.ts.map +1 -1
  13. package/dist/backend/execute-client.js +26 -0
  14. package/dist/backend/execute-client.js.map +1 -1
  15. package/dist/backend/plugin-session-client.d.ts +33 -0
  16. package/dist/backend/plugin-session-client.d.ts.map +1 -0
  17. package/dist/backend/plugin-session-client.js +108 -0
  18. package/dist/backend/plugin-session-client.js.map +1 -0
  19. package/dist/backend/runs-client.d.ts.map +1 -1
  20. package/dist/backend/runs-client.js +2 -1
  21. package/dist/backend/runs-client.js.map +1 -1
  22. package/dist/cli/auth/pairing-login.d.ts +10 -0
  23. package/dist/cli/auth/pairing-login.d.ts.map +1 -0
  24. package/dist/cli/auth/pairing-login.js +78 -0
  25. package/dist/cli/auth/pairing-login.js.map +1 -0
  26. package/dist/cli/commands/doctor.d.ts.map +1 -1
  27. package/dist/cli/commands/doctor.js +10 -4
  28. package/dist/cli/commands/doctor.js.map +1 -1
  29. package/dist/cli/commands/exec.d.ts.map +1 -1
  30. package/dist/cli/commands/exec.js +33 -8
  31. package/dist/cli/commands/exec.js.map +1 -1
  32. package/dist/cli/commands/login.d.ts +1 -0
  33. package/dist/cli/commands/login.d.ts.map +1 -1
  34. package/dist/cli/commands/login.js +36 -5
  35. package/dist/cli/commands/login.js.map +1 -1
  36. package/dist/cli/commands/runs-format.d.ts.map +1 -1
  37. package/dist/cli/commands/runs-format.js +2 -1
  38. package/dist/cli/commands/runs-format.js.map +1 -1
  39. package/dist/cli/commands/runs.d.ts.map +1 -1
  40. package/dist/cli/commands/runs.js +63 -5
  41. package/dist/cli/commands/runs.js.map +1 -1
  42. package/dist/cli/commands/status-format.d.ts.map +1 -1
  43. package/dist/cli/commands/status-format.js +4 -3
  44. package/dist/cli/commands/status-format.js.map +1 -1
  45. package/dist/cli/doctor/e2e-readiness.d.ts +12 -0
  46. package/dist/cli/doctor/e2e-readiness.d.ts.map +1 -0
  47. package/dist/cli/doctor/e2e-readiness.js +95 -0
  48. package/dist/cli/doctor/e2e-readiness.js.map +1 -0
  49. package/dist/cli/help.d.ts.map +1 -1
  50. package/dist/cli/help.js +2 -0
  51. package/dist/cli/help.js.map +1 -1
  52. package/dist/cli/interactive/agent-execute-turn.d.ts.map +1 -1
  53. package/dist/cli/interactive/agent-execute-turn.js +3 -1
  54. package/dist/cli/interactive/agent-execute-turn.js.map +1 -1
  55. package/dist/cli/interactive/agent-turn-context.d.ts +2 -2
  56. package/dist/cli/interactive/agent-turn-context.d.ts.map +1 -1
  57. package/dist/cli/interactive/agent-turn-context.js +23 -8
  58. package/dist/cli/interactive/agent-turn-context.js.map +1 -1
  59. package/dist/cli/interactive/agent-turn.d.ts.map +1 -1
  60. package/dist/cli/interactive/agent-turn.js +8 -7
  61. package/dist/cli/interactive/agent-turn.js.map +1 -1
  62. package/dist/cli/interactive/auth-credential-resolve.d.ts +20 -0
  63. package/dist/cli/interactive/auth-credential-resolve.d.ts.map +1 -0
  64. package/dist/cli/interactive/auth-credential-resolve.js +65 -0
  65. package/dist/cli/interactive/auth-credential-resolve.js.map +1 -0
  66. package/dist/cli/interactive/auth-gate.d.ts +1 -1
  67. package/dist/cli/interactive/auth-gate.d.ts.map +1 -1
  68. package/dist/cli/interactive/auth-gate.js +12 -3
  69. package/dist/cli/interactive/auth-gate.js.map +1 -1
  70. package/dist/cli/interactive/auth-readiness.d.ts +16 -0
  71. package/dist/cli/interactive/auth-readiness.d.ts.map +1 -0
  72. package/dist/cli/interactive/auth-readiness.js +50 -0
  73. package/dist/cli/interactive/auth-readiness.js.map +1 -0
  74. package/dist/cli/interactive/codex-feed-writer.d.ts.map +1 -1
  75. package/dist/cli/interactive/codex-feed-writer.js +4 -0
  76. package/dist/cli/interactive/codex-feed-writer.js.map +1 -1
  77. package/dist/cli/interactive/composer-edit-keys.d.ts +21 -0
  78. package/dist/cli/interactive/composer-edit-keys.d.ts.map +1 -0
  79. package/dist/cli/interactive/composer-edit-keys.js +57 -0
  80. package/dist/cli/interactive/composer-edit-keys.js.map +1 -0
  81. package/dist/cli/interactive/ensure-execute-auth.d.ts.map +1 -1
  82. package/dist/cli/interactive/ensure-execute-auth.js +8 -13
  83. package/dist/cli/interactive/ensure-execute-auth.js.map +1 -1
  84. package/dist/cli/interactive/header-refresh-triggers.d.ts +3 -0
  85. package/dist/cli/interactive/header-refresh-triggers.d.ts.map +1 -0
  86. package/dist/cli/interactive/header-refresh-triggers.js +16 -0
  87. package/dist/cli/interactive/header-refresh-triggers.js.map +1 -0
  88. package/dist/cli/interactive/header-refresh.d.ts +4 -0
  89. package/dist/cli/interactive/header-refresh.d.ts.map +1 -0
  90. package/dist/cli/interactive/header-refresh.js +33 -0
  91. package/dist/cli/interactive/header-refresh.js.map +1 -0
  92. package/dist/cli/interactive/header.d.ts +4 -1
  93. package/dist/cli/interactive/header.d.ts.map +1 -1
  94. package/dist/cli/interactive/header.js +44 -20
  95. package/dist/cli/interactive/header.js.map +1 -1
  96. package/dist/cli/interactive/interactive-footer-hints.d.ts +12 -0
  97. package/dist/cli/interactive/interactive-footer-hints.d.ts.map +1 -0
  98. package/dist/cli/interactive/interactive-footer-hints.js +32 -0
  99. package/dist/cli/interactive/interactive-footer-hints.js.map +1 -0
  100. package/dist/cli/interactive/interactive-model-apply.d.ts +15 -0
  101. package/dist/cli/interactive/interactive-model-apply.d.ts.map +1 -0
  102. package/dist/cli/interactive/interactive-model-apply.js +28 -0
  103. package/dist/cli/interactive/interactive-model-apply.js.map +1 -0
  104. package/dist/cli/interactive/interactive-ui.d.ts +13 -0
  105. package/dist/cli/interactive/interactive-ui.d.ts.map +1 -0
  106. package/dist/cli/interactive/interactive-ui.js +64 -0
  107. package/dist/cli/interactive/interactive-ui.js.map +1 -0
  108. package/dist/cli/interactive/launcher.d.ts.map +1 -1
  109. package/dist/cli/interactive/launcher.js +24 -17
  110. package/dist/cli/interactive/launcher.js.map +1 -1
  111. package/dist/cli/interactive/line-editor.d.ts +7 -2
  112. package/dist/cli/interactive/line-editor.d.ts.map +1 -1
  113. package/dist/cli/interactive/line-editor.js +133 -42
  114. package/dist/cli/interactive/line-editor.js.map +1 -1
  115. package/dist/cli/interactive/model-catalog-resolve.d.ts +11 -0
  116. package/dist/cli/interactive/model-catalog-resolve.d.ts.map +1 -0
  117. package/dist/cli/interactive/model-catalog-resolve.js +49 -0
  118. package/dist/cli/interactive/model-catalog-resolve.js.map +1 -0
  119. package/dist/cli/interactive/model-picker-panel.d.ts +22 -2
  120. package/dist/cli/interactive/model-picker-panel.d.ts.map +1 -1
  121. package/dist/cli/interactive/model-picker-panel.js +124 -30
  122. package/dist/cli/interactive/model-picker-panel.js.map +1 -1
  123. package/dist/cli/interactive/model-selector.d.ts.map +1 -1
  124. package/dist/cli/interactive/model-selector.js +3 -2
  125. package/dist/cli/interactive/model-selector.js.map +1 -1
  126. package/dist/cli/interactive/model-tty-picker.d.ts +3 -1
  127. package/dist/cli/interactive/model-tty-picker.d.ts.map +1 -1
  128. package/dist/cli/interactive/model-tty-picker.js +154 -24
  129. package/dist/cli/interactive/model-tty-picker.js.map +1 -1
  130. package/dist/cli/interactive/plain-codex-feed.d.ts.map +1 -1
  131. package/dist/cli/interactive/plain-codex-feed.js +48 -0
  132. package/dist/cli/interactive/plain-codex-feed.js.map +1 -1
  133. package/dist/cli/interactive/run-cancel.d.ts +23 -0
  134. package/dist/cli/interactive/run-cancel.d.ts.map +1 -0
  135. package/dist/cli/interactive/run-cancel.js +67 -0
  136. package/dist/cli/interactive/run-cancel.js.map +1 -0
  137. package/dist/cli/interactive/select-list-nav.d.ts +10 -0
  138. package/dist/cli/interactive/select-list-nav.d.ts.map +1 -0
  139. package/dist/cli/interactive/select-list-nav.js +45 -0
  140. package/dist/cli/interactive/select-list-nav.js.map +1 -0
  141. package/dist/cli/interactive/session-controller.d.ts +1 -0
  142. package/dist/cli/interactive/session-controller.d.ts.map +1 -1
  143. package/dist/cli/interactive/session-controller.js +5 -1
  144. package/dist/cli/interactive/session-controller.js.map +1 -1
  145. package/dist/cli/interactive/session-hints.d.ts +1 -0
  146. package/dist/cli/interactive/session-hints.d.ts.map +1 -1
  147. package/dist/cli/interactive/session-hints.js +24 -8
  148. package/dist/cli/interactive/session-hints.js.map +1 -1
  149. package/dist/cli/interactive/shell.d.ts.map +1 -1
  150. package/dist/cli/interactive/shell.js +19 -3
  151. package/dist/cli/interactive/shell.js.map +1 -1
  152. package/dist/cli/interactive/slash-dispatch.d.ts +2 -0
  153. package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -1
  154. package/dist/cli/interactive/slash-dispatch.js +55 -28
  155. package/dist/cli/interactive/slash-dispatch.js.map +1 -1
  156. package/dist/cli/interactive/slash-menu.d.ts.map +1 -1
  157. package/dist/cli/interactive/slash-menu.js +29 -2
  158. package/dist/cli/interactive/slash-menu.js.map +1 -1
  159. package/dist/cli/interactive/slash-registry.js +2 -2
  160. package/dist/cli/interactive/slash-registry.js.map +1 -1
  161. package/dist/cli/interactive/smoke-trust-fixture.d.ts +10 -0
  162. package/dist/cli/interactive/smoke-trust-fixture.d.ts.map +1 -0
  163. package/dist/cli/interactive/smoke-trust-fixture.js +66 -0
  164. package/dist/cli/interactive/smoke-trust-fixture.js.map +1 -0
  165. package/dist/cli/interactive/tools-catalog.d.ts.map +1 -1
  166. package/dist/cli/interactive/tools-catalog.js +17 -12
  167. package/dist/cli/interactive/tools-catalog.js.map +1 -1
  168. package/dist/cli/interactive/tty-arrow-selector.d.ts.map +1 -1
  169. package/dist/cli/interactive/tty-arrow-selector.js +5 -8
  170. package/dist/cli/interactive/tty-arrow-selector.js.map +1 -1
  171. package/dist/cli/interactive/tty-frame.d.ts +14 -0
  172. package/dist/cli/interactive/tty-frame.d.ts.map +1 -1
  173. package/dist/cli/interactive/tty-frame.js +127 -14
  174. package/dist/cli/interactive/tty-frame.js.map +1 -1
  175. package/dist/config/config.d.ts +2 -0
  176. package/dist/config/config.d.ts.map +1 -1
  177. package/dist/config/config.js +8 -0
  178. package/dist/config/config.js.map +1 -1
  179. package/dist/config/web-ui.d.ts +5 -0
  180. package/dist/config/web-ui.d.ts.map +1 -0
  181. package/dist/config/web-ui.js +12 -0
  182. package/dist/config/web-ui.js.map +1 -0
  183. package/docs/beta-release-handoff.md +56 -29
  184. package/docs/internal-beta.md +6 -3
  185. package/docs/known-limitations.md +32 -19
  186. package/docs/release-checklist.md +11 -3
  187. package/opentui/src/App.tsx +636 -213
  188. package/package.json +6 -2
@@ -1,5 +1,34 @@
1
1
  const HIDE_CURSOR = "\x1b[?25l";
2
2
  export const SHOW_CURSOR = "\x1b[?25h";
3
+ const SAVE_CURSOR = "\x1b[s";
4
+ const RESTORE_CURSOR = "\x1b[u";
5
+ export function clampLinesToSingleRow(lines, width) {
6
+ const cols = Math.max(1, width);
7
+ return lines.map((line) => clampStyledLineToSingleRow(line, cols));
8
+ }
9
+ function clampStyledLineToSingleRow(line, width) {
10
+ const plain = stripAnsi(line);
11
+ if ([...plain].length <= width) {
12
+ return line;
13
+ }
14
+ const open = line.match(/^(\x1b\[[0-9;]*m)+/);
15
+ const close = line.endsWith("\x1b[0m") ? "\x1b[0m" : "";
16
+ const innerPlain = truncatePlainChars(plain, width);
17
+ if (open) {
18
+ return `${open[0]}${innerPlain}${close}`;
19
+ }
20
+ return innerPlain;
21
+ }
22
+ function truncatePlainChars(text, max) {
23
+ const chars = [...text];
24
+ if (chars.length <= max) {
25
+ return text;
26
+ }
27
+ if (max <= 1) {
28
+ return "…";
29
+ }
30
+ return `${chars.slice(0, max - 1).join("")}…`;
31
+ }
3
32
  export function stripAnsi(text) {
4
33
  return text.replace(/\x1b\[[0-9;]*m/g, "");
5
34
  }
@@ -8,29 +37,113 @@ export function countVisualRows(lines, width) {
8
37
  const cols = Math.max(1, width);
9
38
  let total = 0;
10
39
  for (const line of lines) {
11
- const plain = stripAnsi(line);
12
- const length = [...plain].length;
13
- total += Math.max(1, Math.ceil(length / cols));
40
+ total += lineVisualRows(line, cols);
14
41
  }
15
42
  return total;
16
43
  }
44
+ export function lineVisualRows(line, width) {
45
+ const plain = stripAnsi(line);
46
+ const length = [...plain].length;
47
+ return Math.max(1, Math.ceil(length / Math.max(1, width)));
48
+ }
49
+ /** Pin overlay redraws to the cursor position where the picker opened (Codex-style). */
50
+ export class TtyAnchoredOverlay {
51
+ frameRows = 0;
52
+ anchored = false;
53
+ begin(output) {
54
+ output.write(SAVE_CURSOR);
55
+ this.anchored = true;
56
+ this.frameRows = 0;
57
+ }
58
+ redraw(output, lines, width, options) {
59
+ const clamped = clampLinesToSingleRow(lines, width);
60
+ const visualRows = clamped.length;
61
+ let out = HIDE_CURSOR;
62
+ if (this.anchored) {
63
+ out += RESTORE_CURSOR;
64
+ out += clearRowsEscape(this.frameRows);
65
+ if (this.frameRows > 0) {
66
+ out += RESTORE_CURSOR;
67
+ }
68
+ }
69
+ else if (this.frameRows > 0) {
70
+ out += rewindAndClearRowsEscape(this.frameRows);
71
+ }
72
+ else {
73
+ out += "\r";
74
+ }
75
+ out += clamped.join("\n");
76
+ if (options?.showCursor !== false) {
77
+ out += SHOW_CURSOR;
78
+ }
79
+ output.write(out);
80
+ this.frameRows = visualRows;
81
+ if (!this.anchored) {
82
+ output.write(SAVE_CURSOR);
83
+ this.anchored = true;
84
+ }
85
+ return visualRows;
86
+ }
87
+ clear(output) {
88
+ if (this.frameRows <= 0) {
89
+ this.anchored = false;
90
+ return;
91
+ }
92
+ let out = HIDE_CURSOR;
93
+ if (this.anchored) {
94
+ out += RESTORE_CURSOR;
95
+ out += clearRowsEscape(this.frameRows);
96
+ out += RESTORE_CURSOR;
97
+ }
98
+ else {
99
+ out += rewindAndClearRowsEscape(this.frameRows);
100
+ }
101
+ out += SHOW_CURSOR;
102
+ out += "\n";
103
+ output.write(out);
104
+ this.frameRows = 0;
105
+ this.anchored = false;
106
+ }
107
+ }
108
+ function clearRowsEscape(rows) {
109
+ if (rows <= 0) {
110
+ return "";
111
+ }
112
+ let out = "";
113
+ for (let i = 0; i < rows; i += 1) {
114
+ out += "\x1b[2K";
115
+ if (i < rows - 1) {
116
+ out += "\x1b[1B";
117
+ }
118
+ }
119
+ return out;
120
+ }
121
+ function rewindAndClearRowsEscape(rows) {
122
+ if (rows <= 0) {
123
+ return "\r";
124
+ }
125
+ let out = "";
126
+ for (let i = 0; i < rows; i += 1) {
127
+ out += "\x1b[1A\x1b[2K";
128
+ }
129
+ return `${out}\r`;
130
+ }
131
+ /** @deprecated Prefer TtyAnchoredOverlay for interactive overlays. */
17
132
  export function redrawTtyFrame(output, input) {
18
- const visualRows = countVisualRows(input.lines, input.width);
19
- let out = HIDE_CURSOR;
133
+ const overlay = new TtyAnchoredOverlay();
20
134
  if (input.previousRows > 0) {
21
- out += `\x1b[${input.previousRows}A\r\x1b[J`;
135
+ overlay["frameRows"] = input.previousRows;
136
+ overlay["anchored"] = false;
22
137
  }
23
138
  else {
24
- out += "\r\x1b[J";
139
+ overlay.begin(output);
25
140
  }
26
- out += input.lines.join("\n");
27
- out += SHOW_CURSOR;
28
- output.write(out);
29
- return visualRows;
141
+ return overlay.redraw(output, input.lines, input.width);
30
142
  }
143
+ /** @deprecated Prefer TtyAnchoredOverlay.clear */
31
144
  export function clearTtyFrame(output, frameRows) {
32
- if (frameRows > 0) {
33
- output.write(`\x1b[${frameRows}A\r\x1b[J${SHOW_CURSOR}\n`);
34
- }
145
+ const overlay = new TtyAnchoredOverlay();
146
+ overlay["frameRows"] = frameRows;
147
+ overlay.clear(output);
35
148
  }
36
149
  //# sourceMappingURL=tty-frame.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tty-frame.js","sourceRoot":"","sources":["../../../src/cli/interactive/tty-frame.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG,WAAW,CAAA;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAA;AAEtC,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,eAAe,CAAC,KAAwB,EAAE,KAAa;IACrE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;QAChC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,MAA0B,EAC1B,KAIC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5D,IAAI,GAAG,GAAG,WAAW,CAAA;IACrB,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC3B,GAAG,IAAI,QAAQ,KAAK,CAAC,YAAY,WAAW,CAAA;IAC9C,CAAC;SAAM,CAAC;QACN,GAAG,IAAI,UAAU,CAAA;IACnB,CAAC;IACD,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7B,GAAG,IAAI,WAAW,CAAA;IAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACjB,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAA0B,EAAE,SAAiB;IACzE,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,QAAQ,SAAS,YAAY,WAAW,IAAI,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"tty-frame.js","sourceRoot":"","sources":["../../../src/cli/interactive/tty-frame.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ export type ApprovalMode = "preview-first" | "trusted";
2
2
  export type SandboxMode = "read-only" | "workspace-write";
3
3
  export type PatzeConfigFile = {
4
4
  api?: string;
5
+ web?: string;
5
6
  token?: string;
6
7
  userId?: string;
7
8
  model?: string;
@@ -12,6 +13,7 @@ export type PatzeConfigFile = {
12
13
  };
13
14
  export type ResolvedConfig = {
14
15
  api: string | null;
16
+ web: string | null;
15
17
  token: string | null;
16
18
  userId: string | null;
17
19
  model: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,SAAS,CAAA;AACtD,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,iBAAiB,CAAA;AAEzD,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,YAAY,EAAE,YAAY,CAAA;IAC1B,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;QACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;QAC1B,GAAG,EAAE,MAAM,EAAE,CAAA;KACd,CAAA;CACF,CAAA;AAMD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiChE;AA4DD,wBAAgB,UAAU,CAAC,GAAG,SAAgB,GAAG,cAAc,CAiD9D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAQvD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,SAAS,CAAA;AACtD,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,iBAAiB,CAAA;AAEzD,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,YAAY,EAAE,YAAY,CAAA;IAC1B,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;QACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;QAC1B,GAAG,EAAE,MAAM,EAAE,CAAA;KACd,CAAA;CACF,CAAA;AAMD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiChE;AA8DD,wBAAgB,UAAU,CAAC,GAAG,SAAgB,GAAG,cAAc,CAsD9D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAQvD"}
@@ -62,6 +62,7 @@ function pickStringArray(value) {
62
62
  function normalizeConfig(raw) {
63
63
  return {
64
64
  api: pickString(raw.api) ?? undefined,
65
+ web: pickString(raw.web) ?? undefined,
65
66
  token: pickString(raw.token) ?? undefined,
66
67
  userId: pickString(raw.userId) ?? undefined,
67
68
  model: pickString(raw.model) ?? undefined,
@@ -80,6 +81,8 @@ function mergeConfigs(...layers) {
80
81
  for (const layer of layers) {
81
82
  if (layer.api)
82
83
  merged.api = layer.api;
84
+ if (layer.web)
85
+ merged.web = layer.web;
83
86
  if (layer.token)
84
87
  merged.token = layer.token;
85
88
  if (layer.userId)
@@ -114,6 +117,10 @@ export function loadConfig(cwd = process.cwd()) {
114
117
  envLayer.api = process.env.PATZE_CODE_API.trim();
115
118
  envKeys.push("PATZE_CODE_API");
116
119
  }
120
+ if (process.env.PATZE_WEB_UI_URL?.trim()) {
121
+ envLayer.web = process.env.PATZE_WEB_UI_URL.trim();
122
+ envKeys.push("PATZE_WEB_UI_URL");
123
+ }
117
124
  if (process.env.PATZE_CODE_TOKEN?.trim()) {
118
125
  envLayer.token = process.env.PATZE_CODE_TOKEN.trim();
119
126
  envKeys.push("PATZE_CODE_TOKEN");
@@ -129,6 +136,7 @@ export function loadConfig(cwd = process.cwd()) {
129
136
  const merged = normalizeConfig(mergeConfigs(...fileLayers, envLayer));
130
137
  return {
131
138
  api: merged.api ?? null,
139
+ web: merged.web ?? null,
132
140
  token: merged.token ?? null,
133
141
  userId: merged.userId ?? null,
134
142
  model: merged.model ?? null,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAkCvD,MAAM,oBAAoB,GAAG,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAA;AAEtE,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,YAAY,CAAC,CAAA;AAEjF,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAE9C,mFAAmF;IACnF,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;QAC7D,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;YAC9C,IAAI,SAAS,KAAK,UAAU,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtD,OAAO,SAAS,CAAA;YAClB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,IAAI,EAAE,CAAC;QACZ,oFAAoF;QACpF,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;gBACxC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;gBAC9C,IAAI,SAAS,KAAK,UAAU,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBACtD,OAAO,SAAS,CAAA;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,MAAM,KAAK,OAAO,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,GAAG,MAAM,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAA;QACzC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,EAAE,CAAA;QACX,CAAC;QACD,OAAO,MAAyB,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACxE,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAA;IACX,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACnG,CAAC;AAED,SAAS,eAAe,CAAC,GAAoB;IAC3C,OAAO;QACL,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS;QACrC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS;QACrC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS;QACzC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS;QAC3C,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS;QACzC,YAAY,EACV,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,GAAG,CAAC,YAAY,KAAK,eAAe;YACpE,CAAC,CAAC,GAAG,CAAC,YAAY;YAClB,CAAC,CAAC,SAAS;QACf,WAAW,EACT,GAAG,CAAC,WAAW,KAAK,WAAW,IAAI,GAAG,CAAC,WAAW,KAAK,iBAAiB;YACtE,CAAC,CAAC,GAAG,CAAC,WAAW;YACjB,CAAC,CAAC,SAAS;QACf,YAAY,EAAE,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;QAC/C,WAAW,EAAE,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC;KAC9C,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAG,MAAyB;IAChD,MAAM,MAAM,GAAoB,EAAE,CAAA;IAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,GAAG;YAAE,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;QACrC,IAAI,KAAK,CAAC,GAAG;YAAE,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;QACrC,IAAI,KAAK,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QAC3C,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC9C,IAAI,KAAK,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QAC3C,IAAI,KAAK,CAAC,YAAY;YAAE,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;QAChE,IAAI,KAAK,CAAC,WAAW;YAAE,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;QAC7D,IAAI,KAAK,CAAC,YAAY,EAAE,MAAM;YAAE,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;QACxE,IAAI,KAAK,CAAC,WAAW,EAAE,MAAM;YAAE,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;IACvE,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5C,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,gBAAgB,GAAG,gBAAgB,EAAE,CAAA;IAC3C,MAAM,UAAU,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAA;IACzE,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAE9C,MAAM,UAAU,GAAsB,EAAE,CAAA;IACxC,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IAC5D,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAoB,EAAE,CAAA;IACpC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC;QACvC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QAChD,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAChC,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC;QACzC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAA;QAClD,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAClC,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC;QACzC,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAA;QACpD,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAClC,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,EAAE,CAAC;QAC3C,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAA;QACvD,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACpC,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC;QACzC,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAA;QACpD,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;IAErE,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI;QACvB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;QAC7B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;QAC3B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,eAAe;QACpD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,WAAW;QAC9C,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;QACvC,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;QAC3G,OAAO,EAAE;YACP,UAAU;YACV,WAAW;YACX,GAAG,EAAE,OAAO;SACb;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAoB;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAA;IACf,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAClD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ResolvedConfig } from "./config.js";
2
+ export declare function resolveWebUiUrl(config: Pick<ResolvedConfig, "api"> & {
3
+ web?: string | null;
4
+ }): string | null;
5
+ //# sourceMappingURL=web-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-ui.d.ts","sourceRoot":"","sources":["../../src/config/web-ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,wBAAgB,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAU5G"}
@@ -0,0 +1,12 @@
1
+ export function resolveWebUiUrl(config) {
2
+ const fromConfig = config.web?.trim();
3
+ if (fromConfig) {
4
+ return fromConfig.replace(/\/$/, "");
5
+ }
6
+ const fromEnv = process.env.PATZE_WEB_UI_URL?.trim();
7
+ if (fromEnv) {
8
+ return fromEnv.replace(/\/$/, "");
9
+ }
10
+ return null;
11
+ }
12
+ //# sourceMappingURL=web-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-ui.js","sourceRoot":"","sources":["../../src/config/web-ui.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,MAA6D;IAC3F,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;IACrC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACtC,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAA;IACpD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -1,7 +1,9 @@
1
- # Beta release handoff — @patze/code-cli@0.10.2
1
+ # Beta release handoff — @patze/code-cli@0.55.x
2
2
 
3
- **Audience:** maintainers publishing `@beta` and 2–3 internal testers.
4
- **Safety:** trust loop unchanged from 0.10.1 no new mutation paths.
3
+ **Audience:** maintainers publishing `@beta` and internal testers.
4
+ **Safety:** trust loop unchanged interactive `/apply` only; smoke fixture is opt-in via `PATZE_CLI_TRUST_FIXTURE`.
5
+
6
+ > **Note:** Detailed version history lives in [`CHANGELOG.md`](../CHANGELOG.md). This handoff focuses on publish/verify steps.
5
7
 
6
8
  ---
7
9
 
@@ -16,11 +18,37 @@ npm pack --dry-run
16
18
 
17
19
  Expected:
18
20
 
19
- - `VERSION` = `package.json` = **0.10.2**
20
- - **93/93** tests, smoke OK, verify-pack OK (~266 files, ~94 KB packed)
21
+ - `VERSION` = `package.json` = current beta (see `package.json`)
22
+ - **330+** tests, smoke OK, PTY suite OK, verify-pack OK
21
23
  - No `src/`, `tests/`, `.cookbook-vendor` in tarball
22
24
  - Secret scan clean (no raw tokens, home paths, bearer strings in publish tree)
23
25
 
26
+ Optional live proof (maintainers, dev API up):
27
+
28
+ ```bash
29
+ npm run verify:all # verify + gated smart-agent e2e
30
+ npm run verify:ci-e2e-cloud # same gate CI uses for /cloud execute
31
+ ```
32
+
33
+ ---
34
+
35
+ ## CI secrets (optional e2e jobs)
36
+
37
+ GitHub Actions job **`cloud-e2e-gated`** (and **`e2e-gated`**) use repository secrets when configured:
38
+
39
+ | Secret | Purpose |
40
+ |--------|---------|
41
+ | `PATZE_CODE_E2E_API` | FastAPI base URL (must expose `/health`) |
42
+ | `PATZE_CODE_E2E_TOKEN` | Internal API key |
43
+ | `PATZE_CODE_E2E_USER_ID` | Entitled user UUID |
44
+
45
+ Cloud job additionally requires:
46
+
47
+ - Checkout with **GitHub `remote.origin.url`** (Actions default)
48
+ - Server **`FEATURE_PATZE_CODE_CLI_CLOUD_EXECUTE=true`**
49
+
50
+ Jobs **SKIP** (exit 0) when secrets or cloud flag are missing — PRs stay green. Use **workflow_dispatch** on `Patze Code CLI verify` for strict e2e proof.
51
+
24
52
  ---
25
53
 
26
54
  ## Publish
@@ -35,7 +63,7 @@ Confirm dist-tag:
35
63
 
36
64
  ```bash
37
65
  npm view @patze/code-cli dist-tags
38
- npm view @patze/code-cli@beta version # expect 0.10.2
66
+ npm view @patze/code-cli@beta version
39
67
  ```
40
68
 
41
69
  **Do not** publish as `latest` until release blockers in README are cleared.
@@ -48,16 +76,16 @@ npm **cannot reliably unpublish** after 72h; prefer **dist-tag move**, not delet
48
76
 
49
77
  | Action | Command |
50
78
  |--------|---------|
51
- | Point `@beta` back to prior version | `npm dist-tag add @patze/code-cli@0.10.1 beta` |
52
- | Remove bad tag from a version | `npm dist-tag rm @patze/code-cli@0.10.2 beta` |
79
+ | Point `@beta` back to prior version | `npm dist-tag add @patze/code-cli@<prior> beta` |
80
+ | Remove bad tag from a version | `npm dist-tag rm @patze/code-cli@<bad> beta` |
53
81
  | Tester reinstall after rollback | `npm install -g @patze/code-cli@beta` |
54
82
 
55
83
  Tarball handoff (no registry):
56
84
 
57
85
  ```bash
58
86
  npm pack
59
- # share patze-code-cli-0.10.2.tgz
60
- npm install -g ./patze-code-cli-0.10.2.tgz
87
+ # share patze-code-cli-<version>.tgz
88
+ npm install -g ./patze-code-cli-<version>.tgz
61
89
  ```
62
90
 
63
91
  ---
@@ -67,21 +95,28 @@ npm install -g ./patze-code-cli-0.10.2.tgz
67
95
  ```bash
68
96
  npm install -g @patze/code-cli@beta
69
97
  # or pinned:
70
- npm install -g @patze/code-cli@0.10.2
98
+ npm install -g @patze/code-cli@0.55.0
71
99
 
72
100
  patze --version
73
101
  patze doctor
74
102
  patze status # exit 1 without auth is EXPECTED
75
103
  ```
76
104
 
77
- Optional auth (env — never paste into issues):
105
+ Recommended auth (device code):
106
+
107
+ ```bash
108
+ patze login --pair --api https://api.example.com
109
+ patze status --check
110
+ patze doctor --check
111
+ ```
112
+
113
+ Legacy env (never paste into issues):
78
114
 
79
115
  ```bash
80
116
  export PATZE_CODE_API=https://api.example.com
81
117
  export PATZE_CODE_TOKEN=<internal-api-key>
82
118
  export PATZE_CODE_USER_ID=<user-uuid>
83
119
  patze status --check
84
- patze doctor --check
85
120
  ```
86
121
 
87
122
  Uninstall: `npm uninstall -g @patze/code-cli` — see `docs/uninstall-reset.md`.
@@ -101,6 +136,7 @@ patze status # expect exit 1 if no auth — OK
101
136
  patze code inspect
102
137
  patze goal "smoke" --dry-run
103
138
  patze code apply # must say disabled
139
+ patze runs list # needs auth; read-only when configured
104
140
  ```
105
141
 
106
142
  ### B. Trust loop (15 min, temp repo)
@@ -111,7 +147,7 @@ patze
111
147
 
112
148
  Run: `/goal` → `/plan` → `/diff` → `/permissions suggest` → `/approve` → `/permissions edit-with-approval` → `/apply` → type `APPLY <masked-digest>` → `/verify` → `/status`.
113
149
 
114
- Optional: edit file after apply `/verify` fails `/apply` blocked until `/reject` or fix + verify pass.
150
+ Optional: `/model` (search + T/F prefs), `/runs`, `/local` vs `/cloud` (cloud needs GitHub origin + server flag).
115
151
 
116
152
  ### C. Report back
117
153
 
@@ -142,6 +178,7 @@ Copy template: `docs/beta-feedback-template.md`
142
178
  | `patze code plan --preview` fails | No auth or API down |
143
179
  | `patze code apply` disabled | By design — use `/apply` in shell |
144
180
  | `/plan` local-only without auth | By design |
181
+ | `/cloud` blocked | Server cloud flag off or non-GitHub origin |
145
182
  | Session history lost on restart | In-memory only (known limit) |
146
183
  | No npm test from `/verify` | Shell verify not implemented |
147
184
 
@@ -162,21 +199,11 @@ Or run repo smoke: `npm run smoke` (includes local pack install).
162
199
 
163
200
  ---
164
201
 
165
- ## Publish notes (changelog summary)
166
-
167
- **0.10.2** — internal beta rollout assets only:
168
-
169
- - `patze doctor [--check]` (read-only diagnostics)
170
- - Install helper + rollout docs (checklist, feedback template, known limits)
171
- - No trust-loop or safety posture changes
172
-
173
- ---
174
-
175
202
  ## After beta feedback — recommended next slice
176
203
 
177
- 1. **`patze runs` read-only sync** (no mutation; closes biggest “planned” gap)
178
- 2. **OAuth / dashboard login** (replace token paste)
179
- 3. **Session persistence decision** (SQLite vs server transcript)
180
- 4. **Optional gated shell verify** (explicit opt-in only; never default)
204
+ 1. **OAuth polish** beyond `login --pair` (token refresh, production redirect UX)
205
+ 2. **Session persistence decision** (SQLite vs server transcript)
206
+ 3. **Optional gated shell verify** (explicit opt-in only; never default)
207
+ 4. **Production error telemetry** without leaking secrets
181
208
 
182
- Do **not** start with `--yes`, auto-apply, full-auto, SSE, or telemetry until beta trust-loop feedback is collected.
209
+ Do **not** start with `--yes`, auto-apply, full-auto, or telemetry until beta trust-loop feedback is collected.
@@ -1,6 +1,6 @@
1
1
  # Internal beta — @patze/code-cli
2
2
 
3
- Status: **0.10.x internal beta** (trust loop complete, rollout assets for team feedback)
3
+ Status: **0.55.x internal beta** (cookbook/Codex UX + trust loop + runs automation)
4
4
 
5
5
  Audience: Patze team and trusted beta testers only. Not `npm latest` / 1.0.
6
6
 
@@ -69,8 +69,11 @@ Full list: [`known-limitations.md`](known-limitations.md)
69
69
  | Apply history | In-memory, current process only (max 20 records) |
70
70
  | Verify | Last apply only; no shell/npm test |
71
71
  | Apply | Interactive only; no `--yes` |
72
- | Runs | `patze runs` planned not available |
73
- | OAuth | Dashboard login not implemented |
72
+ | Runs | **`patze runs list|open|cancel`** + `/runs` (server history; cancel mutates remote run) |
73
+ | OAuth | **`patze login --pair`** (partial); manual token paste still supported |
74
+ | Model picker | Search + T/F prefs; optional live list via **`CURSOR_API_KEY`** |
75
+ | Cloud execute | **`/cloud`** + `npm run e2e:cloud*` when server flag + GitHub origin ready |
76
+ | CI proof | **`cloud-e2e-gated`** + **`e2e-gated`** jobs skip without secrets/API; see handoff |
74
77
  | Persistence | No cross-restart session restore |
75
78
 
76
79
  ## Reporting issues
@@ -1,13 +1,15 @@
1
- # Known limitations — internal beta (0.14.x)
1
+ # Known limitations — Patze Code CLI (0.55.x)
2
2
 
3
- These are **intentional** for the current slice. Do not treat them as bugs unless behavior contradicts this list.
3
+ These are **intentional** for the current slice unless behavior contradicts this list.
4
+ Last aligned with **`npm run verify`** (unit + smoke + PTY suite) at **0.55.0**.
4
5
 
5
6
  ## Authentication
6
7
 
7
8
  | Limitation | Status |
8
9
  |------------|--------|
9
- | OAuth / dashboard login | **Not implemented** — use `patze login` or env vars |
10
+ | OAuth / dashboard login | **Partial** — `patze login --pair` (device-code via dashboard); manual token paste still supported |
10
11
  | Token refresh | Manual re-login |
12
+ | Doctor auth | **`patze doctor`** shows `auth` + `execute` + `agent` lines (no ambiguous “ready” when execute is off) |
11
13
 
12
14
  ## Apply and permissions
13
15
 
@@ -18,6 +20,7 @@ These are **intentional** for the current slice. Do not treat them as bugs unles
18
20
  | `--yes` flag | **Not supported** |
19
21
  | `full-auto` permission | **Forbidden permanently** |
20
22
  | Auto-apply | **Disabled** |
23
+ | Trust state across restart | **Not persisted** — approval gate / diff review in-memory only |
21
24
 
22
25
  ## Verify
23
26
 
@@ -27,34 +30,35 @@ These are **intentional** for the current slice. Do not treat them as bugs unles
27
30
  | Network verify | **Not implemented** — local hash check only |
28
31
  | `patze code verify` | Help-only summary when no session apply |
29
32
 
30
- ## Runs and sync
33
+ ## Runs, execute, and agent
31
34
 
32
35
  | Limitation | Status |
33
36
  |------------|--------|
34
- | `patze runs` sync | **Implemented (0.14+)** — `list`, `open`, `open --stream`; `/runs` in shell |
35
- | Session persistence | **Partial (0.14+)** — `~/.patze/sessions/<hash>.json` (transcript, model, last run) |
36
- | Multi-turn context | **Partial (0.14+)** — prior turns forwarded via `conversation_context`; `/reset` starts fresh epoch |
37
- | `/local` / `/cloud` | **Partial** — `/local` default; `/cloud` selects mode but cloud execute blocked in beta |
38
- | Interactive agent execute + SSE | **Implemented (0.11+)** cookbook pinned cwd + live deltas (0.12+); requires auth + resolved user id; opt-out `PATZE_CODE_CLI_EXECUTE=0` |
39
- | One-shot argv / stdin | **Implemented (0.13+)** — `patze "task"`, `patze agent`, piped stdin |
40
- | `/model` picker | **Implemented (0.13+)** — session override + `PATZE_CODE_MODEL` / config |
41
- | `/run` replay | **Implemented (0.13+)** SSE replay or stored trace fallback |
42
- | Live text deltas in-place | **Implemented (0.18+)** — Node TTY live feed + OpenTUI upsert stream |
37
+ | `patze runs` / `/runs` | **Implemented** — list/open/stream/**cancel**; **`--json`** on list/open |
38
+ | Session persistence | **Partial** — `~/.patze/sessions/<hash>.json` (transcript, model, permission mode, last run) |
39
+ | Multi-turn context | **Partial** — `conversation_context` + `cursor_agent_id`; `/reset` for fresh epoch |
40
+ | `/local` / `/cloud` | **Partial** — `/local` default; cloud execute gated by server `FEATURE_PATZE_CODE_CLI_CLOUD_EXECUTE` |
41
+ | Cloud e2e (maintainers) | **`npm run e2e:cloud`** / **`e2e:cloud:interactive`** needs dev API + GitHub `origin` |
42
+ | Interactive agent execute + SSE | **Implemented** — requires auth + user id; opt-out `PATZE_CODE_CLI_EXECUTE=0` |
43
+ | One-shot / `patze exec --json` | **Implemented** |
44
+ | `/model` + reasoning picker | **Implemented** — searchable picker + T/F prefs (TTY + OpenTUI); live SDK models when `CURSOR_API_KEY` set |
45
+ | OpenTUI keyboard | **Implemented** — j/k, digit jump, inline slash palette, shared footer hints |
46
+ | Cookbook plain feed (pipe) | **Implemented** — `patze exec` + non-TTY agent use Codex feed on stderr |
47
+ | Live e2e proof | **Gated** — `verify:e2e`, `verify:ci-e2e-cloud`; CI jobs skip when API/cloud flag down |
43
48
 
44
49
  ## Session and persistence
45
50
 
46
51
  | Limitation | Status |
47
52
  |------------|--------|
48
- | Apply history persistence | **In-memory only** (current process, max 20) |
49
- | Cross-restart session restore | **Partial (0.14+)** transcript + model + lastRunId per cwd hash |
50
- | Transcript persistence | **Partial (0.14+)** — saved on each interactive turn |
53
+ | Apply history persistence | **In-memory only** (max 20) |
54
+ | Cross-restart trust loop restore | **Not implemented** (by design) |
51
55
 
52
56
  ## Diagnostics
53
57
 
54
58
  | Capability | Notes |
55
59
  |------------|-------|
56
- | `patze doctor` | Read-only; **no network by default** |
57
- | `patze doctor --check` | Optional `/health` probe when auth configured |
60
+ | `patze doctor` | Read-only; **no network by default**; includes **e2e (dev API)** posture |
61
+ | `patze doctor --check` | Optional `/health` when **agent-ready** |
58
62
 
59
63
  ## Telemetry
60
64
 
@@ -63,6 +67,15 @@ These are **intentional** for the current slice. Do not treat them as bugs unles
63
67
  | Usage telemetry upload | **Not implemented** |
64
68
  | Error reporting to server | **Not implemented** |
65
69
 
70
+ ## CI / release
71
+
72
+ | Item | Notes |
73
+ |------|-------|
74
+ | `npm run verify` | Unit + smoke-beta + PTY composer + slash menu + **header model** + PTY trust apply |
75
+ | `npm run verify:all` | `verify` + gated `verify:e2e` (skips when API down) |
76
+ | GitHub Actions | `.github/workflows/patze-code-cli-verify.yml` |
77
+ | Optional e2e | `verify:ci-e2e` — secrets `PATZE_CODE_E2E_*` or local `server/.env` + running API |
78
+
66
79
  ## Before 1.0 / npm latest
67
80
 
68
- See README **Release blockers** — public publish policy, optional gated shell verify, runs read-only sync, OAuth login, persistence decisions.
81
+ See README **Release blockers** — public publish policy, OAuth login, OpenTUI parity, optional cloud execute e2e in CI.
@@ -1,6 +1,6 @@
1
1
  # Release checklist — @patze/code-cli internal beta
2
2
 
3
- Use before tagging `0.10.x` for team rollout. **Not** npm `latest` / 1.0 gate.
3
+ Use before tagging internal beta (currently **0.55.x**). **Not** npm `latest` / 1.0 gate.
4
4
 
5
5
  ## Version bump
6
6
 
@@ -22,7 +22,7 @@ Includes:
22
22
  - [ ] `tsc` build
23
23
  - [ ] `verify-pack.mjs` (tarball audit)
24
24
  - [ ] `typecheck`
25
- - [ ] unit tests (`node --test tests/*.test.mjs`)
25
+ - [ ] unit tests (`node --test tests/*.test.mjs`) — **330+**
26
26
  - [ ] `smoke-beta.mjs` (temp workspace + local pack install)
27
27
 
28
28
  Individual commands:
@@ -55,15 +55,23 @@ npm pack --dry-run
55
55
  - [ ] No real home paths or tokens in committed docs
56
56
  - [ ] `patze doctor` / `patze status` mask tokens in output
57
57
 
58
- ## Rollout assets (0.10.2+)
58
+ ## Rollout assets
59
59
 
60
60
  - [ ] `docs/install-beta.md` + `scripts/install-beta.sh`
61
61
  - [ ] `docs/beta-tester-checklist.md`
62
62
  - [ ] `docs/beta-feedback-template.md`
63
63
  - [ ] `docs/known-limitations.md`
64
+ - [ ] `docs/beta-release-handoff.md`
64
65
  - [ ] `docs/smoke-command-guide.md`
65
66
  - [ ] `docs/uninstall-reset.md`
66
67
 
68
+ ## CI (optional proof lanes)
69
+
70
+ Workflow: `.github/workflows/patze-code-cli-verify.yml`
71
+
72
+ - [ ] `e2e-gated` — smart-agent preview/execute (secrets or skip)
73
+ - [ ] `cloud-e2e-gated` — `/cloud` execute path (secrets + `FEATURE_PATZE_CODE_CLI_CLOUD_EXECUTE` or skip)
74
+
67
75
  ## Publish (when ready)
68
76
 
69
77
  ```bash