kiokuko-dsh 0.2.41 → 0.2.42

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 (93) hide show
  1. package/README.md +2 -2
  2. package/dist/client.cjs +19 -5
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/dsh/core/host.d.ts.map +1 -1
  5. package/dist/dsh/core/host.js +8 -6
  6. package/dist/dsh/core/host.js.map +1 -1
  7. package/dist/dsh/core/tasks.d.ts.map +1 -1
  8. package/dist/dsh/core/tasks.js +10 -2
  9. package/dist/dsh/core/tasks.js.map +1 -1
  10. package/dist/dsh/decisions/akinator-answers.d.ts +12 -0
  11. package/dist/dsh/decisions/akinator-answers.d.ts.map +1 -0
  12. package/dist/dsh/decisions/akinator-answers.js +30 -0
  13. package/dist/dsh/decisions/akinator-answers.js.map +1 -0
  14. package/dist/dsh/decisions/service.d.ts.map +1 -1
  15. package/dist/dsh/decisions/service.js +13 -1
  16. package/dist/dsh/decisions/service.js.map +1 -1
  17. package/dist/dsh/existing-task-intake.d.ts +3 -0
  18. package/dist/dsh/existing-task-intake.d.ts.map +1 -1
  19. package/dist/dsh/existing-task-intake.js +6 -2
  20. package/dist/dsh/existing-task-intake.js.map +1 -1
  21. package/dist/dsh/harness/factory.d.ts +2 -1
  22. package/dist/dsh/harness/factory.d.ts.map +1 -1
  23. package/dist/dsh/harness/factory.js +21 -5
  24. package/dist/dsh/harness/factory.js.map +1 -1
  25. package/dist/dsh/host-adapter.d.ts.map +1 -1
  26. package/dist/dsh/host-adapter.js +6 -2
  27. package/dist/dsh/host-adapter.js.map +1 -1
  28. package/dist/dsh/intake-gate.d.ts.map +1 -1
  29. package/dist/dsh/intake-gate.js +7 -2
  30. package/dist/dsh/intake-gate.js.map +1 -1
  31. package/dist/dsh/intake-profile-resolver.d.ts.map +1 -1
  32. package/dist/dsh/intake-profile-resolver.js +4 -9
  33. package/dist/dsh/intake-profile-resolver.js.map +1 -1
  34. package/dist/dsh/lisp/native-child-ownership.d.ts +31 -0
  35. package/dist/dsh/lisp/native-child-ownership.d.ts.map +1 -0
  36. package/dist/dsh/lisp/native-child-ownership.js +66 -0
  37. package/dist/dsh/lisp/native-child-ownership.js.map +1 -0
  38. package/dist/dsh/lisp/surface.d.ts.map +1 -1
  39. package/dist/dsh/lisp/surface.js +7 -2
  40. package/dist/dsh/lisp/surface.js.map +1 -1
  41. package/dist/dsh/model-routing.d.ts.map +1 -1
  42. package/dist/dsh/model-routing.js +8 -2
  43. package/dist/dsh/model-routing.js.map +1 -1
  44. package/dist/dsh/models/profiles.d.ts.map +1 -1
  45. package/dist/dsh/models/profiles.js +4 -1
  46. package/dist/dsh/models/profiles.js.map +1 -1
  47. package/dist/dsh/models/service.d.ts +8 -0
  48. package/dist/dsh/models/service.d.ts.map +1 -1
  49. package/dist/dsh/models/service.js +29 -5
  50. package/dist/dsh/models/service.js.map +1 -1
  51. package/dist/dsh/models/vendor/infron-listing.d.ts +17 -0
  52. package/dist/dsh/models/vendor/infron-listing.d.ts.map +1 -0
  53. package/dist/dsh/models/vendor/infron-listing.js +97 -0
  54. package/dist/dsh/models/vendor/infron-listing.js.map +1 -0
  55. package/dist/dsh/models/vendor/opencode-adapter.d.ts.map +1 -1
  56. package/dist/dsh/models/vendor/opencode-adapter.js +6 -1
  57. package/dist/dsh/models/vendor/opencode-adapter.js.map +1 -1
  58. package/dist/dsh/native-task-authority.js +1 -1
  59. package/dist/dsh/native-task-authority.js.map +1 -1
  60. package/dist/dsh/native-worker-routing.d.ts.map +1 -1
  61. package/dist/dsh/native-worker-routing.js +5 -3
  62. package/dist/dsh/native-worker-routing.js.map +1 -1
  63. package/dist/dsh/on-demand-intake.d.ts +9 -2
  64. package/dist/dsh/on-demand-intake.d.ts.map +1 -1
  65. package/dist/dsh/on-demand-intake.js +39 -1
  66. package/dist/dsh/on-demand-intake.js.map +1 -1
  67. package/dist/dsh/orchestration/managed-agent-executor.d.ts +14 -13
  68. package/dist/dsh/orchestration/managed-agent-executor.d.ts.map +1 -1
  69. package/dist/dsh/orchestration/managed-agent-executor.js +7 -2
  70. package/dist/dsh/orchestration/managed-agent-executor.js.map +1 -1
  71. package/dist/dsh/repository-learning.d.ts +1 -0
  72. package/dist/dsh/repository-learning.d.ts.map +1 -1
  73. package/dist/dsh/repository-learning.js +70 -9
  74. package/dist/dsh/repository-learning.js.map +1 -1
  75. package/dist/dsh/task-startup.d.ts.map +1 -1
  76. package/dist/dsh/task-startup.js +4 -7
  77. package/dist/dsh/task-startup.js.map +1 -1
  78. package/dist/dsh/task-state-host.d.ts +4 -0
  79. package/dist/dsh/task-state-host.d.ts.map +1 -1
  80. package/dist/dsh/task-state-host.js +20 -1
  81. package/dist/dsh/task-state-host.js.map +1 -1
  82. package/dist/locale/en.json +1 -1
  83. package/dist/locale/ja.json +1 -1
  84. package/dist/locale/ko.json +1 -1
  85. package/dist/locale/zh-CN.json +1 -1
  86. package/dist/models-client.cjs +1 -0
  87. package/docs/kiokuko-harness.md +2 -2
  88. package/docs/kiokuko-models.md +8 -0
  89. package/docs/lisp.md +1 -1
  90. package/docs/on-demand-intake.md +4 -2
  91. package/docs/repository-learning.md +14 -37
  92. package/docs/typed-decisions.md +3 -2
  93. package/package.json +1 -1
