@salesforce/sfdx-agent-harness-claude 0.65.0 → 0.67.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.
@@ -33,7 +33,7 @@ export class ClaudeQueryOptionsBuilder {
33
33
  this.queryDefaults = queryDefaults;
34
34
  this.approvalHookTimeoutMs = approvalHookTimeoutMs;
35
35
  }
36
- build(projectRoot, config, streamOptions, env, sessionOptions, nativeModelId, brokerPreToolUseHook, mcpServers, rulesAppend, postToolUseRedactionHook, skillDirectories, thinkingMode) {
36
+ build(projectRoot, config, streamOptions, env, sessionOptions, nativeModelId, brokerPreToolUseHook, mcpServers, rulesAppend, postToolUseRedactionHook, skillDirectories, thinkingMode, sessionContext) {
37
37
  const hasMcpServers = mcpServers !== undefined && Object.keys(mcpServers).length > 0;
38
38
  // The harness decides whether to gate (its opt-in policy predicate) and
39
39
  // passes `brokerPreToolUseHook` only when gating is active; the presence
@@ -44,7 +44,7 @@ export class ClaudeQueryOptionsBuilder {
44
44
  // settled via the parker path, never gated) — see `buildPolicyMatcher`.
45
45
  const approvalGated = brokerPreToolUseHook !== undefined;
46
46
  // See ARCHITECTURE.md → "Rule Composition" for the systemPrompt shape selection.
47
- const systemPrompt = buildSystemPrompt(config.instructions, rulesAppend);
47
+ const systemPrompt = buildSystemPrompt(config.instructions, rulesAppend, renderSessionContextBlock(sessionContext));
48
48
  // Auto-allow every MCP server's tool surface via the `mcp__<server>`
49
49
  // wildcard. The Claude CLI's MDM/policy layer overrides
50
50
  // `bypassPermissions` when `settingSources: []` is set
@@ -193,6 +193,52 @@ function mergeAdditionalDirectories(fromDefaults, fromSkills) {
193
193
  const merged = [...new Set([...(fromDefaults ?? []), ...(fromSkills ?? [])])];
194
194
  return merged.length > 0 ? merged : undefined;
195
195
  }
196
+ /**
197
+ * Render a `SessionContext` into the turn's system-level block, or `undefined`
198
+ * when unset/empty (which contributes nothing). Keys are recursively sorted so
199
+ * equal objects render byte-identical regardless of insertion order — the
200
+ * deterministic-rendering guarantee the contract requires (CONTRACT-SPEC §10).
201
+ *
202
+ * The JSON payload has `<`/`>` unicode-escaped (`\u003c` / `\u003e`) so a
203
+ * consumer value can't forge the `</session-context>` delimiter mid-block — this
204
+ * lands in the model's system prompt. Escaping the RENDERED form only; the stored
205
+ * object's round-trip fidelity is untouched. Mirrors the Mastra harness's
206
+ * `renderSessionContextSystemText` so the delimiter-hardening posture is
207
+ * identical across harnesses.
208
+ *
209
+ * Exported so the conformance `renderSystemContext` seam exercises this real
210
+ * production renderer rather than re-implementing it.
211
+ */
212
+ export function renderSessionContextBlock(sessionContext) {
213
+ if (sessionContext === undefined || Object.keys(sessionContext).length === 0) {
214
+ return undefined;
215
+ }
216
+ const canonical = JSON.stringify(sortJsonKeys(sessionContext)).replace(/</g, '\\u003c').replace(/>/g, '\\u003e');
217
+ return `<session-context>\n${canonical}\n</session-context>`;
218
+ }
219
+ /**
220
+ * Recursively sort object keys so `JSON.stringify` output is stable regardless
221
+ * of insertion order. Arrays keep their order (order is semantic in a list);
222
+ * primitives pass through untouched.
223
+ */
224
+ function sortJsonKeys(value) {
225
+ if (Array.isArray(value)) {
226
+ return value.map(sortJsonKeys);
227
+ }
228
+ if (value !== null && typeof value === 'object') {
229
+ // Null-prototype, not `{}`: assigning a `"__proto__"` key (legal in JSON,
230
+ // and preserved by `getSessionContext`'s JSON round-trip) on a plain
231
+ // object hits the prototype setter and silently DROPS the key, so the
232
+ // rendered block would diverge from what `getSessionContext` returns.
233
+ // Mirrors the Mastra harness's `sortJsonValue` (session-context-store.ts).
234
+ const sorted = Object.create(null);
235
+ for (const key of Object.keys(value).sort()) {
236
+ sorted[key] = sortJsonKeys(value[key]);
237
+ }
238
+ return sorted;
239
+ }
240
+ return value;
241
+ }
196
242
  /**
197
243
  * The two return shapes here (bare string and preset+append) are mirrored by
198
244
  * `extractSystemPromptBody` in `claude-harness.ts`, which reads the assembled
@@ -201,13 +247,25 @@ function mergeAdditionalDirectories(fromDefaults, fromSkills) {
201
247
  * harness's debug log silently goes empty for streams that hit the new
202
248
  * shape, and the dual-harness rules-composition e2e (#493) hangs / fails
203
249
  * with no record collected.
250
+ *
251
+ * `sessionContextBlock` is a third append segment alongside `instructions` /
252
+ * `rules`. Like `rules`, it forces the preset+append shape (the bare string
253
+ * can't compose multiple segments), but stays INSIDE `append` rather than a new
254
+ * shape — so `extractSystemPromptBody` needs no update.
204
255
  */
205
- function buildSystemPrompt(instructions, rulesAppend) {
256
+ function buildSystemPrompt(instructions, rulesAppend, sessionContextBlock) {
206
257
  const rules = rulesAppend ?? '';
207
258
  const hasRules = rules.length > 0;
208
259
  const hasInstructions = instructions !== undefined && instructions.length > 0;
209
- if (hasRules) {
210
- const append = hasInstructions ? `${instructions}\n\n${rules}` : rules;
260
+ const hasSessionContext = sessionContextBlock !== undefined && sessionContextBlock.length > 0;
261
+ if (hasRules || hasSessionContext) {
262
+ const append = [
263
+ hasInstructions ? instructions : undefined,
264
+ hasRules ? rules : undefined,
265
+ hasSessionContext ? sessionContextBlock : undefined,
266
+ ]
267
+ .filter((part) => part !== undefined)
268
+ .join('\n\n');
211
269
  return { type: 'preset', preset: 'claude_code', append, excludeDynamicSections: true };
212
270
  }
213
271
  return hasInstructions ? instructions : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"claude-query-options-builder.js","sourceRoot":"","sources":["../src/claude-query-options-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-query-options-builder.js","sourceRoot":"","sources":["../src/claude-query-options-builder.ts"],"names":[],"mappings":"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"}