@s_s/agent-kit 1.0.0 → 1.2.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/README.md +154 -79
- package/build/create-kit.js +6 -3
- package/build/create-kit.js.map +1 -1
- package/build/define-hooks.d.ts +31 -0
- package/build/define-hooks.js +192 -0
- package/build/define-hooks.js.map +1 -0
- package/build/hooks.d.ts +8 -5
- package/build/hooks.js +117 -119
- package/build/hooks.js.map +1 -1
- package/build/index.d.ts +4 -6
- package/build/index.js +6 -5
- package/build/index.js.map +1 -1
- package/build/paths.d.ts +31 -0
- package/build/paths.js +119 -0
- package/build/paths.js.map +1 -0
- package/build/prompt.d.ts +4 -0
- package/build/prompt.js +10 -19
- package/build/prompt.js.map +1 -1
- package/build/types.d.ts +66 -13
- package/build/types.js.map +1 -1
- package/package.json +1 -1
package/build/hooks.js
CHANGED
|
@@ -1,46 +1,27 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import os from 'node:os';
|
|
4
3
|
import { execFile } from 'node:child_process';
|
|
5
4
|
import { promisify } from 'node:util';
|
|
6
|
-
import {
|
|
7
|
-
import { getIntents, getRawHooks, getExtendHooks } from './hook-registry.js';
|
|
8
|
-
import { checkAllDegradation } from './hook-capabilities.js';
|
|
9
|
-
import { ClaudeCodeTranslator } from './hook-translators/claude-code.js';
|
|
10
|
-
import { OpenCodeTranslator } from './hook-translators/opencode.js';
|
|
11
|
-
import { OpenClawTranslator } from './hook-translators/openclaw.js';
|
|
5
|
+
import { resolveAgentPaths } from './paths.js';
|
|
12
6
|
const execFileAsync = promisify(execFile);
|
|
13
7
|
// ---------------------------------------------------------------------------
|
|
14
|
-
//
|
|
15
|
-
// ---------------------------------------------------------------------------
|
|
16
|
-
function getTranslator(agent) {
|
|
17
|
-
switch (agent) {
|
|
18
|
-
case 'claude-code':
|
|
19
|
-
return new ClaudeCodeTranslator('claude-code');
|
|
20
|
-
case 'codex':
|
|
21
|
-
return new ClaudeCodeTranslator('codex');
|
|
22
|
-
case 'opencode':
|
|
23
|
-
return new OpenCodeTranslator();
|
|
24
|
-
case 'openclaw':
|
|
25
|
-
return new OpenClawTranslator();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
// ---------------------------------------------------------------------------
|
|
29
|
-
// installHooks — main entry point
|
|
8
|
+
// installHooks — write hook files to disk
|
|
30
9
|
// ---------------------------------------------------------------------------
|
|
31
10
|
/**
|
|
32
11
|
* Install hooks for the given agent type.
|
|
33
12
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
13
|
+
* Accepts one or more HookSet (from defineHooks()). Filters to only those
|
|
14
|
+
* matching the target agent. Writes content to the agent's hook directory.
|
|
15
|
+
*
|
|
16
|
+
* For Claude Code / Codex: writes shell scripts, merges into settings.json.
|
|
17
|
+
* For OpenCode: writes TypeScript plugin files directly to plugins dir.
|
|
18
|
+
* For OpenClaw: writes HOOK.md + handler.ts, attempts CLI activation.
|
|
37
19
|
*
|
|
38
20
|
* @internal — called by the Kit object returned from createKit().
|
|
39
21
|
*/
|
|
40
|
-
export async function installHooks(name, agent) {
|
|
41
|
-
const
|
|
42
|
-
const
|
|
43
|
-
const hookDir = entry.getHookDir(home, name);
|
|
22
|
+
export async function installHooks(name, agent, hookSets) {
|
|
23
|
+
const paths = resolveAgentPaths(agent, name);
|
|
24
|
+
const hookDir = paths.hookDir;
|
|
44
25
|
const result = {
|
|
45
26
|
success: false,
|
|
46
27
|
hookDir,
|
|
@@ -48,56 +29,41 @@ export async function installHooks(name, agent) {
|
|
|
48
29
|
settingsUpdated: false,
|
|
49
30
|
notes: [],
|
|
50
31
|
warnings: [],
|
|
51
|
-
skipped: [],
|
|
52
32
|
};
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (intents.length === 0 && rawHooks.size === 0 && extendHooks.size === 0) {
|
|
58
|
-
result.error =
|
|
59
|
-
'No hooks registered. Use hooks.inject(), hooks.beforeToolCall(), etc. to declare hook behavior.';
|
|
33
|
+
// Normalize and filter to matching agent
|
|
34
|
+
const sets = (Array.isArray(hookSets) ? hookSets : [hookSets]).filter((s) => s.agent === agent);
|
|
35
|
+
if (sets.length === 0) {
|
|
36
|
+
result.error = `No hook definitions found for agent "${agent}".`;
|
|
60
37
|
return result;
|
|
61
38
|
}
|
|
39
|
+
// Collect all definitions from matching sets
|
|
40
|
+
const allDefs = [];
|
|
41
|
+
for (const set of sets) {
|
|
42
|
+
allDefs.push(...set.definitions);
|
|
43
|
+
}
|
|
62
44
|
try {
|
|
63
|
-
//
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
for (const [key, reg] of rawHooks) {
|
|
77
|
-
if (key.startsWith(`${agent}::`)) {
|
|
78
|
-
agentRawHooks.set(key, reg);
|
|
79
|
-
}
|
|
45
|
+
// Generate files based on agent type
|
|
46
|
+
const files = {};
|
|
47
|
+
switch (agent) {
|
|
48
|
+
case 'claude-code':
|
|
49
|
+
case 'codex':
|
|
50
|
+
generateClaudeCodeFiles(files, allDefs, name);
|
|
51
|
+
break;
|
|
52
|
+
case 'opencode':
|
|
53
|
+
generateOpenCodeFiles(files, allDefs, name);
|
|
54
|
+
break;
|
|
55
|
+
case 'openclaw':
|
|
56
|
+
generateOpenClawFiles(files, allDefs, name);
|
|
57
|
+
break;
|
|
80
58
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
if (key.startsWith(`${agent}::`)) {
|
|
84
|
-
agentExtendHooks.set(key, regs);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
// Step 3: Translate intents → native files
|
|
88
|
-
const translator = getTranslator(agent);
|
|
89
|
-
const translation = translator.translate(intents, agentRawHooks, agentExtendHooks, name);
|
|
90
|
-
// Merge translation warnings and skipped
|
|
91
|
-
result.warnings.push(...translation.warnings);
|
|
92
|
-
result.skipped.push(...translation.skipped);
|
|
93
|
-
// Step 4: Write hook files
|
|
94
|
-
if (Object.keys(translation.files).length === 0) {
|
|
95
|
-
result.notes.push('No hook files generated for this agent.');
|
|
59
|
+
if (Object.keys(files).length === 0) {
|
|
60
|
+
result.notes.push('No hook files generated.');
|
|
96
61
|
result.success = true;
|
|
97
62
|
return result;
|
|
98
63
|
}
|
|
64
|
+
// Write files
|
|
99
65
|
await fs.mkdir(hookDir, { recursive: true });
|
|
100
|
-
for (const [fileName, content] of Object.entries(
|
|
66
|
+
for (const [fileName, content] of Object.entries(files)) {
|
|
101
67
|
const filePath = path.join(hookDir, fileName);
|
|
102
68
|
await fs.writeFile(filePath, content, 'utf-8');
|
|
103
69
|
if (fileName.endsWith('.sh')) {
|
|
@@ -105,16 +71,15 @@ export async function installHooks(name, agent) {
|
|
|
105
71
|
}
|
|
106
72
|
result.filesWritten.push(filePath);
|
|
107
73
|
}
|
|
108
|
-
//
|
|
109
|
-
if (
|
|
110
|
-
const
|
|
111
|
-
const shellFiles = Object.keys(translation.files).filter((f) => f.endsWith('.sh'));
|
|
74
|
+
// Merge settings.json for Claude Code / Codex
|
|
75
|
+
if (paths.settingsFile) {
|
|
76
|
+
const shellFiles = Object.keys(files).filter((f) => f.endsWith('.sh'));
|
|
112
77
|
if (shellFiles.length > 0) {
|
|
113
|
-
await mergeHookSettings(
|
|
78
|
+
await mergeHookSettings(paths.settingsFile, hookDir, shellFiles, allDefs, name);
|
|
114
79
|
result.settingsUpdated = true;
|
|
115
80
|
}
|
|
116
81
|
}
|
|
117
|
-
//
|
|
82
|
+
// OpenClaw post-install: attempt CLI activation
|
|
118
83
|
if (agent === 'openclaw') {
|
|
119
84
|
try {
|
|
120
85
|
await execFileAsync('openclaw', ['hooks', 'enable', name]);
|
|
@@ -143,12 +108,11 @@ export async function installHooks(name, agent) {
|
|
|
143
108
|
* @internal — called by the Kit object returned from createKit().
|
|
144
109
|
*/
|
|
145
110
|
export async function uninstallHooks(name, agent) {
|
|
146
|
-
const
|
|
147
|
-
const
|
|
148
|
-
const hookDir = entry.getHookDir(home, name);
|
|
111
|
+
const paths = resolveAgentPaths(agent, name);
|
|
112
|
+
const hookDir = paths.hookDir;
|
|
149
113
|
const removed = [];
|
|
150
114
|
try {
|
|
151
|
-
// Remove hook directory
|
|
115
|
+
// Remove hook directory contents
|
|
152
116
|
try {
|
|
153
117
|
const files = await fs.readdir(hookDir);
|
|
154
118
|
for (const file of files) {
|
|
@@ -162,9 +126,8 @@ export async function uninstallHooks(name, agent) {
|
|
|
162
126
|
// Directory may not exist — that's fine
|
|
163
127
|
}
|
|
164
128
|
// Clean settings.json for Claude Code / Codex
|
|
165
|
-
if (
|
|
166
|
-
|
|
167
|
-
await cleanHookSettings(settingsPath, name);
|
|
129
|
+
if (paths.settingsFile) {
|
|
130
|
+
await cleanHookSettings(paths.settingsFile, name);
|
|
168
131
|
}
|
|
169
132
|
// Deactivate for OpenClaw
|
|
170
133
|
if (agent === 'openclaw') {
|
|
@@ -190,9 +153,8 @@ export async function uninstallHooks(name, agent) {
|
|
|
190
153
|
* @internal — called by the Kit object returned from createKit().
|
|
191
154
|
*/
|
|
192
155
|
export async function hasHooksInstalled(name, agent) {
|
|
193
|
-
const
|
|
194
|
-
const
|
|
195
|
-
const hookDir = entry.getHookDir(home, name);
|
|
156
|
+
const paths = resolveAgentPaths(agent, name);
|
|
157
|
+
const hookDir = paths.hookDir;
|
|
196
158
|
try {
|
|
197
159
|
const files = await fs.readdir(hookDir);
|
|
198
160
|
return files.length > 0;
|
|
@@ -202,13 +164,69 @@ export async function hasHooksInstalled(name, agent) {
|
|
|
202
164
|
}
|
|
203
165
|
}
|
|
204
166
|
// ---------------------------------------------------------------------------
|
|
167
|
+
// File generators — per agent
|
|
168
|
+
// ---------------------------------------------------------------------------
|
|
169
|
+
/**
|
|
170
|
+
* Claude Code / Codex: each definition × each event → one shell script.
|
|
171
|
+
* Filename: `{toolName}-{event}.sh`
|
|
172
|
+
*/
|
|
173
|
+
function generateClaudeCodeFiles(files, defs, toolName) {
|
|
174
|
+
for (const def of defs) {
|
|
175
|
+
for (const event of def.events) {
|
|
176
|
+
const fileName = `${toolName}-${event}.sh`;
|
|
177
|
+
// If multiple definitions target the same event, later ones win
|
|
178
|
+
files[fileName] = def.content;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* OpenCode: each definition × each event → one TypeScript plugin file.
|
|
184
|
+
* Filename: `{toolName}-{event}-plugin.ts`
|
|
185
|
+
*
|
|
186
|
+
* OpenCode plugins dir is flat (all in ~/.config/opencode/plugins/).
|
|
187
|
+
* Content is written as-is — users provide the full plugin file content.
|
|
188
|
+
*/
|
|
189
|
+
function generateOpenCodeFiles(files, defs, toolName) {
|
|
190
|
+
for (const def of defs) {
|
|
191
|
+
for (const event of def.events) {
|
|
192
|
+
// Sanitize event name for filename (dots → dashes)
|
|
193
|
+
const sanitized = event.replace(/\./g, '-');
|
|
194
|
+
const fileName = `${toolName}-${sanitized}-plugin.ts`;
|
|
195
|
+
files[fileName] = def.content;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* OpenClaw: generates HOOK.md (YAML frontmatter) + handler.ts.
|
|
201
|
+
* Only uses the first definition (OpenClaw = one hook = one HOOK.md + handler.ts).
|
|
202
|
+
*/
|
|
203
|
+
function generateOpenClawFiles(files, defs, toolName) {
|
|
204
|
+
if (defs.length === 0)
|
|
205
|
+
return;
|
|
206
|
+
const def = defs[0]; // Only first definition used
|
|
207
|
+
// Generate HOOK.md
|
|
208
|
+
const description = def.description || `Hook installed by ${toolName}`;
|
|
209
|
+
const eventsYaml = def.events.map((e) => ` - ${e}`).join('\n');
|
|
210
|
+
files['HOOK.md'] = [
|
|
211
|
+
'---',
|
|
212
|
+
`name: ${toolName}`,
|
|
213
|
+
`description: ${description}`,
|
|
214
|
+
'events:',
|
|
215
|
+
eventsYaml,
|
|
216
|
+
'---',
|
|
217
|
+
'',
|
|
218
|
+
].join('\n');
|
|
219
|
+
// handler.ts — user-provided content
|
|
220
|
+
files['handler.ts'] = def.content;
|
|
221
|
+
}
|
|
222
|
+
// ---------------------------------------------------------------------------
|
|
205
223
|
// Settings merge (Claude Code / Codex)
|
|
206
224
|
// ---------------------------------------------------------------------------
|
|
207
225
|
/**
|
|
208
226
|
* Merge hook entries into settings.json for Claude Code / Codex.
|
|
209
|
-
* Maps each shell script to its
|
|
227
|
+
* Maps each shell script filename to its hook event via the definitions.
|
|
210
228
|
*/
|
|
211
|
-
async function mergeHookSettings(settingsPath, hookDir, shellFiles, toolName) {
|
|
229
|
+
async function mergeHookSettings(settingsPath, hookDir, shellFiles, defs, toolName) {
|
|
212
230
|
let settings = {};
|
|
213
231
|
try {
|
|
214
232
|
const raw = await fs.readFile(settingsPath, 'utf-8');
|
|
@@ -221,39 +239,19 @@ async function mergeHookSettings(settingsPath, hookDir, shellFiles, toolName) {
|
|
|
221
239
|
settings.hooks = {};
|
|
222
240
|
}
|
|
223
241
|
const hooks = settings.hooks;
|
|
224
|
-
//
|
|
225
|
-
const fileToEvent =
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
'before-tool': 'PreToolUse',
|
|
231
|
-
'after-tool': 'PostToolUse',
|
|
232
|
-
'on-session-start': 'SessionStart',
|
|
233
|
-
'on-session-end': 'SessionEnd',
|
|
234
|
-
permission: 'PermissionRequest',
|
|
235
|
-
};
|
|
236
|
-
for (const fileName of shellFiles) {
|
|
237
|
-
const activatorPath = path.join(hookDir, fileName);
|
|
238
|
-
// Determine the event from filename
|
|
239
|
-
let event;
|
|
240
|
-
// Check raw hooks first (pattern: toolName-raw-hookname.sh)
|
|
241
|
-
const rawMatch = fileName.match(/^.+-raw-(.+)\.sh$/);
|
|
242
|
-
if (rawMatch) {
|
|
243
|
-
// Raw hooks use the hook name directly (case-insensitive lookup)
|
|
244
|
-
event = rawMatch[1].charAt(0).toUpperCase() + rawMatch[1].slice(1);
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
// Intent-generated hooks use filename conventions
|
|
248
|
-
for (const [pattern, hookEvent] of Object.entries(fileToEvent)) {
|
|
249
|
-
if (fileName.includes(pattern)) {
|
|
250
|
-
event = hookEvent;
|
|
251
|
-
break;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
242
|
+
// Build filename → event map from definitions
|
|
243
|
+
const fileToEvent = new Map();
|
|
244
|
+
for (const def of defs) {
|
|
245
|
+
for (const event of def.events) {
|
|
246
|
+
const fileName = `${toolName}-${event}.sh`;
|
|
247
|
+
fileToEvent.set(fileName, event);
|
|
254
248
|
}
|
|
249
|
+
}
|
|
250
|
+
for (const fileName of shellFiles) {
|
|
251
|
+
const event = fileToEvent.get(fileName);
|
|
255
252
|
if (!event)
|
|
256
253
|
continue;
|
|
254
|
+
const activatorPath = path.join(hookDir, fileName);
|
|
257
255
|
const hookEntry = {
|
|
258
256
|
matcher: '',
|
|
259
257
|
hooks: [{ type: 'command', command: activatorPath }],
|
package/build/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGpE,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,aAAa,CAAC,KAAgB;IACnC,QAAQ,KAAK,EAAE,CAAC;QACZ,KAAK,aAAa;YACd,OAAO,IAAI,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACnD,KAAK,OAAO;YACR,OAAO,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC7C,KAAK,UAAU;YACX,OAAO,IAAI,kBAAkB,EAAE,CAAC;QACpC,KAAK,UAAU;YACX,OAAO,IAAI,kBAAkB,EAAE,CAAC;IACxC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,KAAgB;IAC7D,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAsB;QAC9B,OAAO,EAAE,KAAK;QACd,OAAO;QACP,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;KACd,CAAC;IAEF,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,uCAAuC;IACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,CAAC,KAAK;YACR,iGAAiG,CAAC;QACtG,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACD,iCAAiC;QACjC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAiB,CAAC;QAC7E,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC7D,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;gBAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;iBAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QAED,iDAAiD;QACjD,MAAM,aAAa,GAAG,IAAI,GAAG,EAA+B,CAAC;QAC7D,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC/B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAChC,CAAC;QACL,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAuE,CAAC;QACxG,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC/B,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QAED,2CAA2C;QAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAEzF,yCAAyC;QACzC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAE5C,2BAA2B;QAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YAC7D,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7C,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAE/C,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;YAED,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAED,4EAA4E;QAC5E,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAEnF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,iBAAiB,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;gBACjE,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;YAClC,CAAC;QACL,CAAC;QAED,sCAAsC;QACtC,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC;gBACD,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC3D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,IAAI,KAAK,CAAC,CAAC;YAC/E,CAAC;YAAC,MAAM,CAAC;gBACL,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,0BAA0B,CAAC,CAAC;YACrF,CAAC;QACL,CAAC;QAED,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,IAAY,EACZ,KAAgB;IAEhB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC;QACD,wBAAwB;QACxB,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC1C,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;YACD,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACL,wCAAwC;QAC5C,CAAC;QAED,8CAA8C;QAC9C,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QAED,0BAA0B;QAC1B,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC;gBACD,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;YAChE,CAAC;YAAC,MAAM,CAAC;gBACL,cAAc;YAClB,CAAC;QACL,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IAChG,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,KAAgB;IAClE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE7C,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E;;;GAGG;AACH,KAAK,UAAU,iBAAiB,CAC5B,YAAoB,EACpB,OAAe,EACf,UAAoB,EACpB,QAAgB;IAEhB,IAAI,QAAQ,GAA4B,EAAE,CAAC;IAC3C,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACrD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACL,cAAc;IAClB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxD,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;IACxB,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAkC,CAAC;IAE1D,8CAA8C;IAC9C,MAAM,WAAW,GAA2B;QACxC,MAAM,EAAE,kBAAkB;QAC1B,eAAe,EAAE,cAAc;QAC/B,aAAa,EAAE,YAAY;QAC3B,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE,YAAY;QAC3B,YAAY,EAAE,aAAa;QAC3B,kBAAkB,EAAE,cAAc;QAClC,gBAAgB,EAAE,YAAY;QAC9B,UAAU,EAAE,mBAAmB;KAClC,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEnD,oCAAoC;QACpC,IAAI,KAAyB,CAAC;QAE9B,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACrD,IAAI,QAAQ,EAAE,CAAC;YACX,iEAAiE;YACjE,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACJ,kDAAkD;YAClD,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7D,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7B,KAAK,GAAG,SAAS,CAAC;oBAClB,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,SAAS,GAAG;YACd,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;SACvD,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACtB,CAAC;QAED,wCAAwC;QACxC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YACzC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACrD,MAAM,CAAC,GAAG,KAAgC,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACzC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE;gBAChC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBAC9C,MAAM,IAAI,GAAG,CAA4B,CAAC;gBAC1C,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACxF,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,YAAoB,EAAE,QAAgB;IACnE,IAAI,QAAiC,CAAC;IACtC,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACrD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,4BAA4B;IACxC,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO;IAElE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAkC,CAAC;IAC1D,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,SAAS;QAEtC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACrD,MAAM,CAAC,GAAG,KAAgC,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACzC,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE;gBAC5C,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBAC9C,MAAM,IAAI,GAAG,CAA4B,CAAC;gBAC1C,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,WAAW,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACrC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;YACxB,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,4BAA4B;QAC5B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;IAED,4BAA4B;IAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IACxF,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
export { createKit } from './create-kit.js';
|
|
2
|
-
export
|
|
2
|
+
export { resolveConfigPath } from './prompt.js';
|
|
3
|
+
export { defineHooks, getValidEvents } from './define-hooks.js';
|
|
4
|
+
export type { AgentType, StorageScope, ScopeOptions, KitOptions, Kit, HookInstallResult, HookDefinition, HookSet, ClaudeCodeEvent, OpenCodeEvent, OpenClawPluginEvent, OpenClawInternalEvent, OpenClawEvent, AgentEventMap, AgentPaths, } from './types.js';
|
|
3
5
|
export { AGENT_TYPES, CLIENT_NAME_MAP } from './types.js';
|
|
4
|
-
export
|
|
5
|
-
export type { SupportLevel, CapabilityEntry, DegradationWarning } from './hook-capabilities.js';
|
|
6
|
-
export { CAPABILITY_MATRIX, checkDegradation, checkAllDegradation, isIntentFullyUnsupported, } from './hook-capabilities.js';
|
|
7
|
-
export { detectProjectRoot } from './platform.js';
|
|
6
|
+
export { detectProjectRoot } from './paths.js';
|
|
8
7
|
export { detectAgent, detectAgentFromClient } from './detect.js';
|
|
9
|
-
export { hooks } from './hook-registry.js';
|
package/build/index.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
// Core factory
|
|
2
2
|
export { createKit } from './create-kit.js';
|
|
3
|
+
// Prompt utilities
|
|
4
|
+
export { resolveConfigPath } from './prompt.js';
|
|
5
|
+
// Hook definition
|
|
6
|
+
export { defineHooks, getValidEvents } from './define-hooks.js';
|
|
3
7
|
export { AGENT_TYPES, CLIENT_NAME_MAP } from './types.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export { detectProjectRoot } from './platform.js';
|
|
8
|
+
// Paths (only detectProjectRoot is standalone; getDataDir & resolvePaths are on Kit)
|
|
9
|
+
export { detectProjectRoot } from './paths.js';
|
|
7
10
|
// Detection
|
|
8
11
|
export { detectAgent, detectAgentFromClient } from './detect.js';
|
|
9
|
-
// Hooks — declaration API (global, not bound to kit instance)
|
|
10
|
-
export { hooks } from './hook-registry.js';
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,mBAAmB;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAoBhE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE1D,qFAAqF;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
package/build/paths.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { AgentType, AgentPaths, ResolvedKitConfig, ScopeOptions } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Get platform-appropriate data directory path.
|
|
4
|
+
*
|
|
5
|
+
* - global: follows platform conventions (macOS ~/Library/Application Support, Linux XDG, Windows APPDATA)
|
|
6
|
+
* - project: `<projectRoot>/.<name>` (or custom dir name)
|
|
7
|
+
*
|
|
8
|
+
* @internal — called by the Kit object returned from createKit().
|
|
9
|
+
*/
|
|
10
|
+
export declare function getDataDir(config: ResolvedKitConfig, options?: ScopeOptions): string;
|
|
11
|
+
/**
|
|
12
|
+
* Detect project root directory.
|
|
13
|
+
*
|
|
14
|
+
* Resolution order: git root > project marker files (.git, package.json, etc.) > cwd fallback.
|
|
15
|
+
* This is an independent function — does not require createKit().
|
|
16
|
+
*/
|
|
17
|
+
export declare function detectProjectRoot(cwd?: string): Promise<string>;
|
|
18
|
+
/**
|
|
19
|
+
* Resolve all relevant paths for an agent at a given scope.
|
|
20
|
+
*
|
|
21
|
+
* Central path resolution for agent config files, hook directories, and
|
|
22
|
+
* settings files. All other modules should use this function instead of
|
|
23
|
+
* reading from AGENT_REGISTRY directly.
|
|
24
|
+
*
|
|
25
|
+
* @param agent - Target agent type.
|
|
26
|
+
* @param toolName - Tool/kit name. When provided, hookDir is included in the result.
|
|
27
|
+
* @param options - Scope options (global/project).
|
|
28
|
+
*
|
|
29
|
+
* @internal — used by prompt.ts, hooks.ts, and create-kit.ts.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveAgentPaths(agent: AgentType, toolName?: string, options?: ScopeOptions): AgentPaths;
|
package/build/paths.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import fs from 'node:fs/promises';
|
|
4
|
+
import { execFile } from 'node:child_process';
|
|
5
|
+
import { promisify } from 'node:util';
|
|
6
|
+
import { AGENT_REGISTRY } from './types.js';
|
|
7
|
+
const execFileAsync = promisify(execFile);
|
|
8
|
+
const PROJECT_ROOT_MARKERS = ['.git', 'package.json', 'pyproject.toml', 'Cargo.toml', 'go.mod'];
|
|
9
|
+
/**
|
|
10
|
+
* Get platform-appropriate data directory path.
|
|
11
|
+
*
|
|
12
|
+
* - global: follows platform conventions (macOS ~/Library/Application Support, Linux XDG, Windows APPDATA)
|
|
13
|
+
* - project: `<projectRoot>/.<name>` (or custom dir name)
|
|
14
|
+
*
|
|
15
|
+
* @internal — called by the Kit object returned from createKit().
|
|
16
|
+
*/
|
|
17
|
+
export function getDataDir(config, options) {
|
|
18
|
+
const scope = options?.scope ?? 'global';
|
|
19
|
+
if (scope === 'project') {
|
|
20
|
+
if (!options?.projectRoot) {
|
|
21
|
+
throw new Error('getDataDir: projectRoot is required when scope is "project".');
|
|
22
|
+
}
|
|
23
|
+
const dirName = config.dirs?.project ?? `.${config.name}`;
|
|
24
|
+
return path.join(options.projectRoot, dirName);
|
|
25
|
+
}
|
|
26
|
+
// Global scope
|
|
27
|
+
const envVar = config.envOverride ?? `${config.name.toUpperCase().replace(/-/g, '_')}_DATA_DIR`;
|
|
28
|
+
const envDir = process.env[envVar];
|
|
29
|
+
if (envDir)
|
|
30
|
+
return envDir;
|
|
31
|
+
const dirName = config.dirs?.global ?? config.name;
|
|
32
|
+
const home = os.homedir();
|
|
33
|
+
const platform = process.platform;
|
|
34
|
+
switch (platform) {
|
|
35
|
+
case 'darwin':
|
|
36
|
+
return path.join(home, 'Library', 'Application Support', dirName);
|
|
37
|
+
case 'win32':
|
|
38
|
+
return path.join(process.env.APPDATA || path.join(home, 'AppData', 'Roaming'), dirName);
|
|
39
|
+
default:
|
|
40
|
+
return path.join(process.env.XDG_DATA_HOME || path.join(home, '.local', 'share'), dirName);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Detect project root directory.
|
|
45
|
+
*
|
|
46
|
+
* Resolution order: git root > project marker files (.git, package.json, etc.) > cwd fallback.
|
|
47
|
+
* This is an independent function — does not require createKit().
|
|
48
|
+
*/
|
|
49
|
+
export async function detectProjectRoot(cwd) {
|
|
50
|
+
const startDir = cwd ?? process.cwd();
|
|
51
|
+
// Try git root first
|
|
52
|
+
try {
|
|
53
|
+
const { stdout } = await execFileAsync('git', ['rev-parse', '--show-toplevel'], { cwd: startDir });
|
|
54
|
+
const gitRoot = stdout.trim();
|
|
55
|
+
if (gitRoot)
|
|
56
|
+
return gitRoot;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Not a git repo or git not available
|
|
60
|
+
}
|
|
61
|
+
// Walk up looking for project markers
|
|
62
|
+
let current = path.resolve(startDir);
|
|
63
|
+
while (true) {
|
|
64
|
+
for (const marker of PROJECT_ROOT_MARKERS) {
|
|
65
|
+
try {
|
|
66
|
+
await fs.access(path.join(current, marker));
|
|
67
|
+
return current;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const parent = path.dirname(current);
|
|
74
|
+
if (parent === current)
|
|
75
|
+
break;
|
|
76
|
+
current = parent;
|
|
77
|
+
}
|
|
78
|
+
return path.resolve(startDir);
|
|
79
|
+
}
|
|
80
|
+
// ---------------------------------------------------------------------------
|
|
81
|
+
// Agent path resolution
|
|
82
|
+
// ---------------------------------------------------------------------------
|
|
83
|
+
/**
|
|
84
|
+
* Resolve all relevant paths for an agent at a given scope.
|
|
85
|
+
*
|
|
86
|
+
* Central path resolution for agent config files, hook directories, and
|
|
87
|
+
* settings files. All other modules should use this function instead of
|
|
88
|
+
* reading from AGENT_REGISTRY directly.
|
|
89
|
+
*
|
|
90
|
+
* @param agent - Target agent type.
|
|
91
|
+
* @param toolName - Tool/kit name. When provided, hookDir is included in the result.
|
|
92
|
+
* @param options - Scope options (global/project).
|
|
93
|
+
*
|
|
94
|
+
* @internal — used by prompt.ts, hooks.ts, and create-kit.ts.
|
|
95
|
+
*/
|
|
96
|
+
export function resolveAgentPaths(agent, toolName, options) {
|
|
97
|
+
const entry = AGENT_REGISTRY[agent];
|
|
98
|
+
const scope = options?.scope ?? 'global';
|
|
99
|
+
const home = os.homedir();
|
|
100
|
+
let configFile;
|
|
101
|
+
if (scope === 'project') {
|
|
102
|
+
if (!options?.projectRoot) {
|
|
103
|
+
throw new Error('resolveAgentPaths: projectRoot is required when scope is "project".');
|
|
104
|
+
}
|
|
105
|
+
configFile = entry.projectConfigPath(options.projectRoot);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
configFile = entry.globalConfigPath(home);
|
|
109
|
+
}
|
|
110
|
+
const result = { configFile };
|
|
111
|
+
if (toolName) {
|
|
112
|
+
result.hookDir = entry.getHookDir(home, toolName);
|
|
113
|
+
}
|
|
114
|
+
if (entry.getSettingsPath) {
|
|
115
|
+
result.settingsFile = entry.getSettingsPath(home);
|
|
116
|
+
}
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
|
package/build/prompt.d.ts
CHANGED
|
@@ -19,3 +19,7 @@ export declare function hasPromptInjected(name: string, agent: AgentType, option
|
|
|
19
19
|
* @internal — exported for testing.
|
|
20
20
|
*/
|
|
21
21
|
export declare function applyPromptInjection(existingContent: string, name: string, promptContent: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Resolve the target config file path for an agent + scope.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveConfigPath(agent: AgentType, options?: ScopeOptions): string;
|
package/build/prompt.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
|
-
import os from 'node:os';
|
|
3
2
|
import path from 'node:path';
|
|
4
|
-
import {
|
|
3
|
+
import { resolveAgentPaths } from './paths.js';
|
|
5
4
|
/**
|
|
6
5
|
* Inject or update prompt into the agent's config file.
|
|
7
6
|
*
|
|
@@ -11,19 +10,19 @@ import { AGENT_REGISTRY } from './types.js';
|
|
|
11
10
|
* @internal — called by the Kit object returned from createKit().
|
|
12
11
|
*/
|
|
13
12
|
export async function injectPrompt(name, prompt, agent, options) {
|
|
14
|
-
const
|
|
13
|
+
const { configFile } = resolveAgentPaths(agent, undefined, options);
|
|
15
14
|
// Read existing content
|
|
16
15
|
let existingContent = '';
|
|
17
16
|
try {
|
|
18
|
-
existingContent = await fs.readFile(
|
|
17
|
+
existingContent = await fs.readFile(configFile, 'utf-8');
|
|
19
18
|
}
|
|
20
19
|
catch {
|
|
21
20
|
// File doesn't exist yet
|
|
22
21
|
}
|
|
23
22
|
const updated = applyPromptInjection(existingContent, name, prompt);
|
|
24
23
|
// Ensure parent directory exists
|
|
25
|
-
await fs.mkdir(path.dirname(
|
|
26
|
-
await fs.writeFile(
|
|
24
|
+
await fs.mkdir(path.dirname(configFile), { recursive: true });
|
|
25
|
+
await fs.writeFile(configFile, updated, 'utf-8');
|
|
27
26
|
}
|
|
28
27
|
/**
|
|
29
28
|
* Check if prompt has already been injected into the agent's config file.
|
|
@@ -31,9 +30,9 @@ export async function injectPrompt(name, prompt, agent, options) {
|
|
|
31
30
|
* @internal — called by the Kit object returned from createKit().
|
|
32
31
|
*/
|
|
33
32
|
export async function hasPromptInjected(name, agent, options) {
|
|
34
|
-
const
|
|
33
|
+
const { configFile } = resolveAgentPaths(agent, undefined, options);
|
|
35
34
|
try {
|
|
36
|
-
const content = await fs.readFile(
|
|
35
|
+
const content = await fs.readFile(configFile, 'utf-8');
|
|
37
36
|
return content.includes(markerStart(name));
|
|
38
37
|
}
|
|
39
38
|
catch {
|
|
@@ -72,16 +71,8 @@ export function applyPromptInjection(existingContent, name, promptContent) {
|
|
|
72
71
|
/**
|
|
73
72
|
* Resolve the target config file path for an agent + scope.
|
|
74
73
|
*/
|
|
75
|
-
function resolveConfigPath(agent, options) {
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
const home = os.homedir();
|
|
79
|
-
if (scope === 'project') {
|
|
80
|
-
if (!options?.projectRoot) {
|
|
81
|
-
throw new Error('injectPrompt: projectRoot is required when scope is "project".');
|
|
82
|
-
}
|
|
83
|
-
return entry.projectConfigPath(options.projectRoot);
|
|
84
|
-
}
|
|
85
|
-
return entry.globalConfigPath(home);
|
|
74
|
+
export function resolveConfigPath(agent, options) {
|
|
75
|
+
const { configFile } = resolveAgentPaths(agent, undefined, options);
|
|
76
|
+
return configFile;
|
|
86
77
|
}
|
|
87
78
|
//# sourceMappingURL=prompt.js.map
|