@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.
Files changed (149) hide show
  1. package/dist/cli.d.ts +11 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +111 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/config.d.ts +29 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +94 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/index.d.ts +17 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +54 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/memory/capture.d.ts +13 -0
  14. package/dist/memory/capture.d.ts.map +1 -0
  15. package/dist/memory/capture.js +102 -0
  16. package/dist/memory/capture.js.map +1 -0
  17. package/dist/memory/db.d.ts +56 -0
  18. package/dist/memory/db.d.ts.map +1 -0
  19. package/dist/memory/db.js +206 -0
  20. package/dist/memory/db.js.map +1 -0
  21. package/dist/memory/index.d.ts +8 -0
  22. package/dist/memory/index.d.ts.map +1 -0
  23. package/dist/memory/index.js +42 -0
  24. package/dist/memory/index.js.map +1 -0
  25. package/dist/memory/llm-extract.d.ts +13 -0
  26. package/dist/memory/llm-extract.d.ts.map +1 -0
  27. package/dist/memory/llm-extract.js +135 -0
  28. package/dist/memory/llm-extract.js.map +1 -0
  29. package/dist/memory/recall.d.ts +16 -0
  30. package/dist/memory/recall.d.ts.map +1 -0
  31. package/dist/memory/recall.js +131 -0
  32. package/dist/memory/recall.js.map +1 -0
  33. package/dist/observability/collector.d.ts +40 -0
  34. package/dist/observability/collector.d.ts.map +1 -0
  35. package/dist/observability/collector.js +119 -0
  36. package/dist/observability/collector.js.map +1 -0
  37. package/dist/observability/db.d.ts +60 -0
  38. package/dist/observability/db.d.ts.map +1 -0
  39. package/dist/observability/db.js +189 -0
  40. package/dist/observability/db.js.map +1 -0
  41. package/dist/observability/index.d.ts +7 -0
  42. package/dist/observability/index.d.ts.map +1 -0
  43. package/dist/observability/index.js +35 -0
  44. package/dist/observability/index.js.map +1 -0
  45. package/dist/observability/queries.d.ts +54 -0
  46. package/dist/observability/queries.d.ts.map +1 -0
  47. package/dist/observability/queries.js +181 -0
  48. package/dist/observability/queries.js.map +1 -0
  49. package/dist/router/classifier.d.ts +8 -0
  50. package/dist/router/classifier.d.ts.map +1 -0
  51. package/dist/router/classifier.js +90 -0
  52. package/dist/router/classifier.js.map +1 -0
  53. package/dist/router/fallback.d.ts +18 -0
  54. package/dist/router/fallback.d.ts.map +1 -0
  55. package/dist/router/fallback.js +102 -0
  56. package/dist/router/fallback.js.map +1 -0
  57. package/dist/router/index.d.ts +5 -0
  58. package/dist/router/index.d.ts.map +1 -0
  59. package/dist/router/index.js +214 -0
  60. package/dist/router/index.js.map +1 -0
  61. package/dist/router/leak-detector.d.ts +33 -0
  62. package/dist/router/leak-detector.d.ts.map +1 -0
  63. package/dist/router/leak-detector.js +320 -0
  64. package/dist/router/leak-detector.js.map +1 -0
  65. package/dist/router/logger.d.ts +18 -0
  66. package/dist/router/logger.d.ts.map +1 -0
  67. package/dist/router/logger.js +130 -0
  68. package/dist/router/logger.js.map +1 -0
  69. package/dist/router/models.d.ts +5 -0
  70. package/dist/router/models.d.ts.map +1 -0
  71. package/dist/router/models.js +96 -0
  72. package/dist/router/models.js.map +1 -0
  73. package/dist/router/providers.d.ts +4 -0
  74. package/dist/router/providers.d.ts.map +1 -0
  75. package/dist/router/providers.js +323 -0
  76. package/dist/router/providers.js.map +1 -0
  77. package/dist/router/strategy.d.ts +29 -0
  78. package/dist/router/strategy.d.ts.map +1 -0
  79. package/dist/router/strategy.js +169 -0
  80. package/dist/router/strategy.js.map +1 -0
  81. package/dist/router/types.d.ts +63 -0
  82. package/dist/router/types.d.ts.map +1 -0
  83. package/dist/router/types.js +3 -0
  84. package/dist/router/types.js.map +1 -0
  85. package/dist/sidecar/auth.d.ts +7 -0
  86. package/dist/sidecar/auth.d.ts.map +1 -0
  87. package/dist/sidecar/auth.js +36 -0
  88. package/dist/sidecar/auth.js.map +1 -0
  89. package/dist/sidecar/index.d.ts +2 -0
  90. package/dist/sidecar/index.d.ts.map +1 -0
  91. package/dist/sidecar/index.js +336 -0
  92. package/dist/sidecar/index.js.map +1 -0
  93. package/dist/sidecar/routes/addons.d.ts +6 -0
  94. package/dist/sidecar/routes/addons.d.ts.map +1 -0
  95. package/dist/sidecar/routes/addons.js +332 -0
  96. package/dist/sidecar/routes/addons.js.map +1 -0
  97. package/dist/sidecar/routes/backup.d.ts +7 -0
  98. package/dist/sidecar/routes/backup.d.ts.map +1 -0
  99. package/dist/sidecar/routes/backup.js +204 -0
  100. package/dist/sidecar/routes/backup.js.map +1 -0
  101. package/dist/sidecar/routes/channels.d.ts +4 -0
  102. package/dist/sidecar/routes/channels.d.ts.map +1 -0
  103. package/dist/sidecar/routes/channels.js +120 -0
  104. package/dist/sidecar/routes/channels.js.map +1 -0
  105. package/dist/sidecar/routes/health.d.ts +5 -0
  106. package/dist/sidecar/routes/health.d.ts.map +1 -0
  107. package/dist/sidecar/routes/health.js +28 -0
  108. package/dist/sidecar/routes/health.js.map +1 -0
  109. package/dist/sidecar/routes/memory.d.ts +7 -0
  110. package/dist/sidecar/routes/memory.d.ts.map +1 -0
  111. package/dist/sidecar/routes/memory.js +234 -0
  112. package/dist/sidecar/routes/memory.js.map +1 -0
  113. package/dist/sidecar/routes/metrics.d.ts +5 -0
  114. package/dist/sidecar/routes/metrics.d.ts.map +1 -0
  115. package/dist/sidecar/routes/metrics.js +273 -0
  116. package/dist/sidecar/routes/metrics.js.map +1 -0
  117. package/dist/sidecar/routes/restart.d.ts +4 -0
  118. package/dist/sidecar/routes/restart.d.ts.map +1 -0
  119. package/dist/sidecar/routes/restart.js +81 -0
  120. package/dist/sidecar/routes/restart.js.map +1 -0
  121. package/dist/sidecar/routes/router-config.d.ts +5 -0
  122. package/dist/sidecar/routes/router-config.d.ts.map +1 -0
  123. package/dist/sidecar/routes/router-config.js +150 -0
  124. package/dist/sidecar/routes/router-config.js.map +1 -0
  125. package/dist/sidecar/routes/security.d.ts +8 -0
  126. package/dist/sidecar/routes/security.d.ts.map +1 -0
  127. package/dist/sidecar/routes/security.js +308 -0
  128. package/dist/sidecar/routes/security.js.map +1 -0
  129. package/dist/sidecar/routes/skills.d.ts +5 -0
  130. package/dist/sidecar/routes/skills.d.ts.map +1 -0
  131. package/dist/sidecar/routes/skills.js +146 -0
  132. package/dist/sidecar/routes/skills.js.map +1 -0
  133. package/dist/sidecar/routes/soul.d.ts +4 -0
  134. package/dist/sidecar/routes/soul.d.ts.map +1 -0
  135. package/dist/sidecar/routes/soul.js +115 -0
  136. package/dist/sidecar/routes/soul.js.map +1 -0
  137. package/dist/sidecar/routes/team.d.ts +4 -0
  138. package/dist/sidecar/routes/team.d.ts.map +1 -0
  139. package/dist/sidecar/routes/team.js +139 -0
  140. package/dist/sidecar/routes/team.js.map +1 -0
  141. package/dist/sidecar/routes/update.d.ts +4 -0
  142. package/dist/sidecar/routes/update.d.ts.map +1 -0
  143. package/dist/sidecar/routes/update.js +96 -0
  144. package/dist/sidecar/routes/update.js.map +1 -0
  145. package/dist/sidecar/utils.d.ts +9 -0
  146. package/dist/sidecar/utils.d.ts.map +1 -0
  147. package/dist/sidecar/utils.js +57 -0
  148. package/dist/sidecar/utils.js.map +1 -0
  149. 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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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"}