@tarquinen/opencode-dcp 2.2.7-beta0 → 2.2.9-beta0

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 (136) hide show
  1. package/README.md +61 -41
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +5 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/commands/context.d.ts +5 -2
  6. package/dist/lib/commands/context.d.ts.map +1 -1
  7. package/dist/lib/commands/context.js +11 -4
  8. package/dist/lib/commands/context.js.map +1 -1
  9. package/dist/lib/commands/decompress.d.ts +12 -0
  10. package/dist/lib/commands/decompress.d.ts.map +1 -0
  11. package/dist/lib/commands/decompress.js +159 -0
  12. package/dist/lib/commands/decompress.js.map +1 -0
  13. package/dist/lib/commands/help.d.ts.map +1 -1
  14. package/dist/lib/commands/help.js +5 -1
  15. package/dist/lib/commands/help.js.map +1 -1
  16. package/dist/lib/commands/manual.d.ts.map +1 -1
  17. package/dist/lib/commands/manual.js +7 -5
  18. package/dist/lib/commands/manual.js.map +1 -1
  19. package/dist/lib/commands/recompress.d.ts +12 -0
  20. package/dist/lib/commands/recompress.d.ts.map +1 -0
  21. package/dist/lib/commands/recompress.js +137 -0
  22. package/dist/lib/commands/recompress.js.map +1 -0
  23. package/dist/lib/commands/sweep.d.ts.map +1 -1
  24. package/dist/lib/commands/sweep.js +5 -5
  25. package/dist/lib/commands/sweep.js.map +1 -1
  26. package/dist/lib/config.d.ts +3 -0
  27. package/dist/lib/config.d.ts.map +1 -1
  28. package/dist/lib/config.js +34 -1
  29. package/dist/lib/config.js.map +1 -1
  30. package/dist/lib/hooks.d.ts +3 -2
  31. package/dist/lib/hooks.d.ts.map +1 -1
  32. package/dist/lib/hooks.js +24 -4
  33. package/dist/lib/hooks.js.map +1 -1
  34. package/dist/lib/logger.d.ts.map +1 -1
  35. package/dist/lib/logger.js +1 -1
  36. package/dist/lib/logger.js.map +1 -1
  37. package/dist/lib/message-ids.d.ts.map +1 -1
  38. package/dist/lib/message-ids.js +3 -5
  39. package/dist/lib/message-ids.js.map +1 -1
  40. package/dist/lib/messages/inject/inject.d.ts +2 -1
  41. package/dist/lib/messages/inject/inject.d.ts.map +1 -1
  42. package/dist/lib/messages/inject/inject.js +8 -8
  43. package/dist/lib/messages/inject/inject.js.map +1 -1
  44. package/dist/lib/messages/inject/subagent-results.d.ts.map +1 -1
  45. package/dist/lib/messages/inject/subagent-results.js +3 -2
  46. package/dist/lib/messages/inject/subagent-results.js.map +1 -1
  47. package/dist/lib/messages/inject/utils.d.ts +3 -1
  48. package/dist/lib/messages/inject/utils.d.ts.map +1 -1
  49. package/dist/lib/messages/inject/utils.js +18 -24
  50. package/dist/lib/messages/inject/utils.js.map +1 -1
  51. package/dist/lib/messages/prune.js +0 -7
  52. package/dist/lib/messages/prune.js.map +1 -1
  53. package/dist/lib/messages/sync.d.ts.map +1 -1
  54. package/dist/lib/messages/sync.js +8 -0
  55. package/dist/lib/messages/sync.js.map +1 -1
  56. package/dist/lib/messages/utils.d.ts +1 -18
  57. package/dist/lib/messages/utils.d.ts.map +1 -1
  58. package/dist/lib/messages/utils.js +8 -48
  59. package/dist/lib/messages/utils.js.map +1 -1
  60. package/dist/lib/prompts/compress.d.ts +1 -1
  61. package/dist/lib/prompts/compress.d.ts.map +1 -1
  62. package/dist/lib/prompts/compress.js +0 -13
  63. package/dist/lib/prompts/compress.js.map +1 -1
  64. package/dist/lib/prompts/context-limit-nudge.d.ts +2 -0
  65. package/dist/lib/prompts/context-limit-nudge.d.ts.map +1 -0
  66. package/dist/lib/prompts/context-limit-nudge.js +25 -0
  67. package/dist/lib/prompts/context-limit-nudge.js.map +1 -0
  68. package/dist/lib/prompts/index.d.ts +2 -1
  69. package/dist/lib/prompts/index.d.ts.map +1 -1
  70. package/dist/lib/prompts/index.js +24 -12
  71. package/dist/lib/prompts/index.js.map +1 -1
  72. package/dist/lib/prompts/internal-overlays.d.ts +5 -0
  73. package/dist/lib/prompts/internal-overlays.d.ts.map +1 -0
  74. package/dist/lib/prompts/internal-overlays.js +43 -0
  75. package/dist/lib/prompts/internal-overlays.js.map +1 -0
  76. package/dist/lib/prompts/store.d.ts +24 -0
  77. package/dist/lib/prompts/store.d.ts.map +1 -0
  78. package/dist/lib/prompts/store.js +365 -0
  79. package/dist/lib/prompts/store.js.map +1 -0
  80. package/dist/lib/prompts/{_codegen/system.generated.d.ts → system.d.ts} +2 -2
  81. package/dist/lib/prompts/system.d.ts.map +1 -0
  82. package/dist/lib/prompts/{_codegen/system.generated.js → system.js} +5 -24
  83. package/dist/lib/prompts/system.js.map +1 -0
  84. package/dist/lib/prompts/turn-nudge.d.ts +1 -2
  85. package/dist/lib/prompts/turn-nudge.d.ts.map +1 -1
  86. package/dist/lib/prompts/turn-nudge.js +6 -16
  87. package/dist/lib/prompts/turn-nudge.js.map +1 -1
  88. package/dist/lib/protected-patterns.d.ts +5 -0
  89. package/dist/lib/protected-patterns.d.ts.map +1 -0
  90. package/dist/lib/{protected-file-patterns.js → protected-patterns.js} +21 -10
  91. package/dist/lib/protected-patterns.js.map +1 -0
  92. package/dist/lib/state/state.d.ts +1 -1
  93. package/dist/lib/state/state.js +2 -2
  94. package/dist/lib/state/state.js.map +1 -1
  95. package/dist/lib/state/types.d.ts +3 -1
  96. package/dist/lib/state/types.d.ts.map +1 -1
  97. package/dist/lib/state/utils.d.ts.map +1 -1
  98. package/dist/lib/state/utils.js +5 -0
  99. package/dist/lib/state/utils.js.map +1 -1
  100. package/dist/lib/strategies/deduplication.d.ts.map +1 -1
  101. package/dist/lib/strategies/deduplication.js +3 -3
  102. package/dist/lib/strategies/deduplication.js.map +1 -1
  103. package/dist/lib/strategies/purge-errors.d.ts.map +1 -1
  104. package/dist/lib/strategies/purge-errors.js +3 -3
  105. package/dist/lib/strategies/purge-errors.js.map +1 -1
  106. package/dist/lib/strategies/supersede-writes.js +2 -2
  107. package/dist/lib/strategies/supersede-writes.js.map +1 -1
  108. package/dist/lib/tools/compress.d.ts.map +1 -1
  109. package/dist/lib/tools/compress.js +58 -26
  110. package/dist/lib/tools/compress.js.map +1 -1
  111. package/dist/lib/tools/types.d.ts +2 -0
  112. package/dist/lib/tools/types.d.ts.map +1 -1
  113. package/dist/lib/tools/{compress-utils.d.ts → utils.d.ts} +13 -2
  114. package/dist/lib/tools/utils.d.ts.map +1 -0
  115. package/dist/lib/tools/{compress-utils.js → utils.js} +108 -10
  116. package/dist/lib/tools/utils.js.map +1 -0
  117. package/dist/lib/ui/notification.d.ts +1 -1
  118. package/dist/lib/ui/notification.d.ts.map +1 -1
  119. package/dist/lib/ui/notification.js +20 -8
  120. package/dist/lib/ui/notification.js.map +1 -1
  121. package/dist/lib/ui/utils.d.ts +1 -1
  122. package/dist/lib/ui/utils.d.ts.map +1 -1
  123. package/dist/lib/ui/utils.js +20 -9
  124. package/dist/lib/ui/utils.js.map +1 -1
  125. package/package.json +2 -4
  126. package/dist/lib/prompts/_codegen/system.generated.d.ts.map +0 -1
  127. package/dist/lib/prompts/_codegen/system.generated.js.map +0 -1
  128. package/dist/lib/prompts/nudge.d.ts +0 -2
  129. package/dist/lib/prompts/nudge.d.ts.map +0 -1
  130. package/dist/lib/prompts/nudge.js +0 -25
  131. package/dist/lib/prompts/nudge.js.map +0 -1
  132. package/dist/lib/protected-file-patterns.d.ts +0 -12
  133. package/dist/lib/protected-file-patterns.d.ts.map +0 -1
  134. package/dist/lib/protected-file-patterns.js.map +0 -1
  135. package/dist/lib/tools/compress-utils.d.ts.map +0 -1
  136. package/dist/lib/tools/compress-utils.js.map +0 -1
