@once-agent/sdk 0.1.4 → 0.1.6
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/LICENSE +20 -20
- package/README.md +62 -3
- package/dist/benchmark.d.ts +40 -0
- package/dist/benchmark.d.ts.map +1 -0
- package/dist/benchmark.js +169 -0
- package/dist/benchmark.js.map +1 -0
- package/dist/cli.js +52 -12
- package/dist/cli.js.map +1 -1
- package/dist/connect/binding.d.ts +17 -0
- package/dist/connect/binding.d.ts.map +1 -0
- package/dist/connect/binding.js +91 -0
- package/dist/connect/binding.js.map +1 -0
- package/dist/connect/classifier.d.ts +18 -0
- package/dist/connect/classifier.d.ts.map +1 -0
- package/dist/connect/classifier.js +49 -0
- package/dist/connect/classifier.js.map +1 -0
- package/dist/connect/execute.d.ts +30 -0
- package/dist/connect/execute.d.ts.map +1 -0
- package/dist/connect/execute.js +47 -0
- package/dist/connect/execute.js.map +1 -0
- package/dist/connect/kernel.d.ts +33 -0
- package/dist/connect/kernel.d.ts.map +1 -0
- package/dist/connect/kernel.js +46 -0
- package/dist/connect/kernel.js.map +1 -0
- package/dist/connect/openai-agents.d.ts +31 -0
- package/dist/connect/openai-agents.d.ts.map +1 -0
- package/dist/connect/openai-agents.js +42 -0
- package/dist/connect/openai-agents.js.map +1 -0
- package/dist/dataset-cli.d.ts +3 -0
- package/dist/dataset-cli.d.ts.map +1 -0
- package/dist/dataset-cli.js +49 -0
- package/dist/dataset-cli.js.map +1 -0
- package/dist/dataset-progress.d.ts +16 -0
- package/dist/dataset-progress.d.ts.map +1 -0
- package/dist/dataset-progress.js +130 -0
- package/dist/dataset-progress.js.map +1 -0
- package/dist/dataset.d.ts +35 -0
- package/dist/dataset.d.ts.map +1 -0
- package/dist/dataset.js +133 -0
- package/dist/dataset.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +259 -2
- package/dist/index.js.map +1 -1
- package/dist/runtime/decision.d.ts +39 -0
- package/dist/runtime/decision.d.ts.map +1 -0
- package/dist/runtime/decision.js +102 -0
- package/dist/runtime/decision.js.map +1 -0
- package/dist/runtime/fetch-interceptor.d.ts +74 -0
- package/dist/runtime/fetch-interceptor.d.ts.map +1 -0
- package/dist/runtime/fetch-interceptor.js +156 -0
- package/dist/runtime/fetch-interceptor.js.map +1 -0
- package/dist/runtime/identity.d.ts +23 -0
- package/dist/runtime/identity.d.ts.map +1 -0
- package/dist/runtime/identity.js +191 -0
- package/dist/runtime/identity.js.map +1 -0
- package/dist/runtime/pipeline.d.ts +25 -0
- package/dist/runtime/pipeline.d.ts.map +1 -0
- package/dist/runtime/pipeline.js +121 -0
- package/dist/runtime/pipeline.js.map +1 -0
- package/dist/setup.d.ts +2 -0
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +126 -33
- package/dist/setup.js.map +1 -1
- package/dist/trace.d.ts +13 -0
- package/dist/trace.d.ts.map +1 -0
- package/dist/trace.js +60 -0
- package/dist/trace.js.map +1 -0
- package/dist-cjs/connect/binding.js +99 -0
- package/dist-cjs/connect/binding.js.map +1 -0
- package/dist-cjs/connect/classifier.js +53 -0
- package/dist-cjs/connect/classifier.js.map +1 -0
- package/dist-cjs/connect/execute.js +52 -0
- package/dist-cjs/connect/execute.js.map +1 -0
- package/dist-cjs/connect/kernel.js +51 -0
- package/dist-cjs/connect/kernel.js.map +1 -0
- package/dist-cjs/connect/openai-agents.js +47 -0
- package/dist-cjs/connect/openai-agents.js.map +1 -0
- package/dist-cjs/index.js +282 -3
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/runtime/decision.js +105 -0
- package/dist-cjs/runtime/decision.js.map +1 -0
- package/dist-cjs/runtime/fetch-interceptor.js +162 -0
- package/dist-cjs/runtime/fetch-interceptor.js.map +1 -0
- package/dist-cjs/runtime/identity.js +194 -0
- package/dist-cjs/runtime/identity.js.map +1 -0
- package/dist-cjs/runtime/pipeline.js +124 -0
- package/dist-cjs/runtime/pipeline.js.map +1 -0
- package/package.json +91 -69
package/dist/dataset.js
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { mkdir, readFile, writeFile, access } from "node:fs/promises";
|
|
3
|
+
import { basename, resolve } from "node:path";
|
|
4
|
+
import { readBenchmarkTrace } from "./benchmark.js";
|
|
5
|
+
function assertDatasetId(value) {
|
|
6
|
+
if (!/^\d{3,}$/u.test(value)) {
|
|
7
|
+
throw new Error("dataset id must contain at least three digits, for example 001.");
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function assertCollectorCommit(value) {
|
|
11
|
+
if (!/^[0-9a-f]{7,40}$/u.test(value)) {
|
|
12
|
+
throw new Error("collector git commit must be an explicit 7-40 character hexadecimal git commit.");
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
async function assertAbsent(path) {
|
|
16
|
+
try {
|
|
17
|
+
await access(path);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
const code = error.code;
|
|
21
|
+
if (code === "ENOENT") {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
26
|
+
throw new Error(`Refusing to overwrite sealed dataset artifact: ${path}`);
|
|
27
|
+
}
|
|
28
|
+
function observationTime(observation, index) {
|
|
29
|
+
const value = Date.parse(observation.timestamp);
|
|
30
|
+
if (!Number.isFinite(value)) {
|
|
31
|
+
throw new Error(`Invalid timestamp on observation ${index + 1}: ${observation.timestamp}`);
|
|
32
|
+
}
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
function collectorNames(observations) {
|
|
36
|
+
const values = new Set();
|
|
37
|
+
for (const observation of observations) {
|
|
38
|
+
const collector = observation.metadata?.collector;
|
|
39
|
+
if (typeof collector === "string" && collector.length > 0) {
|
|
40
|
+
values.add(collector);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return [...values].sort();
|
|
44
|
+
}
|
|
45
|
+
export async function sealDataset(tracePath, options) {
|
|
46
|
+
const datasetId = options.datasetId ?? "001";
|
|
47
|
+
const outputDirectory = resolve(options.outputDirectory ?? ".once/datasets");
|
|
48
|
+
const collectorGitCommit = options.collectorGitCommit.toLowerCase();
|
|
49
|
+
assertDatasetId(datasetId);
|
|
50
|
+
assertCollectorCommit(collectorGitCommit);
|
|
51
|
+
const rawTrace = await readFile(resolve(tracePath));
|
|
52
|
+
const observations = await readBenchmarkTrace(tracePath);
|
|
53
|
+
if (observations.length === 0) {
|
|
54
|
+
throw new Error("Cannot seal an empty dataset.");
|
|
55
|
+
}
|
|
56
|
+
const onceDecisionCount = observations.filter(observation => observation.once_decision !== undefined).length;
|
|
57
|
+
if (onceDecisionCount > 0) {
|
|
58
|
+
throw new Error(`Refusing to seal raw holdout: found ${onceDecisionCount} observation(s) containing once_decision.`);
|
|
59
|
+
}
|
|
60
|
+
const times = observations.map(observationTime);
|
|
61
|
+
const collectionStartedAt = new Date(Math.min(...times)).toISOString();
|
|
62
|
+
const collectionEndedAt = new Date(Math.max(...times)).toISOString();
|
|
63
|
+
const uniqueResources = new Set(observations.map(observation => observation.resource)).size;
|
|
64
|
+
const sha256 = createHash("sha256")
|
|
65
|
+
.update(rawTrace)
|
|
66
|
+
.digest("hex");
|
|
67
|
+
const stem = `once-dataset-${datasetId}`;
|
|
68
|
+
const datasetFilename = `${stem}.jsonl`;
|
|
69
|
+
const sha256Filename = `${stem}.sha256`;
|
|
70
|
+
const manifestFilename = `${stem}-manifest.json`;
|
|
71
|
+
const datasetPath = resolve(outputDirectory, datasetFilename);
|
|
72
|
+
const sha256Path = resolve(outputDirectory, sha256Filename);
|
|
73
|
+
const manifestPath = resolve(outputDirectory, manifestFilename);
|
|
74
|
+
await mkdir(outputDirectory, { recursive: true });
|
|
75
|
+
await Promise.all([
|
|
76
|
+
assertAbsent(datasetPath),
|
|
77
|
+
assertAbsent(sha256Path),
|
|
78
|
+
assertAbsent(manifestPath)
|
|
79
|
+
]);
|
|
80
|
+
const sealedAt = options.sealedAt ?? new Date().toISOString();
|
|
81
|
+
if (!Number.isFinite(Date.parse(sealedAt))) {
|
|
82
|
+
throw new Error(`Invalid sealed_at timestamp: ${sealedAt}`);
|
|
83
|
+
}
|
|
84
|
+
const manifest = {
|
|
85
|
+
schema_version: "once-dataset-manifest-v1",
|
|
86
|
+
observation_schema: "once-benchmark-observation-v1",
|
|
87
|
+
trace_format: "jsonl",
|
|
88
|
+
dataset_id: datasetId,
|
|
89
|
+
sealed_at: new Date(sealedAt).toISOString(),
|
|
90
|
+
dataset_filename: datasetFilename,
|
|
91
|
+
sha256_filename: sha256Filename,
|
|
92
|
+
manifest_filename: manifestFilename,
|
|
93
|
+
source_trace_filename: basename(tracePath),
|
|
94
|
+
sha256,
|
|
95
|
+
raw_bytes: rawTrace.byteLength,
|
|
96
|
+
observations: observations.length,
|
|
97
|
+
unique_resources: uniqueResources,
|
|
98
|
+
collection_started_at: collectionStartedAt,
|
|
99
|
+
collection_ended_at: collectionEndedAt,
|
|
100
|
+
collectors: collectorNames(observations),
|
|
101
|
+
collector_git_commit: collectorGitCommit,
|
|
102
|
+
once_decision_count: 0
|
|
103
|
+
};
|
|
104
|
+
// The dataset bytes are written exactly as collected. No reserialization.
|
|
105
|
+
await writeFile(datasetPath, rawTrace, { flag: "wx" });
|
|
106
|
+
await writeFile(sha256Path, `${sha256} ${datasetFilename}\n`, { encoding: "utf8", flag: "wx" });
|
|
107
|
+
await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, { encoding: "utf8", flag: "wx" });
|
|
108
|
+
return {
|
|
109
|
+
datasetPath,
|
|
110
|
+
sha256Path,
|
|
111
|
+
manifestPath,
|
|
112
|
+
manifest
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export async function runDatasetSeal(tracePath, options) {
|
|
116
|
+
const result = await sealDataset(tracePath, options);
|
|
117
|
+
console.log("");
|
|
118
|
+
console.log("Once Dataset Seal");
|
|
119
|
+
console.log("-----------------");
|
|
120
|
+
console.log(`Dataset: ${result.datasetPath}`);
|
|
121
|
+
console.log(`SHA-256: ${result.manifest.sha256}`);
|
|
122
|
+
console.log(`Hash file: ${result.sha256Path}`);
|
|
123
|
+
console.log(`Manifest: ${result.manifestPath}`);
|
|
124
|
+
console.log(`Observations: ${result.manifest.observations}`);
|
|
125
|
+
console.log(`Unique resources: ${result.manifest.unique_resources}`);
|
|
126
|
+
console.log(`Collection start: ${result.manifest.collection_started_at}`);
|
|
127
|
+
console.log(`Collection end: ${result.manifest.collection_ended_at}`);
|
|
128
|
+
console.log(`Collector commit: ${result.manifest.collector_git_commit}`);
|
|
129
|
+
console.log("Policy decisions present: 0");
|
|
130
|
+
console.log("Status: SEALED RAW HOLDOUT");
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=dataset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset.js","sourceRoot":"","sources":["../src/dataset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EACL,kBAAkB,EAEnB,MAAM,gBAAgB,CAAC;AAqCxB,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;QACnD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,eAAe,CACtB,WAAiC,EACjC,KAAa;IAEb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,oCAAoC,KAAK,GAAG,CAAC,KAAK,WAAW,CAAC,SAAS,EAAE,CAC1E,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CACrB,YAAoC;IAEpC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC;QAClD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,OAA2B;IAE3B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC7C,MAAM,eAAe,GAAG,OAAO,CAC7B,OAAO,CAAC,eAAe,IAAI,gBAAgB,CAC5C,CAAC;IACF,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;IAEpE,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3B,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAEzD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAC3C,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,aAAa,KAAK,SAAS,CACvD,CAAC,MAAM,CAAC;IAET,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,uCAAuC,iBAAiB,2CAA2C,CACpG,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,mBAAmB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACvE,MAAM,iBAAiB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACrE,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CACtD,CAAC,IAAI,CAAC;IAEP,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;SAChC,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjB,MAAM,IAAI,GAAG,gBAAgB,SAAS,EAAE,CAAC;IACzC,MAAM,eAAe,GAAG,GAAG,IAAI,QAAQ,CAAC;IACxC,MAAM,cAAc,GAAG,GAAG,IAAI,SAAS,CAAC;IACxC,MAAM,gBAAgB,GAAG,GAAG,IAAI,gBAAgB,CAAC;IAEjD,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAEhE,MAAM,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,YAAY,CAAC,WAAW,CAAC;QACzB,YAAY,CAAC,UAAU,CAAC;QACxB,YAAY,CAAC,YAAY,CAAC;KAC3B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,QAAQ,GAAoB;QAChC,cAAc,EAAE,0BAA0B;QAC1C,kBAAkB,EAAE,+BAA+B;QACnD,YAAY,EAAE,OAAO;QACrB,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;QAC3C,gBAAgB,EAAE,eAAe;QACjC,eAAe,EAAE,cAAc;QAC/B,iBAAiB,EAAE,gBAAgB;QACnC,qBAAqB,EAAE,QAAQ,CAAC,SAAS,CAAC;QAC1C,MAAM;QACN,SAAS,EAAE,QAAQ,CAAC,UAAU;QAC9B,YAAY,EAAE,YAAY,CAAC,MAAM;QACjC,gBAAgB,EAAE,eAAe;QACjC,qBAAqB,EAAE,mBAAmB;QAC1C,mBAAmB,EAAE,iBAAiB;QACtC,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC;QACxC,oBAAoB,EAAE,kBAAkB;QACxC,mBAAmB,EAAE,CAAC;KACvB,CAAC;IAEF,0EAA0E;IAC1E,MAAM,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,SAAS,CACb,UAAU,EACV,GAAG,MAAM,KAAK,eAAe,IAAI,EACjC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CACjC,CAAC;IACF,MAAM,SAAS,CACb,YAAY,EACZ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACxC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CACjC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,UAAU;QACV,YAAY;QACZ,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,OAA2B;IAE3B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAErD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAE1C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { type OnceFetchInstallation, type OnceFetchInterceptorOptions } from "./runtime/fetch-interceptor.js";
|
|
1
2
|
export type OnceProvider = "blind_test" | "http_v1" | "stripe_v1" | (string & {});
|
|
2
3
|
export interface OnceOptions {
|
|
3
4
|
apiKey?: string;
|
|
4
5
|
baseUrl?: string;
|
|
5
6
|
timeoutMs?: number;
|
|
6
7
|
networkRetries?: number;
|
|
8
|
+
fetchImpl?: typeof fetch;
|
|
7
9
|
}
|
|
8
10
|
export interface ExecuteInput {
|
|
9
11
|
operationId: string;
|
|
@@ -21,6 +23,13 @@ export interface ExecuteResponse {
|
|
|
21
23
|
provider_executed_at?: string | null;
|
|
22
24
|
[key: string]: unknown;
|
|
23
25
|
}
|
|
26
|
+
export interface OnceRuntimeHttpReplay {
|
|
27
|
+
status: number;
|
|
28
|
+
body_text: string;
|
|
29
|
+
headers: Record<string, string>;
|
|
30
|
+
recorded_at?: string;
|
|
31
|
+
}
|
|
32
|
+
export type OnceRuntimeFetchOptions = Omit<OnceFetchInterceptorOptions, "protect" | "fetchImpl"> & OnceOptions;
|
|
24
33
|
export interface TruthResponse {
|
|
25
34
|
operation_id: string;
|
|
26
35
|
attempts?: number;
|
|
@@ -46,6 +55,9 @@ export declare class OnceError extends Error {
|
|
|
46
55
|
cause?: unknown;
|
|
47
56
|
});
|
|
48
57
|
}
|
|
58
|
+
export declare class OnceRuntimeHttpShapeError extends OnceError {
|
|
59
|
+
constructor(message: string, code?: string);
|
|
60
|
+
}
|
|
49
61
|
export declare class OnceTimeoutError extends OnceError {
|
|
50
62
|
constructor(message?: string, cause?: unknown);
|
|
51
63
|
}
|
|
@@ -57,6 +69,7 @@ export declare class Once {
|
|
|
57
69
|
readonly baseUrl: string;
|
|
58
70
|
readonly timeoutMs: number;
|
|
59
71
|
readonly networkRetries: number;
|
|
72
|
+
readonly fetchImpl: typeof fetch;
|
|
60
73
|
constructor(options?: OnceOptions);
|
|
61
74
|
/**
|
|
62
75
|
* Generate a deterministic Once operation ID.
|
|
@@ -72,5 +85,31 @@ export declare class Once {
|
|
|
72
85
|
truth(operationId: string): Promise<TruthResponse>;
|
|
73
86
|
private request;
|
|
74
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Create a fetch-compatible Once Runtime.
|
|
90
|
+
*
|
|
91
|
+
* v0.1 proven protected execution shape:
|
|
92
|
+
* POST + application/json + stable identity.
|
|
93
|
+
*/
|
|
94
|
+
export declare function createOnceRuntimeFetch(options?: OnceRuntimeFetchOptions): typeof fetch;
|
|
95
|
+
/**
|
|
96
|
+
* Explicit reversible global fetch installation.
|
|
97
|
+
*/
|
|
98
|
+
export declare function installOnceRuntimeFetch(options?: OnceRuntimeFetchOptions): OnceFetchInstallation;
|
|
99
|
+
export { createOnceFetchInterceptor, installOnceFetchInterceptor, OnceRuntimeBlockedError } from "./runtime/fetch-interceptor.js";
|
|
100
|
+
export type { OnceFetchInstallation, OnceFetchInterceptorOptions, OnceProtectedFetchContext, OnceProtectedFetchHandler } from "./runtime/fetch-interceptor.js";
|
|
101
|
+
export { prepareHttpExecution } from "./runtime/pipeline.js";
|
|
102
|
+
export { decideHttpExecution } from "./runtime/decision.js";
|
|
103
|
+
export { resolveHttpOperationIdentity } from "./runtime/identity.js";
|
|
75
104
|
export default Once;
|
|
105
|
+
export { CONNECT_DECISION, classifyConnectOperation } from "./connect/classifier.js";
|
|
106
|
+
export type { ConnectDecision, ConnectSafetyDeclaration, ConnectClassification } from "./connect/classifier.js";
|
|
107
|
+
export { ConnectBindingError, canonicalizeConnectPayload, fingerprintConnectPayload, bindConnectOperation, assertConnectBindingMatch } from "./connect/binding.js";
|
|
108
|
+
export type { ConnectPayload, ConnectBinding } from "./connect/binding.js";
|
|
109
|
+
export { ConnectExecutionError, executeConnectOperation } from "./connect/execute.js";
|
|
110
|
+
export type { ConnectProtectedContext, ConnectExecutionInput } from "./connect/execute.js";
|
|
111
|
+
export { ConnectKernelError, executeConnectWithOnce } from "./connect/kernel.js";
|
|
112
|
+
export type { ConnectKernelInput } from "./connect/kernel.js";
|
|
113
|
+
export { OpenAIAgentsConnectError, executeOpenAIAgentsConnectTool } from "./connect/openai-agents.js";
|
|
114
|
+
export type { OpenAIAgentsToolInput, OpenAIAgentsAction, OpenAIAgentsConnectToolInput } from "./connect/openai-agents.js";
|
|
76
115
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Buffer } from "node:buffer";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
|
+
import { createOnceFetchInterceptor } from "./runtime/fetch-interceptor.js";
|
|
3
4
|
const DEFAULT_BASE_URL = "https://once-q18-cloud.pennywatch.workers.dev";
|
|
4
5
|
export class OnceError extends Error {
|
|
5
6
|
status;
|
|
@@ -17,6 +18,15 @@ export class OnceError extends Error {
|
|
|
17
18
|
this.retryAfter = options.retryAfter;
|
|
18
19
|
}
|
|
19
20
|
}
|
|
21
|
+
export class OnceRuntimeHttpShapeError extends OnceError {
|
|
22
|
+
constructor(message, code = "unsupported_runtime_http_shape") {
|
|
23
|
+
super(message, {
|
|
24
|
+
code
|
|
25
|
+
});
|
|
26
|
+
this.name =
|
|
27
|
+
"OnceRuntimeHttpShapeError";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
20
30
|
export class OnceTimeoutError extends OnceError {
|
|
21
31
|
constructor(message = "Once request timed out", cause) {
|
|
22
32
|
super(message, {
|
|
@@ -40,6 +50,7 @@ export class Once {
|
|
|
40
50
|
baseUrl;
|
|
41
51
|
timeoutMs;
|
|
42
52
|
networkRetries;
|
|
53
|
+
fetchImpl;
|
|
43
54
|
constructor(options = {}) {
|
|
44
55
|
const apiKey = options.apiKey ??
|
|
45
56
|
process.env.ONCE_API_KEY;
|
|
@@ -56,6 +67,9 @@ export class Once {
|
|
|
56
67
|
options.timeoutMs ?? 10_000;
|
|
57
68
|
this.networkRetries =
|
|
58
69
|
options.networkRetries ?? 2;
|
|
70
|
+
this.fetchImpl =
|
|
71
|
+
options.fetchImpl ??
|
|
72
|
+
globalThis.fetch;
|
|
59
73
|
}
|
|
60
74
|
/**
|
|
61
75
|
* Generate a deterministic Once operation ID.
|
|
@@ -164,8 +178,9 @@ export class Once {
|
|
|
164
178
|
const controller = new AbortController();
|
|
165
179
|
const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
166
180
|
try {
|
|
167
|
-
const response = await
|
|
181
|
+
const response = await this.fetchImpl(`${this.baseUrl}${path}`, {
|
|
168
182
|
...init,
|
|
183
|
+
redirect: "error",
|
|
169
184
|
signal: controller.signal,
|
|
170
185
|
headers: {
|
|
171
186
|
authorization: `Bearer ${this.apiKey}`,
|
|
@@ -173,8 +188,8 @@ export class Once {
|
|
|
173
188
|
...init.headers
|
|
174
189
|
}
|
|
175
190
|
});
|
|
176
|
-
clearTimeout(timeout);
|
|
177
191
|
const raw = await response.text();
|
|
192
|
+
clearTimeout(timeout);
|
|
178
193
|
let body = null;
|
|
179
194
|
if (raw) {
|
|
180
195
|
try {
|
|
@@ -233,8 +248,250 @@ export class Once {
|
|
|
233
248
|
throw new OnceNetworkError("Could not reach Once", lastError);
|
|
234
249
|
}
|
|
235
250
|
}
|
|
251
|
+
function runtimeJsonContentType(request) {
|
|
252
|
+
const contentType = request.headers
|
|
253
|
+
.get("content-type")
|
|
254
|
+
?.toLowerCase() ??
|
|
255
|
+
"";
|
|
256
|
+
return contentType.includes("application/json");
|
|
257
|
+
}
|
|
258
|
+
function assertRuntimeHeaderShape(request) {
|
|
259
|
+
const allowed = new Set([
|
|
260
|
+
"content-type",
|
|
261
|
+
"idempotency-key",
|
|
262
|
+
"x-idempotency-key"
|
|
263
|
+
]);
|
|
264
|
+
for (const [name] of request.headers) {
|
|
265
|
+
if (!allowed.has(name.toLowerCase())) {
|
|
266
|
+
throw new OnceRuntimeHttpShapeError(`Once Runtime HTTP v0.1 cannot safely preserve target header "${name}".`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
function parseRuntimeReplay(value) {
|
|
271
|
+
if (value === null ||
|
|
272
|
+
typeof value !== "object" ||
|
|
273
|
+
Array.isArray(value)) {
|
|
274
|
+
throw new OnceError("Once confirmed the operation but did not return a replayable HTTP response.", {
|
|
275
|
+
code: "runtime_http_response_missing",
|
|
276
|
+
body: value
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
const candidate = value;
|
|
280
|
+
const status = Number(candidate.status);
|
|
281
|
+
/*
|
|
282
|
+
* Fetch Response constructors cannot represent
|
|
283
|
+
* informational 1xx responses.
|
|
284
|
+
*/
|
|
285
|
+
if (!Number.isInteger(status) ||
|
|
286
|
+
status < 200 ||
|
|
287
|
+
status > 599) {
|
|
288
|
+
throw new OnceError("Once returned an HTTP replay with an unsupported status.", {
|
|
289
|
+
code: "runtime_http_response_invalid_status",
|
|
290
|
+
body: value
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
if (typeof candidate.body_text !==
|
|
294
|
+
"string") {
|
|
295
|
+
throw new OnceError("Once returned an HTTP replay without a valid text body.", {
|
|
296
|
+
code: "runtime_http_response_invalid_body",
|
|
297
|
+
body: value
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
if (candidate.headers === null ||
|
|
301
|
+
typeof candidate.headers !==
|
|
302
|
+
"object" ||
|
|
303
|
+
Array.isArray(candidate.headers)) {
|
|
304
|
+
throw new OnceError("Once returned an HTTP replay without valid headers.", {
|
|
305
|
+
code: "runtime_http_response_invalid_headers",
|
|
306
|
+
body: value
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
const headers = {};
|
|
310
|
+
for (const [name, headerValue] of Object.entries(candidate.headers)) {
|
|
311
|
+
if (typeof headerValue !==
|
|
312
|
+
"string") {
|
|
313
|
+
throw new OnceError("Once returned a non-string HTTP replay header.", {
|
|
314
|
+
code: "runtime_http_response_invalid_headers",
|
|
315
|
+
body: value
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
headers[name] =
|
|
319
|
+
headerValue;
|
|
320
|
+
}
|
|
321
|
+
const nullBody = status === 204 ||
|
|
322
|
+
status === 205 ||
|
|
323
|
+
status === 304;
|
|
324
|
+
if (nullBody &&
|
|
325
|
+
candidate.body_text.length > 0) {
|
|
326
|
+
throw new OnceError("Once returned a body for an HTTP status that cannot carry one.", {
|
|
327
|
+
code: "runtime_http_response_invalid_body",
|
|
328
|
+
body: value
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
return {
|
|
332
|
+
status,
|
|
333
|
+
body_text: candidate.body_text,
|
|
334
|
+
headers,
|
|
335
|
+
...(typeof candidate.recorded_at ===
|
|
336
|
+
"string"
|
|
337
|
+
? {
|
|
338
|
+
recorded_at: candidate.recorded_at
|
|
339
|
+
}
|
|
340
|
+
: {})
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
function createRuntimeCloudProtector(once) {
|
|
344
|
+
return async ({ request, decision, provider }) => {
|
|
345
|
+
if (decision.decision !==
|
|
346
|
+
"PROTECT") {
|
|
347
|
+
throw new OnceError("Runtime protector received a non-protected operation.", {
|
|
348
|
+
code: "runtime_invalid_protect_state"
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
if (!decision.operationId) {
|
|
352
|
+
throw new OnceError("Runtime protected operation is missing its resolved operation ID.", {
|
|
353
|
+
code: "runtime_operation_id_missing"
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
if (typeof provider !==
|
|
357
|
+
"string" ||
|
|
358
|
+
provider.trim().length ===
|
|
359
|
+
0) {
|
|
360
|
+
throw new OnceError("Runtime protected operation is missing its resolved provider.", {
|
|
361
|
+
code: "runtime_provider_missing"
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
const method = request.method
|
|
365
|
+
.trim()
|
|
366
|
+
.toUpperCase();
|
|
367
|
+
/*
|
|
368
|
+
* Classification recognizes POST/PUT/PATCH/DELETE as
|
|
369
|
+
* consequential. Execution v0.1 intentionally proves
|
|
370
|
+
* only POST + JSON.
|
|
371
|
+
*/
|
|
372
|
+
if (method !== "POST") {
|
|
373
|
+
throw new OnceRuntimeHttpShapeError(`Once Runtime HTTP v0.1 only has a proven protected execution contract for POST, not ${method || "(empty)"}.`);
|
|
374
|
+
}
|
|
375
|
+
if (!runtimeJsonContentType(request)) {
|
|
376
|
+
throw new OnceRuntimeHttpShapeError("Once Runtime HTTP v0.1 only protects application/json POST bodies.");
|
|
377
|
+
}
|
|
378
|
+
assertRuntimeHeaderShape(request);
|
|
379
|
+
const bodyText = await request
|
|
380
|
+
.clone()
|
|
381
|
+
.text();
|
|
382
|
+
if (bodyText.trim().length ===
|
|
383
|
+
0) {
|
|
384
|
+
throw new OnceRuntimeHttpShapeError("Once Runtime HTTP v0.1 requires a non-empty JSON body.");
|
|
385
|
+
}
|
|
386
|
+
try {
|
|
387
|
+
JSON.parse(bodyText);
|
|
388
|
+
}
|
|
389
|
+
catch {
|
|
390
|
+
throw new OnceRuntimeHttpShapeError("Once Runtime HTTP v0.1 requires a valid JSON body.");
|
|
391
|
+
}
|
|
392
|
+
const result = await once.execute({
|
|
393
|
+
operationId: decision.operationId,
|
|
394
|
+
provider: provider.trim(),
|
|
395
|
+
action: {
|
|
396
|
+
type: "http_write_v1",
|
|
397
|
+
method: "POST",
|
|
398
|
+
url: request.url,
|
|
399
|
+
body_json: bodyText
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
const replay = parseRuntimeReplay(result.http_response);
|
|
403
|
+
const nullBody = replay.status === 204 ||
|
|
404
|
+
replay.status === 205 ||
|
|
405
|
+
replay.status === 304;
|
|
406
|
+
return new Response(nullBody
|
|
407
|
+
? null
|
|
408
|
+
: replay.body_text, {
|
|
409
|
+
status: replay.status,
|
|
410
|
+
headers: replay.headers
|
|
411
|
+
});
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Create a fetch-compatible Once Runtime.
|
|
416
|
+
*
|
|
417
|
+
* v0.1 proven protected execution shape:
|
|
418
|
+
* POST + application/json + stable identity.
|
|
419
|
+
*/
|
|
420
|
+
export function createOnceRuntimeFetch(options = {}) {
|
|
421
|
+
const originalFetch = options.fetchImpl ??
|
|
422
|
+
globalThis.fetch;
|
|
423
|
+
if (typeof originalFetch !==
|
|
424
|
+
"function") {
|
|
425
|
+
throw new OnceError("Once Runtime requires a native fetch implementation.", {
|
|
426
|
+
code: "runtime_fetch_missing"
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
/*
|
|
430
|
+
* Once Cloud requests use the captured native fetch.
|
|
431
|
+
* They cannot recursively enter this interceptor.
|
|
432
|
+
*/
|
|
433
|
+
const once = new Once({
|
|
434
|
+
apiKey: options.apiKey,
|
|
435
|
+
baseUrl: options.baseUrl,
|
|
436
|
+
timeoutMs: options.timeoutMs,
|
|
437
|
+
networkRetries: options.networkRetries,
|
|
438
|
+
fetchImpl: originalFetch
|
|
439
|
+
});
|
|
440
|
+
return createOnceFetchInterceptor({
|
|
441
|
+
provider: options.provider,
|
|
442
|
+
shouldProtect: options.shouldProtect,
|
|
443
|
+
resolveProvider: options.resolveProvider,
|
|
444
|
+
resolveOperationId: options.resolveOperationId,
|
|
445
|
+
fetchImpl: originalFetch,
|
|
446
|
+
protect: createRuntimeCloudProtector(once)
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Explicit reversible global fetch installation.
|
|
451
|
+
*/
|
|
452
|
+
export function installOnceRuntimeFetch(options = {}) {
|
|
453
|
+
const previous = globalThis.fetch;
|
|
454
|
+
const intercepted = createOnceRuntimeFetch({
|
|
455
|
+
...options,
|
|
456
|
+
fetchImpl: options.fetchImpl ??
|
|
457
|
+
previous
|
|
458
|
+
});
|
|
459
|
+
globalThis.fetch =
|
|
460
|
+
intercepted;
|
|
461
|
+
let restored = false;
|
|
462
|
+
return {
|
|
463
|
+
fetch: intercepted,
|
|
464
|
+
restore: () => {
|
|
465
|
+
if (restored) {
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
468
|
+
if (globalThis.fetch ===
|
|
469
|
+
intercepted) {
|
|
470
|
+
globalThis.fetch =
|
|
471
|
+
previous;
|
|
472
|
+
}
|
|
473
|
+
restored =
|
|
474
|
+
true;
|
|
475
|
+
}
|
|
476
|
+
};
|
|
477
|
+
}
|
|
236
478
|
function sleep(ms) {
|
|
237
479
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
238
480
|
}
|
|
481
|
+
export { createOnceFetchInterceptor, installOnceFetchInterceptor, OnceRuntimeBlockedError } from "./runtime/fetch-interceptor.js";
|
|
482
|
+
export { prepareHttpExecution } from "./runtime/pipeline.js";
|
|
483
|
+
export { decideHttpExecution } from "./runtime/decision.js";
|
|
484
|
+
export { resolveHttpOperationIdentity } from "./runtime/identity.js";
|
|
239
485
|
export default Once;
|
|
486
|
+
/*
|
|
487
|
+
* Once Connect
|
|
488
|
+
*
|
|
489
|
+
* Framework-neutral execution-safety boundary for agent/tool integrations.
|
|
490
|
+
* Protected execution delegates to the existing Once kernel.
|
|
491
|
+
*/
|
|
492
|
+
export { CONNECT_DECISION, classifyConnectOperation } from "./connect/classifier.js";
|
|
493
|
+
export { ConnectBindingError, canonicalizeConnectPayload, fingerprintConnectPayload, bindConnectOperation, assertConnectBindingMatch } from "./connect/binding.js";
|
|
494
|
+
export { ConnectExecutionError, executeConnectOperation } from "./connect/execute.js";
|
|
495
|
+
export { ConnectKernelError, executeConnectWithOnce } from "./connect/kernel.js";
|
|
496
|
+
export { OpenAIAgentsConnectError, executeOpenAIAgentsConnectTool } from "./connect/openai-agents.js";
|
|
240
497
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export type OnceRuntimeDecision = "PASS" | "PROTECT" | "BLOCK";
|
|
2
|
+
export type OnceRuntimeDecisionCode = "SAFE_HTTP_METHOD" | "CONSEQUENTIAL_HTTP_WRITE" | "INVALID_URL" | "UNSUPPORTED_PROTOCOL" | "UNSUPPORTED_HTTP_METHOD" | "MISSING_PROVIDER" | "MISSING_OPERATION_ID";
|
|
3
|
+
export type OnceRuntimeHttpCall = {
|
|
4
|
+
surface: "http";
|
|
5
|
+
method: string;
|
|
6
|
+
url: string;
|
|
7
|
+
/**
|
|
8
|
+
* Stable identity for one real-world action.
|
|
9
|
+
*
|
|
10
|
+
* Retries of that same action MUST reuse
|
|
11
|
+
* the same value.
|
|
12
|
+
*/
|
|
13
|
+
operationId?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Once provider configured to perform /
|
|
16
|
+
* reconcile this external side effect.
|
|
17
|
+
*/
|
|
18
|
+
provider?: string;
|
|
19
|
+
};
|
|
20
|
+
export type OnceRuntimeDecisionResult = {
|
|
21
|
+
decision: OnceRuntimeDecision;
|
|
22
|
+
code: OnceRuntimeDecisionCode;
|
|
23
|
+
consequential: boolean;
|
|
24
|
+
method: string;
|
|
25
|
+
reason: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Decide whether an outbound HTTP operation may
|
|
29
|
+
* pass normally, must be protected by Once, or
|
|
30
|
+
* must fail closed.
|
|
31
|
+
*
|
|
32
|
+
* v0.1 intentionally does NOT guess identity.
|
|
33
|
+
*
|
|
34
|
+
* A consequential operation without a stable
|
|
35
|
+
* operationId is blocked rather than executed
|
|
36
|
+
* unsafely.
|
|
37
|
+
*/
|
|
38
|
+
export declare function decideHttpExecution(call: OnceRuntimeHttpCall): OnceRuntimeDecisionResult;
|
|
39
|
+
//# sourceMappingURL=decision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../../src/runtime/decision.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,MAAM,uBAAuB,GAC/B,kBAAkB,GAClB,0BAA0B,GAC1B,aAAa,GACb,sBAAsB,GACtB,yBAAyB,GACzB,kBAAkB,GAClB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAsCF;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,mBAAmB,GACxB,yBAAyB,CAoK3B"}
|