@kallfi/sdk 0.0.0-stage → 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/LICENSE +21 -0
- package/README.md +141 -2
- package/dist/client.d.ts +109 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +462 -0
- package/dist/client.js.map +1 -0
- package/dist/generated.d.ts +527 -0
- package/dist/generated.d.ts.map +1 -0
- package/dist/generated.js +5 -0
- package/dist/generated.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/operations.d.ts +408 -0
- package/dist/operations.d.ts.map +1 -0
- package/dist/operations.js +425 -0
- package/dist/operations.js.map +1 -0
- package/package.json +53 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Kallfi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,142 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Kallfi SDKs
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Typed server-side TypeScript and Python clients for the canonical Kallfi API.
|
|
4
|
+
The 0.2.0 source supports 38 operations: 31 Account operations and seven organization-resource operations. Availability, current membership, provider policy and economic admission remain server-owned. Explicit workspace support is negotiated before dispatch and safely rejects older servers.
|
|
5
|
+
|
|
6
|
+
## Install
|
|
7
|
+
|
|
8
|
+
Release package names are `@kallfi/sdk` on npm and `kallfi-sdk` on PyPI; Python imports remain `kallfi`. Registry availability must be checked for the selected release version.
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
npm install @kallfi/sdk
|
|
12
|
+
pnpm add @kallfi/sdk
|
|
13
|
+
yarn add @kallfi/sdk
|
|
14
|
+
python -m pip install kallfi-sdk
|
|
15
|
+
uv add kallfi-sdk
|
|
16
|
+
uv pip install kallfi-sdk
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Keep API credentials on trusted application servers. Never embed them in distributed client code.
|
|
20
|
+
|
|
21
|
+
## JavaScript / TypeScript
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import { Kallfi } from "@kallfi/sdk";
|
|
25
|
+
|
|
26
|
+
const kallfi = new Kallfi({ apiKey: process.env.KALLFI_API_KEY! });
|
|
27
|
+
|
|
28
|
+
const accepted = await kallfi.souls.create(
|
|
29
|
+
{
|
|
30
|
+
external_soul_id: "performer-17",
|
|
31
|
+
kind: "human",
|
|
32
|
+
description: "An energetic live host with warm, concise delivery.",
|
|
33
|
+
source_asset_ids: [],
|
|
34
|
+
},
|
|
35
|
+
{ idempotencyKey: crypto.randomUUID() },
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
const operation = await kallfi.operations.wait(accepted.operation.operation_id, {
|
|
39
|
+
timeoutMs: 120_000,
|
|
40
|
+
});
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Request and response types are generated from `openapi/openapi.v1.json` and are
|
|
44
|
+
exported by the root package. API failures throw `KallfiApiError`; branch on its
|
|
45
|
+
stable `code`, not its human-readable message.
|
|
46
|
+
|
|
47
|
+
## Python
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
import os
|
|
51
|
+
import uuid
|
|
52
|
+
|
|
53
|
+
from kallfi import Kallfi, SoulCreateRequest
|
|
54
|
+
|
|
55
|
+
with Kallfi(api_key=os.environ["KALLFI_API_KEY"]) as kallfi:
|
|
56
|
+
accepted = kallfi.souls.create(
|
|
57
|
+
SoulCreateRequest(
|
|
58
|
+
external_soul_id="performer-17",
|
|
59
|
+
kind="human",
|
|
60
|
+
description="An energetic live host with warm, concise delivery.",
|
|
61
|
+
source_asset_ids=[],
|
|
62
|
+
),
|
|
63
|
+
idempotency_key=str(uuid.uuid4()),
|
|
64
|
+
)
|
|
65
|
+
operation = kallfi.operations.wait(accepted.operation.operation_id, timeout=120.0)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
API failures raise `KallfiAPIError`; use stable codes and request metadata rather than human-readable messages.
|
|
69
|
+
|
|
70
|
+
## Surface
|
|
71
|
+
|
|
72
|
+
Both SDKs retain these seven typed resource methods alongside generated dispatch for all 38 canonical operations:
|
|
73
|
+
|
|
74
|
+
- `sourceAssets.create` / `source_assets.create`
|
|
75
|
+
- `souls.create`, `souls.retrieve`, and `souls.update`
|
|
76
|
+
- `souls.createResponse` / `souls.create_response`
|
|
77
|
+
- `souls.createGeneration` / `souls.create_generation`
|
|
78
|
+
- `operations.retrieve`
|
|
79
|
+
|
|
80
|
+
Mutation methods require an explicit idempotency key. The clients do not retry
|
|
81
|
+
implicitly, calculate prices, infer capabilities, or reproduce server-side
|
|
82
|
+
safety, quota, lifecycle, and quote rules.
|
|
83
|
+
|
|
84
|
+
## Develop
|
|
85
|
+
|
|
86
|
+
```sh
|
|
87
|
+
# JavaScript: generate/check contract types, test, type-check, and build
|
|
88
|
+
npm ci
|
|
89
|
+
npm run check
|
|
90
|
+
npm pack --dry-run
|
|
91
|
+
|
|
92
|
+
# Python: sync the lock, check generated models, lint/type-check/test, and build
|
|
93
|
+
uv sync --directory python --locked --all-extras
|
|
94
|
+
uv run --directory python ruff check src tests
|
|
95
|
+
uv run --directory python mypy src
|
|
96
|
+
uv run --directory python pytest
|
|
97
|
+
uv build --directory python
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
The repository pins the canonical contract digest and verifies generated-code
|
|
101
|
+
drift in CI. See [openapi/README.md](openapi/README.md) for provenance.
|
|
102
|
+
|
|
103
|
+
## Publishing
|
|
104
|
+
|
|
105
|
+
The manual workflows use GitHub OIDC trusted publishing and contain no registry
|
|
106
|
+
tokens. They remain skipped until maintainers create protected `npm` and `pypi`
|
|
107
|
+
repository environments, establish package ownership/trusted publishers at both
|
|
108
|
+
registries, and explicitly set the matching `*_TRUSTED_PUBLISHING_ENABLED`
|
|
109
|
+
repository variable to `true`. The canonical registry package name is `@kallfi/sdk` for npm and `kallfi-sdk` for PyPI. Both workflows verify an existing immutable tag
|
|
110
|
+
whose `vX.Y.Z` version matches both packages.
|
|
111
|
+
|
|
112
|
+
## License
|
|
113
|
+
|
|
114
|
+
[MIT](LICENSE)
|
|
115
|
+
|
|
116
|
+
## Universal API and workspace selection
|
|
117
|
+
|
|
118
|
+
SDK 0.2.0 interface:
|
|
119
|
+
|
|
120
|
+
```ts
|
|
121
|
+
const client = new Kallfi({
|
|
122
|
+
apiKey: process.env.KALLFI_API_KEY!,
|
|
123
|
+
surface: "nsfw-disabled",
|
|
124
|
+
// Omit workspaceId for Personal. Explicit UUID selects a currently authorized organization.
|
|
125
|
+
});
|
|
126
|
+
const response = await client.operation("getAccountCreatorPlan", {
|
|
127
|
+
body: { query: {}, body: {} },
|
|
128
|
+
}, { idempotencyKey: crypto.randomUUID() });
|
|
129
|
+
// response: { status, data, requestId?, retryAfter?, location?, contentType? }
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Operation arguments are the canonical endpoint path/query/body envelope, not a second admission or pricing model. POST read actions still require idempotency keys. Inspect the current canonical operation schema before selecting body fields; the snippet demonstrates transport shape only. Existing request/resource methods still return body data.
|
|
133
|
+
|
|
134
|
+
The default origin is acr.kallfi.com or acr.kallfi.red by surface. Explicit api.kallfi.com/red origins remain supported; unknown origins and explicit surface mismatch are rejected. An explicit workspace selector emits one validated X-Kallfi-Workspace-ID. Before every selected-workspace request the SDK performs one uncached unauthenticated GET /v1/capabilities on the same origin, sharing the overall timeout and caller signal. A missing, old, HTML, redirected or mismatched capability response raises KallfiWorkspaceUnsupportedError (code workspace_capability_unsupported) without dispatching the business request. The error carries no fabricated HTTP status. MCP uses this same SDK boundary and performs no second handshake. Capability support is not membership, role, scope, balance or business authorization; those remain server-owned.
|
|
135
|
+
|
|
136
|
+
Account-scoped operations reject a configured workspace selector locally. Personal omission does not perform a capability probe. No automatic mutation retry, selector override or key issuance is added. Redirects/login HTML are rejected. JSON response reads are bounded (2MiB default, configurable up to16MiB); capability evidence is bounded4096bytes. Timeout/cancellation includes response consumption and polling sleeps; raw server messages, details and transport causes are not retained by internal errors. Errors expose bounded safe code/status/requestId/retryAfter only. No media upload, economic terms or provider authority is inferred from this transport.
|
|
137
|
+
|
|
138
|
+
Generated types and all38 operation descriptors come from the same SHA-pinned OpenAPI snapshot. npm run generate regenerates both; npm run check:generated detects drift in either. Versioning, release qualification and publication remain owner-selected work.
|
|
139
|
+
|
|
140
|
+
## MCP integration
|
|
141
|
+
|
|
142
|
+
The published MCP server remains `@kallfi/mcp`. Its next compatible release uses `@kallfi/sdk` as the single HTTP transport. Start the selected published MCP version with `npx @kallfi/mcp`; do not assume older releases already use the new SDK.
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { type KallfiOperationId } from "./operations.js";
|
|
2
|
+
import type { GenerationCreateRequest, Operation, OperationAcceptedResponse, SoulAcceptedResponse, SoulCreateRequest, Soul, SoulUpdateAcceptedResponse, SoulUpdateRequest, SourceAssetAcceptedResponse, SourceAssetCreateRequest } from "./generated.js";
|
|
3
|
+
export type FetchLike = (input: string | URL, init?: RequestInit) => Promise<Response>;
|
|
4
|
+
export type KallfiSurface = "nsfw-disabled" | "nsfw-enabled";
|
|
5
|
+
export interface OperationArguments {
|
|
6
|
+
path?: Readonly<Record<string, string>>;
|
|
7
|
+
query?: Readonly<Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>>;
|
|
8
|
+
body?: unknown;
|
|
9
|
+
}
|
|
10
|
+
export type OperationOptions = Pick<DetailedRequestOptions, "idempotencyKey" | "signal" | "timeoutMs">;
|
|
11
|
+
export interface DetailedRequestOptions {
|
|
12
|
+
body?: unknown;
|
|
13
|
+
idempotencyKey?: string;
|
|
14
|
+
signal?: AbortSignal;
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface DetailedResponse<T> {
|
|
18
|
+
status: number;
|
|
19
|
+
data: T;
|
|
20
|
+
requestId?: string;
|
|
21
|
+
retryAfter?: string;
|
|
22
|
+
location?: string;
|
|
23
|
+
contentType?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface KallfiOptions {
|
|
26
|
+
surface?: KallfiSurface;
|
|
27
|
+
workspaceId?: string;
|
|
28
|
+
maxResponseBytes?: number;
|
|
29
|
+
apiKey: string;
|
|
30
|
+
baseUrl?: string;
|
|
31
|
+
fetch?: FetchLike;
|
|
32
|
+
timeoutMs?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface MutationOptions {
|
|
35
|
+
idempotencyKey: string;
|
|
36
|
+
}
|
|
37
|
+
export interface WaitOptions {
|
|
38
|
+
timeoutMs?: number;
|
|
39
|
+
intervalMs?: number;
|
|
40
|
+
signal?: AbortSignal;
|
|
41
|
+
}
|
|
42
|
+
export declare class KallfiWorkspaceUnsupportedError extends Error {
|
|
43
|
+
readonly code: "workspace_capability_unsupported";
|
|
44
|
+
constructor();
|
|
45
|
+
}
|
|
46
|
+
export declare class KallfiNetworkError extends Error {
|
|
47
|
+
readonly cause: unknown;
|
|
48
|
+
constructor(message: string, cause?: unknown);
|
|
49
|
+
}
|
|
50
|
+
export declare class KallfiTimeoutError extends KallfiNetworkError {
|
|
51
|
+
readonly timeoutMs: number;
|
|
52
|
+
constructor(timeoutMs: number, cause?: unknown);
|
|
53
|
+
}
|
|
54
|
+
export declare class KallfiApiError extends Error {
|
|
55
|
+
readonly status: number;
|
|
56
|
+
readonly code: string;
|
|
57
|
+
readonly request_id?: string;
|
|
58
|
+
readonly details?: Readonly<Record<string, string>>;
|
|
59
|
+
readonly retry_after?: string;
|
|
60
|
+
constructor(options: {
|
|
61
|
+
status: number;
|
|
62
|
+
code: string;
|
|
63
|
+
message: string;
|
|
64
|
+
request_id?: string;
|
|
65
|
+
details?: Readonly<Record<string, string>>;
|
|
66
|
+
retry_after?: string;
|
|
67
|
+
});
|
|
68
|
+
get requestId(): string | undefined;
|
|
69
|
+
get retryAfter(): string | undefined;
|
|
70
|
+
}
|
|
71
|
+
export declare class Kallfi {
|
|
72
|
+
readonly sourceAssets: SourceAssetsResource;
|
|
73
|
+
readonly souls: SoulsResource;
|
|
74
|
+
readonly operations: OperationsResource;
|
|
75
|
+
private readonly baseUrl;
|
|
76
|
+
private readonly apiKey;
|
|
77
|
+
private readonly fetcher;
|
|
78
|
+
private readonly timeoutMs;
|
|
79
|
+
private readonly workspaceId?;
|
|
80
|
+
private readonly maxResponseBytes;
|
|
81
|
+
constructor(options: KallfiOptions);
|
|
82
|
+
static fromEnv(options?: Omit<KallfiOptions, "apiKey">): Kallfi;
|
|
83
|
+
operation<T = unknown>(operationId: KallfiOperationId, args?: OperationArguments, options?: OperationOptions): Promise<DetailedResponse<T>>;
|
|
84
|
+
request<T>(method: string, path: string, body?: unknown, idempotencyKey?: string): Promise<T>;
|
|
85
|
+
requestDetailed<T>(method: string, path: string, options?: DetailedRequestOptions): Promise<DetailedResponse<T>>;
|
|
86
|
+
private requireWorkspaceCapability;
|
|
87
|
+
private performRequest;
|
|
88
|
+
}
|
|
89
|
+
export declare class SourceAssetsResource {
|
|
90
|
+
private readonly client;
|
|
91
|
+
constructor(client: Kallfi);
|
|
92
|
+
create(body: SourceAssetCreateRequest, options: MutationOptions | string): Promise<SourceAssetAcceptedResponse>;
|
|
93
|
+
}
|
|
94
|
+
export declare class SoulsResource {
|
|
95
|
+
private readonly client;
|
|
96
|
+
constructor(client: Kallfi);
|
|
97
|
+
create(body: SoulCreateRequest, options: MutationOptions | string): Promise<SoulAcceptedResponse>;
|
|
98
|
+
retrieve(soulId: string): Promise<Soul>;
|
|
99
|
+
update(soulId: string, body: SoulUpdateRequest, options: MutationOptions | string): Promise<SoulUpdateAcceptedResponse>;
|
|
100
|
+
createResponse(soulId: string, body: import("./generated.js").ResponseCreateRequest, options: MutationOptions | string): Promise<OperationAcceptedResponse>;
|
|
101
|
+
createGeneration(soulId: string, body: GenerationCreateRequest, options: MutationOptions | string): Promise<OperationAcceptedResponse>;
|
|
102
|
+
}
|
|
103
|
+
export declare class OperationsResource {
|
|
104
|
+
private readonly client;
|
|
105
|
+
constructor(client: Kallfi);
|
|
106
|
+
retrieve(operationId: string): Promise<Operation>;
|
|
107
|
+
wait(operationId: string, options?: WaitOptions): Promise<Operation>;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|