@perstack/core 0.0.15 → 0.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/src/index.js CHANGED
@@ -38,6 +38,194 @@ var maxSkillToolItems = 255;
38
38
  var maxCheckpointToolCallIdLength = 255;
39
39
  var envNameRegex = /^[a-zA-Z0-9][a-zA-Z0-9_-]*$/;
40
40
  var maxEnvNameLength = 255;
41
+
42
+ // src/known-models/index.ts
43
+ var knownModels = [
44
+ {
45
+ provider: "anthropic",
46
+ models: [
47
+ // https://docs.claude.com/en/docs/about-claude/models/overview#model-comparison-table
48
+ {
49
+ name: "claude-opus-4-5",
50
+ contextWindow: 2e5,
51
+ maxOutputTokens: 32e3
52
+ },
53
+ {
54
+ name: "claude-opus-4-1",
55
+ contextWindow: 2e5,
56
+ maxOutputTokens: 32e3
57
+ },
58
+ {
59
+ name: "claude-opus-4-20250514",
60
+ contextWindow: 2e5,
61
+ maxOutputTokens: 32e3
62
+ },
63
+ {
64
+ name: "claude-sonnet-4-5",
65
+ contextWindow: 2e5,
66
+ maxOutputTokens: 64e3
67
+ },
68
+ {
69
+ name: "claude-sonnet-4-20250514",
70
+ contextWindow: 2e5,
71
+ maxOutputTokens: 64e3
72
+ },
73
+ {
74
+ name: "claude-3-7-sonnet-20250219",
75
+ contextWindow: 2e5,
76
+ maxOutputTokens: 64e3
77
+ },
78
+ {
79
+ name: "claude-haiku-4-5",
80
+ contextWindow: 2e5,
81
+ maxOutputTokens: 8192
82
+ },
83
+ {
84
+ name: "claude-3-5-haiku-latest",
85
+ contextWindow: 2e5,
86
+ maxOutputTokens: 8192
87
+ }
88
+ ]
89
+ },
90
+ {
91
+ provider: "google",
92
+ models: [
93
+ // https://ai.google.dev/gemini-api/docs/models#gemini-3-pro
94
+ {
95
+ name: "gemini-3-pro-preview",
96
+ contextWindow: 1048576,
97
+ maxOutputTokens: 65536
98
+ },
99
+ // https://ai.google.dev/gemini-api/docs/models#gemini-2.5-pro
100
+ {
101
+ name: "gemini-2.5-pro",
102
+ contextWindow: 1048576,
103
+ maxOutputTokens: 65536
104
+ },
105
+ // https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash
106
+ {
107
+ name: "gemini-2.5-flash",
108
+ contextWindow: 1048576,
109
+ maxOutputTokens: 65536
110
+ },
111
+ // https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-lite
112
+ {
113
+ name: "gemini-2.5-flash-lite",
114
+ contextWindow: 1048576,
115
+ maxOutputTokens: 65536
116
+ }
117
+ ]
118
+ },
119
+ {
120
+ provider: "openai",
121
+ models: [
122
+ // https://platform.openai.com/docs/models/gpt-5
123
+ {
124
+ name: "gpt-5",
125
+ contextWindow: 4e5,
126
+ maxOutputTokens: 128e3
127
+ },
128
+ // https://platform.openai.com/docs/models/gpt-5-mini
129
+ {
130
+ name: "gpt-5-mini",
131
+ contextWindow: 4e5,
132
+ maxOutputTokens: 128e3
133
+ },
134
+ // https://platform.openai.com/docs/models/gpt-5-nano
135
+ {
136
+ name: "gpt-5-nano",
137
+ contextWindow: 4e5,
138
+ maxOutputTokens: 128e3
139
+ },
140
+ // https://platform.openai.com/docs/models/gpt-5-chat-latest
141
+ {
142
+ name: "gpt-5-chat-latest",
143
+ contextWindow: 128e3,
144
+ maxOutputTokens: 16384
145
+ },
146
+ // https://platform.openai.com/docs/models/o4-mini
147
+ {
148
+ name: "o4-mini",
149
+ contextWindow: 2e5,
150
+ maxOutputTokens: 1e5
151
+ },
152
+ // https://platform.openai.com/docs/models/o3
153
+ {
154
+ name: "o3",
155
+ contextWindow: 2e5,
156
+ maxOutputTokens: 1e4
157
+ },
158
+ // https://platform.openai.com/docs/models/o3-mini
159
+ {
160
+ name: "o3-mini",
161
+ contextWindow: 2e5,
162
+ maxOutputTokens: 1e4
163
+ },
164
+ // https://platform.openai.com/docs/models/gpt-4.1
165
+ {
166
+ name: "gpt-4.1",
167
+ contextWindow: 1047576,
168
+ maxOutputTokens: 32768
169
+ }
170
+ ]
171
+ },
172
+ {
173
+ provider: "deepseek",
174
+ models: [
175
+ {
176
+ name: "deepseek-chat",
177
+ contextWindow: 128e3,
178
+ maxOutputTokens: 8192
179
+ },
180
+ {
181
+ name: "deepseek-reasoner",
182
+ contextWindow: 128e3,
183
+ maxOutputTokens: 64e3
184
+ }
185
+ ]
186
+ },
187
+ {
188
+ provider: "ollama",
189
+ models: [
190
+ // https://platform.openai.com/docs/models/gpt-oss-20b
191
+ {
192
+ name: "gpt-oss:20b",
193
+ contextWindow: 131072,
194
+ maxOutputTokens: 131072
195
+ },
196
+ // https://platform.openai.com/docs/models/gpt-oss-120b
197
+ {
198
+ name: "gpt-oss:120b",
199
+ contextWindow: 131072,
200
+ maxOutputTokens: 131072
201
+ },
202
+ // https://ai.google.dev/gemma/docs/core/model_card_3
203
+ {
204
+ name: "gemma3:1b",
205
+ contextWindow: 32e3,
206
+ maxOutputTokens: 32e3
207
+ },
208
+ // https://ai.google.dev/gemma/docs/core/model_card_3
209
+ {
210
+ name: "gemma3:4b",
211
+ contextWindow: 128e3,
212
+ maxOutputTokens: 128e3
213
+ },
214
+ // https://ai.google.dev/gemma/docs/core/model_card_3
215
+ {
216
+ name: "gemma3:12b",
217
+ contextWindow: 128e3,
218
+ maxOutputTokens: 128e3
219
+ },
220
+ // https://ai.google.dev/gemma/docs/core/model_card_3
221
+ {
222
+ name: "gemma3:27b",
223
+ contextWindow: 128e3,
224
+ maxOutputTokens: 128e3
225
+ }
226
+ ]
227
+ }
228
+ ];
41
229
  var basePartSchema = z.object({
42
230
  id: z.string()
43
231
  });
