@wrongstack/core 0.77.0 → 0.82.6

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 (79) hide show
  1. package/dist/{agent-bridge-EWdqs8v6.d.ts → agent-bridge-C9P_HPez.d.ts} +2 -2
  2. package/dist/{agent-subagent-runner-D8qW8OSC.d.ts → agent-subagent-runner-2Aq0jOSj.d.ts} +107 -102
  3. package/dist/{compactor-D_ExJajC.d.ts → compactor-CJq7LQev.d.ts} +3 -3
  4. package/dist/{config-Dy0CK_o6.d.ts → config-_DZ7dN-T.d.ts} +77 -75
  5. package/dist/{context-y87Jc5ei.d.ts → context-ToHAp4-U.d.ts} +119 -90
  6. package/dist/coordination/index.d.ts +16 -16
  7. package/dist/coordination/index.js +318 -37
  8. package/dist/coordination/index.js.map +1 -1
  9. package/dist/defaults/index.d.ts +31 -31
  10. package/dist/defaults/index.js +419 -67
  11. package/dist/defaults/index.js.map +1 -1
  12. package/dist/{director-state-BmYi3DGA.d.ts → director-state-CgIc30qi.d.ts} +19 -19
  13. package/dist/{events-CYaoLN5_.d.ts → events-DnRqXaZ3.d.ts} +43 -42
  14. package/dist/execution/index.d.ts +53 -53
  15. package/dist/execution/index.js +67 -23
  16. package/dist/execution/index.js.map +1 -1
  17. package/dist/extension/index.d.ts +9 -9
  18. package/dist/extension/index.js +8 -1
  19. package/dist/extension/index.js.map +1 -1
  20. package/dist/{goal-store-C7jcumEh.d.ts → goal-store-DvWLNu52.d.ts} +4 -4
  21. package/dist/{index-DIxjTOga.d.ts → index-BNOLadHw.d.ts} +28 -28
  22. package/dist/{index-Dsda0uCn.d.ts → index-N0_c4bHQ.d.ts} +45 -45
  23. package/dist/index.d.ts +165 -165
  24. package/dist/index.js +593 -137
  25. package/dist/index.js.map +1 -1
  26. package/dist/infrastructure/index.d.ts +9 -9
  27. package/dist/infrastructure/index.js +13 -5
  28. package/dist/infrastructure/index.js.map +1 -1
  29. package/dist/kernel/index.d.ts +14 -14
  30. package/dist/kernel/index.js +7 -0
  31. package/dist/kernel/index.js.map +1 -1
  32. package/dist/logger-B72yyPc6.d.ts +12 -0
  33. package/dist/{logger-BppKxDqZ.d.ts → logger-C_27pj9i.d.ts} +6 -7
  34. package/dist/{mcp-servers-T0O6UN_w.d.ts → mcp-servers-Dck3T85_.d.ts} +20 -20
  35. package/dist/{mode-BO4SEUIv.d.ts → mode-CHo2XtHs.d.ts} +4 -4
  36. package/dist/models/index.d.ts +10 -10
  37. package/dist/models/index.js +8 -2
  38. package/dist/models/index.js.map +1 -1
  39. package/dist/{models-registry-BcYJDKLm.d.ts → models-registry-Be3osGt5.d.ts} +28 -28
  40. package/dist/{models-registry-Cuq1C8V9.d.ts → models-registry-Boz639EI.d.ts} +12 -12
  41. package/dist/{multi-agent-coordinator-DpbG3wiy.d.ts → multi-agent-coordinator-DllpCVkF.d.ts} +12 -12
  42. package/dist/{null-fleet-bus-u5ys3lW_.d.ts → null-fleet-bus-BY0AN-sr.d.ts} +121 -121
  43. package/dist/observability/index.d.ts +41 -41
  44. package/dist/observability/index.js.map +1 -1
  45. package/dist/{observability-BhnVLBLS.d.ts → observability-CoSNZdhX.d.ts} +4 -4
  46. package/dist/{parallel-eternal-engine-Dn0P8Pbj.d.ts → parallel-eternal-engine-D402RASp.d.ts} +49 -49
  47. package/dist/{path-resolver-B32v2JIq.d.ts → path-resolver-UPFTsDyD.d.ts} +6 -6
  48. package/dist/{permission-V5BLOrY6.d.ts → permission-14CChMmO.d.ts} +10 -8
  49. package/dist/{permission-policy-CBVx-d-8.d.ts → permission-policy-gW5htOo1.d.ts} +7 -7
  50. package/dist/{plan-templates-BcUwLlMQ.d.ts → plan-templates-DRvPgkfZ.d.ts} +65 -32
  51. package/dist/{provider-runner-CSi_7l0h.d.ts → provider-runner-COAJM8tC.d.ts} +6 -6
  52. package/dist/{retry-policy-CG3qvH_e.d.ts → retry-policy-DSu6O6rD.d.ts} +4 -4
  53. package/dist/sdd/index.d.ts +47 -47
  54. package/dist/sdd/index.js +47 -22
  55. package/dist/sdd/index.js.map +1 -1
  56. package/dist/security/index.d.ts +6 -6
  57. package/dist/security/index.js +7 -1
  58. package/dist/security/index.js.map +1 -1
  59. package/dist/{selector-RvBR_YRW.d.ts → selector-11-fm95U.d.ts} +2 -2
  60. package/dist/{session-event-bridge-CDHxcmQU.d.ts → session-event-bridge-D0u-x576.d.ts} +7 -7
  61. package/dist/{session-reader-BIpwM60D.d.ts → session-reader-BQU-toaN.d.ts} +23 -23
  62. package/dist/{skill-CxuWrsKK.d.ts → skill-BJeF2DwY.d.ts} +1 -1
  63. package/dist/skills/index.d.ts +9 -9
  64. package/dist/skills/index.js +15 -3
  65. package/dist/skills/index.js.map +1 -1
  66. package/dist/storage/index.d.ts +15 -15
  67. package/dist/storage/index.js +378 -76
  68. package/dist/storage/index.js.map +1 -1
  69. package/dist/{system-prompt-CA11g6Jo.d.ts → system-prompt-C0rLCeyn.d.ts} +16 -11
  70. package/dist/{task-graph-D1YQbpxF.d.ts → task-graph-CikNdRTG.d.ts} +22 -22
  71. package/dist/types/index.d.ts +25 -25
  72. package/dist/types/index.js +45 -10
  73. package/dist/types/index.js.map +1 -1
  74. package/dist/utils/index.d.ts +46 -45
  75. package/dist/utils/index.js +53 -12
  76. package/dist/utils/index.js.map +1 -1
  77. package/dist/{wstack-paths-D7evAFWM.d.ts → wstack-paths-BQMvEllz.d.ts} +2 -2
  78. package/package.json +1 -1
  79. package/dist/logger-DDd5C--Z.d.ts +0 -12
