@itznexus/itznexus-cli 1.60.0 → 1.62.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/dist/commands/agents/upwork-demo-init.js +62 -2
- package/dist/commands/agents/upwork-demo-init.js.map +1 -1
- package/dist/commands/agents/upwork-demo-rebrand.d.ts +7 -0
- package/dist/commands/agents/upwork-demo-rebrand.js +159 -0
- package/dist/commands/agents/upwork-demo-rebrand.js.map +1 -0
- package/dist/commands/agents/workspace.js +77 -28
- package/dist/commands/agents/workspace.js.map +1 -1
- package/dist/commands/api/showroom.js +31 -2
- package/dist/commands/api/showroom.js.map +1 -1
- package/dist/commands/api/upwork-demos.js +20 -0
- package/dist/commands/api/upwork-demos.js.map +1 -1
- package/dist/lib/project-context.d.ts +2 -1
- package/dist/lib/project-context.js +2 -2
- package/dist/lib/project-context.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { spawnSync } from "node:child_process";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
2
5
|
import { Command } from "commander";
|
|
3
6
|
import chalk from "chalk";
|
|
4
7
|
import { api, ApiError } from "../../lib/api.js";
|
|
5
8
|
import { handleError } from "../../lib/format.js";
|
|
9
|
+
import { assertNoSampleLeft, rebrandTree } from "./upwork-demo-rebrand.js";
|
|
6
10
|
// Scaffolds the GitHub side of an upwork demo: creates the 3 per-demo repos
|
|
7
|
-
// from the itzsample-todo templates,
|
|
8
|
-
//
|
|
11
|
+
// from the itzsample-todo templates, purges the sample identity (slug and
|
|
12
|
+
// project name replace every itzsample mention), pushes the rebrand (that
|
|
13
|
+
// push is the first deploy), then registers and attaches them in Nexus.
|
|
9
14
|
// Idempotent: existing repos are kept and only reconfigured.
|
|
10
15
|
const SIDES = ["backend", "frontend", "e2e"];
|
|
11
16
|
// The sample templates live in the main org; per-demo repos land in the
|
|
@@ -42,6 +47,46 @@ async function triggerDeploy(repo) {
|
|
|
42
47
|
}
|
|
43
48
|
return false;
|
|
44
49
|
}
|
|
50
|
+
function git(dir, args, context) {
|
|
51
|
+
const res = spawnSync("git", ["-C", dir, ...args], { encoding: "utf-8" });
|
|
52
|
+
if (res.status !== 0) {
|
|
53
|
+
throw new Error(`${context}: ${res.stderr?.trim() || "git failed"}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Clones the fresh repo, purges the sample identity and pushes the result.
|
|
57
|
+
// Returns true when a rebrand commit was pushed: that push fires the deploy
|
|
58
|
+
// workflow, so the caller skips the manual dispatch.
|
|
59
|
+
async function rebrandRepo(repo, slug, name) {
|
|
60
|
+
const tmp = fs.mkdtempSync(path.join(os.tmpdir(), "itznexus-demo-"));
|
|
61
|
+
const dir = path.join(tmp, "repo");
|
|
62
|
+
try {
|
|
63
|
+
// Template generation is asynchronous: the repo can clone empty for a
|
|
64
|
+
// few seconds after creation, so retry until content shows up.
|
|
65
|
+
for (let attempt = 0;; attempt++) {
|
|
66
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
67
|
+
const res = gh(["repo", "clone", repo, dir, "--", "--depth", "1"]);
|
|
68
|
+
if (res.status === 0 &&
|
|
69
|
+
fs.readdirSync(dir).some((entry) => entry !== ".git")) {
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
if (attempt >= 9) {
|
|
73
|
+
throw new Error(`clone ${repo}: template generation never landed`);
|
|
74
|
+
}
|
|
75
|
+
await sleep(3000);
|
|
76
|
+
}
|
|
77
|
+
const changed = rebrandTree(dir, slug, name);
|
|
78
|
+
assertNoSampleLeft(dir);
|
|
79
|
+
if (changed.length === 0)
|
|
80
|
+
return false;
|
|
81
|
+
git(dir, ["add", "."], `stage rebrand in ${repo}`);
|
|
82
|
+
git(dir, ["commit", "-m", `chore: rebrand sample to ${slug}`], `commit rebrand in ${repo}`);
|
|
83
|
+
git(dir, ["push"], `push rebrand to ${repo}`);
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
fs.rmSync(tmp, { recursive: true, force: true });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
45
90
|
export const upworkDemoInitCommand = new Command("init")
|
|
46
91
|
.description("Scaffold a demo's GitHub repos: create <slug>-backend/-frontend/-e2e from the itzsample-todo templates in the demos org, set deploy secrets and DEV_VPS_PATH from the upwork_demos.platform setting, dispatch the first deploy, then sync and attach them to the project. Idempotent; requires an authenticated gh CLI.")
|
|
47
92
|
.argument("<ref>", "Demo ID or project slug")
|
|
@@ -50,6 +95,7 @@ export const upworkDemoInitCommand = new Command("init")
|
|
|
50
95
|
.action(async (ref, opts) => {
|
|
51
96
|
try {
|
|
52
97
|
const demo = await api.get(`/upwork-demos/${encodeURIComponent(ref)}`);
|
|
98
|
+
const project = await api.get(`/projects/${demo.projectId}`);
|
|
53
99
|
const setting = await api.get(`/settings/${encodeURIComponent("upwork_demos.platform")}`);
|
|
54
100
|
const platform = setting.value;
|
|
55
101
|
if (!platform?.githubOrg ||
|
|
@@ -115,10 +161,23 @@ export const upworkDemoInitCommand = new Command("init")
|
|
|
115
161
|
], `set DEV_VPS_PATH on ${repo}`);
|
|
116
162
|
log(`${chalk.green("✓")} ${repo} secrets and variables set`);
|
|
117
163
|
}
|
|
164
|
+
const rebranded = [];
|
|
165
|
+
for (const repo of created) {
|
|
166
|
+
if (await rebrandRepo(repo, demo.slug, project.name)) {
|
|
167
|
+
rebranded.push(repo);
|
|
168
|
+
log(`${chalk.green("✓")} ${repo} rebranded to ${demo.slug} / ${project.name}`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
118
171
|
const deployed = [];
|
|
119
172
|
const deployFailed = [];
|
|
120
173
|
if (opts.deploy) {
|
|
121
174
|
for (const repo of created) {
|
|
175
|
+
// The rebrand push already fired the push-triggered deploy.
|
|
176
|
+
if (rebranded.includes(repo)) {
|
|
177
|
+
deployed.push(repo);
|
|
178
|
+
log(`${chalk.green("✓")} ${repo} deploy rides the rebrand push`);
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
122
181
|
if (await triggerDeploy(repo)) {
|
|
123
182
|
deployed.push(repo);
|
|
124
183
|
log(`${chalk.green("✓")} ${repo} deploy dispatched`);
|
|
@@ -161,6 +220,7 @@ export const upworkDemoInitCommand = new Command("init")
|
|
|
161
220
|
projectId: demo.projectId,
|
|
162
221
|
created,
|
|
163
222
|
existing,
|
|
223
|
+
rebranded,
|
|
164
224
|
deployed,
|
|
165
225
|
deployFailed,
|
|
166
226
|
attached,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upwork-demo-init.js","sourceRoot":"","sources":["../../../src/commands/agents/upwork-demo-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"upwork-demo-init.js","sourceRoot":"","sources":["../../../src/commands/agents/upwork-demo-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
export declare function sampleReplacements(slug: string, name: string): [string, string][];
|
|
3
|
+
/** Rewrites contents and renames paths; returns repo-relative changed paths. */
|
|
4
|
+
export declare function rebrandTree(root: string, slug: string, name: string): string[];
|
|
5
|
+
/** Throws when any sample mention survives, listing the offenders. */
|
|
6
|
+
export declare function assertNoSampleLeft(root: string): void;
|
|
7
|
+
export declare const upworkDemoRebrandCommand: Command;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { Command } from "commander";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import { api } from "../../lib/api.js";
|
|
6
|
+
import { handleError } from "../../lib/format.js";
|
|
7
|
+
// Purges the itzsample-todo identity from demo repos: ordered, most-specific
|
|
8
|
+
// -first literal replacements derived from the demo slug and the project
|
|
9
|
+
// name, applied to file contents and file names. A case-insensitive verify
|
|
10
|
+
// pass afterwards refuses to leave any sample mention behind, so template
|
|
11
|
+
// drift (a new casing, a new carrier file) fails loudly at scaffold time
|
|
12
|
+
// instead of leaking into a built demo.
|
|
13
|
+
const SIDES = ["backend", "frontend", "e2e"];
|
|
14
|
+
const SKIP_DIRS = new Set([
|
|
15
|
+
".git",
|
|
16
|
+
"node_modules",
|
|
17
|
+
"dist",
|
|
18
|
+
"test-results",
|
|
19
|
+
"playwright-report",
|
|
20
|
+
]);
|
|
21
|
+
const SAMPLE_RE = /itzsample/i;
|
|
22
|
+
export function sampleReplacements(slug, name) {
|
|
23
|
+
const snake = slug.replaceAll("-", "_");
|
|
24
|
+
return [
|
|
25
|
+
["ITzSample TODO", name],
|
|
26
|
+
["itzsample-todo", slug],
|
|
27
|
+
// Postgres identifiers (user, password, db) must stay snake_case.
|
|
28
|
+
["itzsample_", `${snake}_`],
|
|
29
|
+
// Env-var style (e.g. ITZSAMPLE_E2E_TARGET).
|
|
30
|
+
["ITZSAMPLE", snake.toUpperCase()],
|
|
31
|
+
["ITzSample", name],
|
|
32
|
+
["itzsample", slug],
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
function applyReplacements(text, rules) {
|
|
36
|
+
let out = text;
|
|
37
|
+
for (const [from, to] of rules)
|
|
38
|
+
out = out.split(from).join(to);
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
function isBinary(filePath) {
|
|
42
|
+
const fd = fs.openSync(filePath, "r");
|
|
43
|
+
try {
|
|
44
|
+
const buf = Buffer.alloc(8192);
|
|
45
|
+
const read = fs.readSync(fd, buf, 0, buf.length, 0);
|
|
46
|
+
return buf.subarray(0, read).includes(0);
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
fs.closeSync(fd);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function walk(dir) {
|
|
53
|
+
const files = [];
|
|
54
|
+
const dirs = [];
|
|
55
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
56
|
+
const full = path.join(dir, entry.name);
|
|
57
|
+
if (entry.isDirectory()) {
|
|
58
|
+
if (SKIP_DIRS.has(entry.name))
|
|
59
|
+
continue;
|
|
60
|
+
const nested = walk(full);
|
|
61
|
+
files.push(...nested.files);
|
|
62
|
+
dirs.push(...nested.dirs, full);
|
|
63
|
+
}
|
|
64
|
+
else if (entry.isFile()) {
|
|
65
|
+
files.push(full);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return { files, dirs };
|
|
69
|
+
}
|
|
70
|
+
/** Rewrites contents and renames paths; returns repo-relative changed paths. */
|
|
71
|
+
export function rebrandTree(root, slug, name) {
|
|
72
|
+
const rules = sampleReplacements(slug, name);
|
|
73
|
+
const changed = [];
|
|
74
|
+
const { files, dirs } = walk(root);
|
|
75
|
+
for (const file of files) {
|
|
76
|
+
if (isBinary(file))
|
|
77
|
+
continue;
|
|
78
|
+
const text = fs.readFileSync(file, "utf-8");
|
|
79
|
+
const next = applyReplacements(text, rules);
|
|
80
|
+
if (next !== text) {
|
|
81
|
+
fs.writeFileSync(file, next);
|
|
82
|
+
changed.push(path.relative(root, file));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Deepest first so parent renames do not invalidate child paths.
|
|
86
|
+
for (const entry of [...files, ...dirs].sort((a, b) => b.length - a.length)) {
|
|
87
|
+
const base = path.basename(entry);
|
|
88
|
+
const renamed = applyReplacements(base, rules);
|
|
89
|
+
if (renamed !== base) {
|
|
90
|
+
fs.renameSync(entry, path.join(path.dirname(entry), renamed));
|
|
91
|
+
changed.push(path.relative(root, entry));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return changed;
|
|
95
|
+
}
|
|
96
|
+
/** Throws when any sample mention survives, listing the offenders. */
|
|
97
|
+
export function assertNoSampleLeft(root) {
|
|
98
|
+
const offenders = [];
|
|
99
|
+
const { files, dirs } = walk(root);
|
|
100
|
+
for (const entry of [...files, ...dirs]) {
|
|
101
|
+
if (SAMPLE_RE.test(path.basename(entry))) {
|
|
102
|
+
offenders.push(path.relative(root, entry));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
for (const file of files) {
|
|
106
|
+
if (isBinary(file))
|
|
107
|
+
continue;
|
|
108
|
+
if (SAMPLE_RE.test(fs.readFileSync(file, "utf-8"))) {
|
|
109
|
+
offenders.push(path.relative(root, file));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (offenders.length > 0) {
|
|
113
|
+
throw new Error(`sample mentions survived the rebrand (template drift?): ${[...new Set(offenders)].join(", ")}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
export const upworkDemoRebrandCommand = new Command("rebrand")
|
|
117
|
+
.description("Purge every itzsample mention from the demo's local repo clones, replacing it with the demo slug and the project name (contents and file names), then verify none survive. For repos scaffolded before init did this automatically; init handles new repos itself. Does not commit: review and commit per repo.")
|
|
118
|
+
.argument("<ref>", "Demo ID or project slug")
|
|
119
|
+
.option("--dir <path>", "Project folder holding the repo clones (default: cwd)")
|
|
120
|
+
.option("--json", "Output as JSON")
|
|
121
|
+
.action(async (ref, opts) => {
|
|
122
|
+
try {
|
|
123
|
+
const dir = path.resolve(opts.dir ?? process.cwd());
|
|
124
|
+
const demo = await api.get(`/upwork-demos/${encodeURIComponent(ref)}`);
|
|
125
|
+
const project = await api.get(`/projects/${demo.projectId}`);
|
|
126
|
+
const results = [];
|
|
127
|
+
const skipped = [];
|
|
128
|
+
for (const side of SIDES) {
|
|
129
|
+
const repoName = `${demo.slug}-${side}`;
|
|
130
|
+
const repoDir = path.join(dir, repoName);
|
|
131
|
+
if (!fs.existsSync(repoDir)) {
|
|
132
|
+
skipped.push(repoName);
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const changed = rebrandTree(repoDir, demo.slug, project.name);
|
|
136
|
+
assertNoSampleLeft(repoDir);
|
|
137
|
+
results.push({ repo: repoName, changed });
|
|
138
|
+
}
|
|
139
|
+
if (opts.json) {
|
|
140
|
+
console.log(JSON.stringify({ slug: demo.slug, name: project.name, results, skipped }, null, 2));
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
for (const r of results) {
|
|
144
|
+
console.log(chalk.green("✓"), `${r.repo}: ${r.changed.length} paths rebranded, none survive`);
|
|
145
|
+
}
|
|
146
|
+
for (const repo of skipped) {
|
|
147
|
+
console.log(chalk.yellow("!"), `${repo}: not cloned here`);
|
|
148
|
+
}
|
|
149
|
+
if (results.length === 0) {
|
|
150
|
+
console.error(chalk.red("✗"), "No repo clones found");
|
|
151
|
+
process.exit(1);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
handleError(err);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
//# sourceMappingURL=upwork-demo-rebrand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upwork-demo-rebrand.js","sourceRoot":"","sources":["../../../src/commands/agents/upwork-demo-rebrand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
import {
|
|
4
|
+
import { spawn } from "node:child_process";
|
|
5
5
|
import { Command } from "commander";
|
|
6
6
|
import chalk from "chalk";
|
|
7
7
|
import { api } from "../../lib/api.js";
|
|
@@ -26,8 +26,28 @@ const TERMINAL_STATUSES = new Set(["completed", "cancelled", "dropped"]);
|
|
|
26
26
|
function expandHome(p) {
|
|
27
27
|
return p.startsWith("~/") ? path.join(os.homedir(), p.slice(2)) : p;
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
// Pulls and clones are network round-trips (~1-2s each even when up to date),
|
|
30
|
+
// so projects and repos sync concurrently; the cap keeps the parallel fan-out
|
|
31
|
+
// from stampeding GitHub over SSH.
|
|
32
|
+
const GIT_CONCURRENCY = 8;
|
|
33
|
+
let gitRunning = 0;
|
|
34
|
+
const gitWaiters = [];
|
|
35
|
+
async function git(args, cwd) {
|
|
36
|
+
if (gitRunning >= GIT_CONCURRENCY) {
|
|
37
|
+
await new Promise((resolve) => gitWaiters.push(resolve));
|
|
38
|
+
}
|
|
39
|
+
gitRunning++;
|
|
40
|
+
try {
|
|
41
|
+
return await new Promise((resolve) => {
|
|
42
|
+
const child = spawn("git", args, { cwd, stdio: "ignore" });
|
|
43
|
+
child.on("error", () => resolve(false));
|
|
44
|
+
child.on("close", (code) => resolve(code === 0));
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
gitRunning--;
|
|
49
|
+
gitWaiters.shift()?.();
|
|
50
|
+
}
|
|
31
51
|
}
|
|
32
52
|
function isGitRepo(dir) {
|
|
33
53
|
return fs.existsSync(path.join(dir, ".git"));
|
|
@@ -35,10 +55,10 @@ function isGitRepo(dir) {
|
|
|
35
55
|
// Clones the tooling repo into dir, pulls it when already a clone, and adopts
|
|
36
56
|
// an existing plain folder in place (init + fetch + checkout): the root
|
|
37
57
|
// predates being a repo on machines that synced before it existed.
|
|
38
|
-
function ensureWorkspaceRepo(dir, repo, https) {
|
|
58
|
+
async function ensureWorkspaceRepo(dir, repo, https) {
|
|
39
59
|
const label = path.basename(dir);
|
|
40
60
|
if (isGitRepo(dir)) {
|
|
41
|
-
return git(["pull", "--ff-only"], dir)
|
|
61
|
+
return (await git(["pull", "--ff-only"], dir))
|
|
42
62
|
? null
|
|
43
63
|
: `${label}: pull failed (dirty or diverged), left as is`;
|
|
44
64
|
}
|
|
@@ -46,18 +66,18 @@ function ensureWorkspaceRepo(dir, repo, https) {
|
|
|
46
66
|
? `https://github.com/${repo}.git`
|
|
47
67
|
: `git@github.com:${repo}.git`;
|
|
48
68
|
if (!fs.existsSync(dir)) {
|
|
49
|
-
if (git(["clone", url, dir], path.dirname(dir)))
|
|
69
|
+
if (await git(["clone", url, dir], path.dirname(dir)))
|
|
50
70
|
return null;
|
|
51
71
|
fs.mkdirSync(dir, { recursive: true });
|
|
52
72
|
return `${label}: clone of ${repo} failed, created a plain folder`;
|
|
53
73
|
}
|
|
54
74
|
// reset --hard (not checkout) so stale local copies of the repo's few
|
|
55
75
|
// tooling files converge to the repo version instead of blocking adoption.
|
|
56
|
-
const adopted = git(["init", "-b", "main"], dir) &&
|
|
57
|
-
git(["remote", "add", "origin", url], dir) &&
|
|
58
|
-
git(["fetch", "origin"], dir) &&
|
|
59
|
-
git(["reset", "--hard", "origin/main"], dir) &&
|
|
60
|
-
git(["branch", "-u", "origin/main", "main"], dir);
|
|
76
|
+
const adopted = (await git(["init", "-b", "main"], dir)) &&
|
|
77
|
+
(await git(["remote", "add", "origin", url], dir)) &&
|
|
78
|
+
(await git(["fetch", "origin"], dir)) &&
|
|
79
|
+
(await git(["reset", "--hard", "origin/main"], dir)) &&
|
|
80
|
+
(await git(["branch", "-u", "origin/main", "main"], dir));
|
|
61
81
|
if (!adopted) {
|
|
62
82
|
fs.rmSync(path.join(dir, ".git"), { recursive: true, force: true });
|
|
63
83
|
return `${label}: could not adopt existing folder as a ${repo} clone, left as is`;
|
|
@@ -102,14 +122,19 @@ async function syncProjectFolder(project, base, opts) {
|
|
|
102
122
|
dir,
|
|
103
123
|
cloned: [],
|
|
104
124
|
pulled: [],
|
|
125
|
+
fresh: [],
|
|
105
126
|
failed: [],
|
|
106
127
|
conflicts: [],
|
|
107
128
|
filesWritten: 0,
|
|
108
129
|
removed: [],
|
|
109
130
|
lifted: false,
|
|
110
131
|
};
|
|
111
|
-
|
|
112
|
-
|
|
132
|
+
// The rendered endpoint resolves slugs like every /projects/:ref route, so
|
|
133
|
+
// both fetches go out together instead of waiting on the id.
|
|
134
|
+
const [detail, files] = await Promise.all([
|
|
135
|
+
fetchProjectByRef(slug),
|
|
136
|
+
fetchRenderedInstructions(slug),
|
|
137
|
+
]);
|
|
113
138
|
const repos = detail.repositories.filter((r) => !r.archived && !WORKSPACE_REPOS.has(r.fullName));
|
|
114
139
|
const collapsed = canCollapse(slug, repos, files);
|
|
115
140
|
// Collapsed, the clone is the project folder, so <repo>/CLAUDE.local.md
|
|
@@ -125,10 +150,20 @@ async function syncProjectFolder(project, base, opts) {
|
|
|
125
150
|
if (result.conflicts.length > 0)
|
|
126
151
|
return result;
|
|
127
152
|
}
|
|
128
|
-
|
|
153
|
+
await Promise.all(repos.map(async (repo) => {
|
|
129
154
|
const repoDir = collapsed ? dir : path.join(dir, repo.name);
|
|
130
155
|
if (isGitRepo(repoDir)) {
|
|
131
|
-
|
|
156
|
+
// Nexus mirrors every active repo's default-branch commits (10-minute
|
|
157
|
+
// cron), so when the newest known sha is already an ancestor of local
|
|
158
|
+
// HEAD there is nothing to pull and the GitHub round-trip is skipped.
|
|
159
|
+
// Any doubt (no sha, stale mirror, unknown sha, force-push) falls
|
|
160
|
+
// through to a real pull.
|
|
161
|
+
if (!opts.pull &&
|
|
162
|
+
repo.lastCommitSha &&
|
|
163
|
+
(await git(["merge-base", "--is-ancestor", repo.lastCommitSha, "HEAD"], repoDir))) {
|
|
164
|
+
result.fresh.push(repo.name);
|
|
165
|
+
}
|
|
166
|
+
else if (await git(["pull", "--ff-only"], repoDir))
|
|
132
167
|
result.pulled.push(repo.name);
|
|
133
168
|
else
|
|
134
169
|
result.failed.push(`${repo.name} (pull)`);
|
|
@@ -143,12 +178,12 @@ async function syncProjectFolder(project, base, opts) {
|
|
|
143
178
|
// Cloning is always "into <name> from the parent", which lands on dir
|
|
144
179
|
// itself when collapsed since the repo name is the slug.
|
|
145
180
|
const cloneCwd = collapsed ? base : dir;
|
|
146
|
-
if (git(["clone", url, repo.name], cloneCwd))
|
|
181
|
+
if (await git(["clone", url, repo.name], cloneCwd))
|
|
147
182
|
result.cloned.push(repo.name);
|
|
148
183
|
else
|
|
149
184
|
result.failed.push(`${repo.name} (clone)`);
|
|
150
185
|
}
|
|
151
|
-
}
|
|
186
|
+
}));
|
|
152
187
|
const fileResults = syncInstructionFiles(instructionRoot, files);
|
|
153
188
|
result.filesWritten = fileResults.filter((r) => r.status === "written").length;
|
|
154
189
|
for (const r of fileResults) {
|
|
@@ -159,12 +194,13 @@ async function syncProjectFolder(project, base, opts) {
|
|
|
159
194
|
return result;
|
|
160
195
|
}
|
|
161
196
|
const syncCommand = new Command("sync")
|
|
162
|
-
.description("Sync the full workspace from Nexus: converge the root itzworkspace repo (workspace skills + context), then for every project with a slug clone missing repos, fast-forward existing ones, and materialize instruction files. Default projects land in <root>/<slug>, upwork demos in <root>/upwork-workspace/<slug> (the upwork-workspace repo is cloned or pulled first). A project with a single repo named after its slug and no root-level instruction file skips the parent folder: the clone is the project folder. The itzworkspace and upwork-workspace repos are never cloned into a project folder: they are the workspace root and the upwork folder. Terminal projects are skipped unless --all.")
|
|
197
|
+
.description("Sync the full workspace from Nexus: converge the root itzworkspace repo (workspace skills + context), then for every project with a slug clone missing repos, fast-forward existing ones, and materialize instruction files. Repos whose newest Nexus-mirrored commit is already local are reported fresh and not pulled (--pull forces real pulls). Default projects land in <root>/<slug>, upwork demos in <root>/upwork-workspace/<slug> (the upwork-workspace repo is cloned or pulled first). A project with a single repo named after its slug and no root-level instruction file skips the parent folder: the clone is the project folder. The itzworkspace and upwork-workspace repos are never cloned into a project folder: they are the workspace root and the upwork folder. Terminal projects are skipped unless --all.")
|
|
163
198
|
.option("--root <dir>", "Workspace root folder", DEFAULT_ROOT)
|
|
164
199
|
.option("--project <slug>", "Only sync this project slug")
|
|
165
200
|
.option("--https", "Clone over HTTPS instead of SSH")
|
|
166
201
|
.option("--all", "Include terminal projects (completed, cancelled, won, dropped)")
|
|
167
202
|
.option("--force", "Overwrite instruction files that exist but are not Nexus-managed")
|
|
203
|
+
.option("--pull", "Pull every repo even when Nexus reports no new commits (bypass the freshness check)")
|
|
168
204
|
.option("--json", "Output as JSON")
|
|
169
205
|
.action(async (opts) => {
|
|
170
206
|
try {
|
|
@@ -176,10 +212,12 @@ const syncCommand = new Command("sync")
|
|
|
176
212
|
if (!opts.json)
|
|
177
213
|
console.error(chalk.yellow("!"), message);
|
|
178
214
|
};
|
|
179
|
-
const rootWarning =
|
|
215
|
+
const [rootWarning, projects] = await Promise.all([
|
|
216
|
+
ensureWorkspaceRepo(root, ROOT_REPO, !!opts.https),
|
|
217
|
+
api.get("/projects"),
|
|
218
|
+
]);
|
|
180
219
|
if (rootWarning)
|
|
181
220
|
warn(rootWarning);
|
|
182
|
-
const projects = await api.get("/projects");
|
|
183
221
|
const targets = projects.filter((p) => p.slug &&
|
|
184
222
|
(opts.project
|
|
185
223
|
? p.slug === opts.project
|
|
@@ -188,16 +226,26 @@ const syncCommand = new Command("sync")
|
|
|
188
226
|
throw new Error(`No project with slug "${opts.project}"`);
|
|
189
227
|
}
|
|
190
228
|
if (targets.some((p) => p.pipeline === "upwork")) {
|
|
191
|
-
const warning = ensureWorkspaceRepo(path.join(root, UPWORK_DIR), UPWORK_REPO, !!opts.https);
|
|
229
|
+
const warning = await ensureWorkspaceRepo(path.join(root, UPWORK_DIR), UPWORK_REPO, !!opts.https);
|
|
192
230
|
if (warning)
|
|
193
231
|
warn(warning);
|
|
194
232
|
}
|
|
233
|
+
// All projects sync concurrently (the git cap throttles the fan-out);
|
|
234
|
+
// errors are captured eagerly so no promise rejects unhandled while
|
|
235
|
+
// the print loop below reports them in stable project order.
|
|
236
|
+
const running = targets.map((project) => {
|
|
237
|
+
const base = project.pipeline === "upwork" ? path.join(root, UPWORK_DIR) : root;
|
|
238
|
+
return syncProjectFolder(project, base, opts).then((result) => ({ result }), (err) => ({
|
|
239
|
+
error: err instanceof Error ? err.message : String(err),
|
|
240
|
+
}));
|
|
241
|
+
});
|
|
195
242
|
const results = [];
|
|
196
243
|
const errored = [];
|
|
197
|
-
for (
|
|
198
|
-
const
|
|
199
|
-
|
|
200
|
-
|
|
244
|
+
for (let i = 0; i < targets.length; i++) {
|
|
245
|
+
const project = targets[i];
|
|
246
|
+
const outcome = await running[i];
|
|
247
|
+
if ("result" in outcome) {
|
|
248
|
+
const result = outcome.result;
|
|
201
249
|
results.push(result);
|
|
202
250
|
if (!opts.json) {
|
|
203
251
|
const label = result.key ?? result.slug;
|
|
@@ -208,6 +256,7 @@ const syncCommand = new Command("sync")
|
|
|
208
256
|
const parts = [
|
|
209
257
|
`${result.cloned.length} cloned`,
|
|
210
258
|
`${result.pulled.length} pulled`,
|
|
259
|
+
`${result.fresh.length} fresh`,
|
|
211
260
|
`${result.filesWritten} files`,
|
|
212
261
|
];
|
|
213
262
|
if (result.removed.length > 0)
|
|
@@ -226,13 +275,13 @@ const syncCommand = new Command("sync")
|
|
|
226
275
|
}
|
|
227
276
|
}
|
|
228
277
|
}
|
|
229
|
-
|
|
278
|
+
else {
|
|
230
279
|
errored.push({
|
|
231
280
|
slug: project.slug,
|
|
232
|
-
error:
|
|
281
|
+
error: outcome.error,
|
|
233
282
|
});
|
|
234
283
|
if (!opts.json) {
|
|
235
|
-
console.error(chalk.red("✗"), `${project.key ?? project.slug}: ${
|
|
284
|
+
console.error(chalk.red("✗"), `${project.key ?? project.slug}: ${outcome.error}`);
|
|
236
285
|
}
|
|
237
286
|
}
|
|
238
287
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/commands/agents/workspace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/commands/agents/workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
import chalk from "chalk";
|
|
3
3
|
import { api } from "../../lib/api.js";
|
|
4
|
-
import { printDetail, handleError } from "../../lib/format.js";
|
|
4
|
+
import { printDetail, printList, handleError } from "../../lib/format.js";
|
|
5
5
|
const getCommand = new Command("get")
|
|
6
6
|
.description("Get the public showroom payload for a demo slug (exactly what the prospect page renders)")
|
|
7
7
|
.argument("<slug>", "Project slug, e.g. upw-cleaning-ops")
|
|
@@ -37,7 +37,36 @@ const getCommand = new Command("get")
|
|
|
37
37
|
handleError(err);
|
|
38
38
|
}
|
|
39
39
|
});
|
|
40
|
+
const fleetCommand = new Command("fleet")
|
|
41
|
+
.description("List the public demo fleet (showcased demos as rendered on itzworking.io, test accounts included for live ones)")
|
|
42
|
+
.option("--json", "Output as JSON")
|
|
43
|
+
.action(async (opts) => {
|
|
44
|
+
try {
|
|
45
|
+
const data = await api.get("/showroom/fleet");
|
|
46
|
+
if (opts.json) {
|
|
47
|
+
console.log(JSON.stringify(data, null, 2));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
printList(data.map((item) => ({
|
|
51
|
+
slug: item.slug,
|
|
52
|
+
status: item.status,
|
|
53
|
+
appUrl: item.appUrl,
|
|
54
|
+
accounts: item.accounts.length,
|
|
55
|
+
flows: item.flows.length,
|
|
56
|
+
})), [
|
|
57
|
+
{ key: "slug", label: "Slug", width: 24 },
|
|
58
|
+
{ key: "status", label: "Status", width: 12 },
|
|
59
|
+
{ key: "appUrl", label: "App URL", width: 46 },
|
|
60
|
+
{ key: "accounts", label: "Accounts", width: 8 },
|
|
61
|
+
{ key: "flows", label: "Flows", width: 5 },
|
|
62
|
+
], opts);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
handleError(err);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
40
68
|
export const showroomCommand = new Command("showroom")
|
|
41
69
|
.description("Prospect-facing showroom pages for upwork demos")
|
|
42
|
-
.addCommand(getCommand)
|
|
70
|
+
.addCommand(getCommand)
|
|
71
|
+
.addCommand(fleetCommand);
|
|
43
72
|
//# sourceMappingURL=showroom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"showroom.js","sourceRoot":"","sources":["../../../src/commands/api/showroom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"showroom.js","sourceRoot":"","sources":["../../../src/commands/api/showroom.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { printList, printDetail, handleError } from "../../lib/format.js";
|
|
|
5
5
|
// Local-logic subcommands (gh + filesystem), live with the agent commands.
|
|
6
6
|
import { upworkDemoInitCommand } from "../agents/upwork-demo-init.js";
|
|
7
7
|
import { upworkDemoLocalEnvCommand } from "../agents/upwork-demo-local-env.js";
|
|
8
|
+
import { upworkDemoRebrandCommand } from "../agents/upwork-demo-rebrand.js";
|
|
8
9
|
const DETAIL_FIELDS = [
|
|
9
10
|
{ key: "id", label: "ID" },
|
|
10
11
|
{ key: "slug", label: "Slug" },
|
|
@@ -12,6 +13,7 @@ const DETAIL_FIELDS = [
|
|
|
12
13
|
{ key: "url", label: "URL" },
|
|
13
14
|
{ key: "status", label: "Status" },
|
|
14
15
|
{ key: "desiredState", label: "Desired" },
|
|
16
|
+
{ key: "showcased", label: "Showcased" },
|
|
15
17
|
{ key: "envHash", label: "Env Hash" },
|
|
16
18
|
{ key: "createdAt", label: "Created" },
|
|
17
19
|
];
|
|
@@ -137,6 +139,22 @@ function desiredStateCommand(name, state) {
|
|
|
137
139
|
}
|
|
138
140
|
});
|
|
139
141
|
}
|
|
142
|
+
const showcaseCommand = new Command("showcase")
|
|
143
|
+
.description("Showcase the demo on the public showroom fleet (GET /showroom/fleet); --off removes it")
|
|
144
|
+
.argument("<ref>", "Demo ID or slug")
|
|
145
|
+
.option("--off", "Remove the demo from the fleet instead")
|
|
146
|
+
.option("--json", "Output as JSON")
|
|
147
|
+
.action(async (ref, opts) => {
|
|
148
|
+
try {
|
|
149
|
+
const data = await api.post(`/upwork-demos/${ref}/showcase`, {
|
|
150
|
+
showcased: !opts.off,
|
|
151
|
+
});
|
|
152
|
+
printDemo(data, opts);
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
handleError(err);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
140
158
|
const rotateCommand = new Command("rotate-secrets")
|
|
141
159
|
.description("Regenerate db password + auth secret + encryption key (redeploys, kills sessions)")
|
|
142
160
|
.argument("<ref>", "Demo ID or slug")
|
|
@@ -174,8 +192,10 @@ export const upworkDemoCommand = new Command("upwork-demo")
|
|
|
174
192
|
.addCommand(getCommand)
|
|
175
193
|
.addCommand(upworkDemoInitCommand)
|
|
176
194
|
.addCommand(upworkDemoLocalEnvCommand)
|
|
195
|
+
.addCommand(upworkDemoRebrandCommand)
|
|
177
196
|
.addCommand(setCommand)
|
|
178
197
|
.addCommand(showroomCommand)
|
|
198
|
+
.addCommand(showcaseCommand)
|
|
179
199
|
.addCommand(envCommand)
|
|
180
200
|
.addCommand(desiredStateCommand("up", "up"))
|
|
181
201
|
.addCommand(desiredStateCommand("down", "down"))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upwork-demos.js","sourceRoot":"","sources":["../../../src/commands/api/upwork-demos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,2EAA2E;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"upwork-demos.js","sourceRoot":"","sources":["../../../src/commands/api/upwork-demos.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export type ProjectRepo = {
|
|
|
8
8
|
private: boolean;
|
|
9
9
|
archived: boolean;
|
|
10
10
|
fork: boolean;
|
|
11
|
+
lastCommitSha?: string | null;
|
|
11
12
|
};
|
|
12
13
|
export type ProjectSummary = {
|
|
13
14
|
id: string;
|
|
@@ -21,7 +22,7 @@ export type RenderedInstructionFile = {
|
|
|
21
22
|
content: string;
|
|
22
23
|
};
|
|
23
24
|
export declare function fetchProjectByRef(ref: string): Promise<ProjectSummary>;
|
|
24
|
-
export declare function fetchRenderedInstructions(
|
|
25
|
+
export declare function fetchRenderedInstructions(ref: string): Promise<RenderedInstructionFile[]>;
|
|
25
26
|
/**
|
|
26
27
|
* Instruction paths that already exist on disk but were not written by Nexus.
|
|
27
28
|
* Callers fail fast on these before doing any other work, unless --force.
|
|
@@ -16,8 +16,8 @@ const MANAGED_HEADER = "<!-- Nexus-managed. Edit in Nexus (project Agents tab),
|
|
|
16
16
|
export function fetchProjectByRef(ref) {
|
|
17
17
|
return api.get(`/projects/${encodeURIComponent(ref)}`);
|
|
18
18
|
}
|
|
19
|
-
export function fetchRenderedInstructions(
|
|
20
|
-
return api.get(`/projects/${
|
|
19
|
+
export function fetchRenderedInstructions(ref) {
|
|
20
|
+
return api.get(`/projects/${encodeURIComponent(ref)}/agent-instructions/rendered`);
|
|
21
21
|
}
|
|
22
22
|
function isNexusManaged(filePath) {
|
|
23
23
|
const head = fs.readFileSync(filePath, "utf-8").trimStart();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-context.js","sourceRoot":"","sources":["../../src/lib/project-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,6EAA6E;AAC7E,8EAA8E;AAC9E,2EAA2E;AAC3E,4EAA4E;AAC5E,8DAA8D;AAE9D,2EAA2E;AAC3E,oEAAoE;AACpE,0CAA0C;AAC1C,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAClD,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAE/C,MAAM,cAAc,GAClB,qHAAqH,CAAC;
|
|
1
|
+
{"version":3,"file":"project-context.js","sourceRoot":"","sources":["../../src/lib/project-context.ts"],"names":[],"mappings":"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"}
|