@polpo-ai/cli 0.6.3 → 0.6.5
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/dist/commands/cloud/byok.js +44 -22
- package/dist/commands/cloud/byok.js.map +1 -1
- package/dist/commands/cloud/deploy.js +254 -134
- package/dist/commands/cloud/deploy.js.map +1 -1
- package/dist/commands/cloud/login.js +42 -20
- package/dist/commands/cloud/login.js.map +1 -1
- package/dist/commands/cloud/logout.js +8 -1
- package/dist/commands/cloud/logout.js.map +1 -1
- package/dist/commands/cloud/projects.js +24 -10
- package/dist/commands/cloud/projects.js.map +1 -1
- package/dist/commands/cloud/status.js +9 -8
- package/dist/commands/cloud/status.js.map +1 -1
- package/dist/commands/create.js +76 -15
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/install.js +108 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/link.js +167 -9
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/orgs.js +12 -6
- package/dist/commands/orgs.js.map +1 -1
- package/dist/commands/update.js +28 -61
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/whoami.js +18 -11
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/update-check.js +57 -0
- package/dist/update-check.js.map +1 -1
- package/dist/util/conflicts.js +90 -0
- package/dist/util/conflicts.js.map +1 -0
- package/dist/util/pull.js +286 -0
- package/dist/util/pull.js.map +1 -0
- package/dist/util/self-update.js +71 -0
- package/dist/util/self-update.js.map +1 -0
- package/dist/util/skills.js +4 -1
- package/dist/util/skills.js.map +1 -1
- package/package.json +3 -3
package/dist/commands/update.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { execSync } from "node:child_process";
|
|
2
|
+
import * as clack from "@clack/prompts";
|
|
2
3
|
import pc from "picocolors";
|
|
4
|
+
import { detectPackageManager, getLatestVersion, runSelfUpdate, } from "../util/self-update.js";
|
|
3
5
|
/**
|
|
4
6
|
* Check if running inside an Electron (desktop) app.
|
|
5
7
|
*/
|
|
@@ -11,33 +13,6 @@ function isDesktopApp() {
|
|
|
11
13
|
execPath.includes("polpo-server") ||
|
|
12
14
|
!!process.env.ELECTRON_RUN_AS_NODE);
|
|
13
15
|
}
|
|
14
|
-
/**
|
|
15
|
-
* Detect which package manager installed polpo globally.
|
|
16
|
-
*/
|
|
17
|
-
function detectPackageManager() {
|
|
18
|
-
try {
|
|
19
|
-
const out = execSync("pnpm list -g polpo-ai --depth=0 2>/dev/null", {
|
|
20
|
-
encoding: "utf-8",
|
|
21
|
-
timeout: 10_000,
|
|
22
|
-
});
|
|
23
|
-
if (out.includes("polpo-ai"))
|
|
24
|
-
return "pnpm";
|
|
25
|
-
}
|
|
26
|
-
catch { /* not pnpm */ }
|
|
27
|
-
return "npm";
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Get the latest version from the npm registry.
|
|
31
|
-
*/
|
|
32
|
-
async function getLatestVersion() {
|
|
33
|
-
const res = await fetch("https://registry.npmjs.org/polpo-ai/latest", {
|
|
34
|
-
headers: { Accept: "application/json" },
|
|
35
|
-
});
|
|
36
|
-
if (!res.ok)
|
|
37
|
-
throw new Error(`Registry returned ${res.status}`);
|
|
38
|
-
const data = (await res.json());
|
|
39
|
-
return data.version;
|
|
40
|
-
}
|
|
41
16
|
export function registerUpdateCommand(program) {
|
|
42
17
|
program
|
|
43
18
|
.command("update")
|
|
@@ -45,66 +20,58 @@ export function registerUpdateCommand(program) {
|
|
|
45
20
|
.description("Update Polpo to the latest version")
|
|
46
21
|
.option("--check", "Only check for updates, don't install")
|
|
47
22
|
.action(async (opts) => {
|
|
23
|
+
clack.intro(pc.bold("Polpo — Update"));
|
|
48
24
|
try {
|
|
49
25
|
const currentVersion = program.version();
|
|
50
|
-
|
|
51
|
-
|
|
26
|
+
clack.log.info(`Current version: ${pc.dim(currentVersion)}`);
|
|
27
|
+
const s = clack.spinner();
|
|
28
|
+
s.start("Checking for updates...");
|
|
52
29
|
const latest = await getLatestVersion();
|
|
53
30
|
if (latest === currentVersion) {
|
|
54
|
-
|
|
31
|
+
s.stop("Version check complete");
|
|
32
|
+
clack.outro(pc.green(`Already up to date (${currentVersion})`));
|
|
55
33
|
return;
|
|
56
34
|
}
|
|
57
|
-
|
|
35
|
+
s.stop("Version check complete");
|
|
36
|
+
clack.log.warn(`${pc.yellow("Update available:")} ${pc.dim(currentVersion)} → ${pc.bold(pc.cyan(latest))}`);
|
|
58
37
|
if (opts.check) {
|
|
59
|
-
|
|
38
|
+
clack.outro(pc.dim(`Run ${pc.white("polpo update")} to install.`));
|
|
60
39
|
return;
|
|
61
40
|
}
|
|
62
41
|
const pm = detectPackageManager();
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
catch { /* best effort */ }
|
|
69
|
-
const cmd = pm === "pnpm"
|
|
70
|
-
? `pnpm add -g polpo-ai@${latest}`
|
|
71
|
-
: `npm install -g polpo-ai@${latest}`;
|
|
72
|
-
console.log(pc.dim(`\n Updating via ${pm}...`));
|
|
73
|
-
console.log(pc.dim(` $ ${cmd}\n`));
|
|
74
|
-
try {
|
|
75
|
-
execSync(cmd, { stdio: "inherit", timeout: 120_000 });
|
|
76
|
-
}
|
|
77
|
-
catch (err) {
|
|
78
|
-
// EACCES on a system-managed npm prefix is the typical failure mode.
|
|
79
|
-
// Surface a hint instead of a raw stack.
|
|
80
|
-
const msg = err.message ?? "";
|
|
42
|
+
s.start(`Updating via ${pm}...`);
|
|
43
|
+
const result = runSelfUpdate(latest);
|
|
44
|
+
if (!result.success) {
|
|
45
|
+
s.stop("Update failed");
|
|
46
|
+
const msg = result.error ?? "";
|
|
81
47
|
if (/EACCES|permission denied/i.test(msg)) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
console.error(pc.dim(` sudo ${cmd}`));
|
|
85
|
-
console.error(pc.dim(` npm config set prefix ~/.npm-global (one-time)`));
|
|
48
|
+
clack.log.error("Permission denied while installing.");
|
|
49
|
+
clack.log.info(`Try one of:\n ${pc.dim(`sudo ${result.cmd}`)}\n ${pc.dim("npm config set prefix ~/.npm-global (one-time)")}`);
|
|
86
50
|
}
|
|
87
51
|
else {
|
|
88
|
-
|
|
52
|
+
clack.log.error(`Update failed: ${msg || "unknown error"}`);
|
|
89
53
|
}
|
|
54
|
+
clack.outro(pc.red("Update failed."));
|
|
90
55
|
process.exit(1);
|
|
91
56
|
}
|
|
57
|
+
s.stop("Update installed");
|
|
92
58
|
// Verify
|
|
93
59
|
try {
|
|
94
60
|
const newVer = execSync("polpo --version", { encoding: "utf-8" }).trim();
|
|
95
|
-
|
|
61
|
+
clack.log.success(`Updated to ${pc.bold(newVer)}`);
|
|
96
62
|
}
|
|
97
63
|
catch {
|
|
98
|
-
|
|
64
|
+
clack.log.success("Update complete. Restart your shell to use the new version.");
|
|
99
65
|
}
|
|
100
66
|
if (isDesktopApp()) {
|
|
101
|
-
|
|
102
|
-
console.log(pc.yellow(` Restart the app to apply the update to the desktop binary.`));
|
|
67
|
+
clack.log.warn("You're running inside the Polpo desktop app.\nRestart the app to apply the update to the desktop binary.");
|
|
103
68
|
}
|
|
69
|
+
clack.outro(pc.green("Update complete."));
|
|
104
70
|
}
|
|
105
71
|
catch (err) {
|
|
106
|
-
|
|
107
|
-
|
|
72
|
+
clack.log.error(`Update failed: ${err.message}`);
|
|
73
|
+
clack.log.info(`Try manually: ${pc.bold("npm install -g polpo-ai@latest")}`);
|
|
74
|
+
clack.outro(pc.red("Update failed."));
|
|
108
75
|
process.exit(1);
|
|
109
76
|
}
|
|
110
77
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/whoami.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as clack from "@clack/prompts";
|
|
1
2
|
import pc from "picocolors";
|
|
2
3
|
import { getAuth } from "../util/auth.js";
|
|
3
4
|
import { createApiClient } from "./cloud/api.js";
|
|
@@ -13,11 +14,17 @@ export function registerWhoamiCommand(program) {
|
|
|
13
14
|
console.log(JSON.stringify({ loggedIn: false }));
|
|
14
15
|
}
|
|
15
16
|
else {
|
|
16
|
-
|
|
17
|
+
clack.intro(pc.bold("Polpo — Whoami"));
|
|
18
|
+
clack.outro(pc.red("Not logged in.") + " Run: " + pc.bold("polpo login"));
|
|
17
19
|
}
|
|
18
20
|
process.exit(1);
|
|
19
21
|
}
|
|
22
|
+
if (!opts.json) {
|
|
23
|
+
clack.intro(pc.bold("Polpo — Whoami"));
|
|
24
|
+
}
|
|
20
25
|
const client = createApiClient({ apiKey: creds.apiKey, baseUrl: creds.baseUrl });
|
|
26
|
+
const s = clack.spinner();
|
|
27
|
+
s.start("Fetching account info");
|
|
21
28
|
let user = null;
|
|
22
29
|
let orgs = [];
|
|
23
30
|
let staleAuth = false;
|
|
@@ -37,13 +44,14 @@ export function registerWhoamiCommand(program) {
|
|
|
37
44
|
orgs = Array.isArray(orgsRes.data) ? orgsRes.data : [];
|
|
38
45
|
}
|
|
39
46
|
catch { /* graceful */ }
|
|
47
|
+
s.stop("Account info fetched");
|
|
40
48
|
if (staleAuth) {
|
|
41
49
|
if (opts.json) {
|
|
42
50
|
console.log(JSON.stringify({ loggedIn: false, reason: "stale_token", apiUrl: creds.baseUrl }, null, 2));
|
|
43
51
|
}
|
|
44
52
|
else {
|
|
45
|
-
|
|
46
|
-
|
|
53
|
+
clack.log.error(pc.red("Session expired or invalid."));
|
|
54
|
+
clack.outro(pc.dim("Run ") + pc.bold("polpo login") + pc.dim(" to refresh."));
|
|
47
55
|
}
|
|
48
56
|
process.exit(1);
|
|
49
57
|
}
|
|
@@ -56,24 +64,23 @@ export function registerWhoamiCommand(program) {
|
|
|
56
64
|
}, null, 2));
|
|
57
65
|
return;
|
|
58
66
|
}
|
|
59
|
-
console.log();
|
|
60
67
|
if (user?.email) {
|
|
61
|
-
|
|
68
|
+
clack.log.info(pc.bold("User: ") + user.email + (user.name ? pc.dim(` (${user.name})`) : ""));
|
|
62
69
|
}
|
|
63
|
-
|
|
70
|
+
clack.log.info(pc.bold("API: ") + creds.baseUrl);
|
|
64
71
|
if (orgs.length === 0) {
|
|
65
|
-
|
|
72
|
+
clack.log.info(pc.bold("Orgs: ") + pc.dim("none"));
|
|
66
73
|
}
|
|
67
74
|
else if (orgs.length === 1) {
|
|
68
|
-
|
|
75
|
+
clack.log.info(pc.bold("Org: ") + orgs[0].name + pc.dim(` (${orgs[0].id})`));
|
|
69
76
|
}
|
|
70
77
|
else {
|
|
71
|
-
|
|
78
|
+
clack.log.info(pc.bold(`Orgs: ${orgs.length}`));
|
|
72
79
|
for (const o of orgs) {
|
|
73
|
-
|
|
80
|
+
clack.log.info(pc.dim(` ${o.name} (${o.id})`));
|
|
74
81
|
}
|
|
75
82
|
}
|
|
76
|
-
|
|
83
|
+
clack.outro("Done");
|
|
77
84
|
});
|
|
78
85
|
}
|
|
79
86
|
//# sourceMappingURL=whoami.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAajD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -54,6 +54,7 @@ import { registerStatusCommand as registerCloudStatusCommand } from "./commands/
|
|
|
54
54
|
import { registerLogsCommand as registerCloudLogsCommand } from "./commands/cloud/logs.js";
|
|
55
55
|
import { registerLinkCommand } from "./commands/link.js";
|
|
56
56
|
import { registerCreateCommand } from "./commands/create.js";
|
|
57
|
+
import { registerInstallCommand } from "./commands/install.js";
|
|
57
58
|
import { registerWhoamiCommand } from "./commands/whoami.js";
|
|
58
59
|
import { registerOrgsCommand } from "./commands/orgs.js";
|
|
59
60
|
import { startUpdateCheck } from "./update-check.js";
|
|
@@ -118,6 +119,7 @@ registerCloudStatusCommand(program);
|
|
|
118
119
|
registerCloudLogsCommand(program);
|
|
119
120
|
registerLinkCommand(program);
|
|
120
121
|
registerCreateCommand(program);
|
|
122
|
+
registerInstallCommand(program);
|
|
121
123
|
registerWhoamiCommand(program);
|
|
122
124
|
registerOrgsCommand(program);
|
|
123
125
|
// Non-blocking update check — prints notice at exit if a new version exists
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/update-check.js
CHANGED
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
import { resolve, join } from "node:path";
|
|
11
11
|
import { homedir } from "node:os";
|
|
12
12
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
13
|
+
import * as clack from "@clack/prompts";
|
|
14
|
+
import pc from "picocolors";
|
|
15
|
+
import { runSelfUpdate } from "./util/self-update.js";
|
|
13
16
|
const PACKAGE_NAME = "polpo-ai";
|
|
14
17
|
const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
15
18
|
/** File where we store the last check timestamp + latest version. */
|
|
@@ -93,6 +96,60 @@ export function startUpdateCheck(currentVersion) {
|
|
|
93
96
|
}
|
|
94
97
|
};
|
|
95
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Interactive update prompt intended to run at the **start** of long-lived
|
|
101
|
+
* commands (`install`, `create`). Reuses the cached npm registry probe
|
|
102
|
+
* written by `startUpdateCheck` — zero extra network round-trips.
|
|
103
|
+
*
|
|
104
|
+
* Flow when cached version > current:
|
|
105
|
+
* 1. TTY check + respect POLPO_NO_UPDATE_CHECK / CI → otherwise no-op
|
|
106
|
+
* 2. `clack.confirm` with default = yes (smart default: update)
|
|
107
|
+
* 3. Run the upgrade in-process via the detected package manager
|
|
108
|
+
* 4. On success → instruct the user to re-run their original command
|
|
109
|
+
* (we don't auto re-exec: argv0 can be anything from `node`, `npx`,
|
|
110
|
+
* a symlink, the Electron desktop app, etc. Safer to let the user
|
|
111
|
+
* re-invoke explicitly.)
|
|
112
|
+
*
|
|
113
|
+
* Returns:
|
|
114
|
+
* - `{ updated: true }` → caller should `process.exit(0)` so the user
|
|
115
|
+
* lands back on the shell to re-run with the new binary
|
|
116
|
+
* - `{ updated: false }` → no update needed or declined; keep going
|
|
117
|
+
*/
|
|
118
|
+
export async function promptForUpdateIfAvailable(currentVersion) {
|
|
119
|
+
// Bail fast on non-interactive contexts — we never trap scripts in prompts.
|
|
120
|
+
if (!process.stdin.isTTY ||
|
|
121
|
+
process.env.POLPO_NO_UPDATE_CHECK === "1" ||
|
|
122
|
+
process.env.CI === "true") {
|
|
123
|
+
return { updated: false };
|
|
124
|
+
}
|
|
125
|
+
const state = readState();
|
|
126
|
+
if (!state.latestVersion || !isNewer(currentVersion, state.latestVersion)) {
|
|
127
|
+
return { updated: false };
|
|
128
|
+
}
|
|
129
|
+
const latest = state.latestVersion;
|
|
130
|
+
const answer = await clack.confirm({
|
|
131
|
+
message: `A newer version of Polpo is available: ${currentVersion} → ${latest}. Update now?`,
|
|
132
|
+
initialValue: true,
|
|
133
|
+
});
|
|
134
|
+
if (clack.isCancel(answer) || !answer) {
|
|
135
|
+
clack.log.info(pc.dim(`Skipping update. Run ${pc.bold("polpo update")} later to install ${latest}.`));
|
|
136
|
+
return { updated: false };
|
|
137
|
+
}
|
|
138
|
+
const s = clack.spinner();
|
|
139
|
+
s.start(`Updating Polpo to ${latest}…`);
|
|
140
|
+
const result = runSelfUpdate(latest);
|
|
141
|
+
if (!result.success) {
|
|
142
|
+
s.stop("Update failed.");
|
|
143
|
+
clack.log.warn(`Could not update automatically: ${result.error ?? "unknown error"}.`);
|
|
144
|
+
clack.log.info(pc.dim(`Try manually: ${pc.bold(result.cmd)}`) +
|
|
145
|
+
pc.dim(` (continuing with ${currentVersion}…)`));
|
|
146
|
+
return { updated: false };
|
|
147
|
+
}
|
|
148
|
+
s.stop(`Updated to ${latest}`);
|
|
149
|
+
clack.outro(pc.green("✓ Update installed. ") +
|
|
150
|
+
pc.dim("Re-run your command to use the new version."));
|
|
151
|
+
return { updated: true };
|
|
152
|
+
}
|
|
96
153
|
function printNotice(current, latest) {
|
|
97
154
|
// Plain ANSI escapes — no color lib needed for a single-line notice
|
|
98
155
|
const yellow = "\x1b[33m";
|
package/dist/update-check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conflict resolution for pull/deploy sync operations.
|
|
3
|
+
*
|
|
4
|
+
* Compares local and remote content, prompts the user when they differ
|
|
5
|
+
* (interactive mode), or auto-overrides (force mode). Smart default: YES
|
|
6
|
+
* — the user explicitly ran pull or deploy, so they expect changes.
|
|
7
|
+
*
|
|
8
|
+
* Three variants:
|
|
9
|
+
* - resolveFileConflict: new string vs existing local file
|
|
10
|
+
* - resolveJsonConflict: new object vs existing local JSON file
|
|
11
|
+
* - resolveDataConflict: local data vs remote data (in-memory, no filesystem)
|
|
12
|
+
*/
|
|
13
|
+
import * as fs from "node:fs";
|
|
14
|
+
import * as clack from "@clack/prompts";
|
|
15
|
+
// ── Pull direction: new content → local file ─────────────────
|
|
16
|
+
/**
|
|
17
|
+
* Compare new content against an existing file.
|
|
18
|
+
*
|
|
19
|
+
* - File doesn't exist → "write"
|
|
20
|
+
* - Content identical → "skip"
|
|
21
|
+
* - Content differs + force → "write"
|
|
22
|
+
* - Content differs + interactive → prompt (default YES)
|
|
23
|
+
* - Content differs + non-interactive → "skip"
|
|
24
|
+
*/
|
|
25
|
+
export async function resolveFileConflict(filePath, newContent, label, opts) {
|
|
26
|
+
if (!fs.existsSync(filePath))
|
|
27
|
+
return "write";
|
|
28
|
+
const existing = fs.readFileSync(filePath, "utf-8");
|
|
29
|
+
if (existing === newContent)
|
|
30
|
+
return "skip";
|
|
31
|
+
return resolveConflictPrompt(`${label} differs from local version. Override local?`, opts);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Same as resolveFileConflict but normalizes JSON formatting before
|
|
35
|
+
* comparing to avoid false conflicts from whitespace differences.
|
|
36
|
+
*/
|
|
37
|
+
export async function resolveJsonConflict(filePath, newData, label, opts) {
|
|
38
|
+
if (!fs.existsSync(filePath))
|
|
39
|
+
return "write";
|
|
40
|
+
try {
|
|
41
|
+
const existingRaw = fs.readFileSync(filePath, "utf-8");
|
|
42
|
+
const existingData = JSON.parse(existingRaw);
|
|
43
|
+
if (JSON.stringify(existingData) === JSON.stringify(newData))
|
|
44
|
+
return "skip";
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Can't parse existing file — treat as conflict
|
|
48
|
+
}
|
|
49
|
+
return resolveConflictPrompt(`${label} differs from local version. Override local?`, opts);
|
|
50
|
+
}
|
|
51
|
+
// ── Deploy direction: local data → remote data ───────────────
|
|
52
|
+
/**
|
|
53
|
+
* Compare local data against remote data (both in-memory). Used by deploy
|
|
54
|
+
* to detect when a cloud resource differs from the local version.
|
|
55
|
+
*
|
|
56
|
+
* - Remote is null/undefined → "write" (doesn't exist yet, create)
|
|
57
|
+
* - Data identical → "skip" (no change needed)
|
|
58
|
+
* - Data differs → same force/interactive/skip logic
|
|
59
|
+
*/
|
|
60
|
+
export async function resolveDeployConflict(localData, remoteData, label, opts) {
|
|
61
|
+
if (remoteData == null)
|
|
62
|
+
return "write";
|
|
63
|
+
if (JSON.stringify(normalize(localData)) === JSON.stringify(normalize(remoteData))) {
|
|
64
|
+
return "skip";
|
|
65
|
+
}
|
|
66
|
+
return resolveConflictPrompt(`${label} differs from cloud version. Push local?`, opts);
|
|
67
|
+
}
|
|
68
|
+
// ── Shared prompt logic ──────────────────────────────────────
|
|
69
|
+
async function resolveConflictPrompt(message, opts) {
|
|
70
|
+
if (opts.force)
|
|
71
|
+
return "write";
|
|
72
|
+
if (opts.interactive) {
|
|
73
|
+
const answer = await clack.confirm({
|
|
74
|
+
message,
|
|
75
|
+
initialValue: true,
|
|
76
|
+
});
|
|
77
|
+
if (clack.isCancel(answer) || !answer)
|
|
78
|
+
return "skip";
|
|
79
|
+
return "write";
|
|
80
|
+
}
|
|
81
|
+
return "skip";
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Normalize an object for comparison — strip undefined values and
|
|
85
|
+
* sort keys so field ordering doesn't cause false conflicts.
|
|
86
|
+
*/
|
|
87
|
+
function normalize(data) {
|
|
88
|
+
return JSON.parse(JSON.stringify(data));
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=conflicts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflicts.js","sourceRoot":"","sources":["../../src/util/conflicts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AAWxC,gEAAgE;AAEhE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,UAAkB,EAClB,KAAa,EACb,IAAqB;IAErB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IAE7C,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,QAAQ,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IAE3C,OAAO,qBAAqB,CAAC,GAAG,KAAK,8CAA8C,EAAE,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,OAAgB,EAChB,KAAa,EACb,IAAqB;IAErB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,OAAO,MAAM,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;IAClD,CAAC;IAED,OAAO,qBAAqB,CAAC,GAAG,KAAK,8CAA8C,EAAE,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED,gEAAgE;AAEhE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,SAAkB,EAClB,UAAsC,EACtC,KAAa,EACb,IAAqB;IAErB,IAAI,UAAU,IAAI,IAAI;QAAE,OAAO,OAAO,CAAC;IAEvC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACnF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,qBAAqB,CAAC,GAAG,KAAK,0CAA0C,EAAE,IAAI,CAAC,CAAC;AACzF,CAAC;AAED,gEAAgE;AAEhE,KAAK,UAAU,qBAAqB,CAClC,OAAe,EACf,IAAqB;IAErB,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAE/B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;YACjC,OAAO;YACP,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,MAAM,CAAC;QACrD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,IAAa;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC"}
|