From d2d4e36b995cc84e8a3a7c64eb614011df399c5e Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
 <142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 24 Jul 2024 20:13:52 +0000
Subject: [PATCH] refactor: extract model out to a named type and rename
 partialjson (#477)

---
 .stats.yml                              |  2 +-
 api.md                                  |  3 +-
 src/index.ts                            |  3 +-
 src/resources/completions.ts            | 14 ++++----
 src/resources/index.ts                  |  3 +-
 src/resources/messages.ts               | 43 +++++++++++++++----------
 tests/api-resources/completions.test.ts |  4 +--
 7 files changed, 43 insertions(+), 29 deletions(-)

diff --git a/.stats.yml b/.stats.yml
index 4f03232f..ff2805b6 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,2 +1,2 @@
 configured_endpoints: 2
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/anthropic-e38cd52aed438cef6e0a25eeeab8ff6000583c3cf152a10f0c3610ceb3da7b4e.yml
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/anthropic-5903ec2fd4efd7f261908bc4ec8ecd6b19cb9efa79637ad273583f1b763f80fd.yml
diff --git a/api.md b/api.md
index 7c732d1d..c636b226 100644
--- a/api.md
+++ b/api.md
@@ -9,7 +9,7 @@ Types:
 - <code><a href="./src/resources/messages.ts">ContentBlockStartEvent</a></code>
 - <code><a href="./src/resources/messages.ts">ContentBlockStopEvent</a></code>
 - <code><a href="./src/resources/messages.ts">ImageBlockParam</a></code>
-- <code><a href="./src/resources/messages.ts">InputJsonDelta</a></code>
+- <code><a href="./src/resources/messages.ts">InputJSONDelta</a></code>
 - <code><a href="./src/resources/messages.ts">Message</a></code>
 - <code><a href="./src/resources/messages.ts">MessageDeltaEvent</a></code>
 - <code><a href="./src/resources/messages.ts">MessageDeltaUsage</a></code>
@@ -17,6 +17,7 @@ Types:
 - <code><a href="./src/resources/messages.ts">MessageStartEvent</a></code>
 - <code><a href="./src/resources/messages.ts">MessageStopEvent</a></code>
 - <code><a href="./src/resources/messages.ts">MessageStreamEvent</a></code>
+- <code><a href="./src/resources/messages.ts">Model</a></code>
 - <code><a href="./src/resources/messages.ts">RawContentBlockDeltaEvent</a></code>
 - <code><a href="./src/resources/messages.ts">RawContentBlockStartEvent</a></code>
 - <code><a href="./src/resources/messages.ts">RawContentBlockStopEvent</a></code>
diff --git a/src/index.ts b/src/index.ts
index 7d1072d2..e2ce21c3 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -250,7 +250,7 @@ export namespace Anthropic {
   export import ContentBlockStartEvent = API.ContentBlockStartEvent;
   export import ContentBlockStopEvent = API.ContentBlockStopEvent;
   export import ImageBlockParam = API.ImageBlockParam;
-  export import InputJsonDelta = API.InputJsonDelta;
+  export import InputJSONDelta = API.InputJSONDelta;
   export import Message = API.Message;
   export import MessageDeltaEvent = API.MessageDeltaEvent;
   export import MessageDeltaUsage = API.MessageDeltaUsage;
@@ -258,6 +258,7 @@ export namespace Anthropic {
   export import MessageStartEvent = API.MessageStartEvent;
   export import MessageStopEvent = API.MessageStopEvent;
   export import MessageStreamEvent = API.MessageStreamEvent;
+  export import Model = API.Model;
   export import RawContentBlockDeltaEvent = API.RawContentBlockDeltaEvent;
   export import RawContentBlockStartEvent = API.RawContentBlockStartEvent;
   export import RawContentBlockStopEvent = API.RawContentBlockStopEvent;
diff --git a/src/resources/completions.ts b/src/resources/completions.ts
index 0ecb1d44..fe9c2c0b 100644
--- a/src/resources/completions.ts
+++ b/src/resources/completions.ts
@@ -4,6 +4,7 @@ import { APIResource } from '../resource';
 import { APIPromise } from '../core';
 import * as Core from '../core';
 import * as CompletionsAPI from './completions';
+import * as MessagesAPI from './messages';
 import { Stream } from '../streaming';
 
 export class Completions extends APIResource {
@@ -53,9 +54,11 @@ export interface Completion {
   completion: string;
 
   /**
-   * The model that handled the request.
+   * The model that will complete your prompt.\n\nSee
+   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional
+   * details and options.
    */
-  model: string;
+  model: MessagesAPI.Model;
 
   /**
    * The reason that we stopped.
@@ -88,12 +91,11 @@ export interface CompletionCreateParamsBase {
   max_tokens_to_sample: number;
 
   /**
-   * The model that will complete your prompt.
-   *
-   * See [models](https://docs.anthropic.com/en/docs/models-overview) for additional
+   * The model that will complete your prompt.\n\nSee
+   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional
    * details and options.
    */
-  model: (string & {}) | 'claude-2.0' | 'claude-2.1' | 'claude-instant-1.2';
+  model: MessagesAPI.Model;
 
   /**
    * The prompt that you want Claude to complete.
diff --git a/src/resources/index.ts b/src/resources/index.ts
index 84f839d1..9b59bcbe 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -13,7 +13,7 @@ export {
   ContentBlockStartEvent,
   ContentBlockStopEvent,
   ImageBlockParam,
-  InputJsonDelta,
+  InputJSONDelta,
   Message,
   MessageDeltaEvent,
   MessageDeltaUsage,
@@ -21,6 +21,7 @@ export {
   MessageStartEvent,
   MessageStopEvent,
   MessageStreamEvent,
+  Model,
   RawContentBlockDeltaEvent,
   RawContentBlockStartEvent,
   RawContentBlockStopEvent,
diff --git a/src/resources/messages.ts b/src/resources/messages.ts
index 76d7119c..681c829c 100644
--- a/src/resources/messages.ts
+++ b/src/resources/messages.ts
@@ -72,7 +72,7 @@ export namespace ImageBlockParam {
   }
 }
 
-export interface InputJsonDelta {
+export interface InputJSONDelta {
   partial_json: string;
 
   type: 'input_json_delta';
@@ -123,9 +123,11 @@ export interface Message {
   content: Array<ContentBlock>;
 
   /**
-   * The model that handled the request.
+   * The model that will complete your prompt.\n\nSee
+   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional
+   * details and options.
    */
-  model: string;
+  model: Model;
 
   /**
    * Conversational role of the generated message.
@@ -202,8 +204,23 @@ export type MessageStopEvent = RawMessageStopEvent;
 
 export type MessageStreamEvent = RawMessageStreamEvent;
 
+/**
+ * The model that will complete your prompt.\n\nSee
+ * [models](https://docs.anthropic.com/en/docs/models-overview) for additional
+ * details and options.
+ */
+export type Model =
+  | (string & {})
+  | 'claude-3-5-sonnet-20240620'
+  | 'claude-3-opus-20240229'
+  | 'claude-3-sonnet-20240229'
+  | 'claude-3-haiku-20240307'
+  | 'claude-2.1'
+  | 'claude-2.0'
+  | 'claude-instant-1.2';
+
 export interface RawContentBlockDeltaEvent {
-  delta: TextDelta | InputJsonDelta;
+  delta: TextDelta | InputJSONDelta;
 
   index: number;
 
@@ -473,20 +490,11 @@ export interface MessageCreateParamsBase {
   messages: Array<MessageParam>;
 
   /**
-   * The model that will complete your prompt.
-   *
-   * See [models](https://docs.anthropic.com/en/docs/models-overview) for additional
+   * The model that will complete your prompt.\n\nSee
+   * [models](https://docs.anthropic.com/en/docs/models-overview) for additional
    * details and options.
    */
-  model:
-    | (string & {})
-    | 'claude-3-5-sonnet-20240620'
-    | 'claude-3-opus-20240229'
-    | 'claude-3-sonnet-20240229'
-    | 'claude-3-haiku-20240307'
-    | 'claude-2.1'
-    | 'claude-2.0'
-    | 'claude-instant-1.2';
+  model: Model;
 
   /**
    * An object describing metadata about the request.
@@ -714,7 +722,7 @@ export namespace Messages {
   export import ContentBlockStartEvent = MessagesAPI.ContentBlockStartEvent;
   export import ContentBlockStopEvent = MessagesAPI.ContentBlockStopEvent;
   export import ImageBlockParam = MessagesAPI.ImageBlockParam;
-  export import InputJsonDelta = MessagesAPI.InputJsonDelta;
+  export import InputJSONDelta = MessagesAPI.InputJSONDelta;
   export import Message = MessagesAPI.Message;
   export import MessageDeltaEvent = MessagesAPI.MessageDeltaEvent;
   export import MessageDeltaUsage = MessagesAPI.MessageDeltaUsage;
@@ -722,6 +730,7 @@ export namespace Messages {
   export import MessageStartEvent = MessagesAPI.MessageStartEvent;
   export import MessageStopEvent = MessagesAPI.MessageStopEvent;
   export import MessageStreamEvent = MessagesAPI.MessageStreamEvent;
+  export import Model = MessagesAPI.Model;
   export import RawContentBlockDeltaEvent = MessagesAPI.RawContentBlockDeltaEvent;
   export import RawContentBlockStartEvent = MessagesAPI.RawContentBlockStartEvent;
   export import RawContentBlockStopEvent = MessagesAPI.RawContentBlockStopEvent;
diff --git a/tests/api-resources/completions.test.ts b/tests/api-resources/completions.test.ts
index 546dcc74..4508a959 100644
--- a/tests/api-resources/completions.test.ts
+++ b/tests/api-resources/completions.test.ts
@@ -12,7 +12,7 @@ describe('resource completions', () => {
   test('create: only required params', async () => {
     const responsePromise = anthropic.completions.create({
       max_tokens_to_sample: 256,
-      model: 'claude-2.1',
+      model: 'string',
       prompt: '\n\nHuman: Hello, world!\n\nAssistant:',
     });
     const rawResponse = await responsePromise.asResponse();
@@ -27,7 +27,7 @@ describe('resource completions', () => {
   test('create: required and optional params', async () => {
     const response = await anthropic.completions.create({
       max_tokens_to_sample: 256,
-      model: 'claude-2.1',
+      model: 'string',
       prompt: '\n\nHuman: Hello, world!\n\nAssistant:',
       metadata: { user_id: '13803d75-b4b5-4c3e-b2a2-6f21399b021b' },
       stop_sequences: ['string', 'string', 'string'],