akribes 0.21.17
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/CHANGELOG.md +30 -0
- package/LICENSE +21 -0
- package/README.md +160 -0
- package/dist/client.d.ts +240 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +272 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +196 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +274 -0
- package/dist/errors.js.map +1 -0
- package/dist/execution/index.d.ts +3 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +3 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/replay.d.ts +37 -0
- package/dist/execution/replay.d.ts.map +1 -0
- package/dist/execution/replay.js +59 -0
- package/dist/execution/replay.js.map +1 -0
- package/dist/execution/steps.d.ts +327 -0
- package/dist/execution/steps.d.ts.map +1 -0
- package/dist/execution/steps.js +1068 -0
- package/dist/execution/steps.js.map +1 -0
- package/dist/http.d.ts +53 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +141 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/runStream.d.ts +176 -0
- package/dist/runStream.d.ts.map +1 -0
- package/dist/runStream.js +408 -0
- package/dist/runStream.js.map +1 -0
- package/dist/sse.d.ts +46 -0
- package/dist/sse.d.ts.map +1 -0
- package/dist/sse.js +218 -0
- package/dist/sse.js.map +1 -0
- package/dist/sub/bench.d.ts +182 -0
- package/dist/sub/bench.d.ts.map +1 -0
- package/dist/sub/bench.js +420 -0
- package/dist/sub/bench.js.map +1 -0
- package/dist/sub/channels.d.ts +22 -0
- package/dist/sub/channels.d.ts.map +1 -0
- package/dist/sub/channels.js +32 -0
- package/dist/sub/channels.js.map +1 -0
- package/dist/sub/clients.d.ts +79 -0
- package/dist/sub/clients.d.ts.map +1 -0
- package/dist/sub/clients.js +190 -0
- package/dist/sub/clients.js.map +1 -0
- package/dist/sub/documents.d.ts +113 -0
- package/dist/sub/documents.d.ts.map +1 -0
- package/dist/sub/documents.js +329 -0
- package/dist/sub/documents.js.map +1 -0
- package/dist/sub/evals.d.ts +71 -0
- package/dist/sub/evals.d.ts.map +1 -0
- package/dist/sub/evals.js +86 -0
- package/dist/sub/evals.js.map +1 -0
- package/dist/sub/events.d.ts +65 -0
- package/dist/sub/events.d.ts.map +1 -0
- package/dist/sub/events.js +154 -0
- package/dist/sub/events.js.map +1 -0
- package/dist/sub/executions.d.ts +255 -0
- package/dist/sub/executions.d.ts.map +1 -0
- package/dist/sub/executions.js +322 -0
- package/dist/sub/executions.js.map +1 -0
- package/dist/sub/mcp.d.ts +51 -0
- package/dist/sub/mcp.d.ts.map +1 -0
- package/dist/sub/mcp.js +42 -0
- package/dist/sub/mcp.js.map +1 -0
- package/dist/sub/projects.d.ts +73 -0
- package/dist/sub/projects.d.ts.map +1 -0
- package/dist/sub/projects.js +101 -0
- package/dist/sub/projects.js.map +1 -0
- package/dist/sub/scripts.d.ts +58 -0
- package/dist/sub/scripts.d.ts.map +1 -0
- package/dist/sub/scripts.js +82 -0
- package/dist/sub/scripts.js.map +1 -0
- package/dist/sub/tokens.d.ts +126 -0
- package/dist/sub/tokens.d.ts.map +1 -0
- package/dist/sub/tokens.js +105 -0
- package/dist/sub/tokens.js.map +1 -0
- package/dist/sub/versions.d.ts +29 -0
- package/dist/sub/versions.d.ts.map +1 -0
- package/dist/sub/versions.js +52 -0
- package/dist/sub/versions.js.map +1 -0
- package/dist/tokenSafety.d.ts +15 -0
- package/dist/tokenSafety.d.ts.map +1 -0
- package/dist/tokenSafety.js +24 -0
- package/dist/tokenSafety.js.map +1 -0
- package/dist/types.d.ts +1147 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +132 -0
- package/dist/types.js.map +1 -0
- package/dist/workflowEvents.d.ts +297 -0
- package/dist/workflowEvents.d.ts.map +1 -0
- package/dist/workflowEvents.js +612 -0
- package/dist/workflowEvents.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { HttpClient } from '../http';
|
|
2
|
+
import type { ScriptVersion, ScriptVersionResponse, DryRunResult } from '../types';
|
|
3
|
+
export declare class VersionsClient {
|
|
4
|
+
private http;
|
|
5
|
+
private projectId;
|
|
6
|
+
private defaultPublishedBy;
|
|
7
|
+
constructor(http: HttpClient, projectId: number, defaultPublishedBy: string | undefined);
|
|
8
|
+
private path;
|
|
9
|
+
list(scriptName: string, opts?: {
|
|
10
|
+
signal?: AbortSignal;
|
|
11
|
+
}): Promise<ScriptVersion[]>;
|
|
12
|
+
get(scriptName: string, versionId: number, opts?: {
|
|
13
|
+
signal?: AbortSignal;
|
|
14
|
+
}): Promise<ScriptVersion | null>;
|
|
15
|
+
getLatest(scriptName: string, opts?: {
|
|
16
|
+
signal?: AbortSignal;
|
|
17
|
+
}): Promise<ScriptVersionResponse | null>;
|
|
18
|
+
/** @deprecated Use scripts.saveDraft + versions.publish instead */
|
|
19
|
+
save(scriptName: string, source: string, opts?: {
|
|
20
|
+
signal?: AbortSignal;
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
publish(scriptName: string, label: string | null, channels: string[], publishedBy?: string, opts?: {
|
|
23
|
+
force?: boolean;
|
|
24
|
+
reason?: string;
|
|
25
|
+
dryRun?: boolean;
|
|
26
|
+
signal?: AbortSignal;
|
|
27
|
+
}): Promise<ScriptVersion | DryRunResult>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=versions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../src/sub/versions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEnF,qBAAa,cAAc;IAEvB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,kBAAkB;gBAFlB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,MAAM,GAAG,SAAS;IAGhD,OAAO,CAAC,IAAI;IAIN,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAInF,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAM1G,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAM3G,mEAAmE;IAC7D,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxF,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAClF,OAAO,CAAC,aAAa,GAAG,YAAY,CAAC;CAoBzC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { nullOn404 } from '../http';
|
|
2
|
+
export class VersionsClient {
|
|
3
|
+
http;
|
|
4
|
+
projectId;
|
|
5
|
+
defaultPublishedBy;
|
|
6
|
+
constructor(http, projectId, defaultPublishedBy) {
|
|
7
|
+
this.http = http;
|
|
8
|
+
this.projectId = projectId;
|
|
9
|
+
this.defaultPublishedBy = defaultPublishedBy;
|
|
10
|
+
}
|
|
11
|
+
path(scriptName, ...segments) {
|
|
12
|
+
return this.http.scriptPath(this.projectId, scriptName, ...segments);
|
|
13
|
+
}
|
|
14
|
+
async list(scriptName, opts) {
|
|
15
|
+
return (await this.http.fetchOk(this.path(scriptName, 'versions'), opts)).json();
|
|
16
|
+
}
|
|
17
|
+
async get(scriptName, versionId, opts) {
|
|
18
|
+
return nullOn404(async () => (await this.http.fetchOk(this.path(scriptName, 'versions', String(versionId)), opts)).json());
|
|
19
|
+
}
|
|
20
|
+
async getLatest(scriptName, opts) {
|
|
21
|
+
return nullOn404(async () => (await this.http.fetchOk(this.path(scriptName, 'latest'), opts)).json());
|
|
22
|
+
}
|
|
23
|
+
/** @deprecated Use scripts.saveDraft + versions.publish instead */
|
|
24
|
+
async save(scriptName, source, opts) {
|
|
25
|
+
await this.http.fetchOk(this.path(scriptName, 'versions'), {
|
|
26
|
+
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
27
|
+
body: JSON.stringify({ source }), signal: opts?.signal,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
async publish(scriptName, label, channels, publishedBy, opts) {
|
|
31
|
+
const body = await (await this.http.fetchOk(this.path(scriptName, 'publish'), {
|
|
32
|
+
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
33
|
+
body: JSON.stringify({
|
|
34
|
+
label, channels,
|
|
35
|
+
published_by: publishedBy ?? this.defaultPublishedBy,
|
|
36
|
+
force: opts?.force,
|
|
37
|
+
// The server persists `reason` on the versions row's
|
|
38
|
+
// force_published_reason column when force is true and the
|
|
39
|
+
// unified contract check produced breaks. ≥ 20 chars enforced
|
|
40
|
+
// server-side; the Studio enforces it client-side too for fast
|
|
41
|
+
// feedback but the source of truth is the server.
|
|
42
|
+
reason: opts?.reason,
|
|
43
|
+
dry_run: opts?.dryRun,
|
|
44
|
+
}),
|
|
45
|
+
signal: opts?.signal,
|
|
46
|
+
})).json();
|
|
47
|
+
if (body.dry_run)
|
|
48
|
+
return body;
|
|
49
|
+
return body.version;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/sub/versions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Refuse to put a token in a URL query string unless it looks like a
|
|
3
|
+
* scoped token (`akribes_tk_…` / `aura_tk_…`). Long-lived service
|
|
4
|
+
* tokens — the secret half of `AKRIBES_SERVICE_TOKEN_<NAME>=*:secret`
|
|
5
|
+
* configured on trusted backends like puto — must never traverse a
|
|
6
|
+
* reverse-proxy / load-balancer / Forgejo-runner access log via
|
|
7
|
+
* `?token=`, because a leak of a wildcard-Admin service token equals
|
|
8
|
+
* full platform compromise (PENTEST CRITICAL-02).
|
|
9
|
+
*
|
|
10
|
+
* Call this from any SDK code path that appends a token to a URL.
|
|
11
|
+
* It throws synchronously so misuse is caught at the call site, not
|
|
12
|
+
* silently leaked at request time.
|
|
13
|
+
*/
|
|
14
|
+
export declare function assertTokenSafeInUrl(token: string): void;
|
|
15
|
+
//# sourceMappingURL=tokenSafety.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenSafety.d.ts","sourceRoot":"","sources":["../src/tokenSafety.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAWxD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Refuse to put a token in a URL query string unless it looks like a
|
|
3
|
+
* scoped token (`akribes_tk_…` / `aura_tk_…`). Long-lived service
|
|
4
|
+
* tokens — the secret half of `AKRIBES_SERVICE_TOKEN_<NAME>=*:secret`
|
|
5
|
+
* configured on trusted backends like puto — must never traverse a
|
|
6
|
+
* reverse-proxy / load-balancer / Forgejo-runner access log via
|
|
7
|
+
* `?token=`, because a leak of a wildcard-Admin service token equals
|
|
8
|
+
* full platform compromise (PENTEST CRITICAL-02).
|
|
9
|
+
*
|
|
10
|
+
* Call this from any SDK code path that appends a token to a URL.
|
|
11
|
+
* It throws synchronously so misuse is caught at the call site, not
|
|
12
|
+
* silently leaked at request time.
|
|
13
|
+
*/
|
|
14
|
+
export function assertTokenSafeInUrl(token) {
|
|
15
|
+
if (token.startsWith('akribes_tk_') || token.startsWith('aura_tk_')) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
throw new Error('Refusing to put a non-scoped token in the URL query string. ' +
|
|
19
|
+
'Scoped tokens (akribes_tk_…) may be passed in ?token= because they ' +
|
|
20
|
+
'are short-lived and revokable; service tokens (the secret half of ' +
|
|
21
|
+
'AKRIBES_SERVICE_TOKEN_<NAME>=*:secret) MUST use header bearer auth ' +
|
|
22
|
+
'and never appear in URLs that hit access logs.');
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=tokenSafety.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenSafety.js","sourceRoot":"","sources":["../src/tokenSafety.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpE,OAAO;IACT,CAAC;IACD,MAAM,IAAI,KAAK,CACb,8DAA8D;QAC5D,qEAAqE;QACrE,oEAAoE;QACpE,qEAAqE;QACrE,gDAAgD,CACnD,CAAC;AACJ,CAAC"}
|