@pawabase/client 0.1.4 → 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 +22 -7
- package/dist/cjs/agents.d.ts +87 -0
- package/dist/cjs/agents.d.ts.map +1 -0
- package/dist/cjs/agents.js +153 -0
- package/dist/cjs/agents.js.map +1 -0
- package/dist/cjs/ai.d.ts +5 -0
- package/dist/cjs/ai.d.ts.map +1 -1
- package/dist/cjs/ai.js +7 -0
- package/dist/cjs/ai.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/manage/access.d.ts +1 -59
- package/dist/cjs/manage/access.d.ts.map +1 -1
- package/dist/cjs/manage/access.js +1 -82
- package/dist/cjs/manage/access.js.map +1 -1
- package/dist/cjs/manage/agents.d.ts +76 -0
- package/dist/cjs/manage/agents.d.ts.map +1 -0
- package/dist/cjs/manage/agents.js +89 -0
- package/dist/cjs/manage/agents.js.map +1 -0
- package/dist/cjs/manage/base.d.ts +6 -16
- package/dist/cjs/manage/base.d.ts.map +1 -1
- package/dist/cjs/manage/base.js +11 -11
- package/dist/cjs/manage/base.js.map +1 -1
- package/dist/cjs/manage/data.d.ts +13 -15
- package/dist/cjs/manage/data.d.ts.map +1 -1
- package/dist/cjs/manage/data.js +14 -21
- package/dist/cjs/manage/data.js.map +1 -1
- package/dist/cjs/manage/files.d.ts +5 -0
- package/dist/cjs/manage/files.d.ts.map +1 -1
- package/dist/cjs/manage/files.js +10 -1
- package/dist/cjs/manage/files.js.map +1 -1
- package/dist/cjs/manage/index.d.ts +9 -7
- package/dist/cjs/manage/index.d.ts.map +1 -1
- package/dist/cjs/manage/index.js +11 -8
- package/dist/cjs/manage/index.js.map +1 -1
- package/dist/cjs/manage/lifecycle.d.ts +15 -38
- package/dist/cjs/manage/lifecycle.d.ts.map +1 -1
- package/dist/cjs/manage/lifecycle.js +21 -52
- package/dist/cjs/manage/lifecycle.js.map +1 -1
- package/dist/cjs/manage/mail.d.ts +11 -1
- package/dist/cjs/manage/mail.d.ts.map +1 -1
- package/dist/cjs/manage/mail.js +11 -0
- package/dist/cjs/manage/mail.js.map +1 -1
- package/dist/cjs/manage/observe.d.ts +6 -0
- package/dist/cjs/manage/observe.d.ts.map +1 -1
- package/dist/cjs/manage/observe.js +8 -2
- package/dist/cjs/manage/observe.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/agents.d.ts +87 -0
- package/dist/esm/agents.d.ts.map +1 -0
- package/dist/esm/agents.js +148 -0
- package/dist/esm/agents.js.map +1 -0
- package/dist/esm/ai.d.ts +5 -0
- package/dist/esm/ai.d.ts.map +1 -1
- package/dist/esm/ai.js +7 -0
- package/dist/esm/ai.js.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/manage/access.d.ts +1 -59
- package/dist/esm/manage/access.d.ts.map +1 -1
- package/dist/esm/manage/access.js +0 -80
- package/dist/esm/manage/access.js.map +1 -1
- package/dist/esm/manage/agents.d.ts +76 -0
- package/dist/esm/manage/agents.d.ts.map +1 -0
- package/dist/esm/manage/agents.js +82 -0
- package/dist/esm/manage/agents.js.map +1 -0
- package/dist/esm/manage/base.d.ts +6 -16
- package/dist/esm/manage/base.d.ts.map +1 -1
- package/dist/esm/manage/base.js +11 -11
- package/dist/esm/manage/base.js.map +1 -1
- package/dist/esm/manage/data.d.ts +13 -15
- package/dist/esm/manage/data.d.ts.map +1 -1
- package/dist/esm/manage/data.js +13 -18
- package/dist/esm/manage/data.js.map +1 -1
- package/dist/esm/manage/files.d.ts +5 -0
- package/dist/esm/manage/files.d.ts.map +1 -1
- package/dist/esm/manage/files.js +10 -1
- package/dist/esm/manage/files.js.map +1 -1
- package/dist/esm/manage/index.d.ts +9 -7
- package/dist/esm/manage/index.d.ts.map +1 -1
- package/dist/esm/manage/index.js +14 -11
- package/dist/esm/manage/index.js.map +1 -1
- package/dist/esm/manage/lifecycle.d.ts +15 -38
- package/dist/esm/manage/lifecycle.d.ts.map +1 -1
- package/dist/esm/manage/lifecycle.js +19 -50
- package/dist/esm/manage/lifecycle.js.map +1 -1
- package/dist/esm/manage/mail.d.ts +11 -1
- package/dist/esm/manage/mail.d.ts.map +1 -1
- package/dist/esm/manage/mail.js +12 -1
- package/dist/esm/manage/mail.js.map +1 -1
- package/dist/esm/manage/observe.d.ts +6 -0
- package/dist/esm/manage/observe.d.ts.map +1 -1
- package/dist/esm/manage/observe.js +8 -2
- package/dist/esm/manage/observe.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +2 -2
- package/src/agents.ts +184 -0
- package/src/ai.ts +10 -1
- package/src/index.ts +2 -0
- package/src/manage/access.ts +0 -93
- package/src/manage/agents.ts +98 -0
- package/src/manage/base.ts +11 -11
- package/src/manage/data.ts +14 -19
- package/src/manage/files.ts +12 -1
- package/src/manage/index.ts +14 -11
- package/src/manage/lifecycle.ts +20 -64
- package/src/manage/mail.ts +15 -1
- package/src/manage/observe.ts +9 -2
- package/src/version.ts +1 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Service, seg } from "./base.js";
|
|
2
|
-
const iso = (value) => (value instanceof Date ? value.toISOString() : value);
|
|
3
2
|
/** The project's environments (`development`, `production`, previews…). Most calls here are not scoped to the client's environment. */
|
|
4
3
|
export class Environments extends Service {
|
|
5
4
|
list() {
|
|
@@ -35,9 +34,9 @@ export class Environments extends Service {
|
|
|
35
34
|
deletePreview(preview) {
|
|
36
35
|
return this.del(seg("previews", preview));
|
|
37
36
|
}
|
|
38
|
-
/** Copy this environment's definitions (never secrets or keys) to `to`. `include` limits the kinds
|
|
37
|
+
/** Copy this environment's definitions (never secrets or keys) to `to`. `include` limits the kinds; `dryRun` only reports what would change. */
|
|
39
38
|
promote(to, options = {}) {
|
|
40
|
-
return this.post("/promote", { to, include: options.include });
|
|
39
|
+
return this.post("/promote", { to, include: options.include, dry_run: options.dryRun ?? false });
|
|
41
40
|
}
|
|
42
41
|
/** Export definitions, roles and settings as a document another project can apply. */
|
|
43
42
|
blueprint() {
|
|
@@ -52,56 +51,26 @@ export class Environments extends Service {
|
|
|
52
51
|
return this.project("POST", "/code/reload");
|
|
53
52
|
}
|
|
54
53
|
}
|
|
55
|
-
/**
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
/** The branch's definitions as they stand now. */
|
|
64
|
-
draft(branch) {
|
|
65
|
-
return this.get(seg("branches", branch, "draft"));
|
|
66
|
-
}
|
|
67
|
-
merge(branch, options = {}) {
|
|
68
|
-
return this.post(seg("branches", branch, "merge"), { target: options.target ?? "main", force: options.force ?? false });
|
|
69
|
-
}
|
|
70
|
-
revisions() {
|
|
71
|
-
return this.get("/revisions");
|
|
72
|
-
}
|
|
73
|
-
revision(revisionId) {
|
|
74
|
-
return this.get(seg("revisions", revisionId));
|
|
75
|
-
}
|
|
76
|
-
/** Freeze the branch's draft as a revision. */
|
|
77
|
-
commit(branch, message = "") {
|
|
78
|
-
return this.post(seg("branches", branch, "revisions"), { message });
|
|
79
|
-
}
|
|
80
|
-
apiVersions() {
|
|
81
|
-
return this.get("/api-versions");
|
|
82
|
-
}
|
|
83
|
-
createApiVersion(name, options = {}) {
|
|
84
|
-
return this.post("/api-versions", { name, is_default: options.isDefault ?? false });
|
|
85
|
-
}
|
|
86
|
-
/** `status`: draft, active, deprecated, sunset, disabled. */
|
|
87
|
-
updateApiVersion(name, changes) {
|
|
88
|
-
return this.patch(seg("api-versions", name), { status: changes.status, is_default: changes.isDefault, sunset_at: iso(changes.sunsetAt) });
|
|
89
|
-
}
|
|
90
|
-
rollbackApiVersion(name) {
|
|
91
|
-
return this.post(seg("api-versions", name, "rollback"));
|
|
92
|
-
}
|
|
93
|
-
releases() {
|
|
94
|
-
return this.get("/releases");
|
|
54
|
+
/**
|
|
55
|
+
* API versions served side by side. `v1` is always the live API; releasing another environment's definitions as `v2` serves them at
|
|
56
|
+
* `/rest/v2` over this environment's tables, until you retire it.
|
|
57
|
+
*/
|
|
58
|
+
export class Versions extends Service {
|
|
59
|
+
/** The live API first, then every released version. */
|
|
60
|
+
list() {
|
|
61
|
+
return this.get("/versions");
|
|
95
62
|
}
|
|
96
|
-
/**
|
|
97
|
-
|
|
98
|
-
return this.post("/
|
|
63
|
+
/** Whether `fromEnv`'s definitions can be served here as a version, and what would be added or left out. */
|
|
64
|
+
check(fromEnv) {
|
|
65
|
+
return this.post("/versions/check", { from_env: fromEnv });
|
|
99
66
|
}
|
|
100
|
-
|
|
101
|
-
|
|
67
|
+
/** Serve `fromEnv`'s definitions as `/rest/<name>` (`v2`, `v3`…). A name is never reused. */
|
|
68
|
+
release(name, fromEnv, options = {}) {
|
|
69
|
+
return this.post("/versions", { name, from_env: fromEnv, notes: options.notes ?? "" });
|
|
102
70
|
}
|
|
103
|
-
|
|
104
|
-
|
|
71
|
+
/** Stop serving a version. */
|
|
72
|
+
retire(name) {
|
|
73
|
+
return this.post(seg("versions", name, "retire"));
|
|
105
74
|
}
|
|
106
75
|
}
|
|
107
76
|
/** Whole-environment backups you download, stored snapshots, and restores. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/manage/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAuB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/manage/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,19 @@
|
|
|
1
|
-
import { Definitions, Service, type Api } from "./base.js";
|
|
1
|
+
import { Definitions, Service, type Api, type Body } from "./base.js";
|
|
2
2
|
/** Templates (subject, HTML, text) for the mail flows and sign-in send. */
|
|
3
3
|
export declare class MailTemplates extends Definitions {
|
|
4
4
|
protected readonly kind = "mail-templates";
|
|
5
|
+
/** Rename a template, keeping its versions. */
|
|
6
|
+
rename(name: string, to: string): Promise<Api>;
|
|
5
7
|
}
|
|
6
8
|
export declare class Mail extends Service {
|
|
9
|
+
/** The brand kit the template editor uses: brand styles, palettes, reusable blocks and folders. */
|
|
10
|
+
kit(): Promise<Api>;
|
|
11
|
+
saveKit(kit: {
|
|
12
|
+
brand?: Body;
|
|
13
|
+
palettes?: Body[];
|
|
14
|
+
blocks?: Body[];
|
|
15
|
+
folders?: string[];
|
|
16
|
+
}): Promise<Api>;
|
|
7
17
|
/** The delivery settings in effect (the password is never returned) and whether mail is being delivered. */
|
|
8
18
|
config(): Promise<Api>;
|
|
9
19
|
/** Messages sent or suppressed. `status`: `sent`, `failed`, `suppressed`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../../src/manage/mail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../../src/manage/mail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAO,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3E,2EAA2E;AAC3E,qBAAa,aAAc,SAAQ,WAAW;IAC5C,mBAA4B,IAAI,oBAAoB;IAEpD,+CAA+C;IAC/C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAG/C;AAED,qBAAa,IAAK,SAAQ,OAAO;IAC/B,mGAAmG;IACnG,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAInB,OAAO,CAAC,GAAG,EAAE;QAAE,KAAK,CAAC,EAAE,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAIpG,4GAA4G;IAC5G,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC;IAItB,6EAA6E;IAC7E,GAAG,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIpE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;CAGrC"}
|
package/dist/esm/manage/mail.js
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
|
-
import { Definitions, Service } from "./base.js";
|
|
1
|
+
import { Definitions, Service, seg } from "./base.js";
|
|
2
2
|
/** Templates (subject, HTML, text) for the mail flows and sign-in send. */
|
|
3
3
|
export class MailTemplates extends Definitions {
|
|
4
4
|
kind = "mail-templates";
|
|
5
|
+
/** Rename a template, keeping its versions. */
|
|
6
|
+
rename(name, to) {
|
|
7
|
+
return this.post(seg(this.kind, name, "rename"), { to });
|
|
8
|
+
}
|
|
5
9
|
}
|
|
6
10
|
export class Mail extends Service {
|
|
11
|
+
/** The brand kit the template editor uses: brand styles, palettes, reusable blocks and folders. */
|
|
12
|
+
kit() {
|
|
13
|
+
return this.get("/mail/kit");
|
|
14
|
+
}
|
|
15
|
+
saveKit(kit) {
|
|
16
|
+
return this.put("/mail/kit", { brand: kit.brand ?? {}, palettes: kit.palettes ?? [], blocks: kit.blocks ?? [], folders: kit.folders ?? [] });
|
|
17
|
+
}
|
|
7
18
|
/** The delivery settings in effect (the password is never returned) and whether mail is being delivered. */
|
|
8
19
|
config() {
|
|
9
20
|
return this.get("/mail/config");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail.js","sourceRoot":"","sources":["../../../src/manage/mail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"mail.js","sourceRoot":"","sources":["../../../src/manage/mail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAuB,MAAM,WAAW,CAAC;AAE3E,2EAA2E;AAC3E,MAAM,OAAO,aAAc,SAAQ,WAAW;IAChB,IAAI,GAAG,gBAAgB,CAAC;IAEpD,+CAA+C;IAC/C,MAAM,CAAC,IAAY,EAAE,EAAU;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;CACF;AAED,MAAM,OAAO,IAAK,SAAQ,OAAO;IAC/B,mGAAmG;IACnG,GAAG;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,GAA6E;QACnF,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/I,CAAC;IAED,4GAA4G;IAC5G,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,6EAA6E;IAC7E,GAAG,CAAC,UAA+C,EAAE;QACnD,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,QAAQ,CAAC,EAAY;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -61,10 +61,16 @@ export declare class Observability extends Service {
|
|
|
61
61
|
period?: number;
|
|
62
62
|
comparePrevious?: boolean;
|
|
63
63
|
}): Promise<Api>;
|
|
64
|
+
/** The project's background workers (not scoped to one environment). */
|
|
64
65
|
workers(): Promise<Api>;
|
|
65
66
|
/** What the environment is running with. */
|
|
66
67
|
configuration(): Promise<Api>;
|
|
68
|
+
/** What the project has used against what its plan allows (not scoped to one environment). */
|
|
67
69
|
capacity(): Promise<Api>;
|
|
70
|
+
/** Bytes received and sent over the last `minutes`, and the endpoints, callers and requests that moved the most. */
|
|
71
|
+
bandwidth(options?: {
|
|
72
|
+
minutes?: number;
|
|
73
|
+
}): Promise<Api>;
|
|
68
74
|
}
|
|
69
75
|
export interface AlarmInput {
|
|
70
76
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../../src/manage/observe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAO,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AAEnD,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAG1B,qBAAa,aAAc,SAAQ,OAAO;IACxC,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxD,8EAA8E;IAC9E,SAAS,CAAC,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,IAAI,CAAC;QAAC,EAAE,CAAC,EAAE,IAAI,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIjF,gGAAgG;IAChG,QAAQ,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAK/H,oFAAoF;IACpF,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxC,yFAAyF;IACzF,IAAI,CAAC,OAAO,GAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,IAAI,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIhG,MAAM,CAAC,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxD,6CAA6C;IAC7C,MAAM,CAAC,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIvF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAItF,oDAAoD;IACpD,MAAM,CAAC,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxD,iFAAiF;IACjF,OAAO,CAAC,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIzD,2BAA2B;IAC3B,OAAO,CAAC,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxE,6CAA6C;IAC7C,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAI7B,uEAAuE;IACvE,YAAY,CAAC,MAAM,SAAa,EAAE,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAI/H,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IAIvB,4CAA4C;IAC5C,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAI7B,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../../src/manage/observe.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,15 +52,21 @@ export class Observability extends Service {
|
|
|
52
52
|
metricSeries(metric = "requests", options = {}) {
|
|
53
53
|
return this.get("/metric-series", { metric, minutes: options.minutes ?? 60, period: options.period, compare: options.comparePrevious ? "previous" : undefined });
|
|
54
54
|
}
|
|
55
|
+
/** The project's background workers (not scoped to one environment). */
|
|
55
56
|
workers() {
|
|
56
|
-
return this.
|
|
57
|
+
return this.project("GET", "/workers");
|
|
57
58
|
}
|
|
58
59
|
/** What the environment is running with. */
|
|
59
60
|
configuration() {
|
|
60
61
|
return this.get("/configuration");
|
|
61
62
|
}
|
|
63
|
+
/** What the project has used against what its plan allows (not scoped to one environment). */
|
|
62
64
|
capacity() {
|
|
63
|
-
return this.
|
|
65
|
+
return this.project("GET", "/capacity");
|
|
66
|
+
}
|
|
67
|
+
/** Bytes received and sent over the last `minutes`, and the endpoints, callers and requests that moved the most. */
|
|
68
|
+
bandwidth(options = {}) {
|
|
69
|
+
return this.get("/observability/bandwidth", options);
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
72
|
/** Alarms on a metric: when it crosses `threshold` for `breachesNeeded` checks in a row, `recipients` are mailed. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../../../src/manage/observe.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../../../src/manage/observe.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.2.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = "0.
|
|
1
|
+
export const VERSION = "0.2.0";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pawabase/client",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Official TypeScript client for Pawabase: data, auth, storage,
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Official TypeScript client for Pawabase: data, auth, storage, flows, agents and realtime.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
7
7
|
"module": "./dist/esm/index.js",
|
package/src/agents.ts
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agents and knowledge bases, run from your app: the signed-in user's access rules decide which agents they may run and which
|
|
3
|
+
* knowledge bases they may search.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* const run = await pawabase.ai.agents.run("support", "How do I reset my password?");
|
|
7
|
+
* console.log(run.output);
|
|
8
|
+
* for await (const event of pawabase.ai.agents.stream("support", "Summarise my open tickets")) console.log(event);
|
|
9
|
+
* const hits = await pawabase.ai.knowledge.search("docs", "reset password");
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
import { ApiError } from "./errors.js";
|
|
13
|
+
import type { HttpClient } from "./http.js";
|
|
14
|
+
|
|
15
|
+
export type AgentRunStatus = "running" | "waiting" | "finished" | "failed" | "cancelled" | (string & {});
|
|
16
|
+
|
|
17
|
+
/** One run of an agent. A run that stopped to ask permission has `status: "waiting"` and lists what it is waiting on. */
|
|
18
|
+
export interface AgentRun {
|
|
19
|
+
id: string;
|
|
20
|
+
agent: string;
|
|
21
|
+
status: AgentRunStatus;
|
|
22
|
+
/** The agent's answer, once it has one. */
|
|
23
|
+
output?: string;
|
|
24
|
+
thread?: string;
|
|
25
|
+
error?: string;
|
|
26
|
+
[field: string]: unknown;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** One step of a streamed run (`type` says which: text pieces, tool calls and results, approvals, `error`). */
|
|
30
|
+
export interface AgentEvent {
|
|
31
|
+
type: string;
|
|
32
|
+
[field: string]: unknown;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface AgentRunOptions {
|
|
36
|
+
/** Carry on a conversation: the `thread` of an earlier run. */
|
|
37
|
+
thread?: string;
|
|
38
|
+
/** Return at once; poll `get()` or start a flow from `agent.run.finished`. */
|
|
39
|
+
background?: boolean;
|
|
40
|
+
signal?: AbortSignal | null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface KnowledgeHit {
|
|
44
|
+
[field: string]: unknown;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface KnowledgeDocument {
|
|
48
|
+
id: string;
|
|
49
|
+
status: "pending" | "ready" | "failed" | (string & {});
|
|
50
|
+
title?: string;
|
|
51
|
+
error?: string;
|
|
52
|
+
chunks?: number;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const seg = (...parts: string[]) => "/" + parts.map(encodeURIComponent).join("/");
|
|
56
|
+
|
|
57
|
+
export class AgentsClient {
|
|
58
|
+
constructor(private readonly http: HttpClient) {}
|
|
59
|
+
|
|
60
|
+
/** The agents the caller may run. */
|
|
61
|
+
async list(): Promise<Array<{ name: string; description: string }>> {
|
|
62
|
+
const body = await this.http.request<{ data: Array<{ name: string; description: string }> }>({ path: "/ai/v1/agents" });
|
|
63
|
+
return body.data;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Send `input` and wait for the run (or, with `background`, only for it to start). */
|
|
67
|
+
run(name: string, input: string, options: AgentRunOptions = {}): Promise<AgentRun> {
|
|
68
|
+
return this.http.request<AgentRun>({
|
|
69
|
+
method: "POST",
|
|
70
|
+
path: `/ai/v1${seg("agents", name, "runs")}`,
|
|
71
|
+
body: { input, thread: options.thread, background: options.background ?? false },
|
|
72
|
+
signal: options.signal ?? undefined,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** Each step of a run as it happens. */
|
|
77
|
+
async *stream(name: string, input: string, options: Omit<AgentRunOptions, "background"> = {}): AsyncGenerator<AgentEvent, void, void> {
|
|
78
|
+
const stream = await this.http.request<ReadableStream<Uint8Array> | null>({
|
|
79
|
+
method: "POST",
|
|
80
|
+
path: `/ai/v1${seg("agents", name, "runs")}`,
|
|
81
|
+
body: { input, thread: options.thread, stream: true },
|
|
82
|
+
parse: "stream",
|
|
83
|
+
signal: options.signal ?? undefined,
|
|
84
|
+
});
|
|
85
|
+
if (!stream) return;
|
|
86
|
+
const reader = stream.getReader();
|
|
87
|
+
const decoder = new TextDecoder();
|
|
88
|
+
let buffer = "";
|
|
89
|
+
try {
|
|
90
|
+
for (;;) {
|
|
91
|
+
const { value, done } = await reader.read();
|
|
92
|
+
if (done) break;
|
|
93
|
+
buffer += decoder.decode(value, { stream: true });
|
|
94
|
+
let end: number;
|
|
95
|
+
while ((end = buffer.indexOf("\n\n")) >= 0) {
|
|
96
|
+
const event = buffer.slice(0, end);
|
|
97
|
+
buffer = buffer.slice(end + 2);
|
|
98
|
+
for (const line of event.split("\n")) {
|
|
99
|
+
if (!line.startsWith("data:")) continue;
|
|
100
|
+
const data = line.slice(5).trim();
|
|
101
|
+
if (data === "[DONE]") return;
|
|
102
|
+
let parsed: AgentEvent;
|
|
103
|
+
try {
|
|
104
|
+
parsed = JSON.parse(data);
|
|
105
|
+
} catch {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (parsed.type === "error") {
|
|
109
|
+
throw new ApiError({ status: 502, code: "agent_error", message: String(parsed.message ?? "the run stopped") });
|
|
110
|
+
}
|
|
111
|
+
yield parsed;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
} finally {
|
|
116
|
+
reader.releaseLock();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** A run of yours: its status and answer, and what it is waiting on if it stopped to ask. */
|
|
121
|
+
get(runId: string): Promise<AgentRun> {
|
|
122
|
+
return this.http.request<AgentRun>({ path: `/ai/v1${seg("agent-runs", runId)}` });
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/** Approve or decline what a run is waiting on: a decision per call id, and `approve` for any not named. */
|
|
126
|
+
decide(runId: string, options: { decisions?: Record<string, boolean>; approve?: boolean; background?: boolean } = {}): Promise<AgentRun> {
|
|
127
|
+
return this.http.request<AgentRun>({
|
|
128
|
+
method: "POST",
|
|
129
|
+
path: `/ai/v1${seg("agent-runs", runId, "decide")}`,
|
|
130
|
+
body: { decisions: options.decisions ?? {}, approve: options.approve, background: options.background ?? false },
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/** Poll a background run until it is no longer running (a waiting run is returned too, so you can decide it). */
|
|
135
|
+
async wait(runId: string, options: { intervalMs?: number; timeoutMs?: number; signal?: AbortSignal | null } = {}): Promise<AgentRun> {
|
|
136
|
+
const interval = options.intervalMs ?? 1000;
|
|
137
|
+
const deadline = Date.now() + (options.timeoutMs ?? 5 * 60_000);
|
|
138
|
+
for (;;) {
|
|
139
|
+
const run = await this.get(runId);
|
|
140
|
+
if (run.status !== "running") return run;
|
|
141
|
+
if (options.signal?.aborted) throw options.signal.reason ?? new Error("aborted");
|
|
142
|
+
if (Date.now() >= deadline) throw new Error(`run ${runId} was still running after ${options.timeoutMs ?? 5 * 60_000} ms`);
|
|
143
|
+
await new Promise((resolve) => setTimeout(resolve, interval));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export class KnowledgeClient {
|
|
149
|
+
constructor(private readonly http: HttpClient) {}
|
|
150
|
+
|
|
151
|
+
/** Search by meaning and by words together. Documents kept private to someone else are left out. */
|
|
152
|
+
async search(name: string, query: string, options: { limit?: number; signal?: AbortSignal | null } = {}): Promise<KnowledgeHit[]> {
|
|
153
|
+
const body = await this.http.request<{ data: KnowledgeHit[] }>({
|
|
154
|
+
method: "POST",
|
|
155
|
+
path: `/ai/v1${seg("knowledge", name, "search")}`,
|
|
156
|
+
body: { query, limit: options.limit ?? 5 },
|
|
157
|
+
signal: options.signal ?? undefined,
|
|
158
|
+
});
|
|
159
|
+
return body.data;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/** Add text, or a web page to read (`url`). A signed-in user's documents are found only by them. Adding the same `source` again replaces it. */
|
|
163
|
+
addDocument(name: string, input: { text?: string; url?: string; title?: string; source?: string }): Promise<KnowledgeDocument> {
|
|
164
|
+
return this.http.request<KnowledgeDocument>({
|
|
165
|
+
method: "POST",
|
|
166
|
+
path: `/ai/v1${seg("knowledge", name, "documents")}`,
|
|
167
|
+
body: { title: input.title ?? "", source: input.source ?? "", text: input.text, url: input.url },
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/** Add a file (PDF, Word, HTML or text). */
|
|
172
|
+
addFile(name: string, file: Blob, options: { title?: string; source?: string; filename?: string } = {}): Promise<KnowledgeDocument> {
|
|
173
|
+
const form = new FormData();
|
|
174
|
+
form.append("file", file, options.filename ?? (file as File).name ?? "document");
|
|
175
|
+
if (options.title) form.append("title", options.title);
|
|
176
|
+
if (options.source) form.append("source", options.source);
|
|
177
|
+
return this.http.request<KnowledgeDocument>({ method: "POST", path: `/ai/v1${seg("knowledge", name, "documents")}`, body: form });
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/** Whether a document is ready to search, and why not if it failed. */
|
|
181
|
+
document(name: string, documentId: string): Promise<KnowledgeDocument> {
|
|
182
|
+
return this.http.request<KnowledgeDocument>({ path: `/ai/v1${seg("knowledge", name, "documents", documentId)}` });
|
|
183
|
+
}
|
|
184
|
+
}
|
package/src/ai.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* Models are called by the name your environment gave them. Who may call each is the model's policy; servers (a secret key) always may.
|
|
11
11
|
*/
|
|
12
12
|
import { ApiError } from "./errors.js";
|
|
13
|
+
import { AgentsClient, KnowledgeClient } from "./agents.js";
|
|
13
14
|
import type { HttpClient } from "./http.js";
|
|
14
15
|
|
|
15
16
|
export interface ChatMessage {
|
|
@@ -70,7 +71,15 @@ function bodyOf(model: string, input: string | ChatMessage[], options: ChatOptio
|
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
export class AiClient {
|
|
73
|
-
|
|
74
|
+
/** Agents the caller may run: `run`, `stream`, `get`, `decide`, `wait`. */
|
|
75
|
+
readonly agents: AgentsClient;
|
|
76
|
+
/** Knowledge bases the caller may search or add documents to. */
|
|
77
|
+
readonly knowledge: KnowledgeClient;
|
|
78
|
+
|
|
79
|
+
constructor(private readonly http: HttpClient) {
|
|
80
|
+
this.agents = new AgentsClient(http);
|
|
81
|
+
this.knowledge = new KnowledgeClient(http);
|
|
82
|
+
}
|
|
74
83
|
|
|
75
84
|
/** The models the caller may use. */
|
|
76
85
|
async models(): Promise<AiModelInfo[]> {
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,8 @@ export { PawabaseClient, createClient } from "./client.js";
|
|
|
2
2
|
export type { ClientOptions, DatabaseShape } from "./client.js";
|
|
3
3
|
|
|
4
4
|
export { AiClient } from "./ai.js";
|
|
5
|
+
export { AgentsClient, KnowledgeClient } from "./agents.js";
|
|
6
|
+
export type { AgentEvent, AgentRun, AgentRunOptions, AgentRunStatus, KnowledgeDocument, KnowledgeHit } from "./agents.js";
|
|
5
7
|
export type { AiModelInfo, ChatCompletion, ChatMessage, ChatOptions } from "./ai.js";
|
|
6
8
|
export { AuthClient } from "./auth.js";
|
|
7
9
|
export type {
|
package/src/manage/access.ts
CHANGED
|
@@ -111,96 +111,3 @@ export interface FirewallRule {
|
|
|
111
111
|
expiresAt?: When;
|
|
112
112
|
note?: string;
|
|
113
113
|
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* The firewall at the gateway: ordered rules (allow, block, log, rate limit), managed attack signatures, bans, and what it did.
|
|
117
|
-
*
|
|
118
|
-
* ```ts
|
|
119
|
-
* await m.firewall.addRule({ name: "Burst", action: "rate_limit",
|
|
120
|
-
* conditions: [{ field: "path", op: "starts_with", value: "/auth/v1/token" }],
|
|
121
|
-
* rateLimit: { requests: 10, window_seconds: 60, by: "ip", ban_seconds: 900 } });
|
|
122
|
-
* ```
|
|
123
|
-
*/
|
|
124
|
-
export class Firewall extends Service {
|
|
125
|
-
/** Rules in the order they are tried. */
|
|
126
|
-
rules(): Promise<Api> {
|
|
127
|
-
return this.get("/firewall");
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/** Add a rule at the end. */
|
|
131
|
-
addRule(rule: FirewallRule): Promise<Api> {
|
|
132
|
-
return this.post("/firewall", {
|
|
133
|
-
name: rule.name,
|
|
134
|
-
action: rule.action ?? "block",
|
|
135
|
-
conditions: rule.conditions ?? [],
|
|
136
|
-
logic: rule.logic ?? "all",
|
|
137
|
-
match: rule.match ?? {},
|
|
138
|
-
rate_limit: rule.rateLimit,
|
|
139
|
-
mode: rule.mode ?? "enforce",
|
|
140
|
-
enabled: rule.enabled ?? true,
|
|
141
|
-
expires_at: iso(rule.expiresAt),
|
|
142
|
-
note: rule.note ?? "",
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/** Change some fields of a rule, using the server's field names (`clear_expiry: true` removes an expiry). */
|
|
147
|
-
updateRule(ruleId: string, changes: Body): Promise<Api> {
|
|
148
|
-
return this.patch(seg("firewall", ruleId), changes);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
removeRule(ruleId: string): Promise<Api> {
|
|
152
|
-
return this.del(seg("firewall", ruleId));
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/** Set the order rules are tried in: every rule exactly once. */
|
|
156
|
-
order(ruleIds: string[]): Promise<Api> {
|
|
157
|
-
return this.put("/firewall-order", { ids: ruleIds });
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/** Managed rule sets (`sqli`, `xss`, `traversal`, `scanners`, `sensitive_files`, `no_user_agent`, `methods`) and automatic bans. */
|
|
161
|
-
config(): Promise<Api> {
|
|
162
|
-
return this.get("/firewall-config");
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/** `managed`: `{ sqli: "block", scanners: "log" }` (`off`, `log`, `block`). `autoBan`: `{ enabled, threshold, window_seconds, ban_seconds, statuses, exempt }`. */
|
|
166
|
-
setConfig(options: { managed?: Record<string, string>; autoBan?: Body }): Promise<Api> {
|
|
167
|
-
return this.put("/firewall-config", { managed: options.managed, auto_ban: options.autoBan });
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
bans(options: { includeExpired?: boolean } = {}): Promise<Api> {
|
|
171
|
-
return this.get("/firewall-bans", { all: options.includeExpired ? 1 : undefined });
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/** Ban an address or CIDR range for `seconds` (`0`: until lifted). */
|
|
175
|
-
ban(ip: string, options: { seconds?: number; reason?: string } = {}): Promise<Api> {
|
|
176
|
-
return this.post("/firewall-bans", { ip, seconds: options.seconds ?? 0, reason: options.reason ?? "" });
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
liftBan(banId: string): Promise<Api> {
|
|
180
|
-
return this.del(seg("firewall-bans", banId));
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
events(options: { action?: string; source?: string; ip?: string; path?: string; ruleId?: string; limit?: number } = {}): Promise<Api> {
|
|
184
|
-
const { ruleId, ...rest } = options;
|
|
185
|
-
return this.get("/firewall-events", { limit: 100, ...rest, rule_id: ruleId });
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/** Totals, a timeline, and the top addresses, paths, rules and countries. */
|
|
189
|
-
stats(options: { hours?: number } = {}): Promise<Api> {
|
|
190
|
-
return this.get("/firewall-stats", { hours: options.hours ?? 24 });
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/** What the firewall would do with a request, step by step. Nothing is sent or counted. */
|
|
194
|
-
test(ip: string, options: { path?: string; method?: string; userAgent?: string; query?: string; headers?: Record<string, string>; country?: string; role?: string } = {}): Promise<Api> {
|
|
195
|
-
return this.post("/firewall-test", {
|
|
196
|
-
ip,
|
|
197
|
-
path: options.path ?? "/",
|
|
198
|
-
method: options.method ?? "GET",
|
|
199
|
-
user_agent: options.userAgent ?? "",
|
|
200
|
-
query: options.query ?? "",
|
|
201
|
-
headers: options.headers ?? {},
|
|
202
|
-
country: options.country ?? "",
|
|
203
|
-
role: options.role ?? "none",
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
}
|