@xyteai/cli 0.1.0 → 0.2.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/README.md +27 -5
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +52 -44
- package/dist/cli/index.js.map +1 -1
- package/dist/client/create-client.js +14 -14
- package/dist/client/create-client.js.map +1 -1
- package/dist/config/readiness.d.ts +2 -2
- package/dist/config/readiness.d.ts.map +1 -1
- package/dist/config/readiness.js +1 -1
- package/dist/config/readiness.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +2 -2
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +3 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/namespaces/device.d.ts +1 -0
- package/dist/namespaces/device.d.ts.map +1 -1
- package/dist/namespaces/device.js +1 -0
- package/dist/namespaces/device.js.map +1 -1
- package/dist/namespaces/organization.d.ts +1 -0
- package/dist/namespaces/organization.d.ts.map +1 -1
- package/dist/namespaces/organization.js +1 -0
- package/dist/namespaces/organization.js.map +1 -1
- package/dist/secure/{keychain.d.ts → secret-store.d.ts} +16 -4
- package/dist/secure/secret-store.d.ts.map +1 -0
- package/dist/secure/secret-store.js +140 -0
- package/dist/secure/secret-store.js.map +1 -0
- package/dist/spec/public-endpoints.json +37 -0
- package/dist/tui/app.d.ts +2 -2
- package/dist/tui/app.d.ts.map +1 -1
- package/dist/tui/app.js +5 -5
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/headless-renderer.d.ts +2 -2
- package/dist/tui/headless-renderer.d.ts.map +1 -1
- package/dist/tui/headless-renderer.js +4 -4
- package/dist/tui/headless-renderer.js.map +1 -1
- package/dist/tui/key-wizard.d.ts +1 -1
- package/dist/tui/key-wizard.d.ts.map +1 -1
- package/dist/tui/key-wizard.js +2 -2
- package/dist/tui/key-wizard.js.map +1 -1
- package/dist/tui/screens/config.js +6 -6
- package/dist/tui/screens/config.js.map +1 -1
- package/dist/tui/types.d.ts +2 -2
- package/dist/tui/types.d.ts.map +1 -1
- package/dist/types/client.d.ts +2 -2
- package/dist/types/client.d.ts.map +1 -1
- package/dist/workflows/fleet-insights.d.ts +7 -8
- package/dist/workflows/fleet-insights.d.ts.map +1 -1
- package/dist/workflows/fleet-insights.js +10 -492
- package/dist/workflows/fleet-insights.js.map +1 -1
- package/dist/workflows/report/font-asset.d.ts +8 -0
- package/dist/workflows/report/font-asset.d.ts.map +1 -0
- package/dist/workflows/report/font-asset.js +1462 -0
- package/dist/workflows/report/font-asset.js.map +1 -0
- package/dist/workflows/report/logo-asset.d.ts +7 -0
- package/dist/workflows/report/logo-asset.d.ts.map +1 -0
- package/dist/workflows/report/logo-asset.js +707 -0
- package/dist/workflows/report/logo-asset.js.map +1 -0
- package/dist/workflows/report/pdf-layout.d.ts +59 -0
- package/dist/workflows/report/pdf-layout.d.ts.map +1 -0
- package/dist/workflows/report/pdf-layout.js +388 -0
- package/dist/workflows/report/pdf-layout.js.map +1 -0
- package/dist/workflows/report/pdf-render.d.ts +3 -0
- package/dist/workflows/report/pdf-render.d.ts.map +1 -0
- package/dist/workflows/report/pdf-render.js +221 -0
- package/dist/workflows/report/pdf-render.js.map +1 -0
- package/dist/workflows/report/pdf-table.d.ts +33 -0
- package/dist/workflows/report/pdf-table.d.ts.map +1 -0
- package/dist/workflows/report/pdf-table.js +213 -0
- package/dist/workflows/report/pdf-table.js.map +1 -0
- package/dist/workflows/report/theme.d.ts +53 -0
- package/dist/workflows/report/theme.d.ts.map +1 -0
- package/dist/workflows/report/theme.js +95 -0
- package/dist/workflows/report/theme.js.map +1 -0
- package/dist/workflows/report/time-format.d.ts +5 -0
- package/dist/workflows/report/time-format.d.ts.map +1 -0
- package/dist/workflows/report/time-format.js +112 -0
- package/dist/workflows/report/time-format.js.map +1 -0
- package/docs/schemas/inspect-deep-dive.v1.schema.json +3 -0
- package/package.json +5 -1
- package/skills/xyte-cli/SKILL.md +7 -2
- package/skills/xyte-cli/agents/openai.yaml +1 -1
- package/skills/xyte-cli/references/endpoints.md +23 -0
- package/skills/xyte-cli/scripts/check_headless.sh +1 -1
- package/dist/secure/keychain.d.ts.map +0 -1
- package/dist/secure/keychain.js +0 -170
- package/dist/secure/keychain.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/workflows/report/theme.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function parseTimestamp(value: unknown): Date | undefined;
|
|
2
|
+
export declare function formatUtcForReport(value: unknown): string;
|
|
3
|
+
export declare function formatRelativeAgeFromHours(hours: number): string;
|
|
4
|
+
export declare function formatWindowLabel(windowHours: number): string;
|
|
5
|
+
//# sourceMappingURL=time-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-format.d.ts","sourceRoot":"","sources":["../../../src/workflows/report/time-format.ts"],"names":[],"mappings":"AAaA,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAkD/D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAYzD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBhE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA0B7D"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseTimestamp = parseTimestamp;
|
|
4
|
+
exports.formatUtcForReport = formatUtcForReport;
|
|
5
|
+
exports.formatRelativeAgeFromHours = formatRelativeAgeFromHours;
|
|
6
|
+
exports.formatWindowLabel = formatWindowLabel;
|
|
7
|
+
function identifier(value) {
|
|
8
|
+
if (value === undefined || value === null) {
|
|
9
|
+
return 'n/a';
|
|
10
|
+
}
|
|
11
|
+
return String(value);
|
|
12
|
+
}
|
|
13
|
+
function formatTwoDigits(value) {
|
|
14
|
+
return String(value).padStart(2, '0');
|
|
15
|
+
}
|
|
16
|
+
const MONTHS_SHORT = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
17
|
+
function parseTimestamp(value) {
|
|
18
|
+
if (typeof value !== 'string' || !value.trim()) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
const trimmed = value.trim();
|
|
22
|
+
const normalized = trimmed.replace(/\s+/, 'T');
|
|
23
|
+
const parts = normalized.match(/^(\d{4}-\d{2}-\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?)?(Z|[+-]\d{2}(?::?\d{2})?)?$/i);
|
|
24
|
+
if (parts) {
|
|
25
|
+
const date = parts[1];
|
|
26
|
+
const hour = parts[2] ?? '00';
|
|
27
|
+
const minute = parts[3] ?? '00';
|
|
28
|
+
const second = parts[4] ?? '00';
|
|
29
|
+
const fraction = parts[5] ? `.${parts[5].slice(0, 3).padEnd(3, '0')}` : '';
|
|
30
|
+
const zoneRaw = parts[6] ?? 'Z';
|
|
31
|
+
const zone = /^[+-]\d{4}$/.test(zoneRaw)
|
|
32
|
+
? `${zoneRaw.slice(0, 3)}:${zoneRaw.slice(3)}`
|
|
33
|
+
: /^[+-]\d{2}$/.test(zoneRaw)
|
|
34
|
+
? `${zoneRaw}:00`
|
|
35
|
+
: zoneRaw;
|
|
36
|
+
const iso = `${date}T${hour}:${minute}:${second}${fraction}${zone}`;
|
|
37
|
+
const parsedIso = new Date(iso);
|
|
38
|
+
if (!Number.isNaN(parsedIso.getTime())) {
|
|
39
|
+
return parsedIso;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (/^\d{4}-\d{2}-\d{2}T/.test(trimmed) && !/(Z|[+-]\d{2}(?::?\d{2})?)$/i.test(trimmed)) {
|
|
43
|
+
const asUtc = new Date(`${trimmed}Z`);
|
|
44
|
+
if (!Number.isNaN(asUtc.getTime())) {
|
|
45
|
+
return asUtc;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (/^\d{4}-\d{2}-\d{2}$/.test(trimmed)) {
|
|
49
|
+
const asDateUtc = new Date(`${trimmed}T00:00:00Z`);
|
|
50
|
+
if (!Number.isNaN(asDateUtc.getTime())) {
|
|
51
|
+
return asDateUtc;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const direct = new Date(trimmed);
|
|
55
|
+
if (!Number.isNaN(direct.getTime())) {
|
|
56
|
+
return direct;
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
function formatUtcForReport(value) {
|
|
61
|
+
const parsed = parseTimestamp(value);
|
|
62
|
+
if (!parsed) {
|
|
63
|
+
return identifier(value);
|
|
64
|
+
}
|
|
65
|
+
const month = MONTHS_SHORT[parsed.getUTCMonth()];
|
|
66
|
+
const day = formatTwoDigits(parsed.getUTCDate());
|
|
67
|
+
const year = parsed.getUTCFullYear();
|
|
68
|
+
const hh = formatTwoDigits(parsed.getUTCHours());
|
|
69
|
+
const mm = formatTwoDigits(parsed.getUTCMinutes());
|
|
70
|
+
return `${month} ${day}, ${year} ${hh}:${mm} UTC`;
|
|
71
|
+
}
|
|
72
|
+
function formatRelativeAgeFromHours(hours) {
|
|
73
|
+
if (!Number.isFinite(hours) || hours <= 0.5) {
|
|
74
|
+
return 'just now';
|
|
75
|
+
}
|
|
76
|
+
const wholeHours = Math.max(0, Math.round(hours));
|
|
77
|
+
if (wholeHours < 24) {
|
|
78
|
+
return `${wholeHours}h ago`;
|
|
79
|
+
}
|
|
80
|
+
const days = Math.floor(wholeHours / 24);
|
|
81
|
+
const remainderHours = wholeHours % 24;
|
|
82
|
+
if (remainderHours === 0) {
|
|
83
|
+
return `${days}d ago`;
|
|
84
|
+
}
|
|
85
|
+
return `${days}d ${remainderHours}h ago`;
|
|
86
|
+
}
|
|
87
|
+
function formatWindowLabel(windowHours) {
|
|
88
|
+
const normalized = Number.isFinite(windowHours) && windowHours > 0 ? Math.round(windowHours) : 24;
|
|
89
|
+
if (normalized === 1) {
|
|
90
|
+
return 'Last hour';
|
|
91
|
+
}
|
|
92
|
+
if (normalized <= 24) {
|
|
93
|
+
return `Last ${normalized} hours`;
|
|
94
|
+
}
|
|
95
|
+
const daysExact = normalized / 24;
|
|
96
|
+
if (Number.isInteger(daysExact)) {
|
|
97
|
+
const days = Math.max(1, daysExact);
|
|
98
|
+
if (days === 1) {
|
|
99
|
+
return 'Last day';
|
|
100
|
+
}
|
|
101
|
+
if (days % 7 === 0) {
|
|
102
|
+
const weeks = days / 7;
|
|
103
|
+
if (weeks === 1) {
|
|
104
|
+
return 'Last week';
|
|
105
|
+
}
|
|
106
|
+
return `Last ${weeks} weeks`;
|
|
107
|
+
}
|
|
108
|
+
return `Last ${days} days`;
|
|
109
|
+
}
|
|
110
|
+
return `Last ${normalized} hours`;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=time-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-format.js","sourceRoot":"","sources":["../../../src/workflows/report/time-format.ts"],"names":[],"mappings":";;AAaA,wCAkDC;AAED,gDAYC;AAED,gEAgBC;AAED,8CA0BC;AA3HD,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAEnH,SAAgB,cAAc,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAC5B,gGAAgG,CACjG,CAAC;IAEF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QAChC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;YACtC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC9C,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC3B,CAAC,CAAC,GAAG,OAAO,KAAK;gBACjB,CAAC,CAAC,OAAO,CAAC;QACd,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,MAAM,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC;QACpE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACxF,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,OAAO,YAAY,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;IACrC,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IACnD,OAAO,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;AACpD,CAAC;AAED,SAAgB,0BAA0B,CAAC,KAAa;IACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QAC5C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,GAAG,UAAU,OAAO,CAAC;IAC9B,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,cAAc,GAAG,UAAU,GAAG,EAAE,CAAC;IACvC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,IAAI,OAAO,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,IAAI,KAAK,cAAc,OAAO,CAAC;AAC3C,CAAC;AAED,SAAgB,iBAAiB,CAAC,WAAmB;IACnD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClG,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;QACrB,OAAO,QAAQ,UAAU,QAAQ,CAAC;IACpC,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,GAAG,EAAE,CAAC;IAClC,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;YACvB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,OAAO,QAAQ,KAAK,QAAQ,CAAC;QAC/B,CAAC;QACD,OAAO,QAAQ,IAAI,OAAO,CAAC;IAC7B,CAAC;IAED,OAAO,QAAQ,UAAU,QAAQ,CAAC;AACpC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyteai/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Xyte CLI, TUI, skills, and MCP bridge for zero-friction AI operations",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -48,6 +48,10 @@
|
|
|
48
48
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
49
49
|
"test": "vitest run",
|
|
50
50
|
"test:watch": "vitest",
|
|
51
|
+
"smoke:external-live": "node scripts/smoke_external_user_live.mjs",
|
|
52
|
+
"report:endpoint-parity": "node scripts/report_external_endpoint_parity.mjs",
|
|
53
|
+
"check:endpoint-parity": "node scripts/report_external_endpoint_parity.mjs --strict",
|
|
54
|
+
"test:commit": "npm run typecheck && npm test && npm run check:endpoint-parity && npm run smoke:external-live",
|
|
51
55
|
"tui": "tsx src/bin/xyte-cli.ts tui",
|
|
52
56
|
"release:publish": "bash scripts/publish.sh all",
|
|
53
57
|
"release:publish:cli": "bash scripts/publish.sh cli",
|
package/skills/xyte-cli/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: xyte-cli
|
|
3
|
-
description: "Use for @
|
|
3
|
+
description: "Use for @xyteai/cli operations: first-run setup, tenant/key auth, guarded endpoint calls, inspect/report generation, JSON-only headless TUI snapshots, and MCP tool serving with schema-validated outputs."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# XYTE Skill Router (One-Stop, Agent-Native)
|
|
@@ -13,10 +13,14 @@ This skill is the entrypoint for deterministic Xyte operations via `xyte-cli`.
|
|
|
13
13
|
|
|
14
14
|
- Use `xyte-cli` commands directly.
|
|
15
15
|
- Do not use source/dev entrypoints (`npx`, `tsx`, `src/*`, `dist/*`, `bin/*`).
|
|
16
|
-
- If `xyte-cli` is unavailable, ask the user to install `@
|
|
16
|
+
- If `xyte-cli` is unavailable, ask the user to install `@xyteai/cli` globally instead of improvising an entrypoint.
|
|
17
17
|
- Command option correctness:
|
|
18
18
|
- `xyte-cli tenant list` has no `--format`.
|
|
19
19
|
- `xyte-cli setup status` supports `--format json|text`.
|
|
20
|
+
- For fresh users in a new environment, verify readiness with:
|
|
21
|
+
- `xyte-cli doctor install --format json`
|
|
22
|
+
- `xyte-cli install --skills --scope both --agents all --force` (or the agent-specific install target)
|
|
23
|
+
- `xyte-cli setup run --non-interactive --tenant <tenant-id> --key <value>`
|
|
20
24
|
|
|
21
25
|
## Purpose and Trigger Conditions
|
|
22
26
|
|
|
@@ -46,6 +50,7 @@ Use when the request involves any of:
|
|
|
46
50
|
|
|
47
51
|
1. Setup/readiness:
|
|
48
52
|
- `xyte-cli doctor install --format json`
|
|
53
|
+
- `xyte-cli install --skills --scope both --agents all --force --no-setup`
|
|
49
54
|
- `xyte-cli setup status --tenant <tenant-id> --format json`
|
|
50
55
|
- `xyte-cli config doctor --tenant <tenant-id> --format json`
|
|
51
56
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Xyte Ops Agent"
|
|
3
3
|
short_description: "Deterministic Xyte CLI ops: first-run setup, guarded calls, inspect/report, headless JSON, MCP."
|
|
4
|
-
default_prompt: "Use $xyte-cli as the operational router for @
|
|
4
|
+
default_prompt: "Use $xyte-cli as the operational router for @xyteai/cli. Invoke commands directly with `xyte-cli` (do not use source/dev entrypoints like npx/tsx/src/dist/bin paths). For fresh installs use `xyte-cli install --skills`, then `xyte-cli setup run --non-interactive --tenant <tenant-id> --key <value>`; automation must pass `--tenant`, prefer JSON outputs, enforce `--allow-write` for non-read calls and `--confirm <endpoint-key>` for destructive calls, use `xyte-cli tui --headless --format json` for machine frames, and generate reports with `xyte-cli report generate` (PDF default, redacted unless include-sensitive is explicitly requested)."
|
|
@@ -72,11 +72,33 @@ xyte-cli call organization.devices.getHistories \
|
|
|
72
72
|
}'
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
+
## Concrete Write/Delete Examples
|
|
76
|
+
|
|
77
|
+
### `device.device-info.spaceMove` (write, guarded)
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
xyte-cli call device.device-info.spaceMove \
|
|
81
|
+
--tenant <tenant-id> \
|
|
82
|
+
--allow-write \
|
|
83
|
+
--path-json '{"device_id":"<device-id>","space_id":"<space-id>"}'
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### `organization.incidents.closeIncident` (destructive, guarded)
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
xyte-cli call organization.incidents.closeIncident \
|
|
90
|
+
--tenant <tenant-id> \
|
|
91
|
+
--allow-write \
|
|
92
|
+
--confirm organization.incidents.closeIncident \
|
|
93
|
+
--path-json '{"incident_id":"<incident-id>"}'
|
|
94
|
+
```
|
|
95
|
+
|
|
75
96
|
## Common Endpoint Keys
|
|
76
97
|
|
|
77
98
|
Organization:
|
|
78
99
|
- `organization.devices.getDevices`
|
|
79
100
|
- `organization.devices.getDevice`
|
|
101
|
+
- `organization.incidents.closeIncident`
|
|
80
102
|
- `organization.incidents.getIncidents`
|
|
81
103
|
- `organization.tickets.getTickets`
|
|
82
104
|
- `organization.commands.sendCommand`
|
|
@@ -88,6 +110,7 @@ Partner:
|
|
|
88
110
|
|
|
89
111
|
Device:
|
|
90
112
|
- `device.device-info.getDeviceInfo`
|
|
113
|
+
- `device.device-info.spaceMove`
|
|
91
114
|
- `device.telemetries.sendTelemetry`
|
|
92
115
|
- `device.device-info.setCloudSettings`
|
|
93
116
|
|
|
@@ -43,7 +43,7 @@ for screen in "${SCREENS[@]}"; do
|
|
|
43
43
|
if [[ -n "$TENANT_ID" ]]; then
|
|
44
44
|
output="$("${cmd[@]}")"
|
|
45
45
|
else
|
|
46
|
-
output="$(XYTE_CLI_CONFIG_DIR="$TMP_CFG"
|
|
46
|
+
output="$(XYTE_CLI_CONFIG_DIR="$TMP_CFG" "${cmd[@]}")"
|
|
47
47
|
fi
|
|
48
48
|
|
|
49
49
|
runtime_frame="$(printf '%s\n' "$output" | jq -c 'select((.meta.startup // false) | not)' | tail -n1)"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../src/secure/keychain.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACnF,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACvG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5F;AAgJD,qBAAa,cAAe,YAAW,aAAa;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IAE9C,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAItG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1F,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInF,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIlF,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAG7E;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,CAAC,CAgBlE"}
|
package/dist/secure/keychain.js
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MemoryKeychain = void 0;
|
|
4
|
-
exports.createKeychainStore = createKeychainStore;
|
|
5
|
-
const node_child_process_1 = require("node:child_process");
|
|
6
|
-
const node_util_1 = require("node:util");
|
|
7
|
-
const key_slots_1 = require("./key-slots");
|
|
8
|
-
const execFileAsync = (0, node_util_1.promisify)(node_child_process_1.execFile);
|
|
9
|
-
const SERVICE_NAME = '@xyte/cli';
|
|
10
|
-
function accountName(tenantId, provider, slotId) {
|
|
11
|
-
return `${tenantId}:${provider}:${slotId}`;
|
|
12
|
-
}
|
|
13
|
-
async function commandExists(command) {
|
|
14
|
-
try {
|
|
15
|
-
await execFileAsync('bash', ['-lc', `command -v ${command}`]);
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
catch {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
class DarwinSecurityKeychain {
|
|
23
|
-
async setSlotSecret(tenantId, provider, slotId, value) {
|
|
24
|
-
const account = accountName(tenantId, provider, slotId);
|
|
25
|
-
await execFileAsync('security', [
|
|
26
|
-
'add-generic-password',
|
|
27
|
-
'-a',
|
|
28
|
-
account,
|
|
29
|
-
'-s',
|
|
30
|
-
SERVICE_NAME,
|
|
31
|
-
'-w',
|
|
32
|
-
value,
|
|
33
|
-
'-U'
|
|
34
|
-
]);
|
|
35
|
-
}
|
|
36
|
-
async getSlotSecret(tenantId, provider, slotId) {
|
|
37
|
-
const account = accountName(tenantId, provider, slotId);
|
|
38
|
-
return this.readAccount(account);
|
|
39
|
-
}
|
|
40
|
-
async clearSlotSecret(tenantId, provider, slotId) {
|
|
41
|
-
await this.deleteAccount(accountName(tenantId, provider, slotId));
|
|
42
|
-
}
|
|
43
|
-
async setSecret(tenantId, provider, value) {
|
|
44
|
-
await this.setSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID, value);
|
|
45
|
-
}
|
|
46
|
-
async getSecret(tenantId, provider) {
|
|
47
|
-
return this.getSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID);
|
|
48
|
-
}
|
|
49
|
-
async clearSecret(tenantId, provider) {
|
|
50
|
-
await this.clearSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID);
|
|
51
|
-
}
|
|
52
|
-
async readAccount(account) {
|
|
53
|
-
try {
|
|
54
|
-
const { stdout } = await execFileAsync('security', [
|
|
55
|
-
'find-generic-password',
|
|
56
|
-
'-a',
|
|
57
|
-
account,
|
|
58
|
-
'-s',
|
|
59
|
-
SERVICE_NAME,
|
|
60
|
-
'-w'
|
|
61
|
-
]);
|
|
62
|
-
const value = stdout.trim();
|
|
63
|
-
return value || undefined;
|
|
64
|
-
}
|
|
65
|
-
catch {
|
|
66
|
-
return undefined;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
async deleteAccount(account) {
|
|
70
|
-
try {
|
|
71
|
-
await execFileAsync('security', ['delete-generic-password', '-a', account, '-s', SERVICE_NAME]);
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
// no-op if secret does not exist
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
class LinuxSecretToolKeychain {
|
|
79
|
-
async setSlotSecret(tenantId, provider, slotId, value) {
|
|
80
|
-
const account = accountName(tenantId, provider, slotId);
|
|
81
|
-
await new Promise((resolve, reject) => {
|
|
82
|
-
const child = (0, node_child_process_1.spawn)('secret-tool', ['store', '--label', SERVICE_NAME, 'service', SERVICE_NAME, 'account', account], {
|
|
83
|
-
stdio: ['pipe', 'ignore', 'pipe']
|
|
84
|
-
});
|
|
85
|
-
let stderr = '';
|
|
86
|
-
child.stderr.on('data', (chunk) => {
|
|
87
|
-
stderr += chunk.toString();
|
|
88
|
-
});
|
|
89
|
-
child.on('error', reject);
|
|
90
|
-
child.on('close', (code) => {
|
|
91
|
-
if (code === 0) {
|
|
92
|
-
resolve();
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
reject(new Error(stderr || `secret-tool exited with code ${code ?? -1}`));
|
|
96
|
-
});
|
|
97
|
-
child.stdin.write(value);
|
|
98
|
-
child.stdin.end();
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
async getSlotSecret(tenantId, provider, slotId) {
|
|
102
|
-
const account = accountName(tenantId, provider, slotId);
|
|
103
|
-
return this.lookupAccount(account);
|
|
104
|
-
}
|
|
105
|
-
async clearSlotSecret(tenantId, provider, slotId) {
|
|
106
|
-
await this.clearAccount(accountName(tenantId, provider, slotId));
|
|
107
|
-
}
|
|
108
|
-
async setSecret(tenantId, provider, value) {
|
|
109
|
-
await this.setSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID, value);
|
|
110
|
-
}
|
|
111
|
-
async getSecret(tenantId, provider) {
|
|
112
|
-
return this.getSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID);
|
|
113
|
-
}
|
|
114
|
-
async clearSecret(tenantId, provider) {
|
|
115
|
-
await this.clearSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID);
|
|
116
|
-
}
|
|
117
|
-
async lookupAccount(account) {
|
|
118
|
-
try {
|
|
119
|
-
const { stdout } = await execFileAsync('secret-tool', ['lookup', 'service', SERVICE_NAME, 'account', account]);
|
|
120
|
-
const value = stdout.trim();
|
|
121
|
-
return value || undefined;
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
return undefined;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
async clearAccount(account) {
|
|
128
|
-
try {
|
|
129
|
-
await execFileAsync('secret-tool', ['clear', 'service', SERVICE_NAME, 'account', account]);
|
|
130
|
-
}
|
|
131
|
-
catch {
|
|
132
|
-
// no-op
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
class MemoryKeychain {
|
|
137
|
-
values = new Map();
|
|
138
|
-
async setSlotSecret(tenantId, provider, slotId, value) {
|
|
139
|
-
this.values.set(accountName(tenantId, provider, slotId), value);
|
|
140
|
-
}
|
|
141
|
-
async getSlotSecret(tenantId, provider, slotId) {
|
|
142
|
-
return this.values.get(accountName(tenantId, provider, slotId));
|
|
143
|
-
}
|
|
144
|
-
async clearSlotSecret(tenantId, provider, slotId) {
|
|
145
|
-
this.values.delete(accountName(tenantId, provider, slotId));
|
|
146
|
-
}
|
|
147
|
-
async setSecret(tenantId, provider, value) {
|
|
148
|
-
await this.setSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID, value);
|
|
149
|
-
}
|
|
150
|
-
async getSecret(tenantId, provider) {
|
|
151
|
-
return this.getSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID);
|
|
152
|
-
}
|
|
153
|
-
async clearSecret(tenantId, provider) {
|
|
154
|
-
await this.clearSlotSecret(tenantId, provider, key_slots_1.DEFAULT_SLOT_ID);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
exports.MemoryKeychain = MemoryKeychain;
|
|
158
|
-
async function createKeychainStore() {
|
|
159
|
-
if (process.env.XYTE_CLI_KEYCHAIN_BACKEND === 'memory') {
|
|
160
|
-
return new MemoryKeychain();
|
|
161
|
-
}
|
|
162
|
-
if (process.platform === 'darwin') {
|
|
163
|
-
return new DarwinSecurityKeychain();
|
|
164
|
-
}
|
|
165
|
-
if (process.platform === 'linux' && (await commandExists('secret-tool'))) {
|
|
166
|
-
return new LinuxSecretToolKeychain();
|
|
167
|
-
}
|
|
168
|
-
throw new Error('No supported OS keychain backend found. Use macOS keychain, libsecret (secret-tool), or set XYTE_CLI_KEYCHAIN_BACKEND=memory for tests.');
|
|
169
|
-
}
|
|
170
|
-
//# sourceMappingURL=keychain.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/secure/keychain.ts"],"names":[],"mappings":"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"}
|