@cdot65/prisma-airs-sdk 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # prisma-airs-sdk
2
2
 
3
+ [![CI](https://github.com/cdot65/prisma-airs-sdk/actions/workflows/ci.yml/badge.svg)](https://github.com/cdot65/prisma-airs-sdk/actions/workflows/ci.yml)
4
+ [![Tests](https://github.com/cdot65/prisma-airs-sdk/actions/workflows/test.yml/badge.svg)](https://github.com/cdot65/prisma-airs-sdk/actions/workflows/test.yml)
5
+ [![npm version](https://img.shields.io/npm/v/@cdot65/prisma-airs-sdk)](https://www.npmjs.com/package/@cdot65/prisma-airs-sdk)
6
+ [![npm downloads](https://img.shields.io/npm/dm/@cdot65/prisma-airs-sdk)](https://www.npmjs.com/package/@cdot65/prisma-airs-sdk)
7
+ [![Coverage](https://img.shields.io/badge/coverage-99%25-brightgreen)](https://github.com/cdot65/prisma-airs-sdk)
8
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178c6)](https://www.typescriptlang.org/)
9
+ [![Node 18+](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org/)
10
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
11
+
3
12
  TypeScript SDK for Palo Alto Networks **Prisma AIRS** — covering the full lifecycle from configuration management to operational scanning across all three service domains: **AI Runtime Security**, **AI Red Teaming**, and **Model Security**.
4
13
 
5
14
  ## Installation
package/dist/index.cjs CHANGED
@@ -42,6 +42,7 @@ __export(index_exports, {
42
42
  AuthType: () => AuthType,
43
43
  BEARER: () => BEARER,
44
44
  BaseResponseSchema: () => BaseResponseSchema,
45
+ BedrockAccessConnectionParamsSchema: () => BedrockAccessConnectionParamsSchema,
45
46
  BrandSubCategory: () => BrandSubCategory,
46
47
  Category: () => Category,
47
48
  CategoryModelSchema: () => CategoryModelSchema,
@@ -49,6 +50,7 @@ __export(index_exports, {
49
50
  ComplianceReportSchema: () => ComplianceReportSchema,
50
51
  ComplianceSubCategory: () => ComplianceSubCategory,
51
52
  ComplianceTechniqueSchema: () => ComplianceTechniqueSchema,
53
+ ConnectionParamsSchema: () => ConnectionParamsSchema,
52
54
  Content: () => Content,
53
55
  CountByNameSchema: () => CountByNameSchema,
54
56
  CountedQuotaEnum: () => CountedQuotaEnum,
@@ -84,6 +86,7 @@ __export(index_exports, {
84
86
  DSDetailResultSchema: () => DSDetailResultSchema,
85
87
  DSResultMetadataSchema: () => DSResultMetadataSchema,
86
88
  DashboardOverviewResponseSchema: () => DashboardOverviewResponseSchema,
89
+ DatabricksConnectionParamsSchema: () => DatabricksConnectionParamsSchema,
87
90
  DateRangeFilter: () => DateRangeFilter,
88
91
  DeleteProfileConflictSchema: () => DeleteProfileConflictSchema,
89
92
  DeleteProfileResponseSchema: () => DeleteProfileResponseSchema,
@@ -117,6 +120,7 @@ __export(index_exports, {
117
120
  HEADER_AUTH_TOKEN: () => HEADER_AUTH_TOKEN,
118
121
  HTTPValidationErrorSchema: () => HTTPValidationErrorSchema,
119
122
  HTTP_FORCE_RETRY_STATUS_CODES: () => HTTP_FORCE_RETRY_STATUS_CODES,
123
+ HuggingfaceConnectionParamsSchema: () => HuggingfaceConnectionParamsSchema,
120
124
  IODetectedSchema: () => IODetectedSchema,
121
125
  JobAbortResponseSchema: () => JobAbortResponseSchema,
122
126
  JobCreateRequestSchema: () => JobCreateRequestSchema,
@@ -188,7 +192,10 @@ __export(index_exports, {
188
192
  ModelSecurityRuleResponseSchema: () => ModelSecurityRuleResponseSchema,
189
193
  ModelSecurityRulesClient: () => ModelSecurityRulesClient,
190
194
  ModelSecurityScansClient: () => ModelSecurityScansClient,
195
+ MultiTurnStatefulConfigSchema: () => MultiTurnStatefulConfigSchema,
196
+ MultiTurnStatelessConfigSchema: () => MultiTurnStatelessConfigSchema,
191
197
  OAuthClient: () => OAuthClient,
198
+ OpenAIConnectionParamsSchema: () => OpenAIConnectionParamsSchema,
192
199
  PAYLOAD_HASH: () => PAYLOAD_HASH,
193
200
  PolicySchema: () => PolicySchema,
194
201
  PolicyType: () => PolicyType,
@@ -246,6 +253,7 @@ __export(index_exports, {
246
253
  ResponseDetectedSchema: () => ResponseDetectedSchema,
247
254
  ResponseDetectionDetailsSchema: () => ResponseDetectionDetailsSchema,
248
255
  ResponseMode: () => ResponseMode,
256
+ RestConnectionParamsSchema: () => RestConnectionParamsSchema,
249
257
  RiskLevelSchema: () => RiskLevelSchema,
250
258
  RiskRating: () => RiskRating,
251
259
  RuleConfigurationSchema: () => RuleConfigurationSchema,
@@ -302,6 +310,7 @@ __export(index_exports, {
302
310
  StreamIterationDataSchema: () => StreamIterationDataSchema,
303
311
  StreamListResponseSchema: () => StreamListResponseSchema,
304
312
  StreamType: () => StreamType,
313
+ StreamingConnectionParamsSchema: () => StreamingConnectionParamsSchema,
305
314
  SubCategoryModelSchema: () => SubCategoryModelSchema,
306
315
  SubCategoryStatsSchema: () => SubCategoryStatsSchema,
307
316
  TargetAdditionalContextSchema: () => TargetAdditionalContextSchema,
@@ -362,7 +371,7 @@ var MAX_NUMBER_OF_BATCH_SCAN_OBJECTS = 5;
362
371
  var MAX_CONNECTION_POOL_SIZE = 100;
363
372
  var MAX_NUMBER_OF_RETRIES = 5;
364
373
  var HTTP_FORCE_RETRY_STATUS_CODES = [500, 502, 503, 504];
365
- var SDK_VERSION = "0.5.1";
374
+ var SDK_VERSION = "0.6.0";
366
375
  var USER_AGENT = `PAN-AIRS/${SDK_VERSION}-typescript-sdk`;
367
376
  var DEFAULT_MGMT_ENDPOINT = "https://api.sase.paloaltonetworks.com/aisec";
368
377
  var DEFAULT_TOKEN_ENDPOINT = "https://auth.apps.paloaltonetworks.com/oauth2/access_token";
@@ -1820,33 +1829,83 @@ var ValidationErrorSchema = import_zod18.z.object({
1820
1829
  });
1821
1830
  var HTTPValidationErrorSchema = import_zod18.z.object({ detail: import_zod18.z.array(ValidationErrorSchema).optional() }).passthrough();
1822
1831
  var TargetBackgroundSchema = import_zod18.z.object({
1823
- industry: import_zod18.z.unknown().optional(),
1824
- use_case: import_zod18.z.unknown().optional(),
1825
- competitors: import_zod18.z.unknown().optional()
1832
+ industry: import_zod18.z.string().nullable().optional(),
1833
+ use_case: import_zod18.z.string().nullable().optional(),
1834
+ competitors: import_zod18.z.array(import_zod18.z.string()).nullable().optional()
1826
1835
  }).passthrough();
1827
1836
  var TargetAdditionalContextSchema = import_zod18.z.object({
1828
- base_model: import_zod18.z.unknown().optional(),
1829
- core_architecture: import_zod18.z.unknown().optional(),
1830
- system_prompt: import_zod18.z.unknown().optional(),
1831
- languages_supported: import_zod18.z.unknown().optional(),
1832
- banned_keywords: import_zod18.z.unknown().optional(),
1833
- tools_accessible: import_zod18.z.unknown().optional()
1837
+ base_model: import_zod18.z.string().nullable().optional(),
1838
+ core_architecture: import_zod18.z.string().nullable().optional(),
1839
+ system_prompt: import_zod18.z.string().nullable().optional(),
1840
+ languages_supported: import_zod18.z.array(import_zod18.z.string()).nullable().optional(),
1841
+ banned_keywords: import_zod18.z.array(import_zod18.z.string()).nullable().optional(),
1842
+ tools_accessible: import_zod18.z.array(import_zod18.z.string()).nullable().optional()
1834
1843
  }).passthrough();
1835
1844
  var TargetMetadataSchema = import_zod18.z.object({
1836
1845
  multi_turn: import_zod18.z.boolean().optional(),
1837
- multi_turn_error_message: import_zod18.z.unknown().optional(),
1838
- rate_limit: import_zod18.z.unknown().optional(),
1846
+ multi_turn_error_message: import_zod18.z.string().nullable().optional(),
1847
+ rate_limit: import_zod18.z.number().int().nullable().optional(),
1839
1848
  rate_limit_enabled: import_zod18.z.boolean().optional(),
1840
- rate_limit_error_code: import_zod18.z.unknown().optional(),
1841
- rate_limit_error_json: import_zod18.z.unknown().optional(),
1842
- rate_limit_error_message: import_zod18.z.unknown().optional(),
1849
+ rate_limit_error_code: import_zod18.z.number().int().nullable().optional(),
1850
+ rate_limit_error_json: import_zod18.z.record(import_zod18.z.unknown()).nullable().optional(),
1851
+ rate_limit_error_message: import_zod18.z.string().nullable().optional(),
1843
1852
  content_filter_enabled: import_zod18.z.boolean().optional(),
1844
- content_filter_error_code: import_zod18.z.unknown().optional(),
1845
- content_filter_error_json: import_zod18.z.unknown().optional(),
1846
- content_filter_error_message: import_zod18.z.unknown().optional(),
1853
+ content_filter_error_code: import_zod18.z.number().int().nullable().optional(),
1854
+ content_filter_error_json: import_zod18.z.record(import_zod18.z.unknown()).nullable().optional(),
1855
+ content_filter_error_message: import_zod18.z.string().nullable().optional(),
1847
1856
  probe_message: import_zod18.z.string().optional(),
1848
1857
  request_timeout: import_zod18.z.number().optional()
1849
1858
  }).passthrough();
1859
+ var MultiTurnStatefulConfigSchema = import_zod18.z.object({
1860
+ type: import_zod18.z.string().default("stateful"),
1861
+ response_id_field: import_zod18.z.string(),
1862
+ request_id_field: import_zod18.z.string()
1863
+ }).passthrough();
1864
+ var MultiTurnStatelessConfigSchema = import_zod18.z.object({
1865
+ type: import_zod18.z.string().default("stateless"),
1866
+ assistant_role: import_zod18.z.string().nullable().optional()
1867
+ }).passthrough();
1868
+ var OpenAIConnectionParamsSchema = import_zod18.z.object({
1869
+ api_key: import_zod18.z.string(),
1870
+ model_name: import_zod18.z.string()
1871
+ }).passthrough();
1872
+ var HuggingfaceConnectionParamsSchema = import_zod18.z.object({
1873
+ api_key: import_zod18.z.string(),
1874
+ model_name: import_zod18.z.string()
1875
+ }).passthrough();
1876
+ var DatabricksConnectionParamsSchema = import_zod18.z.object({
1877
+ auth_type: import_zod18.z.string(),
1878
+ workspace_url: import_zod18.z.string(),
1879
+ model_name: import_zod18.z.string(),
1880
+ access_token: import_zod18.z.string().nullable().optional(),
1881
+ client_id: import_zod18.z.string().nullable().optional(),
1882
+ secret: import_zod18.z.string().nullable().optional()
1883
+ }).passthrough();
1884
+ var BedrockAccessConnectionParamsSchema = import_zod18.z.object({
1885
+ access_id: import_zod18.z.string(),
1886
+ access_secret: import_zod18.z.string(),
1887
+ region: import_zod18.z.string(),
1888
+ model_id: import_zod18.z.string(),
1889
+ session_token: import_zod18.z.string().nullable().optional()
1890
+ }).passthrough();
1891
+ var RestConnectionParamsSchema = import_zod18.z.object({
1892
+ api_endpoint: import_zod18.z.string().nullable().optional(),
1893
+ request_headers: import_zod18.z.record(import_zod18.z.unknown()).nullable().optional(),
1894
+ request_json: import_zod18.z.record(import_zod18.z.unknown()).nullable().optional(),
1895
+ response_json: import_zod18.z.record(import_zod18.z.unknown()).nullable().optional(),
1896
+ response_key: import_zod18.z.string().nullable().optional(),
1897
+ target_connection_config: import_zod18.z.unknown().nullable().optional(),
1898
+ curl: import_zod18.z.string().nullable().optional(),
1899
+ multi_turn_config: import_zod18.z.unknown().nullable().optional()
1900
+ }).passthrough();
1901
+ var StreamingConnectionParamsSchema = RestConnectionParamsSchema.extend({
1902
+ response_stop_key: import_zod18.z.string(),
1903
+ response_stop_value: import_zod18.z.string()
1904
+ }).passthrough();
1905
+ var ConnectionParamsSchema = import_zod18.z.union([
1906
+ StreamingConnectionParamsSchema,
1907
+ RestConnectionParamsSchema
1908
+ ]);
1850
1909
  var TargetJobRequestSchema = import_zod18.z.object({
1851
1910
  uuid: import_zod18.z.string(),
1852
1911
  version: import_zod18.z.number().int().nullable().optional()
@@ -2572,9 +2631,9 @@ var CustomPromptSetVersionInfoSchema = import_zod18.z.object({
2572
2631
  uuid: import_zod18.z.string(),
2573
2632
  status: import_zod18.z.string(),
2574
2633
  is_latest: import_zod18.z.boolean(),
2575
- version: import_zod18.z.unknown().optional(),
2576
- stats: import_zod18.z.unknown().optional(),
2577
- snapshot_created_at: import_zod18.z.unknown().optional()
2634
+ version: import_zod18.z.string().nullable().optional(),
2635
+ stats: PromptSetStatsSchema.nullable().optional(),
2636
+ snapshot_created_at: import_zod18.z.string().nullable().optional()
2578
2637
  }).passthrough();
2579
2638
  var CustomPromptCreateRequestSchema = import_zod18.z.object({
2580
2639
  prompt: import_zod18.z.string(),
@@ -4178,12 +4237,15 @@ var RedTeamTargetsClient = class {
4178
4237
  this.numRetries = opts.numRetries;
4179
4238
  }
4180
4239
  /** Create a new target. */
4181
- async create(request) {
4240
+ async create(request, opts) {
4241
+ const params = {};
4242
+ if (opts?.validate !== void 0) params.validate = String(opts.validate);
4182
4243
  const res = await managementHttpRequest({
4183
4244
  method: "POST",
4184
4245
  baseUrl: this.baseUrl,
4185
4246
  path: RED_TEAM_TARGET_PATH,
4186
4247
  body: request,
4248
+ params: Object.keys(params).length > 0 ? params : void 0,
4187
4249
  oauthClient: this.oauthClient,
4188
4250
  numRetries: this.numRetries
4189
4251
  });
@@ -4223,18 +4285,21 @@ var RedTeamTargetsClient = class {
4223
4285
  return res.data;
4224
4286
  }
4225
4287
  /** Update a target. */
4226
- async update(uuid, request) {
4288
+ async update(uuid, request, opts) {
4227
4289
  if (!isValidUuid(uuid)) {
4228
4290
  throw new AISecSDKException(
4229
4291
  `Invalid target uuid: ${uuid}`,
4230
4292
  "AISEC_USER_REQUEST_PAYLOAD_ERROR" /* USER_REQUEST_PAYLOAD_ERROR */
4231
4293
  );
4232
4294
  }
4295
+ const params = {};
4296
+ if (opts?.validate !== void 0) params.validate = String(opts.validate);
4233
4297
  const res = await managementHttpRequest({
4234
4298
  method: "PUT",
4235
4299
  baseUrl: this.baseUrl,
4236
4300
  path: `${RED_TEAM_TARGET_PATH}/${uuid}`,
4237
4301
  body: request,
4302
+ params: Object.keys(params).length > 0 ? params : void 0,
4238
4303
  oauthClient: this.oauthClient,
4239
4304
  numRetries: this.numRetries
4240
4305
  });
@@ -4445,6 +4510,33 @@ var RedTeamCustomAttacksClient = class {
4445
4510
  });
4446
4511
  return res.data;
4447
4512
  }
4513
+ /** Upload a CSV file of custom prompts for a prompt set. */
4514
+ async uploadPromptsCsv(promptSetUuid, file) {
4515
+ validateUuid(promptSetUuid, "prompt set uuid");
4516
+ const token = await this.oauthClient.getToken();
4517
+ const url = new URL(
4518
+ `${this.baseUrl.replace(/\/+$/, "")}${RED_TEAM_CUSTOM_ATTACK_PATH}/upload-custom-prompts-csv`
4519
+ );
4520
+ url.searchParams.set("prompt_set_uuid", promptSetUuid);
4521
+ const formData = new FormData();
4522
+ formData.append("file", file);
4523
+ const response = await fetch(url.toString(), {
4524
+ method: "POST",
4525
+ headers: {
4526
+ Authorization: `Bearer ${token}`,
4527
+ "User-Agent": USER_AGENT
4528
+ },
4529
+ body: formData
4530
+ });
4531
+ const text = await response.text();
4532
+ if (!response.ok) {
4533
+ throw new AISecSDKException(
4534
+ `Upload failed (${response.status}): ${text}`,
4535
+ "AISEC_SERVER_SIDE_ERROR" /* SERVER_SIDE_ERROR */
4536
+ );
4537
+ }
4538
+ return text ? JSON.parse(text) : { message: "ok", status: 201 };
4539
+ }
4448
4540
  // -----------------------------------------------------------------------
4449
4541
  // Prompt operations
4450
4542
  // -----------------------------------------------------------------------
@@ -4794,6 +4886,7 @@ var RedTeamClient = class {
4794
4886
  AuthType,
4795
4887
  BEARER,
4796
4888
  BaseResponseSchema,
4889
+ BedrockAccessConnectionParamsSchema,
4797
4890
  BrandSubCategory,
4798
4891
  Category,
4799
4892
  CategoryModelSchema,
@@ -4801,6 +4894,7 @@ var RedTeamClient = class {
4801
4894
  ComplianceReportSchema,
4802
4895
  ComplianceSubCategory,
4803
4896
  ComplianceTechniqueSchema,
4897
+ ConnectionParamsSchema,
4804
4898
  Content,
4805
4899
  CountByNameSchema,
4806
4900
  CountedQuotaEnum,
@@ -4836,6 +4930,7 @@ var RedTeamClient = class {
4836
4930
  DSDetailResultSchema,
4837
4931
  DSResultMetadataSchema,
4838
4932
  DashboardOverviewResponseSchema,
4933
+ DatabricksConnectionParamsSchema,
4839
4934
  DateRangeFilter,
4840
4935
  DeleteProfileConflictSchema,
4841
4936
  DeleteProfileResponseSchema,
@@ -4869,6 +4964,7 @@ var RedTeamClient = class {
4869
4964
  HEADER_AUTH_TOKEN,
4870
4965
  HTTPValidationErrorSchema,
4871
4966
  HTTP_FORCE_RETRY_STATUS_CODES,
4967
+ HuggingfaceConnectionParamsSchema,
4872
4968
  IODetectedSchema,
4873
4969
  JobAbortResponseSchema,
4874
4970
  JobCreateRequestSchema,
@@ -4940,7 +5036,10 @@ var RedTeamClient = class {
4940
5036
  ModelSecurityRuleResponseSchema,
4941
5037
  ModelSecurityRulesClient,
4942
5038
  ModelSecurityScansClient,
5039
+ MultiTurnStatefulConfigSchema,
5040
+ MultiTurnStatelessConfigSchema,
4943
5041
  OAuthClient,
5042
+ OpenAIConnectionParamsSchema,
4944
5043
  PAYLOAD_HASH,
4945
5044
  PolicySchema,
4946
5045
  PolicyType,
@@ -4998,6 +5097,7 @@ var RedTeamClient = class {
4998
5097
  ResponseDetectedSchema,
4999
5098
  ResponseDetectionDetailsSchema,
5000
5099
  ResponseMode,
5100
+ RestConnectionParamsSchema,
5001
5101
  RiskLevelSchema,
5002
5102
  RiskRating,
5003
5103
  RuleConfigurationSchema,
@@ -5054,6 +5154,7 @@ var RedTeamClient = class {
5054
5154
  StreamIterationDataSchema,
5055
5155
  StreamListResponseSchema,
5056
5156
  StreamType,
5157
+ StreamingConnectionParamsSchema,
5057
5158
  SubCategoryModelSchema,
5058
5159
  SubCategoryStatsSchema,
5059
5160
  TargetAdditionalContextSchema,