@wrongstack/core 0.119.1 → 0.148.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 (65) hide show
  1. package/dist/{agent-bridge-PRAbEX-9.d.ts → agent-bridge-r9y6gdn4.d.ts} +1 -1
  2. package/dist/{agent-subagent-runner-DXWImnNV.d.ts → agent-subagent-runner-1GeQE_L0.d.ts} +7 -7
  3. package/dist/{brain-NZZqL8sn.d.ts → brain-Cp_3GIS2.d.ts} +14 -3
  4. package/dist/{compactor-C3stu664.d.ts → compactor-BueGt7LG.d.ts} +9 -1
  5. package/dist/{config-DZV9VK9n.d.ts → config-BaVThgnT.d.ts} +1 -1
  6. package/dist/{context-hvXINa6a.d.ts → context-C7G_MtLV.d.ts} +7 -0
  7. package/dist/coordination/index.d.ts +12 -12
  8. package/dist/coordination/index.js +35 -21
  9. package/dist/coordination/index.js.map +1 -1
  10. package/dist/defaults/index.d.ts +24 -24
  11. package/dist/defaults/index.js +869 -788
  12. package/dist/defaults/index.js.map +1 -1
  13. package/dist/execution/index.d.ts +14 -14
  14. package/dist/execution/index.js +454 -321
  15. package/dist/execution/index.js.map +1 -1
  16. package/dist/extension/index.d.ts +6 -6
  17. package/dist/{goal-preamble-COpt55W8.d.ts → goal-preamble-CYJLg0wk.d.ts} +55 -17
  18. package/dist/{index-Cj3le7TI.d.ts → index-BZdezm3g.d.ts} +8 -8
  19. package/dist/{index-4VVHuTZF.d.ts → index-CPweVoFM.d.ts} +5 -5
  20. package/dist/index.d.ts +48 -48
  21. package/dist/index.js +612 -513
  22. package/dist/index.js.map +1 -1
  23. package/dist/infrastructure/index.d.ts +6 -6
  24. package/dist/infrastructure/index.js +64 -19
  25. package/dist/infrastructure/index.js.map +1 -1
  26. package/dist/kernel/index.d.ts +9 -9
  27. package/dist/kernel/index.js.map +1 -1
  28. package/dist/{llm-selector-Bmx4PsVM.d.ts → llm-selector-CP72f1lC.d.ts} +2 -2
  29. package/dist/{mcp-servers-CofNHOqn.d.ts → mcp-servers-Bl5LTvQg.d.ts} +3 -3
  30. package/dist/models/index.d.ts +5 -5
  31. package/dist/models/index.js +53 -20
  32. package/dist/models/index.js.map +1 -1
  33. package/dist/{models-registry-BzlsjKcy.d.ts → models-registry-D90K9UnM.d.ts} +1 -1
  34. package/dist/{multi-agent-coordinator-CmDmUgq2.d.ts → multi-agent-coordinator-QWEzJDlm.d.ts} +1 -1
  35. package/dist/{null-fleet-bus-CyH2YqP4.d.ts → null-fleet-bus-BUyfqh23.d.ts} +13 -10
  36. package/dist/observability/index.d.ts +2 -2
  37. package/dist/{parallel-eternal-engine-uxVm4y4V.d.ts → parallel-eternal-engine-C75QuhAI.d.ts} +33 -11
  38. package/dist/{path-resolver-gfoGxpdd.d.ts → path-resolver-DRjQBkoO.d.ts} +3 -3
  39. package/dist/{permission-DhLrgA30.d.ts → permission-B7nKnEvQ.d.ts} +1 -1
  40. package/dist/{permission-policy-DGOvne7i.d.ts → permission-policy-8-6zBmfA.d.ts} +2 -13
  41. package/dist/{pipeline-CqF7uju2.d.ts → pipeline-BG7UgbDc.d.ts} +2 -2
  42. package/dist/{plan-templates-DoKhzenv.d.ts → plan-templates-CkKNPU3I.d.ts} +5 -5
  43. package/dist/{provider-runner-BPlI5sPZ.d.ts → provider-runner-BNpuIyOL.d.ts} +3 -3
  44. package/dist/{retry-policy-B4Q-FZgE.d.ts → retry-policy-rutAfVeR.d.ts} +1 -1
  45. package/dist/sdd/index.d.ts +8 -8
  46. package/dist/sdd/index.js +10 -1
  47. package/dist/sdd/index.js.map +1 -1
  48. package/dist/{secret-vault-B7GnL6o9.d.ts → secret-vault-BTcC_T5v.d.ts} +3 -2
  49. package/dist/security/index.d.ts +5 -7
  50. package/dist/security/index.js +5 -36
  51. package/dist/security/index.js.map +1 -1
  52. package/dist/{selector-BakeMnWR.d.ts → selector-4vDFZKt3.d.ts} +1 -1
  53. package/dist/{session-event-bridge-DE5Oekwx.d.ts → session-event-bridge-DWlvglC2.d.ts} +2 -2
  54. package/dist/{session-reader-DFC81-4p.d.ts → session-reader-BAtCxdaw.d.ts} +1 -1
  55. package/dist/storage/index.d.ts +13 -13
  56. package/dist/storage/index.js +100 -103
  57. package/dist/storage/index.js.map +1 -1
  58. package/dist/types/index.d.ts +18 -18
  59. package/dist/types/index.js +276 -103
  60. package/dist/types/index.js.map +1 -1
  61. package/dist/utils/index.d.ts +37 -13
  62. package/dist/utils/index.js +63 -35
  63. package/dist/utils/index.js.map +1 -1
  64. package/package.json +2 -2
  65. package/skills/tech-stack/SKILL.md +253 -97
