aegis-platform-sdk 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/transport.ts","../src/resources/auth.ts","../src/resources/iam.ts","../src/resources/osdk.ts","../src/resources/operator.ts","../src/resources/ontology.ts","../src/resources/aip.ts","../src/resources/functions.ts","../src/resources/datasets.ts","../src/client.ts"],"sourcesContent":["export { AegisClient } from \"./client\";\nexport type { AegisClientOptions } from \"./client\";\nexport { AegisAPIError, AuthError, NotFoundError, PermissionDeniedError } from \"./errors\";\nexport type { QueryParams, RequestOptions, Transport } from \"./transport\";\nexport type {\n DevMode,\n Json,\n OsdkToken,\n OsdkTokenWithSecret,\n Permission,\n Role,\n Tenant,\n TokenPair,\n User,\n WhoAmI,\n} from \"./types\";\nexport type { LoginOptions } from \"./resources/auth\";\nexport type { OperatorTaskCreate, OperatorTaskListOptions } from \"./resources/operator\";\nexport type { ObjectTypeWrite } from \"./resources/ontology\";\nexport type { FunctionCreate, PullRequestCreate } from \"./resources/functions\";\nexport type { TransactionKind } from \"./resources/datasets\";\n","/**\n * Exception hierarchy for the AEGIS SDK — mirrors `aegis.exceptions` in the\n * Python SDK. Callers can catch the broad `AegisAPIError` or react to\n * specific subclasses:\n *\n * ```ts\n * try {\n * await client.iam.users.list();\n * } catch (err) {\n * if (err instanceof PermissionDeniedError) console.log(\"missing perm:\", err.detail);\n * else if (err instanceof AegisAPIError) console.log(err.statusCode, err.detail);\n * }\n * ```\n */\n\nexport class AegisAPIError extends Error {\n readonly statusCode: number;\n readonly detail: string;\n readonly payload: unknown;\n\n constructor(statusCode: number, detail = \"\", payload: unknown = null) {\n super(`HTTP ${statusCode}: ${detail}`);\n this.name = new.target.name;\n this.statusCode = statusCode;\n this.detail = detail;\n this.payload = payload;\n }\n}\n\n/** 401 — invalid / expired token, missing credentials, locked account. */\nexport class AuthError extends AegisAPIError {}\n\n/** 403 — authenticated but lacks the permission for this call. */\nexport class PermissionDeniedError extends AegisAPIError {}\n\n/** 404 — the addressed resource does not exist (or is hidden by tenant scope). */\nexport class NotFoundError extends AegisAPIError {}\n","import { AegisAPIError, AuthError, NotFoundError, PermissionDeniedError } from \"./errors\";\n\nexport type QueryParams = Record<string, string | number | boolean | undefined | null>;\n\nexport interface RequestOptions {\n params?: QueryParams;\n json?: unknown;\n signal?: AbortSignal;\n}\n\n/** The verb-agnostic transport contract every resource is built on. */\nexport interface Transport {\n request<T = unknown>(method: string, path: string, opts?: RequestOptions): Promise<T>;\n}\n\nexport function buildUrl(baseUrl: string, path: string, params?: QueryParams): string {\n const url = new URL(baseUrl.replace(/\\/+$/, \"\") + path);\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) url.searchParams.set(key, String(value));\n }\n }\n return url.toString();\n}\n\n/** Map an HTTP response to a payload or throw the mirrored exception hierarchy. */\nexport async function handleResponse<T>(res: Response): Promise<T> {\n if (res.status === 204) return null as T;\n const text = await res.text();\n let payload: unknown = text;\n try {\n payload = text ? JSON.parse(text) : null;\n } catch {\n /* non-JSON body — keep raw text */\n }\n if (res.ok) return payload as T;\n\n let detail = \"\";\n if (payload && typeof payload === \"object\" && \"detail\" in payload) {\n detail = String((payload as { detail: unknown }).detail ?? \"\");\n } else if (typeof payload === \"string\") {\n detail = payload;\n }\n if (res.status === 401) throw new AuthError(401, detail || \"unauthenticated\", payload);\n if (res.status === 403) throw new PermissionDeniedError(403, detail || \"forbidden\", payload);\n if (res.status === 404) throw new NotFoundError(404, detail || \"not found\", payload);\n throw new AegisAPIError(res.status, detail || text, payload);\n}\n","import type { Transport } from \"../transport\";\nimport type { DevMode, TokenPair, WhoAmI } from \"../types\";\n\nexport interface LoginOptions {\n totpCode?: string;\n /** Attach the issued JWT to the client for subsequent calls (default true). */\n attach?: boolean;\n}\n\n/** `client.auth.*` — login, whoami, dev-mode. */\nexport class AuthResource {\n constructor(\n private readonly t: Transport,\n private readonly setToken: (token: string | null) => void,\n ) {}\n\n async login(username: string, password: string, opts: LoginOptions = {}): Promise<TokenPair> {\n const body: Record<string, unknown> = { username, password };\n if (opts.totpCode) body.totp_code = opts.totpCode;\n const pair = await this.t.request<TokenPair>(\"POST\", \"/auth/login\", { json: body });\n if (opts.attach !== false) this.setToken(pair.access_token);\n return pair;\n }\n\n me(): Promise<WhoAmI> {\n return this.t.request<WhoAmI>(\"GET\", \"/auth/me\");\n }\n\n /** Activate a vendor dev-mode session; requires the `vendor` role. */\n enableDevMode(password: string): Promise<DevMode> {\n return this.t.request<DevMode>(\"POST\", \"/me/dev-mode\", { json: { password } });\n }\n}\n","import type { Transport } from \"../transport\";\nimport type { Json, Permission, Role, User } from \"../types\";\n\nclass UsersResource {\n constructor(private readonly t: Transport) {}\n list(): Promise<User[]> {\n return this.t.request(\"GET\", \"/iam/users\");\n }\n get(userId: string): Promise<User> {\n return this.t.request(\"GET\", `/iam/users/${userId}`);\n }\n}\n\nclass RolesResource {\n constructor(private readonly t: Transport) {}\n list(): Promise<Role[]> {\n return this.t.request(\"GET\", \"/iam/roles\");\n }\n get(roleId: string): Promise<Role> {\n return this.t.request(\"GET\", `/iam/roles/${roleId}`);\n }\n}\n\nclass GroupsResource {\n constructor(private readonly t: Transport) {}\n list(opts: { limit?: number; offset?: number } = {}): Promise<Json[]> {\n return this.t.request(\"GET\", \"/iam/groups\", { params: opts });\n }\n get(groupId: string): Promise<Json> {\n return this.t.request(\"GET\", `/iam/groups/${groupId}`);\n }\n create(name: string, description?: string): Promise<Json> {\n return this.t.request(\"POST\", \"/iam/groups\", { json: { name, description } });\n }\n update(groupId: string, patch: { name?: string; description?: string }): Promise<Json> {\n return this.t.request(\"PATCH\", `/iam/groups/${groupId}`, { json: patch });\n }\n delete(groupId: string): Promise<void> {\n return this.t.request(\"DELETE\", `/iam/groups/${groupId}`);\n }\n listMembers(groupId: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/iam/groups/${groupId}/members`);\n }\n addMember(groupId: string, userId: string): Promise<Json> {\n return this.t.request(\"POST\", `/iam/groups/${groupId}/members`, { json: { user_id: userId } });\n }\n removeMember(groupId: string, userId: string): Promise<void> {\n return this.t.request(\"DELETE\", `/iam/groups/${groupId}/members/${userId}`);\n }\n listForUser(userId: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/iam/users/${userId}/groups`);\n }\n}\n\nclass PermissionsResource {\n constructor(private readonly t: Transport) {}\n list(resource?: string): Promise<Permission[]> {\n return this.t.request(\"GET\", \"/iam/permissions\", { params: { resource } });\n }\n}\n\nclass NavResource {\n constructor(private readonly t: Transport) {}\n tree(asRoleId?: string): Promise<Json> {\n return this.t.request(\"GET\", \"/iam/nav\", { params: { as_role_id: asRoleId } });\n }\n}\n\n/** `client.iam.*` — users, roles, groups, permissions, nav tree. */\nexport class IamResource {\n readonly users: UsersResource;\n readonly roles: RolesResource;\n readonly groups: GroupsResource;\n readonly permissions: PermissionsResource;\n readonly nav: NavResource;\n\n constructor(t: Transport) {\n this.users = new UsersResource(t);\n this.roles = new RolesResource(t);\n this.groups = new GroupsResource(t);\n this.permissions = new PermissionsResource(t);\n this.nav = new NavResource(t);\n }\n}\n","import type { Transport } from \"../transport\";\nimport type { OsdkToken, OsdkTokenWithSecret } from \"../types\";\n\n/** `client.osdk.*` — OSDK application token management (Governance → OSDK). */\nexport class OsdkResource {\n constructor(private readonly t: Transport) {}\n\n list(): Promise<OsdkToken[]> {\n return this.t.request(\"GET\", \"/governance/tokens\");\n }\n get(tokenId: string): Promise<OsdkToken> {\n return this.t.request(\"GET\", `/governance/tokens/${tokenId}`);\n }\n /** Returns the plaintext secret ONCE — stash it like any other secret. */\n create(name: string, scopes: string[], expiresAt?: string): Promise<OsdkTokenWithSecret> {\n return this.t.request(\"POST\", \"/governance/tokens\", {\n json: { name, scopes, expires_at: expiresAt },\n });\n }\n rotate(tokenId: string): Promise<OsdkTokenWithSecret> {\n return this.t.request(\"POST\", `/governance/tokens/${tokenId}/rotate`);\n }\n revoke(tokenId: string): Promise<void> {\n return this.t.request(\"DELETE\", `/governance/tokens/${tokenId}`);\n }\n}\n","import type { Transport } from \"../transport\";\nimport type { Json } from \"../types\";\n\nexport interface OperatorTaskListOptions {\n status?: string;\n project_id?: string;\n origin?: string;\n mine?: boolean;\n limit?: number;\n}\n\nexport interface OperatorTaskCreate {\n prompt_text: string;\n title?: string;\n project_id?: string;\n priority?: string;\n parent_task_id?: string;\n markings?: string[];\n}\n\nclass OperatorTasksResource {\n constructor(private readonly t: Transport) {}\n\n list(opts: OperatorTaskListOptions = {}): Promise<Json[]> {\n return this.t.request(\"GET\", \"/operator/tasks\", { params: { ...opts } });\n }\n get(taskId: string): Promise<Json> {\n return this.t.request(\"GET\", `/operator/tasks/${taskId}`);\n }\n create(input: OperatorTaskCreate): Promise<Json> {\n return this.t.request(\"POST\", \"/operator/tasks\", { json: input });\n }\n cancel(taskId: string): Promise<Json> {\n return this.t.request(\"PATCH\", `/operator/tasks/${taskId}`, { json: { action: \"cancel\" } });\n }\n retry(taskId: string): Promise<Json> {\n return this.t.request(\"PATCH\", `/operator/tasks/${taskId}`, { json: { action: \"retry\" } });\n }\n reprioritize(taskId: string, priority: string): Promise<Json> {\n return this.t.request(\"PATCH\", `/operator/tasks/${taskId}`, {\n json: { action: \"reprioritize\", priority },\n });\n }\n}\n\n/** `client.operator.*` — operator task queue (NL kanban). */\nexport class OperatorResource {\n readonly tasks: OperatorTasksResource;\n constructor(t: Transport) {\n this.tasks = new OperatorTasksResource(t);\n }\n}\n","import type { Transport } from \"../transport\";\nimport type { Json } from \"../types\";\n\nclass ObjectsResource {\n constructor(private readonly t: Transport) {}\n\n get(objectId: string): Promise<Json> {\n return this.t.request(\"GET\", `/ontology/nodes/${objectId}`);\n }\n list(kind: string, opts: { limit?: number; offset?: number; q?: string } = {}): Promise<Json[]> {\n return this.t.request(\"GET\", \"/ontology/nodes\", { params: { node_type: kind, ...opts } });\n }\n create(kind: string, properties: Json, name?: string): Promise<Json> {\n return this.t.request(\"POST\", \"/ontology/nodes\", {\n json: { kind, properties, name },\n });\n }\n createMany(kind: string, items: Json[], markings?: string[]): Promise<Json> {\n return this.t.request(\"POST\", \"/ontology/nodes/bulk\", { json: { kind, items, markings } });\n }\n delete(objectId: string): Promise<Json> {\n return this.t.request(\"DELETE\", `/ontology/nodes/${objectId}`);\n }\n bulkDelete(opts: {\n object_ids?: string[];\n kind?: string;\n dry_run?: boolean;\n confirm?: boolean;\n expected_count?: number;\n }): Promise<Json> {\n return this.t.request(\"POST\", \"/ontology/nodes/bulk-delete\", { json: opts });\n }\n links(objectId: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/entities/${objectId}/links`);\n }\n history(objectId: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/lineage/by-asset/${objectId}`);\n }\n queryTimeseries(\n objectId: string,\n propertyName: string,\n opts: { from_time?: string; to_time?: string; max_points?: number } = {},\n ): Promise<Json> {\n return this.t.request(\n \"POST\",\n `/ontology/nodes/${objectId}/properties/${propertyName}/timeseries-query`,\n { json: opts },\n );\n }\n appendTimeseries(objectId: string, propertyName: string, points: Json[]): Promise<Json> {\n return this.t.request(\n \"POST\",\n `/ontology/nodes/${objectId}/properties/${propertyName}/timeseries/append`,\n { json: { points } },\n );\n }\n}\n\nclass GraphResource {\n constructor(private readonly t: Transport) {}\n expand(seedId: string, opts: { depth?: number; limit?: number } = {}): Promise<Json> {\n return this.t.request(\"GET\", `/entities/${seedId}/graph`, { params: opts });\n }\n}\n\nclass ExplorerResource {\n constructor(private readonly t: Transport) {}\n histogram(property: string, filters?: Json): Promise<Json[]> {\n return this.t.request(\"GET\", \"/entities/aggregate\", {\n params: { property, ...(filters as Record<string, string> | undefined) },\n });\n }\n timeline(filters?: Json, bin?: string): Promise<Json[]> {\n return this.t.request(\"GET\", \"/entities/timeline\", {\n params: { bin, ...(filters as Record<string, string> | undefined) },\n });\n }\n}\n\nexport interface ObjectTypeWrite {\n title_property: string;\n properties: Json;\n display_name?: string;\n enforce?: boolean;\n markings?: string[];\n}\n\nclass ObjectTypesResource {\n constructor(private readonly t: Transport) {}\n get(kind: string): Promise<Json> {\n return this.t.request(\"GET\", `/ontology/object-types/${kind}`);\n }\n create(kind: string, input: ObjectTypeWrite): Promise<Json> {\n return this.t.request(\"POST\", \"/ontology/object-types\", { json: { kind, ...input } });\n }\n update(kind: string, input: ObjectTypeWrite): Promise<Json> {\n return this.t.request(\"PUT\", `/ontology/object-types/${kind}`, { json: input });\n }\n delete(kind: string): Promise<Json> {\n return this.t.request(\"DELETE\", `/ontology/object-types/${kind}`);\n }\n}\n\nclass LinkTypesResource {\n constructor(private readonly t: Transport) {}\n declare(input: {\n source_kind: string;\n target_kind: string;\n relation: string;\n cardinality: string;\n inverse_label?: string;\n }): Promise<Json> {\n return this.t.request(\"POST\", \"/ontology/link-types\", { json: input });\n }\n delete(edgeId: string): Promise<Json> {\n return this.t.request(\"DELETE\", `/ontology/link-types/${edgeId}`);\n }\n}\n\n/** `client.ontology.*` — objects, graph, explorer, object/link types, OSDK manifest. */\nexport class OntologyResource {\n readonly objects: ObjectsResource;\n readonly graph: GraphResource;\n readonly explorer: ExplorerResource;\n readonly objectTypes: ObjectTypesResource;\n readonly linkTypes: LinkTypesResource;\n\n constructor(private readonly t: Transport) {\n this.objects = new ObjectsResource(t);\n this.graph = new GraphResource(t);\n this.explorer = new ExplorerResource(t);\n this.objectTypes = new ObjectTypesResource(t);\n this.linkTypes = new LinkTypesResource(t);\n }\n\n /** Shortcut — same as `objectTypes.get(kind)`. */\n objectType(kind: string): Promise<Json> {\n return this.objectTypes.get(kind);\n }\n osdkManifest(): Promise<Json[]> {\n return this.t.request(\"GET\", \"/ontology/osdk/manifest\");\n }\n osdkFunctions(): Promise<Json[]> {\n return this.t.request(\"GET\", \"/ontology/osdk/manifest/functions\");\n }\n osdkGenerate(lang?: string): Promise<Json> {\n return this.t.request(\"GET\", \"/ontology/osdk/generate\", { params: { lang } });\n }\n}\n","import type { Transport } from \"../transport\";\nimport type { Json } from \"../types\";\n\nclass FlowsResource {\n constructor(private readonly t: Transport) {}\n list(): Promise<Json[]> {\n return this.t.request(\"GET\", \"/campaign/flows\");\n }\n get(flowId: string): Promise<Json> {\n return this.t.request(\"GET\", `/campaign/flows/${flowId}`);\n }\n runs(flowId: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/campaign/flows/${flowId}/runs`);\n }\n patch(flowId: string, payload: Json): Promise<Json> {\n return this.t.request(\"PATCH\", `/campaign/flows/${flowId}`, { json: payload });\n }\n run(flowId: string, dryRun?: boolean): Promise<Json> {\n return this.t.request(\"POST\", `/campaign/flows/${flowId}/run`, {\n json: dryRun === undefined ? {} : { dry_run: dryRun },\n });\n }\n}\n\nclass AgentsResource {\n constructor(private readonly t: Transport) {}\n list(): Promise<Json[]> {\n return this.t.request(\"GET\", \"/campaign/agents\");\n }\n get(agentId: string): Promise<Json> {\n return this.t.request(\"GET\", `/campaign/agents/${agentId}`);\n }\n patch(agentId: string, config: Json): Promise<Json> {\n return this.t.request(\"PATCH\", `/campaign/agents/${agentId}`, { json: config });\n }\n manualRun(agentId: string): Promise<Json> {\n return this.t.request(\"POST\", `/campaign/agents/${agentId}/runs`);\n }\n runs(agentId: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/campaign/agents/${agentId}/runs`);\n }\n}\n\nclass ModelsResource {\n constructor(private readonly t: Transport) {}\n catalog(provider?: string): Promise<Json[]> {\n return this.t.request(\"GET\", \"/platform/v25/aip/models/catalog\", { params: { provider } });\n }\n defaults(): Promise<Json[]> {\n return this.t.request(\"GET\", \"/platform/v25/aip/models/defaults\");\n }\n setDefault(input: {\n provider: string;\n model: string;\n purpose?: string;\n provider_id?: string;\n }): Promise<Json> {\n return this.t.request(\"PUT\", \"/platform/v25/aip/models/defaults\", { json: input });\n }\n}\n\nclass BudgetResource {\n constructor(private readonly t: Transport) {}\n get(): Promise<Json> {\n return this.t.request(\"GET\", \"/platform/v23/llm-budget\");\n }\n set(tokensPerMonth: number): Promise<Json> {\n return this.t.request(\"PUT\", \"/platform/v23/llm-budget\", {\n json: { tokens_per_month: tokensPerMonth },\n });\n }\n}\n\n/** `client.aip.*` — flows, agents, model catalog/defaults, LLM budget. */\nexport class AipResource {\n readonly flows: FlowsResource;\n readonly agents: AgentsResource;\n readonly models: ModelsResource;\n readonly budget: BudgetResource;\n\n constructor(t: Transport) {\n this.flows = new FlowsResource(t);\n this.agents = new AgentsResource(t);\n this.models = new ModelsResource(t);\n this.budget = new BudgetResource(t);\n }\n}\n","import type { Transport } from \"../transport\";\nimport type { Json } from \"../types\";\n\nexport interface FunctionCreate {\n slug: string;\n display_name: string;\n source: string;\n language?: string;\n signature?: Json;\n description?: string;\n markings?: string[];\n classification_level?: string;\n project_id?: string;\n strict_signature?: boolean;\n allow_network?: boolean;\n}\n\nexport interface PullRequestCreate {\n title: string;\n proposed_source: string;\n description?: string;\n proposed_signature?: Json;\n proposed_language?: string;\n required_approvers?: number;\n target_branch?: string;\n}\n\n/** `client.functions.*` — Code Functions (/platform/v26/functions). */\nexport class FunctionsResource {\n constructor(private readonly t: Transport) {}\n\n list(): Promise<Json[]> {\n return this.t.request(\"GET\", \"/platform/v26/functions\");\n }\n get(slug: string): Promise<Json> {\n return this.t.request(\"GET\", `/platform/v26/functions/${slug}`);\n }\n create(input: FunctionCreate): Promise<Json> {\n return this.t.request(\"POST\", \"/platform/v26/functions\", { json: input });\n }\n invoke(slug: string, inputs?: Json, opts: { branch?: string; draft?: boolean } = {}): Promise<Json> {\n return this.t.request(\"POST\", `/platform/v26/functions/${slug}/invoke`, {\n json: { inputs: inputs ?? {}, ...opts },\n });\n }\n tests(slug: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/platform/v26/functions/${slug}/tests`);\n }\n addTest(slug: string, name: string, inputs?: Json, expectedContains?: string): Promise<Json> {\n return this.t.request(\"POST\", `/platform/v26/functions/${slug}/tests`, {\n json: { name, inputs, expected_contains: expectedContains },\n });\n }\n runTest(slug: string, testId: string): Promise<Json> {\n return this.t.request(\"POST\", `/platform/v26/functions/${slug}/tests/${testId}/run`);\n }\n runTests(slug: string): Promise<Json> {\n return this.t.request(\"POST\", `/platform/v26/functions/${slug}/test`);\n }\n publish(slug: string, branch?: string): Promise<Json> {\n return this.t.request(\"POST\", `/platform/v26/functions/${slug}/publish`, {\n json: branch ? { branch } : {},\n });\n }\n versions(slug: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/platform/v26/functions/${slug}/versions`);\n }\n pullRequests(slug: string, status?: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/platform/v26/functions/${slug}/pull-requests`, {\n params: { status },\n });\n }\n openPullRequest(slug: string, input: PullRequestCreate): Promise<Json> {\n return this.t.request(\"POST\", `/platform/v26/functions/${slug}/pull-requests`, { json: input });\n }\n updatePullRequest(slug: string, prId: string, patch: Json): Promise<Json> {\n return this.t.request(\"PATCH\", `/platform/v26/functions/${slug}/pull-requests/${prId}`, {\n json: patch,\n });\n }\n runPrCi(slug: string, prId: string): Promise<Json> {\n return this.t.request(\"POST\", `/platform/v26/functions/${slug}/pull-requests/${prId}/ci`);\n }\n reviewPullRequest(slug: string, prId: string, decision: string, comment?: string): Promise<Json> {\n return this.t.request(\"POST\", `/platform/v26/functions/${slug}/pull-requests/${prId}/reviews`, {\n json: { decision, comment },\n });\n }\n mergePullRequest(slug: string, prId: string): Promise<Json> {\n return this.t.request(\"POST\", `/platform/v26/functions/${slug}/pull-requests/${prId}/merge`);\n }\n}\n\n/** `client.codeRepositories.*` — repos/branches around Code Functions. */\nexport class CodeRepositoriesResource {\n constructor(private readonly t: Transport) {}\n\n list(): Promise<Json[]> {\n return this.t.request(\"GET\", \"/platform/v26/code-repositories\");\n }\n create(input: {\n slug: string;\n display_name: string;\n description?: string;\n default_branch?: string;\n }): Promise<Json> {\n return this.t.request(\"POST\", \"/platform/v26/code-repositories\", { json: input });\n }\n branches(repoId: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/platform/v26/code-repositories/${repoId}/branches`);\n }\n createBranch(repoId: string, name: string, description?: string): Promise<Json> {\n return this.t.request(\"POST\", `/platform/v26/code-repositories/${repoId}/branches`, {\n json: { name, description },\n });\n }\n functions(repoId: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/platform/v26/code-repositories/${repoId}/functions`);\n }\n assignFunction(repoId: string, slug: string): Promise<Json> {\n return this.t.request(\"POST\", `/platform/v26/code-repositories/${repoId}/functions`, {\n json: { slug },\n });\n }\n runCi(repoId: string): Promise<Json> {\n return this.t.request(\"POST\", `/platform/v26/code-repositories/${repoId}/ci`);\n }\n mergeBranch(repoId: string, sourceBranch: string, into?: string): Promise<Json> {\n return this.t.request(\"POST\", `/platform/v26/code-repositories/${repoId}/merge`, {\n json: { source_branch: sourceBranch, into },\n });\n }\n}\n","import type { Transport } from \"../transport\";\nimport type { Json } from \"../types\";\n\nexport type TransactionKind = \"SNAPSHOT\" | \"APPEND\" | \"UPDATE\" | \"DELETE\";\n\n/** `client.datasets.*` — datasets, branches, transactions, classification, markings. */\nexport class DatasetsResource {\n constructor(private readonly t: Transport) {}\n\n list(): Promise<Json[]> {\n return this.t.request(\"GET\", \"/datasets\");\n }\n get(name: string): Promise<Json> {\n return this.t.request(\"GET\", `/datasets/${name}`);\n }\n sample(name: string, limit?: number): Promise<Json> {\n return this.t.request(\"GET\", `/datasets/${name}/sample`, { params: { limit } });\n }\n\n listBranches(name: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/datasets/${name}/branches`);\n }\n createBranch(\n name: string,\n branchName: string,\n opts: {\n from_branch?: string;\n from_asset_id?: string;\n description?: string;\n project_id?: string;\n } = {},\n ): Promise<Json> {\n return this.t.request(\"POST\", `/datasets/${name}/branches`, {\n json: { branch_name: branchName, ...opts },\n });\n }\n deactivateBranch(name: string, branchName: string): Promise<Json> {\n return this.t.request(\"DELETE\", `/datasets/${name}/branches/${branchName}`);\n }\n\n listTransactions(name: string, branch?: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/datasets/${name}/transactions`, { params: { branch } });\n }\n beginTransaction(name: string, kind: TransactionKind, branch?: string): Promise<Json> {\n return this.t.request(\"POST\", `/datasets/${name}/transactions`, { json: { kind, branch } });\n }\n commitTransaction(name: string, txId: string, inputPayload: Json): Promise<Json> {\n return this.t.request(\"POST\", `/datasets/${name}/transactions/${txId}/commit`, {\n json: inputPayload,\n });\n }\n abortTransaction(name: string, txId: string, reason?: string): Promise<Json> {\n return this.t.request(\"POST\", `/datasets/${name}/transactions/${txId}/abort`, {\n json: { reason },\n });\n }\n\n mergeFastForward(name: string, source: string, into: string): Promise<Json> {\n return this.t.request(\"POST\", `/datasets/${name}/branches/${source}/merge`, {\n json: { into },\n });\n }\n /** 409 responses carry the conflict body in `AegisAPIError.payload`. */\n mergeThreeWay(name: string, source: string, into: string, resolutions?: Json): Promise<Json> {\n return this.t.request(\"POST\", `/datasets/${name}/branches/${source}/merge3`, {\n json: { into, resolutions },\n });\n }\n\n getClassification(name: string): Promise<Json> {\n return this.t.request(\"GET\", `/datasets/${name}/classification`);\n }\n setClassification(\n name: string,\n patch: { data_classification?: string; file_classification?: string },\n ): Promise<Json> {\n return this.t.request(\"PATCH\", `/datasets/${name}/classification`, { json: patch });\n }\n\n listMarkings(name: string): Promise<Json[]> {\n return this.t.request(\"GET\", `/datasets/${name}/markings`);\n }\n applyMarking(name: string, markingId: string): Promise<Json> {\n return this.t.request(\"POST\", `/datasets/${name}/markings`, { json: { marking_id: markingId } });\n }\n removeMarking(name: string, markingId: string): Promise<void> {\n return this.t.request(\"DELETE\", `/datasets/${name}/markings/${markingId}`);\n }\n}\n","/**\n * `AegisClient` — the top-level handle. Mirrors `aegis.client.AegisClient`\n * from the Python SDK (`aegis-platform-sdk` on PyPI).\n *\n * Token resolution priority:\n * 1. `token` option (typically an `osdk_…` API key for programmatic\n * callers, or a JWT issued by `/auth/login`).\n * 2. After `client.auth.login(...)` succeeds, the issued JWT is cached\n * and used automatically for subsequent calls.\n *\n * Transport is the platform `fetch` (Node ≥ 18 or any browser) — the SDK\n * has zero runtime dependencies.\n */\nimport { buildUrl, handleResponse } from \"./transport\";\nimport type { RequestOptions, Transport } from \"./transport\";\nimport { AuthResource } from \"./resources/auth\";\nimport { IamResource } from \"./resources/iam\";\nimport { OsdkResource } from \"./resources/osdk\";\nimport { OperatorResource } from \"./resources/operator\";\nimport { OntologyResource } from \"./resources/ontology\";\nimport { AipResource } from \"./resources/aip\";\nimport { CodeRepositoriesResource, FunctionsResource } from \"./resources/functions\";\nimport { DatasetsResource } from \"./resources/datasets\";\n\nexport interface AegisClientOptions {\n /** Root URL of the AEGIS deployment, e.g. `https://aegis.example.com`.\n * Falls back to `process.env.AEGIS_API_URL`, then `http://localhost:8002`. */\n baseUrl?: string;\n /** Bearer token — a JWT (`eyJ…`) or an OSDK key (`osdk_…`).\n * Falls back to `process.env.AEGIS_TOKEN`. Omit for `auth.login(...)` flows. */\n token?: string;\n /** Per-request timeout in milliseconds. Defaults to 15000. */\n timeoutMs?: number;\n /** Custom fetch implementation (tests, proxies, polyfills). */\n fetch?: typeof globalThis.fetch;\n}\n\nfunction envVar(name: string): string | undefined {\n if (typeof process !== \"undefined\" && process.env) return process.env[name];\n return undefined;\n}\n\nexport class AegisClient implements Transport {\n readonly baseUrl: string;\n private _token: string | null;\n private readonly timeoutMs: number;\n private readonly _fetch: typeof globalThis.fetch;\n\n readonly auth: AuthResource;\n readonly iam: IamResource;\n readonly osdk: OsdkResource;\n readonly operator: OperatorResource;\n readonly ontology: OntologyResource;\n readonly aip: AipResource;\n readonly functions: FunctionsResource;\n readonly codeRepositories: CodeRepositoriesResource;\n readonly datasets: DatasetsResource;\n\n constructor(options: AegisClientOptions = {}) {\n const baseUrl = options.baseUrl ?? envVar(\"AEGIS_API_URL\") ?? \"http://localhost:8002\";\n this.baseUrl = baseUrl.replace(/\\/+$/, \"\");\n this._token = options.token ?? envVar(\"AEGIS_TOKEN\") ?? null;\n this.timeoutMs = options.timeoutMs ?? 15_000;\n this._fetch = options.fetch ?? globalThis.fetch.bind(globalThis);\n\n this.auth = new AuthResource(this, (t) => this.setToken(t));\n this.iam = new IamResource(this);\n this.osdk = new OsdkResource(this);\n this.operator = new OperatorResource(this);\n this.ontology = new OntologyResource(this);\n this.aip = new AipResource(this);\n this.functions = new FunctionsResource(this);\n this.codeRepositories = new CodeRepositoriesResource(this);\n this.datasets = new DatasetsResource(this);\n }\n\n /** Replace the active bearer token (or clear with `null`). */\n setToken(token: string | null): void {\n this._token = token;\n }\n\n get token(): string | null {\n return this._token;\n }\n\n /** Generic escape hatch — call any AEGIS endpoint not yet wrapped. */\n async request<T = unknown>(method: string, path: string, opts: RequestOptions = {}): Promise<T> {\n const url = buildUrl(this.baseUrl, path, opts.params);\n const headers: Record<string, string> = {};\n if (this._token) headers.Authorization = `Bearer ${this._token}`;\n\n const init: RequestInit = { method, headers };\n if (opts.json !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n init.body = JSON.stringify(opts.json);\n }\n if (opts.signal) {\n init.signal = opts.signal;\n } else if (typeof AbortSignal !== \"undefined\" && \"timeout\" in AbortSignal) {\n init.signal = AbortSignal.timeout(this.timeoutMs);\n }\n\n const res = await this._fetch(url, init);\n return handleResponse<T>(res);\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,497 @@
1
+ type QueryParams = Record<string, string | number | boolean | undefined | null>;
2
+ interface RequestOptions {
3
+ params?: QueryParams;
4
+ json?: unknown;
5
+ signal?: AbortSignal;
6
+ }
7
+ /** The verb-agnostic transport contract every resource is built on. */
8
+ interface Transport {
9
+ request<T = unknown>(method: string, path: string, opts?: RequestOptions): Promise<T>;
10
+ }
11
+
12
+ /**
13
+ * Core wire types — mirrors `aegis/types.py` in the Python SDK.
14
+ *
15
+ * Many endpoints return backend-shaped JSON that the Python SDK types as
16
+ * `dict`; those are `Json` here. As endpoints stabilize they graduate to
17
+ * named interfaces (same policy as the Python SDK).
18
+ */
19
+ type Json = Record<string, unknown>;
20
+ interface TokenPair {
21
+ access_token: string;
22
+ refresh_token: string;
23
+ token_type: string;
24
+ expires_in: number;
25
+ must_change_password: boolean;
26
+ }
27
+ interface Tenant {
28
+ id: string;
29
+ slug: string;
30
+ display_name: string;
31
+ features: Json;
32
+ }
33
+ interface DevMode {
34
+ enabled: boolean;
35
+ until?: string | null;
36
+ }
37
+ interface WhoAmI {
38
+ user_id: string;
39
+ username: string;
40
+ display_name: string;
41
+ email?: string | null;
42
+ tenant?: Tenant | null;
43
+ clearances: string[];
44
+ roles: string[];
45
+ permissions: string[];
46
+ must_change_password: boolean;
47
+ totp_enabled: boolean;
48
+ dev_mode?: DevMode | null;
49
+ }
50
+ interface User {
51
+ id: string;
52
+ tenant_id: string;
53
+ username: string;
54
+ display_name: string;
55
+ email?: string | null;
56
+ active: boolean;
57
+ clearances: string[];
58
+ roles: string[];
59
+ must_change_password: boolean;
60
+ totp_enabled: boolean;
61
+ }
62
+ interface Role {
63
+ id: string;
64
+ tenant_id?: string | null;
65
+ key: string;
66
+ name: string;
67
+ description: string;
68
+ is_system: boolean;
69
+ priority: number;
70
+ permission_keys: string[];
71
+ parent_role_ids: string[];
72
+ }
73
+ interface Permission {
74
+ id: string;
75
+ key: string;
76
+ resource: string;
77
+ action: string;
78
+ description: string;
79
+ is_system: boolean;
80
+ }
81
+ interface OsdkToken {
82
+ id: string;
83
+ name: string;
84
+ scopes: string[];
85
+ expires_at?: string | null;
86
+ last_used_at?: string | null;
87
+ revoked: boolean;
88
+ created_at?: string | null;
89
+ }
90
+ /** Returned once on create/rotate — `token` is the plaintext secret. */
91
+ interface OsdkTokenWithSecret extends OsdkToken {
92
+ token: string;
93
+ }
94
+
95
+ interface LoginOptions {
96
+ totpCode?: string;
97
+ /** Attach the issued JWT to the client for subsequent calls (default true). */
98
+ attach?: boolean;
99
+ }
100
+ /** `client.auth.*` — login, whoami, dev-mode. */
101
+ declare class AuthResource {
102
+ private readonly t;
103
+ private readonly setToken;
104
+ constructor(t: Transport, setToken: (token: string | null) => void);
105
+ login(username: string, password: string, opts?: LoginOptions): Promise<TokenPair>;
106
+ me(): Promise<WhoAmI>;
107
+ /** Activate a vendor dev-mode session; requires the `vendor` role. */
108
+ enableDevMode(password: string): Promise<DevMode>;
109
+ }
110
+
111
+ declare class UsersResource {
112
+ private readonly t;
113
+ constructor(t: Transport);
114
+ list(): Promise<User[]>;
115
+ get(userId: string): Promise<User>;
116
+ }
117
+ declare class RolesResource {
118
+ private readonly t;
119
+ constructor(t: Transport);
120
+ list(): Promise<Role[]>;
121
+ get(roleId: string): Promise<Role>;
122
+ }
123
+ declare class GroupsResource {
124
+ private readonly t;
125
+ constructor(t: Transport);
126
+ list(opts?: {
127
+ limit?: number;
128
+ offset?: number;
129
+ }): Promise<Json[]>;
130
+ get(groupId: string): Promise<Json>;
131
+ create(name: string, description?: string): Promise<Json>;
132
+ update(groupId: string, patch: {
133
+ name?: string;
134
+ description?: string;
135
+ }): Promise<Json>;
136
+ delete(groupId: string): Promise<void>;
137
+ listMembers(groupId: string): Promise<Json[]>;
138
+ addMember(groupId: string, userId: string): Promise<Json>;
139
+ removeMember(groupId: string, userId: string): Promise<void>;
140
+ listForUser(userId: string): Promise<Json[]>;
141
+ }
142
+ declare class PermissionsResource {
143
+ private readonly t;
144
+ constructor(t: Transport);
145
+ list(resource?: string): Promise<Permission[]>;
146
+ }
147
+ declare class NavResource {
148
+ private readonly t;
149
+ constructor(t: Transport);
150
+ tree(asRoleId?: string): Promise<Json>;
151
+ }
152
+ /** `client.iam.*` — users, roles, groups, permissions, nav tree. */
153
+ declare class IamResource {
154
+ readonly users: UsersResource;
155
+ readonly roles: RolesResource;
156
+ readonly groups: GroupsResource;
157
+ readonly permissions: PermissionsResource;
158
+ readonly nav: NavResource;
159
+ constructor(t: Transport);
160
+ }
161
+
162
+ /** `client.osdk.*` — OSDK application token management (Governance → OSDK). */
163
+ declare class OsdkResource {
164
+ private readonly t;
165
+ constructor(t: Transport);
166
+ list(): Promise<OsdkToken[]>;
167
+ get(tokenId: string): Promise<OsdkToken>;
168
+ /** Returns the plaintext secret ONCE — stash it like any other secret. */
169
+ create(name: string, scopes: string[], expiresAt?: string): Promise<OsdkTokenWithSecret>;
170
+ rotate(tokenId: string): Promise<OsdkTokenWithSecret>;
171
+ revoke(tokenId: string): Promise<void>;
172
+ }
173
+
174
+ interface OperatorTaskListOptions {
175
+ status?: string;
176
+ project_id?: string;
177
+ origin?: string;
178
+ mine?: boolean;
179
+ limit?: number;
180
+ }
181
+ interface OperatorTaskCreate {
182
+ prompt_text: string;
183
+ title?: string;
184
+ project_id?: string;
185
+ priority?: string;
186
+ parent_task_id?: string;
187
+ markings?: string[];
188
+ }
189
+ declare class OperatorTasksResource {
190
+ private readonly t;
191
+ constructor(t: Transport);
192
+ list(opts?: OperatorTaskListOptions): Promise<Json[]>;
193
+ get(taskId: string): Promise<Json>;
194
+ create(input: OperatorTaskCreate): Promise<Json>;
195
+ cancel(taskId: string): Promise<Json>;
196
+ retry(taskId: string): Promise<Json>;
197
+ reprioritize(taskId: string, priority: string): Promise<Json>;
198
+ }
199
+ /** `client.operator.*` — operator task queue (NL kanban). */
200
+ declare class OperatorResource {
201
+ readonly tasks: OperatorTasksResource;
202
+ constructor(t: Transport);
203
+ }
204
+
205
+ declare class ObjectsResource {
206
+ private readonly t;
207
+ constructor(t: Transport);
208
+ get(objectId: string): Promise<Json>;
209
+ list(kind: string, opts?: {
210
+ limit?: number;
211
+ offset?: number;
212
+ q?: string;
213
+ }): Promise<Json[]>;
214
+ create(kind: string, properties: Json, name?: string): Promise<Json>;
215
+ createMany(kind: string, items: Json[], markings?: string[]): Promise<Json>;
216
+ delete(objectId: string): Promise<Json>;
217
+ bulkDelete(opts: {
218
+ object_ids?: string[];
219
+ kind?: string;
220
+ dry_run?: boolean;
221
+ confirm?: boolean;
222
+ expected_count?: number;
223
+ }): Promise<Json>;
224
+ links(objectId: string): Promise<Json[]>;
225
+ history(objectId: string): Promise<Json[]>;
226
+ queryTimeseries(objectId: string, propertyName: string, opts?: {
227
+ from_time?: string;
228
+ to_time?: string;
229
+ max_points?: number;
230
+ }): Promise<Json>;
231
+ appendTimeseries(objectId: string, propertyName: string, points: Json[]): Promise<Json>;
232
+ }
233
+ declare class GraphResource {
234
+ private readonly t;
235
+ constructor(t: Transport);
236
+ expand(seedId: string, opts?: {
237
+ depth?: number;
238
+ limit?: number;
239
+ }): Promise<Json>;
240
+ }
241
+ declare class ExplorerResource {
242
+ private readonly t;
243
+ constructor(t: Transport);
244
+ histogram(property: string, filters?: Json): Promise<Json[]>;
245
+ timeline(filters?: Json, bin?: string): Promise<Json[]>;
246
+ }
247
+ interface ObjectTypeWrite {
248
+ title_property: string;
249
+ properties: Json;
250
+ display_name?: string;
251
+ enforce?: boolean;
252
+ markings?: string[];
253
+ }
254
+ declare class ObjectTypesResource {
255
+ private readonly t;
256
+ constructor(t: Transport);
257
+ get(kind: string): Promise<Json>;
258
+ create(kind: string, input: ObjectTypeWrite): Promise<Json>;
259
+ update(kind: string, input: ObjectTypeWrite): Promise<Json>;
260
+ delete(kind: string): Promise<Json>;
261
+ }
262
+ declare class LinkTypesResource {
263
+ private readonly t;
264
+ constructor(t: Transport);
265
+ declare(input: {
266
+ source_kind: string;
267
+ target_kind: string;
268
+ relation: string;
269
+ cardinality: string;
270
+ inverse_label?: string;
271
+ }): Promise<Json>;
272
+ delete(edgeId: string): Promise<Json>;
273
+ }
274
+ /** `client.ontology.*` — objects, graph, explorer, object/link types, OSDK manifest. */
275
+ declare class OntologyResource {
276
+ private readonly t;
277
+ readonly objects: ObjectsResource;
278
+ readonly graph: GraphResource;
279
+ readonly explorer: ExplorerResource;
280
+ readonly objectTypes: ObjectTypesResource;
281
+ readonly linkTypes: LinkTypesResource;
282
+ constructor(t: Transport);
283
+ /** Shortcut — same as `objectTypes.get(kind)`. */
284
+ objectType(kind: string): Promise<Json>;
285
+ osdkManifest(): Promise<Json[]>;
286
+ osdkFunctions(): Promise<Json[]>;
287
+ osdkGenerate(lang?: string): Promise<Json>;
288
+ }
289
+
290
+ declare class FlowsResource {
291
+ private readonly t;
292
+ constructor(t: Transport);
293
+ list(): Promise<Json[]>;
294
+ get(flowId: string): Promise<Json>;
295
+ runs(flowId: string): Promise<Json[]>;
296
+ patch(flowId: string, payload: Json): Promise<Json>;
297
+ run(flowId: string, dryRun?: boolean): Promise<Json>;
298
+ }
299
+ declare class AgentsResource {
300
+ private readonly t;
301
+ constructor(t: Transport);
302
+ list(): Promise<Json[]>;
303
+ get(agentId: string): Promise<Json>;
304
+ patch(agentId: string, config: Json): Promise<Json>;
305
+ manualRun(agentId: string): Promise<Json>;
306
+ runs(agentId: string): Promise<Json[]>;
307
+ }
308
+ declare class ModelsResource {
309
+ private readonly t;
310
+ constructor(t: Transport);
311
+ catalog(provider?: string): Promise<Json[]>;
312
+ defaults(): Promise<Json[]>;
313
+ setDefault(input: {
314
+ provider: string;
315
+ model: string;
316
+ purpose?: string;
317
+ provider_id?: string;
318
+ }): Promise<Json>;
319
+ }
320
+ declare class BudgetResource {
321
+ private readonly t;
322
+ constructor(t: Transport);
323
+ get(): Promise<Json>;
324
+ set(tokensPerMonth: number): Promise<Json>;
325
+ }
326
+ /** `client.aip.*` — flows, agents, model catalog/defaults, LLM budget. */
327
+ declare class AipResource {
328
+ readonly flows: FlowsResource;
329
+ readonly agents: AgentsResource;
330
+ readonly models: ModelsResource;
331
+ readonly budget: BudgetResource;
332
+ constructor(t: Transport);
333
+ }
334
+
335
+ interface FunctionCreate {
336
+ slug: string;
337
+ display_name: string;
338
+ source: string;
339
+ language?: string;
340
+ signature?: Json;
341
+ description?: string;
342
+ markings?: string[];
343
+ classification_level?: string;
344
+ project_id?: string;
345
+ strict_signature?: boolean;
346
+ allow_network?: boolean;
347
+ }
348
+ interface PullRequestCreate {
349
+ title: string;
350
+ proposed_source: string;
351
+ description?: string;
352
+ proposed_signature?: Json;
353
+ proposed_language?: string;
354
+ required_approvers?: number;
355
+ target_branch?: string;
356
+ }
357
+ /** `client.functions.*` — Code Functions (/platform/v26/functions). */
358
+ declare class FunctionsResource {
359
+ private readonly t;
360
+ constructor(t: Transport);
361
+ list(): Promise<Json[]>;
362
+ get(slug: string): Promise<Json>;
363
+ create(input: FunctionCreate): Promise<Json>;
364
+ invoke(slug: string, inputs?: Json, opts?: {
365
+ branch?: string;
366
+ draft?: boolean;
367
+ }): Promise<Json>;
368
+ tests(slug: string): Promise<Json[]>;
369
+ addTest(slug: string, name: string, inputs?: Json, expectedContains?: string): Promise<Json>;
370
+ runTest(slug: string, testId: string): Promise<Json>;
371
+ runTests(slug: string): Promise<Json>;
372
+ publish(slug: string, branch?: string): Promise<Json>;
373
+ versions(slug: string): Promise<Json[]>;
374
+ pullRequests(slug: string, status?: string): Promise<Json[]>;
375
+ openPullRequest(slug: string, input: PullRequestCreate): Promise<Json>;
376
+ updatePullRequest(slug: string, prId: string, patch: Json): Promise<Json>;
377
+ runPrCi(slug: string, prId: string): Promise<Json>;
378
+ reviewPullRequest(slug: string, prId: string, decision: string, comment?: string): Promise<Json>;
379
+ mergePullRequest(slug: string, prId: string): Promise<Json>;
380
+ }
381
+ /** `client.codeRepositories.*` — repos/branches around Code Functions. */
382
+ declare class CodeRepositoriesResource {
383
+ private readonly t;
384
+ constructor(t: Transport);
385
+ list(): Promise<Json[]>;
386
+ create(input: {
387
+ slug: string;
388
+ display_name: string;
389
+ description?: string;
390
+ default_branch?: string;
391
+ }): Promise<Json>;
392
+ branches(repoId: string): Promise<Json[]>;
393
+ createBranch(repoId: string, name: string, description?: string): Promise<Json>;
394
+ functions(repoId: string): Promise<Json[]>;
395
+ assignFunction(repoId: string, slug: string): Promise<Json>;
396
+ runCi(repoId: string): Promise<Json>;
397
+ mergeBranch(repoId: string, sourceBranch: string, into?: string): Promise<Json>;
398
+ }
399
+
400
+ type TransactionKind = "SNAPSHOT" | "APPEND" | "UPDATE" | "DELETE";
401
+ /** `client.datasets.*` — datasets, branches, transactions, classification, markings. */
402
+ declare class DatasetsResource {
403
+ private readonly t;
404
+ constructor(t: Transport);
405
+ list(): Promise<Json[]>;
406
+ get(name: string): Promise<Json>;
407
+ sample(name: string, limit?: number): Promise<Json>;
408
+ listBranches(name: string): Promise<Json[]>;
409
+ createBranch(name: string, branchName: string, opts?: {
410
+ from_branch?: string;
411
+ from_asset_id?: string;
412
+ description?: string;
413
+ project_id?: string;
414
+ }): Promise<Json>;
415
+ deactivateBranch(name: string, branchName: string): Promise<Json>;
416
+ listTransactions(name: string, branch?: string): Promise<Json[]>;
417
+ beginTransaction(name: string, kind: TransactionKind, branch?: string): Promise<Json>;
418
+ commitTransaction(name: string, txId: string, inputPayload: Json): Promise<Json>;
419
+ abortTransaction(name: string, txId: string, reason?: string): Promise<Json>;
420
+ mergeFastForward(name: string, source: string, into: string): Promise<Json>;
421
+ /** 409 responses carry the conflict body in `AegisAPIError.payload`. */
422
+ mergeThreeWay(name: string, source: string, into: string, resolutions?: Json): Promise<Json>;
423
+ getClassification(name: string): Promise<Json>;
424
+ setClassification(name: string, patch: {
425
+ data_classification?: string;
426
+ file_classification?: string;
427
+ }): Promise<Json>;
428
+ listMarkings(name: string): Promise<Json[]>;
429
+ applyMarking(name: string, markingId: string): Promise<Json>;
430
+ removeMarking(name: string, markingId: string): Promise<void>;
431
+ }
432
+
433
+ interface AegisClientOptions {
434
+ /** Root URL of the AEGIS deployment, e.g. `https://aegis.example.com`.
435
+ * Falls back to `process.env.AEGIS_API_URL`, then `http://localhost:8002`. */
436
+ baseUrl?: string;
437
+ /** Bearer token — a JWT (`eyJ…`) or an OSDK key (`osdk_…`).
438
+ * Falls back to `process.env.AEGIS_TOKEN`. Omit for `auth.login(...)` flows. */
439
+ token?: string;
440
+ /** Per-request timeout in milliseconds. Defaults to 15000. */
441
+ timeoutMs?: number;
442
+ /** Custom fetch implementation (tests, proxies, polyfills). */
443
+ fetch?: typeof globalThis.fetch;
444
+ }
445
+ declare class AegisClient implements Transport {
446
+ readonly baseUrl: string;
447
+ private _token;
448
+ private readonly timeoutMs;
449
+ private readonly _fetch;
450
+ readonly auth: AuthResource;
451
+ readonly iam: IamResource;
452
+ readonly osdk: OsdkResource;
453
+ readonly operator: OperatorResource;
454
+ readonly ontology: OntologyResource;
455
+ readonly aip: AipResource;
456
+ readonly functions: FunctionsResource;
457
+ readonly codeRepositories: CodeRepositoriesResource;
458
+ readonly datasets: DatasetsResource;
459
+ constructor(options?: AegisClientOptions);
460
+ /** Replace the active bearer token (or clear with `null`). */
461
+ setToken(token: string | null): void;
462
+ get token(): string | null;
463
+ /** Generic escape hatch — call any AEGIS endpoint not yet wrapped. */
464
+ request<T = unknown>(method: string, path: string, opts?: RequestOptions): Promise<T>;
465
+ }
466
+
467
+ /**
468
+ * Exception hierarchy for the AEGIS SDK — mirrors `aegis.exceptions` in the
469
+ * Python SDK. Callers can catch the broad `AegisAPIError` or react to
470
+ * specific subclasses:
471
+ *
472
+ * ```ts
473
+ * try {
474
+ * await client.iam.users.list();
475
+ * } catch (err) {
476
+ * if (err instanceof PermissionDeniedError) console.log("missing perm:", err.detail);
477
+ * else if (err instanceof AegisAPIError) console.log(err.statusCode, err.detail);
478
+ * }
479
+ * ```
480
+ */
481
+ declare class AegisAPIError extends Error {
482
+ readonly statusCode: number;
483
+ readonly detail: string;
484
+ readonly payload: unknown;
485
+ constructor(statusCode: number, detail?: string, payload?: unknown);
486
+ }
487
+ /** 401 — invalid / expired token, missing credentials, locked account. */
488
+ declare class AuthError extends AegisAPIError {
489
+ }
490
+ /** 403 — authenticated but lacks the permission for this call. */
491
+ declare class PermissionDeniedError extends AegisAPIError {
492
+ }
493
+ /** 404 — the addressed resource does not exist (or is hidden by tenant scope). */
494
+ declare class NotFoundError extends AegisAPIError {
495
+ }
496
+
497
+ export { AegisAPIError, AegisClient, type AegisClientOptions, AuthError, type DevMode, type FunctionCreate, type Json, type LoginOptions, NotFoundError, type ObjectTypeWrite, type OperatorTaskCreate, type OperatorTaskListOptions, type OsdkToken, type OsdkTokenWithSecret, type Permission, PermissionDeniedError, type PullRequestCreate, type QueryParams, type RequestOptions, type Role, type Tenant, type TokenPair, type TransactionKind, type Transport, type User, type WhoAmI };