@@ -1,5 +1,5 @@
1
- import { W as WireFamily } from './models-registry-BcYJDKLm.js';
2
- import { a as Capabilities, P as Permission } from './context-y87Jc5ei.js';
1
+ import { W as WireFamily } from './models-registry-Be3osGt5.js';
2
+ import { a as Capabilities, P as Permission } from './context-ToHAp4-U.js';
3
3
 
4
4
  /**
5
5
  * Lifecycle hook types — the pure, serializable contract shared by the config
@@ -27,20 +27,20 @@ type HookMatcher = string;
27
27
  interface HookInput {
28
28
  event: HookEvent;
29
29
  /** Present for PreToolUse / PostToolUse. */
30
- toolName?: string;
30
+ toolName?: string | undefined;
31
31
  /** Tool arguments (PreToolUse / PostToolUse). */
32
- toolInput?: unknown;
32
+ toolInput?: unknown | undefined;
33
33
  /** Tool result preview (PostToolUse only). */
34
34
  toolResult?: {
35
35
  content: string;
36
36
  isError: boolean;
37
37
  };
38
38
  /** The submitted user text (UserPromptSubmit only). */
39
- prompt?: string;
39
+ prompt?: string | undefined;
40
40
  /** Absolute working directory of the session. */
41
41
  cwd: string;
42
42
  /** Active session id, when known. */
43
- sessionId?: string;
43
+ sessionId?: string | undefined;
44
44
  }
45
45
  /**
46
46
  * What a hook returns. Every field is optional — an empty object (or a hook
@@ -51,9 +51,9 @@ interface HookOutcome {
51
51
  * `block` stops the action (PreToolUse → tool not run; UserPromptSubmit →
52
52
  * turn short-circuited). `allow` is the explicit no-op. Omitted = allow.
53
53
  */
