@p4r4d0xb0x/opencode-dcp 3.0.5 → 3.1.12

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 (217) hide show
  1. package/README.md +31 -26
  2. package/dist/index.d.ts +2 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +7909 -76
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/commands/compression-targets.d.ts +14 -0
  7. package/dist/lib/commands/compression-targets.d.ts.map +1 -0
  8. package/dist/lib/commands/context.d.ts.map +1 -1
  9. package/dist/lib/commands/decompress.d.ts.map +1 -1
  10. package/dist/lib/commands/index.d.ts +8 -0
  11. package/dist/lib/commands/index.d.ts.map +1 -0
  12. package/dist/lib/commands/manual.d.ts +1 -0
  13. package/dist/lib/commands/manual.d.ts.map +1 -1
  14. package/dist/lib/commands/recompress.d.ts.map +1 -1
  15. package/dist/lib/commands/stats.d.ts.map +1 -1
  16. package/dist/lib/commands/sweep.d.ts.map +1 -1
  17. package/dist/lib/compress/index.d.ts +4 -0
  18. package/dist/lib/compress/index.d.ts.map +1 -0
  19. package/dist/lib/compress/message-utils.d.ts +8 -0
  20. package/dist/lib/compress/message-utils.d.ts.map +1 -0
  21. package/dist/lib/compress/message.d.ts +4 -0
  22. package/dist/lib/compress/message.d.ts.map +1 -0
  23. package/dist/lib/compress/pipeline.d.ts +29 -0
  24. package/dist/lib/compress/pipeline.d.ts.map +1 -0
  25. package/dist/lib/compress/protected-content.d.ts +7 -0
  26. package/dist/lib/compress/protected-content.d.ts.map +1 -0
  27. package/dist/lib/compress/range-utils.d.ts +10 -0
  28. package/dist/lib/compress/range-utils.d.ts.map +1 -0
  29. package/dist/lib/compress/range.d.ts +4 -0
  30. package/dist/lib/compress/range.d.ts.map +1 -0
  31. package/dist/lib/compress/search.d.ts +11 -0
  32. package/dist/lib/compress/search.d.ts.map +1 -0
  33. package/dist/lib/compress/state.d.ts +9 -0
  34. package/dist/lib/compress/state.d.ts.map +1 -0
  35. package/dist/lib/compress/timing.d.ts +18 -0
  36. package/dist/lib/compress/timing.d.ts.map +1 -0
  37. package/dist/lib/compress/types.d.ts +94 -0
  38. package/dist/lib/compress/types.d.ts.map +1 -0
  39. package/dist/lib/{shared-utils.d.ts → compress-permission.d.ts} +2 -4
  40. package/dist/lib/compress-permission.d.ts.map +1 -0
  41. package/dist/lib/config.d.ts +7 -7
  42. package/dist/lib/config.d.ts.map +1 -1
  43. package/dist/lib/hooks.d.ts +4 -1
  44. package/dist/lib/hooks.d.ts.map +1 -1
  45. package/dist/lib/message-ids.d.ts +1 -1
  46. package/dist/lib/message-ids.d.ts.map +1 -1
  47. package/dist/lib/messages/index.d.ts +2 -0
  48. package/dist/lib/messages/index.d.ts.map +1 -1
  49. package/dist/lib/messages/inject/inject.d.ts +3 -2
  50. package/dist/lib/messages/inject/inject.d.ts.map +1 -1
  51. package/dist/lib/messages/inject/utils.d.ts +2 -3
  52. package/dist/lib/messages/inject/utils.d.ts.map +1 -1
  53. package/dist/lib/messages/priority.d.ts +13 -0
  54. package/dist/lib/messages/priority.d.ts.map +1 -0
  55. package/dist/lib/messages/prune.d.ts.map +1 -1
  56. package/dist/lib/messages/query.d.ts +7 -0
  57. package/dist/lib/messages/query.d.ts.map +1 -0
  58. package/dist/lib/messages/shape.d.ts +5 -0
  59. package/dist/lib/messages/shape.d.ts.map +1 -0
  60. package/dist/lib/messages/utils.d.ts +10 -4
  61. package/dist/lib/messages/utils.d.ts.map +1 -1
  62. package/dist/lib/prompts/compress-message.d.ts +2 -0
  63. package/dist/lib/prompts/compress-message.d.ts.map +1 -0
  64. package/dist/lib/prompts/compress-range.d.ts +2 -0
  65. package/dist/lib/prompts/compress-range.d.ts.map +1 -0
  66. package/dist/lib/prompts/context-limit-nudge.d.ts +1 -1
  67. package/dist/lib/prompts/context-limit-nudge.d.ts.map +1 -1
  68. package/dist/lib/prompts/extensions/nudge.d.ts +5 -0
  69. package/dist/lib/prompts/extensions/nudge.d.ts.map +1 -0
  70. package/dist/lib/prompts/extensions/system.d.ts +4 -0
  71. package/dist/lib/prompts/extensions/system.d.ts.map +1 -0
  72. package/dist/lib/prompts/extensions/tool.d.ts +3 -0
  73. package/dist/lib/prompts/extensions/tool.d.ts.map +1 -0
  74. package/dist/lib/prompts/index.d.ts +2 -1
  75. package/dist/lib/prompts/index.d.ts.map +1 -1
  76. package/dist/lib/prompts/iteration-nudge.d.ts +1 -1
  77. package/dist/lib/prompts/iteration-nudge.d.ts.map +1 -1
  78. package/dist/lib/prompts/store.d.ts +5 -4
  79. package/dist/lib/prompts/store.d.ts.map +1 -1
  80. package/dist/lib/prompts/system.d.ts +1 -1
  81. package/dist/lib/prompts/system.d.ts.map +1 -1
  82. package/dist/lib/prompts/turn-nudge.d.ts +1 -1
  83. package/dist/lib/prompts/turn-nudge.d.ts.map +1 -1
  84. package/dist/lib/state/index.d.ts +1 -0
  85. package/dist/lib/state/index.d.ts.map +1 -1
  86. package/dist/lib/state/persistence.d.ts +1 -0
  87. package/dist/lib/state/persistence.d.ts.map +1 -1
  88. package/dist/lib/state/state.d.ts.map +1 -1
  89. package/dist/lib/state/types.d.ts +10 -1
  90. package/dist/lib/state/types.d.ts.map +1 -1
  91. package/dist/lib/state/utils.d.ts +9 -5
  92. package/dist/lib/state/utils.d.ts.map +1 -1
  93. package/dist/lib/strategies/index.d.ts +0 -1
  94. package/dist/lib/strategies/index.d.ts.map +1 -1
  95. package/dist/lib/{strategies/utils.d.ts → token-utils.d.ts} +6 -8
  96. package/dist/lib/token-utils.d.ts.map +1 -0
  97. package/dist/lib/ui/notification.d.ts +8 -1
  98. package/dist/lib/ui/notification.d.ts.map +1 -1
  99. package/dist/lib/ui/utils.d.ts +1 -1
  100. package/dist/lib/ui/utils.d.ts.map +1 -1
  101. package/dist/lib/update.d.ts +22 -0
  102. package/dist/lib/update.d.ts.map +1 -0
  103. package/package.json +26 -15
  104. package/dist/lib/auth.js +0 -32
  105. package/dist/lib/auth.js.map +0 -1
  106. package/dist/lib/commands/context.js +0 -241
  107. package/dist/lib/commands/context.js.map +0 -1
  108. package/dist/lib/commands/decompress.js +0 -159
  109. package/dist/lib/commands/decompress.js.map +0 -1
  110. package/dist/lib/commands/help.js +0 -52
  111. package/dist/lib/commands/help.js.map +0 -1
  112. package/dist/lib/commands/manual.js +0 -48
  113. package/dist/lib/commands/manual.js.map +0 -1
  114. package/dist/lib/commands/recompress.js +0 -137
  115. package/dist/lib/commands/recompress.js.map +0 -1
  116. package/dist/lib/commands/stats.js +0 -62
  117. package/dist/lib/commands/stats.js.map +0 -1
  118. package/dist/lib/commands/sweep.js +0 -194
  119. package/dist/lib/commands/sweep.js.map +0 -1
  120. package/dist/lib/config.js +0 -766
  121. package/dist/lib/config.js.map +0 -1
  122. package/dist/lib/hooks.js +0 -195
  123. package/dist/lib/hooks.js.map +0 -1
  124. package/dist/lib/host-permissions.js +0 -58
  125. package/dist/lib/host-permissions.js.map +0 -1
  126. package/dist/lib/logger.js +0 -204
  127. package/dist/lib/logger.js.map +0 -1
  128. package/dist/lib/message-ids.js +0 -112
  129. package/dist/lib/message-ids.js.map +0 -1
  130. package/dist/lib/messages/index.js +0 -7
  131. package/dist/lib/messages/index.js.map +0 -1
  132. package/dist/lib/messages/inject/inject.js +0 -131
  133. package/dist/lib/messages/inject/inject.js.map +0 -1
  134. package/dist/lib/messages/inject/subagent-results.js +0 -58
  135. package/dist/lib/messages/inject/subagent-results.js.map +0 -1
  136. package/dist/lib/messages/inject/utils.js +0 -198
  137. package/dist/lib/messages/inject/utils.js.map +0 -1
  138. package/dist/lib/messages/prune.js +0 -177
  139. package/dist/lib/messages/prune.js.map +0 -1
  140. package/dist/lib/messages/reasoning-strip.js +0 -33
  141. package/dist/lib/messages/reasoning-strip.js.map +0 -1
  142. package/dist/lib/messages/sync.js +0 -93
  143. package/dist/lib/messages/sync.js.map +0 -1
  144. package/dist/lib/messages/utils.js +0 -118
  145. package/dist/lib/messages/utils.js.map +0 -1
  146. package/dist/lib/prompts/compress.d.ts +0 -2
  147. package/dist/lib/prompts/compress.d.ts.map +0 -1
  148. package/dist/lib/prompts/compress.js +0 -85
  149. package/dist/lib/prompts/compress.js.map +0 -1
  150. package/dist/lib/prompts/context-limit-nudge.js +0 -25
  151. package/dist/lib/prompts/context-limit-nudge.js.map +0 -1
  152. package/dist/lib/prompts/index.js +0 -19
  153. package/dist/lib/prompts/index.js.map +0 -1
  154. package/dist/lib/prompts/internal-overlays.d.ts +0 -5
  155. package/dist/lib/prompts/internal-overlays.d.ts.map +0 -1
  156. package/dist/lib/prompts/internal-overlays.js +0 -43
  157. package/dist/lib/prompts/internal-overlays.js.map +0 -1
  158. package/dist/lib/prompts/iteration-nudge.js +0 -9
  159. package/dist/lib/prompts/iteration-nudge.js.map +0 -1
  160. package/dist/lib/prompts/store.js +0 -346
  161. package/dist/lib/prompts/store.js.map +0 -1
  162. package/dist/lib/prompts/system.js +0 -30
  163. package/dist/lib/prompts/system.js.map +0 -1
  164. package/dist/lib/prompts/turn-nudge.js +0 -12
  165. package/dist/lib/prompts/turn-nudge.js.map +0 -1
  166. package/dist/lib/protected-patterns.js +0 -107
  167. package/dist/lib/protected-patterns.js.map +0 -1
  168. package/dist/lib/shared-utils.d.ts.map +0 -1
  169. package/dist/lib/shared-utils.js +0 -30
  170. package/dist/lib/shared-utils.js.map +0 -1
  171. package/dist/lib/state/index.js +0 -4
  172. package/dist/lib/state/index.js.map +0 -1
  173. package/dist/lib/state/persistence.js +0 -174
  174. package/dist/lib/state/persistence.js.map +0 -1
  175. package/dist/lib/state/state.js +0 -134
  176. package/dist/lib/state/state.js.map +0 -1
  177. package/dist/lib/state/tool-cache.js +0 -69
  178. package/dist/lib/state/tool-cache.js.map +0 -1
  179. package/dist/lib/state/types.js +0 -2
  180. package/dist/lib/state/types.js.map +0 -1
  181. package/dist/lib/state/utils.js +0 -196
  182. package/dist/lib/state/utils.js.map +0 -1
  183. package/dist/lib/strategies/deduplication.js +0 -100
  184. package/dist/lib/strategies/deduplication.js.map +0 -1
  185. package/dist/lib/strategies/index.js +0 -4
  186. package/dist/lib/strategies/index.js.map +0 -1
  187. package/dist/lib/strategies/purge-errors.js +0 -62
  188. package/dist/lib/strategies/purge-errors.js.map +0 -1
  189. package/dist/lib/strategies/supersede-writes.d.ts +0 -13
  190. package/dist/lib/strategies/supersede-writes.d.ts.map +0 -1
  191. package/dist/lib/strategies/supersede-writes.js +0 -94
  192. package/dist/lib/strategies/supersede-writes.js.map +0 -1
  193. package/dist/lib/strategies/utils.d.ts.map +0 -1
  194. package/dist/lib/strategies/utils.js +0 -128
  195. package/dist/lib/strategies/utils.js.map +0 -1
  196. package/dist/lib/subagents/subagent-results.js +0 -52
  197. package/dist/lib/subagents/subagent-results.js.map +0 -1
  198. package/dist/lib/tools/compress.d.ts +0 -4
  199. package/dist/lib/tools/compress.d.ts.map +0 -1
  200. package/dist/lib/tools/compress.js +0 -110
  201. package/dist/lib/tools/compress.js.map +0 -1
  202. package/dist/lib/tools/index.d.ts +0 -3
  203. package/dist/lib/tools/index.d.ts.map +0 -1
  204. package/dist/lib/tools/index.js +0 -2
  205. package/dist/lib/tools/index.js.map +0 -1
  206. package/dist/lib/tools/types.d.ts +0 -13
  207. package/dist/lib/tools/types.d.ts.map +0 -1
  208. package/dist/lib/tools/types.js +0 -2
  209. package/dist/lib/tools/types.js.map +0 -1
  210. package/dist/lib/tools/utils.d.ts +0 -80
  211. package/dist/lib/tools/utils.d.ts.map +0 -1
  212. package/dist/lib/tools/utils.js +0 -675
  213. package/dist/lib/tools/utils.js.map +0 -1
  214. package/dist/lib/ui/notification.js +0 -182
  215. package/dist/lib/ui/notification.js.map +0 -1
  216. package/dist/lib/ui/utils.js +0 -255
  217. package/dist/lib/ui/utils.js.map +0 -1
