kiokuko 1.0.29 → 1.0.31

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 (148) hide show
  1. package/dist/agent-file/render.d.ts +1 -1
  2. package/dist/agent-file/render.js +1 -1
  3. package/dist/akinator/agent-task.d.ts +2 -0
  4. package/dist/akinator/agent-task.d.ts.map +1 -1
  5. package/dist/akinator/agent-task.js +18 -2
  6. package/dist/akinator/agent-task.js.map +1 -1
  7. package/dist/akinator/capabilities.d.ts +2 -0
  8. package/dist/akinator/capabilities.d.ts.map +1 -1
  9. package/dist/akinator/capabilities.js +11 -11
  10. package/dist/akinator/capabilities.js.map +1 -1
  11. package/dist/akinator/coding-routine.d.ts +16 -0
  12. package/dist/akinator/coding-routine.d.ts.map +1 -0
  13. package/dist/akinator/coding-routine.js +19 -0
  14. package/dist/akinator/coding-routine.js.map +1 -0
  15. package/dist/akinator/instructions.d.ts +1 -1
  16. package/dist/akinator/instructions.d.ts.map +1 -1
  17. package/dist/akinator/instructions.js +1 -1
  18. package/dist/akinator/instructions.js.map +1 -1
  19. package/dist/akinator/preparation-recovery.d.ts +1 -0
  20. package/dist/akinator/preparation-recovery.d.ts.map +1 -1
  21. package/dist/akinator/skill-discovery-attempt.d.ts +1 -1
  22. package/dist/akinator/skill-discovery-attempt.d.ts.map +1 -1
  23. package/dist/akinator/skill-discovery-attempt.js +19 -3
  24. package/dist/akinator/skill-discovery-attempt.js.map +1 -1
  25. package/dist/assurance/codex-command-receipt.d.ts +21 -0
  26. package/dist/assurance/codex-command-receipt.d.ts.map +1 -0
  27. package/dist/assurance/codex-command-receipt.js +93 -0
  28. package/dist/assurance/codex-command-receipt.js.map +1 -0
  29. package/dist/assurance/codex-hooks.d.ts +25 -1
  30. package/dist/assurance/codex-hooks.d.ts.map +1 -1
  31. package/dist/assurance/codex-hooks.js +102 -24
  32. package/dist/assurance/codex-hooks.js.map +1 -1
  33. package/dist/assurance/contracts.d.ts +2 -2
  34. package/dist/assurance/decisions.d.ts.map +1 -1
  35. package/dist/assurance/decisions.js +7 -5
  36. package/dist/assurance/decisions.js.map +1 -1
  37. package/dist/assurance/doctor.d.ts.map +1 -1
  38. package/dist/assurance/doctor.js +3 -1
  39. package/dist/assurance/doctor.js.map +1 -1
  40. package/dist/assurance/hook-diagnostics.d.ts.map +1 -1
  41. package/dist/assurance/hook-diagnostics.js +10 -6
  42. package/dist/assurance/hook-diagnostics.js.map +1 -1
  43. package/dist/assurance/service.d.ts +8 -1
  44. package/dist/assurance/service.d.ts.map +1 -1
  45. package/dist/assurance/service.js +6 -1
  46. package/dist/assurance/service.js.map +1 -1
  47. package/dist/assurance/verification-contracts.d.ts +1 -1
  48. package/dist/assurance/verification.d.ts +1 -1
  49. package/dist/chatgpt/memory-policy.d.ts +1 -1
  50. package/dist/chatgpt/memory-policy.d.ts.map +1 -1
  51. package/dist/chatgpt/memory-policy.js +2 -2
  52. package/dist/chatgpt/memory-policy.js.map +1 -1
  53. package/dist/cli.d.ts.map +1 -1
  54. package/dist/cli.js +5 -2
  55. package/dist/cli.js.map +1 -1
  56. package/dist/commands/codex-hook.d.ts.map +1 -1
  57. package/dist/commands/codex-hook.js +53 -12
  58. package/dist/commands/codex-hook.js.map +1 -1
  59. package/dist/commands/diagnostic-retention.d.ts +3 -0
  60. package/dist/commands/diagnostic-retention.d.ts.map +1 -0
  61. package/dist/commands/diagnostic-retention.js +34 -0
  62. package/dist/commands/diagnostic-retention.js.map +1 -0
  63. package/dist/context/broker.js +2 -2
  64. package/dist/context/broker.js.map +1 -1
  65. package/dist/context/delivery.js +1 -1
  66. package/dist/context/delivery.js.map +1 -1
  67. package/dist/context/feedback.d.ts +4 -1
  68. package/dist/context/feedback.d.ts.map +1 -1
  69. package/dist/context/feedback.js +8 -6
  70. package/dist/context/feedback.js.map +1 -1
  71. package/dist/context/ranking.d.ts +1 -1
  72. package/dist/context/ranking.d.ts.map +1 -1
  73. package/dist/context/ranking.js +1 -0
  74. package/dist/context/ranking.js.map +1 -1
  75. package/dist/context/scoped-broker.d.ts +1 -1
  76. package/dist/context/scoped-broker.d.ts.map +1 -1
  77. package/dist/context/scoped-broker.js +29 -12
  78. package/dist/context/scoped-broker.js.map +1 -1
  79. package/dist/context/scoped-memory-use.d.ts.map +1 -1
  80. package/dist/context/scoped-memory-use.js +1 -2
  81. package/dist/context/scoped-memory-use.js.map +1 -1
  82. package/dist/context/selection-state.d.ts.map +1 -1
  83. package/dist/context/selection-state.js +3 -3
  84. package/dist/context/selection-state.js.map +1 -1
  85. package/dist/ledger/checkpoint-contract.d.ts +6 -6
  86. package/dist/ledger/diagnostic-retention.d.ts +49 -0
  87. package/dist/ledger/diagnostic-retention.d.ts.map +1 -0
  88. package/dist/ledger/diagnostic-retention.js +106 -0
  89. package/dist/ledger/diagnostic-retention.js.map +1 -0
  90. package/dist/ledger/maintenance.d.ts.map +1 -1
  91. package/dist/ledger/maintenance.js +4 -3
  92. package/dist/ledger/maintenance.js.map +1 -1
  93. package/dist/ledger/store.d.ts.map +1 -1
  94. package/dist/ledger/store.js +3 -0
  95. package/dist/ledger/store.js.map +1 -1
  96. package/dist/mcp/cancellation-journal.d.ts +44 -0
  97. package/dist/mcp/cancellation-journal.d.ts.map +1 -0
  98. package/dist/mcp/cancellation-journal.js +58 -0
  99. package/dist/mcp/cancellation-journal.js.map +1 -0
  100. package/dist/mcp/chatgpt-contract.d.ts +13 -3
  101. package/dist/mcp/chatgpt-contract.d.ts.map +1 -1
  102. package/dist/mcp/chatgpt-contract.js +3 -1
  103. package/dist/mcp/chatgpt-contract.js.map +1 -1
  104. package/dist/mcp/chatgpt-runtime.d.ts +23 -1
  105. package/dist/mcp/chatgpt-runtime.d.ts.map +1 -1
  106. package/dist/mcp/chatgpt-runtime.js +39 -1
  107. package/dist/mcp/chatgpt-runtime.js.map +1 -1
  108. package/dist/mcp/chatgpt-server.d.ts +1 -1
  109. package/dist/mcp/chatgpt-server.d.ts.map +1 -1
  110. package/dist/mcp/chatgpt-server.js +32 -13
  111. package/dist/mcp/chatgpt-server.js.map +1 -1
  112. package/dist/mcp/request-deadline.d.ts +7 -1
  113. package/dist/mcp/request-deadline.d.ts.map +1 -1
  114. package/dist/mcp/request-deadline.js +12 -3
  115. package/dist/mcp/request-deadline.js.map +1 -1
  116. package/dist/mcp/runtime-owner.d.ts.map +1 -1
  117. package/dist/mcp/runtime-owner.js +4 -1
  118. package/dist/mcp/runtime-owner.js.map +1 -1
  119. package/dist/mcp/server.d.ts.map +1 -1
  120. package/dist/mcp/server.js +50 -15
  121. package/dist/mcp/server.js.map +1 -1
  122. package/dist/memory/checkpoint-contract.d.ts +9 -9
  123. package/dist/memory/federated-retrieval.d.ts.map +1 -1
  124. package/dist/memory/federated-retrieval.js +19 -3
  125. package/dist/memory/federated-retrieval.js.map +1 -1
  126. package/dist/memory/global-conversation-query.d.ts +1 -1
  127. package/dist/memory/global-conversation-query.d.ts.map +1 -1
  128. package/dist/memory/global-conversation-query.js +14 -3
  129. package/dist/memory/global-conversation-query.js.map +1 -1
  130. package/dist/memory/interaction-contract.d.ts +1 -1
  131. package/dist/server/http.d.ts.map +1 -1
  132. package/dist/server/http.js +3 -0
  133. package/dist/server/http.js.map +1 -1
  134. package/dist/setup/standard-skills.d.ts +2 -2
  135. package/dist/setup/standard-skills.d.ts.map +1 -1
  136. package/dist/setup/standard-skills.js +5 -1
  137. package/dist/setup/standard-skills.js.map +1 -1
  138. package/docs/chatgpt.md +15 -0
  139. package/docs/diagnostic-retention.md +21 -0
  140. package/docs/memory-assurance.md +77 -8
  141. package/migrations/012_diagnostic_retention.sql +44 -0
  142. package/package.json +1 -1
  143. package/skills/coding-ideal-routine-skill/SKILL.md +33 -37
  144. package/skills/coding-ideal-routine-skill/references/repo-contracts.md +54 -0
  145. package/skills/coding-ideal-routine-skill/references/verification-scenarios.md +32 -0
  146. package/skills/kiokuko-soul/SKILL.md +7 -0
  147. package/templates/AGENTS.md +2 -2
  148. package/templates/chatgpt/memory-policy.json +2 -2
