kiokuko-dsh 0.1.50 → 0.1.51

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.ja.md CHANGED
@@ -2,15 +2,17 @@
2
2
 
3
3
  [English](README.md) | 日本語 | [简体中文](README.zh-CN.md) | [한국어](README.ko.md)
4
4
 
5
- [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) に、プロジェクトの記憶・作業計画・検証支援を追加するプラグインです。
6
- OrcaReplay でモデル・ツールの動作を記録し、内容の確認と HTML 出力もできます。
5
+ [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) に、記憶・計画・検証・動作記録を追加するプラグインです。
7
6
 
7
+ ## 機能
8
8
 
9
- 新しい変更作業では、通常実行か役小角(enno-oduno)を選べます。役小角ではおすすめテンプレート、またはDSH設定済みモデルから役割ごとの構成を選択します。[モデル選択と接続上の制約](docs/model-selection.ja.md)
10
-
11
- `/deep-planning <問題>` は、四つの役割による読み取り専用の調査・分析・計画作成です。入力を保持し、一時停止・復旧に対応します。推定予算に達した場合も部分回答を返します。[操作・予算・復旧の仕様](docs/deep-planning.md)
12
-
13
- DeepSeek・Kimi・GLM・Qwen・HY/Hunyuan・MiMo・MiniMaxのAgentには、日本語を自然に整える同梱Skillを自動で渡します。[適用条件とモデル判定](docs/japanese-output.md)
9
+ - **実行方式** — 通常実行と役小角(enno-oduno)を選べます。[詳細](docs/model-selection.ja.md)
10
+ - **プロジェクト記憶** — 作業で得た知識を後のタスクで検索できます。[基本概念](docs/concepts.ja.md)
11
+ - **Deep Planning** — 四つの役割で読み取り専用の調査・計画を行います。[使い方](docs/deep-planning.md)
12
+ - **Continuity** — 既定では無効です。`continuity.mode: active` にすると、最近の実行記録を短くまとめてモデルへ渡します。[設定方法](docs/continuity.ja.md)
13
+ - **記憶学習** — 完了した作業から再利用できる episode・教訓候補を作ります。[設定](docs/memory-evolution.md)
14
+ - **OrcaReplay** — モデル・ツールの動作を記録し、HTML に出力できます。[設定とコマンド](docs/orca-recording.md)
15
+ - **日本語出力** — 対応モデルへ自然な日本語を書く同梱 Skill を渡します。[詳細](docs/japanese-output.md)
14
16
 
15
17
  ## 導入と使い方
16
18
 
@@ -27,17 +29,6 @@ pnpm dsh web
27
29
  起動後は普通に依頼を入力します。Kiokuko 専用の setup 操作は不要です。
28
30
  GitHub・ローカルからの導入は [プラグインガイド](docs/dsh-plugin.md) を参照してください。
29
31
 
30
- OrcaReplay の機能設定は自動導入され、**手動設定は不要**です。各チャットは確認なしで詳細ログを記録します。
31
- 記録すると、モデル応答やツール実行結果が作業プロジェクトの `.orca/runs/` に保存されます。判断はセッションごとに保持されるため、`/kioku-orca stop` したチャットは記録されないままです。毎回確認したい場合は `orca.askOnStart: true` を設定します。
32
-
33
- - `/kioku-orca start`: 手動で記録を開始、または停止後に再開します。そのチャットを停止していなければ実行不要です。過去の動作は記録されません。
34
- - `/kioku-orca status`: 記録状態・保存先・次の操作を短く表示します。診断用の詳細情報は `/kioku-orca status --json` で確認できます。
35
-
36
- `/kioku-orca stop` でログを確定後、`list` で run ID を確認し、`show <run ID>` で内容を表示、`export <run ID>` で HTML を出力できます(いずれも `/kioku-orca` に続けて入力)。
37
- 無効にする場合は `orca.enabled: false` を設定して再読み込みします。詳細は [記録設定とコマンド](docs/orca-recording.md) を参照してください。
38
-
39
- 終了した作業から episode と教訓候補を生成します。初期設定の `active` では、根拠が有効な候補を次のセッションの検索・自動注入に使います。候補生成だけにする場合は `observe`、停止する場合は `off` を指定します。状態は `/kioku-evolution status`、詳細は [記憶学習の設定・検証](docs/memory-evolution.md) を参照してください。
40
-
41
32
  ## 更新
