@wrongstack/core 0.310.1 → 0.313.1

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 (187) hide show
  1. package/dist/chronicle/index.js +84 -6391
  2. package/dist/chronicle/project-server.js +84 -4868
  3. package/dist/chunk-2BUUIMQB.js +225 -0
  4. package/dist/chunk-2FK4WTFF.js +207 -0
  5. package/dist/chunk-2FQL4PDC.js +292 -0
  6. package/dist/chunk-2KKODIQU.js +2256 -0
  7. package/dist/chunk-2YU4WVBW.js +134 -0
  8. package/dist/chunk-3E244UDA.js +356 -0
  9. package/dist/chunk-3XPVB7BA.js +135 -0
  10. package/dist/chunk-4LJJYBAU.js +388 -0
  11. package/dist/chunk-4VWO3ZXL.js +342 -0
  12. package/dist/chunk-4XV6IR37.js +187 -0
  13. package/dist/chunk-4ZHTKJHM.js +183 -0
  14. package/dist/chunk-52RTVH4M.js +361 -0
  15. package/dist/chunk-57GEWK5X.js +26 -0
  16. package/dist/chunk-5DSMEVA4.js +931 -0
  17. package/dist/chunk-5RP3QTRL.js +1223 -0
  18. package/dist/chunk-5S437PRC.js +50 -0
  19. package/dist/chunk-5XDUGTKN.js +511 -0
  20. package/dist/chunk-62V2AFVG.js +422 -0
  21. package/dist/chunk-65RDIOR2.js +2470 -0
  22. package/dist/chunk-6AKOTGLM.js +597 -0
  23. package/dist/chunk-7ZHZE5EO.js +28 -0
  24. package/dist/chunk-A455ATZB.js +140 -0
  25. package/dist/chunk-AD7ZFZCS.js +46 -0
  26. package/dist/chunk-AI4LLQ2U.js +856 -0
  27. package/dist/chunk-ASX6AW36.js +789 -0
  28. package/dist/chunk-AT4V4XGI.js +3522 -0
  29. package/dist/chunk-AWNQ6ED6.js +311 -0
  30. package/dist/chunk-B4AMLZPB.js +9 -0
  31. package/dist/chunk-BAKVJLEV.js +417 -0
  32. package/dist/chunk-BJHVULHO.js +55 -0
  33. package/dist/chunk-CB2HFKTP.js +9 -0
  34. package/dist/chunk-CE4ZOCOI.js +1640 -0
  35. package/dist/chunk-CQQL4ZOQ.js +151 -0
  36. package/dist/chunk-DEIQMBD2.js +65 -0
  37. package/dist/chunk-E6I5RXVK.js +58 -0
  38. package/dist/chunk-EFEHDQGY.js +1589 -0
  39. package/dist/chunk-EODDVJBM.js +82 -0
  40. package/dist/chunk-EPC3GZD4.js +308 -0
  41. package/dist/chunk-FAYRX2AD.js +13 -0
  42. package/dist/chunk-FFSX2QDQ.js +362 -0
  43. package/dist/chunk-FHAMQS7Q.js +5856 -0
  44. package/dist/chunk-FIV4IJL7.js +2263 -0
  45. package/dist/chunk-FNXVT7HF.js +52 -0
  46. package/dist/chunk-FSWCWSTS.js +395 -0
  47. package/dist/chunk-FW5LDDMJ.js +16464 -0
  48. package/dist/chunk-FXQLIX3K.js +211 -0
  49. package/dist/chunk-G5AAKEEZ.js +228 -0
  50. package/dist/chunk-G5S3S5ZN.js +38 -0
  51. package/dist/chunk-GAZEWQEZ.js +231 -0
  52. package/dist/chunk-GFJOMSHG.js +125 -0
  53. package/dist/chunk-GFXZTHNI.js +158 -0
  54. package/dist/chunk-GM54GJBU.js +960 -0
  55. package/dist/chunk-GPQ3NJPR.js +900 -0
  56. package/dist/chunk-GTCU6DZ3.js +1 -0
  57. package/dist/chunk-H5E77KUJ.js +15 -0
  58. package/dist/chunk-H72H4XDU.js +1023 -0
  59. package/dist/chunk-HA4ZYA6T.js +178 -0
  60. package/dist/chunk-I45KAW2N.js +5020 -0
  61. package/dist/chunk-IQ35HMQL.js +1396 -0
  62. package/dist/chunk-IYFBFX34.js +86 -0
  63. package/dist/chunk-JJPMWPB6.js +109 -0
  64. package/dist/chunk-JTHKOYWU.js +663 -0
  65. package/dist/chunk-JVGPR3TS.js +365 -0
  66. package/dist/chunk-JVKB2TBL.js +48 -0
  67. package/dist/chunk-JX7VBZDK.js +31 -0
  68. package/dist/chunk-K3G6JBUC.js +5232 -0
  69. package/dist/chunk-K4YUNKU7.js +589 -0
  70. package/dist/chunk-KBZGE6LN.js +710 -0
  71. package/dist/chunk-KDQJCT2J.js +45 -0
  72. package/dist/chunk-KI4L2DUL.js +560 -0
  73. package/dist/chunk-KJ2ZTQSL.js +47 -0
  74. package/dist/chunk-KSJ5UTP7.js +154 -0
  75. package/dist/chunk-LHOA5DWA.js +28 -0
  76. package/dist/chunk-LX5QWLBL.js +27 -0
  77. package/dist/chunk-LZDDLNCZ.js +279 -0
  78. package/dist/chunk-M2WF6AXG.js +115 -0
  79. package/dist/chunk-M7BS2K6U.js +1 -0
  80. package/dist/chunk-NDBIPFNY.js +102 -0
  81. package/dist/chunk-NEMIWEXC.js +1199 -0
  82. package/dist/chunk-NFAYHPRH.js +323 -0
  83. package/dist/chunk-O37BQ65S.js +21 -0
  84. package/dist/chunk-O74MJHXU.js +187 -0
  85. package/dist/chunk-OJZEX73F.js +112 -0
  86. package/dist/chunk-PAAWLLZX.js +74 -0
  87. package/dist/chunk-PFXFQQRT.js +339 -0
  88. package/dist/chunk-PFZO3C6H.js +14 -0
  89. package/dist/chunk-PHH7LD45.js +113 -0
  90. package/dist/chunk-QRTG4XTI.js +188 -0
  91. package/dist/chunk-QVOVMXJR.js +1351 -0
  92. package/dist/chunk-RCQYT2I4.js +757 -0
  93. package/dist/chunk-RD6DEE36.js +1178 -0
  94. package/dist/chunk-RJIZEJ42.js +30 -0
  95. package/dist/chunk-RPOA7IAE.js +150 -0
  96. package/dist/chunk-SN2DQRL6.js +1172 -0
  97. package/dist/chunk-SQJVFEBV.js +41 -0
  98. package/dist/chunk-SQP64RCS.js +5391 -0
  99. package/dist/chunk-SVT4RNTR.js +49 -0
  100. package/dist/chunk-SWUFN7XM.js +43 -0
  101. package/dist/chunk-SXMVYC5H.js +174 -0
  102. package/dist/chunk-SZ6AYUIZ.js +23 -0
  103. package/dist/chunk-T3KGZBU5.js +3171 -0
  104. package/dist/chunk-TBRL2RCC.js +9 -0
  105. package/dist/chunk-TRT2HRWZ.js +18 -0
  106. package/dist/chunk-TYW2GI5I.js +1077 -0
  107. package/dist/chunk-UIWONWVG.js +4959 -0
  108. package/dist/chunk-VB3H5WWB.js +151 -0
  109. package/dist/chunk-W4A6QA3D.js +258 -0
  110. package/dist/chunk-WBPVKEEE.js +227 -0
  111. package/dist/chunk-WEBMSQP2.js +123 -0
  112. package/dist/chunk-WOEZV3Q4.js +333 -0
  113. package/dist/chunk-WQQON3SV.js +473 -0
  114. package/dist/chunk-WQTOVMGV.js +119 -0
  115. package/dist/chunk-WZO23AWO.js +2779 -0
  116. package/dist/chunk-XBDP4QPW.js +7 -0
  117. package/dist/chunk-XEBHSJLT.js +103 -0
  118. package/dist/chunk-XQ2ECNK3.js +1 -0
  119. package/dist/chunk-XQ2XGIBF.js +2086 -0
  120. package/dist/chunk-Y2GE5TSI.js +355 -0
  121. package/dist/chunk-YBUJCZ57.js +351 -0
  122. package/dist/chunk-YNCVSFGF.js +149 -0
  123. package/dist/chunk-YUPMXOGP.js +282 -0
  124. package/dist/chunk-YY6APYUM.js +49 -0
  125. package/dist/chunk-Z2IJUO45.js +691 -0
  126. package/dist/chunk-ZEHUCJHY.js +129 -0
  127. package/dist/chunk-ZYU2YOJ6.js +1496 -0
  128. package/dist/chunk-ZZ4V3WIZ.js +163 -0
  129. package/dist/coordination/agents/index.js +145 -6260
  130. package/dist/coordination/index.js +365 -34323
  131. package/dist/coordination/mailbox-project-server.js +48 -3220
  132. package/dist/coordination/mailbox-types.d.ts +13 -1
  133. package/dist/coordination/provider-status-tracker.d.ts +4 -0
  134. package/dist/coordination/sqlite-mailbox.d.ts +2 -1
  135. package/dist/core/agent.d.ts +14 -1
  136. package/dist/core/index.js +267 -12479
  137. package/dist/core/model-ref.js +5 -23
  138. package/dist/core/provider-runner.d.ts +36 -1
  139. package/dist/design/index.js +50 -1087
  140. package/dist/execution/index.d.ts +1 -1
  141. package/dist/execution/index.js +1599 -21887
  142. package/dist/execution/prompt-enhancer.js +16 -535
  143. package/dist/execution/retry-policy.d.ts +31 -1
  144. package/dist/extension/index.js +7 -311
  145. package/dist/goal/index.js +33 -3435
  146. package/dist/hooks/index.js +14 -1138
  147. package/dist/hq/index.js +112 -5139
  148. package/dist/hq/protocol.js +21 -668
  149. package/dist/index.js +1410 -92655
  150. package/dist/infrastructure/index.js +64 -4811
  151. package/dist/kernel/events/provider-events.d.ts +15 -0
  152. package/dist/kernel/events/wrongtrace-events.d.ts +26 -0
  153. package/dist/kernel/events.d.ts +16 -7
  154. package/dist/kernel/index.js +14 -992
  155. package/dist/models/index.js +40 -1117
  156. package/dist/notifications/index.js +3 -108
  157. package/dist/observability/index.js +17 -279
  158. package/dist/plugin/index.js +584 -14835
  159. package/dist/prompts/index.js +14 -948
  160. package/dist/registry/index.js +9 -822
  161. package/dist/registry-R23UBE7H.js +14 -0
  162. package/dist/replay/index.js +6 -84
  163. package/dist/review-finding-store-DKAV3AS6.js +21 -0
  164. package/dist/review-report-store-OWY3EC3N.js +19 -0
  165. package/dist/security/index.js +114 -2202
  166. package/dist/session-catalog/index.js +36 -2103
  167. package/dist/session-catalog/project-server.js +42 -1435
  168. package/dist/skills/index.js +35 -1578
  169. package/dist/storage/index.js +182 -15600
  170. package/dist/tasking/index.js +10 -676
  171. package/dist/tools/index.js +52 -9589
  172. package/dist/types/config/autonomy.d.ts +5 -0
  173. package/dist/types/config/tools.d.ts +2 -2
  174. package/dist/types/config/ui.d.ts +1 -1
  175. package/dist/types/errors.d.ts +18 -0
  176. package/dist/types/index.js +121 -1341
  177. package/dist/types/provider-runner.d.ts +8 -0
  178. package/dist/types/session-markers.js +8 -144
  179. package/dist/utils/error.js +3 -4
  180. package/dist/utils/expect-defined.js +3 -9
  181. package/dist/utils/heap-watchdog.js +6 -706
  182. package/dist/utils/index.js +269 -5685
  183. package/dist/utils/sage-output-block.js +5 -42
  184. package/dist/wiring/proxy-rewrite.d.ts +92 -4
  185. package/dist/wiring/proxy-rewrite.js +20 -61
  186. package/dist/worktree/index.js +6 -887
  187. package/package.json +4 -4
