kiokuko 1.0.7 → 1.0.8
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/README.ja.md +1 -0
- 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 +13 -59
- package/dist/akinator/agent-task.js.map +1 -1
- package/dist/akinator/capabilities.d.ts +4 -3
- package/dist/akinator/capabilities.d.ts.map +1 -1
- package/dist/akinator/capabilities.js +51 -52
- package/dist/akinator/capabilities.js.map +1 -1
- package/dist/akinator/capability-binding.d.ts +1 -1
- package/dist/akinator/capability-binding.js +1 -1
- package/dist/akinator/memory-probe-types.d.ts +1 -1
- package/dist/assurance/codex-hooks.d.ts +7 -0
- package/dist/assurance/codex-hooks.d.ts.map +1 -0
- package/dist/assurance/codex-hooks.js +217 -0
- package/dist/assurance/codex-hooks.js.map +1 -0
- package/dist/assurance/contracts.d.ts +54 -0
- package/dist/assurance/contracts.d.ts.map +1 -0
- package/dist/assurance/contracts.js +37 -0
- package/dist/assurance/contracts.js.map +1 -0
- package/dist/assurance/doctor.d.ts +7 -0
- package/dist/assurance/doctor.d.ts.map +1 -0
- package/dist/assurance/doctor.js +39 -0
- package/dist/assurance/doctor.js.map +1 -0
- package/dist/assurance/inspect.d.ts +16 -0
- package/dist/assurance/inspect.d.ts.map +1 -0
- package/dist/assurance/inspect.js +29 -0
- package/dist/assurance/inspect.js.map +1 -0
- package/dist/assurance/instructions.d.ts +2 -0
- package/dist/assurance/instructions.d.ts.map +1 -0
- package/dist/assurance/instructions.js +2 -0
- package/dist/assurance/instructions.js.map +1 -0
- package/dist/assurance/refresh.d.ts +3 -0
- package/dist/assurance/refresh.d.ts.map +1 -0
- package/dist/assurance/refresh.js +73 -0
- package/dist/assurance/refresh.js.map +1 -0
- package/dist/assurance/service.d.ts +54 -0
- package/dist/assurance/service.d.ts.map +1 -0
- package/dist/assurance/service.js +183 -0
- package/dist/assurance/service.js.map +1 -0
- package/dist/assurance/snapshot.d.ts +3 -0
- package/dist/assurance/snapshot.d.ts.map +1 -0
- package/dist/assurance/snapshot.js +44 -0
- package/dist/assurance/snapshot.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/codex-hook.d.ts +4 -0
- package/dist/commands/codex-hook.d.ts.map +1 -0
- package/dist/commands/codex-hook.js +36 -0
- package/dist/commands/codex-hook.js.map +1 -0
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +3 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/setup.d.ts +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +2 -0
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +2 -1
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/context/delivery.d.ts.map +1 -1
- package/dist/context/delivery.js +5 -2
- package/dist/context/delivery.js.map +1 -1
- package/dist/context/scoped-broker.d.ts +3 -2
- package/dist/context/scoped-broker.d.ts.map +1 -1
- package/dist/context/scoped-broker.js +11 -4
- package/dist/context/scoped-broker.js.map +1 -1
- package/dist/context/scoped-memory-use.d.ts +5 -0
- package/dist/context/scoped-memory-use.d.ts.map +1 -0
- package/dist/context/scoped-memory-use.js +60 -0
- package/dist/context/scoped-memory-use.js.map +1 -0
- package/dist/gateway/agent-service.d.ts.map +1 -1
- package/dist/gateway/agent-service.js +2 -0
- package/dist/gateway/agent-service.js.map +1 -1
- package/dist/mcp/request-deadline.d.ts +1 -1
- package/dist/mcp/request-deadline.d.ts.map +1 -1
- package/dist/mcp/request-deadline.js +3 -0
- package/dist/mcp/request-deadline.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +35 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory/checkpoint-contract.d.ts +6 -6
- package/dist/memory/federated-retrieval.d.ts +6 -0
- package/dist/memory/federated-retrieval.d.ts.map +1 -1
- package/dist/memory/federated-retrieval.js +19 -7
- package/dist/memory/federated-retrieval.js.map +1 -1
- package/dist/memory/interaction-contract.d.ts +24 -24
- package/dist/memory/scoped-memory.d.ts.map +1 -1
- package/dist/memory/scoped-memory.js +3 -0
- package/dist/memory/scoped-memory.js.map +1 -1
- package/dist/server/agent-application.d.ts.map +1 -1
- package/dist/server/agent-application.js +4 -1
- package/dist/server/agent-application.js.map +1 -1
- package/dist/server/routes/agent-capability-gate.d.ts.map +1 -1
- package/dist/server/routes/agent-capability-gate.js +5 -0
- package/dist/server/routes/agent-capability-gate.js.map +1 -1
- package/dist/server/routes/task-assurance.d.ts +5 -0
- package/dist/server/routes/task-assurance.d.ts.map +1 -0
- package/dist/server/routes/task-assurance.js +43 -0
- package/dist/server/routes/task-assurance.js.map +1 -0
- package/dist/setup/codex-hooks.d.ts +5 -0
- package/dist/setup/codex-hooks.d.ts.map +1 -0
- package/dist/setup/codex-hooks.js +69 -0
- package/dist/setup/codex-hooks.js.map +1 -0
- package/dist/setup/render.d.ts.map +1 -1
- package/dist/setup/render.js +3 -1
- package/dist/setup/render.js.map +1 -1
- package/docs/memory-assurance.md +127 -0
- package/migrations/004_memory_assurance.sql +74 -0
- package/package.json +4 -3
- package/skills/memory-reasoning/SKILL.md +24 -3
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { realpathSync } from 'node:fs';
|
|
4
|
+
import { execFileSync } from 'node:child_process';
|
|
5
|
+
import { withImmediateTransaction } from '../db/transaction.js';
|
|
6
|
+
import { canonicalContentHash } from '../serialization/validate.js';
|
|
7
|
+
import { LedgerStore } from '../ledger/store.js';
|
|
8
|
+
import { KiokukoError } from '../errors.js';
|
|
9
|
+
import { assuranceState, taskAssuranceReport, recordTaskEvidence } from './service.js';
|
|
10
|
+
import { repositoryStateDigest } from './snapshot.js';
|
|
11
|
+
import { parseAssurance } from './contracts.js';
|
|
12
|
+
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.';
|
|
13
|
+
const bounded = z.string().min(1).max(500);
|
|
14
|
+
const hookSchema = z.object({
|
|
15
|
+
hook_event_name: z.enum(['UserPromptSubmit', 'PreToolUse', 'PostToolUse', 'Stop', 'Interrupt', 'SubagentStart', 'SubagentStop']),
|
|
16
|
+
session_id: bounded, turn_id: bounded, cwd: bounded, agent_id: bounded.optional(),
|
|
17
|
+
tool_name: bounded.optional(), tool_use_id: bounded.optional(), tool_input: z.unknown().optional(), tool_response: z.unknown().optional(),
|
|
18
|
+
stop_hook_active: z.boolean().optional(),
|
|
19
|
+
}).passthrough();
|
|
20
|
+
function record(value) {
|
|
21
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value) ? value : {};
|
|
22
|
+
}
|
|
23
|
+
function responseData(value) {
|
|
24
|
+
const outer = record(value);
|
|
25
|
+
if (outer.isError === true)
|
|
26
|
+
return {};
|
|
27
|
+
if (outer.structuredContent)
|
|
28
|
+
return record(outer.structuredContent);
|
|
29
|
+
if (Array.isArray(outer.content)) {
|
|
30
|
+
for (const block of outer.content) {
|
|
31
|
+
const item = record(block);
|
|
32
|
+
if (item.type === 'text' && typeof item.text === 'string') {
|
|
33
|
+
try {
|
|
34
|
+
return record(JSON.parse(item.text));
|
|
35
|
+
}
|
|
36
|
+
catch { /* Non-JSON output is not a task binding. */ }
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return outer;
|
|
41
|
+
}
|
|
42
|
+
/** stdout strings are never completion metadata, even when they contain JSON or exit headers. */
|
|
43
|
+
export function observedExitCode(value) {
|
|
44
|
+
const response = record(value);
|
|
45
|
+
return typeof response.exit_code === 'number' && Number.isSafeInteger(response.exit_code) ? response.exit_code : null;
|
|
46
|
+
}
|
|
47
|
+
function deny(reason) {
|
|
48
|
+
return { hookSpecificOutput: { hookEventName: 'PreToolUse', permissionDecision: 'deny', permissionDecisionReason: reason } };
|
|
49
|
+
}
|
|
50
|
+
function context(event, text) {
|
|
51
|
+
return { hookSpecificOutput: { hookEventName: event, additionalContext: text } };
|
|
52
|
+
}
|
|
53
|
+
const preparationTools = new Set(['task_inspect', 'task_prepare', 'task_answer', 'task_memory_review', 'task_memory_status', 'task_memory_refresh', 'task_execution_evidence', 'memory_checkpoint', 'memory_capture', 'memory_recall', 'curator_check']);
|
|
54
|
+
function kiokukoTool(name) {
|
|
55
|
+
const match = /^mcp__kiokuko__(\w+)$/.exec(name);
|
|
56
|
+
return match && preparationTools.has(match[1]) ? match[1] : null;
|
|
57
|
+
}
|
|
58
|
+
/** stdin must come from the installed client hook. Session IDs supplied to model-facing APIs grant no authority. */
|
|
59
|
+
function handleCodexHookEvent(db, raw) {
|
|
60
|
+
const input = parseAssurance(hookSchema, raw);
|
|
61
|
+
const root = realpathSync(execFileSync('git', ['-C', realpathSync(input.cwd), 'rev-parse', '--show-toplevel'], { encoding: 'utf8', timeout: 5000 }).trim());
|
|
62
|
+
const identity = canonicalContentHash({ session: input.session_id, turn: input.turn_id, agent: input.agent_id ?? 'main', root });
|
|
63
|
+
const requestId = `codex-${identity}`;
|
|
64
|
+
const now = new Date().toISOString();
|
|
65
|
+
let request = db.prepare('SELECT * FROM codex_hook_requests WHERE identity_digest = ?').get(identity);
|
|
66
|
+
if (input.hook_event_name === 'UserPromptSubmit' || input.hook_event_name === 'SubagentStart') {
|
|
67
|
+
withImmediateTransaction(db, () => {
|
|
68
|
+
db.prepare("INSERT INTO codex_hook_requests VALUES (?, ?, NULL, ?, 'pending', 0, ?, ?) ON CONFLICT(identity_digest) DO UPDATE SET last_event=excluded.last_event, updated_at=excluded.updated_at")
|
|
69
|
+
.run(identity, root, requestId, input.hook_event_name, now);
|
|
70
|
+
});
|
|
71
|
+
return context(input.hook_event_name, `Kiokuko request ${requestId}. Before project work, read kiokuko-soul using task_inspect and call task_prepare with this requestId. Use task_inspect for bounded preparation reads. Ordinary conversation needs no project run. ${CODEX_HOOK_LIMITATION}`);
|
|
72
|
+
}
|
|
73
|
+
if (!request) {
|
|
74
|
+
if (input.hook_event_name === 'Interrupt' || input.hook_event_name === 'SubagentStop')
|
|
75
|
+
return {};
|
|
76
|
+
if (input.hook_event_name === 'PreToolUse')
|
|
77
|
+
return deny('Kiokuko has not observed this request start. Parent-agent preparation is not inherited.');
|
|
78
|
+
throw new KiokukoError('CONFLICT', 'Hook request start was not observed');
|
|
79
|
+
}
|
|
80
|
+
db.prepare('UPDATE codex_hook_requests SET last_event = ?, updated_at = ? WHERE identity_digest = ?').run(input.hook_event_name, now, identity);
|
|
81
|
+
if (input.hook_event_name === 'Interrupt') {
|
|
82
|
+
withImmediateTransaction(db, () => {
|
|
83
|
+
db.prepare("UPDATE codex_hook_requests SET state = 'cancelled' WHERE identity_digest = ?").run(identity);
|
|
84
|
+
if (request.run_id) {
|
|
85
|
+
const store = new LedgerStore(db);
|
|
86
|
+
const run = store.readRun(request.run_id);
|
|
87
|
+
if (run && (run.status === 'active' || run.status === 'intake'))
|
|
88
|
+
store.updateRunStatusInTransaction(run.runId, 'interrupted', now);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
return {}; // Never request continuation after cancellation.
|
|
92
|
+
}
|
|
93
|
+
if (request.state === 'cancelled')
|
|
94
|
+
return input.hook_event_name === 'PreToolUse' ? deny('Request was interrupted') : {};
|
|
95
|
+
if (input.hook_event_name === 'Stop' || input.hook_event_name === 'SubagentStop') {
|
|
96
|
+
if (!request.run_id)
|
|
97
|
+
return {}; // Ordinary conversation never required a run.
|
|
98
|
+
const run = new LedgerStore(db).readRun(request.run_id);
|
|
99
|
+
// Terminal completion was already gated transactionally by the domain service.
|
|
100
|
+
if (run && ['completed', 'failed', 'cancelled', 'interrupted'].includes(run.status))
|
|
101
|
+
return {};
|
|
102
|
+
if (request.state !== 'bound')
|
|
103
|
+
return { continue: false, stopReason: 'Kiokuko preparation or capability gate is incomplete' };
|
|
104
|
+
const report = taskAssuranceReport(db, request.run_id);
|
|
105
|
+
if (!report.complete)
|
|
106
|
+
return { continue: false, stopReason: 'Memory application or regression evidence is incomplete', systemMessage: JSON.stringify(report) };
|
|
107
|
+
return {};
|
|
108
|
+
}
|
|
109
|
+
if (!input.tool_name || !input.tool_use_id)
|
|
110
|
+
throw new KiokukoError('VALIDATION_ERROR', 'Hook tool identity is missing');
|
|
111
|
+
const operation = kiokukoTool(input.tool_name);
|
|
112
|
+
const args = record(input.tool_input);
|
|
113
|
+
if (input.hook_event_name === 'PreToolUse') {
|
|
114
|
+
if (['spawn_agent', 'Agent'].includes(input.tool_name))
|
|
115
|
+
return deny('Delegation requires a client adapter that supplies distinct agent identity on every child tool event.');
|
|
116
|
+
if (operation === 'task_prepare') {
|
|
117
|
+
// Validate rather than rewrite: MCP updatedInput can trigger client approval.
|
|
118
|
+
// The model must supply its own read attestation and request binding.
|
|
119
|
+
if (args.requestId !== requestId || typeof args.cwd !== 'string' || realpathSync(args.cwd) !== root)
|
|
120
|
+
return deny(`Use requestId ${requestId} and cwd ${root} for this request.`);
|
|
121
|
+
return {};
|
|
122
|
+
}
|
|
123
|
+
if (operation) {
|
|
124
|
+
if (args.runId !== undefined && args.runId !== request.run_id)
|
|
125
|
+
return deny('Tool run is not bound to this client request');
|
|
126
|
+
return {};
|
|
127
|
+
}
|
|
128
|
+
if (!request.run_id)
|
|
129
|
+
return deny('Read kiokuko-soul and complete task_prepare first; task_inspect is available for preparation.');
|
|
130
|
+
if (request.state !== 'bound')
|
|
131
|
+
return deny('Kiokuko preparation has not permitted progress; resolve the current intake or required capability gate.');
|
|
132
|
+
const run = new LedgerStore(db).readRun(request.run_id);
|
|
133
|
+
if (!run || run.status !== 'active')
|
|
134
|
+
return deny('Kiokuko intake is unfinished or the run is terminal');
|
|
135
|
+
const report = taskAssuranceReport(db, request.run_id, false);
|
|
136
|
+
if (report.pending.length || report.stale.length)
|
|
137
|
+
return deny('Resolve current memory application decisions before editing or executing.');
|
|
138
|
+
const state = assuranceState(db, request.run_id);
|
|
139
|
+
const inputDigest = canonicalContentHash(input.tool_input ?? null);
|
|
140
|
+
const prior = db.prepare('SELECT input_digest FROM codex_hook_tools WHERE identity_digest = ? AND call_id = ?').get(identity, input.tool_use_id);
|
|
141
|
+
if (prior && prior.input_digest !== inputDigest)
|
|
142
|
+
return deny('Tool call identity was reused with different input');
|
|
143
|
+
db.prepare('INSERT OR IGNORE INTO codex_hook_tools(identity_digest, call_id, run_id, delivery_id, input_digest, state_digest, evidence_id) VALUES (?, ?, ?, ?, ?, ?, NULL)')
|
|
144
|
+
.run(identity, input.tool_use_id, request.run_id, state.delivery_id, inputDigest, repositoryStateDigest(root));
|
|
145
|
+
return {};
|
|
146
|
+
}
|
|
147
|
+
if (operation === 'task_prepare' || operation === 'task_answer') {
|
|
148
|
+
const result = responseData(input.tool_response);
|
|
149
|
+
const runId = record(result.run).runId;
|
|
150
|
+
if (typeof runId !== 'string')
|
|
151
|
+
return context('PostToolUse', 'Preparation failed; no client binding was created.');
|
|
152
|
+
const state = assuranceState(db, runId);
|
|
153
|
+
if (!state || state.repository_root !== root || (operation === 'task_prepare' && args.requestId !== requestId)
|
|
154
|
+
|| (operation === 'task_answer' && runId !== request.run_id))
|
|
155
|
+
throw new KiokukoError('CONFLICT', 'Preparation response does not match the observed client request');
|
|
156
|
+
if (request.run_id && request.run_id !== runId)
|
|
157
|
+
throw new KiokukoError('CONFLICT', 'Client request already binds another run');
|
|
158
|
+
db.prepare('UPDATE codex_hook_requests SET run_id = ?, state = ? WHERE identity_digest = ?').run(runId, result.nextAction === 'proceed' ? 'bound' : 'pending', identity);
|
|
159
|
+
return {};
|
|
160
|
+
}
|
|
161
|
+
if (operation || !request.run_id)
|
|
162
|
+
return {};
|
|
163
|
+
const call = db.prepare('SELECT * FROM codex_hook_tools WHERE identity_digest = ? AND call_id = ?').get(identity, input.tool_use_id);
|
|
164
|
+
if (!call || call.run_id !== request.run_id || call.input_digest !== canonicalContentHash(input.tool_input ?? null))
|
|
165
|
+
throw new KiokukoError('CONFLICT', 'Tool completion has no matching start');
|
|
166
|
+
if (call.evidence_id)
|
|
167
|
+
return context('PostToolUse', `Execution evidence: ${call.evidence_id}`);
|
|
168
|
+
const digest = repositoryStateDigest(root);
|
|
169
|
+
const state = assuranceState(db, request.run_id);
|
|
170
|
+
if (digest !== call.state_digest) {
|
|
171
|
+
if (!call.post_state_digest)
|
|
172
|
+
withImmediateTransaction(db, () => {
|
|
173
|
+
db.prepare('UPDATE task_assurance SET observed_changes=1, revision=revision+1 WHERE run_id=?').run(request.run_id);
|
|
174
|
+
db.prepare('UPDATE codex_hook_tools SET post_state_digest=? WHERE identity_digest=? AND call_id=?').run(digest, identity, input.tool_use_id);
|
|
175
|
+
});
|
|
176
|
+
return context('PostToolUse', 'Repository state changed; earlier verification is stale. Implementation evidence is now required for adopted code memories.');
|
|
177
|
+
}
|
|
178
|
+
if (call.delivery_id !== state.delivery_id)
|
|
179
|
+
return context('PostToolUse', 'Delivery changed during execution; completion cannot verify the new delivery.');
|
|
180
|
+
if (!['Bash', 'exec_command'].includes(input.tool_name))
|
|
181
|
+
return {};
|
|
182
|
+
const response = responseData(input.tool_response);
|
|
183
|
+
// Unknown or unfinished client result shapes must never become passing evidence.
|
|
184
|
+
const exitCode = observedExitCode(input.tool_response);
|
|
185
|
+
if (response.session_id !== undefined && exitCode === null)
|
|
186
|
+
return context('PostToolUse', 'Process still running; verification remains pending.');
|
|
187
|
+
const evidence = recordTaskEvidence(db, { runId: request.run_id, requestId: `hook-${input.tool_use_id}`, expectedRevision: state.revision,
|
|
188
|
+
cwd: root, deliveryId: state.delivery_id, execution: JSON.stringify(input.tool_input).slice(0, 4000), stateDigest: digest,
|
|
189
|
+
outcome: exitCode === null ? 'unknown' : exitCode === 0 ? 'passed' : 'failed', exitCode }, 'client_observed', { executionDigest: canonicalContentHash(input.tool_input ?? null), onRecorded: evidenceId => {
|
|
190
|
+
db.prepare('UPDATE codex_hook_tools SET evidence_id = ? WHERE identity_digest = ? AND call_id = ?').run(evidenceId, identity, input.tool_use_id);
|
|
191
|
+
} });
|
|
192
|
+
return context('PostToolUse', `Execution evidence: ${evidence.evidenceId}; outcome: ${evidence.outcome}. Link it with task_memory_review.`);
|
|
193
|
+
}
|
|
194
|
+
/** Record protocol shape and decision only, never arguments or tool output. */
|
|
195
|
+
export function handleCodexHook(db, raw) {
|
|
196
|
+
const input = parseAssurance(hookSchema, raw);
|
|
197
|
+
const response = record(input.tool_response);
|
|
198
|
+
const args = record(input.tool_input);
|
|
199
|
+
const shape = JSON.stringify({ hasArguments: !!args.arguments, hasParameters: !!args.parameters, hasRequestId: !!args.requestId, hasSoulRead: !!args.soulRead, type: typeof input.tool_response, structured: !!response.structuredContent,
|
|
200
|
+
content: Array.isArray(response.content), exitCode: typeof response.exit_code, status: typeof response.status });
|
|
201
|
+
const save = (decision) => withImmediateTransaction(db, () => {
|
|
202
|
+
db.prepare('INSERT INTO codex_hook_observations VALUES (?, ?, ?, ?, ?, ?)')
|
|
203
|
+
.run(randomUUID(), input.hook_event_name, input.tool_name ?? null, shape, decision, new Date().toISOString());
|
|
204
|
+
db.prepare('DELETE FROM codex_hook_observations WHERE rowid NOT IN (SELECT rowid FROM codex_hook_observations ORDER BY rowid DESC LIMIT 1000)').run();
|
|
205
|
+
});
|
|
206
|
+
try {
|
|
207
|
+
const result = handleCodexHookEvent(db, input);
|
|
208
|
+
const specific = record(record(result).hookSpecificOutput);
|
|
209
|
+
save(specific.permissionDecision === 'deny' ? 'denied' : 'handled');
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
save(error instanceof KiokukoError ? error.code : 'adapter_error');
|
|
214
|
+
throw error;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=codex-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-hooks.js","sourceRoot":"","sources":["../../src/assurance/codex-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,CAAC,MAAM,qBAAqB,GAAG,sMAAsM,CAAC;AAC5O,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;IAChI,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;IACjF,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACzI,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,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,YAAY,CAAC,KAAc;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,iBAAiB;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1D,IAAI,CAAC;oBAAC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,4CAA4C,CAAC,CAAC;YACtG,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AACD,iGAAiG;AACjG,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACxH,CAAC;AACD,SAAS,IAAI,CAAC,MAAc;IAC1B,OAAO,EAAE,kBAAkB,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAE,CAAC;AAC/H,CAAC;AACD,SAAS,OAAO,CAAC,KAAa,EAAE,IAAY;IAC1C,OAAO,EAAE,kBAAkB,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC;AACnF,CAAC;AACD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;AACzP,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,KAAK,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrE,CAAC;AACD,oHAAoH;AACpH,SAAS,oBAAoB,CAAC,EAAkB,EAAE,GAAY;IAC5D,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5J,MAAM,QAAQ,GAAG,oBAAoB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACjI,MAAM,SAAS,GAAG,SAAS,QAAQ,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC,GAAG,CAAc,QAAQ,CAAC,CAAC;IACnH,IAAI,KAAK,CAAC,eAAe,KAAK,kBAAkB,IAAI,KAAK,CAAC,eAAe,KAAK,eAAe,EAAE,CAAC;QAC9F,wBAAwB,CAAC,EAAE,EAAE,GAAG,EAAE;YAChC,EAAE,CAAC,OAAO,CAAC,sLAAsL,CAAC;iBAC/L,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,mBAAmB,SAAS,sMAAsM,qBAAqB,EAAE,CAAC,CAAC;IACnS,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,KAAK,CAAC,eAAe,KAAK,WAAW,IAAI,KAAK,CAAC,eAAe,KAAK,cAAc;YAAE,OAAO,EAAE,CAAC;QACjG,IAAI,KAAK,CAAC,eAAe,KAAK,YAAY;YAAE,OAAO,IAAI,CAAC,yFAAyF,CAAC,CAAC;QACnJ,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,qCAAqC,CAAC,CAAC;IAC5E,CAAC;IACD,EAAE,CAAC,OAAO,CAAC,yFAAyF,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAChJ,IAAI,KAAK,CAAC,eAAe,KAAK,WAAW,EAAE,CAAC;QAC1C,wBAAwB,CAAC,EAAE,EAAE,GAAG,EAAE;YAChC,EAAE,CAAC,OAAO,CAAC,8EAA8E,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzG,IAAI,OAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;gBAClC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC;oBAAE,KAAK,CAAC,4BAA4B,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;YACrI,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC,CAAC,iDAAiD;IAC9D,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC,eAAe,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxH,IAAI,KAAK,CAAC,eAAe,KAAK,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,cAAc,EAAE,CAAC;QACjF,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC,CAAC,8CAA8C;QAC9E,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxD,+EAA+E;QAC/E,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QAC/F,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO;YAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,sDAAsD,EAAE,CAAC;QAC9H,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,yDAAyD,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/J,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,WAAW;QAAE,MAAM,IAAI,YAAY,CAAC,kBAAkB,EAAE,+BAA+B,CAAC,CAAC;IACxH,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,eAAe,KAAK,YAAY,EAAE,CAAC;QAC3C,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC,uGAAuG,CAAC,CAAC;QAC7K,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;YACjC,8EAA8E;YAC9E,sEAAsE;YACtE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC,iBAAiB,SAAS,YAAY,IAAI,oBAAoB,CAAC,CAAC;YACjL,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAC3H,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,+FAA+F,CAAC,CAAC;QAClI,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC,yGAAyG,CAAC,CAAC;QACtJ,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACxG,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,2EAA2E,CAAC,CAAC;QAC3I,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAE,CAAC;QAClD,MAAM,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,qFAAqF,CAAC,CAAC,GAAG,CAA2B,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3K,IAAI,KAAK,IAAI,KAAK,CAAC,YAAY,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACnH,EAAE,CAAC,OAAO,CAAC,gKAAgK,CAAC;aACzK,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QACjH,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,SAAS,KAAK,cAAc,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;QAChE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC,aAAa,EAAE,oDAAoD,CAAC,CAAC;QACnH,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,cAAc,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;eACzG,CAAC,SAAS,KAAK,aAAa,IAAI,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,iEAAiE,CAAC,CAAC;QACtK,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK;YAAE,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,0CAA0C,CAAC,CAAC;QAC/H,EAAE,CAAC,OAAO,CAAC,gFAAgF,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzK,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,0EAA0E,CAAC,CAAC,GAAG,CAAY,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAChJ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,KAAK,oBAAoB,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,uCAAuC,CAAC,CAAC;IACjM,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,OAAO,CAAC,aAAa,EAAE,uBAAuB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/F,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAE,CAAC;IAClD,IAAI,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,wBAAwB,CAAC,EAAE,EAAE,GAAG,EAAE;gBAC7D,EAAE,CAAC,OAAO,CAAC,kFAAkF,CAAC,CAAC,GAAG,CAAC,OAAQ,CAAC,MAAM,CAAC,CAAC;gBACpH,EAAE,CAAC,OAAO,CAAC,uFAAuF,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAY,CAAC,CAAC;YAChJ,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,aAAa,EAAE,6HAA6H,CAAC,CAAC;IAC/J,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;QAAE,OAAO,OAAO,CAAC,aAAa,EAAE,+EAA+E,CAAC,CAAC;IAC3J,IAAI,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IACnE,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACnD,iFAAiF;IACjF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACvD,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC,aAAa,EAAE,sDAAsD,CAAC,CAAC;IAClJ,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,KAAK,CAAC,WAAW,EAAE,EAAE,gBAAgB,EAAE,KAAK,CAAC,QAAQ;QACvI,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM;QACzH,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,EAAE,eAAe,EAAE,oBAAoB,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;YAC1M,EAAE,CAAC,OAAO,CAAC,uFAAuF,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAY,CAAC,CAAC;QACpJ,CAAC,EAAE,CAAC,CAAC;IACL,OAAO,OAAO,CAAC,aAAa,EAAE,uBAAuB,QAAQ,CAAC,UAAU,cAAc,QAAQ,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAC9I,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,EAAkB,EAAE,GAAY;IAC9D,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,iBAAiB;QACvO,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnH,MAAM,IAAI,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,wBAAwB,CAAC,EAAE,EAAE,GAAG,EAAE;QACnE,EAAE,CAAC,OAAO,CAAC,+DAA+D,CAAC;aACxE,GAAG,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAChH,EAAE,CAAC,OAAO,CAAC,mIAAmI,CAAC,CAAC,GAAG,EAAE,CAAC;IACxJ,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,kBAAkB,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACpE,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACnE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
export declare const assuranceBase: {
|
|
3
|
+
runId: z.ZodString;
|
|
4
|
+
requestId: z.ZodString;
|
|
5
|
+
expectedRevision: z.ZodNumber;
|
|
6
|
+
cwd: z.ZodString;
|
|
7
|
+
};
|
|
8
|
+
export declare const memoryReviewSchema: z.ZodObject<{
|
|
9
|
+
deliveryId: z.ZodString;
|
|
10
|
+
entryId: z.ZodString;
|
|
11
|
+
entryRevision: z.ZodNumber;
|
|
12
|
+
decision: z.ZodEnum<{
|
|
13
|
+
adopted: "adopted";
|
|
14
|
+
inapplicable: "inapplicable";
|
|
15
|
+
contradicted: "contradicted";
|
|
16
|
+
}>;
|
|
17
|
+
basis: z.ZodString;
|
|
18
|
+
invariant: z.ZodOptional<z.ZodString>;
|
|
19
|
+
counterexample: z.ZodOptional<z.ZodString>;
|
|
20
|
+
verification: z.ZodOptional<z.ZodString>;
|
|
21
|
+
evidenceIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
22
|
+
runId: z.ZodString;
|
|
23
|
+
requestId: z.ZodString;
|
|
24
|
+
expectedRevision: z.ZodNumber;
|
|
25
|
+
cwd: z.ZodString;
|
|
26
|
+
}, z.core.$strict>;
|
|
27
|
+
export declare const executionEvidenceSchema: z.ZodObject<{
|
|
28
|
+
deliveryId: z.ZodNullable<z.ZodString>;
|
|
29
|
+
execution: z.ZodString;
|
|
30
|
+
stateDigest: z.ZodString;
|
|
31
|
+
outcome: z.ZodEnum<{
|
|
32
|
+
failed: "failed";
|
|
33
|
+
unknown: "unknown";
|
|
34
|
+
passed: "passed";
|
|
35
|
+
skipped: "skipped";
|
|
36
|
+
}>;
|
|
37
|
+
exitCode: z.ZodNullable<z.ZodNumber>;
|
|
38
|
+
runId: z.ZodString;
|
|
39
|
+
requestId: z.ZodString;
|
|
40
|
+
expectedRevision: z.ZodNumber;
|
|
41
|
+
cwd: z.ZodString;
|
|
42
|
+
}, z.core.$strict>;
|
|
43
|
+
export declare const memoryRefreshSchema: z.ZodObject<{
|
|
44
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
45
|
+
changedPaths: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
46
|
+
errorSignatures: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
47
|
+
maxContextChars: z.ZodOptional<z.ZodNumber>;
|
|
48
|
+
runId: z.ZodString;
|
|
49
|
+
requestId: z.ZodString;
|
|
50
|
+
expectedRevision: z.ZodNumber;
|
|
51
|
+
cwd: z.ZodString;
|
|
52
|
+
}, z.core.$strict>;
|
|
53
|
+
export declare function parseAssurance<T>(schema: z.ZodType<T>, raw: unknown): T;
|
|
54
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/assurance/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAI5B,eAAO,MAAM,aAAa;;;;;CAEzB,CAAC;AACF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;kBAS7B,CAAC;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;kBAI2E,CAAC;AAChH,eAAO,MAAM,mBAAmB;;;;;;;;;kBAKuF,CAAC;AACxH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,CAIvE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
import { KiokukoError } from '../errors.js';
|
|
3
|
+
const id = z.string().min(1).max(256).refine(v => v.trim() === v && !/\p{Cc}/u.test(v));
|
|
4
|
+
const text = z.string().trim().min(1).max(4000);
|
|
5
|
+
export const assuranceBase = {
|
|
6
|
+
runId: id, requestId: id, expectedRevision: z.number().int().min(0), cwd: z.string().min(1).max(4096),
|
|
7
|
+
};
|
|
8
|
+
export const memoryReviewSchema = z.object({
|
|
9
|
+
...assuranceBase, deliveryId: id, entryId: id, entryRevision: z.number().int().min(1),
|
|
10
|
+
decision: z.enum(['adopted', 'inapplicable', 'contradicted']), basis: text,
|
|
11
|
+
invariant: text.optional(), counterexample: text.optional(), verification: text.optional(),
|
|
12
|
+
evidenceIds: z.array(id).max(50).default([]),
|
|
13
|
+
}).strict().superRefine((v, ctx) => {
|
|
14
|
+
if (v.decision === 'adopted')
|
|
15
|
+
for (const key of ['invariant', 'counterexample', 'verification']) {
|
|
16
|
+
if (!v[key])
|
|
17
|
+
ctx.addIssue({ code: 'custom', path: [key], message: 'Adoption requires an invariant, counterexample and verifier' });
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
export const executionEvidenceSchema = z.object({
|
|
21
|
+
...assuranceBase, deliveryId: id.nullable(), execution: text,
|
|
22
|
+
stateDigest: z.string().regex(/^[0-9a-f]{64}$/),
|
|
23
|
+
outcome: z.enum(['passed', 'failed', 'skipped', 'unknown']), exitCode: z.number().int().nullable(),
|
|
24
|
+
}).strict().refine(v => v.outcome !== 'passed' || v.exitCode === 0, 'Passing evidence requires exit code zero');
|
|
25
|
+
export const memoryRefreshSchema = z.object({
|
|
26
|
+
...assuranceBase, capabilities: z.array(z.unknown()).optional(),
|
|
27
|
+
changedPaths: z.array(z.string().min(1).max(500)).max(100).default([]),
|
|
28
|
+
errorSignatures: z.array(z.string().min(1).max(1000)).max(50).default([]),
|
|
29
|
+
maxContextChars: z.number().int().min(1).max(100000).optional(),
|
|
30
|
+
}).strict().refine(v => v.changedPaths.length + v.errorSignatures.length > 0, 'Refresh requires new retrieval signals');
|
|
31
|
+
export function parseAssurance(schema, raw) {
|
|
32
|
+
const result = schema.safeParse(raw);
|
|
33
|
+
if (!result.success)
|
|
34
|
+
throw new KiokukoError('VALIDATION_ERROR', 'Task assurance input is invalid');
|
|
35
|
+
return result.data;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/assurance/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/assurance/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM;;;;EAuBrE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { codexAssuranceConfigured } from '../setup/codex-hooks.js';
|
|
3
|
+
import { taskAssuranceReport } from './service.js';
|
|
4
|
+
export function assuranceDoctor(db, hooksPath) {
|
|
5
|
+
let configured = 'unchecked';
|
|
6
|
+
if (hooksPath) {
|
|
7
|
+
try {
|
|
8
|
+
configured = codexAssuranceConfigured(readFileSync(hooksPath, 'utf8'));
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
if (error.code !== 'ENOENT')
|
|
12
|
+
return { ok: false, count: 1, detail: 'configuration=invalid; runtime=unconfirmed' };
|
|
13
|
+
configured = false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const observed = db.prepare('SELECT COUNT(*) AS count FROM codex_hook_requests').get().count;
|
|
17
|
+
const active = db.prepare("SELECT a.run_id FROM task_assurance a JOIN ledger_runs r ON r.run_id=a.run_id WHERE r.status='active' ORDER BY a.updated_at DESC LIMIT 21")
|
|
18
|
+
.all();
|
|
19
|
+
let pending = 0;
|
|
20
|
+
let stale = 0;
|
|
21
|
+
let verification = 0;
|
|
22
|
+
let errors = 0;
|
|
23
|
+
const retrieval = {};
|
|
24
|
+
for (const row of active.slice(0, 20)) {
|
|
25
|
+
try {
|
|
26
|
+
const report = taskAssuranceReport(db, row.run_id);
|
|
27
|
+
pending += report.pending.length;
|
|
28
|
+
stale += report.stale.length;
|
|
29
|
+
verification += report.missingVerification.length;
|
|
30
|
+
retrieval[report.retrieval] = (retrieval[report.retrieval] ?? 0) + 1;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
errors += 1;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return { ok: errors === 0, count: pending + stale + verification + errors,
|
|
37
|
+
detail: `configuration=${configured}; historicalHookRequests=${observed}; currentClient=unconfirmed; pending=${pending}; stale=${stale}; missingVerification=${verification}; inspectionErrors=${errors}; sampled=${active.length > 20}; retrieval=${JSON.stringify(retrieval)}` };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/assurance/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,MAAM,UAAU,eAAe,CAAC,EAAkB,EAAE,SAAkB;IACpE,IAAI,UAAU,GAA0B,WAAW,CAAC;IACpD,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YAAC,UAAU,GAAG,wBAAwB,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QAAC,CAAC;QAC/E,OAAO,KAAK,EAAE,CAAC;YACb,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,4CAA4C,EAAE,CAAC;YAC7I,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,EAAsB,CAAC,KAAK,CAAC;IACjH,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,2IAA2I,CAAC;SACnK,GAAG,EAAsB,CAAC;IAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;IAAC,IAAI,KAAK,GAAG,CAAC,CAAC;IAAC,IAAI,YAAY,GAAG,CAAC,CAAC;IAAC,IAAI,MAAM,GAAG,CAAC,CAAC;IACrE,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACnD,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAAC,YAAY,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAClH,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,CAAC,CAAC;QAAC,CAAC;IAC1B,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,MAAM,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,YAAY,GAAG,MAAM;QACvE,MAAM,EAAE,iBAAiB,UAAU,4BAA4B,QAAQ,wCAAwC,OAAO,WAAW,KAAK,yBAAyB,YAAY,sBAAsB,MAAM,aAAa,MAAM,CAAC,MAAM,GAAG,EAAE,eAAe,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;AACvR,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
export declare const inspectTaskSchema: z.ZodObject<{
|
|
3
|
+
cwd: z.ZodString;
|
|
4
|
+
operation: z.ZodEnum<{
|
|
5
|
+
status: "status";
|
|
6
|
+
skill: "skill";
|
|
7
|
+
files: "files";
|
|
8
|
+
read: "read";
|
|
9
|
+
}>;
|
|
10
|
+
path: z.ZodOptional<z.ZodString>;
|
|
11
|
+
}, z.core.$strict>;
|
|
12
|
+
/** Preparation-only inspection: fixed operations, no shell parser or executable supplied by the model. */
|
|
13
|
+
export declare function inspectTask(raw: unknown): {
|
|
14
|
+
text: string;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=inspect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/assurance/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAO5B,eAAO,MAAM,iBAAiB;;;;;;;;;kBAGnB,CAAC;AACZ,0GAA0G;AAC1G,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO;;EAavC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
import { readFileSync, realpathSync, statSync } from 'node:fs';
|
|
3
|
+
import { execFileSync } from 'node:child_process';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { KiokukoError } from '../errors.js';
|
|
7
|
+
import { parseAssurance } from './contracts.js';
|
|
8
|
+
export const inspectTaskSchema = z.object({
|
|
9
|
+
cwd: z.string().min(1).max(4096), operation: z.enum(['read', 'files', 'status', 'skill']),
|
|
10
|
+
path: z.string().min(1).max(500).optional(),
|
|
11
|
+
}).strict();
|
|
12
|
+
/** Preparation-only inspection: fixed operations, no shell parser or executable supplied by the model. */
|
|
13
|
+
export function inspectTask(raw) {
|
|
14
|
+
const input = parseAssurance(inspectTaskSchema, raw);
|
|
15
|
+
const root = realpathSync(execFileSync('git', ['-C', realpathSync(input.cwd), 'rev-parse', '--show-toplevel'], { encoding: 'utf8', timeout: 5000 }).trim());
|
|
16
|
+
if (input.operation === 'files' || input.operation === 'status') {
|
|
17
|
+
const args = input.operation === 'files' ? ['ls-files', '--cached', '--others', '--exclude-standard'] : ['status', '--short'];
|
|
18
|
+
return { text: execFileSync('git', ['-C', root, ...args], { encoding: 'utf8', timeout: 5000, maxBuffer: 512000 }) };
|
|
19
|
+
}
|
|
20
|
+
const base = input.operation === 'skill' ? path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../skills') : root;
|
|
21
|
+
const name = input.path ?? '';
|
|
22
|
+
if (!name || path.isAbsolute(name) || name.split(/[\\/]/).includes('..') || name.split(/[\\/]/).some(p => p === '.git' || p === '.env'))
|
|
23
|
+
throw new KiokukoError('VALIDATION_ERROR', 'Inspection path is invalid');
|
|
24
|
+
const resolved = realpathSync(path.join(base, name));
|
|
25
|
+
if (!resolved.startsWith(realpathSync(base) + path.sep) || !statSync(resolved).isFile() || statSync(resolved).size > 256000)
|
|
26
|
+
throw new KiokukoError('VALIDATION_ERROR', 'Inspection exceeds its file boundary');
|
|
27
|
+
return { text: readFileSync(resolved, 'utf8') };
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=inspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/assurance/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const MEMORY_ASSURANCE_INSTRUCTIONS = "When available, inspect task_memory_status for the current delivery and assurance revision. Use task_memory_review for applicable delivered memories: adopt with current basis, invariant, counterexample and verifier, or explain inapplicability/contradiction. Reading alone is not application. For code changes link passing execution evidence to adopted memories; task_execution_evidence is model-reported, while Codex hook evidence is client-observed. Changed targets or deliveries invalidate prior verification. Use task_memory_refresh on the same run for new paths/errors; do not repeat task_prepare. PLAN and code review need grounded decisions, not implementation test runs. Preserve failure/interruption/cancellation as valid terminal outcomes. Capture corrections through memory_capture with exact entry ID/revision, condition, invariant, counterexample and verification; never auto-promote a declaration. Unsupported clients retain advisory operation and must not claim hook observation.";
|
|
2
|
+
//# sourceMappingURL=instructions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/assurance/instructions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,s+BAAs+B,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const MEMORY_ASSURANCE_INSTRUCTIONS = 'When available, inspect task_memory_status for the current delivery and assurance revision. Use task_memory_review for applicable delivered memories: adopt with current basis, invariant, counterexample and verifier, or explain inapplicability/contradiction. Reading alone is not application. For code changes link passing execution evidence to adopted memories; task_execution_evidence is model-reported, while Codex hook evidence is client-observed. Changed targets or deliveries invalidate prior verification. Use task_memory_refresh on the same run for new paths/errors; do not repeat task_prepare. PLAN and code review need grounded decisions, not implementation test runs. Preserve failure/interruption/cancellation as valid terminal outcomes. Capture corrections through memory_capture with exact entry ID/revision, condition, invariant, counterexample and verification; never auto-promote a declaration. Unsupported clients retain advisory operation and must not claim hook observation.';
|
|
2
|
+
//# sourceMappingURL=instructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/assurance/instructions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,6BAA6B,GAAG,m+BAAm+B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../src/assurance/refresh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAYvD,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,oCAiD7F"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { scopedMemoryUseSignal } from '../context/scoped-memory-use.js';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { LedgerStore } from '../ledger/store.js';
|
|
4
|
+
import { KiokukoError } from '../errors.js';
|
|
5
|
+
import { assertCapabilityCatalogBinding } from '../akinator/capability-binding.js';
|
|
6
|
+
import { deriveMemoryPolicy, resolveCapabilities, hasBlockingRequiredCapability } from '../akinator/capabilities.js';
|
|
7
|
+
import { readContextBrokerRunState } from '../context/broker.js';
|
|
8
|
+
import { queryScopedContextGated } from '../context/scoped-broker.js';
|
|
9
|
+
import { resolveProjectWorkspaceReadOnly } from '../memory/workspaces.js';
|
|
10
|
+
import { canonicalContentHash } from '../serialization/validate.js';
|
|
11
|
+
import { memoryRefreshSchema, parseAssurance } from './contracts.js';
|
|
12
|
+
import { assertAssuranceCwd, assuranceState, bindAssuranceRoot, taskAssuranceReport } from './service.js';
|
|
13
|
+
export async function refreshTaskMemory(db, raw, signal) {
|
|
14
|
+
signal?.throwIfAborted();
|
|
15
|
+
const input = parseAssurance(memoryRefreshSchema, raw);
|
|
16
|
+
const run = new LedgerStore(db).readRun(input.runId);
|
|
17
|
+
if (!run)
|
|
18
|
+
throw new KiokukoError('NOT_FOUND', 'Task run not found');
|
|
19
|
+
assertCapabilityCatalogBinding(run.metadata, input.capabilities);
|
|
20
|
+
const project = await resolveProjectWorkspaceReadOnly(db, input.cwd);
|
|
21
|
+
if (!project || project.workspace !== run.workspace)
|
|
22
|
+
throw new KiokukoError('CONFLICT', 'Refresh repository differs from run');
|
|
23
|
+
for (const file of input.changedPaths)
|
|
24
|
+
if (path.isAbsolute(file) || file.split(/[\\/]/).includes('..')) {
|
|
25
|
+
throw new KiokukoError('VALIDATION_ERROR', 'Refresh paths must stay within the repository');
|
|
26
|
+
}
|
|
27
|
+
const digest = canonicalContentHash(input);
|
|
28
|
+
const prior = db.prepare('SELECT request_digest, response_json FROM task_assurance_requests WHERE run_id = ? AND request_id = ?')
|
|
29
|
+
.get(input.runId, input.requestId);
|
|
30
|
+
if (prior) {
|
|
31
|
+
if (prior.request_digest !== digest)
|
|
32
|
+
throw new KiokukoError('CONFLICT', 'Refresh request identity conflicts');
|
|
33
|
+
return JSON.parse(prior.response_json);
|
|
34
|
+
}
|
|
35
|
+
const state = assertAssuranceCwd(db, input.runId, input.cwd);
|
|
36
|
+
if (state.revision !== input.expectedRevision)
|
|
37
|
+
throw new KiokukoError('CONFLICT', 'Refresh revision changed');
|
|
38
|
+
const bound = run.metadata.kiokukoAgentTaskContextBinding;
|
|
39
|
+
const boundBudget = bound && typeof bound === 'object' && !Array.isArray(bound) ? bound.maxContextChars : undefined;
|
|
40
|
+
if (input.maxContextChars !== undefined && typeof boundBudget === 'number' && input.maxContextChars !== boundBudget)
|
|
41
|
+
throw new KiokukoError('CONFLICT', 'Refresh context budget differs from the prepared run');
|
|
42
|
+
const budget = input.maxContextChars ?? (typeof boundBudget === 'number' ? boundBudget : undefined);
|
|
43
|
+
const current = readContextBrokerRunState(db, input.runId);
|
|
44
|
+
const resolution = resolveCapabilities({ task: run.title ?? current.taskProfile.target ?? "task", profile: current.taskProfile, recommendedTags: current.recommendedTags, capabilities: input.capabilities, memoryUse: 'none' });
|
|
45
|
+
if (hasBlockingRequiredCapability(resolution))
|
|
46
|
+
throw new KiokukoError('CONFLICT', 'Required capability unavailable');
|
|
47
|
+
// Rank outside the write transaction; recheck the revision in the broker's atomic persistence gate.
|
|
48
|
+
let response = {};
|
|
49
|
+
await queryScopedContextGated(db, {
|
|
50
|
+
project, task: run.title ?? current.taskProfile.target ?? "task", taskProfile: current.taskProfile, runId: input.runId,
|
|
51
|
+
recommendedTags: current.recommendedTags, changedPaths: input.changedPaths, errorSignatures: input.errorSignatures,
|
|
52
|
+
...(budget === undefined ? {} : { characterBudget: budget }),
|
|
53
|
+
}, candidate => {
|
|
54
|
+
const memoryUse = scopedMemoryUseSignal(db, run.workspace, candidate);
|
|
55
|
+
const policy = deriveMemoryPolicy(current.taskProfile, memoryUse, input.capabilities);
|
|
56
|
+
return { persist: !policy.contextWithheld, value: policy, assertBeforePersist: () => {
|
|
57
|
+
signal?.throwIfAborted();
|
|
58
|
+
if (scopedMemoryUseSignal(db, run.workspace, candidate) !== memoryUse)
|
|
59
|
+
throw new KiokukoError('CONFLICT', 'Memory capability decision changed during refresh');
|
|
60
|
+
if (assuranceState(db, input.runId)?.revision !== input.expectedRevision)
|
|
61
|
+
throw new KiokukoError('CONFLICT', 'Refresh lost a concurrent update');
|
|
62
|
+
} };
|
|
63
|
+
}, {}, (context, policy) => {
|
|
64
|
+
const after = assuranceState(db, input.runId);
|
|
65
|
+
if (after.revision === input.expectedRevision)
|
|
66
|
+
db.prepare('UPDATE task_assurance SET revision=revision+1 WHERE run_id=?').run(input.runId);
|
|
67
|
+
bindAssuranceRoot(db, input.runId, project.repositoryRoot, policy.contextWithheld ? 'capability_withheld' : context?.retrieval?.status);
|
|
68
|
+
response = { context, memoryPolicy: policy, assurance: taskAssuranceReport(db, input.runId, false) };
|
|
69
|
+
db.prepare('INSERT INTO task_assurance_requests VALUES (?, ?, ?, ?)').run(input.runId, input.requestId, digest, JSON.stringify(response));
|
|
70
|
+
});
|
|
71
|
+
return response;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=refresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../src/assurance/refresh.ts"],"names":[],"mappings":"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"}
|