@@ -1,43 +0,0 @@
1
- export const MANUAL_MODE_SYSTEM_OVERLAY = `<dcp-system-reminder>
2
- Manual mode is enabled. Do NOT use compress unless the user has explicitly triggered it through a manual marker.
3
-
4
- Only use the compress tool after seeing \`<compress triggered manually>\` in the current user instruction context.
5
-
6
- Issue exactly ONE compress call per manual trigger. Do NOT launch multiple compress calls in parallel. Each trigger grants a single compression; after it completes, wait for the next trigger.
7
-
8
- 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.
9
- </dcp-system-reminder>
10
- `;
11
- export const SUBAGENT_SYSTEM_OVERLAY = `<dcp-system-reminder>
12
- You are operating in a subagent environment.
13
-
14
- The initial subagent instruction is imperative and must be followed exactly.
15
- It is the only user message intentionally not assigned a message ID, and therefore is not eligible for compression.
16
- All subsequent messages in the session will have IDs.
17
- </dcp-system-reminder>
18
- `;
19
- export const NESTED_FORMAT_OVERLAY = `
20
- THE FORMAT OF COMPRESS
21
-
22
- \`\`\`
23
- {
24
- topic: string, // Short label (3-5 words) - e.g., "Auth System Exploration"
25
- content: {
26
- startId: string, // Boundary ID at range start: mNNNN or bN
27
- endId: string, // Boundary ID at range end: mNNNN or bN
28
- summary: string // Complete technical summary replacing all content in range
29
- }
30
- }
31
- \`\`\``;
32
- export const FLAT_FORMAT_OVERLAY = `
33
- THE FORMAT OF COMPRESS
34
-
35
- \`\`\`
36
- {
37
- topic: string, // Short label (3-5 words) - e.g., "Auth System Exploration"
38
- startId: string, // Boundary ID at range start: mNNNN or bN
39
- endId: string, // Boundary ID at range end: mNNNN or bN
40
- summary: string // Complete technical summary replacing all content in range
41
- }
42
- \`\`\``;
43
- //# sourceMappingURL=internal-overlays.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"internal-overlays.js","sourceRoot":"","sources":["../../../lib/prompts/internal-overlays.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;CASzC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;CAOtC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;OAY9B,CAAA;AAEP,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;OAU5B,CAAA"}
@@ -1,9 +0,0 @@
1
- export const ITERATION_NUDGE = `<dcp-system-reminder>
2
- You've been iterating for a while after the last user message.
3
-
4
- If there is a closed portion that is unlikely to be referenced immediately (for example, finished research before implementation), use the compress tool on it now.
5
-
6
- Prefer multiple short, closed ranges over one large range when several independent slices are ready.
7
- </dcp-system-reminder>
8
- `;
9
- //# sourceMappingURL=iteration-nudge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"iteration-nudge.js","sourceRoot":"","sources":["../../../lib/prompts/iteration-nudge.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;CAO9B,CAAA"}
@@ -1,346 +0,0 @@
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
- },
35
- {
36
- key: "turn-nudge",
37
- fileName: "turn-nudge.md",
38
- label: "Turn Nudge",
39
- description: "Nudge to compress closed ranges at turn boundaries",
40
- usage: "Injected when context is between min and max limits at a new user turn",
41
- runtimeField: "turnNudge",
42
- },
43
- {
44
- key: "iteration-nudge",
45
- fileName: "iteration-nudge.md",
46
- label: "Iteration Nudge",
47
- description: "Nudge after many iterations without user input",
48
- usage: "Injected when iteration threshold is crossed",
49
- runtimeField: "iterationNudge",
50
- },
51
- ];
52
- export const PROMPT_KEYS = [
53
- "system",
54
- "compress",
55
- "context-limit-nudge",
56
- "turn-nudge",
57
- "iteration-nudge",
58
- ];
59
- const HTML_COMMENT_REGEX = /<!--[\s\S]*?-->/g;
60
- const LEGACY_INLINE_COMMENT_LINE_REGEX = /^[ \t]*\/\/.*?\/\/[ \t]*$/gm;
61
- const DCP_SYSTEM_REMINDER_TAG_REGEX = /^\s*<dcp-system-reminder\b[^>]*>[\s\S]*<\/dcp-system-reminder>\s*$/i;
62
- const DEFAULTS_README_FILE = "README.md";
63
- const BUNDLED_EDITABLE_PROMPTS = {
64
- system: SYSTEM_PROMPT,
65
- compress: COMPRESS_PROMPT,
66
- contextLimitNudge: CONTEXT_LIMIT_NUDGE,
67
- turnNudge: TURN_NUDGE,
68
- iterationNudge: ITERATION_NUDGE,
69
- };
70
- const INTERNAL_PROMPT_OVERLAYS = {
71
- manualOverlay: MANUAL_MODE_SYSTEM_OVERLAY,
72
- subagentOverlay: SUBAGENT_SYSTEM_OVERLAY,
73
- };
74
- function createBundledRuntimePrompts() {
75
- return {
76
- system: BUNDLED_EDITABLE_PROMPTS.system,
77
- compress: BUNDLED_EDITABLE_PROMPTS.compress,
78
- contextLimitNudge: BUNDLED_EDITABLE_PROMPTS.contextLimitNudge,
79
- turnNudge: BUNDLED_EDITABLE_PROMPTS.turnNudge,
80
- iterationNudge: BUNDLED_EDITABLE_PROMPTS.iterationNudge,
81
- manualOverlay: INTERNAL_PROMPT_OVERLAYS.manualOverlay,
82
- subagentOverlay: INTERNAL_PROMPT_OVERLAYS.subagentOverlay,
83
- };
84
- }
85
- function findOpencodeDir(startDir) {
86
- let current = startDir;
87
- while (current !== "/") {
88
- const candidate = join(current, ".opencode");
89
- if (existsSync(candidate)) {
90
- try {
91
- if (statSync(candidate).isDirectory()) {
92
- return candidate;
93
- }
94
- }
95
- catch {
96
- // ignore inaccessible entries while walking upward
97
- }
98
- }
99
- const parent = dirname(current);
100
- if (parent === current) {
101
- break;
102
- }
103
- current = parent;
104
- }
105
- return null;
106
- }
107
- function resolvePromptPaths(workingDirectory) {
108
- const configHome = process.env.XDG_CONFIG_HOME || join(homedir(), ".config");
109
- const globalRoot = join(configHome, "opencode", "dcp-prompts");
110
- const defaultsDir = join(globalRoot, "defaults");
111
- const globalOverridesDir = join(globalRoot, "overrides");
112
- const configDirOverridesDir = process.env.OPENCODE_CONFIG_DIR
113
- ? join(process.env.OPENCODE_CONFIG_DIR, "dcp-prompts", "overrides")
114
- : null;
115
- const opencodeDir = findOpencodeDir(workingDirectory);
116
- const projectOverridesDir = opencodeDir ? join(opencodeDir, "dcp-prompts", "overrides") : null;
117
- return {
118
- defaultsDir,
119
- globalOverridesDir,
120
- configDirOverridesDir,
121
- projectOverridesDir,
122
- };
123
- }
124
- function stripConditionalTag(content, tagName) {
125
- const regex = new RegExp(`<${tagName}>[\\s\\S]*?<\/${tagName}>`, "gi");
126
- return content.replace(regex, "");
127
- }
128
- function unwrapDcpTagIfWrapped(content) {
129
- const trimmed = content.trim();
130
- if (DCP_SYSTEM_REMINDER_TAG_REGEX.test(trimmed)) {
131
- return trimmed
132
- .replace(/^\s*<dcp-system-reminder\b[^>]*>\s*/i, "")
133
- .replace(/\s*<\/dcp-system-reminder>\s*$/i, "")
134
- .trim();
135
- }
136
- return trimmed;
137
- }
138
- function normalizeReminderPromptContent(content) {
139
- const normalized = content.trim();
140
- if (!normalized) {
141
- return "";
142
- }
143
- const startsWrapped = /^\s*<dcp-system-reminder\b[^>]*>/i.test(normalized);
144
- const endsWrapped = /<\/dcp-system-reminder>\s*$/i.test(normalized);
145
- if (startsWrapped !== endsWrapped) {
146
- return "";
147
- }
148
- return unwrapDcpTagIfWrapped(normalized);
149
- }
150
- function stripPromptComments(content) {
151
- return content
152
- .replace(/^\uFEFF/, "")
153
- .replace(/\r\n?/g, "\n")
154
- .replace(HTML_COMMENT_REGEX, "")
155
- .replace(LEGACY_INLINE_COMMENT_LINE_REGEX, "");
156
- }
157
- function toEditablePromptText(definition, rawContent) {
158
- let normalized = stripPromptComments(rawContent).trim();
159
- if (!normalized) {
160
- return "";
161
- }
162
- if (definition.key === "system") {
163
- normalized = stripConditionalTag(normalized, "manual");
164
- normalized = stripConditionalTag(normalized, "subagent");
165
- }
166
- if (definition.key !== "compress") {
167
- normalized = normalizeReminderPromptContent(normalized);
168
- }
169
- return normalized.trim();
170
- }
171
- function wrapRuntimePromptContent(definition, editableText) {
172
- const trimmed = editableText.trim();
173
- if (!trimmed) {
174
- return "";
175
- }
176
- if (definition.key === "compress") {
177
- return trimmed;
178
- }
179
- return `<dcp-system-reminder>\n${trimmed}\n</dcp-system-reminder>`;
180
- }
181
- function buildDefaultPromptFileContent(bundledEditableText) {
182
- return `${bundledEditableText.trim()}\n`;
183
- }
184
- function buildDefaultsReadmeContent() {
185
- const lines = [];
186
- lines.push("# DCP Prompt Defaults");
187
- lines.push("");
188
- lines.push("This directory stores the DCP prompts.");
189
- lines.push("Each prompt file here should contain plain text only (no XML wrappers).");
190
- lines.push("");
191
- lines.push("## Creating Overrides");
192
- lines.push("");
193
- lines.push("1. Copy a prompt file from this directory into an overrides directory using the same filename.");
194
- lines.push("2. Edit the copied file using plain text.");
195
- lines.push("3. Restart OpenCode.");
196
- lines.push("");
197
- lines.push("To reset an override, delete the matching file from your overrides directory.");
198
- lines.push("");
199
- lines.push("Do not edit the default prompt files directly, they are just for reference, only files in the overrides directory are used.");
200
- lines.push("");
201
- lines.push("Override precedence (highest first):");
202
- lines.push("1. `.opencode/dcp-prompts/overrides/` (project)");
203
- lines.push("2. `$OPENCODE_CONFIG_DIR/dcp-prompts/overrides/` (config dir)");
204
- lines.push("3. `~/.config/opencode/dcp-prompts/overrides/` (global)");
205
- lines.push("");
206
- lines.push("## Prompt Files");
207
- lines.push("");
208
- for (const definition of PROMPT_DEFINITIONS) {
209
- lines.push(`- \`${definition.fileName}\``);
210
- lines.push(` - Purpose: ${definition.description}.`);
211
- lines.push(` - Runtime use: ${definition.usage}.`);
212
- }
213
- return `${lines.join("\n")}\n`;
214
- }
215
- function readFileIfExists(filePath) {
216
- if (!existsSync(filePath)) {
217
- return null;
218
- }
219
- try {
220
- return readFileSync(filePath, "utf-8");
221
- }
222
- catch {
223
- return null;
224
- }
225
- }
226
- export class PromptStore {
227
- logger;
228
- paths;
229
- customPromptsEnabled;
230
- runtimePrompts;
231
- constructor(logger, workingDirectory, customPromptsEnabled = false) {
232
- this.logger = logger;
233
- this.paths = resolvePromptPaths(workingDirectory);
234
- this.customPromptsEnabled = customPromptsEnabled;
235
- this.runtimePrompts = createBundledRuntimePrompts();
236
- if (this.customPromptsEnabled) {
237
- this.ensureDefaultFiles();
238
- }
239
- this.reload();
240
- }
241
- getRuntimePrompts() {
242
- return { ...this.runtimePrompts };
243
- }
244
- reload() {
245
- const nextPrompts = createBundledRuntimePrompts();
246
- if (!this.customPromptsEnabled) {
247
- this.runtimePrompts = nextPrompts;
248
- return;
249
- }
250
- for (const definition of PROMPT_DEFINITIONS) {
251
- const bundledSource = BUNDLED_EDITABLE_PROMPTS[definition.runtimeField];
252
- const bundledEditable = toEditablePromptText(definition, bundledSource);
253
- const bundledRuntime = wrapRuntimePromptContent(definition, bundledEditable);
254
- const fallbackValue = bundledRuntime || bundledSource.trim();
255
- let effectiveValue = fallbackValue;
256
- for (const candidate of this.getOverrideCandidates(definition.fileName)) {
257
- const rawOverride = readFileIfExists(candidate.path);
258
- if (rawOverride === null) {
259
- continue;
260
- }
261
- const editableOverride = toEditablePromptText(definition, rawOverride);
262
- if (!editableOverride) {
263
- this.logger.warn("Prompt override is empty or invalid after normalization", {
264
- key: definition.key,
265
- path: candidate.path,
266
- });
267
- continue;
268
- }
269
- const wrappedOverride = wrapRuntimePromptContent(definition, editableOverride);
270
- if (!wrappedOverride) {
271
- this.logger.warn("Prompt override could not be wrapped for runtime", {
272
- key: definition.key,
273
- path: candidate.path,
274
- });
275
- continue;
276
- }
277
- effectiveValue = wrappedOverride;
278
- break;
279
- }
280
- nextPrompts[definition.runtimeField] = effectiveValue;
281
- }
282
- this.runtimePrompts = nextPrompts;
283
- }
284
- getOverrideCandidates(fileName) {
285
- const candidates = [];
286
- if (this.paths.projectOverridesDir) {
287
- candidates.push({
288
- path: join(this.paths.projectOverridesDir, fileName),
289
- });
290
- }
291
- if (this.paths.configDirOverridesDir) {
292
- candidates.push({
293
- path: join(this.paths.configDirOverridesDir, fileName),
294
- });
295
- }
296
- candidates.push({
297
- path: join(this.paths.globalOverridesDir, fileName),
298
- });
299
- return candidates;
300
- }
301
- ensureDefaultFiles() {
302
- try {
303
- mkdirSync(this.paths.defaultsDir, { recursive: true });
304
- mkdirSync(this.paths.globalOverridesDir, { recursive: true });
305
- }
306
- catch {
307
- this.logger.warn("Failed to initialize prompt directories", {
308
- defaultsDir: this.paths.defaultsDir,
309
- globalOverridesDir: this.paths.globalOverridesDir,
310
- });
311
- return;
312
- }
313
- for (const definition of PROMPT_DEFINITIONS) {
314
- const bundledEditable = toEditablePromptText(definition, BUNDLED_EDITABLE_PROMPTS[definition.runtimeField]);
315
- const managedContent = buildDefaultPromptFileContent(bundledEditable || BUNDLED_EDITABLE_PROMPTS[definition.runtimeField]);
316
- const filePath = join(this.paths.defaultsDir, definition.fileName);
317
- try {
318
- const existing = readFileIfExists(filePath);
319
- if (existing === managedContent) {
320
- continue;
321
- }
322
- writeFileSync(filePath, managedContent, "utf-8");
323
- }
324
- catch {
325
- this.logger.warn("Failed to write default prompt file", {
326
- key: definition.key,
327
- path: filePath,
328
- });
329
- }
330
- }
331
- const readmePath = join(this.paths.defaultsDir, DEFAULTS_README_FILE);
332
- const readmeContent = buildDefaultsReadmeContent();
333
- try {
334
- const existing = readFileIfExists(readmePath);
335
- if (existing !== readmeContent) {
336
- writeFileSync(readmePath, readmeContent, "utf-8");
337
- }
338
- }
339
- catch {
340
- this.logger.warn("Failed to write defaults README", {
341
- path: readmePath,
342
- });
343
- }
344
- }
345
- }
346
- //# sourceMappingURL=store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../lib/prompts/store.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- export const SYSTEM = `
2
- 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.
3
-
4
- The ONLY tool you have for context management is \`compress\`. It replaces a contiguous portion of the conversation (inclusive) with a technical summary you produce.
5
-
6
- \`<dcp-message-id>\` and \`<dcp-system-reminder>\` tags are environment-injected metadata. Do not output them.
7
-
8
- OPERATING STANCE
9
- Prefer short, closed, summary-safe ranges.
10
- When multiple independent stale ranges exist, prefer several short compressions (in parallel when possible) over one large-range compression.
11
-
12
- Use \`compress\` as steady housekeeping while you work.
13
-
14
- CADENCE, SIGNALS, AND LATENCY
15
-
16
- - No fixed threshold mandates compression
17
- - Prioritize closedness and independence over raw range size
18
- - Prefer smaller, regular compressions over infrequent massive compressions for better latency and summary quality
19
- - When multiple independent stale ranges are ready, batch compressions in parallel
20
-
21
- DO NOT COMPRESS IF
22
-
23
- - raw context is still relevant and needed for edits or precise references
24
- - the task in the target range is still actively in progress
25
-
26
- Evaluate 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
27
-
28
- It is of your responsibility to keep a sharp, high-quality context window for optimal performance
29
- `;
30
- //# sourceMappingURL=system.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"system.js","sourceRoot":"","sources":["../../../lib/prompts/system.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BrB,CAAA"}
@@ -1,12 +0,0 @@
1
- export const TURN_NUDGE = `<dcp-system-reminder>
2
- Evaluate the conversation for compressible ranges.
3
-
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.
6
-
7
- Prefer small, closed-range compressions over one broad compression.
8
- The goal is to filter noise and distill key information so context accumulation stays under control.
9
- Keep active context uncompressed.
10
- </dcp-system-reminder>
11
- `;
12
- //# sourceMappingURL=turn-nudge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"turn-nudge.js","sourceRoot":"","sources":["../../../lib/prompts/turn-nudge.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;CAUzB,CAAA"}
@@ -1,107 +0,0 @@
1
- function normalizePath(input) {
2
- return input.replaceAll("\\\\", "/");
3
- }
4
- function escapeRegExpChar(ch) {
5
- return /[\\.^$+{}()|\[\]]/.test(ch) ? `\\${ch}` : ch;
6
- }
7
- export function matchesGlob(inputPath, pattern) {
8
- if (!pattern)
9
- return false;
10
- const input = normalizePath(inputPath);
11
- const pat = normalizePath(pattern);
12
- let regex = "^";
13
- for (let i = 0; i < pat.length; i++) {
14
- const ch = pat[i];
15
- if (ch === "*") {
16
- const next = pat[i + 1];
17
- if (next === "*") {
18
- const after = pat[i + 2];
19
- if (after === "/") {
20
- // **/ (zero or more directories)
21
- regex += "(?:.*/)?";
22
- i += 2;
23
- continue;
24
- }
25
- // **
26
- regex += ".*";
27
- i++;
28
- continue;
29
- }
30
- // *
31
- regex += "[^/]*";
32
- continue;
33
- }
34
- if (ch === "?") {
35
- regex += "[^/]";
36
- continue;
37
- }
38
- if (ch === "/") {
39
- regex += "/";
40
- continue;
41
- }
42
- regex += escapeRegExpChar(ch);
43
- }
44
- regex += "$";
45
- return new RegExp(regex).test(input);
46
- }
47
- export function getFilePathsFromParameters(tool, parameters) {
48
- if (typeof parameters !== "object" || parameters === null) {
49
- return [];
50
- }
51
- const paths = [];
52
- const params = parameters;
53
- // 1. apply_patch uses patchText with embedded paths
54
- if (tool === "apply_patch" && typeof params.patchText === "string") {
55
- const pathRegex = /\*\*\* (?:Add|Delete|Update) File: ([^\n\r]+)/g;
56
- let match;
57
- while ((match = pathRegex.exec(params.patchText)) !== null) {
58
- paths.push(match[1].trim());
59
- }
60
- }
61
- // 2. multiedit uses top-level filePath and nested edits array
62
- if (tool === "multiedit") {
63
- if (typeof params.filePath === "string") {
64
- paths.push(params.filePath);
65
- }
66
- if (Array.isArray(params.edits)) {
67
- for (const edit of params.edits) {
68
- if (edit && typeof edit.filePath === "string") {
69
- paths.push(edit.filePath);
70
- }
71
- }
72
- }
73
- }
74
- // 3. Default check for common filePath parameter (read, write, edit, etc)
75
- if (typeof params.filePath === "string") {
76
- paths.push(params.filePath);
77
- }
78
- // Return unique non-empty paths
79
- return [...new Set(paths)].filter((p) => p.length > 0);
80
- }
81
- export function isFilePathProtected(filePaths, patterns) {
82
- if (!filePaths || filePaths.length === 0)
83
- return false;
84
- if (!patterns || patterns.length === 0)
85
- return false;
86
- return filePaths.some((path) => patterns.some((pattern) => matchesGlob(path, pattern)));
87
- }
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"protected-patterns.js","sourceRoot":"","sources":["../../lib/protected-patterns.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared-utils.d.ts","sourceRoot":"","sources":["../../lib/shared-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,KAAK,sBAAsB,EAAsC,MAAM,oBAAoB,CAAA;AACpG,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGjD,eAAO,MAAM,kBAAkB,GAAI,OAAO,YAAY,EAAE,KAAK,SAAS,KAAG,OASxE,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC3B,UAAU,SAAS,EAAE,EACrB,aAAa,MAAM,KACpB,SAAS,GAAG,IASd,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC3B,OAAO,YAAY,EACnB,QAAQ,YAAY,KACrB,KAAK,GAAG,OAAO,GAAG,MAEpB,CAAA;AAED,eAAO,MAAM,2BAA2B,GACpC,OAAO,YAAY,EACnB,QAAQ,YAAY,EACpB,iBAAiB,sBAAsB,EACvC,UAAU,SAAS,EAAE,KACtB,IAOF,CAAA"}
@@ -1,30 +0,0 @@
1
- import { resolveEffectiveCompressPermission } from "./host-permissions";
2
- import { isIgnoredUserMessage } from "./messages/utils";
3
- export const isMessageCompacted = (state, msg) => {
4
- if (msg.info.time.created < state.lastCompaction) {
5
- return true;
6
- }
7
- const pruneEntry = state.prune.messages.byMessageId.get(msg.info.id);
8
- if (pruneEntry && pruneEntry.activeBlockIds.length > 0) {
9
- return true;
10
- }
11
- return false;
12
- };
13
- export const getLastUserMessage = (messages, startIndex) => {
14
- const start = startIndex ?? messages.length - 1;
15
- for (let i = start; i >= 0; i--) {
16
- const msg = messages[i];
17
- if (msg.info.role === "user" && !isIgnoredUserMessage(msg)) {
18
- return msg;
19
- }
20
- }
21
- return null;
22
- };
23
- export const compressPermission = (state, config) => {
24
- return state.compressPermission ?? config.compress.permission;
25
- };
26
- export const syncCompressPermissionState = (state, config, hostPermissions, messages) => {
27
- const activeAgent = getLastUserMessage(messages)?.info.agent;
28
- state.compressPermission = resolveEffectiveCompressPermission(config.compress.permission, hostPermissions, activeAgent);
29
- };
30
- //# sourceMappingURL=shared-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared-utils.js","sourceRoot":"","sources":["../../lib/shared-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAA+B,kCAAkC,EAAE,MAAM,oBAAoB,CAAA;AAEpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAmB,EAAE,GAAc,EAAW,EAAE;IAC/E,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAA;IACf,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpE,IAAI,UAAU,IAAI,UAAU,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAA;IACf,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAC9B,QAAqB,EACrB,UAAmB,EACH,EAAE;IAClB,MAAM,KAAK,GAAG,UAAU,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;IAC/C,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,OAAO,GAAG,CAAA;QACd,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAC9B,KAAmB,EACnB,MAAoB,EACI,EAAE;IAC1B,OAAO,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAA;AACjE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACvC,KAAmB,EACnB,MAAoB,EACpB,eAAuC,EACvC,QAAqB,EACjB,EAAE;IACN,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,CAAA;IAC5D,KAAK,CAAC,kBAAkB,GAAG,kCAAkC,CACzD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAC1B,eAAe,EACf,WAAW,CACd,CAAA;AACL,CAAC,CAAA"}
@@ -1,4 +0,0 @@
1
- export * from "./persistence";
2
- export * from "./types";
3
- export * from "./state";
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/state/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}