@alva-ai/toolkit 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/dist/index.cjs CHANGED
@@ -226,6 +226,23 @@ var DeployResource = class {
226
226
  `/api/v1/deploy/cronjob/${params.id}/resume`
227
227
  );
228
228
  }
229
+ async listRuns(params) {
230
+ this.client._requireAuth();
231
+ return this.client._request(
232
+ "GET",
233
+ `/api/v1/deploy/cronjob/${params.cronjob_id}/runs`,
234
+ {
235
+ query: { first: params.first, cursor: params.cursor }
236
+ }
237
+ );
238
+ }
239
+ async getRunLogs(params) {
240
+ this.client._requireAuth();
241
+ return this.client._request(
242
+ "GET",
243
+ `/api/v1/deploy/cronjob/${params.cronjob_id}/runs/${params.run_id}/logs`
244
+ );
245
+ }
229
246
  };
230
247
 
231
248
  // src/resources/release.ts
@@ -635,7 +652,7 @@ var AlvaClient = class {
635
652
  };
636
653
 
637
654
  // src/index.ts
638
- var VERSION = true ? "0.1.4" : "dev";
655
+ var VERSION = true ? "0.2.0" : "dev";
639
656
  // Annotate the CommonJS export names for ESM import in node:
640
657
  0 && (module.exports = {
641
658
  AlvaClient,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/error.ts","../src/resources/fs.ts","../src/resources/run.ts","../src/resources/deploy.ts","../src/resources/release.ts","../src/resources/secrets.ts","../src/resources/sdkDocs.ts","../src/resources/comments.ts","../src/resources/remix.ts","../src/resources/screenshot.ts","../src/resources/user.ts","../src/resources/trading.ts","../src/client.ts"],"sourcesContent":["declare const __VERSION__: string;\n\n/** SDK version, injected at build time from package.json. */\nexport const VERSION: string =\n typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'dev';\n\nexport { AlvaClient } from './client.js';\nexport { AlvaError } from './error.js';\nexport type {\n AlvaClientConfig,\n FsReadParams,\n FsWriteParams,\n FsRawWriteParams,\n FsWriteResponse,\n FsStat,\n FsReaddirParams,\n FsEntry,\n FsReaddirResponse,\n FsMkdirParams,\n FsRemoveParams,\n FsRenameParams,\n FsCopyParams,\n FsSymlinkParams,\n FsReadlinkParams,\n FsChmodParams,\n FsGrantParams,\n FsRevokeParams,\n TradingAccount,\n AccountSubscription,\n TradingSubscription,\n TradingOrder,\n PortfolioAsset,\n TradingPortfolio,\n EquityPoint,\n RiskRuleEntry,\n TradingRiskRule,\n TradingRiskRuleInput,\n ExecuteSignalOrder,\n ExecuteSignalResult,\n} from './types.js';\n","export class AlvaError extends Error {\n readonly code: string;\n readonly status: number;\n\n constructor(code: string, message: string, status: number) {\n super(message);\n this.name = 'AlvaError';\n this.code = code;\n this.status = status;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n FsReadParams,\n FsWriteParams,\n FsRawWriteParams,\n FsWriteResponse,\n FsStat,\n FsReaddirParams,\n FsReaddirResponse,\n FsMkdirParams,\n FsRemoveParams,\n FsRenameParams,\n FsCopyParams,\n FsSymlinkParams,\n FsReadlinkParams,\n FsChmodParams,\n FsGrantParams,\n FsRevokeParams,\n} from '../types.js';\n\nexport class FsResource {\n constructor(private client: AlvaClient) {}\n\n /** Returns `ArrayBuffer` for binary files, or parsed JSON for time-series virtual paths. */\n async read(params: FsReadParams): Promise<ArrayBuffer | unknown> {\n return this.client._request('GET', '/api/v1/fs/read', {\n query: { path: params.path, offset: params.offset, size: params.size },\n });\n }\n\n /** Write file using JSON body (Mode 2). For text content. */\n async write(params: FsWriteParams): Promise<FsWriteResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/fs/write', {\n body: {\n path: params.path,\n data: params.data,\n mkdir_parents: params.mkdir_parents,\n },\n }) as Promise<FsWriteResponse>;\n }\n\n /** Write file using raw body (Mode 1). Supports binary data. Path and options are query params. */\n async rawWrite(params: FsRawWriteParams): Promise<FsWriteResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/fs/write', {\n query: {\n path: params.path,\n mkdir_parents: params.mkdir_parents,\n },\n rawBody: params.body,\n }) as Promise<FsWriteResponse>;\n }\n\n async stat(params: { path: string }): Promise<FsStat> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/fs/stat', {\n query: { path: params.path },\n }) as Promise<FsStat>;\n }\n\n async readdir(params: FsReaddirParams): Promise<FsReaddirResponse> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/fs/readdir', {\n query: { path: params.path, recursive: params.recursive },\n }) as Promise<FsReaddirResponse>;\n }\n\n async mkdir(params: FsMkdirParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/mkdir', {\n body: { path: params.path },\n });\n }\n\n async remove(params: FsRemoveParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('DELETE', '/api/v1/fs/remove', {\n query: { path: params.path, recursive: params.recursive },\n });\n }\n\n async rename(params: FsRenameParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/rename', {\n body: { old_path: params.old_path, new_path: params.new_path },\n });\n }\n\n async copy(params: FsCopyParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/copy', {\n body: { src_path: params.src_path, dst_path: params.dst_path },\n });\n }\n\n async symlink(params: FsSymlinkParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/symlink', {\n body: {\n target_path: params.target_path,\n link_path: params.link_path,\n },\n });\n }\n\n async readlink(params: FsReadlinkParams): Promise<{ target: string }> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/fs/readlink', {\n query: { path: params.path },\n }) as Promise<{ target: string }>;\n }\n\n async chmod(params: FsChmodParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/chmod', {\n body: { path: params.path, mode: params.mode },\n });\n }\n\n async grant(params: FsGrantParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/grant', {\n body: {\n path: params.path,\n subject: params.subject,\n permission: params.permission,\n },\n });\n }\n\n async revoke(params: FsRevokeParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/revoke', {\n body: {\n path: params.path,\n subject: params.subject,\n permission: params.permission,\n },\n });\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { RunRequest, RunResponse } from '../types.js';\n\nexport class RunResource {\n constructor(private client: AlvaClient) {}\n\n async execute(params: RunRequest): Promise<RunResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/run', {\n body: {\n code: params.code,\n entry_path: params.entry_path,\n working_dir: params.working_dir,\n args: params.args,\n },\n }) as Promise<RunResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n CronjobCreateRequest,\n Cronjob,\n CronjobListParams,\n CronjobListResponse,\n CronjobUpdateRequest,\n} from '../types.js';\n\nexport class DeployResource {\n constructor(private client: AlvaClient) {}\n\n async create(params: CronjobCreateRequest): Promise<Cronjob> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/deploy/cronjob', {\n body: {\n name: params.name,\n path: params.path,\n cron_expression: params.cron_expression,\n args: params.args,\n push_notify: params.push_notify,\n },\n }) as Promise<Cronjob>;\n }\n\n async list(params?: CronjobListParams): Promise<CronjobListResponse> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/deploy/cronjobs', {\n query: { limit: params?.limit, cursor: params?.cursor },\n }) as Promise<CronjobListResponse>;\n }\n\n async get(params: { id: number }): Promise<Cronjob> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n `/api/v1/deploy/cronjob/${params.id}`\n ) as Promise<Cronjob>;\n }\n\n async update(params: CronjobUpdateRequest): Promise<Cronjob> {\n this.client._requireAuth();\n const { id, ...body } = params;\n return this.client._request('PATCH', `/api/v1/deploy/cronjob/${id}`, {\n body,\n }) as Promise<Cronjob>;\n }\n\n async delete(params: { id: number }): Promise<void> {\n this.client._requireAuth();\n await this.client._request('DELETE', `/api/v1/deploy/cronjob/${params.id}`);\n }\n\n async pause(params: { id: number }): Promise<void> {\n this.client._requireAuth();\n await this.client._request(\n 'POST',\n `/api/v1/deploy/cronjob/${params.id}/pause`\n );\n }\n\n async resume(params: { id: number }): Promise<void> {\n this.client._requireAuth();\n await this.client._request(\n 'POST',\n `/api/v1/deploy/cronjob/${params.id}/resume`\n );\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n FeedReleaseRequest,\n FeedReleaseResponse,\n PlaybookDraftRequest,\n PlaybookDraftResponse,\n PlaybookReleaseRequest,\n PlaybookReleaseResponse,\n} from '../types.js';\n\nexport class ReleaseResource {\n constructor(private client: AlvaClient) {}\n\n async feed(params: FeedReleaseRequest): Promise<FeedReleaseResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/release/feed', {\n body: {\n name: params.name,\n version: params.version,\n cronjob_id: params.cronjob_id,\n view_json: params.view_json,\n description: params.description,\n },\n }) as Promise<FeedReleaseResponse>;\n }\n\n async playbookDraft(\n params: PlaybookDraftRequest\n ): Promise<PlaybookDraftResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/draft/playbook', {\n body: {\n name: params.name,\n display_name: params.display_name,\n description: params.description,\n feeds: params.feeds,\n trading_symbols: params.trading_symbols,\n changelog: params.changelog,\n },\n }) as Promise<PlaybookDraftResponse>;\n }\n\n async playbook(\n params: PlaybookReleaseRequest\n ): Promise<PlaybookReleaseResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/release/playbook', {\n body: {\n name: params.name,\n version: params.version,\n feeds: params.feeds,\n changelog: params.changelog,\n },\n }) as Promise<PlaybookReleaseResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { CreateSecretRequest, Secret, SecretMetadata } from '../types.js';\n\nexport class SecretsResource {\n constructor(private client: AlvaClient) {}\n\n async create(params: CreateSecretRequest): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/secrets', {\n body: { name: params.name, value: params.value },\n });\n }\n\n async list(): Promise<{ secrets: SecretMetadata[] }> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/secrets') as Promise<{\n secrets: SecretMetadata[];\n }>;\n }\n\n async get(params: { name: string }): Promise<Secret> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.name);\n return this.client._request(\n 'GET',\n `/api/v1/secrets/${encoded}`\n ) as Promise<Secret>;\n }\n\n async update(params: { name: string; value: string }): Promise<void> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.name);\n await this.client._request('PUT', `/api/v1/secrets/${encoded}`, {\n body: { value: params.value },\n });\n }\n\n async delete(params: { name: string }): Promise<void> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.name);\n await this.client._request('DELETE', `/api/v1/secrets/${encoded}`);\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n ModuleDoc,\n PartitionsResponse,\n PartitionSummaryResponse,\n} from '../types.js';\n\nexport class SdkDocsResource {\n constructor(private client: AlvaClient) {}\n\n async doc(params: { name: string }): Promise<ModuleDoc> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/sdk/doc', {\n query: { name: params.name },\n }) as Promise<ModuleDoc>;\n }\n\n async partitions(): Promise<PartitionsResponse> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n '/api/v1/sdk/partitions'\n ) as Promise<PartitionsResponse>;\n }\n\n async partitionSummary(params: {\n partition: string;\n }): Promise<PartitionSummaryResponse> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.partition);\n return this.client._request(\n 'GET',\n `/api/v1/sdk/partitions/${encoded}/summary`\n ) as Promise<PartitionSummaryResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { CreateCommentRequest, Comment } from '../types.js';\n\nexport class CommentsResource {\n constructor(private client: AlvaClient) {}\n\n async create(params: CreateCommentRequest): Promise<Comment> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/playbook/comment', {\n body: {\n username: params.username,\n name: params.name,\n content: params.content,\n parent_id: params.parent_id,\n },\n }) as Promise<Comment>;\n }\n\n async pin(params: { comment_id: number }): Promise<Comment> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/playbook/comment/pin', {\n body: { comment_id: params.comment_id },\n }) as Promise<Comment>;\n }\n\n async unpin(params: { comment_id: number }): Promise<Comment> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/playbook/comment/unpin', {\n body: { comment_id: params.comment_id },\n }) as Promise<Comment>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { RemixRequest } from '../types.js';\n\nexport class RemixResource {\n constructor(private client: AlvaClient) {}\n\n async save(params: RemixRequest): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/remix', {\n body: {\n child: params.child,\n parents: params.parents,\n },\n });\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { ScreenshotParams } from '../types.js';\n\nexport class ScreenshotResource {\n constructor(private client: AlvaClient) {}\n\n async capture(params: ScreenshotParams): Promise<ArrayBuffer> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/screenshot', {\n query: {\n url: params.url,\n selector: params.selector,\n xpath: params.xpath,\n },\n }) as Promise<ArrayBuffer>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { UserProfile } from '../types.js';\n\nexport class UserResource {\n constructor(private client: AlvaClient) {}\n\n async me(): Promise<UserProfile> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/me') as Promise<UserProfile>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n TradingAccount,\n TradingPortfolio,\n TradingOrder,\n TradingSubscription,\n EquityPoint,\n TradingRiskRule,\n TradingRiskRuleInput,\n ExecuteSignalResult,\n} from '../types.js';\n\nexport class TradingResource {\n constructor(private client: AlvaClient) {}\n\n async accounts(): Promise<TradingAccount[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/accounts') as Promise<\n TradingAccount[]\n >;\n }\n\n async portfolio(accountId: string): Promise<TradingPortfolio> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/portfolio', {\n query: { accountId },\n }) as Promise<TradingPortfolio>;\n }\n\n async orders(params: {\n accountId: string;\n source?: string;\n since?: number;\n limit?: number;\n }): Promise<TradingOrder[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/orders', {\n query: {\n accountId: params.accountId,\n source: params.source,\n since: params.since,\n limit: params.limit,\n },\n }) as Promise<TradingOrder[]>;\n }\n\n async subscriptions(accountId: string): Promise<TradingSubscription[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/subscriptions', {\n query: { accountId },\n }) as Promise<TradingSubscription[]>;\n }\n\n async equityHistory(params: {\n accountId: string;\n timeframe?: string;\n sinceMs?: number;\n untilMs?: number;\n }): Promise<EquityPoint[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/equity-history', {\n query: {\n accountId: params.accountId,\n timeframe: params.timeframe,\n sinceMs: params.sinceMs,\n untilMs: params.untilMs,\n },\n }) as Promise<EquityPoint[]>;\n }\n\n async riskRules(): Promise<TradingRiskRule> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n '/api/v1/trading/risk-rules'\n ) as Promise<TradingRiskRule>;\n }\n\n async subscribe(params: {\n accountId: string;\n sourceUsername: string;\n sourceFeed: string;\n playbookId: string;\n playbookVersion: string;\n executeLatest?: boolean;\n }): Promise<TradingSubscription> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/trading/subscribe', {\n body: params,\n }) as Promise<TradingSubscription>;\n }\n\n async unsubscribe(\n subscriptionId: string\n ): Promise<{ unsubscribedId: string }> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/trading/unsubscribe', {\n body: { subscriptionId },\n }) as Promise<{ unsubscribedId: string }>;\n }\n\n async execute(params: {\n accountId: string;\n signalJson: string;\n dryRun: boolean;\n sourceUsername?: string;\n sourceFeed?: string;\n }): Promise<ExecuteSignalResult> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/trading/execute', {\n body: params,\n }) as Promise<ExecuteSignalResult>;\n }\n\n async updateRiskRules(rules: TradingRiskRuleInput): Promise<TradingRiskRule> {\n this.client._requireAuth();\n return this.client._request('PUT', '/api/v1/trading/risk-rules', {\n body: rules,\n }) as Promise<TradingRiskRule>;\n }\n}\n","import { AlvaError } from './error.js';\nimport type { AlvaClientConfig } from './types.js';\nimport { FsResource } from './resources/fs.js';\nimport { RunResource } from './resources/run.js';\nimport { DeployResource } from './resources/deploy.js';\nimport { ReleaseResource } from './resources/release.js';\nimport { SecretsResource } from './resources/secrets.js';\nimport { SdkDocsResource } from './resources/sdkDocs.js';\nimport { CommentsResource } from './resources/comments.js';\nimport { RemixResource } from './resources/remix.js';\nimport { ScreenshotResource } from './resources/screenshot.js';\nimport { UserResource } from './resources/user.js';\nimport { TradingResource } from './resources/trading.js';\n\nconst DEFAULT_BASE_URL = 'https://api-llm.prd.alva.ai';\n\ninterface RequestOptions {\n query?: Record<string, unknown>;\n body?: unknown;\n /** Send raw body with application/octet-stream content type (for binary writes). */\n rawBody?: BodyInit;\n}\n\nexport class AlvaClient {\n readonly baseUrl: string;\n readonly token?: string;\n readonly apiKey?: string;\n\n private _fs?: FsResource;\n private _run?: RunResource;\n private _deploy?: DeployResource;\n private _release?: ReleaseResource;\n private _secrets?: SecretsResource;\n private _sdk?: SdkDocsResource;\n private _comments?: CommentsResource;\n private _remix?: RemixResource;\n private _screenshot?: ScreenshotResource;\n private _user?: UserResource;\n private _trading?: TradingResource;\n\n constructor(config: AlvaClientConfig) {\n this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n this.token = config.token;\n this.apiKey = config.apiKey;\n }\n\n get fs(): FsResource {\n return (this._fs ??= new FsResource(this));\n }\n get run(): RunResource {\n return (this._run ??= new RunResource(this));\n }\n get deploy(): DeployResource {\n return (this._deploy ??= new DeployResource(this));\n }\n get release(): ReleaseResource {\n return (this._release ??= new ReleaseResource(this));\n }\n get secrets(): SecretsResource {\n return (this._secrets ??= new SecretsResource(this));\n }\n get sdk(): SdkDocsResource {\n return (this._sdk ??= new SdkDocsResource(this));\n }\n get comments(): CommentsResource {\n return (this._comments ??= new CommentsResource(this));\n }\n get remix(): RemixResource {\n return (this._remix ??= new RemixResource(this));\n }\n get screenshot(): ScreenshotResource {\n return (this._screenshot ??= new ScreenshotResource(this));\n }\n get user(): UserResource {\n return (this._user ??= new UserResource(this));\n }\n get trading(): TradingResource {\n return (this._trading ??= new TradingResource(this));\n }\n\n _requireAuth(): void {\n if (!this.token && !this.apiKey) {\n throw new AlvaError(\n 'UNAUTHENTICATED',\n 'Authentication is required. Pass token or apiKey in the constructor.',\n 401\n );\n }\n }\n\n async _request(\n method: string,\n path: string,\n options?: RequestOptions\n ): Promise<unknown> {\n let url = `${this.baseUrl}${path}`;\n\n if (options?.query) {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(options.query)) {\n if (value !== undefined && value !== null) {\n params.set(key, String(value));\n }\n }\n const qs = params.toString();\n if (qs) {\n url += `?${qs}`;\n }\n }\n\n const headers: Record<string, string> = {};\n if (this.token) {\n headers.Authorization = `${this.token}`;\n } else if (this.apiKey) {\n headers['X-Alva-Api-Key'] = this.apiKey;\n }\n\n let fetchBody: BodyInit | undefined;\n if (options?.rawBody !== undefined) {\n headers['Content-Type'] = 'application/octet-stream';\n fetchBody = options.rawBody;\n } else if (options?.body !== undefined) {\n headers['Content-Type'] = 'application/json';\n fetchBody = JSON.stringify(options.body);\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method,\n headers,\n body: fetchBody,\n });\n } catch (err) {\n throw new AlvaError(\n 'NETWORK_ERROR',\n err instanceof Error ? err.message : 'Network request failed',\n 0\n );\n }\n\n if (!response.ok) {\n // Read body as text first to avoid double consumption\n const bodyText = await response.text().catch(() => '');\n const contentType = response.headers.get('content-type') ?? '';\n if (contentType.includes('application/json') && bodyText) {\n try {\n const data = JSON.parse(bodyText) as {\n error?: { code?: string; message?: string };\n };\n if (data.error) {\n throw new AlvaError(\n data.error.code ?? 'UNKNOWN',\n data.error.message ?? `HTTP ${response.status}`,\n response.status\n );\n }\n } catch (e) {\n if (e instanceof AlvaError) throw e;\n // JSON parse failed or no error envelope — fall through\n }\n }\n throw new AlvaError(\n 'UNKNOWN',\n `HTTP ${response.status}: ${bodyText.slice(0, 200)}`,\n response.status\n );\n }\n\n // Handle 204 No Content and empty responses\n if (response.status === 204) {\n return undefined;\n }\n\n const contentType = response.headers.get('content-type') ?? '';\n if (\n contentType.includes('application/octet-stream') ||\n contentType.includes('image/')\n ) {\n return response.arrayBuffer();\n }\n\n return response.json();\n }\n}\n"],"mappings":"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","names":["contentType"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/error.ts","../src/resources/fs.ts","../src/resources/run.ts","../src/resources/deploy.ts","../src/resources/release.ts","../src/resources/secrets.ts","../src/resources/sdkDocs.ts","../src/resources/comments.ts","../src/resources/remix.ts","../src/resources/screenshot.ts","../src/resources/user.ts","../src/resources/trading.ts","../src/client.ts"],"sourcesContent":["declare const __VERSION__: string;\n\n/** SDK version, injected at build time from package.json. */\nexport const VERSION: string =\n typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'dev';\n\nexport { AlvaClient } from './client.js';\nexport { AlvaError } from './error.js';\nexport type {\n AlvaClientConfig,\n FsReadParams,\n FsWriteParams,\n FsRawWriteParams,\n FsWriteResponse,\n FsStat,\n FsReaddirParams,\n FsEntry,\n FsReaddirResponse,\n FsMkdirParams,\n FsRemoveParams,\n FsRenameParams,\n FsCopyParams,\n FsSymlinkParams,\n FsReadlinkParams,\n FsChmodParams,\n FsGrantParams,\n FsRevokeParams,\n} from './types.js';\n","export class AlvaError extends Error {\n readonly code: string;\n readonly status: number;\n\n constructor(code: string, message: string, status: number) {\n super(message);\n this.name = 'AlvaError';\n this.code = code;\n this.status = status;\n }\n}\n\nexport class CliUsageError extends Error {\n readonly command?: string;\n\n constructor(message: string, command?: string) {\n super(message);\n this.name = 'CliUsageError';\n this.command = command;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n FsReadParams,\n FsWriteParams,\n FsRawWriteParams,\n FsWriteResponse,\n FsStat,\n FsReaddirParams,\n FsReaddirResponse,\n FsMkdirParams,\n FsRemoveParams,\n FsRenameParams,\n FsCopyParams,\n FsSymlinkParams,\n FsReadlinkParams,\n FsChmodParams,\n FsGrantParams,\n FsRevokeParams,\n} from '../types.js';\n\nexport class FsResource {\n constructor(private client: AlvaClient) {}\n\n /** Returns `ArrayBuffer` for binary files, or parsed JSON for time-series virtual paths. */\n async read(params: FsReadParams): Promise<ArrayBuffer | unknown> {\n return this.client._request('GET', '/api/v1/fs/read', {\n query: { path: params.path, offset: params.offset, size: params.size },\n });\n }\n\n /** Write file using JSON body (Mode 2). For text content. */\n async write(params: FsWriteParams): Promise<FsWriteResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/fs/write', {\n body: {\n path: params.path,\n data: params.data,\n mkdir_parents: params.mkdir_parents,\n },\n }) as Promise<FsWriteResponse>;\n }\n\n /** Write file using raw body (Mode 1). Supports binary data. Path and options are query params. */\n async rawWrite(params: FsRawWriteParams): Promise<FsWriteResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/fs/write', {\n query: {\n path: params.path,\n mkdir_parents: params.mkdir_parents,\n },\n rawBody: params.body,\n }) as Promise<FsWriteResponse>;\n }\n\n async stat(params: { path: string }): Promise<FsStat> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/fs/stat', {\n query: { path: params.path },\n }) as Promise<FsStat>;\n }\n\n async readdir(params: FsReaddirParams): Promise<FsReaddirResponse> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/fs/readdir', {\n query: { path: params.path, recursive: params.recursive },\n }) as Promise<FsReaddirResponse>;\n }\n\n async mkdir(params: FsMkdirParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/mkdir', {\n body: { path: params.path },\n });\n }\n\n async remove(params: FsRemoveParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('DELETE', '/api/v1/fs/remove', {\n query: { path: params.path, recursive: params.recursive },\n });\n }\n\n async rename(params: FsRenameParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/rename', {\n body: { old_path: params.old_path, new_path: params.new_path },\n });\n }\n\n async copy(params: FsCopyParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/copy', {\n body: { src_path: params.src_path, dst_path: params.dst_path },\n });\n }\n\n async symlink(params: FsSymlinkParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/symlink', {\n body: {\n target_path: params.target_path,\n link_path: params.link_path,\n },\n });\n }\n\n async readlink(params: FsReadlinkParams): Promise<{ target: string }> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/fs/readlink', {\n query: { path: params.path },\n }) as Promise<{ target: string }>;\n }\n\n async chmod(params: FsChmodParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/chmod', {\n body: { path: params.path, mode: params.mode },\n });\n }\n\n async grant(params: FsGrantParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/grant', {\n body: {\n path: params.path,\n subject: params.subject,\n permission: params.permission,\n },\n });\n }\n\n async revoke(params: FsRevokeParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/revoke', {\n body: {\n path: params.path,\n subject: params.subject,\n permission: params.permission,\n },\n });\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { RunRequest, RunResponse } from '../types.js';\n\nexport class RunResource {\n constructor(private client: AlvaClient) {}\n\n async execute(params: RunRequest): Promise<RunResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/run', {\n body: {\n code: params.code,\n entry_path: params.entry_path,\n working_dir: params.working_dir,\n args: params.args,\n },\n }) as Promise<RunResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n CronjobCreateRequest,\n Cronjob,\n CronjobListParams,\n CronjobListResponse,\n CronjobUpdateRequest,\n CronjobRunsListParams,\n CronjobRunsListResponse,\n CronjobRunLogsResponse,\n} from '../types.js';\n\nexport class DeployResource {\n constructor(private client: AlvaClient) {}\n\n async create(params: CronjobCreateRequest): Promise<Cronjob> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/deploy/cronjob', {\n body: {\n name: params.name,\n path: params.path,\n cron_expression: params.cron_expression,\n args: params.args,\n push_notify: params.push_notify,\n },\n }) as Promise<Cronjob>;\n }\n\n async list(params?: CronjobListParams): Promise<CronjobListResponse> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/deploy/cronjobs', {\n query: { limit: params?.limit, cursor: params?.cursor },\n }) as Promise<CronjobListResponse>;\n }\n\n async get(params: { id: number }): Promise<Cronjob> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n `/api/v1/deploy/cronjob/${params.id}`\n ) as Promise<Cronjob>;\n }\n\n async update(params: CronjobUpdateRequest): Promise<Cronjob> {\n this.client._requireAuth();\n const { id, ...body } = params;\n return this.client._request('PATCH', `/api/v1/deploy/cronjob/${id}`, {\n body,\n }) as Promise<Cronjob>;\n }\n\n async delete(params: { id: number }): Promise<void> {\n this.client._requireAuth();\n await this.client._request('DELETE', `/api/v1/deploy/cronjob/${params.id}`);\n }\n\n async pause(params: { id: number }): Promise<void> {\n this.client._requireAuth();\n await this.client._request(\n 'POST',\n `/api/v1/deploy/cronjob/${params.id}/pause`\n );\n }\n\n async resume(params: { id: number }): Promise<void> {\n this.client._requireAuth();\n await this.client._request(\n 'POST',\n `/api/v1/deploy/cronjob/${params.id}/resume`\n );\n }\n\n async listRuns(\n params: CronjobRunsListParams\n ): Promise<CronjobRunsListResponse> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n `/api/v1/deploy/cronjob/${params.cronjob_id}/runs`,\n {\n query: { first: params.first, cursor: params.cursor },\n }\n ) as Promise<CronjobRunsListResponse>;\n }\n\n async getRunLogs(params: {\n cronjob_id: number;\n run_id: number;\n }): Promise<CronjobRunLogsResponse> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n `/api/v1/deploy/cronjob/${params.cronjob_id}/runs/${params.run_id}/logs`\n ) as Promise<CronjobRunLogsResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n FeedReleaseRequest,\n FeedReleaseResponse,\n PlaybookDraftRequest,\n PlaybookDraftResponse,\n PlaybookReleaseRequest,\n PlaybookReleaseResponse,\n} from '../types.js';\n\nexport class ReleaseResource {\n constructor(private client: AlvaClient) {}\n\n async feed(params: FeedReleaseRequest): Promise<FeedReleaseResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/release/feed', {\n body: {\n name: params.name,\n version: params.version,\n cronjob_id: params.cronjob_id,\n view_json: params.view_json,\n description: params.description,\n },\n }) as Promise<FeedReleaseResponse>;\n }\n\n async playbookDraft(\n params: PlaybookDraftRequest\n ): Promise<PlaybookDraftResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/draft/playbook', {\n body: {\n name: params.name,\n display_name: params.display_name,\n description: params.description,\n feeds: params.feeds,\n trading_symbols: params.trading_symbols,\n changelog: params.changelog,\n },\n }) as Promise<PlaybookDraftResponse>;\n }\n\n async playbook(\n params: PlaybookReleaseRequest\n ): Promise<PlaybookReleaseResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/release/playbook', {\n body: {\n name: params.name,\n version: params.version,\n feeds: params.feeds,\n changelog: params.changelog,\n },\n }) as Promise<PlaybookReleaseResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { CreateSecretRequest, Secret, SecretMetadata } from '../types.js';\n\nexport class SecretsResource {\n constructor(private client: AlvaClient) {}\n\n async create(params: CreateSecretRequest): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/secrets', {\n body: { name: params.name, value: params.value },\n });\n }\n\n async list(): Promise<{ secrets: SecretMetadata[] }> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/secrets') as Promise<{\n secrets: SecretMetadata[];\n }>;\n }\n\n async get(params: { name: string }): Promise<Secret> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.name);\n return this.client._request(\n 'GET',\n `/api/v1/secrets/${encoded}`\n ) as Promise<Secret>;\n }\n\n async update(params: { name: string; value: string }): Promise<void> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.name);\n await this.client._request('PUT', `/api/v1/secrets/${encoded}`, {\n body: { value: params.value },\n });\n }\n\n async delete(params: { name: string }): Promise<void> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.name);\n await this.client._request('DELETE', `/api/v1/secrets/${encoded}`);\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n ModuleDoc,\n PartitionsResponse,\n PartitionSummaryResponse,\n} from '../types.js';\n\nexport class SdkDocsResource {\n constructor(private client: AlvaClient) {}\n\n async doc(params: { name: string }): Promise<ModuleDoc> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/sdk/doc', {\n query: { name: params.name },\n }) as Promise<ModuleDoc>;\n }\n\n async partitions(): Promise<PartitionsResponse> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n '/api/v1/sdk/partitions'\n ) as Promise<PartitionsResponse>;\n }\n\n async partitionSummary(params: {\n partition: string;\n }): Promise<PartitionSummaryResponse> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.partition);\n return this.client._request(\n 'GET',\n `/api/v1/sdk/partitions/${encoded}/summary`\n ) as Promise<PartitionSummaryResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { CreateCommentRequest, Comment } from '../types.js';\n\nexport class CommentsResource {\n constructor(private client: AlvaClient) {}\n\n async create(params: CreateCommentRequest): Promise<Comment> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/playbook/comment', {\n body: {\n username: params.username,\n name: params.name,\n content: params.content,\n parent_id: params.parent_id,\n },\n }) as Promise<Comment>;\n }\n\n async pin(params: { comment_id: number }): Promise<Comment> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/playbook/comment/pin', {\n body: { comment_id: params.comment_id },\n }) as Promise<Comment>;\n }\n\n async unpin(params: { comment_id: number }): Promise<Comment> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/playbook/comment/unpin', {\n body: { comment_id: params.comment_id },\n }) as Promise<Comment>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { RemixRequest } from '../types.js';\n\nexport class RemixResource {\n constructor(private client: AlvaClient) {}\n\n async save(params: RemixRequest): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/remix', {\n body: {\n child: params.child,\n parents: params.parents,\n },\n });\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { ScreenshotParams } from '../types.js';\n\nexport class ScreenshotResource {\n constructor(private client: AlvaClient) {}\n\n async capture(params: ScreenshotParams): Promise<ArrayBuffer> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/screenshot', {\n query: {\n url: params.url,\n selector: params.selector,\n xpath: params.xpath,\n },\n }) as Promise<ArrayBuffer>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { UserProfile } from '../types.js';\n\nexport class UserResource {\n constructor(private client: AlvaClient) {}\n\n async me(): Promise<UserProfile> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/me') as Promise<UserProfile>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n TradingAccount,\n TradingPortfolio,\n TradingOrder,\n TradingSubscription,\n EquityPoint,\n TradingRiskRule,\n TradingRiskRuleInput,\n ExecuteSignalResult,\n} from '../types.js';\n\nexport class TradingResource {\n constructor(private client: AlvaClient) {}\n\n async accounts(): Promise<TradingAccount[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/accounts') as Promise<\n TradingAccount[]\n >;\n }\n\n async portfolio(accountId: string): Promise<TradingPortfolio> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/portfolio', {\n query: { accountId },\n }) as Promise<TradingPortfolio>;\n }\n\n async orders(params: {\n accountId: string;\n source?: string;\n since?: number;\n limit?: number;\n }): Promise<TradingOrder[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/orders', {\n query: {\n accountId: params.accountId,\n source: params.source,\n since: params.since,\n limit: params.limit,\n },\n }) as Promise<TradingOrder[]>;\n }\n\n async subscriptions(accountId: string): Promise<TradingSubscription[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/subscriptions', {\n query: { accountId },\n }) as Promise<TradingSubscription[]>;\n }\n\n async equityHistory(params: {\n accountId: string;\n timeframe?: string;\n sinceMs?: number;\n untilMs?: number;\n }): Promise<EquityPoint[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/equity-history', {\n query: {\n accountId: params.accountId,\n timeframe: params.timeframe,\n sinceMs: params.sinceMs,\n untilMs: params.untilMs,\n },\n }) as Promise<EquityPoint[]>;\n }\n\n async riskRules(): Promise<TradingRiskRule> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n '/api/v1/trading/risk-rules'\n ) as Promise<TradingRiskRule>;\n }\n\n async subscribe(params: {\n accountId: string;\n sourceUsername: string;\n sourceFeed: string;\n playbookId: string;\n playbookVersion: string;\n executeLatest?: boolean;\n }): Promise<TradingSubscription> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/trading/subscribe', {\n body: params,\n }) as Promise<TradingSubscription>;\n }\n\n async unsubscribe(\n subscriptionId: string\n ): Promise<{ unsubscribedId: string }> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/trading/unsubscribe', {\n body: { subscriptionId },\n }) as Promise<{ unsubscribedId: string }>;\n }\n\n async execute(params: {\n accountId: string;\n signalJson: string;\n dryRun: boolean;\n sourceUsername?: string;\n sourceFeed?: string;\n }): Promise<ExecuteSignalResult> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/trading/execute', {\n body: params,\n }) as Promise<ExecuteSignalResult>;\n }\n\n async updateRiskRules(rules: TradingRiskRuleInput): Promise<TradingRiskRule> {\n this.client._requireAuth();\n return this.client._request('PUT', '/api/v1/trading/risk-rules', {\n body: rules,\n }) as Promise<TradingRiskRule>;\n }\n}\n","import { AlvaError } from './error.js';\nimport type { AlvaClientConfig } from './types.js';\nimport { FsResource } from './resources/fs.js';\nimport { RunResource } from './resources/run.js';\nimport { DeployResource } from './resources/deploy.js';\nimport { ReleaseResource } from './resources/release.js';\nimport { SecretsResource } from './resources/secrets.js';\nimport { SdkDocsResource } from './resources/sdkDocs.js';\nimport { CommentsResource } from './resources/comments.js';\nimport { RemixResource } from './resources/remix.js';\nimport { ScreenshotResource } from './resources/screenshot.js';\nimport { UserResource } from './resources/user.js';\nimport { TradingResource } from './resources/trading.js';\n\nconst DEFAULT_BASE_URL = 'https://api-llm.prd.alva.ai';\n\ninterface RequestOptions {\n query?: Record<string, unknown>;\n body?: unknown;\n /** Send raw body with application/octet-stream content type (for binary writes). */\n rawBody?: BodyInit;\n}\n\nexport class AlvaClient {\n readonly baseUrl: string;\n readonly token?: string;\n readonly apiKey?: string;\n\n private _fs?: FsResource;\n private _run?: RunResource;\n private _deploy?: DeployResource;\n private _release?: ReleaseResource;\n private _secrets?: SecretsResource;\n private _sdk?: SdkDocsResource;\n private _comments?: CommentsResource;\n private _remix?: RemixResource;\n private _screenshot?: ScreenshotResource;\n private _user?: UserResource;\n private _trading?: TradingResource;\n\n constructor(config: AlvaClientConfig) {\n this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n this.token = config.token;\n this.apiKey = config.apiKey;\n }\n\n get fs(): FsResource {\n return (this._fs ??= new FsResource(this));\n }\n get run(): RunResource {\n return (this._run ??= new RunResource(this));\n }\n get deploy(): DeployResource {\n return (this._deploy ??= new DeployResource(this));\n }\n get release(): ReleaseResource {\n return (this._release ??= new ReleaseResource(this));\n }\n get secrets(): SecretsResource {\n return (this._secrets ??= new SecretsResource(this));\n }\n get sdk(): SdkDocsResource {\n return (this._sdk ??= new SdkDocsResource(this));\n }\n get comments(): CommentsResource {\n return (this._comments ??= new CommentsResource(this));\n }\n get remix(): RemixResource {\n return (this._remix ??= new RemixResource(this));\n }\n get screenshot(): ScreenshotResource {\n return (this._screenshot ??= new ScreenshotResource(this));\n }\n get user(): UserResource {\n return (this._user ??= new UserResource(this));\n }\n get trading(): TradingResource {\n return (this._trading ??= new TradingResource(this));\n }\n\n _requireAuth(): void {\n if (!this.token && !this.apiKey) {\n throw new AlvaError(\n 'UNAUTHENTICATED',\n 'Authentication is required. Pass token or apiKey in the constructor.',\n 401\n );\n }\n }\n\n async _request(\n method: string,\n path: string,\n options?: RequestOptions\n ): Promise<unknown> {\n let url = `${this.baseUrl}${path}`;\n\n if (options?.query) {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(options.query)) {\n if (value !== undefined && value !== null) {\n params.set(key, String(value));\n }\n }\n const qs = params.toString();\n if (qs) {\n url += `?${qs}`;\n }\n }\n\n const headers: Record<string, string> = {};\n if (this.token) {\n headers.Authorization = `${this.token}`;\n } else if (this.apiKey) {\n headers['X-Alva-Api-Key'] = this.apiKey;\n }\n\n let fetchBody: BodyInit | undefined;\n if (options?.rawBody !== undefined) {\n headers['Content-Type'] = 'application/octet-stream';\n fetchBody = options.rawBody;\n } else if (options?.body !== undefined) {\n headers['Content-Type'] = 'application/json';\n fetchBody = JSON.stringify(options.body);\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method,\n headers,\n body: fetchBody,\n });\n } catch (err) {\n throw new AlvaError(\n 'NETWORK_ERROR',\n err instanceof Error ? err.message : 'Network request failed',\n 0\n );\n }\n\n if (!response.ok) {\n // Read body as text first to avoid double consumption\n const bodyText = await response.text().catch(() => '');\n const contentType = response.headers.get('content-type') ?? '';\n if (contentType.includes('application/json') && bodyText) {\n try {\n const data = JSON.parse(bodyText) as {\n error?: { code?: string; message?: string };\n };\n if (data.error) {\n throw new AlvaError(\n data.error.code ?? 'UNKNOWN',\n data.error.message ?? `HTTP ${response.status}`,\n response.status\n );\n }\n } catch (e) {\n if (e instanceof AlvaError) throw e;\n // JSON parse failed or no error envelope — fall through\n }\n }\n throw new AlvaError(\n 'UNKNOWN',\n `HTTP ${response.status}: ${bodyText.slice(0, 200)}`,\n response.status\n );\n }\n\n // Handle 204 No Content and empty responses\n if (response.status === 204) {\n return undefined;\n }\n\n const contentType = response.headers.get('content-type') ?? '';\n if (\n contentType.includes('application/octet-stream') ||\n contentType.includes('image/')\n ) {\n return response.arrayBuffer();\n }\n\n return response.json();\n }\n}\n"],"mappings":"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","names":["contentType"]}
