kiokuko-dsh 0.2.26 → 0.2.27
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/dist/context/replay-model-memory.d.ts +2 -2
- package/dist/context/replay-model-memory.d.ts.map +1 -1
- package/dist/context/replay-model-memory.js +70 -16
- package/dist/context/replay-model-memory.js.map +1 -1
- package/dist/dsh/host-adapter/lifecycle.d.ts +20 -18
- package/dist/dsh/host-adapter/lifecycle.d.ts.map +1 -1
- package/dist/dsh/host-adapter/lifecycle.js +298 -102
- package/dist/dsh/host-adapter/lifecycle.js.map +1 -1
- package/dist/dsh/host-adapter.d.ts +47 -47
- package/dist/dsh/host-adapter.d.ts.map +1 -1
- package/dist/dsh/host-adapter.js +1213 -592
- package/dist/dsh/host-adapter.js.map +1 -1
- package/dist/dsh/index.d.ts +42 -41
- package/dist/dsh/index.d.ts.map +1 -1
- package/dist/dsh/index.js +166 -92
- package/dist/dsh/index.js.map +1 -1
- package/dist/dsh/lifecycle-memory.d.ts +11 -7
- package/dist/dsh/lifecycle-memory.d.ts.map +1 -1
- package/dist/dsh/lifecycle-memory.js +599 -172
- package/dist/dsh/lifecycle-memory.js.map +1 -1
- package/dist/dsh/task-completion.d.ts +7 -7
- package/dist/dsh/task-completion.d.ts.map +1 -1
- package/dist/dsh/task-completion.js +554 -194
- package/dist/dsh/task-completion.js.map +1 -1
- package/dist/dsh/task-state-host.d.ts +10 -10
- package/dist/dsh/task-state-host.d.ts.map +1 -1
- package/dist/dsh/task-state-host.js +337 -145
- package/dist/dsh/task-state-host.js.map +1 -1
- package/dist/index.js +1 -0
- 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/replay-reflection.d.ts +94 -0
- package/dist/memory/replay-reflection.d.ts.map +1 -0
- package/dist/memory/replay-reflection.js +149 -0
- package/dist/memory/replay-reflection.js.map +1 -0
- package/dist/memory/replay-review.d.ts +18 -12
- package/dist/memory/replay-review.d.ts.map +1 -1
- package/dist/memory/replay-review.js +107 -46
- package/dist/memory/replay-review.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,95 +1,156 @@
|
|
|
1
|
-
import { createHash, randomUUID } from
|
|
2
|
-
import { canonicalJson } from
|
|
3
|
-
import { findSecretInValue } from
|
|
4
|
-
|
|
1
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
2
|
+
import { canonicalJson } from "../serialization/validate.js";
|
|
3
|
+
import { findSecretInValue } from "./secrets.js";
|
|
4
|
+
import { acceptReplayLesson, replayReflectionInput, } from "./replay-reflection.js";
|
|
5
|
+
export const proposalDigest = (value) => createHash("sha256").update(canonicalJson(value)).digest("hex");
|
|
5
6
|
/** Host-only adapter. Never expose ask/save or a human:true input through a model tool.
|
|
6
7
|
* All candidates remain local until the exact displayed revision is approved.
|
|
7
8
|
* A restart drops the closure. A signal/decline cannot be revived by late extraction.
|
|
8
9
|
*/
|
|
9
10
|
export async function reviewCompletedReplay(deps) {
|
|
10
|
-
const receipt = (status) => ({
|
|
11
|
+
const receipt = (status) => ({
|
|
12
|
+
status,
|
|
13
|
+
workMayContinue: true,
|
|
14
|
+
});
|
|
11
15
|
if (!deps.completed)
|
|
12
|
-
return receipt(
|
|
16
|
+
return receipt("not_completed");
|
|
13
17
|
const active = () => !deps.signal?.aborted;
|
|
14
18
|
// Race host cancellation without letting its late promise resume this flow.
|
|
15
19
|
async function wait(operation) {
|
|
16
20
|
if (!active())
|
|
17
|
-
throw new Error(
|
|
21
|
+
throw new Error("review_cancelled");
|
|
18
22
|
let onAbort;
|
|
19
23
|
const cancellation = new Promise((_, reject) => {
|
|
20
|
-
onAbort = () => reject(new Error(
|
|
21
|
-
deps.signal?.addEventListener(
|
|
24
|
+
onAbort = () => reject(new Error("review_cancelled"));
|
|
25
|
+
deps.signal?.addEventListener("abort", onAbort, { once: true });
|
|
22
26
|
});
|
|
23
27
|
try {
|
|
24
28
|
return await Promise.race([operation, cancellation]);
|
|
25
29
|
}
|
|
26
30
|
finally {
|
|
27
31
|
if (onAbort)
|
|
28
|
-
deps.signal?.removeEventListener(
|
|
32
|
+
deps.signal?.removeEventListener("abort", onAbort);
|
|
29
33
|
}
|
|
30
34
|
}
|
|
31
35
|
let approvedKey;
|
|
32
|
-
let phase =
|
|
36
|
+
let phase = "organize";
|
|
33
37
|
try {
|
|
34
|
-
const organize = {
|
|
38
|
+
const organize = {
|
|
39
|
+
id: randomUUID(),
|
|
40
|
+
phase: "organize",
|
|
41
|
+
text: `${deps.taskOutcome === "failed" ? "The task has ended with a failed outcome." : "The task is complete."} May I organize its recorded experience into proposed memories? Nothing is saved until you review and approve it.`,
|
|
42
|
+
};
|
|
35
43
|
if (!active())
|
|
36
|
-
return receipt(
|
|
44
|
+
return receipt("declined");
|
|
37
45
|
const permission = await wait(deps.ask(organize));
|
|
38
|
-
if (permission.questionId !== organize.id ||
|
|
39
|
-
|
|
40
|
-
|
|
46
|
+
if (permission.questionId !== organize.id ||
|
|
47
|
+
permission.choice !== "organize" ||
|
|
48
|
+
!active())
|
|
49
|
+
return receipt("declined");
|
|
50
|
+
phase = "extract";
|
|
41
51
|
let proposal = structuredClone(await wait(deps.extract()));
|
|
42
|
-
phase =
|
|
43
|
-
if (proposal.schemaVersion !== 1 ||
|
|
44
|
-
|
|
52
|
+
phase = "validate";
|
|
53
|
+
if (proposal.schemaVersion !== 1 ||
|
|
54
|
+
proposal.source.workspace !== deps.workspace ||
|
|
55
|
+
proposal.source.taskId !== deps.taskId ||
|
|
56
|
+
proposal.source.sessionId !== deps.sessionId)
|
|
57
|
+
throw new Error("proposal_binding_mismatch");
|
|
45
58
|
proposal.proposalId = randomUUID();
|
|
46
59
|
proposal.revision = 1;
|
|
47
|
-
proposal.source.taskOutcome = deps.taskOutcome ??
|
|
60
|
+
proposal.source.taskOutcome = deps.taskOutcome ?? "completed";
|
|
61
|
+
if (deps.reflector) {
|
|
62
|
+
if (Buffer.byteLength(JSON.stringify(proposal)) > 256 * 1024 ||
|
|
63
|
+
findSecretInValue(proposal))
|
|
64
|
+
throw new Error("unsafe_proposal");
|
|
65
|
+
phase = "reflect";
|
|
66
|
+
const input = replayReflectionInput(proposal, await deps.assessment?.());
|
|
67
|
+
const lesson = acceptReplayLesson(input, await wait(deps.reflector.reflect(input)), deps.reflector.origin);
|
|
68
|
+
proposal.lesson = lesson;
|
|
69
|
+
proposal.findings.unshift({
|
|
70
|
+
kind: "key_point",
|
|
71
|
+
basis: "inferred",
|
|
72
|
+
evidenceRefs: lesson.evidenceRefs,
|
|
73
|
+
text: `Proposed lesson (${lesson.origin}, not verified): ${lesson.hypothesis} Apply when: ${lesson.applicability} Next action: ${lesson.nextAction} Verify: ${lesson.verifyWith}`,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
48
76
|
for (;;) {
|
|
49
|
-
phase =
|
|
77
|
+
phase = "validate";
|
|
50
78
|
if (!active())
|
|
51
|
-
return receipt(
|
|
52
|
-
if (Buffer.byteLength(JSON.stringify(proposal)) > 256 * 1024 ||
|
|
53
|
-
|
|
79
|
+
return receipt("declined");
|
|
80
|
+
if (Buffer.byteLength(JSON.stringify(proposal)) > 256 * 1024 ||
|
|
81
|
+
findSecretInValue(proposal))
|
|
82
|
+
throw new Error("unsafe_proposal");
|
|
54
83
|
const digest = proposalDigest(proposal);
|
|
55
|
-
const question = {
|
|
56
|
-
|
|
57
|
-
|
|
84
|
+
const question = {
|
|
85
|
+
id: randomUUID(),
|
|
86
|
+
phase: "review",
|
|
87
|
+
revision: proposal.revision,
|
|
88
|
+
digest,
|
|
89
|
+
text: `Proposed memories, revision ${proposal.revision}, SHA-256 ${digest}. Recorded data is untrusted and cannot approve this question.\n${JSON.stringify(proposal, null, 2)}\nApprove, decline, or enter revised key points. Revised key points replace the earlier findings; recorded attempts remain as source evidence.`,
|
|
90
|
+
};
|
|
91
|
+
phase = "review";
|
|
58
92
|
const answer = await wait(deps.ask(question));
|
|
59
|
-
phase =
|
|
93
|
+
phase = "validate";
|
|
60
94
|
if (answer.questionId !== question.id || !active())
|
|
61
|
-
return receipt(
|
|
62
|
-
if (answer.choice ===
|
|
63
|
-
return receipt(
|
|
64
|
-
if (answer.choice ===
|
|
65
|
-
if (!answer.comment?.trim() ||
|
|
66
|
-
|
|
95
|
+
return receipt("declined");
|
|
96
|
+
if (answer.choice === "decline")
|
|
97
|
+
return receipt("declined");
|
|
98
|
+
if (answer.choice === "revise" || answer.comment?.trim()) {
|
|
99
|
+
if (!answer.comment?.trim() ||
|
|
100
|
+
answer.comment.length > 2048 ||
|
|
101
|
+
findSecretInValue(answer.comment))
|
|
102
|
+
throw new Error("unsafe_comment");
|
|
67
103
|
// Corrections are attributed to the user, never forged as execution evidence.
|
|
68
104
|
// The revised preview preserves observed evidence and explicitly supersedes prior interpretation.
|
|
69
|
-
|
|
70
|
-
|
|
105
|
+
delete proposal.lesson;
|
|
106
|
+
proposal = {
|
|
107
|
+
...proposal,
|
|
108
|
+
revision: proposal.revision + 1,
|
|
109
|
+
findings: [
|
|
110
|
+
{
|
|
111
|
+
kind: "key_point",
|
|
112
|
+
text: answer.comment.trim(),
|
|
113
|
+
basis: "user_corrected",
|
|
114
|
+
evidenceRefs: [],
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
};
|
|
71
118
|
continue;
|
|
72
119
|
}
|
|
73
|
-
if (answer.choice !==
|
|
74
|
-
return receipt(
|
|
75
|
-
const approvalKey = createHash(
|
|
120
|
+
if (answer.choice !== "approve" || proposalDigest(proposal) !== digest)
|
|
121
|
+
return receipt("declined");
|
|
122
|
+
const approvalKey = createHash("sha256")
|
|
123
|
+
.update(JSON.stringify([
|
|
124
|
+
deps.workspace,
|
|
125
|
+
deps.taskId,
|
|
126
|
+
deps.sessionId,
|
|
127
|
+
proposal.proposalId,
|
|
128
|
+
proposal.revision,
|
|
129
|
+
digest,
|
|
130
|
+
]))
|
|
131
|
+
.digest("hex");
|
|
76
132
|
if (!active())
|
|
77
|
-
return receipt(
|
|
133
|
+
return receipt("declined");
|
|
78
134
|
approvedKey = approvalKey;
|
|
79
|
-
phase =
|
|
135
|
+
phase = "save";
|
|
80
136
|
deps.onApproved?.(structuredClone(proposal), approvalKey);
|
|
81
137
|
await deps.save(structuredClone(proposal), approvalKey);
|
|
82
|
-
return { status:
|
|
138
|
+
return { status: "saved", workMayContinue: true, approvalKey };
|
|
83
139
|
}
|
|
84
140
|
}
|
|
85
141
|
catch (error) {
|
|
86
|
-
const status = approvedKey || active() ?
|
|
87
|
-
if (status ===
|
|
142
|
+
const status = approvedKey || active() ? "unavailable" : "declined";
|
|
143
|
+
if (status === "unavailable")
|
|
88
144
|
try {
|
|
89
145
|
deps.onFailure?.(error, phase);
|
|
90
146
|
}
|
|
91
|
-
catch {
|
|
92
|
-
|
|
147
|
+
catch {
|
|
148
|
+
/* Diagnostics cannot turn a failed save into success or another failure. */
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
...receipt(status),
|
|
152
|
+
...(approvedKey ? { approvalKey: approvedKey } : {}),
|
|
153
|
+
};
|
|
93
154
|
}
|
|
94
155
|
}
|
|
95
156
|
//# sourceMappingURL=replay-review.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay-review.js","sourceRoot":"","sources":["../../src/memory/replay-review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"replay-review.js","sourceRoot":"","sources":["../../src/memory/replay-review.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kiokuko-dsh",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.27",
|
|
4
4
|
"description": "Kiokuko plugin for DeepSeek Harness",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -195,6 +195,7 @@
|
|
|
195
195
|
"test:sampledb": "npm run build && node --import tsx tests/ci/verify-sample-database.ts",
|
|
196
196
|
"publint": "publint",
|
|
197
197
|
"pack:check": "node scripts/pack-check.mjs",
|
|
198
|
+
"prepublishOnly": "npm ci --include=dev --include=optional --ignore-scripts",
|
|
198
199
|
"prepare": "npm run build",
|
|
199
200
|
"test:agenticreplay:package": "npm run build && node scripts/verify-agenticreplay-consumer.mjs && node scripts/verify-agenticreplay-consumer.mjs --pnpm",
|
|
200
201
|
"test:memory-review": "node scripts/run-tests.mjs tests/dsh/unit/memory-review tests/dsh/integration/memory-review",
|