@aiwayds/dsh-tui-pi 2.19.0 → 2.20.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 (105) hide show
  1. package/README.md +12 -48
  2. package/README.zh-CN.md +11 -47
  3. package/lib/agents.js +67 -52
  4. package/lib/agents.js.map +1 -1
  5. package/lib/ask-user.js +30 -30
  6. package/lib/ask-user.js.map +1 -1
  7. package/lib/attachments.js +8 -3
  8. package/lib/attachments.js.map +1 -1
  9. package/lib/btw.d.ts +4 -2
  10. package/lib/btw.js +22 -16
  11. package/lib/btw.js.map +1 -1
  12. package/lib/custom-provider.js +34 -28
  13. package/lib/custom-provider.js.map +1 -1
  14. package/lib/footer.d.ts +9 -8
  15. package/lib/footer.js +36 -18
  16. package/lib/footer.js.map +1 -1
  17. package/lib/hard-exit.d.ts +36 -0
  18. package/lib/hard-exit.js +64 -0
  19. package/lib/hard-exit.js.map +1 -0
  20. package/lib/history-fork.d.ts +2 -2
  21. package/lib/history-fork.js +12 -9
  22. package/lib/history-fork.js.map +1 -1
  23. package/lib/history-turns.d.ts +4 -2
  24. package/lib/history-turns.js +7 -3
  25. package/lib/history-turns.js.map +1 -1
  26. package/lib/history.js +57 -45
  27. package/lib/history.js.map +1 -1
  28. package/lib/hotkeys.js +44 -33
  29. package/lib/hotkeys.js.map +1 -1
  30. package/lib/i18n/index.d.ts +54 -0
  31. package/lib/i18n/index.js +98 -0
  32. package/lib/i18n/index.js.map +1 -0
  33. package/lib/i18n/registry.d.ts +65 -0
  34. package/lib/i18n/registry.js +129 -0
  35. package/lib/i18n/registry.js.map +1 -0
  36. package/lib/index.js +216 -108
  37. package/lib/index.js.map +1 -1
  38. package/lib/language-ask.d.ts +98 -0
  39. package/lib/language-ask.js +118 -0
  40. package/lib/language-ask.js.map +1 -0
  41. package/lib/live-widgets.js +9 -8
  42. package/lib/live-widgets.js.map +1 -1
  43. package/lib/login.js +5 -4
  44. package/lib/login.js.map +1 -1
  45. package/lib/messages.d.ts +0 -4
  46. package/lib/messages.js +14 -15
  47. package/lib/messages.js.map +1 -1
  48. package/lib/model-profiles.js +32 -20
  49. package/lib/model-profiles.js.map +1 -1
  50. package/lib/panels.js +18 -17
  51. package/lib/panels.js.map +1 -1
  52. package/lib/preflight-projcache.js +9 -3
  53. package/lib/preflight-projcache.js.map +1 -1
  54. package/lib/preset-dialog.d.ts +3 -3
  55. package/lib/preset-dialog.js +20 -17
  56. package/lib/preset-dialog.js.map +1 -1
  57. package/lib/provider-catalog.d.ts +23 -7
  58. package/lib/provider-catalog.js +90 -68
  59. package/lib/provider-catalog.js.map +1 -1
  60. package/lib/queue-panel.d.ts +2 -2
  61. package/lib/queue-panel.js +13 -9
  62. package/lib/queue-panel.js.map +1 -1
  63. package/lib/repair-dialog.d.ts +4 -4
  64. package/lib/repair-dialog.js +23 -16
  65. package/lib/repair-dialog.js.map +1 -1
  66. package/lib/route-dialog.d.ts +3 -3
  67. package/lib/route-dialog.js +20 -14
  68. package/lib/route-dialog.js.map +1 -1
  69. package/lib/selectors.d.ts +15 -1
  70. package/lib/selectors.js +57 -23
  71. package/lib/selectors.js.map +1 -1
  72. package/lib/sessions.d.ts +47 -14
  73. package/lib/sessions.js +162 -53
  74. package/lib/sessions.js.map +1 -1
  75. package/lib/settings.d.ts +68 -9
  76. package/lib/settings.js +327 -78
  77. package/lib/settings.js.map +1 -1
  78. package/lib/skills-manager.js +27 -21
  79. package/lib/skills-manager.js.map +1 -1
  80. package/lib/skills.js +5 -4
  81. package/lib/skills.js.map +1 -1
  82. package/lib/startup-info.js +9 -3
  83. package/lib/startup-info.js.map +1 -1
  84. package/lib/steer-flow.d.ts +14 -4
  85. package/lib/steer-flow.js +24 -9
  86. package/lib/steer-flow.js.map +1 -1
  87. package/lib/stop-dialog.d.ts +2 -2
  88. package/lib/stop-dialog.js +16 -12
  89. package/lib/stop-dialog.js.map +1 -1
  90. package/lib/subagent-viewer.d.ts +3 -6
  91. package/lib/subagent-viewer.js +38 -36
  92. package/lib/subagent-viewer.js.map +1 -1
  93. package/lib/theme-preview.js +12 -11
  94. package/lib/theme-preview.js.map +1 -1
  95. package/lib/theme-settings.d.ts +23 -2
  96. package/lib/theme-settings.js +68 -61
  97. package/lib/theme-settings.js.map +1 -1
  98. package/lib/tui.js +2 -1
  99. package/lib/tui.js.map +1 -1
  100. package/locales/en.json +646 -0
  101. package/locales/ja.json +646 -0
  102. package/locales/ko.json +646 -0
  103. package/locales/zh-CN.json +646 -0
  104. package/package.json +2 -1
  105. package/skills/dsh-tui-pi-config/SKILL.md +9 -2
