@ask-thane/thane-cli 0.1.1 → 0.1.5

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 CHANGED
@@ -4,8 +4,7 @@ Terminal-native team chat for Thane workspaces.
4
4
 
5
5
  ```bash
6
6
  npm install -g @ask-thane/thane-cli
7
- thane commands
8
- thane signup you@example.com
7
+ thane init
9
8
  thane chat general
10
9
  ```
11
10
 
@@ -14,3 +13,10 @@ To migrate from Slack:
14
13
  ```bash
15
14
  thane workspace create-from-slack ./slack-export.zip --apply
16
15
  ```
16
+
17
+ To invite a teammate:
18
+
19
+ ```bash
20
+ thane invite-link create --expires 7d
21
+ thane invite-link accept https://api.askthane.com/invite/...
22
+ ```
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAgBA,wBAAsB,OAAO,CAAC,cAAc,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAiKvE"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAkMA,wBAAsB,OAAO,CAAC,cAAc,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA+IvE"}
package/dist/chat.js CHANGED
@@ -1,195 +1,309 @@
1
- import { createInterface } from "node:readline/promises";
2
1
  import { stdin as input, stdout as output } from "node:process";
3
- import { runSlashMenu } from "./menu.js";
4
- import { renderInbox, renderMessages, renderUsers, renderWorkspaces } from "./render.js";
5
- import { completeSlashCommand, renderSlashCommands, slashCommands } from "./slash-commands.js";
2
+ import { emitKeypressEvents } from "node:readline";
3
+ import { renderSlashCommands } from "./slash-commands.js";
6
4
  import { ThaneStore } from "./store.js";
