@skillstate/codex 2.1.0 → 2.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/dist/codex-adapter.d.ts
CHANGED
|
@@ -82,8 +82,12 @@ export declare class CodexAdapter {
|
|
|
82
82
|
* `hookEventName: "SessionStart"` (state survives compaction);
|
|
83
83
|
* - `post-tool-use`: extracts a `state_patch` from the tool_response
|
|
84
84
|
* (fenced ```json block or raw JSON), applies the ⊕ null-deletion merge
|
|
85
|
-
* and writes the state file
|
|
86
|
-
* the patch is invalid.
|
|
85
|
+
* and writes the state file (under the built-in cross-process lock);
|
|
86
|
+
* stdout is `{}` or a `systemMessage` when the patch is invalid.
|
|
87
|
+
*
|
|
88
|
+
* AGENT-SCOPED STATE: the hook stdin's `session_id` scopes the state to
|
|
89
|
+
* `<cwd>/.skillstate/agents/<session-prefix>/skillstate.json`, so
|
|
90
|
+
* parallel Codex sessions never last-writer-win over each other.
|
|
87
91
|
*
|
|
88
92
|
* `statePath` is accepted for `{ root, name }` confinement (traversal
|
|
89
93
|
* refs throw) and documented in the script header; the content itself is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-adapter.d.ts","sourceRoot":"","sources":["../src/codex-adapter.ts"],"names":[],"mappings":"AA4BA,OAAO,
|
|
1
|
+
{"version":3,"file":"codex-adapter.d.ts","sourceRoot":"","sources":["../src/codex-adapter.ts"],"names":[],"mappings":"AA4BA,OAAO,EAKL,sBAAsB,EAIvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErE,+EAA+E;AAC/E,MAAM,MAAM,cAAc,GACtB,oBAAoB,GACpB,uBAAuB,GACvB,eAAe,CAAC;AAEpB,6DAA6D;AAC7D,eAAO,MAAM,iBAAiB,2EAIgB,CAAC;AAE/C,6EAA6E;AAC7E,eAAO,MAAM,2BAA2B,cAAc,CAAC;AAEvD,2DAA2D;AAC3D,eAAO,MAAM,2BAA2B,WAAW,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,8BAA8B,OAAO,CAAC;AAEnD,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,4DAA4D;AAC5D,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,+BAAyB,CAAC;AAEzD;;;;;;;;GAQG;AAEH,qBAAa,YAAY;IACvB,QAAQ,CAAC,IAAI,WAAW;IAExB;;;;;OAKG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAEpE;IAED;;;;;;;;;;;OAWG;IACH,mBAAmB,CACjB,SAAS,EAAE,MAAM,GAAG,YAAY,EAChC,OAAO,CAAC,EAAE,uBAAuB,GAChC,MAAM,CA6CR;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,kBAAkB,CAChB,KAAK,EAAE,cAAc,EACrB,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,GAChC,MAAM,CAiBR;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,yBAAyB;IA2EjC;;;;;;;OAOG;IACH,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAOhE;IAED;;;;;OAKG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,GAAG,YAAY,EAC7B,SAAS,EAAE,MAAM,GAAG,YAAY,EAChC,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,MAAM,CAAC,CAEjB;IAED;;;;;;;;;OASG;IACH,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,MAAM,CAahF;IAED;;;;;OAKG;IACG,cAAc,CAClB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,MAAM,GAAG,YAAY,EAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,GAChC,OAAO,CAAC,MAAM,CAAC,CAEjB;IAED;;;OAGG;IACG,WAAW,CACf,MAAM,EAAE,MAAM,GAAG,YAAY,EAC7B,IAAI,EAAE,cAAc,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAEjB;IAMD,iEAAiE;IACjE,OAAO,CAAC,sBAAsB;CAwE/B"}
|
package/dist/codex-adapter.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* @non-paper — no adapters exist in arXiv 2608.26263v3.
|
|
27
27
|
*/
|
|
28
28
|
import * as path from 'node:path';
|
|
29
|
-
import { HISTORY_UNRELIABLE_NOTE, hookRuntimeSnippet, mergeHookGroups, resolveHostStateForCwd, resolveTarget, saveGenerated, skillMdBody, } from '@skillstate/core';
|
|
29
|
+
import { HISTORY_UNRELIABLE_NOTE, hookRuntimeSnippet, INTERRUPTED_SESSION_NOTE, mergeHookGroups, resolveHostStateForCwd, resolveTarget, saveGenerated, skillMdBody, } from '@skillstate/core';
|
|
30
30
|
/** All {@link CodexHookEvent} values in generation order. */
|
|
31
31
|
export const CODEX_HOOK_EVENTS = [
|
|
32
32
|
'user-prompt-submit',
|
|
@@ -136,8 +136,12 @@ export class CodexAdapter {
|
|
|
136
136
|
* `hookEventName: "SessionStart"` (state survives compaction);
|
|
137
137
|
* - `post-tool-use`: extracts a `state_patch` from the tool_response
|
|
138
138
|
* (fenced ```json block or raw JSON), applies the ⊕ null-deletion merge
|
|
139
|
-
* and writes the state file
|
|
140
|
-
* the patch is invalid.
|
|
139
|
+
* and writes the state file (under the built-in cross-process lock);
|
|
140
|
+
* stdout is `{}` or a `systemMessage` when the patch is invalid.
|
|
141
|
+
*
|
|
142
|
+
* AGENT-SCOPED STATE: the hook stdin's `session_id` scopes the state to
|
|
143
|
+
* `<cwd>/.skillstate/agents/<session-prefix>/skillstate.json`, so
|
|
144
|
+
* parallel Codex sessions never last-writer-win over each other.
|
|
141
145
|
*
|
|
142
146
|
* `statePath` is accepted for `{ root, name }` confinement (traversal
|
|
143
147
|
* refs throw) and documented in the script header; the content itself is
|
|
@@ -168,6 +172,13 @@ export class CodexAdapter {
|
|
|
168
172
|
* {@link HISTORY_UNRELIABLE_NOTE} from `@skillstate/core`.
|
|
169
173
|
*/
|
|
170
174
|
buildInjectScriptTemplate(options) {
|
|
175
|
+
// SessionStart is a real session boundary: when the session-meta
|
|
176
|
+
// sidecar still carries `status: "interrupted"` (the previous run of
|
|
177
|
+
// this session was killed before it could finalize), the hook appends
|
|
178
|
+
// the shared INTERRUPTED_SESSION_NOTE — with the preserved state path
|
|
179
|
+
// substituted — so the model reviews progress/blockers first. A fresh
|
|
180
|
+
// MCP launch overwrites the status back to `running`.
|
|
181
|
+
const interruptedCheck = options.hookEventName === 'SessionStart';
|
|
171
182
|
return [
|
|
172
183
|
'#!/usr/bin/env node',
|
|
173
184
|
`// skillstate Codex hook — ${options.hookEventName} (generated by @skillstate/codex).`,
|
|
@@ -181,6 +192,7 @@ export class CodexAdapter {
|
|
|
181
192
|
'const path = require("path");',
|
|
182
193
|
'',
|
|
183
194
|
`const HOOK_EVENT_NAME = ${JSON.stringify(options.hookEventName)};`,
|
|
195
|
+
`const INTERRUPTED_SESSION_NOTE = ${JSON.stringify(INTERRUPTED_SESSION_NOTE)};`,
|
|
184
196
|
'',
|
|
185
197
|
hookRuntimeSnippet(),
|
|
186
198
|
'',
|
|
@@ -189,21 +201,39 @@ export class CodexAdapter {
|
|
|
189
201
|
'process.stdin.on("data", (chunk) => { raw += chunk; });',
|
|
190
202
|
'process.stdin.on("end", () => {',
|
|
191
203
|
' let cwd = process.cwd();',
|
|
204
|
+
' let agentId = "";',
|
|
192
205
|
' try {',
|
|
193
206
|
' const input = JSON.parse(raw);',
|
|
194
207
|
' if (typeof input.cwd === "string" && input.cwd.length > 0) {',
|
|
195
208
|
' cwd = input.cwd;',
|
|
196
209
|
' }',
|
|
210
|
+
' agentId = resolveAgentIdFromSession(input.session_id);',
|
|
197
211
|
' } catch (error) {}',
|
|
198
|
-
' const
|
|
199
|
-
'
|
|
200
|
-
' (
|
|
212
|
+
' const statePath = resolveStatePathForCwd(',
|
|
213
|
+
' path.resolve(cwd),',
|
|
214
|
+
' path.resolve(os.homedir()),',
|
|
215
|
+
' agentId,',
|
|
201
216
|
' );',
|
|
217
|
+
' const state = readStateEnvelope(statePath, (p) => fs.readFileSync(p, "utf-8"));',
|
|
218
|
+
' let contextSuffix = ' + JSON.stringify(options.contextSuffix) + ';',
|
|
219
|
+
...(interruptedCheck
|
|
220
|
+
? [
|
|
221
|
+
' const metaStatus = readSessionMetaStatus(',
|
|
222
|
+
' statePath.replace(/\\/+[^/]*$/, "") + "/.session-meta.json",',
|
|
223
|
+
' (p) => fs.readFileSync(p, "utf-8"),',
|
|
224
|
+
' );',
|
|
225
|
+
' if (metaStatus === "interrupted") {',
|
|
226
|
+
' contextSuffix += INTERRUPTED_SESSION_NOTE.replace("<path>", function () {',
|
|
227
|
+
' return statePath;',
|
|
228
|
+
' });',
|
|
229
|
+
' }',
|
|
230
|
+
]
|
|
231
|
+
: []),
|
|
202
232
|
' const output = {',
|
|
203
233
|
' hookSpecificOutput: {',
|
|
204
234
|
' hookEventName: HOOK_EVENT_NAME,',
|
|
205
235
|
' additionalContext: "Current skill state (JSON): " + JSON.stringify(state)',
|
|
206
|
-
|
|
236
|
+
' + contextSuffix,',
|
|
207
237
|
' },',
|
|
208
238
|
' };',
|
|
209
239
|
' process.stdout.write(JSON.stringify(output));',
|
|
@@ -307,7 +337,11 @@ export class CodexAdapter {
|
|
|
307
337
|
' if (typeof input.cwd === "string" && input.cwd.length > 0) {',
|
|
308
338
|
' cwd = input.cwd;',
|
|
309
339
|
' }',
|
|
310
|
-
' const statePath = resolveStatePathForCwd(
|
|
340
|
+
' const statePath = resolveStatePathForCwd(',
|
|
341
|
+
' path.resolve(cwd),',
|
|
342
|
+
' path.resolve(os.homedir()),',
|
|
343
|
+
' resolveAgentIdFromSession(input.session_id),',
|
|
344
|
+
' );',
|
|
311
345
|
' const response = input.tool_response;',
|
|
312
346
|
' let result;',
|
|
313
347
|
' if (isPlainObject(response) && isPlainObject(response.state_patch)) {',
|
|
@@ -318,13 +352,15 @@ export class CodexAdapter {
|
|
|
318
352
|
' if (result.absent) result = findRawPatch(text);',
|
|
319
353
|
' }',
|
|
320
354
|
' if (result.patch !== undefined) {',
|
|
321
|
-
' const merged = mergePatch(',
|
|
322
|
-
' readStateEnvelope(statePath, (p) => fs.readFileSync(p, "utf-8")),',
|
|
323
|
-
' result.patch,',
|
|
324
|
-
' );',
|
|
325
355
|
' try {',
|
|
326
356
|
' fs.mkdirSync(path.dirname(statePath), { recursive: true });',
|
|
327
|
-
'
|
|
357
|
+
' lockStateWrite(statePath, fs, () => {',
|
|
358
|
+
' const merged = mergePatch(',
|
|
359
|
+
' readStateEnvelope(statePath, (p) => fs.readFileSync(p, "utf-8")),',
|
|
360
|
+
' result.patch,',
|
|
361
|
+
' );',
|
|
362
|
+
' saveStateEnvelope(statePath, merged, (p, data) => fs.writeFileSync(p, data));',
|
|
363
|
+
' });',
|
|
328
364
|
' } catch (writeError) {',
|
|
329
365
|
" output.systemMessage = 'skillstate: failed to persist state (' + writeError.message + ')';",
|
|
330
366
|
' }',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-adapter.js","sourceRoot":"","sources":["../src/codex-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAS1B,6DAA6D;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,oBAAoB;IACpB,uBAAuB;IACvB,eAAe;CAC6B,CAAC;AAE/C,6EAA6E;AAC7E,MAAM,CAAC,MAAM,2BAA2B,GAAG,WAAW,CAAC;AAEvD,2DAA2D;AAC3D,MAAM,CAAC,MAAM,2BAA2B,GAAG,QAAQ,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,CAAC;AAEnD,gFAAgF;AAChF,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAiB7C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAEzD;;;;;;;;GAQG;AAEH,MAAM,OAAO,YAAY;IACd,IAAI,GAAG,OAAO,CAAC;IAExB;;;;;OAKG;IACH,mBAAmB,CAAC,SAAiB,EAAE,KAAqB;QAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;OAWG;IACH,mBAAmB,CACjB,SAAgC,EAChC,OAAiC;QAEjC,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,CAAC,KAAqB,EAAU,EAAE,CAChD,OAAO,EAAE,OAAO,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;QACpG,MAAM,OAAO,GAAG,OAAO,EAAE,cAAc,IAAI,0BAA0B,CAAC;QAEtE,MAAM,KAAK,GAAG,CAAC,KAAqB,EAAE,aAAqB,EAAE,EAAE,CAAC,CAAC;YAC/D,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;YACvB,OAAO;YACP,aAAa;YACb,sBAAsB,EAAE,8BAA8B;SACvD,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG;YACV,WAAW,EACT,qKAAqK;YACvK,KAAK,EAAE;gBACL,gBAAgB,EAAE;oBAChB;wBACE,KAAK,EAAE,CAAC,KAAK,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;qBAC9D;iBACF;gBACD,YAAY,EAAE;oBACZ;wBACE,OAAO,EAAE,2BAA2B;wBACpC,KAAK,EAAE;4BACL,KAAK,CACH,uBAAuB,EACvB,2CAA2C,CAC5C;yBACF;qBACF;iBACF;gBACD,WAAW,EAAE;oBACX;wBACE,OAAO,EAAE,2BAA2B;wBACpC,KAAK,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,8BAA8B,CAAC,CAAC;qBAChE;iBACF;aACF;SACF,CAAC;QAEF,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"codex-adapter.js","sourceRoot":"","sources":["../src/codex-adapter.ts"],"names":[],"mappings":"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"}
|