@sofer_agent/cli 0.3.0 → 0.3.2

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/bin.js CHANGED
@@ -40,7 +40,9 @@ async function main() {
40
40
  main().catch((e) => {
41
41
  const msg = e instanceof Error ? e.message : String(e);
42
42
  console.error(msg);
43
- if (msg.includes("SOFER_SUI_SECRET_KEY") || msg.includes("ANTHROPIC_API_KEY") || msg.includes("SOFER_PACKAGE_ID")) {
43
+ if (msg.includes("SOFER_SUI_SECRET_KEY") ||
44
+ msg.includes("ANTHROPIC_API_KEY") ||
45
+ msg.includes("SOFER_PACKAGE_ID")) {
44
46
  console.error(`\nFirst time? Run \`sofer init\` — an interactive wizard (creates ${agentPaths.root}/).`);
45
47
  }
46
48
  process.exit(1);
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CACT;;;;;;;6BAOyB,UAAU,CAAC,IAAI;gDACI,CAC7C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IACtC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM;YACT,MAAM,WAAW,EAAE,CAAC;YACpB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,WAAW,EAAE,CAAC;YACpB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,WAAW,EAAE,CAAC;YACpB,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI,CAAC;QACV,KAAK,QAAQ;YACX,SAAS,EAAE,CAAC;YACZ,MAAM;QACR;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;YAC3C,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACjB,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAClH,OAAO,CAAC,KAAK,CAAC,qEAAqE,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CACT;;;;;;;6BAOyB,UAAU,CAAC,IAAI;gDACI,CAC7C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IACtC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM;YACT,MAAM,WAAW,EAAE,CAAC;YACpB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,WAAW,EAAE,CAAC;YACpB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,WAAW,EAAE,CAAC;YACpB,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI,CAAC;QACV,KAAK,QAAQ;YACX,SAAS,EAAE,CAAC;YACZ,MAAM;QACR;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;YAC3C,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACjB,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,IACE,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACpC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACjC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAChC,CAAC;QACD,OAAO,CAAC,KAAK,CACX,qEAAqE,UAAU,CAAC,IAAI,KAAK,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/dist/chat.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- /** Interactive chat TUI with a stats sidebar. */
1
+ /** Interactive chat TUI with promus-style polish. */
2
2
  export declare function chatCommand(): Promise<void>;
3
3
  //# sourceMappingURL=chat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAIA,iDAAiD;AACjD,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBjD"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAIA,qDAAqD;AACrD,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmBjD"}
package/dist/chat.js CHANGED
@@ -1,19 +1,23 @@
1
1
  import { SoferAgent, loadConfig } from "@sofer_agent/core";
2
2
  import { requireSecrets } from "./secrets.js";
3
3
  import { SoferTui } from "./tui.js";
4
- /** Interactive chat TUI with a stats sidebar. */
4
+ /** Interactive chat TUI with promus-style polish. */
5
5
  export async function chatCommand() {
6
6
  const config = loadConfig();
7
7
  const agent = await SoferAgent.create(config, requireSecrets());
8
- const tui = new SoferTui(agent, config);
9
- await tui.run(async (line) => {
8
+ const tui = new SoferTui(agent);
9
+ await tui.run(async (line, signal) => {
10
10
  try {
11
- const { text, turnUsage } = await agent.chat(line);
11
+ const { text } = await agent.chat(line, signal);
12
12
  tui.addMessage("agent", text);
13
- tui.setUsage(turnUsage.inputTokens, turnUsage.outputTokens);
14
13
  }
15
14
  catch (e) {
16
- tui.addMessage("error", e instanceof Error ? e.message : String(e));
15
+ if (signal?.aborted) {
16
+ tui.addMessage("system", "turn interrupted (esc).");
17
+ }
18
+ else {
19
+ tui.addMessage("error", e instanceof Error ? e.message : String(e));
20
+ }
17
21
  }
18
22
  tui.render();
19
23
  });
package/dist/chat.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,iDAAiD;AACjD,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAEhE,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAExC,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC9B,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,qDAAqD;AACrD,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAEhE,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhC,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAChD,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAyCA;;;;;GAKG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAsKjD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAkBA;;;;;GAKG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA0LjD"}
package/dist/init.js CHANGED
@@ -1,22 +1,5 @@
1
+ import { cancel, intro, isCancel, note, outro, password, select, spinner } from "@clack/prompts";
1
2
  import { AgentClient, agentPaths, generateKeypair, keypairFromSecret, loadConfig, makeSuiClient, provisionMemwal, requestFaucet, shortAgentId, suiBalance, waitForBalance, writePersistedConfig, writeSecret, } from "@sofer_agent/core";
2
- /** Simple spinner that logs to stdout. */
3
- function spin(label, fn) {
4
- process.stdout.write(`${label}… `);
5
- return fn().then((result) => {
6
- console.log("done");
7
- return result;
8
- }, (err) => {
9
- console.log("failed");
10
- throw err;
11
- });
12
- }
13
- async function ask(question) {
14
- const rl = await import("node:readline/promises");
15
- const iface = rl.createInterface({ input: process.stdin, output: process.stdout });
16
- const answer = await iface.question(question);
17
- iface.close();
18
- return answer.trim();
19
- }
20
3
  /**
21
4
  * Interactive init wizard — mint the agent + provision Walrus memory.
22
5
  * Stores config to ~/.sofer/config.json and secrets to ~/.sofer/{sui,brain}.key
@@ -32,37 +15,52 @@ export async function initCommand() {
32
15
  console.log(` sui key: ${agentPaths.suiKey}`);
33
16
  console.log(` brain key: ${agentPaths.brainKey}`);
34
17
  console.log(` agent: ${existing.agentObjectId}`);
35
- console.log(` address: ${existing.memwal.accountId}`);
36
- console.log(`\nRun \`sofer\` to chat. To start fresh, delete ~/.sofer/.`);
18
+ console.log(` memory: ${existing.memwal.accountId}`);
19
+ console.log(`\nRun \`sofer\` to chat. To start fresh, delete ${agentPaths.root}/.`);
37
20
  return;
38
21
  }
39
- console.log("╔══════════════════════════════════════════╗");
40
- console.log("║ sofer init — agent setup ║");
41
- console.log("╚══════════════════════════════════════════╝\n");
22
+ intro("sofer init");
42
23
  // ── 1. Network ─────────────────────────────────────────────────────────
43
- const network = (await ask("Network? [testnet/mainnet] (testnet): ")) || "testnet";
24
+ const network = (await select({
25
+ message: "Which network?",
26
+ options: [
27
+ { value: "testnet", label: "Sui Testnet" },
28
+ { value: "mainnet", label: "Sui Mainnet" },
29
+ ],
30
+ initialValue: "testnet",
31
+ }));
32
+ if (isCancel(network)) {
33
+ cancel("Aborted.");
34
+ return;
35
+ }
44
36
  const net = network === "mainnet" ? "mainnet" : "testnet";
45
- console.log(` → ${net}\n`);
46
37
  // ── 2. Anthropic API key ───────────────────────────────────────────────
47
- const apiKey = await ask("Anthropic API key: ");
48
- if (!apiKey)
49
- throw new Error("ANTHROPIC_API_KEY is required");
50
- console.log(" → saved (encrypted to disk)\n");
38
+ const apiKey = (await password({
39
+ message: "Anthropic API key (stored in ~/.sofer/brain.key, never in .env)",
40
+ mask: "*",
41
+ }));
42
+ if (isCancel(apiKey) || !apiKey) {
43
+ cancel("API key is required.");
44
+ return;
45
+ }
51
46
  // ── 3. Sui wallet ─────────────────────────────────────────────────────
52
47
  const existingSecret = process.env.SOFER_SUI_SECRET_KEY;
48
+ const sGen = spinner();
53
49
  let secret;
54
50
  let address;
55
51
  if (existingSecret) {
52
+ sGen.start("Loading wallet from SOFER_SUI_SECRET_KEY");
56
53
  const kp = keypairFromSecret(existingSecret);
57
54
  secret = existingSecret;
58
55
  address = kp.toSuiAddress();
59
- console.log(` wallet: ${address} (from env)\n`);
56
+ sGen.stop(`wallet: ${address} (from env)`);
60
57
  }
61
58
  else {
59
+ sGen.start("Generating new Sui wallet");
62
60
  const kp = generateKeypair();
63
61
  secret = kp.getSecretKey();
64
62
  address = kp.toSuiAddress();
65
- console.log(` wallet: ${address} (new)\n`);
63
+ sGen.stop(`wallet: ${address} (new)`);
66
64
  }
67
65
  const config = loadConfig();
68
66
  const sui = makeSuiClient(config.network);
@@ -70,82 +68,95 @@ export async function initCommand() {
70
68
  if (net !== "mainnet") {
71
69
  const bal = await suiBalance(sui, address);
72
70
  if (bal === 0n) {
73
- console.log("Requesting testnet faucet…");
71
+ const sFund = spinner();
72
+ sFund.start("Requesting testnet faucet");
74
73
  try {
75
74
  await requestFaucet(config.network, address);
76
75
  await waitForBalance(sui, address, 1n);
77
- console.log("funded\n");
76
+ sFund.stop("funded");
78
77
  }
79
78
  catch (e) {
80
- console.warn(` faucet failed: ${String(e).slice(0, 80)}`);
81
- console.warn(` fund ${address} at https://faucet.sui.io/ and re-run\n`);
79
+ sFund.stop(`faucet failed: ${String(e).slice(0, 80)}`);
80
+ note(`Fund ${address} at https://faucet.sui.io/ and re-run.`, "manual funding needed");
82
81
  }
83
82
  }
84
83
  else {
85
- console.log(` balance: ${(Number(bal) / 1e9).toFixed(4)} SUI\n`);
84
+ note(`${(Number(bal) / 1e9).toFixed(4)} SUI on ${address}`, "wallet balance");
86
85
  }
87
86
  }
88
87
  const agents = new AgentClient(sui, config.packageId);
89
88
  // ── 5. Mint agent ─────────────────────────────────────────────────────
90
- let agentId = config.agentObjectId;
89
+ let agentId = existing.agentObjectId;
91
90
  if (!agentId) {
92
- console.log("Minting agent identity object on-chain…");
91
+ const sMint = spinner();
92
+ sMint.start("Minting agent identity object on-chain");
93
93
  try {
94
94
  const keypair = keypairFromSecret(secret);
95
- const minted = await spin(" minting", () => agents.mint(keypair, "Sofer", "a sovereign AI agent on Sui with encrypted memory on Walrus", new TextEncoder().encode("sofer")));
95
+ const minted = await agents.mint(keypair, "Sofer", "a sovereign AI agent on Sui with encrypted memory on Walrus", new TextEncoder().encode("sofer"));
96
96
  agentId = minted.agentId;
97
- console.log(`agent: ${agentId}\n`);
97
+ sMint.stop(`agent: ${agentId}`);
98
98
  }
99
99
  catch (e) {
100
- console.error(` mint failed: ${String(e).slice(0, 120)}`);
101
- console.error(" (maybe already minted? set SOFER_AGENT_OBJECT_ID and re-run)");
100
+ sMint.stop(`mint failed: ${String(e).slice(0, 120)}`);
101
+ cancel("Mint failed. Is the wallet funded?");
102
102
  return;
103
103
  }
104
104
  }
105
105
  else {
106
- console.log(` reusing agent: ${agentId}\n`);
106
+ note(agentId, "reusing agent");
107
107
  }
108
108
  // ── 6. Provision MemWal memory ────────────────────────────────────────
109
- let accountId = config.memwal.accountId;
110
- let delegateKey = config.memwal.delegateKey;
109
+ let accountId = existing.memwal.accountId;
110
+ let delegateKey = existing.memwal.delegateKey;
111
111
  if (!accountId || !delegateKey) {
112
- console.log("Provisioning Walrus memory (MemWal)…");
112
+ const sMem = spinner();
113
+ sMem.start("Provisioning Walrus memory (MemWal)");
113
114
  try {
114
- const prov = await spin(" provisioning", () => provisionMemwal({
115
+ const prov = await provisionMemwal({
115
116
  ownerSecret: secret,
116
117
  packageId: config.memwal.packageId,
117
118
  registryId: config.memwal.registryId,
118
119
  network: net,
119
120
  label: "sofer-cli",
120
- }));
121
+ });
121
122
  accountId = prov.accountId;
122
123
  delegateKey = prov.delegateKey;
123
- console.log(`account: ${accountId}\n`);
124
+ sMem.stop(`account: ${accountId}`);
124
125
  }
125
126
  catch (e) {
127
+ sMem.stop(`provision failed: ${String(e).slice(0, 120)}`);
126
128
  const msg = String(e);
127
129
  if (msg.includes("abort code: 3") || msg.includes("create_account")) {
128
- throw new Error("This wallet already owns a MemWal account (one per address).\n" +
129
- "Delete ~/.sofer/ and re-run `sofer init`, or set the env vars manually.");
130
+ cancel("This wallet already owns a MemWal account.\nDelete ~/.sofer/ and re-run, or set env vars manually.");
130
131
  }
131
- throw e;
132
+ return;
132
133
  }
133
134
  }
134
135
  else {
135
- console.log(` reusing memory account: ${accountId}\n`);
136
+ note(accountId, "reusing memory account");
136
137
  }
137
138
  // ── 7. Link memory to agent on-chain ───────────────────────────────────
138
- console.log("Linking memory account to agent on-chain…");
139
+ if (!agentId || !accountId) {
140
+ cancel("Agent or memory not provisioned. Re-run `sofer init`.");
141
+ return;
142
+ }
143
+ const sLink = spinner();
144
+ sLink.start("Linking memory account to agent on-chain");
139
145
  try {
140
146
  const keypair = keypairFromSecret(secret);
141
- await spin(" linking", () => agents.setMemoryAccount(keypair, agentId, accountId));
142
- console.log("linked\n");
147
+ await agents.setMemoryAccount(keypair, agentId, accountId);
148
+ sLink.stop("linked");
143
149
  }
144
150
  catch (e) {
145
- console.warn(` link failed (may already be linked): ${String(e).slice(0, 80)}\n`);
151
+ sLink.stop(`link failed (may already be linked): ${String(e).slice(0, 80)}`);
146
152
  }
147
153
  // ── 8. Persist config + secrets to ~/.sofer/ ───────────────────────────
148
- console.log("Saving config to ~/.sofer/…");
154
+ if (!delegateKey) {
155
+ cancel("Memory delegate key missing. Re-run `sofer init`.");
156
+ return;
157
+ }
158
+ const sSave = spinner();
159
+ sSave.start("Saving to ~/.sofer/");
149
160
  writeSecret(agentPaths.suiKey, secret);
150
161
  writeSecret(agentPaths.brainKey, apiKey);
151
162
  const persisted = {
@@ -154,23 +165,21 @@ export async function initCommand() {
154
165
  agentAddress: address,
155
166
  brain: { model: config.brain.model },
156
167
  memwal: {
157
- accountId: accountId,
158
- delegateKey: delegateKey,
168
+ accountId,
169
+ delegateKey,
159
170
  },
160
171
  };
161
172
  writePersistedConfig(persisted);
162
- const agentDir = agentPaths.agent(shortAgentId(address));
163
- console.log(` config: ${agentPaths.config}`);
164
- console.log(` keys: ${agentPaths.suiKey} / ${agentPaths.brainKey}`);
165
- console.log(` agent: ${agentDir.dir}\n`);
173
+ sSave.stop(`config: ${agentPaths.config}`);
166
174
  // ── 9. Summary ────────────────────────────────────────────────────────
167
- console.log("┌─────────────────────────────────────────┐");
168
- console.log(`│ agent id ${agentId.slice(0, 30)}… │`);
169
- console.log(`│ address ${address.slice(0, 10)}… │`);
170
- console.log(`│ network ${net.padEnd(23)} │`);
171
- console.log(`│ memory ${accountId.slice(0, 10)}… │`);
172
- console.log("├─────────────────────────────────────────┤");
173
- console.log("Run `sofer` to chat with your agent.");
174
- console.log("└─────────────────────────────────────────┘");
175
+ const lines = [
176
+ `agent ${agentId.slice(0, 30)}…`,
177
+ `address ${address.slice(0, 10)}…`,
178
+ `network ${net}`,
179
+ `memory ${accountId.slice(0, 10)}…`,
180
+ "",
181
+ "Run `sofer` to chat with your agent.",
182
+ ];
183
+ outro(lines.join("\n"));
175
184
  }
176
185
  //# sourceMappingURL=init.js.map
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,gFAAgF;AAChF,wBAAgB,cAAc,IAAI,YAAY,CAS7C"}
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,gFAAgF;AAChF,wBAAgB,cAAc,IAAI,YAAY,CAa7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,gFAAgF;AAChF,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;IACxD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,gFAAgF;AAChF,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;IACxD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AAC3C,CAAC"}
package/dist/tui.d.ts CHANGED
@@ -1,49 +1,42 @@
1
- import type { SoferConfig } from "@sofer_agent/core";
2
1
  import type { SoferAgent } from "@sofer_agent/core";
3
- interface ChatLine {
4
- role: "you" | "agent" | "error";
2
+ export interface ChatLine {
3
+ role: "you" | "agent" | "system" | "error";
5
4
  text: string;
6
5
  }
7
- export interface TuiState {
8
- messages: ChatLine[];
9
- lastTurnIn: number;
10
- lastTurnOut: number;
11
- }
12
6
  export declare class SoferTui {
13
7
  private readonly agent;
14
- private readonly config;
15
8
  private state;
16
9
  private inputBuf;
17
10
  private cursor;
18
- private rl;
19
11
  private columns;
20
12
  private rows;
21
- private chatH;
22
13
  private chatW;
14
+ private chatH;
23
15
  private scrollOff;
16
+ private status;
17
+ private spinnerFrame;
18
+ private spinnerTimer;
19
+ private turnStartedAt;
20
+ private abortCtrl;
24
21
  private resolve;
25
22
  private onLine;
26
- constructor(agent: SoferAgent, config: SoferConfig);
27
- get width(): number;
28
- get height(): number;
23
+ constructor(agent: SoferAgent);
29
24
  private measure;
30
25
  addMessage(role: ChatLine["role"], text: string): void;
31
- setUsage(lastTurnIn: number, lastTurnOut: number): void;
32
- /** Start the interactive TUI loop. Returns when the user exits. */
33
- run(onLine: (line: string) => Promise<void>): Promise<void>;
26
+ private startSpinner;
27
+ private stopSpinner;
28
+ /** Start the interactive TUI loop. */
29
+ run(onLine: (line: string, signal?: AbortSignal) => Promise<void>): Promise<void>;
34
30
  private shutdown;
35
31
  private handleInput;
36
32
  private submit;
37
33
  private handleResize;
38
- /** Reset cursor, clear, redraw everything. */
39
34
  render(): void;
40
35
  private buildFrame;
41
- private wrapLine;
36
+ private wrapMessage;
37
+ private roleLabel;
42
38
  private pad;
43
- private blank;
44
39
  private sidebarRow;
45
40
  private buildSidebar;
46
- private shortModel;
47
41
  }
48
- export {};
49
42
  //# sourceMappingURL=tui.d.ts.map
package/dist/tui.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKpD,UAAU,QAAQ;IAChB,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,QAAQ;IAcjB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAdzB,OAAO,CAAC,KAAK,CAA6D;IAC1E,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAAyC;gBAGpC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW;IAGtC,IAAI,KAAK,WAER;IACD,IAAI,MAAM,WAET;IAED,OAAO,CAAC,OAAO;IAOf,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAItD,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAKvD,mEAAmE;IAC7D,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAejE,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,WAAW,CAsCjB;YAEY,MAAM;IAoBpB,OAAO,CAAC,YAAY,CAGlB;IAEF,8CAA8C;IAC9C,MAAM,IAAI,IAAI;IAQd,OAAO,CAAC,UAAU;IA8ClB,OAAO,CAAC,QAAQ;IA0BhB,OAAO,CAAC,GAAG;IAQX,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,UAAU;CAQnB"}
1
+ {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAUpD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,QAAQ;IAoBP,OAAO,CAAC,QAAQ,CAAC,KAAK;IAnBlC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,SAAS,CAAgC;IAEjD,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAAwE;gBAEzD,KAAK,EAAE,UAAU;IAE9C,OAAO,CAAC,OAAO;IAOf,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAItD,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,WAAW;IASnB,sCAAsC;IAChC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAevF,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,WAAW,CA4CjB;YAEY,MAAM;IA2BpB,OAAO,CAAC,YAAY,CAGlB;IAEF,MAAM,IAAI,IAAI;IASd,OAAO,CAAC,UAAU;IAsDlB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,GAAG;IAQX,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,YAAY;CAiBrB"}