@shipfox/api-agent-dto 2.0.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.
Files changed (68) hide show
  1. package/.turbo/turbo-build.log +2 -0
  2. package/.turbo/turbo-type$colon$emit.log +1 -0
  3. package/.turbo/turbo-type.log +1 -0
  4. package/CHANGELOG.md +48 -0
  5. package/LICENSE +21 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +3 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/schemas/catalog.d.ts +190 -0
  11. package/dist/schemas/catalog.d.ts.map +1 -0
  12. package/dist/schemas/catalog.js +231 -0
  13. package/dist/schemas/catalog.js.map +1 -0
  14. package/dist/schemas/custom-model-provider.d.ts +187 -0
  15. package/dist/schemas/custom-model-provider.d.ts.map +1 -0
  16. package/dist/schemas/custom-model-provider.js +168 -0
  17. package/dist/schemas/custom-model-provider.js.map +1 -0
  18. package/dist/schemas/harness.d.ts +49 -0
  19. package/dist/schemas/harness.d.ts.map +1 -0
  20. package/dist/schemas/harness.js +135 -0
  21. package/dist/schemas/harness.js.map +1 -0
  22. package/dist/schemas/index.d.ts +9 -0
  23. package/dist/schemas/index.d.ts.map +1 -0
  24. package/dist/schemas/index.js +10 -0
  25. package/dist/schemas/index.js.map +1 -0
  26. package/dist/schemas/materialized-agent-step-config.d.ts +186 -0
  27. package/dist/schemas/materialized-agent-step-config.d.ts.map +1 -0
  28. package/dist/schemas/materialized-agent-step-config.js +56 -0
  29. package/dist/schemas/materialized-agent-step-config.js.map +1 -0
  30. package/dist/schemas/model-provider-config.d.ts +108 -0
  31. package/dist/schemas/model-provider-config.d.ts.map +1 -0
  32. package/dist/schemas/model-provider-config.js +54 -0
  33. package/dist/schemas/model-provider-config.js.map +1 -0
  34. package/dist/schemas/model-provider-id.d.ts +81 -0
  35. package/dist/schemas/model-provider-id.d.ts.map +1 -0
  36. package/dist/schemas/model-provider-id.js +53 -0
  37. package/dist/schemas/model-provider-id.js.map +1 -0
  38. package/dist/schemas/runtime-config.d.ts +51 -0
  39. package/dist/schemas/runtime-config.d.ts.map +1 -0
  40. package/dist/schemas/runtime-config.js +31 -0
  41. package/dist/schemas/runtime-config.js.map +1 -0
  42. package/dist/schemas/workspace-defaults.d.ts +16 -0
  43. package/dist/schemas/workspace-defaults.d.ts.map +1 -0
  44. package/dist/schemas/workspace-defaults.js +10 -0
  45. package/dist/schemas/workspace-defaults.js.map +1 -0
  46. package/dist/tsconfig.test.tsbuildinfo +1 -0
  47. package/package.json +56 -0
  48. package/src/index.ts +122 -0
  49. package/src/schemas/catalog.test.ts +206 -0
  50. package/src/schemas/catalog.ts +304 -0
  51. package/src/schemas/custom-model-provider.test.ts +294 -0
  52. package/src/schemas/custom-model-provider.ts +258 -0
  53. package/src/schemas/harness.test.ts +133 -0
  54. package/src/schemas/harness.ts +210 -0
  55. package/src/schemas/index.ts +136 -0
  56. package/src/schemas/materialized-agent-step-config.test.ts +198 -0
  57. package/src/schemas/materialized-agent-step-config.ts +69 -0
  58. package/src/schemas/model-provider-config.test.ts +152 -0
  59. package/src/schemas/model-provider-config.ts +88 -0
  60. package/src/schemas/model-provider-id.ts +60 -0
  61. package/src/schemas/runtime-config.test.ts +132 -0
  62. package/src/schemas/runtime-config.ts +38 -0
  63. package/src/schemas/workspace-defaults.ts +14 -0
  64. package/tsconfig.build.json +9 -0
  65. package/tsconfig.build.tsbuildinfo +1 -0
  66. package/tsconfig.json +3 -0
  67. package/tsconfig.test.json +8 -0
  68. package/vitest.config.ts +3 -0
