@roackb2/heddle 0.0.35 → 0.0.37

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 (132) hide show
  1. package/dist/src/cli/chat/App.d.ts.map +1 -1
  2. package/dist/src/cli/chat/App.js +94 -80
  3. package/dist/src/cli/chat/App.js.map +1 -1
  4. package/dist/src/cli/chat/components/PromptInput.d.ts +5 -0
  5. package/dist/src/cli/chat/components/PromptInput.d.ts.map +1 -1
  6. package/dist/src/cli/chat/components/PromptInput.js +131 -85
  7. package/dist/src/cli/chat/components/PromptInput.js.map +1 -1
  8. package/dist/src/cli/chat/hooks/tui-agent-turn-lifecycle.d.ts +6 -0
  9. package/dist/src/cli/chat/hooks/tui-agent-turn-lifecycle.d.ts.map +1 -0
  10. package/dist/src/cli/chat/hooks/tui-agent-turn-lifecycle.js +38 -0
  11. package/dist/src/cli/chat/hooks/tui-agent-turn-lifecycle.js.map +1 -0
  12. package/dist/src/cli/chat/hooks/tui-agent-turn-result.d.ts +48 -0
  13. package/dist/src/cli/chat/hooks/tui-agent-turn-result.d.ts.map +1 -0
  14. package/dist/src/cli/chat/hooks/tui-agent-turn-result.js +171 -0
  15. package/dist/src/cli/chat/hooks/tui-agent-turn-result.js.map +1 -0
  16. package/dist/src/cli/chat/hooks/tui-compaction-status.d.ts +24 -0
  17. package/dist/src/cli/chat/hooks/tui-compaction-status.d.ts.map +1 -0
  18. package/dist/src/cli/chat/hooks/tui-compaction-status.js +65 -0
  19. package/dist/src/cli/chat/hooks/tui-compaction-status.js.map +1 -0
  20. package/dist/src/cli/chat/hooks/tui-direct-shell-result.d.ts +28 -0
  21. package/dist/src/cli/chat/hooks/tui-direct-shell-result.d.ts.map +1 -0
  22. package/dist/src/cli/chat/hooks/tui-direct-shell-result.js +41 -0
  23. package/dist/src/cli/chat/hooks/tui-direct-shell-result.js.map +1 -0
  24. package/dist/src/cli/chat/hooks/tui-direct-shell.d.ts +22 -0
  25. package/dist/src/cli/chat/hooks/tui-direct-shell.d.ts.map +1 -0
  26. package/dist/src/cli/chat/hooks/tui-direct-shell.js +127 -0
  27. package/dist/src/cli/chat/hooks/tui-direct-shell.js.map +1 -0
  28. package/dist/src/cli/chat/hooks/tui-drift-observer.d.ts +13 -0
  29. package/dist/src/cli/chat/hooks/tui-drift-observer.d.ts.map +1 -0
  30. package/dist/src/cli/chat/hooks/tui-drift-observer.js +36 -0
  31. package/dist/src/cli/chat/hooks/tui-drift-observer.js.map +1 -0
  32. package/dist/src/cli/chat/hooks/tui-ordinary-turn.d.ts +31 -0
  33. package/dist/src/cli/chat/hooks/tui-ordinary-turn.d.ts.map +1 -0
  34. package/dist/src/cli/chat/hooks/tui-ordinary-turn.js +83 -0
  35. package/dist/src/cli/chat/hooks/tui-ordinary-turn.js.map +1 -0
  36. package/dist/src/cli/chat/hooks/tui-run-loop-events.d.ts +23 -0
  37. package/dist/src/cli/chat/hooks/tui-run-loop-events.d.ts.map +1 -0
  38. package/dist/src/cli/chat/hooks/tui-run-loop-events.js +74 -0
  39. package/dist/src/cli/chat/hooks/tui-run-loop-events.js.map +1 -0
  40. package/dist/src/cli/chat/hooks/tui-tool-approval.d.ts +8 -0
  41. package/dist/src/cli/chat/hooks/tui-tool-approval.d.ts.map +1 -0
  42. package/dist/src/cli/chat/hooks/tui-tool-approval.js +37 -0
  43. package/dist/src/cli/chat/hooks/tui-tool-approval.js.map +1 -0
  44. package/dist/src/cli/chat/hooks/useAgentRun.d.ts +1 -1
  45. package/dist/src/cli/chat/hooks/useAgentRun.d.ts.map +1 -1
  46. package/dist/src/cli/chat/hooks/useAgentRun.js +59 -551
  47. package/dist/src/cli/chat/hooks/useAgentRun.js.map +1 -1
  48. package/dist/src/cli/chat/hooks/useChatStatusSummary.d.ts +58 -0
  49. package/dist/src/cli/chat/hooks/useChatStatusSummary.d.ts.map +1 -0
  50. package/dist/src/cli/chat/hooks/useChatStatusSummary.js +85 -0
  51. package/dist/src/cli/chat/hooks/useChatStatusSummary.js.map +1 -0
  52. package/dist/src/cli/chat/hooks/usePromptSubmission.d.ts.map +1 -1
  53. package/dist/src/cli/chat/hooks/usePromptSubmission.js +1 -0
  54. package/dist/src/cli/chat/hooks/usePromptSubmission.js.map +1 -1
  55. package/dist/src/cli/chat/utils/format.d.ts.map +1 -1
  56. package/dist/src/cli/chat/utils/format.js +21 -0
  57. package/dist/src/cli/chat/utils/format.js.map +1 -1
  58. package/dist/src/cli/chat/utils/runtime.d.ts.map +1 -1
  59. package/dist/src/cli/chat/utils/runtime.js +5 -3
  60. package/dist/src/cli/chat/utils/runtime.js.map +1 -1
  61. package/dist/src/core/agent/run-agent.js +9 -8
  62. package/dist/src/core/agent/run-agent.js.map +1 -1
  63. package/dist/src/core/agent/tool-dispatch.d.ts.map +1 -1
  64. package/dist/src/core/agent/tool-dispatch.js +8 -7
  65. package/dist/src/core/agent/tool-dispatch.js.map +1 -1
  66. package/dist/src/core/agent/util.d.ts +0 -4
  67. package/dist/src/core/agent/util.d.ts.map +1 -1
  68. package/dist/src/core/agent/util.js +1 -7
  69. package/dist/src/core/agent/util.js.map +1 -1
  70. package/dist/src/core/chat/ordinary-turn.d.ts +34 -0
  71. package/dist/src/core/chat/ordinary-turn.d.ts.map +1 -0
  72. package/dist/src/core/chat/ordinary-turn.js +274 -0
  73. package/dist/src/core/chat/ordinary-turn.js.map +1 -0
  74. package/dist/src/core/chat/session-submit.d.ts +4 -4
  75. package/dist/src/core/chat/session-submit.d.ts.map +1 -1
  76. package/dist/src/core/chat/session-submit.js +23 -282
  77. package/dist/src/core/chat/session-submit.js.map +1 -1
  78. package/dist/src/core/chat/session-title.d.ts +15 -0
  79. package/dist/src/core/chat/session-title.d.ts.map +1 -0
  80. package/dist/src/core/chat/session-title.js +17 -0
  81. package/dist/src/core/chat/session-title.js.map +1 -0
  82. package/dist/src/core/chat/session-turn-preflight.d.ts +37 -0
  83. package/dist/src/core/chat/session-turn-preflight.d.ts.map +1 -0
  84. package/dist/src/core/chat/session-turn-preflight.js +43 -0
  85. package/dist/src/core/chat/session-turn-preflight.js.map +1 -0
  86. package/dist/src/core/chat/session-turn-result.d.ts +36 -0
  87. package/dist/src/core/chat/session-turn-result.d.ts.map +1 -0
  88. package/dist/src/core/chat/session-turn-result.js +60 -0
  89. package/dist/src/core/chat/session-turn-result.js.map +1 -0
  90. package/dist/src/core/chat/tool-approval-host.d.ts +22 -0
  91. package/dist/src/core/chat/tool-approval-host.d.ts.map +1 -0
  92. package/dist/src/core/chat/tool-approval-host.js +14 -0
  93. package/dist/src/core/chat/tool-approval-host.js.map +1 -0
  94. package/dist/src/core/chat/turn-host.d.ts +25 -0
  95. package/dist/src/core/chat/turn-host.d.ts.map +1 -0
  96. package/dist/src/core/chat/turn-host.js +2 -0
  97. package/dist/src/core/chat/turn-host.js.map +1 -0
  98. package/dist/src/core/llm/openai.d.ts +7 -0
  99. package/dist/src/core/llm/openai.d.ts.map +1 -1
  100. package/dist/src/core/llm/openai.js +56 -0
  101. package/dist/src/core/llm/openai.js.map +1 -1
  102. package/dist/src/core/memory/domain-prompt.d.ts.map +1 -1
  103. package/dist/src/core/memory/domain-prompt.js +48 -32
  104. package/dist/src/core/memory/domain-prompt.js.map +1 -1
  105. package/dist/src/core/runtime/agent-loop.d.ts.map +1 -1
  106. package/dist/src/core/runtime/agent-loop.js +9 -3
  107. package/dist/src/core/runtime/agent-loop.js.map +1 -1
  108. package/dist/src/core/runtime/default-tools.d.ts.map +1 -1
  109. package/dist/src/core/runtime/default-tools.js +1 -0
  110. package/dist/src/core/runtime/default-tools.js.map +1 -1
  111. package/dist/src/core/tools/file-edit-core.d.ts.map +1 -1
  112. package/dist/src/core/tools/file-edit-core.js +21 -2
  113. package/dist/src/core/tools/file-edit-core.js.map +1 -1
  114. package/dist/src/core/tools/memory-checkpoint.js +1 -1
  115. package/dist/src/core/tools/memory-checkpoint.js.map +1 -1
  116. package/dist/src/core/tools/record-knowledge.js +8 -4
  117. package/dist/src/core/tools/record-knowledge.js.map +1 -1
  118. package/dist/src/core/tools/view-image.d.ts.map +1 -1
  119. package/dist/src/core/tools/view-image.js +23 -58
  120. package/dist/src/core/tools/view-image.js.map +1 -1
  121. package/dist/src/core/tools/web-search.d.ts +2 -1
  122. package/dist/src/core/tools/web-search.d.ts.map +1 -1
  123. package/dist/src/core/tools/web-search.js +76 -3
  124. package/dist/src/core/tools/web-search.js.map +1 -1
  125. package/dist/src/server/features/control-plane/services/chat-session-events.d.ts +26 -0
  126. package/dist/src/server/features/control-plane/services/chat-session-events.d.ts.map +1 -0
  127. package/dist/src/server/features/control-plane/services/chat-session-events.js +61 -0
  128. package/dist/src/server/features/control-plane/services/chat-session-events.js.map +1 -0
  129. package/dist/src/server/features/control-plane/services/chat-sessions.d.ts.map +1 -1
  130. package/dist/src/server/features/control-plane/services/chat-sessions.js +21 -39
  131. package/dist/src/server/features/control-plane/services/chat-sessions.js.map +1 -1
  132. package/package.json +1 -1
