@ekroon/opencode-copilot-instructions 0.3.2 → 0.4.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/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -40
- package/dist/index.js.map +1 -1
- package/dist/session-state.d.ts +3 -13
- package/dist/session-state.d.ts.map +1 -1
- package/dist/session-state.js +3 -20
- package/dist/session-state.js.map +1 -1
- package/package.json +6 -6
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAgDjD,eAAO,MAAM,yBAAyB,EAAE,MA4JvC,CAAA;AAGD,eAAe,yBAAyB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import * as path from 'node:path';
|
|
2
2
|
import { loadRepoInstructions, loadPathInstructions } from './loader';
|
|
3
3
|
import { SessionState } from './session-state';
|
|
4
|
-
/**
|
|
5
|
-
* Type guard to check if an event is a session.created event.
|
|
6
|
-
* Narrows the Event union type to EventSessionCreated.
|
|
7
|
-
*/
|
|
8
|
-
function isSessionCreatedEvent(event) {
|
|
9
|
-
return event.type === 'session.created';
|
|
10
|
-
}
|
|
11
4
|
/**
|
|
12
5
|
* Type guard to check if an event is a session.compacted event.
|
|
13
6
|
* Narrows the Event union type to EventSessionCompacted.
|
|
@@ -87,46 +80,24 @@ export const CopilotInstructionsPlugin = async (ctx) => {
|
|
|
87
80
|
event: async ({ event }) => {
|
|
88
81
|
// Log all events for debugging
|
|
89
82
|
log(`Event received: ${event.type}`, 'debug');
|
|
90
|
-
|
|
91
|
-
log(`session.created event received, repoInstructions: ${!!repoInstructions}`);
|
|
92
|
-
log(`Event properties: ${JSON.stringify(event.properties)}`, 'debug');
|
|
93
|
-
if (repoInstructions) {
|
|
94
|
-
const sessionId = event.properties.info.id;
|
|
95
|
-
log(`Extracted sessionId: ${sessionId}`, 'debug');
|
|
96
|
-
if (!state.hasRepoInstructions(sessionId)) {
|
|
97
|
-
state.markRepoInstructionsInjected(sessionId);
|
|
98
|
-
log(`Injecting repo instructions into session ${sessionId}`);
|
|
99
|
-
try {
|
|
100
|
-
await client.session.prompt({
|
|
101
|
-
path: { id: sessionId },
|
|
102
|
-
body: {
|
|
103
|
-
noReply: true,
|
|
104
|
-
parts: [{
|
|
105
|
-
type: 'text',
|
|
106
|
-
text: `## Copilot Custom Instructions\n\n${repoInstructions}`
|
|
107
|
-
}]
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
log(`Successfully injected repo instructions into session ${sessionId}`);
|
|
111
|
-
}
|
|
112
|
-
catch (err) {
|
|
113
|
-
log(`Failed to inject repo instructions: ${err}`);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
// Clear session state on compaction to allow re-injection
|
|
83
|
+
// Clear path-specific injection state on compaction to allow re-injection
|
|
119
84
|
if (isSessionCompactedEvent(event)) {
|
|
120
85
|
const sessionId = event.properties.sessionID;
|
|
121
86
|
log(`session.compacted event received for session ${sessionId}`);
|
|
122
87
|
state.clearSession(sessionId);
|
|
123
|
-
log(`Cleared injection state for session ${sessionId}, instructions will be re-injected on next file access`);
|
|
88
|
+
log(`Cleared path-specific injection state for session ${sessionId}, instructions will be re-injected on next file access`);
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
// Inject repo-wide instructions into the system prompt on every LLM call
|
|
92
|
+
'experimental.chat.system.transform': async (_input, output) => {
|
|
93
|
+
if (repoInstructions) {
|
|
94
|
+
output.system.push(`Instructions from: .github/copilot-instructions.md\n${repoInstructions}`);
|
|
124
95
|
}
|
|
125
96
|
},
|
|
126
97
|
// Preserve repo-wide instructions during compaction
|
|
127
98
|
'experimental.session.compacting': async (_input, output) => {
|
|
128
99
|
if (repoInstructions) {
|
|
129
|
-
output.context.push(
|
|
100
|
+
output.context.push(`Instructions from: .github/copilot-instructions.md\n${repoInstructions}`);
|
|
130
101
|
}
|
|
131
102
|
},
|
|
132
103
|
'tool.execute.before': async (input, output) => {
|
|
@@ -196,9 +167,7 @@ export const CopilotInstructionsPlugin = async (ctx) => {
|
|
|
196
167
|
}
|
|
197
168
|
// Sync injection state with actual markers in message history
|
|
198
169
|
// This enables re-injection after undo operations
|
|
199
|
-
const clearedFiles = [];
|
|
200
170
|
state.syncWithMarkers(presentMarkers);
|
|
201
|
-
// Note: logging of cleared files now handled internally by SessionState
|
|
202
171
|
}
|
|
203
172
|
};
|
|
204
173
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAGjC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAwB,MAAM,UAAU,CAAA;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C;;;GAGG;AACH,SAAS,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/session-state.d.ts
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Encapsulates all session-related state for the Copilot Instructions plugin.
|
|
3
3
|
*
|
|
4
|
-
* Manages
|
|
4
|
+
* Manages two types of state:
|
|
5
5
|
* 1. Path instruction injection tracking (with undo support via marker sync)
|
|
6
|
-
* 2.
|
|
7
|
-
* 3. Pending instructions for tool call lifecycle (ephemeral)
|
|
6
|
+
* 2. Pending instructions for tool call lifecycle (ephemeral)
|
|
8
7
|
*/
|
|
9
8
|
export declare class SessionState {
|
|
10
9
|
private injectedPerSession;
|
|
11
|
-
private repoInstructionsInjected;
|
|
12
10
|
private pendingInstructions;
|
|
13
11
|
/**
|
|
14
12
|
* Check if a file has been injected in a session.
|
|
@@ -36,15 +34,7 @@ export declare class SessionState {
|
|
|
36
34
|
*/
|
|
37
35
|
syncWithMarkers(presentMarkers: Set<string>): void;
|
|
38
36
|
/**
|
|
39
|
-
*
|
|
40
|
-
*/
|
|
41
|
-
hasRepoInstructions(sessionId: string): boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Mark repo instructions as injected for a session.
|
|
44
|
-
*/
|
|
45
|
-
markRepoInstructionsInjected(sessionId: string): void;
|
|
46
|
-
/**
|
|
47
|
-
* Clear all injection state for a session.
|
|
37
|
+
* Clear path-specific injection state for a session.
|
|
48
38
|
* Used when a session is compacted to allow re-injection of instructions.
|
|
49
39
|
* Note: Does not clear pending instructions as they are keyed by callID, not sessionID.
|
|
50
40
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-state.d.ts","sourceRoot":"","sources":["../src/session-state.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"session-state.d.ts","sourceRoot":"","sources":["../src/session-state.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,qBAAa,YAAY;IAGvB,OAAO,CAAC,kBAAkB,CAAiC;IAI3D,OAAO,CAAC,mBAAmB,CAA4B;IAIvD;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAKxD;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IASvD;;;OAGG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKtD;;;OAGG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAKhD;;;;;OAKG;IACH,eAAe,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI;IAWlD;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMrC;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9C;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAOnD"}
|
package/dist/session-state.js
CHANGED
|
@@ -2,17 +2,14 @@ import * as path from 'node:path';
|
|
|
2
2
|
/**
|
|
3
3
|
* Encapsulates all session-related state for the Copilot Instructions plugin.
|
|
4
4
|
*
|
|
5
|
-
* Manages
|
|
5
|
+
* Manages two types of state:
|
|
6
6
|
* 1. Path instruction injection tracking (with undo support via marker sync)
|
|
7
|
-
* 2.
|
|
8
|
-
* 3. Pending instructions for tool call lifecycle (ephemeral)
|
|
7
|
+
* 2. Pending instructions for tool call lifecycle (ephemeral)
|
|
9
8
|
*/
|
|
10
9
|
export class SessionState {
|
|
11
10
|
// Track which instruction files have been injected per session
|
|
12
11
|
// Map<sessionID, Set<instructionFilePath>>
|
|
13
12
|
injectedPerSession = new Map();
|
|
14
|
-
// Track sessions where repo-wide instructions have been injected
|
|
15
|
-
repoInstructionsInjected = new Set();
|
|
16
13
|
// Track pending instructions to inject per tool call (ephemeral)
|
|
17
14
|
// Map<callID, instructionText>
|
|
18
15
|
pendingInstructions = new Map();
|
|
@@ -67,27 +64,13 @@ export class SessionState {
|
|
|
67
64
|
}
|
|
68
65
|
}
|
|
69
66
|
}
|
|
70
|
-
// --- Repo instruction tracking ---
|
|
71
67
|
/**
|
|
72
|
-
*
|
|
73
|
-
*/
|
|
74
|
-
hasRepoInstructions(sessionId) {
|
|
75
|
-
return this.repoInstructionsInjected.has(sessionId);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Mark repo instructions as injected for a session.
|
|
79
|
-
*/
|
|
80
|
-
markRepoInstructionsInjected(sessionId) {
|
|
81
|
-
this.repoInstructionsInjected.add(sessionId);
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Clear all injection state for a session.
|
|
68
|
+
* Clear path-specific injection state for a session.
|
|
85
69
|
* Used when a session is compacted to allow re-injection of instructions.
|
|
86
70
|
* Note: Does not clear pending instructions as they are keyed by callID, not sessionID.
|
|
87
71
|
*/
|
|
88
72
|
clearSession(sessionId) {
|
|
89
73
|
this.injectedPerSession.delete(sessionId);
|
|
90
|
-
this.repoInstructionsInjected.delete(sessionId);
|
|
91
74
|
}
|
|
92
75
|
// --- Pending instructions (tool call lifecycle) ---
|
|
93
76
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-state.js","sourceRoot":"","sources":["../src/session-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC
|
|
1
|
+
{"version":3,"file":"session-state.js","sourceRoot":"","sources":["../src/session-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IACvB,+DAA+D;IAC/D,2CAA2C;IACnC,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAA;IAE3D,iEAAiE;IACjE,+BAA+B;IACvB,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAA;IAEvD,oCAAoC;IAEpC;;OAEG;IACH,cAAc,CAAC,SAAiB,EAAE,IAAY;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC3D,OAAO,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAA;IACzC,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,SAAiB,EAAE,IAAY;QAC9C,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACzD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;YAChC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QACtD,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,SAAiB,EAAE,IAAY;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC3D,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,SAAiB;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC3D,OAAO,IAAI,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAA;IACpC,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,cAA2B;QACzC,KAAK,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAClE,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;gBACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAClC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAC3C,CAAC;IAED,qDAAqD;IAErD;;OAEG;IACH,UAAU,CAAC,MAAc,EAAE,IAAY;QACrC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5C,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,MAAc;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACjD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACzC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ekroon/opencode-copilot-instructions",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
],
|
|
23
23
|
"scripts": {
|
|
24
24
|
"build": "tsc",
|
|
25
|
-
"test": "vitest run --exclude src/e2e.test.ts",
|
|
26
|
-
"test:watch": "vitest --exclude src/e2e.test.ts",
|
|
27
|
-
"test:e2e": "vitest run src/e2e.test.ts",
|
|
28
|
-
"test:e2e:full": "OPENCODE_E2E=true vitest run src/e2e.test.ts",
|
|
29
|
-
"test:all": "vitest run"
|
|
25
|
+
"test": "vitest run --exclude src/e2e.test.ts --exclude '.vendor/**'",
|
|
26
|
+
"test:watch": "vitest --exclude src/e2e.test.ts --exclude '.vendor/**'",
|
|
27
|
+
"test:e2e": "vitest run src/e2e.test.ts --exclude '.vendor/**'",
|
|
28
|
+
"test:e2e:full": "OPENCODE_E2E=true vitest run src/e2e.test.ts --exclude '.vendor/**'",
|
|
29
|
+
"test:all": "vitest run --exclude '.vendor/**'"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"front-matter": "^4.0.2",
|