package/lib/btw.js CHANGED
@@ -23,10 +23,16 @@
23
23
  * wiring in index.ts.
24
24
  */
25
25
  import { createUserMessage } from '@deepseek-ai/dsh-llm';
26
- // ------------------------------------------------------------ UI copy (English-only, AGENTS.md #4) --
27
- export const BTW_IDLE_NOTICE = '/btw answers alongside a running turn — the main line is idle, so just ask directly.';
28
- export const BTW_USAGE = 'Usage: /btw <question> — ask a side question while the main task runs. ' +
29
- 'The answer streams into a temporary overlay and is not kept in the session.';
26
+ import { t } from "./i18n/index.js";
27
+ // ------------------------------------------------------------ UI copy --
28
+ /** Idle-state guidance for a bare `/btw`: the main line is idle, ask directly. */
29
+ export function btwIdleNotice() {
30
+ return t('btw.notice.idle');
31
+ }
32
+ /** Usage line for `/btw <question>`. */
33
+ export function btwUsage() {
34
+ return t('btw.notice.usage');
35
+ }
30
36
  /**
31
37
  * Parse the text after `/btw`. Everything is the question except one
32
38
  * optional `--model provider/model` override (extractable from anywhere in
@@ -45,9 +51,9 @@ export function parseBtwInput(rawInput) {
45
51
  question = `${raw.slice(0, match.index)} ${raw.slice(match.index + match[0].length)}`.trim();
46
52
  }
47
53
  if (question === '')
48
- return { kind: 'error', error: 'No question after /btw --model.' };
54
+ return { kind: 'error', error: t('btw.error.noQuestion') };
49
55
  if (modelOverride !== undefined && !modelOverride.includes('/')) {
50
- return { kind: 'error', error: `Invalid --model "${modelOverride}" — expected provider/model.` };
56
+ return { kind: 'error', error: t('btw.error.invalidModel', { model: modelOverride }) };
51
57
  }
52
58
  // The override key is omitted (not undefined-valued) when absent.
53
59
  return modelOverride === undefined
@@ -171,7 +177,7 @@ export class BtwQueue {
171
177
  return { kind: 'started' };
172
178
  }
173
179
  if (this.waiting.length >= BTW_QUEUE_CAP) {
174
- return { kind: 'rejected', reason: `the btw queue is full (${BTW_QUEUE_CAP})` };
180
+ return { kind: 'rejected', reason: t('btw.queueFull', { cap: BTW_QUEUE_CAP }) };
175
181
  }
176
182
  this.waiting.push(job);
177
183
  return { kind: 'queued', position: this.waiting.length };
@@ -212,17 +218,17 @@ export async function consumeBtwStream(chunks, onDelta, signal) {
212
218
  case 'aborted':
213
219
  return { kind: 'aborted' };
214
220
  case 'error':
215
- return { kind: 'error', message: chunk.reason.failure?.message ?? 'Unknown model stream error.' };
221
+ return { kind: 'error', message: chunk.reason.failure?.message ?? t('btw.error.unknownStream') };
216
222
  case 'max-tokens':
217
- return { kind: 'error', message: 'The answer hit the output token cap.' };
223
+ return { kind: 'error', message: t('btw.error.maxTokens') };
218
224
  case 'tool-calls':
219
- return { kind: 'error', message: 'The side model unexpectedly requested tools.' };
225
+ return { kind: 'error', message: t('btw.error.toolCalls') };
220
226
  default:
221
- return { kind: 'error', message: `Unsupported stream finish: ${String(chunk.reason?.kind)}` };
227
+ return { kind: 'error', message: t('btw.error.unsupportedFinish', { kind: String(chunk.reason?.kind) }) };
222
228
  }
223
229
  }
224
230
  }
225
- return { kind: 'error', message: 'The model stream ended without a finish chunk.' };
231
+ return { kind: 'error', message: t('btw.error.noFinish') };
226
232
  }
227
233
  catch (error) {
228
234
  if (signal?.aborted)
@@ -318,8 +324,8 @@ export class BtwController {
318
324
  : resolveOverride(job.modelOverride);
319
325
  if (selection === undefined) {
320
326
  this.deps.notify(job.modelOverride === undefined
321
- ? 'No model selected — btw cannot run.'
322
- : `btw model "${job.modelOverride}" is not available.`, 'error');
327
+ ? t('btw.error.noModel')
328
+ : t('btw.error.modelUnavailable', { model: job.modelOverride }), 'error');
323
329
  this.drain();
324
330
  return;
325
331
  }
@@ -335,7 +341,7 @@ export class BtwController {
335
341
  if (promoted && this.deps.hasCapturingSurface?.() === true) {
336
342
  // A drained job popping up under an active dialog/overlay would steal
337
343
  // the keyboard mid-flow — run into the slot instead; /btw reopens it.
338
- this.deps.notify('btw running in the background — /btw to view the answer.', 'info');
344
+ this.deps.notify(t('btw.background'), 'info');
339
345
  }
340
346
  else {
341
347
  this.deps.onRunStarted(run);
@@ -394,7 +400,7 @@ export class BtwController {
394
400
  // No surface to show the failure on — the footer notice is the only
395
401
  // channel left (the overlay path renders it in place).
396
402
  if (!this.overlayOpen)
397
- this.deps.notify(`btw failed: ${finish.message}`, 'error');
403
+ this.deps.notify(t('btw.failed', { message: finish.message }), 'error');
398
404
  }
399
405
  this.deps.requestRender();
400
406
  this.drain();
package/lib/btw.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"btw.js","sourceRoot":"","sources":["../src/btw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"btw.js","sourceRoot":"","sources":["../src/btw.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@
19
19
  * for real. Pure parse/validate/build helpers live at the top so the field
20
20
  * contracts stay unit-testable without a TTY.
21
21
  */
