@withone/cli 1.52.1 → 1.52.3
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 +16 -0
- package/dist/{chunk-2VDKHGVN.js → chunk-5O5KODGV.js} +1 -1
- package/dist/{chunk-HSKAP73B.js → chunk-DDCDPVJH.js} +10 -5
- package/dist/{chunk-RASDPNMJ.js → chunk-EVEUGRCB.js} +12 -3
- package/dist/{chunk-I3ODIT2N.js → chunk-GNSR3NYN.js} +2 -2
- package/dist/{chunk-P5KRUMV3.js → chunk-IKYXS7EI.js} +59 -8
- package/dist/{chunk-PQQAMG2S.js → chunk-OWDR5L3Q.js} +2 -2
- package/dist/{chunk-RKQXOFTX.js → chunk-WXJWF7QG.js} +8 -8
- package/dist/{embedding-AVBSB7SG.js → embedding-Z2WCDN6R.js} +2 -2
- package/dist/{flow-runner-ZZEJ6CZI.js → flow-runner-MVSJ2GB7.js} +2 -2
- package/dist/index.js +100 -101
- package/dist/{migrate-SOHPYWUU.js → migrate-U2MZVGU6.js} +5 -5
- package/dist/{runtime-LBDMRCH2.js → runtime-AFXLC4IC.js} +3 -3
- package/dist/{schema-GKS6MF25.js → schema-4JJO2CIZ.js} +4 -4
- package/dist/sql-3WNYRCWP.js +12 -0
- package/package.json +2 -2
- package/dist/sql-YVDVJK7L.js +0 -12
package/README.md
CHANGED
|
@@ -683,6 +683,22 @@ ONE_PERMISSIONS=read
|
|
|
683
683
|
|
|
684
684
|
> ⚠️ **Add `.onerc` to your `.gitignore`.** If you put `ONE_SECRET` in it, committing the file will leak your API key. Treat `.onerc` like `.env` — never check it in.
|
|
685
685
|
|
|
686
|
+
### Relocating the CLI's state (`ONE_HOME`)
|
|
687
|
+
|
|
688
|
+
Everything the CLI stores — `~/.one/config.json`, the knowledge cache, memory
|
|
689
|
+
databases, sync schedules, and the installed skill files — is rooted at your
|
|
690
|
+
home directory. Set `ONE_HOME` to put it somewhere else:
|
|
691
|
+
|
|
692
|
+
```bash
|
|
693
|
+
export ONE_HOME=/srv/one-state
|
|
694
|
+
one whoami # now reads /srv/one-state/.one/config.json
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
Useful for containers, CI runners, and shared/multi-tenant shells where the
|
|
698
|
+
account's home directory isn't the right place for per-workspace state. It
|
|
699
|
+
works identically on every platform — unlike `HOME`, which `os.homedir()`
|
|
700
|
+
ignores on Windows.
|
|
701
|
+
|
|
686
702
|
## The workflow
|
|
687
703
|
|
|
688
704
|
The power of One is in the workflow. Every interaction follows the same pattern:
|
|
@@ -5,10 +5,11 @@ import {
|
|
|
5
5
|
getMemoryConfig,
|
|
6
6
|
getMemoryConfigOrDefault,
|
|
7
7
|
updateMemoryConfig
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-5O5KODGV.js";
|
|
9
9
|
import {
|
|
10
|
-
getOpenAiApiKey
|
|
11
|
-
|
|
10
|
+
getOpenAiApiKey,
|
|
11
|
+
homeDir
|
|
12
|
+
} from "./chunk-EVEUGRCB.js";
|
|
12
13
|
|
|
13
14
|
// src/lib/memory/schema.ts
|
|
14
15
|
var SCHEMA_VERSION = "2.3.1";
|
|
@@ -1458,7 +1459,6 @@ var postgresPlugin = {
|
|
|
1458
1459
|
import fs from "fs";
|
|
1459
1460
|
import net from "net";
|
|
1460
1461
|
import path from "path";
|
|
1461
|
-
import os from "os";
|
|
1462
1462
|
import { createRequire } from "module";
|
|
1463
1463
|
import { spawn } from "child_process";
|
|
1464
1464
|
var requireFromHere = createRequire(import.meta.url);
|
|
@@ -1473,7 +1473,12 @@ var BASE_CAPABILITIES = {
|
|
|
1473
1473
|
rawSql: true
|
|
1474
1474
|
};
|
|
1475
1475
|
var DEFAULTS = {
|
|
1476
|
-
|
|
1476
|
+
// Getter, not a bound value: DEFAULTS is built at module load, so a plain
|
|
1477
|
+
// `path.join(homeDir(), ...)` here would capture the home directory before
|
|
1478
|
+
// ONE_HOME could take effect. See lib/home.ts.
|
|
1479
|
+
get dataDir() {
|
|
1480
|
+
return path.join(homeDir(), ".one", "pg");
|
|
1481
|
+
},
|
|
1477
1482
|
database: "one_mem",
|
|
1478
1483
|
schema: "public",
|
|
1479
1484
|
pgvector: true,
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
+
// src/lib/home.ts
|
|
2
|
+
import os from "os";
|
|
3
|
+
function homeDir() {
|
|
4
|
+
const override = process.env.ONE_HOME;
|
|
5
|
+
if (override && override.trim() !== "") return override;
|
|
6
|
+
return os.homedir();
|
|
7
|
+
}
|
|
8
|
+
|
|
1
9
|
// src/lib/config.ts
|
|
2
10
|
import fs from "fs";
|
|
3
11
|
import path from "path";
|
|
4
|
-
import os from "os";
|
|
5
12
|
import { randomUUID } from "crypto";
|
|
6
13
|
function configDir() {
|
|
7
|
-
return path.join(
|
|
14
|
+
return path.join(homeDir(), ".one");
|
|
8
15
|
}
|
|
9
16
|
function configFile() {
|
|
10
17
|
return path.join(configDir(), "config.json");
|
|
@@ -15,11 +22,12 @@ function projectsDir() {
|
|
|
15
22
|
function getProjectRoot(cwd = process.cwd()) {
|
|
16
23
|
let dir = path.resolve(cwd);
|
|
17
24
|
const root = path.parse(dir).root;
|
|
18
|
-
const home =
|
|
25
|
+
const home = homeDir();
|
|
19
26
|
while (dir !== root) {
|
|
20
27
|
if (dir !== home && (fs.existsSync(path.join(dir, ".one")) || fs.existsSync(path.join(dir, ".git")) || fs.existsSync(path.join(dir, "package.json")))) {
|
|
21
28
|
return dir;
|
|
22
29
|
}
|
|
30
|
+
if (dir === home) break;
|
|
23
31
|
dir = path.dirname(dir);
|
|
24
32
|
}
|
|
25
33
|
return path.resolve(cwd);
|
|
@@ -366,6 +374,7 @@ function writeUsageState(state) {
|
|
|
366
374
|
}
|
|
367
375
|
|
|
368
376
|
export {
|
|
377
|
+
homeDir,
|
|
369
378
|
getProjectRoot,
|
|
370
379
|
getProjectConfigPath,
|
|
371
380
|
getGlobalConfigPath,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getMemoryConfigOrDefault
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5O5KODGV.js";
|
|
4
4
|
import {
|
|
5
5
|
getOpenAiApiKey,
|
|
6
6
|
readConfig
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-EVEUGRCB.js";
|
|
8
8
|
|
|
9
9
|
// src/lib/output.ts
|
|
10
10
|
import * as p from "@clack/prompts";
|
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
note,
|
|
7
7
|
okJson,
|
|
8
8
|
requireMemoryInit
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-GNSR3NYN.js";
|
|
10
10
|
import {
|
|
11
11
|
getBackend,
|
|
12
12
|
upsertRecord
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-DDCDPVJH.js";
|
|
14
14
|
|
|
15
15
|
// src/commands/mem/migrate.ts
|
|
16
16
|
import fs4 from "fs";
|
|
@@ -216,6 +216,32 @@ function listSyncedPlatforms() {
|
|
|
216
216
|
if (!fs3.existsSync(DATA_DIR)) return [];
|
|
217
217
|
return fs3.readdirSync(DATA_DIR).filter((f) => f.endsWith(".db")).map((f) => f.replace(/\.db$/, ""));
|
|
218
218
|
}
|
|
219
|
+
function isDriverFault(err) {
|
|
220
|
+
const code = err?.code;
|
|
221
|
+
if (code === "ERR_DLOPEN_FAILED") return true;
|
|
222
|
+
const msg = err instanceof Error ? err.message : String(err ?? "");
|
|
223
|
+
return /NODE_MODULE_VERSION|compiled against a different Node\.js version|Could not locate the bindings file|invalid ELF header|wrong ELF class|symbol not found|image not found|not a valid Win32 application/i.test(msg);
|
|
224
|
+
}
|
|
225
|
+
function passesIntegrityCheck(Ctor, dbPath) {
|
|
226
|
+
let probe;
|
|
227
|
+
try {
|
|
228
|
+
probe = new Ctor(dbPath, { readonly: true, fileMustExist: true });
|
|
229
|
+
const result = probe.pragma("quick_check");
|
|
230
|
+
const first = Array.isArray(result) ? result[0] : result;
|
|
231
|
+
const verdict = typeof first === "string" ? first : first?.quick_check;
|
|
232
|
+
return verdict === "ok";
|
|
233
|
+
} catch {
|
|
234
|
+
return false;
|
|
235
|
+
} finally {
|
|
236
|
+
try {
|
|
237
|
+
probe?.close();
|
|
238
|
+
} catch {
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
function backupPathFor(dbPath, now = /* @__PURE__ */ new Date()) {
|
|
243
|
+
return `${dbPath}.bak.${now.toISOString().replace(/[:.]/g, "-")}`;
|
|
244
|
+
}
|
|
219
245
|
async function openDatabase(platform, opts = {}) {
|
|
220
246
|
const Database = await loadSqlite();
|
|
221
247
|
fs3.mkdirSync(DATA_DIR, { recursive: true });
|
|
@@ -226,13 +252,38 @@ async function openDatabase(platform, opts = {}) {
|
|
|
226
252
|
let db;
|
|
227
253
|
try {
|
|
228
254
|
db = new Database(dbPath);
|
|
229
|
-
} catch {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
255
|
+
} catch (err) {
|
|
256
|
+
if (isDriverFault(err)) {
|
|
257
|
+
const detail = err instanceof Error ? err.message.split("\n")[0] : String(err);
|
|
258
|
+
throw new Error(
|
|
259
|
+
`The local sync engine (better-sqlite3) could not load in this Node process.
|
|
260
|
+
Your database was NOT modified.
|
|
261
|
+
|
|
262
|
+
This usually means the CLI is running under a different Node than the one
|
|
263
|
+
better-sqlite3 was built for \u2014 currently node ${process.version} (NODE_MODULE_VERSION ${process.versions.modules}). \`one\` is a #!/usr/bin/env node shim, so a minimal PATH under cron, launchd,
|
|
264
|
+
or an agent runner can select a different interpreter than your shell does.
|
|
265
|
+
|
|
266
|
+
Rebuild it against this Node with:
|
|
267
|
+
one sync install
|
|
268
|
+
|
|
269
|
+
Underlying error: ${detail}`
|
|
270
|
+
);
|
|
235
271
|
}
|
|
272
|
+
if (!fs3.existsSync(dbPath)) throw err;
|
|
273
|
+
if (passesIntegrityCheck(Database, dbPath)) {
|
|
274
|
+
const detail = err instanceof Error ? err.message.split("\n")[0] : String(err);
|
|
275
|
+
throw new Error(
|
|
276
|
+
`Could not open ${dbPath}, but it passes SQLite's integrity check \u2014 so it is not corrupt and has been left untouched.
|
|
277
|
+
|
|
278
|
+
Underlying error: ${detail}`
|
|
279
|
+
);
|
|
280
|
+
}
|
|
281
|
+
const backupPath = backupPathFor(dbPath);
|
|
282
|
+
fs3.renameSync(dbPath, backupPath);
|
|
283
|
+
process.stderr.write(
|
|
284
|
+
`Database at ${dbPath} failed its integrity check. Backup saved at ${backupPath}, starting fresh.
|
|
285
|
+
`
|
|
286
|
+
);
|
|
236
287
|
db = new Database(dbPath);
|
|
237
288
|
}
|
|
238
289
|
db.pragma("journal_mode = WAL");
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
isAgentMode,
|
|
4
4
|
json,
|
|
5
5
|
requireMemoryInit
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GNSR3NYN.js";
|
|
7
7
|
import {
|
|
8
8
|
getBackend
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-DDCDPVJH.js";
|
|
10
10
|
|
|
11
11
|
// src/commands/mem/sql.ts
|
|
12
12
|
async function memSqlCommand(sql) {
|
|
@@ -3,8 +3,9 @@ import {
|
|
|
3
3
|
setByDotPath
|
|
4
4
|
} from "./chunk-44CV5IMX.js";
|
|
5
5
|
import {
|
|
6
|
-
getCacheTtl
|
|
7
|
-
|
|
6
|
+
getCacheTtl,
|
|
7
|
+
homeDir
|
|
8
|
+
} from "./chunk-EVEUGRCB.js";
|
|
8
9
|
|
|
9
10
|
// src/lib/flow-runner.ts
|
|
10
11
|
import fs3 from "fs";
|
|
@@ -13,7 +14,7 @@ import crypto from "crypto";
|
|
|
13
14
|
|
|
14
15
|
// src/lib/flow-engine.ts
|
|
15
16
|
import fs2 from "fs";
|
|
16
|
-
import
|
|
17
|
+
import os from "os";
|
|
17
18
|
import path2 from "path";
|
|
18
19
|
import { exec, spawn } from "child_process";
|
|
19
20
|
import { promisify } from "util";
|
|
@@ -597,12 +598,11 @@ ${knowledge}`;
|
|
|
597
598
|
// src/lib/cache.ts
|
|
598
599
|
import fs from "fs";
|
|
599
600
|
import path from "path";
|
|
600
|
-
import os from "os";
|
|
601
601
|
function knowledgeDir() {
|
|
602
|
-
return path.join(
|
|
602
|
+
return path.join(homeDir(), ".one", "cache", "knowledge");
|
|
603
603
|
}
|
|
604
604
|
function searchDir() {
|
|
605
|
-
return path.join(
|
|
605
|
+
return path.join(homeDir(), ".one", "cache", "search");
|
|
606
606
|
}
|
|
607
607
|
function sanitizeFilename(input) {
|
|
608
608
|
return input.replace(/[^a-zA-Z0-9_\-\.]/g, "_");
|
|
@@ -2354,7 +2354,7 @@ async function executeSubflowStep(step, context, api, permissions, allowedAction
|
|
|
2354
2354
|
if (flowStack.includes(resolvedKey)) {
|
|
2355
2355
|
throw new Error(`Circular flow detected: ${[...flowStack, resolvedKey].join(" \u2192 ")}`);
|
|
2356
2356
|
}
|
|
2357
|
-
const { loadFlowWithMeta: loadFlowWithMeta2 } = await import("./flow-runner-
|
|
2357
|
+
const { loadFlowWithMeta: loadFlowWithMeta2 } = await import("./flow-runner-MVSJ2GB7.js");
|
|
2358
2358
|
const { flow: subFlow, rootDir: subRootDir } = loadFlowWithMeta2(resolvedKey);
|
|
2359
2359
|
const subContext = await executeFlow(
|
|
2360
2360
|
subFlow,
|
|
@@ -2458,7 +2458,7 @@ function resolveBashEnv(envConfig, context, stepId) {
|
|
|
2458
2458
|
const resolved2 = resolveValue(obj.json, context);
|
|
2459
2459
|
const json = JSON.stringify(resolved2 ?? null);
|
|
2460
2460
|
const tmp = path2.join(
|
|
2461
|
-
|
|
2461
|
+
os.tmpdir(),
|
|
2462
2462
|
`one-flow-${stepId}-${key}-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}.json`
|
|
2463
2463
|
);
|
|
2464
2464
|
fs2.writeFileSync(tmp, json, { encoding: "utf-8" });
|
|
@@ -12,9 +12,9 @@ import {
|
|
|
12
12
|
stripStepsAlias,
|
|
13
13
|
summarizeFlowInputs,
|
|
14
14
|
walkSteps
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-WXJWF7QG.js";
|
|
16
16
|
import "./chunk-44CV5IMX.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-EVEUGRCB.js";
|
|
18
18
|
export {
|
|
19
19
|
FlowRunner,
|
|
20
20
|
collectStepTypes,
|
package/dist/index.js
CHANGED
|
@@ -32,10 +32,10 @@ import {
|
|
|
32
32
|
validateActionInput,
|
|
33
33
|
walkSteps,
|
|
34
34
|
writeCache
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-WXJWF7QG.js";
|
|
36
36
|
import {
|
|
37
37
|
memSqlCommand
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-OWDR5L3Q.js";
|
|
39
39
|
import {
|
|
40
40
|
collectIdentityKeys,
|
|
41
41
|
countRecords,
|
|
@@ -65,7 +65,7 @@ import {
|
|
|
65
65
|
writeDraftProfile,
|
|
66
66
|
writePageToMemory,
|
|
67
67
|
writeProfile
|
|
68
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-IKYXS7EI.js";
|
|
69
69
|
import {
|
|
70
70
|
getByDotPath
|
|
71
71
|
} from "./chunk-44CV5IMX.js";
|
|
@@ -89,7 +89,7 @@ import {
|
|
|
89
89
|
semanticSearchUpgradeLine,
|
|
90
90
|
setAgentMode,
|
|
91
91
|
silenceWarningsInAgentMode
|
|
92
|
-
} from "./chunk-
|
|
92
|
+
} from "./chunk-GNSR3NYN.js";
|
|
93
93
|
import {
|
|
94
94
|
SCHEMA_VERSION,
|
|
95
95
|
addRecord,
|
|
@@ -99,7 +99,7 @@ import {
|
|
|
99
99
|
listBackendPlugins,
|
|
100
100
|
loadBackendFromConfig,
|
|
101
101
|
updateRecord
|
|
102
|
-
} from "./chunk-
|
|
102
|
+
} from "./chunk-DDCDPVJH.js";
|
|
103
103
|
import {
|
|
104
104
|
DEFAULT_MEMORY_CONFIG,
|
|
105
105
|
defaultSearchableText,
|
|
@@ -109,7 +109,7 @@ import {
|
|
|
109
109
|
memoryConfigExists,
|
|
110
110
|
setOpenAiApiKey,
|
|
111
111
|
updateMemoryConfig
|
|
112
|
-
} from "./chunk-
|
|
112
|
+
} from "./chunk-5O5KODGV.js";
|
|
113
113
|
import {
|
|
114
114
|
appendAnalyticsQueue,
|
|
115
115
|
appendUsageLog,
|
|
@@ -128,6 +128,7 @@ import {
|
|
|
128
128
|
getProjectRoot,
|
|
129
129
|
getWhoAmI,
|
|
130
130
|
globalConfigExists,
|
|
131
|
+
homeDir,
|
|
131
132
|
markTelemetryNoticeShown,
|
|
132
133
|
projectConfigExists,
|
|
133
134
|
readAnalyticsQueue,
|
|
@@ -144,7 +145,7 @@ import {
|
|
|
144
145
|
writeConfig,
|
|
145
146
|
writeUsageLog,
|
|
146
147
|
writeUsageState
|
|
147
|
-
} from "./chunk-
|
|
148
|
+
} from "./chunk-EVEUGRCB.js";
|
|
148
149
|
|
|
149
150
|
// src/cli.ts
|
|
150
151
|
import { createRequire as createRequire3 } from "module";
|
|
@@ -156,17 +157,15 @@ import * as p3 from "@clack/prompts";
|
|
|
156
157
|
import pc2 from "picocolors";
|
|
157
158
|
import fs3 from "fs";
|
|
158
159
|
import path3 from "path";
|
|
159
|
-
import os3 from "os";
|
|
160
160
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
161
161
|
|
|
162
162
|
// src/lib/agents.ts
|
|
163
163
|
import fs from "fs";
|
|
164
164
|
import path from "path";
|
|
165
|
-
import os from "os";
|
|
166
165
|
import { parse as parseToml, stringify as stringifyToml } from "smol-toml";
|
|
167
166
|
function expandPath(p10) {
|
|
168
167
|
if (p10.startsWith("~/")) {
|
|
169
|
-
return path.join(
|
|
168
|
+
return path.join(homeDir(), p10.slice(2));
|
|
170
169
|
}
|
|
171
170
|
return p10;
|
|
172
171
|
}
|
|
@@ -192,71 +191,73 @@ function getClaudeDesktopDetectDir() {
|
|
|
192
191
|
}
|
|
193
192
|
function getWindsurfConfigPath() {
|
|
194
193
|
if (process.platform === "win32") {
|
|
195
|
-
return path.join(
|
|
194
|
+
return path.join(homeDir(), ".codeium", "windsurf", "mcp_config.json");
|
|
196
195
|
}
|
|
197
196
|
return "~/.codeium/windsurf/mcp_config.json";
|
|
198
197
|
}
|
|
199
198
|
function getWindsurfDetectDir() {
|
|
200
199
|
if (process.platform === "win32") {
|
|
201
|
-
return path.join(
|
|
200
|
+
return path.join(homeDir(), ".codeium", "windsurf");
|
|
202
201
|
}
|
|
203
202
|
return "~/.codeium/windsurf";
|
|
204
203
|
}
|
|
205
204
|
function getCursorConfigPath() {
|
|
206
205
|
if (process.platform === "win32") {
|
|
207
|
-
return path.join(
|
|
206
|
+
return path.join(homeDir(), ".cursor", "mcp.json");
|
|
208
207
|
}
|
|
209
208
|
return "~/.cursor/mcp.json";
|
|
210
209
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
210
|
+
function getAgents() {
|
|
211
|
+
return [
|
|
212
|
+
{
|
|
213
|
+
id: "claude-code",
|
|
214
|
+
name: "Claude Code",
|
|
215
|
+
configPath: "~/.claude.json",
|
|
216
|
+
configKey: "mcpServers",
|
|
217
|
+
detectDir: "~/.claude",
|
|
218
|
+
projectConfigPath: ".mcp.json"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
id: "claude-desktop",
|
|
222
|
+
name: "Claude Desktop",
|
|
223
|
+
configPath: getClaudeDesktopConfigPath(),
|
|
224
|
+
configKey: "mcpServers",
|
|
225
|
+
detectDir: getClaudeDesktopDetectDir()
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
id: "cursor",
|
|
229
|
+
name: "Cursor",
|
|
230
|
+
configPath: getCursorConfigPath(),
|
|
231
|
+
configKey: "mcpServers",
|
|
232
|
+
detectDir: "~/.cursor",
|
|
233
|
+
projectConfigPath: ".cursor/mcp.json"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
id: "windsurf",
|
|
237
|
+
name: "Windsurf",
|
|
238
|
+
configPath: getWindsurfConfigPath(),
|
|
239
|
+
configKey: "mcpServers",
|
|
240
|
+
detectDir: getWindsurfDetectDir()
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
id: "codex",
|
|
244
|
+
name: "Codex",
|
|
245
|
+
configPath: "~/.codex/config.toml",
|
|
246
|
+
configKey: "mcp_servers",
|
|
247
|
+
detectDir: "~/.codex",
|
|
248
|
+
projectConfigPath: ".codex/config.toml",
|
|
249
|
+
configFormat: "toml"
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
id: "kiro",
|
|
253
|
+
name: "Kiro",
|
|
254
|
+
configPath: "~/.kiro/settings/mcp.json",
|
|
255
|
+
configKey: "mcpServers",
|
|
256
|
+
detectDir: "~/.kiro",
|
|
257
|
+
projectConfigPath: ".kiro/settings/mcp.json"
|
|
258
|
+
}
|
|
259
|
+
];
|
|
260
|
+
}
|
|
260
261
|
function getAgentConfigPath(agent, scope = "global") {
|
|
261
262
|
if (scope === "project" && agent.projectConfigPath) {
|
|
262
263
|
return path.join(process.cwd(), agent.projectConfigPath);
|
|
@@ -329,7 +330,7 @@ function isMcpInstalled(agent, scope = "global") {
|
|
|
329
330
|
return mcpServers?.["one"] !== void 0;
|
|
330
331
|
}
|
|
331
332
|
function getAgentStatuses() {
|
|
332
|
-
return
|
|
333
|
+
return getAgents().map((agent) => {
|
|
333
334
|
const detected = fs.existsSync(expandPath(agent.detectDir));
|
|
334
335
|
const globalMcp = detected && isMcpInstalled(agent, "global");
|
|
335
336
|
const projectMcp = agent.projectConfigPath ? isMcpInstalled(agent, "project") : null;
|
|
@@ -647,7 +648,6 @@ import open2 from "open";
|
|
|
647
648
|
|
|
648
649
|
// src/lib/skill-sync.ts
|
|
649
650
|
import fs2 from "fs";
|
|
650
|
-
import os2 from "os";
|
|
651
651
|
import path2 from "path";
|
|
652
652
|
import { fileURLToPath } from "url";
|
|
653
653
|
|
|
@@ -655,13 +655,12 @@ import { fileURLToPath } from "url";
|
|
|
655
655
|
import { createRequire } from "module";
|
|
656
656
|
import { spawn } from "child_process";
|
|
657
657
|
import { readFileSync, writeFileSync, mkdirSync, rmSync } from "fs";
|
|
658
|
-
import { homedir } from "os";
|
|
659
658
|
import { join } from "path";
|
|
660
659
|
var require2 = createRequire(import.meta.url);
|
|
661
660
|
var { version: currentVersion } = require2("../package.json");
|
|
662
|
-
var ONE_DIR = join(
|
|
663
|
-
var CACHE_PATH = join(ONE_DIR, "update-check.json");
|
|
664
|
-
var LOCK_PATH = join(ONE_DIR, "auto-update.lock");
|
|
661
|
+
var ONE_DIR = () => join(homeDir(), ".one");
|
|
662
|
+
var CACHE_PATH = () => join(ONE_DIR(), "update-check.json");
|
|
663
|
+
var LOCK_PATH = () => join(ONE_DIR(), "auto-update.lock");
|
|
665
664
|
var CHECK_INTERVAL_MS = 4 * 60 * 60 * 1e3;
|
|
666
665
|
var AGE_GATE_MS = 30 * 60 * 1e3;
|
|
667
666
|
var LOCK_TTL_MS = 10 * 60 * 1e3;
|
|
@@ -679,15 +678,15 @@ async function fetchLatestVersionInfo() {
|
|
|
679
678
|
}
|
|
680
679
|
function readCache2() {
|
|
681
680
|
try {
|
|
682
|
-
return JSON.parse(readFileSync(CACHE_PATH, "utf8"));
|
|
681
|
+
return JSON.parse(readFileSync(CACHE_PATH(), "utf8"));
|
|
683
682
|
} catch {
|
|
684
683
|
return null;
|
|
685
684
|
}
|
|
686
685
|
}
|
|
687
686
|
function writeCache2(latestVersion, publishedAt) {
|
|
688
687
|
try {
|
|
689
|
-
mkdirSync(join(
|
|
690
|
-
writeFileSync(CACHE_PATH, JSON.stringify({ lastCheck: Date.now(), latestVersion, publishedAt }));
|
|
688
|
+
mkdirSync(join(homeDir(), ".one"), { recursive: true });
|
|
689
|
+
writeFileSync(CACHE_PATH(), JSON.stringify({ lastCheck: Date.now(), latestVersion, publishedAt }));
|
|
691
690
|
} catch {
|
|
692
691
|
}
|
|
693
692
|
}
|
|
@@ -767,19 +766,19 @@ function isAutoUpdateDisabled() {
|
|
|
767
766
|
}
|
|
768
767
|
function acquireUpdateLock(targetVersion) {
|
|
769
768
|
try {
|
|
770
|
-
mkdirSync(ONE_DIR, { recursive: true });
|
|
769
|
+
mkdirSync(ONE_DIR(), { recursive: true });
|
|
771
770
|
} catch {
|
|
772
771
|
}
|
|
773
772
|
try {
|
|
774
|
-
const lock = JSON.parse(readFileSync(LOCK_PATH, "utf8"));
|
|
773
|
+
const lock = JSON.parse(readFileSync(LOCK_PATH(), "utf8"));
|
|
775
774
|
const startedAt = typeof lock.startedAt === "number" ? lock.startedAt : 0;
|
|
776
775
|
if (Date.now() - startedAt < LOCK_TTL_MS) return false;
|
|
777
|
-
rmSync(LOCK_PATH, { force: true });
|
|
776
|
+
rmSync(LOCK_PATH(), { force: true });
|
|
778
777
|
} catch {
|
|
779
778
|
}
|
|
780
779
|
try {
|
|
781
780
|
writeFileSync(
|
|
782
|
-
LOCK_PATH,
|
|
781
|
+
LOCK_PATH(),
|
|
783
782
|
JSON.stringify({ pid: process.pid, startedAt: Date.now(), targetVersion }),
|
|
784
783
|
{ flag: "wx" }
|
|
785
784
|
// fail if another invocation created it first
|
|
@@ -803,7 +802,7 @@ function autoUpdate(targetVersion, publishedAt) {
|
|
|
803
802
|
});
|
|
804
803
|
child.on("error", () => {
|
|
805
804
|
try {
|
|
806
|
-
rmSync(LOCK_PATH, { force: true });
|
|
805
|
+
rmSync(LOCK_PATH(), { force: true });
|
|
807
806
|
} catch {
|
|
808
807
|
}
|
|
809
808
|
});
|
|
@@ -818,7 +817,7 @@ function getPackagedSkillDir() {
|
|
|
818
817
|
return path2.resolve(here, "..", "skills", "one");
|
|
819
818
|
}
|
|
820
819
|
function getCanonicalSkillPath() {
|
|
821
|
-
return path2.join(
|
|
820
|
+
return path2.join(homeDir(), CANONICAL_SKILL_DIR, "one");
|
|
822
821
|
}
|
|
823
822
|
function getVersionMarkerPath() {
|
|
824
823
|
return path2.join(getCanonicalSkillPath(), VERSION_MARKER);
|
|
@@ -1292,7 +1291,7 @@ async function chooseConfigScope(options) {
|
|
|
1292
1291
|
return which;
|
|
1293
1292
|
}
|
|
1294
1293
|
function tildify(filePath) {
|
|
1295
|
-
const home =
|
|
1294
|
+
const home = homeDir();
|
|
1296
1295
|
return filePath.startsWith(home) ? "~" + filePath.slice(home.length) : filePath;
|
|
1297
1296
|
}
|
|
1298
1297
|
function scopeLabel(scope) {
|
|
@@ -1529,10 +1528,10 @@ function getSkillSourceDir() {
|
|
|
1529
1528
|
return path3.resolve(__dirname2, "..", "skills", "one");
|
|
1530
1529
|
}
|
|
1531
1530
|
function getCanonicalSkillPath2() {
|
|
1532
|
-
return path3.join(
|
|
1531
|
+
return path3.join(homeDir(), CANONICAL_SKILL_DIR2, "one");
|
|
1533
1532
|
}
|
|
1534
1533
|
function getAgentSkillPath(agent) {
|
|
1535
|
-
return path3.join(
|
|
1534
|
+
return path3.join(homeDir(), agent.skillDir, "one");
|
|
1536
1535
|
}
|
|
1537
1536
|
function isSkillInstalled2() {
|
|
1538
1537
|
return fs3.existsSync(path3.join(getCanonicalSkillPath2(), "SKILL.md"));
|
|
@@ -6053,7 +6052,7 @@ async function syncModel(api, profile, options) {
|
|
|
6053
6052
|
updateModelState(platform, model, { status: "failed", pagesProcessed, lastCursor }),
|
|
6054
6053
|
(async () => {
|
|
6055
6054
|
try {
|
|
6056
|
-
const { getBackend: getBackend2 } = await import("./runtime-
|
|
6055
|
+
const { getBackend: getBackend2 } = await import("./runtime-AFXLC4IC.js");
|
|
6057
6056
|
const backend = await getBackend2();
|
|
6058
6057
|
await Promise.race([
|
|
6059
6058
|
backend.close(),
|
|
@@ -6419,7 +6418,7 @@ async function syncModel(api, profile, options) {
|
|
|
6419
6418
|
db.exec(`DROP TABLE IF EXISTS _seen_ids`);
|
|
6420
6419
|
}
|
|
6421
6420
|
if (options.toMemory !== false) {
|
|
6422
|
-
const backend = await (await import("./runtime-
|
|
6421
|
+
const backend = await (await import("./runtime-AFXLC4IC.js")).getBackend();
|
|
6423
6422
|
const type = `${platform}/${model}`;
|
|
6424
6423
|
const existing = await backend.listKeysByType(type);
|
|
6425
6424
|
const sourcePrefix = `${type}:`;
|
|
@@ -6505,7 +6504,7 @@ async function syncModel(api, profile, options) {
|
|
|
6505
6504
|
let statusCounts;
|
|
6506
6505
|
if (options.toMemory !== false) {
|
|
6507
6506
|
try {
|
|
6508
|
-
const backend = await (await import("./runtime-
|
|
6507
|
+
const backend = await (await import("./runtime-AFXLC4IC.js")).getBackend();
|
|
6509
6508
|
const typeName = `${platform}/${model}`;
|
|
6510
6509
|
const [active, archived] = await Promise.all([
|
|
6511
6510
|
backend.count(typeName, { status: "active" }),
|
|
@@ -7035,19 +7034,18 @@ function inferProfileFromKnowledge(knowledge, modelName, platform) {
|
|
|
7035
7034
|
// src/lib/memory/sync/schedule.ts
|
|
7036
7035
|
import { spawnSync as spawnSync2 } from "child_process";
|
|
7037
7036
|
import fs10 from "fs";
|
|
7038
|
-
import
|
|
7037
|
+
import os from "os";
|
|
7039
7038
|
import path10 from "path";
|
|
7040
7039
|
|
|
7041
7040
|
// src/lib/memory/sync/schedule-registry.ts
|
|
7042
7041
|
import fs9 from "fs";
|
|
7043
|
-
import os4 from "os";
|
|
7044
7042
|
import path9 from "path";
|
|
7045
|
-
var REGISTRY_DIR = path9.join(
|
|
7046
|
-
var REGISTRY_FILE = path9.join(REGISTRY_DIR, "schedules.json");
|
|
7043
|
+
var REGISTRY_DIR = () => path9.join(homeDir(), ".one", "sync");
|
|
7044
|
+
var REGISTRY_FILE = () => path9.join(REGISTRY_DIR(), "schedules.json");
|
|
7047
7045
|
function readRaw() {
|
|
7048
7046
|
try {
|
|
7049
|
-
if (!fs9.existsSync(REGISTRY_FILE)) return { schedules: [] };
|
|
7050
|
-
const raw = fs9.readFileSync(REGISTRY_FILE, "utf-8");
|
|
7047
|
+
if (!fs9.existsSync(REGISTRY_FILE())) return { schedules: [] };
|
|
7048
|
+
const raw = fs9.readFileSync(REGISTRY_FILE(), "utf-8");
|
|
7051
7049
|
const parsed = JSON.parse(raw);
|
|
7052
7050
|
if (!parsed || !Array.isArray(parsed.schedules)) return { schedules: [] };
|
|
7053
7051
|
return parsed;
|
|
@@ -7056,10 +7054,10 @@ function readRaw() {
|
|
|
7056
7054
|
}
|
|
7057
7055
|
}
|
|
7058
7056
|
function writeRaw(file) {
|
|
7059
|
-
fs9.mkdirSync(REGISTRY_DIR, { recursive: true });
|
|
7060
|
-
const tmp = REGISTRY_FILE + ".tmp";
|
|
7057
|
+
fs9.mkdirSync(REGISTRY_DIR(), { recursive: true });
|
|
7058
|
+
const tmp = REGISTRY_FILE() + ".tmp";
|
|
7061
7059
|
fs9.writeFileSync(tmp, JSON.stringify(file, null, 2));
|
|
7062
|
-
fs9.renameSync(tmp, REGISTRY_FILE);
|
|
7060
|
+
fs9.renameSync(tmp, REGISTRY_FILE());
|
|
7063
7061
|
}
|
|
7064
7062
|
function makeScheduleId(platform, cwd) {
|
|
7065
7063
|
const slug = path9.basename(cwd).replace(/[^a-zA-Z0-9_-]/g, "-").toLowerCase();
|
|
@@ -7129,7 +7127,7 @@ function cronExprToDuration(expr) {
|
|
|
7129
7127
|
return null;
|
|
7130
7128
|
}
|
|
7131
7129
|
function isWindows() {
|
|
7132
|
-
return
|
|
7130
|
+
return os.platform() === "win32";
|
|
7133
7131
|
}
|
|
7134
7132
|
function resolveOneBinary() {
|
|
7135
7133
|
try {
|
|
@@ -7733,6 +7731,7 @@ async function syncDoctorCommand() {
|
|
|
7733
7731
|
checks.push({ name: "better-sqlite3 loads", ok: false, detail: err instanceof Error ? err.message : String(err) });
|
|
7734
7732
|
}
|
|
7735
7733
|
const allOk = checks.every((c) => c.ok);
|
|
7734
|
+
if (!allOk) process.exitCode = 1;
|
|
7736
7735
|
if (isAgentMode()) {
|
|
7737
7736
|
json({ ok: allOk, checks });
|
|
7738
7737
|
return;
|
|
@@ -8194,7 +8193,7 @@ ${result.total} results`);
|
|
|
8194
8193
|
}
|
|
8195
8194
|
}
|
|
8196
8195
|
async function syncSqlCommand(platformModel, sql) {
|
|
8197
|
-
const { syncSqlCommand: runSyncSql } = await import("./sql-
|
|
8196
|
+
const { syncSqlCommand: runSyncSql } = await import("./sql-3WNYRCWP.js");
|
|
8198
8197
|
await runSyncSql(platformModel, sql);
|
|
8199
8198
|
}
|
|
8200
8199
|
async function syncDeleteCommand(platformModel, options) {
|
|
@@ -8272,7 +8271,7 @@ async function syncDeleteCommand(platformModel, options) {
|
|
|
8272
8271
|
async function maybeAutoMigrateLegacy(platform, models) {
|
|
8273
8272
|
const dbSize = getDatabaseSize(platform);
|
|
8274
8273
|
if (!dbSize || dbSize === "0 B") return;
|
|
8275
|
-
const { getBackend: getBackend2 } = await import("./runtime-
|
|
8274
|
+
const { getBackend: getBackend2 } = await import("./runtime-AFXLC4IC.js");
|
|
8276
8275
|
const backend = await getBackend2();
|
|
8277
8276
|
let memoryHasData = false;
|
|
8278
8277
|
for (const model of models) {
|
|
@@ -8288,7 +8287,7 @@ async function maybeAutoMigrateLegacy(platform, models) {
|
|
|
8288
8287
|
` detected legacy .one/sync/data/${platform}.db (${dbSize}) \u2014 auto-migrating into memory before sync.
|
|
8289
8288
|
`
|
|
8290
8289
|
);
|
|
8291
|
-
const { memMigrateCommand: memMigrateCommand3 } = await import("./migrate-
|
|
8290
|
+
const { memMigrateCommand: memMigrateCommand3 } = await import("./migrate-U2MZVGU6.js");
|
|
8292
8291
|
await memMigrateCommand3({ platform, yes: true });
|
|
8293
8292
|
return;
|
|
8294
8293
|
}
|
|
@@ -8297,7 +8296,7 @@ async function maybeAutoMigrateLegacy(platform, models) {
|
|
|
8297
8296
|
initialValue: true
|
|
8298
8297
|
});
|
|
8299
8298
|
if (p7.isCancel(shouldMigrate) || !shouldMigrate) return;
|
|
8300
|
-
const { memMigrateCommand: memMigrateCommand2 } = await import("./migrate-
|
|
8299
|
+
const { memMigrateCommand: memMigrateCommand2 } = await import("./migrate-U2MZVGU6.js");
|
|
8301
8300
|
await memMigrateCommand2({ platform, yes: true });
|
|
8302
8301
|
}
|
|
8303
8302
|
async function syncSuggestSearchableCommand(platformModel, options = {}) {
|
|
@@ -8358,7 +8357,7 @@ async function syncSuggestSearchableCommand(platformModel, options = {}) {
|
|
|
8358
8357
|
async function syncListCommand(platform) {
|
|
8359
8358
|
const profiles = listProfiles(platform);
|
|
8360
8359
|
const state = await readSyncState();
|
|
8361
|
-
const { getBackend: getBackend2 } = await import("./runtime-
|
|
8360
|
+
const { getBackend: getBackend2 } = await import("./runtime-AFXLC4IC.js");
|
|
8362
8361
|
const backend = await getBackend2();
|
|
8363
8362
|
const syncs = await Promise.all(profiles.map(async (p10) => {
|
|
8364
8363
|
const modelState = state[p10.platform]?.[p10.model];
|
|
@@ -8633,7 +8632,7 @@ function registerSyncSubcommands(sync) {
|
|
|
8633
8632
|
await syncSqlCommand(platformModel, sql);
|
|
8634
8633
|
});
|
|
8635
8634
|
sync.command("schema <platform/model>").description("Inspect the JSON structure of synced records (field paths, types, examples) \u2014 useful before writing `sync sql` queries").action(async (platformModel) => {
|
|
8636
|
-
const { syncSchemaCommand } = await import("./schema-
|
|
8635
|
+
const { syncSchemaCommand } = await import("./schema-4JJO2CIZ.js");
|
|
8637
8636
|
await syncSchemaCommand(platformModel);
|
|
8638
8637
|
});
|
|
8639
8638
|
sync.command("delete <platform/model>").description('Delete records from local sync data (e.g. one sync delete notion/pages --id "abc-123")').option("--id <value>", "Delete record by ID").option("--where <conditions>", 'Delete records matching conditions (e.g. "status=archived")').option("--where-sql <predicate>", `Delete using a raw SQL WHERE clause (e.g. "json_extract(data, '$.type') = 'promotion'")`).option("--yes", "Skip confirmation prompt").action(async (platformModel, options) => {
|
|
@@ -9410,7 +9409,7 @@ async function memDoctorCommand() {
|
|
|
9410
9409
|
}
|
|
9411
9410
|
if (cfg.embedding.provider === "openai") {
|
|
9412
9411
|
try {
|
|
9413
|
-
const { embed: embed2 } = await import("./embedding-
|
|
9412
|
+
const { embed: embed2 } = await import("./embedding-Z2WCDN6R.js");
|
|
9414
9413
|
const result = await embed2("connectivity check");
|
|
9415
9414
|
checks.push({
|
|
9416
9415
|
name: "OpenAI embedding provider reachable",
|
|
@@ -10905,7 +10904,7 @@ Every \`sync X\` command is also exposed as \`mem sync X\` \u2014 same handlers,
|
|
|
10905
10904
|
| Command | What it does |
|
|
10906
10905
|
|---------|-------------|
|
|
10907
10906
|
| \`sync profiles [platform]\` | List built-in pre-validated profiles |
|
|
10908
|
-
| \`sync doctor\` | Verify sync engine health |
|
|
10907
|
+
| \`sync doctor\` | Verify sync engine health. **Exits non-zero when not ready**, so \`one sync doctor && one sync run <platform>\` is a safe gate \u2014 run it first from cron/launchd, where a bare PATH can select a Node the native driver wasn't built for |
|
|
10909
10908
|
| \`sync models <platform>\` | Discover available models |
|
|
10910
10909
|
| \`sync init <plat> <model>\` | Create/patch profile (seeds from built-in, auto-tests) |
|
|
10911
10910
|
| \`sync test <plat>/<model>\` | Validate profile. \`--show-searchable\` previews embedded text across 5 samples with per-path hit rates |
|
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
dotPathToJsonbExpr,
|
|
4
4
|
memMigrateCommand,
|
|
5
5
|
reviveStringifiedJson
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IKYXS7EI.js";
|
|
7
7
|
import "./chunk-44CV5IMX.js";
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-GNSR3NYN.js";
|
|
9
|
+
import "./chunk-DDCDPVJH.js";
|
|
10
|
+
import "./chunk-5O5KODGV.js";
|
|
11
|
+
import "./chunk-EVEUGRCB.js";
|
|
12
12
|
export {
|
|
13
13
|
buildIdentityMap,
|
|
14
14
|
dotPathToJsonbExpr,
|
|
@@ -5,9 +5,9 @@ import {
|
|
|
5
5
|
resetBackendSingleton,
|
|
6
6
|
updateRecord,
|
|
7
7
|
upsertRecord
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-DDCDPVJH.js";
|
|
9
|
+
import "./chunk-5O5KODGV.js";
|
|
10
|
+
import "./chunk-EVEUGRCB.js";
|
|
11
11
|
export {
|
|
12
12
|
addRecord,
|
|
13
13
|
closeBackendIfCached,
|
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
note,
|
|
4
4
|
okJson,
|
|
5
5
|
requireMemoryInit
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GNSR3NYN.js";
|
|
7
7
|
import {
|
|
8
8
|
getBackend
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-DDCDPVJH.js";
|
|
10
|
+
import "./chunk-5O5KODGV.js";
|
|
11
|
+
import "./chunk-EVEUGRCB.js";
|
|
12
12
|
|
|
13
13
|
// src/lib/memory/sync/schema.ts
|
|
14
14
|
import pc from "picocolors";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@withone/cli",
|
|
3
|
-
"version": "1.52.
|
|
3
|
+
"version": "1.52.3",
|
|
4
4
|
"description": "CLI for managing One",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"dev": "tsup --watch",
|
|
24
24
|
"start": "node bin/cli.js",
|
|
25
25
|
"typecheck": "tsc --noEmit",
|
|
26
|
-
"test": "
|
|
26
|
+
"test": "node scripts/run-tests.mjs",
|
|
27
27
|
"prepare": "tsup"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
package/dist/sql-YVDVJK7L.js
DELETED