@askdkc/kiokuko 0.1.31 → 0.2.0
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 +55 -4
- package/README.ko.md +50 -4
- package/README.md +55 -4
- package/README.zh-CN.md +50 -4
- package/dist/agent-file/render.d.ts +1 -1
- package/dist/agent-file/render.d.ts.map +1 -1
- package/dist/agent-file/render.js +11 -6
- package/dist/agent-file/render.js.map +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 +39 -12
- package/dist/akinator/agent-task.js.map +1 -1
- package/dist/akinator/capabilities.d.ts.map +1 -1
- package/dist/akinator/capabilities.js +21 -14
- package/dist/akinator/capabilities.js.map +1 -1
- package/dist/akinator/skill-discovery-attempt.d.ts +1 -0
- package/dist/akinator/skill-discovery-attempt.d.ts.map +1 -1
- package/dist/akinator/skill-discovery-attempt.js +20 -18
- package/dist/akinator/skill-discovery-attempt.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +18 -9
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/enno.d.ts +7 -0
- package/dist/commands/enno.d.ts.map +1 -0
- package/dist/commands/enno.js +76 -0
- package/dist/commands/enno.js.map +1 -0
- package/dist/commands/setup.d.ts +5 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +83 -18
- package/dist/commands/setup.js.map +1 -1
- package/dist/config/paths.d.ts +6 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +40 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/enno-oduno/adapters.d.ts +18 -0
- package/dist/enno-oduno/adapters.d.ts.map +1 -0
- package/dist/enno-oduno/adapters.js +216 -0
- package/dist/enno-oduno/adapters.js.map +1 -0
- package/dist/enno-oduno/directives.d.ts +12 -0
- package/dist/enno-oduno/directives.d.ts.map +1 -0
- package/dist/enno-oduno/directives.js +215 -0
- package/dist/enno-oduno/directives.js.map +1 -0
- package/dist/enno-oduno/enno-oduno.d.mts +2 -0
- package/dist/enno-oduno/enno-oduno.d.mts.map +1 -0
- package/dist/enno-oduno/enno-oduno.mjs +3 -0
- package/dist/enno-oduno/enno-oduno.mjs.map +1 -0
- package/dist/enno-oduno/experts.d.ts +6 -0
- package/dist/enno-oduno/experts.d.ts.map +1 -0
- package/dist/enno-oduno/experts.js +18 -0
- package/dist/enno-oduno/experts.js.map +1 -0
- package/dist/enno-oduno/goki.d.mts +2 -0
- package/dist/enno-oduno/goki.d.mts.map +1 -0
- package/dist/enno-oduno/goki.mjs +3 -0
- package/dist/enno-oduno/goki.mjs.map +1 -0
- package/dist/enno-oduno/handoff.d.ts +4 -0
- package/dist/enno-oduno/handoff.d.ts.map +1 -0
- package/dist/enno-oduno/handoff.js +18 -0
- package/dist/enno-oduno/handoff.js.map +1 -0
- package/dist/enno-oduno/harness.d.ts +20 -0
- package/dist/enno-oduno/harness.d.ts.map +1 -0
- package/dist/enno-oduno/harness.js +65 -0
- package/dist/enno-oduno/harness.js.map +1 -0
- package/dist/enno-oduno/instructions.d.ts +2 -0
- package/dist/enno-oduno/instructions.d.ts.map +1 -0
- package/dist/enno-oduno/instructions.js +3 -0
- package/dist/enno-oduno/instructions.js.map +1 -0
- package/dist/enno-oduno/role-runner.d.ts +9 -0
- package/dist/enno-oduno/role-runner.d.ts.map +1 -0
- package/dist/enno-oduno/role-runner.js +171 -0
- package/dist/enno-oduno/role-runner.js.map +1 -0
- package/dist/enno-oduno/schemas.d.ts +615 -0
- package/dist/enno-oduno/schemas.d.ts.map +1 -0
- package/dist/enno-oduno/schemas.js +336 -0
- package/dist/enno-oduno/schemas.js.map +1 -0
- package/dist/enno-oduno/service.d.ts +47 -0
- package/dist/enno-oduno/service.d.ts.map +1 -0
- package/dist/enno-oduno/service.js +841 -0
- package/dist/enno-oduno/service.js.map +1 -0
- package/dist/enno-oduno/skills.d.ts +22 -0
- package/dist/enno-oduno/skills.d.ts.map +1 -0
- package/dist/enno-oduno/skills.js +127 -0
- package/dist/enno-oduno/skills.js.map +1 -0
- package/dist/enno-oduno/store.d.ts +61 -0
- package/dist/enno-oduno/store.d.ts.map +1 -0
- package/dist/enno-oduno/store.js +337 -0
- package/dist/enno-oduno/store.js.map +1 -0
- package/dist/enno-oduno/types.d.ts +191 -0
- package/dist/enno-oduno/types.d.ts.map +1 -0
- package/dist/enno-oduno/types.js +41 -0
- package/dist/enno-oduno/types.js.map +1 -0
- package/dist/enno-oduno/verifier.d.ts +9 -0
- package/dist/enno-oduno/verifier.d.ts.map +1 -0
- package/dist/enno-oduno/verifier.js +101 -0
- package/dist/enno-oduno/verifier.js.map +1 -0
- package/dist/enno-oduno/zenki.d.mts +2 -0
- package/dist/enno-oduno/zenki.d.mts.map +1 -0
- package/dist/enno-oduno/zenki.mjs +3 -0
- package/dist/enno-oduno/zenki.mjs.map +1 -0
- package/dist/ledger/types.d.ts +1 -1
- package/dist/ledger/types.d.ts.map +1 -1
- package/dist/ledger/types.js +5 -0
- package/dist/ledger/types.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +66 -26
- package/dist/mcp/server.js.map +1 -1
- package/dist/setup/claude-config.d.ts +2 -0
- package/dist/setup/claude-config.d.ts.map +1 -1
- package/dist/setup/claude-config.js +12 -0
- package/dist/setup/claude-config.js.map +1 -1
- package/dist/setup/enno-client-config.d.ts +9 -0
- package/dist/setup/enno-client-config.d.ts.map +1 -0
- package/dist/setup/enno-client-config.js +172 -0
- package/dist/setup/enno-client-config.js.map +1 -0
- package/dist/setup/opencode-config.d.ts +2 -0
- package/dist/setup/opencode-config.d.ts.map +1 -1
- package/dist/setup/opencode-config.js +12 -0
- package/dist/setup/opencode-config.js.map +1 -1
- package/dist/setup/render.d.ts +2 -0
- package/dist/setup/render.d.ts.map +1 -1
- package/dist/setup/render.js +21 -12
- package/dist/setup/render.js.map +1 -1
- package/dist/setup/standard-skills.d.ts +23 -4
- package/dist/setup/standard-skills.d.ts.map +1 -1
- package/dist/setup/standard-skills.js +51 -1
- package/dist/setup/standard-skills.js.map +1 -1
- package/dist/skills/discovery-service.d.ts.map +1 -1
- package/dist/skills/discovery-service.js +2 -1
- package/dist/skills/discovery-service.js.map +1 -1
- package/dist/skills/types.d.ts +1 -0
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/web/i18n.d.ts +19 -0
- package/dist/web/i18n.d.ts.map +1 -1
- package/dist/web/i18n.js +76 -0
- package/dist/web/i18n.js.map +1 -1
- package/dist/web/ui.d.ts.map +1 -1
- package/dist/web/ui.js +76 -4
- package/dist/web/ui.js.map +1 -1
- package/migrations/013_enno_oduno.sql +176 -0
- package/migrations/014_oduno_reflection_phases.sql +40 -0
- package/package.json +7 -1
- package/skills/kiokuko-enno-oduno/SKILL.md +122 -0
- package/skills/kiokuko-enno-oduno/enno-oduno.png +0 -0
- package/skills/kiokuko-single-purpose-functions/SKILL.md +44 -258
- package/skills/kiokuko-single-purpose-functions/references/boundaries-and-ownership.md +50 -0
- package/skills/kiokuko-single-purpose-functions/references/domain-and-types.md +48 -0
- package/skills/kiokuko-single-purpose-functions/references/effects-and-data.md +43 -0
- package/skills/kiokuko-single-purpose-functions/references/protocols-and-idempotency.md +42 -0
- package/skills/kiokuko-single-purpose-functions/references/verification.md +41 -0
- package/skills/kiokuko-soul/SKILL.md +72 -0
- package/skills/kiokuko-ui-design-soul/SKILL.md +39 -1178
- package/skills/kiokuko-ui-design-soul/references/accessibility-and-navigation.md +31 -0
- package/skills/kiokuko-ui-design-soul/references/async-recovery.md +49 -0
- package/skills/kiokuko-ui-design-soul/references/forms-and-controls.md +35 -0
- package/skills/kiokuko-ui-design-soul/references/interaction-feedback.md +34 -0
- package/skills/kiokuko-ui-design-soul/references/responsive-and-platform.md +38 -0
- package/skills/kiokuko-ui-design-soul/references/safety-and-review.md +39 -0
- package/templates/AGENTS.md +9 -6
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import * as z from 'zod/v4';
|
|
3
|
+
import { withImmediateTransaction } from '../db/transaction.js';
|
|
4
|
+
import { KiokukoError } from '../errors.js';
|
|
5
|
+
import { canonicalDirectory } from '../repository/detect-root.js';
|
|
6
|
+
import { canonicalContentHash } from '../serialization/validate.js';
|
|
7
|
+
import { directiveForRun } from './directives.js';
|
|
8
|
+
import { appendEnnoEventInTransaction, readEnnoSnapshot, terminalizeLedgerRunInTransaction, updateContractInTransaction, } from './store.js';
|
|
9
|
+
import { ENNO_CLIENT_KINDS, } from './types.js';
|
|
10
|
+
export const ENNO_ADAPTER_WARNING = 'Kiokuko Enno-Oduno adapter unavailable; allowing the client to stop.';
|
|
11
|
+
export const ENNO_CLIENTS = ENNO_CLIENT_KINDS;
|
|
12
|
+
const CLAUDE_SAFE_STOP_BLOCK_LIMIT = 7;
|
|
13
|
+
const hookInputSchema = z.object({
|
|
14
|
+
session_id: z.string().min(1).max(256).optional(),
|
|
15
|
+
sessionId: z.string().min(1).max(256).optional(),
|
|
16
|
+
cwd: z.string().min(1).max(4_096),
|
|
17
|
+
stop_hook_active: z.boolean().optional(),
|
|
18
|
+
}).passthrough();
|
|
19
|
+
function isUnder(root, cwd) {
|
|
20
|
+
const relative = path.relative(root, cwd);
|
|
21
|
+
return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
|
|
22
|
+
}
|
|
23
|
+
function exactSessionCandidates(database, client, sessionId, cwd) {
|
|
24
|
+
return database.prepare(`
|
|
25
|
+
SELECT ec.run_id AS runId, ec.workspace, ec.orchestration_session_id AS orchestrationId,
|
|
26
|
+
ec.client_kind AS clientKind, ec.client_session_id AS clientSessionId,
|
|
27
|
+
ec.repository_root AS repositoryRoot, ec.status
|
|
28
|
+
FROM enno_contracts AS ec
|
|
29
|
+
WHERE ec.client_session_id = ?
|
|
30
|
+
AND ec.client_kind = ?
|
|
31
|
+
AND ec.status IN ('zenki_planning', 'goki_executing', 'enno_verifying')
|
|
32
|
+
`).all(sessionId, client)
|
|
33
|
+
.filter((candidate) => isUnder(candidate.repositoryRoot, cwd));
|
|
34
|
+
}
|
|
35
|
+
function pendingSessionCandidates(database, client, cwd) {
|
|
36
|
+
return database.prepare(`
|
|
37
|
+
SELECT ec.run_id AS runId, ec.workspace, ec.orchestration_session_id AS orchestrationId,
|
|
38
|
+
ec.client_kind AS clientKind, ec.client_session_id AS clientSessionId,
|
|
39
|
+
ec.repository_root AS repositoryRoot, ec.status
|
|
40
|
+
FROM enno_contracts AS ec
|
|
41
|
+
WHERE ec.client_session_id IS NULL
|
|
42
|
+
AND (ec.client_kind IS NULL OR ec.client_kind = ?)
|
|
43
|
+
AND ec.status IN ('zenki_planning', 'goki_executing', 'enno_verifying')
|
|
44
|
+
`).all(client)
|
|
45
|
+
.filter((candidate) => isUnder(candidate.repositoryRoot, cwd));
|
|
46
|
+
}
|
|
47
|
+
function bindPendingCandidateInTransaction(database, candidate, client, sessionId) {
|
|
48
|
+
const updated = database.prepare(`
|
|
49
|
+
UPDATE enno_contracts
|
|
50
|
+
SET client_kind = ?, client_session_id = ?, updated_at = ?
|
|
51
|
+
WHERE run_id = ?
|
|
52
|
+
AND orchestration_session_id = ?
|
|
53
|
+
AND client_session_id IS NULL
|
|
54
|
+
AND (client_kind IS NULL OR client_kind = ?)
|
|
55
|
+
RETURNING run_id AS runId
|
|
56
|
+
`).get(client, sessionId, new Date().toISOString(), candidate.runId, candidate.orchestrationId, client);
|
|
57
|
+
if (updated?.runId !== candidate.runId) {
|
|
58
|
+
throw new KiokukoError('CONFLICT', 'Enno client binding changed concurrently');
|
|
59
|
+
}
|
|
60
|
+
appendEnnoEventInTransaction(database, candidate.runId, 'enno.client_bound', 'enno-oduno', 'bound', {
|
|
61
|
+
clientKind: client,
|
|
62
|
+
});
|
|
63
|
+
return { ...candidate, clientKind: client, clientSessionId: sessionId };
|
|
64
|
+
}
|
|
65
|
+
function resolveCandidateInTransaction(database, client, sessionId, cwd) {
|
|
66
|
+
const exact = exactSessionCandidates(database, client, sessionId, cwd);
|
|
67
|
+
if (exact.length > 1)
|
|
68
|
+
return { kind: 'ambiguous' };
|
|
69
|
+
if (exact[0] !== undefined)
|
|
70
|
+
return { kind: 'resolved', candidate: exact[0] };
|
|
71
|
+
const pending = pendingSessionCandidates(database, client, cwd);
|
|
72
|
+
if (pending.length === 0)
|
|
73
|
+
return { kind: 'none' };
|
|
74
|
+
if (pending.length > 1)
|
|
75
|
+
return { kind: 'ambiguous' };
|
|
76
|
+
return { kind: 'resolved', candidate: bindPendingCandidateInTransaction(database, pending[0], client, sessionId) };
|
|
77
|
+
}
|
|
78
|
+
function continuationPrompt(directive) {
|
|
79
|
+
return `Enno-Oduno requires continuation. Follow this run-bound role directive exactly and do not claim completion early:\n${JSON.stringify(directive)}`;
|
|
80
|
+
}
|
|
81
|
+
function claimContinuation(database, client, snapshot, directiveDigest) {
|
|
82
|
+
if (snapshot.clientSessionId === null || snapshot.clientKind !== client) {
|
|
83
|
+
throw new KiokukoError('INTEGRITY_ERROR', 'Enno continuation requires an exact client binding');
|
|
84
|
+
}
|
|
85
|
+
const existing = database.prepare(`
|
|
86
|
+
SELECT contract_revision AS contractRevision, mutation_revision AS mutationRevision,
|
|
87
|
+
attempts, directive_digest AS directiveDigest, continuation_count AS continuationCount,
|
|
88
|
+
total_count AS totalCount
|
|
89
|
+
FROM enno_client_continuations
|
|
90
|
+
WHERE run_id = ? AND client_kind = ? AND source_session_id = ?
|
|
91
|
+
`).get(snapshot.runId, client, snapshot.clientSessionId);
|
|
92
|
+
const unchanged = existing?.contractRevision === snapshot.revision
|
|
93
|
+
&& existing.mutationRevision === snapshot.mutationRevision
|
|
94
|
+
&& existing.attempts === snapshot.attempts
|
|
95
|
+
&& existing.directiveDigest === directiveDigest;
|
|
96
|
+
const count = unchanged ? existing.continuationCount : 0;
|
|
97
|
+
const remaining = Math.max(0, snapshot.contract.maxAttempts - snapshot.attempts);
|
|
98
|
+
const totalCount = existing?.totalCount ?? 0;
|
|
99
|
+
const totalLimit = client === 'claude'
|
|
100
|
+
? Math.min(remaining, CLAUDE_SAFE_STOP_BLOCK_LIMIT)
|
|
101
|
+
: snapshot.contract.maxAttempts;
|
|
102
|
+
if (count >= remaining || totalCount >= totalLimit)
|
|
103
|
+
return false;
|
|
104
|
+
database.prepare(`
|
|
105
|
+
INSERT INTO enno_client_continuations (
|
|
106
|
+
run_id, client_kind, source_session_id, contract_revision, mutation_revision,
|
|
107
|
+
attempts, directive_digest, continuation_count, total_count, updated_at
|
|
108
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, 1, 1, ?)
|
|
109
|
+
ON CONFLICT(run_id, client_kind, source_session_id) DO UPDATE SET
|
|
110
|
+
contract_revision = excluded.contract_revision,
|
|
111
|
+
mutation_revision = excluded.mutation_revision,
|
|
112
|
+
attempts = excluded.attempts,
|
|
113
|
+
directive_digest = excluded.directive_digest,
|
|
114
|
+
continuation_count = CASE
|
|
115
|
+
WHEN enno_client_continuations.contract_revision = excluded.contract_revision
|
|
116
|
+
AND enno_client_continuations.mutation_revision = excluded.mutation_revision
|
|
117
|
+
AND enno_client_continuations.attempts = excluded.attempts
|
|
118
|
+
AND enno_client_continuations.directive_digest = excluded.directive_digest
|
|
119
|
+
THEN enno_client_continuations.continuation_count + 1
|
|
120
|
+
ELSE 1
|
|
121
|
+
END,
|
|
122
|
+
total_count = enno_client_continuations.total_count + 1,
|
|
123
|
+
updated_at = excluded.updated_at
|
|
124
|
+
`).run(snapshot.runId, client, snapshot.clientSessionId, snapshot.revision, snapshot.mutationRevision, snapshot.attempts, directiveDigest, new Date().toISOString());
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
function blockForContinuationLimit(database, snapshot) {
|
|
128
|
+
updateContractInTransaction(database, snapshot, {
|
|
129
|
+
contract: snapshot.contract,
|
|
130
|
+
status: 'blocked',
|
|
131
|
+
confirmationState: snapshot.confirmationState,
|
|
132
|
+
blocker: 'Enno-Oduno continuation limit reached',
|
|
133
|
+
});
|
|
134
|
+
appendEnnoEventInTransaction(database, snapshot.runId, 'enno.blocked', 'enno-oduno', 'blocked', {
|
|
135
|
+
reason: 'continuation_limit',
|
|
136
|
+
contractRevision: snapshot.revision,
|
|
137
|
+
attempts: snapshot.attempts,
|
|
138
|
+
});
|
|
139
|
+
terminalizeLedgerRunInTransaction(database, snapshot.runId, 'failed');
|
|
140
|
+
}
|
|
141
|
+
export function decideAdapterContinuation(database, client, rawInput) {
|
|
142
|
+
const parsed = hookInputSchema.safeParse(rawInput);
|
|
143
|
+
if (!parsed.success)
|
|
144
|
+
throw new KiokukoError('VALIDATION_ERROR', 'Enno client hook input is invalid');
|
|
145
|
+
const sessionId = parsed.data.session_id ?? parsed.data.sessionId;
|
|
146
|
+
if (sessionId === undefined)
|
|
147
|
+
throw new KiokukoError('VALIDATION_ERROR', 'Enno client session ID is required');
|
|
148
|
+
const cwd = canonicalDirectory(parsed.data.cwd);
|
|
149
|
+
const continuation = withImmediateTransaction(database, () => {
|
|
150
|
+
const resolution = resolveCandidateInTransaction(database, client, sessionId, cwd);
|
|
151
|
+
if (resolution.kind !== 'resolved')
|
|
152
|
+
return resolution;
|
|
153
|
+
const candidate = resolution.candidate;
|
|
154
|
+
const snapshot = readEnnoSnapshot(database, {
|
|
155
|
+
runId: candidate.runId,
|
|
156
|
+
workspace: candidate.workspace,
|
|
157
|
+
orchestrationId: candidate.orchestrationId,
|
|
158
|
+
});
|
|
159
|
+
if (snapshot.clientKind !== client || snapshot.clientSessionId !== sessionId) {
|
|
160
|
+
throw new KiokukoError('INTEGRITY_ERROR', 'Enno client binding is inconsistent');
|
|
161
|
+
}
|
|
162
|
+
const directive = directiveForRun(snapshot);
|
|
163
|
+
if (directive === null)
|
|
164
|
+
throw new KiokukoError('INTEGRITY_ERROR', 'Enno active run has no role directive');
|
|
165
|
+
const claimed = claimContinuation(database, client, snapshot, canonicalContentHash(directive));
|
|
166
|
+
if (!claimed)
|
|
167
|
+
blockForContinuationLimit(database, snapshot);
|
|
168
|
+
return { kind: 'continuation', snapshot, directive, claimed };
|
|
169
|
+
});
|
|
170
|
+
if (continuation.kind === 'none') {
|
|
171
|
+
return { continue: false, runId: null, status: null, directive: null, reason: null, warning: null };
|
|
172
|
+
}
|
|
173
|
+
if (continuation.kind === 'ambiguous') {
|
|
174
|
+
return {
|
|
175
|
+
continue: false,
|
|
176
|
+
runId: null,
|
|
177
|
+
status: null,
|
|
178
|
+
directive: null,
|
|
179
|
+
reason: null,
|
|
180
|
+
warning: 'Multiple Enno-Oduno runs match this client and repository; returning control without guessing.',
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
const { snapshot } = continuation;
|
|
184
|
+
if (!continuation.claimed) {
|
|
185
|
+
return {
|
|
186
|
+
continue: false,
|
|
187
|
+
runId: snapshot.runId,
|
|
188
|
+
status: 'blocked',
|
|
189
|
+
directive: null,
|
|
190
|
+
reason: null,
|
|
191
|
+
warning: 'Enno-Oduno continuation limit reached; returning control to the user.',
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
return {
|
|
195
|
+
continue: true,
|
|
196
|
+
runId: snapshot.runId,
|
|
197
|
+
status: snapshot.status,
|
|
198
|
+
directive: continuation.directive,
|
|
199
|
+
reason: continuationPrompt(continuation.directive),
|
|
200
|
+
warning: null,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
export function renderStopHookDecision(decision) {
|
|
204
|
+
return decision.continue && decision.reason !== null
|
|
205
|
+
? { decision: 'block', reason: decision.reason }
|
|
206
|
+
: decision.warning === null ? {} : { systemMessage: decision.warning };
|
|
207
|
+
}
|
|
208
|
+
export function renderOpenCodeDecision(decision) {
|
|
209
|
+
return decision;
|
|
210
|
+
}
|
|
211
|
+
export function failOpenAdapterOutput(client) {
|
|
212
|
+
return client === 'opencode'
|
|
213
|
+
? { continue: false, runId: null, status: null, directive: null, reason: null, warning: ENNO_ADAPTER_WARNING }
|
|
214
|
+
: { systemMessage: ENNO_ADAPTER_WARNING };
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/enno-oduno/adapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AkinatorQuestion } from '../akinator/types.js';
|
|
2
|
+
import type { EnnoClientKind, EnnoRunSnapshot, RoleDirective } from './types.js';
|
|
3
|
+
export declare function directiveForRun(snapshot: EnnoRunSnapshot): RoleDirective | null;
|
|
4
|
+
export declare function directiveForIntake(input: {
|
|
5
|
+
runId: string;
|
|
6
|
+
orchestrationId: string;
|
|
7
|
+
clientKind: EnnoClientKind | null;
|
|
8
|
+
clientVersion: string | null;
|
|
9
|
+
question: AkinatorQuestion | null;
|
|
10
|
+
}): RoleDirective;
|
|
11
|
+
export declare function assertDirectiveRevision(snapshot: EnnoRunSnapshot, revision: number): void;
|
|
12
|
+
//# sourceMappingURL=directives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../src/enno-oduno/directives.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAO7D,OAAO,KAAK,EACV,cAAc,EAEd,eAAe,EAEf,aAAa,EAId,MAAM,YAAY,CAAC;AA6GpB,wBAAgB,eAAe,CAAC,QAAQ,EAAE,eAAe,GAAG,aAAa,GAAG,IAAI,CA6F/E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACnC,GAAG,aAAa,CAqBhB;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIzF"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { KiokukoError } from '../errors.js';
|
|
2
|
+
import { STANDARD_ENNO_SKILL_NAME, STANDARD_FUNCTION_SKILL_NAME, STANDARD_SOUL_SKILL_NAME, } from '../setup/standard-skills.js';
|
|
3
|
+
import { orderedUniqueSkillNames } from './skills.js';
|
|
4
|
+
const REPORT_SCHEMAS = {
|
|
5
|
+
intake: {
|
|
6
|
+
type: 'object',
|
|
7
|
+
required: ['runId', 'sessionId', 'questionId', 'value'],
|
|
8
|
+
},
|
|
9
|
+
plan: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
required: ['scope', 'acceptanceCriteria', 'workPlan', 'skillRequirements', 'finalVerifiers', 'provenance'],
|
|
12
|
+
},
|
|
13
|
+
ideal: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
required: ['runId', 'expectedRevision', 'ideal'],
|
|
16
|
+
},
|
|
17
|
+
work: {
|
|
18
|
+
type: 'object',
|
|
19
|
+
required: ['workUnitId', 'result'],
|
|
20
|
+
},
|
|
21
|
+
verification: {
|
|
22
|
+
type: 'object',
|
|
23
|
+
required: ['runId', 'expectedRevision', 'review'],
|
|
24
|
+
properties: {
|
|
25
|
+
review: {
|
|
26
|
+
type: 'object',
|
|
27
|
+
required: ['decision', 'summary'],
|
|
28
|
+
properties: {
|
|
29
|
+
decision: { enum: ['accept', 'replan'] },
|
|
30
|
+
summary: { type: 'string' },
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
meditation: {
|
|
36
|
+
type: 'object',
|
|
37
|
+
required: ['runId', 'expectedRevision', 'meditation'],
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
const ZENKI_SINGLE_PURPOSE_PLANNING_CONTRACT = `After ${STANDARD_SOUL_SKILL_NAME} routes the work, read the compact ${STANDARD_FUNCTION_SKILL_NAME} index before decomposing the WorkPlan. Shape every code-changing WorkUnit around one cohesive externally observable function or use-case contract with one responsibility and one reason to change. State its success, expected failures, effect profile, and focused runnable test target. Select one to three versioned expertRefs for its actual risks; a UI unit needs at least one code expert and one UI expert. Compose those units without meaningless micro-functions, unrelated responsibilities, or loading every expert fragment by default.`;
|
|
41
|
+
function boundedObjective(value) {
|
|
42
|
+
return value.slice(0, 16_384);
|
|
43
|
+
}
|
|
44
|
+
function harnessContinuation(kind) {
|
|
45
|
+
if (kind === 'codex' || kind === 'claude')
|
|
46
|
+
return 'stop_hook';
|
|
47
|
+
if (kind === 'opencode')
|
|
48
|
+
return 'session_idle_plugin';
|
|
49
|
+
return 'unidentified';
|
|
50
|
+
}
|
|
51
|
+
function harnessInstructions(kind, role) {
|
|
52
|
+
const continuation = kind === 'opencode'
|
|
53
|
+
? 'OpenCode continuation is delivered by the bounded session.idle plugin.'
|
|
54
|
+
: kind === 'codex' || kind === 'claude'
|
|
55
|
+
? `${kind === 'codex' ? 'Codex' : 'Claude Code'} continuation is delivered by the bounded Stop hook.`
|
|
56
|
+
: 'The AI harness is not identified; use only capabilities explicitly present in the task response.';
|
|
57
|
+
const roleInstruction = role === 'zenki'
|
|
58
|
+
? `Read and apply ${STANDARD_SOUL_SKILL_NAME} first, then every remaining required Skill index before planning. ${ZENKI_SINGLE_PURPOSE_PLANNING_CONTRACT} Create WorkUnits that this harness can execute with its currently available Skills and MCP tools; do not implement them.`
|
|
59
|
+
: role === 'goki'
|
|
60
|
+
? `Read and apply ${STANDARD_SOUL_SKILL_NAME} first, then every remaining required Skill index and exactly the expert fragments named by the approved WorkUnit expertRefs. Orchestrate exactly one approved WorkUnit with this harness; delegation is optional and must use only available capabilities.`
|
|
61
|
+
: `Read and apply ${STANDARD_SOUL_SKILL_NAME} first, then ${STANDARD_ENNO_SKILL_NAME}. Own intake, user confirmation, state transitions, final review, and verification; do not perform Zenki or Goki work.`;
|
|
62
|
+
return [continuation, roleInstruction];
|
|
63
|
+
}
|
|
64
|
+
function harnessDirective(kind, version, role) {
|
|
65
|
+
return {
|
|
66
|
+
kind,
|
|
67
|
+
version,
|
|
68
|
+
continuation: harnessContinuation(kind),
|
|
69
|
+
instructions: harnessInstructions(kind, role),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function requiredSkillNames(entries) {
|
|
73
|
+
return entries.filter((entry) => entry.required).map((entry) => entry.name);
|
|
74
|
+
}
|
|
75
|
+
function nextReadyWorkUnit(units) {
|
|
76
|
+
const completed = new Set(units.filter((unit) => unit.status === 'completed').map((unit) => unit.workUnit.id));
|
|
77
|
+
const active = units.find((unit) => unit.status === 'in_progress');
|
|
78
|
+
if (active !== undefined)
|
|
79
|
+
return active.workUnit;
|
|
80
|
+
return units.find((unit) => unit.status === 'pending'
|
|
81
|
+
&& unit.workUnit.dependencies.every((dependency) => completed.has(dependency)))?.workUnit ?? null;
|
|
82
|
+
}
|
|
83
|
+
function roleForStatus(status) {
|
|
84
|
+
if (status === 'zenki_planning')
|
|
85
|
+
return 'zenki';
|
|
86
|
+
if (status === 'goki_executing')
|
|
87
|
+
return 'goki';
|
|
88
|
+
if (status === 'oduno_ideal'
|
|
89
|
+
|| status === 'enno_verifying'
|
|
90
|
+
|| status === 'oduno_meditation'
|
|
91
|
+
|| status === 'intake'
|
|
92
|
+
|| status === 'needs_confirmation')
|
|
93
|
+
return 'enno-oduno';
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
function discoveredSkillNames(snapshot) {
|
|
97
|
+
return snapshot.contract.skillSet.intakeDiscovery.selected.map((skill) => skill.name);
|
|
98
|
+
}
|
|
99
|
+
function changedPaths(snapshot) {
|
|
100
|
+
return [...new Set(snapshot.workUnits.flatMap((unit) => unit.result?.changedPaths ?? []))];
|
|
101
|
+
}
|
|
102
|
+
export function directiveForRun(snapshot) {
|
|
103
|
+
const role = roleForStatus(snapshot.status);
|
|
104
|
+
if (role === null)
|
|
105
|
+
return null;
|
|
106
|
+
const requiredSkills = requiredSkillNames(snapshot.contract.skillSet.entries);
|
|
107
|
+
if (role === 'zenki') {
|
|
108
|
+
return {
|
|
109
|
+
protocolVersion: 1,
|
|
110
|
+
runId: snapshot.runId,
|
|
111
|
+
contractRevision: snapshot.revision,
|
|
112
|
+
role,
|
|
113
|
+
harness: harnessDirective(snapshot.clientKind, snapshot.clientVersion, role),
|
|
114
|
+
handoff: snapshot.handoff,
|
|
115
|
+
objective: boundedObjective(snapshot.blocker === null
|
|
116
|
+
? `Create a bounded WorkPlan that realizes this Oduno ideal: ${snapshot.ideal?.objective ?? snapshot.handoff.objective}. ${ZENKI_SINGLE_PURPOSE_PLANNING_CONTRACT} Select only available Skills and define focused plus final verifiers. Do not implement changes.`
|
|
117
|
+
: `Revise the WorkPlan in response to Enno-Oduno review or user feedback: ${snapshot.blocker} ${ZENKI_SINGLE_PURPOSE_PLANNING_CONTRACT}`),
|
|
118
|
+
requiredSkills: orderedUniqueSkillNames([STANDARD_SOUL_SKILL_NAME, STANDARD_FUNCTION_SKILL_NAME], requiredSkills),
|
|
119
|
+
workUnit: null,
|
|
120
|
+
stopConditions: [
|
|
121
|
+
'Read every required Skill index before decomposing the WorkPlan',
|
|
122
|
+
'Give each code-changing WorkUnit one cohesive function or use-case contract and a focused runnable test target',
|
|
123
|
+
'Select one to three versioned expertRefs per WorkUnit and do not load unselected fragments by default',
|
|
124
|
+
'Do not create meaningless micro-functions or bundle unrelated responsibilities',
|
|
125
|
+
'Submit one complete plan',
|
|
126
|
+
'Stop if a required capability is unavailable',
|
|
127
|
+
'Do not mutate the repository',
|
|
128
|
+
],
|
|
129
|
+
reportSchema: REPORT_SCHEMAS.plan,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
if (role === 'goki') {
|
|
133
|
+
const workUnit = nextReadyWorkUnit(snapshot.workUnits);
|
|
134
|
+
return {
|
|
135
|
+
protocolVersion: 1,
|
|
136
|
+
runId: snapshot.runId,
|
|
137
|
+
contractRevision: snapshot.revision,
|
|
138
|
+
role,
|
|
139
|
+
harness: harnessDirective(snapshot.clientKind, snapshot.clientVersion, role),
|
|
140
|
+
handoff: snapshot.handoff,
|
|
141
|
+
objective: boundedObjective(workUnit === null
|
|
142
|
+
? 'No approved WorkUnit is ready. Stop and return control to Enno-Oduno without changing the contract.'
|
|
143
|
+
: `Orchestrate the approved WorkUnit: ${workUnit.objective}`),
|
|
144
|
+
requiredSkills: orderedUniqueSkillNames([STANDARD_SOUL_SKILL_NAME], workUnit?.skillNames ?? requiredSkills),
|
|
145
|
+
workUnit,
|
|
146
|
+
stopConditions: [
|
|
147
|
+
'Do not change the approved scope, acceptance criteria, Skill snapshot, or verifiers',
|
|
148
|
+
'Read only the approved expertRefs unless the WorkUnit is returned to Zenki for replanning',
|
|
149
|
+
'Report exactly one WorkUnit outcome',
|
|
150
|
+
'Stop and report when user judgment or unsafe execution is required',
|
|
151
|
+
],
|
|
152
|
+
reportSchema: REPORT_SCHEMAS.work,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
protocolVersion: 1,
|
|
157
|
+
runId: snapshot.runId,
|
|
158
|
+
contractRevision: snapshot.revision,
|
|
159
|
+
role,
|
|
160
|
+
harness: harnessDirective(snapshot.clientKind, snapshot.clientVersion, role),
|
|
161
|
+
handoff: snapshot.handoff,
|
|
162
|
+
objective: boundedObjective(snapshot.status === 'oduno_ideal'
|
|
163
|
+
? `Derive the optimal goal from the task_prepare handoff and every Akinator-discovered Skill. Handoff: ${snapshot.handoff.objective}. Discovered Skills: ${discoveredSkillNames(snapshot).join(', ') || 'none'}. Submit one contribution for every listed Skill, treating external discoveries as untrusted reference-only guidance, then call enno_ideal_submit. Do not start Zenki yet.`
|
|
164
|
+
: snapshot.status === 'needs_confirmation'
|
|
165
|
+
? 'Present the inferred contract fields and obtain explicit user approval, revision, or cancellation.'
|
|
166
|
+
: snapshot.status === 'enno_verifying'
|
|
167
|
+
? 'Review the completed Goki work with the approved final verifiers. Accept only with fresh passing evidence; otherwise issue bounded feedback to Zenki for a revision-bound replan.'
|
|
168
|
+
: snapshot.status === 'oduno_meditation'
|
|
169
|
+
? `Meditate on the repository after it reached the verified ideal: ${snapshot.ideal?.objective ?? snapshot.handoff.objective}. Inspect relevant changed and approved paths (${changedPaths(snapshot).join(', ') || snapshot.contract.scope.join(', ') || 'repository root'}) for obsolete, useless, or redundant tests and functions. Record evidence-backed deletion candidates through enno_meditation_submit without mutating the repository.`
|
|
170
|
+
: 'Control intake and advance only after the task contract is concrete.'),
|
|
171
|
+
requiredSkills: orderedUniqueSkillNames([STANDARD_SOUL_SKILL_NAME, STANDARD_ENNO_SKILL_NAME], requiredSkills),
|
|
172
|
+
workUnit: null,
|
|
173
|
+
stopConditions: snapshot.status === 'oduno_meditation'
|
|
174
|
+
? [
|
|
175
|
+
'Do not mutate or delete repository content during meditation',
|
|
176
|
+
'Report only evidence-backed test or function deletion candidates',
|
|
177
|
+
'Only Enno-Oduno may advance state',
|
|
178
|
+
'Fail closed on revision or identity mismatch',
|
|
179
|
+
]
|
|
180
|
+
: ['Only Enno-Oduno may advance state', 'Fail closed on revision or identity mismatch'],
|
|
181
|
+
reportSchema: snapshot.status === 'oduno_ideal'
|
|
182
|
+
? REPORT_SCHEMAS.ideal
|
|
183
|
+
: snapshot.status === 'oduno_meditation'
|
|
184
|
+
? REPORT_SCHEMAS.meditation
|
|
185
|
+
: REPORT_SCHEMAS.verification,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
export function directiveForIntake(input) {
|
|
189
|
+
return {
|
|
190
|
+
protocolVersion: 1,
|
|
191
|
+
runId: input.runId,
|
|
192
|
+
contractRevision: null,
|
|
193
|
+
role: 'enno-oduno',
|
|
194
|
+
harness: harnessDirective(input.clientKind, input.clientVersion, 'enno-oduno'),
|
|
195
|
+
handoff: null,
|
|
196
|
+
objective: boundedObjective(input.question === null
|
|
197
|
+
? 'Keep the request in Enno-Oduno intake until Akinator produces an actionable task profile.'
|
|
198
|
+
: `Return Akinator's exact question to the user and wait for the answer: ${input.question.prompt}`),
|
|
199
|
+
requiredSkills: [STANDARD_SOUL_SKILL_NAME, STANDARD_ENNO_SKILL_NAME],
|
|
200
|
+
workUnit: null,
|
|
201
|
+
stopConditions: [
|
|
202
|
+
'Do not generate a WorkPlan during intake',
|
|
203
|
+
'Do not start Goki before Zenki submits a plan and required confirmation succeeds',
|
|
204
|
+
'Return control to the user for every unresolved Akinator question',
|
|
205
|
+
'Stop if a required capability is unavailable',
|
|
206
|
+
],
|
|
207
|
+
reportSchema: REPORT_SCHEMAS.intake,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
export function assertDirectiveRevision(snapshot, revision) {
|
|
211
|
+
if (snapshot.revision !== revision) {
|
|
212
|
+
throw new KiokukoError('CONFLICT', 'Enno contract revision changed');
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=directives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directives.js","sourceRoot":"","sources":["../../src/enno-oduno/directives.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enno-oduno.d.mts","sourceRoot":"","sources":["../../src/enno-oduno/enno-oduno.mts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enno-oduno.mjs","sourceRoot":"","sources":["../../src/enno-oduno/enno-oduno.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"experts.d.ts","sourceRoot":"","sources":["../../src/enno-oduno/experts.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAS3C,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE;IAAE,mBAAmB,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,GACtE,IAAI,CAeN"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { KiokukoError } from '../errors.js';
|
|
2
|
+
import { STANDARD_FUNCTION_EXPERT_IDS, STANDARD_UI_EXPERT_IDS, } from '../setup/standard-skills.js';
|
|
3
|
+
const functionExpertIds = new Set(STANDARD_FUNCTION_EXPERT_IDS);
|
|
4
|
+
const uiExpertIds = new Set(STANDARD_UI_EXPERT_IDS);
|
|
5
|
+
function hasExpert(unit, expertIds) {
|
|
6
|
+
return unit.expertRefs.some((reference) => expertIds.has(reference.id));
|
|
7
|
+
}
|
|
8
|
+
export function assertWorkPlanExpertCoverage(workPlan, requirements) {
|
|
9
|
+
for (const unit of workPlan.units) {
|
|
10
|
+
if (requirements.includesCodeChanges && !hasExpert(unit, functionExpertIds)) {
|
|
11
|
+
throw new KiokukoError('VALIDATION_ERROR', `WorkUnit ${unit.id} must select a code expert fragment`);
|
|
12
|
+
}
|
|
13
|
+
if (requirements.includesUiWork && !hasExpert(unit, uiExpertIds)) {
|
|
14
|
+
throw new KiokukoError('VALIDATION_ERROR', `WorkUnit ${unit.id} must select a UI expert fragment`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=experts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"experts.js","sourceRoot":"","sources":["../../src/enno-oduno/experts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAGrC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS,4BAA4B,CAAC,CAAC;AACxE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,sBAAsB,CAAC,CAAC;AAE5D,SAAS,SAAS,CAAC,IAA+B,EAAE,SAA8B;IAChF,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,QAAkB,EAClB,YAAuE;IAEvE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,YAAY,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,YAAY,CACpB,kBAAkB,EAClB,YAAY,IAAI,CAAC,EAAE,qCAAqC,CACzD,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,YAAY,CACpB,kBAAkB,EAClB,YAAY,IAAI,CAAC,EAAE,mCAAmC,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goki.d.mts","sourceRoot":"","sources":["../../src/enno-oduno/goki.mts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goki.mjs","sourceRoot":"","sources":["../../src/enno-oduno/goki.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AkinatorReasoning, TaskProfile } from '../akinator/types.js';
|
|
2
|
+
import { type EnnoRequestHandoff } from './types.js';
|
|
3
|
+
export declare function buildEnnoRequestHandoff(profile: TaskProfile, reasoning: AkinatorReasoning): EnnoRequestHandoff;
|
|
4
|
+
//# sourceMappingURL=handoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/enno-oduno/handoff.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAA8B,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEjF,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,iBAAiB,GAC3B,kBAAkB,CAgBpB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { KiokukoError } from '../errors.js';
|
|
2
|
+
import { ENNO_APPLICABLE_TASK_TYPES } from './types.js';
|
|
3
|
+
export function buildEnnoRequestHandoff(profile, reasoning) {
|
|
4
|
+
if (profile.taskType === null || !ENNO_APPLICABLE_TASK_TYPES.includes(profile.taskType) || reasoning.selectedAction === null) {
|
|
5
|
+
throw new KiokukoError('INTEGRITY_ERROR', 'Akinator did not produce an actionable Enno handoff');
|
|
6
|
+
}
|
|
7
|
+
return {
|
|
8
|
+
sourceRole: 'enno-oduno',
|
|
9
|
+
taskType: profile.taskType,
|
|
10
|
+
objective: reasoning.selectedAction,
|
|
11
|
+
target: profile.target,
|
|
12
|
+
expected: profile.expected,
|
|
13
|
+
constraints: [...reasoning.conditions],
|
|
14
|
+
verification: [...reasoning.verification],
|
|
15
|
+
stopConditions: [...reasoning.stopConditions],
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=handoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/enno-oduno/handoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,0BAA0B,EAA2B,MAAM,YAAY,CAAC;AAEjF,MAAM,UAAU,uBAAuB,CACrC,OAAoB,EACpB,SAA4B;IAE5B,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CACnE,OAAO,CAAC,QAAuD,CAChE,IAAI,SAAS,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QACvC,MAAM,IAAI,YAAY,CAAC,iBAAiB,EAAE,qDAAqD,CAAC,CAAC;IACnG,CAAC;IACD,OAAO;QACL,UAAU,EAAE,YAAY;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAuD;QACzE,SAAS,EAAE,SAAS,CAAC,cAAc;QACnC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC;QACtC,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC;QACzC,cAAc,EAAE,CAAC,GAAG,SAAS,CAAC,cAAc,CAAC;KAC9C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type EnnoClientKind } from './types.js';
|
|
2
|
+
export interface TaskClientHint {
|
|
3
|
+
kind?: string;
|
|
4
|
+
version?: string;
|
|
5
|
+
sessionId?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface TaskClientHintInput {
|
|
8
|
+
kind?: string | undefined;
|
|
9
|
+
version?: string | undefined;
|
|
10
|
+
sessionId?: string | undefined;
|
|
11
|
+
}
|
|
12
|
+
export interface McpClientImplementation {
|
|
13
|
+
name: string;
|
|
14
|
+
title?: string | undefined;
|
|
15
|
+
version: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function identifyEnnoClientKind(value: unknown): EnnoClientKind | null;
|
|
18
|
+
export declare function identifyMcpClientKind(client: McpClientImplementation | undefined): EnnoClientKind | null;
|
|
19
|
+
export declare function resolveTaskPrepareClient(explicit: TaskClientHintInput | undefined, runtime: McpClientImplementation | undefined): TaskClientHint | undefined;
|
|
20
|
+
//# sourceMappingURL=harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/enno-oduno/harness.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAoBD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAI5E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,uBAAuB,GAAG,SAAS,GAAG,cAAc,GAAG,IAAI,CAQxG;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,mBAAmB,GAAG,SAAS,EACzC,OAAO,EAAE,uBAAuB,GAAG,SAAS,GAC3C,cAAc,GAAG,SAAS,CA2B5B"}
|