42
33
 
43
34
  作業中のタスクを終えて DSH を停止してから更新します。npm 版の Kiokuko 本体の更新:
@@ -47,6 +38,17 @@ pnpm dsh plugin --profile web update kiokuko-dsh --latest
47
38
  pnpm dsh web
48
39
  ```
49
40
 
41
+ Kiokuko は更新頻度が高く、pnpm 11 では公開後24時間未満のバージョンを
42
+ [`minimumReleaseAge`](https://pnpm.io/settings/dependency-resolution#minimumreleaseage)
43
+ により既定で選びません。`update --latest` を実行しても旧版のままになる場合は、
44
+ `~/.dsh/profiles/web/pnpm-workspace.yaml`(`pnpm-lock.yaml` ではありません)の
45
+ `minimumReleaseAgeExclude` に次を追加し、更新コマンドを再実行します。
46
+
47
+ ```yaml
48
+ minimumReleaseAgeExclude:
49
+ - kiokuko-dsh
50
+ ```
51
+
50
52
  起動時に、日本語出力を含む全8 Skillと参照ファイルを `~/.agents/skills/` へ同期します。不足分を作成し、管理対象の旧版を更新します。非管理ファイルは上書きしません。他のエージェントではSkillカタログの再読み込みが必要です。
51
53
 
52
54
  起動時には、起動ディレクトリの `AGENTS.md` にある既存の Kiokuko 管理ブロックも更新し、その外側の指示は保持します。パッケージ更新後は DSH を再起動してください。別の作業ディレクトリや配備コピーの確認・修復は[セットアップ手順](docs/dsh-plugin.md#what-setup-updates-and-when)を参照してください。`kiokuko use` は DSH のセットアップコマンドではありません。
package/README.ko.md CHANGED
@@ -40,6 +40,17 @@ pnpm dsh plugin --profile web update kiokuko-dsh --latest
40
40
  pnpm dsh web
41
41
  ```
42
42
 
