kiokuko-dsh 0.2.1 → 0.2.2
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 +21 -28
- package/README.ja.md +5 -2
- package/README.md +8 -2
- package/THIRD_PARTY_NOTICES.md +8 -0
- package/dist/client.cjs +2248 -1383
- package/dist/client.d.ts +3 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/deep-thinker/configuration.d.ts.map +1 -1
- package/dist/deep-thinker/configuration.js +8 -5
- package/dist/deep-thinker/configuration.js.map +1 -1
- package/dist/deep-thinker/core/contracts.d.ts +107 -13
- package/dist/deep-thinker/core/contracts.d.ts.map +1 -1
- package/dist/deep-thinker/core/contracts.js +4 -2
- package/dist/deep-thinker/core/contracts.js.map +1 -1
- package/dist/deep-thinker/memory-finalizer.d.ts +10 -10
- package/dist/deep-thinker/memory-finalizer.js +2 -2
- package/dist/deep-thinker/memory-finalizer.js.map +1 -1
- package/dist/deep-thinker/report.d.ts +1 -1
- package/dist/deep-thinker/store.d.ts +10 -10
- package/dist/deep-thinker/store.d.ts.map +1 -1
- package/dist/deep-thinker/store.js +2 -2
- package/dist/deep-thinker/store.js.map +1 -1
- package/dist/dsh/completion-verifiers.d.ts +26 -0
- package/dist/dsh/completion-verifiers.d.ts.map +1 -0
- package/dist/dsh/completion-verifiers.js +9 -0
- package/dist/dsh/completion-verifiers.js.map +1 -0
- package/dist/dsh/config.d.ts +5 -1
- package/dist/dsh/config.d.ts.map +1 -1
- package/dist/dsh/core/host.d.ts +1 -1
- package/dist/dsh/core/host.d.ts.map +1 -1
- package/dist/dsh/core/host.js +49 -4
- package/dist/dsh/core/host.js.map +1 -1
- package/dist/dsh/core/index.d.ts +4 -4
- package/dist/dsh/core/tasks.d.ts.map +1 -1
- package/dist/dsh/core/tasks.js +7 -0
- package/dist/dsh/core/tasks.js.map +1 -1
- package/dist/dsh/core-runtime.d.ts +1 -0
- package/dist/dsh/core-runtime.d.ts.map +1 -1
- package/dist/dsh/core-runtime.js +4 -1
- package/dist/dsh/core-runtime.js.map +1 -1
- package/dist/dsh/decisions/config.d.ts +2 -2
- package/dist/dsh/enno-delegation.js +2 -2
- package/dist/dsh/enno-delegation.js.map +1 -1
- package/dist/dsh/execution-command.d.ts +4 -0
- package/dist/dsh/execution-command.d.ts.map +1 -0
- package/dist/dsh/execution-command.js +52 -0
- package/dist/dsh/execution-command.js.map +1 -0
- package/dist/dsh/execution-journal.d.ts +17 -0
- package/dist/dsh/execution-journal.d.ts.map +1 -0
- package/dist/dsh/execution-journal.js +69 -0
- package/dist/dsh/execution-journal.js.map +1 -0
- package/dist/dsh/execution-result.d.ts +20 -0
- package/dist/dsh/execution-result.d.ts.map +1 -0
- package/dist/dsh/execution-result.js +7 -0
- package/dist/dsh/execution-result.js.map +1 -0
- package/dist/dsh/execution-selection.d.ts +149 -22
- package/dist/dsh/execution-selection.d.ts.map +1 -1
- package/dist/dsh/execution-selection.js +18 -6
- package/dist/dsh/execution-selection.js.map +1 -1
- package/dist/dsh/host-adapter/admission.d.ts.map +1 -1
- package/dist/dsh/host-adapter/admission.js +20 -0
- package/dist/dsh/host-adapter/admission.js.map +1 -1
- package/dist/dsh/host-adapter/turn-state.js +1 -1
- package/dist/dsh/host-adapter/turn-state.js.map +1 -1
- package/dist/dsh/host-adapter.d.ts.map +1 -1
- package/dist/dsh/host-adapter.js +26 -13
- package/dist/dsh/host-adapter.js.map +1 -1
- package/dist/dsh/index.d.ts +4 -2
- package/dist/dsh/index.d.ts.map +1 -1
- package/dist/dsh/index.js +7 -0
- package/dist/dsh/index.js.map +1 -1
- package/dist/dsh/intake-gate.d.ts +1 -0
- package/dist/dsh/intake-gate.d.ts.map +1 -1
- package/dist/dsh/intake-gate.js +9 -1
- package/dist/dsh/intake-gate.js.map +1 -1
- package/dist/dsh/lisp/approval.d.ts +2 -1
- package/dist/dsh/lisp/approval.d.ts.map +1 -1
- package/dist/dsh/lisp/approval.js +4 -3
- package/dist/dsh/lisp/approval.js.map +1 -1
- package/dist/dsh/lisp/candidate.d.ts +3 -3
- package/dist/dsh/lisp/code-intelligence-contracts.d.ts +78 -0
- package/dist/dsh/lisp/code-intelligence-contracts.d.ts.map +1 -0
- package/dist/dsh/lisp/code-intelligence-contracts.js +54 -0
- package/dist/dsh/lisp/code-intelligence-contracts.js.map +1 -0
- package/dist/dsh/lisp/code-intelligence-provider.d.ts +116 -0
- package/dist/dsh/lisp/code-intelligence.d.ts +13 -0
- package/dist/dsh/lisp/code-intelligence.d.ts.map +1 -0
- package/dist/dsh/lisp/code-intelligence.js +181 -0
- package/dist/dsh/lisp/code-intelligence.js.map +1 -0
- package/dist/dsh/lisp/coding-choice.d.ts +1 -0
- package/dist/dsh/lisp/coding-choice.d.ts.map +1 -1
- package/dist/dsh/lisp/coding-choice.js +17 -6
- package/dist/dsh/lisp/coding-choice.js.map +1 -1
- package/dist/dsh/lisp/compiled-cache.d.ts.map +1 -1
- package/dist/dsh/lisp/compiled-cache.js +3 -2
- package/dist/dsh/lisp/compiled-cache.js.map +1 -1
- package/dist/dsh/lisp/contracts.d.ts +4 -0
- package/dist/dsh/lisp/contracts.d.ts.map +1 -1
- package/dist/dsh/lisp/contracts.js +1 -0
- package/dist/dsh/lisp/contracts.js.map +1 -1
- package/dist/dsh/lisp/manager.d.ts +8 -1
- package/dist/dsh/lisp/manager.d.ts.map +1 -1
- package/dist/dsh/lisp/manager.js +78 -24
- package/dist/dsh/lisp/manager.js.map +1 -1
- package/dist/dsh/lisp/model-result.d.ts.map +1 -1
- package/dist/dsh/lisp/model-result.js +35 -1
- package/dist/dsh/lisp/model-result.js.map +1 -1
- package/dist/dsh/lisp/proposal-batch.d.ts +2 -0
- package/dist/dsh/lisp/proposal-batch.d.ts.map +1 -1
- package/dist/dsh/lisp/proposal-batch.js +32 -2
- package/dist/dsh/lisp/proposal-batch.js.map +1 -1
- package/dist/dsh/lisp/sandbox.d.ts +3 -0
- package/dist/dsh/lisp/sandbox.d.ts.map +1 -1
- package/dist/dsh/lisp/sandbox.js +13 -6
- package/dist/dsh/lisp/sandbox.js.map +1 -1
- package/dist/dsh/lisp/surface.d.ts +1 -1
- package/dist/dsh/lisp/surface.d.ts.map +1 -1
- package/dist/dsh/lisp/surface.js +74 -20
- package/dist/dsh/lisp/surface.js.map +1 -1
- package/dist/dsh/lisp/worker.d.ts +2 -0
- package/dist/dsh/lisp/worker.d.ts.map +1 -1
- package/dist/dsh/lisp/worker.js +7 -5
- package/dist/dsh/lisp/worker.js.map +1 -1
- package/dist/dsh/memory-application.d.ts +1 -1
- package/dist/dsh/memory-application.d.ts.map +1 -1
- package/dist/dsh/memory-application.js +4 -3
- package/dist/dsh/memory-application.js.map +1 -1
- package/dist/dsh/model-auto/candidates.d.ts.map +1 -1
- package/dist/dsh/model-auto/candidates.js +31 -22
- package/dist/dsh/model-auto/candidates.js.map +1 -1
- package/dist/dsh/model-configuration.d.ts +145 -2
- package/dist/dsh/model-configuration.d.ts.map +1 -1
- package/dist/dsh/model-configuration.js +10 -3
- package/dist/dsh/model-configuration.js.map +1 -1
- package/dist/dsh/model-selection-ui.d.ts.map +1 -1
- package/dist/dsh/model-selection-ui.js +7 -2
- package/dist/dsh/model-selection-ui.js.map +1 -1
- package/dist/dsh/models/config-store.d.ts +8 -0
- package/dist/dsh/models/config-store.d.ts.map +1 -0
- package/dist/dsh/models/config-store.js +49 -0
- package/dist/dsh/models/config-store.js.map +1 -0
- package/dist/dsh/models/contracts.d.ts +107 -0
- package/dist/dsh/models/contracts.d.ts.map +1 -0
- package/dist/dsh/models/contracts.js +104 -0
- package/dist/dsh/models/contracts.js.map +1 -0
- package/dist/dsh/models/metadata.d.ts +7 -0
- package/dist/dsh/models/metadata.d.ts.map +1 -0
- package/dist/dsh/models/metadata.js +13 -0
- package/dist/dsh/models/metadata.js.map +1 -0
- package/dist/dsh/models/profiles.d.ts +10 -0
- package/dist/dsh/models/profiles.d.ts.map +1 -0
- package/dist/dsh/models/profiles.js +176 -0
- package/dist/dsh/models/profiles.js.map +1 -0
- package/dist/dsh/models/service.d.ts +97 -0
- package/dist/dsh/models/service.d.ts.map +1 -0
- package/dist/dsh/models/service.js +518 -0
- package/dist/dsh/models/service.js.map +1 -0
- package/dist/dsh/models/surface.d.ts +8 -0
- package/dist/dsh/models/surface.d.ts.map +1 -0
- package/dist/dsh/models/surface.js +162 -0
- package/dist/dsh/models/surface.js.map +1 -0
- package/dist/dsh/models/vendor/THIRD_PARTY_NOTICES.txt +134 -0
- package/dist/dsh/models/vendor/abortable.d.ts +3 -0
- package/dist/dsh/models/vendor/abortable.d.ts.map +1 -0
- package/dist/dsh/models/vendor/abortable.js +10 -0
- package/dist/dsh/models/vendor/abortable.js.map +1 -0
- package/dist/dsh/models/vendor/auth-contract.d.ts +67 -0
- package/dist/dsh/models/vendor/auth-contract.d.ts.map +1 -0
- package/dist/dsh/models/vendor/auth-contract.js +2 -0
- package/dist/dsh/models/vendor/auth-contract.js.map +1 -0
- package/dist/dsh/models/vendor/credentials.d.ts +58 -0
- package/dist/dsh/models/vendor/credentials.d.ts.map +1 -0
- package/dist/dsh/models/vendor/credentials.js +205 -0
- package/dist/dsh/models/vendor/credentials.js.map +1 -0
- package/dist/dsh/models/vendor/nous-oauth.d.ts +6 -0
- package/dist/dsh/models/vendor/nous-oauth.d.ts.map +1 -0
- package/dist/dsh/models/vendor/nous-oauth.js +113 -0
- package/dist/dsh/models/vendor/nous-oauth.js.map +1 -0
- package/dist/dsh/models/vendor/opencode-adapter.d.ts +38 -0
- package/dist/dsh/models/vendor/opencode-adapter.d.ts.map +1 -0
- package/dist/dsh/models/vendor/opencode-adapter.js +207 -0
- package/dist/dsh/models/vendor/opencode-adapter.js.map +1 -0
- package/dist/dsh/models/vendor/opencode-catalog.d.ts +73 -0
- package/dist/dsh/models/vendor/opencode-catalog.d.ts.map +1 -0
- package/dist/dsh/models/vendor/opencode-catalog.js +253 -0
- package/dist/dsh/models/vendor/opencode-catalog.js.map +1 -0
- package/dist/dsh/models/vendor/opencode-codec.d.ts +7 -0
- package/dist/dsh/models/vendor/opencode-codec.d.ts.map +1 -0
- package/dist/dsh/models/vendor/opencode-codec.js +107 -0
- package/dist/dsh/models/vendor/opencode-codec.js.map +1 -0
- package/dist/dsh/models/vendor/opencode-owned.generated.d.ts +114 -0
- package/dist/dsh/models/vendor/opencode-owned.generated.d.ts.map +1 -0
- package/dist/dsh/models/vendor/opencode-owned.generated.js +2867 -0
- package/dist/dsh/models/vendor/opencode-owned.generated.js.map +1 -0
- package/dist/dsh/models/vendor/opencode-replay.d.ts +17 -0
- package/dist/dsh/models/vendor/opencode-replay.d.ts.map +1 -0
- package/dist/dsh/models/vendor/opencode-replay.js +147 -0
- package/dist/dsh/models/vendor/opencode-replay.js.map +1 -0
- package/dist/dsh/models/vendor/opencode-sdk.d.ts +6 -0
- package/dist/dsh/models/vendor/opencode-sdk.d.ts.map +1 -0
- package/dist/dsh/models/vendor/opencode-sdk.js +49915 -0
- package/dist/dsh/models/vendor/opencode-sdk.js.map +7 -0
- package/dist/dsh/models/vendor/opencode-transport.d.ts +6 -0
- package/dist/dsh/models/vendor/opencode-transport.d.ts.map +1 -0
- package/dist/dsh/models/vendor/opencode-transport.js +70 -0
- package/dist/dsh/models/vendor/opencode-transport.js.map +1 -0
- package/dist/dsh/models/vendor/pi-ai.d.ts +23 -0
- package/dist/dsh/models/vendor/pi-ai.d.ts.map +1 -0
- package/dist/dsh/models/vendor/pi-ai.js +27 -0
- package/dist/dsh/models/vendor/pi-ai.js.map +1 -0
- package/dist/dsh/modules/lisp.d.ts +1 -1
- package/dist/dsh/modules/lisp.d.ts.map +1 -1
- package/dist/dsh/modules/lisp.js +1 -1
- package/dist/dsh/modules/lisp.js.map +1 -1
- package/dist/dsh/native-model-catalog.d.ts.map +1 -1
- package/dist/dsh/native-model-catalog.js +4 -3
- package/dist/dsh/native-model-catalog.js.map +1 -1
- package/dist/dsh/node-tap-summary.d.ts +6 -1
- package/dist/dsh/node-tap-summary.d.ts.map +1 -1
- package/dist/dsh/node-tap-summary.js +27 -2
- package/dist/dsh/node-tap-summary.js.map +1 -1
- package/dist/dsh/on-demand-intake.d.ts +1 -1
- package/dist/dsh/on-demand-intake.d.ts.map +1 -1
- package/dist/dsh/on-demand-intake.js +23 -11
- package/dist/dsh/on-demand-intake.js.map +1 -1
- package/dist/dsh/owned-evidence.d.ts +49 -0
- package/dist/dsh/owned-evidence.d.ts.map +1 -0
- package/dist/dsh/owned-evidence.js +69 -0
- package/dist/dsh/owned-evidence.js.map +1 -0
- package/dist/dsh/owned-execution.d.ts +98 -0
- package/dist/dsh/owned-execution.d.ts.map +1 -0
- package/dist/dsh/owned-execution.js +523 -0
- package/dist/dsh/owned-execution.js.map +1 -0
- package/dist/dsh/plan-transition.d.ts +5 -0
- package/dist/dsh/plan-transition.d.ts.map +1 -0
- package/dist/dsh/plan-transition.js +34 -0
- package/dist/dsh/plan-transition.js.map +1 -0
- package/dist/dsh/session-memory-finalizer.d.ts.map +1 -1
- package/dist/dsh/session-memory-finalizer.js +46 -3
- package/dist/dsh/session-memory-finalizer.js.map +1 -1
- package/dist/dsh/setup.d.ts +1 -1
- package/dist/dsh/setup.d.ts.map +1 -1
- package/dist/dsh/setup.js +2 -0
- package/dist/dsh/setup.js.map +1 -1
- package/dist/dsh/skill-prompts.json +1 -1
- package/dist/dsh/task-completion.d.ts +1 -0
- package/dist/dsh/task-completion.d.ts.map +1 -1
- package/dist/dsh/task-completion.js +19 -19
- package/dist/dsh/task-completion.js.map +1 -1
- package/dist/enno-oduno/schemas.d.ts +9 -9
- package/dist/enno-oduno/store.d.ts.map +1 -1
- package/dist/enno-oduno/store.js +12 -0
- package/dist/enno-oduno/store.js.map +1 -1
- package/dist/locale/en.json +1 -1
- package/dist/locale/ja.json +1 -1
- package/dist/locale/ko.json +1 -1
- package/dist/locale/zh-CN.json +1 -1
- package/dist/memory/application.d.ts +2 -1
- package/dist/memory/application.d.ts.map +1 -1
- package/dist/memory/application.js +26 -12
- package/dist/memory/application.js.map +1 -1
- package/dist/memory/evidence.d.ts +2 -0
- package/dist/memory/evidence.d.ts.map +1 -1
- package/dist/memory/evidence.js +3 -1
- package/dist/memory/evidence.js.map +1 -1
- package/dist/model-tools/contracts.d.ts +4 -4
- package/dist/models-client.cjs +635 -0
- package/dist/models-client.d.ts +26 -0
- package/dist/models-client.d.ts.map +1 -0
- package/dist/models-client.js +642 -0
- package/dist/models-client.js.map +1 -0
- package/docs/code-intelligence.md +149 -0
- package/docs/dsh-auth-LICENSE.txt +22 -0
- package/docs/dsh-auth-provenance.md +25 -0
- package/docs/dsh-plugin.md +19 -0
- package/docs/kiokuko-models.md +66 -0
- package/docs/lisp.md +107 -56
- package/docs/model-selection.ja.md +7 -9
- package/docs/model-selection.md +14 -12
- package/docs/owned-execution.md +99 -0
- package/lisp/supervisor.mjs +8 -2
- package/lisp/tools.lisp +31 -3
- package/migrations/035_owned_execution.sql +19 -0
- package/package.json +46 -11
- package/skills/kiokuko-lisp/SKILL.md +49 -67
- package/skills/kiokuko-soul/SKILL.md +7 -28
|
@@ -12,7 +12,9 @@ DSHの権限判定、必要な検証を維持し、役小角の契約・WorkUnit
|
|
|
12
12
|
|
|
13
13
|
## 通常実行のモデル自動選択
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Webプロファイルでは [Kiokuko Models](kiokuko-models.md) から接続を設定できます。DSH本体のModelsで設定する必要はありません。登録したモデルは、通常会話・Enno・Deepでネイティブ接続と併用できます。
|
|
16
|
+
|
|
17
|
+
通常版・modular coreとも `modelAutoMode.mode: off` が既定です。同じDSHプロファイルでKiokuko Modelsまたはdsh-codexからCodexを認証し、JevかLayaの判定を準備したうえで、まず `observe` で選択案を確認します。
|
|
16
18
|
|
|
17
19
|
```yaml
|
|
18
20
|
modelAutoMode:
|
|
@@ -30,7 +32,7 @@ modelAutoMode:
|
|
|
30
32
|
|
|
31
33
|
コマンドは現在のnativeセッションだけを変更します。`on` は手動のモデル指定も解除します。DSHのpickerでモデルを手動選択すると、同じセッションで `on` を再実行するまで手動指定が優先します。変更は次の新しいタスクから反映し、送信済みの要求を途中で切り替えません。`/kioku-decisions status` にも同じ状態を表示します。設定を `off` に変更してDSHを再起動すれば、保存済みのセッション指定も無効になります。
|
|
32
34
|
|
|
33
|
-
初期候補は `gpt-6-luna` の low・medium・high と `gpt-6-sol` の high です。`modelAutoMode.routes` には最大4件、`id`(`luna-low`、`luna-medium`、`luna-high`、`sol-high`)と `binding`(`provider`、`model`、`reasoningEffort`)を指定できます。IDは経路のラベルなので、登録済みのAstraなども正確なbindingで割り当てられます。候補は
|
|
35
|
+
初期候補は `gpt-6-luna` の low・medium・high と `gpt-6-sol` の high です。`modelAutoMode.routes` には最大4件、`id`(`luna-low`、`luna-medium`、`luna-high`、`sol-high`)と `binding`(`provider`、`model`、`reasoningEffort`)を指定できます。IDは経路のラベルなので、登録済みのAstraなども正確なbindingで割り当てられます。候補はCodex由来とResponses方式を確認でき、現在のモデル一覧、文脈容量・入力形式・推論強度、要求設定の検証、token meterを通った接続に限定します。ネイティブの `openai-codex` とKiokuko所有のCodex接続が対象です。名前だけを似せた接続やOpenAI API接続は対象外です。有効なbindingが2件未満なら判定しません。
|
|
34
36
|
|
|
35
37
|
新しい受付済みの通常タスクでは、現在の依頼文、タスク種別、添付の種類、経路IDと判定基準を選択中のJevかLayaへ送ります。この判定のために添付の内容、全履歴、リポジトリ全体は送信しません。Choice 1問の結果をrunに保存し、継続では同じ経路を使います。再起動時に判定結果が不明なら再送せず元のモデルを維持します。`observe`、棄権、probe失敗、metadata不足、非対応effort、timeout、入力超過でも元のモデルを維持します。取消、セッション同一性の不一致、保存の整合性エラーでは要求を止めます。認証・利用枠・モデル利用不可によるdispatch失敗を別モデルへ自動再送しません。
|
|
36
38
|
|
|
@@ -74,7 +76,6 @@ npm run test:evaluation:model-routing -- --live --provider laya --config PATH
|
|
|
74
76
|
| OpenRouter・DeepSeek V4.1 Flash | `deepseek/deepseek-v4.1-flash` | `deepseek/deepseek-v4.1-flash` | `deepseek/deepseek-v4.1-flash` | `deepseek/deepseek-v4.1-flash` |
|
|
75
77
|
| OpenRouter・GLM | `z-ai/glm-5.3` | `z-ai/glm-5.3` | `z-ai/glm-5.3-flash` | `z-ai/glm-5.3` |
|
|
76
78
|
| OpenRouter・Qwen | `qwen/qwen3.8-max-0902` | `qwen/qwen3.8-max-0902` | `qwen/qwen3.8-flash` | `qwen/qwen3.8-max-0902` |
|
|
77
|
-
| OrcaRouter・DeepSeek V4.1 Flash | `deepseek/deepseek-v4.1-flash` | `deepseek/deepseek-v4.1-flash` | `deepseek/deepseek-v4.1-flash` | `deepseek/deepseek-v4.1-flash` |
|
|
78
79
|
| Ollama・ローカル標準 | `qwen3-coder:30b` | `qwen3-coder:30b` | `qwen3-coder:30b` | `qwen3-coder:30b` |
|
|
79
80
|
|
|
80
81
|
これらは版1の構成候補です。適用時にDSHの登録モデルと正確なIDで照合します。
|
|
@@ -84,13 +85,11 @@ npm run test:evaluation:model-routing -- --live --provider laya --config PATH
|
|
|
84
85
|
DeepSeek系の推奨は全5役を **V4.1 Flash** に統一しています。IDは提供元ごとに、
|
|
85
86
|
[DeepSeek公式API](https://www.deepseek.com/en/news/deepseek-v4-1-flash/)、
|
|
86
87
|
[OpenCode Go](https://opencode.ai/docs/go/)、
|
|
87
|
-
[OpenRouter](https://openrouter.ai/deepseek/deepseek-v4.1-flash)
|
|
88
|
-
[OrcaRouter](https://www.orcarouter.ai/models/deepseek/deepseek-v4.1-flash)で確認しています。
|
|
88
|
+
[OpenRouter](https://openrouter.ai/deepseek/deepseek-v4.1-flash)で確認しています。
|
|
89
89
|
公式APIの専用テンプレートはDSHの`deepseek-official`接続を使います。
|
|
90
90
|
V4.1 Flashが未登録の場合、V4 Proや旧FlashのIDには置き換えません。
|
|
91
91
|
2026-09-11に[OpenCodeのモデル一覧](https://models.opencode.ai/api.json)も確認しています。
|
|
92
92
|
`opencode-go`にはV4.1 Flashが掲載されていますが、Zenに相当する`opencode`にはありません。
|
|
93
|
-
この一覧のOrcaRouter欄にも未掲載で、OrcaRouter公式モデルページの更新と差があります。
|
|
94
93
|
Zen・Ollamaで推奨テンプレートにないモデルを使う場合は、以下の登録済みモデル選択を使います。
|
|
95
94
|
|
|
96
95
|
[dsh-codex](https://github.com/askdkc/dsh-codex)を使う場合は、
|
|
@@ -100,7 +99,7 @@ Zen・Ollamaで推奨テンプレートにないモデルを使う場合は、
|
|
|
100
99
|
[OpenAIのモデルガイド](https://developers.openai.com/api/docs/models)を基にした推奨で、
|
|
101
100
|
タスク別の速度・利用枠消費を実測して最適化したものではありません。
|
|
102
101
|
|
|
103
|
-
|
|
102
|
+
このテンプレートはKiokuko ModelsのCodex接続にも対応し、Codex由来とResponses方式を確認して、安定した `kiokuko-…` 登録IDを保存します。ネイティブ接続は [dsh-codexの登録・接続実装](https://github.com/askdkc/dsh-codex/blob/e2e61b6d8f3b511cf2dac99688e97b8728cb122c/src/index.ts)
|
|
104
103
|
に合わせて`openai-codex` / `codex` / `responses`を使用します。接続先や通信方式を
|
|
105
104
|
重ねて質問せず、選択した構成に保存します。DSH本体のモデル検証を優先し、
|
|
106
105
|
旧`modelRoutes`の値を再入力させません。プラグイン設定ファイルは変更しません。モデルはDSH経由の現在の登録一覧に存在する正確なIDだけを割り当て、
|
|
@@ -114,9 +113,8 @@ DSHの設定を使い、重ねて質問しません。Kiokukoは認証情報を
|
|
|
114
113
|
|
|
115
114
|
モデル名から選ぶ場合は、**「DSHに設定済みのモデルから選ぶ」→役割を変更→接続を選択→
|
|
116
115
|
モデル名で検索・選択→構成を確認して開始**と進みます。
|
|
117
|
-
**OpenCode Go、OpenCode Zen、OpenRouter、Ollama
|
|
116
|
+
**OpenCode Go、OpenCode Zen、OpenRouter、Ollama**の登録済み接続を選べます。
|
|
118
117
|
一覧は現在のDSHプロファイルから取得し、接続名・モデル名と正確なIDを表示します。
|
|
119
|
-
同じモデル名でもOpenRouterとOrcaRouterの割り当ては別々に保持します。
|
|
120
118
|
接続が表示されない場合はDSHに登録し、「一覧を再取得」で更新してください。
|
|
121
119
|
公開モデル一覧は推奨IDの参照元で、DSHへのモデル登録は行いません。
|
|
122
120
|
公開一覧の`ollama-cloud`と、ローカルOllamaのインストール済みモデルは別の一覧です。
|
package/docs/model-selection.md
CHANGED
|
@@ -13,7 +13,9 @@ plan approval or automatic Enno continuation.
|
|
|
13
13
|
|
|
14
14
|
## Automatic model selection
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
In Web profiles, [Kiokuko Models](kiokuko-models.md) manages connections without requiring DSH's Models settings. Its registered models are available to ordinary chat, Enno and Deep alongside native connections.
|
|
17
|
+
|
|
18
|
+
`modelAutoMode` is off by default in both the full plugin and modular core. To try it, authenticate Codex through Kiokuko Models or dsh-codex in the same DSH profile, configure a Jev or Laya typed-decision backend, then use `observe` before enabling automatic routing:
|
|
17
19
|
|
|
18
20
|
```yaml
|
|
19
21
|
modelAutoMode:
|
|
@@ -31,7 +33,7 @@ modelAutoMode:
|
|
|
31
33
|
|
|
32
34
|
The command changes only the current native session. `on` also clears its manual model pin; a model selected in DSH's picker pins that session until `on` is run again. Changes apply at the next new task boundary, without changing a request already sent. `/kioku-decisions status` includes the same session projection. To reset session overrides after a configuration change, restart DSH; changing `modelAutoMode.mode` to `off` and restarting disables routing.
|
|
33
35
|
|
|
34
|
-
The initial preset offers `gpt-6-luna` at low, medium and high effort, plus `gpt-6-sol` at high effort. Up to four exact route bindings can be configured under `modelAutoMode.routes`; each has an `id` from `luna-low`, `luna-medium`, `luna-high`, `sol-high`, and a `binding` with `provider`, `model`, and `reasoningEffort`. These are route labels, so a registered Astra or other GPT model may be assigned explicitly. No new model ID is guessed or substituted.
|
|
36
|
+
The initial preset offers `gpt-6-luna` at low, medium and high effort, plus `gpt-6-sol` at high effort. Up to four exact route bindings can be configured under `modelAutoMode.routes`; each has an `id` from `luna-low`, `luna-medium`, `luna-high`, `sol-high`, and a `binding` with `provider`, `model`, and `reasoningEffort`. These are route labels, so a registered Astra or other GPT model may be assigned explicitly. No new model ID is guessed or substituted. A candidate must have a validated Codex origin and Responses protocol, live model context and modality metadata, supported efforts, call-config validation and token meter. Both native `openai-codex` and Kiokuko-owned Codex routes qualify; an arbitrary provider name or OpenAI API connection does not. Fewer than two valid bindings skips classification.
|
|
35
37
|
|
|
36
38
|
For a new admitted normal task, Kiokuko sends the current task text, task type, attachment kinds, route IDs and rubric to the selected Jev or Laya backend. It does not send attachment bytes, full history or repository contents for this classification. One Choice result selects a route or abstains. The route is stored against the exact run and reused for continuations; an unknown in-flight decision after restart is retained without another classifier call. `observe` records a proposal but keeps the current model. A failed probe, missing metadata, unsupported effort, timeout, oversized input or abstention also keeps the current model. Cancellation, stale session identity and storage integrity failures stop the request. Dispatch authentication, quota and unavailable-model errors remain ordinary failures; no alternate model is retried automatically.
|
|
37
39
|
|
|
@@ -63,8 +65,8 @@ above nine, type consecutive digits (`1`, `2`, Enter selects option 12); Backspa
|
|
|
63
65
|
corrects the number. Digits typed in the search field remain search text, and Enter
|
|
64
66
|
submits the search. IME composition and repeated key events do not select or submit.
|
|
65
67
|
|
|
66
|
-
Enno offers
|
|
67
|
-
OpenCode Zen, OpenRouter
|
|
68
|
+
Enno offers eleven versioned templates across **OpenAI, DeepSeek, OpenCode Go,
|
|
69
|
+
OpenCode Zen, OpenRouter and Ollama**, plus a custom configured-model selector. The complete
|
|
68
70
|
[template table and configuration reference](model-selection.ja.md) lists exact
|
|
69
71
|
model IDs. OpenAI assigns Astra to ideal/Zenki/check, Sol to the Goki head and
|
|
70
72
|
Luna to workers. Go and OpenRouter provide GLM and Qwen variants; Zen uses GLM.
|
|
@@ -74,14 +76,12 @@ downloads models. Reasoning uses model defaults; reflection uses the check model
|
|
|
74
76
|
All DeepSeek recommendations use **V4.1 Flash for all five roles**. Exact IDs differ:
|
|
75
77
|
`deepseek-flash` on [DeepSeek's API](https://www.deepseek.com/en/news/deepseek-v4-1-flash/),
|
|
76
78
|
`deepseek-v4.1-flash` on [OpenCode Go](https://opencode.ai/docs/go/), and
|
|
77
|
-
`deepseek/deepseek-v4.1-flash` on [OpenRouter](https://openrouter.ai/deepseek/deepseek-v4.1-flash)
|
|
78
|
-
and [OrcaRouter](https://www.orcarouter.ai/models/deepseek/deepseek-v4.1-flash).
|
|
79
|
+
`deepseek/deepseek-v4.1-flash` on [OpenRouter](https://openrouter.ai/deepseek/deepseek-v4.1-flash).
|
|
79
80
|
The direct DeepSeek template uses DSH's `deepseek-official` connection. These templates
|
|
80
81
|
never substitute V4 Pro or an older Flash ID when V4.1 Flash is unavailable.
|
|
81
82
|
The [OpenCode model registry](https://models.opencode.ai/api.json) was also checked
|
|
82
83
|
on 2026-09-11. Its `opencode-go` entry includes V4.1 Flash; its Zen entry (`opencode`)
|
|
83
|
-
does not.
|
|
84
|
-
page lists the ID above. Registry entries can lag provider changes. Zen and Ollama
|
|
84
|
+
does not. Registry entries can lag provider changes. Zen and Ollama
|
|
85
85
|
use the configured-model selector for models without a verified template ID.
|
|
86
86
|
|
|
87
87
|
For [dsh-codex](https://github.com/askdkc/dsh-codex), choose **OpenAI Codex・推奨(dsh-codex)**
|
|
@@ -89,8 +89,10 @@ from the template menu, then confirm the configuration. It assigns Astra to
|
|
|
89
89
|
ideal/planning/check, Sol to the Goki head and Luna to workers, following the
|
|
90
90
|
[OpenAI model guide](https://developers.openai.com/api/docs/models). This is a
|
|
91
91
|
quality/workload recommendation, not a measured per-task latency or quota optimum.
|
|
92
|
-
The
|
|
93
|
-
|
|
92
|
+
The template also accepts a Kiokuko Models Codex connection with verified origin
|
|
93
|
+
and Responses metadata, storing its stable `kiokuko-…` registration ID. The native
|
|
94
|
+
route retains the `openai-codex` / `codex` / `responses` contract from
|
|
95
|
+
[dsh-codex's implementation](https://github.com/askdkc/dsh-codex/blob/e2e61b6d8f3b511cf2dac99688e97b8728cb122c/src/index.ts)
|
|
94
96
|
without asking for the connection again. Native DSH model validation takes
|
|
95
97
|
precedence over legacy `modelRoutes` declarations; the plugin configuration file
|
|
96
98
|
remains untouched. Recommended models must exist in the current DSH catalog;
|
|
@@ -116,9 +118,9 @@ than requested again. Back and cancel retain confirmed model assignments.
|
|
|
116
118
|
|
|
117
119
|
To choose by model name, select **DSHに設定済みのモデルから選ぶ**, edit a role,
|
|
118
120
|
select its connection, then search or select a model name and confirm the configuration.
|
|
119
|
-
This works with configured **OpenCode Go, OpenCode Zen, OpenRouter
|
|
121
|
+
This works with configured **OpenCode Go, OpenCode Zen, OpenRouter and Ollama**
|
|
120
122
|
connections. Every entry displays its name and exact ID; the same model on OpenRouter
|
|
121
|
-
|
|
123
|
+
Each connection remains a distinct binding. Lists come from the current DSH profile.
|
|
122
124
|
Register a missing connection in DSH and select **一覧を再取得** to refresh it.
|
|
123
125
|
The public registry is a recommendation reference; it does not register models in
|
|
124
126
|
DSH. Its `ollama-cloud` catalog is separate from a local Ollama installation.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Kiokuko-owned development execution
|
|
2
|
+
|
|
3
|
+
Kiokuko registers native `kioku_read`, `kioku_write`, `kioku_edit`,
|
|
4
|
+
`kioku_remove`, `kioku_exec`, and `kioku_result` tools. They use Node filesystem
|
|
5
|
+
and process services directly; stock DSH filesystem/shell sandbox settings do
|
|
6
|
+
not control this executor. Native presentation and PTC transport both remain
|
|
7
|
+
supported. Plan, goal, cancellation, admitted identity, and Enno delegation
|
|
8
|
+
scope still apply.
|
|
9
|
+
|
|
10
|
+
Ordinary project reads, edits, builds, tests, PATH commands and investigation
|
|
11
|
+
needed for development require no additional confirmation. Bash/zsh inherit
|
|
12
|
+
the user's environment and may start child processes. Source/data deletion and
|
|
13
|
+
existing durable user database mutation require confirmation of concrete
|
|
14
|
+
targets. Generated artifacts and temporary/disposable data do not. Declare
|
|
15
|
+
`destructiveTargets` for destructive commands: arbitrary shell/Lisp/FFI code
|
|
16
|
+
cannot be completely classified in advance. An unknown side effect does not
|
|
17
|
+
justify refusing execution or treating its result as verification.
|
|
18
|
+
|
|
19
|
+
## Tools and replay
|
|
20
|
+
|
|
21
|
+
- `kioku_read({path})` returns content and its SHA256.
|
|
22
|
+
- `kioku_write({path,content,expectedHash?})` and
|
|
23
|
+
`kioku_edit({path,oldText,newText,expectedHash?})` compare the actual file with
|
|
24
|
+
the requested result. An edit requires exactly one matching occurrence.
|
|
25
|
+
`expectedHash:null` requires a new file; changed hashes reject a stale edit.
|
|
26
|
+
- `kioku_remove({path,expectedHash?})` removes a single file.
|
|
27
|
+
- `kioku_exec({command,cwd?,shell?,background?,timeoutMs?,destructiveTargets?})`
|
|
28
|
+
executes in the canonical cwd, including project subdirectories.
|
|
29
|
+
- `kioku_result({operationId,cancel?})` retrieves or cancels the existing
|
|
30
|
+
process. It never starts the command again. Collect background operations
|
|
31
|
+
until their receipt is terminal.
|
|
32
|
+
|
|
33
|
+
Each tool returns a host-generated receipt with operation/run/session/generation
|
|
34
|
+
identity, actual cwd/command, file hashes, process exit/signal/cancellation/timeout,
|
|
35
|
+
and verification and persistence states. Process output is bounded at 32 MiB;
|
|
36
|
+
the host parses complete output before returning a 24,000-character preview.
|
|
37
|
+
Observed/displayed byte counts and an output digest distinguish the two scopes.
|
|
38
|
+
Environment variables and full command output are not persisted in execution receipts or passed as supervisor command-line arguments. Secret-bearing
|
|
39
|
+
commands and previews are redacted.
|
|
40
|
+
|
|
41
|
+
Operation identity is tied to the native call. Replaying it with another
|
|
42
|
+
run/generation or changed arguments conflicts. SQLite receipts and a private
|
|
43
|
+
local journal beside the configured database survive restart. A failed SQLite
|
|
44
|
+
save leaves `persistence:pending`; retrieving the result retries storage without
|
|
45
|
+
repeating edits/tests. If the outbox is unavailable, execution can use a database reservation; failure of both stores is reported as pending and cannot promise durable replay protection. A started receipt after a crash becomes unknown, and
|
|
46
|
+
its effect is never automatically retried. Loss of both durable stores cannot
|
|
47
|
+
be reconstructed from a model's success report. After restart, saved receipts restore terminal metadata and verification summaries; full output previews and read contents are not restored from the journal. Use a new read operation to inspect current file contents.
|
|
48
|
+
|
|
49
|
+
## Verification and memory
|
|
50
|
+
|
|
51
|
+
Register conditions and source/test/configuration paths with `task_completion`
|
|
52
|
+
before running the check. Memory application reviews may specify a repository-relative `cwd`; omitted values retain the historical repository-root meaning. Actual directory, command, source digest, run and generation must match. Owned shell and Lisp process calls feed the existing
|
|
53
|
+
completion and memory-application records. Exit zero alone does not establish
|
|
54
|
+
test success: complete Node TAP and Cargo harness summaries distinguish passed,
|
|
55
|
+
failed, cancelled, ignored/skipped, filtered and zero/incomplete test runs.
|
|
56
|
+
Include every relevant input in the registered source set.
|
|
57
|
+
|
|
58
|
+
Finalization receives structured observations and source-bound checks. Candidate
|
|
59
|
+
memories cite stored receipts from the same run/session and retain conditions
|
|
60
|
+
and source versions. Existing transactions, leases and effect deduplication own
|
|
61
|
+
memory saving; memory retries do not rerun development tools. A staged, secret-scanned extraction is reused after adoption fails only when its run, source log, evidence manifest and entry revisions still match. Retrieval exposes
|
|
62
|
+
execution provenance and recomputes source freshness. Historical results are
|
|
63
|
+
explicitly `currentTaskVerification:false`; they do not complete a new task.
|
|
64
|
+
Unrelated generated files and ordinary reads do not invalidate declared source checks. Unknown side effects mark affected verification unknown without rejecting execution. Tool responses return work, verification, receiptPersistence and memoryStorage separately; not_scheduled is not a successful memory save.
|
|
65
|
+
|
|
66
|
+
## Lisp and Plan
|
|
67
|
+
|
|
68
|
+
`lisp.executionMode` defaults to `development`, including when an old profile
|
|
69
|
+
omits it or has `approvalMode:ask`. Ordinary tools and Lisp coexist. Process RPC
|
|
70
|
+
and workspace proposals use the owned executor; helper toolsets still compile
|
|
71
|
+
and validate their schemas/examples. Worker failures leave ordinary tools
|
|
72
|
+
available. `executionMode:protected` explicitly selects the legacy isolated
|
|
73
|
+
worker/approval/fence behavior for compatibility; it is not the default.
|
|
74
|
+
|
|
75
|
+
Lisp source can directly call filesystem/FFI APIs in development mode. Such
|
|
76
|
+
effects are not independent process/test proof. Prefer `kioku.tools:call-tool`
|
|
77
|
+
and `kioku.process` for observed results. Plan blocks effectful owned/Lisp
|
|
78
|
+
operations. An explicit human implementation instruction or plan approval
|
|
79
|
+
requests Plan exit at the next accepted native boundary; merely presenting a
|
|
80
|
+
plan does not exit it.
|
|
81
|
+
|
|
82
|
+
## Local acceptance
|
|
83
|
+
|
|
84
|
+
```sh
|
|
85
|
+
npm run typecheck
|
|
86
|
+
KIOKUKO_REQUIRE_DSH_NATIVE=1 KIOKUKO_DSH_PACKAGE_ROOT="$PWD/tests/fixtures/dsh-runtime/node_modules" node scripts/run-tests.mjs tests/dsh/integration/owned-native-lifecycle.test.ts
|
|
87
|
+
KIOKUKO_REQUIRE_CARGO_RUNTIME=1 node scripts/run-tests.mjs tests/dsh/integration/owned-execution.test.ts
|
|
88
|
+
KIOKUKO_REQUIRE_LISP_RUNTIME=1 KIOKUKO_DSH_PACKAGE_ROOT="$PWD/tests/fixtures/dsh-runtime/node_modules" npm run test:lisp
|
|
89
|
+
npm run build
|
|
90
|
+
npm run test:skill-delivery
|
|
91
|
+
npm run test:modules
|
|
92
|
+
npm run pack:check
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The runtime tests use disposable profiles/databases and scripted provider
|
|
96
|
+
responses. They establish local/native execution, persistence and retrieval;
|
|
97
|
+
they do not prove a live provider or the user's installed profile. The test
|
|
98
|
+
runner bounds concurrent Lisp compilation to two files. Set
|
|
99
|
+
`KIOKUKO_TEST_CONCURRENCY` (1–64) to override it.
|
package/lisp/supervisor.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Trusted host helper, never evaluated inside Lisp. stdin is a parent-liveness
|
|
2
2
|
// pipe. It stays outside the worker sandbox so arbitrary Lisp cannot disable it.
|
|
3
3
|
import { spawn } from 'node:child_process'
|
|
4
|
-
import { openSync, closeSync } from 'node:fs'
|
|
4
|
+
import { openSync, closeSync, writeSync } from 'node:fs'
|
|
5
5
|
const launch = JSON.parse(process.argv[2])
|
|
6
6
|
let child, closing = false
|
|
7
7
|
const kill = () => {
|
|
@@ -21,6 +21,12 @@ const stdio = ['ignore', 'inherit', 'inherit', launch.protocol ? 3 : 'ignore']
|
|
|
21
21
|
if (filter !== undefined) stdio.push(filter)
|
|
22
22
|
child = spawn(launch.command, launch.args, { cwd: launch.cwd, env: launch.env, stdio, detached: !!launch.group })
|
|
23
23
|
if (filter !== undefined) closeSync(filter)
|
|
24
|
+
// Stream one JSON object: older readers still consume the complete terminal
|
|
25
|
+
// object, while current readers observe the prefix only after actual spawn.
|
|
26
|
+
child.once('spawn',()=>{if(launch.report){try{writeSync(4,'{"processStarted":true,')}catch{/* host already stopped */}}})
|
|
24
27
|
child.once('error', error => { process.stderr.write(`LISP_LAUNCH_ERROR: ${error.message}\n`); process.exit(70) })
|
|
25
|
-
child.once('exit', (code, signal) => {
|
|
28
|
+
child.once('exit', (code, signal) => {
|
|
29
|
+
if(launch.report){try{writeSync(4,JSON.stringify({exitCode:code,signal}).slice(1)+'\n')}catch{/* host already stopped */}}
|
|
30
|
+
if (launch.group) kill(); process.exit(signal ? 128 : code ?? 70)
|
|
31
|
+
})
|
|
26
32
|
if (closing) kill()
|
package/lisp/tools.lisp
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
(defpackage :kioku.decisions (:use :cl) (:export :status :evaluate :assess-relevance :classify-failure :assess-change :service-error :error-code))
|
|
10
10
|
(defpackage :kioku.typesafe (:use :cl) (:export :status :evaluate :service-error :error-code))
|
|
11
11
|
(defpackage :kioku.tools (:use :cl) (:export :describe-tools :describe-symbol :available-tools :call-tool))
|
|
12
|
+
(defpackage :kioku.code (:use :cl) (:shadow :open) (:export :capabilities :open :outline :enclosing :query :span :semantic :release :with-snapshot :service-error :error-code))
|
|
12
13
|
(defpackage :kioku.user (:use :cl))
|
|
13
14
|
(in-package :kioku.internal)
|
|
14
15
|
(defvar *wire*)
|
|
@@ -40,6 +41,8 @@
|
|
|
40
41
|
(unless (and reply (equal id (gethash "id" reply))) (error "RPC_MISMATCH"))
|
|
41
42
|
(unless (eq yason:true (gethash "ok" reply))
|
|
42
43
|
(let ((code (gethash "code" reply "")))
|
|
44
|
+
(when (and (stringp code) (alexandria:starts-with-subseq "CODE_" code))
|
|
45
|
+
(error 'kioku.code:service-error :code code :message (gethash "error" reply)))
|
|
43
46
|
(when (and (stringp code) (alexandria:starts-with-subseq "DECISION_" code))
|
|
44
47
|
(error 'kioku.decisions:service-error :code code :message (gethash "error" reply)))
|
|
45
48
|
(when (and (stringp code) (alexandria:starts-with-subseq "TYPESAFE_" code))
|
|
@@ -275,7 +278,7 @@
|
|
|
275
278
|
(vector (question "change" "Does the change satisfy the requirement without an evident regression?"
|
|
276
279
|
(vector (choice "yes" "Satisfies requirement") (choice "no" "Missing requirement or regression") (choice "abstain" "Insufficient evidence"))))))
|
|
277
280
|
(in-package :kioku.environment)
|
|
278
|
-
(defun status () (kioku.internal:object "generation" kioku.internal:*generation* "sbcl" (lisp-implementation-version) "os" (software-type) "architecture" (machine-type) "scratch" (namestring (kioku.files:scratch)) "network" yason:false "hostWrites" "proposals only" "libraries" #("yason" "cl-ppcre" "cl-csv")))
|
|
281
|
+
(defun status () (kioku.internal:object "generation" kioku.internal:*generation* "sbcl" (lisp-implementation-version) "os" (software-type) "architecture" (machine-type) "scratch" (namestring (kioku.files:scratch)) "executionMode" (or (uiop:getenv "KIOKU_EXECUTION_MODE") "protected") "network" (if (equal (uiop:getenv "KIOKU_EXECUTION_MODE") "development") "normal user environment" yason:false) "hostWrites" (if (equal (uiop:getenv "KIOKU_EXECUTION_MODE") "development") "owned tools and direct Lisp; only host receipts prove observed effects" "proposals only") "libraries" #("yason" "cl-ppcre" "cl-csv")))
|
|
279
282
|
(in-package :kioku.tools)
|
|
280
283
|
(defun available-tools () (kioku.internal:rpc "tools-list" (kioku.internal:object)))
|
|
281
284
|
(defun call-tool (name &optional (arguments (kioku.internal:object)))
|
|
@@ -296,7 +299,7 @@
|
|
|
296
299
|
(kioku.internal:object "package" "kioku.user" "generation" kioku.internal:*generation*
|
|
297
300
|
"symbols" (coerce (task-functions) 'vector))))
|
|
298
301
|
(let ((package (find-package (string-upcase name))))
|
|
299
|
-
(when (and package (member (package-name package) '("KIOKU.TOOLS" "KIOKU.PROCESS" "KIOKU.FILES" "KIOKU.DATA" "KIOKU.OBJECTS" "KIOKU.ENVIRONMENT" "KIOKU.CI" "KIOKU.PACKAGES" "KIOKU.TYPESAFE") :test #'equal))
|
|
302
|
+
(when (and package (member (package-name package) '("KIOKU.TOOLS" "KIOKU.PROCESS" "KIOKU.FILES" "KIOKU.DATA" "KIOKU.OBJECTS" "KIOKU.ENVIRONMENT" "KIOKU.CI" "KIOKU.PACKAGES" "KIOKU.TYPESAFE" "KIOKU.CODE") :test #'equal))
|
|
300
303
|
(return-from describe-symbol
|
|
301
304
|
(kioku.internal:object "package" (string-downcase (package-name package))
|
|
302
305
|
"symbols" (coerce (sort (loop for symbol being the external-symbols of package
|
|
@@ -306,7 +309,7 @@
|
|
|
306
309
|
(multiple-value-bind (symbol end) (read-from-string name)
|
|
307
310
|
(unless (and (symbolp symbol) (symbol-package symbol) (fboundp symbol)
|
|
308
311
|
(zerop (length (string-trim '(#\Space #\Tab #\Newline #\Return) (subseq name end))))
|
|
309
|
-
(member (package-name (symbol-package symbol)) '("KIOKU.USER" "KIOKU.TOOLS" "KIOKU.PROCESS" "KIOKU.FILES" "KIOKU.DATA" "KIOKU.OBJECTS" "KIOKU.ENVIRONMENT" "KIOKU.CI" "KIOKU.PACKAGES" "KIOKU.TYPESAFE") :test #'equal))
|
|
312
|
+
(member (package-name (symbol-package symbol)) '("KIOKU.USER" "KIOKU.TOOLS" "KIOKU.PROCESS" "KIOKU.FILES" "KIOKU.DATA" "KIOKU.OBJECTS" "KIOKU.ENVIRONMENT" "KIOKU.CI" "KIOKU.PACKAGES" "KIOKU.TYPESAFE" "KIOKU.CODE") :test #'equal))
|
|
310
313
|
(error "UNKNOWN_SYMBOL"))
|
|
311
314
|
(kioku.internal:object "symbol" name "arguments" (kioku.internal::printed (sb-introspect:function-lambda-list symbol)) "documentation" (or (documentation symbol 'function) "No function documentation."))))))
|
|
312
315
|
|
|
@@ -521,3 +524,28 @@
|
|
|
521
524
|
(list (loop for line in lines while (< (length out) cap) do (visit line)))
|
|
522
525
|
(vector (loop for line across lines while (< (length out) cap) do (visit line)))))
|
|
523
526
|
(coerce out 'simple-vector)))
|
|
527
|
+
|
|
528
|
+
(in-package :kioku.code)
|
|
529
|
+
(define-condition service-error (error)
|
|
530
|
+
((code :initarg :code :reader error-code) (message :initarg :message :reader service-message))
|
|
531
|
+
(:report (lambda (condition stream) (format stream "~A: ~A" (error-code condition) (service-message condition)))))
|
|
532
|
+
(defun %request (method &rest pairs)
|
|
533
|
+
(let ((args (make-hash-table :test 'equal)))
|
|
534
|
+
(loop for (key value) on pairs by #'cddr when value do (setf (gethash key args) value))
|
|
535
|
+
(kioku.internal:rpc method args)))
|
|
536
|
+
(defun capabilities () (%request "code-capabilities"))
|
|
537
|
+
(defun open (path) (%request "code-open" "path" path))
|
|
538
|
+
(defun outline (handle &key range limit) (%request "code-outline" "handle" handle "range" range "limit" limit))
|
|
539
|
+
(defun enclosing (handle position &key kinds) (%request "code-enclosing" "handle" handle "position" position "kinds" (and kinds (coerce kinds 'vector))))
|
|
540
|
+
(defun query (handle query-id &key range limit) (%request "code-query" "handle" handle "queryId" query-id "range" range "limit" limit))
|
|
541
|
+
(defun span (node-handle &key max-chars) (%request "code-span" "nodeHandle" node-handle "maxChars" max-chars))
|
|
542
|
+
(defun semantic (handle kind &key position limit) (%request "code-semantic" "handle" handle "kind" kind "position" position "limit" limit))
|
|
543
|
+
(defun release (handle) (%request "code-release" "handle" handle))
|
|
544
|
+
(defmacro with-snapshot ((handle path) &body body)
|
|
545
|
+
"Bind HANDLE only for an accepted snapshot; always release, including errors."
|
|
546
|
+
(let ((response (gensym "SNAPSHOT")))
|
|
547
|
+
`(let ((,response (open ,path)))
|
|
548
|
+
(if (member (gethash "status" ,response) '("ok" "partial") :test #'equal)
|
|
549
|
+
(let ((,handle (gethash "handle" (gethash "data" ,response))))
|
|
550
|
+
(unwind-protect (progn ,@body) (release ,handle)))
|
|
551
|
+
,response))))
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
CREATE TABLE dsh_owned_operations (
|
|
2
|
+
operation_id TEXT PRIMARY KEY,
|
|
3
|
+
run_id TEXT NOT NULL REFERENCES ledger_runs(run_id) ON DELETE CASCADE,
|
|
4
|
+
session_id TEXT NOT NULL,
|
|
5
|
+
generation TEXT NOT NULL,
|
|
6
|
+
request_digest TEXT NOT NULL,
|
|
7
|
+
state TEXT NOT NULL CHECK(state IN ('started','completed','unknown')),
|
|
8
|
+
receipt_json TEXT NOT NULL CHECK(json_valid(receipt_json)),
|
|
9
|
+
updated_at TEXT NOT NULL
|
|
10
|
+
);
|
|
11
|
+
CREATE INDEX idx_dsh_owned_operations_run ON dsh_owned_operations(run_id, generation);
|
|
12
|
+
CREATE TABLE memory_execution_links (
|
|
13
|
+
entry_id TEXT NOT NULL REFERENCES entries(id) ON DELETE CASCADE,
|
|
14
|
+
revision INTEGER NOT NULL,
|
|
15
|
+
operation_id TEXT NOT NULL REFERENCES dsh_owned_operations(operation_id),
|
|
16
|
+
PRIMARY KEY(entry_id, revision, operation_id)
|
|
17
|
+
);
|
|
18
|
+
ALTER TABLE dsh_memory_finalizations ADD COLUMN staged_capsule_json TEXT CHECK(staged_capsule_json IS NULL OR json_valid(staged_capsule_json));
|
|
19
|
+
ALTER TABLE dsh_memory_finalizations ADD COLUMN staged_binding_hash TEXT;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kiokuko-dsh",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Kiokuko plugin for DeepSeek Harness",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
]
|
|
103
103
|
},
|
|
104
104
|
"permissions": {
|
|
105
|
-
"summary": "
|
|
105
|
+
"summary": "Kiokuko-owned local development execution, candidate memory and host receipts; normal user environment, PATH commands and child processes. Concrete confirmation for source/data deletion and durable user database changes.",
|
|
106
106
|
"readPaths": [
|
|
107
107
|
"Configured Kiokuko SQLite database and embedding assets",
|
|
108
108
|
"Registered project roots and their repository metadata",
|
|
@@ -117,12 +117,13 @@
|
|
|
117
117
|
"DSH run, lease, receipt, retrieval, Deep inputs/artifacts/budgets/reports, post-completion memory-finalization, and embedding state inside that database",
|
|
118
118
|
".agenticreplay/runs and .agenticreplay/exports inside verified session workspaces, or the configured Kiokuko data directory",
|
|
119
119
|
"Legacy history compatibility under DSH's native write lease: exact rejected v3 file or validated new v3 generation from retained v0, identical .bak, disposable validation artifacts, and automatic deletion of confirmed identity-mismatched native logs",
|
|
120
|
-
"Opt-in Lisp scratch, input snapshots, verified compiled bundle cache, durable operation journal, and approved file changes with host backups"
|
|
120
|
+
"Opt-in Lisp scratch, input snapshots, verified compiled bundle cache, durable operation journal, and approved file changes with host backups",
|
|
121
|
+
"Project files through owned native tools; private execution outbox beside the configured Kiokuko database"
|
|
121
122
|
],
|
|
122
123
|
"commands": [
|
|
123
124
|
"Restricted repository-relative verifier and backup subprocesses when explicitly requested",
|
|
124
125
|
"Read-only fixed-argument Git commands for an explicitly captured Diff review",
|
|
125
|
-
"
|
|
126
|
+
"Owned bash/zsh, PATH commands, builds/tests and Lisp with the normal user environment; explicit protected Lisp compatibility mode remains available"
|
|
126
127
|
],
|
|
127
128
|
"externalServices": [
|
|
128
129
|
"GitHub or skills.sh for optional Skill discovery and source retrieval",
|
|
@@ -132,12 +133,14 @@
|
|
|
132
133
|
"DSH-configured model provider for automatic memory review (active by default, up to 12 worker dispatches per project per UTC day), ordinary finalization and configured memory evolution",
|
|
133
134
|
"Configured TypeSafe fixed endpoint or explicit Nimble HTTPS/loopback endpoint for automatic task/Skill/draft decisions, projected memory reuse after a synthetic readiness probe, and Lisp; no redirects, retries or provider substitution; exact roles.check no-tool fallback for complete draft review",
|
|
134
135
|
"Explicit Laya-CoreML Unix socket for local finite decisions using the existing v1 worker or optional strict operations; no subprocess client, automatic worker startup, model downloads or provider substitution",
|
|
135
|
-
"DSH-configured admitted provider/model for default-active source-backed index reasoning: up to 8 worker dispatches per workspace per UTC day; no retrieval-time generation or automatic resend of uncertain dispatches"
|
|
136
|
+
"DSH-configured admitted provider/model for default-active source-backed index reasoning: up to 8 worker dispatches per workspace per UTC day; no retrieval-time generation or automatic resend of uncertain dispatches",
|
|
137
|
+
"User-configured AI API endpoints and vendored provider OAuth flows through Kiokuko Models"
|
|
136
138
|
],
|
|
137
139
|
"credentials": [
|
|
138
140
|
"Optional user-provided GitHub or embedding credentials; never bundled or persisted by the plugin",
|
|
139
141
|
"TYPESAFE_API_KEY resolved per explicit call; optional DSH-managed set/unset via /kioku-typesafe-key, inherited environment precedence, no worker or Kiokuko storage exposure; input visible while typing",
|
|
140
|
-
"Optional separate Nimble bearer credential reference through DSH; TYPESAFE_API_KEY is prohibited for Nimble; credentials are never persisted in decision records"
|
|
142
|
+
"Optional separate Nimble bearer credential reference through DSH; TYPESAFE_API_KEY is prohibited for Nimble; credentials are never persisted in decision records",
|
|
143
|
+
"Shared dsh-auth credentials: human Web login/key replacement/logout; logout also affects dsh-cli"
|
|
141
144
|
],
|
|
142
145
|
"failureBoundaries": [
|
|
143
146
|
"Repository identity, run identity, lease, revision, and integrity mismatches fail closed",
|
|
@@ -154,7 +157,7 @@
|
|
|
154
157
|
},
|
|
155
158
|
"scripts": {
|
|
156
159
|
"clean:dist": "node --input-type=module --eval \"import { rmSync } from 'node:fs'; rmSync('dist', { recursive: true, force: true });\"",
|
|
157
|
-
"build": "npm run clean:dist && tsc -p tsconfig.build.json && node scripts/compile-skill-prompts.mjs && node scripts/build-dsh-client.mjs && node scripts/build-history-codecs.mjs && node scripts/build-plugin-entry.mjs",
|
|
160
|
+
"build": "npm run clean:dist && tsc -p tsconfig.build.json && node scripts/build-model-transports.mjs && node scripts/compile-skill-prompts.mjs && node scripts/build-dsh-client.mjs && node scripts/build-history-codecs.mjs && node scripts/build-plugin-entry.mjs",
|
|
158
161
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
159
162
|
"test": "node scripts/run-tests.mjs tests/dsh",
|
|
160
163
|
"test:harness": "node --import tsx scripts/run-harness-evaluation.mjs",
|
|
@@ -237,16 +240,20 @@
|
|
|
237
240
|
"test:ci:prepare": "npm run verify:prepare",
|
|
238
241
|
"test:ci:embedding": "node scripts/run-local-embedding-smoke.mjs --offline",
|
|
239
242
|
"test:ci:approval:web": "npm run build && node scripts/run-ci-native.mjs browser-approval",
|
|
240
|
-
"test:ci:shortcuts:web": "npm run build && node scripts/run-ci-native.mjs browser-shortcuts"
|
|
243
|
+
"test:ci:shortcuts:web": "npm run build && node scripts/run-ci-native.mjs browser-shortcuts",
|
|
244
|
+
"test:models:web": "npm run build && node scripts/verify-models-web.mjs",
|
|
245
|
+
"test:code-intelligence": "node scripts/run-code-intelligence.mjs",
|
|
246
|
+
"test:code-intelligence:packed": "node scripts/run-code-intelligence.mjs --packed",
|
|
247
|
+
"test:code-intelligence:benchmark": "node scripts/benchmark-code-intelligence.mjs"
|
|
241
248
|
},
|
|
242
249
|
"dependencies": {
|
|
243
250
|
"@deepseek-ai/cosmokit": "1.8.5",
|
|
244
|
-
"@deepseek-ai/schemastery": "3.18.
|
|
251
|
+
"@deepseek-ai/schemastery": "3.18.5-alpha.1",
|
|
252
|
+
"agenticreplay": ">=0.1.0 <1.0.0",
|
|
245
253
|
"jsonc-parser": "3.3.1",
|
|
246
254
|
"semver": "7.8.5",
|
|
247
255
|
"yaml": "2.9.0",
|
|
248
|
-
"zod": "4.5.4"
|
|
249
|
-
"agenticreplay": ">=0.1.0 <1.0.0"
|
|
256
|
+
"zod": "4.5.4"
|
|
250
257
|
},
|
|
251
258
|
"overrides": {
|
|
252
259
|
"adm-zip": "0.6.1",
|
|
@@ -254,7 +261,12 @@
|
|
|
254
261
|
"global-agent": "4.1.3"
|
|
255
262
|
},
|
|
256
263
|
"peerDependencies": {
|
|
264
|
+
"@ai-sdk/provider": "4.0.21",
|
|
257
265
|
"@deepseek-ai/cordis": "~4.0.5-alpha.1",
|
|
266
|
+
"@deepseek-ai/dsh-agent": "0.2.1-alpha.2",
|
|
267
|
+
"@deepseek-ai/dsh-attachment": "0.2.1-alpha.2",
|
|
268
|
+
"@deepseek-ai/dsh-llm": "0.2.1-alpha.2",
|
|
269
|
+
"@deepseek-ai/dsh-llm-pi-ai": "0.2.1-alpha.2",
|
|
258
270
|
"@huggingface/hub": "2.16.1",
|
|
259
271
|
"@huggingface/transformers": "4.2.0",
|
|
260
272
|
"sqlite-vec": "0.1.9"
|
|
@@ -268,11 +280,34 @@
|
|
|
268
280
|
},
|
|
269
281
|
"sqlite-vec": {
|
|
270
282
|
"optional": true
|
|
283
|
+
},
|
|
284
|
+
"@deepseek-ai/dsh-llm": {
|
|
285
|
+
"optional": true
|
|
286
|
+
},
|
|
287
|
+
"@deepseek-ai/dsh-llm-pi-ai": {
|
|
288
|
+
"optional": true
|
|
289
|
+
},
|
|
290
|
+
"@deepseek-ai/dsh-agent": {
|
|
291
|
+
"optional": true
|
|
292
|
+
},
|
|
293
|
+
"@deepseek-ai/dsh-attachment": {
|
|
294
|
+
"optional": true
|
|
295
|
+
},
|
|
296
|
+
"@ai-sdk/provider": {
|
|
297
|
+
"optional": true
|
|
271
298
|
}
|
|
272
299
|
},
|
|
273
300
|
"devDependencies": {
|
|
301
|
+
"@ai-sdk/anthropic": "4.0.71",
|
|
302
|
+
"@ai-sdk/google": "4.0.87",
|
|
303
|
+
"@ai-sdk/openai": "4.0.83",
|
|
304
|
+
"@ai-sdk/openai-compatible": "3.0.62",
|
|
305
|
+
"@ai-sdk/provider": "4.0.21",
|
|
274
306
|
"@deepseek-ai/cordis": "4.0.5-alpha.1",
|
|
307
|
+
"@deepseek-ai/dsh-agent": "0.2.1-alpha.2",
|
|
308
|
+
"@deepseek-ai/dsh-attachment": "0.2.1-alpha.2",
|
|
275
309
|
"@deepseek-ai/dsh-llm": "0.2.1-alpha.2",
|
|
310
|
+
"@deepseek-ai/dsh-llm-pi-ai": "0.2.1-alpha.2",
|
|
276
311
|
"@deepseek-ai/dsh-session-format": "0.2.1-alpha.2",
|
|
277
312
|
"@deepseek-ai/dsh-session-format-v0-to-v1": "0.2.1-alpha.2",
|
|
278
313
|
"@deepseek-ai/dsh-session-format-v1-to-v2": "0.2.1-alpha.2",
|