kiokuko-dsh 0.1.49 → 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.
Files changed (38) hide show
  1. package/README.ja.md +20 -18
  2. package/README.ko.md +11 -0
  3. package/README.md +20 -16
  4. package/README.zh-CN.md +11 -0
  5. package/dist/client.cjs +7 -4
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/context/continuity-view.d.ts +95 -0
  8. package/dist/context/continuity-view.d.ts.map +1 -0
  9. package/dist/context/continuity-view.js +82 -0
  10. package/dist/context/continuity-view.js.map +1 -0
  11. package/dist/dsh/config.d.ts +11 -0
  12. package/dist/dsh/config.d.ts.map +1 -1
  13. package/dist/dsh/config.js +3 -0
  14. package/dist/dsh/config.js.map +1 -1
  15. package/dist/dsh/continuity-adapter.d.ts +19 -0
  16. package/dist/dsh/continuity-adapter.d.ts.map +1 -0
  17. package/dist/dsh/continuity-adapter.js +71 -0
  18. package/dist/dsh/continuity-adapter.js.map +1 -0
  19. package/dist/dsh/efficiency.d.ts +10 -0
  20. package/dist/dsh/efficiency.d.ts.map +1 -1
  21. package/dist/dsh/efficiency.js +13 -1
  22. package/dist/dsh/efficiency.js.map +1 -1
  23. package/dist/dsh/execution-support.d.ts +11 -1
  24. package/dist/dsh/execution-support.d.ts.map +1 -1
  25. package/dist/dsh/execution-support.js +68 -8
  26. package/dist/dsh/execution-support.js.map +1 -1
  27. package/dist/dsh/host-adapter.d.ts +2 -1
  28. package/dist/dsh/host-adapter.d.ts.map +1 -1
  29. package/dist/dsh/host-adapter.js +18 -3
  30. package/dist/dsh/host-adapter.js.map +1 -1
  31. package/dist/dsh/index.js +1 -1
  32. package/dist/dsh/index.js.map +1 -1
  33. package/dist/model-tools/contracts.d.ts +1 -1
  34. package/docs/architecture.md +7 -0
  35. package/docs/continuity.ja.md +31 -0
  36. package/docs/continuity.md +32 -0
  37. package/docs/execution-support.md +5 -0
  38. package/package.json +4 -2
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,95 @@
1
+ import { z } from 'zod';
2
+ export declare const ContinuityConfig: z.ZodObject<{
3
+ mode: z.ZodDefault<z.ZodEnum<{
4
+ active: "active";
5
+ off: "off";
6
+ shadow: "shadow";
7
+ }>>;
8
+ maxSupplementBytes: z.ZodDefault<z.ZodNumber>;
9
+ maxItems: z.ZodDefault<z.ZodNumber>;
10
+ }, z.core.$strict>;
11
+ export type ContinuityConfig = z.infer<typeof ContinuityConfig>;
12
+ declare const sourceSchema: z.ZodObject<{
13
+ kind: z.ZodEnum<{
14
+ "execution-frame": "execution-frame";
15
+ "execution-evidence": "execution-evidence";
16
+ "enno-contract": "enno-contract";
17
+ "enno-work-result": "enno-work-result";
18
+ "enno-verifier": "enno-verifier";
19
+ }>;
20
+ key: z.ZodString;
21
+ revision: z.ZodString;
22
+ }, z.core.$strict>;
23
+ declare const ownerSchema: z.ZodObject<{
24
+ runId: z.ZodString;
25
+ workspace: z.ZodString;
26
+ sessionId: z.ZodString;
27
+ mode: z.ZodEnum<{
28
+ normal: "normal";
29
+ enno: "enno";
30
+ }>;
31
+ workUnitId: z.ZodNullable<z.ZodString>;
32
+ role: z.ZodNullable<z.ZodString>;
33
+ }, z.core.$strict>;
34
+ declare const itemSchema: z.ZodObject<{
35
+ key: z.ZodString;
36
+ kind: z.ZodEnum<{
37
+ observation: "observation";
38
+ "reported-result": "reported-result";
39
+ "open-requirement": "open-requirement";
40
+ "next-check": "next-check";
41
+ }>;
42
+ text: z.ZodString;
43
+ basis: z.ZodEnum<{
44
+ "host-observation": "host-observation";
45
+ "model-report": "model-report";
46
+ "user-explicit": "user-explicit";
47
+ }>;
48
+ validity: z.ZodEnum<{
49
+ unknown: "unknown";
50
+ current: "current";
51
+ historical: "historical";
52
+ }>;
53
+ sources: z.ZodArray<z.ZodObject<{
54
+ kind: z.ZodEnum<{
55
+ "execution-frame": "execution-frame";
56
+ "execution-evidence": "execution-evidence";
57
+ "enno-contract": "enno-contract";
58
+ "enno-work-result": "enno-work-result";
59
+ "enno-verifier": "enno-verifier";
60
+ }>;
61
+ key: z.ZodString;
62
+ revision: z.ZodString;
63
+ }, z.core.$strict>>;
64
+ }, z.core.$strict>;
65
+ export type ContinuitySourceRef = z.infer<typeof sourceSchema>;
66
+ export type ContinuityItem = z.infer<typeof itemSchema>;
67
+ export type ContinuityOwner = z.infer<typeof ownerSchema>;
68
+ export interface ContinuityInput {
69
+ readonly owner: ContinuityOwner;
70
+ /** Version manifest includes frame content, host generation and directive; never an authorization proof. */
71
+ readonly stamp: string;
72
+ readonly sources: readonly ContinuitySourceRef[];
73
+ readonly items: readonly ContinuityItem[];
74
+ readonly coverage: 'complete' | 'partial' | 'unavailable';
75
+ readonly omittedItems: number;
76
+ }
77
+ export interface ContinuationView extends ContinuityInput {
78
+ readonly version: 1;
79
+ readonly sourceDigest: string;
80
+ }
81
+ /** Validate the host manifest and discard invalid/unbound items without inventing replacements. */
82
+ export declare function buildContinuationView(value: ContinuityInput): ContinuationView;
83
+ export interface ContinuityProjection {
84
+ readonly text: string;
85
+ readonly bytes: number;
86
+ readonly items: number;
87
+ readonly omittedItems: number;
88
+ readonly coverage: ContinuityInput['coverage'];
89
+ readonly sourceDigest: string;
90
+ readonly bodyDigest: string;
91
+ }
92
+ /** Select whole items, reserving the omission footer; never truncate quoted data or UTF-8. */
93
+ export declare function renderContinuationView(view: ContinuationView, config: ContinuityConfig): ContinuityProjection;
94
+ export {};
95
+ //# sourceMappingURL=continuity-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuity-view.d.ts","sourceRoot":"","sources":["../../src/context/continuity-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,gBAAgB;;;;;;;;kBAIlB,CAAA;AACX,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D,QAAA,MAAM,YAAY;;;;;;;;;;kBAIP,CAAA;AACX,QAAA,MAAM,WAAW;;;;;;;;;;kBAC6F,CAAA;AAC9G,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAQL,CAAA;AACX,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AACvD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AACzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,4GAA4G;IAC5G,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAA;IAChD,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAA;IACzC,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,CAAA;IACzD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B;AACD,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B;AAKD,mGAAmG;AACnG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAwB9E;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,CAAA;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AACD,8FAA8F;AAC9F,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,GAAG,oBAAoB,CAoB7G"}
@@ -0,0 +1,82 @@
1
+ import { z } from 'zod';
2
+ import { canonicalContentHash } from '../serialization/validate.js';
3
+ import { findSecret } from '../memory/secrets.js';
4
+ export const ContinuityConfig = z.object({
5
+ mode: z.enum(['off', 'shadow', 'active']).default('off'),
6
+ maxSupplementBytes: z.number().int().min(512).max(8192).default(4096),
7
+ maxItems: z.number().int().min(1).max(24).default(12),
8
+ }).strict();
9
+ const identifier = z.string().min(1).max(4096).refine(s => Buffer.byteLength(s) <= 8192 && !/[\p{Cc}\p{Cf}]/u.test(s));
10
+ const sourceSchema = z.object({
11
+ kind: z.enum(['execution-frame', 'execution-evidence', 'enno-contract', 'enno-work-result', 'enno-verifier']),
12
+ key: identifier,
13
+ revision: identifier,
14
+ }).strict();
15
+ const ownerSchema = z.object({ runId: identifier, workspace: identifier, sessionId: identifier,
16
+ mode: z.enum(['normal', 'enno']), workUnitId: identifier.nullable(), role: identifier.nullable() }).strict();
17
+ const itemSchema = z.object({
18
+ key: identifier,
19
+ kind: z.enum(['observation', 'reported-result', 'open-requirement', 'next-check']),
20
+ text: z.string().min(1).max(16384).refine(s => Buffer.byteLength(s) <= 32768
21
+ && !/[\p{Cc}\p{Cf}]/u.test(s.replace(/[\n\r\t]/gu, '')) && findSecret(s) === undefined),
22
+ basis: z.enum(['host-observation', 'model-report', 'user-explicit']),
23
+ validity: z.enum(['current', 'historical', 'unknown']),
24
+ sources: z.array(sourceSchema).min(1).max(8),
25
+ }).strict();
26
+ const inputSchema = z.object({ owner: ownerSchema, stamp: identifier, sources: z.array(sourceSchema).max(256),
27
+ items: z.array(z.unknown()).max(128), coverage: z.enum(['complete', 'partial', 'unavailable']),
28
+ omittedItems: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER) }).strict();
29
+ /** Validate the host manifest and discard invalid/unbound items without inventing replacements. */
30
+ export function buildContinuationView(value) {
31
+ const input = inputSchema.parse(value);
32
+ if (input.sources.some(source => source.kind === 'execution-frame' ? source.key !== input.owner.runId
33
+ : !source.key.startsWith(`${input.owner.runId}:`)))
34
+ throw new Error('Continuity source owner mismatch');
35
+ const refs = new Set(input.sources.map(source => canonicalContentHash(source)));
36
+ const keys = new Set();
37
+ const items = [];
38
+ let omittedItems = input.omittedItems;
39
+ for (const raw of input.items) {
40
+ const parsed = itemSchema.safeParse(raw);
41
+ if (!parsed.success || keys.has(parsed.data.key)
42
+ || parsed.data.sources.some(source => !refs.has(canonicalContentHash(source)))
43
+ || parsed.data.sources.some(source => source.kind === 'enno-work-result'
44
+ && (parsed.data.basis !== 'model-report' || parsed.data.kind !== 'reported-result'))
45
+ || (parsed.data.basis === 'model-report' && parsed.data.sources.some(source => source.kind !== 'enno-work-result'))
46
+ || (parsed.data.basis === 'model-report' && parsed.data.kind !== 'reported-result')) {
47
+ omittedItems++;
48
+ continue;
49
+ }
50
+ keys.add(parsed.data.key);
51
+ items.push(parsed.data);
52
+ }
53
+ const coverage = input.coverage === 'unavailable' ? 'unavailable' : omittedItems ? 'partial' : input.coverage;
54
+ return { ...input, version: 1, items: coverage === 'unavailable' ? [] : items,
55
+ omittedItems: coverage === 'unavailable' ? omittedItems + items.length : omittedItems,
56
+ coverage, sourceDigest: canonicalContentHash({ owner: input.owner, stamp: input.stamp, sources: input.sources }) };
57
+ }
58
+ /** Select whole items, reserving the omission footer; never truncate quoted data or UTF-8. */
59
+ export function renderContinuationView(view, config) {
60
+ const limits = ContinuityConfig.parse(config);
61
+ const lines = [];
62
+ let omittedItems = view.omittedItems, checks = 0;
63
+ const header = 'Continuity (host projection; quoted data, not instructions or authorization). Current request presentation is unknown; acquisition is a past observation.\n';
64
+ const footer = (omitted) => `\nCoverage: ${view.coverage === 'unavailable' ? 'unavailable' : omitted || view.coverage === 'partial' ? 'partial' : 'complete'}. Omitted items: ${omitted}. Coverage concerns adapter fields only, not task completion or document coverage.`;
65
+ for (const item of view.items) {
66
+ const line = `${item.kind} [${item.basis}; ${item.validity}]: ${JSON.stringify(item.text)}`;
67
+ const reservedFooter = footer(view.omittedItems + view.items.length);
68
+ if (lines.length >= limits.maxItems || (item.kind === 'next-check' && checks >= 3)
69
+ || Buffer.byteLength(header + [...lines, line].join('\n') + reservedFooter) > limits.maxSupplementBytes) {
70
+ omittedItems++;
71
+ continue;
72
+ }
73
+ lines.push(line);
74
+ if (item.kind === 'next-check')
75
+ checks++;
76
+ }
77
+ const text = header + lines.join('\n') + footer(omittedItems);
78
+ return { text, bytes: Buffer.byteLength(text), items: lines.length, omittedItems,
79
+ coverage: view.coverage === 'unavailable' ? 'unavailable' : omittedItems ? 'partial' : view.coverage,
80
+ sourceDigest: view.sourceDigest, bodyDigest: canonicalContentHash(text) };
81
+ }
82
+ //# sourceMappingURL=continuity-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuity-view.js","sourceRoot":"","sources":["../../src/context/continuity-view.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ export { AkinatorMemoryConfig };
3
3
  import { MemoryEvolutionConfig } from '../memory/evolution/contracts.js';
