kiokuko-dsh 0.1.21 → 0.1.23
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/client.cjs +23 -1
- package/dist/client.d.ts +9 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/dsh/boundary-worker.d.ts +8 -1
- package/dist/dsh/boundary-worker.d.ts.map +1 -1
- package/dist/dsh/boundary-worker.js +100 -22
- package/dist/dsh/boundary-worker.js.map +1 -1
- package/dist/dsh/completion-report.d.ts +25 -0
- package/dist/dsh/completion-report.d.ts.map +1 -0
- package/dist/dsh/completion-report.js +88 -0
- package/dist/dsh/completion-report.js.map +1 -0
- package/dist/dsh/continuation.d.ts +1 -0
- package/dist/dsh/continuation.d.ts.map +1 -1
- package/dist/dsh/continuation.js +19 -5
- package/dist/dsh/continuation.js.map +1 -1
- package/dist/dsh/enno-controller.d.ts +6 -0
- package/dist/dsh/enno-controller.d.ts.map +1 -1
- package/dist/dsh/enno-controller.js +42 -14
- package/dist/dsh/enno-controller.js.map +1 -1
- package/dist/dsh/host-adapter.d.ts.map +1 -1
- package/dist/dsh/host-adapter.js +365 -19
- package/dist/dsh/host-adapter.js.map +1 -1
- package/dist/dsh/loop-guard.d.ts +43 -0
- package/dist/dsh/loop-guard.d.ts.map +1 -0
- package/dist/dsh/loop-guard.js +206 -0
- package/dist/dsh/loop-guard.js.map +1 -0
- package/dist/dsh/tools.d.ts.map +1 -1
- package/dist/dsh/tools.js +41 -20
- package/dist/dsh/tools.js.map +1 -1
- package/dist/dsh/turn-process.d.ts +15 -1
- package/dist/dsh/turn-process.d.ts.map +1 -1
- package/dist/dsh/turn-process.js +69 -11
- package/dist/dsh/turn-process.js.map +1 -1
- package/dist/model-tools/registry.d.ts +6 -0
- package/dist/model-tools/registry.d.ts.map +1 -1
- package/dist/model-tools/registry.js +35 -0
- package/dist/model-tools/registry.js.map +1 -1
- package/docs/database.md +14 -0
- package/docs/dsh-plugin.md +24 -6
- package/migrations/004_dsh_loop_guard.sql +46 -0
- package/migrations/005_dsh_completion_recovery.sql +118 -0
- package/package.json +1 -1
- package/skills/kiokuko-enno-oduno/SKILL.md +1 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { KiokukoError } from '../errors.js';
|
|
2
|
+
import { canonicalContentHash } from '../serialization/validate.js';
|
|
3
|
+
export const DSH_AUTOMATIC_CONTINUATION_LIMIT = 3;
|
|
4
|
+
function identity(value, label, maximum = 256) {
|
|
5
|
+
if (value.length === 0 || value.length > maximum || /[\p{Cc}\p{Cf}]/u.test(value)) {
|
|
6
|
+
throw new KiokukoError('VALIDATION_ERROR', `${label} is invalid`);
|
|
7
|
+
}
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
function digest(value, label) {
|
|
11
|
+
if (!/^[0-9a-f]{64}$/u.test(value))
|
|
12
|
+
throw new KiokukoError('VALIDATION_ERROR', `${label} must be a SHA-256 digest`);
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
function omitUndefined(value) {
|
|
16
|
+
if (Array.isArray(value))
|
|
17
|
+
return value.map((item) => item === undefined ? null : omitUndefined(item));
|
|
18
|
+
if (typeof value !== 'object' || value === null)
|
|
19
|
+
return value;
|
|
20
|
+
return Object.fromEntries(Object.entries(value)
|
|
21
|
+
.filter(([, child]) => child !== undefined)
|
|
22
|
+
.map(([key, child]) => [key, omitUndefined(child)]));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Hash only authoritative progress. Native turn IDs, receipts, validation
|
|
26
|
+
* input/failure digests, error prose, and raw task text are deliberately absent.
|
|
27
|
+
*/
|
|
28
|
+
export function ennoInstructionDigest(snapshot, directive) {
|
|
29
|
+
const currentWorkUnitId = directive?.workUnit?.id ?? null;
|
|
30
|
+
const currentWorkUnit = currentWorkUnitId === null
|
|
31
|
+
? null
|
|
32
|
+
: snapshot.workUnits.find((candidate) => candidate.workUnit.id === currentWorkUnitId) ?? null;
|
|
33
|
+
return canonicalContentHash(omitUndefined({
|
|
34
|
+
contractRevision: snapshot.revision,
|
|
35
|
+
mutationRevision: snapshot.mutationRevision,
|
|
36
|
+
routeEpoch: snapshot.routeEpoch ?? 0,
|
|
37
|
+
status: snapshot.status,
|
|
38
|
+
attempts: snapshot.attempts,
|
|
39
|
+
currentWorkUnit: currentWorkUnit === null ? null : {
|
|
40
|
+
id: currentWorkUnit.workUnit.id,
|
|
41
|
+
status: currentWorkUnit.status,
|
|
42
|
+
attemptCount: currentWorkUnit.attemptCount,
|
|
43
|
+
},
|
|
44
|
+
finalEvidenceReady: snapshot.finalEvidenceReady,
|
|
45
|
+
finalEvidence: snapshot.finalEvidence.map((item) => ({
|
|
46
|
+
status: item.status,
|
|
47
|
+
stdoutDigest: item.stdoutDigest,
|
|
48
|
+
stderrDigest: item.stderrDigest,
|
|
49
|
+
changedDuringVerification: item.changedDuringVerification ?? false,
|
|
50
|
+
})),
|
|
51
|
+
advisoryPhaseState: snapshot.advisoryPhaseState ?? { state: 'not_started' },
|
|
52
|
+
directive,
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
/** Compatibility digest for the legacy controller, which owns no core DB. */
|
|
56
|
+
export function ennoStateInstructionDigest(state) {
|
|
57
|
+
return canonicalContentHash(omitUndefined({
|
|
58
|
+
status: state.status ?? null,
|
|
59
|
+
contractRevision: state.contractRevision ?? null,
|
|
60
|
+
routeEpoch: state.routeEpoch ?? null,
|
|
61
|
+
currentRole: state.currentRole ?? null,
|
|
62
|
+
nextAction: state.nextAction,
|
|
63
|
+
advisoryPhaseState: state.advisoryPhaseState ?? { state: 'not_started' },
|
|
64
|
+
directive: state.directive ?? null,
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
export function claimAutomaticContinuationInTransaction(database, input) {
|
|
68
|
+
const claimId = digest(input.claimId, 'claimId');
|
|
69
|
+
const runId = identity(input.runId, 'runId');
|
|
70
|
+
const dshSessionId = identity(input.dshSessionId, 'dshSessionId');
|
|
71
|
+
const instructionDigest = digest(input.instructionDigest, 'instructionDigest');
|
|
72
|
+
const existingClaim = database.prepare(`
|
|
73
|
+
SELECT decision, ordinal, generation, resolution
|
|
74
|
+
FROM dsh_loop_guard_claims WHERE claim_id = ?
|
|
75
|
+
`).get(claimId);
|
|
76
|
+
if (existingClaim !== undefined) {
|
|
77
|
+
return Object.freeze({
|
|
78
|
+
claimId,
|
|
79
|
+
decision: existingClaim.resolution === 'user_answer' ? 'deliver' : existingClaim.decision,
|
|
80
|
+
ordinal: existingClaim.ordinal,
|
|
81
|
+
generation: existingClaim.generation,
|
|
82
|
+
recovered: existingClaim.resolution === 'user_answer',
|
|
83
|
+
replayed: true,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
const now = input.now ?? new Date().toISOString();
|
|
87
|
+
let state = database.prepare(`
|
|
88
|
+
SELECT instruction_digest AS instructionDigest, generation,
|
|
89
|
+
automatic_count AS automaticCount, status
|
|
90
|
+
FROM dsh_loop_guard_states
|
|
91
|
+
WHERE run_id = ? AND dsh_session_id = ?
|
|
92
|
+
`).get(runId, dshSessionId);
|
|
93
|
+
if (state === undefined) {
|
|
94
|
+
database.prepare(`
|
|
95
|
+
INSERT INTO dsh_loop_guard_states (
|
|
96
|
+
run_id, dsh_session_id, instruction_digest, generation,
|
|
97
|
+
automatic_count, status, blocked_claim_id, created_at, updated_at
|
|
98
|
+
) VALUES (?, ?, ?, 0, 0, 'active', NULL, ?, ?)
|
|
99
|
+
`).run(runId, dshSessionId, instructionDigest, now, now);
|
|
100
|
+
state = { instructionDigest, generation: 0, automaticCount: 0, status: 'active' };
|
|
101
|
+
}
|
|
102
|
+
const sameInstruction = state.instructionDigest === instructionDigest;
|
|
103
|
+
const generation = sameInstruction ? state.generation : state.generation + 1;
|
|
104
|
+
const previousCount = sameInstruction ? state.automaticCount : 0;
|
|
105
|
+
const ordinal = Math.min(previousCount + 1, DSH_AUTOMATIC_CONTINUATION_LIMIT + 1);
|
|
106
|
+
const decision = previousCount >= DSH_AUTOMATIC_CONTINUATION_LIMIT
|
|
107
|
+
? 'wait_user'
|
|
108
|
+
: 'deliver';
|
|
109
|
+
const automaticCount = decision === 'deliver' ? ordinal : DSH_AUTOMATIC_CONTINUATION_LIMIT;
|
|
110
|
+
database.prepare(`
|
|
111
|
+
UPDATE dsh_loop_guard_states
|
|
112
|
+
SET instruction_digest = ?, generation = ?, automatic_count = ?,
|
|
113
|
+
status = ?, blocked_claim_id = ?, updated_at = ?
|
|
114
|
+
WHERE run_id = ? AND dsh_session_id = ?
|
|
115
|
+
`).run(instructionDigest, generation, automaticCount, decision === 'deliver' ? 'active' : 'waiting_user', decision === 'wait_user' ? claimId : null, now, runId, dshSessionId);
|
|
116
|
+
database.prepare(`
|
|
117
|
+
INSERT INTO dsh_loop_guard_claims (
|
|
118
|
+
claim_id, run_id, dsh_session_id, instruction_digest,
|
|
119
|
+
generation, ordinal, decision, resolution, created_at, question_asked_at, resolved_at
|
|
120
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, NULL, ?, NULL, NULL)
|
|
121
|
+
`).run(claimId, runId, dshSessionId, instructionDigest, generation, ordinal, decision, now);
|
|
122
|
+
return Object.freeze({ claimId, decision, ordinal, generation, recovered: false, replayed: false });
|
|
123
|
+
}
|
|
124
|
+
/** Claim the one allowed UI question before crossing the external question boundary. */
|
|
125
|
+
export function claimLoopRecoveryQuestionInTransaction(database, claimIdValue, now = new Date().toISOString()) {
|
|
126
|
+
const claimId = digest(claimIdValue, 'claimId');
|
|
127
|
+
const changed = database.prepare(`
|
|
128
|
+
UPDATE dsh_loop_guard_claims
|
|
129
|
+
SET question_asked_at = ?
|
|
130
|
+
WHERE claim_id = ? AND decision = 'wait_user'
|
|
131
|
+
AND question_asked_at IS NULL AND resolution IS NULL
|
|
132
|
+
RETURNING claim_id AS claimId
|
|
133
|
+
`).get(now, claimId);
|
|
134
|
+
return changed !== undefined;
|
|
135
|
+
}
|
|
136
|
+
export function resetLoopGuardForUserInTransaction(database, input) {
|
|
137
|
+
const runId = identity(input.runId, 'runId');
|
|
138
|
+
const dshSessionId = identity(input.dshSessionId, 'dshSessionId');
|
|
139
|
+
const now = input.now ?? new Date().toISOString();
|
|
140
|
+
const claimId = input.claimId === undefined ? undefined : digest(input.claimId, 'claimId');
|
|
141
|
+
if (claimId !== undefined) {
|
|
142
|
+
database.prepare(`
|
|
143
|
+
UPDATE dsh_loop_guard_claims
|
|
144
|
+
SET resolution = ?, resolved_at = ?
|
|
145
|
+
WHERE claim_id = ? AND run_id = ? AND dsh_session_id = ? AND resolution IS NULL
|
|
146
|
+
`).run(input.resolution, now, claimId, runId, dshSessionId);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
database.prepare(`
|
|
150
|
+
UPDATE dsh_loop_guard_claims
|
|
151
|
+
SET resolution = ?, resolved_at = ?
|
|
152
|
+
WHERE run_id = ? AND dsh_session_id = ? AND decision = 'wait_user' AND resolution IS NULL
|
|
153
|
+
`).run(input.resolution, now, runId, dshSessionId);
|
|
154
|
+
}
|
|
155
|
+
database.prepare(`
|
|
156
|
+
UPDATE dsh_loop_guard_states
|
|
157
|
+
SET instruction_digest = NULL, generation = generation + 1,
|
|
158
|
+
automatic_count = 0, status = 'active', blocked_claim_id = NULL, updated_at = ?
|
|
159
|
+
WHERE run_id = ? AND dsh_session_id = ?
|
|
160
|
+
`).run(now, runId, dshSessionId);
|
|
161
|
+
// The older resume limiter remains a secondary automatic bound, but an
|
|
162
|
+
// explicit user intervention starts a new recovery generation there too.
|
|
163
|
+
database.prepare(`
|
|
164
|
+
UPDATE enno_dsh_continuations
|
|
165
|
+
SET continuation_count = 0, total_count = 0, updated_at = ?
|
|
166
|
+
WHERE run_id = ? AND dsh_session_id = ?
|
|
167
|
+
`).run(now, runId, dshSessionId);
|
|
168
|
+
}
|
|
169
|
+
export function claimBoundaryEffectInTransaction(database, job, progressDigestValue, now = new Date().toISOString()) {
|
|
170
|
+
const progressDigest = digest(progressDigestValue, 'progressDigest');
|
|
171
|
+
const row = database.prepare(`
|
|
172
|
+
SELECT progress_digest AS progressDigest, progress_count AS progressCount,
|
|
173
|
+
progress_claim_attempt AS progressClaimAttempt, progress_waiting AS progressWaiting
|
|
174
|
+
FROM dsh_boundary_jobs
|
|
175
|
+
WHERE job_id = ? AND status = 'processing' AND owner_nonce = ?
|
|
176
|
+
`).get(job.jobId, job.ownerNonce);
|
|
177
|
+
if (row === undefined)
|
|
178
|
+
throw new KiokukoError('CONFLICT', 'Boundary effect lease changed before progress claim');
|
|
179
|
+
if (row.progressClaimAttempt === job.attemptCount) {
|
|
180
|
+
return Object.freeze({
|
|
181
|
+
decision: row.progressWaiting === 1 ? 'wait_user' : 'deliver',
|
|
182
|
+
ordinal: row.progressWaiting === 1 ? DSH_AUTOMATIC_CONTINUATION_LIMIT + 1 : row.progressCount,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
const previousCount = row.progressDigest === progressDigest ? row.progressCount : 0;
|
|
186
|
+
const ordinal = Math.min(previousCount + 1, DSH_AUTOMATIC_CONTINUATION_LIMIT + 1);
|
|
187
|
+
const decision = previousCount >= DSH_AUTOMATIC_CONTINUATION_LIMIT
|
|
188
|
+
? 'wait_user'
|
|
189
|
+
: 'deliver';
|
|
190
|
+
database.prepare(`
|
|
191
|
+
UPDATE dsh_boundary_jobs
|
|
192
|
+
SET progress_digest = ?, progress_count = ?, progress_claim_attempt = ?,
|
|
193
|
+
progress_waiting = ?, updated_at = ?
|
|
194
|
+
WHERE job_id = ? AND status = 'processing' AND owner_nonce = ?
|
|
195
|
+
`).run(progressDigest, decision === 'deliver' ? ordinal : DSH_AUTOMATIC_CONTINUATION_LIMIT, job.attemptCount, decision === 'wait_user' ? 1 : 0, now, job.jobId, job.ownerNonce);
|
|
196
|
+
return Object.freeze({ decision, ordinal });
|
|
197
|
+
}
|
|
198
|
+
export function resetBoundaryEffectGuardInTransaction(database, job, now = new Date().toISOString()) {
|
|
199
|
+
database.prepare(`
|
|
200
|
+
UPDATE dsh_boundary_jobs
|
|
201
|
+
SET progress_digest = NULL, progress_count = 0,
|
|
202
|
+
progress_claim_attempt = NULL, progress_waiting = 0, updated_at = ?
|
|
203
|
+
WHERE job_id = ? AND status = 'processing' AND owner_nonce = ?
|
|
204
|
+
`).run(now, job.jobId, job.ownerNonce);
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=loop-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop-guard.js","sourceRoot":"","sources":["../../src/dsh/loop-guard.ts"],"names":[],"mappings":"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"}
|
package/dist/dsh/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/dsh/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,KAAK,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACrG,OAAO,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/dsh/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/dsh/tools.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { canonicalContentHash } from '../serialization/validate.js';
|
|
2
2
|
import { MODEL_TOOL_OPERATION_NAMES } from '../model-tools/contracts.js';
|
|
3
|
-
import { modelFacingInputSchema, modelToolContract } from '../model-tools/registry.js';
|
|
3
|
+
import { modelFacingInputSchema, modelFacingTransportSchema, modelToolContract } from '../model-tools/registry.js';
|
|
4
4
|
import { KiokukoError } from '../errors.js';
|
|
5
5
|
export const DSH_MODEL_FACING_OPERATIONS = [
|
|
6
6
|
'enno_plan_submit',
|
|
@@ -123,44 +123,64 @@ export function bindDshToolInvocation(execution, state) {
|
|
|
123
123
|
return Object.freeze({ ...state, idempotencyKey: dshToolIdempotencyKey(execution) });
|
|
124
124
|
}
|
|
125
125
|
function descriptionFor(operation) {
|
|
126
|
-
return `Kiokuko ${operation} semantic operation. Host identity, routing, lease, and idempotency fields are supplied by the dsh host. The result is a TurnOutcome: applied results carry the business response in value and the next-turn state in handoff; predictable rejections return retry or clarify without a tool transport error. The business payload contract is: ${JSON.stringify(modelFacingInputSchema(operation))}`;
|
|
126
|
+
return `Kiokuko ${operation} semantic operation. Supply nested values as their native JSON types; never encode an object or array as a JSON string. Host identity, routing, lease, and idempotency fields are supplied by the dsh host. The result is a TurnOutcome: applied results carry the business response in value and the next-turn state in handoff; predictable rejections return retry or clarify without a tool transport error. The business payload contract is: ${JSON.stringify(modelFacingInputSchema(operation))}`;
|
|
127
127
|
}
|
|
128
|
-
function
|
|
128
|
+
function ennoNextAction(value) {
|
|
129
129
|
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
130
|
-
return
|
|
130
|
+
return undefined;
|
|
131
131
|
const outcome = value;
|
|
132
|
-
if (outcome.kind === 'retry' || outcome.kind === 'clarify' || outcome.kind === 'waiting_user')
|
|
133
|
-
return true;
|
|
134
132
|
const businessValue = outcome.kind === 'applied' && 'value' in outcome
|
|
135
133
|
? outcome.value
|
|
136
134
|
: value;
|
|
135
|
+
if (typeof businessValue !== 'object' || businessValue === null || Array.isArray(businessValue))
|
|
136
|
+
return undefined;
|
|
137
137
|
const ennoOduno = businessValue.ennoOduno;
|
|
138
138
|
if (typeof ennoOduno !== 'object' || ennoOduno === null || Array.isArray(ennoOduno))
|
|
139
|
-
return
|
|
139
|
+
return undefined;
|
|
140
140
|
const nextAction = ennoOduno.nextAction;
|
|
141
|
+
return typeof nextAction === 'string' && nextAction.length > 0 ? nextAction : undefined;
|
|
142
|
+
}
|
|
143
|
+
function concludesDshTurn(value) {
|
|
144
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
145
|
+
return false;
|
|
146
|
+
const outcome = value;
|
|
147
|
+
if (outcome.kind === 'retry' || outcome.kind === 'clarify' || outcome.kind === 'waiting_user')
|
|
148
|
+
return true;
|
|
149
|
+
const nextAction = ennoNextAction(value);
|
|
141
150
|
// Every successful phase mutation owns one model turn. The durable seal is
|
|
142
|
-
// committed with the Enno receipt before this marker is observed.
|
|
143
|
-
|
|
151
|
+
// committed with the Enno receipt before this marker is observed. Terminal
|
|
152
|
+
// states are the exception: the model must consume the successful result and
|
|
153
|
+
// emit the user-facing completion/blocker report before the native turn ends.
|
|
154
|
+
return nextAction !== undefined && nextAction !== 'complete' && nextAction !== 'report_blocker';
|
|
155
|
+
}
|
|
156
|
+
const TERMINAL_REPORT_INSTRUCTION = "Kiokuko reached a terminal state. Do not call another tool. Return a visible final assistant response in the user's language now. Lead with the outcome; summarize what changed, the verification performed and its results, and any remaining issues or uncertainty. Do not expose internal Enno/DSH identities or protocol fields.";
|
|
157
|
+
function renderDshToolResult(value) {
|
|
158
|
+
const blocks = [{
|
|
159
|
+
type: 'text',
|
|
160
|
+
text: typeof value === 'string' ? value : JSON.stringify(value),
|
|
161
|
+
}];
|
|
162
|
+
const nextAction = ennoNextAction(value);
|
|
163
|
+
if (nextAction === 'complete' || nextAction === 'report_blocker') {
|
|
164
|
+
blocks.push({ type: 'text', text: TERMINAL_REPORT_INSTRUCTION });
|
|
165
|
+
}
|
|
166
|
+
return Object.freeze(blocks);
|
|
144
167
|
}
|
|
145
168
|
/** Build the exact seven-operation model tool set. */
|
|
146
169
|
export function createDshToolDefinitions(host) {
|
|
147
170
|
return Object.freeze(MODEL_TOOL_OPERATION_NAMES.map((operation) => Object.freeze({
|
|
148
171
|
name: operation,
|
|
149
172
|
description: descriptionFor(operation),
|
|
150
|
-
// DSH validates this transport schema before invoking the handler.
|
|
151
|
-
//
|
|
152
|
-
//
|
|
153
|
-
parameters: Object.freeze(
|
|
173
|
+
// DSH validates this transport schema before invoking the handler. Publish
|
|
174
|
+
// the actual JSON shape so a nested object cannot arrive double-encoded as
|
|
175
|
+
// a string, but leave requiredness and value rules to business validation.
|
|
176
|
+
parameters: Object.freeze(modelFacingTransportSchema(operation)),
|
|
154
177
|
modelFacing: modelFacingSet.has(operation),
|
|
155
178
|
// `{}` is the dsh JSON-schema spelling for any lossless JSON value. The
|
|
156
179
|
// Kiokuko operation registry owns the input/output semantic schemas; this
|
|
157
180
|
// declaration only satisfies dsh's native tool registration contract.
|
|
158
181
|
output: {
|
|
159
182
|
schema: Object.freeze({}),
|
|
160
|
-
render: (_args, value) =>
|
|
161
|
-
type: 'text',
|
|
162
|
-
text: typeof value === 'string' ? value : JSON.stringify(value),
|
|
163
|
-
}]),
|
|
183
|
+
render: (_args, value) => renderDshToolResult(value),
|
|
164
184
|
},
|
|
165
185
|
execute: async (args, rawExecution) => {
|
|
166
186
|
const normalized = normalizeExecution(rawExecution);
|
|
@@ -172,9 +192,10 @@ export function createDshToolDefinitions(host) {
|
|
|
172
192
|
const execution = Object.freeze({ ...normalized, arguments: args });
|
|
173
193
|
const binding = bindDshToolInvocation(execution, host.bind(execution));
|
|
174
194
|
const value = await host.execute(operation, args, binding, execution.signal);
|
|
175
|
-
// The result's nextAction, rather than the operation name, owns the
|
|
176
|
-
//
|
|
177
|
-
//
|
|
195
|
+
// The result's nextAction, rather than the operation name, owns the turn
|
|
196
|
+
// boundary. DSH appends successful tool/results before observing
|
|
197
|
+
// concludeTurn. Terminal results deliberately stay open for one final,
|
|
198
|
+
// visible assistant response.
|
|
178
199
|
if (concludesDshTurn(value))
|
|
179
200
|
rawExecution.concludeTurn?.();
|
|
180
201
|
return value;
|
package/dist/dsh/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/dsh/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,0BAA0B,EAA+B,MAAM,6BAA6B,CAAA;AACrG,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAmB,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/dsh/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { KiokukoError } from '../errors.js';
|
|
|
3
3
|
import type { AkinatorQuestion } from '../akinator/types.js';
|
|
4
4
|
export declare const DSH_TURN_HANDOFF_MAX_BYTES: number;
|
|
5
5
|
export declare const DSH_TURN_FAILURE_MAX_BYTES: number;
|
|
6
|
+
export declare const DSH_BOUNDARY_JOB_MAX_ATTEMPTS = 3;
|
|
6
7
|
export type DshTurnPhase = 'intake' | 'ideal' | 'planning' | 'confirmation' | 'work_unit' | 'final_verification' | 'final_review' | 'meditation' | 'complete';
|
|
7
8
|
export type DshEnnoReceiptOperation = 'ideal_submit' | 'advice_submit' | 'plan_submit' | 'answer' | 'work_report' | 'finish' | 'meditation_submit' | 'verify_prepare';
|
|
8
9
|
export interface FailureFact {
|
|
@@ -50,6 +51,7 @@ export interface PrepareTurnIntentInput {
|
|
|
50
51
|
readonly phase: DshTurnPhase;
|
|
51
52
|
readonly contractRevision: number;
|
|
52
53
|
readonly workUnitId?: string;
|
|
54
|
+
readonly executionAttempt?: number;
|
|
53
55
|
readonly inputDigest: string;
|
|
54
56
|
readonly operation: DshEnnoReceiptOperation;
|
|
55
57
|
readonly idempotencyKey: string;
|
|
@@ -92,6 +94,10 @@ export interface DshBoundaryJob {
|
|
|
92
94
|
/** Prepare immutable identity before an Enno operation begins. */
|
|
93
95
|
export declare function prepareTurnIntentInTransaction(database: SqliteDatabase, raw: PrepareTurnIntentInput): PreparedTurnIntent;
|
|
94
96
|
export declare function prepareTurnIntent(database: SqliteDatabase, input: PrepareTurnIntentInput): PreparedTurnIntent;
|
|
97
|
+
/** A natural model stop is not phase completion. Give it the same durable delivery guard. */
|
|
98
|
+
export declare function enqueueUnsubmittedTurn(database: SqliteDatabase, input: PrepareTurnIntentInput & {
|
|
99
|
+
readonly nextAction: string;
|
|
100
|
+
}): void;
|
|
95
101
|
export declare function readTurnSeal(database: SqliteDatabase, dshSessionId: string, nativeTurn: number): DshTurnSeal | undefined;
|
|
96
102
|
export declare function isExpectedTurnFailure(error: unknown): error is KiokukoError;
|
|
97
103
|
export interface CommitExpectedFailureInput extends PrepareTurnIntentInput {
|
|
@@ -109,6 +115,9 @@ export declare function markOutboxDispatchedInTransaction(database: SqliteDataba
|
|
|
109
115
|
export declare function markOutboxObservedInTransaction(database: SqliteDatabase, continuationId: string, sequence: number, now?: string): void;
|
|
110
116
|
export declare function supersedeOutboxBeforeRevisionInTransaction(database: SqliteDatabase, sessionId: string, revision: number, now?: string): void;
|
|
111
117
|
export declare function supersedeOutboxAtOrBeforeRevisionInTransaction(database: SqliteDatabase, sessionId: string, revision: number, now?: string): void;
|
|
118
|
+
export declare function supersedeBoundaryJobsAtOrBeforeRevisionInTransaction(database: SqliteDatabase, sessionId: string, revision: number, now?: string): void;
|
|
119
|
+
/** Reconstruct timers from durable state, including a crashed owner's lease. */
|
|
120
|
+
export declare function nextBoundaryWakeAt(database: SqliteDatabase, sessionId: string): string | undefined;
|
|
112
121
|
export declare function claimBoundaryJobInTransaction(database: SqliteDatabase, ownerNonceValue: string, now?: string, sessionId?: string): DshBoundaryJob | undefined;
|
|
113
122
|
export type DshBoundaryCompletion = {
|
|
114
123
|
readonly kind: 'completed';
|
|
@@ -119,7 +128,12 @@ export type DshBoundaryCompletion = {
|
|
|
119
128
|
readonly kind: 'superseded';
|
|
120
129
|
};
|
|
121
130
|
export declare function completeBoundaryJobInTransaction(database: SqliteDatabase, job: DshBoundaryJob, completion: DshBoundaryCompletion, now?: string): void;
|
|
122
|
-
export declare function failBoundaryJobInTransaction(database: SqliteDatabase, job: DshBoundaryJob, error: unknown, now?: string):
|
|
131
|
+
export declare function failBoundaryJobInTransaction(database: SqliteDatabase, job: DshBoundaryJob, error: unknown, now?: string): {
|
|
132
|
+
readonly kind: 'retry';
|
|
133
|
+
readonly retryAt: string;
|
|
134
|
+
} | {
|
|
135
|
+
readonly kind: 'waiting_user';
|
|
136
|
+
};
|
|
123
137
|
export declare function replacePendingOutboxMessageInTransaction(database: SqliteDatabase, receiptIdValue: string, message: unknown, now?: string): void;
|
|
124
138
|
export declare function phaseForOperation(operation: string): DshTurnPhase | undefined;
|
|
125
139
|
export declare function ennoReceiptOperation(operation: string): DshEnnoReceiptOperation | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-process.d.ts","sourceRoot":"","sources":["../../src/dsh/turn-process.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EAAE,YAAY,EAAkB,MAAM,cAAc,CAAA;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,eAAO,MAAM,0BAA0B,QAAY,CAAA;AACnD,eAAO,MAAM,0BAA0B,QAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"turn-process.d.ts","sourceRoot":"","sources":["../../src/dsh/turn-process.ts"],"names":[],"mappings":"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"}
|