@@ -13,6 +13,7 @@ const SUMMARY_FIELDS = new Set(['attempted', 'mode', 'requirements', 'queries',
13
13
  const SELECTED_FIELDS = new Set(['skillId', 'name', 'source', 'officialStatus', 'imported', 'updated']);
14
14
  const SUMMARY_FAILURE_FIELDS = new Set(['stage', 'code']);
15
15
  const KIOKUKO_FAILURE_FIELDS = new Set(['kind', 'code']);
16
+ const CANCELLED_FAILURE_FIELDS = new Set(['kind']);
16
17
  const PROVIDER_FAILURE_FIELDS = new Set(['kind', 'code', 'retryAfterSeconds']);
17
18
  const SOURCE_FAILURE_FIELDS = new Set(['kind', 'code', 'retryAfterSeconds']);
18
19
  const ERROR_CODES = [
@@ -184,6 +185,11 @@ function validateSummary(value, mode) {
184
185
  function validateFailure(value) {
185
186
  if (!plainObject(value) || typeof value.kind !== 'string')
186
187
  integrity();
188
+ if (value.kind === 'cancelled') {
189
+ if (!exactObject(value, CANCELLED_FAILURE_FIELDS))
190
+ integrity();
191
+ return { kind: 'cancelled' };
192
+ }
187
193
  if (value.kind === 'kiokuko') {
188
194
  if (!exactObject(value, KIOKUKO_FAILURE_FIELDS)
189
195
  || typeof value.code !== 'string'
@@ -330,7 +336,15 @@ function resolveExistingAttempt(existing, identity) {
330
336
  summary: validateSummary(parseCanonicalStoredJson(existing.summary_json, MAX_SUMMARY_JSON_CHARS), identity.mode),
331
337
  };
332
338
  }
333
- throwStoredFailure(validateFailure(parseCanonicalStoredJson(existing.failure_json, MAX_FAILURE_JSON_CHARS)));
339
+ const failure = validateFailure(parseCanonicalStoredJson(existing.failure_json, MAX_FAILURE_JSON_CHARS));
340
+ if (failure.kind === 'cancelled') {
341
+ // Cancellation remains a recorded failure. Resume without repeating optional
342
+ // external work; its full reservation stays consumed in the run-wide budget.
343
+ return { kind: 'replay', summary: { mode: identity.mode, attempted: true,
344
+ requirements: [], queries: [], cacheHits: 0, candidates: 0, selected: [],
345
+ failures: [{ stage: 'search', code: 'task_request_cancelled' }] } };
346
+ }
347
+ throwStoredFailure(failure);
334
348
  }
335
349
  export function readAgentTaskSkillDiscoveryAttempt(database, identity) {
336
350
  const existing = attemptRow(database, identity);
@@ -427,9 +441,11 @@ export function completeAgentTaskSkillDiscoveryAttempt(database, identity, summa
427
441
  return validateSummary(parseCanonicalStoredJson(completed.summary_json, MAX_SUMMARY_JSON_CHARS), identity.mode);
428
442
  });
429
443
  }
430
- export function failAgentTaskSkillDiscoveryAttempt(database, identity, cause) {
444
+ export function failAgentTaskSkillDiscoveryAttempt(database, identity, cause, signal) {
431
445
  const normalized = normalizedFailure(cause);
432
- const serialized = canonicalJson(normalized.failure);
446
+ // An unrelated security/integrity failure racing an abort must stay fail-closed.
447
+ const cancelled = signal?.aborted === true && cause === signal.reason;
448
+ const serialized = canonicalJson(cancelled ? { kind: 'cancelled' } : normalized.failure);
433
449
  try {
434
450
  withImmediateTransaction(database, () => {
435
451
  const existing = attemptRow(database, identity);
@@ -1 +1 @@
1
- {"version":3,"file":"skill-discovery-attempt.js","sourceRoot":"","sources":["../../src/akinator/skill-discovery-attempt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-discovery-attempt.js","sourceRoot":"","sources":["../../src/akinator/skill-discovery-attempt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ interface CommandIdentity {
2
+ session_id: string;
3
+ turn_id: string;
4
+ cwd: string;
5
+ tool_name?: string | undefined;
6
+ tool_use_id?: string | undefined;
7
+ transcript_path?: unknown;
8
+ tool_input?: unknown;
9
+ }
10
+ export interface CodexCommandReceipt {
11
+ callId: string;
12
+ processId: string;
13
+ exitCode: number;
14
+ }
15
+ /** The path comes only from the client hook, never a model-facing evidence API.
16
+ * Read the session header and a bounded tail; retain no transcript or stdout.
17
+ * Unfamiliar, missing, ambiguous or unfinished host records provide no evidence.
18
+ */
19
+ export declare function readCodexCommandReceipt(input: CommandIdentity, repositoryRoot: string): CodexCommandReceipt | null;
20
+ export {};
21
+ //# sourceMappingURL=codex-command-receipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-command-receipt.d.ts","sourceRoot":"","sources":["../../src/assurance/codex-command-receipt.ts"],"names":[],"mappings":"AAKA,UAAU,eAAe;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AACD,MAAM,WAAW,mBAAmB;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;CAAE;AAW7F;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAsDlH"}
@@ -0,0 +1,93 @@
1
+ import { closeSync, constants, fstatSync, lstatSync, openSync, readSync, realpathSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import path from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ function object(value) {
6
+ return value !== null && typeof value === 'object' && !Array.isArray(value) ? value : {};
7
+ }
8
+ function commandDirectory(value) {
9
+ if (!value.startsWith('file:'))
10
+ return realpathSync(value);
11
+ const url = new URL(value);
12
+ if (url.search || url.hash)
13
+ throw new Error('Invalid command directory URL');
14
+ return realpathSync(fileURLToPath(url));
15
+ }
16
+ /** The path comes only from the client hook, never a model-facing evidence API.
17
+ * Read the session header and a bounded tail; retain no transcript or stdout.
18
+ * Unfamiliar, missing, ambiguous or unfinished host records provide no evidence.
19
+ */
20
+ export function readCodexCommandReceipt(input, repositoryRoot) {
21
+ if (!['exec_command', 'Bash', 'write_stdin'].includes(input.tool_name ?? '') || typeof input.transcript_path !== 'string'
22
+ || !path.isAbsolute(input.transcript_path))
23
+ return null;
24
+ let fd;
25
+ try {
26
+ const sessions = realpathSync(path.join(process.env.CODEX_HOME ?? path.join(homedir(), '.codex'), 'sessions'));
27
+ const file = realpathSync(input.transcript_path);
28
+ if (!file.startsWith(sessions + path.sep) || lstatSync(input.transcript_path).isSymbolicLink()
29
+ || !path.basename(file).startsWith('rollout-') || !path.basename(file).endsWith(`-${input.session_id}.jsonl`))
30
+ return null;
31
+ fd = openSync(file, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
32
+ const stat = fstatSync(fd);
33
+ if (!stat.isFile() || (process.getuid && stat.uid !== process.getuid()) || (stat.mode & 0o022) !== 0)
34
+ return null;
35
+ const head = Buffer.alloc(Math.min(stat.size, 64 * 1024));
36
+ readSync(fd, head, 0, head.length, 0);
37
+ const headEnd = head.indexOf(10);
38
+ if (headEnd < 0)
39
+ return null;
40
+ const header = object(JSON.parse(head.subarray(0, headEnd).toString('utf8')));
41
+ const session = object(header.payload);
42
+ if (header.type !== 'session_meta' || session.id !== input.session_id || typeof session.cwd !== 'string'
43
+ || realpathSync(session.cwd) !== repositoryRoot)
44
+ return null;
45
+ const offset = Math.max(0, stat.size - 2 * 1024 * 1024);
46
+ const tail = Buffer.alloc(stat.size - offset);
47
+ readSync(fd, tail, 0, tail.length, offset);
48
+ if (tail[tail.length - 1] !== 10)
49
+ return null;
50
+ // Ignore only the partial first record of a bounded tail.
51
+ const start = offset === 0 ? 0 : tail.indexOf(10) + 1;
52
+ const end = tail.lastIndexOf(10);
53
+ if (start < 0 || end < start)
54
+ return null;
55
+ const lines = tail.subarray(start, end).toString('utf8').split('\n');
56
+ if (lines.length > 4096)
57
+ return null;
58
+ const args = object(input.tool_input);
59
+ let found = null;
60
+ for (const line of lines) {
61
+ const record = object(JSON.parse(line));
62
+ const event = object(record.payload);
63
+ const item = object(event.item);
64
+ if (record.type !== 'event_msg' || event.type !== 'item_completed' || event.thread_id !== input.session_id
65
+ || event.turn_id !== input.turn_id || item.type !== 'CommandExecution' || item.source !== 'unified_exec_startup')
66
+ continue;
67
+ const matches = input.tool_name === 'write_stdin'
68
+ ? (typeof args.session_id === 'number' || typeof args.session_id === 'string') && item.process_id === String(args.session_id)
69
+ : item.id === input.tool_use_id;
70
+ if (!matches)
71
+ continue;
72
+ if (typeof item.id !== 'string' || !item.id.length || typeof item.process_id !== 'string' || !item.process_id.length
73
+ || typeof item.cwd !== 'string' || commandDirectory(item.cwd) !== realpathSync(input.cwd)
74
+ || typeof item.exit_code !== 'number' || !Number.isSafeInteger(item.exit_code)
75
+ || (item.status !== 'completed' && item.status !== 'failed')
76
+ || (item.status === 'completed') !== (item.exit_code === 0))
77
+ return null;
78
+ const receipt = { callId: item.id, processId: item.process_id, exitCode: item.exit_code };
79
+ if (found && JSON.stringify(found) !== JSON.stringify(receipt))
80
+ return null;
81
+ found = receipt;
82
+ }
83
+ return found;
84
+ }
85
+ catch {
86
+ return null;
87
+ }
88
+ finally {
89
+ if (fd !== undefined)
90
+ closeSync(fd);
91
+ }
92
+ }
93
+ //# sourceMappingURL=codex-command-receipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-command-receipt.js","sourceRoot":"","sources":["../../src/assurance/codex-command-receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvG,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAYzC,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtH,CAAC;AACD,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC7E,OAAO,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAsB,EAAE,cAAsB;IACpF,IAAI,CAAC,CAAC,cAAc,EAAC,MAAM,EAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ;WAClH,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,EAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QAC/G,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,cAAc,EAAE;eACzF,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,UAAU,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7H,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QACtF,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAClH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAC1D,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,OAAO,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;eACnG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,cAAc;YAAE,OAAO,IAAI,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;QAC9C,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAC9C,0DAA0D;QAC1D,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI;YAAE,OAAO,IAAI,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,KAAK,GAA+B,IAAI,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,UAAU;mBACrG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,IAAI,IAAI,CAAC,MAAM,KAAK,sBAAsB;gBAAE,SAAS;YAC7H,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,KAAK,aAAa;gBAC/C,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC7H,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,WAAW,CAAC;YAClC,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;mBAC/G,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;mBACtF,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;mBAC3E,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;mBACzD,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC3E,MAAM,OAAO,GAAG,EAAC,MAAM,EAAC,IAAI,CAAC,EAAE,EAAC,SAAS,EAAC,IAAI,CAAC,UAAU,EAAC,QAAQ,EAAC,IAAI,CAAC,SAAS,EAAC,CAAC;YACnF,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC5E,KAAK,GAAG,OAAO,CAAC;QAClB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;YAChB,CAAC;QAAC,IAAI,EAAE,KAAK,SAAS;YAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC;AAClD,CAAC"}
@@ -1,14 +1,38 @@
1
+ import * as z from 'zod/v4';
1
2
  import type { SqliteDatabase } from '../db/adapter.js';
2
3
  export declare const CODEX_HOOK_LIMITATION = "Hooks cover supported client paths only. They do not isolate execution, control an already running process or retract an emitted response. Configuration is not proof of active runtime enforcement.";
4
+ declare const hookSchema: z.ZodObject<{
5
+ hook_event_name: z.ZodEnum<{
6
+ UserPromptSubmit: "UserPromptSubmit";
7
+ PreToolUse: "PreToolUse";
8
+ PostToolUse: "PostToolUse";
9
+ Stop: "Stop";
10
+ Interrupt: "Interrupt";
11
+ SubagentStart: "SubagentStart";
12
+ SubagentStop: "SubagentStop";
13
+ }>;
14
+ session_id: z.ZodString;
15
+ turn_id: z.ZodString;
16
+ cwd: z.ZodString;
17
+ agent_id: z.ZodOptional<z.ZodString>;
18
+ tool_name: z.ZodOptional<z.ZodString>;
19
+ tool_use_id: z.ZodOptional<z.ZodString>;
20
+ tool_input: z.ZodOptional<z.ZodUnknown>;
21
+ tool_response: z.ZodOptional<z.ZodUnknown>;
22
+ stop_hook_active: z.ZodOptional<z.ZodBoolean>;
23
+ }, z.core.$loose>;
24
+ export declare function parseCodexHookInput(raw: unknown): z.infer<typeof hookSchema>;
3
25
  export declare function codexHookCorrelationId(fields: Record<string, unknown>): string;
4
26
  /** stdout strings are never completion metadata, even when they contain JSON or exit headers. */
5
27
  export declare const CODEX_EXECUTION_ADAPTER: {
6
- readonly id: "codex-hook/structured-exit-code-v1";
28
+ readonly id: "codex-hook/structured-exit-code-v2";
7
29
  readonly rawOutputExitMetadata: false;
8
30
  readonly structuredExitMetadata: true;
31
+ readonly hostCommandReceiptMetadata: true;
9
32
  };
10
33
  export declare function observedExitCode(value: unknown): number | null;
11
34
  /** Record protocol shape and decision only, never arguments or tool output. */
12
35
  export declare function handleCodexHook(db: SqliteDatabase, raw: unknown): object;
13
36
  export declare function codexHookFailureCode(error: unknown): string;
37
+ export {};
14
38
  //# sourceMappingURL=codex-hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-hooks.d.ts","sourceRoot":"","sources":["../../src/assurance/codex-hooks.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,kBAAkB,CAAC;AASlE,eAAO,MAAM,qBAAqB,yMAAyM,CAAC;AAU5O,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAI9E;AAkBD,iGAAiG;AACjG,eAAO,MAAM,uBAAuB;;;;CAAoH,CAAC;AACzJ,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI9D;AAsRD,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAuBxE;AACD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAe3D"}
1
+ {"version":3,"file":"codex-hooks.d.ts","sourceRoot":"","sources":["../../src/assurance/codex-hooks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAK5B,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,kBAAkB,CAAC;AAUlE,eAAO,MAAM,qBAAqB,yMAAyM,CAAC;AAE5O,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;iBAKA,CAAC;AAGjB,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAE5E;AACD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAI9E;AAkBD,iGAAiG;AACjG,eAAO,MAAM,uBAAuB;;;;;CAAsJ,CAAC;AAC3L,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI9D;AAoVD,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CA2BxE;AACD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAe3D"}
@@ -13,6 +13,7 @@ import { KiokukoError } from '../errors.js';
13
13
  import { assuranceState, taskAssuranceReport, insertTaskEvidence, memoryReviewNextAction } from './service.js';
14
14
  import { repositoryStateDigest } from './snapshot.js';
15
15
  import { parseAssurance } from './contracts.js';
16
+ import { readCodexCommandReceipt } from './codex-command-receipt.js';
16
17
  export const CODEX_HOOK_LIMITATION = 'Hooks cover supported client paths only. They do not isolate execution, control an already running process or retract an emitted response. Configuration is not proof of active runtime enforcement.';
17
18
  const bounded = z.string().min(1).max(500);
18
19
  const hookSchema = z.object({
@@ -21,6 +22,9 @@ const hookSchema = z.object({
21
22
  tool_name: bounded.optional(), tool_use_id: bounded.optional(), tool_input: z.unknown().optional(), tool_response: z.unknown().optional(),
22
23
  stop_hook_active: z.boolean().optional(),
23
24
  }).passthrough();
25
+ export function parseCodexHookInput(raw) {
26
+ return parseAssurance(hookSchema, raw);
27
+ }
24
28
  export function codexHookCorrelationId(fields) {
25
29
  const parts = [fields.session_id, fields.turn_id, fields.tool_use_id];
26
30
  return parts.every(value => typeof value === 'string')
@@ -49,21 +53,24 @@ function responseData(value) {
49
53
  return outer;
50
54
  }
51
55
  /** stdout strings are never completion metadata, even when they contain JSON or exit headers. */
52
- export const CODEX_EXECUTION_ADAPTER = { id: 'codex-hook/structured-exit-code-v1', rawOutputExitMetadata: false, structuredExitMetadata: true };
56
+ export const CODEX_EXECUTION_ADAPTER = { id: 'codex-hook/structured-exit-code-v2', rawOutputExitMetadata: false, structuredExitMetadata: true, hostCommandReceiptMetadata: true };
53
57
  export function observedExitCode(value) {
54
58
  const response = record(value);
55
- if (response.session_id !== undefined || response.timed_out === true || response.interrupted === true || response.signal !== undefined || (response.status !== undefined && !['completed', 'finished'].includes(String(response.status))) || response.error !== undefined)
59
+ if (response.isError === true || response.session_id !== undefined || response.timed_out === true || response.interrupted === true || response.signal !== undefined || (response.status !== undefined && !['completed', 'finished'].includes(String(response.status))) || response.error !== undefined)
56
60
  return null;
57
61
  return typeof response.exit_code === 'number' && Number.isSafeInteger(response.exit_code) ? response.exit_code : null;
58
62
  }
59
63
  const turnStopReason = 'Kiokuko stopped this turn after a policy denial. Do not retry tools or attempt preparation/recovery. Report the blocker and wait for a new user message.';
64
+ // Adapter metadata is private; Codex's strict stdout schema rejects extra keys.
65
+ const denialMetadata = new WeakMap();
60
66
  function deny(reason, code = 'identity_violation', recoverable = false) {
61
67
  const message = recoverable ? reason : `${reason} ${turnStopReason}`;
62
- return {
63
- kiokukoDecision: { reason: code, recoverable, nextAction: recoverable ? 'repair_current_request' : 'stop_and_report' },
68
+ const output = {
64
69
  systemMessage: `Kiokuko blocked this tool call: ${message}`,
65
70
  hookSpecificOutput: { hookEventName: 'PreToolUse', permissionDecision: 'deny', permissionDecisionReason: message },
66
71
  };
72
+ denialMetadata.set(output, { reason: code, recoverable, nextAction: recoverable ? 'repair_current_request' : 'stop_and_report' });
73
+ return output;
67
74
  }
68
75
  function stopTurn(event) {
69
76
  // SubagentStart cannot stop a child with continue:false. Its tool gate still denies.
@@ -106,8 +113,8 @@ function checkoutFreeHook(input) {
106
113
  return deny('Project operations require an existing Git checkout. Ordinary conversation can use global memory and bundled Skill reads.', 'repository_required', true);
107
114
  }
108
115
  /** stdin must come from the installed client hook. Session IDs supplied to model-facing APIs grant no authority. */
109
- function handleCodexHookEvent(db, raw) {
110
- const input = parseAssurance(hookSchema, raw);
116
+ function handleCodexHookEvent(db, raw, onBinding, onExitSource) {
117
+ const input = parseCodexHookInput(raw);
111
118
  const cwd = realpathSync(input.cwd);
112
119
  let root;
113
120
  try {
@@ -128,6 +135,7 @@ function handleCodexHookEvent(db, raw) {
128
135
  }
129
136
  const identity = canonicalContentHash({ session: input.session_id, turn: input.turn_id, agent: input.agent_id ?? 'main', root });
130
137
  const requestId = `codex-${identity}`;
138
+ onBinding(requestId);
131
139
  const now = new Date().toISOString();
132
140
  const recoverableDeny = (reason, code) => deny(reason, code, true);
133
141
  const denyTurn = (reason, code = 'identity_violation') => {
@@ -343,32 +351,82 @@ function handleCodexHookEvent(db, raw) {
343
351
  return {};
344
352
  const response = responseData(input.tool_response);
345
353
  // Unknown or unfinished client result shapes must never become passing evidence.
346
- const exitCode = observedExitCode(input.tool_response);
354
+ const directExit = observedExitCode(input.tool_response);
355
+ const receipt = directExit === null && typeof input.tool_response === 'string' ? readCodexCommandReceipt(input, root) : null;
356
+ const exitCode = directExit ?? receipt?.exitCode ?? null;
357
+ if (exitCode !== null)
358
+ onExitSource(receipt ? 'host_command_receipt' : 'structured_response', exitCode);
347
359
  // Each completion reads its own call and the current assurance revision under
348
360
  // the writer lock. A different call may have advanced that revision already.
349
361
  return withImmediateTransaction(db, () => {
350
362
  const current = db.prepare('SELECT * FROM codex_hook_requests WHERE identity_digest = ?').get(identity);
351
363
  if (current?.stop_notified)
352
364
  return stopTurn('PostToolUse');
353
- const call = db.prepare('SELECT * FROM codex_hook_tools WHERE identity_digest = ? AND call_id = ?').get(identity, input.tool_use_id);
365
+ const admitted = db.prepare('SELECT * FROM codex_hook_tools WHERE identity_digest = ? AND call_id = ?').get(identity, input.tool_use_id);
366
+ let call = admitted;
354
367
  if (!current || current.run_id !== request.run_id || current.state !== 'bound')
355
368
  throw new KiokukoError('CONFLICT', 'Tool completion binding changed');
369
+ if (admitted && admitted.run_id !== current.run_id)
370
+ throw new KiokukoError('CONFLICT', 'Tool completion binding changed');
371
+ if (admitted && admitted.input_digest !== canonicalContentHash(input.tool_input ?? null))
372
+ throw new KiokukoError('CONFLICT', 'Tool completion input changed');
373
+ if (input.tool_name === 'write_stdin' && (typeof args.session_id === 'number' || typeof args.session_id === 'string')) {
374
+ let original = db.prepare('SELECT t.* FROM codex_hook_processes p JOIN codex_hook_tools t ON t.identity_digest=p.identity_digest AND t.call_id=p.call_id WHERE p.identity_digest=? AND p.session_id=?')
375
+ .get(identity, String(args.session_id));
376
+ // A stdout-only yielded result cannot expose a trusted process ID. A final
377
+ // host receipt can bind that ID to its exact, already admitted command.
378
+ if (!original && receipt)
379
+ original = db.prepare('SELECT * FROM codex_hook_tools WHERE identity_digest=? AND call_id=?')
380
+ .get(identity, receipt.callId);
381
+ if (receipt && original?.call_id !== receipt.callId)
382
+ throw new KiokukoError('CONFLICT', 'Tool completion binding changed');
383
+ // Codex may emit only PostToolUse for write_stdin. Its authority is the
384
+ // original admitted execution and observed session, never a guessed call.
385
+ if (!original)
386
+ throw new KiokukoError('CONFLICT', 'Tool completion has no matching start');
387
+ call = original;
388
+ }
356
389
  if (!call)
357
390
  throw new KiokukoError('CONFLICT', 'Tool completion has no matching start');
358
391
  if (call.run_id !== current.run_id)
359
392
  throw new KiokukoError('CONFLICT', 'Tool completion binding changed');
360
- if (call.input_digest !== canonicalContentHash(input.tool_input ?? null))
361
- throw new KiokukoError('CONFLICT', 'Tool completion input changed');
362
393
  const run = new LedgerStore(db).readRun(current.run_id);
363
394
  if (!run || run.status !== 'active')
364
395
  throw new KiokukoError('CONFLICT', 'Tool completion belongs to a terminal run');
365
396
  const state = assuranceState(db, current.run_id);
366
397
  if (!state || state.repository_root !== root)
367
398
  throw new KiokukoError('CONFLICT', 'Tool completion repository changed');
399
+ if (input.tool_name === 'write_stdin' && receipt) {
400
+ db.prepare('INSERT INTO codex_hook_processes VALUES(?,?,?) ON CONFLICT DO NOTHING')
401
+ .run(identity, receipt.processId, call.call_id);
402
+ }
403
+ if (!admitted) {
404
+ // A post-only poll inherits the original admission, but its own identity
405
+ // and input still need a durable binding for exact replay validation.
406
+ db.prepare(`INSERT INTO codex_hook_tools
407
+ (identity_digest,call_id,run_id,delivery_id,input_digest,state_digest,evidence_id,completion_state)
408
+ VALUES (?,?,?,?,?,?,NULL,'unknown')`)
409
+ .run(identity, input.tool_use_id, call.run_id, call.delivery_id, canonicalContentHash(input.tool_input ?? null), call.state_digest);
410
+ }
411
+ // Keep process correlation even if the command changed source before yielding.
412
+ if (exitCode === null && ['Bash', 'exec_command'].includes(input.tool_name) && (typeof response.session_id === 'number' || typeof response.session_id === 'string')) {
413
+ const sessionId = String(response.session_id);
414
+ if (!sessionId.length || sessionId.length > 128)
415
+ throw new KiokukoError('VALIDATION_ERROR', 'Process session ID is invalid');
416
+ const prior = db.prepare('SELECT call_id FROM codex_hook_processes WHERE identity_digest=? AND session_id=?').get(identity, sessionId);
417
+ if (prior && prior.call_id !== call.call_id)
418
+ throw new KiokukoError('CONFLICT', 'Process session ID was reused');
419
+ db.prepare('INSERT INTO codex_hook_processes VALUES(?,?,?) ON CONFLICT DO NOTHING').run(identity, sessionId, call.call_id);
420
+ }
421
+ // Correlation belongs to the admitted process even when its delivery is old.
422
+ // Preserve it for subsequent polls, but never certify the replacement delivery.
368
423
  if (call.delivery_id !== state.delivery_id)
369
424
  return context('PostToolUse', 'Delivery changed during execution; completion cannot verify the new delivery.');
370
- if (call.evidence_id)
425
+ if (call.evidence_id && db.prepare('SELECT outcome FROM task_execution_evidence WHERE evidence_id=?').get(call.evidence_id)?.outcome !== 'unknown') {
426
+ if (call.call_id !== input.tool_use_id)
427
+ db.prepare('UPDATE codex_hook_tools SET evidence_id=?,completion_state=? WHERE identity_digest=? AND call_id=?').run(call.evidence_id, 'completed', identity, input.tool_use_id);
371
428
  return context('PostToolUse', `Execution evidence: ${call.evidence_id}`);
429
+ }
372
430
  let digest;
373
431
  try {
374
432
  digest = repositoryStateDigest(root);
@@ -380,31 +438,49 @@ function handleCodexHookEvent(db, raw) {
380
438
  if (!call.post_state_digest) {
381
439
  db.prepare('UPDATE task_assurance SET observed_changes=1, observed_state_digest=?, revision=revision+1 WHERE run_id=? AND observed_state_digest IS NOT ?').run(digest, current.run_id, digest);
382
440
  db.prepare('UPDATE task_assurance SET observation_sequence=observation_sequence+1 WHERE run_id=?').run(current.run_id);
383
- db.prepare('UPDATE codex_hook_tools SET post_state_digest=? WHERE identity_digest=? AND call_id=?').run(digest, identity, input.tool_use_id);
441
+ db.prepare('UPDATE codex_hook_tools SET post_state_digest=? WHERE identity_digest=? AND call_id=?').run(digest, identity, call.call_id);
384
442
  }
385
443
  return context('PostToolUse', 'Repository state changed; earlier verification is stale. Implementation evidence is now required for adopted code memories.');
386
444
  }
387
- if (!['Bash', 'exec_command'].includes(input.tool_name))
445
+ if (!['Bash', 'exec_command'].includes(input.tool_name) && !(input.tool_name === 'write_stdin' && call.call_id !== input.tool_use_id))
388
446
  return {};
389
- if (response.session_id !== undefined && exitCode === null)
390
- return context('PostToolUse', 'Process still running; verification remains pending.');
391
- const outcome = exitCode === null ? 'unknown' : exitCode === 0 ? 'passed' : 'failed';
447
+ if (exitCode === null) {
448
+ const running = response.session_id !== undefined || response.status === 'running';
449
+ const next = running ? 'running' : 'unknown';
450
+ if (call.completion_state === next || call.completion_state === 'unknown' && running)
451
+ return {};
452
+ db.prepare('INSERT INTO task_execution_observations(run_id) VALUES(?) ON CONFLICT DO NOTHING').run(current.run_id);
453
+ if (call.completion_state === 'admitted' || next === 'unknown') {
454
+ const column = running ? 'running_calls' : 'unknown_exit_calls';
455
+ db.prepare(`UPDATE task_execution_observations SET ${column}=${column}+1 WHERE run_id=?`).run(current.run_id);
456
+ db.prepare('UPDATE task_assurance SET observation_sequence=observation_sequence+1 WHERE run_id=?').run(current.run_id);
457
+ }
458
+ db.prepare('UPDATE codex_hook_tools SET completion_state=? WHERE identity_digest=? AND call_id=?').run(next, identity, call.call_id);
459
+ if (!running)
460
+ db.prepare("UPDATE task_execution_observations SET last_exit_metadata='unavailable' WHERE run_id=?").run(current.run_id);
461
+ return running ? context('PostToolUse', 'Process still running; verification remains pending.') : {};
462
+ }
463
+ const outcome = exitCode === 0 ? 'passed' : 'failed';
392
464
  const evidenceId = insertTaskEvidence(db, { runId: current.run_id, deliveryId: state.delivery_id, root, cwd: root,
393
465
  executionDigest: call.input_digest, stateDigest: digest, outcome, exitCode, provenance: 'client_observed' });
394
- db.prepare('UPDATE codex_hook_tools SET evidence_id = ? WHERE identity_digest = ? AND call_id = ?').run(evidenceId, identity, input.tool_use_id);
466
+ db.prepare('UPDATE codex_hook_tools SET evidence_id = ? WHERE identity_digest = ? AND call_id = ?').run(evidenceId, identity, call.call_id);
467
+ if (call.call_id !== input.tool_use_id)
468
+ db.prepare('UPDATE codex_hook_tools SET evidence_id=?,completion_state=? WHERE identity_digest=? AND call_id=?').run(evidenceId, 'completed', identity, input.tool_use_id);
395
469
  db.prepare('UPDATE task_assurance SET observation_sequence=observation_sequence+1 WHERE run_id=?').run(current.run_id);
396
- if (outcome === 'unknown')
397
- return {};
470
+ db.prepare('UPDATE codex_hook_tools SET completion_state=? WHERE identity_digest=? AND call_id=?').run('completed', identity, call.call_id);
471
+ db.prepare("INSERT INTO task_execution_observations(run_id,structured_exit_calls,last_exit_metadata) VALUES(?,1,'available') ON CONFLICT(run_id) DO UPDATE SET structured_exit_calls=structured_exit_calls+1,last_exit_metadata='available'").run(current.run_id);
398
472
  return context('PostToolUse', `Execution evidence: ${evidenceId}; outcome: ${outcome}.${outcome === 'passed' && (taskAssuranceReport(db, current.run_id).missingVerification.length || taskAssuranceReport(db, current.run_id).verification.checks.some(check => check.status !== 'passed')) ? ' Link it to the unresolved verification requirement.' : ''}`);
399
473
  });
400
474
  }
401
475
  /** Record protocol shape and decision only, never arguments or tool output. */
402
476
  export function handleCodexHook(db, raw) {
403
- const input = parseAssurance(hookSchema, raw);
477
+ const input = parseCodexHookInput(raw);
404
478
  const response = record(input.tool_response);
405
479
  const args = record(input.tool_input);
406
- const shape = { hasArguments: !!args.arguments, hasParameters: !!args.parameters, hasRequestId: !!args.requestId, hasSoulRead: !!args.soulRead, type: typeof input.tool_response, structured: !!response.structuredContent,
407
- content: Array.isArray(response.content), exitCode: typeof response.exit_code, exitMetadata: observedExitCode(input.tool_response) === null ? 'unavailable' : 'structured', exitAdapter: CODEX_EXECUTION_ADAPTER.id, contractVersion: INTEGRATION_CONTRACT.version, contractId: INTEGRATION_CONTRACT.id, hookPackageVersion: PACKAGE_VERSION, status: typeof response.status };
480
+ const hostFields = Object.fromEntries(['exit_code', 'exitCode', 'tool_execution', 'tool_result', 'tool_response_metadata', 'execution_metadata', 'transcript_path']
481
+ .map(key => [key, typeof input[key]]));
482
+ const shape = { request: null, hostFields, execution: { occurred: input.hook_event_name === 'PostToolUse', completionRecorded: false, exitCode: observedExitCode(input.tool_response) }, hasArguments: !!args.arguments, hasParameters: !!args.parameters, hasRequestId: !!args.requestId, hasSoulRead: !!args.soulRead, type: typeof input.tool_response, structured: !!response.structuredContent,
483
+ content: Array.isArray(response.content), exitCode: typeof response.exit_code, exitMetadata: observedExitCode(input.tool_response) === null ? 'unavailable' : 'structured', exitSource: 'unavailable', exitAdapter: CODEX_EXECUTION_ADAPTER.id, contractVersion: INTEGRATION_CONTRACT.version, contractId: INTEGRATION_CONTRACT.id, hookPackageVersion: PACKAGE_VERSION, status: typeof response.status };
408
484
  const save = (decision, reason, recovery) => withImmediateTransaction(db, () => {
409
485
  const diagnostic = { ...shape, reason, recoverable: recovery?.recoverable, nextAction: recovery?.nextAction, call: codexHookCorrelationId(input) };
410
486
  db.prepare('INSERT INTO codex_hook_observations VALUES (?, ?, ?, ?, ?, ?)')
@@ -412,10 +488,12 @@ export function handleCodexHook(db, raw) {
412
488
  db.prepare('DELETE FROM codex_hook_observations WHERE rowid NOT IN (SELECT rowid FROM codex_hook_observations ORDER BY rowid DESC LIMIT 1000)').run();
413
489
  });
414
490
  try {
415
- const result = handleCodexHookEvent(db, input);
491
+ const result = handleCodexHookEvent(db, input, requestId => { shape.request = requestId; }, (source, exitCode) => { shape.exitSource = source; shape.exitMetadata = 'structured'; shape.execution.exitCode = exitCode; });
492
+ shape.execution.completionRecorded = input.hook_event_name === 'PostToolUse';
416
493
  const specific = record(record(result).hookSpecificOutput);
494
+ const decision = denialMetadata.get(result);
417
495
  try {
418
- save(specific.permissionDecision === 'deny' ? 'denied' : 'handled', specific.permissionDecision === 'deny' ? String(record(record(result).kiokukoDecision).reason ?? 'policy_denied') : undefined, record(record(result).kiokukoDecision));
496
+ save(specific.permissionDecision === 'deny' ? 'denied' : 'handled', decision?.reason, decision);
419
497
  }
420
498
  catch {
421
499
  process.stderr.write('Kiokuko hook observation unavailable: observation_write_failed.\n');