@lanonasis/recall-forge 1.1.1

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 (68) hide show
  1. package/.claw/skills/SKILL.md +347 -0
  2. package/CHANGELOG.md +162 -0
  3. package/LICENSE +21 -0
  4. package/README.md +302 -0
  5. package/SETUP.md +190 -0
  6. package/dist/cli-common.d.ts +25 -0
  7. package/dist/cli-common.js +338 -0
  8. package/dist/cli-memory.d.ts +6 -0
  9. package/dist/cli-memory.js +146 -0
  10. package/dist/cli.d.ts +7 -0
  11. package/dist/cli.js +135 -0
  12. package/dist/client.d.ts +116 -0
  13. package/dist/client.js +643 -0
  14. package/dist/config.d.ts +41 -0
  15. package/dist/config.js +125 -0
  16. package/dist/enrichment/capture-filter.d.ts +4 -0
  17. package/dist/enrichment/capture-filter.js +44 -0
  18. package/dist/enrichment/prompt-safety.d.ts +13 -0
  19. package/dist/enrichment/prompt-safety.js +83 -0
  20. package/dist/enrichment/tag-extractor.d.ts +1 -0
  21. package/dist/enrichment/tag-extractor.js +47 -0
  22. package/dist/enrichment/type-detector.d.ts +2 -0
  23. package/dist/enrichment/type-detector.js +95 -0
  24. package/dist/extraction/cli-extract.d.ts +8 -0
  25. package/dist/extraction/cli-extract.js +66 -0
  26. package/dist/extraction/format-adapters.d.ts +8 -0
  27. package/dist/extraction/format-adapters.js +268 -0
  28. package/dist/extraction/index.d.ts +7 -0
  29. package/dist/extraction/index.js +7 -0
  30. package/dist/extraction/jsonl-extractor.d.ts +32 -0
  31. package/dist/extraction/jsonl-extractor.js +207 -0
  32. package/dist/extraction/markdown-extractor.d.ts +23 -0
  33. package/dist/extraction/markdown-extractor.js +228 -0
  34. package/dist/extraction/secret-redactor.d.ts +7 -0
  35. package/dist/extraction/secret-redactor.js +112 -0
  36. package/dist/extraction/sqlite-extractor.d.ts +15 -0
  37. package/dist/extraction/sqlite-extractor.js +245 -0
  38. package/dist/extraction/types.d.ts +50 -0
  39. package/dist/extraction/types.js +1 -0
  40. package/dist/hooks/capture.d.ts +23 -0
  41. package/dist/hooks/capture.js +162 -0
  42. package/dist/hooks/context-engine.d.ts +4 -0
  43. package/dist/hooks/context-engine.js +54 -0
  44. package/dist/hooks/local-fallback.d.ts +5 -0
  45. package/dist/hooks/local-fallback.js +31 -0
  46. package/dist/hooks/recall.d.ts +21 -0
  47. package/dist/hooks/recall.js +123 -0
  48. package/dist/index.d.ts +3 -0
  49. package/dist/index.js +103 -0
  50. package/dist/plugin-sdk-stub.d.ts +53 -0
  51. package/dist/plugin-sdk-stub.js +3 -0
  52. package/dist/privacy/privacy-guard.d.ts +33 -0
  53. package/dist/privacy/privacy-guard.js +130 -0
  54. package/dist/privacy/privacy-log.d.ts +6 -0
  55. package/dist/privacy/privacy-log.js +44 -0
  56. package/dist/tools/memory-forget.d.ts +3 -0
  57. package/dist/tools/memory-forget.js +109 -0
  58. package/dist/tools/memory-get.d.ts +3 -0
  59. package/dist/tools/memory-get.js +46 -0
  60. package/dist/tools/memory-search.d.ts +4 -0
  61. package/dist/tools/memory-search.js +95 -0
  62. package/dist/tools/memory-store.d.ts +5 -0
  63. package/dist/tools/memory-store.js +199 -0
  64. package/openclaw.plugin.json +315 -0
  65. package/package.json +90 -0
  66. package/setup/agents-memory.md +63 -0
  67. package/setup/heartbeat-memory.md +53 -0
  68. package/setup/install.sh +179 -0
