kiokuko-dsh 0.2.45 → 0.2.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/build-info.json +4 -4
  2. package/dist/client.cjs +268 -0
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/context/replay-model-memory.d.ts +5 -1
  5. package/dist/context/replay-model-memory.d.ts.map +1 -1
  6. package/dist/context/replay-model-memory.js +6 -3
  7. package/dist/context/replay-model-memory.js.map +1 -1
  8. package/dist/dsh/answer-context.d.ts.map +1 -1
  9. package/dist/dsh/answer-context.js +4 -1
  10. package/dist/dsh/answer-context.js.map +1 -1
  11. package/dist/dsh/core/host.d.ts.map +1 -1
  12. package/dist/dsh/core/host.js +2 -0
  13. package/dist/dsh/core/host.js.map +1 -1
  14. package/dist/dsh/host-adapter/routing.d.ts.map +1 -1
  15. package/dist/dsh/host-adapter/routing.js +2 -0
  16. package/dist/dsh/host-adapter/routing.js.map +1 -1
  17. package/dist/dsh/lifecycle-memory.d.ts.map +1 -1
  18. package/dist/dsh/lifecycle-memory.js +7 -2
  19. package/dist/dsh/lifecycle-memory.js.map +1 -1
  20. package/dist/dsh/lisp/worker.d.ts.map +1 -1
  21. package/dist/dsh/lisp/worker.js +29 -31
  22. package/dist/dsh/lisp/worker.js.map +1 -1
  23. package/dist/dsh/memory-sidebar.d.ts +63 -0
  24. package/dist/dsh/memory-sidebar.d.ts.map +1 -0
  25. package/dist/dsh/memory-sidebar.js +221 -0
  26. package/dist/dsh/memory-sidebar.js.map +1 -0
  27. package/dist/dsh/task-completion-host.d.ts.map +1 -1
  28. package/dist/dsh/task-completion-host.js +33 -6
  29. package/dist/dsh/task-completion-host.js.map +1 -1
  30. package/dist/dsh/task-completion.d.ts +22 -0
  31. package/dist/dsh/task-completion.d.ts.map +1 -1
  32. package/dist/dsh/task-completion.js +54 -4
  33. package/dist/dsh/task-completion.js.map +1 -1
  34. package/dist/locale/en.json +1 -1
  35. package/dist/locale/ja.json +1 -1
  36. package/dist/locale/ko.json +1 -1
  37. package/dist/locale/zh-CN.json +1 -1
  38. package/docs/lisp.md +7 -10
  39. package/docs/memory-evidence.md +4 -0
  40. package/lisp/supervisor.mjs +8 -19
  41. package/package.json +1 -1
  42. package/lisp/repository-owner.d.mts +0 -1
  43. package/lisp/repository-owner.mjs +0 -58
