@sema-agent/core 1.342.0 → 1.344.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.
@@ -0,0 +1,99 @@
1
+ import { createHash } from "node:crypto";
2
+ import { canonical } from "./epoch.js";
3
+ export const PREFIX_INPUT_CLASSIFICATION = {
4
+ provider: "cache-identity",
5
+ modelId: "cache-identity",
6
+ artifactDigest: "cache-identity",
7
+ promptProfile: "cache-identity",
8
+ fableMitigations: "cache-identity",
9
+ layoutGroups: "cache-identity",
10
+ stableSystemText: "cache-identity",
11
+ toolWire: "cache-identity",
12
+ thinkingLevel: "cache-identity",
13
+ maxTokens: "cache-identity",
14
+ hasOutputSchema: "cache-identity",
15
+ sessionId: "proven-irrelevant",
16
+ taskId: "proven-irrelevant",
17
+ turn: "volatile-no-reuse",
18
+ cacheRead: "volatile-no-reuse",
19
+ };
20
+ const sha = (text) => `sha256:${createHash("sha256").update(text, "utf8").digest("hex")}`;
21
+ export const LOWERING_VERSION = "sema-lowering@1";
22
+ export function loweringRecordFor(api) {
23
+ if (api.startsWith("anthropic")) {
24
+ return {
25
+ version: LOWERING_VERSION,
26
+ form: "anthropic-blocks",
27
+ intentionalDivergences: [
28
+ "system rides top-level `system` blocks (cache_control on the layout boundary), not a system message",
29
+ "reasoning replays via provider-native thinking blocks",
30
+ ],
31
+ };
32
+ }
33
+ if (api.startsWith("openai")) {
34
+ return {
35
+ version: LOWERING_VERSION,
36
+ form: "openai-merged",
37
+ intentionalDivergences: [
38
+ "multi-block system layouts merge into ONE system message (block boundaries erased — no per-block cache_control on this wire)",
39
+ "reasoning-content replay is provider-dialect dependent (loss: some dialects drop replayed reasoning)",
40
+ ],
41
+ };
42
+ }
43
+ return { version: LOWERING_VERSION, form: "other", intentionalDivergences: ["unknown wire family — lowering fidelity unverified"] };
44
+ }
45
+ function identityOf(e) {
46
+ return sha(canonical(e));
47
+ }
48
+ export function buildTurnPromptSnapshot(raw, api, promptHasher) {
49
+ const promptSha = promptHasher ?? sha;
50
+ const lowering = loweringRecordFor(api);
51
+ let requestPolicy = { thinkingLevel: raw.thinkingLevel, maxTokens: (raw.maxTokens ?? null), hasOutputSchema: raw.hasOutputSchema };
52
+ const elements = {
53
+ provider: raw.provider,
54
+ modelId: raw.modelId,
55
+ artifactDigest: raw.artifactDigest,
56
+ policyDigest: sha(canonical({ promptProfile: raw.promptProfile, fableMitigations: raw.fableMitigations })),
57
+ layoutDigest: sha(canonical(raw.layoutGroups)),
58
+ stableSystemDigest: promptSha(raw.stableSystemText),
59
+ toolWireDigest: sha(canonical(raw.toolWire.map((t) => ({ name: t.name, description: t.description, parameters: t.parameters })))),
60
+ requestPolicyDigest: sha(canonical(requestPolicy)),
61
+ loweringVersion: `${lowering.version}/${lowering.form}/${api}`,
62
+ };
63
+ const bump = () => {
64
+ snapshot.cacheIdentity = identityOf(elements);
65
+ snapshot.onChange?.(snapshot);
66
+ };
67
+ const snapshot = {
68
+ elements,
69
+ cacheIdentity: "",
70
+ lowering,
71
+ refreshTools(toolWire) {
72
+ elements.toolWireDigest = sha(canonical(toolWire.map((t) => ({ name: t.name, description: t.description, parameters: t.parameters }))));
73
+ bump();
74
+ },
75
+ refreshStableSystem(stableSystemText, artifactDigest) {
76
+ elements.stableSystemDigest = promptSha(stableSystemText);
77
+ if (artifactDigest !== undefined)
78
+ elements.artifactDigest = artifactDigest;
79
+ bump();
80
+ },
81
+ refreshRequestPolicy(p) {
82
+ requestPolicy = {
83
+ ...requestPolicy,
84
+ ...(p.thinkingLevel !== undefined ? { thinkingLevel: p.thinkingLevel } : {}),
85
+ ...(p.maxTokens !== undefined ? { maxTokens: p.maxTokens } : {}),
86
+ };
87
+ elements.requestPolicyDigest = sha(canonical(requestPolicy));
88
+ bump();
89
+ },
90
+ refreshModel(m) {
91
+ elements.provider = m.provider;
92
+ elements.modelId = m.modelId;
93
+ bump();
94
+ },
95
+ };
96
+ snapshot.cacheIdentity = identityOf(elements);
97
+ return snapshot;
98
+ }
99
+ //# sourceMappingURL=turn-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-snapshot.js","sourceRoot":"","sources":["../../src/prompt-assembly/turn-snapshot.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/core",
3
- "version": "1.342.0",
3
+ "version": "1.344.0",
4
4
  "description": "Stateless, task-oriented AI agent core",
5
5
  "type": "module",
6
6
  "license": "BUSL-1.1",