@itznexus/itznexus-cli 1.120.0 → 1.122.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/workspace.js +17 -6
- package/dist/commands/agents/workspace.js.map +1 -1
- package/dist/commands/api/hosts.d.ts +2 -0
- package/dist/commands/api/hosts.js +262 -0
- package/dist/commands/api/hosts.js.map +1 -0
- package/dist/commands/api/project-env.d.ts +2 -0
- package/dist/commands/api/project-env.js +124 -0
- package/dist/commands/api/project-env.js.map +1 -0
- package/dist/commands/api/projects.js +21 -6
- package/dist/commands/api/projects.js.map +1 -1
- package/dist/commands/api/shorts-publish.js +1 -1
- package/dist/commands/api/shorts-publish.js.map +1 -1
- package/dist/commands/api/shorts.js +2 -2
- package/dist/commands/api/shorts.js.map +1 -1
- package/dist/commands/api/social-posts.js +1 -1
- package/dist/commands/api/social-posts.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/project-context.d.ts +1 -0
- package/dist/lib/project-context.js +5 -4
- package/dist/lib/project-context.js.map +1 -1
- package/dist/lib/project-env-files.d.ts +24 -0
- package/dist/lib/project-env-files.js +110 -0
- package/dist/lib/project-env-files.js.map +1 -0
- package/package.json +1 -1
|
@@ -7,6 +7,7 @@ import chalk from "chalk";
|
|
|
7
7
|
import { api } from "../../lib/api.js";
|
|
8
8
|
import { handleError } from "../../lib/format.js";
|
|
9
9
|
import { cleanupStaleInstructionFiles, fetchProjectByRef, fetchRenderedInstructions, findInstructionConflicts, syncInstructionFiles, } from "../../lib/project-context.js";
|
|
10
|
+
import { cleanupStaleEnvFiles, fetchRenderedEnvFiles, findEnvConflicts, syncEnvFiles, } from "../../lib/project-env-files.js";
|
|
10
11
|
// Materializes the whole workspace from Nexus: the root itself is the
|
|
11
12
|
// itzworkspace repo clone (workspace skills + thin CLAUDE.md, gitignores
|
|
12
13
|
// everything else), and every project with a slug gets a folder holding its
|
|
@@ -129,11 +130,12 @@ async function syncProjectFolder(project, base, opts) {
|
|
|
129
130
|
removed: [],
|
|
130
131
|
lifted: false,
|
|
131
132
|
};
|
|
132
|
-
// The rendered
|
|
133
|
-
//
|
|
134
|
-
const [detail, files] = await Promise.all([
|
|
133
|
+
// The rendered endpoints resolve slugs like every /projects/:ref route, so
|
|
134
|
+
// all fetches go out together instead of waiting on the id.
|
|
135
|
+
const [detail, files, envFiles] = await Promise.all([
|
|
135
136
|
fetchProjectByRef(slug),
|
|
136
137
|
fetchRenderedInstructions(slug),
|
|
138
|
+
fetchRenderedEnvFiles(slug),
|
|
137
139
|
]);
|
|
138
140
|
const repos = detail.repositories.filter((r) => !r.archived && !WORKSPACE_REPOS.has(r.fullName));
|
|
139
141
|
const collapsed = canCollapse(slug, repos, files);
|
|
@@ -146,7 +148,10 @@ async function syncProjectFolder(project, base, opts) {
|
|
|
146
148
|
else
|
|
147
149
|
fs.mkdirSync(dir, { recursive: true });
|
|
148
150
|
if (!opts.force) {
|
|
149
|
-
result.conflicts =
|
|
151
|
+
result.conflicts = [
|
|
152
|
+
...findInstructionConflicts(instructionRoot, files),
|
|
153
|
+
...findEnvConflicts(instructionRoot, envFiles),
|
|
154
|
+
];
|
|
150
155
|
if (result.conflicts.length > 0)
|
|
151
156
|
return result;
|
|
152
157
|
}
|
|
@@ -184,13 +189,19 @@ async function syncProjectFolder(project, base, opts) {
|
|
|
184
189
|
result.failed.push(`${repo.name} (clone)`);
|
|
185
190
|
}
|
|
186
191
|
}));
|
|
187
|
-
const fileResults =
|
|
192
|
+
const fileResults = [
|
|
193
|
+
...syncInstructionFiles(instructionRoot, files),
|
|
194
|
+
...syncEnvFiles(instructionRoot, envFiles),
|
|
195
|
+
];
|
|
188
196
|
result.filesWritten = fileResults.filter((r) => r.status === "written").length;
|
|
189
197
|
for (const r of fileResults) {
|
|
190
198
|
if (r.status === "error")
|
|
191
199
|
result.failed.push(`${r.path}: ${r.error}`);
|
|
192
200
|
}
|
|
193
|
-
result.removed =
|
|
201
|
+
result.removed = [
|
|
202
|
+
...cleanupStaleInstructionFiles(instructionRoot, files, repos.map((r) => r.name), { scanRoot: !collapsed }),
|
|
203
|
+
...cleanupStaleEnvFiles(instructionRoot, envFiles, repos.map((r) => r.name)),
|
|
204
|
+
];
|
|
194
205
|
return result;
|
|
195
206
|
}
|
|
196
207
|
const syncCommand = new Command("sync")
|
|
@@ -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":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,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,MAAM,qBAAqB,CAAC;AAClD,OAAO,EACL,4BAA4B,EAC5B,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,GACb,MAAM,gCAAgC,CAAC;AAExC,sEAAsE;AACtE,yEAAyE;AACzE,4EAA4E;AAC5E,uEAAuE;AACvE,yEAAyE;AACzE,sEAAsE;AAEtE,MAAM,YAAY,GAAG,gBAAgB,CAAC;AACtC,MAAM,UAAU,GAAG,kBAAkB,CAAC;AACtC,gFAAgF;AAChF,MAAM,SAAS,GAAG,yBAAyB,CAAC;AAC5C,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAClD,6EAA6E;AAC7E,gFAAgF;AAChF,0DAA0D;AAC1D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AAC1D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AA0BzE,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,8EAA8E;AAC9E,8EAA8E;AAC9E,mCAAmC;AACnC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,MAAM,UAAU,GAAmB,EAAE,CAAC;AAEtC,KAAK,UAAU,GAAG,CAAC,IAAc,EAAE,GAAW;IAC5C,IAAI,UAAU,IAAI,eAAe,EAAE,CAAC;QAClC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,UAAU,EAAE,CAAC;IACb,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACxC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,UAAU,EAAE,CAAC;QACb,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,wEAAwE;AACxE,mEAAmE;AACnE,KAAK,UAAU,mBAAmB,CAChC,GAAW,EACX,IAAY,EACZ,KAAc;IAEd,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,GAAG,KAAK,+CAA+C,CAAC;IAC9D,CAAC;IAED,MAAM,GAAG,GAAG,KAAK;QACf,CAAC,CAAC,sBAAsB,IAAI,MAAM;QAClC,CAAC,CAAC,kBAAkB,IAAI,MAAM,CAAC;IAEjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACnE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO,GAAG,KAAK,cAAc,IAAI,iCAAiC,CAAC;IACrE,CAAC;IAED,sEAAsE;IACtE,2EAA2E;IAC3E,MAAM,OAAO,GACX,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,OAAO,GAAG,KAAK,0CAA0C,IAAI,oBAAoB,CAAC;IACpF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2EAA2E;AAC3E,+EAA+E;AAC/E,6EAA6E;AAC7E,2EAA2E;AAC3E,sDAAsD;AACtD,SAAS,WAAW,CAClB,IAAY,EACZ,KAAyB,EACzB,KAAyB;IAEzB,OAAO,CACL,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI;QACtB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,0EAA0E;AAC1E,4EAA4E;AAC5E,4DAA4D;AAC5D,SAAS,eAAe,CAAC,GAAW,EAAE,IAAY;IAChD,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,MAAM,SAAS,GAAG,EAAE;SACjB,WAAW,CAAC,GAAG,CAAC;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,WAAW,CAAC,CAAC;IAClD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvC,MAAM,OAAO,GAAG,GAAG,GAAG,UAAU,CAAC;IACjC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7C,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAyB,EACzB,IAAY,EACZ,IAA0D;IAE1D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAc,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAsB;QAChC,IAAI;QACJ,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG;QACH,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,CAAC;QACf,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,KAAK;KACd,CAAC;IAEF,2EAA2E;IAC3E,4DAA4D;IAC5D,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAClD,iBAAiB,CAAC,IAAI,CAAC;QACvB,yBAAyB,CAAC,IAAI,CAAC;QAC/B,qBAAqB,CAAC,IAAI,CAAC;KAC5B,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CACvD,CAAC;IACF,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAElD,wEAAwE;IACxE,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAE/C,IAAI,SAAS;QAAE,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;QACrD,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,SAAS,GAAG;YACjB,GAAG,wBAAwB,CAAC,eAAe,EAAE,KAAK,CAAC;YACnD,GAAG,gBAAgB,CAAC,eAAe,EAAE,QAAQ,CAAC;SAC/C,CAAC;QACF,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC;IACjD,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACvB,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,kEAAkE;YAClE,0BAA0B;YAC1B,IACE,CAAC,IAAI,CAAC,IAAI;gBACV,IAAI,CAAC,aAAa;gBAClB,CAAC,MAAM,GAAG,CACR,CAAC,YAAY,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EAC3D,OAAO,CACR,CAAC,EACF,CAAC;gBACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC;gBAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;gBAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,+BAA+B,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK;gBACpB,CAAC,CAAC,sBAAsB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,MAAM;gBACrD,CAAC,CAAC,kBAAkB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC;YACpD,sEAAsE;YACtE,yDAAyD;YACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YACxC,IAAI,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;gBAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,WAAW,GAAG;QAClB,GAAG,oBAAoB,CAAC,eAAe,EAAE,KAAK,CAAC;QAC/C,GAAG,YAAY,CAAC,eAAe,EAAE,QAAQ,CAAC;KAC3C,CAAC;IACF,MAAM,CAAC,YAAY,GAAG,WAAW,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAC9B,CAAC,MAAM,CAAC;IACT,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,CAAC,OAAO,GAAG;QACf,GAAG,4BAA4B,CAC7B,eAAe,EACf,KAAK,EACL,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACxB,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,CACzB;QACD,GAAG,oBAAoB,CACrB,eAAe,EACf,QAAQ,EACR,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACzB;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KACpC,WAAW,CACV,syBAAsyB,CACvyB;KACA,MAAM,CAAC,cAAc,EAAE,uBAAuB,EAAE,YAAY,CAAC;KAC7D,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;KACzD,MAAM,CAAC,SAAS,EAAE,iCAAiC,CAAC;KACpD,MAAM,CACL,OAAO,EACP,gEAAgE,CACjE;KACA,MAAM,CACL,SAAS,EACT,kEAAkE,CACnE;KACA,MAAM,CACL,QAAQ,EACR,qFAAqF,CACtF;KACA,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CACL,KAAK,EAAE,IAQN,EAAE,EAAE;IACH,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAExC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,EAAE;YAC/B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEF,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChD,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAClD,GAAG,CAAC,GAAG,CAAqB,WAAW,CAAC;SACzC,CAAC,CAAC;QACH,IAAI,WAAW;YAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI;YACN,CAAC,IAAI,CAAC,OAAO;gBACX,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO;gBACzB,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CACpD,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,MAAM,mBAAmB,CACvC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAC3B,WAAW,EACX,CAAC,CAAC,IAAI,CAAC,KAAK,CACb,CAAC;YACF,IAAI,OAAO;gBAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAED,sEAAsE;QACtE,oEAAoE;QACpE,6DAA6D;QAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACtC,MAAM,IAAI,GACR,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrE,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAChD,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EACxB,CAAC,GAAY,EAAE,EAAE,CAAC,CAAC;gBACjB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAsC,EAAE,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACf,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC;oBACxC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAChC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EACd,GAAG,KAAK,iCAAiC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CACnG,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,KAAK,GAAG;4BACZ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS;4BAChC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS;4BAChC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ;4BAC9B,GAAG,MAAM,CAAC,YAAY,QAAQ;yBAC/B,CAAC;wBACF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;4BAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;wBACjD,IAAI,MAAM,CAAC,MAAM;4BAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;4BAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;wBAC1D,MAAM,IAAI,GACR,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;4BACtB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;4BACnB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACvB,OAAO,CAAC,GAAG,CACT,IAAI,EACJ,GAAG,KAAK,KAAK,MAAM,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjD,CAAC;wBACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;4BAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;wBACrC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,OAAO,CAAC,IAAc;oBAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EACd,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE,CACnD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GACZ,OAAO,CAAC,MAAM,GAAG,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAErE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAC9D,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAChB,qBAAqB,OAAO,CAAC,MAAM,gBAAgB,IAAI,EAAE,CAC1D,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;KACrD,WAAW,CAAC,mDAAmD,CAAC;KAChE,UAAU,CAAC,WAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { api } from "../../lib/api.js";
|
|
4
|
+
import { loadConfig } from "../../lib/config.js";
|
|
5
|
+
import { printDetail, printList, handleError } from "../../lib/format.js";
|
|
6
|
+
function pct(n) {
|
|
7
|
+
return n == null ? "-" : `${n.toFixed(0)}%`;
|
|
8
|
+
}
|
|
9
|
+
function num(n, digits = 2) {
|
|
10
|
+
return n == null ? "-" : n.toFixed(digits);
|
|
11
|
+
}
|
|
12
|
+
function mb(bytes) {
|
|
13
|
+
return bytes == null ? "-" : `${(bytes / 1024 / 1024).toFixed(0)} MB`;
|
|
14
|
+
}
|
|
15
|
+
function pushUrl(token) {
|
|
16
|
+
return `${loadConfig().apiUrl}/tools/hosts/push/${token}`;
|
|
17
|
+
}
|
|
18
|
+
function parseThresholds(pairs) {
|
|
19
|
+
if (!pairs || pairs.length === 0)
|
|
20
|
+
return undefined;
|
|
21
|
+
const out = {};
|
|
22
|
+
for (const pair of pairs) {
|
|
23
|
+
const [key, raw] = pair.split("=");
|
|
24
|
+
const value = Number(raw);
|
|
25
|
+
if (!key || Number.isNaN(value)) {
|
|
26
|
+
throw new Error(`Invalid threshold "${pair}", expected key=number`);
|
|
27
|
+
}
|
|
28
|
+
out[key] = value;
|
|
29
|
+
}
|
|
30
|
+
return out;
|
|
31
|
+
}
|
|
32
|
+
const listCommand = new Command("list")
|
|
33
|
+
.description("List monitored hosts")
|
|
34
|
+
.option("--json", "Output as JSON")
|
|
35
|
+
.action(async (opts) => {
|
|
36
|
+
try {
|
|
37
|
+
const data = await api.get("/tools/hosts");
|
|
38
|
+
const rows = data.map((h) => ({
|
|
39
|
+
...h,
|
|
40
|
+
projectKey: h.project?.key ?? "-",
|
|
41
|
+
load: num(h.load1),
|
|
42
|
+
mem: pct(h.memAvailablePct),
|
|
43
|
+
disk: pct(h.diskMaxUsedPct),
|
|
44
|
+
containers: h.containersTotal == null
|
|
45
|
+
? "-"
|
|
46
|
+
: `${h.containersRunning ?? 0}/${h.containersTotal}`,
|
|
47
|
+
}));
|
|
48
|
+
printList(rows, [
|
|
49
|
+
{ key: "name", label: "Name", width: 24 },
|
|
50
|
+
{ key: "status", label: "Status", width: 9 },
|
|
51
|
+
{ key: "projectKey", label: "Project", width: 9 },
|
|
52
|
+
{ key: "load", label: "Load", width: 6 },
|
|
53
|
+
{ key: "mem", label: "Mem free", width: 9 },
|
|
54
|
+
{ key: "disk", label: "Disk", width: 6 },
|
|
55
|
+
{ key: "containers", label: "Ctrs", width: 6 },
|
|
56
|
+
{ key: "lastSeenAt", label: "Last seen", width: 26 },
|
|
57
|
+
{ key: "id", label: "ID", width: 38 },
|
|
58
|
+
], opts);
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
handleError(err);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
const getCommand = new Command("get")
|
|
65
|
+
.description("Show a host with its containers and open alerts")
|
|
66
|
+
.argument("<id>", "Host ID")
|
|
67
|
+
.option("--json", "Output as JSON")
|
|
68
|
+
.action(async (id, opts) => {
|
|
69
|
+
try {
|
|
70
|
+
const data = await api.get(`/tools/hosts/${id}`);
|
|
71
|
+
if (opts.json) {
|
|
72
|
+
console.log(JSON.stringify(data, null, 2));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
printDetail({
|
|
76
|
+
...data,
|
|
77
|
+
pushUrl: pushUrl(data.pushToken),
|
|
78
|
+
project: data.project
|
|
79
|
+
? `${data.project.key ?? data.project.name} / ${data.environment?.name ?? "-"}`
|
|
80
|
+
: null,
|
|
81
|
+
load1: num(data.load1),
|
|
82
|
+
cpuBusyPct: pct(data.cpuBusyPct),
|
|
83
|
+
memAvailablePct: pct(data.memAvailablePct),
|
|
84
|
+
diskMaxUsedPct: pct(data.diskMaxUsedPct),
|
|
85
|
+
}, [
|
|
86
|
+
{ key: "name", label: "Name" },
|
|
87
|
+
{ key: "status", label: "Status" },
|
|
88
|
+
{ key: "project", label: "Project" },
|
|
89
|
+
{ key: "hostname", label: "Hostname" },
|
|
90
|
+
{ key: "kernel", label: "Kernel" },
|
|
91
|
+
{ key: "cpuCount", label: "Cores" },
|
|
92
|
+
{ key: "load1", label: "Load (1m)" },
|
|
93
|
+
{ key: "cpuBusyPct", label: "CPU busy" },
|
|
94
|
+
{ key: "memAvailablePct", label: "Mem available" },
|
|
95
|
+
{ key: "diskMaxUsedPct", label: "Disk max used" },
|
|
96
|
+
{ key: "pendingSecurityUpgrades", label: "Security upgrades" },
|
|
97
|
+
{ key: "rebootRequired", label: "Reboot required" },
|
|
98
|
+
{ key: "failedUnits", label: "Failed units" },
|
|
99
|
+
{ key: "agentVersion", label: "Agent" },
|
|
100
|
+
{ key: "lastSeenAt", label: "Last seen" },
|
|
101
|
+
{ key: "pushUrl", label: "Push URL" },
|
|
102
|
+
{ key: "id", label: "ID" },
|
|
103
|
+
], opts);
|
|
104
|
+
if (data.openEvents.length > 0) {
|
|
105
|
+
console.log(chalk.bold("\n Open alerts"));
|
|
106
|
+
for (const e of data.openEvents) {
|
|
107
|
+
const color = e.severity === "critical" ? chalk.red : chalk.yellow;
|
|
108
|
+
console.log(` ${color(e.severity.padEnd(8))} ${e.message}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const live = data.containers.filter((c) => !c.goneAt);
|
|
112
|
+
if (live.length > 0) {
|
|
113
|
+
console.log(chalk.bold("\n Containers"));
|
|
114
|
+
for (const c of live) {
|
|
115
|
+
const state = c.state === "running"
|
|
116
|
+
? chalk.green(c.state)
|
|
117
|
+
: chalk.red(c.state ?? "unknown");
|
|
118
|
+
const health = c.health ? ` (${c.health})` : "";
|
|
119
|
+
console.log(` ${c.name.padEnd(28)} ${state}${health} ${c.imageTag ?? "-"} cpu ${num(c.cpuPct, 1)}% mem ${mb(c.memBytes)} restarts ${c.restartCount}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
handleError(err);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
const createCommand = new Command("create")
|
|
128
|
+
.description("Register a host and mint its push token")
|
|
129
|
+
.argument("<name>", "Host name")
|
|
130
|
+
.option("--environment <id>", "Project environment ID this host serves")
|
|
131
|
+
.option("--threshold <key=value...>", "Override an alert threshold (e.g. diskWarningPct=90)")
|
|
132
|
+
.option("--json", "Output as JSON")
|
|
133
|
+
.action(async (name, opts) => {
|
|
134
|
+
try {
|
|
135
|
+
const data = await api.post("/tools/hosts", {
|
|
136
|
+
name,
|
|
137
|
+
environmentId: opts.environment,
|
|
138
|
+
thresholds: parseThresholds(opts.threshold),
|
|
139
|
+
});
|
|
140
|
+
if (opts.json) {
|
|
141
|
+
console.log(JSON.stringify(data, null, 2));
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
console.log(chalk.green(`✓ Host created: ${data.name}`));
|
|
145
|
+
console.log(` ID ${data.id}`);
|
|
146
|
+
console.log(` Push URL ${pushUrl(data.pushToken)}`);
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
handleError(err);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
const updateCommand = new Command("update")
|
|
153
|
+
.description("Rename a host, link its environment, or override thresholds")
|
|
154
|
+
.argument("<id>", "Host ID")
|
|
155
|
+
.option("--name <name>", "New name")
|
|
156
|
+
.option("--environment <id>", 'Environment ID, or "none" to unlink')
|
|
157
|
+
.option("--threshold <key=value...>", "Replace the threshold overrides (omit to keep)")
|
|
158
|
+
.option("--reset-thresholds", "Drop every threshold override")
|
|
159
|
+
.option("--json", "Output as JSON")
|
|
160
|
+
.action(async (id, opts) => {
|
|
161
|
+
try {
|
|
162
|
+
const payload = {};
|
|
163
|
+
if (opts.name)
|
|
164
|
+
payload.name = opts.name;
|
|
165
|
+
if (opts.environment) {
|
|
166
|
+
payload.environmentId =
|
|
167
|
+
opts.environment === "none" ? null : opts.environment;
|
|
168
|
+
}
|
|
169
|
+
if (opts.resetThresholds)
|
|
170
|
+
payload.thresholds = null;
|
|
171
|
+
else if (opts.threshold) {
|
|
172
|
+
payload.thresholds = parseThresholds(opts.threshold);
|
|
173
|
+
}
|
|
174
|
+
const data = await api.post(`/tools/hosts/${id}`, payload);
|
|
175
|
+
if (opts.json)
|
|
176
|
+
console.log(JSON.stringify(data, null, 2));
|
|
177
|
+
else
|
|
178
|
+
console.log(chalk.green(`✓ Host updated: ${data.name}`));
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
handleError(err);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
const deleteCommand = new Command("delete")
|
|
185
|
+
.description("Delete a host and its history")
|
|
186
|
+
.argument("<id>", "Host ID")
|
|
187
|
+
.action(async (id) => {
|
|
188
|
+
try {
|
|
189
|
+
await api.delete(`/tools/hosts/${id}`);
|
|
190
|
+
console.log(chalk.green(`✓ Host deleted: ${id}`));
|
|
191
|
+
}
|
|
192
|
+
catch (err) {
|
|
193
|
+
handleError(err);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
const samplesCommand = new Command("samples")
|
|
197
|
+
.description("Recent samples of a host, oldest first")
|
|
198
|
+
.argument("<id>", "Host ID")
|
|
199
|
+
.option("--hours <n>", "Window in hours (default 24, max 720)", (v) => parseInt(v, 10))
|
|
200
|
+
.option("--json", "Output as JSON")
|
|
201
|
+
.action(async (id, opts) => {
|
|
202
|
+
try {
|
|
203
|
+
const query = opts.hours ? `?hours=${opts.hours}` : "";
|
|
204
|
+
const data = await api.get(`/tools/hosts/${id}/samples${query}`);
|
|
205
|
+
const rows = data.map((s) => ({
|
|
206
|
+
...s,
|
|
207
|
+
load1: num(s.load1),
|
|
208
|
+
load5: num(s.load5),
|
|
209
|
+
cpu: pct(s.cpuBusyPct),
|
|
210
|
+
mem: s.memAvailableBytes != null && s.memTotalBytes
|
|
211
|
+
? pct((s.memAvailableBytes / s.memTotalBytes) * 100)
|
|
212
|
+
: "-",
|
|
213
|
+
disk: pct(s.diskMaxUsedPct),
|
|
214
|
+
}));
|
|
215
|
+
printList(rows, [
|
|
216
|
+
{ key: "sampledAt", label: "Sampled", width: 26 },
|
|
217
|
+
{ key: "load1", label: "Load1", width: 7 },
|
|
218
|
+
{ key: "load5", label: "Load5", width: 7 },
|
|
219
|
+
{ key: "cpu", label: "CPU", width: 6 },
|
|
220
|
+
{ key: "mem", label: "Mem free", width: 9 },
|
|
221
|
+
{ key: "disk", label: "Disk", width: 6 },
|
|
222
|
+
], opts);
|
|
223
|
+
}
|
|
224
|
+
catch (err) {
|
|
225
|
+
handleError(err);
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
const eventsCommand = new Command("events")
|
|
229
|
+
.description("Alert history of a host, newest first")
|
|
230
|
+
.argument("<id>", "Host ID")
|
|
231
|
+
.option("--limit <n>", "Max rows (1-500, default 100)", (v) => parseInt(v, 10))
|
|
232
|
+
.option("--json", "Output as JSON")
|
|
233
|
+
.action(async (id, opts) => {
|
|
234
|
+
try {
|
|
235
|
+
const query = opts.limit ? `?limit=${opts.limit}` : "";
|
|
236
|
+
const data = await api.get(`/tools/hosts/${id}/events${query}`);
|
|
237
|
+
const rows = data.map((e) => ({
|
|
238
|
+
...e,
|
|
239
|
+
state: e.resolvedAt ? "resolved" : "open",
|
|
240
|
+
}));
|
|
241
|
+
printList(rows, [
|
|
242
|
+
{ key: "openedAt", label: "Opened", width: 26 },
|
|
243
|
+
{ key: "state", label: "State", width: 9 },
|
|
244
|
+
{ key: "severity", label: "Severity", width: 9 },
|
|
245
|
+
{ key: "kind", label: "Kind", width: 22 },
|
|
246
|
+
{ key: "message", label: "Message", width: 60 },
|
|
247
|
+
], opts);
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
handleError(err);
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
export const hostCommand = new Command("host")
|
|
254
|
+
.description("Monitored VPS hosts (machine and docker snapshots, alerts)")
|
|
255
|
+
.addCommand(listCommand)
|
|
256
|
+
.addCommand(getCommand)
|
|
257
|
+
.addCommand(createCommand)
|
|
258
|
+
.addCommand(updateCommand)
|
|
259
|
+
.addCommand(deleteCommand)
|
|
260
|
+
.addCommand(samplesCommand)
|
|
261
|
+
.addCommand(eventsCommand);
|
|
262
|
+
//# sourceMappingURL=hosts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosts.js","sourceRoot":"","sources":["../../../src/commands/api/hosts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { api } from "../../lib/api.js";
|
|
5
|
+
import { handleError, printList } from "../../lib/format.js";
|
|
6
|
+
import { fetchRenderedEnvFiles } from "../../lib/project-env-files.js";
|
|
7
|
+
// Every subcommand resolves the project like `project sync` does: the current
|
|
8
|
+
// folder name is the slug unless --project overrides it.
|
|
9
|
+
function resolveRef(project) {
|
|
10
|
+
const ref = (project ?? path.basename(process.cwd())).trim();
|
|
11
|
+
if (!ref) {
|
|
12
|
+
console.error(chalk.red("✗"), "Cannot resolve a project ref");
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
return ref;
|
|
16
|
+
}
|
|
17
|
+
function scopeLabel(repo) {
|
|
18
|
+
return repo ?? "all repos";
|
|
19
|
+
}
|
|
20
|
+
const listCommand = new Command("list")
|
|
21
|
+
.description("List the project's env vars (keys and scopes only, values stay masked)")
|
|
22
|
+
.option("--project <ref>", "Project ID, key, or slug (defaults to the current folder name)")
|
|
23
|
+
.option("--repo <name>", "Only vars scoped to this repo")
|
|
24
|
+
.option("--json", "Output as JSON")
|
|
25
|
+
.action(async (opts) => {
|
|
26
|
+
try {
|
|
27
|
+
const ref = resolveRef(opts.project);
|
|
28
|
+
let vars = await api.get(`/projects/${encodeURIComponent(ref)}/env-vars`);
|
|
29
|
+
if (opts.repo)
|
|
30
|
+
vars = vars.filter((v) => v.repo === opts.repo);
|
|
31
|
+
printList(vars.map((v) => ({ ...v, scope: scopeLabel(v.repo) })), [
|
|
32
|
+
{ key: "key", label: "Key", width: 40 },
|
|
33
|
+
{ key: "scope", label: "Scope", width: 28 },
|
|
34
|
+
{ key: "updatedAt", label: "Updated", width: 26 },
|
|
35
|
+
], { json: opts.json });
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
handleError(err);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
const setCommand = new Command("set")
|
|
42
|
+
.description("Set an env var (create or update; the value is encrypted at rest and materialized into the repo's gitignored .env.local on sync)")
|
|
43
|
+
.argument("<key>", "Variable name (e.g. S3_ACCESS_KEY)")
|
|
44
|
+
.argument("<value>", "Variable value")
|
|
45
|
+
.option("--project <ref>", "Project ID, key, or slug (defaults to the current folder name)")
|
|
46
|
+
.option("--repo <name>", "Scope the var to one repo folder; omit for project-wide (every repo)")
|
|
47
|
+
.option("--json", "Output as JSON")
|
|
48
|
+
.action(async (key, value, opts) => {
|
|
49
|
+
try {
|
|
50
|
+
const ref = resolveRef(opts.project);
|
|
51
|
+
const envVar = await api.post(`/projects/${encodeURIComponent(ref)}/env-vars`, { key, value, repo: opts.repo ?? null });
|
|
52
|
+
if (opts.json) {
|
|
53
|
+
console.log(JSON.stringify(envVar, null, 2));
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
console.log(chalk.green("✓"), `${envVar.key} set (${scopeLabel(envVar.repo)}); run \`itznexus project sync\` to materialize`);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
handleError(err);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
const unsetCommand = new Command("unset")
|
|
63
|
+
.description("Delete an env var")
|
|
64
|
+
.argument("<key>", "Variable name")
|
|
65
|
+
.option("--project <ref>", "Project ID, key, or slug (defaults to the current folder name)")
|
|
66
|
+
.option("--repo <name>", "The repo scope of the var; omit for the project-wide var")
|
|
67
|
+
.option("--json", "Output as JSON")
|
|
68
|
+
.action(async (key, opts) => {
|
|
69
|
+
try {
|
|
70
|
+
const ref = resolveRef(opts.project);
|
|
71
|
+
const vars = await api.get(`/projects/${encodeURIComponent(ref)}/env-vars`);
|
|
72
|
+
const match = vars.find((v) => v.key === key && v.repo === (opts.repo ?? null));
|
|
73
|
+
if (!match) {
|
|
74
|
+
console.error(chalk.red("✗"), `No env var ${key} (${scopeLabel(opts.repo ?? null)}) on this project`);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
const result = await api.delete(`/projects/${encodeURIComponent(ref)}/env-vars/${match.id}`);
|
|
78
|
+
if (opts.json) {
|
|
79
|
+
console.log(JSON.stringify(result, null, 2));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
console.log(chalk.green("✓"), `${key} deleted (${scopeLabel(match.repo)})`);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
handleError(err);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
const revealCommand = new Command("reveal")
|
|
89
|
+
.description("Print the rendered .env.local contents per repo (contains secrets)")
|
|
90
|
+
.option("--project <ref>", "Project ID, key, or slug (defaults to the current folder name)")
|
|
91
|
+
.option("--repo <name>", "Only this repo's file")
|
|
92
|
+
.option("--json", "Output as JSON")
|
|
93
|
+
.action(async (opts) => {
|
|
94
|
+
try {
|
|
95
|
+
const ref = resolveRef(opts.project);
|
|
96
|
+
let files = await fetchRenderedEnvFiles(ref);
|
|
97
|
+
if (opts.repo)
|
|
98
|
+
files = files.filter((f) => f.repo === opts.repo);
|
|
99
|
+
if (opts.json) {
|
|
100
|
+
console.log(JSON.stringify(files, null, 2));
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (files.length === 0) {
|
|
104
|
+
console.log(chalk.dim("No env vars"));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
files.forEach((file, i) => {
|
|
108
|
+
if (i > 0)
|
|
109
|
+
console.log("");
|
|
110
|
+
console.log(chalk.dim(`# ${file.repo}/.env.local`));
|
|
111
|
+
console.log(file.content);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
handleError(err);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
export const projectEnvCommand = new Command("env")
|
|
119
|
+
.description("Manage the project's env vars (encrypted in Nexus, materialized as gitignored .env.local files by `itznexus project sync`)")
|
|
120
|
+
.addCommand(listCommand)
|
|
121
|
+
.addCommand(setCommand)
|
|
122
|
+
.addCommand(unsetCommand)
|
|
123
|
+
.addCommand(revealCommand);
|
|
124
|
+
//# sourceMappingURL=project-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-env.js","sourceRoot":"","sources":["../../../src/commands/api/project-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,9 @@ import chalk from "chalk";
|
|
|
6
6
|
import { api } from "../../lib/api.js";
|
|
7
7
|
import { printList, printDetail, handleError } from "../../lib/format.js";
|
|
8
8
|
import { cleanupStaleInstructionFiles, fetchProjectByRef, fetchRenderedInstructions, findInstructionConflicts, syncInstructionFiles, } from "../../lib/project-context.js";
|
|
9
|
+
import { cleanupStaleEnvFiles, fetchRenderedEnvFiles, findEnvConflicts, syncEnvFiles, } from "../../lib/project-env-files.js";
|
|
9
10
|
import { instructionsCommand } from "./project-instructions.js";
|
|
11
|
+
import { projectEnvCommand } from "./project-env.js";
|
|
10
12
|
import { projectCapabilityCommand } from "./project-capabilities.js";
|
|
11
13
|
import { projectArtifactCommand } from "./project-artifacts.js";
|
|
12
14
|
import { roleCommand } from "./project-roles.js";
|
|
@@ -441,7 +443,7 @@ function cloneUrl(repo, https) {
|
|
|
441
443
|
: `git@github.com:${repo.owner}/${repo.name}.git`;
|
|
442
444
|
}
|
|
443
445
|
const syncCommand = new Command("sync")
|
|
444
|
-
.description("Sync the project folder from Nexus: clone missing repositories and materialize the project's agent instruction files (root CLAUDE.md, gitignored CLAUDE.local.md inside repos). Nexus-managed files are overwritten and files deleted in Nexus are removed; existing repos' git state is never touched. Run inside the project folder; slug defaults to the folder name.")
|
|
446
|
+
.description("Sync the project folder from Nexus: clone missing repositories and materialize the project's agent instruction files (root CLAUDE.md, gitignored CLAUDE.local.md inside repos) and env vars (gitignored .env.local inside repos). Nexus-managed files are overwritten and files deleted in Nexus are removed; existing repos' git state is never touched. Run inside the project folder; slug defaults to the folder name.")
|
|
445
447
|
.argument("[slug]", "Project slug (defaults to the current folder name)")
|
|
446
448
|
.option("--https", "Clone over HTTPS instead of SSH")
|
|
447
449
|
.option("--all", "Include archived repositories")
|
|
@@ -456,10 +458,16 @@ const syncCommand = new Command("sync")
|
|
|
456
458
|
}
|
|
457
459
|
try {
|
|
458
460
|
const project = await fetchProjectByRef(resolvedSlug);
|
|
459
|
-
const files = await
|
|
461
|
+
const [files, envFiles] = await Promise.all([
|
|
462
|
+
fetchRenderedInstructions(project.id),
|
|
463
|
+
fetchRenderedEnvFiles(project.id),
|
|
464
|
+
]);
|
|
460
465
|
// Fail fast before cloning anything: never clobber hand-written files.
|
|
461
466
|
if (!opts.force) {
|
|
462
|
-
const conflicts =
|
|
467
|
+
const conflicts = [
|
|
468
|
+
...findInstructionConflicts(cwd, files),
|
|
469
|
+
...findEnvConflicts(cwd, envFiles),
|
|
470
|
+
];
|
|
463
471
|
if (conflicts.length > 0) {
|
|
464
472
|
for (const rel of conflicts) {
|
|
465
473
|
console.error(chalk.red("\u2717"), `${rel} exists and is not Nexus-managed. Pass --force to overwrite.`);
|
|
@@ -489,8 +497,14 @@ const syncCommand = new Command("sync")
|
|
|
489
497
|
failed.push(repo.name);
|
|
490
498
|
}
|
|
491
499
|
}
|
|
492
|
-
const fileResults =
|
|
493
|
-
|
|
500
|
+
const fileResults = [
|
|
501
|
+
...syncInstructionFiles(cwd, files),
|
|
502
|
+
...syncEnvFiles(cwd, envFiles),
|
|
503
|
+
];
|
|
504
|
+
const removed = [
|
|
505
|
+
...cleanupStaleInstructionFiles(cwd, files, repos.map((r) => r.name)),
|
|
506
|
+
...cleanupStaleEnvFiles(cwd, envFiles, repos.map((r) => r.name)),
|
|
507
|
+
];
|
|
494
508
|
const hasError = failed.length > 0 || fileResults.some((r) => r.status === "error");
|
|
495
509
|
const label = project.key ?? project.name;
|
|
496
510
|
if (opts.json) {
|
|
@@ -513,7 +527,7 @@ const syncCommand = new Command("sync")
|
|
|
513
527
|
console.log(chalk.green("\n\u2713"), `Synced ${chalk.bold(label)} in ${cwd}`);
|
|
514
528
|
const written = fileResults.filter((r) => r.status === "written").length;
|
|
515
529
|
const parts = [
|
|
516
|
-
`${written}/${files.length}
|
|
530
|
+
`${written}/${files.length + envFiles.length} managed files`,
|
|
517
531
|
`${cloned.length} cloned`,
|
|
518
532
|
];
|
|
519
533
|
if (failed.length)
|
|
@@ -1044,6 +1058,7 @@ export const projectCommand = new Command("project")
|
|
|
1044
1058
|
.addCommand(lastIngestedCommand)
|
|
1045
1059
|
.addCommand(syncCommand)
|
|
1046
1060
|
.addCommand(environmentCommand)
|
|
1061
|
+
.addCommand(projectEnvCommand)
|
|
1047
1062
|
.addCommand(domainCommand)
|
|
1048
1063
|
.addCommand(projectCapabilityCommand)
|
|
1049
1064
|
.addCommand(projectArtifactCommand)
|