@patze/code-cli 0.43.3 → 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.
- package/CHANGELOG.md +231 -0
- package/README.md +84 -57
- package/VERSION +1 -1
- package/dist/backend/auth-token-kind.d.ts +3 -0
- package/dist/backend/auth-token-kind.d.ts.map +1 -0
- package/dist/backend/auth-token-kind.js +6 -0
- package/dist/backend/auth-token-kind.js.map +1 -0
- package/dist/backend/client.d.ts.map +1 -1
- package/dist/backend/client.js +7 -1
- package/dist/backend/client.js.map +1 -1
- package/dist/backend/execute-client.d.ts +1 -1
- package/dist/backend/execute-client.d.ts.map +1 -1
- package/dist/backend/execute-client.js +26 -0
- package/dist/backend/execute-client.js.map +1 -1
- package/dist/backend/plugin-session-client.d.ts +33 -0
- package/dist/backend/plugin-session-client.d.ts.map +1 -0
- package/dist/backend/plugin-session-client.js +108 -0
- package/dist/backend/plugin-session-client.js.map +1 -0
- package/dist/backend/runs-client.d.ts.map +1 -1
- package/dist/backend/runs-client.js +2 -1
- package/dist/backend/runs-client.js.map +1 -1
- package/dist/cli/auth/pairing-login.d.ts +10 -0
- package/dist/cli/auth/pairing-login.d.ts.map +1 -0
- package/dist/cli/auth/pairing-login.js +78 -0
- package/dist/cli/auth/pairing-login.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +10 -4
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/exec.d.ts.map +1 -1
- package/dist/cli/commands/exec.js +33 -8
- package/dist/cli/commands/exec.js.map +1 -1
- package/dist/cli/commands/login.d.ts +1 -0
- package/dist/cli/commands/login.d.ts.map +1 -1
- package/dist/cli/commands/login.js +36 -5
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/runs-format.d.ts.map +1 -1
- package/dist/cli/commands/runs-format.js +2 -1
- package/dist/cli/commands/runs-format.js.map +1 -1
- package/dist/cli/commands/runs.d.ts.map +1 -1
- package/dist/cli/commands/runs.js +63 -5
- package/dist/cli/commands/runs.js.map +1 -1
- package/dist/cli/commands/status-format.d.ts.map +1 -1
- package/dist/cli/commands/status-format.js +4 -3
- package/dist/cli/commands/status-format.js.map +1 -1
- package/dist/cli/doctor/e2e-readiness.d.ts +12 -0
- package/dist/cli/doctor/e2e-readiness.d.ts.map +1 -0
- package/dist/cli/doctor/e2e-readiness.js +95 -0
- package/dist/cli/doctor/e2e-readiness.js.map +1 -0
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +2 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interactive/agent-execute-turn.d.ts.map +1 -1
- package/dist/cli/interactive/agent-execute-turn.js +3 -1
- package/dist/cli/interactive/agent-execute-turn.js.map +1 -1
- package/dist/cli/interactive/agent-turn-context.d.ts +2 -2
- package/dist/cli/interactive/agent-turn-context.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn-context.js +23 -8
- package/dist/cli/interactive/agent-turn-context.js.map +1 -1
- package/dist/cli/interactive/agent-turn.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn.js +8 -7
- package/dist/cli/interactive/agent-turn.js.map +1 -1
- package/dist/cli/interactive/auth-credential-resolve.d.ts +20 -0
- package/dist/cli/interactive/auth-credential-resolve.d.ts.map +1 -0
- package/dist/cli/interactive/auth-credential-resolve.js +65 -0
- package/dist/cli/interactive/auth-credential-resolve.js.map +1 -0
- package/dist/cli/interactive/auth-gate.d.ts +1 -1
- package/dist/cli/interactive/auth-gate.d.ts.map +1 -1
- package/dist/cli/interactive/auth-gate.js +12 -3
- package/dist/cli/interactive/auth-gate.js.map +1 -1
- package/dist/cli/interactive/auth-readiness.d.ts +16 -0
- package/dist/cli/interactive/auth-readiness.d.ts.map +1 -0
- package/dist/cli/interactive/auth-readiness.js +50 -0
- package/dist/cli/interactive/auth-readiness.js.map +1 -0
- package/dist/cli/interactive/codex-feed-writer.d.ts.map +1 -1
- package/dist/cli/interactive/codex-feed-writer.js +4 -0
- package/dist/cli/interactive/codex-feed-writer.js.map +1 -1
- package/dist/cli/interactive/composer-edit-keys.d.ts +21 -0
- package/dist/cli/interactive/composer-edit-keys.d.ts.map +1 -0
- package/dist/cli/interactive/composer-edit-keys.js +57 -0
- package/dist/cli/interactive/composer-edit-keys.js.map +1 -0
- package/dist/cli/interactive/ensure-execute-auth.d.ts.map +1 -1
- package/dist/cli/interactive/ensure-execute-auth.js +8 -13
- package/dist/cli/interactive/ensure-execute-auth.js.map +1 -1
- package/dist/cli/interactive/header-refresh-triggers.d.ts +3 -0
- package/dist/cli/interactive/header-refresh-triggers.d.ts.map +1 -0
- package/dist/cli/interactive/header-refresh-triggers.js +16 -0
- package/dist/cli/interactive/header-refresh-triggers.js.map +1 -0
- package/dist/cli/interactive/header-refresh.d.ts +4 -0
- package/dist/cli/interactive/header-refresh.d.ts.map +1 -0
- package/dist/cli/interactive/header-refresh.js +33 -0
- package/dist/cli/interactive/header-refresh.js.map +1 -0
- package/dist/cli/interactive/header.d.ts +3 -2
- package/dist/cli/interactive/header.d.ts.map +1 -1
- package/dist/cli/interactive/header.js +23 -14
- package/dist/cli/interactive/header.js.map +1 -1
- package/dist/cli/interactive/interactive-footer-hints.d.ts +12 -0
- package/dist/cli/interactive/interactive-footer-hints.d.ts.map +1 -0
- package/dist/cli/interactive/interactive-footer-hints.js +32 -0
- package/dist/cli/interactive/interactive-footer-hints.js.map +1 -0
- package/dist/cli/interactive/interactive-model-apply.d.ts +15 -0
- package/dist/cli/interactive/interactive-model-apply.d.ts.map +1 -0
- package/dist/cli/interactive/interactive-model-apply.js +28 -0
- package/dist/cli/interactive/interactive-model-apply.js.map +1 -0
- package/dist/cli/interactive/interactive-ui.d.ts +13 -0
- package/dist/cli/interactive/interactive-ui.d.ts.map +1 -0
- package/dist/cli/interactive/interactive-ui.js +64 -0
- package/dist/cli/interactive/interactive-ui.js.map +1 -0
- package/dist/cli/interactive/launcher.d.ts.map +1 -1
- package/dist/cli/interactive/launcher.js +24 -17
- package/dist/cli/interactive/launcher.js.map +1 -1
- package/dist/cli/interactive/line-editor.d.ts +6 -0
- package/dist/cli/interactive/line-editor.d.ts.map +1 -1
- package/dist/cli/interactive/line-editor.js +102 -8
- package/dist/cli/interactive/line-editor.js.map +1 -1
- package/dist/cli/interactive/model-catalog-resolve.d.ts +11 -0
- package/dist/cli/interactive/model-catalog-resolve.d.ts.map +1 -0
- package/dist/cli/interactive/model-catalog-resolve.js +49 -0
- package/dist/cli/interactive/model-catalog-resolve.js.map +1 -0
- package/dist/cli/interactive/model-picker-panel.d.ts +22 -2
- package/dist/cli/interactive/model-picker-panel.d.ts.map +1 -1
- package/dist/cli/interactive/model-picker-panel.js +99 -16
- package/dist/cli/interactive/model-picker-panel.js.map +1 -1
- package/dist/cli/interactive/model-selector.d.ts.map +1 -1
- package/dist/cli/interactive/model-selector.js +3 -2
- package/dist/cli/interactive/model-selector.js.map +1 -1
- package/dist/cli/interactive/model-tty-picker.d.ts +3 -1
- package/dist/cli/interactive/model-tty-picker.d.ts.map +1 -1
- package/dist/cli/interactive/model-tty-picker.js +154 -24
- package/dist/cli/interactive/model-tty-picker.js.map +1 -1
- package/dist/cli/interactive/plain-codex-feed.d.ts.map +1 -1
- package/dist/cli/interactive/plain-codex-feed.js +48 -0
- package/dist/cli/interactive/plain-codex-feed.js.map +1 -1
- package/dist/cli/interactive/run-cancel.d.ts +23 -0
- package/dist/cli/interactive/run-cancel.d.ts.map +1 -0
- package/dist/cli/interactive/run-cancel.js +67 -0
- package/dist/cli/interactive/run-cancel.js.map +1 -0
- package/dist/cli/interactive/select-list-nav.d.ts +10 -0
- package/dist/cli/interactive/select-list-nav.d.ts.map +1 -0
- package/dist/cli/interactive/select-list-nav.js +45 -0
- package/dist/cli/interactive/select-list-nav.js.map +1 -0
- package/dist/cli/interactive/session-controller.d.ts +1 -0
- package/dist/cli/interactive/session-controller.d.ts.map +1 -1
- package/dist/cli/interactive/session-controller.js +5 -1
- package/dist/cli/interactive/session-controller.js.map +1 -1
- package/dist/cli/interactive/session-hints.d.ts +1 -0
- package/dist/cli/interactive/session-hints.d.ts.map +1 -1
- package/dist/cli/interactive/session-hints.js +24 -8
- package/dist/cli/interactive/session-hints.js.map +1 -1
- package/dist/cli/interactive/shell.d.ts.map +1 -1
- package/dist/cli/interactive/shell.js +17 -5
- package/dist/cli/interactive/shell.js.map +1 -1
- package/dist/cli/interactive/slash-dispatch.d.ts +2 -0
- package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -1
- package/dist/cli/interactive/slash-dispatch.js +55 -28
- package/dist/cli/interactive/slash-dispatch.js.map +1 -1
- package/dist/cli/interactive/slash-menu.d.ts.map +1 -1
- package/dist/cli/interactive/slash-menu.js +29 -2
- package/dist/cli/interactive/slash-menu.js.map +1 -1
- package/dist/cli/interactive/slash-registry.js +2 -2
- package/dist/cli/interactive/slash-registry.js.map +1 -1
- package/dist/cli/interactive/smoke-trust-fixture.d.ts +10 -0
- package/dist/cli/interactive/smoke-trust-fixture.d.ts.map +1 -0
- package/dist/cli/interactive/smoke-trust-fixture.js +66 -0
- package/dist/cli/interactive/smoke-trust-fixture.js.map +1 -0
- package/dist/cli/interactive/tools-catalog.d.ts.map +1 -1
- package/dist/cli/interactive/tools-catalog.js +17 -12
- package/dist/cli/interactive/tools-catalog.js.map +1 -1
- package/dist/config/config.d.ts +2 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +8 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/web-ui.d.ts +5 -0
- package/dist/config/web-ui.d.ts.map +1 -0
- package/dist/config/web-ui.js +12 -0
- package/dist/config/web-ui.js.map +1 -0
- package/docs/beta-release-handoff.md +56 -29
- package/docs/internal-beta.md +6 -3
- package/docs/known-limitations.md +32 -19
- package/docs/release-checklist.md +11 -3
- package/opentui/src/App.tsx +636 -213
- 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":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs-client.d.ts","sourceRoot":"","sources":["../../src/backend/runs-client.ts"],"names":[],"mappings":"
|
|
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
|
|
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":"
|
|
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":"AACA,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,oCAAoC,EAAE,MAAM,2CAA2C,CAAA;AAEhG,MAAM,YAAY,GAAG,KAAK,CAAA;AAC1B,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;AAEvC,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAMrC;IACC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAA;QAChG,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,GAAG,GACP,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;QACjB,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACnC,IAAI,CAAA;IACN,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,KAAK,CAAC,OAAO,CAAC,KAAK,CACjB,4FAA4F,CAC7F,CAAA;QACD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAA;IAClC,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAA;IAEpG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IACrD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACtB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAA;IAC5C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAChE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAA;IAClF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEtB,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,cAAc,CAAA;IACvD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC1C,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;IACjD,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAA;IAC5E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAE1B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,eAAe,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC;YAC1C,OAAO,EAAE,GAAG;YACZ,IAAI;YACJ,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAA;QAEF,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAA;YACvC,MAAM,SAAS,GAAG,MAAM,0BAA0B,CAAC;gBACjD,OAAO,EAAE,YAAY;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,KAAK,CAAC,SAAS;aAC3B,CAAC,CAAA;YACF,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;gBAClB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,4BAA4B,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;gBACpE,OAAO,CAAC,CAAA;YACV,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,oCAAoC,CAAC;gBAC3D,GAAG;gBACH,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,GAAG,EAAE,YAAY;gBACjB,SAAS,EAAE,KAAK,CAAC,SAAS;aAC3B,CAAC,CAAA;YAEF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;YAC5D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;YAClD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;YAC5E,OAAO,CAAC,CAAA;QACV,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAA;YAC3E,OAAO,CAAC,CAAA;QACV,CAAC;QAED,MAAM,KAAK,CAAC,YAAY,CAAC,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;IAC1D,OAAO,CAAC,CAAA;AACV,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"
|
|
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
|
|
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
|
-
|
|
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
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,
|
|
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;
|
|
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
|
-
|
|
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
|
|
43
|
+
writer.writeRaw({ type: "error", message });
|
|
36
44
|
}
|
|
37
45
|
else {
|
|
38
|
-
printer.error(
|
|
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
|
-
:
|
|
82
|
-
? (event) =>
|
|
83
|
-
:
|
|
84
|
-
|
|
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":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAC9F,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAA;AAEjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EACL,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,qCAAqC,CAAA;AAG5C,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAkB,EAClB,OAAgB,EAChB,SAAqB;IAErB,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAA;QACxF,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAEhD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAChE,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;IACjE,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACpE,MAAM,KAAK,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;IAE9D,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAC3B,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,2BAA2B,EAAE,CAAA;YAC5C,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC,CAAA;QAC5F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;QAC/D,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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
|
|
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
|
|
64
|
-
|
|
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":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAGzD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;
|
|
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,
|
|
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"}
|