@f5-sales-demo/pi-ai 19.51.2

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 (128) hide show
  1. package/CHANGELOG.md +1997 -0
  2. package/README.md +1160 -0
  3. package/package.json +135 -0
  4. package/src/api-registry.ts +95 -0
  5. package/src/auth-storage.ts +2694 -0
  6. package/src/cli.ts +493 -0
  7. package/src/index.ts +42 -0
  8. package/src/model-cache.ts +97 -0
  9. package/src/model-manager.ts +349 -0
  10. package/src/model-thinking.ts +561 -0
  11. package/src/models.json +49439 -0
  12. package/src/models.json.d.ts +9 -0
  13. package/src/models.ts +56 -0
  14. package/src/prompts/turn-aborted-guidance.md +4 -0
  15. package/src/provider-details.ts +81 -0
  16. package/src/provider-models/descriptors.ts +285 -0
  17. package/src/provider-models/google.ts +90 -0
  18. package/src/provider-models/index.ts +4 -0
  19. package/src/provider-models/openai-compat.ts +2074 -0
  20. package/src/provider-models/special.ts +106 -0
  21. package/src/providers/amazon-bedrock.ts +706 -0
  22. package/src/providers/anthropic.ts +1682 -0
  23. package/src/providers/azure-openai-responses.ts +391 -0
  24. package/src/providers/cursor/gen/agent_pb.ts +15274 -0
  25. package/src/providers/cursor/proto/agent.proto +3526 -0
  26. package/src/providers/cursor/proto/buf.gen.yaml +6 -0
  27. package/src/providers/cursor/proto/buf.yaml +17 -0
  28. package/src/providers/cursor.ts +2218 -0
  29. package/src/providers/github-copilot-headers.ts +140 -0
  30. package/src/providers/gitlab-duo.ts +381 -0
  31. package/src/providers/google-gemini-cli.ts +1133 -0
  32. package/src/providers/google-shared.ts +354 -0
  33. package/src/providers/google-vertex.ts +436 -0
  34. package/src/providers/google.ts +381 -0
  35. package/src/providers/kimi.ts +151 -0
  36. package/src/providers/openai-codex/constants.ts +43 -0
  37. package/src/providers/openai-codex/request-transformer.ts +158 -0
  38. package/src/providers/openai-codex/response-handler.ts +81 -0
  39. package/src/providers/openai-codex-responses.ts +2345 -0
  40. package/src/providers/openai-completions-compat.ts +159 -0
  41. package/src/providers/openai-completions.ts +1290 -0
  42. package/src/providers/openai-responses-shared.ts +452 -0
  43. package/src/providers/openai-responses.ts +519 -0
  44. package/src/providers/register-builtins.ts +329 -0
  45. package/src/providers/synthetic.ts +154 -0
  46. package/src/providers/transform-messages.ts +234 -0
  47. package/src/rate-limit-utils.ts +84 -0
  48. package/src/stream.ts +728 -0
  49. package/src/types.ts +546 -0
  50. package/src/usage/claude.ts +337 -0
  51. package/src/usage/gemini.ts +248 -0
  52. package/src/usage/github-copilot.ts +421 -0
  53. package/src/usage/google-antigravity.ts +200 -0
  54. package/src/usage/kimi.ts +286 -0
  55. package/src/usage/minimax-code.ts +31 -0
  56. package/src/usage/openai-codex.ts +387 -0
  57. package/src/usage/zai.ts +247 -0
  58. package/src/usage.ts +130 -0
  59. package/src/utils/abort.ts +36 -0
  60. package/src/utils/anthropic-auth.ts +293 -0
  61. package/src/utils/discovery/antigravity.ts +261 -0
  62. package/src/utils/discovery/codex.ts +371 -0
  63. package/src/utils/discovery/cursor.ts +306 -0
  64. package/src/utils/discovery/gemini.ts +248 -0
  65. package/src/utils/discovery/index.ts +5 -0
  66. package/src/utils/discovery/openai-compatible.ts +224 -0
  67. package/src/utils/event-stream.ts +209 -0
  68. package/src/utils/http-inspector.ts +165 -0
  69. package/src/utils/idle-iterator.ts +176 -0
  70. package/src/utils/json-parse.ts +28 -0
  71. package/src/utils/oauth/alibaba-coding-plan.ts +59 -0
  72. package/src/utils/oauth/anthropic.ts +134 -0
  73. package/src/utils/oauth/api-key-validation.ts +92 -0
  74. package/src/utils/oauth/callback-server.ts +276 -0
  75. package/src/utils/oauth/cerebras.ts +59 -0
  76. package/src/utils/oauth/cloudflare-ai-gateway.ts +48 -0
  77. package/src/utils/oauth/cursor.ts +157 -0
  78. package/src/utils/oauth/github-copilot.ts +358 -0
  79. package/src/utils/oauth/gitlab-duo.ts +123 -0
  80. package/src/utils/oauth/google-antigravity.ts +275 -0
  81. package/src/utils/oauth/google-gemini-cli.ts +334 -0
  82. package/src/utils/oauth/huggingface.ts +62 -0
  83. package/src/utils/oauth/index.ts +512 -0
  84. package/src/utils/oauth/kagi.ts +47 -0
  85. package/src/utils/oauth/kilo.ts +87 -0
  86. package/src/utils/oauth/kimi.ts +251 -0
  87. package/src/utils/oauth/litellm.ts +81 -0
  88. package/src/utils/oauth/lm-studio.ts +40 -0
  89. package/src/utils/oauth/minimax-code.ts +78 -0
  90. package/src/utils/oauth/moonshot.ts +59 -0
  91. package/src/utils/oauth/nanogpt.ts +51 -0
  92. package/src/utils/oauth/nvidia.ts +70 -0
  93. package/src/utils/oauth/oauth.html +199 -0
  94. package/src/utils/oauth/ollama.ts +47 -0
  95. package/src/utils/oauth/openai-codex.ts +190 -0
  96. package/src/utils/oauth/opencode.ts +49 -0
  97. package/src/utils/oauth/parallel.ts +46 -0
  98. package/src/utils/oauth/perplexity.ts +200 -0
  99. package/src/utils/oauth/pkce.ts +18 -0
  100. package/src/utils/oauth/qianfan.ts +58 -0
  101. package/src/utils/oauth/qwen-portal.ts +60 -0
  102. package/src/utils/oauth/synthetic.ts +60 -0
  103. package/src/utils/oauth/tavily.ts +46 -0
  104. package/src/utils/oauth/together.ts +59 -0
  105. package/src/utils/oauth/types.ts +89 -0
  106. package/src/utils/oauth/venice.ts +59 -0
  107. package/src/utils/oauth/vercel-ai-gateway.ts +47 -0
  108. package/src/utils/oauth/vllm.ts +40 -0
  109. package/src/utils/oauth/xiaomi.ts +88 -0
  110. package/src/utils/oauth/zai.ts +60 -0
  111. package/src/utils/oauth/zenmux.ts +51 -0
  112. package/src/utils/overflow.ts +134 -0
  113. package/src/utils/retry-after.ts +110 -0
  114. package/src/utils/retry.ts +93 -0
  115. package/src/utils/schema/CONSTRAINTS.md +160 -0
  116. package/src/utils/schema/adapt.ts +20 -0
  117. package/src/utils/schema/compatibility.ts +397 -0
  118. package/src/utils/schema/dereference.ts +93 -0
  119. package/src/utils/schema/equality.ts +93 -0
  120. package/src/utils/schema/fields.ts +147 -0
  121. package/src/utils/schema/index.ts +9 -0
  122. package/src/utils/schema/normalize-cca.ts +479 -0
  123. package/src/utils/schema/sanitize-google.ts +212 -0
  124. package/src/utils/schema/strict-mode.ts +385 -0
  125. package/src/utils/schema/types.ts +5 -0
  126. package/src/utils/tool-choice.ts +81 -0
  127. package/src/utils/validation.ts +664 -0
  128. package/src/utils.ts +147 -0