@@ -0,0 +1,365 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, statSync } from "fs";
2
+ import { join, dirname } from "path";
3
+ import { homedir } from "os";
4
+ import { SYSTEM as SYSTEM_PROMPT } from "./system";
5
+ import { COMPRESS as COMPRESS_PROMPT } from "./compress";
6
+ import { CONTEXT_LIMIT_NUDGE } from "./context-limit-nudge";
7
+ import { TURN_NUDGE } from "./turn-nudge";
8
+ import { ITERATION_NUDGE } from "./iteration-nudge";
9
+ import { MANUAL_MODE_SYSTEM_OVERLAY, SUBAGENT_SYSTEM_OVERLAY } from "./internal-overlays";
10
+ const PROMPT_DEFINITIONS = [
11
+ {
12
+ key: "system",
13
+ fileName: "system.md",
14
+ label: "System",
15
+ description: "Core system-level DCP instruction block",
16
+ usage: "Injected into the model system prompt on every request",
17
+ runtimeField: "system",
18
+ },
19
+ {
20
+ key: "compress",
21
+ fileName: "compress.md",
22
+ label: "Compress",
23
+ description: "compress tool instructions and summary constraints",
24
+ usage: "Registered as the compress tool description",
25
+ runtimeField: "compress",
26
+ },
27
+ {
28
+ key: "context-limit-nudge",
29
+ fileName: "context-limit-nudge.md",
30
+ label: "Context Limit Nudge",
31
+ description: "High-priority nudge when context is over max threshold",
32
+ usage: "Injected when context usage is beyond configured max limits",
33
+ runtimeField: "contextLimitNudge",
34
+ instructionName: "context_buildup_warning",
35
+ },
36
+ {
37
+ key: "turn-nudge",
38
+ fileName: "turn-nudge.md",
39
+ label: "Turn Nudge",
40
+ description: "Nudge to compress closed ranges at turn boundaries",
41
+ usage: "Injected when context is between min and max limits at a new user turn",
42
+ runtimeField: "turnNudge",
43
+ instructionName: "turn_nudge",
44
+ },
45
+ {
46
+ key: "iteration-nudge",
47
+ fileName: "iteration-nudge.md",
48
+ label: "Iteration Nudge",
49
+ description: "Nudge after many iterations without user input",
50
+ usage: "Injected when iteration threshold is crossed",
51
+ runtimeField: "iterationNudge",
52
+ instructionName: "iteration_nudge",
53
+ },
54
+ ];
55
+ export const PROMPT_KEYS = [
56
+ "system",
57
+ "compress",
58
+ "context-limit-nudge",
59
+ "turn-nudge",
60
+ "iteration-nudge",
61
+ ];
62
+ const HTML_COMMENT_REGEX = /<!--[\s\S]*?-->/g;
63
+ const LEGACY_INLINE_COMMENT_LINE_REGEX = /^[ \t]*\/\/.*?\/\/[ \t]*$/gm;
64
+ const INSTRUCTION_TAG_REGEX = /^\s*<instruction\b[^>]*>[\s\S]*<\/instruction>\s*$/i;
65
+ const DEFAULTS_README_FILE = "README.md";
66
+ const BUNDLED_EDITABLE_PROMPTS = {
67
+ system: SYSTEM_PROMPT,
68
+ compress: COMPRESS_PROMPT,
69
+ contextLimitNudge: CONTEXT_LIMIT_NUDGE,
70
+ turnNudge: TURN_NUDGE,
71
+ iterationNudge: ITERATION_NUDGE,
72
+ };
73
+ const INTERNAL_PROMPT_OVERLAYS = {
74
+ manualOverlay: MANUAL_MODE_SYSTEM_OVERLAY,
75
+ subagentOverlay: SUBAGENT_SYSTEM_OVERLAY,
76
+ };
77
+ function createBundledRuntimePrompts() {
78
+ return {
79
+ system: BUNDLED_EDITABLE_PROMPTS.system,
80
+ compress: BUNDLED_EDITABLE_PROMPTS.compress,
81
+ contextLimitNudge: BUNDLED_EDITABLE_PROMPTS.contextLimitNudge,
82
+ turnNudge: BUNDLED_EDITABLE_PROMPTS.turnNudge,
83
+ iterationNudge: BUNDLED_EDITABLE_PROMPTS.iterationNudge,
84
+ manualOverlay: INTERNAL_PROMPT_OVERLAYS.manualOverlay,
85
+ subagentOverlay: INTERNAL_PROMPT_OVERLAYS.subagentOverlay,
86
+ };
87
+ }
88
+ function findOpencodeDir(startDir) {
89
+ let current = startDir;
90
+ while (current !== "/") {
91
+ const candidate = join(current, ".opencode");
92
+ if (existsSync(candidate)) {
93
+ try {
94
+ if (statSync(candidate).isDirectory()) {
95
+ return candidate;
96
+ }
97
+ }
98
+ catch {
99
+ // ignore inaccessible entries while walking upward
100
+ }
101
+ }
102
+ const parent = dirname(current);
103
+ if (parent === current) {
104
+ break;
105
+ }
106
+ current = parent;
107
+ }
108
+ return null;
109
+ }
110
+ function resolvePromptPaths(workingDirectory) {
111
+ const configHome = process.env.XDG_CONFIG_HOME || join(homedir(), ".config");
112
+ const globalRoot = join(configHome, "opencode", "dcp-prompts");
113
+ const defaultsDir = join(globalRoot, "defaults");
114
+ const globalOverridesDir = join(globalRoot, "overrides");
115
+ const configDirOverridesDir = process.env.OPENCODE_CONFIG_DIR
116
+ ? join(process.env.OPENCODE_CONFIG_DIR, "dcp-prompts", "overrides")
117
+ : null;
118
+ const opencodeDir = findOpencodeDir(workingDirectory);
119
+ const projectOverridesDir = opencodeDir ? join(opencodeDir, "dcp-prompts", "overrides") : null;
120
+ return {
121
+ defaultsDir,
122
+ globalOverridesDir,
123
+ configDirOverridesDir,
124
+ projectOverridesDir,
125
+ };
126
+ }
127
+ function stripConditionalTag(content, tagName) {
128
+ const regex = new RegExp(`<${tagName}>[\\s\\S]*?<\/${tagName}>`, "gi");
129
+ return content.replace(regex, "");
130
+ }
131
+ function hasTagPairMismatch(content, tagName) {
132
+ const openRegex = new RegExp(`<${tagName}\\b[^>]*>`, "i");
133
+ const closeRegex = new RegExp(`<\/${tagName}>`, "i");
134
+ return openRegex.test(content) !== closeRegex.test(content);
135
+ }
136
+ function unwrapTagIfWrapped(content, tagName) {
137
+ const regex = new RegExp(`^\\s*<${tagName}\\b[^>]*>\\s*([\\s\\S]*?)\\s*<\\/${tagName}>\\s*$`, "i");
138
+ const match = content.match(regex);
139
+ if (!match) {
140
+ return content.trim();
141
+ }
142
+ return match[1].trim();
143
+ }
144
+ function unwrapInstructionIfWrapped(content) {
145
+ const trimmed = content.trim();
146
+ if (!INSTRUCTION_TAG_REGEX.test(trimmed)) {
147
+ return trimmed;
148
+ }
149
+ return trimmed
150
+ .replace(/^\s*<instruction\b[^>]*>\s*/i, "")
151
+ .replace(/\s*<\/instruction>\s*$/i, "")
152
+ .trim();
153
+ }
154
+ function stripPromptComments(content) {
155
+ return content
156
+ .replace(/^\uFEFF/, "")
157
+ .replace(/\r\n?/g, "\n")
158
+ .replace(HTML_COMMENT_REGEX, "")
159
+ .replace(LEGACY_INLINE_COMMENT_LINE_REGEX, "");
160
+ }
161
+ function toEditablePromptText(definition, rawContent) {
162
+ let normalized = stripPromptComments(rawContent).trim();
163
+ if (!normalized) {
164
+ return "";
165
+ }
166
+ if (definition.key === "system") {
167
+ normalized = stripConditionalTag(normalized, "manual");
168
+ normalized = stripConditionalTag(normalized, "subagent");
169
+ if (hasTagPairMismatch(normalized, "system-reminder")) {
170
+ return "";
171
+ }
172
+ normalized = unwrapTagIfWrapped(normalized, "system-reminder");
173
+ if (hasTagPairMismatch(normalized, "instruction")) {
174
+ return "";
175
+ }
176
+ normalized = unwrapInstructionIfWrapped(normalized);
177
+ return normalized.trim();
178
+ }
179
+ if (definition.instructionName) {
180
+ if (hasTagPairMismatch(normalized, "instruction")) {
181
+ return "";
182
+ }
183
+ normalized = unwrapInstructionIfWrapped(normalized);
184
+ }
185
+ return normalized.trim();
186
+ }
187
+ function wrapRuntimePromptContent(definition, editableText) {
188
+ const trimmed = editableText.trim();
189
+ if (!trimmed) {
190
+ return "";
191
+ }
192
+ if (definition.key === "system") {
193
+ return `<system-reminder>\n<instruction name=compress_tool attention_level=high>\n${trimmed}\n</instruction>\n</system-reminder>`;
194
+ }
195
+ if (definition.instructionName) {
196
+ return `<instruction name=${definition.instructionName}>\n${trimmed}\n</instruction>`;
197
+ }
198
+ return trimmed;
199
+ }
200
+ function buildDefaultPromptFileContent(bundledEditableText) {
201
+ return `${bundledEditableText.trim()}\n`;
202
+ }
203
+ function buildDefaultsReadmeContent() {
204
+ const lines = [];
205
+ lines.push("# DCP Prompt Defaults");
206
+ lines.push("");
207
+ lines.push("This directory stores the DCP prompts.");
208
+ lines.push("Each prompt file here should contain plain text only (no XML wrappers).");
209
+ lines.push("");
210
+ lines.push("## Creating Overrides");
211
+ lines.push("");
212
+ lines.push("1. Copy a prompt file from this directory into an overrides directory using the same filename.");
213
+ lines.push("2. Edit the copied file using plain text.");
214
+ lines.push("3. Restart OpenCode.");
215
+ lines.push("");
216
+ lines.push("To reset an override, delete the matching file from your overrides directory.");
217
+ lines.push("");
218
+ lines.push("Do not edit the default prompt files directly, they are just for reference, only files in the overrides directory are used.");
219
+ lines.push("");
220
+ lines.push("Override precedence (highest first):");
221
+ lines.push("1. `.opencode/dcp-prompts/overrides/` (project)");
222
+ lines.push("2. `$OPENCODE_CONFIG_DIR/dcp-prompts/overrides/` (config dir)");
223
+ lines.push("3. `~/.config/opencode/dcp-prompts/overrides/` (global)");
224
+ lines.push("");
225
+ lines.push("## Prompt Files");
226
+ lines.push("");
227
+ for (const definition of PROMPT_DEFINITIONS) {
228
+ lines.push(`- \`${definition.fileName}\``);
229
+ lines.push(` - Purpose: ${definition.description}.`);
230
+ lines.push(` - Runtime use: ${definition.usage}.`);
231
+ }
232
+ return `${lines.join("\n")}\n`;
233
+ }
234
+ function readFileIfExists(filePath) {
235
+ if (!existsSync(filePath)) {
236
+ return null;
237
+ }
238
+ try {
239
+ return readFileSync(filePath, "utf-8");
240
+ }
241
+ catch {
242
+ return null;
243
+ }
244
+ }
245
+ export class PromptStore {
246
+ logger;
247
+ paths;
248
+ customPromptsEnabled;
249
+ runtimePrompts;
250
+ constructor(logger, workingDirectory, customPromptsEnabled = false) {
251
+ this.logger = logger;
252
+ this.paths = resolvePromptPaths(workingDirectory);
253
+ this.customPromptsEnabled = customPromptsEnabled;
254
+ this.runtimePrompts = createBundledRuntimePrompts();
255
+ if (this.customPromptsEnabled) {
256
+ this.ensureDefaultFiles();
257
+ }
258
+ this.reload();
259
+ }
260
+ getRuntimePrompts() {
261
+ return { ...this.runtimePrompts };
262
+ }
263
+ reload() {
264
+ const nextPrompts = createBundledRuntimePrompts();
265
+ if (!this.customPromptsEnabled) {
266
+ this.runtimePrompts = nextPrompts;
267
+ return;
268
+ }
269
+ for (const definition of PROMPT_DEFINITIONS) {
270
+ const bundledSource = BUNDLED_EDITABLE_PROMPTS[definition.runtimeField];
271
+ const bundledEditable = toEditablePromptText(definition, bundledSource);
272
+ const bundledRuntime = wrapRuntimePromptContent(definition, bundledEditable);
273
+ const fallbackValue = bundledRuntime || bundledSource.trim();
274
+ let effectiveValue = fallbackValue;
275
+ for (const candidate of this.getOverrideCandidates(definition.fileName)) {
276
+ const rawOverride = readFileIfExists(candidate.path);
277
+ if (rawOverride === null) {
278
+ continue;
279
+ }
280
+ const editableOverride = toEditablePromptText(definition, rawOverride);
281
+ if (!editableOverride) {
282
+ this.logger.warn("Prompt override is empty or invalid after normalization", {
283
+ key: definition.key,
284
+ path: candidate.path,
285
+ });
286
+ continue;
287
+ }
288
+ const wrappedOverride = wrapRuntimePromptContent(definition, editableOverride);
289
+ if (!wrappedOverride) {
290
+ this.logger.warn("Prompt override could not be wrapped for runtime", {
291
+ key: definition.key,
292
+ path: candidate.path,
293
+ });
294
+ continue;
295
+ }
296
+ effectiveValue = wrappedOverride;
297
+ break;
298
+ }
299
+ nextPrompts[definition.runtimeField] = effectiveValue;
300
+ }
301
+ this.runtimePrompts = nextPrompts;
302
+ }
303
+ getOverrideCandidates(fileName) {
304
+ const candidates = [];
305
+ if (this.paths.projectOverridesDir) {
306
+ candidates.push({
307
+ path: join(this.paths.projectOverridesDir, fileName),
308
+ });
309
+ }
310
+ if (this.paths.configDirOverridesDir) {
311
+ candidates.push({
312
+ path: join(this.paths.configDirOverridesDir, fileName),
313
+ });
314
+ }
315
+ candidates.push({
316
+ path: join(this.paths.globalOverridesDir, fileName),
317
+ });
318
+ return candidates;
319
+ }
320
+ ensureDefaultFiles() {
321
+ try {
322
+ mkdirSync(this.paths.defaultsDir, { recursive: true });
323
+ mkdirSync(this.paths.globalOverridesDir, { recursive: true });
324
+ }
325
+ catch {
326
+ this.logger.warn("Failed to initialize prompt directories", {
327
+ defaultsDir: this.paths.defaultsDir,
328
+ globalOverridesDir: this.paths.globalOverridesDir,
329
+ });
330
+ return;
331
+ }
332
+ for (const definition of PROMPT_DEFINITIONS) {
333
+ const bundledEditable = toEditablePromptText(definition, BUNDLED_EDITABLE_PROMPTS[definition.runtimeField]);
334
+ const managedContent = buildDefaultPromptFileContent(bundledEditable || BUNDLED_EDITABLE_PROMPTS[definition.runtimeField]);
335
+ const filePath = join(this.paths.defaultsDir, definition.fileName);
336
+ try {
337
+ const existing = readFileIfExists(filePath);
338
+ if (existing === managedContent) {
339
+ continue;
340
+ }
341
+ writeFileSync(filePath, managedContent, "utf-8");
342
+ }
343
+ catch {
344
+ this.logger.warn("Failed to write default prompt file", {
345
+ key: definition.key,
346
+ path: filePath,
347
+ });
348
+ }
349
+ }
350
+ const readmePath = join(this.paths.defaultsDir, DEFAULTS_README_FILE);
351
+ const readmeContent = buildDefaultsReadmeContent();
352
+ try {
353
+ const existing = readFileIfExists(readmePath);
354
+ if (existing !== readmeContent) {
355
+ writeFileSync(readmePath, readmeContent, "utf-8");
356
+ }
357
+ }
358
+ catch {
359
+ this.logger.warn("Failed to write defaults README", {
360
+ path: readmePath,
361
+ });
362
+ }
363
+ }
364
+ }
365
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../lib/prompts/store.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const SYSTEM = "<system-reminder>\n<instruction name=compress_tool attention_level=high>\nYou operate in a context-constrained environment. Manage context continuously to avoid buildup and preserve retrieval quality. Efficient context management is paramount for your agentic performance.\n\nThe ONLY tool you have for context management is `compress`. It replaces a contiguous portion of the conversation (inclusive) with a technical summary you produce.\n\nOPERATING STANCE\nPrefer short, closed, summary-safe ranges.\nWhen multiple independent stale ranges exist, prefer several short compressions (in parallel when possible) over one large-range compression.\n\nUse `compress` as steady housekeeping while you work.\n\nCADENCE, SIGNALS, AND LATENCY\n\n- No fixed threshold mandates compression\n- Prioritize closedness and independence over raw range size\n- Prefer smaller, regular compressions over infrequent massive compressions for better latency and summary quality\n- When multiple independent stale ranges are ready, batch compressions in parallel\n\nBOUNDARY MATCHING\n`compress` uses inclusive ID boundaries via `content.startId` and `content.endId`. IDs are injected in context as message refs (`mNNNN`) and compressed block refs (`bN`).\n\nEach message has an ID inside XML metadata tags like `<dcp-message-id>...</dcp-message-id>`.\nTreat these tags as boundary metadata only, not as tool result content.\n\nOnly choose IDs currently visible in context. Do not invent IDs.\n\nRESPECT THE CHRONOLOGY OF THE RANGE\n`content.startId` MUST refer to an item above/before `content.endId`\n`content.endId` MUST refer to an item below/after `content.startId`\nAlways provide boundaries via the tool schema fields `content.startId` and `content.endId`.\n\nTHE SUMMARY STANDARD\nYour summary MUST be technical and specific enough to preserve FULL understanding of what transpired, such that NO ambiguity remains about what asked, found, planned, done, or decided - yet noise free\n\nWhen compressing ranges that include user messages, preserve user intent faithfully. Do not reinterpret or redirect the request. Directly quote short user messages when that is the most reliable way to preserve exact meaning.\n\nPreserve key details: file paths, symbols, signatures, constraints, decisions, outcomes, commands, etc.. in order to produce a high fidelity, authoritative technical record\n\nDO NOT COMPRESS IF\n\n- raw context is still relevant and needed for edits or precise references\n- the task in the target range is still actively in progress\n\nEvaluate conversation signal-to-noise REGULARLY. Use `compress` deliberately with quality-first summaries. Prefer multiple short, independent range compressions before considering broader ranges, and prioritize ranges intelligently to maintain a high-signal context window that supports your agency\n\nIt is of your responsibility to keep a sharp, high-quality context window for optimal performance\n</instruction>\n\n<manual><instruction name=manual_mode policy_level=critical>\nManual mode is enabled. Do NOT use compress unless the user has explicitly triggered it through a manual marker.\n\nOnly use the compress tool after seeing `<compress triggered manually>` in the current user instruction context.\n\nAfter completing a manually triggered context-management action, STOP IMMEDIATELY. Do NOT continue with any task execution. End your response right after the tool use completes and wait for the next user input.\n</instruction></manual>\n\n<subagent><instruction name=subagent_prompt_safety policy_level=critical>\nYou are operating in a subagent environment.\n\nThe initial subagent instruction is imperative and must be followed exactly.\nIt is the only user message intentionally not assigned a message ID, and therefore is not eligible for compression.\nAll subsequent messages in the session will have IDs.\n</instruction></subagent>\n\n</system-reminder>\n";
2
- //# sourceMappingURL=system.generated.d.ts.map
1
+ export declare const SYSTEM = "<system-reminder>\n<instruction name=compress_tool attention_level=high>\nYou operate in a context-constrained environment. Manage context continuously to avoid buildup and preserve retrieval quality. Efficient context management is paramount for your agentic performance.\n\nThe ONLY tool you have for context management is `compress`. It replaces a contiguous portion of the conversation (inclusive) with a technical summary you produce.\n\nOPERATING STANCE\nPrefer short, closed, summary-safe ranges.\nWhen multiple independent stale ranges exist, prefer several short compressions (in parallel when possible) over one large-range compression.\n\nUse `compress` as steady housekeeping while you work.\n\nCADENCE, SIGNALS, AND LATENCY\n\n- No fixed threshold mandates compression\n- Prioritize closedness and independence over raw range size\n- Prefer smaller, regular compressions over infrequent massive compressions for better latency and summary quality\n- When multiple independent stale ranges are ready, batch compressions in parallel\n\nBOUNDARY MATCHING\n`compress` uses inclusive ID boundaries via `startId` and `endId`. IDs are injected in context as message refs (`mNNNN`) and compressed block refs (`bN`).\n\nEach message has an ID inside XML metadata tags like `<dcp-message-id>...</dcp-message-id>`.\nTreat these tags as boundary metadata only, not as tool result content.\n\nOnly choose IDs currently visible in context. Do not invent IDs.\n\nRESPECT THE CHRONOLOGY OF THE RANGE\n`startId` MUST refer to an item above/before `endId`\n`endId` MUST refer to an item below/after `startId`\nAlways provide boundaries via the tool schema fields `startId` and `endId`.\n\nTHE SUMMARY STANDARD\nYour summary MUST be technical and specific enough to preserve FULL understanding of what transpired, such that NO ambiguity remains about what asked, found, planned, done, or decided - yet noise free\n\nWhen compressing ranges that include user messages, preserve user intent faithfully. Do not reinterpret or redirect the request. Directly quote short user messages when that is the most reliable way to preserve exact meaning.\n\nPreserve key details: file paths, symbols, signatures, constraints, decisions, outcomes, commands, etc.. in order to produce a high fidelity, authoritative technical record\n\nDO NOT COMPRESS IF\n\n- raw context is still relevant and needed for edits or precise references\n- the task in the target range is still actively in progress\n\nEvaluate conversation signal-to-noise REGULARLY. Use `compress` deliberately with quality-first summaries. Prefer multiple short, independent range compressions before considering broader ranges, and prioritize ranges intelligently to maintain a high-signal context window that supports your agency\n\nIt is of your responsibility to keep a sharp, high-quality context window for optimal performance\n</instruction>\n\n</system-reminder>\n";
2
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../lib/prompts/system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,y2FAkDlB,CAAA"}
@@ -1,6 +1,3 @@
1
- // AUTO-GENERATED FILE - DO NOT EDIT
2
- // Generated from system.md by scripts/generate-prompts.ts
3
- // To modify, edit system.md and run `npm run generate:prompts`
4
1
  export const SYSTEM = `<system-reminder>
5
2
  <instruction name=compress_tool attention_level=high>
6
3
  You operate in a context-constrained environment. Manage context continuously to avoid buildup and preserve retrieval quality. Efficient context management is paramount for your agentic performance.
@@ -21,7 +18,7 @@ CADENCE, SIGNALS, AND LATENCY
21
18
  - When multiple independent stale ranges are ready, batch compressions in parallel
22
19
 
23
20
  BOUNDARY MATCHING
24
- \`compress\` uses inclusive ID boundaries via \`content.startId\` and \`content.endId\`. IDs are injected in context as message refs (\`mNNNN\`) and compressed block refs (\`bN\`).
21
+ \`compress\` uses inclusive ID boundaries via \`startId\` and \`endId\`. IDs are injected in context as message refs (\`mNNNN\`) and compressed block refs (\`bN\`).
25
22
 
26
23
  Each message has an ID inside XML metadata tags like \`<dcp-message-id>...</dcp-message-id>\`.
27
24
  Treat these tags as boundary metadata only, not as tool result content.
@@ -29,9 +26,9 @@ Treat these tags as boundary metadata only, not as tool result content.
29
26
  Only choose IDs currently visible in context. Do not invent IDs.
30
27
 
31
28
  RESPECT THE CHRONOLOGY OF THE RANGE
32
- \`content.startId\` MUST refer to an item above/before \`content.endId\`
33
- \`content.endId\` MUST refer to an item below/after \`content.startId\`
34
- Always provide boundaries via the tool schema fields \`content.startId\` and \`content.endId\`.
29
+ \`startId\` MUST refer to an item above/before \`endId\`
30
+ \`endId\` MUST refer to an item below/after \`startId\`
31
+ Always provide boundaries via the tool schema fields \`startId\` and \`endId\`.
35
32
 
36
33
  THE SUMMARY STANDARD
37
34
  Your summary MUST be technical and specific enough to preserve FULL understanding of what transpired, such that NO ambiguity remains about what asked, found, planned, done, or decided - yet noise free
@@ -50,22 +47,6 @@ Evaluate conversation signal-to-noise REGULARLY. Use \`compress\` deliberately w
50
47
  It is of your responsibility to keep a sharp, high-quality context window for optimal performance
51
48
  </instruction>
52
49
 
53
- <manual><instruction name=manual_mode policy_level=critical>
54
- Manual mode is enabled. Do NOT use compress unless the user has explicitly triggered it through a manual marker.
55
-
56
- Only use the compress tool after seeing \`<compress triggered manually>\` in the current user instruction context.
57
-
58
- After completing a manually triggered context-management action, STOP IMMEDIATELY. Do NOT continue with any task execution. End your response right after the tool use completes and wait for the next user input.
59
- </instruction></manual>
60
-
61
- <subagent><instruction name=subagent_prompt_safety policy_level=critical>
62
- You are operating in a subagent environment.
63
-
64
- The initial subagent instruction is imperative and must be followed exactly.
65
- It is the only user message intentionally not assigned a message ID, and therefore is not eligible for compression.
66
- All subsequent messages in the session will have IDs.
67
- </instruction></subagent>
68
-
69
50
  </system-reminder>
70
51
  `;
