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.
Files changed (43) hide show
  1. package/dist/client.cjs +23 -1
  2. package/dist/client.d.ts +9 -3
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/dsh/boundary-worker.d.ts +8 -1
  5. package/dist/dsh/boundary-worker.d.ts.map +1 -1
  6. package/dist/dsh/boundary-worker.js +100 -22
  7. package/dist/dsh/boundary-worker.js.map +1 -1
  8. package/dist/dsh/completion-report.d.ts +25 -0
  9. package/dist/dsh/completion-report.d.ts.map +1 -0
  10. package/dist/dsh/completion-report.js +88 -0
  11. package/dist/dsh/completion-report.js.map +1 -0
  12. package/dist/dsh/continuation.d.ts +1 -0
  13. package/dist/dsh/continuation.d.ts.map +1 -1
  14. package/dist/dsh/continuation.js +19 -5
  15. package/dist/dsh/continuation.js.map +1 -1
  16. package/dist/dsh/enno-controller.d.ts +6 -0
  17. package/dist/dsh/enno-controller.d.ts.map +1 -1
  18. package/dist/dsh/enno-controller.js +42 -14
  19. package/dist/dsh/enno-controller.js.map +1 -1
  20. package/dist/dsh/host-adapter.d.ts.map +1 -1
  21. package/dist/dsh/host-adapter.js +365 -19
  22. package/dist/dsh/host-adapter.js.map +1 -1
  23. package/dist/dsh/loop-guard.d.ts +43 -0
  24. package/dist/dsh/loop-guard.d.ts.map +1 -0
  25. package/dist/dsh/loop-guard.js +206 -0
  26. package/dist/dsh/loop-guard.js.map +1 -0
  27. package/dist/dsh/tools.d.ts.map +1 -1
  28. package/dist/dsh/tools.js +41 -20
  29. package/dist/dsh/tools.js.map +1 -1
  30. package/dist/dsh/turn-process.d.ts +15 -1
  31. package/dist/dsh/turn-process.d.ts.map +1 -1
  32. package/dist/dsh/turn-process.js +69 -11
  33. package/dist/dsh/turn-process.js.map +1 -1
  34. package/dist/model-tools/registry.d.ts +6 -0
  35. package/dist/model-tools/registry.d.ts.map +1 -1
  36. package/dist/model-tools/registry.js +35 -0
  37. package/dist/model-tools/registry.js.map +1 -1
  38. package/docs/database.md +14 -0
  39. package/docs/dsh-plugin.md +24 -6
  40. package/migrations/004_dsh_loop_guard.sql +46 -0
  41. package/migrations/005_dsh_completion_recovery.sql +118 -0
  42. package/package.json +1 -1
  43. package/skills/kiokuko-enno-oduno/SKILL.md +1 -0
@@ -3,6 +3,7 @@ import { withImmediateTransaction } from '../db/transaction.js';
3
3
  import { KiokukoError } from '../errors.js';
4
4
  export const DSH_TURN_HANDOFF_MAX_BYTES = 32 * 1024;
5
5
  export const DSH_TURN_FAILURE_MAX_BYTES = 8 * 1024;