@@ -0,0 +1,93 @@
1
+ import type { JsonObject } from "./types";
2
+ import { isJsonObject } from "./types";
3
+
4
+ export function areJsonValuesEqual(left: unknown, right: unknown): boolean {
5
+ if (Object.is(left, right)) {
6
+ return true;
7
+ }
8
+ if (Array.isArray(left) || Array.isArray(right)) {
9
+ if (!Array.isArray(left) || !Array.isArray(right) || left.length !== right.length) {
10
+ return false;
11
+ }
12
+ for (let i = 0; i < left.length; i += 1) {
13
+ if (!areJsonValuesEqual(left[i], right[i])) {
14
+ return false;
15
+ }
16
+ }
17
+ return true;
18
+ }
19
+ if (!isJsonObject(left) || !isJsonObject(right)) {
20
+ return false;
21
+ }
22
+ const leftKeys = Object.keys(left);
23
+ const rightKeys = Object.keys(right);
24
+ if (leftKeys.length !== rightKeys.length) {
25
+ return false;
26
+ }
27
+ for (const key of leftKeys) {
28
+ if (!(key in right) || !areJsonValuesEqual(left[key], right[key])) {
29
+ return false;
30
+ }
31
+ }
32
+ return true;
33
+ }
34
+
35
+ export function mergeCompatibleEnumSchemas(existing: unknown, incoming: unknown): JsonObject | null {
36
+ if (!isJsonObject(existing) || !isJsonObject(incoming)) {
37
+ return null;
38
+ }
39
+ const existingEnum = Array.isArray(existing.enum) ? existing.enum : null;
40
+ const incomingEnum = Array.isArray(incoming.enum) ? incoming.enum : null;
41
+ if (!existingEnum || !incomingEnum) {
42
+ return null;
43
+ }
44
+ if (!areJsonValuesEqual(existing.type, incoming.type)) {
45
+ return null;
46
+ }
47
+ const existingKeys = Object.keys(existing).filter(key => key !== "enum");
48
+ const incomingKeys = Object.keys(incoming).filter(key => key !== "enum");
49
+ if (existingKeys.length !== incomingKeys.length) {
50
+ return null;
51
+ }
52
+ for (const key of existingKeys) {
53
+ if (!(key in incoming) || !areJsonValuesEqual(existing[key], incoming[key])) {
54
+ return null;
55
+ }
56
+ }
57
+
58
+ const mergedEnum = [...existingEnum];
59
+ for (const enumValue of incomingEnum) {
60
+ if (!mergedEnum.some(existingValue => areJsonValuesEqual(existingValue, enumValue))) {
61
+ mergedEnum.push(enumValue);
62
+ }
63
+ }
64
+ return {
65
+ ...existing,
66
+ enum: mergedEnum,
67
+ };
68
+ }
69
+
70
+ function getAnyOfVariants(schema: unknown): unknown[] {
71
+ if (isJsonObject(schema) && Array.isArray(schema.anyOf)) {
72
+ return schema.anyOf;
73
+ }
74
+ return [schema];
75
+ }
76
+
77
+ export function mergePropertySchemas(existing: unknown, incoming: unknown): unknown {
78
+ if (areJsonValuesEqual(existing, incoming)) {
79
+ return existing;
80
+ }
81
+ const mergedEnumSchema = mergeCompatibleEnumSchemas(existing, incoming);
82
+ if (mergedEnumSchema !== null) {
83
+ return mergedEnumSchema;
84
+ }
85
+
86
+ const mergedAnyOf = [...getAnyOfVariants(existing)];
87
+ for (const variant of getAnyOfVariants(incoming)) {
88
+ if (!mergedAnyOf.some(existingVariant => areJsonValuesEqual(existingVariant, variant))) {
89
+ mergedAnyOf.push(variant);
90
+ }
91
+ }
92
+ return mergedAnyOf.length === 1 ? mergedAnyOf[0] : { anyOf: mergedAnyOf };
93
+ }
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Field classification sets for JSON Schema sanitization across providers.
3
+ *
4
+ * Each set serves a different provider need. They overlap intentionally —
5
+ * co-locating them makes the overlap visible and maintainable.
6
+ */
7
+
8
+ /**
9
+ * Google Generative AI unsupported schema fields.
10
+ * Stripped during sanitizeSchemaForGoogle / sanitizeSchemaForCCA.
11
+ */
12
+ export const UNSUPPORTED_SCHEMA_FIELDS = new Set([
13
+ "$schema",
14
+ "$ref",
15
+ "$defs",
16
+ "$dynamicRef",
17
+ "$dynamicAnchor",
18
+ "examples",
19
+ "prefixItems",
20
+ "unevaluatedProperties",
21
+ "unevaluatedItems",
22
+ "patternProperties",
23
+ "additionalProperties",
24
+ "minItems",
25
+ "maxItems",
26
+ "minLength",
27
+ "maxLength",
28
+ "minimum",
29
+ "maximum",
30
+ "exclusiveMinimum",
31
+ "exclusiveMaximum",
32
+ "pattern",
33
+ "format",
34
+ ]);
35
+
36
+ /**
37
+ * Non-structural schema keys stripped during OpenAI strict mode sanitization.
38
+ * These are decorative/validation-only keywords that don't affect the structural
39
+ * shape OpenAI's strict mode enforces.
40
+ */
41
+ export const NON_STRUCTURAL_SCHEMA_KEYS = new Set([
42
+ "format",
43
+ "pattern",
44
+ "minLength",
45
+ "maxLength",
46
+ "minimum",
47
+ "maximum",
48
+ "exclusiveMinimum",
49
+ "exclusiveMaximum",
50
+ "minItems",
51
+ "maxItems",
52
+ "uniqueItems",
53
+ "multipleOf",
54
+ "$schema",
55
+ "examples",
56
+ "default",
57
+ "title",
58
+ "$comment",
59
+ "if",
60
+ "then",
61
+ "else",
62
+ "not",
63
+ "prefixItems",
64
+ "unevaluatedProperties",
65
+ "unevaluatedItems",
66
+ "patternProperties",
67
+ "propertyNames",
68
+ "contains",
69
+ "minContains",
70
+ "maxContains",
71
+ "dependentRequired",
72
+ "dependentSchemas",
73
+ "contentEncoding",
74
+ "contentMediaType",
75
+ "contentSchema",
76
+ "deprecated",
77
+ "readOnly",
78
+ "writeOnly",
79
+ "minProperties",
80
+ "maxProperties",
81
+ "$dynamicRef",
82
+ "$dynamicAnchor",
83
+ ]);
84
+
85
+ /**
86
+ * Cloud Code Assist type-specific allowed keys per JSON Schema type.
87
+ * Used when collapsing mixed-type combiner variants for CCA Claude.
88
+ */
89
+ export const CLOUD_CODE_ASSIST_TYPE_SPECIFIC_KEYS: Record<string, ReadonlySet<string>> = {
90
+ array: new Set([
91
+ "items",
92
+ "prefixItems",
93
+ "contains",
94
+ "minContains",
95
+ "maxContains",
96
+ "minItems",
97
+ "maxItems",
98
+ "uniqueItems",
99
+ "unevaluatedItems",
100
+ ]),
101
+ object: new Set([
102
+ "properties",
103
+ "required",
104
+ "additionalProperties",
105
+ "patternProperties",
106
+ "propertyNames",
107
+ "minProperties",
108
+ "maxProperties",
109
+ "dependentRequired",
110
+ "dependentSchemas",
111
+ "unevaluatedProperties",
112
+ ]),
113
+ string: new Set(["minLength", "maxLength", "pattern", "format", "contentEncoding", "contentMediaType"]),
114
+ number: new Set(["minimum", "maximum", "exclusiveMinimum", "exclusiveMaximum", "multipleOf"]),
115
+ integer: new Set(["minimum", "maximum", "exclusiveMinimum", "exclusiveMaximum", "multipleOf"]),
116
+ boolean: new Set(),
117
+ null: new Set(),
118
+ };
119
+
120
+ /**
121
+ * Cloud Code Assist shared schema keys allowed on any type.
122
+ * Used alongside CLOUD_CODE_ASSIST_TYPE_SPECIFIC_KEYS for CCA combiner collapsing.
123
+ */
124
+ export const CLOUD_CODE_ASSIST_SHARED_SCHEMA_KEYS = new Set([
125
+ "title",
126
+ "description",
127
+ "default",
128
+ "examples",
129
+ "deprecated",
130
+ "readOnly",
131
+ "writeOnly",
132
+ "$comment",
133
+ ]);
134
+
135
+ /**
136
+ * Combinator keys used across schema sanitization modules.
137
+ * Defined once to avoid duplication in strict-mode.ts and normalize-cca.ts.
138
+ */
139
+ export const COMBINATOR_KEYS = ["anyOf", "allOf", "oneOf"] as const;
140
+
141
+ /**
142
+ * Cloud Code Assist Claude unsupported schema fields.
143
+ * Much smaller than UNSUPPORTED_SCHEMA_FIELDS (Google) because CCA supports
144
+ * validation keywords like additionalProperties, minLength, pattern, etc.
145
+ * Only meta/reference keywords that CCA cannot resolve are stripped.
146
+ */
147
+ export const CCA_UNSUPPORTED_SCHEMA_FIELDS = new Set(["$schema", "$ref", "$defs", "$dynamicRef", "$dynamicAnchor"]);
@@ -0,0 +1,9 @@
1
+ export * from "./adapt";
2
+ export * from "./compatibility";
3
+ export * from "./dereference";
4
+ export * from "./equality";
5
+ export * from "./fields";
6
+ export * from "./normalize-cca";
7
+ export * from "./sanitize-google";
8
+ export * from "./strict-mode";
9
+ export * from "./types";