@doist/todoist-cli 1.11.0 → 1.12.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 (46) hide show
  1. package/dist/commands/comment.js +8 -8
  2. package/dist/commands/comment.js.map +1 -1
  3. package/dist/commands/label.d.ts.map +1 -1
  4. package/dist/commands/label.js +15 -46
  5. package/dist/commands/label.js.map +1 -1
  6. package/dist/commands/notification.js +3 -3
  7. package/dist/commands/notification.js.map +1 -1
  8. package/dist/commands/project.js +3 -3
  9. package/dist/commands/project.js.map +1 -1
  10. package/dist/commands/reminder.d.ts.map +1 -1
  11. package/dist/commands/reminder.js +15 -5
  12. package/dist/commands/reminder.js.map +1 -1
  13. package/dist/commands/section.d.ts.map +1 -1
  14. package/dist/commands/section.js +10 -5
  15. package/dist/commands/section.js.map +1 -1
  16. package/dist/commands/task.d.ts.map +1 -1
  17. package/dist/commands/task.js +17 -7
  18. package/dist/commands/task.js.map +1 -1
  19. package/dist/commands/workspace.d.ts.map +1 -1
  20. package/dist/commands/workspace.js +15 -5
  21. package/dist/commands/workspace.js.map +1 -1
  22. package/dist/index.js +109 -40
  23. package/dist/index.js.map +1 -1
  24. package/dist/lib/api/core.d.ts.map +1 -1
  25. package/dist/lib/api/core.js +1 -0
  26. package/dist/lib/api/core.js.map +1 -1
  27. package/dist/lib/logger.d.ts +42 -0
  28. package/dist/lib/logger.d.ts.map +1 -0
  29. package/dist/lib/logger.js +227 -0
  30. package/dist/lib/logger.js.map +1 -0
  31. package/dist/lib/markdown.d.ts.map +1 -1
  32. package/dist/lib/markdown.js +6 -2
  33. package/dist/lib/markdown.js.map +1 -1
  34. package/dist/lib/refs.d.ts +1 -1
  35. package/dist/lib/refs.d.ts.map +1 -1
  36. package/dist/lib/refs.js +39 -23
  37. package/dist/lib/refs.js.map +1 -1
  38. package/dist/lib/skills/content.d.ts +1 -1
  39. package/dist/lib/skills/content.d.ts.map +1 -1
  40. package/dist/lib/skills/content.js +8 -6
  41. package/dist/lib/skills/content.js.map +1 -1
  42. package/dist/lib/spinner.d.ts +4 -1
  43. package/dist/lib/spinner.d.ts.map +1 -1
  44. package/dist/lib/spinner.js +85 -17
  45. package/dist/lib/spinner.js.map +1 -1
  46. package/package.json +1 -1