package/dist/index.d.cts CHANGED
@@ -133,6 +133,35 @@ interface CronjobUpdateRequest {
133
133
  args?: Record<string, unknown>;
134
134
  push_notify?: boolean;
135
135
  }
136
+ interface CronjobRunsListParams {
137
+ cronjob_id: number;
138
+ first?: number;
139
+ cursor?: number;
140
+ }
141
+ interface CronjobRun {
142
+ id: number;
143
+ cronjob_id: number;
144
+ status: string;
145
+ error: string;
146
+ duration_ms: number;
147
+ credits_used: number;
148
+ created_at: string;
149
+ }
150
+ interface CronjobRunStats {
151
+ total_runs: number;
152
+ success_count: number;
153
+ fail_count: number;
154
+ last_run_at?: string;
155
+ last_success_at?: string;
156
+ }
157
+ interface CronjobRunsListResponse {
158
+ runs: CronjobRun[];
159
+ stats?: CronjobRunStats;
160
+ next_cursor?: number;
161
+ }
162
+ interface CronjobRunLogsResponse {
163
+ logs: string;
164
+ }
136
165
  interface FeedReleaseRequest {
137
166
  name: string;
138
167
  version: string;
@@ -381,6 +410,11 @@ declare class DeployResource {
381
410
  resume(params: {
382
411
  id: number;
383
412
  }): Promise<void>;
413
+ listRuns(params: CronjobRunsListParams): Promise<CronjobRunsListResponse>;
414
+ getRunLogs(params: {
415
+ cronjob_id: number;
416
+ run_id: number;
417
+ }): Promise<CronjobRunLogsResponse>;
384
418
  }
385
419
 
386
420
  declare class ReleaseResource {
@@ -538,4 +572,4 @@ declare class AlvaError extends Error {
538
572
  /** SDK version, injected at build time from package.json. */
539
573
  declare const VERSION: string;
540
574
 
541
- export { type AccountSubscription, AlvaClient, type AlvaClientConfig, AlvaError, type EquityPoint, type ExecuteSignalOrder, type ExecuteSignalResult, type FsChmodParams, type FsCopyParams, type FsEntry, type FsGrantParams, type FsMkdirParams, type FsRawWriteParams, type FsReadParams, type FsReaddirParams, type FsReaddirResponse, type FsReadlinkParams, type FsRemoveParams, type FsRenameParams, type FsRevokeParams, type FsStat, type FsSymlinkParams, type FsWriteParams, type FsWriteResponse, type PortfolioAsset, type RiskRuleEntry, type TradingAccount, type TradingOrder, type TradingPortfolio, type TradingRiskRule, type TradingRiskRuleInput, type TradingSubscription, VERSION };
575
+ export { AlvaClient, type AlvaClientConfig, AlvaError, type FsChmodParams, type FsCopyParams, type FsEntry, type FsGrantParams, type FsMkdirParams, type FsRawWriteParams, type FsReadParams, type FsReaddirParams, type FsReaddirResponse, type FsReadlinkParams, type FsRemoveParams, type FsRenameParams, type FsRevokeParams, type FsStat, type FsSymlinkParams, type FsWriteParams, type FsWriteResponse, VERSION };
package/dist/index.d.ts CHANGED
@@ -133,6 +133,35 @@ interface CronjobUpdateRequest {
133
133
  args?: Record<string, unknown>;
134
134
  push_notify?: boolean;
135
135
  }
136
+ interface CronjobRunsListParams {
137
+ cronjob_id: number;
138
+ first?: number;
139
+ cursor?: number;
140
+ }
141
+ interface CronjobRun {
142
+ id: number;
143
+ cronjob_id: number;
144
+ status: string;
145
+ error: string;
146
+ duration_ms: number;
147
+ credits_used: number;
148
+ created_at: string;
149
+ }
150
+ interface CronjobRunStats {
151
+ total_runs: number;
152
+ success_count: number;
153
+ fail_count: number;
154
+ last_run_at?: string;
155
+ last_success_at?: string;
156
+ }
157
+ interface CronjobRunsListResponse {
158
+ runs: CronjobRun[];
159
+ stats?: CronjobRunStats;
160
+ next_cursor?: number;
161
+ }
162
+ interface CronjobRunLogsResponse {
163
+ logs: string;
164
+ }
136
165
  interface FeedReleaseRequest {
137
166
  name: string;
138
167
  version: string;
@@ -381,6 +410,11 @@ declare class DeployResource {
381
410
  resume(params: {
382
411
  id: number;
383
412
  }): Promise<void>;
413
+ listRuns(params: CronjobRunsListParams): Promise<CronjobRunsListResponse>;
414
+ getRunLogs(params: {
415
+ cronjob_id: number;
416
+ run_id: number;
417
+ }): Promise<CronjobRunLogsResponse>;
384
418
  }
385
419
 
386
420
  declare class ReleaseResource {
@@ -538,4 +572,4 @@ declare class AlvaError extends Error {
538
572
  /** SDK version, injected at build time from package.json. */
539
573
  declare const VERSION: string;
540
574
 
541
- export { type AccountSubscription, AlvaClient, type AlvaClientConfig, AlvaError, type EquityPoint, type ExecuteSignalOrder, type ExecuteSignalResult, type FsChmodParams, type FsCopyParams, type FsEntry, type FsGrantParams, type FsMkdirParams, type FsRawWriteParams, type FsReadParams, type FsReaddirParams, type FsReaddirResponse, type FsReadlinkParams, type FsRemoveParams, type FsRenameParams, type FsRevokeParams, type FsStat, type FsSymlinkParams, type FsWriteParams, type FsWriteResponse, type PortfolioAsset, type RiskRuleEntry, type TradingAccount, type TradingOrder, type TradingPortfolio, type TradingRiskRule, type TradingRiskRuleInput, type TradingSubscription, VERSION };
575
+ export { AlvaClient, type AlvaClientConfig, AlvaError, type FsChmodParams, type FsCopyParams, type FsEntry, type FsGrantParams, type FsMkdirParams, type FsRawWriteParams, type FsReadParams, type FsReaddirParams, type FsReaddirResponse, type FsReadlinkParams, type FsRemoveParams, type FsRenameParams, type FsRevokeParams, type FsStat, type FsSymlinkParams, type FsWriteParams, type FsWriteResponse, VERSION };
package/dist/index.js CHANGED
@@ -198,6 +198,23 @@ var DeployResource = class {
198
198
  `/api/v1/deploy/cronjob/${params.id}/resume`
199
199
  );
200
200
  }
201
+ async listRuns(params) {
202
+ this.client._requireAuth();
203
+ return this.client._request(
204
+ "GET",
205
+ `/api/v1/deploy/cronjob/${params.cronjob_id}/runs`,
206
+ {
207
+ query: { first: params.first, cursor: params.cursor }
208
+ }
209
+ );
210
+ }
211
+ async getRunLogs(params) {
212
+ this.client._requireAuth();
213
+ return this.client._request(
214
+ "GET",
215
+ `/api/v1/deploy/cronjob/${params.cronjob_id}/runs/${params.run_id}/logs`
216
+ );
217
+ }
201
218
  };
202
219
 
203
220
  // src/resources/release.ts
@@ -607,7 +624,7 @@ var AlvaClient = class {
607
624
  };
608
625
 
609
626
  // src/index.ts
610
- var VERSION = true ? "0.1.4" : "dev";
627
+ var VERSION = true ? "0.2.0" : "dev";
611
628
  export {
612
629
  AlvaClient,
613
630
  AlvaError,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/error.ts","../src/resources/fs.ts","../src/resources/run.ts","../src/resources/deploy.ts","../src/resources/release.ts","../src/resources/secrets.ts","../src/resources/sdkDocs.ts","../src/resources/comments.ts","../src/resources/remix.ts","../src/resources/screenshot.ts","../src/resources/user.ts","../src/resources/trading.ts","../src/client.ts","../src/index.ts"],"sourcesContent":["export class AlvaError extends Error {\n readonly code: string;\n readonly status: number;\n\n constructor(code: string, message: string, status: number) {\n super(message);\n this.name = 'AlvaError';\n this.code = code;\n this.status = status;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n FsReadParams,\n FsWriteParams,\n FsRawWriteParams,\n FsWriteResponse,\n FsStat,\n FsReaddirParams,\n FsReaddirResponse,\n FsMkdirParams,\n FsRemoveParams,\n FsRenameParams,\n FsCopyParams,\n FsSymlinkParams,\n FsReadlinkParams,\n FsChmodParams,\n FsGrantParams,\n FsRevokeParams,\n} from '../types.js';\n\nexport class FsResource {\n constructor(private client: AlvaClient) {}\n\n /** Returns `ArrayBuffer` for binary files, or parsed JSON for time-series virtual paths. */\n async read(params: FsReadParams): Promise<ArrayBuffer | unknown> {\n return this.client._request('GET', '/api/v1/fs/read', {\n query: { path: params.path, offset: params.offset, size: params.size },\n });\n }\n\n /** Write file using JSON body (Mode 2). For text content. */\n async write(params: FsWriteParams): Promise<FsWriteResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/fs/write', {\n body: {\n path: params.path,\n data: params.data,\n mkdir_parents: params.mkdir_parents,\n },\n }) as Promise<FsWriteResponse>;\n }\n\n /** Write file using raw body (Mode 1). Supports binary data. Path and options are query params. */\n async rawWrite(params: FsRawWriteParams): Promise<FsWriteResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/fs/write', {\n query: {\n path: params.path,\n mkdir_parents: params.mkdir_parents,\n },\n rawBody: params.body,\n }) as Promise<FsWriteResponse>;\n }\n\n async stat(params: { path: string }): Promise<FsStat> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/fs/stat', {\n query: { path: params.path },\n }) as Promise<FsStat>;\n }\n\n async readdir(params: FsReaddirParams): Promise<FsReaddirResponse> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/fs/readdir', {\n query: { path: params.path, recursive: params.recursive },\n }) as Promise<FsReaddirResponse>;\n }\n\n async mkdir(params: FsMkdirParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/mkdir', {\n body: { path: params.path },\n });\n }\n\n async remove(params: FsRemoveParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('DELETE', '/api/v1/fs/remove', {\n query: { path: params.path, recursive: params.recursive },\n });\n }\n\n async rename(params: FsRenameParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/rename', {\n body: { old_path: params.old_path, new_path: params.new_path },\n });\n }\n\n async copy(params: FsCopyParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/copy', {\n body: { src_path: params.src_path, dst_path: params.dst_path },\n });\n }\n\n async symlink(params: FsSymlinkParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/symlink', {\n body: {\n target_path: params.target_path,\n link_path: params.link_path,\n },\n });\n }\n\n async readlink(params: FsReadlinkParams): Promise<{ target: string }> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/fs/readlink', {\n query: { path: params.path },\n }) as Promise<{ target: string }>;\n }\n\n async chmod(params: FsChmodParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/chmod', {\n body: { path: params.path, mode: params.mode },\n });\n }\n\n async grant(params: FsGrantParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/grant', {\n body: {\n path: params.path,\n subject: params.subject,\n permission: params.permission,\n },\n });\n }\n\n async revoke(params: FsRevokeParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/revoke', {\n body: {\n path: params.path,\n subject: params.subject,\n permission: params.permission,\n },\n });\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { RunRequest, RunResponse } from '../types.js';\n\nexport class RunResource {\n constructor(private client: AlvaClient) {}\n\n async execute(params: RunRequest): Promise<RunResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/run', {\n body: {\n code: params.code,\n entry_path: params.entry_path,\n working_dir: params.working_dir,\n args: params.args,\n },\n }) as Promise<RunResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n CronjobCreateRequest,\n Cronjob,\n CronjobListParams,\n CronjobListResponse,\n CronjobUpdateRequest,\n} from '../types.js';\n\nexport class DeployResource {\n constructor(private client: AlvaClient) {}\n\n async create(params: CronjobCreateRequest): Promise<Cronjob> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/deploy/cronjob', {\n body: {\n name: params.name,\n path: params.path,\n cron_expression: params.cron_expression,\n args: params.args,\n push_notify: params.push_notify,\n },\n }) as Promise<Cronjob>;\n }\n\n async list(params?: CronjobListParams): Promise<CronjobListResponse> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/deploy/cronjobs', {\n query: { limit: params?.limit, cursor: params?.cursor },\n }) as Promise<CronjobListResponse>;\n }\n\n async get(params: { id: number }): Promise<Cronjob> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n `/api/v1/deploy/cronjob/${params.id}`\n ) as Promise<Cronjob>;\n }\n\n async update(params: CronjobUpdateRequest): Promise<Cronjob> {\n this.client._requireAuth();\n const { id, ...body } = params;\n return this.client._request('PATCH', `/api/v1/deploy/cronjob/${id}`, {\n body,\n }) as Promise<Cronjob>;\n }\n\n async delete(params: { id: number }): Promise<void> {\n this.client._requireAuth();\n await this.client._request('DELETE', `/api/v1/deploy/cronjob/${params.id}`);\n }\n\n async pause(params: { id: number }): Promise<void> {\n this.client._requireAuth();\n await this.client._request(\n 'POST',\n `/api/v1/deploy/cronjob/${params.id}/pause`\n );\n }\n\n async resume(params: { id: number }): Promise<void> {\n this.client._requireAuth();\n await this.client._request(\n 'POST',\n `/api/v1/deploy/cronjob/${params.id}/resume`\n );\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n FeedReleaseRequest,\n FeedReleaseResponse,\n PlaybookDraftRequest,\n PlaybookDraftResponse,\n PlaybookReleaseRequest,\n PlaybookReleaseResponse,\n} from '../types.js';\n\nexport class ReleaseResource {\n constructor(private client: AlvaClient) {}\n\n async feed(params: FeedReleaseRequest): Promise<FeedReleaseResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/release/feed', {\n body: {\n name: params.name,\n version: params.version,\n cronjob_id: params.cronjob_id,\n view_json: params.view_json,\n description: params.description,\n },\n }) as Promise<FeedReleaseResponse>;\n }\n\n async playbookDraft(\n params: PlaybookDraftRequest\n ): Promise<PlaybookDraftResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/draft/playbook', {\n body: {\n name: params.name,\n display_name: params.display_name,\n description: params.description,\n feeds: params.feeds,\n trading_symbols: params.trading_symbols,\n changelog: params.changelog,\n },\n }) as Promise<PlaybookDraftResponse>;\n }\n\n async playbook(\n params: PlaybookReleaseRequest\n ): Promise<PlaybookReleaseResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/release/playbook', {\n body: {\n name: params.name,\n version: params.version,\n feeds: params.feeds,\n changelog: params.changelog,\n },\n }) as Promise<PlaybookReleaseResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { CreateSecretRequest, Secret, SecretMetadata } from '../types.js';\n\nexport class SecretsResource {\n constructor(private client: AlvaClient) {}\n\n async create(params: CreateSecretRequest): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/secrets', {\n body: { name: params.name, value: params.value },\n });\n }\n\n async list(): Promise<{ secrets: SecretMetadata[] }> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/secrets') as Promise<{\n secrets: SecretMetadata[];\n }>;\n }\n\n async get(params: { name: string }): Promise<Secret> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.name);\n return this.client._request(\n 'GET',\n `/api/v1/secrets/${encoded}`\n ) as Promise<Secret>;\n }\n\n async update(params: { name: string; value: string }): Promise<void> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.name);\n await this.client._request('PUT', `/api/v1/secrets/${encoded}`, {\n body: { value: params.value },\n });\n }\n\n async delete(params: { name: string }): Promise<void> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.name);\n await this.client._request('DELETE', `/api/v1/secrets/${encoded}`);\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n ModuleDoc,\n PartitionsResponse,\n PartitionSummaryResponse,\n} from '../types.js';\n\nexport class SdkDocsResource {\n constructor(private client: AlvaClient) {}\n\n async doc(params: { name: string }): Promise<ModuleDoc> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/sdk/doc', {\n query: { name: params.name },\n }) as Promise<ModuleDoc>;\n }\n\n async partitions(): Promise<PartitionsResponse> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n '/api/v1/sdk/partitions'\n ) as Promise<PartitionsResponse>;\n }\n\n async partitionSummary(params: {\n partition: string;\n }): Promise<PartitionSummaryResponse> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.partition);\n return this.client._request(\n 'GET',\n `/api/v1/sdk/partitions/${encoded}/summary`\n ) as Promise<PartitionSummaryResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { CreateCommentRequest, Comment } from '../types.js';\n\nexport class CommentsResource {\n constructor(private client: AlvaClient) {}\n\n async create(params: CreateCommentRequest): Promise<Comment> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/playbook/comment', {\n body: {\n username: params.username,\n name: params.name,\n content: params.content,\n parent_id: params.parent_id,\n },\n }) as Promise<Comment>;\n }\n\n async pin(params: { comment_id: number }): Promise<Comment> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/playbook/comment/pin', {\n body: { comment_id: params.comment_id },\n }) as Promise<Comment>;\n }\n\n async unpin(params: { comment_id: number }): Promise<Comment> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/playbook/comment/unpin', {\n body: { comment_id: params.comment_id },\n }) as Promise<Comment>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { RemixRequest } from '../types.js';\n\nexport class RemixResource {\n constructor(private client: AlvaClient) {}\n\n async save(params: RemixRequest): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/remix', {\n body: {\n child: params.child,\n parents: params.parents,\n },\n });\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { ScreenshotParams } from '../types.js';\n\nexport class ScreenshotResource {\n constructor(private client: AlvaClient) {}\n\n async capture(params: ScreenshotParams): Promise<ArrayBuffer> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/screenshot', {\n query: {\n url: params.url,\n selector: params.selector,\n xpath: params.xpath,\n },\n }) as Promise<ArrayBuffer>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { UserProfile } from '../types.js';\n\nexport class UserResource {\n constructor(private client: AlvaClient) {}\n\n async me(): Promise<UserProfile> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/me') as Promise<UserProfile>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n TradingAccount,\n TradingPortfolio,\n TradingOrder,\n TradingSubscription,\n EquityPoint,\n TradingRiskRule,\n TradingRiskRuleInput,\n ExecuteSignalResult,\n} from '../types.js';\n\nexport class TradingResource {\n constructor(private client: AlvaClient) {}\n\n async accounts(): Promise<TradingAccount[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/accounts') as Promise<\n TradingAccount[]\n >;\n }\n\n async portfolio(accountId: string): Promise<TradingPortfolio> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/portfolio', {\n query: { accountId },\n }) as Promise<TradingPortfolio>;\n }\n\n async orders(params: {\n accountId: string;\n source?: string;\n since?: number;\n limit?: number;\n }): Promise<TradingOrder[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/orders', {\n query: {\n accountId: params.accountId,\n source: params.source,\n since: params.since,\n limit: params.limit,\n },\n }) as Promise<TradingOrder[]>;\n }\n\n async subscriptions(accountId: string): Promise<TradingSubscription[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/subscriptions', {\n query: { accountId },\n }) as Promise<TradingSubscription[]>;\n }\n\n async equityHistory(params: {\n accountId: string;\n timeframe?: string;\n sinceMs?: number;\n untilMs?: number;\n }): Promise<EquityPoint[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/equity-history', {\n query: {\n accountId: params.accountId,\n timeframe: params.timeframe,\n sinceMs: params.sinceMs,\n untilMs: params.untilMs,\n },\n }) as Promise<EquityPoint[]>;\n }\n\n async riskRules(): Promise<TradingRiskRule> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n '/api/v1/trading/risk-rules'\n ) as Promise<TradingRiskRule>;\n }\n\n async subscribe(params: {\n accountId: string;\n sourceUsername: string;\n sourceFeed: string;\n playbookId: string;\n playbookVersion: string;\n executeLatest?: boolean;\n }): Promise<TradingSubscription> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/trading/subscribe', {\n body: params,\n }) as Promise<TradingSubscription>;\n }\n\n async unsubscribe(\n subscriptionId: string\n ): Promise<{ unsubscribedId: string }> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/trading/unsubscribe', {\n body: { subscriptionId },\n }) as Promise<{ unsubscribedId: string }>;\n }\n\n async execute(params: {\n accountId: string;\n signalJson: string;\n dryRun: boolean;\n sourceUsername?: string;\n sourceFeed?: string;\n }): Promise<ExecuteSignalResult> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/trading/execute', {\n body: params,\n }) as Promise<ExecuteSignalResult>;\n }\n\n async updateRiskRules(rules: TradingRiskRuleInput): Promise<TradingRiskRule> {\n this.client._requireAuth();\n return this.client._request('PUT', '/api/v1/trading/risk-rules', {\n body: rules,\n }) as Promise<TradingRiskRule>;\n }\n}\n","import { AlvaError } from './error.js';\nimport type { AlvaClientConfig } from './types.js';\nimport { FsResource } from './resources/fs.js';\nimport { RunResource } from './resources/run.js';\nimport { DeployResource } from './resources/deploy.js';\nimport { ReleaseResource } from './resources/release.js';\nimport { SecretsResource } from './resources/secrets.js';\nimport { SdkDocsResource } from './resources/sdkDocs.js';\nimport { CommentsResource } from './resources/comments.js';\nimport { RemixResource } from './resources/remix.js';\nimport { ScreenshotResource } from './resources/screenshot.js';\nimport { UserResource } from './resources/user.js';\nimport { TradingResource } from './resources/trading.js';\n\nconst DEFAULT_BASE_URL = 'https://api-llm.prd.alva.ai';\n\ninterface RequestOptions {\n query?: Record<string, unknown>;\n body?: unknown;\n /** Send raw body with application/octet-stream content type (for binary writes). */\n rawBody?: BodyInit;\n}\n\nexport class AlvaClient {\n readonly baseUrl: string;\n readonly token?: string;\n readonly apiKey?: string;\n\n private _fs?: FsResource;\n private _run?: RunResource;\n private _deploy?: DeployResource;\n private _release?: ReleaseResource;\n private _secrets?: SecretsResource;\n private _sdk?: SdkDocsResource;\n private _comments?: CommentsResource;\n private _remix?: RemixResource;\n private _screenshot?: ScreenshotResource;\n private _user?: UserResource;\n private _trading?: TradingResource;\n\n constructor(config: AlvaClientConfig) {\n this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n this.token = config.token;\n this.apiKey = config.apiKey;\n }\n\n get fs(): FsResource {\n return (this._fs ??= new FsResource(this));\n }\n get run(): RunResource {\n return (this._run ??= new RunResource(this));\n }\n get deploy(): DeployResource {\n return (this._deploy ??= new DeployResource(this));\n }\n get release(): ReleaseResource {\n return (this._release ??= new ReleaseResource(this));\n }\n get secrets(): SecretsResource {\n return (this._secrets ??= new SecretsResource(this));\n }\n get sdk(): SdkDocsResource {\n return (this._sdk ??= new SdkDocsResource(this));\n }\n get comments(): CommentsResource {\n return (this._comments ??= new CommentsResource(this));\n }\n get remix(): RemixResource {\n return (this._remix ??= new RemixResource(this));\n }\n get screenshot(): ScreenshotResource {\n return (this._screenshot ??= new ScreenshotResource(this));\n }\n get user(): UserResource {\n return (this._user ??= new UserResource(this));\n }\n get trading(): TradingResource {\n return (this._trading ??= new TradingResource(this));\n }\n\n _requireAuth(): void {\n if (!this.token && !this.apiKey) {\n throw new AlvaError(\n 'UNAUTHENTICATED',\n 'Authentication is required. Pass token or apiKey in the constructor.',\n 401\n );\n }\n }\n\n async _request(\n method: string,\n path: string,\n options?: RequestOptions\n ): Promise<unknown> {\n let url = `${this.baseUrl}${path}`;\n\n if (options?.query) {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(options.query)) {\n if (value !== undefined && value !== null) {\n params.set(key, String(value));\n }\n }\n const qs = params.toString();\n if (qs) {\n url += `?${qs}`;\n }\n }\n\n const headers: Record<string, string> = {};\n if (this.token) {\n headers.Authorization = `${this.token}`;\n } else if (this.apiKey) {\n headers['X-Alva-Api-Key'] = this.apiKey;\n }\n\n let fetchBody: BodyInit | undefined;\n if (options?.rawBody !== undefined) {\n headers['Content-Type'] = 'application/octet-stream';\n fetchBody = options.rawBody;\n } else if (options?.body !== undefined) {\n headers['Content-Type'] = 'application/json';\n fetchBody = JSON.stringify(options.body);\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method,\n headers,\n body: fetchBody,\n });\n } catch (err) {\n throw new AlvaError(\n 'NETWORK_ERROR',\n err instanceof Error ? err.message : 'Network request failed',\n 0\n );\n }\n\n if (!response.ok) {\n // Read body as text first to avoid double consumption\n const bodyText = await response.text().catch(() => '');\n const contentType = response.headers.get('content-type') ?? '';\n if (contentType.includes('application/json') && bodyText) {\n try {\n const data = JSON.parse(bodyText) as {\n error?: { code?: string; message?: string };\n };\n if (data.error) {\n throw new AlvaError(\n data.error.code ?? 'UNKNOWN',\n data.error.message ?? `HTTP ${response.status}`,\n response.status\n );\n }\n } catch (e) {\n if (e instanceof AlvaError) throw e;\n // JSON parse failed or no error envelope — fall through\n }\n }\n throw new AlvaError(\n 'UNKNOWN',\n `HTTP ${response.status}: ${bodyText.slice(0, 200)}`,\n response.status\n );\n }\n\n // Handle 204 No Content and empty responses\n if (response.status === 204) {\n return undefined;\n }\n\n const contentType = response.headers.get('content-type') ?? '';\n if (\n contentType.includes('application/octet-stream') ||\n contentType.includes('image/')\n ) {\n return response.arrayBuffer();\n }\n\n return response.json();\n }\n}\n","declare const __VERSION__: string;\n\n/** SDK version, injected at build time from package.json. */\nexport const VERSION: string =\n typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'dev';\n\nexport { AlvaClient } from './client.js';\nexport { AlvaError } from './error.js';\nexport type {\n AlvaClientConfig,\n FsReadParams,\n FsWriteParams,\n FsRawWriteParams,\n FsWriteResponse,\n FsStat,\n FsReaddirParams,\n FsEntry,\n FsReaddirResponse,\n FsMkdirParams,\n FsRemoveParams,\n FsRenameParams,\n FsCopyParams,\n FsSymlinkParams,\n FsReadlinkParams,\n FsChmodParams,\n FsGrantParams,\n FsRevokeParams,\n TradingAccount,\n AccountSubscription,\n TradingSubscription,\n TradingOrder,\n PortfolioAsset,\n TradingPortfolio,\n EquityPoint,\n RiskRuleEntry,\n TradingRiskRule,\n TradingRiskRuleInput,\n ExecuteSignalOrder,\n ExecuteSignalResult,\n} from './types.js';\n"],"mappings":"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","names":["contentType"]}
