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.
- package/dist/agent-file/render.d.ts +1 -1
- package/dist/agent-file/render.js +1 -1
- package/dist/akinator/agent-task.d.ts +2 -0
- package/dist/akinator/agent-task.d.ts.map +1 -1
- package/dist/akinator/agent-task.js +18 -2
- package/dist/akinator/agent-task.js.map +1 -1
- package/dist/akinator/capabilities.d.ts +2 -0
- package/dist/akinator/capabilities.d.ts.map +1 -1
- package/dist/akinator/capabilities.js +11 -11
- package/dist/akinator/capabilities.js.map +1 -1
- package/dist/akinator/coding-routine.d.ts +16 -0
- package/dist/akinator/coding-routine.d.ts.map +1 -0
- package/dist/akinator/coding-routine.js +19 -0
- package/dist/akinator/coding-routine.js.map +1 -0
- package/dist/akinator/instructions.d.ts +1 -1
- package/dist/akinator/instructions.d.ts.map +1 -1
- package/dist/akinator/instructions.js +1 -1
- package/dist/akinator/instructions.js.map +1 -1
- package/dist/akinator/preparation-recovery.d.ts +1 -0
- package/dist/akinator/preparation-recovery.d.ts.map +1 -1
- package/dist/akinator/skill-discovery-attempt.d.ts +1 -1
- package/dist/akinator/skill-discovery-attempt.d.ts.map +1 -1
- package/dist/akinator/skill-discovery-attempt.js +19 -3
- package/dist/akinator/skill-discovery-attempt.js.map +1 -1
- package/dist/assurance/codex-command-receipt.d.ts +21 -0
- package/dist/assurance/codex-command-receipt.d.ts.map +1 -0
- package/dist/assurance/codex-command-receipt.js +93 -0
- package/dist/assurance/codex-command-receipt.js.map +1 -0
- package/dist/assurance/codex-hooks.d.ts +25 -1
- package/dist/assurance/codex-hooks.d.ts.map +1 -1
- package/dist/assurance/codex-hooks.js +102 -24
- package/dist/assurance/codex-hooks.js.map +1 -1
- package/dist/assurance/contracts.d.ts +2 -2
- package/dist/assurance/decisions.d.ts.map +1 -1
- package/dist/assurance/decisions.js +7 -5
- package/dist/assurance/decisions.js.map +1 -1
- package/dist/assurance/doctor.d.ts.map +1 -1
- package/dist/assurance/doctor.js +3 -1
- package/dist/assurance/doctor.js.map +1 -1
- package/dist/assurance/hook-diagnostics.d.ts.map +1 -1
- package/dist/assurance/hook-diagnostics.js +10 -6
- package/dist/assurance/hook-diagnostics.js.map +1 -1
- package/dist/assurance/service.d.ts +8 -1
- package/dist/assurance/service.d.ts.map +1 -1
- package/dist/assurance/service.js +6 -1
- package/dist/assurance/service.js.map +1 -1
- package/dist/assurance/verification-contracts.d.ts +1 -1
- package/dist/assurance/verification.d.ts +1 -1
- package/dist/chatgpt/memory-policy.d.ts +1 -1
- package/dist/chatgpt/memory-policy.d.ts.map +1 -1
- package/dist/chatgpt/memory-policy.js +2 -2
- package/dist/chatgpt/memory-policy.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/codex-hook.d.ts.map +1 -1
- package/dist/commands/codex-hook.js +53 -12
- package/dist/commands/codex-hook.js.map +1 -1
- package/dist/commands/diagnostic-retention.d.ts +3 -0
- package/dist/commands/diagnostic-retention.d.ts.map +1 -0
- package/dist/commands/diagnostic-retention.js +34 -0
- package/dist/commands/diagnostic-retention.js.map +1 -0
- package/dist/context/broker.js +2 -2
- package/dist/context/broker.js.map +1 -1
- package/dist/context/delivery.js +1 -1
- package/dist/context/delivery.js.map +1 -1
- package/dist/context/feedback.d.ts +4 -1
- package/dist/context/feedback.d.ts.map +1 -1
- package/dist/context/feedback.js +8 -6
- package/dist/context/feedback.js.map +1 -1
- package/dist/context/ranking.d.ts +1 -1
- package/dist/context/ranking.d.ts.map +1 -1
- package/dist/context/ranking.js +1 -0
- package/dist/context/ranking.js.map +1 -1
- package/dist/context/scoped-broker.d.ts +1 -1
- package/dist/context/scoped-broker.d.ts.map +1 -1
- package/dist/context/scoped-broker.js +29 -12
- package/dist/context/scoped-broker.js.map +1 -1
- package/dist/context/scoped-memory-use.d.ts.map +1 -1
- package/dist/context/scoped-memory-use.js +1 -2
- package/dist/context/scoped-memory-use.js.map +1 -1
- package/dist/context/selection-state.d.ts.map +1 -1
- package/dist/context/selection-state.js +3 -3
- package/dist/context/selection-state.js.map +1 -1
- package/dist/ledger/checkpoint-contract.d.ts +6 -6
- package/dist/ledger/diagnostic-retention.d.ts +49 -0
- package/dist/ledger/diagnostic-retention.d.ts.map +1 -0
- package/dist/ledger/diagnostic-retention.js +106 -0
- package/dist/ledger/diagnostic-retention.js.map +1 -0
- package/dist/ledger/maintenance.d.ts.map +1 -1
- package/dist/ledger/maintenance.js +4 -3
- package/dist/ledger/maintenance.js.map +1 -1
- package/dist/ledger/store.d.ts.map +1 -1
- package/dist/ledger/store.js +3 -0
- package/dist/ledger/store.js.map +1 -1
- package/dist/mcp/cancellation-journal.d.ts +44 -0
- package/dist/mcp/cancellation-journal.d.ts.map +1 -0
- package/dist/mcp/cancellation-journal.js +58 -0
- package/dist/mcp/cancellation-journal.js.map +1 -0
- package/dist/mcp/chatgpt-contract.d.ts +13 -3
- package/dist/mcp/chatgpt-contract.d.ts.map +1 -1
- package/dist/mcp/chatgpt-contract.js +3 -1
- package/dist/mcp/chatgpt-contract.js.map +1 -1
- package/dist/mcp/chatgpt-runtime.d.ts +23 -1
- package/dist/mcp/chatgpt-runtime.d.ts.map +1 -1
- package/dist/mcp/chatgpt-runtime.js +39 -1
- package/dist/mcp/chatgpt-runtime.js.map +1 -1
- package/dist/mcp/chatgpt-server.d.ts +1 -1
- package/dist/mcp/chatgpt-server.d.ts.map +1 -1
- package/dist/mcp/chatgpt-server.js +32 -13
- package/dist/mcp/chatgpt-server.js.map +1 -1
- package/dist/mcp/request-deadline.d.ts +7 -1
- package/dist/mcp/request-deadline.d.ts.map +1 -1
- package/dist/mcp/request-deadline.js +12 -3
- package/dist/mcp/request-deadline.js.map +1 -1
- package/dist/mcp/runtime-owner.d.ts.map +1 -1
- package/dist/mcp/runtime-owner.js +4 -1
- package/dist/mcp/runtime-owner.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +50 -15
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory/checkpoint-contract.d.ts +9 -9
- package/dist/memory/federated-retrieval.d.ts.map +1 -1
- package/dist/memory/federated-retrieval.js +19 -3
- package/dist/memory/federated-retrieval.js.map +1 -1
- package/dist/memory/global-conversation-query.d.ts +1 -1
- package/dist/memory/global-conversation-query.d.ts.map +1 -1
- package/dist/memory/global-conversation-query.js +14 -3
- package/dist/memory/global-conversation-query.js.map +1 -1
- package/dist/memory/interaction-contract.d.ts +1 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +3 -0
- package/dist/server/http.js.map +1 -1
- package/dist/setup/standard-skills.d.ts +2 -2
- package/dist/setup/standard-skills.d.ts.map +1 -1
- package/dist/setup/standard-skills.js +5 -1
- package/dist/setup/standard-skills.js.map +1 -1
- package/docs/chatgpt.md +15 -0
- package/docs/diagnostic-retention.md +21 -0
- package/docs/memory-assurance.md +77 -8
- package/migrations/012_diagnostic_retention.sql +44 -0
- package/package.json +1 -1
- package/skills/coding-ideal-routine-skill/SKILL.md +33 -37
- package/skills/coding-ideal-routine-skill/references/repo-contracts.md +54 -0
- package/skills/coding-ideal-routine-skill/references/verification-scenarios.md +32 -0
- package/skills/kiokuko-soul/SKILL.md +7 -0
- package/templates/AGENTS.md +2 -2
- 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
|
-
|
|
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
|
-
|
|
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":"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"}
|
|
@@ -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-
|
|
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":"
|
|
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-
|
|
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
|
-
|
|
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 =
|
|
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
|
|
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
|
|
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,
|
|
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 (
|
|
390
|
-
|
|
391
|
-
|
|
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,
|
|
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
|
-
|
|
397
|
-
|
|
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 =
|
|
477
|
+
const input = parseCodexHookInput(raw);
|
|
404
478
|
const response = record(input.tool_response);
|
|
405
479
|
const args = record(input.tool_input);
|
|
406
|
-
const
|
|
407
|
-
|
|
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',
|
|
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');
|