@mandible-ai/mandible 0.3.13 → 0.3.14
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 +5 -7
- package/dist/src/cli/index.js +6 -0
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/init.d.ts +25 -0
- package/dist/src/cli/init.d.ts.map +1 -0
- package/dist/src/cli/init.js +348 -0
- package/dist/src/cli/init.js.map +1 -0
- package/dist/src/core/events.d.ts +1 -1
- package/dist/src/core/events.d.ts.map +1 -1
- package/dist/src/core/events.js.map +1 -1
- package/dist/src/core/runtime.d.ts.map +1 -1
- package/dist/src/core/runtime.js +25 -2
- package/dist/src/core/runtime.js.map +1 -1
- package/dist/src/core/types.d.ts +12 -0
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/types.js.map +1 -1
- package/dist/src/core/validation.d.ts +7 -0
- package/dist/src/core/validation.d.ts.map +1 -1
- package/dist/src/core/validation.js +19 -0
- package/dist/src/core/validation.js.map +1 -1
- package/dist/src/dsl/builder.d.ts +2 -0
- package/dist/src/dsl/builder.d.ts.map +1 -1
- package/dist/src/dsl/builder.js +5 -0
- package/dist/src/dsl/builder.js.map +1 -1
- package/dist/src/dsl/mandible.d.ts +1 -1
- package/dist/src/dsl/mandible.js +1 -1
- package/dist/src/environments/dolt/adapter.d.ts +21 -7
- package/dist/src/environments/dolt/adapter.d.ts.map +1 -1
- package/dist/src/environments/dolt/adapter.js +319 -59
- package/dist/src/environments/dolt/adapter.js.map +1 -1
- package/dist/src/environments/dolt/client.d.ts +72 -0
- package/dist/src/environments/dolt/client.d.ts.map +1 -0
- package/dist/src/environments/dolt/client.js +209 -0
- package/dist/src/environments/dolt/client.js.map +1 -0
- package/dist/src/environments/dolt/index.d.ts +2 -0
- package/dist/src/environments/dolt/index.d.ts.map +1 -1
- package/dist/src/environments/dolt/index.js +2 -0
- package/dist/src/environments/dolt/index.js.map +1 -1
- package/dist/src/environments/dolt/sql-client.d.ts +24 -0
- package/dist/src/environments/dolt/sql-client.d.ts.map +1 -0
- package/dist/src/environments/dolt/sql-client.js +46 -0
- package/dist/src/environments/dolt/sql-client.js.map +1 -0
- package/dist/src/environments/filesystem/adapter.d.ts +4 -0
- package/dist/src/environments/filesystem/adapter.d.ts.map +1 -1
- package/dist/src/environments/filesystem/adapter.js +23 -0
- package/dist/src/environments/filesystem/adapter.js.map +1 -1
- package/dist/src/environments/github/adapter.d.ts +4 -0
- package/dist/src/environments/github/adapter.d.ts.map +1 -1
- package/dist/src/environments/github/adapter.js +18 -0
- package/dist/src/environments/github/adapter.js.map +1 -1
- package/dist/src/hosts/docker.d.ts +52 -37
- package/dist/src/hosts/docker.d.ts.map +1 -1
- package/dist/src/hosts/docker.js +207 -90
- package/dist/src/hosts/docker.js.map +1 -1
- package/dist/src/index.d.ts +9 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/patterns/barrier.d.ts +104 -0
- package/dist/src/patterns/barrier.d.ts.map +1 -0
- package/dist/src/patterns/barrier.js +196 -0
- package/dist/src/patterns/barrier.js.map +1 -0
- package/dist/src/patterns/gate.d.ts +71 -0
- package/dist/src/patterns/gate.d.ts.map +1 -0
- package/dist/src/patterns/gate.js +167 -0
- package/dist/src/patterns/gate.js.map +1 -0
- package/dist/src/patterns/index.d.ts +4 -0
- package/dist/src/patterns/index.d.ts.map +1 -1
- package/dist/src/patterns/index.js +2 -0
- package/dist/src/patterns/index.js.map +1 -1
- package/dist/src/providers/claude-code.d.ts.map +1 -1
- package/dist/src/providers/claude-code.js +5 -4
- package/dist/src/providers/claude-code.js.map +1 -1
- package/dist/src/providers/context.d.ts.map +1 -1
- package/dist/src/providers/context.js +16 -10
- package/dist/src/providers/context.js.map +1 -1
- package/dist/src/providers/index.d.ts +12 -1
- package/dist/src/providers/index.d.ts.map +1 -1
- package/dist/src/providers/index.js +11 -0
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/providers/llm.d.ts +17 -0
- package/dist/src/providers/llm.d.ts.map +1 -0
- package/dist/src/providers/llm.js +225 -0
- package/dist/src/providers/llm.js.map +1 -0
- package/dist/src/providers/opencode.d.ts +87 -0
- package/dist/src/providers/opencode.d.ts.map +1 -0
- package/dist/src/providers/opencode.js +170 -0
- package/dist/src/providers/opencode.js.map +1 -0
- package/dist/src/providers/qwen-code.d.ts +69 -0
- package/dist/src/providers/qwen-code.d.ts.map +1 -0
- package/dist/src/providers/qwen-code.js +175 -0
- package/dist/src/providers/qwen-code.js.map +1 -0
- package/dist/src/providers/skill.d.ts +120 -0
- package/dist/src/providers/skill.d.ts.map +1 -0
- package/dist/src/providers/skill.js +262 -0
- package/dist/src/providers/skill.js.map +1 -0
- package/dist/src/providers/tool-loop.d.ts +163 -0
- package/dist/src/providers/tool-loop.d.ts.map +1 -0
- package/dist/src/providers/tool-loop.js +580 -0
- package/dist/src/providers/tool-loop.js.map +1 -0
- package/dist/src/providers/types.d.ts +63 -0
- package/dist/src/providers/types.d.ts.map +1 -1
- package/dist/src/providers/vllm.d.ts +62 -0
- package/dist/src/providers/vllm.d.ts.map +1 -0
- package/dist/src/providers/vllm.js +262 -0
- package/dist/src/providers/vllm.js.map +1 -0
- package/package.json +7 -2
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
// ============================================================
|
|
2
|
-
// Dolt Environment Adapter
|
|
2
|
+
// Dolt Environment Adapter — DoltHub HTTP API
|
|
3
3
|
// ============================================================
|
|
4
|
-
//
|
|
5
|
-
//
|
|
4
|
+
// Maps the stigmergy Environment interface to a DoltHub database
|
|
5
|
+
// via the DoltHub v1alpha1 REST API.
|
|
6
6
|
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
// 3. Claims = SELECT ... FOR UPDATE (real DB-level locking)
|
|
10
|
-
// 4. History = Dolt's built-in versioning (dolt_diff, dolt_log)
|
|
11
|
-
// 5. Watch = Dolt's binlog or polling
|
|
12
|
-
// 6. Branching = multiple environment "realities" (experiments!)
|
|
7
|
+
// No local Dolt server or mysql2 dependency required — just a
|
|
8
|
+
// DoltHub account, a database, and an API token.
|
|
13
9
|
//
|
|
14
10
|
// Schema:
|
|
15
11
|
// CREATE TABLE signals (
|
|
@@ -28,84 +24,289 @@
|
|
|
28
24
|
// withdrawn BOOLEAN DEFAULT FALSE,
|
|
29
25
|
// INDEX idx_type (type),
|
|
30
26
|
// INDEX idx_concentration (concentration),
|
|
31
|
-
// INDEX idx_unclaimed (
|
|
27
|
+
// INDEX idx_unclaimed (withdrawn, claimed_by)
|
|
32
28
|
// );
|
|
33
29
|
//
|
|
34
|
-
//
|
|
35
|
-
// -
|
|
36
|
-
// -
|
|
37
|
-
// -
|
|
38
|
-
// - Signals themselves can be branched and merged!
|
|
30
|
+
// Branching capability:
|
|
31
|
+
// - createBranch / mergeBranch / diffBranch
|
|
32
|
+
// - Colonies can operate on branches for isolation
|
|
33
|
+
// - Dolt handles merge conflicts at the row level
|
|
39
34
|
// ============================================================
|
|
40
35
|
import { registerEnvironment } from '../../core/environment-registry.js';
|
|
36
|
+
import { createSignal } from '../../core/signal.js';
|
|
37
|
+
import { validateSignalInput } from '../../core/validation.js';
|
|
38
|
+
import { DoltHubClient, sqlValue } from './client.js';
|
|
39
|
+
import { tryCreateSQLClient } from './sql-client.js';
|
|
40
|
+
const CREATE_TABLE_SQL = `CREATE TABLE IF NOT EXISTS signals (
|
|
41
|
+
id VARCHAR(64) PRIMARY KEY,
|
|
42
|
+
type VARCHAR(255) NOT NULL,
|
|
43
|
+
payload JSON,
|
|
44
|
+
deposited_at BIGINT NOT NULL,
|
|
45
|
+
deposited_by VARCHAR(255),
|
|
46
|
+
concentration DECIMAL(5,4) DEFAULT 1.0,
|
|
47
|
+
ttl BIGINT,
|
|
48
|
+
claimed_by VARCHAR(255),
|
|
49
|
+
claimed_at BIGINT,
|
|
50
|
+
claim_lease BIGINT,
|
|
51
|
+
caused_by JSON,
|
|
52
|
+
tags JSON,
|
|
53
|
+
withdrawn BOOLEAN DEFAULT FALSE,
|
|
54
|
+
INDEX idx_type (type),
|
|
55
|
+
INDEX idx_concentration (concentration),
|
|
56
|
+
INDEX idx_unclaimed (withdrawn, claimed_by)
|
|
57
|
+
)`;
|
|
41
58
|
export class DoltEnvironment {
|
|
42
59
|
name;
|
|
60
|
+
client;
|
|
61
|
+
sqlClient;
|
|
43
62
|
config;
|
|
63
|
+
pollInterval;
|
|
64
|
+
initPromise;
|
|
44
65
|
constructor(config) {
|
|
45
66
|
this.config = config;
|
|
46
|
-
this.
|
|
67
|
+
this.client = new DoltHubClient(config);
|
|
68
|
+
this.name = config.name ?? `dolt:${config.owner}/${config.database}/${config.branch ?? 'main'}`;
|
|
69
|
+
this.pollInterval = config.pollInterval ?? 5000;
|
|
70
|
+
}
|
|
71
|
+
ensureInit() {
|
|
72
|
+
if (!this.initPromise) {
|
|
73
|
+
this.initPromise = this.doInit();
|
|
74
|
+
}
|
|
75
|
+
return this.initPromise;
|
|
76
|
+
}
|
|
77
|
+
async doInit() {
|
|
78
|
+
// Try to connect via mysql2 if sql config provided
|
|
79
|
+
if (this.config.sql && !this.sqlClient) {
|
|
80
|
+
const client = await tryCreateSQLClient(this.config.sql);
|
|
81
|
+
if (client) {
|
|
82
|
+
this.sqlClient = client;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
await this.activeClient.execute(CREATE_TABLE_SQL);
|
|
86
|
+
}
|
|
87
|
+
/** Returns the SQL client if available, otherwise falls back to HTTP client */
|
|
88
|
+
get activeClient() {
|
|
89
|
+
return this.sqlClient ?? this.client;
|
|
47
90
|
}
|
|
48
91
|
// ----------------------------------------------------------
|
|
49
|
-
//
|
|
50
|
-
// The interface is identical to FilesystemEnvironment so
|
|
51
|
-
// colony definitions work unchanged across either env.
|
|
92
|
+
// Core operations
|
|
52
93
|
// ----------------------------------------------------------
|
|
53
94
|
async observe(query) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
95
|
+
await this.ensureInit();
|
|
96
|
+
const conditions = ['withdrawn = FALSE'];
|
|
97
|
+
if (query.type) {
|
|
98
|
+
if (Array.isArray(query.type)) {
|
|
99
|
+
const likes = query.type.map(t => `type LIKE ${sqlValue(globToLike(t))}`);
|
|
100
|
+
conditions.push(`(${likes.join(' OR ')})`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
conditions.push(`type LIKE ${sqlValue(globToLike(query.type))}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (query.minConcentration !== undefined) {
|
|
107
|
+
conditions.push(`concentration >= ${sqlValue(query.minConcentration)}`);
|
|
108
|
+
}
|
|
109
|
+
if (query.unclaimed) {
|
|
110
|
+
conditions.push('claimed_by IS NULL');
|
|
111
|
+
}
|
|
112
|
+
if (query.tags && query.tags.length > 0) {
|
|
113
|
+
// Check that all query tags exist in the signal's tags JSON array
|
|
114
|
+
for (const tag of query.tags) {
|
|
115
|
+
conditions.push(`JSON_CONTAINS(tags, ${sqlValue(JSON.stringify(tag))})`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (query.after !== undefined) {
|
|
119
|
+
conditions.push(`deposited_at > ${sqlValue(query.after)}`);
|
|
120
|
+
}
|
|
121
|
+
let sql = `SELECT * FROM signals WHERE ${conditions.join(' AND ')} ORDER BY concentration DESC`;
|
|
122
|
+
if (query.limit) {
|
|
123
|
+
sql += ` LIMIT ${sanitizeLimit(query.limit)}`;
|
|
124
|
+
}
|
|
125
|
+
const { rows } = await this.activeClient.query(sql);
|
|
126
|
+
let signals = rows.map(rowToSignal);
|
|
127
|
+
// Apply custom filter predicate if provided (can't express in SQL)
|
|
128
|
+
if (query.filter) {
|
|
129
|
+
signals = signals.filter(query.filter);
|
|
130
|
+
}
|
|
131
|
+
return signals;
|
|
57
132
|
}
|
|
58
133
|
async deposit(input) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
134
|
+
await this.ensureInit();
|
|
135
|
+
validateSignalInput(input);
|
|
136
|
+
const signal = createSignal(input.type, input.payload, {
|
|
137
|
+
deposited_by: input.meta?.deposited_by,
|
|
138
|
+
ttl: input.meta?.ttl,
|
|
139
|
+
tags: input.meta?.tags,
|
|
140
|
+
caused_by: input.meta?.caused_by,
|
|
141
|
+
concentration: input.meta?.concentration,
|
|
142
|
+
});
|
|
143
|
+
const sql = `INSERT INTO signals (id, type, payload, deposited_at, deposited_by, concentration, ttl, caused_by, tags, withdrawn) VALUES (${sqlValue(signal.id)}, ${sqlValue(signal.type)}, ${sqlValue(JSON.stringify(signal.payload))}, ${sqlValue(signal.meta.deposited_at)}, ${sqlValue(signal.meta.deposited_by)}, ${sqlValue(signal.meta.concentration)}, ${signal.meta.ttl != null ? sqlValue(signal.meta.ttl) : 'NULL'}, ${signal.meta.caused_by ? sqlValue(JSON.stringify(signal.meta.caused_by)) : 'NULL'}, ${signal.meta.tags ? sqlValue(JSON.stringify(signal.meta.tags)) : 'NULL'}, FALSE)`;
|
|
144
|
+
await this.activeClient.execute(sql);
|
|
145
|
+
return signal;
|
|
62
146
|
}
|
|
63
147
|
async withdraw(signalId) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
throw new Error('DoltEnvironment: not yet implemented.');
|
|
148
|
+
await this.ensureInit();
|
|
149
|
+
await this.activeClient.execute(`UPDATE signals SET withdrawn = TRUE WHERE id = ${sqlValue(signalId)}`);
|
|
67
150
|
}
|
|
68
|
-
async
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
151
|
+
async update(signalId, changes) {
|
|
152
|
+
await this.ensureInit();
|
|
153
|
+
const setClauses = [];
|
|
154
|
+
if (changes.payload) {
|
|
155
|
+
// Read current payload, merge, then SET
|
|
156
|
+
const { rows } = await this.activeClient.query(`SELECT payload FROM signals WHERE id = ${sqlValue(signalId)} AND withdrawn = FALSE`);
|
|
157
|
+
if (rows.length === 0) {
|
|
158
|
+
throw new Error(`Signal ${signalId} not found or already withdrawn`);
|
|
159
|
+
}
|
|
160
|
+
const current = (parseJSON(rows[0].payload) ?? {});
|
|
161
|
+
const merged = { ...current, ...changes.payload };
|
|
162
|
+
setClauses.push(`payload = ${sqlValue(JSON.stringify(merged))}`);
|
|
163
|
+
}
|
|
164
|
+
if (changes.meta?.tags !== undefined) {
|
|
165
|
+
setClauses.push(`tags = ${sqlValue(JSON.stringify(changes.meta.tags))}`);
|
|
166
|
+
}
|
|
167
|
+
if (changes.meta?.concentration !== undefined) {
|
|
168
|
+
setClauses.push(`concentration = ${sqlValue(changes.meta.concentration)}`);
|
|
169
|
+
}
|
|
170
|
+
if (setClauses.length === 0) {
|
|
171
|
+
// No changes — just read and return
|
|
172
|
+
const { rows } = await this.activeClient.query(`SELECT * FROM signals WHERE id = ${sqlValue(signalId)} AND withdrawn = FALSE`);
|
|
173
|
+
if (rows.length === 0) {
|
|
174
|
+
throw new Error(`Signal ${signalId} not found or already withdrawn`);
|
|
175
|
+
}
|
|
176
|
+
return rowToSignal(rows[0]);
|
|
177
|
+
}
|
|
178
|
+
const updateSql = `UPDATE signals SET ${setClauses.join(', ')} WHERE id = ${sqlValue(signalId)} AND withdrawn = FALSE`;
|
|
179
|
+
const result = await this.activeClient.execute(updateSql);
|
|
180
|
+
if (result.affectedRows === 0) {
|
|
181
|
+
throw new Error(`Signal ${signalId} not found or already withdrawn`);
|
|
182
|
+
}
|
|
183
|
+
// Re-read the updated signal
|
|
184
|
+
const { rows } = await this.activeClient.query(`SELECT * FROM signals WHERE id = ${sqlValue(signalId)}`);
|
|
185
|
+
return rowToSignal(rows[0]);
|
|
186
|
+
}
|
|
187
|
+
async claim(signalId, claimant, leaseDuration = 60_000) {
|
|
188
|
+
await this.ensureInit();
|
|
189
|
+
const now = Date.now();
|
|
190
|
+
const sql = `UPDATE signals SET claimed_by = ${sqlValue(claimant)}, claimed_at = ${sqlValue(now)}, claim_lease = ${sqlValue(leaseDuration)} WHERE id = ${sqlValue(signalId)} AND withdrawn = FALSE AND (claimed_by IS NULL OR (claimed_at + claim_lease) < ${sqlValue(now)})`;
|
|
191
|
+
const result = await this.activeClient.execute(sql);
|
|
192
|
+
return result.affectedRows > 0;
|
|
72
193
|
}
|
|
73
194
|
async release(signalId) {
|
|
74
|
-
|
|
75
|
-
|
|
195
|
+
await this.ensureInit();
|
|
196
|
+
await this.activeClient.execute(`UPDATE signals SET claimed_by = NULL, claimed_at = NULL, claim_lease = NULL WHERE id = ${sqlValue(signalId)}`);
|
|
76
197
|
}
|
|
77
198
|
watch(query, callback) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
199
|
+
const seen = new Set();
|
|
200
|
+
let active = true;
|
|
201
|
+
let timer;
|
|
202
|
+
const poll = async () => {
|
|
203
|
+
if (!active)
|
|
204
|
+
return;
|
|
205
|
+
try {
|
|
206
|
+
const signals = await this.observe(query);
|
|
207
|
+
for (const signal of signals) {
|
|
208
|
+
if (!active)
|
|
209
|
+
return;
|
|
210
|
+
if (!seen.has(signal.id)) {
|
|
211
|
+
seen.add(signal.id);
|
|
212
|
+
callback(signal);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
// Swallow errors during polling — will retry on next interval
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
// Initial poll, then interval
|
|
221
|
+
const setup = async () => {
|
|
222
|
+
await poll();
|
|
223
|
+
if (active) {
|
|
224
|
+
timer = setInterval(poll, this.pollInterval);
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
setup();
|
|
228
|
+
return {
|
|
229
|
+
unsubscribe() {
|
|
230
|
+
active = false;
|
|
231
|
+
if (timer)
|
|
232
|
+
clearInterval(timer);
|
|
233
|
+
},
|
|
234
|
+
};
|
|
81
235
|
}
|
|
82
236
|
async history(query) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
237
|
+
await this.ensureInit();
|
|
238
|
+
const conditions = [];
|
|
239
|
+
if (!query.includeWithdrawn) {
|
|
240
|
+
conditions.push('withdrawn = FALSE');
|
|
241
|
+
}
|
|
242
|
+
if (query.type) {
|
|
243
|
+
if (Array.isArray(query.type)) {
|
|
244
|
+
const likes = query.type.map(t => `type LIKE ${sqlValue(globToLike(t))}`);
|
|
245
|
+
conditions.push(`(${likes.join(' OR ')})`);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
conditions.push(`type LIKE ${sqlValue(globToLike(query.type))}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
252
|
+
let sql = `SELECT * FROM signals ${where} ORDER BY deposited_at DESC`;
|
|
253
|
+
if (query.limit) {
|
|
254
|
+
sql += ` LIMIT ${sanitizeLimit(query.limit)}`;
|
|
255
|
+
}
|
|
256
|
+
const { rows } = await this.activeClient.query(sql);
|
|
257
|
+
let signals = rows.map(rowToSignal);
|
|
258
|
+
if (query.filter) {
|
|
259
|
+
signals = signals.filter(query.filter);
|
|
260
|
+
}
|
|
261
|
+
return signals;
|
|
89
262
|
}
|
|
90
263
|
async decay() {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
//
|
|
95
|
-
|
|
264
|
+
await this.ensureInit();
|
|
265
|
+
const now = Date.now();
|
|
266
|
+
const result = { decayed: 0, evaporated: 0, claimsReleased: 0 };
|
|
267
|
+
// Step 1: Release expired claims
|
|
268
|
+
const claimResult = await this.activeClient.execute(`UPDATE signals SET claimed_by = NULL, claimed_at = NULL, claim_lease = NULL WHERE claimed_by IS NOT NULL AND (claimed_at + claim_lease) < ${sqlValue(now)}`);
|
|
269
|
+
result.claimsReleased = claimResult.affectedRows;
|
|
270
|
+
// Step 2: Evaporate signals below floor or past TTL
|
|
271
|
+
// Target concentration = 1.0 - rate * age. Evaporate when target < 0.05.
|
|
272
|
+
const evapResult = await this.activeClient.execute(`UPDATE signals SET withdrawn = TRUE WHERE withdrawn = FALSE AND ((1.0 - (0.01 * (${sqlValue(now)} - deposited_at) / 1000.0)) < 0.05 OR (ttl IS NOT NULL AND (deposited_at + ttl) < ${sqlValue(now)}))`);
|
|
273
|
+
result.evaporated = evapResult.affectedRows;
|
|
274
|
+
// Step 3: Update remaining concentrations
|
|
275
|
+
// Directly SET the target concentration (linear decay from 1.0).
|
|
276
|
+
// Use LEAST(concentration, target) to never increase concentration
|
|
277
|
+
// (handles signals deposited at <1.0, e.g. gated signals).
|
|
278
|
+
const decayResult = await this.activeClient.execute(`UPDATE signals SET concentration = LEAST(concentration, GREATEST(0, 1.0 - (0.01 * (${sqlValue(now)} - deposited_at) / 1000.0))) WHERE withdrawn = FALSE`);
|
|
279
|
+
result.decayed = decayResult.affectedRows;
|
|
280
|
+
return result;
|
|
96
281
|
}
|
|
97
282
|
async snapshot() {
|
|
98
|
-
|
|
99
|
-
|
|
283
|
+
await this.ensureInit();
|
|
284
|
+
const { rows } = await this.activeClient.query('SELECT * FROM signals WHERE withdrawn = FALSE ORDER BY concentration DESC');
|
|
285
|
+
return rows.map(rowToSignal);
|
|
100
286
|
}
|
|
287
|
+
// ----------------------------------------------------------
|
|
288
|
+
// Lifecycle
|
|
289
|
+
// ----------------------------------------------------------
|
|
290
|
+
/** Close the mysql2 connection pool (if active). Call on shutdown to prevent leaks. */
|
|
291
|
+
async close() {
|
|
292
|
+
if (this.sqlClient) {
|
|
293
|
+
await this.sqlClient.close();
|
|
294
|
+
this.sqlClient = undefined;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
// ----------------------------------------------------------
|
|
298
|
+
// Serialization
|
|
299
|
+
// ----------------------------------------------------------
|
|
101
300
|
serialize() {
|
|
102
|
-
|
|
301
|
+
const config = {
|
|
103
302
|
type: 'dolt',
|
|
104
303
|
name: this.name,
|
|
105
|
-
|
|
304
|
+
owner: this.config.owner,
|
|
106
305
|
database: this.config.database,
|
|
107
306
|
branch: this.config.branch,
|
|
307
|
+
apiBase: this.config.apiBase,
|
|
108
308
|
};
|
|
309
|
+
return config;
|
|
109
310
|
}
|
|
110
311
|
// ----------------------------------------------------------
|
|
111
312
|
// Dolt-specific operations (not part of the base interface)
|
|
@@ -115,31 +316,90 @@ export class DoltEnvironment {
|
|
|
115
316
|
* Colonies can operate on branches for isolation/experimentation.
|
|
116
317
|
*/
|
|
117
318
|
async createBranch(branchName, fromBranch) {
|
|
118
|
-
|
|
119
|
-
throw new Error('DoltEnvironment: not yet implemented.');
|
|
319
|
+
await this.client.createBranch(branchName, fromBranch);
|
|
120
320
|
}
|
|
121
321
|
/**
|
|
122
322
|
* Merge a branch back. Signals deposited on the branch become visible on target.
|
|
123
323
|
* Dolt handles merge conflicts at the row level.
|
|
124
324
|
*/
|
|
125
325
|
async mergeBranch(sourceBranch, targetBranch) {
|
|
126
|
-
|
|
127
|
-
throw new Error('DoltEnvironment: not yet implemented.');
|
|
326
|
+
await this.client.mergeBranch(sourceBranch, targetBranch ?? this.client.branch);
|
|
128
327
|
}
|
|
129
328
|
/**
|
|
130
329
|
* Diff two branches to see what signals changed.
|
|
131
330
|
* Useful for Critic colonies reviewing Shaper work.
|
|
132
331
|
*/
|
|
133
332
|
async diffBranch(branch1, branch2) {
|
|
134
|
-
|
|
135
|
-
|
|
333
|
+
const { rows } = await this.client.query(`SELECT * FROM dolt_diff('signals', ${sqlValue(branch1)}, ${sqlValue(branch2)})`);
|
|
334
|
+
return rows.map(rowToSignal);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
// ----------------------------------------------------------
|
|
338
|
+
// Helpers
|
|
339
|
+
// ----------------------------------------------------------
|
|
340
|
+
/**
|
|
341
|
+
* Convert a glob pattern to a SQL LIKE pattern.
|
|
342
|
+
* `*` → `%`, `?` → `_`, escape existing `%` and `_`.
|
|
343
|
+
*/
|
|
344
|
+
function globToLike(glob) {
|
|
345
|
+
return glob
|
|
346
|
+
.replace(/%/g, '\\%')
|
|
347
|
+
.replace(/_/g, '\\_')
|
|
348
|
+
.replace(/\*/g, '%')
|
|
349
|
+
.replace(/\?/g, '_');
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Map a database row to a Signal object.
|
|
353
|
+
* Handles JSON columns that may be strings or already-parsed objects.
|
|
354
|
+
*/
|
|
355
|
+
function rowToSignal(row) {
|
|
356
|
+
return {
|
|
357
|
+
id: row.id,
|
|
358
|
+
type: row.type,
|
|
359
|
+
payload: (parseJSON(row.payload) ?? {}),
|
|
360
|
+
meta: {
|
|
361
|
+
deposited_at: Number(row.deposited_at),
|
|
362
|
+
deposited_by: row.deposited_by ?? undefined,
|
|
363
|
+
concentration: Number(row.concentration),
|
|
364
|
+
ttl: row.ttl != null ? Number(row.ttl) : undefined,
|
|
365
|
+
claimed_by: row.claimed_by ?? undefined,
|
|
366
|
+
claimed_at: row.claimed_at != null ? Number(row.claimed_at) : undefined,
|
|
367
|
+
claim_lease: row.claim_lease != null ? Number(row.claim_lease) : undefined,
|
|
368
|
+
caused_by: parseJSON(row.caused_by) ?? undefined,
|
|
369
|
+
tags: parseJSON(row.tags) ?? undefined,
|
|
370
|
+
},
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Coerce a limit value to a safe positive integer for SQL interpolation.
|
|
375
|
+
* Prevents SQL injection through unvalidated limit values.
|
|
376
|
+
*/
|
|
377
|
+
function sanitizeLimit(value) {
|
|
378
|
+
const n = Math.floor(Number(value));
|
|
379
|
+
if (!Number.isFinite(n) || n < 1)
|
|
380
|
+
return 1;
|
|
381
|
+
return n;
|
|
382
|
+
}
|
|
383
|
+
function parseJSON(value) {
|
|
384
|
+
if (value === null || value === undefined)
|
|
385
|
+
return undefined;
|
|
386
|
+
if (typeof value === 'string') {
|
|
387
|
+
try {
|
|
388
|
+
return JSON.parse(value);
|
|
389
|
+
}
|
|
390
|
+
catch {
|
|
391
|
+
return value;
|
|
392
|
+
}
|
|
136
393
|
}
|
|
394
|
+
return value;
|
|
137
395
|
}
|
|
138
396
|
// Self-register for deserialization
|
|
139
397
|
registerEnvironment('dolt', (c) => new DoltEnvironment({
|
|
140
|
-
|
|
398
|
+
owner: c.owner,
|
|
141
399
|
database: c.database,
|
|
142
400
|
branch: c.branch,
|
|
401
|
+
apiBase: c.apiBase,
|
|
143
402
|
name: c.name,
|
|
403
|
+
sql: c.sql,
|
|
144
404
|
}));
|
|
145
405
|
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/environments/dolt/adapter.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,kCAAkC;AAClC,+DAA+D;AAC/D,mDAAmD;AACnD,yDAAyD;AACzD,EAAE;AACF,yCAAyC;AACzC,6DAA6D;AAC7D,8DAA8D;AAC9D,kEAAkE;AAClE,wCAAwC;AACxC,mEAAmE;AACnE,EAAE;AACF,UAAU;AACV,2BAA2B;AAC3B,kCAAkC;AAClC,kCAAkC;AAClC,oBAAoB;AACpB,oCAAoC;AACpC,iCAAiC;AACjC,8CAA8C;AAC9C,kBAAkB;AAClB,+BAA+B;AAC/B,yBAAyB;AACzB,0BAA0B;AAC1B,sBAAsB;AACtB,iBAAiB;AACjB,uCAAuC;AACvC,6BAA6B;AAC7B,+CAA+C;AAC/C,kDAAkD;AAClD,OAAO;AACP,EAAE;AACF,2DAA2D;AAC3D,2CAA2C;AAC3C,gDAAgD;AAChD,+DAA+D;AAC/D,qDAAqD;AACrD,+DAA+D;AAO/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAazE,MAAM,OAAO,eAAe;IACjB,IAAI,CAAS;IACd,MAAM,CAAgB;IAE9B,YAAY,MAAqB;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;IAClF,CAAC;IAED,6DAA6D;IAC7D,uDAAuD;IACvD,yDAAyD;IACzD,uDAAuD;IACvD,6DAA6D;IAE7D,KAAK,CAAC,OAAO,CAAC,KAAkB;QAC9B,kGAAkG;QAClG,wEAAwE;QACxE,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAmE;QAC/E,2EAA2E;QAC3E,+EAA+E;QAC/E,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,yDAAyD;QACzD,iFAAiF;QACjF,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,QAAgB,EAAE,aAAsB;QACpE,yEAAyE;QACzE,2EAA2E;QAC3E,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,6EAA6E;QAC7E,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,KAAkB,EAAE,QAAkC;QAC1D,6DAA6D;QAC7D,wFAAwF;QACxF,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAmD;QAC/D,mCAAmC;QACnC,yDAAyD;QACzD,4DAA4D;QAC5D,uEAAuE;QACvE,4DAA4D;QAC5D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,KAAK;QACT,4EAA4E;QAC5E,gCAAgC;QAChC,wDAAwD;QACxD,uEAAuE;QACvE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,kFAAkF;QAClF,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,SAAS;QACP,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAC9C,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;SAC3B,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,4DAA4D;IAC5D,6DAA6D;IAE7D;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,UAAmB;QACxD,2DAA2D;QAC3D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,YAAoB,EAAE,YAAqB;QAC3D,yEAAyE;QACzE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,OAAe;QAC/C,6DAA6D;QAC7D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;CACF;AAED,oCAAoC;AACpC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC;IACrD,gBAAgB,EAAE,CAAC,CAAC,gBAA0B;IAC9C,QAAQ,EAAE,CAAC,CAAC,QAAkB;IAC9B,MAAM,EAAE,CAAC,CAAC,MAA4B;IACtC,IAAI,EAAE,CAAC,CAAC,IAAI;CACb,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/environments/dolt/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export interface DoltHubConfig {
|
|
2
|
+
/** DoltHub database owner (user or organization) */
|
|
3
|
+
owner: string;
|
|
4
|
+
/** Database name on DoltHub */
|
|
5
|
+
database: string;
|
|
6
|
+
/** Branch to operate on (default: 'main') */
|
|
7
|
+
branch?: string;
|
|
8
|
+
/** DoltHub API token (format: "dhat.v1.xxx"). Falls back to DOLTHUB_TOKEN env var */
|
|
9
|
+
token?: string;
|
|
10
|
+
/** API base URL (default: 'https://www.dolthub.com') */
|
|
11
|
+
apiBase?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class DoltHubError extends Error {
|
|
14
|
+
status: number;
|
|
15
|
+
responseBody?: unknown | undefined;
|
|
16
|
+
constructor(message: string, status: number, responseBody?: unknown | undefined);
|
|
17
|
+
}
|
|
18
|
+
export declare class DoltHubClient {
|
|
19
|
+
private readonly owner;
|
|
20
|
+
private readonly database;
|
|
21
|
+
readonly branch: string;
|
|
22
|
+
private readonly token;
|
|
23
|
+
private readonly apiBase;
|
|
24
|
+
constructor(config: DoltHubConfig);
|
|
25
|
+
/**
|
|
26
|
+
* Execute a read-only SQL query against the database.
|
|
27
|
+
* Returns rows as plain objects and column names.
|
|
28
|
+
*/
|
|
29
|
+
query<T = Record<string, unknown>>(sql: string): Promise<{
|
|
30
|
+
rows: T[];
|
|
31
|
+
columns: string[];
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Execute a write SQL statement (INSERT, UPDATE, DELETE, CREATE TABLE, etc.).
|
|
35
|
+
* Writes go through the async write endpoint — we poll until complete.
|
|
36
|
+
*/
|
|
37
|
+
execute(sql: string): Promise<{
|
|
38
|
+
affectedRows: number;
|
|
39
|
+
message: string;
|
|
40
|
+
}>;
|
|
41
|
+
/**
|
|
42
|
+
* Create a new branch from an existing ref.
|
|
43
|
+
*/
|
|
44
|
+
createBranch(name: string, fromRef?: string): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* List all branches in the database.
|
|
47
|
+
*/
|
|
48
|
+
listBranches(): Promise<string[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Merge source branch into target branch.
|
|
51
|
+
* Uses the write endpoint with no query — DoltHub interprets this as a merge.
|
|
52
|
+
*/
|
|
53
|
+
mergeBranch(source: string, target: string): Promise<void>;
|
|
54
|
+
private fetch;
|
|
55
|
+
private parseResponse;
|
|
56
|
+
private pollOperation;
|
|
57
|
+
private parseWriteResult;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Escape a string value for safe interpolation into a SQL query.
|
|
61
|
+
* Handles single quotes, backslashes, and null bytes.
|
|
62
|
+
*
|
|
63
|
+
* This is used for internal values (signal IDs, colony names, type strings)
|
|
64
|
+
* — not arbitrary user input from the internet.
|
|
65
|
+
*/
|
|
66
|
+
export declare function escapeSQL(value: string): string;
|
|
67
|
+
/**
|
|
68
|
+
* Format a value for SQL interpolation.
|
|
69
|
+
* Strings are quoted and escaped, numbers/booleans are literal, null/undefined become NULL.
|
|
70
|
+
*/
|
|
71
|
+
export declare function sqlValue(value: unknown): string;
|
|
72
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/environments/dolt/client.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,YAAa,SAAQ,KAAK;IAG5B,MAAM,EAAE,MAAM;IACd,YAAY,CAAC,EAAE,OAAO;gBAF7B,OAAO,EAAE,MAAM,EACR,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,OAAO,YAAA;CAKhC;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,aAAa;IAYjC;;;OAGG;IACG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAkBhG;;;OAGG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAqB9E;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBjE;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAYvC;;;OAGG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAelD,KAAK;YAYL,aAAa;YAkBb,aAAa;IAyB3B,OAAO,CAAC,gBAAgB;CASzB;AAMD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ/C;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAO/C"}
|