@@ -1,4 +1,4 @@
1
- import { M as ModelsRegistry, a as ModelsDevPayload, R as ResolvedProvider, b as ResolvedModel, W as WireFamily } from './config-DZV9VK9n.js';
1
+ import { M as ModelsRegistry, a as ModelsDevPayload, R as ResolvedProvider, b as ResolvedModel, W as WireFamily } from './config-BaVThgnT.js';
2
2
 
3
3
  interface DefaultModelsRegistryOptions {
4
4
  cacheFile: string;
@@ -1,4 +1,4 @@
1
- import { S as SubagentConfig, M as MultiAgentCoordinator, c as MultiAgentConfig, d as SubagentRunner, F as FleetBus, e as SpawnResult, T as TaskSpec, a as BridgeMessage, A as AgentBridge, C as CoordinatorStatus, f as TaskResult } from './agent-subagent-runner-DXWImnNV.js';
1
+ import { S as SubagentConfig, M as MultiAgentCoordinator, c as MultiAgentConfig, d as SubagentRunner, F as FleetBus, e as SpawnResult, T as TaskSpec, a as BridgeMessage, A as AgentBridge, C as CoordinatorStatus, f as TaskResult } from './agent-subagent-runner-1GeQE_L0.js';
2
2
  import { EventEmitter } from 'node:events';
3
3
 
4
4
  /**
@@ -1,11 +1,11 @@
1
- import { d as AgentPhase, A as AgentDefinition, a as DefaultMultiAgentCoordinator, D as DispatchClassifier } from './multi-agent-coordinator-CmDmUgq2.js';
2
- import { F as FleetBus, u as FleetUsage, S as SubagentConfig, v as FleetUsageAggregator, f as TaskResult, C as CoordinatorStatus, T as TaskSpec, c as MultiAgentConfig, d as SubagentRunner } from './agent-subagent-runner-DXWImnNV.js';
3
- import { a as SessionWriter, T as Tool, i as SessionStore } from './context-hvXINa6a.js';
4
- import { b as BrainArbiter, E as EventBus } from './brain-NZZqL8sn.js';
1
+ import { d as AgentPhase, A as AgentDefinition, a as DefaultMultiAgentCoordinator, D as DispatchClassifier } from './multi-agent-coordinator-QWEzJDlm.js';
2
+ import { F as FleetBus, u as FleetUsage, S as SubagentConfig, v as FleetUsageAggregator, f as TaskResult, C as CoordinatorStatus, T as TaskSpec, c as MultiAgentConfig, d as SubagentRunner } from './agent-subagent-runner-1GeQE_L0.js';
3
+ import { a as SessionWriter, T as Tool, i as SessionStore } from './context-C7G_MtLV.js';
4
+ import { b as BrainArbiter, E as EventBus } from './brain-Cp_3GIS2.js';
5
5
  import { EventEmitter } from 'node:events';
6
6
  import { D as DirectorStateSnapshot } from './director-state-BfeCUbmk.js';
7
- import { d as ModelMatrixEntry } from './config-DZV9VK9n.js';
8
- import { I as InMemoryAgentBridge } from './agent-bridge-PRAbEX-9.js';
7
+ import { d as ModelMatrixEntry } from './config-BaVThgnT.js';
8
+ import { I as InMemoryAgentBridge } from './agent-bridge-r9y6gdn4.js';
9
9
 
10
10
  /**
11
11
  * Alert levels the Director can emit when a collab session needs attention.
@@ -462,7 +462,7 @@ interface FleetManagerOptions {
462
462
  checkpointDebounceMs?: number | undefined;
463
463
  directorBudget?: {
464
464
  maxCostUsd?: number | undefined;
465
- };
465
+ } | undefined;
466
466
  /**
467
467
  * Maximum context load (as a fraction of maxContext) the leader agent
468
468
  * is allowed to reach before a new spawn is rejected. Default: 0.85.
@@ -478,7 +478,7 @@ interface FleetManagerOptions {
478
478
  * A function may be supplied when the leader can switch models at runtime;
479
479
  * canSpawn() reads it lazily so the spawn threshold follows the active model.
480
480
  */
481
- maxContext?: number | (() => number | undefined);
481
+ maxContext?: number | (() => number | undefined) | undefined;
482
482
  }
