@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
@@ -0,0 +1,33 @@
1
+ import type { FetchLike } from "./preview-client.js";
2
+ export type PluginSessionValidateResult = {
3
+ ok: true;
4
+ userId: string;
5
+ } | {
6
+ ok: false;
7
+ message: string;
8
+ httpStatus: number | null;
9
+ };
10
+ export type PluginPairingPollResult = {
11
+ ok: true;
12
+ token: string;
13
+ origin?: string;
14
+ } | {
15
+ ok: false;
16
+ expired?: boolean;
17
+ message?: string;
18
+ };
19
+ export declare function generatePairingCode(): string;
20
+ export declare function validatePluginSessionToken(input: {
21
+ webBase: string;
22
+ token: string;
23
+ fetchImpl?: FetchLike;
24
+ timeoutMs?: number;
25
+ }): Promise<PluginSessionValidateResult>;
26
+ export declare function pollPluginSessionPairing(input: {
27
+ webBase: string;
28
+ code: string;
29
+ fetchImpl?: FetchLike;
30
+ timeoutMs?: number;
31
+ }): Promise<PluginPairingPollResult>;
32
+ export declare function openBrowserUrl(url: string): Promise<boolean>;
33
+ //# sourceMappingURL=plugin-session-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-session-client.d.ts","sourceRoot":"","sources":["../../src/backend/plugin-session-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,MAAM,2BAA2B,GACnC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAA;AAE7D,MAAM,MAAM,uBAAuB,GAC/B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAwDvC;AAED,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA8CnC;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQlE"}
@@ -0,0 +1,108 @@
1
+ import { randomBytes } from "node:crypto";
2
+ export function generatePairingCode() {
3
+ return randomBytes(24).toString("hex");
4
+ }
5
+ export async function validatePluginSessionToken(input) {
6
+ const webBase = input.webBase.replace(/\/$/, "");
7
+ const token = input.token.trim();
8
+ const fetchImpl = input.fetchImpl ?? fetch;
9
+ const controller = new AbortController();
10
+ const timer = setTimeout(() => controller.abort(), input.timeoutMs ?? 12_000);
11
+ try {
12
+ const response = await fetchImpl(`${webBase}/api/plugin-session/validate`, {
13
+ method: "POST",
14
+ headers: {
15
+ Accept: "application/json",
16
+ "Content-Type": "application/json",
17
+ },
18
+ body: JSON.stringify({ token }),
19
+ signal: controller.signal,
20
+ });
21
+ let body;
22
+ try {
23
+ body = await response.json();
24
+ }
25
+ catch {
26
+ return {
27
+ ok: false,
28
+ message: `validate returned non-JSON (${response.status})`,
29
+ httpStatus: response.status,
30
+ };
31
+ }
32
+ if (!response.ok) {
33
+ const message = body && typeof body === "object" && typeof body.error === "string"
34
+ ? String(body.error)
35
+ : `validate failed (${response.status})`;
36
+ return { ok: false, message, httpStatus: response.status };
37
+ }
38
+ const userId = body &&
39
+ typeof body === "object" &&
40
+ body.user &&
41
+ typeof body.user.id === "string"
42
+ ? body.user.id.trim()
43
+ : "";
44
+ if (!userId) {
45
+ return { ok: false, message: "validate response missing user.id", httpStatus: response.status };
46
+ }
47
+ return { ok: true, userId };
48
+ }
49
+ catch (error) {
50
+ const message = error instanceof Error ? error.message : "validate request failed";
51
+ return { ok: false, message, httpStatus: null };
52
+ }
53
+ finally {
54
+ clearTimeout(timer);
55
+ }
56
+ }
57
+ export async function pollPluginSessionPairing(input) {
58
+ const webBase = input.webBase.replace(/\/$/, "");
59
+ const fetchImpl = input.fetchImpl ?? fetch;
60
+ const controller = new AbortController();
61
+ const timer = setTimeout(() => controller.abort(), input.timeoutMs ?? 8_000);
62
+ try {
63
+ const url = `${webBase}/api/plugin-session/pairing?code=${encodeURIComponent(input.code)}`;
64
+ const response = await fetchImpl(url, {
65
+ method: "GET",
66
+ headers: { Accept: "application/json" },
67
+ signal: controller.signal,
68
+ });
69
+ let body;
70
+ try {
71
+ body = await response.json();
72
+ }
73
+ catch {
74
+ return { ok: false, message: `pairing poll returned non-JSON (${response.status})` };
75
+ }
76
+ if (body &&
77
+ typeof body === "object" &&
78
+ body.paired === true &&
79
+ typeof body.token === "string") {
80
+ const record = body;
81
+ return {
82
+ ok: true,
83
+ token: record.token.trim(),
84
+ origin: typeof record.origin === "string" ? record.origin.replace(/\/$/, "") : undefined,
85
+ };
86
+ }
87
+ if (body && typeof body === "object" && body.expired === true) {
88
+ return { ok: false, expired: true, message: "pairing code expired" };
89
+ }
90
+ return { ok: false, message: "waiting for dashboard login" };
91
+ }
92
+ catch (error) {
93
+ const message = error instanceof Error ? error.message : "pairing poll failed";
94
+ return { ok: false, message };
95
+ }
96
+ finally {
97
+ clearTimeout(timer);
98
+ }
99
+ }
100
+ export async function openBrowserUrl(url) {
101
+ const { spawnSync } = await import("node:child_process");
102
+ const platform = process.platform;
103
+ const command = platform === "darwin" ? "open" : platform === "win32" ? "cmd" : "xdg-open";
104
+ const args = platform === "win32" ? ["/c", "start", "", url] : [url];
105
+ const run = spawnSync(command, args, { stdio: "ignore" });
106
+ return run.status === 0;
107
+ }
108
+ //# sourceMappingURL=plugin-session-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-session-client.js","sourceRoot":"","sources":["../../src/backend/plugin-session-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAYzC,MAAM,UAAU,mBAAmB;IACjC,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,KAKhD;IACC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;IAChC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAA;IAC1C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,CAAA;IAE7E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,OAAO,8BAA8B,EAAE;YACzE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;YAC/B,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAA;QAEF,IAAI,IAAa,CAAA;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,+BAA+B,QAAQ,CAAC,MAAM,GAAG;gBAC1D,UAAU,EAAE,QAAQ,CAAC,MAAM;aAC5B,CAAA;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,OAAO,GACX,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAQ,IAA4B,CAAC,KAAK,KAAK,QAAQ;gBACzF,CAAC,CAAC,MAAM,CAAE,IAA0B,CAAC,KAAK,CAAC;gBAC3C,CAAC,CAAC,oBAAoB,QAAQ,CAAC,MAAM,GAAG,CAAA;YAC5C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAA;QAC5D,CAAC;QAED,MAAM,MAAM,GACV,IAAI;YACJ,OAAO,IAAI,KAAK,QAAQ;YACvB,IAAoC,CAAC,IAAI;YAC1C,OAAQ,IAAmC,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ;YAC9D,CAAC,CAAE,IAAiC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;YACnD,CAAC,CAAC,EAAE,CAAA;QAER,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,mCAAmC,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAA;QACjG,CAAC;QAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAA;QAClF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;IACjD,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAK9C;IACC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAA;IAC1C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,CAAA;IAE5E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,OAAO,oCAAoC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;QAC1F,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;YACpC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACvC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAA;QAEF,IAAI,IAAa,CAAA;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,mCAAmC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAA;QACtF,CAAC;QAED,IACE,IAAI;YACJ,OAAO,IAAI,KAAK,QAAQ;YACvB,IAA6B,CAAC,MAAM,KAAK,IAAI;YAC9C,OAAQ,IAA4B,CAAC,KAAK,KAAK,QAAQ,EACvD,CAAC;YACD,MAAM,MAAM,GAAG,IAA0C,CAAA;YACzD,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;gBAC1B,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;aACzF,CAAA;QACH,CAAC;QAED,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAK,IAA8B,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACzF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAA;QACtE,CAAC;QAED,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAA;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAA;QAC9E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;IAC/B,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;IACjC,MAAM,OAAO,GACX,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAA;IAC5E,MAAM,IAAI,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACpE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;IACzD,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAA;AACzB,CAAC"}
@@ -1 +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"}
1
+ {"version":3,"file":"runs-client.d.ts","sourceRoot":"","sources":["../../src/backend/runs-client.ts"],"names":[],"mappings":"AACA,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"}
@@ -1,3 +1,4 @@
1
+ import { isAuthConfigured } from "./auth.js";
1
2
  import { PatzeBackendClient } from "./client.js";
