kiokuko-dsh 0.1.25 → 0.1.27

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.
@@ -6,6 +6,7 @@ export interface DshModelMessage {
6
6
  readonly role: 'user';
7
7
  readonly content: string;
8
8
  readonly source: DshMessageSource['kind'];
9
+ readonly name: string;
9
10
  }
10
11
  export interface DshDirectiveSourceSelection {
11
12
  readonly routeSkillNames: readonly string[];
@@ -22,5 +23,8 @@ export declare function injectDshContext(input: {
22
23
  readonly advisoryEvidence?: DshMessageSourceInput['advisoryEvidence'];
23
24
  readonly directive?: DshMessageSourceInput['directive'];
24
25
  readonly runtime?: Pick<DshRuntime, 'withDatabase'>;
26
+ readonly soulInSystemPrompt?: boolean;
27
+ /** Native DSH already carries the human message; emit only additional intake facts. */
28
+ readonly userTaskInConversation?: boolean;
25
29
  }): Promise<readonly DshModelMessage[]>;
26
30
  //# sourceMappingURL=context-injection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-injection.d.ts","sourceRoot":"","sources":["../../src/dsh/context-injection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAEvG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAQ3D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3C,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAA;CACnD;AAOD,sFAAsF;AACtF,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,GAAG,UAAU,CAAC,GAAG,2BAA2B,CAWpI;AAmBD,4EAA4E;AAC5E,wBAAsB,gBAAgB,CAAC,KAAK,EAAE;IAC5C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACnD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAA;IACrE,QAAQ,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAA;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;CACpD,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAqBtC"}
1
+ {"version":3,"file":"context-injection.d.ts","sourceRoot":"","sources":["../../src/dsh/context-injection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAEvG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAQ3D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3C,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAA;CACnD;AAOD,sFAAsF;AACtF,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,GAAG,UAAU,CAAC,GAAG,2BAA2B,CAWpI;AAiCD,4EAA4E;AAC5E,wBAAsB,gBAAgB,CAAC,KAAK,EAAE;IAC5C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACnD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAA;IACrE,QAAQ,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAA;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;IACnD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC,uFAAuF;IACvF,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAC1C,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAuBtC"}
@@ -20,15 +20,32 @@ export function selectDshDirectiveSources(directive) {
20
20
  expertRefs: Object.freeze(expertRefs),
21
21
  });
22
22
  }
23
- function sourceInput(prepared, fallbackTask, routeSkillNames, expertRefs, directive) {
23
+ function sourceInput(prepared, fallbackTask, routeSkillNames, expertRefs, directive, userTaskInConversation) {
24
24
  if (prepared.intake.status !== 'ready' && prepared.intake.status !== 'exhausted')
25
25
  throw new Error('Cannot inject context before intake is finalized');
26
26
  if (prepared.nextAction !== 'proceed')
27
27
  throw new Error('Cannot inject context when the host gate did not permit proceeding');
28
28
  const profile = prepared.intake.profile;
29
- const finalized = [profile.target, profile.expected, profile.constraints].filter((value) => value !== null && value.length > 0).join('\n');
29
+ const fields = [profile.target, profile.expected, profile.constraints].filter((value) => value !== null && value.length > 0);
30
+ // Native DSH owns the original human message, including its attachments.
31
+ // Only additional intake facts belong in the plugin's context snapshot.
32
+ const original = fallbackTask.trim();
33
+ const additional = userTaskInConversation ? [...new Set(fields.map(value => {
34
+ const text = value.trim();
35
+ if (original.length === 0)
36
+ return text;
37
+ if (text === original)
38
+ return '';
39
+ if (text.startsWith(`${original}\n`) || text.startsWith(`${original}\r\n`))
40
+ return text.slice(original.length).trimStart();
41
+ return text;
42
+ }).filter(Boolean))] : fields;
43
+ const finalized = additional.join('\n');
44
+ const task = userTaskInConversation
45
+ ? (finalized.length === 0 ? '' : `Finalized intake:\n${finalized}`)
46
+ : (finalized.length === 0 || finalized === fallbackTask ? fallbackTask : `${fallbackTask}\n\nFinalized intake:\n${finalized}`);
30
47
  return {
31
- task: finalized.length === 0 || finalized === fallbackTask ? fallbackTask : `${fallbackTask}\n\nFinalized intake:\n${finalized}`,
48
+ task,
32
49
  intakeStatus: prepared.intake.status,
33
50
  nextAction: 'proceed',
34
51
  memoryPolicy: prepared.memoryPolicy,
@@ -51,7 +68,8 @@ export async function injectDshContext(input) {
51
68
  });
52
69
  };
53
70
  const sources = await buildDshMessageSources({
54
- ...sourceInput(input.prepared, input.task, input.routeSkillNames ?? [], input.expertRefs ?? [], input.directive),
71
+ ...sourceInput(input.prepared, input.task, input.routeSkillNames ?? [], input.expertRefs ?? [], input.directive, input.userTaskInConversation === true),
72
+ ...(input.soulInSystemPrompt === undefined ? {} : { soulInSystemPrompt: input.soulInSystemPrompt }),
55
73
  ...(input.advisoryEvidence === undefined ? {} : { advisoryEvidence: input.advisoryEvidence }),
56
74
  ...(assertMemoryCurrent === undefined ? {} : { assertMemoryCurrent }),
57
75
  });
@@ -59,6 +77,7 @@ export async function injectDshContext(input) {
59
77
  role: 'user',
60
78
  content: source.text,
61
79
  source: source.kind,
80
+ name: source.name,
62
81
  })));
