@roackb2/heddle 0.0.28 → 0.0.30
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.
- package/README.md +87 -36
- package/dist/examples/programmatic-loop.js +12 -0
- package/dist/examples/programmatic-loop.js.map +1 -1
- package/dist/src/cli/ask.d.ts.map +1 -1
- package/dist/src/cli/ask.js +27 -5
- package/dist/src/cli/ask.js.map +1 -1
- package/dist/src/cli/chat/App.js +5 -3
- package/dist/src/cli/chat/App.js.map +1 -1
- package/dist/src/cli/chat/hooks/useAgentRun.d.ts +1 -0
- package/dist/src/cli/chat/hooks/useAgentRun.d.ts.map +1 -1
- package/dist/src/cli/chat/hooks/useAgentRun.js +73 -0
- package/dist/src/cli/chat/hooks/useAgentRun.js.map +1 -1
- package/dist/src/cli/chat/hooks/useApprovalFlow.d.ts +1 -0
- package/dist/src/cli/chat/hooks/useApprovalFlow.d.ts.map +1 -1
- package/dist/src/cli/chat/hooks/useApprovalFlow.js +3 -0
- package/dist/src/cli/chat/hooks/useApprovalFlow.js.map +1 -1
- package/dist/src/cli/chat/utils/format.d.ts.map +1 -1
- package/dist/src/cli/chat/utils/format.js +8 -0
- package/dist/src/cli/chat/utils/format.js.map +1 -1
- package/dist/src/cli/chat/utils/runtime.d.ts.map +1 -1
- package/dist/src/cli/chat/utils/runtime.js +7 -3
- package/dist/src/cli/chat/utils/runtime.js.map +1 -1
- package/dist/src/cli/main.js +235 -2
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/cli/remote/control-plane-client.d.ts +76 -0
- package/dist/src/cli/remote/control-plane-client.d.ts.map +1 -1
- package/dist/src/core/agent/mutation-tracking.d.ts.map +1 -1
- package/dist/src/core/agent/mutation-tracking.js +3 -0
- package/dist/src/core/agent/mutation-tracking.js.map +1 -1
- package/dist/src/core/agent/post-mutation.js +2 -2
- package/dist/src/core/agent/post-mutation.js.map +1 -1
- package/dist/src/core/agent/run-agent.d.ts +1 -0
- package/dist/src/core/agent/run-agent.d.ts.map +1 -1
- package/dist/src/core/agent/run-agent.js +136 -28
- package/dist/src/core/agent/run-agent.js.map +1 -1
- package/dist/src/core/agent/tool-dispatch.d.ts +2 -0
- package/dist/src/core/agent/tool-dispatch.d.ts.map +1 -1
- package/dist/src/core/agent/tool-dispatch.js +8 -7
- package/dist/src/core/agent/tool-dispatch.js.map +1 -1
- package/dist/src/core/chat/conversation-lines.d.ts.map +1 -1
- package/dist/src/core/chat/conversation-lines.js +1 -26
- package/dist/src/core/chat/conversation-lines.js.map +1 -1
- package/dist/src/core/chat/session-lease.d.ts +4 -0
- package/dist/src/core/chat/session-lease.d.ts.map +1 -1
- package/dist/src/core/chat/session-lease.js +29 -1
- package/dist/src/core/chat/session-lease.js.map +1 -1
- package/dist/src/core/chat/session-submit.d.ts +2 -0
- package/dist/src/core/chat/session-submit.d.ts.map +1 -1
- package/dist/src/core/chat/session-submit.js +120 -15
- package/dist/src/core/chat/session-submit.js.map +1 -1
- package/dist/src/core/chat/trace-summary.d.ts.map +1 -1
- package/dist/src/core/chat/trace-summary.js +10 -0
- package/dist/src/core/chat/trace-summary.js.map +1 -1
- package/dist/src/core/memory/catalog.d.ts +46 -0
- package/dist/src/core/memory/catalog.d.ts.map +1 -0
- package/dist/src/core/memory/catalog.js +230 -0
- package/dist/src/core/memory/catalog.js.map +1 -0
- package/dist/src/core/memory/domain-prompt.d.ts +2 -0
- package/dist/src/core/memory/domain-prompt.d.ts.map +1 -0
- package/dist/src/core/memory/domain-prompt.js +35 -0
- package/dist/src/core/memory/domain-prompt.js.map +1 -0
- package/dist/src/core/memory/maintainer-tools.d.ts +5 -0
- package/dist/src/core/memory/maintainer-tools.d.ts.map +1 -0
- package/dist/src/core/memory/maintainer-tools.js +10 -0
- package/dist/src/core/memory/maintainer-tools.js.map +1 -0
- package/dist/src/core/memory/maintainer.d.ts +45 -0
- package/dist/src/core/memory/maintainer.d.ts.map +1 -0
- package/dist/src/core/memory/maintainer.js +204 -0
- package/dist/src/core/memory/maintainer.js.map +1 -0
- package/dist/src/core/memory/maintenance-integration.d.ts +20 -0
- package/dist/src/core/memory/maintenance-integration.d.ts.map +1 -0
- package/dist/src/core/memory/maintenance-integration.js +189 -0
- package/dist/src/core/memory/maintenance-integration.js.map +1 -0
- package/dist/src/core/memory/templates.d.ts +9 -0
- package/dist/src/core/memory/templates.d.ts.map +1 -0
- package/dist/src/core/memory/templates.js +32 -0
- package/dist/src/core/memory/templates.js.map +1 -0
- package/dist/src/core/memory/validation.d.ts +39 -0
- package/dist/src/core/memory/validation.d.ts.map +1 -0
- package/dist/src/core/memory/validation.js +94 -0
- package/dist/src/core/memory/validation.js.map +1 -0
- package/dist/src/core/memory/visibility.d.ts +42 -0
- package/dist/src/core/memory/visibility.d.ts.map +1 -0
- package/dist/src/core/memory/visibility.js +156 -0
- package/dist/src/core/memory/visibility.js.map +1 -0
- package/dist/src/core/prompts/system-prompt.d.ts.map +1 -1
- package/dist/src/core/prompts/system-prompt.js +0 -10
- package/dist/src/core/prompts/system-prompt.js.map +1 -1
- package/dist/src/core/review/diff-domain.d.ts +24 -0
- package/dist/src/core/review/diff-domain.d.ts.map +1 -0
- package/dist/src/core/review/diff-domain.js +134 -0
- package/dist/src/core/review/diff-domain.js.map +1 -0
- package/dist/src/core/runtime/agent-loop.d.ts.map +1 -1
- package/dist/src/core/runtime/agent-loop.js +1 -0
- package/dist/src/core/runtime/agent-loop.js.map +1 -1
- package/dist/src/core/runtime/daemon-registry.d.ts +6 -1
- package/dist/src/core/runtime/daemon-registry.d.ts.map +1 -1
- package/dist/src/core/runtime/daemon-registry.js +32 -5
- package/dist/src/core/runtime/daemon-registry.js.map +1 -1
- package/dist/src/core/runtime/default-tools.d.ts +1 -0
- package/dist/src/core/runtime/default-tools.d.ts.map +1 -1
- package/dist/src/core/runtime/default-tools.js +33 -13
- package/dist/src/core/runtime/default-tools.js.map +1 -1
- package/dist/src/core/runtime/heartbeat.d.ts.map +1 -1
- package/dist/src/core/runtime/heartbeat.js +9 -2
- package/dist/src/core/runtime/heartbeat.js.map +1 -1
- package/dist/src/core/runtime/runtime-hosts.js +1 -1
- package/dist/src/core/runtime/runtime-hosts.js.map +1 -1
- package/dist/src/core/runtime/workspaces.d.ts +7 -0
- package/dist/src/core/runtime/workspaces.d.ts.map +1 -1
- package/dist/src/core/runtime/workspaces.js +31 -2
- package/dist/src/core/runtime/workspaces.js.map +1 -1
- package/dist/src/core/tools/edit-file.d.ts +4 -0
- package/dist/src/core/tools/edit-file.d.ts.map +1 -1
- package/dist/src/core/tools/edit-file.js +48 -43
- package/dist/src/core/tools/edit-file.js.map +1 -1
- package/dist/src/core/tools/file-edit-core.d.ts +1 -0
- package/dist/src/core/tools/file-edit-core.d.ts.map +1 -1
- package/dist/src/core/tools/file-edit-core.js +10 -0
- package/dist/src/core/tools/file-edit-core.js.map +1 -1
- package/dist/src/core/tools/list-files.d.ts +4 -0
- package/dist/src/core/tools/list-files.d.ts.map +1 -1
- package/dist/src/core/tools/list-files.js +34 -29
- package/dist/src/core/tools/list-files.js.map +1 -1
- package/dist/src/core/tools/memory-checkpoint.d.ts +8 -0
- package/dist/src/core/tools/memory-checkpoint.d.ts.map +1 -0
- package/dist/src/core/tools/memory-checkpoint.js +131 -0
- package/dist/src/core/tools/memory-checkpoint.js.map +1 -0
- package/dist/src/core/tools/memory-notes.d.ts.map +1 -1
- package/dist/src/core/tools/memory-notes.js +4 -3
- package/dist/src/core/tools/memory-notes.js.map +1 -1
- package/dist/src/core/tools/read-file.d.ts +4 -0
- package/dist/src/core/tools/read-file.d.ts.map +1 -1
- package/dist/src/core/tools/read-file.js +50 -45
- package/dist/src/core/tools/read-file.js.map +1 -1
- package/dist/src/core/tools/record-knowledge.d.ts +9 -0
- package/dist/src/core/tools/record-knowledge.d.ts.map +1 -0
- package/dist/src/core/tools/record-knowledge.js +177 -0
- package/dist/src/core/tools/record-knowledge.js.map +1 -0
- package/dist/src/core/tools/run-shell.d.ts +2 -0
- package/dist/src/core/tools/run-shell.d.ts.map +1 -1
- package/dist/src/core/tools/run-shell.js +3 -0
- package/dist/src/core/tools/run-shell.js.map +1 -1
- package/dist/src/core/tools/search-files.d.ts +1 -0
- package/dist/src/core/tools/search-files.d.ts.map +1 -1
- package/dist/src/core/tools/search-files.js +4 -2
- package/dist/src/core/tools/search-files.js.map +1 -1
- package/dist/src/core/tools/view-image.d.ts +1 -0
- package/dist/src/core/tools/view-image.d.ts.map +1 -1
- package/dist/src/core/tools/view-image.js +2 -1
- package/dist/src/core/tools/view-image.js.map +1 -1
- package/dist/src/core/types.d.ts +33 -0
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +13 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/server/app.d.ts.map +1 -1
- package/dist/src/server/app.js +1 -1
- package/dist/src/server/app.js.map +1 -1
- package/dist/src/server/features/control-plane/router.d.ts +78 -1
- package/dist/src/server/features/control-plane/router.d.ts.map +1 -1
- package/dist/src/server/features/control-plane/router.js +87 -2
- package/dist/src/server/features/control-plane/router.js.map +1 -1
- package/dist/src/server/features/control-plane/services/ask.d.ts.map +1 -1
- package/dist/src/server/features/control-plane/services/ask.js +23 -5
- package/dist/src/server/features/control-plane/services/ask.js.map +1 -1
- package/dist/src/server/features/control-plane/services/chat-sessions.d.ts +2 -0
- package/dist/src/server/features/control-plane/services/chat-sessions.d.ts.map +1 -1
- package/dist/src/server/features/control-plane/services/chat-sessions.js +69 -0
- package/dist/src/server/features/control-plane/services/chat-sessions.js.map +1 -1
- package/dist/src/server/features/control-plane/services/control-plane-state.d.ts.map +1 -1
- package/dist/src/server/features/control-plane/services/control-plane-state.js +26 -1
- package/dist/src/server/features/control-plane/services/control-plane-state.js.map +1 -1
- package/dist/src/server/features/control-plane/services/memory.d.ts +22 -0
- package/dist/src/server/features/control-plane/services/memory.d.ts.map +1 -0
- package/dist/src/server/features/control-plane/services/memory.js +36 -0
- package/dist/src/server/features/control-plane/services/memory.js.map +1 -0
- package/dist/src/server/features/control-plane/services/workspace-diff.d.ts +4 -0
- package/dist/src/server/features/control-plane/services/workspace-diff.d.ts.map +1 -0
- package/dist/src/server/features/control-plane/services/workspace-diff.js +258 -0
- package/dist/src/server/features/control-plane/services/workspace-diff.js.map +1 -0
- package/dist/src/server/features/control-plane/services/workspace-files.d.ts +18 -0
- package/dist/src/server/features/control-plane/services/workspace-files.d.ts.map +1 -1
- package/dist/src/server/features/control-plane/services/workspace-files.js +68 -2
- package/dist/src/server/features/control-plane/services/workspace-files.js.map +1 -1
- package/dist/src/server/features/control-plane/types.d.ts +38 -0
- package/dist/src/server/features/control-plane/types.d.ts.map +1 -1
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +1 -0
- package/dist/src/server/index.js.map +1 -1
- package/dist/src/server/router.d.ts +76 -0
- package/dist/src/server/router.d.ts.map +1 -1
- package/dist/src/web/assets/index-BKSxomk7.js +55 -0
- package/dist/src/web/assets/index-Bl3oDytR.css +2 -0
- package/dist/src/web/index.html +2 -2
- package/package.json +18 -2
- package/dist/src/web/assets/index-COAJyPuH.css +0 -2
- package/dist/src/web/assets/index-DxGlp0Wk.js +0 -52
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
|
-
import {
|
|
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';
|
|
3
5
|
import { buildCompactionRunningContext, compactChatHistoryWithArchive, estimateChatHistoryTokens } from './compaction.js';
|
|
4
6
|
import { buildConversationMessages } from './conversation-lines.js';
|
|
5
7
|
import { formatChatFailureMessage } from './failure-messages.js';
|
|
@@ -32,11 +34,16 @@ export async function submitChatSessionPrompt(args) {
|
|
|
32
34
|
const leasedSession = touchSession(acquireSessionLease(session, leaseOwner));
|
|
33
35
|
saveChatSessions(args.sessionStoragePath, sessions.map((candidate) => candidate.id === session.id ? leasedSession : candidate));
|
|
34
36
|
const llm = createLlmAdapter({ model, apiKey });
|
|
37
|
+
const memoryDir = join(args.stateRoot, 'memory');
|
|
38
|
+
const systemContext = appendMemoryCatalogSystemContext({
|
|
39
|
+
systemContext: args.systemContext,
|
|
40
|
+
memoryRoot: memoryDir,
|
|
41
|
+
});
|
|
35
42
|
const tools = createDefaultAgentTools({
|
|
36
43
|
model,
|
|
37
44
|
apiKey,
|
|
38
45
|
workspaceRoot: args.workspaceRoot,
|
|
39
|
-
memoryDir
|
|
46
|
+
memoryDir,
|
|
40
47
|
searchIgnoreDirs: [],
|
|
41
48
|
includePlanTool: true,
|
|
42
49
|
});
|
|
@@ -48,6 +55,7 @@ export async function submitChatSessionPrompt(args) {
|
|
|
48
55
|
stateRoot: args.stateRoot,
|
|
49
56
|
toolNames: tools.map((tool) => tool.name),
|
|
50
57
|
goal: args.prompt,
|
|
58
|
+
systemContext,
|
|
51
59
|
onStatusChange: (event) => {
|
|
52
60
|
args.onCompactionStatus?.(event);
|
|
53
61
|
if (event.status === 'running') {
|
|
@@ -83,23 +91,47 @@ export async function submitChatSessionPrompt(args) {
|
|
|
83
91
|
apiKey,
|
|
84
92
|
workspaceRoot: args.workspaceRoot,
|
|
85
93
|
stateDir: args.stateRoot,
|
|
86
|
-
memoryDir
|
|
94
|
+
memoryDir,
|
|
87
95
|
llm,
|
|
88
96
|
tools,
|
|
89
97
|
includeDefaultTools: false,
|
|
90
98
|
history: preflightSession.history,
|
|
99
|
+
systemContext,
|
|
91
100
|
onEvent: args.onEvent,
|
|
92
101
|
approveToolCall: args.approveToolCall,
|
|
93
102
|
abortSignal: args.abortSignal,
|
|
94
103
|
});
|
|
104
|
+
const maintenanceMode = args.memoryMaintenanceMode ?? 'background';
|
|
105
|
+
const inlineMaintenance = maintenanceMode === 'inline' ?
|
|
106
|
+
await runMaintenanceForRecordedCandidates({
|
|
107
|
+
memoryRoot: memoryDir,
|
|
108
|
+
llm,
|
|
109
|
+
source: `chat session ${session.id}`,
|
|
110
|
+
trace: result.trace,
|
|
111
|
+
maxSteps: 20,
|
|
112
|
+
onTraceEvent: (event) => args.onEvent?.({ type: 'trace', runId: result.state.runId, event, timestamp: new Date().toISOString() }),
|
|
113
|
+
})
|
|
114
|
+
: undefined;
|
|
115
|
+
const resultTrace = inlineMaintenance && inlineMaintenance.events.length > 0 ?
|
|
116
|
+
[...result.trace, ...inlineMaintenance.events]
|
|
117
|
+
: result.trace;
|
|
118
|
+
const resultForPersistence = {
|
|
119
|
+
...result,
|
|
120
|
+
trace: resultTrace,
|
|
121
|
+
state: {
|
|
122
|
+
...result.state,
|
|
123
|
+
trace: resultTrace,
|
|
124
|
+
},
|
|
125
|
+
};
|
|
95
126
|
const compacted = await compactChatHistoryWithArchive({
|
|
96
|
-
history:
|
|
127
|
+
history: resultForPersistence.transcript,
|
|
97
128
|
model,
|
|
98
129
|
sessionId: session.id,
|
|
99
130
|
stateRoot: args.stateRoot,
|
|
100
|
-
usage:
|
|
131
|
+
usage: resultForPersistence.usage,
|
|
101
132
|
toolNames: tools.map((tool) => tool.name),
|
|
102
133
|
goal: args.prompt,
|
|
134
|
+
systemContext,
|
|
103
135
|
onStatusChange: (event) => {
|
|
104
136
|
args.onCompactionStatus?.(event);
|
|
105
137
|
if (event.status === 'running') {
|
|
@@ -107,7 +139,7 @@ export async function submitChatSessionPrompt(args) {
|
|
|
107
139
|
...preflightSession,
|
|
108
140
|
history: result.transcript,
|
|
109
141
|
context: buildCompactionRunningContext({
|
|
110
|
-
history:
|
|
142
|
+
history: resultForPersistence.transcript,
|
|
111
143
|
previous: preflightSession.context,
|
|
112
144
|
archiveCount: preflightSession.archives?.length,
|
|
113
145
|
currentSummaryPath: preflightSession.context?.currentSummaryPath,
|
|
@@ -118,22 +150,22 @@ export async function submitChatSessionPrompt(args) {
|
|
|
118
150
|
}
|
|
119
151
|
},
|
|
120
152
|
});
|
|
121
|
-
const traceFile = saveTrace(join(args.stateRoot, 'traces'),
|
|
153
|
+
const traceFile = saveTrace(join(args.stateRoot, 'traces'), resultForPersistence.trace);
|
|
122
154
|
const nextTurn = {
|
|
123
155
|
id: `server-turn-${Date.now()}`,
|
|
124
156
|
prompt: args.prompt,
|
|
125
|
-
outcome:
|
|
126
|
-
summary:
|
|
127
|
-
steps: countAssistantSteps(
|
|
157
|
+
outcome: resultForPersistence.outcome,
|
|
158
|
+
summary: resultForPersistence.summary,
|
|
159
|
+
steps: countAssistantSteps(resultForPersistence.trace),
|
|
128
160
|
traceFile,
|
|
129
|
-
events: summarizeTrace(
|
|
161
|
+
events: summarizeTrace(resultForPersistence.trace),
|
|
130
162
|
};
|
|
131
|
-
const formattedSummary =
|
|
132
|
-
formatChatFailureMessage(
|
|
163
|
+
const formattedSummary = resultForPersistence.outcome === 'error' ?
|
|
164
|
+
formatChatFailureMessage(resultForPersistence.summary, {
|
|
133
165
|
model,
|
|
134
166
|
estimatedHistoryTokens: estimateChatHistoryTokens(session.history),
|
|
135
167
|
})
|
|
136
|
-
:
|
|
168
|
+
: resultForPersistence.summary;
|
|
137
169
|
const updatedSession = touchSession({
|
|
138
170
|
...preflightSession,
|
|
139
171
|
lastContinuePrompt: args.prompt,
|
|
@@ -146,8 +178,21 @@ export async function submitChatSessionPrompt(args) {
|
|
|
146
178
|
});
|
|
147
179
|
const nextSessions = sessions.map((candidate) => candidate.id === session.id ? updatedSession : candidate);
|
|
148
180
|
saveChatSessions(args.sessionStoragePath, nextSessions);
|
|
181
|
+
if (maintenanceMode === 'background') {
|
|
182
|
+
scheduleBackgroundMemoryMaintenance({
|
|
183
|
+
memoryRoot: memoryDir,
|
|
184
|
+
llm,
|
|
185
|
+
source: `chat session ${session.id}`,
|
|
186
|
+
trace: result.trace,
|
|
187
|
+
traceFile,
|
|
188
|
+
sessionStoragePath: args.sessionStoragePath,
|
|
189
|
+
sessionId: session.id,
|
|
190
|
+
runId: result.state?.runId ?? `session-${session.id}`,
|
|
191
|
+
onEvent: args.onEvent,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
149
194
|
return {
|
|
150
|
-
outcome:
|
|
195
|
+
outcome: resultForPersistence.outcome,
|
|
151
196
|
summary: formattedSummary,
|
|
152
197
|
session: updatedSession,
|
|
153
198
|
};
|
|
@@ -156,6 +201,66 @@ export async function submitChatSessionPrompt(args) {
|
|
|
156
201
|
clearChatSessionLease(args.sessionStoragePath, session.id, leaseOwner);
|
|
157
202
|
}
|
|
158
203
|
}
|
|
204
|
+
function scheduleBackgroundMemoryMaintenance(args) {
|
|
205
|
+
void (async () => {
|
|
206
|
+
const maintenance = await runMaintenanceForRecordedCandidates({
|
|
207
|
+
memoryRoot: args.memoryRoot,
|
|
208
|
+
llm: args.llm,
|
|
209
|
+
source: args.source,
|
|
210
|
+
trace: args.trace,
|
|
211
|
+
maxSteps: 20,
|
|
212
|
+
onTraceEvent: (event) => args.onEvent?.({ type: 'trace', runId: args.runId, event, timestamp: new Date().toISOString() }),
|
|
213
|
+
});
|
|
214
|
+
if (maintenance.events.length === 0) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
const currentTrace = readTraceEvents(args.traceFile);
|
|
218
|
+
const nextTrace = [...currentTrace, ...maintenance.events];
|
|
219
|
+
writeFileSync(args.traceFile, `${JSON.stringify(nextTrace, null, 2)}\n`, 'utf8');
|
|
220
|
+
const sessions = loadChatSessions(args.sessionStoragePath, true);
|
|
221
|
+
const nextSessions = sessions.map((session) => {
|
|
222
|
+
if (session.id !== args.sessionId) {
|
|
223
|
+
return session;
|
|
224
|
+
}
|
|
225
|
+
return touchSession({
|
|
226
|
+
...session,
|
|
227
|
+
turns: session.turns.map((turn, index) => (index === session.turns.length - 1 ?
|
|
228
|
+
{
|
|
229
|
+
...turn,
|
|
230
|
+
events: summarizeTrace(nextTrace),
|
|
231
|
+
}
|
|
232
|
+
: turn)),
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
saveChatSessions(args.sessionStoragePath, nextSessions);
|
|
236
|
+
})().catch((error) => {
|
|
237
|
+
args.onEvent?.({
|
|
238
|
+
type: 'trace',
|
|
239
|
+
runId: args.runId,
|
|
240
|
+
event: {
|
|
241
|
+
type: 'memory.maintenance_failed',
|
|
242
|
+
runId: `memory-run-${Date.now()}`,
|
|
243
|
+
error: error instanceof Error ? error.message : String(error),
|
|
244
|
+
candidateIds: [],
|
|
245
|
+
step: nextTraceStep(args.trace),
|
|
246
|
+
timestamp: new Date().toISOString(),
|
|
247
|
+
},
|
|
248
|
+
timestamp: new Date().toISOString(),
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
function readTraceEvents(path) {
|
|
253
|
+
try {
|
|
254
|
+
const parsed = JSON.parse(readFileSync(path, 'utf8'));
|
|
255
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
return [];
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
function nextTraceStep(trace) {
|
|
262
|
+
return trace.reduce((max, event) => 'step' in event ? Math.max(max, event.step) : max, 0) + 1;
|
|
263
|
+
}
|
|
159
264
|
export function clearChatSessionLease(sessionStoragePath, sessionId, owner) {
|
|
160
265
|
const sessions = loadChatSessions(sessionStoragePath, true);
|
|
161
266
|
const session = sessions.find((candidate) => candidate.id === sessionId);
|
|
@@ -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":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-summary.d.ts","sourceRoot":"","sources":["../../../../src/core/chat/trace-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAKjD,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"trace-summary.d.ts","sourceRoot":"","sources":["../../../../src/core/chat/trace-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAKjD,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CA0C5D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAE/D"}
|
|
@@ -26,6 +26,16 @@ export function summarizeTrace(trace) {
|
|
|
26
26
|
return [
|
|
27
27
|
`tool result ${event.tool}: ${event.result.ok ? 'ok' : event.result.error ?? 'error'}`,
|
|
28
28
|
];
|
|
29
|
+
case 'memory.candidate_recorded':
|
|
30
|
+
return [`memory candidate recorded: ${event.candidateId}`];
|
|
31
|
+
case 'memory.checkpoint_skipped':
|
|
32
|
+
return [`memory checkpoint skipped: ${truncate(event.rationale, 100)}`];
|
|
33
|
+
case 'memory.maintenance_started':
|
|
34
|
+
return [`memory maintenance started: ${event.candidateIds.join(', ')}`];
|
|
35
|
+
case 'memory.maintenance_finished':
|
|
36
|
+
return [`memory maintenance finished: ${event.outcome}`];
|
|
37
|
+
case 'memory.maintenance_failed':
|
|
38
|
+
return [`memory maintenance failed: ${event.error}`];
|
|
29
39
|
case 'run.finished':
|
|
30
40
|
return [`run finished: ${event.outcome}`];
|
|
31
41
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-summary.js","sourceRoot":"","sources":["../../../../src/core/chat/trace-summary.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trace-summary.js","sourceRoot":"","sources":["../../../../src/core/chat/trace-summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export declare const DEFAULT_MEMORY_ROOT_CATALOG_MAX_BYTES: number;
|
|
2
|
+
export declare const DEFAULT_MEMORY_ROOT_CATALOG_TARGET_BYTES: number;
|
|
3
|
+
export declare const DEFAULT_MEMORY_FOLDER_CATALOG_MAX_BYTES: number;
|
|
4
|
+
export declare const DEFAULT_MEMORY_FOLDER_CATALOG_TARGET_BYTES: number;
|
|
5
|
+
export type MemoryCategory = {
|
|
6
|
+
path: string;
|
|
7
|
+
title: string;
|
|
8
|
+
purpose: string;
|
|
9
|
+
readWhen: string;
|
|
10
|
+
};
|
|
11
|
+
export type BootstrapMemoryWorkspaceResult = {
|
|
12
|
+
memoryRoot: string;
|
|
13
|
+
createdPaths: string[];
|
|
14
|
+
};
|
|
15
|
+
export type MemoryCatalogLoadResult = {
|
|
16
|
+
memoryRoot: string;
|
|
17
|
+
catalogPath: string;
|
|
18
|
+
exists: boolean;
|
|
19
|
+
content: string;
|
|
20
|
+
truncated: boolean;
|
|
21
|
+
originalBytes: number;
|
|
22
|
+
maxBytes: number;
|
|
23
|
+
};
|
|
24
|
+
export type MemoryCatalogShapeValidation = {
|
|
25
|
+
ok: boolean;
|
|
26
|
+
memoryRoot: string;
|
|
27
|
+
missing: string[];
|
|
28
|
+
};
|
|
29
|
+
export declare const DEFAULT_MEMORY_CATEGORIES: MemoryCategory[];
|
|
30
|
+
export declare function bootstrapMemoryWorkspace(options: {
|
|
31
|
+
memoryRoot: string;
|
|
32
|
+
}): BootstrapMemoryWorkspaceResult;
|
|
33
|
+
export declare function loadMemoryRootCatalog(options: {
|
|
34
|
+
memoryRoot: string;
|
|
35
|
+
maxBytes?: number;
|
|
36
|
+
}): MemoryCatalogLoadResult;
|
|
37
|
+
export declare function formatMemoryCatalogSystemContext(catalog: MemoryCatalogLoadResult): string;
|
|
38
|
+
export declare function appendMemoryCatalogSystemContext(options: {
|
|
39
|
+
systemContext?: string;
|
|
40
|
+
memoryRoot: string;
|
|
41
|
+
maxBytes?: number;
|
|
42
|
+
}): string;
|
|
43
|
+
export declare function validateMemoryCatalogShape(options: {
|
|
44
|
+
memoryRoot: string;
|
|
45
|
+
}): MemoryCatalogShapeValidation;
|
|
46
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../../src/core/memory/catalog.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qCAAqC,QAAY,CAAC;AAC/D,eAAO,MAAM,wCAAwC,QAAW,CAAC;AACjE,eAAO,MAAM,uCAAuC,QAAW,CAAC;AAChE,eAAO,MAAM,0CAA0C,QAAW,CAAC;AAEnE,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,cAAc,EA2CrD,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,8BAA8B,CAiBxG;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,uBAAuB,CAgD1B;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAWzF;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAMT;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,4BAA4B,CAYxG"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join, resolve } from 'node:path';
|
|
3
|
+
import { buildMemoryDomainSystemContext } from './domain-prompt.js';
|
|
4
|
+
export const DEFAULT_MEMORY_ROOT_CATALOG_MAX_BYTES = 12 * 1024;
|
|
5
|
+
export const DEFAULT_MEMORY_ROOT_CATALOG_TARGET_BYTES = 8 * 1024;
|
|
6
|
+
export const DEFAULT_MEMORY_FOLDER_CATALOG_MAX_BYTES = 8 * 1024;
|
|
7
|
+
export const DEFAULT_MEMORY_FOLDER_CATALOG_TARGET_BYTES = 5 * 1024;
|
|
8
|
+
export const DEFAULT_MEMORY_CATEGORIES = [
|
|
9
|
+
{
|
|
10
|
+
path: 'current-state',
|
|
11
|
+
title: 'Current State',
|
|
12
|
+
purpose: 'Fresh-session summary, active workstreams, blockers, and recent verified changes.',
|
|
13
|
+
readWhen: 'Start here for non-trivial work or when the user asks what is happening now.',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
path: 'workflows',
|
|
17
|
+
title: 'Workflows',
|
|
18
|
+
purpose: 'Procedures for planning, implementation, review, release, incident, and support work.',
|
|
19
|
+
readWhen: 'Use when the task is process-heavy or the user asks you to follow an established workflow.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
path: 'preferences',
|
|
23
|
+
title: 'Preferences',
|
|
24
|
+
purpose: 'User or team preferences that should shape communication, code style, risk tolerance, and review behavior.',
|
|
25
|
+
readWhen: 'Use before making broad implementation, design, communication, or review choices.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
path: 'domain',
|
|
29
|
+
title: 'Domain',
|
|
30
|
+
purpose: 'Durable project, product, architecture, service, data, or business-domain knowledge.',
|
|
31
|
+
readWhen: 'Use before answering architecture questions or changing unfamiliar project behavior.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
path: 'operations',
|
|
35
|
+
title: 'Operations',
|
|
36
|
+
purpose: 'Commands, environments, deployment/release surfaces, operational status, credentials caveats, and safety notes.',
|
|
37
|
+
readWhen: 'Use before running verification, deployment, migration, incident, or environment-sensitive work.',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
path: 'relationships',
|
|
41
|
+
title: 'Relationships',
|
|
42
|
+
purpose: 'People, teams, systems, projects, ownership, dependencies, escalation paths, and schedules.',
|
|
43
|
+
readWhen: 'Use when work depends on ownership, coordination, external systems, stakeholders, or timing.',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
path: 'history',
|
|
47
|
+
title: 'History',
|
|
48
|
+
purpose: 'Completed decisions, incidents, investigations, migrations, and older context that explains current constraints.',
|
|
49
|
+
readWhen: 'Use when current behavior has historical causes or the task resembles a past incident or decision.',
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
export function bootstrapMemoryWorkspace(options) {
|
|
53
|
+
const memoryRoot = resolve(options.memoryRoot);
|
|
54
|
+
const createdPaths = [];
|
|
55
|
+
mkdirSync(memoryRoot, { recursive: true });
|
|
56
|
+
writeIfMissing(join(memoryRoot, 'README.md'), createRootCatalogTemplate(), createdPaths, memoryRoot);
|
|
57
|
+
for (const category of DEFAULT_MEMORY_CATEGORIES) {
|
|
58
|
+
const categoryRoot = join(memoryRoot, category.path);
|
|
59
|
+
mkdirSync(categoryRoot, { recursive: true });
|
|
60
|
+
writeIfMissing(join(categoryRoot, 'README.md'), createFolderCatalogTemplate(category), createdPaths, memoryRoot);
|
|
61
|
+
}
|
|
62
|
+
mkdirSync(join(memoryRoot, '_maintenance'), { recursive: true });
|
|
63
|
+
writeIfMissing(join(memoryRoot, '_maintenance', 'runs.jsonl'), '', createdPaths, memoryRoot);
|
|
64
|
+
return { memoryRoot, createdPaths };
|
|
65
|
+
}
|
|
66
|
+
export function loadMemoryRootCatalog(options) {
|
|
67
|
+
const memoryRoot = resolve(options.memoryRoot);
|
|
68
|
+
const maxBytes = options.maxBytes ?? DEFAULT_MEMORY_ROOT_CATALOG_MAX_BYTES;
|
|
69
|
+
const catalogPath = join(memoryRoot, 'README.md');
|
|
70
|
+
if (!existsSync(catalogPath)) {
|
|
71
|
+
const content = [
|
|
72
|
+
'No workspace memory catalog exists yet.',
|
|
73
|
+
'',
|
|
74
|
+
`Expected root catalog: ${catalogPath}`,
|
|
75
|
+
'',
|
|
76
|
+
'Memory remains available through list/read/search tools when notes exist, but startup recall is not initialized.',
|
|
77
|
+
'Initialize a cataloged memory workspace before relying on durable recall.',
|
|
78
|
+
].join('\n');
|
|
79
|
+
return {
|
|
80
|
+
memoryRoot,
|
|
81
|
+
catalogPath,
|
|
82
|
+
exists: false,
|
|
83
|
+
content,
|
|
84
|
+
truncated: false,
|
|
85
|
+
originalBytes: Buffer.byteLength(content, 'utf8'),
|
|
86
|
+
maxBytes,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const original = readFileSync(catalogPath, 'utf8').trim();
|
|
90
|
+
const originalBytes = Buffer.byteLength(original, 'utf8');
|
|
91
|
+
const truncatedContent = truncateUtf8(original, maxBytes);
|
|
92
|
+
const truncated = originalBytes > Buffer.byteLength(truncatedContent, 'utf8');
|
|
93
|
+
const content = truncated ?
|
|
94
|
+
[
|
|
95
|
+
truncatedContent,
|
|
96
|
+
'',
|
|
97
|
+
`[Memory catalog truncated to ${maxBytes} bytes from ${originalBytes} bytes. Use read_memory_note on README.md for the full catalog.]`,
|
|
98
|
+
].join('\n')
|
|
99
|
+
: original;
|
|
100
|
+
return {
|
|
101
|
+
memoryRoot,
|
|
102
|
+
catalogPath,
|
|
103
|
+
exists: true,
|
|
104
|
+
content,
|
|
105
|
+
truncated,
|
|
106
|
+
originalBytes,
|
|
107
|
+
maxBytes,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export function formatMemoryCatalogSystemContext(catalog) {
|
|
111
|
+
const header = catalog.exists ? '## Workspace Memory Catalog' : '## Workspace Memory Catalog Missing';
|
|
112
|
+
return [
|
|
113
|
+
header,
|
|
114
|
+
'',
|
|
115
|
+
`Source: ${catalog.catalogPath}`,
|
|
116
|
+
'',
|
|
117
|
+
catalog.content,
|
|
118
|
+
'',
|
|
119
|
+
'Startup memory policy: this is the only memory document loaded automatically. Use memory tools to read relevant folder catalogs or notes before relying on deeper memory.',
|
|
120
|
+
].join('\n');
|
|
121
|
+
}
|
|
122
|
+
export function appendMemoryCatalogSystemContext(options) {
|
|
123
|
+
const catalog = loadMemoryRootCatalog({ memoryRoot: options.memoryRoot, maxBytes: options.maxBytes });
|
|
124
|
+
const memoryContext = formatMemoryCatalogSystemContext(catalog);
|
|
125
|
+
const domainContext = buildMemoryDomainSystemContext();
|
|
126
|
+
const context = `${domainContext}\n\n${memoryContext}`;
|
|
127
|
+
return options.systemContext ? `${options.systemContext}\n\n${context}` : context;
|
|
128
|
+
}
|
|
129
|
+
export function validateMemoryCatalogShape(options) {
|
|
130
|
+
const memoryRoot = resolve(options.memoryRoot);
|
|
131
|
+
const requiredPaths = [
|
|
132
|
+
'README.md',
|
|
133
|
+
...DEFAULT_MEMORY_CATEGORIES.map((category) => join(category.path, 'README.md')),
|
|
134
|
+
];
|
|
135
|
+
const missing = requiredPaths.filter((relativePath) => !existsSync(join(memoryRoot, relativePath)));
|
|
136
|
+
return {
|
|
137
|
+
ok: missing.length === 0,
|
|
138
|
+
memoryRoot,
|
|
139
|
+
missing,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function writeIfMissing(path, content, createdPaths, memoryRoot) {
|
|
143
|
+
if (existsSync(path)) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
147
|
+
writeFileSync(path, content, 'utf8');
|
|
148
|
+
createdPaths.push(toMemoryRelativePath(memoryRoot, path));
|
|
149
|
+
}
|
|
150
|
+
function createRootCatalogTemplate() {
|
|
151
|
+
return [
|
|
152
|
+
'# Workspace Memory',
|
|
153
|
+
'',
|
|
154
|
+
'Purpose: durable workspace knowledge that helps future agents become operational quickly.',
|
|
155
|
+
'',
|
|
156
|
+
'## Authority And Freshness',
|
|
157
|
+
'',
|
|
158
|
+
'- Live workspace evidence wins over memory when they disagree.',
|
|
159
|
+
'- Current-state notes with recent verification are stronger than older focused notes.',
|
|
160
|
+
'- Historical notes explain decisions and incidents but may be stale.',
|
|
161
|
+
'- Important stale, disputed, or superseded facts should be marked rather than silently removed.',
|
|
162
|
+
'',
|
|
163
|
+
'## Fast Reading Path',
|
|
164
|
+
'',
|
|
165
|
+
'- New non-trivial task: read `current-state/README.md`, then the category that matches the task.',
|
|
166
|
+
'- Coding or architecture task: read `domain/README.md`, `operations/README.md`, and relevant preferences.',
|
|
167
|
+
'- Workflow, release, PR, or incident task: read `workflows/README.md`, `operations/README.md`, and relevant history.',
|
|
168
|
+
'- Coordination-heavy task: read `relationships/README.md`.',
|
|
169
|
+
'',
|
|
170
|
+
'## Category Index',
|
|
171
|
+
'',
|
|
172
|
+
...DEFAULT_MEMORY_CATEGORIES.map((category) => `- [${category.title}](${category.path}/README.md): ${category.purpose}`),
|
|
173
|
+
'',
|
|
174
|
+
'## High-Value Notes',
|
|
175
|
+
'',
|
|
176
|
+
'- Add links here when notes become important enough for every fresh agent to notice.',
|
|
177
|
+
'',
|
|
178
|
+
'## Stale Or Disputed Notes',
|
|
179
|
+
'',
|
|
180
|
+
'- Add links here when a note should be treated with caution.',
|
|
181
|
+
'',
|
|
182
|
+
'## Maintenance Instructions',
|
|
183
|
+
'',
|
|
184
|
+
'- Keep this catalog short and navigable.',
|
|
185
|
+
'- Every folder that contains memory notes needs its own `README.md` catalog.',
|
|
186
|
+
'- Every durable note should be discoverable through this catalog or a folder catalog.',
|
|
187
|
+
'- Prefer updating existing notes over scattering small one-off notes.',
|
|
188
|
+
'- Do not store secrets.',
|
|
189
|
+
'',
|
|
190
|
+
].join('\n');
|
|
191
|
+
}
|
|
192
|
+
function createFolderCatalogTemplate(category) {
|
|
193
|
+
return [
|
|
194
|
+
`# ${category.title}`,
|
|
195
|
+
'',
|
|
196
|
+
`Purpose: ${category.purpose}`,
|
|
197
|
+
'',
|
|
198
|
+
`When to read: ${category.readWhen}`,
|
|
199
|
+
'',
|
|
200
|
+
'## Notes Index',
|
|
201
|
+
'',
|
|
202
|
+
'- Add note links here as this folder grows.',
|
|
203
|
+
'',
|
|
204
|
+
'## Related Folders',
|
|
205
|
+
'',
|
|
206
|
+
'- `../README.md`: root memory catalog.',
|
|
207
|
+
'',
|
|
208
|
+
'## Maintenance Rules',
|
|
209
|
+
'',
|
|
210
|
+
'- Keep this catalog short enough to scan quickly.',
|
|
211
|
+
'- Add notes only when they preserve durable context for future work.',
|
|
212
|
+
'- Update this catalog whenever adding, renaming, or retiring notes in this folder.',
|
|
213
|
+
'- Mark stale, disputed, or superseded knowledge explicitly.',
|
|
214
|
+
'',
|
|
215
|
+
].join('\n');
|
|
216
|
+
}
|
|
217
|
+
function truncateUtf8(value, maxBytes) {
|
|
218
|
+
if (maxBytes <= 0) {
|
|
219
|
+
return '';
|
|
220
|
+
}
|
|
221
|
+
const bytes = Buffer.from(value, 'utf8');
|
|
222
|
+
if (bytes.length <= maxBytes) {
|
|
223
|
+
return value;
|
|
224
|
+
}
|
|
225
|
+
return bytes.subarray(0, maxBytes).toString('utf8').replace(/\uFFFD+$/u, '').trimEnd();
|
|
226
|
+
}
|
|
227
|
+
function toMemoryRelativePath(memoryRoot, path) {
|
|
228
|
+
return path.slice(memoryRoot.length).replace(/^\/+/, '') || '.';
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../../src/core/memory/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-prompt.d.ts","sourceRoot":"","sources":["../../../../src/core/memory/domain-prompt.ts"],"names":[],"mappings":"AAAA,wBAAgB,8BAA8B,IAAI,MAAM,CAiCvD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export function buildMemoryDomainSystemContext() {
|
|
2
|
+
return [
|
|
3
|
+
'## Heddle-Managed Memory Domain',
|
|
4
|
+
'',
|
|
5
|
+
'Heddle-managed memory is the durable recall substrate for the agent. It is different from ordinary repository documentation.',
|
|
6
|
+
'',
|
|
7
|
+
'### Knowledge Surfaces',
|
|
8
|
+
'',
|
|
9
|
+
'- Repository docs such as README files, AGENTS.md, or docs/ are project-authored evidence. Use them for current product, code, and user-facing documentation facts.',
|
|
10
|
+
'- Heddle-managed memory under .heddle/memory is agent-maintained durable context. Use it for preferences, workflows, current-state handoff, operational conventions, relationships, history, and not-obvious knowledge that helps future sessions avoid rediscovery.',
|
|
11
|
+
'- Live workspace evidence wins when implementation facts conflict with memory. Memory is strongest for user/team preferences, recurring workflows, historical context, and operational knowledge that may not be obvious from code.',
|
|
12
|
+
'',
|
|
13
|
+
'### Retrieval Model',
|
|
14
|
+
'',
|
|
15
|
+
'- For preference-shaped, workflow-shaped, planning-style, ticket/format, review-style, coordination, or recurring operational questions, consult Heddle-managed memory before broad repository search.',
|
|
16
|
+
'- Follow the catalog path: read the root memory catalog, then the relevant folder README catalog, then focused notes listed there.',
|
|
17
|
+
'- Use search_memory_notes when the likely folder is unclear. Use list_memory_notes and read_memory_note when the catalog already points to a likely folder or note.',
|
|
18
|
+
'- Do not grep ordinary repo files first for durable preferences or workflow conventions unless memory has no relevant path or live repository evidence is needed.',
|
|
19
|
+
'',
|
|
20
|
+
'### Maintenance Model',
|
|
21
|
+
'',
|
|
22
|
+
'- Preserve the discovery path. Every durable memory note must be discoverable from the root README.md or a folder README.md.',
|
|
23
|
+
'- Prefer updating an existing cataloged note over scattering many small notes.',
|
|
24
|
+
'- Keep folder README.md files as indexes, not long-form dumps.',
|
|
25
|
+
'- Do not store secrets, speculative guesses, one-turn plans, or temporary command output.',
|
|
26
|
+
'',
|
|
27
|
+
'### Checkpoint Model',
|
|
28
|
+
'',
|
|
29
|
+
'- Before the final answer, run a quick memory checkpoint when memory_checkpoint is available.',
|
|
30
|
+
'- Record durable candidates when the user states a future preference/workflow/format or the turn uncovers stable reusable workspace knowledge.',
|
|
31
|
+
'- Skip one-off task details, duplicate facts, temporary plans, speculative guesses, and information that should remain only in the current transcript.',
|
|
32
|
+
'',
|
|
33
|
+
].join('\n');
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=domain-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-prompt.js","sourceRoot":"","sources":["../../../../src/core/memory/domain-prompt.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,8BAA8B;IAC5C,OAAO;QACL,iCAAiC;QACjC,EAAE;QACF,8HAA8H;QAC9H,EAAE;QACF,wBAAwB;QACxB,EAAE;QACF,qKAAqK;QACrK,sQAAsQ;QACtQ,qOAAqO;QACrO,EAAE;QACF,qBAAqB;QACrB,EAAE;QACF,wMAAwM;QACxM,oIAAoI;QACpI,qKAAqK;QACrK,mKAAmK;QACnK,EAAE;QACF,uBAAuB;QACvB,EAAE;QACF,8HAA8H;QAC9H,gFAAgF;QAChF,gEAAgE;QAChE,2FAA2F;QAC3F,EAAE;QACF,sBAAsB;QACtB,EAAE;QACF,+FAA+F;QAC/F,gJAAgJ;QAChJ,wJAAwJ;QACxJ,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|