43
+ Kiokuko는 자주 업데이트되며, pnpm 11은 기본적으로
44
+ [`minimumReleaseAge`](https://pnpm.io/settings/dependency-resolution#minimumreleaseage)를
45
+ 적용해 공개 후 24시간이 지나지 않은 버전을 선택하지 않습니다. `update --latest`를 실행해도
46
+ 이전 버전이 유지되면 `~/.dsh/profiles/web/pnpm-workspace.yaml`(`pnpm-lock.yaml`이 아님)의
47
+ `minimumReleaseAgeExclude`에 다음 설정을 추가한 뒤 업데이트 명령을 다시 실행하세요.
48
+
49
+ ```yaml
50
+ minimumReleaseAgeExclude:
51
+ - kiokuko-dsh
52
+ ```
53
+
43
54
  시작 시 일본어 출력 Skill을 포함한 번들 Skill 8개와 참조 파일을 `~/.agents/skills/`에 동기화합니다. 누락된 파일을 만들고 관리 대상 복사본을 업데이트하며, 비관리 파일은 덮어쓰지 않습니다. 다른 에이전트에서는 Skill 카탈로그를 다시 로드해야 합니다.
44
55
 
45
56
  시작 시 시작 디렉터리의 `AGENTS.md`에 있는 기존 Kiokuko 관리 블록도 갱신하며, 블록 밖의 지침은 보존합니다. 패키지 업데이트 후 DSH를 다시 시작하세요. 다른 작업 디렉터리나 오래된 복사본의 확인 및 복구는 [설정 절차](docs/dsh-plugin.md#what-setup-updates-and-when)를 참고하세요. `kiokuko use`는 DSH 설정 명령이 아닙니다.
package/README.md CHANGED
@@ -2,16 +2,18 @@
2
2
  # Kiokuko(記憶庫) DeepSeek Harness Plugin
3
3
  [日本語](README.ja.md) | [简体中文](README.zh-CN.md) | [한국어](README.ko.md)
4
4
 
5
- Kiokuko adds project memory, planning, and verification support to
5
+ Kiokuko adds memory, planning, verification, and observability to
6
6
  [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness).
7
- OrcaReplay records model/tool activity for inspection and HTML export.
8
7
 
8
+ ## Features
9
9
 
10
- For new coding tasks, choose normal execution or 役小角(enno-oduno). Enno offers model templates and role assignments from configured DSH models. [Model selection and connection limits](docs/model-selection.md).
11
-
12
- Use `/deep-planning <problem>` for bounded, read-only investigation and planning with four agent roles. It preserves inputs, supports pause/recovery, and returns partial answers when its estimated budget is exhausted. [Commands, budgets and recovery](docs/deep-planning.md).
13
-
14
- DeepSeek, Kimi, GLM, Qwen, HY/Hunyuan, MiMo and MiniMax agents automatically receive the bundled Japanese writing Skill. [Application rules and model identification](docs/japanese-output.md).
10
+ - **Execution modes** Choose normal execution or 役小角(enno-oduno) for role-based planning and verification. [Details](docs/model-selection.md)
11
+ - **Project memory** — Retrieve useful project knowledge for later work. [Concepts](docs/concepts.md)
12
+ - **Deep planning** Run bounded, read-only investigation with four roles. [Usage](docs/deep-planning.md)
13
+ - **Continuity** — Disabled by default. Set `continuity.mode: active` to summarize recent execution evidence for the model. [Setup](docs/continuity.md)
14
+ - **Memory evolution** Turn completed work into reusable episode and lesson candidates. [Settings](docs/memory-evolution.md)
15
+ - **OrcaReplay** — Record model/tool activity and export it as HTML. [Settings and commands](docs/orca-recording.md)
16
+ - **Japanese output** — Give supported models a bundled Skill for natural Japanese. [Details](docs/japanese-output.md)
15
17
 
16
18
  ## Install and use
17
19
 
@@ -28,15 +30,6 @@ If you use a globally installed `dsh` CLI, omit `pnpm` from the commands.
28
30
  Enter your task normally; no Kiokuko setup command is needed.
29
31
  For GitHub/local installation, see the [plugin guide](docs/dsh-plugin.md).
30
32
 
31
- OrcaReplay is configured automatically; **no manual setup is required**. Every chat records detailed logs without asking.
32
- Recording saves model responses and tool results to `.orca/runs/` in the session workspace. A decision is remembered per session, so `/kioku-orca stop` keeps that chat unrecorded; set `orca.askOnStart: true` to ask at the start of each chat instead.
33
-
34
- - `/kioku-orca start`: start recording manually or resume after stopping. Not needed unless this chat was stopped earlier; past activity is not captured.
35
- - `/kioku-orca status`: briefly show the recording state, storage location, and next action. Use `/kioku-orca status --json` for diagnostic details.
36
-
37
- Use `/kioku-orca stop` to finalize the log, `list` to find its run ID, `show <run ID>` to inspect it, and `export <run ID>` to create HTML (all under `/kioku-orca`).
38
- To disable recording, set `orca.enabled: false` and reload. See [recording settings and commands](docs/orca-recording.md).
39
-
40
33
  ## Update
41
34
 
42
35
  Finish active tasks and stop DSH before updating. Update the npm-installed plugin:
@@ -46,6 +39,17 @@ pnpm dsh plugin --profile web update kiokuko-dsh --latest
46
39
  pnpm dsh web
47
40
  ```
48
41
 
42
+ Kiokuko releases frequently, and pnpm 11 applies a 24-hour
43
+ [`minimumReleaseAge`](https://pnpm.io/settings/dependency-resolution#minimumreleaseage)
44
+ by default. If `update --latest` keeps the previous version, add Kiokuko to
45
+ `minimumReleaseAgeExclude` in `~/.dsh/profiles/web/pnpm-workspace.yaml` (not
46
+ `pnpm-lock.yaml`), then run the update command again:
47
+
48
+ ```yaml
49
+ minimumReleaseAgeExclude:
50
+ - kiokuko-dsh
51
+ ```
52
+
49
53
  At startup, all eight bundled Skills (including Japanese output) and their references are synchronized to `~/.agents/skills/`. Missing files are created and managed copies are updated; unmanaged files are preserved. Other agents must reload their Skill catalog.
50
54
 
51
55
  Startup also refreshes an existing Kiokuko managed block in the startup directory’s `AGENTS.md`, preserving your other instructions. Restart DSH after updating the package. See [setup and verification](docs/dsh-plugin.md#what-setup-updates-and-when) for another workspace or stale copies; `kiokuko use` is not the DSH setup command.
package/README.zh-CN.md CHANGED
@@ -40,6 +40,17 @@ pnpm dsh plugin --profile web update kiokuko-dsh --latest
40
40
  pnpm dsh web
41
41
  ```
42
42
 
43
+ Kiokuko 更新频繁,而 pnpm 11 默认通过
44
+ [`minimumReleaseAge`](https://pnpm.io/settings/dependency-resolution#minimumreleaseage)
45
+ 延迟选择发布不足24小时的版本。如果执行 `update --latest` 后仍停留在旧版本,请在
46
+ `~/.dsh/profiles/web/pnpm-workspace.yaml`(不是 `pnpm-lock.yaml`)的
47
+ `minimumReleaseAgeExclude` 中添加以下设置,然后重新执行更新命令:
48
+
49
+ ```yaml
50
+ minimumReleaseAgeExclude:
51
+ - kiokuko-dsh
52
+ ```
53
+
43
54
  启动时会将包括日语输出在内的全部8个内置 Skill 及其引用文件同步到 `~/.agents/skills/`,创建缺失文件并更新受管理的副本,不覆盖非受管理文件。其他代理需要重新加载 Skill 目录。
44
55
 
45
56
  启动时也会更新启动目录中 `AGENTS.md` 的现有 Kiokuko 管理块,保留块外的指令。更新包后请重启 DSH。其他工作目录或旧副本的检查与修复请参阅[设置步骤](docs/dsh-plugin.md#what-setup-updates-and-when)。`kiokuko use` 不是 DSH 的设置命令。
package/dist/client.cjs CHANGED
@@ -390,7 +390,10 @@ window.__ModuleLoader__.load({
390
390
  const question = pending.questions[0];
391
391
  const inputKind = questionInputKind(question);
392
392
  const mac = /Mac|iPhone|iPad|iPod/u.test(globalThis.navigator?.platform ?? '');
393
- const shortcutModifier = mac ? 'Cmd' : 'Ctrl';
393
+ const userAgent = globalThis.navigator?.userAgent ?? '';
394
+ const safari = mac && /Safari\//u.test(userAgent) && !/(?:Chrome|Chromium|CriOS|Edg|OPR)\//u.test(userAgent);
395
+ const controlShortcut = !mac || safari;
396
+ const shortcutModifier = controlShortcut ? 'Ctrl' : 'Cmd';
394
397
  const [draft, setDraft] = useState(() => intakeDrafts.get(pending) ?? { selected: null, custom: '' });
395
398
  const [busy, setBusy] = useState(false);
396
399
  const [error, setError] = useState('');
@@ -453,7 +456,7 @@ window.__ModuleLoader__.load({
453
456
  const selectShortcut = (event) => {
454
457
  if (busy || inFlight.current || event.repeat || event.isComposing || event.keyCode === 229
455
458
  || event.nativeEvent?.isComposing || event.nativeEvent?.keyCode === 229 || event.altKey || event.shiftKey
456
- || !(mac ? event.metaKey && !event.ctrlKey : event.ctrlKey && !event.metaKey))
459
+ || !(controlShortcut ? event.ctrlKey && !event.metaKey : event.metaKey && !event.ctrlKey))
457
460
  return false;
458
461
  const digit = /^(?:Digit|Numpad)([1-9])$/u.exec(event.code ?? '')?.[1] ?? event.key;
459
462
  if (!/^[1-9]$/u.test(digit) || Number(digit) > question.options.length)
@@ -477,7 +480,7 @@ window.__ModuleLoader__.load({
477
480
  };
478
481
  owner.addEventListener('keydown', listener, true);
479
482
  return () => owner.removeEventListener('keydown', listener, true);
480
- }, [pending, busy, mac]);
483
+ }, [pending, busy, controlShortcut]);
481
484
  const keyDown = (event) => {
482
485
  if (selectShortcut(event))
483
486
  return;
@@ -522,7 +525,7 @@ window.__ModuleLoader__.load({
522
525
  key: option.label, type: 'button', className: 'kiokuko-intake-option', disabled: busy,
523
526
  ref: (element) => { optionElements.current[index] = element; },
524
527
  'aria-pressed': draft.selected === index,
525
- ...(index < 9 ? { 'aria-keyshortcuts': `${question.options.length <= 9 ? `${index + 1} ` : ''}${mac ? 'Meta' : 'Control'}+${index + 1}` } : {}),
528
+ ...(index < 9 ? { 'aria-keyshortcuts': `${question.options.length <= 9 ? `${index + 1} ` : ''}${controlShortcut ? 'Control' : 'Meta'}+${index + 1}` } : {}),
526
529
  onClick: () => update({ selected: index, custom: '' }),
527
530
  onKeyDown: (event) => {
528
531
  if (event.key !== 'Enter' || event.repeat || event.shiftKey || event.ctrlKey || event.altKey || event.metaKey || event.nativeEvent?.isComposing || event.nativeEvent?.keyCode === 229 || (intakeDrafts.get(pending) ?? draft).selected !== index)
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,UAAU,wBAAwB;IAChC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;QAAE,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;KAAE,CAAC,CAAA;IAC7G,QAAQ,EAAE;QAAE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CACxC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,wBAAwB,CAAA;CAC3C;AAYD,UAAU,gBAAgB;IACxB,QAAQ,CAAC,cAAc,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE,CAAA;IACxF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAA;KAC3F,CAAA;IACD,QAAQ,CAAC,KAAK,EAAE;QACd,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,GAAG,OAAO,CAAA;QACtD,QAAQ,CACN,UAAU,EAAE;YACV,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;YACrB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;YACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;YACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;YAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAA;YAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;YACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAChD,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,GACrD,OAAO,CAAA;KACX,CAAA;IACD,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;IAChF,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAA;CACtI;AA0ED,+EAA+E;AAC/E,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,GAAG,WAAW,CAAC,CAqBjH;AAuHD,eAAO,MAAM,MAAM,gDAAiD,CAAA;AAsVpE,mEAAmE;AACnE,wBAAgB,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAgCjD"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,UAAU,wBAAwB;IAChC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;QAAE,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;KAAE,CAAC,CAAA;IAC7G,QAAQ,EAAE;QAAE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CACxC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,wBAAwB,CAAA;CAC3C;AAYD,UAAU,gBAAgB;IACxB,QAAQ,CAAC,cAAc,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE,CAAA;IACxF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAA;KAC3F,CAAA;IACD,QAAQ,CAAC,KAAK,EAAE;QACd,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,GAAG,OAAO,CAAA;QACtD,QAAQ,CACN,UAAU,EAAE;YACV,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;YACrB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;YACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;YACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;YAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAA;YAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;YACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAChD,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,GACrD,OAAO,CAAA;KACX,CAAA;IACD,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;IAChF,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAA;CACtI;AA0ED,+EAA+E;AAC/E,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,GAAG,WAAW,CAAC,CAqBjH;AAuHD,eAAO,MAAM,MAAM,gDAAiD,CAAA;AAyVpE,mEAAmE;AACnE,wBAAgB,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAgCjD"}
@@ -0,0 +1,31 @@
1
+ # Continuity
2
+
3
+ ## 機能
4
+
5
+ 最近の実行記録を短くまとめ、`kiokuko:execution` に表示します。
6
+
7
+ - `off`: 無効(既定値)
8
+ - `shadow`: 要約を作るが、モデルへの入力は変えない
9
+ - `active`: 最近の証拠表示を要約に置き換える
10
+
11
+ ## メリット
12
+
13
+ 何を読んだか、次に何を確認すべきかをモデルが把握しやすくなります。
14
+ 要約のサイズと件数には上限があるため、コンテキストの増加も抑えられます。
15
+
16
+ ## 設定方法
17
+
18
+ `~/.dsh/profiles/web/cordis.patch.yml` に次を追加します。
19
+
20
+ ```yaml
21
+ - id: kiokuko-dsh
22
+ config:
23
+ continuity:
24
+ mode: active
25
+ maxSupplementBytes: 4096
26
+ maxItems: 12
27
+ ```
28
+
29
+ 同じ行にほかの `config` がある場合は、その設定を残したまま `continuity` を追加してください。
30
+ `web` プロファイルでは自動で反映されます。設定内容は
31
+ `dsh --profile web --dump-config` で確認できます。
@@ -1,193 +1,32 @@
1
- # Continuity projection
1
+ # Continuity
2
2
 
3
- Continuity is an opt-in, disposable view of existing execution records. It does
4
- not save model hidden state, train a model, add memory tables, issue model
5
- requests, or advance a run. Deep planning keeps its existing prompts and state.
3
+ ## What it does
6
4
 
7
- ## Configuration
5
+ Continuity adds a short summary of recent execution evidence to
6
+ `kiokuko:execution`.
8
7
 
9
- Set the Kiokuko plugin configuration and reload it through the existing DSH
10
- plugin lifecycle:
8
+ - `off`: disabled (default)
9
+ - `shadow`: builds the summary without changing the model input
10
+ - `active`: replaces the recent-evidence section with the summary
11
11
 
12
- ```yaml
13
- continuity:
14
- mode: off # off | shadow | active
15
- maxSupplementBytes: 4096 # integer, 512..8192 UTF-8 bytes
16
- maxItems: 12 # integer, 1..24
17
- efficiency:
18
- observe: true # optional bounded in-memory numeric observations
19
- ```
20
-
21
- `off` leaves the existing evidence presentation in place and does no continuity
22
- source loading or view construction. `shadow` constructs the proposed display
23
- but sends the same text as `off`. `active` replaces the recent-evidence portion
24
- of `kiokuko:execution`; it preserves the existing frame, constraints, exploration
25
- notice, terminal notice and formal Enno directive. It does not copy memory or
26
- the directive's criteria and next action into another permanent snapshot.
27
-
28
- Whole items are selected within the configured byte and item limits; at most
29
- three next-check items can be displayed. The footer always states coverage and
30
- omitted item count. The byte budget applies to the supplement, not the original
31
- request, mandatory conditions or directive. `complete` means that the selected
32
- adapter fields were available, not that the task succeeded or a whole document
33
- was read. The evidence window remains bounded to the existing 32 records; when
34
- that window is full, coverage is conservatively `partial` even if all displayed
35
- items fit. Its footer cannot count unknown records outside the loaded window.
36
-
37
- ## Ownership and delivery
38
-
39
- The host resolves the native session/run binding, updates intake and the
40
- execution frame, and supplies committed evidence. The adapter and renderer are
41
- deterministic functions with no I/O. Source digests include the owner, frame
42
- content and generation; Enno additionally includes contract/mutation revision,
43
- route, directive and next action. A separate body digest describes display
44
- content. Neither digest is proof of correctness or authorization.
45
-
46
- The normal adapter ranks incomplete acquisition/presentation first, exact
47
- explicit read targets second, and recent observations next. All acquisition
48
- records are historical. A previous `presentation: full` is never asserted to be
49
- full in the current request. The final stream seam observes actual native tool
50
- results; the short supplement itself is not a full presentation of that result.
51
-
52
- The Enno adapter accepts only the bound run, native session, workspace, contract,
53
- route, role and current WorkUnit. It includes reports for that WorkUnit and its
54
- declared dependencies, explicitly labeled `model-report / unknown`. It does not
55
- promote `outcome: completed` into test success. Final verifier records remain
56
- `unknown` with respect to current repository freshness. The existing Enno service
57
- still owns the freshness and authorization checks. Raw verifier output is not
58
- copied into the supplement.
59
-
60
- The current integration needs one additional existing-service Enno snapshot read
61
- per nonterminal, unpaused model request in `shadow` or `active`. It uses the
62
- service's existing repository/verification checks; it does not run verifiers.
63
- This cost is not claimed as an optimization. Normal execution adds no DB read.
64
- Source mismatch or optional rendering failure degrades the supplement without
65
- changing the existing directive, tool outcome or authorization checks.
66
-
67
- Both native snapshot projection paths use retained surface events. An old
68
- snapshot remaining only in append-only history cannot suppress re-delivery or
69
- revive another plugin's compacted section. The current assembly's other sections
70
- are preserved. Without a direct surface API, the existing append/replace replay
71
- helper reconstructs retained events; invalid history cannot establish delivery.
72
- An uncommitted projection attempt is never evidence of delivery. No extra
73
- delivery cache or native session-event type is introduced.
74
-
75
- `efficiency.observe` exposes bounded `snapshot().continuity` entries containing
76
- only mode, bytes, item/omission counts, coverage and copies found in the final
77
- request. No source text, paths, credentials or source digest is recorded there.
78
- Observer errors leave `next()` and the original stream outcome unchanged.
79
-
80
- ## Disable and recover
81
-
82
- Set `continuity.mode: off` and reload the plugin. The next request rebuilds the
83
- existing execution section, replacing the active supplement. The original
84
- conversation, conditions, evidence and Enno state remain. Resume uses the
85
- existing run/session route and lease rules; it neither replays tools nor moves
86
- state to a different run. No schema migration or rollback migration is needed.
87
- No unsupported new cross-session resume capability is added.
88
-
89
- ## Verification and measurements
12
+ ## Benefits
90
13
 
91
- The baseline is commit `4094b061c6f713c6cde550b4b4cebe4bd8d715dd` (`0.1.49`).
92
- The starting local `0.1.14` checkout lacked the required modules; it was updated
93
- to the plan's baseline before implementation. The lockfile hashes and one
94
- scripted native lifecycle per mode are recorded in
95
- [`baseline.json`](../tests/fixtures/continuity/baseline.json).
14
+ The model can quickly see what was already read and what still needs checking.
15
+ The summary is limited by size and item count, so context growth stays bounded.
96
16
 
97
- Before the repair, the compaction counterexample returned zero snapshots where
98
- one current snapshot was required. The existing focused baseline had 16 passing
99
- tests. The added tests inspect the real DSH `0.1.5-rc.1` final model request after
100
- native surface replacement and same-run plugin reload, plus observer failures,
101
- late refreshes, mode changes, hostile text, source ownership, byte limits,
102
- dependency reports and verifier labels.
17
+ ## Setup
103
18
 
104
- All three native runs made 10 scripted model requests and five reads. The
105
- `shadow` request byte array matched `off` exactly. `active` increased bytes;
106
- this is not evidence of improved reasoning, speed or token efficiency. Mock
107
- usage is not real model usage. SQL counts, DB timings, expansion counts and
108
- provider tokens were not measured and remain `null`. PR-4 retrieval caching is
109
- therefore not implemented. No adoption or default-enable conclusion is drawn.
19
+ Add the following to `~/.dsh/profiles/web/cordis.patch.yml`:
110
20
 
111
- ```sh
112
- npm run typecheck
113
- npm run test:continuity
114
- # Include the real native-loop cases; missing runtime then fails instead of skipping.
115
- KIOKUKO_DSH_PACKAGE_ROOT=/path/to/pinned-dsh/node_modules \
116
- KIOKUKO_REQUIRE_DSH_NATIVE=1 npm run test:continuity
117
- ```
118
-
119
- The runtime fixture is `tests/fixtures/dsh-runtime/package-lock.json`, as in CI.
120
- Verification used Node `v26.7.0`, npm `11.19.0` and DSH `0.1.5-rc.1` on macOS.
121
- Packaged install, Web bundle load, reload and uninstall were exercised with
122
- the existing CLI lifecycle checks in an isolated profile and home directory.
123
-
124
- Verification on 2026-09-14:
125
-
126
- | Check | Result |
127
- | --- | --- |
128
- | Typecheck, build, publint, pack closure/import checks | Passed |
129
- | Full suite with required pinned native runtime | 688 passed; one CLI-path-dependent test initially skipped |
130
- | Initially skipped bundle-install test with explicit `DSH_BIN` | Passed, no skip |
131
- | Final continuity suite (including real native requests) | 23 passed, no skips |
132
- | Real Enno native resume/verification/completion with active continuity | Passed |
133
- | Sample database initialization and resume | Passed |
134
- | Evolution regression suite | 33 passed |
135
- | Efficiency and Akinator synthetic evaluations | Completed; not model capability evidence |
136
- | Packaged CLI install/Web/reload/uninstall | Passed using the existing lifecycle portion separately from native tests |
137
- | Configured evaluation runner | Mock-fetch budget, privacy and output-reuse tests passed; no real provider used |
138
-
139
- Contracts were reviewed with `code.boundary.v1`, `code.protocol.v1` and
140
- `code.verification.v1`; the evaluation I/O also used `code.effects.v1`.
141
- The flow checked was config → native host → committed sources → execution
142
- snapshot → final request → numeric observation, including packaged activation
143
- and reload. No retrieved memory claims were supplied for this implementation.
144
-
145
- ## Explicit model evaluation
146
-
147
- ```sh
148
- npm run test:evaluation:continuity
149
- # No configuration: unmeasured; no network or model calls.
150
- npm run test:evaluation:continuity -- \
151
- --config continuity-evaluation.local.json --output continuity-evaluation-results
152
- ```
153
-
154
- Run these commands from a source checkout. The runner evaluates six fixed **context recovery probes**, not full repository
155
- tasks or a new autonomous loop. The fixture digest and exact JSON grading rules
156
- are fixed in `tests/fixtures/continuity/manifest.json` and `scenarios.json`.
157
- Each trial gets a disposable workspace, fixed input, model/settings and budget;
158
- it never opens the user's DB or sessions. A/B order is randomized by seed.
159
- Pairing and bootstrap intervals use scenarios, not individual turns. Small
160
- sample intervals do not establish the plan's end-to-end adoption criteria.
161
- The plan's larger, real-agent pilot remains a separate evaluation.
162
-
163
- Example configuration for a compatible chat-completions endpoint:
164
-
165
- ```json
166
- {
167
- "fixture": "continuity-v1",
168
- "baseUrl": "http://127.0.0.1:8080/v1",
169
- "model": "your-model",
170
- "revision": "your-pinned-revision",
171
- "temperature": 0,
172
- "contextWindow": 32768,
173
- "maxOutputTokens": 256,
174
- "repetitions": 2,
175
- "seed": 42,
176
- "maxRequests": 24,
177
- "maxTokens": 792576,
178
- "maxDurationMs": 600000,
179
- "allowRemote": false
180
- }
21
+ ```yaml
22
+ - id: kiokuko-dsh
23
+ config:
24
+ continuity:
25
+ mode: active
26
+ maxSupplementBytes: 4096
27
+ maxItems: 12
181
28
  ```
182
29
 
183
- An optional `apiKeyEnv` names an environment variable; never put credentials in
184
- the file or URL. Optional `reasoningEffort` is sent explicitly. Remote endpoints
185
- require `allowRemote: true`; redirects are rejected. Each call reserves the
186
- declared context window plus maximum output against the total token budget.
187
- Reservations are conservative limits, not reported usage. Missing usage stays
188
- `null`; no retry is issued for uncertain failures. Cache state is uncontrolled
189
- and the declared immutable model revision is not independently verified.
190
- Existing reports are rejected before making calls. Reports contain bounded
191
- measurements and scores, not prompts, response text or authentication data.
192
-
193
- Real-model results are currently **unmeasured**. `off` remains the default.
30
+ If the row already has other `config` values, keep them and add `continuity`
31
+ alongside them. The `web` profile reloads the change automatically. Check the
32
+ loaded configuration with `dsh --profile web --dump-config`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiokuko-dsh",
3
- "version": "0.1.50",
3
+ "version": "0.1.51",
4
4
  "description": "Kiokuko plugin for DeepSeek Harness",
5
5
  "type": "module",
6
6
  "license": "MIT",