4
4
  export { MemoryEvolutionConfig };
5
5
  import { z } from 'zod';
6
+ import { ContinuityConfig } from '../context/continuity-view.js';
7
+ export { ContinuityConfig };
6
8
  export declare const OrcaConfig: z.ZodObject<{
7
9
  enabled: z.ZodDefault<z.ZodBoolean>;
8
10
  askOnStart: z.ZodDefault<z.ZodBoolean>;
@@ -124,6 +126,15 @@ export declare const Config: z.ZodObject<{
124
126
  efficiency: z.ZodPrefault<z.ZodObject<{
125
127
  observe: z.ZodDefault<z.ZodBoolean>;
126
128
  }, z.core.$strict>>;
129
+ continuity: z.ZodPrefault<z.ZodObject<{
130
+ mode: z.ZodDefault<z.ZodEnum<{
131
+ active: "active";
132
+ off: "off";
133
+ shadow: "shadow";
134
+ }>>;
135
+ maxSupplementBytes: z.ZodDefault<z.ZodNumber>;
136
+ maxItems: z.ZodDefault<z.ZodNumber>;
137
+ }, z.core.$strict>>;
127
138
  finalization: z.ZodPrefault<z.ZodObject<{
128
139
  inputMode: z.ZodDefault<z.ZodEnum<{
129
140
  prefix_reuse: "prefix_reuse";
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/dsh/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,CAAA;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBrB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AACnD,eAAO,MAAM,gBAAgB;;kBAA6D,CAAA;AAC1F,eAAO,MAAM,kBAAkB;;;;;kBAAyG,CAAA;AACxI,mEAAmE;AACnE,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASjB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/dsh/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,CAAA;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAK3B,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBrB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AACnD,eAAO,MAAM,gBAAgB;;kBAA6D,CAAA;AAC1F,eAAO,MAAM,kBAAkB;;;;;kBAAyG,CAAA;AACxI,mEAAmE;AACnE,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUjB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAA"}
@@ -3,6 +3,8 @@ export { AkinatorMemoryConfig };
3
3
  import { MemoryEvolutionConfig } from '../memory/evolution/contracts.js';
4
4
  export { MemoryEvolutionConfig };
5
5
  import { z } from 'zod';
6
+ import { ContinuityConfig } from '../context/continuity-view.js';
7
+ export { ContinuityConfig };
6
8
  import { ModelRouteSchema } from './model-configuration.js';
7
9
  import { DeepThinkerConfigSchema } from '../deep-thinker/core/contracts.js';
8
10
  const limit = (value) => z.number().int().positive().max(Number.MAX_SAFE_INTEGER).default(value);
@@ -38,6 +40,7 @@ export const Config = z.object({
38
40
  modelRoutes: z.array(ModelRouteSchema).max(128).default([]).refine(routes => new Set(routes.map(r => r.provider)).size === routes.length, 'Each DSH provider must have one route declaration'),
39
41
  orca: OrcaConfig.prefault({}),
40
42
  efficiency: EfficiencyConfig.prefault({}),
43
+ continuity: ContinuityConfig.prefault({}),
41
44
  finalization: FinalizationConfig.prefault({}),
42
45
  memoryEvolution: MemoryEvolutionConfig.prefault({}),
43
46
  });
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/dsh/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/dsh/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { TaskExecutionFrame } from './execution-frame.js';
2
+ import type { ExecutionEvidence } from './exploration.js';
3
+ import type { EnnoOdunoState, EnnoRunSnapshot } from '../enno-oduno/types.js';
4
+ import { type ContinuityOwner } from '../context/continuity-view.js';
5
+ export interface ContinuitySources {
6
+ readonly owner: ContinuityOwner;
7
+ readonly generation: string;
8
+ /** Original spelling resolved by the host to owner.workspace (e.g. macOS /var -> /private/var). */
9
+ readonly workspaceAlias?: string;
10
+ readonly frame?: TaskExecutionFrame | undefined;
11
+ readonly evidence: readonly ExecutionEvidence[];
12
+ readonly enno?: {
13
+ readonly snapshot: EnnoRunSnapshot;
14
+ readonly state: EnnoOdunoState;
15
+ } | undefined;
16
+ }
17
+ /** Adapt already committed, host-bound sources. No reads, inference, authority changes or freshness I/O. */
18
+ export declare function adaptContinuity(input: ContinuitySources): import("../context/continuity-view.js").ContinuationView;
19
+ //# sourceMappingURL=continuity-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuity-adapter.d.ts","sourceRoot":"","sources":["../../src/dsh/continuity-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7E,OAAO,EAAoE,KAAK,eAAe,EAA4B,MAAM,+BAA+B,CAAA;AAEhK,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,mGAAmG;IACnG,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAA;IAC/C,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;KAAE,GAAG,SAAS,CAAA;CACnG;AAED,4GAA4G;AAC5G,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,4DA2DvD"}
@@ -0,0 +1,71 @@
1
+ import path from 'node:path';
2
+ import { canonicalContentHash } from '../serialization/validate.js';
3
+ import { buildContinuationView } from '../context/continuity-view.js';
4
+ /** Adapt already committed, host-bound sources. No reads, inference, authority changes or freshness I/O. */
5
+ export function adaptContinuity(input) {
6
+ const sources = [];
7
+ const items = [];
8
+ let coverage = input.frame ? 'complete' : 'unavailable';
9
+ if (input.frame && input.frame.workspace !== input.owner.workspace && input.frame.workspace !== input.workspaceAlias)
10
+ throw new Error('Continuity frame owner mismatch');
11
+ if (input.frame)
12
+ sources.push({ kind: 'execution-frame', key: input.owner.runId,
13
+ revision: canonicalContentHash(input.frame) });
14
+ const targets = new Set(input.frame?.conditions.filter(c => c.field === 'readPaths' && c.approval !== 'proposed')
15
+ .map(c => path.resolve(input.owner.workspace, c.text)));
16
+ // Incompletely acquired/presented observations, exact explicit targets, then recency.
17
+ const evidence = input.evidence.slice(-32).map((item, index) => ({ item, index,
18
+ priority: item.acquisition !== 'full' || item.presentation !== 'full' ? 0 : item.operation.paths.some(p => targets.has(p)) ? 1 : 2 }))
19
+ .sort((a, b) => a.priority - b.priority || b.index - a.index);
20
+ if (input.evidence.length >= 32)
21
+ coverage = 'partial';
22
+ for (const { item } of evidence) {
23
+ const { presentation: _presentation, ...acquired } = item;
24
+ const ref = { kind: 'execution-evidence', key: `${input.owner.runId}:${item.id}`,
25
+ revision: canonicalContentHash(acquired) };
26
+ sources.push(ref);
27
+ items.push({ key: ref.key, kind: 'observation', basis: 'host-observation', validity: 'historical', sources: [ref],
28
+ text: `Paths: ${item.operation.paths.join(', ')}; requested range: ${JSON.stringify(item.operation.range)}; acquired range: ${JSON.stringify(item.acquiredRange ?? null)}; acquisition: ${item.acquisition ?? 'unknown'}; tool success: ${item.toolSucceeded ?? 'unknown'}; source event: ${item.sourceSeq ?? 'unknown'}; result digest: ${item.digest}` });
29
+ }
30
+ const enno = input.enno;
31
+ if (input.owner.mode === 'enno') {
32
+ if (!enno)
33
+ coverage = 'unavailable';
34
+ else {
35
+ const { snapshot, state } = enno;
36
+ if (snapshot.runId !== input.owner.runId || snapshot.repositoryRoot !== input.owner.workspace
37
+ || snapshot.dshSessionId !== input.owner.sessionId || state.dshSessionId !== input.owner.sessionId
38
+ || snapshot.revision !== state.contractRevision || (snapshot.routeEpoch ?? 0) !== state.routeEpoch
39
+ || (state.directive?.workUnit?.id ?? null) !== input.owner.workUnitId || state.currentRole !== input.owner.role) {
40
+ throw new Error('Continuity Enno binding mismatch');
41
+ }
42
+ sources.push({ kind: 'enno-contract', key: `${snapshot.runId}:${snapshot.orchestrationId}`,
43
+ revision: canonicalContentHash({ revision: snapshot.revision, mutation: snapshot.mutationRevision,
44
+ route: snapshot.routeEpoch ?? 0, directive: state.directive, nextAction: state.nextAction }) });
45
+ const current = snapshot.workUnits.find(unit => unit.workUnit.id === input.owner.workUnitId);
46
+ const relevant = new Set([input.owner.workUnitId, ...(current?.workUnit.dependencies ?? [])]);
47
+ // The directive already owns current criteria and nextAction. Only add related reports.
48
+ for (const unit of snapshot.workUnits.filter(unit => relevant.has(unit.workUnit.id))) {
49
+ if (!unit.result)
50
+ continue;
51
+ const ref = { kind: 'enno-work-result', key: `${snapshot.runId}:${unit.workUnit.id}`,
52
+ revision: canonicalContentHash(unit) };
53
+ sources.push(ref);
54
+ items.unshift({ key: ref.key, kind: 'reported-result', text: `${unit.workUnit.id}: ${unit.result.outcome}; ${unit.result.summary}`,
55
+ basis: 'model-report', validity: 'unknown', sources: [ref] });
56
+ }
57
+ // Snapshot final evidence is revision-scoped; live repository freshness is not checked here.
58
+ for (const result of snapshot.finalEvidence.slice(0, 24)) {
59
+ const ref = { kind: 'enno-verifier', key: `${snapshot.runId}:${result.verifier.id}`, revision: canonicalContentHash(result) };
60
+ sources.push(ref);
61
+ items.push({ key: ref.key, kind: 'observation', basis: 'host-observation', validity: 'unknown', sources: [ref],
62
+ text: `Recorded verifier ${result.verifier.id}: ${result.status}; exit code ${result.exitCode ?? 'unknown'}. Current repository freshness is not established by this projection.` });
63
+ }
64
+ if (snapshot.finalEvidence.length > 24)
65
+ coverage = 'partial';
66
+ }
67
+ }
68
+ return buildContinuationView({ owner: input.owner, stamp: canonicalContentHash({ generation: input.generation, frame: input.frame ?? null }),
69
+ sources, items, coverage, omittedItems: Math.max(0, input.evidence.length - 32) + Math.max(0, (enno?.snapshot.finalEvidence.length ?? 0) - 24) });
70
+ }
71
+ //# sourceMappingURL=continuity-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuity-adapter.js","sourceRoot":"","sources":["../../src/dsh/continuity-adapter.ts"],"names":[],"mappings":"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"}