@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.
- package/dist/chronicle/index.js +84 -6391
- package/dist/chronicle/project-server.js +84 -4868
- package/dist/chunk-2BUUIMQB.js +225 -0
- package/dist/chunk-2FK4WTFF.js +207 -0
- package/dist/chunk-2FQL4PDC.js +292 -0
- package/dist/chunk-2KKODIQU.js +2256 -0
- package/dist/chunk-2YU4WVBW.js +134 -0
- package/dist/chunk-3E244UDA.js +356 -0
- package/dist/chunk-3XPVB7BA.js +135 -0
- package/dist/chunk-4LJJYBAU.js +388 -0
- package/dist/chunk-4VWO3ZXL.js +342 -0
- package/dist/chunk-4XV6IR37.js +187 -0
- package/dist/chunk-4ZHTKJHM.js +183 -0
- package/dist/chunk-52RTVH4M.js +361 -0
- package/dist/chunk-57GEWK5X.js +26 -0
- package/dist/chunk-5DSMEVA4.js +931 -0
- package/dist/chunk-5RP3QTRL.js +1223 -0
- package/dist/chunk-5S437PRC.js +50 -0
- package/dist/chunk-5XDUGTKN.js +511 -0
- package/dist/chunk-62V2AFVG.js +422 -0
- package/dist/chunk-65RDIOR2.js +2470 -0
- package/dist/chunk-6AKOTGLM.js +597 -0
- package/dist/chunk-7ZHZE5EO.js +28 -0
- package/dist/chunk-A455ATZB.js +140 -0
- package/dist/chunk-AD7ZFZCS.js +46 -0
- package/dist/chunk-AI4LLQ2U.js +856 -0
- package/dist/chunk-ASX6AW36.js +789 -0
- package/dist/chunk-AT4V4XGI.js +3522 -0
- package/dist/chunk-AWNQ6ED6.js +311 -0
- package/dist/chunk-B4AMLZPB.js +9 -0
- package/dist/chunk-BAKVJLEV.js +417 -0
- package/dist/chunk-BJHVULHO.js +55 -0
- package/dist/chunk-CB2HFKTP.js +9 -0
- package/dist/chunk-CE4ZOCOI.js +1640 -0
- package/dist/chunk-CQQL4ZOQ.js +151 -0
- package/dist/chunk-DEIQMBD2.js +65 -0
- package/dist/chunk-E6I5RXVK.js +58 -0
- package/dist/chunk-EFEHDQGY.js +1589 -0
- package/dist/chunk-EODDVJBM.js +82 -0
- package/dist/chunk-EPC3GZD4.js +308 -0
- package/dist/chunk-FAYRX2AD.js +13 -0
- package/dist/chunk-FFSX2QDQ.js +362 -0
- package/dist/chunk-FHAMQS7Q.js +5856 -0
- package/dist/chunk-FIV4IJL7.js +2263 -0
- package/dist/chunk-FNXVT7HF.js +52 -0
- package/dist/chunk-FSWCWSTS.js +395 -0
- package/dist/chunk-FW5LDDMJ.js +16464 -0
- package/dist/chunk-FXQLIX3K.js +211 -0
- package/dist/chunk-G5AAKEEZ.js +228 -0
- package/dist/chunk-G5S3S5ZN.js +38 -0
- package/dist/chunk-GAZEWQEZ.js +231 -0
- package/dist/chunk-GFJOMSHG.js +125 -0
- package/dist/chunk-GFXZTHNI.js +158 -0
- package/dist/chunk-GM54GJBU.js +960 -0
- package/dist/chunk-GPQ3NJPR.js +900 -0
- package/dist/chunk-GTCU6DZ3.js +1 -0
- package/dist/chunk-H5E77KUJ.js +15 -0
- package/dist/chunk-H72H4XDU.js +1023 -0
- package/dist/chunk-HA4ZYA6T.js +178 -0
- package/dist/chunk-I45KAW2N.js +5020 -0
- package/dist/chunk-IQ35HMQL.js +1396 -0
- package/dist/chunk-IYFBFX34.js +86 -0
- package/dist/chunk-JJPMWPB6.js +109 -0
- package/dist/chunk-JTHKOYWU.js +663 -0
- package/dist/chunk-JVGPR3TS.js +365 -0
- package/dist/chunk-JVKB2TBL.js +48 -0
- package/dist/chunk-JX7VBZDK.js +31 -0
- package/dist/chunk-K3G6JBUC.js +5232 -0
- package/dist/chunk-K4YUNKU7.js +589 -0
- package/dist/chunk-KBZGE6LN.js +710 -0
- package/dist/chunk-KDQJCT2J.js +45 -0
- package/dist/chunk-KI4L2DUL.js +560 -0
- package/dist/chunk-KJ2ZTQSL.js +47 -0
- package/dist/chunk-KSJ5UTP7.js +154 -0
- package/dist/chunk-LHOA5DWA.js +28 -0
- package/dist/chunk-LX5QWLBL.js +27 -0
- package/dist/chunk-LZDDLNCZ.js +279 -0
- package/dist/chunk-M2WF6AXG.js +115 -0
- package/dist/chunk-M7BS2K6U.js +1 -0
- package/dist/chunk-NDBIPFNY.js +102 -0
- package/dist/chunk-NEMIWEXC.js +1199 -0
- package/dist/chunk-NFAYHPRH.js +323 -0
- package/dist/chunk-O37BQ65S.js +21 -0
- package/dist/chunk-O74MJHXU.js +187 -0
- package/dist/chunk-OJZEX73F.js +112 -0
- package/dist/chunk-PAAWLLZX.js +74 -0
- package/dist/chunk-PFXFQQRT.js +339 -0
- package/dist/chunk-PFZO3C6H.js +14 -0
- package/dist/chunk-PHH7LD45.js +113 -0
- package/dist/chunk-QRTG4XTI.js +188 -0
- package/dist/chunk-QVOVMXJR.js +1351 -0
- package/dist/chunk-RCQYT2I4.js +757 -0
- package/dist/chunk-RD6DEE36.js +1178 -0
- package/dist/chunk-RJIZEJ42.js +30 -0
- package/dist/chunk-RPOA7IAE.js +150 -0
- package/dist/chunk-SN2DQRL6.js +1172 -0
- package/dist/chunk-SQJVFEBV.js +41 -0
- package/dist/chunk-SQP64RCS.js +5391 -0
- package/dist/chunk-SVT4RNTR.js +49 -0
- package/dist/chunk-SWUFN7XM.js +43 -0
- package/dist/chunk-SXMVYC5H.js +174 -0
- package/dist/chunk-SZ6AYUIZ.js +23 -0
- package/dist/chunk-T3KGZBU5.js +3171 -0
- package/dist/chunk-TBRL2RCC.js +9 -0
- package/dist/chunk-TRT2HRWZ.js +18 -0
- package/dist/chunk-TYW2GI5I.js +1077 -0
- package/dist/chunk-UIWONWVG.js +4959 -0
- package/dist/chunk-VB3H5WWB.js +151 -0
- package/dist/chunk-W4A6QA3D.js +258 -0
- package/dist/chunk-WBPVKEEE.js +227 -0
- package/dist/chunk-WEBMSQP2.js +123 -0
- package/dist/chunk-WOEZV3Q4.js +333 -0
- package/dist/chunk-WQQON3SV.js +473 -0
- package/dist/chunk-WQTOVMGV.js +119 -0
- package/dist/chunk-WZO23AWO.js +2779 -0
- package/dist/chunk-XBDP4QPW.js +7 -0
- package/dist/chunk-XEBHSJLT.js +103 -0
- package/dist/chunk-XQ2ECNK3.js +1 -0
- package/dist/chunk-XQ2XGIBF.js +2086 -0
- package/dist/chunk-Y2GE5TSI.js +355 -0
- package/dist/chunk-YBUJCZ57.js +351 -0
- package/dist/chunk-YNCVSFGF.js +149 -0
- package/dist/chunk-YUPMXOGP.js +282 -0
- package/dist/chunk-YY6APYUM.js +49 -0
- package/dist/chunk-Z2IJUO45.js +691 -0
- package/dist/chunk-ZEHUCJHY.js +129 -0
- package/dist/chunk-ZYU2YOJ6.js +1496 -0
- package/dist/chunk-ZZ4V3WIZ.js +163 -0
- package/dist/coordination/agents/index.js +145 -6260
- package/dist/coordination/index.js +365 -34324
- package/dist/coordination/mailbox-project-server.js +48 -3276
- package/dist/coordination/provider-status-tracker.d.ts +4 -0
- package/dist/core/agent.d.ts +14 -1
- package/dist/core/index.js +267 -12480
- package/dist/core/model-ref.js +5 -23
- package/dist/core/provider-runner.d.ts +36 -1
- package/dist/design/index.js +50 -1087
- package/dist/execution/index.d.ts +1 -1
- package/dist/execution/index.js +1599 -21888
- package/dist/execution/prompt-enhancer.js +16 -535
- package/dist/execution/retry-policy.d.ts +31 -1
- package/dist/extension/index.js +7 -311
- package/dist/goal/index.js +33 -3435
- package/dist/hooks/index.js +14 -1138
- package/dist/hq/index.js +112 -5139
- package/dist/hq/protocol.js +21 -668
- package/dist/index.js +1410 -92656
- package/dist/infrastructure/index.js +64 -4811
- package/dist/kernel/events/provider-events.d.ts +15 -0
- package/dist/kernel/index.js +14 -992
- package/dist/models/index.js +40 -1117
- package/dist/notifications/index.js +3 -108
- package/dist/observability/index.js +17 -279
- package/dist/plugin/index.js +584 -14835
- package/dist/prompts/index.js +14 -948
- package/dist/registry/index.js +9 -822
- package/dist/registry-R23UBE7H.js +14 -0
- package/dist/replay/index.js +6 -84
- package/dist/review-finding-store-DKAV3AS6.js +21 -0
- package/dist/review-report-store-OWY3EC3N.js +19 -0
- package/dist/security/index.js +114 -2202
- package/dist/session-catalog/index.js +36 -2103
- package/dist/session-catalog/project-server.js +42 -1435
- package/dist/skills/index.js +35 -1578
- package/dist/storage/index.js +182 -15600
- package/dist/tasking/index.js +10 -676
- package/dist/tools/index.js +52 -9590
- package/dist/types/config/autonomy.d.ts +5 -0
- package/dist/types/config/ui.d.ts +1 -1
- package/dist/types/errors.d.ts +18 -0
- package/dist/types/index.js +121 -1342
- package/dist/types/provider-runner.d.ts +8 -0
- package/dist/types/session-markers.js +8 -144
- package/dist/utils/error.js +3 -4
- package/dist/utils/expect-defined.js +3 -9
- package/dist/utils/heap-watchdog.js +6 -706
- package/dist/utils/index.js +269 -5685
- package/dist/utils/sage-output-block.js +5 -42
- package/dist/wiring/proxy-rewrite.d.ts +18 -0
- package/dist/wiring/proxy-rewrite.js +18 -121
- package/dist/worktree/index.js +6 -887
- 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
|