kiokuko-dsh 0.1.38 → 0.1.40

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/PERMISSIONS.md CHANGED
@@ -10,6 +10,13 @@ Kiokuko operation.
10
10
  repository metadata.
11
11
  - Writes the configured Kiokuko database and pre-migration backups, including
12
12
  DSH leases, receipts, retrieval state, and embedding state.
13
+ - On plugin load, enumerates stored DSH session IDs and validates each history.
14
+ When DSH rejects a v3 history containing legacy Kiokuko informational
15
+ events, reads that exact native session file and marks the five supported
16
+ types ignorable under DSH's write lease. Retains a byte-for-byte `.bak`, validates
17
+ in a disposable local directory, and replaces the source atomically. It
18
+ reports failed IDs without exposing message contents; invalid or unrelated
19
+ records remain errors. The same check applies when a chat is opened later.
13
20
  - Does not rewrite host configuration or repository instruction files.
14
21
  Repository identity, run identity, lease, revision, and integrity mismatches
15
22
  fail closed.
@@ -33,8 +40,9 @@ Kiokuko operation.
33
40
  - `@huggingface/hub`, `@huggingface/transformers`, and `sqlite-vec` are optional
34
41
  peer capabilities. They are not silently installed by the minimal package
35
42
  path and are required only by the feature that explicitly uses them.
36
- - `@deepseek-ai/cordis` is the host peer dependency. The package does not
37
- replace or patch the host runtime outside its declared DSH bundle patch.
43
+ - `@deepseek-ai/cordis` is the host peer dependency. The loaded plugin temporarily
44
+ wraps the JSONL service's `open` method for legacy-history compatibility and
45
+ restores it on unload. It does not change DSH's installed code or event catalog.
38
46
 
39
47
  ## Installation lifecycle
40
48
 
@@ -1,3 +1,4 @@
1
+ import { type SessionHistoryCheck } from './session-history-compatibility.js';
1
2
  import type { Context } from '@deepseek-ai/cordis';
2
3
  import { DshEnnoController } from './enno-controller.js';
3
4
  import { DshIntakeGate, type DshPreStepEvent } from './intake-gate.js';
@@ -89,6 +90,8 @@ export interface DshCompositionHost {
89
90
  }
90
91
  type DshToolHostRegistration = DshToolRegistrationContext['tools']['register'];