package/docs/lisp.md CHANGED
@@ -605,6 +605,6 @@ Clean installation and platform status: [code intelligence setup](code-intellige
605
605
  ## Coding task choice and recovery
606
606
 
607
607
  For a new coding task, `coding_workflow` first defines and displays the Goal, implementation items and observable conditions. The host then asks whether to use Lisp. Configuration alone never implies yes; an explicit manual session ON is reused as the selected route.
608
- `startupDefaults.lisp` (default `ask`) only preselects the Lisp answer on the task-startup card, which stays editable; a saved answer still wins. The default never enables the module or satisfies a yes: a missing runtime or failed startup remains the same recoverable blocker. Closing the question leaves it pending and `coding_workflow next` reopens the same question. Explicit continuation after a host restart restores the task choice; a new task or material scope change asks again. A saved yes followed by startup failure remains a visible blocker; recover the runtime or explicitly change the task route with `/kioku-lisp disable`. No uses ordinary tools and still requires fresh item checks followed by a final user-entry Goal check. Lisp evaluation success alone is insufficient: bind `task_completion` and collect actual host process evidence. See [coding workflow](coding-workflow.md).
608
+ `startupDefaults.lisp` (default `ask`) only preselects the Lisp answer on the task-startup card, which stays editable; a saved answer still wins. The default never enables the module or satisfies a yes: a missing runtime or failed startup remains the same recoverable blocker. Closing the question leaves it pending and `coding_workflow next` reopens the same question. The combined startup card reuses the chat choice after restart and on ordinary follow-ups. A different chat or repository asks separately; explicit Lisp commands still override the inherited choice. A saved yes followed by startup failure remains a visible blocker; recover the runtime or explicitly change the task route with `/kioku-lisp disable`. No uses ordinary tools and still requires fresh item checks followed by a final user-entry Goal check. Lisp evaluation success alone is insufficient: bind `task_completion` and collect actual host process evidence. See [coding workflow](coding-workflow.md).
609
609
 
610
610
  Live opt-in condition/restart recovery: see [bounded recovery](lisp-recovery.md).
@@ -9,13 +9,15 @@ await mountCore(context, {
9
9
  })
10
10
  ```
11
11
 
12
- An explicit `intakeMode: 'eager'` retains upfront preparation for known intent. Native adapters now hand classifier abstention, failure or rejected input to ordinary model reasoning instead of asking the generic task-category question. The original request is retained; explicitly prepared and owned effects still require their preparation and existing host checks. Ordinary native Bash remains on its native permission path, independently of optional preparation. Disabling typed decisions defers interpretation to the main model using the same source-bound contract. Unknown mode values are rejected.
12
+ An explicit `intakeMode: 'eager'` retains upfront preparation for known intent. Native Akinator first asks the configured decision provider to answer each missing intake question. A decision below 51% certainty, abstention, failure or rejected input sends that question to the human through the native question UI. The original request is retained; explicitly prepared and owned effects still require their preparation and existing host checks. Ordinary native Bash remains on its native permission path, independently of optional preparation. Disabling typed decisions defers interpretation to the main model using the same source-bound contract. Unknown mode values are rejected.
13
13
 
14
14
  A separately supplied custom execution host can use the exported `createDshHostAdapter`, or must implement the same native `onDemandIntake` ownership contract; it cannot be safely synthesized from a tool list. Unsupported custom execution hosts fail with an actionable error rather than silently reverting to upfront questions. They may be updated or deliberately configured with the legacy eager opt-out. Prompt/Skill-only custom hosts own no execution ingress and remain supported.
15
15
 
16
16
  ## Conversation before execution
17
17
 
18
- The native model receives the complete original user messages and may answer or ask a concrete clarification without opening Akinator's generic purpose question. The initial answer path does not fabricate a chat profile, ready intake, active ledger run, or completed task. Laya's result is provisional intent only; an abstention does not prevent conversation. A queued human request after a normal turn is classified independently rather than inheriting that stale turn's execution readiness.
18
+ The native model receives the complete original user messages. Akinator resolves purpose, target and success criteria through decisions first. Answers at or above 51% certainty are accepted; lower certainty, abstention or unavailable decisions ask the human the unresolved question. Probability-based providers use the selected answer's probability; TypeSafe uses its confidence. This threshold applies only to Akinator and does not change execution or permission decisions. Target and success answers must select actual request or current task evidence; the working directory and a generic completion promise are not substitutes. Human and decision answers are labelled separately alongside the unchanged request.
19
+
20
+ When decisions are explicitly OFF, ordinary conversation proceeds normally, while unresolved action references such as “Fix it” still ask for missing target and success criteria. Prepared task intake likewise leaves missing fields unanswered. Clarification creates no execution authority, active ledger run or completed task. A queued human request after a normal turn is classified independently rather than inheriting that stale turn's execution readiness.
19
21
 
20
22
  Research, writing and action requests remain work requests. The host guidance tells the assistant to prepare requested tool-backed work rather than silently substitute a text answer or claim unperformed work.
21
23
 
@@ -1,22 +1,20 @@
1
1
  # Continuous repository learning
2
2
 
3
- Kiokuko automatically checks each **native conversation turn** (`turn/start` through
4
- `turn/end`), not every token or intermediate model step. Task completion and a
5
- post-task approval dialog are not prerequisites. Failed, cancelled, no-tool and
6
- unknown turns are retained as those lifecycle observations, never as verified task
7
- success.
3
+ Kiokuko offers review after each completed or failed **native conversation turn**, including answers without tools. First it asks whether to organize the turn. It then shows the exact proposed summary, lessons and sources and asks whether to save them. Neither a completed turn nor model output authorizes persistence.
4
+
5
+ Decline, dismissal, missing question UI, Stop, a new turn and plugin reload save no pending proposal. Cancelled and unknown turns do not open review or create memories. Existing stored memories are preserved.
8
6
 
9
7
  ## Normal startup and data flow
10
8
 
11
9
  The public plugin's lifecycle memory mounts the repository-learning coordinator.
12
10
  At a turn boundary it freezes bounded, redacted native user/tool/result/assistant
13
- observations, the native session/turn identity and the current model route. It uses
11
+ observations, the native session/turn identity and the current model route. After the human chooses to organize, it uses
14
12
  the host's actual `llm.prepareCall` / `llm.stream` API on that route, with no tools,
15
13
  to propose up to four source-cited hypotheses. An externally registered
16
14
  `kiokukoReplayReflector` service is **not required** for this path.
17
15
 
18
16
  The reflector receives the previous repository compact and this turn's evidence.
19
- It can refine previous hypotheses in light of new evidence. SQLite appends the
17
+ It can refine previous hypotheses in light of new evidence. After approval of the displayed proposal, SQLite appends the
20
18
  turn and atomically updates a bounded projection: recent observations and compact
21
19
  hypotheses, including provenance, uncertainty, repeated occurrence counts and
22
20
  repository tags. A correction may name existing hypothesis IDs in `supersedes`, supply a
@@ -27,8 +25,7 @@ model-proposed corrections, not established truth. Distinct remaining hypotheses
27
25
  retain an unresolved-compatibility assessment. History remains in SQLite while the
28
26
  model-visible projection has a whole-point budget; omitted points are counted.
29
27
 
30
- Before subsequent model steps, the coordinator waits for preceding repository
31
- learning and reads that repository's projection directly. **Keyword overlap is not
28
+ A new turn cancels any pending review, then reads the repository's approved projection. **Keyword overlap is not
32
29
  required**. A new session in the same canonical repository gets the accumulated
33
30
  compact; another repository does not. Root identity comes from trusted host cwd
34
31
  and repository resolution, not model-supplied tags. The injected section is
@@ -42,20 +39,17 @@ on the active prompt surface.
42
39
  Migration `048_repository_learning.sql` adds the append-only turn ledger and
43
40
  bounded repository projection. Idempotent session/turn identities prevent duplicate
44
41
  records. Updates use an immediate SQLite transaction and capture-policy revision
45
- checks. At plugin reload the latest native turn is reconstructed from up to 512
46
- session events (excluding inherited fork history); already saved turns are not
47
- reflected again. Earlier unsaved turns beyond this bounded recovery window are not
48
- claimed recovered.
42
+ checks. At plugin reload, up to 512 session events reconstruct an active turn, excluding inherited history. Historical terminal events do not reopen review or repeat reflection. Approval closures do not survive reload.
49
43
 
50
44
  Ignorable session plugin records named `plugin:kiokuko-dsh/repository-learning`
51
45
  (and live host events `kiokuko/repository-learning`) report capture and retrieval:
52
46
 
53
- - capture: saved, duplicate, excluded or unavailable; revision and reflection status;
47
+ - capture: saved, duplicate, declined, review_unavailable, discarded, excluded or unavailable; revision and reflection status;
54
48
  - retrieval: injected, empty or unavailable; injected and omitted point counts.
55
49
 
56
50
  A missing model route, malformed/ungrounded result or 15-second model deadline
57
51
  produces an explicit unavailable/invalid reflection status. The observed turn can
58
- still be saved without invented model lessons. Database/capture failures are
52
+ still be proposed without invented model lessons, but requires approval before saving. Database/capture failures are
59
53
  reported as unavailable, not silently described as successful saving. This feature
60
54
  never launches DSH, changes repository source, runs learned commands or grants tool
61
55
  permissions.
@@ -85,25 +79,8 @@ process.
85
79
 
86
80
  ## Interrupted saves and recovery
87
81
 
88
- Reflection has a bounded deadline and no automatic network retry. A disconnected
89
- or invalid model stream may still save the observed turn with an unavailable or
90
- invalid reflection, without inventing a lesson. Foreground work can continue.
91
- SQLite writes retry only recognized lock contention under the existing finite
92
- backoff policy; no tool or external side effect is replayed by learning recovery.
93
-
94
- | Boundary | Durable result and recovery |
95
- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
96
- | Before/during/after the model response | Save observations only if reflection fails; the next turn remains usable. |
97
- | Failure inside the save transaction | Roll back turn and projection together. Capture diagnostics report `saveState: not_saved`; reload the plugin to retry the latest retained native turn, or use `/kioku-memory learning reset` to discard it. |
98
- | Commit succeeded but acknowledgement was lost | Re-read the exact repository/session/turn. Report `saved` when found, `unknown` if storage cannot be read. Do not assume rollback or repeat tools. Reload reconciles the stored identity before any new reflection. |
99
- | Process exits before/after commit | SQLite rollback or committed turn survives reopening. The exact identity prevents a second save. Recovery remains limited to the latest 512 retained native events. |
100
- | Explicit native Stop or agent/workspace ownership loss | Discard unsaved in-flight reflection, retain only a payload-free retired identity, and reject its late result after reload. Already committed observations are not undone. |
101
- | Plugin reload | Abort the old coordinator; reconstruct the latest retained turn. A saved turn is a duplicate, an unsaved turn can be retried. No raw reflection response is persisted for retry. |
102
- | New instruction or next turn | Completed earlier turns append in order to the current projection; they do not replace a newer snapshot with an old snapshot. Stop can cancel outstanding reflection so the next instruction can proceed. |
103
- | Reset/forget | Existing admission epochs and tombstones reject pre-reset results. Reset also clears current-repository pending admissions; new turns remain enabled. |
104
-
105
- Capture diagnostics retain only safe identities/counts, `saveState`, and a
106
- `reload_or_reset` recovery hint when a save is absent or uncertain. There is no
107
- background retry queue or indefinite lease on a model request. A model timeout,
108
- unknown save outcome or exhausted SQLite retry is not claimed automatically
109
- recovered. Reset does not erase native logs or user data.
82
+ Reflection has a bounded deadline and no automatic network retry. A failed model call may produce a summary-only proposal; it never permits an automatic save. Foreground work remains usable.
83
+
84
+ SQLite retries recognized lock contention under its finite backoff policy only while the same approval remains active. An uncertain commit is reconciled against the exact repository/session/turn identity. A failed save is reported as absent or unknown; reload never recreates its approval or retries the old proposal. A new completed turn offers a new review.
85
+
86
+ Reset, forgetting, native Stop, owner changes and capture exclusions retain their existing fences. Already saved records are not undone by cancelling a later proposal. Native conversation logs are separate from reusable memory and are not erased by declining a save.
@@ -145,8 +145,9 @@ shown in the card; selection does not prove authentication or successful inferen
145
145
  options as the preset; the native question UI preselects a label ending in
146
146
  ` (Recommended)`, so the card still opens editable. A preset grants no authority.
147
147
  Immutable existing decision bindings also retain the task choice, without granting
148
- tool or file authority. The same request and explicit continuation reuse the choice;
149
- an unrelated new request asks again. Cancel/Skip starts no task. Headless operation with `ask` keeps the
148
+ tool or file authority. Later turns in the same chat and repository reuse the accepted
149
+ choice, including new tasks and session reloads. Cancel/Skip starts no task and is not
150
+ inherited by a later turn. Headless operation with `ask` keeps the
150
151
  configured decision mode and explicit manual Lisp preference; `on`/`off` supply that
151
152
  answer instead. An explicit
152
153
  `typedDecisions.startup: { decision: true, lisp: true }` config selects both and
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiokuko-dsh",
3
- "version": "0.2.41",
3
+ "version": "0.2.42",
4
4
  "description": "Kiokuko plugin for DeepSeek Harness",
5
5
  "type": "module",
6
6
  "license": "MIT",