@scindo/cli 1.2.0 → 1.4.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/dist/commands/agent.d.ts +1 -1
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +15 -39
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +9 -3
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/push.d.ts +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +14 -36
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/read.d.ts +1 -1
- package/dist/commands/read.d.ts.map +1 -1
- package/dist/commands/read.js +8 -31
- package/dist/commands/read.js.map +1 -1
- package/dist/commands/send.d.ts +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +8 -30
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/tasks.d.ts +4 -0
- package/dist/commands/tasks.d.ts.map +1 -0
- package/dist/commands/tasks.js +101 -0
- package/dist/commands/tasks.js.map +1 -0
- package/dist/commands/workspaces.d.ts +2 -0
- package/dist/commands/workspaces.d.ts.map +1 -0
- package/dist/commands/workspaces.js +55 -0
- package/dist/commands/workspaces.js.map +1 -0
- package/dist/index.js +18 -36
- package/dist/index.js.map +1 -1
- package/dist/resolve-workspace.d.ts +10 -0
- package/dist/resolve-workspace.d.ts.map +1 -0
- package/dist/resolve-workspace.js +38 -0
- package/dist/resolve-workspace.js.map +1 -0
- package/dist/supabase.js +2 -2
- package/dist/supabase.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/agent.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function agentCommand(
|
|
1
|
+
export declare function agentCommand(workspaceName: string, message: string): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AASA,wBAAsB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmExF"}
|
package/dist/commands/agent.js
CHANGED
|
@@ -1,49 +1,27 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { getSupabase } from '../supabase.js';
|
|
3
|
-
import { getConfig
|
|
3
|
+
import { getConfig } from '../config.js';
|
|
4
4
|
import { consumeSSEStream } from '../stream.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
import { APP_URL } from '../constants.js';
|
|
6
|
+
import { resolveWorkspace } from '../resolve-workspace.js';
|
|
7
|
+
const AGENT_USER_ID = '00000000-0000-0000-0000-000000000001';
|
|
8
|
+
export async function agentCommand(workspaceName, message) {
|
|
8
9
|
const supabase = getSupabase();
|
|
9
10
|
const config = getConfig();
|
|
10
11
|
if (!config.userId) {
|
|
11
12
|
console.log(chalk.red('Not logged in. Run: scindo login'));
|
|
12
13
|
return;
|
|
13
14
|
}
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
if (!workspaceId) {
|
|
17
|
-
const { data: member } = await supabase
|
|
18
|
-
.from('workspace_members')
|
|
19
|
-
.select('workspace_id')
|
|
20
|
-
.limit(1)
|
|
21
|
-
.single();
|
|
22
|
-
if (!member) {
|
|
23
|
-
console.log(chalk.red('No workspaces found'));
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
workspaceId = member.workspace_id;
|
|
27
|
-
setConfig({ lastWorkspaceId: workspaceId });
|
|
28
|
-
}
|
|
29
|
-
// Find channel
|
|
30
|
-
const { data: channel, error: chErr } = await supabase
|
|
31
|
-
.from('channels')
|
|
32
|
-
.select('id, name')
|
|
33
|
-
.eq('workspace_id', workspaceId)
|
|
34
|
-
.eq('slug', slug)
|
|
35
|
-
.single();
|
|
36
|
-
if (chErr || !channel) {
|
|
37
|
-
console.log(chalk.red(`Channel #${slug} not found`));
|
|
15
|
+
const resolved = await resolveWorkspace(supabase, workspaceName);
|
|
16
|
+
if (!resolved)
|
|
38
17
|
return;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
const mentions = AGENT_USER_ID ? [AGENT_USER_ID] : [];
|
|
18
|
+
// Auto-prepend @Agent mention if not already present
|
|
19
|
+
const content = message.includes('@Agent') ? message : `@Agent ${message}`;
|
|
20
|
+
const mentions = [AGENT_USER_ID];
|
|
43
21
|
// Send message
|
|
44
22
|
const { error: sendErr } = await supabase.from('messages').insert({
|
|
45
|
-
workspace_id: workspaceId,
|
|
46
|
-
channel_id:
|
|
23
|
+
workspace_id: resolved.workspaceId,
|
|
24
|
+
channel_id: resolved.channelId,
|
|
47
25
|
user_id: config.userId,
|
|
48
26
|
content,
|
|
49
27
|
mentions,
|
|
@@ -63,24 +41,22 @@ export async function agentCommand(channelName, message) {
|
|
|
63
41
|
'Authorization': `Bearer ${config.accessToken}`,
|
|
64
42
|
},
|
|
65
43
|
body: JSON.stringify({
|
|
66
|
-
channelId:
|
|
67
|
-
workspaceId,
|
|
44
|
+
channelId: resolved.channelId,
|
|
45
|
+
workspaceId: resolved.workspaceId,
|
|
68
46
|
stream: true,
|
|
69
47
|
}),
|
|
70
48
|
});
|
|
71
49
|
const contentType = res.headers.get('content-type') ?? '';
|
|
72
50
|
if (contentType.includes('text/event-stream')) {
|
|
73
|
-
// Stream tokens to stdout
|
|
74
51
|
await consumeSSEStream(res, (token) => process.stdout.write(token), () => process.stdout.write('\n'));
|
|
75
52
|
}
|
|
76
53
|
else {
|
|
77
|
-
// Non-streaming response — wait for agent to post via Supabase
|
|
78
54
|
const body = await res.json();
|
|
79
55
|
if (body.error) {
|
|
80
56
|
console.log(chalk.red(`Agent error: ${body.error}`));
|
|
81
57
|
}
|
|
82
58
|
else {
|
|
83
|
-
console.log(chalk.dim('Agent is processing... check the
|
|
59
|
+
console.log(chalk.dim('Agent is processing... check the workspace for a response.'));
|
|
84
60
|
}
|
|
85
61
|
}
|
|
86
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,MAAM,aAAa,GAAG,sCAAsC,CAAA;AAE5D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,aAAqB,EAAE,OAAe;IACvE,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAA;QAC1D,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IAChE,IAAI,CAAC,QAAQ;QAAE,OAAM;IAErB,qDAAqD;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,OAAO,EAAE,CAAA;IAC1E,MAAM,QAAQ,GAAG,CAAC,aAAa,CAAC,CAAA;IAEhC,eAAe;IACf,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QAChE,YAAY,EAAE,QAAQ,CAAC,WAAW;QAClC,UAAU,EAAE,QAAQ,CAAC,SAAS;QAC9B,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,OAAO;QACP,QAAQ;KACT,CAAC,CAAA;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC5D,OAAM;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAA;IACtC,OAAO,CAAC,GAAG,EAAE,CAAA;IAEb,gCAAgC;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,4BAA4B,EAAE;YAC9D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,MAAM,CAAC,WAAW,EAAE;aAChD;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,MAAM,EAAE,IAAI;aACb,CAAC;SACH,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QAEzD,IAAI,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC9C,MAAM,gBAAgB,CACpB,GAAG,EACH,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EACtC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CACjC,CAAA;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAwB,CAAA;YACnD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YACtD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC,CAAA;YACtF,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC,CAAA;IAC7D,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAOA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAOA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA4ClD;AAkDD,wBAAgB,aAAa,IAAI,IAAI,CAGpC"}
|
package/dist/commands/login.js
CHANGED
|
@@ -15,6 +15,12 @@ export async function loginCommand() {
|
|
|
15
15
|
console.log('Waiting for login...');
|
|
16
16
|
try {
|
|
17
17
|
const { accessToken, refreshToken } = await tokenPromise;
|
|
18
|
+
if (!accessToken || !refreshToken) {
|
|
19
|
+
console.log(chalk.red('Received empty tokens from callback'));
|
|
20
|
+
server.close();
|
|
21
|
+
process.exit(1);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
18
24
|
// Decode the JWT to get the user ID
|
|
19
25
|
const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY);
|
|
20
26
|
const { data } = await supabase.auth.getUser(accessToken);
|
|
@@ -30,9 +36,9 @@ export async function loginCommand() {
|
|
|
30
36
|
catch (err) {
|
|
31
37
|
console.log(chalk.red(`Login failed: ${err instanceof Error ? err.message : 'Unknown error'}`));
|
|
32
38
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
// Close the server and let Node exit naturally
|
|
40
|
+
server.close();
|
|
41
|
+
server.unref();
|
|
36
42
|
}
|
|
37
43
|
function startCallbackServer() {
|
|
38
44
|
return new Promise((resolveSetup) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAErD,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAEzC,oDAAoD;IACpD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,mBAAmB,EAAE,CAAA;IAElE,MAAM,QAAQ,GAAG,GAAG,OAAO,mBAAmB,IAAI,EAAE,CAAA;IACpD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,QAAQ,IAAI,CAAC,CAAC,CAAA;IAE3E,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAA;IAEpB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IAEnC,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,YAAY,CAAA;QAExD,oCAAoC;QACpC,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAA;QAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAEzD,SAAS,CAAC;YACR,WAAW,EAAE,YAAY;YACzB,eAAe,EAAE,iBAAiB;YAClC,WAAW;YACX,YAAY;YACZ,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;SAC5B,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC,CAAA;IAC7E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;IACjG,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/push.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AASA,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFrE"}
|
package/dist/commands/push.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { getSupabase } from '../supabase.js';
|
|
3
|
-
import { getConfig
|
|
3
|
+
import { getConfig } from '../config.js';
|
|
4
4
|
import { consumeSSEStream } from '../stream.js';
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { APP_URL } from '../constants.js';
|
|
6
|
+
import { resolveWorkspace } from '../resolve-workspace.js';
|
|
7
|
+
const AGENT_USER_ID = '00000000-0000-0000-0000-000000000001';
|
|
7
8
|
export async function pushCommand(options) {
|
|
8
9
|
const supabase = getSupabase();
|
|
9
10
|
const config = getConfig();
|
|
@@ -21,42 +22,19 @@ export async function pushCommand(options) {
|
|
|
21
22
|
console.log(chalk.red('No input received from stdin'));
|
|
22
23
|
return;
|
|
23
24
|
}
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
if (!workspaceId) {
|
|
27
|
-
const { data: member } = await supabase
|
|
28
|
-
.from('workspace_members')
|
|
29
|
-
.select('workspace_id')
|
|
30
|
-
.limit(1)
|
|
31
|
-
.single();
|
|
32
|
-
if (!member) {
|
|
33
|
-
console.log(chalk.red('No workspaces found'));
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
workspaceId = member.workspace_id;
|
|
37
|
-
setConfig({ lastWorkspaceId: workspaceId });
|
|
38
|
-
}
|
|
39
|
-
// Find channel
|
|
40
|
-
const { data: channel, error: chErr } = await supabase
|
|
41
|
-
.from('channels')
|
|
42
|
-
.select('id, name')
|
|
43
|
-
.eq('workspace_id', workspaceId)
|
|
44
|
-
.eq('slug', slug)
|
|
45
|
-
.single();
|
|
46
|
-
if (chErr || !channel) {
|
|
47
|
-
console.log(chalk.red(`Channel #${slug} not found`));
|
|
25
|
+
const resolved = await resolveWorkspace(supabase, options.workspace);
|
|
26
|
+
if (!resolved)
|
|
48
27
|
return;
|
|
49
|
-
}
|
|
50
28
|
// Optionally mention agent
|
|
51
29
|
const mentions = [];
|
|
52
|
-
if (options.mentionAgent
|
|
53
|
-
content = `@
|
|
30
|
+
if (options.mentionAgent) {
|
|
31
|
+
content = `@Agent ${content}`;
|
|
54
32
|
mentions.push(AGENT_USER_ID);
|
|
55
33
|
}
|
|
56
34
|
// Send message
|
|
57
35
|
const { error: sendErr } = await supabase.from('messages').insert({
|
|
58
|
-
workspace_id: workspaceId,
|
|
59
|
-
channel_id:
|
|
36
|
+
workspace_id: resolved.workspaceId,
|
|
37
|
+
channel_id: resolved.channelId,
|
|
60
38
|
user_id: config.userId,
|
|
61
39
|
content,
|
|
62
40
|
mentions: mentions.length > 0 ? mentions : undefined,
|
|
@@ -65,9 +43,9 @@ export async function pushCommand(options) {
|
|
|
65
43
|
console.log(chalk.red(`Failed to send: ${sendErr.message}`));
|
|
66
44
|
return;
|
|
67
45
|
}
|
|
68
|
-
console.log(chalk.green(`Pushed to
|
|
46
|
+
console.log(chalk.green(`Pushed to ${options.workspace}`));
|
|
69
47
|
// If agent mentioned, trigger streaming response
|
|
70
|
-
if (options.mentionAgent
|
|
48
|
+
if (options.mentionAgent) {
|
|
71
49
|
try {
|
|
72
50
|
const res = await fetch(`${APP_URL}/api/agent/channel-respond`, {
|
|
73
51
|
method: 'POST',
|
|
@@ -76,8 +54,8 @@ export async function pushCommand(options) {
|
|
|
76
54
|
'Authorization': `Bearer ${config.accessToken}`,
|
|
77
55
|
},
|
|
78
56
|
body: JSON.stringify({
|
|
79
|
-
channelId:
|
|
80
|
-
workspaceId,
|
|
57
|
+
channelId: resolved.channelId,
|
|
58
|
+
workspaceId: resolved.workspaceId,
|
|
81
59
|
stream: true,
|
|
82
60
|
}),
|
|
83
61
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/read.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"AAmCA,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDnG"}
|
package/dist/commands/read.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { getSupabase } from '../supabase.js';
|
|
3
|
-
import { getConfig
|
|
3
|
+
import { getConfig } from '../config.js';
|
|
4
|
+
import { resolveWorkspace } from '../resolve-workspace.js';
|
|
4
5
|
function formatTime(iso) {
|
|
5
6
|
const d = new Date(iso);
|
|
6
7
|
return d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
|
|
@@ -21,41 +22,17 @@ function getDisplayName(profiles) {
|
|
|
21
22
|
return profiles[0]?.display_name ?? 'Unknown';
|
|
22
23
|
return profiles?.display_name ?? 'Unknown';
|
|
23
24
|
}
|
|
24
|
-
export async function readCommand(
|
|
25
|
+
export async function readCommand(workspaceName, options) {
|
|
25
26
|
const supabase = getSupabase();
|
|
26
27
|
const config = getConfig();
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
if (!workspaceId) {
|
|
30
|
-
const { data: member } = await supabase
|
|
31
|
-
.from('workspace_members')
|
|
32
|
-
.select('workspace_id')
|
|
33
|
-
.limit(1)
|
|
34
|
-
.single();
|
|
35
|
-
if (!member) {
|
|
36
|
-
console.log(chalk.red('No workspaces found'));
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
workspaceId = member.workspace_id;
|
|
40
|
-
setConfig({ lastWorkspaceId: workspaceId });
|
|
41
|
-
}
|
|
42
|
-
// Find channel
|
|
43
|
-
const { data: channel, error: chErr } = await supabase
|
|
44
|
-
.from('channels')
|
|
45
|
-
.select('id, name')
|
|
46
|
-
.eq('workspace_id', workspaceId)
|
|
47
|
-
.eq('slug', slug)
|
|
48
|
-
.single();
|
|
49
|
-
if (chErr || !channel) {
|
|
50
|
-
console.log(chalk.red(`Channel #${slug} not found`));
|
|
28
|
+
const resolved = await resolveWorkspace(supabase, workspaceName);
|
|
29
|
+
if (!resolved)
|
|
51
30
|
return;
|
|
52
|
-
}
|
|
53
|
-
setConfig({ lastChannelId: channel.id });
|
|
54
31
|
const limit = parseInt(options.limit ?? '20', 10);
|
|
55
32
|
const { data: messages, error } = await supabase
|
|
56
33
|
.from('messages')
|
|
57
34
|
.select('id, content, created_at, user_id, is_edited, reply_count, profiles:user_id(display_name)')
|
|
58
|
-
.eq('channel_id',
|
|
35
|
+
.eq('channel_id', resolved.channelId)
|
|
59
36
|
.is('thread_id', null)
|
|
60
37
|
.is('deleted_at', null)
|
|
61
38
|
.order('created_at', { ascending: false })
|
|
@@ -65,7 +42,7 @@ export async function readCommand(channelName, options) {
|
|
|
65
42
|
return;
|
|
66
43
|
}
|
|
67
44
|
const msgs = (messages ?? []).reverse();
|
|
68
|
-
console.log(chalk.bold(
|
|
45
|
+
console.log(chalk.bold(workspaceName));
|
|
69
46
|
console.log();
|
|
70
47
|
let lastDate = '';
|
|
71
48
|
for (const msg of msgs) {
|
|
@@ -86,7 +63,7 @@ export async function readCommand(channelName, options) {
|
|
|
86
63
|
await supabase
|
|
87
64
|
.from('channel_members')
|
|
88
65
|
.update({ last_read_at: new Date().toISOString() })
|
|
89
|
-
.eq('channel_id',
|
|
66
|
+
.eq('channel_id', resolved.channelId)
|
|
90
67
|
.eq('user_id', config.userId);
|
|
91
68
|
}
|
|
92
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/send.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function sendCommand(
|
|
1
|
+
export declare function sendCommand(workspaceName: string, message: string): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=send.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBvF"}
|
package/dist/commands/send.js
CHANGED
|
@@ -1,42 +1,20 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { getSupabase } from '../supabase.js';
|
|
3
|
-
import { getConfig
|
|
4
|
-
|
|
3
|
+
import { getConfig } from '../config.js';
|
|
4
|
+
import { resolveWorkspace } from '../resolve-workspace.js';
|
|
5
|
+
export async function sendCommand(workspaceName, message) {
|
|
5
6
|
const supabase = getSupabase();
|
|
6
7
|
const config = getConfig();
|
|
7
8
|
if (!config.userId) {
|
|
8
9
|
console.log(chalk.red('Not logged in. Run: scindo login'));
|
|
9
10
|
return;
|
|
10
11
|
}
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
if (!workspaceId) {
|
|
14
|
-
const { data: member } = await supabase
|
|
15
|
-
.from('workspace_members')
|
|
16
|
-
.select('workspace_id')
|
|
17
|
-
.limit(1)
|
|
18
|
-
.single();
|
|
19
|
-
if (!member) {
|
|
20
|
-
console.log(chalk.red('No workspaces found'));
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
workspaceId = member.workspace_id;
|
|
24
|
-
setConfig({ lastWorkspaceId: workspaceId });
|
|
25
|
-
}
|
|
26
|
-
// Find channel
|
|
27
|
-
const { data: channel, error: chErr } = await supabase
|
|
28
|
-
.from('channels')
|
|
29
|
-
.select('id, name')
|
|
30
|
-
.eq('workspace_id', workspaceId)
|
|
31
|
-
.eq('slug', slug)
|
|
32
|
-
.single();
|
|
33
|
-
if (chErr || !channel) {
|
|
34
|
-
console.log(chalk.red(`Channel #${slug} not found`));
|
|
12
|
+
const resolved = await resolveWorkspace(supabase, workspaceName);
|
|
13
|
+
if (!resolved)
|
|
35
14
|
return;
|
|
36
|
-
}
|
|
37
15
|
const { error } = await supabase.from('messages').insert({
|
|
38
|
-
workspace_id: workspaceId,
|
|
39
|
-
channel_id:
|
|
16
|
+
workspace_id: resolved.workspaceId,
|
|
17
|
+
channel_id: resolved.channelId,
|
|
40
18
|
user_id: config.userId,
|
|
41
19
|
content: message,
|
|
42
20
|
});
|
|
@@ -44,6 +22,6 @@ export async function sendCommand(channelName, message) {
|
|
|
44
22
|
console.log(chalk.red(`Failed to send: ${error.message}`));
|
|
45
23
|
return;
|
|
46
24
|
}
|
|
47
|
-
console.log(chalk.green(`Message sent to
|
|
25
|
+
console.log(chalk.green(`Message sent to ${workspaceName}`));
|
|
48
26
|
}
|
|
49
27
|
//# sourceMappingURL=send.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,aAAqB,EAAE,OAAe;IACtE,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAA;QAC1D,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IAChE,IAAI,CAAC,QAAQ;QAAE,OAAM;IAErB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QACvD,YAAY,EAAE,QAAQ,CAAC,WAAW;QAClC,UAAU,EAAE,QAAQ,CAAC,SAAS;QAC9B,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAA;IAEF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC1D,OAAM;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC,CAAA;AAC9D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AAcA,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGjF"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getSupabase } from '../supabase.js';
|
|
3
|
+
import { getConfig, setConfig } from '../config.js';
|
|
4
|
+
const STATUS_ICONS = {
|
|
5
|
+
open: chalk.yellow('●'),
|
|
6
|
+
running: chalk.blue('●'),
|
|
7
|
+
needs_approval: chalk.magenta('●'),
|
|
8
|
+
completed: chalk.green('●'),
|
|
9
|
+
failed: chalk.red('●'),
|
|
10
|
+
ci_pending: chalk.cyan('●'),
|
|
11
|
+
shipped: chalk.green('✓'),
|
|
12
|
+
};
|
|
13
|
+
export async function tasksCommand(options) {
|
|
14
|
+
const supabase = getSupabase();
|
|
15
|
+
const config = getConfig();
|
|
16
|
+
let workspaceId = config.lastWorkspaceId;
|
|
17
|
+
if (options.workspace) {
|
|
18
|
+
const slug = options.workspace.toLowerCase();
|
|
19
|
+
const { data: members } = await supabase
|
|
20
|
+
.from('workspace_members')
|
|
21
|
+
.select('workspace_id, workspaces(id, name, slug)');
|
|
22
|
+
const match = (members ?? []).find((m) => {
|
|
23
|
+
const ws = m.workspaces;
|
|
24
|
+
return ws?.slug === slug || ws?.name?.toLowerCase() === slug;
|
|
25
|
+
});
|
|
26
|
+
if (!match?.workspaces) {
|
|
27
|
+
console.log(chalk.red(`Workspace "${options.workspace}" not found`));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const ws = match.workspaces;
|
|
31
|
+
workspaceId = ws.id;
|
|
32
|
+
setConfig({ lastWorkspaceId: workspaceId });
|
|
33
|
+
console.log(chalk.dim(`Workspace: ${ws.name}\n`));
|
|
34
|
+
}
|
|
35
|
+
else if (!workspaceId) {
|
|
36
|
+
const { data: member } = await supabase
|
|
37
|
+
.from('workspace_members')
|
|
38
|
+
.select('workspace_id, workspaces(id, name, slug)')
|
|
39
|
+
.limit(1)
|
|
40
|
+
.single();
|
|
41
|
+
if (!member?.workspaces) {
|
|
42
|
+
console.log(chalk.red('No workspaces found'));
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const ws = member.workspaces;
|
|
46
|
+
workspaceId = ws.id;
|
|
47
|
+
setConfig({ lastWorkspaceId: workspaceId });
|
|
48
|
+
console.log(chalk.dim(`Workspace: ${ws.name}\n`));
|
|
49
|
+
}
|
|
50
|
+
// Fetch tasks (exclude subtasks)
|
|
51
|
+
const { data: tasks, error } = await supabase
|
|
52
|
+
.from('tasks')
|
|
53
|
+
.select('id, title, status, updated_at, parent_task_id, sort_order')
|
|
54
|
+
.eq('workspace_id', workspaceId)
|
|
55
|
+
.is('parent_task_id', null)
|
|
56
|
+
.order('sort_order', { ascending: true, nullsFirst: false })
|
|
57
|
+
.order('updated_at', { ascending: false });
|
|
58
|
+
if (error) {
|
|
59
|
+
console.log(chalk.red(`Error: ${error.message}`));
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (!tasks || tasks.length === 0) {
|
|
63
|
+
console.log(chalk.dim('No tasks found'));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
// Fetch unread counts
|
|
67
|
+
const { data: unreads } = await supabase.rpc('get_task_unread_counts', {
|
|
68
|
+
p_workspace_id: workspaceId,
|
|
69
|
+
p_user_id: config.userId,
|
|
70
|
+
});
|
|
71
|
+
const unreadMap = new Map();
|
|
72
|
+
if (unreads) {
|
|
73
|
+
for (const u of unreads) {
|
|
74
|
+
if (u.unread_count > 0)
|
|
75
|
+
unreadMap.set(u.task_id, u.unread_count);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Split into active and done
|
|
79
|
+
const active = tasks.filter((t) => t.status !== 'completed' && t.status !== 'shipped');
|
|
80
|
+
const done = tasks.filter((t) => t.status === 'completed' || t.status === 'shipped');
|
|
81
|
+
console.log(chalk.bold('Tasks'));
|
|
82
|
+
console.log();
|
|
83
|
+
for (const task of active) {
|
|
84
|
+
const icon = STATUS_ICONS[task.status] ?? '○';
|
|
85
|
+
const unread = unreadMap.get(task.id);
|
|
86
|
+
let line = ` ${icon} ${task.title}`;
|
|
87
|
+
if (unread) {
|
|
88
|
+
line += chalk.yellow(` (${unread} unread)`);
|
|
89
|
+
}
|
|
90
|
+
console.log(line);
|
|
91
|
+
}
|
|
92
|
+
if (done.length > 0) {
|
|
93
|
+
console.log();
|
|
94
|
+
console.log(chalk.dim(` Done (${done.length})`));
|
|
95
|
+
for (const task of done) {
|
|
96
|
+
const icon = STATUS_ICONS[task.status] ?? '○';
|
|
97
|
+
console.log(chalk.dim(` ${icon} ${task.title}`));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/commands/workspaces.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuDvD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getSupabase } from '../supabase.js';
|
|
3
|
+
import { getConfig } from '../config.js';
|
|
4
|
+
export async function workspacesCommand() {
|
|
5
|
+
const supabase = getSupabase();
|
|
6
|
+
const config = getConfig();
|
|
7
|
+
const { data: members, error } = await supabase
|
|
8
|
+
.from('workspace_members')
|
|
9
|
+
.select('workspace_id, role, workspaces(id, name, slug)')
|
|
10
|
+
.eq('user_id', config.userId)
|
|
11
|
+
.order('created_at');
|
|
12
|
+
if (error) {
|
|
13
|
+
console.log(chalk.red(`Error: ${error.message}`));
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (!members || members.length === 0) {
|
|
17
|
+
console.log(chalk.dim('No workspaces found'));
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// Collect unique workspaces
|
|
21
|
+
const workspaces = [];
|
|
22
|
+
const seen = new Set();
|
|
23
|
+
for (const m of members) {
|
|
24
|
+
const ws = m.workspaces;
|
|
25
|
+
if (!ws || seen.has(ws.id))
|
|
26
|
+
continue;
|
|
27
|
+
seen.add(ws.id);
|
|
28
|
+
workspaces.push({ ...ws, role: m.role });
|
|
29
|
+
}
|
|
30
|
+
// Fetch unread counts for each workspace
|
|
31
|
+
const unreadMap = new Map();
|
|
32
|
+
for (const ws of workspaces) {
|
|
33
|
+
const { data: unreads } = await supabase.rpc('get_unread_counts', {
|
|
34
|
+
p_workspace_id: ws.id,
|
|
35
|
+
p_user_id: config.userId,
|
|
36
|
+
});
|
|
37
|
+
if (unreads) {
|
|
38
|
+
let total = 0;
|
|
39
|
+
for (const u of unreads) {
|
|
40
|
+
total += u.unread_count;
|
|
41
|
+
}
|
|
42
|
+
if (total > 0)
|
|
43
|
+
unreadMap.set(ws.id, total);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
console.log(chalk.bold('Workspaces'));
|
|
47
|
+
console.log();
|
|
48
|
+
for (const ws of workspaces) {
|
|
49
|
+
const active = ws.id === config.lastWorkspaceId ? chalk.green(' ←') : '';
|
|
50
|
+
const unread = unreadMap.get(ws.id);
|
|
51
|
+
const badge = unread ? chalk.yellow(` (${unread} unread)`) : '';
|
|
52
|
+
console.log(` ${ws.name}${badge}${active}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=workspaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../src/commands/workspaces.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import { loginCommand, logoutCommand } from './commands/login.js';
|
|
4
|
-
import { channelsCommand } from './commands/channels.js';
|
|
5
4
|
import { readCommand } from './commands/read.js';
|
|
6
5
|
import { sendCommand } from './commands/send.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { unreadCommand } from './commands/unread.js';
|
|
6
|
+
import { tasksCommand } from './commands/tasks.js';
|
|
7
|
+
import { workspacesCommand } from './commands/workspaces.js';
|
|
10
8
|
import { agentCommand } from './commands/agent.js';
|
|
11
9
|
import { pushCommand } from './commands/push.js';
|
|
12
10
|
import { isLoggedIn } from './config.js';
|
|
@@ -32,53 +30,37 @@ program
|
|
|
32
30
|
.description('Log out of Scindo')
|
|
33
31
|
.action(logoutCommand);
|
|
34
32
|
program
|
|
35
|
-
.command('
|
|
36
|
-
.description('List
|
|
37
|
-
.
|
|
38
|
-
.action(channelsCommand);
|
|
33
|
+
.command('workspaces')
|
|
34
|
+
.description('List all workspaces with unread counts')
|
|
35
|
+
.action(workspacesCommand);
|
|
39
36
|
program
|
|
40
37
|
.command('read')
|
|
41
|
-
.description('Read recent messages
|
|
42
|
-
.argument('<
|
|
38
|
+
.description('Read recent messages in a workspace')
|
|
39
|
+
.argument('<workspace>', 'Workspace name (e.g. scindo)')
|
|
43
40
|
.option('-n, --limit <count>', 'Number of messages to show', '20')
|
|
44
41
|
.action(readCommand);
|
|
45
42
|
program
|
|
46
43
|
.command('send')
|
|
47
|
-
.description('Send a message to a
|
|
48
|
-
.argument('<
|
|
44
|
+
.description('Send a message to a workspace')
|
|
45
|
+
.argument('<workspace>', 'Workspace name (e.g. scindo)')
|
|
49
46
|
.argument('<message>', 'Message content')
|
|
50
47
|
.action(sendCommand);
|
|
51
48
|
program
|
|
52
|
-
.command('
|
|
53
|
-
.description('
|
|
54
|
-
.
|
|
55
|
-
.
|
|
56
|
-
.action(dmCommand);
|
|
57
|
-
program
|
|
58
|
-
.command('thread')
|
|
59
|
-
.description('Read the latest thread in a channel')
|
|
60
|
-
.argument('<channel>', 'Channel name (e.g. #general)')
|
|
61
|
-
.action(threadCommand);
|
|
62
|
-
program
|
|
63
|
-
.command('reply')
|
|
64
|
-
.description('Reply to the last viewed thread')
|
|
65
|
-
.argument('<message>', 'Reply content')
|
|
66
|
-
.action(replyCommand);
|
|
67
|
-
program
|
|
68
|
-
.command('unread')
|
|
69
|
-
.description('Show all unread messages across channels and DMs')
|
|
70
|
-
.action(unreadCommand);
|
|
49
|
+
.command('tasks')
|
|
50
|
+
.description('List tasks in a workspace')
|
|
51
|
+
.option('-w, --workspace <name>', 'Workspace name or slug')
|
|
52
|
+
.action(tasksCommand);
|
|
71
53
|
program
|
|
72
54
|
.command('agent')
|
|
73
|
-
.description('Send a message to the AI agent
|
|
74
|
-
.argument('<
|
|
55
|
+
.description('Send a message to the AI agent and stream the response')
|
|
56
|
+
.argument('<workspace>', 'Workspace name (e.g. scindo)')
|
|
75
57
|
.argument('<message>', 'Message to send to the agent')
|
|
76
58
|
.action(agentCommand);
|
|
77
59
|
program
|
|
78
60
|
.command('push')
|
|
79
|
-
.description('Push stdin content to a
|
|
80
|
-
.requiredOption('--
|
|
81
|
-
.option('--mention-agent', 'Mention @
|
|
61
|
+
.description('Push stdin content to a workspace')
|
|
62
|
+
.requiredOption('--workspace <name>', 'Workspace name (e.g. scindo)')
|
|
63
|
+
.option('--mention-agent', 'Mention @Agent to trigger the agent')
|
|
82
64
|
.action(pushCommand);
|
|
83
65
|
program.parse();
|
|
84
66
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,OAAO,CAAC;KAChB,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;IACvC,mDAAmD;IACnD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,IAAI,UAAU,EAAE,EAAE,CAAC;QAC1D,MAAM,cAAc,EAAE,CAAA;IACxB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kBAAkB,CAAC;KAC/B,MAAM,CAAC,YAAY,CAAC,CAAA;AAEvB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,aAAa,CAAC,CAAA;AAExB,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,iBAAiB,CAAC,CAAA;AAE5B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,QAAQ,CAAC,aAAa,EAAE,8BAA8B,CAAC;KACvD,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,IAAI,CAAC;KACjE,MAAM,CAAC,WAAW,CAAC,CAAA;AAEtB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+BAA+B,CAAC;KAC5C,QAAQ,CAAC,aAAa,EAAE,8BAA8B,CAAC;KACvD,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;KACxC,MAAM,CAAC,WAAW,CAAC,CAAA;AAEtB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;KAC1D,MAAM,CAAC,YAAY,CAAC,CAAA;AAEvB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wDAAwD,CAAC;KACrE,QAAQ,CAAC,aAAa,EAAE,8BAA8B,CAAC;KACvD,QAAQ,CAAC,WAAW,EAAE,8BAA8B,CAAC;KACrD,MAAM,CAAC,YAAY,CAAC,CAAA;AAEvB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,cAAc,CAAC,oBAAoB,EAAE,8BAA8B,CAAC;KACpE,MAAM,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;KAChE,MAAM,CAAC,WAAW,CAAC,CAAA;AAEtB,OAAO,CAAC,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SupabaseClient } from '@supabase/supabase-js';
|
|
2
|
+
/**
|
|
3
|
+
* Resolve a workspace name to its workspace ID and primary channel ID.
|
|
4
|
+
* Since each workspace has one channel, this replaces channel lookup.
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveWorkspace(supabase: SupabaseClient, workspaceName: string): Promise<{
|
|
7
|
+
workspaceId: string;
|
|
8
|
+
channelId: string;
|
|
9
|
+
} | null>;
|
|
10
|
+
//# sourceMappingURL=resolve-workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-workspace.d.ts","sourceRoot":"","sources":["../src/resolve-workspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAGtD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,cAAc,EACxB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAqC5D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getConfig, setConfig } from './config.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolve a workspace name to its workspace ID and primary channel ID.
|
|
5
|
+
* Since each workspace has one channel, this replaces channel lookup.
|
|
6
|
+
*/
|
|
7
|
+
export async function resolveWorkspace(supabase, workspaceName) {
|
|
8
|
+
const config = getConfig();
|
|
9
|
+
const slug = workspaceName.toLowerCase().replace(/^#/, '');
|
|
10
|
+
// Find workspace by name or slug
|
|
11
|
+
const { data: members } = await supabase
|
|
12
|
+
.from('workspace_members')
|
|
13
|
+
.select('workspace_id, workspaces(id, name, slug)')
|
|
14
|
+
.eq('user_id', config.userId);
|
|
15
|
+
const match = (members ?? []).find((m) => {
|
|
16
|
+
const ws = m.workspaces;
|
|
17
|
+
return ws?.slug === slug || ws?.name?.toLowerCase() === slug;
|
|
18
|
+
});
|
|
19
|
+
if (!match?.workspaces) {
|
|
20
|
+
console.log(chalk.red(`Workspace "${workspaceName}" not found`));
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const ws = match.workspaces;
|
|
24
|
+
setConfig({ lastWorkspaceId: ws.id });
|
|
25
|
+
// Get the workspace's channel
|
|
26
|
+
const { data: channel } = await supabase
|
|
27
|
+
.from('channels')
|
|
28
|
+
.select('id')
|
|
29
|
+
.eq('workspace_id', ws.id)
|
|
30
|
+
.limit(1)
|
|
31
|
+
.single();
|
|
32
|
+
if (!channel) {
|
|
33
|
+
console.log(chalk.red(`No channel found in workspace "${ws.name}"`));
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
return { workspaceId: ws.id, channelId: channel.id };
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=resolve-workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-workspace.js","sourceRoot":"","sources":["../src/resolve-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAElD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAwB,EACxB,aAAqB;IAErB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAE1D,iCAAiC;IACjC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ;SACrC,IAAI,CAAC,mBAAmB,CAAC;SACzB,MAAM,CAAC,0CAA0C,CAAC;SAClD,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IAE/B,MAAM,KAAK,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACvC,MAAM,EAAE,GAAG,CAAC,CAAC,UAAmE,CAAA;QAChF,OAAO,EAAE,EAAE,IAAI,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,aAAa,aAAa,CAAC,CAAC,CAAA;QAChE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,EAAE,GAAG,KAAK,CAAC,UAAmE,CAAA;IACpF,SAAS,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAErC,8BAA8B;IAC9B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ;SACrC,IAAI,CAAC,UAAU,CAAC;SAChB,MAAM,CAAC,IAAI,CAAC;SACZ,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC;SACzB,KAAK,CAAC,CAAC,CAAC;SACR,MAAM,EAAE,CAAA;IAEX,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;QACpE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAA;AACtD,CAAC"}
|
package/dist/supabase.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createClient } from '@supabase/supabase-js';
|
|
2
2
|
import { SUPABASE_URL, SUPABASE_ANON_KEY } from './constants.js';
|
|
3
|
-
import { getConfig, setConfig
|
|
3
|
+
import { getConfig, setConfig } from './config.js';
|
|
4
4
|
let client = null;
|
|
5
5
|
export function getSupabase() {
|
|
6
6
|
if (client)
|
|
@@ -29,7 +29,7 @@ export async function refreshSession() {
|
|
|
29
29
|
refresh_token: config.refreshToken,
|
|
30
30
|
});
|
|
31
31
|
if (error || !data.session) {
|
|
32
|
-
|
|
32
|
+
// Don't wipe config — the access token may still be valid
|
|
33
33
|
return false;
|
|
34
34
|
}
|
|
35
35
|
setConfig({
|
package/dist/supabase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAElD,IAAI,MAAM,GAA0B,IAAI,CAAA;AAExC,MAAM,UAAU,WAAW;IACzB,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAA;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,iBAAiB,EAAE;QACrD,MAAM,EAAE;YACN,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,CAAC,WAAW,EAAE;aAC9C;SACF;KACF,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAA;IAC9D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;QACzD,aAAa,EAAE,MAAM,CAAC,YAAY;KACnC,CAAC,CAAA;IAEF,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,0DAA0D;QAC1D,OAAO,KAAK,CAAA;IACd,CAAC;IAED,SAAS,CAAC;QACR,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;QACtC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;KACzC,CAAC,CAAA;IAEF,4CAA4C;IAC5C,MAAM,GAAG,IAAI,CAAA;IAEb,OAAO,IAAI,CAAA;AACb,CAAC"}
|