@askthew/mcp-plugin 0.4.9 → 0.4.11
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 +43 -181
- package/dist/cli.d.ts +0 -6
- package/dist/cli.js +255 -723
- package/dist/cloud-client.d.ts +80 -0
- package/dist/cloud-client.js +150 -0
- package/dist/index.d.ts +20 -123
- package/dist/index.js +157 -1845
- package/dist/install.d.ts +33 -119
- package/dist/install.js +140 -614
- package/dist/lib/paths.d.ts +2 -2
- package/dist/lib/paths.js +6 -6
- package/dist/outbox.d.ts +32 -0
- package/dist/outbox.js +101 -0
- package/dist/redaction.d.ts +11 -0
- package/dist/redaction.js +52 -0
- package/package.json +2 -2
- package/dist/lib/cli-actions.d.ts +0 -28
- package/dist/lib/cli-actions.js +0 -104
- package/dist/lib/free-install-registration.d.ts +0 -27
- package/dist/lib/free-install-registration.js +0 -52
- package/dist/lib/free-tier-policy.d.ts +0 -22
- package/dist/lib/free-tier-policy.js +0 -52
- package/dist/lib/local-identity.d.ts +0 -44
- package/dist/lib/local-identity.js +0 -81
- package/dist/lib/local-store.d.ts +0 -130
- package/dist/lib/local-store.js +0 -606
- package/dist/lib/loopback-auth.d.ts +0 -8
- package/dist/lib/loopback-auth.js +0 -30
- package/dist/lib/telemetry.d.ts +0 -25
- package/dist/lib/telemetry.js +0 -155
- package/dist/lib/timeline-insights.d.ts +0 -23
- package/dist/lib/timeline-insights.js +0 -115
- package/dist/lib/tip-engine.d.ts +0 -18
- package/dist/lib/tip-engine.js +0 -237
- package/dist/lib/upgrade-nudge.d.ts +0 -19
- package/dist/lib/upgrade-nudge.js +0 -37
- package/dist/lib/upgrade-sync.d.ts +0 -38
- package/dist/lib/upgrade-sync.js +0 -60
package/dist/lib/upgrade-sync.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
export function syncDryRun(store) {
|
|
2
|
-
const pendingSignals = store.listSignals({ limit: 100000 }).filter((signal) => !store.getMeta(`signal_uploaded:${signal.id}`));
|
|
3
|
-
const pendingDecisions = store.listDecisions({ limit: 100000, pendingUploadOnly: true });
|
|
4
|
-
const alreadySignals = store.listSignals({ limit: 100000 }).length - pendingSignals.length;
|
|
5
|
-
const alreadyDecisions = store.listDecisions({ limit: 100000 }).filter((decision) => decision.uploadedAt).length;
|
|
6
|
-
return {
|
|
7
|
-
pending: { signals: pendingSignals.length, decisions: pendingDecisions.length },
|
|
8
|
-
alreadyUploaded: { signals: alreadySignals, decisions: alreadyDecisions },
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
export async function uploadLocalStore(input) {
|
|
12
|
-
if (input.dryRun) {
|
|
13
|
-
return { ok: true, dryRun: true, ...syncDryRun(input.store) };
|
|
14
|
-
}
|
|
15
|
-
const fetcher = input.fetchImpl ?? fetch;
|
|
16
|
-
const apiUrl = (input.apiUrl ?? input.credentials.apiUrl ?? process.env.ASKTHEW_API_URL ?? "https://app.askthew.com").replace(/\/$/, "");
|
|
17
|
-
const token = input.syncToken ?? input.credentials.cliToken;
|
|
18
|
-
const signalRows = input.store
|
|
19
|
-
.listSignals({ limit: 100000 })
|
|
20
|
-
.filter((signal) => !input.store.getMeta(`signal_uploaded:${signal.id}`));
|
|
21
|
-
const decisionRows = input.store.listDecisions({ limit: 100000, pendingUploadOnly: true }).reverse();
|
|
22
|
-
let uploadedSignals = 0;
|
|
23
|
-
let uploadedDecisions = 0;
|
|
24
|
-
for (const chunk of chunks(signalRows, 100)) {
|
|
25
|
-
await postChunk(apiUrl, token, fetcher, "signals", chunk);
|
|
26
|
-
for (const signal of chunk) {
|
|
27
|
-
input.store.setMeta(`signal_uploaded:${signal.id}`, new Date().toISOString());
|
|
28
|
-
}
|
|
29
|
-
uploadedSignals += chunk.length;
|
|
30
|
-
}
|
|
31
|
-
for (const chunk of chunks(decisionRows, 100)) {
|
|
32
|
-
await postChunk(apiUrl, token, fetcher, "decisions", chunk);
|
|
33
|
-
for (const decision of chunk) {
|
|
34
|
-
input.store.updateDecision(decision.id, { uploadedAt: new Date().toISOString() });
|
|
35
|
-
}
|
|
36
|
-
uploadedDecisions += chunk.length;
|
|
37
|
-
}
|
|
38
|
-
return { ok: true, uploaded: { signals: uploadedSignals, decisions: uploadedDecisions } };
|
|
39
|
-
}
|
|
40
|
-
async function postChunk(apiUrl, token, fetcher, kind, items) {
|
|
41
|
-
const response = await fetcher(`${apiUrl}/api/cli/v1/upgrade/sync`, {
|
|
42
|
-
method: "POST",
|
|
43
|
-
headers: {
|
|
44
|
-
"Content-Type": "application/json",
|
|
45
|
-
Authorization: `Bearer ${token}`,
|
|
46
|
-
},
|
|
47
|
-
body: JSON.stringify({ uploadVersion: 1, kind, items }),
|
|
48
|
-
});
|
|
49
|
-
if (!response.ok) {
|
|
50
|
-
const body = await response.json().catch(() => null);
|
|
51
|
-
throw new Error(body?.error ? String(body.error) : `Upload failed for ${kind}.`);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
function chunks(items, size) {
|
|
55
|
-
const result = [];
|
|
56
|
-
for (let index = 0; index < items.length; index += size) {
|
|
57
|
-
result.push(items.slice(index, index + size));
|
|
58
|
-
}
|
|
59
|
-
return result;
|
|
60
|
-
}
|