@will-17173/telegram-cli 0.3.0 → 0.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 (145) hide show
  1. package/README.md +185 -61
  2. package/README.zh-CN.md +199 -77
  3. package/dist/account/account-authenticator.js +95 -0
  4. package/dist/account/account-authenticator.js.map +1 -0
  5. package/dist/account/account-context.js +7 -0
  6. package/dist/account/account-context.js.map +1 -1
  7. package/dist/account/account-name.js +17 -0
  8. package/dist/account/account-name.js.map +1 -0
  9. package/dist/account/account-presets.js +20 -3
  10. package/dist/account/account-presets.js.map +1 -1
  11. package/dist/account/account-store.js +277 -37
  12. package/dist/account/account-store.js.map +1 -1
  13. package/dist/cli/app.js +12 -1
  14. package/dist/cli/app.js.map +1 -1
  15. package/dist/cli/output.js +21 -6
  16. package/dist/cli/output.js.map +1 -1
  17. package/dist/cli/secure-input.js +408 -0
  18. package/dist/cli/secure-input.js.map +1 -0
  19. package/dist/commands/account-options.js +37 -7
  20. package/dist/commands/account-options.js.map +1 -1
  21. package/dist/commands/account.js +144 -62
  22. package/dist/commands/account.js.map +1 -1
  23. package/dist/commands/archive.js +151 -0
  24. package/dist/commands/archive.js.map +1 -0
  25. package/dist/commands/config.js +119 -12
  26. package/dist/commands/config.js.map +1 -1
  27. package/dist/commands/contact.js +58 -0
  28. package/dist/commands/contact.js.map +1 -0
  29. package/dist/commands/data.js +14 -7
  30. package/dist/commands/data.js.map +1 -1
  31. package/dist/commands/dialog.js +156 -0
  32. package/dist/commands/dialog.js.map +1 -0
  33. package/dist/commands/folder.js +113 -0
  34. package/dist/commands/folder.js.map +1 -0
  35. package/dist/commands/group-write.js +45 -5
  36. package/dist/commands/group-write.js.map +1 -1
  37. package/dist/commands/group.js +23 -1
  38. package/dist/commands/group.js.map +1 -1
  39. package/dist/commands/notification.js +76 -0
  40. package/dist/commands/notification.js.map +1 -0
  41. package/dist/commands/query.js +22 -15
  42. package/dist/commands/query.js.map +1 -1
  43. package/dist/commands/telegram-runner.js +40 -18
  44. package/dist/commands/telegram-runner.js.map +1 -1
  45. package/dist/commands/telegram.js +82 -38
  46. package/dist/commands/telegram.js.map +1 -1
  47. package/dist/commands/time-range.js +39 -0
  48. package/dist/commands/time-range.js.map +1 -0
  49. package/dist/commands/types.js +3 -2
  50. package/dist/commands/types.js.map +1 -1
  51. package/dist/config/credential-store.js +24 -4
  52. package/dist/config/credential-store.js.map +1 -1
  53. package/dist/config/env.js +4 -1
  54. package/dist/config/env.js.map +1 -1
  55. package/dist/group-commands/catalog.js +10 -0
  56. package/dist/group-commands/catalog.js.map +1 -1
  57. package/dist/group-commands/executor.js +13 -4
  58. package/dist/group-commands/executor.js.map +1 -1
  59. package/dist/presenters/group.js +16 -0
  60. package/dist/presenters/group.js.map +1 -1
  61. package/dist/presenters/human.js +113 -0
  62. package/dist/presenters/human.js.map +1 -1
  63. package/dist/presenters/ink/group-command-result.js +2 -0
  64. package/dist/presenters/ink/group-command-result.js.map +1 -1
  65. package/dist/presenters/ink/listen-scroll.js +4 -3
  66. package/dist/presenters/ink/listen-scroll.js.map +1 -1
  67. package/dist/presenters/ink/listen.js +163 -43
  68. package/dist/presenters/ink/listen.js.map +1 -1
  69. package/dist/presenters/ink/mouse-scroll.js +12 -0
  70. package/dist/presenters/ink/mouse-scroll.js.map +1 -1
  71. package/dist/presenters/ink/secure-input.js +68 -0
  72. package/dist/presenters/ink/secure-input.js.map +1 -0
  73. package/dist/presenters/ink/use-group-command.js +78 -17
  74. package/dist/presenters/ink/use-group-command.js.map +1 -1
  75. package/dist/presenters/markdown.js +54 -0
  76. package/dist/presenters/markdown.js.map +1 -0
  77. package/dist/presenters/structured.js +8 -3
  78. package/dist/presenters/structured.js.map +1 -1
  79. package/dist/services/account-session-service.js +241 -0
  80. package/dist/services/account-session-service.js.map +1 -0
  81. package/dist/services/archive-layout.js +61 -0
  82. package/dist/services/archive-layout.js.map +1 -0
  83. package/dist/services/archive-manifest.js +187 -0
  84. package/dist/services/archive-manifest.js.map +1 -0
  85. package/dist/services/archive-markdown.js +383 -0
  86. package/dist/services/archive-markdown.js.map +1 -0
  87. package/dist/services/archive-service.js +718 -0
  88. package/dist/services/archive-service.js.map +1 -0
  89. package/dist/services/archive-types.js +2 -0
  90. package/dist/services/archive-types.js.map +1 -0
  91. package/dist/services/attachment-download.js +7 -2
  92. package/dist/services/attachment-download.js.map +1 -1
  93. package/dist/services/auto-download-coordinator.js +2 -4
  94. package/dist/services/auto-download-coordinator.js.map +1 -1
  95. package/dist/services/contact-service.js +78 -0
  96. package/dist/services/contact-service.js.map +1 -0
  97. package/dist/services/dialog-service.js +140 -0
  98. package/dist/services/dialog-service.js.map +1 -0
  99. package/dist/services/folder-service.js +200 -0
  100. package/dist/services/folder-service.js.map +1 -0
  101. package/dist/services/group-write-service.js +78 -18
  102. package/dist/services/group-write-service.js.map +1 -1
  103. package/dist/services/message-service.js +17 -1
  104. package/dist/services/message-service.js.map +1 -1
  105. package/dist/services/notification-service.js +142 -0
  106. package/dist/services/notification-service.js.map +1 -0
  107. package/dist/services/write-access-policy.js +19 -0
  108. package/dist/services/write-access-policy.js.map +1 -0
  109. package/dist/telegram/archive-types.js +2 -0
  110. package/dist/telegram/archive-types.js.map +1 -0
  111. package/dist/telegram/client-factory.js +51 -11
  112. package/dist/telegram/client-factory.js.map +1 -1
  113. package/dist/telegram/contact-types.js +10 -0
  114. package/dist/telegram/contact-types.js.map +1 -0
  115. package/dist/telegram/dialog-types.js +2 -0
  116. package/dist/telegram/dialog-types.js.map +1 -0
  117. package/dist/telegram/errors.js +14 -0
  118. package/dist/telegram/errors.js.map +1 -0
  119. package/dist/telegram/fake-group-management.js +5 -0
  120. package/dist/telegram/fake-group-management.js.map +1 -1
  121. package/dist/telegram/folder-types.js +13 -0
  122. package/dist/telegram/folder-types.js.map +1 -0
  123. package/dist/telegram/group-write-types.js +28 -1
  124. package/dist/telegram/group-write-types.js.map +1 -1
  125. package/dist/telegram/mtcute-archive.js +190 -0
  126. package/dist/telegram/mtcute-archive.js.map +1 -0
  127. package/dist/telegram/mtcute-client.js +72 -11
  128. package/dist/telegram/mtcute-client.js.map +1 -1
  129. package/dist/telegram/mtcute-contacts.js +90 -0
  130. package/dist/telegram/mtcute-contacts.js.map +1 -0
  131. package/dist/telegram/mtcute-dialogs.js +186 -0
  132. package/dist/telegram/mtcute-dialogs.js.map +1 -0
  133. package/dist/telegram/mtcute-folders.js +318 -0
  134. package/dist/telegram/mtcute-folders.js.map +1 -0
  135. package/dist/telegram/mtcute-group-members.js +43 -3
  136. package/dist/telegram/mtcute-group-members.js.map +1 -1
  137. package/dist/telegram/mtcute-message-normalizer.js +63 -0
  138. package/dist/telegram/mtcute-message-normalizer.js.map +1 -0
  139. package/dist/telegram/mtcute-notifications.js +101 -0
  140. package/dist/telegram/mtcute-notifications.js.map +1 -0
  141. package/dist/telegram/notification-types.js +11 -0
  142. package/dist/telegram/notification-types.js.map +1 -0
  143. package/dist/telegram/types.js +6 -1
  144. package/dist/telegram/types.js.map +1 -1
  145. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"account-presets.js","sourceRoot":"","sources":["../../src/account/account-presets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAgBhC,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,OAAoB;IACpE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;QACtD,MAAM,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;KAC7C,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,WAAmB;IACrE,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,WAAmB;IAChE,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC,CAAA;AAC9D,CAAC"}