2
3
  import { normalizePatzeCodeRunRecord, } from "./run-record.js";
3
4
  function normalizeRunListItem(raw) {
@@ -73,7 +74,7 @@ export async function fetchPatzeCodeRunDetail(input) {
73
74
  }
74
75
  export async function listPatzeCodeRunsForConfig(input) {
75
76
  const config = input.config;
76
- if (!config.api || !config.token || !config.userId) {
77
+ if (!isAuthConfigured(config)) {
77
78
  return { ok: false, kind: "auth", message: "Auth incomplete — run patze login first." };
78
79
  }
79
80
  const client = new PatzeBackendClient(config);
@@ -1 +1 @@
1
- {"version":3,"file":"runs-client.js","sourceRoot":"","sources":["../../src/backend/runs-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runs-client.js","sourceRoot":"","sources":["../../src/backend/runs-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { FetchLike } from "../../backend/preview-client.js";
2
+ import type { Printer } from "../ui/printer.js";
3
+ export declare function runPairingLogin(input: {
4
+ api: string;
5
+ web?: string | null;
6
+ printer: Printer;
7
+ fetchImpl?: FetchLike;
8
+ openBrowser?: (url: string) => Promise<boolean>;
9
+ }): Promise<number>;
10
+ //# sourceMappingURL=pairing-login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pairing-login.d.ts","sourceRoot":"","sources":["../../../src/cli/auth/pairing-login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAQhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAU/C,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAC3C,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAChD,GAAG,OAAO,CAAC,MAAM,CAAC,CAkFlB"}
@@ -0,0 +1,78 @@
1
+ import { generatePairingCode, openBrowserUrl, pollPluginSessionPairing, validatePluginSessionToken, } from "../../backend/plugin-session-client.js";
2
+ import { resolveWebUiUrl } from "../../config/web-ui.js";
3
+ import { persistCredentialsWithUserResolution } from "../interactive/auth-credential-resolve.js";
4
+ const PAIR_POLL_MS = 2_000;
5
+ const PAIR_TIMEOUT_MS = 10 * 60 * 1_000;
6
+ function sleep(ms) {
7
+ return new Promise((resolve) => setTimeout(resolve, ms));
8
+ }
9
+ export async function runPairingLogin(input) {
10
+ const api = input.api.trim();
11
+ if (!api) {
12
+ input.printer.error("API URL required — patze login --pair --api <url> [--web <dashboard-url>]");
13
+ return 2;
14
+ }
15
+ const web = input.web?.trim() ||
16
+ resolveWebUiUrl({ api, web: null }) ||
17
+ null;
18
+ if (!web) {
19
+ input.printer.error("Dashboard URL required — set PATZE_WEB_UI_URL or pass --web (e.g. https://app.example.com)");
20
+ return 2;
21
+ }
22
+ const code = generatePairingCode();
23
+ const loginUrl = `${web.replace(/\/$/, "")}/login?pair=${encodeURIComponent(code)}&source=patze-cli`;
24
+ input.printer.line("Patze login — dashboard pairing");
25
+ input.printer.line("");
26
+ input.printer.line(` 1. Open: ${loginUrl}`);
27
+ input.printer.line(" 2. Sign in with Discord on the dashboard");
28
+ input.printer.line(" 3. Wait here — CLI will receive your session automatically");
29
+ input.printer.line("");
30
+ const openBrowser = input.openBrowser ?? openBrowserUrl;
31
+ const opened = await openBrowser(loginUrl);
32
+ if (opened) {
33
+ input.printer.line("Opened browser for login.");
34
+ }
35
+ else {
36
+ input.printer.warn("Could not open browser — use the URL above manually.");
37
+ }
38
+ input.printer.line("Waiting for pairing… (Ctrl+C to cancel)");
39
+ const started = Date.now();
40
+ while (Date.now() - started < PAIR_TIMEOUT_MS) {
41
+ const poll = await pollPluginSessionPairing({
42
+ webBase: web,
43
+ code,
44
+ fetchImpl: input.fetchImpl,
45
+ });
46
+ if (poll.ok) {
47
+ const effectiveWeb = poll.origin ?? web;
48
+ const validated = await validatePluginSessionToken({
49
+ webBase: effectiveWeb,
50
+ token: poll.token,
51
+ fetchImpl: input.fetchImpl,
52
+ });
53
+ if (!validated.ok) {
54
+ input.printer.error(`Token validation failed: ${validated.message}`);
55
+ return 1;
56
+ }
57
+ const persisted = await persistCredentialsWithUserResolution({
58
+ api,
59
+ token: poll.token,
60
+ userId: validated.userId,
61
+ web: effectiveWeb,
62
+ fetchImpl: input.fetchImpl,
63
+ });
64
+ input.printer.info(`Saved credentials to ${persisted.path}`);
65
+ input.printer.line(`user id: ${validated.userId}`);
66
+ input.printer.line("Run `patze status --check` to verify API connectivity.");
67
+ return 0;
68
+ }
69
+ if (poll.expired) {
70
+ input.printer.error("Pairing code expired — run patze login --pair again.");
71
+ return 1;
72
+ }
73
+ await sleep(PAIR_POLL_MS);
74
+ }
75
+ input.printer.error("Pairing timed out after 10 minutes.");
76
+ return 1;
77
+ }
78
+ //# sourceMappingURL=pairing-login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pairing-login.js","sourceRoot":"","sources":["../../../src/cli/auth/pairing-login.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/C;AAeD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAyC5E;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BnF"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAY5C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/C;AAeD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CA4C5E;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BnF"}
@@ -3,11 +3,13 @@ import { homedir } from "node:os";
3
3
  import { dirname, resolve } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
5
  import { PatzeBackendClient } from "../../backend/client.js";
6
- import { isAuthConfigured } from "../../backend/auth.js";
7
6
  import { loadConfig, maskSecret } from "../../config/config.js";
8
7
  import { CLI_VERSION, formatCliVersionLine } from "../../version.js";
9
8
  import { guessWorkspaceRoot } from "../../runtime/workspace.js";
10
9
  import { flagBoolean } from "../argv.js";
10
+ import { resolveInteractiveUi, formatInteractiveUiDoctorLines } from "../interactive/interactive-ui.js";
11
+ import { formatDoctorAuthLines, resolveAuthReadiness, } from "../interactive/auth-readiness.js";
12
+ import { formatDoctorE2eLines, resolveE2eDevEnv, } from "../doctor/e2e-readiness.js";
11
13
  export function redactHome(path) {
12
14
  const home = homedir();
13
15
  if (path.startsWith(home)) {
@@ -29,7 +31,7 @@ function readPackageVersion(packageRoot) {
29
31
  }
30
32
  export function buildDoctorLines(cwd, packageRoot) {
31
33
  const config = loadConfig(cwd);
32
- const authReady = isAuthConfigured(config);
34
+ const readiness = resolveAuthReadiness(config);
33
35
  const root = packageRoot ?? resolvePackageRoot();
34
36
  const versionFromFile = readPackageVersion(root);
35
37
  const distOk = existsSync(resolve(root, "dist/cli/main.js"));
@@ -50,13 +52,15 @@ export function buildDoctorLines(cwd, packageRoot) {
50
52
  ` api: ${config.api ?? "not set"}`,
51
53
  ` user: ${config.userId ? maskSecret(config.userId) : "not set"}`,
52
54
  ` token: ${maskSecret(config.token)}`,
53
- ` auth: ${authReady ? "ready" : "incomplete"}`,
55
+ ...formatDoctorAuthLines(readiness),
54
56
  "",
55
57
  "package health",
56
58
  ` dist_main: ${distOk ? "ok" : "missing"}`,
57
59
  ` version_file: ${versionFromFile ?? "missing"}`,
58
60
  ` version_match: ${versionFromFile === CLI_VERSION ? "yes" : "no"}`,
59
61
  "",
62
+ ...formatInteractiveUiDoctorLines(resolveInteractiveUi()),
63
+ "",
60
64
  "trust loop posture",
61
65
  " apply: interactive /apply only (patze code apply disabled)",
62
66
  " verify: local /verify (no shell)",
@@ -66,13 +70,15 @@ export function buildDoctorLines(cwd, packageRoot) {
66
70
  "",
67
71
  "network",
68
72
  " default: no network calls (use patze doctor --check to probe /health)",
73
+ ...formatDoctorE2eLines(resolveE2eDevEnv(root)),
69
74
  ];
70
75
  }
71
76
  export async function runDoctor(argv, printer) {
72
77
  const cwd = process.cwd();
73
78
  const check = flagBoolean(argv.flags, "check");
74
79
  const config = loadConfig(cwd);
75
- const authReady = isAuthConfigured(config);
80
+ const readiness = resolveAuthReadiness(config);
81
+ const authReady = readiness.agentReady;
76
82
  const root = resolvePackageRoot();
77
83
  const distOk = existsSync(resolve(root, "dist/cli/main.js"));
78
84
  for (const line of buildDoctorLines(cwd, root)) {
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAY5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE/C,wBAAsB,OAAO,CAC3B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,MAAM,CAAC,CAuHjB"}
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAkB5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE/C,wBAAsB,OAAO,CAC3B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,MAAM,CAAC,CA+IjB"}
@@ -2,7 +2,10 @@ import { loadConfig } from "../../config/config.js";
2
2
  import { flagBoolean } from "../argv.js";
3
3
  import { runAgentTurn } from "../interactive/agent-turn.js";
4
4
  import { isCliExecuteEnabled, isExecuteAuthReady } from "../interactive/agent-execute-turn.js";
5
+ import { ensureExecuteAuthConfig } from "../interactive/ensure-execute-auth.js";
6
+ import { resolveAuthReadiness } from "../interactive/auth-readiness.js";
5
7
  import { createJsonAgentStreamWriter } from "../interactive/json-agent-stream.js";
8
+ import { createPlainAgentHandlers, createPlainCodexFeedRenderer, } from "../interactive/plain-agent-render.js";
6
9
  import { InteractiveSession } from "../interactive/session.js";
7
10
  import { loadPersistedSession, savePersistedSession } from "../interactive/session-store.js";
8
11
  import { createCodexFeedWriter, shouldUseCodexFeedWriter, } from "../interactive/codex-feed-writer.js";
@@ -28,14 +31,19 @@ export async function runExec(parsed, printer, fetchImpl) {
28
31
  }
29
32
  return 1;
30
33
  }
31
- const config = loadConfig(cwd);
34
+ let config = loadConfig(cwd);
35
+ config = await ensureExecuteAuthConfig(cwd, { fetchImpl });
32
36
  if (!isExecuteAuthReady(config)) {
37
+ const readiness = resolveAuthReadiness(config);
38
+ const message = readiness.missingUserId
39
+ ? "User id required — patze login <api> <token> <userId>"
40
+ : "Auth required — patze login <api> <token> [userId]";
33
41
  if (jsonMode) {
34
42
  const writer = createJsonAgentStreamWriter();
35
- writer.writeRaw({ type: "error", message: "auth required — patze login <api> <token> [userId]" });
43
+ writer.writeRaw({ type: "error", message });
36
44
  }
37
45
  else {
38
- printer.error("Auth required — patze login <api> <token> [userId]");
46
+ printer.error(message);
39
47
  }
40
48
  return 1;
41
49
  }
@@ -58,12 +66,16 @@ export async function runExec(parsed, printer, fetchImpl) {
58
66
  session.setModelOverride(model);
59
67
  }
60
68
  const jsonWriter = jsonMode ? createJsonAgentStreamWriter() : null;
69
+ const plainMode = !jsonMode && !process.stdout.isTTY;
70
+ const plainHandlers = plainMode ? createPlainAgentHandlers() : null;
71
+ const plainFeed = plainHandlers ? createPlainCodexFeedRenderer(plainHandlers) : null;
61
72
  const useCodexFeed = !jsonMode &&
62
73
  process.stdout.isTTY &&
63
74
  shouldUseCodexFeedWriter(true);
64
75
  const feedWriter = useCodexFeed ? createCodexFeedWriter(printer) : null;
65
76
  const assistantTurnId = String(Date.now());
66
77
  feedWriter?.reset();
78
+ plainFeed?.reset();
67
79
  const controller = new AbortController();
68
80
  const onSigint = () => controller.abort();
69
81
  process.once("SIGINT", onSigint);
@@ -73,15 +85,17 @@ export async function runExec(parsed, printer, fetchImpl) {
73
85
  fetchImpl,
74
86
  signal: controller.signal,
75
87
  force,
76
- useActivitySpinner: jsonMode ? false : useCodexFeed ? true : undefined,
88
+ useActivitySpinner: jsonMode ? false : plainMode ? false : useCodexFeed ? true : undefined,
77
89
  onAgentEvent: jsonWriter
78
90
  ? (event) => {
79
91
  jsonWriter.write(event);
80
92
  }
81
- : feedWriter
82
- ? (event) => feedWriter.onAgentEvent(event, assistantTurnId)
83
- : undefined,
84
- onTranscriptLine: jsonMode || feedWriter
93
+ : plainFeed
94
+ ? (event) => plainFeed.onAgentEvent(event)
95
+ : feedWriter
96
+ ? (event) => feedWriter.onAgentEvent(event, assistantTurnId)
97
+ : undefined,
98
+ onTranscriptLine: jsonMode || feedWriter || plainFeed
85
99
  ? undefined
86
100
  : (line) => {
87
101
  printer.line(line);
@@ -108,6 +122,17 @@ export async function runExec(parsed, printer, fetchImpl) {
108
122
  usage_output_tokens: result.run.usage_output_tokens || undefined,
109
123
  });
110
124
  }
125
+ if (jsonMode && result.exitCode !== 0) {
126
+ const message = result.lines
127
+ .map((line) => line.trim())
128
+ .filter(Boolean)
129
+ .join(" ") || "execute failed";
130
+ jsonWriter?.writeRaw({
131
+ type: "error",
132
+ message,
133
+ exit_code: result.exitCode,
134
+ });
135
+ }
111
136
  savePersistedSession(cwd, session.exportPersistedState());
112
137
  return result.exitCode;
113
138
  }
@@ -1 +1 @@
1
- {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export type LoginCredentials = {
4
4
  api: string;
5
5
  token: string;
6
6
  userId?: string;
7
+ web?: string;
7
8
  };
8
9
  export type LogoutResult = {
9
10
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAcD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAW/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAe/C;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlF"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAM5C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAcD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAc/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAgB/C;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA2ClF"}
@@ -1,7 +1,10 @@
1
1
  import { writeFileSync, mkdirSync, readFileSync, existsSync, rmSync } from "node:fs";
2
2
  import { dirname } from "node:path";
3
3
  import { globalConfigPath } from "../../config/config.js";
4
- import { flagString } from "../argv.js";
4
+ import { flagBoolean, flagString } from "../argv.js";
5
+ import { persistCredentialsWithUserResolution } from "../interactive/auth-credential-resolve.js";
6
+ import { runPairingLogin } from "../auth/pairing-login.js";
7
+ import { loadConfig } from "../../config/config.js";
5
8
  function readGlobalConfigRaw(path) {
6
9
  try {
7
10
  const parsed = JSON.parse(readFileSync(path, "utf8"));
@@ -28,6 +31,9 @@ export function saveCredentials(creds) {
28
31
  if (creds.userId) {
29
32
  next.userId = creds.userId;
30
33
  }
34
+ if (creds.web) {
35
+ next.web = creds.web;
36
+ }
31
37
  writeFileSync(path, `${JSON.stringify(next, null, 2)}\n`, { mode: 0o600 });
32
38
  return path;
33
39
  }
@@ -44,6 +50,7 @@ export function clearCredentials() {
44
50
  delete next.api;
45
51
  delete next.token;
46
52
  delete next.userId;
53
+ delete next.web;
47
54
  if (Object.keys(next).length === 0) {
48
55
  rmSync(path, { force: true });
49
56
  return { path, existed: true, removedFile: true };
@@ -52,17 +59,41 @@ export function clearCredentials() {
52
59
  return { path, existed: true, removedFile: false };
53
60
  }
54
61
  export async function runLogin(argv, printer) {
55
- const api = flagString(argv.flags, "api") ?? argv.positional[0] ?? null;
62
+ const pair = flagBoolean(argv.flags, "pair");
63
+ const api = flagString(argv.flags, "api") ??
64
+ argv.positional[0] ??
65
+ loadConfig(process.cwd()).api ??
66
+ null;
67
+ const web = flagString(argv.flags, "web") ?? loadConfig(process.cwd()).web ?? null;
68
+ if (pair) {
69
+ if (!api) {
70
+ printer.error("Usage: patze login --pair --api <api-url> [--web <dashboard-url>]");
71
+ return 2;
72
+ }
73
+ return runPairingLogin({ api, web, printer });
74
+ }
56
75
  const token = flagString(argv.flags, "token") ?? argv.positional[1] ?? null;
57
76
  const userId = flagString(argv.flags, "user-id") ?? flagString(argv.flags, "user") ?? argv.positional[2] ?? null;
58
77
  if (!api || !token) {
59
78
  printer.error("Usage: patze login <api-url> <token> [user-id]");
60
79
  printer.error(" patze login --api <url> --token <token> [--user-id <uuid>]");
80
+ printer.error(" patze login --pair --api <url> [--web <dashboard-url>]");
61
81
  return 2;
62
82
  }
63
- const path = saveCredentials({ api, token, userId: userId ?? undefined });
64
- printer.info(`Saved credentials to ${path}`);
83
+ const persisted = await persistCredentialsWithUserResolution({
84
+ api,
85
+ token,
86
+ userId: userId ?? undefined,
87
+ web: web ?? undefined,
88
+ });
89
+ printer.info(`Saved credentials to ${persisted.path}`);
90
+ if (persisted.userId) {
91
+ printer.line(`user id: ${persisted.userId}`);
92
+ }
93
+ if (persisted.userIdWarning) {
94
+ printer.warn(persisted.userIdWarning);
95
+ }
65
96
  printer.line("Run `patze status` to verify connectivity.");
66
- return 0;
97
+ return persisted.userIdWarning && !persisted.userId ? 1 : 0;
67
98
  }
68
99
  //# sourceMappingURL=login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"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"}
@@ -1 +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;AAexE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAkB1E;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAyBtE"}
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;AAexE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAkB1E;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,EAAE,CA0BtE"}