@enactprotocol/cli 2.1.7 → 2.1.14

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.
Files changed (55) hide show
  1. package/dist/commands/auth/index.js +1 -1
  2. package/dist/commands/auth/index.js.map +1 -1
  3. package/dist/commands/index.d.ts +2 -1
  4. package/dist/commands/index.d.ts.map +1 -1
  5. package/dist/commands/index.js +3 -1
  6. package/dist/commands/index.js.map +1 -1
  7. package/dist/commands/info/index.d.ts +11 -0
  8. package/dist/commands/info/index.d.ts.map +1 -0
  9. package/dist/commands/info/index.js +232 -0
  10. package/dist/commands/info/index.js.map +1 -0
  11. package/dist/commands/init/index.d.ts.map +1 -1
  12. package/dist/commands/init/index.js +17 -14
  13. package/dist/commands/init/index.js.map +1 -1
  14. package/dist/commands/learn/index.d.ts +4 -0
  15. package/dist/commands/learn/index.d.ts.map +1 -1
  16. package/dist/commands/learn/index.js +159 -5
  17. package/dist/commands/learn/index.js.map +1 -1
  18. package/dist/commands/mcp/index.d.ts +20 -0
  19. package/dist/commands/mcp/index.d.ts.map +1 -0
  20. package/dist/commands/mcp/index.js +460 -0
  21. package/dist/commands/mcp/index.js.map +1 -0
  22. package/dist/commands/publish/index.d.ts +2 -0
  23. package/dist/commands/publish/index.d.ts.map +1 -1
  24. package/dist/commands/publish/index.js +32 -8
  25. package/dist/commands/publish/index.js.map +1 -1
  26. package/dist/commands/sign/index.d.ts +2 -1
  27. package/dist/commands/sign/index.d.ts.map +1 -1
  28. package/dist/commands/sign/index.js +75 -17
  29. package/dist/commands/sign/index.js.map +1 -1
  30. package/dist/commands/visibility/index.d.ts +11 -0
  31. package/dist/commands/visibility/index.d.ts.map +1 -0
  32. package/dist/commands/visibility/index.js +117 -0
  33. package/dist/commands/visibility/index.js.map +1 -0
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +5 -3
  37. package/dist/index.js.map +1 -1
  38. package/package.json +5 -5
  39. package/src/commands/auth/index.ts +1 -1
  40. package/src/commands/index.ts +4 -1
  41. package/src/commands/{get → info}/index.ts +103 -16
  42. package/src/commands/init/index.ts +17 -14
  43. package/src/commands/learn/index.ts +228 -5
  44. package/src/commands/publish/index.ts +37 -8
  45. package/src/commands/sign/index.ts +93 -18
  46. package/src/commands/visibility/index.ts +154 -0
  47. package/src/index.ts +7 -3
  48. package/tests/commands/{get.test.ts → info.test.ts} +35 -33
  49. package/tests/commands/init.test.ts +6 -6
  50. package/tests/commands/learn.test.ts +2 -2
  51. package/tests/commands/publish.test.ts +50 -0
  52. package/tests/commands/visibility.test.ts +156 -0
  53. package/tests/e2e.test.ts +1 -1
  54. package/tsconfig.tsbuildinfo +1 -1
  55. /package/tests/fixtures/echo-tool/{enact.md → SKILL.md} +0 -0
@@ -3,19 +3,74 @@
3
3
  *
4
4
  * Display the documentation (enact.md) for a tool.
5
5
  * Fetches and displays the raw manifest content for easy reading.
6
+ *
7
+ * Security: For tools fetched from the registry, attestation checks are
8
+ * performed according to the trust policy. This prevents potentially
9
+ * malicious documentation from being displayed to LLMs or users.
6
10
  */
7
- import { createApiClient, getToolInfo, getToolVersion } from "@enactprotocol/api";
8
- import { loadConfig } from "@enactprotocol/shared";
9
- import { dim, error, formatError, header, json, newline } from "../../utils";
11
+ import { createApiClient, getAttestationList, getToolInfo, getToolVersion, verifyAllAttestations, } from "@enactprotocol/api";
12
+ import { getMinimumAttestations, getTrustPolicy, getTrustedAuditors, loadConfig, tryResolveTool, } from "@enactprotocol/shared";
13
+ import { TrustError, confirm, dim, error, formatError, header, info, json, newline, success, symbols, } from "../../utils";
10
14
  /**
11
15
  * Learn command handler
12
16
  */