1
+ {"version":3,"file":"account-presets.js","sourceRoot":"","sources":["../../src/account/account-presets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAGpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAiBzD,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,OAAoB;IACpE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAA;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,OAAO,CAAC,UAAU;QAC7B,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;QACtD,MAAM,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;KAC7C,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,WAAmB;IACrE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,WAAmB;IAChE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,CAAA;AAC/D,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,WAAmB;IACvD,qBAAqB,CAAC,WAAW,CAAC,CAAA;IAClC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAC9C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;WACrB,SAAS,KAAK,IAAI;WAClB,SAAS,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC;WAChC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IAC9D,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -1,9 +1,12 @@
1
- import { chmodSync, mkdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync, } from 'node:fs';
2
- import { dirname, join } from 'node:path';
1
+ import { chmodSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, utimesSync, writeFileSync, } from 'node:fs';
2
+ import { basename, dirname, join } from 'node:path';
3
3
  import { randomUUID } from 'node:crypto';
4
+ import { isSafeAccountName } from './account-name.js';
4
5
  const DEFAULT_LOCK_TIMEOUT_MS = 200;
5
6
  const DEFAULT_LOCK_RETRY_MS = 10;
6
7
  const DEFAULT_LOCK_STALE_MS = 1_000;
8
+ const MAX_TIMER_DELAY_MS = 2_147_483_647;
9
+ const LOCK_OWNER_FILE = 'owner';
7
10
  export class AccountStoreError extends Error {
8
11
  code = 'account_store_error';
9
12
  constructor(message) {
@@ -12,16 +15,39 @@ export class AccountStoreError extends Error {
12
15
  }
13
16
  }
14
17
  const EMPTY_REGISTRY = {
15
- version: 1,
18
+ version: 2,
16
19
  current_account: null,
17
20
  accounts: [],
18
21
  };
19
22
  export class AccountStore {
20
23
  path;
21
24
  lockPath;
22
- constructor(path) {
25
+ lockOwnerPath;
26
+ chmodPath;
27
+ lockHeartbeatMs;
28
+ lockRetryMs;
29
+ lockStaleMs;
30
+ lockTimeoutMs;
31
+ removeLockPath;
32
+ renameLockPath;
33
+ writeLockOwner;
34
+ constructor(path, options = {}) {
23
35
  this.path = path;
24
36
  this.lockPath = `${this.path}.lock`;
37
+ this.lockOwnerPath = join(this.lockPath, LOCK_OWNER_FILE);
38
+ this.chmodPath = options.chmodPath ?? chmodSync;
39
+ this.lockStaleMs = options.lockStaleMs ?? DEFAULT_LOCK_STALE_MS;
40
+ this.lockHeartbeatMs = options.lockHeartbeatMs ?? Math.max(10, Math.floor(this.lockStaleMs / 3));
41
+ this.lockRetryMs = options.lockRetryMs ?? DEFAULT_LOCK_RETRY_MS;
42
+ this.lockTimeoutMs = options.lockTimeoutMs ?? DEFAULT_LOCK_TIMEOUT_MS;
43
+ this.removeLockPath = options.lockOperations?.removePath ?? ((path) => rmSync(path, { recursive: true, force: true }));
44
+ this.renameLockPath = options.lockOperations?.renamePath ?? renameSync;
45
+ this.writeLockOwner = options.lockOperations?.writeOwner ?? ((path, owner) => {
46
+ writeFileSync(path, owner, { encoding: 'utf8', flag: 'wx', mode: 0o600 });
47
+ });
48
+ if (!validLockTimings(this.lockHeartbeatMs, this.lockRetryMs, this.lockStaleMs, this.lockTimeoutMs)) {
49
+ throw new AccountStoreError('account_store_error: invalid lock timing options');
50
+ }
25
51
  }
26
52
  read() {
27
53
  let raw;
@@ -41,21 +67,36 @@ export class AccountStore {
41
67
  catch {
42
68
  throw new AccountStoreError('account_store_error: malformed registry file');
43
69
  }
44
- if (!isAccountRegistry(parsed)) {
45
- throw new AccountStoreError('account_store_error: malformed registry file');
70
+ if (isLegacyAccountRegistry(parsed)) {
71
+ const normalized = normalizeLegacyRegistry(parsed);
72
+ try {
73
+ this.write(normalized);
74
+ }
75
+ catch (error) {
76
+ throw new AccountStoreError(`account_store_error: unable to migrate registry: ${errorMessage(error)}`);
77
+ }
78
+ return normalized;
79
+ }
80
+ if (isAccountRegistry(parsed)) {
81
+ return parsed;
46
82
  }
47
- if (parsed.version !== 1) {
48
- throw new AccountStoreError(`account_store_error: unsupported registry version: ${String(parsed.version)}`);
83
+ if (isUnsupportedVersionObject(parsed)) {
84
+ const version = parsed.version;
85
+ if (version === 1 || version === 2) {
86
+ throw new AccountStoreError('account_store_error: malformed registry file');
87
+ }
88
+ throw new AccountStoreError(`account_store_error: unsupported registry version: ${String(version)}`);
49
89
  }
50
- return parsed;
90
+ throw new AccountStoreError('account_store_error: malformed registry file');
51
91
  }
52
92
  write(registry) {
93
+ const version = registry.version;
94
+ if (version !== 2) {
95
+ throw new AccountStoreError(`account_store_error: unsupported registry version: ${String(version)}`);
96
+ }
53
97
  if (!isAccountRegistry(registry)) {
54
98
  throw new AccountStoreError('account_store_error: malformed registry file');
55
99
  }
56
- if (registry.version !== 1) {
57
- throw new AccountStoreError(`account_store_error: unsupported registry version: ${String(registry.version)}`);
58
- }
59
100
  const parent = dirname(this.path);
60
101
  const temporaryPath = join(parent, `.${randomUUID()}.tmp`);
61
102
  const serialized = `${JSON.stringify(registry, null, 2)}\n`;
@@ -63,9 +104,8 @@ export class AccountStore {
63
104
  let written = false;
64
105
  try {
65
106
  writeFileSync(temporaryPath, serialized, { encoding: 'utf8', flag: 'wx', mode: 0o600 });
66
- chmodSync(temporaryPath, 0o600);
107
+ this.chmodPath(temporaryPath, 0o600);
67
108
  renameSync(temporaryPath, this.path);
68
- chmodSync(this.path, 0o600);
69
109
  written = true;
70
110
  }
71
111
  finally {
@@ -90,12 +130,14 @@ export class AccountStore {
90
130
  return this.read().accounts.some((account) => account.user_id === userId);
91
131
  }
92
132
  async withLock(fn) {
93
- await this.acquireLock();
133
+ const owner = await this.acquireLock();
134
+ const heartbeat = this.startHeartbeat(owner);
94
135
  try {
95
136
  return await fn();
96
137
  }
97
138
  finally {
98
- this.releaseLock();
139
+ clearInterval(heartbeat);
140
+ this.releaseLock(owner);
99
141
  }
100
142
  }
101
143
  async setCurrent(name) {
@@ -147,34 +189,95 @@ export class AccountStore {
147
189
  async acquireLock() {
148
190
  const start = Date.now();
149
191
  const parent = dirname(this.path);
192
+ const owner = randomUUID();
150
193
  mkdirSync(parent, { recursive: true });
151
194
  while (true) {
152
195
  try {
153
196
  mkdirSync(this.lockPath);
154
- return;
155
197
  }
156
198
  catch (error) {
157
199
  if (!isNodeError(error) || error.code !== 'EEXIST') {
158
200
  throw new AccountStoreError(`account_store_error: unable to create lock: ${errorMessage(error)}`);
159
201
  }
160
- if (this.isLockExpired()) {
161
- rmSync(this.lockPath, { recursive: true, force: true });
162
- continue;
163
- }
164
- if (Date.now() - start > DEFAULT_LOCK_TIMEOUT_MS) {
202
+ this.isolateAndReapExpiredLock();
203
+ if (Date.now() - start > this.lockTimeoutMs) {
165
204
  throw new AccountStoreError('account_store_error: unable to acquire lock in time');
166
205
  }
167
- await sleep(DEFAULT_LOCK_RETRY_MS);
206
+ await sleep(this.lockRetryMs);
207
+ continue;
208
+ }
209
+ try {
210
+ this.writeLockOwner(this.lockOwnerPath, owner);
211
+ }
212
+ catch (error) {
213
+ throw new AccountStoreError(`account_store_error: unable to record lock ownership: ${errorMessage(error)}`);
168
214
  }
215
+ const blockingIsolatedLock = this.findBlockingIsolatedLock();
216
+ if (blockingIsolatedLock) {
217
+ this.releaseLock(owner);
218
+ this.restoreIsolatedLock(blockingIsolatedLock);
219
+ await sleep(this.lockRetryMs);
220
+ continue;
221
+ }
222
+ return owner;
169
223
  }
170
224
  }
171
- releaseLock() {
172
- rmSync(this.lockPath, { recursive: true, force: true });
225
+ startHeartbeat(owner) {
226
+ const heartbeat = setInterval(() => {
227
+ if (this.readLockOwner() !== owner)
228
+ return;
229
+ try {
230
+ const now = new Date();
231
+ utimesSync(this.lockOwnerPath, now, now);
232
+ }
233
+ catch {
234
+ // The lease may have been externally removed or replaced.
235
+ }
236
+ }, this.lockHeartbeatMs);
237
+ heartbeat.unref();
238
+ return heartbeat;
173
239
  }
174
- isLockExpired() {
240
+ releaseLock(owner) {
241
+ while (true) {
242
+ const isolatedPath = this.isolateCanonicalLock('release');
243
+ if (!isolatedPath) {
244
+ const reapingPath = this.findIsolatedLockOwnedBy(owner);
245
+ if (!reapingPath)
246
+ return;
247
+ if (!this.finalizeIsolatedLock(reapingPath))
248
+ continue;
249
+ return;
250
+ }
251
+ if (this.readLockOwner(isolatedPath) !== owner) {
252
+ this.restoreIsolatedLock(isolatedPath);
253
+ const reapingPath = this.findIsolatedLockOwnedBy(owner);
254
+ if (reapingPath && !this.finalizeIsolatedLock(reapingPath))
255
+ continue;
256
+ return;
257
+ }
258
+ if (this.finalizeIsolatedLock(isolatedPath))
259
+ return;
260
+ }
261
+ }
262
+ finalizeIsolatedLock(isolatedPath) {
263
+ const deletingPath = `${this.lockPath}.deleting-${randomUUID()}`;
175
264
  try {
176
- const lockStats = statSync(this.lockPath);
177
- return Date.now() - lockStats.mtimeMs > DEFAULT_LOCK_STALE_MS;
265
+ this.renameLockPath(isolatedPath, deletingPath);
266
+ }
267
+ catch (error) {
268
+ if (!exists(isolatedPath))
269
+ return false;
270
+ throw new AccountStoreError(`account_store_error: unable to finalize lock release: ${errorMessage(error)}`);
271
+ }
272
+ this.removeLockPath(deletingPath);
273
+ return true;
274
+ }
275
+ isLockExpired(path) {
276
+ try {
277
+ const ownerPath = join(path, LOCK_OWNER_FILE);
278
+ const leasePath = exists(ownerPath) ? ownerPath : path;
279
+ const lockStats = statSync(leasePath);
280
+ return Date.now() - lockStats.mtimeMs > this.lockStaleMs;
178
281
  }
179
282
  catch (error) {
180
283
  if (isNodeError(error) && error.code === 'ENOENT')
@@ -182,14 +285,127 @@ export class AccountStore {
182
285
  throw new AccountStoreError(`account_store_error: failed to check lock: ${errorMessage(error)}`);
183
286
  }
184
287
  }
288
+ isolateAndReapExpiredLock() {
289
+ const observedOwner = this.readLockOwner();
290
+ if (!this.isLockExpired(this.lockPath))
291
+ return;
292
+ const isolatedPath = this.isolateCanonicalLock('reap');
293
+ if (!isolatedPath)
294
+ return;
295
+ if (this.readLockOwner(isolatedPath) === observedOwner && this.isLockExpired(isolatedPath)) {
296
+ this.removeLockPath(isolatedPath);
297
+ return;
298
+ }
299
+ this.restoreIsolatedLock(isolatedPath);
300
+ }
301
+ isolateCanonicalLock(purpose) {
302
+ const isolatedPath = `${this.lockPath}.isolated-${purpose}-${randomUUID()}`;
303
+ try {
304
+ this.renameLockPath(this.lockPath, isolatedPath);
305
+ return isolatedPath;
306
+ }
307
+ catch (error) {
308
+ if (isNodeError(error) && error.code === 'ENOENT')
309
+ return undefined;
310
+ throw new AccountStoreError(`account_store_error: unable to isolate lock: ${errorMessage(error)}`);
311
+ }
312
+ }
313
+ restoreIsolatedLock(isolatedPath) {
314
+ try {
315
+ this.renameLockPath(isolatedPath, this.lockPath);
316
+ }
317
+ catch (error) {
318
+ if (exists(this.lockPath) || !exists(isolatedPath))
319
+ return;
320
+ throw new AccountStoreError(`account_store_error: unable to restore isolated lock: ${errorMessage(error)}`);
321
+ }
322
+ }
323
+ findBlockingIsolatedLock() {
324
+ const parent = dirname(this.lockPath);
325
+ const prefix = `${basename(this.lockPath)}.isolated-`;
326
+ for (const name of readdirSync(parent)) {
327
+ if (!name.startsWith(prefix))
328
+ continue;
329
+ const isolatedPath = join(parent, name);
330
+ if (this.isLockExpired(isolatedPath)) {
331
+ this.removeLockPath(isolatedPath);
332
+ continue;
333
+ }
334
+ return isolatedPath;
335
+ }
336
+ return undefined;
337
+ }
338
+ findIsolatedLockOwnedBy(owner) {
339
+ const parent = dirname(this.lockPath);
340
+ const prefix = `${basename(this.lockPath)}.isolated-reap-`;
341
+ for (const name of readdirSync(parent)) {
342
+ if (!name.startsWith(prefix))
343
+ continue;
344
+ const isolatedPath = join(parent, name);
345
+ if (this.readLockOwner(isolatedPath) === owner)
346
+ return isolatedPath;
347
+ }
348
+ return undefined;
349
+ }
350
+ readLockOwner(lockPath = this.lockPath) {
351
+ try {
352
+ return readFileSync(join(lockPath, LOCK_OWNER_FILE), 'utf8');
353
+ }
354
+ catch {
355
+ return undefined;
356
+ }
357
+ }
358
+ }
359
+ function validLockTimings(heartbeatMs, retryMs, staleMs, timeoutMs) {
360
+ return (Number.isSafeInteger(heartbeatMs)
361
+ && Number.isSafeInteger(retryMs)
362
+ && Number.isSafeInteger(staleMs)
363
+ && Number.isSafeInteger(timeoutMs)
364
+ && heartbeatMs > 0
365
+ && retryMs > 0
366
+ && staleMs > 0
367
+ && timeoutMs > 0
368
+ && heartbeatMs <= MAX_TIMER_DELAY_MS
369
+ && retryMs <= MAX_TIMER_DELAY_MS
370
+ && staleMs <= MAX_TIMER_DELAY_MS
371
+ && timeoutMs <= MAX_TIMER_DELAY_MS
372
+ && heartbeatMs * 2 < staleMs);
373
+ }
374
+ function exists(path) {
375
+ try {
376
+ statSync(path);
377
+ return true;
378
+ }
379
+ catch (error) {
380
+ if (isNodeError(error) && error.code === 'ENOENT')
381
+ return false;
382
+ throw error;
383
+ }
185
384
  }
186
385
  function isAccountMeta(value) {
187
386
  if (value === null || typeof value !== 'object' || Array.isArray(value))
188
387
  return false;
189
388
  const candidate = value;
190
389
  const userId = candidate.user_id;
191
- return (typeof candidate.name === 'string'
192
- && candidate.name.trim().length > 0
390
+ const authState = candidate.auth_state;
391
+ return (isSafeAccountName(candidate.name)
392
+ && typeof userId === 'number'
393
+ && Number.isSafeInteger(userId)
394
+ && userId > 0
395
+ && typeof candidate.username === 'string'
396
+ && candidate.username.trim().length > 0
397
+ && typeof candidate.phone === 'string'
398
+ && candidate.phone.trim().length > 0
399
+ && typeof candidate.display_name === 'string'
400
+ && candidate.display_name.trim().length > 0
401
+ && (authState === 'authenticated' || authState === 'logged_out'));
402
+ }
403
+ function isAccountMetaV1(value) {
404
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
405
+ return false;
406
+ const candidate = value;
407
+ const userId = candidate.user_id;
408
+ return (isSafeAccountName(candidate.name)
193
409
  && typeof userId === 'number'
194
410
  && Number.isSafeInteger(userId)
195
411
  && userId > 0
@@ -204,18 +420,42 @@ function isAccountRegistry(value) {
204
420
  if (value === null || typeof value !== 'object' || Array.isArray(value))
205
421
  return false;
206
422
  const candidate = value;
207
- return (candidate.version === 1
208
- && (candidate.current_account === null || typeof candidate.current_account === 'string')
423
+ return (candidate.version === 2
424
+ && (candidate.current_account === null || isSafeAccountName(candidate.current_account))
209
425
  && Array.isArray(candidate.accounts)
210
426
  && candidate.accounts.every((account) => isAccountMeta(account)));
211
427
  }
212
- function isNodeError(error) {
213
- return error instanceof Error && 'code' in error;
428
+ function isUnsupportedVersionObject(value) {
429
+ return (value !== null
430
+ && typeof value === 'object'
431
+ && !Array.isArray(value)
432
+ && 'version' in value
433
+ && typeof value.version === 'number');
434
+ }
435
+ function isLegacyAccountRegistry(value) {
436
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
437
+ return false;
438
+ const candidate = value;
439
+ return (candidate.version === 1
440
+ && (candidate.current_account === null || isSafeAccountName(candidate.current_account))
441
+ && Array.isArray(candidate.accounts)
442
+ && candidate.accounts.every((account) => isAccountMetaV1(account)));
443
+ }
444
+ function normalizeLegacyRegistry(value) {
445
+ return {
446
+ version: 2,
447
+ current_account: value.current_account,
448
+ accounts: value.accounts.map((account) => ({
449
+ ...account,
450
+ auth_state: 'authenticated',
451
+ })),
452
+ };
214
453
  }
215
454
  function errorMessage(error) {
216
- if (error instanceof Error)
217
- return error.message;
218
- return String(error);
455
+ return error instanceof Error ? error.message : String(error);
456
+ }
457
+ function isNodeError(error) {
458
+ return error instanceof Error && 'code' in error;
219
459
  }
220
460
  function sleep(ms) {
221
461
  return new Promise((resolve) => {
@@ -1 +1 @@
1
- {"version":3,"file":"account-store.js","sourceRoot":"","sources":["../../src/account/account-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account-store.js","sourceRoot":"","sources":["../../src/account/account-store.ts"],"names":[],"mappings":"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"}
package/dist/cli/app.js CHANGED
@@ -1,8 +1,13 @@
1
1
  import { Command } from 'commander';
2
2
  import { registerAccountCommands } from '../commands/account.js';
3
+ import { registerArchiveCommand } from '../commands/archive.js';
3
4
  import { registerConfigCommands } from '../commands/config.js';
4
5
  import { registerDataCommands } from '../commands/data.js';
6
+ import { registerDialogCommands } from '../commands/dialog.js';
7
+ import { registerContactCommands } from '../commands/contact.js';
5
8
  import { registerGroupCommands } from '../commands/group.js';
9
+ import { registerFolderCommands } from '../commands/folder.js';
10
+ import { registerNotificationCommands } from '../commands/notification.js';
6
11
  import { registerQueryCommands } from '../commands/query.js';
7
12
  import { registerTelegramCommands } from '../commands/telegram.js';
8
13
  export function createApp() {
@@ -11,11 +16,17 @@ export function createApp() {
11
16
  .description('Telegram CLI for syncing chats, searching messages, and local analysis.')
12
17
  .option('-v, --verbose', 'Enable debug logging')
13
18
  .option('--account <account>', 'Select an account for account-dependent commands')
14
- .version('0.3.0');
19
+ .option('--markdown', 'Produce Markdown output for human-readable results')
20
+ .version('0.4.0');
15
21
  registerQueryCommands(app);
22
+ registerArchiveCommand(app);
16
23
  registerDataCommands(app);
17
24
  registerTelegramCommands(app);
25
+ registerContactCommands(app);
26
+ registerDialogCommands(app);
18
27
  registerGroupCommands(app);
28
+ registerFolderCommands(app);
29
+ registerNotificationCommands(app);
19
30
  registerAccountCommands(app);
20
31
  registerConfigCommands(app);
21
32
  return app;
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAElE,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE;SACtB,IAAI,CAAC,IAAI,CAAC;SACV,WAAW,CAAC,yEAAyE,CAAC;SACtF,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;SAC/C,MAAM,CAAC,qBAAqB,EAAE,kDAAkD,CAAC;SACjF,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnB,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAC1B,oBAAoB,CAAC,GAAG,CAAC,CAAA;IACzB,wBAAwB,CAAC,GAAG,CAAC,CAAA;IAC7B,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAC1B,uBAAuB,CAAC,GAAG,CAAC,CAAA;IAC5B,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAE3B,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAA;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAElE,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE;SACtB,IAAI,CAAC,IAAI,CAAC;SACV,WAAW,CAAC,yEAAyE,CAAC;SACtF,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;SAC/C,MAAM,CAAC,qBAAqB,EAAE,kDAAkD,CAAC;SACjF,MAAM,CAAC,YAAY,EAAE,oDAAoD,CAAC;SAC1E,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnB,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAC1B,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC3B,oBAAoB,CAAC,GAAG,CAAC,CAAA;IACzB,wBAAwB,CAAC,GAAG,CAAC,CAAA;IAC7B,uBAAuB,CAAC,GAAG,CAAC,CAAA;IAC5B,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC3B,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAC1B,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC3B,4BAA4B,CAAC,GAAG,CAAC,CAAA;IACjC,uBAAuB,CAAC,GAAG,CAAC,CAAA;IAC5B,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAE3B,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1,8 +1,11 @@
1
1
  import { dumpStructured, errorPayload, resolveOutputFormat, successPayload, } from '../presenters/structured.js';
2
2
  import { renderInkResult } from '../presenters/ink/render.js';
3
+ import { outputFormatConflict } from '../commands/types.js';
4
+ import { renderHumanMarkdown, renderMarkdownError } from '../presenters/markdown.js';
3
5
  export async function renderResult(result, options) {
4
- if (options.json && options.yaml) {
5
- const payload = errorPayload('invalid_output_format', 'Use only one of --json or --yaml.');
6
+ const conflict = outputFormatConflict(options);
7
+ if (conflict) {
8
+ const payload = errorPayload(conflict.error.code, conflict.error.message, conflict.error.details);
6
9
  writeLine(process.stdout, dumpStructured(payload, 'yaml'));
7
10
  process.exitCode = 1;
8
11
  return;
@@ -17,6 +20,19 @@ export async function renderResult(result, options) {
17
20
  process.exitCode = 1;
18
21
  return;
19
22
  }
23
+ if (format === 'markdown') {
24
+ if (!result.ok) {
25
+ process.stderr.write(`${renderMarkdownError(result.error.code, result.error.message)}\n`);
26
+ process.exitCode = 1;
27
+ return;
28
+ }
29
+ if (result.human != null) {
30
+ process.stdout.write(`${renderHumanMarkdown(result.human)}\n`);
31
+ return;
32
+ }
33
+ process.stdout.write(`${JSON.stringify(result.data, null, 2)}\n`);
34
+ return;
35
+ }
20
36
  if (format === 'rich' && result.ok && result.human && result.human.kind !== 'text') {
21
37
  await renderInkResult(result);
22
38
  return;
@@ -26,12 +42,11 @@ export async function renderResult(result, options) {
26
42
  process.exitCode = 1;
27
43
  return;
28
44
  }
29
- if (result.human?.kind === 'text') {
45
+ if (result.ok && result.human?.kind === 'text') {
30
46
  process.stdout.write(`${result.human.text}\n`);
47
+ return;
31
48
  }
32
- else {
33
- process.stdout.write(`${JSON.stringify(result.data, null, 2)}\n`);
34
- }
49
+ process.stdout.write(`${JSON.stringify(result.data, null, 2)}\n`);
35
50
  }
36
51
  function writeLine(stream, text) {
37
52
  stream.write(text.endsWith('\n') ? text : `${text}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,cAAc,GAEf,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAqB,EAAE,OAA6B;IACrF,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,YAAY,CAAC,uBAAuB,EAAE,mCAAmC,CAAC,CAAA;QAC1F,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;QAC1D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACR,CAAC;IAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC,CAAA;IACzG,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE;YACvB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;YAC7B,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC/E,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;QAC1D,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpC,OAAM;IACR,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACnF,MAAM,eAAe,CAAC,MAAM,CAAC,CAAA;QAC7B,OAAM;IACR,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAA;QACjD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACR,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAA;IAChD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;IACnE,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,MAA0B,EAAE,IAAY;IACzD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;AACxD,CAAC"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"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"}