chat-recall 0.5.8 → 0.5.10
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 +11 -24
- package/dist/cli.js +388 -131
- package/dist/cli.js.map +1 -1
- package/dist/intent-drain.d.ts.map +1 -1
- package/dist/intent-drain.js +68 -2
- package/dist/intent-drain.js.map +1 -1
- package/dist/mcp.js +258 -38
- package/dist/mcp.js.map +1 -1
- package/dist/sync-client.d.ts.map +1 -1
- package/dist/sync-client.js +12 -2
- package/dist/sync-client.js.map +1 -1
- package/dist/watch.js +2485 -2050
- package/package.json +1 -1
- package/skills/chat-recall/SKILL.md +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent-drain.d.ts","sourceRoot":"","sources":["../src/intent-drain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+DH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"intent-drain.d.ts","sourceRoot":"","sources":["../src/intent-drain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+DH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAoHD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CA6D7F"}
|
package/dist/intent-drain.js
CHANGED
|
@@ -68,6 +68,59 @@ function applyCodeRecommendation(intent) {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
/** Run one intent and return the (status, result-json) to ack with. */
|
|
71
|
+
/**
|
|
72
|
+
* Install what the account holds onto THIS machine, from one server.
|
|
73
|
+
*
|
|
74
|
+
* Fetches the toolkit inventory and hands it to the engine's executor. Only an
|
|
75
|
+
* inventory travels, so what can actually be rebuilt is decided there — see
|
|
76
|
+
* toolkit-pull.ts. A type the server cannot reconstruct is reported, never
|
|
77
|
+
* silently dropped.
|
|
78
|
+
*/
|
|
79
|
+
async function runPull(base, opts) {
|
|
80
|
+
const { executePull } = await import('@chat-recall/engine/core/toolkit-pull.js');
|
|
81
|
+
const { hostname } = await import('node:os');
|
|
82
|
+
const creds = loadAllCredentials().find((c) => c.serverUrl.replace(/\/+$/, '') === base.replace(/\/+$/, ''));
|
|
83
|
+
const headers = creds?.token ? { authorization: `Bearer ${creds.token}` } : {};
|
|
84
|
+
const wanted = opts.types?.length ? opts.types : ['mcp', 'skill', 'command', 'agent', 'instructions'];
|
|
85
|
+
const rows = [];
|
|
86
|
+
for (const type of wanted) {
|
|
87
|
+
try {
|
|
88
|
+
const res = await fetchWithTimeout(`${base}/api/toolkit/browse/${type}?limit=1000`, { headers });
|
|
89
|
+
if (!res.ok)
|
|
90
|
+
continue;
|
|
91
|
+
const body = (await res.json());
|
|
92
|
+
for (const it of body.items || [])
|
|
93
|
+
rows.push(it);
|
|
94
|
+
}
|
|
95
|
+
catch { /* one type failing must not abort the rest */ }
|
|
96
|
+
}
|
|
97
|
+
const filtered = opts.name
|
|
98
|
+
? rows.filter((r) => {
|
|
99
|
+
try {
|
|
100
|
+
return (JSON.parse(r.extra_json || '{}').mcpName || r.title) === opts.name;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return r.title === opts.name;
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
: rows;
|
|
107
|
+
const report = executePull(filtered, { thisDeviceId: hostname(), types: wanted });
|
|
108
|
+
const written = report.outcomes.filter((o) => o.status === 'written');
|
|
109
|
+
const failed = report.outcomes.filter((o) => o.status === 'failed');
|
|
110
|
+
return {
|
|
111
|
+
// A skip is a reported outcome, not a failure — the artifact genuinely
|
|
112
|
+
// cannot be installed here and the reason travels back with the ack.
|
|
113
|
+
status: failed.length > 0 ? 'error' : 'done',
|
|
114
|
+
result: JSON.stringify({
|
|
115
|
+
installed: written.length,
|
|
116
|
+
present: report.outcomes.filter((o) => o.status === 'present').length,
|
|
117
|
+
skipped: report.outcomes.filter((o) => o.status === 'skipped').map((o) => `${o.name}: ${o.reason}`).slice(0, 20),
|
|
118
|
+
failed: failed.map((o) => `${o.name}: ${o.reason}`).slice(0, 20),
|
|
119
|
+
needsEnv: [...new Set(written.flatMap((o) => o.needsEnv || []))],
|
|
120
|
+
unsupported: report.unsupported,
|
|
121
|
+
}),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
71
124
|
async function runIntent(intent, ctx) {
|
|
72
125
|
try {
|
|
73
126
|
if (intent.kind === 'recheck_session') {
|
|
@@ -85,6 +138,18 @@ async function runIntent(intent, ctx) {
|
|
|
85
138
|
if (intent.kind === 'code_apply') {
|
|
86
139
|
return applyCodeRecommendation(intent);
|
|
87
140
|
}
|
|
141
|
+
if (intent.kind === 'pull') {
|
|
142
|
+
// CROSS-DEVICE. `sync_all` copies between tools on THIS disk; `pull`
|
|
143
|
+
// installs what the account has, sourced from the server — the only
|
|
144
|
+
// kind that can set up a machine that has nothing yet.
|
|
145
|
+
const types = (intent.artifact_type || '')
|
|
146
|
+
.split(',').map((t) => t.trim()).filter(Boolean);
|
|
147
|
+
const r = await runPull(ctx.base, {
|
|
148
|
+
types: types.length ? types : undefined,
|
|
149
|
+
name: intent.name || undefined,
|
|
150
|
+
});
|
|
151
|
+
return r;
|
|
152
|
+
}
|
|
88
153
|
if (intent.kind === 'sync_all') {
|
|
89
154
|
const report = await executeSyncAll();
|
|
90
155
|
const status = report.failed.length > 0 ? 'error' : 'done';
|
|
@@ -155,8 +220,9 @@ export async function drainSyncIntents(opts = {}) {
|
|
|
155
220
|
out.errored++;
|
|
156
221
|
if (opts.verbose) {
|
|
157
222
|
const label = intent.kind === 'sync_all' ? 'sync_all'
|
|
158
|
-
: intent.kind === '
|
|
159
|
-
:
|
|
223
|
+
: intent.kind === 'pull' ? `pull ${intent.artifact_type || 'all'}${intent.name ? ` "${intent.name}"` : ''}`
|
|
224
|
+
: intent.kind === 'recheck_session' ? `recheck ${intent.name}`
|
|
225
|
+
: `${intent.artifact_type} "${intent.name}" ${intent.from_tool}→${intent.to_tool}`;
|
|
160
226
|
console.error(`[sync-intent] ${label}: ${status}`);
|
|
161
227
|
}
|
|
162
228
|
try {
|
package/dist/intent-drain.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent-drain.js","sourceRoot":"","sources":["../src/intent-drain.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"intent-drain.js","sourceRoot":"","sources":["../src/intent-drain.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.js
CHANGED
|
@@ -17390,10 +17390,55 @@ var init_diary_source = __esm({
|
|
|
17390
17390
|
}
|
|
17391
17391
|
});
|
|
17392
17392
|
|
|
17393
|
+
// ../engine/dist/core/redact-inline.js
|
|
17394
|
+
function redactInlineSecrets(value) {
|
|
17395
|
+
let redacted = false;
|
|
17396
|
+
let out = value;
|
|
17397
|
+
out = out.replace(/(\w+:\/\/[^:/@\s]+:)([^@\s]{1,512})(@)/g, (_m, head, _pw, tail) => {
|
|
17398
|
+
redacted = true;
|
|
17399
|
+
return `${head}__SECRET_NOT_SYNCED__${tail}`;
|
|
17400
|
+
});
|
|
17401
|
+
const tokenShapes = [
|
|
17402
|
+
/\bsk-[A-Za-z0-9_-]{16,}\b/g,
|
|
17403
|
+
// OpenAI-style
|
|
17404
|
+
/\bgh[pousr]_[A-Za-z0-9]{16,}\b/g,
|
|
17405
|
+
// GitHub
|
|
17406
|
+
/\bAIza[0-9A-Za-z_-]{20,}\b/g,
|
|
17407
|
+
// Google
|
|
17408
|
+
/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g
|
|
17409
|
+
// Slack
|
|
17410
|
+
];
|
|
17411
|
+
for (const re of tokenShapes) {
|
|
17412
|
+
out = out.replace(re, () => {
|
|
17413
|
+
redacted = true;
|
|
17414
|
+
return "__SECRET_NOT_SYNCED__";
|
|
17415
|
+
});
|
|
17416
|
+
}
|
|
17417
|
+
return { text: out, redacted };
|
|
17418
|
+
}
|
|
17419
|
+
var init_redact_inline = __esm({
|
|
17420
|
+
"../engine/dist/core/redact-inline.js"() {
|
|
17421
|
+
"use strict";
|
|
17422
|
+
}
|
|
17423
|
+
});
|
|
17424
|
+
|
|
17393
17425
|
// ../engine/dist/parsers/skills-source.js
|
|
17394
17426
|
import { existsSync as existsSync36, readdirSync as readdirSync26, readFileSync as readFileSync25, statSync as statSync31 } from "fs";
|
|
17395
17427
|
import { homedir as homedir12 } from "os";
|
|
17396
17428
|
import { join as join35 } from "path";
|
|
17429
|
+
function rebuildBody(content) {
|
|
17430
|
+
const { text, redacted } = redactInlineSecrets(content);
|
|
17431
|
+
const out = {};
|
|
17432
|
+
if (text.length > MAX_BODY_CHARS) {
|
|
17433
|
+
out.body = text.slice(0, MAX_BODY_CHARS);
|
|
17434
|
+
out.bodyTruncated = true;
|
|
17435
|
+
} else {
|
|
17436
|
+
out.body = text;
|
|
17437
|
+
}
|
|
17438
|
+
if (redacted)
|
|
17439
|
+
out.bodySecretsRedacted = true;
|
|
17440
|
+
return out;
|
|
17441
|
+
}
|
|
17397
17442
|
function resolveRoots() {
|
|
17398
17443
|
const home = homedir12();
|
|
17399
17444
|
const all = [];
|
|
@@ -17437,7 +17482,7 @@ function parseFrontmatter3(text) {
|
|
|
17437
17482
|
}
|
|
17438
17483
|
return out;
|
|
17439
17484
|
}
|
|
17440
|
-
var MAX_CHUNK_CHARS12, SkillsSource;
|
|
17485
|
+
var MAX_CHUNK_CHARS12, MAX_BODY_CHARS, SkillsSource;
|
|
17441
17486
|
var init_skills_source = __esm({
|
|
17442
17487
|
"../engine/dist/parsers/skills-source.js"() {
|
|
17443
17488
|
"use strict";
|
|
@@ -17446,7 +17491,9 @@ var init_skills_source = __esm({
|
|
|
17446
17491
|
init_codex2();
|
|
17447
17492
|
init_tool_paths();
|
|
17448
17493
|
init_settings();
|
|
17494
|
+
init_redact_inline();
|
|
17449
17495
|
MAX_CHUNK_CHARS12 = 2e3;
|
|
17496
|
+
MAX_BODY_CHARS = 512 * 1024;
|
|
17450
17497
|
SkillsSource = class {
|
|
17451
17498
|
sourceType = "skill";
|
|
17452
17499
|
async *discover() {
|
|
@@ -17524,7 +17571,10 @@ var init_skills_source = __esm({
|
|
|
17524
17571
|
skillName,
|
|
17525
17572
|
description: fm.description || "",
|
|
17526
17573
|
skillDir,
|
|
17527
|
-
subdirs
|
|
17574
|
+
subdirs,
|
|
17575
|
+
// The whole file, so another machine can rebuild this skill. The
|
|
17576
|
+
// search chunk below stays capped at 2000 chars; this does not.
|
|
17577
|
+
...rebuildBody(content)
|
|
17528
17578
|
};
|
|
17529
17579
|
if (root.readonly || pluginName !== void 0)
|
|
17530
17580
|
extra.readonly = true;
|
|
@@ -17597,31 +17647,6 @@ function commandPreview(cfg) {
|
|
|
17597
17647
|
}
|
|
17598
17648
|
return "";
|
|
17599
17649
|
}
|
|
17600
|
-
function redactInlineSecrets(value) {
|
|
17601
|
-
let redacted = false;
|
|
17602
|
-
let out = value;
|
|
17603
|
-
out = out.replace(/(\w+:\/\/[^:/@\s]+:)([^@\s]{1,512})(@)/g, (_m, head, _pw, tail) => {
|
|
17604
|
-
redacted = true;
|
|
17605
|
-
return `${head}__SECRET_NOT_SYNCED__${tail}`;
|
|
17606
|
-
});
|
|
17607
|
-
const tokenShapes = [
|
|
17608
|
-
/\bsk-[A-Za-z0-9_-]{16,}\b/g,
|
|
17609
|
-
// OpenAI-style
|
|
17610
|
-
/\bgh[pousr]_[A-Za-z0-9]{16,}\b/g,
|
|
17611
|
-
// GitHub
|
|
17612
|
-
/\bAIza[0-9A-Za-z_-]{20,}\b/g,
|
|
17613
|
-
// Google
|
|
17614
|
-
/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g
|
|
17615
|
-
// Slack
|
|
17616
|
-
];
|
|
17617
|
-
for (const re of tokenShapes) {
|
|
17618
|
-
out = out.replace(re, () => {
|
|
17619
|
-
redacted = true;
|
|
17620
|
-
return "__SECRET_NOT_SYNCED__";
|
|
17621
|
-
});
|
|
17622
|
-
}
|
|
17623
|
-
return { text: out, redacted };
|
|
17624
|
-
}
|
|
17625
17650
|
function reconstructionSpec(cfg) {
|
|
17626
17651
|
const out = {
|
|
17627
17652
|
type: cfg.type || (cfg.url ? "remote" : "local"),
|
|
@@ -17658,6 +17683,7 @@ var init_mcps_source = __esm({
|
|
|
17658
17683
|
init_codex2();
|
|
17659
17684
|
init_settings();
|
|
17660
17685
|
init_tool_paths();
|
|
17686
|
+
init_redact_inline();
|
|
17661
17687
|
McpsSource = class {
|
|
17662
17688
|
sourceType = "mcp";
|
|
17663
17689
|
async *discover() {
|
|
@@ -17919,6 +17945,19 @@ var init_toolkit_format = __esm({
|
|
|
17919
17945
|
// ../engine/dist/parsers/slash-commands-source.js
|
|
17920
17946
|
import { existsSync as existsSync38, readdirSync as readdirSync28, readFileSync as readFileSync27, statSync as statSync33 } from "fs";
|
|
17921
17947
|
import { join as join37, basename as basename20 } from "path";
|
|
17948
|
+
function rebuildBody2(content) {
|
|
17949
|
+
const { text, redacted } = redactInlineSecrets(content);
|
|
17950
|
+
const out = {};
|
|
17951
|
+
if (text.length > MAX_BODY_CHARS2) {
|
|
17952
|
+
out.body = text.slice(0, MAX_BODY_CHARS2);
|
|
17953
|
+
out.bodyTruncated = true;
|
|
17954
|
+
} else {
|
|
17955
|
+
out.body = text;
|
|
17956
|
+
}
|
|
17957
|
+
if (redacted)
|
|
17958
|
+
out.bodySecretsRedacted = true;
|
|
17959
|
+
return out;
|
|
17960
|
+
}
|
|
17922
17961
|
function parseCommand(content, fallbackName, format) {
|
|
17923
17962
|
if (format === "toml") {
|
|
17924
17963
|
const t = parseScalarToml(content);
|
|
@@ -17935,7 +17974,7 @@ function parseCommand(content, fallbackName, format) {
|
|
|
17935
17974
|
body: body.trim()
|
|
17936
17975
|
};
|
|
17937
17976
|
}
|
|
17938
|
-
var MAX_CHUNK_CHARS13, SlashCommandsSource;
|
|
17977
|
+
var MAX_CHUNK_CHARS13, MAX_BODY_CHARS2, SlashCommandsSource;
|
|
17939
17978
|
var init_slash_commands_source = __esm({
|
|
17940
17979
|
"../engine/dist/parsers/slash-commands-source.js"() {
|
|
17941
17980
|
"use strict";
|
|
@@ -17947,7 +17986,9 @@ var init_slash_commands_source = __esm({
|
|
|
17947
17986
|
init_tool_paths();
|
|
17948
17987
|
init_toolkit_format();
|
|
17949
17988
|
init_project_dir_name();
|
|
17989
|
+
init_redact_inline();
|
|
17950
17990
|
MAX_CHUNK_CHARS13 = 2e3;
|
|
17991
|
+
MAX_BODY_CHARS2 = 512 * 1024;
|
|
17951
17992
|
SlashCommandsSource = class {
|
|
17952
17993
|
sourceType = "command";
|
|
17953
17994
|
roots() {
|
|
@@ -18011,7 +18052,10 @@ var init_slash_commands_source = __esm({
|
|
|
18011
18052
|
commandName: parsed.name,
|
|
18012
18053
|
description: parsed.description,
|
|
18013
18054
|
scope: root.scope,
|
|
18014
|
-
format: root.format
|
|
18055
|
+
format: root.format,
|
|
18056
|
+
// The whole file, so another machine can rebuild it. The search
|
|
18057
|
+
// chunk stays capped at 2000 chars; this does not.
|
|
18058
|
+
...rebuildBody2(content)
|
|
18015
18059
|
}
|
|
18016
18060
|
};
|
|
18017
18061
|
} catch {
|
|
@@ -18047,6 +18091,19 @@ var init_slash_commands_source = __esm({
|
|
|
18047
18091
|
// ../engine/dist/parsers/subagents-source.js
|
|
18048
18092
|
import { existsSync as existsSync39, readdirSync as readdirSync29, readFileSync as readFileSync28, statSync as statSync34 } from "fs";
|
|
18049
18093
|
import { join as join38, basename as basename21 } from "path";
|
|
18094
|
+
function rebuildBody3(content) {
|
|
18095
|
+
const { text, redacted } = redactInlineSecrets(content);
|
|
18096
|
+
const out = {};
|
|
18097
|
+
if (text.length > MAX_BODY_CHARS3) {
|
|
18098
|
+
out.body = text.slice(0, MAX_BODY_CHARS3);
|
|
18099
|
+
out.bodyTruncated = true;
|
|
18100
|
+
} else {
|
|
18101
|
+
out.body = text;
|
|
18102
|
+
}
|
|
18103
|
+
if (redacted)
|
|
18104
|
+
out.bodySecretsRedacted = true;
|
|
18105
|
+
return out;
|
|
18106
|
+
}
|
|
18050
18107
|
function parseAgent(content, fallbackName, format) {
|
|
18051
18108
|
if (format === "toml") {
|
|
18052
18109
|
const t = parseScalarToml(content);
|
|
@@ -18065,7 +18122,7 @@ function parseAgent(content, fallbackName, format) {
|
|
|
18065
18122
|
body: body.trim()
|
|
18066
18123
|
};
|
|
18067
18124
|
}
|
|
18068
|
-
var MAX_CHUNK_CHARS14, SubagentsSource;
|
|
18125
|
+
var MAX_CHUNK_CHARS14, MAX_BODY_CHARS3, SubagentsSource;
|
|
18069
18126
|
var init_subagents_source = __esm({
|
|
18070
18127
|
"../engine/dist/parsers/subagents-source.js"() {
|
|
18071
18128
|
"use strict";
|
|
@@ -18077,7 +18134,9 @@ var init_subagents_source = __esm({
|
|
|
18077
18134
|
init_tool_paths();
|
|
18078
18135
|
init_toolkit_format();
|
|
18079
18136
|
init_project_dir_name();
|
|
18137
|
+
init_redact_inline();
|
|
18080
18138
|
MAX_CHUNK_CHARS14 = 2e3;
|
|
18139
|
+
MAX_BODY_CHARS3 = 512 * 1024;
|
|
18081
18140
|
SubagentsSource = class {
|
|
18082
18141
|
sourceType = "agent";
|
|
18083
18142
|
roots() {
|
|
@@ -18142,7 +18201,10 @@ var init_subagents_source = __esm({
|
|
|
18142
18201
|
description: parsed.description,
|
|
18143
18202
|
tools: parsed.tools,
|
|
18144
18203
|
scope: root.scope,
|
|
18145
|
-
format: root.format
|
|
18204
|
+
format: root.format,
|
|
18205
|
+
// The whole file, so another machine can rebuild it. The search
|
|
18206
|
+
// chunk stays capped at 2000 chars; this does not.
|
|
18207
|
+
...rebuildBody3(content)
|
|
18146
18208
|
}
|
|
18147
18209
|
};
|
|
18148
18210
|
} catch {
|
|
@@ -18531,6 +18593,9 @@ var init_all_sources = __esm({
|
|
|
18531
18593
|
});
|
|
18532
18594
|
|
|
18533
18595
|
// ../engine/dist/core/extractor-version.js
|
|
18596
|
+
function extractorVersionForItem(id, sourceType) {
|
|
18597
|
+
return extractorVersionForTool(toolOfId(id)) + (ITEM_SOURCE_BUMP[sourceType] ?? 0);
|
|
18598
|
+
}
|
|
18534
18599
|
function toolOfId(id) {
|
|
18535
18600
|
if (id.startsWith("agy_"))
|
|
18536
18601
|
return "agy";
|
|
@@ -18550,11 +18615,17 @@ function extractorVersionForTool(tool) {
|
|
|
18550
18615
|
function extractorVersionForId(id) {
|
|
18551
18616
|
return extractorVersionForTool(toolOfId(id));
|
|
18552
18617
|
}
|
|
18553
|
-
var BASE_EXTRACTOR_VERSION, TOOL_EXTRACTOR_BUMP, EXTRACTOR_VERSION;
|
|
18618
|
+
var BASE_EXTRACTOR_VERSION, ITEM_SOURCE_BUMP, TOOL_EXTRACTOR_BUMP, EXTRACTOR_VERSION;
|
|
18554
18619
|
var init_extractor_version = __esm({
|
|
18555
18620
|
"../engine/dist/core/extractor-version.js"() {
|
|
18556
18621
|
"use strict";
|
|
18557
18622
|
BASE_EXTRACTOR_VERSION = 2;
|
|
18623
|
+
ITEM_SOURCE_BUMP = {
|
|
18624
|
+
mcp: 1,
|
|
18625
|
+
skill: 1,
|
|
18626
|
+
agent: 1,
|
|
18627
|
+
command: 1
|
|
18628
|
+
};
|
|
18558
18629
|
TOOL_EXTRACTOR_BUMP = {
|
|
18559
18630
|
agy: 2,
|
|
18560
18631
|
claude: 1,
|
|
@@ -18935,7 +19006,7 @@ var init_http = __esm({
|
|
|
18935
19006
|
CLI_VERSION = JSON.parse(readFileSync33(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
|
|
18936
19007
|
} catch {
|
|
18937
19008
|
try {
|
|
18938
|
-
if (true) CLI_VERSION = "0.5.
|
|
19009
|
+
if (true) CLI_VERSION = "0.5.10";
|
|
18939
19010
|
} catch {
|
|
18940
19011
|
}
|
|
18941
19012
|
}
|
|
@@ -19447,7 +19518,7 @@ var init_telemetry = __esm({
|
|
|
19447
19518
|
init_sync_client();
|
|
19448
19519
|
cliVersion2 = () => {
|
|
19449
19520
|
try {
|
|
19450
|
-
return true ? "0.5.
|
|
19521
|
+
return true ? "0.5.10" : "dev";
|
|
19451
19522
|
} catch {
|
|
19452
19523
|
return "dev";
|
|
19453
19524
|
}
|
|
@@ -20611,6 +20682,7 @@ async function syncToTargetInScope(cred, opts = {}) {
|
|
|
20611
20682
|
}
|
|
20612
20683
|
const itemVersions = loadItemVersions(base);
|
|
20613
20684
|
const seenTools = /* @__PURE__ */ new Set();
|
|
20685
|
+
const seenItemKeys = /* @__PURE__ */ new Map();
|
|
20614
20686
|
const registry = buildSourceRegistry();
|
|
20615
20687
|
for (const sourceType of registry.getRegisteredTypes()) {
|
|
20616
20688
|
if (sourceType === "session") continue;
|
|
@@ -20625,7 +20697,9 @@ async function syncToTargetInScope(cred, opts = {}) {
|
|
|
20625
20697
|
for await (const item of discovered) {
|
|
20626
20698
|
const itemTool = toolOfId(item.id);
|
|
20627
20699
|
seenTools.add(itemTool);
|
|
20628
|
-
const
|
|
20700
|
+
const itemKey = `${itemTool}:${item.sourceType}`;
|
|
20701
|
+
seenItemKeys.set(itemKey, extractorVersionForItem(item.id, item.sourceType));
|
|
20702
|
+
const versionStale = (itemVersions[itemKey] ?? EXTRACTOR_VERSION) < extractorVersionForItem(item.id, item.sourceType);
|
|
20629
20703
|
if ((item.mtime || 0) < (opts.sinceMs ?? 0) && !versionStale) continue;
|
|
20630
20704
|
if (excluded(item.projectPath || "")) continue;
|
|
20631
20705
|
if (!includedProject(item.projectPath || "")) continue;
|
|
@@ -20708,6 +20782,7 @@ async function syncToTargetInScope(cred, opts = {}) {
|
|
|
20708
20782
|
try {
|
|
20709
20783
|
const rec = {};
|
|
20710
20784
|
for (const t of seenTools) rec[t] = extractorVersionForTool(t);
|
|
20785
|
+
for (const [k, v] of seenItemKeys) rec[k] = v;
|
|
20711
20786
|
saveItemVersions(base, rec);
|
|
20712
20787
|
} catch {
|
|
20713
20788
|
}
|
|
@@ -21147,7 +21222,7 @@ var init_sync_client = __esm({
|
|
|
21147
21222
|
ownVersion = JSON.parse(readFileSync35(join45(dir, "../package.json"), "utf-8")).version || ownVersion;
|
|
21148
21223
|
} catch {
|
|
21149
21224
|
try {
|
|
21150
|
-
if (true) ownVersion = "0.5.
|
|
21225
|
+
if (true) ownVersion = "0.5.10";
|
|
21151
21226
|
} catch {
|
|
21152
21227
|
}
|
|
21153
21228
|
}
|
|
@@ -23537,7 +23612,7 @@ var RecallMemorySearchSchema = z.object({
|
|
|
23537
23612
|
top_k: z.number().optional().default(10).describe("Number of results"),
|
|
23538
23613
|
source_types: z.array(z.enum(["session", "plan", "task", "claude_md", "paste", "history", "diary"])).optional().describe("Filter by source types (default: all)"),
|
|
23539
23614
|
project_filter: z.string().optional().describe("Filter by project path"),
|
|
23540
|
-
semantic: z.boolean().optional().default(false).describe("
|
|
23615
|
+
semantic: z.boolean().optional().default(false).describe("Reserved and currently ignored: the semantic tier is switched off server-side, so every search runs keyword FTS.")
|
|
23541
23616
|
});
|
|
23542
23617
|
var RecallSmartResumeSchema = z.object({
|
|
23543
23618
|
session_id: z.string().describe("Session ID to get smart resume context for")
|
|
@@ -23739,6 +23814,16 @@ var RecallSecurityDismissSchema = z.object({
|
|
|
23739
23814
|
status: z.enum(["rotated", "false_positive", "dismissed", "undismissed"]).describe("Why this finding is no longer actionable \u2014 or `undismissed` to put it BACK on the action-required list (the inverse this tool was missing)."),
|
|
23740
23815
|
reason: z.string().optional().describe("Optional note")
|
|
23741
23816
|
});
|
|
23817
|
+
var TOOLKIT_TYPES = ["mcp", "skill", "command", "agent", "instructions"];
|
|
23818
|
+
var RecallToolkitStatusSchema = z.object({
|
|
23819
|
+
type: z.enum(TOOLKIT_TYPES).optional().describe("Restrict to one artifact type. Omit for every type.")
|
|
23820
|
+
});
|
|
23821
|
+
var RecallToolkitSyncSchema = z.object({
|
|
23822
|
+
types: z.array(z.enum(TOOLKIT_TYPES)).optional().describe("Which artifact types to install. Omit for all of them."),
|
|
23823
|
+
name: z.string().optional().describe("Install ONE named artifact. Requires exactly one entry in `types`."),
|
|
23824
|
+
device: z.string().optional().describe("Hostname of the machine to install on. Omit to target EVERY device on the account."),
|
|
23825
|
+
scope: z.enum(["pull", "fan_out"]).optional().default("pull").describe("pull = install what the account has onto the device(s), from the server (cross-device). fan_out = copy what a device already has between its own tools (single-machine).")
|
|
23826
|
+
});
|
|
23742
23827
|
var RecallSecurityRulesSchema = z.object({
|
|
23743
23828
|
action: z.enum(["list", "test"]).optional().default("list").describe("list = return tenant rules; test = try a regex against sample text (does not persist)"),
|
|
23744
23829
|
name: z.string().optional().describe("For test: rule name"),
|
|
@@ -24121,7 +24206,7 @@ with recall_show (pass the plan id).`,
|
|
|
24121
24206
|
project_filter: { type: "string", description: "Filter by project path" },
|
|
24122
24207
|
provider: { type: "string", enum: ["ollama", "gemini"], default: "ollama" },
|
|
24123
24208
|
scope: { type: "string", enum: ["local", "server"], default: "local", description: "server = synced cross-device history (needs chat-recall login)." },
|
|
24124
|
-
semantic: { type: "boolean", default: false, description: "
|
|
24209
|
+
semantic: { type: "boolean", default: false, description: "Reserved and currently ignored: the semantic tier is switched off server-side, so every search runs keyword FTS." }
|
|
24125
24210
|
},
|
|
24126
24211
|
required: ["query"]
|
|
24127
24212
|
}
|
|
@@ -24661,6 +24746,59 @@ secret. The dismissal syncs across devices.`,
|
|
|
24661
24746
|
required: ["preview", "status"]
|
|
24662
24747
|
}
|
|
24663
24748
|
},
|
|
24749
|
+
{
|
|
24750
|
+
name: "recall_toolkit_status",
|
|
24751
|
+
description: `Which MCP servers, skills, commands and agents exist, on which AI tool, on which device.
|
|
24752
|
+
|
|
24753
|
+
Use it before recall_toolkit_sync to see what is missing where, and after, to
|
|
24754
|
+
confirm what landed. Counts are per (type, tool) and rows name the device that
|
|
24755
|
+
uploaded them, so you can tell "my laptop has it" from "my desktop has it".
|
|
24756
|
+
|
|
24757
|
+
NOTE: the server holds an INVENTORY. MCP registrations carry enough to rebuild
|
|
24758
|
+
elsewhere; skills and agents do not (their file content is not uploaded), and
|
|
24759
|
+
this tool says which is which.`,
|
|
24760
|
+
inputSchema: {
|
|
24761
|
+
type: "object",
|
|
24762
|
+
properties: {
|
|
24763
|
+
type: { type: "string", enum: [...TOOLKIT_TYPES], description: "Restrict to one artifact type. Omit for every type." }
|
|
24764
|
+
}
|
|
24765
|
+
}
|
|
24766
|
+
},
|
|
24767
|
+
{
|
|
24768
|
+
name: "recall_toolkit_sync",
|
|
24769
|
+
description: `Install the account's MCP servers / skills / agents onto a device, or fan a device's own artifacts out across its tools.
|
|
24770
|
+
|
|
24771
|
+
TWO DIFFERENT OPERATIONS \u2014 pick with \`scope\`:
|
|
24772
|
+
|
|
24773
|
+
scope: 'pull' Install what the ACCOUNT has onto the target device, sourced
|
|
24774
|
+
from the server. This is the cross-device one: it is what
|
|
24775
|
+
sets up a new laptop. Omit \`device\` to target every device.
|
|
24776
|
+
|
|
24777
|
+
scope: 'fan_out' Copy what ONE device already has between that device's own
|
|
24778
|
+
tools (claude \u2192 codex \u2192 cursor \u2026). Single machine only; it
|
|
24779
|
+
reads that machine's disk.
|
|
24780
|
+
|
|
24781
|
+
Examples:
|
|
24782
|
+
everything, everywhere { }
|
|
24783
|
+
every MCP, everywhere { types: ['mcp'] }
|
|
24784
|
+
every MCP on one machine { types: ['mcp'], device: 'my-laptop' }
|
|
24785
|
+
one artifact { types: ['mcp'], name: 'acme-mcp' }
|
|
24786
|
+
fan a machine's own set out { scope: 'fan_out', device: 'my-laptop' }
|
|
24787
|
+
|
|
24788
|
+
The work is QUEUED, not done inline: the target device performs it on its next
|
|
24789
|
+
drain (the watch daemon polls, or run \`chat-recall toolkit drain\`). Only that
|
|
24790
|
+
device can write its own config files, so nothing else could do it. Read the
|
|
24791
|
+
outcome back with recall_toolkit_status.`,
|
|
24792
|
+
inputSchema: {
|
|
24793
|
+
type: "object",
|
|
24794
|
+
properties: {
|
|
24795
|
+
types: { type: "array", items: { type: "string", enum: [...TOOLKIT_TYPES] }, description: "Artifact types to install. Omit for all." },
|
|
24796
|
+
name: { type: "string", description: "Install ONE named artifact. Requires exactly one entry in types." },
|
|
24797
|
+
device: { type: "string", description: "Hostname of the target machine. Omit to target every device on the account." },
|
|
24798
|
+
scope: { type: "string", enum: ["pull", "fan_out"], default: "pull", description: "pull = install from the server (cross-device). fan_out = copy between one machine's own tools." }
|
|
24799
|
+
}
|
|
24800
|
+
}
|
|
24801
|
+
},
|
|
24664
24802
|
{
|
|
24665
24803
|
name: "recall_security_rules",
|
|
24666
24804
|
description: `List tenant custom secret-detection rules, or test a regex in the sandbox.
|
|
@@ -26615,6 +26753,88 @@ ${row.value}`
|
|
|
26615
26753
|
});
|
|
26616
26754
|
return { content: [{ type: "text", text: `Dismissed \`${params.preview}\` as ${params.status}.` }] };
|
|
26617
26755
|
}
|
|
26756
|
+
case "recall_toolkit_status": {
|
|
26757
|
+
const params = RecallToolkitStatusSchema.parse(args);
|
|
26758
|
+
requireRemote();
|
|
26759
|
+
const types = params.type ? [params.type] : [...TOOLKIT_TYPES];
|
|
26760
|
+
const REBUILDABLE = {
|
|
26761
|
+
mcp: "yes \u2014 a registration is config, and the whole entry is stored",
|
|
26762
|
+
skill: "yes \u2014 the full file is stored, so it can be written on any machine",
|
|
26763
|
+
agent: "yes \u2014 the body is converted to each tool's own encoding (markdown or TOML)",
|
|
26764
|
+
command: "yes \u2014 same as agents, converted per tool",
|
|
26765
|
+
instructions: "no, deliberately \u2014 a CLAUDE.md belongs to a repo, not to a machine"
|
|
26766
|
+
};
|
|
26767
|
+
const lines = ["# Toolkit inventory", ""];
|
|
26768
|
+
for (const type of types) {
|
|
26769
|
+
let items = [];
|
|
26770
|
+
try {
|
|
26771
|
+
const r = await remoteGetQS(`/api/toolkit/browse/${type}`, { limit: 1e3 });
|
|
26772
|
+
items = r.items || [];
|
|
26773
|
+
} catch (err) {
|
|
26774
|
+
lines.push(`## ${type}`, `_could not read: ${err instanceof Error ? err.message : err}_`, "");
|
|
26775
|
+
continue;
|
|
26776
|
+
}
|
|
26777
|
+
const byTool = /* @__PURE__ */ new Map();
|
|
26778
|
+
const byDevice = /* @__PURE__ */ new Map();
|
|
26779
|
+
let rebuildable = 0;
|
|
26780
|
+
for (const it of items) {
|
|
26781
|
+
let e = {};
|
|
26782
|
+
try {
|
|
26783
|
+
e = JSON.parse(it.extra_json || "{}");
|
|
26784
|
+
} catch {
|
|
26785
|
+
}
|
|
26786
|
+
byTool.set(String(e.tool || "?"), (byTool.get(String(e.tool || "?")) || 0) + 1);
|
|
26787
|
+
byDevice.set(String(e.syncedDeviceId || "?"), (byDevice.get(String(e.syncedDeviceId || "?")) || 0) + 1);
|
|
26788
|
+
if (type === "mcp" && e.spec) rebuildable++;
|
|
26789
|
+
if ((type === "skill" || type === "agent" || type === "command") && typeof e.body === "string" && e.body) rebuildable++;
|
|
26790
|
+
}
|
|
26791
|
+
lines.push(`## ${type} \u2014 ${items.length}`);
|
|
26792
|
+
if (byTool.size) lines.push(`- by tool: ${[...byTool].map(([k, v]) => `${k} ${v}`).join(" \xB7 ")}`);
|
|
26793
|
+
if (byDevice.size) lines.push(`- by device: ${[...byDevice].map(([k, v]) => `${k} ${v}`).join(" \xB7 ")}`);
|
|
26794
|
+
lines.push(`- installable on another device: ${REBUILDABLE[type]}`);
|
|
26795
|
+
if (type === "skill" || type === "agent" || type === "command") {
|
|
26796
|
+
lines.push(`- carrying a full body: ${rebuildable}/${items.length}` + (rebuildable < items.length ? " \u2014 the rest need a re-index on their source device" : ""));
|
|
26797
|
+
}
|
|
26798
|
+
if (type === "mcp") {
|
|
26799
|
+
lines.push(`- carrying a rebuild spec: ${rebuildable}/${items.length}` + (rebuildable < items.length ? " \u2014 the rest need a re-index on their source device" : ""));
|
|
26800
|
+
}
|
|
26801
|
+
lines.push("");
|
|
26802
|
+
}
|
|
26803
|
+
lines.push("Queue an install with `recall_toolkit_sync`.");
|
|
26804
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
26805
|
+
}
|
|
26806
|
+
case "recall_toolkit_sync": {
|
|
26807
|
+
const params = RecallToolkitSyncSchema.parse(args);
|
|
26808
|
+
requireRemote();
|
|
26809
|
+
if (params.name && (params.types?.length ?? 0) !== 1) {
|
|
26810
|
+
return { content: [{ type: "text", text: "A `name` needs exactly one entry in `types`, so the artifact is unambiguous." }] };
|
|
26811
|
+
}
|
|
26812
|
+
if (params.scope === "fan_out" && !params.device) {
|
|
26813
|
+
return { content: [{ type: "text", text: "`fan_out` copies between ONE machine's own tools \u2014 name the machine with `device`." }] };
|
|
26814
|
+
}
|
|
26815
|
+
const body = params.scope === "fan_out" ? { kind: "sync_all", deviceId: params.device } : { kind: "pull", types: params.types, name: params.name, deviceId: params.device ?? null };
|
|
26816
|
+
const r = await remotePost("/api/sync-intents", body);
|
|
26817
|
+
if (!r.id) return { content: [{ type: "text", text: `Queue refused it: ${r.error || "unknown error"}` }] };
|
|
26818
|
+
const what = params.name ? `"${params.name}"` : params.types?.length ? params.types.join(", ") : "every artifact type";
|
|
26819
|
+
const where = params.device ? `on ${params.device}` : "on every device on this account";
|
|
26820
|
+
return {
|
|
26821
|
+
content: [{
|
|
26822
|
+
type: "text",
|
|
26823
|
+
text: [
|
|
26824
|
+
`Queued: ${params.scope === "fan_out" ? "fan out" : "install"} ${what} ${where}.`,
|
|
26825
|
+
`Intent id: ${r.id}`,
|
|
26826
|
+
"",
|
|
26827
|
+
// The queue accepting is NOT the work happening. Saying so stops
|
|
26828
|
+
// an agent reporting success for something that has not run.
|
|
26829
|
+
"QUEUED, NOT DONE. Only the target device can write its own config",
|
|
26830
|
+
"files, so it performs this on its next drain \u2014 the watch daemon polls,",
|
|
26831
|
+
"or run `chat-recall toolkit drain` there to do it now.",
|
|
26832
|
+
"",
|
|
26833
|
+
"Check the result with `recall_toolkit_status`."
|
|
26834
|
+
].join("\n")
|
|
26835
|
+
}]
|
|
26836
|
+
};
|
|
26837
|
+
}
|
|
26618
26838
|
case "recall_security_rules": {
|
|
26619
26839
|
const params = RecallSecurityRulesSchema.parse(args);
|
|
26620
26840
|
requireRemote();
|