inferoa 0.1.0

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 (200) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +154 -0
  3. package/dist/src/app.d.ts +16 -0
  4. package/dist/src/app.js +17 -0
  5. package/dist/src/app.js.map +1 -0
  6. package/dist/src/autoresearch/state.d.ts +106 -0
  7. package/dist/src/autoresearch/state.js +469 -0
  8. package/dist/src/autoresearch/state.js.map +1 -0
  9. package/dist/src/cli.d.ts +2 -0
  10. package/dist/src/cli.js +415 -0
  11. package/dist/src/cli.js.map +1 -0
  12. package/dist/src/code-intelligence/codegraph-engine.d.ts +55 -0
  13. package/dist/src/code-intelligence/codegraph-engine.js +593 -0
  14. package/dist/src/code-intelligence/codegraph-engine.js.map +1 -0
  15. package/dist/src/code-intelligence/hub.d.ts +37 -0
  16. package/dist/src/code-intelligence/hub.js +65 -0
  17. package/dist/src/code-intelligence/hub.js.map +1 -0
  18. package/dist/src/config/config.d.ts +12 -0
  19. package/dist/src/config/config.js +229 -0
  20. package/dist/src/config/config.js.map +1 -0
  21. package/dist/src/config/defaults.d.ts +2 -0
  22. package/dist/src/config/defaults.js +44 -0
  23. package/dist/src/config/defaults.js.map +1 -0
  24. package/dist/src/config/secret-vault.d.ts +3 -0
  25. package/dist/src/config/secret-vault.js +106 -0
  26. package/dist/src/config/secret-vault.js.map +1 -0
  27. package/dist/src/context/compressor.d.ts +33 -0
  28. package/dist/src/context/compressor.js +501 -0
  29. package/dist/src/context/compressor.js.map +1 -0
  30. package/dist/src/context/prompt.d.ts +26 -0
  31. package/dist/src/context/prompt.js +572 -0
  32. package/dist/src/context/prompt.js.map +1 -0
  33. package/dist/src/daemon/serve.d.ts +2 -0
  34. package/dist/src/daemon/serve.js +11 -0
  35. package/dist/src/daemon/serve.js.map +1 -0
  36. package/dist/src/daemon/supervisor.d.ts +33 -0
  37. package/dist/src/daemon/supervisor.js +252 -0
  38. package/dist/src/daemon/supervisor.js.map +1 -0
  39. package/dist/src/goals/state.d.ts +105 -0
  40. package/dist/src/goals/state.js +736 -0
  41. package/dist/src/goals/state.js.map +1 -0
  42. package/dist/src/model/endpoint-signals.d.ts +15 -0
  43. package/dist/src/model/endpoint-signals.js +186 -0
  44. package/dist/src/model/endpoint-signals.js.map +1 -0
  45. package/dist/src/model/gateway.d.ts +11 -0
  46. package/dist/src/model/gateway.js +455 -0
  47. package/dist/src/model/gateway.js.map +1 -0
  48. package/dist/src/plans/state.d.ts +28 -0
  49. package/dist/src/plans/state.js +123 -0
  50. package/dist/src/plans/state.js.map +1 -0
  51. package/dist/src/runtime.d.ts +92 -0
  52. package/dist/src/runtime.js +757 -0
  53. package/dist/src/runtime.js.map +1 -0
  54. package/dist/src/session/store.d.ts +84 -0
  55. package/dist/src/session/store.js +593 -0
  56. package/dist/src/session/store.js.map +1 -0
  57. package/dist/src/session/workspace.d.ts +2 -0
  58. package/dist/src/session/workspace.js +14 -0
  59. package/dist/src/session/workspace.js.map +1 -0
  60. package/dist/src/skills/registry.d.ts +24 -0
  61. package/dist/src/skills/registry.js +203 -0
  62. package/dist/src/skills/registry.js.map +1 -0
  63. package/dist/src/tools/autoresearch-tools.d.ts +6 -0
  64. package/dist/src/tools/autoresearch-tools.js +412 -0
  65. package/dist/src/tools/autoresearch-tools.js.map +1 -0
  66. package/dist/src/tools/clarify-tool.d.ts +3 -0
  67. package/dist/src/tools/clarify-tool.js +107 -0
  68. package/dist/src/tools/clarify-tool.js.map +1 -0
  69. package/dist/src/tools/code-intelligence.d.ts +15 -0
  70. package/dist/src/tools/code-intelligence.js +391 -0
  71. package/dist/src/tools/code-intelligence.js.map +1 -0
  72. package/dist/src/tools/context.d.ts +11 -0
  73. package/dist/src/tools/context.js +2 -0
  74. package/dist/src/tools/context.js.map +1 -0
  75. package/dist/src/tools/goal-tools.d.ts +3 -0
  76. package/dist/src/tools/goal-tools.js +279 -0
  77. package/dist/src/tools/goal-tools.js.map +1 -0
  78. package/dist/src/tools/omni-tools.d.ts +8 -0
  79. package/dist/src/tools/omni-tools.js +349 -0
  80. package/dist/src/tools/omni-tools.js.map +1 -0
  81. package/dist/src/tools/permissions.d.ts +11 -0
  82. package/dist/src/tools/permissions.js +74 -0
  83. package/dist/src/tools/permissions.js.map +1 -0
  84. package/dist/src/tools/plan-tools.d.ts +3 -0
  85. package/dist/src/tools/plan-tools.js +314 -0
  86. package/dist/src/tools/plan-tools.js.map +1 -0
  87. package/dist/src/tools/process-tools.d.ts +6 -0
  88. package/dist/src/tools/process-tools.js +199 -0
  89. package/dist/src/tools/process-tools.js.map +1 -0
  90. package/dist/src/tools/registry.d.ts +20 -0
  91. package/dist/src/tools/registry.js +187 -0
  92. package/dist/src/tools/registry.js.map +1 -0
  93. package/dist/src/tools/schemas.d.ts +3 -0
  94. package/dist/src/tools/schemas.js +500 -0
  95. package/dist/src/tools/schemas.js.map +1 -0
  96. package/dist/src/tools/skill-tools.d.ts +6 -0
  97. package/dist/src/tools/skill-tools.js +124 -0
  98. package/dist/src/tools/skill-tools.js.map +1 -0
  99. package/dist/src/tools/text-args.d.ts +5 -0
  100. package/dist/src/tools/text-args.js +22 -0
  101. package/dist/src/tools/text-args.js.map +1 -0
  102. package/dist/src/tools/web-search.d.ts +5 -0
  103. package/dist/src/tools/web-search.js +602 -0
  104. package/dist/src/tools/web-search.js.map +1 -0
  105. package/dist/src/tools/workspace-tools.d.ts +17 -0
  106. package/dist/src/tools/workspace-tools.js +561 -0
  107. package/dist/src/tools/workspace-tools.js.map +1 -0
  108. package/dist/src/tui/activity.d.ts +11 -0
  109. package/dist/src/tui/activity.js +75 -0
  110. package/dist/src/tui/activity.js.map +1 -0
  111. package/dist/src/tui/ansi.d.ts +24 -0
  112. package/dist/src/tui/ansi.js +131 -0
  113. package/dist/src/tui/ansi.js.map +1 -0
  114. package/dist/src/tui/app.d.ts +163 -0
  115. package/dist/src/tui/app.js +4204 -0
  116. package/dist/src/tui/app.js.map +1 -0
  117. package/dist/src/tui/cache-footer.d.ts +21 -0
  118. package/dist/src/tui/cache-footer.js +75 -0
  119. package/dist/src/tui/cache-footer.js.map +1 -0
  120. package/dist/src/tui/clarify.d.ts +14 -0
  121. package/dist/src/tui/clarify.js +187 -0
  122. package/dist/src/tui/clarify.js.map +1 -0
  123. package/dist/src/tui/composer.d.ts +79 -0
  124. package/dist/src/tui/composer.js +592 -0
  125. package/dist/src/tui/composer.js.map +1 -0
  126. package/dist/src/tui/event-view.d.ts +5 -0
  127. package/dist/src/tui/event-view.js +392 -0
  128. package/dist/src/tui/event-view.js.map +1 -0
  129. package/dist/src/tui/home.d.ts +7 -0
  130. package/dist/src/tui/home.js +92 -0
  131. package/dist/src/tui/home.js.map +1 -0
  132. package/dist/src/tui/markdown.d.ts +18 -0
  133. package/dist/src/tui/markdown.js +271 -0
  134. package/dist/src/tui/markdown.js.map +1 -0
  135. package/dist/src/tui/mode-footer.d.ts +9 -0
  136. package/dist/src/tui/mode-footer.js +62 -0
  137. package/dist/src/tui/mode-footer.js.map +1 -0
  138. package/dist/src/tui/plan-view.d.ts +8 -0
  139. package/dist/src/tui/plan-view.js +45 -0
  140. package/dist/src/tui/plan-view.js.map +1 -0
  141. package/dist/src/tui/prompt-queue.d.ts +18 -0
  142. package/dist/src/tui/prompt-queue.js +27 -0
  143. package/dist/src/tui/prompt-queue.js.map +1 -0
  144. package/dist/src/tui/resize.d.ts +7 -0
  145. package/dist/src/tui/resize.js +15 -0
  146. package/dist/src/tui/resize.js.map +1 -0
  147. package/dist/src/tui/session-picker.d.ts +10 -0
  148. package/dist/src/tui/session-picker.js +17 -0
  149. package/dist/src/tui/session-picker.js.map +1 -0
  150. package/dist/src/tui/session-transcript.d.ts +2 -0
  151. package/dist/src/tui/session-transcript.js +44 -0
  152. package/dist/src/tui/session-transcript.js.map +1 -0
  153. package/dist/src/tui/slash-notice.d.ts +2 -0
  154. package/dist/src/tui/slash-notice.js +9 -0
  155. package/dist/src/tui/slash-notice.js.map +1 -0
  156. package/dist/src/tui/slash.d.ts +21 -0
  157. package/dist/src/tui/slash.js +103 -0
  158. package/dist/src/tui/slash.js.map +1 -0
  159. package/dist/src/tui/splash.d.ts +4 -0
  160. package/dist/src/tui/splash.js +64 -0
  161. package/dist/src/tui/splash.js.map +1 -0
  162. package/dist/src/tui/tool-renderer.d.ts +6 -0
  163. package/dist/src/tui/tool-renderer.js +1024 -0
  164. package/dist/src/tui/tool-renderer.js.map +1 -0
  165. package/dist/src/tui/transcript-spacing.d.ts +1 -0
  166. package/dist/src/tui/transcript-spacing.js +4 -0
  167. package/dist/src/tui/transcript-spacing.js.map +1 -0
  168. package/dist/src/types.d.ts +220 -0
  169. package/dist/src/types.js +2 -0
  170. package/dist/src/types.js.map +1 -0
  171. package/dist/src/util/abort.d.ts +3 -0
  172. package/dist/src/util/abort.js +19 -0
  173. package/dist/src/util/abort.js.map +1 -0
  174. package/dist/src/util/clock.d.ts +2 -0
  175. package/dist/src/util/clock.js +7 -0
  176. package/dist/src/util/clock.js.map +1 -0
  177. package/dist/src/util/fs.d.ts +13 -0
  178. package/dist/src/util/fs.js +75 -0
  179. package/dist/src/util/fs.js.map +1 -0
  180. package/dist/src/util/hash.d.ts +6 -0
  181. package/dist/src/util/hash.js +50 -0
  182. package/dist/src/util/hash.js.map +1 -0
  183. package/dist/src/util/limit.d.ts +11 -0
  184. package/dist/src/util/limit.js +29 -0
  185. package/dist/src/util/limit.js.map +1 -0
  186. package/dist/src/util/types.d.ts +22 -0
  187. package/dist/src/util/types.js +33 -0
  188. package/dist/src/util/types.js.map +1 -0
  189. package/dist/src/validation/acceptance.d.ts +12 -0
  190. package/dist/src/validation/acceptance.js +251 -0
  191. package/dist/src/validation/acceptance.js.map +1 -0
  192. package/dist/src/validation/milestone.d.ts +2 -0
  193. package/dist/src/validation/milestone.js +141 -0
  194. package/dist/src/validation/milestone.js.map +1 -0
  195. package/docs/final-acceptance-task.md +193 -0
  196. package/docs/public-source-hygiene.md +21 -0
  197. package/docs/roadmap.md +265 -0
  198. package/docs/tui-product-design.md +270 -0
  199. package/package.json +67 -0
  200. package/skills/coding-workflow/SKILL.md +16 -0