@@ -1,289 +1,30 @@
1
- import { join } from 'node:path';
2
- import { readFileSync, writeFileSync } from 'node:fs';
3
- import { appendMemoryCatalogSystemContext, createDefaultAgentTools, createLlmAdapter, DEFAULT_OPENAI_MODEL, inferProviderFromModel, runAgentLoop, } from '../../index.js';
4
- import { runMaintenanceForRecordedCandidates } from '../memory/maintenance-integration.js';
5
- import { buildCompactionRunningContext, compactChatHistoryWithArchive, estimateChatHistoryTokens } from './compaction.js';
6
- import { buildConversationMessages } from './conversation-lines.js';
7
- import { formatChatFailureMessage } from './failure-messages.js';
8
- import { acquireSessionLease, getSessionLeaseConflict, releaseSessionLease } from './session-lease.js';
9
- import { loadChatSessions, saveChatSessions, touchSession } from './storage.js';
10
- import { saveTrace } from './trace.js';
11
- import { countAssistantSteps, summarizeTrace } from './trace-summary.js';
12
- import { formatMissingProviderCredentialMessage, hasProviderCredentialForModel, resolveApiKeyForModel, resolveProviderCredentialSourceForModel, } from '../../core/runtime/api-keys.js';
1
+ import { executeOrdinaryChatTurn, clearOrdinaryChatTurnLease } from './ordinary-turn.js';
13
2
  export async function submitChatSessionPrompt(args) {
14
- const sessions = loadChatSessions(args.sessionStoragePath, true);
15
- const session = sessions.find((candidate) => candidate.id === args.sessionId);
16
- if (!session) {
17
- throw new Error(`Chat session not found: ${args.sessionId}`);
18
- }
19
- const model = session.model ?? process.env.OPENAI_MODEL ?? process.env.ANTHROPIC_MODEL ?? DEFAULT_OPENAI_MODEL;
20
- const provider = inferProviderFromModel(model);
21
- const apiKey = args.apiKey ?? resolveApiKeyForModel(model, { preferApiKey: args.preferApiKey });
22
- const providerCredentialSource = resolveProviderCredentialSourceForModel(model, {
23
- apiKey,
24
- apiKeyProvider: args.apiKey ? 'explicit' : apiKey ? provider : undefined,
25
- preferApiKey: args.preferApiKey,
26
- });
27
- if (!hasProviderCredentialForModel(model, {
3
+ const result = await executeOrdinaryChatTurn({
4
+ workspaceRoot: args.workspaceRoot,
5
+ stateRoot: args.stateRoot,
6
+ sessionStoragePath: args.sessionStoragePath,
7
+ sessionId: args.sessionId,
8
+ prompt: args.prompt,
28
9
  apiKey: args.apiKey,
29
- apiKeyProvider: args.apiKey ? 'explicit' : undefined,
30
10
  preferApiKey: args.preferApiKey,
31
- })) {
32
- throw new Error(formatMissingProviderCredentialMessage(model));
33
- }
34
- const leaseOwner = args.leaseOwner ?? {
35
- ownerKind: 'ask',
36
- ownerId: `submit-${process.pid}`,
37
- clientLabel: 'another Heddle client',
38
- };
39
- const leaseConflict = getSessionLeaseConflict(session, leaseOwner);
40
- if (leaseConflict) {
41
- throw new Error(leaseConflict);
42
- }
43
- const leasedSession = touchSession(acquireSessionLease(session, leaseOwner));
44
- saveChatSessions(args.sessionStoragePath, sessions.map((candidate) => candidate.id === session.id ? leasedSession : candidate));
45
- const llm = createLlmAdapter({ model, apiKey, credentialStorePath: args.stateRoot });
46
- const memoryDir = join(args.stateRoot, 'memory');
47
- const systemContext = appendMemoryCatalogSystemContext({
48
11
  systemContext: args.systemContext,
49
- memoryRoot: memoryDir,
50
- });
51
- const tools = createDefaultAgentTools({
52
- model,
53
- apiKey,
54
- providerCredentialSource,
55
- credentialStorePath: args.stateRoot,
56
- workspaceRoot: args.workspaceRoot,
57
- memoryDir,
58
- searchIgnoreDirs: [],
59
- includePlanTool: true,
12
+ memoryMaintenanceMode: args.memoryMaintenanceMode,
13
+ host: {
14
+ events: args.onEvent ? { onAgentLoopEvent: args.onEvent } : undefined,
15
+ compaction: args.onCompactionStatus ? {
16
+ onPreflightCompactionStatus: args.onCompactionStatus,
17
+ onFinalCompactionStatus: args.onCompactionStatus,
18
+ } : undefined,
19
+ approvals: args.approveToolCall ? {
20
+ requestToolApproval: ({ call, tool }) => args.approveToolCall?.(call, tool) ?? Promise.resolve({ approved: false, reason: 'Missing approval handler.' }),
21
+ } : undefined,
22
+ },
23
+ onCompactionStatus: args.onCompactionStatus,
24
+ abortSignal: args.abortSignal,
25
+ leaseOwner: args.leaseOwner,
60
26
  });
61
- try {
62
- const preflightCompacted = await compactChatHistoryWithArchive({
63
- history: session.history,
64
- model,
65
- sessionId: session.id,
66
- stateRoot: args.stateRoot,
67
- toolNames: tools.map((tool) => tool.name),
68
- goal: args.prompt,
69
- systemContext,
70
- summarizer: { credentialSource: providerCredentialSource },
71
- onStatusChange: (event) => {
72
- args.onCompactionStatus?.(event);
73
- if (event.status === 'running') {
74
- const compactionSeed = touchSession({
75
- ...leasedSession,
76
- context: buildCompactionRunningContext({
77
- history: leasedSession.history,
78
- previous: leasedSession.context,
79
- archiveCount: leasedSession.archives?.length,
80
- currentSummaryPath: leasedSession.context?.currentSummaryPath,
81
- lastArchivePath: event.archivePath,
82
- }),
83
- });
84
- saveChatSessions(args.sessionStoragePath, sessions.map((candidate) => candidate.id === session.id ? compactionSeed : candidate));
85
- }
86
- },
87
- });
88
- const preflightSession = preflightCompacted.history !== leasedSession.history || preflightCompacted.archives.length !== (leasedSession.archives?.length ?? 0) ?
89
- touchSession({
90
- ...leasedSession,
91
- history: preflightCompacted.history,
92
- context: preflightCompacted.context,
93
- archives: preflightCompacted.archives,
94
- messages: buildConversationMessages(preflightCompacted.history),
95
- })
96
- : leasedSession;
97
- if (preflightSession !== leasedSession) {
98
- saveChatSessions(args.sessionStoragePath, sessions.map((candidate) => candidate.id === session.id ? preflightSession : candidate));
99
- }
100
- const result = await runAgentLoop({
101
- goal: args.prompt,
102
- model,
103
- apiKey,
104
- workspaceRoot: args.workspaceRoot,
105
- stateDir: args.stateRoot,
106
- memoryDir,
107
- llm,
108
- tools,
109
- includeDefaultTools: false,
110
- history: preflightSession.history,
111
- systemContext,
112
- onEvent: args.onEvent,
113
- approveToolCall: args.approveToolCall,
114
- abortSignal: args.abortSignal,
115
- });
116
- const maintenanceMode = args.memoryMaintenanceMode ?? 'background';
117
- const inlineMaintenance = maintenanceMode === 'inline' ?
118
- await runMaintenanceForRecordedCandidates({
119
- memoryRoot: memoryDir,
120
- llm,
121
- source: `chat session ${session.id}`,
122
- trace: result.trace,
123
- maxSteps: 20,
124
- onTraceEvent: (event) => args.onEvent?.({ type: 'trace', runId: result.state.runId, event, timestamp: new Date().toISOString() }),
125
- })
126
- : undefined;
127
- const resultTrace = inlineMaintenance && inlineMaintenance.events.length > 0 ?
128
- [...result.trace, ...inlineMaintenance.events]
129
- : result.trace;
130
- const resultForPersistence = {
131
- ...result,
132
- trace: resultTrace,
133
- state: {
134
- ...result.state,
135
- trace: resultTrace,
136
- },
137
- };
138
- const compacted = await compactChatHistoryWithArchive({
139
- history: resultForPersistence.transcript,
140
- model,
141
- sessionId: session.id,
142
- stateRoot: args.stateRoot,
143
- usage: resultForPersistence.usage,
144
- toolNames: tools.map((tool) => tool.name),
145
- goal: args.prompt,
146
- systemContext,
147
- summarizer: { credentialSource: providerCredentialSource },
148
- onStatusChange: (event) => {
149
- args.onCompactionStatus?.(event);
150
- if (event.status === 'running') {
151
- const compactionSeed = touchSession({
152
- ...preflightSession,
153
- history: result.transcript,
154
- context: buildCompactionRunningContext({
155
- history: resultForPersistence.transcript,
156
- previous: preflightSession.context,
157
- archiveCount: preflightSession.archives?.length,
158
- currentSummaryPath: preflightSession.context?.currentSummaryPath,
159
- lastArchivePath: event.archivePath,
160
- }),
161
- });
162
- saveChatSessions(args.sessionStoragePath, sessions.map((candidate) => candidate.id === session.id ? compactionSeed : candidate));
163
- }
164
- },
165
- });
166
- const traceFile = saveTrace(join(args.stateRoot, 'traces'), resultForPersistence.trace);
167
- const nextTurn = {
168
- id: `server-turn-${Date.now()}`,
169
- prompt: args.prompt,
170
- outcome: resultForPersistence.outcome,
171
- summary: resultForPersistence.summary,
172
- steps: countAssistantSteps(resultForPersistence.trace),
173
- traceFile,
174
- events: summarizeTrace(resultForPersistence.trace),
175
- };
176
- const formattedSummary = resultForPersistence.outcome === 'error' ?
177
- formatChatFailureMessage(resultForPersistence.summary, {
178
- model,
179
- estimatedHistoryTokens: estimateChatHistoryTokens(session.history),
180
- })
181
- : resultForPersistence.summary;
182
- const updatedSession = touchSession({
183
- ...preflightSession,
184
- lastContinuePrompt: args.prompt,
185
- history: compacted.history,
186
- context: compacted.context,
187
- archives: compacted.archives,
188
- lease: undefined,
189
- messages: buildConversationMessages(compacted.history),
190
- turns: [...preflightSession.turns, nextTurn].slice(-8),
191
- });
192
- const nextSessions = sessions.map((candidate) => candidate.id === session.id ? updatedSession : candidate);
193
- saveChatSessions(args.sessionStoragePath, nextSessions);
194
- if (maintenanceMode === 'background') {
195
- scheduleBackgroundMemoryMaintenance({
196
- memoryRoot: memoryDir,
197
- llm,
198
- source: `chat session ${session.id}`,
199
- trace: result.trace,
200
- traceFile,
201
- sessionStoragePath: args.sessionStoragePath,
202
- sessionId: session.id,
203
- runId: result.state?.runId ?? `session-${session.id}`,
204
- onEvent: args.onEvent,
205
- });
206
- }
207
- return {
208
- outcome: resultForPersistence.outcome,
209
- summary: formattedSummary,
210
- session: updatedSession,
211
- };
212
- }
213
- finally {
214
- clearChatSessionLease(args.sessionStoragePath, session.id, leaseOwner);
215
- }
216
- }
217
- function scheduleBackgroundMemoryMaintenance(args) {
218
- void (async () => {
219
- const maintenance = await runMaintenanceForRecordedCandidates({
220
- memoryRoot: args.memoryRoot,
221
- llm: args.llm,
222
- source: args.source,
223
- trace: args.trace,
224
- maxSteps: 20,
225
- onTraceEvent: (event) => args.onEvent?.({ type: 'trace', runId: args.runId, event, timestamp: new Date().toISOString() }),
226
- });
227
- if (maintenance.events.length === 0) {
228
- return;
229
- }
230
- const currentTrace = readTraceEvents(args.traceFile);
231
- const nextTrace = [...currentTrace, ...maintenance.events];
232
- writeFileSync(args.traceFile, `${JSON.stringify(nextTrace, null, 2)}\n`, 'utf8');
233
- const sessions = loadChatSessions(args.sessionStoragePath, true);
234
- const nextSessions = sessions.map((session) => {
235
- if (session.id !== args.sessionId) {
236
- return session;
237
- }
238
- return touchSession({
239
- ...session,
240
- turns: session.turns.map((turn, index) => (index === session.turns.length - 1 ?
241
- {
242
- ...turn,
243
- events: summarizeTrace(nextTrace),
244
- }
245
- : turn)),
246
- });
247
- });
248
- saveChatSessions(args.sessionStoragePath, nextSessions);
249
- })().catch((error) => {
250
- args.onEvent?.({
251
- type: 'trace',
252
- runId: args.runId,
253
- event: {
254
- type: 'memory.maintenance_failed',
255
- runId: `memory-run-${Date.now()}`,
256
- error: error instanceof Error ? error.message : String(error),
257
- candidateIds: [],
258
- step: nextTraceStep(args.trace),
259
- timestamp: new Date().toISOString(),
260
- },
261
- timestamp: new Date().toISOString(),
262
- });
263
- });
264
- }
265
- function readTraceEvents(path) {
266
- try {
267
- const parsed = JSON.parse(readFileSync(path, 'utf8'));
268
- return Array.isArray(parsed) ? parsed : [];
269
- }
270
- catch {
271
- return [];
272
- }
273
- }
274
- function nextTraceStep(trace) {
275
- return trace.reduce((max, event) => 'step' in event ? Math.max(max, event.step) : max, 0) + 1;
276
- }
277
- export function clearChatSessionLease(sessionStoragePath, sessionId, owner) {
278
- const sessions = loadChatSessions(sessionStoragePath, true);
279
- const session = sessions.find((candidate) => candidate.id === sessionId);
280
- if (!session?.lease) {
281
- return;
282
- }
283
- const released = releaseSessionLease(session, owner);
284
- if (released === session) {
285
- return;
286
- }
287
- saveChatSessions(sessionStoragePath, sessions.map((candidate) => candidate.id === sessionId ? touchSession(released) : candidate));
27
+ return result;
288
28
  }
29
+ export const clearChatSessionLease = clearOrdinaryChatTurnLease;
289
30
  //# sourceMappingURL=session-submit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-submit.js","sourceRoot":"","sources":["../../../../src/core/chat/session-submit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-submit.js","sourceRoot":"","sources":["../../../../src/core/chat/session-submit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAqBzF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAAiC;IAC7E,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC;QAC3C,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;QACjD,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;YACrE,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACpC,2BAA2B,EAAE,IAAI,CAAC,kBAAkB;gBACpD,uBAAuB,EAAE,IAAI,CAAC,kBAAkB;aACjD,CAAC,CAAC,CAAC,SAAS;YACb,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBAChC,mBAAmB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;aACzJ,CAAC,CAAC,CAAC,SAAS;SACd;QACD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { LlmAdapter } from '../../index.js';
2
+ export declare function buildSessionAutoTitlePrompt(prompt: string, responseText: string): ({
3
+ role: "system";
4
+ content: string;
5
+ } | {
6
+ role: "user";
7
+ content: string;
8
+ })[];
9
+ export declare function generateSessionTitle(args: {
10
+ llm: LlmAdapter;
11
+ prompt: string;
12
+ responseText: string;
13
+ normalize: (value: string | undefined) => string | undefined;
14
+ }): Promise<string | undefined>;
15
+ //# sourceMappingURL=session-title.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-title.d.ts","sourceRoot":"","sources":["../../../../src/core/chat/session-title.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;;;;;;KAY/E;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;CAC9D,+BAGA"}
@@ -0,0 +1,17 @@
1
+ export function buildSessionAutoTitlePrompt(prompt, responseText) {
2
+ return [
3
+ {
4
+ role: 'system',
5
+ content: 'You name terminal chat sessions. Return only a short 3 to 6 word title in plain text. No quotes, no punctuation, no prefix.',
6
+ },
7
+ {
8
+ role: 'user',
9
+ content: `User prompt:\n${prompt}\n\nAssistant or tool summary:\n${responseText}\n\nCreate a concise session title.`,
10
+ },
11
+ ];
12
+ }
13
+ export async function generateSessionTitle(args) {
14
+ const result = await args.llm.chat(buildSessionAutoTitlePrompt(args.prompt, args.responseText), []);
15
+ return args.normalize(result.content);
16
+ }
17
+ //# sourceMappingURL=session-title.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-title.js","sourceRoot":"","sources":["../../../../src/core/chat/session-title.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,2BAA2B,CAAC,MAAc,EAAE,YAAoB;IAC9E,OAAO;QACL;YACE,IAAI,EAAE,QAAiB;YACvB,OAAO,EACL,6HAA6H;SAChI;QACD;YACE,IAAI,EAAE,MAAe;YACrB,OAAO,EAAE,iBAAiB,MAAM,mCAAmC,YAAY,qCAAqC;SACrH;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAK1C;IACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;IACpG,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { ChatMessage } from '../llm/types.js';
2
+ import { compactChatHistoryWithArchive } from './compaction.js';
3
+ import { type ChatSessionLeaseOwner } from './session-lease.js';
4
+ import type { ChatArchiveRecord, ChatContextStats, ChatSession } from './types.js';
5
+ export type ChatTurnPreflightCompactionStatus = {
6
+ status: 'running' | 'finished' | 'failed';
7
+ archivePath?: string;
8
+ summaryPath?: string;
9
+ error?: string;
10
+ };
11
+ export type PrepareChatSessionTurnArgs = {
12
+ sessionStoragePath: string;
13
+ sessionId: string;
14
+ fallbackHistory: ChatMessage[];
15
+ prompt: string;
16
+ model: string;
17
+ stateRoot: string;
18
+ systemContext?: string;
19
+ toolNames: string[];
20
+ summarizer: Parameters<typeof compactChatHistoryWithArchive>[0]['summarizer'];
21
+ leaseOwner: ChatSessionLeaseOwner;
22
+ onCompactionStatus?: (event: ChatTurnPreflightCompactionStatus, sourceHistory: ChatMessage[], leasedSession?: ChatSession) => void;
23
+ };
24
+ export type PrepareChatSessionTurnResult = {
25
+ ok: true;
26
+ session?: ChatSession;
27
+ historyForRun: ChatMessage[];
28
+ preflightHistory: ChatMessage[];
29
+ context: ChatContextStats;
30
+ archives: ChatArchiveRecord[];
31
+ } | {
32
+ ok: false;
33
+ reason: 'lease_conflict';
34
+ message: string;
35
+ };
36
+ export declare function prepareChatSessionTurn(args: PrepareChatSessionTurnArgs): Promise<PrepareChatSessionTurnResult>;
37
+ //# sourceMappingURL=session-turn-preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-turn-preflight.d.ts","sourceRoot":"","sources":["../../../../src/core/chat/session-turn-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAgD,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE9G,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEnF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC9E,UAAU,EAAE,qBAAqB,CAAC;IAClC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,iCAAiC,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE,aAAa,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;CACpI,CAAC;AAEF,MAAM,MAAM,4BAA4B,GACpC;IACE,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,gBAAgB,EAAE,WAAW,EAAE,CAAC;IAChC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAuCpH"}
@@ -0,0 +1,43 @@
1
+ import { buildConversationMessages } from './conversation-lines.js';
2
+ import { compactChatHistoryWithArchive } from './compaction.js';
3
+ import { acquireSessionLease, getSessionLeaseConflict } from './session-lease.js';
4
+ import { readChatSession, touchSession } from './storage.js';
5
+ export async function prepareChatSessionTurn(args) {
6
+ const persistedSession = readChatSession(args.sessionStoragePath, args.sessionId, true);
7
+ const leaseConflict = persistedSession ? getSessionLeaseConflict(persistedSession, args.leaseOwner) : undefined;
8
+ if (leaseConflict) {
9
+ return {
10
+ ok: false,
11
+ reason: 'lease_conflict',
12
+ message: leaseConflict,
13
+ };
14
+ }
15
+ const leasedSession = persistedSession ? touchSession(acquireSessionLease(persistedSession, args.leaseOwner)) : undefined;
16
+ const initialHistory = leasedSession?.history ?? args.fallbackHistory;
17
+ const preflightCompacted = await compactChatHistoryWithArchive({
18
+ history: initialHistory,
19
+ model: args.model,
20
+ sessionId: args.sessionId,
21
+ stateRoot: args.stateRoot,
22
+ systemContext: args.systemContext,
23
+ toolNames: args.toolNames,
24
+ goal: args.prompt,
25
+ summarizer: args.summarizer,
26
+ onStatusChange: (event) => args.onCompactionStatus?.(event, initialHistory, leasedSession),
27
+ });
28
+ return {
29
+ ok: true,
30
+ session: leasedSession ? {
31
+ ...leasedSession,
32
+ history: preflightCompacted.history,
33
+ context: preflightCompacted.context,
34
+ archives: preflightCompacted.archives,
35
+ messages: buildConversationMessages(preflightCompacted.history),
36
+ } : undefined,
37
+ historyForRun: preflightCompacted.history,
38
+ preflightHistory: preflightCompacted.history,
39
+ context: preflightCompacted.context,
40
+ archives: preflightCompacted.archives,
41
+ };
42
+ }
43
+ //# sourceMappingURL=session-turn-preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-turn-preflight.js","sourceRoot":"","sources":["../../../../src/core/chat/session-turn-preflight.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAA8B,MAAM,oBAAoB,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAuC7D,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAgC;IAC3E,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxF,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChH,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE,aAAa;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1H,MAAM,cAAc,GAAG,aAAa,EAAE,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC;IACtE,MAAM,kBAAkB,GAAG,MAAM,6BAA6B,CAAC;QAC7D,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,IAAI,CAAC,MAAM;QACjB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,aAAa,CAAC;KAC3F,CAAC,CAAC;IAEH,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;YACvB,GAAG,aAAa;YAChB,OAAO,EAAE,kBAAkB,CAAC,OAAO;YACnC,OAAO,EAAE,kBAAkB,CAAC,OAAO;YACnC,QAAQ,EAAE,kBAAkB,CAAC,QAAQ;YACrC,QAAQ,EAAE,yBAAyB,CAAC,kBAAkB,CAAC,OAAO,CAAC;SAChE,CAAC,CAAC,CAAC,SAAS;QACb,aAAa,EAAE,kBAAkB,CAAC,OAAO;QACzC,gBAAgB,EAAE,kBAAkB,CAAC,OAAO;QAC5C,OAAO,EAAE,kBAAkB,CAAC,OAAO;QACnC,QAAQ,EAAE,kBAAkB,CAAC,QAAQ;KACtC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { RunResult } from '../types.js';
2
+ import type { ChatMessage } from '../llm/types.js';
3
+ import { compactChatHistoryWithArchive } from './compaction.js';
4
+ import type { ChatSession, TurnSummary } from './types.js';
5
+ export type PersistChatTurnCompactionStatus = {
6
+ status: 'running' | 'finished' | 'failed';
7
+ archivePath?: string;
8
+ summaryPath?: string;
9
+ error?: string;
10
+ };
11
+ export type PersistChatTurnResultArgs = {
12
+ result: RunResult;
13
+ prompt: string;
14
+ session: ChatSession;
15
+ model: string;
16
+ stateRoot: string;
17
+ traceDir: string;
18
+ systemContext?: string;
19
+ toolNames: string[];
20
+ historyForTokenEstimate: ChatMessage[];
21
+ summarizer: Parameters<typeof compactChatHistoryWithArchive>[0]['summarizer'];
22
+ createTurnId: () => string;
23
+ onCompactionStatus?: (event: PersistChatTurnCompactionStatus, sourceHistory: ChatMessage[]) => void;
24
+ };
25
+ export type PersistChatTurnArtifacts = {
26
+ compacted: Awaited<ReturnType<typeof compactChatHistoryWithArchive>>;
27
+ summary: string;
28
+ traceFile: string;
29
+ turn: TurnSummary;
30
+ };
31
+ export type PersistChatTurnResult = PersistChatTurnArtifacts & {
32
+ session: ChatSession;
33
+ };
34
+ export declare function createChatTurnPersistenceArtifacts(args: PersistChatTurnResultArgs): Promise<PersistChatTurnArtifacts>;
35
+ export declare function persistChatTurnResult(args: PersistChatTurnResultArgs): Promise<PersistChatTurnResult>;
36
+ //# sourceMappingURL=session-turn-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-turn-result.d.ts","sourceRoot":"","sources":["../../../../src/core/chat/session-turn-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,6BAA6B,EAA6B,MAAM,iBAAiB,CAAC;AAI3F,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI3D,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,uBAAuB,EAAE,WAAW,EAAE,CAAC;IACvC,UAAU,EAAE,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC9E,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,+BAA+B,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;CACrG,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,CAAC;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,wBAAwB,GAAG;IAC7D,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,wBAAsB,kCAAkC,CACtD,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CAqCnC;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAiB3G"}
@@ -0,0 +1,60 @@
1
+ import { compactChatHistoryWithArchive, estimateChatHistoryTokens } from './compaction.js';
2
+ import { buildConversationMessages } from './conversation-lines.js';
3
+ import { formatChatFailureMessage } from './failure-messages.js';
4
+ import { touchSession } from './storage.js';
5
+ import { saveTrace } from './trace.js';
6
+ import { countAssistantSteps, summarizeTrace } from './trace-summary.js';
7
+ export async function createChatTurnPersistenceArtifacts(args) {
8
+ const compacted = await compactChatHistoryWithArchive({
9
+ history: args.result.transcript,
10
+ model: args.model,
11
+ sessionId: args.session.id,
12
+ stateRoot: args.stateRoot,
13
+ usage: args.result.usage,
14
+ toolNames: args.toolNames,
15
+ goal: args.prompt,
16
+ systemContext: args.systemContext,
17
+ summarizer: args.summarizer,
18
+ onStatusChange: (event) => args.onCompactionStatus?.(event, args.result.transcript),
19
+ });
20
+ const traceFile = saveTrace(args.traceDir, args.result.trace);
21
+ const turn = {
22
+ id: args.createTurnId(),
23
+ prompt: args.prompt,
24
+ outcome: args.result.outcome,
25
+ summary: args.result.summary,
26
+ steps: countAssistantSteps(args.result.trace),
27
+ traceFile,
28
+ events: summarizeTrace(args.result.trace),
29
+ };
30
+ const summary = args.result.outcome === 'error' ?
31
+ formatChatFailureMessage(args.result.summary, {
32
+ model: args.model,
33
+ estimatedHistoryTokens: estimateChatHistoryTokens(args.historyForTokenEstimate),
34
+ })
35
+ : args.result.summary;
36
+ return {
37
+ compacted,
38
+ summary,
39
+ traceFile,
40
+ turn,
41
+ };
42
+ }
43
+ export async function persistChatTurnResult(args) {
44
+ const artifacts = await createChatTurnPersistenceArtifacts(args);
45
+ const session = touchSession({
46
+ ...args.session,
47
+ lastContinuePrompt: args.prompt,
48
+ history: artifacts.compacted.history,
49
+ context: artifacts.compacted.context,
50
+ archives: artifacts.compacted.archives,
51
+ lease: undefined,
52
+ messages: buildConversationMessages(artifacts.compacted.history),
53
+ turns: [...args.session.turns, artifacts.turn].slice(-8),
54
+ });
55
+ return {
56
+ ...artifacts,
57
+ session,
58
+ };
59
+ }
60
+ //# sourceMappingURL=session-turn-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-turn-result.js","sourceRoot":"","sources":["../../../../src/core/chat/session-turn-result.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { ToolCall, ToolDefinition } from '../../index.js';
2
+ export type ToolApprovalDecision = {
3
+ approved: boolean;
4
+ reason?: string;
5
+ };
6
+ export type PendingToolApprovalView = {
7
+ tool: string;
8
+ callId: string;
9
+ input: unknown;
10
+ requestedAt: string;
11
+ };
12
+ export declare function requestToolApproval(args: {
13
+ call: ToolCall;
14
+ tool: ToolDefinition;
15
+ createView?: (call: ToolCall, tool: ToolDefinition) => PendingToolApprovalView;
16
+ publish?: (view: PendingToolApprovalView, call: ToolCall, tool: ToolDefinition) => void;
17
+ storePending?: (pending: {
18
+ view: PendingToolApprovalView;
19
+ resolve: (decision: ToolApprovalDecision) => void;
20
+ }) => void;
21
+ }): Promise<ToolApprovalDecision>;
22
+ //# sourceMappingURL=tool-approval-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-approval-host.d.ts","sourceRoot":"","sources":["../../../../src/core/chat/tool-approval-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,MAAM,oBAAoB,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,KAAK,uBAAuB,CAAC;IAC/E,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACxF,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,uBAAuB,CAAC;QAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;CACxH,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAchC"}
@@ -0,0 +1,14 @@
1
+ export function requestToolApproval(args) {
2
+ const view = args.createView?.(args.call, args.tool)
3
+ ?? {
4
+ tool: args.tool.name,
5
+ callId: args.call.id,
6
+ input: args.call.input,
7
+ requestedAt: new Date().toISOString(),
8
+ };
9
+ return new Promise((resolve) => {
10
+ args.storePending?.({ view, resolve });
11
+ args.publish?.(view, args.call, args.tool);
12
+ });
13
+ }
14
+ //# sourceMappingURL=tool-approval-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-approval-host.js","sourceRoot":"","sources":["../../../../src/core/chat/tool-approval-host.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,mBAAmB,CAAC,IAMnC;IACC,MAAM,IAAI,GACR,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;WACpC;YACD,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACpB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACtB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAC;IAEJ,OAAO,IAAI,OAAO,CAAuB,CAAC,OAAO,EAAE,EAAE;QACnD,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC"}