@alva-ai/toolkit 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -4
- package/dist/browser.global.js +1 -1
- package/dist/browser.global.js.map +1 -1
- package/dist/cli.js +58 -35
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +7 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -515,7 +515,7 @@ var TradingResource = class {
|
|
|
515
515
|
var DEFAULT_BASE_URL = "https://api-llm.prd.alva.ai";
|
|
516
516
|
var AlvaClient = class {
|
|
517
517
|
baseUrl;
|
|
518
|
-
|
|
518
|
+
viewer_token;
|
|
519
519
|
apiKey;
|
|
520
520
|
_fs;
|
|
521
521
|
_run;
|
|
@@ -530,7 +530,7 @@ var AlvaClient = class {
|
|
|
530
530
|
_trading;
|
|
531
531
|
constructor(config) {
|
|
532
532
|
this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;
|
|
533
|
-
this.
|
|
533
|
+
this.viewer_token = config.viewer_token;
|
|
534
534
|
this.apiKey = config.apiKey;
|
|
535
535
|
}
|
|
536
536
|
get fs() {
|
|
@@ -567,10 +567,10 @@ var AlvaClient = class {
|
|
|
567
567
|
return this._trading ??= new TradingResource(this);
|
|
568
568
|
}
|
|
569
569
|
_requireAuth() {
|
|
570
|
-
if (!this.
|
|
570
|
+
if (!this.viewer_token && !this.apiKey) {
|
|
571
571
|
throw new AlvaError(
|
|
572
572
|
"UNAUTHENTICATED",
|
|
573
|
-
"Authentication is required. Pass
|
|
573
|
+
"Authentication is required. Pass viewer_token or apiKey in the constructor.",
|
|
574
574
|
401
|
|
575
575
|
);
|
|
576
576
|
}
|
|
@@ -590,8 +590,8 @@ var AlvaClient = class {
|
|
|
590
590
|
}
|
|
591
591
|
}
|
|
592
592
|
const headers = {};
|
|
593
|
-
if (this.
|
|
594
|
-
headers
|
|
593
|
+
if (this.viewer_token) {
|
|
594
|
+
headers["x-Playbook-Viewer"] = this.viewer_token;
|
|
595
595
|
} else if (this.apiKey) {
|
|
596
596
|
headers["X-Alva-Api-Key"] = this.apiKey;
|
|
597
597
|
}
|
|
@@ -652,7 +652,7 @@ var AlvaClient = class {
|
|
|
652
652
|
};
|
|
653
653
|
|
|
654
654
|
// src/index.ts
|
|
655
|
-
var VERSION = true ? "0.2.
|
|
655
|
+
var VERSION = true ? "0.2.1" : "dev";
|
|
656
656
|
// Annotate the CommonJS export names for ESM import in node:
|
|
657
657
|
0 && (module.exports = {
|
|
658
658
|
AlvaClient,
|
package/dist/index.cjs.map
CHANGED
|
@@ -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} 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"]}
|
|
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 viewer_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.viewer_token = config.viewer_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.viewer_token && !this.apiKey) {\n throw new AlvaError(\n 'UNAUTHENTICATED',\n 'Authentication is required. Pass viewer_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.viewer_token) {\n headers['x-Playbook-Viewer'] = this.viewer_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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
interface AlvaClientConfig {
|
|
2
|
-
|
|
2
|
+
viewer_token?: string;
|
|
3
3
|
apiKey?: string;
|
|
4
4
|
baseUrl?: string;
|
|
5
5
|
}
|
|
@@ -534,7 +534,7 @@ interface RequestOptions {
|
|
|
534
534
|
}
|
|
535
535
|
declare class AlvaClient {
|
|
536
536
|
readonly baseUrl: string;
|
|
537
|
-
readonly
|
|
537
|
+
readonly viewer_token?: string;
|
|
538
538
|
readonly apiKey?: string;
|
|
539
539
|
private _fs?;
|
|
540
540
|
private _run?;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
interface AlvaClientConfig {
|
|
2
|
-
|
|
2
|
+
viewer_token?: string;
|
|
3
3
|
apiKey?: string;
|
|
4
4
|
baseUrl?: string;
|
|
5
5
|
}
|
|
@@ -534,7 +534,7 @@ interface RequestOptions {
|
|
|
534
534
|
}
|
|
535
535
|
declare class AlvaClient {
|
|
536
536
|
readonly baseUrl: string;
|
|
537
|
-
readonly
|
|
537
|
+
readonly viewer_token?: string;
|
|
538
538
|
readonly apiKey?: string;
|
|
539
539
|
private _fs?;
|
|
540
540
|
private _run?;
|
package/dist/index.js
CHANGED
|
@@ -487,7 +487,7 @@ var TradingResource = class {
|
|
|
487
487
|
var DEFAULT_BASE_URL = "https://api-llm.prd.alva.ai";
|
|
488
488
|
var AlvaClient = class {
|
|
489
489
|
baseUrl;
|
|
490
|
-
|
|
490
|
+
viewer_token;
|
|
491
491
|
apiKey;
|
|
492
492
|
_fs;
|
|
493
493
|
_run;
|
|
@@ -502,7 +502,7 @@ var AlvaClient = class {
|
|
|
502
502
|
_trading;
|
|
503
503
|
constructor(config) {
|
|
504
504
|
this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;
|
|
505
|
-
this.
|
|
505
|
+
this.viewer_token = config.viewer_token;
|
|
506
506
|
this.apiKey = config.apiKey;
|
|
507
507
|
}
|
|
508
508
|
get fs() {
|
|
@@ -539,10 +539,10 @@ var AlvaClient = class {
|
|
|
539
539
|
return this._trading ??= new TradingResource(this);
|
|
540
540
|
}
|
|
541
541
|
_requireAuth() {
|
|
542
|
-
if (!this.
|
|
542
|
+
if (!this.viewer_token && !this.apiKey) {
|
|
543
543
|
throw new AlvaError(
|
|
544
544
|
"UNAUTHENTICATED",
|
|
545
|
-
"Authentication is required. Pass
|
|
545
|
+
"Authentication is required. Pass viewer_token or apiKey in the constructor.",
|
|
546
546
|
401
|
|
547
547
|
);
|
|
548
548
|
}
|
|
@@ -562,8 +562,8 @@ var AlvaClient = class {
|
|
|
562
562
|
}
|
|
563
563
|
}
|
|
564
564
|
const headers = {};
|
|
565
|
-
if (this.
|
|
566
|
-
headers
|
|
565
|
+
if (this.viewer_token) {
|
|
566
|
+
headers["x-Playbook-Viewer"] = this.viewer_token;
|
|
567
567
|
} else if (this.apiKey) {
|
|
568
568
|
headers["X-Alva-Api-Key"] = this.apiKey;
|
|
569
569
|
}
|
|
@@ -624,7 +624,7 @@ var AlvaClient = class {
|
|
|
624
624
|
};
|
|
625
625
|
|
|
626
626
|
// src/index.ts
|
|
627
|
-
var VERSION = true ? "0.2.
|
|
627
|
+
var VERSION = true ? "0.2.1" : "dev";
|
|
628
628
|
export {
|
|
629
629
|
AlvaClient,
|
|
630
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\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"]}
|
|
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 viewer_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.viewer_token = config.viewer_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.viewer_token && !this.apiKey) {\n throw new AlvaError(\n 'UNAUTHENTICATED',\n 'Authentication is required. Pass viewer_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.viewer_token) {\n headers['x-Playbook-Viewer'] = this.viewer_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"]}
|