@@ -0,0 +1,227 @@
1
+ /**
2
+ * Verbose logging module for debugging API latency and CLI behavior.
3
+ *
4
+ * Verbosity levels (stackable -v flags):
5
+ * -v (1) INFO : commands invoked, API endpoints hit, response status + total timing
6
+ * -vv (2) DETAIL : request parameters, response metadata, pagination progress
7
+ * -vvv (3) DEBUG : reference resolution steps, HTTP headers, rate-limit info
8
+ * -vvvv (4) TRACE : full request/response headers, body sizes, connection details
9
+ *
10
+ * All output goes to stderr with prefixed tags so it never pollutes stdout data.
11
+ * Can also be activated via TD_VERBOSE=1..4 environment variable.
12
+ */
13
+ export const Verbosity = {
14
+ SILENT: 0,
15
+ INFO: 1,
16
+ DETAIL: 2,
17
+ DEBUG: 3,
18
+ TRACE: 4,
19
+ };
20
+ const LEVEL_TAG = {
21
+ [Verbosity.INFO]: 'info',
22
+ [Verbosity.DETAIL]: 'detail',
23
+ [Verbosity.DEBUG]: 'debug',
24
+ [Verbosity.TRACE]: 'trace',
25
+ };
26
+ class Logger {
27
+ level = Verbosity.SILENT;
28
+ /** Set verbosity from parsed CLI flags or environment. */
29
+ initialize() {
30
+ // Environment variable takes precedence if set
31
+ const envLevel = process.env.TD_VERBOSE;
32
+ if (envLevel) {
33
+ const parsed = parseInt(envLevel, 10);
34
+ if (parsed >= Verbosity.INFO && parsed <= Verbosity.TRACE) {
35
+ this.level = parsed;
36
+ }
37
+ }
38
+ // Count -v flags in argv (supports -v, -vv, -vvv, -vvvv, and repeated --verbose)
39
+ const args = process.argv.slice(2);
40
+ let cliLevel = 0;
41
+ for (const arg of args) {
42
+ if (arg === '--verbose') {
43
+ cliLevel += 1;
44
+ }
45
+ else if (/^-v+$/.test(arg)) {
46
+ // -v = 1, -vv = 2, -vvv = 3, -vvvv = 4
47
+ cliLevel += arg.length - 1;
48
+ }
49
+ }
50
+ // CLI flags override env var if higher
51
+ if (cliLevel > 0) {
52
+ this.level = Math.min(cliLevel, Verbosity.TRACE);
53
+ }
54
+ if (this.level >= Verbosity.INFO) {
55
+ this.log(Verbosity.INFO, `verbose logging enabled (level=${this.level})`);
56
+ }
57
+ }
58
+ getLevel() {
59
+ return this.level;
60
+ }
61
+ isEnabled(level = Verbosity.INFO) {
62
+ return this.level >= level;
63
+ }
64
+ /** Core log method. Only emits if current verbosity >= requested level. */
65
+ log(level, message, data) {
66
+ if (this.level < level)
67
+ return;
68
+ const tag = LEVEL_TAG[level] ?? 'log';
69
+ const ts = new Date().toISOString();
70
+ let line = `[td:${tag}] ${ts} ${message}`;
71
+ if (data && Object.keys(data).length > 0) {
72
+ const parts = [];
73
+ for (const [key, value] of Object.entries(data)) {
74
+ if (value === undefined || value === null)
75
+ continue;
76
+ parts.push(`${key}=${typeof value === 'object' ? JSON.stringify(value) : value}`);
77
+ }
78
+ if (parts.length > 0) {
79
+ line += ` | ${parts.join(' ')}`;
80
+ }
81
+ }
82
+ process.stderr.write(`${line}\n`);
83
+ }
84
+ /** Level-specific convenience methods. */
85
+ info(message, data) {
86
+ this.log(Verbosity.INFO, message, data);
87
+ }
88
+ detail(message, data) {
89
+ this.log(Verbosity.DETAIL, message, data);
90
+ }
91
+ debug(message, data) {
92
+ this.log(Verbosity.DEBUG, message, data);
93
+ }
94
+ trace(message, data) {
95
+ this.log(Verbosity.TRACE, message, data);
96
+ }
97
+ /** Log timing of an async operation. Returns the operation result. */
98
+ async timed(level, label, operation, extraData) {
99
+ if (this.level < level) {
100
+ return operation();
101
+ }
102
+ const start = performance.now();
103
+ this.log(level, `${label} ...started`, extraData);
104
+ try {
105
+ const result = await operation();
106
+ const durationMs = performance.now() - start;
107
+ this.log(level, `${label} ...done`, {
108
+ ...extraData,
109
+ duration_ms: Math.round(durationMs),
110
+ });
111
+ return result;
112
+ }
113
+ catch (error) {
114
+ const durationMs = performance.now() - start;
115
+ this.log(level, `${label} ...FAILED`, {
116
+ ...extraData,
117
+ duration_ms: Math.round(durationMs),
118
+ error: error instanceof Error ? error.message : String(error),
119
+ });
120
+ throw error;
121
+ }
122
+ }
123
+ }
124
+ // Global singleton
125
+ let logger = null;
126
+ export function getLogger() {
127
+ if (!logger) {
128
+ logger = new Logger();
129
+ }
130
+ return logger;
131
+ }
132
+ export function initializeLogger() {
133
+ const log = getLogger();
134
+ log.initialize();
135
+ // When verbose, patch globalThis.fetch so SDK-internal HTTP calls are also logged.
136
+ // This is the only way to get HTTP-level visibility for @doist/todoist-api-typescript
137
+ // since it uses fetch() internally and doesn't expose hooks.
138
+ if (log.isEnabled()) {
139
+ patchGlobalFetch();
140
+ }
141
+ }
142
+ /** Save original fetch and replace with logging wrapper. */
143
+ function patchGlobalFetch() {
144
+ const originalFetch = globalThis.fetch;
145
+ globalThis.fetch = async (input, init) => {
146
+ const log = getLogger();
147
+ const urlStr = typeof input === 'string' ? input : input instanceof URL ? input.toString() : input.url;
148
+ const method = init?.method ?? (typeof input === 'object' && 'method' in input ? input.method : 'GET');
149
+ const urlObj = new URL(urlStr);
150
+ log.info(`fetch ${method} ${urlObj.pathname}`);
151
+ log.detail(`fetch ${method} ${urlStr}`);
152
+ // Log request body size at DETAIL
153
+ if (init?.body) {
154
+ const bodyStr = typeof init.body === 'string'
155
+ ? init.body
156
+ : init.body instanceof URLSearchParams
157
+ ? init.body.toString()
158
+ : null;
159
+ if (bodyStr) {
160
+ log.detail('request body', { size_bytes: bodyStr.length });
161
+ if (init.body instanceof URLSearchParams) {
162
+ log.trace('request body keys', { keys: Array.from(init.body.keys()) });
163
+ }
164
+ }
165
+ }
166
+ // Log request headers at TRACE (redact Authorization)
167
+ if (log.isEnabled(Verbosity.TRACE) && init?.headers) {
168
+ const hdrs = {};
169
+ if (init.headers instanceof Headers) {
170
+ init.headers.forEach((v, k) => {
171
+ hdrs[k] = k.toLowerCase() === 'authorization' ? '[REDACTED]' : v;
172
+ });
173
+ }
174
+ else if (typeof init.headers === 'object') {
175
+ for (const [k, v] of Object.entries(init.headers)) {
176
+ hdrs[k] = k.toLowerCase() === 'authorization' ? '[REDACTED]' : String(v);
177
+ }
178
+ }
179
+ log.trace('request headers', hdrs);
180
+ }
181
+ const startTime = performance.now();
182
+ const response = await originalFetch(input, init);
183
+ const durationMs = Math.round(performance.now() - startTime);
184
+ // INFO: status + timing
185
+ log.info(`fetch ${method} ${urlObj.pathname} => ${response.status}`, {
186
+ duration_ms: durationMs,
187
+ });
188
+ // DETAIL: content-length
189
+ const contentLength = response.headers.get('content-length');
190
+ if (contentLength) {
191
+ log.detail('response', { content_length: contentLength });
192
+ }
193
+ // DEBUG: rate-limit and diagnostic headers
194
+ const diagHeaders = {};
195
+ for (const name of [
196
+ 'x-request-id',
197
+ 'x-ratelimit-limit',
198
+ 'x-ratelimit-remaining',
199
+ 'x-ratelimit-reset',
200
+ 'retry-after',
201
+ 'cf-ray',
202
+ ]) {
203
+ const val = response.headers.get(name);
204
+ if (val)
205
+ diagHeaders[name] = val;
206
+ }
207
+ if (Object.keys(diagHeaders).length > 0) {
208
+ log.debug('response headers', diagHeaders);
209
+ }
210
+ // TRACE: all response headers
211
+ if (log.isEnabled(Verbosity.TRACE)) {
212
+ const allHeaders = {};
213
+ response.headers.forEach((value, name) => {
214
+ if (!name.toLowerCase().includes('set-cookie')) {
215
+ allHeaders[name] = value;
216
+ }
217
+ });
218
+ log.trace('all response headers', allHeaders);
219
+ }
220
+ return response;
221
+ };
222
+ }
223
+ /** Reset for testing. */
224
+ export function resetLogger() {
225
+ logger = null;
226
+ }
227
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/lib/markdown.ts"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQnD"}
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/lib/markdown.ts"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAanD"}
@@ -1,8 +1,12 @@
1
1
  import { marked } from 'marked';
