@wrongstack/core 0.313.0 → 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 (182) 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 -34324
  131. package/dist/coordination/mailbox-project-server.js +48 -3276
  132. package/dist/coordination/provider-status-tracker.d.ts +4 -0
  133. package/dist/core/agent.d.ts +14 -1
  134. package/dist/core/index.js +267 -12480
  135. package/dist/core/model-ref.js +5 -23
  136. package/dist/core/provider-runner.d.ts +36 -1
  137. package/dist/design/index.js +50 -1087
  138. package/dist/execution/index.d.ts +1 -1
  139. package/dist/execution/index.js +1599 -21888
  140. package/dist/execution/prompt-enhancer.js +16 -535
  141. package/dist/execution/retry-policy.d.ts +31 -1
  142. package/dist/extension/index.js +7 -311
  143. package/dist/goal/index.js +33 -3435
  144. package/dist/hooks/index.js +14 -1138
  145. package/dist/hq/index.js +112 -5139
  146. package/dist/hq/protocol.js +21 -668
  147. package/dist/index.js +1410 -92656
  148. package/dist/infrastructure/index.js +64 -4811
  149. package/dist/kernel/events/provider-events.d.ts +15 -0
  150. package/dist/kernel/index.js +14 -992
  151. package/dist/models/index.js +40 -1117
  152. package/dist/notifications/index.js +3 -108
  153. package/dist/observability/index.js +17 -279
  154. package/dist/plugin/index.js +584 -14835
  155. package/dist/prompts/index.js +14 -948
  156. package/dist/registry/index.js +9 -822
  157. package/dist/registry-R23UBE7H.js +14 -0
  158. package/dist/replay/index.js +6 -84
  159. package/dist/review-finding-store-DKAV3AS6.js +21 -0
  160. package/dist/review-report-store-OWY3EC3N.js +19 -0
  161. package/dist/security/index.js +114 -2202
  162. package/dist/session-catalog/index.js +36 -2103
  163. package/dist/session-catalog/project-server.js +42 -1435
  164. package/dist/skills/index.js +35 -1578
  165. package/dist/storage/index.js +182 -15600
  166. package/dist/tasking/index.js +10 -676
  167. package/dist/tools/index.js +52 -9590
  168. package/dist/types/config/autonomy.d.ts +5 -0
  169. package/dist/types/config/ui.d.ts +1 -1
  170. package/dist/types/errors.d.ts +18 -0
  171. package/dist/types/index.js +121 -1342
  172. package/dist/types/provider-runner.d.ts +8 -0
  173. package/dist/types/session-markers.js +8 -144
  174. package/dist/utils/error.js +3 -4
  175. package/dist/utils/expect-defined.js +3 -9
  176. package/dist/utils/heap-watchdog.js +6 -706
  177. package/dist/utils/index.js +269 -5685
  178. package/dist/utils/sage-output-block.js +5 -42
  179. package/dist/wiring/proxy-rewrite.d.ts +18 -0
  180. package/dist/wiring/proxy-rewrite.js +18 -121
  181. package/dist/worktree/index.js +6 -887
  182. 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