@@ -0,0 +1,501 @@
1
+ import { hashJson, randomId } from "../util/hash.js";
2
+ import { truncateText } from "../util/limit.js";
3
+ import { estimateTokens, PromptBuilder } from "./prompt.js";
4
+ const COMPACTION_PROTECTED_PROMPT_LIMIT = 4_000;
5
+ export class ContextCompressor {
6
+ config;
7
+ store;
8
+ workspace;
9
+ gateway;
10
+ constructor(config, store, workspace, gateway) {
11
+ this.config = config;
12
+ this.store = store;
13
+ this.workspace = workspace;
14
+ this.gateway = gateway;
15
+ }
16
+ async assess(context) {
17
+ const estimated = context.estimated_tokens;
18
+ const contextWindow = this.config.model_setup.context_window ?? this.config.context.context_window;
19
+ const threshold = Math.floor(contextWindow * this.config.context.compression_threshold);
20
+ if (this.config.context.force_compression) {
21
+ return {
22
+ should_compact: true,
23
+ reason: "forced-by-config",
24
+ estimated_tokens: estimated,
25
+ threshold_tokens: threshold,
26
+ };
27
+ }
28
+ if (estimated >= threshold) {
29
+ return {
30
+ should_compact: true,
31
+ reason: "threshold",
32
+ estimated_tokens: estimated,
33
+ threshold_tokens: threshold,
34
+ };
35
+ }
36
+ return {
37
+ should_compact: false,
38
+ reason: "below-threshold",
39
+ estimated_tokens: estimated,
40
+ threshold_tokens: threshold,
41
+ };
42
+ }
43
+ async compact(session, promptContext, tools, reason, options = {}) {
44
+ const events = this.store.listEvents(session.session_id);
45
+ const previousCompaction = events.filter((event) => event.type === "context.compacted").at(-1);
46
+ const previousSummary = previousCompaction?.data.summary;
47
+ const previousCutoff = typeof previousCompaction?.data.compacted_through_event_id === "number"
48
+ ? previousCompaction.data.compacted_through_event_id
49
+ : (previousCompaction?.id ?? 0);
50
+ const compactedRegion = events.filter((event) => (event.id ?? 0) > previousCutoff);
51
+ const protection = protectedLoopContext(events, options.activeRunId, options.currentPrompt, this.config.context.protected_recent_loops ?? 3);
52
+ const protectedPromptExcerpts = protection.protected_user_prompts.map(protectedPromptExcerpt);
53
+ const raw = JSON.stringify(compactedRegion, null, 2);
54
+ const resource = this.store.putResource(session.session_id, "compaction.archive", raw, {
55
+ reason,
56
+ event_count: compactedRegion.length,
57
+ });
58
+ let summary = deterministicSummary(session, this.workspace.root, compactedRegion, previousSummary, protectedPromptExcerpts);
59
+ if (this.config.model_setup.base_url && this.config.model_setup.model && compactedRegion.length > 0) {
60
+ try {
61
+ const runId = randomId("run");
62
+ const compactionMessages = [
63
+ {
64
+ role: "system",
65
+ content: "Summarize Inferoa session state using exactly these headings: Goal, Open Objectives, Constraints And Preferences, Progress, Key Decisions, Files And Code, Commands And Outcomes, Errors And Fixes, Critical Context, Next Steps, Resources And Evidence. Preserve exact paths, commands, endpoint names, resource URIs, and protected user prompt excerpts. Do not invent facts.",
66
+ },
67
+ {
68
+ role: "user",
69
+ content: JSON.stringify({
70
+ previous_summary: previousSummary ?? null,
71
+ archive_resource: resource.uri,
72
+ protected_user_prompts: protectedPromptExcerpts,
73
+ protected_loops: protection.protected_loops.map(boundProtectedLoop),
74
+ compacted_events: summarizeEventsForCompaction(compactedRegion, protection.protected_user_prompts),
75
+ }),
76
+ },
77
+ ];
78
+ const compactionToolSchemaHash = hashJson([]);
79
+ const compactionPromptHash = hashJson({ messages: compactionMessages, tool_schema_hash: compactionToolSchemaHash });
80
+ const response = await this.gateway.stream({
81
+ session_id: session.session_id,
82
+ run_id: runId,
83
+ mode: this.config.model_setup.mode,
84
+ provider_id: this.config.model_setup.provider ?? this.config.model_setup.router ?? "unknown",
85
+ model: this.config.model_setup.model,
86
+ request_class: "compaction",
87
+ messages: compactionMessages,
88
+ tools: [],
89
+ prompt_hash: compactionPromptHash,
90
+ tool_schema_hash: compactionToolSchemaHash,
91
+ prompt_epoch_id: promptContext.epoch.prompt_epoch_id,
92
+ cache_salt: promptContext.epoch.cache_salt,
93
+ max_tokens: 1600,
94
+ temperature: 0,
95
+ });
96
+ if (response.content.trim()) {
97
+ summary = response.content.trim();
98
+ this.store.recordEndpointEvidence(session.session_id, runId, this.config.model_setup.provider ?? this.config.model_setup.router ?? "unknown", this.gateway.evidenceFromResponse({
99
+ session_id: session.session_id,
100
+ run_id: runId,
101
+ mode: this.config.model_setup.mode,
102
+ provider_id: this.config.model_setup.provider ?? this.config.model_setup.router ?? "unknown",
103
+ model: this.config.model_setup.model,
104
+ messages: [],
105
+ tools: [],
106
+ request_class: "compaction",
107
+ prompt_hash: compactionPromptHash,
108
+ tool_schema_hash: compactionToolSchemaHash,
109
+ prompt_epoch_id: promptContext.epoch.prompt_epoch_id,
110
+ }, response), compactionPromptHash, compactionToolSchemaHash);
111
+ }
112
+ }
113
+ catch (error) {
114
+ summary += `\n\nErrors And Fixes\n- Model compaction unavailable; used deterministic summary. Error: ${error instanceof Error ? error.message : String(error)}`;
115
+ }
116
+ }
117
+ const compactedThroughEventId = Math.max(0, ...this.store.listEvents(session.session_id).map((event) => event.id ?? 0));
118
+ this.store.appendEvent({
119
+ session_id: session.session_id,
120
+ type: "context.compacted",
121
+ data: {
122
+ reason,
123
+ summary,
124
+ archive_resource_uri: resource.uri,
125
+ archived_events: compactedRegion.length,
126
+ estimated_tokens_before: promptContext.estimated_tokens,
127
+ protected_tail_events: protection.protected_event_count,
128
+ protected_prompt_count: protectedPromptExcerpts.length,
129
+ protected_user_prompts: protectedPromptExcerpts,
130
+ protected_loops: protection.protected_loops.map(boundProtectedLoop),
131
+ compacted_through_event_id: compactedThroughEventId,
132
+ },
133
+ });
134
+ const builder = new PromptBuilder(this.config, this.store, this.workspace);
135
+ const sessionNow = this.store.getSession(session.session_id) ?? session;
136
+ const rebuilt = builder.build(sessionNow, options.currentPrompt ?? "", tools, options.skills ?? [], options.activeRunId, options.enabledSkillNames);
137
+ return {
138
+ summary,
139
+ epoch_id: rebuilt.epoch.prompt_epoch_id,
140
+ resource_uri: resource.uri,
141
+ archived_events: compactedRegion.length,
142
+ protected_tail_events: protection.protected_event_count,
143
+ protected_user_prompts: protectedPromptExcerpts,
144
+ };
145
+ }
146
+ }
147
+ const PROTECTED_TAIL_EVENT_TYPES = new Set([
148
+ "user.prompt",
149
+ "model.response.settled",
150
+ "tool.result",
151
+ "goal.completion_report",
152
+ "run.completed",
153
+ "run.stopped",
154
+ "run.failed",
155
+ ]);
156
+ const PROTECTED_LOOP_TOOL_RESULT_LIMIT = 12;
157
+ const COMPACTION_EVENT_TOOL_RESULT_LIMIT_PER_RUN = 12;
158
+ function protectedLoopContext(events, activeRunId, currentPrompt, protectedRecentLoops = 3) {
159
+ const userEvents = events.filter((event) => event.type === "user.prompt" && typeof event.data.prompt === "string");
160
+ const activeUserEvents = activeRunId ? userEvents.filter((event) => event.run_id === activeRunId) : [];
161
+ const activeIds = new Set(activeUserEvents.map((event) => event.id));
162
+ const priorUserEvents = userEvents.filter((event) => !activeIds.has(event.id));
163
+ const protectedUsers = [...priorUserEvents.slice(-Math.max(0, protectedRecentLoops)), ...activeUserEvents];
164
+ if (currentPrompt && !protectedUsers.some((event) => event.data.prompt === currentPrompt)) {
165
+ protectedUsers.push({ type: "user.prompt", data: { prompt: currentPrompt }, run_id: activeRunId });
166
+ }
167
+ const prompts = uniqueStrings(protectedUsers.map((event) => String(event.data.prompt ?? "")).filter(Boolean));
168
+ const protectedRunIds = new Set(protectedUsers.map((event) => event.run_id).filter((runId) => Boolean(runId)));
169
+ const protectedLoops = [...protectedRunIds].map((runId) => summarizeLoop(events.filter((event) => event.run_id === runId), runId));
170
+ return {
171
+ protected_user_prompts: prompts,
172
+ protected_event_count: countProtectedTailEvents(events, protectedUsers, protectedRunIds),
173
+ protected_loops: protectedLoops,
174
+ };
175
+ }
176
+ function countProtectedTailEvents(events, protectedUsers, protectedRunIds) {
177
+ const keys = new Set();
178
+ for (const event of events) {
179
+ if (event.run_id && protectedRunIds.has(event.run_id) && PROTECTED_TAIL_EVENT_TYPES.has(event.type)) {
180
+ keys.add(eventKey(event));
181
+ }
182
+ }
183
+ for (const event of protectedUsers) {
184
+ keys.add(eventKey(event));
185
+ }
186
+ return keys.size;
187
+ }
188
+ function eventKey(event) {
189
+ if (typeof event.id === "number") {
190
+ return `id:${event.id}`;
191
+ }
192
+ const prompt = typeof event.data.prompt === "string" ? event.data.prompt : "";
193
+ return `${event.run_id ?? ""}:${event.type}:${prompt}:${event.created_at ?? ""}`;
194
+ }
195
+ function summarizeLoop(events, runId) {
196
+ const prompt = events.find((event) => event.type === "user.prompt")?.data.prompt;
197
+ const toolEvents = events.filter((event) => event.type === "tool.result");
198
+ const tools = toolEvents.slice(0, PROTECTED_LOOP_TOOL_RESULT_LIMIT).map(summarizeToolResultEvent);
199
+ const omittedToolResults = Math.max(0, toolEvents.length - tools.length);
200
+ const final = events.filter((event) => event.type === "model.response.settled").at(-1)?.data.content;
201
+ const goalReport = events.filter((event) => event.type === "goal.completion_report").at(-1)?.data.report;
202
+ const goalSummary = events.filter((event) => event.type === "goal.completion_report").at(-1)?.data.completion_summary;
203
+ const runStatus = events.filter((event) => event.type === "run.completed" || event.type === "run.stopped" || event.type === "run.failed").at(-1);
204
+ return {
205
+ run_id: runId,
206
+ user_prompt: typeof prompt === "string" ? protectedPromptExcerpt(prompt) : undefined,
207
+ tool_results: tools,
208
+ omitted_tool_results: omittedToolResults || undefined,
209
+ final_response: typeof final === "string" && final ? final.slice(0, 1000) : undefined,
210
+ goal_report: typeof goalReport === "string" && goalReport ? goalReport.slice(0, 1000) : undefined,
211
+ goal_summary: typeof goalSummary === "string" && goalSummary ? goalSummary.slice(0, 1000) : undefined,
212
+ run_status: runStatus ? summarizeRunLifecycle(runStatus) : undefined,
213
+ };
214
+ }
215
+ function summarizeEventsForCompaction(events, protectedUserPrompts) {
216
+ const summaries = [];
217
+ const toolResultCounts = new Map();
218
+ const omittedToolResults = new Map();
219
+ for (const event of events) {
220
+ if (event.type === "user.prompt" && !protectedUserPrompts.includes(String(event.data.prompt ?? ""))) {
221
+ continue;
222
+ }
223
+ if (event.type === "tool.result") {
224
+ const runKey = event.run_id ?? "";
225
+ const count = toolResultCounts.get(runKey) ?? 0;
226
+ if (count >= COMPACTION_EVENT_TOOL_RESULT_LIMIT_PER_RUN) {
227
+ omittedToolResults.set(runKey, (omittedToolResults.get(runKey) ?? 0) + 1);
228
+ continue;
229
+ }
230
+ toolResultCounts.set(runKey, count + 1);
231
+ }
232
+ summaries.push(summarizeEventForCompaction(event));
233
+ }
234
+ for (const [runId, omitted] of omittedToolResults) {
235
+ summaries.push({
236
+ type: "tool.results.omitted",
237
+ run_id: runId || undefined,
238
+ omitted_tool_results: omitted,
239
+ limit: COMPACTION_EVENT_TOOL_RESULT_LIMIT_PER_RUN,
240
+ });
241
+ }
242
+ return summaries;
243
+ }
244
+ function summarizeToolResultEvent(event) {
245
+ const result = objectField(event.data.result);
246
+ const resourceUris = collectResourceUris(result);
247
+ return {
248
+ tool_name: event.data.tool_name,
249
+ tool_call_id: event.data.tool_call_id,
250
+ summary: result.summary ?? event.data.summary,
251
+ ok: result.ok,
252
+ resource_uri: resourceUris[0],
253
+ resource_uris: resourceUris.length ? resourceUris : undefined,
254
+ };
255
+ }
256
+ function summarizeEventForCompaction(event) {
257
+ if (event.type === "user.prompt") {
258
+ return {
259
+ type: event.type,
260
+ prompt: typeof event.data.prompt === "string" ? protectedPromptExcerpt(event.data.prompt) : event.data.prompt,
261
+ created_at: event.created_at,
262
+ };
263
+ }
264
+ if (event.type === "tool.result") {
265
+ return {
266
+ type: event.type,
267
+ ...summarizeToolResultEvent(event),
268
+ created_at: event.created_at,
269
+ };
270
+ }
271
+ if (event.type === "model.response.settled") {
272
+ const calls = Array.isArray(event.data.tool_calls) ? event.data.tool_calls : [];
273
+ const content = typeof event.data.content === "string" ? event.data.content : "";
274
+ return {
275
+ type: event.type,
276
+ content: content.slice(0, 1000),
277
+ tool_call_count: calls.length,
278
+ created_at: event.created_at,
279
+ };
280
+ }
281
+ if (event.type === "goal.completion_report") {
282
+ return {
283
+ type: event.type,
284
+ completion_summary: typeof event.data.completion_summary === "string" ? event.data.completion_summary.slice(0, 1000) : undefined,
285
+ report: typeof event.data.report === "string" ? event.data.report.slice(0, 1000) : undefined,
286
+ tool_rounds: event.data.tool_rounds,
287
+ tool_calls: event.data.tool_calls,
288
+ tokens: event.data.tokens,
289
+ duration_ms: event.data.duration_ms,
290
+ created_at: event.created_at,
291
+ };
292
+ }
293
+ if (event.type === "model.request.started") {
294
+ return {
295
+ type: event.type,
296
+ provider_id: event.data.provider_id,
297
+ model: event.data.model,
298
+ request_class: event.data.request_class,
299
+ prompt_hash: event.data.prompt_hash,
300
+ tool_schema_hash: event.data.tool_schema_hash,
301
+ prompt_epoch_id: event.data.prompt_epoch_id,
302
+ estimated_tokens: event.data.estimated_tokens,
303
+ created_at: event.created_at,
304
+ };
305
+ }
306
+ if (event.type === "endpoint.evidence.recorded") {
307
+ return {
308
+ type: event.type,
309
+ provider_id: event.data.provider_id,
310
+ mode: event.data.mode,
311
+ model: event.data.model,
312
+ request_id: event.data.request_id,
313
+ response_id: event.data.response_id,
314
+ request_class: event.data.request_class,
315
+ prompt_hash: event.data.prompt_hash,
316
+ tool_schema_hash: event.data.tool_schema_hash,
317
+ prompt_epoch_id: event.data.prompt_epoch_id,
318
+ prompt_tokens: event.data.prompt_tokens,
319
+ cached_prompt_tokens: event.data.cached_prompt_tokens,
320
+ cache_hit_rate: event.data.cache_hit_rate,
321
+ created_at: event.created_at,
322
+ };
323
+ }
324
+ if (event.type === "model.request.retry") {
325
+ return {
326
+ type: event.type,
327
+ provider_id: event.data.provider_id,
328
+ mode: event.data.mode,
329
+ model: event.data.model,
330
+ request_class: event.data.request_class,
331
+ prompt_hash: event.data.prompt_hash,
332
+ tool_schema_hash: event.data.tool_schema_hash,
333
+ prompt_epoch_id: event.data.prompt_epoch_id,
334
+ attempt: event.data.attempt,
335
+ next_attempt: event.data.next_attempt,
336
+ delay_ms: event.data.delay_ms,
337
+ max_attempts: event.data.max_attempts,
338
+ error: stringSummary(event.data.error),
339
+ created_at: event.created_at,
340
+ };
341
+ }
342
+ if (event.type === "model.request.failed") {
343
+ return {
344
+ type: event.type,
345
+ provider_id: event.data.provider_id,
346
+ mode: event.data.mode,
347
+ model: event.data.model,
348
+ request_class: event.data.request_class,
349
+ prompt_hash: event.data.prompt_hash,
350
+ tool_schema_hash: event.data.tool_schema_hash,
351
+ prompt_epoch_id: event.data.prompt_epoch_id,
352
+ attempt: event.data.attempt,
353
+ retryable: event.data.retryable,
354
+ streamed_delta: event.data.streamed_delta,
355
+ error: stringSummary(event.data.error),
356
+ created_at: event.created_at,
357
+ };
358
+ }
359
+ if (event.type === "run.completed" || event.type === "run.stopped" || event.type === "run.failed") {
360
+ return summarizeRunLifecycle(event);
361
+ }
362
+ if (event.type === "evidence.context_compression") {
363
+ return {
364
+ type: event.type,
365
+ reason: event.data.reason,
366
+ estimated_tokens: event.data.estimated_tokens,
367
+ threshold_tokens: event.data.threshold_tokens,
368
+ archive_resource_uri: event.data.archive_resource_uri,
369
+ archived_events: event.data.archived_events,
370
+ protected_tail_events: event.data.protected_tail_events,
371
+ protected_prompt_count: event.data.protected_prompt_count,
372
+ created_at: event.created_at,
373
+ };
374
+ }
375
+ if (event.type === "context.compacted") {
376
+ return {
377
+ type: event.type,
378
+ reason: event.data.reason,
379
+ archive_resource_uri: event.data.archive_resource_uri,
380
+ archived_events: event.data.archived_events,
381
+ protected_tail_events: event.data.protected_tail_events,
382
+ protected_prompt_count: event.data.protected_prompt_count,
383
+ compacted_through_event_id: event.data.compacted_through_event_id,
384
+ created_at: event.created_at,
385
+ };
386
+ }
387
+ return {
388
+ type: event.type,
389
+ created_at: event.created_at,
390
+ };
391
+ }
392
+ function summarizeRunLifecycle(event) {
393
+ return {
394
+ type: event.type,
395
+ reason: event.data.reason,
396
+ error: stringSummary(event.data.error),
397
+ tool_rounds: event.data.tool_rounds,
398
+ tool_calls: event.data.tool_calls,
399
+ tokens: event.data.tokens,
400
+ duration_ms: event.data.duration_ms,
401
+ created_at: event.created_at,
402
+ };
403
+ }
404
+ function stringSummary(value, max = 1000) {
405
+ return typeof value === "string" && value ? value.slice(0, max) : undefined;
406
+ }
407
+ function objectField(value) {
408
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
409
+ }
410
+ function collectResourceUris(value) {
411
+ const seen = new Set();
412
+ const out = [];
413
+ function visit(raw) {
414
+ if (typeof raw === "string") {
415
+ if (raw.startsWith("resource://") && !seen.has(raw)) {
416
+ seen.add(raw);
417
+ out.push(raw);
418
+ }
419
+ return;
420
+ }
421
+ if (!raw || typeof raw !== "object") {
422
+ return;
423
+ }
424
+ if (Array.isArray(raw)) {
425
+ for (const item of raw) {
426
+ visit(item);
427
+ }
428
+ return;
429
+ }
430
+ for (const [key, nested] of Object.entries(raw)) {
431
+ if (/resource_uri|output_resource_uri|archive_resource_uri/i.test(key)) {
432
+ visit(nested);
433
+ continue;
434
+ }
435
+ if (typeof nested === "object") {
436
+ visit(nested);
437
+ }
438
+ }
439
+ }
440
+ visit(value);
441
+ return out.slice(0, 20);
442
+ }
443
+ function uniqueStrings(values) {
444
+ const seen = new Set();
445
+ const output = [];
446
+ for (const value of values) {
447
+ if (seen.has(value)) {
448
+ continue;
449
+ }
450
+ seen.add(value);
451
+ output.push(value);
452
+ }
453
+ return output;
454
+ }
455
+ function deterministicSummary(session, workspaceRoot, events, previous, protectedUserPromptExcerpts) {
456
+ const files = new Set();
457
+ const commands = [];
458
+ const resources = [];
459
+ for (const event of events) {
460
+ const data = JSON.stringify(event.data);
461
+ for (const match of data.matchAll(/"path":"([^"]+)"/g)) {
462
+ if (match[1])
463
+ files.add(match[1]);
464
+ }
465
+ if (event.type === "tool.call" && typeof event.data.tool_name === "string" && event.data.tool_name === "run_command") {
466
+ commands.push(String(event.data.arguments?.command ?? ""));
467
+ }
468
+ if (data.includes("resource://")) {
469
+ for (const match of data.matchAll(/resource:\/\/[^"\\\s]+/g)) {
470
+ resources.push(match[0]);
471
+ }
472
+ }
473
+ }
474
+ return [
475
+ `Goal\n- Continue session ${session.session_id} in ${workspaceRoot}.`,
476
+ `Open Objectives\n${protectedUserPromptExcerpts.map((prompt) => `- ${prompt}`).join("\n") || "- No protected user prompts."}`,
477
+ "Constraints And Preferences\n- Preserve user-facing identity as current directory plus session id/title.\n- Keep internal ids out of user workflow.",
478
+ `Progress\n- Compacted ${events.length} older events.\n- Previous summary present: ${typeof previous === "string" && previous.length > 0}.`,
479
+ "Key Decisions\n- Use durable resources for bulky historical data.",
480
+ `Files And Code\n${[...files].slice(0, 20).map((file) => `- ${file}`).join("\n") || "- No file paths detected."}`,
481
+ `Commands And Outcomes\n${commands.slice(-10).map((command) => `- ${command}`).join("\n") || "- No commands detected."}`,
482
+ "Errors And Fixes\n- No deterministic error summary available.",
483
+ "Critical Context\n- Recent tool-call/result pairs remain in the prompt tail outside this summary.",
484
+ "Next Steps\n- Continue from the current request and recent tail.",
485
+ `Resources And Evidence\n${resources.slice(-20).map((uri) => `- ${uri}`).join("\n") || "- No resource handles detected."}`,
486
+ ].join("\n\n");
487
+ }
488
+ function protectedPromptExcerpt(prompt) {
489
+ return truncateText(prompt, COMPACTION_PROTECTED_PROMPT_LIMIT).text;
490
+ }
491
+ function boundProtectedLoop(loop) {
492
+ const next = { ...loop };
493
+ if (typeof next.user_prompt === "string") {
494
+ next.user_prompt = protectedPromptExcerpt(next.user_prompt);
495
+ }
496
+ return next;
497
+ }
498
+ export function promptPressureFromMessages(messages) {
499
+ return estimateTokens(JSON.stringify(messages));
500
+ }
501
+ //# sourceMappingURL=compressor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compressor.js","sourceRoot":"","sources":["../../../src/context/compressor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { ModelMessage, PromptEpochRecord, SessionRecord, ToolDefinition, VllmAgentConfig, WorkspaceIdentity } from "../types.js";
2
+ import { SessionStore } from "../session/store.js";
3
+ import type { SkillDescriptor } from "../skills/registry.js";
4
+ export interface PromptContext {
5
+ messages: ModelMessage[];
6
+ prompt_hash: string;
7
+ tool_schema_hash: string;
8
+ section_hashes: Record<string, string>;
9
+ estimated_tokens: number;
10
+ recent_event_count: number;
11
+ compactable_event_count: number;
12
+ epoch: PromptEpochRecord;
13
+ }
14
+ export declare class PromptBuilder {
15
+ private readonly config;
16
+ private readonly store;
17
+ private readonly workspace;
18
+ constructor(config: VllmAgentConfig, store: SessionStore, workspace: WorkspaceIdentity);
19
+ build(session: SessionRecord, userPrompt: string, tools: ToolDefinition[], skills?: SkillDescriptor[], activeRunId?: string, enabledSkillNames?: string[]): PromptContext;
20
+ startNewEpoch(session: SessionRecord, sectionHashes: Record<string, string>, toolSchemaHash: string, reason: string): PromptEpochRecord;
21
+ private ensureEpoch;
22
+ private renderSections;
23
+ private tailMessages;
24
+ private currentTurnContextMessages;
25
+ }
26
+ export declare function estimateTokens(text: string): number;