@sema-agent/core 1.335.0 → 1.337.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/dist/agents/subagent.d.ts.map +1 -1
- package/dist/agents/subagent.js +2 -0
- package/dist/agents/subagent.js.map +1 -1
- package/dist/core/runner/assemble-result.d.ts.map +1 -1
- package/dist/core/runner/assemble-result.js +3 -0
- package/dist/core/runner/assemble-result.js.map +1 -1
- package/dist/core/runner/prepare-task.d.ts +2 -0
- package/dist/core/runner/prepare-task.d.ts.map +1 -1
- package/dist/core/runner/prepare-task.js +52 -1
- package/dist/core/runner/prepare-task.js.map +1 -1
- package/dist/core/types.d.ts +3 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/engine/harness/types.d.ts +2 -0
- package/dist/engine/harness/types.d.ts.map +1 -1
- package/dist/engine/harness/types.js.map +1 -1
- package/dist/engine/session/session.d.ts +3 -7
- package/dist/engine/session/session.d.ts.map +1 -1
- package/dist/engine/session/session.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/orchestration/run-workflow-tool.d.ts +1 -0
- package/dist/orchestration/run-workflow-tool.d.ts.map +1 -1
- package/dist/orchestration/run-workflow-tool.js +3 -0
- package/dist/orchestration/run-workflow-tool.js.map +1 -1
- package/dist/orchestration/workflow.d.ts +6 -0
- package/dist/orchestration/workflow.d.ts.map +1 -1
- package/dist/orchestration/workflow.js +39 -14
- package/dist/orchestration/workflow.js.map +1 -1
- package/dist/prompt-assembly/artifact-store.d.ts +80 -0
- package/dist/prompt-assembly/artifact-store.d.ts.map +1 -0
- package/dist/prompt-assembly/artifact-store.js +153 -0
- package/dist/prompt-assembly/artifact-store.js.map +1 -0
- package/dist/prompt-assembly/artifact.d.ts +68 -0
- package/dist/prompt-assembly/artifact.d.ts.map +1 -0
- package/dist/prompt-assembly/artifact.js +170 -0
- package/dist/prompt-assembly/artifact.js.map +1 -0
- package/dist/prompt-assembly/assemble.d.ts +3 -1
- package/dist/prompt-assembly/assemble.d.ts.map +1 -1
- package/dist/prompt-assembly/assemble.js +59 -34
- package/dist/prompt-assembly/assemble.js.map +1 -1
- package/dist/prompt-assembly/epoch.d.ts +3 -0
- package/dist/prompt-assembly/epoch.d.ts.map +1 -1
- package/dist/prompt-assembly/epoch.js +0 -0
- package/dist/prompt-assembly/epoch.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { type PromptEpochArtifact, type PublishedPromptArtifactEnvelope } from "./artifact.js";
|
|
2
|
+
export interface PromptArtifactStore {
|
|
3
|
+
get(artifactDigest: string, opts: {
|
|
4
|
+
engineVersion: string;
|
|
5
|
+
}): Promise<PublishedPromptArtifactEnvelope | undefined>;
|
|
6
|
+
put(envelope: PublishedPromptArtifactEnvelope): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare class MemoryPromptArtifactStore implements PromptArtifactStore {
|
|
9
|
+
private readonly byDigest;
|
|
10
|
+
get(artifactDigest: string, opts: {
|
|
11
|
+
engineVersion: string;
|
|
12
|
+
}): Promise<PublishedPromptArtifactEnvelope | undefined>;
|
|
13
|
+
put(envelope: PublishedPromptArtifactEnvelope): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export declare class FilePromptArtifactStore implements PromptArtifactStore {
|
|
16
|
+
private readonly dir;
|
|
17
|
+
constructor(dir: string);
|
|
18
|
+
private fileFor;
|
|
19
|
+
get(artifactDigest: string, opts: {
|
|
20
|
+
engineVersion: string;
|
|
21
|
+
}): Promise<PublishedPromptArtifactEnvelope | undefined>;
|
|
22
|
+
put(envelope: PublishedPromptArtifactEnvelope): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
export type PromptSourceState = {
|
|
25
|
+
state: "active";
|
|
26
|
+
artifactDigest: string;
|
|
27
|
+
sourceRevision: string;
|
|
28
|
+
} | {
|
|
29
|
+
state: "disabled";
|
|
30
|
+
sourceRevision: string;
|
|
31
|
+
};
|
|
32
|
+
export interface PromptSourceStateStore {
|
|
33
|
+
load(): Promise<PromptSourceState | undefined>;
|
|
34
|
+
save(state: PromptSourceState): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
export declare class MemoryPromptSourceStateStore implements PromptSourceStateStore {
|
|
37
|
+
private state;
|
|
38
|
+
load(): Promise<PromptSourceState | undefined>;
|
|
39
|
+
save(state: PromptSourceState): Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
export declare class FilePromptSourceStateStore implements PromptSourceStateStore {
|
|
42
|
+
private readonly file;
|
|
43
|
+
constructor(dir: string);
|
|
44
|
+
load(): Promise<PromptSourceState | undefined>;
|
|
45
|
+
save(state: PromptSourceState): Promise<void>;
|
|
46
|
+
}
|
|
47
|
+
export interface PromptArtifactSource {
|
|
48
|
+
current(): {
|
|
49
|
+
artifact: PromptEpochArtifact;
|
|
50
|
+
sourceRevision: string;
|
|
51
|
+
} | undefined;
|
|
52
|
+
get(artifactDigest: string): Promise<PromptEpochArtifact | undefined>;
|
|
53
|
+
}
|
|
54
|
+
export declare class CenterPromptSource implements PromptArtifactSource {
|
|
55
|
+
private readonly store;
|
|
56
|
+
private readonly stateStore;
|
|
57
|
+
private readonly engineVersion;
|
|
58
|
+
private candidate;
|
|
59
|
+
constructor(opts: {
|
|
60
|
+
store: PromptArtifactStore;
|
|
61
|
+
stateStore?: PromptSourceStateStore;
|
|
62
|
+
engineVersion: string;
|
|
63
|
+
});
|
|
64
|
+
current(): {
|
|
65
|
+
artifact: PromptEpochArtifact;
|
|
66
|
+
sourceRevision: string;
|
|
67
|
+
} | undefined;
|
|
68
|
+
get(artifactDigest: string): Promise<PromptEpochArtifact | undefined>;
|
|
69
|
+
restore(): Promise<void>;
|
|
70
|
+
applySnapshot(raw: unknown): Promise<{
|
|
71
|
+
ok: true;
|
|
72
|
+
artifactDigest: string;
|
|
73
|
+
} | {
|
|
74
|
+
ok: false;
|
|
75
|
+
code: string;
|
|
76
|
+
reason: string;
|
|
77
|
+
}>;
|
|
78
|
+
applyDisabled(sourceRevision: string): Promise<void>;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=artifact-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-store.d.ts","sourceRoot":"","sources":["../../src/prompt-assembly/artifact-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { mkdirSync, promises as fs } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { verifyPromptArtifact, } from "./artifact.js";
|
|
4
|
+
export class MemoryPromptArtifactStore {
|
|
5
|
+
byDigest = new Map();
|
|
6
|
+
async get(artifactDigest, opts) {
|
|
7
|
+
const bytes = this.byDigest.get(artifactDigest);
|
|
8
|
+
if (bytes === undefined)
|
|
9
|
+
return undefined;
|
|
10
|
+
let parsed;
|
|
11
|
+
try {
|
|
12
|
+
parsed = JSON.parse(bytes);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
const v = verifyPromptArtifact(parsed, opts);
|
|
18
|
+
if (!v.ok || v.artifact.artifactDigest !== artifactDigest)
|
|
19
|
+
return undefined;
|
|
20
|
+
return parsed;
|
|
21
|
+
}
|
|
22
|
+
async put(envelope) {
|
|
23
|
+
this.byDigest.set(envelope.artifact.artifactDigest, JSON.stringify(envelope));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class FilePromptArtifactStore {
|
|
27
|
+
dir;
|
|
28
|
+
constructor(dir) {
|
|
29
|
+
this.dir = dir;
|
|
30
|
+
mkdirSync(path.join(dir, "artifacts"), { recursive: true });
|
|
31
|
+
}
|
|
32
|
+
fileFor(artifactDigest) {
|
|
33
|
+
const m = /^sha256:([0-9a-f]{64})$/.exec(artifactDigest);
|
|
34
|
+
return m ? path.join(this.dir, "artifacts", `${m[1]}.json`) : undefined;
|
|
35
|
+
}
|
|
36
|
+
async get(artifactDigest, opts) {
|
|
37
|
+
const file = this.fileFor(artifactDigest);
|
|
38
|
+
if (file === undefined)
|
|
39
|
+
return undefined;
|
|
40
|
+
let bytes;
|
|
41
|
+
try {
|
|
42
|
+
bytes = await fs.readFile(file, "utf8");
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
let parsed;
|
|
48
|
+
try {
|
|
49
|
+
parsed = JSON.parse(bytes);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
const v = verifyPromptArtifact(parsed, opts);
|
|
55
|
+
if (!v.ok || v.artifact.artifactDigest !== artifactDigest)
|
|
56
|
+
return undefined;
|
|
57
|
+
return parsed;
|
|
58
|
+
}
|
|
59
|
+
async put(envelope) {
|
|
60
|
+
const file = this.fileFor(envelope.artifact.artifactDigest);
|
|
61
|
+
if (file === undefined)
|
|
62
|
+
throw new Error(`prompt-artifact store: malformed digest ${JSON.stringify(envelope.artifact.artifactDigest).slice(0, 120)}`);
|
|
63
|
+
const tmp = `${file}.tmp-${process.pid}-${Date.now()}`;
|
|
64
|
+
await fs.writeFile(tmp, JSON.stringify(envelope), "utf8");
|
|
65
|
+
await fs.rename(tmp, file);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export class MemoryPromptSourceStateStore {
|
|
69
|
+
state;
|
|
70
|
+
async load() {
|
|
71
|
+
return this.state;
|
|
72
|
+
}
|
|
73
|
+
async save(state) {
|
|
74
|
+
this.state = state;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export class FilePromptSourceStateStore {
|
|
78
|
+
file;
|
|
79
|
+
constructor(dir) {
|
|
80
|
+
mkdirSync(dir, { recursive: true });
|
|
81
|
+
this.file = path.join(dir, "source-state.json");
|
|
82
|
+
}
|
|
83
|
+
async load() {
|
|
84
|
+
let bytes;
|
|
85
|
+
try {
|
|
86
|
+
bytes = await fs.readFile(this.file, "utf8");
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
const raw = JSON.parse(bytes);
|
|
93
|
+
if (raw?.state === "active" && typeof raw.artifactDigest === "string" && typeof raw.sourceRevision === "string") {
|
|
94
|
+
return { state: "active", artifactDigest: raw.artifactDigest, sourceRevision: raw.sourceRevision };
|
|
95
|
+
}
|
|
96
|
+
if (raw?.state === "disabled" && typeof raw.sourceRevision === "string") {
|
|
97
|
+
return { state: "disabled", sourceRevision: raw.sourceRevision };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
async save(state) {
|
|
105
|
+
const tmp = `${this.file}.tmp-${process.pid}-${Date.now()}`;
|
|
106
|
+
await fs.writeFile(tmp, JSON.stringify(state), "utf8");
|
|
107
|
+
await fs.rename(tmp, this.file);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
export class CenterPromptSource {
|
|
111
|
+
store;
|
|
112
|
+
stateStore;
|
|
113
|
+
engineVersion;
|
|
114
|
+
candidate;
|
|
115
|
+
constructor(opts) {
|
|
116
|
+
this.store = opts.store;
|
|
117
|
+
this.stateStore = opts.stateStore ?? new MemoryPromptSourceStateStore();
|
|
118
|
+
this.engineVersion = opts.engineVersion;
|
|
119
|
+
}
|
|
120
|
+
current() {
|
|
121
|
+
return this.candidate;
|
|
122
|
+
}
|
|
123
|
+
async get(artifactDigest) {
|
|
124
|
+
if (this.candidate?.artifact.artifactDigest === artifactDigest)
|
|
125
|
+
return this.candidate.artifact;
|
|
126
|
+
const env = await this.store.get(artifactDigest, { engineVersion: this.engineVersion });
|
|
127
|
+
return env?.artifact;
|
|
128
|
+
}
|
|
129
|
+
async restore() {
|
|
130
|
+
const state = await this.stateStore.load();
|
|
131
|
+
if (state?.state !== "active") {
|
|
132
|
+
this.candidate = undefined;
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const env = await this.store.get(state.artifactDigest, { engineVersion: this.engineVersion });
|
|
136
|
+
this.candidate = env !== undefined ? { artifact: env.artifact, sourceRevision: state.sourceRevision } : undefined;
|
|
137
|
+
}
|
|
138
|
+
async applySnapshot(raw) {
|
|
139
|
+
const v = verifyPromptArtifact(raw, { engineVersion: this.engineVersion });
|
|
140
|
+
if (!v.ok)
|
|
141
|
+
return v;
|
|
142
|
+
const envelope = raw;
|
|
143
|
+
await this.store.put(envelope);
|
|
144
|
+
await this.stateStore.save({ state: "active", artifactDigest: v.artifact.artifactDigest, sourceRevision: envelope.sourceRevision });
|
|
145
|
+
this.candidate = { artifact: v.artifact, sourceRevision: envelope.sourceRevision };
|
|
146
|
+
return { ok: true, artifactDigest: v.artifact.artifactDigest };
|
|
147
|
+
}
|
|
148
|
+
async applyDisabled(sourceRevision) {
|
|
149
|
+
await this.stateStore.save({ state: "disabled", sourceRevision });
|
|
150
|
+
this.candidate = undefined;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=artifact-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-store.js","sourceRoot":"","sources":["../../src/prompt-assembly/artifact-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { PromptTextDeclaration } from "../prompts/default.js";
|
|
2
|
+
export type CenterOverlaySlot = "identity" | "scenario" | "behavior";
|
|
3
|
+
export interface CenterOverlaySection {
|
|
4
|
+
id: string;
|
|
5
|
+
slot: CenterOverlaySlot;
|
|
6
|
+
text: string;
|
|
7
|
+
contentHash: string;
|
|
8
|
+
}
|
|
9
|
+
export interface PromptCatalogSnapshot {
|
|
10
|
+
packId: string;
|
|
11
|
+
sections: ReadonlyArray<CenterOverlaySection>;
|
|
12
|
+
}
|
|
13
|
+
export interface PromptDependencyClosure {
|
|
14
|
+
basePackId: string;
|
|
15
|
+
promptCatalog: PromptCatalogSnapshot;
|
|
16
|
+
}
|
|
17
|
+
export interface CoreCompatRange {
|
|
18
|
+
minCore?: string;
|
|
19
|
+
maxCoreExclusive?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface PromptEpochArtifactPayload {
|
|
22
|
+
schemaVersion: 1;
|
|
23
|
+
assemblyApi: 1;
|
|
24
|
+
catalogDigest: string;
|
|
25
|
+
compatibleCore?: CoreCompatRange;
|
|
26
|
+
closure: PromptDependencyClosure;
|
|
27
|
+
}
|
|
28
|
+
export interface PromptEpochArtifact {
|
|
29
|
+
payload: PromptEpochArtifactPayload;
|
|
30
|
+
artifactDigest: string;
|
|
31
|
+
}
|
|
32
|
+
export interface PublishedPromptArtifactEnvelope {
|
|
33
|
+
artifact: PromptEpochArtifact;
|
|
34
|
+
sourceRevision: string;
|
|
35
|
+
}
|
|
36
|
+
export declare const ARTIFACT_LIMITS: {
|
|
37
|
+
readonly maxSections: 64;
|
|
38
|
+
readonly maxSectionBytes: 32000;
|
|
39
|
+
readonly maxTotalBytes: 131072;
|
|
40
|
+
readonly maxIdLength: 128;
|
|
41
|
+
readonly maxPackIdLength: 200;
|
|
42
|
+
};
|
|
43
|
+
export declare function sha256Hex(text: string): string;
|
|
44
|
+
export declare function computeCatalogDigest(catalog: PromptCatalogSnapshot): string;
|
|
45
|
+
export declare function computeArtifactDigest(payload: PromptEpochArtifactPayload): string;
|
|
46
|
+
export type ArtifactVerifyResult = {
|
|
47
|
+
ok: true;
|
|
48
|
+
artifact: PromptEpochArtifact;
|
|
49
|
+
} | {
|
|
50
|
+
ok: false;
|
|
51
|
+
code: string;
|
|
52
|
+
reason: string;
|
|
53
|
+
};
|
|
54
|
+
export declare function verifyPromptArtifact(raw: unknown, opts: {
|
|
55
|
+
engineVersion: string;
|
|
56
|
+
}): ArtifactVerifyResult;
|
|
57
|
+
export declare function artifactDeclarations(artifact: PromptEpochArtifact): PromptTextDeclaration[];
|
|
58
|
+
export declare function buildPromptArtifactEnvelope(opts: {
|
|
59
|
+
packId: string;
|
|
60
|
+
sections: ReadonlyArray<{
|
|
61
|
+
id: string;
|
|
62
|
+
slot: CenterOverlaySlot;
|
|
63
|
+
text: string;
|
|
64
|
+
}>;
|
|
65
|
+
sourceRevision: string;
|
|
66
|
+
compatibleCore?: CoreCompatRange;
|
|
67
|
+
}): PublishedPromptArtifactEnvelope;
|
|
68
|
+
//# sourceMappingURL=artifact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/prompt-assembly/artifact.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGnE,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAErE,MAAM,WAAW,oBAAoB;IAEnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,iBAAiB,CAAC;IAExB,IAAI,EAAE,MAAM,CAAC;IAGb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IAEpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,uBAAuB;IAEtC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,qBAAqB,CAAC;CACtC;AAGD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,CAAC,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,OAAO,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,0BAA0B,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;CACxB;AAID,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,mBAAmB,CAAC;IAG9B,cAAc,EAAE,MAAM,CAAC;CACxB;AAID,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAMX,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAE3E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,CAEjF;AAgBD,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,mBAAmB,CAAA;CAAE,GAC3C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAOhD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,oBAAoB,CAiGxG;AAMD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,qBAAqB,EAAE,CAO3F;AAID,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,iBAAiB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/E,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,eAAe,CAAC;CAClC,GAAG,+BAA+B,CAgBlC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { canonical } from "./epoch.js";
|
|
3
|
+
export const ARTIFACT_LIMITS = {
|
|
4
|
+
maxSections: 64,
|
|
5
|
+
maxSectionBytes: 32_000,
|
|
6
|
+
maxTotalBytes: 131_072,
|
|
7
|
+
maxIdLength: 128,
|
|
8
|
+
maxPackIdLength: 200,
|
|
9
|
+
};
|
|
10
|
+
const ID_RE = /^[a-z0-9][a-z0-9/._-]*$/;
|
|
11
|
+
const DIGEST_RE = /^sha256:[0-9a-f]{64}$/;
|
|
12
|
+
const SLOTS = new Set(["identity", "scenario", "behavior"]);
|
|
13
|
+
export function sha256Hex(text) {
|
|
14
|
+
return `sha256:${createHash("sha256").update(text, "utf8").digest("hex")}`;
|
|
15
|
+
}
|
|
16
|
+
export function computeCatalogDigest(catalog) {
|
|
17
|
+
return sha256Hex(canonical(catalog));
|
|
18
|
+
}
|
|
19
|
+
export function computeArtifactDigest(payload) {
|
|
20
|
+
return sha256Hex(canonical(payload));
|
|
21
|
+
}
|
|
22
|
+
function triple(v) {
|
|
23
|
+
const m = /^(\d+)\.(\d+)\.(\d+)$/.exec(v.trim());
|
|
24
|
+
if (!m)
|
|
25
|
+
return undefined;
|
|
26
|
+
return [Number(m[1]), Number(m[2]), Number(m[3])];
|
|
27
|
+
}
|
|
28
|
+
function tripleCmp(a, b) {
|
|
29
|
+
for (let i = 0; i < 3; i++) {
|
|
30
|
+
if (a[i] !== b[i])
|
|
31
|
+
return a[i] < b[i] ? -1 : 1;
|
|
32
|
+
}
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
export function verifyPromptArtifact(raw, opts) {
|
|
36
|
+
const fail = (code, reason) => ({ ok: false, code, reason });
|
|
37
|
+
if (raw === null || typeof raw !== "object")
|
|
38
|
+
return fail("shape", "envelope is not an object");
|
|
39
|
+
const env = raw;
|
|
40
|
+
if (typeof env.sourceRevision !== "string" || !env.sourceRevision || env.sourceRevision.length > 500) {
|
|
41
|
+
return fail("shape", "sourceRevision missing/oversized");
|
|
42
|
+
}
|
|
43
|
+
const art = env.artifact;
|
|
44
|
+
if (art === null || typeof art !== "object")
|
|
45
|
+
return fail("shape", "artifact is not an object");
|
|
46
|
+
const payload = art.payload;
|
|
47
|
+
if (payload === null || typeof payload !== "object")
|
|
48
|
+
return fail("shape", "payload is not an object");
|
|
49
|
+
if (payload.schemaVersion !== 1)
|
|
50
|
+
return fail("schema", `unsupported schemaVersion ${String(payload.schemaVersion)}`);
|
|
51
|
+
if (payload.assemblyApi !== 1)
|
|
52
|
+
return fail("schema", `unsupported assemblyApi ${String(payload.assemblyApi)}`);
|
|
53
|
+
if (typeof payload.catalogDigest !== "string" || !DIGEST_RE.test(payload.catalogDigest))
|
|
54
|
+
return fail("shape", "catalogDigest malformed");
|
|
55
|
+
let compatibleCore;
|
|
56
|
+
if (payload.compatibleCore !== undefined) {
|
|
57
|
+
const cc = payload.compatibleCore;
|
|
58
|
+
if (cc === null || typeof cc !== "object")
|
|
59
|
+
return fail("shape", "compatibleCore malformed");
|
|
60
|
+
compatibleCore = {};
|
|
61
|
+
for (const key of ["minCore", "maxCoreExclusive"]) {
|
|
62
|
+
const v = cc[key];
|
|
63
|
+
if (v === undefined)
|
|
64
|
+
continue;
|
|
65
|
+
if (typeof v !== "string" || triple(v) === undefined)
|
|
66
|
+
return fail("shape", `compatibleCore.${key} is not a dotted triple`);
|
|
67
|
+
compatibleCore[key] = v;
|
|
68
|
+
}
|
|
69
|
+
const engine = triple(opts.engineVersion);
|
|
70
|
+
if (engine === undefined)
|
|
71
|
+
return fail("core-range", `engine version "${opts.engineVersion}" is not a dotted triple`);
|
|
72
|
+
if (compatibleCore.minCore !== undefined && tripleCmp(engine, triple(compatibleCore.minCore)) < 0) {
|
|
73
|
+
return fail("core-range", `engine ${opts.engineVersion} < minCore ${compatibleCore.minCore}`);
|
|
74
|
+
}
|
|
75
|
+
if (compatibleCore.maxCoreExclusive !== undefined && tripleCmp(engine, triple(compatibleCore.maxCoreExclusive)) >= 0) {
|
|
76
|
+
return fail("core-range", `engine ${opts.engineVersion} >= maxCoreExclusive ${compatibleCore.maxCoreExclusive}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const closure = payload.closure;
|
|
80
|
+
if (closure === null || typeof closure !== "object")
|
|
81
|
+
return fail("shape", "closure is not an object");
|
|
82
|
+
if (closure.basePackId !== "sema-default@1") {
|
|
83
|
+
return fail("base-pack", `unsupported basePackId ${JSON.stringify(closure.basePackId).slice(0, 120)} (v1: bundled base only)`);
|
|
84
|
+
}
|
|
85
|
+
const catalog = closure.promptCatalog;
|
|
86
|
+
if (catalog === null || typeof catalog !== "object")
|
|
87
|
+
return fail("shape", "promptCatalog is not an object");
|
|
88
|
+
if (typeof catalog.packId !== "string" || !catalog.packId.trim() || catalog.packId.length > ARTIFACT_LIMITS.maxPackIdLength) {
|
|
89
|
+
return fail("shape", "promptCatalog.packId missing/oversized");
|
|
90
|
+
}
|
|
91
|
+
if (!Array.isArray(catalog.sections))
|
|
92
|
+
return fail("shape", "promptCatalog.sections is not an array");
|
|
93
|
+
if (catalog.sections.length === 0)
|
|
94
|
+
return fail("shape", "promptCatalog.sections is empty — publish at least one section, or disable the source instead");
|
|
95
|
+
if (catalog.sections.length > ARTIFACT_LIMITS.maxSections) {
|
|
96
|
+
return fail("limits", `${catalog.sections.length} sections > max ${ARTIFACT_LIMITS.maxSections}`);
|
|
97
|
+
}
|
|
98
|
+
const ids = new Set();
|
|
99
|
+
let totalBytes = 0;
|
|
100
|
+
const sections = [];
|
|
101
|
+
for (const rawSection of catalog.sections) {
|
|
102
|
+
if (rawSection === null || typeof rawSection !== "object")
|
|
103
|
+
return fail("shape", "section is not an object");
|
|
104
|
+
const s = rawSection;
|
|
105
|
+
if (typeof s.id !== "string" || s.id.startsWith("core/") || s.id.length > ARTIFACT_LIMITS.maxIdLength || !ID_RE.test(s.id)) {
|
|
106
|
+
return fail("shape", `invalid section id ${JSON.stringify(s.id).slice(0, 120)}`);
|
|
107
|
+
}
|
|
108
|
+
if (ids.has(s.id))
|
|
109
|
+
return fail("shape", `duplicate section id "${s.id}"`);
|
|
110
|
+
ids.add(s.id);
|
|
111
|
+
if (typeof s.slot !== "string" || !SLOTS.has(s.slot))
|
|
112
|
+
return fail("shape", `unknown slot ${JSON.stringify(s.slot).slice(0, 60)} ("${s.id}")`);
|
|
113
|
+
if (typeof s.text !== "string" || s.text.length === 0)
|
|
114
|
+
return fail("shape", `empty/missing text ("${s.id}")`);
|
|
115
|
+
const bytes = Buffer.byteLength(s.text, "utf8");
|
|
116
|
+
if (bytes > ARTIFACT_LIMITS.maxSectionBytes)
|
|
117
|
+
return fail("limits", `section "${s.id}" ${bytes} bytes > max ${ARTIFACT_LIMITS.maxSectionBytes}`);
|
|
118
|
+
totalBytes += bytes;
|
|
119
|
+
if (typeof s.contentHash !== "string" || !DIGEST_RE.test(s.contentHash))
|
|
120
|
+
return fail("shape", `contentHash missing/malformed ("${s.id}")`);
|
|
121
|
+
if (s.contentHash !== sha256Hex(s.text))
|
|
122
|
+
return fail("content-hash", `contentHash does not match text ("${s.id}")`);
|
|
123
|
+
sections.push({ id: s.id, slot: s.slot, text: s.text, contentHash: s.contentHash });
|
|
124
|
+
}
|
|
125
|
+
if (totalBytes > ARTIFACT_LIMITS.maxTotalBytes)
|
|
126
|
+
return fail("limits", `catalog ${totalBytes} bytes > max ${ARTIFACT_LIMITS.maxTotalBytes}`);
|
|
127
|
+
const normalizedCatalog = { packId: catalog.packId, sections };
|
|
128
|
+
const normalizedPayload = {
|
|
129
|
+
schemaVersion: 1,
|
|
130
|
+
assemblyApi: 1,
|
|
131
|
+
catalogDigest: payload.catalogDigest,
|
|
132
|
+
...(compatibleCore !== undefined ? { compatibleCore } : {}),
|
|
133
|
+
closure: { basePackId: "sema-default@1", promptCatalog: normalizedCatalog },
|
|
134
|
+
};
|
|
135
|
+
if (computeCatalogDigest(normalizedCatalog) !== payload.catalogDigest) {
|
|
136
|
+
return fail("digest", "catalogDigest does not match canonical(promptCatalog)");
|
|
137
|
+
}
|
|
138
|
+
if (typeof art.artifactDigest !== "string" || !DIGEST_RE.test(art.artifactDigest))
|
|
139
|
+
return fail("shape", "artifactDigest malformed");
|
|
140
|
+
if (computeArtifactDigest(normalizedPayload) !== art.artifactDigest) {
|
|
141
|
+
return fail("digest", "artifactDigest does not match canonical(payload)");
|
|
142
|
+
}
|
|
143
|
+
return { ok: true, artifact: { payload: normalizedPayload, artifactDigest: art.artifactDigest } };
|
|
144
|
+
}
|
|
145
|
+
export function artifactDeclarations(artifact) {
|
|
146
|
+
return artifact.payload.closure.promptCatalog.sections.map((s) => ({
|
|
147
|
+
id: s.id,
|
|
148
|
+
slot: s.slot,
|
|
149
|
+
text: s.text,
|
|
150
|
+
contentHash: s.contentHash,
|
|
151
|
+
}));
|
|
152
|
+
}
|
|
153
|
+
export function buildPromptArtifactEnvelope(opts) {
|
|
154
|
+
const catalog = {
|
|
155
|
+
packId: opts.packId,
|
|
156
|
+
sections: opts.sections.map((s) => ({ ...s, contentHash: sha256Hex(s.text) })),
|
|
157
|
+
};
|
|
158
|
+
const payload = {
|
|
159
|
+
schemaVersion: 1,
|
|
160
|
+
assemblyApi: 1,
|
|
161
|
+
catalogDigest: computeCatalogDigest(catalog),
|
|
162
|
+
...(opts.compatibleCore !== undefined ? { compatibleCore: opts.compatibleCore } : {}),
|
|
163
|
+
closure: { basePackId: "sema-default@1", promptCatalog: catalog },
|
|
164
|
+
};
|
|
165
|
+
return {
|
|
166
|
+
artifact: { payload, artifactDigest: computeArtifactDigest(payload) },
|
|
167
|
+
sourceRevision: opts.sourceRevision,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=artifact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/prompt-assembly/artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AgentTool } from "../internal/harness.js";
|
|
2
|
-
import { type PromptProvider } from "../prompts/default.js";
|
|
2
|
+
import { type PromptProvider, type PromptTextDeclaration } from "../prompts/default.js";
|
|
3
3
|
import type { CompiledSection, CompiledSystemBlock, PromptRuntimeFacts } from "./types.js";
|
|
4
4
|
export interface AssembleInputs {
|
|
5
5
|
provider: PromptProvider;
|
|
@@ -13,10 +13,12 @@ export interface AssembleInputs {
|
|
|
13
13
|
buildEnvBlock: (date: string) => string | undefined;
|
|
14
14
|
date: string;
|
|
15
15
|
modelGuidance?: string;
|
|
16
|
+
centerDeclarations?: PromptTextDeclaration[];
|
|
16
17
|
onWarn?: (message: string, phase: "prompt-constitution" | "prompt-cache") => void;
|
|
17
18
|
}
|
|
18
19
|
export interface AssembledPrompt {
|
|
19
20
|
constitution: "core" | "replaced" | "provider-assembled" | "legacy";
|
|
21
|
+
centerMounted?: boolean;
|
|
20
22
|
renderWithDate?: (date: string) => string;
|
|
21
23
|
systemPrompt: string;
|
|
22
24
|
legacyBlocks: Array<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../src/prompt-assembly/assemble.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAwF,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../src/prompt-assembly/assemble.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAwF,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAG9K,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAc,kBAAkB,EAAuB,MAAM,YAAY,CAAC;AAE5H,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,CAAC;IAGzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAEpD,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IAMvB,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAE7C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,cAAc,KAAK,IAAI,CAAC;CACnF;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,oBAAoB,GAAG,QAAQ,CAAC;IAIpE,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAE1C,YAAY,EAAE,MAAM,CAAC;IAErB,YAAY,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAElD,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAG7B,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACtC;AAwFD,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CAqPtE"}
|