6
+ export const DSH_BOUNDARY_JOB_MAX_ATTEMPTS = 3;
6
7
  export function appliedTurnOutcome(value, handoff) {
7
8
  boundedJson(handoff, DSH_TURN_HANDOFF_MAX_BYTES, 'turn handoff');
8
9
  return Object.freeze({ kind: 'applied', value, handoff });
@@ -67,6 +68,9 @@ function checkedIntent(input) {
67
68
  if (!OPERATIONS.has(input.operation))
68
69
  throw new KiokukoError('VALIDATION_ERROR', 'Enno receipt operation is invalid');
69
70
  const idempotencyKey = identity(input.idempotencyKey, 'idempotencyKey');
71
+ const executionAttempt = input.executionAttempt ?? 0;
72
+ if (!Number.isSafeInteger(executionAttempt) || executionAttempt < 0)
73
+ throw new KiokukoError('VALIDATION_ERROR', 'executionAttempt is invalid');
70
74
  const identityDocument = {
71
75
  version: 1,
72
76
  runId,
@@ -76,6 +80,7 @@ function checkedIntent(input) {
76
80
  contractRevision,
77
81
  workUnitId: workUnitId ?? null,
78
82
  inputDigest,
83
+ ...(executionAttempt === 0 ? {} : { executionAttempt }),
79
84
  operation: input.operation,
80
85
  idempotencyKey,
81
86
  };
@@ -95,24 +100,22 @@ function checkedIntent(input) {
95
100
  });
96
101
  }
97
102
  function sameIntent(row, intent) {
98
- return row.receiptId === intent.receiptId
99
- && row.runId === intent.runId
103
+ return row.runId === intent.runId
100
104
  && row.dshSessionId === intent.dshSessionId
101
105
  && row.nativeTurn === intent.nativeTurn
102
106
  && row.phase === intent.phase
103
107
  && row.contractRevision === intent.contractRevision
104
108
  && row.workUnitKey === (intent.workUnitId ?? '')
109
+ && row.executionAttempt === (intent.executionAttempt ?? 0)
105
110
  && row.inputDigest === intent.inputDigest
106
111
  && row.operation === intent.operation
107
- && row.idempotencyKey === intent.idempotencyKey
108
- && row.continuationId === intent.continuationId
109
- && row.boundaryJobId === intent.boundaryJobId;
112
+ && row.idempotencyKey === intent.idempotencyKey;
110
113
  }
111
114
  function intentForTurn(database, sessionId, nativeTurn) {
112
115
  return database.prepare(`
113
116
  SELECT receipt_id AS receiptId, run_id AS runId, dsh_session_id AS dshSessionId,
114
117
  native_turn AS nativeTurn, phase, contract_revision AS contractRevision,
115
- work_unit_key AS workUnitKey, input_digest AS inputDigest, operation,
118
+ work_unit_key AS workUnitKey, execution_attempt AS executionAttempt, input_digest AS inputDigest, operation,
116
119
  idempotency_key AS idempotencyKey, continuation_id AS continuationId,
117
120
  boundary_job_id AS boundaryJobId, created_at AS createdAt
118
121
  FROM dsh_turn_intents
@@ -126,21 +129,48 @@ export function prepareTurnIntentInTransaction(database, raw) {
126
129
  if (existing !== undefined) {
127
130
  if (!sameIntent(existing, intent))
128
131
  throw new KiokukoError('CONFLICT', 'DSH native turn was reused for another phase intent');
129
- return intent;
132
+ return { ...intent, receiptId: existing.receiptId, continuationId: existing.continuationId, boundaryJobId: existing.boundaryJobId };
130
133
  }
131
134
  const now = raw.now ?? new Date().toISOString();
132
135
  database.prepare(`
133
136
  INSERT INTO dsh_turn_intents (
134
137
  receipt_id, run_id, dsh_session_id, native_turn, phase,
135
- contract_revision, work_unit_key, input_digest, operation,
138
+ contract_revision, work_unit_key, execution_attempt, input_digest, operation,
136
139
  idempotency_key, continuation_id, boundary_job_id, created_at
137
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
138
- `).run(intent.receiptId, intent.runId, intent.dshSessionId, intent.nativeTurn, intent.phase, intent.contractRevision, intent.workUnitId ?? '', intent.inputDigest, intent.operation, intent.idempotencyKey, intent.continuationId, intent.boundaryJobId, now);
140
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
141
+ `).run(intent.receiptId, intent.runId, intent.dshSessionId, intent.nativeTurn, intent.phase, intent.contractRevision, intent.workUnitId ?? '', intent.executionAttempt ?? 0, intent.inputDigest, intent.operation, intent.idempotencyKey, intent.continuationId, intent.boundaryJobId, now);
139
142
  return intent;
140
143
  }
141
144
  export function prepareTurnIntent(database, input) {
142
145
  return withImmediateTransaction(database, () => prepareTurnIntentInTransaction(database, input));
143
146
  }
147
+ /** A natural model stop is not phase completion. Give it the same durable delivery guard. */
148
+ export function enqueueUnsubmittedTurn(database, input) {
149
+ withImmediateTransaction(database, () => {
150
+ if (readTurnSeal(database, input.dshSessionId, input.nativeTurn) !== undefined)
151
+ return;
152
+ if (database.prepare(`SELECT job_id FROM dsh_boundary_jobs WHERE run_id = ?
153
+ AND status IN ('pending', 'processing', 'failed_retryable', 'waiting_user') LIMIT 1`).get(input.runId))
154
+ return;
155
+ const prior = intentForTurn(database, input.dshSessionId, input.nativeTurn);
156
+ const intent = prior ?? prepareTurnIntentInTransaction(database, input);
157
+ const now = input.now ?? new Date().toISOString();
158
+ database.prepare(`INSERT INTO dsh_turn_receipts (
159
+ receipt_id, run_id, dsh_session_id, native_turn, phase, contract_revision, work_unit_key,
160
+ input_digest, outcome_kind, next_action, created_at
161
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'retry', ?, ?)`).run(intent.receiptId, input.runId, input.dshSessionId, input.nativeTurn, input.phase, input.contractRevision, input.workUnitId ?? '', input.inputDigest, input.nextAction, now);
162
+ database.prepare(`INSERT INTO dsh_turn_handoffs(receipt_id, handoff_json, created_at) VALUES (?, ?, ?)`).run(intent.receiptId, JSON.stringify({ schemaVersion: 1, runId: input.runId, phase: input.phase,
163
+ revision: input.contractRevision, nextAction: input.nextAction, source: 'unsubmitted_turn' }), now);
164
+ database.prepare(`INSERT INTO dsh_boundary_jobs(job_id, receipt_id, run_id, kind, status, available_at, created_at, updated_at)
165
+ VALUES (?, ?, ?, 'classify_boundary', 'pending', ?, ?, ?)`).run(intent.boundaryJobId, intent.receiptId, input.runId, now, now, now);
166
+ const message = { id: intent.continuationId, role: 'user', content: [{ type: 'text',
167
+ text: `The phase has not been submitted. Continue from the current host directive: ${input.nextAction}.` }],
168
+ source: { kind: 'plugin', plugin: 'kiokuko-dsh', form: 'continuation', deliveryId: intent.continuationId } };
169
+ database.prepare(`INSERT INTO dsh_continuation_outbox(continuation_id, receipt_id, run_id, dsh_session_id,
170
+ causal_revision, message_json, status, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, 'pending', ?, ?)`)
171
+ .run(intent.continuationId, intent.receiptId, input.runId, input.dshSessionId, input.contractRevision, JSON.stringify(message), now, now);
172
+ });
173
+ }
144
174
  export function readTurnSeal(database, dshSessionId, nativeTurn) {
145
175
  const row = database.prepare(`
146
176
  SELECT receipt_id AS receiptId, run_id AS runId, dsh_session_id AS dshSessionId,
@@ -312,9 +342,28 @@ export function supersedeOutboxAtOrBeforeRevisionInTransaction(database, session
312
342
  WHERE dsh_session_id = ? AND causal_revision <= ? AND status IN ('pending', 'dispatched')
313
343
  `).run(now, identity(sessionId, 'dshSessionId'), positiveInteger(revision, 'revision'));
314
344
  }
345
+ export function supersedeBoundaryJobsAtOrBeforeRevisionInTransaction(database, sessionId, revision, now = new Date().toISOString()) {
346
+ database.prepare(`
347
+ UPDATE dsh_boundary_jobs
348
+ SET status = 'superseded', owner_nonce = NULL, lease_expires_at = NULL, updated_at = ?
349
+ WHERE receipt_id IN (
350
+ SELECT receipt_id FROM dsh_turn_receipts
351
+ WHERE dsh_session_id = ? AND contract_revision <= ?
352
+ )
353
+ AND status IN ('pending', 'processing', 'waiting_user', 'failed_retryable')
354
+ `).run(now, identity(sessionId, 'dshSessionId'), positiveInteger(revision, 'revision'));
355
+ }
315
356
  function boundaryJobIdentity(receiptId, kind) {
316
357
  return canonicalContentHash({ receiptId: digest(receiptId, 'receiptId'), kind: identity(kind, 'boundary job kind') });
317
358
  }
359
+ /** Reconstruct timers from durable state, including a crashed owner's lease. */
360
+ export function nextBoundaryWakeAt(database, sessionId) {
361
+ return database.prepare(`SELECT MIN(CASE WHEN job.status = 'processing'
362
+ THEN MAX(job.available_at, job.lease_expires_at) ELSE job.available_at END) AS wakeAt
363
+ FROM dsh_boundary_jobs AS job JOIN dsh_turn_receipts AS receipt ON receipt.receipt_id = job.receipt_id
364
+ WHERE receipt.dsh_session_id = ? AND job.status IN ('pending', 'processing', 'failed_retryable')`)
365
+ .get(sessionId)?.wakeAt ?? undefined;
366
+ }
318
367
  export function claimBoundaryJobInTransaction(database, ownerNonceValue, now = new Date().toISOString(), sessionId) {
319
368
  const ownerNonce = identity(ownerNonceValue, 'boundary owner nonce');
320
369
  const leaseExpiresAt = new Date(Date.parse(now) + 60_000).toISOString();
@@ -370,6 +419,15 @@ export function failBoundaryJobInTransaction(database, job, error, now = new Dat
370
419
  const item = typeof error === 'object' && error !== null ? error : undefined;
371
420
  const code = typeof item?.code === 'string' ? item.code.slice(0, 128) : 'BOUNDARY_JOB_FAILED';
372
421
  const message = (error instanceof Error ? error.message : String(error)).slice(0, 2_000);
422
+ if (job.attemptCount >= DSH_BOUNDARY_JOB_MAX_ATTEMPTS) {
423
+ database.prepare(`
424
+ UPDATE dsh_boundary_jobs
425
+ SET status = 'waiting_user', owner_nonce = NULL, lease_expires_at = NULL,
426
+ last_error_code = ?, last_error_message = ?, updated_at = ?
427
+ WHERE job_id = ? AND status = 'processing' AND owner_nonce = ?
428
+ `).run(code, message, now, job.jobId, job.ownerNonce);
429
+ return Object.freeze({ kind: 'waiting_user' });
430
+ }
373
431
  const retryAt = new Date(Date.parse(now) + Math.min(60_000, 250 * 2 ** Math.min(job.attemptCount, 8))).toISOString();
374
432
  database.prepare(`
375
433
  UPDATE dsh_boundary_jobs
@@ -377,7 +435,7 @@ export function failBoundaryJobInTransaction(database, job, error, now = new Dat
377
435
  lease_expires_at = NULL, last_error_code = ?, last_error_message = ?, updated_at = ?
378
436
  WHERE job_id = ? AND status = 'processing' AND owner_nonce = ?
379
437
  `).run(retryAt, code, message, now, job.jobId, job.ownerNonce);
380
- return retryAt;
438
+ return Object.freeze({ kind: 'retry', retryAt });
381
439
  }
382
440
  export function replacePendingOutboxMessageInTransaction(database, receiptIdValue, message, now = new Date().toISOString()) {
383
441
  const messageJson = boundedJson(message, DSH_TURN_HANDOFF_MAX_BYTES, 'continuation message');
@@ -1 +1 @@
1
- {"version":3,"file":"turn-process.js","sourceRoot":"","sources":["../../src/dsh/turn-process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turn-process.js","sourceRoot":"","sources":["../../src/dsh/turn-process.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,12 @@ export type JsonSchema = Record<string, unknown>;
4
4
  export declare const MODEL_TOOL_REGISTRY: Readonly<Record<ModelToolOperationName, ModelToolContract>>;
5
5
  export declare function modelToolContract(name: ModelToolOperationName): ModelToolContract;
6
6
  export declare function modelFacingInputSchema(name: ModelToolOperationName): JsonSchema;
7
+ /**
8
+ * Publish the real JSON value shape without moving semantic validation into
9
+ * the native tool transport. This prevents models from encoding nested
10
+ * objects as strings while preserving host-authored retry/clarify outcomes.
11
+ */
12
+ export declare function modelFacingTransportSchema(name: ModelToolOperationName): JsonSchema;
7
13
  /** Strip host-owned fields from a current revision-bound report schema. */
8
14
  export declare function projectModelFacingInputSchema(name: ModelToolOperationName, schema: JsonSchema): JsonSchema;
9
15
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/model-tools/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC5B,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAkDjD,eAAO,MAAM,mBAAmB,EAE1B,QAAQ,CAAC,MAAM,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAElE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,sBAAsB,GAAG,iBAAiB,CAEjF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,GAAG,UAAU,CAG/E;AAED,2EAA2E;AAC3E,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,CAE1G"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/model-tools/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC5B,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAkDjD,eAAO,MAAM,mBAAmB,EAE1B,QAAQ,CAAC,MAAM,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAElE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,sBAAsB,GAAG,iBAAiB,CAEjF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,GAAG,UAAU,CAG/E;AA0BD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,sBAAsB,GAAG,UAAU,CAEnF;AAED,2EAA2E;AAC3E,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,CAE1G"}
@@ -53,6 +53,41 @@ export function modelFacingInputSchema(name) {
53
53
  const contract = modelToolContract(name);
54
54
  return projectModelFacingInputSchema(name, fullJsonSchema(contract));
55
55
  }
56
+ function transportShape(value) {
57
+ if (Array.isArray(value))
58
+ return value.map(transportShape);
59
+ if (typeof value !== 'object' || value === null)
60
+ return value;
61
+ const source = value;
62
+ const projected = {};
63
+ if (typeof source.type === 'string')
64
+ projected.type = source.type;
65
+ if (typeof source.description === 'string')
66
+ projected.description = source.description;
67
+ if (typeof source.properties === 'object' && source.properties !== null && !Array.isArray(source.properties)) {
68
+ projected.properties = Object.fromEntries(Object.entries(source.properties).map(([key, child]) => [key, transportShape(child)]));
69
+ }
70
+ if (source.items !== undefined)
71
+ projected.items = transportShape(source.items);
72
+ for (const keyword of ['anyOf', 'oneOf', 'allOf']) {
73
+ if (Array.isArray(source[keyword]))
74
+ projected[keyword] = source[keyword].map(transportShape);
75
+ }
76
+ // The semantic boundary remains responsible for required fields, closed
77
+ // objects, enum membership, and value bounds. The native transport only
78
+ // rejects JSON shape mismatches before they can commit a bounded Enno retry.
79
+ if (source.type === 'object' || projected.properties !== undefined)
80
+ projected.additionalProperties = true;
81
+ return projected;
82
+ }
83
+ /**
84
+ * Publish the real JSON value shape without moving semantic validation into
85
+ * the native tool transport. This prevents models from encoding nested
86
+ * objects as strings while preserving host-authored retry/clarify outcomes.
87
+ */
88
+ export function modelFacingTransportSchema(name) {
89
+ return transportShape(modelFacingInputSchema(name));
90
+ }
56
91
  /** Strip host-owned fields from a current revision-bound report schema. */
57
92
  export function projectModelFacingInputSchema(name, schema) {
58
93
  return removeHostOwnedFields(schema, modelToolContract(name).hostOwnedFields);
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/model-tools/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/model-tools/registry.ts"],"names":[],"mappings":"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"}
package/docs/database.md CHANGED
@@ -16,6 +16,20 @@ The baseline binds every ledger run to exactly one authoritative DSH session:
16
16
  - `enno_resume_tokens.dsh_session_id`
17
17
  - `enno_execution_leases.dsh_session_id`
18
18
 
19
+ `migrations/004_dsh_loop_guard.sql` adds the durable automatic-continuation
20
+ boundary. `dsh_loop_guard_states` stores one progress fingerprint and a maximum
21
+ count of three per run/session; `dsh_loop_guard_claims` makes delivery replay
22
+ idempotent and records the single user-question claim. The same migration adds
23
+ no-progress counters to leased boundary jobs. A fourth unchanged continuation,
24
+ or a fourth stateful host effect without Enno progress, enters `waiting_user`
25
+ before another model request is dispatched.
26
+
27
+ `migrations/005_dsh_completion_recovery.sql` separates receipt identity by
28
+ authoritative WorkUnit attempt and adds `dsh_completion_reports`. A terminal
29
+ receipt creates its pending report in the same commit. Reports are acknowledged
30
+ only after the native session is flushed; reload checks the deterministic
31
+ report identity before publishing a fallback again.
32
+
19
33
  `dsh_intake_idempotency` is the intake idempotency store for run-open and
20
34
  intake-answer replays, keyed by DSH-native `dsh.*` scopes. Baseline completion
21
35
  requires an empty `PRAGMA foreign_key_check` result.
@@ -167,8 +167,8 @@ The dsh integration provides:
167
167
  commands routed to the exact invoking agent and session;
168
168
  - revision, route, phase, lease, idempotency, confirmation, verifier, and
169
169
  meditation gates through the Kiokuko core;
170
- - a tool result whose next action requires host work (plan confirmation or
171
- final verification), or is terminal, calls DSH `concludeTurn()` only after
170
+ - a non-terminal tool result whose next action requires host work (plan confirmation or
171
+ final verification) calls DSH `concludeTurn()` only after
172
172
  the successful result exists. Plan submission therefore concludes its model
173
173
  step before DSH opens a dedicated `plan-review` interaction. Receipt,
174
174
  handoff, outbox, and seal commit atomically; a separate durable job then owns
@@ -183,14 +183,32 @@ The dsh integration provides:
183
183
  lists, paths, commands, dependencies, checks, and limits without changing the
184
184
  DSH `plan-review` intent or decision labels;
185
185
  - a durable run-to-`turn/start` binding and an immutable terminal `turn/end`
186
- boundary. On a genuinely terminal idle boundary, the adapter awaits DSH's
187
- exact live `sessions.flush(session)` before the ledger close, including the
188
- tool result and final assistant/turn events after Oduno meditation. The
186
+ boundary. A successful Oduno meditation result deliberately does not call
187
+ `concludeTurn()`: the same native turn remains open for one visible assistant
188
+ response summarizing the outcome, changes, verification, and remaining
189
+ uncertainty. On the resulting genuinely terminal idle boundary, the adapter
190
+ awaits DSH's exact live `sessions.flush(session)` before the ledger close,
191
+ including the tool result and that final assistant/turn suffix. The
189
192
  background finalizer reads only that inclusive range even if the session has
190
- already received later turns; and
193
+ already received later turns. If the final response is empty or its provider
194
+ fails, a durable plugin-owned result appears in chat, using recorded work,
195
+ verification, and remaining issues. It does not impersonate a model message
196
+ or make another model request. The fallback remains visible after reload;
191
197
  - bounded turn continuation, exact run/session/workspace/route binding, and
192
198
  in-memory plaintext continuation tokens.
193
199
 
200
+ Natural model stops before a required phase submission enter the same durable
201
+ three-delivery loop guard. Boundary workers serialize per session, not across
202
+ unrelated sessions. New human input aborts pending questions and supersedes old
203
+ jobs; delivery rechecks ownership after native flushing. Future retry times and
204
+ expired-owner recovery are scheduled from the database after restart as well
205
+ as during normal operation.
206
+
207
+ CI requires full native-loop coverage against the pinned published runtime,
208
+ including natural stops, identical work-report retries, approval cancellation,
209
+ and both empty and failed final responses. Package installation alone is not
210
+ treated as proof of workflow completion.
211
+
194
212
  Expected validation or omission failures become bounded retry receipts. The
195
213
  first identical failure retries the same phase with temporary evidence; the
196
214
  second asks Akinator. A deterministic continuation is delivered only after a
@@ -0,0 +1,46 @@
1
+ -- Bound every plugin-owned automatic continuation across turns and restarts.
2
+ -- A claim is durable before native delivery; replaying the same claim never
3
+ -- consumes another slot.
4
+
5
+ CREATE TABLE dsh_loop_guard_states (
6
+ run_id TEXT NOT NULL REFERENCES ledger_runs(run_id) ON DELETE CASCADE,
7
+ dsh_session_id TEXT NOT NULL CHECK (length(dsh_session_id) BETWEEN 1 AND 256),
8
+ instruction_digest TEXT CHECK (instruction_digest IS NULL OR length(instruction_digest) = 64),
9
+ generation INTEGER NOT NULL DEFAULT 0 CHECK (generation >= 0),
10
+ automatic_count INTEGER NOT NULL DEFAULT 0 CHECK (automatic_count BETWEEN 0 AND 3),
11
+ status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'waiting_user')),
12
+ blocked_claim_id TEXT CHECK (blocked_claim_id IS NULL OR length(blocked_claim_id) = 64),
13
+ created_at TEXT NOT NULL,
14
+ updated_at TEXT NOT NULL,
15
+ PRIMARY KEY (run_id, dsh_session_id)
16
+ );
17
+
18
+ CREATE TABLE dsh_loop_guard_claims (
19
+ claim_id TEXT PRIMARY KEY CHECK (length(claim_id) = 64),
20
+ run_id TEXT NOT NULL,
21
+ dsh_session_id TEXT NOT NULL,
22
+ instruction_digest TEXT NOT NULL CHECK (length(instruction_digest) = 64),
23
+ generation INTEGER NOT NULL CHECK (generation >= 0),
24
+ ordinal INTEGER NOT NULL CHECK (ordinal BETWEEN 1 AND 4),
25
+ decision TEXT NOT NULL CHECK (decision IN ('deliver', 'wait_user')),
26
+ resolution TEXT CHECK (resolution IS NULL OR resolution IN ('user_answer', 'manual_user', 'superseded')),
27
+ created_at TEXT NOT NULL,
28
+ question_asked_at TEXT,
29
+ resolved_at TEXT,
30
+ FOREIGN KEY (run_id, dsh_session_id)
31
+ REFERENCES dsh_loop_guard_states(run_id, dsh_session_id) ON DELETE CASCADE
32
+ );
33
+
34
+ CREATE INDEX idx_dsh_loop_guard_claims_scope
35
+ ON dsh_loop_guard_claims(run_id, dsh_session_id, generation, created_at);
36
+
37
+ -- Stateful host effects can also cycle successfully without advancing Enno.
38
+ -- Keep their no-progress accounting on the already leased job row.
39
+ ALTER TABLE dsh_boundary_jobs ADD COLUMN progress_digest TEXT
40
+ CHECK (progress_digest IS NULL OR length(progress_digest) = 64);
41
+ ALTER TABLE dsh_boundary_jobs ADD COLUMN progress_count INTEGER NOT NULL DEFAULT 0
42
+ CHECK (progress_count BETWEEN 0 AND 3);
43
+ ALTER TABLE dsh_boundary_jobs ADD COLUMN progress_claim_attempt INTEGER
44
+ CHECK (progress_claim_attempt IS NULL OR progress_claim_attempt >= 1);
45
+ ALTER TABLE dsh_boundary_jobs ADD COLUMN progress_waiting INTEGER NOT NULL DEFAULT 0
46
+ CHECK (progress_waiting IN (0, 1));
@@ -0,0 +1,118 @@
1
+ -- Each work-report attempt is distinct; replay within an attempt remains idempotent.
2
+ ALTER TABLE dsh_turn_intents ADD COLUMN execution_attempt INTEGER NOT NULL DEFAULT 0 CHECK (execution_attempt >= 0);
3
+ ALTER TABLE dsh_turn_receipts ADD COLUMN execution_attempt INTEGER NOT NULL DEFAULT 0 CHECK (execution_attempt >= 0);
4
+ UPDATE dsh_turn_receipts AS receipt SET execution_attempt = (
5
+ SELECT COUNT(*) FROM dsh_turn_receipts AS prior
6
+ WHERE prior.run_id = receipt.run_id AND prior.phase = 'work_unit'
7
+ AND prior.work_unit_key = receipt.work_unit_key AND prior.contract_revision = receipt.contract_revision
8
+ AND prior.outcome_kind = 'applied' AND prior.native_turn < receipt.native_turn
9
+ ) WHERE receipt.phase = 'work_unit';
10
+ UPDATE dsh_turn_intents SET execution_attempt = COALESCE(
11
+ (SELECT execution_attempt FROM dsh_turn_receipts WHERE receipt_id = dsh_turn_intents.receipt_id), 0);
12
+ DROP INDEX idx_dsh_turn_receipts_applied_identity;
13
+ CREATE UNIQUE INDEX idx_dsh_turn_receipts_applied_identity
14
+ ON dsh_turn_receipts(run_id, phase, contract_revision, work_unit_key, execution_attempt, input_digest)
15
+ WHERE outcome_kind = 'applied';
16
+ DROP TRIGGER dsh_turn_receipt_from_enno_completion;
17
+ CREATE TRIGGER dsh_turn_receipt_from_enno_completion
18
+ AFTER UPDATE OF state, response_json ON enno_operation_receipts
19
+ WHEN NEW.state = 'completed' AND OLD.state <> 'completed'
20
+ AND EXISTS (
21
+ SELECT 1 FROM dsh_turn_intents AS intent
22
+ WHERE intent.run_id = NEW.run_id
23
+ AND intent.operation = NEW.operation
24
+ AND intent.idempotency_key = NEW.idempotency_key
25
+ )
26
+ BEGIN
27
+ INSERT INTO dsh_turn_receipts (
28
+ receipt_id, run_id, dsh_session_id, native_turn, phase,
29
+ contract_revision, work_unit_key, input_digest, execution_attempt, outcome_kind,
30
+ next_action, enno_operation, enno_idempotency_key, created_at
31
+ )
32
+ SELECT intent.receipt_id, intent.run_id, intent.dsh_session_id,
33
+ intent.native_turn, intent.phase, intent.contract_revision,
34
+ intent.work_unit_key, intent.input_digest, intent.execution_attempt, 'applied',
35
+ json_extract(NEW.response_json, '$.ennoOduno.nextAction'),
36
+ NEW.operation, NEW.idempotency_key, NEW.finished_at
37
+ FROM dsh_turn_intents AS intent
38
+ WHERE intent.run_id = NEW.run_id
39
+ AND intent.operation = NEW.operation
40
+ AND intent.idempotency_key = NEW.idempotency_key;
41
+
42
+ INSERT INTO dsh_turn_handoffs (receipt_id, handoff_json, created_at)
43
+ SELECT intent.receipt_id,
44
+ json_object(
45
+ 'schemaVersion', 1,
46
+ 'runId', intent.run_id,
47
+ 'phase', intent.phase,
48
+ 'revision', intent.contract_revision,
49
+ 'nextAction', json_extract(NEW.response_json, '$.ennoOduno.nextAction'),
50
+ 'source', 'enno_operation_receipt'
51
+ ),
52
+ NEW.finished_at
53
+ FROM dsh_turn_intents AS intent
54
+ WHERE intent.run_id = NEW.run_id
55
+ AND intent.operation = NEW.operation
56
+ AND intent.idempotency_key = NEW.idempotency_key;
57
+
58
+ INSERT INTO dsh_boundary_jobs (
59
+ job_id, receipt_id, run_id, kind, status, available_at,
60
+ created_at, updated_at
61
+ )
62
+ SELECT intent.boundary_job_id,
63
+ intent.receipt_id, intent.run_id,
64
+ 'classify_boundary',
65
+ 'pending', NEW.finished_at, NEW.finished_at, NEW.finished_at
66
+ FROM dsh_turn_intents AS intent
67
+ WHERE intent.run_id = NEW.run_id
68
+ AND intent.operation = NEW.operation
69
+ AND intent.idempotency_key = NEW.idempotency_key;
70
+
71
+ INSERT INTO dsh_continuation_outbox (
72
+ continuation_id, receipt_id, run_id, dsh_session_id,
73
+ causal_revision, message_json, status, created_at, updated_at
74
+ )
75
+ SELECT intent.continuation_id, intent.receipt_id, intent.run_id,
76
+ intent.dsh_session_id, intent.contract_revision,
77
+ json_object(
78
+ 'id', intent.continuation_id,
79
+ 'role', 'user',
80
+ 'content', json_array(json_object(
81
+ 'type', 'text',
82
+ 'text', 'Continue Kiokuko processing from nextAction: ' ||
83
+ coalesce(json_extract(NEW.response_json, '$.ennoOduno.nextAction'), 'complete')
84
+ )),
85
+ 'source', json_object(
86
+ 'kind', 'plugin', 'plugin', 'kiokuko-dsh',
87
+ 'form', 'continuation', 'deliveryId', intent.continuation_id
88
+ )
89
+ ),
90
+ CASE WHEN json_extract(NEW.response_json, '$.ennoOduno.nextAction') IN ('complete', 'report_blocker')
91
+ THEN 'superseded' ELSE 'pending' END,
92
+ NEW.finished_at, NEW.finished_at
93
+ FROM dsh_turn_intents AS intent
94
+ WHERE intent.run_id = NEW.run_id
95
+ AND intent.operation = NEW.operation
96
+ AND intent.idempotency_key = NEW.idempotency_key;
97
+ END;
98
+
99
+ CREATE TABLE dsh_completion_reports (
100
+ run_id TEXT PRIMARY KEY REFERENCES ledger_runs(run_id) ON DELETE CASCADE,
101
+ receipt_id TEXT NOT NULL REFERENCES dsh_turn_receipts(receipt_id),
102
+ dsh_session_id TEXT NOT NULL,
103
+ native_turn INTEGER NOT NULL,
104
+ status TEXT NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'delivered')),
105
+ delivered_seq INTEGER,
106
+ CHECK (delivered_seq IS NULL OR delivered_seq >= 0)
107
+ );
108
+ CREATE TRIGGER dsh_completion_report_pending AFTER INSERT ON dsh_turn_receipts
109
+ WHEN NEW.outcome_kind = 'applied' AND NEW.next_action IN ('complete', 'report_blocker')
110
+ BEGIN
111
+ INSERT OR IGNORE INTO dsh_completion_reports(run_id, receipt_id, dsh_session_id, native_turn)
112
+ VALUES (NEW.run_id, NEW.receipt_id, NEW.dsh_session_id, NEW.native_turn);
113
+ END;
114
+ -- Recover a completion interrupted before the plugin upgrade without replaying old closed runs.
115
+ INSERT OR IGNORE INTO dsh_completion_reports(run_id, receipt_id, dsh_session_id, native_turn)
116
+ SELECT receipt.run_id, receipt.receipt_id, receipt.dsh_session_id, receipt.native_turn
117
+ FROM dsh_turn_receipts AS receipt JOIN ledger_runs AS run ON run.run_id = receipt.run_id
118
+ WHERE receipt.next_action IN ('complete', 'report_blocker') AND run.status = 'active';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiokuko-dsh",
3
- "version": "0.1.21",
3
+ "version": "0.1.23",
4
4
  "description": "Kiokuko plugin for DeepSeek Harness",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -86,6 +86,7 @@ Zenki may propose a plan. Goki may report one approved WorkUnit. Neither role ma
86
86
  8. Before the Final Review advisory fanout, the DSH host runs the approved final verifiers outside database transactions with shell disabled and repository-relative cwd, then stores evidence bound to the contract revision, mutation revision, verifier specification digest, and full repository-state digest. Verification preparation is not a model tool. Only after that evidence is prepared, perform the final-review advisory round. Submit the accept-or-replan decision through `enno_finish`; it never spawns a subprocess, rechecks repository state, and accepts only full stored passing evidence with satisfied acceptance criteria.
87
87
  9. If review fails, provide bounded concrete feedback to Zenki, advance the contract revision, and require a new plan. Never reactivate the old Goki WorkUnit directly.
88
88
  10. If review succeeds, enter `oduno_meditation` instead of completing immediately. Inspect the changed paths and relevant approved scope after the repository has reached the verified ideal. Reflect on obsolete, useless, or redundant tests and functions. Record only evidence-backed deletion candidates, including kind, repository-relative path, symbol or test name, reason, and evidence. Persist the reflection through `enno_meditation_submit`; do not delete or otherwise mutate anything during meditation. The run completes only after this submission.
89
+ 11. After `enno_meditation_submit` returns `kind=applied` with `value.ennoOduno.nextAction=complete`, call no more tools and use the next assistant step in the same native turn to return a visible final response to the user. Lead with the outcome, summarize the completed changes and verification results, state any remaining issue or uncertainty, and mention meditation deletion candidates only when they are actionable. Do not expose internal roles, identifiers, revisions, digests, leases, or protocol fields. A persisted completion without this user-facing response is an incomplete interaction.
89
90
 
90
91
  ## Identity and revision invariants
91
92