@dtoolkit/dbrain 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -7
- package/dist/cli/index.js +43 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +16 -0
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/keys.d.ts +11 -0
- package/dist/cli/keys.d.ts.map +1 -0
- package/dist/cli/keys.js +85 -0
- package/dist/cli/keys.js.map +1 -0
- package/dist/cli/link.d.ts +12 -0
- package/dist/cli/link.d.ts.map +1 -0
- package/dist/cli/link.js +118 -0
- package/dist/cli/link.js.map +1 -0
- package/dist/core/config.d.ts +17 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +22 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/connections.d.ts +9 -0
- package/dist/core/connections.d.ts.map +1 -0
- package/dist/core/connections.js +25 -0
- package/dist/core/connections.js.map +1 -0
- package/dist/core/db.d.ts.map +1 -1
- package/dist/core/db.js +29 -0
- package/dist/core/db.js.map +1 -1
- package/dist/dashboard/index.html +250 -26
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +170 -12
- package/dist/mcp/server.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +28 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/conversations.d.ts.map +1 -1
- package/dist/server/routes/conversations.js +7 -0
- package/dist/server/routes/conversations.js.map +1 -1
- package/dist/server/routes/entities.d.ts.map +1 -1
- package/dist/server/routes/entities.js +5 -0
- package/dist/server/routes/entities.js.map +1 -1
- package/dist/server/routes/facts.d.ts.map +1 -1
- package/dist/server/routes/facts.js +54 -1
- package/dist/server/routes/facts.js.map +1 -1
- package/dist/server/routes/health.d.ts.map +1 -1
- package/dist/server/routes/health.js +46 -2
- package/dist/server/routes/health.js.map +1 -1
- package/dist/server/routes/keys.d.ts +3 -0
- package/dist/server/routes/keys.d.ts.map +1 -0
- package/dist/server/routes/keys.js +73 -0
- package/dist/server/routes/keys.js.map +1 -0
- package/dist/server/routes/permissions.d.ts +3 -0
- package/dist/server/routes/permissions.d.ts.map +1 -0
- package/dist/server/routes/permissions.js +9 -0
- package/dist/server/routes/permissions.js.map +1 -0
- package/dist/server/routes/proxy.d.ts +3 -0
- package/dist/server/routes/proxy.d.ts.map +1 -0
- package/dist/server/routes/proxy.js +37 -0
- package/dist/server/routes/proxy.js.map +1 -0
- package/dist/server/routes/search.d.ts.map +1 -1
- package/dist/server/routes/search.js +112 -40
- package/dist/server/routes/search.js.map +1 -1
- package/dist/server/routes/workspace.d.ts.map +1 -1
- package/dist/server/routes/workspace.js +5 -0
- package/dist/server/routes/workspace.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -12,12 +12,32 @@
|
|
|
12
12
|
|
|
13
13
|
Install it once, connect every AI you use — Claude Code at home, Claude Code at work, Gemini on your phone. All share the same identity, the same memories, the same knowledge.
|
|
14
14
|
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
[
|
|
18
|
-
[
|
|
19
|
-
[
|
|
20
|
-
[
|
|
15
|
+
```mermaid
|
|
16
|
+
graph LR
|
|
17
|
+
subgraph Clients["Your AIs"]
|
|
18
|
+
home["🏠 Claude Code<br/><small>home</small>"]
|
|
19
|
+
work["💼 Claude Code<br/><small>work</small>"]
|
|
20
|
+
mobile["📱 Gemini<br/><small>mobile</small>"]
|
|
21
|
+
server["🖥️ OpenClaw<br/><small>server</small>"]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
home -- MCP --> personal
|
|
25
|
+
work -- MCP --> personal
|
|
26
|
+
mobile -- REST --> personal
|
|
27
|
+
server -- REST --> personal
|
|
28
|
+
|
|
29
|
+
subgraph Federation["Federation"]
|
|
30
|
+
personal["dbrain<br/><strong>personal</strong><br/><small>identity + memory + knowledge</small>"]
|
|
31
|
+
shared["dbrain<br/><strong>shared / team</strong><br/><small>team knowledge + API keys</small>"]
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
personal -- "federated recall" --> shared
|
|
35
|
+
personal -- "share facts" --> shared
|
|
36
|
+
|
|
37
|
+
style personal fill:#2563eb,color:#fff,stroke:#1e40af
|
|
38
|
+
style shared fill:#7c3aed,color:#fff,stroke:#5b21b6
|
|
39
|
+
style Clients fill:#f8fafc,color:#1e293b,stroke:#e2e8f0
|
|
40
|
+
style Federation fill:#f8fafc,color:#1e293b,stroke:#e2e8f0
|
|
21
41
|
```
|
|
22
42
|
|
|
23
43
|
## Install
|
|
@@ -61,6 +81,7 @@ The brain has 4 layers:
|
|
|
61
81
|
| **Conversations** | Raw chat history from every AI session | `conversations` + `messages` tables |
|
|
62
82
|
| **Knowledge** | Structured facts organized by PARA | `entities` + `facts` tables with hot/warm/cold tiers |
|
|
63
83
|
| **Recall** | Full-text search over all facts | FTS5 with OR logic for multi-language queries |
|
|
84
|
+
| **Federation** | Personal brains connect to shared team brains | Per-user API keys, federated recall, manual fact push |
|
|
64
85
|
|
|
65
86
|
### Memory tiers
|
|
66
87
|
|
|
@@ -85,6 +106,7 @@ Memories fade if you don't use them — like a real brain.
|
|
|
85
106
|
| `log` | Send conversation messages for storage |
|
|
86
107
|
| `wake_up` | Full identity load |
|
|
87
108
|
| `overview` | Brain stats |
|
|
109
|
+
| `share` | Push a fact to a connected shared brain |
|
|
88
110
|
|
|
89
111
|
## REST API
|
|
90
112
|
|
|
@@ -99,8 +121,12 @@ All endpoints require `Authorization: Bearer <token>` except `/health`.
|
|
|
99
121
|
| `POST` | `/entities/:id/facts` | Add facts to an entity |
|
|
100
122
|
| `PATCH` | `/facts/:id/access` | Bump a memory (keep it hot) |
|
|
101
123
|
| `GET/POST` | `/conversations` | Chat history |
|
|
102
|
-
| `POST` | `/search` | Full-text search
|
|
124
|
+
| `POST` | `/search` | Full-text search (supports `federated: true`) |
|
|
103
125
|
| `GET` | `/memory/summary` | Overview: entities x tiers |
|
|
126
|
+
| `GET` | `/connections` | List connected brains with health status |
|
|
127
|
+
| `POST/GET/DELETE` | `/keys` | API key management (shared brains only) |
|
|
128
|
+
| `PATCH` | `/keys/:id` | Update API key permissions |
|
|
129
|
+
| `POST` | `/facts/:id/share` | Push a fact to a connected brain |
|
|
104
130
|
|
|
105
131
|
## CLI commands
|
|
106
132
|
|
|
@@ -110,6 +136,10 @@ All endpoints require `Authorization: Bearer <token>` except `/health`.
|
|
|
110
136
|
| `dbrain start [path]` | Server | Start the API server + dashboard |
|
|
111
137
|
| `dbrain connect <client> [url]` | Client | Connect a client to a running brain |
|
|
112
138
|
| `dbrain status [path]` | Server | Check brain status |
|
|
139
|
+
| `dbrain link <url>` | Client | Connect to a shared brain |
|
|
140
|
+
| `dbrain unlink <name>` | Client | Disconnect from a shared brain |
|
|
141
|
+
| `dbrain connections` | Client | List connections with health status |
|
|
142
|
+
| `dbrain keys <action>` | Server | Manage per-user API keys (shared brains) |
|
|
113
143
|
|
|
114
144
|
## Dashboard
|
|
115
145
|
|
|
@@ -140,6 +170,8 @@ For non-interactive setup (Docker, CI):
|
|
|
140
170
|
| `DBRAIN_AGENT_NAME` | `dBrain` | AI identity name |
|
|
141
171
|
| `DBRAIN_OWNER_NAME` | `Human` | Owner name |
|
|
142
172
|
| `DBRAIN_TIMEZONE` | Auto-detected | Owner timezone |
|
|
173
|
+
| `DBRAIN_BRAIN_NAME` | from identity | Brain display name |
|
|
174
|
+
| `DBRAIN_BRAIN_TYPE` | `personal` | `personal` or `shared` |
|
|
143
175
|
|
|
144
176
|
## License
|
|
145
177
|
|
package/dist/cli/index.js
CHANGED
|
@@ -15,10 +15,7 @@ const banner = `\
|
|
|
15
15
|
| (_| | |_) | | | (_| | | | | |
|
|
16
16
|
\\__,_|_.__/|_| \\__,_|_|_| |_|`;
|
|
17
17
|
const description = `${pc.green(banner)}\n\n${pc.green('Your distributed mind. Wherever you go, I remember.')}\n${pc.dim('Part of the dtoolkit suite')}`;
|
|
18
|
-
program
|
|
19
|
-
.name('dbrain')
|
|
20
|
-
.description(description)
|
|
21
|
-
.version(pkg.version);
|
|
18
|
+
program.name('dbrain').description(description).version(pkg.version);
|
|
22
19
|
program
|
|
23
20
|
.command('init')
|
|
24
21
|
.description('Initialize a new brain (server)')
|
|
@@ -54,5 +51,47 @@ program
|
|
|
54
51
|
const { status } = await import('./status.js');
|
|
55
52
|
await status(path);
|
|
56
53
|
});
|
|
54
|
+
program
|
|
55
|
+
.command('keys')
|
|
56
|
+
.description('Manage API keys (shared brains only)')
|
|
57
|
+
.argument('<action>', 'create | list | revoke')
|
|
58
|
+
.option('--url <url>', 'Brain URL (or DBRAIN_URL env)')
|
|
59
|
+
.option('--token <token>', 'Admin token (or DBRAIN_TOKEN env)')
|
|
60
|
+
.option('--user-id <userId>', 'User ID (create)')
|
|
61
|
+
.option('--user-name <userName>', 'User display name (create)')
|
|
62
|
+
.option('--permissions <perms>', 'read | write | read+write (create, default: read+write)')
|
|
63
|
+
.option('--key-id <keyId>', 'Key ID (revoke)')
|
|
64
|
+
.action(async (action, opts) => {
|
|
65
|
+
const { keys } = await import('./keys.js');
|
|
66
|
+
await keys(action, opts);
|
|
67
|
+
});
|
|
68
|
+
program
|
|
69
|
+
.command('link')
|
|
70
|
+
.description('Link to a shared brain')
|
|
71
|
+
.argument('<url>', 'Shared brain URL')
|
|
72
|
+
.option('--token <token>', 'Access token for the shared brain')
|
|
73
|
+
.option('--name <name>', 'Connection name (defaults to remote brain name)')
|
|
74
|
+
.option('--path <path>', 'Local brain data path')
|
|
75
|
+
.action(async (url, opts) => {
|
|
76
|
+
const { link } = await import('./link.js');
|
|
77
|
+
await link(url, opts);
|
|
78
|
+
});
|
|
79
|
+
program
|
|
80
|
+
.command('unlink')
|
|
81
|
+
.description('Remove a connection to a shared brain')
|
|
82
|
+
.argument('<name>', 'Connection name')
|
|
83
|
+
.option('--path <path>', 'Local brain data path')
|
|
84
|
+
.action(async (name, opts) => {
|
|
85
|
+
const { unlink } = await import('./link.js');
|
|
86
|
+
await unlink(name, opts);
|
|
87
|
+
});
|
|
88
|
+
program
|
|
89
|
+
.command('connections')
|
|
90
|
+
.description('List connected brains with health status')
|
|
91
|
+
.option('--path <path>', 'Local brain data path')
|
|
92
|
+
.action(async (opts) => {
|
|
93
|
+
const { connections } = await import('./link.js');
|
|
94
|
+
await connections(opts);
|
|
95
|
+
});
|
|
57
96
|
program.parse();
|
|
58
97
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAElF,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,MAAM,MAAM,GAAG;;;;;;kCAMmB,CAAC;AAEnC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,qDAAqD,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,CAAC;AAEzJ,OAAO
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAmBA,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAmBA,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,iBAoMhF"}
|
package/dist/cli/init.js
CHANGED
|
@@ -51,6 +51,14 @@ export async function init(pathArg, flags) {
|
|
|
51
51
|
message: 'Access token (leave default to auto-generate)',
|
|
52
52
|
initialValue: generateToken(),
|
|
53
53
|
}),
|
|
54
|
+
brainType: () => p.select({
|
|
55
|
+
message: 'Brain type?',
|
|
56
|
+
options: [
|
|
57
|
+
{ value: 'personal', label: 'Personal — Your own brain' },
|
|
58
|
+
{ value: 'shared', label: 'Shared — Team brain (issues per-user API keys)' },
|
|
59
|
+
],
|
|
60
|
+
initialValue: 'personal',
|
|
61
|
+
}),
|
|
54
62
|
agentName: () => p.text({
|
|
55
63
|
message: "What's my name? (your AI's identity)",
|
|
56
64
|
initialValue: 'dBrain',
|
|
@@ -83,6 +91,9 @@ export async function init(pathArg, flags) {
|
|
|
83
91
|
port,
|
|
84
92
|
host: answers.host,
|
|
85
93
|
token: answers.token,
|
|
94
|
+
brainName: answers.agentName,
|
|
95
|
+
brainType: answers.brainType,
|
|
96
|
+
connections: [],
|
|
86
97
|
tiers: { hotDays: 7, hotMinAccess: 10, warmDays: 30 },
|
|
87
98
|
};
|
|
88
99
|
const s = p.spinner();
|
|
@@ -142,6 +153,8 @@ function initNonInteractive(pathArg) {
|
|
|
142
153
|
const host = process.env.DBRAIN_HOST || '0.0.0.0';
|
|
143
154
|
const token = process.env.DBRAIN_TOKEN || generateToken();
|
|
144
155
|
const agentName = process.env.DBRAIN_AGENT_NAME || 'dBrain';
|
|
156
|
+
const brainName = process.env.DBRAIN_BRAIN_NAME || agentName;
|
|
157
|
+
const brainType = (process.env.DBRAIN_BRAIN_TYPE || 'personal');
|
|
145
158
|
const ownerName = process.env.DBRAIN_OWNER_NAME || 'Human';
|
|
146
159
|
const ownerTimezone = process.env.DBRAIN_TIMEZONE || Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
147
160
|
if (existsSync(join(dataPath, 'config.json'))) {
|
|
@@ -153,6 +166,9 @@ function initNonInteractive(pathArg) {
|
|
|
153
166
|
port,
|
|
154
167
|
host,
|
|
155
168
|
token,
|
|
169
|
+
brainName,
|
|
170
|
+
brainType,
|
|
171
|
+
connections: [],
|
|
156
172
|
tiers: { hotDays: 7, hotMinAccess: 10, warmDays: 30 },
|
|
157
173
|
};
|
|
158
174
|
mkdirSync(dataPath, { recursive: true });
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface KeysOptions {
|
|
2
|
+
url?: string;
|
|
3
|
+
token?: string;
|
|
4
|
+
userId?: string;
|
|
5
|
+
userName?: string;
|
|
6
|
+
permissions?: string;
|
|
7
|
+
keyId?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function keys(action: string, opts: KeysOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/cli/keys.ts"],"names":[],"mappings":"AAGA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAoBD,wBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,iBA2F3D"}
|
package/dist/cli/keys.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as p from '@clack/prompts';
|
|
2
|
+
import pc from 'picocolors';
|
|
3
|
+
async function apiCall(url, token, method, path, body) {
|
|
4
|
+
const headers = { Authorization: `Bearer ${token}` };
|
|
5
|
+
if (body)
|
|
6
|
+
headers['Content-Type'] = 'application/json';
|
|
7
|
+
const res = await fetch(`${url}${path}`, {
|
|
8
|
+
method,
|
|
9
|
+
headers,
|
|
10
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
11
|
+
});
|
|
12
|
+
const data = await res.json();
|
|
13
|
+
return { ok: res.ok, status: res.status, data };
|
|
14
|
+
}
|
|
15
|
+
export async function keys(action, opts) {
|
|
16
|
+
const url = opts.url || process.env.DBRAIN_URL;
|
|
17
|
+
const token = opts.token || process.env.DBRAIN_TOKEN;
|
|
18
|
+
if (!url || !token) {
|
|
19
|
+
p.log.error(`${pc.red('Missing --url and --token (or DBRAIN_URL / DBRAIN_TOKEN env vars)')}`);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
if (action === 'create') {
|
|
23
|
+
const userId = opts.userId;
|
|
24
|
+
const userName = opts.userName;
|
|
25
|
+
if (!userId || !userName) {
|
|
26
|
+
p.log.error(`${pc.red('--user-id and --user-name are required for create')}`);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
const { ok, data } = await apiCall(url, token, 'POST', '/keys', {
|
|
30
|
+
userId,
|
|
31
|
+
userName,
|
|
32
|
+
permissions: opts.permissions || 'read+write',
|
|
33
|
+
});
|
|
34
|
+
if (!ok) {
|
|
35
|
+
p.log.error(`${pc.red('Failed to create key:')} ${JSON.stringify(data)}`);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
const key = data;
|
|
39
|
+
p.log.success(`${pc.green('Key created')}`);
|
|
40
|
+
p.note([
|
|
41
|
+
`ID: ${pc.dim(key.id)}`,
|
|
42
|
+
`User: ${pc.green(userName)} (${userId})`,
|
|
43
|
+
`Permissions: ${pc.green(key.permissions)}`,
|
|
44
|
+
`Token: ${pc.green(key.token)}`,
|
|
45
|
+
``,
|
|
46
|
+
`${pc.dim('Save this token — it will not be shown again.')}`,
|
|
47
|
+
].join('\n'), 'API Key');
|
|
48
|
+
}
|
|
49
|
+
else if (action === 'list') {
|
|
50
|
+
const { ok, data } = await apiCall(url, token, 'GET', '/keys');
|
|
51
|
+
if (!ok) {
|
|
52
|
+
p.log.error(`${pc.red('Failed to list keys:')} ${JSON.stringify(data)}`);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
const keys = data;
|
|
56
|
+
if (keys.length === 0) {
|
|
57
|
+
p.log.info('No API keys found.');
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
p.log.info(`${pc.bold(`${keys.length} key(s)`)}\n`);
|
|
61
|
+
for (const k of keys) {
|
|
62
|
+
const status = k.status === 'active' ? pc.green('active') : pc.red('revoked');
|
|
63
|
+
const lastUsed = k.lastUsed ? pc.dim(k.lastUsed) : pc.dim('never');
|
|
64
|
+
console.log(` ${pc.dim(k.id)} ${k.userName} (${k.userId}) ${k.permissions} ${status} last: ${lastUsed} ${pc.dim(k.tokenPreview)}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else if (action === 'revoke') {
|
|
68
|
+
const keyId = opts.keyId;
|
|
69
|
+
if (!keyId) {
|
|
70
|
+
p.log.error(`${pc.red('--key-id is required for revoke')}`);
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
const { ok, data } = await apiCall(url, token, 'DELETE', `/keys/${keyId}`);
|
|
74
|
+
if (!ok) {
|
|
75
|
+
p.log.error(`${pc.red('Failed to revoke key:')} ${JSON.stringify(data)}`);
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
p.log.success(`${pc.green('Key revoked:')} ${keyId}`);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
p.log.error(`${pc.red(`Unknown action: ${action}. Use create, list, or revoke.`)}`);
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/cli/keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function link(url: string, opts: {
|
|
2
|
+
path?: string;
|
|
3
|
+
token?: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
}): Promise<void>;
|
|
6
|
+
export declare function unlink(name: string, opts: {
|
|
7
|
+
path?: string;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
export declare function connections(opts: {
|
|
10
|
+
path?: string;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/cli/link.ts"],"names":[],"mappings":"AAoBA,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,iBA4D7F;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,iBAoBjE;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,iBAmCxD"}
|
package/dist/cli/link.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { join, resolve } from 'node:path';
|
|
4
|
+
import * as p from '@clack/prompts';
|
|
5
|
+
import pc from 'picocolors';
|
|
6
|
+
import { loadConfig } from '../core/config.js';
|
|
7
|
+
function configPath(dataPath) {
|
|
8
|
+
return join(dataPath, 'config.json');
|
|
9
|
+
}
|
|
10
|
+
function saveConnections(dataPath, connections) {
|
|
11
|
+
const raw = JSON.parse(readFileSync(configPath(dataPath), 'utf-8'));
|
|
12
|
+
raw.connections = connections;
|
|
13
|
+
writeFileSync(configPath(dataPath), JSON.stringify(raw, null, 2) + '\n');
|
|
14
|
+
}
|
|
15
|
+
export async function link(url, opts) {
|
|
16
|
+
const dataPath = resolve(opts.path || join(homedir(), '.dbrain'));
|
|
17
|
+
let config;
|
|
18
|
+
try {
|
|
19
|
+
config = loadConfig(dataPath);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
p.log.error(`${pc.red('No brain found.')} Run ${pc.bold('dbrain init')} first.`);
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
if (config.brainType === 'shared') {
|
|
26
|
+
p.log.error(`${pc.red('Shared brains cannot connect to other brains.')}`);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
const token = opts.token;
|
|
30
|
+
if (!token) {
|
|
31
|
+
p.log.error(`${pc.red('--token is required')}`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
p.log.step(`Connecting to ${pc.blue(url)}...`);
|
|
35
|
+
let health;
|
|
36
|
+
try {
|
|
37
|
+
const res = await fetch(`${url}/health`, {
|
|
38
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
39
|
+
});
|
|
40
|
+
if (!res.ok)
|
|
41
|
+
throw new Error(`HTTP ${res.status}`);
|
|
42
|
+
health = (await res.json());
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
p.log.error(`${pc.red('Cannot reach brain:')} ${err.message}`);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
if (health.brainType !== 'shared') {
|
|
49
|
+
p.log.error(`${pc.red('Target brain is not shared.')} Only personal → shared connections are allowed.`);
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
const name = opts.name || health.name || new URL(url).hostname;
|
|
53
|
+
const existing = config.connections.find((c) => c.url === url);
|
|
54
|
+
if (existing) {
|
|
55
|
+
p.log.warn(`${pc.yellow('Already linked to')} ${pc.bold(existing.name)} at ${url}`);
|
|
56
|
+
process.exit(0);
|
|
57
|
+
}
|
|
58
|
+
const connections = [...config.connections, { name, url, token }];
|
|
59
|
+
saveConnections(dataPath, connections);
|
|
60
|
+
p.log.success(`${pc.green('Linked to')} ${pc.bold(name)}`);
|
|
61
|
+
p.note([`Name: ${pc.green(name)}`, `URL: ${pc.dim(url)}`, `Type: ${pc.green('shared')}`].join('\n'), 'Connection');
|
|
62
|
+
}
|
|
63
|
+
export async function unlink(name, opts) {
|
|
64
|
+
const dataPath = resolve(opts.path || join(homedir(), '.dbrain'));
|
|
65
|
+
let config;
|
|
66
|
+
try {
|
|
67
|
+
config = loadConfig(dataPath);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
p.log.error(`${pc.red('No brain found.')} Run ${pc.bold('dbrain init')} first.`);
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
const idx = config.connections.findIndex((c) => c.name === name);
|
|
74
|
+
if (idx === -1) {
|
|
75
|
+
p.log.error(`${pc.red(`Connection "${name}" not found.`)}`);
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
const connections = config.connections.filter((_, i) => i !== idx);
|
|
79
|
+
saveConnections(dataPath, connections);
|
|
80
|
+
p.log.success(`${pc.green('Unlinked')} ${pc.bold(name)}`);
|
|
81
|
+
}
|
|
82
|
+
export async function connections(opts) {
|
|
83
|
+
const dataPath = resolve(opts.path || join(homedir(), '.dbrain'));
|
|
84
|
+
let config;
|
|
85
|
+
try {
|
|
86
|
+
config = loadConfig(dataPath);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
p.log.error(`${pc.red('No brain found.')} Run ${pc.bold('dbrain init')} first.`);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
if (config.connections.length === 0) {
|
|
93
|
+
p.log.info('No connections. Use `dbrain link` to connect to a shared brain.');
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
p.log.info(`${pc.bold(`${config.connections.length} connection(s)`)}\n`);
|
|
97
|
+
for (const conn of config.connections) {
|
|
98
|
+
let status = pc.dim('checking...');
|
|
99
|
+
try {
|
|
100
|
+
const res = await fetch(`${conn.url}/health`, {
|
|
101
|
+
headers: { Authorization: `Bearer ${conn.token}` },
|
|
102
|
+
signal: AbortSignal.timeout(3000),
|
|
103
|
+
});
|
|
104
|
+
if (res.ok) {
|
|
105
|
+
const h = (await res.json());
|
|
106
|
+
status = `${pc.green('online')} ${h.entities} entities, ${h.facts} facts`;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
status = pc.red(`error (${res.status})`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
status = pc.red('offline');
|
|
114
|
+
}
|
|
115
|
+
console.log(` ${pc.bold(conn.name)} ${pc.dim(conn.url)} ${status}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/cli/link.ts"],"names":[],"mappings":"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"}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
export declare const ConnectionSchema: z.ZodObject<{
|
|
3
|
+
name: z.ZodString;
|
|
4
|
+
url: z.ZodString;
|
|
5
|
+
token: z.ZodString;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
export type Connection = z.infer<typeof ConnectionSchema>;
|
|
2
8
|
export declare const ConfigSchema: z.ZodObject<{
|
|
3
9
|
dataPath: z.ZodString;
|
|
4
10
|
port: z.ZodDefault<z.ZodNumber>;
|
|
5
11
|
host: z.ZodDefault<z.ZodString>;
|
|
6
12
|
token: z.ZodString;
|
|
13
|
+
brainName: z.ZodOptional<z.ZodString>;
|
|
14
|
+
brainType: z.ZodDefault<z.ZodEnum<{
|
|
15
|
+
personal: "personal";
|
|
16
|
+
shared: "shared";
|
|
17
|
+
}>>;
|
|
18
|
+
connections: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
19
|
+
name: z.ZodString;
|
|
20
|
+
url: z.ZodString;
|
|
21
|
+
token: z.ZodString;
|
|
22
|
+
}, z.core.$strip>>>;
|
|
7
23
|
tiers: z.ZodDefault<z.ZodObject<{
|
|
8
24
|
hotDays: z.ZodDefault<z.ZodNumber>;
|
|
9
25
|
hotMinAccess: z.ZodDefault<z.ZodNumber>;
|
|
@@ -12,4 +28,5 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
12
28
|
}, z.core.$strip>;
|
|
13
29
|
export type Config = z.infer<typeof ConfigSchema>;
|
|
14
30
|
export declare function loadConfig(dataPath: string): Config;
|
|
31
|
+
export declare function loadConnections(dataPath: string): Connection[];
|
|
15
32
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,gBAAgB;;;;iBAI3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;iBAevB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CASnD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAK9D"}
|
package/dist/core/config.js
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import { readFileSync, existsSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
+
// Connections only go personal → shared. No chaining.
|
|
5
|
+
export const ConnectionSchema = z.object({
|
|
6
|
+
name: z.string(),
|
|
7
|
+
url: z.string(),
|
|
8
|
+
token: z.string(),
|
|
9
|
+
});
|
|
4
10
|
export const ConfigSchema = z.object({
|
|
5
11
|
dataPath: z.string(),
|
|
6
12
|
port: z.number().default(7878),
|
|
7
13
|
host: z.string().default('0.0.0.0'),
|
|
8
14
|
token: z.string(),
|
|
15
|
+
brainName: z.string().optional(),
|
|
16
|
+
brainType: z.enum(['personal', 'shared']).default('personal'),
|
|
17
|
+
connections: z.array(ConnectionSchema).default([]),
|
|
9
18
|
tiers: z
|
|
10
19
|
.object({
|
|
11
20
|
hotDays: z.number().default(7),
|
|
@@ -19,6 +28,18 @@ export function loadConfig(dataPath) {
|
|
|
19
28
|
if (!existsSync(configPath)) {
|
|
20
29
|
throw new Error(`Config not found at ${configPath}. Run 'dbrain init' first.`);
|
|
21
30
|
}
|
|
22
|
-
|
|
31
|
+
const raw = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
32
|
+
if (process.env.DBRAIN_BRAIN_NAME)
|
|
33
|
+
raw.brainName = process.env.DBRAIN_BRAIN_NAME;
|
|
34
|
+
if (process.env.DBRAIN_BRAIN_TYPE)
|
|
35
|
+
raw.brainType = process.env.DBRAIN_BRAIN_TYPE;
|
|
36
|
+
return ConfigSchema.parse(raw);
|
|
37
|
+
}
|
|
38
|
+
export function loadConnections(dataPath) {
|
|
39
|
+
const configPath = join(dataPath, 'config.json');
|
|
40
|
+
if (!existsSync(configPath))
|
|
41
|
+
return [];
|
|
42
|
+
const raw = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
43
|
+
return ConfigSchema.parse(raw).connections;
|
|
23
44
|
}
|
|
24
45
|
//# sourceMappingURL=config.js.map
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;KACjC,CAAC;SACD,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;CAC3D,CAAC,CAAC;AAIH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,4BAA4B,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7D,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAClD,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;KACjC,CAAC;SACD,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;CAC3D,CAAC,CAAC;AAIH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,4BAA4B,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAAE,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACjF,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAAE,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACjF,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DBrainClient } from '@dtoolkit/sdk';
|
|
2
|
+
import type { Connection } from './config.js';
|
|
3
|
+
export declare function getConnection(connections: Connection[], name?: string): DBrainClient | null;
|
|
4
|
+
export declare function getAllConnections(connections: Connection[]): Array<{
|
|
5
|
+
name: string;
|
|
6
|
+
client: DBrainClient;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function clearCache(): void;
|
|
9
|
+
//# sourceMappingURL=connections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../src/core/connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAM9C,wBAAgB,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAW3F;AAED,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,UAAU,EAAE,GACxB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC,CAK/C;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC"}
|