@doist/comms-cli 3.2.0 → 3.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.
Files changed (48) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +7 -1
  3. package/dist/commands/auth/index.d.ts.map +1 -1
  4. package/dist/commands/auth/index.js +2 -1
  5. package/dist/commands/auth/index.js.map +1 -1
  6. package/dist/commands/auth/status.d.ts +5 -5
  7. package/dist/commands/auth/status.js +8 -8
  8. package/dist/commands/auth/status.js.map +1 -1
  9. package/dist/commands/conversation/{done.d.ts → archive.d.ts} +2 -1
  10. package/dist/commands/conversation/archive.d.ts.map +1 -0
  11. package/dist/commands/conversation/archive.js +47 -0
  12. package/dist/commands/conversation/archive.js.map +1 -0
  13. package/dist/commands/conversation/index.d.ts.map +1 -1
  14. package/dist/commands/conversation/index.js +12 -1
  15. package/dist/commands/conversation/index.js.map +1 -1
  16. package/dist/commands/thread/helpers.d.ts +35 -0
  17. package/dist/commands/thread/helpers.d.ts.map +1 -1
  18. package/dist/commands/thread/helpers.js +116 -3
  19. package/dist/commands/thread/helpers.js.map +1 -1
  20. package/dist/commands/thread/index.d.ts.map +1 -1
  21. package/dist/commands/thread/index.js +34 -1
  22. package/dist/commands/thread/index.js.map +1 -1
  23. package/dist/commands/thread/mutate.d.ts +1 -0
  24. package/dist/commands/thread/mutate.d.ts.map +1 -1
  25. package/dist/commands/thread/mutate.js +25 -8
  26. package/dist/commands/thread/mutate.js.map +1 -1
  27. package/dist/commands/thread/read.d.ts.map +1 -1
  28. package/dist/commands/thread/read.js +16 -101
  29. package/dist/commands/thread/read.js.map +1 -1
  30. package/dist/commands/thread/unread.d.ts +6 -0
  31. package/dist/commands/thread/unread.d.ts.map +1 -0
  32. package/dist/commands/thread/unread.js +52 -0
  33. package/dist/commands/thread/unread.js.map +1 -0
  34. package/dist/lib/api.d.ts.map +1 -1
  35. package/dist/lib/api.js +1 -0
  36. package/dist/lib/api.js.map +1 -1
  37. package/dist/lib/auth.d.ts +8 -1
  38. package/dist/lib/auth.d.ts.map +1 -1
  39. package/dist/lib/auth.js +22 -4
  40. package/dist/lib/auth.js.map +1 -1
  41. package/dist/lib/skills/content.d.ts +1 -1
  42. package/dist/lib/skills/content.d.ts.map +1 -1
  43. package/dist/lib/skills/content.js +10 -2
  44. package/dist/lib/skills/content.js.map +1 -1
  45. package/package.json +2 -2
  46. package/dist/commands/conversation/done.d.ts.map +0 -1
  47. package/dist/commands/conversation/done.js +0 -32
  48. package/dist/commands/conversation/done.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [3.4.0](https://github.com/Doist/comms-cli/compare/v3.3.0...v3.4.0) (2026-09-18)
2
+
3
+ ### Features
4
+
5
+ - add thread undone, conversation undone and thread mark-unread ([#64](https://github.com/Doist/comms-cli/issues/64)) ([98ae72b](https://github.com/Doist/comms-cli/commit/98ae72bb329e1784e11ec2c5a324f60c799dd1fc))
6
+
7
+ ## [3.3.0](https://github.com/Doist/comms-cli/compare/v3.2.0...v3.3.0) (2026-09-16)
8
+
9
+ ### Features
10
+
11
+ - **auth:** refresh an expiring OAuth token before `token view` / `status` ([#63](https://github.com/Doist/comms-cli/issues/63)) ([c1926bd](https://github.com/Doist/comms-cli/commit/c1926bda749426aff1bfca377872f195c6971d79))
12
+
1
13
  ## [3.2.0](https://github.com/Doist/comms-cli/compare/v3.1.0...v3.2.0) (2026-09-15)
2
14
 
3
15
  ### Features
package/README.md CHANGED
@@ -111,7 +111,7 @@ The base URL is used for OAuth, the SDK, and search. OAuth login supports `comms
111
111
  ```bash
112
112
  tdc auth status # check if authenticated
113
113
  tdc auth logout # remove saved token
114
- tdc auth token view # print the stored access token
114
+ tdc auth token view # print the stored access token (refreshes an expiring OAuth token first)
115
115
  tdc auth refresh-token view # print the stored OAuth refresh token
116
116
  ```
117
117
 
@@ -128,9 +128,15 @@ tdc thread reply <ref> # reply to a thread
128
128
  tdc thread reply <ref> "Update" --notify NONE # reply without notifying anyone
129
129
  tdc thread rename <ref> "New title" # rename a thread
130
130
  tdc thread update <ref> "New body" # edit a thread's body (first post)
131
+ tdc thread done <ref> --yes # archive a thread (mark done)
132
+ tdc thread undone <ref> --yes # move it back to your inbox
133
+ tdc thread mark-read <ref> # mark a thread read
134
+ tdc thread mark-unread <ref> # mark it unread again (--from <comment-ref> for part of it)
131
135
  tdc conversation unread # list unread conversations
132
136
  tdc conversation list # list conversations (--kind, --participant, --name, --state)
133
137
  tdc conversation view <ref> # view conversation messages
138
+ tdc conversation done <ref> --yes # archive a conversation
139
+ tdc conversation undone <ref> --yes # unarchive it
134
140
  tdc msg view <ref> # view a conversation message
135
141
  tdc search "keyword" # search across workspace
136
142
  tdc search "keyword" --all # fetch all result pages
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAe3C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2C1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAe3C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4C1D"}
@@ -1,7 +1,7 @@
1
1
  import { attachRefreshTokenViewCommand, attachTokenViewCommand } from '@doist/cli-core/auth';
2
2
  import { Option } from 'commander';
3
3
  import { CREDENTIAL_STORES, createCommsTokenStore, parseCredentialStore, } from '../../lib/auth-provider.js';
4
- import { TOKEN_ENV_VAR } from '../../lib/auth.js';
4
+ import { getTokenRefreshOptions, TOKEN_ENV_VAR } from '../../lib/auth.js';
5
5
  import { withUnvalidatedChoices } from '../../lib/completion.js';
6
6
  import { getRequestedUserRef } from '../../lib/global-args.js';
7
7
  import { attachCommsLoginCommand } from './login.js';
@@ -31,6 +31,7 @@ export function registerAuthCommand(program) {
31
31
  name: 'view',
32
32
  store: refAware,
33
33
  envVarName: TOKEN_ENV_VAR,
34
+ refresh: getTokenRefreshOptions(),
34
35
  description: 'Print the stored API token for the active user (or --user <ref>) to stdout for use in scripts',
35
36
  });
36
37
  attachRefreshTokenViewCommand(auth, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC5F,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EACH,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAA;IAEzE,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAA;IACrC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAA;IAE/D,uBAAuB,CAAC,IAAI,CAAC,CAAA;IAC7B,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACxC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAExC,2EAA2E;IAC3E,0EAA0E;IAC1E,uEAAuE;IACvE,yDAAyD;IACzD,MAAM,QAAQ,GAAG,IAAI;SAChB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qEAAqE,CAAC;SAClF,SAAS,CACN,sBAAsB,CAClB,IAAI,MAAM,CACN,4BAA4B,EAC5B,8DAA8D,CACjE;SACI,SAAS,CAAC,oBAAoB,CAAC;SAC/B,OAAO,CAAC,UAAU,CAAC,EACxB,CAAC,GAAG,iBAAiB,CAAC,CACzB,CACJ;SACA,MAAM,CAAC,cAAc,CAAC,CAAA;IAE3B,sBAAsB,CAAC,QAAQ,EAAE;QAC7B,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,aAAa;QACzB,WAAW,EACP,+FAA+F;KACtG,CAAC,CAAA;IAEF,6BAA6B,CAAC,IAAI,EAAE;QAChC,KAAK,EAAE,QAAQ;QACf,WAAW,EACP,yGAAyG;KAChH,CAAC,CAAA;AACN,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC5F,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EACH,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAA;IAEzE,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAA;IACrC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAA;IAE/D,uBAAuB,CAAC,IAAI,CAAC,CAAA;IAC7B,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACxC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAExC,2EAA2E;IAC3E,0EAA0E;IAC1E,uEAAuE;IACvE,yDAAyD;IACzD,MAAM,QAAQ,GAAG,IAAI;SAChB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qEAAqE,CAAC;SAClF,SAAS,CACN,sBAAsB,CAClB,IAAI,MAAM,CACN,4BAA4B,EAC5B,8DAA8D,CACjE;SACI,SAAS,CAAC,oBAAoB,CAAC;SAC/B,OAAO,CAAC,UAAU,CAAC,EACxB,CAAC,GAAG,iBAAiB,CAAC,CACzB,CACJ;SACA,MAAM,CAAC,cAAc,CAAC,CAAA;IAE3B,sBAAsB,CAAC,QAAQ,EAAE;QAC7B,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,aAAa;QACzB,OAAO,EAAE,sBAAsB,EAAE;QACjC,WAAW,EACP,+FAA+F;KACtG,CAAC,CAAA;IAEF,6BAA6B,CAAC,IAAI,EAAE;QAChC,KAAK,EAAE,QAAQ;QACf,WAAW,EACP,yGAAyG;KAChH,CAAC,CAAA;AACN,CAAC"}
@@ -3,11 +3,11 @@ import type { CommsTokenStore } from '../../lib/auth-provider.js';
3
3
  /**
4
4
  * Attach `tdc auth status` via cli-core's generic `attachStatusCommand`.
5
5
  *
6
- * cli-core reads the selected account first. `fetchLive` then refreshes OAuth
7
- * accounts through the same auth shim as normal API calls before validating
8
- * the token against Comms. `onNotAuthenticated` only fires when nothing is
9
- * stored — it throws `NoTokenError` so the standard CliError envelope reaches
10
- * the operator unchanged.
6
+ * cli-core refreshes an expiring OAuth token for the selected account, then
7
+ * hands `fetchLive` the live token to validate against Comms.
8
+ * `onNotAuthenticated` only fires when nothing is stored — it throws
9
+ * `NoTokenError` so the standard CliError envelope reaches the operator
10
+ * unchanged.
11
11
  */
12
12
  export declare function attachCommsStatusCommand(auth: Command, store: CommsTokenStore): Command;
13
13
  //# sourceMappingURL=status.d.ts.map
@@ -2,7 +2,7 @@ import { attachStatusCommand } from '@doist/cli-core/auth';
2
2
  import { CommsRequestError } from '@doist/comms-sdk';
3
3
  import chalk from 'chalk';
4
4
  import { createWrappedCommsClient } from '../../lib/api.js';
5
- import { getApiTokenSnapshot, NoTokenError, TOKEN_ENV_VAR, } from '../../lib/auth.js';
5
+ import { getTokenRefreshOptions, NoTokenError, TOKEN_ENV_VAR, } from '../../lib/auth.js';
6
6
  import { CliError } from '../../lib/errors.js';
7
7
  function formatAuthMode(authMode, authScope) {
8
8
  if (authMode === 'read-only') {
@@ -67,20 +67,20 @@ function buildStatusJson({ user, metadata }) {
67
67
  /**
68
68
  * Attach `tdc auth status` via cli-core's generic `attachStatusCommand`.
69
69
  *
70
- * cli-core reads the selected account first. `fetchLive` then refreshes OAuth
71
- * accounts through the same auth shim as normal API calls before validating
72
- * the token against Comms. `onNotAuthenticated` only fires when nothing is
73
- * stored — it throws `NoTokenError` so the standard CliError envelope reaches
74
- * the operator unchanged.
70
+ * cli-core refreshes an expiring OAuth token for the selected account, then
71
+ * hands `fetchLive` the live token to validate against Comms.
72
+ * `onNotAuthenticated` only fires when nothing is stored — it throws
73
+ * `NoTokenError` so the standard CliError envelope reaches the operator
74
+ * unchanged.
75
75
  */
76
76
  export function attachCommsStatusCommand(auth, store) {
77
77
  let data = null;
78
78
  return attachStatusCommand(auth, {
79
79
  store,
80
80
  description: 'Show current authentication status',
81
+ refresh: getTokenRefreshOptions(),
81
82
  fetchLive: async ({ account, token }) => {
82
- const snapshot = account.id ? await getApiTokenSnapshot(account.id) : { account, token };
83
- data = await gatherStatusData(snapshot.token, snapshot.account);
83
+ data = await gatherStatusData(token, account);
84
84
  return {
85
85
  id: String(data.user.id),
86
86
  label: data.user.fullName,
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import { type DoneOptions } from './helpers.js';
2
2
  export declare function markConversationDone(ref: string, options: DoneOptions): Promise<void>;
3
- //# sourceMappingURL=done.d.ts.map
3
+ export declare function markConversationUndone(ref: string, options: DoneOptions): Promise<void>;
4
+ //# sourceMappingURL=archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../../src/commands/conversation/archive.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAqDlE,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3F;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F"}
@@ -0,0 +1,47 @@
1
+ import { getCommsClient } from '../../lib/api.js';
2
+ import { CliError } from '../../lib/errors.js';
3
+ import { formatJson, printDryRun } from '../../lib/output.js';
4
+ import { resolveConversationId } from '../../lib/refs.js';
5
+ import { conversationLabel } from './helpers.js';
6
+ async function setConversationArchiveState(ref, options, archive) {
7
+ const action = archive ? 'archive' : 'unarchive';
8
+ const conversationId = resolveConversationId(ref);
9
+ const client = await getCommsClient();
10
+ const conversation = await client.conversations.getConversation(conversationId);
11
+ const noop = conversation.archived === archive;
12
+ if (options.dryRun) {
13
+ printDryRun(`${action} conversation`, {
14
+ Conversation: conversationLabel(conversation),
15
+ Status: noop ? (archive ? 'already archived' : 'not archived') : undefined,
16
+ });
17
+ return;
18
+ }
19
+ if (!options.yes) {
20
+ if (options.json) {
21
+ throw new CliError('MISSING_YES_FLAG', `--yes is required to execute ${action} in --json mode.`);
22
+ }
23
+ console.log(`Would ${action}: ${conversationLabel(conversation)}`);
24
+ console.log('Use --yes to confirm.');
25
+ return;
26
+ }
27
+ if (!noop) {
28
+ if (archive) {
29
+ await client.conversations.archiveConversation(conversationId);
30
+ }
31
+ else {
32
+ await client.conversations.unarchiveConversation(conversationId);
33
+ }
34
+ }
35
+ if (options.json) {
36
+ console.log(formatJson({ id: conversationId, archived: archive }));
37
+ return;
38
+ }
39
+ console.log(`Conversation ${conversationId} ${action}d${noop ? ' (already in target state)' : ''}.`);
40
+ }
41
+ export async function markConversationDone(ref, options) {
42
+ await setConversationArchiveState(ref, options, true);
43
+ }
44
+ export async function markConversationUndone(ref, options) {
45
+ await setConversationArchiveState(ref, options, false);
46
+ }
47
+ //# sourceMappingURL=archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/commands/conversation/archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAoB,MAAM,cAAc,CAAA;AAElE,KAAK,UAAU,2BAA2B,CACtC,GAAW,EACX,OAAoB,EACpB,OAAgB;IAEhB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAA;IAChD,MAAM,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAEjD,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAA;IACrC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,cAAc,CAAC,CAAA;IAE/E,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,KAAK,OAAO,CAAA;IAE9C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,WAAW,CAAC,GAAG,MAAM,eAAe,EAAE;YAClC,YAAY,EAAE,iBAAiB,CAAC,YAAY,CAAC;YAC7C,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;SAC7E,CAAC,CAAA;QACF,OAAM;IACV,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,QAAQ,CACd,kBAAkB,EAClB,gCAAgC,MAAM,kBAAkB,CAC3D,CAAA;QACL,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,KAAK,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QAClE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;QACpC,OAAM;IACV,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAA;QAClE,CAAC;aAAM,CAAC;YACJ,MAAM,MAAM,CAAC,aAAa,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAA;QACpE,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QAClE,OAAM;IACV,CAAC;IAED,OAAO,CAAC,GAAG,CACP,gBAAgB,cAAc,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE,GAAG,CAC1F,CAAA;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAW,EAAE,OAAoB;IACxE,MAAM,2BAA2B,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,GAAW,EAAE,OAAoB;IAC1E,MAAM,2BAA2B,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;AAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/conversation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAY3C,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmLlE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/conversation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAY3C,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkMlE"}
@@ -1,7 +1,7 @@
1
1
  import { Option } from 'commander';
2
2
  import { withCaseInsensitiveChoices } from '../../lib/completion.js';
3
3
  import { collect } from '../../lib/options.js';
4
- import { markConversationDone } from './done.js';
4
+ import { markConversationDone, markConversationUndone } from './archive.js';
5
5
  import { listConversations } from './list.js';
6
6
  import { muteConversation } from './mute.js';
7
7
  import { replyToConversation } from './reply.js';
@@ -118,6 +118,17 @@ Examples:
118
118
  tdc conversation done id:CbV8n2Kp4Qx6Rz9Lm3Va --yes
119
119
  tdc conversation done id:CbV8n2Kp4Qx6Rz9Lm3Va --dry-run`)
120
120
  .action(markConversationDone);
121
+ conversation
122
+ .command('undone <conversation-ref>')
123
+ .description('Unarchive a conversation; inverse of done')
124
+ .option('--yes', 'Confirm unarchive')
125
+ .option('--dry-run', 'Show what would happen without executing')
126
+ .option('--json', 'Output result as JSON')
127
+ .addHelpText('after', `
128
+ Examples:
129
+ tdc conversation undone id:CbV8n2Kp4Qx6Rz9Lm3Va --yes
130
+ tdc conversation undone id:CbV8n2Kp4Qx6Rz9Lm3Va --dry-run`)
131
+ .action(markConversationUndone);
121
132
  conversation
122
133
  .command('mute <conversation-ref>')
123
134
  .description('Mute a conversation (stop notifications)')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/conversation/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/conversation/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import type { CommsApi, Thread } from '@doist/comms-sdk';
2
+ import type { MutationOptions } from '../../lib/options.js';
1
3
  export declare function printSeparator(label: string): void;
2
4
  export interface CommentLike {
3
5
  id: string;
@@ -21,4 +23,37 @@ export interface ResolvedNotify {
21
23
  }
22
24
  export declare function resolveNotifyIds(ids: string[], workspaceId: number): Promise<ResolvedNotify>;
23
25
  export declare function formatNotifyLabel(items: NamedEntity[]): string;
26
+ export type ReadStateTextStatus = 'changed' | 'preview' | 'unchanged';
27
+ export type ThreadReadState = {
28
+ thread: Thread;
29
+ /**
30
+ * Object index of the last comment the user has read, or `null` when the
31
+ * thread is fully read (absent from the workspace's unread list). `-1`
32
+ * means nothing has been read, including the thread body.
33
+ */
34
+ lastReadObjIndex: number | null;
35
+ };
36
+ export type ReadStatePlan<Status> = {
37
+ /** Appended to messages, e.g. `' from comment X'`; empty for the whole thread. */
38
+ scope: string;
39
+ isUnchanged(state: ThreadReadState): boolean;
40
+ /** JSON row; `outcome` is `'unchanged'` when nothing needs to move. */
41
+ status(state: ThreadReadState, outcome: 'planned' | 'unchanged'): Status;
42
+ /** Performs the mutation and returns the thread's new `lastReadObjIndex`. */
43
+ apply(client: CommsApi, state: ThreadReadState): Promise<number | null>;
44
+ };
45
+ export type ReadStateMutation<Status> = {
46
+ verb: 'read' | 'unread';
47
+ /** Runs on the full ref list (positional plus stdin) before anything is loaded. */
48
+ validateRefs?(rawRefs: string[]): void;
49
+ /**
50
+ * Builds the per-thread plan. Runs before the unread lookup so an invalid
51
+ * option (a bad `--from` ref) fails without a workspace-wide request.
52
+ */
53
+ plan(client: CommsApi, threadId: string): Promise<ReadStatePlan<Status>>;
54
+ };
55
+ export declare function runThreadReadStateMutation<Status extends {
56
+ id: string;
57
+ }>(refs: string[], options: MutationOptions, mutation: ReadStateMutation<Status>): Promise<void>;
58
+ export declare function threadLabel(thread: Pick<Thread, 'id' | 'title'>): string;
24
59
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/helpers.ts"],"names":[],"mappings":"AAQA,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAalD;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,IAAI,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,wBAAsB,YAAY,CAC9B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,GAAG,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/D,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,MAAM,EAAE,WAAW,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAChC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC5B,QAAQ,EAAE,YAAY,CAAA;CACzB;AAED,wBAAsB,gBAAgB,CAClC,GAAG,EAAE,MAAM,EAAE,EACb,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,CAAC,CAczB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAE9D"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAQxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAK3D,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAalD;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,IAAI,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,wBAAsB,YAAY,CAC9B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,GAAG,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/D,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,MAAM,EAAE,WAAW,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAChC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC5B,QAAQ,EAAE,YAAY,CAAA;CACzB;AAED,wBAAsB,gBAAgB,CAClC,GAAG,EAAE,MAAM,EAAE,EACb,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,CAAC,CAczB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAE9D;AAKD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAA;AAErE,MAAM,MAAM,eAAe,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI;IAChC,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAA;IAC5C,uEAAuE;IACvE,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,MAAM,CAAA;IACxE,6EAA6E;IAC7E,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAC1E,CAAA;AAED,MAAM,MAAM,iBAAiB,CAAC,MAAM,IAAI;IACpC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;IACvB,mFAAmF;IACnF,YAAY,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACtC;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;CAC3E,CAAA;AAED,wBAAsB,0BAA0B,CAAC,MAAM,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC1E,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CAiFf;AAyCD,wBAAgB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,MAAM,CAExE"}
@@ -1,10 +1,13 @@
1
1
  import chalk from 'chalk';
2
- import { getWorkspaceGroups, getWorkspaceUsers } from '../../lib/api.js';
2
+ import { getCommsClient, getWorkspaceGroups, getWorkspaceUsers } from '../../lib/api.js';
3
3
  import { formatRelativeDate } from '../../lib/dates.js';
4
+ import { CliError } from '../../lib/errors.js';
4
5
  import { isAccessible } from '../../lib/global-args.js';
6
+ import { readStdinToEnd } from '../../lib/input.js';
5
7
  import { renderMarkdown } from '../../lib/markdown.js';
6
- import { colors } from '../../lib/output.js';
7
- import { partitionNotifyIds } from '../../lib/refs.js';
8
+ import { colors, formatJson, pluralize } from '../../lib/output.js';
9
+ import { assertChannelIsPublic } from '../../lib/public-channels.js';
10
+ import { partitionNotifyIds, resolveThreadId } from '../../lib/refs.js';
8
11
  export function printSeparator(label) {
9
12
  const totalWidth = 60;
10
13
  const labelWithPadding = ` ${label} `;
@@ -42,4 +45,114 @@ export async function resolveNotifyIds(ids, workspaceId) {
42
45
  export function formatNotifyLabel(items) {
43
46
  return items.map((i) => `${i.name} (${i.id})`).join(', ');
44
47
  }
48
+ export async function runThreadReadStateMutation(refs, options, mutation) {
49
+ const rawRefs = await collectThreadRefs(refs);
50
+ if (rawRefs.length === 0) {
51
+ throw new CliError('INVALID_REF', 'No thread references provided. Pass refs as arguments or pipe them via stdin.');
52
+ }
53
+ mutation.validateRefs?.(rawRefs);
54
+ const needsConfirmation = rawRefs.length > 1 && !options.yes && !options.dryRun;
55
+ if (options.json && needsConfirmation) {
56
+ throw new CliError('MISSING_YES_FLAG', `--yes is required to execute bulk mark-${mutation.verb} in --json mode.`);
57
+ }
58
+ const client = await getCommsClient();
59
+ const unreadCache = new Map();
60
+ const jsonStatuses = [];
61
+ const textStatuses = [];
62
+ for (const rawRef of rawRefs) {
63
+ const threadId = resolveThreadId(rawRef);
64
+ const plan = await mutation.plan(client, threadId);
65
+ const state = await loadThreadReadState(client, unreadCache, threadId);
66
+ const label = threadLabel(state.thread);
67
+ if (plan.isUnchanged(state)) {
68
+ jsonStatuses.push(plan.status(state, 'unchanged'));
69
+ textStatuses.push('unchanged');
70
+ if (!options.json) {
71
+ console.log(`Thread ${label} is already ${mutation.verb}${plan.scope}.`);
72
+ }
73
+ continue;
74
+ }
75
+ if (needsConfirmation || options.dryRun) {
76
+ jsonStatuses.push(plan.status(state, 'planned'));
77
+ textStatuses.push('preview');
78
+ if (!options.json) {
79
+ const prefix = options.dryRun ? 'Dry run: would' : 'Would';
80
+ console.log(`${prefix} mark ${mutation.verb} thread ${label}${plan.scope}.`);
81
+ }
82
+ continue;
83
+ }
84
+ const lastReadObjIndex = await plan.apply(client, state);
85
+ const unreadByThread = unreadCache.get(state.thread.workspaceId);
86
+ if (lastReadObjIndex === null) {
87
+ unreadByThread?.delete(threadId);
88
+ }
89
+ else {
90
+ unreadByThread?.set(threadId, lastReadObjIndex);
91
+ }
92
+ jsonStatuses.push(plan.status(state, 'planned'));
93
+ textStatuses.push('changed');
94
+ if (!options.json) {
95
+ console.log(`Thread ${label} marked ${mutation.verb}${plan.scope}.`);
96
+ }
97
+ }
98
+ if (options.json) {
99
+ console.log(formatJson(options.dryRun
100
+ ? jsonStatuses.map((status) => ({ ...status, dryRun: true }))
101
+ : jsonStatuses));
102
+ return;
103
+ }
104
+ if (rawRefs.length > 1) {
105
+ printReadStateSummary(textStatuses);
106
+ }
107
+ if (needsConfirmation) {
108
+ console.log('Use --yes to confirm.');
109
+ }
110
+ }
111
+ async function collectThreadRefs(refs) {
112
+ const inlineRefs = refs.map((ref) => ref.trim()).filter(Boolean);
113
+ const stdinContent = await readStdinToEnd();
114
+ if (!stdinContent)
115
+ return inlineRefs;
116
+ const stdinRefs = stdinContent
117
+ .split(/\r?\n/)
118
+ .map((line) => line.trim())
119
+ .filter((line) => line !== '' && !line.startsWith('#'));
120
+ return [...inlineRefs, ...stdinRefs];
121
+ }
122
+ /**
123
+ * Loads a thread and its unread position. `unreadCache` maps a workspace id to
124
+ * its unread threads (`threadId` -> last read `objIndex`) so bulk runs fetch
125
+ * the unread list once per workspace.
126
+ */
127
+ async function loadThreadReadState(client, unreadCache, threadId) {
128
+ const thread = await client.threads.getThread(threadId);
129
+ await assertChannelIsPublic(thread.channelId, thread.workspaceId);
130
+ let unreadByThread = unreadCache.get(thread.workspaceId);
131
+ if (!unreadByThread) {
132
+ const unread = await client.threads.getUnread(thread.workspaceId);
133
+ unreadByThread = new Map(unread.data.map((unreadThread) => [unreadThread.threadId, unreadThread.objIndex]));
134
+ unreadCache.set(thread.workspaceId, unreadByThread);
135
+ }
136
+ return { thread, lastReadObjIndex: unreadByThread.get(thread.id) ?? null };
137
+ }
138
+ export function threadLabel(thread) {
139
+ return `${thread.title} (${thread.id})`;
140
+ }
141
+ function printReadStateSummary(statuses) {
142
+ const summary = [
143
+ summarizeStatus(statuses, 'changed'),
144
+ summarizeStatus(statuses, 'unchanged'),
145
+ summarizeStatus(statuses, 'preview'),
146
+ ].filter(Boolean);
147
+ console.log('');
148
+ console.log(`Summary: ${summary.join(', ')}`);
149
+ }
150
+ function summarizeStatus(statuses, status) {
151
+ const count = statuses.filter((value) => value === status).length;
152
+ if (count === 0) {
153
+ return null;
154
+ }
155
+ const noun = status === 'preview' ? pluralize(count, 'preview') : pluralize(count, 'thread');
156
+ return status === 'preview' ? `${count} ${noun}` : `${count} ${status} ${noun}`;
157
+ }
45
158
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/thread/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,MAAM,UAAU,cAAc,CAAC,KAAa;IACxC,MAAM,UAAU,GAAG,EAAE,CAAA;IACrB,MAAM,gBAAgB,GAAG,IAAI,KAAK,GAAG,CAAA;IACrC,MAAM,cAAc,GAAG,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAA;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA;IAChD,MAAM,UAAU,GAAG,cAAc,GAAG,SAAS,CAAA;IAC7C,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAClB,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAC9E,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACnB,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,OAAoB,EACpB,OAA4B,EAC5B,GAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IACvF,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IACjE,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,IAAI,KAAK,MAAM,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;IAC1E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAC1E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACnB,CAAC;AAeD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,GAAa,EACb,WAAmB;IAEnB,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAA;IAC7D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5D,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IACvD,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;IACnF,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;IACjF,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAA;IAC9D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACzE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpE,MAAM,QAAQ,GAAiB;QAC3B,KAAK,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACtF,MAAM,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;KACxF,CAAA;IACD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAoB;IAClD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7D,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/thread/helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAa3C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqM5D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAc3C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgP5D"}
@@ -3,11 +3,12 @@ import { withUnvalidatedChoices } from '../../lib/completion.js';
3
3
  import { collect } from '../../lib/options.js';
4
4
  import { createThread } from './create.js';
5
5
  import { deleteThread } from './delete.js';
6
- import { markThreadDone } from './mutate.js';
6
+ import { markThreadDone, markThreadUndone } from './mutate.js';
7
7
  import { muteThread, unmuteThread } from './mute.js';
8
8
  import { markThreadRead } from './read.js';
9
9
  import { renameThread } from './rename.js';
10
10
  import { replyToThread } from './reply.js';
11
+ import { markThreadUnread } from './unread.js';
11
12
  import { updateThread } from './update.js';
12
13
  import { viewThread } from './view.js';
13
14
  export function registerThreadCommand(program) {
@@ -88,6 +89,18 @@ Examples:
88
89
  tdc thread done id:CbT8n2Kp4Qx6Rz9Lm3Va --dry-run
89
90
  tdc thread done id:CbT8n2Kp4Qx6Rz9Lm3Va --json --yes`)
90
91
  .action(markThreadDone);
92
+ thread
93
+ .command('undone <thread-ref>')
94
+ .description('Unarchive a thread (move it back to your inbox); inverse of done')
95
+ .option('--yes', 'Confirm unarchive')
96
+ .option('--dry-run', 'Show what would happen without executing')
97
+ .option('--json', 'Output result as JSON')
98
+ .addHelpText('after', `
99
+ Examples:
100
+ tdc thread undone id:CbT8n2Kp4Qx6Rz9Lm3Va --yes
101
+ tdc thread undone id:CbT8n2Kp4Qx6Rz9Lm3Va --dry-run
102
+ tdc thread undone id:CbT8n2Kp4Qx6Rz9Lm3Va --json --yes`)
103
+ .action(markThreadUndone);
91
104
  const markReadCmd = thread
92
105
  .command('mark-read [thread-refs...]')
93
106
  .description('Mark a thread read for the current user')
@@ -106,6 +119,26 @@ Examples:
106
119
  }
107
120
  return markThreadRead(refs, options);
108
121
  });
122
+ const markUnreadCmd = thread
123
+ .command('mark-unread [thread-refs...]')
124
+ .description('Mark a thread unread for the current user; inverse of mark-read')
125
+ .option('--from <comment-ref>', 'Mark unread from this comment onward (single thread only; default: whole thread)')
126
+ .option('--yes', 'Skip confirmation for bulk operations')
127
+ .option('--dry-run', 'Show what would happen without executing')
128
+ .option('--json', 'Output result as JSON')
129
+ .addHelpText('after', `
130
+ Examples:
131
+ tdc thread mark-unread id:CbT8n2Kp4Qx6Rz9Lm3Va
132
+ tdc thread mark-unread id:CbT8n2Kp4Qx6Rz9Lm3Va --from id:CbM8n2Kp4Qx6Rz9Lm3Va
133
+ tdc thread mark-unread id:CbT8n2Kp4Qx6Rz9Lm3Va id:CbT9m4Qr7Vz2Nx8Lp5Sa --yes
134
+ printf "id:CbT8n2Kp4Qx6Rz9Lm3Va\\nid:CbT9m4Qr7Vz2Nx8Lp5Sa\\n" | tdc thread mark-unread --yes`)
135
+ .action((refs, options) => {
136
+ if (refs.length === 0 && process.stdin.isTTY) {
137
+ markUnreadCmd.help();
138
+ return;
139
+ }
140
+ return markThreadUnread(refs, options);
141
+ });
109
142
  thread
110
143
  .command('delete <thread-ref>')
111
144
  .description('Permanently delete a thread')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/thread/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAA;IAEzE,MAAM;SACD,OAAO,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACjD,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;SACxD,MAAM,CAAC,UAAU,EAAE,4DAA4D,CAAC;SAChF,MAAM,CAAC,eAAe,EAAE,2DAA2D,CAAC;SACpF,MAAM,CAAC,aAAa,EAAE,oCAAoC,CAAC;SAC3D,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;SAC/C,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;SAC/C,MAAM,CAAC,OAAO,EAAE,uCAAuC,CAAC;SACxD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,UAAU,EAAE,kCAAkC,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,WAAW,CACR,OAAO,EACP;;;;4DAIgD,CACnD;SACA,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QACrB,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,CAAC,IAAI,EAAE,CAAA;YACb,OAAM;QACV,CAAC;QACD,OAAO,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEN,MAAM;SACD,OAAO,CAAC,8BAA8B,CAAC;SACvC,WAAW,CAAC,4BAA4B,CAAC;SACzC,SAAS,CACN,sBAAsB,CAClB,IAAI,MAAM,CACN,uBAAuB,EACvB,qJAAqJ,CACxJ,EACD,CAAC,MAAM,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAC7C,CACJ;SACA,MAAM,CAAC,SAAS,EAAE,iCAAiC,CAAC;SACpD,MAAM,CAAC,UAAU,EAAE,kCAAkC,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,8CAA8C,EAAE,OAAO,EAAE,EAAE,CAAC;SACpF,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC;SAChE,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,WAAW,CACR,OAAO,EACP;;;;;;;;;yEAS6D,CAChE;SACA,MAAM,CAAC,aAAa,CAAC,CAAA;IAE1B,MAAM;SACD,OAAO,CAAC,wCAAwC,CAAC;SACjD,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,uBAAuB,EAAE,iDAAiD,CAAC;SAClF,MAAM,CACH,aAAa,EACb,sHAAsH,CACzH;SACA,MAAM,CAAC,gBAAgB,EAAE,iEAAiE,CAAC;SAC3F,MAAM,CAAC,eAAe,EAAE,8CAA8C,EAAE,OAAO,EAAE,EAAE,CAAC;SACpF,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC;SAChE,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,WAAW,CACR,OAAO,EACP;;;;;;wEAM4D,CAC/D;SACA,MAAM,CAAC,YAAY,CAAC,CAAA;IAEzB,MAAM;SACD,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC;SAClC,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;SAC/D,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,WAAW,CACR,OAAO,EACP;;;;uDAI2C,CAC9C;SACA,MAAM,CAAC,cAAc,CAAC,CAAA;IAE3B,MAAM,WAAW,GAAG,MAAM;SACrB,OAAO,CAAC,4BAA4B,CAAC;SACrC,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,OAAO,EAAE,uCAAuC,CAAC;SACxD,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;SAC/D,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,WAAW,CACR,OAAO,EACP;;;;6FAIiF,CACpF;SACA,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3C,WAAW,CAAC,IAAI,EAAE,CAAA;YAClB,OAAM;QACV,CAAC;QACD,OAAO,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEN,MAAM;SACD,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC;SACnC,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;SAC/D,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,WAAW,CACR,OAAO,EACP;;;;yDAI6C,CAChD;SACA,MAAM,CAAC,YAAY,CAAC,CAAA;IAEzB,MAAM;SACD,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,eAAe,EAAE,yCAAyC,CAAC;SAClE,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;SAC/D,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,WAAW,CACR,OAAO,EACP;;;wDAG4C,CAC/C;SACA,MAAM,CAAC,UAAU,CAAC,CAAA;IAEvB,MAAM;SACD,OAAO,CAAC,6BAA6B,CAAC;SACtC,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;SAC/D,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CAAC,YAAY,CAAC,CAAA;IAEzB,MAAM;SACD,OAAO,CAAC,+BAA+B,CAAC;SACxC,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,WAAW,CACR,OAAO,EACP;;;;2DAI+C,CAClD;SACA,MAAM,CAAC,YAAY,CAAC,CAAA;IAEzB,MAAM;SACD,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;SAC/D,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,WAAW,CACR,OAAO,EACP;;4CAEgC,CACnC;SACA,MAAM,CAAC,YAAY,CAAC,CAAA;AAC7B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/thread/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { MutationOptions } from '../../lib/options.js';
2
2
  export declare function markThreadDone(ref: string, options: MutationOptions): Promise<void>;
3
+ export declare function markThreadUndone(ref: string, options: MutationOptions): Promise<void>;
3
4
  //# sourceMappingURL=mutate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/mutate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAK3D,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCzF"}
1
+ {"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/mutate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAwD3D,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzF;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3F"}