@@ -0,0 +1,179 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # install.sh — Activate the recall-forge OpenClaw plugin
5
+ # Run from the monorepo root or the plugin directory.
6
+ #
7
+ # Prerequisites:
8
+ # - OpenClaw installed (npm install -g openclaw && openclaw onboard)
9
+ # - ~/.openclaw/ directory exists
10
+ #
11
+ # Usage:
12
+ # bash packages/openclaw-plugin/setup/install.sh
13
+
14
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
15
+ PLUGIN_DIR="$(dirname "$SCRIPT_DIR")"
16
+ OPENCLAW_DIR="$HOME/.openclaw"
17
+ EXTENSIONS_DIR="$OPENCLAW_DIR/extensions"
18
+ LINK_NAME="recall-forge"
19
+ CONFIG_FILE="$OPENCLAW_DIR/openclaw.json"
20
+
21
+ # --- Preflight ---
22
+ echo "=== recall-forge plugin installer ==="
23
+ echo ""
24
+
25
+ if ! command -v openclaw &>/dev/null; then
26
+ echo "ERROR: OpenClaw is not installed."
27
+ echo ""
28
+ echo "Install with:"
29
+ echo " npm install -g openclaw"
30
+ echo " openclaw onboard"
31
+ echo ""
32
+ exit 1
33
+ fi
34
+
35
+ if [ ! -d "$OPENCLAW_DIR" ]; then
36
+ echo "ERROR: ~/.openclaw/ does not exist."
37
+ echo "Run 'openclaw onboard' first to initialize your workspace."
38
+ exit 1
39
+ fi
40
+
41
+ # --- Step 1: Symlink plugin ---
42
+ echo "1. Symlinking plugin..."
43
+ mkdir -p "$EXTENSIONS_DIR"
44
+
45
+ if [ -L "$EXTENSIONS_DIR/$LINK_NAME" ]; then
46
+ echo " Symlink already exists — updating..."
47
+ rm "$EXTENSIONS_DIR/$LINK_NAME"
48
+ elif [ -d "$EXTENSIONS_DIR/$LINK_NAME" ]; then
49
+ echo " Directory exists at target — backing up to ${LINK_NAME}.bak..."
50
+ mv "$EXTENSIONS_DIR/$LINK_NAME" "$EXTENSIONS_DIR/${LINK_NAME}.bak"
51
+ fi
52
+
53
+ ln -s "$PLUGIN_DIR" "$EXTENSIONS_DIR/$LINK_NAME"
54
+ echo " Linked: $EXTENSIONS_DIR/$LINK_NAME -> $PLUGIN_DIR"
55
+
56
+ # --- Step 2: Install dependencies + build ---
57
+ echo "2. Installing dependencies and building dist/..."
58
+ cd "$PLUGIN_DIR"
59
+ if command -v bun &>/dev/null; then
60
+ bun install --no-save 2>/dev/null || npm install --no-save 2>/dev/null
61
+ else
62
+ npm install --no-save 2>/dev/null
63
+ fi
64
+ if ! npm run build >/dev/null 2>&1; then
65
+ echo "ERROR: Build failed. Run 'npm run build' in $PLUGIN_DIR and fix the issue before continuing."
66
+ exit 1
67
+ fi
68
+ echo " Dependencies installed and dist/ built."
69
+
70
+ # --- Step 3: Merge openclaw.json config ---
71
+ echo "3. Configuring openclaw.json..."
72
+
73
+ # Check if jq is available for JSON manipulation
74
+ if ! command -v jq &>/dev/null; then
75
+ echo " WARNING: jq not installed — cannot auto-merge config."
76
+ echo " Please manually add the following to $CONFIG_FILE:"
77
+ echo ""
78
+ cat <<'MANUAL_CONFIG'
79
+ "plugins": {
80
+ "allow": ["recall-forge"],
81
+ "slots": { "memory": "recall-forge" },
82
+ "entries": {
83
+ "recall-forge": {
84
+ "enabled": true,
85
+ "config": {
86
+ "apiKey": "YOUR_LANONASIS_API_KEY",
87
+ "projectId": "YOUR_PROJECT_ID",
88
+ "captureMode": "hybrid",
89
+ "localFallback": true,
90
+ "autoRecall": true,
91
+ "agentId": "main"
92
+ }
93
+ }
94
+ }
95
+ }
96
+ MANUAL_CONFIG
97
+ echo ""
98
+ else
99
+ # Backup current config
100
+ if [ -f "$CONFIG_FILE" ]; then
101
+ cp "$CONFIG_FILE" "${CONFIG_FILE}.bak.$(date +%s)"
102
+ echo " Backed up: ${CONFIG_FILE}.bak.*"
103
+ fi
104
+
105
+ # Read existing or create empty
106
+ EXISTING=$(cat "$CONFIG_FILE" 2>/dev/null || echo '{}')
107
+
108
+ # Check if plugin already configured
109
+ if echo "$EXISTING" | jq -e '.plugins.entries["recall-forge"]' &>/dev/null; then
110
+ echo " Plugin already configured in openclaw.json — skipping merge."
111
+ else
112
+ # Prompt for credentials
113
+ echo ""
114
+ read -rp " LanOnasis API Key (lano_...): " API_KEY
115
+ read -rp " LanOnasis Project ID: " PROJECT_ID
116
+
117
+ if [ -z "$API_KEY" ] || [ -z "$PROJECT_ID" ]; then
118
+ echo " WARNING: Empty credentials — plugin will not connect to MaaS."
119
+ echo " Edit $CONFIG_FILE manually to add credentials."
120
+ API_KEY="${API_KEY:-YOUR_API_KEY}"
121
+ PROJECT_ID="${PROJECT_ID:-YOUR_PROJECT_ID}"
122
+ fi
123
+
124
+ # Merge plugin config
125
+ UPDATED=$(echo "$EXISTING" | jq --arg key "$API_KEY" --arg pid "$PROJECT_ID" '
126
+ .plugins.allow = ((.plugins.allow // []) + ["recall-forge"] | unique) |
127
+ .plugins.slots.memory = "recall-forge" |
128
+ .plugins.entries["recall-forge"] = {
129
+ "enabled": true,
130
+ "config": {
131
+ "apiKey": $key,
132
+ "projectId": $pid,
133
+ "captureMode": "hybrid",
134
+ "localFallback": true,
135
+ "autoRecall": true,
136
+ "agentId": "main"
137
+ }
138
+ }
139
+ ')
140
+
141
+ echo "$UPDATED" | jq . > "$CONFIG_FILE"
142
+ echo " Config merged into $CONFIG_FILE"
143
+ fi
144
+ fi
145
+
146
+ # --- Step 4: Copy AGENTS.md and HEARTBEAT.md snippets ---
147
+ echo "4. Preparing workspace integration snippets..."
148
+ WORKSPACE_DIR="$OPENCLAW_DIR/workspace"
149
+ if [ -d "$WORKSPACE_DIR" ]; then
150
+ echo " AGENTS.md snippet: $SCRIPT_DIR/agents-memory.md"
151
+ echo " HEARTBEAT.md snippet: $SCRIPT_DIR/heartbeat-memory.md"
152
+ echo ""
153
+ echo " To activate, append these to your workspace files:"
154
+ echo " cat $SCRIPT_DIR/agents-memory.md >> $WORKSPACE_DIR/AGENTS.md"
155
+ echo " cat $SCRIPT_DIR/heartbeat-memory.md >> $WORKSPACE_DIR/HEARTBEAT.md"
156
+ else
157
+ echo " No workspace found at $WORKSPACE_DIR"
158
+ echo " Run 'openclaw onboard' to create a workspace first."
159
+ fi
160
+
161
+ # --- Step 5: Verify ---
162
+ echo ""
163
+ echo "5. Verifying..."
164
+ if openclaw recall status 2>/dev/null; then
165
+ echo ""
166
+ echo "=== Plugin activated successfully ==="
167
+ else
168
+ echo " Verification skipped — run 'openclaw recall status' manually after setup."
169
+ fi
170
+
171
+ echo ""
172
+ echo "=== Installation complete ==="
173
+ echo ""
174
+ echo "Next steps:"
175
+ echo " 1. Verify: openclaw recall status"
176
+ echo " 2. Test: openclaw recall list"
177
+ echo " 3. Append AGENTS.md snippet to your workspace"
178
+ echo " 4. Append HEARTBEAT.md snippet for health monitoring"
179
+ echo ""