@@ -0,0 +1,187 @@
1
+ import { z } from 'zod';
2
+ export declare const MAX_MODEL_COUNT = 128;
3
+ export declare const DEFAULT_CUSTOM_MODEL_CONTEXT_WINDOW = 128000;
4
+ export declare const DEFAULT_CUSTOM_MODEL_MAX_OUTPUT_TOKENS = 16384;
5
+ export declare const DEFAULT_CUSTOM_MODEL_INPUT_IMAGE = false;
6
+ export declare const DEFAULT_CUSTOM_MODEL_REASONING = false;
7
+ export declare const modelProviderApiSchema: z.ZodEnum<{
8
+ "openai-completions": "openai-completions";
9
+ "openai-responses": "openai-responses";
10
+ "anthropic-messages": "anthropic-messages";
11
+ "google-generative-ai": "google-generative-ai";
12
+ }>;
13
+ export type ModelProviderApi = z.infer<typeof modelProviderApiSchema>;
14
+ export declare const customAgentModelSchema: z.ZodObject<{
15
+ id: z.ZodString;
16
+ label: z.ZodString;
17
+ context_window: z.ZodOptional<z.ZodNumber>;
18
+ max_output_tokens: z.ZodOptional<z.ZodNumber>;
19
+ input_image: z.ZodOptional<z.ZodBoolean>;
20
+ reasoning: z.ZodOptional<z.ZodBoolean>;
21
+ }, z.core.$strip>;
22
+ export type CustomAgentModelDto = z.infer<typeof customAgentModelSchema>;
23
+ export declare const customModelProviderHeaderDtoSchema: z.ZodObject<{
24
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
25
+ value: z.ZodString;
26
+ }, z.core.$strip>;
27
+ export type CustomModelProviderHeaderDto = z.infer<typeof customModelProviderHeaderDtoSchema>;
28
+ export declare const customModelProviderHeaderRequestSchema: z.ZodObject<{
29
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
30
+ value: z.ZodString;
31
+ secret: z.ZodBoolean;
32
+ }, z.core.$strip>;
33
+ export type CustomModelProviderHeaderRequestDto = z.infer<typeof customModelProviderHeaderRequestSchema>;
34
+ export declare const updateCustomModelProviderHeaderRequestSchema: z.ZodObject<{
35
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
36
+ value: z.ZodOptional<z.ZodString>;
37
+ secret: z.ZodBoolean;
38
+ keep: z.ZodOptional<z.ZodBoolean>;
39
+ }, z.core.$strip>;
40
+ export type UpdateCustomModelProviderHeaderRequestDto = z.infer<typeof updateCustomModelProviderHeaderRequestSchema>;
41
+ export declare const createCustomModelProviderBodySchema: z.ZodObject<{
42
+ headers: z.ZodOptional<z.ZodArray<z.ZodObject<{
43
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
44
+ value: z.ZodString;
45
+ secret: z.ZodBoolean;
46
+ }, z.core.$strip>>>;
47
+ display_name: z.ZodString;
48
+ api: z.ZodEnum<{
49
+ "openai-completions": "openai-completions";
50
+ "openai-responses": "openai-responses";
51
+ "anthropic-messages": "anthropic-messages";
52
+ "google-generative-ai": "google-generative-ai";
53
+ }>;
54
+ base_url: z.ZodString;
55
+ api_key: z.ZodOptional<z.ZodString>;
56
+ models: z.ZodArray<z.ZodObject<{
57
+ id: z.ZodString;
58
+ label: z.ZodString;
59
+ context_window: z.ZodOptional<z.ZodNumber>;
60
+ max_output_tokens: z.ZodOptional<z.ZodNumber>;
61
+ input_image: z.ZodOptional<z.ZodBoolean>;
62
+ reasoning: z.ZodOptional<z.ZodBoolean>;
63
+ }, z.core.$strip>>;
64
+ default_model: z.ZodOptional<z.ZodNullable<z.ZodString>>;
65
+ slug: z.ZodString;
66
+ }, z.core.$strip>;
67
+ export type CreateCustomModelProviderBodyDto = z.infer<typeof createCustomModelProviderBodySchema>;
68
+ export declare const updateCustomModelProviderBodySchema: z.ZodObject<{
69
+ headers: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
70
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
71
+ value: z.ZodOptional<z.ZodString>;
72
+ secret: z.ZodBoolean;
73
+ keep: z.ZodOptional<z.ZodBoolean>;
74
+ }, z.core.$strip>>>>;
75
+ models: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
76
+ id: z.ZodString;
77
+ label: z.ZodString;
78
+ context_window: z.ZodOptional<z.ZodNumber>;
79
+ max_output_tokens: z.ZodOptional<z.ZodNumber>;
80
+ input_image: z.ZodOptional<z.ZodBoolean>;
81
+ reasoning: z.ZodOptional<z.ZodBoolean>;
82
+ }, z.core.$strip>>>>;
83
+ display_name: z.ZodOptional<z.ZodString>;
84
+ api: z.ZodOptional<z.ZodEnum<{
85
+ "openai-completions": "openai-completions";
86
+ "openai-responses": "openai-responses";
87
+ "anthropic-messages": "anthropic-messages";
88
+ "google-generative-ai": "google-generative-ai";
89
+ }>>;
90
+ base_url: z.ZodOptional<z.ZodString>;
91
+ api_key: z.ZodOptional<z.ZodOptional<z.ZodString>>;
92
+ default_model: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
93
+ }, z.core.$strip>;
94
+ export type UpdateCustomModelProviderBodyDto = z.infer<typeof updateCustomModelProviderBodySchema>;
95
+ export declare const discoverCustomModelProviderModelsBodySchema: z.ZodObject<{
96
+ api: z.ZodEnum<{
97
+ "openai-completions": "openai-completions";
98
+ "openai-responses": "openai-responses";
99
+ "anthropic-messages": "anthropic-messages";
100
+ "google-generative-ai": "google-generative-ai";
101
+ }>;
102
+ base_url: z.ZodString;
103
+ api_key: z.ZodOptional<z.ZodString>;
104
+ headers: z.ZodOptional<z.ZodArray<z.ZodObject<{
105
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
106
+ value: z.ZodString;
107
+ }, z.core.$strip>>>;
108
+ }, z.core.$strip>;
109
+ export type DiscoverCustomModelProviderModelsBodyDto = z.infer<typeof discoverCustomModelProviderModelsBodySchema>;
110
+ export declare const discoverCustomModelProviderModelsBySlugBodySchema: z.ZodObject<{
111
+ api: z.ZodOptional<z.ZodEnum<{
112
+ "openai-completions": "openai-completions";
113
+ "openai-responses": "openai-responses";
114
+ "anthropic-messages": "anthropic-messages";
115
+ "google-generative-ai": "google-generative-ai";
116
+ }>>;
117
+ base_url: z.ZodOptional<z.ZodString>;
118
+ api_key: z.ZodOptional<z.ZodString>;
119
+ headers: z.ZodOptional<z.ZodArray<z.ZodObject<{
120
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
121
+ value: z.ZodOptional<z.ZodString>;
122
+ secret: z.ZodBoolean;
123
+ keep: z.ZodOptional<z.ZodBoolean>;
124
+ }, z.core.$strip>>>;
125
+ }, z.core.$strip>;
126
+ export type DiscoverCustomModelProviderModelsBySlugBodyDto = z.infer<typeof discoverCustomModelProviderModelsBySlugBodySchema>;
127
+ export declare const discoverCustomModelProviderModelsResponseSchema: z.ZodObject<{
128
+ models: z.ZodArray<z.ZodObject<{
129
+ id: z.ZodString;
130
+ label: z.ZodString;
131
+ }, z.core.$strip>>;
132
+ }, z.core.$strip>;
133
+ export type DiscoverCustomModelProviderModelsResponseDto = z.infer<typeof discoverCustomModelProviderModelsResponseSchema>;
134
+ export declare const customModelProviderRuntimeConfigSchema: z.ZodObject<{
135
+ api: z.ZodEnum<{
136
+ "openai-completions": "openai-completions";
137
+ "openai-responses": "openai-responses";
138
+ "anthropic-messages": "anthropic-messages";
139
+ "google-generative-ai": "google-generative-ai";
140
+ }>;
141
+ base_url: z.ZodString;
142
+ headers: z.ZodArray<z.ZodObject<{
143
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
144
+ value: z.ZodString;
145
+ }, z.core.$strip>>;
146
+ secret_header_names: z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
147
+ models: z.ZodArray<z.ZodObject<{
148
+ id: z.ZodString;
149
+ label: z.ZodString;
150
+ context_window: z.ZodOptional<z.ZodNumber>;
151
+ max_output_tokens: z.ZodOptional<z.ZodNumber>;
152
+ input_image: z.ZodOptional<z.ZodBoolean>;
153
+ reasoning: z.ZodOptional<z.ZodBoolean>;
154
+ }, z.core.$strip>>;
155
+ requires_api_key: z.ZodBoolean;
156
+ }, z.core.$strip>;
157
+ export type CustomModelProviderRuntimeConfigDto = z.infer<typeof customModelProviderRuntimeConfigSchema>;
158
+ export declare const customModelProviderConfigDtoSchema: z.ZodObject<{
159
+ api: z.ZodEnum<{
160
+ "openai-completions": "openai-completions";
161
+ "openai-responses": "openai-responses";
162
+ "anthropic-messages": "anthropic-messages";
163
+ "google-generative-ai": "google-generative-ai";
164
+ }>;
165
+ base_url: z.ZodString;
166
+ headers: z.ZodArray<z.ZodObject<{
167
+ name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
168
+ value: z.ZodString;
169
+ }, z.core.$strip>>;
170
+ secret_header_names: z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
171
+ models: z.ZodArray<z.ZodObject<{
172
+ id: z.ZodString;
173
+ label: z.ZodString;
174
+ context_window: z.ZodOptional<z.ZodNumber>;
175
+ max_output_tokens: z.ZodOptional<z.ZodNumber>;
176
+ input_image: z.ZodOptional<z.ZodBoolean>;
177
+ reasoning: z.ZodOptional<z.ZodBoolean>;
178
+ }, z.core.$strip>>;
179
+ kind: z.ZodLiteral<"custom">;
180
+ provider_id: z.ZodString;
181
+ display_name: z.ZodString;
182
+ default_model: z.ZodNullable<z.ZodString>;
183
+ created_at: z.ZodString;
184
+ updated_at: z.ZodString;
185
+ }, z.core.$strip>;
186
+ export type CustomModelProviderConfigDto = z.infer<typeof customModelProviderConfigDtoSchema>;
187
+ //# sourceMappingURL=custom-model-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-model-provider.d.ts","sourceRoot":"","sources":["../../src/schemas/custom-model-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,mCAAmC,SAAU,CAAC;AAC3D,eAAO,MAAM,sCAAsC,QAAS,CAAC;AAC7D,eAAO,MAAM,gCAAgC,QAAQ,CAAC;AACtD,eAAO,MAAM,8BAA8B,QAAQ,CAAC;AAapD,eAAO,MAAM,sBAAsB;;;;;EAKjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,sBAAsB;;;;;;;iBAOjC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEzE,eAAO,MAAM,kCAAkC;;;iBAG7C,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE9F,eAAO,MAAM,sCAAsC;;;;iBAEjD,CAAC;AAEH,MAAM,MAAM,mCAAmC,GAAG,CAAC,CAAC,KAAK,CACvD,OAAO,sCAAsC,CAC9C,CAAC;AAEF,eAAO,MAAM,4CAA4C;;;;;iBAiCrD,CAAC;AAEL,MAAM,MAAM,yCAAyC,GAAG,CAAC,CAAC,KAAK,CAC7D,OAAO,4CAA4C,CACpD,CAAC;AAgCF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;iBAQN,CAAC;AAE3C,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mCAAmC,CAAC,CAAC;AAEnG,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;iBAU5C,CAAC;AAEL,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mCAAmC,CAAC,CAAC;AAEnG,eAAO,MAAM,2CAA2C;;;;;;;;;;;;;iBAKtD,CAAC;AAEH,MAAM,MAAM,wCAAwC,GAAG,CAAC,CAAC,KAAK,CAC5D,OAAO,2CAA2C,CACnD,CAAC;AAEF,eAAO,MAAM,iDAAiD;;;;;;;;;;;;;;;iBAK5D,CAAC;AAEH,MAAM,MAAM,8CAA8C,GAAG,CAAC,CAAC,KAAK,CAClE,OAAO,iDAAiD,CACzD,CAAC;AAEF,eAAO,MAAM,+CAA+C;;;;;iBAI1D,CAAC;AAEH,MAAM,MAAM,4CAA4C,GAAG,CAAC,CAAC,KAAK,CAChE,OAAO,+CAA+C,CACvD,CAAC;AAaF,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;iBAEjD,CAAC;AAEH,MAAM,MAAM,mCAAmC,GAAG,CAAC,CAAC,KAAK,CACvD,OAAO,sCAAsC,CAC9C,CAAC;AAEF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO7C,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC"}
@@ -0,0 +1,168 @@
1
+ import { z } from 'zod';
2
+ import { isReservedModelProviderId, modelProviderRefSchema } from './model-provider-id.js';
3
+ const MAX_HEADER_COUNT = 32;
4
+ export const MAX_MODEL_COUNT = 128;
5
+ export const DEFAULT_CUSTOM_MODEL_CONTEXT_WINDOW = 128_000;
6
+ export const DEFAULT_CUSTOM_MODEL_MAX_OUTPUT_TOKENS = 16_384;
7
+ export const DEFAULT_CUSTOM_MODEL_INPUT_IMAGE = false;
8
+ export const DEFAULT_CUSTOM_MODEL_REASONING = false;
9
+ const headerNameSchema = z.string().trim().min(1).max(128).regex(/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/).transform((name)=>name.toLowerCase());
10
+ const headerValueSchema = z.string().min(1).max(8192);
11
+ const modelIdSchema = z.string().min(1).max(128);
12
+ export const modelProviderApiSchema = z.enum([
13
+ 'openai-completions',
14
+ 'openai-responses',
15
+ 'anthropic-messages',
16
+ 'google-generative-ai'
17
+ ]);
18
+ export const customAgentModelSchema = z.object({
19
+ id: modelIdSchema,
20
+ label: z.string().min(1).max(160),
21
+ context_window: z.number().int().positive().optional(),
22
+ max_output_tokens: z.number().int().positive().optional(),
23
+ input_image: z.boolean().optional(),
24
+ reasoning: z.boolean().optional()
25
+ });
26
+ export const customModelProviderHeaderDtoSchema = z.object({
27
+ name: headerNameSchema,
28
+ value: headerValueSchema
29
+ });
30
+ export const customModelProviderHeaderRequestSchema = customModelProviderHeaderDtoSchema.extend({
31
+ secret: z.boolean()
32
+ });
33
+ export const updateCustomModelProviderHeaderRequestSchema = z.object({
34
+ name: headerNameSchema,
35
+ value: headerValueSchema.optional(),
36
+ secret: z.boolean(),
37
+ keep: z.boolean().optional()
38
+ }).superRefine((header, ctx)=>{
39
+ if (header.keep === true) {
40
+ if (!header.secret) {
41
+ ctx.addIssue({
42
+ code: 'custom',
43
+ path: [
44
+ 'secret'
45
+ ],
46
+ message: 'Kept headers must be secret.'
47
+ });
48
+ }
49
+ if (header.value !== undefined) {
50
+ ctx.addIssue({
51
+ code: 'custom',
52
+ path: [
53
+ 'value'
54
+ ],
55
+ message: 'Kept headers must not include a value.'
56
+ });
57
+ }
58
+ return;
59
+ }
60
+ if (header.value === undefined) {
61
+ ctx.addIssue({
62
+ code: 'custom',
63
+ path: [
64
+ 'value'
65
+ ],
66
+ message: 'Header value is required.'
67
+ });
68
+ }
69
+ });
70
+ const customModelProviderHeadersRequestSchema = z.array(customModelProviderHeaderRequestSchema).max(MAX_HEADER_COUNT).superRefine(assertUniqueHeaderNames);
71
+ const updateCustomModelProviderHeadersRequestSchema = z.array(updateCustomModelProviderHeaderRequestSchema).max(MAX_HEADER_COUNT).superRefine(assertUniqueHeaderNames);
72
+ const customModelProviderHeadersDtoSchema = z.array(customModelProviderHeaderDtoSchema).max(MAX_HEADER_COUNT).superRefine(assertUniqueHeaderNames);
73
+ const customModelProviderModelsSchema = z.array(customAgentModelSchema).min(1).max(MAX_MODEL_COUNT).superRefine(assertUniqueModelIds);
74
+ const customModelProviderBodyFields = {
75
+ display_name: z.string().min(1).max(120),
76
+ api: modelProviderApiSchema,
77
+ base_url: z.string().url().max(2048),
78
+ api_key: z.string().min(1).max(8192).optional(),
79
+ models: customModelProviderModelsSchema,
80
+ default_model: modelIdSchema.nullable().optional()
81
+ };
82
+ export const createCustomModelProviderBodySchema = z.object({
83
+ slug: modelProviderRefSchema.refine((slug)=>!isReservedModelProviderId(slug), {
84
+ message: 'Provider ID is reserved.'
85
+ }),
86
+ ...customModelProviderBodyFields,
87
+ headers: customModelProviderHeadersRequestSchema.optional()
88
+ }).superRefine(assertDefaultModelInModels);
89
+ export const updateCustomModelProviderBodySchema = z.object({
90
+ ...customModelProviderBodyFields,
91
+ headers: updateCustomModelProviderHeadersRequestSchema.optional(),
92
+ models: customModelProviderModelsSchema.optional()
93
+ }).partial().superRefine((body, ctx)=>{
94
+ if (body.models === undefined) return;
95
+ assertDefaultModelInModels(body, ctx);
96
+ });
97
+ export const discoverCustomModelProviderModelsBodySchema = z.object({
98
+ api: modelProviderApiSchema,
99
+ base_url: z.string().url().max(2048),
100
+ api_key: z.string().min(1).max(8192).optional(),
101
+ headers: customModelProviderHeadersDtoSchema.optional()
102
+ });
103
+ export const discoverCustomModelProviderModelsBySlugBodySchema = z.object({
104
+ api: modelProviderApiSchema.optional(),
105
+ base_url: z.string().url().max(2048).optional(),
106
+ api_key: z.string().min(1).max(8192).optional(),
107
+ headers: updateCustomModelProviderHeadersRequestSchema.optional()
108
+ });
109
+ export const discoverCustomModelProviderModelsResponseSchema = z.object({
110
+ models: z.array(z.object({
111
+ id: modelIdSchema,
112
+ label: z.string().min(1).max(160)
113
+ })).max(MAX_MODEL_COUNT)
114
+ });
115
+ const customModelProviderConfigBaseSchema = z.object({
116
+ api: modelProviderApiSchema,
117
+ base_url: z.string().url().max(2048),
118
+ headers: customModelProviderHeadersDtoSchema,
119
+ secret_header_names: z.array(headerNameSchema).max(MAX_HEADER_COUNT).superRefine(assertUniqueStrings),
120
+ models: customModelProviderModelsSchema
121
+ });
122
+ export const customModelProviderRuntimeConfigSchema = customModelProviderConfigBaseSchema.extend({
123
+ requires_api_key: z.boolean()
124
+ });
125
+ export const customModelProviderConfigDtoSchema = customModelProviderConfigBaseSchema.extend({
126
+ kind: z.literal('custom'),
127
+ provider_id: modelProviderRefSchema,
128
+ display_name: z.string().min(1).max(120),
129
+ default_model: modelIdSchema.nullable(),
130
+ created_at: z.string().datetime(),
131
+ updated_at: z.string().datetime()
132
+ });
133
+ function assertDefaultModelInModels(body, ctx) {
134
+ if (typeof body.default_model !== 'string' || body.models === undefined) return;
135
+ if (!body.models.some((model)=>model.id === body.default_model)) {
136
+ ctx.addIssue({
137
+ code: 'custom',
138
+ path: [
139
+ 'default_model'
140
+ ],
141
+ message: 'Default model must be one of the configured models.'
142
+ });
143
+ }
144
+ }
145
+ function assertUniqueHeaderNames(headers, ctx) {
146
+ assertUniqueStrings(headers.map((header)=>header.name), ctx);
147
+ }
148
+ function assertUniqueModelIds(models, ctx) {
149
+ assertUniqueStrings(models.map((model)=>model.id), ctx);
150
+ }
151
+ function assertUniqueStrings(values, ctx) {
152
+ const seen = new Set();
153
+ for (const [index, value] of values.entries()){
154
+ if (!seen.has(value)) {
155
+ seen.add(value);
156
+ continue;
157
+ }
158
+ ctx.addIssue({
159
+ code: 'custom',
160
+ path: [
161
+ index
162
+ ],
163
+ message: 'Duplicate value.'
164
+ });
165
+ }
166
+ }
167
+
168
+ //# sourceMappingURL=custom-model-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/schemas/custom-model-provider.ts"],"sourcesContent":["import {z} from 'zod';\nimport {isReservedModelProviderId, modelProviderRefSchema} from './model-provider-id.js';\n\nconst MAX_HEADER_COUNT = 32;\nexport const MAX_MODEL_COUNT = 128;\n\nexport const DEFAULT_CUSTOM_MODEL_CONTEXT_WINDOW = 128_000;\nexport const DEFAULT_CUSTOM_MODEL_MAX_OUTPUT_TOKENS = 16_384;\nexport const DEFAULT_CUSTOM_MODEL_INPUT_IMAGE = false;\nexport const DEFAULT_CUSTOM_MODEL_REASONING = false;\n\nconst headerNameSchema = z\n .string()\n .trim()\n .min(1)\n .max(128)\n .regex(/^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/)\n .transform((name) => name.toLowerCase());\n\nconst headerValueSchema = z.string().min(1).max(8192);\nconst modelIdSchema = z.string().min(1).max(128);\n\nexport const modelProviderApiSchema = z.enum([\n 'openai-completions',\n 'openai-responses',\n 'anthropic-messages',\n 'google-generative-ai',\n]);\n\nexport type ModelProviderApi = z.infer<typeof modelProviderApiSchema>;\n\nexport const customAgentModelSchema = z.object({\n id: modelIdSchema,\n label: z.string().min(1).max(160),\n context_window: z.number().int().positive().optional(),\n max_output_tokens: z.number().int().positive().optional(),\n input_image: z.boolean().optional(),\n reasoning: z.boolean().optional(),\n});\n\nexport type CustomAgentModelDto = z.infer<typeof customAgentModelSchema>;\n\nexport const customModelProviderHeaderDtoSchema = z.object({\n name: headerNameSchema,\n value: headerValueSchema,\n});\n\nexport type CustomModelProviderHeaderDto = z.infer<typeof customModelProviderHeaderDtoSchema>;\n\nexport const customModelProviderHeaderRequestSchema = customModelProviderHeaderDtoSchema.extend({\n secret: z.boolean(),\n});\n\nexport type CustomModelProviderHeaderRequestDto = z.infer<\n typeof customModelProviderHeaderRequestSchema\n>;\n\nexport const updateCustomModelProviderHeaderRequestSchema = z\n .object({\n name: headerNameSchema,\n value: headerValueSchema.optional(),\n secret: z.boolean(),\n keep: z.boolean().optional(),\n })\n .superRefine((header, ctx) => {\n if (header.keep === true) {\n if (!header.secret) {\n ctx.addIssue({\n code: 'custom',\n path: ['secret'],\n message: 'Kept headers must be secret.',\n });\n }\n if (header.value !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['value'],\n message: 'Kept headers must not include a value.',\n });\n }\n return;\n }\n\n if (header.value === undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['value'],\n message: 'Header value is required.',\n });\n }\n });\n\nexport type UpdateCustomModelProviderHeaderRequestDto = z.infer<\n typeof updateCustomModelProviderHeaderRequestSchema\n>;\n\nconst customModelProviderHeadersRequestSchema = z\n .array(customModelProviderHeaderRequestSchema)\n .max(MAX_HEADER_COUNT)\n .superRefine(assertUniqueHeaderNames);\n\nconst updateCustomModelProviderHeadersRequestSchema = z\n .array(updateCustomModelProviderHeaderRequestSchema)\n .max(MAX_HEADER_COUNT)\n .superRefine(assertUniqueHeaderNames);\n\nconst customModelProviderHeadersDtoSchema = z\n .array(customModelProviderHeaderDtoSchema)\n .max(MAX_HEADER_COUNT)\n .superRefine(assertUniqueHeaderNames);\n\nconst customModelProviderModelsSchema = z\n .array(customAgentModelSchema)\n .min(1)\n .max(MAX_MODEL_COUNT)\n .superRefine(assertUniqueModelIds);\n\nconst customModelProviderBodyFields = {\n display_name: z.string().min(1).max(120),\n api: modelProviderApiSchema,\n base_url: z.string().url().max(2048),\n api_key: z.string().min(1).max(8192).optional(),\n models: customModelProviderModelsSchema,\n default_model: modelIdSchema.nullable().optional(),\n};\n\nexport const createCustomModelProviderBodySchema = z\n .object({\n slug: modelProviderRefSchema.refine((slug) => !isReservedModelProviderId(slug), {\n message: 'Provider ID is reserved.',\n }),\n ...customModelProviderBodyFields,\n headers: customModelProviderHeadersRequestSchema.optional(),\n })\n .superRefine(assertDefaultModelInModels);\n\nexport type CreateCustomModelProviderBodyDto = z.infer<typeof createCustomModelProviderBodySchema>;\n\nexport const updateCustomModelProviderBodySchema = z\n .object({\n ...customModelProviderBodyFields,\n headers: updateCustomModelProviderHeadersRequestSchema.optional(),\n models: customModelProviderModelsSchema.optional(),\n })\n .partial()\n .superRefine((body, ctx) => {\n if (body.models === undefined) return;\n assertDefaultModelInModels(body, ctx);\n });\n\nexport type UpdateCustomModelProviderBodyDto = z.infer<typeof updateCustomModelProviderBodySchema>;\n\nexport const discoverCustomModelProviderModelsBodySchema = z.object({\n api: modelProviderApiSchema,\n base_url: z.string().url().max(2048),\n api_key: z.string().min(1).max(8192).optional(),\n headers: customModelProviderHeadersDtoSchema.optional(),\n});\n\nexport type DiscoverCustomModelProviderModelsBodyDto = z.infer<\n typeof discoverCustomModelProviderModelsBodySchema\n>;\n\nexport const discoverCustomModelProviderModelsBySlugBodySchema = z.object({\n api: modelProviderApiSchema.optional(),\n base_url: z.string().url().max(2048).optional(),\n api_key: z.string().min(1).max(8192).optional(),\n headers: updateCustomModelProviderHeadersRequestSchema.optional(),\n});\n\nexport type DiscoverCustomModelProviderModelsBySlugBodyDto = z.infer<\n typeof discoverCustomModelProviderModelsBySlugBodySchema\n>;\n\nexport const discoverCustomModelProviderModelsResponseSchema = z.object({\n models: z\n .array(z.object({id: modelIdSchema, label: z.string().min(1).max(160)}))\n .max(MAX_MODEL_COUNT),\n});\n\nexport type DiscoverCustomModelProviderModelsResponseDto = z.infer<\n typeof discoverCustomModelProviderModelsResponseSchema\n>;\n\nconst customModelProviderConfigBaseSchema = z.object({\n api: modelProviderApiSchema,\n base_url: z.string().url().max(2048),\n headers: customModelProviderHeadersDtoSchema,\n secret_header_names: z\n .array(headerNameSchema)\n .max(MAX_HEADER_COUNT)\n .superRefine(assertUniqueStrings),\n models: customModelProviderModelsSchema,\n});\n\nexport const customModelProviderRuntimeConfigSchema = customModelProviderConfigBaseSchema.extend({\n requires_api_key: z.boolean(),\n});\n\nexport type CustomModelProviderRuntimeConfigDto = z.infer<\n typeof customModelProviderRuntimeConfigSchema\n>;\n\nexport const customModelProviderConfigDtoSchema = customModelProviderConfigBaseSchema.extend({\n kind: z.literal('custom'),\n provider_id: modelProviderRefSchema,\n display_name: z.string().min(1).max(120),\n default_model: modelIdSchema.nullable(),\n created_at: z.string().datetime(),\n updated_at: z.string().datetime(),\n});\n\nexport type CustomModelProviderConfigDto = z.infer<typeof customModelProviderConfigDtoSchema>;\n\nfunction assertDefaultModelInModels(\n body: {default_model?: string | null | undefined; models?: CustomAgentModelDto[] | undefined},\n ctx: z.RefinementCtx,\n): void {\n if (typeof body.default_model !== 'string' || body.models === undefined) return;\n\n if (!body.models.some((model) => model.id === body.default_model)) {\n ctx.addIssue({\n code: 'custom',\n path: ['default_model'],\n message: 'Default model must be one of the configured models.',\n });\n }\n}\n\nfunction assertUniqueHeaderNames(headers: Array<{name: string}>, ctx: z.RefinementCtx): void {\n assertUniqueStrings(\n headers.map((header) => header.name),\n ctx,\n );\n}\n\nfunction assertUniqueModelIds(models: CustomAgentModelDto[], ctx: z.RefinementCtx): void {\n assertUniqueStrings(\n models.map((model) => model.id),\n ctx,\n );\n}\n\nfunction assertUniqueStrings(values: string[], ctx: z.RefinementCtx): void {\n const seen = new Set<string>();\n for (const [index, value] of values.entries()) {\n if (!seen.has(value)) {\n seen.add(value);\n continue;\n }\n\n ctx.addIssue({\n code: 'custom',\n path: [index],\n message: 'Duplicate value.',\n });\n }\n}\n"],"names":["z","isReservedModelProviderId","modelProviderRefSchema","MAX_HEADER_COUNT","MAX_MODEL_COUNT","DEFAULT_CUSTOM_MODEL_CONTEXT_WINDOW","DEFAULT_CUSTOM_MODEL_MAX_OUTPUT_TOKENS","DEFAULT_CUSTOM_MODEL_INPUT_IMAGE","DEFAULT_CUSTOM_MODEL_REASONING","headerNameSchema","string","trim","min","max","regex","transform","name","toLowerCase","headerValueSchema","modelIdSchema","modelProviderApiSchema","enum","customAgentModelSchema","object","id","label","context_window","number","int","positive","optional","max_output_tokens","input_image","boolean","reasoning","customModelProviderHeaderDtoSchema","value","customModelProviderHeaderRequestSchema","extend","secret","updateCustomModelProviderHeaderRequestSchema","keep","superRefine","header","ctx","addIssue","code","path","message","undefined","customModelProviderHeadersRequestSchema","array","assertUniqueHeaderNames","updateCustomModelProviderHeadersRequestSchema","customModelProviderHeadersDtoSchema","customModelProviderModelsSchema","assertUniqueModelIds","customModelProviderBodyFields","display_name","api","base_url","url","api_key","models","default_model","nullable","createCustomModelProviderBodySchema","slug","refine","headers","assertDefaultModelInModels","updateCustomModelProviderBodySchema","partial","body","discoverCustomModelProviderModelsBodySchema","discoverCustomModelProviderModelsBySlugBodySchema","discoverCustomModelProviderModelsResponseSchema","customModelProviderConfigBaseSchema","secret_header_names","assertUniqueStrings","customModelProviderRuntimeConfigSchema","requires_api_key","customModelProviderConfigDtoSchema","kind","literal","provider_id","created_at","datetime","updated_at","some","model","map","values","seen","Set","index","entries","has","add"],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { type AgentThinking, type Harness } from '@shipfox/workflow-document';
2
+ import { type ModelProviderRef } from './model-provider-id.js';
3
+ export declare const PI_HARNESS_TOOL_PACKAGE_NAMES: readonly ["pi-web-access"];
4
+ export declare const HARNESS_TOOL_PACKAGE_NAMES: readonly ["pi-web-access"];
5
+ export type HarnessToolPackageName = (typeof HARNESS_TOOL_PACKAGE_NAMES)[number];
6
+ export interface HarnessToolDescriptor {
7
+ readonly name: string;
8
+ readonly label: string;
9
+ readonly source: 'built_in' | 'package';
10
+ readonly packageName?: HarnessToolPackageName;
11
+ readonly enabledByDefault: boolean;
12
+ }
13
+ export interface HarnessToolDeploymentConfig {
14
+ readonly pi?: {
15
+ readonly enabledToolPackages?: readonly HarnessToolPackageName[];
16
+ readonly webSearchEnabled?: boolean;
17
+ };
18
+ readonly claude?: {
19
+ readonly enabledToolPackages?: readonly HarnessToolPackageName[];
20
+ };
21
+ }
22
+ export interface HarnessDescriptor {
23
+ readonly id: Harness;
24
+ readonly label: string;
25
+ readonly description: string;
26
+ readonly supportedProviderIds: readonly string[];
27
+ readonly thinkingLevels: readonly AgentThinking[];
28
+ readonly defaultThinking: AgentThinking;
29
+ readonly defaultProviderId: ModelProviderRef;
30
+ readonly tools: readonly HarnessToolDescriptor[];
31
+ }
32
+ export declare const DEFAULT_PI_ENABLED_TOOL_PACKAGES = "pi-web-access";
33
+ export declare const DEFAULT_PI_WEB_SEARCH_ENABLED = true;
34
+ export declare const PI_HARNESS: HarnessDescriptor;
35
+ export declare const CLAUDE_HARNESS: HarnessDescriptor;
36
+ export declare function getHarnessDescriptor(id: Harness): HarnessDescriptor;
37
+ export declare function listHarnessDescriptors(): HarnessDescriptor[];
38
+ export declare function harnessSupportsProvider(id: Harness, providerId: string): boolean;
39
+ export declare function listHarnessTools(id: Harness): HarnessToolDescriptor[];
40
+ export declare function getHarnessToolDescriptor(id: Harness, toolName: string): HarnessToolDescriptor | undefined;
41
+ export declare function listEnabledHarnessTools(id: Harness, deploymentConfig?: HarnessToolDeploymentConfig): HarnessToolDescriptor[];
42
+ export declare function harnessSupportsTool(id: Harness, toolName: string, deploymentConfig?: HarnessToolDeploymentConfig): boolean;
43
+ export declare function buildHarnessToolDeploymentConfig(params: {
44
+ readonly piEnabledToolPackages?: string | undefined;
45
+ readonly piWebSearchEnabled?: boolean | undefined;
46
+ }): HarnessToolDeploymentConfig;
47
+ export declare const DEFAULT_HARNESS_TOOL_DEPLOYMENT_CONFIG: HarnessToolDeploymentConfig;
48
+ export declare function parsePiEnabledToolPackages(value: string): HarnessToolPackageName[];
49
+ //# sourceMappingURL=harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/schemas/harness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ import { agentThinkingByHarness } from '@shipfox/workflow-document';
2
+ import { SUPPORTED_MODEL_PROVIDER_IDS } from './model-provider-id.js';
3
+ export const PI_HARNESS_TOOL_PACKAGE_NAMES = [
4
+ 'pi-web-access'
5
+ ];
6
+ export const HARNESS_TOOL_PACKAGE_NAMES = [
7
+ ...PI_HARNESS_TOOL_PACKAGE_NAMES
8
+ ];
9
+ export const DEFAULT_PI_ENABLED_TOOL_PACKAGES = 'pi-web-access';
10
+ export const DEFAULT_PI_WEB_SEARCH_ENABLED = true;
11
+ export const PI_HARNESS = {
12
+ id: 'pi',
13
+ label: 'pi',
14
+ description: 'Works with 30+ model providers',
15
+ supportedProviderIds: SUPPORTED_MODEL_PROVIDER_IDS,
16
+ thinkingLevels: agentThinkingByHarness.pi.options,
17
+ defaultThinking: 'xhigh',
18
+ defaultProviderId: 'anthropic',
19
+ tools: [
20
+ builtInTool('read', 'Read'),
21
+ builtInTool('bash', 'Bash'),
22
+ builtInTool('edit', 'Edit'),
23
+ builtInTool('write', 'Write'),
24
+ builtInTool('grep', 'Grep'),
25
+ builtInTool('find', 'Find'),
26
+ builtInTool('ls', 'List'),
27
+ packageTool('web_search', 'Web search', 'pi-web-access'),
28
+ packageTool('fetch_content', 'Fetch content', 'pi-web-access'),
29
+ packageTool('get_search_content', 'Get search content', 'pi-web-access')
30
+ ]
31
+ };
32
+ export const CLAUDE_HARNESS = {
33
+ id: 'claude',
34
+ label: 'Claude',
35
+ description: 'Runs on your Anthropic API key',
36
+ supportedProviderIds: [
37
+ 'anthropic'
38
+ ],
39
+ thinkingLevels: agentThinkingByHarness.claude.options,
40
+ defaultThinking: 'xhigh',
41
+ defaultProviderId: 'anthropic',
42
+ tools: [
43
+ builtInTool('Read', 'Read'),
44
+ builtInTool('Bash', 'Bash'),
45
+ builtInTool('Edit', 'Edit'),
46
+ builtInTool('Write', 'Write'),
47
+ builtInTool('Glob', 'Glob'),
48
+ builtInTool('Grep', 'Grep'),
49
+ builtInTool('WebFetch', 'Web fetch'),
50
+ builtInTool('WebSearch', 'Web search')
51
+ ]
52
+ };
53
+ const HARNESS_DESCRIPTORS = {
54
+ pi: PI_HARNESS,
55
+ claude: CLAUDE_HARNESS
56
+ };
57
+ export function getHarnessDescriptor(id) {
58
+ return HARNESS_DESCRIPTORS[id];
59
+ }
60
+ export function listHarnessDescriptors() {
61
+ return Object.values(HARNESS_DESCRIPTORS);
62
+ }
63
+ export function harnessSupportsProvider(id, providerId) {
64
+ return getHarnessDescriptor(id).supportedProviderIds.includes(providerId);
65
+ }
66
+ export function listHarnessTools(id) {
67
+ return [
68
+ ...getHarnessDescriptor(id).tools
69
+ ];
70
+ }
71
+ export function getHarnessToolDescriptor(id, toolName) {
72
+ return getHarnessDescriptor(id).tools.find((tool)=>tool.name === toolName);
73
+ }
74
+ export function listEnabledHarnessTools(id, deploymentConfig = {}) {
75
+ return getHarnessDescriptor(id).tools.filter((tool)=>isHarnessToolEnabled(id, tool, deploymentConfig));
76
+ }
77
+ export function harnessSupportsTool(id, toolName, deploymentConfig = {}) {
78
+ const tool = getHarnessToolDescriptor(id, toolName);
79
+ if (tool === undefined) return false;
80
+ return isHarnessToolEnabled(id, tool, deploymentConfig);
81
+ }
82
+ export function buildHarnessToolDeploymentConfig(params) {
83
+ return {
84
+ pi: {
85
+ enabledToolPackages: parsePiEnabledToolPackages(params.piEnabledToolPackages ?? DEFAULT_PI_ENABLED_TOOL_PACKAGES),
86
+ webSearchEnabled: params.piWebSearchEnabled ?? DEFAULT_PI_WEB_SEARCH_ENABLED
87
+ },
88
+ claude: {
89
+ enabledToolPackages: []
90
+ }
91
+ };
92
+ }
93
+ export const DEFAULT_HARNESS_TOOL_DEPLOYMENT_CONFIG = buildHarnessToolDeploymentConfig({});
94
+ export function parsePiEnabledToolPackages(value) {
95
+ const packageNames = value.split(',').map((packageName)=>packageName.trim()).filter((packageName)=>packageName.length > 0);
96
+ const validPackageNames = new Set(PI_HARNESS_TOOL_PACKAGE_NAMES);
97
+ const invalidPackageNames = packageNames.filter((packageName)=>!validPackageNames.has(packageName));
98
+ if (invalidPackageNames.length > 0) {
99
+ throw new Error(`AGENT_PI_ENABLED_TOOL_PACKAGES contains unsupported package(s): ${invalidPackageNames.join(', ')}. Accepted values: ${PI_HARNESS_TOOL_PACKAGE_NAMES.join(', ')}.`);
100
+ }
101
+ return [
102
+ ...new Set(packageNames)
103
+ ];
104
+ }
105
+ function isHarnessToolEnabled(id, tool, deploymentConfig) {
106
+ if (!tool.enabledByDefault) return false;
107
+ if (tool.source === 'built_in') return true;
108
+ const packageName = tool.packageName;
109
+ if (packageName === undefined) return false;
110
+ const harnessConfig = deploymentConfig[id];
111
+ if (!harnessConfig?.enabledToolPackages?.includes(packageName)) return false;
112
+ return !isDisabledPiSearchTool(id, tool, deploymentConfig);
113
+ }
114
+ function isDisabledPiSearchTool(id, tool, deploymentConfig) {
115
+ return id === 'pi' && deploymentConfig.pi?.webSearchEnabled === false && (tool.name === 'web_search' || tool.name === 'get_search_content');
116
+ }
117
+ function builtInTool(name, label) {
118
+ return {
119
+ name,
120
+ label,
121
+ source: 'built_in',
122
+ enabledByDefault: true
123
+ };
124
+ }
125
+ function packageTool(name, label, packageName) {
126
+ return {
127
+ name,
128
+ label,
129
+ source: 'package',
130
+ packageName,
131
+ enabledByDefault: true
132
+ };
133
+ }
134
+
135
+ //# sourceMappingURL=harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/schemas/harness.ts"],"sourcesContent":["import {type AgentThinking, agentThinkingByHarness, type Harness} from '@shipfox/workflow-document';\nimport {type ModelProviderRef, SUPPORTED_MODEL_PROVIDER_IDS} from './model-provider-id.js';\n\nexport const PI_HARNESS_TOOL_PACKAGE_NAMES = ['pi-web-access'] as const;\nexport const HARNESS_TOOL_PACKAGE_NAMES = [...PI_HARNESS_TOOL_PACKAGE_NAMES] as const;\n\nexport type HarnessToolPackageName = (typeof HARNESS_TOOL_PACKAGE_NAMES)[number];\n\nexport interface HarnessToolDescriptor {\n readonly name: string;\n readonly label: string;\n readonly source: 'built_in' | 'package';\n readonly packageName?: HarnessToolPackageName;\n readonly enabledByDefault: boolean;\n}\n\nexport interface HarnessToolDeploymentConfig {\n readonly pi?: {\n readonly enabledToolPackages?: readonly HarnessToolPackageName[];\n readonly webSearchEnabled?: boolean;\n };\n readonly claude?: {\n readonly enabledToolPackages?: readonly HarnessToolPackageName[];\n };\n}\n\nexport interface HarnessDescriptor {\n readonly id: Harness;\n readonly label: string;\n readonly description: string;\n readonly supportedProviderIds: readonly string[];\n readonly thinkingLevels: readonly AgentThinking[];\n readonly defaultThinking: AgentThinking;\n readonly defaultProviderId: ModelProviderRef;\n readonly tools: readonly HarnessToolDescriptor[];\n}\n\nexport const DEFAULT_PI_ENABLED_TOOL_PACKAGES = 'pi-web-access';\nexport const DEFAULT_PI_WEB_SEARCH_ENABLED = true;\n\nexport const PI_HARNESS: HarnessDescriptor = {\n id: 'pi',\n label: 'pi',\n description: 'Works with 30+ model providers',\n supportedProviderIds: SUPPORTED_MODEL_PROVIDER_IDS,\n thinkingLevels: agentThinkingByHarness.pi.options,\n defaultThinking: 'xhigh',\n defaultProviderId: 'anthropic',\n tools: [\n builtInTool('read', 'Read'),\n builtInTool('bash', 'Bash'),\n builtInTool('edit', 'Edit'),\n builtInTool('write', 'Write'),\n builtInTool('grep', 'Grep'),\n builtInTool('find', 'Find'),\n builtInTool('ls', 'List'),\n packageTool('web_search', 'Web search', 'pi-web-access'),\n packageTool('fetch_content', 'Fetch content', 'pi-web-access'),\n packageTool('get_search_content', 'Get search content', 'pi-web-access'),\n ],\n};\n\nexport const CLAUDE_HARNESS: HarnessDescriptor = {\n id: 'claude',\n label: 'Claude',\n description: 'Runs on your Anthropic API key',\n supportedProviderIds: ['anthropic'],\n thinkingLevels: agentThinkingByHarness.claude.options,\n defaultThinking: 'xhigh',\n defaultProviderId: 'anthropic',\n tools: [\n builtInTool('Read', 'Read'),\n builtInTool('Bash', 'Bash'),\n builtInTool('Edit', 'Edit'),\n builtInTool('Write', 'Write'),\n builtInTool('Glob', 'Glob'),\n builtInTool('Grep', 'Grep'),\n builtInTool('WebFetch', 'Web fetch'),\n builtInTool('WebSearch', 'Web search'),\n ],\n};\n\nconst HARNESS_DESCRIPTORS = {\n pi: PI_HARNESS,\n claude: CLAUDE_HARNESS,\n} as const satisfies Record<Harness, HarnessDescriptor>;\n\nexport function getHarnessDescriptor(id: Harness): HarnessDescriptor {\n return HARNESS_DESCRIPTORS[id];\n}\n\nexport function listHarnessDescriptors(): HarnessDescriptor[] {\n return Object.values(HARNESS_DESCRIPTORS);\n}\n\nexport function harnessSupportsProvider(id: Harness, providerId: string): boolean {\n return getHarnessDescriptor(id).supportedProviderIds.includes(providerId);\n}\n\nexport function listHarnessTools(id: Harness): HarnessToolDescriptor[] {\n return [...getHarnessDescriptor(id).tools];\n}\n\nexport function getHarnessToolDescriptor(\n id: Harness,\n toolName: string,\n): HarnessToolDescriptor | undefined {\n return getHarnessDescriptor(id).tools.find((tool) => tool.name === toolName);\n}\n\nexport function listEnabledHarnessTools(\n id: Harness,\n deploymentConfig: HarnessToolDeploymentConfig = {},\n): HarnessToolDescriptor[] {\n return getHarnessDescriptor(id).tools.filter((tool) =>\n isHarnessToolEnabled(id, tool, deploymentConfig),\n );\n}\n\nexport function harnessSupportsTool(\n id: Harness,\n toolName: string,\n deploymentConfig: HarnessToolDeploymentConfig = {},\n): boolean {\n const tool = getHarnessToolDescriptor(id, toolName);\n if (tool === undefined) return false;\n\n return isHarnessToolEnabled(id, tool, deploymentConfig);\n}\n\nexport function buildHarnessToolDeploymentConfig(params: {\n readonly piEnabledToolPackages?: string | undefined;\n readonly piWebSearchEnabled?: boolean | undefined;\n}): HarnessToolDeploymentConfig {\n return {\n pi: {\n enabledToolPackages: parsePiEnabledToolPackages(\n params.piEnabledToolPackages ?? DEFAULT_PI_ENABLED_TOOL_PACKAGES,\n ),\n webSearchEnabled: params.piWebSearchEnabled ?? DEFAULT_PI_WEB_SEARCH_ENABLED,\n },\n claude: {\n enabledToolPackages: [],\n },\n };\n}\n\nexport const DEFAULT_HARNESS_TOOL_DEPLOYMENT_CONFIG = buildHarnessToolDeploymentConfig({});\n\nexport function parsePiEnabledToolPackages(value: string): HarnessToolPackageName[] {\n const packageNames = value\n .split(',')\n .map((packageName) => packageName.trim())\n .filter((packageName) => packageName.length > 0);\n\n const validPackageNames = new Set<string>(PI_HARNESS_TOOL_PACKAGE_NAMES);\n const invalidPackageNames = packageNames.filter(\n (packageName) => !validPackageNames.has(packageName),\n );\n if (invalidPackageNames.length > 0) {\n throw new Error(\n `AGENT_PI_ENABLED_TOOL_PACKAGES contains unsupported package(s): ${invalidPackageNames.join(\n ', ',\n )}. Accepted values: ${PI_HARNESS_TOOL_PACKAGE_NAMES.join(', ')}.`,\n );\n }\n\n return [...new Set(packageNames)] as HarnessToolPackageName[];\n}\n\nfunction isHarnessToolEnabled(\n id: Harness,\n tool: HarnessToolDescriptor,\n deploymentConfig: HarnessToolDeploymentConfig,\n): boolean {\n if (!tool.enabledByDefault) return false;\n if (tool.source === 'built_in') return true;\n\n const packageName = tool.packageName;\n if (packageName === undefined) return false;\n\n const harnessConfig = deploymentConfig[id];\n if (!harnessConfig?.enabledToolPackages?.includes(packageName)) return false;\n\n return !isDisabledPiSearchTool(id, tool, deploymentConfig);\n}\n\nfunction isDisabledPiSearchTool(\n id: Harness,\n tool: HarnessToolDescriptor,\n deploymentConfig: HarnessToolDeploymentConfig,\n): boolean {\n return (\n id === 'pi' &&\n deploymentConfig.pi?.webSearchEnabled === false &&\n (tool.name === 'web_search' || tool.name === 'get_search_content')\n );\n}\n\nfunction builtInTool(name: string, label: string): HarnessToolDescriptor {\n return {name, label, source: 'built_in', enabledByDefault: true};\n}\n\nfunction packageTool(\n name: string,\n label: string,\n packageName: HarnessToolPackageName,\n): HarnessToolDescriptor {\n return {name, label, source: 'package', packageName, enabledByDefault: true};\n}\n"],"names":["agentThinkingByHarness","SUPPORTED_MODEL_PROVIDER_IDS","PI_HARNESS_TOOL_PACKAGE_NAMES","HARNESS_TOOL_PACKAGE_NAMES","DEFAULT_PI_ENABLED_TOOL_PACKAGES","DEFAULT_PI_WEB_SEARCH_ENABLED","PI_HARNESS","id","label","description","supportedProviderIds","thinkingLevels","pi","options","defaultThinking","defaultProviderId","tools","builtInTool","packageTool","CLAUDE_HARNESS","claude","HARNESS_DESCRIPTORS","getHarnessDescriptor","listHarnessDescriptors","Object","values","harnessSupportsProvider","providerId","includes","listHarnessTools","getHarnessToolDescriptor","toolName","find","tool","name","listEnabledHarnessTools","deploymentConfig","filter","isHarnessToolEnabled","harnessSupportsTool","undefined","buildHarnessToolDeploymentConfig","params","enabledToolPackages","parsePiEnabledToolPackages","piEnabledToolPackages","webSearchEnabled","piWebSearchEnabled","DEFAULT_HARNESS_TOOL_DEPLOYMENT_CONFIG","value","packageNames","split","map","packageName","trim","length","validPackageNames","Set","invalidPackageNames","has","Error","join","enabledByDefault","source","harnessConfig","isDisabledPiSearchTool"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export { type AgentModelOptionDto, type AgentThinking, agentModelOptionSchema, agentThinkingByHarness, agentThinkingSchema, claudeAgentThinkingSchema, DEFAULT_AGENT_THINKING, DEFAULT_HARNESS, DEFAULT_MODEL_PROVIDER, getModelProviderEntry, type Harness, harnessSchema, listSupportedModelProviders, MODEL_PROVIDER_CATALOG_SEED, type ModelProviderCatalogEntryDto, type ModelProviderCatalogResponseDto, type ModelProviderCatalogSeedDto, type ModelProviderCredentialFieldDto, type ModelProviderSupportStatus, modelProviderCatalogEntrySchema, modelProviderCatalogResponseSchema, modelProviderCatalogSeedSchema, modelProviderCredentialFieldSchema, modelProviderSupportStatusSchema, piAgentThinkingSchema, thinkingLevelsForHarness, } from './catalog.js';
2
+ export { type CreateCustomModelProviderBodyDto, type CustomAgentModelDto, type CustomModelProviderConfigDto, type CustomModelProviderHeaderDto, type CustomModelProviderHeaderRequestDto, type CustomModelProviderRuntimeConfigDto, createCustomModelProviderBodySchema, customAgentModelSchema, customModelProviderConfigDtoSchema, customModelProviderHeaderDtoSchema, customModelProviderHeaderRequestSchema, customModelProviderRuntimeConfigSchema, DEFAULT_CUSTOM_MODEL_CONTEXT_WINDOW, DEFAULT_CUSTOM_MODEL_INPUT_IMAGE, DEFAULT_CUSTOM_MODEL_MAX_OUTPUT_TOKENS, DEFAULT_CUSTOM_MODEL_REASONING, type DiscoverCustomModelProviderModelsBodyDto, type DiscoverCustomModelProviderModelsBySlugBodyDto, type DiscoverCustomModelProviderModelsResponseDto, discoverCustomModelProviderModelsBodySchema, discoverCustomModelProviderModelsBySlugBodySchema, discoverCustomModelProviderModelsResponseSchema, MAX_MODEL_COUNT, type ModelProviderApi, modelProviderApiSchema, type UpdateCustomModelProviderBodyDto, type UpdateCustomModelProviderHeaderRequestDto, updateCustomModelProviderBodySchema, updateCustomModelProviderHeaderRequestSchema, } from './custom-model-provider.js';
3
+ export { buildHarnessToolDeploymentConfig, CLAUDE_HARNESS, DEFAULT_HARNESS_TOOL_DEPLOYMENT_CONFIG, DEFAULT_PI_ENABLED_TOOL_PACKAGES, DEFAULT_PI_WEB_SEARCH_ENABLED, getHarnessDescriptor, getHarnessToolDescriptor, HARNESS_TOOL_PACKAGE_NAMES, type HarnessDescriptor, type HarnessToolDeploymentConfig, type HarnessToolDescriptor, type HarnessToolPackageName, harnessSupportsProvider, harnessSupportsTool, listEnabledHarnessTools, listHarnessDescriptors, listHarnessTools, PI_HARNESS, PI_HARNESS_TOOL_PACKAGE_NAMES, parsePiEnabledToolPackages, } from './harness.js';
4
+ export { AGENT_INTEGRATION_MCP_AUTH, AGENT_INTEGRATION_MCP_ENDPOINT, AGENT_INTEGRATION_MCP_SERVER_NAME, AGENT_INTEGRATION_MCP_TRANSPORT, type AgentIntegrationMcpServerConfigDto, agentIntegrationMcpServerSchema, type MaterializedAgentIntegrationConfigDto, type MaterializedAgentIntegrationToolConfigDto, type MaterializedAgentStepConfigDto, materializedAgentIntegrationSchema, materializedAgentIntegrationToolSchema, materializedAgentStepConfigSchema, } from './materialized-agent-step-config.js';
5
+ export { getModelProviderCredentialKeys, type ListModelProviderConfigsResponseDto, listModelProviderConfigsResponseSchema, type ModelProviderConfigDto, type ModelProviderConfigResponseDto, modelProviderConfigDtoSchema, modelProviderConfigResponseSchema, modelProviderCredentialKeysMatch, type SetDefaultModelProviderBodyDto, type SetDefaultModelProviderResponseDto, setDefaultModelProviderBodySchema, setDefaultModelProviderResponseSchema, type UpdateModelProviderConfigBodyDto, type UpdateModelProviderDefaultModelBodyDto, updateModelProviderConfigBodySchema, updateModelProviderDefaultModelBodySchema, } from './model-provider-config.js';
6
+ export { isReservedModelProviderId, MODEL_PROVIDER_IDS, MODEL_PROVIDER_SLUG_PATTERN, type ModelProviderId, type ModelProviderRef, modelProviderRefSchema, providerIdSchema, SUPPORTED_MODEL_PROVIDER_IDS, type SupportedModelProviderId, supportedModelProviderIdSchema, UNSUPPORTED_MODEL_PROVIDER_IDS, } from './model-provider-id.js';
7
+ export { type AgentRuntimeCredentialsResponseDto, agentRuntimeCredentialsResponseSchema, } from './runtime-config.js';
8
+ export { type SetDefaultHarnessBodyDto, type SetDefaultHarnessResponseDto, setDefaultHarnessBodySchema, setDefaultHarnessResponseSchema, } from './workspace-defaults.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}