@skillstate/core 3.0.0 → 3.0.1

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 CHANGED
@@ -6,8 +6,7 @@
6
6
 
7
7
  [![npm version](https://img.shields.io/npm/v/@skillstate/core)](https://www.npmjs.com/package/@skillstate/core)
8
8
  [![node](https://img.shields.io/node/v/@skillstate/core)](https://www.npmjs.com/package/@skillstate/core)
9
- [![Tests](https://img.shields.io/badge/tests-873%20passing-brightgreen)](https://github.com/vitalykuzyaev/skillstate)
10
- [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](https://github.com/vitalykuzyaev/skillstate/blob/main/LICENSE)
9
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](https://github.com/vitkuz573/skillstate/blob/main/LICENSE)
11
10
 
12
11
  </div>
13
12
 
package/dist/events.d.ts CHANGED
@@ -10,14 +10,16 @@
10
10
  * - `step:error` — validation-exhausted or transport-thrown steps
11
11
  * (`{ step, error }`);
12
12
  * - `budget:exceeded` — `run()` char-budget trip
13
- * (`{ step, totalChars, maxChars }`).
13
+ * (`{ step, totalChars, maxChars }`);
14
+ * - `run:exhausted` — `run()` left its loop by running out of steps rather
15
+ * than by `isDone` (`{ steps, maxSteps }`).
14
16
  *
15
17
  * Zero dependencies, Node >= 20, ESM. Deliberately NOT `node:events`:
16
18
  * a 30-line typed emitter keeps payloads type-safe without any import.
17
19
  */
18
20
  import type { Observation } from './types.js';
19
21
  /** @non-paper runtime event names. */
20
- export type RuntimeEventName = 'step:start' | 'step:end' | 'step:error' | 'budget:exceeded';
22
+ export type RuntimeEventName = 'step:start' | 'step:end' | 'step:error' | 'budget:exceeded' | 'run:exhausted';
21
23
  /** @non-paper payloads per runtime event. */
22
24
  export interface RuntimeEventPayloads {
23
25
  'step:start': {
@@ -38,6 +40,10 @@ export interface RuntimeEventPayloads {
38
40
  totalChars: number;
39
41
  maxChars: number;
40
42
  };
43
+ 'run:exhausted': {
44
+ steps: number;
45
+ maxSteps: number;
46
+ };
41
47
  }
42
48
  /** @non-paper listener for one runtime event. */
43
49
  export type RuntimeEventListener<E extends RuntimeEventName> = (payload: RuntimeEventPayloads[E]) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,sCAAsC;AACtC,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,iBAAiB,CAAC;AAEtB,6CAA6C;AAC7C,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,WAAW,CAAA;KAAE,CAAC;IACzD,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IACnE,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,iBAAiB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E;AAED,iDAAiD;AACjD,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAC7D,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAC7B,IAAI,CAAC;AAEV;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGtB;IAEJ,kDAAkD;IAClD,EAAE,CAAC,CAAC,SAAS,gBAAgB,EAC3B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAChC,MAAM,IAAI,CAUZ;IAED,sDAAsD;IACtD,GAAG,CAAC,CAAC,SAAS,gBAAgB,EAC5B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAChC,IAAI,CAEN;IAED,gEAAgE;IAChE,IAAI,CAAC,CAAC,SAAS,gBAAgB,EAC7B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,IAAI,CAQN;CACF;AAED,+EAA+E;AAC/E,eAAO,MAAM,aAAa,qBAA4B,CAAC"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,sCAAsC;AACtC,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,iBAAiB,GACjB,eAAe,CAAC;AAEpB,6CAA6C;AAC7C,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,WAAW,CAAA;KAAE,CAAC;IACzD,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IACnE,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,iBAAiB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,eAAe,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAED,iDAAiD;AACjD,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAC7D,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAC7B,IAAI,CAAC;AAEV;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGtB;IAEJ,kDAAkD;IAClD,EAAE,CAAC,CAAC,SAAS,gBAAgB,EAC3B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAChC,MAAM,IAAI,CAUZ;IAED,sDAAsD;IACtD,GAAG,CAAC,CAAC,SAAS,gBAAgB,EAC5B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAChC,IAAI,CAEN;IAED,gEAAgE;IAChE,IAAI,CAAC,CAAC,SAAS,gBAAgB,EAC7B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,IAAI,CAQN;CACF;AAED,+EAA+E;AAC/E,eAAO,MAAM,aAAa,qBAA4B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAuCA;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACb,SAAS,GAAG,IAAI,GAAG,EAGjC,CAAC;IAEJ,kDAAkD;IAClD,EAAE,CACA,KAAQ,EACR,QAAiC;QAEjC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,QAAsC,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC;IAED,sDAAsD;IACtD,GAAG,CACD,KAAQ,EACR,QAAiC;QAEjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAsC,CAAC,CAAC;IAC5E,CAAC;IAED,gEAAgE;IAChE,IAAI,CACF,KAAQ,EACR,OAAgC;QAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YAC/B,QAAoC,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AA2CA;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACb,SAAS,GAAG,IAAI,GAAG,EAGjC,CAAC;IAEJ,kDAAkD;IAClD,EAAE,CACA,KAAQ,EACR,QAAiC;QAEjC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,QAAsC,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC;IAED,sDAAsD;IACtD,GAAG,CACD,KAAQ,EACR,QAAiC;QAEjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAsC,CAAC,CAAC;IAC5E,CAAC;IAED,gEAAgE;IAChE,IAAI,CACF,KAAQ,EACR,OAAgC;QAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YAC/B,QAAoC,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,mBAAmB,EAAE,CAAC"}
package/dist/runtime.d.ts CHANGED
@@ -101,6 +101,14 @@ export interface RunOptions {
101
101
  tokenBudget?: CharsBudget;
102
102
  charsBudget?: CharsBudget;
103
103
  maxChars?: number;
104
+ /**
105
+ * @non-paper §10.1's `break` on an invalidated step, replaced by its own
106
+ * trailing comment — "or continue, per policy". Off by default, which is the
107
+ * pseudocode's behaviour; on, a rejected patch costs one step instead of
108
+ * ending the run, and the caller is responsible for the retry storm that
109
+ * implies.
110
+ */
111
+ continueOnInvalidated?: boolean;
104
112
  }
105
113
  /**
106
114
  * @non-paper rejection reason when `run()` trips a char budget. Carries
@@ -115,6 +123,14 @@ export declare class BudgetExceededError extends Error {
115
123
  constructor(maxChars: number, totalChars: number, partialResults: StepResult[]);
116
124
  }
117
125
  /** Result of a single Algorithm 1 step. */
126
+ /**
127
+ * How a {@link SkillStateRuntime.run} ended.
128
+ *
129
+ * Three exits, one return value — the paper's pseudocode returns `StepResult[]`
130
+ * from all of them, so the caller cannot tell a finished run from a stopped one.
131
+ * Only the first is completion.
132
+ */
133
+ export type RunStop = 'done' | 'invalidated' | 'max_steps';
118
134
  export interface StepResult {
119
135
  step: number;
120
136
  observation: Observation;
@@ -149,6 +165,7 @@ export interface StepResult {
149
165
  * objects, so a rejected patch can never leak into state (rollback is free).
150
166
  */
151
167
  export declare class SkillStateRuntime {
168
+ #private;
152
169
  private readonly spec;
153
170
  private readonly llm;
154
171
  private readonly execute;
@@ -219,5 +236,31 @@ export declare class SkillStateRuntime {
219
236
  * untouched.
220
237
  */
221
238
  run(first: Observation, isDone: (r: StepResult) => boolean, maxSteps?: number, runOpts?: RunOptions): Promise<StepResult[]>;
239
+ /**
240
+ * Why the last {@link SkillStateRuntime.run} stopped.
241
+ *
242
+ * `'done'` — `isDone` returned true. `'invalidated'` — §10.1's `break` on a
243
+ * step whose patch was rejected after every attempt. `'max_steps'` — the loop
244
+ * ran out of budget, which is NOT completion.
245
+ *
246
+ * `undefined` before the first `run()`. Reset by every `run()` call, so it
247
+ * always describes the most recent one and never a previous run's ending.
248
+ */
249
+ get lastRunStop(): RunStop | undefined;
222
250
  }
251
+ /**
252
+ * §6.4's synthetic observation. One definition, used by the runtime and the
253
+ * host adapter alike — the two used to build this string separately, and they
254
+ * did not agree: `k = 0` is a legal configuration, and the copy in this file
255
+ * wrote "1 attempts".
256
+ *
257
+ * A DELIBERATE divergence from §10.1, which writes the literal
258
+ * `"... after " + str(attempt) + " attempts: "` and so produces "1 attempts"
259
+ * when k = 0. The plural is corrected here. A.4 is declared byte-normative in
260
+ * §5.2 and this is not: §10.1 is illustrative pseudocode, and a grammar error
261
+ * in a literal that is handed to a model to read is a defect, not a
262
+ * conformance item. Flagged rather than quietly taken, because the rule for
263
+ * diverging from the paper is that the divergence is written down.
264
+ */
265
+ export declare function invalidPatchObservation(attempts: number, lastError: string | undefined): string;
223
266
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/dist/runtime.js CHANGED
@@ -79,6 +79,7 @@ export class SkillStateRuntime {
79
79
  transformer = new PromptTransformer();
80
80
  currentState;
81
81
  stepCounter = 0;
82
+ #lastRunStop;
82
83
  constructor(options) {
83
84
  this.spec = options.spec;
84
85
  this.llm = options.llm;
@@ -236,7 +237,7 @@ export class SkillStateRuntime {
236
237
  // exhaustion; the sentinel action is never executed).
237
238
  const newObservation = accepted === null
238
239
  ? {
239
- content: `Invalid state patch after ${attempts} attempts: ${lastError}`,
240
+ content: invalidPatchObservation(attempts, lastError),
240
241
  timestamp: this.now(),
241
242
  source: 'skillstate',
242
243
  }
@@ -308,6 +309,22 @@ export class SkillStateRuntime {
308
309
  async run(first, isDone, maxSteps = DEFAULT_MAX_STEPS, runOpts) {
309
310
  const results = [];
310
311
  const maxChars = this.resolveMaxChars(runOpts);
312
+ // §10.1, verbatim:
313
+ //
314
+ // if stepResult.invalidated:
315
+ // break // or continue, per policy
316
+ //
317
+ // The `break` is what the pseudocode does; the trailing comment is the
318
+ // paper permitting the other. This loop implemented the comment and ignored
319
+ // the code, so a step whose patch was rejected after every attempt kept
320
+ // spending steps — each one re-reading an unchanged state and re-asking for
321
+ // a patch that the previous k+1 attempts had already failed to produce.
322
+ //
323
+ // §6.4's observation is still returned, unchanged, in `newObservation`. The
324
+ // paper builds it and then breaks; it is the caller's to use afterwards. The
325
+ // loop is not the place to keep going.
326
+ const continueOnInvalidated = runOpts
327
+ ?.continueOnInvalidated === true;
311
328
  let localTotal = 0;
312
329
  let observation = first;
313
330
  for (let i = 0; i < maxSteps; i += 1) {
@@ -351,12 +368,74 @@ export class SkillStateRuntime {
351
368
  localTotal += result.promptChars + result.responseChars;
352
369
  }
353
370
  results.push(result);
371
+ if (result.invalidated && !continueOnInvalidated) {
372
+ this.#lastRunStop = 'invalidated';
373
+ break;
374
+ }
354
375
  if (isDone(result)) {
376
+ this.#lastRunStop = 'done';
355
377
  break;
356
378
  }
357
379
  observation = result.newObservation;
358
380
  }
381
+ // Three exits, one return value. `break` on `isDone`, `break` on an
382
+ // invalidated step, and falling out of the `for` are indistinguishable to the
383
+ // caller, and the third is the one that lies: a run that stopped at
384
+ // `maxSteps` looks exactly like a run that finished.
385
+ //
386
+ // That is not hypothetical. A 90-file measurement was read as "the model
387
+ // lost track of its running sum at file 78" when the truth was that
388
+ // §10.1's default ceiling of 100 steps arrived first, at ~1.67 patches per
389
+ // file, and the transcript ended mid-file-79 with the work still going. The
390
+ // correction came from counting patches by hand, not from anything the
391
+ // library said.
392
+ //
393
+ // §10.1's pseudocode is `for step in range(maxSteps)`, so it too just stops
394
+ // — the paper does not specify a report, and this is not a rule from the
395
+ // paper. It is the same report the budget trip already makes: `run()` says
396
+ // it stopped, and by what.
397
+ if (this.#lastRunStop === undefined) {
398
+ this.#lastRunStop = 'max_steps';
399
+ this.events?.emit('run:exhausted', { steps: results.length, maxSteps });
400
+ this.logger?.warn('run:exhausted', { steps: results.length, maxSteps });
401
+ }
359
402
  return results;
360
403
  }
404
+ /**
405
+ * Why the last {@link SkillStateRuntime.run} stopped.
406
+ *
407
+ * `'done'` — `isDone` returned true. `'invalidated'` — §10.1's `break` on a
408
+ * step whose patch was rejected after every attempt. `'max_steps'` — the loop
409
+ * ran out of budget, which is NOT completion.
410
+ *
411
+ * `undefined` before the first `run()`. Reset by every `run()` call, so it
412
+ * always describes the most recent one and never a previous run's ending.
413
+ */
414
+ get lastRunStop() {
415
+ return this.#lastRunStop;
416
+ }
417
+ }
418
+ /**
419
+ * §6.4's synthetic observation. One definition, used by the runtime and the
420
+ * host adapter alike — the two used to build this string separately, and they
421
+ * did not agree: `k = 0` is a legal configuration, and the copy in this file
422
+ * wrote "1 attempts".
423
+ *
424
+ * A DELIBERATE divergence from §10.1, which writes the literal
425
+ * `"... after " + str(attempt) + " attempts: "` and so produces "1 attempts"
426
+ * when k = 0. The plural is corrected here. A.4 is declared byte-normative in
427
+ * §5.2 and this is not: §10.1 is illustrative pseudocode, and a grammar error
428
+ * in a literal that is handed to a model to read is a defect, not a
429
+ * conformance item. Flagged rather than quietly taken, because the rule for
430
+ * diverging from the paper is that the divergence is written down.
431
+ */
432
+ export function invalidPatchObservation(attempts, lastError) {
433
+ // Empty for zero attempts, not a sentence about zero attempts. The caller
434
+ // falls back to the running correction when this is empty, so returning a
435
+ // string here would silence a real reason with a report of nothing.
436
+ if (attempts < 1)
437
+ return '';
438
+ const reason = lastError === undefined || lastError.length === 0 ? 'no valid patch was produced' : lastError;
439
+ return `Invalid state patch after ${attempts} attempt${attempts === 1 ? '' : 's'}: ${reason}`;
361
440
  }
362
441
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generic-procedure.d.ts","sourceRoot":"","sources":["../../src/schemas/generic-procedure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,sBAAsB,EAAE,cAiEpC,CAAC"}
1
+ {"version":3,"file":"generic-procedure.d.ts","sourceRoot":"","sources":["../../src/schemas/generic-procedure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,sBAAsB,EAAE,cAyEpC,CAAC"}
@@ -24,12 +24,20 @@ export const GENERIC_PROCEDURE_SPEC = {
24
24
  '- state.checkpoint save a snapshot that state.rollback restores',
25
25
  '',
26
26
  'A patch merges into the state: a null value deletes that key, and nested',
27
- 'objects merge recursively. Patches are validated against this schema',
28
- 'before anything is written; an invalid patch is rejected with the',
27
+ 'objects merge recursively. A patch is sparse — a field it does not mention',
28
+ 'is left exactly as it is, so a patch naming one field touches only that',
29
+ 'field and the rest of the state carries over untouched. An array is',
30
+ 'replaced whole rather than appended to, so a list you want to grow has to',
31
+ 'be sent as the complete list you want to end up with — the whole list,',
32
+ 'including everything it already held. Patches are validated against this',
33
+ 'schema before anything is written; an invalid patch is rejected with the',
29
34
  'offending field and changes nothing.',
30
35
  '',
31
36
  'Use these tools for facts that must survive a context reset, and skip',
32
37
  'them otherwise. Keep doing what the user asked.',
38
+ '',
39
+ 'The state is a record, not a scratchpad: it is meant to still be there',
40
+ 'and readable once the work is finished, by whoever comes next.',
33
41
  ].join('\n'),
34
42
  schema: {
35
43
  goal: {
@@ -1 +1 @@
1
- {"version":3,"file":"generic-procedure.js","sourceRoot":"","sources":["../../src/schemas/generic-procedure.ts"],"names":[],"mappings":"AA+BA,MAAM,CAAC,MAAM,sBAAsB,GAAmB;IACpD,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,uBAAuB;IAC7B,OAAO,EAAE,OAAO;IAChB,YAAY,EAAE;QACZ,yEAAyE;QACzE,wEAAwE;QACxE,gEAAgE;QAChE,EAAE;QACF,2BAA2B;QAC3B,oDAAoD;QACpD,sDAAsD;QACtD,sCAAsC;QACtC,qDAAqD;QACrD,4CAA4C;QAC5C,6CAA6C;QAC7C,EAAE;QACF,+BAA+B;QAC/B,qDAAqD;QACrD,kDAAkD;QAClD,2EAA2E;QAC3E,+DAA+D;QAC/D,oEAAoE;QACpE,2EAA2E;QAC3E,EAAE;QACF,0EAA0E;QAC1E,sEAAsE;QACtE,mEAAmE;QACnE,sCAAsC;QACtC,EAAE;QACF,uEAAuE;QACvE,iDAAiD;KAClD,CAAC,IAAI,CAAC,IAAI,CAAC;IACZ,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,iDAAiD;SAC/D;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,+BAA+B;SAC7C;QACD,UAAU,EAAE;YACV,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,sBAAsB;SACpC;QACD,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,4CAA4C;SAC1D;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,+BAA+B;SAC7C;QACD,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,iDAAiD;SAC/D;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"generic-procedure.js","sourceRoot":"","sources":["../../src/schemas/generic-procedure.ts"],"names":[],"mappings":"AA+BA,MAAM,CAAC,MAAM,sBAAsB,GAAmB;IACpD,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,uBAAuB;IAC7B,OAAO,EAAE,OAAO;IAChB,YAAY,EAAE;QACZ,yEAAyE;QACzE,wEAAwE;QACxE,gEAAgE;QAChE,EAAE;QACF,2BAA2B;QAC3B,oDAAoD;QACpD,sDAAsD;QACtD,sCAAsC;QACtC,qDAAqD;QACrD,4CAA4C;QAC5C,6CAA6C;QAC7C,EAAE;QACF,+BAA+B;QAC/B,qDAAqD;QACrD,kDAAkD;QAClD,2EAA2E;QAC3E,+DAA+D;QAC/D,oEAAoE;QACpE,2EAA2E;QAC3E,EAAE;QACF,0EAA0E;QAC1E,4EAA4E;QAC5E,yEAAyE;QACzE,qEAAqE;QACrE,2EAA2E;QAC3E,wEAAwE;QACxE,0EAA0E;QAC1E,0EAA0E;QAC1E,sCAAsC;QACtC,EAAE;QACF,uEAAuE;QACvE,iDAAiD;QACjD,EAAE;QACF,wEAAwE;QACxE,gEAAgE;KACjE,CAAC,IAAI,CAAC,IAAI,CAAC;IACZ,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,iDAAiD;SAC/D;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,+BAA+B;SAC7C;QACD,UAAU,EAAE;YACV,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,sBAAsB;SACpC;QACD,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,4CAA4C;SAC1D;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,+BAA+B;SAC7C;QACD,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,iDAAiD;SAC/D;KACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../src/state-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,WAAW,EAEX,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAOpB,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,SAAS,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAC9B,UAAU,CAWZ;AAkBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAE3E;AAyBD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,GAChB,gBAAgB,CAkBlB;AAMD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,MAAM,CAKR;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEzD;AAMD,qBAAa,YAAY;IACvB,MAAM,CAAC,kBAAkB,4BAAsB;IAC/C,MAAM,CAAC,UAAU,oBAAc;IAC/B,MAAM,CAAC,aAAa,uBAAiB;IACrC,MAAM,CAAC,cAAc,wBAAkB;IACvC,MAAM,CAAC,gBAAgB,0BAAoB;CAC5C;AAMD,wBAAgB,kBAAkB;;;;;;EAQjC"}
1
+ {"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../src/state-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,WAAW,EAEX,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAOpB,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,SAAS,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAC9B,UAAU,CAWZ;AAkBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAE3E;AAwCD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,GAChB,gBAAgB,CAkBlB;AAMD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,MAAM,CAKR;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEzD;AAMD,qBAAa,YAAY;IACvB,MAAM,CAAC,kBAAkB,4BAAsB;IAC/C,MAAM,CAAC,UAAU,oBAAc;IAC/B,MAAM,CAAC,aAAa,uBAAiB;IACrC,MAAM,CAAC,cAAc,wBAAkB;IACvC,MAAM,CAAC,gBAAgB,0BAAoB;CAC5C;AAMD,wBAAgB,kBAAkB;;;;;;EAQjC"}
@@ -41,7 +41,22 @@ function checkType(value, field) {
41
41
  case 'string':
42
42
  return typeof value === 'string';
43
43
  case 'number':
44
- return typeof value === 'number';
44
+ // `typeof NaN === 'number'`, so that test alone lets a number the
45
+ // interchange format cannot carry through validation.
46
+ //
47
+ // §4.2 gives the reason it matters: types are limited to a closed set "so
48
+ // that a conforming validator in any language can check patches
49
+ // identically". JSON has no NaN and no Infinity — `JSON.stringify({n: NaN})`
50
+ // is `{"n":null}` — so a validator in another language reading the same
51
+ // patch cannot even see one, and would read the model's number as a
52
+ // deletion instead.
53
+ //
54
+ // The observable damage is worse than a portability gap. A patch of
55
+ // `{total: NaN}` passes, merges, and the state file is written with
56
+ // `total: null` — so §4.2's "a key that exists holds a value of its
57
+ // declared type" is broken by a patch §6.2 accepted, and the field the
58
+ // model asked to write a number into has silently become a deletion.
59
+ return typeof value === 'number' && Number.isFinite(value);
45
60
  case 'boolean':
46
61
  return typeof value === 'boolean';
47
62
  case 'array':
@@ -1 +1 @@
1
- {"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../src/state-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../src/state-manager.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -26,12 +26,22 @@ export interface StateTransition {
26
26
  action: string;
27
27
  timestamp: number;
28
28
  }
29
+ /**
30
+ * §6.2: "`validatePatch` returns `{ valid: true }` or
31
+ * `{ valid: false, error, field }`."
32
+ *
33
+ * `field` is NOT optional. Every reason the paper names — unknown key, type
34
+ * mismatch — is about one named key, and every constructor in this package sets
35
+ * it. Making it optional bought a `field === undefined` branch in every caller
36
+ * that no test could reach, which is a branch nobody will ever exercise and
37
+ * therefore one that will quietly rot.
38
+ */
29
39
  export type ValidationResult = {
30
40
  valid: true;
31
41
  } | {
32
42
  valid: false;
33
43
  error: string;
34
- field?: string;
44
+ field: string;
35
45
  };
36
46
  export interface ExecutionStep {
37
47
  step: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAGjD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;AAGxD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAGtD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,UAAU,CAAC;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,UAAU,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GACf;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAKpD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAGlB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC;IAC7D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IAClD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/C,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC;CACzF;AAGD,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;CAC7C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAGjD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;AAGxD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAGtD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,UAAU,CAAC;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,UAAU,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GACf;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAKnD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAGlB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC;IAC7D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IAClD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/C,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC;CACzF;AAGD,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;CAC7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skillstate/core",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "Paper-exact skillstate runtime core (A.4 byte-verbatim formatPaper, §4.3 token tracker).",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",