@enactprotocol/cli 2.0.0 → 2.0.1
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/auth/index.d.ts +12 -0
- package/dist/commands/auth/index.d.ts.map +1 -0
- package/dist/commands/auth/index.js +743 -0
- package/dist/commands/auth/index.js.map +1 -0
- package/dist/commands/cache/index.d.ts +11 -0
- package/dist/commands/cache/index.d.ts.map +1 -0
- package/dist/commands/cache/index.js +304 -0
- package/dist/commands/cache/index.js.map +1 -0
- package/dist/commands/config/index.d.ts +11 -0
- package/dist/commands/config/index.d.ts.map +1 -0
- package/dist/commands/config/index.js +138 -0
- package/dist/commands/config/index.js.map +1 -0
- package/dist/commands/env/index.d.ts +11 -0
- package/dist/commands/env/index.d.ts.map +1 -0
- package/dist/commands/env/index.js +303 -0
- package/dist/commands/env/index.js.map +1 -0
- package/dist/commands/exec/index.d.ts +12 -0
- package/dist/commands/exec/index.d.ts.map +1 -0
- package/dist/commands/exec/index.js +154 -0
- package/dist/commands/exec/index.js.map +1 -0
- package/dist/commands/get/index.d.ts +11 -0
- package/dist/commands/get/index.d.ts.map +1 -0
- package/dist/commands/get/index.js +151 -0
- package/dist/commands/get/index.js.map +1 -0
- package/dist/commands/index.d.ts +24 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +27 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/inspect/index.d.ts +13 -0
- package/dist/commands/inspect/index.d.ts.map +1 -0
- package/dist/commands/inspect/index.js +199 -0
- package/dist/commands/inspect/index.js.map +1 -0
- package/dist/commands/install/index.d.ts +16 -0
- package/dist/commands/install/index.d.ts.map +1 -0
- package/dist/commands/install/index.js +520 -0
- package/dist/commands/install/index.js.map +1 -0
- package/dist/commands/list/index.d.ts +15 -0
- package/dist/commands/list/index.d.ts.map +1 -0
- package/dist/commands/list/index.js +103 -0
- package/dist/commands/list/index.js.map +1 -0
- package/dist/commands/publish/index.d.ts +11 -0
- package/dist/commands/publish/index.d.ts.map +1 -0
- package/dist/commands/publish/index.js +274 -0
- package/dist/commands/publish/index.js.map +1 -0
- package/dist/commands/report/index.d.ts +12 -0
- package/dist/commands/report/index.d.ts.map +1 -0
- package/dist/commands/report/index.js +279 -0
- package/dist/commands/report/index.js.map +1 -0
- package/dist/commands/run/index.d.ts +16 -0
- package/dist/commands/run/index.d.ts.map +1 -0
- package/dist/commands/run/index.js +525 -0
- package/dist/commands/run/index.js.map +1 -0
- package/dist/commands/search/index.d.ts +12 -0
- package/dist/commands/search/index.d.ts.map +1 -0
- package/dist/commands/search/index.js +275 -0
- package/dist/commands/search/index.js.map +1 -0
- package/dist/commands/setup/index.d.ts +11 -0
- package/dist/commands/setup/index.d.ts.map +1 -0
- package/dist/commands/setup/index.js +241 -0
- package/dist/commands/setup/index.js.map +1 -0
- package/dist/commands/sign/index.d.ts +17 -0
- package/dist/commands/sign/index.d.ts.map +1 -0
- package/dist/commands/sign/index.js +507 -0
- package/dist/commands/sign/index.js.map +1 -0
- package/dist/commands/trust/index.d.ts +13 -0
- package/dist/commands/trust/index.d.ts.map +1 -0
- package/dist/commands/trust/index.js +366 -0
- package/dist/commands/trust/index.js.map +1 -0
- package/dist/commands/unyank/index.d.ts +11 -0
- package/dist/commands/unyank/index.d.ts.map +1 -0
- package/dist/commands/unyank/index.js +87 -0
- package/dist/commands/unyank/index.js.map +1 -0
- package/dist/commands/yank/index.d.ts +13 -0
- package/dist/commands/yank/index.d.ts.map +1 -0
- package/dist/commands/yank/index.js +109 -0
- package/dist/commands/yank/index.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +69 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +15 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/errors.d.ts +159 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +321 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/exit-codes.d.ts +83 -0
- package/dist/utils/exit-codes.d.ts.map +1 -0
- package/dist/utils/exit-codes.js +126 -0
- package/dist/utils/exit-codes.js.map +1 -0
- package/dist/utils/ignore.d.ts +25 -0
- package/dist/utils/ignore.d.ts.map +1 -0
- package/dist/utils/ignore.js +123 -0
- package/dist/utils/ignore.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/output.d.ts +103 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +201 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/spinner.d.ts +83 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +162 -0
- package/dist/utils/spinner.js.map +1 -0
- package/package.json +5 -5
- package/src/index.ts +4 -0
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* enact trust command
|
|
3
|
+
*
|
|
4
|
+
* Manage trusted identities for attestation verification.
|
|
5
|
+
* Uses a unified model: all trust is based on cryptographic attestations.
|
|
6
|
+
* Publishers who want their tools trusted should self-sign them.
|
|
7
|
+
*/
|
|
8
|
+
import { addTrustedAuditor as addTrustedAuditorToRegistry, createApiClient, getAttestationList, getMyTrustedAuditors, getToolVersion, removeTrustedAuditor as removeTrustedAuditorFromRegistry, verifyAllAttestations, } from "@enactprotocol/api";
|
|
9
|
+
import { getSecret } from "@enactprotocol/secrets";
|
|
10
|
+
import { addTrustedIdentity, getMinimumAttestations, getTrustPolicy, getTrustedIdentities, removeTrustedIdentity, } from "@enactprotocol/shared";
|
|
11
|
+
import { dim, error, formatError, header, info, json, keyValue, listItem, newline, success, warning, } from "../../utils";
|
|
12
|
+
/** Auth namespace for token storage */
|
|
13
|
+
const AUTH_NAMESPACE = "enact:auth";
|
|
14
|
+
const ACCESS_TOKEN_KEY = "access_token";
|
|
15
|
+
/**
|
|
16
|
+
* Validate identity format
|
|
17
|
+
* Must be provider:identity format (e.g., github:alice, google:user@example.com)
|
|
18
|
+
*/
|
|
19
|
+
function validateIdentity(identity) {
|
|
20
|
+
if (!identity.includes(":")) {
|
|
21
|
+
return {
|
|
22
|
+
valid: false,
|
|
23
|
+
error: "Invalid identity format. Use provider:identity format (e.g., github:alice, google:user@example.com)",
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const [provider, ...rest] = identity.split(":");
|
|
27
|
+
const id = rest.join(":"); // Handle cases like google:user@example.com
|
|
28
|
+
if (!provider || !id) {
|
|
29
|
+
return {
|
|
30
|
+
valid: false,
|
|
31
|
+
error: "Invalid identity format. Use provider:identity format (e.g., github:alice)",
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const validProviders = ["github", "google", "microsoft", "gitlab"];
|
|
35
|
+
if (!validProviders.includes(provider) && !provider.startsWith("http")) {
|
|
36
|
+
warning(`Unknown provider '${provider}'. Common providers: ${validProviders.join(", ")}`);
|
|
37
|
+
}
|
|
38
|
+
return { valid: true };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Add a trusted identity
|
|
42
|
+
*/
|
|
43
|
+
async function addTrust(identity, options, _ctx) {
|
|
44
|
+
// Validate identity format
|
|
45
|
+
const validation = validateIdentity(identity);
|
|
46
|
+
if (!validation.valid) {
|
|
47
|
+
error(validation.error);
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
// Add to local config
|
|
51
|
+
const added = addTrustedIdentity(identity);
|
|
52
|
+
if (added) {
|
|
53
|
+
success(`Added ${identity} to trusted identities`);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
info(`${identity} is already trusted`);
|
|
57
|
+
}
|
|
58
|
+
// Sync to registry if authenticated and --sync flag
|
|
59
|
+
if (options.sync) {
|
|
60
|
+
const authToken = await getSecret(AUTH_NAMESPACE, ACCESS_TOKEN_KEY);
|
|
61
|
+
if (authToken) {
|
|
62
|
+
const client = createApiClient();
|
|
63
|
+
client.setAuthToken(authToken);
|
|
64
|
+
try {
|
|
65
|
+
await addTrustedAuditorToRegistry(client, identity);
|
|
66
|
+
success(`Synced ${identity} to registry`);
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
warning(`Failed to sync to registry: ${formatError(err)}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
dim("Not authenticated - skipping registry sync");
|
|
74
|
+
dim("Run 'enact auth login' to enable registry sync");
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (options.json) {
|
|
78
|
+
json({ added: true, identity });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Remove a trusted identity
|
|
83
|
+
*/
|
|
84
|
+
async function removeTrust(identity, options, _ctx) {
|
|
85
|
+
// Remove from local config
|
|
86
|
+
const removed = removeTrustedIdentity(identity);
|
|
87
|
+
if (removed) {
|
|
88
|
+
success(`Removed ${identity} from trusted identities`);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
info(`${identity} was not in trusted list`);
|
|
92
|
+
}
|
|
93
|
+
// Sync to registry if authenticated and --sync flag
|
|
94
|
+
if (options.sync) {
|
|
95
|
+
const authToken = await getSecret(AUTH_NAMESPACE, ACCESS_TOKEN_KEY);
|
|
96
|
+
if (authToken) {
|
|
97
|
+
const client = createApiClient();
|
|
98
|
+
client.setAuthToken(authToken);
|
|
99
|
+
try {
|
|
100
|
+
await removeTrustedAuditorFromRegistry(client, identity);
|
|
101
|
+
success(`Removed ${identity} from registry`);
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
warning(`Failed to sync to registry: ${formatError(err)}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
dim("Not authenticated - skipping registry sync");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (options.json) {
|
|
112
|
+
json({ removed: true, identity });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Trust command handler (add or remove)
|
|
117
|
+
*/
|
|
118
|
+
async function trustHandler(identity, options, ctx) {
|
|
119
|
+
if (options.remove) {
|
|
120
|
+
return removeTrust(identity, options, ctx);
|
|
121
|
+
}
|
|
122
|
+
return addTrust(identity, options, ctx);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* List trusted identities
|
|
126
|
+
*/
|
|
127
|
+
async function trustListHandler(options, _ctx) {
|
|
128
|
+
const auditors = getTrustedIdentities();
|
|
129
|
+
const policy = getTrustPolicy();
|
|
130
|
+
const minimumAttestations = getMinimumAttestations();
|
|
131
|
+
// Get remote identities if authenticated and --sync flag
|
|
132
|
+
let remoteIdentities = [];
|
|
133
|
+
if (options.sync) {
|
|
134
|
+
const authToken = await getSecret(AUTH_NAMESPACE, ACCESS_TOKEN_KEY);
|
|
135
|
+
if (authToken) {
|
|
136
|
+
const client = createApiClient();
|
|
137
|
+
client.setAuthToken(authToken);
|
|
138
|
+
try {
|
|
139
|
+
remoteIdentities = await getMyTrustedAuditors(client);
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
warning(`Failed to fetch remote trust config: ${formatError(err)}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
dim("Not authenticated - showing local config only");
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (options.json) {
|
|
150
|
+
json({
|
|
151
|
+
identities: auditors,
|
|
152
|
+
remoteIdentities: options.sync ? remoteIdentities : undefined,
|
|
153
|
+
policy,
|
|
154
|
+
minimum_attestations: minimumAttestations,
|
|
155
|
+
});
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
header("Trusted Identities (Local)");
|
|
159
|
+
newline();
|
|
160
|
+
if (auditors.length === 0) {
|
|
161
|
+
dim(" No trusted identities configured");
|
|
162
|
+
dim(" Add with: enact trust provider:identity");
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
for (const identity of auditors) {
|
|
166
|
+
listItem(identity, 2);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (options.sync && remoteIdentities.length > 0) {
|
|
170
|
+
newline();
|
|
171
|
+
header("Trusted Identities (Registry)");
|
|
172
|
+
newline();
|
|
173
|
+
for (const identity of remoteIdentities) {
|
|
174
|
+
listItem(identity, 2);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
newline();
|
|
178
|
+
dim(`Policy: ${policy}`);
|
|
179
|
+
dim(`Minimum attestations: ${minimumAttestations}`);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Parse tool@version syntax
|
|
183
|
+
*/
|
|
184
|
+
function parseToolSpec(spec) {
|
|
185
|
+
const atIndex = spec.lastIndexOf("@");
|
|
186
|
+
if (atIndex === -1 || atIndex === 0) {
|
|
187
|
+
return { name: spec, version: undefined };
|
|
188
|
+
}
|
|
189
|
+
return {
|
|
190
|
+
name: spec.slice(0, atIndex),
|
|
191
|
+
version: spec.slice(atIndex + 1),
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Check trust status of a tool
|
|
196
|
+
*/
|
|
197
|
+
async function trustCheckHandler(tool, options, _ctx) {
|
|
198
|
+
const { name, version } = parseToolSpec(tool);
|
|
199
|
+
if (!version) {
|
|
200
|
+
error("Please specify a version: tool-name@version");
|
|
201
|
+
process.exit(1);
|
|
202
|
+
}
|
|
203
|
+
const trustedIdentities = getTrustedIdentities();
|
|
204
|
+
const client = createApiClient();
|
|
205
|
+
const trustedBy = [];
|
|
206
|
+
let verifiedAuditors = [];
|
|
207
|
+
let allAttestors = [];
|
|
208
|
+
let bundleHash = "";
|
|
209
|
+
try {
|
|
210
|
+
// Fetch tool version info to get bundle hash
|
|
211
|
+
const toolVersion = await getToolVersion(client, name, version);
|
|
212
|
+
bundleHash = toolVersion.bundle?.hash ?? "";
|
|
213
|
+
if (!bundleHash) {
|
|
214
|
+
warning("Cannot verify attestations: tool bundle hash not found");
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
// Fetch attestations from registry
|
|
218
|
+
const attestationsResponse = await getAttestationList(client, name, version);
|
|
219
|
+
const attestations = attestationsResponse.attestations;
|
|
220
|
+
// Collect all attestors
|
|
221
|
+
allAttestors = attestations.map((att) => att.auditor);
|
|
222
|
+
if (attestations.length > 0) {
|
|
223
|
+
// Verify all attestations locally (never trust registry's verification status)
|
|
224
|
+
const verifiedResults = await verifyAllAttestations(client, name, version, bundleHash);
|
|
225
|
+
// Update verifiedAuditors with the new format
|
|
226
|
+
verifiedAuditors = verifiedResults.map((a) => a.providerIdentity);
|
|
227
|
+
// Check which verified auditors are trusted
|
|
228
|
+
for (const result of verifiedResults) {
|
|
229
|
+
if (trustedIdentities.includes(result.providerIdentity)) {
|
|
230
|
+
trustedBy.push(result.providerIdentity);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
if (options.json) {
|
|
238
|
+
json({
|
|
239
|
+
tool: name,
|
|
240
|
+
version,
|
|
241
|
+
trusted: false,
|
|
242
|
+
error: formatError(err),
|
|
243
|
+
});
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
warning(`Failed to check attestations: ${formatError(err)}`);
|
|
247
|
+
}
|
|
248
|
+
const trusted = trustedBy.length > 0;
|
|
249
|
+
const hasAnyAttestation = allAttestors.length > 0;
|
|
250
|
+
const verifiedCount = verifiedAuditors.length;
|
|
251
|
+
if (options.json) {
|
|
252
|
+
json({
|
|
253
|
+
tool: name,
|
|
254
|
+
version,
|
|
255
|
+
trusted,
|
|
256
|
+
trustedBy,
|
|
257
|
+
verifiedAuditors,
|
|
258
|
+
totalAttestations: allAttestors.length,
|
|
259
|
+
verifiedAttestations: verifiedCount,
|
|
260
|
+
checkedIdentities: trustedIdentities.length,
|
|
261
|
+
});
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
header(`Trust Status: ${name}@${version}`);
|
|
265
|
+
newline();
|
|
266
|
+
if (trusted) {
|
|
267
|
+
success("✓ Trusted");
|
|
268
|
+
keyValue("Verified by trusted identity(ies)", trustedBy.join(", "));
|
|
269
|
+
}
|
|
270
|
+
else if (hasAnyAttestation) {
|
|
271
|
+
warning("⚠ Not trusted by any configured identities");
|
|
272
|
+
if (verifiedCount > 0) {
|
|
273
|
+
keyValue("Verified attestations", verifiedAuditors.join(", "));
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
warning("⚠ No attestations found");
|
|
278
|
+
}
|
|
279
|
+
newline();
|
|
280
|
+
dim(`Total attestations: ${allAttestors.length}`);
|
|
281
|
+
dim(`Cryptographically verified: ${verifiedCount}`);
|
|
282
|
+
dim(`Trusted identities configured: ${trustedIdentities.length}`);
|
|
283
|
+
if (!trusted && verifiedCount > 0) {
|
|
284
|
+
newline();
|
|
285
|
+
info("To trust this tool, add one of the verified identities:");
|
|
286
|
+
for (const identity of verifiedAuditors.slice(0, 3)) {
|
|
287
|
+
dim(` enact trust ${identity}`);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Configure the trust command
|
|
293
|
+
*/
|
|
294
|
+
export function configureTrustCommand(program) {
|
|
295
|
+
const trust = program
|
|
296
|
+
.command("trust")
|
|
297
|
+
.description("Manage trusted publishers and auditors")
|
|
298
|
+
.argument("[identity]", "Identity to trust (format: provider:identity, e.g., github:alice)")
|
|
299
|
+
.option("-r, --remove", "Remove from trusted list instead of adding")
|
|
300
|
+
.option("-s, --sync", "Sync with registry (requires authentication)")
|
|
301
|
+
.option("--json", "Output as JSON")
|
|
302
|
+
.action(async (identity, options) => {
|
|
303
|
+
const ctx = {
|
|
304
|
+
cwd: process.cwd(),
|
|
305
|
+
options,
|
|
306
|
+
isCI: Boolean(process.env.CI),
|
|
307
|
+
isInteractive: process.stdout.isTTY ?? false,
|
|
308
|
+
};
|
|
309
|
+
try {
|
|
310
|
+
if (!identity) {
|
|
311
|
+
// No identity provided, show list
|
|
312
|
+
await trustListHandler(options, ctx);
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
await trustHandler(identity, options, ctx);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
catch (err) {
|
|
319
|
+
error(formatError(err));
|
|
320
|
+
process.exit(1);
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
// trust list
|
|
324
|
+
trust
|
|
325
|
+
.command("list")
|
|
326
|
+
.description("List all trusted identities")
|
|
327
|
+
.option("-s, --sync", "Also show registry trust config (requires authentication)")
|
|
328
|
+
.option("--json", "Output as JSON")
|
|
329
|
+
.action(async (options) => {
|
|
330
|
+
const ctx = {
|
|
331
|
+
cwd: process.cwd(),
|
|
332
|
+
options,
|
|
333
|
+
isCI: Boolean(process.env.CI),
|
|
334
|
+
isInteractive: process.stdout.isTTY ?? false,
|
|
335
|
+
};
|
|
336
|
+
try {
|
|
337
|
+
await trustListHandler(options, ctx);
|
|
338
|
+
}
|
|
339
|
+
catch (err) {
|
|
340
|
+
error(formatError(err));
|
|
341
|
+
process.exit(1);
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
// trust check
|
|
345
|
+
trust
|
|
346
|
+
.command("check")
|
|
347
|
+
.description("Check trust status of a tool")
|
|
348
|
+
.argument("<tool>", "Tool to check (name@version)")
|
|
349
|
+
.option("--json", "Output as JSON")
|
|
350
|
+
.action(async (tool, options) => {
|
|
351
|
+
const ctx = {
|
|
352
|
+
cwd: process.cwd(),
|
|
353
|
+
options,
|
|
354
|
+
isCI: Boolean(process.env.CI),
|
|
355
|
+
isInteractive: process.stdout.isTTY ?? false,
|
|
356
|
+
};
|
|
357
|
+
try {
|
|
358
|
+
await trustCheckHandler(tool, options, ctx);
|
|
359
|
+
}
|
|
360
|
+
catch (err) {
|
|
361
|
+
error(formatError(err));
|
|
362
|
+
process.exit(1);
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/trust/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* enact unyank command
|
|
3
|
+
*
|
|
4
|
+
* Restore a previously yanked tool version.
|
|
5
|
+
*/
|
|
6
|
+
import type { Command } from "commander";
|
|
7
|
+
/**
|
|
8
|
+
* Configure the unyank command
|
|
9
|
+
*/
|
|
10
|
+
export declare function configureUnyankCommand(program: Command): void;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/unyank/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0EzC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqB7D"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* enact unyank command
|
|
3
|
+
*
|
|
4
|
+
* Restore a previously yanked tool version.
|
|
5
|
+
*/
|
|
6
|
+
import { createApiClient, unyankVersion } from "@enactprotocol/api";
|
|
7
|
+
import { getSecret } from "@enactprotocol/secrets";
|
|
8
|
+
import { dim, error, formatError, info, json, keyValue, newline, success } from "../../utils";
|
|
9
|
+
/** Auth namespace for token storage */
|
|
10
|
+
const AUTH_NAMESPACE = "enact:auth";
|
|
11
|
+
const ACCESS_TOKEN_KEY = "access_token";
|
|
12
|
+
/**
|
|
13
|
+
* Parse tool@version syntax
|
|
14
|
+
*/
|
|
15
|
+
function parseToolSpec(spec) {
|
|
16
|
+
const atIndex = spec.lastIndexOf("@");
|
|
17
|
+
if (atIndex === -1 || atIndex === 0) {
|
|
18
|
+
throw new Error(`Invalid tool specification: ${spec}\nExpected format: tool-name@version (e.g., alice/utils/greeter@1.0.0)`);
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
name: spec.slice(0, atIndex),
|
|
22
|
+
version: spec.slice(atIndex + 1),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Unyank command handler
|
|
27
|
+
*/
|
|
28
|
+
async function unyankHandler(toolSpec, options, _ctx) {
|
|
29
|
+
// Parse tool@version
|
|
30
|
+
const { name, version } = parseToolSpec(toolSpec);
|
|
31
|
+
// Check for auth token
|
|
32
|
+
const authToken = await getSecret(AUTH_NAMESPACE, ACCESS_TOKEN_KEY);
|
|
33
|
+
if (!authToken) {
|
|
34
|
+
error("Not authenticated. Please run: enact auth login");
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
const client = createApiClient();
|
|
38
|
+
client.setAuthToken(authToken);
|
|
39
|
+
info(`Restoring ${name}@${version}...`);
|
|
40
|
+
newline();
|
|
41
|
+
try {
|
|
42
|
+
const result = await unyankVersion(client, name, version);
|
|
43
|
+
if (options.json) {
|
|
44
|
+
json({
|
|
45
|
+
yanked: result.yanked,
|
|
46
|
+
name,
|
|
47
|
+
version: result.version,
|
|
48
|
+
unyankedAt: result.unyankedAt.toISOString(),
|
|
49
|
+
});
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
success(`Restored ${name}@${version}`);
|
|
53
|
+
keyValue("Unyanked At", result.unyankedAt.toISOString());
|
|
54
|
+
newline();
|
|
55
|
+
dim("The version is now visible in version listings again.");
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
error(`Failed to restore version: ${formatError(err)}`);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Configure the unyank command
|
|
64
|
+
*/
|
|
65
|
+
export function configureUnyankCommand(program) {
|
|
66
|
+
program
|
|
67
|
+
.command("unyank <tool@version>")
|
|
68
|
+
.description("Restore a previously yanked tool version")
|
|
69
|
+
.option("-v, --verbose", "Show detailed output")
|
|
70
|
+
.option("--json", "Output as JSON")
|
|
71
|
+
.action(async (toolSpec, options) => {
|
|
72
|
+
const ctx = {
|
|
73
|
+
cwd: process.cwd(),
|
|
74
|
+
options,
|
|
75
|
+
isCI: Boolean(process.env.CI),
|
|
76
|
+
isInteractive: process.stdout.isTTY ?? false,
|
|
77
|
+
};
|
|
78
|
+
try {
|
|
79
|
+
await unyankHandler(toolSpec, options, ctx);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
error(formatError(err));
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/unyank/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE9F,uCAAuC;AACvC,MAAM,cAAc,GAAG,YAAY,CAAC;AACpC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAIxC;;GAEG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,+BAA+B,IAAI,wEAAwE,CAC5G,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;QAC5B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,QAAgB,EAChB,OAAsB,EACtB,IAAoB;IAEpB,qBAAqB;IACrB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAElD,uBAAuB;IACvB,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IACpE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAE/B,IAAI,CAAC,aAAa,IAAI,IAAI,OAAO,KAAK,CAAC,CAAC;IACxC,OAAO,EAAE,CAAC;IAEV,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE1D,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI;gBACJ,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE;aAC5C,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,OAAO,CAAC,YAAY,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;QACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,OAAO,EAAE,CAAC;QACV,GAAG,CAAC,uDAAuD,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,8BAA8B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,uBAAuB,CAAC;SAChC,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;SAC/C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,OAAsB,EAAE,EAAE;QACzD,MAAM,GAAG,GAAmB;YAC1B,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,OAAO;YACP,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK;SAC7C,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* enact yank command
|
|
3
|
+
*
|
|
4
|
+
* Yank a published tool version from the registry.
|
|
5
|
+
* Yanked versions remain downloadable but are excluded from version listings
|
|
6
|
+
* and show warnings to users.
|
|
7
|
+
*/
|
|
8
|
+
import type { Command } from "commander";
|
|
9
|
+
/**
|
|
10
|
+
* Configure the yank command
|
|
11
|
+
*/
|
|
12
|
+
export declare function configureYankCommand(program: Command): void;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/yank/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0GzC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuB3D"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* enact yank command
|
|
3
|
+
*
|
|
4
|
+
* Yank a published tool version from the registry.
|
|
5
|
+
* Yanked versions remain downloadable but are excluded from version listings
|
|
6
|
+
* and show warnings to users.
|
|
7
|
+
*/
|
|
8
|
+
import { createApiClient, yankVersion } from "@enactprotocol/api";
|
|
9
|
+
import { getSecret } from "@enactprotocol/secrets";
|
|
10
|
+
import { dim, error, formatError, info, json, keyValue, newline, success, warning, } from "../../utils";
|
|
11
|
+
/** Auth namespace for token storage */
|
|
12
|
+
const AUTH_NAMESPACE = "enact:auth";
|
|
13
|
+
const ACCESS_TOKEN_KEY = "access_token";
|
|
14
|
+
/**
|
|
15
|
+
* Parse tool@version syntax
|
|
16
|
+
*/
|
|
17
|
+
function parseToolSpec(spec) {
|
|
18
|
+
const atIndex = spec.lastIndexOf("@");
|
|
19
|
+
if (atIndex === -1 || atIndex === 0) {
|
|
20
|
+
throw new Error(`Invalid tool specification: ${spec}\nExpected format: tool-name@version (e.g., alice/utils/greeter@1.0.0)`);
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
name: spec.slice(0, atIndex),
|
|
24
|
+
version: spec.slice(atIndex + 1),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Yank command handler
|
|
29
|
+
*/
|
|
30
|
+
async function yankHandler(toolSpec, options, _ctx) {
|
|
31
|
+
// Parse tool@version
|
|
32
|
+
const { name, version } = parseToolSpec(toolSpec);
|
|
33
|
+
// Check for auth token
|
|
34
|
+
const authToken = await getSecret(AUTH_NAMESPACE, ACCESS_TOKEN_KEY);
|
|
35
|
+
if (!authToken) {
|
|
36
|
+
error("Not authenticated. Please run: enact auth login");
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
const client = createApiClient();
|
|
40
|
+
client.setAuthToken(authToken);
|
|
41
|
+
info(`Yanking ${name}@${version}...`);
|
|
42
|
+
if (options.reason) {
|
|
43
|
+
dim(`Reason: ${options.reason}`);
|
|
44
|
+
}
|
|
45
|
+
if (options.replacement) {
|
|
46
|
+
dim(`Replacement: ${options.replacement}`);
|
|
47
|
+
}
|
|
48
|
+
newline();
|
|
49
|
+
try {
|
|
50
|
+
const result = await yankVersion(client, name, version, {
|
|
51
|
+
reason: options.reason,
|
|
52
|
+
replacementVersion: options.replacement,
|
|
53
|
+
});
|
|
54
|
+
if (options.json) {
|
|
55
|
+
json({
|
|
56
|
+
yanked: result.yanked,
|
|
57
|
+
name,
|
|
58
|
+
version: result.version,
|
|
59
|
+
reason: result.reason,
|
|
60
|
+
replacementVersion: result.replacementVersion,
|
|
61
|
+
yankedAt: result.yankedAt.toISOString(),
|
|
62
|
+
});
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
success(`Yanked ${name}@${version}`);
|
|
66
|
+
keyValue("Yanked At", result.yankedAt.toISOString());
|
|
67
|
+
if (result.reason) {
|
|
68
|
+
keyValue("Reason", result.reason);
|
|
69
|
+
}
|
|
70
|
+
if (result.replacementVersion) {
|
|
71
|
+
keyValue("Replacement", result.replacementVersion);
|
|
72
|
+
}
|
|
73
|
+
newline();
|
|
74
|
+
warning("Note: Yanked versions can still be downloaded but show warnings.");
|
|
75
|
+
dim("Use 'enact unyank' to restore the version.");
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
error(`Failed to yank version: ${formatError(err)}`);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Configure the yank command
|
|
84
|
+
*/
|
|
85
|
+
export function configureYankCommand(program) {
|
|
86
|
+
program
|
|
87
|
+
.command("yank <tool@version>")
|
|
88
|
+
.description("Yank a published tool version from the registry")
|
|
89
|
+
.option("-r, --reason <reason>", "Reason for yanking (e.g., security issue)")
|
|
90
|
+
.option("--replacement <version>", "Recommend a replacement version (e.g., 1.2.1)")
|
|
91
|
+
.option("-v, --verbose", "Show detailed output")
|
|
92
|
+
.option("--json", "Output as JSON")
|
|
93
|
+
.action(async (toolSpec, options) => {
|
|
94
|
+
const ctx = {
|
|
95
|
+
cwd: process.cwd(),
|
|
96
|
+
options,
|
|
97
|
+
isCI: Boolean(process.env.CI),
|
|
98
|
+
isInteractive: process.stdout.isTTY ?? false,
|
|
99
|
+
};
|
|
100
|
+
try {
|
|
101
|
+
await yankHandler(toolSpec, options, ctx);
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
error(formatError(err));
|
|
105
|
+
process.exit(1);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/yank/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
/**
|
|
3
|
+
* @enactprotocol/cli
|
|
4
|
+
*
|
|
5
|
+
* Command-line interface for Enact.
|
|
6
|
+
* User-facing commands for tool execution, discovery, and management.
|
|
7
|
+
*/
|
|
8
|
+
export declare const version = "0.1.0";
|
|
9
|
+
export type { GlobalOptions, CommandContext } from "./types";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AA0BH,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC"}
|