7
- async function selectChannel(store, target) {
8
- if (target.startsWith("@")) {
9
- const dm = await store.findOrCreateDm(target.slice(1));
10
- return { channelId: dm.id, promptName: `@${dm.name}` };
5
+ const CLEAR = "\x1b[2J\x1b[H";
6
+ const HIDE_CURSOR = "\x1b[?25l";
7
+ const SHOW_CURSOR = "\x1b[?25h";
8
+ const RESET = "\x1b[0m";
9
+ const DIM = "\x1b[2m";
10
+ const INVERSE = "\x1b[7m";
11
+ const BOLD = "\x1b[1m";
12
+ function size() {
13
+ return {
14
+ columns: Math.max(60, Number(output.columns ?? 100)),
15
+ rows: Math.max(20, Number(output.rows ?? 30))
16
+ };
17
+ }
18
+ function stripAnsi(value) {
19
+ return value.replace(/\x1b\[[0-9;?]*[A-Za-z]/g, "");
20
+ }
21
+ function visibleLength(value) {
22
+ return stripAnsi(value).length;
23
+ }
24
+ function fit(value, width) {
25
+ const plain = stripAnsi(value);
26
+ if (plain.length <= width) {
27
+ return value + " ".repeat(width - plain.length);
11
28
  }
12
- const channel = await store.createChannel(target);
13
- return { channelId: channel.id, promptName: `#${channel.name}` };
29
+ return `${plain.slice(0, Math.max(0, width - 1))}…`;
14
30
  }
15
- export async function runChat(initialChannel = "general") {
16
- let store = await ThaneStore.open();
17
- let { channelId: channel, promptName } = await selectChannel(store, initialChannel);
18
- let lastSeenAt = store.recent(channel, 50).at(-1)?.createdAt ?? "";
19
- let lastActivitySignature = "";
20
- const rl = createInterface({
21
- input,
22
- output,
23
- prompt: `${store.activeWorkspace.slug}${promptName}> `,
24
- completer: completeSlashCommand
25
- });
26
- let isOpen = true;
27
- const poll = setInterval(() => {
28
- void (async () => {
29
- if (!isOpen) {
30
- return;
31
- }
32
- const freshStore = await ThaneStore.open();
33
- const freshMessages = freshStore.recent(channel, 50).filter((message) => message.createdAt > lastSeenAt);
34
- if (freshMessages.length === 0) {
35
- store = freshStore;
36
- const activity = freshStore
37
- .inbox({ allWorkspaces: true, onlyUnread: true })
38
- .filter((summary) => !(summary.workspaceId === freshStore.activeWorkspace.id && summary.conversationId === channel));
39
- const signature = JSON.stringify(activity.map((summary) => [summary.workspaceId, summary.conversationId, summary.unreadCount, summary.mentionCount]));
40
- if (activity.length > 0 && signature !== lastActivitySignature) {
41
- lastActivitySignature = signature;
42
- output.write(`\nActivity elsewhere:\n${renderInbox(activity)}\n`);
43
- rl.prompt();
44
- }
45
- return;
46
- }
47
- lastSeenAt = freshMessages.at(-1)?.createdAt ?? lastSeenAt;
48
- store = freshStore;
49
- output.write(`\n${renderMessages(freshMessages)}\n`);
50
- rl.prompt();
51
- })().catch((error) => {
52
- output.write(`\n${error.message}\n`);
53
- rl.prompt();
54
- });
55
- }, 2_000);
56
- output.write(`Thane chat - workspace ${store.activeWorkspace.slug}\n`);
57
- output.write("Type /commands to see commands, /menu for an arrow-key menu, or press Tab after / for completion.\n\n");
58
- output.write(`${renderMessages(store.recent(channel, 20))}\n\n`);
59
- rl.prompt();
60
- const runSlashLine = async (trimmed) => {
61
- if (trimmed === "/quit" || trimmed === "/exit") {
62
- return "quit";
63
- }
64
- if (trimmed === "/commands") {
65
- output.write(`${renderSlashCommands()}\n`);
66
- }
67
- else if (trimmed === "/menu") {
68
- rl.pause();
69
- const selected = await runSlashMenu(slashCommands);
70
- rl.resume();
71
- if (selected) {
72
- if (selected.needsArgument) {
73
- output.write(`${selected.usage} - ${selected.description}\n`);
74
- }
75
- else {
76
- return runSlashLine(selected.name);
77
- }
78
- }
31
+ function wrap(value, width) {
32
+ if (width <= 0) {
33
+ return [""];
34
+ }
35
+ const words = value.split(/\s+/);
36
+ const lines = [];
37
+ let line = "";
38
+ for (const word of words) {
39
+ if (!line) {
40
+ line = word;
79
41
  }
80
- else if (trimmed === "/inbox") {
81
- output.write(`${renderInbox(store.inbox({ onlyUnread: true }))}\n`);
42
+ else if (line.length + word.length + 1 <= width) {
43
+ line = `${line} ${word}`;
82
44
  }
83
- else if (trimmed === "/inbox all") {
84
- output.write(`${renderInbox(store.inbox({ allWorkspaces: true, onlyUnread: true }))}\n`);
45
+ else {
46
+ lines.push(line);
47
+ line = word;
85
48
  }
86
- else if (trimmed === "/workspaces") {
87
- output.write(`${renderWorkspaces(store.listWorkspaces(), store.activeWorkspace.id)}\n`);
49
+ while (line.length > width) {
50
+ lines.push(line.slice(0, width));
51
+ line = line.slice(width);
88
52
  }
89
- else if (trimmed.startsWith("/workspace ")) {
90
- const workspace = await store.useWorkspace(trimmed.slice("/workspace ".length).trim());
91
- ({ channelId: channel, promptName } = await selectChannel(store, "general"));
92
- lastSeenAt = store.recent(channel, 50).at(-1)?.createdAt ?? "";
93
- lastActivitySignature = "";
94
- rl.setPrompt(`${workspace.slug}${promptName}> `);
95
- output.write(`${renderMessages(store.recent(channel, 20))}\n`);
96
- }
97
- else if (trimmed === "/channels") {
98
- output.write(`${store.listChannels().map((item) => `#${item.name}`).join("\n")}\n`);
99
- }
100
- else if (trimmed.startsWith("/join ")) {
101
- ({ channelId: channel, promptName } = await selectChannel(store, trimmed.slice("/join ".length).trim()));
102
- lastSeenAt = store.recent(channel, 50).at(-1)?.createdAt ?? "";
103
- lastActivitySignature = "";
104
- rl.setPrompt(`${store.activeWorkspace.slug}${promptName}> `);
105
- output.write(`${renderMessages(store.recent(channel, 20))}\n`);
106
- }
107
- else if (trimmed === "/leave") {
108
- if (promptName.startsWith("@")) {
109
- output.write("DMs cannot be left in the MVP.\n");
110
- }
111
- else {
112
- const leftChannel = await store.leaveChannel(promptName.slice(1));
113
- ({ channelId: channel, promptName } = await selectChannel(store, "general"));
114
- lastSeenAt = store.recent(channel, 50).at(-1)?.createdAt ?? "";
115
- lastActivitySignature = "";
116
- rl.setPrompt(`${store.activeWorkspace.slug}${promptName}> `);
117
- output.write(`left #${leftChannel.name}\n${renderMessages(store.recent(channel, 20))}\n`);
118
- }
53
+ }
54
+ if (line) {
55
+ lines.push(line);
56
+ }
57
+ return lines.length ? lines : [""];
58
+ }
59
+ function channelLabel(channel) {
60
+ return channel.kind === "dm" ? `@${channel.name}` : `#${channel.name}`;
61
+ }
62
+ function conversations(store, activeId) {
63
+ const activity = new Map(store.inbox({ includeQuiet: true }).map((summary) => [summary.conversationId, summary]));
64
+ const channels = store.listChannels().map((channel) => {
65
+ const summary = activity.get(channel.id);
66
+ return {
67
+ id: channel.id,
68
+ label: channelLabel(channel),
69
+ name: channel.name,
70
+ kind: channel.kind,
71
+ unreadCount: summary?.unreadCount ?? 0,
72
+ mentionCount: summary?.mentionCount ?? 0
73
+ };
74
+ });
75
+ const dms = store.listDms().map((dm) => {
76
+ const summary = activity.get(dm.id);
77
+ return {
78
+ id: dm.id,
79
+ label: channelLabel(dm),
80
+ name: dm.name,
81
+ kind: dm.kind,
82
+ unreadCount: summary?.unreadCount ?? 0,
83
+ mentionCount: summary?.mentionCount ?? 0
84
+ };
85
+ });
86
+ const all = [...channels, ...dms];
87
+ if (!all.some((item) => item.id === activeId)) {
88
+ const channel = store.findChannel(activeId);
89
+ if (channel) {
90
+ all.unshift({
91
+ id: channel.id,
92
+ label: channelLabel(channel),
93
+ name: channel.name,
94
+ kind: channel.kind,
95
+ unreadCount: 0,
96
+ mentionCount: 0
97
+ });
119
98
  }
120
- else if (trimmed === "/members") {
121
- if (promptName.startsWith("@")) {
122
- output.write("DM membership is just the two participants.\n");
99
+ }
100
+ return all;
101
+ }
102
+ async function selectConversation(store, target) {
103
+ if (target.startsWith("@")) {
104
+ return store.findOrCreateDm(target.slice(1));
105
+ }
106
+ return store.createChannel(target.replace(/^#/, ""));
107
+ }
108
+ function renderMessage(message, width) {
109
+ const date = new Date(message.createdAt);
110
+ const time = Number.isNaN(date.getTime())
111
+ ? message.createdAt
112
+ : date.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
113
+ const prefix = `${DIM}${time}${RESET} ${BOLD}${message.author}${RESET}: `;
114
+ const bodyWidth = Math.max(10, width - visibleLength(prefix));
115
+ const lines = wrap(message.text, bodyWidth);
116
+ return lines.map((line, index) => (index === 0 ? `${prefix}${line}` : `${" ".repeat(visibleLength(prefix))}${line}`));
117
+ }
118
+ function renderScreen(inputText, state) {
119
+ const { columns, rows } = size();
120
+ const sidebarWidth = Math.min(32, Math.max(24, Math.floor(columns * 0.28)));
121
+ const mainWidth = columns - sidebarWidth - 1;
122
+ const contentRows = rows - 4;
123
+ const active = state.store.findChannel(state.activeChannelId);
124
+ const items = conversations(state.store, state.activeChannelId);
125
+ const messages = state.store.recent(state.activeChannelId, 200);
126
+ const lines = [];
127
+ lines.push(`${CLEAR}${HIDE_CURSOR}${BOLD}Thane Chat${RESET} ${DIM}${state.store.activeWorkspace.slug}${RESET}`);
128
+ lines.push(`${"─".repeat(columns)}`);
129
+ const renderedMessages = messages.flatMap((message) => renderMessage(message, mainWidth - 2));
130
+ const helpLines = state.showHelp
131
+ ? [
132
+ `${BOLD}Commands${RESET}`,
133
+ "/join <channel> /dm <handle> /workspace <slug>",
134
+ "/commands /help /quit",
135
+ "",
136
+ ...renderSlashCommands().split("\n").slice(0, Math.max(0, contentRows - 5))
137
+ ]
138
+ : renderedMessages.slice(-contentRows);
139
+ for (let row = 0; row < contentRows; row += 1) {
140
+ const item = items[row];
141
+ let left = "";
142
+ if (item) {
143
+ const unread = item.unreadCount > 0 ? ` ${item.unreadCount}` : "";
144
+ const mention = item.mentionCount > 0 ? " @" : "";
145
+ const marker = item.id === state.activeChannelId ? ">" : " ";
146
+ left = `${marker} ${item.label}${mention}${unread}`;
147
+ if (item.id === state.activeChannelId) {
148
+ left = `${INVERSE}${fit(left, sidebarWidth)}${RESET}`;
123
149
  }
124
150
  else {
125
- output.write(`${renderUsers(store.channelMembers(promptName.slice(1)))}\n`);
151
+ left = fit(left, sidebarWidth);
126
152
  }
127
153
  }
128
- else if (trimmed.startsWith("/dm ")) {
129
- ({ channelId: channel, promptName } = await selectChannel(store, `@${trimmed.slice("/dm ".length).trim()}`));
130
- lastSeenAt = store.recent(channel, 50).at(-1)?.createdAt ?? "";
131
- lastActivitySignature = "";
132
- rl.setPrompt(`${store.activeWorkspace.slug}${promptName}> `);
133
- output.write(`${renderMessages(store.recent(channel, 20))}\n`);
154
+ else {
155
+ left = " ".repeat(sidebarWidth);
134
156
  }
135
- else if (trimmed === "/recent") {
136
- output.write(`${renderMessages(store.recent(channel, 20))}\n`);
157
+ const right = fit(helpLines[row] ?? "", mainWidth - 1);
158
+ lines.push(`${left}│${right}`);
159
+ }
160
+ const status = state.status || `${active ? channelLabel(active) : "conversation"} ${DIM}Enter sends. Up/down switches. /help for commands.${RESET}`;
161
+ lines.push(`${"─".repeat(columns)}`);
162
+ lines.push(fit(status, columns));
163
+ lines.push(fit(`> ${inputText}`, columns));
164
+ output.write(lines.join("\n"));
165
+ }
166
+ export async function runChat(initialChannel = "general") {
167
+ let store = await ThaneStore.open();
168
+ let activeChannel = await selectConversation(store, initialChannel);
169
+ let inputText = "";
170
+ let status = "";
171
+ let showHelp = false;
172
+ let isOpen = true;
173
+ const refresh = async () => {
174
+ store = await ThaneStore.open();
175
+ renderScreen(inputText, { store, activeChannelId: activeChannel.id, status, showHelp });
176
+ };
177
+ const switchTo = async (conversationId) => {
178
+ const channel = store.findChannel(conversationId);
179
+ if (!channel) {
180
+ return;
137
181
  }
138
- else if (trimmed.startsWith("/thread ")) {
139
- output.write(`${renderMessages(store.thread(trimmed.slice("/thread ".length).trim()))}\n`);
182
+ activeChannel = channel;
183
+ showHelp = false;
184
+ status = `Switched to ${channelLabel(channel)}`;
185
+ await store.markReadConversation(activeChannel.id);
186
+ await refresh();
187
+ };
188
+ const moveSelection = async (direction) => {
189
+ const items = conversations(store, activeChannel.id);
190
+ const index = Math.max(0, items.findIndex((item) => item.id === activeChannel.id));
191
+ const next = items[(index + direction + items.length) % items.length];
192
+ if (next) {
193
+ await switchTo(next.id);
140
194
  }
141
- else if (trimmed.startsWith("/reply ")) {
142
- const [messageId, ...textParts] = trimmed.slice("/reply ".length).trim().split(/\s+/);
143
- if (!messageId || textParts.length === 0) {
144
- output.write("Usage: /reply <message-id> <text>\n");
145
- }
146
- else {
147
- const message = await store.reply(messageId, textParts.join(" "));
148
- output.write(`sent ${message.id}\n`);
149
- }
195
+ };
196
+ const runLine = async (line) => {
197
+ const trimmed = line.trim();
198
+ if (!trimmed) {
199
+ return;
150
200
  }
151
- else if (trimmed.startsWith("/react ")) {
152
- const [messageId, emoji] = trimmed.slice("/react ".length).trim().split(/\s+/);
153
- if (!messageId || !emoji) {
154
- output.write("Usage: /react <message-id> <emoji>\n");
155
- }
156
- else {
157
- await store.react(messageId, emoji);
158
- output.write(`reacted to ${messageId}\n`);
159
- }
201
+ if (trimmed === "/quit" || trimmed === "/exit") {
202
+ isOpen = false;
203
+ return;
160
204
  }
161
- else if (trimmed.startsWith("/search ")) {
162
- output.write(`${renderMessages(store.search(trimmed.slice("/search ".length).trim()))}\n`);
205
+ if (trimmed === "/help" || trimmed === "/commands" || trimmed === "/menu") {
206
+ showHelp = !showHelp;
207
+ status = showHelp ? "Command help" : "";
208
+ return;
163
209
  }
164
- else if (trimmed.startsWith("/")) {
165
- output.write(`Unknown command. Type /commands to see commands.\n`);
210
+ if (trimmed.startsWith("/join ")) {
211
+ activeChannel = await selectConversation(store, trimmed.slice("/join ".length).trim());
212
+ await store.markReadConversation(activeChannel.id);
213
+ status = `Joined ${channelLabel(activeChannel)}`;
214
+ showHelp = false;
215
+ return;
166
216
  }
167
- else {
168
- const message = await store.sendMessage(channel, trimmed);
169
- lastSeenAt = message.createdAt;
170
- output.write(`sent ${message.id}\n`);
217
+ if (trimmed.startsWith("/dm ")) {
218
+ activeChannel = await selectConversation(store, `@${trimmed.slice("/dm ".length).trim()}`);
219
+ await store.markReadConversation(activeChannel.id);
220
+ status = `Opened ${channelLabel(activeChannel)}`;
221
+ showHelp = false;
222
+ return;
171
223
  }
172
- return "continue";
224
+ if (trimmed.startsWith("/workspace ")) {
225
+ const workspace = await store.useWorkspace(trimmed.slice("/workspace ".length).trim());
226
+ activeChannel = await selectConversation(store, "general");
227
+ status = `Switched to workspace ${workspace.slug}`;
228
+ showHelp = false;
229
+ return;
230
+ }
231
+ if (trimmed.startsWith("/")) {
232
+ status = "Unknown command. Type /help.";
233
+ return;
234
+ }
235
+ const sent = await store.sendMessage(activeChannel.id, trimmed);
236
+ const messages = store.recent(activeChannel.id, 200);
237
+ status = messages.some((message) => message.id === sent.id) ? "" : "";
238
+ showHelp = false;
239
+ await store.markReadConversation(activeChannel.id);
173
240
  };
174
- for await (const line of rl) {
175
- const trimmed = line.trim();
176
- try {
177
- if (!trimmed) {
178
- rl.prompt();
179
- continue;
241
+ emitKeypressEvents(input);
242
+ if (input.isTTY) {
243
+ input.setRawMode?.(true);
244
+ }
245
+ input.resume();
246
+ const onKeypress = (_chunk, key) => {
247
+ void (async () => {
248
+ try {
249
+ if ((key.ctrl && key.name === "c") || key.sequence === "\u0003") {
250
+ isOpen = false;
251
+ return;
252
+ }
253
+ if (key.name === "return") {
254
+ const submitted = inputText;
255
+ inputText = "";
256
+ await runLine(submitted);
257
+ }
258
+ else if (key.name === "backspace") {
259
+ inputText = inputText.slice(0, -1);
260
+ }
261
+ else if (key.name === "up") {
262
+ await moveSelection(-1);
263
+ return;
264
+ }
265
+ else if (key.name === "down" || key.name === "tab") {
266
+ await moveSelection(1);
267
+ return;
268
+ }
269
+ else if (key.name === "escape") {
270
+ showHelp = false;
271
+ status = "";
272
+ }
273
+ else if (key.sequence && key.sequence >= " " && !key.ctrl) {
274
+ inputText += key.sequence;
275
+ }
276
+ if (!isOpen) {
277
+ return;
278
+ }
279
+ await refresh();
180
280
  }
181
- const result = await runSlashLine(trimmed);
182
- if (result === "quit") {
183
- break;
281
+ catch (error) {
282
+ status = error.message;
283
+ await refresh();
184
284
  }
285
+ })();
286
+ };
287
+ input.on("keypress", onKeypress);
288
+ const poll = setInterval(() => {
289
+ if (isOpen) {
290
+ void refresh();
185
291
  }
186
- catch (error) {
187
- output.write(`${error.message}\n`);
292
+ }, 1_500);
293
+ try {
294
+ await store.markReadConversation(activeChannel.id);
295
+ await refresh();
296
+ while (isOpen) {
297
+ await new Promise((resolve) => setTimeout(resolve, 50));
298
+ }
299
+ }
300
+ finally {
301
+ clearInterval(poll);
302
+ input.off("keypress", onKeypress);
303
+ if (input.isTTY) {
304
+ input.setRawMode?.(false);
188
305
  }
189
- rl.prompt();
306
+ output.write(`${SHOW_CURSOR}${RESET}\x1b[2J\x1b[H`);
190
307
  }
191
- isOpen = false;
192
- clearInterval(poll);
193
- rl.close();
194
308
  }
195
309
  //# sourceMappingURL=chat.js.map
package/dist/chat.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,EAAE,UAAU,EA2RnC,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,UAAU,EAAgB,GAAG,MAAM,CAW9E"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,EAAE,UAAU,EA6SnC,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,UAAU,EAAgB,GAAG,MAAM,CAW9E"}
package/dist/commands.js CHANGED
@@ -11,23 +11,29 @@ export const cliCommands = [
11
11
  description: "Open live terminal chat focused on a DM.",
12
12
  examples: ["thane dm alex"]
13
13
  },
14
+ {
15
+ category: "Accounts",
16
+ command: "thane init [--email <email>] [--name \"...\"]",
17
+ description: "Start first-run setup, prompt for email, and verify the account.",
18
+ examples: ["thane init"]
19
+ },
14
20
  {
15
21
  category: "Accounts",
16
22
  command: "thane signup <email> [--name \"...\"]",
17
23
  description: "Create a local account and print a verification code.",
18
- examples: ["thane signup you@example.com --name \"You\""]
24
+ examples: ["thane signup <email> --name \"Your Name\""]
19
25
  },
20
26
  {
21
27
  category: "Accounts",
22
28
  command: "thane login <email>",
23
29
  description: "Start email-code login for an existing or new account.",
24
- examples: ["thane login you@example.com"]
30
+ examples: ["thane login <email>"]
25
31
  },
26
32
  {
27
33
  category: "Accounts",
28
34
  command: "thane verify <email> <code>",
29
35
  description: "Complete email-code login.",
30
- examples: ["thane verify you@example.com 123456"]
36
+ examples: ["thane verify <email> 123456"]
31
37
  },
32
38
  {
33
39
  category: "Accounts",
@@ -125,6 +131,18 @@ export const cliCommands = [
125
131
  description: "Invite or add a workspace member.",
126
132
  examples: ["thane invite alex@example.com --role admin --handle alex"]
127
133
  },
134
+ {
135
+ category: "Members",
136
+ command: "thane invite-link create [--role admin|member] [--expires 7d] [--max-uses 10] [--json]",
137
+ description: "Create an expiring workspace invite link.",
138
+ examples: ["thane invite-link create --expires 7d", "thane invite-link create --role admin --max-uses 1"]
139
+ },
140
+ {
141
+ category: "Members",
142
+ command: "thane invite-link accept <link-or-token> [--json]",
143
+ description: "Accept a workspace invite link and switch to that workspace.",
144
+ examples: ["thane invite-link accept https://api.askthane.com/invite/abc123"]
145
+ },
128
146
  {
129
147
  category: "Members",
130
148
  command: "thane member role <handle-or-email> <admin|member>",
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}