@doist/comms-cli 3.3.0 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +6 -0
  3. package/dist/commands/conversation/{done.d.ts → archive.d.ts} +2 -1
  4. package/dist/commands/conversation/archive.d.ts.map +1 -0
  5. package/dist/commands/conversation/archive.js +47 -0
  6. package/dist/commands/conversation/archive.js.map +1 -0
  7. package/dist/commands/conversation/index.d.ts.map +1 -1
  8. package/dist/commands/conversation/index.js +12 -1
  9. package/dist/commands/conversation/index.js.map +1 -1
  10. package/dist/commands/thread/helpers.d.ts +35 -0
  11. package/dist/commands/thread/helpers.d.ts.map +1 -1
  12. package/dist/commands/thread/helpers.js +116 -3
  13. package/dist/commands/thread/helpers.js.map +1 -1
  14. package/dist/commands/thread/index.d.ts.map +1 -1
  15. package/dist/commands/thread/index.js +34 -1
  16. package/dist/commands/thread/index.js.map +1 -1
  17. package/dist/commands/thread/mutate.d.ts +1 -0
  18. package/dist/commands/thread/mutate.d.ts.map +1 -1
  19. package/dist/commands/thread/mutate.js +25 -8
  20. package/dist/commands/thread/mutate.js.map +1 -1
  21. package/dist/commands/thread/read.d.ts.map +1 -1
  22. package/dist/commands/thread/read.js +16 -101
  23. package/dist/commands/thread/read.js.map +1 -1
  24. package/dist/commands/thread/unread.d.ts +6 -0
  25. package/dist/commands/thread/unread.d.ts.map +1 -0
  26. package/dist/commands/thread/unread.js +52 -0
  27. package/dist/commands/thread/unread.js.map +1 -0
  28. package/dist/lib/api.d.ts.map +1 -1
  29. package/dist/lib/api.js +13 -1
  30. package/dist/lib/api.js.map +1 -1
  31. package/dist/lib/errors.d.ts +14 -1
  32. package/dist/lib/errors.d.ts.map +1 -1
  33. package/dist/lib/errors.js +37 -10
  34. package/dist/lib/errors.js.map +1 -1
  35. package/dist/lib/refs.d.ts +8 -0
  36. package/dist/lib/refs.d.ts.map +1 -1
  37. package/dist/lib/refs.js +59 -13
  38. package/dist/lib/refs.js.map +1 -1
  39. package/dist/lib/skills/content.d.ts +1 -1
  40. package/dist/lib/skills/content.d.ts.map +1 -1
  41. package/dist/lib/skills/content.js +9 -1
  42. package/dist/lib/skills/content.js.map +1 -1
  43. package/package.json +1 -1
  44. package/dist/commands/conversation/done.d.ts.map +0 -1
  45. package/dist/commands/conversation/done.js +0 -32
  46. package/dist/commands/conversation/done.js.map +0 -1