54
- decision?: 'block' | 'allow';
54
+ decision?: 'block' | 'allow' | undefined;
55
55
  /** Human-readable reason, surfaced to the model when blocking. */
56
- reason?: string;
56
+ reason?: string | undefined;
57
57
  /**
58
58
  * PreToolUse only: replacement tool arguments. The executor swaps these in
59
59
  * and RE-VALIDATES them against the tool's input schema before running.
@@ -64,7 +64,7 @@ interface HookOutcome {
64
64
  * (PostToolUse), the user message (UserPromptSubmit), or the system preamble
65
65
  * (SessionStart).
66
66
  */
67
- additionalContext?: string;
67
+ additionalContext?: string | undefined;
68
68
  }
69
69
  /** An in-process hook function (registered via the plugin API). */
70
70
  type InProcessHook = (input: HookInput) => HookOutcome | void | Promise<HookOutcome | void>;
@@ -77,9 +77,9 @@ interface ShellHook {
77
77
  /** Command line run via the platform shell. */
78
78
  command: string;
79
79
  /** Tool-name matcher (defaults to `*`). */
80
- matcher?: HookMatcher;
80
+ matcher?: HookMatcher | undefined;
81
81
  /** Per-invocation timeout in ms (default 5000). */
82
- timeoutMs?: number;
82
+ timeoutMs?: number | undefined;
83
83
  }
84
84
  /** A registered hook entry, discriminated by transport. */
