@tarquinen/opencode-dcp 1.3.1-beta.0 → 1.3.1-beta1

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 (145) hide show
  1. package/README.md +8 -17
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +9 -25
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/commands/context.d.ts.map +1 -1
  6. package/dist/lib/commands/context.js +23 -36
  7. package/dist/lib/commands/context.js.map +1 -1
  8. package/dist/lib/config.d.ts +4 -9
  9. package/dist/lib/config.d.ts.map +1 -1
  10. package/dist/lib/config.js +28 -59
  11. package/dist/lib/config.js.map +1 -1
  12. package/dist/lib/hooks.d.ts.map +1 -1
  13. package/dist/lib/hooks.js +16 -8
  14. package/dist/lib/hooks.js.map +1 -1
  15. package/dist/lib/messages/inject.d.ts +0 -7
  16. package/dist/lib/messages/inject.d.ts.map +1 -1
  17. package/dist/lib/messages/inject.js +51 -90
  18. package/dist/lib/messages/inject.js.map +1 -1
  19. package/dist/lib/messages/prune.d.ts.map +1 -1
  20. package/dist/lib/messages/prune.js +1 -42
  21. package/dist/lib/messages/prune.js.map +1 -1
  22. package/dist/lib/messages/utils.d.ts +0 -2
  23. package/dist/lib/messages/utils.d.ts.map +1 -1
  24. package/dist/lib/messages/utils.js +12 -21
  25. package/dist/lib/messages/utils.js.map +1 -1
  26. package/dist/lib/prompts/discard-tool-spec.d.ts +2 -0
  27. package/dist/lib/prompts/discard-tool-spec.d.ts.map +1 -0
  28. package/dist/lib/prompts/discard-tool-spec.js +41 -0
  29. package/dist/lib/prompts/discard-tool-spec.js.map +1 -0
  30. package/dist/lib/prompts/extract-tool-spec.d.ts +2 -0
  31. package/dist/lib/prompts/extract-tool-spec.d.ts.map +1 -0
  32. package/dist/lib/prompts/{distill-tool-spec.js → extract-tool-spec.js} +14 -14
  33. package/dist/lib/prompts/extract-tool-spec.js.map +1 -0
  34. package/dist/lib/prompts/index.d.ts +0 -7
  35. package/dist/lib/prompts/index.d.ts.map +1 -1
  36. package/dist/lib/prompts/index.js +18 -28
  37. package/dist/lib/prompts/index.js.map +1 -1
  38. package/dist/lib/prompts/nudge/both.d.ts +2 -0
  39. package/dist/lib/prompts/nudge/both.d.ts.map +1 -0
  40. package/dist/lib/prompts/nudge/both.js +11 -0
  41. package/dist/lib/prompts/nudge/both.js.map +1 -0
  42. package/dist/lib/prompts/nudge/discard.d.ts +2 -0
  43. package/dist/lib/prompts/nudge/discard.d.ts.map +1 -0
  44. package/dist/lib/prompts/nudge/discard.js +10 -0
  45. package/dist/lib/prompts/nudge/discard.js.map +1 -0
  46. package/dist/lib/prompts/nudge/extract.d.ts +2 -0
  47. package/dist/lib/prompts/nudge/extract.d.ts.map +1 -0
  48. package/dist/lib/prompts/nudge/extract.js +10 -0
  49. package/dist/lib/prompts/nudge/extract.js.map +1 -0
  50. package/dist/lib/prompts/system/both.d.ts +2 -0
  51. package/dist/lib/prompts/system/both.d.ts.map +1 -0
  52. package/dist/lib/prompts/system/both.js +61 -0
  53. package/dist/lib/prompts/system/both.js.map +1 -0
  54. package/dist/lib/prompts/system/discard.d.ts +2 -0
  55. package/dist/lib/prompts/system/discard.d.ts.map +1 -0
  56. package/dist/lib/prompts/system/discard.js +52 -0
  57. package/dist/lib/prompts/system/discard.js.map +1 -0
  58. package/dist/lib/prompts/system/extract.d.ts +2 -0
  59. package/dist/lib/prompts/system/extract.d.ts.map +1 -0
  60. package/dist/lib/prompts/system/extract.js +52 -0
  61. package/dist/lib/prompts/system/extract.js.map +1 -0
  62. package/dist/lib/shared-utils.d.ts +1 -1
  63. package/dist/lib/shared-utils.d.ts.map +1 -1
  64. package/dist/lib/shared-utils.js +3 -10
  65. package/dist/lib/shared-utils.js.map +1 -1
  66. package/dist/lib/state/persistence.d.ts +1 -2
  67. package/dist/lib/state/persistence.d.ts.map +1 -1
  68. package/dist/lib/state/persistence.js +0 -1
  69. package/dist/lib/state/persistence.js.map +1 -1
  70. package/dist/lib/state/state.d.ts +1 -0
  71. package/dist/lib/state/state.d.ts.map +1 -1
  72. package/dist/lib/state/state.js +29 -10
  73. package/dist/lib/state/state.js.map +1 -1
  74. package/dist/lib/state/tool-cache.d.ts.map +1 -1
  75. package/dist/lib/state/tool-cache.js +3 -2
  76. package/dist/lib/state/tool-cache.js.map +1 -1
  77. package/dist/lib/state/types.d.ts +0 -6
  78. package/dist/lib/state/types.d.ts.map +1 -1
  79. package/dist/lib/state/utils.d.ts +0 -4
  80. package/dist/lib/state/utils.d.ts.map +1 -1
  81. package/dist/lib/state/utils.js +0 -33
  82. package/dist/lib/state/utils.js.map +1 -1
  83. package/dist/lib/strategies/index.d.ts +1 -1
  84. package/dist/lib/strategies/index.d.ts.map +1 -1
  85. package/dist/lib/strategies/index.js +1 -1
  86. package/dist/lib/strategies/index.js.map +1 -1
  87. package/dist/lib/{tools/types.d.ts → strategies/tools.d.ts} +4 -1
  88. package/dist/lib/strategies/tools.d.ts.map +1 -0
  89. package/dist/lib/strategies/tools.js +135 -0
  90. package/dist/lib/strategies/tools.js.map +1 -0
  91. package/dist/lib/strategies/utils.d.ts +0 -1
  92. package/dist/lib/strategies/utils.d.ts.map +1 -1
  93. package/dist/lib/strategies/utils.js +4 -5
  94. package/dist/lib/strategies/utils.js.map +1 -1
  95. package/dist/lib/ui/notification.d.ts +0 -1
  96. package/dist/lib/ui/notification.d.ts.map +1 -1
  97. package/dist/lib/ui/notification.js +4 -32
  98. package/dist/lib/ui/notification.js.map +1 -1
  99. package/dist/lib/ui/utils.d.ts +0 -1
  100. package/dist/lib/ui/utils.d.ts.map +1 -1
  101. package/dist/lib/ui/utils.js +0 -16
  102. package/dist/lib/ui/utils.js.map +1 -1
  103. package/package.json +4 -7
  104. package/dist/lib/auth.d.ts +0 -4
  105. package/dist/lib/auth.d.ts.map +0 -1
  106. package/dist/lib/auth.js +0 -32
  107. package/dist/lib/auth.js.map +0 -1
  108. package/dist/lib/prompts/compress-tool-spec.d.ts +0 -2
  109. package/dist/lib/prompts/compress-tool-spec.d.ts.map +0 -1
  110. package/dist/lib/prompts/compress-tool-spec.js +0 -58
  111. package/dist/lib/prompts/compress-tool-spec.js.map +0 -1
  112. package/dist/lib/prompts/distill-tool-spec.d.ts +0 -2
  113. package/dist/lib/prompts/distill-tool-spec.d.ts.map +0 -1
  114. package/dist/lib/prompts/distill-tool-spec.js.map +0 -1
  115. package/dist/lib/prompts/prune-tool-spec.d.ts +0 -2
  116. package/dist/lib/prompts/prune-tool-spec.d.ts.map +0 -1
  117. package/dist/lib/prompts/prune-tool-spec.js +0 -40
  118. package/dist/lib/prompts/prune-tool-spec.js.map +0 -1
  119. package/dist/lib/tools/compress.d.ts +0 -4
  120. package/dist/lib/tools/compress.d.ts.map +0 -1
  121. package/dist/lib/tools/compress.js +0 -81
  122. package/dist/lib/tools/compress.js.map +0 -1
  123. package/dist/lib/tools/distill.d.ts +0 -4
  124. package/dist/lib/tools/distill.d.ts.map +0 -1
  125. package/dist/lib/tools/distill.js +0 -35
  126. package/dist/lib/tools/distill.js.map +0 -1
  127. package/dist/lib/tools/index.d.ts +0 -5
  128. package/dist/lib/tools/index.d.ts.map +0 -1
  129. package/dist/lib/tools/index.js +0 -4
  130. package/dist/lib/tools/index.js.map +0 -1
  131. package/dist/lib/tools/prune-shared.d.ts +0 -6
  132. package/dist/lib/tools/prune-shared.d.ts.map +0 -1
  133. package/dist/lib/tools/prune-shared.js +0 -107
  134. package/dist/lib/tools/prune-shared.js.map +0 -1
  135. package/dist/lib/tools/prune.d.ts +0 -4
  136. package/dist/lib/tools/prune.d.ts.map +0 -1
  137. package/dist/lib/tools/prune.js +0 -21
  138. package/dist/lib/tools/prune.js.map +0 -1
  139. package/dist/lib/tools/types.d.ts.map +0 -1
  140. package/dist/lib/tools/types.js +0 -2
  141. package/dist/lib/tools/types.js.map +0 -1
  142. package/dist/lib/tools/utils.d.ts +0 -26
  143. package/dist/lib/tools/utils.d.ts.map +0 -1
  144. package/dist/lib/tools/utils.js +0 -121
  145. package/dist/lib/tools/utils.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"prune.js","sourceRoot":"","sources":["../../../lib/tools/prune.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,sBAAsB,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;AAE5D,MAAM,UAAU,eAAe,CAAC,GAAqB;IACjD,OAAO,IAAI,CAAC;QACR,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE;YACF,GAAG,EAAE,IAAI,CAAC,MAAM;iBACX,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;iBAC3B,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,gEAAgE,CAAC;SAClF;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO;YACvB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAA;YAC3B,MAAM,MAAM,GAAG,OAAO,CAAA;YAEtB,OAAO,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3E,CAAC;KACJ,CAAC,CAAA;AACN,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,YAAY,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;CAC3B"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/tools/types.ts"],"names":[],"mappings":""}
@@ -1,26 +0,0 @@
1
- import type { WithParts, CompressSummary } from "../state";
2
- import type { Logger } from "../logger";
3
- /**
4
- * Searches messages for a string and returns the message ID where it's found.
5
- * Searches in text parts, tool outputs, tool inputs, and other textual content.
6
- * Also searches through existing compress summaries to enable chained compression.
7
- * Throws an error if the string is not found or found more than once.
8
- */
9
- export declare function findStringInMessages(messages: WithParts[], searchString: string, logger: Logger, compressSummaries: CompressSummary[] | undefined, stringType: "startString" | "endString"): {
10
- messageId: string;
11
- messageIndex: number;
12
- };
13
- /**
14
- * Collects all tool callIDs from messages between start and end indices (inclusive).
15
- */
16
- export declare function collectToolIdsInRange(messages: WithParts[], startIndex: number, endIndex: number): string[];
17
- /**
18
- * Collects all message IDs from messages between start and end indices (inclusive).
19
- */
20
- export declare function collectMessageIdsInRange(messages: WithParts[], startIndex: number, endIndex: number): string[];
21
- /**
22
- * Collects all textual content (text parts, tool inputs, and tool outputs)
23
- * from a range of messages. Used for token estimation.
24
- */
25
- export declare function collectContentInRange(messages: WithParts[], startIndex: number, endIndex: number): string[];
26
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/tools/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,SAAS,EAAE,EACrB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,eAAe,EAAE,YAAK,EACzC,UAAU,EAAE,aAAa,GAAG,WAAW,GACxC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CA2D7C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,SAAS,EAAE,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACjB,MAAM,EAAE,CAiBV;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,SAAS,EAAE,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACjB,MAAM,EAAE,CAWV;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,SAAS,EAAE,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACjB,MAAM,EAAE,CAkCV"}
@@ -1,121 +0,0 @@
1
- /**
2
- * Searches messages for a string and returns the message ID where it's found.
3
- * Searches in text parts, tool outputs, tool inputs, and other textual content.
4
- * Also searches through existing compress summaries to enable chained compression.
5
- * Throws an error if the string is not found or found more than once.
6
- */
7
- export function findStringInMessages(messages, searchString, logger, compressSummaries = [], stringType) {
8
- const matches = [];
9
- // First, search through existing compress summaries
10
- // This allows referencing text from previous compress operations
11
- for (const summary of compressSummaries) {
12
- if (summary.summary.includes(searchString)) {
13
- const anchorIndex = messages.findIndex((m) => m.info.id === summary.anchorMessageId);
14
- if (anchorIndex !== -1) {
15
- matches.push({
16
- messageId: summary.anchorMessageId,
17
- messageIndex: anchorIndex,
18
- });
19
- }
20
- }
21
- }
22
- // Then search through raw messages
23
- for (let i = 0; i < messages.length; i++) {
24
- const msg = messages[i];
25
- const parts = Array.isArray(msg.parts) ? msg.parts : [];
26
- for (const part of parts) {
27
- let content = "";
28
- if (part.type === "text" && typeof part.text === "string") {
29
- content = part.text;
30
- }
31
- else if (part.type === "tool" && part.state?.status === "completed") {
32
- if (typeof part.state.output === "string") {
33
- content = part.state.output;
34
- }
35
- if (part.state.input) {
36
- const inputStr = typeof part.state.input === "string"
37
- ? part.state.input
38
- : JSON.stringify(part.state.input);
39
- content += " " + inputStr;
40
- }
41
- }
42
- if (content.includes(searchString)) {
43
- matches.push({ messageId: msg.info.id, messageIndex: i });
44
- }
45
- }
46
- }
47
- if (matches.length === 0) {
48
- throw new Error(`${stringType} not found in conversation. Make sure the string exists and is spelled exactly as it appears.`);
49
- }
50
- if (matches.length > 1) {
51
- throw new Error(`Found multiple matches for ${stringType}. Provide more surrounding context to uniquely identify the intended match.`);
52
- }
53
- return matches[0];
54
- }
55
- /**
56
- * Collects all tool callIDs from messages between start and end indices (inclusive).
57
- */
58
- export function collectToolIdsInRange(messages, startIndex, endIndex) {
59
- const toolIds = [];
60
- for (let i = startIndex; i <= endIndex; i++) {
61
- const msg = messages[i];
62
- const parts = Array.isArray(msg.parts) ? msg.parts : [];
63
- for (const part of parts) {
64
- if (part.type === "tool" && part.callID) {
65
- if (!toolIds.includes(part.callID)) {
66
- toolIds.push(part.callID);
67
- }
68
- }
69
- }
70
- }
71
- return toolIds;
72
- }
73
- /**
74
- * Collects all message IDs from messages between start and end indices (inclusive).
75
- */
76
- export function collectMessageIdsInRange(messages, startIndex, endIndex) {
77
- const messageIds = [];
78
- for (let i = startIndex; i <= endIndex; i++) {
79
- const msgId = messages[i].info.id;
80
- if (!messageIds.includes(msgId)) {
81
- messageIds.push(msgId);
82
- }
83
- }
84
- return messageIds;
85
- }
86
- /**
87
- * Collects all textual content (text parts, tool inputs, and tool outputs)
88
- * from a range of messages. Used for token estimation.
89
- */
90
- export function collectContentInRange(messages, startIndex, endIndex) {
91
- const contents = [];
92
- for (let i = startIndex; i <= endIndex; i++) {
93
- const msg = messages[i];
94
- const parts = Array.isArray(msg.parts) ? msg.parts : [];
95
- for (const part of parts) {
96
- if (part.type === "text") {
97
- contents.push(part.text);
98
- }
99
- else if (part.type === "tool") {
100
- const toolState = part.state;
101
- if (toolState?.input) {
102
- contents.push(typeof toolState.input === "string"
103
- ? toolState.input
104
- : JSON.stringify(toolState.input));
105
- }
106
- if (toolState?.status === "completed" && toolState?.output) {
107
- contents.push(typeof toolState.output === "string"
108
- ? toolState.output
109
- : JSON.stringify(toolState.output));
110
- }
111
- else if (toolState?.status === "error" && toolState?.error) {
112
- contents.push(typeof toolState.error === "string"
113
- ? toolState.error
114
- : JSON.stringify(toolState.error));
115
- }
116
- }
117
- }
118
- }
119
- return contents;
120
- }
121
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/tools/utils.ts"],"names":[],"mappings":"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"}