@eddacraft/kindling-adapter-opencode 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +192 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/opencode/commands/export.d.ts +67 -0
- package/dist/opencode/commands/export.d.ts.map +1 -0
- package/dist/opencode/commands/export.js +76 -0
- package/dist/opencode/commands/export.js.map +1 -0
- package/dist/opencode/commands/forget.d.ts +50 -0
- package/dist/opencode/commands/forget.d.ts.map +1 -0
- package/dist/opencode/commands/forget.js +63 -0
- package/dist/opencode/commands/forget.js.map +1 -0
- package/dist/opencode/commands/index.d.ts +11 -0
- package/dist/opencode/commands/index.d.ts.map +1 -0
- package/dist/opencode/commands/index.js +11 -0
- package/dist/opencode/commands/index.js.map +1 -0
- package/dist/opencode/commands/pin.d.ts +64 -0
- package/dist/opencode/commands/pin.d.ts.map +1 -0
- package/dist/opencode/commands/pin.js +74 -0
- package/dist/opencode/commands/pin.js.map +1 -0
- package/dist/opencode/commands/search.d.ts +43 -0
- package/dist/opencode/commands/search.d.ts.map +1 -0
- package/dist/opencode/commands/search.js +90 -0
- package/dist/opencode/commands/search.js.map +1 -0
- package/dist/opencode/commands/status.d.ts +65 -0
- package/dist/opencode/commands/status.d.ts.map +1 -0
- package/dist/opencode/commands/status.js +64 -0
- package/dist/opencode/commands/status.js.map +1 -0
- package/dist/opencode/events.d.ts +95 -0
- package/dist/opencode/events.d.ts.map +1 -0
- package/dist/opencode/events.js +19 -0
- package/dist/opencode/events.js.map +1 -0
- package/dist/opencode/filter.d.ts +88 -0
- package/dist/opencode/filter.d.ts.map +1 -0
- package/dist/opencode/filter.js +150 -0
- package/dist/opencode/filter.js.map +1 -0
- package/dist/opencode/index.d.ts +10 -0
- package/dist/opencode/index.d.ts.map +1 -0
- package/dist/opencode/index.js +10 -0
- package/dist/opencode/index.js.map +1 -0
- package/dist/opencode/mapping.d.ts +37 -0
- package/dist/opencode/mapping.d.ts.map +1 -0
- package/dist/opencode/mapping.js +160 -0
- package/dist/opencode/mapping.js.map +1 -0
- package/dist/opencode/provenance.d.ts +27 -0
- package/dist/opencode/provenance.d.ts.map +1 -0
- package/dist/opencode/provenance.js +105 -0
- package/dist/opencode/provenance.js.map +1 -0
- package/dist/opencode/session.d.ts +108 -0
- package/dist/opencode/session.d.ts.map +1 -0
- package/dist/opencode/session.js +194 -0
- package/dist/opencode/session.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCode session lifecycle management
|
|
3
|
+
*
|
|
4
|
+
* Manages the lifecycle of session capsules:
|
|
5
|
+
* - onSessionStart: Opens a new capsule
|
|
6
|
+
* - onEvent: Maps events and attaches observations
|
|
7
|
+
* - onSessionEnd: Closes the capsule
|
|
8
|
+
*/
|
|
9
|
+
import type { Capsule, CapsuleStore, Observation, ID } from '@eddacraft/kindling-core';
|
|
10
|
+
import type { OpenCodeEvent } from './events.js';
|
|
11
|
+
/**
|
|
12
|
+
* Session context tracking active session state
|
|
13
|
+
*/
|
|
14
|
+
export interface SessionContext {
|
|
15
|
+
sessionId: string;
|
|
16
|
+
repoId?: string;
|
|
17
|
+
activeCapsuleId: ID;
|
|
18
|
+
eventCount: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Options for starting a session
|
|
22
|
+
*/
|
|
23
|
+
export interface SessionStartOptions {
|
|
24
|
+
sessionId: string;
|
|
25
|
+
intent?: string;
|
|
26
|
+
repoId?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Signals for ending a session
|
|
30
|
+
*/
|
|
31
|
+
export interface SessionEndSignals {
|
|
32
|
+
reason?: string;
|
|
33
|
+
summaryContent?: string;
|
|
34
|
+
summaryConfidence?: number;
|
|
35
|
+
evidenceRefs?: ID[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Result of processing an event
|
|
39
|
+
*/
|
|
40
|
+
export interface EventProcessingResult {
|
|
41
|
+
observation?: Observation;
|
|
42
|
+
skipped?: boolean;
|
|
43
|
+
error?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* SessionManager manages OpenCode session lifecycles
|
|
47
|
+
*
|
|
48
|
+
* Provides hooks for session start, event processing, and session end.
|
|
49
|
+
* Each session gets its own capsule that collects observations.
|
|
50
|
+
*/
|
|
51
|
+
export declare class SessionManager {
|
|
52
|
+
private store;
|
|
53
|
+
private activeSessions;
|
|
54
|
+
constructor(store: CapsuleStore & {
|
|
55
|
+
insertObservation(observation: Observation): void;
|
|
56
|
+
attachObservationToCapsule(capsuleId: ID, observationId: ID): void;
|
|
57
|
+
});
|
|
58
|
+
/**
|
|
59
|
+
* Start a new session
|
|
60
|
+
*
|
|
61
|
+
* Opens a capsule for the session. If a session already has an open capsule,
|
|
62
|
+
* returns the existing context.
|
|
63
|
+
*
|
|
64
|
+
* @param options - Session start options
|
|
65
|
+
* @returns Session context
|
|
66
|
+
*/
|
|
67
|
+
onSessionStart(options: SessionStartOptions): SessionContext;
|
|
68
|
+
/**
|
|
69
|
+
* Process an event from the session
|
|
70
|
+
*
|
|
71
|
+
* Maps the event to an observation and attaches it to the active capsule.
|
|
72
|
+
*
|
|
73
|
+
* @param event - OpenCode event to process
|
|
74
|
+
* @returns Processing result with observation or skip/error
|
|
75
|
+
*/
|
|
76
|
+
onEvent(event: OpenCodeEvent): EventProcessingResult;
|
|
77
|
+
/**
|
|
78
|
+
* End a session
|
|
79
|
+
*
|
|
80
|
+
* Closes the active capsule for the session.
|
|
81
|
+
*
|
|
82
|
+
* @param sessionId - Session ID to end
|
|
83
|
+
* @param signals - Optional signals for capsule closure
|
|
84
|
+
* @returns Closed capsule
|
|
85
|
+
*/
|
|
86
|
+
onSessionEnd(sessionId: string, signals?: SessionEndSignals): Capsule;
|
|
87
|
+
/**
|
|
88
|
+
* Get active session context
|
|
89
|
+
*
|
|
90
|
+
* @param sessionId - Session ID
|
|
91
|
+
* @returns Session context or undefined
|
|
92
|
+
*/
|
|
93
|
+
getSession(sessionId: string): SessionContext | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* Check if session is active
|
|
96
|
+
*
|
|
97
|
+
* @param sessionId - Session ID
|
|
98
|
+
* @returns True if session has an active capsule
|
|
99
|
+
*/
|
|
100
|
+
isSessionActive(sessionId: string): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Get all active session IDs
|
|
103
|
+
*
|
|
104
|
+
* @returns Array of active session IDs
|
|
105
|
+
*/
|
|
106
|
+
getActiveSessions(): string[];
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/opencode/session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IAIvB,OAAO,CAAC,KAAK;IAHf,OAAO,CAAC,cAAc,CAA0C;gBAGtD,KAAK,EAAE,YAAY,GAAG;QAC5B,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;QAClD,0BAA0B,CAAC,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,GAAG,IAAI,CAAC;KACpE;IAGH;;;;;;;;OAQG;IACH,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,cAAc;IAkD5D;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,qBAAqB;IA+CpD;;;;;;;;OAQG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO;IA6CrE;;;;;OAKG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIzD;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;OAIG;IACH,iBAAiB,IAAI,MAAM,EAAE;CAG9B"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCode session lifecycle management
|
|
3
|
+
*
|
|
4
|
+
* Manages the lifecycle of session capsules:
|
|
5
|
+
* - onSessionStart: Opens a new capsule
|
|
6
|
+
* - onEvent: Maps events and attaches observations
|
|
7
|
+
* - onSessionEnd: Closes the capsule
|
|
8
|
+
*/
|
|
9
|
+
import { randomUUID } from 'crypto';
|
|
10
|
+
import { mapEvent } from './mapping.js';
|
|
11
|
+
/**
|
|
12
|
+
* SessionManager manages OpenCode session lifecycles
|
|
13
|
+
*
|
|
14
|
+
* Provides hooks for session start, event processing, and session end.
|
|
15
|
+
* Each session gets its own capsule that collects observations.
|
|
16
|
+
*/
|
|
17
|
+
export class SessionManager {
|
|
18
|
+
store;
|
|
19
|
+
activeSessions = new Map();
|
|
20
|
+
constructor(store) {
|
|
21
|
+
this.store = store;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Start a new session
|
|
25
|
+
*
|
|
26
|
+
* Opens a capsule for the session. If a session already has an open capsule,
|
|
27
|
+
* returns the existing context.
|
|
28
|
+
*
|
|
29
|
+
* @param options - Session start options
|
|
30
|
+
* @returns Session context
|
|
31
|
+
*/
|
|
32
|
+
onSessionStart(options) {
|
|
33
|
+
const { sessionId, intent = 'OpenCode session', repoId } = options;
|
|
34
|
+
// Check if session already has an open capsule
|
|
35
|
+
const existing = this.activeSessions.get(sessionId);
|
|
36
|
+
if (existing) {
|
|
37
|
+
return existing;
|
|
38
|
+
}
|
|
39
|
+
// Check store for existing open capsule
|
|
40
|
+
const existingCapsule = this.store.getOpenCapsuleForSession(sessionId);
|
|
41
|
+
if (existingCapsule) {
|
|
42
|
+
const context = {
|
|
43
|
+
sessionId,
|
|
44
|
+
repoId,
|
|
45
|
+
activeCapsuleId: existingCapsule.id,
|
|
46
|
+
eventCount: existingCapsule.observationIds.length,
|
|
47
|
+
};
|
|
48
|
+
this.activeSessions.set(sessionId, context);
|
|
49
|
+
return context;
|
|
50
|
+
}
|
|
51
|
+
// Create new capsule
|
|
52
|
+
const capsuleId = randomUUID();
|
|
53
|
+
const capsule = {
|
|
54
|
+
id: capsuleId,
|
|
55
|
+
type: 'session',
|
|
56
|
+
intent,
|
|
57
|
+
status: 'open',
|
|
58
|
+
openedAt: Date.now(),
|
|
59
|
+
scopeIds: {
|
|
60
|
+
sessionId,
|
|
61
|
+
...(repoId && { repoId }),
|
|
62
|
+
},
|
|
63
|
+
observationIds: [],
|
|
64
|
+
};
|
|
65
|
+
this.store.createCapsule(capsule);
|
|
66
|
+
const context = {
|
|
67
|
+
sessionId,
|
|
68
|
+
repoId,
|
|
69
|
+
activeCapsuleId: capsuleId,
|
|
70
|
+
eventCount: 0,
|
|
71
|
+
};
|
|
72
|
+
this.activeSessions.set(sessionId, context);
|
|
73
|
+
return context;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Process an event from the session
|
|
77
|
+
*
|
|
78
|
+
* Maps the event to an observation and attaches it to the active capsule.
|
|
79
|
+
*
|
|
80
|
+
* @param event - OpenCode event to process
|
|
81
|
+
* @returns Processing result with observation or skip/error
|
|
82
|
+
*/
|
|
83
|
+
onEvent(event) {
|
|
84
|
+
// Get active session context
|
|
85
|
+
const context = this.activeSessions.get(event.sessionId);
|
|
86
|
+
if (!context) {
|
|
87
|
+
return {
|
|
88
|
+
error: `No active session found for sessionId: ${event.sessionId}`,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
// Map event to observation
|
|
92
|
+
const mapResult = mapEvent(event);
|
|
93
|
+
// Handle skip (e.g., session_start/session_end events)
|
|
94
|
+
if (mapResult.skip) {
|
|
95
|
+
return { skipped: true };
|
|
96
|
+
}
|
|
97
|
+
// Handle mapping errors
|
|
98
|
+
if (mapResult.error) {
|
|
99
|
+
return { error: mapResult.error };
|
|
100
|
+
}
|
|
101
|
+
if (!mapResult.observation) {
|
|
102
|
+
return { error: 'Mapping produced no observation' };
|
|
103
|
+
}
|
|
104
|
+
// Generate observation ID and timestamp
|
|
105
|
+
const observation = {
|
|
106
|
+
id: randomUUID(),
|
|
107
|
+
ts: event.timestamp,
|
|
108
|
+
redacted: false,
|
|
109
|
+
provenance: {},
|
|
110
|
+
...mapResult.observation,
|
|
111
|
+
};
|
|
112
|
+
// Store observation
|
|
113
|
+
this.store.insertObservation(observation);
|
|
114
|
+
// Attach to capsule
|
|
115
|
+
this.store.attachObservationToCapsule(context.activeCapsuleId, observation.id);
|
|
116
|
+
// Update context
|
|
117
|
+
context.eventCount += 1;
|
|
118
|
+
return { observation };
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* End a session
|
|
122
|
+
*
|
|
123
|
+
* Closes the active capsule for the session.
|
|
124
|
+
*
|
|
125
|
+
* @param sessionId - Session ID to end
|
|
126
|
+
* @param signals - Optional signals for capsule closure
|
|
127
|
+
* @returns Closed capsule
|
|
128
|
+
*/
|
|
129
|
+
onSessionEnd(sessionId, signals) {
|
|
130
|
+
const context = this.activeSessions.get(sessionId);
|
|
131
|
+
if (!context) {
|
|
132
|
+
throw new Error(`No active session found for sessionId: ${sessionId}`);
|
|
133
|
+
}
|
|
134
|
+
const closedAt = Date.now();
|
|
135
|
+
// Close capsule in store
|
|
136
|
+
this.store.closeCapsule(context.activeCapsuleId, closedAt);
|
|
137
|
+
// If summary provided, insert it
|
|
138
|
+
if (signals?.summaryContent) {
|
|
139
|
+
const summary = {
|
|
140
|
+
id: randomUUID(),
|
|
141
|
+
capsuleId: context.activeCapsuleId,
|
|
142
|
+
content: signals.summaryContent,
|
|
143
|
+
confidence: signals.summaryConfidence ?? 0.8,
|
|
144
|
+
createdAt: closedAt,
|
|
145
|
+
evidenceRefs: signals.evidenceRefs ?? [],
|
|
146
|
+
};
|
|
147
|
+
this.store.insertSummary(summary);
|
|
148
|
+
}
|
|
149
|
+
// Remove from active sessions
|
|
150
|
+
this.activeSessions.delete(sessionId);
|
|
151
|
+
// Return closed capsule
|
|
152
|
+
const capsule = {
|
|
153
|
+
id: context.activeCapsuleId,
|
|
154
|
+
type: 'session',
|
|
155
|
+
intent: 'OpenCode session',
|
|
156
|
+
status: 'closed',
|
|
157
|
+
openedAt: 0, // Will be filled from store if needed
|
|
158
|
+
closedAt,
|
|
159
|
+
scopeIds: {
|
|
160
|
+
sessionId,
|
|
161
|
+
...(context.repoId && { repoId: context.repoId }),
|
|
162
|
+
},
|
|
163
|
+
observationIds: [],
|
|
164
|
+
};
|
|
165
|
+
return capsule;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get active session context
|
|
169
|
+
*
|
|
170
|
+
* @param sessionId - Session ID
|
|
171
|
+
* @returns Session context or undefined
|
|
172
|
+
*/
|
|
173
|
+
getSession(sessionId) {
|
|
174
|
+
return this.activeSessions.get(sessionId);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Check if session is active
|
|
178
|
+
*
|
|
179
|
+
* @param sessionId - Session ID
|
|
180
|
+
* @returns True if session has an active capsule
|
|
181
|
+
*/
|
|
182
|
+
isSessionActive(sessionId) {
|
|
183
|
+
return this.activeSessions.has(sessionId);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Get all active session IDs
|
|
187
|
+
*
|
|
188
|
+
* @returns Array of active session IDs
|
|
189
|
+
*/
|
|
190
|
+
getActiveSessions() {
|
|
191
|
+
return Array.from(this.activeSessions.keys());
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/opencode/session.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@eddacraft/kindling-adapter-opencode",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "OpenCode session adapter for Kindling - capture tool calls, commands, and file changes from AI coding sessions",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"keywords": [
|
|
18
|
+
"kindling",
|
|
19
|
+
"opencode",
|
|
20
|
+
"adapter",
|
|
21
|
+
"session",
|
|
22
|
+
"ai",
|
|
23
|
+
"coding",
|
|
24
|
+
"tool-calls",
|
|
25
|
+
"memory"
|
|
26
|
+
],
|
|
27
|
+
"author": "EddaCraft <hello@eddacraft.ai>",
|
|
28
|
+
"homepage": "https://github.com/EddaCraft/kindling/tree/main/packages/kindling-adapter-opencode#readme",
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/EddaCraft/kindling.git",
|
|
32
|
+
"directory": "packages/kindling-adapter-opencode"
|
|
33
|
+
},
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://github.com/EddaCraft/kindling/issues"
|
|
36
|
+
},
|
|
37
|
+
"license": "Apache-2.0",
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@eddacraft/kindling-core": "0.1.0"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/node": "^20.11.0",
|
|
43
|
+
"typescript": "^5.3.0",
|
|
44
|
+
"vitest": "^3.2.4"
|
|
45
|
+
},
|
|
46
|
+
"publishConfig": {
|
|
47
|
+
"access": "public"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "tsc --build",
|
|
51
|
+
"test": "vitest run",
|
|
52
|
+
"test:watch": "vitest",
|
|
53
|
+
"type-check": "tsc --noEmit",
|
|
54
|
+
"lint": "eslint src",
|
|
55
|
+
"clean": "rm -rf dist"
|
|
56
|
+
}
|
|
57
|
+
}
|