@agents-at-scale/ark 0.1.66 → 0.1.68
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/arkServices.js +21 -0
- package/dist/commands/export/index.js +79 -2
- package/dist/commands/import/index.js +47 -12
- package/dist/commands/query/index.js +1 -1
- package/dist/lib/arkApiClient.d.ts +6 -0
- package/dist/lib/arkApiClient.js +38 -35
- package/dist/lib/executeQuery.js +5 -1
- package/dist/lib/formatEvent.d.ts +29 -0
- package/dist/lib/formatEvent.js +138 -0
- package/dist/lib/kubectl.d.ts +1 -1
- package/dist/lib/kubectl.js +20 -11
- package/package.json +9 -6
- package/templates/mcp-server/Dockerfile +1 -1
- package/templates/tool/uv.lock +196 -56
package/dist/arkServices.js
CHANGED
|
@@ -202,6 +202,27 @@ const defaultArkServices = {
|
|
|
202
202
|
k8sServicePort: 8639,
|
|
203
203
|
k8sDeploymentName: 'noah-mcp',
|
|
204
204
|
},
|
|
205
|
+
'kubernetes-mcp-server': {
|
|
206
|
+
name: 'kubernetes-mcp-server',
|
|
207
|
+
helmReleaseName: 'kubernetes-mcp-server',
|
|
208
|
+
description: 'Read-only Kubernetes MCP server exposing cluster resources as tools',
|
|
209
|
+
enabled: true,
|
|
210
|
+
category: 'service',
|
|
211
|
+
chartPath: `${getMarketplaceRegistry()}/kubernetes-mcp-server`,
|
|
212
|
+
installArgs: [],
|
|
213
|
+
k8sServiceName: 'kubernetes-mcp-server',
|
|
214
|
+
k8sServicePort: 8080,
|
|
215
|
+
k8sDeploymentName: 'kubernetes-mcp-server',
|
|
216
|
+
},
|
|
217
|
+
'argo-make-author': {
|
|
218
|
+
name: 'argo-make-author',
|
|
219
|
+
helmReleaseName: 'argo-make-author',
|
|
220
|
+
description: 'Conversational Argo WorkflowTemplate authoring agent',
|
|
221
|
+
enabled: false,
|
|
222
|
+
category: 'service',
|
|
223
|
+
chartPath: `${getMarketplaceRegistry()}/argo-make-author`,
|
|
224
|
+
installArgs: [],
|
|
225
|
+
},
|
|
205
226
|
};
|
|
206
227
|
function applyConfigOverrides(defaults) {
|
|
207
228
|
const config = loadConfig();
|
|
@@ -14,6 +14,65 @@ const RESOURCE_ORDER = [
|
|
|
14
14
|
'mcpservers',
|
|
15
15
|
'a2aservers',
|
|
16
16
|
];
|
|
17
|
+
const SERVER_MANAGED_METADATA_FIELDS = [
|
|
18
|
+
'resourceVersion',
|
|
19
|
+
'uid',
|
|
20
|
+
'generation',
|
|
21
|
+
'creationTimestamp',
|
|
22
|
+
'managedFields',
|
|
23
|
+
'selfLink',
|
|
24
|
+
'deletionTimestamp',
|
|
25
|
+
'deletionGracePeriodSeconds',
|
|
26
|
+
'ownerReferences',
|
|
27
|
+
'finalizers',
|
|
28
|
+
];
|
|
29
|
+
const LAST_APPLIED_ANNOTATION = 'kubectl.kubernetes.io/last-applied-configuration';
|
|
30
|
+
function isRecord(value) {
|
|
31
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
32
|
+
}
|
|
33
|
+
function sanitizeResource(resource) {
|
|
34
|
+
const sanitized = { ...resource };
|
|
35
|
+
delete sanitized.status;
|
|
36
|
+
const metadata = { ...resource.metadata };
|
|
37
|
+
for (const field of SERVER_MANAGED_METADATA_FIELDS) {
|
|
38
|
+
delete metadata[field];
|
|
39
|
+
}
|
|
40
|
+
if (isRecord(metadata.annotations)) {
|
|
41
|
+
const annotations = { ...metadata.annotations };
|
|
42
|
+
delete annotations[LAST_APPLIED_ANNOTATION];
|
|
43
|
+
if (Object.keys(annotations).length === 0) {
|
|
44
|
+
delete metadata.annotations;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
metadata.annotations = annotations;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
sanitized.metadata = metadata;
|
|
51
|
+
return sanitized;
|
|
52
|
+
}
|
|
53
|
+
function isExcludedSecret(resource) {
|
|
54
|
+
const isHelmRelease = resource.type === 'helm.sh/release.v1' &&
|
|
55
|
+
resource.metadata.name.startsWith('sh.helm.release.v1.');
|
|
56
|
+
return (isHelmRelease || resource.type === 'kubernetes.io/service-account-token');
|
|
57
|
+
}
|
|
58
|
+
function hasOwnerReference(resource, ownerKind) {
|
|
59
|
+
return (Array.isArray(resource.metadata.ownerReferences) &&
|
|
60
|
+
resource.metadata.ownerReferences.some((ownerReference) => isRecord(ownerReference) && ownerReference.kind === ownerKind));
|
|
61
|
+
}
|
|
62
|
+
function isControllerManagedResource(resourceType, resource) {
|
|
63
|
+
const labels = isRecord(resource.metadata.labels)
|
|
64
|
+
? resource.metadata.labels
|
|
65
|
+
: {};
|
|
66
|
+
if (resourceType === 'tools') {
|
|
67
|
+
return (typeof labels['mcp/server'] === 'string' ||
|
|
68
|
+
hasOwnerReference(resource, 'MCPServer'));
|
|
69
|
+
}
|
|
70
|
+
if (resourceType === 'agents') {
|
|
71
|
+
return (typeof labels['a2a/server'] === 'string' ||
|
|
72
|
+
hasOwnerReference(resource, 'A2AServer'));
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
17
76
|
async function exportResources(options, config) {
|
|
18
77
|
try {
|
|
19
78
|
const allResourceTypes = config.defaultExportTypes || RESOURCE_ORDER;
|
|
@@ -28,6 +87,8 @@ async function exportResources(options, config) {
|
|
|
28
87
|
output.info(`exporting ark resources to ${outputPath}...`);
|
|
29
88
|
const allResources = [];
|
|
30
89
|
let allResourceCount = 0;
|
|
90
|
+
let excludedSecretCount = 0;
|
|
91
|
+
let excludedManagedResourceCount = 0;
|
|
31
92
|
for (const resourceType of resourceTypes) {
|
|
32
93
|
if (!RESOURCE_ORDER.includes(resourceType)) {
|
|
33
94
|
output.warning(`unknown resource type: ${resourceType}, skipping`);
|
|
@@ -41,10 +102,26 @@ async function exportResources(options, config) {
|
|
|
41
102
|
const resourceCount = resources.length;
|
|
42
103
|
if (resources.length > 0) {
|
|
43
104
|
output.success(`found ${resourceCount} ${resourceType}`);
|
|
44
|
-
|
|
45
|
-
|
|
105
|
+
let exportableResources = resourceType === 'secrets'
|
|
106
|
+
? resources.filter((resource) => !isExcludedSecret(resource))
|
|
107
|
+
: resources;
|
|
108
|
+
excludedSecretCount += resourceCount - exportableResources.length;
|
|
109
|
+
const resourceCountAfterSecretFiltering = exportableResources.length;
|
|
110
|
+
exportableResources = exportableResources.filter((resource) => !isControllerManagedResource(resourceType, resource));
|
|
111
|
+
excludedManagedResourceCount +=
|
|
112
|
+
resourceCountAfterSecretFiltering - exportableResources.length;
|
|
113
|
+
allResources.push(...exportableResources.map(sanitizeResource));
|
|
114
|
+
allResourceCount += exportableResources.length;
|
|
46
115
|
}
|
|
47
116
|
}
|
|
117
|
+
if (excludedSecretCount > 0) {
|
|
118
|
+
const secretLabel = excludedSecretCount === 1 ? 'secret' : 'secrets';
|
|
119
|
+
output.info(`excluded ${excludedSecretCount} system-managed ${secretLabel}`);
|
|
120
|
+
}
|
|
121
|
+
if (excludedManagedResourceCount > 0) {
|
|
122
|
+
const resourceLabel = excludedManagedResourceCount === 1 ? 'resource' : 'resources';
|
|
123
|
+
output.info(`excluded ${excludedManagedResourceCount} controller-managed ${resourceLabel}`);
|
|
124
|
+
}
|
|
48
125
|
if (allResourceCount === 0) {
|
|
49
126
|
output.warning('no resources found to export');
|
|
50
127
|
return;
|
|
@@ -1,27 +1,62 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import { execa } from 'execa';
|
|
3
3
|
import output from '../../lib/output.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
4
|
+
function countApplied(stdout) {
|
|
5
|
+
const counts = { created: 0, configured: 0, unchanged: 0 };
|
|
6
|
+
for (const line of stdout.split('\n')) {
|
|
7
|
+
const trimmed = line.trim();
|
|
8
|
+
if (trimmed.endsWith(' created')) {
|
|
9
|
+
counts.created++;
|
|
10
|
+
}
|
|
11
|
+
else if (trimmed.endsWith(' configured')) {
|
|
12
|
+
counts.configured++;
|
|
13
|
+
}
|
|
14
|
+
else if (trimmed.endsWith(' unchanged')) {
|
|
15
|
+
counts.unchanged++;
|
|
16
|
+
}
|
|
12
17
|
}
|
|
13
|
-
|
|
14
|
-
|
|
18
|
+
return counts;
|
|
19
|
+
}
|
|
20
|
+
async function importResources(filepath, options) {
|
|
21
|
+
if (!options.upsert) {
|
|
22
|
+
try {
|
|
23
|
+
output.info(`importing ark resources from ${filepath}...`);
|
|
24
|
+
const args = ['create', '-f', filepath];
|
|
25
|
+
await execa('kubectl', args, {
|
|
26
|
+
stdio: 'pipe',
|
|
27
|
+
});
|
|
28
|
+
output.success(`imported resources from ${filepath}`);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
output.error('import failed:', error instanceof Error ? error.message : error);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
output.info(`importing ark resources from ${filepath} (upsert)...`);
|
|
37
|
+
const result = await execa('kubectl', ['apply', '-f', filepath], {
|
|
38
|
+
stdio: 'pipe',
|
|
39
|
+
reject: false,
|
|
40
|
+
});
|
|
41
|
+
const counts = countApplied(result.stdout ?? '');
|
|
42
|
+
if (result.exitCode !== 0) {
|
|
43
|
+
output.error(`import failed (${counts.created} created, ${counts.configured} configured, ${counts.unchanged} unchanged before errors):`);
|
|
44
|
+
const details = (result.stderr || result.stdout || '').trim();
|
|
45
|
+
if (details) {
|
|
46
|
+
output.error(details);
|
|
47
|
+
}
|
|
15
48
|
process.exit(1);
|
|
16
49
|
}
|
|
50
|
+
output.success(`import complete: ${counts.created} created, ${counts.configured} configured, ${counts.unchanged} unchanged`);
|
|
17
51
|
}
|
|
18
52
|
export function createImportCommand(_) {
|
|
19
53
|
const importCommand = new Command('import');
|
|
20
54
|
importCommand
|
|
21
55
|
.description('import ARK resources from a file')
|
|
22
56
|
.argument('<filepath>', 'input file path')
|
|
23
|
-
.
|
|
24
|
-
|
|
57
|
+
.option('--upsert', 'create or update resources (kubectl apply); allows re-import onto a cluster that already has some of these resources')
|
|
58
|
+
.action(async (filepath, options) => {
|
|
59
|
+
await importResources(filepath, options);
|
|
25
60
|
});
|
|
26
61
|
return importCommand;
|
|
27
62
|
}
|
|
@@ -8,7 +8,7 @@ export function createQueryCommand(config) {
|
|
|
8
8
|
.description('Execute a single query against a model or agent')
|
|
9
9
|
.argument('<target>', 'Query target (e.g., model/default, agent/my-agent)')
|
|
10
10
|
.argument('<message>', 'Message to send')
|
|
11
|
-
.option('-o, --output <format>', 'Output format: yaml, json, name
|
|
11
|
+
.option('-o, --output <format>', 'Output format: yaml, json, name, events (structured event data), or events-pretty (events with color-coded reasons and expanded key/value detail)')
|
|
12
12
|
.option('--timeout <timeout>', 'Query timeout (e.g., 30s, 5m, 1h)')
|
|
13
13
|
.option('-p, --parameter <name=value>', 'Template parameter in name=value format (can be used multiple times)', (val, acc) => [...acc, val], [])
|
|
14
14
|
.option('--session-id <sessionId>', 'Session ID to associate with the query for conversation continuity')
|
|
@@ -40,6 +40,12 @@ export declare class ArkApiClient {
|
|
|
40
40
|
private baseUrl;
|
|
41
41
|
constructor(arkApiUrl: string);
|
|
42
42
|
getBaseUrl(): string;
|
|
43
|
+
/**
|
|
44
|
+
* Fetch every page of a cursor-paginated ark-api list endpoint and return
|
|
45
|
+
* the concatenated items. Follows the `continue_token` returned by ark-api
|
|
46
|
+
* until the server reports the last page (`continue_token` null/absent).
|
|
47
|
+
*/
|
|
48
|
+
private fetchAllPages;
|
|
43
49
|
getQueryTargets(): Promise<QueryTarget[]>;
|
|
44
50
|
getAgents(): Promise<Agent[]>;
|
|
45
51
|
getModels(): Promise<Model[]>;
|
package/dist/lib/arkApiClient.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const PAGE_LIMIT = 100;
|
|
1
2
|
export class ArkApiClient {
|
|
2
3
|
baseUrl;
|
|
3
4
|
constructor(arkApiUrl) {
|
|
@@ -6,6 +7,31 @@ export class ArkApiClient {
|
|
|
6
7
|
getBaseUrl() {
|
|
7
8
|
return this.baseUrl;
|
|
8
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Fetch every page of a cursor-paginated ark-api list endpoint and return
|
|
12
|
+
* the concatenated items. Follows the `continue_token` returned by ark-api
|
|
13
|
+
* until the server reports the last page (`continue_token` null/absent).
|
|
14
|
+
*/
|
|
15
|
+
async fetchAllPages(path) {
|
|
16
|
+
const items = [];
|
|
17
|
+
let continueToken;
|
|
18
|
+
do {
|
|
19
|
+
const url = new URL(`${this.baseUrl}${path}`);
|
|
20
|
+
url.searchParams.set('limit', String(PAGE_LIMIT));
|
|
21
|
+
if (continueToken) {
|
|
22
|
+
url.searchParams.set('continue', continueToken);
|
|
23
|
+
}
|
|
24
|
+
const response = await fetch(url.toString());
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
27
|
+
}
|
|
28
|
+
const data = (await response.json());
|
|
29
|
+
if (data.items)
|
|
30
|
+
items.push(...data.items);
|
|
31
|
+
continueToken = data.continue_token;
|
|
32
|
+
} while (continueToken);
|
|
33
|
+
return items;
|
|
34
|
+
}
|
|
9
35
|
async getQueryTargets() {
|
|
10
36
|
try {
|
|
11
37
|
const targets = [];
|
|
@@ -17,17 +43,14 @@ export class ArkApiClient {
|
|
|
17
43
|
];
|
|
18
44
|
for (const ep of endpoints) {
|
|
19
45
|
try {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
description: item.description || item.name,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
46
|
+
const items = await this.fetchAllPages(ep.path);
|
|
47
|
+
for (const item of items) {
|
|
48
|
+
targets.push({
|
|
49
|
+
id: `${ep.type}/${item.name}`,
|
|
50
|
+
name: item.name,
|
|
51
|
+
type: ep.type,
|
|
52
|
+
description: item.description || item.name,
|
|
53
|
+
});
|
|
31
54
|
}
|
|
32
55
|
}
|
|
33
56
|
catch {
|
|
@@ -42,12 +65,7 @@ export class ArkApiClient {
|
|
|
42
65
|
}
|
|
43
66
|
async getAgents() {
|
|
44
67
|
try {
|
|
45
|
-
|
|
46
|
-
if (!response.ok) {
|
|
47
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
48
|
-
}
|
|
49
|
-
const data = (await response.json());
|
|
50
|
-
return data.items || [];
|
|
68
|
+
return await this.fetchAllPages('/v1/agents');
|
|
51
69
|
}
|
|
52
70
|
catch (error) {
|
|
53
71
|
throw new Error(`Failed to get agents: ${error instanceof Error ? error.message : 'Unknown error'}`, { cause: error });
|
|
@@ -55,12 +73,7 @@ export class ArkApiClient {
|
|
|
55
73
|
}
|
|
56
74
|
async getModels() {
|
|
57
75
|
try {
|
|
58
|
-
|
|
59
|
-
if (!response.ok) {
|
|
60
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
61
|
-
}
|
|
62
|
-
const data = (await response.json());
|
|
63
|
-
return data.items || [];
|
|
76
|
+
return await this.fetchAllPages('/v1/models');
|
|
64
77
|
}
|
|
65
78
|
catch (error) {
|
|
66
79
|
throw new Error(`Failed to get models: ${error instanceof Error ? error.message : 'Unknown error'}`, { cause: error });
|
|
@@ -68,12 +81,7 @@ export class ArkApiClient {
|
|
|
68
81
|
}
|
|
69
82
|
async getTools() {
|
|
70
83
|
try {
|
|
71
|
-
|
|
72
|
-
if (!response.ok) {
|
|
73
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
74
|
-
}
|
|
75
|
-
const data = (await response.json());
|
|
76
|
-
return data.items || [];
|
|
84
|
+
return await this.fetchAllPages('/v1/tools');
|
|
77
85
|
}
|
|
78
86
|
catch (error) {
|
|
79
87
|
throw new Error(`Failed to get tools: ${error instanceof Error ? error.message : 'Unknown error'}`, { cause: error });
|
|
@@ -81,12 +89,7 @@ export class ArkApiClient {
|
|
|
81
89
|
}
|
|
82
90
|
async getTeams() {
|
|
83
91
|
try {
|
|
84
|
-
|
|
85
|
-
if (!response.ok) {
|
|
86
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
87
|
-
}
|
|
88
|
-
const data = (await response.json());
|
|
89
|
-
return data.items || [];
|
|
92
|
+
return await this.fetchAllPages('/v1/teams');
|
|
90
93
|
}
|
|
91
94
|
catch (error) {
|
|
92
95
|
throw new Error(`Failed to get teams: ${error instanceof Error ? error.message : 'Unknown error'}`, { cause: error });
|
package/dist/lib/executeQuery.js
CHANGED
|
@@ -137,6 +137,10 @@ async function executeQueryWithFormat(options) {
|
|
|
137
137
|
await watchEventsLive(queryName);
|
|
138
138
|
return;
|
|
139
139
|
}
|
|
140
|
+
if (options.outputFormat === 'events-pretty') {
|
|
141
|
+
await watchEventsLive(queryName, true);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
140
144
|
const timeoutSeconds = 300;
|
|
141
145
|
await execa('kubectl', [
|
|
142
146
|
'wait',
|
|
@@ -153,7 +157,7 @@ async function executeQueryWithFormat(options) {
|
|
|
153
157
|
console.log(stdout);
|
|
154
158
|
}
|
|
155
159
|
else {
|
|
156
|
-
console.error(chalk.red(`Invalid output format: ${options.outputFormat}. Use: yaml, json, name, or events`));
|
|
160
|
+
console.error(chalk.red(`Invalid output format: ${options.outputFormat}. Use: yaml, json, name, events, or events-pretty`));
|
|
157
161
|
process.exit(ExitCodes.CliError);
|
|
158
162
|
}
|
|
159
163
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface K8sEvent {
|
|
2
|
+
type?: string;
|
|
3
|
+
reason?: string;
|
|
4
|
+
eventTime?: string;
|
|
5
|
+
lastTimestamp?: string;
|
|
6
|
+
firstTimestamp?: string;
|
|
7
|
+
metadata?: {
|
|
8
|
+
uid?: string;
|
|
9
|
+
creationTimestamp?: string;
|
|
10
|
+
annotations?: Record<string, string>;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export declare function pad(value: number, width: number): string;
|
|
14
|
+
/**
|
|
15
|
+
* Derive an HH:MM:SS.mmm timestamp, preferring the event-data payload timestamp
|
|
16
|
+
* and falling back through the native Event time fields to wall-clock now.
|
|
17
|
+
*/
|
|
18
|
+
export declare function formatEventTimestamp(event: K8sEvent): string;
|
|
19
|
+
/**
|
|
20
|
+
* Render the structured event-data payload as `message > key=value ...`.
|
|
21
|
+
* The message is clipped and colored red for Warning/Error events; trailing
|
|
22
|
+
* fields keep their full value. Non-object payloads are echoed as-is.
|
|
23
|
+
*/
|
|
24
|
+
export declare function formatEventData(eventData: string, eventType?: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Format a Kubernetes Event carrying an ark event-data annotation into a
|
|
27
|
+
* single human-readable line. Returns null when the event has no payload.
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatEvent(event: K8sEvent): string | null;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { EVENT_ANNOTATIONS } from './constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Shape of the JSON carried in the `ark.mckinsey.com/event-data` annotation:
|
|
5
|
+
*
|
|
6
|
+
* {
|
|
7
|
+
* "durationMs": "7084.30",
|
|
8
|
+
* "input": "ok?",
|
|
9
|
+
* "message": "Query execution completed",
|
|
10
|
+
* "queryId": "0b61250b-...",
|
|
11
|
+
* "queryName": "cli-query-1784110137509",
|
|
12
|
+
* "queryNamespace": "ark-system",
|
|
13
|
+
* "sessionId": "0b61250b-...",
|
|
14
|
+
* "targetType": "model",
|
|
15
|
+
* "timestamp": "2026-07-15T10:09:04.602422162Z"
|
|
16
|
+
* }
|
|
17
|
+
*/
|
|
18
|
+
const NUMERIC = /^-?\d+(\.\d+)?$/;
|
|
19
|
+
const MAX_MESSAGE_LENGTH = 120;
|
|
20
|
+
// Fields rendered first (in this order); everything else is sorted alphabetically.
|
|
21
|
+
const FIELD_PRIORITY = { input: 0, durationMs: 1 };
|
|
22
|
+
// Keys pulled out of the trailing field list because they are rendered elsewhere.
|
|
23
|
+
const RESERVED_KEYS = new Set(['message', 'timestamp']);
|
|
24
|
+
export function pad(value, width) {
|
|
25
|
+
return value.toString().padStart(width, '0');
|
|
26
|
+
}
|
|
27
|
+
function parseEventData(raw) {
|
|
28
|
+
if (!raw) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const parsed = JSON.parse(raw);
|
|
33
|
+
return parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)
|
|
34
|
+
? parsed
|
|
35
|
+
: null;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function firstValidDate(candidates) {
|
|
42
|
+
for (const candidate of candidates) {
|
|
43
|
+
if (!candidate) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const date = new Date(candidate);
|
|
47
|
+
if (!Number.isNaN(date.getTime())) {
|
|
48
|
+
return date;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return new Date();
|
|
52
|
+
}
|
|
53
|
+
function truncate(value, max = MAX_MESSAGE_LENGTH) {
|
|
54
|
+
return value.length > max ? `${value.slice(0, max)}…` : value;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Derive an HH:MM:SS.mmm timestamp, preferring the event-data payload timestamp
|
|
58
|
+
* and falling back through the native Event time fields to wall-clock now.
|
|
59
|
+
*/
|
|
60
|
+
export function formatEventTimestamp(event) {
|
|
61
|
+
const data = parseEventData(event.metadata?.annotations?.[EVENT_ANNOTATIONS.EVENT_DATA]);
|
|
62
|
+
const dataTimestamp = typeof data?.timestamp === 'string' ? data.timestamp : undefined;
|
|
63
|
+
const date = firstValidDate([
|
|
64
|
+
dataTimestamp,
|
|
65
|
+
event.eventTime,
|
|
66
|
+
event.lastTimestamp,
|
|
67
|
+
event.firstTimestamp,
|
|
68
|
+
event.metadata?.creationTimestamp,
|
|
69
|
+
]);
|
|
70
|
+
return `${pad(date.getHours(), 2)}:${pad(date.getMinutes(), 2)}:${pad(date.getSeconds(), 2)}.${pad(date.getMilliseconds(), 3)}`;
|
|
71
|
+
}
|
|
72
|
+
function colorReason(reason, eventType) {
|
|
73
|
+
if (eventType === 'Warning') {
|
|
74
|
+
return chalk.yellow(reason);
|
|
75
|
+
}
|
|
76
|
+
if (eventType === 'Normal') {
|
|
77
|
+
return chalk.green(reason);
|
|
78
|
+
}
|
|
79
|
+
return chalk.red(reason);
|
|
80
|
+
}
|
|
81
|
+
function isErrorType(eventType) {
|
|
82
|
+
return eventType === 'Warning' || eventType === 'Error';
|
|
83
|
+
}
|
|
84
|
+
function compareKeys(a, b) {
|
|
85
|
+
const rank = (key) => FIELD_PRIORITY[key] ?? Number.MAX_SAFE_INTEGER;
|
|
86
|
+
return rank(a) - rank(b) || a.localeCompare(b);
|
|
87
|
+
}
|
|
88
|
+
function renderFieldValue(key, value) {
|
|
89
|
+
if (typeof value === 'number') {
|
|
90
|
+
return chalk.green(String(value));
|
|
91
|
+
}
|
|
92
|
+
if (value !== null && typeof value === 'object') {
|
|
93
|
+
return chalk.white(JSON.stringify(value));
|
|
94
|
+
}
|
|
95
|
+
const str = String(value);
|
|
96
|
+
if (NUMERIC.test(str)) {
|
|
97
|
+
return chalk.green(str);
|
|
98
|
+
}
|
|
99
|
+
return chalk.white(key === 'input' ? `"${str}"` : str);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Render the structured event-data payload as `message > key=value ...`.
|
|
103
|
+
* The message is clipped and colored red for Warning/Error events; trailing
|
|
104
|
+
* fields keep their full value. Non-object payloads are echoed as-is.
|
|
105
|
+
*/
|
|
106
|
+
export function formatEventData(eventData, eventType = 'Normal') {
|
|
107
|
+
const data = parseEventData(eventData);
|
|
108
|
+
if (!data) {
|
|
109
|
+
return ` ${eventData}`;
|
|
110
|
+
}
|
|
111
|
+
const messageColor = isErrorType(eventType) ? chalk.red : chalk.white;
|
|
112
|
+
const messagePart = typeof data.message === 'string'
|
|
113
|
+
? ` ${messageColor(truncate(data.message))}`
|
|
114
|
+
: '';
|
|
115
|
+
const fields = Object.keys(data)
|
|
116
|
+
.filter((key) => !RESERVED_KEYS.has(key))
|
|
117
|
+
.sort(compareKeys)
|
|
118
|
+
.map((key) => `${chalk.blue(key)}${chalk.dim('=')}${renderFieldValue(key, data[key])}`)
|
|
119
|
+
.join(' ');
|
|
120
|
+
if (!fields) {
|
|
121
|
+
return messagePart;
|
|
122
|
+
}
|
|
123
|
+
return `${messagePart} ${chalk.dim('>')} ${fields}`;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Format a Kubernetes Event carrying an ark event-data annotation into a
|
|
127
|
+
* single human-readable line. Returns null when the event has no payload.
|
|
128
|
+
*/
|
|
129
|
+
export function formatEvent(event) {
|
|
130
|
+
const eventData = event.metadata?.annotations?.[EVENT_ANNOTATIONS.EVENT_DATA];
|
|
131
|
+
if (!eventData) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
const timestamp = formatEventTimestamp(event);
|
|
135
|
+
const reason = event.reason || 'Unknown';
|
|
136
|
+
const eventType = event.type || 'Normal';
|
|
137
|
+
return `${chalk.dim(timestamp)} [${colorReason(reason, eventType)}]${formatEventData(eventData, eventType)}`;
|
|
138
|
+
}
|
package/dist/lib/kubectl.d.ts
CHANGED
|
@@ -14,5 +14,5 @@ export declare function deleteResource(resourceType: string, name?: string, opti
|
|
|
14
14
|
all?: boolean;
|
|
15
15
|
}): Promise<void>;
|
|
16
16
|
export declare function replaceResource<T extends K8sResource>(resource: T): Promise<T>;
|
|
17
|
-
export declare function watchEventsLive(queryName: string): Promise<void>;
|
|
17
|
+
export declare function watchEventsLive(queryName: string, pretty?: boolean): Promise<void>;
|
|
18
18
|
export {};
|
package/dist/lib/kubectl.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { execa } from 'execa';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { EVENT_ANNOTATIONS } from './constants.js';
|
|
4
|
+
import { formatEvent } from './formatEvent.js';
|
|
4
5
|
export async function getResource(resourceType, name) {
|
|
5
6
|
if (name === '@latest') {
|
|
6
7
|
const result = await execa('kubectl', [
|
|
@@ -53,7 +54,7 @@ export async function replaceResource(resource) {
|
|
|
53
54
|
});
|
|
54
55
|
return JSON.parse(result.stdout);
|
|
55
56
|
}
|
|
56
|
-
export async function watchEventsLive(queryName) {
|
|
57
|
+
export async function watchEventsLive(queryName, pretty = false) {
|
|
57
58
|
const seenEvents = new Set();
|
|
58
59
|
const pollEvents = async () => {
|
|
59
60
|
try {
|
|
@@ -73,16 +74,24 @@ export async function watchEventsLive(queryName) {
|
|
|
73
74
|
const annotations = event.metadata?.annotations || {};
|
|
74
75
|
const eventData = annotations[EVENT_ANNOTATIONS.EVENT_DATA];
|
|
75
76
|
if (eventData) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
77
|
+
if (pretty) {
|
|
78
|
+
const line = formatEvent(event);
|
|
79
|
+
if (line !== null) {
|
|
80
|
+
console.log(line);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
const now = new Date();
|
|
85
|
+
const hours = now.getHours().toString().padStart(2, '0');
|
|
86
|
+
const minutes = now.getMinutes().toString().padStart(2, '0');
|
|
87
|
+
const seconds = now.getSeconds().toString().padStart(2, '0');
|
|
88
|
+
const millis = now.getMilliseconds().toString().padStart(3, '0');
|
|
89
|
+
const timestamp = `${hours}:${minutes}:${seconds}.${millis}`;
|
|
90
|
+
const reason = event.reason || 'Unknown';
|
|
91
|
+
const eventType = event.type || 'Normal';
|
|
92
|
+
const colorCode = eventType === 'Normal' ? 32 : eventType === 'Warning' ? 33 : 31;
|
|
93
|
+
console.log(`${timestamp} \x1b[${colorCode}m${reason}\x1b[0m ${eventData}`);
|
|
94
|
+
}
|
|
86
95
|
}
|
|
87
96
|
}
|
|
88
97
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agents-at-scale/ark",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.68",
|
|
4
4
|
"description": "Ark CLI - Interactive terminal interface for ARK agents",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@kubernetes/client-node": "^1.3.0",
|
|
46
46
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
47
|
-
"axios": "^1.
|
|
47
|
+
"axios": "^1.18.0",
|
|
48
48
|
"chalk": "^4.1.2",
|
|
49
49
|
"commander": "^12.1.0",
|
|
50
50
|
"debug": "^4.4.1",
|
|
@@ -85,17 +85,20 @@
|
|
|
85
85
|
"node": ">=18.0.0"
|
|
86
86
|
},
|
|
87
87
|
"overrides": {
|
|
88
|
-
"brace-expansion": ">=5.0.
|
|
88
|
+
"brace-expansion": ">=5.0.9",
|
|
89
|
+
"ip-address": "^10.3.1",
|
|
90
|
+
"js-yaml": "^4.3.1",
|
|
89
91
|
"minimatch": "^10.2.3",
|
|
90
92
|
"rollup": "4.59.0",
|
|
91
93
|
"hono": "^4.12.25",
|
|
92
|
-
"@hono/node-server": "^
|
|
94
|
+
"@hono/node-server": "^2.0.5",
|
|
93
95
|
"flatted": "^3.4.2",
|
|
94
96
|
"tar": "^7.5.11",
|
|
95
97
|
"express-rate-limit": "^8.3.0",
|
|
96
|
-
"fast-uri": "^3.1.
|
|
98
|
+
"fast-uri": "^3.1.5",
|
|
97
99
|
"ws": "^8.21.0",
|
|
98
100
|
"esbuild": "^0.28.1",
|
|
99
|
-
"form-data": "^4.0.6"
|
|
101
|
+
"form-data": "^4.0.6",
|
|
102
|
+
"postcss": "^8.5.18"
|
|
100
103
|
}
|
|
101
104
|
}
|
|
@@ -63,7 +63,7 @@ ENTRYPOINT [ "/bin/bash", "-c", "mcp-proxy --debug --port 8080 --host 0.0.0.0 --
|
|
|
63
63
|
{{- end }}
|
|
64
64
|
|
|
65
65
|
{{- else if eq .Values.technology "go" }}
|
|
66
|
-
FROM golang:1.26.
|
|
66
|
+
FROM golang:1.26.6-alpine AS go-builder
|
|
67
67
|
{{- if .Values.packageSource }}
|
|
68
68
|
{{- if eq .Values.packageSource "go-install" }}
|
|
69
69
|
RUN go install {{ .Values.packageName }}@latest
|
package/templates/tool/uv.lock
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
version = 1
|
|
2
2
|
revision = 3
|
|
3
3
|
requires-python = ">=3.12"
|
|
4
|
+
resolution-markers = [
|
|
5
|
+
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
|
6
|
+
"python_full_version >= '3.14' and sys_platform != 'win32'",
|
|
7
|
+
"python_full_version < '3.14' and sys_platform == 'win32'",
|
|
8
|
+
"python_full_version < '3.14' and sys_platform != 'win32'",
|
|
9
|
+
]
|
|
4
10
|
|
|
5
11
|
[[package]]
|
|
6
12
|
name = "aiofile"
|
|
@@ -186,55 +192,52 @@ wheels = [
|
|
|
186
192
|
|
|
187
193
|
[[package]]
|
|
188
194
|
name = "cryptography"
|
|
189
|
-
version = "
|
|
195
|
+
version = "50.0.0"
|
|
190
196
|
source = { registry = "https://pypi.org/simple" }
|
|
191
197
|
dependencies = [
|
|
192
198
|
{ name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
|
|
193
199
|
]
|
|
194
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
195
|
-
wheels = [
|
|
196
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
197
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
198
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
199
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
200
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
201
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
202
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
203
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
204
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
205
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
206
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
207
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
208
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
209
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
210
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
211
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
212
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
213
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
214
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
215
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
216
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
217
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
218
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
219
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
220
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
221
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
222
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
223
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
224
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
225
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
226
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
227
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
228
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
229
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
230
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
231
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
232
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
233
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
234
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
235
|
-
{ url = "https://files.pythonhosted.org/packages/52/41/04cb5eb17085ade6f50cc611fb657df6a0f5885350de8764ece89c050197/cryptography-48.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:86fe77abb1bd87afb251d4d02ada7ecf53a32cee9b67d976abb2e45a13297475", size = 4964539, upload-time = "2026-06-09T22:31:18.793Z" },
|
|
236
|
-
{ url = "https://files.pythonhosted.org/packages/36/bf/ed70785c496e89d7e73b7cda2d21f2447fd6d4e821714b8d04ff217fed92/cryptography-48.0.1-cp39-abi3-win32.whl", hash = "sha256:6b2c0c3e6ccf3ade7750f836ef3ee36eea250cc467d45c256895573ac08cc6f1", size = 3282307, upload-time = "2026-06-09T22:30:53.162Z" },
|
|
237
|
-
{ url = "https://files.pythonhosted.org/packages/b3/ff/371ea7d252656ee1eb6d83eeeef3d1d0c6baf1d6497687d081ea03814670/cryptography-48.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:9a49ca6c81417f6a5edb50375a60cccdd70fa0a91a5211829dbea74eba94d2ac", size = 3793408, upload-time = "2026-06-09T22:32:15.191Z" },
|
|
200
|
+
sdist = { url = "https://files.pythonhosted.org/packages/de/41/6cbdcf9142d00fe82836fbb51e503e58088575cf7a0fe1dbff6695bf0840/cryptography-50.0.0.tar.gz", hash = "sha256:eeac2acb5a20ed25e0ad6d1df9891a520b78b404266b6d11778f25d5d691a6c9", size = 880201, upload-time = "2026-07-31T14:25:10.11Z" }
|
|
201
|
+
wheels = [
|
|
202
|
+
{ url = "https://files.pythonhosted.org/packages/c5/5c/59086b4aac5e879d38ddbcf74e4be7ade89cebc3eb199a55da998c3bb46a/cryptography-50.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:031e2d5dd4bb9caa3ca9c82e5a197fd8ae680232cee62603d1a813f3f07e3d03", size = 4001252, upload-time = "2026-07-31T14:23:33.331Z" },
|
|
203
|
+
{ url = "https://files.pythonhosted.org/packages/57/ef/8f2df13c7216bcad3e1c74e07f6e193d93e998e114f524a53877c9af27ad/cryptography-50.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fd9192b7b70c573d7f214eb1ae35e00d359f6f5e4b27c7e21e30de1fc6204645", size = 4719554, upload-time = "2026-07-31T14:23:35.611Z" },
|
|
204
|
+
{ url = "https://files.pythonhosted.org/packages/d9/41/029086c34d91052fc3b88bcc8056f709a7c915c7a23b235a54eb800b1c97/cryptography-50.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:06a32a980526a6ab9a4b9bf8f7385800791e2bb960903cb6b530e4817509a3b7", size = 4702130, upload-time = "2026-07-31T14:23:37.635Z" },
|
|
205
|
+
{ url = "https://files.pythonhosted.org/packages/7d/ff/b6ce0954962e7f7b969f850a883744197bb3910bdfd7b6da162eab7d9f68/cryptography-50.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:a1b30560f2acc95aa8b2e06e716a13dbfc97314747b80d9707e307f77b40d6b3", size = 4725244, upload-time = "2026-07-31T14:23:39.471Z" },
|
|
206
|
+
{ url = "https://files.pythonhosted.org/packages/06/1e/63a1027cb7fec360a182208e1b7767d5aa1fe57be3d6aa856e69a321edc0/cryptography-50.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:8d89f3976b10b4ce31118de72329025f70d2c6ead14a8217c5514dd2c6d5a78f", size = 5342265, upload-time = "2026-07-31T14:23:41.286Z" },
|
|
207
|
+
{ url = "https://files.pythonhosted.org/packages/6b/72/a1116d683a6d7ece94590013882515de087edf9ef0e6292aae615a44df73/cryptography-50.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b42a28c1844fd9de8f3f7d540e36b66f3a9c83fceac7170ebc7a6a19edd9dcae", size = 4734609, upload-time = "2026-07-31T14:23:43.139Z" },
|
|
208
|
+
{ url = "https://files.pythonhosted.org/packages/15/37/36a9c479bbe49acea2636c7fd3360d20f7b7e079c300352011c44850b181/cryptography-50.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:900131fafd8aead39ac7dd3a7e833be754c17a95cfd91221636949fe4eb0aa8a", size = 4356517, upload-time = "2026-07-31T14:23:44.939Z" },
|
|
209
|
+
{ url = "https://files.pythonhosted.org/packages/32/98/8a151d64367204cbc63ec65d37502f1d9c53cf4bfc6ec3c532614dbec60d/cryptography-50.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:07949c449a1abcf60d1ee6e88956d89404c7df3c8258f46589e912988e551987", size = 4724529, upload-time = "2026-07-31T14:23:46.93Z" },
|
|
210
|
+
{ url = "https://files.pythonhosted.org/packages/22/f6/ec13b470172126464a86bf54d2294a46d29837fc51ba3e45d4047946fb5e/cryptography-50.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:f89831ef99dd7dd169ab06d63a831adb9e20a87aac6d380266bbda5823349169", size = 5299852, upload-time = "2026-07-31T14:23:48.851Z" },
|
|
211
|
+
{ url = "https://files.pythonhosted.org/packages/da/3a/f05e32c99d440c9bb891ea0e36c9091891e36be5a9a87ab2ee6ea20729f6/cryptography-50.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:82148ec5bddac30b51a5b3c1945075f896fa022cb93f8e4a01e9f6ee95292c5f", size = 4734462, upload-time = "2026-07-31T14:23:50.861Z" },
|
|
212
|
+
{ url = "https://files.pythonhosted.org/packages/ca/dc/bd72b26be8953f80625f63151efd38eee71c76ca6cf591c08ff34615a79e/cryptography-50.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1489e263a8048bb8b6a8bac662eb2d402ea5d2b7b4699b72f385f1e2772db105", size = 4852708, upload-time = "2026-07-31T14:23:52.715Z" },
|
|
213
|
+
{ url = "https://files.pythonhosted.org/packages/27/20/c930314a2ab476d15dec966ec87e2e9637bb02b06106b12c0396c57bb603/cryptography-50.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7cec5b856506da6defb290f30c9ee687d5f5e8cb0bd3f6459dde43b0b4fa40ef", size = 5004179, upload-time = "2026-07-31T14:23:54.887Z" },
|
|
214
|
+
{ url = "https://files.pythonhosted.org/packages/32/2e/c9db68a0c4bfa28e310707527c0ee3a2bd254104d2e02e68f368e197aa4c/cryptography-50.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:bd1c592e4d5974f0d08d4888e432157adba757c66da0246918e43677fafa2d30", size = 3840395, upload-time = "2026-07-31T14:23:56.677Z" },
|
|
215
|
+
{ url = "https://files.pythonhosted.org/packages/c3/fb/951032a3bf22a5697c83183fb6294a4843772947a70e616c57b3ff5f522e/cryptography-50.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:49e7d93abdbd2990caced757e5fade25302f719c3c8fb6e6fff2dde98999fc41", size = 3989258, upload-time = "2026-07-31T14:23:58.881Z" },
|
|
216
|
+
{ url = "https://files.pythonhosted.org/packages/d4/67/91eb047e69c5e845f2f14b8a2e4a1aab0f283cb885531e9e22c8adb176bc/cryptography-50.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:19736989797678c6af1e55cd49055cdbcb55d8f6b5583ac5335f933aba9101dc", size = 4700648, upload-time = "2026-07-31T14:24:00.702Z" },
|
|
217
|
+
{ url = "https://files.pythonhosted.org/packages/30/82/85f0f7425c856b9f96459411eb12e74ef72df9caf6f8f15bf23a33ff131f/cryptography-50.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:80b63928fa35083b33966ce1efb70e5b9607181e49dcd1c22c8c005e319f667f", size = 4682442, upload-time = "2026-07-31T14:24:02.538Z" },
|
|
218
|
+
{ url = "https://files.pythonhosted.org/packages/1a/28/b555a365adff1cca2fbe7b9e487d68a40de6bc67ff2cb587473eb43de0e7/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:d58c3db7cd6eed54e6c06744db55456b65ebd7492ddeae9c1e93cfca7aa857d3", size = 4707596, upload-time = "2026-07-31T14:24:04.394Z" },
|
|
219
|
+
{ url = "https://files.pythonhosted.org/packages/72/d8/f52538140cc719df62a01cf87d1c7142318d235817109d6f4054d7c352d6/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:df2a58a472f332225671c35b0a830208b86d004f82baa8530fa3782c85646533", size = 5314552, upload-time = "2026-07-31T14:24:06.31Z" },
|
|
220
|
+
{ url = "https://files.pythonhosted.org/packages/38/14/6120e5bd7c5aa022ad15424ba4d5c5269d0d9448ed4d55e492ea91e3c1c4/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:11b74db56cdbe3cdee6e3f6982ecb70334fa10dce99ed58bf7894aaaa3b2a037", size = 4717113, upload-time = "2026-07-31T14:24:08.349Z" },
|
|
221
|
+
{ url = "https://files.pythonhosted.org/packages/fa/71/190bf38c3ee2e0f8efc9860ae100c9df4169742eef274b91e7aa1cb133b9/cryptography-50.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:f59e38625469987d7ef6d495323c55e7db6c212eaf6112267e0d3b565a2e9c9f", size = 4338580, upload-time = "2026-07-31T14:24:10.227Z" },
|
|
222
|
+
{ url = "https://files.pythonhosted.org/packages/3a/63/504ccfbbe61fd8aa983f7f146399cdf034c72c2fc55f5b2dfdcdcdb20c99/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ecfed7367f965a0328cfbdd70da860f15441f002f613185668c6e6ebf5a0ac11", size = 4707038, upload-time = "2026-07-31T14:24:12.169Z" },
|
|
223
|
+
{ url = "https://files.pythonhosted.org/packages/01/77/2cf79bbfc4d12ca106437a6e170d6aaa01a373e93093118aaaef0e801bd4/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:9aa87839c383bdbab6ef865787a1fb877af8dd03464c4400322726feaaadfc6d", size = 5273110, upload-time = "2026-07-31T14:24:14.38Z" },
|
|
224
|
+
{ url = "https://files.pythonhosted.org/packages/e5/45/8aae2972c520145377ea3559a605a899bebe227bf070b33cdb445929a9b9/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:6ba6a53445bd3cfa809ef3ef5f1589aa6ba08784a1d962bf47d0940e871dab1c", size = 4716439, upload-time = "2026-07-31T14:24:16.415Z" },
|
|
225
|
+
{ url = "https://files.pythonhosted.org/packages/7b/20/4fe50b619a48c2525cc46e2dbc1ac490708d704be5d467bdaac6dc955682/cryptography-50.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3f5735ffe4996d28b809371756219f5354864902a3b9e7c0b9ee87041209fc9c", size = 4837383, upload-time = "2026-07-31T14:24:18.553Z" },
|
|
226
|
+
{ url = "https://files.pythonhosted.org/packages/92/91/3a31366e183343d3703f8995c095f5734676bd6938118047e50fcf279eb4/cryptography-50.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:1b4a266766514614f8aa60416e71f2fc6e575d36e7bdc90f644fadb2f4b75b95", size = 4985772, upload-time = "2026-07-31T14:24:20.385Z" },
|
|
227
|
+
{ url = "https://files.pythonhosted.org/packages/74/9a/02ffe35b2853d121689871eb5dce862092562b3a1ed5cc98f1aaed441506/cryptography-50.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:12b9c6996425c76ea6c457ace4f3073e715b8c545add07cd1a8f3a4f90691269", size = 3816291, upload-time = "2026-07-31T14:24:22.125Z" },
|
|
228
|
+
{ url = "https://files.pythonhosted.org/packages/03/37/73d005be173aff344af30e9fd2a576575cb2391a7101d9cd3842e1fa8cce/cryptography-50.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ccdc4a71a4dabae05de219404f9f4abc38e3b58422177ff93d0da05967dafa07", size = 4036009, upload-time = "2026-07-31T14:24:24.122Z" },
|
|
229
|
+
{ url = "https://files.pythonhosted.org/packages/ff/c6/7a6202a534e32103a285b7834a120869557fe198d51d7cfe59754c8bda9c/cryptography-50.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:910e1d2668e7de9648f2bcee30e180db2a6b15c30f887d7c4c93ddf96e3992e3", size = 4745252, upload-time = "2026-07-31T14:24:26.118Z" },
|
|
230
|
+
{ url = "https://files.pythonhosted.org/packages/85/4f/0fa8c2f4428198f15d9ff8d63400e27afbf94ce833f6108da1eb3753f945/cryptography-50.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a91296cb61e8df6f86d0c19cc4068228da256bf59bf86049fbd821084565327f", size = 4728939, upload-time = "2026-07-31T14:24:27.994Z" },
|
|
231
|
+
{ url = "https://files.pythonhosted.org/packages/d1/63/54dd723490ba2dc09b299682c10b38db38f159728bcaae8c591b8af2f22d/cryptography-50.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e722f16708d854fe924790e051061f6704a472c3bac347b6fd88033ea8dd0dc5", size = 4748483, upload-time = "2026-07-31T14:24:30.254Z" },
|
|
232
|
+
{ url = "https://files.pythonhosted.org/packages/1d/dd/7c77d26285cc7f6991efce64a0f5b4f9383bfa5dd8c5033003eaf7db4cdb/cryptography-50.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:d764dcf130c428ef66786f866dd750f53182bc608813489915e9fc106bb0c82f", size = 5367599, upload-time = "2026-07-31T14:24:32.457Z" },
|
|
233
|
+
{ url = "https://files.pythonhosted.org/packages/46/c9/f60aed34c013f317f92817b6c171c2d22a78270fa41109bd4b08af26b194/cryptography-50.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:105110f43a471dbd0060b9c9516cb8a6a79233631a04cc2ba16f28323ac6e025", size = 4762647, upload-time = "2026-07-31T14:24:34.599Z" },
|
|
234
|
+
{ url = "https://files.pythonhosted.org/packages/be/f3/f9a0173b139372c3a48ed98154b45cc6b9de17c789d5ab552e621c293609/cryptography-50.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:828743d939e9629bc267b8e2d08d8bb67cd4319c771a33d4b18b22dd8fb7440a", size = 4385197, upload-time = "2026-07-31T14:24:36.647Z" },
|
|
235
|
+
{ url = "https://files.pythonhosted.org/packages/d8/36/83bb81f6e569bc38e1e4a7bc80f29b46bb9601920bc455fc8e888f5d5742/cryptography-50.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:2a8183b489dc1f7f80f135780fadc1108f14b31b8a40411c7a5b17425f65f28b", size = 4748095, upload-time = "2026-07-31T14:24:39.493Z" },
|
|
236
|
+
{ url = "https://files.pythonhosted.org/packages/6b/16/d3008eff98c764979865834c3d386d4fd041b5f52e7f34fc29ac1a5eb515/cryptography-50.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6e7d61120573a7f2cd94cc095f9e81f6967c61ccdf194285aa143ecec8e0b708", size = 5325948, upload-time = "2026-07-31T14:24:41.556Z" },
|
|
237
|
+
{ url = "https://files.pythonhosted.org/packages/9c/f8/d97f9603efda3888187bfdb893f26c41be4735c10631d05d284ee6b047c4/cryptography-50.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:37fdb0d0111f1e2ff07139dfb79f1b49531f8e213c46f1163dd7642979b58c47", size = 4762400, upload-time = "2026-07-31T14:24:43.636Z" },
|
|
238
|
+
{ url = "https://files.pythonhosted.org/packages/64/a2/4615c8f7d81a00b1d6e6afe19f694e1543582349fb5f4076f6cb5dc36485/cryptography-50.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87f62a3d3b9888ed0fdde100ec06aa61ca9cd44bad9057d1dff9a516b5f5bb9", size = 4878208, upload-time = "2026-07-31T14:24:45.522Z" },
|
|
239
|
+
{ url = "https://files.pythonhosted.org/packages/d2/1a/efcfb02f91407149a0dacffffab791f7e19bf6385f63b3666dc8b5e5c9c8/cryptography-50.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:65c2c3add92b45fd0709db8594536aea39c2a67af0e27ffcf049c498501140b7", size = 5037050, upload-time = "2026-07-31T14:24:47.697Z" },
|
|
240
|
+
{ url = "https://files.pythonhosted.org/packages/57/30/4a22984d4f1bdfb8c054f07a92bc176b97a3134cc1d6c4b3bffb1f3688b4/cryptography-50.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:d24fead1d4d076e1bfb006dcec392074a3cd8d7b4fc8a595aa64073b2b7a96ba", size = 3874135, upload-time = "2026-07-31T14:24:50.085Z" },
|
|
238
241
|
]
|
|
239
242
|
|
|
240
243
|
[[package]]
|
|
@@ -321,7 +324,8 @@ dependencies = [
|
|
|
321
324
|
{ name = "packaging" },
|
|
322
325
|
{ name = "platformdirs" },
|
|
323
326
|
{ name = "py-key-value-aio", extra = ["filetree", "keyring", "memory"] },
|
|
324
|
-
{ name = "pydantic", extra = ["email"] },
|
|
327
|
+
{ name = "pydantic", version = "2.11.7", source = { registry = "https://pypi.org/simple" }, extra = ["email"], marker = "python_full_version < '3.14'" },
|
|
328
|
+
{ name = "pydantic", version = "2.13.4", source = { registry = "https://pypi.org/simple" }, extra = ["email"], marker = "python_full_version >= '3.14'" },
|
|
325
329
|
{ name = "pyperclip" },
|
|
326
330
|
{ name = "python-dotenv" },
|
|
327
331
|
{ name = "pyyaml" },
|
|
@@ -526,14 +530,15 @@ wheels = [
|
|
|
526
530
|
|
|
527
531
|
[[package]]
|
|
528
532
|
name = "mcp"
|
|
529
|
-
version = "1.
|
|
533
|
+
version = "1.28.1"
|
|
530
534
|
source = { registry = "https://pypi.org/simple" }
|
|
531
535
|
dependencies = [
|
|
532
536
|
{ name = "anyio" },
|
|
533
537
|
{ name = "httpx" },
|
|
534
538
|
{ name = "httpx-sse" },
|
|
535
539
|
{ name = "jsonschema" },
|
|
536
|
-
{ name = "pydantic" },
|
|
540
|
+
{ name = "pydantic", version = "2.11.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" },
|
|
541
|
+
{ name = "pydantic", version = "2.13.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14'" },
|
|
537
542
|
{ name = "pydantic-settings" },
|
|
538
543
|
{ name = "pyjwt", extra = ["crypto"] },
|
|
539
544
|
{ name = "python-multipart" },
|
|
@@ -541,12 +546,13 @@ dependencies = [
|
|
|
541
546
|
{ name = "sse-starlette" },
|
|
542
547
|
{ name = "starlette" },
|
|
543
548
|
{ name = "typing-extensions" },
|
|
544
|
-
{ name = "typing-inspection" },
|
|
549
|
+
{ name = "typing-inspection", version = "0.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" },
|
|
550
|
+
{ name = "typing-inspection", version = "0.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14'" },
|
|
545
551
|
{ name = "uvicorn", marker = "sys_platform != 'emscripten'" },
|
|
546
552
|
]
|
|
547
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
553
|
+
sdist = { url = "https://files.pythonhosted.org/packages/6e/77/9450b8f251a13affb6281997d0523c4615f8a8b35d0b21ff30db3a5aac9d/mcp-1.28.1.tar.gz", hash = "sha256:d51e36a5f5644faea4f85ea649bfffa6bc6c26770d42798ad6a3de3d2ba69683", size = 638501, upload-time = "2026-06-26T12:57:29.093Z" }
|
|
548
554
|
wheels = [
|
|
549
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
555
|
+
{ url = "https://files.pythonhosted.org/packages/e2/5e/d118fce19f87a2e7d8101c35c8ae0ec289098a4df0ff244cec23e415aca0/mcp-1.28.1-py3-none-any.whl", hash = "sha256:2726bca5e7193f61c5dde8b12500a6de2d9acf6d1a1c0be9e8c2e706437991df", size = 222620, upload-time = "2026-06-26T12:57:27.218Z" },
|
|
550
556
|
]
|
|
551
557
|
|
|
552
558
|
[[package]]
|
|
@@ -572,7 +578,8 @@ name = "openapi-pydantic"
|
|
|
572
578
|
version = "0.5.1"
|
|
573
579
|
source = { registry = "https://pypi.org/simple" }
|
|
574
580
|
dependencies = [
|
|
575
|
-
{ name = "pydantic" },
|
|
581
|
+
{ name = "pydantic", version = "2.11.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" },
|
|
582
|
+
{ name = "pydantic", version = "2.13.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14'" },
|
|
576
583
|
]
|
|
577
584
|
sdist = { url = "https://files.pythonhosted.org/packages/02/2e/58d83848dd1a79cb92ed8e63f6ba901ca282c5f09d04af9423ec26c56fd7/openapi_pydantic-0.5.1.tar.gz", hash = "sha256:ff6835af6bde7a459fb93eb93bb92b8749b754fc6e51b2f1590a19dc3005ee0d", size = 60892, upload-time = "2025-01-08T19:29:27.083Z" }
|
|
578
585
|
wheels = [
|
|
@@ -657,11 +664,15 @@ wheels = [
|
|
|
657
664
|
name = "pydantic"
|
|
658
665
|
version = "2.11.7"
|
|
659
666
|
source = { registry = "https://pypi.org/simple" }
|
|
667
|
+
resolution-markers = [
|
|
668
|
+
"python_full_version < '3.14' and sys_platform == 'win32'",
|
|
669
|
+
"python_full_version < '3.14' and sys_platform != 'win32'",
|
|
670
|
+
]
|
|
660
671
|
dependencies = [
|
|
661
672
|
{ name = "annotated-types" },
|
|
662
|
-
{ name = "pydantic-core" },
|
|
673
|
+
{ name = "pydantic-core", version = "2.33.2", source = { registry = "https://pypi.org/simple" } },
|
|
663
674
|
{ name = "typing-extensions" },
|
|
664
|
-
{ name = "typing-inspection" },
|
|
675
|
+
{ name = "typing-inspection", version = "0.4.1", source = { registry = "https://pypi.org/simple" } },
|
|
665
676
|
]
|
|
666
677
|
sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" }
|
|
667
678
|
wheels = [
|
|
@@ -673,10 +684,38 @@ email = [
|
|
|
673
684
|
{ name = "email-validator" },
|
|
674
685
|
]
|
|
675
686
|
|
|
687
|
+
[[package]]
|
|
688
|
+
name = "pydantic"
|
|
689
|
+
version = "2.13.4"
|
|
690
|
+
source = { registry = "https://pypi.org/simple" }
|
|
691
|
+
resolution-markers = [
|
|
692
|
+
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
|
693
|
+
"python_full_version >= '3.14' and sys_platform != 'win32'",
|
|
694
|
+
]
|
|
695
|
+
dependencies = [
|
|
696
|
+
{ name = "annotated-types" },
|
|
697
|
+
{ name = "pydantic-core", version = "2.46.4", source = { registry = "https://pypi.org/simple" } },
|
|
698
|
+
{ name = "typing-extensions" },
|
|
699
|
+
{ name = "typing-inspection", version = "0.4.2", source = { registry = "https://pypi.org/simple" } },
|
|
700
|
+
]
|
|
701
|
+
sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" }
|
|
702
|
+
wheels = [
|
|
703
|
+
{ url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" },
|
|
704
|
+
]
|
|
705
|
+
|
|
706
|
+
[package.optional-dependencies]
|
|
707
|
+
email = [
|
|
708
|
+
{ name = "email-validator" },
|
|
709
|
+
]
|
|
710
|
+
|
|
676
711
|
[[package]]
|
|
677
712
|
name = "pydantic-core"
|
|
678
713
|
version = "2.33.2"
|
|
679
714
|
source = { registry = "https://pypi.org/simple" }
|
|
715
|
+
resolution-markers = [
|
|
716
|
+
"python_full_version < '3.14' and sys_platform == 'win32'",
|
|
717
|
+
"python_full_version < '3.14' and sys_platform != 'win32'",
|
|
718
|
+
]
|
|
680
719
|
dependencies = [
|
|
681
720
|
{ name = "typing-extensions" },
|
|
682
721
|
]
|
|
@@ -715,14 +754,95 @@ wheels = [
|
|
|
715
754
|
{ url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" },
|
|
716
755
|
]
|
|
717
756
|
|
|
757
|
+
[[package]]
|
|
758
|
+
name = "pydantic-core"
|
|
759
|
+
version = "2.46.4"
|
|
760
|
+
source = { registry = "https://pypi.org/simple" }
|
|
761
|
+
resolution-markers = [
|
|
762
|
+
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
|
763
|
+
"python_full_version >= '3.14' and sys_platform != 'win32'",
|
|
764
|
+
]
|
|
765
|
+
dependencies = [
|
|
766
|
+
{ name = "typing-extensions" },
|
|
767
|
+
]
|
|
768
|
+
sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" }
|
|
769
|
+
wheels = [
|
|
770
|
+
{ url = "https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2", size = 2106158, upload-time = "2026-05-06T13:38:57.215Z" },
|
|
771
|
+
{ url = "https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f", size = 1951724, upload-time = "2026-05-06T13:37:02.697Z" },
|
|
772
|
+
{ url = "https://files.pythonhosted.org/packages/8e/bc/f47d1ff9cbb1620e1b5b697eef06010035735f07820180e74178226b27b3/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7", size = 1975742, upload-time = "2026-05-06T13:37:09.448Z" },
|
|
773
|
+
{ url = "https://files.pythonhosted.org/packages/5b/11/9b9a5b0306345664a2da6410877af6e8082481b5884b3ddd78d47c6013ce/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7", size = 2052418, upload-time = "2026-05-06T13:37:38.234Z" },
|
|
774
|
+
{ url = "https://files.pythonhosted.org/packages/f1/b7/a65fec226f5d78fc39f4a13c4cc0c768c22b113438f60c14adc9d2865038/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712", size = 2232274, upload-time = "2026-05-06T13:38:27.753Z" },
|
|
775
|
+
{ url = "https://files.pythonhosted.org/packages/68/f0/92039db98b907ef49269a8271f67db9cb78ae2fc68062ef7e4e77adb5f61/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4", size = 2309940, upload-time = "2026-05-06T13:38:05.353Z" },
|
|
776
|
+
{ url = "https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce", size = 2094516, upload-time = "2026-05-06T13:39:10.577Z" },
|
|
777
|
+
{ url = "https://files.pythonhosted.org/packages/22/37/a8aca44d40d737dde2bc05b3c6c07dff0de07ce6f82e9f3167aeaf4d5dea/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987", size = 2136854, upload-time = "2026-05-06T13:40:22.59Z" },
|
|
778
|
+
{ url = "https://files.pythonhosted.org/packages/24/99/fcef1b79238c06a8cbec70819ac722ba76e02bc8ada9b0fd66eba40da01b/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b", size = 2180306, upload-time = "2026-05-06T13:40:10.666Z" },
|
|
779
|
+
{ url = "https://files.pythonhosted.org/packages/ae/6c/fc44000918855b42779d007ae63b0532794739027b2f417321cddbc44f6a/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458", size = 2190044, upload-time = "2026-05-06T13:40:43.231Z" },
|
|
780
|
+
{ url = "https://files.pythonhosted.org/packages/6b/65/d9cadc9f1920d7a127ad2edba16c1db7916e59719285cd6c94600b0080ba/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b", size = 2329133, upload-time = "2026-05-06T13:39:57.365Z" },
|
|
781
|
+
{ url = "https://files.pythonhosted.org/packages/d0/cf/c873d91679f3a30bcf5e7ac280ce5573483e72295307685120d0d5ad3416/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c", size = 2374464, upload-time = "2026-05-06T13:38:06.976Z" },
|
|
782
|
+
{ url = "https://files.pythonhosted.org/packages/47/bd/6f2fc8188f31bf10590f1e98e7b306336161fac930a8c514cd7bd828c7dc/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894", size = 1974823, upload-time = "2026-05-06T13:40:47.985Z" },
|
|
783
|
+
{ url = "https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89", size = 2072919, upload-time = "2026-05-06T13:39:21.153Z" },
|
|
784
|
+
{ url = "https://files.pythonhosted.org/packages/c4/ba/f463d006e0c47373ca7ec5e1a261c59dc01ef4d62b2657af925fb0deee3a/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a", size = 2027604, upload-time = "2026-05-06T13:39:03.753Z" },
|
|
785
|
+
{ url = "https://files.pythonhosted.org/packages/51/a2/5d30b469c5267a17b39dec53208222f76a8d351dfac4af661888c5aee77d/pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008", size = 2106306, upload-time = "2026-05-06T13:37:48.029Z" },
|
|
786
|
+
{ url = "https://files.pythonhosted.org/packages/c1/81/4fa520eaffa8bd7d1525e644cd6d39e7d60b1592bc5b516693c7340b50f1/pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4", size = 1951906, upload-time = "2026-05-06T13:37:17.012Z" },
|
|
787
|
+
{ url = "https://files.pythonhosted.org/packages/03/d5/fd02da45b659668b05923b17ba3a0100a0a3d5541e3bd8fcc4ecb711309e/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76", size = 1976802, upload-time = "2026-05-06T13:37:35.113Z" },
|
|
788
|
+
{ url = "https://files.pythonhosted.org/packages/21/f2/95727e1368be3d3ed485eaab7adbd7dda408f33f7a36e8b48e0144002b91/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3", size = 2052446, upload-time = "2026-05-06T13:37:12.313Z" },
|
|
789
|
+
{ url = "https://files.pythonhosted.org/packages/9c/86/5d99feea3f77c7234b8718075b23db11532773c1a0dbd9b9490215dc2eeb/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76", size = 2232757, upload-time = "2026-05-06T13:39:01.149Z" },
|
|
790
|
+
{ url = "https://files.pythonhosted.org/packages/d2/3a/508ac615935ef7588cf6d9e9b91309fdc2da751af865e02a9098de88258c/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4", size = 2309275, upload-time = "2026-05-06T13:37:41.406Z" },
|
|
791
|
+
{ url = "https://files.pythonhosted.org/packages/07/f8/41db9de19d7987d6b04715a02b3b40aea467000275d9d758ffaa31af7d50/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a", size = 2094467, upload-time = "2026-05-06T13:39:18.847Z" },
|
|
792
|
+
{ url = "https://files.pythonhosted.org/packages/2c/e2/f35033184cb11d0052daf4416e8e10a502ea2ac006fc4f459aee872727d1/pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262", size = 2134417, upload-time = "2026-05-06T13:40:17.944Z" },
|
|
793
|
+
{ url = "https://files.pythonhosted.org/packages/7e/7b/6ceeb1cc90e193862f444ebe373d8fdf613f0a82572dde03fb10734c6c71/pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e", size = 2179782, upload-time = "2026-05-06T13:40:32.618Z" },
|
|
794
|
+
{ url = "https://files.pythonhosted.org/packages/5a/f2/c8d7773ede6af08036423a00ae0ceffce266c3c52a096c435d68c896083f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd", size = 2188782, upload-time = "2026-05-06T13:36:51.018Z" },
|
|
795
|
+
{ url = "https://files.pythonhosted.org/packages/59/31/0c864784e31f09f05cdd87606f08923b9c9e7f6e51dd27f20f62f975ce9f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be", size = 2328334, upload-time = "2026-05-06T13:40:37.764Z" },
|
|
796
|
+
{ url = "https://files.pythonhosted.org/packages/c2/eb/4f6c8a41efa30baa755590f4141abf3a8c370fab610915733e74134a7270/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d", size = 2372986, upload-time = "2026-05-06T13:39:34.152Z" },
|
|
797
|
+
{ url = "https://files.pythonhosted.org/packages/5b/24/b375a480d53113860c299764bfe9f349a3dc9108b3adc0d7f0d786492ebf/pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb", size = 1973693, upload-time = "2026-05-06T13:37:55.072Z" },
|
|
798
|
+
{ url = "https://files.pythonhosted.org/packages/7e/e8/cff247591966f2d22ec8c003cd7587e27b7ba7b81ab2fb888e3ab75dc285/pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292", size = 2071819, upload-time = "2026-05-06T13:38:49.139Z" },
|
|
799
|
+
{ url = "https://files.pythonhosted.org/packages/c6/1a/f4aee670d5670e9e148e0c82c7db98d780be566c6e6a97ee8035528ca0b3/pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d", size = 2027411, upload-time = "2026-05-06T13:40:45.796Z" },
|
|
800
|
+
{ url = "https://files.pythonhosted.org/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb", size = 2102079, upload-time = "2026-05-06T13:38:41.019Z" },
|
|
801
|
+
{ url = "https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462", size = 1952179, upload-time = "2026-05-06T13:36:59.812Z" },
|
|
802
|
+
{ url = "https://files.pythonhosted.org/packages/95/30/5211a831ae054928054b2f79731661087a2bc5c01e825c672b3a4a8f1b3e/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9", size = 1978926, upload-time = "2026-05-06T13:37:39.933Z" },
|
|
803
|
+
{ url = "https://files.pythonhosted.org/packages/57/e9/689668733b1eb67adeef047db3c2e8788fcf65a7fd9c9e2b46b7744fe245/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4", size = 2046785, upload-time = "2026-05-06T13:38:01.995Z" },
|
|
804
|
+
{ url = "https://files.pythonhosted.org/packages/60/d9/6715260422ff50a2109878fd24d948a6c3446bb2664f34ee78cd972b3acd/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914", size = 2228733, upload-time = "2026-05-06T13:40:50.371Z" },
|
|
805
|
+
{ url = "https://files.pythonhosted.org/packages/18/ae/fdb2f64316afca925640f8e70bb1a564b0ec2721c1389e25b8eb4bf9a299/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28", size = 2307534, upload-time = "2026-05-06T13:37:21.531Z" },
|
|
806
|
+
{ url = "https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b", size = 2099732, upload-time = "2026-05-06T13:39:31.942Z" },
|
|
807
|
+
{ url = "https://files.pythonhosted.org/packages/06/d5/ee5a3366637fee41dee51a1fc91562dcf12ddbc68fda34e6b253da2324bb/pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c", size = 2129627, upload-time = "2026-05-06T13:37:25.033Z" },
|
|
808
|
+
{ url = "https://files.pythonhosted.org/packages/94/33/2414be571d2c6a6c4d08be21f9292b6d3fdb08949a97b6dfe985017821db/pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb", size = 2179141, upload-time = "2026-05-06T13:37:14.046Z" },
|
|
809
|
+
{ url = "https://files.pythonhosted.org/packages/7b/79/7daa95be995be0eecc4cf75064cb33f9bbbfe3fe0158caf2f0d4a996a5c7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898", size = 2184325, upload-time = "2026-05-06T13:36:53.615Z" },
|
|
810
|
+
{ url = "https://files.pythonhosted.org/packages/9f/cb/d0a382f5c0de8a222dc61c65348e0ce831b1f68e0a018450d31c2cace3a5/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e", size = 2323990, upload-time = "2026-05-06T13:40:29.971Z" },
|
|
811
|
+
{ url = "https://files.pythonhosted.org/packages/05/db/d9ba624cc4a5aced1598e88c04fdbd8310c8a69b9d38b9a3d39ce3a61ed7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519", size = 2369978, upload-time = "2026-05-06T13:37:23.027Z" },
|
|
812
|
+
{ url = "https://files.pythonhosted.org/packages/f2/20/d15df15ba918c423461905802bfd2981c3af0bfa0e40d05e13edbfa48bc3/pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4", size = 1966354, upload-time = "2026-05-06T13:38:03.499Z" },
|
|
813
|
+
{ url = "https://files.pythonhosted.org/packages/fc/b6/6b8de4c0a7d7ab3004c439c80c5c1e0a3e8d78bbae19379b01960383d9e5/pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac", size = 2072238, upload-time = "2026-05-06T13:39:40.807Z" },
|
|
814
|
+
{ url = "https://files.pythonhosted.org/packages/32/36/51eb763beec1f4cf59b1db243a7dcc39cbb41230f050a09b9d69faaf0a48/pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a", size = 2018251, upload-time = "2026-05-06T13:37:26.72Z" },
|
|
815
|
+
{ url = "https://files.pythonhosted.org/packages/e8/91/855af51d625b23aa987116a19e231d2aaef9c4a415273ddc189b79a45fee/pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0", size = 2099593, upload-time = "2026-05-06T13:39:47.682Z" },
|
|
816
|
+
{ url = "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d", size = 1935226, upload-time = "2026-05-06T13:40:40.428Z" },
|
|
817
|
+
{ url = "https://files.pythonhosted.org/packages/e8/e7/1955d28d1afc56dd4b3ad7cc0cf39df1b9852964cf16e5d13912756d6d6b/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b", size = 1974605, upload-time = "2026-05-06T13:37:32.029Z" },
|
|
818
|
+
{ url = "https://files.pythonhosted.org/packages/93/e2/3fedbf0ba7a22850e6e9fd78117f1c0f10f950182344d8a6c535d468fdd8/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000", size = 2030777, upload-time = "2026-05-06T13:38:55.239Z" },
|
|
819
|
+
{ url = "https://files.pythonhosted.org/packages/f8/61/46be275fcaaba0b4f5b9669dd852267ce1ff616592dccf7a7845588df091/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e", size = 2236641, upload-time = "2026-05-06T13:37:08.096Z" },
|
|
820
|
+
{ url = "https://files.pythonhosted.org/packages/60/db/12e93e46a8bac9988be3c016860f83293daea8c716c029c9ace279036f2f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd", size = 2286404, upload-time = "2026-05-06T13:40:20.221Z" },
|
|
821
|
+
{ url = "https://files.pythonhosted.org/packages/e2/4a/4d8b19008f38d31c53b8219cfedc2e3d5de5fe99d90076b7e767de29274f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3", size = 2109219, upload-time = "2026-05-06T13:38:12.153Z" },
|
|
822
|
+
{ url = "https://files.pythonhosted.org/packages/88/70/3cbc40978fefb7bb09c6708d40d4ad1a5d70fd7213c3d17f971de868ec1f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7", size = 2110594, upload-time = "2026-05-06T13:40:02.971Z" },
|
|
823
|
+
{ url = "https://files.pythonhosted.org/packages/9d/20/b8d36736216e29491125531685b2f9e61aa5b4b2599893f8268551da3338/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff", size = 2159542, upload-time = "2026-05-06T13:39:27.506Z" },
|
|
824
|
+
{ url = "https://files.pythonhosted.org/packages/1d/a2/367df868eb584dacf6bf82a389272406d7178e301c4ac82545ab98bc2dd9/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424", size = 2168146, upload-time = "2026-05-06T13:38:31.93Z" },
|
|
825
|
+
{ url = "https://files.pythonhosted.org/packages/c1/b8/4460f77f7e201893f649a29ab355dddd3beee8a97bcb1a320db414f9a06e/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6", size = 2306309, upload-time = "2026-05-06T13:37:44.717Z" },
|
|
826
|
+
{ url = "https://files.pythonhosted.org/packages/64/c4/be2639293acd87dc8ddbcec41a73cee9b2ebf996fe6d892a1a74e88ad3f7/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565", size = 2369736, upload-time = "2026-05-06T13:37:05.645Z" },
|
|
827
|
+
{ url = "https://files.pythonhosted.org/packages/30/a6/9f9f380dbb301f67023bf8f707aaa75daadf84f7152d95c410fd7e81d994/pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02", size = 1955575, upload-time = "2026-05-06T13:38:51.116Z" },
|
|
828
|
+
{ url = "https://files.pythonhosted.org/packages/40/1f/f1eb9eb350e795d1af8586289746f5c5677d16043040d63710e22abc43c9/pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5", size = 2051624, upload-time = "2026-05-06T13:38:21.672Z" },
|
|
829
|
+
{ url = "https://files.pythonhosted.org/packages/f6/d2/42dd53d0a85c27606f316d3aa5d2869c4e8470a5ed6dec30e4a1abe19192/pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596", size = 2017325, upload-time = "2026-05-06T13:40:52.723Z" },
|
|
830
|
+
{ url = "https://files.pythonhosted.org/packages/9d/1d/8987ad40f65ae1432753072f214fb5c74fe47ffbd0698bb9cbbb585664f8/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7", size = 2095527, upload-time = "2026-05-06T13:39:52.283Z" },
|
|
831
|
+
{ url = "https://files.pythonhosted.org/packages/64/d3/84c282a7eee1d3ac4c0377546ef5a1ea436ce26840d9ac3b7ed54a377507/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df", size = 1936024, upload-time = "2026-05-06T13:40:15.671Z" },
|
|
832
|
+
{ url = "https://files.pythonhosted.org/packages/d7/ca/eac61596cdeb4d7e174d3dc0bd8a6238f14f75f97a24e7b7db4c7e7340a0/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526", size = 1990696, upload-time = "2026-05-06T13:38:34.717Z" },
|
|
833
|
+
{ url = "https://files.pythonhosted.org/packages/fa/c3/7c8b240552251faf6b3a957db200fcfbbcec36763c050428b601e0c9b83b/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0", size = 2147590, upload-time = "2026-05-06T13:39:29.883Z" },
|
|
834
|
+
]
|
|
835
|
+
|
|
718
836
|
[[package]]
|
|
719
837
|
name = "pydantic-settings"
|
|
720
838
|
version = "2.10.1"
|
|
721
839
|
source = { registry = "https://pypi.org/simple" }
|
|
722
840
|
dependencies = [
|
|
723
|
-
{ name = "pydantic" },
|
|
841
|
+
{ name = "pydantic", version = "2.11.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" },
|
|
842
|
+
{ name = "pydantic", version = "2.13.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14'" },
|
|
724
843
|
{ name = "python-dotenv" },
|
|
725
|
-
{ name = "typing-inspection" },
|
|
844
|
+
{ name = "typing-inspection", version = "0.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" },
|
|
845
|
+
{ name = "typing-inspection", version = "0.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14'" },
|
|
726
846
|
]
|
|
727
847
|
sdist = { url = "https://files.pythonhosted.org/packages/68/85/1ea668bbab3c50071ca613c6ab30047fb36ab0da1b92fa8f17bbc38fd36c/pydantic_settings-2.10.1.tar.gz", hash = "sha256:06f0062169818d0f5524420a360d632d5857b83cffd4d42fe29597807a1614ee", size = 172583, upload-time = "2025-06-24T13:26:46.841Z" }
|
|
728
848
|
wheels = [
|
|
@@ -1042,6 +1162,10 @@ wheels = [
|
|
|
1042
1162
|
name = "typing-inspection"
|
|
1043
1163
|
version = "0.4.1"
|
|
1044
1164
|
source = { registry = "https://pypi.org/simple" }
|
|
1165
|
+
resolution-markers = [
|
|
1166
|
+
"python_full_version < '3.14' and sys_platform == 'win32'",
|
|
1167
|
+
"python_full_version < '3.14' and sys_platform != 'win32'",
|
|
1168
|
+
]
|
|
1045
1169
|
dependencies = [
|
|
1046
1170
|
{ name = "typing-extensions" },
|
|
1047
1171
|
]
|
|
@@ -1050,6 +1174,22 @@ wheels = [
|
|
|
1050
1174
|
{ url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" },
|
|
1051
1175
|
]
|
|
1052
1176
|
|
|
1177
|
+
[[package]]
|
|
1178
|
+
name = "typing-inspection"
|
|
1179
|
+
version = "0.4.2"
|
|
1180
|
+
source = { registry = "https://pypi.org/simple" }
|
|
1181
|
+
resolution-markers = [
|
|
1182
|
+
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
|
1183
|
+
"python_full_version >= '3.14' and sys_platform != 'win32'",
|
|
1184
|
+
]
|
|
1185
|
+
dependencies = [
|
|
1186
|
+
{ name = "typing-extensions" },
|
|
1187
|
+
]
|
|
1188
|
+
sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" }
|
|
1189
|
+
wheels = [
|
|
1190
|
+
{ url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" },
|
|
1191
|
+
]
|
|
1192
|
+
|
|
1053
1193
|
[[package]]
|
|
1054
1194
|
name = "uncalled-for"
|
|
1055
1195
|
version = "0.2.0"
|