63
82
  }
64
83
  //# sourceMappingURL=context-injection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-injection.js","sourceRoot":"","sources":["../../src/dsh/context-injection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-injection.js","sourceRoot":"","sources":["../../src/dsh/context-injection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { DshModelMessage } from './context-injection.js';
2
+ import type { DshLogEvent } from './session-memory-finalizer.js';
3
+ interface ContextSession {
4
+ readonly surface?: {
5
+ readonly nodes: readonly number[];
6
+ };
7
+ readonly eventAt?: (seq: number) => DshLogEvent | undefined;
8
+ readonly snapshotEvents?: () => readonly DshLogEvent[];
9
+ }
10
+ /**
11
+ * Emit only changed named fragments. Delivery is proven by the native surface
12
+ * or the current claimed/queued batch, never by an earlier projection attempt.
13
+ * Rebuilding from the surface also restores needed fragments after compaction,
14
+ * resume, or plugin reload without a second persistence/cache owner.
15
+ */
16
+ export declare function projectDshContext(messages: readonly DshModelMessage[], session: ContextSession, pending?: readonly unknown[]): readonly unknown[];
17
+ export {};
18
+ //# sourceMappingURL=context-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-projection.d.ts","sourceRoot":"","sources":["../../src/dsh/context-projection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAEhE,UAAU,cAAc;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAA;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAA;IAC3D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,SAAS,WAAW,EAAE,CAAA;CACvD;AA6BD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,SAAS,OAAO,EAAO,GAC/B,SAAS,OAAO,EAAE,CA4BpB"}
@@ -0,0 +1,68 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ function record(value) {
3
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
4
+ ? value : undefined;
5
+ }
6
+ /** Read retained messages, excluding chunk history and compacted-away instructions. */
7
+ function retainedEvents(session) {
8
+ if (session.surface !== undefined && session.eventAt !== undefined) {
9
+ return session.surface.nodes.flatMap(seq => {
10
+ const event = session.eventAt(seq);
11
+ return event === undefined ? [] : [event];
12
+ });
13
+ }
14
+ const nodes = [];
15
+ for (const event of session.snapshotEvents?.() ?? []) {
16
+ if (event.surfaceOp === 'append')
17
+ nodes.push(event);
18
+ else if (event.surfaceOp !== undefined) {
19
+ const replacement = event.surfaceOp;
20
+ const start = nodes.findIndex(node => node.seq === replacement.start);
21
+ const end = nodes.findIndex(node => node.seq === replacement.end);
22
+ if (start < 0 || end < start)
23
+ throw new Error('Kiokuko context projection encountered an invalid session replacement');
24
+ nodes.splice(start, end - start + 1, event);
25
+ }
26
+ }
27
+ return nodes;
28
+ }
29
+ /**
30
+ * Emit only changed named fragments. Delivery is proven by the native surface
31
+ * or the current claimed/queued batch, never by an earlier projection attempt.
32
+ * Rebuilding from the surface also restores needed fragments after compaction,
33
+ * resume, or plugin reload without a second persistence/cache owner.
34
+ */
35
+ export function projectDshContext(messages, session, pending = []) {
36
+ const latest = new Map();
37
+ for (const value of [
38
+ ...retainedEvents(session).filter(event => event.type === 'user/message').map(event => event.data),
39
+ ...pending,
40
+ ]) {
41
+ const message = record(value);
42
+ const source = record(message?.source);
43
+ if (message?.role !== 'user' || source?.kind !== 'plugin' || source.plugin !== 'kiokuko-dsh'
44
+ || source.form !== 'snapshot' || !Array.isArray(source.sections) || source.sections.length !== 1)
45
+ continue;
46
+ const section = record(source.sections[0]);
47
+ const content = message.content;
48
+ if (typeof section?.name !== 'string' || typeof section.text !== 'string'
49
+ || !Array.isArray(content) || content.length !== 1)
50
+ continue;
51
+ const block = record(content[0]);
52
+ if (block?.type === 'text' && block.text === section.text)
53
+ latest.set(section.name, section.text);
54
+ }
55
+ return messages.flatMap(message => {
56
+ const name = `${message.source}:${message.name}`;
57
+ if (latest.get(name) === message.content)
58
+ return [];
59
+ latest.set(name, message.content);
60
+ return [{
61
+ id: randomUUID(),
62
+ role: message.role,
63
+ content: [{ type: 'text', text: message.content }],
64
+ source: { kind: 'plugin', plugin: 'kiokuko-dsh', form: 'snapshot', sections: [{ name, text: message.content }] },
65
+ }];
66
+ });
67
+ }
68
+ //# sourceMappingURL=context-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-projection.js","sourceRoot":"","sources":["../../src/dsh/context-projection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"host-adapter.d.ts","sourceRoot":"","sources":["../../src/dsh/host-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EAExB,MAAM,kBAAkB,CAAA;AAkBzB,OAAO,EAA0C,KAAK,MAAM,EAAgD,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEvK,OAAO,EAAqB,KAAK,eAAe,EAA+B,MAAM,sBAAsB,CAAA;AAmG3G,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IAClF,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9D;AAMD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAA;IACvC,oEAAoE;IACpE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACtC;AAoOD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,qBAA0B,GAAG,cAAc,CA+yDtG;AAsBD,OAAO,EAAE,wBAAwB,EAAE,CAAA"}
1
+ {"version":3,"file":"host-adapter.d.ts","sourceRoot":"","sources":["../../src/dsh/host-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EAExB,MAAM,kBAAkB,CAAA;AAkBzB,OAAO,EAA0C,KAAK,MAAM,EAAgD,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEvK,OAAO,EAAqB,KAAK,eAAe,EAA+B,MAAM,sBAAsB,CAAA;AAoG3G,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IAClF,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9D;AAMD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAA;IACvC,oEAAoE;IACpE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACtC;AAmOD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,qBAA0B,GAAG,cAAc,CA8xDtG;AAsBD,OAAO,EAAE,wBAAwB,EAAE,CAAA"}
@@ -1,6 +1,5 @@
1
1
  import { fileURLToPath } from 'node:url';
2
2
  import { realpathSync } from 'node:fs';
3
- import { randomUUID } from 'node:crypto';
4
3
  import { KIOKUKO_DSH_HOST_SERVICE, } from './composition.js';
5
4
  import { DshRuntime } from './runtime.js';
6
5
  import { withImmediateTransaction } from '../db/transaction.js';
@@ -22,6 +21,7 @@ import { STANDARD_SKILL_MANIFESTS } from './standard-skills.js';
22
21
  import { canonicalContentHash, compareCanonicalStrings } from '../serialization/validate.js';
23
22
  import { KiokukoError } from '../errors.js';
24
23
  import { injectDshContext, selectDshDirectiveSources } from './context-injection.js';
24
+ import { projectDshContext } from './context-projection.js';
25
25
  import { projectDshDirective } from './directive-projection.js';
26
26
  import { submitOdunoIdeal, submitEnnoPlan, submitEnnoAdvice, readPendingEnnoAdvice, reportEnnoWork, finishEnno, submitOdunoMeditation, answerEnno, prepareEnnoVerification, stateForSnapshot, inapplicableEnnoState } from '../enno-oduno/service.js';
27
27
  import { claimExecutionLeaseInTransaction, readEnnoSnapshot, terminalizeLedgerRunInTransaction } from '../enno-oduno/store.js';
@@ -758,7 +758,7 @@ export function createDshHostAdapter(ctx, options = {}) {
758
758
  return { kind: 'reject' };
759
759
  }
760
760
  }