483
483
  /**
484
484
  * Fleet-level policy container extracted from `Director`. Owns:
@@ -991,7 +991,7 @@ interface DirectorOptions {
991
991
  * A function may be supplied when the leader can switch models at runtime;
992
992
  * spawn() reads it lazily so the threshold follows the active model.
993
993
  */
994
- maxContext?: number | (() => number | undefined);
994
+ maxContext?: number | (() => number | undefined) | undefined;
995
995
  /**
996
996
  * Per-task model matrix (Config.modelMatrix). When set, a spawn whose
997
997
  * config has no explicit `model` is resolved against this matrix by role
@@ -1145,7 +1145,10 @@ declare class Director implements ICoordinator {
1145
1145
  private workCompleteFlag;
1146
1146
  /** Pending /btw notes stashed by the leader agent (see setLeaderBtwNote). */
1147
1147
  private _leaderBtwNotes;
1148
- /** Active collab sessions tracked by sessionId (see spawnCollab). */
1148
+ /** Active collab sessions tracked by sessionId (see spawnCollab).
1149
+ * The tuple holds the session and its Director-registered listener unsubs.
1150
+ * Calling the unsubs on cancel/premature-cleanup prevents listener accumulation
1151
+ * on CollabSession (EventEmitter) across many spawnCollab() calls. */
1149
1152
  private readonly _activeCollabSessions;
1150
1153
  /** Prevents large `ask_subagent` answers from bloating the leader's context window. */
1151
1154
  readonly largeAnswerStore: LargeAnswerStore;
@@ -1,6 +1,6 @@
1
1
  import { M as MetricsSink, d as MetricLabels, f as MetricsSnapshot, H as HealthRegistry, a as HealthCheck, A as AggregateHealth, T as Tracer, S as Span } from '../observability-D-HZN_mF.js';
2
- import { E as EventBus } from '../brain-NZZqL8sn.js';
3
- import '../context-hvXINa6a.js';
2
+ import { E as EventBus } from '../brain-Cp_3GIS2.js';
3
+ import '../context-C7G_MtLV.js';
4
4
 