91
92
  export interface DshCompositionHandle {
93
+ /** Startup validation of all persisted session IDs, also run after plugin reload/update. */
94
+ readonly historyCheck: Promise<SessionHistoryCheck>;
92
95
  /** Stop all event, command, tool, and session ingress synchronously. */
93
96
  readonly stopIngress: () => void;
94
97
  /** Finish resource teardown after ingress has been stopped. */
@@ -1 +1 @@
1
- {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/dsh/composition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/dsh/composition.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { formatEvolutionStatus } from '../memory/evolution/status.js';
2
2
  import { mountDeepReportSurface } from '../deep-thinker/report-surface.js';
3
3
  import { mountDshNoticeSurface } from './session-notice-surface.js';
4
+ import { mountSessionHistoryCompatibility } from './session-history-compatibility.js';
4
5
  import { randomUUID } from 'node:crypto';
5
6
  import { mountDshIdleLifecycle, mountDshSessionLifecycle } from './session-bridge.js';
6
7
  import { mountDshToolPolicy } from './tool-policy.js';
@@ -89,6 +90,7 @@ export async function mountDshComposition(ctx, host) {
89
90
  const stopErrors = [];
90
91
  let ingressStopped = false;
91
92
  let disposePromise;
93
+ let historyCheck;
92
94
  const stopIngress = () => {
93
95
  if (ingressStopped)
94
96
  return;
@@ -133,6 +135,11 @@ export async function mountDshComposition(ctx, host) {
133
135
  throw new AggregateError(failures, 'kiokuko-dsh composition setup cleanup failed');
134
136
  };
135
137
  try {
138
+ const historyCompatibility = mountSessionHistoryCompatibility(ctx);
139
+ historyCheck = historyCompatibility.ready;
140
+ ingressDisposers.push(historyCompatibility.stop);
141
+ setupResourceDisposers.push(historyCompatibility.dispose);
142
+ cleanupDisposers.push(historyCompatibility.dispose);
136
143
  if (host.deepPlanning && host.commands)
137
144
  ingressDisposers.push(host.commands.register(host.deepPlanning.command()));
138
145
  if (host.deepPlanning)
@@ -284,6 +291,6 @@ export async function mountDshComposition(ctx, host) {
284
291
  disposePromise = runCleanup();
285
292
  return disposePromise;
286
293
  };
287
- return { stopIngress, dispose };
294
+ return { stopIngress, dispose, historyCheck };
288
295
  }
289
296
  //# sourceMappingURL=composition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"composition.js","sourceRoot":"","sources":["../../src/dsh/composition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAmI,MAAM,qBAAqB,CAAA;AACtN,OAAO,EAAE,kBAAkB,EAAsB,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAqD,MAAM,YAAY,CAAA;AAClG,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAkC,MAAM,eAAe,CAAA;AACzG,OAAO,EAAE,0BAA0B,EAAwB,MAAM,8BAA8B,CAAA;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAQpD,qEAAqE;AACrE,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAY,CAAA;AAkEpD,kFAAkF;AAClF,SAAS,gBAAgB,CAAC,IAAwB;IAChD,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;AACjF,CAAC;AAWD,KAAK,UAAU,YAAY,CAAC,OAAmB;IAC7C,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;IACrB,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,MAAM;YAAE,OAAM;QAClB,MAAM,GAAG,IAAI,CAAA;QACb,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,GAA+M,EAC/M,IAAmB,EACnB,UAAgG,EAChG,MAAwC,EACxC,IAAqE;IAErE,OAAO,GAAG,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAgC,EAAE,IAAI,EAAE,EAAE;QAC/E,IAAI,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,EAAE,CAAA;QACxD,IAAI,MAAM,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,KAAK,IAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAC9C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAA;QAC9E,CAAC;QACD,IAAI,MAAuB,CAAA;QAC3B,IAAI,CAAC;YAAC,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAChD,kEAAkE;YAClE,sEAAsE;YACtE,OAAO,IAAI,EAAE,CAAA;QACf,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAyC,CAAC,CAAA;QACtF,wEAAwE;QACxE,mEAAmE;QACnE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACjF,OAAO,QAAQ,CAAA;IACjB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACvB,CAAC;AAED,SAAS,yBAAyB,CAAC,GAA2B,EAAE,UAA6B;IAC3F,OAAQ,GAAgL,CAAC,EAAE,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAqC,EAAE,EAAE;QACjQ,MAAM,KAAK,GAAyB;YAClC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;YACpB,WAAW,EAAE,OAAO,CAAC,KAAK;YAC1B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAChK,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,OAAiB,EAAE,CAAC;YAClG,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBACtC,EAAE,EAAE,UAAU,EAAE;gBAChB,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE;aACxE,CAAC;YACF,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAO,CAAC,MAAM,CAAC,EAAE,CAAC;SAC7G,CAAA;QACD,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAChF,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACvB,CAAC;AAED,SAAS,uBAAuB,CAC9B,GAA0I,EAC1I,MAAuC;IAEvC,MAAM,IAAI,GAAG,CAAC,OAAqC,EAAQ,EAAE;QAC3D,wEAAwE;QACxE,wEAAwE;QACxE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IAClF,CAAC,CAAA;IACD,OAAO;QACL,GAAG,CAAC,EAAE,CAAC,qBAAqB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtD,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;KAC3B,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAY,EAAE,IAAwB;IAC9E,MAAM,gBAAgB,GAAkB,EAAE,CAAA;IAC1C,MAAM,gBAAgB,GAAkB,EAAE,CAAA;IAC1C,MAAM,sBAAsB,GAAkB,EAAE,CAAA;IAChD,MAAM,UAAU,GAAc,EAAE,CAAA;IAChC,IAAI,cAAc,GAAG,KAAK,CAAA;IAC1B,IAAI,cAAyC,CAAA;IAE7C,MAAM,WAAW,GAAG,GAAS,EAAE;QAC7B,IAAI,cAAc;YAAE,OAAM;QAC1B,cAAc,GAAG,IAAI,CAAA;QACrB,KAAK,MAAM,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;YACjD,IAAI,CAAC;gBAAC,OAAO,EAAE,CAAA;YAAC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;QAC3C,MAAM,QAAQ,GAAG,CAAC,GAAG,UAAU,CAAC,CAAA;QAChC,KAAK,MAAM,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;YACjD,IAAI,CAAC;gBAAC,MAAM,OAAO,EAAE,CAAA;YAAC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAAC,CAAC;QAChE,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC5C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,yCAAyC,CAAC,CAAA;IACxG,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;QAChD,MAAM,QAAQ,GAAc,EAAE,CAAA;QAC9B,KAAK,MAAM,OAAO,IAAI,sBAAsB,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC;gBAAC,MAAM,OAAO,EAAE,CAAA;YAAC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAAC,CAAC;QAChE,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC5C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,8CAA8C,CAAC,CAAA;IAC7G,CAAC,CAAA;IAED,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ;YAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAClH,IAAI,IAAI,CAAC,YAAY;YAAE,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;QAC5F,IAAI,IAAI,CAAC,YAAY;YAAE,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;QAC3F,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACjD,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACrC,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM;gBAAE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnE,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;YAChC,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,aAAc,CAAC,KAAK,EAAE,CAAA;YAC3D,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACxC,IAAI,IAAI,CAAC,kBAAkB,KAAK,MAAM;gBAAE,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC5E,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;YAClC,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,eAAgB,CAAC,OAAO,EAAE,CAAA;YAClE,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YAC3C,IAAI,IAAI,CAAC,oBAAoB,KAAK,MAAM;gBAAE,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACjF,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,0CAA0C;gBAC7H,OAAO,EAAE,KAAK,EAAC,UAAU,EAAC,EAAE;oBAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE,SAAS,CAAA;oBAC9E,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,8DAA8D,EAAE,CAAA;oBACvL,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;wBAC5D,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gCAC/F,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAA;oBACnC,CAAC;oBAAC,MAAM,CAAC;wBAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAA;oBAAC,CAAC;gBACvE,CAAC;aACF,CAAC,CAAC,CAAA;QACL,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;YAC1B,MAAM,mBAAmB,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,cAAe,CAAC,OAAO,EAAE,CAAA;YACtE,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;YAChD,IAAI,IAAI,CAAC,mBAAmB,KAAK,MAAM;gBAAE,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACrF,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,0BAA0B,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YACpE,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACrC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAW,CAAC,CAAA;YAClG,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACnC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;gBAChC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACpC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAChC,CAAC;YACD,MAAM,QAAQ,CAAA;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,gBAAgB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,gBAAgB,EAAE,CAAC,CAAC,CAAA;QAC1J,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE,CAAC;YACnE,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;YAC1H,IAAI,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QAC9H,CAAC;QACD,IAAI,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC9D,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;YAClG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;YACxB,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;YAC1F,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBACvC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;gBAC7B,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAa,EAAE,QAAiB,EAAE,OAAO,CAAC;aACnF,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;YACpB,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;QACnF,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;YAC/G,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAA6D,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;QACvL,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,qGAAqG,CAAC,CAAA;QACxH,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,gBAAgB,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,GAA+D,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;QACzI,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC7C,gBAAgB,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAwC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;QACjH,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;YAChH,MAAM,cAAc,GAAI,GAAmE,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAEpG,CAAA;YACb,IAAI,cAAc,EAAE,KAAK,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAA;YAC/H,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CACzC,GAAyC,EACzC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,gBAAgB,EACrB,KAAK,EAAE,OAAO,EAAE,EAAE;gBAChB,MAAM,cAAc,CAAC,KAAM,CAAC,OAAO,CAAC,CAAA;gBACpC,IAAI,CAAC;oBAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;YAC5F,CAAC,CACF,CAAC,CAAA;YACF,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;gBAC3C,gBAAgB,CAAC,IAAI,CAAC,wBAAwB,CAC5C,GAA4C,EAC5C,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,mBAAmB,EACxB,KAAK,EAAE,OAAO,EAAE,EAAE;oBAChB,MAAM,cAAc,CAAC,KAAM,CAAC,OAAO,CAAC,CAAA;oBACpC,IAAI,CAAC;wBAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;gBAC5F,CAAC,CACF,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM;gBAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAU,CAAC,OAAO,EAAE,CAAC,CAAA;QAC5F,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,EAAE,CAAA;QACb,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,CAAC;YAAC,MAAM,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAA;QAAC,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAAC,CAAC;QAC7F,IAAI,CAAC;YAAC,MAAM,eAAe,EAAE,CAAA;QAAC,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAAC,CAAC;QACzF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,aAAa,EAAE,sCAAsC,CAAC,CAAA;QAC7G,MAAM,KAAK,CAAA;IACb,CAAC;IAED,MAAM,OAAO,GAAG,GAAkB,EAAE;QAClC,IAAI,cAAc,KAAK,SAAS;YAAE,OAAO,cAAc,CAAA;QACvD,WAAW,EAAE,CAAA;QACb,cAAc,GAAG,UAAU,EAAE,CAAA;QAC7B,OAAO,cAAc,CAAA;IACvB,CAAC,CAAA;IACD,OAAO,EAAE,WAAW,EAAE,OAAO,EAA0B,CAAA;AACzD,CAAC"}
1
+ {"version":3,"file":"composition.js","sourceRoot":"","sources":["../../src/dsh/composition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Context } from '@deepseek-ai/cordis';
2
+ export interface SessionHistoryCheck {
3
+ readonly supported: boolean;
4
+ readonly listed: number;
5
+ readonly checked: number;
6
+ readonly repaired: number;
7
+ readonly failed: number;
8
+ readonly cancelled: boolean;
9
+ /** Bounded diagnostics contain session IDs and errors, never message bodies. */
10
+ readonly failures: readonly {
11
+ id: string;
12
+ error: string;
13
+ }[];
14
+ readonly enumerationError?: string;
15
+ }
16
+ /** Own startup validation and the reversible native-open adapter until plugin unload. */
17
+ export declare function mountSessionHistoryCompatibility(ctx: Context): {
18
+ ready: Promise<SessionHistoryCheck>;
19
+ stop(): void;
20
+ dispose(): Promise<void>;
21
+ };
22
+ //# sourceMappingURL=session-history-compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-history-compatibility.d.ts","sourceRoot":"","sources":["../../src/dsh/session-history-compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AA0B7C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC3D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACnC;AAwJD,yFAAyF;AACzF,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAAC,IAAI,IAAI,IAAI,CAAC;IAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAkD9I"}
@@ -0,0 +1,288 @@
1
+ import { Context } from '@deepseek-ai/cordis';
2
+ import { constants } from 'node:fs';
3
+ import { lstat, mkdtemp, open, readFile, realpath, rename, rm } from 'node:fs/promises';
4
+ import { tmpdir } from 'node:os';
5
+ import { basename, dirname, join } from 'node:path';
6
+ import { randomUUID } from 'node:crypto';
7
+ import { canonicalJson } from '../serialization/validate.js';
8
+ import { decodeSessionLog, encodeSessionLog, parseJsonl, repairInformationalRecord } from '../../scripts/session-history-codec.mjs';
9
+ const MAX_COMPRESSED_BYTES = 64 * 1024 * 1024;
10
+ const MAX_EXPANDED_BYTES = 256 * 1024 * 1024;
11
+ const ownership = Symbol.for('kiokuko-dsh.session-history-compatibility.v1');
12
+ const unsupportedCheck = { supported: false, listed: 0, checked: 0, repaired: 0, failed: 0, cancelled: false, failures: [] };
13
+ function nativeBackend(value) {
14
+ if (!value || typeof value !== 'object')
15
+ return false;
16
+ return ['open', 'list', 'stat', 'resolveCurrentLog', 'acquireWriteLease', 'persistHeader', 'readStoredLog']
17
+ .every(key => typeof value[key] === 'function');
18
+ }
19
+ function refusalPath(error) {
20
+ const refusal = error;
21
+ return refusal?.name === 'SessionFormatUnsupportedError' && refusal.location?.kind === 'jsonl'
22
+ && typeof refusal.location.path === 'string'
23
+ && ['session.v3.jsonl.zstd', 'session.v3.jsonl'].includes(basename(refusal.location.path)) ? refusal.location.path : undefined;
24
+ }
25
+ /** Validate with the running backend implementation, including its current codec and identity checks. */
26
+ async function validateCandidate(backend, header, candidate, compression, signal) {
27
+ const root = await mkdtemp(join(tmpdir(), 'kiokuko-history-validation-'));
28
+ const scope = new Context();
29
+ const implementation = Object.getPrototypeOf(backend).constructor;
30
+ let fiber;
31
+ try {
32
+ signal?.throwIfAborted();
33
+ fiber = scope.plugin(implementation, { root, compression });
34
+ await fiber;
35
+ const validator = scope.get('sessionPersistence');
36
+ // This header only locates a native validation artifact. The candidate's
37
+ // end-seed marker supplies its actual inherited boundary during decoding.
38
+ await validator.persistHeader(header, 0);
39
+ const path = await validator.resolveCurrentLog(header.id, signal);
40
+ if (!path)
41
+ throw new Error('Native history validator did not materialize its header');
42
+ const file = await open(path, 'w');
43
+ try {
44
+ await file.writeFile(candidate);
45
+ await file.sync();
46
+ }
47
+ finally {
48
+ await file.close();
49
+ }
50
+ const restored = await validator.readStoredLog(path, header.id, signal);
51
+ if (restored.tornTruncateTo !== undefined || restored.recoveredTail?.length) {
52
+ throw new Error('Legacy history compatibility cannot discard a damaged tail');
53
+ }
54
+ if (canonicalJson(restored.meta) !== canonicalJson(header))
55
+ throw new Error('Legacy history header changed during validation');
56
+ }
57
+ finally {
58
+ try {
59
+ await fiber?.dispose();
60
+ }
61
+ finally {
62
+ await rm(root, { recursive: true, force: true });
63
+ }
64
+ }
65
+ }
66
+ /** A backup is never replaced, including after an interrupted first attempt. */
67
+ async function retainBackup(path, original, mode) {
68
+ const backup = `${path}.bak`;
69
+ let file;
70
+ try {
71
+ file = await open(backup, 'wx', mode);
72
+ }
73
+ catch (error) {
74
+ if (error.code !== 'EEXIST')
75
+ throw error;
76
+ const status = await lstat(backup);
77
+ if (!status.isFile() || status.isSymbolicLink() || !(await readFile(backup)).equals(original)) {
78
+ throw new Error('Existing session backup differs; refusing to overwrite it');
79
+ }
80
+ return;
81
+ }
82
+ try {
83
+ await file.writeFile(original);
84
+ await file.sync();
85
+ }
86
+ finally {
87
+ await file.close();
88
+ }
89
+ }
90
+ /** Only the exact rejected current-generation artifact may change, under DSH's own kernel lock. */
91
+ async function repairHistory(backend, id, rejectedPath, signal) {
92
+ signal?.throwIfAborted();
93
+ const path = await backend.resolveCurrentLog(id, signal);
94
+ if (path !== rejectedPath || !['session.v3.jsonl.zstd', 'session.v3.jsonl'].includes(basename(path))) {
95
+ throw new Error('Legacy compatibility requires the exact native v3 session artifact');
96
+ }
97
+ const snapshot = await backend.stat(id, signal ? { signal } : undefined);
98
+ if (!snapshot || snapshot.header.id !== id || snapshot.header.version !== 3)
99
+ throw new Error('Legacy session identity mismatch');
100
+ const lease = await backend.acquireWriteLease(snapshot.header);
101
+ try {
102
+ signal?.throwIfAborted();
103
+ const parent = await realpath(dirname(path));
104
+ const status = await lstat(path);
105
+ if (!status.isFile() || status.isSymbolicLink() || status.size > MAX_COMPRESSED_BYTES) {
106
+ throw new Error('Legacy history must be a regular file within the compatibility size limit');
107
+ }
108
+ const original = await readFile(path);
109
+ if (original.length > MAX_COMPRESSED_BYTES)
110
+ throw new Error('Legacy history exceeds the compatibility size limit');
111
+ const compressed = path.endsWith('.zstd');
112
+ const parsed = parseJsonl(compressed ? decodeSessionLog(original, MAX_EXPANDED_BYTES) : original);
113
+ const physicalHeader = parsed.records[0];
114
+ if (physicalHeader?.type !== 'session' || physicalHeader.id !== id || physicalHeader.version !== 3)
115
+ throw new Error('Legacy physical header mismatch');
116
+ let changed = false;
117
+ const lines = parsed.records.map((record, index) => {
118
+ if (index === 0)
119
+ return parsed.lines[index];
120
+ const compatible = repairInformationalRecord(record);
121
+ if (compatible === record)
122
+ return parsed.lines[index];
123
+ changed = true;
124
+ return JSON.stringify(compatible);
125
+ });
126
+ if (!changed)
127
+ return false;
128
+ const plaintext = Buffer.from(`${lines.join('\n')}\n`);
129
+ const candidate = compressed ? encodeSessionLog(plaintext) : plaintext;
130
+ await validateCandidate(backend, snapshot.header, candidate, compressed ? 'zstd' : 'none', signal);
131
+ signal?.throwIfAborted();
132
+ if (await backend.resolveCurrentLog(id, signal) !== path || await realpath(dirname(path)) !== parent
133
+ || !(await readFile(path)).equals(original))
134
+ throw new Error('Legacy history changed before replacement');
135
+ await retainBackup(path, original, status.mode & 0o777);
136
+ const temporary = `${path}.kiokuko-${randomUUID()}.tmp`;
137
+ const file = await open(temporary, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY, status.mode & 0o777);
138
+ try {
139
+ try {
140
+ await file.writeFile(candidate);
141
+ await file.sync();
142
+ }
143
+ finally {
144
+ await file.close();
145
+ }
146
+ signal?.throwIfAborted();
147
+ const current = await lstat(path);
148
+ if (current.ino !== status.ino || current.dev !== status.dev || await realpath(dirname(path)) !== parent
149
+ || !(await readFile(path)).equals(original))
150
+ throw new Error('Legacy history changed while staging compatibility update');
151
+ await rename(temporary, path);
152
+ if (process.platform !== 'win32') {
153
+ const directory = await open(dirname(path), 'r');
154
+ try {
155
+ await directory.sync();
156
+ }
157
+ finally {
158
+ await directory.close();
159
+ }
160
+ }
161
+ }
162
+ finally {
163
+ await rm(temporary, { force: true });
164
+ }
165
+ return true;
166
+ }
167
+ finally {
168
+ await lease.release();
169
+ }
170
+ }
171
+ /** Check every native session ID once per plugin load, including first load after an update. */
172
+ async function checkStoredSessionIds(backend, repairedIds, signal) {
173
+ const result = { supported: true, listed: 0, checked: 0, repaired: 0, failed: 0, cancelled: false,
174
+ failures: [], enumerationError: undefined };
175
+ console.info('[kiokuko-dsh] Checking stored session IDs');
176
+ try {
177
+ const snapshots = await backend.list({ signal: AbortSignal.any([signal, AbortSignal.timeout(60_000)]) });
178
+ const ids = [...new Set(snapshots.map(snapshot => snapshot.header.id))];
179
+ result.listed = ids.length;
180
+ for (const id of ids) {
181
+ if (signal.aborted)
182
+ break;
183
+ try {
184
+ const handle = await backend.open(id, 'read', { signal: AbortSignal.any([signal, AbortSignal.timeout(30_000)]) });
185
+ // Native open validates the complete stored history. No message content
186
+ // is rendered, exported, or added to a model's context by this check.
187
+ await handle.close();
188
+ if (repairedIds.has(id))
189
+ result.repaired++;
190
+ }
191
+ catch (error) {
192
+ if (signal.aborted)
193
+ break;
194
+ result.failed++;
195
+ if (result.failures.length < 20)
196
+ result.failures.push({ id, error: error instanceof Error ? error.message : String(error) });
197
+ }
198
+ result.checked++;
199
+ }
200
+ }
201
+ catch (error) {
202
+ if (!signal.aborted)
203
+ result.enumerationError = error instanceof Error ? error.message : String(error);
204
+ }
205
+ result.cancelled = signal.aborted;
206
+ console.info(`[kiokuko-dsh] Session ID check: ${result.checked}/${result.listed} checked, ${result.repaired} repaired, ${result.failed} failed${result.cancelled ? ', cancelled' : ''}`);
207
+ if (result.enumerationError)
208
+ console.warn('[kiokuko-dsh] Session ID enumeration failed:', result.enumerationError);
209
+ for (const failure of result.failures)
210
+ console.warn(`[kiokuko-dsh] Session ID check failed for ${JSON.stringify(failure.id)}: ${failure.error}`);
211
+ const { enumerationError, ...summary } = result;
212
+ return { ...summary, ...(enumerationError === undefined ? {} : { enumerationError }) };
213
+ }
214
+ /** Own startup validation and the reversible native-open adapter until plugin unload. */
215
+ export function mountSessionHistoryCompatibility(ctx) {
216
+ if (typeof ctx.get !== 'function')
217
+ return { ready: Promise.resolve(unsupportedCheck), stop() { }, async dispose() { } };
218
+ const backend = ctx.get('sessionPersistence', false);
219
+ if (!nativeBackend(backend))
220
+ return { ready: Promise.resolve(unsupportedCheck), stop() { }, async dispose() { } };
221
+ let installation = backend[ownership];
222
+ if (!installation) {
223
+ const original = backend.open;
224
+ const descriptor = Object.getOwnPropertyDescriptor(backend, 'open');
225
+ const pending = new Map();
226
+ const repairedIds = new Set();
227
+ const startup = new AbortController();
228
+ let active = true;
229
+ const wrapped = async function (id, access, options) {
230
+ try {
231
+ return await original.call(this, id, access, options);
232
+ }
233
+ catch (error) {
234
+ const path = refusalPath(error);
235
+ if (!active || !path)
236
+ throw error;
237
+ options?.signal?.throwIfAborted();
238
+ const operation = (pending.get(id) ?? Promise.resolve()).catch(() => { }).then(() => {
239
+ if (!active)
240
+ throw error;
241
+ return repairHistory(backend, id, path, options?.signal).then(changed => { if (changed)
242
+ repairedIds.add(id); });
243
+ });
244
+ pending.set(id, operation);
245
+ try {
246
+ await operation;
247
+ }
248
+ catch (cause) {
249
+ options?.signal?.throwIfAborted();
250
+ const detail = cause instanceof Error ? cause.message : String(cause);
251
+ throw new Error(`Kiokuko legacy history compatibility failed (raw log: ${path}): ${detail}; original history retained or backed up`, { cause });
252
+ }
253
+ finally {
254
+ if (pending.get(id) === operation)
255
+ pending.delete(id);
256
+ }
257
+ options?.signal?.throwIfAborted();
258
+ return original.call(this, id, access, options);
259
+ }
260
+ };
261
+ // The microtask begins only after the adapter and shared owner are installed.
262
+ const ready = Promise.resolve().then(() => checkStoredSessionIds(backend, repairedIds, startup.signal));
263
+ installation = { owners: 0, ready, stop() {
264
+ active = false;
265
+ startup.abort(new Error('Kiokuko history check stopped on plugin unload'));
266
+ if (Object.getOwnPropertyDescriptor(backend, 'open')?.value === wrapped) {
267
+ if (descriptor)
268
+ Object.defineProperty(backend, 'open', descriptor);
269
+ else
270
+ delete backend.open;
271
+ }
272
+ delete backend[ownership];
273
+ }, async drain() { await ready; await Promise.allSettled([...pending.values()]); } };
274
+ Object.defineProperty(backend, 'open', { configurable: true, writable: true, value: wrapped });
275
+ backend[ownership] = installation;
276
+ }
277
+ const owned = installation;
278
+ owned.owners++;
279
+ let stopped = false;
280
+ const stop = () => { if (!stopped) {
281
+ stopped = true;
282
+ if (--owned.owners === 0)
283
+ owned.stop();
284
+ } };
285
+ return { ready: owned.ready, stop, async dispose() { stop(); if (owned.owners === 0)
286
+ await owned.drain(); } };
287
+ }
288
+ //# sourceMappingURL=session-history-compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-history-compatibility.js","sourceRoot":"","sources":["../../src/dsh/session-history-compatibility.ts"],"names":[],"mappings":"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"}
@@ -12,9 +12,46 @@ header's **Kiokukoの回答 / Kiokukoの状態** action displays saved notices;
12
12
  notices open automatically and are acknowledged after display. Old custom
13
13
  notice events remain renderable after their log has been repaired.
14
14
 
15
- Updating the plugin prevents new affected events. Existing affected files need
16
- repair separately. Finish active tasks, stop every DSH process using the file,
17
- and install the corrected plugin before reopening it.
15
+ Every plugin load enumerates DSH's stored session IDs and validates their
16
+ histories, including the first load after installation or a package update.
17
+ Affected v3 chats have the five historical informational types below marked
18
+ ignorable before users need to open them individually. The startup log reports
19
+ checked/repaired/failed counts and the IDs of failures (up to 20 diagnostics).
20
+ A failed history does not prevent the remaining IDs from being checked.
21
+
22
+ Opening or resuming a chat also retries DSH's normal reader through the same
23
+ compatibility adapter, covering sessions added after the startup check. New
24
+ observations and notices continue to use Kiokuko's database. Checks run when
25
+ DSH loads the package, not inside npm's installation hooks: a package update
26
+ must actually be loaded by the running DSH process to take effect.
27
+
28
+ The compatibility adapter acquires DSH's native session write lease, validates
29
+ the complete candidate with the running JSONL backend, retains an identical
30
+ `.bak`, and replaces the file atomically. Event bodies, sequence numbers,
31
+ timestamps and fork boundaries are preserved. It refuses active writers,
32
+ conflicting backups, symbolic-link artifacts, damaged logs and unrelated
33
+ required event types. Automatic repair is limited to v3 JSONL/Zstandard files
34
+ up to 64 MiB on disk and 256 MiB expanded. Startup enumeration has a 60-second
35
+ deadline and each session check a 30-second deadline. Unloading Kiokuko cancels
36
+ and drains its startup check, restores the native reader, and waits for any
37
+ repair already in progress. Healthy histories and existing backups are not
38
+ rewritten on subsequent loads.
39
+
40
+ For a current harness checkout, run the compatibility tests against its source
41
+ and workspace module mappings (missing native modules fail the check):
42
+
43
+ ```sh
44
+ export KIOKUKO_DSH_SOURCE_ROOT=/path/to/deepseek-harness
45
+ TSX_TSCONFIG_PATH="$KIOKUKO_DSH_SOURCE_ROOT/tsconfig.json" \
46
+ KIOKUKO_REQUIRE_DSH_NATIVE=1 \
47
+ node scripts/run-tests.mjs tests/dsh/integration/session-history-compatibility.test.ts
48
+ ```
49
+
50
+ ## Explicit diagnostic repair
51
+
52
+ The scripts remain available for inspecting a particular artifact, older
53
+ continuation-source issues, or hosts without the automatic adapter. Finish
54
+ active tasks and stop every DSH process using the file before running them.
18
55
 
19
56
  From this Kiokuko checkout, set the exact `raw log:` path printed in the error
20
57
  and a built Session format catalog matching the DSH installation that will read
@@ -6,7 +6,7 @@
6
6
  - insert:
7
7
  - id: kiokuko-dsh
8
8
  name: 'kiokuko-dsh'
9
- inject: [skills, systemPrompt, tools, commands, userQuestions, sessions, sessionQuery, llm, agents, attachments, connection, subagents]
9
+ inject: [skills, systemPrompt, tools, commands, userQuestions, sessions, sessionQuery, sessionPersistence, llm, agents, attachments, connection, subagents]
10
10
  config:
11
11
  enabled: true
12
12
  orca:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiokuko-dsh",
3
- "version": "0.1.38",
3
+ "version": "0.1.40",
4
4
  "description": "Kiokuko plugin for DeepSeek Harness",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -26,6 +26,8 @@
26
26
  "docs/",
27
27
  "scripts/repair-session-log.mjs",
28
28
  "scripts/repair-continuation-source.mjs",
29
+ "scripts/session-history-codec.mjs",
30
+ "scripts/session-history-codec.d.mts",
29
31
  "README.md",
30
32
  "README.ja.md",
31
33
  "README.zh-CN.md",
@@ -78,12 +80,14 @@
78
80
  "readPaths": [
79
81
  "Configured Kiokuko SQLite database and embedding assets",
80
82
  "Registered project roots and their repository metadata",
81
- "Orca traces belonging to the exact native DSH session"
83
+ "Orca traces belonging to the exact native DSH session",
84
+ "Stored native DSH session IDs and histories for startup validation and legacy Kiokuko compatibility"
82
85
  ],
83
86
  "writePaths": [
84
87
  "Configured Kiokuko database and pre-migration backups",
85
88
  "DSH run, lease, receipt, retrieval, Deep inputs/artifacts/budgets/reports, post-completion memory-finalization, and embedding state inside that database",
86
- ".orca/runs and .orca/exports inside verified session workspaces, or the configured Kiokuko data directory"
89
+ ".orca/runs and .orca/exports inside verified session workspaces, or the configured Kiokuko data directory",
90
+ "Legacy Kiokuko history compatibility under DSH's native write lease: exact rejected file, retained .bak, and disposable validation artifacts"
87
91
  ],
88
92
  "commands": [
89
93
  "Restricted repository-relative verifier and backup subprocesses when explicitly requested"
@@ -11,99 +11,11 @@ import {
11
11
  unlinkSync,
12
12
  writeFileSync,
13
13
  } from 'node:fs'
14
- import { constants as zlibConstants, zstdCompressSync, zstdDecompressSync } from 'node:zlib'
15
14
  import { dirname, extname, join, resolve } from 'node:path'
16
15
  import { fileURLToPath, pathToFileURL } from 'node:url'
17
- import { TextDecoder } from 'node:util'
16
+ import { decodeSessionLog, parseJsonl, encodeSessionLog, repairInformationalRecord } from './session-history-codec.mjs'
18
17
 
19
- const ZSTD_MAGIC = 0xFD2FB528
20
18
  const CONTINUATION_FORMS = new Set(['continuation', 'loop-recovery'])
21
- const INFORMATIONAL_TYPES = new Set(['kiokuko/evolution-observation', 'kiokuko/completion-report',
22
- 'kiokuko/execution-status', 'kiokuko/deep-report', 'kiokuko/deep-status'])
23
- const fatalUtf8Decoder = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })
24
-
25
- function scanZstdFrames(buffer) {
26
- const frames = []
27
- let offset = 0
28
- while (offset < buffer.length) {
29
- const start = offset
30
- if (buffer.length - offset < 4) return { frames, tornStart: start }
31
- if (buffer.readUInt32LE(offset) !== ZSTD_MAGIC) {
32
- throw new Error(`corrupt Zstandard session log: invalid frame magic at byte ${offset}`)
33
- }
34
- offset += 4
35
- if (offset === buffer.length) return { frames, tornStart: start }
36
- const descriptor = buffer.readUInt8(offset)
37
- offset += 1
38
- if ((descriptor & 0x18) !== 0) {
39
- throw new Error(`corrupt Zstandard session log: reserved frame-header bit at byte ${offset - 1}`)
40
- }
41
- const contentSizeFlag = descriptor >>> 6
42
- const singleSegment = (descriptor & 0x20) !== 0
43
- const checksum = (descriptor & 0x04) !== 0
44
- const dictionaryFlag = descriptor & 0x03
45
- const dictionaryBytes = dictionaryFlag === 3 ? 4 : dictionaryFlag
46
- const contentSizeBytes = contentSizeFlag === 0
47
- ? (singleSegment ? 1 : 0)
48
- : 1 << contentSizeFlag
49
- const remainingHeaderBytes = (singleSegment ? 0 : 1) + dictionaryBytes + contentSizeBytes
50
- if (buffer.length - offset < remainingHeaderBytes) return { frames, tornStart: start }
51
- offset += remainingHeaderBytes
52
- for (;;) {
53
- if (buffer.length - offset < 3) return { frames, tornStart: start }
54
- const blockHeader = buffer.readUIntLE(offset, 3)
55
- offset += 3
56
- const lastBlock = (blockHeader & 1) !== 0
57
- const blockType = (blockHeader >>> 1) & 0x03
58
- const blockSize = blockHeader >>> 3
59
- if (blockType === 0x03) {
60
- throw new Error(`corrupt Zstandard session log: reserved block type at byte ${offset - 3}`)
61
- }
62
- const payloadBytes = blockType === 0x01 ? 1 : blockSize
63
- if (buffer.length - offset < payloadBytes) return { frames, tornStart: start }
64
- offset += payloadBytes
65
- if (lastBlock) break
66
- }
67
- if (checksum) {
68
- if (buffer.length - offset < 4) return { frames, tornStart: start }
69
- offset += 4
70
- }
71
- frames.push({ start, end: offset })
72
- }
73
- return { frames }
74
- }
75
-
76
- function decodeSessionLog(buffer) {
77
- const scan = scanZstdFrames(buffer)
78
- if (scan.frames.length === 0) throw new Error('session log has no complete Zstandard frames')
79
- if (scan.tornStart !== undefined) throw new Error('session log has an incomplete final Zstandard frame')
80
- return Buffer.concat(scan.frames.map(({ start, end }) => {
81
- try {
82
- return zstdDecompressSync(buffer.subarray(start, end))
83
- } catch (error) {
84
- throw new Error(`corrupt Zstandard session log: frame at byte ${start} failed validation`, { cause: error })
85
- }
86
- }))
87
- }
88
-
89
- function parseJsonl(plaintext) {
90
- if (plaintext.length === 0 || plaintext[plaintext.length - 1] !== 0x0A) {
91
- throw new Error('session log must end with a newline')
92
- }
93
- const text = fatalUtf8Decoder.decode(plaintext)
94
- const lines = text.slice(0, -1).split('\n')
95
- if (lines.length === 0 || lines.some(line => line.length === 0)) {
96
- throw new Error('session log contains an empty JSONL record')
97
- }
98
- const records = lines.map((line, index) => {
99
- try {
100
- return JSON.parse(line)
101
- } catch (error) {
102
- throw new Error(`session log JSONL record ${index} is malformed`, { cause: error })
103
- }
104
- })
105
- return { lines, records }
106
- }
107
19
 
108
20
  function objectRecord(value) {
109
21
  return typeof value === 'object' && value !== null && !Array.isArray(value) ? value : undefined
@@ -121,17 +33,8 @@ function repairedSource(value) {
121
33
  function repairRecord(value) {
122
34
  const record = objectRecord(value)
123
35
  const data = objectRecord(record?.data)
124
- // These exact historical producers contain optional information only.
125
- // Never weaken the unknown-event guard for a prefix or an unrelated plugin.
126
- if (INFORMATIONAL_TYPES.has(record?.type)) {
127
- if (Object.hasOwn(record, 'ignorable') && record.ignorable !== true) {
128
- throw new Error('refusing to replace an invalid ignorable marker')
129
- }
130
- if (Object.hasOwn(record, 'surfaceOp') || Object.hasOwn(record, 'sourceEventSeqs')) {
131
- throw new Error('refusing to mark a surface-changing event ignorable')
132
- }
133
- return record.ignorable === true ? value : { ...record, ignorable: true }
134
- }
36
+ const informational = repairInformationalRecord(value)
37
+ if (informational !== value) return informational
135
38
  if (record?.type === 'user/message') {
136
39
  const source = repairedSource(data?.source)
137
40
  return source === undefined ? value : { ...record, data: { ...data, source } }
@@ -235,20 +138,6 @@ function ensureBackup(path, original) {
235
138
  return backup
236
139
  }
237
140
 
238
- function encodeSessionLog(plaintext) {
239
- const newline = plaintext.indexOf(0x0A)
240
- if (newline < 0) throw new Error('session log has no header line')
241
- const headerFrame = zstdCompressSync(plaintext.subarray(0, newline + 1), {
242
- params: { [zlibConstants.ZSTD_c_checksumFlag]: 1 },
243
- })
244
- const body = plaintext.subarray(newline + 1)
245
- if (body.length === 0) return headerFrame
246
- const bodyFrame = zstdCompressSync(body, {
247
- params: { [zlibConstants.ZSTD_c_checksumFlag]: 1 },
248
- })
249
- return Buffer.concat([headerFrame, bodyFrame])
250
- }
251
-
252
141
  async function repair(path, catalog, dryRun = false) {
253
142
  const original = readFileSync(path)
254
143
  const plaintext = decodeSessionLog(original)
@@ -0,0 +1,4 @@
1
+ export function decodeSessionLog(buffer: Buffer, maxOutputLength?: number): Buffer
2
+ export function parseJsonl(plaintext: Buffer): { lines: string[]; records: unknown[] }
3
+ export function encodeSessionLog(plaintext: Buffer): Buffer
4
+ export function repairInformationalRecord(value: unknown): unknown
@@ -0,0 +1,121 @@
1
+ import { constants as zlibConstants, zstdCompressSync, zstdDecompressSync } from 'node:zlib'
2
+ import { TextDecoder } from 'node:util'
3
+
4
+ const ZSTD_MAGIC = 0xFD2FB528
5
+ const INFORMATIONAL_TYPES = new Set(['kiokuko/evolution-observation', 'kiokuko/completion-report',
6
+ 'kiokuko/execution-status', 'kiokuko/deep-report', 'kiokuko/deep-status'])
7
+ const fatalUtf8Decoder = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })
8
+
9
+ function scanZstdFrames(buffer) {
10
+ const frames = []
11
+ let offset = 0
12
+ while (offset < buffer.length) {
13
+ const start = offset
14
+ if (buffer.length - offset < 4) return { frames, tornStart: start }
15
+ if (buffer.readUInt32LE(offset) !== ZSTD_MAGIC) {
16
+ throw new Error(`corrupt Zstandard session log: invalid frame magic at byte ${offset}`)
17
+ }
18
+ offset += 4
19
+ if (offset === buffer.length) return { frames, tornStart: start }
20
+ const descriptor = buffer.readUInt8(offset)
21
+ offset += 1
22
+ if ((descriptor & 0x18) !== 0) {
23
+ throw new Error(`corrupt Zstandard session log: reserved frame-header bit at byte ${offset - 1}`)
24
+ }
25
+ const contentSizeFlag = descriptor >>> 6
26
+ const singleSegment = (descriptor & 0x20) !== 0
27
+ const checksum = (descriptor & 0x04) !== 0
28
+ const dictionaryFlag = descriptor & 0x03
29
+ const dictionaryBytes = dictionaryFlag === 3 ? 4 : dictionaryFlag
30
+ const contentSizeBytes = contentSizeFlag === 0
31
+ ? (singleSegment ? 1 : 0)
32
+ : 1 << contentSizeFlag
33
+ const remainingHeaderBytes = (singleSegment ? 0 : 1) + dictionaryBytes + contentSizeBytes
34
+ if (buffer.length - offset < remainingHeaderBytes) return { frames, tornStart: start }
35
+ offset += remainingHeaderBytes
36
+ for (;;) {
37
+ if (buffer.length - offset < 3) return { frames, tornStart: start }
38
+ const blockHeader = buffer.readUIntLE(offset, 3)
39
+ offset += 3
40
+ const lastBlock = (blockHeader & 1) !== 0
41
+ const blockType = (blockHeader >>> 1) & 0x03
42
+ const blockSize = blockHeader >>> 3
43
+ if (blockType === 0x03) {
44
+ throw new Error(`corrupt Zstandard session log: reserved block type at byte ${offset - 3}`)
45
+ }
46
+ const payloadBytes = blockType === 0x01 ? 1 : blockSize
47
+ if (buffer.length - offset < payloadBytes) return { frames, tornStart: start }
48
+ offset += payloadBytes
49
+ if (lastBlock) break
50
+ }
51
+ if (checksum) {
52
+ if (buffer.length - offset < 4) return { frames, tornStart: start }
53
+ offset += 4
54
+ }
55
+ frames.push({ start, end: offset })
56
+ }
57
+ return { frames }
58
+ }
59
+
60
+ function decodeSessionLog(buffer, maxOutputLength) {
61
+ const scan = scanZstdFrames(buffer)
62
+ if (scan.frames.length === 0) throw new Error('session log has no complete Zstandard frames')
63
+ if (scan.tornStart !== undefined) throw new Error('session log has an incomplete final Zstandard frame')
64
+ let remaining = maxOutputLength
65
+ return Buffer.concat(scan.frames.map(({ start, end }) => {
66
+ try {
67
+ if (remaining !== undefined && remaining <= 0) throw new Error('expanded session log exceeds compatibility limit')
68
+ const result = zstdDecompressSync(buffer.subarray(start, end), remaining === undefined ? {} : { maxOutputLength: remaining })
69
+ if (remaining !== undefined) remaining -= result.length
70
+ return result
71
+ } catch (error) {
72
+ throw new Error(`corrupt Zstandard session log: frame at byte ${start} failed validation`, { cause: error })
73
+ }
74
+ }))
75
+ }
76
+
77
+ function parseJsonl(plaintext) {
78
+ if (plaintext.length === 0 || plaintext[plaintext.length - 1] !== 0x0A) {
79
+ throw new Error('session log must end with a newline')
80
+ }
81
+ const text = fatalUtf8Decoder.decode(plaintext)
82
+ const lines = text.slice(0, -1).split('\n')
83
+ if (lines.length === 0 || lines.some(line => line.length === 0)) {
84
+ throw new Error('session log contains an empty JSONL record')
85
+ }
86
+ const records = lines.map((line, index) => {
87
+ try {
88
+ return JSON.parse(line)
89
+ } catch (error) {
90
+ throw new Error(`session log JSONL record ${index} is malformed`, { cause: error })
91
+ }
92
+ })
93
+ return { lines, records }
94
+ }
95
+
96
+ function encodeSessionLog(plaintext) {
97
+ const newline = plaintext.indexOf(0x0A)
98
+ if (newline < 0) throw new Error('session log has no header line')
99
+ const headerFrame = zstdCompressSync(plaintext.subarray(0, newline + 1), {
100
+ params: { [zlibConstants.ZSTD_c_checksumFlag]: 1 },
101
+ })
102
+ const body = plaintext.subarray(newline + 1)
103
+ if (body.length === 0) return headerFrame
104
+ const bodyFrame = zstdCompressSync(body, {
105
+ params: { [zlibConstants.ZSTD_c_checksumFlag]: 1 },
106
+ })
107
+ return Buffer.concat([headerFrame, bodyFrame])
108
+ }
109
+ function repairInformationalRecord(value) {
110
+ const record = typeof value === 'object' && value !== null && !Array.isArray(value) ? value : undefined
111
+ if (!INFORMATIONAL_TYPES.has(record?.type)) return value
112
+ if (Object.hasOwn(record, 'ignorable') && record.ignorable !== true) {
113
+ throw new Error('refusing to replace an invalid ignorable marker')
114
+ }
115
+ if (Object.hasOwn(record, 'surfaceOp') || Object.hasOwn(record, 'sourceEventSeqs')) {
116
+ throw new Error('refusing to mark a surface-changing event ignorable')
117
+ }
118
+ return record.ignorable === true ? value : { ...record, ignorable: true }
119
+ }
120
+
121
+ export { decodeSessionLog, parseJsonl, encodeSessionLog, repairInformationalRecord }