761
- const messages = await contextMessages(event, result);
761
+ const messages = await contextMessages(event, nativeDecision.messages);
762
762
  return { ...nativeDecision, messages: [...executionSupport.projectMessages(event.sessionId, nativeDecision.messages), ...messages] };
763
763
  }
764
764
  catch {
@@ -788,16 +788,6 @@ export function createDshHostAdapter(ctx, options = {}) {
788
788
  const item = currentSession(sessionId);
789
789
  return item?.agentId === agentId && (turn === undefined || item.turn === turn) && matchesNativeIdentity(item) ? item : undefined;
790
790
  };
791
- const contextInjectionKey = (item, turn, state, selection) => canonicalContentHash({
792
- sessionId: item.sessionId,
793
- turn,
794
- routeSkillNames: selection.routeSkillNames,
795
- expertRefs: selection.expertRefs,
796
- contractRevision: state.contractRevision,
797
- nextAction: state.nextAction,
798
- directiveDigest: state.directive === null ? null : canonicalContentHash(state.directive),
799
- advisoryRoundDigest: state.advisoryPhaseState.state === 'aggregated' ? state.advisoryPhaseState.inputDigest : null,
800
- });
801
791
  const advisoryEvidenceFor = async (item, state) => {
802
792
  const advisoryState = state.advisoryPhaseState;
803
793
  const contractRevision = state.contractRevision;
@@ -973,7 +963,7 @@ export function createDshHostAdapter(ctx, options = {}) {
973
963
  signal: payload.signal,
974
964
  };
975
965
  };
976
- const contextMessages = async (event, _result) => {
966
+ const contextMessages = async (event, pending) => {
977
967
  const item = currentForAgentEvent(event.agent.id, event.sessionId, event.turn, event.nativeSession, event.nativeAgent);
978
968
  if (item === undefined || item.sessionId !== event.sessionId)
979
969
  throw new Error('kiokuko-dsh turn identity is not bound');
@@ -986,9 +976,6 @@ export function createDshHostAdapter(ctx, options = {}) {
986
976
  const prepared = item.prepared;
987
977
  const directive = projectDshDirective(prepared.ennoOduno);
988
978
  const selection = directive === null ? { routeSkillNames: [], expertRefs: [] } : selectDshDirectiveSources(directive);
989
- const contextKey = contextInjectionKey(item, event.turn, prepared.ennoOduno, selection);
990
- if (item.contextInjectionKey === contextKey)
991
- return [];
992
979
  const advisoryEvidence = await advisoryEvidenceFor(item, prepared.ennoOduno);
993
980
  const messages = await injectDshContext({
994
981
  prepared,
@@ -998,15 +985,10 @@ export function createDshHostAdapter(ctx, options = {}) {
998
985
  ...(directive === null ? {} : { directive }),
999
986
  ...(advisoryEvidence === undefined ? {} : { advisoryEvidence }),
1000
987
  runtime,
988
+ soulInSystemPrompt: ctx.get('systemPrompt', false) !== undefined,
989
+ userTaskInConversation: true,
1001
990
  });
1002
- const nativeMessages = messages.map((message) => ({
1003
- id: randomUUID(),
1004
- role: message.role,
1005
- content: [{ type: 'text', text: message.content }],
1006
- source: { kind: 'plugin', plugin: 'kiokuko-dsh', form: 'instructions' },
1007
- }));
1008
- item.contextInjectionKey = contextKey;
1009
- return Object.freeze(nativeMessages);
991
+ return projectDshContext(messages, sessionEventSource(event.nativeSession), pending);
1010
992
  };
1011
993
  const toolHost = {
1012
994
  bind: (execution) => {
@@ -1368,9 +1350,6 @@ export function createDshHostAdapter(ctx, options = {}) {
1368
1350
  const agent = exactNativeAgent === undefined ? agents?.get(item.agentId) : exactNativeAgent;
1369
1351
  if (agent?.inject === undefined)
1370
1352
  throw new Error('kiokuko-dsh native agent injection is unavailable');
1371
- const contextKey = contextInjectionKey(item, item.turn, state, selection);
1372
- if (item.contextInjectionKey === contextKey)
1373
- return;
1374
1353
  const projectedDirective = projectDshDirective({ nextAction: state.nextAction, directive: state.directive });
1375
1354
  const advisoryEvidence = await advisoryEvidenceFor(item, state);
1376
1355
  const messages = await injectDshContext({
@@ -1381,12 +1360,14 @@ export function createDshHostAdapter(ctx, options = {}) {
1381
1360
  ...(projectedDirective === null ? {} : { directive: projectedDirective }),
1382
1361
  ...(advisoryEvidence === undefined ? {} : { advisoryEvidence }),
1383
1362
  runtime,
1363
+ soulInSystemPrompt: ctx.get('systemPrompt', false) !== undefined,
1364
+ userTaskInConversation: true,
1384
1365
  });
1385
1366
  event.signal.throwIfAborted();
1386
- for (const message of messages) {
1387
- agent.inject({ id: randomUUID(), role: 'user', content: [{ type: 'text', text: message.content }], source: { kind: 'plugin', plugin: 'kiokuko-dsh', form: 'instructions' } });
1367
+ const pending = agent.inbox?.nextStep ?? [];
1368
+ for (const message of projectDshContext(messages, sessionEventSource(item.nativeSession), pending)) {
1369
+ agent.inject(message);
1388
1370
  }
1389
- item.contextInjectionKey = contextKey;
1390
1371
  };
1391
1372
  const runFinalVerificationBoundary = async (item) => {
1392
1373
  await assertTurnBoundary(boundaryEvent(item));