@trustwallet/cli 0.12.0 → 0.12.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/index.js CHANGED
@@ -39312,6 +39312,56 @@ function storageLocation(keychain) {
39312
39312
  // src/setup/phase-harnesses.ts
39313
39313
  var import_prompts2 = require("@inquirer/prompts");
39314
39314
  init_dist();
39315
+
39316
+ // src/setup/skills.ts
39317
+ var import_node_child_process = require("child_process");
39318
+ function skillsAgentFor(harness) {
39319
+ switch (harness) {
39320
+ case "claude-code":
39321
+ return "claude-code";
39322
+ case "cursor":
39323
+ return "cursor";
39324
+ case "codex":
39325
+ return "codex";
39326
+ case "claude-desktop":
39327
+ return null;
39328
+ }
39329
+ const _exhaustive = harness;
39330
+ return _exhaustive;
39331
+ }
39332
+ var SKILLS_TIMEOUT_MS = 12e4;
39333
+ var defaultSkillsInstaller = {
39334
+ install: (agent) => new Promise((resolve2, reject) => {
39335
+ const child = (0, import_node_child_process.spawn)(
39336
+ "npx",
39337
+ ["-y", "skills", "add", "trustwallet/tw-agent-skills", "-a", agent],
39338
+ { stdio: "inherit" }
39339
+ );
39340
+ let settled = false;
39341
+ const settle = (fn2) => {
39342
+ if (settled) return;
39343
+ settled = true;
39344
+ clearTimeout(timer);
39345
+ fn2();
39346
+ };
39347
+ const timer = setTimeout(() => {
39348
+ try {
39349
+ child.kill("SIGTERM");
39350
+ } catch {
39351
+ }
39352
+ settle(() => reject(new Error(`npx skills timed out after ${SKILLS_TIMEOUT_MS / 1e3}s`)));
39353
+ }, SKILLS_TIMEOUT_MS);
39354
+ child.on("error", (err) => settle(() => reject(err)));
39355
+ child.on(
39356
+ "exit",
39357
+ (code2) => settle(
39358
+ () => code2 === 0 ? resolve2() : reject(new Error(`npx skills exited with code ${code2}`))
39359
+ )
39360
+ );
39361
+ })
39362
+ };
39363
+
39364
+ // src/setup/phase-harnesses.ts
39315
39365
  function indent(s2, spaces) {
39316
39366
  const prefix = " ".repeat(spaces);
39317
39367
  return s2.split("\n").map((line) => prefix + line).join("\n");
@@ -39349,6 +39399,7 @@ function makeDefaultDeps2() {
39349
39399
  return {
39350
39400
  harnesses: ALL_HARNESSES,
39351
39401
  prompter: defaultPrompter2,
39402
+ skillsInstaller: defaultSkillsInstaller,
39352
39403
  env: process.env
39353
39404
  };
39354
39405
  }
@@ -39405,6 +39456,7 @@ async function processHarness(writer, deps, verbose) {
39405
39456
  if (current === null && raw === null) {
39406
39457
  info(`Wiring ${writer.displayName} \u2192 ${writer.configPath()}`);
39407
39458
  await writer.writeEntry();
39459
+ await runSkillsInstall(writer.name, deps);
39408
39460
  return "wrote";
39409
39461
  }
39410
39462
  if (current !== null && entriesEqual(current, TARGET_ENTRY) && !entryHasExtras(raw)) {
@@ -39420,6 +39472,7 @@ async function processHarness(writer, deps, verbose) {
39420
39472
  if (action === "update") {
39421
39473
  info(`Updating ${writer.displayName} \u2192 ${writer.configPath()}`);
39422
39474
  await writer.writeEntry();
39475
+ await runSkillsInstall(writer.name, deps);
39423
39476
  return "wrote";
39424
39477
  }
39425
39478
  if (action === "remove") {
@@ -39430,6 +39483,23 @@ async function processHarness(writer, deps, verbose) {
39430
39483
  info(`Keeping existing ${writer.displayName} entry`);
39431
39484
  return null;
39432
39485
  }
39486
+ async function runSkillsInstall(harness, deps) {
39487
+ if (deps.env.TWAK_SETUP_SKIP_SKILLS === "1") return;
39488
+ const agent = skillsAgentFor(harness);
39489
+ if (agent === null) return;
39490
+ info(
39491
+ ` Installing agent skills for ${harness} (npx skills add trustwallet/tw-agent-skills -a ${agent})...`
39492
+ );
39493
+ try {
39494
+ await deps.skillsInstaller.install(agent);
39495
+ success(` Skills installed for ${harness}.`);
39496
+ } catch (err) {
39497
+ const msg = err instanceof Error ? err.message : String(err);
39498
+ warn(
39499
+ ` Skills install for ${harness} failed (${msg}). The MCP wiring is in place; you can re-run \`npx skills add trustwallet/tw-agent-skills -a ${agent}\` manually.`
39500
+ );
39501
+ }
39502
+ }
39433
39503
  async function runNonInteractive2(opts, deps) {
39434
39504
  const envList = deps.env.TWAK_SETUP_HARNESSES;
39435
39505
  const fromEnv = envList ? envList.split(",").map((s2) => s2.trim()).filter(Boolean) : [];
@@ -39465,6 +39535,7 @@ async function runNonInteractive2(opts, deps) {
39465
39535
  if (current === null && raw === null) {
39466
39536
  info(`Wiring ${writer.displayName} \u2192 ${writer.configPath()}`);
39467
39537
  await writer.writeEntry();
39538
+ await runSkillsInstall(writer.name, deps);
39468
39539
  continue;
39469
39540
  }
39470
39541
  if (current !== null && entriesEqual(current, TARGET_ENTRY) && !entryHasExtras(raw)) {
@@ -39482,6 +39553,7 @@ async function runNonInteractive2(opts, deps) {
39482
39553
  );
39483
39554
  }
39484
39555
  await writer.writeEntry();
39556
+ await runSkillsInstall(writer.name, deps);
39485
39557
  continue;
39486
39558
  }
39487
39559
  info(
@@ -57754,7 +57826,7 @@ var crypto7 = __toESM(require("crypto"));
57754
57826
  // package.json
57755
57827
  var package_default = {
57756
57828
  name: "@trustwallet/cli",
57757
- version: "0.12.0",
57829
+ version: "0.12.1",
57758
57830
  description: "TWAK CLI \u2014 command-line interface for Trust Wallet Agent Kit",
57759
57831
  main: "dist/index.js",
57760
57832
  types: "dist/index.d.ts",
@@ -1,4 +1,5 @@
1
1
  import { type HarnessName, type HarnessWriter, type TwakEntry } from './harnesses';
2
+ import { type SkillsInstaller } from './skills';
2
3
  import type { SetupOptions } from './types';
3
4
  export type ConflictAction = 'update' | 'keep' | 'remove';
4
5
  export interface HarnessPrompter {
@@ -11,6 +12,7 @@ export interface HarnessPrompter {
11
12
  export interface HarnessPhaseDeps {
12
13
  harnesses: HarnessWriter[];
13
14
  prompter: HarnessPrompter;
15
+ skillsInstaller: SkillsInstaller;
14
16
  env: NodeJS.ProcessEnv;
15
17
  }
16
18
  export declare function runHarnessesPhase(opts: SetupOptions, deps?: HarnessPhaseDeps): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"phase-harnesses.d.ts","sourceRoot":"","sources":["../../src/setup/phase-harnesses.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAkC1D,MAAM,WAAW,eAAe;IAC9B,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9F,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,QAAQ,EAAE,eAAe,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAkCD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,YAAY,EAClB,IAAI,GAAE,gBAAoC,GACzC,OAAO,CAAC,IAAI,CAAC,CAaf;AAmCD,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;AAK7D,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,mBAAmB,CAAC,CAyD9B"}
1
+ {"version":3,"file":"phase-harnesses.d.ts","sourceRoot":"","sources":["../../src/setup/phase-harnesses.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAkC1D,MAAM,WAAW,eAAe;IAC9B,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9F,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,QAAQ,EAAE,eAAe,CAAC;IAQ1B,eAAe,EAAE,eAAe,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAmCD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,YAAY,EAClB,IAAI,GAAE,gBAAoC,GACzC,OAAO,CAAC,IAAI,CAAC,CAaf;AAmCD,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;AAK7D,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,mBAAmB,CAAC,CA2D9B"}
@@ -0,0 +1,7 @@
1
+ import type { HarnessName } from './harnesses/types';
2
+ export declare function skillsAgentFor(harness: HarnessName): string | null;
3
+ export interface SkillsInstaller {
4
+ install(agent: string): Promise<void>;
5
+ }
6
+ export declare const defaultSkillsInstaller: SkillsInstaller;
7
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/setup/skills.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAgBlE;AAQD,MAAM,WAAW,eAAe;IAK9B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,sBAAsB,EAAE,eAsCpC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trustwallet/cli",
3
- "version": "0.12.0",
3
+ "version": "0.12.1",
4
4
  "description": "TWAK CLI — command-line interface for Trust Wallet Agent Kit",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -32,17 +32,17 @@
32
32
  "tsup": "8.5.1",
33
33
  "typescript": "5.7.3",
34
34
  "vitest": "4.1.2",
35
- "@twak/actions": "0.12.0",
36
- "@twak/core": "0.12.0",
37
- "@twak/mcp": "0.12.0",
38
- "@twak/security": "0.12.0",
39
- "@twak/blockchain": "0.12.0",
40
- "@twak/storage": "0.12.0",
41
- "@twak/swap": "0.12.0",
42
- "@twak/transactions": "0.12.0",
43
- "@twak/wallet": "0.12.0",
44
- "@twak/wallet-core": "0.12.0",
45
- "@twak/walletconnect": "0.12.0"
35
+ "@twak/actions": "0.12.1",
36
+ "@twak/blockchain": "0.12.1",
37
+ "@twak/core": "0.12.1",
38
+ "@twak/mcp": "0.12.1",
39
+ "@twak/security": "0.12.1",
40
+ "@twak/storage": "0.12.1",
41
+ "@twak/swap": "0.12.1",
42
+ "@twak/transactions": "0.12.1",
43
+ "@twak/wallet": "0.12.1",
44
+ "@twak/wallet-core": "0.12.1",
45
+ "@twak/walletconnect": "0.12.1"
46
46
  },
47
47
  "publishConfig": {
48
48
  "access": "public"