@agentplugged/claw 0.1.0
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/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +111 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +29 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +94 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +54 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/capture.d.ts +13 -0
- package/dist/memory/capture.d.ts.map +1 -0
- package/dist/memory/capture.js +102 -0
- package/dist/memory/capture.js.map +1 -0
- package/dist/memory/db.d.ts +56 -0
- package/dist/memory/db.d.ts.map +1 -0
- package/dist/memory/db.js +206 -0
- package/dist/memory/db.js.map +1 -0
- package/dist/memory/index.d.ts +8 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +42 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/llm-extract.d.ts +13 -0
- package/dist/memory/llm-extract.d.ts.map +1 -0
- package/dist/memory/llm-extract.js +135 -0
- package/dist/memory/llm-extract.js.map +1 -0
- package/dist/memory/recall.d.ts +16 -0
- package/dist/memory/recall.d.ts.map +1 -0
- package/dist/memory/recall.js +131 -0
- package/dist/memory/recall.js.map +1 -0
- package/dist/observability/collector.d.ts +40 -0
- package/dist/observability/collector.d.ts.map +1 -0
- package/dist/observability/collector.js +119 -0
- package/dist/observability/collector.js.map +1 -0
- package/dist/observability/db.d.ts +60 -0
- package/dist/observability/db.d.ts.map +1 -0
- package/dist/observability/db.js +189 -0
- package/dist/observability/db.js.map +1 -0
- package/dist/observability/index.d.ts +7 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +35 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/queries.d.ts +54 -0
- package/dist/observability/queries.d.ts.map +1 -0
- package/dist/observability/queries.js +181 -0
- package/dist/observability/queries.js.map +1 -0
- package/dist/router/classifier.d.ts +8 -0
- package/dist/router/classifier.d.ts.map +1 -0
- package/dist/router/classifier.js +90 -0
- package/dist/router/classifier.js.map +1 -0
- package/dist/router/fallback.d.ts +18 -0
- package/dist/router/fallback.d.ts.map +1 -0
- package/dist/router/fallback.js +102 -0
- package/dist/router/fallback.js.map +1 -0
- package/dist/router/index.d.ts +5 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +214 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/leak-detector.d.ts +33 -0
- package/dist/router/leak-detector.d.ts.map +1 -0
- package/dist/router/leak-detector.js +320 -0
- package/dist/router/leak-detector.js.map +1 -0
- package/dist/router/logger.d.ts +18 -0
- package/dist/router/logger.d.ts.map +1 -0
- package/dist/router/logger.js +130 -0
- package/dist/router/logger.js.map +1 -0
- package/dist/router/models.d.ts +5 -0
- package/dist/router/models.d.ts.map +1 -0
- package/dist/router/models.js +96 -0
- package/dist/router/models.js.map +1 -0
- package/dist/router/providers.d.ts +4 -0
- package/dist/router/providers.d.ts.map +1 -0
- package/dist/router/providers.js +323 -0
- package/dist/router/providers.js.map +1 -0
- package/dist/router/strategy.d.ts +29 -0
- package/dist/router/strategy.d.ts.map +1 -0
- package/dist/router/strategy.js +169 -0
- package/dist/router/strategy.js.map +1 -0
- package/dist/router/types.d.ts +63 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +3 -0
- package/dist/router/types.js.map +1 -0
- package/dist/sidecar/auth.d.ts +7 -0
- package/dist/sidecar/auth.d.ts.map +1 -0
- package/dist/sidecar/auth.js +36 -0
- package/dist/sidecar/auth.js.map +1 -0
- package/dist/sidecar/index.d.ts +2 -0
- package/dist/sidecar/index.d.ts.map +1 -0
- package/dist/sidecar/index.js +336 -0
- package/dist/sidecar/index.js.map +1 -0
- package/dist/sidecar/routes/addons.d.ts +6 -0
- package/dist/sidecar/routes/addons.d.ts.map +1 -0
- package/dist/sidecar/routes/addons.js +332 -0
- package/dist/sidecar/routes/addons.js.map +1 -0
- package/dist/sidecar/routes/backup.d.ts +7 -0
- package/dist/sidecar/routes/backup.d.ts.map +1 -0
- package/dist/sidecar/routes/backup.js +204 -0
- package/dist/sidecar/routes/backup.js.map +1 -0
- package/dist/sidecar/routes/channels.d.ts +4 -0
- package/dist/sidecar/routes/channels.d.ts.map +1 -0
- package/dist/sidecar/routes/channels.js +120 -0
- package/dist/sidecar/routes/channels.js.map +1 -0
- package/dist/sidecar/routes/health.d.ts +5 -0
- package/dist/sidecar/routes/health.d.ts.map +1 -0
- package/dist/sidecar/routes/health.js +28 -0
- package/dist/sidecar/routes/health.js.map +1 -0
- package/dist/sidecar/routes/memory.d.ts +7 -0
- package/dist/sidecar/routes/memory.d.ts.map +1 -0
- package/dist/sidecar/routes/memory.js +234 -0
- package/dist/sidecar/routes/memory.js.map +1 -0
- package/dist/sidecar/routes/metrics.d.ts +5 -0
- package/dist/sidecar/routes/metrics.d.ts.map +1 -0
- package/dist/sidecar/routes/metrics.js +273 -0
- package/dist/sidecar/routes/metrics.js.map +1 -0
- package/dist/sidecar/routes/restart.d.ts +4 -0
- package/dist/sidecar/routes/restart.d.ts.map +1 -0
- package/dist/sidecar/routes/restart.js +81 -0
- package/dist/sidecar/routes/restart.js.map +1 -0
- package/dist/sidecar/routes/router-config.d.ts +5 -0
- package/dist/sidecar/routes/router-config.d.ts.map +1 -0
- package/dist/sidecar/routes/router-config.js +150 -0
- package/dist/sidecar/routes/router-config.js.map +1 -0
- package/dist/sidecar/routes/security.d.ts +8 -0
- package/dist/sidecar/routes/security.d.ts.map +1 -0
- package/dist/sidecar/routes/security.js +308 -0
- package/dist/sidecar/routes/security.js.map +1 -0
- package/dist/sidecar/routes/skills.d.ts +5 -0
- package/dist/sidecar/routes/skills.d.ts.map +1 -0
- package/dist/sidecar/routes/skills.js +146 -0
- package/dist/sidecar/routes/skills.js.map +1 -0
- package/dist/sidecar/routes/soul.d.ts +4 -0
- package/dist/sidecar/routes/soul.d.ts.map +1 -0
- package/dist/sidecar/routes/soul.js +115 -0
- package/dist/sidecar/routes/soul.js.map +1 -0
- package/dist/sidecar/routes/team.d.ts +4 -0
- package/dist/sidecar/routes/team.d.ts.map +1 -0
- package/dist/sidecar/routes/team.js +139 -0
- package/dist/sidecar/routes/team.js.map +1 -0
- package/dist/sidecar/routes/update.d.ts +4 -0
- package/dist/sidecar/routes/update.d.ts.map +1 -0
- package/dist/sidecar/routes/update.js +96 -0
- package/dist/sidecar/routes/update.js.map +1 -0
- package/dist/sidecar/utils.d.ts +9 -0
- package/dist/sidecar/utils.d.ts.map +1 -0
- package/dist/sidecar/utils.js +57 -0
- package/dist/sidecar/utils.js.map +1 -0
- package/package.json +45 -0
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Claw CLI — `agentplugged-claw <command>`
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* start Start both the router and sidecar
|
|
7
|
+
* start:router Start only the router proxy
|
|
8
|
+
* health Check health of the running router
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Claw CLI — `agentplugged-claw <command>`
|
|
5
|
+
*
|
|
6
|
+
* Commands:
|
|
7
|
+
* start Start both the router and sidecar
|
|
8
|
+
* start:router Start only the router proxy
|
|
9
|
+
* health Check health of the running router
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const config_1 = require("./config");
|
|
13
|
+
const logger_1 = require("./router/logger");
|
|
14
|
+
const index_1 = require("./router/index");
|
|
15
|
+
const [, , command = "help", ...args] = process.argv;
|
|
16
|
+
function printUsage() {
|
|
17
|
+
console.log(`
|
|
18
|
+
agentplugged-claw <command>
|
|
19
|
+
|
|
20
|
+
Commands:
|
|
21
|
+
start Start the Claw Router Proxy
|
|
22
|
+
health Check health of the running router
|
|
23
|
+
help Show this help message
|
|
24
|
+
|
|
25
|
+
Options:
|
|
26
|
+
--config <path> Path to config.json (default: /opt/agentplugged/config.json)
|
|
27
|
+
--port <number> Override router port
|
|
28
|
+
`);
|
|
29
|
+
}
|
|
30
|
+
function parseFlags(argv) {
|
|
31
|
+
const flags = {};
|
|
32
|
+
for (let i = 0; i < argv.length; i++) {
|
|
33
|
+
const arg = argv[i];
|
|
34
|
+
if (arg.startsWith("--") && i + 1 < argv.length) {
|
|
35
|
+
const key = arg.slice(2);
|
|
36
|
+
flags[key] = argv[i + 1];
|
|
37
|
+
i++;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return flags;
|
|
41
|
+
}
|
|
42
|
+
async function cmdStart(argv) {
|
|
43
|
+
const flags = parseFlags(argv);
|
|
44
|
+
const config = (0, config_1.loadConfig)(flags["config"]);
|
|
45
|
+
if (flags["port"]) {
|
|
46
|
+
config.routerPort = parseInt(flags["port"], 10);
|
|
47
|
+
}
|
|
48
|
+
const db = (0, logger_1.openDatabase)(config.dataDir);
|
|
49
|
+
const server = (0, index_1.createRouterServer)(config, db);
|
|
50
|
+
server.listen(config.routerPort, () => {
|
|
51
|
+
console.log(`[claw] Router listening on http://0.0.0.0:${config.routerPort}`);
|
|
52
|
+
console.log(`[claw] Strategy: ${config.strategy}`);
|
|
53
|
+
console.log(`[claw] Active providers: ${config.providers
|
|
54
|
+
.filter((p) => p.enabled)
|
|
55
|
+
.map((p) => p.name)
|
|
56
|
+
.join(", ") || "none — check your config!"}`);
|
|
57
|
+
});
|
|
58
|
+
for (const signal of ["SIGTERM", "SIGINT"]) {
|
|
59
|
+
process.on(signal, () => {
|
|
60
|
+
console.log(`\n[claw] Received ${signal}, shutting down gracefully...`);
|
|
61
|
+
db.close();
|
|
62
|
+
server.close(() => {
|
|
63
|
+
console.log("[claw] Server closed.");
|
|
64
|
+
process.exit(0);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function cmdHealth(argv) {
|
|
70
|
+
const flags = parseFlags(argv);
|
|
71
|
+
const config = (0, config_1.loadConfig)(flags["config"]);
|
|
72
|
+
const port = flags["port"]
|
|
73
|
+
? parseInt(flags["port"], 10)
|
|
74
|
+
: config.routerPort;
|
|
75
|
+
try {
|
|
76
|
+
const response = await fetch(`http://127.0.0.1:${port}/health`);
|
|
77
|
+
const data = await response.json();
|
|
78
|
+
console.log(`[claw] Router health (port ${port}):`);
|
|
79
|
+
console.log(JSON.stringify(data, null, 2));
|
|
80
|
+
process.exit(0);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
console.error(`[claw] Could not reach router on port ${port}: ${err.message}`);
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async function main() {
|
|
88
|
+
switch (command) {
|
|
89
|
+
case "start":
|
|
90
|
+
await cmdStart(args);
|
|
91
|
+
break;
|
|
92
|
+
case "health":
|
|
93
|
+
await cmdHealth(args);
|
|
94
|
+
break;
|
|
95
|
+
case "help":
|
|
96
|
+
case "--help":
|
|
97
|
+
case "-h":
|
|
98
|
+
printUsage();
|
|
99
|
+
process.exit(0);
|
|
100
|
+
break;
|
|
101
|
+
default:
|
|
102
|
+
console.error(`[claw] Unknown command: "${command}"`);
|
|
103
|
+
printUsage();
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
main().catch((err) => {
|
|
108
|
+
console.error("[claw] Fatal error:", err);
|
|
109
|
+
process.exit(1);
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface ModelConfig {
|
|
2
|
+
id: string;
|
|
3
|
+
displayName: string;
|
|
4
|
+
inputPrice: number;
|
|
5
|
+
outputPrice: number;
|
|
6
|
+
maxTokens: number;
|
|
7
|
+
tier: "economy" | "standard" | "premium";
|
|
8
|
+
}
|
|
9
|
+
export interface ProviderConfig {
|
|
10
|
+
name: string;
|
|
11
|
+
apiKey: string;
|
|
12
|
+
models: ModelConfig[];
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface ClawConfig {
|
|
16
|
+
mode: "standard" | "secure";
|
|
17
|
+
routerPort: number;
|
|
18
|
+
sidecarPort: number;
|
|
19
|
+
openclawPort: number;
|
|
20
|
+
runtimeDir: string;
|
|
21
|
+
dataDir: string;
|
|
22
|
+
/** Absolute path to the openclaw config file (e.g. /opt/openclaw/config.json5) */
|
|
23
|
+
configFile: string;
|
|
24
|
+
strategy: "economy" | "balanced" | "quality" | "custom";
|
|
25
|
+
providers: ProviderConfig[];
|
|
26
|
+
managementSecret: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function loadConfig(configPath?: string): ClawConfig;
|
|
29
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IACxD,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAsCD,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CAiC1D"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.loadConfig = loadConfig;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const DEFAULT_CONFIG = {
|
|
40
|
+
mode: "standard",
|
|
41
|
+
routerPort: 4000,
|
|
42
|
+
sidecarPort: 4100,
|
|
43
|
+
openclawPort: 3000,
|
|
44
|
+
runtimeDir: "/opt/openclaw",
|
|
45
|
+
dataDir: "/opt/agentplugged",
|
|
46
|
+
configFile: "/opt/openclaw/config.json5",
|
|
47
|
+
strategy: "balanced",
|
|
48
|
+
providers: [],
|
|
49
|
+
managementSecret: "changeme",
|
|
50
|
+
};
|
|
51
|
+
function applyEnvOverrides(config) {
|
|
52
|
+
return {
|
|
53
|
+
...config,
|
|
54
|
+
mode: process.env.CLAW_MODE ?? config.mode,
|
|
55
|
+
routerPort: process.env.CLAW_ROUTER_PORT
|
|
56
|
+
? parseInt(process.env.CLAW_ROUTER_PORT, 10)
|
|
57
|
+
: config.routerPort,
|
|
58
|
+
sidecarPort: process.env.CLAW_SIDECAR_PORT
|
|
59
|
+
? parseInt(process.env.CLAW_SIDECAR_PORT, 10)
|
|
60
|
+
: config.sidecarPort,
|
|
61
|
+
openclawPort: process.env.CLAW_OPENCLAW_PORT
|
|
62
|
+
? parseInt(process.env.CLAW_OPENCLAW_PORT, 10)
|
|
63
|
+
: config.openclawPort,
|
|
64
|
+
runtimeDir: process.env.CLAW_RUNTIME_DIR ?? config.runtimeDir,
|
|
65
|
+
dataDir: process.env.CLAW_DATA_DIR ?? config.dataDir,
|
|
66
|
+
strategy: process.env.CLAW_STRATEGY ?? config.strategy,
|
|
67
|
+
managementSecret: process.env.CLAW_MANAGEMENT_SECRET ?? config.managementSecret,
|
|
68
|
+
configFile: process.env.CLAW_CONFIG_FILE ?? config.configFile,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function loadConfig(configPath) {
|
|
72
|
+
const resolvedPath = configPath ??
|
|
73
|
+
path.join(process.env.CLAW_DATA_DIR ?? "/opt/agentplugged", "config.json");
|
|
74
|
+
let fileConfig = {};
|
|
75
|
+
if (fs.existsSync(resolvedPath)) {
|
|
76
|
+
try {
|
|
77
|
+
const raw = fs.readFileSync(resolvedPath, "utf-8");
|
|
78
|
+
fileConfig = JSON.parse(raw);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
console.warn(`[claw] Warning: could not parse config at ${resolvedPath}:`, err.message);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.warn(`[claw] No config file found at ${resolvedPath}, using defaults.`);
|
|
86
|
+
}
|
|
87
|
+
const merged = {
|
|
88
|
+
...DEFAULT_CONFIG,
|
|
89
|
+
...fileConfig,
|
|
90
|
+
providers: fileConfig.providers ?? DEFAULT_CONFIG.providers,
|
|
91
|
+
};
|
|
92
|
+
return applyEnvOverrides(merged);
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqEA,gCAiCC;AAtGD,uCAAyB;AACzB,2CAA6B;AAgC7B,MAAM,cAAc,GAAe;IACjC,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,mBAAmB;IAC5B,UAAU,EAAE,4BAA4B;IACxC,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,EAAE;IACb,gBAAgB,EAAE,UAAU;CAC7B,CAAC;AAEF,SAAS,iBAAiB,CAAC,MAAkB;IAC3C,OAAO;QACL,GAAG,MAAM;QACT,IAAI,EAAG,OAAO,CAAC,GAAG,CAAC,SAAgC,IAAI,MAAM,CAAC,IAAI;QAClE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;YACtC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC5C,CAAC,CAAC,MAAM,CAAC,UAAU;QACrB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;YACxC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC7C,CAAC,CAAC,MAAM,CAAC,WAAW;QACtB,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;YAC1C,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC9C,CAAC,CAAC,MAAM,CAAC,YAAY;QACvB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,MAAM,CAAC,UAAU;QAC7D,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM,CAAC,OAAO;QACpD,QAAQ,EACL,OAAO,CAAC,GAAG,CAAC,aAAwC,IAAI,MAAM,CAAC,QAAQ;QAC1E,gBAAgB,EACd,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC,gBAAgB;QAC/D,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,MAAM,CAAC,UAAU;KAC9D,CAAC;AACJ,CAAC;AAED,SAAgB,UAAU,CAAC,UAAmB;IAC5C,MAAM,YAAY,GAChB,UAAU;QACV,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,mBAAmB,EAChD,aAAa,CACd,CAAC;IAEJ,IAAI,UAAU,GAAwB,EAAE,CAAC;IAEzC,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACnD,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CACV,6CAA6C,YAAY,GAAG,EAC3D,GAAa,CAAC,OAAO,CACvB,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CACV,kCAAkC,YAAY,mBAAmB,CAClE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAe;QACzB,GAAG,cAAc;QACjB,GAAG,UAAU;QACb,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS;KAC5D,CAAC;IAEF,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { loadConfig } from "./config";
|
|
2
|
+
export type { ClawConfig, ProviderConfig, ModelConfig } from "./config";
|
|
3
|
+
export { classifyComplexity } from "./router/classifier";
|
|
4
|
+
export type { Complexity } from "./router/classifier";
|
|
5
|
+
export { selectModel } from "./router/strategy";
|
|
6
|
+
export type { Strategy, SelectedModel } from "./router/strategy";
|
|
7
|
+
export { forwardToProvider } from "./router/providers";
|
|
8
|
+
export { forwardWithFallback } from "./router/fallback";
|
|
9
|
+
export { openDatabase, logRouterRequest, calculateCost } from "./router/logger";
|
|
10
|
+
export { createRouterServer } from "./router/index";
|
|
11
|
+
export { MODELS, MODELS_BY_ID, MODELS_BY_PROVIDER } from "./router/models";
|
|
12
|
+
export type { ChatMessage, ChatCompletionRequest, ChatCompletionResponse, Tool, ToolCall, RouterLogEntry, } from "./router/types";
|
|
13
|
+
export { openMemoryDatabase, insertMemory, searchMemories, getAllMemories, deleteMemory, logMemoryAction, extractMemories, buildMemoryContext, MEMORY_SKILL_MD, } from "./memory/index";
|
|
14
|
+
export type { Memory, CapturedMemory } from "./memory/index";
|
|
15
|
+
export { openMetricsDatabase, createSession, endSession, logEvent, updateSessionStats, updateDailyStat, ObservabilityCollector, getTodayStats, getWeeklyStats, getMonthlyStats, getActiveSessions, getRecentSessions, getSessionEvents, getTopSkillsByCost, getModelDistribution, OBSERVABILITY_SKILL_MD, } from "./observability/index";
|
|
16
|
+
export type { Session, Event, DayStats } from "./observability/index";
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,YAAY,EACV,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,IAAI,EACJ,QAAQ,EACR,cAAc,GACf,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAI7D,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Public API — re-export everything consumers need
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.OBSERVABILITY_SKILL_MD = exports.getModelDistribution = exports.getTopSkillsByCost = exports.getSessionEvents = exports.getRecentSessions = exports.getActiveSessions = exports.getMonthlyStats = exports.getWeeklyStats = exports.getTodayStats = exports.ObservabilityCollector = exports.updateDailyStat = exports.updateSessionStats = exports.logEvent = exports.endSession = exports.createSession = exports.openMetricsDatabase = exports.MEMORY_SKILL_MD = exports.buildMemoryContext = exports.extractMemories = exports.logMemoryAction = exports.deleteMemory = exports.getAllMemories = exports.searchMemories = exports.insertMemory = exports.openMemoryDatabase = exports.MODELS_BY_PROVIDER = exports.MODELS_BY_ID = exports.MODELS = exports.createRouterServer = exports.calculateCost = exports.logRouterRequest = exports.openDatabase = exports.forwardWithFallback = exports.forwardToProvider = exports.selectModel = exports.classifyComplexity = exports.loadConfig = void 0;
|
|
5
|
+
var config_1 = require("./config");
|
|
6
|
+
Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return config_1.loadConfig; } });
|
|
7
|
+
var classifier_1 = require("./router/classifier");
|
|
8
|
+
Object.defineProperty(exports, "classifyComplexity", { enumerable: true, get: function () { return classifier_1.classifyComplexity; } });
|
|
9
|
+
var strategy_1 = require("./router/strategy");
|
|
10
|
+
Object.defineProperty(exports, "selectModel", { enumerable: true, get: function () { return strategy_1.selectModel; } });
|
|
11
|
+
var providers_1 = require("./router/providers");
|
|
12
|
+
Object.defineProperty(exports, "forwardToProvider", { enumerable: true, get: function () { return providers_1.forwardToProvider; } });
|
|
13
|
+
var fallback_1 = require("./router/fallback");
|
|
14
|
+
Object.defineProperty(exports, "forwardWithFallback", { enumerable: true, get: function () { return fallback_1.forwardWithFallback; } });
|
|
15
|
+
var logger_1 = require("./router/logger");
|
|
16
|
+
Object.defineProperty(exports, "openDatabase", { enumerable: true, get: function () { return logger_1.openDatabase; } });
|
|
17
|
+
Object.defineProperty(exports, "logRouterRequest", { enumerable: true, get: function () { return logger_1.logRouterRequest; } });
|
|
18
|
+
Object.defineProperty(exports, "calculateCost", { enumerable: true, get: function () { return logger_1.calculateCost; } });
|
|
19
|
+
var index_1 = require("./router/index");
|
|
20
|
+
Object.defineProperty(exports, "createRouterServer", { enumerable: true, get: function () { return index_1.createRouterServer; } });
|
|
21
|
+
var models_1 = require("./router/models");
|
|
22
|
+
Object.defineProperty(exports, "MODELS", { enumerable: true, get: function () { return models_1.MODELS; } });
|
|
23
|
+
Object.defineProperty(exports, "MODELS_BY_ID", { enumerable: true, get: function () { return models_1.MODELS_BY_ID; } });
|
|
24
|
+
Object.defineProperty(exports, "MODELS_BY_PROVIDER", { enumerable: true, get: function () { return models_1.MODELS_BY_PROVIDER; } });
|
|
25
|
+
// ─── Memory Engine ────────────────────────────────────────────────────────────
|
|
26
|
+
var index_2 = require("./memory/index");
|
|
27
|
+
Object.defineProperty(exports, "openMemoryDatabase", { enumerable: true, get: function () { return index_2.openMemoryDatabase; } });
|
|
28
|
+
Object.defineProperty(exports, "insertMemory", { enumerable: true, get: function () { return index_2.insertMemory; } });
|
|
29
|
+
Object.defineProperty(exports, "searchMemories", { enumerable: true, get: function () { return index_2.searchMemories; } });
|
|
30
|
+
Object.defineProperty(exports, "getAllMemories", { enumerable: true, get: function () { return index_2.getAllMemories; } });
|
|
31
|
+
Object.defineProperty(exports, "deleteMemory", { enumerable: true, get: function () { return index_2.deleteMemory; } });
|
|
32
|
+
Object.defineProperty(exports, "logMemoryAction", { enumerable: true, get: function () { return index_2.logMemoryAction; } });
|
|
33
|
+
Object.defineProperty(exports, "extractMemories", { enumerable: true, get: function () { return index_2.extractMemories; } });
|
|
34
|
+
Object.defineProperty(exports, "buildMemoryContext", { enumerable: true, get: function () { return index_2.buildMemoryContext; } });
|
|
35
|
+
Object.defineProperty(exports, "MEMORY_SKILL_MD", { enumerable: true, get: function () { return index_2.MEMORY_SKILL_MD; } });
|
|
36
|
+
// ─── Observability Collector ──────────────────────────────────────────────────
|
|
37
|
+
var index_3 = require("./observability/index");
|
|
38
|
+
Object.defineProperty(exports, "openMetricsDatabase", { enumerable: true, get: function () { return index_3.openMetricsDatabase; } });
|
|
39
|
+
Object.defineProperty(exports, "createSession", { enumerable: true, get: function () { return index_3.createSession; } });
|
|
40
|
+
Object.defineProperty(exports, "endSession", { enumerable: true, get: function () { return index_3.endSession; } });
|
|
41
|
+
Object.defineProperty(exports, "logEvent", { enumerable: true, get: function () { return index_3.logEvent; } });
|
|
42
|
+
Object.defineProperty(exports, "updateSessionStats", { enumerable: true, get: function () { return index_3.updateSessionStats; } });
|
|
43
|
+
Object.defineProperty(exports, "updateDailyStat", { enumerable: true, get: function () { return index_3.updateDailyStat; } });
|
|
44
|
+
Object.defineProperty(exports, "ObservabilityCollector", { enumerable: true, get: function () { return index_3.ObservabilityCollector; } });
|
|
45
|
+
Object.defineProperty(exports, "getTodayStats", { enumerable: true, get: function () { return index_3.getTodayStats; } });
|
|
46
|
+
Object.defineProperty(exports, "getWeeklyStats", { enumerable: true, get: function () { return index_3.getWeeklyStats; } });
|
|
47
|
+
Object.defineProperty(exports, "getMonthlyStats", { enumerable: true, get: function () { return index_3.getMonthlyStats; } });
|
|
48
|
+
Object.defineProperty(exports, "getActiveSessions", { enumerable: true, get: function () { return index_3.getActiveSessions; } });
|
|
49
|
+
Object.defineProperty(exports, "getRecentSessions", { enumerable: true, get: function () { return index_3.getRecentSessions; } });
|
|
50
|
+
Object.defineProperty(exports, "getSessionEvents", { enumerable: true, get: function () { return index_3.getSessionEvents; } });
|
|
51
|
+
Object.defineProperty(exports, "getTopSkillsByCost", { enumerable: true, get: function () { return index_3.getTopSkillsByCost; } });
|
|
52
|
+
Object.defineProperty(exports, "getModelDistribution", { enumerable: true, get: function () { return index_3.getModelDistribution; } });
|
|
53
|
+
Object.defineProperty(exports, "OBSERVABILITY_SKILL_MD", { enumerable: true, get: function () { return index_3.OBSERVABILITY_SKILL_MD; } });
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,mDAAmD;;;AAEnD,mCAAsC;AAA7B,oGAAA,UAAU,OAAA;AAGnB,kDAAyD;AAAhD,gHAAA,kBAAkB,OAAA;AAG3B,8CAAgD;AAAvC,uGAAA,WAAW,OAAA;AAGpB,gDAAuD;AAA9C,8GAAA,iBAAiB,OAAA;AAE1B,8CAAwD;AAA/C,+GAAA,mBAAmB,OAAA;AAE5B,0CAAgF;AAAvE,sGAAA,YAAY,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAAE,uGAAA,aAAa,OAAA;AAEtD,wCAAoD;AAA3C,2GAAA,kBAAkB,OAAA;AAE3B,0CAA2E;AAAlE,gGAAA,MAAM,OAAA;AAAE,sGAAA,YAAY,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AAWjD,iFAAiF;AAEjF,wCAUwB;AATtB,2GAAA,kBAAkB,OAAA;AAClB,qGAAA,YAAY,OAAA;AACZ,uGAAA,cAAc,OAAA;AACd,uGAAA,cAAc,OAAA;AACd,qGAAA,YAAY,OAAA;AACZ,wGAAA,eAAe,OAAA;AACf,wGAAA,eAAe,OAAA;AACf,2GAAA,kBAAkB,OAAA;AAClB,wGAAA,eAAe,OAAA;AAIjB,iFAAiF;AAEjF,+CAiB+B;AAhB7B,4GAAA,mBAAmB,OAAA;AACnB,sGAAA,aAAa,OAAA;AACb,mGAAA,UAAU,OAAA;AACV,iGAAA,QAAQ,OAAA;AACR,2GAAA,kBAAkB,OAAA;AAClB,wGAAA,eAAe,OAAA;AACf,+GAAA,sBAAsB,OAAA;AACtB,sGAAA,aAAa,OAAA;AACb,uGAAA,cAAc,OAAA;AACd,wGAAA,eAAe,OAAA;AACf,0GAAA,iBAAiB,OAAA;AACjB,0GAAA,iBAAiB,OAAA;AACjB,yGAAA,gBAAgB,OAAA;AAChB,2GAAA,kBAAkB,OAAA;AAClB,6GAAA,oBAAoB,OAAA;AACpB,+GAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface CapturedMemory {
|
|
2
|
+
type: "preference" | "decision" | "fact" | "context";
|
|
3
|
+
content: string;
|
|
4
|
+
confidence: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Extracts memorable facts, preferences, decisions, and context items
|
|
8
|
+
* from a conversation response string using regex heuristics.
|
|
9
|
+
*
|
|
10
|
+
* Designed for V1 — semantic extraction comes in V3.
|
|
11
|
+
*/
|
|
12
|
+
export declare function extractMemories(response: string): CapturedMemory[];
|
|
13
|
+
//# sourceMappingURL=capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/memory/capture.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AA2ED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAoClE"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ─── Types ────────────────────────────────────────────────────────────────────
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.extractMemories = extractMemories;
|
|
5
|
+
const RULES = [
|
|
6
|
+
{
|
|
7
|
+
type: "preference",
|
|
8
|
+
confidence: 0.85,
|
|
9
|
+
patterns: [
|
|
10
|
+
/\bI (?:prefer|like|love|enjoy|always use|always prefer|always want)\b[^.!?]{3,120}[.!?]/gi,
|
|
11
|
+
/\bI (?:never|hate|dislike|avoid)\b[^.!?]{3,120}[.!?]/gi,
|
|
12
|
+
/\bI (?:always|usually|typically)\b[^.!?]{3,120}[.!?]/gi,
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
type: "decision",
|
|
17
|
+
confidence: 0.9,
|
|
18
|
+
patterns: [
|
|
19
|
+
/\bLet'?s go with\b[^.!?]{3,120}[.!?]/gi,
|
|
20
|
+
/\bI(?:'ve| have) decided\b[^.!?]{3,120}[.!?]/gi,
|
|
21
|
+
/\bWe(?:'ll| will) use\b[^.!?]{3,120}[.!?]/gi,
|
|
22
|
+
/\bI(?:'ve| have) chosen\b[^.!?]{3,120}[.!?]/gi,
|
|
23
|
+
/\bWe(?:'ve| have) decided\b[^.!?]{3,120}[.!?]/gi,
|
|
24
|
+
/\bI(?:'m| am) going to use\b[^.!?]{3,120}[.!?]/gi,
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
type: "fact",
|
|
29
|
+
confidence: 0.95,
|
|
30
|
+
patterns: [
|
|
31
|
+
/\bMy name is\b[^.!?]{2,80}[.!?]/gi,
|
|
32
|
+
/\bI(?:'m| am) [A-Z][a-zA-Z]+\b[^.!?]{0,60}[.!?]/gi,
|
|
33
|
+
/\bI work (?:at|for|in)\b[^.!?]{3,80}[.!?]/gi,
|
|
34
|
+
/\bOur company(?: is| name is)?\b[^.!?]{3,100}[.!?]/gi,
|
|
35
|
+
/\bI(?:'m| am) (?:a|an|the)\b[^.!?]{3,80}[.!?]/gi,
|
|
36
|
+
/\bMy (?:email|phone|address|role|job|title) (?:is|:)\b[^.!?]{2,100}[.!?]/gi,
|
|
37
|
+
],
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: "context",
|
|
41
|
+
confidence: 0.8,
|
|
42
|
+
patterns: [
|
|
43
|
+
/\bWe(?:'re| are) working on\b[^.!?]{3,120}[.!?]/gi,
|
|
44
|
+
/\bThe project (?:is|involves|requires|uses)\b[^.!?]{3,120}[.!?]/gi,
|
|
45
|
+
/\bOur (?:goal|objective|aim) (?:is|are)\b[^.!?]{3,120}[.!?]/gi,
|
|
46
|
+
/\bThe (?:system|app|application|service|platform) (?:is|uses|runs)\b[^.!?]{3,120}[.!?]/gi,
|
|
47
|
+
/\bWe(?:'re| are) building\b[^.!?]{3,120}[.!?]/gi,
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
52
|
+
function deduplicate(memories) {
|
|
53
|
+
const seen = new Set();
|
|
54
|
+
return memories.filter((m) => {
|
|
55
|
+
const key = m.content.trim().toLowerCase();
|
|
56
|
+
if (seen.has(key))
|
|
57
|
+
return false;
|
|
58
|
+
seen.add(key);
|
|
59
|
+
return true;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function trimMatch(raw) {
|
|
63
|
+
return raw.trim().replace(/\s+/g, " ");
|
|
64
|
+
}
|
|
65
|
+
// ─── Main export ──────────────────────────────────────────────────────────────
|
|
66
|
+
/**
|
|
67
|
+
* Extracts memorable facts, preferences, decisions, and context items
|
|
68
|
+
* from a conversation response string using regex heuristics.
|
|
69
|
+
*
|
|
70
|
+
* Designed for V1 — semantic extraction comes in V3.
|
|
71
|
+
*/
|
|
72
|
+
function extractMemories(response) {
|
|
73
|
+
if (!response || response.trim().length === 0) {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
const captured = [];
|
|
77
|
+
for (const rule of RULES) {
|
|
78
|
+
for (const pattern of rule.patterns) {
|
|
79
|
+
// Reset lastIndex so repeated calls work correctly
|
|
80
|
+
pattern.lastIndex = 0;
|
|
81
|
+
let match;
|
|
82
|
+
while ((match = pattern.exec(response)) !== null) {
|
|
83
|
+
const content = trimMatch(match[0]);
|
|
84
|
+
// Skip very short or very long matches (noise)
|
|
85
|
+
if (content.length < 10 || content.length > 200) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
captured.push({
|
|
89
|
+
type: rule.type,
|
|
90
|
+
content,
|
|
91
|
+
confidence: rule.confidence,
|
|
92
|
+
});
|
|
93
|
+
// Prevent infinite loops on zero-width matches
|
|
94
|
+
if (match.index === pattern.lastIndex) {
|
|
95
|
+
pattern.lastIndex++;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return deduplicate(captured);
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/memory/capture.ts"],"names":[],"mappings":";AAAA,iFAAiF;;AAuFjF,0CAoCC;AA3GD,MAAM,KAAK,GAAkB;IAC3B;QACE,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE;YACR,2FAA2F;YAC3F,wDAAwD;YACxD,wDAAwD;SACzD;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,GAAG;QACf,QAAQ,EAAE;YACR,wCAAwC;YACxC,gDAAgD;YAChD,6CAA6C;YAC7C,+CAA+C;YAC/C,iDAAiD;YACjD,kDAAkD;SACnD;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE;YACR,mCAAmC;YACnC,mDAAmD;YACnD,6CAA6C;YAC7C,sDAAsD;YACtD,iDAAiD;YACjD,4EAA4E;SAC7E;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,GAAG;QACf,QAAQ,EAAE;YACR,mDAAmD;YACnD,mEAAmE;YACnE,+DAA+D;YAC/D,0FAA0F;YAC1F,iDAAiD;SAClD;KACF;CACF,CAAC;AAEF,iFAAiF;AAEjF,SAAS,WAAW,CAAC,QAA0B;IAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,iFAAiF;AAEjF;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAqB,EAAE,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,mDAAmD;YACnD,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;YAEtB,IAAI,KAA6B,CAAC;YAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACjD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEpC,+CAA+C;gBAC/C,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBAChD,SAAS;gBACX,CAAC;gBAED,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO;oBACP,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAC,CAAC;gBAEH,+CAA+C;gBAC/C,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;oBACtC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import Database from "better-sqlite3";
|
|
2
|
+
export interface Memory {
|
|
3
|
+
id: number;
|
|
4
|
+
type: string;
|
|
5
|
+
content: string;
|
|
6
|
+
source: string | null;
|
|
7
|
+
confidence: number;
|
|
8
|
+
created_at: string;
|
|
9
|
+
updated_at: string;
|
|
10
|
+
accessed_at: string | null;
|
|
11
|
+
access_count: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Opens (or creates) the memory SQLite database.
|
|
15
|
+
* Stored at <dataDir>/memory/memory.db.
|
|
16
|
+
* WAL mode is enabled for concurrent reads.
|
|
17
|
+
*/
|
|
18
|
+
export declare function openMemoryDatabase(dataDir: string): Database.Database;
|
|
19
|
+
/**
|
|
20
|
+
* Inserts a new memory record and returns its auto-incremented id.
|
|
21
|
+
*/
|
|
22
|
+
export declare function insertMemory(db: Database.Database, memory: {
|
|
23
|
+
type: string;
|
|
24
|
+
content: string;
|
|
25
|
+
source?: string;
|
|
26
|
+
confidence?: number;
|
|
27
|
+
}): number;
|
|
28
|
+
/**
|
|
29
|
+
* Searches memories using SQLite LIKE across the content field.
|
|
30
|
+
* Splits the query into keywords and OR-combines them.
|
|
31
|
+
*/
|
|
32
|
+
export declare function searchMemories(db: Database.Database, query: string, limit?: number): Memory[];
|
|
33
|
+
/**
|
|
34
|
+
* Returns all memories with optional type filter and pagination.
|
|
35
|
+
*/
|
|
36
|
+
export declare function getAllMemories(db: Database.Database, opts?: {
|
|
37
|
+
type?: string;
|
|
38
|
+
limit?: number;
|
|
39
|
+
offset?: number;
|
|
40
|
+
}): {
|
|
41
|
+
memories: Memory[];
|
|
42
|
+
total: number;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Deletes a memory by id. Returns true if a row was deleted.
|
|
46
|
+
*/
|
|
47
|
+
export declare function deleteMemory(db: Database.Database, id: number): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Tracks access to a memory: increments access_count and updates accessed_at.
|
|
50
|
+
*/
|
|
51
|
+
export declare function trackAccess(db: Database.Database, memoryId: number): void;
|
|
52
|
+
/**
|
|
53
|
+
* Logs a memory action (capture, recall, forget) to the memory_log table.
|
|
54
|
+
*/
|
|
55
|
+
export declare function logMemoryAction(db: Database.Database, action: string, memoryId?: number): void;
|
|
56
|
+
//# sourceMappingURL=db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/memory/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAgCtC,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;CACtB;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAcrE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE;IACN,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,MAAM,CAmBR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,SAAK,GACT,MAAM,EAAE,CAqCV;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5D;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAgCvC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAGvE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAYzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CASN"}
|