@@ -1,109 +1,24 @@
1
- import { getCommsClient } from '../../lib/api.js';
2
- import { CliError } from '../../lib/errors.js';
3
- import { readStdinToEnd } from '../../lib/input.js';
4
- import { formatJson, pluralize } from '../../lib/output.js';
5
- import { assertChannelIsPublic } from '../../lib/public-channels.js';
6
- import { resolveThreadId } from '../../lib/refs.js';
1
+ import { runThreadReadStateMutation } from './helpers.js';
7
2
  export async function markThreadRead(refs, options) {
8
- const rawRefs = await collectThreadRefs(refs);
9
- if (rawRefs.length === 0) {
10
- throw new CliError('INVALID_REF', 'No thread references provided. Pass refs as arguments or pipe them via stdin.');
11
- }
12
- const needsConfirmation = rawRefs.length > 1 && !options.yes && !options.dryRun;
13
- if (options.json && needsConfirmation) {
14
- throw new CliError('MISSING_YES_FLAG', '--yes is required to execute bulk mark-read in --json mode.');
15
- }
16
- const client = await getCommsClient();
17
- const unreadCache = new Map();
18
- const jsonStatuses = [];
19
- const textStatuses = [];
20
- for (const rawRef of rawRefs) {
21
- const threadId = resolveThreadId(rawRef);
22
- const loaded = await loadThread(client, unreadCache, threadId);
23
- if (!loaded.isUnread) {
24
- jsonStatuses.push({ id: threadId, isRead: true });
25
- textStatuses.push('unchanged');
26
- if (!options.json) {
27
- console.log(`Thread ${threadLabel(loaded.thread)} is already read.`);
28
- }
29
- continue;
30
- }
31
- if (needsConfirmation || options.dryRun) {
32
- jsonStatuses.push({ id: threadId, isRead: true });
33
- textStatuses.push('preview');
34
- if (!options.json) {
35
- const prefix = options.dryRun ? 'Dry run: would' : 'Would';
36
- console.log(`${prefix} mark read thread ${threadLabel(loaded.thread)}.`);
37
- }
38
- continue;
39
- }
40
- await client.threads.markRead({
41
- id: threadId,
42
- objIndex: getLatestObjIndex(loaded.thread),
43
- });
44
- unreadCache.get(loaded.thread.workspaceId)?.delete(threadId);
45
- jsonStatuses.push({ id: threadId, isRead: true });
46
- textStatuses.push('changed');
47
- if (!options.json) {
48
- console.log(`Thread ${threadLabel(loaded.thread)} marked read.`);
49
- }
50
- }
51
- if (options.json && !options.dryRun) {
52
- console.log(formatJson(jsonStatuses));
53
- return;
54
- }
55
- if (!options.json && rawRefs.length > 1) {
56
- printSummary(textStatuses);
57
- }
58
- if (!options.json && needsConfirmation) {
59
- console.log('Use --yes to confirm.');
60
- }
61
- }
62
- async function collectThreadRefs(refs) {
63
- const inlineRefs = refs.map((ref) => ref.trim()).filter(Boolean);
64
- const stdinContent = await readStdinToEnd();
65
- if (!stdinContent)
66
- return inlineRefs;
67
- const stdinRefs = stdinContent
68
- .split(/\r?\n/)
69
- .map((line) => line.trim())
70
- .filter((line) => line !== '' && !line.startsWith('#'));
71
- return [...inlineRefs, ...stdinRefs];
72
- }
73
- async function loadThread(client, unreadCache, threadId) {
74
- const thread = await client.threads.getThread(threadId);
75
- await assertChannelIsPublic(thread.channelId, thread.workspaceId);
76
- let unreadIds = unreadCache.get(thread.workspaceId);
77
- if (!unreadIds) {
78
- const unread = await client.threads.getUnread(thread.workspaceId);
79
- unreadIds = new Set(unread.data.map((unreadThread) => unreadThread.threadId));
80
- unreadCache.set(thread.workspaceId, unreadIds);
81
- }
82
- return { thread, isUnread: unreadIds.has(thread.id) };
3
+ await runThreadReadStateMutation(refs, options, {
4
+ verb: 'read',
5
+ plan: async (_client, threadId) => ({
6
+ scope: '',
7
+ isUnchanged: (state) => state.lastReadObjIndex === null,
8
+ status: () => ({ id: threadId, isRead: true }),
9
+ apply: async (client, state) => {
10
+ await client.threads.markRead({
11
+ id: threadId,
12
+ objIndex: getLatestObjIndex(state.thread),
13
+ });
14
+ return null;
15
+ },
16
+ }),
17
+ });
83
18
  }
84
19
  function getLatestObjIndex(thread) {
85
20
  return Math.max(...[thread.lastComment?.objIndex, thread.lastObjIndex, thread.commentCount, 0]
86
21
  .filter((value) => typeof value === 'number')
87
22
  .map((value) => Math.max(value, 0)));
88
23
  }
89
- function threadLabel(thread) {
90
- return `${thread.title} (${thread.id})`;
91
- }
92
- function printSummary(statuses) {
93
- const summary = [
94
- summarizeStatus(statuses, 'changed'),
95
- summarizeStatus(statuses, 'unchanged'),
96
- summarizeStatus(statuses, 'preview'),
97
- ].filter(Boolean);
98
- console.log('');
99
- console.log(`Summary: ${summary.join(', ')}`);
100
- }
101
- function summarizeStatus(statuses, status) {
102
- const count = statuses.filter((value) => value === status).length;
103
- if (count === 0) {
104
- return null;
105
- }
106
- const noun = status === 'preview' ? pluralize(count, 'preview') : pluralize(count, 'thread');
107
- return status === 'preview' ? `${count} ${noun}` : `${count} ${status} ${noun}`;
108
- }
109
24
  //# sourceMappingURL=read.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/commands/thread/read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/commands/thread/read.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AASzD,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,IAAc,EACd,OAA8B;IAE9B,MAAM,0BAA0B,CAAiB,IAAI,EAAE,OAAO,EAAE;QAC5D,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YAChC,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,KAAK,IAAI;YACvD,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC9C,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;gBAC3B,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;oBAC1B,EAAE,EAAE,QAAQ;oBACZ,QAAQ,EAAE,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC;iBAC5C,CAAC,CAAA;gBACF,OAAO,IAAI,CAAA;YACf,CAAC;SACJ,CAAC;KACL,CAAC,CAAA;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACrC,OAAO,IAAI,CAAC,GAAG,CACX,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;SACzE,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;SAC7D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAC1C,CAAA;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { MutationOptions } from '../../lib/options.js';