22
+ import { t } from "./i18n/index.js";
22
23
  import { EditField } from "./settings.js";
23
24
  /** Route id of the synthetic "Custom provider…" picker entry. */
24
25
  export const CUSTOM_PROVIDER_ID = 'custom';
@@ -31,8 +32,10 @@ export const SUPPORTED_PROTOCOLS = ['openai-completions', 'openai-responses', 'a
31
32
  export function customProviderEntry() {
32
33
  return {
33
34
  id: CUSTOM_PROVIDER_ID,
34
- name: 'Custom provider…',
35
- hint: 'base URL + API key + models — any OpenAI/Anthropic-compatible gateway',
35
+ name: t('custprov.entry.name'),
36
+ // Runtime-built entry: the hint resolves NOW (unlike the static catalog,
37
+ // whose frozen-table hints carry i18n keys until render time).
38
+ hint: t('custprov.entry.hint'),
36
39
  catalogRoute: false,
37
40
  };
38
41
  }
@@ -46,14 +49,14 @@ export function customProviderEntry() {
46
49
  export function parseCustomProviderId(text, takenIds) {
47
50
  const id = text.trim().toLowerCase();
48
51
  if (id === '')
49
- return { kind: 'error', error: 'Provider id must not be empty' };
52
+ return { kind: 'error', error: t('custprov.error.idEmpty') };
50
53
  if (id.length < 2 || id.length > 40)
51
- return { kind: 'error', error: 'Provider id must be 2–40 characters' };
54
+ return { kind: 'error', error: t('custprov.error.idLength') };
52
55
  if (!/^[a-z0-9][a-z0-9-]*$/.test(id)) {
53
- return { kind: 'error', error: 'Use lowercase letters, digits and dashes only (no dots, no spaces)' };
56
+ return { kind: 'error', error: t('custprov.error.idChars') };
54
57
  }
55
58
  if (takenIds.has(id))
56
- return { kind: 'error', error: `"${id}" already exists — pick another route id` };
59
+ return { kind: 'error', error: t('custprov.error.idTaken', { id }) };
57
60
  return { kind: 'value', value: id };
58
61
  }
59
62
  /** Display name validation: optional, one line, capped. */
@@ -62,7 +65,7 @@ export function parseCustomDisplayName(text) {
62
65
  if (name === '')
63
66
  return { kind: 'value', value: '' };
64
67
  if (name.length > 40)
65
- return { kind: 'error', error: 'Display name must be at most 40 characters' };
68
+ return { kind: 'error', error: t('custprov.error.nameLength') };
66
69
  return { kind: 'value', value: name };
67
70
  }
68
71
  /**
@@ -76,7 +79,7 @@ export function parseCustomProtocol(text) {
76
79
  return { kind: 'value', value: SUPPORTED_PROTOCOLS[0] };
77
80
  const match = SUPPORTED_PROTOCOLS.find(protocol => protocol === value);
78
81
  if (match === undefined) {
79
- return { kind: 'error', error: `Protocol must be one of: ${SUPPORTED_PROTOCOLS.join(', ')}` };
82
+ return { kind: 'error', error: t('custprov.error.protocol', { list: SUPPORTED_PROTOCOLS.join(', ') }) };
80
83
  }
81
84
  return { kind: 'value', value: match };
82
85
  }
@@ -84,9 +87,9 @@ export function parseCustomProtocol(text) {
84
87
  export function parseCustomBaseUrl(text) {
85
88
  const url = text.trim();
86
89
  if (url === '')
87
- return { kind: 'error', error: 'Base URL must not be empty' };
90
+ return { kind: 'error', error: t('custprov.error.baseUrlEmpty') };
88
91
  if (!/^https?:\/\/\S+$/.test(url)) {
89
- return { kind: 'error', error: 'Base URL must start with http:// or https:// and contain no spaces' };
92
+ return { kind: 'error', error: t('custprov.error.baseUrlFormat') };
90
93
  }
91
94
  return { kind: 'value', value: url };
92
95
  }
@@ -98,11 +101,11 @@ export function parseCustomBaseUrl(text) {
98
101
  export function parseCustomModels(text) {
99
102
  const ids = [...new Set(text.split(/[\s,]+/).map(id => id.trim()).filter(id => id !== ''))];
100
103
  if (ids.length === 0)
101
- return { kind: 'error', error: 'List at least one model id (comma-separated)' };
104
+ return { kind: 'error', error: t('custprov.error.modelsEmpty') };
102
105
  if (ids.some(id => id.length > 80))
103
- return { kind: 'error', error: 'Each model id must be at most 80 characters' };
106
+ return { kind: 'error', error: t('custprov.error.modelLength') };
104
107
  if (ids.length > 50)
105
- return { kind: 'error', error: 'At most 50 models in the initial list' };
108
+ return { kind: 'error', error: t('custprov.error.modelsMax') };
106
109
  return { kind: 'value', value: ids.join(',') };
107
110
  }
108
111
  /** Build the hand-declared catalog entry the commit chain consumes. */
@@ -110,7 +113,7 @@ export function buildCustomEntry(draft) {
110
113
  return {
111
114
  id: draft.id,
112
115
  name: draft.displayName !== '' ? draft.displayName : draft.id,
113
- hint: 'hand-declared route',
116
+ hint: t('custprov.hint.declared'),
114
117
  catalogRoute: false,
115
118
  api: draft.api,
116
119
  baseURL: draft.baseURL,
@@ -144,42 +147,45 @@ export class CustomProviderFlow {
144
147
  specs() {
145
148
  return [
146
149
  {
147
- label: 'Provider id',
148
- subtitle: 'route key for settings.yaml — also derives the credential ref (e.g. acme-gateway → ACME_GATEWAY_API_KEY)',
150
+ label: t('custprov.step.id'),
151
+ subtitle: t('custprov.step.idHint'),
149
152
  initial: this.draft.id,
150
153
  parse: text => parseCustomProviderId(text, this.options.takenIds),
151
154
  },
152
155
  {
153
- label: 'Display name (optional)',
154
- subtitle: 'shown in /model and Models — empty uses the route id',
156
+ label: t('custprov.step.displayName'),
157
+ subtitle: t('custprov.step.displayNameHint'),
155
158
  initial: this.draft.displayName,
156
159
  parse: parseCustomDisplayName,
157
160
  },
158
161
  {
159
- label: 'API protocol',
160
- subtitle: `one of ${SUPPORTED_PROTOCOLS.join(' · ')} — empty defaults to ${SUPPORTED_PROTOCOLS[0]}`,
162
+ label: t('custprov.step.protocol'),
163
+ subtitle: t('custprov.step.protocolHint', {
164
+ list: SUPPORTED_PROTOCOLS.join(' · '),
165
+ default: SUPPORTED_PROTOCOLS[0],
166
+ }),
161
167
  initial: this.draft.api,
162
168
  parse: parseCustomProtocol,
163
169
  },
164
170
  {
165
- label: 'Base URL',
166
- subtitle: 'the gateway endpoint, e.g. https://gateway.internal.example/v1',
171
+ label: t('custprov.step.baseUrl'),
172
+ subtitle: t('custprov.step.baseUrlHint'),
167
173
  initial: this.draft.baseURL,
168
174
  parse: parseCustomBaseUrl,
169
175
  },
170
176
  {
171
- label: 'Models',
172
- subtitle: 'comma-separated wire model ids, e.g. acme-large, acme-think',
177
+ label: t('custprov.step.models'),
178
+ subtitle: t('custprov.step.modelsHint'),
173
179
  initial: this.draft.models,
174
180
  parse: parseCustomModels,
175
181
  },
176
182
  {
177
- label: 'API key',
178
- subtitle: `stored as the derived ref — never written to settings.yaml`,
183
+ label: t('custprov.step.apiKey'),
184
+ subtitle: t('custprov.step.apiKeyHint'),
179
185
  initial: '',
180
186
  secret: true,
181
187
  parse: text => text.trim() === ''
182
- ? { kind: 'error', error: 'API key must not be empty' }
188
+ ? { kind: 'error', error: t('custprov.error.keyEmpty') }
183
189
  : { kind: 'value', value: text.trim() },
184
190
  },
185
191
  ];
@@ -195,7 +201,7 @@ export class CustomProviderFlow {
195
201
  // commit abandons the whole flow (the key-editor contract).
196
202
  let committedThisStep = false;
197
203
  return new EditField(this.tui, {
198
- title: `Custom provider ${this.step + 1}/${total} · ${spec.label}`,
204
+ title: t('custprov.step.title', { current: this.step + 1, total, label: spec.label }),
199
205
  subtitle: spec.subtitle,
200
206
  initial: spec.initial,
201
207
  ...(spec.secret === true ? { secret: true } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"custom-provider.js","sourceRoot":"","sources":["../src/custom-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"custom-provider.js","sourceRoot":"","sources":["../src/custom-provider.ts"],"names":[],"mappings":"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"}
package/lib/footer.d.ts CHANGED
@@ -17,15 +17,17 @@ import type { BridgeStats } from './session.ts';
17
17
  import type { CacheHitMode } from './theme-settings.ts';
18
18
  import { type TuiTheme } from './theme/index.ts';
19
19
  /**
20
- * The footer keybinding hint, assembled from the user's `dsh-tui.footerHints`
21
- * selection (see buildFooterHint) - the pre-feature full string is what the
22
- * all-true default produces. The no-wrap rendering lives in `FooterHint` (a
23
- * width-clipping component, not a word-wrapping Text). The unit test in
24
- * test/history.test.mjs guards the default against future length regressions
20
+ * The footer keybinding hint with the all-true default selection — the same
21
+ * string `buildFooterHint(DEFAULT_FOOTER_HINTS)` produces. A function, not a
22
+ * module constant: the label resolves through `t()` on every call, so a
23
+ * language switch re-renders it instead of freezing the boot-time language.
24
+ * The no-wrap rendering lives in `FooterHint` (a width-clipping component,
25
+ * not a word-wrapping Text). The unit tests in test/footer-hints.test.mjs and
26
+ * test/history.test.mjs guard the default against future length regressions
25
27
  * (a longer hint word-wraps on 105-118-column terminals and hides its suffix
26
28
  * on <=104).
27
29
  */
28
- export declare const FOOTER_HINT = "\u2328 Enter: send \u00B7 Esc \u00D72: stop \u00B7 Ctrl+C \u00D72: quit \u00B7 Ctrl+D: quit (empty) \u00B7 Ctrl+G: subagents \u00B7 Ctrl+Shift+F: search \u00B7 /preset: switch \u00B7 \u2191\u2193: history";
30
+ export declare function FOOTER_HINT(): string;
29
31
  /** The toggleable footer hint segments, keyed as in the `dsh-tui` settings. */
30
32
  export interface FooterHints {
31
33
  send: boolean;
@@ -39,10 +41,9 @@ export interface FooterHints {
39
41
  }
40
42
  /** Every hint off - the footer hint bar renders nothing. */
41
43
  export declare const DEFAULT_FOOTER_HINTS: FooterHints;
42
- /** The hint segments in display order, each without the `⌨ ` lead. */
44
+ /** The hint segments in display order; labels resolve live via footerHintLabel. */
43
45
  export declare const FOOTER_HINT_ITEMS: ReadonlyArray<{
44
46
  id: keyof FooterHints;
45
- label: string;
46
47
  }>;
47
48
  /**
48
49
  * Assemble the footer hint from the user's per-segment on/off selection, in
package/lib/footer.js CHANGED
@@ -13,20 +13,25 @@
13
13
  * tick only re-renders this component's single line.
14
14
  */
15
15
  import { truncateToWidth, visibleWidth } from '@earendil-works/pi-tui';
16
+ import { t } from "./i18n/index.js";
16
17
  import { ansiBg, ansiFg, BOLD, POWERLINE, RESET } from "./theme/index.js";
17
18
  import { hexIsLight } from "./theme/palette.js";
18
19
  import { clipToWidth } from "./text.js";
19
20
  import { arrowRight } from "./icons.js";
20
21
  /**
21
- * The footer keybinding hint, assembled from the user's `dsh-tui.footerHints`
22
- * selection (see buildFooterHint) - the pre-feature full string is what the
23
- * all-true default produces. The no-wrap rendering lives in `FooterHint` (a
24
- * width-clipping component, not a word-wrapping Text). The unit test in
25
- * test/history.test.mjs guards the default against future length regressions
22
+ * The footer keybinding hint with the all-true default selection — the same
23
+ * string `buildFooterHint(DEFAULT_FOOTER_HINTS)` produces. A function, not a
24
+ * module constant: the label resolves through `t()` on every call, so a
25
+ * language switch re-renders it instead of freezing the boot-time language.
26
+ * The no-wrap rendering lives in `FooterHint` (a width-clipping component,
27
+ * not a word-wrapping Text). The unit tests in test/footer-hints.test.mjs and
28
+ * test/history.test.mjs guard the default against future length regressions
26
29
  * (a longer hint word-wraps on 105-118-column terminals and hides its suffix
27
30
  * on <=104).
28
31
  */
29
- export const FOOTER_HINT = '⌨ Enter: send · Esc ×2: stop · Ctrl+C ×2: quit · Ctrl+D: quit (empty) · Ctrl+G: subagents · Ctrl+Shift+F: search · /preset: switch · ↑↓: history';
32
+ export function FOOTER_HINT() {
33
+ return t('footer.hint.default');
34
+ }
30
35
  /** Every hint off - the footer hint bar renders nothing. */
31
36
  export const DEFAULT_FOOTER_HINTS = Object.freeze({
32
37
  send: true,
@@ -38,23 +43,36 @@ export const DEFAULT_FOOTER_HINTS = Object.freeze({
38
43
  preset: true,
39
44
  history: true,
40
45
  });
41
- /** The hint segments in display order, each without the `⌨ ` lead. */
46
+ /** The hint segments in display order; labels resolve live via footerHintLabel. */
42
47
  export const FOOTER_HINT_ITEMS = [
43
- { id: 'send', label: 'Enter: send' },
44
- { id: 'stop', label: 'Esc ×2: stop' },
45
- { id: 'quit', label: 'Ctrl+C ×2: quit' },
46
- { id: 'quitEmpty', label: 'Ctrl+D: quit (empty)' },
47
- { id: 'subagents', label: 'Ctrl+G: subagents' },
48
- { id: 'search', label: 'Ctrl+Shift+F: search' },
49
- { id: 'preset', label: '/preset: switch' },
50
- { id: 'history', label: '↑↓: history' },
48
+ { id: 'send' },
49
+ { id: 'stop' },
50
+ { id: 'quit' },
51
+ { id: 'quitEmpty' },
52
+ { id: 'subagents' },
53
+ { id: 'search' },
54
+ { id: 'preset' },
55
+ { id: 'history' },
51
56
  ];
57
+ /** One hint segment's display text (without the `⌨ ` lead). A function so the label tracks the active language instead of freezing at module load. */
58
+ function footerHintLabel(id) {
59
+ switch (id) {
60
+ case 'send': return t('footer.hint.send');
61
+ case 'stop': return t('footer.hint.stop');
62
+ case 'quit': return t('footer.hint.quit');
63
+ case 'quitEmpty': return t('footer.hint.quitEmpty');
64
+ case 'subagents': return t('footer.hint.subagents');
65
+ case 'search': return t('footer.hint.search');
66
+ case 'preset': return t('footer.hint.preset');
67
+ case 'history': return t('footer.hint.history');
68
+ }
69
+ }
52
70
  /**
53
71
  * Assemble the footer hint from the user's per-segment on/off selection, in
54
72
  * the fixed display order. `''` when every segment is off.
55
73
  */
56
74
  export function buildFooterHint(shown) {
57
- const parts = FOOTER_HINT_ITEMS.filter(item => shown[item.id]).map(item => item.label);
75
+ const parts = FOOTER_HINT_ITEMS.filter(item => shown[item.id]).map(item => footerHintLabel(item.id));
58
76
  if (parts.length === 0)
59
77
  return '';
60
78
  return `⌨ ${parts.join(' · ')}`;
@@ -198,8 +216,8 @@ export class PowerlineFooter {
198
216
  if ((stats.cacheReadTokens > 0 || stats.cacheWriteTokens > 0) && rate !== undefined) {
199
217
  segs.push({ label: `⚡ CH${rate.toFixed(1)}%`, bgHex: POWERLINE.cache });
200
218
  }
201
- segs.push({ label: `💬 ${stats.msgCount} msgs`, bgHex: POWERLINE.messages });
202
- segs.push({ label: `🔧 ${stats.toolCallCount} tools`, bgHex: POWERLINE.tools });
219
+ segs.push({ label: t('footer.seg.msgs', { count: stats.msgCount }), bgHex: POWERLINE.messages });
220
+ segs.push({ label: t('footer.seg.tools', { count: stats.toolCallCount }), bgHex: POWERLINE.tools });
203
221
  const left = buildSegments(segs);
204
222
  const leftWidth = visibleWidth(left);
205
223
  // The clock must carry the palette foreground: the app paints the canvas
package/lib/footer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"footer.js","sourceRoot":"","sources":["../src/footer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAkB,MAAM,wBAAwB,CAAA;AAGtF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAiB,MAAM,kBAAkB,CAAA;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GACtB,kJAAkJ,CAAA;AAcpJ,4DAA4D;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAgB,MAAM,CAAC,MAAM,CAAC;IAC7D,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;CACd,CAAC,CAAA;AAEF,sEAAsE;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAA4D;IACxF,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE;IACpC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE;IACrC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACxC,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAAE;IAClD,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,EAAE;IAC/C,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,sBAAsB,EAAE;IAC/C,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE;IAC1C,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;CACxC,CAAA;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAkB;IAChD,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACjC,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;AACjC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,UAAU;IACJ,QAAQ,CAAgB;IACxB,QAAQ,CAAmB;IAE5C,YAAY,QAAwB,EAAE,QAA2B;QAC/D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,UAAU,KAA2E,CAAC;IAEtF,MAAM,CAAC,KAAa;QAClB,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC7C,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,EAAE,CAAA;QAC1B,2EAA2E;QAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,GAAG,KAAK,CAAA;QACzE,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACtE,OAAO,CAAC,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;AAC/B,oFAAoF;AACpF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;AAEnC,+EAA+E;AAC/E,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAA;AAC9C,CAAC;AA0BD,MAAM,UAAU,MAAM,CAAC,CAAS;IAC9B,IAAI,CAAC,IAAI,SAAS;QAAE,OAAO,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IAC3D,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IACjD,OAAO,GAAG,CAAC,EAAE,CAAA;AACf,CAAC;AAED,SAAS,aAAa,CAAC,IAAwB;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAChC,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;QAClB,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAA;QACrE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,EAAE,EAAE,CAAA;QACzE,CAAC;aAAM,CAAC;YACN,GAAG,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,EAAE,GAAG,KAAK,CAAA;QACvD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,yEAAyE;AACzE,SAAS,UAAU,CAAC,KAAyB;IAC3C,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,KAAK,CAAoC,CAAA;IAC/D,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAA;AAC1D,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB;IAC7C,QAAQ,KAAK,IAAI,KAAK,EAAE,CAAC;QACvB,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,CAAA;QAC1B,KAAK,KAAK,CAAC,CAAC,OAAO,GAAG,CAAA;QACtB,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAA;QACzB,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAA;QACvB,KAAK,OAAO,CAAC,CAAC,OAAO,GAAG,CAAA;QACxB,KAAK,KAAK,CAAC,CAAC,OAAO,GAAG,CAAA;QACtB,OAAO,CAAC,CAAC,OAAO,GAAG,CAAA;IACrB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,OAAO,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC,aAAa,CAAA;IACjD,IAAI,OAAO,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC,aAAa,CAAA;IACjD,IAAI,OAAO,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC,WAAW,CAAA;IAC/C,OAAO,SAAS,CAAC,SAAS,CAAA;AAC5B,CAAC;AAED,MAAM,OAAO,eAAe;IACT,MAAM,CAAkB;IACxB,QAAQ,CAAgB;IAEzC,YAAY,MAAwB,EAAE,QAAwB;QAC5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,UAAU,KAA0E,CAAC;IAErF,MAAM,CAAC,KAAa;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAE5C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;QAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,WAAW,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA;QAC9D,MAAM,IAAI,GAAc,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAA;QACvE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC3E,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,EAAE,EAAE,CAAC,CAAA;YAChE,MAAM,MAAM,GAAG,SAAS,CAAC,eAAe,IAAI,KAAK,CAAA;YACjD,IAAI,CAAC,IAAI,CAAC;gBACR,KAAK,EAAE,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE;gBACtD,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;aAC1B,CAAC,CAAA;QACJ,CAAC;QAED,yEAAyE;QACzE,wEAAwE;QACxE,sEAAsE;QACtE,uEAAuE;QACvE,gEAAgE;QAChE,iEAAiE;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAA;QAC7C,yEAAyE;QACzE,mEAAmE;QACnE,oCAAoC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,CAAA;QACrC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA;YACpD,IAAI,CAAC,IAAI,CAAC;gBACR,KAAK,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;gBACrE,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC;aAC1B,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,CAAA;QACxE,CAAC;QAED,wEAAwE;QACxE,qEAAqE;QACrE,uEAAuE;QACvE,sEAAsE;QACtE,sEAAsE;QACtE,mEAAmE;QACnE,2CAA2C;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,SAAS;YACtD,CAAC,CAAC,KAAK,CAAC,YAAY;YACpB,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAA;QACjC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACpF,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAA;QACzE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,QAAQ,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC5E,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,aAAa,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAA;QAE/E,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAEpC,yEAAyE;QACzE,wEAAwE;QACxE,0EAA0E;QAC1E,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QACtE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,CAAA;QACtE,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC,CAAA;QAEvD,OAAO,CAAC,eAAe,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;IACjE,CAAC;CACF"}
1
+ {"version":3,"file":"footer.js","sourceRoot":"","sources":["../src/footer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Hard-exit helper — the tail of every self-initiated process exit.
3
+ *
4
+ * `process.exit()` is not unconditional: Node drains the libuv threadpool
5
+ * before dying, and a threadpool request completing at exactly that moment
6
+ * (observed live: the session log's file close delivering its completion
7
+ * callback while the Ctrl+C×2 quit path exits) can leave
8
+ * `uv__threadpool_cleanup` joining a worker forever. The process then hangs
9
+ * AFTER the goodbye line printed — alive, holding the terminal with cooked
10
+ * mode restored but no shell in the foreground, deaf to every key (`sample`
11
+ * showed the main thread parked in `pthread_join` for 30+ minutes while
12
+ * every libuv worker sat idle; the user's only way out was `kill -9`).
13
+ *
14
+ * Two defenses, because nothing on the main thread can run while that exit
15
+ * is blocked (JS timers never fire there):
16
+ *
17
+ * 1. the exit is deferred one turn of the event loop (`setImmediate`) —
18
+ * the observed hang was triggered by calling `process.exit` from inside
19
+ * a threadpool completion callback, and exiting from the check phase
20
+ * starts the threadpool drain from a quiet stack instead;
21
+ * 2. a Worker-thread watchdog arms a one-shot SIGKILL at `watchdogMs` —
22
+ * workers run their own event loop on a separate thread, so the timer
23
+ * fires even with the main thread stuck inside `process.exit`. Normal
24
+ * quits never feel it: the exit lands in microseconds and the worker
25
+ * dies with the process; the pathological case is bounded to the
26
+ * watchdog delay (the shell comes back, exit code 137 instead of an
27
+ * eternal hang).
28
+ */
29
+ /** Grace period before the watchdog SIGKILLs a stuck exit. */
30
+ export declare const EXIT_WATCHDOG_MS = 3000;
31
+ /**
32
+ * Exit the process after `code`, guarded against the threadpool-drain hang.
33
+ * Every self-initiated exit (Ctrl+C×2 quit, Ctrl+D, smoke fallback, boot
34
+ * guard) goes through here instead of calling `process.exit` directly.
35
+ */
36
+ export declare function hardExit(code: number, watchdogMs?: number): void;
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Hard-exit helper — the tail of every self-initiated process exit.
3
+ *
4
+ * `process.exit()` is not unconditional: Node drains the libuv threadpool
5
+ * before dying, and a threadpool request completing at exactly that moment
6
+ * (observed live: the session log's file close delivering its completion
7
+ * callback while the Ctrl+C×2 quit path exits) can leave
8
+ * `uv__threadpool_cleanup` joining a worker forever. The process then hangs
9
+ * AFTER the goodbye line printed — alive, holding the terminal with cooked
10
+ * mode restored but no shell in the foreground, deaf to every key (`sample`
11
+ * showed the main thread parked in `pthread_join` for 30+ minutes while
12
+ * every libuv worker sat idle; the user's only way out was `kill -9`).
13
+ *
14
+ * Two defenses, because nothing on the main thread can run while that exit
15
+ * is blocked (JS timers never fire there):
16
+ *
17
+ * 1. the exit is deferred one turn of the event loop (`setImmediate`) —
18
+ * the observed hang was triggered by calling `process.exit` from inside
19
+ * a threadpool completion callback, and exiting from the check phase
20
+ * starts the threadpool drain from a quiet stack instead;
21
+ * 2. a Worker-thread watchdog arms a one-shot SIGKILL at `watchdogMs` —
22
+ * workers run their own event loop on a separate thread, so the timer
23
+ * fires even with the main thread stuck inside `process.exit`. Normal
24
+ * quits never feel it: the exit lands in microseconds and the worker
25
+ * dies with the process; the pathological case is bounded to the
26
+ * watchdog delay (the shell comes back, exit code 137 instead of an
27
+ * eternal hang).
28
+ */
29
+ import { Worker } from 'node:worker_threads';
30
+ /** Grace period before the watchdog SIGKILLs a stuck exit. */
31
+ export const EXIT_WATCHDOG_MS = 3_000;
32
+ function exitNow(code, watchdogMs) {
33
+ try {
34
+ const source = `
35
+ // Ref'd on purpose: the timer is the only thing keeping this worker's
36
+ // event loop alive, and an unref'd one would let the worker exit
37
+ // before it ever fires. The worker itself is unref'd from the main
38
+ // side below — that is what keeps it from holding the process open.
39
+ setTimeout(() => { process.kill(process.pid, 'SIGKILL') }, ${watchdogMs});
40
+ `;
41
+ const watchdog = new Worker(source, { eval: true });
42
+ // The watchdog must not keep the process alive on its own account — it
43
+ // only matters while the main thread is stuck inside process.exit, and
44
+ // on every clean path the process (and with it the worker) is long gone
45
+ // before the timer runs.
46
+ watchdog.unref();
47
+ }
48
+ catch {
49
+ // No worker support (exotic embeddings): exit unguarded rather than
50
+ // not at all — the deferred exit below is still the normal path.
51
+ }
52
+ // One loop turn off the caller's stack: never exit from inside a
53
+ // threadpool completion callback (see the module doc).
54
+ setImmediate(() => process.exit(code));
55
+ }
56
+ /**
57
+ * Exit the process after `code`, guarded against the threadpool-drain hang.
58
+ * Every self-initiated exit (Ctrl+C×2 quit, Ctrl+D, smoke fallback, boot
59
+ * guard) goes through here instead of calling `process.exit` directly.
60
+ */
61
+ export function hardExit(code, watchdogMs = EXIT_WATCHDOG_MS) {
62
+ exitNow(code, watchdogMs);
63
+ }
64
+ //# sourceMappingURL=hard-exit.js.map