@bastamp/sdk 0.1.0 → 0.2.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/README.md +27 -0
- package/dist/ai-provenance.d.ts +108 -0
- package/dist/ai-provenance.d.ts.map +1 -0
- package/dist/ai-provenance.js +152 -0
- package/dist/ai-provenance.js.map +1 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -1
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +8 -3
package/README.md
CHANGED
|
@@ -97,6 +97,33 @@ const account = await client.account.get();
|
|
|
97
97
|
console.log(account.credits);
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
+
### AI provenance — attest an AI generation event
|
|
101
|
+
|
|
102
|
+
```ts
|
|
103
|
+
import { BAStamp, hashFile } from "@bastamp/sdk";
|
|
104
|
+
|
|
105
|
+
const client = new BAStamp({ apiKey: process.env.BASTAMP_API_KEY! });
|
|
106
|
+
|
|
107
|
+
const r = await client.aiProvenance.attest({
|
|
108
|
+
model: "gpt-5",
|
|
109
|
+
modelVersion: "2026-04-15",
|
|
110
|
+
prompt: userPrompt, // hashed locally — never sent
|
|
111
|
+
output: completion.text, // hashed locally — never sent
|
|
112
|
+
params: { temperature: 0.7, seed: 42 },
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
// Save the manifest alongside the AI output:
|
|
116
|
+
await fs.writeFile("output.txt", completion.text);
|
|
117
|
+
await fs.writeFile("output.provenance.json", JSON.stringify(r.manifest, null, 2));
|
|
118
|
+
console.log("anchored hash:", r.manifestHash);
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
`r.manifest` is the canonical attestation object. Deliver it with the AI output (or store it server-side). To verify later, anyone can drop the manifest on `bastamp.com/verify/<hash>` — the page recomputes the canonical SHA-256 and confirms it matches the on-chain anchor.
|
|
122
|
+
|
|
123
|
+
If your prompt or output is private, pre-hash on your side and pass `promptHash` / `outputHash` instead — the SDK never sees the cleartext. To inspect the hash without spending a credit, use `client.aiProvenance.build({...})` which returns the same manifest + hash but skips the API call.
|
|
124
|
+
|
|
125
|
+
See [`/use-cases/ai-provenance`](https://bastamp.com/use-cases/ai-provenance) for the AI Act Art. 50 framing and concrete integration examples.
|
|
126
|
+
|
|
100
127
|
### Hash any byte source
|
|
101
128
|
|
|
102
129
|
```ts
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type { BAStamp } from "./client.js";
|
|
2
|
+
import type { CreateStampResponse, RequestOptions } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Canonical manifest format BA | Stamp anchors for AI-generated content.
|
|
5
|
+
* The fields below are committed to by the on-chain hash; preserving the
|
|
6
|
+
* exact serialization (sorted keys, no whitespace) is the verifier's job.
|
|
7
|
+
*/
|
|
8
|
+
export interface AiProvenanceManifest {
|
|
9
|
+
/** Schema id — pin this so downstream parsers can reject unknown shapes. */
|
|
10
|
+
readonly schema: "bastamp.ai-provenance/v1";
|
|
11
|
+
/** Model identifier (e.g. "gpt-5", "claude-opus-4-7", "stable-diffusion-xl"). */
|
|
12
|
+
model: string;
|
|
13
|
+
/** Optional model version / snapshot (e.g. "2026-04-15"). */
|
|
14
|
+
modelVersion?: string;
|
|
15
|
+
/** SHA-256 of the prompt, 0x-prefixed lowercase. */
|
|
16
|
+
promptHash: string;
|
|
17
|
+
/** SHA-256 of the output, 0x-prefixed lowercase. */
|
|
18
|
+
outputHash: string;
|
|
19
|
+
/** Generation timestamp, ISO 8601. Defaults to now if caller omits. */
|
|
20
|
+
generatedAt: string;
|
|
21
|
+
/** Optional generation parameters (temperature, seed, top_p, etc.). */
|
|
22
|
+
params?: Record<string, unknown>;
|
|
23
|
+
/** Caller-defined metadata (request id, user id hash, etc.). */
|
|
24
|
+
metadata?: Record<string, unknown>;
|
|
25
|
+
}
|
|
26
|
+
type Hashable = string | Uint8Array | ArrayBuffer | Blob | Buffer;
|
|
27
|
+
export interface AttestInput {
|
|
28
|
+
model: string;
|
|
29
|
+
modelVersion?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Either pass `prompt` (we hash it locally — bytes never leave your
|
|
32
|
+
* machine) or `promptHash` (you've already hashed it; useful when the
|
|
33
|
+
* prompt is private and you don't want it in memory longer than needed).
|
|
34
|
+
* Pass exactly one of the two.
|
|
35
|
+
*/
|
|
36
|
+
prompt?: Hashable;
|
|
37
|
+
promptHash?: string;
|
|
38
|
+
/** Same dual mode as `prompt` — either `output` or `outputHash`, not both. */
|
|
39
|
+
output?: Hashable;
|
|
40
|
+
outputHash?: string;
|
|
41
|
+
generatedAt?: Date | string;
|
|
42
|
+
params?: Record<string, unknown>;
|
|
43
|
+
metadata?: Record<string, unknown>;
|
|
44
|
+
}
|
|
45
|
+
export interface AttestResult {
|
|
46
|
+
/** The manifest object — save this; it's needed to verify later. */
|
|
47
|
+
manifest: AiProvenanceManifest;
|
|
48
|
+
/** Canonical (sorted keys, no whitespace) JSON string — what was hashed. */
|
|
49
|
+
manifestCanon: string;
|
|
50
|
+
/** The anchored hash. Same as `stamp.stamp.contentHash`. */
|
|
51
|
+
manifestHash: string;
|
|
52
|
+
/** Underlying stamp result from /api/v1/stamps. */
|
|
53
|
+
stamp: CreateStampResponse;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* AI-provenance helper. Builds a canonical attestation manifest for a
|
|
57
|
+
* single AI generation event, hashes it locally, and anchors the hash on
|
|
58
|
+
* the BA | Stamp pipeline — no new endpoint, no schema, just an opinionated
|
|
59
|
+
* convention on top of /api/v1/stamps.
|
|
60
|
+
*
|
|
61
|
+
* The caller keeps the returned `manifest` (or `manifestCanon` string) and
|
|
62
|
+
* delivers it alongside the AI output. A verifier later drops the manifest
|
|
63
|
+
* on bastamp.com/verify/{hash}, the page recomputes the canonical SHA-256
|
|
64
|
+
* and confirms it matches the on-chain anchor.
|
|
65
|
+
*/
|
|
66
|
+
export declare class AiProvenanceResource {
|
|
67
|
+
#private;
|
|
68
|
+
constructor(client: BAStamp);
|
|
69
|
+
/**
|
|
70
|
+
* Attest a single AI generation. Charges 1 credit on first submission
|
|
71
|
+
* for a given manifest; identical re-submissions are deduped by the
|
|
72
|
+
* underlying stamping flow (returns `duplicate: true`, no charge).
|
|
73
|
+
*
|
|
74
|
+
* ```ts
|
|
75
|
+
* const r = await client.aiProvenance.attest({
|
|
76
|
+
* model: "gpt-5",
|
|
77
|
+
* modelVersion: "2026-04-15",
|
|
78
|
+
* prompt: "Summarize this email …", // hashed locally
|
|
79
|
+
* output: completion.text, // hashed locally
|
|
80
|
+
* params: { temperature: 0.7, seed: 42 },
|
|
81
|
+
* });
|
|
82
|
+
*
|
|
83
|
+
* // save r.manifest with your output; r.stamp.stamp.contentHash is on chain.
|
|
84
|
+
* await fs.writeFile("provenance.json", JSON.stringify(r.manifest, null, 2));
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
attest(input: AttestInput, options?: RequestOptions): Promise<AttestResult>;
|
|
88
|
+
/**
|
|
89
|
+
* Build the canonical manifest + hash for an AI generation, WITHOUT
|
|
90
|
+
* anchoring it. Useful when the caller wants to inspect the hash before
|
|
91
|
+
* paying a credit, or when batching many attestations to anchor with
|
|
92
|
+
* `client.stamps.createBatch` instead.
|
|
93
|
+
*/
|
|
94
|
+
build(input: AttestInput): Promise<{
|
|
95
|
+
manifest: AiProvenanceManifest;
|
|
96
|
+
manifestCanon: string;
|
|
97
|
+
manifestHash: string;
|
|
98
|
+
}>;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Canonical JSON: sorted keys at every depth, no whitespace. MUST match
|
|
102
|
+
* the implementation on bastamp.com's /verify page (verify-upload.tsx)
|
|
103
|
+
* and in the stamp-extension service worker — otherwise the hash on chain
|
|
104
|
+
* won't match what verifiers recompute.
|
|
105
|
+
*/
|
|
106
|
+
export declare function canonicalize(value: unknown): string;
|
|
107
|
+
export {};
|
|
108
|
+
//# sourceMappingURL=ai-provenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-provenance.d.ts","sourceRoot":"","sources":["../src/ai-provenance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGtE;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,KAAK,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,oEAAoE;IACpE,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,KAAK,EAAE,mBAAmB,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,oBAAoB;;gBAEnB,MAAM,EAAE,OAAO;IAI3B;;;;;;;;;;;;;;;;;OAiBG;IACG,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAoDrF;;;;;OAKG;IACG,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;QACvC,QAAQ,EAAE,oBAAoB,CAAC;QAC/B,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CAiCH;AAID;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMnD"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { hashFile } from "./hash.js";
|
|
2
|
+
/**
|
|
3
|
+
* AI-provenance helper. Builds a canonical attestation manifest for a
|
|
4
|
+
* single AI generation event, hashes it locally, and anchors the hash on
|
|
5
|
+
* the BA | Stamp pipeline — no new endpoint, no schema, just an opinionated
|
|
6
|
+
* convention on top of /api/v1/stamps.
|
|
7
|
+
*
|
|
8
|
+
* The caller keeps the returned `manifest` (or `manifestCanon` string) and
|
|
9
|
+
* delivers it alongside the AI output. A verifier later drops the manifest
|
|
10
|
+
* on bastamp.com/verify/{hash}, the page recomputes the canonical SHA-256
|
|
11
|
+
* and confirms it matches the on-chain anchor.
|
|
12
|
+
*/
|
|
13
|
+
export class AiProvenanceResource {
|
|
14
|
+
#client;
|
|
15
|
+
constructor(client) {
|
|
16
|
+
this.#client = client;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Attest a single AI generation. Charges 1 credit on first submission
|
|
20
|
+
* for a given manifest; identical re-submissions are deduped by the
|
|
21
|
+
* underlying stamping flow (returns `duplicate: true`, no charge).
|
|
22
|
+
*
|
|
23
|
+
* ```ts
|
|
24
|
+
* const r = await client.aiProvenance.attest({
|
|
25
|
+
* model: "gpt-5",
|
|
26
|
+
* modelVersion: "2026-04-15",
|
|
27
|
+
* prompt: "Summarize this email …", // hashed locally
|
|
28
|
+
* output: completion.text, // hashed locally
|
|
29
|
+
* params: { temperature: 0.7, seed: 42 },
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* // save r.manifest with your output; r.stamp.stamp.contentHash is on chain.
|
|
33
|
+
* await fs.writeFile("provenance.json", JSON.stringify(r.manifest, null, 2));
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
async attest(input, options = {}) {
|
|
37
|
+
if (!input.model || typeof input.model !== "string") {
|
|
38
|
+
throw new TypeError("attest: `model` is required (e.g. 'gpt-5')");
|
|
39
|
+
}
|
|
40
|
+
if ((input.prompt == null) === (input.promptHash == null)) {
|
|
41
|
+
throw new TypeError("attest: provide exactly one of `prompt` or `promptHash`");
|
|
42
|
+
}
|
|
43
|
+
if ((input.output == null) === (input.outputHash == null)) {
|
|
44
|
+
throw new TypeError("attest: provide exactly one of `output` or `outputHash`");
|
|
45
|
+
}
|
|
46
|
+
const promptHash = input.promptHash ?? (await hashFile(toBytes(input.prompt)));
|
|
47
|
+
const outputHash = input.outputHash ?? (await hashFile(toBytes(input.output)));
|
|
48
|
+
validateHash(promptHash, "promptHash");
|
|
49
|
+
validateHash(outputHash, "outputHash");
|
|
50
|
+
const generatedAt = typeof input.generatedAt === "string"
|
|
51
|
+
? input.generatedAt
|
|
52
|
+
: (input.generatedAt ?? new Date()).toISOString();
|
|
53
|
+
const manifest = {
|
|
54
|
+
schema: "bastamp.ai-provenance/v1",
|
|
55
|
+
model: input.model,
|
|
56
|
+
...(input.modelVersion != null ? { modelVersion: input.modelVersion } : {}),
|
|
57
|
+
promptHash,
|
|
58
|
+
outputHash,
|
|
59
|
+
generatedAt,
|
|
60
|
+
...(input.params != null ? { params: input.params } : {}),
|
|
61
|
+
...(input.metadata != null ? { metadata: input.metadata } : {}),
|
|
62
|
+
};
|
|
63
|
+
const manifestCanon = canonicalize(manifest);
|
|
64
|
+
const manifestHash = "0x" + (await sha256Hex(manifestCanon));
|
|
65
|
+
const short = manifestHash.slice(2, 10);
|
|
66
|
+
const fileName = `ai-provenance-${sanitize(input.model)}-${short}.json`;
|
|
67
|
+
const stamp = await this.#client.stamps.create({
|
|
68
|
+
contentHash: manifestHash,
|
|
69
|
+
fileName,
|
|
70
|
+
fileSize: manifestCanon.length,
|
|
71
|
+
mimeType: "application/x-bastamp-ai-provenance",
|
|
72
|
+
}, options);
|
|
73
|
+
return { manifest, manifestCanon, manifestHash, stamp };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Build the canonical manifest + hash for an AI generation, WITHOUT
|
|
77
|
+
* anchoring it. Useful when the caller wants to inspect the hash before
|
|
78
|
+
* paying a credit, or when batching many attestations to anchor with
|
|
79
|
+
* `client.stamps.createBatch` instead.
|
|
80
|
+
*/
|
|
81
|
+
async build(input) {
|
|
82
|
+
// Reuse the same logic by extracting the pre-stamp part. Duplicated
|
|
83
|
+
// intentionally rather than refactored, to keep `attest` linear-
|
|
84
|
+
// readable — the function is small.
|
|
85
|
+
if (!input.model)
|
|
86
|
+
throw new TypeError("attest: `model` is required");
|
|
87
|
+
if ((input.prompt == null) === (input.promptHash == null)) {
|
|
88
|
+
throw new TypeError("attest: provide exactly one of `prompt` or `promptHash`");
|
|
89
|
+
}
|
|
90
|
+
if ((input.output == null) === (input.outputHash == null)) {
|
|
91
|
+
throw new TypeError("attest: provide exactly one of `output` or `outputHash`");
|
|
92
|
+
}
|
|
93
|
+
const promptHash = input.promptHash ?? (await hashFile(toBytes(input.prompt)));
|
|
94
|
+
const outputHash = input.outputHash ?? (await hashFile(toBytes(input.output)));
|
|
95
|
+
validateHash(promptHash, "promptHash");
|
|
96
|
+
validateHash(outputHash, "outputHash");
|
|
97
|
+
const generatedAt = typeof input.generatedAt === "string"
|
|
98
|
+
? input.generatedAt
|
|
99
|
+
: (input.generatedAt ?? new Date()).toISOString();
|
|
100
|
+
const manifest = {
|
|
101
|
+
schema: "bastamp.ai-provenance/v1",
|
|
102
|
+
model: input.model,
|
|
103
|
+
...(input.modelVersion != null ? { modelVersion: input.modelVersion } : {}),
|
|
104
|
+
promptHash,
|
|
105
|
+
outputHash,
|
|
106
|
+
generatedAt,
|
|
107
|
+
...(input.params != null ? { params: input.params } : {}),
|
|
108
|
+
...(input.metadata != null ? { metadata: input.metadata } : {}),
|
|
109
|
+
};
|
|
110
|
+
const manifestCanon = canonicalize(manifest);
|
|
111
|
+
const manifestHash = "0x" + (await sha256Hex(manifestCanon));
|
|
112
|
+
return { manifest, manifestCanon, manifestHash };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// ── canonicalization ──
|
|
116
|
+
/**
|
|
117
|
+
* Canonical JSON: sorted keys at every depth, no whitespace. MUST match
|
|
118
|
+
* the implementation on bastamp.com's /verify page (verify-upload.tsx)
|
|
119
|
+
* and in the stamp-extension service worker — otherwise the hash on chain
|
|
120
|
+
* won't match what verifiers recompute.
|
|
121
|
+
*/
|
|
122
|
+
export function canonicalize(value) {
|
|
123
|
+
if (value === null || typeof value !== "object")
|
|
124
|
+
return JSON.stringify(value);
|
|
125
|
+
if (Array.isArray(value))
|
|
126
|
+
return "[" + value.map(canonicalize).join(",") + "]";
|
|
127
|
+
const obj = value;
|
|
128
|
+
const keys = Object.keys(obj).sort();
|
|
129
|
+
return "{" + keys.map((k) => JSON.stringify(k) + ":" + canonicalize(obj[k])).join(",") + "}";
|
|
130
|
+
}
|
|
131
|
+
// ── helpers ──
|
|
132
|
+
function toBytes(input) {
|
|
133
|
+
if (typeof input === "string")
|
|
134
|
+
return new TextEncoder().encode(input);
|
|
135
|
+
return input;
|
|
136
|
+
}
|
|
137
|
+
function validateHash(hash, field) {
|
|
138
|
+
if (!/^0x[0-9a-f]{64}$/.test(hash)) {
|
|
139
|
+
throw new TypeError(`attest: ${field} must match 0x[0-9a-f]{64} (got "${hash.slice(0, 12)}…")`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function sanitize(s) {
|
|
143
|
+
return s.replace(/[^a-zA-Z0-9._-]/g, "_").slice(0, 32);
|
|
144
|
+
}
|
|
145
|
+
async function sha256Hex(input) {
|
|
146
|
+
const bytes = new TextEncoder().encode(input);
|
|
147
|
+
const digest = await crypto.subtle.digest("SHA-256", bytes);
|
|
148
|
+
return Array.from(new Uint8Array(digest))
|
|
149
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
150
|
+
.join("");
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=ai-provenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-provenance.js","sourceRoot":"","sources":["../src/ai-provenance.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AiProvenanceResource } from "./ai-provenance.js";
|
|
1
2
|
import type { Account, CertificateOptions, ClientOptions, CreateBatchResponse, CreateStampResponse, RequestOptions, Stamp, StampInput, BatchInput } from "./types.js";
|
|
2
3
|
/**
|
|
3
4
|
* BA | Stamp REST client.
|
|
@@ -20,6 +21,7 @@ export declare class BAStamp {
|
|
|
20
21
|
#private;
|
|
21
22
|
readonly stamps: StampsResource;
|
|
22
23
|
readonly account: AccountResource;
|
|
24
|
+
readonly aiProvenance: AiProvenanceResource;
|
|
23
25
|
constructor(opts: ClientOptions);
|
|
24
26
|
/** @internal */
|
|
25
27
|
_request<T>(method: "GET" | "POST", path: string, options?: {
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,OAAO,EAEP,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,KAAK,EACL,UAAU,EACV,UAAU,EACX,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,OAAO;;IAClB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EACV,OAAO,EAEP,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,KAAK,EACL,UAAU,EACV,UAAU,EACX,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,OAAO;;IAClB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;gBAMhC,IAAI,EAAE,aAAa;IAa/B,gBAAgB;IACV,QAAQ,CAAC,CAAC,EACd,MAAM,EAAE,KAAK,GAAG,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QACP,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;QAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,WAAW,CAAC;QAErB,GAAG,CAAC,EAAE,OAAO,CAAC;KACV,GACL,OAAO,CAAC,CAAC,CAAC;CA6Dd;AAED,cAAM,cAAc;;gBAEN,MAAM,EAAE,OAAO;IAI3B;;;;OAIG;IACG,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQ3F;;;OAGG;IACG,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAchG;;;;OAIG;IACG,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,KAAK,CAAC;IAM5E;;;OAGG;IACG,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,kBAAkB,GAAG,cAAmB,GACpD,OAAO,CAAC,UAAU,CAAC;CAavB;AAED,cAAM,eAAe;;gBAEP,MAAM,EAAE,OAAO;IAI3B,wEAAwE;IAClE,GAAG,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;CAG1D"}
|
package/dist/client.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { BAStampError, BAStampInvalidRequestError, BAStampUnauthorizedError, BAStampNoCreditsError, BAStampNotFoundError, BAStampConflictError, BAStampRateLimitedError, } from "./errors.js";
|
|
2
2
|
import { backoffMs, retryAfterMs, shouldRetry, sleep } from "./retry.js";
|
|
3
|
+
import { AiProvenanceResource } from "./ai-provenance.js";
|
|
3
4
|
const DEFAULT_BASE_URL = "https://bastamp.com";
|
|
4
5
|
const DEFAULT_MAX_RETRIES = 3;
|
|
5
|
-
const USER_AGENT = "bastamp-sdk-ts/0.
|
|
6
|
+
const USER_AGENT = "bastamp-sdk-ts/0.2.0";
|
|
6
7
|
/**
|
|
7
8
|
* BA | Stamp REST client.
|
|
8
9
|
*
|
|
@@ -23,6 +24,7 @@ const USER_AGENT = "bastamp-sdk-ts/0.1.0";
|
|
|
23
24
|
export class BAStamp {
|
|
24
25
|
stamps;
|
|
25
26
|
account;
|
|
27
|
+
aiProvenance;
|
|
26
28
|
#apiKey;
|
|
27
29
|
#baseUrl;
|
|
28
30
|
#maxRetries;
|
|
@@ -37,6 +39,7 @@ export class BAStamp {
|
|
|
37
39
|
this.#fetch = opts.fetch ?? globalThis.fetch.bind(globalThis);
|
|
38
40
|
this.stamps = new StampsResource(this);
|
|
39
41
|
this.account = new AccountResource(this);
|
|
42
|
+
this.aiProvenance = new AiProvenanceResource(this);
|
|
40
43
|
}
|
|
41
44
|
/** @internal */
|
|
42
45
|
async _request(method, path, options = {}) {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { BAStamp } from "./client.js";
|
|
2
2
|
export { hashFile } from "./hash.js";
|
|
3
|
+
export { canonicalize } from "./ai-provenance.js";
|
|
4
|
+
export type { AiProvenanceManifest, AttestInput, AttestResult, } from "./ai-provenance.js";
|
|
3
5
|
export { BAStampError, BAStampInvalidRequestError, BAStampUnauthorizedError, BAStampNoCreditsError, BAStampNotFoundError, BAStampConflictError, BAStampRateLimitedError, } from "./errors.js";
|
|
4
6
|
export type { Account, BatchInput, BitcoinAnchor, CertificateOptions, ClientOptions, ContentHash, CreateBatchResponse, CreateStampResponse, PolygonAnchor, RequestOptions, Stamp, StampInput, StampResult, StampStatus, } from "./types.js";
|
|
5
7
|
//# 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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,OAAO,EACP,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,KAAK,EACL,UAAU,EACV,WAAW,EACX,WAAW,GACZ,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,OAAO,EACP,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,KAAK,EACL,UAAU,EACV,WAAW,EACX,WAAW,GACZ,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { BAStamp } from "./client.js";
|
|
2
2
|
export { hashFile } from "./hash.js";
|
|
3
|
+
export { canonicalize } from "./ai-provenance.js";
|
|
3
4
|
export { BAStampError, BAStampInvalidRequestError, BAStampUnauthorizedError, BAStampNoCreditsError, BAStampNotFoundError, BAStampConflictError, BAStampRateLimitedError, } from "./errors.js";
|
|
4
5
|
//# 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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastamp/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Official TypeScript SDK for the BA | Stamp REST API — anchor SHA-256 hashes on Polygon.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Aletheia Tech Ltd",
|
|
@@ -44,12 +44,17 @@
|
|
|
44
44
|
"scripts": {
|
|
45
45
|
"build": "tsc -p tsconfig.json",
|
|
46
46
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
47
|
+
"test": "vitest run",
|
|
48
|
+
"test:watch": "vitest",
|
|
49
|
+
"test:coverage": "vitest run --coverage",
|
|
47
50
|
"clean": "rm -rf dist",
|
|
48
|
-
"prepublishOnly": "npm run clean && npm run build"
|
|
51
|
+
"prepublishOnly": "npm run clean && npm run typecheck && npm test && npm run build"
|
|
49
52
|
},
|
|
50
53
|
"devDependencies": {
|
|
51
54
|
"@types/node": "^22.0.0",
|
|
55
|
+
"@vitest/coverage-v8": "^4.1.6",
|
|
52
56
|
"tsx": "^4.21.0",
|
|
53
|
-
"typescript": "^5.7.0"
|
|
57
|
+
"typescript": "^5.7.0",
|
|
58
|
+
"vitest": "^4.1.6"
|
|
54
59
|
}
|
|
55
60
|
}
|