2
2
  import { markedTerminal } from 'marked-terminal';
3
- // Types are outdated - markedTerminal returns MarkedExtension at runtime
4
- marked.use(markedTerminal());
3
+ let initialized = false;
5
4
  export function renderMarkdown(text) {
5
+ if (!initialized) {
6
+ // Types are outdated - markedTerminal returns MarkedExtension at runtime
7
+ marked.use(markedTerminal());
8
+ initialized = true;
9
+ }
6
10
  // Handle uncompletable task prefix: escape leading "* " so it's not a bullet
7
11
  const escaped = text.startsWith('* ') ? `\\* ${text.slice(2)}` : text;
8
12
  const rendered = marked.parse(escaped);
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/lib/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,MAAM,EAAE,MAAM,QAAQ,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,yEAAyE;AACzE,MAAM,CAAC,GAAG,CAAC,cAAc,EAAgC,CAAC,CAAA;AAE1D,MAAM,UAAU,cAAc,CAAC,IAAY;IACvC,6EAA6E;IAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACtC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAA;IACf,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAA;AAC7B,CAAC"}
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/lib/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,MAAM,EAAE,MAAM,QAAQ,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,IAAI,WAAW,GAAG,KAAK,CAAA;AAEvB,MAAM,UAAU,cAAc,CAAC,IAAY;IACvC,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,yEAAyE;QACzE,MAAM,CAAC,GAAG,CAAC,cAAc,EAAgC,CAAC,CAAA;QAC1D,WAAW,GAAG,IAAI,CAAA;IACtB,CAAC;IACD,6EAA6E;IAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACtC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAA;IACf,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAA;AAC7B,CAAC"}
@@ -4,7 +4,7 @@ import { type Workspace } from './api/workspaces.js';
4
4
  export declare function isIdRef(ref: string): boolean;
5
5
  export declare function extractId(ref: string): string;
6
6
  export declare function looksLikeRawId(ref: string): boolean;
7
- export declare function requireIdRef(ref: string, entityName: string): string;
7
+ export declare function lenientIdRef(ref: string, entityName: string): string;
8
8
  export declare function resolveTaskRef(api: TodoistApi, ref: string): Promise<Task>;
9
9
  export declare function resolveProjectRef(api: TodoistApi, ref: string): Promise<Project>;
10
10
  export declare function resolveProjectId(api: TodoistApi, ref: string): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAIrE,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGnD;AAOD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CASpE;AA0DD,wBAAsB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQtF;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpF;AAED,wBAAsB,gBAAgB,CAClC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAED,wBAAsB,mBAAmB,CACrC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAgDjB;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA+BzE"}
1
+ {"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,+BAA+B,CAAA;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAIrE,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAQpE;AAkED,wBAAsB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQtF;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpF;AAED,wBAAsB,gBAAgB,CAClC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAuCjB;AAED,wBAAsB,mBAAmB,CACrC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CA4CjB;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAkCzE"}
package/dist/lib/refs.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { TodoistRequestError } from '@doist/todoist-api-typescript';
1
2
  import { fetchWorkspaces } from './api/workspaces.js';
2
3
  import { formatError } from './output.js';
3
4
  import { paginate } from './pagination.js';
@@ -12,18 +13,14 @@ export function looksLikeRawId(ref) {
12
13
  return false;
13
14
  return /^\d+$/.test(ref) || (/[a-zA-Z]/.test(ref) && /\d/.test(ref));
14
15
  }
15
- function idPrefixHint(ref) {
16
- if (!looksLikeRawId(ref))
17
- return [];
18
- return [`If "${ref}" is an ID, prefix it: id:${ref}`];
19
- }
20
- export function requireIdRef(ref, entityName) {
21
- if (!isIdRef(ref)) {
22
- throw new Error(formatError('INVALID_REF', `Invalid ${entityName} reference "${ref}".`, [
23
- `Use id:xxx format (e.g., id:${ref})`,
24
- ]));
25
- }
26
- return extractId(ref);
16
+ export function lenientIdRef(ref, entityName) {
17
+ if (isIdRef(ref))
18
+ return extractId(ref);
19
+ if (looksLikeRawId(ref))
20
+ return ref;
21
+ throw new Error(formatError('INVALID_REF', `Invalid ${entityName} reference "${ref}".`, [
22
+ `Use id:xxx format (e.g., id:${ref})`,
23
+ ]));
27
24
  }
28
25
  async function resolveRef(ref, fetchById, fetchAll, getName, entityType) {
29
26
  if (!ref.trim()) {
@@ -46,20 +43,27 @@ async function resolveRef(ref, fetchById, fetchAll, getName, entityType) {
46
43
  if (partial.length > 1) {
47
44
  throw new Error(formatError(`AMBIGUOUS_${entityType.toUpperCase()}`, `Multiple ${entityType}s match "${ref}":`, partial.slice(0, 5).map((item) => `"${getName(item)}" (id:${item.id})`)));
48
45
  }
49
- throw new Error(formatError(`${entityType.toUpperCase()}_NOT_FOUND`, `${entityType} "${ref}" not found.`, idPrefixHint(ref)));
46
+ if (looksLikeRawId(ref)) {
47
+ try {
48
+ return await fetchById(ref);
49
+ }
50
+ catch (error) {
51
+ if (error instanceof TodoistRequestError && error.httpStatusCode === 404) {
52
+ // Genuine not-found — fall through to generic error
53
+ }
54
+ else {
55
+ throw error;
56
+ }
57
+ }
58
+ }
59
+ throw new Error(formatError(`${entityType.toUpperCase()}_NOT_FOUND`, `${entityType} "${ref}" not found.`));
50
60
  }
51
61
  export async function resolveTaskRef(api, ref) {
52
62
  return resolveRef(ref, (id) => api.getTask(id), () => paginate((cursor, limit) => api.getTasksByFilter({
53
63
  query: `search: ${ref}`,
54
64
  cursor: cursor ?? undefined,
55
65
  limit,
56
- }), { limit: 5 }), (t) => t.content, 'task').catch((err) => {
57
- // If ref looks like a raw ID (numeric or alphanumeric mix), try as direct ID lookup
58
- if (looksLikeRawId(ref)) {
59
- return resolveTaskRef(api, `id:${ref}`);
60
- }
61
- throw err;
62
- });
66
+ }), { limit: 5 }), (t) => t.content, 'task');
63
67
  }