5
5
  /**
6
6
  * In-memory metrics sink. Suitable for embedded use, tests, and /metrics
@@ -1,12 +1,12 @@
1
- import { e as ProviderError, C as Context, T as Tool, m as ToolUseBlock, n as ToolResultBlock } from './context-hvXINa6a.js';
2
- import { R as RetryPolicy, E as ErrorHandler, a as RecoveryDecision } from './retry-policy-B4Q-FZgE.js';
3
- import { C as Compactor, a as CompactReport } from './compactor-C3stu664.js';
4
- import { M as ModelsRegistry } from './config-DZV9VK9n.js';
5
- import { T as ToolExecutorOptions, a as ToolExecutorStrategy, b as ToolBatchResult } from './index-4VVHuTZF.js';
6
- import { g as Agent, h as AgentFactory } from './agent-subagent-runner-DXWImnNV.js';
7
- import { b as BrainArbiter } from './brain-NZZqL8sn.js';
1
+ import { e as ProviderError, C as Context, T as Tool, m as ToolUseBlock, n as ToolResultBlock } from './context-C7G_MtLV.js';
2
+ import { R as RetryPolicy, E as ErrorHandler, a as RecoveryDecision } from './retry-policy-rutAfVeR.js';
3
+ import { C as Compactor, a as CompactReport } from './compactor-BueGt7LG.js';
4
+ import { M as ModelsRegistry } from './config-BaVThgnT.js';
5
+ import { T as ToolExecutorOptions, a as ToolExecutorStrategy, b as ToolBatchResult } from './index-CPweVoFM.js';
6
+ import { g as Agent, h as AgentFactory } from './agent-subagent-runner-1GeQE_L0.js';
7
+ import { b as BrainArbiter } from './brain-Cp_3GIS2.js';
8
8
  import { J as JournalEntry } from './goal-store-CV9Yz2X_.js';
9
- import { D as DispatchClassifier, a as DefaultMultiAgentCoordinator } from './multi-agent-coordinator-CmDmUgq2.js';
9
+ import { D as DispatchClassifier, a as DefaultMultiAgentCoordinator } from './multi-agent-coordinator-QWEzJDlm.js';
10
10
 
11
11
  declare class DefaultRetryPolicy implements RetryPolicy {
12
12
  shouldRetry(err: Error | ProviderError, attempt: number): boolean;
@@ -48,13 +48,26 @@ declare class DefaultErrorHandler implements ErrorHandler {
48
48
  interface CompactorOptions {
49
49
  preserveK?: number | undefined;
50
50
  eliseThreshold?: number | undefined;
51
+ /**
52
+ * Enable content-aware digest mode. When true, `collapseAncientTurns` uses
53
+ * `buildSmartDigest` which scores messages by importance: critical content
54
+ * (errors, corrections, decisions) is kept verbatim; normal exchanges get
55
+ * first-sentence summaries; large tool outputs and repeated failures are
56
+ * aggressively compressed. Defaults to false (lossless digest).
57
+ */
58
+ smart?: boolean | undefined;
59
+ /**
60
+ * @deprecated Ignored. Token estimation is centralized in
61
+ * `compaction-core`/`token-estimate` so all compactors and the context-pressure
62
+ * monitor agree on one number. Kept only for backward-compatible call sites.
63
+ */
51
64
  estimator?: (((text: string) => number)) | undefined;
52
65
  }
53
66
 
