@ask-thane/thane-cli 0.1.0
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 +16 -0
- package/dist/chat.d.ts +2 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +195 -0
- package/dist/chat.js.map +1 -0
- package/dist/commands.d.ts +9 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +297 -0
- package/dist/commands.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +581 -0
- package/dist/index.js.map +1 -0
- package/dist/menu.d.ts +3 -0
- package/dist/menu.d.ts.map +1 -0
- package/dist/menu.js +56 -0
- package/dist/menu.js.map +1 -0
- package/dist/model.d.ts +139 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +2 -0
- package/dist/model.js.map +1 -0
- package/dist/render.d.ts +16 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +69 -0
- package/dist/render.js.map +1 -0
- package/dist/slack-import.d.ts +81 -0
- package/dist/slack-import.d.ts.map +1 -0
- package/dist/slack-import.js +142 -0
- package/dist/slack-import.js.map +1 -0
- package/dist/slash-commands.d.ts +10 -0
- package/dist/slash-commands.d.ts.map +1 -0
- package/dist/slash-commands.js +35 -0
- package/dist/slash-commands.js.map +1 -0
- package/dist/store.d.ts +114 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +1417 -0
- package/dist/store.js.map +1 -0
- package/dist/time.d.ts +2 -0
- package/dist/time.d.ts.map +1 -0
- package/dist/time.js +39 -0
- package/dist/time.js.map +1 -0
- package/package.json +35 -0
- package/scripts/postinstall.mjs +15 -0
package/README.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Thane Chat CLI
|
|
2
|
+
|
|
3
|
+
Terminal-native team chat for Thane workspaces.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install -g @ask-thane/thane-cli
|
|
7
|
+
thane commands
|
|
8
|
+
thane signup you@example.com
|
|
9
|
+
thane chat general
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
To migrate from Slack:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
thane workspace create-from-slack ./slack-export.zip --apply
|
|
16
|
+
```
|
package/dist/chat.d.ts
ADDED
|
@@ -0,0 +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"}
|
package/dist/chat.js
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { createInterface } from "node:readline/promises";
|
|
2
|
+
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";
|
|
6
|
+
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}` };
|
|
11
|
+
}
|
|
12
|
+
const channel = await store.createChannel(target);
|
|
13
|
+
return { channelId: channel.id, promptName: `#${channel.name}` };
|
|
14
|
+
}
|
|
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
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else if (trimmed === "/inbox") {
|
|
81
|
+
output.write(`${renderInbox(store.inbox({ onlyUnread: true }))}\n`);
|
|
82
|
+
}
|
|
83
|
+
else if (trimmed === "/inbox all") {
|
|
84
|
+
output.write(`${renderInbox(store.inbox({ allWorkspaces: true, onlyUnread: true }))}\n`);
|
|
85
|
+
}
|
|
86
|
+
else if (trimmed === "/workspaces") {
|
|
87
|
+
output.write(`${renderWorkspaces(store.listWorkspaces(), store.activeWorkspace.id)}\n`);
|
|
88
|
+
}
|
|
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
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else if (trimmed === "/members") {
|
|
121
|
+
if (promptName.startsWith("@")) {
|
|
122
|
+
output.write("DM membership is just the two participants.\n");
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
output.write(`${renderUsers(store.channelMembers(promptName.slice(1)))}\n`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
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`);
|
|
134
|
+
}
|
|
135
|
+
else if (trimmed === "/recent") {
|
|
136
|
+
output.write(`${renderMessages(store.recent(channel, 20))}\n`);
|
|
137
|
+
}
|
|
138
|
+
else if (trimmed.startsWith("/thread ")) {
|
|
139
|
+
output.write(`${renderMessages(store.thread(trimmed.slice("/thread ".length).trim()))}\n`);
|
|
140
|
+
}
|
|
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
|
+
}
|
|
150
|
+
}
|
|
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
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else if (trimmed.startsWith("/search ")) {
|
|
162
|
+
output.write(`${renderMessages(store.search(trimmed.slice("/search ".length).trim()))}\n`);
|
|
163
|
+
}
|
|
164
|
+
else if (trimmed.startsWith("/")) {
|
|
165
|
+
output.write(`Unknown command. Type /commands to see commands.\n`);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
const message = await store.sendMessage(channel, trimmed);
|
|
169
|
+
lastSeenAt = message.createdAt;
|
|
170
|
+
output.write(`sent ${message.id}\n`);
|
|
171
|
+
}
|
|
172
|
+
return "continue";
|
|
173
|
+
};
|
|
174
|
+
for await (const line of rl) {
|
|
175
|
+
const trimmed = line.trim();
|
|
176
|
+
try {
|
|
177
|
+
if (!trimmed) {
|
|
178
|
+
rl.prompt();
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
const result = await runSlashLine(trimmed);
|
|
182
|
+
if (result === "quit") {
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
output.write(`${error.message}\n`);
|
|
188
|
+
}
|
|
189
|
+
rl.prompt();
|
|
190
|
+
}
|
|
191
|
+
isOpen = false;
|
|
192
|
+
clearInterval(poll);
|
|
193
|
+
rl.close();
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=chat.js.map
|
package/dist/chat.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface CliCommand {
|
|
2
|
+
category: string;
|
|
3
|
+
command: string;
|
|
4
|
+
description: string;
|
|
5
|
+
examples: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare const cliCommands: CliCommand[];
|
|
8
|
+
export declare function renderCliCommands(commands?: CliCommand[]): string;
|
|
9
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +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"}
|
package/dist/commands.js
ADDED
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
export const cliCommands = [
|
|
2
|
+
{
|
|
3
|
+
category: "Interactive",
|
|
4
|
+
command: "thane chat [channel]",
|
|
5
|
+
description: "Open live terminal chat focused on a channel.",
|
|
6
|
+
examples: ["thane chat general"]
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
category: "Interactive",
|
|
10
|
+
command: "thane dm <handle>",
|
|
11
|
+
description: "Open live terminal chat focused on a DM.",
|
|
12
|
+
examples: ["thane dm alex"]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
category: "Accounts",
|
|
16
|
+
command: "thane signup <email> [--name \"...\"]",
|
|
17
|
+
description: "Create a local account and print a verification code.",
|
|
18
|
+
examples: ["thane signup you@example.com --name \"You\""]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
category: "Accounts",
|
|
22
|
+
command: "thane login <email>",
|
|
23
|
+
description: "Start email-code login for an existing or new account.",
|
|
24
|
+
examples: ["thane login you@example.com"]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
category: "Accounts",
|
|
28
|
+
command: "thane verify <email> <code>",
|
|
29
|
+
description: "Complete email-code login.",
|
|
30
|
+
examples: ["thane verify you@example.com 123456"]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
category: "Accounts",
|
|
34
|
+
command: "thane whoami [--json]",
|
|
35
|
+
description: "Show the current account, user, workspace, and role.",
|
|
36
|
+
examples: ["thane whoami --json"]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
category: "Accounts",
|
|
40
|
+
command: "thane logout",
|
|
41
|
+
description: "Sign out locally.",
|
|
42
|
+
examples: ["thane logout"]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
category: "Workspaces",
|
|
46
|
+
command: "thane workspaces [--json]",
|
|
47
|
+
description: "List workspaces and mark the active one.",
|
|
48
|
+
examples: ["thane workspaces"]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
category: "Workspaces",
|
|
52
|
+
command: "thane workspace current [--json]",
|
|
53
|
+
description: "Show the active workspace.",
|
|
54
|
+
examples: ["thane workspace current --json"]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
category: "Workspaces",
|
|
58
|
+
command: "thane workspace create <slug> [--name \"...\"]",
|
|
59
|
+
description: "Create a workspace.",
|
|
60
|
+
examples: ["thane workspace create acme --name \"Acme\""]
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
category: "Workspaces",
|
|
64
|
+
command: "thane workspace use <slug>",
|
|
65
|
+
description: "Switch the active workspace.",
|
|
66
|
+
examples: ["thane workspace use acme"]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
category: "Workspaces",
|
|
70
|
+
command: "thane workspace create-from-slack <export.zip> [--slug \"...\"] [--name \"...\"] [--apply] [--json]",
|
|
71
|
+
description: "Create or reuse a workspace from a Slack export ZIP, then import it when --apply is set.",
|
|
72
|
+
examples: ["thane workspace create-from-slack ./slack-export.zip --slug acme --apply"]
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
category: "Imports",
|
|
76
|
+
command: "thane import slack-export <export.zip> [--preview] [--apply] [--json]",
|
|
77
|
+
description: "Preview or import a Slack export ZIP into the active workspace.",
|
|
78
|
+
examples: ["thane import slack-export ./slack-export.zip --preview --json"]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
category: "Channels",
|
|
82
|
+
command: "thane channels [--json]",
|
|
83
|
+
description: "List readable channels in the active workspace.",
|
|
84
|
+
examples: ["thane channels --json"]
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
category: "Channels",
|
|
88
|
+
command: "thane channel create <name> [--topic \"...\"] [--private]",
|
|
89
|
+
description: "Create a public or private channel.",
|
|
90
|
+
examples: ["thane channel create design --topic \"Product design\"", "thane channel create leadership --private"]
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
category: "Channels",
|
|
94
|
+
command: "thane channel join <channel>",
|
|
95
|
+
description: "Join or subscribe to a public channel.",
|
|
96
|
+
examples: ["thane channel join design"]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
category: "Channels",
|
|
100
|
+
command: "thane channel leave <channel>",
|
|
101
|
+
description: "Leave or unsubscribe from a channel.",
|
|
102
|
+
examples: ["thane channel leave design"]
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
category: "Channels",
|
|
106
|
+
command: "thane channel invite <channel> <handle-or-email>",
|
|
107
|
+
description: "Add a workspace user to a channel.",
|
|
108
|
+
examples: ["thane channel invite leadership alex"]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
category: "Channels",
|
|
112
|
+
command: "thane channel members <channel> [--json]",
|
|
113
|
+
description: "List channel members.",
|
|
114
|
+
examples: ["thane channel members leadership --json"]
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
category: "Members",
|
|
118
|
+
command: "thane members [--json]",
|
|
119
|
+
description: "List workspace members.",
|
|
120
|
+
examples: ["thane members --json"]
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
category: "Members",
|
|
124
|
+
command: "thane invite <email> [--role admin|member] [--handle \"...\"]",
|
|
125
|
+
description: "Invite or add a workspace member.",
|
|
126
|
+
examples: ["thane invite alex@example.com --role admin --handle alex"]
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
category: "Members",
|
|
130
|
+
command: "thane member role <handle-or-email> <admin|member>",
|
|
131
|
+
description: "Change a member role.",
|
|
132
|
+
examples: ["thane member role alex member"]
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
category: "Users and DMs",
|
|
136
|
+
command: "thane users [--json]",
|
|
137
|
+
description: "List workspace users.",
|
|
138
|
+
examples: ["thane users --json"]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
category: "Users and DMs",
|
|
142
|
+
command: "thane user add <handle> [--name \"...\"]",
|
|
143
|
+
description: "Add a local workspace user without an account.",
|
|
144
|
+
examples: ["thane user add alex --name \"Alex\""]
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
category: "Users and DMs",
|
|
148
|
+
command: "thane dms [--json]",
|
|
149
|
+
description: "List DMs.",
|
|
150
|
+
examples: ["thane dms"]
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
category: "Users and DMs",
|
|
154
|
+
command: "thane dm-recent <handle> [--limit 20] [--json]",
|
|
155
|
+
description: "Show recent messages in a DM.",
|
|
156
|
+
examples: ["thane dm-recent alex --json"]
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
category: "Users and DMs",
|
|
160
|
+
command: "thane dm-send <handle> <message>",
|
|
161
|
+
description: "Send a DM.",
|
|
162
|
+
examples: ["thane dm-send alex \"Can you review this?\""]
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
category: "Messages",
|
|
166
|
+
command: "thane inbox [--all-workspaces] [--json]",
|
|
167
|
+
description: "Show unread conversation summaries.",
|
|
168
|
+
examples: ["thane inbox --json", "thane inbox --all-workspaces --json"]
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
category: "Messages",
|
|
172
|
+
command: "thane send <channel> <message>",
|
|
173
|
+
description: "Send a channel message.",
|
|
174
|
+
examples: ["thane send engineering \"Shipping the patch now\""]
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
category: "Messages",
|
|
178
|
+
command: "thane recent [channel] [--limit 20] [--since today] [--json]",
|
|
179
|
+
description: "Show recent messages.",
|
|
180
|
+
examples: ["thane recent engineering --json"]
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
category: "Messages",
|
|
184
|
+
command: "thane see-recent [channel] [--since \"2 days ago\"] [--json]",
|
|
185
|
+
description: "Agent-friendly recent-message lookup with a larger default limit.",
|
|
186
|
+
examples: ["thane see-recent --since \"2 days ago\" --json"]
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
category: "Messages",
|
|
190
|
+
command: "thane unread [--json]",
|
|
191
|
+
description: "Show unread messages.",
|
|
192
|
+
examples: ["thane unread --json"]
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
category: "Messages",
|
|
196
|
+
command: "thane mentions [--limit 20] [--since yesterday] [--json]",
|
|
197
|
+
description: "Show messages that mention you.",
|
|
198
|
+
examples: ["thane mentions --since yesterday --json"]
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
category: "Messages",
|
|
202
|
+
command: "thane search <query> [--json]",
|
|
203
|
+
description: "Search active-workspace messages.",
|
|
204
|
+
examples: ["thane search \"billing\" --json"]
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
category: "Messages",
|
|
208
|
+
command: "thane thread <message-id> [--json]",
|
|
209
|
+
description: "Show a message thread.",
|
|
210
|
+
examples: ["thane thread msg_123 --json"]
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
category: "Messages",
|
|
214
|
+
command: "thane reply <message-id> <message>",
|
|
215
|
+
description: "Reply in a thread.",
|
|
216
|
+
examples: ["thane reply msg_123 \"I can review this afternoon\""]
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
category: "Messages",
|
|
220
|
+
command: "thane react <message-id> <emoji>",
|
|
221
|
+
description: "React to a message.",
|
|
222
|
+
examples: ["thane react msg_123 eyes"]
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
category: "Messages",
|
|
226
|
+
command: "thane mark-read <channel>",
|
|
227
|
+
description: "Mark a channel read.",
|
|
228
|
+
examples: ["thane mark-read engineering"]
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
category: "Ask Thane",
|
|
232
|
+
command: "thane ask-thane status [--json]",
|
|
233
|
+
description: "Show whether Ask Thane is enabled in this workspace.",
|
|
234
|
+
examples: ["thane ask-thane status --json"]
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
category: "Ask Thane",
|
|
238
|
+
command: "thane ask-thane enable [--json]",
|
|
239
|
+
description: "Enable the local Ask Thane bridge.",
|
|
240
|
+
examples: ["thane ask-thane enable"]
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
category: "Ask Thane",
|
|
244
|
+
command: "thane ask-thane disable",
|
|
245
|
+
description: "Disable the local Ask Thane bridge.",
|
|
246
|
+
examples: ["thane ask-thane disable"]
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
category: "Notifications",
|
|
250
|
+
command: "thane notify location [origin|thane_cli|slack|both] [--json]",
|
|
251
|
+
description: "Read or update where Ask Thane should ping you.",
|
|
252
|
+
examples: ["thane notify location", "thane notify location both"]
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
category: "Billing",
|
|
256
|
+
command: "thane billing status [--json]",
|
|
257
|
+
description: "Show the active workspace plan and free-tier usage.",
|
|
258
|
+
examples: ["thane billing status --json"]
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
category: "Billing",
|
|
262
|
+
command: "thane billing checkout",
|
|
263
|
+
description: "Create a signed Stripe checkout URL for Thane Chat Team.",
|
|
264
|
+
examples: ["thane billing checkout"]
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
category: "Billing",
|
|
268
|
+
command: "thane billing activate-team-dev",
|
|
269
|
+
description: "Activate Thane Chat Team locally when dev activation is enabled.",
|
|
270
|
+
examples: ["THANE_ALLOW_DEV_BILLING_ACTIVATION=1 thane billing activate-team-dev"]
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
category: "Help",
|
|
274
|
+
command: "thane commands [--json]",
|
|
275
|
+
description: "Show the scriptable command registry.",
|
|
276
|
+
examples: ["thane commands", "thane commands --json"]
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
category: "Help",
|
|
280
|
+
command: "thane help",
|
|
281
|
+
description: "Show the full prose help screen.",
|
|
282
|
+
examples: ["thane help"]
|
|
283
|
+
}
|
|
284
|
+
];
|
|
285
|
+
export function renderCliCommands(commands = cliCommands) {
|
|
286
|
+
const categories = [...new Set(commands.map((command) => command.category))];
|
|
287
|
+
return categories
|
|
288
|
+
.map((category) => {
|
|
289
|
+
const rows = commands
|
|
290
|
+
.filter((command) => command.category === category)
|
|
291
|
+
.map((command) => ` ${command.command}\n ${command.description}`)
|
|
292
|
+
.join("\n");
|
|
293
|
+
return `${category}\n${rows}`;
|
|
294
|
+
})
|
|
295
|
+
.join("\n\n");
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC;QACE,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,sBAAsB;QAC/B,WAAW,EAAE,+CAA+C;QAC5D,QAAQ,EAAE,CAAC,oBAAoB,CAAC;KACjC;IACD;QACE,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,mBAAmB;QAC5B,WAAW,EAAE,0CAA0C;QACvD,QAAQ,EAAE,CAAC,eAAe,CAAC;KAC5B;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,uCAAuC;QAChD,WAAW,EAAE,uDAAuD;QACpE,QAAQ,EAAE,CAAC,6CAA6C,CAAC;KAC1D;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,wDAAwD;QACrE,QAAQ,EAAE,CAAC,6BAA6B,CAAC;KAC1C;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,6BAA6B;QACtC,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,CAAC,qCAAqC,CAAC;KAClD;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,uBAAuB;QAChC,WAAW,EAAE,sDAAsD;QACnE,QAAQ,EAAE,CAAC,qBAAqB,CAAC;KAClC;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,cAAc;QACvB,WAAW,EAAE,mBAAmB;QAChC,QAAQ,EAAE,CAAC,cAAc,CAAC;KAC3B;IACD;QACE,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,2BAA2B;QACpC,WAAW,EAAE,0CAA0C;QACvD,QAAQ,EAAE,CAAC,kBAAkB,CAAC;KAC/B;IACD;QACE,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,kCAAkC;QAC3C,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,CAAC,gCAAgC,CAAC;KAC7C;IACD;QACE,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,gDAAgD;QACzD,WAAW,EAAE,qBAAqB;QAClC,QAAQ,EAAE,CAAC,6CAA6C,CAAC;KAC1D;IACD;QACE,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,4BAA4B;QACrC,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,CAAC,0BAA0B,CAAC;KACvC;IACD;QACE,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,qGAAqG;QAC9G,WAAW,EAAE,0FAA0F;QACvG,QAAQ,EAAE,CAAC,0EAA0E,CAAC;KACvF;IACD;QACE,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,uEAAuE;QAChF,WAAW,EAAE,iEAAiE;QAC9E,QAAQ,EAAE,CAAC,+DAA+D,CAAC;KAC5E;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,yBAAyB;QAClC,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE,CAAC,uBAAuB,CAAC;KACpC;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,2DAA2D;QACpE,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE,CAAC,wDAAwD,EAAE,2CAA2C,CAAC;KAClH;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,8BAA8B;QACvC,WAAW,EAAE,wCAAwC;QACrD,QAAQ,EAAE,CAAC,2BAA2B,CAAC;KACxC;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,+BAA+B;QACxC,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,CAAC,4BAA4B,CAAC;KACzC;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,kDAAkD;QAC3D,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,CAAC,sCAAsC,CAAC;KACnD;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,0CAA0C;QACnD,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,CAAC,yCAAyC,CAAC;KACtD;IACD;QACE,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,wBAAwB;QACjC,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,CAAC,sBAAsB,CAAC;KACnC;IACD;QACE,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,+DAA+D;QACxE,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,CAAC,0DAA0D,CAAC;KACvE;IACD;QACE,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,oDAAoD;QAC7D,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,CAAC,+BAA+B,CAAC;KAC5C;IACD;QACE,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,sBAAsB;QAC/B,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,CAAC,oBAAoB,CAAC;KACjC;IACD;QACE,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,0CAA0C;QACnD,WAAW,EAAE,gDAAgD;QAC7D,QAAQ,EAAE,CAAC,qCAAqC,CAAC;KAClD;IACD;QACE,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,oBAAoB;QAC7B,WAAW,EAAE,WAAW;QACxB,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;IACD;QACE,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,gDAAgD;QACzD,WAAW,EAAE,+BAA+B;QAC5C,QAAQ,EAAE,CAAC,6BAA6B,CAAC;KAC1C;IACD;QACE,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,kCAAkC;QAC3C,WAAW,EAAE,YAAY;QACzB,QAAQ,EAAE,CAAC,6CAA6C,CAAC;KAC1D;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,yCAAyC;QAClD,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;KACxE;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,CAAC,mDAAmD,CAAC;KAChE;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,8DAA8D;QACvE,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,CAAC,iCAAiC,CAAC;KAC9C;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,8DAA8D;QACvE,WAAW,EAAE,mEAAmE;QAChF,QAAQ,EAAE,CAAC,gDAAgD,CAAC;KAC7D;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,uBAAuB;QAChC,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,CAAC,qBAAqB,CAAC;KAClC;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,0DAA0D;QACnE,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,CAAC,yCAAyC,CAAC;KACtD;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,+BAA+B;QACxC,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,CAAC,iCAAiC,CAAC;KAC9C;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,oCAAoC;QAC7C,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,CAAC,6BAA6B,CAAC;KAC1C;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,oCAAoC;QAC7C,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,CAAC,qDAAqD,CAAC;KAClE;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,kCAAkC;QAC3C,WAAW,EAAE,qBAAqB;QAClC,QAAQ,EAAE,CAAC,0BAA0B,CAAC;KACvC;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,2BAA2B;QACpC,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,CAAC,6BAA6B,CAAC;KAC1C;IACD;QACE,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,iCAAiC;QAC1C,WAAW,EAAE,sDAAsD;QACnE,QAAQ,EAAE,CAAC,+BAA+B,CAAC;KAC5C;IACD;QACE,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,iCAAiC;QAC1C,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,CAAC,wBAAwB,CAAC;KACrC;IACD;QACE,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,yBAAyB;QAClC,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE,CAAC,yBAAyB,CAAC;KACtC;IACD;QACE,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,8DAA8D;QACvE,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE,CAAC,uBAAuB,EAAE,4BAA4B,CAAC;KAClE;IACD;QACE,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,+BAA+B;QACxC,WAAW,EAAE,qDAAqD;QAClE,QAAQ,EAAE,CAAC,6BAA6B,CAAC;KAC1C;IACD;QACE,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,wBAAwB;QACjC,WAAW,EAAE,0DAA0D;QACvE,QAAQ,EAAE,CAAC,wBAAwB,CAAC;KACrC;IACD;QACE,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,iCAAiC;QAC1C,WAAW,EAAE,kEAAkE;QAC/E,QAAQ,EAAE,CAAC,sEAAsE,CAAC;KACnF;IACD;QACE,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,yBAAyB;QAClC,WAAW,EAAE,uCAAuC;QACpD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;KACtD;IACD;QACE,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE,kCAAkC;QAC/C,QAAQ,EAAE,CAAC,YAAY,CAAC;KACzB;CACF,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,WAAyB,WAAW;IACpE,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,UAAU;SACd,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChB,MAAM,IAAI,GAAG,QAAQ;aAClB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;aAClD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,WAAW,OAAO,CAAC,WAAW,EAAE,CAAC;aACtE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,GAAG,QAAQ,KAAK,IAAI,EAAE,CAAC;IAChC,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|