@@ -0,0 +1,225 @@
1
+ import {
2
+ AGENTS_BY_PHASE,
3
+ AGENT_CATALOG
4
+ } from "./chunk-FHAMQS7Q.js";
5
+ import {
6
+ fallbackProfileChain
7
+ } from "./chunk-H72H4XDU.js";
8
+ import {
9
+ parseModelRef
10
+ } from "./chunk-RJIZEJ42.js";
11
+
12
+ // src/coordination/model-matrix.ts
13
+ var MATRIX_PHASE_KEYS = Object.keys(AGENTS_BY_PHASE);
14
+ var ROLE_TO_PHASE = (() => {
15
+ const map = {};
16
+ for (const [phase, defs] of Object.entries(AGENTS_BY_PHASE)) {
17
+ for (const def of defs) {
18
+ const role = def.config.role;
19
+ if (role) map[role] = phase;
20
+ }
21
+ }
22
+ return map;
23
+ })();
24
+ function phaseForRole(role) {
25
+ return role ? ROLE_TO_PHASE[role] : void 0;
26
+ }
27
+ function resolveModelMatrixResolution(matrix, role) {
28
+ if (!matrix) return void 0;
29
+ if (role && matrix[role]) return { entry: matrix[role], source: "role", key: role };
30
+ const phase = phaseForRole(role);
31
+ if (phase && matrix[phase]) return { entry: matrix[phase], source: "phase", key: phase };
32
+ if (matrix["*"]) return { entry: matrix["*"], source: "default", key: "*" };
33
+ return void 0;
34
+ }
35
+ function resolveModelMatrix(matrix, role) {
36
+ return resolveModelMatrixResolution(matrix, role)?.entry;
37
+ }
38
+ function resolveModelTargetFromEntry(config, entry) {
39
+ if (!entry) return void 0;
40
+ if (entry.model) {
41
+ return {
42
+ provider: entry.provider,
43
+ model: entry.model,
44
+ modelRuntime: entry.modelRuntime,
45
+ fallbackProfile: entry.fallbackProfile,
46
+ fallbackModels: fallbackProfileChain(config, entry.fallbackProfile)
47
+ };
48
+ }
49
+ const chain = fallbackProfileChain(config, entry.fallbackProfile);
50
+ const first = chain[0];
51
+ if (!first) {
52
+ return entry.modelRuntime ? { modelRuntime: entry.modelRuntime } : void 0;
53
+ }
54
+ const parsed = parseModelRef(first);
55
+ return {
56
+ provider: parsed.provider,
57
+ model: parsed.model,
58
+ modelRuntime: entry.modelRuntime,
59
+ fallbackProfile: entry.fallbackProfile,
60
+ fallbackModels: chain.slice(1)
61
+ };
62
+ }
63
+ function roleNeedsIndependentReviewModel(role) {
64
+ if (!role) return false;
65
+ return role === "reviewer" || phaseForRole(role) === "review";
66
+ }
67
+ function resolveSubagentModelTarget(config, role, opts = {}) {
68
+ const resolution = resolveModelMatrixResolution(config.modelMatrix, role);
69
+ const matrixTarget = resolveModelTargetFromEntry(config, resolution?.entry);
70
+ const implementationTarget = opts.implementationTarget ?? resolveImplementationModelTarget(config);
71
+ const isAvailable = (providerId, model) => {
72
+ if (!opts.statusTracker) return true;
73
+ if (!providerId || !model) return true;
74
+ return opts.statusTracker.isAvailable(providerId, model);
75
+ };
76
+ const matrixEffective = materializeTarget(config, matrixTarget);
77
+ const matrixIsAvailable = !matrixEffective || isAvailable(matrixEffective.provider, matrixEffective.model);
78
+ if (!roleNeedsIndependentReviewModel(role)) {
79
+ if (!matrixTarget) return void 0;
80
+ if (!matrixIsAvailable) return void 0;
81
+ return {
82
+ ...matrixTarget,
83
+ source: "matrix",
84
+ matrixSource: resolution?.source
85
+ };
86
+ }
87
+ const matrixRef = materializeTarget(config, matrixTarget);
88
+ if (resolution?.source === "role" || resolution?.source === "phase") {
89
+ if (!matrixTarget) return void 0;
90
+ if (!matrixIsAvailable) return void 0;
91
+ return {
92
+ ...matrixTarget,
93
+ source: "matrix",
94
+ matrixSource: resolution.source
95
+ };
96
+ }
97
+ if (matrixRef && !sameModelReference(matrixRef, implementationTarget)) {
98
+ if (!matrixIsAvailable) return void 0;
99
+ return {
100
+ ...matrixTarget ?? {},
101
+ source: "matrix",
102
+ matrixSource: resolution?.source
103
+ };
104
+ }
105
+ const diverse = chooseDiverseModelTargetWithTracker(
106
+ config,
107
+ implementationTarget,
108
+ opts.statusTracker
109
+ );
110
+ if (diverse) {
111
+ return {
112
+ provider: diverse.provider,
113
+ model: diverse.model,
114
+ modelRuntime: matrixTarget?.modelRuntime,
115
+ fallbackModels: matrixTarget?.fallbackModels,
116
+ fallbackProfile: matrixTarget?.fallbackProfile,
117
+ source: "diversity",
118
+ matrixSource: resolution?.source,
119
+ diversified: true
120
+ };
121
+ }
122
+ if (!matrixTarget) return void 0;
123
+ if (!matrixIsAvailable) return void 0;
124
+ return {
125
+ ...matrixTarget,
126
+ source: "matrix",
127
+ matrixSource: resolution?.source
128
+ };
129
+ }
130
+ function resolveImplementationModelTarget(config) {
131
+ const target = resolveModelTargetFromEntry(
132
+ config,
133
+ resolveModelMatrix(config.modelMatrix, "executor")
134
+ );
135
+ return materializeTarget(config, target) ?? {
136
+ provider: config.provider,
137
+ model: config.model
138
+ };
139
+ }
140
+ function sameModelReference(a, b) {
141
+ if (!a?.model || !b?.model) return false;
142
+ const providerA = a.provider ?? "";
143
+ const providerB = b.provider ?? "";
144
+ return providerA === providerB && a.model === b.model;
145
+ }
146
+ function materializeTarget(config, target) {
147
+ if (!target?.model) return void 0;
148
+ return {
149
+ provider: target.provider ?? config.provider,
150
+ model: target.model
151
+ };
152
+ }
153
+ function chooseDiverseModelTarget(config, avoid) {
154
+ const candidates = collectConfiguredModelTargets(config).filter(
155
+ (candidate) => !sameModelReference(candidate, avoid)
156
+ );
157
+ candidates.sort((a, b) => modelDiversityScore(b, avoid) - modelDiversityScore(a, avoid));
158
+ return candidates[0];
159
+ }
160
+ function chooseDiverseModelTargetWithTracker(config, avoid, tracker) {
161
+ if (!tracker) return chooseDiverseModelTarget(config, avoid);
162
+ const ranked = collectConfiguredModelTargets(config).filter((candidate) => !sameModelReference(candidate, avoid)).sort((a, b) => modelDiversityScore(b, avoid) - modelDiversityScore(a, avoid));
163
+ for (const candidate of ranked) {
164
+ if (tracker.isAvailable(candidate.provider, candidate.model)) return candidate;
165
+ }
166
+ return void 0;
167
+ }
168
+ function collectConfiguredModelTargets(config) {
169
+ const seen = /* @__PURE__ */ new Set();
170
+ const out = [];
171
+ const add = (provider, model) => {
172
+ if (!provider || !model) return;
173
+ const key = `${provider}\0${model}`;
174
+ if (seen.has(key)) return;
175
+ seen.add(key);
176
+ out.push({ provider, model });
177
+ };
178
+ add(config.provider, config.model);
179
+ for (const [providerId, provider] of Object.entries(config.providers ?? {})) {
180
+ if (!isProviderAvailable(providerId, provider, config.provider)) continue;
181
+ for (const model of provider.models ?? []) add(providerId, model);
182
+ for (const model of Object.keys(provider.customModels ?? {})) add(providerId, model);
183
+ }
184
+ for (const model of Object.keys(config.models ?? {})) add(config.provider, model);
185
+ return out;
186
+ }
187
+ function isProviderAvailable(providerId, provider, leaderProvider) {
188
+ if (providerId === leaderProvider) return true;
189
+ if (typeof provider.apiKey === "string" && provider.apiKey.length > 0) return true;
190
+ if (Array.isArray(provider.apiKeys) && provider.apiKeys.some((key) => key?.apiKey)) return true;
191
+ if (typeof provider.baseUrl === "string" && provider.baseUrl.length > 0) return true;
192
+ return false;
193
+ }
194
+ function modelDiversityScore(candidate, avoid) {
195
+ let score = 0;
196
+ if (candidate.provider !== avoid.provider) score += 100;
197
+ if (candidate.model !== avoid.model) score += 20;
198
+ if (/opus|gpt-5|o3|o4|gemini.*pro|deepseek-r1/i.test(candidate.model)) score += 10;
199
+ if (/mini|haiku|flash/i.test(candidate.model)) score -= 5;
200
+ return score;
201
+ }
202
+ function matrixKeyKind(key) {
203
+ if (key === "*") return "default";
204
+ if (key in AGENT_CATALOG) return "role";
205
+ if (MATRIX_PHASE_KEYS.includes(key)) return "phase";
206
+ return "unknown";
207
+ }
208
+ function isValidMatrixKey(key) {
209
+ return matrixKeyKind(key) !== "unknown";
210
+ }
211
+
212
+ export {
213
+ MATRIX_PHASE_KEYS,
214
+ phaseForRole,
215
+ resolveModelMatrixResolution,
216
+ resolveModelMatrix,
217
+ resolveModelTargetFromEntry,
218
+ roleNeedsIndependentReviewModel,
219
+ resolveSubagentModelTarget,
220
+ resolveImplementationModelTarget,
221
+ sameModelReference,
222
+ matrixKeyKind,
223
+ isValidMatrixKey
224
+ };
225
+ //# sourceMappingURL=chunk-2BUUIMQB.js.map
@@ -0,0 +1,207 @@
1
+ // src/types/mode-prompts.ts
2
+ import { readFileSync, statSync } from "node:fs";
3
+ import * as path from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ function modePrompt(id) {
6
+ for (const dir of modePromptDirCandidates()) {
7
+ try {
8
+ return readFileSync(path.join(dir, `${id}.md`), "utf8").trimEnd();
9
+ } catch {
10
+ }
11
+ }
12
+ return "";
13
+ }
14
+ function modePromptDirCandidates() {
15
+ const here = path.dirname(fileURLToPath(import.meta.url));
16
+ const candidates = [
17
+ path.resolve(here, "../../instructions/modes"),
18
+ path.resolve(here, "../instructions/modes"),
19
+ path.resolve(here, "instructions/modes")
20
+ ];
21
+ return candidates.sort((a, b) => Number(!isDirectory(a)) - Number(!isDirectory(b)));
22
+ }
23
+ function isDirectory(candidate) {
24
+ try {
25
+ return statSync(candidate).isDirectory();
26
+ } catch {
27
+ return false;
28
+ }
29
+ }
30
+
31
+ // src/types/mode.ts
32
+ var DEFAULT_MODES = [
33
+ {
34
+ id: "default",
35
+ name: "Default",
36
+ description: "Balanced general-purpose mode; use when no special token/coverage trade-off is needed",
37
+ prompt: "",
38
+ tags: ["general", "balanced"]
39
+ },
40
+ {
41
+ id: "brief",
42
+ name: "Brief",
43
+ description: "Ultra-compact responses for low-context, high-speed work",
44
+ prompt: modePrompt("brief"),
45
+ tags: ["lite", "fast", "concise", "token-saving"],
46
+ toolPreferences: ["read", "edit", "bash"],
47
+ suggestedSkills: []
48
+ },
49
+ {
50
+ id: "review-lite",
51
+ name: "Review Lite",
52
+ description: "Token-saving code review: changed files only, top correctness/security risks",
53
+ prompt: modePrompt("review-lite"),
54
+ tags: ["lite", "review", "quality", "token-saving"],
55
+ toolPreferences: ["git", "diff", "read", "grep"],
56
+ suggestedSkills: ["bug-hunter", "typescript-strict"]
57
+ },
58
+ {
59
+ id: "audit-lite",
60
+ name: "Audit Lite",
61
+ description: "Token-saving security triage for a small diff or named file",
62
+ prompt: modePrompt("audit-lite"),
63
+ tags: ["lite", "security", "audit", "token-saving"],
64
+ toolPreferences: ["grep", "read", "git"],
65
+ suggestedSkills: ["security-scanner"]
66
+ },
67
+ {
68
+ id: "plan-lite",
69
+ name: "Plan Lite",
70
+ description: "Token-saving planning: 3-6 actionable steps, minimal design debate",
71
+ prompt: modePrompt("plan-lite"),
72
+ tags: ["lite", "planning", "architecture", "token-saving"],
73
+ toolPreferences: ["tree", "glob", "read", "grep"],
74
+ suggestedSkills: ["refactor-planner"]
75
+ },
76
+ {
77
+ id: "debug-lite",
78
+ name: "Debug Lite",
79
+ description: "Token-saving bug triage: one hypothesis, nearest evidence, narrow check",
80
+ prompt: modePrompt("debug-lite"),
81
+ tags: ["lite", "debug", "triage", "token-saving"],
82
+ toolPreferences: ["read", "grep", "test", "logs"],
83
+ suggestedSkills: ["bug-hunter"]
84
+ },
85
+ {
86
+ id: "test-lite",
87
+ name: "Test Lite",
88
+ description: "Token-saving tests: one focused regression or narrow verification target",
89
+ prompt: modePrompt("test-lite"),
90
+ tags: ["lite", "testing", "qa", "token-saving"],
91
+ toolPreferences: ["test", "read", "grep"],
92
+ suggestedSkills: ["testing"]
93
+ },
94
+ {
95
+ id: "refactor-lite",
96
+ name: "Refactor Lite",
97
+ description: "Token-saving cleanup: small scoped behavior-preserving changes",
98
+ prompt: modePrompt("refactor-lite"),
99
+ tags: ["lite", "refactor", "token-saving"],
100
+ toolPreferences: ["read", "edit", "test"],
101
+ suggestedSkills: ["typescript-strict"]
102
+ },
103
+ {
104
+ id: "research-lite",
105
+ name: "Research Lite",
106
+ description: "Token-saving web research: one search, one authoritative fetch, short answer",
107
+ prompt: modePrompt("research-lite"),
108
+ tags: ["lite", "research", "web", "token-saving"],
109
+ toolPreferences: ["search", "fetch"],
110
+ suggestedSkills: ["research-web"]
111
+ },
112
+ {
113
+ id: "code-reviewer",
114
+ name: "Review Deep",
115
+ description: "Comprehensive code review across contracts, edge cases, lifecycle, errors, concurrency",
116
+ prompt: modePrompt("code-reviewer"),
117
+ tags: ["deep", "review", "quality", "security"],
118
+ toolPreferences: ["read", "grep", "git", "diff", "test"],
119
+ suggestedSkills: ["bug-hunter", "security-scanner", "typescript-strict", "testing"]
120
+ },
121
+ {
122
+ id: "code-auditor",
123
+ name: "Audit Deep",
124
+ description: "Comprehensive security audit with category coverage and exploitability notes",
125
+ prompt: modePrompt("code-auditor"),
126
+ tags: ["deep", "security", "audit", "compliance"],
127
+ toolPreferences: ["grep", "read", "audit", "bash"],
128
+ suggestedSkills: ["security-scanner", "bug-hunter", "audit-log"]
129
+ },
130
+ {
131
+ id: "architect",
132
+ name: "Architecture Deep",
133
+ description: "Comprehensive architecture and cross-module contract analysis",
134
+ prompt: modePrompt("architect"),
135
+ tags: ["deep", "architecture", "design", "scalability"],
136
+ toolPreferences: ["read", "glob", "tree", "diff"],
137
+ suggestedSkills: ["api-design", "refactor-planner", "node-modern", "docker-deploy"]
138
+ },
139
+ {
140
+ id: "debugger",
141
+ name: "Debug Deep",
142
+ description: "Comprehensive root-cause analysis with traces, logs, assumptions, and verification",
143
+ prompt: modePrompt("debugger"),
144
+ tags: ["deep", "debug", "investigation", "error-resolution"],
145
+ toolPreferences: ["read", "grep", "bash", "logs", "test"],
146
+ suggestedSkills: ["bug-hunter", "audit-log", "observability"]
147
+ },
148
+ {
149
+ id: "tester",
150
+ name: "Test Deep",
151
+ description: "Comprehensive QA mode for coverage, boundaries, isolation, and integration gaps",
152
+ prompt: modePrompt("tester"),
153
+ tags: ["deep", "testing", "qa", "quality"],
154
+ toolPreferences: ["read", "grep", "test", "bash"],
155
+ suggestedSkills: ["testing", "bug-hunter", "typescript-strict"]
156
+ },
157
+ {
158
+ id: "devops",
159
+ name: "DevOps Deep",
160
+ description: "Comprehensive infrastructure, deployment, observability, and operations review",
161
+ prompt: modePrompt("devops"),
162
+ tags: ["deep", "devops", "infrastructure", "operations"],
163
+ toolPreferences: ["read", "bash", "grep", "logs", "git"],
164
+ suggestedSkills: ["docker-deploy", "observability", "security-scanner"]
165
+ },
166
+ {
167
+ id: "refactorer",
168
+ name: "Refactor Deep",
169
+ description: "Comprehensive modernization/refactor mode with contracts and verification discipline",
170
+ prompt: modePrompt("refactorer"),
171
+ tags: ["deep", "refactor", "modernization", "improvement"],
172
+ toolPreferences: ["read", "edit", "test", "git", "grep"],
173
+ suggestedSkills: ["refactor-planner", "typescript-strict", "node-modern", "testing"]
174
+ },
175
+ {
176
+ id: "ui-design",
177
+ name: "UI Design Deep",
178
+ description: "Comprehensive design-first frontend/mobile UI work with kit, tokens, and accessibility",
179
+ prompt: modePrompt("ui-design"),
180
+ tags: ["deep", "ui", "frontend", "mobile", "design"],
181
+ toolPreferences: ["design", "write", "edit", "read", "scaffold"],
182
+ suggestedSkills: ["react-modern"]
183
+ },
184
+ {
185
+ id: "teach",
186
+ name: "Teach Deep",
187
+ description: "Mentor mode with explanations, mental models, trade-offs, and takeaways",
188
+ prompt: modePrompt("teach"),
189
+ tags: ["deep", "teaching", "mentor", "learning"],
190
+ toolPreferences: ["read", "edit", "explain"],
191
+ suggestedSkills: ["prompt-engineering", "skill-creator", "node-modern", "typescript-strict"]
192
+ },
193
+ {
194
+ id: "research-web",
195
+ name: "Research Deep",
196
+ description: "Comprehensive current-data research with cross-checking and reusable findings",
197
+ prompt: modePrompt("research-web"),
198
+ tags: ["deep", "research", "web", "current-data", "up-to-date"],
199
+ toolPreferences: ["search", "fetch", "context_manager"],
200
+ suggestedSkills: ["research-web", "tech-stack", "node-modern", "security-scanner", "react-modern"]
201
+ }
202
+ ];
203
+
204
+ export {
205
+ DEFAULT_MODES
206
+ };
207
+ //# sourceMappingURL=chunk-2FK4WTFF.js.map