54
67
  declare class HybridCompactor implements Compactor {
55
68
  private readonly preserveK;
56
69
  private readonly eliseThreshold;
57
- private readonly estimator;
70
+ private readonly smart;
58
71
  constructor(opts?: CompactorOptions);
59
72
  compact(ctx: Context, opts?: {
60
73
  aggressive?: boolean | undefined;
@@ -64,9 +77,18 @@ declare class HybridCompactor implements Compactor {
64
77
  * This is the accurate figure for context-window pressure monitoring.
65
78
  */
66
79
  private estimateFullRequest;
67
- private eliseOldToolResults;
80
+ /**
81
+ * Lossless rule-based collapse of ancient turns into a single digest message.
82
+ *
83
+ * Preserves ALL textual content of the collapsed range — user instructions,
84
+ * assistant decisions/conclusions, and any prior digests (chained forward so
85
+ * the digest stays lossless across repeated compactions). Only `tool_use` /
86
+ * `tool_result` protocol blocks are dropped and replaced with a count marker;
87
+ * their full payload already lives in the session log. No sub-LLM call.
88
+ *
89
+ * Returns the token savings and the digest text (for audit logging).
90
+ */
68
91
  private collapseAncientTurns;
69
- private estimateMessages;
70
92
  }
71
93
 
72
94
  declare class ToolExecutor {
@@ -1,6 +1,6 @@
1
- import { E as EventBus } from './brain-NZZqL8sn.js';
2
- import { M as ModelsRegistry, b as ResolvedModel } from './config-DZV9VK9n.js';
3
- import { c as TokenCounter, U as Usage, d as CacheStats } from './context-hvXINa6a.js';
1
+ import { E as EventBus } from './brain-Cp_3GIS2.js';
2
+ import { M as ModelsRegistry, b as ResolvedModel } from './config-BaVThgnT.js';
3
+ import { c as TokenCounter, U as Usage, d as CacheStats } from './context-C7G_MtLV.js';
4
4
  import { P as PathResolver } from './path-resolver-CPRj4bFY.js';
5
5
 
6
6
  /**
@@ -1,4 +1,4 @@
1
- import { T as Tool, C as Context, f as Permission } from './context-hvXINa6a.js';
1
+ import { T as Tool, C as Context, f as Permission } from './context-C7G_MtLV.js';
2
2
 
3
3
  interface SecretScrubber {
4
4
  scrub(text: string): string;
@@ -1,6 +1,6 @@
1
- import { T as Tool, C as Context } from './context-hvXINa6a.js';
1
+ import { T as Tool, C as Context } from './context-C7G_MtLV.js';
2
2
  import { I as InputReader } from './input-reader-E-ffP2ee.js';
3
- import { P as PermissionPolicy, a as PermissionDecision } from './permission-DhLrgA30.js';
3
+ import { P as PermissionPolicy, a as PermissionDecision } from './permission-B7nKnEvQ.js';
4
4
 
5
5
  interface PermissionPolicyOptions {
6
6
  trustFile: string;
@@ -122,17 +122,6 @@ declare class DefaultPermissionPolicy implements PermissionPolicy {
122
122
  * declared capabilities.
123
123
  */
124
124
  declare class AutoApprovePermissionPolicy implements PermissionPolicy {
125
- /**
126
- * Legacy name-based denylist.
127
- * @deprecated Prefer declaring `capabilities` on the Tool and using capability-based checks.
128
- */
129
- private static readonly LEGACY_NAME_DENY;
130
- /**
131
- * Tools from MCP servers (`mcp__<server>__<tool>`) are external code of
132
- * unknown capability — they may wrap a shell or filesystem. They are
133
- * fail-closed here: not auto-approved for subagents by default, so the
134
- * leader must allow them explicitly per-spawn.
135
- */
136
125
  private static isMcpTool;
137
126
  evaluate(tool: Tool): Promise<PermissionDecision>;
138
127
  trust(): Promise<void>;
@@ -1,5 +1,5 @@
1
- import { T as Tool, l as TextBlock, g as ContentBlock } from './context-hvXINa6a.js';
2
- import { H as HookEvent, e as HookMatcher, I as InProcessHook, S as ShellHook, f as HookEntry } from './config-DZV9VK9n.js';
1
+ import { T as Tool, l as TextBlock, g as ContentBlock } from './context-C7G_MtLV.js';
2
+ import { H as HookEvent, e as HookMatcher, I as InProcessHook, S as ShellHook, f as HookEntry } from './config-BaVThgnT.js';
3
3
 
4
4
  /** Model capabilities relevant to prompt composition. */
5
5
  interface ModelCapabilities {
@@ -1,9 +1,9 @@
1
- import { E as EventBus, M as MemoryScope, k as MemoryEntry, l as MemoryStore, m as MemoryRelevanceContext, S as ScoredEntry } from './brain-NZZqL8sn.js';
2
- import { S as SecretScrubber } from './permission-DhLrgA30.js';
3
- import { i as SessionStore, h as SessionMetadata, a as SessionWriter, p as ResumedSession, q as SessionData, r as SessionSummary, g as ContentBlock, S as SessionEvent, s as TodoItem, t as ConversationState } from './context-hvXINa6a.js';
4
- import { A as AttachmentStore, a as AddAttachmentInput, b as AttachmentRef, c as Attachment } from './session-reader-DFC81-4p.js';
1
+ import { E as EventBus, M as MemoryScope, k as MemoryEntry, l as MemoryStore, m as MemoryRelevanceContext, S as ScoredEntry } from './brain-Cp_3GIS2.js';
2
+ import { S as SecretScrubber } from './permission-B7nKnEvQ.js';
3
+ import { i as SessionStore, h as SessionMetadata, a as SessionWriter, p as ResumedSession, q as SessionData, r as SessionSummary, g as ContentBlock, S as SessionEvent, s as TodoItem, t as ConversationState } from './context-C7G_MtLV.js';
4
+ import { A as AttachmentStore, a as AddAttachmentInput, b as AttachmentRef, c as Attachment } from './session-reader-BAtCxdaw.js';
5
5
  import { W as WstackPaths } from './wstack-paths-DD50Omgn.js';
6
- import { i as ConfigStore, h as Config, j as ConfigLoader, k as SyncConfig } from './config-DZV9VK9n.js';
6
+ import { i as ConfigStore, h as Config, j as ConfigLoader, k as SyncConfig } from './config-BaVThgnT.js';
7
7
  import { S as SecretVault } from './secret-vault-DoISxaKO.js';
8
8
 
9
9
  interface SessionStoreOptions {
@@ -1,8 +1,8 @@
1
- import { E as EventBus } from './brain-NZZqL8sn.js';
1
+ import { E as EventBus } from './brain-Cp_3GIS2.js';
2
2
  import { L as Logger } from './logger-B63L5bTg.js';
3
3
  import { T as Tracer } from './observability-D-HZN_mF.js';
4
- import { P as Provider, R as Request, C as Context, b as Response } from './context-hvXINa6a.js';
5
- import { R as RetryPolicy } from './retry-policy-B4Q-FZgE.js';
4
+ import { P as Provider, R as Request, C as Context, b as Response } from './context-C7G_MtLV.js';
5
+ import { R as RetryPolicy } from './retry-policy-rutAfVeR.js';
6
6
 
7
7
  /**
8
8
  * Options passed to a ProviderRunner when calling the provider.
@@ -1,4 +1,4 @@
1
- import { C as Context, b as Response, e as ProviderError } from './context-hvXINa6a.js';
1
+ import { C as Context, b as Response, e as ProviderError } from './context-C7G_MtLV.js';
2
2
 
3
3
  type RecoveryDecision = {
4
4
  /**
@@ -1,15 +1,15 @@
1
1
  import { h as Specification, S as SpecAnalysis, g as SpecValidationResult, e as SpecStatus, f as SpecTemplate, b as SpecRequirement } from '../spec-TBi3Jr6T.js';
2
2
  import { d as TaskGraph, e as TaskNode, i as TaskFilter, j as TaskSort, c as TaskProgress, T as TaskType, a as TaskPriority } from '../task-graph-u1q9Jkyk.js';
3
- import { E as EventBus } from '../brain-NZZqL8sn.js';
4
- import { D as DoneCondition, g as Agent, h as AgentFactory, f as TaskResult } from '../agent-subagent-runner-DXWImnNV.js';
5
- import '../context-hvXINa6a.js';
6
- import '../index-4VVHuTZF.js';
3
+ import { E as EventBus } from '../brain-Cp_3GIS2.js';
4
+ import { D as DoneCondition, g as Agent, h as AgentFactory, f as TaskResult } from '../agent-subagent-runner-1GeQE_L0.js';
5
+ import '../context-C7G_MtLV.js';
6
+ import '../index-CPweVoFM.js';
7
7
  import '../logger-B63L5bTg.js';
8
- import '../pipeline-CqF7uju2.js';
9
- import '../config-DZV9VK9n.js';
8
+ import '../pipeline-BG7UgbDc.js';
9
+ import '../config-BaVThgnT.js';
10
10
  import '../observability-D-HZN_mF.js';
11
- import '../permission-DhLrgA30.js';
12
- import '../retry-policy-B4Q-FZgE.js';
11
+ import '../permission-B7nKnEvQ.js';
12
+ import '../retry-policy-rutAfVeR.js';
13
13
 
14
14
  declare class SpecParser {
15
15
  parse(content: string): Specification;
package/dist/sdd/index.js CHANGED
@@ -2209,6 +2209,13 @@ function computeParallelGroups(graph, blockedByMap) {
2209
2209
  return groups;
2210
2210
  }
2211
2211
 
2212
+ // src/utils/assert-never.ts
2213
+ function assertNever(x, message) {
2214
+ throw new Error(
2215
+ `Unhandled case: ${JSON.stringify(x)}`
2216
+ );
2217
+ }
2218
+
2212
2219
  // src/sdd/spec-versioning.ts
2213
2220
  var SpecVersioning = class {
2214
2221
  versions = /* @__PURE__ */ new Map();
@@ -2359,6 +2366,8 @@ var SpecVersioning = class {
2359
2366
  switch (type) {
2360
2367
  case "functional":
2361
2368
  return "feature";
2369
+ case "non-functional":
2370
+ return "feature";
2362
2371
  case "security":
2363
2372
  return "feature";
2364
2373
  case "performance":
@@ -2366,7 +2375,7 @@ var SpecVersioning = class {
2366
2375
  case "ux":
2367
2376
  return "feature";
2368
2377
  default:
2369
- return "feature";
2378
+ return assertNever(type);
2370
2379
  }
2371
2380
  }
2372
2381
  };