13
- async function learnHandler(toolName, options, _ctx) {
17
+ async function learnHandler(toolName, options, ctx) {
18
+ // First, try to resolve locally (project → user → cache)
19
+ // If the tool is already installed/cached, we trust it
20
+ const resolution = tryResolveTool(toolName, { startDir: ctx.cwd });
21
+ if (resolution) {
22
+ // Tool is installed locally - read documentation from the manifest file
23
+ if (resolution.manifestPath.endsWith(".md")) {
24
+ const { readFileSync } = await import("node:fs");
25
+ const content = readFileSync(resolution.manifestPath, "utf-8");
26
+ if (options.json) {
27
+ json({
28
+ name: toolName,
29
+ version: resolution.manifest.version,
30
+ documentation: content,
31
+ source: "local",
32
+ });
33
+ return;
34
+ }
35
+ header(`${toolName}@${resolution.manifest.version ?? "local"}`);
36
+ dim("(installed locally)");
37
+ newline();
38
+ console.log(content);
39
+ return;
40
+ }
41
+ // Fallback for non-.md manifests
42
+ if (options.json) {
43
+ json({
44
+ name: toolName,
45
+ version: resolution.manifest.version,
46
+ documentation: resolution.manifest.doc ?? resolution.manifest.description ?? null,
47
+ source: "local",
48
+ });
49
+ return;
50
+ }
51
+ header(`${toolName}@${resolution.manifest.version ?? "local"}`);
52
+ dim("(installed locally)");
53
+ newline();
54
+ console.log(resolution.manifest.doc ?? resolution.manifest.description ?? "No documentation available.");
55
+ return;
56
+ }
57
+ // If --local flag is set, don't fetch from registry
58
+ if (options.local) {
59
+ error(`Tool not found locally: ${toolName}`);
60
+ dim("The tool is not installed. Remove --local to fetch from registry.");
61
+ process.exit(1);
62
+ }
63
+ // Tool not installed - fetch from registry with attestation checks
14
64
  const config = loadConfig();
15
65
  const registryUrl = process.env.ENACT_REGISTRY_URL ??
16
66
  config.registry?.url ??
17
67
  "https://siikwkfgsmouioodghho.supabase.co/functions/v1";
18
- const authToken = config.registry?.authToken;
68
+ // Get auth token - use user token if available, otherwise use anon key for public access
69
+ let authToken = config.registry?.authToken ?? process.env.ENACT_AUTH_TOKEN;
70
+ if (!authToken && registryUrl.includes("siikwkfgsmouioodghho.supabase.co")) {
71
+ authToken =
72
+ "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InNpaWt3a2Znc21vdWlvb2RnaGhvIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjQ2MTkzMzksImV4cCI6MjA4MDE5NTMzOX0.kxnx6-IPFhmGx6rzNx36vbyhFMFZKP_jFqaDbKnJ_E0";
73
+ }
19
74
  const client = createApiClient({
20
75
  baseUrl: registryUrl,
21
76
  authToken: authToken,
@@ -27,13 +82,106 @@ async function learnHandler(toolName, options, _ctx) {
27
82
  const toolInfo = await getToolInfo(client, toolName);
28
83
  version = toolInfo.latestVersion;
29
84
  }
85
+ if (!version) {
86
+ error(`No published versions for ${toolName}`);
87
+ process.exit(1);
88
+ }
30
89
  // Get the version info which includes rawManifest
31
90
  const versionInfo = await getToolVersion(client, toolName, version);
91
+ // ========================================
92
+ // TRUST VERIFICATION - same as run command
93
+ // ========================================
94
+ const trustPolicy = getTrustPolicy();
95
+ const minimumAttestations = getMinimumAttestations();
96
+ const trustedAuditors = getTrustedAuditors();
97
+ // Fetch attestations from registry
98
+ const attestationsResponse = await getAttestationList(client, toolName, version);
99
+ const attestations = attestationsResponse.attestations;
100
+ if (attestations.length === 0) {
101
+ // No attestations found
102
+ info(`${symbols.warning} Tool ${toolName}@${version} has no attestations.`);
103
+ if (trustPolicy === "require_attestation") {
104
+ throw new TrustError("Trust policy requires attestations. Cannot display documentation from unverified tools.");
105
+ }
106
+ if (ctx.isInteractive && trustPolicy === "prompt") {
107
+ dim("Documentation from unverified tools may contain malicious content.");
108
+ const proceed = await confirm("View documentation from unverified tool?");
109
+ if (!proceed) {
110
+ info("Cancelled.");
111
+ process.exit(0);
112
+ }
113
+ }
114
+ else if (!ctx.isInteractive && trustPolicy === "prompt") {
115
+ throw new TrustError("Cannot display documentation from unverified tools in non-interactive mode.");
116
+ }
117
+ // trustPolicy === "allow" - continue without prompting
118
+ }
119
+ else {
120
+ // Verify attestations locally (never trust registry's verification status)
121
+ const verifiedAuditors = await verifyAllAttestations(client, toolName, version, versionInfo.bundle.hash ?? "");
122
+ // Check verified auditors against trust config using provider:identity format
123
+ const trustedVerifiedAuditors = verifiedAuditors
124
+ .filter((auditor) => trustedAuditors.includes(auditor.providerIdentity))
125
+ .map((auditor) => auditor.providerIdentity);
126
+ if (trustedVerifiedAuditors.length > 0) {
127
+ // Check if we meet minimum attestations threshold
128
+ if (trustedVerifiedAuditors.length < minimumAttestations) {
129
+ info(`${symbols.warning} Tool ${toolName}@${version} has ${trustedVerifiedAuditors.length} trusted attestation(s), but ${minimumAttestations} required.`);
130
+ dim(`Trusted attestations: ${trustedVerifiedAuditors.join(", ")}`);
131
+ if (trustPolicy === "require_attestation") {
132
+ throw new TrustError(`Trust policy requires at least ${minimumAttestations} attestation(s) from trusted identities.`);
133
+ }
134
+ if (ctx.isInteractive && trustPolicy === "prompt") {
135
+ const proceed = await confirm("View documentation with fewer attestations than required?");
136
+ if (!proceed) {
137
+ info("Cancelled.");
138
+ process.exit(0);
139
+ }
140
+ }
141
+ else if (!ctx.isInteractive && trustPolicy === "prompt") {
142
+ throw new TrustError("Cannot display documentation without meeting minimum attestation requirement in non-interactive mode.");
143
+ }
144
+ // trustPolicy === "allow" - continue without prompting
145
+ }
146
+ else {
147
+ // Tool meets or exceeds minimum attestations
148
+ if (options.verbose) {
149
+ success(`Tool verified by ${trustedVerifiedAuditors.length} trusted identity(ies): ${trustedVerifiedAuditors.join(", ")}`);
150
+ }
151
+ }
152
+ }
153
+ else {
154
+ // Has attestations but none from trusted auditors
155
+ info(`${symbols.warning} Tool ${toolName}@${version} has ${verifiedAuditors.length} attestation(s), but none from trusted auditors.`);
156
+ if (trustPolicy === "require_attestation") {
157
+ dim(`Your trusted auditors: ${trustedAuditors.join(", ")}`);
158
+ dim(`Tool attested by: ${verifiedAuditors.map((a) => a.providerIdentity).join(", ")}`);
159
+ throw new TrustError("Trust policy requires attestations from trusted identities. Cannot display documentation.");
160
+ }
161
+ if (ctx.isInteractive && trustPolicy === "prompt") {
162
+ dim(`Attested by: ${verifiedAuditors.map((a) => a.providerIdentity).join(", ")}`);
163
+ dim(`Your trusted auditors: ${trustedAuditors.join(", ")}`);
164
+ const proceed = await confirm("View documentation anyway?");
165
+ if (!proceed) {
166
+ info("Cancelled.");
167
+ process.exit(0);
168
+ }
169
+ }
170
+ else if (!ctx.isInteractive && trustPolicy === "prompt") {
171
+ throw new TrustError("Cannot display documentation without trusted attestations in non-interactive mode.");
172
+ }
173
+ // trustPolicy === "allow" - continue without prompting
174
+ }
175
+ }
176
+ // ========================================
177
+ // Display documentation (trust verified)
178
+ // ========================================
32
179
  if (options.json) {
33
180
  json({
34
181
  name: toolName,
35
182
  version: versionInfo.version,
36
183
  documentation: versionInfo.rawManifest ?? null,
184
+ source: "registry",
37
185
  });
38
186
  return;
39
187
  }
@@ -48,6 +196,10 @@ async function learnHandler(toolName, options, _ctx) {
48
196
  console.log(versionInfo.rawManifest);
49
197
  }
50
198
  catch (err) {
199
+ if (err instanceof TrustError) {
200
+ error(err.message);
201
+ process.exit(1);
202
+ }
51
203
  if (err instanceof Error) {
52
204
  if (err.message.includes("not_found") || err.message.includes("404")) {
53
205
  error(`Tool not found: ${toolName}`);
@@ -70,7 +222,9 @@ export function configureLearnCommand(program) {
70
222
  .command("learn <tool>")
71
223
  .description("Display documentation (enact.md) for a tool")
72
224
  .option("--ver <version>", "Show documentation for a specific version")
225
+ .option("--local", "Only show documentation for locally installed tools")
73
226
  .option("--json", "Output as JSON")
227
+ .option("-v, --verbose", "Show detailed output")
74
228
  .action(async (toolName, options) => {
75
229
  const ctx = {
76
230
  cwd: process.cwd(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/learn/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/learn/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * enact mcp command
3
+ *
4
+ * Manage MCP-exposed tools and toolsets.
5
+ *
6
+ * Subcommands:
7
+ * - install: Show configuration for MCP clients (Claude Code, etc.)
8
+ * - list: List tools exposed to MCP
9
+ * - add: Add a tool to MCP (from global installs)
10
+ * - remove: Remove a tool from MCP
11
+ * - toolsets: List available toolsets
12
+ * - use: Switch active toolset
13
+ * - toolset: Manage toolsets (create, delete, add, remove)
14
+ */
15
+ import type { Command } from "commander";
16
+ /**
17
+ * Configure the mcp command
18
+ */
19
+ export declare function configureMcpCommand(program: Command): void;
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAiBH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiZzC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8H1D"}