2
+ export type MarkThreadUnreadOptions = MutationOptions & {
3
+ from?: string;
4
+ };
5
+ export declare function markThreadUnread(refs: string[], options: MarkThreadUnreadOptions): Promise<void>;
6
+ //# sourceMappingURL=unread.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unread.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/unread.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAI3D,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAYzE,wBAAsB,gBAAgB,CAClC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -0,0 +1,52 @@
1
+ import { CliError } from '../../lib/errors.js';
2
+ import { resolveCommentId } from '../../lib/refs.js';
3
+ import { runThreadReadStateMutation } from './helpers.js';
4
+ /** The API marks the thread body and every comment unread from `-1`. */
5
+ const WHOLE_THREAD = -1;
6
+ export async function markThreadUnread(refs, options) {
7
+ const from = options.from;
8
+ await runThreadReadStateMutation(refs, options, {
9
+ verb: 'unread',
10
+ validateRefs: (rawRefs) => {
11
+ if (from !== undefined && rawRefs.length > 1) {
12
+ throw new CliError('CONFLICTING_OPTIONS', '--from applies to a single thread; pass one thread ref when using it.');
13
+ }
14
+ },
15
+ plan: async (client, threadId) => {
16
+ const target = from === undefined
17
+ ? WHOLE_THREAD
18
+ : await resolveFromObjIndex(client, threadId, from);
19
+ return {
20
+ scope: from === undefined ? '' : ` from comment ${from}`,
21
+ // Already unread at or before the target: nothing to move.
22
+ isUnchanged: (state) => state.lastReadObjIndex !== null && state.lastReadObjIndex <= target,
23
+ status: (state, outcome) => ({
24
+ id: threadId,
25
+ isRead: false,
26
+ lastReadObjIndex: outcome === 'unchanged' ? (state.lastReadObjIndex ?? target) : target,
27
+ }),
28
+ apply: async (client) => {
29
+ await client.threads.markUnread({ id: threadId, objIndex: target });
30
+ return target;
31
+ },
32
+ };
33
+ },
34
+ });
35
+ }
36
+ /**
37
+ * Turns a comment ref into the `objIndex` to hand `markUnread`: the API takes
38
+ * the last comment that stays READ, so a comment at index N becomes the first
39
+ * unread one when the thread is marked unread from N - 1.
40
+ */
41
+ async function resolveFromObjIndex(client, threadId, commentRef) {
42
+ const commentId = resolveCommentId(commentRef);
43
+ const comment = await client.comments.getComment(commentId);
44
+ if (comment.threadId !== threadId) {
45
+ throw new CliError('INVALID_REF', `Comment ${commentId} belongs to thread ${comment.threadId}, not ${threadId}.`);
46
+ }
47
+ if (typeof comment.objIndex !== 'number') {
48
+ throw new CliError('INVALID_REF', `Comment ${commentId} has no object index; cannot mark unread from it.`);
49
+ }
50
+ return comment.objIndex - 1;
51
+ }
52
+ //# sourceMappingURL=unread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unread.js","sourceRoot":"","sources":["../../../src/commands/thread/unread.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAWzD,wEAAwE;AACxE,MAAM,YAAY,GAAG,CAAC,CAAC,CAAA;AAEvB,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,IAAc,EACd,OAAgC;IAEhC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IAEzB,MAAM,0BAA0B,CAAmB,IAAI,EAAE,OAAO,EAAE;QAC9D,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;YACtB,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,QAAQ,CACd,qBAAqB,EACrB,uEAAuE,CAC1E,CAAA;YACL,CAAC;QACL,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;YAC7B,MAAM,MAAM,GACR,IAAI,KAAK,SAAS;gBACd,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,MAAM,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;YAC3D,OAAO;gBACH,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,IAAI,EAAE;gBACxD,2DAA2D;gBAC3D,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CACnB,KAAK,CAAC,gBAAgB,KAAK,IAAI,IAAI,KAAK,CAAC,gBAAgB,IAAI,MAAM;gBACvE,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;oBACzB,EAAE,EAAE,QAAQ;oBACZ,MAAM,EAAE,KAAK;oBACb,gBAAgB,EACZ,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;iBAC5E,CAAC;gBACF,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;oBACpB,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;oBACnE,OAAO,MAAM,CAAA;gBACjB,CAAC;aACJ,CAAA;QACL,CAAC;KACJ,CAAC,CAAA;AACN,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,mBAAmB,CAC9B,MAAgB,EAChB,QAAgB,EAChB,UAAkB;IAElB,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IAE3D,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,QAAQ,CACd,aAAa,EACb,WAAW,SAAS,sBAAsB,OAAO,CAAC,QAAQ,SAAS,QAAQ,GAAG,CACjF,CAAA;IACL,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,QAAQ,CACd,aAAa,EACb,WAAW,SAAS,mDAAmD,CAC1E,CAAA;IACL,CAAC;IAED,OAAO,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;AAC/B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,aAAa,EACrB,MAAM,kBAAkB,CAAA;AA4PzB,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,wBAAwB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,QAAQ,CAIV;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC,CAMxD;AAKD,wBAAsB,eAAe,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAO5D;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAsB,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B/E;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAOpD;AAqBD,wBAAsB,iBAAiB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3C,OAAO,CAAC,aAAa,EAAE,CAAC,CAE1B;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAClC,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkB9B;AAED,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAG9E;AAED,wBAAsB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAG9E;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB,GAAG,OAAO,CAAC,KAAK,CAAC,CAGjB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,OAAO,CAAC,KAAK,CAAC,CAGjB;AAED,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhF;AAED,wBAAsB,eAAe,CACjC,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAsB,oBAAoB,CACtC,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpF;AAED,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzF;AAED,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,aAAa,EACrB,MAAM,kBAAkB,CAAA;AAuRzB,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,wBAAwB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,QAAQ,CAIV;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC,CAMxD;AAKD,wBAAsB,eAAe,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAO5D;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAsB,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B/E;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAOpD;AAqBD,wBAAsB,iBAAiB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3C,OAAO,CAAC,aAAa,EAAE,CAAC,CAE1B;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAClC,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkB9B;AAED,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAG9E;AAED,wBAAsB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAG9E;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB,GAAG,OAAO,CAAC,KAAK,CAAC,CAGjB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,OAAO,CAAC,KAAK,CAAC,CAGjB;AAED,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhF;AAED,wBAAsB,eAAe,CACjC,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAsB,oBAAoB,CACtC,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpF;AAED,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzF;AAED,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA"}
package/dist/lib/api.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { CommsApi, } from '@doist/comms-sdk';
2
2
  import { getApiTokenSnapshot } from './auth.js';