64
68
  export async function resolveProjectRef(api, ref) {
65
69
  return resolveRef(ref, (id) => api.getProject(id), () => api.getProjects(), (p) => p.name, 'project');
@@ -88,7 +92,12 @@ export async function resolveSectionId(api, ref, projectId) {
88
92
  if (partial.length > 1) {
89
93
  throw new Error(formatError('AMBIGUOUS_SECTION', `Multiple sections match "${ref}":`, partial.slice(0, 5).map((s) => `"${s.name}" (id:${s.id})`)));
90
94
  }
91
- throw new Error(formatError('SECTION_NOT_FOUND', `Section "${ref}" not found in project.`, idPrefixHint(ref)));
95
+ if (looksLikeRawId(ref)) {
96
+ const byId = sections.find((s) => s.id === ref);
97
+ if (byId)
98
+ return byId.id;
99
+ }
100
+ throw new Error(formatError('SECTION_NOT_FOUND', `Section "${ref}" not found in project.`));
92
101
  }
93
102
  export async function resolveParentTaskId(api, ref, projectId, sectionId) {
94
103
  if (isIdRef(ref)) {
@@ -117,7 +126,9 @@ export async function resolveParentTaskId(api, ref, projectId, sectionId) {
117
126
  if (partial.length > 1) {
118
127
  throw new Error(formatError('AMBIGUOUS_PARENT', `Multiple tasks match "${ref}" in project:`, partial.slice(0, 5).map((t) => `"${t.content}" (id:${t.id})`)));
119
128
  }
120
- throw new Error(formatError('PARENT_NOT_FOUND', `Parent task "${ref}" not found in project.`, idPrefixHint(ref)));
129
+ if (looksLikeRawId(ref))
130
+ return ref;
131
+ throw new Error(formatError('PARENT_NOT_FOUND', `Parent task "${ref}" not found in project.`));
121
132
  }
122
133
  export async function resolveWorkspaceRef(ref) {
123
134
  const workspaces = await fetchWorkspaces();
@@ -139,6 +150,11 @@ export async function resolveWorkspaceRef(ref) {
139
150
  if (partial.length > 1) {
140
151
  throw new Error(formatError('AMBIGUOUS_WORKSPACE', `Multiple workspaces match "${ref}":`, partial.slice(0, 5).map((w) => `"${w.name}" (id:${w.id})`)));
141
152
  }
142
- throw new Error(formatError('WORKSPACE_NOT_FOUND', `Workspace "${ref}" not found.`, idPrefixHint(ref)));
153
+ if (looksLikeRawId(ref)) {
154
+ const byId = workspaces.find((w) => w.id === ref);
155
+ if (byId)
156
+ return byId;
157
+ }
158
+ throw new Error(formatError('WORKSPACE_NOT_FOUND', `Workspace "${ref}" not found.`));
143
159
  }
144
160
  //# sourceMappingURL=refs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"refs.js","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refs.js","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  export declare const SKILL_NAME = "todoist";
2
2
  export declare const SKILL_DESCRIPTION = "Manage Todoist tasks, projects, labels, comments, and more via the td CLI";
3
- export declare const SKILL_CONTENT = "# Todoist CLI (td)\n\nUse this skill when the user wants to interact with their Todoist tasks.\n\n## Quick Reference\n\n- `td today` - Tasks due today and overdue\n- `td inbox` - Inbox tasks\n- `td upcoming` - Tasks due in next N days\n- `td completed` - Recently completed tasks\n- `td task add \"content\"` - Add a task\n- `td task list` - List tasks with filters\n- `td task complete <ref>` - Complete a task\n- `td project list` - List projects\n- `td label list` - List labels\n- `td filter list/show` - Manage and use saved filters\n- `td workspace list` - List workspaces\n- `td activity` - Activity logs\n- `td notification list` - Notifications\n- `td reminder add` - Task reminders\n- `td stats` - Productivity stats\n- `td settings view` - User settings\n\n## Output Formats\n\nAll list commands support:\n- `--json` - JSON output (essential fields)\n- `--ndjson` - Newline-delimited JSON (streaming)\n- `--full` - Include all fields in JSON\n- `--raw` - Disable markdown rendering\n\n## Shared List Options\n\nMost list commands also support:\n- `--limit <n>` - Limit number of results\n- `--all` - Fetch all results (no limit)\n- `--cursor <cursor>` - Continue from pagination cursor\n- `--show-urls` - Show web app URLs for each item\n\n## Global Options\n\n- `--no-spinner` - Disable loading animations\n- `--progress-jsonl` - Machine-readable progress events (JSONL to stderr)\n\n## Task References\n\nTasks can be referenced by:\n- Name (fuzzy matched within context)\n- `id:xxx` - Explicit task ID\n\n## Priority Mapping\n\n- p1 = Highest priority (API value 4)\n- p2 = High priority (API value 3)\n- p3 = Medium priority (API value 2)\n- p4 = Lowest priority (API value 1, default)\n\n## Commands\n\n### Today\n```bash\ntd today # Due today + overdue\ntd today --json # JSON output\ntd today --workspace \"Work\" # Filter to workspace\ntd today --personal # Personal projects only\ntd today --any-assignee # Include tasks assigned to others\n```\n\n### Inbox\n```bash\ntd inbox # Inbox tasks\ntd inbox --priority p1 # Filter by priority\ntd inbox --due today # Filter by due date\n```\n\n### Upcoming\n```bash\ntd upcoming # Next 7 days\ntd upcoming 14 # Next 14 days\ntd upcoming --workspace \"Work\" # Filter to workspace\ntd upcoming --personal # Personal projects only\ntd upcoming --any-assignee # Include tasks assigned to others\n```\n\n### Completed\n```bash\ntd completed # Completed today\ntd completed --since 2024-01-01 --until 2024-01-31\ntd completed --project \"Work\" # Filter by project\n```\n\n### Task Management\n```bash\n# List with filters\ntd task list --project \"Work\"\ntd task list --label \"urgent\" --priority p1\ntd task list --due today\ntd task list --filter \"today | overdue\"\ntd task list --assignee me\ntd task list --assignee \"john@example.com\"\ntd task list --unassigned\ntd task list --workspace \"Work\"\ntd task list --personal\ntd task list --parent \"Parent task\"\n\n# View, complete, uncomplete\ntd task view \"task name\"\ntd task complete \"task name\"\ntd task complete id:123456\ntd task complete \"task name\" --forever # Stop recurrence\ntd task uncomplete id:123456 # Reopen completed task\n\n# Add tasks\ntd task add \"New task\" --due \"tomorrow\" --priority p2\ntd task add \"Task\" --deadline \"2024-03-01\" --project \"Work\"\ntd task add \"Task\" --duration 1h --section id:456\ntd task add \"Task\" --labels \"urgent,review\" --parent \"Parent task\"\ntd task add \"Task\" --description \"Details here\" --assignee me\n\n# Update\ntd task update \"task name\" --due \"next week\"\ntd task update \"task name\" --deadline \"2024-06-01\"\ntd task update \"task name\" --no-deadline\ntd task update \"task name\" --duration 2h\ntd task update \"task name\" --assignee \"john@example.com\"\ntd task update \"task name\" --unassign\n\n# Move\ntd task move \"task name\" --project \"Personal\"\ntd task move \"task name\" --section \"In Progress\"\ntd task move \"task name\" --parent \"Parent task\"\ntd task move \"task name\" --no-parent # Move to project root\ntd task move \"task name\" --no-section # Remove from section\n\n# Delete and browse\ntd task delete \"task name\" --yes\ntd task browse \"task name\" # Open in browser\n```\n\n### Projects\n```bash\ntd project list\ntd project list --personal # Personal projects only\ntd project view \"Project Name\"\ntd project collaborators \"Project Name\"\ntd project create --name \"New Project\" --color \"blue\"\ntd project update \"Project Name\" --favorite\ntd project archive \"Project Name\"\ntd project unarchive \"Project Name\"\ntd project delete \"Project Name\" --yes\ntd project browse \"Project Name\" # Open in browser\n```\n\n### Labels\n```bash\ntd label list\ntd label create --name \"urgent\" --color \"red\"\ntd label update \"urgent\" --color \"orange\"\ntd label delete \"urgent\" --yes\ntd label browse \"urgent\" # Open in browser\n```\n\n### Comments\n```bash\ntd comment list --task \"task name\"\ntd comment list --project \"Project Name\" -P # Project comments\ntd comment add --task \"task name\" --content \"Comment text\"\ntd comment add --task \"task name\" --content \"See attached\" --file ./report.pdf\ntd comment view id:123 # View full comment\ntd comment update id:123 --content \"Updated text\"\ntd comment delete id:123 --yes\ntd comment browse id:123 # Open in browser\n```\n\n### Sections\n```bash\ntd section list \"Work\" # List sections in project\ntd section create --project \"Work\" --name \"In Progress\"\ntd section update id:123 --name \"Done\"\ntd section delete id:123 --yes\ntd section browse id:123 # Open in browser\n```\n\n### Filters\n```bash\ntd filter list\ntd filter create --name \"Urgent work\" --query \"p1 & #Work\"\ntd filter show \"Urgent work\" # Show tasks matching filter\ntd filter update \"Urgent work\" --query \"p1 & #Work & today\"\ntd filter delete \"Urgent work\" --yes\ntd filter browse \"Urgent work\" # Open in browser\n```\n\n### Workspaces\n```bash\ntd workspace list\ntd workspace view \"Workspace Name\"\ntd workspace projects \"Workspace Name\"\ntd workspace users \"Workspace Name\" --role ADMIN,MEMBER\n```\n\n### Activity\n```bash\ntd activity # Recent activity\ntd activity --since 2024-01-01 --until 2024-01-31\ntd activity --type task --event completed\ntd activity --project \"Work\"\ntd activity --by me\n```\n\n### Notifications\n```bash\ntd notification list\ntd notification list --unread\ntd notification list --type \"item_assign\"\ntd notification view id:123\ntd notification read --all --yes # Mark all as read\ntd notification accept id:123 # Accept share invitation\ntd notification reject id:123 # Reject share invitation\n```\n\n### Reminders\n```bash\ntd reminder list \"task name\"\ntd reminder add \"task name\" --before 30m\ntd reminder add \"task name\" --at \"2024-01-15 10:00\"\ntd reminder update id:123 --before 1h\ntd reminder delete id:123 --yes\n```\n\n### Stats\n```bash\ntd stats # View karma and productivity\ntd stats --json\ntd stats goals --daily 10 --weekly 50\ntd stats vacation --on # Enable vacation mode\ntd stats vacation --off # Disable vacation mode\n```\n\n### Settings\n```bash\ntd settings view\ntd settings view --json\ntd settings update --timezone \"America/New_York\"\ntd settings update --time-format 24 --date-format intl\ntd settings themes # List available themes\n```\n\n## Examples\n\n### Daily workflow\n```bash\ntd today --json | jq '.results | length' # Count today's tasks\ntd inbox --limit 5 # Quick inbox check\ntd upcoming # What's coming this week\ntd completed # What I finished today\n```\n\n### Filter by multiple criteria\n```bash\ntd task list --project \"Work\" --label \"urgent\" --priority p1\ntd task list --filter \"today & #Work\"\ntd task list --workspace \"Work\" --due today\n```\n\n### Complete tasks efficiently\n```bash\ntd task complete \"Review PR\"\ntd task complete id:123456789\ntd task uncomplete id:123456789 # Reopen if needed\n```\n";
3
+ export declare const SKILL_CONTENT = "# Todoist CLI (td)\n\nUse this skill when the user wants to interact with their Todoist tasks.\n\n## Quick Reference\n\n- `td today` - Tasks due today and overdue\n- `td inbox` - Inbox tasks\n- `td upcoming` - Tasks due in next N days\n- `td completed` - Recently completed tasks\n- `td task add \"content\"` - Add a task\n- `td task list` - List tasks with filters\n- `td task complete <ref>` - Complete a task\n- `td project list` - List projects\n- `td label list` - List labels\n- `td filter list/show` - Manage and use saved filters\n- `td workspace list` - List workspaces\n- `td activity` - Activity logs\n- `td notification list` - Notifications\n- `td reminder add` - Task reminders\n- `td stats` - Productivity stats\n- `td settings view` - User settings\n\n## Output Formats\n\nAll list commands support:\n- `--json` - JSON output (essential fields)\n- `--ndjson` - Newline-delimited JSON (streaming)\n- `--full` - Include all fields in JSON\n- `--raw` - Disable markdown rendering\n\n## Shared List Options\n\nMost list commands also support:\n- `--limit <n>` - Limit number of results\n- `--all` - Fetch all results (no limit)\n- `--cursor <cursor>` - Continue from pagination cursor\n- `--show-urls` - Show web app URLs for each item\n\n## Global Options\n\n- `--no-spinner` - Disable loading animations\n- `--progress-jsonl` - Machine-readable progress events (JSONL to stderr)\n- `-v, --verbose` - Verbose output to stderr (repeat: -v info, -vv detail, -vvv debug, -vvvv trace)\n\n## Task References\n\nTasks can be referenced by:\n- Name (fuzzy matched within context)\n- `id:xxx` - Explicit task ID\n\n## Priority Mapping\n\n- p1 = Highest priority (API value 4)\n- p2 = High priority (API value 3)\n- p3 = Medium priority (API value 2)\n- p4 = Lowest priority (API value 1, default)\n\n## Commands\n\n### Today\n```bash\ntd today # Due today + overdue\ntd today --json # JSON output\ntd today --workspace \"Work\" # Filter to workspace\ntd today --personal # Personal projects only\ntd today --any-assignee # Include tasks assigned to others\n```\n\n### Inbox\n```bash\ntd inbox # Inbox tasks\ntd inbox --priority p1 # Filter by priority\ntd inbox --due today # Filter by due date\n```\n\n### Upcoming\n```bash\ntd upcoming # Next 7 days\ntd upcoming 14 # Next 14 days\ntd upcoming --workspace \"Work\" # Filter to workspace\ntd upcoming --personal # Personal projects only\ntd upcoming --any-assignee # Include tasks assigned to others\n```\n\n### Completed\n```bash\ntd completed # Completed today\ntd completed --since 2024-01-01 --until 2024-01-31\ntd completed --project \"Work\" # Filter by project\n```\n\n### Task Management\n```bash\n# List with filters\ntd task list --project \"Work\"\ntd task list --label \"urgent\" --priority p1\ntd task list --due today\ntd task list --filter \"today | overdue\"\ntd task list --assignee me\ntd task list --assignee \"john@example.com\"\ntd task list --unassigned\ntd task list --workspace \"Work\"\ntd task list --personal\ntd task list --parent \"Parent task\"\n\n# View, complete, uncomplete\ntd task view \"task name\"\ntd task complete \"task name\"\ntd task complete id:123456\ntd task complete \"task name\" --forever # Stop recurrence\ntd task uncomplete id:123456 # Reopen completed task\n\n# Add tasks\ntd task add \"New task\" --due \"tomorrow\" --priority p2\ntd task add \"Task\" --deadline \"2024-03-01\" --project \"Work\"\ntd task add \"Task\" --duration 1h --section \"Planning\" --project \"Work\"\ntd task add \"Task\" --labels \"urgent,review\" --parent \"Parent task\"\ntd task add \"Task\" --description \"Details here\" --assignee me\n\n# Update\ntd task update \"task name\" --due \"next week\"\ntd task update \"task name\" --deadline \"2024-06-01\"\ntd task update \"task name\" --no-deadline\ntd task update \"task name\" --duration 2h\ntd task update \"task name\" --assignee \"john@example.com\"\ntd task update \"task name\" --unassign\n\n# Move\ntd task move \"task name\" --project \"Personal\"\ntd task move \"task name\" --section \"In Progress\"\ntd task move \"task name\" --parent \"Parent task\"\ntd task move \"task name\" --no-parent # Move to project root\ntd task move \"task name\" --no-section # Remove from section\n\n# Delete and browse\ntd task delete \"task name\" --yes\ntd task browse \"task name\" # Open in browser\n```\n\n### Projects\n```bash\ntd project list\ntd project list --personal # Personal projects only\ntd project view \"Project Name\"\ntd project collaborators \"Project Name\"\ntd project create --name \"New Project\" --color \"blue\"\ntd project update \"Project Name\" --favorite\ntd project archive \"Project Name\"\ntd project unarchive \"Project Name\"\ntd project delete \"Project Name\" --yes\ntd project browse \"Project Name\" # Open in browser\n```\n\n### Labels\n```bash\ntd label list\ntd label create --name \"urgent\" --color \"red\"\ntd label update \"urgent\" --color \"orange\"\ntd label delete \"urgent\" --yes\ntd label browse \"urgent\" # Open in browser\n```\n\n### Comments\n```bash\ntd comment list --task \"task name\"\ntd comment list --project \"Project Name\" -P # Project comments\ntd comment add --task \"task name\" --content \"Comment text\"\ntd comment add --task \"task name\" --content \"See attached\" --file ./report.pdf\ntd comment view id:123 # View full comment\ntd comment update id:123 --content \"Updated text\"\ntd comment delete id:123 --yes\ntd comment browse id:123 # Open in browser\n```\n\n### Sections\n```bash\ntd section list \"Work\" # List sections in project (or --project \"Work\")\ntd section list --project \"Work\" # Same, using named flag\ntd section create --project \"Work\" --name \"In Progress\"\ntd section update id:123 --name \"Done\"\ntd section delete id:123 --yes\ntd section browse id:123 # Open in browser\n```\n\n### Filters\n```bash\ntd filter list\ntd filter create --name \"Urgent work\" --query \"p1 & #Work\"\ntd filter show \"Urgent work\" # Show tasks matching filter\ntd filter update \"Urgent work\" --query \"p1 & #Work & today\"\ntd filter delete \"Urgent work\" --yes\ntd filter browse \"Urgent work\" # Open in browser\n```\n\n### Workspaces\n```bash\ntd workspace list\ntd workspace view \"Workspace Name\"\ntd workspace projects \"Workspace Name\" # or --workspace \"Workspace Name\"\ntd workspace users \"Workspace Name\" --role ADMIN,MEMBER # or --workspace \"...\"\n```\n\n### Activity\n```bash\ntd activity # Recent activity\ntd activity --since 2024-01-01 --until 2024-01-31\ntd activity --type task --event completed\ntd activity --project \"Work\"\ntd activity --by me\n```\n\n### Notifications\n```bash\ntd notification list\ntd notification list --unread\ntd notification list --type \"item_assign\"\ntd notification view id:123\ntd notification read --all --yes # Mark all as read\ntd notification accept id:123 # Accept share invitation\ntd notification reject id:123 # Reject share invitation\n```\n\n### Reminders\n```bash\ntd reminder list \"task name\" # or --task \"task name\"\ntd reminder add \"task name\" --before 30m # or --task \"task name\" --before 30m\ntd reminder add \"task name\" --at \"2024-01-15 10:00\"\ntd reminder update id:123 --before 1h\ntd reminder delete id:123 --yes\n```\n\n### Stats\n```bash\ntd stats # View karma and productivity\ntd stats --json\ntd stats goals --daily 10 --weekly 50\ntd stats vacation --on # Enable vacation mode\ntd stats vacation --off # Disable vacation mode\n```\n\n### Settings\n```bash\ntd settings view\ntd settings view --json\ntd settings update --timezone \"America/New_York\"\ntd settings update --time-format 24 --date-format intl\ntd settings themes # List available themes\n```\n\n## Examples\n\n### Daily workflow\n```bash\ntd today --json | jq '.results | length' # Count today's tasks\ntd inbox --limit 5 # Quick inbox check\ntd upcoming # What's coming this week\ntd completed # What I finished today\n```\n\n### Filter by multiple criteria\n```bash\ntd task list --project \"Work\" --label \"urgent\" --priority p1\ntd task list --filter \"today & #Work\"\ntd task list --workspace \"Work\" --due today\n```\n\n### Complete tasks efficiently\n```bash\ntd task complete \"Review PR\"\ntd task complete id:123456789\ntd task uncomplete id:123456789 # Reopen if needed\n```\n";
4
4
  //# sourceMappingURL=content.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,YAAY,CAAA;AACnC,eAAO,MAAM,iBAAiB,8EACiD,CAAA;AAE/E,eAAO,MAAM,aAAa,uhRA+QzB,CAAA"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,YAAY,CAAA;AACnC,eAAO,MAAM,iBAAiB,8EACiD,CAAA;AAE/E,eAAO,MAAM,aAAa,m5RAiRzB,CAAA"}
@@ -43,6 +43,7 @@ Most list commands also support:
43
43
 
44
44
  - \`--no-spinner\` - Disable loading animations
45
45
  - \`--progress-jsonl\` - Machine-readable progress events (JSONL to stderr)
46
+ - \`-v, --verbose\` - Verbose output to stderr (repeat: -v info, -vv detail, -vvv debug, -vvvv trace)
46
47
 
47
48
  ## Task References
48
49
 
@@ -115,7 +116,7 @@ td task uncomplete id:123456 # Reopen completed task
115
116
  # Add tasks
116
117
  td task add "New task" --due "tomorrow" --priority p2
117
118
  td task add "Task" --deadline "2024-03-01" --project "Work"
118
- td task add "Task" --duration 1h --section id:456
119
+ td task add "Task" --duration 1h --section "Planning" --project "Work"
119
120
  td task add "Task" --labels "urgent,review" --parent "Parent task"
120
121
  td task add "Task" --description "Details here" --assignee me
121
122
 
@@ -176,7 +177,8 @@ td comment browse id:123 # Open in browser
176
177
 
177
178
  ### Sections
178
179
  \`\`\`bash
179
- td section list "Work" # List sections in project
180
+ td section list "Work" # List sections in project (or --project "Work")
181
+ td section list --project "Work" # Same, using named flag
180
182
  td section create --project "Work" --name "In Progress"
181
183
  td section update id:123 --name "Done"
182
184
  td section delete id:123 --yes
@@ -197,8 +199,8 @@ td filter browse "Urgent work" # Open in browser
197
199
  \`\`\`bash
198
200
  td workspace list
199
201
  td workspace view "Workspace Name"
200
- td workspace projects "Workspace Name"
201
- td workspace users "Workspace Name" --role ADMIN,MEMBER
202
+ td workspace projects "Workspace Name" # or --workspace "Workspace Name"
203
+ td workspace users "Workspace Name" --role ADMIN,MEMBER # or --workspace "..."
202
204
  \`\`\`
203
205
 
204
206
  ### Activity
@@ -223,8 +225,8 @@ td notification reject id:123 # Reject share invitation
223
225
 
224
226
  ### Reminders
225
227
  \`\`\`bash
226
- td reminder list "task name"
227
- td reminder add "task name" --before 30m
228
+ td reminder list "task name" # or --task "task name"
229
+ td reminder add "task name" --before 30m # or --task "task name" --before 30m
228
230
  td reminder add "task name" --at "2024-01-15 10:00"
229
231
  td reminder update id:123 --before 1h
230
232
  td reminder delete id:123 --yes
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAA;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAC1B,2EAA2E,CAAA;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Q5B,CAAA"}
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAA;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAC1B,2EAA2E,CAAA;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiR5B,CAAA"}
@@ -3,13 +3,16 @@ interface SpinnerOptions {
3
3
  color?: 'green' | 'yellow' | 'blue' | 'red' | 'gray' | 'cyan' | 'magenta';
4
4
  noSpinner?: boolean;
5
5
  }
6
+ export declare function startEarlySpinner(): void;
7
+ export declare function stopEarlySpinner(): void;
8
+ export declare function resetEarlySpinner(): void;
6
9
  declare class LoadingSpinner {
7
10
  private spinnerInstance;
11
+ private adopted;
8
12
  start(options: SpinnerOptions): this;
9
13
  succeed(text?: string): void;
10
14
  fail(text?: string): void;
11
15
  stop(): void;
12
- private shouldDisableSpinner;
13
16
  }
14
17
  /**
15
18
  * High-level wrapper function for running async operations with a loading spinner.
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/lib/spinner.ts"],"names":[],"mappings":"AAGA,UAAU,cAAc;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACzE,SAAS,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,cAAM,cAAc;IAChB,OAAO,CAAC,eAAe,CAA+C;IAEtE,KAAK,CAAC,OAAO,EAAE,cAAc;IAe7B,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM;IAOrB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM;IAOlB,IAAI;IAOJ,OAAO,CAAC,oBAAoB;CAsB/B;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAC/B,OAAO,EAAE,cAAc,EACvB,cAAc,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,CAAC,CAAC,CAWZ;AAED,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/lib/spinner.ts"],"names":[],"mappings":"AAGA,UAAU,cAAc;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACzE,SAAS,CAAC,EAAE,OAAO,CAAA;CACtB;AAsCD,wBAAgB,iBAAiB,IAAI,IAAI,CAkBxC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CASvC;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED,cAAM,cAAc;IAChB,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,OAAO,CAAQ;IAEvB,KAAK,CAAC,OAAO,EAAE,cAAc;IAyB7B,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM;IAcrB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM;IAQlB,IAAI;CAaP;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAC/B,OAAO,EAAE,cAAc,EACvB,cAAc,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,CAAC,CAAC,CAWZ;AAED,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,CAAA"}