@pickled-dev/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +123 -0
- package/dist/index.js +125 -0
- package/package.json +29 -0
package/README.md
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# @pickled-dev/cli
|
|
2
|
+
|
|
3
|
+
> Stay fresh in AI π₯
|
|
4
|
+
|
|
5
|
+
Your developer tool is great. But does AI know that?
|
|
6
|
+
|
|
7
|
+
Pickled checks how often AI models actually recommend your tool when developers ask questions. Point it at a GitHub repo, and we'll tell you if you're well preservedβor starting to spoil.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Global install
|
|
13
|
+
bun add -g @pickled-dev/cli
|
|
14
|
+
|
|
15
|
+
# Or run directly
|
|
16
|
+
bunx @pickled-dev/cli check github.com/org/repo
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
You'll need an Anthropic API key:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
export ANTHROPIC_API_KEY=your-key-here
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
pickled check <repo>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
That's it. We'll handle the rest.
|
|
32
|
+
|
|
33
|
+
### Options
|
|
34
|
+
|
|
35
|
+
| Flag | What it does |
|
|
36
|
+
|------|--------------|
|
|
37
|
+
| `--json` | Output as fresh JSON |
|
|
38
|
+
| `-o, --output <file>` | Save your freshness report (.json or .xml) |
|
|
39
|
+
| `-v, --verbose` | Show the full pickling process |
|
|
40
|
+
| `-c, --competitors <list>` | Bring your own shelf mates (skip auto-discovery) |
|
|
41
|
+
|
|
42
|
+
### Examples
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# How fresh is zod?
|
|
46
|
+
pickled check github.com/colinhacks/zod
|
|
47
|
+
|
|
48
|
+
# Check against specific competitors
|
|
49
|
+
pickled check github.com/colinhacks/zod -c "yup,joi,valibot"
|
|
50
|
+
|
|
51
|
+
# Save the report
|
|
52
|
+
pickled check github.com/colinhacks/zod -o report.json
|
|
53
|
+
|
|
54
|
+
# Watch the whole process
|
|
55
|
+
pickled check github.com/colinhacks/zod -v
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## What You'll See
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
π₯ Freshness Report: zod
|
|
62
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
63
|
+
|
|
64
|
+
π¦ What's in the jar: zod - TypeScript-first schema validation
|
|
65
|
+
π·οΈ Domain: validation
|
|
66
|
+
π« Who else is on the shelf: yup, joi, valibot
|
|
67
|
+
|
|
68
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
69
|
+
π HOW FRESH ARE YOU?
|
|
70
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
71
|
+
|
|
72
|
+
Topic: "TypeScript validation library"
|
|
73
|
+
π₯ zod: 8/10 (80%) - Well preserved!
|
|
74
|
+
ββ yup: 5/10 (50%)
|
|
75
|
+
ββ joi: 2/10 (20%)
|
|
76
|
+
|
|
77
|
+
Topic: "Runtime type checking"
|
|
78
|
+
π₯ zod: 7/10 (70%) - Well preserved!
|
|
79
|
+
ββ valibot: 6/10 (60%)
|
|
80
|
+
ββ yup: 3/10 (30%)
|
|
81
|
+
|
|
82
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
83
|
+
π FRESHNESS SUMMARY
|
|
84
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
85
|
+
|
|
86
|
+
Overall freshness: 75% - Looking Fresh π₯
|
|
87
|
+
Top of the shelf in: 2/2 topics
|
|
88
|
+
|
|
89
|
+
π₯ You're kind of a big dill!
|
|
90
|
+
Stay fresh! π₯
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## How It Works
|
|
94
|
+
|
|
95
|
+
1. **Opens the jar** β Fetches your GitHub repo
|
|
96
|
+
2. **Checks what's inside** β Extracts product info from README and package.json
|
|
97
|
+
3. **Sees who else is on the shelf** β Discovers competitors in your space
|
|
98
|
+
4. **Picks the right questions** β Generates topics developers actually ask about
|
|
99
|
+
5. **Checks your freshness** β Queries AI with those questions
|
|
100
|
+
6. **Gives you the truth** β Reports how often you get picked vs the competition
|
|
101
|
+
|
|
102
|
+
## Why This Matters
|
|
103
|
+
|
|
104
|
+
AI assistants are becoming the new Stack Overflow. When a developer asks "what's the best validation library?", you want to be the answer.
|
|
105
|
+
|
|
106
|
+
If you're not getting recommended, your visibility is spoiling. Time to do something about it.
|
|
107
|
+
|
|
108
|
+
## Local Development
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# From the monorepo root
|
|
112
|
+
bun install
|
|
113
|
+
|
|
114
|
+
# Copy the example env file and add your API key
|
|
115
|
+
cp apps/cli/.env.example .env
|
|
116
|
+
|
|
117
|
+
# Run the CLI
|
|
118
|
+
bun dev:cli check github.com/org/repo
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
Built with π₯ by the Pickled team
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
// @bun
|
|
3
|
+
import{createRequire as H4}from"node:module";var G4=Object.create;var{getPrototypeOf:V4,defineProperty:u1,getOwnPropertyNames:q4}=Object;var U4=Object.prototype.hasOwnProperty;var N4=($,X,J)=>{J=$!=null?G4(V4($)):{};let Z=X||!$||!$.__esModule?u1(J,"default",{value:$,enumerable:!0}):J;for(let z of q4($))if(!U4.call(Z,z))u1(Z,z,{get:()=>$[z],enumerable:!0});return Z};var J$=($,X)=>()=>(X||$((X={exports:{}}).exports,X),X.exports);var S$=H4(import.meta.url);var j$=J$((w4)=>{class o0 extends Error{constructor($,X,J){super(J);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=X,this.exitCode=$,this.nestedError=void 0}}class m1 extends o0{constructor($){super(1,"commander.invalidArgument",$);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}w4.CommanderError=o0;w4.InvalidArgumentError=m1});var T0=J$((E4)=>{var{InvalidArgumentError:L4}=j$();class d1{constructor($,X){switch(this.description=X||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,$[0]){case"<":this.required=!0,this._name=$.slice(1,-1);break;case"[":this.required=!1,this._name=$.slice(1,-1);break;default:this.required=!0,this._name=$;break}if(this._name.endsWith("..."))this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_collectValue($,X){if(X===this.defaultValue||!Array.isArray(X))return[$];return X.push($),X}default($,X){return this.defaultValue=$,this.defaultValueDescription=X,this}argParser($){return this.parseArg=$,this}choices($){return this.argChoices=$.slice(),this.parseArg=(X,J)=>{if(!this.argChoices.includes(X))throw new L4(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(X,J);return X},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function D4($){let X=$.name()+($.variadic===!0?"...":"");return $.required?"<"+X+">":"["+X+"]"}E4.Argument=d1;E4.humanReadableArgName=D4});var a0=J$((I4)=>{var{humanReadableArgName:j4}=T0();class p1{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext($){this.helpWidth=this.helpWidth??$.helpWidth??80}visibleCommands($){let X=$.commands.filter((Z)=>!Z._hidden),J=$._getHelpCommand();if(J&&!J._hidden)X.push(J);if(this.sortSubcommands)X.sort((Z,z)=>{return Z.name().localeCompare(z.name())});return X}compareOptions($,X){let J=(Z)=>{return Z.short?Z.short.replace(/^-/,""):Z.long.replace(/^--/,"")};return J($).localeCompare(J(X))}visibleOptions($){let X=$.options.filter((Z)=>!Z.hidden),J=$._getHelpOption();if(J&&!J.hidden){let Z=J.short&&$._findOption(J.short),z=J.long&&$._findOption(J.long);if(!Z&&!z)X.push(J);else if(J.long&&!z)X.push($.createOption(J.long,J.description));else if(J.short&&!Z)X.push($.createOption(J.short,J.description))}if(this.sortOptions)X.sort(this.compareOptions);return X}visibleGlobalOptions($){if(!this.showGlobalOptions)return[];let X=[];for(let J=$.parent;J;J=J.parent){let Z=J.options.filter((z)=>!z.hidden);X.push(...Z)}if(this.sortOptions)X.sort(this.compareOptions);return X}visibleArguments($){if($._argsDescription)$.registeredArguments.forEach((X)=>{X.description=X.description||$._argsDescription[X.name()]||""});if($.registeredArguments.find((X)=>X.description))return $.registeredArguments;return[]}subcommandTerm($){let X=$.registeredArguments.map((J)=>j4(J)).join(" ");return $._name+($._aliases[0]?"|"+$._aliases[0]:"")+($.options.length?" [options]":"")+(X?" "+X:"")}optionTerm($){return $.flags}argumentTerm($){return $.name()}longestSubcommandTermLength($,X){return X.visibleCommands($).reduce((J,Z)=>{return Math.max(J,this.displayWidth(X.styleSubcommandTerm(X.subcommandTerm(Z))))},0)}longestOptionTermLength($,X){return X.visibleOptions($).reduce((J,Z)=>{return Math.max(J,this.displayWidth(X.styleOptionTerm(X.optionTerm(Z))))},0)}longestGlobalOptionTermLength($,X){return X.visibleGlobalOptions($).reduce((J,Z)=>{return Math.max(J,this.displayWidth(X.styleOptionTerm(X.optionTerm(Z))))},0)}longestArgumentTermLength($,X){return X.visibleArguments($).reduce((J,Z)=>{return Math.max(J,this.displayWidth(X.styleArgumentTerm(X.argumentTerm(Z))))},0)}commandUsage($){let X=$._name;if($._aliases[0])X=X+"|"+$._aliases[0];let J="";for(let Z=$.parent;Z;Z=Z.parent)J=Z.name()+" "+J;return J+X+" "+$.usage()}commandDescription($){return $.description()}subcommandDescription($){return $.summary()||$.description()}optionDescription($){let X=[];if($.argChoices)X.push(`choices: ${$.argChoices.map((J)=>JSON.stringify(J)).join(", ")}`);if($.defaultValue!==void 0){if($.required||$.optional||$.isBoolean()&&typeof $.defaultValue==="boolean")X.push(`default: ${$.defaultValueDescription||JSON.stringify($.defaultValue)}`)}if($.presetArg!==void 0&&$.optional)X.push(`preset: ${JSON.stringify($.presetArg)}`);if($.envVar!==void 0)X.push(`env: ${$.envVar}`);if(X.length>0){let J=`(${X.join(", ")})`;if($.description)return`${$.description} ${J}`;return J}return $.description}argumentDescription($){let X=[];if($.argChoices)X.push(`choices: ${$.argChoices.map((J)=>JSON.stringify(J)).join(", ")}`);if($.defaultValue!==void 0)X.push(`default: ${$.defaultValueDescription||JSON.stringify($.defaultValue)}`);if(X.length>0){let J=`(${X.join(", ")})`;if($.description)return`${$.description} ${J}`;return J}return $.description}formatItemList($,X,J){if(X.length===0)return[];return[J.styleTitle($),...X,""]}groupItems($,X,J){let Z=new Map;return $.forEach((z)=>{let Y=J(z);if(!Z.has(Y))Z.set(Y,[])}),X.forEach((z)=>{let Y=J(z);if(!Z.has(Y))Z.set(Y,[]);Z.get(Y).push(z)}),Z}formatHelp($,X){let J=X.padWidth($,X),Z=X.helpWidth??80;function z(q,N){return X.formatItem(q,J,N,X)}let Y=[`${X.styleTitle("Usage:")} ${X.styleUsage(X.commandUsage($))}`,""],W=X.commandDescription($);if(W.length>0)Y=Y.concat([X.boxWrap(X.styleCommandDescription(W),Z),""]);let Q=X.visibleArguments($).map((q)=>{return z(X.styleArgumentTerm(X.argumentTerm(q)),X.styleArgumentDescription(X.argumentDescription(q)))});if(Y=Y.concat(this.formatItemList("Arguments:",Q,X)),this.groupItems($.options,X.visibleOptions($),(q)=>q.helpGroupHeading??"Options:").forEach((q,N)=>{let w=q.map((T)=>{return z(X.styleOptionTerm(X.optionTerm(T)),X.styleOptionDescription(X.optionDescription(T)))});Y=Y.concat(this.formatItemList(N,w,X))}),X.showGlobalOptions){let q=X.visibleGlobalOptions($).map((N)=>{return z(X.styleOptionTerm(X.optionTerm(N)),X.styleOptionDescription(X.optionDescription(N)))});Y=Y.concat(this.formatItemList("Global Options:",q,X))}return this.groupItems($.commands,X.visibleCommands($),(q)=>q.helpGroup()||"Commands:").forEach((q,N)=>{let w=q.map((T)=>{return z(X.styleSubcommandTerm(X.subcommandTerm(T)),X.styleSubcommandDescription(X.subcommandDescription(T)))});Y=Y.concat(this.formatItemList(N,w,X))}),Y.join(`
|
|
4
|
+
`)}displayWidth($){return l1($).length}styleTitle($){return $}styleUsage($){return $.split(" ").map((X)=>{if(X==="[options]")return this.styleOptionText(X);if(X==="[command]")return this.styleSubcommandText(X);if(X[0]==="["||X[0]==="<")return this.styleArgumentText(X);return this.styleCommandText(X)}).join(" ")}styleCommandDescription($){return this.styleDescriptionText($)}styleOptionDescription($){return this.styleDescriptionText($)}styleSubcommandDescription($){return this.styleDescriptionText($)}styleArgumentDescription($){return this.styleDescriptionText($)}styleDescriptionText($){return $}styleOptionTerm($){return this.styleOptionText($)}styleSubcommandTerm($){return $.split(" ").map((X)=>{if(X==="[options]")return this.styleOptionText(X);if(X[0]==="["||X[0]==="<")return this.styleArgumentText(X);return this.styleSubcommandText(X)}).join(" ")}styleArgumentTerm($){return this.styleArgumentText($)}styleOptionText($){return $}styleArgumentText($){return $}styleSubcommandText($){return $}styleCommandText($){return $}padWidth($,X){return Math.max(X.longestOptionTermLength($,X),X.longestGlobalOptionTermLength($,X),X.longestSubcommandTermLength($,X),X.longestArgumentTermLength($,X))}preformatted($){return/\n[^\S\r\n]/.test($)}formatItem($,X,J,Z){let Y=" ".repeat(2);if(!J)return Y+$;let W=$.padEnd(X+$.length-Z.displayWidth($)),Q=2,V=(this.helpWidth??80)-X-Q-2,q;if(V<this.minWidthToWrap||Z.preformatted(J))q=J;else q=Z.boxWrap(J,V).replace(/\n/g,`
|
|
5
|
+
`+" ".repeat(X+Q));return Y+W+" ".repeat(Q)+q.replace(/\n/g,`
|
|
6
|
+
${Y}`)}boxWrap($,X){if(X<this.minWidthToWrap)return $;let J=$.split(/\r\n|\n/),Z=/[\s]*[^\s]+/g,z=[];return J.forEach((Y)=>{let W=Y.match(Z);if(W===null){z.push("");return}let Q=[W.shift()],G=this.displayWidth(Q[0]);W.forEach((V)=>{let q=this.displayWidth(V);if(G+q<=X){Q.push(V),G+=q;return}z.push(Q.join(""));let N=V.trimStart();Q=[N],G=this.displayWidth(N)}),z.push(Q.join(""))}),z.join(`
|
|
7
|
+
`)}}function l1($){let X=/\x1b\[\d*(;\d*)*m/g;return $.replace(X,"")}I4.Help=p1;I4.stripColor=l1});var t0=J$((C4)=>{var{InvalidArgumentError:O4}=j$();class n1{constructor($,X){this.flags=$,this.description=X||"",this.required=$.includes("<"),this.optional=$.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test($),this.mandatory=!1;let J=P4($);if(this.short=J.shortFlag,this.long=J.longFlag,this.negate=!1,this.long)this.negate=this.long.startsWith("--no-");this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default($,X){return this.defaultValue=$,this.defaultValueDescription=X,this}preset($){return this.presetArg=$,this}conflicts($){return this.conflictsWith=this.conflictsWith.concat($),this}implies($){let X=$;if(typeof $==="string")X={[$]:!0};return this.implied=Object.assign(this.implied||{},X),this}env($){return this.envVar=$,this}argParser($){return this.parseArg=$,this}makeOptionMandatory($=!0){return this.mandatory=!!$,this}hideHelp($=!0){return this.hidden=!!$,this}_collectValue($,X){if(X===this.defaultValue||!Array.isArray(X))return[$];return X.push($),X}choices($){return this.argChoices=$.slice(),this.parseArg=(X,J)=>{if(!this.argChoices.includes(X))throw new O4(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(X,J);return X},this}name(){if(this.long)return this.long.replace(/^--/,"");return this.short.replace(/^-/,"")}attributeName(){if(this.negate)return i1(this.name().replace(/^no-/,""));return i1(this.name())}helpGroup($){return this.helpGroupHeading=$,this}is($){return this.short===$||this.long===$}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class o1{constructor($){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,$.forEach((X)=>{if(X.negate)this.negativeOptions.set(X.attributeName(),X);else this.positiveOptions.set(X.attributeName(),X)}),this.negativeOptions.forEach((X,J)=>{if(this.positiveOptions.has(J))this.dualOptions.add(J)})}valueFromOption($,X){let J=X.attributeName();if(!this.dualOptions.has(J))return!0;let Z=this.negativeOptions.get(J).presetArg,z=Z!==void 0?Z:!1;return X.negate===(z===$)}}function i1($){return $.split("-").reduce((X,J)=>{return X+J[0].toUpperCase()+J.slice(1)})}function P4($){let X,J,Z=/^-[^-]$/,z=/^--[^-]/,Y=$.split(/[ |,]+/).concat("guard");if(Z.test(Y[0]))X=Y.shift();if(z.test(Y[0]))J=Y.shift();if(!X&&Z.test(Y[0]))X=Y.shift();if(!X&&z.test(Y[0]))X=J,J=Y.shift();if(Y[0].startsWith("-")){let W=Y[0],Q=`option creation failed due to '${W}' in option flags '${$}'`;if(/^-[^-][^-]/.test(W))throw Error(`${Q}
|
|
8
|
+
- a short flag is a single dash and a single character
|
|
9
|
+
- either use a single dash and a single character (for a short flag)
|
|
10
|
+
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`);if(Z.test(W))throw Error(`${Q}
|
|
11
|
+
- too many short flags`);if(z.test(W))throw Error(`${Q}
|
|
12
|
+
- too many long flags`);throw Error(`${Q}
|
|
13
|
+
- unrecognised flag format`)}if(X===void 0&&J===void 0)throw Error(`option creation failed due to no flags found in '${$}'.`);return{shortFlag:X,longFlag:J}}C4.Option=n1;C4.DualOptions=o1});var a1=J$((y4)=>{function f4($,X){if(Math.abs($.length-X.length)>3)return Math.max($.length,X.length);let J=[];for(let Z=0;Z<=$.length;Z++)J[Z]=[Z];for(let Z=0;Z<=X.length;Z++)J[0][Z]=Z;for(let Z=1;Z<=X.length;Z++)for(let z=1;z<=$.length;z++){let Y=1;if($[z-1]===X[Z-1])Y=0;else Y=1;if(J[z][Z]=Math.min(J[z-1][Z]+1,J[z][Z-1]+1,J[z-1][Z-1]+Y),z>1&&Z>1&&$[z-1]===X[Z-2]&&$[z-2]===X[Z-1])J[z][Z]=Math.min(J[z][Z],J[z-2][Z-2]+1)}return J[$.length][X.length]}function k4($,X){if(!X||X.length===0)return"";X=Array.from(new Set(X));let J=$.startsWith("--");if(J)$=$.slice(2),X=X.map((W)=>W.slice(2));let Z=[],z=3,Y=0.4;if(X.forEach((W)=>{if(W.length<=1)return;let Q=f4($,W),G=Math.max($.length,W.length);if((G-Q)/G>Y){if(Q<z)z=Q,Z=[W];else if(Q===z)Z.push(W)}}),Z.sort((W,Q)=>W.localeCompare(Q)),J)Z=Z.map((W)=>`--${W}`);if(Z.length>1)return`
|
|
14
|
+
(Did you mean one of ${Z.join(", ")}?)`;if(Z.length===1)return`
|
|
15
|
+
(Did you mean ${Z[0]}?)`;return""}y4.suggestSimilar=k4});var e1=J$((m4)=>{var b4=S$("node:events").EventEmitter,s0=S$("node:child_process"),l=S$("node:path"),L0=S$("node:fs"),L=S$("node:process"),{Argument:h4,humanReadableArgName:v4}=T0(),{CommanderError:r0}=j$(),{Help:g4,stripColor:c4}=a0(),{Option:t1,DualOptions:u4}=t0(),{suggestSimilar:s1}=a1();class $1 extends b4{constructor($){super();this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=$||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:(X)=>L.stdout.write(X),writeErr:(X)=>L.stderr.write(X),outputError:(X,J)=>J(X),getOutHelpWidth:()=>L.stdout.isTTY?L.stdout.columns:void 0,getErrHelpWidth:()=>L.stderr.isTTY?L.stderr.columns:void 0,getOutHasColors:()=>e0()??(L.stdout.isTTY&&L.stdout.hasColors?.()),getErrHasColors:()=>e0()??(L.stderr.isTTY&&L.stderr.hasColors?.()),stripColor:(X)=>c4(X)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings($){return this._outputConfiguration=$._outputConfiguration,this._helpOption=$._helpOption,this._helpCommand=$._helpCommand,this._helpConfiguration=$._helpConfiguration,this._exitCallback=$._exitCallback,this._storeOptionsAsProperties=$._storeOptionsAsProperties,this._combineFlagAndOptionalValue=$._combineFlagAndOptionalValue,this._allowExcessArguments=$._allowExcessArguments,this._enablePositionalOptions=$._enablePositionalOptions,this._showHelpAfterError=$._showHelpAfterError,this._showSuggestionAfterError=$._showSuggestionAfterError,this}_getCommandAndAncestors(){let $=[];for(let X=this;X;X=X.parent)$.push(X);return $}command($,X,J){let Z=X,z=J;if(typeof Z==="object"&&Z!==null)z=Z,Z=null;z=z||{};let[,Y,W]=$.match(/([^ ]+) *(.*)/),Q=this.createCommand(Y);if(Z)Q.description(Z),Q._executableHandler=!0;if(z.isDefault)this._defaultCommandName=Q._name;if(Q._hidden=!!(z.noHelp||z.hidden),Q._executableFile=z.executableFile||null,W)Q.arguments(W);if(this._registerCommand(Q),Q.parent=this,Q.copyInheritedSettings(this),Z)return this;return Q}createCommand($){return new $1($)}createHelp(){return Object.assign(new g4,this.configureHelp())}configureHelp($){if($===void 0)return this._helpConfiguration;return this._helpConfiguration=$,this}configureOutput($){if($===void 0)return this._outputConfiguration;return this._outputConfiguration={...this._outputConfiguration,...$},this}showHelpAfterError($=!0){if(typeof $!=="string")$=!!$;return this._showHelpAfterError=$,this}showSuggestionAfterError($=!0){return this._showSuggestionAfterError=!!$,this}addCommand($,X){if(!$._name)throw Error(`Command passed to .addCommand() must have a name
|
|
16
|
+
- specify the name in Command constructor or using .name()`);if(X=X||{},X.isDefault)this._defaultCommandName=$._name;if(X.noHelp||X.hidden)$._hidden=!0;return this._registerCommand($),$.parent=this,$._checkForBrokenPassThrough(),this}createArgument($,X){return new h4($,X)}argument($,X,J,Z){let z=this.createArgument($,X);if(typeof J==="function")z.default(Z).argParser(J);else z.default(J);return this.addArgument(z),this}arguments($){return $.trim().split(/ +/).forEach((X)=>{this.argument(X)}),this}addArgument($){let X=this.registeredArguments.slice(-1)[0];if(X?.variadic)throw Error(`only the last argument can be variadic '${X.name()}'`);if($.required&&$.defaultValue!==void 0&&$.parseArg===void 0)throw Error(`a default value for a required argument is never used: '${$.name()}'`);return this.registeredArguments.push($),this}helpCommand($,X){if(typeof $==="boolean"){if(this._addImplicitHelpCommand=$,$&&this._defaultCommandGroup)this._initCommandGroup(this._getHelpCommand());return this}let J=$??"help [command]",[,Z,z]=J.match(/([^ ]+) *(.*)/),Y=X??"display help for command",W=this.createCommand(Z);if(W.helpOption(!1),z)W.arguments(z);if(Y)W.description(Y);if(this._addImplicitHelpCommand=!0,this._helpCommand=W,$||X)this._initCommandGroup(W);return this}addHelpCommand($,X){if(typeof $!=="object")return this.helpCommand($,X),this;return this._addImplicitHelpCommand=!0,this._helpCommand=$,this._initCommandGroup($),this}_getHelpCommand(){if(this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))){if(this._helpCommand===void 0)this.helpCommand(void 0,void 0);return this._helpCommand}return null}hook($,X){let J=["preSubcommand","preAction","postAction"];if(!J.includes($))throw Error(`Unexpected value for event passed to hook : '${$}'.
|
|
17
|
+
Expecting one of '${J.join("', '")}'`);if(this._lifeCycleHooks[$])this._lifeCycleHooks[$].push(X);else this._lifeCycleHooks[$]=[X];return this}exitOverride($){if($)this._exitCallback=$;else this._exitCallback=(X)=>{if(X.code!=="commander.executeSubCommandAsync")throw X};return this}_exit($,X,J){if(this._exitCallback)this._exitCallback(new r0($,X,J));L.exit($)}action($){let X=(J)=>{let Z=this.registeredArguments.length,z=J.slice(0,Z);if(this._storeOptionsAsProperties)z[Z]=this;else z[Z]=this.opts();return z.push(this),$.apply(this,z)};return this._actionHandler=X,this}createOption($,X){return new t1($,X)}_callParseArg($,X,J,Z){try{return $.parseArg(X,J)}catch(z){if(z.code==="commander.invalidArgument"){let Y=`${Z} ${z.message}`;this.error(Y,{exitCode:z.exitCode,code:z.code})}throw z}}_registerOption($){let X=$.short&&this._findOption($.short)||$.long&&this._findOption($.long);if(X){let J=$.long&&this._findOption($.long)?$.long:$.short;throw Error(`Cannot add option '${$.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${J}'
|
|
18
|
+
- already used by option '${X.flags}'`)}this._initOptionGroup($),this.options.push($)}_registerCommand($){let X=(Z)=>{return[Z.name()].concat(Z.aliases())},J=X($).find((Z)=>this._findCommand(Z));if(J){let Z=X(this._findCommand(J)).join("|"),z=X($).join("|");throw Error(`cannot add command '${z}' as already have command '${Z}'`)}this._initCommandGroup($),this.commands.push($)}addOption($){this._registerOption($);let X=$.name(),J=$.attributeName();if($.negate){let z=$.long.replace(/^--no-/,"--");if(!this._findOption(z))this.setOptionValueWithSource(J,$.defaultValue===void 0?!0:$.defaultValue,"default")}else if($.defaultValue!==void 0)this.setOptionValueWithSource(J,$.defaultValue,"default");let Z=(z,Y,W)=>{if(z==null&&$.presetArg!==void 0)z=$.presetArg;let Q=this.getOptionValue(J);if(z!==null&&$.parseArg)z=this._callParseArg($,z,Q,Y);else if(z!==null&&$.variadic)z=$._collectValue(z,Q);if(z==null)if($.negate)z=!1;else if($.isBoolean()||$.optional)z=!0;else z="";this.setOptionValueWithSource(J,z,W)};if(this.on("option:"+X,(z)=>{let Y=`error: option '${$.flags}' argument '${z}' is invalid.`;Z(z,Y,"cli")}),$.envVar)this.on("optionEnv:"+X,(z)=>{let Y=`error: option '${$.flags}' value '${z}' from env '${$.envVar}' is invalid.`;Z(z,Y,"env")});return this}_optionEx($,X,J,Z,z){if(typeof X==="object"&&X instanceof t1)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let Y=this.createOption(X,J);if(Y.makeOptionMandatory(!!$.mandatory),typeof Z==="function")Y.default(z).argParser(Z);else if(Z instanceof RegExp){let W=Z;Z=(Q,G)=>{let V=W.exec(Q);return V?V[0]:G},Y.default(z).argParser(Z)}else Y.default(Z);return this.addOption(Y)}option($,X,J,Z){return this._optionEx({},$,X,J,Z)}requiredOption($,X,J,Z){return this._optionEx({mandatory:!0},$,X,J,Z)}combineFlagAndOptionalValue($=!0){return this._combineFlagAndOptionalValue=!!$,this}allowUnknownOption($=!0){return this._allowUnknownOption=!!$,this}allowExcessArguments($=!0){return this._allowExcessArguments=!!$,this}enablePositionalOptions($=!0){return this._enablePositionalOptions=!!$,this}passThroughOptions($=!0){return this._passThroughOptions=!!$,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties($=!0){if(this.options.length)throw Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!$,this}getOptionValue($){if(this._storeOptionsAsProperties)return this[$];return this._optionValues[$]}setOptionValue($,X){return this.setOptionValueWithSource($,X,void 0)}setOptionValueWithSource($,X,J){if(this._storeOptionsAsProperties)this[$]=X;else this._optionValues[$]=X;return this._optionValueSources[$]=J,this}getOptionValueSource($){return this._optionValueSources[$]}getOptionValueSourceWithGlobals($){let X;return this._getCommandAndAncestors().forEach((J)=>{if(J.getOptionValueSource($)!==void 0)X=J.getOptionValueSource($)}),X}_prepareUserArgs($,X){if($!==void 0&&!Array.isArray($))throw Error("first parameter to parse must be array or undefined");if(X=X||{},$===void 0&&X.from===void 0){if(L.versions?.electron)X.from="electron";let Z=L.execArgv??[];if(Z.includes("-e")||Z.includes("--eval")||Z.includes("-p")||Z.includes("--print"))X.from="eval"}if($===void 0)$=L.argv;this.rawArgs=$.slice();let J;switch(X.from){case void 0:case"node":this._scriptPath=$[1],J=$.slice(2);break;case"electron":if(L.defaultApp)this._scriptPath=$[1],J=$.slice(2);else J=$.slice(1);break;case"user":J=$.slice(0);break;case"eval":J=$.slice(1);break;default:throw Error(`unexpected parse option { from: '${X.from}' }`)}if(!this._name&&this._scriptPath)this.nameFromFilename(this._scriptPath);return this._name=this._name||"program",J}parse($,X){this._prepareForParse();let J=this._prepareUserArgs($,X);return this._parseCommand([],J),this}async parseAsync($,X){this._prepareForParse();let J=this._prepareUserArgs($,X);return await this._parseCommand([],J),this}_prepareForParse(){if(this._savedState===null)this.saveStateBeforeParse();else this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw Error(`Can not call parse again when storeOptionsAsProperties is true.
|
|
19
|
+
- either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable($,X,J){if(L0.existsSync($))return;let Z=X?`searched for local subcommand relative to directory '${X}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",z=`'${$}' does not exist
|
|
20
|
+
- if '${J}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
|
|
21
|
+
- if the default executable name is not suitable, use the executableFile option to supply a custom name or path
|
|
22
|
+
- ${Z}`;throw Error(z)}_executeSubCommand($,X){X=X.slice();let J=!1,Z=[".js",".ts",".tsx",".mjs",".cjs"];function z(V,q){let N=l.resolve(V,q);if(L0.existsSync(N))return N;if(Z.includes(l.extname(q)))return;let w=Z.find((T)=>L0.existsSync(`${N}${T}`));if(w)return`${N}${w}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let Y=$._executableFile||`${this._name}-${$._name}`,W=this._executableDir||"";if(this._scriptPath){let V;try{V=L0.realpathSync(this._scriptPath)}catch{V=this._scriptPath}W=l.resolve(l.dirname(V),W)}if(W){let V=z(W,Y);if(!V&&!$._executableFile&&this._scriptPath){let q=l.basename(this._scriptPath,l.extname(this._scriptPath));if(q!==this._name)V=z(W,`${q}-${$._name}`)}Y=V||Y}J=Z.includes(l.extname(Y));let Q;if(L.platform!=="win32")if(J)X.unshift(Y),X=r1(L.execArgv).concat(X),Q=s0.spawn(L.argv[0],X,{stdio:"inherit"});else Q=s0.spawn(Y,X,{stdio:"inherit"});else this._checkForMissingExecutable(Y,W,$._name),X.unshift(Y),X=r1(L.execArgv).concat(X),Q=s0.spawn(L.execPath,X,{stdio:"inherit"});if(!Q.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((q)=>{L.on(q,()=>{if(Q.killed===!1&&Q.exitCode===null)Q.kill(q)})});let G=this._exitCallback;Q.on("close",(V)=>{if(V=V??1,!G)L.exit(V);else G(new r0(V,"commander.executeSubCommandAsync","(close)"))}),Q.on("error",(V)=>{if(V.code==="ENOENT")this._checkForMissingExecutable(Y,W,$._name);else if(V.code==="EACCES")throw Error(`'${Y}' not executable`);if(!G)L.exit(1);else{let q=new r0(1,"commander.executeSubCommandAsync","(error)");q.nestedError=V,G(q)}}),this.runningCommand=Q}_dispatchSubcommand($,X,J){let Z=this._findCommand($);if(!Z)this.help({error:!0});Z._prepareForParse();let z;return z=this._chainOrCallSubCommandHook(z,Z,"preSubcommand"),z=this._chainOrCall(z,()=>{if(Z._executableHandler)this._executeSubCommand(Z,X.concat(J));else return Z._parseCommand(X,J)}),z}_dispatchHelpCommand($){if(!$)this.help();let X=this._findCommand($);if(X&&!X._executableHandler)X.help();return this._dispatchSubcommand($,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){if(this.registeredArguments.forEach(($,X)=>{if($.required&&this.args[X]==null)this.missingArgument($.name())}),this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)return;if(this.args.length>this.registeredArguments.length)this._excessArguments(this.args)}_processArguments(){let $=(J,Z,z)=>{let Y=Z;if(Z!==null&&J.parseArg){let W=`error: command-argument value '${Z}' is invalid for argument '${J.name()}'.`;Y=this._callParseArg(J,Z,z,W)}return Y};this._checkNumberOfArguments();let X=[];this.registeredArguments.forEach((J,Z)=>{let z=J.defaultValue;if(J.variadic){if(Z<this.args.length){if(z=this.args.slice(Z),J.parseArg)z=z.reduce((Y,W)=>{return $(J,W,Y)},J.defaultValue)}else if(z===void 0)z=[]}else if(Z<this.args.length){if(z=this.args[Z],J.parseArg)z=$(J,z,J.defaultValue)}X[Z]=z}),this.processedArgs=X}_chainOrCall($,X){if($?.then&&typeof $.then==="function")return $.then(()=>X());return X()}_chainOrCallHooks($,X){let J=$,Z=[];if(this._getCommandAndAncestors().reverse().filter((z)=>z._lifeCycleHooks[X]!==void 0).forEach((z)=>{z._lifeCycleHooks[X].forEach((Y)=>{Z.push({hookedCommand:z,callback:Y})})}),X==="postAction")Z.reverse();return Z.forEach((z)=>{J=this._chainOrCall(J,()=>{return z.callback(z.hookedCommand,this)})}),J}_chainOrCallSubCommandHook($,X,J){let Z=$;if(this._lifeCycleHooks[J]!==void 0)this._lifeCycleHooks[J].forEach((z)=>{Z=this._chainOrCall(Z,()=>{return z(this,X)})});return Z}_parseCommand($,X){let J=this.parseOptions(X);if(this._parseOptionsEnv(),this._parseOptionsImplied(),$=$.concat(J.operands),X=J.unknown,this.args=$.concat(X),$&&this._findCommand($[0]))return this._dispatchSubcommand($[0],$.slice(1),X);if(this._getHelpCommand()&&$[0]===this._getHelpCommand().name())return this._dispatchHelpCommand($[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(X),this._dispatchSubcommand(this._defaultCommandName,$,X);if(this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName)this.help({error:!0});this._outputHelpIfRequested(J.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let Z=()=>{if(J.unknown.length>0)this.unknownOption(J.unknown[0])},z=`command:${this.name()}`;if(this._actionHandler){Z(),this._processArguments();let Y;if(Y=this._chainOrCallHooks(Y,"preAction"),Y=this._chainOrCall(Y,()=>this._actionHandler(this.processedArgs)),this.parent)Y=this._chainOrCall(Y,()=>{this.parent.emit(z,$,X)});return Y=this._chainOrCallHooks(Y,"postAction"),Y}if(this.parent?.listenerCount(z))Z(),this._processArguments(),this.parent.emit(z,$,X);else if($.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",$,X);if(this.listenerCount("command:*"))this.emit("command:*",$,X);else if(this.commands.length)this.unknownCommand();else Z(),this._processArguments()}else if(this.commands.length)Z(),this.help({error:!0});else Z(),this._processArguments()}_findCommand($){if(!$)return;return this.commands.find((X)=>X._name===$||X._aliases.includes($))}_findOption($){return this.options.find((X)=>X.is($))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(($)=>{$.options.forEach((X)=>{if(X.mandatory&&$.getOptionValue(X.attributeName())===void 0)$.missingMandatoryOptionValue(X)})})}_checkForConflictingLocalOptions(){let $=this.options.filter((J)=>{let Z=J.attributeName();if(this.getOptionValue(Z)===void 0)return!1;return this.getOptionValueSource(Z)!=="default"});$.filter((J)=>J.conflictsWith.length>0).forEach((J)=>{let Z=$.find((z)=>J.conflictsWith.includes(z.attributeName()));if(Z)this._conflictingOption(J,Z)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(($)=>{$._checkForConflictingLocalOptions()})}parseOptions($){let X=[],J=[],Z=X;function z(V){return V.length>1&&V[0]==="-"}let Y=(V)=>{if(!/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(V))return!1;return!this._getCommandAndAncestors().some((q)=>q.options.map((N)=>N.short).some((N)=>/^-\d$/.test(N)))},W=null,Q=null,G=0;while(G<$.length||Q){let V=Q??$[G++];if(Q=null,V==="--"){if(Z===J)Z.push(V);Z.push(...$.slice(G));break}if(W&&(!z(V)||Y(V))){this.emit(`option:${W.name()}`,V);continue}if(W=null,z(V)){let q=this._findOption(V);if(q){if(q.required){let N=$[G++];if(N===void 0)this.optionMissingArgument(q);this.emit(`option:${q.name()}`,N)}else if(q.optional){let N=null;if(G<$.length&&(!z($[G])||Y($[G])))N=$[G++];this.emit(`option:${q.name()}`,N)}else this.emit(`option:${q.name()}`);W=q.variadic?q:null;continue}}if(V.length>2&&V[0]==="-"&&V[1]!=="-"){let q=this._findOption(`-${V[1]}`);if(q){if(q.required||q.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${q.name()}`,V.slice(2));else this.emit(`option:${q.name()}`),Q=`-${V.slice(2)}`;continue}}if(/^--[^=]+=/.test(V)){let q=V.indexOf("="),N=this._findOption(V.slice(0,q));if(N&&(N.required||N.optional)){this.emit(`option:${N.name()}`,V.slice(q+1));continue}}if(Z===X&&z(V)&&!(this.commands.length===0&&Y(V)))Z=J;if((this._enablePositionalOptions||this._passThroughOptions)&&X.length===0&&J.length===0){if(this._findCommand(V)){X.push(V),J.push(...$.slice(G));break}else if(this._getHelpCommand()&&V===this._getHelpCommand().name()){X.push(V,...$.slice(G));break}else if(this._defaultCommandName){J.push(V,...$.slice(G));break}}if(this._passThroughOptions){Z.push(V,...$.slice(G));break}Z.push(V)}return{operands:X,unknown:J}}opts(){if(this._storeOptionsAsProperties){let $={},X=this.options.length;for(let J=0;J<X;J++){let Z=this.options[J].attributeName();$[Z]=Z===this._versionOptionName?this._version:this[Z]}return $}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce(($,X)=>Object.assign($,X.opts()),{})}error($,X){if(this._outputConfiguration.outputError(`${$}
|
|
23
|
+
`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError==="string")this._outputConfiguration.writeErr(`${this._showHelpAfterError}
|
|
24
|
+
`);else if(this._showHelpAfterError)this._outputConfiguration.writeErr(`
|
|
25
|
+
`),this.outputHelp({error:!0});let J=X||{},Z=J.exitCode||1,z=J.code||"commander.error";this._exit(Z,z,$)}_parseOptionsEnv(){this.options.forEach(($)=>{if($.envVar&&$.envVar in L.env){let X=$.attributeName();if(this.getOptionValue(X)===void 0||["default","config","env"].includes(this.getOptionValueSource(X)))if($.required||$.optional)this.emit(`optionEnv:${$.name()}`,L.env[$.envVar]);else this.emit(`optionEnv:${$.name()}`)}})}_parseOptionsImplied(){let $=new u4(this.options),X=(J)=>{return this.getOptionValue(J)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(J))};this.options.filter((J)=>J.implied!==void 0&&X(J.attributeName())&&$.valueFromOption(this.getOptionValue(J.attributeName()),J)).forEach((J)=>{Object.keys(J.implied).filter((Z)=>!X(Z)).forEach((Z)=>{this.setOptionValueWithSource(Z,J.implied[Z],"implied")})})}missingArgument($){let X=`error: missing required argument '${$}'`;this.error(X,{code:"commander.missingArgument"})}optionMissingArgument($){let X=`error: option '${$.flags}' argument missing`;this.error(X,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue($){let X=`error: required option '${$.flags}' not specified`;this.error(X,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption($,X){let J=(Y)=>{let W=Y.attributeName(),Q=this.getOptionValue(W),G=this.options.find((q)=>q.negate&&W===q.attributeName()),V=this.options.find((q)=>!q.negate&&W===q.attributeName());if(G&&(G.presetArg===void 0&&Q===!1||G.presetArg!==void 0&&Q===G.presetArg))return G;return V||Y},Z=(Y)=>{let W=J(Y),Q=W.attributeName();if(this.getOptionValueSource(Q)==="env")return`environment variable '${W.envVar}'`;return`option '${W.flags}'`},z=`error: ${Z($)} cannot be used with ${Z(X)}`;this.error(z,{code:"commander.conflictingOption"})}unknownOption($){if(this._allowUnknownOption)return;let X="";if($.startsWith("--")&&this._showSuggestionAfterError){let Z=[],z=this;do{let Y=z.createHelp().visibleOptions(z).filter((W)=>W.long).map((W)=>W.long);Z=Z.concat(Y),z=z.parent}while(z&&!z._enablePositionalOptions);X=s1($,Z)}let J=`error: unknown option '${$}'${X}`;this.error(J,{code:"commander.unknownOption"})}_excessArguments($){if(this._allowExcessArguments)return;let X=this.registeredArguments.length,J=X===1?"":"s",z=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${X} argument${J} but got ${$.length}.`;this.error(z,{code:"commander.excessArguments"})}unknownCommand(){let $=this.args[0],X="";if(this._showSuggestionAfterError){let Z=[];this.createHelp().visibleCommands(this).forEach((z)=>{if(Z.push(z.name()),z.alias())Z.push(z.alias())}),X=s1($,Z)}let J=`error: unknown command '${$}'${X}`;this.error(J,{code:"commander.unknownCommand"})}version($,X,J){if($===void 0)return this._version;this._version=$,X=X||"-V, --version",J=J||"output the version number";let Z=this.createOption(X,J);return this._versionOptionName=Z.attributeName(),this._registerOption(Z),this.on("option:"+Z.name(),()=>{this._outputConfiguration.writeOut(`${$}
|
|
26
|
+
`),this._exit(0,"commander.version",$)}),this}description($,X){if($===void 0&&X===void 0)return this._description;if(this._description=$,X)this._argsDescription=X;return this}summary($){if($===void 0)return this._summary;return this._summary=$,this}alias($){if($===void 0)return this._aliases[0];let X=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)X=this.commands[this.commands.length-1];if($===X._name)throw Error("Command alias can't be the same as its name");let J=this.parent?._findCommand($);if(J){let Z=[J.name()].concat(J.aliases()).join("|");throw Error(`cannot add alias '${$}' to command '${this.name()}' as already have command '${Z}'`)}return X._aliases.push($),this}aliases($){if($===void 0)return this._aliases;return $.forEach((X)=>this.alias(X)),this}usage($){if($===void 0){if(this._usage)return this._usage;let X=this.registeredArguments.map((J)=>{return v4(J)});return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?X:[]).join(" ")}return this._usage=$,this}name($){if($===void 0)return this._name;return this._name=$,this}helpGroup($){if($===void 0)return this._helpGroupHeading??"";return this._helpGroupHeading=$,this}commandsGroup($){if($===void 0)return this._defaultCommandGroup??"";return this._defaultCommandGroup=$,this}optionsGroup($){if($===void 0)return this._defaultOptionGroup??"";return this._defaultOptionGroup=$,this}_initOptionGroup($){if(this._defaultOptionGroup&&!$.helpGroupHeading)$.helpGroup(this._defaultOptionGroup)}_initCommandGroup($){if(this._defaultCommandGroup&&!$.helpGroup())$.helpGroup(this._defaultCommandGroup)}nameFromFilename($){return this._name=l.basename($,l.extname($)),this}executableDir($){if($===void 0)return this._executableDir;return this._executableDir=$,this}helpInformation($){let X=this.createHelp(),J=this._getOutputContext($);X.prepareContext({error:J.error,helpWidth:J.helpWidth,outputHasColors:J.hasColors});let Z=X.formatHelp(this,X);if(J.hasColors)return Z;return this._outputConfiguration.stripColor(Z)}_getOutputContext($){$=$||{};let X=!!$.error,J,Z,z;if(X)J=(W)=>this._outputConfiguration.writeErr(W),Z=this._outputConfiguration.getErrHasColors(),z=this._outputConfiguration.getErrHelpWidth();else J=(W)=>this._outputConfiguration.writeOut(W),Z=this._outputConfiguration.getOutHasColors(),z=this._outputConfiguration.getOutHelpWidth();return{error:X,write:(W)=>{if(!Z)W=this._outputConfiguration.stripColor(W);return J(W)},hasColors:Z,helpWidth:z}}outputHelp($){let X;if(typeof $==="function")X=$,$=void 0;let J=this._getOutputContext($),Z={error:J.error,write:J.write,command:this};this._getCommandAndAncestors().reverse().forEach((Y)=>Y.emit("beforeAllHelp",Z)),this.emit("beforeHelp",Z);let z=this.helpInformation({error:J.error});if(X){if(z=X(z),typeof z!=="string"&&!Buffer.isBuffer(z))throw Error("outputHelp callback must return a string or a Buffer")}if(J.write(z),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",Z),this._getCommandAndAncestors().forEach((Y)=>Y.emit("afterAllHelp",Z))}helpOption($,X){if(typeof $==="boolean"){if($){if(this._helpOption===null)this._helpOption=void 0;if(this._defaultOptionGroup)this._initOptionGroup(this._getHelpOption())}else this._helpOption=null;return this}if(this._helpOption=this.createOption($??"-h, --help",X??"display help for command"),$||X)this._initOptionGroup(this._helpOption);return this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption($){return this._helpOption=$,this._initOptionGroup($),this}help($){this.outputHelp($);let X=Number(L.exitCode??0);if(X===0&&$&&typeof $!=="function"&&$.error)X=1;this._exit(X,"commander.help","(outputHelp)")}addHelpText($,X){let J=["beforeAll","before","after","afterAll"];if(!J.includes($))throw Error(`Unexpected value for position to addHelpText.
|
|
27
|
+
Expecting one of '${J.join("', '")}'`);let Z=`${$}Help`;return this.on(Z,(z)=>{let Y;if(typeof X==="function")Y=X({error:z.error,command:z.command});else Y=X;if(Y)z.write(`${Y}
|
|
28
|
+
`)}),this}_outputHelpIfRequested($){let X=this._getHelpOption();if(X&&$.find((Z)=>X.is(Z)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function r1($){return $.map((X)=>{if(!X.startsWith("--inspect"))return X;let J,Z="127.0.0.1",z="9229",Y;if((Y=X.match(/^(--inspect(-brk)?)$/))!==null)J=Y[1];else if((Y=X.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(J=Y[1],/^\d+$/.test(Y[3]))z=Y[3];else Z=Y[3];else if((Y=X.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)J=Y[1],Z=Y[3],z=Y[4];if(J&&z!=="0")return`${J}=${Z}:${parseInt(z)+1}`;return X})}function e0(){if(L.env.NO_COLOR||L.env.FORCE_COLOR==="0"||L.env.FORCE_COLOR==="false")return!1;if(L.env.FORCE_COLOR||L.env.CLICOLOR_FORCE!==void 0)return!0;return}m4.Command=$1;m4.useColor=e0});var Z5=J$((n4)=>{var{Argument:$5}=T0(),{Command:X1}=e1(),{CommanderError:l4,InvalidArgumentError:X5}=j$(),{Help:i4}=a0(),{Option:J5}=t0();n4.program=new X1;n4.createCommand=($)=>new X1($);n4.createOption=($,X)=>new J5($,X);n4.createArgument=($,X)=>new $5($,X);n4.Command=X1;n4.Option=J5;n4.Argument=$5;n4.Help=i4;n4.CommanderError=l4;n4.InvalidArgumentError=X5;n4.InvalidOptionArgumentError=X5});var z5=N4(Z5(),1),{program:D0,createCommand:w8,createArgument:M8,createOption:T8,CommanderError:L8,InvalidArgumentError:D8,InvalidOptionArgumentError:E8,Command:B8,Argument:S8,Option:j8,Help:I8}=z5.default;function U($,X,J,Z,z){if(Z==="m")throw TypeError("Private method is not writable");if(Z==="a"&&!z)throw TypeError("Private accessor was defined without a setter");if(typeof X==="function"?$!==X||!z:!X.has($))throw TypeError("Cannot write private member to an object whose class did not declare it");return Z==="a"?z.call($,J):z?z.value=J:X.set($,J),J}function K($,X,J,Z){if(J==="a"&&!Z)throw TypeError("Private accessor was defined without a getter");if(typeof X==="function"?$!==X||!Z:!X.has($))throw TypeError("Cannot read private member from an object whose class did not declare it");return J==="m"?Z:J==="a"?Z.call($):Z?Z.value:X.get($)}var J1=function(){let{crypto:$}=globalThis;if($?.randomUUID)return J1=$.randomUUID.bind($),$.randomUUID();let X=new Uint8Array(1),J=$?()=>$.getRandomValues(X)[0]:()=>Math.random()*255&255;return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(Z)=>(+Z^J()&15>>+Z/4).toString(16))};function i($){return typeof $==="object"&&$!==null&&(("name"in $)&&$.name==="AbortError"||("message"in $)&&String($.message).includes("FetchRequestCanceledException"))}var I$=($)=>{if($ instanceof Error)return $;if(typeof $==="object"&&$!==null){try{if(Object.prototype.toString.call($)==="[object Error]"){let X=Error($.message,$.cause?{cause:$.cause}:{});if($.stack)X.stack=$.stack;if($.cause&&!X.cause)X.cause=$.cause;if($.name)X.name=$.name;return X}}catch{}try{return Error(JSON.stringify($))}catch{}}return Error($)};class H extends Error{}class F extends H{constructor($,X,J,Z){super(`${F.makeMessage($,X,J)}`);this.status=$,this.headers=Z,this.requestID=Z?.get("request-id"),this.error=X}static makeMessage($,X,J){let Z=X?.message?typeof X.message==="string"?X.message:JSON.stringify(X.message):X?JSON.stringify(X):J;if($&&Z)return`${$} ${Z}`;if($)return`${$} status code (no body)`;if(Z)return Z;return"(no status code or body)"}static generate($,X,J,Z){if(!$||!Z)return new Z$({message:J,cause:I$(X)});let z=X;if($===400)return new x$($,z,J,Z);if($===401)return new O$($,z,J,Z);if($===403)return new P$($,z,J,Z);if($===404)return new C$($,z,J,Z);if($===409)return new A$($,z,J,Z);if($===422)return new R$($,z,J,Z);if($===429)return new f$($,z,J,Z);if($>=500)return new k$($,z,J,Z);return new F($,z,J,Z)}}class C extends F{constructor({message:$}={}){super(void 0,void 0,$||"Request was aborted.",void 0)}}class Z$ extends F{constructor({message:$,cause:X}){super(void 0,void 0,$||"Connection error.",void 0);if(X)this.cause=X}}class F$ extends Z${constructor({message:$}={}){super({message:$??"Request timed out."})}}class x$ extends F{}class O$ extends F{}class P$ extends F{}class C$ extends F{}class A$ extends F{}class R$ extends F{}class f$ extends F{}class k$ extends F{}var WX=/^[a-z][a-z0-9+.-]*:/i,Y5=($)=>{return WX.test($)},Z1=($)=>(Z1=Array.isArray,Z1($)),z1=Z1;function E0($){if(typeof $!=="object")return{};return $??{}}function W5($){if(!$)return!0;for(let X in $)return!1;return!0}function Q5($,X){return Object.prototype.hasOwnProperty.call($,X)}var K5=($,X)=>{if(typeof X!=="number"||!Number.isInteger(X))throw new H(`${$} must be an integer`);if(X<0)throw new H(`${$} must be a positive integer`);return X};var B0=($)=>{try{return JSON.parse($)}catch(X){return}};var G5=($)=>new Promise((X)=>setTimeout(X,$));var s="0.71.2";var N5=()=>{return typeof window<"u"&&typeof window.document<"u"&&typeof navigator<"u"};function QX(){if(typeof Deno<"u"&&Deno.build!=null)return"deno";if(typeof EdgeRuntime<"u")return"edge";if(Object.prototype.toString.call(typeof globalThis.process<"u"?globalThis.process:0)==="[object process]")return"node";return"unknown"}var KX=()=>{let $=QX();if($==="deno")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":s,"X-Stainless-OS":q5(Deno.build.os),"X-Stainless-Arch":V5(Deno.build.arch),"X-Stainless-Runtime":"deno","X-Stainless-Runtime-Version":typeof Deno.version==="string"?Deno.version:Deno.version?.deno??"unknown"};if(typeof EdgeRuntime<"u")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":s,"X-Stainless-OS":"Unknown","X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":"edge","X-Stainless-Runtime-Version":globalThis.process.version};if($==="node")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":s,"X-Stainless-OS":q5(globalThis.process.platform??"unknown"),"X-Stainless-Arch":V5(globalThis.process.arch??"unknown"),"X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":globalThis.process.version??"unknown"};let X=GX();if(X)return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":s,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":`browser:${X.browser}`,"X-Stainless-Runtime-Version":X.version};return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":s,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":"unknown","X-Stainless-Runtime-Version":"unknown"}};function GX(){if(typeof navigator>"u"||!navigator)return null;let $=[{key:"edge",pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"chrome",pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"firefox",pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"safari",pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}];for(let{key:X,pattern:J}of $){let Z=J.exec(navigator.userAgent);if(Z){let z=Z[1]||0,Y=Z[2]||0,W=Z[3]||0;return{browser:X,version:`${z}.${Y}.${W}`}}}return null}var V5=($)=>{if($==="x32")return"x32";if($==="x86_64"||$==="x64")return"x64";if($==="arm")return"arm";if($==="aarch64"||$==="arm64")return"arm64";if($)return`other:${$}`;return"unknown"},q5=($)=>{if($=$.toLowerCase(),$.includes("ios"))return"iOS";if($==="android")return"Android";if($==="darwin")return"MacOS";if($==="win32")return"Windows";if($==="freebsd")return"FreeBSD";if($==="openbsd")return"OpenBSD";if($==="linux")return"Linux";if($)return`Other:${$}`;return"Unknown"},U5,H5=()=>{return U5??(U5=KX())};function w5(){if(typeof fetch<"u")return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function Y1(...$){let X=globalThis.ReadableStream;if(typeof X>"u")throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new X(...$)}function S0($){let X=Symbol.asyncIterator in $?$[Symbol.asyncIterator]():$[Symbol.iterator]();return Y1({start(){},async pull(J){let{done:Z,value:z}=await X.next();if(Z)J.close();else J.enqueue(z)},async cancel(){await X.return?.()}})}function y$($){if($[Symbol.asyncIterator])return $;let X=$.getReader();return{async next(){try{let J=await X.read();if(J?.done)X.releaseLock();return J}catch(J){throw X.releaseLock(),J}},async return(){let J=X.cancel();return X.releaseLock(),await J,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function M5($){if($===null||typeof $!=="object")return;if($[Symbol.asyncIterator]){await $[Symbol.asyncIterator]().return?.();return}let X=$.getReader(),J=X.cancel();X.releaseLock(),await J}var T5=({headers:$,body:X})=>{return{bodyHeaders:{"content-type":"application/json"},body:JSON.stringify(X)}};function E5($){let X=0;for(let z of $)X+=z.length;let J=new Uint8Array(X),Z=0;for(let z of $)J.set(z,Z),Z+=z.length;return J}var L5;function _$($){let X;return(L5??(X=new globalThis.TextEncoder,L5=X.encode.bind(X)))($)}var D5;function W1($){let X;return(D5??(X=new globalThis.TextDecoder,D5=X.decode.bind(X)))($)}var f,k;class r{constructor(){f.set(this,void 0),k.set(this,void 0),U(this,f,new Uint8Array,"f"),U(this,k,null,"f")}decode($){if($==null)return[];let X=$ instanceof ArrayBuffer?new Uint8Array($):typeof $==="string"?_$($):$;U(this,f,E5([K(this,f,"f"),X]),"f");let J=[],Z;while((Z=UX(K(this,f,"f"),K(this,k,"f")))!=null){if(Z.carriage&&K(this,k,"f")==null){U(this,k,Z.index,"f");continue}if(K(this,k,"f")!=null&&(Z.index!==K(this,k,"f")+1||Z.carriage)){J.push(W1(K(this,f,"f").subarray(0,K(this,k,"f")-1))),U(this,f,K(this,f,"f").subarray(K(this,k,"f")),"f"),U(this,k,null,"f");continue}let z=K(this,k,"f")!==null?Z.preceding-1:Z.preceding,Y=W1(K(this,f,"f").subarray(0,z));J.push(Y),U(this,f,K(this,f,"f").subarray(Z.index),"f"),U(this,k,null,"f")}return J}flush(){if(!K(this,f,"f").length)return[];return this.decode(`
|
|
29
|
+
`)}}f=new WeakMap,k=new WeakMap;r.NEWLINE_CHARS=new Set([`
|
|
30
|
+
`,"\r"]);r.NEWLINE_REGEXP=/\r\n|[\n\r]/g;function UX($,X){for(let z=X??0;z<$.length;z++){if($[z]===10)return{preceding:z,index:z+1,carriage:!1};if($[z]===13)return{preceding:z,index:z+1,carriage:!0}}return null}function B5($){for(let Z=0;Z<$.length-1;Z++){if($[Z]===10&&$[Z+1]===10)return Z+2;if($[Z]===13&&$[Z+1]===13)return Z+2;if($[Z]===13&&$[Z+1]===10&&Z+3<$.length&&$[Z+2]===13&&$[Z+3]===10)return Z+4}return-1}var I0={off:0,error:200,warn:300,info:400,debug:500},Q1=($,X,J)=>{if(!$)return;if(Q5(I0,$))return $;O(J).warn(`${X} was set to ${JSON.stringify($)}, expected one of ${JSON.stringify(Object.keys(I0))}`);return};function b$(){}function j0($,X,J){if(!X||I0[$]>I0[J])return b$;else return X[$].bind(X)}var NX={error:b$,warn:b$,info:b$,debug:b$},S5=new WeakMap;function O($){let X=$.logger,J=$.logLevel??"off";if(!X)return NX;let Z=S5.get(X);if(Z&&Z[0]===J)return Z[1];let z={error:j0("error",X,J),warn:j0("warn",X,J),info:j0("info",X,J),debug:j0("debug",X,J)};return S5.set(X,[J,z]),z}var n=($)=>{if($.options)$.options={...$.options},delete $.options.headers;if($.headers)$.headers=Object.fromEntries(($.headers instanceof Headers?[...$.headers]:Object.entries($.headers)).map(([X,J])=>[X,X.toLowerCase()==="x-api-key"||X.toLowerCase()==="authorization"||X.toLowerCase()==="cookie"||X.toLowerCase()==="set-cookie"?"***":J]));if("retryOfRequestLogID"in $){if($.retryOfRequestLogID)$.retryOf=$.retryOfRequestLogID;delete $.retryOfRequestLogID}return $};var h$;class y{constructor($,X,J){this.iterator=$,h$.set(this,void 0),this.controller=X,U(this,h$,J,"f")}static fromSSEResponse($,X,J){let Z=!1,z=J?O(J):console;async function*Y(){if(Z)throw new H("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");Z=!0;let W=!1;try{for await(let Q of HX($,X)){if(Q.event==="completion")try{yield JSON.parse(Q.data)}catch(G){throw z.error("Could not parse message into JSON:",Q.data),z.error("From chunk:",Q.raw),G}if(Q.event==="message_start"||Q.event==="message_delta"||Q.event==="message_stop"||Q.event==="content_block_start"||Q.event==="content_block_delta"||Q.event==="content_block_stop")try{yield JSON.parse(Q.data)}catch(G){throw z.error("Could not parse message into JSON:",Q.data),z.error("From chunk:",Q.raw),G}if(Q.event==="ping")continue;if(Q.event==="error")throw new F(void 0,B0(Q.data)??Q.data,void 0,$.headers)}W=!0}catch(Q){if(i(Q))return;throw Q}finally{if(!W)X.abort()}}return new y(Y,X,J)}static fromReadableStream($,X,J){let Z=!1;async function*z(){let W=new r,Q=y$($);for await(let G of Q)for(let V of W.decode(G))yield V;for(let G of W.flush())yield G}async function*Y(){if(Z)throw new H("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");Z=!0;let W=!1;try{for await(let Q of z()){if(W)continue;if(Q)yield JSON.parse(Q)}W=!0}catch(Q){if(i(Q))return;throw Q}finally{if(!W)X.abort()}}return new y(Y,X,J)}[(h$=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let $=[],X=[],J=this.iterator(),Z=(z)=>{return{next:()=>{if(z.length===0){let Y=J.next();$.push(Y),X.push(Y)}return z.shift()}}};return[new y(()=>Z($),this.controller,K(this,h$,"f")),new y(()=>Z(X),this.controller,K(this,h$,"f"))]}toReadableStream(){let $=this,X;return Y1({async start(){X=$[Symbol.asyncIterator]()},async pull(J){try{let{value:Z,done:z}=await X.next();if(z)return J.close();let Y=_$(JSON.stringify(Z)+`
|
|
31
|
+
`);J.enqueue(Y)}catch(Z){J.error(Z)}},async cancel(){await X.return?.()}})}}async function*HX($,X){if(!$.body){if(X.abort(),typeof globalThis.navigator<"u"&&globalThis.navigator.product==="ReactNative")throw new H("The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api");throw new H("Attempted to iterate over a response with no body")}let J=new j5,Z=new r,z=y$($.body);for await(let Y of wX(z))for(let W of Z.decode(Y)){let Q=J.decode(W);if(Q)yield Q}for(let Y of Z.flush()){let W=J.decode(Y);if(W)yield W}}async function*wX($){let X=new Uint8Array;for await(let J of $){if(J==null)continue;let Z=J instanceof ArrayBuffer?new Uint8Array(J):typeof J==="string"?_$(J):J,z=new Uint8Array(X.length+Z.length);z.set(X),z.set(Z,X.length),X=z;let Y;while((Y=B5(X))!==-1)yield X.slice(0,Y),X=X.slice(Y)}if(X.length>0)yield X}class j5{constructor(){this.event=null,this.data=[],this.chunks=[]}decode($){if($.endsWith("\r"))$=$.substring(0,$.length-1);if(!$){if(!this.event&&!this.data.length)return null;let z={event:this.event,data:this.data.join(`
|
|
32
|
+
`),raw:this.chunks};return this.event=null,this.data=[],this.chunks=[],z}if(this.chunks.push($),$.startsWith(":"))return null;let[X,J,Z]=MX($,":");if(Z.startsWith(" "))Z=Z.substring(1);if(X==="event")this.event=Z;else if(X==="data")this.data.push(Z);return null}}function MX($,X){let J=$.indexOf(X);if(J!==-1)return[$.substring(0,J),X,$.substring(J+X.length)];return[$,"",""]}async function F0($,X){let{response:J,requestLogID:Z,retryOfRequestLogID:z,startTime:Y}=X,W=await(async()=>{if(X.options.stream){if(O($).debug("response",J.status,J.url,J.headers,J.body),X.options.__streamClass)return X.options.__streamClass.fromSSEResponse(J,X.controller);return y.fromSSEResponse(J,X.controller)}if(J.status===204)return null;if(X.options.__binaryResponse)return J;let G=J.headers.get("content-type")?.split(";")[0]?.trim();if(G?.includes("application/json")||G?.endsWith("+json")){let N=await J.json();return K1(N,J)}return await J.text()})();return O($).debug(`[${Z}] response parsed`,n({retryOfRequestLogID:z,url:J.url,status:J.status,body:W,durationMs:Date.now()-Y})),W}function K1($,X){if(!$||typeof $!=="object"||Array.isArray($))return $;return Object.defineProperty($,"_request_id",{value:X.headers.get("request-id"),enumerable:!1})}var v$;class z$ extends Promise{constructor($,X,J=F0){super((Z)=>{Z(null)});this.responsePromise=X,this.parseResponse=J,v$.set(this,void 0),U(this,v$,$,"f")}_thenUnwrap($){return new z$(K(this,v$,"f"),this.responsePromise,async(X,J)=>K1($(await this.parseResponse(X,J),J),J.response))}asResponse(){return this.responsePromise.then(($)=>$.response)}async withResponse(){let[$,X]=await Promise.all([this.parse(),this.asResponse()]);return{data:$,response:X,request_id:X.headers.get("request-id")}}parse(){if(!this.parsedPromise)this.parsedPromise=this.responsePromise.then(($)=>this.parseResponse(K(this,v$,"f"),$));return this.parsedPromise}then($,X){return this.parse().then($,X)}catch($){return this.parse().catch($)}finally($){return this.parse().finally($)}}v$=new WeakMap;var x0;class G1{constructor($,X,J,Z){x0.set(this,void 0),U(this,x0,$,"f"),this.options=Z,this.response=X,this.body=J}hasNextPage(){if(!this.getPaginatedItems().length)return!1;return this.nextPageRequestOptions()!=null}async getNextPage(){let $=this.nextPageRequestOptions();if(!$)throw new H("No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.");return await K(this,x0,"f").requestAPIList(this.constructor,$)}async*iterPages(){let $=this;yield $;while($.hasNextPage())$=await $.getNextPage(),yield $}async*[(x0=new WeakMap,Symbol.asyncIterator)](){for await(let $ of this.iterPages())for(let X of $.getPaginatedItems())yield X}}class O0 extends z${constructor($,X,J){super($,X,async(Z,z)=>new J(Z,z.response,await F0(Z,z),z.options))}async*[Symbol.asyncIterator](){let $=await this;for await(let X of $)yield X}}class u extends G1{constructor($,X,J,Z){super($,X,J,Z);this.data=J.data||[],this.has_more=J.has_more||!1,this.first_id=J.first_id||null,this.last_id=J.last_id||null}getPaginatedItems(){return this.data??[]}hasNextPage(){if(this.has_more===!1)return!1;return super.hasNextPage()}nextPageRequestOptions(){if(this.options.query?.before_id){let X=this.first_id;if(!X)return null;return{...this.options,query:{...E0(this.options.query),before_id:X}}}let $=this.last_id;if(!$)return null;return{...this.options,query:{...E0(this.options.query),after_id:$}}}}class g$ extends G1{constructor($,X,J,Z){super($,X,J,Z);this.data=J.data||[],this.has_more=J.has_more||!1,this.next_page=J.next_page||null}getPaginatedItems(){return this.data??[]}hasNextPage(){if(this.has_more===!1)return!1;return super.hasNextPage()}nextPageRequestOptions(){let $=this.next_page;if(!$)return null;return{...this.options,query:{...E0(this.options.query),page:$}}}}var q1=()=>{if(typeof File>"u"){let{process:$}=globalThis,X=typeof $?.versions?.node==="string"&&parseInt($.versions.node.split("."))<20;throw Error("`File` is not defined as a global, which is required for file uploads."+(X?" Update to Node 20 LTS or newer, or set `globalThis.File` to `import('node:buffer').File`.":""))}};function Y$($,X,J){return q1(),new File($,X??"unknown_file",J)}function c$($){return(typeof $==="object"&&$!==null&&(("name"in $)&&$.name&&String($.name)||("url"in $)&&$.url&&String($.url)||("filename"in $)&&$.filename&&String($.filename)||("path"in $)&&$.path&&String($.path))||"").split(/[\\/]/).pop()||void 0}var U1=($)=>$!=null&&typeof $==="object"&&typeof $[Symbol.asyncIterator]==="function";var q$=async($,X)=>{return{...$,body:await DX($.body,X)}},I5=new WeakMap;function LX($){let X=typeof $==="function"?$:$.fetch,J=I5.get(X);if(J)return J;let Z=(async()=>{try{let z="Response"in X?X.Response:(await X("data:,")).constructor,Y=new FormData;if(Y.toString()===await new z(Y).text())return!1;return!0}catch{return!0}})();return I5.set(X,Z),Z}var DX=async($,X)=>{if(!await LX(X))throw TypeError("The provided fetch function does not support file uploads with the current global FormData class.");let J=new FormData;return await Promise.all(Object.entries($||{}).map(([Z,z])=>V1(J,Z,z))),J},EX=($)=>$ instanceof Blob&&("name"in $);var V1=async($,X,J)=>{if(J===void 0)return;if(J==null)throw TypeError(`Received null for "${X}"; to pass null in FormData, you must use the string 'null'`);if(typeof J==="string"||typeof J==="number"||typeof J==="boolean")$.append(X,String(J));else if(J instanceof Response){let Z={},z=J.headers.get("Content-Type");if(z)Z={type:z};$.append(X,Y$([await J.blob()],c$(J),Z))}else if(U1(J))$.append(X,Y$([await new Response(S0(J)).blob()],c$(J)));else if(EX(J))$.append(X,Y$([J],c$(J),{type:J.type}));else if(Array.isArray(J))await Promise.all(J.map((Z)=>V1($,X+"[]",Z)));else if(typeof J==="object")await Promise.all(Object.entries(J).map(([Z,z])=>V1($,`${X}[${Z}]`,z)));else throw TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${J} instead`)};var F5=($)=>$!=null&&typeof $==="object"&&typeof $.size==="number"&&typeof $.type==="string"&&typeof $.text==="function"&&typeof $.slice==="function"&&typeof $.arrayBuffer==="function",BX=($)=>$!=null&&typeof $==="object"&&typeof $.name==="string"&&typeof $.lastModified==="number"&&F5($),SX=($)=>$!=null&&typeof $==="object"&&typeof $.url==="string"&&typeof $.blob==="function";async function P0($,X,J){if(q1(),$=await $,X||(X=c$($)),BX($)){if($ instanceof File&&X==null&&J==null)return $;return Y$([await $.arrayBuffer()],X??$.name,{type:$.type,lastModified:$.lastModified,...J})}if(SX($)){let z=await $.blob();return X||(X=new URL($.url).pathname.split(/[\\/]/).pop()),Y$(await N1(z),X,J)}let Z=await N1($);if(!J?.type){let z=Z.find((Y)=>typeof Y==="object"&&("type"in Y)&&Y.type);if(typeof z==="string")J={...J,type:z}}return Y$(Z,X,J)}async function N1($){let X=[];if(typeof $==="string"||ArrayBuffer.isView($)||$ instanceof ArrayBuffer)X.push($);else if(F5($))X.push($ instanceof Blob?$:await $.arrayBuffer());else if(U1($))for await(let J of $)X.push(...await N1(J));else{let J=$?.constructor?.name;throw Error(`Unexpected data type: ${typeof $}${J?`; constructor: ${J}`:""}${jX($)}`)}return X}function jX($){if(typeof $!=="object"||$===null)return"";return`; props: [${Object.getOwnPropertyNames($).map((J)=>`"${J}"`).join(", ")}]`}class S{constructor($){this._client=$}}var x5=Symbol.for("brand.privateNullableHeaders");function*FX($){if(!$)return;if(x5 in $){let{values:Z,nulls:z}=$;yield*Z.entries();for(let Y of z)yield[Y,null];return}let X=!1,J;if($ instanceof Headers)J=$.entries();else if(z1($))J=$;else X=!0,J=Object.entries($??{});for(let Z of J){let z=Z[0];if(typeof z!=="string")throw TypeError("expected header name to be a string");let Y=z1(Z[1])?Z[1]:[Z[1]],W=!1;for(let Q of Y){if(Q===void 0)continue;if(X&&!W)W=!0,yield[z,null];yield[z,Q]}}}var M=($)=>{let X=new Headers,J=new Set;for(let Z of $){let z=new Set;for(let[Y,W]of FX(Z)){let Q=Y.toLowerCase();if(!z.has(Q))X.delete(Y),z.add(Q);if(W===null)X.delete(Y),J.add(Q);else X.append(Y,W),J.delete(Q)}}return{[x5]:!0,values:X,nulls:J}};function P5($){return $.replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/g,encodeURIComponent)}var O5=Object.freeze(Object.create(null)),xX=($=P5)=>function(J,...Z){if(J.length===1)return J[0];let z=!1,Y=[],W=J.reduce((q,N,w)=>{if(/[?#]/.test(N))z=!0;let T=Z[w],R=(z?encodeURIComponent:$)(""+T);if(w!==Z.length&&(T==null||typeof T==="object"&&T.toString===Object.getPrototypeOf(Object.getPrototypeOf(T.hasOwnProperty??O5)??O5)?.toString))R=T+"",Y.push({start:q.length+N.length,length:R.length,error:`Value of type ${Object.prototype.toString.call(T).slice(8,-1)} is not a valid path parameter`});return q+N+(w===Z.length?"":R)},""),Q=W.split(/[?#]/,1)[0],G=/(?<=^|\/)(?:\.|%2e){1,2}(?=\/|$)/gi,V;while((V=G.exec(Q))!==null)Y.push({start:V.index,length:V[0].length,error:`Value "${V[0]}" can't be safely passed as a path parameter`});if(Y.sort((q,N)=>q.start-N.start),Y.length>0){let q=0,N=Y.reduce((w,T)=>{let R=" ".repeat(T.start-q),c="^".repeat(T.length);return q=T.start+T.length,w+R+c},"");throw new H(`Path parameters result in path with invalid segments:
|
|
33
|
+
${Y.map((w)=>w.error).join(`
|
|
34
|
+
`)}
|
|
35
|
+
${W}
|
|
36
|
+
${N}`)}return W},D=xX(P5);class u$ extends S{list($={},X){let{betas:J,...Z}=$??{};return this._client.getAPIList("/v1/files",u,{query:Z,...X,headers:M([{"anthropic-beta":[...J??[],"files-api-2025-04-14"].toString()},X?.headers])})}delete($,X={},J){let{betas:Z}=X??{};return this._client.delete(D`/v1/files/${$}`,{...J,headers:M([{"anthropic-beta":[...Z??[],"files-api-2025-04-14"].toString()},J?.headers])})}download($,X={},J){let{betas:Z}=X??{};return this._client.get(D`/v1/files/${$}/content`,{...J,headers:M([{"anthropic-beta":[...Z??[],"files-api-2025-04-14"].toString(),Accept:"application/binary"},J?.headers]),__binaryResponse:!0})}retrieveMetadata($,X={},J){let{betas:Z}=X??{};return this._client.get(D`/v1/files/${$}`,{...J,headers:M([{"anthropic-beta":[...Z??[],"files-api-2025-04-14"].toString()},J?.headers])})}upload($,X){let{betas:J,...Z}=$;return this._client.post("/v1/files",q$({body:Z,...X,headers:M([{"anthropic-beta":[...J??[],"files-api-2025-04-14"].toString()},X?.headers])},this._client))}}class m$ extends S{retrieve($,X={},J){let{betas:Z}=X??{};return this._client.get(D`/v1/models/${$}?beta=true`,{...J,headers:M([{...Z?.toString()!=null?{"anthropic-beta":Z?.toString()}:void 0},J?.headers])})}list($={},X){let{betas:J,...Z}=$??{};return this._client.getAPIList("/v1/models?beta=true",u,{query:Z,...X,headers:M([{...J?.toString()!=null?{"anthropic-beta":J?.toString()}:void 0},X?.headers])})}}var C0={"claude-opus-4-20250514":8192,"claude-opus-4-0":8192,"claude-4-opus-20250514":8192,"anthropic.claude-opus-4-20250514-v1:0":8192,"claude-opus-4@20250514":8192,"claude-opus-4-1-20250805":8192,"anthropic.claude-opus-4-1-20250805-v1:0":8192,"claude-opus-4-1@20250805":8192};function H1($,X,J){if(!X||!("parse"in(X.output_format??{})))return{...$,content:$.content.map((Z)=>{if(Z.type==="text"){let z=Object.defineProperty({...Z},"parsed_output",{value:null,enumerable:!1});return Object.defineProperty(z,"parsed",{get(){return J.logger.warn("The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead."),null},enumerable:!1})}return Z}),parsed_output:null};return w1($,X,J)}function w1($,X,J){let Z=null,z=$.content.map((Y)=>{if(Y.type==="text"){let W=CX(X,Y.text);if(Z===null)Z=W;let Q=Object.defineProperty({...Y},"parsed_output",{value:W,enumerable:!1});return Object.defineProperty(Q,"parsed",{get(){return J.logger.warn("The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead."),W},enumerable:!1})}return Y});return{...$,content:z,parsed_output:Z}}function CX($,X){if($.output_format?.type!=="json_schema")return null;try{if("parse"in $.output_format)return $.output_format.parse(X);return JSON.parse(X)}catch(J){throw new H(`Failed to parse structured output: ${J}`)}}var AX=($)=>{let X=0,J=[];while(X<$.length){let Z=$[X];if(Z==="\\"){X++;continue}if(Z==="{"){J.push({type:"brace",value:"{"}),X++;continue}if(Z==="}"){J.push({type:"brace",value:"}"}),X++;continue}if(Z==="["){J.push({type:"paren",value:"["}),X++;continue}if(Z==="]"){J.push({type:"paren",value:"]"}),X++;continue}if(Z===":"){J.push({type:"separator",value:":"}),X++;continue}if(Z===","){J.push({type:"delimiter",value:","}),X++;continue}if(Z==='"'){let Q="",G=!1;Z=$[++X];while(Z!=='"'){if(X===$.length){G=!0;break}if(Z==="\\"){if(X++,X===$.length){G=!0;break}Q+=Z+$[X],Z=$[++X]}else Q+=Z,Z=$[++X]}if(Z=$[++X],!G)J.push({type:"string",value:Q});continue}if(Z&&/\s/.test(Z)){X++;continue}let Y=/[0-9]/;if(Z&&Y.test(Z)||Z==="-"||Z==="."){let Q="";if(Z==="-")Q+=Z,Z=$[++X];while(Z&&Y.test(Z)||Z===".")Q+=Z,Z=$[++X];J.push({type:"number",value:Q});continue}let W=/[a-z]/i;if(Z&&W.test(Z)){let Q="";while(Z&&W.test(Z)){if(X===$.length)break;Q+=Z,Z=$[++X]}if(Q=="true"||Q=="false"||Q==="null")J.push({type:"name",value:Q});else{X++;continue}continue}X++}return J},U$=($)=>{if($.length===0)return $;let X=$[$.length-1];switch(X.type){case"separator":return $=$.slice(0,$.length-1),U$($);break;case"number":let J=X.value[X.value.length-1];if(J==="."||J==="-")return $=$.slice(0,$.length-1),U$($);case"string":let Z=$[$.length-2];if(Z?.type==="delimiter")return $=$.slice(0,$.length-1),U$($);else if(Z?.type==="brace"&&Z.value==="{")return $=$.slice(0,$.length-1),U$($);break;case"delimiter":return $=$.slice(0,$.length-1),U$($);break}return $},RX=($)=>{let X=[];if($.map((J)=>{if(J.type==="brace")if(J.value==="{")X.push("}");else X.splice(X.lastIndexOf("}"),1);if(J.type==="paren")if(J.value==="[")X.push("]");else X.splice(X.lastIndexOf("]"),1)}),X.length>0)X.reverse().map((J)=>{if(J==="}")$.push({type:"brace",value:"}"});else if(J==="]")$.push({type:"paren",value:"]"})});return $},fX=($)=>{let X="";return $.map((J)=>{switch(J.type){case"string":X+='"'+J.value+'"';break;default:X+=J.value;break}}),X},A0=($)=>JSON.parse(fX(RX(U$(AX($)))));var h,e,N$,d$,R0,p$,l$,f0,i$,o,n$,k0,y0,W$,_0,b0,o$,M1,C5,h0,T1,L1,D1,A5,R5="__json_buf";function f5($){return $.type==="tool_use"||$.type==="server_tool_use"||$.type==="mcp_tool_use"}class a${constructor($,X){h.add(this),this.messages=[],this.receivedMessages=[],e.set(this,void 0),N$.set(this,null),this.controller=new AbortController,d$.set(this,void 0),R0.set(this,()=>{}),p$.set(this,()=>{}),l$.set(this,void 0),f0.set(this,()=>{}),i$.set(this,()=>{}),o.set(this,{}),n$.set(this,!1),k0.set(this,!1),y0.set(this,!1),W$.set(this,!1),_0.set(this,void 0),b0.set(this,void 0),o$.set(this,void 0),h0.set(this,(J)=>{if(U(this,k0,!0,"f"),i(J))J=new C;if(J instanceof C)return U(this,y0,!0,"f"),this._emit("abort",J);if(J instanceof H)return this._emit("error",J);if(J instanceof Error){let Z=new H(J.message);return Z.cause=J,this._emit("error",Z)}return this._emit("error",new H(String(J)))}),U(this,d$,new Promise((J,Z)=>{U(this,R0,J,"f"),U(this,p$,Z,"f")}),"f"),U(this,l$,new Promise((J,Z)=>{U(this,f0,J,"f"),U(this,i$,Z,"f")}),"f"),K(this,d$,"f").catch(()=>{}),K(this,l$,"f").catch(()=>{}),U(this,N$,$,"f"),U(this,o$,X?.logger??console,"f")}get response(){return K(this,_0,"f")}get request_id(){return K(this,b0,"f")}async withResponse(){U(this,W$,!0,"f");let $=await K(this,d$,"f");if(!$)throw Error("Could not resolve a `Response` object");return{data:this,response:$,request_id:$.headers.get("request-id")}}static fromReadableStream($){let X=new a$(null);return X._run(()=>X._fromReadableStream($)),X}static createMessage($,X,J,{logger:Z}={}){let z=new a$(X,{logger:Z});for(let Y of X.messages)z._addMessageParam(Y);return U(z,N$,{...X,stream:!0},"f"),z._run(()=>z._createMessage($,{...X,stream:!0},{...J,headers:{...J?.headers,"X-Stainless-Helper-Method":"stream"}})),z}_run($){$().then(()=>{this._emitFinal(),this._emit("end")},K(this,h0,"f"))}_addMessageParam($){this.messages.push($)}_addMessage($,X=!0){if(this.receivedMessages.push($),X)this._emit("message",$)}async _createMessage($,X,J){let Z=J?.signal,z;if(Z){if(Z.aborted)this.controller.abort();z=this.controller.abort.bind(this.controller),Z.addEventListener("abort",z)}try{K(this,h,"m",T1).call(this);let{response:Y,data:W}=await $.create({...X,stream:!0},{...J,signal:this.controller.signal}).withResponse();this._connected(Y);for await(let Q of W)K(this,h,"m",L1).call(this,Q);if(W.controller.signal?.aborted)throw new C;K(this,h,"m",D1).call(this)}finally{if(Z&&z)Z.removeEventListener("abort",z)}}_connected($){if(this.ended)return;U(this,_0,$,"f"),U(this,b0,$?.headers.get("request-id"),"f"),K(this,R0,"f").call(this,$),this._emit("connect")}get ended(){return K(this,n$,"f")}get errored(){return K(this,k0,"f")}get aborted(){return K(this,y0,"f")}abort(){this.controller.abort()}on($,X){return(K(this,o,"f")[$]||(K(this,o,"f")[$]=[])).push({listener:X}),this}off($,X){let J=K(this,o,"f")[$];if(!J)return this;let Z=J.findIndex((z)=>z.listener===X);if(Z>=0)J.splice(Z,1);return this}once($,X){return(K(this,o,"f")[$]||(K(this,o,"f")[$]=[])).push({listener:X,once:!0}),this}emitted($){return new Promise((X,J)=>{if(U(this,W$,!0,"f"),$!=="error")this.once("error",J);this.once($,X)})}async done(){U(this,W$,!0,"f"),await K(this,l$,"f")}get currentMessage(){return K(this,e,"f")}async finalMessage(){return await this.done(),K(this,h,"m",M1).call(this)}async finalText(){return await this.done(),K(this,h,"m",C5).call(this)}_emit($,...X){if(K(this,n$,"f"))return;if($==="end")U(this,n$,!0,"f"),K(this,f0,"f").call(this);let J=K(this,o,"f")[$];if(J)K(this,o,"f")[$]=J.filter((Z)=>!Z.once),J.forEach(({listener:Z})=>Z(...X));if($==="abort"){let Z=X[0];if(!K(this,W$,"f")&&!J?.length)Promise.reject(Z);K(this,p$,"f").call(this,Z),K(this,i$,"f").call(this,Z),this._emit("end");return}if($==="error"){let Z=X[0];if(!K(this,W$,"f")&&!J?.length)Promise.reject(Z);K(this,p$,"f").call(this,Z),K(this,i$,"f").call(this,Z),this._emit("end")}}_emitFinal(){if(this.receivedMessages.at(-1))this._emit("finalMessage",K(this,h,"m",M1).call(this))}async _fromReadableStream($,X){let J=X?.signal,Z;if(J){if(J.aborted)this.controller.abort();Z=this.controller.abort.bind(this.controller),J.addEventListener("abort",Z)}try{K(this,h,"m",T1).call(this),this._connected(null);let z=y.fromReadableStream($,this.controller);for await(let Y of z)K(this,h,"m",L1).call(this,Y);if(z.controller.signal?.aborted)throw new C;K(this,h,"m",D1).call(this)}finally{if(J&&Z)J.removeEventListener("abort",Z)}}[(e=new WeakMap,N$=new WeakMap,d$=new WeakMap,R0=new WeakMap,p$=new WeakMap,l$=new WeakMap,f0=new WeakMap,i$=new WeakMap,o=new WeakMap,n$=new WeakMap,k0=new WeakMap,y0=new WeakMap,W$=new WeakMap,_0=new WeakMap,b0=new WeakMap,o$=new WeakMap,h0=new WeakMap,h=new WeakSet,M1=function(){if(this.receivedMessages.length===0)throw new H("stream ended without producing a Message with role=assistant");return this.receivedMessages.at(-1)},C5=function(){if(this.receivedMessages.length===0)throw new H("stream ended without producing a Message with role=assistant");let X=this.receivedMessages.at(-1).content.filter((J)=>J.type==="text").map((J)=>J.text);if(X.length===0)throw new H("stream ended without producing a content block with type=text");return X.join(" ")},T1=function(){if(this.ended)return;U(this,e,void 0,"f")},L1=function(X){if(this.ended)return;let J=K(this,h,"m",A5).call(this,X);switch(this._emit("streamEvent",X,J),X.type){case"content_block_delta":{let Z=J.content.at(-1);switch(X.delta.type){case"text_delta":{if(Z.type==="text")this._emit("text",X.delta.text,Z.text||"");break}case"citations_delta":{if(Z.type==="text")this._emit("citation",X.delta.citation,Z.citations??[]);break}case"input_json_delta":{if(f5(Z)&&Z.input)this._emit("inputJson",X.delta.partial_json,Z.input);break}case"thinking_delta":{if(Z.type==="thinking")this._emit("thinking",X.delta.thinking,Z.thinking);break}case"signature_delta":{if(Z.type==="thinking")this._emit("signature",Z.signature);break}default:k5(X.delta)}break}case"message_stop":{this._addMessageParam(J),this._addMessage(H1(J,K(this,N$,"f"),{logger:K(this,o$,"f")}),!0);break}case"content_block_stop":{this._emit("contentBlock",J.content.at(-1));break}case"message_start":{U(this,e,J,"f");break}case"content_block_start":case"message_delta":break}},D1=function(){if(this.ended)throw new H("stream has ended, this shouldn't happen");let X=K(this,e,"f");if(!X)throw new H("request ended without sending any chunks");return U(this,e,void 0,"f"),H1(X,K(this,N$,"f"),{logger:K(this,o$,"f")})},A5=function(X){let J=K(this,e,"f");if(X.type==="message_start"){if(J)throw new H(`Unexpected event order, got ${X.type} before receiving "message_stop"`);return X.message}if(!J)throw new H(`Unexpected event order, got ${X.type} before "message_start"`);switch(X.type){case"message_stop":return J;case"message_delta":if(J.container=X.delta.container,J.stop_reason=X.delta.stop_reason,J.stop_sequence=X.delta.stop_sequence,J.usage.output_tokens=X.usage.output_tokens,J.context_management=X.context_management,X.usage.input_tokens!=null)J.usage.input_tokens=X.usage.input_tokens;if(X.usage.cache_creation_input_tokens!=null)J.usage.cache_creation_input_tokens=X.usage.cache_creation_input_tokens;if(X.usage.cache_read_input_tokens!=null)J.usage.cache_read_input_tokens=X.usage.cache_read_input_tokens;if(X.usage.server_tool_use!=null)J.usage.server_tool_use=X.usage.server_tool_use;return J;case"content_block_start":return J.content.push(X.content_block),J;case"content_block_delta":{let Z=J.content.at(X.index);switch(X.delta.type){case"text_delta":{if(Z?.type==="text")J.content[X.index]={...Z,text:(Z.text||"")+X.delta.text};break}case"citations_delta":{if(Z?.type==="text")J.content[X.index]={...Z,citations:[...Z.citations??[],X.delta.citation]};break}case"input_json_delta":{if(Z&&f5(Z)){let z=Z[R5]||"";z+=X.delta.partial_json;let Y={...Z};if(Object.defineProperty(Y,R5,{value:z,enumerable:!1,writable:!0}),z)try{Y.input=A0(z)}catch(W){let Q=new H(`Unable to parse tool parameter JSON from model. Please retry your request or adjust your prompt. Error: ${W}. JSON: ${z}`);K(this,h0,"f").call(this,Q)}J.content[X.index]=Y}break}case"thinking_delta":{if(Z?.type==="thinking")J.content[X.index]={...Z,thinking:Z.thinking+X.delta.thinking};break}case"signature_delta":{if(Z?.type==="thinking")J.content[X.index]={...Z,signature:X.delta.signature};break}default:k5(X.delta)}return J}case"content_block_stop":return J}},Symbol.asyncIterator)](){let $=[],X=[],J=!1;return this.on("streamEvent",(Z)=>{let z=X.shift();if(z)z.resolve(Z);else $.push(Z)}),this.on("end",()=>{J=!0;for(let Z of X)Z.resolve(void 0);X.length=0}),this.on("abort",(Z)=>{J=!0;for(let z of X)z.reject(Z);X.length=0}),this.on("error",(Z)=>{J=!0;for(let z of X)z.reject(Z);X.length=0}),{next:async()=>{if(!$.length){if(J)return{value:void 0,done:!0};return new Promise((z,Y)=>X.push({resolve:z,reject:Y})).then((z)=>z?{value:z,done:!1}:{value:void 0,done:!0})}return{value:$.shift(),done:!1}},return:async()=>{return this.abort(),{value:void 0,done:!0}}}}toReadableStream(){return new y(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}}function k5($){}var y5=1e5,_5=`You have been working on the task described above but have not yet completed it. Write a continuation summary that will allow you (or another instance of yourself) to resume work efficiently in a future context window where the conversation history will be replaced with this summary. Your summary should be structured, concise, and actionable. Include:
|
|
37
|
+
1. Task Overview
|
|
38
|
+
The user's core request and success criteria
|
|
39
|
+
Any clarifications or constraints they specified
|
|
40
|
+
2. Current State
|
|
41
|
+
What has been completed so far
|
|
42
|
+
Files created, modified, or analyzed (with paths if relevant)
|
|
43
|
+
Key outputs or artifacts produced
|
|
44
|
+
3. Important Discoveries
|
|
45
|
+
Technical constraints or requirements uncovered
|
|
46
|
+
Decisions made and their rationale
|
|
47
|
+
Errors encountered and how they were resolved
|
|
48
|
+
What approaches were tried that didn't work (and why)
|
|
49
|
+
4. Next Steps
|
|
50
|
+
Specific actions needed to complete the task
|
|
51
|
+
Any blockers or open questions to resolve
|
|
52
|
+
Priority order if multiple steps remain
|
|
53
|
+
5. Context to Preserve
|
|
54
|
+
User preferences or style requirements
|
|
55
|
+
Domain-specific details that aren't obvious
|
|
56
|
+
Any promises made to the user
|
|
57
|
+
Be concise but completeβerr on the side of including information that would prevent duplicate work or repeated mistakes. Write in a way that enables immediate resumption of the task.
|
|
58
|
+
Wrap your summary in <summary></summary> tags.`;var t$,H$,Q$,x,s$,_,a,$$,r$,b5,E1;function h5(){let $,X;return{promise:new Promise((Z,z)=>{$=Z,X=z}),resolve:$,reject:X}}class e${constructor($,X,J){t$.add(this),this.client=$,H$.set(this,!1),Q$.set(this,!1),x.set(this,void 0),s$.set(this,void 0),_.set(this,void 0),a.set(this,void 0),$$.set(this,void 0),r$.set(this,0),U(this,x,{params:{...X,messages:structuredClone(X.messages)}},"f"),U(this,s$,{...J,headers:M([{"x-stainless-helper":"BetaToolRunner"},J?.headers])},"f"),U(this,$$,h5(),"f")}async*[(H$=new WeakMap,Q$=new WeakMap,x=new WeakMap,s$=new WeakMap,_=new WeakMap,a=new WeakMap,$$=new WeakMap,r$=new WeakMap,t$=new WeakSet,b5=async function(){let X=K(this,x,"f").params.compactionControl;if(!X||!X.enabled)return!1;let J=0;if(K(this,_,"f")!==void 0)try{let G=await K(this,_,"f");J=G.usage.input_tokens+(G.usage.cache_creation_input_tokens??0)+(G.usage.cache_read_input_tokens??0)+G.usage.output_tokens}catch{return!1}let Z=X.contextTokenThreshold??y5;if(J<Z)return!1;let z=X.model??K(this,x,"f").params.model,Y=X.summaryPrompt??_5,W=K(this,x,"f").params.messages;if(W[W.length-1].role==="assistant"){let G=W[W.length-1];if(Array.isArray(G.content)){let V=G.content.filter((q)=>q.type!=="tool_use");if(V.length===0)W.pop();else G.content=V}}let Q=await this.client.beta.messages.create({model:z,messages:[...W,{role:"user",content:[{type:"text",text:Y}]}],max_tokens:K(this,x,"f").params.max_tokens},{headers:{"x-stainless-helper":"compaction"}});if(Q.content[0]?.type!=="text")throw new H("Expected text response for compaction");return K(this,x,"f").params.messages=[{role:"user",content:Q.content}],!0},Symbol.asyncIterator)](){var $;if(K(this,H$,"f"))throw new H("Cannot iterate over a consumed stream");U(this,H$,!0,"f"),U(this,Q$,!0,"f"),U(this,a,void 0,"f");try{while(!0){let X;try{if(K(this,x,"f").params.max_iterations&&K(this,r$,"f")>=K(this,x,"f").params.max_iterations)break;U(this,Q$,!1,"f"),U(this,a,void 0,"f"),U(this,r$,($=K(this,r$,"f"),$++,$),"f"),U(this,_,void 0,"f");let{max_iterations:J,compactionControl:Z,...z}=K(this,x,"f").params;if(z.stream)X=this.client.beta.messages.stream({...z},K(this,s$,"f")),U(this,_,X.finalMessage(),"f"),K(this,_,"f").catch(()=>{}),yield X;else U(this,_,this.client.beta.messages.create({...z,stream:!1},K(this,s$,"f")),"f"),yield K(this,_,"f");if(!await K(this,t$,"m",b5).call(this)){if(!K(this,Q$,"f")){let{role:Q,content:G}=await K(this,_,"f");K(this,x,"f").params.messages.push({role:Q,content:G})}let W=await K(this,t$,"m",E1).call(this,K(this,x,"f").params.messages.at(-1));if(W)K(this,x,"f").params.messages.push(W);else if(!K(this,Q$,"f"))break}}finally{if(X)X.abort()}}if(!K(this,_,"f"))throw new H("ToolRunner concluded without a message from the server");K(this,$$,"f").resolve(await K(this,_,"f"))}catch(X){throw U(this,H$,!1,"f"),K(this,$$,"f").promise.catch(()=>{}),K(this,$$,"f").reject(X),U(this,$$,h5(),"f"),X}}setMessagesParams($){if(typeof $==="function")K(this,x,"f").params=$(K(this,x,"f").params);else K(this,x,"f").params=$;U(this,Q$,!0,"f"),U(this,a,void 0,"f")}async generateToolResponse(){let $=await K(this,_,"f")??this.params.messages.at(-1);if(!$)return null;return K(this,t$,"m",E1).call(this,$)}done(){return K(this,$$,"f").promise}async runUntilDone(){if(!K(this,H$,"f"))for await(let $ of this);return this.done()}get params(){return K(this,x,"f").params}pushMessages(...$){this.setMessagesParams((X)=>({...X,messages:[...X.messages,...$]}))}then($,X){return this.runUntilDone().then($,X)}}E1=async function(X){if(K(this,a,"f")!==void 0)return K(this,a,"f");return U(this,a,kX(K(this,x,"f").params,X),"f"),K(this,a,"f")};async function kX($,X=$.messages.at(-1)){if(!X||X.role!=="assistant"||!X.content||typeof X.content==="string")return null;let J=X.content.filter((z)=>z.type==="tool_use");if(J.length===0)return null;return{role:"user",content:await Promise.all(J.map(async(z)=>{let Y=$.tools.find((W)=>("name"in W?W.name:W.mcp_server_name)===z.name);if(!Y||!("run"in Y))return{type:"tool_result",tool_use_id:z.id,content:`Error: Tool '${z.name}' not found`,is_error:!0};try{let W=z.input;if("parse"in Y&&Y.parse)W=Y.parse(W);let Q=await Y.run(W);return{type:"tool_result",tool_use_id:z.id,content:Q}}catch(W){return{type:"tool_result",tool_use_id:z.id,content:`Error: ${W instanceof Error?W.message:String(W)}`,is_error:!0}}}))}}class w${constructor($,X){this.iterator=$,this.controller=X}async*decoder(){let $=new r;for await(let X of this.iterator)for(let J of $.decode(X))yield JSON.parse(J);for(let X of $.flush())yield JSON.parse(X)}[Symbol.asyncIterator](){return this.decoder()}static fromResponse($,X){if(!$.body){if(X.abort(),typeof globalThis.navigator<"u"&&globalThis.navigator.product==="ReactNative")throw new H("The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api");throw new H("Attempted to iterate over a response with no body")}return new w$(y$($.body),X)}}class $0 extends S{create($,X){let{betas:J,...Z}=$;return this._client.post("/v1/messages/batches?beta=true",{body:Z,...X,headers:M([{"anthropic-beta":[...J??[],"message-batches-2024-09-24"].toString()},X?.headers])})}retrieve($,X={},J){let{betas:Z}=X??{};return this._client.get(D`/v1/messages/batches/${$}?beta=true`,{...J,headers:M([{"anthropic-beta":[...Z??[],"message-batches-2024-09-24"].toString()},J?.headers])})}list($={},X){let{betas:J,...Z}=$??{};return this._client.getAPIList("/v1/messages/batches?beta=true",u,{query:Z,...X,headers:M([{"anthropic-beta":[...J??[],"message-batches-2024-09-24"].toString()},X?.headers])})}delete($,X={},J){let{betas:Z}=X??{};return this._client.delete(D`/v1/messages/batches/${$}?beta=true`,{...J,headers:M([{"anthropic-beta":[...Z??[],"message-batches-2024-09-24"].toString()},J?.headers])})}cancel($,X={},J){let{betas:Z}=X??{};return this._client.post(D`/v1/messages/batches/${$}/cancel?beta=true`,{...J,headers:M([{"anthropic-beta":[...Z??[],"message-batches-2024-09-24"].toString()},J?.headers])})}async results($,X={},J){let Z=await this.retrieve($);if(!Z.results_url)throw new H(`No batch \`results_url\`; Has it finished processing? ${Z.processing_status} - ${Z.id}`);let{betas:z}=X??{};return this._client.get(Z.results_url,{...J,headers:M([{"anthropic-beta":[...z??[],"message-batches-2024-09-24"].toString(),Accept:"application/binary"},J?.headers]),stream:!0,__binaryResponse:!0})._thenUnwrap((Y,W)=>w$.fromResponse(W.response,W.controller))}}var v5={"claude-1.3":"November 6th, 2024","claude-1.3-100k":"November 6th, 2024","claude-instant-1.1":"November 6th, 2024","claude-instant-1.1-100k":"November 6th, 2024","claude-instant-1.2":"November 6th, 2024","claude-3-sonnet-20240229":"July 21st, 2025","claude-3-opus-20240229":"January 5th, 2026","claude-2.1":"July 21st, 2025","claude-2.0":"July 21st, 2025","claude-3-7-sonnet-latest":"February 19th, 2026","claude-3-7-sonnet-20250219":"February 19th, 2026"};class K$ extends S{constructor(){super(...arguments);this.batches=new $0(this._client)}create($,X){let{betas:J,...Z}=$;if(Z.model in v5)console.warn(`The model '${Z.model}' is deprecated and will reach end-of-life on ${v5[Z.model]}
|
|
59
|
+
Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`);let z=this._client._options.timeout;if(!Z.stream&&z==null){let Y=C0[Z.model]??void 0;z=this._client.calculateNonstreamingTimeout(Z.max_tokens,Y)}return this._client.post("/v1/messages?beta=true",{body:Z,timeout:z??600000,...X,headers:M([{...J?.toString()!=null?{"anthropic-beta":J?.toString()}:void 0},X?.headers]),stream:$.stream??!1})}parse($,X){return X={...X,headers:M([{"anthropic-beta":[...$.betas??[],"structured-outputs-2025-11-13"].toString()},X?.headers])},this.create($,X).then((J)=>w1(J,$,{logger:this._client.logger??console}))}stream($,X){return a$.createMessage(this,$,X)}countTokens($,X){let{betas:J,...Z}=$;return this._client.post("/v1/messages/count_tokens?beta=true",{body:Z,...X,headers:M([{"anthropic-beta":[...J??[],"token-counting-2024-11-01"].toString()},X?.headers])})}toolRunner($,X){return new e$(this._client,$,X)}}K$.Batches=$0;K$.BetaToolRunner=e$;class X0 extends S{create($,X={},J){let{betas:Z,...z}=X??{};return this._client.post(D`/v1/skills/${$}/versions?beta=true`,q$({body:z,...J,headers:M([{"anthropic-beta":[...Z??[],"skills-2025-10-02"].toString()},J?.headers])},this._client))}retrieve($,X,J){let{skill_id:Z,betas:z}=X;return this._client.get(D`/v1/skills/${Z}/versions/${$}?beta=true`,{...J,headers:M([{"anthropic-beta":[...z??[],"skills-2025-10-02"].toString()},J?.headers])})}list($,X={},J){let{betas:Z,...z}=X??{};return this._client.getAPIList(D`/v1/skills/${$}/versions?beta=true`,g$,{query:z,...J,headers:M([{"anthropic-beta":[...Z??[],"skills-2025-10-02"].toString()},J?.headers])})}delete($,X,J){let{skill_id:Z,betas:z}=X;return this._client.delete(D`/v1/skills/${Z}/versions/${$}?beta=true`,{...J,headers:M([{"anthropic-beta":[...z??[],"skills-2025-10-02"].toString()},J?.headers])})}}class M$ extends S{constructor(){super(...arguments);this.versions=new X0(this._client)}create($={},X){let{betas:J,...Z}=$??{};return this._client.post("/v1/skills?beta=true",q$({body:Z,...X,headers:M([{"anthropic-beta":[...J??[],"skills-2025-10-02"].toString()},X?.headers])},this._client))}retrieve($,X={},J){let{betas:Z}=X??{};return this._client.get(D`/v1/skills/${$}?beta=true`,{...J,headers:M([{"anthropic-beta":[...Z??[],"skills-2025-10-02"].toString()},J?.headers])})}list($={},X){let{betas:J,...Z}=$??{};return this._client.getAPIList("/v1/skills?beta=true",g$,{query:Z,...X,headers:M([{"anthropic-beta":[...J??[],"skills-2025-10-02"].toString()},X?.headers])})}delete($,X={},J){let{betas:Z}=X??{};return this._client.delete(D`/v1/skills/${$}?beta=true`,{...J,headers:M([{"anthropic-beta":[...Z??[],"skills-2025-10-02"].toString()},J?.headers])})}}M$.Versions=X0;class p extends S{constructor(){super(...arguments);this.models=new m$(this._client),this.messages=new K$(this._client),this.files=new u$(this._client),this.skills=new M$(this._client)}}p.Models=m$;p.Messages=K$;p.Files=u$;p.Skills=M$;class T$ extends S{create($,X){let{betas:J,...Z}=$;return this._client.post("/v1/complete",{body:Z,timeout:this._client._options.timeout??600000,...X,headers:M([{...J?.toString()!=null?{"anthropic-beta":J?.toString()}:void 0},X?.headers]),stream:$.stream??!1})}}var v,X$,J0,v0,Z0,z0,g0,Y0,t,W0,c0,u0,G$,m0,d0,B1,g5,S1,j1,I1,F1,c5,u5="__json_buf";function m5($){return $.type==="tool_use"||$.type==="server_tool_use"}class Q0{constructor(){v.add(this),this.messages=[],this.receivedMessages=[],X$.set(this,void 0),this.controller=new AbortController,J0.set(this,void 0),v0.set(this,()=>{}),Z0.set(this,()=>{}),z0.set(this,void 0),g0.set(this,()=>{}),Y0.set(this,()=>{}),t.set(this,{}),W0.set(this,!1),c0.set(this,!1),u0.set(this,!1),G$.set(this,!1),m0.set(this,void 0),d0.set(this,void 0),S1.set(this,($)=>{if(U(this,c0,!0,"f"),i($))$=new C;if($ instanceof C)return U(this,u0,!0,"f"),this._emit("abort",$);if($ instanceof H)return this._emit("error",$);if($ instanceof Error){let X=new H($.message);return X.cause=$,this._emit("error",X)}return this._emit("error",new H(String($)))}),U(this,J0,new Promise(($,X)=>{U(this,v0,$,"f"),U(this,Z0,X,"f")}),"f"),U(this,z0,new Promise(($,X)=>{U(this,g0,$,"f"),U(this,Y0,X,"f")}),"f"),K(this,J0,"f").catch(()=>{}),K(this,z0,"f").catch(()=>{})}get response(){return K(this,m0,"f")}get request_id(){return K(this,d0,"f")}async withResponse(){U(this,G$,!0,"f");let $=await K(this,J0,"f");if(!$)throw Error("Could not resolve a `Response` object");return{data:this,response:$,request_id:$.headers.get("request-id")}}static fromReadableStream($){let X=new Q0;return X._run(()=>X._fromReadableStream($)),X}static createMessage($,X,J){let Z=new Q0;for(let z of X.messages)Z._addMessageParam(z);return Z._run(()=>Z._createMessage($,{...X,stream:!0},{...J,headers:{...J?.headers,"X-Stainless-Helper-Method":"stream"}})),Z}_run($){$().then(()=>{this._emitFinal(),this._emit("end")},K(this,S1,"f"))}_addMessageParam($){this.messages.push($)}_addMessage($,X=!0){if(this.receivedMessages.push($),X)this._emit("message",$)}async _createMessage($,X,J){let Z=J?.signal,z;if(Z){if(Z.aborted)this.controller.abort();z=this.controller.abort.bind(this.controller),Z.addEventListener("abort",z)}try{K(this,v,"m",j1).call(this);let{response:Y,data:W}=await $.create({...X,stream:!0},{...J,signal:this.controller.signal}).withResponse();this._connected(Y);for await(let Q of W)K(this,v,"m",I1).call(this,Q);if(W.controller.signal?.aborted)throw new C;K(this,v,"m",F1).call(this)}finally{if(Z&&z)Z.removeEventListener("abort",z)}}_connected($){if(this.ended)return;U(this,m0,$,"f"),U(this,d0,$?.headers.get("request-id"),"f"),K(this,v0,"f").call(this,$),this._emit("connect")}get ended(){return K(this,W0,"f")}get errored(){return K(this,c0,"f")}get aborted(){return K(this,u0,"f")}abort(){this.controller.abort()}on($,X){return(K(this,t,"f")[$]||(K(this,t,"f")[$]=[])).push({listener:X}),this}off($,X){let J=K(this,t,"f")[$];if(!J)return this;let Z=J.findIndex((z)=>z.listener===X);if(Z>=0)J.splice(Z,1);return this}once($,X){return(K(this,t,"f")[$]||(K(this,t,"f")[$]=[])).push({listener:X,once:!0}),this}emitted($){return new Promise((X,J)=>{if(U(this,G$,!0,"f"),$!=="error")this.once("error",J);this.once($,X)})}async done(){U(this,G$,!0,"f"),await K(this,z0,"f")}get currentMessage(){return K(this,X$,"f")}async finalMessage(){return await this.done(),K(this,v,"m",B1).call(this)}async finalText(){return await this.done(),K(this,v,"m",g5).call(this)}_emit($,...X){if(K(this,W0,"f"))return;if($==="end")U(this,W0,!0,"f"),K(this,g0,"f").call(this);let J=K(this,t,"f")[$];if(J)K(this,t,"f")[$]=J.filter((Z)=>!Z.once),J.forEach(({listener:Z})=>Z(...X));if($==="abort"){let Z=X[0];if(!K(this,G$,"f")&&!J?.length)Promise.reject(Z);K(this,Z0,"f").call(this,Z),K(this,Y0,"f").call(this,Z),this._emit("end");return}if($==="error"){let Z=X[0];if(!K(this,G$,"f")&&!J?.length)Promise.reject(Z);K(this,Z0,"f").call(this,Z),K(this,Y0,"f").call(this,Z),this._emit("end")}}_emitFinal(){if(this.receivedMessages.at(-1))this._emit("finalMessage",K(this,v,"m",B1).call(this))}async _fromReadableStream($,X){let J=X?.signal,Z;if(J){if(J.aborted)this.controller.abort();Z=this.controller.abort.bind(this.controller),J.addEventListener("abort",Z)}try{K(this,v,"m",j1).call(this),this._connected(null);let z=y.fromReadableStream($,this.controller);for await(let Y of z)K(this,v,"m",I1).call(this,Y);if(z.controller.signal?.aborted)throw new C;K(this,v,"m",F1).call(this)}finally{if(J&&Z)J.removeEventListener("abort",Z)}}[(X$=new WeakMap,J0=new WeakMap,v0=new WeakMap,Z0=new WeakMap,z0=new WeakMap,g0=new WeakMap,Y0=new WeakMap,t=new WeakMap,W0=new WeakMap,c0=new WeakMap,u0=new WeakMap,G$=new WeakMap,m0=new WeakMap,d0=new WeakMap,S1=new WeakMap,v=new WeakSet,B1=function(){if(this.receivedMessages.length===0)throw new H("stream ended without producing a Message with role=assistant");return this.receivedMessages.at(-1)},g5=function(){if(this.receivedMessages.length===0)throw new H("stream ended without producing a Message with role=assistant");let X=this.receivedMessages.at(-1).content.filter((J)=>J.type==="text").map((J)=>J.text);if(X.length===0)throw new H("stream ended without producing a content block with type=text");return X.join(" ")},j1=function(){if(this.ended)return;U(this,X$,void 0,"f")},I1=function(X){if(this.ended)return;let J=K(this,v,"m",c5).call(this,X);switch(this._emit("streamEvent",X,J),X.type){case"content_block_delta":{let Z=J.content.at(-1);switch(X.delta.type){case"text_delta":{if(Z.type==="text")this._emit("text",X.delta.text,Z.text||"");break}case"citations_delta":{if(Z.type==="text")this._emit("citation",X.delta.citation,Z.citations??[]);break}case"input_json_delta":{if(m5(Z)&&Z.input)this._emit("inputJson",X.delta.partial_json,Z.input);break}case"thinking_delta":{if(Z.type==="thinking")this._emit("thinking",X.delta.thinking,Z.thinking);break}case"signature_delta":{if(Z.type==="thinking")this._emit("signature",Z.signature);break}default:d5(X.delta)}break}case"message_stop":{this._addMessageParam(J),this._addMessage(J,!0);break}case"content_block_stop":{this._emit("contentBlock",J.content.at(-1));break}case"message_start":{U(this,X$,J,"f");break}case"content_block_start":case"message_delta":break}},F1=function(){if(this.ended)throw new H("stream has ended, this shouldn't happen");let X=K(this,X$,"f");if(!X)throw new H("request ended without sending any chunks");return U(this,X$,void 0,"f"),X},c5=function(X){let J=K(this,X$,"f");if(X.type==="message_start"){if(J)throw new H(`Unexpected event order, got ${X.type} before receiving "message_stop"`);return X.message}if(!J)throw new H(`Unexpected event order, got ${X.type} before "message_start"`);switch(X.type){case"message_stop":return J;case"message_delta":if(J.stop_reason=X.delta.stop_reason,J.stop_sequence=X.delta.stop_sequence,J.usage.output_tokens=X.usage.output_tokens,X.usage.input_tokens!=null)J.usage.input_tokens=X.usage.input_tokens;if(X.usage.cache_creation_input_tokens!=null)J.usage.cache_creation_input_tokens=X.usage.cache_creation_input_tokens;if(X.usage.cache_read_input_tokens!=null)J.usage.cache_read_input_tokens=X.usage.cache_read_input_tokens;if(X.usage.server_tool_use!=null)J.usage.server_tool_use=X.usage.server_tool_use;return J;case"content_block_start":return J.content.push({...X.content_block}),J;case"content_block_delta":{let Z=J.content.at(X.index);switch(X.delta.type){case"text_delta":{if(Z?.type==="text")J.content[X.index]={...Z,text:(Z.text||"")+X.delta.text};break}case"citations_delta":{if(Z?.type==="text")J.content[X.index]={...Z,citations:[...Z.citations??[],X.delta.citation]};break}case"input_json_delta":{if(Z&&m5(Z)){let z=Z[u5]||"";z+=X.delta.partial_json;let Y={...Z};if(Object.defineProperty(Y,u5,{value:z,enumerable:!1,writable:!0}),z)Y.input=A0(z);J.content[X.index]=Y}break}case"thinking_delta":{if(Z?.type==="thinking")J.content[X.index]={...Z,thinking:Z.thinking+X.delta.thinking};break}case"signature_delta":{if(Z?.type==="thinking")J.content[X.index]={...Z,signature:X.delta.signature};break}default:d5(X.delta)}return J}case"content_block_stop":return J}},Symbol.asyncIterator)](){let $=[],X=[],J=!1;return this.on("streamEvent",(Z)=>{let z=X.shift();if(z)z.resolve(Z);else $.push(Z)}),this.on("end",()=>{J=!0;for(let Z of X)Z.resolve(void 0);X.length=0}),this.on("abort",(Z)=>{J=!0;for(let z of X)z.reject(Z);X.length=0}),this.on("error",(Z)=>{J=!0;for(let z of X)z.reject(Z);X.length=0}),{next:async()=>{if(!$.length){if(J)return{value:void 0,done:!0};return new Promise((z,Y)=>X.push({resolve:z,reject:Y})).then((z)=>z?{value:z,done:!1}:{value:void 0,done:!0})}return{value:$.shift(),done:!1}},return:async()=>{return this.abort(),{value:void 0,done:!0}}}}toReadableStream(){return new y(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}}function d5($){}class K0 extends S{create($,X){return this._client.post("/v1/messages/batches",{body:$,...X})}retrieve($,X){return this._client.get(D`/v1/messages/batches/${$}`,X)}list($={},X){return this._client.getAPIList("/v1/messages/batches",u,{query:$,...X})}delete($,X){return this._client.delete(D`/v1/messages/batches/${$}`,X)}cancel($,X){return this._client.post(D`/v1/messages/batches/${$}/cancel`,X)}async results($,X){let J=await this.retrieve($);if(!J.results_url)throw new H(`No batch \`results_url\`; Has it finished processing? ${J.processing_status} - ${J.id}`);return this._client.get(J.results_url,{...X,headers:M([{Accept:"application/binary"},X?.headers]),stream:!0,__binaryResponse:!0})._thenUnwrap((Z,z)=>w$.fromResponse(z.response,z.controller))}}class V$ extends S{constructor(){super(...arguments);this.batches=new K0(this._client)}create($,X){if($.model in p5)console.warn(`The model '${$.model}' is deprecated and will reach end-of-life on ${p5[$.model]}
|
|
60
|
+
Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`);let J=this._client._options.timeout;if(!$.stream&&J==null){let Z=C0[$.model]??void 0;J=this._client.calculateNonstreamingTimeout($.max_tokens,Z)}return this._client.post("/v1/messages",{body:$,timeout:J??600000,...X,stream:$.stream??!1})}stream($,X){return Q0.createMessage(this,$,X)}countTokens($,X){return this._client.post("/v1/messages/count_tokens",{body:$,...X})}}var p5={"claude-1.3":"November 6th, 2024","claude-1.3-100k":"November 6th, 2024","claude-instant-1.1":"November 6th, 2024","claude-instant-1.1-100k":"November 6th, 2024","claude-instant-1.2":"November 6th, 2024","claude-3-sonnet-20240229":"July 21st, 2025","claude-3-opus-20240229":"January 5th, 2026","claude-2.1":"July 21st, 2025","claude-2.0":"July 21st, 2025","claude-3-7-sonnet-latest":"February 19th, 2026","claude-3-7-sonnet-20250219":"February 19th, 2026"};V$.Batches=K0;class L$ extends S{retrieve($,X={},J){let{betas:Z}=X??{};return this._client.get(D`/v1/models/${$}`,{...J,headers:M([{...Z?.toString()!=null?{"anthropic-beta":Z?.toString()}:void 0},J?.headers])})}list($={},X){let{betas:J,...Z}=$??{};return this._client.getAPIList("/v1/models",u,{query:Z,...X,headers:M([{...J?.toString()!=null?{"anthropic-beta":J?.toString()}:void 0},X?.headers])})}}var G0=($)=>{if(typeof globalThis.process<"u")return globalThis.process.env?.[$]?.trim()??void 0;if(typeof globalThis.Deno<"u")return globalThis.Deno.env?.get?.($)?.trim();return};var x1,O1,p0,l5,i5="\\n\\nHuman:",n5="\\n\\nAssistant:";class I{constructor({baseURL:$=G0("ANTHROPIC_BASE_URL"),apiKey:X=G0("ANTHROPIC_API_KEY")??null,authToken:J=G0("ANTHROPIC_AUTH_TOKEN")??null,...Z}={}){x1.add(this),p0.set(this,void 0);let z={apiKey:X,authToken:J,...Z,baseURL:$||"https://api.anthropic.com"};if(!z.dangerouslyAllowBrowser&&N5())throw new H(`It looks like you're running in a browser-like environment.
|
|
61
|
+
|
|
62
|
+
This is disabled by default, as it risks exposing your secret API credentials to attackers.
|
|
63
|
+
If you understand the risks and have appropriate mitigations in place,
|
|
64
|
+
you can set the \`dangerouslyAllowBrowser\` option to \`true\`, e.g.,
|
|
65
|
+
|
|
66
|
+
new Anthropic({ apiKey, dangerouslyAllowBrowser: true });
|
|
67
|
+
`);this.baseURL=z.baseURL,this.timeout=z.timeout??O1.DEFAULT_TIMEOUT,this.logger=z.logger??console;let Y="warn";this.logLevel=Y,this.logLevel=Q1(z.logLevel,"ClientOptions.logLevel",this)??Q1(G0("ANTHROPIC_LOG"),"process.env['ANTHROPIC_LOG']",this)??Y,this.fetchOptions=z.fetchOptions,this.maxRetries=z.maxRetries??2,this.fetch=z.fetch??w5(),U(this,p0,T5,"f"),this._options=z,this.apiKey=typeof X==="string"?X:null,this.authToken=J}withOptions($){return new this.constructor({...this._options,baseURL:this.baseURL,maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,apiKey:this.apiKey,authToken:this.authToken,...$})}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:$,nulls:X}){if($.get("x-api-key")||$.get("authorization"))return;if(this.apiKey&&$.get("x-api-key"))return;if(X.has("x-api-key"))return;if(this.authToken&&$.get("authorization"))return;if(X.has("authorization"))return;throw Error('Could not resolve authentication method. Expected either apiKey or authToken to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted')}async authHeaders($){return M([await this.apiKeyAuth($),await this.bearerAuth($)])}async apiKeyAuth($){if(this.apiKey==null)return;return M([{"X-Api-Key":this.apiKey}])}async bearerAuth($){if(this.authToken==null)return;return M([{Authorization:`Bearer ${this.authToken}`}])}stringifyQuery($){return Object.entries($).filter(([X,J])=>typeof J<"u").map(([X,J])=>{if(typeof J==="string"||typeof J==="number"||typeof J==="boolean")return`${encodeURIComponent(X)}=${encodeURIComponent(J)}`;if(J===null)return`${encodeURIComponent(X)}=`;throw new H(`Cannot stringify type ${typeof J}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`)}).join("&")}getUserAgent(){return`${this.constructor.name}/JS ${s}`}defaultIdempotencyKey(){return`stainless-node-retry-${J1()}`}makeStatusError($,X,J,Z){return F.generate($,X,J,Z)}buildURL($,X,J){let Z=!K(this,x1,"m",l5).call(this)&&J||this.baseURL,z=Y5($)?new URL($):new URL(Z+(Z.endsWith("/")&&$.startsWith("/")?$.slice(1):$)),Y=this.defaultQuery();if(!W5(Y))X={...Y,...X};if(typeof X==="object"&&X&&!Array.isArray(X))z.search=this.stringifyQuery(X);return z.toString()}_calculateNonstreamingTimeout($){if(3600*$/128000>600)throw new H("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#streaming-responses for more details");return 600000}async prepareOptions($){}async prepareRequest($,{url:X,options:J}){}get($,X){return this.methodRequest("get",$,X)}post($,X){return this.methodRequest("post",$,X)}patch($,X){return this.methodRequest("patch",$,X)}put($,X){return this.methodRequest("put",$,X)}delete($,X){return this.methodRequest("delete",$,X)}methodRequest($,X,J){return this.request(Promise.resolve(J).then((Z)=>{return{method:$,path:X,...Z}}))}request($,X=null){return new z$(this,this.makeRequest($,X,void 0))}async makeRequest($,X,J){let Z=await $,z=Z.maxRetries??this.maxRetries;if(X==null)X=z;await this.prepareOptions(Z);let{req:Y,url:W,timeout:Q}=await this.buildRequest(Z,{retryCount:z-X});await this.prepareRequest(Y,{url:W,options:Z});let G="log_"+(Math.random()*16777216|0).toString(16).padStart(6,"0"),V=J===void 0?"":`, retryOf: ${J}`,q=Date.now();if(O(this).debug(`[${G}] sending request`,n({retryOfRequestLogID:J,method:Z.method,url:W,options:Z,headers:Y.headers})),Z.signal?.aborted)throw new C;let N=new AbortController,w=await this.fetchWithTimeout(W,Y,Q,N).catch(I$),T=Date.now();if(w instanceof globalThis.Error){let b=`retrying, ${X} attempts remaining`;if(Z.signal?.aborted)throw new C;let A=i(w)||/timed? ?out/i.test(String(w)+("cause"in w?String(w.cause):""));if(X)return O(this).info(`[${G}] connection ${A?"timed out":"failed"} - ${b}`),O(this).debug(`[${G}] connection ${A?"timed out":"failed"} (${b})`,n({retryOfRequestLogID:J,url:W,durationMs:T-q,message:w.message})),this.retryRequest(Z,X,J??G);if(O(this).info(`[${G}] connection ${A?"timed out":"failed"} - error; no more retries left`),O(this).debug(`[${G}] connection ${A?"timed out":"failed"} (error; no more retries left)`,n({retryOfRequestLogID:J,url:W,durationMs:T-q,message:w.message})),A)throw new F$;throw new Z$({cause:w})}let R=[...w.headers.entries()].filter(([b])=>b==="request-id").map(([b,A])=>", "+b+": "+JSON.stringify(A)).join(""),c=`[${G}${V}${R}] ${Y.method} ${W} ${w.ok?"succeeded":"failed"} with status ${w.status} in ${T-q}ms`;if(!w.ok){let b=await this.shouldRetry(w);if(X&&b){let M0=`retrying, ${X} attempts remaining`;return await M5(w.body),O(this).info(`${c} - ${M0}`),O(this).debug(`[${G}] response error (${M0})`,n({retryOfRequestLogID:J,url:w.url,status:w.status,headers:w.headers,durationMs:T-q})),this.retryRequest(Z,X,J??G,w.headers)}let A=b?"error; no more retries left":"error; not retryable";O(this).info(`${c} - ${A}`);let P=await w.text().catch((M0)=>I$(M0).message),B$=B0(P),c1=B$?void 0:P;throw O(this).debug(`[${G}] response error (${A})`,n({retryOfRequestLogID:J,url:w.url,status:w.status,headers:w.headers,message:c1,durationMs:Date.now()-q})),this.makeStatusError(w.status,B$,c1,w.headers)}return O(this).info(c),O(this).debug(`[${G}] response start`,n({retryOfRequestLogID:J,url:w.url,status:w.status,headers:w.headers,durationMs:T-q})),{response:w,options:Z,controller:N,requestLogID:G,retryOfRequestLogID:J,startTime:q}}getAPIList($,X,J){return this.requestAPIList(X,{method:"get",path:$,...J})}requestAPIList($,X){let J=this.makeRequest(X,null,void 0);return new O0(this,J,$)}async fetchWithTimeout($,X,J,Z){let{signal:z,method:Y,...W}=X||{};if(z)z.addEventListener("abort",()=>Z.abort());let Q=setTimeout(()=>Z.abort(),J),G=globalThis.ReadableStream&&W.body instanceof globalThis.ReadableStream||typeof W.body==="object"&&W.body!==null&&Symbol.asyncIterator in W.body,V={signal:Z.signal,...G?{duplex:"half"}:{},method:"GET",...W};if(Y)V.method=Y.toUpperCase();try{return await this.fetch.call(void 0,$,V)}finally{clearTimeout(Q)}}async shouldRetry($){let X=$.headers.get("x-should-retry");if(X==="true")return!0;if(X==="false")return!1;if($.status===408)return!0;if($.status===409)return!0;if($.status===429)return!0;if($.status>=500)return!0;return!1}async retryRequest($,X,J,Z){let z,Y=Z?.get("retry-after-ms");if(Y){let Q=parseFloat(Y);if(!Number.isNaN(Q))z=Q}let W=Z?.get("retry-after");if(W&&!z){let Q=parseFloat(W);if(!Number.isNaN(Q))z=Q*1000;else z=Date.parse(W)-Date.now()}if(!(z&&0<=z&&z<60000)){let Q=$.maxRetries??this.maxRetries;z=this.calculateDefaultRetryTimeoutMillis(X,Q)}return await G5(z),this.makeRequest($,X-1,J)}calculateDefaultRetryTimeoutMillis($,X){let z=X-$,Y=Math.min(0.5*Math.pow(2,z),8),W=1-Math.random()*0.25;return Y*W*1000}calculateNonstreamingTimeout($,X){if(3600000*$/128000>600000||X!=null&&$>X)throw new H("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#long-requests for more details");return 600000}async buildRequest($,{retryCount:X=0}={}){let J={...$},{method:Z,path:z,query:Y,defaultBaseURL:W}=J,Q=this.buildURL(z,Y,W);if("timeout"in J)K5("timeout",J.timeout);J.timeout=J.timeout??this.timeout;let{bodyHeaders:G,body:V}=this.buildBody({options:J}),q=await this.buildHeaders({options:$,method:Z,bodyHeaders:G,retryCount:X});return{req:{method:Z,headers:q,...J.signal&&{signal:J.signal},...globalThis.ReadableStream&&V instanceof globalThis.ReadableStream&&{duplex:"half"},...V&&{body:V},...this.fetchOptions??{},...J.fetchOptions??{}},url:Q,timeout:J.timeout}}async buildHeaders({options:$,method:X,bodyHeaders:J,retryCount:Z}){let z={};if(this.idempotencyHeader&&X!=="get"){if(!$.idempotencyKey)$.idempotencyKey=this.defaultIdempotencyKey();z[this.idempotencyHeader]=$.idempotencyKey}let Y=M([z,{Accept:"application/json","User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String(Z),...$.timeout?{"X-Stainless-Timeout":String(Math.trunc($.timeout/1000))}:{},...H5(),...this._options.dangerouslyAllowBrowser?{"anthropic-dangerous-direct-browser-access":"true"}:void 0,"anthropic-version":"2023-06-01"},await this.authHeaders($),this._options.defaultHeaders,J,$.headers]);return this.validateHeaders(Y),Y.values}buildBody({options:{body:$,headers:X}}){if(!$)return{bodyHeaders:void 0,body:void 0};let J=M([X]);if(ArrayBuffer.isView($)||$ instanceof ArrayBuffer||$ instanceof DataView||typeof $==="string"&&J.values.has("content-type")||globalThis.Blob&&$ instanceof globalThis.Blob||$ instanceof FormData||$ instanceof URLSearchParams||globalThis.ReadableStream&&$ instanceof globalThis.ReadableStream)return{bodyHeaders:void 0,body:$};else if(typeof $==="object"&&((Symbol.asyncIterator in $)||(Symbol.iterator in $)&&("next"in $)&&typeof $.next==="function"))return{bodyHeaders:void 0,body:S0($)};else return K(this,p0,"f").call(this,{body:$,headers:J})}}O1=I,p0=new WeakMap,x1=new WeakSet,l5=function(){return this.baseURL!=="https://api.anthropic.com"};I.Anthropic=O1;I.HUMAN_PROMPT=i5;I.AI_PROMPT=n5;I.DEFAULT_TIMEOUT=600000;I.AnthropicError=H;I.APIError=F;I.APIConnectionError=Z$;I.APIConnectionTimeoutError=F$;I.APIUserAbortError=C;I.NotFoundError=C$;I.ConflictError=A$;I.RateLimitError=f$;I.BadRequestError=x$;I.AuthenticationError=O$;I.InternalServerError=k$;I.PermissionDeniedError=P$;I.UnprocessableEntityError=R$;I.toFile=P0;class m extends I{constructor(){super(...arguments);this.completions=new T$(this),this.messages=new V$(this),this.models=new L$(this),this.beta=new p(this)}}m.Completions=T$;m.Messages=V$;m.Models=L$;m.Beta=p;var o5=($=0)=>(X)=>`\x1B[${X+$}m`,a5=($=0)=>(X)=>`\x1B[${38+$};5;${X}m`,t5=($=0)=>(X,J,Z)=>`\x1B[${38+$};2;${X};${J};${Z}m`,E={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},yZ=Object.keys(E.modifier),cX=Object.keys(E.color),uX=Object.keys(E.bgColor),_Z=[...cX,...uX];function mX(){let $=new Map;for(let[X,J]of Object.entries(E)){for(let[Z,z]of Object.entries(J))E[Z]={open:`\x1B[${z[0]}m`,close:`\x1B[${z[1]}m`},J[Z]=E[Z],$.set(z[0],z[1]);Object.defineProperty(E,X,{value:J,enumerable:!1})}return Object.defineProperty(E,"codes",{value:$,enumerable:!1}),E.color.close="\x1B[39m",E.bgColor.close="\x1B[49m",E.color.ansi=o5(),E.color.ansi256=a5(),E.color.ansi16m=t5(),E.bgColor.ansi=o5(10),E.bgColor.ansi256=a5(10),E.bgColor.ansi16m=t5(10),Object.defineProperties(E,{rgbToAnsi256:{value(X,J,Z){if(X===J&&J===Z){if(X<8)return 16;if(X>248)return 231;return Math.round((X-8)/247*24)+232}return 16+36*Math.round(X/255*5)+6*Math.round(J/255*5)+Math.round(Z/255*5)},enumerable:!1},hexToRgb:{value(X){let J=/[a-f\d]{6}|[a-f\d]{3}/i.exec(X.toString(16));if(!J)return[0,0,0];let[Z]=J;if(Z.length===3)Z=[...Z].map((Y)=>Y+Y).join("");let z=Number.parseInt(Z,16);return[z>>16&255,z>>8&255,z&255]},enumerable:!1},hexToAnsi256:{value:(X)=>E.rgbToAnsi256(...E.hexToRgb(X)),enumerable:!1},ansi256ToAnsi:{value(X){if(X<8)return 30+X;if(X<16)return 90+(X-8);let J,Z,z;if(X>=232)J=((X-232)*10+8)/255,Z=J,z=J;else{X-=16;let Q=X%36;J=Math.floor(X/36)/5,Z=Math.floor(Q/6)/5,z=Q%6/5}let Y=Math.max(J,Z,z)*2;if(Y===0)return 30;let W=30+(Math.round(z)<<2|Math.round(Z)<<1|Math.round(J));if(Y===2)W+=60;return W},enumerable:!1},rgbToAnsi:{value:(X,J,Z)=>E.ansi256ToAnsi(E.rgbToAnsi256(X,J,Z)),enumerable:!1},hexToAnsi:{value:(X)=>E.ansi256ToAnsi(E.hexToAnsi256(X)),enumerable:!1}}),E}var dX=mX(),d=dX;import P1 from"node:process";import pX from"node:os";import s5 from"node:tty";function g($,X=globalThis.Deno?globalThis.Deno.args:P1.argv){let J=$.startsWith("-")?"":$.length===1?"-":"--",Z=X.indexOf(J+$),z=X.indexOf("--");return Z!==-1&&(z===-1||Z<z)}var{env:B}=P1,l0;if(g("no-color")||g("no-colors")||g("color=false")||g("color=never"))l0=0;else if(g("color")||g("colors")||g("color=true")||g("color=always"))l0=1;function lX(){if("FORCE_COLOR"in B){if(B.FORCE_COLOR==="true")return 1;if(B.FORCE_COLOR==="false")return 0;return B.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(B.FORCE_COLOR,10),3)}}function iX($){if($===0)return!1;return{level:$,hasBasic:!0,has256:$>=2,has16m:$>=3}}function nX($,{streamIsTTY:X,sniffFlags:J=!0}={}){let Z=lX();if(Z!==void 0)l0=Z;let z=J?l0:Z;if(z===0)return 0;if(J){if(g("color=16m")||g("color=full")||g("color=truecolor"))return 3;if(g("color=256"))return 2}if("TF_BUILD"in B&&"AGENT_NAME"in B)return 1;if($&&!X&&z===void 0)return 0;let Y=z||0;if(B.TERM==="dumb")return Y;if(P1.platform==="win32"){let W=pX.release().split(".");if(Number(W[0])>=10&&Number(W[2])>=10586)return Number(W[2])>=14931?3:2;return 1}if("CI"in B){if(["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some((W)=>(W in B)))return 3;if(["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some((W)=>(W in B))||B.CI_NAME==="codeship")return 1;return Y}if("TEAMCITY_VERSION"in B)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(B.TEAMCITY_VERSION)?1:0;if(B.COLORTERM==="truecolor")return 3;if(B.TERM==="xterm-kitty")return 3;if(B.TERM==="xterm-ghostty")return 3;if(B.TERM==="wezterm")return 3;if("TERM_PROGRAM"in B){let W=Number.parseInt((B.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(B.TERM_PROGRAM){case"iTerm.app":return W>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(B.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(B.TERM))return 1;if("COLORTERM"in B)return 1;return Y}function r5($,X={}){let J=nX($,{streamIsTTY:$&&$.isTTY,...X});return iX(J)}var oX={stdout:r5({isTTY:s5.isatty(1)}),stderr:r5({isTTY:s5.isatty(2)})},e5=oX;function $4($,X,J){let Z=$.indexOf(X);if(Z===-1)return $;let z=X.length,Y=0,W="";do W+=$.slice(Y,Z)+X+J,Y=Z+z,Z=$.indexOf(X,Y);while(Z!==-1);return W+=$.slice(Y),W}function X4($,X,J,Z){let z=0,Y="";do{let W=$[Z-1]==="\r";Y+=$.slice(z,W?Z-1:Z)+X+(W?`\r
|
|
68
|
+
`:`
|
|
69
|
+
`)+J,z=Z+1,Z=$.indexOf(`
|
|
70
|
+
`,z)}while(Z!==-1);return Y+=$.slice(z),Y}var{stdout:J4,stderr:Z4}=e5,C1=Symbol("GENERATOR"),D$=Symbol("STYLER"),V0=Symbol("IS_EMPTY"),z4=["ansi","ansi","ansi256","ansi16m"],E$=Object.create(null),aX=($,X={})=>{if(X.level&&!(Number.isInteger(X.level)&&X.level>=0&&X.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let J=J4?J4.level:0;$.level=X.level===void 0?J:X.level};var tX=($)=>{let X=(...J)=>J.join(" ");return aX(X,$),Object.setPrototypeOf(X,q0.prototype),X};function q0($){return tX($)}Object.setPrototypeOf(q0.prototype,Function.prototype);for(let[$,X]of Object.entries(d))E$[$]={get(){let J=i0(this,R1(X.open,X.close,this[D$]),this[V0]);return Object.defineProperty(this,$,{value:J}),J}};E$.visible={get(){let $=i0(this,this[D$],!0);return Object.defineProperty(this,"visible",{value:$}),$}};var A1=($,X,J,...Z)=>{if($==="rgb"){if(X==="ansi16m")return d[J].ansi16m(...Z);if(X==="ansi256")return d[J].ansi256(d.rgbToAnsi256(...Z));return d[J].ansi(d.rgbToAnsi(...Z))}if($==="hex")return A1("rgb",X,J,...d.hexToRgb(...Z));return d[J][$](...Z)},sX=["rgb","hex","ansi256"];for(let $ of sX){E$[$]={get(){let{level:J}=this;return function(...Z){let z=R1(A1($,z4[J],"color",...Z),d.color.close,this[D$]);return i0(this,z,this[V0])}}};let X="bg"+$[0].toUpperCase()+$.slice(1);E$[X]={get(){let{level:J}=this;return function(...Z){let z=R1(A1($,z4[J],"bgColor",...Z),d.bgColor.close,this[D$]);return i0(this,z,this[V0])}}}}var rX=Object.defineProperties(()=>{},{...E$,level:{enumerable:!0,get(){return this[C1].level},set($){this[C1].level=$}}}),R1=($,X,J)=>{let Z,z;if(J===void 0)Z=$,z=X;else Z=J.openAll+$,z=X+J.closeAll;return{open:$,close:X,openAll:Z,closeAll:z,parent:J}},i0=($,X,J)=>{let Z=(...z)=>eX(Z,z.length===1?""+z[0]:z.join(" "));return Object.setPrototypeOf(Z,rX),Z[C1]=$,Z[D$]=X,Z[V0]=J,Z},eX=($,X)=>{if($.level<=0||!X)return $[V0]?"":X;let J=$[D$];if(J===void 0)return X;let{openAll:Z,closeAll:z}=J;if(X.includes("\x1B"))while(J!==void 0)X=$4(X,J.close,J.open),J=J.parent;let Y=X.indexOf(`
|
|
71
|
+
`);if(Y!==-1)X=X4(X,z,Z,Y);return Z+X+z};Object.defineProperties(q0.prototype,E$);var $8=q0(),lZ=q0({level:Z4?Z4.level:0});var j=$8;var f1=null;function X8(){if(!process.env.ANTHROPIC_API_KEY)console.error(j.red("\uD83E\uDD52 Something went sour.")),console.error(),console.error(" Missing API key for the AI."),console.error(j.dim(" Get one at: https://console.anthropic.com/")),process.exit(1);if(!f1)f1=new m;return f1}async function U0($){let X=X8();try{let J=await X.messages.create({model:"claude-sonnet-4-20250514",max_tokens:2048,messages:[{role:"user",content:$}]});return J.content[0].type==="text"?J.content[0].text:""}catch(J){if(J instanceof m.AuthenticationError)console.error(j.red("\uD83E\uDD52 That API key's gone bad. Double-check it?")),process.exit(1);if(J instanceof m.RateLimitError)return console.error(j.yellow("β³ Brine time... AI needs a breather (10s)")),await Bun.sleep(1e4),U0($);throw J}}async function N0($){let J=(await U0(`${$}
|
|
72
|
+
|
|
73
|
+
Respond ONLY with valid JSON, no markdown.`)).trim();if(J.startsWith("```"))J=J.replace(/```json?\n?/g,"").replace(/```$/g,"").trim();return JSON.parse(J)}async function k1($,X,J,Z){let z=[$.name,...X],Y=[];for(let W of J){Z?.(`Analyzing: ${W.name}`);let Q={};for(let q of z)Q[q.toLowerCase()]={mentions:0,total:W.questions.length,percentage:0,contexts:[]};for(let q of W.questions){let N=await U0(q);for(let w of z){let T=w.toLowerCase();if(new RegExp(`\\b${Y4(w)}\\b`,"gi").test(N)){if(Q[T].mentions++,Q[T].contexts.length<2){let c=J8(N,w);if(c)Q[T].contexts.push(c)}}}}let G="",V=0;for(let[q,N]of Object.entries(Q))if(N.percentage=Math.round(N.mentions/N.total*100),N.mentions>V)V=N.mentions,G=q;Y.push({topic:W.name,results:Q,leader:G})}return Y}function Y4($){return $.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function J8($,X){let J=$.split(/[.!?]+/),Z=new RegExp(`\\b${Y4(X)}\\b`,"gi");for(let z of J)if(Z.test(z)){let Y=z.trim();if(Y.length>20&&Y.length<150)return Y}return null}async function y1($){let{readme:X,packageJson:J,repoUrl:Z,repo:z}=$,Y="";if(J)Y+=`Package: ${J.name||z}
|
|
74
|
+
`,Y+=`Description: ${J.description||"N/A"}
|
|
75
|
+
`,Y+=`Keywords: ${J.keywords?.join(", ")||"N/A"}
|
|
76
|
+
|
|
77
|
+
`;if(X)Y+=`README:
|
|
78
|
+
${X.slice(0,3000)}`;return{...await N0(`Analyze this developer tool:
|
|
79
|
+
|
|
80
|
+
${Y}
|
|
81
|
+
|
|
82
|
+
Return JSON:
|
|
83
|
+
{
|
|
84
|
+
"name": "tool name",
|
|
85
|
+
"description": "one sentence description",
|
|
86
|
+
"domain": "problem domain (e.g., 'schema validation')",
|
|
87
|
+
"language": "primary language (e.g., 'TypeScript')"
|
|
88
|
+
}`),url:Z}}async function _1($){return(await N0(`Given:
|
|
89
|
+
- Name: ${$.name}
|
|
90
|
+
- Description: ${$.description}
|
|
91
|
+
- Domain: ${$.domain}
|
|
92
|
+
- Language: ${$.language}
|
|
93
|
+
|
|
94
|
+
List 3-5 direct competitors. Return JSON:
|
|
95
|
+
{ "competitors": ["tool1", "tool2", "tool3"] }`)).competitors}async function b1($,X){return(await N0(`Given:
|
|
96
|
+
- Name: ${$.name}
|
|
97
|
+
- Description: ${$.description}
|
|
98
|
+
- Domain: ${$.domain}
|
|
99
|
+
- Competitors: ${X.join(", ")}
|
|
100
|
+
|
|
101
|
+
Generate 3-4 topics where developers would search for this tool.
|
|
102
|
+
For each, create 5 natural questions a developer might ask an AI.
|
|
103
|
+
|
|
104
|
+
Return JSON:
|
|
105
|
+
{
|
|
106
|
+
"topics": [
|
|
107
|
+
{ "name": "topic name", "questions": ["q1", "q2", "q3", "q4", "q5"] }
|
|
108
|
+
]
|
|
109
|
+
}`)).topics}function Q4($){let J=$.trim().replace(/^https?:\/\//,"").replace(/^github\.com\//,"").replace(/\.git$/,"").replace(/\/$/,"").split("/");return J.length>=2?{owner:J[0],repo:J[1]}:null}async function h1($){let X=Q4($);if(!X)throw Error(`\uD83E\uDD52 Can't find that jar. Is the repo URL correct? (${$})`);let{owner:J,repo:Z}=X,z=`https://github.com/${J}/${Z}`,Y=await W4(J,Z,"README.md"),W=null;try{let Q=await W4(J,Z,"package.json");if(Q)W=JSON.parse(Q)}catch{}if(!Y&&!W)throw Error(`\uD83E\uDD52 Couldn't open the jar. GitHub might be having a moment. (${z})`);return{readme:Y,packageJson:W,repoUrl:z,owner:J,repo:Z}}async function W4($,X,J){let Z=[`https://raw.githubusercontent.com/${$}/${X}/main/${J}`,`https://raw.githubusercontent.com/${$}/${X}/master/${J}`];for(let z of Z){let Y=await fetch(z);if(Y.ok)return Y.text()}return""}var H0="β".repeat(55);function Z8($){if($>=80)return j.green("Well Preserved \uD83E\uDD52");if($>=60)return j.green("Looking Fresh \uD83E\uDD52");if($>=40)return j.yellow("Going Stale β οΈ");return j.red("Starting to Spoil \uD83E\uDD52")}function v1($){let{product:X,competitors:J,topics:Z,summary:z}=$;console.log(),console.log(j.bold(`\uD83E\uDD52 Freshness Report: ${X.name}`)),console.log(H0),console.log(),console.log(`\uD83D\uDCE6 What's in the jar: ${X.name} - ${X.description}`),console.log(`\uD83C\uDFF7οΈ Domain: ${X.domain}`),console.log(`\uD83E\uDED9 Who else is on the shelf: ${J.join(", ")}`),console.log(),console.log(H0),console.log(j.bold("\uD83D\uDCCA HOW FRESH ARE YOU?")),console.log(H0);for(let Y of Z)console.log(),z8(Y,X.name);if(console.log(),console.log(H0),console.log(j.bold("\uD83D\uDCC8 FRESHNESS SUMMARY")),console.log(H0),console.log(),console.log(`Overall freshness: ${z.overallVisibility}% - ${Z8(z.overallVisibility)}`),console.log(`Top of the shelf in: ${z.leadingTopics}/${z.totalTopics} topics`),z.opportunities.length>0)console.log(j.yellow(`Room to stay fresh: ${z.opportunities.join(", ")}`));if(console.log(),z.overallVisibility>=80)console.log(j.green("\uD83E\uDD52 You're kind of a big dill!"));console.log(j.dim("Stay fresh! \uD83E\uDD52")),console.log()}function z8($,X){let J=X.toLowerCase(),Z=$.leader===J;console.log(j.bold(`Topic: "${$.topic}"`));let z=Object.entries($.results).sort((Y,W)=>W[1].mentions-Y[1].mentions);for(let Y=0;Y<z.length;Y++){let[W,Q]=z[Y],G=W===J,q=`${Y===0?G?" \uD83E\uDD52":" β οΈ":Y===z.length-1?" ββ":" ββ"} ${W}: ${Q.mentions}/${Q.total} (${Q.percentage}%)`;if(G&&Z)q+=j.green(" - Well preserved!");else if(G&&!Z)q+=j.yellow(" - Going stale");else if(Y===0&&!G)q+=j.dim(" β Top of the shelf");if(console.log(q),G&&Q.contexts.length>0){let N=Q.contexts[0].slice(0,50);console.log(j.dim(` β ββ "${N}..."`))}}}function n0($){return JSON.stringify($,null,2)}function g1($){let{product:X,topics:J,summary:Z}=$,z=X.name.toLowerCase(),Y=0,W=[];for(let Q of J){let G=Q.results[z];if(Q.leader!==z){Y++;let q=Q.results[Q.leader];W.push(` <testcase name="${w0(Q.topic)}" status="opportunity">
|
|
110
|
+
<failure message="competitor ${w0(Q.leader)} leads with ${q?.percentage||0}%"/>
|
|
111
|
+
<visibility>${G?.percentage||0}%</visibility>
|
|
112
|
+
</testcase>`)}else W.push(` <testcase name="${w0(Q.topic)}" status="leading">
|
|
113
|
+
<visibility>${G?.percentage||0}%</visibility>
|
|
114
|
+
</testcase>`)}return`<?xml version="1.0" encoding="UTF-8"?>
|
|
115
|
+
<testsuites name="pickled" tests="${J.length}" failures="${Y}">
|
|
116
|
+
<testsuite name="${w0(X.name)}" tests="${J.length}" failures="${Y}">
|
|
117
|
+
<properties>
|
|
118
|
+
<property name="domain" value="${w0(X.domain)}"/>
|
|
119
|
+
<property name="visibility" value="${Z.overallVisibility}%"/>
|
|
120
|
+
</properties>
|
|
121
|
+
${W.join(`
|
|
122
|
+
`)}
|
|
123
|
+
</testsuite>
|
|
124
|
+
</testsuites>`}function w0($){return $.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}async function K4($,X){let{json:J,output:Z,verbose:z,competitors:Y}=X,W=(P)=>!J&&console.log(j.dim(P));W("\uD83E\uDD52 Opening the jar...");let Q=await h1($);if(z)W(` Found: ${Q.repoUrl}`);W("\uD83D\uDD0D Checking what's inside...");let G=await y1(Q);if(z)W(` ${G.name}: ${G.description}`);let V;if(Y)V=Y.split(",").map((P)=>P.trim()),W(`\uD83E\uDED9 Using provided shelf mates: ${V.join(", ")}`);else if(W("\uD83E\uDED9 Seeing who else is on the shelf..."),V=await _1(G),z)W(` Found: ${V.join(", ")}`);W("\uD83C\uDFF7οΈ Picking the right questions...");let q=await b1(G,V);if(z)for(let P of q)W(` - ${P.name} (${P.questions.length} questions)`);W("\uD83D\uDCCA Checking your freshness...");let N=await k1(G,V,q,(P)=>{if(z)W(` ${P}`)}),w=G.name.toLowerCase(),T=0,R=0,c=0,b=[];for(let P of N){let B$=P.results[w];if(T+=B$?.mentions||0,R+=B$?.total||0,P.leader===w)c++;else b.push(P.topic)}let A={product:G,competitors:V,topics:N,summary:{overallVisibility:R>0?Math.round(T/R*100):0,totalMentions:T,totalQuestions:R,leadingTopics:c,totalTopics:N.length,opportunities:b}};if(Z){let P=Z.endsWith(".xml")?g1(A):n0(A);await Bun.write(Z,P),W(`
|
|
125
|
+
\uD83E\uDD52 Freshness report saved to ${Z}`)}else if(J)console.log(n0(A));else v1(A)}D0.name("pickled").description("Preserve your visibility in AI \uD83E\uDD52").version("0.1.0");D0.command("check").description("Check your freshness in AI").argument("<repo>","GitHub repo to check (e.g., github.com/user/repo)").option("--json","Output as fresh JSON").option("-o, --output <file>","Save report to file (.json or .xml)").option("-v, --verbose","Show the full pickling process").option("-c, --competitors <list>","Comma-separated competitor list (skip auto-discovery)").action(K4);D0.parse();
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pickled-dev/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Stay fresh in AI π₯",
|
|
5
|
+
"module": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"pickled": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "bun build ./src/index.ts --outdir ./dist --target node --minify",
|
|
15
|
+
"release": "semantic-release"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"commander": "^14.0.2",
|
|
19
|
+
"chalk": "^5.6.2"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@pickled-dev/core": "workspace:*",
|
|
23
|
+
"semantic-release": "^25.0.2",
|
|
24
|
+
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
25
|
+
"@semantic-release/exec": "^7.1.0",
|
|
26
|
+
"@semantic-release/git": "^10.0.1",
|
|
27
|
+
"@semantic-release/github": "^12.0.2"
|
|
28
|
+
}
|
|
29
|
+
}
|