71
- //# sourceMappingURL=system.generated.js.map
52
+ //# sourceMappingURL=system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../../lib/prompts/system.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDrB,CAAA"}
@@ -1,3 +1,2 @@
1
- export declare const USER_TURN_NUDGE = "<instruction name=turn_nudge>\nReview the user request above against the work that just finished.\n\nIf this request shifts direction, use the compress tool on earlier ranges that are now less relevant.\nIf any range is cleanly closed and not needed to answer this request, compress it.\nIf you determine a compression of previous content makes sense, do so first before completing the request above.\n\nPrefer small, closed-range compressions over one broad compression.\nKeep active context needed for this request uncompressed.\n</instruction>\n";
2
- export declare const ASSISTANT_TURN_NUDGE = "<instruction name=turn_nudge>\nAgentic loop completed. Evaluate the just-finished portion against the next user message.\n\nAt this stage, prefer one or more small, closed-range compressions over one broad compression.\nThe goal is not to nuke current context. The goal is to filter identified noise and distill key information so context accumulation stays under control.\n\nIf a portion is closed and unlikely to be needed again, use the compress tool on it.\nIf a portion is still active or likely to be referenced immediately, keep it uncompressed for now.\n</instruction>\n";
1
+ export declare const TURN_NUDGE = "<instruction name=turn_nudge>\nEvaluate the conversation for compressible ranges.\n\nIf any range is cleanly closed and unlikely to be needed again, use the compress tool on it.\nIf direction has shifted, compress earlier ranges that are now less relevant.\n\nPrefer small, closed-range compressions over one broad compression.\nThe goal is to filter noise and distill key information so context accumulation stays under control.\nKeep active context uncompressed.\n</instruction>\n";
3
2
  //# sourceMappingURL=turn-nudge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"turn-nudge.d.ts","sourceRoot":"","sources":["../../../lib/prompts/turn-nudge.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,yiBAU3B,CAAA;AAED,eAAO,MAAM,oBAAoB,ukBAShC,CAAA"}
