@agentuity/cli 0.0.100 → 0.0.102
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/AGENTS.md +19 -188
- package/bin/cli.ts +13 -6
- package/dist/api.d.ts +1 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +1 -1
- package/dist/api.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +41 -12
- package/dist/cli.js.map +1 -1
- package/dist/cmd/ai/index.d.ts.map +1 -1
- package/dist/cmd/ai/index.js +6 -1
- package/dist/cmd/ai/index.js.map +1 -1
- package/dist/cmd/ai/prompt/agent.d.ts +7 -0
- package/dist/cmd/ai/prompt/agent.d.ts.map +1 -1
- package/dist/cmd/ai/prompt/agent.js +12 -323
- package/dist/cmd/ai/prompt/agent.js.map +1 -1
- package/dist/cmd/ai/prompt/api.d.ts +7 -0
- package/dist/cmd/ai/prompt/api.d.ts.map +1 -1
- package/dist/cmd/ai/prompt/api.js +12 -260
- package/dist/cmd/ai/prompt/api.js.map +1 -1
- package/dist/cmd/ai/prompt/version.d.ts +35 -0
- package/dist/cmd/ai/prompt/version.d.ts.map +1 -0
- package/dist/cmd/ai/prompt/version.js +55 -0
- package/dist/cmd/ai/prompt/version.js.map +1 -0
- package/dist/cmd/ai/prompt/web.d.ts +7 -0
- package/dist/cmd/ai/prompt/web.d.ts.map +1 -1
- package/dist/cmd/ai/prompt/web.js +12 -283
- package/dist/cmd/ai/prompt/web.js.map +1 -1
- package/dist/cmd/ai/skills/generate.d.ts +3 -0
- package/dist/cmd/ai/skills/generate.d.ts.map +1 -0
- package/dist/cmd/ai/skills/generate.js +65 -0
- package/dist/cmd/ai/skills/generate.js.map +1 -0
- package/dist/cmd/ai/skills/generator.d.ts +4 -0
- package/dist/cmd/ai/skills/generator.d.ts.map +1 -0
- package/dist/cmd/ai/skills/generator.js +402 -0
- package/dist/cmd/ai/skills/generator.js.map +1 -0
- package/dist/cmd/ai/skills/index.d.ts +4 -0
- package/dist/cmd/ai/skills/index.d.ts.map +1 -0
- package/dist/cmd/ai/skills/index.js +21 -0
- package/dist/cmd/ai/skills/index.js.map +1 -0
- package/dist/cmd/auth/signup.d.ts.map +1 -1
- package/dist/cmd/auth/signup.js +1 -0
- package/dist/cmd/auth/signup.js.map +1 -1
- package/dist/cmd/build/ast.d.ts +2 -1
- package/dist/cmd/build/ast.d.ts.map +1 -1
- package/dist/cmd/build/ast.js +135 -47
- package/dist/cmd/build/ast.js.map +1 -1
- package/dist/cmd/build/entry-generator.d.ts.map +1 -1
- package/dist/cmd/build/entry-generator.js +255 -188
- package/dist/cmd/build/entry-generator.js.map +1 -1
- package/dist/cmd/build/vite/agent-discovery.d.ts.map +1 -1
- package/dist/cmd/build/vite/agent-discovery.js +103 -45
- package/dist/cmd/build/vite/agent-discovery.js.map +1 -1
- package/dist/cmd/build/vite/bun-dev-server.d.ts +7 -1
- package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -1
- package/dist/cmd/build/vite/bun-dev-server.js +52 -26
- package/dist/cmd/build/vite/bun-dev-server.js.map +1 -1
- package/dist/cmd/build/vite/docs-generator.d.ts +13 -0
- package/dist/cmd/build/vite/docs-generator.d.ts.map +1 -0
- package/dist/cmd/build/vite/docs-generator.js +81 -0
- package/dist/cmd/build/vite/docs-generator.js.map +1 -0
- package/dist/cmd/build/vite/index.d.ts +3 -3
- package/dist/cmd/build/vite/index.d.ts.map +1 -1
- package/dist/cmd/build/vite/index.js +9 -7
- package/dist/cmd/build/vite/index.js.map +1 -1
- package/dist/cmd/build/vite/lifecycle-generator.d.ts +1 -1
- package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/lifecycle-generator.js +19 -5
- package/dist/cmd/build/vite/lifecycle-generator.js.map +1 -1
- package/dist/cmd/build/vite/metadata-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/metadata-generator.js +203 -7
- package/dist/cmd/build/vite/metadata-generator.js.map +1 -1
- package/dist/cmd/build/vite/prompt-generator.d.ts +23 -0
- package/dist/cmd/build/vite/prompt-generator.d.ts.map +1 -0
- package/dist/cmd/build/vite/prompt-generator.js +123 -0
- package/dist/cmd/build/vite/prompt-generator.js.map +1 -0
- package/dist/cmd/build/vite/registry-generator.d.ts +3 -3
- package/dist/cmd/build/vite/registry-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/registry-generator.js +644 -103
- package/dist/cmd/build/vite/registry-generator.js.map +1 -1
- package/dist/cmd/build/vite/route-discovery.d.ts +4 -0
- package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -1
- package/dist/cmd/build/vite/route-discovery.js.map +1 -1
- package/dist/cmd/build/vite/server-bundler.d.ts +4 -0
- package/dist/cmd/build/vite/server-bundler.d.ts.map +1 -1
- package/dist/cmd/build/vite/server-bundler.js +63 -17
- package/dist/cmd/build/vite/server-bundler.js.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.js +4 -0
- package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
- package/dist/cmd/build/vite/vite-builder.d.ts +1 -1
- package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-builder.js +118 -96
- package/dist/cmd/build/vite/vite-builder.js.map +1 -1
- package/dist/cmd/build/vite-bundler.js +6 -6
- package/dist/cmd/build/vite-bundler.js.map +1 -1
- package/dist/cmd/cloud/deploy.d.ts.map +1 -1
- package/dist/cmd/cloud/deploy.js +89 -32
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/create-namespace.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/create-namespace.js +3 -1
- package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.js +3 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete.js +3 -1
- package/dist/cmd/cloud/keyvalue/delete.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/set.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/set.js +4 -2
- package/dist/cmd/cloud/keyvalue/set.js.map +1 -1
- package/dist/cmd/cloud/stream/get.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/get.js +2 -13
- package/dist/cmd/cloud/stream/get.js.map +1 -1
- package/dist/cmd/cloud/vector/delete-namespace.d.ts +3 -0
- package/dist/cmd/cloud/vector/delete-namespace.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/delete-namespace.js +77 -0
- package/dist/cmd/cloud/vector/delete-namespace.js.map +1 -0
- package/dist/cmd/cloud/vector/index.d.ts.map +1 -1
- package/dist/cmd/cloud/vector/index.js +21 -4
- package/dist/cmd/cloud/vector/index.js.map +1 -1
- package/dist/cmd/cloud/vector/list-namespaces.d.ts +3 -0
- package/dist/cmd/cloud/vector/list-namespaces.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/list-namespaces.js +42 -0
- package/dist/cmd/cloud/vector/list-namespaces.js.map +1 -0
- package/dist/cmd/cloud/vector/stats.d.ts +3 -0
- package/dist/cmd/cloud/vector/stats.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/stats.js +142 -0
- package/dist/cmd/cloud/vector/stats.js.map +1 -0
- package/dist/cmd/cloud/vector/upsert.d.ts +3 -0
- package/dist/cmd/cloud/vector/upsert.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/upsert.js +192 -0
- package/dist/cmd/cloud/vector/upsert.js.map +1 -0
- package/dist/cmd/dev/file-watcher.d.ts.map +1 -1
- package/dist/cmd/dev/file-watcher.js +94 -33
- package/dist/cmd/dev/file-watcher.js.map +1 -1
- package/dist/cmd/dev/index.d.ts.map +1 -1
- package/dist/cmd/dev/index.js +298 -61
- package/dist/cmd/dev/index.js.map +1 -1
- package/dist/cmd/dev/skills.d.ts +10 -0
- package/dist/cmd/dev/skills.d.ts.map +1 -0
- package/dist/cmd/dev/skills.js +57 -0
- package/dist/cmd/dev/skills.js.map +1 -0
- package/dist/cmd/dev/sync.d.ts.map +1 -1
- package/dist/cmd/dev/sync.js +19 -3
- package/dist/cmd/dev/sync.js.map +1 -1
- package/dist/cmd/index.d.ts.map +1 -1
- package/dist/cmd/index.js +1 -0
- package/dist/cmd/index.js.map +1 -1
- package/dist/cmd/project/create.d.ts.map +1 -1
- package/dist/cmd/project/create.js +3 -0
- package/dist/cmd/project/create.js.map +1 -1
- package/dist/cmd/project/template-flow.d.ts +1 -0
- package/dist/cmd/project/template-flow.d.ts.map +1 -1
- package/dist/cmd/project/template-flow.js +30 -5
- package/dist/cmd/project/template-flow.js.map +1 -1
- package/dist/cmd/setup/index.d.ts.map +1 -1
- package/dist/cmd/setup/index.js +1 -0
- package/dist/cmd/setup/index.js.map +1 -1
- package/dist/cmd/upgrade/index.d.ts +15 -0
- package/dist/cmd/upgrade/index.d.ts.map +1 -1
- package/dist/cmd/upgrade/index.js +59 -4
- package/dist/cmd/upgrade/index.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -0
- package/dist/config.js.map +1 -1
- package/dist/domain.d.ts +45 -0
- package/dist/domain.d.ts.map +1 -0
- package/dist/domain.js +200 -0
- package/dist/domain.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/schema-generator.d.ts +2 -0
- package/dist/schema-generator.d.ts.map +1 -1
- package/dist/schema-generator.js +18 -0
- package/dist/schema-generator.js.map +1 -1
- package/dist/steps.d.ts +1 -1
- package/dist/steps.d.ts.map +1 -1
- package/dist/steps.js +16 -5
- package/dist/steps.js.map +1 -1
- package/dist/tui/prompt.d.ts +1 -2
- package/dist/tui/prompt.d.ts.map +1 -1
- package/dist/tui/prompt.js +8 -4
- package/dist/tui/prompt.js.map +1 -1
- package/dist/tui.d.ts +16 -0
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +23 -2
- package/dist/tui.js.map +1 -1
- package/dist/types.d.ts +9 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -3
- package/dist/types.js.map +1 -1
- package/package.json +5 -8
- package/src/api.ts +1 -1
- package/src/cli.ts +47 -12
- package/src/cmd/ai/index.ts +6 -1
- package/src/cmd/ai/prompt/agent.md +306 -0
- package/src/cmd/ai/prompt/agent.ts +12 -322
- package/src/cmd/ai/prompt/api.md +360 -0
- package/src/cmd/ai/prompt/api.ts +13 -260
- package/src/cmd/ai/prompt/version.ts +61 -0
- package/src/cmd/ai/prompt/web.md +509 -0
- package/src/cmd/ai/prompt/web.ts +12 -282
- package/src/cmd/ai/skills/generate.ts +75 -0
- package/src/cmd/ai/skills/generator.ts +519 -0
- package/src/cmd/ai/skills/index.ts +23 -0
- package/src/cmd/auth/signup.ts +1 -0
- package/src/cmd/build/ast.ts +161 -48
- package/src/cmd/build/entry-generator.ts +258 -187
- package/src/cmd/build/vite/agent-discovery.ts +151 -58
- package/src/cmd/build/vite/bun-dev-server.ts +57 -27
- package/src/cmd/build/vite/docs-generator.ts +87 -0
- package/src/cmd/build/vite/index.ts +9 -7
- package/src/cmd/build/vite/lifecycle-generator.ts +19 -5
- package/src/cmd/build/vite/metadata-generator.ts +251 -7
- package/src/cmd/build/vite/prompt-generator.ts +169 -0
- package/src/cmd/build/vite/registry-generator.ts +750 -108
- package/src/cmd/build/vite/route-discovery.ts +4 -0
- package/src/cmd/build/vite/server-bundler.ts +73 -23
- package/src/cmd/build/vite/vite-asset-server-config.ts +5 -0
- package/src/cmd/build/vite/vite-builder.ts +134 -100
- package/src/cmd/build/vite-bundler.ts +6 -6
- package/src/cmd/cloud/deploy.ts +114 -36
- package/src/cmd/cloud/keyvalue/create-namespace.ts +3 -1
- package/src/cmd/cloud/keyvalue/delete-namespace.ts +3 -1
- package/src/cmd/cloud/keyvalue/delete.ts +3 -1
- package/src/cmd/cloud/keyvalue/set.ts +4 -2
- package/src/cmd/cloud/stream/get.ts +2 -9
- package/src/cmd/cloud/vector/delete-namespace.ts +89 -0
- package/src/cmd/cloud/vector/index.ts +21 -4
- package/src/cmd/cloud/vector/list-namespaces.ts +46 -0
- package/src/cmd/cloud/vector/stats.ts +160 -0
- package/src/cmd/cloud/vector/upsert.ts +216 -0
- package/src/cmd/dev/file-watcher.ts +109 -34
- package/src/cmd/dev/index.ts +364 -60
- package/src/cmd/dev/skills.ts +82 -0
- package/src/cmd/dev/sync.ts +41 -6
- package/src/cmd/index.ts +1 -0
- package/src/cmd/project/create.ts +3 -0
- package/src/cmd/project/template-flow.ts +37 -5
- package/src/cmd/setup/index.ts +1 -0
- package/src/cmd/upgrade/index.ts +68 -4
- package/src/config.ts +9 -0
- package/src/domain.ts +273 -0
- package/src/index.ts +0 -5
- package/src/runtime-bootstrap.md +1 -1
- package/src/schema-generator.ts +23 -0
- package/src/steps.ts +16 -5
- package/src/tui/prompt.ts +11 -5
- package/src/tui.ts +21 -2
- package/src/types/md.d.ts +8 -0
- package/src/types.ts +12 -3
- package/dist/cmd/cloud/domain.d.ts +0 -17
- package/dist/cmd/cloud/domain.d.ts.map +0 -1
- package/dist/cmd/cloud/domain.js +0 -79
- package/dist/cmd/cloud/domain.js.map +0 -1
- package/dist/runtime-bootstrap.d.ts +0 -56
- package/dist/runtime-bootstrap.d.ts.map +0 -1
- package/dist/runtime-bootstrap.js +0 -95
- package/dist/runtime-bootstrap.js.map +0 -1
- package/src/cmd/cloud/domain.ts +0 -100
- package/src/runtime-bootstrap.ts +0 -131
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createCommand } from '../../../types';
|
|
3
|
+
import * as tui from '../../../tui';
|
|
4
|
+
import { createStorageAdapter } from './util';
|
|
5
|
+
import { getCommand } from '../../../command-prefix';
|
|
6
|
+
const VectorItemStatsSchema = z.object({
|
|
7
|
+
embedding: z.array(z.number()).optional().describe('The embedding vector'),
|
|
8
|
+
document: z.string().optional().describe('Original document text'),
|
|
9
|
+
size: z.number().describe('Size in bytes'),
|
|
10
|
+
metadata: z.record(z.string(), z.unknown()).optional().describe('Metadata'),
|
|
11
|
+
firstUsed: z.number().describe('First access timestamp (ms)'),
|
|
12
|
+
lastUsed: z.number().describe('Last access timestamp (ms)'),
|
|
13
|
+
count: z.number().optional().describe('Access count (only available in cloud storage)'),
|
|
14
|
+
});
|
|
15
|
+
const VectorNamespaceStatsSchema = z.object({
|
|
16
|
+
sum: z.number().describe('Total size in bytes'),
|
|
17
|
+
count: z.number().describe('Number of vectors'),
|
|
18
|
+
createdAt: z.number().optional().describe('Creation timestamp (ms)'),
|
|
19
|
+
lastUsed: z.number().optional().describe('Last used timestamp (ms)'),
|
|
20
|
+
});
|
|
21
|
+
const VectorStatsResponseSchema = z.union([
|
|
22
|
+
VectorNamespaceStatsSchema.extend({
|
|
23
|
+
namespace: z.string().describe('Namespace name'),
|
|
24
|
+
sampledResults: z.record(z.string(), VectorItemStatsSchema).optional(),
|
|
25
|
+
}),
|
|
26
|
+
z.record(z.string(), VectorNamespaceStatsSchema),
|
|
27
|
+
]);
|
|
28
|
+
export const statsSubcommand = createCommand({
|
|
29
|
+
name: 'stats',
|
|
30
|
+
description: 'Get statistics for vector storage',
|
|
31
|
+
tags: ['read-only', 'fast', 'requires-auth'],
|
|
32
|
+
requires: { auth: true, project: true },
|
|
33
|
+
idempotent: true,
|
|
34
|
+
examples: [
|
|
35
|
+
{ command: getCommand('vector stats'), description: 'Show stats for all namespaces' },
|
|
36
|
+
{
|
|
37
|
+
command: getCommand('vector stats products'),
|
|
38
|
+
description: 'Show detailed stats for products namespace',
|
|
39
|
+
},
|
|
40
|
+
{ command: getCommand('vector stats embeddings'), description: 'Show stats for embeddings' },
|
|
41
|
+
],
|
|
42
|
+
schema: {
|
|
43
|
+
args: z.object({
|
|
44
|
+
name: z.string().optional().describe('the vector namespace (optional)'),
|
|
45
|
+
}),
|
|
46
|
+
response: VectorStatsResponseSchema,
|
|
47
|
+
},
|
|
48
|
+
webUrl: (ctx) => ctx.args.name ? `/services/vector/${encodeURIComponent(ctx.args.name)}` : '/services/vector',
|
|
49
|
+
async handler(ctx) {
|
|
50
|
+
const { args, options } = ctx;
|
|
51
|
+
const storage = await createStorageAdapter(ctx);
|
|
52
|
+
if (args.name) {
|
|
53
|
+
const stats = await storage.getStats(args.name);
|
|
54
|
+
if (!options.json) {
|
|
55
|
+
if (stats.count === 0 && stats.sum === 0) {
|
|
56
|
+
tui.info(`Namespace ${tui.bold(args.name)} is empty or does not exist`);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
tui.info(`Statistics for ${tui.bold(args.name)}:`);
|
|
60
|
+
tui.info(` Vectors: ${stats.count}`);
|
|
61
|
+
const sizeDisplay = stats.sum < 1024 * 1024
|
|
62
|
+
? `${stats.sum.toLocaleString()} bytes`
|
|
63
|
+
: `${(stats.sum / (1024 * 1024)).toFixed(2)} MB`;
|
|
64
|
+
tui.info(` Total size: ${sizeDisplay}`);
|
|
65
|
+
if (stats.createdAt) {
|
|
66
|
+
tui.info(` Created: ${new Date(stats.createdAt).toLocaleString()}`);
|
|
67
|
+
}
|
|
68
|
+
if (stats.lastUsed) {
|
|
69
|
+
tui.info(` Last used: ${new Date(stats.lastUsed).toLocaleString()}`);
|
|
70
|
+
}
|
|
71
|
+
if (stats.sampledResults && Object.keys(stats.sampledResults).length > 0) {
|
|
72
|
+
tui.info('');
|
|
73
|
+
tui.info(` Sample vectors (${Object.keys(stats.sampledResults).length}):`);
|
|
74
|
+
const tableData = Object.entries(stats.sampledResults).map(([key, item]) => {
|
|
75
|
+
const docPreview = item.document
|
|
76
|
+
? item.document.length > 30
|
|
77
|
+
? item.document.substring(0, 27) + '...'
|
|
78
|
+
: item.document
|
|
79
|
+
: '-';
|
|
80
|
+
return {
|
|
81
|
+
Key: key,
|
|
82
|
+
Size: `${item.size} bytes`,
|
|
83
|
+
Accesses: item.count ?? '-',
|
|
84
|
+
'Last Used': new Date(item.lastUsed).toLocaleDateString(),
|
|
85
|
+
Document: docPreview,
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
tui.table(tableData, [
|
|
89
|
+
{ name: 'Key', alignment: 'left' },
|
|
90
|
+
{ name: 'Size', alignment: 'right' },
|
|
91
|
+
{ name: 'Accesses', alignment: 'right' },
|
|
92
|
+
{ name: 'Last Used', alignment: 'left' },
|
|
93
|
+
{ name: 'Document', alignment: 'left' },
|
|
94
|
+
]);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
namespace: args.name,
|
|
100
|
+
...stats,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
const allStats = await storage.getAllStats();
|
|
105
|
+
const entries = Object.entries(allStats);
|
|
106
|
+
if (!options.json) {
|
|
107
|
+
if (entries.length === 0) {
|
|
108
|
+
tui.info('No vector namespaces found');
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
tui.info(`Found ${entries.length} ${tui.plural(entries.length, 'namespace', 'namespaces')}:`);
|
|
112
|
+
const tableData = entries.map(([name, stats]) => {
|
|
113
|
+
const sizeDisplay = stats.sum < 1024 * 1024
|
|
114
|
+
? `${stats.sum.toLocaleString()} bytes`
|
|
115
|
+
: `${(stats.sum / (1024 * 1024)).toFixed(2)} MB`;
|
|
116
|
+
return {
|
|
117
|
+
Namespace: name,
|
|
118
|
+
Vectors: stats.count,
|
|
119
|
+
Size: sizeDisplay,
|
|
120
|
+
Created: stats.createdAt
|
|
121
|
+
? new Date(stats.createdAt).toLocaleDateString()
|
|
122
|
+
: '-',
|
|
123
|
+
'Last Used': stats.lastUsed
|
|
124
|
+
? new Date(stats.lastUsed).toLocaleDateString()
|
|
125
|
+
: '-',
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
tui.table(tableData, [
|
|
129
|
+
{ name: 'Namespace', alignment: 'left' },
|
|
130
|
+
{ name: 'Vectors', alignment: 'right' },
|
|
131
|
+
{ name: 'Size', alignment: 'right' },
|
|
132
|
+
{ name: 'Created', alignment: 'left' },
|
|
133
|
+
{ name: 'Last Used', alignment: 'left' },
|
|
134
|
+
]);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return allStats;
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
export default statsSubcommand;
|
|
142
|
+
//# sourceMappingURL=stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/vector/stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upsert.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/vector/upsert.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,gBAAgB,sCA+L3B,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createCommand } from '../../../types';
|
|
3
|
+
import * as tui from '../../../tui';
|
|
4
|
+
import { createStorageAdapter } from './util';
|
|
5
|
+
import { getCommand } from '../../../command-prefix';
|
|
6
|
+
const VectorUpsertResponseSchema = z.object({
|
|
7
|
+
success: z.boolean().describe('Whether the operation succeeded'),
|
|
8
|
+
namespace: z.string().describe('Namespace name'),
|
|
9
|
+
count: z.number().describe('Number of vectors upserted'),
|
|
10
|
+
results: z
|
|
11
|
+
.array(z.object({
|
|
12
|
+
key: z.string().describe('Vector key'),
|
|
13
|
+
id: z.string().describe('Vector ID'),
|
|
14
|
+
}))
|
|
15
|
+
.describe('Upsert results with key-to-id mappings'),
|
|
16
|
+
durationMs: z.number().describe('Operation duration in milliseconds'),
|
|
17
|
+
});
|
|
18
|
+
export const upsertSubcommand = createCommand({
|
|
19
|
+
name: 'upsert',
|
|
20
|
+
aliases: ['put', 'add'],
|
|
21
|
+
description: 'Add or update vectors in the vector storage',
|
|
22
|
+
tags: ['mutating', 'updates-resource', 'slow', 'requires-auth'],
|
|
23
|
+
idempotent: true,
|
|
24
|
+
requires: { auth: true, project: true },
|
|
25
|
+
examples: [
|
|
26
|
+
{
|
|
27
|
+
command: getCommand('vector upsert products doc1 --document "Comfortable office chair"'),
|
|
28
|
+
description: 'Upsert a single vector with document text',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
command: getCommand('vector upsert products doc1 --document "Chair" --metadata \'{"category":"furniture"}\''),
|
|
32
|
+
description: 'Upsert with metadata',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
command: getCommand('vector upsert embeddings vec1 --embeddings "[0.1, 0.2, 0.3]"'),
|
|
36
|
+
description: 'Upsert with pre-computed embeddings',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
command: getCommand('vector upsert products --file vectors.json'),
|
|
40
|
+
description: 'Bulk upsert from JSON file',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
command: `cat vectors.json | ${getCommand('vector upsert products -')}`,
|
|
44
|
+
description: 'Bulk upsert from stdin',
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
schema: {
|
|
48
|
+
args: z.object({
|
|
49
|
+
namespace: z.string().min(1).describe('the vector storage namespace'),
|
|
50
|
+
key: z
|
|
51
|
+
.string()
|
|
52
|
+
.optional()
|
|
53
|
+
.describe('the key for single vector upsert (not used with --file or stdin)'),
|
|
54
|
+
}),
|
|
55
|
+
options: z.object({
|
|
56
|
+
document: z.string().optional().describe('document text to embed'),
|
|
57
|
+
embeddings: z.string().optional().describe('pre-computed embeddings as JSON array'),
|
|
58
|
+
metadata: z.string().optional().describe('metadata as JSON object'),
|
|
59
|
+
file: z
|
|
60
|
+
.string()
|
|
61
|
+
.optional()
|
|
62
|
+
.describe('path to JSON file containing vectors, or "-" for stdin'),
|
|
63
|
+
}),
|
|
64
|
+
response: VectorUpsertResponseSchema,
|
|
65
|
+
},
|
|
66
|
+
webUrl: (ctx) => `/services/vector/${encodeURIComponent(ctx.args.namespace)}`,
|
|
67
|
+
async handler(ctx) {
|
|
68
|
+
const { args, opts, options, logger } = ctx;
|
|
69
|
+
const storage = await createStorageAdapter(ctx);
|
|
70
|
+
let documents = [];
|
|
71
|
+
// Check if reading from file or stdin
|
|
72
|
+
const fileArg = opts.file || (args.key === '-' ? '-' : undefined);
|
|
73
|
+
if (fileArg) {
|
|
74
|
+
let content;
|
|
75
|
+
if (fileArg === '-') {
|
|
76
|
+
// Read from stdin
|
|
77
|
+
const chunks = [];
|
|
78
|
+
const reader = Bun.stdin.stream().getReader();
|
|
79
|
+
while (true) {
|
|
80
|
+
const { done, value } = await reader.read();
|
|
81
|
+
if (done)
|
|
82
|
+
break;
|
|
83
|
+
chunks.push(value);
|
|
84
|
+
}
|
|
85
|
+
const decoder = new TextDecoder();
|
|
86
|
+
content = chunks.map((chunk) => decoder.decode(chunk, { stream: true })).join('');
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
// Read from file
|
|
90
|
+
const file = Bun.file(fileArg);
|
|
91
|
+
if (!(await file.exists())) {
|
|
92
|
+
tui.fatal(`File not found: ${fileArg}`);
|
|
93
|
+
}
|
|
94
|
+
content = await file.text();
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
const parsed = JSON.parse(content.trim());
|
|
98
|
+
if (Array.isArray(parsed)) {
|
|
99
|
+
documents = parsed;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
documents = [parsed];
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
tui.fatal('Invalid JSON in input file/stdin');
|
|
107
|
+
}
|
|
108
|
+
// Validate documents
|
|
109
|
+
for (const doc of documents) {
|
|
110
|
+
if (!doc.key || typeof doc.key !== 'string') {
|
|
111
|
+
tui.fatal('Each document must have a non-empty "key" property');
|
|
112
|
+
}
|
|
113
|
+
if (!doc.document && !('embeddings' in doc)) {
|
|
114
|
+
tui.fatal(`Document with key "${doc.key}" must have either "document" or "embeddings" property`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// Single vector upsert via command line arguments
|
|
120
|
+
if (!args.key) {
|
|
121
|
+
tui.fatal('Key is required for single vector upsert. Use --file for bulk upsert.');
|
|
122
|
+
}
|
|
123
|
+
if (!opts.document && !opts.embeddings) {
|
|
124
|
+
tui.fatal('Either --document or --embeddings is required');
|
|
125
|
+
}
|
|
126
|
+
if (opts.document && opts.embeddings) {
|
|
127
|
+
tui.fatal('Cannot use both --document and --embeddings');
|
|
128
|
+
}
|
|
129
|
+
let metadata;
|
|
130
|
+
if (opts.metadata) {
|
|
131
|
+
try {
|
|
132
|
+
metadata = JSON.parse(opts.metadata);
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
tui.fatal('Invalid JSON in --metadata');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (opts.document) {
|
|
139
|
+
documents = [
|
|
140
|
+
{
|
|
141
|
+
key: args.key,
|
|
142
|
+
document: opts.document,
|
|
143
|
+
metadata,
|
|
144
|
+
},
|
|
145
|
+
];
|
|
146
|
+
}
|
|
147
|
+
else if (opts.embeddings) {
|
|
148
|
+
let embeddings;
|
|
149
|
+
try {
|
|
150
|
+
embeddings = JSON.parse(opts.embeddings);
|
|
151
|
+
if (!Array.isArray(embeddings) || !embeddings.every((n) => typeof n === 'number')) {
|
|
152
|
+
throw new Error('Not an array of numbers');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
tui.fatal('Invalid embeddings: must be a JSON array of numbers');
|
|
157
|
+
}
|
|
158
|
+
documents = [
|
|
159
|
+
{
|
|
160
|
+
key: args.key,
|
|
161
|
+
embeddings,
|
|
162
|
+
metadata,
|
|
163
|
+
},
|
|
164
|
+
];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (documents.length === 0) {
|
|
168
|
+
tui.fatal('No documents to upsert');
|
|
169
|
+
}
|
|
170
|
+
const started = Date.now();
|
|
171
|
+
logger.debug(`Upserting ${documents.length} vector(s) to ${args.namespace}`);
|
|
172
|
+
const results = await storage.upsert(args.namespace, ...documents);
|
|
173
|
+
const durationMs = Date.now() - started;
|
|
174
|
+
if (!options.json) {
|
|
175
|
+
tui.success(`Upserted ${results.length} vector(s) to ${tui.bold(args.namespace)} (${durationMs}ms)`);
|
|
176
|
+
if (results.length <= 10) {
|
|
177
|
+
for (const result of results) {
|
|
178
|
+
tui.arrow(`${result.key} → ${result.id}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
success: true,
|
|
184
|
+
namespace: args.namespace,
|
|
185
|
+
count: results.length,
|
|
186
|
+
results,
|
|
187
|
+
durationMs,
|
|
188
|
+
};
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
export default upsertSubcommand;
|
|
192
|
+
//# sourceMappingURL=upsert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upsert.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/vector/upsert.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-watcher.d.ts","sourceRoot":"","sources":["../../../src/cmd/dev/file-watcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"file-watcher.d.ts","sourceRoot":"","sources":["../../../src/cmd/dev/file-watcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAqTjF"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Watches source files and triggers server restart on changes.
|
|
5
5
|
* Handles both backend (API, agents, lib) and generates restart signals.
|
|
6
6
|
*/
|
|
7
|
-
import { watch, statSync, readdirSync } from 'node:fs';
|
|
8
|
-
import { resolve } from 'node:path';
|
|
7
|
+
import { watch, statSync, readdirSync, lstatSync } from 'node:fs';
|
|
8
|
+
import { resolve, relative } from 'node:path';
|
|
9
9
|
import { createAgentTemplates, createAPITemplates } from './templates';
|
|
10
10
|
/**
|
|
11
11
|
* Create a file watcher manager for hot reload
|
|
@@ -15,12 +15,28 @@ export function createFileWatcher(options) {
|
|
|
15
15
|
const watchers = [];
|
|
16
16
|
let paused = false;
|
|
17
17
|
let buildCooldownTimer = null;
|
|
18
|
-
//
|
|
19
|
-
// This
|
|
20
|
-
const
|
|
21
|
-
|
|
18
|
+
// Directories to ignore - these are NEVER traversed into
|
|
19
|
+
// This prevents EMFILE errors from symlink cycles in node_modules
|
|
20
|
+
const ignoreDirs = new Set([
|
|
21
|
+
'.agentuity',
|
|
22
|
+
'.agents',
|
|
23
|
+
'.claude',
|
|
24
|
+
'.code',
|
|
25
|
+
'.opencode',
|
|
26
|
+
'node_modules',
|
|
27
|
+
'.git',
|
|
28
|
+
'dist',
|
|
29
|
+
'build',
|
|
30
|
+
'.next',
|
|
31
|
+
'.turbo',
|
|
32
|
+
]);
|
|
33
|
+
// Paths to ignore for file change events (but may still be traversed)
|
|
22
34
|
const ignorePaths = [
|
|
23
35
|
'.agentuity',
|
|
36
|
+
'.agents',
|
|
37
|
+
'.claude',
|
|
38
|
+
'.code',
|
|
39
|
+
'.opencode',
|
|
24
40
|
'node_modules',
|
|
25
41
|
'.git',
|
|
26
42
|
'dist',
|
|
@@ -104,11 +120,13 @@ export function createFileWatcher(options) {
|
|
|
104
120
|
const contents = readdirSync(absPath);
|
|
105
121
|
if (contents.length === 0) {
|
|
106
122
|
// Check if this is an agent or API directory
|
|
107
|
-
if (normalizedPath.startsWith('src/agent/') ||
|
|
123
|
+
if (normalizedPath.startsWith('src/agent/') ||
|
|
124
|
+
normalizedPath.includes('/src/agent/')) {
|
|
108
125
|
logger.debug('Agent directory created: %s', changedFile);
|
|
109
126
|
createAgentTemplates(absPath);
|
|
110
127
|
}
|
|
111
|
-
else if (normalizedPath.startsWith('src/api/') ||
|
|
128
|
+
else if (normalizedPath.startsWith('src/api/') ||
|
|
129
|
+
normalizedPath.includes('/src/api/')) {
|
|
112
130
|
logger.debug('API directory created: %s', changedFile);
|
|
113
131
|
createAPITemplates(absPath);
|
|
114
132
|
}
|
|
@@ -123,43 +141,86 @@ export function createFileWatcher(options) {
|
|
|
123
141
|
logger.debug('File changed (%s): %s', eventType, changedFile || watchDir);
|
|
124
142
|
onRestart();
|
|
125
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Recursively collect all directories to watch, skipping ignored directories.
|
|
146
|
+
* This prevents EMFILE errors from symlink cycles in node_modules.
|
|
147
|
+
*/
|
|
148
|
+
function collectWatchDirs(dir, visited = new Set()) {
|
|
149
|
+
const dirs = [dir];
|
|
150
|
+
try {
|
|
151
|
+
// Use lstat to check for symlinks - get the real path to detect cycles
|
|
152
|
+
const stat = lstatSync(dir);
|
|
153
|
+
// Skip symlinks to prevent following circular symlinks
|
|
154
|
+
if (stat.isSymbolicLink()) {
|
|
155
|
+
logger.trace('Skipping symlink: %s', dir);
|
|
156
|
+
return [];
|
|
157
|
+
}
|
|
158
|
+
// Track visited inodes to detect cycles
|
|
159
|
+
const key = `${stat.dev}:${stat.ino}`;
|
|
160
|
+
if (visited.has(key)) {
|
|
161
|
+
logger.trace('Skipping already visited directory (cycle detected): %s', dir);
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
visited.add(key);
|
|
165
|
+
const entries = readdirSync(dir, { withFileTypes: true });
|
|
166
|
+
for (const entry of entries) {
|
|
167
|
+
if (!entry.isDirectory())
|
|
168
|
+
continue;
|
|
169
|
+
const name = entry.name;
|
|
170
|
+
// Skip ignored directories entirely - this is the key fix
|
|
171
|
+
if (ignoreDirs.has(name)) {
|
|
172
|
+
logger.trace('Skipping ignored directory: %s', resolve(dir, name));
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
// Skip hidden directories (except specific ones like .env folders)
|
|
176
|
+
if (name.startsWith('.')) {
|
|
177
|
+
logger.trace('Skipping hidden directory: %s', resolve(dir, name));
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
const fullPath = resolve(dir, name);
|
|
181
|
+
dirs.push(...collectWatchDirs(fullPath, visited));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
logger.trace('Error reading directory %s: %s', dir, error);
|
|
186
|
+
}
|
|
187
|
+
return dirs;
|
|
188
|
+
}
|
|
126
189
|
/**
|
|
127
190
|
* Start watching files
|
|
128
191
|
*/
|
|
129
192
|
function start() {
|
|
130
193
|
logger.debug('Starting file watchers for hot reload...');
|
|
131
|
-
//
|
|
132
|
-
|
|
194
|
+
// Collect all directories to watch, excluding node_modules and other ignored dirs
|
|
195
|
+
const allDirs = collectWatchDirs(rootDir);
|
|
196
|
+
// Add additional paths
|
|
197
|
+
if (additionalPaths && additionalPaths.length > 0) {
|
|
198
|
+
for (const additionalPath of additionalPaths) {
|
|
199
|
+
const fullPath = resolve(rootDir, additionalPath);
|
|
200
|
+
allDirs.push(...collectWatchDirs(fullPath));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// De-duplicate directories
|
|
204
|
+
const uniqueDirs = [...new Set(allDirs)];
|
|
205
|
+
logger.debug('Collected %d directories to watch', uniqueDirs.length);
|
|
206
|
+
// Watch each directory non-recursively
|
|
207
|
+
for (const watchPath of uniqueDirs) {
|
|
133
208
|
try {
|
|
134
|
-
|
|
135
|
-
const watcher = watch(watchPath, { recursive:
|
|
136
|
-
|
|
209
|
+
// Use non-recursive watch to avoid traversing into node_modules
|
|
210
|
+
const watcher = watch(watchPath, { recursive: false }, (eventType, changedFile) => {
|
|
211
|
+
// Construct relative path from rootDir for consistent handling
|
|
212
|
+
const relPath = changedFile
|
|
213
|
+
? relative(rootDir, resolve(watchPath, changedFile))
|
|
214
|
+
: relative(rootDir, watchPath);
|
|
215
|
+
handleFileChange(eventType, relPath || changedFile, rootDir);
|
|
137
216
|
});
|
|
138
217
|
watchers.push(watcher);
|
|
139
|
-
logger.trace('Watcher started for: %s', watchPath);
|
|
140
218
|
}
|
|
141
219
|
catch (error) {
|
|
142
|
-
logger.
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
// Watch additional paths if provided
|
|
146
|
-
if (additionalPaths && additionalPaths.length > 0) {
|
|
147
|
-
for (const additionalPath of additionalPaths) {
|
|
148
|
-
const fullPath = resolve(rootDir, additionalPath);
|
|
149
|
-
try {
|
|
150
|
-
logger.trace('Setting up watcher for additional path: %s', fullPath);
|
|
151
|
-
const watcher = watch(fullPath, { recursive: true }, (eventType, changedFile) => {
|
|
152
|
-
handleFileChange(eventType, changedFile, fullPath);
|
|
153
|
-
});
|
|
154
|
-
watchers.push(watcher);
|
|
155
|
-
logger.trace('Watcher started for additional path: %s', fullPath);
|
|
156
|
-
}
|
|
157
|
-
catch (error) {
|
|
158
|
-
logger.warn('Failed to start watcher for %s: %s', fullPath, error);
|
|
159
|
-
}
|
|
220
|
+
logger.trace('Failed to start watcher for %s: %s', watchPath, error);
|
|
160
221
|
}
|
|
161
222
|
}
|
|
162
|
-
logger.debug('File watchers started (%d
|
|
223
|
+
logger.debug('File watchers started (%d directories)', watchers.length);
|
|
163
224
|
}
|
|
164
225
|
/**
|
|
165
226
|
* Stop all watchers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../../../src/cmd/dev/file-watcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAkB,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../../../src/cmd/dev/file-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmd/dev/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmd/dev/index.ts"],"names":[],"mappings":"AAqIA,eAAO,MAAM,OAAO,mCA6tBlB,CAAC"}
|