1
+ {"version":3,"sources":["../src/error.ts","../src/resources/fs.ts","../src/resources/run.ts","../src/resources/deploy.ts","../src/resources/release.ts","../src/resources/secrets.ts","../src/resources/sdkDocs.ts","../src/resources/comments.ts","../src/resources/remix.ts","../src/resources/screenshot.ts","../src/resources/user.ts","../src/resources/trading.ts","../src/client.ts","../src/index.ts"],"sourcesContent":["export class AlvaError extends Error {\n readonly code: string;\n readonly status: number;\n\n constructor(code: string, message: string, status: number) {\n super(message);\n this.name = 'AlvaError';\n this.code = code;\n this.status = status;\n }\n}\n\nexport class CliUsageError extends Error {\n readonly command?: string;\n\n constructor(message: string, command?: string) {\n super(message);\n this.name = 'CliUsageError';\n this.command = command;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n FsReadParams,\n FsWriteParams,\n FsRawWriteParams,\n FsWriteResponse,\n FsStat,\n FsReaddirParams,\n FsReaddirResponse,\n FsMkdirParams,\n FsRemoveParams,\n FsRenameParams,\n FsCopyParams,\n FsSymlinkParams,\n FsReadlinkParams,\n FsChmodParams,\n FsGrantParams,\n FsRevokeParams,\n} from '../types.js';\n\nexport class FsResource {\n constructor(private client: AlvaClient) {}\n\n /** Returns `ArrayBuffer` for binary files, or parsed JSON for time-series virtual paths. */\n async read(params: FsReadParams): Promise<ArrayBuffer | unknown> {\n return this.client._request('GET', '/api/v1/fs/read', {\n query: { path: params.path, offset: params.offset, size: params.size },\n });\n }\n\n /** Write file using JSON body (Mode 2). For text content. */\n async write(params: FsWriteParams): Promise<FsWriteResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/fs/write', {\n body: {\n path: params.path,\n data: params.data,\n mkdir_parents: params.mkdir_parents,\n },\n }) as Promise<FsWriteResponse>;\n }\n\n /** Write file using raw body (Mode 1). Supports binary data. Path and options are query params. */\n async rawWrite(params: FsRawWriteParams): Promise<FsWriteResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/fs/write', {\n query: {\n path: params.path,\n mkdir_parents: params.mkdir_parents,\n },\n rawBody: params.body,\n }) as Promise<FsWriteResponse>;\n }\n\n async stat(params: { path: string }): Promise<FsStat> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/fs/stat', {\n query: { path: params.path },\n }) as Promise<FsStat>;\n }\n\n async readdir(params: FsReaddirParams): Promise<FsReaddirResponse> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/fs/readdir', {\n query: { path: params.path, recursive: params.recursive },\n }) as Promise<FsReaddirResponse>;\n }\n\n async mkdir(params: FsMkdirParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/mkdir', {\n body: { path: params.path },\n });\n }\n\n async remove(params: FsRemoveParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('DELETE', '/api/v1/fs/remove', {\n query: { path: params.path, recursive: params.recursive },\n });\n }\n\n async rename(params: FsRenameParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/rename', {\n body: { old_path: params.old_path, new_path: params.new_path },\n });\n }\n\n async copy(params: FsCopyParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/copy', {\n body: { src_path: params.src_path, dst_path: params.dst_path },\n });\n }\n\n async symlink(params: FsSymlinkParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/symlink', {\n body: {\n target_path: params.target_path,\n link_path: params.link_path,\n },\n });\n }\n\n async readlink(params: FsReadlinkParams): Promise<{ target: string }> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/fs/readlink', {\n query: { path: params.path },\n }) as Promise<{ target: string }>;\n }\n\n async chmod(params: FsChmodParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/chmod', {\n body: { path: params.path, mode: params.mode },\n });\n }\n\n async grant(params: FsGrantParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/grant', {\n body: {\n path: params.path,\n subject: params.subject,\n permission: params.permission,\n },\n });\n }\n\n async revoke(params: FsRevokeParams): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/fs/revoke', {\n body: {\n path: params.path,\n subject: params.subject,\n permission: params.permission,\n },\n });\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { RunRequest, RunResponse } from '../types.js';\n\nexport class RunResource {\n constructor(private client: AlvaClient) {}\n\n async execute(params: RunRequest): Promise<RunResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/run', {\n body: {\n code: params.code,\n entry_path: params.entry_path,\n working_dir: params.working_dir,\n args: params.args,\n },\n }) as Promise<RunResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n CronjobCreateRequest,\n Cronjob,\n CronjobListParams,\n CronjobListResponse,\n CronjobUpdateRequest,\n CronjobRunsListParams,\n CronjobRunsListResponse,\n CronjobRunLogsResponse,\n} from '../types.js';\n\nexport class DeployResource {\n constructor(private client: AlvaClient) {}\n\n async create(params: CronjobCreateRequest): Promise<Cronjob> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/deploy/cronjob', {\n body: {\n name: params.name,\n path: params.path,\n cron_expression: params.cron_expression,\n args: params.args,\n push_notify: params.push_notify,\n },\n }) as Promise<Cronjob>;\n }\n\n async list(params?: CronjobListParams): Promise<CronjobListResponse> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/deploy/cronjobs', {\n query: { limit: params?.limit, cursor: params?.cursor },\n }) as Promise<CronjobListResponse>;\n }\n\n async get(params: { id: number }): Promise<Cronjob> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n `/api/v1/deploy/cronjob/${params.id}`\n ) as Promise<Cronjob>;\n }\n\n async update(params: CronjobUpdateRequest): Promise<Cronjob> {\n this.client._requireAuth();\n const { id, ...body } = params;\n return this.client._request('PATCH', `/api/v1/deploy/cronjob/${id}`, {\n body,\n }) as Promise<Cronjob>;\n }\n\n async delete(params: { id: number }): Promise<void> {\n this.client._requireAuth();\n await this.client._request('DELETE', `/api/v1/deploy/cronjob/${params.id}`);\n }\n\n async pause(params: { id: number }): Promise<void> {\n this.client._requireAuth();\n await this.client._request(\n 'POST',\n `/api/v1/deploy/cronjob/${params.id}/pause`\n );\n }\n\n async resume(params: { id: number }): Promise<void> {\n this.client._requireAuth();\n await this.client._request(\n 'POST',\n `/api/v1/deploy/cronjob/${params.id}/resume`\n );\n }\n\n async listRuns(\n params: CronjobRunsListParams\n ): Promise<CronjobRunsListResponse> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n `/api/v1/deploy/cronjob/${params.cronjob_id}/runs`,\n {\n query: { first: params.first, cursor: params.cursor },\n }\n ) as Promise<CronjobRunsListResponse>;\n }\n\n async getRunLogs(params: {\n cronjob_id: number;\n run_id: number;\n }): Promise<CronjobRunLogsResponse> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n `/api/v1/deploy/cronjob/${params.cronjob_id}/runs/${params.run_id}/logs`\n ) as Promise<CronjobRunLogsResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n FeedReleaseRequest,\n FeedReleaseResponse,\n PlaybookDraftRequest,\n PlaybookDraftResponse,\n PlaybookReleaseRequest,\n PlaybookReleaseResponse,\n} from '../types.js';\n\nexport class ReleaseResource {\n constructor(private client: AlvaClient) {}\n\n async feed(params: FeedReleaseRequest): Promise<FeedReleaseResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/release/feed', {\n body: {\n name: params.name,\n version: params.version,\n cronjob_id: params.cronjob_id,\n view_json: params.view_json,\n description: params.description,\n },\n }) as Promise<FeedReleaseResponse>;\n }\n\n async playbookDraft(\n params: PlaybookDraftRequest\n ): Promise<PlaybookDraftResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/draft/playbook', {\n body: {\n name: params.name,\n display_name: params.display_name,\n description: params.description,\n feeds: params.feeds,\n trading_symbols: params.trading_symbols,\n changelog: params.changelog,\n },\n }) as Promise<PlaybookDraftResponse>;\n }\n\n async playbook(\n params: PlaybookReleaseRequest\n ): Promise<PlaybookReleaseResponse> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/release/playbook', {\n body: {\n name: params.name,\n version: params.version,\n feeds: params.feeds,\n changelog: params.changelog,\n },\n }) as Promise<PlaybookReleaseResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { CreateSecretRequest, Secret, SecretMetadata } from '../types.js';\n\nexport class SecretsResource {\n constructor(private client: AlvaClient) {}\n\n async create(params: CreateSecretRequest): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/secrets', {\n body: { name: params.name, value: params.value },\n });\n }\n\n async list(): Promise<{ secrets: SecretMetadata[] }> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/secrets') as Promise<{\n secrets: SecretMetadata[];\n }>;\n }\n\n async get(params: { name: string }): Promise<Secret> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.name);\n return this.client._request(\n 'GET',\n `/api/v1/secrets/${encoded}`\n ) as Promise<Secret>;\n }\n\n async update(params: { name: string; value: string }): Promise<void> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.name);\n await this.client._request('PUT', `/api/v1/secrets/${encoded}`, {\n body: { value: params.value },\n });\n }\n\n async delete(params: { name: string }): Promise<void> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.name);\n await this.client._request('DELETE', `/api/v1/secrets/${encoded}`);\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n ModuleDoc,\n PartitionsResponse,\n PartitionSummaryResponse,\n} from '../types.js';\n\nexport class SdkDocsResource {\n constructor(private client: AlvaClient) {}\n\n async doc(params: { name: string }): Promise<ModuleDoc> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/sdk/doc', {\n query: { name: params.name },\n }) as Promise<ModuleDoc>;\n }\n\n async partitions(): Promise<PartitionsResponse> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n '/api/v1/sdk/partitions'\n ) as Promise<PartitionsResponse>;\n }\n\n async partitionSummary(params: {\n partition: string;\n }): Promise<PartitionSummaryResponse> {\n this.client._requireAuth();\n const encoded = encodeURIComponent(params.partition);\n return this.client._request(\n 'GET',\n `/api/v1/sdk/partitions/${encoded}/summary`\n ) as Promise<PartitionSummaryResponse>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { CreateCommentRequest, Comment } from '../types.js';\n\nexport class CommentsResource {\n constructor(private client: AlvaClient) {}\n\n async create(params: CreateCommentRequest): Promise<Comment> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/playbook/comment', {\n body: {\n username: params.username,\n name: params.name,\n content: params.content,\n parent_id: params.parent_id,\n },\n }) as Promise<Comment>;\n }\n\n async pin(params: { comment_id: number }): Promise<Comment> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/playbook/comment/pin', {\n body: { comment_id: params.comment_id },\n }) as Promise<Comment>;\n }\n\n async unpin(params: { comment_id: number }): Promise<Comment> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/playbook/comment/unpin', {\n body: { comment_id: params.comment_id },\n }) as Promise<Comment>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { RemixRequest } from '../types.js';\n\nexport class RemixResource {\n constructor(private client: AlvaClient) {}\n\n async save(params: RemixRequest): Promise<void> {\n this.client._requireAuth();\n await this.client._request('POST', '/api/v1/remix', {\n body: {\n child: params.child,\n parents: params.parents,\n },\n });\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { ScreenshotParams } from '../types.js';\n\nexport class ScreenshotResource {\n constructor(private client: AlvaClient) {}\n\n async capture(params: ScreenshotParams): Promise<ArrayBuffer> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/screenshot', {\n query: {\n url: params.url,\n selector: params.selector,\n xpath: params.xpath,\n },\n }) as Promise<ArrayBuffer>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type { UserProfile } from '../types.js';\n\nexport class UserResource {\n constructor(private client: AlvaClient) {}\n\n async me(): Promise<UserProfile> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/me') as Promise<UserProfile>;\n }\n}\n","import type { AlvaClient } from '../client.js';\nimport type {\n TradingAccount,\n TradingPortfolio,\n TradingOrder,\n TradingSubscription,\n EquityPoint,\n TradingRiskRule,\n TradingRiskRuleInput,\n ExecuteSignalResult,\n} from '../types.js';\n\nexport class TradingResource {\n constructor(private client: AlvaClient) {}\n\n async accounts(): Promise<TradingAccount[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/accounts') as Promise<\n TradingAccount[]\n >;\n }\n\n async portfolio(accountId: string): Promise<TradingPortfolio> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/portfolio', {\n query: { accountId },\n }) as Promise<TradingPortfolio>;\n }\n\n async orders(params: {\n accountId: string;\n source?: string;\n since?: number;\n limit?: number;\n }): Promise<TradingOrder[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/orders', {\n query: {\n accountId: params.accountId,\n source: params.source,\n since: params.since,\n limit: params.limit,\n },\n }) as Promise<TradingOrder[]>;\n }\n\n async subscriptions(accountId: string): Promise<TradingSubscription[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/subscriptions', {\n query: { accountId },\n }) as Promise<TradingSubscription[]>;\n }\n\n async equityHistory(params: {\n accountId: string;\n timeframe?: string;\n sinceMs?: number;\n untilMs?: number;\n }): Promise<EquityPoint[]> {\n this.client._requireAuth();\n return this.client._request('GET', '/api/v1/trading/equity-history', {\n query: {\n accountId: params.accountId,\n timeframe: params.timeframe,\n sinceMs: params.sinceMs,\n untilMs: params.untilMs,\n },\n }) as Promise<EquityPoint[]>;\n }\n\n async riskRules(): Promise<TradingRiskRule> {\n this.client._requireAuth();\n return this.client._request(\n 'GET',\n '/api/v1/trading/risk-rules'\n ) as Promise<TradingRiskRule>;\n }\n\n async subscribe(params: {\n accountId: string;\n sourceUsername: string;\n sourceFeed: string;\n playbookId: string;\n playbookVersion: string;\n executeLatest?: boolean;\n }): Promise<TradingSubscription> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/trading/subscribe', {\n body: params,\n }) as Promise<TradingSubscription>;\n }\n\n async unsubscribe(\n subscriptionId: string\n ): Promise<{ unsubscribedId: string }> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/trading/unsubscribe', {\n body: { subscriptionId },\n }) as Promise<{ unsubscribedId: string }>;\n }\n\n async execute(params: {\n accountId: string;\n signalJson: string;\n dryRun: boolean;\n sourceUsername?: string;\n sourceFeed?: string;\n }): Promise<ExecuteSignalResult> {\n this.client._requireAuth();\n return this.client._request('POST', '/api/v1/trading/execute', {\n body: params,\n }) as Promise<ExecuteSignalResult>;\n }\n\n async updateRiskRules(rules: TradingRiskRuleInput): Promise<TradingRiskRule> {\n this.client._requireAuth();\n return this.client._request('PUT', '/api/v1/trading/risk-rules', {\n body: rules,\n }) as Promise<TradingRiskRule>;\n }\n}\n","import { AlvaError } from './error.js';\nimport type { AlvaClientConfig } from './types.js';\nimport { FsResource } from './resources/fs.js';\nimport { RunResource } from './resources/run.js';\nimport { DeployResource } from './resources/deploy.js';\nimport { ReleaseResource } from './resources/release.js';\nimport { SecretsResource } from './resources/secrets.js';\nimport { SdkDocsResource } from './resources/sdkDocs.js';\nimport { CommentsResource } from './resources/comments.js';\nimport { RemixResource } from './resources/remix.js';\nimport { ScreenshotResource } from './resources/screenshot.js';\nimport { UserResource } from './resources/user.js';\nimport { TradingResource } from './resources/trading.js';\n\nconst DEFAULT_BASE_URL = 'https://api-llm.prd.alva.ai';\n\ninterface RequestOptions {\n query?: Record<string, unknown>;\n body?: unknown;\n /** Send raw body with application/octet-stream content type (for binary writes). */\n rawBody?: BodyInit;\n}\n\nexport class AlvaClient {\n readonly baseUrl: string;\n readonly token?: string;\n readonly apiKey?: string;\n\n private _fs?: FsResource;\n private _run?: RunResource;\n private _deploy?: DeployResource;\n private _release?: ReleaseResource;\n private _secrets?: SecretsResource;\n private _sdk?: SdkDocsResource;\n private _comments?: CommentsResource;\n private _remix?: RemixResource;\n private _screenshot?: ScreenshotResource;\n private _user?: UserResource;\n private _trading?: TradingResource;\n\n constructor(config: AlvaClientConfig) {\n this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n this.token = config.token;\n this.apiKey = config.apiKey;\n }\n\n get fs(): FsResource {\n return (this._fs ??= new FsResource(this));\n }\n get run(): RunResource {\n return (this._run ??= new RunResource(this));\n }\n get deploy(): DeployResource {\n return (this._deploy ??= new DeployResource(this));\n }\n get release(): ReleaseResource {\n return (this._release ??= new ReleaseResource(this));\n }\n get secrets(): SecretsResource {\n return (this._secrets ??= new SecretsResource(this));\n }\n get sdk(): SdkDocsResource {\n return (this._sdk ??= new SdkDocsResource(this));\n }\n get comments(): CommentsResource {\n return (this._comments ??= new CommentsResource(this));\n }\n get remix(): RemixResource {\n return (this._remix ??= new RemixResource(this));\n }\n get screenshot(): ScreenshotResource {\n return (this._screenshot ??= new ScreenshotResource(this));\n }\n get user(): UserResource {\n return (this._user ??= new UserResource(this));\n }\n get trading(): TradingResource {\n return (this._trading ??= new TradingResource(this));\n }\n\n _requireAuth(): void {\n if (!this.token && !this.apiKey) {\n throw new AlvaError(\n 'UNAUTHENTICATED',\n 'Authentication is required. Pass token or apiKey in the constructor.',\n 401\n );\n }\n }\n\n async _request(\n method: string,\n path: string,\n options?: RequestOptions\n ): Promise<unknown> {\n let url = `${this.baseUrl}${path}`;\n\n if (options?.query) {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(options.query)) {\n if (value !== undefined && value !== null) {\n params.set(key, String(value));\n }\n }\n const qs = params.toString();\n if (qs) {\n url += `?${qs}`;\n }\n }\n\n const headers: Record<string, string> = {};\n if (this.token) {\n headers.Authorization = `${this.token}`;\n } else if (this.apiKey) {\n headers['X-Alva-Api-Key'] = this.apiKey;\n }\n\n let fetchBody: BodyInit | undefined;\n if (options?.rawBody !== undefined) {\n headers['Content-Type'] = 'application/octet-stream';\n fetchBody = options.rawBody;\n } else if (options?.body !== undefined) {\n headers['Content-Type'] = 'application/json';\n fetchBody = JSON.stringify(options.body);\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method,\n headers,\n body: fetchBody,\n });\n } catch (err) {\n throw new AlvaError(\n 'NETWORK_ERROR',\n err instanceof Error ? err.message : 'Network request failed',\n 0\n );\n }\n\n if (!response.ok) {\n // Read body as text first to avoid double consumption\n const bodyText = await response.text().catch(() => '');\n const contentType = response.headers.get('content-type') ?? '';\n if (contentType.includes('application/json') && bodyText) {\n try {\n const data = JSON.parse(bodyText) as {\n error?: { code?: string; message?: string };\n };\n if (data.error) {\n throw new AlvaError(\n data.error.code ?? 'UNKNOWN',\n data.error.message ?? `HTTP ${response.status}`,\n response.status\n );\n }\n } catch (e) {\n if (e instanceof AlvaError) throw e;\n // JSON parse failed or no error envelope — fall through\n }\n }\n throw new AlvaError(\n 'UNKNOWN',\n `HTTP ${response.status}: ${bodyText.slice(0, 200)}`,\n response.status\n );\n }\n\n // Handle 204 No Content and empty responses\n if (response.status === 204) {\n return undefined;\n }\n\n const contentType = response.headers.get('content-type') ?? '';\n if (\n contentType.includes('application/octet-stream') ||\n contentType.includes('image/')\n ) {\n return response.arrayBuffer();\n }\n\n return response.json();\n }\n}\n","declare const __VERSION__: string;\n\n/** SDK version, injected at build time from package.json. */\nexport const VERSION: string =\n typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'dev';\n\nexport { AlvaClient } from './client.js';\nexport { AlvaError } from './error.js';\nexport type {\n AlvaClientConfig,\n FsReadParams,\n FsWriteParams,\n FsRawWriteParams,\n FsWriteResponse,\n FsStat,\n FsReaddirParams,\n FsEntry,\n FsReaddirResponse,\n FsMkdirParams,\n FsRemoveParams,\n FsRenameParams,\n FsCopyParams,\n FsSymlinkParams,\n FsReadlinkParams,\n FsChmodParams,\n FsGrantParams,\n FsRevokeParams,\n} from './types.js';\n"],"mappings":"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","names":["contentType"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alva-ai/toolkit",
3
- "version": "0.1.4",
3
+ "version": "0.2.0",
4
4
  "description": "Alva REST API SDK and CLI — interact with the Alva platform from Node.js, the browser, or the command line.",
5
5
  "type": "module",
6
6
  "exports": {