opencode-forge 0.1.5

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 (309) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +534 -0
  3. package/config.jsonc +47 -0
  4. package/dist/agents/architect.d.ts +3 -0
  5. package/dist/agents/architect.d.ts.map +1 -0
  6. package/dist/agents/architect.js +152 -0
  7. package/dist/agents/architect.js.map +1 -0
  8. package/dist/agents/auditor.d.ts +3 -0
  9. package/dist/agents/auditor.d.ts.map +1 -0
  10. package/dist/agents/auditor.js +168 -0
  11. package/dist/agents/auditor.js.map +1 -0
  12. package/dist/agents/code.d.ts +3 -0
  13. package/dist/agents/code.d.ts.map +1 -0
  14. package/dist/agents/code.js +67 -0
  15. package/dist/agents/code.js.map +1 -0
  16. package/dist/agents/index.d.ts +4 -0
  17. package/dist/agents/index.d.ts.map +1 -0
  18. package/dist/agents/index.js +9 -0
  19. package/dist/agents/index.js.map +1 -0
  20. package/dist/agents/prompts.d.ts +1 -0
  21. package/dist/agents/prompts.d.ts.map +1 -0
  22. package/dist/agents/prompts.js +4 -0
  23. package/dist/agents/prompts.js.map +1 -0
  24. package/dist/agents/types.d.ts +34 -0
  25. package/dist/agents/types.d.ts.map +1 -0
  26. package/dist/agents/types.js +2 -0
  27. package/dist/agents/types.js.map +1 -0
  28. package/dist/cache/index.d.ts +4 -0
  29. package/dist/cache/index.d.ts.map +1 -0
  30. package/dist/cache/index.js +5 -0
  31. package/dist/cache/index.js.map +1 -0
  32. package/dist/cache/memory-cache.d.ts +14 -0
  33. package/dist/cache/memory-cache.d.ts.map +1 -0
  34. package/dist/cache/memory-cache.js +51 -0
  35. package/dist/cache/memory-cache.js.map +1 -0
  36. package/dist/cache/types.d.ts +8 -0
  37. package/dist/cache/types.d.ts.map +1 -0
  38. package/dist/cache/types.js +2 -0
  39. package/dist/cache/types.js.map +1 -0
  40. package/dist/cli/commands/cancel.d.ts +15 -0
  41. package/dist/cli/commands/cancel.d.ts.map +1 -0
  42. package/dist/cli/commands/cancel.js +194 -0
  43. package/dist/cli/commands/cancel.js.map +1 -0
  44. package/dist/cli/commands/graph.d.ts +16 -0
  45. package/dist/cli/commands/graph.d.ts.map +1 -0
  46. package/dist/cli/commands/graph.js +208 -0
  47. package/dist/cli/commands/graph.js.map +1 -0
  48. package/dist/cli/commands/restart.d.ts +15 -0
  49. package/dist/cli/commands/restart.d.ts.map +1 -0
  50. package/dist/cli/commands/restart.js +268 -0
  51. package/dist/cli/commands/restart.js.map +1 -0
  52. package/dist/cli/commands/status.d.ts +17 -0
  53. package/dist/cli/commands/status.d.ts.map +1 -0
  54. package/dist/cli/commands/status.js +356 -0
  55. package/dist/cli/commands/status.js.map +1 -0
  56. package/dist/cli/commands/upgrade.d.ts +3 -0
  57. package/dist/cli/commands/upgrade.d.ts.map +1 -0
  58. package/dist/cli/commands/upgrade.js +40 -0
  59. package/dist/cli/commands/upgrade.js.map +1 -0
  60. package/dist/cli/index.d.ts +3 -0
  61. package/dist/cli/index.d.ts.map +1 -0
  62. package/dist/cli/index.js +224 -0
  63. package/dist/cli/index.js.map +1 -0
  64. package/dist/cli/utils.d.ts +36 -0
  65. package/dist/cli/utils.d.ts.map +1 -0
  66. package/dist/cli/utils.js +163 -0
  67. package/dist/cli/utils.js.map +1 -0
  68. package/dist/command/template/review.txt +101 -0
  69. package/dist/config.d.ts +5 -0
  70. package/dist/config.d.ts.map +1 -0
  71. package/dist/config.js +186 -0
  72. package/dist/config.js.map +1 -0
  73. package/dist/constants/loop.d.ts +10 -0
  74. package/dist/constants/loop.d.ts.map +1 -0
  75. package/dist/constants/loop.js +6 -0
  76. package/dist/constants/loop.js.map +1 -0
  77. package/dist/graph/cache.d.ts +17 -0
  78. package/dist/graph/cache.d.ts.map +1 -0
  79. package/dist/graph/cache.js +50 -0
  80. package/dist/graph/cache.js.map +1 -0
  81. package/dist/graph/client.d.ts +51 -0
  82. package/dist/graph/client.d.ts.map +1 -0
  83. package/dist/graph/client.js +152 -0
  84. package/dist/graph/client.js.map +1 -0
  85. package/dist/graph/clone-detection.d.ts +9 -0
  86. package/dist/graph/clone-detection.d.ts.map +1 -0
  87. package/dist/graph/clone-detection.js +148 -0
  88. package/dist/graph/clone-detection.js.map +1 -0
  89. package/dist/graph/constants.d.ts +18 -0
  90. package/dist/graph/constants.d.ts.map +1 -0
  91. package/dist/graph/constants.js +532 -0
  92. package/dist/graph/constants.js.map +1 -0
  93. package/dist/graph/database.d.ts +11 -0
  94. package/dist/graph/database.d.ts.map +1 -0
  95. package/dist/graph/database.js +250 -0
  96. package/dist/graph/database.js.map +1 -0
  97. package/dist/graph/index.d.ts +14 -0
  98. package/dist/graph/index.d.ts.map +1 -0
  99. package/dist/graph/index.js +13 -0
  100. package/dist/graph/index.js.map +1 -0
  101. package/dist/graph/repo-map.d.ts +59 -0
  102. package/dist/graph/repo-map.d.ts.map +1 -0
  103. package/dist/graph/repo-map.js +948 -0
  104. package/dist/graph/repo-map.js.map +1 -0
  105. package/dist/graph/rpc.d.ts +34 -0
  106. package/dist/graph/rpc.d.ts.map +1 -0
  107. package/dist/graph/rpc.js +139 -0
  108. package/dist/graph/rpc.js.map +1 -0
  109. package/dist/graph/service.d.ts +46 -0
  110. package/dist/graph/service.d.ts.map +1 -0
  111. package/dist/graph/service.js +329 -0
  112. package/dist/graph/service.js.map +1 -0
  113. package/dist/graph/tree-sitter.d.ts +40 -0
  114. package/dist/graph/tree-sitter.d.ts.map +1 -0
  115. package/dist/graph/tree-sitter.js +799 -0
  116. package/dist/graph/tree-sitter.js.map +1 -0
  117. package/dist/graph/types.d.ts +175 -0
  118. package/dist/graph/types.d.ts.map +1 -0
  119. package/dist/graph/types.js +105 -0
  120. package/dist/graph/types.js.map +1 -0
  121. package/dist/graph/utils.d.ts +64 -0
  122. package/dist/graph/utils.d.ts.map +1 -0
  123. package/dist/graph/utils.js +406 -0
  124. package/dist/graph/utils.js.map +1 -0
  125. package/dist/graph/worker.d.ts +2 -0
  126. package/dist/graph/worker.d.ts.map +1 -0
  127. package/dist/graph/worker.js +6043 -0
  128. package/dist/graph/worker.js.map +1 -0
  129. package/dist/hooks/compaction-utils.d.ts +21 -0
  130. package/dist/hooks/compaction-utils.d.ts.map +1 -0
  131. package/dist/hooks/compaction-utils.js +82 -0
  132. package/dist/hooks/compaction-utils.js.map +1 -0
  133. package/dist/hooks/graph-command.d.ts +27 -0
  134. package/dist/hooks/graph-command.d.ts.map +1 -0
  135. package/dist/hooks/graph-command.js +57 -0
  136. package/dist/hooks/graph-command.js.map +1 -0
  137. package/dist/hooks/graph-tools.d.ts +11 -0
  138. package/dist/hooks/graph-tools.d.ts.map +1 -0
  139. package/dist/hooks/graph-tools.js +125 -0
  140. package/dist/hooks/graph-tools.js.map +1 -0
  141. package/dist/hooks/index.d.ts +5 -0
  142. package/dist/hooks/index.d.ts.map +1 -0
  143. package/dist/hooks/index.js +5 -0
  144. package/dist/hooks/index.js.map +1 -0
  145. package/dist/hooks/loop.d.ts +23 -0
  146. package/dist/hooks/loop.d.ts.map +1 -0
  147. package/dist/hooks/loop.js +667 -0
  148. package/dist/hooks/loop.js.map +1 -0
  149. package/dist/hooks/sandbox-tools.d.ts +13 -0
  150. package/dist/hooks/sandbox-tools.d.ts.map +1 -0
  151. package/dist/hooks/sandbox-tools.js +105 -0
  152. package/dist/hooks/sandbox-tools.js.map +1 -0
  153. package/dist/hooks/session.d.ts +19 -0
  154. package/dist/hooks/session.d.ts.map +1 -0
  155. package/dist/hooks/session.js +56 -0
  156. package/dist/hooks/session.js.map +1 -0
  157. package/dist/index.d.ts +11 -0
  158. package/dist/index.d.ts.map +1 -0
  159. package/dist/index.js +298 -0
  160. package/dist/index.js.map +1 -0
  161. package/dist/sandbox/context.d.ts +27 -0
  162. package/dist/sandbox/context.d.ts.map +1 -0
  163. package/dist/sandbox/context.js +18 -0
  164. package/dist/sandbox/context.js.map +1 -0
  165. package/dist/sandbox/docker.d.ts +29 -0
  166. package/dist/sandbox/docker.d.ts.map +1 -0
  167. package/dist/sandbox/docker.js +213 -0
  168. package/dist/sandbox/docker.js.map +1 -0
  169. package/dist/sandbox/manager.d.ts +23 -0
  170. package/dist/sandbox/manager.d.ts.map +1 -0
  171. package/dist/sandbox/manager.js +131 -0
  172. package/dist/sandbox/manager.js.map +1 -0
  173. package/dist/sandbox/path.d.ts +4 -0
  174. package/dist/sandbox/path.d.ts.map +1 -0
  175. package/dist/sandbox/path.js +27 -0
  176. package/dist/sandbox/path.js.map +1 -0
  177. package/dist/services/kv.d.ts +17 -0
  178. package/dist/services/kv.d.ts.map +1 -0
  179. package/dist/services/kv.js +62 -0
  180. package/dist/services/kv.js.map +1 -0
  181. package/dist/services/loop.d.ts +96 -0
  182. package/dist/services/loop.d.ts.map +1 -0
  183. package/dist/services/loop.js +315 -0
  184. package/dist/services/loop.js.map +1 -0
  185. package/dist/setup.d.ts +4 -0
  186. package/dist/setup.d.ts.map +1 -0
  187. package/dist/setup.js +118 -0
  188. package/dist/setup.js.map +1 -0
  189. package/dist/storage/database.d.ts +6 -0
  190. package/dist/storage/database.d.ts.map +1 -0
  191. package/dist/storage/database.js +90 -0
  192. package/dist/storage/database.js.map +1 -0
  193. package/dist/storage/graph-projects.d.ts +80 -0
  194. package/dist/storage/graph-projects.d.ts.map +1 -0
  195. package/dist/storage/graph-projects.js +154 -0
  196. package/dist/storage/graph-projects.js.map +1 -0
  197. package/dist/storage/index.d.ts +5 -0
  198. package/dist/storage/index.d.ts.map +1 -0
  199. package/dist/storage/index.js +3 -0
  200. package/dist/storage/index.js.map +1 -0
  201. package/dist/storage/kv-queries.d.ts +18 -0
  202. package/dist/storage/kv-queries.d.ts.map +1 -0
  203. package/dist/storage/kv-queries.js +70 -0
  204. package/dist/storage/kv-queries.js.map +1 -0
  205. package/dist/tools/graph.d.ts +9 -0
  206. package/dist/tools/graph.d.ts.map +1 -0
  207. package/dist/tools/graph.js +272 -0
  208. package/dist/tools/graph.js.map +1 -0
  209. package/dist/tools/index.d.ts +6 -0
  210. package/dist/tools/index.d.ts.map +1 -0
  211. package/dist/tools/index.js +16 -0
  212. package/dist/tools/index.js.map +1 -0
  213. package/dist/tools/loop.d.ts +21 -0
  214. package/dist/tools/loop.d.ts.map +1 -0
  215. package/dist/tools/loop.js +570 -0
  216. package/dist/tools/loop.js.map +1 -0
  217. package/dist/tools/plan-approval.d.ts +15 -0
  218. package/dist/tools/plan-approval.d.ts.map +1 -0
  219. package/dist/tools/plan-approval.js +203 -0
  220. package/dist/tools/plan-approval.js.map +1 -0
  221. package/dist/tools/plan-execute.d.ts +4 -0
  222. package/dist/tools/plan-execute.d.ts.map +1 -0
  223. package/dist/tools/plan-execute.js +85 -0
  224. package/dist/tools/plan-execute.js.map +1 -0
  225. package/dist/tools/plan-kv.d.ts +4 -0
  226. package/dist/tools/plan-kv.d.ts.map +1 -0
  227. package/dist/tools/plan-kv.js +107 -0
  228. package/dist/tools/plan-kv.js.map +1 -0
  229. package/dist/tools/review.d.ts +4 -0
  230. package/dist/tools/review.d.ts.map +1 -0
  231. package/dist/tools/review.js +90 -0
  232. package/dist/tools/review.js.map +1 -0
  233. package/dist/tools/sandbox-fs.d.ts +22 -0
  234. package/dist/tools/sandbox-fs.d.ts.map +1 -0
  235. package/dist/tools/sandbox-fs.js +83 -0
  236. package/dist/tools/sandbox-fs.js.map +1 -0
  237. package/dist/tools/types.d.ts +26 -0
  238. package/dist/tools/types.d.ts.map +1 -0
  239. package/dist/tools/types.js +2 -0
  240. package/dist/tools/types.js.map +1 -0
  241. package/dist/tui.d.ts +3 -0
  242. package/dist/tui.js +2061 -0
  243. package/dist/types.d.ts +124 -0
  244. package/dist/types.d.ts.map +1 -0
  245. package/dist/types.js +2 -0
  246. package/dist/types.js.map +1 -0
  247. package/dist/utils/git-branch.d.ts +11 -0
  248. package/dist/utils/git-branch.d.ts.map +1 -0
  249. package/dist/utils/git-branch.js +35 -0
  250. package/dist/utils/git-branch.js.map +1 -0
  251. package/dist/utils/graph-status-store.d.ts +72 -0
  252. package/dist/utils/graph-status-store.d.ts.map +1 -0
  253. package/dist/utils/graph-status-store.js +62 -0
  254. package/dist/utils/graph-status-store.js.map +1 -0
  255. package/dist/utils/logger.d.ts +8 -0
  256. package/dist/utils/logger.d.ts.map +1 -0
  257. package/dist/utils/logger.js +89 -0
  258. package/dist/utils/logger.js.map +1 -0
  259. package/dist/utils/loop-format.d.ts +5 -0
  260. package/dist/utils/loop-format.d.ts.map +1 -0
  261. package/dist/utils/loop-format.js +29 -0
  262. package/dist/utils/loop-format.js.map +1 -0
  263. package/dist/utils/loop-helpers.d.ts +9 -0
  264. package/dist/utils/loop-helpers.d.ts.map +1 -0
  265. package/dist/utils/loop-helpers.js +20 -0
  266. package/dist/utils/loop-helpers.js.map +1 -0
  267. package/dist/utils/loop-launch.d.ts +32 -0
  268. package/dist/utils/loop-launch.d.ts.map +1 -0
  269. package/dist/utils/loop-launch.js +162 -0
  270. package/dist/utils/loop-launch.js.map +1 -0
  271. package/dist/utils/model-fallback.d.ts +27 -0
  272. package/dist/utils/model-fallback.d.ts.map +1 -0
  273. package/dist/utils/model-fallback.js +33 -0
  274. package/dist/utils/model-fallback.js.map +1 -0
  275. package/dist/utils/partial-match.d.ts +7 -0
  276. package/dist/utils/partial-match.d.ts.map +1 -0
  277. package/dist/utils/partial-match.js +56 -0
  278. package/dist/utils/partial-match.js.map +1 -0
  279. package/dist/utils/plan-execution.d.ts +65 -0
  280. package/dist/utils/plan-execution.d.ts.map +1 -0
  281. package/dist/utils/plan-execution.js +107 -0
  282. package/dist/utils/plan-execution.js.map +1 -0
  283. package/dist/utils/session-stats.d.ts +36 -0
  284. package/dist/utils/session-stats.d.ts.map +1 -0
  285. package/dist/utils/session-stats.js +145 -0
  286. package/dist/utils/session-stats.js.map +1 -0
  287. package/dist/utils/tui-graph-status.d.ts +38 -0
  288. package/dist/utils/tui-graph-status.d.ts.map +1 -0
  289. package/dist/utils/tui-graph-status.js +95 -0
  290. package/dist/utils/tui-graph-status.js.map +1 -0
  291. package/dist/utils/tui-plan-store.d.ts +54 -0
  292. package/dist/utils/tui-plan-store.d.ts.map +1 -0
  293. package/dist/utils/tui-plan-store.js +168 -0
  294. package/dist/utils/tui-plan-store.js.map +1 -0
  295. package/dist/utils/tui-refresh-helpers.d.ts +44 -0
  296. package/dist/utils/tui-refresh-helpers.d.ts.map +1 -0
  297. package/dist/utils/tui-refresh-helpers.js +120 -0
  298. package/dist/utils/tui-refresh-helpers.js.map +1 -0
  299. package/dist/utils/upgrade.d.ts +23 -0
  300. package/dist/utils/upgrade.d.ts.map +1 -0
  301. package/dist/utils/upgrade.js +111 -0
  302. package/dist/utils/upgrade.js.map +1 -0
  303. package/dist/version.d.ts +2 -0
  304. package/dist/version.d.ts.map +1 -0
  305. package/dist/version.js +2 -0
  306. package/dist/version.js.map +1 -0
  307. package/package.json +92 -0
  308. package/scripts/build.ts +67 -0
  309. package/src/command/template/review.txt +101 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/graph/worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ interface PromptResponsePart {
2
+ type: string;
3
+ text?: string;
4
+ }
5
+ interface SessionMessage {
6
+ info: {
7
+ role: string;
8
+ };
9
+ parts: PromptResponsePart[];
10
+ }
11
+ export declare function buildCustomCompactionPrompt(): string;
12
+ export declare function formatCompactionDiagnostics(stats: {
13
+ conventions: number;
14
+ decisions: number;
15
+ tokensInjected: number;
16
+ }): string;
17
+ export declare function extractCompactionSummary(messages: SessionMessage[]): string | null;
18
+ export declare function estimateTokens(text: string): number;
19
+ export declare function trimToTokenBudget(content: string, maxTokens: number, priority: 'high' | 'medium' | 'low'): string;
20
+ export {};
21
+ //# sourceMappingURL=compaction-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction-utils.d.ts","sourceRoot":"","sources":["../../src/hooks/compaction-utils.ts"],"names":[],"mappings":"AAAA,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,UAAU,cAAc;IACtB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACtB,KAAK,EAAE,kBAAkB,EAAE,CAAA;CAC5B;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CA6BpD;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;CACvB,GAAG,MAAM,CAcT;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,GAAG,IAAI,CAUlF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAClC,MAAM,CA2BR"}
@@ -0,0 +1,82 @@
1
+ export function buildCustomCompactionPrompt() {
2
+ return `You are generating a continuation context for a coding session. Your summary will be the ONLY context after compaction.
3
+ Preserve everything needed for seamless continuation.
4
+
5
+ ## CRITICAL - Preserve These Verbatim
6
+ 1. The current task/objective (quote the user's original request exactly)
7
+ 2. ALL file paths being actively worked on (with what's being done)
8
+ 3. Key decisions made and their rationale
9
+ 4. Any corrections or gotchas discovered during the session
10
+ 5. Todo list state (what's done, in progress, pending)
11
+
12
+ ## Structure Your Summary As:
13
+
14
+ ### Active Task
15
+ [Verbatim objective + what was happening when compaction fired]
16
+
17
+ ### Key Context
18
+ [Decisions, constraints, user preferences, corrections]
19
+
20
+ ### Active Files
21
+ [filepath -> what's being done to it]
22
+
23
+ ### Next Steps
24
+ [What should happen immediately after compaction]
25
+
26
+ ## Rules
27
+ - Use specific file paths.
28
+ - State what tools returned, not just that they were called
29
+ - Prefer completeness over brevity - this is the agent's entire working memory`;
30
+ }
31
+ export function formatCompactionDiagnostics(stats) {
32
+ const parts = [];
33
+ if (stats.conventions > 0) {
34
+ parts.push(`${stats.conventions} convention${stats.conventions !== 1 ? 's' : ''}`);
35
+ }
36
+ if (stats.decisions > 0) {
37
+ parts.push(`${stats.decisions} decision${stats.decisions !== 1 ? 's' : ''}`);
38
+ }
39
+ if (parts.length === 0)
40
+ return '';
41
+ return `> **Compaction preserved:** ${parts.join(', ')} (~${stats.tokensInjected} tokens injected)`;
42
+ }
43
+ export function extractCompactionSummary(messages) {
44
+ const reversed = [...messages].reverse();
45
+ for (const msg of reversed) {
46
+ if (msg.info.role !== 'assistant')
47
+ continue;
48
+ const textParts = msg.parts
49
+ .filter((p) => p.type === 'text' && typeof p.text === 'string')
50
+ .map(p => p.text);
51
+ if (textParts.length > 0)
52
+ return textParts.join('\n');
53
+ }
54
+ return null;
55
+ }
56
+ export function estimateTokens(text) {
57
+ return Math.ceil(text.length / 4);
58
+ }
59
+ export function trimToTokenBudget(content, maxTokens, priority) {
60
+ const maxChars = maxTokens * 4;
61
+ if (content.length <= maxChars)
62
+ return content;
63
+ if (priority === 'low') {
64
+ return content.slice(0, maxChars) + '...';
65
+ }
66
+ const lines = content.split('\n');
67
+ const trimmed = [];
68
+ let currentChars = 0;
69
+ const skipFromEnd = priority === 'medium' ? Math.floor(lines.length * 0.2) : 0;
70
+ const linesToUse = skipFromEnd > 0 ? lines.slice(0, -skipFromEnd) : lines;
71
+ for (const line of linesToUse) {
72
+ if (currentChars + line.length + 1 > maxChars)
73
+ break;
74
+ trimmed.push(line);
75
+ currentChars += line.length + 1;
76
+ }
77
+ if (trimmed.length < linesToUse.length) {
78
+ trimmed.push('...');
79
+ }
80
+ return trimmed.join('\n');
81
+ }
82
+ //# sourceMappingURL=compaction-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction-utils.js","sourceRoot":"","sources":["../../src/hooks/compaction-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Graph command event hook for handling TUI command events.
3
+ *
4
+ * This module provides an event hook that listens for `tui.command.execute`
5
+ * events and routes graph-related commands to the graph service.
6
+ * This replaces the invalid shared-module bridge approach.
7
+ */
8
+ import type { GraphService } from '../graph/service';
9
+ import type { Logger } from '../types';
10
+ export interface GraphCommandHookInput {
11
+ event: {
12
+ type: string;
13
+ properties?: Record<string, unknown>;
14
+ };
15
+ }
16
+ /**
17
+ * Creates an event hook that handles TUI command execute events.
18
+ *
19
+ * When a `tui.command.execute` event is received with the `graph.scan` command,
20
+ * this hook calls the graph service's scan method.
21
+ *
22
+ * @param graphService - The graph service instance (may be null if disabled)
23
+ * @param logger - Logger for diagnostic output
24
+ * @returns An async event handler function
25
+ */
26
+ export declare function createGraphCommandEventHook(graphService: GraphService | null, logger: Logger): (input: GraphCommandHookInput) => Promise<void>;
27
+ //# sourceMappingURL=graph-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-command.d.ts","sourceRoot":"","sources":["../../src/hooks/graph-command.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEtC,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACrC,CAAA;CACF;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,MAAM,EAAE,MAAM,GACb,CAAC,KAAK,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CA4CjD"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Graph command event hook for handling TUI command events.
3
+ *
4
+ * This module provides an event hook that listens for `tui.command.execute`
5
+ * events and routes graph-related commands to the graph service.
6
+ * This replaces the invalid shared-module bridge approach.
7
+ */
8
+ /**
9
+ * Creates an event hook that handles TUI command execute events.
10
+ *
11
+ * When a `tui.command.execute` event is received with the `graph.scan` command,
12
+ * this hook calls the graph service's scan method.
13
+ *
14
+ * @param graphService - The graph service instance (may be null if disabled)
15
+ * @param logger - Logger for diagnostic output
16
+ * @returns An async event handler function
17
+ */
18
+ export function createGraphCommandEventHook(graphService, logger) {
19
+ const GRAPH_SCAN_COMMAND = 'graph.scan';
20
+ return async (input) => {
21
+ const { event } = input;
22
+ // Only handle tui.command.execute events
23
+ if (event.type !== 'tui.command.execute') {
24
+ return;
25
+ }
26
+ const properties = event.properties;
27
+ if (!properties || typeof properties !== 'object') {
28
+ return;
29
+ }
30
+ const command = properties.command;
31
+ if (!command) {
32
+ return;
33
+ }
34
+ // Only handle graph.scan commands
35
+ if (command !== GRAPH_SCAN_COMMAND) {
36
+ return;
37
+ }
38
+ // Check if graph service is available
39
+ if (!graphService) {
40
+ logger.log('Graph scan command received but graph service is not available');
41
+ return;
42
+ }
43
+ try {
44
+ logger.debug('Graph scan command received, initiating scan');
45
+ await graphService.scan();
46
+ logger.log('Graph scan completed successfully');
47
+ }
48
+ catch (err) {
49
+ const errorMessage = err instanceof Error ? err.message : String(err);
50
+ logger.error('Graph scan command failed', err);
51
+ const error = new Error(`Graph scan failed: ${errorMessage}`);
52
+ error.cause = err;
53
+ throw error;
54
+ }
55
+ };
56
+ }
57
+ //# sourceMappingURL=graph-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-command.js","sourceRoot":"","sources":["../../src/hooks/graph-command.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CACzC,YAAiC,EACjC,MAAc;IAEd,MAAM,kBAAkB,GAAG,YAAY,CAAA;IAEvC,OAAO,KAAK,EAAE,KAA4B,EAAiB,EAAE;QAC3D,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;QAEvB,yCAAyC;QACzC,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACzC,OAAM;QACR,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QACnC,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAClD,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAA6B,CAAA;QACxD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAM;QACR,CAAC;QAED,kCAAkC;QAClC,IAAI,OAAO,KAAK,kBAAkB,EAAE,CAAC;YACnC,OAAM;QACR,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAA;YAC5E,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;YAC5D,MAAM,YAAY,CAAC,IAAI,EAAE,CAAA;YACzB,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACrE,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAA;YAC9C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,sBAAsB,YAAY,EAAE,CAAC,CAAA;YAC7D,KAAK,CAAC,KAAK,GAAG,GAAG,CAAA;YACjB,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Hooks } from '@opencode-ai/plugin';
2
+ import type { Logger } from '../types';
3
+ import type { GraphService } from '../graph/service';
4
+ interface GraphToolHookDeps {
5
+ graphService: GraphService | null;
6
+ logger: Logger;
7
+ cwd: string;
8
+ }
9
+ export declare function createGraphToolAfterHook(deps: GraphToolHookDeps): Hooks['tool.execute.after'];
10
+ export {};
11
+ //# sourceMappingURL=graph-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-tools.d.ts","sourceRoot":"","sources":["../../src/hooks/graph-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,UAAU,iBAAiB;IACzB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAA;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;CACZ;AAuHD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,iBAAiB,GAAG,KAAK,CAAC,oBAAoB,CAAC,CA8B7F"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Extract file paths from tool outputs that may have mutated files.
3
+ * This handles common file-editing tools and bash commands that clearly mutate tracked files.
4
+ */
5
+ function extractMutatedPaths(tool, output, args) {
6
+ const paths = [];
7
+ // Handle apply_patch tool - explicitly edits files
8
+ if (tool === 'apply_patch') {
9
+ const argsObj = args;
10
+ const seen = new Set();
11
+ // Primary source: parse patch text from args if present
12
+ // Common keys for patch payload: patch, patchText, patch_text, diff
13
+ const patchKeys = ['patch', 'patchText', 'patch_text', 'diff'];
14
+ for (const key of patchKeys) {
15
+ const patchText = argsObj?.[key];
16
+ if (patchText && typeof patchText === 'string') {
17
+ // Look for +++ b/path headers (these indicate the new/modified file)
18
+ const diffRegex = /^\+\+\+ b\/([^\s]+)/gm;
19
+ let match;
20
+ while ((match = diffRegex.exec(patchText)) !== null) {
21
+ const path = match[1];
22
+ if (!seen.has(path)) {
23
+ seen.add(path);
24
+ paths.push(path);
25
+ }
26
+ }
27
+ // If we found paths in args patch, don't continue to output parsing
28
+ if (paths.length > 0) {
29
+ break;
30
+ }
31
+ }
32
+ }
33
+ // Secondary: parse patch text from output if args didn't yield paths
34
+ if (paths.length === 0 && output) {
35
+ // Look for +++ b/path headers (these indicate the new/modified file)
36
+ const diffRegex = /^\+\+\+ b\/([^\s]+)/gm;
37
+ let match;
38
+ while ((match = diffRegex.exec(output)) !== null) {
39
+ const path = match[1];
40
+ if (!seen.has(path)) {
41
+ seen.add(path);
42
+ paths.push(path);
43
+ }
44
+ }
45
+ }
46
+ // Fall back to path arguments if patch parsing yielded nothing
47
+ if (paths.length === 0) {
48
+ const pathKeys = ['path', 'file', 'file_path', 'filepath', 'target'];
49
+ for (const key of pathKeys) {
50
+ const value = argsObj?.[key];
51
+ if (value && typeof value === 'string') {
52
+ paths.push(value);
53
+ break;
54
+ }
55
+ }
56
+ }
57
+ }
58
+ // Handle bash - only for clear file mutations
59
+ if (tool === 'bash' && output) {
60
+ const argsObj = args;
61
+ const command = argsObj?.command || '';
62
+ // Detect echo/printf redirecting to files
63
+ const redirectMatch = command.match(/(?:echo|printf|cat)\s+[^>]*>\s*([^\s;]+)/);
64
+ if (redirectMatch?.[1]) {
65
+ paths.push(redirectMatch[1]);
66
+ }
67
+ // Detect common file creation commands
68
+ const fileCommands = [
69
+ /touch\s+([^\s;]+)/,
70
+ /cp\s+[^\s]+\s+([^\s;]+)/,
71
+ /mv\s+[^\s]+\s+([^\s;]+)/,
72
+ /sed\s+-i[^>]*\s+([^\s;]+)/,
73
+ ];
74
+ for (const regex of fileCommands) {
75
+ const match = command.match(regex);
76
+ if (match?.[1]) {
77
+ paths.push(match[1]);
78
+ }
79
+ }
80
+ }
81
+ // Handle write tool
82
+ if (tool === 'write' || tool === 'str_replace_editor') {
83
+ const argsObj = args;
84
+ // Try common path argument keys
85
+ const pathKeys = ['path', 'file', 'file_path', 'filepath'];
86
+ for (const key of pathKeys) {
87
+ const value = argsObj?.[key];
88
+ if (value && typeof value === 'string') {
89
+ paths.push(value);
90
+ break;
91
+ }
92
+ }
93
+ }
94
+ return paths;
95
+ }
96
+ /**
97
+ * Check if a path is within the project root
98
+ */
99
+ function isPathInProject(absPath, cwd) {
100
+ return absPath.startsWith(cwd);
101
+ }
102
+ export function createGraphToolAfterHook(deps) {
103
+ return async (input, output) => {
104
+ // No-op if graph service is disabled
105
+ if (!deps.graphService) {
106
+ return;
107
+ }
108
+ const mutatedPaths = extractMutatedPaths(input.tool, output.output ?? '', input.args);
109
+ if (mutatedPaths.length === 0) {
110
+ return;
111
+ }
112
+ for (const path of mutatedPaths) {
113
+ // Resolve to absolute path
114
+ const absPath = path.startsWith('/') ? path : `${deps.cwd}/${path}`;
115
+ // Only enqueue if within project
116
+ if (!isPathInProject(absPath, deps.cwd)) {
117
+ deps.logger.debug(`Graph hook: skipping path outside project: ${path}`);
118
+ continue;
119
+ }
120
+ deps.logger.debug(`Graph hook: detected file mutation from ${input.tool}: ${path}`);
121
+ deps.graphService.onFileChanged(absPath);
122
+ }
123
+ };
124
+ }
125
+ //# sourceMappingURL=graph-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-tools.js","sourceRoot":"","sources":["../../src/hooks/graph-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { createSessionHooks, type SessionHooks } from './session';
2
+ export { buildCustomCompactionPrompt, formatCompactionDiagnostics, estimateTokens, trimToTokenBudget, extractCompactionSummary, } from './compaction-utils';
3
+ export { createLoopEventHandler, type LoopEventHandler } from './loop';
4
+ export { createGraphToolAfterHook } from './graph-tools';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,cAAc,EACd,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { createSessionHooks } from './session';
2
+ export { buildCustomCompactionPrompt, formatCompactionDiagnostics, estimateTokens, trimToTokenBudget, extractCompactionSummary, } from './compaction-utils';
3
+ export { createLoopEventHandler } from './loop';
4
+ export { createGraphToolAfterHook } from './graph-tools';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,WAAW,CAAA;AACjE,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,cAAc,EACd,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,sBAAsB,EAAyB,MAAM,QAAQ,CAAA;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,23 @@
1
+ import type { PluginInput } from '@opencode-ai/plugin';
2
+ import type { OpencodeClient } from '@opencode-ai/sdk/v2';
3
+ import type { LoopService } from '../services/loop';
4
+ import type { Logger, PluginConfig } from '../types';
5
+ import type { createSandboxManager } from '../sandbox/manager';
6
+ export interface LoopEventHandler {
7
+ onEvent(input: {
8
+ event: {
9
+ type: string;
10
+ properties?: Record<string, unknown>;
11
+ };
12
+ }): Promise<void>;
13
+ terminateAll(): void;
14
+ clearAllRetryTimeouts(): void;
15
+ startWatchdog(worktreeName: string): void;
16
+ getStallInfo(worktreeName: string): {
17
+ consecutiveStalls: number;
18
+ lastActivityTime: number;
19
+ } | null;
20
+ cancelBySessionId(sessionId: string): Promise<boolean>;
21
+ }
22
+ export declare function createLoopEventHandler(loopService: LoopService, _client: PluginInput['client'], v2Client: OpencodeClient, logger: Logger, getConfig: () => PluginConfig, sandboxManager?: ReturnType<typeof createSandboxManager>): LoopEventHandler;
23
+ //# sourceMappingURL=loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/hooks/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,kBAAkB,CAAA;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAKpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChG,YAAY,IAAI,IAAI,CAAA;IACpB,qBAAqB,IAAI,IAAI,CAAA;IAC7B,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IACzC,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAClG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACvD;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC9B,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,YAAY,EAC7B,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,GACvD,gBAAgB,CAixBlB"}