@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.
@@ -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 read state via the skillstate MCP tool `state.get`, and
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 `atomicWriteFile`. `target`
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
- * `atomicWriteFile`. Both the destination and the embedded state path
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 `atomicWriteFile`. Returns the
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
- /** Resolve a `string | StatePathRef` via `resolveStatePath` (throws on `..`). */
133
- private resolve;
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":"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"}
1
+ {"version":3,"file":"claude-adapter.d.ts","sourceRoot":"","sources":["../src/claude-adapter.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,7 @@
38
38
  */
39
39
  import * as path from 'node:path';
40
40
  import { PromptTransformer } from '@skillstate/core';
41
- import { atomicWriteFile, resolveStatePath, } from '@skillstate/core';
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 = this.describeSchema(spec.schema);
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
- 1. Step-by-step reasoning (will be discarded after execution)
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(this.resolve(statePath)));
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 : this.resolve(statePath);
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
- return [
204
- '#!/usr/bin/env node',
205
- `// skillstate Claude Code hook — ${hookEventName} (generated by @skillstate/claude).`,
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
- "'use strict';",
211
- 'const fs = require("fs");',
212
- 'const os = require("os");',
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 read state via the skillstate MCP tool `state.get`, and
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
- const resolvedStatePath = statePath ?? './.skillstate/skillstate.json';
275
- const fence = '```';
276
- return [
277
- '---',
278
- `name: ${JSON.stringify(spec.name)}`,
279
- `description: ${JSON.stringify(spec.instructions)}`,
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
- for (const [event, groups] of Object.entries(generated.hooks)) {
372
- const existing = Array.isArray(doc.hooks[event])
373
- ? doc.hooks[event]
374
- : [];
375
- doc.hooks[event] = [...existing, ...groups];
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 `atomicWriteFile`. `target`
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
- const dest = this.resolve(target);
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
- * `atomicWriteFile`. Both the destination and the embedded state path
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
- const dest = this.resolve(target);
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 `atomicWriteFile`. Returns the
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
- const dest = this.resolve(target);
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 a JSON block containing your State Patch and your Action. The JSON block MUST have exactly these two keys:
263
+ After each step, you MUST respond with:
414
264
 
415
- \`\`\`json
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
- - Reasoning is discarded after execution — put anything you need to persist into \`state_patch\`.`;
268
+ - Put anything you need to persist into \`state_patch\`.`;
425
269
  }
426
270
  /* ------------------------------------------------------------------ */
427
271
  /* Internal helpers */
428
272
  /* ------------------------------------------------------------------ */
429
- /** Resolve a `string | StatePathRef` via `resolveStatePath` (throws on `..`). */
430
- resolve(target) {
431
- return typeof target === 'string'
432
- ? target
433
- : resolveStatePath(target.root, target.name);
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
- '// Look for a fenced ```json block: { patch } when it parses and carries',
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(readState(statePath), result.patch);',
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
- ' fs.writeFileSync(statePath, JSON.stringify({ version: 1, state: merged }, null, 2) + "\\n");',
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 (!isPlainObjectDoc(doc) || !isPlainObjectDoc(doc['hooks'])) {
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 (!isPlainObjectDoc(group) || !Array.isArray(group['hooks'])) {
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) => !(isPlainObjectDoc(handler) && isSkillstateCommand(handler['command'])));
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skillstate/claude",
3
- "version": "2.0.7",
3
+ "version": "2.1.0",
4
4
  "description": "Claude Code platform adapter for the skillstate runtime.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",