1
+ {"version":3,"file":"turn-nudge.d.ts","sourceRoot":"","sources":["../../../lib/prompts/turn-nudge.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,ueAUtB,CAAA"}
@@ -1,22 +1,12 @@
1
- export const USER_TURN_NUDGE = `<instruction name=turn_nudge>
2
- Review the user request above against the work that just finished.
1
+ export const TURN_NUDGE = `<instruction name=turn_nudge>
2
+ Evaluate the conversation for compressible ranges.
3
3
 
4
- If this request shifts direction, use the compress tool on earlier ranges that are now less relevant.
5
- If any range is cleanly closed and not needed to answer this request, compress it.
6
- If you determine a compression of previous content makes sense, do so first before completing the request above.
4
+ If any range is cleanly closed and unlikely to be needed again, use the compress tool on it.
5
+ If direction has shifted, compress earlier ranges that are now less relevant.
7
6
 
8
7
  Prefer small, closed-range compressions over one broad compression.
9
- Keep active context needed for this request uncompressed.
10
- </instruction>
11
- `;
12
- export const ASSISTANT_TURN_NUDGE = `<instruction name=turn_nudge>
13
- Agentic loop completed. Evaluate the just-finished portion against the next user message.
14
-
15
- At this stage, prefer one or more small, closed-range compressions over one broad compression.
16
- The goal is not to nuke current context. The goal is to filter identified noise and distill key information so context accumulation stays under control.
17
-
18
- If a portion is closed and unlikely to be needed again, use the compress tool on it.
19
- If a portion is still active or likely to be referenced immediately, keep it uncompressed for now.
8
+ The goal is to filter noise and distill key information so context accumulation stays under control.
9
+ Keep active context uncompressed.
20
10
  </instruction>
21
11
  `;
22
12
  //# sourceMappingURL=turn-nudge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"turn-nudge.js","sourceRoot":"","sources":["../../../lib/prompts/turn-nudge.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;CAU9B,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;CASnC,CAAA"}
1
+ {"version":3,"file":"turn-nudge.js","sourceRoot":"","sources":["../../../lib/prompts/turn-nudge.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;CAUzB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare function matchesGlob(inputPath: string, pattern: string): boolean;
2
+ export declare function getFilePathsFromParameters(tool: string, parameters: unknown): string[];
3
+ export declare function isFilePathProtected(filePaths: string[], patterns: string[]): boolean;
4
+ export declare function isToolNameProtected(toolName: string, patterns: string[]): boolean;
5
+ //# sourceMappingURL=protected-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-patterns.d.ts","sourceRoot":"","sources":["../../lib/protected-patterns.ts"],"names":[],"mappings":"AAQA,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAiDvE;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE,CAsCtF;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAKpF;AAID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAmBjF"}
@@ -4,14 +4,6 @@ function normalizePath(input) {
4
4
  function escapeRegExpChar(ch) {
5
5
  return /[\\.^$+{}()|\[\]]/.test(ch) ? `\\${ch}` : ch;
6
6
  }
7
- /**
8
- * Basic glob matching with support for `**`, `*`, and `?`.
9
- *
10
- * Notes:
11
- * - Matching is performed against the full (normalized) string.
12
- * - `*` and `?` do not match `/`.
13
- * - `**` matches across `/`.
14
- */
15
7
  export function matchesGlob(inputPath, pattern) {
16
8
  if (!pattern)
17
9
  return false;
@@ -86,11 +78,30 @@ export function getFilePathsFromParameters(tool, parameters) {
86
78
  // Return unique non-empty paths
87
79
  return [...new Set(paths)].filter((p) => p.length > 0);
88
80
  }
89
- export function isProtected(filePaths, patterns) {
81
+ export function isFilePathProtected(filePaths, patterns) {
90
82
  if (!filePaths || filePaths.length === 0)
91
83
  return false;
92
84
  if (!patterns || patterns.length === 0)
93
85
  return false;
94
86
  return filePaths.some((path) => patterns.some((pattern) => matchesGlob(path, pattern)));
95
87
  }
96
- //# sourceMappingURL=protected-file-patterns.js.map
88
+ const GLOB_CHARS = /[*?]/;
89
+ export function isToolNameProtected(toolName, patterns) {
90
+ if (!toolName || !patterns || patterns.length === 0)
91
+ return false;
92
+ const exactPatterns = new Set();
93
+ const globPatterns = [];
94
+ for (const pattern of patterns) {
95
+ if (GLOB_CHARS.test(pattern)) {
96
+ globPatterns.push(pattern);
97
+ }
98
+ else {
99
+ exactPatterns.add(pattern);
100
+ }
101
+ }
102
+ if (exactPatterns.has(toolName)) {
103
+ return true;
104
+ }
105
+ return globPatterns.some((pattern) => matchesGlob(toolName, pattern));
106
+ }
107
+ //# sourceMappingURL=protected-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-patterns.js","sourceRoot":"","sources":["../../lib/protected-patterns.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@ import type { Logger } from "../logger";
3
3
  export declare const checkSession: (client: any, state: SessionState, logger: Logger, messages: WithParts[], manualModeDefault: boolean) => Promise<void>;
4
4
  export declare function createSessionState(): SessionState;
5
5
  export declare function resetSessionState(state: SessionState): void;
6
- export declare function ensureSessionInitialized(client: any, state: SessionState, sessionId: string, logger: Logger, messages: WithParts[], manualModeDefault: boolean): Promise<void>;
6
+ export declare function ensureSessionInitialized(client: any, state: SessionState, sessionId: string, logger: Logger, messages: WithParts[], manualModeEnabled: boolean): Promise<void>;
7
7
  //# sourceMappingURL=state.d.ts.map
@@ -97,14 +97,14 @@ export function resetSessionState(state) {
97
97
  state.modelContextLimit = undefined;
98
98
  state.systemPromptTokens = undefined;
99
99
  }
100
- export async function ensureSessionInitialized(client, state, sessionId, logger, messages, manualModeDefault) {
100
+ export async function ensureSessionInitialized(client, state, sessionId, logger, messages, manualModeEnabled) {
101
101
  if (state.sessionId === sessionId) {
102
102
  return;
103
103
  }
104
104
  // logger.info("session ID = " + sessionId)
105
105
  // logger.info("Initializing session state", { sessionId: sessionId })
106
106
  resetSessionState(state);
107
- state.manualMode = manualModeDefault;
107
+ state.manualMode = manualModeEnabled ? "active" : false;
108
108
  state.sessionId = sessionId;
109
109
  const isSubAgent = await isSubAgentSession(client, sessionId);
110
110
  state.isSubAgent = isSubAgent;
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../lib/state/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../lib/state/state.ts"],"names":[],"mappings":"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"}