3
3
  import { getConfig, updateConfig } from './config.js';
4
- import { CliError, isForbidden, isInsufficientScope, isInvalidToken } from './errors.js';
4
+ import { CliError, getCommsErrorString, isConflict, isForbidden, isInsufficientScope, isInvalidToken, isMalformedId, isNotFound, } from './errors.js';
5
5
  import { ensureMutationAllowed, isMutatingMethod } from './permissions.js';
6
6
  import { getProgressTracker } from './progress.js';
7
7
  import { withSpinner } from './spinner.js';
@@ -25,6 +25,7 @@ const API_SPINNER_MESSAGES = {
25
25
  'threads.reopenThread': { text: 'Reopening thread...', color: 'yellow' },
26
26
  'threads.updateThread': { text: 'Updating thread...', color: 'yellow' },
27
27
  'threads.markRead': { text: 'Marking thread read...', color: 'yellow' },
28
+ 'threads.markUnread': { text: 'Marking thread unread...', color: 'yellow' },
28
29
  'threads.muteThread': { text: 'Muting thread...', color: 'yellow' },
29
30
  'threads.unmuteThread': { text: 'Unmuting thread...', color: 'yellow' },
30
31
  'threads.deleteThread': { text: 'Deleting thread...', color: 'yellow' },
@@ -174,6 +175,17 @@ function wrapResult(result, progressTracker, spinnerConfig) {
174
175
  'Re-authenticate with `tdc auth login`, then check `tdc auth status`',
175
176
  ]);
176
177
  }
178
+ if (isNotFound(error)) {
179
+ throw new CliError('NOT_FOUND', 'Comms could not find that resource: 404.', [
180
+ 'Check the id, or pass the Comms URL instead',
181
+ ]);
182
+ }
183
+ if (isMalformedId(error)) {
184
+ throw new CliError('INVALID_REF', `Comms rejected the id: ${getCommsErrorString(error) ?? 'it does not decode to a Comms id (409)'}`);
185
+ }
186
+ if (isConflict(error)) {
187
+ throw new CliError('CONFLICT', `Comms refused this request: ${getCommsErrorString(error) ?? '409 Conflict'}`);
188
+ }
177
189
  throw error;
178
190
  });
