@skillstate/claude 2.0.7 → 2.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/dist/claude-adapter.d.ts +22 -11
- package/dist/claude-adapter.d.ts.map +1 -1
- package/dist/claude-adapter.js +102 -314
- package/dist/claude-adapter.js.map +1 -1
- package/package.json +1 -1
package/dist/claude-adapter.d.ts
CHANGED
|
@@ -95,8 +95,8 @@ export declare class ClaudeAdapter implements PlatformAdapter {
|
|
|
95
95
|
* Generate a SKILL.md for Claude Code's skill directory
|
|
96
96
|
* (`~/.claude/skills/<name>/SKILL.md`). The body instructs the agent to
|
|
97
97
|
* treat the hook-injected state as authoritative (history is not
|
|
98
|
-
* reliable), to
|
|
99
|
-
* to persist via `state.patch` — the PostToolUse hook also merges any
|
|
98
|
+
* reliable), to orient via `state.summary` (full dump via `state.get`),
|
|
99
|
+
* and to persist via `state.patch` — the PostToolUse hook also merges any
|
|
100
100
|
* fenced ```json `state_patch` block printed by a Bash tool call.
|
|
101
101
|
*/
|
|
102
102
|
generateSkillMd(spec: ProceduralSpec, statePath?: string): string;
|
|
@@ -107,33 +107,44 @@ export declare class ClaudeAdapter implements PlatformAdapter {
|
|
|
107
107
|
* skillstate command is already wired, the ORIGINAL text is returned
|
|
108
108
|
* byte-unchanged. Malformed/empty input starts from a fresh hooks-only
|
|
109
109
|
* document (the CLI guards a live settings.json before calling).
|
|
110
|
+
*
|
|
111
|
+
* The mechanics live in the shared {@link mergeHookGroups}; this method
|
|
112
|
+
* supplies only the format specifics (generated settings.json groups and
|
|
113
|
+
* the `node <script> <event>` skillstate commands).
|
|
110
114
|
*/
|
|
111
115
|
mergeHooksConfig(existingJson: string, options?: ClaudeHooksConfigOptions): string;
|
|
112
116
|
/**
|
|
113
|
-
* Generate a hook script and persist it via
|
|
114
|
-
* is the script destination (usually
|
|
117
|
+
* Generate a hook script and persist it via the shared `saveGenerated`
|
|
118
|
+
* (atomic temp-rename write). `target` is the script destination (usually
|
|
115
119
|
* {@link ClaudeAdapter.claudeHookScriptPath}); `statePath` is forwarded
|
|
116
120
|
* to {@link generateHookScript}. Returns the absolute destination path.
|
|
117
121
|
*/
|
|
118
122
|
saveHookScript(event: ClaudeHookEvent, target: string | StatePathRef, statePath?: string | StatePathRef): Promise<string>;
|
|
119
123
|
/**
|
|
120
|
-
* Generate the hooks config document and persist it via
|
|
121
|
-
* `
|
|
124
|
+
* Generate the hooks config document and persist it via the shared
|
|
125
|
+
* `saveGenerated`. Both the destination and the embedded state path
|
|
122
126
|
* accept raw strings or `{ root, name }` refs confined by
|
|
123
127
|
* `resolveStatePath`. Returns the absolute destination path.
|
|
124
128
|
*/
|
|
125
129
|
saveHooksConfig(target: string | StatePathRef, statePath?: string | StatePathRef, options?: ClaudeHooksConfigOptions): Promise<string>;
|
|
126
130
|
/**
|
|
127
|
-
* Generate a SKILL.md and persist it via `
|
|
128
|
-
* absolute destination path.
|
|
131
|
+
* Generate a SKILL.md and persist it via the shared `saveGenerated`.
|
|
132
|
+
* Returns the absolute destination path.
|
|
129
133
|
*/
|
|
130
134
|
saveSkillMd(target: string | StatePathRef, spec: ProceduralSpec, statePath?: string): Promise<string>;
|
|
131
135
|
generateAppendPrompt(): string;
|
|
132
|
-
/**
|
|
133
|
-
|
|
136
|
+
/**
|
|
137
|
+
* Inject-script template (`UserPromptSubmit` / `SessionStart`): brand
|
|
138
|
+
* header + the shared hook-runtime snippet ({@link hookRuntimeSnippet}
|
|
139
|
+
* inlined via `fn.toString()`) + a stdin loop that emits
|
|
140
|
+
* `{ hookSpecificOutput: { hookEventName, additionalContext } }` with the
|
|
141
|
+
* current state JSON read from the SESSION cwd. Brand specifics stay in
|
|
142
|
+
* the adapter (comment lines only); the `contextSuffix` is the shared
|
|
143
|
+
* {@link HISTORY_UNRELIABLE_NOTE} from `@skillstate/core`.
|
|
144
|
+
*/
|
|
145
|
+
private buildInjectScriptTemplate;
|
|
134
146
|
/** PostToolUse script: extract state_patch, ⊕ merge, persist. */
|
|
135
147
|
private buildPostToolUseScript;
|
|
136
|
-
private describeSchema;
|
|
137
148
|
}
|
|
138
149
|
/**
|
|
139
150
|
* Surgically remove every skillstate hook handler from an existing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-adapter.d.ts","sourceRoot":"","sources":["../src/claude-adapter.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,WAAW,EACX,eAAe,EAChB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-adapter.d.ts","sourceRoot":"","sources":["../src/claude-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/claude-adapter.js
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
*/
|
|
39
39
|
import * as path from 'node:path';
|
|
40
40
|
import { PromptTransformer } from '@skillstate/core';
|
|
41
|
-
import {
|
|
41
|
+
import { describeSchema, HISTORY_UNRELIABLE_NOTE, hookRuntimeSnippet, isPlainObject, mergeHookGroups, resolveTarget, saveGenerated, skillMdBody, STATE_PATCH_CONTRACT, } from '@skillstate/core';
|
|
42
42
|
export { resolveHostStateForCwd as resolveStateForCwd } from '@skillstate/core';
|
|
43
43
|
/** All {@link ClaudeHookEvent} values in generation order. */
|
|
44
44
|
export const CLAUDE_HOOK_EVENTS = [
|
|
@@ -55,10 +55,6 @@ export const CLAUDE_POST_TOOL_USE_MATCHER = '^Bash$';
|
|
|
55
55
|
* UserPromptSubmit default, spelled out so the budget is explicit.
|
|
56
56
|
*/
|
|
57
57
|
export const CLAUDE_HOOK_TIMEOUT_SECONDS = 30;
|
|
58
|
-
/** Narrow record check for settings.json documents (module scope). */
|
|
59
|
-
function isPlainObjectDoc(value) {
|
|
60
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
61
|
-
}
|
|
62
58
|
/**
|
|
63
59
|
* Claude Code platform adapter (@non-paper; see module doc for the 2.1.260
|
|
64
60
|
* hooks contract and the honest O(T) limitation).
|
|
@@ -68,7 +64,7 @@ export class ClaudeAdapter {
|
|
|
68
64
|
transformer = new PromptTransformer({ platform: 'claude' });
|
|
69
65
|
injectState(state, spec) {
|
|
70
66
|
const stateJson = JSON.stringify(state);
|
|
71
|
-
const schemaDesc =
|
|
67
|
+
const schemaDesc = describeSchema(spec.schema);
|
|
72
68
|
return `# System
|
|
73
69
|
|
|
74
70
|
You are ${spec.name}. ${spec.instructions}
|
|
@@ -85,17 +81,7 @@ ${stateJson}
|
|
|
85
81
|
|
|
86
82
|
Based on your current state, provide your response with:
|
|
87
83
|
|
|
88
|
-
|
|
89
|
-
2. A JSON block containing both your State Patch and your Action. The JSON block MUST have exactly these two keys:
|
|
90
|
-
|
|
91
|
-
\`\`\`json
|
|
92
|
-
{
|
|
93
|
-
"state_patch": { "key": "new_value", "obsolete_key": null },
|
|
94
|
-
"action": "your_action_here"
|
|
95
|
-
}
|
|
96
|
-
\`\`\`
|
|
97
|
-
|
|
98
|
-
In \`state_patch\`, set keys to null to delete them. Only include fields you want to change. Omit fields to leave them unchanged.`;
|
|
84
|
+
${STATE_PATCH_CONTRACT}`;
|
|
99
85
|
}
|
|
100
86
|
extractPatch(response) {
|
|
101
87
|
return this.transformer.extractStatePatch(response);
|
|
@@ -139,7 +125,7 @@ In \`state_patch\`, set keys to null to delete them. Only include fields you wan
|
|
|
139
125
|
*/
|
|
140
126
|
generateHooksConfig(statePath, options) {
|
|
141
127
|
const scriptDir = options?.scriptDir ??
|
|
142
|
-
(statePath === undefined ? '<stateDir>/hooks' : path.dirname(
|
|
128
|
+
(statePath === undefined ? '<stateDir>/hooks' : path.dirname(resolveTarget(statePath)));
|
|
143
129
|
const command = (event) => options?.command ?? `node ${JSON.stringify(this.claudeHookScriptPath(scriptDir, event))} ${event}`;
|
|
144
130
|
const timeout = options?.timeoutSeconds ?? CLAUDE_HOOK_TIMEOUT_SECONDS;
|
|
145
131
|
const entry = (event) => ({
|
|
@@ -194,139 +180,35 @@ In \`state_patch\`, set keys to null to delete them. Only include fields you wan
|
|
|
194
180
|
* cwd-resolving and never bakes an absolute state path in.
|
|
195
181
|
*/
|
|
196
182
|
generateHookScript(event, statePath) {
|
|
197
|
-
const resolved = statePath === undefined ? undefined :
|
|
183
|
+
const resolved = statePath === undefined ? undefined : resolveTarget(statePath);
|
|
198
184
|
const header = `// State file (per-project resolver): ${resolved ?? '<cwd>/.skillstate/skillstate.json (global bucket when cwd === home)'}`;
|
|
199
185
|
if (event === 'post-tool-use') {
|
|
200
186
|
return this.buildPostToolUseScript(header);
|
|
201
187
|
}
|
|
202
188
|
const hookEventName = event === 'session-start-compact' ? 'SessionStart' : 'UserPromptSubmit';
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
'// Self-contained CommonJS: reads one hook JSON document on stdin,',
|
|
207
|
-
'// resolves the state from the SESSION cwd, and emits',
|
|
208
|
-
'// { hookSpecificOutput: { hookEventName, additionalContext } }.',
|
|
189
|
+
// A1 text is shared: both hosts append the SAME HISTORY_UNRELIABLE_NOTE
|
|
190
|
+
// (MCP tools + fenced state_patch channel) after the state JSON.
|
|
191
|
+
return this.buildInjectScriptTemplate({
|
|
209
192
|
header,
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
'const path = require("path");',
|
|
214
|
-
'',
|
|
215
|
-
`const HOOK_EVENT_NAME = ${JSON.stringify(hookEventName)};`,
|
|
216
|
-
'',
|
|
217
|
-
'function resolveStatePathForCwd(cwd) {',
|
|
218
|
-
' const resolvedCwd = path.resolve(cwd);',
|
|
219
|
-
' const resolvedHome = path.resolve(os.homedir());',
|
|
220
|
-
' if (resolvedCwd === resolvedHome) {',
|
|
221
|
-
' return path.join(resolvedHome, ".skillstate", "global", "skillstate.json");',
|
|
222
|
-
' }',
|
|
223
|
-
' return path.join(resolvedCwd, ".skillstate", "skillstate.json");',
|
|
224
|
-
'}',
|
|
225
|
-
'',
|
|
226
|
-
'function readState(statePath) {',
|
|
227
|
-
' try {',
|
|
228
|
-
' if (fs.existsSync(statePath)) {',
|
|
229
|
-
' const parsed = JSON.parse(fs.readFileSync(statePath, "utf-8"));',
|
|
230
|
-
' if (parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)) {',
|
|
231
|
-
' if (parsed.state !== null && typeof parsed.state === "object" && !Array.isArray(parsed.state)) {',
|
|
232
|
-
' return parsed.state;',
|
|
233
|
-
' }',
|
|
234
|
-
' return parsed;',
|
|
235
|
-
' }',
|
|
236
|
-
' }',
|
|
237
|
-
' } catch (error) {}',
|
|
238
|
-
' return {};',
|
|
239
|
-
'}',
|
|
240
|
-
'',
|
|
241
|
-
'let raw = "";',
|
|
242
|
-
'process.stdin.setEncoding("utf-8");',
|
|
243
|
-
'process.stdin.on("data", (chunk) => { raw += chunk; });',
|
|
244
|
-
'process.stdin.on("end", () => {',
|
|
245
|
-
' let cwd = process.cwd();',
|
|
246
|
-
' try {',
|
|
247
|
-
' const input = JSON.parse(raw);',
|
|
248
|
-
' if (typeof input.cwd === "string" && input.cwd.length > 0) {',
|
|
249
|
-
' cwd = input.cwd;',
|
|
250
|
-
' }',
|
|
251
|
-
' } catch (error) {}',
|
|
252
|
-
' const state = readState(resolveStatePathForCwd(cwd));',
|
|
253
|
-
' const output = {',
|
|
254
|
-
' hookSpecificOutput: {',
|
|
255
|
-
' hookEventName: HOOK_EVENT_NAME,',
|
|
256
|
-
' additionalContext: "Current skill state (JSON): " + JSON.stringify(state)',
|
|
257
|
-
' + "\\nPersist anything you need into state via the skillstate MCP tools (state.patch) or a fenced ```json state_patch block inside a Bash command. History is not reliable.",',
|
|
258
|
-
' },',
|
|
259
|
-
' };',
|
|
260
|
-
' process.stdout.write(JSON.stringify(output));',
|
|
261
|
-
'});',
|
|
262
|
-
'',
|
|
263
|
-
].join('\n');
|
|
193
|
+
hookEventName,
|
|
194
|
+
contextSuffix: HISTORY_UNRELIABLE_NOTE,
|
|
195
|
+
});
|
|
264
196
|
}
|
|
265
197
|
/**
|
|
266
198
|
* Generate a SKILL.md for Claude Code's skill directory
|
|
267
199
|
* (`~/.claude/skills/<name>/SKILL.md`). The body instructs the agent to
|
|
268
200
|
* treat the hook-injected state as authoritative (history is not
|
|
269
|
-
* reliable), to
|
|
270
|
-
* to persist via `state.patch` — the PostToolUse hook also merges any
|
|
201
|
+
* reliable), to orient via `state.summary` (full dump via `state.get`),
|
|
202
|
+
* and to persist via `state.patch` — the PostToolUse hook also merges any
|
|
271
203
|
* fenced ```json `state_patch` block printed by a Bash tool call.
|
|
272
204
|
*/
|
|
273
205
|
generateSkillMd(spec, statePath) {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
`version: ${spec.version}`,
|
|
281
|
-
'execution_context:',
|
|
282
|
-
` state_path: ${resolvedStatePath}`,
|
|
283
|
-
' format: json',
|
|
284
|
-
'---',
|
|
285
|
-
'',
|
|
286
|
-
`# ${spec.name}`,
|
|
287
|
-
'',
|
|
288
|
-
spec.instructions,
|
|
289
|
-
'',
|
|
290
|
-
'## Execution Context',
|
|
291
|
-
'',
|
|
292
|
-
`Your execution state lives at \`${resolvedStatePath}\` (per project; a`,
|
|
293
|
-
'session started in $HOME uses `~/.skillstate/global/skillstate.json`).',
|
|
294
|
-
'The skillstate Claude Code hooks:',
|
|
295
|
-
'',
|
|
296
|
-
'- inject the CURRENT state into context on every prompt submit',
|
|
297
|
-
' (`UserPromptSubmit`) and re-inject it after compaction',
|
|
298
|
-
' (`SessionStart` matcher `^compact$`);',
|
|
299
|
-
'- watch every Bash tool result and merge a fenced ```json block carrying',
|
|
300
|
-
' a `state_patch` into the state file (`PostToolUse`).',
|
|
301
|
-
'',
|
|
302
|
-
'The injected state is authoritative — history is not reliable. Never',
|
|
303
|
-
'reconstruct execution context from the conversation.',
|
|
304
|
-
'',
|
|
305
|
-
'## Process',
|
|
306
|
-
'',
|
|
307
|
-
'1. Read the current state from the injected context, or fetch it with',
|
|
308
|
-
' the skillstate MCP tool `state.get`.',
|
|
309
|
-
'2. Observe the result of your last action.',
|
|
310
|
-
'3. Reason about what to do next, given the state and the observation.',
|
|
311
|
-
'4. Persist progress with the skillstate MCP tool `state.patch` (sparse',
|
|
312
|
-
' patch; set a key to `null` to delete it), and/or emit a fenced JSON',
|
|
313
|
-
' block with exactly two keys inside a Bash tool call so the',
|
|
314
|
-
' `PostToolUse` hook merges it:',
|
|
315
|
-
'',
|
|
316
|
-
`${fence}json`,
|
|
317
|
-
'{',
|
|
318
|
-
' "state_patch": { "key": "new_value", "obsolete_key": null },',
|
|
319
|
-
' "action": "next_action_name"',
|
|
320
|
-
'}',
|
|
321
|
-
fence,
|
|
322
|
-
'',
|
|
323
|
-
'- In `state_patch`, set keys to `null` to delete them. Only include',
|
|
324
|
-
' fields you want to change. Omit fields to leave them unchanged.',
|
|
325
|
-
'- Put anything you need to survive into `state_patch`; never rely on',
|
|
326
|
-
' the conversation remembering it.',
|
|
327
|
-
'- `action` names what you will do next (e.g. "continue", "done").',
|
|
328
|
-
'',
|
|
329
|
-
].join('\n');
|
|
206
|
+
return skillMdBody({
|
|
207
|
+
hostLabel: 'Claude Code',
|
|
208
|
+
injectionPhrase: 'injected into your context via hooks',
|
|
209
|
+
spec,
|
|
210
|
+
statePath,
|
|
211
|
+
});
|
|
330
212
|
}
|
|
331
213
|
/**
|
|
332
214
|
* Merge the skillstate hook groups into an existing `settings.json`
|
|
@@ -335,102 +217,111 @@ In \`state_patch\`, set keys to null to delete them. Only include fields you wan
|
|
|
335
217
|
* skillstate command is already wired, the ORIGINAL text is returned
|
|
336
218
|
* byte-unchanged. Malformed/empty input starts from a fresh hooks-only
|
|
337
219
|
* document (the CLI guards a live settings.json before calling).
|
|
220
|
+
*
|
|
221
|
+
* The mechanics live in the shared {@link mergeHookGroups}; this method
|
|
222
|
+
* supplies only the format specifics (generated settings.json groups and
|
|
223
|
+
* the `node <script> <event>` skillstate commands).
|
|
338
224
|
*/
|
|
339
225
|
mergeHooksConfig(existingJson, options) {
|
|
340
|
-
let doc = {};
|
|
341
|
-
try {
|
|
342
|
-
doc = JSON.parse(existingJson);
|
|
343
|
-
}
|
|
344
|
-
catch {
|
|
345
|
-
// Missing or malformed input: start from a fresh document.
|
|
346
|
-
}
|
|
347
|
-
if (!isPlainObjectDoc(doc.hooks)) {
|
|
348
|
-
doc.hooks = {};
|
|
349
|
-
}
|
|
350
226
|
const scriptDir = options?.scriptDir ?? '<stateDir>/hooks';
|
|
351
227
|
const command = (event) => `node ${JSON.stringify(this.claudeHookScriptPath(scriptDir, event))} ${event}`;
|
|
352
|
-
const skillstateCommands = new Set(CLAUDE_HOOK_EVENTS.map((event) => JSON.stringify(command(event))));
|
|
353
|
-
let alreadyWired = false;
|
|
354
|
-
for (const groups of Object.values(doc.hooks)) {
|
|
355
|
-
if (!Array.isArray(groups))
|
|
356
|
-
continue;
|
|
357
|
-
for (const group of groups) {
|
|
358
|
-
if (!isPlainObjectDoc(group) || !Array.isArray(group['hooks']))
|
|
359
|
-
continue;
|
|
360
|
-
for (const handler of group['hooks']) {
|
|
361
|
-
if (isPlainObjectDoc(handler) && skillstateCommands.has(JSON.stringify(handler['command']))) {
|
|
362
|
-
alreadyWired = true;
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
if (alreadyWired) {
|
|
368
|
-
return existingJson;
|
|
369
|
-
}
|
|
370
228
|
const generated = JSON.parse(this.generateHooksConfig(undefined, { ...options, scriptDir }));
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
}
|
|
377
|
-
return `${JSON.stringify(doc, null, 2)}\n`;
|
|
229
|
+
return mergeHookGroups({
|
|
230
|
+
existingJson,
|
|
231
|
+
generatedGroups: generated.hooks,
|
|
232
|
+
commandsOf: new Set(CLAUDE_HOOK_EVENTS.map((event) => JSON.stringify(command(event)))),
|
|
233
|
+
});
|
|
378
234
|
}
|
|
379
235
|
/**
|
|
380
|
-
* Generate a hook script and persist it via
|
|
381
|
-
* is the script destination (usually
|
|
236
|
+
* Generate a hook script and persist it via the shared `saveGenerated`
|
|
237
|
+
* (atomic temp-rename write). `target` is the script destination (usually
|
|
382
238
|
* {@link ClaudeAdapter.claudeHookScriptPath}); `statePath` is forwarded
|
|
383
239
|
* to {@link generateHookScript}. Returns the absolute destination path.
|
|
384
240
|
*/
|
|
385
241
|
async saveHookScript(event, target, statePath) {
|
|
386
|
-
|
|
387
|
-
await atomicWriteFile(dest, this.generateHookScript(event, statePath));
|
|
388
|
-
return dest;
|
|
242
|
+
return saveGenerated(target, this.generateHookScript(event, statePath));
|
|
389
243
|
}
|
|
390
244
|
/**
|
|
391
|
-
* Generate the hooks config document and persist it via
|
|
392
|
-
* `
|
|
245
|
+
* Generate the hooks config document and persist it via the shared
|
|
246
|
+
* `saveGenerated`. Both the destination and the embedded state path
|
|
393
247
|
* accept raw strings or `{ root, name }` refs confined by
|
|
394
248
|
* `resolveStatePath`. Returns the absolute destination path.
|
|
395
249
|
*/
|
|
396
250
|
async saveHooksConfig(target, statePath, options) {
|
|
397
|
-
|
|
398
|
-
await atomicWriteFile(dest, this.generateHooksConfig(statePath, options));
|
|
399
|
-
return dest;
|
|
251
|
+
return saveGenerated(target, this.generateHooksConfig(statePath, options));
|
|
400
252
|
}
|
|
401
253
|
/**
|
|
402
|
-
* Generate a SKILL.md and persist it via `
|
|
403
|
-
* absolute destination path.
|
|
254
|
+
* Generate a SKILL.md and persist it via the shared `saveGenerated`.
|
|
255
|
+
* Returns the absolute destination path.
|
|
404
256
|
*/
|
|
405
257
|
async saveSkillMd(target, spec, statePath) {
|
|
406
|
-
|
|
407
|
-
await atomicWriteFile(dest, this.generateSkillMd(spec, statePath));
|
|
408
|
-
return dest;
|
|
258
|
+
return saveGenerated(target, this.generateSkillMd(spec, statePath));
|
|
409
259
|
}
|
|
410
260
|
generateAppendPrompt() {
|
|
411
261
|
return `You are operating in state-based execution mode. Your state is maintained across steps.
|
|
412
262
|
|
|
413
|
-
After each step, you MUST respond with
|
|
263
|
+
After each step, you MUST respond with:
|
|
414
264
|
|
|
415
|
-
|
|
416
|
-
{
|
|
417
|
-
"state_patch": { "field_to_update": "new_value", "obsolete_field": null },
|
|
418
|
-
"action": "next_action_name"
|
|
419
|
-
}
|
|
420
|
-
\`\`\`
|
|
265
|
+
${STATE_PATCH_CONTRACT}
|
|
421
266
|
|
|
422
|
-
- In \`state_patch\`, set keys to null to delete them. Only include fields you want to change. Omit fields to leave them unchanged.
|
|
423
267
|
- \`action\` indicates what you want to do next (e.g., "continue", "done", "deploy").
|
|
424
|
-
-
|
|
268
|
+
- Put anything you need to persist into \`state_patch\`.`;
|
|
425
269
|
}
|
|
426
270
|
/* ------------------------------------------------------------------ */
|
|
427
271
|
/* Internal helpers */
|
|
428
272
|
/* ------------------------------------------------------------------ */
|
|
429
|
-
/**
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
273
|
+
/**
|
|
274
|
+
* Inject-script template (`UserPromptSubmit` / `SessionStart`): brand
|
|
275
|
+
* header + the shared hook-runtime snippet ({@link hookRuntimeSnippet}
|
|
276
|
+
* inlined via `fn.toString()`) + a stdin loop that emits
|
|
277
|
+
* `{ hookSpecificOutput: { hookEventName, additionalContext } }` with the
|
|
278
|
+
* current state JSON read from the SESSION cwd. Brand specifics stay in
|
|
279
|
+
* the adapter (comment lines only); the `contextSuffix` is the shared
|
|
280
|
+
* {@link HISTORY_UNRELIABLE_NOTE} from `@skillstate/core`.
|
|
281
|
+
*/
|
|
282
|
+
buildInjectScriptTemplate(options) {
|
|
283
|
+
return [
|
|
284
|
+
'#!/usr/bin/env node',
|
|
285
|
+
`// skillstate Claude Code hook — ${options.hookEventName} (generated by @skillstate/claude).`,
|
|
286
|
+
'// Self-contained CommonJS: reads one hook JSON document on stdin,',
|
|
287
|
+
'// resolves the state from the SESSION cwd, and emits',
|
|
288
|
+
'// { hookSpecificOutput: { hookEventName, additionalContext } }.',
|
|
289
|
+
options.header,
|
|
290
|
+
"'use strict';",
|
|
291
|
+
'const fs = require("fs");',
|
|
292
|
+
'const os = require("os");',
|
|
293
|
+
'const path = require("path");',
|
|
294
|
+
'',
|
|
295
|
+
`const HOOK_EVENT_NAME = ${JSON.stringify(options.hookEventName)};`,
|
|
296
|
+
'',
|
|
297
|
+
hookRuntimeSnippet(),
|
|
298
|
+
'',
|
|
299
|
+
'let raw = "";',
|
|
300
|
+
'process.stdin.setEncoding("utf-8");',
|
|
301
|
+
'process.stdin.on("data", (chunk) => { raw += chunk; });',
|
|
302
|
+
'process.stdin.on("end", () => {',
|
|
303
|
+
' let cwd = process.cwd();',
|
|
304
|
+
' try {',
|
|
305
|
+
' const input = JSON.parse(raw);',
|
|
306
|
+
' if (typeof input.cwd === "string" && input.cwd.length > 0) {',
|
|
307
|
+
' cwd = input.cwd;',
|
|
308
|
+
' }',
|
|
309
|
+
' } catch (error) {}',
|
|
310
|
+
' const state = readStateEnvelope(',
|
|
311
|
+
' resolveStatePathForCwd(path.resolve(cwd), path.resolve(os.homedir())),',
|
|
312
|
+
' (p) => fs.readFileSync(p, "utf-8"),',
|
|
313
|
+
' );',
|
|
314
|
+
' const output = {',
|
|
315
|
+
' hookSpecificOutput: {',
|
|
316
|
+
' hookEventName: HOOK_EVENT_NAME,',
|
|
317
|
+
' additionalContext: "Current skill state (JSON): " + JSON.stringify(state)',
|
|
318
|
+
` + ${JSON.stringify(options.contextSuffix)},`,
|
|
319
|
+
' },',
|
|
320
|
+
' };',
|
|
321
|
+
' process.stdout.write(JSON.stringify(output));',
|
|
322
|
+
'});',
|
|
323
|
+
'',
|
|
324
|
+
].join('\n');
|
|
434
325
|
}
|
|
435
326
|
/** PostToolUse script: extract state_patch, ⊕ merge, persist. */
|
|
436
327
|
buildPostToolUseScript(header) {
|
|
@@ -448,109 +339,9 @@ After each step, you MUST respond with a JSON block containing your State Patch
|
|
|
448
339
|
'const os = require("os");',
|
|
449
340
|
'const path = require("path");',
|
|
450
341
|
'',
|
|
451
|
-
'function isPlainObject(value) {',
|
|
452
|
-
' return typeof value === "object" && value !== null && !Array.isArray(value);',
|
|
453
|
-
'}',
|
|
454
|
-
'',
|
|
455
|
-
'function resolveStatePathForCwd(cwd) {',
|
|
456
|
-
' const resolvedCwd = path.resolve(cwd);',
|
|
457
|
-
' const resolvedHome = path.resolve(os.homedir());',
|
|
458
|
-
' if (resolvedCwd === resolvedHome) {',
|
|
459
|
-
' return path.join(resolvedHome, ".skillstate", "global", "skillstate.json");',
|
|
460
|
-
' }',
|
|
461
|
-
' return path.join(resolvedCwd, ".skillstate", "skillstate.json");',
|
|
462
|
-
'}',
|
|
463
|
-
'',
|
|
464
|
-
'function readState(statePath) {',
|
|
465
|
-
' try {',
|
|
466
|
-
' if (fs.existsSync(statePath)) {',
|
|
467
|
-
' const parsed = JSON.parse(fs.readFileSync(statePath, "utf-8"));',
|
|
468
|
-
' if (parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)) {',
|
|
469
|
-
' if (parsed.state !== null && typeof parsed.state === "object" && !Array.isArray(parsed.state)) {',
|
|
470
|
-
' return parsed.state;',
|
|
471
|
-
' }',
|
|
472
|
-
' return parsed;',
|
|
473
|
-
' }',
|
|
474
|
-
' }',
|
|
475
|
-
' } catch (error) {}',
|
|
476
|
-
' return {};',
|
|
477
|
-
'}',
|
|
478
|
-
'',
|
|
479
|
-
'// Paper ⊕ merge: null deletes a key, nested plain objects merge',
|
|
480
|
-
'// recursively, everything else replaces.',
|
|
481
|
-
'function mergePatch(base, patch) {',
|
|
482
|
-
' const result = { ...base };',
|
|
483
|
-
' for (const key of Object.keys(patch)) {',
|
|
484
|
-
' const value = patch[key];',
|
|
485
|
-
' if (value === null) {',
|
|
486
|
-
' delete result[key];',
|
|
487
|
-
' } else if (isPlainObject(value) && isPlainObject(result[key])) {',
|
|
488
|
-
' result[key] = mergePatch(result[key], value);',
|
|
489
|
-
' } else {',
|
|
490
|
-
' result[key] = value;',
|
|
491
|
-
' }',
|
|
492
|
-
' }',
|
|
493
|
-
' return result;',
|
|
494
|
-
'}',
|
|
495
|
-
'',
|
|
496
|
-
'function readResponseText(response) {',
|
|
497
|
-
' if (typeof response === "string") return response;',
|
|
498
|
-
' if (isPlainObject(response)) {',
|
|
499
|
-
' if (typeof response.content === "string") return response.content;',
|
|
500
|
-
' if (typeof response.text === "string") return response.text;',
|
|
501
|
-
' return JSON.stringify(response);',
|
|
502
|
-
' }',
|
|
503
|
-
' return response === null || response === undefined ? "" : String(response);',
|
|
504
|
-
'}',
|
|
505
|
-
'',
|
|
506
342
|
`const FENCE = ${JSON.stringify(fence)};`,
|
|
507
|
-
'const FENCE_RE = /' + '```' + 'json\\s*\\n?([\\s\\S]*?)\\n?\\s*' + '```' + '/;',
|
|
508
|
-
'// An open fence that never closes (truncated output) is still a patch',
|
|
509
|
-
'// attempt: match from ```json to end-of-text so it classifies as invalid.',
|
|
510
|
-
'const OPEN_FENCE_RE = /' + '```' + 'json\\s*\\n?([\\s\\S]+)$/',
|
|
511
343
|
'',
|
|
512
|
-
|
|
513
|
-
'// an object state_patch, { invalid: true } when a block exists but is',
|
|
514
|
-
'// malformed, { absent: true } when there is no block at all.',
|
|
515
|
-
'function findFencedPatch(text) {',
|
|
516
|
-
' const match = text.match(FENCE_RE) || text.match(OPEN_FENCE_RE);',
|
|
517
|
-
' if (!match) return { absent: true };',
|
|
518
|
-
' try {',
|
|
519
|
-
' const parsed = JSON.parse(match[1]);',
|
|
520
|
-
' if (isPlainObject(parsed) && isPlainObject(parsed.state_patch)) {',
|
|
521
|
-
' return { patch: parsed.state_patch };',
|
|
522
|
-
' }',
|
|
523
|
-
' } catch (error) {}',
|
|
524
|
-
' return { invalid: true };',
|
|
525
|
-
'}',
|
|
526
|
-
'',
|
|
527
|
-
'// Fallback: a raw JSON object with state_patch anywhere in the text.',
|
|
528
|
-
'// Ordinary JSON output without a state_patch key is simply not a patch.',
|
|
529
|
-
'function findRawPatch(text) {',
|
|
530
|
-
' const trimmed = text.trim();',
|
|
531
|
-
' const candidates = [];',
|
|
532
|
-
' try {',
|
|
533
|
-
' candidates.push(JSON.parse(trimmed));',
|
|
534
|
-
' } catch (error) {}',
|
|
535
|
-
' const first = trimmed.indexOf("{");',
|
|
536
|
-
' const last = trimmed.lastIndexOf("}");',
|
|
537
|
-
' if (first !== -1 && last > first) {',
|
|
538
|
-
' try {',
|
|
539
|
-
' candidates.push(JSON.parse(trimmed.slice(first, last + 1)));',
|
|
540
|
-
' } catch (error) {}',
|
|
541
|
-
' }',
|
|
542
|
-
' for (const candidate of candidates) {',
|
|
543
|
-
' if (isPlainObject(candidate)) {',
|
|
544
|
-
' if (isPlainObject(candidate.state_patch)) {',
|
|
545
|
-
' return { patch: candidate.state_patch };',
|
|
546
|
-
' }',
|
|
547
|
-
' if (Object.prototype.hasOwnProperty.call(candidate, "state_patch")) {',
|
|
548
|
-
' return { invalid: true };',
|
|
549
|
-
' }',
|
|
550
|
-
' }',
|
|
551
|
-
' }',
|
|
552
|
-
' return { absent: true };',
|
|
553
|
-
'}',
|
|
344
|
+
hookRuntimeSnippet(),
|
|
554
345
|
'',
|
|
555
346
|
'let raw = "";',
|
|
556
347
|
'process.stdin.setEncoding("utf-8");',
|
|
@@ -563,7 +354,7 @@ After each step, you MUST respond with a JSON block containing your State Patch
|
|
|
563
354
|
' if (typeof input.cwd === "string" && input.cwd.length > 0) {',
|
|
564
355
|
' cwd = input.cwd;',
|
|
565
356
|
' }',
|
|
566
|
-
' const statePath = resolveStatePathForCwd(cwd);',
|
|
357
|
+
' const statePath = resolveStatePathForCwd(path.resolve(cwd), path.resolve(os.homedir()));',
|
|
567
358
|
' const response = input.tool_response;',
|
|
568
359
|
' let result;',
|
|
569
360
|
' if (isPlainObject(response) && isPlainObject(response.state_patch)) {',
|
|
@@ -574,10 +365,13 @@ After each step, you MUST respond with a JSON block containing your State Patch
|
|
|
574
365
|
' if (result.absent) result = findRawPatch(text);',
|
|
575
366
|
' }',
|
|
576
367
|
' if (result.patch !== undefined) {',
|
|
577
|
-
' const merged = mergePatch(
|
|
368
|
+
' const merged = mergePatch(',
|
|
369
|
+
' readStateEnvelope(statePath, (p) => fs.readFileSync(p, "utf-8")),',
|
|
370
|
+
' result.patch,',
|
|
371
|
+
' );',
|
|
578
372
|
' try {',
|
|
579
373
|
' fs.mkdirSync(path.dirname(statePath), { recursive: true });',
|
|
580
|
-
'
|
|
374
|
+
' saveStateEnvelope(statePath, merged, (p, data) => fs.writeFileSync(p, data));',
|
|
581
375
|
' } catch (writeError) {',
|
|
582
376
|
" output.systemMessage = 'skillstate: failed to persist state (' + writeError.message + ')';",
|
|
583
377
|
' }',
|
|
@@ -596,12 +390,6 @@ After each step, you MUST respond with a JSON block containing your State Patch
|
|
|
596
390
|
'',
|
|
597
391
|
].join('\n');
|
|
598
392
|
}
|
|
599
|
-
describeSchema(schema) {
|
|
600
|
-
const fields = Object.entries(schema)
|
|
601
|
-
.map(([name, field]) => `- ${name} (${field.type}): ${field.description ?? 'no description'}`)
|
|
602
|
-
.join('\n');
|
|
603
|
-
return `## Schema\n${fields}`;
|
|
604
|
-
}
|
|
605
393
|
}
|
|
606
394
|
/**
|
|
607
395
|
* Surgically remove every skillstate hook handler from an existing
|
|
@@ -627,7 +415,7 @@ export function removeSkillstateHookGroups(existingJson) {
|
|
|
627
415
|
catch {
|
|
628
416
|
return { text: existingJson, changed: false };
|
|
629
417
|
}
|
|
630
|
-
if (!
|
|
418
|
+
if (!isPlainObject(doc) || !isPlainObject(doc['hooks'])) {
|
|
631
419
|
return { text: existingJson, changed: false };
|
|
632
420
|
}
|
|
633
421
|
const scriptBasenames = CLAUDE_HOOK_EVENTS.map((event) => `${event}.cjs`);
|
|
@@ -641,12 +429,12 @@ export function removeSkillstateHookGroups(existingJson) {
|
|
|
641
429
|
const keptGroups = [];
|
|
642
430
|
let eventChanged = false;
|
|
643
431
|
for (const group of groups) {
|
|
644
|
-
if (!
|
|
432
|
+
if (!isPlainObject(group) || !Array.isArray(group['hooks'])) {
|
|
645
433
|
keptGroups.push(group);
|
|
646
434
|
continue;
|
|
647
435
|
}
|
|
648
436
|
const handlers = group['hooks'];
|
|
649
|
-
const keptHandlers = handlers.filter((handler) => !(
|
|
437
|
+
const keptHandlers = handlers.filter((handler) => !(isPlainObject(handler) && isSkillstateCommand(handler['command'])));
|
|
650
438
|
if (keptHandlers.length === handlers.length) {
|
|
651
439
|
keptGroups.push(group);
|
|
652
440
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-adapter.js","sourceRoot":"","sources":["../src/claude-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude-adapter.js","sourceRoot":"","sources":["../src/claude-adapter.ts"],"names":[],"mappings":"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"}
|