inamprotocol 0.6.0 → 0.7.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/client.d.ts +7 -0
- package/dist/client.js +16 -1
- package/dist/client.js.map +1 -1
- package/dist/core/pagination.d.ts +19 -0
- package/dist/core/pagination.js +25 -0
- package/dist/core/pagination.js.map +1 -0
- package/dist/core/signingString.d.ts +26 -0
- package/dist/core/signingString.js +31 -0
- package/dist/core/signingString.js.map +1 -0
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import type { AgentRecord, ExecutionReceipt, ExternalKeyType, JobOffer, JobRecor
|
|
|
12
12
|
export declare class InamClient {
|
|
13
13
|
private readonly baseUrl;
|
|
14
14
|
private readonly keypair;
|
|
15
|
+
private readonly host;
|
|
15
16
|
constructor(baseUrl: string, keypair: Keypair);
|
|
16
17
|
get did(): string;
|
|
17
18
|
private request;
|
|
@@ -45,8 +46,11 @@ export declare class InamClient {
|
|
|
45
46
|
capability?: string;
|
|
46
47
|
minReputation?: number;
|
|
47
48
|
supports?: string;
|
|
49
|
+
limit?: number;
|
|
50
|
+
offset?: number;
|
|
48
51
|
}): Promise<{
|
|
49
52
|
agents: AgentRecord[];
|
|
53
|
+
hasMore: boolean;
|
|
50
54
|
}>;
|
|
51
55
|
getReputation(id: string): Promise<ReputationResult>;
|
|
52
56
|
getReceipt(receiptId: string): Promise<ExecutionReceipt>;
|
|
@@ -100,8 +104,11 @@ export declare class InamClient {
|
|
|
100
104
|
searchJobs(query: {
|
|
101
105
|
capability?: string;
|
|
102
106
|
status?: string;
|
|
107
|
+
limit?: number;
|
|
108
|
+
offset?: number;
|
|
103
109
|
}): Promise<{
|
|
104
110
|
jobs: JobRecord[];
|
|
111
|
+
hasMore: boolean;
|
|
105
112
|
}>;
|
|
106
113
|
submitOffer(jobId: string, message?: string): Promise<JobRecord>;
|
|
107
114
|
listOffers(jobId: string): Promise<{
|
package/dist/client.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { canonicalize } from "./crypto/canonical.js";
|
|
2
2
|
import { sha256Hex, sign, toBase64 } from "./crypto/keys.js";
|
|
3
|
+
import { buildSigningStringV2, SIG_VERSION_HEADER, CURRENT_SIG_VERSION } from "./core/signingString.js";
|
|
3
4
|
import { buildSignableContent } from "./core/receiptContent.js";
|
|
4
5
|
import { buildSignableVerificationContent } from "./core/verificationContent.js";
|
|
5
6
|
/**
|
|
@@ -12,9 +13,14 @@ import { buildSignableVerificationContent } from "./core/verificationContent.js"
|
|
|
12
13
|
export class InamClient {
|
|
13
14
|
baseUrl;
|
|
14
15
|
keypair;
|
|
16
|
+
host;
|
|
15
17
|
constructor(baseUrl, keypair) {
|
|
16
18
|
this.baseUrl = baseUrl;
|
|
17
19
|
this.keypair = keypair;
|
|
20
|
+
// Signed for automatically (SPEC.md v0.28, host-binding) -- derived from
|
|
21
|
+
// the same baseUrl the request actually goes to, so this can't drift
|
|
22
|
+
// from what the server sees as the request's real Host header.
|
|
23
|
+
this.host = new URL(baseUrl).host;
|
|
18
24
|
}
|
|
19
25
|
get did() {
|
|
20
26
|
return this.keypair.did;
|
|
@@ -23,13 +29,14 @@ export class InamClient {
|
|
|
23
29
|
const rawBody = body !== undefined ? JSON.stringify(body) : "";
|
|
24
30
|
const timestamp = Date.now().toString();
|
|
25
31
|
const bodyHash = sha256Hex(rawBody);
|
|
26
|
-
const signingString =
|
|
32
|
+
const signingString = buildSigningStringV2(method, path, this.host, timestamp, bodyHash);
|
|
27
33
|
const signature = toBase64(sign(new TextEncoder().encode(signingString), this.keypair.privateKey));
|
|
28
34
|
const headers = {
|
|
29
35
|
"content-type": "application/json",
|
|
30
36
|
"inam-agent": this.keypair.did,
|
|
31
37
|
"inam-timestamp": timestamp,
|
|
32
38
|
"inam-signature": signature,
|
|
39
|
+
[SIG_VERSION_HEADER]: CURRENT_SIG_VERSION,
|
|
33
40
|
};
|
|
34
41
|
if (opts?.idempotencyKey)
|
|
35
42
|
headers["idempotency-key"] = opts.idempotencyKey;
|
|
@@ -102,6 +109,10 @@ export class InamClient {
|
|
|
102
109
|
params.set("min_reputation", String(query.minReputation));
|
|
103
110
|
if (query.supports)
|
|
104
111
|
params.set("supports", query.supports);
|
|
112
|
+
if (query.limit !== undefined)
|
|
113
|
+
params.set("limit", String(query.limit));
|
|
114
|
+
if (query.offset !== undefined)
|
|
115
|
+
params.set("offset", String(query.offset));
|
|
105
116
|
return this.request("GET", `/v1/agents/search?${params.toString()}`);
|
|
106
117
|
}
|
|
107
118
|
getReputation(id) {
|
|
@@ -195,6 +206,10 @@ export class InamClient {
|
|
|
195
206
|
params.set("capability", query.capability);
|
|
196
207
|
if (query.status)
|
|
197
208
|
params.set("status", query.status);
|
|
209
|
+
if (query.limit !== undefined)
|
|
210
|
+
params.set("limit", String(query.limit));
|
|
211
|
+
if (query.offset !== undefined)
|
|
212
|
+
params.set("offset", String(query.offset));
|
|
198
213
|
return this.request("GET", `/v1/jobs/search?${params.toString()}`);
|
|
199
214
|
}
|
|
200
215
|
submitOffer(jobId, message) {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAgB,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAA4B,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,gCAAgC,EAAiC,MAAM,+BAA+B,CAAC;AAYhH;;;;;;GAMG;AACH,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAgB,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACxG,OAAO,EAAE,oBAAoB,EAA4B,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,gCAAgC,EAAiC,MAAM,+BAA+B,CAAC;AAYhH;;;;;;GAMG;AACH,MAAM,OAAO,UAAU;IAIF;IACA;IAJF,IAAI,CAAS;IAE9B,YACmB,OAAe,EACf,OAAgB;QADhB,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAS;QAEjC,yEAAyE;QACzE,qEAAqE;QACrE,+DAA+D;QAC/D,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IACpC,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,IAAc,EAAE,IAAkC;QACvG,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAEnG,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;YAC9B,gBAAgB,EAAE,SAAS;YAC3B,gBAAgB,EAAE,SAAS;YAC3B,CAAC,kBAAkB,CAAC,EAAE,mBAAmB;SAC1C,CAAC;QACF,IAAI,IAAI,EAAE,cAAc;YAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QAE3E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAChD,MAAM;YACN,OAAO;YACP,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SAC/C,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,IAAS,CAAC;IACnB,CAAC;IAED,aAAa,CAAC,YAAsB,EAAE,QAAkC;QACtE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5H,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;;;+CAI2C;IAC3C,MAAM,CAAC,MAAc;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE;YACnG,cAAc,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC;IAED;;;sDAGkD;IAClD,iBAAiB,CAAC,aAAqB,EAAE,UAAmB;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,aAAa,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,EAAE;YAC7G,cAAc,EAAE,mBAAmB,aAAa,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;SAC/E,CAAC,CAAC;IACL,CAAC;IAED;;;0DAGsD;IACtD,YAAY,CAAC,QAAgB,EAAE,KAAa;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;YAClG,cAAc,EAAE,QAAQ,QAAQ,IAAI,KAAK,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;IAED;;uEAEmE;IACnE,oBAAoB,CAAC,QAAgB,EAAE,iBAAyB,EAAE,OAAwB;QACxF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE;YACjI,cAAc,EAAE,kBAAkB,QAAQ,IAAI,iBAAiB,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;SAChF,CAAC,CAAC;IACL,CAAC;IAED;;+DAE2D;IAC3D,YAAY,CAAC,QAAgB,EAAE,KAAa,EAAE,WAAmB,EAAE,cAAsB;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;YAC/H,cAAc,EAAE,QAAQ,QAAQ,IAAI,WAAW,EAAE;SAClD,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,KAMZ;QACC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,UAAU;YAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QACjG,IAAI,KAAK,CAAC,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,qBAAqB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,aAAa,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,kBAAkB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IAChF,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,YAAY,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACnF,CAAC;IAED;;8EAE0E;IAC1E,KAAK,CAAC,UAAU,CACd,QAAgB,EAChB,KAA0B,EAC1B,IAAsD;QAEtD,oEAAoE;QACpE,yEAAyE;QACzE,kEAAkE;QAClE,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAChG,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,cAAc,EAAE,WAAW,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7J,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,UAAU,CACd,OAAyB,EACzB,QAAsF;QAEtF,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,GAAG,kCAAkC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9G,CAAC;QACD,IAAI,QAAQ,EAAE,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,KAAK,iBAAiB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,QAAQ,EAAE,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5F,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAC,UAAU,iBAAiB,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7H,CAAC;QACD,IAAI,QAAQ,EAAE,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YACrF,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAC,MAAM,iBAAiB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1H,CAAC;QACD,IAAI,QAAQ,EAAE,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,4CAA4C,QAAQ,CAAC,QAAQ,iBAAiB,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChI,CAAC;QAED,kEAAkE;QAClE,mEAAmE;QACnE,4DAA4D;QAC5D,mEAAmE;QACnE,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACpH,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,EAAE;YAC9G,cAAc,EAAE,eAAe,OAAO,CAAC,SAAS,EAAE;SACnD,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,SAAiB,EAAE,MAAc;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE;YAC/F,cAAc,EAAE,WAAW,SAAS,EAAE;SACvC,CAAC,CAAC;IACL,CAAC;IAED;;qEAEiE;IACjE,cAAc,CAAC,SAAiB,EAAE,IAAa;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YACjH,cAAc,EAAE,mBAAmB,SAAS,EAAE;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IAEzE,OAAO,CAAC,KAAoH;QAC1H,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,OAAO,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAChI,CAAC;IAED,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,UAAU,CAAC,KAAgF;QACzF,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,UAAU;YAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,WAAW,CAAC,KAAa,EAAE,OAAgB;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE;YACvF,cAAc,EAAE,SAAS,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7E,CAAC;IAED,sDAAsD;IACtD,WAAW,CAAC,KAAa,EAAE,OAAe;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE;YACvF,cAAc,EAAE,UAAU,KAAK,IAAI,OAAO,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,oEAAoE;IACpE,SAAS,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE;YACrF,cAAc,EAAE,UAAU,KAAK,EAAE;SAClC,CAAC,CAAC;IACL,CAAC;IAED;;;mEAG+D;IAC/D,oBAAoB,CAAC,KAAa,EAAE,MAAe;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,kBAAkB,CAAC,KAAK,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YACnH,cAAc,EAAE,yBAAyB,KAAK,EAAE;SACjD,CAAC,CAAC;IACL,CAAC;IAED,wFAAwF;IAExF;;;;6EAIyE;IACzE,KAAK,CAAC,kBAAkB,CAAC,KAAwE;QAC/F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,gCAAgC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACtI,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3G,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,EACN,mBAAmB,EACnB,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,EAC3L,EAAE,cAAc,EAAE,gBAAgB,OAAO,CAAC,cAAc,EAAE,EAAE,CAC7D,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,EAAU;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,qBAAqB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,wBAAwB,CAAC,SAAiB;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5F,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Shared by both runtimes' `/agents/search` and `/jobs/search` routes.
|
|
2
|
+
* Neither endpoint had any limit on result-set size (SPEC.md round-2 item
|
|
3
|
+
* 7) -- the Worker's D1 query had no LIMIT clause at all, so a large
|
|
4
|
+
* result set risked a response-size 500 rather than a bounded page. */
|
|
5
|
+
export declare const DEFAULT_PAGE_LIMIT = 50;
|
|
6
|
+
export declare const MAX_PAGE_LIMIT = 200;
|
|
7
|
+
export interface PageParams {
|
|
8
|
+
limit: number;
|
|
9
|
+
offset: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function parsePageParams(rawLimit: string | undefined, rawOffset: string | undefined): PageParams;
|
|
12
|
+
/** Applied AFTER any post-fetch filtering (job visibility, min_reputation)
|
|
13
|
+
* so the page reflects what the caller actually sees, not raw storage
|
|
14
|
+
* rows -- a page can come back shorter than `limit` near the end of the
|
|
15
|
+
* result set even while `hasMore` is false. */
|
|
16
|
+
export declare function paginate<T>(items: T[], { limit, offset }: PageParams): {
|
|
17
|
+
page: T[];
|
|
18
|
+
hasMore: boolean;
|
|
19
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** Shared by both runtimes' `/agents/search` and `/jobs/search` routes.
|
|
2
|
+
* Neither endpoint had any limit on result-set size (SPEC.md round-2 item
|
|
3
|
+
* 7) -- the Worker's D1 query had no LIMIT clause at all, so a large
|
|
4
|
+
* result set risked a response-size 500 rather than a bounded page. */
|
|
5
|
+
export const DEFAULT_PAGE_LIMIT = 50;
|
|
6
|
+
export const MAX_PAGE_LIMIT = 200;
|
|
7
|
+
export function parsePageParams(rawLimit, rawOffset) {
|
|
8
|
+
let limit = rawLimit !== undefined ? Number(rawLimit) : DEFAULT_PAGE_LIMIT;
|
|
9
|
+
if (!Number.isFinite(limit) || limit <= 0)
|
|
10
|
+
limit = DEFAULT_PAGE_LIMIT;
|
|
11
|
+
limit = Math.min(Math.floor(limit), MAX_PAGE_LIMIT);
|
|
12
|
+
let offset = rawOffset !== undefined ? Number(rawOffset) : 0;
|
|
13
|
+
if (!Number.isFinite(offset) || offset < 0)
|
|
14
|
+
offset = 0;
|
|
15
|
+
offset = Math.floor(offset);
|
|
16
|
+
return { limit, offset };
|
|
17
|
+
}
|
|
18
|
+
/** Applied AFTER any post-fetch filtering (job visibility, min_reputation)
|
|
19
|
+
* so the page reflects what the caller actually sees, not raw storage
|
|
20
|
+
* rows -- a page can come back shorter than `limit` near the end of the
|
|
21
|
+
* result set even while `hasMore` is false. */
|
|
22
|
+
export function paginate(items, { limit, offset }) {
|
|
23
|
+
return { page: items.slice(offset, offset + limit), hasMore: offset + limit < items.length };
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/core/pagination.ts"],"names":[],"mappings":"AAAA;;;wEAGwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAOlC,MAAM,UAAU,eAAe,CAAC,QAA4B,EAAE,SAA6B;IACzF,IAAI,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC3E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,KAAK,GAAG,kBAAkB,CAAC;IACtE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC;IAEpD,IAAI,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,MAAM,GAAG,CAAC,CAAC;IACvD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED;;;gDAGgD;AAChD,MAAM,UAAU,QAAQ,CAAI,KAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAc;IACnE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AAC/F,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request-signing string templates, shared by both runtimes' verification
|
|
3
|
+
* middleware and this SDK's client. Round-2 sub-finding-7: the v1 string had
|
|
4
|
+
* no host/domain component, so a signature minted for one hostname verified
|
|
5
|
+
* equally well against any other host serving the same code (the Worker is
|
|
6
|
+
* dual-hosted -- a custom domain plus its *.workers.dev fallback -- and the
|
|
7
|
+
* same is true of any other deployment of this open-source registry).
|
|
8
|
+
*
|
|
9
|
+
* v2 adds the host. The signer includes the host it believes it is talking
|
|
10
|
+
* to (derived from its own configured base URL, so it costs callers nothing
|
|
11
|
+
* extra to configure); the *server* always plugs in its own actual incoming
|
|
12
|
+
* Host header when recomputing this string for verification -- never a
|
|
13
|
+
* client-supplied value -- so a captured v2-signed request cannot be
|
|
14
|
+
* replayed against a different host: the recomputed string won't match what
|
|
15
|
+
* was signed.
|
|
16
|
+
*
|
|
17
|
+
* Migration: v1 (no `inam-sig-version` header) is still accepted by both
|
|
18
|
+
* runtimes' verification middleware so already-deployed callers on an older
|
|
19
|
+
* SDK version keep working. New SDK versions always sign v2. v1 acceptance
|
|
20
|
+
* is deprecated as of SPEC.md v0.28 and will be removed in a future
|
|
21
|
+
* version, not this one.
|
|
22
|
+
*/
|
|
23
|
+
export declare const SIG_VERSION_HEADER = "inam-sig-version";
|
|
24
|
+
export declare const CURRENT_SIG_VERSION = "2";
|
|
25
|
+
export declare function buildSigningStringV1(method: string, path: string, timestamp: string, bodyHash: string): string;
|
|
26
|
+
export declare function buildSigningStringV2(method: string, path: string, host: string, timestamp: string, bodyHash: string): string;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request-signing string templates, shared by both runtimes' verification
|
|
3
|
+
* middleware and this SDK's client. Round-2 sub-finding-7: the v1 string had
|
|
4
|
+
* no host/domain component, so a signature minted for one hostname verified
|
|
5
|
+
* equally well against any other host serving the same code (the Worker is
|
|
6
|
+
* dual-hosted -- a custom domain plus its *.workers.dev fallback -- and the
|
|
7
|
+
* same is true of any other deployment of this open-source registry).
|
|
8
|
+
*
|
|
9
|
+
* v2 adds the host. The signer includes the host it believes it is talking
|
|
10
|
+
* to (derived from its own configured base URL, so it costs callers nothing
|
|
11
|
+
* extra to configure); the *server* always plugs in its own actual incoming
|
|
12
|
+
* Host header when recomputing this string for verification -- never a
|
|
13
|
+
* client-supplied value -- so a captured v2-signed request cannot be
|
|
14
|
+
* replayed against a different host: the recomputed string won't match what
|
|
15
|
+
* was signed.
|
|
16
|
+
*
|
|
17
|
+
* Migration: v1 (no `inam-sig-version` header) is still accepted by both
|
|
18
|
+
* runtimes' verification middleware so already-deployed callers on an older
|
|
19
|
+
* SDK version keep working. New SDK versions always sign v2. v1 acceptance
|
|
20
|
+
* is deprecated as of SPEC.md v0.28 and will be removed in a future
|
|
21
|
+
* version, not this one.
|
|
22
|
+
*/
|
|
23
|
+
export const SIG_VERSION_HEADER = "inam-sig-version";
|
|
24
|
+
export const CURRENT_SIG_VERSION = "2";
|
|
25
|
+
export function buildSigningStringV1(method, path, timestamp, bodyHash) {
|
|
26
|
+
return `${method.toUpperCase()}\n${path}\n${timestamp}\n${bodyHash}`;
|
|
27
|
+
}
|
|
28
|
+
export function buildSigningStringV2(method, path, host, timestamp, bodyHash) {
|
|
29
|
+
return `${method.toUpperCase()}\n${path}\n${host}\n${timestamp}\n${bodyHash}`;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=signingString.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signingString.js","sourceRoot":"","sources":["../../src/core/signingString.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,IAAY,EAAE,SAAiB,EAAE,QAAgB;IACpG,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,SAAS,KAAK,QAAQ,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,IAAY,EAAE,IAAY,EAAE,SAAiB,EAAE,QAAgB;IAClH,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,IAAI,KAAK,SAAS,KAAK,QAAQ,EAAE,CAAC;AAChF,CAAC"}
|
package/package.json
CHANGED