85
85
  type HookEntry = {
@@ -87,13 +87,13 @@ type HookEntry = {
87
87
  event: HookEvent;
88
88
  matcher: HookMatcher;
89
89
  hook: InProcessHook;
90
- owner?: string;
90
+ owner?: string | undefined;
91
91
  } | {
92
92
  kind: 'shell';
93
93
  event: HookEvent;
94
94
  matcher: HookMatcher;
95
95
  command: string;
96
- timeoutMs?: number;
96
+ timeoutMs?: number | undefined;
97
97
  };
98
98
 
99
99
  type ContextWindowModeId = 'balanced' | 'frugal' | 'deep' | 'archival';
@@ -116,48 +116,48 @@ interface ContextWindowMode {
116
116
  interface ContextWindowPolicy extends ContextWindowMode {
117
117
  }
118
118
  interface ContextWindowConfigLike {
119
- mode?: ContextWindowModeId | string;
120
- warnThreshold?: number;
121
- softThreshold?: number;
122
- hardThreshold?: number;
123
- preserveK?: number;
124
- eliseThreshold?: number;
119
+ mode?: ContextWindowModeId | string | undefined;
120
+ warnThreshold?: number | undefined;
121
+ softThreshold?: number | undefined;
122
+ hardThreshold?: number | undefined;
123
+ preserveK?: number | undefined;
124
+ eliseThreshold?: number | undefined;
125
125
  }
126
126
  declare const DEFAULT_CONTEXT_WINDOW_MODE_ID: ContextWindowModeId;
127
127
  declare const CONTEXT_WINDOW_MODES: readonly ContextWindowMode[];
128
128
  declare function listContextWindowModes(): ContextWindowMode[];
129
129
  declare function getContextWindowMode(id: string | null | undefined): ContextWindowMode | null;
130
130
  declare function isContextWindowModeId(id: string): id is ContextWindowModeId;
131
- declare function resolveContextWindowPolicy(config?: ContextWindowConfigLike, overrideMode?: string | null): ContextWindowPolicy;
131
+ declare function resolveContextWindowPolicy(config?: ContextWindowConfigLike, overrideMode?: string | null | undefined): ContextWindowPolicy;
132
132
  declare function formatContextWindowModeList(activeId?: string | null): string;
133
133
 
134
134
  interface ContextConfig {
135
135
  /** Context-window policy mode. Controls compaction thresholds and preservation depth. */
136
- mode?: ContextWindowModeId;
136
+ mode?: ContextWindowModeId | undefined;
137
137
  warnThreshold: number;
138
138
  softThreshold: number;
139
139
  hardThreshold: number;
140
140
  /** Enable automatic compaction when thresholds are crossed (default: true). */
141
- autoCompact?: boolean;
141
+ autoCompact?: boolean | undefined;
142
142
  /**
143
143
  * Model used for LLM-assisted summarization in IntelligentCompactor.
144
144
  * Falls back to the main model when omitted.
145
145
  */
146
- summarizerModel?: string;
146
+ summarizerModel?: string | undefined;
147
147
  /**
148
148
  * Override the effective context window size (in tokens). Use this when
149
149
  * you want the compactor to trigger earlier than the provider's actual
150
150
  * maxContext. Defaults to the provider's reported maxContext.
151
151
  */
152
- effectiveMaxContext?: number;
153
- maxSessionTokens?: number;
154
- maxDailyTokens?: number;
152
+ effectiveMaxContext?: number | undefined;
153
+ maxSessionTokens?: number | undefined;
154
+ maxDailyTokens?: number | undefined;
155
155
  preserveK: number;
156
156
  eliseThreshold: number;
157
157
  /** Compactor strategy: 'hybrid' (default, fast rules), 'intelligent' (LLM summarization), 'selective' (LLM-driven selection). */
158
- strategy?: 'hybrid' | 'intelligent' | 'selective';
158
+ strategy?: 'hybrid' | 'intelligent' | 'selective' | undefined;
159
159
  /** Enable LLM-driven selective compaction (default: false for backward compat). */
160
- llmSelector?: boolean;
160
+ llmSelector?: boolean | undefined;
161
161
  }
162
162
  interface ToolsConfig {
163
163
  defaultExecutionStrategy: 'parallel' | 'sequential' | 'smart';
@@ -169,7 +169,7 @@ interface ToolsConfig {
169
169
  * When true (default), the agent automatically extends its iteration
170
170
  * limit by 100 when hit. Set to false to require user confirmation.
171
171
  */
172
- autoExtendLimit?: boolean;
172
+ autoExtendLimit?: boolean | undefined;
173
173
  }
174
174
  interface ProviderApiKey {
175
175
  /** Short human-readable label (e.g. "personal", "work", "rate-limit-backup"). */
@@ -190,14 +190,14 @@ interface ProviderConfig {
190
190
  * mirrors the active entry into this field so downstream consumers
191
191
  * (provider construction, wire adapters) need no changes.
192
192
  */
193
- apiKey?: string;
193
+ apiKey?: string | undefined;
194
194
  /** Multiple keys for the same provider — pick one with `activeKey`. */
195
- apiKeys?: ProviderApiKey[];
195
+ apiKeys?: ProviderApiKey[] | undefined;
196
196
  /** Label of the entry in `apiKeys` to use. Defaults to the first one. */
197
- activeKey?: string;
198
- baseUrl?: string;
197
+ activeKey?: string | undefined;
198
+ baseUrl?: string | undefined;
199
199
  headers?: Record<string, string>;
200
- model?: string;
200
+ model?: string | undefined;
201
201
  quirks?: Record<string, unknown>;
202
202
  capabilities?: Record<string, unknown>;
203
203
  /**
@@ -205,11 +205,11 @@ interface ProviderConfig {
205
205
  * constructed without consulting the models.dev catalog — useful for
206
206
  * self-hosted endpoints, internal proxies, or for working offline.
207
207
  */
208
- family?: WireFamily;
208
+ family?: WireFamily | undefined;
209
209
  /** Custom env var names to probe when `apiKey` is missing. */
210
- envVars?: string[];
210
+ envVars?: string[] | undefined;
211
211
  /** Optional list of models the user wants visible for this provider. */
212
- models?: string[];
212
+ models?: string[] | undefined;
213
213
  /**
214
214
  * Provider-relative custom model definitions (maps modelId → definition).
215
215
  * Each entry adds/overrides a model for this provider with optional
@@ -226,33 +226,33 @@ interface ProviderConfig {
226
226
  interface ModelMatrixEntry {
227
227
  /** Provider registry id (e.g. "anthropic", "minimax", "zai"). When omitted,
228
228
  * the leader's provider is used with this entry's model. */
229
- provider?: string;
229
+ provider?: string | undefined;
230
230
  /** Model id to run for the matched role/phase/default. */
231
231
  model: string;
232
232
  }
233
233
  interface MCPServerConfig {
234
234
  /** Human-readable description shown in `wstack mcp list`. */
235
- description?: string;
235
+ description?: string | undefined;
236
236
  name: string;
237
237
  transport: 'stdio' | 'sse' | 'streamable-http';
238
- command?: string;
239
- args?: string[];
238
+ command?: string | undefined;
239
+ args?: string[] | undefined;
240
240
  env?: Record<string, string>;
241
- url?: string;
241
+ url?: string | undefined;
242
242
  headers?: Record<string, string>;
243
- enabled?: boolean;
244
- allowedTools?: string[];
245
- permission?: Permission;
246
- startupTimeoutMs?: number;
247
- requestTimeoutMs?: number;
243
+ enabled?: boolean | undefined;
244
+ allowedTools?: string[] | undefined;
245
+ permission?: Permission | undefined;
246
+ startupTimeoutMs?: number | undefined;
247
+ requestTimeoutMs?: number | undefined;
248
248
  }
249
249
  interface LogConfig {
250
250
  level: 'error' | 'warn' | 'info' | 'debug' | 'trace';
251
- file?: string;
251
+ file?: string | undefined;
252
252
  }
253
253
  interface PluginConfig {
254
254
  name: string;
255
- enabled?: boolean;
255
+ enabled?: boolean | undefined;
256
256
  options?: Record<string, unknown>;
257
257
  }
258
258
  /**
@@ -277,7 +277,7 @@ interface FeaturesConfig {
277
277
  }
278
278
  interface AutonomyConfig {
279
279
  /** ms to wait before auto-proceeding in 'auto' mode. Default: 45000. */
280
- autoProceedDelayMs?: number;
280
+ autoProceedDelayMs?: number | undefined;
281
281
  }
282
282
  /**
283
283
  * Automatic codebase symbol-index maintenance. Keeps the `codebase-search`
@@ -301,15 +301,15 @@ interface IndexingConfig {
301
301
  */
302
302
  interface LaunchConfig {
303
303
  /** Interactive mode: 'tui' (Ink TUI) or 'repl' (readline REPL). */
304
- mode?: 'tui' | 'repl';
304
+ mode?: 'tui' | 'repl' | undefined;
305
305
  /** Start with Director mode on (fleet manifest + multi-agent orchestration). */
306
- director?: boolean;
306
+ director?: boolean | undefined;
307
307
  /**
308
308
  * Launch-time autonomy mode (binary choice from pre-launch prompt).
309
309
  * 'off' = stops after each turn; 'auto' = self-driving.
310
310
  * Distinct from `AutonomyConfig.defaultMode` which also supports 'suggest'.
311
311
  */
312
- autonomy?: 'off' | 'auto';
312
+ autonomy?: 'off' | 'auto' | undefined;
313
313
  }
314
314
  /**
315
315
  * Controls how much detail is persisted to the per-session JSONL log
@@ -325,7 +325,7 @@ interface SessionLoggingConfig {
325
325
  * - "full" → Also persist full request payloads (very large).
326
326
  * Consider enabling a separate replay log instead.
327
327
  */
328
- auditLevel?: 'minimal' | 'standard' | 'full';
328
+ auditLevel?: 'minimal' | 'standard' | 'full' | undefined;
329
329
  /**
330
330
  * Sampling configuration for high-volume events (especially relevant at
331
331
  * `auditLevel: "full"`).
@@ -338,7 +338,7 @@ interface SessionLoggingConfig {
338
338
  * - 1 = no sampling (every message is logged)
339
339
  * - 8 = default (first message + every 8th)
340
340
  */
341
- sampleRate?: number;
341
+ sampleRate?: number | undefined;
342
342
  };
343
343
  };
344
344
  }