@@ -0,0 +1,221 @@
1
+ import { memoryTextDigest, redactDshSourceText } from '../context/memory-projection.js';
2
+ import { KiokukoError } from '../errors.js';
3
+ import { readEntry } from '../memory/entries.js';
4
+ import { readRevisionEvidence } from '../memory/evidence.js';
5
+ import { readEntryRevision } from '../memory/revisions.js';
6
+ import { isRetrievableEntry } from '../memory/hybrid-retrieval.js';
7
+ import { proposalDigest } from '../memory/replay-review.js';
8
+ import { readRepositoryLearning } from '../memory/repository-learning.js';
9
+ import { resolveProjectWorkspaceReadOnly } from '../memory/workspaces.js';
10
+ import { isNativeSubagent } from './native-subagent.js';
11
+ import { isKiokukoDshSource } from './plugin-source.js';
12
+ import { readMemoryReuseChecks } from './task-completion.js';
13
+ export const MEMORY_SIDEBAR_PATH = '/api/kiokuko.memory-sidebar';
14
+ const scopedSelections = new WeakMap();
15
+ const replaySelections = new WeakMap();
16
+ const states = new WeakMap();
17
+ /** Identity comes from the host-owned Session object, never a request parameter. */
18
+ export function observedMemoryInput(session) {
19
+ return session && states.get(session)?.observation;
20
+ }
21
+ /** Bind ranking data at the request fence. The exact frozen input still decides membership. */
22
+ export function noteScopedMemory(request, allowed, items) {
23
+ scopedSelections.set(request, new Map(items.flatMap(item => {
24
+ const text = allowed.get(`memory:memory:${item.entryId}`);
25
+ if (!text || !item.workspace)
26
+ return [];
27
+ return [[memoryTextDigest(text), { entryId: item.entryId, workspace: item.workspace,
28
+ revision: item.revision, reasons: [...item.selectionReasons] }]];
29
+ })));
30
+ }
31
+ export function noteReplayMemory(session, messageId, text, items) {
32
+ replaySelections.set(session, { messageId, digest: memoryTextDigest(text), items: items.map(item => ({ ...item, reasons: ['approved_replay_term_match'] })) });
33
+ }
34
+ /** Observe final native messages only. Keep identities and digests in memory, never the request or its evidence. */
35
+ function observedMemory(session, request, requestId, cwd) {
36
+ const items = new Map();
37
+ const scoped = scopedSelections.get(request);
38
+ const replay = replaySelections.get(session);
39
+ let repositoryDigest;
40
+ for (const message of request.messages ?? []) {
41
+ const source = message.source;
42
+ if (message.role !== 'user' || !isKiokukoDshSource(source) || source.form !== 'snapshot'
43
+ || !Array.isArray(source.sections) || source.sections.length !== 1 || !Array.isArray(message.content)
44
+ || message.content.length !== 1 || message.content[0]?.type !== 'text')
45
+ continue;
46
+ const section = source.sections[0];
47
+ if (typeof section?.name !== 'string' || typeof section.text !== 'string')
48
+ continue;
49
+ const content = message.content[0].text;
50
+ if (section.name.startsWith('memory:memory:') && content === section.text) {
51
+ const selected = scoped?.get(memoryTextDigest(section.text));
52
+ if (selected && section.name === `memory:memory:${selected.entryId}`)
53
+ items.set(selected.entryId, selected);
54
+ }
55
+ else if (section.name === 'memory:approved-replay' && replay && replay.messageId === message.id
56
+ && replay.digest === memoryTextDigest(section.text) && typeof content === 'string' && content.endsWith(`\n${section.text}`)) {
57
+ for (const item of replay.items)
58
+ items.set(item.entryId, items.get(item.entryId) ?? item);
59
+ }
60
+ else if (section.name === 'memory:repository-learning' && typeof content === 'string' && content.endsWith(`\n${section.text}`)) {
61
+ repositoryDigest = memoryTextDigest(section.text);
62
+ }
63
+ }
64
+ return { requestId, cwd, items: [...items.values()], ...(repositoryDigest ? { repositoryDigest } : {}) };
65
+ }
66
+ function replaySources(db, item) {
67
+ if (!db.prepare("SELECT 1 FROM sqlite_master WHERE name='replay_memory_entries'").get())
68
+ return [];
69
+ const row = db.prepare(`SELECT m.proposal_json, m.digest FROM replay_memory_entries r JOIN replay_memories m ON m.approval_key=r.memory_key
70
+ WHERE r.entry_id=? AND r.entry_revision=? AND m.workspace=?`).get(item.entryId, item.revision, item.workspace);
71
+ if (!row)
72
+ return [];
73
+ const proposal = JSON.parse(row.proposal_json);
74
+ if (proposalDigest(proposal) !== row.digest || proposal.source.workspace !== item.workspace)
75
+ return [];
76
+ return [
77
+ ...(proposal.request.evidenceRefs.length ? [{ kind: 'native_user_message', text: proposal.request.text, reference: proposal.request.evidenceRefs[0] }] : []),
78
+ ...proposal.attempts.flatMap(attempt => attempt.resultRef && attempt.outputExcerpt
79
+ ? [{ kind: 'native_tool_result', text: attempt.outputExcerpt, reference: attempt.resultRef }] : []),
80
+ ];
81
+ }
82
+ function readObservedEntry(db, item) {
83
+ let entry;
84
+ try {
85
+ entry = readEntry(db, { workspace: item.workspace, entryId: item.entryId });
86
+ }
87
+ catch (error) {
88
+ if (error instanceof KiokukoError && error.code === 'NOT_FOUND')
89
+ return undefined;
90
+ throw error;
91
+ }
92
+ if (entry.status === 'superseded' || !isRetrievableEntry(db, entry))
93
+ return undefined;
94
+ const revision = readEntryRevision(db, { workspace: item.workspace, entryId: item.entryId, revision: item.revision });
95
+ const title = redactDshSourceText(revision.title);
96
+ if (!title)
97
+ return undefined;
98
+ const evidence = readRevisionEvidence(db, item.entryId, item.revision, item.workspace);
99
+ const sources = evidence ? evidence.claims.flatMap(claim => claim.sources.map(source => ({
100
+ kind: source.kind, text: source.supportingText, reference: `native:${source.sessionId}:${source.sourceSeqs.join(',')}`,
101
+ }))) : replaySources(db, item);
102
+ const seen = new Set();
103
+ const safe = sources.flatMap(source => {
104
+ const text = redactDshSourceText(source.text);
105
+ const key = JSON.stringify([source.kind, source.reference, text]);
106
+ if (!text || seen.has(key))
107
+ return [];
108
+ seen.add(key);
109
+ return [{ ...source, text: text.slice(0, 2000), reference: redactDshSourceText(source.reference)?.slice(0, 512) ?? '' }];
110
+ });
111
+ return { id: item.entryId, revision: item.revision, title, text: redactDshSourceText(revision.summary ?? '')?.slice(0, 2000) ?? '',
112
+ reasons: item.reasons, sources: safe.slice(0, 12), references: [],
113
+ sourcesOmitted: safe.length > 12 || sources.some(source => source.text.length > 2000 || !redactDshSourceText(source.text)) };
114
+ }
115
+ async function readObservation(runtime, session, observation) {
116
+ return runtime.withDatabase(async (db) => {
117
+ const project = await resolveProjectWorkspaceReadOnly(db, observation.cwd, { allowDirectory: true });
118
+ if (!project)
119
+ return { state: 'unobserved' };
120
+ // The frozen request's fenced selection binds global/ecosystem entries to this session.
121
+ const items = observation.items.flatMap(item => item.workspace === project.workspace
122
+ || item.reasons.includes('global_origin') || item.reasons.includes('ecosystem_origin')
123
+ ? readObservedEntry(db, item) ?? [] : []);
124
+ for (const item of items) {
125
+ item.reuse = readMemoryReuseChecks(db, { workspace: project.workspace, sessionId: session.id, entryId: item.id, revision: item.revision })
126
+ .map(check => ({ ...check, description: redactDshSourceText(check.description)?.slice(0, 500) ?? '' }));
127
+ }
128
+ if (observation.repositoryDigest) {
129
+ const learning = readRepositoryLearning(db, project.repositoryRoot);
130
+ if (memoryTextDigest(learning.compact) === observation.repositoryDigest) {
131
+ for (const [index, point] of learning.points.entries()) {
132
+ const title = redactDshSourceText(point.lesson?.hypothesis ?? point.summary ?? '');
133
+ if (!title)
134
+ continue;
135
+ items.push({ id: `repository-learning:${index}`, title, text: '',
136
+ reasons: ['repository_learning'], sources: [], sourcesOmitted: false,
137
+ references: point.evidenceRefs.flatMap(ref => redactDshSourceText(ref) ?? []).slice(0, 12) });
138
+ }
139
+ }
140
+ }
141
+ return { state: 'observed', requestId: observation.requestId, items };
142
+ });
143
+ }
144
+ /** Mount on the authenticated DSH connection. No model tool or write endpoint. */
145
+ export function mountMemorySidebar(host, runtime) {
146
+ const connection = host.get('connection', false);
147
+ const lookup = (id) => host.get('sessions', false)?.get(id);
148
+ const stopEvents = host.on('session/event', (session, event) => {
149
+ if (event.type === 'user/message' && event.data?.source?.kind === 'user' && typeof event.data.id === 'string')
150
+ states.set(session, { requestId: event.data.id });
151
+ }, { global: true });
152
+ const stopStream = host.on('llm/stream', async function* (request, next) {
153
+ const session = !request.purpose && request.sessionId ? lookup(request.sessionId) : undefined;
154
+ const cwd = session?.header?.cwd;
155
+ if (!session || !cwd || isNativeSubagent({ session })) {
156
+ yield* next();
157
+ return;
158
+ }
159
+ let requestId;
160
+ for (let index = (request.messages?.length ?? 0) - 1; index >= 0; index--) {
161
+ const message = request.messages?.[index];
162
+ if (message?.role === 'user' && message.source?.kind === 'user') {
163
+ requestId = message.id;
164
+ break;
165
+ }
166
+ }
167
+ if (!requestId) {
168
+ yield* next();
169
+ return;
170
+ }
171
+ const state = states.get(session) ?? { requestId };
172
+ if (!states.has(session))
173
+ states.set(session, state);
174
+ let recorded = false;
175
+ for await (const chunk of next()) {
176
+ if (!recorded && (chunk.type !== 'finish' || !['error', 'aborted'].includes(chunk.reason?.kind))
177
+ && states.get(session) === state && requestId === state.requestId) {
178
+ try {
179
+ state.observation = observedMemory(session, request, requestId, cwd);
180
+ }
181
+ catch { /* A sidebar observation cannot affect model execution. */ }
182
+ recorded = true;
183
+ }
184
+ yield chunk;
185
+ }
186
+ }, { global: true, prepend: true });
187
+ const stopRoute = connection?.fetch?.register({
188
+ path: MEMORY_SIDEBAR_PATH, methods: ['GET'], requestBody: 'buffered',
189
+ async fetch(request) {
190
+ const headers = { 'cache-control': 'no-store', 'content-security-policy': "default-src 'none'" };
191
+ const reply = (body, status = 200) => Response.json(body, { status, headers });
192
+ if (request.method !== 'GET')
193
+ return reply({ code: 'invalid_method' }, 405);
194
+ const url = new URL(request.url);
195
+ const origin = request.headers.get('origin');
196
+ if (request.headers.get('sec-fetch-site') === 'cross-site' || (origin && origin !== url.origin))
197
+ return reply({ code: 'origin_mismatch' }, 403);
198
+ const id = url.searchParams.get('sessionId');
199
+ if (!id || id.length > 256 || /[\p{Cc}\p{Cf}]/u.test(id))
200
+ return reply({ code: 'invalid_session' }, 400);
201
+ try {
202
+ const session = lookup(id);
203
+ if (!session) {
204
+ const stored = await host.get('sessionPersistence', false)?.stat?.(id);
205
+ return stored?.header?.id === id ? reply({ state: 'unobserved' }) : reply({ code: 'session_unavailable' }, 404);
206
+ }
207
+ const state = states.get(session), observation = state?.observation;
208
+ if (session.id !== id || !observation || observation.cwd !== session.header?.cwd)
209
+ return reply({ state: 'unobserved' });
210
+ const view = await readObservation(runtime, session, observation);
211
+ return lookup(id) === session && states.get(session) === state && state.observation === observation && observation.cwd === session.header?.cwd
212
+ ? reply(view) : reply({ state: 'unobserved' });
213
+ }
214
+ catch {
215
+ return reply({ code: 'memory_unavailable' }, 503);
216
+ }
217
+ },
218
+ });
219
+ return () => { stopRoute?.(); stopStream(); stopEvents(); };
220
+ }
221
+ //# sourceMappingURL=memory-sidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-sidebar.js","sourceRoot":"","sources":["../../src/dsh/memory-sidebar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAEvF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,cAAc,EAA6B,MAAM,4BAA4B,CAAA;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAA;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAyB,MAAM,sBAAsB,CAAA;AAEnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,6BAA6B,CAAA;AAyChE,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAgD,CAAA;AACpF,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAA2E,CAAA;AAC/G,MAAM,MAAM,GAAG,IAAI,OAAO,EAAkB,CAAA;AAE5C,oFAAoF;AACpF,MAAM,UAAU,mBAAmB,CAAC,OAA4B;IAC9D,OAAO,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,CAAA;AACpD,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,OAAoC,EAAE,KAAmC;IACzH,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACzD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;QACzD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAA;QACvC,OAAO,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS;oBACjF,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAA;IACpE,CAAC,CAAC,CAAC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAgB,EAAE,SAAiB,EAAE,IAAY,EAAE,KAAkD;IACpI,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;AAChK,CAAC;AAED,oHAAoH;AACpH,SAAS,cAAc,CAAC,OAAgB,EAAE,OAAqB,EAAE,SAAiB,EAAE,GAAW;IAC7F,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAA;IAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC5C,IAAI,gBAAoC,CAAA;IACxC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;eACnF,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;eAClG,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM;YAAE,SAAQ;QAClF,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAClC,IAAI,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAQ;QACnF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACvC,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,OAAO,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YAC1E,MAAM,QAAQ,GAAG,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;YAC5D,IAAI,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,QAAQ,CAAC,OAAO,EAAE;gBAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC7G,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,wBAAwB,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE;eAC5F,MAAM,CAAC,MAAM,KAAK,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9H,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAA;QAC3F,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,4BAA4B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACjI,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACnD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AAC1G,CAAC;AAED,SAAS,aAAa,CAAC,EAAkB,EAAE,IAAqB;IAC9D,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,CAAA;IAClG,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;gEACuC,CAAC,CAAC,GAAG,CAA4C,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAC3J,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAyB,CAAA;IACtE,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IACtG,OAAO;QACL,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,qBAA8B,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtK,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,aAAa;YAChF,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,oBAA6B,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/G,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAkB,EAAE,IAAqB;IAClE,IAAI,KAAK,CAAA;IACT,IAAI,CAAC;QACH,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IAC7E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,SAAS,CAAA;QACjF,MAAM,KAAK,CAAA;IACb,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACrF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACrH,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IACtF,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvF,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,UAAU,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;KACvH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACpC,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAA;QACjE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAA;QACrC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACb,OAAO,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAC1H,CAAC,CAAC,CAAA;IACF,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE;QAChI,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE;QACjE,cAAc,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAA;AAChI,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAA6C,EAAE,OAAgB,EAAE,WAAwB;IACtH,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;QACrC,MAAM,OAAO,GAAG,MAAM,+BAA+B,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAA;QACpG,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;QAC5C,wFAAwF;QACxF,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;eAC/E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACtF,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAS,EAAE,CAAC;iBACxI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;QAC3G,CAAC;QACD,IAAI,WAAW,CAAC,gBAAgB,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,EAAE,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;YACnE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,gBAAgB,EAAE,CAAC;gBACxE,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;oBACvD,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;oBAClF,IAAI,CAAC,KAAK;wBAAE,SAAQ;oBACpB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,uBAAuB,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;wBAC9D,OAAO,EAAE,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK;wBACpE,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBACjG,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,CAAA;IACvE,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,kBAAkB,CAAC,IAAU,EAAE,OAA6C;IAC1F,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,CAAC,EAAU,EAAuB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;IACxF,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,OAAgB,EAAE,KAAkC,EAAE,EAAE;QACnG,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ;YAC3G,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IACrD,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACpB,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,SAAS,CAAC,EAAE,OAAqB,EAAE,IAA8B;QAC7G,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC7F,MAAM,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,CAAA;QAChC,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;YAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAAC,OAAM;QAAC,CAAC;QAChF,IAAI,SAA6B,CAAA;QACjC,KAAK,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAA;YACzC,IAAI,OAAO,EAAE,IAAI,KAAK,MAAM,IAAK,OAAO,CAAC,MAA4B,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;gBAAC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;gBAAC,MAAK;YAAC,CAAC;QAC3H,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAAC,OAAM;QAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,CAAA;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACpD,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;mBAC3F,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpE,IAAI,CAAC;oBAAC,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,0DAA0D,CAAC,CAAC;gBACjJ,QAAQ,GAAG,IAAI,CAAA;YACjB,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IACnC,MAAM,SAAS,GAAG,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC;QAC5C,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,UAAU;QACpE,KAAK,CAAC,KAAK,CAAC,OAAgB;YAC1B,MAAM,OAAO,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,CAAA;YAChG,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;YACtF,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK;gBAAE,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,GAAG,CAAC,CAAA;YAC3E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAChC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC5C,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,YAAY,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC;gBAC7F,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAA;YAChD,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YAC5C,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAA;YACxG,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;gBAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;oBACtE,OAAO,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,EAAE,GAAG,CAAC,CAAA;gBACjH,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,WAAW,CAAA;gBACnE,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG;oBAAE,OAAO,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;gBACvH,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;gBACjE,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,IAAI,WAAW,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG;oBAC5I,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;YAClD,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,GAAG,CAAC,CAAA;YAAC,CAAC;QAC/D,CAAC;KACF,CAAC,CAAA;IACF,OAAO,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAA,CAAC,CAAC,CAAA;AAC5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"task-completion-host.d.ts","sourceRoot":"","sources":["../../src/dsh/task-completion-host.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAA;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGvD,OAAO,EAAyE,sBAAsB,EACkB,MAAM,sBAAsB,CAAA;AACpJ,OAAO,EAAsC,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAIjG,UAAU,eAAgB,SAAQ,sBAAsB;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE;AAC7J,UAAU,OAAO;IACf,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,IAAI,CAAA;KAAE,CAAA;IAC1C,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,IAAI,CAAA;CACpG;AACD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAA;IACvB,OAAO,CAAC,SAAS,EAAE,eAAe,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,GAAG,SAAS,CAAA;IACzH,OAAO,CAAC,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EACzF,SAAS,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAClJ;AAYD,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,IAAI,CA6ElF"}
1
+ {"version":3,"file":"task-completion-host.d.ts","sourceRoot":"","sources":["../../src/dsh/task-completion-host.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAA;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAOvD,OAAO,EAAgG,sBAAsB,EACL,MAAM,sBAAsB,CAAA;AACpJ,OAAO,EAAsC,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAIjG,UAAU,eAAgB,SAAQ,sBAAsB;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE;AAC7J,UAAU,OAAO;IACf,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,IAAI,CAAA;KAAE,CAAA;IAC1C,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,IAAI,CAAA;CACpG;AACD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAA;IACvB,OAAO,CAAC,SAAS,EAAE,eAAe,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,GAAG,SAAS,CAAA;IACzH,OAAO,CAAC,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EACzF,SAAS,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAClJ;AAYD,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,IAAI,CAoGlF"}
@@ -4,7 +4,11 @@ import { ProtocolRecipeSchema } from './guardrail/contracts.js';
4
4
  import * as z from 'zod/v4';
5
5
  import { KiokukoError } from '../errors.js';
6
6
  import { foregroundNativeCommand } from './memory-application.js';
7
- import { assessTaskCompletion, beginTaskCompletionExecution, bindTaskCriterion, CompletionMethodSchema, finishTaskCompletionExecution, readTaskCriterionBindingReplay, saveTaskCompletionReceipt, taskCompletionBindingGuide } from './task-completion.js';
7
+ import { observedMemoryInput } from './memory-sidebar.js';
8
+ import { capturePolicy } from '../memory/capture-policy.js';
9
+ import { readEntry } from '../memory/entries.js';
10
+ import { isRetrievableEntry } from '../memory/hybrid-retrieval.js';
11
+ import { AppliedMemoriesSchema, assessTaskCompletion, beginTaskCompletionExecution, bindTaskCriterion, CompletionMethodSchema, finishTaskCompletionExecution, readTaskCriterionBindingReplay, saveTaskCompletionReceipt, taskCompletionBindingGuide } from './task-completion.js';
8
12
  import { authorizeTaskLease } from './task-state.js';
9
13
  import { captureExecutionTaskLease } from './task-authority-context.js';
10
14
  import { withImmediateTransaction } from '../db/transaction.js';
@@ -15,7 +19,7 @@ const input = z.discriminatedUnion('action', [
15
19
  const transport = z.object({ action: z.enum(['status', 'bind']), criterionId: z.string().optional(),
16
20
  method: z.object({ kind: z.literal('native_command'), command: z.string(),
17
21
  cwd: z.string(), sourcePaths: z.array(z.string()).min(1).max(32).describe('Required: at least one current repository-relative implementation/test path; include an asserted artifact.'),
18
- protocol: ProtocolRecipeSchema.optional(),
22
+ protocol: ProtocolRecipeSchema.optional(), appliedMemories: AppliedMemoriesSchema.optional().describe('Optional exact entryId/revision pairs from status.deliveredMemories. Include only a memory whose use this check tests.'),
19
23
  assertion: z.enum(['exit_zero', 'selected_tests_pass', 'output_matches', 'artifact_matches']).describe('Match the criterion evidence. selected_tests_pass needs complete Node TAP: node --test --test-reporter=tap <test files>. output_matches requires expectedOutput; artifact_matches requires artifactPath, artifactSha256, and artifact in sourcePaths. Coding never accepts exit_zero alone.').optional(), expectedOutput: z.string().optional(), artifactPath: z.string().optional(), artifactSha256: z.string().optional() }).strict().optional(),
20
24
  }).strict();
21
25
  /** A model proposes a check; the host owns identity, approval, observation and verdict. */
@@ -23,7 +27,7 @@ export function mountTaskCompletion(ctx, host) {
23
27
  const pending = new WeakMap();
24
28
  const disposers = [];
25
29
  disposers.push(ctx.tools.register({ name: 'task_completion', modelFacing: true,
26
- description: 'Inspect task completion criteria or propose one exact check before running it. Bind never runs a command or marks a criterion successful. The host checks approval and actual evidence. Supply command, cwd, nonempty sourcePaths and assertion. Read status for criterion-specific requirements.',
30
+ description: 'Inspect task completion criteria or propose one exact check before running it. Bind never runs a command or marks a criterion successful. The host checks approval and actual evidence. Supply command, cwd, nonempty sourcePaths and assertion. Read status for criterion-specific requirements. To record memory reuse, optionally add method.appliedMemories from status.deliveredMemories only when the check tests its application.',
27
31
  parameters: JSON.parse(JSON.stringify(z.toJSONSchema(transport, { unrepresentable: 'any' }))),
28
32
  output: { schema: {}, render: (_, value) => [{ type: 'text', text: JSON.stringify(value) }] },
29
33
  execute: async (args, execution) => {
@@ -37,8 +41,16 @@ export function mountTaskCompletion(ctx, host) {
37
41
  throw completionInputError(validation.error.issues.map(issue => ({ field: issue.path.map(String).join('.') || 'input',
38
42
  reason: issue.code === 'custom' ? issue.message : 'Missing, invalid or unexpected field for this action/method' })));
39
43
  const parsed = validation.data;
44
+ const session = identity.agent?.session;
45
+ const observed = session?.id === identity.sessionId ? observedMemoryInput(session) : undefined;
40
46
  if (parsed.action === 'status')
41
- return host.runtime.withDatabase(db => ({ ...saveTaskCompletionReceipt(db, identity.runId), bindingGuide: taskCompletionBindingGuide(db, identity.runId) }));
47
+ return host.runtime.withDatabase(db => ({
48
+ ...saveTaskCompletionReceipt(db, identity.runId), bindingGuide: taskCompletionBindingGuide(db, identity.runId),
49
+ deliveredMemories: (observed?.items ?? []).map(({ entryId, revision }) => ({ entryId, revision })),
50
+ }));
51
+ const applied = parsed.method.appliedMemories;
52
+ if (applied && !applied.every(item => observed?.items.some(entry => entry.entryId === item.entryId && entry.revision === item.revision)))
53
+ throw new KiokukoError('CONFLICT', 'Memory reuse requires the exact revision sent to the model for this request');
42
54
  const criterion = await host.runtime.withDatabase(db => {
43
55
  const criteria = assessTaskCompletion(db, identity.runId).criteria;
44
56
  const exact = criteria.find(item => item.criterionId === parsed.criterionId);
@@ -60,8 +72,23 @@ export function mountTaskCompletion(ctx, host) {
60
72
  execution.signal.throwIfAborted();
61
73
  if (host.resolve(execution)?.runId !== identity.runId)
62
74
  throw new KiokukoError('CONFLICT', 'Native task changed during completion review');
63
- return host.runtime.withDatabase(db => bindTaskCriterion(db, { runId: identity.runId, callId: execution.callId,
64
- criterionId: criterion.criterionId, method: parsed.method, approved })).catch(error => {
75
+ return host.runtime.withDatabase(db => {
76
+ if (applied) {
77
+ const run = db.prepare('SELECT workspace, status FROM ledger_runs WHERE run_id=? AND dsh_session_id=?')
78
+ .get(identity.runId, identity.sessionId);
79
+ if (!run || run.status !== 'active' || observedMemoryInput(session) !== observed ||
80
+ capturePolicy(db, run.workspace, identity.sessionId).mode !== 'allowed')
81
+ throw new KiokukoError('CONFLICT', 'Memory reuse is unavailable for this task or the model input changed');
82
+ for (const item of applied) {
83
+ const selection = observed.items.find(entry => entry.entryId === item.entryId);
84
+ const entry = readEntry(db, { workspace: selection.workspace, entryId: item.entryId });
85
+ if (entry.revision !== item.revision || !isRetrievableEntry(db, entry))
86
+ throw new KiokukoError('CONFLICT', 'Applied memory changed or became unavailable');
87
+ }
88
+ }
89
+ return bindTaskCriterion(db, { runId: identity.runId, callId: execution.callId,
90
+ criterionId: criterion.criterionId, method: parsed.method, approved });
91
+ }).catch(error => {
65
92
  if (error instanceof KiokukoError && error.code === 'VALIDATION_ERROR')
66
93
  throw completionInputError([{ field: typeof error.details.field === 'string' ? error.details.field : 'method',
67
94
  reason: error.message, ...(typeof error.details.expected === 'string' ? { expected: error.details.expected } : {}) }]);
@@ -1 +1 @@
1
- {"version":3,"file":"task-completion-host.js","sourceRoot":"","sources":["../../src/dsh/task-completion-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-completion-host.js","sourceRoot":"","sources":["../../src/dsh/task-completion-host.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,10 @@ export declare const CompletionConfig: z.ZodObject<{
9
9
  }>>;
10
10
  }, z.core.$strict>;
11
11
  export type CompletionMode = z.infer<typeof CompletionConfig>["mode"];
12
+ export declare const AppliedMemoriesSchema: z.ZodArray<z.ZodObject<{
13
+ entryId: z.ZodString;
14
+ revision: z.ZodNumber;
15
+ }, z.core.$strict>>;
12
16
  export declare const CompletionMethodSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
13
17
  kind: z.ZodLiteral<"native_command">;
14
18
  command: z.ZodString;
@@ -26,6 +30,10 @@ export declare const CompletionMethodSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
26
30
  implementationPaths: z.ZodArray<z.ZodString>;
27
31
  testPaths: z.ZodArray<z.ZodString>;
28
32
  }, z.core.$strict>>;
33
+ appliedMemories: z.ZodOptional<z.ZodArray<z.ZodObject<{
34
+ entryId: z.ZodString;
35
+ revision: z.ZodNumber;
36
+ }, z.core.$strict>>>;
29
37
  expectedOutput: z.ZodOptional<z.ZodString>;
30
38
  artifactPath: z.ZodOptional<z.ZodString>;
31
39
  artifactSha256: z.ZodOptional<z.ZodString>;
@@ -110,6 +118,20 @@ export declare function finishTaskCompletionExecution(database: SqliteDatabase,
110
118
  }): void;
111
119
  export declare function assessTaskCompletion(database: SqliteDatabase, runId: string): CompletionAssessment;
112
120
  export declare function saveTaskCompletionReceipt(database: SqliteDatabase, runId: string): CompletionAssessment;
121
+ export interface MemoryReuseCheck {
122
+ state: "verified" | "needs_recheck";
123
+ runId: string;
124
+ criterionId: string;
125
+ description: string;
126
+ evidenceRef: string;
127
+ }
128
+ /** Start with actual passing receipts. Reassess the bound criterion against the current sources. */
129
+ export declare function readMemoryReuseChecks(database: SqliteDatabase, input: {
130
+ workspace: string;
131
+ sessionId: string;
132
+ entryId: string;
133
+ revision: number;
134
+ }): MemoryReuseCheck[];
113
135
  export declare function taskCompletionBlocksClose(assessment: CompletionAssessment): boolean;
114
136
  /** Include the consumer configuration and runtime alongside selected source paths. */
115
137
  export declare function completionSourceDigest(database: SqliteDatabase, runId: string, root: string, paths: string[]): string;
@@ -1 +1 @@
1
- {"version":3,"file":"task-completion.d.ts","sourceRoot":"","sources":["../../src/dsh/task-completion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-completion.d.ts","sourceRoot":"","sources":["../../src/dsh/task-completion.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,10 @@ const relativePath = z
26
26
  .refine((value) => !path.isAbsolute(value) &&
27
27
  !value.split(/[\\/]/u).includes("..") &&
28
28
  !/[\p{Cc}\p{Cf}]/u.test(value));
29
+ export const AppliedMemoriesSchema = z.array(z.object({
30
+ entryId: z.string().min(1).max(256),
31
+ revision: z.number().int().positive(),
32
+ }).strict()).min(1).max(8);
29
33
  export const CompletionMethodSchema = z.discriminatedUnion("kind", [
30
34
  z
31
35
  .object({
@@ -40,6 +44,7 @@ export const CompletionMethodSchema = z.discriminatedUnion("kind", [
40
44
  "artifact_matches",
41
45
  ]),
42
46
  protocol: ProtocolRecipeSchema.optional(),
47
+ appliedMemories: AppliedMemoriesSchema.optional(),
43
48
  expectedOutput: text.optional(),
44
49
  artifactPath: relativePath.optional(),
45
50
  artifactSha256: z
@@ -49,6 +54,13 @@ export const CompletionMethodSchema = z.discriminatedUnion("kind", [
49
54
  })
50
55
  .strict()
51
56
  .superRefine((value, ctx) => {
57
+ if (value.appliedMemories && (value.assertion === "exit_zero" ||
58
+ new Set(value.appliedMemories.map(item => item.entryId)).size !== value.appliedMemories.length))
59
+ ctx.addIssue({
60
+ code: "custom",
61
+ path: ["appliedMemories"],
62
+ message: "Memory reuse requires distinct entries and a test, output or artifact assertion",
63
+ });
52
64
  if (value.protocol && value.assertion !== "selected_tests_pass")
53
65
  ctx.addIssue({
54
66
  code: "custom",
@@ -263,7 +275,8 @@ export function beginTaskCompletionExecution(database, input) {
263
275
  criterion.revision === row.criterion_revision));
264
276
  });
265
277
  const coding = readCodingWorkflow(database, input.runId);
266
- const assessment = coding
278
+ const hasReuse = matching.some(row => CompletionMethodSchema.parse(JSON.parse(row.method_json)).appliedMemories);
279
+ const assessment = coding || hasReuse
267
280
  ? assessTaskCompletion(database, input.runId)
268
281
  : undefined;
269
282
  const goalReady = coding?.definition?.items.every((item) => item.criterionIds.every((id) => assessment.criteria.some((criterion) => criterion.criterionId === `coding:${coding.workflowId}:${id}` &&
@@ -278,7 +291,7 @@ export function beginTaskCompletionExecution(database, input) {
278
291
  matching.find(isGoal) ??
279
292
  matching[0])
280
293
  : (matching.find((row) => row.criterion_id === coding.protocol.criterionId) ?? matching[0])
281
- : matching[0];
294
+ : ((hasReuse ? matching.find(row => assessment.criteria.some(criterion => criterion.criterionId === row.criterion_id && criterion.state !== "satisfied")) : undefined) ?? matching[0]);
282
295
  if (!current)
283
296
  return false;
284
297
  const method = CompletionMethodSchema.parse(JSON.parse(current.method_json));
@@ -350,6 +363,10 @@ export function finishTaskCompletionExecution(database, input) {
350
363
  : method.assertion === "artifact_matches"
351
364
  ? artifactMatches(source.repositoryRoot, method)
352
365
  : true;
366
+ const result = input.result;
367
+ const observed = isHostExecutionResult(result);
368
+ const completeObservation = observed && result.value.processStarted === true
369
+ && result.value.processStopped === true && result.value.outputComplete === true;
353
370
  const outcome = sourceDigest !== row.source_digest ||
354
371
  (coding &&
355
372
  (row.coding_scope !== coding.scopeVersion ||
@@ -362,8 +379,8 @@ export function finishTaskCompletionExecution(database, input) {
362
379
  response?.value?.kind === "background" ||
363
380
  (Number.isSafeInteger(exit) && exit !== 0)
364
381
  ? "failed"
365
- : ((coding || method.assertion === "output_matches") &&
366
- !isHostExecutionResult(input.result)) ||
382
+ : ((coding || method.assertion === "output_matches") && !observed) ||
383
+ (method.appliedMemories && !completeObservation) ||
367
384
  !Number.isSafeInteger(exit) ||
368
385
  (method.assertion === "exit_zero" &&
369
386
  hasShellPipeline(method.command)) ||
@@ -605,6 +622,39 @@ export function saveTaskCompletionReceipt(database, runId) {
605
622
  .run(runId, JSON.stringify(assessment), new Date().toISOString());
606
623
  return assessment;
607
624
  }
625
+ /** Start with actual passing receipts. Reassess the bound criterion against the current sources. */
626
+ export function readMemoryReuseChecks(database, input) {
627
+ const rows = database.prepare(`
628
+ SELECT r.run_id, b.criterion_id, e.call_id
629
+ FROM ledger_runs r
630
+ JOIN dsh_completion_receipts p ON p.run_id=r.run_id
631
+ JOIN dsh_completion_bindings b ON b.run_id=r.run_id AND b.approved=1
632
+ JOIN json_each(p.assessment_json,'$.criteria') AS c
633
+ ON json_extract(c.value,'$.criterionId')=b.criterion_id AND json_extract(c.value,'$.state') IN ('satisfied','stale')
634
+ JOIN dsh_completion_executions e ON e.run_id=r.run_id AND e.method_digest=b.method_digest
635
+ AND e.call_id=json_extract(c.value,'$.evidenceRef') AND e.outcome='passed' AND e.result_digest IS NOT NULL
636
+ WHERE r.workspace=? AND (r.status='completed' OR (r.status='active' AND r.dsh_session_id=?))
637
+ AND NOT EXISTS (SELECT 1 FROM memory_capture_exclusions x
638
+ WHERE x.workspace=r.workspace AND x.native_session_id=r.dsh_session_id)
639
+ AND EXISTS (SELECT 1 FROM json_each(b.method_json,'$.appliedMemories') m
640
+ WHERE json_extract(m.value,'$.entryId')=? AND json_extract(m.value,'$.revision')=?)
641
+ ORDER BY e.updated_at DESC, r.run_id, b.criterion_id LIMIT 8
642
+ `).all(input.workspace, input.sessionId, input.entryId, input.revision);
643
+ const assessments = new Map();
644
+ return rows.flatMap(row => {
645
+ let assessment = assessments.get(row.run_id);
646
+ if (!assessment) {
647
+ assessment = assessTaskCompletion(database, row.run_id);
648
+ assessments.set(row.run_id, assessment);
649
+ }
650
+ const criterion = assessment.criteria.find(item => item.criterionId === row.criterion_id);
651
+ if (!criterion || criterion.evidenceRef !== row.call_id ||
652
+ (criterion.state !== "satisfied" && criterion.state !== "stale"))
653
+ return [];
654
+ return [{ runId: row.run_id, criterionId: row.criterion_id, description: criterion.description,
655
+ state: criterion.state === "satisfied" ? "verified" : "needs_recheck", evidenceRef: row.call_id }];
656
+ });
657
+ }
608
658
  export function taskCompletionBlocksClose(assessment) {
609
659
  return (assessment.managedOperationsReady === false ||
610
660
  (assessment.mode === "enforce" &&