@@ -288,7 +476,8 @@ var providerNameSchema = z.enum([
288
476
  "ollama",
289
477
  "azure-openai",
290
478
  "amazon-bedrock",
291
- "google-vertex"
479
+ "google-vertex",
480
+ "deepseek"
292
481
  ]);
293
482
  var anthropicProviderConfigSchema = z.object({
294
483
  providerName: z.literal(providerNameSchema.enum.anthropic),
@@ -339,6 +528,12 @@ var googleVertexProviderConfigSchema = z.object({
339
528
  baseUrl: z.string().optional(),
340
529
  headers: headersSchema
341
530
  });
531
+ var deepseekProviderConfigSchema = z.object({
532
+ providerName: z.literal(providerNameSchema.enum.deepseek),
533
+ apiKey: z.string(),
534
+ baseUrl: z.string().optional(),
535
+ headers: headersSchema
536
+ });
342
537
  var providerConfigSchema = z.discriminatedUnion("providerName", [
343
538
  anthropicProviderConfigSchema,
344
539
  googleGenerativeAiProviderConfigSchema,
@@ -346,7 +541,8 @@ var providerConfigSchema = z.discriminatedUnion("providerName", [
346
541
  ollamaProviderConfigSchema,
347
542
  azureOpenAiProviderConfigSchema,
348
543
  amazonBedrockProviderConfigSchema,
349
- googleVertexProviderConfigSchema
544
+ googleVertexProviderConfigSchema,
545
+ deepseekProviderConfigSchema
350
546
  ]);
351
547
 
352
548
  // src/schemas/perstack-toml.ts
@@ -385,19 +581,44 @@ var googleVertexSettingSchema = z.object({
385
581
  baseUrl: z.string().optional(),
386
582
  headers: headersSchema
387
583
  });
388
- var providerSettingSchema = z.union([
389
- anthropicSettingSchema,
390
- googleSettingSchema,
391
- openAiSettingSchema,
392
- ollamaSettingSchema,
393
- azureOpenAiSettingSchema,
394
- amazonBedrockSettingSchema,
395
- googleVertexSettingSchema
396
- ]);
397
- var providerTableSchema = z.object({
398
- providerName: providerNameSchema,
399
- setting: providerSettingSchema.optional()
584
+ var deepseekSettingSchema = z.object({
585
+ baseUrl: z.string().optional(),
586
+ headers: headersSchema
400
587
  });
588
+ var providerTableSchema = z.discriminatedUnion("providerName", [
589
+ z.object({
590
+ providerName: z.literal("anthropic"),
591
+ setting: anthropicSettingSchema.optional()
592
+ }),
593
+ z.object({
594
+ providerName: z.literal("google"),
595
+ setting: googleSettingSchema.optional()
596
+ }),
597
+ z.object({
598
+ providerName: z.literal("openai"),
599
+ setting: openAiSettingSchema.optional()
600
+ }),
601
+ z.object({
602
+ providerName: z.literal("ollama"),
603
+ setting: ollamaSettingSchema.optional()
604
+ }),
605
+ z.object({
606
+ providerName: z.literal("azure-openai"),
607
+ setting: azureOpenAiSettingSchema.optional()
608
+ }),
609
+ z.object({
610
+ providerName: z.literal("amazon-bedrock"),
611
+ setting: amazonBedrockSettingSchema.optional()
612
+ }),
613
+ z.object({
614
+ providerName: z.literal("google-vertex"),
615
+ setting: googleVertexSettingSchema.optional()
616
+ }),
617
+ z.object({
618
+ providerName: z.literal("deepseek"),
619
+ setting: deepseekSettingSchema.optional()
620
+ })
621
+ ]);
401
622
  var perstackConfigSchema = z.object({
402
623
  provider: providerTableSchema.optional(),
403
624
  model: z.string().optional(),
@@ -448,7 +669,8 @@ var perstackConfigSchema = z.object({
448
669
  })
449
670
  ])
450
671
  ).optional(),
451
- delegates: z.array(z.string()).optional()
672
+ delegates: z.array(z.string()).optional(),
673
+ tags: z.array(z.string()).optional()
452
674
  })
453
675
  ).optional(),
454
676
  perstackApiBaseUrl: z.url().optional(),
@@ -615,179 +837,24 @@ var stepSchema = z.object({
615
837
  finishedAt: z.number().optional()
616
838
  });
617
839
 
618
- // src/known-models/index.ts
619
- var knownModels = [
620
- {
621
- provider: "anthropic",
622
- models: [
623
- // https://docs.claude.com/en/docs/about-claude/models/overview#model-comparison-table
624
- {
625
- name: "claude-opus-4-5",
626
- contextWindow: 2e5,
627
- maxOutputTokens: 32e3
628
- },
629
- {
630
- name: "claude-opus-4-1",
631
- contextWindow: 2e5,
632
- maxOutputTokens: 32e3
633
- },
634
- {
635
- name: "claude-opus-4-20250514",
636
- contextWindow: 2e5,
637
- maxOutputTokens: 32e3
638
- },
639
- {
640
- name: "claude-sonnet-4-5",
641
- contextWindow: 2e5,
642
- maxOutputTokens: 64e3
643
- },
644
- {
645
- name: "claude-sonnet-4-20250514",
646
- contextWindow: 2e5,
647
- maxOutputTokens: 64e3
648
- },
649
- {
650
- name: "claude-3-7-sonnet-20250219",
651
- contextWindow: 2e5,
652
- maxOutputTokens: 64e3
653
- },
654
- {
655
- name: "claude-haiku-4-5",
656
- contextWindow: 2e5,
657
- maxOutputTokens: 8192
658
- },
659
- {
660
- name: "claude-3-5-haiku-latest",
661
- contextWindow: 2e5,
662
- maxOutputTokens: 8192
663
- }
664
- ]
665
- },
666
- {
667
- provider: "google",
668
- models: [
669
- // https://ai.google.dev/gemini-api/docs/models#gemini-3-pro
670
- {
671
- name: "gemini-3-pro-preview",
672
- contextWindow: 1048576,
673
- maxOutputTokens: 65536
674
- },
675
- // https://ai.google.dev/gemini-api/docs/models#gemini-2.5-pro
676
- {
677
- name: "gemini-2.5-pro",
678
- contextWindow: 1048576,
679
- maxOutputTokens: 65536
680
- },
681
- // https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash
682
- {
683
- name: "gemini-2.5-flash",
684
- contextWindow: 1048576,
685
- maxOutputTokens: 65536
686
- },
687
- // https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-lite
688
- {
689
- name: "gemini-2.5-flash-lite",
690
- contextWindow: 1048576,
691
- maxOutputTokens: 65536
692
- }
693
- ]
694
- },
695
- {
696
- provider: "openai",
697
- models: [
698
- // https://platform.openai.com/docs/models/gpt-5
699
- {
700
- name: "gpt-5",
701
- contextWindow: 4e5,
702
- maxOutputTokens: 128e3
703
- },
704
- // https://platform.openai.com/docs/models/gpt-5-mini
705
- {
706
- name: "gpt-5-mini",
707
- contextWindow: 4e5,
708
- maxOutputTokens: 128e3
709
- },
710
- // https://platform.openai.com/docs/models/gpt-5-nano
711
- {
712
- name: "gpt-5-nano",
713
- contextWindow: 4e5,
714
- maxOutputTokens: 128e3
715
- },
716
- // https://platform.openai.com/docs/models/gpt-5-chat-latest
717
- {
718
- name: "gpt-5-chat-latest",
719
- contextWindow: 128e3,
720
- maxOutputTokens: 16384
721
- },
722
- // https://platform.openai.com/docs/models/o4-mini
723
- {
724
- name: "o4-mini",
725
- contextWindow: 2e5,
726
- maxOutputTokens: 1e5
727
- },
728
- // https://platform.openai.com/docs/models/o3
729
- {
730
- name: "o3",
731
- contextWindow: 2e5,
732
- maxOutputTokens: 1e4
733
- },
734
- // https://platform.openai.com/docs/models/o3-mini
735
- {
736
- name: "o3-mini",
737
- contextWindow: 2e5,
738
- maxOutputTokens: 1e4
739
- },
740
- // https://platform.openai.com/docs/models/gpt-4.1
741
- {
742
- name: "gpt-4.1",
743
- contextWindow: 1047576,
744
- maxOutputTokens: 32768
745
- }
746
- ]
747
- },
748
- {
749
- provider: "ollama",
750
- models: [
751
- // https://platform.openai.com/docs/models/gpt-oss-20b
752
- {
753
- name: "gpt-oss:20b",
754
- contextWindow: 131072,
755
- maxOutputTokens: 131072
756
- },
757
- // https://platform.openai.com/docs/models/gpt-oss-120b
758
- {
759
- name: "gpt-oss:120b",
760
- contextWindow: 131072,
761
- maxOutputTokens: 131072
762
- },
763
- // https://ai.google.dev/gemma/docs/core/model_card_3
764
- {
765
- name: "gemma3:1b",
766
- contextWindow: 32e3,
767
- maxOutputTokens: 32e3
768
- },
769
- // https://ai.google.dev/gemma/docs/core/model_card_3
770
- {
771
- name: "gemma3:4b",
772
- contextWindow: 128e3,
773
- maxOutputTokens: 128e3
774
- },
775
- // https://ai.google.dev/gemma/docs/core/model_card_3
776
- {
777
- name: "gemma3:12b",
778
- contextWindow: 128e3,
779
- maxOutputTokens: 128e3
780
- },
781
- // https://ai.google.dev/gemma/docs/core/model_card_3
782
- {
783
- name: "gemma3:27b",
784
- contextWindow: 128e3,
785
- maxOutputTokens: 128e3
786
- }
787
- ]
840
+ // src/utils/zod-error.ts
841
+ function formatZodError(error) {
842
+ const issues = error.issues.map((issue) => {
843
+ const path = issue.path.length > 0 ? `${issue.path.join(".")}: ` : "";
844
+ return ` - ${path}${issue.message}`;
845
+ });
846
+ return `Validation failed:
847
+ ${issues.join("\n")}`;
848
+ }
849
+ function parseWithFriendlyError(schema, data, context) {
850
+ const result = schema.safeParse(data);
851
+ if (result.success) {
852
+ return result.data;
788
853
  }
789
- ];
854
+ const prefix = context ? `${context}: ` : "";
855
+ throw new Error(`${prefix}${formatZodError(result.error)}`);
856
+ }
790
857
 
791
- export { amazonBedrockProviderConfigSchema, anthropicProviderConfigSchema, attemptCompletion, azureOpenAiProviderConfigSchema, basePartSchema, callDelegate, callInteractiveTool, callTool, checkpointSchema, checkpointStatusSchema, completeRun, continueToNextStep, createEvent, createRuntimeEvent, defaultMaxRetries, defaultMaxSteps, defaultPerstackApiBaseUrl, defaultTemperature, defaultTimeout, envNameRegex, expertKeyRegex, expertMessageSchema, expertNameRegex, expertSchema, expertVersionRegex, fileBinaryPartSchema, fileInlinePartSchema, fileUrlPartSchema, finishToolCall, googleGenerativeAiProviderConfigSchema, googleVertexProviderConfigSchema, headersSchema, imageBinaryPartSchema, imageInlinePartSchema, imageUrlPartSchema, instructionMessageSchema, interactiveSkillSchema, interactiveToolSchema, knownModels, maxApplicationNameLength, maxCheckpointToolCallIdLength, maxEnvNameLength, maxExpertDelegateItems, maxExpertDescriptionLength, maxExpertInstructionLength, maxExpertJobFileNameLength, maxExpertJobQueryLength, maxExpertKeyLength, maxExpertNameLength, maxExpertSkillItems, maxExpertTagItems, maxExpertVersionTagLength, maxOrganizationNameLength, maxSkillDescriptionLength, maxSkillEndpointLength, maxSkillInputJsonSchemaLength, maxSkillNameLength, maxSkillPickOmitItems, maxSkillRequiredEnvItems, maxSkillRuleLength, maxSkillToolItems, maxSkillToolNameLength, mcpSseSkillSchema, mcpStdioSkillSchema, messagePartSchema, messageSchema, ollamaProviderConfigSchema, openAiProviderConfigSchema, organizationNameRegex, packageWithVersionRegex, parseExpertKey, perstackConfigSchema, providerConfigSchema, providerNameSchema, providerTableSchema, resolveImageFile, resolvePdfFile, resolveThought, resolveToolResult, retry, runCommandInputSchema, runParamsSchema, skillSchema, startCommandInputSchema, startGeneration, startRun, stepSchema, stopRunByDelegate, stopRunByExceededMaxSteps, stopRunByInteractiveTool, tagNameRegex, textPartSchema, toolCallPartSchema, toolCallSchema, toolMessageSchema, toolResultPartSchema, toolResultSchema, urlSafeRegex, usageSchema, userMessageSchema };
858
+ export { amazonBedrockProviderConfigSchema, anthropicProviderConfigSchema, attemptCompletion, azureOpenAiProviderConfigSchema, basePartSchema, callDelegate, callInteractiveTool, callTool, checkpointSchema, checkpointStatusSchema, completeRun, continueToNextStep, createEvent, createRuntimeEvent, deepseekProviderConfigSchema, defaultMaxRetries, defaultMaxSteps, defaultPerstackApiBaseUrl, defaultTemperature, defaultTimeout, envNameRegex, expertKeyRegex, expertMessageSchema, expertNameRegex, expertSchema, expertVersionRegex, fileBinaryPartSchema, fileInlinePartSchema, fileUrlPartSchema, finishToolCall, formatZodError, googleGenerativeAiProviderConfigSchema, googleVertexProviderConfigSchema, headersSchema, imageBinaryPartSchema, imageInlinePartSchema, imageUrlPartSchema, instructionMessageSchema, interactiveSkillSchema, interactiveToolSchema, knownModels, maxApplicationNameLength, maxCheckpointToolCallIdLength, maxEnvNameLength, maxExpertDelegateItems, maxExpertDescriptionLength, maxExpertInstructionLength, maxExpertJobFileNameLength, maxExpertJobQueryLength, maxExpertKeyLength, maxExpertNameLength, maxExpertSkillItems, maxExpertTagItems, maxExpertVersionTagLength, maxOrganizationNameLength, maxSkillDescriptionLength, maxSkillEndpointLength, maxSkillInputJsonSchemaLength, maxSkillNameLength, maxSkillPickOmitItems, maxSkillRequiredEnvItems, maxSkillRuleLength, maxSkillToolItems, maxSkillToolNameLength, mcpSseSkillSchema, mcpStdioSkillSchema, messagePartSchema, messageSchema, ollamaProviderConfigSchema, openAiProviderConfigSchema, organizationNameRegex, packageWithVersionRegex, parseExpertKey, parseWithFriendlyError, perstackConfigSchema, providerConfigSchema, providerNameSchema, providerTableSchema, resolveImageFile, resolvePdfFile, resolveThought, resolveToolResult, retry, runCommandInputSchema, runParamsSchema, skillSchema, startCommandInputSchema, startGeneration, startRun, stepSchema, stopRunByDelegate, stopRunByExceededMaxSteps, stopRunByInteractiveTool, tagNameRegex, textPartSchema, toolCallPartSchema, toolCallSchema, toolMessageSchema, toolResultPartSchema, toolResultSchema, urlSafeRegex, usageSchema, userMessageSchema };
792
859
  //# sourceMappingURL=index.js.map
793
860
  //# sourceMappingURL=index.js.map