conare 0.4.5 → 0.4.7
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/dist/index.js +23 -21
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -40,6 +40,8 @@ function fitContent(header, rounds) {
|
|
|
40
40
|
const user = maxUser > 0 && r.user.length > maxUser ? r.user.slice(0, maxUser) + "..." : r.user;
|
|
41
41
|
return `## Q: ${user}
|
|
42
42
|
|
|
43
|
+
---
|
|
44
|
+
|
|
43
45
|
${r.assistant}`;
|
|
44
46
|
}).join(`
|
|
45
47
|
|
|
@@ -546,13 +548,13 @@ async function getRemoteMemoryCount(apiKey) {
|
|
|
546
548
|
return null;
|
|
547
549
|
}
|
|
548
550
|
}
|
|
549
|
-
async function uploadItems(apiKey, items
|
|
551
|
+
async function uploadItems(apiKey, items) {
|
|
550
552
|
let retries = 4;
|
|
551
553
|
while (retries > 0) {
|
|
552
554
|
try {
|
|
553
555
|
const data = await apiRequest("/api/memories/bulk", apiKey, {
|
|
554
556
|
method: "POST",
|
|
555
|
-
body: JSON.stringify(
|
|
557
|
+
body: JSON.stringify({ items })
|
|
556
558
|
});
|
|
557
559
|
if (!Array.isArray(data.results) || data.results.length !== items.length) {
|
|
558
560
|
throw new Error("Unexpected bulk upload response");
|
|
@@ -583,7 +585,7 @@ async function uploadBulk(apiKey, memories, onProgress) {
|
|
|
583
585
|
const results = [];
|
|
584
586
|
const batches = createUploadBatches(memories);
|
|
585
587
|
for (const batch of batches) {
|
|
586
|
-
let batchResults = await uploadItems(apiKey, batch.items
|
|
588
|
+
let batchResults = await uploadItems(apiKey, batch.items);
|
|
587
589
|
if (batch.items.length > 1 && batchResults.some((result) => !result.success)) {
|
|
588
590
|
const retriedResults = [];
|
|
589
591
|
for (let i = 0;i < batch.items.length; i++) {
|
|
@@ -592,7 +594,7 @@ async function uploadBulk(apiKey, memories, onProgress) {
|
|
|
592
594
|
retriedResults.push(result);
|
|
593
595
|
continue;
|
|
594
596
|
}
|
|
595
|
-
const [singleResult] = await uploadItems(apiKey, [batch.items[i]]
|
|
597
|
+
const [singleResult] = await uploadItems(apiKey, [batch.items[i]]);
|
|
596
598
|
retriedResults.push(singleResult);
|
|
597
599
|
}
|
|
598
600
|
batchResults = retriedResults;
|
|
@@ -614,7 +616,7 @@ async function uploadBulk(apiKey, memories, onProgress) {
|
|
|
614
616
|
}
|
|
615
617
|
return { success, failed, results };
|
|
616
618
|
}
|
|
617
|
-
var API_URL2 = "https://
|
|
619
|
+
var API_URL2 = "https://conare.ai", ApiError, PAGE_SIZE = 200, DELETE_CONCURRENCY = 5;
|
|
618
620
|
var init_api = __esm(() => {
|
|
619
621
|
ApiError = class ApiError extends Error {
|
|
620
622
|
statusCode;
|
|
@@ -1764,7 +1766,7 @@ async function promptApiKey(options) {
|
|
|
1764
1766
|
validate(value) {
|
|
1765
1767
|
const resolved = value.trim() || options.savedApiKey || "";
|
|
1766
1768
|
if (!resolved)
|
|
1767
|
-
return "Enter an API key from https://
|
|
1769
|
+
return "Enter an API key from https://conare.ai";
|
|
1768
1770
|
if (!resolved.startsWith("cmem_"))
|
|
1769
1771
|
return "API keys start with cmem_";
|
|
1770
1772
|
return;
|
|
@@ -1796,7 +1798,7 @@ async function promptAuth(options) {
|
|
|
1796
1798
|
validate(value) {
|
|
1797
1799
|
const resolved = value.trim();
|
|
1798
1800
|
if (!resolved)
|
|
1799
|
-
return "Enter an API key from https://
|
|
1801
|
+
return "Enter an API key from https://conare.ai";
|
|
1800
1802
|
if (!resolved.startsWith("cmem_"))
|
|
1801
1803
|
return "API keys start with cmem_";
|
|
1802
1804
|
return;
|
|
@@ -2028,7 +2030,7 @@ async function detect() {
|
|
|
2028
2030
|
// src/auth.ts
|
|
2029
2031
|
import { execSync } from "node:child_process";
|
|
2030
2032
|
import { platform as platform2 } from "node:os";
|
|
2031
|
-
var API_URL = "https://
|
|
2033
|
+
var API_URL = "https://conare.ai";
|
|
2032
2034
|
async function browserAuth() {
|
|
2033
2035
|
const stateBytes = new Uint8Array(16);
|
|
2034
2036
|
crypto.getRandomValues(stateBytes);
|
|
@@ -2583,7 +2585,7 @@ import { existsSync as existsSync6, mkdirSync as mkdirSync2, readFileSync as rea
|
|
|
2583
2585
|
import { dirname, join as join7 } from "node:path";
|
|
2584
2586
|
import { homedir as homedir5, platform as platform5 } from "node:os";
|
|
2585
2587
|
import { spawnSync } from "node:child_process";
|
|
2586
|
-
var CONARE_URL = "https://
|
|
2588
|
+
var CONARE_URL = "https://conare.ai";
|
|
2587
2589
|
var SERVER_NAME = "conare";
|
|
2588
2590
|
var MCP_TARGETS = [
|
|
2589
2591
|
{ id: "claude", label: "Claude Code", defaultSelected: true },
|
|
@@ -2829,18 +2831,18 @@ var CLIENT_CONFIGURATORS = {
|
|
|
2829
2831
|
};
|
|
2830
2832
|
var SKILL_MD = `---
|
|
2831
2833
|
name: conare
|
|
2832
|
-
description:
|
|
2834
|
+
description: Load prior project context, search past sessions, save durable preferences, list stored memories, and forget saved items. Use when the user asks what they worked on before, wants prior context loaded at the start of a task, asks to remember or forget something, needs past conversations, decisions, or code recalled from memory, OR when you encounter a reference you don't understand that might exist in the user's memory.
|
|
2833
2835
|
compatibility: Requires the Conare MCP server tools (\`recall\`, \`search\`, \`save\`, \`list\`, \`forget\`) to be installed and connected.
|
|
2834
2836
|
metadata:
|
|
2835
2837
|
author: Conare
|
|
2836
|
-
version: 1.
|
|
2838
|
+
version: 1.2.0
|
|
2837
2839
|
mcp-server: conare
|
|
2838
2840
|
homepage: https://conare.ai
|
|
2839
2841
|
---
|
|
2840
2842
|
|
|
2841
2843
|
# Conare
|
|
2842
2844
|
|
|
2843
|
-
This skill
|
|
2845
|
+
This skill teaches the agent the default workflow, tool-selection rules, and query patterns for working with persistent memory across sessions.
|
|
2844
2846
|
|
|
2845
2847
|
## Primary Use Cases
|
|
2846
2848
|
|
|
@@ -2896,7 +2898,7 @@ Expected outcome: future \`recall\` calls surface the information automatically
|
|
|
2896
2898
|
|
|
2897
2899
|
- Use \`after\`/\`before\` (Unix ms) for time-scoped searches: "what did we work on this week?"
|
|
2898
2900
|
- Use \`containerTag\` to filter by source: \`claude-chats\`, \`codex-chats\`, \`cursor-chats\`, \`codebase\`, \`preferences\`
|
|
2899
|
-
- Use \`project\` for cross-project filtering (partial names work: "conare" matches "fun/conare
|
|
2901
|
+
- Use \`project\` for cross-project filtering (partial names work: "conare" matches "fun/conare")
|
|
2900
2902
|
- Keep \`limit\` low (3-5) for focused results, higher (10-15) for broad exploration
|
|
2901
2903
|
- When user asks to "remember" something, save it with \`save\` — it goes to the \`preferences\` container and gets surfaced by \`recall\` in future sessions
|
|
2902
2904
|
|
|
@@ -3491,14 +3493,14 @@ function printMissingKeyError() {
|
|
|
3491
3493
|
console.error("Error: no API key configured.");
|
|
3492
3494
|
console.error("");
|
|
3493
3495
|
console.error("Run one of these:");
|
|
3494
|
-
console.error("
|
|
3495
|
-
console.error("
|
|
3496
|
+
console.error(" npx conare@latest");
|
|
3497
|
+
console.error(" bunx conare@latest");
|
|
3496
3498
|
console.error("");
|
|
3497
3499
|
console.error("For a built-in command, install globally:");
|
|
3498
3500
|
console.error(" bun add -g conare");
|
|
3499
3501
|
console.error(" npm i -g conare");
|
|
3500
3502
|
console.error("");
|
|
3501
|
-
console.error("Get your API key at https://
|
|
3503
|
+
console.error("Get your API key at https://conare.ai");
|
|
3502
3504
|
}
|
|
3503
3505
|
function printFailureSummary(results, memories) {
|
|
3504
3506
|
const failures = results.map((result, index) => ({ ...result, memory: memories[index] })).filter((result) => !result.success);
|
|
@@ -3617,7 +3619,7 @@ Options:
|
|
|
3617
3619
|
--source <name> Only ingest from: claude, codex, cursor
|
|
3618
3620
|
--wasm-dir <path> Path to sql.js module (for Cursor ingestion)
|
|
3619
3621
|
|
|
3620
|
-
Get your API key at https://
|
|
3622
|
+
Get your API key at https://conare.ai
|
|
3621
3623
|
`);
|
|
3622
3624
|
process.exit(0);
|
|
3623
3625
|
}
|
|
@@ -3669,7 +3671,7 @@ async function runInstall() {
|
|
|
3669
3671
|
}
|
|
3670
3672
|
const auth = await validateKey(apiKey);
|
|
3671
3673
|
if (!auth.valid) {
|
|
3672
|
-
console.error("Invalid API key. Check your key at https://
|
|
3674
|
+
console.error("Invalid API key. Check your key at https://conare.ai");
|
|
3673
3675
|
process.exit(1);
|
|
3674
3676
|
}
|
|
3675
3677
|
saveApiKey(apiKey);
|
|
@@ -3786,7 +3788,7 @@ async function main() {
|
|
|
3786
3788
|
if (opts.installSync) {
|
|
3787
3789
|
const auth2 = await validateKey(apiKey);
|
|
3788
3790
|
if (!auth2.valid) {
|
|
3789
|
-
console.error("Invalid API key. Check your key at https://
|
|
3791
|
+
console.error("Invalid API key. Check your key at https://conare.ai");
|
|
3790
3792
|
process.exit(1);
|
|
3791
3793
|
}
|
|
3792
3794
|
const syncSpinner = Y2();
|
|
@@ -3799,7 +3801,7 @@ async function main() {
|
|
|
3799
3801
|
log("");
|
|
3800
3802
|
const auth = await validateKey(apiKey);
|
|
3801
3803
|
if (!auth.valid) {
|
|
3802
|
-
console.error("Invalid API key. Check your key at https://
|
|
3804
|
+
console.error("Invalid API key. Check your key at https://conare.ai");
|
|
3803
3805
|
process.exit(1);
|
|
3804
3806
|
}
|
|
3805
3807
|
saveApiKey(apiKey);
|
|
@@ -3836,7 +3838,7 @@ async function main() {
|
|
|
3836
3838
|
if (opts.force) {
|
|
3837
3839
|
clearIngested("codebase");
|
|
3838
3840
|
try {
|
|
3839
|
-
await fetch("https://
|
|
3841
|
+
await fetch("https://conare.ai/api/containers/codebase", {
|
|
3840
3842
|
method: "DELETE",
|
|
3841
3843
|
headers: { Authorization: `Bearer ${apiKey}` }
|
|
3842
3844
|
});
|