@agentuity/opencode 0.1.36 → 0.1.38
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/dist/agents/memory.d.ts +1 -1
- package/dist/agents/memory.d.ts.map +1 -1
- package/dist/agents/memory.js +170 -93
- package/dist/agents/memory.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/plugin/hooks/cadence.d.ts +14 -2
- package/dist/plugin/hooks/cadence.d.ts.map +1 -1
- package/dist/plugin/hooks/cadence.js +60 -28
- package/dist/plugin/hooks/cadence.js.map +1 -1
- package/dist/plugin/hooks/keyword.d.ts +3 -2
- package/dist/plugin/hooks/keyword.d.ts.map +1 -1
- package/dist/plugin/hooks/keyword.js.map +1 -1
- package/dist/plugin/hooks/params.d.ts +3 -2
- package/dist/plugin/hooks/params.d.ts.map +1 -1
- package/dist/plugin/hooks/params.js +5 -2
- package/dist/plugin/hooks/params.js.map +1 -1
- package/dist/plugin/hooks/session-memory.d.ts +25 -0
- package/dist/plugin/hooks/session-memory.d.ts.map +1 -0
- package/dist/plugin/hooks/session-memory.js +111 -0
- package/dist/plugin/hooks/session-memory.js.map +1 -0
- package/dist/plugin/hooks/session.d.ts +3 -2
- package/dist/plugin/hooks/session.d.ts.map +1 -1
- package/dist/plugin/hooks/session.js.map +1 -1
- package/dist/plugin/hooks/tools.d.ts +3 -2
- package/dist/plugin/hooks/tools.d.ts.map +1 -1
- package/dist/plugin/hooks/tools.js +5 -2
- package/dist/plugin/hooks/tools.js.map +1 -1
- package/dist/plugin/plugin.d.ts +2 -2
- package/dist/plugin/plugin.d.ts.map +1 -1
- package/dist/plugin/plugin.js +41 -3
- package/dist/plugin/plugin.js.map +1 -1
- package/dist/types.d.ts +1 -61
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +4 -3
- package/src/agents/memory.ts +170 -93
- package/src/index.ts +3 -3
- package/src/plugin/hooks/cadence.ts +71 -32
- package/src/plugin/hooks/keyword.ts +3 -2
- package/src/plugin/hooks/params.ts +8 -4
- package/src/plugin/hooks/session-memory.ts +137 -0
- package/src/plugin/hooks/session.ts +3 -2
- package/src/plugin/hooks/tools.ts +12 -5
- package/src/plugin/plugin.ts +51 -7
- package/src/types.ts +10 -54
|
@@ -115,7 +115,7 @@ export function createCadenceHooks(ctx, _config) {
|
|
|
115
115
|
if (!event)
|
|
116
116
|
return;
|
|
117
117
|
log(`Event received: ${event.type}`);
|
|
118
|
-
// Handle session.compacted -
|
|
118
|
+
// Handle session.compacted - save compaction AND continue loop
|
|
119
119
|
if (event.type === 'session.compacted') {
|
|
120
120
|
const sessionId = event.sessionId;
|
|
121
121
|
if (!sessionId)
|
|
@@ -123,9 +123,8 @@ export function createCadenceHooks(ctx, _config) {
|
|
|
123
123
|
const state = activeCadenceSessions.get(sessionId);
|
|
124
124
|
if (!state)
|
|
125
125
|
return;
|
|
126
|
-
log(`Compaction completed for Cadence session ${sessionId} -
|
|
127
|
-
showToast(ctx, '🔄
|
|
128
|
-
// Inject continuation prompt if session.prompt is available
|
|
126
|
+
log(`Compaction completed for Cadence session ${sessionId} - saving and continuing`);
|
|
127
|
+
showToast(ctx, '🔄 Compaction saved, resuming Cadence...');
|
|
129
128
|
try {
|
|
130
129
|
await ctx.client.session?.prompt?.({
|
|
131
130
|
path: { id: sessionId },
|
|
@@ -133,16 +132,52 @@ export function createCadenceHooks(ctx, _config) {
|
|
|
133
132
|
parts: [
|
|
134
133
|
{
|
|
135
134
|
type: 'text',
|
|
136
|
-
text: `[CADENCE
|
|
135
|
+
text: `[CADENCE COMPACTION COMPLETE]
|
|
137
136
|
|
|
138
|
-
|
|
137
|
+
The compaction summary above contains our Cadence session context.
|
|
139
138
|
|
|
140
|
-
1.
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
139
|
+
1. Have @Agentuity Coder Memory save this compaction:
|
|
140
|
+
- Get existing session: \`agentuity cloud kv get agentuity-opencode-memory "session:${sessionId}" --json --region use\`
|
|
141
|
+
- Append compaction to \`compactions\` array with timestamp
|
|
142
|
+
- Ensure \`cadence\` object exists with: loopId="${state.loopId ?? 'unknown'}", iteration=${state.iteration}, maxIterations=${state.maxIterations}, status="active"
|
|
143
|
+
- Save back to KV and upsert to Vector
|
|
144
144
|
|
|
145
|
-
|
|
145
|
+
After saving the compaction:
|
|
146
|
+
1. Read back the session record from KV
|
|
147
|
+
2. Return to Lead the PREVIOUS compactions only (not the one just saved - Lead already has the current compaction in context)
|
|
148
|
+
3. Format as a readable summary with timestamps
|
|
149
|
+
4. Include "what's next" - the Cadence iteration to continue
|
|
150
|
+
|
|
151
|
+
Response format:
|
|
152
|
+
\`\`\`
|
|
153
|
+
## Prior Session History: ${sessionId}
|
|
154
|
+
|
|
155
|
+
### Compaction 1 (timestamp)
|
|
156
|
+
[summary]
|
|
157
|
+
|
|
158
|
+
### Compaction 2 (timestamp)
|
|
159
|
+
[summary]
|
|
160
|
+
|
|
161
|
+
(Current compaction already in your context)
|
|
162
|
+
|
|
163
|
+
## What's Next
|
|
164
|
+
Continue Cadence iteration ${state.iteration} of ${state.maxIterations}
|
|
165
|
+
\`\`\`
|
|
166
|
+
|
|
167
|
+
If no prior compactions exist:
|
|
168
|
+
\`\`\`
|
|
169
|
+
## Prior Session History: ${sessionId}
|
|
170
|
+
|
|
171
|
+
No prior compactions - this is the first one.
|
|
172
|
+
|
|
173
|
+
## What's Next
|
|
174
|
+
Continue Cadence iteration ${state.iteration} of ${state.maxIterations}
|
|
175
|
+
\`\`\`
|
|
176
|
+
|
|
177
|
+
2. Then continue the Cadence loop:
|
|
178
|
+
- Review the compaction summary above for context
|
|
179
|
+
- Continue with iteration ${state.iteration}
|
|
180
|
+
- Do NOT restart from the beginning - pick up where we left off`,
|
|
146
181
|
},
|
|
147
182
|
],
|
|
148
183
|
agent: 'Agentuity Coder Lead',
|
|
@@ -150,8 +185,7 @@ Continue executing the task.`,
|
|
|
150
185
|
});
|
|
151
186
|
}
|
|
152
187
|
catch (err) {
|
|
153
|
-
log(`Failed to
|
|
154
|
-
// Continuation will rely on auto-generated "Continue if you have next steps"
|
|
188
|
+
log(`Failed to save compaction and continue: ${err}`);
|
|
155
189
|
}
|
|
156
190
|
}
|
|
157
191
|
// Handle session.idle - log for debugging/monitoring
|
|
@@ -185,34 +219,32 @@ Continue executing the task.`,
|
|
|
185
219
|
}
|
|
186
220
|
log(`Injecting Cadence context during compaction for session ${sessionId}`);
|
|
187
221
|
showToast(ctx, '💾 Compacting Cadence context...');
|
|
188
|
-
const loopIdStr = state.loopId ?? '{loopId}';
|
|
189
|
-
// Inject Cadence state into the compaction context
|
|
190
222
|
output.context.push(`
|
|
191
223
|
## CADENCE MODE ACTIVE
|
|
192
224
|
|
|
193
225
|
This session is running in Cadence mode (long-running autonomous loop).
|
|
194
226
|
|
|
195
227
|
**Cadence State:**
|
|
228
|
+
- Session ID: ${sessionId}
|
|
196
229
|
- Loop ID: ${state.loopId ?? 'unknown'}
|
|
197
230
|
- Started: ${state.startedAt}
|
|
198
231
|
- Iteration: ${state.iteration} / ${state.maxIterations}
|
|
199
232
|
- Last activity: ${state.lastActivity}
|
|
200
233
|
|
|
201
|
-
**
|
|
202
|
-
|
|
203
|
-
2. Read the loop state from KV: \`agentuity cloud kv get agentuity-opencode-tasks "loop:${loopIdStr}:state"\`
|
|
204
|
-
3. Emit CADENCE_STATUS tag with current state
|
|
205
|
-
4. Continue the iteration workflow from where you left off
|
|
206
|
-
5. Do NOT restart the task from the beginning
|
|
207
|
-
|
|
208
|
-
**Memory Keys to Query:**
|
|
209
|
-
- \`loop:${loopIdStr}:state\` - Current loop state
|
|
210
|
-
- \`loop:${loopIdStr}:checkpoint:{N}\` - Iteration checkpoints
|
|
211
|
-
- \`loop:${loopIdStr}:compaction:{N}\` - Compaction snapshots
|
|
234
|
+
**Session Record Location:**
|
|
235
|
+
\`session:${sessionId}\` in agentuity-opencode-memory
|
|
212
236
|
|
|
213
|
-
|
|
237
|
+
After compaction, Memory will save this summary and update the cadence state.
|
|
238
|
+
Then Lead will continue the loop from iteration ${state.iteration}.
|
|
214
239
|
`);
|
|
215
240
|
},
|
|
241
|
+
/**
|
|
242
|
+
* Check if a session is currently in Cadence mode.
|
|
243
|
+
* Used by session-memory hooks to avoid double-handling.
|
|
244
|
+
*/
|
|
245
|
+
isActiveCadenceSession(sessionId) {
|
|
246
|
+
return activeCadenceSessions.has(sessionId);
|
|
247
|
+
},
|
|
216
248
|
};
|
|
217
249
|
}
|
|
218
250
|
function extractSessionId(input) {
|
|
@@ -285,7 +317,7 @@ function isCadenceStop(text) {
|
|
|
285
317
|
}
|
|
286
318
|
function showToast(ctx, message) {
|
|
287
319
|
try {
|
|
288
|
-
ctx.client.tui
|
|
320
|
+
ctx.client.tui.showToast({ body: { message, variant: 'info' } });
|
|
289
321
|
}
|
|
290
322
|
catch {
|
|
291
323
|
// Toast may not be available
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cadence.js","sourceRoot":"","sources":["../../../src/plugin/hooks/cadence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cadence.js","sourceRoot":"","sources":["../../../src/plugin/hooks/cadence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PluginInput } from '@opencode-ai/plugin';
|
|
2
|
+
import type { CoderConfig } from '../../types';
|
|
2
3
|
export interface KeywordHooks {
|
|
3
4
|
onMessage: (input: unknown, output: unknown) => Promise<void>;
|
|
4
5
|
}
|
|
5
|
-
export declare function createKeywordHooks(ctx:
|
|
6
|
+
export declare function createKeywordHooks(ctx: PluginInput, _config: CoderConfig): KeywordHooks;
|
|
6
7
|
//# sourceMappingURL=keyword.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyword.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/keyword.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"keyword.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/keyword.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAiCD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,YAAY,CAgDvF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyword.js","sourceRoot":"","sources":["../../../src/plugin/hooks/keyword.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keyword.js","sourceRoot":"","sources":["../../../src/plugin/hooks/keyword.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PluginInput } from '@opencode-ai/plugin';
|
|
2
|
+
import type { CoderConfig } from '../../types';
|
|
2
3
|
export interface ParamsHooks {
|
|
3
4
|
onParams: (input: unknown, output: unknown) => Promise<void>;
|
|
4
5
|
}
|
|
5
|
-
export declare function createParamsHooks(ctx:
|
|
6
|
+
export declare function createParamsHooks(ctx: PluginInput, _config: CoderConfig): ParamsHooks;
|
|
6
7
|
/**
|
|
7
8
|
* Advertised magic words for users:
|
|
8
9
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AA4FD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,CA+ErF;AAED;;;;;;;;;;;;;GAaG"}
|
|
@@ -111,8 +111,11 @@ export function createParamsHooks(ctx, _config) {
|
|
|
111
111
|
thorough: '🔍 Thorough Mode activated - more iterations enabled',
|
|
112
112
|
};
|
|
113
113
|
try {
|
|
114
|
-
ctx.client.tui
|
|
115
|
-
body: {
|
|
114
|
+
ctx.client.tui.showToast({
|
|
115
|
+
body: {
|
|
116
|
+
message: modeMessages[detected.mode] || `${detected.mode} mode activated`,
|
|
117
|
+
variant: 'info',
|
|
118
|
+
},
|
|
116
119
|
});
|
|
117
120
|
}
|
|
118
121
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../../src/plugin/hooks/params.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../../src/plugin/hooks/params.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { PluginInput } from '@opencode-ai/plugin';
|
|
2
|
+
import type { CoderConfig } from '../../types';
|
|
3
|
+
export interface SessionMemoryHooks {
|
|
4
|
+
onEvent: (input: {
|
|
5
|
+
event: {
|
|
6
|
+
type: string;
|
|
7
|
+
properties?: Record<string, unknown>;
|
|
8
|
+
};
|
|
9
|
+
}) => Promise<void>;
|
|
10
|
+
onCompacting: (input: {
|
|
11
|
+
sessionID: string;
|
|
12
|
+
}, output: {
|
|
13
|
+
context: string[];
|
|
14
|
+
prompt?: string;
|
|
15
|
+
}) => Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Session memory hooks handle compaction for non-Cadence sessions.
|
|
19
|
+
*
|
|
20
|
+
* Strategy:
|
|
21
|
+
* 1. On compacting: Inject Memory system info into compaction prompt
|
|
22
|
+
* 2. On session.compacted: Tell Lead to have Memory save the summary (it's already in context!)
|
|
23
|
+
*/
|
|
24
|
+
export declare function createSessionMemoryHooks(ctx: PluginInput, _config: CoderConfig): SessionMemoryHooks;
|
|
25
|
+
//# sourceMappingURL=session-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-memory.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/session-memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,CAAC,KAAK,EAAE;QAChB,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;KAC9D,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,YAAY,EAAE,CACb,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,EAC5B,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAC1C,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACvC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,WAAW,GAClB,kBAAkB,CAiHpB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session memory hooks handle compaction for non-Cadence sessions.
|
|
3
|
+
*
|
|
4
|
+
* Strategy:
|
|
5
|
+
* 1. On compacting: Inject Memory system info into compaction prompt
|
|
6
|
+
* 2. On session.compacted: Tell Lead to have Memory save the summary (it's already in context!)
|
|
7
|
+
*/
|
|
8
|
+
export function createSessionMemoryHooks(ctx, _config) {
|
|
9
|
+
const log = (msg) => {
|
|
10
|
+
ctx.client.app.log({
|
|
11
|
+
body: {
|
|
12
|
+
service: 'session-memory',
|
|
13
|
+
level: 'debug',
|
|
14
|
+
message: msg,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
return {
|
|
19
|
+
/**
|
|
20
|
+
* Listen for session.compacted event.
|
|
21
|
+
* The compaction summary is already in context - just tell Lead to save it.
|
|
22
|
+
*/
|
|
23
|
+
async onEvent(input) {
|
|
24
|
+
const { event } = input;
|
|
25
|
+
if (event?.type !== 'session.compacted')
|
|
26
|
+
return;
|
|
27
|
+
const sessionId = event.properties?.sessionId ??
|
|
28
|
+
event.properties?.sessionID;
|
|
29
|
+
if (!sessionId)
|
|
30
|
+
return;
|
|
31
|
+
log(`Compaction complete for session ${sessionId} - triggering memory save`);
|
|
32
|
+
try {
|
|
33
|
+
await ctx.client.session.prompt({
|
|
34
|
+
path: { id: sessionId },
|
|
35
|
+
body: {
|
|
36
|
+
parts: [
|
|
37
|
+
{
|
|
38
|
+
type: 'text',
|
|
39
|
+
text: `[COMPACTION COMPLETE]
|
|
40
|
+
|
|
41
|
+
The compaction summary above contains our session context.
|
|
42
|
+
|
|
43
|
+
Have @Agentuity Coder Memory save this compaction:
|
|
44
|
+
1. Get existing session record (or create new): \`agentuity cloud kv get agentuity-opencode-memory "session:${sessionId}" --json --region use\`
|
|
45
|
+
2. Append this compaction summary to the \`compactions\` array with timestamp
|
|
46
|
+
3. Save back: \`agentuity cloud kv set agentuity-opencode-memory "session:${sessionId}" '{...}' --region use\`
|
|
47
|
+
4. Upsert to Vector for semantic search: \`agentuity cloud vector upsert agentuity-opencode-sessions "session:${sessionId}" --document "..." --metadata '...' --region use\`
|
|
48
|
+
|
|
49
|
+
After saving the compaction:
|
|
50
|
+
1. Read back the session record from KV
|
|
51
|
+
2. Return to Lead the PREVIOUS compactions only (not the one just saved - Lead already has the current compaction in context)
|
|
52
|
+
3. Format as a readable summary with timestamps
|
|
53
|
+
4. Include "what's next" - the user's pending request if there is one
|
|
54
|
+
|
|
55
|
+
Response format:
|
|
56
|
+
\`\`\`
|
|
57
|
+
## Prior Session History: ${sessionId}
|
|
58
|
+
|
|
59
|
+
### Compaction 1 (timestamp)
|
|
60
|
+
[summary]
|
|
61
|
+
|
|
62
|
+
### Compaction 2 (timestamp)
|
|
63
|
+
[summary]
|
|
64
|
+
|
|
65
|
+
(Current compaction already in your context)
|
|
66
|
+
|
|
67
|
+
## What's Next
|
|
68
|
+
[User's pending request if there is one]
|
|
69
|
+
\`\`\`
|
|
70
|
+
|
|
71
|
+
If no prior compactions exist:
|
|
72
|
+
\`\`\`
|
|
73
|
+
## Prior Session History: ${sessionId}
|
|
74
|
+
|
|
75
|
+
No prior compactions - this is the first one.
|
|
76
|
+
|
|
77
|
+
## What's Next
|
|
78
|
+
[User's pending request if there is one]
|
|
79
|
+
\`\`\`
|
|
80
|
+
|
|
81
|
+
Then continue with the current task if there is one.`,
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
agent: 'Agentuity Coder Lead',
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
log(`Memory save triggered for session ${sessionId}`);
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
log(`Failed to trigger memory save: ${err}`);
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
/**
|
|
94
|
+
* Inject Memory system info during compaction.
|
|
95
|
+
* This gets included in OpenCode's generated summary.
|
|
96
|
+
*/
|
|
97
|
+
async onCompacting(input, output) {
|
|
98
|
+
const sessionId = input.sessionID;
|
|
99
|
+
log(`Compacting session ${sessionId}`);
|
|
100
|
+
output.context.push(`
|
|
101
|
+
## Session Memory
|
|
102
|
+
|
|
103
|
+
This session's context is being saved to persistent memory.
|
|
104
|
+
Session record location: \`session:${sessionId}\` in agentuity-opencode-memory
|
|
105
|
+
|
|
106
|
+
After compaction, Memory will automatically save this summary for future recovery.
|
|
107
|
+
`);
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=session-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-memory.js","sourceRoot":"","sources":["../../../src/plugin/hooks/session-memory.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACvC,GAAgB,EAChB,OAAoB;IAEpB,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE;QAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAClB,IAAI,EAAE;gBACL,OAAO,EAAE,gBAAgB;gBACzB,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,GAAG;aACZ;SACD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACN;;;WAGG;QACH,KAAK,CAAC,OAAO,CAAC,KAEb;YACA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;YACxB,IAAI,KAAK,EAAE,IAAI,KAAK,mBAAmB;gBAAE,OAAO;YAEhD,MAAM,SAAS,GACb,KAAK,CAAC,UAAU,EAAE,SAAgC;gBAClD,KAAK,CAAC,UAAU,EAAE,SAAgC,CAAC;YAErD,IAAI,CAAC,SAAS;gBAAE,OAAO;YAEvB,GAAG,CAAC,mCAAmC,SAAS,2BAA2B,CAAC,CAAC;YAE7E,IAAI,CAAC;gBACJ,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC/B,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;oBACvB,IAAI,EAAE;wBACL,KAAK,EAAE;4BACN;gCACC,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE;;;;;8GAKgG,SAAS;;4EAE3C,SAAS;gHAC2B,SAAS;;;;;;;;;;4BAU7F,SAAS;;;;;;;;;;;;;;;;4BAgBT,SAAS;;;;;;;;qDAQgB;6BAC7C;yBACD;wBACD,KAAK,EAAE,sBAAsB;qBAC7B;iBACD,CAAC,CAAC;gBAEH,GAAG,CAAC,qCAAqC,SAAS,EAAE,CAAC,CAAC;YACvD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,GAAG,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;YAC9C,CAAC;QACF,CAAC;QAED;;;WAGG;QACH,KAAK,CAAC,YAAY,CACjB,KAA4B,EAC5B,MAA8C;YAE9C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YAClC,GAAG,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;YAEvC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;;;;qCAIc,SAAS;;;CAG7C,CAAC,CAAC;QACD,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PluginInput } from '@opencode-ai/plugin';
|
|
2
|
+
import type { CoderConfig } from '../../types';
|
|
2
3
|
export interface SessionHooks {
|
|
3
4
|
onMessage: (input: unknown, output: unknown) => Promise<void>;
|
|
4
5
|
}
|
|
5
|
-
export declare function createSessionHooks(_ctx:
|
|
6
|
+
export declare function createSessionHooks(_ctx: PluginInput, _config: CoderConfig): SessionHooks;
|
|
6
7
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,YAAY,CAaxF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/plugin/hooks/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/plugin/hooks/session.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,kBAAkB,CAAC,IAAiB,EAAE,OAAoB;IACzE,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9C,OAAO;QACN,KAAK,CAAC,SAAS,CAAC,KAAc,EAAE,OAAgB;YAC/C,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,SAAS;gBAAE,OAAO;YAEvB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;QACzE,OAAQ,KAA+B,CAAC,SAAS,CAAC;IACnD,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PluginInput } from '@opencode-ai/plugin';
|
|
2
|
+
import type { CoderConfig } from '../../types';
|
|
2
3
|
export interface ToolHooks {
|
|
3
4
|
before: (input: unknown, output: unknown) => Promise<void>;
|
|
4
5
|
after: (input: unknown, output: unknown) => Promise<void>;
|
|
5
6
|
}
|
|
6
|
-
export declare function createToolHooks(ctx:
|
|
7
|
+
export declare function createToolHooks(ctx: PluginInput, config: CoderConfig): ToolHooks;
|
|
7
8
|
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,SAAS;IACzB,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AA6BD,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,CA4EhF"}
|
|
@@ -75,8 +75,11 @@ export function createToolHooks(ctx, config) {
|
|
|
75
75
|
const service = detectCloudService(command);
|
|
76
76
|
if (service) {
|
|
77
77
|
try {
|
|
78
|
-
ctx.client.tui
|
|
79
|
-
body: {
|
|
78
|
+
ctx.client.tui.showToast({
|
|
79
|
+
body: {
|
|
80
|
+
message: `${service.emoji} Agentuity ${service.name}`,
|
|
81
|
+
variant: 'info',
|
|
82
|
+
},
|
|
80
83
|
});
|
|
81
84
|
}
|
|
82
85
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/plugin/hooks/tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/plugin/hooks/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin/plugin.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function createCoderPlugin(ctx:
|
|
1
|
+
import type { PluginInput, Hooks } from '@opencode-ai/plugin';
|
|
2
|
+
export declare function createCoderPlugin(ctx: PluginInput): Promise<Hooks>;
|
|
3
3
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAuB9D,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAwExE"}
|
package/dist/plugin/plugin.js
CHANGED
|
@@ -5,6 +5,7 @@ import { createToolHooks } from './hooks/tools';
|
|
|
5
5
|
import { createKeywordHooks } from './hooks/keyword';
|
|
6
6
|
import { createParamsHooks } from './hooks/params';
|
|
7
7
|
import { createCadenceHooks } from './hooks/cadence';
|
|
8
|
+
import { createSessionMemoryHooks } from './hooks/session-memory';
|
|
8
9
|
// Agent display names for @mentions
|
|
9
10
|
const AGENT_MENTIONS = {
|
|
10
11
|
lead: '@Agentuity Coder Lead',
|
|
@@ -29,13 +30,18 @@ export async function createCoderPlugin(ctx) {
|
|
|
29
30
|
const keywordHooks = createKeywordHooks(ctx, coderConfig);
|
|
30
31
|
const paramsHooks = createParamsHooks(ctx, coderConfig);
|
|
31
32
|
const cadenceHooks = createCadenceHooks(ctx, coderConfig);
|
|
33
|
+
// Session memory hooks handle checkpointing and compaction for non-Cadence sessions
|
|
34
|
+
// Orchestration (deciding which module handles which session) happens below in the hooks
|
|
35
|
+
const sessionMemoryHooks = createSessionMemoryHooks(ctx, coderConfig);
|
|
32
36
|
const configHandler = createConfigHandler(coderConfig);
|
|
33
37
|
// Get the tool helper from Open Code context if available
|
|
34
38
|
const toolHelper = ctx.tool;
|
|
35
39
|
const tools = toolHelper ? createTools(toolHelper) : undefined;
|
|
36
40
|
// Show startup toast (fire and forget, don't block)
|
|
37
41
|
try {
|
|
38
|
-
ctx.client.tui
|
|
42
|
+
ctx.client.tui.showToast({
|
|
43
|
+
body: { message: '🚀 Agentuity Coder ready', variant: 'success' },
|
|
44
|
+
});
|
|
39
45
|
}
|
|
40
46
|
catch {
|
|
41
47
|
// Toast may not be available
|
|
@@ -51,8 +57,26 @@ export async function createCoderPlugin(ctx) {
|
|
|
51
57
|
'chat.params': paramsHooks.onParams,
|
|
52
58
|
'tool.execute.before': toolHooks.before,
|
|
53
59
|
'tool.execute.after': toolHooks.after,
|
|
54
|
-
event:
|
|
55
|
-
|
|
60
|
+
event: async (input) => {
|
|
61
|
+
// Orchestrate: route to appropriate module based on session type
|
|
62
|
+
const sessionId = extractSessionIdFromEvent(input);
|
|
63
|
+
if (sessionId && cadenceHooks.isActiveCadenceSession(sessionId)) {
|
|
64
|
+
await cadenceHooks.onEvent(input);
|
|
65
|
+
}
|
|
66
|
+
else if (sessionId) {
|
|
67
|
+
// Non-Cadence sessions - handle session.compacted for checkpointing
|
|
68
|
+
await sessionMemoryHooks.onEvent(input);
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
'experimental.session.compacting': async (input, output) => {
|
|
72
|
+
// Orchestrate: route to appropriate module based on session type
|
|
73
|
+
if (cadenceHooks.isActiveCadenceSession(input.sessionID)) {
|
|
74
|
+
await cadenceHooks.onCompacting(input, output);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
await sessionMemoryHooks.onCompacting(input, output);
|
|
78
|
+
}
|
|
79
|
+
},
|
|
56
80
|
};
|
|
57
81
|
}
|
|
58
82
|
function createConfigHandler(coderConfig) {
|
|
@@ -299,8 +323,22 @@ Use this to:
|
|
|
299
323
|
};
|
|
300
324
|
},
|
|
301
325
|
}));
|
|
326
|
+
// Type assertion needed because the tool() helper returns unknown
|
|
327
|
+
// but the runtime type is correct (it's created by OpenCode's tool helper)
|
|
302
328
|
return {
|
|
303
329
|
coder_delegate: coderDelegate,
|
|
304
330
|
};
|
|
305
331
|
}
|
|
332
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
333
|
+
// Helper Functions
|
|
334
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
335
|
+
function extractSessionIdFromEvent(input) {
|
|
336
|
+
if (typeof input !== 'object' || input === null)
|
|
337
|
+
return undefined;
|
|
338
|
+
const inp = input;
|
|
339
|
+
if (!inp.event?.properties)
|
|
340
|
+
return undefined;
|
|
341
|
+
return (inp.event.properties.sessionId ??
|
|
342
|
+
inp.event.properties.sessionID);
|
|
343
|
+
}
|
|
306
344
|
//# sourceMappingURL=plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin/plugin.ts"],"names":[],"mappings":"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"}
|