179
191
  if (spinnerConfig) {
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export type { ErrorType } from '@doist/cli-core';
6
6
  * This union provides intellisense suggestions while still accepting any string,
7
7
  * allowing dynamic codes and future additions.
8
8
  */
9
- export type ErrorCode = 'AUTH_DCR_FAILED' | 'AUTH_FAILED' | 'AUTH_REFRESH_EXPIRED' | 'AUTH_REFRESH_TRANSIENT' | 'AUTH_TOKEN_EXCHANGE_FAILED' | 'FORBIDDEN' | 'INSUFFICIENT_SCOPE' | 'INVALID_CREDENTIAL_STORE' | 'INVALID_TOKEN' | 'NO_TOKEN' | 'READ_ONLY' | 'CONFLICTING_OPTIONS' | 'INVALID_CURSOR' | 'INVALID_DATE' | 'INVALID_ID' | 'INVALID_LIMIT' | 'INVALID_MINUTES' | 'INVALID_REF' | 'INVALID_SCOPE' | 'INVALID_STATE' | 'INVALID_TYPE' | 'INVALID_URL' | 'INVALID_VALUE' | 'MISSING_CONTENT' | 'MISSING_YES_FLAG' | 'UNKNOWN_KEY' | 'INVALID_NAME' | 'MISSING_USERS' | 'ACCOUNT_NOT_FOUND' | 'CHANNEL_NOT_FOUND' | 'GROUP_NOT_FOUND' | 'NOT_FOUND' | 'USER_NOT_FOUND' | 'WORKSPACE_NOT_FOUND' | 'AMBIGUOUS_CHANNEL' | 'AMBIGUOUS_GROUP' | 'AMBIGUOUS_USER' | 'AMBIGUOUS_WORKSPACE' | 'ALREADY_INSTALLED' | 'BATCH_FAILED' | 'PAGINATION_STALLED' | 'FILE_NOT_FOUND' | 'FILE_READ_ERROR' | 'NOT_CREATOR' | 'NOT_INSTALLED' | 'UNKNOWN_AGENT' | 'API_ERROR' | 'INTERNAL_ERROR' | 'CONFIG_READ_FAILED' | 'CONFIG_INVALID_JSON' | 'CONFIG_INVALID_SHAPE' | (string & {});
9
+ export type ErrorCode = 'AUTH_DCR_FAILED' | 'AUTH_FAILED' | 'AUTH_REFRESH_EXPIRED' | 'AUTH_REFRESH_TRANSIENT' | 'AUTH_TOKEN_EXCHANGE_FAILED' | 'FORBIDDEN' | 'INSUFFICIENT_SCOPE' | 'INVALID_CREDENTIAL_STORE' | 'INVALID_TOKEN' | 'NO_TOKEN' | 'READ_ONLY' | 'CONFLICTING_OPTIONS' | 'INVALID_CURSOR' | 'INVALID_DATE' | 'INVALID_ID' | 'INVALID_LIMIT' | 'INVALID_MINUTES' | 'INVALID_REF' | 'INVALID_SCOPE' | 'INVALID_STATE' | 'INVALID_TYPE' | 'INVALID_URL' | 'INVALID_VALUE' | 'MISSING_CONTENT' | 'MISSING_YES_FLAG' | 'UNKNOWN_KEY' | 'INVALID_NAME' | 'MISSING_USERS' | 'ACCOUNT_NOT_FOUND' | 'CHANNEL_NOT_FOUND' | 'GROUP_NOT_FOUND' | 'NOT_FOUND' | 'USER_NOT_FOUND' | 'WORKSPACE_NOT_FOUND' | 'AMBIGUOUS_CHANNEL' | 'AMBIGUOUS_GROUP' | 'AMBIGUOUS_USER' | 'AMBIGUOUS_WORKSPACE' | 'ALREADY_INSTALLED' | 'BATCH_FAILED' | 'PAGINATION_STALLED' | 'FILE_NOT_FOUND' | 'FILE_READ_ERROR' | 'NOT_CREATOR' | 'NOT_INSTALLED' | 'UNKNOWN_AGENT' | 'API_ERROR' | 'CONFLICT' | 'INTERNAL_ERROR' | 'CONFIG_READ_FAILED' | 'CONFIG_INVALID_JSON' | 'CONFIG_INVALID_SHAPE' | (string & {});
10
10
  /**
11
11
  * Check whether an error is a Comms API 403 "Insufficient scope" response.
12
12
  * Works with any error shaped like CommsRequestError (httpStatusCode + responseData).
@@ -27,6 +27,19 @@ export declare function isForbidden(error: unknown): boolean;
27
27
  * indistinguishable on the wire, so the hint covers both.
28
28
  */
29
29
  export declare function isInvalidToken(error: unknown): boolean;
30
+ /** True when `error` is a CliError carrying one of the given codes. */
31
+ export declare function isCliErrorCode(error: unknown, ...codes: ErrorCode[]): boolean;
32
+ export declare function isNotFound(error: unknown): boolean;
33
+ export declare function isConflict(error: unknown): boolean;
34
+ /** The server's `error_string`, when the response body carried one. */
35
+ export declare function getCommsErrorString(error: unknown): string | null;
36
+ /** The server's numeric `error_code`, when the response body carried one. */
37
+ export declare function getCommsErrorCode(error: unknown): number | null;
38
+ /**
39
+ * Comms answers 409 with error_code 217 when an id does not base58-decode to
40
+ * 16 bytes. That is a bad reference, not a conflict.
41
+ */
42
+ export declare function isMalformedId(error: unknown): boolean;
30
43
  /**
31
44
  * Comms-flavoured CliError that preserves the historical positional
32
45
  * `(code, message, hints?, type?)` signature used across hundreds of call
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE7F,OAAO,EAAE,YAAY,EAAE,CAAA;AACvB,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAEf,iBAAiB,GACjB,aAAa,GACb,sBAAsB,GACtB,wBAAwB,GACxB,4BAA4B,GAC5B,WAAW,GACX,oBAAoB,GACpB,0BAA0B,GAC1B,eAAe,GACf,UAAU,GACV,WAAW,GAEX,qBAAqB,GACrB,gBAAgB,GAChB,cAAc,GACd,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,aAAa,GACb,eAAe,GACf,eAAe,GACf,cAAc,GACd,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,kBAAkB,GAClB,aAAa,GACb,cAAc,GACd,eAAe,GAEf,mBAAmB,GACnB,mBAAmB,GACnB,iBAAiB,GACjB,WAAW,GACX,gBAAgB,GAChB,qBAAqB,GAErB,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,GAChB,qBAAqB,GAErB,mBAAmB,GACnB,cAAc,GACd,oBAAoB,GACpB,gBAAgB,GAChB,iBAAiB,GACjB,aAAa,GACb,eAAe,GACf,eAAe,GAEf,WAAW,GACX,gBAAgB,GAEhB,oBAAoB,GACpB,qBAAqB,GACrB,sBAAsB,GAEtB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAYnB;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAW3D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEnD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAS,SAAQ,YAAY,CAAC,SAAS,CAAC;gBAE7C,IAAI,EAAE,SAAS,GAAG,YAAY,EAC9B,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,IAAI,GAAE,SAAmB;CAIhC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE7F,OAAO,EAAE,YAAY,EAAE,CAAA;AACvB,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAEf,iBAAiB,GACjB,aAAa,GACb,sBAAsB,GACtB,wBAAwB,GACxB,4BAA4B,GAC5B,WAAW,GACX,oBAAoB,GACpB,0BAA0B,GAC1B,eAAe,GACf,UAAU,GACV,WAAW,GAEX,qBAAqB,GACrB,gBAAgB,GAChB,cAAc,GACd,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,aAAa,GACb,eAAe,GACf,eAAe,GACf,cAAc,GACd,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,kBAAkB,GAClB,aAAa,GACb,cAAc,GACd,eAAe,GAEf,mBAAmB,GACnB,mBAAmB,GACnB,iBAAiB,GACjB,WAAW,GACX,gBAAgB,GAChB,qBAAqB,GAErB,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,GAChB,qBAAqB,GAErB,mBAAmB,GACnB,cAAc,GACd,oBAAoB,GACpB,gBAAgB,GAChB,iBAAiB,GACjB,aAAa,GACb,eAAe,GACf,eAAe,GAEf,WAAW,GACX,UAAU,GACV,gBAAgB,GAEhB,oBAAoB,GACpB,qBAAqB,GACrB,sBAAsB,GAEtB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAYnB;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAK3D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEnD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAE7E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAElD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAElD;AASD,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGjE;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAG/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAErD;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAS,SAAQ,YAAY,CAAC,SAAS,CAAC;gBAE7C,IAAI,EAAE,SAAS,GAAG,YAAY,EAC9B,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,IAAI,GAAE,SAAmB;CAIhC"}
@@ -12,16 +12,8 @@ function hasCommsStatusCode(error, status) {
12
12
  * Works with any error shaped like CommsRequestError (httpStatusCode + responseData).
13
13
  */
14
14
  export function isInsufficientScope(error) {
15
- if (!hasCommsStatusCode(error, 403))
16
- return false;
17
- if (!('responseData' in error))
18
- return false;
19
- const data = error.responseData;
20
- return (typeof data === 'object' &&
21
- data !== null &&
22
- 'error_string' in data &&
23
- typeof data.error_string === 'string' &&
24
- data.error_string.includes('Insufficient scope'));
15
+ return (hasCommsStatusCode(error, 403) &&
16
+ (getCommsErrorString(error)?.includes('Insufficient scope') ?? false));
25
17
  }
26
18
  /**
27
19
  * Check whether an error is a plain workspace-permission 403 — i.e. a 403 that
@@ -42,6 +34,41 @@ export function isForbidden(error) {
42
34
  export function isInvalidToken(error) {
43
35
  return hasCommsStatusCode(error, 401);
44
36
  }
37
+ /** True when `error` is a CliError carrying one of the given codes. */
38
+ export function isCliErrorCode(error, ...codes) {
39
+ return error instanceof CliError && codes.includes(error.code);
40
+ }
41
+ export function isNotFound(error) {
42
+ return hasCommsStatusCode(error, 404);
43
+ }
44
+ export function isConflict(error) {
45
+ return hasCommsStatusCode(error, 409);
46
+ }
47
+ function getCommsResponseField(error, field) {
48
+ if (typeof error !== 'object' || error === null || !('responseData' in error))
49
+ return undefined;
50
+ const data = error.responseData;
51
+ if (typeof data !== 'object' || data === null || !(field in data))
52
+ return undefined;
53
+ return data[field];
54
+ }
55
+ /** The server's `error_string`, when the response body carried one. */
56
+ export function getCommsErrorString(error) {
57
+ const value = getCommsResponseField(error, 'error_string');
58
+ return typeof value === 'string' ? value : null;
59
+ }
60
+ /** The server's numeric `error_code`, when the response body carried one. */
61
+ export function getCommsErrorCode(error) {
62
+ const value = getCommsResponseField(error, 'error_code');
63
+ return typeof value === 'number' ? value : null;
64
+ }
65
+ /**
66
+ * Comms answers 409 with error_code 217 when an id does not base58-decode to
67
+ * 16 bytes. That is a bad reference, not a conflict.
68
+ */
69
+ export function isMalformedId(error) {
70
+ return isConflict(error) && getCommsErrorCode(error) === 217;
71
+ }
45
72
  /**
46
73
  * Comms-flavoured CliError that preserves the historical positional
47
74
  * `(code, message, hints?, type?)` signature used across hundreds of call
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAqC,MAAM,iBAAiB,CAAA;AAE7F,OAAO,EAAE,YAAY,EAAE,CAAA;AAsEvB,SAAS,kBAAkB,CAAC,KAAc,EAAE,MAAc;IACtD,OAAO,CACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,gBAAgB,IAAI,KAAK;QACzB,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ;QACxC,KAAK,CAAC,cAAc,KAAK,MAAM,CAClC,CAAA;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAC9C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACjD,IAAI,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAA;IAC/B,OAAO,CACH,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,cAAc,IAAI,IAAI;QACtB,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;QACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CACnD,CAAA;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACtC,OAAO,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;AACxE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IACzC,OAAO,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACzC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,QAAS,SAAQ,YAAuB;IACjD,YACI,IAA8B,EAC9B,OAAe,EACf,KAAgB,EAChB,OAAkB,OAAO;QAEzB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACzC,CAAC;CACJ"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,14 @@ export declare function extractId(ref: string): string;
12
12
  export declare function extractNumericId(ref: string): number;
13
13
  export declare function parseNumericIdRefs(refs: string, label?: string): number[] | null;
14
14
  export declare function looksLikeRawId(ref: string): boolean;
15
+ export declare const BASE58_ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
16
+ /**
17
+ * Comms entity ids are 16 bytes, base58-encoded. About 3% of them carry no
18
+ * digit, so `looksLikeRawId` misses them; decoding is the only check that
19
+ * also keeps a long single-word name a name. Ids are timestamp-led, so they
20
+ * encode to 21 characters today and 22 at most (58^22 > 2^128).
21
+ */
22
+ export declare function looksLikeOpaqueCommsId(ref: string): boolean;
15
23
  export interface ParsedCommsUrl {
16
24
  workspaceId?: number;
17
25
  channelId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"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"}
package/dist/lib/refs.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { parseCommsURL } from '@doist/comms-sdk';
2
2
  import { fetchWorkspaces, getGroup, getWorkspaceGroups, getCommsClient } from './api.js';
3
- import { CliError } from './errors.js';
3
+ import { CliError, isCliErrorCode } from './errors.js';
4
4
  function normalizeRef(ref) {
5
5
  return ref.trim();
6
6
  }
@@ -59,8 +59,26 @@ export function looksLikeRawId(ref) {
59
59
  return false;
60
60
  return /\d/.test(normalized);
61
61
  }
62
- function looksLikeOpaqueCommsId(ref) {
63
- return /^Cb[A-Za-z0-9_-]{18,}$/.test(ref);
62
+ export const BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
63
+ /**
64
+ * Comms entity ids are 16 bytes, base58-encoded. About 3% of them carry no
65
+ * digit, so `looksLikeRawId` misses them; decoding is the only check that
66
+ * also keeps a long single-word name a name. Ids are timestamp-led, so they
67
+ * encode to 21 characters today and 22 at most (58^22 > 2^128).
68
+ */
69
+ export function looksLikeOpaqueCommsId(ref) {
70
+ if (ref.length < 21 || ref.length > 22)
71
+ return false;
72
+ let value = 0n;
73
+ for (const char of ref) {
74
+ const digit = BASE58_ALPHABET.indexOf(char);
75
+ if (digit === -1)
76
+ return false;
77
+ value = value * 58n + BigInt(digit);
78
+ }
79
+ const leadingZeroBytes = ref.length - ref.replace(/^1+/, '').length;
80
+ const byteLength = value === 0n ? 0 : Math.ceil(value.toString(16).length / 2);
81
+ return leadingZeroBytes + byteLength === 16;
64
82
  }
65
83
  function getOpaqueNameId(parsed) {
66
84
  return parsed.type === 'name' && looksLikeOpaqueCommsId(parsed.name) ? parsed.name : null;
@@ -232,12 +250,34 @@ export async function resolveChannelRef(ref, workspaceId) {
232
250
  ...joined,
233
251
  ...publicChannels.filter((channel) => !joinedIds.has(channel.id)),
234
252
  ];
235
- return matchByName(channels, parsed.name, {
236
- ambiguousCode: 'AMBIGUOUS_CHANNEL',
237
- notFoundCode: 'CHANNEL_NOT_FOUND',
238
- ref,
239
- listHint: 'Run: tdc channels to list available channels',
240
- });
253
+ try {
254
+ return matchByName(channels, parsed.name, {
255
+ ambiguousCode: 'AMBIGUOUS_CHANNEL',
256
+ notFoundCode: 'CHANNEL_NOT_FOUND',
257
+ ref,
258
+ listHint: 'Run: tdc channels to list available channels',
259
+ });
260
+ }
261
+ catch (error) {
262
+ if (!isCliErrorCode(error, 'CHANNEL_NOT_FOUND') ||
263
+ !looksLikeOpaqueCommsId(parsed.name)) {
264
+ throw error;
265
+ }
266
+ // Nothing by that name, and the token decodes to a Comms id: a bare
267
+ // digit-free channel id lands here rather than in `getDirectChannelId`.
268
+ try {
269
+ const channel = await client.channels.getChannel(parsed.name);
270
+ assertChannelInWorkspace(channel, workspaceId);
271
+ return channel;
272
+ }
273
+ catch (idError) {
274
+ // A miss (404) or a token the server will not take as an id
275
+ // (409, "must be UUIDv7") both mean it was a name after all.
276
+ if (isCliErrorCode(idError, 'NOT_FOUND', 'INVALID_REF'))
277
+ throw error;
278
+ throw idError;
279
+ }
280
+ }
241
281
  }
242
282
  throw new CliError('CHANNEL_NOT_FOUND', `Channel "${ref}" not found`, [
243
283
  'Run: tdc channels to list available channels',
@@ -247,6 +287,11 @@ export function resolveChannelId(ref) {
247
287
  const channelId = getDirectChannelId(ref);
248
288
  if (channelId)
249
289
  return channelId;
290
+ // Id-only, like the thread and conversation resolvers: there is no name
291
+ // to protect, so a bare digit-free token that decodes is an id.
292
+ const opaqueId = getOpaqueNameId(parseRef(ref));
293
+ if (opaqueId)
294
+ return opaqueId;
250
295
  throw new CliError('INVALID_REF', `Invalid channel reference: ${ref}. Use an id, id:<id>, or a Comms URL.`);
251
296
  }
252
297
  export function getDirectChannelId(ref) {
@@ -260,9 +305,8 @@ export function getDirectChannelId(ref) {
260
305
  }
261
306
  throw new CliError('INVALID_REF', `Invalid channel reference: ${ref}. Use an id, id:<id>, or a Comms URL.`);
262
307
  }
263
- const opaqueId = getOpaqueNameId(parsed);
264
- if (opaqueId)
265
- return opaqueId;
308
+ // A bare digit-free token could be a channel name, so it goes to name
309
+ // lookup; `resolveChannelRef` tries it as an id only when no name matches.
266
310
  return null;
267
311
  }
268
312
  export function resolveCommentId(ref) {
@@ -368,7 +412,9 @@ export async function resolveGroupRef(ref, workspaceId) {
368
412
  return group;
369
413
  }
370
414
  catch (error) {
371
- if (error instanceof CliError)
415
+ // The wrapped client already turns a 404 into NOT_FOUND; the
416
+ // group-specific code and hint are still the better answer.
417
+ if (error instanceof CliError && !isCliErrorCode(error, 'NOT_FOUND'))
372
418
  throw error;
373
419
  throw new CliError('GROUP_NOT_FOUND', `Group with ID ${parsed.id} not found`, [
374
420
  'Run: tdc groups to list available groups',