@@ -349,7 +349,7 @@ interface SyncConfig {
349
349
  /** GitHub token (fine-grained PAT). Encrypted at rest via SecretVault. */
350
350
  githubToken: string;
351
351
  categories: SyncCategory[];
352
- lastSyncedAt?: string;
352
+ lastSyncedAt?: string | undefined;
353
353
  }
354
354
  /**
355
355
  * Per-model capability overrides the user can define in their config.
@@ -358,30 +358,30 @@ interface SyncConfig {
358
358
  */
359
359
  interface CustomModelDefinition {
360
360
  /** Provider this model belongs to. Defaults to the owning ProviderConfig. */
361
- provider?: string;
361
+ provider?: string | undefined;
362
362
  /** Optional display name. */
363
- name?: string;
363
+ name?: string | undefined;
364
364
  /** Capability overrides — only specified fields are overlaid. */
365
- capabilities?: Partial<Capabilities>;
365
+ capabilities?: Partial<Capabilities> | undefined;
366
366
  /**
367
367
  * Max output tokens. If not specified, the provider family default
368
368
  * or catalog entry is used.
369
369
  */
370
- maxOutput?: number;
370
+ maxOutput?: number | undefined;
371
371
  }
372
372
  interface Config {
373
373
  version: 1;
374
374
  provider: string;
375
375
  model: string;
376
- apiKey?: string;
377
- baseUrl?: string;
376
+ apiKey?: string | undefined;
377
+ baseUrl?: string | undefined;
378
378
  /**
379
379
  * Maximum number of subagent tasks the fleet coordinator dispatches
380
380
  * simultaneously. Extra tasks queue until a slot frees. Default: 4.
381
381
  * Overridden by WRONGSTACK_MAX_CONCURRENT env var and --max-concurrent
382
382
  * CLI flag. Change at runtime with /fleet concurrency <n>.
383
383
  */
384
- maxConcurrent?: number;
384
+ maxConcurrent?: number | undefined;
385
385
  providers?: Record<string, ProviderConfig>;
386
386
  /**
387
387
  * Top-level custom models (maps modelId → definition). Merged with
@@ -407,7 +407,7 @@ interface Config {
407
407
  * provider), `provider/model`, or `provider model`. The primary is always
408
408
  * re-tried first at the start of every user turn. See `createFallbackModelExtension`.
409
409
  */
410
- fallbackModels?: string[];
410
+ fallbackModels?: string[] | undefined;
411
411
  /**
412
412
  * Lifecycle shell hooks, keyed by event. Each command receives the hook
413
413
  * `HookInput` JSON on stdin; a JSON `HookOutcome` on stdout (and exit code 2
@@ -415,29 +415,31 @@ interface Config {
415
415
  * the plugin API. Disabled entirely under `--bare` / `--no-hooks`.
416
416
  */
417
417
  hooks?: Partial<Record<HookEvent, ShellHook[]>>;
418
- plugins?: (string | PluginConfig)[];
418
+ plugins?: (string | PluginConfig)[] | undefined;
419
419
  log: LogConfig;
420
420
  features: FeaturesConfig;
421
- yolo?: boolean;
421
+ yolo?: boolean | undefined;
422
422
  /** When true, show lightweight LLM-predicted next steps after each turn (/next). */
423
- nextPrediction?: boolean;
424
- cwd?: string;
423
+ nextPrediction?: boolean | undefined;
424
+ cwd?: string | undefined;
425
425
  /** Autonomy mode configuration (auto-proceed delay, etc.). */
426
- autonomy?: AutonomyConfig;
426
+ autonomy?: AutonomyConfig | undefined;
427
+ /** Show rotating launch hints on startup. Default: true. Set to false to suppress. */
428
+ hints?: boolean | undefined;
427
429
  /** Automatic codebase symbol-index maintenance (session-start + live updates). */
428
- indexing?: IndexingConfig;
430
+ indexing?: IndexingConfig | undefined;
429
431
  /** Saved launch preferences — restored on next boot for one-line confirmation. */
430
- launch?: LaunchConfig;
432
+ launch?: LaunchConfig | undefined;
431
433
  /**
432
434
  * Session logging & audit configuration.
433
435
  * Controls what gets written to the persistent JSONL transcript.
434
436
  */
435
- session?: SessionLoggingConfig;
437
+ session?: SessionLoggingConfig | undefined;
436
438
  /**
437
439
  * Cloud sync configuration. Stored separately in sync.json to avoid
438
440
  * accidentally committing the GitHub token to project configs.
439
441
  */
440
- sync?: SyncConfig;
442
+ sync?: SyncConfig | undefined;
441
443
  /**
442
444
  * Per-plugin namespaced config sections. Each plugin reads its own
443
445
  * subtree via `ConfigStore.getExtension(pluginName)`. Plugins should
@@ -454,8 +456,8 @@ interface Config {
454
456
  }
455
457
  interface ConfigLoader {
456
458
  load(opts?: {
457
- cliFlags?: Partial<Config>;
458
- cwd?: string;
459
+ cliFlags?: Partial<Config> | undefined;
460
+ cwd?: string | undefined;
459
461
  }): Promise<Config>;
460
462
  /** Load and decrypt the sync config from ~/.wrongstack/sync.json. */
461
463
  loadSyncConfig(): Promise<SyncConfig | null>;